博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cache
阅读量:6531 次
发布时间:2019-06-24

本文共 1035 字,大约阅读时间需要 3 分钟。


title: Cache

tags: ARM
date: 2018-11-04 12:52:02
---

Cache与写缓冲

引入

Cache实际上也是一块存储空间,最大的优点就是速度快.CPU和SDRAM通信速度慢,取指令,读写数据都需要等待,所以中间出现了一个Cache用来解决这个问题.计算机一般有多级Cache, 查看下自己的电脑如下:

mark

关于速度的对比,寄存器>1级缓存>n级缓存>sdram

参考文档

概述

程序具有局部性的特性,cache就是利用这种局部多次访问的特性,将指令或者数据暂存一份到Cache中,下次访问速度上就会提高很多.

  • 时间局部性:在同一段时间里,有极大的概率访问同一地址的指令或数据
  • 空间局部性: 有极大概率访问到相邻空间的指令/数据

当使用Cache的时候,CPU假设需要读取A的内容,实际上回缓存大于A地址的内容,会缓存A到Cache Line大小的内容到Cache中.Cache Line可以简单的理解为CPU Cache中的最小缓存单位。2440中这个单位是32字节.

填充与丢弃

  1. 当cache为空时,总是能读取进来并存储
  2. 当cache满的时候,会有一定的算法丢弃某些存储,填充新的,具体的算法不做研究

工作种类

2440中cache与写缓冲器(write buffer) 一同工作,凡是从Cache中向内存中写数据,.有以下几种组合:

  1. 不使用cache与writebuff
  2. 只使用Write bufer,这个时候cpu直接写数据到writebuf,然后write buf 同步到实际内存
  3. 使用cache和buffer,使用写通的方式,其实就是写writer buf 后马上写到实际内存
  4. 写回的方式,写到 write buf后并不马上更新到实际内存,而是等待一定的时机后写入内存

mark

启用

指令cache是可以在不开mmu的情况下打开,修改协处理器即可

enable_icache:    /* 设置协处理器使能icache */    mrc p15, 0, r0, c1, c0, 0    orr r0, r0, #(1<<12)  /* r0 = r0 or (1<<12) */    mcr p15, 0, r0, c1, c0, 0   //吧修改好的r0写给cp15的c1寄存器    mov pc, lr

转载于:https://www.cnblogs.com/zongzi10010/p/10023644.html

你可能感兴趣的文章
TCL函数“参数自动补全” 与 “help 信息显示”
查看>>
POJ1050To the Max
查看>>
汇编基础--标识符、标号、伪指令和指令
查看>>
Linux软中断、tasklet和工作队列
查看>>
如何解决ORA-28002 the password will expire within 7 days问题(密码快过期)
查看>>
Asp.Net Core 轻松学-利用日志监视进行服务遥测
查看>>
LightSwitch社区资源搜集
查看>>
Android通讯录查询篇--ContactsContract.Data 二(续)
查看>>
IT人的自我导向型学习:开篇杂谈
查看>>
[原创]BizTalk动手实验系列目录
查看>>
HDU 4611Balls Rearrangement(思维)
查看>>
[LeetCode] Majority Element II
查看>>
minGW, cygwin, GnuWin32【C++的跨平台交叉编译问题】
查看>>
我的Dll(动态链接库)学习笔记(转)
查看>>
应用程序域
查看>>
有向图的拓扑排序算法JAVA实现
查看>>
HTML页面跳转的5种方法
查看>>
李洪强-C语言5-函数
查看>>
开源监控利器grafana
查看>>
Android获取当前时间与星期几
查看>>