《深入理解计算机系统》Cache memories

cache完全由硬件管理。

cache替换算法:

《深入理解计算机系统》Cache memories

假设4个组(set),地址总共4位。

四个地址位,被分为标记位(tag),一位;

索引位(index),两位,类似虚拟内存管理中的页号(页帧号);

偏移位(offset),一位;

索引位和偏移位组合,称为块号(block);

如果一个组,只有一个缓存行,那么如果块号相同, 则该内容会被清除,换新的内存的数据过来,此时标记位一定是不同的。因为地址是由tag+block组成的。

但实际计算机中,往往一个组不只有一个缓存行。这取决于cpu的cache资源大小。

这样的缓存被称为多路相连缓存。

intel 处理器,是16路相连缓存。

block的大小不能太大,也不能太小:

太大会减慢换入换出block的开销,也会使整个cache的block个数变少;

太小达不到提升效率的作用。

使用中间位做索引位的原因:

《深入理解计算机系统》Cache memories

《深入理解计算机系统》Cache memories

有关写:

两种方式,write-through(立即写回内存);write-back(直到需要被换出时,才写回)

如果发生写miss,也有两种操作方式:write-allocate(载入到cache,更新cache的数据);no-write-allocate(直接写入内存)

典型的组合方式:

write-through+no-write-allocate

或write-back+write-allocate

i7cpu缓存层次结构:

all cache block size is 64bytes

《深入理解计算机系统》Cache memories

cache的性能指标:

1. 不命中率:

2. 命中率

3. 命中时间:命中了,查找需要的时间

4. 不命中处罚:需要到L2查的处罚(10个周期)需要L3的处罚(50周期)需要内存的处罚(200周期)

影响cache性能指标的因素:

1. cache大小

2. block size

3. n-way

4. 写策略