内存是计算机系统设计中的重要主题。在IMEC,我们为独立以及嵌入式应用程序开发了多种新兴的内存技术。包括用于高速缓存级应用的MRAM技术,改进DRAM设备的新方法,填补了DRAM和NAND技术之间空白的新兴存储器,用于改进3D-NAND存储设备的解决方案以及用于归档类型应用的革命性解决方案,以满足未来Zettabyte时代的内存需求。
在本文中,我将只使用基于动态随机存取存储器(DRAM)的存储器,该存储器通常用作计算机系统中的主内存。对于这种类型的内存,我想从架构的角度出发,以便更全面地认识它们。在提供了一些背景信息之后,我将研究不同的内存标准及其年代,以确定一些常见的趋势和瓶颈。
在探究不同的DRAM之前,让我们基于O. Mutlu教授的演讲,从基础知识开始入手。
背景:
存储单元:任何存储器都是使用存储单元建立的,这是一种半导体结构,仅存储1位,因此得名。对于DRAM存储器,存储单元由一个电容器和一个晶体管组成。电容器用于存储电荷,晶体管用于访问电容器,可以读取存储了多少电荷,也可以存储新的电荷。字线(wordline)始终连接到晶体管栅极,控制对电容器的访问。位线(bitline)连接到晶体管的源极,可读取存储在电池中的电荷,或在向电池写入新值时提供电压。这种基本结构非常简单且体积小,因此制造商可以在模具上加工大量此类材料。一个缺点是单个晶体管不能很好地将电荷保持在小电容器中。它将使电流从电容器泄漏或流向电容器,从而随着时间的流逝而失去其明确定义的充电状态。通过定期刷新DRAM存储器可以避免此问题,这意味着读取存储器的内容并将其重新写回。细心的读者可能还注意到,当从电容器读取电荷时,电荷消失了。从DRAM单元读取值后,应再次写入该值。这就是将DRAM命名为“动态”的原因。
存储单元可组合成大型的矩阵状结构。长字线和位线彼此交叉,并且在每个交点处处理一个存储单元。在字线上施加电压会选择所有对应的单元,这会将它们的电荷置于各自的位线上。该电荷将非常轻微地改变每个位线的电压。使用感测放大器可检测到这种轻微变化,该结构将电压的小正变化放大到高电压(代表逻辑1),并将电压的小负变化放大到零电压(代表逻辑0)。读出放大器将逻辑值存储到称为行缓冲的存储器结构中。行缓冲的作用就像是一个高速缓存,其中保存的值只能是从单个字线上的存储单元中读取的值,这个值在被读取后会在该存储单元中消失。传感过程本质上是一个缓慢的过程,电容器越小且位线越长,该过程花费的时间就越长。该传感时间决定了DRAM访问时间,在过去的几十年中,它一直保持着相同的值。每一代DRAM的可用带宽不断增加,是通过增加DRAM芯片中的并行性实现的,而不是通过减少单元访问时间来实现的。但是,在深入探讨这个问题之前,让我们看一下如何使用大量这些存储单元来构建内存系统。我在这里描述的体系结构是针对使用内存模块的典型桌面系统的。但对于其他DRAM类型,或不使用模块的大多数架构,也可以用相同的术语来描述。
被用于处理器上的DRAM中有一部分逻辑专用于存储控制器。这个逻辑负责处理从CPU到主存的所有访问。处理器可以具有多个内存控制器。内存控制器具有1个或多个内存通道。每个存储通道均由命令/地址总线和数据总线(默认情况下为64位宽)组成。我们可以在该通道上连接1个或多个内存模块。每个内存模块由1或2个 rank组成。rank包含许多DRAM芯片,这些芯片组合在一起可以在每个周期内提供足够的bit以填充数据总线。在正常情况下,数据总线为64 bits,每个芯片提供8bits(所谓的x8芯片),一个rank将包含8个芯片。如果超过一个rank,则rank在同一总线上是多路复用的,因此它们不能同时将数据放入总线。每个rank芯片都是同步运行的,这意味着它们始终执行的是完全相同的命令,因此无法单独寻址。这对于以下内容很重要:每个芯片由几个存储体(memory bank)组成,如前文所述,这些存储体是由具有字线、位线、读出放大器和行缓冲区的大矩阵位单元组成的。由于每个芯片都是由排列整齐的芯片组成,因此“存储体”一词也可以指同一rank的8个芯片上的8个bank。在第一种情况下,我们可能会使用“physical bank”这个术语,而在后一种情况下,我们更倾向于使用“ logical bank ”这个术语,但这个术语在文献中的定义不是很明确。
虽然内存库中还存在着更小的结构,但在本文中我不讨论它们。借助所有先前的术语,我们现在可以讨论不同的DRAM类型和世代,以及它们如何相互改进。再次,让我们首先从用于PC的常规DRAM模块开始。
DRAM标准
常规DDR DRAM内存已经存在很长时间了,但是我不会为您提供完整的历史。我将很快回顾单数据速率(SDR)存储器,然后再介绍双倍数据速率(DDR)。关于SDR,我们需要了解的是接口和数据总线的时钟(IO时钟)与内部存储器的频率(内部时钟)相同。这种存储器会受导其内部存储器访问速度的限制。
第一代DDR旨在在每个IO时钟周期内传输两个数据字,第一个字在时钟的上升沿,另一个在时钟的下降沿。设计师通过引入预取的概念来做到这一点。在DRAM bank和输出电路之间插入了一个预取缓冲器。它是一个小型缓冲器,可以存储原始SDR设计中每个周期要放在总线上的位数的2倍。如果是x8芯片,则预取缓冲区的大小为16位。我们称其为2n 预取缓冲区。在完整的DRAM row(例如2k column)的单个内部读取周期中,有足够多的数据来填充此预取缓冲区。在该预取缓冲区中,有足够的数据在时钟的两个边沿上用一个字填充总线。
DDR2采用了相同的预取思想,现在预取缓冲区为4n。与内部时钟相比,这使设计人员可以将IO时钟加倍,并且仍然在每个周期将数据填充到数据总线中。DDR3进一步推动了同样的想法,再次将预取(8n)和IO时钟加倍,现在是内部存储器时钟的4倍。
图2. DDR中的预取
但是,我们继续按照这种方法进行推进,存在着一定的局限性。将预取缓冲区再加倍至16n,则意味着对于每个读取命令,将有16倍64 bit向处理器传输。这是高速缓存线路(用于处理器缓存的基本数据单元)的两倍大小。如果只有一条高速缓存线路包含有用的数据,那么传输第二条高速缓存线路将会浪费大量的时间和精力。因此,DDR4没有将预取加倍,而是应用了另一种技术:存储体分组。
该技术引入了多组bank,每组都有自己的8n预取缓冲器,通过一个多路复用器从正确的组中选择输出。如果来自控制器的内存请求被交错,以便它们在连续的请求中访问不同的组,则IO速度可以再次加倍,现在是内部时钟速度的8倍。
图3:bank group
那么,DDR5的下一步是什么呢?DDR5还旨在使IO速度提高一倍?嗯,DDR5的目的是借用LPDDR4中已经实现的一种技术,我们称之为通道拆分。64位总线分为2个独立的32位通道。由于每个通道现在仅提供32 bit,因此我们可以将预取增加到16n,这将使得访问粒度达到64字节,正好等于高速缓存线的大小。预取的增加再次允许更高的IO时钟速度。
但提高IO时钟速度并不容易。与高频信号有关的多个挑战已显现出来,例如信号完整性,噪声和功耗。这些可以通过几种技术来解决,例如片上终止、差分时钟以及与处理器进行更紧密的内存集成(表1)。这些技术主要源自其他DRAM类型,即LPDDR和GDDR,但我将更加关注于集成。
表格1
LPDDR LPDDR代表低功耗双倍数据速率。顾名思义,该标准的主要思想是降低内存的功耗。这可以通过多种方式完成。
常规内存的第一个区别是内存与处理器的连接方式。LPDDR存储器与处理器紧密集成在一起,或者焊接在主板上,靠近CPU,或者它直接在处理器(在这种情况下,通常是SoC)的顶部以 package-on-package封装的形式实现,这种形式越来越常见。紧密的集成可减少将内存连接到处理器的长导线中的电阻,从而降低功耗。
第二个区别是通道宽度。LPDDR存储器没有固定的总线宽度,尽管最常见的是32位总线。与常规存储器相比,这是一条较小的总线,可节省功耗。同样,在存储器中使用较低的电压,这也对功耗产生很大的影响。最终,通过各种方式优化刷新操作,例如温控调整的刷新,部分阵列自刷新,深度掉电状态等等,大大降低了LPDDR存储器的存储器待机功耗。我现在不会更深入地研究这些技术,但是通常它们会在一些响应时间和较低的待机功耗之间进行权衡,使其从更省电的状态中“醒来”。
表2显示了LPDDR存储器的世代变化,实现了与上一节中讨论的相同的技术来提高性能。但是,LPDDR4是引入16n预取和通道分割的第一个标准,而LPDDR5有望成为引入bank分组的第一个LPDDR标准。
表格2
GDDR GDDR代表图形两倍数据速率,这意味着该标准适用于图形卡中使用的内存。如今,它们对于任何具有高带宽需求的应用都很有兴趣,因为这是他们关注的重点。通过焊接在PCB上,GDDR内存也与处理器(在本例中为图形处理器)达成了紧密集成。这些不是在GPU之上实现的,因为在这种情况下将很难达到所需的容量,此外,在这种情况下也很难进行散热。与典型的DDR芯片(例如32位)相比,每个GDDR芯片具有更大的宽度,并且每个芯片直接连接到GPU,而无需在固定的64位大小的总线上进行多路复用。这意味着在图形卡上具有更多的GDDR芯片,也意味着具有更大的总线。消除连接的多路复用还可以提高这些连接的频率,从而在GDDR存储器中实现更高的IO时钟频率。通过使用较小的存储器阵列和较大的外围设备,可以通过提高内部读取速度来实现更高的IO时钟速度,从而降低GDDR芯片的存储密度。紧密的集成意味着图形卡的最终容量将受到更大的限制,因为只有12个GDDR芯片可以紧密地安装在大型GPU周围。
在整个GDDR代(表3)中,使用与DDR中相同的技术来提高内存带宽。第一个GDDR标准是基于DDR的GDDR2。GDDR3基于DDR2。GDDR4几乎不存在,可以跳过此处。GDDR5基于DDR3,并且在过去一段时间中非常流行。它实现了差分时钟,可以一次打开两个内存页面。GDDR5X是GDDR5的中代性能增强,它引入了具有16n预取的四倍数据速率(QDR)模式,但代价是访问粒度更大,这对于GPU来说不成问题。然后,GDDR6与LPDDR4一样使用了拆分通道。这在同一总线上提供了两个独立的较小通道,从而实现了较小的访问粒度,从而成为16n预取QDR模式的标准。这意味着GDDR6可能更恰当地命名为GQDR6。
表格3
3D革命
先前讨论的所有事情都发生了,而目前没有发生任何3D革命。3D在半导体术语中可能有很多含义,但目前它主要是指使用硅通孔(TSV),它们是管芯中的垂直互连,可以使用管芯之间的微凸点进行连接。现在,两个彼此叠置的管芯可以与许多非常小的垂直互连进行通信。这是全新的设计和体系结构。与前面讨论的DRAM类型相结合。最著名的是高带宽内存(HBM),它是GDDR的3D对应物。混合存储立方体(HMC)是一种被提议的3D模型,按照计划,它可用于与通用DDR类似的应用,由美光公司开发,但在2018年被取消。宽I / O是三星推动的JEDEC标准,是用于SoC中LPDDR存储器的3D对应物,但我还没有听说过真正实现的消息。
HBM
HBM与GDDR有很多共同点。内存芯片也与GPU紧密集成。它们也没有放在GPU之上,因为我们仍然需要大量的容量,并且需要散热芯片。
那有什么不同呢?首先,不是将内存芯片放置在靠近GPU的PCB上,而是把它们放在将芯片与GPU连接的插入器上(图5)。如今,通常使用无源硅中介层,它是一个大型硅芯片,但没有任何有源组件:它仅具有互连。这种插入器的优点是我们可以在其上面进行更多的并行互连,而这些互连不需要消耗大量的功耗。因此,可以创建非常宽的总线,这在PCB上是不可能的。这种插入器虽然很容易创建,但仍然是一块很大的硅片,因此成本更高。
其次,可以堆叠存储芯片,从而在水平面上的小区域实现高容量(图6)。这些芯片具有大量的TSV,将堆栈中的芯片彼此连接,逻辑芯片位于底部。然后,该逻辑管芯再次与中介层上的宽总线连接,从而实现了存储芯片和GPU之间的高带宽。实际上,总线足够宽,可以将存储芯片的IO时钟放宽到较低的频率。这样,再加上与GPU的非常短的互连,可以在使用HBM时,将每bit的功耗降至更低(约3倍)。
表4列出了HBM一代的一些关键规格。当前,HBM2存储器可用。有趣的是,三星最近发布了HBM2e内存,该芯片的芯片规格更高,每个管芯的容量更大(16Gb),数据传输速率更高(每个堆栈410 GB / s)。
HMC
尽管美光公司取消了在HMC标准上的推动,但我还是要说几句话。HMC是常规DDR存储器的3D对应物,在未来的服务器中可能会备受欢迎。这种看法在行业中并不是很明确。HBM实际上专注于带宽,它需要紧密集成,权衡容量和可扩展性。这称为近存储器。HMC专注于容量,可以轻松地将更多内存堆栈插入服务器,就像将更多DDR内存轻松插入具有空闲插槽的主板一样。它提供了高系统总存储容量所需的松散集成。有时称为远存储器。
除了这种相似性之外,HMC是与DDR差别最大的标准,比本文中提到的任何其他标准都要大。它使用的不是DDR信号,而是使用内存包来进行处理器和内存块之间的高速串行链路发送。通过这种方式,可以在有限的互连条件下实现更高的容量。而且,内存控制器可以完全集成在每个立方体的基础芯片中,而不是像DDR一样位于CPU芯片上,或者像HBM一样分布在GPU和内存堆栈上(图8)。
宽I/O
宽I / O是LPDDR存储器的3D对应物,它选择了集成以达到可能的最低功耗。预计这些存储器将使用TSV直接连接到CPU芯片,直接集成在SoC之上。同样,根据TSV技术的密度和大小,实现很宽的总线也是可能的。但是,这种集成也将需要SoC中的TSV,这会消耗大量宝贵的逻辑区域,因此非常昂贵。这可能是为什么我尚未看到使用此技术的任何商业产品的重要原因。有趣的是,第一个Wide I / O标准实现了SDR接口,但是第二代标准则又转向了DDR接口。
结论
希望您已经了解了更多不同的DRAM。最后,每个标准都实施了相同的思想以提高每一代的带宽,包括诸如更大的预取缓冲区,存储体分组,通道划分,差分时钟,命令总线优化和刷新优化之类的技术。每个标准都有自己的重点——第一类是关注容量和灵活集成(DDR和HMC),第二类是着重于最低功耗(LPDDR和Wide I / O),第三类的重点则在于最高带宽(GDDR和HBM)。
有趣的是,对于每个目标市场,3D技术为该表带来了什么。3D集成允许宽总线和低电阻,低噪声的互连。尽管技术和收益是革命性的,但在大多数情况下,架构原理和权衡实际上并没有太大不同。
扫一扫,获取最新资讯!
我的评论
最新评论