Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),对应于易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名称上可以看出,非易失性不易丢失。数据存储在此类设备中,即使断电,也不会丢失。除了这些设备,Flash,还有其他常见的,比如硬盘,ROM等等,相比之下,易失性是断电,数据丢失,比如常用的内存,不管是以前SDRAM,DDR SDRAM,还是现在的DDR2,DDR等等,都断电了,数据就没了。
Flash金属氧化层-半导体-场效晶体管的内部存储(MOSFET),有一扇悬浮门(Floating Gate),是真正存储数据的单元。
数据在Flash电荷用于内存单元(electrical charge) 形式存储。存储电荷的数量取决于图中的控制门(Control gate)施加的电压控制电荷是冲入存储单元还是释放电荷。数据显示,存储的电荷电压是否超过特定阈值Vth 来表示。
1.对于NAND Flash写入(编程)是控制Control Gate去充电(对Control Gate加压),使悬浮门储存足够的电荷,超过阈值Vth,就表示0。
2.对于NAND Flash的擦除(Erase),悬浮门放电低于阀值Vth,就表示1。
NAND Flash的架构:
如上图所示,这是8Gb 50nm的SLC颗粒内部结构。
每个page每个单元代表33792个单元bit(SLC),所以每个page就是4096Byte 128Byte(SA)。 每个Block有64个page组成,所以每一个Block容量为262,114Byte 8192Byte (SA)
page是NAND Flash上最小的读/写单位(一个page上述单元共享字符线Word line),块是最小的擦除单位(。不同品牌和型号的颗粒不同page和block大小。
下图是个8Gb 50nm的SLC颗粒。
4KB的页尺寸,256KB块尺寸。图中4096字节用于存储数据,另外128字节用于管理和ECC用。
SLC 和 MLC 区别:
SLC主要用于军工、企业级应用,具有高速写入、错误率低、耐久性长的特点。 MLC主要用于消费级应用,容量是2倍SLC,低成本,合适USB闪盘、手机、数码相机等存储卡。现在也用于消费级固态硬盘。
从上图可以看出,MLC和SLC虽然使用相同的电压值,但电压之间的阀值分为四部分,直接影响性能和稳定性。主要有以下几点:
1.相邻储存电荷的悬浮门会相互干扰,导致悬浮门内电荷不稳定bit错误,MLC与阀值相比SLC更接近,出错的概率更大。 2.MLC读写性能降低,写入降低50%以上,因为需要确认充电量,需要更准确的处理。SLC只有0和1,也就是有和没有,MLC会有00,01,10,11 四种状态,充电后判断是哪种状态,自然会慢。 3.因为上面提到的额外读写压力,功耗明显增加。 4.由于的写入耐久性和数据保存期受到额外读写压力的影响。
eMLC和eSLC通过牺牲数据保存期和增加读写时间来提高耐久性。(即性能会更差)