2.3 主存

主存(Main Memory),也称为内存,通过高速的内存总线直接与CPU连接。CPU通过Load/Store指令对内存进行数据读写。目前,主存主要采用DRAM介质,也出现了新型字节型非易失性存储器,如PCM、RRAM(Resistive Random Access Memory,阻变式存储器)、MRAM(Magnetroresistive Random Access Memory,磁性随机存取存储器)等。下文主要介绍DRAM,最后简要介绍非易失性存储器。

2.3.1 DRAM组成与结构

DRAM用MOS(Metal-Oxide-Semiconductor,金属氧化物半导体)来存储一个二进制位数据。目前,常见的DRAM采用了1T1C的结构,如图2.16所示,即包括1个晶体管(Transistor)和1个电容(Capacitor)。数据被存储在MOS晶体管T源极的寄生电容C中,例如,用电容C中有电荷表示“1”,无电荷表示“0”。

DRAM的每个存储单元通过二维行列结构(2m×2n)进行组织,如图2.17所示。DRAM读写请求的数据地址包含行地址(m)和列地址(n)。DRAM首先对行地址进行解析,选中DRAM中的一行(Row),也被称为一个页(Page),并通过读放大器(Sense Amplifier)将一行的数据从二维行列结构中读取到行缓存(Row Buffer)中。然后再对列地址进行解析,从行缓存中选择列地址对应的数据块进行传输。

图2.16 DRAM单元结构示意

图2.17 DRAM二维行列结构

上述DRAM的组织方式给出了一个DRAM路(Bank)中的读/写操作。在路之上依次组织成芯片(Chip)、秩(Rank)、DIMM(Dual In-line Memory Modules,双列直插式内存组件)和通道(Channel),然后与CPU连接。下面从CPU的角度,详细介绍DRAM内存的组织与结构,如图2.18所示。

(a)通道结构

(b)DIMM结构

(c)秩结构

(d)芯片结构

图2.18 DRAM结构层次

一个DRAM的芯片包含若干个路。同一个芯片中不同路共享控制线、地址线和数据线。因为芯片设计面积等方面的限制,芯片引脚的个数有限,因而每个芯片通常支持的数据位宽为4~16比特。

为了支持更大的位宽,DRAM将不同的芯片组织成秩的结构,每个秩内部的不同芯片同时进行读写,从而获得更大的位宽。在同一个秩中,不同芯片共享地址线和控制线,只是提供的数据不同。例如,对于8比特位宽的芯片,DRAM可以在一个秩中组织8个芯片同时读写,以支持64比特位宽的读写。

在DRAM的物理内存条上,如DIMM内存条,包含一个或多个秩。例如,在一个DIMM内存条上,看到正反两面,每面各8个芯片,每一面上的8个芯片各自组成一个秩,该内存条共包含两个秩。

物理内存条是可以直接插在主板上的物理设备,并通过总线与CPU相连。为了提高内存访问性能,CPU可以通过多套总线连接物理内存条。每套总线被称为通道。

CPU与DRAM的连接目前主要采用了DDR(Double Data Rate,双倍数据速率)同步内存接口。DDR的数据带宽与数据总线的频率与位宽相关。数据总线用于在计算机各功能部件之间传送数据,数据总线的位宽(总线的宽度)与总线时钟频率的乘积,与该总线所支持的最高数据吞吐(输入/输出)能力成正比。表2.2列出了DDR数据带宽。

表2.2 DDR数据带宽

注:MT/s即每秒百万次。

2.3.2 DRAM刷新

DRAM通过在电容上保存电子的多少来记录“0”和“1”两个状态。但是,DRAM在读取内存单元时,内存单元中电容上的电子会随着时间推移逃逸,称为破坏性读出,这就要求DRAM定期将内存单元里的数据读取后再写入,称为刷新(Refresh)操作。

