嵌入式存储器基础知识--RAM/ROM/FLASH


  本文总结嵌入式系统中RAM、ROM和FLASH的基础知识,重点说明各类内存在代码存储中的作用。如有疏漏之处,欢迎指正。感谢阅读!

一、前言

  按照存储器断电后,存储的数据内容是否会丢失的特性,将常用存储器分为两大类:

  • 易失性存储器(存取速度快,掉电丢失典型代表:内存RAM)
  • 非易失性存储器(可长期存储数据,存取速度慢,典型代表:硬盘,FLASH/ROM)

二、易失性存储器–RAM

  RAM(Random Access Memory-随机存储器)是计算机的主要内部存储器----内存。"随机存取"是数据读取和写入花费的时间与存储位置无关(这里的"随机"意味着数据并非线性排列,而是可以自由指定地址进行访问)。这种存储器具有访问速度快、读写次数不受限、支持随机访问等特点。然而,RAM也存在断电后数据丢失、存储容量有限以及成本较高等不足。

  在嵌入式系统中,RAM通常用于存储运行时数据、堆栈、寄存器,正在运行的操作系统、应用程序和临时数据等。

  RAM具有以下主要特点:

  1. 快速访问:RAM具有非常快速的读取和写入速度,可以实现高性能的数据存取。这使得RAM非常适合用于存储正在运行的程序和临时数据,以提供快速的计算和响应。
  2. 随机访问:RAM可以随机访问存储的数据,即可以直接访问任何存储单元,而不需要按照顺序进行读取或写入。这使得RAM非常适合用于需要快速访问任意数据的应用,如计算机内存和缓存。
  3. 容量灵活:RAM的容量可以根据需要进行灵活扩展,从几兆字节到几十或上百吉字节不等。这使得RAM可以满足不同应用的存储需求,从个人计算机到服务器和大型数据中心,但是总体容量较小。
  4. 临时存储:RAM主要用于临时存储数据和程序,当计算机断电或重新启动时,RAM中的数据将被清除。因此,RAM通常用于存储正在运行的操作系统、应用程序和临时数据,而不是长期存储。
  5. 高价格:相比于Flash等非易失性存储器,RAM的价格较高。这是因为RAM需要更高的性能和更复杂的制造工艺,以实现快速访问和随机访问的能力。

  RAM可以分为动态随机存储器 DRAM 以及静态随机存储器 SRAM 。速度:ROM=FLASH<DRAM<SRAM

2.1 动态随机存储器–DRAM(Dynamic RAM)

  DRAM的具体的工作过程是这样的:由 1个晶体管+1个电容(1T1C)构成存储单元,一个存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因,所以他需要定期刷新操作,即 Dynamic(动态的),访问速度通常 50~100ns 级

  根据 DRAM 的通信是否需要时钟信号,又分为SDRAM(Synchronous DRAM 同步动态随机存储器)和异步 DRAM,SDRAM在时钟的上升沿表示有效数据。相比于异步DRAM,SDRAM速度更快,应用更广。

  SDRAM,同步动态随机存储器,“同步”是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;“动态”是指存储阵列需要不断地刷新来保证数据不丢失;“随机”是指数据不是线性依次存储的,而是自由指定地址进行数据读写。

  为了进一步提高 SDRAM 的速度,设计出了 DDR SDRAM(Double Data Rate SDRAM,双倍速率同步动态随机存储器),在上升沿和下降沿各表示一位数据,即在时钟频率相同的前提下,相对于 SDRAM 在一个时钟周期内可以表示两位数据,速度翻倍。再有就是 DDR2 和 DDR3,他们与 DDR SDRAM 通信方式一样,只是通信的时钟频率提高了。(当前个人计算机多为 DDR3 或者 DDR4 ),这是目前主流的内存类型。DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM都属于SDRAM类型,其主要区别在于速度、容量与功耗

  主要用于电脑内存

2.2 静态随机存储器–SRAM(Static RAM)

  SRAM 的存储单元是由 6个晶体管(6T)构成,不需要定时刷新(断电还是会丢失数据的)。异步SRAM用的比较广泛。访问速度通常 1~10ns 级
