2018年7月23日 Avinash Aravindan
嵌入式系统设计人员在选择Flash存储器时必须考虑很多因素:采用哪种类型的Flash架构,是选择串行接口还是并行接口,是否需要纠错码(ECC)等等。如果处理器或控制器只支持一种类型的接口,这就限制了选择,所以存储器可能很容易选择。然而,情况往往并非如此。例如,一些FPGA支持串行NOR Flash、并行NOR Flash和NAND Flash存储器来存储配置数据。同样的存储器也可以用来存储用户数据,这就增加了选择使用合适存储器的难度。在本系列文章中,将从NOR Flash和NAND Flash的区别开始,讨论Flash存储器的不同方面。
存储器结构
闪存将信息存储在由浮动栅极晶体管制成的存储单元中。这些技术的名称解释了存储单元的组织方式。在NOR Flash中,每个存储单元的一端连接到源线,另一端直接连接到类似于NOR门的位线。在NAND Flash中,若干个存储单元(通常为8个单元)串联起来,类似于一个NAND门(见图1)。
图1:NOR Flash(左)的架构类似于NOR门。同样,NAND Flash(右)的架构也类似于NAND门。(来源:__Cypress)
NOR闪存架构提供了足够的地址线来映射整个内存范围。这使其具有随机访问和读取时间短的优势,这使其成为代码执行的理想选择。另一个优点是在部件的使用寿命内100%的已知好位。缺点包括单元尺寸较大,导致每比特成本较高,且写入和擦除速度较慢。有关NOR闪存如何应用于嵌入式系统的更多细节,请参见《 并行NOR闪存概述》。
而NAND Flash与NOR Flash相比,单元尺寸更小,写入和擦除速度更高。缺点包括读取速度较慢,且采用I/O映射型或间接接口,比较复杂,不允许随机访问。需要注意的是,从NAND Flash中执行代码是通过将内容影子到RAM中实现的,这与直接从 NOR Flash中执行代码不同 。另一个主要缺点是存在坏块。NAND Flash在出厂时通常有98%的好位,在部件的寿命内会有额外的位故障,因此需要在器件内部设置纠错码(ECC)功能。
记忆容量
与NOR闪存相比,NAND闪存的密度要高得多,这主要是由于其每位成本较低。NAND闪存的容量通常在1Gb到16Gb之间,NOR闪存的密度在64Mb到2Gb之间。NOR闪存的密度从64Mb到2Gb不等。由于密度较高,NAND闪存主要用于数据存储应用。
擦除、读取和写入
在NOR和NAND闪存中,存储器都被组织成擦除块。这种架构有助于在保持性能的同时降低成本。例如,较小的块尺寸可实现更快的擦除周期。然而,更小的块的缺点是增加了裸片面积和存储器成本。由于NAND闪存的每比特成本较低,因此与NOR闪存相比,NAND闪存可以更经济地支持更小的擦除块。目前,NAND闪存的典型块大小从8KB到32KB不等,NOR闪存则为64KB到256KB。
NAND Flash的擦除操作很简单,而在NOR Flash中,每个字节都需要写上”0”才能擦除。这使得NOR Flash的擦除操作比NAND Flash的擦除操作要慢很多。例如, S34ML04G2 赛普拉斯NAND闪存擦除一个128KB的块需要3.5ms,而 S70GL02GT 赛普拉斯NOR闪存擦除一个类似的128KB扇区需要约520ms。这相差近150倍。
如前所述,NOR Flash存储器有足够的地址线和数据线来映射整个存储器区域,类似于SRAM的工作方式。例如,具有16位数据总线的2-Gbit(256MB)NOR Flash将有27条地址线,可以随机读取访问任何存储器位置。在NAND闪存中,存储器使用多路地址和数据总线进行访问。典型的NAND Flash存储器使用8位或16位多路地址/数据总线,并带有额外的信号,如芯片使能、写使能、读使能、地址锁存使能、命令锁存使能和就绪/忙。NAND Flash需要提供一个命令(读、写或擦除),然后是地址和数据。这些额外的操作 使得 NAND Flash的随机读取速度大大降低。例如, S34ML04G2 NAND闪存需要30μS,而S70GL02GT NOR闪存则需要120ns。因此,NAND的速度要慢250倍。
为了克服或减少读取速度较慢的局限性,在NAND Flash中,存储器通常以页的形式读取,每一页都是一个较小的擦除块的子分部。 一页的内容是按顺序读取的,只有在每个读取周期开始时才有地址和命令周期。NAND Flash的顺序访问持续时间通常低于NOR Flash器件中的随机访问持续时间。在NOR Flash的随机存取架构下,每个读取周期都需要切换地址线,从而累积了顺序读取的随机存取时间。随着要读取的数据块大小的增加,NOR Flash的累积延迟变得比NAND Flash大。因此,NAND Flash对于顺序读取的速度可以更快。然而,由于NAND Flash的初始读取访问持续时间要高得多,只有在传输大数据块时,通常是1KB以上的数据块时,性能差异才会明显。
在这两种Flash技术中,只有在块为空的情况下,才能将数据写入块中。NOR Flash的擦除操作本来就很慢,这使得写操作更加缓慢。在NAND Flash中,与读类似,数据通常以页为单位(一般为2KB)进行写入或编程。例如,单单用S34ML04G2 NAND Flash进行页写入就需要300μS。
为了加快写操作的速度,现代NOR闪存也采用了类似于页面写入的缓冲区编程。以S70GL02GT NOR闪存为例,它支持缓冲区编程,可以实现 多字节 编程,而单字的写入超时时间与之相似。例如,对512字节的数据进行缓冲编程,可以达到1.14MBps的吞吐量。
消耗功率
NOR Flash存储器在初始开机时通常比NAND Flash需要更多的电流。然而,NOR闪存的待机电流比NAND闪存低得多。两种Flash存储器的瞬时有源功率相当。因此,活动功率是由存储器活动的时间长度决定的。NOR Flash在随机读取时具有优势,而NAND Flash在擦除、写入和顺序读取操作时消耗的功率相对较低。
可靠性
对于任何存储设备来说,保存数据的可靠性是一个重要方面。闪存会出现一种叫做比特翻转的现象,即一些比特会被翻转。这种现象在NAND闪存中比在NOR闪存中更为常见。NAND闪存在出厂时,由于产量的考虑,坏块会随机散布在各处。在NAND闪存的整个生命周期中,随着擦除和程序周期的持续,会有更多的内存单元发生坏块。因此,坏块处理是NAND闪存的必备能力。而NOR Flash在出厂时,坏块为零,在存储器的生命周期内,坏块积累量非常低。因此,在存储数据的可靠性方面,NOR Flash比NAND Flash更有优势。
可靠性的另一个方面是数据保留,NOR闪存在这方面又有优势。S70GL02GT NOR闪存可提供20年的数据保留期,程序/擦除周期高达1K。S34ML04G2 NAND闪存提供典型的10年数据保留期。
程序和擦除周期数曾经是需要考虑的一个重要特性。因为与NOR闪存相比,NAND闪存的程序和擦除周期曾经高出10倍。随着今天的技术进步,这种情况已经不复存在了,因为现在两种存储器都可以进行比较。例如,S70GL02GT NOR和S34ML04G2 NAND都支持10万次的程序擦除周期。然而,由于NAND闪存使用的块大小较小,每次操作擦除的区域较小。因此,与NOR闪存相比,整体寿命更高。表1提供了本文讨论的主要方面的摘要。
表1:NOR Flash和NAND Flash的主要特性比较,有数字可供一般和具体比较。(来源:__Cypress)
一般来说,对于需要较低容量、快速随机读取访问和较高数据可靠性的应用,如代码执行所需,NOR Flash存储器是一个很好的选择。NAND闪存则是数据存储等应用的理想选择,因为这些应用需要更高的内存容量和更快的写入和擦除操作。