破坏性读出的特性要求DRAM读操作之后需要将原有数据再次写入。在DRAM中,数据在DRAM 路中会通过读放大器将数据读取到行缓存中,此时原有DRAM行中的数据丢失。在读取完成之后,DRAM需要从行缓存中将数据再次写入原有的DRAM行,这个操作也被称为预充电(Pre-charge)。通过这个操作,在读取之后仍然在原有行中保留之前的数据。

DRAM存储单元在一段时间内保存数据的能力被称为保持力(Retention)。为了能够正确保存数据,DRAM通过刷新操作定期对DRAM行中的数据读取并重新写入。例如,在DRAM单元的保持力基本都超过64 ms时,DRAM需要保证每一行在64 ms间隔内被刷新。

DRAM的刷新操作包括集中式刷新和分布式刷新,如图2.19所示。集中式刷新是每隔一段时间,停止内存的外部读/写操作,由内存控制器将内存行逐一刷新。这样的优点在于实现简单,缺点在于外部读写延迟大。分布式刷新是对内存所有行交替进行刷新操作和外部读/写操作,在刷新时间间隔内均匀分散。

图2.19 DRAM刷新示意

2.3.3 内存控制器

内存控制器将CPU发送的内存读写请求调度分发至内存芯片上,包括事务调度(Transaction Scheduling)、地址转换(Address Translation)、命令调度(Command Scheduling)、信号时序管理等步骤,如图2.20所示。除了正常的外部DRAM读写请求之外,DRAM内存控制器还需要管理刷新操作。

图2.20 DRAM内存控制器结构[1]

内存控制器既可以部署在内存条内,也可以在CPU里。在内存条内部署内存控制器,可以支持不同的内存介质特性,而且可以降低CPU芯片的能耗,但其缺点是访问延迟相对较高,而且由于主机端的语义信息缺失,多核之间的内存访问请求调度的信息较少,从而影响内存带宽的性能。在CPU里部署内存控制器,与在内存条内部署内存控制器的方式相比,优缺点相反。

在内存控制器里,内存请求的调度是影响内存性能的一个重要因素。内存请求调度与所有调度策略有着类似的目标:提高吞吐率、降低延迟和保证公平。与其他调度不同的是需要考虑内存的特性,具体需要考虑的因素包括请求的行缓存命中或缺失状态、请求到达先后顺序、请求的类别(预取请求/读请求/写请求)、请求优先级等。

其中,请求的行缓存命中或缺失状态是内存调度中需要考虑的比较独特的因素。在DRAM内存中,行缓存管理有两种基本策略:开放行(Open Row)和关闭行(Closed Row)。

在开放行策略中,访问某一内存行之后,数据保留在行缓存中,不需要回写(即预充电)到内存行中。在这种策略下,如果下一个请求访问同一内存行,则行缓存命中,这样节省了回写的开销。如果下一个请求访问不同的行,则行缓存缺失,需要先进行回写,然后激活新的行,最后进行数据访问操作,延迟相对较高。

在关闭行策略中,每次内存访问之后,所访问的内存行的数据由行缓存回写到原有内存行中。在这种策略下,如果下一个请求访问同一内存行,则仍然需要先激活该内存行,然后读,最后回写,造成了较高的延迟。如果下一个请求访问不同行,则需要先激活该内存行,然后读,最后回写,与开放行策略相比避免了关键路径上的回写开销。

2.3.4 非易失性存储器

近年来,随着材料和器件等的发展,一些非易失性存储器也随之出现,并逐渐应用,这对计算机系统和存储系统的结构和性能带来影响。下面简要介绍PCM、RRAM、MRAM。

1.PCM

PCM是一种采用相变材料作为存储介质的非易失性存储器。图2.21左图展示了PCM一个单元的基本结构,该结构由两个金属层及它们之间的硫族化物、加热器组成。图2.21右图所示为其对应的结构示意图。

图2.21 PCM单元及其结构

