什么是NAND Flash? NAND Flash现代存储技术的基础知识
脚本之家
在数字世界,用户存储在SSD上的数据最终会被保存至非易失性存储介质,而存储介质的特性直接影响SSD的主控和固件设计。NAND Flash是当前电子设备中常见的非易失性存储介质,下面我们将为大家讲解NAND Flash的基本原理和特性。
什么是NAND Flash?
Nand Flash是一种非易失性随机访问存储介质,基于浮栅(Floating Gate)晶体管设计,通过浮栅来锁存电荷,电荷被存储在浮栅中,他们在无电源供应的情况下仍然可以保持。数据在Flash内存单元中是以电荷的形式存储的,存储电荷的多少取决于浮栅的外部门所被施加的电压,其控制了是向存储单元中充入电荷还是释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
- 对于NAND Flash的写入,就是控制Control Gate去充电(对CG加压),使得悬浮门存储的电荷够多,超过阈值Vth,就表示0。
- 对于NAND Flash的擦除,就是对悬浮门放点,低于阈值Vth,就表示1。
它是闪存的一种形式,这意味着它可以被电擦除和重新编程。NAND闪存以NAND(NOT-AND)逻辑门命名,该逻辑门用于其基本架构。术语“NAND”源自存储单元以串联连接结构的方式组织,类似于NAND门。该技术广泛用于各种存储设备,例如固态硬盘 (SSD)、USB 闪存驱动器、存储卡和智能手机。
(左图)NAND闪存阵列的示意图。串联连接的器件的垂直string经由由drain select line(DSL)和source select line(SSL)驱动的选择晶体管附接到bitlines 和 sourceline;
(右图)阵列沿着WL方向(a)和串方向(b)的示意性横截面(绿色=硅,红色=浮栅,红色=WL,白色=氧化硅)。(c)显示了具有基本单元(虚线)的阵列布局。
NAND Flash主要特点
存储单元结构
- NAND Flash存储器的基本存储单元是浮栅晶体管。这些晶体管可以存储一位信息(0或1),多个晶体管组合在一起形成存储单元。
存取方式
- NAND Flash允许随机访问,但通常以页为单位进行读取和写入操作。擦除操作则以块为单位进行。
写入和擦除周期
- NAND Flash可以经受数万到数十万次的写入和擦除周期,但它的寿命通常比NOR Flash要短。
速度
- NAND Flash的读写速度通常比NOR Flash快,这使得它更适合用于大量数据的存储。
成本
由于结构相对简单,NAND Flash的单位存储成本较低,因此在大容量存储应用中更具成本效益。
错误率
- NAND Flash比其他类型的存储器更容易出现位错误,因此通常需要错误校正码(ECC)来确保数据的完整性。
接口
- NAND Flash设备通常通过I/O接口与控制器通信,支持多种接口标准,如ONFI(Open NAND Flash Interface Working Group)和Toggle Mode。
应用
- 由于其高存储密度和成本效益,NAND Flash在消费电子、企业存储解决方案和嵌入式系统中得到了广泛应用。
NAND Flash工作原理
NAND Flash 的存储单元是一种三端器件,与场效应管类似,包含源极、漏极和栅极,栅极与硅衬底之间有二氧化硅绝缘层,用于保护浮置栅极中的电荷不会泄漏,从而使存储单元具有电荷保持能力。其擦除和写入数据基于隧道效应,即电流穿过浮置栅极与硅基层之间的绝缘层,对浮置栅极进行充电(写数据)或放电(擦除数据)。
NAND Flash 通过在存储单元中存储电荷来表示数据。每个存储单元可以存储一个或多个比特的数据。在写入数据时,电子被注入到存储单元中;在读取数据时,通过检测存储单元中的电荷状态来确定存储的数据。擦除数据时,通过施加高电压将存储单元中的电荷释放掉。
NAND Flash基于浮栅晶体管,浮栅晶体管排列成网格状阵列。每个晶体管有两个栅极:一个控制栅极和一个浮动栅极。浮动栅极由氧化层电隔离,使其能够捕获电子。浮栅上电子的存在与否决定了存储单元的二进制状态,代表“0”或“1”。
读取数据
为了从NAND闪存单元读取数据,需要向控制门施加电压。如果浮栅上存在电子,晶体管将不会传导电流,表示“0”状态。如果浮栅为空,晶体管将传导电流,表示“1”状态。
写入和擦除数据
将数据写入NAND闪存单元涉及称为Fowler-Nordheim隧道的过程。对控制栅极施加高压,使电子穿过氧化层并进入浮栅,将cell设置为“0”状态。擦除数据涉及在相反方向上施加高压,从而从浮栅中去除电子,使cell回到“1”状态。
NAND闪存架构
NAND Flash 的数据是以位(bit)的方式保存在存储单元(memory cell)中,多个存储单元以 8 个或 16
个为单位连成位线(bit line),形成字节(byte)或字(word),这就是 NAND 器件的位宽。
这些位线再组成页(page),每页包含一定数量的字节,通常还有一部分额外的空间用于存储纠错码等信息。多个页又组成块(block)。NAND Flash 以页为单位进行读写操作,以块为单位进行擦除操作。
NAND闪存单元组织在一个串联的字符串中,称为NAND字符串。多个NAND串形成一个块,多个块形成一个平面。NAND闪存芯片由一个或多个平面组成。这种分层结构可实现高存储密度和快速读写操作。
NAND闪存根据每个存储单元存储的位数可分为两种主要类型:
- Single-Level Cell(SLC)
每个存储单元存储一位数据,表示“0”或“1”。与 MLC 相比,SLC NAND 闪存提供更快的读写速度、更高的耐用性和更低的功耗。
- Multi-Level Cell(MLC)
每个存储单元使用多个电压电平存储两个或更多位数据。与 SLC 相比,MLC NAND 闪存可实现更高的存储密度和更低的每比特成本,但代价是读取和写入速度较慢,耐久性降低。
Nand Flash生产过程
Nand Flash是从原始的硅材料加工出来的,硅材料被加工成晶圆(Wafer),一片晶圆可以做出几百颗Nand Flash芯片。芯片未封装前的晶粒称为Die,它是从Wafer上用激光切割而成的小片,每个Die就是一个独立的功能芯片,它由无数个晶体管电路组成,但最终可被作为一个单元封装起来成为闪存颗粒芯片,下面是Nand Flash芯片的详细加工过程。
Nand Flash的物理结构
Nand Flash的容量结构从大到小可以分为Device、Target、LUN、Plane、Block、Page、Cell。一个Device有若干个Die(或者LUN),每个Die有若干个Plane,每个Plane有若干个Block,每个Block有若干个Page,每个Page对应着一个WordLine。
Die/LUN是接收和执行FLASH命令的基本单元。不同的LUN可以同时接收和执行不同的命令。但在一个LUN当中,一次只能执行一个命令,不能对其中的某个Page写的同时又对其他Page进行读访问。下面详细介绍下这些结构单元和之间的联系。Device就是指单片NAND Flash,对外提供Package封装的芯片,通常包含1个或多个Target。
- Target拥有独立片选的单元,可以单独寻址,通常包含1或多个LUN;LUN也就是Die,能够独立封装的最新物理单元,通常包含多个plane。
- Plane拥有独立的Page寄存器,通常LUN包含1K或2K个奇数或偶数Block。
- Block是能够执行擦出操作的最小单元,通常由多个Page组成;Page是能够执行编程和读操作的最小单元,通常是4KB/8KB/16KB/32KB等。
- Cell是Page中的最小操作擦写读单元,对应一个浮栅晶体管,可以存储1bit或多bit数据,主要为颗粒类型。
下图是一个Flash Block的组织架构,每个Cell的漏极对应BL(Bitline),栅极对应WL(Wordline),源极都连在一起。每个Page对应着一个Wordline,通过Wordline加不同电压和不同时间长度进行各种操作。
一个WordLine对应着一个或者若干个Page,对于SLC来说一个WordLine对应着一个Page;对于MLC来说则对应2个Page;Page的大小与WordLine上存储单元(Cell)数量对应。
下图是一款存储芯片的内部布局
由图可以看出一片Nand Flash为一个设备(device),其数据存储分层为:
- 1、1个设备(device) = 1024个块(blocks),块是nand flash擦除操作的最小单位。
- 2、1个块(block) = 64个页(Page),页就是Nand Flash写入的最小单位,对于每一个页,有数据块区域和空闲区域。数据区,就是存储一些数据,对于空闲区,一般也叫做OOB(out of band),这个区域,是基于Nand flash的硬件特性设计的,nand flash在数据读写的时候很容易错误,所以为了保证数据的正确性,必须要有对应的检测和纠错的机制,此机制就被叫做ECC,这个空闲区就是为了存放数据的校验值。
- 3、一个页(Page) = 数据块大小(2K) + OOB块大小(64Bytes)
以此可以计算出如何访问一个物理地址:块大小x块号 + 页大小x页号 + 页内地址
从硬件的图来看,上面这款芯片,其容量是132MB,那么就需要28条地址线,而nand flash只有8个I/O引脚可以用作地址线,所以nand flash就引入了地址周期的概念。对于这款nand flash,需要4个周期:2个列地址(column)周期和2个行地址(ROW)周期。从下面的功能框图来看,对于列地址A0 – A11,就是页内地址,地址范围是0 – 4096。与页内地址(2K + 64)吻合,其实对与页内地址,其实只需要A0-A10,而对于多出来的A11,是用来表示页内的OOB区域。那么对于A12 - A27就是用来表示属于哪一个块和块里面的哪一个页号。
###### Nand flash的操作
上面这款芯片支持的命令格式
下图是发送一个命令/地址/数据的完整过程
通过时序图看出,上面有很多时间参数,在设置Nand flash控制器的时候,需要确认这些时间参数是否在合适的范围内,对于控制命令都是通过上面的几个基础命令组合而来。 Flash的基本特性
Data Retention(数据保存力)是用于衡量写入NAND Flash的数据能够不失真保时间的可靠性指标,一般定义为在一定的温度条件下,数据在使用ECC纠错之后不失真保存在NAND Flash中的时间;影响Data Retention最大的两个因素是擦写次数和存储温度,通常情况下企业级SSD盘的Data Retention都是遵循JEDEC的JESD218标准,即40°C室温下,100%的PE Cycle之后,在下电的情况下Data Retention时间要求达到3个月。
Nand Flash写入前必须擦除,Block擦除1次之后再写入1次称为1次PE Cycle,Endurance(耐用性)用于衡量NAND Flash的擦写寿命的可靠性指标;Endurance指的是在一定的测试条件下NAND Flash能够反复擦写数据的能力,即对应NAND Flash的PE(Program/Erase)Cycle。
Bit Error Rate(BER)指由于NAND Flash颗粒概率发生Bit位翻转导致的错误,其中,RBER(Raw Bit Error Rate)指没有经过ECC纠错时出现一个Bit位发生错误的几率,RBER也是衡量NAND品质的一项指标。RBER是NAND自身品质的一个特性,随着PE次数的增加会变差,出现趋势呈指数分布,其主要原因是擦写造成了浮栅氧化层的磨损。
UBER(Uncorrectable Bit Error Rate)指发生不可纠正ECC错误的几率,即一个纠错单元Codeword内发生bit位翻转的位数超出ECC算法可纠能力范围的几率。
DWPD(Diskful Write Per Day)指每日写入量。SSD的成本随着DWPD增加而变高,未来SSD的趋势预测密集型当前已占50%,未来的占比会逐渐变大。
Nand Flash的寿命不等于SSD的寿命;SSD盘可以通过多种技术手段从整体上提升SSD的寿命,通过不同的技术手段,SSD盘的寿命可以比NAND Flash宣城寿命提高20%~2000%不等。
- Nand Flash的寿命主要通过P/E cycle来表征。SSD由多个Flash颗粒组成,通过盘片算法,可以发挥有效颗粒寿命。影响SSD盘使用寿命关键因素主要包括下面因素:每年写入数据量,和客户的业务场景有关;
- 单个Flash颗粒寿命,不同颗粒的P/E cycle不同
- 数据纠错算法,更强纠错能力延长颗粒使用寿命
- 磨损均衡算法,避免擦写不均衡导致擦写次数超过颗粒寿命
- Over Provisioning占比,随着OP(预留空间)的增加SSD磁盘的寿命会得到提高。
Flash的种类
Flash通常分为raw nand和spi nand
raw nand TSOP封装物料实物图
spi nand TSOP封装
对于常见的Nand Flash所拥有的的引脚(Pin)对应的功能如下:
- I/O0~I/O7:用于输入地址/数据/命令,输出数据
- CLE:Command Latch Enable,命令锁存使能,在输入命令之前,要先在模式寄存器中,设置CLE使能。
- ALE:Address Latch Enable,==地址锁存使能,在输入地址之前,要先在模式寄存器中,设置ALE使能。(地址锁存是由于数据和地址是复用同一些信号线或引脚的,一般来讲是由于工艺的要求,尽量节省成本和开支,那么在同一个引脚上就会出现两种信息:地址和数据,可处理器读的时候并不知道什么时候是地址,什么时候是数据,因此,需要一些专用的芯片把它们分开,用一些专用的信号联络线来区分这些信号,这就叫地址锁存)
- CE#:Chip Enanle,芯片使能,在操作Nand Flash之前,要先选中此芯片,才能操作。
- RE#:Read Enable,读使能,在读取数据之前,要先使CE#有效。
- WE#:Write Enable,写使能,在写取数据之前,要先使WE#有效。
- WP#:Write Protect,写保护。
- R/B#:Ready/Busy/Output,就绪/忙,主要用于在发送编程/擦除命令后,检测这些操作是否完成,忙,表示编程/擦除操作仍在进行中,就绪表示操作完成。
- Vcc:Power 电源
- Vss:Ground 接地
- N.C:Non-Connection,未定义,未连接。
- 【小常识】在数据手册中,对于一些引脚的定义,有些字母上面带一横杠,那是说明此引脚/信号是低电平有效。
- 【为何需要ALE和CLE】地址锁存和数据锁存命令的设计是为了方便控制器区分当前I/O引脚输入的是数据还是命令,因为Nand Flash只有8个I/O,而且是复用,可以传数据也可以传命令。因此设计ALE与CLE引脚使能控制器做相应功能处理
- 【Nand Flash只有8个I/O引脚的好处】使用I/O复用可以减少芯片接口,也意味着使用此芯片的相关的外围电路会更加简化,避免繁琐的硬件连线。使用统一的8个I/O引脚的Nand Flash使用统一的接口、同样的时序、同样的命令,不会因为芯片的大小的改变或其他变化而影响。这样提高了系统的扩展性。
Nand Flash的特殊硬件结构
1、需要先擦除才能写入。Nand Flash可以读写一个Page,但是必须要以Block大小进行擦除。擦除操作就是让块中所有的bit变成1,从一个干净的“已擦除”状态的Block重新开始,当里面的页变成0后,只有擦除整个块才能让这个页变成1.为了尽量减少擦除的次数,成熟的管理技术必不可少。
2、读、写干扰。Nand Flash的电荷非常不稳定,在读/写中很容易对相邻的单元造成干扰,干扰后会让附近单元的电荷脱离实际的逻辑数值,造成bit出错,因为阈值接近的关系,MLC相对SLC来说更容易受到干扰。读取干扰指的是在读取某个page时,邻近的bit会受到升高电压的干扰,造成bit出错。写入干扰指的是,某个page在写入时,邻近bit的电压也被升高了,造成bit出错。相对写入干扰来说,读取干扰明显小的多。在读/写干扰中,可能造成某些bit被改变,结果造成数据出错。所以需要在返回数据给主机前,用ECC/EDC算法来纠正这些bit的错误。随着闪存工艺的提升,同样大小的晶片上被封装入更多的单元,造成告饶越来越厉害,所以需要更强大的ECC/EDC来纠正bit。
3、数据保存期限。数据保存期指的是当完全断电后,数据能在NAND Flash中保存多久。NAND单元必须保存一个稳定的电压水平,来保证数据是有效的。典型的SLC一般为20年。电荷从悬浮门里漏出,这叫做电子迁移,当随着时间的流逝,电核泄漏到一定程度,改变了NAND单元里悬浮门的电压对应的逻辑值,这样就造成了bit出错。数据保存期会随着擦写次数的增加而明显降低,MLC的数据保存期明显会比SLC少,而且更容易被 干扰。
4、坏块。Nand Flash中有两种坏块类型:出厂坏块,由于为了保证量产和控制成本,出厂的Nand Flash某些就会有坏块,厂商保证SLC出厂坏块低于2%,MLC出厂坏块低于5%。积累坏块,在多次的写入/擦除循环中,某些Nand单元的电荷电压被永久性的改变了,那就意味着包含这个Nand单元不再可用。所以固态硬盘需要有坏块管理才能使用,主控制器用坏块表来映射出厂坏块和积累坏块到坏块区内,出厂时,颗粒的第一个块Block 0厂商会保证是可用的。(至少ECC后可用)
5、擦写次数限制。造成nand flash有擦写次数限制的主要有2个因素,电荷被困在氧化层,不能进入悬浮门;或是氧化层结构被破坏。
如图,一旦氧化层损坏到达一定程度,造成电荷越来越难在P-substrate和悬浮门之间交流。电荷被困在氧化层造成悬浮门中的电压到达不了阈值,所以说这个NAND单元就要被放入坏块区了。当前主流SLC的P/E为10万次,50nm MLC为1万次,3xnm的MLC为5000次。到了这个数值并不意味着不能使用了,这只是代表平均寿命,也就是说到了这个数值后,坏块会开始大量增加。随着工艺的提升,ECC的要求越来越高,50nm的SLC颗粒,三星对顶1bit ECC的就够了,而50nm MLC需要4bit ECC,到了3xnm要求达到24bit ECC。
ECC
影响Nand Flash稳定性和耐久度的一个主要因素就是ECC能力,目前最常用的三种算法是:
- Reed-Solomon
- Hamming
- BCH(Bose,Ray-Chauduri,Hocquenhem)
不管是任何ECC算法,任何主控,检测错误的方式都是相同的:
不管是任何ECC算法,任何主控,检测错误的方式都是相同的:
- 1、每当一个Page写入Nand Flash,数据会通过ECC引擎,创造独特的ECC签名。
- 2、数据和对应的ECC签名都存放在Nand Flash里,数据存放在数据区,ECC签名存放在SA区。
- 3、当需要读取数据时,数据和ECC签名一起被送往主控制器,此时新的ECC签名被生成。
- 4、此时主控把2个签名对照,如果签名相同,说明数据没有错误,数据就会被送往主机。如果签名不同,数据就会先放在主控里,而不是直接送往主机。
某些主控会把改正后的数据再次回写闪存,另一些则不会,因为谁也不知道下次读取会不会再出错。ECC的能力直接关系到Nand Flash的耐久度,数据保存期。当Nand Flash的P/E数到了之后,错误数会越来越多,ECC弱的直接就报坏块并标记退休,如果ECC能力足够强,就能够挖掘出Flash的所有潜力。
闪存内部原理
闪存的内部存储结构是金属-氧化物-半导体-场效应管(MOSFET):源极、漏极和栅极,其工作原理与场效应管类似,都是电压利用控制源极和漏极之间的通断。闪存是双栅极结构,在栅极和硅衬底之间还有一个浮置栅极,浮置栅极是有氮化物夹在二氧化硅材料之间构成。
对闪存单元的编程:控制栅极去充电,对栅极加压,使得浮置栅极存储的电荷越多,超过阈值,就表示0;对闪存单元的擦除,即对浮置栅极进行放电,低于阈值,就表示1。
NAND Flash发展历程
- 诞生阶段(20 世纪 80 年代):
1987 年,时任日本东芝公司工程师岡本成之提出了 2D NAND 技术,这是 NAND Flash 的起源。当时,东芝虽然占据了市场先机,但战略重心偏向 DRAM 市场,一定程度上忽略了 NAND Flash 的发展潜力。随后,英特尔和三星等公司也迅速加入该领域,推出了自己的 2D NAND 产品。在这一阶段,NAND Flash 主要应用于一些特定的电子设备,如数字电话答录机等。
- 小型闪存卡兴起阶段(20 世纪 90 年代 - 21 世纪初):
随着数码摄影的普及,一系列小型闪存卡应运而生,包括 PCMCIA(PC 卡)、CompactFlash、SmartMedia、MultiMediaCard(MMC)和 SecureDigital(SD)卡等,这些小型闪存卡的存储介质主要是 NAND Flash。这使得 NAND Flash 的应用范围得到了极大的扩展,市场需求也开始快速增长。
- 市场扩张阶段(21 世纪初 - 2010 年代):
随着 NAND Flash 成本的不断降低,其应用范围进一步扩大。从数码相机扩展到了 USB 闪存驱动器,进而取代了软盘和可写 CD 等传统存储设备。同时,音频播放设备从传统的磁带和 CD 播放器转变为 MP3 播放器,也推动了 NAND Flash 的需求增长。在这一时期,NAND Flash 逐渐成为了主流的存储技术之一,市场规模不断扩大。
- 3D NAND 技术发展阶段(2010 年代 - 至今):
技术概念
提出 2007 年,东芝推出 BICS 类型的 3D NAND,标志着 NAND Flash技术从二维平面堆叠向三维立体堆叠的转变。这种技术通过在垂直方向上堆叠存储单元,大大提高了存储密度,为 NAND Flash的进一步发展提供了新的方向。
商业化量产
2013 年,三星推出第一代 V-NAND(三星自称 3D NAND 为 V-NAND)闪存并投入量产,虽然该款堆叠层数仅为
24 层,但在当时却打破了平面技术的瓶颈,并使 3D NAND 从技术概念推向了商业市场。
层数不断增加
从 2014 年开始,各大厂商纷纷推出更高层数的 3D NAND 产品。例如,三星陆续推出了 32 层、48 层、64层、96 层、128 层、176 层等不同层数的 V-NAND;SK 海力士按照 48 层、72 层 / 76 层、96 层、128 层、176 层、238 层的顺序陆续推出闪存新产品;美光也在不断提高其 3D NAND 的层数。
技术持续演进
在 3D NAND 技术发展的过程中,厂商们还在不断改进和优化技术,以提高存储性能、降低成本。例如,长江存储自研出了Xtacking 架构,大幅度提高了存储密度。