



1位的标准 动态随机存取存储器 (Dynamic Random-Access Memory,DRAM)集成电路由两个电路器件组成:MOSFET和电容器。下面简要介绍电容器的电气特性。
电容器 (capacitor)是存储能量的双端无源电路器件。能量以电流的形式进入和离开电容器。电容器两端的电压与电容器中的电荷量成正比。
与第2章中介绍的液压系统类比,可以把电容器看作一个连接在通向水龙头水管另一侧的气球,管道中的水会进入气球,并且水压会使气球膨胀。假设气球很结实,并且随着气球的膨胀,气球会拉伸,从而增加气球内部的压力。持续膨胀直到气球中的压力等于管道中的压力时停止充水。
如果把管道末端的水龙头完全打开,那么水就会释放,使得管道中的压力降低。气球中的一些水会流回到管道中,直到气球中的压力再次等于管道中压力时才停止充水。
被称作 水锤消除器 (water hammer arrestors)的液压装置正是用这种方式解决了打开和关闭水龙头时管道发出砰砰声的问题。水锤消除器采用类似气球拉伸的行为,消除由于水龙头打开和关闭而引起的水压突变。
电容器中的电量类似于气球中的水量,电容器两端的电压类似于通过拉伸在气球内部表现出来的压力。
电容器由两个平行的金属板构成,金属板之间由空气等绝缘材料隔开,终端与每个平板连接。电容器中的电荷量与其两端的电压之比称为 电容 (capacitance),电容的大小由平行板的尺寸、平行板之间的距离以及它们之间的绝缘体材料的类型决定。电容器的电容类似于液压示例中的气球的尺寸,具有较大电容的电容器对应于较大的气球。在给定压力下,大气球需要比小气球填充更多的水。电容器的原理图符号如图4.4所示。
图4.4 电容器原理图符号
有间隔的两条水平线表示了金属板电容器架构。电容的单位是F,它是以英国科学家迈克尔·法拉第(Michael Faraday)的名字命名的,法拉第取得了包括电动机在内的许多成就。
DRAM位单元是用于读写单个数据位的存储单元。现代计算机中使用的DRAM模块包含了数十亿个位单元。DRAM电路中的一个位单元由MOSFET和电容器组成,如图4.5所示。
图4.5 DRAM位单元电路
在图4.5中,右下角带有三条水平线的符号是接地符号,与图4.3中使用的0V的标记是一样的,两者可以替换。字线和位线用于将单个位单元连接到网格中。
这样的单个位单元在矩形网格中进行复制,形成一个完整的DRAM存储阵列。图4.6中显示了16位的DRAM存储阵列,该存储阵列由4个4位的字组成。
实际的DRAM存储阵列包含的位数比图中所示简单的电路多得多。典型的DRAM器件的字长为8位(而不是图中标有B0~B3的4位)。这就意味着每个DRAM芯片可以并行存储或读出8位数据。
在实际的DRAM存储阵列中,沿字线方向的位单元的实际数量是DRAM器件字长的整数倍。个人计算机中使用的大容量DRAM模块中,每条字线包含许多字。在一个每行有1024个8位字DRAM芯片中,每行一共包含8192位,每行上所有MOSFET的栅极均由同一个字线信号控制。DRAM中还包含额外的多路选择器逻辑,从被有效字线激活的行中选出处理器正在请求的字。
图4.6 DRAM存储器的存储阵列组织
DRAM存储阵列的垂直方向上由相同的行组成,每行都由一条字线控制。字线水平地连接在每行中所有的位单元上,而位线信号则连接在每列中所有的位单元上。
每个存储器单元的状态存储在相应的电容器中。电容器上的低电压表示0,高电压表示1。在实际DDR5 DRAM器件中,低电压接近0V,高电压通常接近1.1V。
大多数情况下,每一行的字线保持低电压,这样可以使MOSFET保持在关闭状态,从而保持电容器的状态。当需要读取DRAM内存中的一个字(实际上是整行)时,地址译码电路会选择适当的字线,并将其驱动为高电压,同时将阵列中的其他所有的字线保持为低电压。这会使连接在有效字线上的每个位单元中的MOSFET打开,从而使相应单元电容中的电压到连接的位线上从而驱动位线。与处于0(低)电压的位线相比,处于1(高)电压的位线将具有更高的电压。位线电压由DRAM器件中的电路进行检测和放大,并将结果锁存到芯片的输出寄存器中。
向DRAM中写入数据与从DRAM读取数据的方式相同,两者都是将所选字线设置为高电压。在进行写操作时,DRAM器件不感应位线上的电压,而是使用电压来驱动位线,驱动电压则根据要写入每个单元数据是0还是1来确定是0V还是1.1V。就像给气球充气或者放气一样,每个电容器对位线的充放电都要花费一些时间。在该延迟之后,字线被驱动为低电压,关闭MOSFET并将电容器锁定在新的状态。
电容器漏电使DRAM电路工艺变得复杂。将电容器充电至非零电压后,电荷量会随着时间而流失,存储的电荷量减少会导致电容器两端的电压降低。因此,必须定期刷新每个单元的内容。
刷新操作包括读取每个单元的数据并将该值回写到单元中。如果单元的状态位为1,则将其充电至其“满”电压;如果状态位为0,则将其驱动至接近0V的电压。现代DRAM器件的典型刷新间隔为64ms。在系统运行期间,DRAM刷新会在后台持续逐行进行,与处理器访问内存的操作同步,以避免冲突。
虽然需要定期刷新使得使用DRAM器件的系统设计更加复杂,但由于它具有只使用一个晶体管和一个电容器就能存储一位数据的巨大优点,因此DRAM取代了其他所有备选技术,成为个人和商用计算机系统中主存储器的首选。
下节我们将介绍当前DRAM工艺DDR5的体系结构。
Intel于1970年生产了第一款商用DRAM集成电路。Intel 1103可以存储1024个字,每个字的字长为1位。1103需要每2ms刷新一次。在20世纪70年代初,MOS型半导体DRAM已经取代了磁芯存储器成为计算机系统中的首选存储技术。DRAM具有易失性,这意味着断电时,单元电容器中的电荷会消失,从而使数据丢失。目前广泛使用的DRAM技术是DDR4 SDRAM。
术语 双倍数据速率 (Double Data Rate,DDR)是指存储模块与处理器内存控制器之间的传输时序特性。 单数据速率 (Single Data Rate,SDR)DRAM是在每个内存时钟周期执行一次数据传输。DDR存储器件是在每个时钟周期执行两次数据传输:一次是在时钟周期的上升沿,一次在下降沿。DDR后面的数字表示DDR技术的版本。因此,DDR5是DDR标准的第5版。术语 同步动态随机存储器 (Synchronous DRAM,SDRAM)表示DRAM电路通过公共时钟信号与处理器内存控制器同步。当前广泛应用的DRAM工艺版本是DDR4 SDRAM,而DDR5 SDRAM已经开始推出。
现代个人计算机和智能手机之类的个人设备通常含有几GB的RAM,其中1GB等于2 30 B,这就相当于1073741824(十亿多)B。顾名思义,随机存储器允许处理器可以在一次操作中读写RAM地址空间内的任何单元。截至2021年,笔记本计算机的高端存储模块包含16个DRAM芯片,存储容量为32GB。模块中的每个DRAM芯片的容量为2G个8位字,即2GB。
在2021年,最先进的存储模块标准是DDR5 SDRAM,该标准是对基于DDR1、DDR2、DDR3和DDR4等接口技术进行优化后得出的。DDR5存储模块的封装为 双列直插式内存组件 (Dual In-line Memory Module,DIMM)。DIMM在电路板边缘的两侧都有电触点(因此名字中有“双”),电触点提供了与主板中DIMM插槽的连接。标准的DDR5 DIMM具有288个引脚。较小的存储模块称为 小型双列直插式内存组件 (Small Outline DIMM,SODIMM),它可用于空间有限的笔记本计算机等系统。DDR5 SODIMM具有262个引脚,由于引脚数量减少,因此SODIMM模块缺少某些DIMM所支持的功能,例如对数据位进行检测和纠正的功能。该功能称为 纠错码 (Error Correcting Code,ECC)。
DDR5存储模块通常采用1.1V供电。一个有代表性的例子是:一个特定的DDR5模块每秒可以执行高达48亿次的数据传输,这个速度是2400MHz的内存时钟频率的两倍。当每次传输8个字节时,DDR5器件每秒可移动传送38.4GB。DDR5模块有多种时钟频率、容量和价位供选择。
尽管实际的DRAM模块是由存储单元构成的矩阵阵列,但DDR5器件的内部体系结构却更为复杂,一个DRAM集成电路通常包含多个存储阵列。在执行读写操作之前,地址译码逻辑选择需要的内存单元所在的存储阵列。在DDR5模块中,将存储阵列进一步排列为阵列组,这就需要额外的译码逻辑来选择正确的组。DDR5器件中包含8个存储阵列组,每个阵列组中有4个存储阵列。将DDR5内存模块体系结构划分为多个存储阵列组,可以将多个存储访问以重叠的方式并行处理,最大程度地提高数据传输速度。这种方式使得处理器和RAM之间的数据传输可以达到峰值速度,同时也最大限度地减少了等待每个内部DRAM阵列访问操作完成的时间。
除了指定DDR5内存模块中正确的地址单元外,系统还必须通过接口信号来提供命令以表示要进行的操作,特别是是否要对选中的行进行读取、写入或刷新。
DDR5 SDRAM标准可以从 联合电子设备工程委员会 (Joint Electron Device Engineering Council,JEDEC)购买,网址为https://www.jedec.org/standards-documents/docs/jesd79-5,该标准为主机系统提供了DDR5存储器接口的详细定义,并且也包含设计与支持DDR5的计算机系统兼容的内存模块需要的所有信息。
从历史的角度上看,DDR SDRAM标准的每一代均与前几代不兼容。比如,DDR5内存模块构建的主板只可以与DDR5模块一起使用。每一代DDR的插槽都是根据自己的标准制造的,不可能插入不正确的模块。例如,DDR4 DRAM模块无法插入DDR5插槽。
随着存储技术的发展,每一代DDR的改进主要是为了提高数据传输速率和增大存储密度。为了实现这些目标,新一代DDR的供电电压会降低,从而减少系统功耗,且因为散发热量减少,存储器电路的密度更高。
大多数现代处理器将系统内存看作是顺序地址的线性阵列。在6502等不太复杂的处理器体系结构中,处理器直接使用指令中提供的地址寻址RAM芯片。由于DDR5 SDRAM器件中控制信号和阵列管理逻辑的复杂性,现代计算机系统必须有一个内存控制器,将处理器发出的每个线性地址转换为命令和寻址信号,从而选择适当的DDR5模块(在具有多个内存模块的系统中)、存储阵列组、存储阵列以及所选存储阵列中的行/列位置。内存控制器是一个时序逻辑设备,用于管理处理器和DRAM内存模块之间通信的详细信息。为了达到系统性能最佳状态,内存控制器必须合理地利用DDR5内存模块提供的重叠操作功能。
复杂的现代处理器通常将内存控制器集成到处理器内部,也可以设计一个位于处理器和RAM之间的独立内存控制器。
内存控制器接口包含多个通道,其中每个通道都是处理器与一个或多个内存模块之间进行通信的路径。在存储器体系结构中提供多个通道的好处在于可以并行地对每个通道进行存储访问。然而,多通道内存系统无法自动提高内存访问速度。系统软件必须主动地对每个应用程序或系统进程的内存分配进行管理,从而平衡通道的内存使用情况。如果操作系统只是简单地按顺序将进程分配到物理内存中,即先使用一个内存模块再转向下一个内存模块,那么当所有进程都使用同一内存通道时,多通道内存将没有任何优势可言。
图形双倍数据速率(Graphics DDR,GDDR)是一种DDR内存技术,经过优化可用作显卡的视频RAM。一方面,GDDR拥有较宽的内存总线,以满足视频显示的高吞吐量要求。另一方面,通过对标准DDR内存技术进行优化,实现对数据的最小延迟访问。
GDDR和DDR的版本号是不同步的。截至2021年,GDDR6模块已经上市好几年,而DDR6标准仍在开发中。
对DRAM单元进行读写的速度是DRAM的一个性能指标,该指标在每一代中几乎没有提升。为了提高DRAM模块的平均数据传输速率,必须采用其他技术来提高性能。其中一种可以提高平均数据传输速度的技术就是预取。
预取 (prefetching)的原理是利用了这样一个事实:当处理器正在访问指定的内存单元时,未来可能很快就要访问附近的单元。与处理器指令要读取的一个内存单元不同,预取是要读取更大的内存块,并将整个内存块从DRAM器件传送给处理器。在DDR5内存模块中,内存块大小通常为64字节。
DDR5模块可以快速读取64字节,因为它可以同时访问这64字节的所有512位。换句话说,DDR5模块可以同时从字线指定的存储单元中选择n(整数)个512位线来读取数据。被选中行中的多位数据可以同时读出,然后通过多路选择器从整行(可能是8192位)中选择所需的512位,并将其锁存到输出寄存器中。在DDR时钟控制下,被锁存的数据从DRAM模块传送到处理器。
通过使用多个存储阵列组,内存的多次读取和对结果数据的传输可以在时间上重叠,并确保数据在内存模块和处理器之间以接口能够支持的最高速率进行传输。
在接收到64字节的数据块后,处理器将其存储在内部高速缓存中,并从指令所请求的内存块中选择指定的数据元素(可能只有一个字节)。如果后续指令访问同一内存块中的不同数据,则处理器只需要访问该内存块的本地缓存即可,这比从DRAM中访问数据要快得多。
除了与主存储器进行交互之外,处理器还必须通过输入和输出设备与外部世界通信。下一节将会讨论现代计算机系统中I/O接口的实现。