NAND闪存芯片的结构组成

我们知道,在一块NAND芯片中,有无数个的Cell,正是通过芯片将这些Cell有序的组织在一起,才使得我们可以正常的使用它们。

Die是芯片行业中的一个术语,英文翻译为硬件模块,因此实际上这是一个硬件上的概念。Die是指圆晶(也做晶圆)上的一个个小方块,称谓裸片,即还没有进行封装。实际上我们常常看见的引脚很多的芯片,都是经过封装后的。封装的好处在于一是可以保护Die,因为Die身体很差,环境温度湿度灰尘等都会可能会破坏Die。再有就是我们的电子工业是有标准的,通过封装可以将切割的Die的尺寸进行标准化,以便于通用。

在NAND一块封装好的芯片中,一般会有1个或者多个Die,以提高单个芯片的容量。

根据各个厂家能力的不同,一个Die的尺寸也可能不同,一个Die上的容量也可能不同,这个算是厂家的核心竞争力之一。毕竟我们知道,圆晶的价格是很贵很贵的,你在同样面积上能有更多的存储单元,那你肯定更Nubilable。

由此可见,一个Die实际上可以完整的执行存储的所有命令,具有完整的针脚定义和内部结构,它可以直接封装成一个Device。

(硬盘、U盘、光盘、SD卡等存储设备的数据发生了丢失,使用迷你兔数据恢复软件(minitool)进行恢复找回。)

什么是Plane?

Plane是Die下层的一个概念,一个Die一般由1个或者2个Plane构成。

Plane是基本命令Program、Read和Erase的最小执行单元。在一个Plane中,有一个独立的PageRegister和CacheRegister,PageRegister的大小为一个Page的大小+上ECC数据,CacheRegister的大小一般和PageRegister相等。当执行Program命令时,数据先被保存到cacheRegister中,再移到PageRegister中,最后才会被写入Page中。

正是由于每个Plane的PageRegister和CacheRegister独立,所以我们才说它是SSD中的最小执行单元,但由于在多Plane的情况下,操作(命令)寄存器却是共享的,因此,我们不能说一个Plane是一个完整的执行模块。

由此还可以发现一个有意思的事情。由于操作寄存器共享,那么理论上多个Plane的操作需要按照顺序执行。但现在的设计已经有所改进,可以实现并行执行,从而提升IO性能,不过前提是多个Plane执行相同的命令,比如都是Read或者都是Program,这一点应该很容易想明白。

什么是Block?

Block是NAND中最小擦除(erase)单元,一个Plane一般包含1K或者2K个Block,当然实际数量和厂家有关。

需要注意的是,我们在HDD中也有Block的概念,在HDD中一个Block是指一个Sector,在硬盘中固定为0.5K,在磁盘阵列中可以做重新映射,Block的大小可以变化。不过在NAND中,Block的概念与之完全不同。

在NAND中,由于晶体管制作的原因,会把同一片区域的多个Cell做在同片衬底上,这样可以实现布线数量减少,从而增大Cell的密度,提高容量。根据南瓜哥前面的文章《SSD给你飞一般的感觉,但你了解它的核心NAND存储芯片吗?》可知,NAND在执行erase命令时,是通过在衬底上施加高压将FG中的电子吸出来实现的,现在一个Block的衬底都是共用的一个,那么就很容易明白Block是erase命令执行的最小单位了。

正是由于erase和IO的单位不一样,给FTL增加了不少工作量,这是后话了。

什么是Page?

Page是NAND芯片中最小的寻址单位,即Program和Read的最小单位。一个Block中的Page数量根据不同的厂家不同的规格,数量是不一样的,一般是64或者128。

Page本身的大小也不一样,绝大部分情况是4KB,即4096x1024x8个Cell(SLC情况),少数NAND会是8KB。

Page这个单位和HDD中的Block(sector)可以认为是一个意思。

(迷你兔数据恢复minitool具有删除恢复”、“格式化恢复”、“硬盘恢复”、“深度恢复”、“移动存储设备恢复”五大功能模块,恢复效率高,安全性有保障。)