cache完全由硬件管理。
cache替换算法:
假设4个组(set),地址总共4位。
四个地址位,被分为标记位(tag),一位;
索引位(index),两位,类似虚拟内存管理中的页号(页帧号);
偏移位(offset),一位;
索引位和偏移位组合,称为块号(block);
如果一个组,只有一个缓存行,那么如果块号相同, 则该内容会被清除,换新的内存的数据过来,此时标记位一定是不同的。因为地址是由tag+block组成的。
但实际计算机中,往往一个组不只有一个缓存行。这取决于cpu的cache资源大小。
这样的缓存被称为多路相连缓存。
intel 处理器,是16路相连缓存。
block的大小不能太大,也不能太小:
太大会减慢换入换出block的开销,也会使整个cache的block个数变少;
太小达不到提升效率的作用。
使用中间位做索引位的原因:
有关写:
两种方式,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的性能指标:
1. 不命中率:
2. 命中率
3. 命中时间:命中了,查找需要的时间
4. 不命中处罚:需要到L2查的处罚(10个周期)需要L3的处罚(50周期)需要内存的处罚(200周期)
影响cache性能指标的因素:
1. cache大小
2. block size
3. n-way
4. 写策略