7.2 Evolution of the DRAM Architecture 结构演变
在1980年代和1990年代,传统的DRAM接口开始成为高性能和桌面系统的性能瓶颈。微处理器速度和性能的提高明显超过了DRAM芯片速度和性能的提高。因此,DRAM接口开始发展,并提出了许多革命性的提议[Przybylski 1996]。在大多数情况下,被认为是进化或革命的是提议的接口(微处理器访问DRAM的机制)。DRAM核心(即图7.3中显示的内容)基本上保持不变。
图7.10显示了基本DRAM架构从有时钟到传统的异步再到快速页面模式(FPM)再到扩展数据输出(EDO)再到突发模式EDO(BEDO)再到同步(SDRAM)的演变过程。图中将每种DRAM都以内存阵列、感测放大器和列复用器(如果适用的话还包括其他组件)的方式进行了风格化表示。
就第一个进化路径而言(从异步到SDRAM),这些变化主要是结构性的,从成本和物理实施的角度来看相对较小,并旨在提高吞吐量。自从SDRAM以来,DRAM行业提出了大量设计,我们将这些新的DRAM分为两类:一类是旨在减少延迟的,另一类是旨在提高吞吐量的。
7.2.1 Structural Modifications Targeting Throughput 针对吞吐量的结构修改
与传统的DRAM相比,FPM只是允许行在多个CAS命令之间保持打开,几乎不需要额外的电路。在此基础上,EDO改变了输出驱动器,使其成为输出锁存器,以便它们在总线上保持数据有效的时间更长。在此基础上,BEDO添加了一个内部计数器,驱动地址锁存器,因此如果所需地址与前一个CAS命令只有一位差异,内存控制器就不需要在每个CAS命令上向DRAM提供新地址。因此,在BEDO中,DRAM的列选择电路是由内部生成的信号驱动的,而不是由外部生成的信号;控制信号的源与其控制的电路在空间上和时间上都非常接近,这使电路的激活时序更加精确。最后,SDRAM进一步深化了这一观点,并通过时钟驱动所有内部电路(行选择、列选择、数据读取),而不是RAS和CAS strobe。以下段落将更详细地描述这一演变过程。
Clocked DRAM
The Conventional Asynchronous DRAM
在1970年代中期,DRAM开始采用大多数人熟悉的异步设计。与之前的有时钟版本一样,这些DRAM要求每次访问都要经过前面描述的所有步骤:对于每次访问,位线需要被预充电,行需要被激活,然后在行激活后读取列。即使微处理器希望请求之前请求过的相同数据行,仍然必须重复整个过程(行激活后跟列读取/写入)。一旦读取了列,行就被停用或关闭,并且位线被预充电。对于下一个请求,整个过程将被重复,即使连续两次请求相同的数据。按照惯例和电路设计,__RAS和__CAS必须同时上升。例如,不能在切换__CAS的同时保持__RAS低电平。图7.11说明了传统的异步DRAM的时序。
理解:传统的异步DRAM读取一次数据需要发一次行地址和列地址;读取完毕后立刻进行precharge状态。
Fast Page Mode DRAM (FPM DRAM)
FPM DRAM实现了页模式,这是对传统DRAM的改进,在此模式中行地址保持不变,从感测放大器中读取多列数据。这只是解除了前面描述的限制:内存控制器可以在切换__CAS时保持__RAS低电平,从而在感测放大器中保持的数据中创建了一个事实上的缓存。感测放大器中保持的数据形成了一个可以相对快速访问的“打开页面”。这加速了对DRAM核心的同一行的连续访问,这在计算机系统中非常常见(该术语是引用局部性,表示通常在时间上相邻的内存请求也在内存地址空间上相邻,因此可能位于相同的DRAM行内)。图7.12显示了FPM读取的时序。
理解:FDM相对之前可以发送一次RAS,就可以读取多列数据,但是每次读取数据需要发送列地址。而且必须等数据发送完毕,才能发送列地址。
Extended Data-Out DRAM (EDO DRAM)
EDO DRAM,有时称为超页模式DRAM,在FPM DRAM的输出驱动器上添加了一些晶体管,以在感测放大器和DRAM的输出引脚之间创建一个锁存器。这个锁存器保存输出引脚的状态,并允许____CAS快速取消,从而允许内存阵列更早地开始预充电。此外,输出路径中的锁存器还意味着相对于以前的DRAM架构,DRAM电路输出的数据在下一个时钟相位中保持更长时间有效(因此被称为“扩展数据输出”)。通过允许内存阵列更早地开始预充电,添加锁存器使EDO DRAM的运行速度比FPM DRAM更快。EDO使微处理器能够比FPM快至少10到15%的速度访问内存[Kinston 2000, Cuppu等人1999, 2001]。图7.13显示了EDO读取的时序。
理解:EDO在感应放大器之后加入了锁存器。这样就可以将输出保持住,这样就可以不用等读数据发送完成后,再进行precharge了;这样传输效率更快了。
Burst-Mode EDO DRAM (BEDO DRAM)
BEDO DRAM(Burst EDO DRAM)是指突发式扩展数据输出动态随机存取存储器。它被定位为EDO(扩展数据输出DRAM)之后的下一代DRAM。BEDO通过在每次向DRAM芯片发送新的列地址时从已激活的行中“突发”传输连续的数据块的概念进行改进。它增加了一个内部计数器,该计数器首先接受传入的地址,然后在每次__CAS(列地址选通)信号切换时递增该值,将递增的值驱动到列地址锁存器中。每次__CAS信号切换时,DRAM芯片将下一个连续的数据列发送到总线上。与以前的DRAM不同,以前的DRAM需要通过总线发送连续的列地址以响应每个微处理器请求,BEDO通过消除在连续地址之间发送外部地址信号的需要,消除了大量的时间不确定性,从而增加了从DRAM中读取数据的速率。实际上,与EDO DRAM相比,驱动输出总线的最小周期时间缩短了约30%,从而成比例地增加了带宽。图7.14显示了BEDO读取的时序图。
IBM’s High-Speed Toggle Mode DRAM
Synchronous DRAM (SDRAM)
7.2.2 Interface Modifications Targeting Throughput 针对吞吐量的接口修改
自从上世纪90年代中期出现SDRAM以来,似乎DRAM制造商已经提出了大量新颖的DRAM架构,试图使DRAM不再成为大宗商品[Dipert 2000]。竞争性设计大量涌现的一个原因是,我们似乎已经没有了像早期DRAM演进一样的“免费”思路。自从BEDO以来,没有提出任何架构能够以接近零成本提供30%的性能优势;所有的提案都相对昂贵。正如Dipert所建议的,目前还没有明显的领先者,因为许多方案似乎处于实现成本和实际性能提升之间的线性关系之中。随着时间的推移,市场很可能会决定胜出者;那些相对于实施成本提供亚线性性能增益的DRAM提案将被归类为零或接近零的市场份额。
Rambus DRAM (RDRAM, Concurrent RDRAM, and Direct RDRAM)
由于总线的设计——它是一根单一的总线,而不是由专用于不同功能的单独段组成的——在任何给定周期内只能有一个事务使用总线。这限制了总线的潜在并发性(即同时执行多个操作的能力)。由于这个限制,最初的RDRAM设计被认为不适合PC主内存市场[Przybylski 1996],因此在1990年代中期重新设计了接口以支持更多的并发性。
具体来说,引入“Concurrent RDRAM”后,总线被划分为单独的地址、命令和数据段,类似于JEDEC风格的DRAM组织。总线的数据段仍然是1字节宽,但增加了1位的地址段和1位的控制段。通过拥有总线的三个单独且专用的段,可以在总线上执行潜在的三个单独的同时操作。这种划分和专用的安排简化了事务调度,并相应地提高了RDRAM的性能。请注意,在这一点上,Rambus还将时钟周期改为了四个时钟周期,称为八倍周期(octcycle)。图7.17显示了一个读取事务的时序图。
Concurrent RDRAM读取操作。Concurrent RDRAM在快速时钟的两个边沿传输,并使用一个1字节的数据总线在数据和地址之间进行多路复用。
“Concurrent”设计的少数限制之一是数据总线有时会携带一小段地址信息,因为1位地址位太窄。这一限制已经在Rambus最新的DRAM中解除。Concurrent RDRAM引入的分段排列已经延续到最新的RDRAM版本,称为“Direct RDRAM”,它将数据段的宽度增加到2字节,地址段的宽度增加到5位,控制段的宽度增加到3位。这些段仍然是分开的和专用的,类似于JEDEC风格的组织,而控制和地址段的宽度足够宽,以至于数据总线的数据段永远不需要携带除数据以外的任何内容,从而增加了通道上的数据吞吐量。总线操作速度也随着年份而改变,最新的设计速度是最初速度的两倍以上(总线频率为500 MHz)。
直接RDRAM中的每个半行缓冲区在相邻的存储区之间共享,这意味着相邻的存储区不能同时处于活动状态。这种组织的结果是增加了行缓冲区未命中率,与每个存储区一个开放的行相比,但它通过减少行缓冲区占用的芯片面积,降低了成本,而不是16个完整的行缓冲区。图7.18显示了读取操作的时序图。
Double Data Rate DRAM (DDR SDRAM)
终于到了DDR了
双倍数据速率(DDR)SDRAM是IBM高速切换模式的现代等效物。DDR通过在时钟的两个边沿(上升沿和下降沿)传输数据,从而将单倍数据速率SDRAM可用的数据带宽加倍,类似于切换模式的双边沿时钟方案。DDR SDRAM在所有其他特征上与单倍数据速率SDRAM非常相似。它们使用相同的信号传输技术、相同的接口规范以及DIMM载体上的相同引脚布局。然而,DDR SDRAM从SDRAM中读取和写入SDRAM阵列的内部传输分别为SDRAM的两倍。图7.19显示了CAS-2读取操作的时序图。
7.2.3 Structural Modifications Targeting Latency 针对延时做的结构性修改
以下的DRAM分支代表了降低DRAM部件延迟的尝试,方法要么是通过提高电路速度,要么是通过缓存等方式来改善平均延迟。
Virtual Channel Memory (VCDRAM)
虚拟通道在DRAM上添加了一个大的SRAM缓存,用于缓冲可能在未来需要的大块数据(称为segments )。SRAM段缓存由内存控制器显式管理。这个设计在DRAM访问协议中增加了一个新步骤:行激活操作将数据页移入感应放大器;“prefetch” and “restore” 操作(分别为数据读取和数据写入)以一个段为单位在感应放大器和SRAM段缓存之间移动数据;列读取或写入操作在段缓存和输出缓冲区之间移动一列数据。除非应用程序需要的所有数据都适合于SRAM段缓存,否则这个额外的步骤会增加读取和写入操作的延迟。
理解:提出了prefetch和restore的概念。把数据先提前缓存在颗粒内部。
Enhanced SDRAM (ESDRAM)
类似于EDO DRAM,ESDRAM在DRAM核心中添加了一个SRAM锁存器,但是EDO将锁存器添加到列多路复用器之后,而ESDRAM将其添加到列多路复用器之前。因此,锁存器的宽度与DRAM页一样宽。尽管代价高昂,但这种方案允许更好地重叠活动。例如,它允许行预充电立即开始,而无需关闭行(行仍然在SRAM锁存器中处于活动状态)。此外,该方案允许一种写入绕过机制,即传入的写入可以在无需关闭当前活动行的情况下进行。这种功能对于写回高速缓存非常有用,因为在任何给定时间写入的数据不太可能与当前从DRAM中读取的数据位于同一行中。因此,处理此类写入会延迟对同一行的未来读取。在ESDRAM中,未来对同一行的读取不会延迟。
MoSys 1T-SRAM
MoSys(即Monolithic System Technology)创建了一个名为“1-transistor SRAM”的设计(实际上不太可能,但这个名字很引人注目)。他们的设计在一个非常快速的DRAM核心周围包装了一个SRAM接口,以创建一个与SRAM兼容的部件,接近了DRAM的存储和功耗特性,同时接近了SRAM的访问时间特性。快速的DRAM核心由大量独立的存储区组成;减小存储区的大小可以加快其访问时间,但增加存储区的数量会增加控制电路(从而增加成本),降低部件的有效密度。没有其他DRAM制造商像MoSys那样极端,以创建一个快速的核心,因此,MoSys DRAM是目前存在的最低延迟DRAM。但是,它的密度低,因此OEM尚未大规模在台式机系统中使用它。它的特点是高速嵌入式系统和游戏系统(例如,任天堂GameCube)
Reduced Latency DRAM (RLDRAM)
Fast Cycle DRAM (FCRAM)
Fujitsu’s 的快速周期RAM(FCRAM)通过将数据阵列分成子阵列之一来实现低延迟的数据访问,只有一个子阵列在行激活期间被驱动。这类似于减小数组的大小,因此对访问时间产生影响。数据阵列的子集由通过在行地址中添加更多位来指定,因此该机制本质上是将列地址的一部分放入行激活中(例如,将列选择功能的一部分移入行激活)。与RLDRAM不同,该部件具有DIMM规范,并且在所调查的DRAM部件中具有最高的DIMM带宽。
7.2.4 Rough Comparison of Recent DRAMs
后来的先进DRAM设计层出不穷,主要是因为有机会满足寻求高性能的市场需求,并且工程师显然已经耗尽了早期演进的设计思路,即相对廉价实施但能产生巨大性能优势的设计思路。DRAM行业倾向于构建最简单的设计来实现所需的优点。目前,在高性能设计领域,占主导地位的DRAM是DDR。