存储器分类
存储器分为易失性存储器和非易失性存储器
- 易失性存储器:断电就失忆,数据瞬间清零,典型的代表是RAM(随机存取存储器),比如DRAM和SRAM。
- 非易失性存储器:断电也能硬扛,数据稳稳当当留着,比如Flash(闪存)和EEPROM。
易失性存储器–DRAM、SRAM区别
非易失性存储器
NOR Flash
- NOR Flash 最大的特点是支持 XIP (Execute In Place),可以直接在 Flash 上执行代码,而不需要将代码复制到 RAM 中。
- 原理: NOR Flash 的存储单元以并行方式连接,每个存储单元都可以独立访问。
- 特点
- XIP (Execute In Place): 允许CPU直接在Flash上执行代码,无需先将代码复制到RAM中,节省了RAM空间和启动时间。
- 读取速度快: 适合频繁读取的场景。
- 擦写速度慢: 不适合频繁擦写的场景。
- 按字节或字读取: 可以随机访问任意地址的数据。
- 容量相对较小: 相对于NAND Flash,NOR Flash的容量通常较小。
NAND Flash
- NAND Flash 最大的特点是容量大、成本低,适合存储大量数据。
- **原理:**NAND Flash 的存储单元以串行方式连接,需要按块进行读写。
- 特点:
- 容量大:适合存储大量数据。
- 成本低:相对于 NOR Flash,NAND Flash 的成本更低。
- 擦写速度慢:不适合频繁擦写的场景。
- 读取速度相对较慢:相对于 NOR Flash,NAND Flash 的读取速度较慢。
- 按块 (Block) 擦除,按页 (Page) 读写:不能随机访问任意地址的数据。
- 需要进行坏块管理:NAND Flash 存在坏块,需要在软件层面进行管理。
- 不支持 XIP:不能直接在 Flash 上执行代码,需要先将代码复制到 RAM 中。
NOR Flash 和NAND Flash 怎么选?
- 在选择NOR Flash和NAND Flash时,需要考虑以下因素:
- 存储容量: 如果需要存储大量数据,选择NAND Flash。
- 代码执行: 如果需要直接在Flash上执行代码,选择NOR Flash。
- 读写速度: 如果需要频繁读取数据,选择NOR Flash;如果需要频繁擦写数据,需要谨慎选择,因为Flash的擦写次数有限制。
- 成本: NAND Flash的成本比NOR Flash低。
- 系统复杂性: NAND Flash需要进行坏块管理,系统复杂性较高。
EEPROM
- EEPROM (Electrically Erasable Programmable Read-Only Memory) 以其灵活的字节/页擦写能力而闻名,在嵌入式系统中常用于存储配置数据、校准参数等少量但需要频繁更新的数据。
- **原理:**EEPROM 的存储单元使用浮栅晶体管,可以通过电信号擦除和写入数据。
- 特点
- 按字节/页擦写:可以单独擦除和写入 EEPROM 中的任意字节或页,非常灵活。
- 容量相对较小:相对于 Flash,EEPROM 的容量通常较小。
- 擦写速度慢:擦写操作需要较长时间。
- 寿命有限:EEPROM 的擦写次数有限制。
- 非易失性:断电后数据不会丢失。
- 接口简单:通常使用 I2C 或 SPI 接口。
**MRAM **
- MRAM(Magnetoresistive Random Access Memory)是一种新兴的非易失性存储器,它结合了SRAM的速度和Flash的非易失性,具有高速度、低功耗、高寿命等优点,被认为是下一代存储器的重要发展方向。
- **原理:**MRAM 使用磁性材料来存储数据,通过改变磁性材料的磁化方向来表示 0 和 1。
- 特点
- 速度快:接近 SRAM 的速度。
- 非易失性:断电后数据不会丢失。
- 功耗低:比 SRAM 功耗低。
- 寿命长:擦写次数几乎没有限制。
- 抗辐射能力强:适用于恶劣环境。
- 成本较高:目前 MRAM 的成本还比较高。
- 容量相对较小:与 NAND Flash 相比,MRAM 的容量还比较小。
存储器选型:量身定制的解决方案
- 选型原则:没有最好的,只有最合适的。 没有一种存储器是万能的,选型的关键在于找到与项目需求最匹配的方案。
- 需要综合考虑以下几个关键因素:
- 容量 (Capacity):需要存储多少数据?
- 速度 (Speed):对读写速度要求有多高?
- 易失性 (Volatility):断电后是否需要保存数据?
- 擦写次数 (Endurance):需要擦写多少次数据?
- 功耗 (Power Consumption):对功耗要求有多高?
- 成本 (Cost):预算是多少?
- 接口 (Interface):单片机支持哪些接口?
- 可靠性 (Reliability):对数据安全要求有多高?
- 工作温度 (Operating Temperature):应用环境的温度范围?
选型流程:从需求出发,逐步缩小范围
- 确定是否需要非易失性存储
- 如果断电后数据需要保存,则选择 NAND Flash、NOR Flash、EEPROM、MRAM。
- 如果断电后数据可以丢失,则选择 SRAM 或 DRAM。
- 为了更直观了解,可以看下面这张图:

- 额外的建议
- 参考 datasheet:在最终选型之前,务必仔细阅读所选存储器的 datasheet,了解其详细参数和性能指标。
- 评估软件开销:NAND Flash 需要复杂的 1FTL(Flash Translation Layer)来管理坏块,会占用额外的代码空间和资源。
- 考虑供应链:确保所选的存储器有稳定的供货渠道。
- 考虑兼容性和生态:比如 NAND Flash 和 NOR Flash 会涉及到不同的文件系统,需要考虑到单片机对其支持程度。
Footnotes
-
FTL是指Flash Translation Layer(闪存转换层)。在该原文语境中,NAND Flash需要复杂的FTL来管理坏块,说明FTL是NAND Flash存储技术中用于处理坏块等问题的关键机制。 具体含义上,FTL是NAND Flash设备固件的核心组成部分,主要功能是实现逻辑地址与物理地址的映射转换,管理坏块、磨损均衡、垃圾回收等操作,以隐藏NAND Flash的硬件特性,提升SSD等存储设备的性能和可靠性。例如,它能将主机的逻辑块地址转换为闪存的物理块地址,处理数据写入时的“先擦后写”、垃圾回收、数据保存错误等问题,避免因闪存读写限制导致的数据干扰和存储效率低下。 延伸来看,FTL的实现方式可分为Host-Based和Device-Based两种。前者需厂商与用户深度合作,多用于企业级产品;后者在设备端通过控制器和RAM资源实现,更常见于消费级SSD。其算法优劣直接影响SSD的性能、可靠性和耐用性,是闪存类存储设备正常运作的关键技术。 ↩