PCM的读写操作是通过向存储单元施加特定强度和持续时间的电流脉冲实现的。其中写操作包含置位(Set,写“1”)和重置(Reset,写“0”)。置位时,加热器向PCM单元施加强度较低但持续时间较长的电流脉冲(见图2.22),使其温度在硫族化物的结晶点(约300 °C)与熔点(约600 °C)之间,此时相变材料的部分编程区域将变成晶态,即存储了二进制数据“1”。而重置时,加热器向PCM单元施加强度高但持续时间短的电流脉冲,使温度高于硫族化物的熔点,此时编程区域将变为非晶态,即存储了二进制数据“0”。由于PCM单元在置位状态和重置状态的阻值差异较大,可通过采用较低强度的电流脉冲来区分。具体而言,执行读操作时,向PCM单元施加强度低且时间短的电流脉冲,获取该存储单元的电阻值,并通过阻值大小区分“1”或“0”。此外,为了避免达到硫族化物的结晶点或熔点,读操作使用的电流脉冲的强度和持续时间均小于写操作。

图2.22 PCM单元读/写操作所需要的电脉冲

PCM的特性如下:其集成度较高,具有良好的空间扩展性,可在20 nm 技术节点下继续缩小单元规模;在存储密度方面优于DRAM;另外,它的访存延迟与DRAM相近,但静态功耗极低。

2.RRAM

RRAM是一种通过改变存储单元的阻值来存储数据的非易失性存储器。图2.23展示了RRAM单元的基本结构,该结构由上电极、下电极和夹在中间的金属氧化物层构成。通过施加一个外部电压,RRAM单元可以在低电阻状态和高电阻状态之间切换,分别用来表示存储的二进制数据“1”和“0”。

图2.24所示为RRAM单元的电流-电压(I-V)曲线。当对存储单元通入正向电压时,其由高电阻状态(逻辑“0”)切换为低电阻状态(逻辑“1”),称为置位(Set)操作。当对存储单元通入负向电压时,其由低电阻状态(逻辑“1”)切换为高电阻状态(逻辑“0”),称为复位(Reset)操作。从存储单元中读取数据时,只需要施加一个不影响存储器状态的较小的读取电压来检测单元是在高阻态还是在低阻态。

图2.23 RRAM单元的基本结构

图2.24 RRAM单元的I-V曲线[4]

RRAM具有存储密度大的优势,一个存储单元可以存储1比特(SLC)或者2比特(MLC)数据。同时,一个存储单元的面积最小可以达到4F2。另外,阻变存储器读取速度与DRAM相当,但写速度远慢于DRAM。

3.MRAM

MRAM是一种利用磁电阻来存储数据的非易失性存储器。图2.25左图展示了MRAM单元的基本结构,该结构由两个铁磁层夹着一个隧穿势垒层(绝缘材料)组成三明治形态。其中一个铁磁层被称为参考层,它的磁化方向沿易磁化轴方向固定不变。另一个铁磁层被称为自由层,它的磁化方向有两个稳定的取向,分别与参考层平行或反平行。图2.25右图显示了其对应的结构示意图。

图2.25 MRAM单元及其结构

由于有量子隧道效应存在,磁存储器薄绝缘层可以流过小电流。当电子穿越绝缘体势垒时保持其自旋方向不变,即两层磁性材料磁矩正平行时(如图2.26上图所示),材料呈现低电阻状态,用来表示二进制数据“0”;反之,当两层磁性材料磁矩反平行时(如图2.26下图所示),材料呈现高电阻状态,用来表示二进制数据“1”。读取数据时,根据磁化方向是否一致而变化的特性,可以判别数据位是“0”还是“1”。

图2.26 MRAM存储数据的逻辑示意图

在性能方面,MRAM与SRAM(Static Random Access Memory,静态随机存储器)类似,具备高速读写能力。在可靠性方面,由于磁体本质上是抗辐射的,MRAM本身具有极高的可靠性,即存储单元本身可以免受软错误影响。在存储密度方面,MRAM可以做到与DRAM相似的密度。另外,MRAM不存在漏电情况且不需要消耗能量来进行刷新,具备低功耗的特点。