最早的计算机存储器层次结构只有三层:CPU寄存器、DRAM主存储器和磁盘存储。由于CPU和主存之间的速度差距过大,设计者们在这两者之间加入了一个SRAM高速缓存存储器,也就是L1高速缓存。后面又加入了L2、L3高速缓存,本节就是用来研究高速缓存存储器的。
1、通用的高速缓存存储器组织结构
高速缓存被组织成如下的情形:
- 整个高速缓存被分成了若干个组
- 每个组包含若干个高速缓存行
- 每个行包含一个一定数量字节的数据块,以及一个有效位和t个标记位
细节我们后面再说
当CPU要从主存中独取一个字的时候,它将地址A发送至高速缓存。高速缓存需要判断自己是否存储着这个地址的那个字的副本。如何找到一个副本取决于高速缓存是如何存储的。下面介绍高速缓存如何具体存储一个内容。
前面所说的地址A被拆分成三个部分。
- 中间的s位做了组索引,也就是可以通过这s位知道该地址的字所在的组
- 前面的t位作为标记,用来寻找组内哪个行包含该地址的字。只有当行设置了有效位,并且标记匹配的行,才是真正存储字的位置
- 后面的b位代表块偏移,也就是从该行中从第b个字节开始取一个字,就是你想要的内容
上面是相关的参数描述