深入理解计算机系统(第6章 存储器层次结构)

存储器系统(memory system)是一个具有不同容量、成本和访问时间的存储设备的层次结构。

6.1 存储技术

img

6.1.1 随机访问存储器

随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的。SRAM比DRAM更快更贵。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲区。

1. 静态RAM

img

2. 动态RAM

img

3. 传统的DRAM

DRAM芯片中的单元(位)被分成\(d\)个超单元(supercell),每个超单元都有\(w\)个DRAM单元组成。

img

img

img

4. 内存模块

DRAM芯片封装在内存模块(memory module)中,插在主板的扩展槽上。

img

5. 增强型的DRAM

img

6. 非易失性存储器

img

7. 访问主存

内存读:

CPU将地址A发送到总线上。

img

主存从总线上接收到地址A,检索到数据x(字),然后发送到总线上。

img

CPU从总线上接收数据x(字),然后写入到%eax寄存器中。

img

内存写:

CPU将地址A发送到总线上,主存收到地址并等待相应数据的到达。

img

CPU通过总线发送数据y(字)。

img

主存从总线上接收到数据y(字),然后存储到地址A。

img

6.1.2 磁盘存储

1. 磁盘构造

磁盘是由盘片(platter)构成的。每个盘片有两面或者称为表面(surface),表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴(spindle),使得盘片以固定的旋转速率(rotational rate)旋转,通常是5400~15000转每分钟(Revolution Per Minute, RPM)。

每个表面是由一组称为磁道(track)的同心圆组成的。每个磁道被划分为一组扇区(sector)扇区之间由一些间隙(gap)隔开。

img

img

2.磁盘容量

img

img

\(磁盘容量 = \cfrac{字节数}{扇区} × \cfrac{平均扇区数}{磁道} × \cfrac{磁道数}{表面} × \cfrac{表面数}{盘片} × \cfrac{盘片数}{磁盘}\)

eg:假设我们有一个磁盘,有5个盘片,每个扇区512字节,每个面20000条磁道,每条磁道平均300个扇区。则\(磁盘容量 = 512 × 300 × 20000 × 2 × 5 = 30.72GB\)

3. 磁盘操作

磁盘用读/写头(read/write head)来读写存储在磁性表面的位,而读写头连接到一个传动臂(actuator arm)一端。

img

img

对扇区的访问时间(access time)有三个主要的部分:寻道时间(seek time)、旋转时间(rotational latency)和传送时间(transfer time)。

img

img

4. 逻辑磁盘块

img

5. 连接I/O设备

img

6. 访问磁盘

img

img

img

6.1.3 固态硬盘

img

img

6.2 局部性

局部性原理(principle of locality):倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

局部性的两种不同形式:时间局部性(temporal locality)和空间局部性(spatial locality)。

在一个具有良好时间局部性的程序中,被引用过一次的内存位置很可能在不远的将来再被多次引用。

在一个具有良好空间局部性的程序中,如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附件的一个内存位置。

img

6.3 存储器层次结构

存储器层次结构(memory hierarchy)

img

6.3.1 存储器层次结构中的缓存

高速缓存(cache)是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存(caching)。

存储器层次结构的中心思想:对于每个k,位于k层的更快、更小的存储设备作为位于k+1层的更大、更慢的存储设备的缓存。

重要思想:存储器层次结构构建了一个巨大的存储池,其成本接近于最底部的廉价存储,其速度接近于最顶部的快速存储。

img

1. 缓存命中

img

2. 缓存不命中

img

3. 缓存不命中的种类

  • 强制性不命中(compulsory miss)/冷不命中(cold miss)
  • 冲突不命中(conflict miss)
  • 容量不命中(capacity miss)

4. 缓存管理

6.3.2 存储器层次结构概念小结

img

6.4 高速缓存存储器

6.4.1 通用的高速缓存存储器组织结构

img

img

6.4.2 直接映射高速缓存

\(E = 1\)

6.4.3 组相联高速缓存

\(1 < E < C/B\)

6.4.5 有关写的问题

img

img

6.4.7 高速缓存参数的性能影响

  • 不命中率(miss rate):\(不命中数量/引用数量\)
  • 命中率(hit rate):\(1 - 不命中率\)
  • 命中时间(hit time):从高速缓存传送一个字到CPU所需的时间,包括组选择、行确认和字选择的时间。数量级为几个时钟周期。
  • 不命中处罚(miss penalty):由于不命中所需要的额外的时间。

6.5 编写高速缓存友好的代码

img

6.6 综合:高速缓存对程序性能的影响

6.6.1 存储器山

img

img

img

6.6.2 重新排列循环以提高空间局部性

img

posted @ 2022-11-15 20:46  kirin-dev  阅读(198)  评论(0编辑  收藏  举报