概述
文章目录
- 什么是Nand Flash?
- Nand Flash生产过程
- Nand Flash的物理结构
- Flash的基本特性
- Flash的种类
- Nand Flash的特殊硬件结构
- ECC
- 闪存内部原理
什么是Nand Flash?
Nand Flash是一种非易失性随机访问存储介质,基于浮栅(Floating Gate)晶体管设计,通过浮栅来锁存电荷,电荷被存储在浮栅中,他们在无电源供应的情况下仍然可以保持。数据在Flash内存单元中是以电荷的形式存储的,存储电荷的多少取决于浮栅的外部门所被施加的电压,其控制了是向存储单元中充入电荷还是释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
对于NAND Flash的写入,就是控制Control Gate去充电(对CG加压),使得悬浮门存储的电荷够多,超过阈值Vth,就表示0。
对于NAND Flash的擦除,就是对悬浮门放点,低于阈值Vth,就表示1。
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算法,任何主控,检测错误的方式都是相同的:
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的基础知识的全部内容,希望文章能够帮你解决Nand flash的基础知识所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复