Book : 深入理解计算机系统
、
缓存命中和缓存不命中
高速缓存存储器L1, L2 和 L3
高速缓存组(总共S组, S=2^s),高速缓存行(每组E行),数据块(每行里有一个数据块,一数据块里有B个字节, B=2^b)
高速缓存块的大小C是指所有数据块之和,不包括有效位和标记位, C = S×E×B。
高速缓存确定一个请求是否命中,然后抽取被请求的字的过程: 1)组选择, 2)行匹配, 3)字抽取
为什么高速缓存用中间位做组索引呢?
如果用高位做索引,连续的存储器块会映射到相同的高速缓存块中,具有良好空间局部性的程序顺序扫描一个数组的元素时,高速缓存总保存着一个块大小的数组原内容,高速缓存使用的效率很低。用中间为作为组索引,相邻的块总是映射到不同的高速缓存行,提高高速缓存的效率。
直接映射高速缓存,组相联高速缓存,全相联高速缓存, 组选择,行匹配,字抽取,不命中时的行替换策略