点开音乐,边听边看☝(今天推荐的是《海阔天空》)
Nand-Flash存储器是一种内部采用非线性宏单元模式的闪存,为固态大容量存储器的实现提供了一种廉价有效的解决方案。Nand-Flash存储器具有容量大、改写速度快等优点,适合存储大量数据,因此在业界得到了越来越广泛的应用,例如在数码相机、MP3播放器存储卡、小型USB闪存盘等嵌入式产品中。
NOR 和 NAND 是目前市场上两种主要的非挥发性闪存技术。英特尔在 1988 年首先开发出 NOR 闪存技术,彻底改变了 EPROM 和 EEPROM 一统天下的局面。随后,1989 年,东芝发布了 NAND 闪存结构,强调每比特成本更低、性能更高,并且可以通过像磁盘一样的接口轻松升级。然而,十多年过去了,仍有相当一部分硬件工程师分不清 NOR 和 NAND 闪存的区别。
“NAND存储器”经常与“NOR存储器”互换使用。很多业内人士对NAND闪存技术相对于NOR技术的优势感到困惑,因为大多数情况下闪存只用于存储少量代码,需要多次擦除和写入,这种情况下NOR闪存更适合。NAND是高数据存储密度的理想解决方案。
NOR的特点是片内执行(XIP,eXecute In Place),这样应用程序就可以直接在闪存中运行,而不必将代码读入系统RAM中。NOR的传输效率高,在1至4MB的小容量下非常具有性价比,但其写入和擦除速度较慢,大大影响了其性能。
NAND结构可以提供极高的单元密度,可以达到很高的存储密度,写入和擦除速度也很快。使用NAND的难点在于对flash的管理需要特殊的系统接口。
NOR 和 NAND 之间的差异
性能比较
闪存是一种非易失性存储器,可以以称为块的存储单元块为单位进行擦除和重新编程。对任何闪存设备的任何写入操作都只能在空的或已擦除的单元中执行,因此在大多数情况下,必须在写入操作之前执行擦除操作。NAND 设备执行擦除操作非常简单,而 NOR 要求在执行擦除操作之前将目标块中的所有位都写入 0。
由于 NOR 设备的擦除是以 64 到 128KB 的块为单位进行的,因此执行写入/擦除操作需要 5 秒钟。相比之下,NAND 设备的擦除是以 8 到 32KB 的块为单位进行的,同样的操作最多只需要 4ms。
执行擦除时块大小的差异进一步扩大了 NOR 和 NAND 之间的性能差距。统计数据显示,对于给定的一组写入操作(尤其是在更新小文件时),必须在基于 NOR 的单元中执行更多的擦除操作。因此,在选择存储解决方案时,设计人员必须权衡以下因素。
● NOR的读取速度比NAND稍快。
● NAND的写入速度比NOR快很多。
● NAND的擦除速度比NOR快得多。
● NAND的擦除单元更小,相应的擦除电路更简单。
● NAND的实际应用比NOR复杂得多。
● NOR可以直接使用,上面直接运行代码;而NAND需要I/O接口,因此使用时需要驱动程序。
界面差异
NOR闪存具有SRAM接口,并具有足够的地址引脚来对其进行寻址,因此可以轻松访问其中的每个字节。
NAND设备使用复杂的I/O端口来串行访问数据,并且方法可能因产品不同或制造商不同而有所差异。8个引脚用于传输控制、地址和数据信息。
NAND 的读写操作采用 512 字节的块,这有点像硬盘对此类操作的管理。自然而然,基于 NAND 的存储可以取代硬盘或其他块设备。NOR 的特点是片上执行(XIP,eXecute In Place),这样应用程序就可以直接在闪存中运行,而不必将代码读入系统 RAM。
NOR的传输效率较高,在1~4MB的小容量下非常具有性价比,但是其写入和擦除速度较慢,对性能影响较大。
NAND结构提供极高的单
NAND闪存的单元尺寸几乎只有NOR器件的一半,由于生产工艺更简单,NAND结构可以在给定的芯片尺寸内提供更高的容量,从而相应地降低价格。
NOR闪存占据了容量为1至16MB的闪存市场的大部分份额,而NAND闪存只用于容量为8至128MB的产品中。这也说明NOR主要用在代码存储介质中,而NAND适合用于数据存储。NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场占有最大的份额。
物理组成
NAND Flash 的数据是以位(bit)的形式存放在存储单元(memory cell)中的,一般来说一个单元只能存放一个bit。这些单元以8个或者16个为单位连接成位线(bit line),组成所谓的字节(byte,x8)/字(word,x16),也就是NAND Device的位宽。这些位线会组成页(Page,NAND Flash 有多种结构,例如NAND Flash 是K9F1208,以下内容针对的是三星的K9F1208U0M),每页为528Bytes(512byte(Main Area)+16byte(Spare Area)),每32个页组成一个块(32*528B)。具体flash上的块数根据需求而定。 例如三星k9f1208U0M有4096个块,所以总容量为4096*(32*528B)= 66MB,但其中2MB用来存储ECC校验和等额外数据,所以实际可用容量为64MB。
NAND flash以页为单位读写数据,以块为单位擦除数据。这样的组织方式可以形成所谓的三类地址:
ColumnAddress:Starting Address of the Register。翻译成中文就是列地址,地址的低8位
页面地址:页面地址
区块地址:区块地址
对于NAND Flash来说,地址和命令只能在I/O[7:0]上传输,数据宽度为8位。
可靠耐用
使用闪存介质时需要考虑的关键问题之一是可靠性。对于需要延长 MTBF 的系统,Flash 是一种非常合适的存储解决方案。NOR 和 NAND 的可靠性可以从寿命(耐用性)、位交换和坏块处理等方面进行比较。
寿命(耐用性)
NAND闪存每个块的最大擦写次数为一百万次,NOR则是十万次。
除了10比1的块擦除周期优势之外,NAND存储器的典型NAND块大小比NOR器件小8倍,并且每个NAND存储器块在给定的时间段内可以被擦除的次数更少。
位交换位反转图片
所有闪存设备都会出现一种称为位交换的现象。在某些情况下(罕见,NAND 比 NOR 更常见),某个位可能会翻转或被报告为已翻转。
一个bit的变化可能不会引起人们的注意,但如果发生在一个关键文件上flash软件打不开,这个小故障可能会导致系统关闭。如果只是报告问题,多读几遍可能就能解决。
当然,如果这个位确实发生了变化,就必须使用错误检测/错误校正 (EDC/ECC) 算法。位反转问题在 NAND 闪存中更为常见,NAND 供应商建议在使用 NAND 闪存时使用 EDC/ECC 算法。
在使用NAND存储多媒体信息时,这个问题并不致命。当然flash软件打不开,如果使用本地存储设备存储操作系统、配置文件或其他敏感信息,则必须使用EDC/ECC系统来确保可靠性。
坏块处理
NAND器件中的坏块是随机分布的,过去也曾尝试消除坏块,但是良率太低、成本太高,不经济。
NAND 设备需要对介质进行初始扫描,以查找坏块并将其标记为不可用。在制造的设备中,如果此过程无法可靠地执行,则会导致高故障率。
便于使用
使用基于 NOR 的闪存非常简单;您可以像任何其他内存一样连接它并直接在其上运行代码。
NAND 由于需要 I/O 接口而更加复杂,不同制造商对各种 NAND 设备的访问方式也各有不同。
使用NAND设备时,必须先写入驱动程序,然后才能执行其他操作。向NAND设备写入信息需要相当的技巧,因为设计人员绝不能写入坏块,这意味着必须在NAND设备上从头到尾进行虚拟映射。
软件支持
在讨论软件支持时,应该区分基本的读/写/擦除操作和用于磁盘仿真和闪存管理算法的高级软件,包括性能优化。
在NOR设备上运行代码不需要任何软件支持。在NAND设备上执行同样的操作时,通常需要一个驱动程序,即内存技术驱动程序(MTD)。NAND和NOR设备都需要MTD进行写入和擦除操作。
使用NOR设备时所需的MTD相对较少。许多制造商为NOR设备提供了更先进的软件,包括M-System的TrueFFS驱动程序,该驱动程序被Wind RiverSystem、Microsoft、QNX Software System、Symbian和Intel等制造商采用。
驱动程序也用于模拟DiskOnChip产品,管理NAND闪存,包括纠错、坏块处理和磨损均衡等。(注:擦除NOR时,写入的都是1,而不是0。另外,NOR FLASH SECTOR的擦除时间因品牌和大小不同而不同,例如4M的FLASH,有的SECTOR的擦除时间为60ms,有的则最多需要6S。)NOR FLASH的主要供应商有INTEL、MICRO等厂家,曾经是FLASH的主流产品,但后来被NAND FLASH挤占了,它的优点是可以直接从FLASH中运行程序,但工艺复杂,价格也比较贵。
NAND FLASH的主要供应商是SAMSUNG和Toshiba,这种FLASH多用于U盘、各种存储卡、MP3播放器等,由于技术的差异,比NOR FLASH存储容量大,价格也便宜,但也有缺点,比如:
它不能直接寻址和运行程序,只能存储数据。另外NAND FLASH非常容易出现坏区,所以需要有验证算法。
在掌上电脑中,一般采用NAND FLASH来存储数据和程序,但是启动时需要用到NOR FLASH。
三星处理器等手持电脑使用的主流处理器都不支持直接NAND FLASH启动。
必须先用一块小小的NOR FLASH来启动机器,然后再把OS等软件从NAND FLASH加载到SDRAM中才能运行,比较麻烦。