NAND、NOR闪存的基本原理
无论NAND还是NOR,两者在基本的数据存储方式和操作机理上都大致相同。闪存以单晶体管作为二进制信号的存储单元,它的结构与普通的半导体晶体管(场效应管)非常类似,区别在于闪存的晶体管加入了“浮动栅(floating gate)”和“控制栅(Control gate)”—前者用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制栅相耦合。当负电子在控制栅的作用下被注入到浮动栅中时,该NAND单晶体管的存储状态就由1变成0。相对来说,当负电子从浮动栅中移走后,存储状态就由0变成1;而包覆在浮动栅表面的绝缘体的作用就是将内部的电子“困住”,达到保存数据的目的。如果要写入数据,就必须将浮动栅中的负电子全部移走,令目标存储区域都处于1状态,这样只有遇到数据0时才发生写入动作—但这个过程需要耗费不短的时间,导致不管是NAND还是NOR型闪存,其写入速度总是慢于数据读取的速度。
虽然基本原理相同,但闪存可以有不同的电荷生成与存储方案。其中应用最广泛的是“通道热电子编程(Channel Hot Electron,CHE)”,该方法通过对控制栅施加高电压,使传导电子在电场的作用下突破绝缘体的屏障进入到浮动栅内部,反之亦然,以此来完成写入或者抹除动作;另一种方法被称为“Fowler-Nordheim(FN)隧道效应法”,它是直接在绝缘层两侧施加高电压形成高强度电场,帮助电子穿越氧化层通道进出浮动栅。NOR闪存同时使用上述两种方法,CHE用于数据写入,支持单字节或单字编程;FN法则用于擦除,但NOR不能单字节擦除,必须以块为单位或对整片区域执行擦除操作,由于擦除和编程速度慢、块尺寸也较大,使得NOR闪存在擦除和编程操作中所花费的时间很长,无法胜任纯数据存储和文件存储之类的应用,但它的优点是可支持代码本地直接运行;其次,NOR闪存采用随机存储方式,设备可以直接存取任意区域的数据,因此NOR闪存底部有大量的信号引脚,且每个单晶体管都需要辅助读写的逻辑,晶体管利用效率较低、容量不占优势。而NAND闪存采用FN法写入和擦除,且采用一种“页面-块”寻址的统一存储方式,单晶体管的结构相对简单,存储密度较高,擦除动作很快,但缺陷在于读出性能平平且不支持代码本地执行。另一个不可忽视的地方在于,NAND闪存很容易出现坏块,制造商通过虚拟映射的方式将其屏蔽。但是,NOR型闪存理论擦写次数约为10万次,NAND型闪存理论擦写次数约为100万次,寿命上NAND型闪存要占优势。
NAND型闪存
NAND型闪存的操作方式效率低,这和它的架构设计和接口设计有关,它操作方式有点像硬盘(其实NAND型闪存在设计之初确实考虑了与硬盘的兼容性),它的性能特点也很像硬盘:小数据块操作速度很慢,而大数据块速度就很快。NAND型闪存的基本存储单元是页(Page)。每一页的有效容量是512字节的倍数。所谓的有效容量是指用于数据存储的部分,实际上还要加上16字节的校验信息,因此我们可以在闪存厂商的技术资料当中看到“(512+16)Byte”的表示方式。目前2Gb以下容量的NAND型闪存绝大多数是(512+16)字节的页面容量,2Gb以上容量的NAND型闪存则将页容量扩大到(2048+64)字节。
NAND型闪存以块为单位进行擦除操作。闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是闪存的基本操作。一般每个块包含32个512字节的页,容量16KB;而大容量闪存采用2KB页时,则每个块包含64个页,容量128KB。
每颗NAND型闪存的I/O接口一般是8条,每条数据线每次传输(512+16)bit信息,8条就是(512+16)×8bit,也就是前面说的512字节。但较大容量的NAND型闪存也越来越多地采用16条I/O线的设计,如三星编号K9K1G16U0A的芯片就是64M×16bit的NAND型闪存,容量1Gb,基本数据单位是(256+8)×16bit,还是512字节。寻址时,NAND型闪存通过8条I/O接口数据线传输地址信息包,每包传送8位地址信息。由于闪存芯片容量比较大,一组8位地址只够寻址256个页,显然是不够的,因此通常一次地址传送需要分若干组,占用若干个时钟周期。NAND的地址信息包括列地址(页面中的起始操作地址)、块地址和相应的页面地址,传送时分别分组,至少需要三次,占用三个周期。随着容量的增大,地址信息会更多,需要占用更多的时钟周期传输,因此NAND型闪存的一个重要特点就是容量越大,寻址时间越长。而且,由于传送地址周期比其他存储介质长,因此NAND型闪存比其他存储介质更不适合大量的小容量读写请求。
NOR型闪存
NOR型闪存更像内存,有独立的地址线和数据线,NOR型闪存的基本存储单元是bit,用户可以随机访问任何一个bit的信息。