当前位置:文档之家› 计算机体系结构第五章-2

计算机体系结构第五章-2

各种块大小情况下Cache的不命中率
块大小 (字节)
16 32 64 128 256
1K 15.05% 13.34% 13.76% 16.64% 22.01%
Cache容量(字节)
4K
16K
64K
8.57%
3.94%
2.04%
7.24%
2.87%
1.35%
7.00%
2.64%
1.06%
7.78%
2.77%
当Cache的容量一定时,块的大小对命中率的影响非常大。 下图表示随着Cache块由小到大的变化,命中率H上升和下降 的规律。
命H 中 率 1
增强了
空间局部性,
减少了强制
性不命中
初始
最佳
减少了 Cache中块 的数目,可 能会增加冲 突不命中
块大小
措施:适当增加块的大小,但不能增大到使不命中率 上升的程度。
组0 组1 组K-1
Cache 块0
块V-1 块V
块2V-1
块(K-1)V
块KV-1
主存储器
当n=1时,为直接映像。
当n=M(Cache的块数) 时,为全相联映像。
块0 块V-1
块V 块2V-1 块(K-1)V 块KV-1
块(t-1)×KV 块(t-1)×KV+V-1 块(t-1)×KV+V 块(t-1)×KV+2V-1
• 三种失效所占的比例: 表5.5
5.3 降低Cache不命中率
减少三种失效的方法
强制性失效:增加块大小,预取 (本身很少)
容量失效:增加容量 (抖动现象)
冲突失效:提高相联度 (理想情况:全相联)
许多降低失效率的方法会增加命中时间或失效开销
5.3 降低Cache不命中率
二. 增加Cache块大小
5.3 降低Cache不命中率
解 在各种相联度的情况下,平均访存时间分别为: 平均访存时间8路 = 命中时间8路 + 失效率8路×失效开销8路 = 1.14 +失效率8路 ×50 平均访存时间4路 = 1.12 +失效率4路 ×50 平均访存时间2路 = 1.10 +失效率2路 ×50 平均访存时间1路 = 1.00 +失效率1路 ×50 把一定容量Cache相应的失效率代入上式,即可得平均访存时间。 例如,1 KB的直接映象Cache的平均访存时间为: 平均访存时间1路 = 1.00+0.133×50=7.65 128 KB的8路组相联Cache的平均访存时间为: 平均访存时间8路=1.14+0.006×50=1.44
在各种容量和相联度情况下Cache的平均访存时间
Cache 容量 (KB)
1 2 4 8 16 32 64 128相联度Fra bibliotek路)1
2
4
8
7.65 6.60 6.22 5.44 5.90 4.90 4.62 4.09 4.60 3.95 3.57 3.19 3.30 3.00 2.87 2.59 2.45 2.20 2.12 2.04 2.00 1.80 1.77 1.79 1.70 1.60 1.57 1.59 1.50 1.45 1.42 1.44
1.509
5.357
2.551
1.571
7.847
3.369
1.828
256K 1.458 1.308 1.245 1.274 1.353
5.3 降低Cache不命中率
三. 提高相联度
1. 相联度(n值) 在组相联映像中,如果每组中有n个块,则称该映像规则
为n路组相联。 n的不同取值构成了一系列不同相联度的组 相联。
各种块大小情况下Cache的平均访存时间
块大小 不命中开销 (字节) (时钟周期) 1K
16
42
7.321
32
44
6.870
64
48
7.605
128
56
10.318
256
72
16.847
Cache容量(字节)
4K
16K
64K
4.599
2.655
1.857
4.186
2.263
1.594
4.360
2.267
如果程序执行时所需的块不能全部调入Cache中,则当 某些块被替换后,若又重新被访问,就会发生失效。这种失 效称为容量失效。
5.3 降低Cache不命中率
3. 冲突不命中(冲突失效,Conflict miss) 在组相联或直接映象Cache中,若太多的块映象到同一
组(块)中,则会出现该组中某个块被别的块替换(即使别的 组或块有空闲位置),然后又被重新访问的情况。这就是发 生了冲突失效。(碰撞失效,干扰失效)
块(tK-1)V 块tKV-1
组0
组1 区0
组K-1
组(t-1)K
组(t-1)K+1
区t-1
组tK-1
5.3 降低Cache不命中率
2. 相联度越高(即n值越大), Cache空间的利用率就越高, 块冲突概率就越低,因而Cache的不命中率就越低。 同时,提高相联度则可能以增加命中时间为代价。
5.3 降低Cache不命中率
5.3 降低Cache不命中率
一. 三种类型的不命中(3C)
1. 强制性不命中(强制性失效,Compulsory miss) 当第一次访问一个块时,该块不在Cache中,需从下一
级存储器中调入Cache,这就是强制性失效。 (也称为冷 启动失效或首次访问失效。) 2. 容量不命中(容量失效,Capacity miss)
例: 假定提高相联度会按下列比例增大处理器时钟周期:
时钟周期2路 =1.10×时钟周期1路 时钟周期4路 =1.12×时钟周期1路 时钟周期8路 =1.14×时钟周期1路 假定命中时间为一个时钟周期,直接映象情况下失效开销 为50个时钟周期,而且假设不必将失效开销取整。使用表5.5 中的失效率,试问当Cache容量一定时,各种相联度下的平均 访存时间为多少?(是否相联度越大平均访存时间越短)
1.02%
9.51%
3.29%
1.15%
256K 1.09% 0.70% 0.51% 0.49% 0.49%
➢ 负面影响,增加块大小会减少块的数目,可能会增加 冲突失效。
➢另外,增加块大小同时也会增加不命中开销。
平均访存时间 = 命中时间+不命中率×不命中开销 当失效开销超过了不命中率下降带来的好处,平均访存时间 就会增加。
① 采用相联度超过8的 方法实际意义不大。
② 2:1 Cache经验规则:
容量为N 的直接映象
Cache失效率
≈容量为N/2的两路
组相联Cache失效率。
③ 提高相联度是以增加 命中时间为代价 :
TTL或ECL板级Cache, 两路组相联:增加10%
相关主题