X-NAND是什么?
NAND目前根据bit/cell数量分为:SLC、MLC、TLC、QLC、PLC等。随着bit数量增加,虽然容量得到了大幅的提升,成本也有所下降,但是读写性能却下降的更快。特别在QLC到PLC的转换,读写性能下降幅度远超成本下降趋势,也就是说,PLC的成本还没达到预期的优势。
在应对QLC性能下降带来的影响,通常的做法是给QLC配备SLC Cache,来掩盖QLC性能大幅下降的事实。在正常的workload下,QLC配备的SLC Cache足以保证QLC的性能不会很差,基本维持在SLC的读写性能。但是,在超大压力顺序写场景下,SLC Cache的数据还没来得及搬到QLC时,已经被打满了,这个时候性能就会出现断崖式下降,只有SLC性能的12%。
那么,如何增加写性能呢?常规做法是在NAND array Bit Line方向增加plane的并发度,多个page一起写。另外,也可以通过减少Bit line的长度来降低RC延迟,这样可以提升读的性能。
但是,增加多个plane,相应的也要增加page buffer,这部分也会增加相应的成本,在传统的page buffer架构中,每个page buffer连接一条bit line完成NAND的读写操作,读写性能也受限于page buffer的数量。如果要想要达到16 plane的并发读写,die size将会增加3倍。很显然,这种方式不可持续,无法成为有效的解决方案。
为了解决这个问题,一家成立于2012年的美国Neo半导体公司,在2018年研发了X-NAND架构,提升TLC/QLC的性能。在2020的美国闪存峰会FMS上做了第一代的X-NAND展示。
那么,Neo公司的X-NAND架构是怎么样的?如何解决这个传统架构中受限page buffer的读写性能问题?他们的做法是反向操作,把page buffer的大小从16KB缩小到1KB,整个16 bit line共享一个16KB page buffer,在不增加die size的情况下,实现16倍并发的性能。
跟传统的架构相比,X-NAND架构优势非常大:
- 由于Bit line长度缩减到1/16,Bit line的RC延迟也相应减少到原来的1/16,读写功耗也下降到原来的1/16
- 由于实现16-plane的并发能力,读写性能也增加到原来的16倍
在X-NAND架构加持下,SLC-MLC-TLC-QLC-PLC性能都得到大幅的提升,随机读写性能提升3倍以上,顺序提升12-54倍。
特别是在X-NAND QLC的读写延迟可以跟传统SLC NAND处于同一水平。X-NAND TLC NAND甚至比传统SLC的性能更加优异。这实在不可思议!
以上数据是X-NAND在Y方向plane16的数据,不同的Y方向plane数量对性能的提升影响如下:
- 不同数量的plane对顺序读写的性能影响很明显,随着plane数量的增加,性能提升也越高
- 不同数量的plane对随机读写的性能影响不明显,随着plane数量的增加,性能提升基本不变
X-NAND架构这么优异,到底是做了哪些核心的创新呢?我们来一一探讨:
创新点1: Multi-BL Write
这个思路就是如前文的介绍,16 BL共享一个16KB page buffer,数据先写入16个1KB page buffer,再分发到各个BL。核心点就是提升并发度。
创新点2: Multi-Plane QLC Program
这个模块,有两种设计思路:一个是4 data-plane,另外一个是 1 data-plane。分别的运行机理如下:
4 data-plane:每个Group由5个plane组成,在Plane1开始program写的时候,数据D0-D3存放在Plane2-5。在program-verfiy的时候,数据从plane1读出来于Plane2-5存储的数据做作对比。带宽的提升效果是16planes/5planes-group=3倍以上。
1 data-plane:每个Group由3个plane组成,在Plane1开始program写的时候,数据D0-D3存放在Plane3。在program-verfiy的时候,数据从plane1读出来后存放在plane2再与存储在plane3的原始数据作对比。带宽的提升效果是16planes/3planes-group=5倍以上。
针对以上两种data-plane的方式,均是采用5个Group的方式。数据依次加载到这5个Group,在并发完成program写操作。
创新点3: Program Suspend Read
当在program过程中,有读需求,允许把program操作先暂停suspend,优先完成写入数据的读取操作。比如,需要把plane3的数据读取到plane2,数据传输采用page buffer的data lines只有1us,如果在用IO bus则需要16 us。
创新点4: Multi-BL Read
16个bit line一起打开,通过shield devices增加电流,16个bit line并发完成电流的Sensing,最终完成读的操作。
创新点5: Single Latch QLC Read
在传统的QLC NAND读取过程,需要分4次读取,根据cell的on状态(erased)或者off状态(programmed)获得每一次的1或者0,根据4次读取的结果0或1,通过XOR异或门电路运算得到最终的数据结果。
在传统的读取方式下,X-NAND架构读取过程是把plane2-5的数据读取出来,转换成1bit的数据。最终读取带宽提升是16planes/5=3倍以上。
然而在Single Latch QLC Read功能下,只需要一个bit line存储数据,依次记录更新4次的存储读取结果。
- VR0读取过程是,把off状态(prgrammed)的cell设置成0,处于on状态(erased)的cell保持不变
- VR1读取过程是,把off状态(prgrammed)的cell设置成1,处于on状态(erased)的cell保持不变
- VR2读取过程是,把off状态(prgrammed)的cell设置成0,处于on状态(erased)的cell保持不变
- VR3读取过程是,把off状态(prgrammed)的cell设置成1,处于on状态(erased)的cell保持不变
VR3获取的数据就是最后结果,不需要传统NAND架构中的XOR运算。
在基于Single Latch QLC Read的读取方式下,X-NAND架构读取过程是把plane1数据读取出来存放在plane2,完成数据读取。最终读取带宽提升是16planes/2=8倍。
创新点6: SLC/QLC Parallel Program
X-NAND采用了3-Bank的设计,每个Bank由8个planes组成。在Bank1进行SLC program写入数据是,Bank2则执行SLC page的数据到QLC page数据的搬迁,Bank3负责对SLC搬迁后无效数据的擦除。
这样的设计,QLC数据的写入过程获得的是SLC的速率,SLC pages也永远不会出现被写满的状态,持续享受到SLC的速率。
X-NAND架构出了性能提升优势,在稳定性方面也有自己的特点:
- 传统的NAND架构,每BL的cell的program写操作,都会其他cell带来写干扰,写干扰严重的话也会影响数据错误。
- X-NAND架构因为采用的是16-bit line并发写入,也就消除了单个BL program写入对其他BL的写干扰影响。
根据以上的数据和原理分享,X-NAND整体的优势,集QLC/SLC所长成就自己,也就是获得QLC的容量优势同时拥有SLC速率。
自从Neo公司在2020 FMS峰会展示第一代X-NAND,他们在今年的FMS峰会又再次展示了X-NAND第二代技术。
- 第一代X-NAND主要采用的4-plane的SLC/TLC并发写,数据先在plane1-3写入SLC pages,然后在plane4把SLC pages的数据写到TLC pages.
- 第一代X-NAND主要采用的2-plane的SLC/TLC并发写,数据先在plane1写入SLC pages,然后在plane2把SLC pages的数据写到TLC pages. 这样的效果是写性能在第一代X-NAND基础上实现翻倍。
X-NAND前景如何?
既然X-NAND这么强悍,那么X-NAND前景是不是一片光明?目前还不好说。
X-NAND的确有很大的潜力,特别在QLC NAND容量上升后的性能不断下降情况下,如果X-NAND架构可以弥补QLC的性能劣势,肯定加速QLC的普及。X-NAND架构目前所有的数据均是在提升读写性能,针对对性能场景需求较大的消费级市场,可能有一席之地。
但是,X-NAND架构目前在QLC的可靠性方面并没有明显的提升。而寿命可靠性也是QLC最大的劣势,目前只能在以读为主的应用场景发挥QLC的容量成本优势,并不能完成全应用场景的普及和应用。如果X-NAND架构在后续的技术迭代过程中,对QLC的可靠性和稳定性再有进一步的提升和优化,X-NAND将会是未来市场的耀眼明星。
Neo公司已经发布了第二代X-NAND, 支持目前市面上所有的NAND类型SLC/MLC/TLC/QLC/PLC,但市场上仍未有NAND厂商要采用X-NAND架构的消息,也许各大NAND厂商也在研发适合自身的类似技术创新。技术改变世界,让我们拭目以待!