NAND闪存颗粒结构及工作原理
前一节谈SLC和MLC的区别时,我们说到NAND闪存是一种电压元件,靠其内存电压来存储数据,现在我们就来谈谈它的结构及工作原理。闪存的内部存储结构是金属-氧化层-半导体-场效晶体管(MOSFET),里面有一个浮置栅极(Floating Gate),它便是真正存储数据的单元。请看下图:
数据在闪存的存储单元中是以电荷(electrical charge) 形式存储的。存储电荷的多少,取决于图中的控制栅极(Control gate)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
1.对于NAND闪存的写入(编程),就是控制Control Gate去充电(对Control Gate施加电压),使得浮置栅极存储的电荷够多,超过阈值Vth,就表示0。
2.对于NAND Flash的擦除(Erase),就是对浮置栅极放电,低于阈值Vth,就表示1。
上图是一个8Gb 50nm的SLC颗粒内部架构,每个page有33,792个存储单元,每个存储单元代表1bit(SLC),所以每个page容量为4096Byte + 128Byte(SA区)。每个Block由64个page组成,所以每个Block容量为262,114Byte + 8192Byte (SA区)。Page是NAND Flash上最小的读取/写入(编程)单位(一个Page上的单元共享一根字符线Word line),Block是NAND Flash上最小的擦除单位。不同厂牌不同型号颗粒有不同的Page和Block容量。
如上所述,大家应该发现了,写入时,是在字符线上加压以写入数据,擦除时则是在位线上加压,因为一个块共享一条位线,这也是擦除的单位是块而不是页的原因,同理写入的最小单位是页的原因大家想必也已明白。
下图是个8Gb 50nm的SLC芯片,4KB+128字节的页大小,256KB+8KB的块大小。图中每个页内4096字节用于存储数据,另外128字节用于管理和ECC等。
NAND闪存还会利用多Plane设计以提升性能,请看下图:
多Plane设计的原理很简单,从上图中(Micron 25nm L73A)我们看到,一个晶片内部分成了2个Plane,而且2个Plane内的Block编号是单双交叉的,想象我们在操作时,也可以进行交叉操作(一单一双)来提升性能,根据测试,某些情况下性能可以比单Plane设计提高约50%以上。
上图向大家清楚说明了多Plane设计提升性能的原因。
在前面的SSD基本架构中,我们提及了交叉读写(Interleave)算法,这个算法的作用是什么呢?
前面所说的是针对单个晶片内部的多Plane进行操作,这里的Interleave指的是对单通道下多个晶片进行操作。打个比方,下图为64G的m4 SSD,颗粒为8颗粒L73A(每个颗粒内部2个Die封装),那么作为8通道的主控制器,每个通道里可以同时对2个Die(4个Plane)进行操作,达到提速的目的。
假设上面是单通道的操作模式,下图上面部分就是一个通道上有1个Die,下面部分则是一个通道上有2个Die。假定1次读取需要5个时钟周期,一个方块代表1个时钟周期,第五个时钟周期数据即可传输完成,2个Die的时候采用交错操作,第一个时钟周期时Die 1 发送完读取指令后在第二个时钟周期时,Die 2接着发送读取指令,这样就能接近成倍的提升性能,这也就是为什么m4的128G写入速度比64G写入速度快一倍的道理。