(1)这里的“静态”,是指这种存储器只要保持通电状态,里面储存的数据就可以保持稳定,不需要像DRAM那样去刷新电路;但注意掉电时数据还是会消失的。
(2)SRAM速度非常快,是目前读写最快的存储设备。

Tips📌:
  DRAM 结构简单,生产相同容量的存储器,DRAM 成本低,集成度高,但是他的存取速度不如 SRAM,所以在实际应用中,SRAM 一般用于CPU内部高速缓存(Cache),而外部扩展的内存一般用 DRAM。

2.3 DRAM和SRAM比较

特性SRAM(片内)DRAM(片外)
访问速度1-10ns50-100ns
存储密度低(6T/单元)高(1T1C/单元)
功耗高(静态电流)低(动态刷新功耗)
成本高(占芯片面积)低(可外扩)
典型容量几 KB ~ 几 MB几十 MB ~ 几 GB

应用场景:
SRAM:芯片内部集成的RAM(如 STM32 的 128KB SRAM),高速缓存(Cache,如 Cortex-M7 的 TCM 内存),对实时性要求高的场合(如中断服务程序变量)。MCU上一般定义的全局变量都是存放在SRAM中的(也可以通过连接脚本控制)

DRAM:外挂大容量内存(如 Linux 嵌入式系统的 DDR SDRAM),需要大容量存储且对成本敏感的场景(如视频缓存)。一般超过片内 SRAM 容量的大数组,需要动态内存分配的大型缓存等内容存放在DRAM中(并不是所有的板子都存在DRAM的)

三、非易失性存储器–ROM and FLASH

  种类较多,半导体类的有 ROM 和 Flash,其他的还有光盘、软盘、机械硬盘等。本文主要讨论ROM和FLASH。

3.1 ROM

  ROM(Random Only Memory-只读存储器),它的内容在出厂时就已经被编程,不可修改。在嵌入式系统中,ROM通常用于存储启动代码、关键配置参数和系统固件,保了系统的稳定运行和数据可靠性。ROM数据具有永久保存特性,即使在断电情况下也能保持数据完整性,且无法被更改或删除。ROM的主要优点是读写速度快、容量大、可靠性高,价格便宜,但不支持擦写和编程,存储内容无法更新,存储速度不如RAM。

  ROM一般情况下只能读取而不能修改该介质里面的数据(按照EEPROM的描述,还是可以修改数据的,因此这句话改为“不能随意写”更为妥当)。

  在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、‘const’限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。

  ROM具有以下主要特点:

  1. 只读性:ROM中的数据在制造过程中被写入,一旦写入后就无法被修改或擦除。这使得ROM非常适合存储固定的程序代码、固件、操作系统等不需要修改的数据
  2. 持久性:与RAM和FLASH闪存不同,ROM中的数据在断电或重新启动后仍然保持不变。这使得ROM非常适合存储需要长期保存的数据,如固定的程序代码和配置信息
  3. 高可靠性:由于ROM中的数据无法被修改或擦除,所以它具有非常高的可靠性和稳定性。这使得ROM非常适合用于存储关键的系统代码和数据,以确保系统的正常运行。
  4. 低功耗:由于ROM不需要电力来维持存储的数据,所以它具有很低的功耗。这使得ROM非常适合用于低功耗设备和嵌入式系统,以延长电池寿命。

  例如,计算机的BIOS(基本输入输出系统)是存储在ROM中的。当我们打开计算机时,BIOS会首先运行,负责初始化硬件设备和加载操作系统。由于ROM的数据是只读的,所以BIOS在计算机启动过程中是不可修改的。

  为了便于使用和大批量生产,进一步发展出了可编程只读存储器(PROM)可擦除可编程只读存储(EPROM)。EPROM需要用紫外线长时间照射才能擦除,使用很不方便。1980年又出现了电可擦除可编程只读存储器(EEPROM),它克服了EPROM的不足,但是集成度不高、价格较贵。于是又发展出了一种新型的存储单元结构同EPROM类似的快闪存储器(FLASH MEMORY)。FLASH集成度高、功耗低、体积小,又能在线快速擦除,因而获得了快速发展。

