- 简单模型中,存储器是一个线性的字节数组。真实模型中,是一个具有不同容量,成本,访问时间的存储层次结构(存储器山)
- 程序的局部性很重要,对程序性能有很重要的影响。
- 计算机系统一个基本而持久的思想,如果你理解了系统是如何将数据在存储器层级结构中上下移动,你就可以编写程序,让数据存储在层次结构中较高的地方,从而CPU可以更快的访问到他们。
- 编写程序实现功能是最简单的,如何让编写的程序拥有最高的性能,例如利用程序的局部性原理,才是更重要的
- 程序的局部性分为时间局部性和空间局部性。
- 时间局部性:程序更多的引用最近访问过的数据项集合。
- 空间局部性:程序更多的引用邻近的数据项集合。
- 原则有三:重复引用同一个变量;步长尽可能小;循环体越小,迭代次数越多。
- 能量墙:增加CPU的时钟频率,芯片的功耗太大,于是转向多核。
- 现代计算机系统的各个层次,从硬件到操作系统,再到应用程序,他们的设计都利用了局部性:缓存
- 存储器层次结构:中心思想:对于每个K,位于K层的更小更快的存储设备作为K+1层设备的缓存。
- 传送单元:block。
- 缓存命中和缓存不命中:LRU替换策略。(操作系统)