NOR与NAND闪存核心区别解析

张开发
2026/4/20 2:00:16 15 分钟阅读

分享文章

NOR与NAND闪存核心区别解析
NOR Flash和NAND Flash是两种主流的非易失性闪存技术它们在内部结构、接口、性能、容量成本、可靠性及应用场景上存在根本性差异。NAND Flash因其高密度、低成本在大容量数据存储领域占主导而NOR Flash则因其快速随机读取和芯片内执行能力在代码存储和小容量应用上不可或缺。下表从核心维度系统对比了NOR Flash与NAND Flash的区别对比维度NOR FlashNAND Flash内部结构与接口并行地址/数据总线类似SRAM。提供独立的地址线和数据线支持字节级随机访问CPU可直接通过地址总线读取任意字节实现芯片内执行XIP。复用的I/O接口类似硬盘。采用命令、地址、数据复用的8位或16位I/O总线。访问以页Page为单位必须先通过命令序列将目标页加载到内部缓存再进行读取不支持直接字节级随机访问和XIP。读取性能随机读取速度快。得益于SRAM-like接口读取延迟低通常在~100ns量级适合需要频繁随机读取代码的场合。顺序读取速度快随机读取慢。连续读取大块数据时吞吐量高。但随机访问需要先寻址到页再在页内寻址延迟高于NOR。写入与擦除性能写入和擦除速度慢。写入前必须先擦除而擦除操作以扇区Sector为单位通常64KB~128KB耗时长达0.6s~1s。写入速度也远慢于NAND。写入和擦除速度快。编程写入和擦除以页通常2KB~16KB和块Block通常64~256页为单位进行速度比NOR快一个数量级擦除块约2~4ms。存储密度与成本密度低单位成本高。每个存储单元需要独立的触点连接导致芯片面积大存储密度难以大幅提升通常在几Mb到1Gb之间。密度高单位成本低。存储单元采用串联结构无需独立触点单元面积小易于制造大容量芯片从几百Mb到数Tb单位比特成本远低于NOR。可靠性与耐用性位错误率低。初始坏块少数据保存期长典型10~20年。擦写次数较低通常为10万次。需要坏块管理和ECC。出厂时即存在一定比例的坏块且在使用中会产生新的坏块。必须通过坏块管理BBM和纠错码ECC来保证数据可靠性。擦写次数更高MLC型可达1万次SLC型可达10万次以上。软件支持与访问方式接口简单易于访问。CPU可像访问ROM或SRAM一样直接读取驱动程序简单无需复杂的FTL闪存转换层。需要复杂驱动/FTL。访问必须遵循严格的命令序列。用于存储文件系统时需要FTL来模拟块设备处理坏块、磨损均衡和垃圾回收软件开销大。主要应用场景1.存储并直接执行代码XIP如嵌入式系统启动代码Bootloader、固件、操作系统内核。2.小容量配置数据存储。3.对随机读取速度要求高的场合。1.大容量数据存储如固态硬盘SSD、eMMC/UFS、SD卡、USB闪存盘。2.多媒体文件存储手机、相机、平板电脑中的照片、音频、视频。3.需要频繁更新数据的场合。深入解析结构差异如何决定特性两者的核心差异源于其基本存储单元浮栅场效应管的连接方式。NOR Flash的结构类似于传统的ROM或SRAM其存储单元是并联的。每个存储单元的源极接地漏极连接到位线Bit Line。这种结构使得每一位Bit都可以被独立地寻址和访问。当字线Word Line被选中时对应的存储晶体管导通根据其阈值电压状态决定位线上是否有电流流过从而读出数据。这种“或非门NOR”式的连接任何一条字线选中输出即为有效赋予了它随机访问的能力。/* 模拟NOR Flash的直接内存映射读取 (伪代码) */ volatile uint8_t *nor_flash_base (volatile uint8_t*)0x60000000; // NOR Flash映射到内存空间 uint8_t data_at_offset_0x100 nor_flash_base[0x100]; // 直接通过地址读取NAND Flash的结构则是串联的多个存储单元如32个或64个串联成一个“NAND串”共享一条位线。要读取某个单元需要将该串中其他所有单元置为导通状态。这种结构类似于“与非门NAND”导致其无法像NOR那样直接通过地址线选中某个单元必须通过复杂的行、列地址译码以页为单位进行存取操作。/* 模拟NAND Flash的页读取操作 (伪代码高度简化) */ void nand_read_page(uint32_t page_addr, uint8_t *buffer) { // 1. 发送读命令0x00 send_command(0x00); // 2. 发送页地址分多次发送行地址 send_address(page_addr); // 3. 发送确认读命令0x30 send_command(0x30); // 4. 等待就绪检查R/B#引脚或状态寄存器 wait_for_ready(); // 5. 从数据端口连续读取一页数据如2048字节64字节Spare Area for(int i0; i2048; i) { buffer[i] read_data_byte(); } } // 要读取某个特定字节必须先读取其所在的整个页到RAM缓冲区 uint8_t data; nand_read_page(target_page, page_buffer); data page_buffer[byte_offset_within_page];应用场景与选型实例案例一微控制器MCU系统在STM32等ARM Cortex-M系列MCU中通常内置或外接一片NOR Flash或兼容接口的Flash来存储程序代码。MCU上电后直接从Flash的0x0800 0000地址开始取指执行XIP。这是因为启动时代码执行路径随机中断向量表、初始化代码需要NOR的快速随机读取能力。而系统的参数、日志等需要频繁擦写的数据则可以存储在一片外置的SPI NAND Flash中利用其大容量和快速擦写特性。案例二智能手机存储智能手机的存储方案是典型的混合架构。其eMMC或UFS存储芯片内部核心是NAND Flash阵列用于存储操作系统、应用程序和用户数据照片、视频等。然而在手机启动的初始阶段CPU需要执行一段固化的引导程序Boot ROM。这段引导程序通常存储在CPU片内的一小块NOR Flash或Mask ROM中因为它必须支持XIP确保在DRAM和主存储控制器初始化之前就能可靠运行。案例三固态硬盘SSDSSD是NAND Flash的绝对主场。其内部由多通道、多芯片、多层如TLC/QLC的NAND颗粒组成通过一个强大的SSD主控芯片管理。主控实现了复杂的FTL负责地址映射、磨损均衡、垃圾回收和ECC校验以克服NAND Flash接口复杂、有坏块、需要擦除后写入等缺点最终向主机呈现出一个高速、可靠、易用的块设备如SATA或NVMe接口。技术演进与混合方案为了兼顾NOR的快速随机读取和NAND的高密度优势出现了OneNAND等混合型闪存。OneNAND本质上是在一个芯片内集成了小容量的SRAM缓冲区、NAND存储阵列以及一个NOR Flash接口的控制器。CPU通过标准的NOR接口快速访问SRAM缓冲区而控制器则在后台管理从NAND阵列到SRAM的数据搬运。这样它在系统层面表现为一个支持XIP的“NOR”设备但底层存储是成本更低的NAND技术适用于对启动速度和成本都有要求的多媒体设备。总结选择NOR还是NAND根本上是应用需求与技术特性的匹配需要存储并直接执行代码、对随机读取延迟敏感、容量要求不大1Gb时选择NOR Flash。需要海量数据存储、对顺序读写吞吐量要求高、成本敏感、且系统有足够的软件FTL或硬件主控来处理NAND的复杂性时选择NAND Flash。理解这两种闪存的根本区别是进行嵌入式系统存储架构设计和选型的基础。参考来源nor Nand and Onenand flash区别总结nor Nand and Onenand flash区别总结NOR flash和NAND flash的区别简述单片微型计算机屏蔽的作用,单片微机原理及接口技术习题解答.pdfNAND Flash 和 NOR Flash原理和差异对比NAND和NOR Flash的区别

更多文章