闪存简介
NAND闪存的存储单元采用串行结构,存储单元的读写以页和块为单位进行(一页包含若干字节,若干页组成一个存储块,NAND的存储块大小为8到32KB)。这种结构最大的优点是容量可以做得非常大,容量超过512MB的NAND产品相当普遍,NAND闪存成本低,有利于大规模普及。
NAND闪存的缺点是读取速度慢。它只有八个I/O端口,比NOR少得多。这个区域的8个I/O口只能依次传输数据,比NOR闪存的并行传输方式慢很多。另外,NAND闪存的逻辑是电子盘模块结构,内部没有专门的存储控制器。一旦出现坏数据块,不会修复,可靠性比NOR闪存差。
NAND闪存广泛应用于移动存储、数码相机、MP3播放器、掌上电脑等新兴数码设备。在数码设备强劲发展的推动下,NAND闪存一直呈指数级增长。
NOR和NAND是市场上两种主要的非易失性闪存技术。Intel在1988年首次开发出NOR flash技术,彻底改变了EPROM和EEPROM一统天下的局面。然后在1989年,东芝公布了NAND flash结构,强调每比特成本的降低,更高的性能,通过接口像磁盘一样容易升级。但是十几年过去了,还是有相当多的硬件工程师分不清NOR和NAND闪存的区别。
“闪存”阶段通常可以与“或非存储器”阶段互换使用。很多业内人士并不知道NAND闪存技术相对NOR技术的优势,因为大多数情况下,闪存只是用来存储少量代码,NOR闪存更合适。NAND是高数据存储密度的理想解决方案。
也不具备XIP、就地执行(XIP)的特性,因此应用程序可以直接在闪存中运行,而无需将代码读入系统RAM。NOR的传输效率很高,容量为1 ~ 4 MB时性价比较高,但写入和擦除速度较低,性能受影响较大。
NAND结构可以提供极高的单元密度,达到很高的存储密度,写入和擦除的速度也很快。应用NAND的难点在于flash的管理和需要特殊的系统接口。闪存是一种非易失性存储器,可以擦除和重新编程称为块的存储单元块。任何闪存设备的写入操作都只能在空的或已擦除的单元中进行,因此在大多数情况下,必须在写入操作之前进行擦除。NAND设备执行擦除操作非常简单,而NOR要求目标块中的所有位在擦除前都应写入0。
由于NOR器件是以64 ~ 128 KB的块来擦除的,所以执行一次写/擦除操作的时间是5ms,而NAND器件是以8 ~ 32 KB的块来擦除的,执行同样的操作最多只需要4ms。
擦除时块大小的差异进一步扩大了NOR和NADN之间的性能差距。统计表明,对于给定的一组写操作(尤其是在更新小文件时),必须在基于NOR的单元中执行更多的擦除操作。因此,在选择储物解决方案时,设计师必须权衡以下因素。
● NOR读取速度比NAND稍快。
NAND的写入速度比NOR快很多。
NAND的4ms擦除速度比NOR的5ms快很多。
●大多数写操作需要先擦除。
NAND的擦除单元更小,对应的擦除电路更少。NOR flash有SRAM接口,有足够的地址引脚寻址,可以轻松访问其中的每一个字节。
NAND设备使用复杂的I/O口串行访问数据,不同产品或厂商的方法可能不同。八个引脚用于传输控制、地址和数据信息。
NAND读写操作使用512字节的块,有点像硬盘管理。自然,基于NAND的内存可以取代硬盘或其他块设备。NAND flash的单位尺寸几乎是NOR器件的一半。因为生产工艺更简单,NAND结构可以在给定的模具尺寸内提供更高的产能,相应的降低了价格。
NOR flash以1 ~ 16 MB的容量占据了大部分闪存市场,而NAND flash仅用于8 MB ~ 128 GB容量的产品,这也说明NOR主要用于代码存储介质,NAND适用于数据存储,NAND在CompactFlash、安全数码、PC卡、MMC存储卡市场份额最大。所有闪存设备都受到位交换现象的困扰。在某些情况下(很少,NAND比NOR更常见),一个位将被反转或被报告为反转。
一个位的变化可能不明显,但如果发生在一个关键文件上,这个小故障就可能导致系统停止。如果只是报告有问题,看几遍可能就解决了。
当然,如果这个位真的改变了,就必须采用检错/纠错(EDC/ECC)算法。位反转的问题在NAND闪存中比较常见,NAND供应商建议在使用NAND闪存时同时使用EDC/ECC算法。
当使用NAND存储多媒体信息时,这个问题不是致命的。当然,如果本地存储设备用于存储操作系统、配置文件或其他敏感信息,则必须使用EDC/ECC系统来确保可靠性。NAND设备中的坏块是随机分布的。之前也有过淘汰坏块的努力,但是发现良品率太低,价格太高,不划算。
NAND设备需要对介质执行初始扫描,以找到坏块并将坏块标记为不可用。在制造的器件中,如果这种处理不能通过可靠的方法进行,将导致高的故障率。你可以非常直接的使用基于NOR的闪存,像其他内存一样连接,直接在上面运行代码。
因为需要I/O接口,NAND就复杂多了。各种NAND设备的访问方法因制造商而异。
使用NAND设备时,必须先写入驱动程序,然后才能继续其他操作。向NAND设备写入信息需要相当的技巧,因为设计人员绝不能写入坏块,这意味着必须从头到尾在NAND设备上进行虚拟映射。在讨论软件支持时,我们应该区分基本的读/写/擦除操作和更高级的磁盘模拟和闪存管理算法的软件,包括性能优化。
在NOR设备上运行代码不需要任何软件支持。在NAND设备上做同样的操作,通常需要驱动,也就是内存技术驱动(MTD)。NAND和NOR设备都需要MTD来进行写入和擦除操作。
使用NOR器件时所需的MTD相对较少。许多制造商为NOR设备提供更先进的软件,包括M-System的TrueFFS驱动程序,这种驱动程序被Wind River System、微软、QNX软件系统、Symbian和Intel等制造商采用。