如何改进Cache性能
平均访存时间 = 命中时间+失效率x 失效开销
(1)降低失效率
(2)减少失效开销
(3)减少Cache命中时间
1、降低失效率的方法
(1)调节Cache大小
(2)提高相联读
(3)Victim Cache。在Cache和它下一级存储器的数据通路之间增设一个全相联的小Cache
(4)编译器优化
产生失效的原因:
(1)强制性失效。当第一次访问一个块时,该块不在Cache中。需要下一级存储器中调入Cache,这种失效称为强制性失效,也称为冷启动失效或者首次失效。
(2)容量失效。采用全相联映像,但是Cache容量有限,也会使得程序执行时所需的块不能全部调入Cache中,则当某块被替换后,若又重新被访问,就会发生失效。这种失效称为容量失效
(3)冲突失效。在组相联或者直接映像Cache中,多个块映射到同一组(块)中,则会出现该组中某个块被别的块替换,然后又被重新访问的情况,这种情况发生了冲突失效。
2、减少Cache失效开销
(1)写缓冲及写合并:写直达Cache中,会将所有写请求发送到下一级存储层次中,使用一个写缓冲来降低失效开销
(2)让读失效优先于写
(3)请求字处理
(4)多级Cache
(5)非阻塞Cache
3、减少Cache命中时间
(1)容量小,结构简单的Cache
(2)虚拟Cache
(3)访问流水化
(4)多体Cache