经常在书上看到这样的字眼:RAM、ROM、内存、外存,现做个总结。
首先我们要知道以上说法都是对存储器的分类,而存储器就是用来存储信息的。
1)按照相对于CPU的位置,分为寄存器、内存、外存。关系如图:
寄存器是在CPU之内的存储器,内存、外存都是在CPU之外的存储器。CPU能都直接访问的存储器就是内存,外存必须通过接口才能与CPU通信,因此从速度上比较:寄存器>内存>外存。
2)按掉电后是否会丢失数据,分易失性内存(Volatile memory)、非易失性内存(Non-Volatile memory,缩写为NVRAM)
易失性内存主要有以下类型:
RAM(Random Access Memory,随机存取存储器)
DRAM(Dynamic Random Access Memory,动态随机存取存储器)
SRAM(Static Random Access Memory,静态随机存取存储器)
非易失性内存主要有以下类型:
ROM(Read-only memory,只读内存)
PROM(Programmable read-only memory,可编程只读内存)
EAROM (Electrically alterable read only memory,电可改写只读内存)
EPROM(Erasable programmable read only memory,可擦可编程只读内存)
EEPROM(Electrically erasable programmable read only memory,电可擦可编程只读内存)
Flash memory(闪存)
总的来说,ROM是在RAM的缺点下发展而来的,由于RAM掉电会丢数据,所以人们考虑要把一些数据永久存起来,于是有了ROM,只能读不能写(比如计算机BIOS)。后来又发现ROM里的程序有时候需要改一改,于是又发展出可以写入新数据的ROM,如EPROM、EEPROM、Flash等。虽然已经违背了ROM的本意——只能读不能写,但出于历史原因,总体上还是称为ROM。
因现今不能简单的把一个存储器说成是RAM或ROM,如电脑里的内存条是内存,有易失性,可读可写(RAM的特性);移动硬盘是内存,有非易失性(ROM的特性),可读可写(RAM的特性)。U盘是外存,有非易失性,可读可写。
在PC机里,内存指的就是内存条,CPU只能直接与内存条交换数据;外存指的是硬盘,如win10系统就是装在硬盘里的。开机后,计算机把程序从硬盘(外存)调入内存条(内存)运行
在单片机里,由于它是SOC芯片,已经把CPU、存储器、I/O设备集成到了一块小芯片上,它常用的存储器是Flash,CPU能够通过总线直接与其交换数据,故把Flash称为内存,要烧写程序放在Flash,CPU直接从FLash读取程序,里面也还有RAM,永远存放中间运算结果,从这个角度讲,这两个存储器都有内存。
另外还有一个缓存(Cache)的概念,它位于CPU与内存之间,速度更快!现在在CPU里已经有一级、二级、三级缓存了,但是容量小,因为价格太贵了。
参考资料:1.https://zh.wikipedia.org/wiki/%E9%9D%9E%E6%8F%AE%E7%99%BC%E6%80%A7%E8%A8%98%E6%86%B6%E9%AB%94
2.《嵌入式系统基础--ARM与Realview MDK》 任哲 北京航空航天大学出版社 P31