类型特点
MASK ROM出厂固化,不可修改
PROM一次可编程存储器,不可擦
EPROM只能使用紫外线擦除,基本被淘汰,被EEPROM代替
EEPROM可以按字节为单位修改数据,无需擦除整个芯片。但是集成度不高、价格较贵。
FLASH集成度高、功耗低、体积小,又能在线快速擦除。

  但随着技术的发展,通常将掉电后数据不会消失的半导体存储器都泛称为 ROM ,因此现在的 ROM 一般是指 EEPROM 和 FLASH 。
  EEPROM常用于接口卡,用于存放硬件设置数据,如接口卡配置信息

3.2 Flash

  Flash 全名为Flash Memory,我们平时一般叫“闪存”,是存储芯片的一种。它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据的优势,使数据不会因为断电而丢失。容量一般比 EEPROM 大得多,擦除时一般以多个字节为单位,

  FLASH闪存具有以下主要特点:

  1. 非易失性:FLASH闪存存储的数据在断电后仍然保持,不需要电源维持。这使得FLASH闪存非常适合用于存储重要的数据和程序代码。
  2. 快速访问:FLASH闪存具有快速的读取和写入速度,可以实现高性能的数据存取。这使得它适用于需要快速存取数据的应用,如操作系统、应用程序和游戏。
  3. 高密度:FLASH闪存的存储单元采用浮栅晶体管结构,可以非常紧密地组织在一起,从而实现高存储密度,容量可达 TB 级(如 NAND Flash)。
  4. 低功耗:FLASH闪存在读取和写入数据时消耗的能量相对较低,适合用于便携设备和移动设备。这使得它成为手机、相机、便携式媒体播放器等设备的理想存储解决方案。
  5. 耐用性:FLASH闪存具有较高的耐用性,可以承受大量的擦写操作。每个存储单元的擦写次数有限,但通过使用擦除算法和均衡技术,可以延长FLASH闪存的寿命。

  根据存储单元电路不同分为 NOR Flash 和 NAND Flash。NOR Flash 和 NAND Flash 的共性是在数据写入前都需要进行擦除操作,而擦除操作一般是以 “ 扇区 / 块 ” 为单位的。

  NOR 和 NAND 特性的差别主要在于其内部 “ 地址 / 数据线 ” 是否分开。NOR 是分开的,可以按字节为单位读写数据,符合 CPU 指令译码要求,所以如果在其中存储的是代码,就具有立即执行的特性,而 NAND 数据和地址线公用,只能按 “块” 读写数据,所以其中存储代码的话,不具有立即执行的特性,需要先把代码加载到 RAM 存储器上,再由 CPU 执行。所以,在功能上,可以认为 NOR 是一种断电后数据不丢失的 RAM,只是擦除单位于 RAM 有区别,且读写速度比 RAM 慢很多。

特点NOR FlashNAND Flash
结构特点存储单元并联,支持随机访问;每个存储单元独立寻址(类似 RAM)存储单元串联,按页(Page)和块(Block)管理;通过复杂的控制器(如 FTL)管理坏块和磨损均衡。
优势XIP(Execute In Place):CPU 可直接从 NOR 执行代码,无需加载到 RAM;高可靠性:适合存储关键代码(如 Bootloader)高密度低成本:单位容量价格仅为 NOR 的 1/10。高速顺序读写:顺序读 >500MB/s
缺点存储密度低,成本高(单位容量价格是 NAND 的 5-10 倍)随机访问慢(需整页读取);需要 ECC 纠错(原始误码率高)
场景嵌入式系统固件(如路由器、智能手表);汽车 ECU 的启动代码存储大容量存储设备(SSD、U 盘、手机存储,固态硬盘)。

  Flash存储器是非易失性存储器,它可以被反复擦写和编程。在嵌入式系统中,Flash通常用于保存程序代码和数据,例如U-Boot、内核镜像、文件系统等。Flash存储器的主要优点是具有大容量、低功耗和高可靠性等特点,但它的擦写次数受到限制,一般只能擦写几万次。因此,在实际应用中,需要采用特殊的算法和策略来延长Flash的寿命。

