0%

容量缺失(Capacity Miss)与冲突缺失(Conflict Miss)的区别

Cache缺失分类

Cache的缺失主要分为强制缺失(Compulsory Miss)**、容量缺失(Capacity Miss)以及冲突缺失(Conflict Miss),其中,强制缺失又称为冷缺失(Cold Miss)**。

概念

  • 强制缺失:CPU第一次访问相应Cache块,Cache中肯定没有该Cache块,引起的缺失叫做强制缺失。这是不可避免的
  • 容量缺失:有限的Cache容量导致Cache放不下而替换出Cache块,被替换出去的Cache块再被访问,引起的失效叫做容量失效。
  • 冲突缺失:在直接相联或组相联的Cache中,不同的Cache块由于Index相同相互替换,引起的失效叫做冲突失效。

强制缺失

在Cache的三种缺失中,强制缺失非常好区分,只要是CPU第一次访问相应的Cache块引起的缺失,就称作强制缺失。

容量缺失

在直接映射或组相联Cache的情况下,若该Cache行被替换出去时,Cache已经满了,就是容量缺失。

举一个例子说明一下:
如果有一个64KB大小的数组需要重复访问,而Cache大小只有16KB,这时数组的大小远远大于Cache大小,没办法全部放入Cache。第一次访问数组发生的失效是强制缺失。而之后再访问数组,再发生的缺失则全都是容量缺失,这时Cache已经存满,容量不足以存储全部数据。

冲突缺失

在直接映射或组相联Cache的情况下,若该Cache行被替换出去时,还有其他空闲的Cache行,则是冲突缺失。

同样也举一个例子说明:
如果有两个8KB大小的数据需要来回访问,但是这两个数组都映射到相同的地址,Cache的大小为16KB,足够存储全部的数据,但是因为相同地址发生了冲突需要来回替换,发生的缺失则全都是冲突缺失(第一次访问失效依旧是强制缺失),这时Cache并没有存满

降低Cache缺失的方法

  • 强制缺失:无法避免。
  • 容量缺失:增加Cache大小。
  • 冲突缺失:增加Cache相联度、优化替换策略、增大Cache大小等等。