深入理解计算机系统(第6章 存储器层次结构)
存储器系统(memory system)是一个具有不同容量、成本和访问时间的存储设备的层次结构。
6.1 存储技术
6.1.1 随机访问存储器
随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的。SRAM比DRAM更快更贵。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲区。
1. 静态RAM
2. 动态RAM
3. 传统的DRAM
DRAM芯片中的单元(位)被分成\(d\)个超单元(supercell),每个超单元都有\(w\)个DRAM单元组成。
4. 内存模块
DRAM芯片封装在内存模块(memory module)中,插在主板的扩展槽上。
5. 增强型的DRAM
6. 非易失性存储器
7. 访问主存
内存读:
CPU将地址A发送到总线上。
主存从总线上接收到地址A,检索到数据x(字),然后发送到总线上。
CPU从总线上接收数据x(字),然后写入到%eax寄存器中。
内存写:
CPU将地址A发送到总线上,主存收到地址并等待相应数据的到达。
CPU通过总线发送数据y(字)。
主存从总线上接收到数据y(字),然后存储到地址A。
6.1.2 磁盘存储
1. 磁盘构造
磁盘是由盘片(platter)构成的。每个盘片有两面或者称为表面(surface),表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴(spindle),使得盘片以固定的旋转速率(rotational rate)旋转,通常是5400~15000转每分钟(Revolution Per Minute, RPM)。
每个表面是由一组称为磁道(track)的同心圆组成的。每个磁道被划分为一组扇区(sector)扇区之间由一些间隙(gap)隔开。
2.磁盘容量
\(磁盘容量 = \cfrac{字节数}{扇区} × \cfrac{平均扇区数}{磁道} × \cfrac{磁道数}{表面} × \cfrac{表面数}{盘片} × \cfrac{盘片数}{磁盘}\)
eg:假设我们有一个磁盘,有5个盘片,每个扇区512字节,每个面20000条磁道,每条磁道平均300个扇区。则\(磁盘容量 = 512 × 300 × 20000 × 2 × 5 = 30.72GB\)
3. 磁盘操作
磁盘用读/写头(read/write head)来读写存储在磁性表面的位,而读写头连接到一个传动臂(actuator arm)一端。
对扇区的访问时间(access time)有三个主要的部分:寻道时间(seek time)、旋转时间(rotational latency)和传送时间(transfer time)。
4. 逻辑磁盘块
5. 连接I/O设备
6. 访问磁盘
6.1.3 固态硬盘
6.2 局部性
局部性原理(principle of locality):倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。
局部性的两种不同形式:时间局部性(temporal locality)和空间局部性(spatial locality)。
在一个具有良好时间局部性的程序中,被引用过一次的内存位置很可能在不远的将来再被多次引用。
在一个具有良好空间局部性的程序中,如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附件的一个内存位置。
6.3 存储器层次结构
存储器层次结构(memory hierarchy)
6.3.1 存储器层次结构中的缓存
高速缓存(cache)是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存(caching)。
存储器层次结构的中心思想:对于每个k,位于k层的更快、更小的存储设备作为位于k+1层的更大、更慢的存储设备的缓存。
重要思想:存储器层次结构构建了一个巨大的存储池,其成本接近于最底部的廉价存储,其速度接近于最顶部的快速存储。
1. 缓存命中
2. 缓存不命中
3. 缓存不命中的种类
- 强制性不命中(compulsory miss)/冷不命中(cold miss)
- 冲突不命中(conflict miss)
- 容量不命中(capacity miss)
4. 缓存管理
6.3.2 存储器层次结构概念小结
6.4 高速缓存存储器
6.4.1 通用的高速缓存存储器组织结构
6.4.2 直接映射高速缓存
\(E = 1\)
6.4.3 组相联高速缓存
\(1 < E < C/B\)
6.4.5 有关写的问题
6.4.7 高速缓存参数的性能影响
- 不命中率(miss rate):\(不命中数量/引用数量\)。
- 命中率(hit rate):\(1 - 不命中率\)。
- 命中时间(hit time):从高速缓存传送一个字到CPU所需的时间,包括组选择、行确认和字选择的时间。数量级为几个时钟周期。
- 不命中处罚(miss penalty):由于不命中所需要的额外的时间。