CSAPP Note chap6
CSAPP 读书笔记系列chap6
chap6 储存器层次结构
这一章说的是内存和缓存cache,配合之前的图
6.1 存储技术
随机存取存储器(RAM, Random-Access Memory)
-
- SRAM(Static RAM) 通常用在处理器做缓存
-
- DRAM(Dynamic RAM) 也就是内存
ROM
disk传统机械硬盘 机械硬盘有许多片磁盘(platter)组成,每一片磁盘有两面;每一面由一圈圈的磁道(track)组成,而每个磁道会被分隔成不同的扇区(sector)。信息存在扇区上面
SSD 固态硬盘 信息存储在block的页page上
总线BUS: 传输地址、数据和控制信号的一组电线
memory的发展历史如下:
6.2 局部性Locality
其是为了解决访问速度过慢的问题,利用的是缓存cache的思想,其一般分为:
-时间局部性(Temporal Locality): 如果一个信息项正在被访问,那么在近期它很可能还会被再次访问
空间局部性(Spatial Locality): 在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的
顺序局部性(Order Locality): 在典型程序中,除转移类指令外,大部分指令是顺序进行的。顺序执行和非顺序执行的比例大致是5:1。此外,对大型数组访问也是顺序的。指令的顺序执行、数组的连续存放等是产生顺序局部性的原因。
而cache 的思想: 对于每个k,位于k层的更快更小的存储设备作为位于k+1岑的更大更慢的存储设备的缓存。
在第一个图中,每一层都可以看作是下一层的缓存。
更加具体的是:
缓存未命中
缓存命中(CACHE HIT):若程序需要在第k+1层的某个数据对象d,程序会先在第k层的一个块查找,若d刚好在第k层,则为缓存命中.
缓存未命中 (CACHE MISS) : 命中的反面,其类型为:
-
- 强制性失效(Cold/compulsory Miss): CPU 第一次访问相应缓存块,缓存中肯定没有对应数据,这是不可避免的
-
- 冲突失效(Confilict Miss): 在直接相联或组相联的缓存中,不同的缓存块由于索引相同相互替换,引起的失效叫做冲突失效
-
- 容量失效(Capacity Miss): 有限的缓存容量导致缓存放不下而被替换,被替换出去的缓存块再被访问,引起的失效叫做容量失效
高速缓存存储器 Cache Memory
这里介绍的是L1缓存的工作原理:
这里很多概念类似hash 技术
对于一个缓存器:
其大小容量为: C=S×E×B 字节
其中:
- S 表示集合(set)数量
- E 表示数据行(line)的数量
- B 表示每个缓存块(block)保存的字节数目
而对于寻址(也就是如何寻找对应的block)的方式:
由对应的地址总线去决定,也就是: