我们知道计算机五大组成部分:控制器、运算器、存储器、输入设备、输出设备。可见存储器是计算机核心组件之一,而不同类型的存储器有着不同的特性和用途。本文目的在于帮助初学者快速理清它们的关系和区别,先对各种存储器有基本的认识。
我们可以按照存储器数据掉电是否丢失,把存储器分为两类:
失去供电之后,数据消失的是易失性存储器,下次上电,没有任何数据。
失去供电之后,数据仍保留的是非易失性存储器,下次上电,是之前写入的数据。
易失性存储器:断电后数据丢失
这类存储器就像我们工作时的临时记事本。一旦断电,里面的内容就会消失,主要用于设备运行时的临时数据处理。
RAM是其中的代表,它又可分为 SRAM 和 DRAM。
SRAM:全名为Static Random Access Memory。速度快,但容量小、成本高。常见用途是作为处理器缓存Cache,能让 CPU 快速获取频繁使用的数据。因为其速度快,需要和 CPU 高效协同工作,所以与 CPU 的连接方式通常是通过内部总线直接连接。
DRAM:全名为Dynamic Random-Access Memory。成本低于SRAM、容量大,像我们常说的 DDR4、DDR5 就属于 DRAM。常见用途是作为系统的主要内存,也叫运行内存,用于临时存储运行中的程序和数据。与 CPU 的连接多通过 DDR 总线,这种总线专门为 DRAM 设计,能满足其数据传输需求。
非易失性存储器:断电数据不丢失
这类存储器如同长期档案柜,能长久保存数据,即使断电也不会丢失,多用于存储系统程序、配置信息等。主要有以下四种:ROM、Flash、eMMC、EEPROM
ROM
全名是Read-Only Memory。传统的 ROM 在出厂时就写入数据,正常使用中只能读取,不能修改。常见用途是存储固定不变的程序,比如早期电脑的 BIOS、嵌入式设备的BootROM等。CPU 通过地址总线指定要读取的存储单元,再通过数据总线获取其中的数据,但随着技术发展,它的部分用途已被NOR Flash替代。
Flash
作为 ROM 的 升级版,Flash 支持电擦除和重写,灵活性更高。
NAND Flash:容量大、成本低,写 / 擦除速度快。常见用途是存储大量数据,如手机存储、SSD固态硬盘、U 盘等。与 CPU 的连接方式多样,在嵌入式系统中常通过专用的 NAND 控制器与 CPU 连接,也有的通过 SPI 总线等。
NOR Flash:支持随机读取,可直接运行程序。常见用途是存储 Bootloader、小型固件等,因为 CPU 可以直接从 NOR Flash 中读取指令并执行。与 CPU 的连接多通过并行总线或 SPI 总线,并行总线能提供较快的读取速度,适合需要快速启动的场景。但 NOR Flash 容量较小、成本较高。
eMMC
eMMC(embedded MultiMediaCard)是一种将 NAND Flash 芯片和主控控制器封装在一起的标准化存储解决方案。你可以把它看作是一个即插即用的固态硬盘SSD,它内部集成了复杂的管理电路,负责处理 NAND Flash 的坏块管理、磨损均衡、纠错等复杂任务。
特性与优势:eMMC 最大的优势在于其高集成度和易用性。开发者无需深入了解底层 NAND Flash 的复杂特性,只需通过标准化的接口与 eMMC 通信,主控芯片会自动处理所有底层操作。它结合了 NAND Flash 的大容量、低成本优点,同时提供了比裸片 NAND Flash 更稳定、更可靠的性能。不过,其速度通常低于高速的 UFS 或 NVMe SSD。
常见用途:eMMC 广泛应用于对成本、功耗和集成度有要求,但又需要较大存储容量的嵌入式设备中。例如,中低端智能手机、平板电脑、智能电视、车载信息娱乐系统、物联网网关等,其操作系统和用户数据通常就存储在 eMMC 中。
与 CPU 的连接方式:CPU 通过专用的 eMMC 控制器和标准的 eMMC 总线与 eMMC 芯片连接。这种接口设计简化了硬件设计,缩短了产品开发周期。
为什么需要 eMMC? 回到文章的核心问题,eMMC 的存在完美体现了“用不同器件的优势,适配不同场景的需求”这一原则。虽然 NAND Flash 本身成本低、容量大,但直接使用裸片 NAND Flash 需要 CPU 或外部控制器来处理其复杂的管理任务,这增加了软件复杂性和开发难度。eMMC 通过集成主控,将大容量存储这一复杂需求傻瓜化,让系统设计者能更专注于上层应用开发,是在成本、容量、易用性和性能之间取得平衡的优秀产物。
EEPROM
全名是Electrically Erasable Programmable Read-Only Memory。EEPROM 容量通常较小,可字节级擦写,寿命长。常见用途是存储少量关键数据,如设备序列号、传感器校准值、用户个性化设置等。与 CPU 的连接方式多为 I2C 总线或 SPI 总线,这两种总线结构简单,适合传输少量数据,能满足 EEPROM 的数据交互需求。它的擦写无需像 Flash 那样以块为单位,操作更灵活。
为什么计算机系统不能只靠一种存储器?
看完前面的存储器分类,你可能会问:既然都是存数据,为啥不干脆用一种?
答案很简单 ——没有任何一种存储器能同时满足 “速度快、容量大、成本低、断电存数据” 这四大核心需求,就像没人能同时兼顾 “跑得比博尔特快、力气比举重冠军大、还能像马拉松选手一样持久”。嵌入式系统的存储器选择,本质是 “用不同器件的优势,适配不同场景的需求”,具体矛盾体现在三个维度:
首先性能与易失性之间的矛盾。比如我们需要 “速度快” 的存储器让 CPU 实时处理数据 ——SRAM能做到纳秒级响应,但一断电数据就丢;如果强行用非易失性的 Flash 替代 RAM,哪怕是最快的 NVMe Flash,速度也比 DDR 内存慢 100 倍以上,会让 CPU 陷入 “等数据” 的卡顿,像用 U 盘当电脑内存一样离谱。反过来,若只用 RAM 当唯一存储,设备一断电,系统程序、用户数据全没了,每次开机都得重新装系统,显然不现实。
其次平衡容量与成本。大容量存储需要控制成本 ——NAND Flash、eMMC 能做到 “每 GB 成本几毛钱”,适合存系统镜像、用户文件;但如果把所有存储都换成 RAM,哪怕是成本较低的 DDR,16GB DDR5 的价格也能买 1TB eMMC,对嵌入式这样成本敏感的设备来说完全不可承受。同理,EEPROM 能字节级擦写、寿命长,但 1MB 容量的价格比 1GB SPI Flash 还高,若用它存固件,成本会飙升到无法量产。
最后是场景的适配。不同数据需要不同的 “存储特性”:CPU 运行时的临时数据,需要 “随用随取、速度快”,RAM 是唯一选择;设备启动的引导程序,需要 “断电能存、能直接读程序”,NOR Flash/SPI Flash 最适配;少量关键参数,需要 “能改、寿命长、占用空间小”,EEPROM 比 Flash 更合适;海量用户数据,需要 “容量大、写速度快、成本低”,NAND Flash 或 eMMC 才划算。

1667

被折叠的 条评论
为什么被折叠?



