降低CACHE失效率的方法.pptVIP

  • 0
  • 0
  • 约6.6千字
  • 约 52页
  • 2022-10-30 发布于重庆
  • 举报
4. 例题 例5.7 Alpha AXP 21064采用指令预取技术,其实际 失效率是多少?若不采用指令预取技术,Alpha APX 21064的指令Cache必须为多大才能保持平均访 存时间不变? 解: 假设从预取缓冲器中找到所需指令需多花1个 时钟周期。 平均访存时间预取 =命中时间+失效率×预取命中率×1 +失效率×(1-预取命中率)×失效开销 5.3 降低Cache 失效率的方法 第三十页,共五十二页。 假设: 预取命中率=25% 命中时间=1个时钟周期 失效开销=50个时钟周期 由表5.4可知,8KB指令Cache的失效率=1.10% 故平均访存时间预取 =1+(1.10 %×25 %×1)+ (1.10 %×(1-25 %)×50) =1+0.00275+0.4125 =1.415 由公式: 平均访问时间=命中时间+失效率×失效开销 5.3 降低Cache 失效率的方法 第三十一页,共五十二页。 可得相应的失效率为: 失效率=(平均访问时间-命中时间)/失效开销 =(1.451-1)/50=0.83% 8KB Cache 带预取的 8kB Cache 失效率 1.10% 0.83% 16KB Cache 0.64% 5.3 降低Cache 失效率的方法 第三十二页,共五十二页。 5.3.6 由编译器控制的预取 1. 预取的类型 ◆ 寄存器预取:把数据取到寄存器中 ◆ Cache预取: 只将数据取到Cache中 ◆ 故障性预取:预取时,若出现虚地址故障 或违反访问权限,就会发生异常。 ◆ 非故障性预取:预取时,若出现虚地址故 障或违反访问权限,并不会导致异常,只 是转变为“不预取”。 由编译器加入预取指令,在数据被用到之前 发出预取请求。 5.3 降低Cache 失效率的方法 第三十三页,共五十二页。 4. 例题 2. 在预取数据的同时,处理器应能继续执行 只有这样,预取才有意义。 非阻塞Cache (非锁定Cache) 3. 循环是预取优化的主要对象 失效开销小时:循环体展开1~2次 失效开销大时:循环体展开许多次 5.3 降低Cache 失效率的方法 第三十四页,共五十二页。 例 5.8 对于下面的程序,判断哪些访问可能会导致 数据Cache失效。然后,加入预取指令以减少失 效。最后,计算所执行的预取指令的条数以及通 过预取避免的失效次数。假定: (1) 我们用的是一个容量为8KB、块大小为 16B的直接映象Cache,它采用写回法并 且按写分配。 (2) a、b分别为3×100(3行100列)和101×3 的双精度浮点数组,每个元素都是8个 字节。当程序开始执行时,这些数据都 不在Cache内。 5.3 降低Cache 失效率的方法 第三十五页,共五十二页。 for (i=0 ; i 3 ; i=i+1 ) for (j=0 ; j 100 ; j=j+1 ) a[i][j]=b[j][0]×b[j+1][0]; 解: (1) 计算过程 (2) 失效情况 总的失效次数=251次 (3) 改进后的程序 5.3 降低Cache 失效率的方法 第三十六页,共五十二页。 第三十七页,共五十二页。 */51 */51 (1) 强制性失效(Compulsory miss) 当第一次访问一个块时,该块不在 Cache中,需从下一级存储器中调入Cache, 这就是强制性失效。 (冷启动失效,首次访问失效。) (2) 容量失效(Capacity miss ) 如果程序执行时所需的块不能全部调 入Cache中,则当某些块被替换后,若又 5.3 降低Cache失效率的方法 1. 三种失效(3C) 第五章 存储层次 第一页,共五十二页。 重新被访问,就会发生失效。这种失效称 为容量失效。 (3) 冲突失效(Conflict miss) 在组相联或直接映象Cache中,若太多 的块映象到同一组(块)中,则会出现该组 中某个块被别的块替换(即使别的组或块有 空闲位置),然后又被重新访问的情况。这 就是发生了

文档评论(0)

1亿VIP精品文档

相关文档