(合计2068字,用时60min——)
(相关资料图)
4.3高速缓冲存储器
4.3.1概述
a.问题的提出
Cache简介——
问题:
在多体并行存储系统中,由于I/O设备向主存请求的级别高于CPU访存,这就出现了CPU等待I/O设备访存的现象,致使CPU空等一段时间,甚至可能等等几个主存周期,从而降低了CPU的工作效率;
主存速度的提高始终跟不上CPU的发展;
用途:
为了避免CPU与I/O设备争抢访存,可在CPU与主存之间加一级缓存,这样,主存可将CPU要取的信息提前送至缓存,一旦主存在与I/O设备交换时,CPU可直接从缓存中读取所需信息,不必空等而影响效率;
由高速缓存Cache来解决主存与CPU速度的不匹配问题;
作用:Cache的出现使CPU可以不直接访问主存,而与高速Cache交换信息。
b.Cache的工作原理
Cache的工作原理——
组成:
主存由2^n个可编址的字主存,每个字有唯一的n位地址;
为了与Cache映射,将主存与缓存都分成若干块,每块内又包含若干个字,并使它们的块大小相同(即块内的字数相同);
主存的地址分成两段:
高m位表示主存的块地址,
低b位表示块内地址,
2^m=M表示主存的块数;
缓存的地址分成两段:
高c位表示缓存的块号,
低b位表示块内地址,
2^c=C表示缓存块数;
块长:2^b=B反映了块的大小,称B为块长。
原理:
CPU读取主存某字:
CPU访问Cache命中:所需要的字已在缓存中,即可直接访问Cache(CPU与Cache之间通常一次传送一个字);
CPU访问Cache不命中:所需的字不再Cache内,此时需将该字所在的主存整个字块一次调入Cache中(Cache与主存之间是字块传送);
命中率:CPU要访问的信息已在Cache内的比率;
说明:
如果主存块已调入缓存块,则称该主存块与缓存块建立了对应关系;
由于缓存的块数C远小于主存的块数M,因此,一个缓存块不能唯一地、永久地只对应一个主存块,故每个缓存块需设一个标记,用来表示当前存放的是哪一个主存块,该标记的内容相当于主存块的编号;
CPU读信息时,要将主存地址的高m位(或m位中的一部分)与缓存块的标记进行比较,以判断所读的信息是否已在缓存中。
计量:
因素:Cache的容量与块长是影响Cache效率的重要因素,通常用“命中率”来衡量Cache的效率;
公式:
命中率:h=N/(Nc+Nm)——在一个程序执行期间,设Nc为访问Cache的总命中次数,Nm为访问主存的总次数,命中率为h;
平均访问时间:ta=htc+(1-h)tm——tc为命中时的Cache访问时间,tm为未命中时的主存访问时间,1-h表示未命中率,Cache-主存系统的平均访问时间为ta;
访问效率:e=(tc/ta)x100%={tc/[htc+(1-h)tm]}x100%——以较小的硬件代价使Cache-主存系统的平均访问时间ta越接近于tc越好,e表示效率;
结论:为提高访问效率,命中率h越接近1越好。
总结:
Cache容量与CPU命中率——
一般而言,Cache容量越大,其CPU的命中率就越高;
容量没必要太大,太大会增加成本,而且当Cache容量达到一定值时,命中率已不因容量的增大而有明显的提高;
Cache容量是总成本价与命中率的折中值;
块长与CPU命中率:取决于各程序的局部特性——
当块由小到大增长时,起初会因局部性原理使命中率有所提高;
局部性原理:
在已被访问字的附近,近期也可能被访问,因此,增大块长,可将更多有用字存入缓存,提高其命中率;
倘若继续增大块长,命中率很可能下降,这是因为所装入缓存的有用数据反而少于被替换掉的有用数据。
c.Cache的基本结构
模块——
Cache存储体:Cache存储体以块为单位与主存交换信息,为加速Cache与主存之间的调动,主存大多采用多体结构,且Cache访存的优先级最高;
地址映射变换机构:地址映射变换机构是将CPU送来的主存地址转换为Cache地址;
替换机构:当Cache内容已满,无法接受来自主存块的信息时,就由Cache内的替换机构按一定的替换算法来确定应从Cache移出哪个块返回主存,而把新的主存块调入Cache;
Cache的读写操作:
读操作:当CPU发出主存地址后,首先判断该存储是否在Cache中,若命中,直接访问Cache,将该字送至CPU,若未命中,一方面要访问主存,将该字传送给CPU,与此同时,要将该字所在的主存块装入Cache,如果此时Cache 已装满,就要执行替换算法,腾出空位才能将新的主存块调入;
写操作:对Cache块写入的信息,必须与被映射的主存块内的信息完全一致,一致性办法——
写直达法(Write-through):又称为存直达法(Store-through):写操作时既写入Cache又写入主存,数据一致,增加访存次数;
写回法(Write-back):又称为拷回法(Copy-back):写操作时只把数据写入Cache而不写入主存,但当Cache数据被替换出去时才写回主存,数据不一致。
d.Cache的改进
从一个缓存发展:
单一缓存和两级缓存;
统一缓存和分立缓存。