四、总结

  ROM是只读存储器,其中存储的数据只能被读取,而不能被写入或修改。它通常包含计算机系统的启动程序和其他重要的系统信息。
  FLASH是一种可擦写非易失性存储器,它可以被重复写入和修改。它通常用于存储操作系统、应用程序和用户数据。
  RAM是一种易失性存储器,其中存储的数据可以被读取、写入和修改,但在断电后数据会消失。它通常用于临时存储计算机程序和数据。

五、常见问题

5.1 缓存与寄存器的区别

  缓存和寄存器都是计算机硬件组件,它们用于临时存储数据以提高处理器和内存之间的数据传输速度。尽管它们的目的相似,但它们之间存在一些关键区别:

  1. 存储位置:寄存器位于处理器(CPU)内部,是一种高速存储器。它们用于存储和处理中间结果、指令和其他重要数据。缓存位于CPU和主内存之间,可以是内部或外部的。它们主要用于存储处理器经常访问的数据和指令,以减少处理器和主内存之间的访问延迟。

  2. 存储容量:寄存器的数量有限,存储容量相对较小。然而,缓存的容量要大得多,可以存储更多数据和指令。缓存通常分为多级(如L1、L2和L3缓存),其中L1缓存最接近CPU,具有最小的访问延迟,但容量有限;L2和L3缓存具有更大的容量,但访问延迟稍长。

  3. 数据访问速度:寄存器的访问速度是最快的,因为它们位于CPU内部。缓存的访问速度要慢一些,但仍然比主内存快。多级缓存中,L1缓存的访问速度最快,L2和L3缓存的访问速度略慢。

  4. 数据管理:寄存器中的数据通常由处理器和编译器显式管理。程序员可以使用某些编程语言(如C语言中的register关键字)来建议将某个变量存储在寄存器中,但最终决定由编译器和处理器决定。缓存中的数据是由硬件自动管理的,通常基于某种缓存替换策略(如最近最少使用,LRU)来决定哪些数据应该被存储在缓存中。

  总之,寄存器和缓存都用于临时存储数据以提高处理器性能,但它们在存储位置、容量、访问速度和数据管理方面存在一些关键区别。

5.2 缓存与内存的区别

  缓存(一般为SRAM)和内存(一般为DRAM)都是计算机系统中用于存储数据的硬件组件。它们在存储位置、访问速度、容量和用途方面有一些关键区别。以下是缓存和内存之间的一些主要区别:

  1. 存储位置:缓存位于CPU和主内存(通常称为RAM)之间,可以是内部或外部的。它们用于存储处理器经常访问的数据和指令,以减少处理器和主内存之间的访问延迟。内存是计算机系统的一部分,用于存储程序和数据。

  2. 访问速度:缓存的访问速度比内存快。缓存被设计成具有较低的访问延迟,以便处理器能更快地访问存储在其中的数据。内存的访问速度较慢,尤其是与寄存器和缓存相比。

  3. 容量:缓存的容量相对较小,因为它只存储处理器经常访问的数据和指令。内存的容量要大得多,用于存储程序和数据。

  4. 用途:缓存主要用于减少CPU访问内存的延迟,提高系统性能。当CPU需要访问某个内存地址时,它首先检查缓存是否包含该地址的内容。如果找到匹配项(称为缓存命中),CPU将直接从缓存中读取数据,而不是从内存中读取。如果未找到匹配项(称为缓存未命中),CPU将从内存中读取数据,并将其存储在缓存中以供将来使用。内存用于存储程序和数据,在计算机启动时加载操作系统和应用程序。

  总之,缓存和内存是计算机系统中用于存储数据的硬件组件,它们在存储位置、访问速度、容量和用途方面有一些关键区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值