缓存cache
(一)CPU cache
- 作用:提高访问内存的效率
- CPU缓存有多级缓存,比如L1, L2, L3等:
- L1容量最小,速度最快,每个核都有L1缓存,L1又专门针对指令和数据分成L1d(数据缓存),L1i(指令缓存)。
- L2容量比L1大,速度比L1慢,每个核都有L2缓存。
- L3容量最大,速度最慢,多个核共享一个L3缓存。
- 缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的
(二)页面置换算法
1、最佳置换(Optimal, OPT)
- 置换以后不再被访问,或者在将来最迟才回被访问的页面,缺页中断率最低。
- 但是该算法需要依据以后各业的使用情况,而当一个进程还未运行完成是,很难估计哪一个页面是以后不再使用或在最长时间以后才会用到的页面。
- 所以该算法是不能实现的。但该算法仍然有意义,作为很亮其他算法优劣的一个标准。
2、 先进先出置换算法(First In First Out, FIFO)
- 置换最先调入内存的页面,即置换在内存中驻留时间最久的页面。
- 按照进入内存的先后次序排列成队列,从队尾进入,从队首删除
- 。但是该算法会淘汰经常访问的页面,不适应进程实际运行的规律,目前已经很少使用
3、最近最久未使用置换算法(Least Recently Used, LRU)
- 置换最近一段时间以来最长时间未访问过的页面。
- 根据程序局部性原理,刚被访问的页面,可能马上又要被访问;而较长时间内没有被访问的页面,可能最近不会被访问。
- LRU算法普偏地适用于各种类型的程序,但是系统要时时刻刻对各页的访问历史情况加以记录和更新,开销太大,因此LRU算法必须要有硬件的支持。
(三)局部性原理
1、时间局部性(Temporal Locality)
- 如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。
- 程序循环、堆栈等是产生时间局部性的原因。
2、 空间局部性(Spatial Locality)
- 在最近的将来将用到的信息很可能与正在使用的信息在空间地址上是临近的。
3、 顺序局部性(Order Locality)
- 在典型程序中,除转移类指令外,大部分指令是顺序进行的。
- 顺序执行和非顺序执行的比例大致是5:1。此外,对大型数组访问也是顺序的。