文章目录
1.0 概述
1.1 为什么用Cache?
我在前面总结存储器的时候有写到过出现Cache的背景,因为CPU发展的速度比存储器更新迭代的速度快的多得多,为了避免CPU“空等”的现象,我们在CPU和内存之间加入一个容量小速度快的存储设备,这个存储设备就是cache,是由静态RAM组成
程序访问的局部性原理
程序局部性原理,是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于复程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。
程序局部性制包括程序的时间局部性和程序的空间局部性。
- 程序的时间局部性: 是指程序即将用到的信息可能就是目前正在使用的信息。
- 程序的空间局部性: 是指程序即将用到的信息可能与目前正在使用的信息在空间上相邻或者临近。
cache和主存之间进行的数据交换是一个‘块’,这个‘块’中既包含了正在使用的指令和数据,也包括了相邻的指令和数据。
1.2 Cache的工作原理
(1)主存和缓存的编址及工作原理
下面这两个图,左侧是主存储器的结构,右侧是cache存储器的结构。
我们把主存储器和cache分成大小相等的’块‘,分别是M块和C块,cache的容量要远远小于主存的容量,M>>C。
实际应用当中cache地址的意义并不大,也不需要实际去形成cache的地址。
一个块在主存和cache之间进行传送的时候是整体进行传送的,块内字节的顺序不会发生任何变化,所以主存的块内地址部分和cache的块内地址部分的值是完全相同的。
cache结构上的标记部分,实际上标记的是对应关系,如果一个主存块要调入到cache当中,那就可以把主存块号写到标记当中,将来CPU给出一个内存的地址,希望可以在cache当中访问到这个地址那首相需要确定的是这个块是否已经被送到了cache当中,那么他就拿给出地址的主存块号和cache当中的标进行比较,如果和某一个标记正好相等,并且这个cache块是有效的,那么这个块内就保存了他要在内存中访问的信息,就可以直接从cache当中获取这些信息,那么它的速度就会得到很大的提高。
(2) 命中与未命中
上面我们写道,缓存共有C块,主存共有M块, M>>C
在CPU访问主存的时候,如果要访问的块已经放到了缓存当中,在缓存当中能够取到相