市场上常用的Flash类型有Nor Flash和NAND Flash两种。
Nor Flash由Intel公司在1988年发明,以替代当时在市场上占据主要地位的EPROM和E2PROM。NAND Flash由Toshiba公司在1989年发明。两者的主要差别如下表:
- | Nor | NAND |
---|---|---|
XIP(代码可以直接运行) | Yes | no |
性能(擦除) | 非常慢(5s) | 快(3ms) |
性能(写) | 慢 | 快 |
性能(读) | 快 | 快 |
可靠性 | 较高,位反转的比例小于NAND Flash的10% | 比较低,位反转比较常见,必须有校验措施,比如TNR必须有坏块管理措施 |
可擦除次数 | 10000 ~ 100000 | 100000 ~ 1000000 |
生命周期 | 低于NAND Flash的10% | 是Nor Flash的10倍以上 |
接口 | 与RAM接口相同 | I/O接口 |
易用性 | 容易 | 复杂 |
主要用途 | 常用于保存代码和关键数 | 用于保存数据 |
价格 | 高 | 低 |
Nor Flash支持XIP(见附录),即代码可以直接在Nor Flash上执行,无需复制到内存中。这是由于NorF lash的接口与RAM完全相同,可以随机访问任意地址的数据。Nor Flash进行读操作的效率非常高,但是擦除和写操作的效率很低,另外,Nor Flash的容量一般比较小。NAND Flash进行擦除和写操作的效率更高,并且容量更大。一般而言,Nor Flash用于存储程序,NAND Flash用于存储数据。基于NAND Flash的设备通常也要搭配Nor Flash以存储程字。
Nor Flash的接口与RAM完全相同,可以随意访问任意地址的数据。而NAND Flash的
接口仅仅包含几个I/O引脚,需要串行地访问。NAND Flash一般以512字节为单位进行读写。这使得Nor Flash适合于运行程序,而NAND Flash更适合于存储数据。
附录:
XIP eXecute In Place
eXecute In Place,即芯片内执行,指应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。flash内执行是指nor flash 不需要初始化,可以直接在flash内执行代码。但往往只执行部分代码,比如初始化RAM.
(注:片内执行不是说程序在存储器内执行哦,CPU的基本功能就是取指、译码和执行。norflash能在芯片内执行,就是指CPU的取指模块能够直接从norflash中把指令取出来,供后面的译码和执行模块使用)