垂直分层晶闸管(Vertical Layered Thyristor),即VLT存储单元,是Kilopass研发出的一种可以显著降低动态随机存取存储器(DRAM)的成本和复杂性的新型存储单元。这是一种静态存储单元,无需刷新操作;它可以使用现有晶圆工厂中的设备来制造,不需要任何新的材料或者工艺。
与普通DRAM相比,VLT存储阵列能节约多达45%的成本;这些成本节约来源于更小的VLT存储单元,以及驱动更长行与列的能力所带来的存储阵列效率的提升。然而在DRAM 这样成熟的市场中,想要发挥这些优势,VLT 产品的设计制造必须依据行业标准,确保与不同供应商的存储器产品兼容。
目前,基于VLT技术的存储器已具备与现有LPDDR4制式完全兼容的能力。VLT存储器可以模拟传统DRAM中的分组,并且兼容其时序。设计VLT电路时,设计者可以选择设计标准DDR控制器,或是成本较低的简化版控制器。若使用标准控制器,由于不需要刷新,VLT存储器会将刷新序列忽略。系统其他部分会将VLT DRAM视为通用DRAM,无需任何改变。
为了帮助大家理解如何使用VLT存储单元构造LPDDR4内存,我们先回顾一下传统DRAM以及LPDDR4的工作方式。很多内容也许熟悉DRAM的人已经有所了解,但实际运用时还是有一些细微的不同,我们在这里先定义一些准则与术语,方便大家理解。
DRAM运行的很多方面取决于其电容存储单元。首先电容的漏电特性导致了刷新的存在,其次存储单元的基本工作方式之一是读取,它会影响存储器的其他工作方式。
下图为一个电容存储单元的原理图,左右图分别代表了读取1和读取0。电路通过电荷分配读取存储数值。位线(bitline)首先被预充电到一个在0和1之间的电压值,然后通过打开读数晶体管来选择一个存储单元,使电荷可以在位线与存储单元间流动。如果位线电压高于存储单元电压,那么负电荷就会从存储单元上流出到位线上;如果位线上的电压低于存储单元,那么负电荷就会从位线上流进存储单元。
图1:传统DRAM存储单元电荷分配原理。(图中绿色箭头所示为电流,即负电荷流动的相反方向。)
Wordline: 字线
Select: 选择
Bitline: 位线
storage capacitor: 存储电容
Read1: 读取1
Read 0: 读取0
这种电荷转移改变了位线上的电压,通过传感锁存得到最终所读的数值。然而在存储电容中失去或者获得的电荷,改变了节点上原有的电荷,这意味着读取的过程是破坏性的。因此,每一次读取之后,必须通过回写操作恢复存储单元中的电荷。
LPDDR4标准是第四代双倍数据速率(DDR)DRAM的低功耗版本标准,它通过总体架构,定义了内存芯片的高层结构,以及如何安置双输入线存储模组(DIMM)。
通常分析DRAM有两种方式:抽象物理器件的细节,着重分析其逻辑功能,或者通过器件的物理性质来分析内存阵列的特性。VLT和传统DRAM虽然物理结构不同,但是必须实现相同的逻辑功能,因此我们首先用第一种方式来分析。
一块LPDDR4存储器芯片拥有8Gb的存储容量,它通过两个4Gb的独立存储串列(channel)来实现。每个串列拥有8个存储库(bank),其中每个存储库包括32K存储页(page),每页上有16K存储位(bit)。每个存储库的总容量为512Mb。
图2:典型的DRAM架构和层级。
4-Gb channel: 4-Gb存储串列
Bank: 存储库
Pages: 存储 页
一块完整的LPDDR4存储器芯片包括两个总单元:存储阵列和DDR接口。一部分操作会影响到存储阵列,而另一部分则会影响到接口。DDR接口可以同时与内存阵列以及外部系统进行通信。
图3:LPDDR4的逻辑组织架构,图中将存储阵列和DDR接口分开。箭头代表一次读取操作以及回写。
Memory array: 存储阵列
Sense-amps/latches: 传感放大器/锁存器
DDR Interface and control: DDR接口和控制
Shadow register: 影寄存器
DDR Register: DDR寄存器
Output register: 输出寄存器
上图说明了这种关系,即用DDR寄存器作为外部系统和存储阵列的主接口。读取数据时,阵列数据会先被加载到DDR寄存器之中;进行写操作时,所写数据会先从外部被写进寄存器。
由于传统DRAM中读取操作会破坏原数据,每一次读取之后都必须进行一次回写操作,以恢复原来的数据。读取之后,DDR寄存器的内容被复制到影寄存器(Shadow Register)。当外部系统读取DDR寄存器中的数据时,影寄存器负责将数据回写到所选页。同样,写入数据时,DDR寄存器中的数据会被传输到影寄存器中,这样具体执行写入操作时DDR寄存器就可以载入新的数据。
读取一页数据需要涉及一系列活动,它类似于两个嵌套的软件DO循环。每一个存储页都被分成成批(burst)读取的、256bit一组的存储组。这样一来,同一个库中的16Kbit存储页将有64个批存储组。通过顺序读取每一个批存储组,可以读取一个完整的存储页,这类似于外部DO循环。
图4:每个存储页由批存储组构成,其读取方式是顺序读取;每个批存储组都被分成16个16位字传送到I/O。
Burst group: 批存储组
Page: 存储页
每个批存储组被加载到256位的DDR寄存器之中,该寄存器被分为16个16位字,其内容被顺序读出,在每一个时钟边缘提供每一个16位字。这种操作方式是内部的DO循环。
每一行的地址(RAS)负责选择存储页。每一列的地址(CAS)则同时选择批存储组并设置从DDR寄存器中读取的开始字,因为不是必须从DDR寄存器的左侧开始读取。
有一点需要注意,即在影寄存器执行回写或是写入DDR寄存器中载入的数据的同时,DDR寄存器已经开始从存储阵列中读入数据或是从外部载入所写数据。
LPDDR4功能本质上包含四项基本操作:启动、读取、写入和预充电。这些操作的其他变换形式,比如成批读/写和自动预充电等,可能构成一个更长的指令列表,但是并不带来新的技术挑战。此外,还添加了刷新、训练和模式寄存器操作等维护性指令,以应对复杂的操作命令。
这些基本操作的简要介绍如下:
• 启动:它通过选择特定的字线(wordline)将一页数据“打开”。该存储页上的内容被传感并且锁存,然后该页保持打开,用来在读取操作时进行回写,或者在写(即读取-修改-写入)操作时被重新写入。• 读取:它标志着开始读出数据,每一个批存储组的数据会从传感放大器中被加载到DDR寄存器中。紧接着DDR寄存器开始顺序读取,每次读取一个16bit的字。与此同时芯片通过影寄存器在仍保持着打开状态的页上进行回写。
• 写操作:数据被载入DDR寄存器,每次16字。随后数据被转移到影寄存器中,以便之后写入打开页。写入时,如果需要,DDR寄存器可以同时载入新的256bit数据,以便进行下一次写入。
• 预充电:在最后一个批存储组被读或者写之后,存储阵列必须为下一次操作做好准备。在写的情况下,必须等待一个写恢复延迟,以确保最后的批存储组在继续其他操作前能被成功写入。这时打开的存储页已被关闭,使位线能够自由浮动,并能重新充电恢复到VDD/2电位,如上所述。
请注意只有启动操作才涉及存储器阵列传感放大,读操作只涉及在锁存器与DDR寄存器之间传输数据,以及读出DDR寄存器的数值。
针对某些操作顺序,DDR的时序可能会很复杂。但如果相邻读取操作发生在不同存储库的数据之间,时序则会大大简化。因为在从下一个存储库中读取数据前,不需要在原有的存储库中等待回写和预充电。时序控制最困难的是同一存储库中的连续读写。
当单个存储库的逻辑容量达到32K行乘以16K列时,在已知现有技术下,物理上已经不可能制造这样的存储阵列。这是因为
• 驱动晶体管的驱动能力有限,在保持性能的前提下,只有一定数量下的内存单元可以被驱动。• 传感放大器只能支持有限数量的存储单元。存储单元数量太多时,电荷分配带来的电压变化会减小,并被噪声淹没。
因此,为了确保存储器芯片可靠并且可以制造,每一种存储器应用都受到不同程度的物理尺寸限制。达到这种上限的存储阵列被称作“存储阵列片”,简称为MAT。每一个MAT是一个功能齐全的阵列,包含字线和位线的译码器,以及传感放大器。
以一种采用二十余纳米工艺节点的普通DRAMMAT为例,其位线和字线的规模分别达到了1024条和620条。字线数量不是2的整数次方,这带来了一些解码方面的挑战。该芯片或许只用了最后的几个MAT,但这是一个可以忽略的芯片实现上的细节。
通过拼接MAT可以制造一个16×53大小,总共包含848个MAT的存储库。一整页代表一行MAT中的一行存储单元:打开一页时,需要启动同一行存储单元上相应的字线。
图5:一块传统DRAM上的物理布局。
16 MATs with 1K bitlines each: 16个MAT,每个都有1K位线
Conventional MAT: 传统的MAT
53 MATs with 618 wordlines each: 53个MAT,每个都有618个字线
在了解了这些背景知识后,我们转到全新的Kilopass存储单元,以及它如何打造与此相同的存储库。
Kilopasss的全新存储单元基于一种垂直分布的晶闸管(也被称为半导体控制整流器,或者SCR)。这种pnpn堆叠构建于一个p-阱之上,它可以带走来自下部n型层中的任何空穴。
图6:VLT存储单元:一个带有写入支持PMOS晶体管的晶闸管。
p-well: p阱
通过在浅沟道隔离(STI)结构中植入一个预埋的字线,下面的n型层被连接到一个字之中。预埋字线与外部铜金属M1层字线通过相对电阻比较大的金属钨来连接。这样一来,我们可以制造比传统DRAM更长的字线。
由于传感机制非电荷分配,传感放大器可以承受更长的位线。因此,这种技术可以支持大达2Kbit宽,4Kbit长的MAT ——远大于传统的DRAM MAT。用更大的MAT拼接成的存储芯片冗余更少,进而使VLT内存的阵列效率达到77%(示例中二十余纳米节点DRAM只有64%)。
MAT容量增大后,一个LPDDR4存储库就可以用更少的MAT来组成。单纯按照比特数计算,一个基于VLT技术的存储库将包含64个MAT,与之相对的是普通DRAM的存储库需要配置848个更小的MAT。余下的问题就是如何最好地配置这些MAT。
一种配置方式是每个MAT都带有512个支持4K位线的传感放大器,这意味着每个传感放大器都有多路复用器去在8条位线中进行选择。其中多路复用器的选择基于CAS地址,将图3中的存储阵列原理图进行修改,新的原理图如下:
图7:为VLT存储器添加位线多路复用器。
因此对于每个被选定的存储页,每个MAT中八分之一的位线都被选中,这与普通DRAM实现方式中所有位线都被选中相反。这种更高效的传感放大器利用方式在普通DRAM中是不可能的,因为所有的位线都必须被读出,以实现回写目的。由于VLT读出不是破坏性的,不需要回写操作,因而多个存储单元能够共享传感放大器。
另一个问题是如何在一个MAT物理阵列中配置这些MAT。基于VLT MAT的灵活性,物理上配置这些MAT可以不与逻辑上的配置完全吻合。只要合理安排各条总线的路径,任何形式的配置都是可能的。举例来说,一个存储库可以被配置为4×16个MAT阵列,并且传输与传统LPDDR4相同的数据。
下图说明了普通DRAM和VLT技术在存储页选择上有什么不同,前者是选择了一行中的所有MAT,而后者从中选择了一个4×8的单元区块。
图8:存储页选择,其中被选择的MAT为红色:传统DRAM通过行来选择存储页,而VLT DRAM则通过单元区块来选择存储页。
由VLT制造的LPDDR4,在外部操作上与传统LPDDR4完全相同。内部操作会发生变化,例如不再需要回写和预充电,但这不会太影响DDR控制器;如果满足了VLT的时序要求,其内存的逻辑组织方式与传统DDR完全一致。
VLT存储单元最明显的优点之一就是其不需要刷新。然而刷新已经成为DRAM运行中自带的操作;无论存储器是处在睡眠状态或是被接通,必须进行刷新操作,防止数据丢失。
完整的DDR控制器状态机说明了刷新对运行的影响,如下图所示,所有红色的状态都与刷新或者基于刷新的分支相关;借助VLT技术,这些状态都是冗余的,并能够被消除。
图9:传统DRAM实现方式中的LPDDR4状态原理图,与刷新相关的状态及与基于刷新的分支相关的状态都被标注为红色,标注为灰色的状态与接口相关。
下图是一种简化的状态机,其中与刷新相关的状态都已经省去。在设计基于VLT的存储器时,设计者可以采用一个现有的DDR控制器,省去那些不需要的状态;也可以设计一种优化的DDR控制器,去掉所有与刷新相关的电路。后者将占用更小的芯片面积并降低功耗。不管选择哪种控制器,都不会影响其他系统与存储芯片的交互。
图10:移除与刷新相关状态后的LPDDR4状态原理图。
VLT存储单元可以打造一种比普通DRAM存储单元成本更低、功耗也更低的存储器,目前VLT 存储芯片已可以与现有的LPDDR4存储器完全兼容。通过适当设计架构、命令以及时序,VLT存储芯片可与传统存储芯片无差别地应用在实际系统上。
通过一个可以翻译内部操作的接口,一个基于VLT的存储阵列可以与标准LPDDR4控制器配合使用;如果设计一款新的LPDDR4控制器,则可以节约成本与功耗,同时保证从外部看来,存储控制器保持完整,进而保证现有驱动仍能继续工作,只在内部忽略了与刷新有关的操作。