RAM、ROM存储基础
在嵌入式系统和单片机开发中,存储器是至关重要的组成部分。常见的存储器类型包括RAM(随机存取存储器)、ROM(只读存储器)、FLASH和EEPROM(可电擦除可编程的只读存储器)。
一、RAM(随机存取存储器)
什么是RAM?
RAM(Random Access Memory)是一种易失性存储器,意味着断电后数据会丢失。
在单片机中,RAM主要用于存储临时变量、存储动态分配的数据。
1.1 关键参数与指标
-
容量:在PC中RAM就是16G、8G的那种DDR内存条,通过PCIe实现通信;不过在单片机中大一点的RAM空间也才512KBM,小的话更是可怜;
-
速度:较快,访问速度通常与CPU的主频同步,一般在几十MHz到几百MHz之间;此外由于RAM直接由CPU访问,读写速度远高于外部存储器(Flash、EEPROM);
二、ROM(只读存储器)
什么是ROM?
ROM(Read-Only Memory)是一种非易失性存储器,意味着断电后数据不会丢失。
在单片机中,ROM通常用于存储固件和启动代码、存储常量数据。
2.1 关键参数与指标
-
容量:在PC中ROM不知道在哪,一般就是存BIOS之类的,通常在16MB左右;
-
速度:类型太多,一般也在几十MHz到几百MHz之间;
三、FLASH(闪存)
首先毫无疑问的是Flash属于ROM的一种;Flash存储器是一种非易失性存储器,结合了RAM和ROM的优点。它允许快速读写数据,并且断电后数据不会丢失。
在单片机中,Flash存储器主要用于:存储程序代码、存储配置数据和用户数据、固件。
3.1 关键参数与指标
- 容量:通常以KB或MB为单位,表示Flash可以存储的数据量。
- 耐久性:表示Flash可以承受的编程/擦除次数,通常在10万次以上。(频繁写入、擦除可能导致寿命缩短)
- 访问速度:以MHz为单位,表示Flash的读写速度。
3.2 NAND Flash技术
NAND Flash是一种非易失性存储器,广泛应用于嵌入式系统、消费电子、数据中心和存储设备中。与NOR Flash相比,NAND Flash具有更高的存储密度和更低的成本,但其读写特性有所不同。
NAND Flash 的特点:
- 高存储密度:单位面积内可以存储更多数据。
- 块擦除操作:数据以块(Block)为单位进行擦除,而不是以字节或字为单位。
- 顺序访问:适合大容量数据的连续读写,但不支持随机访问。
页(Page)和块(Block)
页(Page):NAND Flash的最小读写单位,通常为4KB、8KB 或 16KB。
块(Block):NAND Flash的最小擦除单位,通常由多个页组成(如 64 页或 128 页)。
通过时序图配置Flash芯片,即可驱动Flash完成初始化、擦写等动作。
3.3 NOR Flash技术
NOR Flash 的特点:
- 随机访问:支持以字节或字为单位直接访问数据,适合代码执行。
- 高可靠性:数据存储稳定,适合存储关键代码和配置数据。
- 较慢的写入和擦除速度:与NAND Flash相比,NOR Flash的写入和擦除速度较慢。
3.4 NAND Flash与NOR Flash特性对比
特性 | NOR Flash | NAND Flash |
---|---|---|
随机访问 | 支持,适合代码执行 | 不支持,适合顺序访问 |
容量 | 较小(几KB到几百MB) | 较大(几GB到几TB) |
写入/擦除速度 | 较慢 | 较快 |
耐久性 | 较高(10万到100万次) | 较低(几千到几万次) |
成本 | 较高 | 较低 |
应用场景 | 代码存储、配置数据 | 大容量数据存储 |
3.5 Flash常见问题
坏块(Bad Block) NAND Flash在生产和使用过程中可能会产生坏块。坏块是无法正常读写或擦除的存储块。解决方法:
- 使用坏块管理(Bad Block Management, BBM)机制。(比较复杂,需要单独再理解下)
- 在文件系统中标记坏块并避免使用。
写放大(Write Amplification) 由于NAND Flash的擦除操作以块为单位,而写入操作以页为单位,可能导致写放大现象。写放大会降低存储器的寿命和性能。解决方法:
- 使用磨损均衡(Wear Leveling)算法。
- 优化文件系统和存储管理策略。
数据保持(Data Retention) NAND Flash 中的数据可能会随着时间的推移而丢失,尤其是在高温环境下。解决方法:
- 定期刷新数据。
- 使用纠错码(ECC)检测和纠正数据错误。
四、EEPROM(电可擦可编程只读存储器)
EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种可以通过电信号擦除和编程的非易失性存储器。它的特点是:
- 非易失性:断电后数据不会丢失。
- 电可擦写:可以通过电信号擦除和重新编程。
- 字节级擦写:可以按字节擦写,而不需要像Flash那样按块擦除。
当然EPROM(Erasable Programmable Read-Only Memory)也是一种非易失性存储器,但是EPROM需要紫外线擦除,随着技术的发展,EEPROM和Flash逐渐取代了EPROM。
4.1 关键参数与指标
- 容量:EEPROM的容量通常较小,范围从几字节到几百KB
- 耐久性:EEPROM的擦写次数通常为10万次到100万次,具体取决于存储单元的类型。
- 访问速度:读取速度,通常在几十ns到几百ns之间;写入速度,较慢,通常在几ms到几十ms之间。
4.2 EEPROM与NOR Flash特性对比
特性 | EEPROM | Flash |
---|---|---|
擦写单位 | 字节 | 块(通常为4KB或更大) |
擦写次数 | 10 万到 100 万次 | 1千到10万次 |
容量 | 较小(几字节到几百 KB) | 较大(几 KB 到几 GB) |
写入速度 | 较慢(几 ms 到几十 ms) | 较快(几 µs 到几 ms) |
成本 | 较高 | 较低 |
应用场景 | 小容量、频繁修改的数据 | 大容量、较少修改的数据 |