存储器层次结构(一)存储器技术
引言
局部性原理:
- 时间局部性:某个数据项被访存,不久的将来它很可能再次被访问。
- 空间局部性:该数据项附近的数据项可能很快也会被访问。
根据局部性原理我们可以将计算机的存储器设计为具有不同容量、成本和访问时间的存储器层次结构。

注意:
- 数据不能跨层传输
- 数据传输的最小单位是块或行
随机访问存储器 RAM
RAM分为两类:静态的和动态的。SRAM作为cache;RAM用来作为主存和图形系统的帧缓冲区。
SRAM
SRAM每一位存在一个双稳态存储单元里,每个单元由六个晶体管电路实现。由于双稳态特性,只要有电,他就会永远保持它的值,即使有干扰来扰乱电压,当干扰消除时,电路就会恢复到稳定值。
DRAM
DRAM每一位存储为对一个电容的充电,很多原因会导致电容漏电,所以它必须周期地读出和重写来刷新每一位。
对比
下图总结了SRAM和DRAM的特性。只要供电,SRAM就会保持不变,与DRAM不同,它不需要刷新。SRAM的存取比DRAM快,且对光和电噪声这样的干扰不敏感。代价是存取每bit位,SRAM要用更多的晶体管,因此更贵,功耗更大。

传统的DRAM
DRAM芯片被分为 \(d\) 个超单元,每个超单元由 \(w\) 个DRAM单元组成,它们被组织成长方形阵列,如下图所示。

每个DRAM芯片连接到一个内存控制器电路,由它负责数据的写入和读取,下图展示了读取超单元(2,1)的过程:内存控制器先发送行选通RAS,再发送列选通CAS。

将DRAM组织成二维阵列的优点是降低芯片上地址引脚的数量,缺点是必须分两次发送地址,增加了访存时间。
我们所说的内存条(双列直插内存模块 DIMM),一般由4-16块DRAM芯片构成,并组织成8字节宽。在Core i7系统中,当CPU从主存取出64位字时如下图:

增强的DRAM
DRAM有很多增强版,目前最快的DRAM版本是DDR(Double Data Rate) SDRAM(synchronous),DDR表示在时钟的上升沿和下降沿都可以传输数据,SDRAM的优势在于使用时钟消除了存储器和处理器同步的时间。
该技术最新版本是DDR4,每秒可以传输 \(3200M\) 次,意味着时钟频率为 \(1600M\) Hz,带宽可以达到 \(8 \times 3200=25600\) MB。
主存的访问
下图是一个典型的计算机系统配置,以此为例介绍对主存的读操作(写操作类似)。

考虑CPU执行这条加载指令 movq A, %rax 的过程。CPU芯片上的总线接口发起读事务,由三个步骤组成:
- 首先,CPU将地址A放到系统总线上,IO桥(包括了内存控制器)将信号传递到内存总线。
- 接下来,主存感觉到了地址信号,读取内存总线的地址后,从DRAM取出数据字将其写到内存总线上;IO桥将内存总线信号翻译为系统总线信号,沿着系统总线传递。
- 最后,CPU察觉到了系统总线上的数据,将数据读取并复制到寄存器%rax中。
注意:这里的系统总线和内存总线相当于抽象了控制总线、地址总线、数据总线这个集合。
闪存
闪存是一类基于EEPROM的非易失性存储器,在断电后仍然保存信息。
- 存在写损耗问题,因此很多闪存产品都有一个控制器,用来分散写操作到写入次数较少的块中,称为损耗均衡技术。
- 它广泛用于个人移动设备;SSD就是一种基于闪存的磁盘驱动器。
- 存储在ROM设备中的程序通常被称为固件,如PC的BIOS,图形卡和磁盘驱动器也依赖固件翻译来自CPU的I/O请求。
磁盘
磁盘构造
如图(b),磁盘由一个或多个叠在一起的盘片构成,每个盘片有两个表面;中间有一个主轴可以旋转,驱动盘片以固定速率旋转。
如图(a),是一个典型的盘面,每个表面由多组磁道构成,每个磁道被划分为一组扇区(包含相等的数据位,通常为512B),扇区之间有一些间隙,用来表示数据的格式化位。
图(b)的整个装置称为磁盘驱动器,简称为磁盘。

注:柱面是所有盘片表面上到主轴中心距离相等的磁道的集合。
磁盘容量
通过结构,容易得出磁盘容量公式如下:

制造商所谓的GB和TB是用十进制算的。
磁盘操作
下图简直不能再清晰了。

磁盘以扇区大小的块为单位读写数据,访问时间主要包括三部分:寻道时间、旋转延迟、传输时间。
实际的平均寻道时间通常只有标称数据的25%-33%,磁盘访问的局部性是原因之一,局部性有两个原因:一是同一文件产生的连续访问,二是操作系统会尽可能把这些访问调度在一起。
传输时间:传输一个数据块的时间,大多数磁盘控制器都会有一个保存最近传输数据的内建缓存。
逻辑磁盘块
为了对操作系统隐蔽其构造的复杂性,磁盘封装了一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和物理磁盘扇区之间的映射关系。
当操作系统想要执行一个IO操作时,会发送一个命令到磁盘控制器,让它读某个逻辑块号。控制器上的固件执行一个快速表查找,将该逻辑块号翻译成为一个标识其唯一物理扇区(盘面、磁道、扇区)的三元组;然后控制器将读写头移动到相应柱面,读写数据到控制器上的小缓冲区中,然后将它们复制到主存(具体过程见后文)。
注意:这里的小缓冲区即磁盘的内建缓存,可以理解为磁盘的小cache。
I/O的连接
系统总线和内存总线是与CPU相关的,I/O总线不同,它与底层设计无关。下图展示了一个典型的I/O总线结构。

磁盘的访问
假设该系统使用内存映射I/O,地址空间中为I/O设备保留的地址称为一个I/O端口。当一个设备连接到总线时,它被映射到一个或多个端口。
具体过程如图所示。注意:
- 这里涉及到了存储器层次结构中不能跨层传输的问题,即磁盘中的数据必须先存在主存中,才可以由CPU访问。
- IO进行的时候,CPU会跑掉做其他的事情。这种由设备自己执行读或写总线事务而不需要CPU干涉的过程,称为直接内存访问(DMA),这种数据传送称为DMA传送。
- 扇区内容存储在主存后,磁盘控制器会发送一个中断信号给CPU。

固态硬盘 SSD
SSD是一种基于闪存的存储技术,一个SSD由闪存芯片和闪存翻译层组成:
- 闪存芯片:替代传统旋转磁盘的机械驱动器。
- 闪存翻译层:一个硬件/固件设备,相当于磁盘控制器,将对逻辑块的请求翻译成对底层物理设备的访问。

- 数据以页为单位进行读写。只有一页所属的块整个被擦除后,才能写这一页(通常指该块所有位设为1)。
- 随机读和写存在性能差别由底层闪存基本属性决定。但由于无移动部件,因此比旋转磁盘更快,能耗更低,也更结实。缺点在于反复写之后,闪存块会磨损,从而SSD容易磨损。
参考
- 《深入理解计算机系统》第6章 存储器层次结构
- 《计算机组成与设计 硬件/软件接口》第5章 大容量和高速度:开发存储器层次结构

浙公网安备 33010602011771号