- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4 高速缓冲存储器(CACHE)
3.4.1 Cache基本原理
3.4.2 地址映射
3.4.3 替换策略
3.4.4 写操作策略
计算机系统中,CPU的运行速度与主存的访问速度极不匹配
800MHz Pentium III CPU一条指令的执行时间约为1.25ns,而133MHz SDRAM的存取时间为7.5ns
在83%的时间内CPU都处于等待状态,运行效率极低
为提高CPU利用率,现代计算机体系结构中广泛采用高速缓冲存储器(Cache)技术
3.4.1 Cache基本原理
程序访问的局部性
程序员通常采用模块化的程序设计方法,某一模块的程序往往集中在存储器逻辑地址空间中很小的一块范围内,且程序地址分布是连续的
CPU在一段较短的时间内,是对连续地址的一段很小的主存空间频繁地进行访问,而对此范围以外地址的访问甚少
高速缓冲存储器(Cache)技术
利用程序访问的局部性原理,把程序中正在使用的部分(活跃块)存放在一个小容量的高速Cache中,使CPU的访存操作大多针对Cache进行
解决高速CPU和低速主存之间速度不匹配的问题,使程序的执行速度大大提高
1. Cache的功能
Cache是介于CPU和主存之间的小容量存储器
存取速度比主存快,接近CPU
能高速地向CPU提供指令和数据,提高程序的执行速度
Cache是主存的缓冲存储器
由高速的SRAM组成
所有控制逻辑全部由硬件实现,对程序员而言是透明的
有些CPU内置Cache,出现了两级以上的多级Cache系统
Cache系统与CPU和主存的关系
FLASH演示
2. Cache的基本原理
CPU与Cache之间的数据交换以字为单位
Cache与主存之间的数据交换以块为单位
一个块由若干个定长字组成
当CPU读取主存中的一个字时,该字的主存地址被发给Cache和主存
Cache控制逻辑依据地址判断该字当前是否存在于Cache中
若在,该字立即被从Cache传送给CPU;
若不在,则用主存读周期把该字从主存读出送到CPU
同时把含有这个字的整个数据块从主存读出送到Cache中
并采用一定的替换策略将Cache中的某一块替换掉(替换算法由Cache管理逻辑电路来实现)
Cache原理图
FLASH演示
按内容寻址的相联存储器(表)
用于存放与Cache中数据相对应的主存地址
可以快速检索、判断CPU读取的某个字当前是否存在于Cache中
3. Cache的命中率
基于程序访问的局部性原理,
增加Cache使要访问的数据绝大多数都可在Cache中找到
这样才能在性能上使主存的平均读出时间尽可能接近Cache的读出时间
Cache的工作效率通常用“命中率”来表示
命中率:CPU要访问的信息在Cache中的概率
Cache的命中率越高,CPU访问主存的速度就越接近访问Cache的速度
通常Cache的容量越大,存储的块也越多,CPU的命中率就越高
但是,当Cache的容量达到一定值时,命中率并不会随着容量的增大而增加,而成本却相应增加
所以,Cache的容量一般是命中率与成本价格的折中
在一个程序执行期间,
设Nc表示Cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率,则有
若tc表示命中时的Cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则Cache-主存系统的平均访问时间ta为:
设e表示访问效率,则有
为提高访问效率e,命中率h越接近1越好
【例3-1】CPU执行一段程序时,Cache完成存取的次数为1900次,主存完成存取的次数为100次,已知Cache存取周期为50ns,主存存取周期为250ns,求Cache-主存系统的效率和平均访问时间。
【解】Nc=1900,Nm=100,tc=50ns,tm=250ns
∴ 命中率 h=Nc/(Nc+Nm)=1900/(1900+100)=0.95
平均访问时间 ta = htc+(1-h)tm
= 0.95×50+(1-0.95)×250 = 60ns
效率 e=tc/ta=50/60=83.3%
3.4.2 地址映射
Cache的容量很小,保存的只是主存内容的一个子集,且Cache与主存的数据交换是以块为单位的
为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射
CPU执行程序时,会将程序中的主存地址变换成Cache地址,这个变换过程叫做地址变换
假设某台计算机主存容量为1MB,被分为2048块,每块512B
Cache容量为8KB,被分为16块,每块也是512B
1. 直接映射
直接映射的Cache组织
主存中的一个块只能映射到Cache的某一特定块中去
主存的第0块、第16块、……、第2032块,只能映射到Cache的第0
文档评论(0)