Flash 存储器的技术内核:NOR 与 NAND 的差异与适配
扫描二维码
随时随地手机看文章
Flash 的核心技术差异集中在 NOR 与 NAND 两大类型上,两者的存储单元结构、读写擦机制、性能指标截然不同,决定了它们在嵌入式系统中的 “分工”——NOR 是 “程序存储器”,NAND 是 “数据存储器”。理解两者的技术细节,是嵌入式系统存储选型的关键。
(一)NOR Flash:为 “程序执行” 而生的架构
NOR Flash 由英特尔在 1988 年推出,其名称源于存储单元的 “或非”(NOR)逻辑结构。从存储单元来看,NOR Flash 的每个浮栅 MOS 管直接连接到位线与字线,形成 “并行访问” 结构 —— 每个存储单元可独立被选中,支持 “随机读取”(直接读取任意地址的指令),这与 MCU 执行程序的需求高度契合:MCU 运行时,需要从存储器中随机读取分散的指令(如跳转指令、分支指令),NOR Flash 的随机读取速度可达几十纳秒(与 SRAM 接近),能够满足程序实时执行的需求。
在读写擦机制上,NOR Flash 的特点是 “读快、写慢、擦除慢”:读取时,通过字线施加电压,检测位线电流(浮栅有电子则电流小,代表 1;无电子则电流大,代表 0),速度快且无需额外处理;写入时,需先将目标单元擦除为 1(通过高电压释放浮栅电子),再写入 0(注入电子),且写入必须按 “页”(通常 256B-4KB)进行,单页写入时间约 10-100 微秒;擦除则按 “块”(通常 64KB-512KB)进行,单块擦除时间约 1-10 毫秒。这种 “先擦后写” 的机制源于浮栅管的特性 —— 无法直接将 1 改为 0,必须先擦除(恢复 1)再写入(变为 0)。
NOR Flash 的核心优势是随机读取性能优异、可靠性高、支持 XIP(Execute In Place,片上执行):由于随机读取速度快,MCU 可直接在 NOR Flash 中执行程序,无需将程序加载到 RAM 中,大幅节省了 RAM 资源(尤其适合 RAM 容量有限的低端 MCU)。此外,NOR Flash 的位翻转率极低(数据错误率约 10^-15),无需复杂的纠错机制,可靠性高,适合工业控制、汽车电子等对稳定性要求严苛的场景。但其局限性也很明显:存储密度低于 NAND Flash(相同芯片面积下,容量仅为 NAND 的 1/3-1/5),成本更高,且顺序写入速度慢,不适合大容量数据存储。
(二)NAND Flash:为 “大容量数据” 优化的设计
NAND Flash 由东芝在 1989 年推出,其名称源于存储单元的 “与非”(NAND)逻辑结构。与 NOR Flash 的 “并行访问” 不同,NAND Flash 的存储单元采用 “串联结构”—— 多个浮栅 MOS 管串联在字线与位线之间,形成 “页”(通常 4KB-16KB),多个页组成 “块”(通常 128KB-2MB),多个块组成 “平面”,甚至多个平面组成 “芯片”。这种串联结构大幅减少了位线与字线的数量,单个存储单元占用面积仅为 NOR Flash 的 1/5-1/10,存储密度极高,成本仅为 NOR Flash 的 1/3 左右。
NAND Flash 的读写擦机制围绕 “顺序操作” 优化,特点是 “顺序读写快、随机读取慢、擦除快”:读取时,需先激活目标块与页,通过 “页缓冲器” 读取数据,顺序读取速度可达 100MB/s 以上(远超 NOR Flash),但随机读取速度慢(需几百纳秒到几微秒),因为每次随机读取都需重新激活块与页,无法像 NOR 那样直接访问任意地址;写入时,按 “页” 进行,单页写入时间约 1-10 微秒(快于 NOR Flash),且支持 “连续页写入”,顺序写入速度可达 50MB/s 以上;擦除按 “块” 进行,单块擦除时间约 1-5 毫秒(与 NOR Flash 相当,但块容量更大,单位容量擦除效率更高)。
NAND Flash 的核心优势是存储密度高、成本低、顺序读写性能优异,适合存储大容量数据,如物联网传感器的历史监测数据、汽车的驾驶日志、消费电子的多媒体文件(图片、音频)。但它也存在两个关键局限:一是不支持 XIP,由于随机读取速度慢,无法直接在 NAND 中执行程序,必须先将程序加载到 RAM 中,因此仅能作为 “数据存储器”;二是可靠性较低,由于存储单元密度高,氧化层更薄,容易出现位翻转(数据错误率约 10^-6),必须配合 ECC(Error Correction Code,纠错码)技术(如 BCH、LDPC 码)进行数据纠错,同时需要 “坏块管理” 机制 ——NAND Flash 出厂时可能存在 “坏块”(无法正常擦写的块),使用过程中也会因磨损产生新坏块,需通过软件标记坏块并跳过,避免数据写入错误。
(三)嵌入式 Flash:MCU 集成的 “微型存储”
除了独立的 NOR/NAND Flash 芯片,嵌入式系统中还广泛使用 “集成式 Flash”—— 将 Flash 存储器与 MCU 核心、外设集成在同一芯片上,形成 “单芯片解决方案”,即我们常说的 “带 Flash 的 MCU”(如 STM32 系列、PIC 系列)。这类嵌入式 Flash 本质上是 “简化版 NOR Flash”,因为 MCU 需要直接在 Flash 中执行程序(支持 XIP),且程序容量通常不大(从几 KB 到几 MB),无需 NAND 的大容量特性。
嵌入式 Flash 的技术优化聚焦于 “低功耗” 与 “小体积”:针对 MCU 的电池供电场景(如智能手环、无线传感器),嵌入式 Flash 支持 “深度休眠模式”,休眠时仅保留数据,不消耗功耗;同时,采用 “单电压供电”(如 3.3V),无需额外的高压擦写电路,简化了 MCU 的电源设计。此外,嵌入式 Flash 的擦写单元更小(块容量通常为 1KB-64KB),适配 MCU 的小容量程序修改需求(如固件升级时仅擦写修改的代码块),擦写寿命通常为 1 万 - 10 万次,数据保持力可达 10-20 年,完全满足嵌入式系统的程序存储需求。





