目录

  01  开 篇

  02  整体把握

  03  RAM

  04  ROM

  05  闪 存

  06  总 结


  01  开 篇

实不相瞒,直到我入行开始做项目,我也没搞明白ROM、SRAM、DRAM、eMMC、NAND flash……这一串存储的区别,都是临时抱佛脚,碰上了再现学现卖;

开始做自己的产品后,才慢慢搞清楚;所以,本篇小记的目标就是搞懂这些存储的概念以及用处。


  02  整体把握

要弄懂,就不能只盯着概念,否则云里雾里不如不看;

第一步,先系统的捋一遍,存储的大致架构如下,在末端细分罗列了当下比较主流的具体存储类型。

从思维导图可以看出,整个存储器只有两大类,易失性和非易失性;说人话就是,一类具备记忆功能,掉电后数据依然能够保存,另一类不具备记忆功能,掉电后数据丢失。

注意,在很多场合,有些人会把非易失性存储器统称为ROM,这是不对的,ROM和Flash不是一回事,下面会进行说明。


  03  RAM

RAM(Random Access Memory)全称:随机存取存储器;

只需要记住它的读写速度极快、并且可以随机访问任意存储单元,因为它属于易失性存储器,所以掉电后数据会丢失。

同时,RAM又分为DRAM和SRAM,它们的区别是什么呢?

· DRAM(Dynamic RAM)全称:动态随机存取存储器,需要定期刷新电荷才能维持数据;它就是常说的电脑内存条,市面上火热的DDR3、DDR4、DDR5都属于DRAM。

· SRAM(Static RAM)全称:静态随机存取存储器,不需要刷新,速度更快、成本高;它就是CPU厂商经常描述自家的CPU具备某某大小的L1、L2、L3缓存,包括日常开发的MCU中的Cache也属于SRAM。

认识RAM后,自然就会问有没有一种运行速度快,而且还能掉电后保持数据的RAM呢?

答案是Yes,它就是大名鼎鼎的FRAM(Ferroelectric Random-Access Memory)全称:铁电随机存取存储器;俗称:铁电或掉电RAM;需要特别小心,虽然FRAM具备RAM的性能,但实际上它却属于非易失性存储器大类!


  04  ROM

ROM(Read-Only Memory)全称:只读存储器;

只需要记住它的特点读写速度慢,结构稳定、可靠性高;因为它属于非易失性存储器,所以掉电后数据可保存。

经过几十年的迭代,发展出PROM、EPROM、EEPROM;

· PROM(Programmable ROM)全称:可编程ROM,但只能写入一次,写入程序后,不可更改,只能读取;现在依然有很多的小家电使用这一类ROM,无它,就是大批量生产时便宜、可靠、简单。

· EPROM(Erasable Programmable ROM)全称可擦除可编程只读存储器;从这种ROM开始,已经可以支持擦除重写了,很有意思,这种RAM的封装上会开一个小窗,然后用紫外线照射才能擦除,在上个世纪八九十年代,用来保存个人电脑的bios程序,我们大概率是碰不到了。

· EEPROM(Electrically Erasable PROM)全称电可擦除可编程只读存储器;这种ROM就是现下嵌入式比较主流的存储器了,它可以允许通过电信号对芯片进行字节级的擦除和重写;一般多用来给微控制器进行拓展,存放一些校准数据,我们做传感器的时候就可以通过外挂一个EEPROM存放校准参数。

到这里,可能会有新的疑问,已经发展到EEPROM了,电可擦除可编程,这不就是现在的U盘或者SSD吗?

错!EEPROM虽然支持电可擦除可编程,但是它的容量一般都很小,几个字节到几兆字节不等,我们放在U盘里或SSD中的文件基本都是几十兆甚至上G,这种大文件根本放不下,于是就有了新的存储——闪存。


  05  闪 存

闪存(Flash Memory)全称快闪存储器;

只需记住它结合了 ROM 的断电数据保持能力和 RAM 的可编程特性;结构简单、成本低,所以空间巨大,起步就是G级;读写速度极快,读取时速度能到纳秒级,写入速度能到毫秒级。

从上面的思维导图可以看出闪存是归属于ROM的另一类存储器,NAND flash、eMMC、SSD/SD卡这些都属于其下,下面逐一进行介绍;

· NAND flash 全称与非闪存;名称来源于底层晶体管结构使用了与非门(NOT-AND logic gate)的电路设计;属于EEPROM的一种演进形式,以块(Block)为单位进行擦除,以页(Page)为单位进行读写。

对于NAND的概念了解到这里就够了,更重要的是知道NAND Flash其实是“裸存”,意思是说NAND Flash是没有办法直接使用的,需要配合闪存控制器才能对其进行操作;在嵌入式Linux开发时选用NAND Flash作为内存,就意味着操作更加繁琐、驱动适配难度更大。

· eMMC(embedded MultiMediaCard)全称嵌入式多媒体卡;它将NAND Flash芯片和闪存控制器集成在一个小型 BGA(球栅阵列)封装内,通过标准接口进行操作。

到这里是不是豁然开朗?对,没错,eMMC本质就是基于NAND Flash做的,只不过是已经集成好的,在嵌入式Linux开发时,选择eMMC意味着软件开发更简单,更重要的是节省PCB的空间,所以现在手机、平板中的内存基本都是eMMC。

作为补充,最后简单说一下SSD/SD卡,SD卡都非常熟悉了,SSD就是我们最熟悉的固态硬盘,这两者本质跟eMMC架构是一样的,都是将NAND Flash和闪存控制器集成在一起,使用通用接口就可以直接读写。


  06  总 结

繁多的存储器确实很难在短时间内搞明白,重点不在于死记它的概念,而是首先搞明白它有什么特点,这些特点可以用在什么地方……,这一套流程下来自然就清楚了;

存储很重要,无论是MCU、还是Soc,都会涉及RAM、ROM、Flash!

最后,希望大家都能成为技术大牛,祝愿大家工作顺利,生活愉快!

更多推荐