1. 以下是NandFlash与NorFlash典型电路图
1.1 Nor Flash接原理图
从上图可以看出,该NorFlash采用并行地址和数据总线.其中,21bit地址总线,16bit数据总线.
该NorFlash最大可寻址2M的地址空间.实际上,该NorFlash大小为2M.所以,NorFlash可作内存使用.可以直接寻址每一个存储单元.
1.2 NandFlash的典型原理图
2. 连接和编址方式
两种FLASH具有相同的存储单元,工作原理也一样,为了缩短存取时间并不是对每个单元进行单独的存取操作,而是对一定数量的存取单元进行集体操作,NAND型FLASH各存储单元之间是串联的,而NOR型FLASH各单元之间是并联的;为了对全部的存储单元有效管理,必须对存储单元进行统一编址.
NAND的全部存储单元分为若干个块,每个块又分为若干个页,每个页是512byte,就是512个8位数,就是说每个页有512条位线,每条位线下有8个存储单元;那么每页存储的数据正好跟硬盘的一个扇区存储的数据相同,这是设计时为了方便与磁盘进行数据交换而特意安排的,那么块就类似硬盘的簇;容量不同,块的数量不同,组成块的页的数量也不同.
NOR的每个存储单元以并联的方式连接到位线,方便对每一位进行随机存取;具有专用的地址线,可以实现一次性的直接寻址;缩短了FLASH对处理器指令的执行时间.
3. 速度比较
flash闪存是非易失存储器,可以对块存储器单元块进行擦写和再编程.任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除.
由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反, 擦除NAND器件是以8~32KB的块进 行的,执行相同的操作最多只需要4ms.由此可见NAND擦写速度比NOR要快得多,两者相差近千倍;
读取时,由于NAND要先向芯片发送地址信息进行寻址才能开始读写数据,而它的地址信息包括块号,块内页号和页内字节号等部分,要顺序选择才能定位到要操作的字节,这样每进行一次数据访问需要经过三次寻址,至少要三个时钟周期;而NOR型FLASH的操作则是以字或字节为单位进行的,直接读取,所以读取数据时,NOR比NAND要快很多.
4. 接口差别
NAND FLASH的I/O端口采用复用的数据线和地址线,必须先通过寄存器串行地进行数据存取,各个产品或厂商对信号的定义不同,NAND FLASH仅有的8个I/O端口,这区区 8 个 I/O 端口只能以信号轮流传送的方式来传送控制, 地址和数据信息,增加了应用的难度;NOR FLASH有专用的地址引脚(类似于SRAM接口)来寻址,较容易与其它芯片进行连接,另外还支持本地执行,应用程序可以直接在FLASH内部运行,可以简化产品设计.由此也可知NAND FLASH读速度要比NOR FLASH慢得多.
NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备.
5. 容量和成本
NOR型FLASH的每个存储单元与位线相连,增加了芯片内位线的数量,不利于存储密度的提高.所以在面积和工艺相同的情况下,NAND型FLASH的容量比NOR要大得多,生产成本更低,也更容易生产大容量的芯片.
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格.
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash, Secure Digital,PC Cards和MMC存储卡市场上所占份额最大.
6. 可靠性和耐用性
采用flash介质时一个需要重点考虑的问题是可靠性.对于需要扩展MTBF的系统来说,Flash是非常合适 的存储方案.可以从寿命(耐用性),位交换和坏块处理三个方面来比较NOR和NAND的可靠性.
6.1 寿命(耐用性)
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次.NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8 倍,每个NAND存储器块在给定的时间内的删除次数要少一些.
6.2 位交换
所有flash器件都受位交换现象的困扰.在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特(bit)位会发 生反转或被报告反转了.一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机.如果只是报告有问 题,多读几次就可能解决了.当然,如果这个位真的改变了,就必须采用错误探测/错误更正 (EDC/ECC)算法.位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法.这个问题对于用NAND存储多媒体信息时倒不是致命的.当然,如果用本地存储设备来存储操作系统,配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性.
6.3 坏块处理
NAND器件中的坏块是随机分布的.以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算.NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用.在已制成的器件中,如果通过可靠的方 法不能进行这项处理,将导致高故障率.
7. 易于使用
可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码.
由于需要I/O接口,NAND要复杂得多.各种NAND器件的存取方法因厂家而异.
在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作.向NAND器件写入信息需要相当的技巧,因 为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射.
8. 软件支持
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存 技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD.
9. 嵌入式板子中用到的存储概念
EEPROM(Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片.其可通过高于普通电压的作用来擦除和重编程(重写).不像EPROM芯片,EEPROM不需从计算机中取出即可修改.在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的,EEPROM的寿命是一个很重要的设计考虑参数.EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程.DRAM断电后存在其中的数据会丢失,而EEPROM断电后存在其中的数据不会丢失. 另外,EEPROM可以清除存储数据和再编程.一般用于即插即用(Plug & Play);常用在接口卡中,用来存放硬件设置数据;也常用在防止软件非法拷贝的"硬件锁"上面.
SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存取存储器,同步是指Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写.
SDRAM从发展到现在已经经历了四代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.(显卡上的DDR已经发展到DDR5)
10. CFI
谈到Flash,不能不提到一个概念CFI(Commen Flash Interface),公共闪存接口.自Flash诞生之后,他的应用就越来越广泛,由于生产Flash的厂家很多,不同厂商的Flash产品的操作命令集合电气参数各不相同,这给Flash的开发和设计人员和OEM制造商带来许多不便.为了对现有的Flash产品进行升级或者使用其它公司的Flash产品替代,必须对原有的程序代码和硬件结构进行修改.为了解决上述问题,CFI就诞生了,CFI是一个公开的标准,从Flash器件中读取数据的接口.他可以使系统软件查询已安装的Flash器件的各种参数,包括器件阵列结构参数、电气和时间参数以及器件支持的功能等.利用CFI可以不用修改系统软件就可以使用新型的和改进的产品代替旧版本的产品.为了确定一个Flash器件是否为CFI使能的,系统软件首先要通过CUI(命令用户接口)往Flash器件的地址55H写入数据98H,然后从器件的地址10H开始通过数据总线连续读取3个存储单元的内容,如果数据总线返回的3个存储单元的字符分别为“Q”“R”“Y”,则该器件是CFI使能的.