三种映射方式
-
直接映射(direct mapped)
-
组相联
-
全相联
由于每个cache块可以保存不同存储地址的内容,如何知道对应请求的数据字是否在cache中呢?标签就是用来解决这一问题。
标签只需要保存地址的高位部分,因为低位用来作为cache的索引了
当机器启动时,cache中是没有有效数据的,我们用有效位来判断cache数据块中是否保存有效信息。如果该位未被置位,对应的数据块不能使用。
因此cache数据块的索引和标签唯一确定了应放于该块的数据字的存储地址
-
直接映射采用以下来找到对应的数据块
(块地址)mod(cache中的数据块数量),因此如果块数是2的幂次,就直接取地址的低N位即可。可以看到,每一个地址在cache中对应的位置都是唯一的 -
全相连就是数据块可以存在cache的任意位置,在全相联cache中查找给定的数据块,所有的表项都要经过比对
-
组相联介于两者之间,
每个数据块有n个可以存放的位置叫n路组相联cache,一个n路组相联cache中有若干组(set),每一组有n个数据块,主存中的每个数据块通过索引位映射到cache中对应的组,数据块可以存放在该组的任意位置 提高相联度的好处通常是可以降低失效率