即,需要对每一行cache行的计数器执行检查/更新操作
就算是没有被访问的cache,或者没有命中的访存操作也可能发生计数值的变化
🎈SIK操作约定(命中时执行)
被命中的行的计数器清零 W i = 0 W_i=0 Wi=0(Set)
比
W
j
<
W
i
W_j
其余( W j ⩾ W i W_j\geqslant W_i Wj⩾Wi的)的计数器值保持不变Keep
cache未被命中(另一种描述):
特点:
当(映射到同一个cache分组的)集中访问的(主存)存储区域(或者说区域容量)超过了cache组的大小
命中率可能会变得很低
这种现象称为抖动
假定采用4路组相联,用5个不同的主存块{ B 1 , B 2 , B 3 , B 4 , B 5 B_1,B_2,B_3,B_4,B_5 B1,B2,B3,B4,B5}映射到cache的同一个组
上述的5个块在主存中可能使任意的顺序,且未必是相邻的
将5个块简写为{1,2,3,4,5}
假设主存访问序列是1,2,3,4,1,2,5,1,2,…
cache分组的4个cache行\访问的主存块序列 | 1 | 2 | 3 | 4 | 1 | 2 | 5 | 1 | 2 | |||||||||
0 | 0 | 1 | 1 | 1 | 2 | 1 | 3 | 1 | 0 | 1 | 1 | 1 | 2 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 2 | 1 | 2 | 2 | 2 | 3 | 2 | 0 | 2 | 1 | 2 | 2 | 2 | 0 | 2 | ||
2 | 0 | 3 | 1 | 3 | 2 | 3 | 3 | 3 | 0 | 5 | 1 | 5 | 2 | 5 | ||||
3 | 0 | 4 | 1 | 4 | 2 | 4 | 3 | 4 | 3 | 4 | 3 | 4 |
每一大列