《CSAPP》 6.3 存储器层次结构
1、存储器层次结构
右边的文字是表示不同层次之间缓存的是什么信息。
1)中心思想
- 存储器层次结构的中心思想:用上层设备作为下层设备的缓存。(因为访问上层设备更快)
2)缓存的原理
下图是缓存的原理:第k层(上层)作为第k+1层(下层)的缓存,保存着下层数据的子集,因为上层比下层小。
2、缓存命中和不命中
- 缓存命中
当程序需要第k+1层的数据时,第k层已经有了,即缓存中有要访问的数据,这就是命中。 - 缓存不命中
同理,第k层中没有程序想要的数据就是不命中。然后就会到第k+1层取这个数据到第k层,即缓存更新。缓存更新就面临着较大的开销,首先,若第k层满了,需要使用页面置换算法(如LRU、FIFO等)腾出新的页面存放需要的数据,然后把第k+1层的数据读到第k层的页面。
解答:为什么有良好局部性的程序通常比局部性差的程序运行得更快?
- 对于时间局部性。具有良好的时间局部性的程序,就经常缓存命中,不用进行缓存的更新。如上图,第k层(缓存)数据中的数据多次频繁被引用。因为访问上层(缓存)效率是远大于访问下层,所以性能就很好。(具体的访问数据所需周期数见下面的图表)
- 对于空间局部性。从第k+1层读的数据是按块读的,就是除了需要的某个数据还有其他数据在块中,有良好的空间局部性的程序,使用一个数据之后可能访问其相邻的数据,从而就是缓存命中,效率就很高,避免了缓存的更新。
参考
《深入理解计算机系统》第6章.存储器层次结构