提高CPU高速缓存cache命中率的主要设计方案
***替换算法 ***
替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
(1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
(2)先进先出算法。就是将最先进入Cache的信息块替换出去。
(3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
(4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
Cache的性能分析
Cache的性能是计算机系统性能的重要方面。命中率是Cache的一个重要指标,但不是最主要的指标。Cache 设计的目标是在成本允许的条件下达到较高的命中率,使存储系统具有最短的平均访问时间。设H为Cache的命中率,te为Cache的存取时间,为主存的访问时间,则Cache存储器的等效加权平均访时间t。为:
tg=Hetc+(1-Hc)tm=t.+(1-H.)(tm-tc)
这里假设Cache访问和主存访问是同时启动的,其中,t为Cache命中时的访问时间,(-tc)为失效访问时间。如果在Cache不命中时才启动主存,则
t。=t。+(1-Hc)tm
在指令流水线中,Cache访问作为流水线中的一个操作阶段,Cache 失效将影响指令的流水。因此,降低Cache的失效率是提高Cache性能的一项重要措施。当Cache容量比较小时,
容量因素在Cache失效中占有比较大的比例。降低Cache失效率的方法主要有选择恰当的块容量、提高Cache的容量和提高Cache的相联度等。
Cache的命中率与Cache容量的关系。Cache容量越大,则命中率越高,随着Cache容量的增加,其失效率接近0%(命中率逐渐接近100%)。但是,增加 Cache 容量意味着增加Cache的成本和增加Cache的命中时间。
命中率H
容量S
多级Cache
在多级Cache的计算机中,Cache分为一级(L1 Cache)、二级(L2Cache)、三级(L3 Cache)等,CPU访存时首先查找LI Cache,如果不命中,则访问L2 Cache,直到所有级别的Cache 都不命中,才访问存。通常要求LICache的速度足够快,以赶上CPU的主频。如果Cache 为两级,则LI Cache的容量一般都比较小,为几千字节到几十千字节;L2 Cache则具有较高的容量,一般为几百字节到几兆字节,以使高速缓存具有足够高的命中率。