在嵌入式系统和存储设备中,Flash存储器扮演着至关重要的角色。作为非易失性存储器的一种,Flash即使在断电后也能保持数据不丢失。目前市场上主流的Flash存储技术分为NOR和NAND两种架构,它们虽然名称相似,但在内部结构、性能特性和应用场景上存在显著差异。
我第一次接触这两种存储芯片是在开发智能家居控制板时,当时为了选择合适的存储器,花了整整两周时间研究它们的特性。NOR Flash允许随机访问,代码可以直接在其上执行,这让我在开发初期省去了额外RAM的开销;而NAND Flash的大容量和低成本特性,则在后期的数据存储方案中发挥了关键作用。
NOR Flash采用并行架构,其存储单元通过金属导线直接连接到位线上,形成"或非门"(NOR)逻辑结构。这种设计使得每个存储单元都有独立的寻址路径,典型的结构中,存储单元以矩阵形式排列,行选择线和列选择线交叉处的单元可以被直接访问。
在实际项目中,我测量过某型号NOR Flash的访问时间:读取一个32位数据仅需90ns,这得益于它的并行特性。但这也带来了面积效率低下的问题——同样工艺下,NOR的存储密度通常只有NAND的1/4到1/8。
NAND Flash则采用串联结构,多个存储单元串联形成NAND串(通常16或32个单元一组)。这种设计大幅减少了金属连线的数量,使得存储密度显著提高。我拆解过U盘中的NAND芯片,在显微镜下可以清晰看到这种链式结构。
但这种结构也带来了访问方式的改变:NAND必须按页(Page)读取,典型页大小为4KB-16KB。在我开发的视频记录设备中,这种特性使得连续读写非常高效,但随机访问性能较差,延迟可达25μs以上。
通过实际测试某品牌同代次的两种Flash芯片,得到以下对比数据:
| 参数 | NOR Flash (MX25L256) | NAND Flash (MT29F256G) |
|---|---|---|
| 随机读取延迟 | 85ns | 25μs |
| 连续读取速度 | 80MB/s | 400MB/s |
| 页编程时间 | 7ms/page | 300μs/page |
| 块擦除时间 | 0.5s/64KB | 2ms/128KB |
从测试可见,NOR在随机访问上优势明显,而NAND在连续吞吐量上更胜一筹。这解释了为什么嵌入式系统常用NOR存储代码,而大容量设备多用NAND存储数据。
在工业级应用中,我收集过这两种Flash的寿命数据:
这导致在航天项目中我们只敢用NOR,而消费电子则普遍采用NAND配合纠错算法。
基于亲身体验,NOR特别适合以下场景:
我在设计智能电表时,就采用NOR存储计量算法和关键参数,确保即使突然断电也不会丢失重要数据。
NAND则在以下场景表现突出:
开发行车记录仪时,我测试过不同方案,最终选择MLC NAND配合磨损均衡算法,在成本和容量间取得了最佳平衡。
根据项目需求,我总结出以下选型流程:
新兴技术如3D XPoint正在模糊两者界限,但在可预见的未来,NOR和NAND仍将保持各自的优势领域。最近我在设计IoT网关时,就采用了NOR存储固件+NAND存储日志的混合方案,取得了不错的效果。