在数字世界,用户存储在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 Flash? NAND Flash现代存储技术的基础知识-编程知识网

(左图)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现代存储技术的基础知识-编程知识网

什么是NAND Flash? NAND Flash现代存储技术的基础知识-编程知识网

Nand Flash的物理结构

Nand Flash的容量结构从大到小可以分为Device、Target、LUN、Plane、Block、Page、Cell。一个Device有若干个Die(或者LUN),每个Die有若干个Plane,每个Plane有若干个Block,每个Block有若干个Page,每个Page对应着一个WordLine。

什么是NAND Flash? NAND Flash现代存储技术的基础知识-编程知识网

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? NAND Flash现代存储技术的基础知识-编程知识网

下图是一款存储芯片的内部布局

什么是NAND Flash? NAND Flash现代存储技术的基础知识-编程知识网

由图可以看出一片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现代存储技术的基础知识-编程知识网

###### Nand flash的操作

上面这款芯片支持的命令格式

什么是NAND Flash? NAND Flash现代存储技术的基础知识-编程知识网

下图是发送一个命令/地址/数据的完整过程

什么是NAND Flash? NAND Flash现代存储技术的基础知识-编程知识网

上一页12 下一页 阅读全文