RAM、ROM、SRAM、DRAM、SDRAM、NORFLASH、NANDFLASH
存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。分别对应RAM和ROM。其中的“易失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。
RAM:“易失性存储器”
RAM 是“Random Access Memory”的缩写,被译为随机存储器。 所谓―随机存取,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。
根据 RAM 的存储机制,又分为动态随机存储器 DRAM(Dynamic RAM)以及静态随机存储器 SRAM(Static RAM)两种。
1. 动态随机存储器 DRAM
动态随机存储器 DRAM 的存储单元以电容的电荷来表示数据,有电荷代表 1,无电荷代表 0。但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,因此它需要定期刷新操作,这就是“动态(Dynamic)”一词所形容的特性。刷新操作会对电容进行检查,若电量大于满电量的 1/2,则认为其代表 1,并把电容充满电; 若电量小于 1/2,则认为其代表 0,并把电容放电,藉此来保证数据的正确性。
根据 DRAM 的通讯方式,又分为同步和异步两种,这两种方式根据通讯时是否需要使用时钟信号来区分。有时钟信号的同步通讯方式为SDRAM
为了进一步提高 SDRAM 的通讯速度,人们设计了 DDR SDRAM 存储器(Double DataRate SDRAM)。它的存储特性与 SDRAM 没有区别,但 SDRAM 只在上升沿表示有效数据,在 1 个时钟周期内,只能表示 1 个有数据;而 DDR SDRAM 在时钟的上升沿及下降沿各表示一个数据,也就是说在 1 个时钟周期内可以表示 2 数据,在时钟频率同样的情况下,提高了一倍的速度。
2. 静态随机存储器 SRAM
静态随机存储器 SRAM 的存储单元以锁存器来存储数据。这种电路结构不需要定时刷新充电,就能保持状态(当然,如果断电了,数据还是会丢失的),所以这种存储器被称为“静态(Static)” RAM。同样地, SRAM 根据其通讯方式也分为同步(SSRAM)和异步 SRAM,相对来说,异步SDRAM 用得多。
ROM:“非易失性存储器”
ROM 是“Read Only Memory”的缩写,意为只能读的存储器。由于技术的发展,后来设计出了可以方便写入数据的 ROM,而这个“Read Only Memory”的名称被沿用下来了,现在一般用于指代非易失性半导体存储器。
1.MASK ROM
MASK(掩膜) ROM 就是正宗的“Read Only Memory”,存储在它内部的数据是在出厂时使用特殊工艺固化的,生产后就不可修改,其主要优势是大批量生产时成本低。当前在生产量大,数据不需要修改的场合,还有应用。
2. OTPROM
OTPROM(One Time Programable ROM)是一次可编程存储器。这种存储器出厂时内部并没有资料,用户可以使用专用的编程器将自己的资料写入,但只能写入一次,被写入过后,它的内容也不可再修改。在 NXP 公司生产的控制器芯片中常使用 OTPROM 来存储密钥; STM32F767 系列的芯片内部也包含有一部分的 OTPROM 空间。
3. EPROM
EPROM(Erasable Programmable ROM)是可重复擦写的存储器,它解决了 PROM 芯片只能写入一次的问题。这种存储器使用紫外线照射芯片内部擦除数据,擦除和写入都要专用的设备。现在这种存储器基本淘汰,被 EEPROM 取代。
4. EEPROM
EEPROM(Electrically Erasable Programmable ROM)是电可擦除存储器。 EEPROM 可以重复擦写,它的擦除和写入都是直接使用电路控制,不需要再使用外部设备来擦写。而且可以按字节为单位修改数据,无需整个芯片擦除。现在主要使用的 ROM 芯片都是EEPROM。
5.FLASH
FLASH 存储器又称为闪存,它也是可重复擦写的储器,部分书籍会把 FLASH 存储器称为 FLASH ROM,但它的容量一般比 EEPROM 大得多,且在擦除时,一般以多个字节为单位。如有的 FLASH 存储器以 4096 个字节为扇区,最小的擦除单位为一个扇区。根据存储单元电路的不同, FLASH 存储器又分为 NOR FLASH 和 NAND FLASHNOR 与 NAND 的共性是在数据写入前都需要有擦除操作,而擦除操作一般是以“扇区/块”为单位的。而 NOR 与 NAND 特性的差别,主要是由于其内部“地址/数据线”是否分开导致的。
由于 NOR 的地址线和数据线分开,它可以按“字节”读写数据,符合 CPU 的指令译码执行要求,所以假如 NOR 上存储了代码指令, CPU 给NOR 一个地址, NOR 就能向CPU 返回一个数据让 CPU 执行,中间不需要额外的处理操作。而由于 NAND 的数据和地址线共用,只能按“块”来读写数据,假如 NAND 上存储了代码指令, CPU 给 NAND 地址后,它无法直接返回该地址的数据,所以不符合指令译码要求。
若代码存储在 NAND 上,可以把它先加载到 RAM 存储器上,再由 CPU 执行。所以在功能上可以认为 NOR 是一种断电后数据不丢失的 RAM,但它的擦除单位与 RAM 有区别,且读写速度比 RAM 要慢得多。
由于两种 FLASH 存储器特性的差异, NOR FLASH 一般应用在代码存储的场合,如嵌入式控制器内部的程序存储空间。而 NAND FLASH 一般应用在大数据量存储的场合,包括 SD 卡、 U 盘以及固态硬盘等,都是 NAND FLASH 类型的。
个人简单总结
1. RAM和ROM
根据断电数据能否保存分为RAM和ROM
2. RAM
RAM中根据是否需要刷新分为SRAM和DRAM
DRAM中根据是否有同步时钟分为SDRAM和DRAM
SRAM中根据是否有同步时钟分为SSRAM和SRAM
3. ROM
ROM目前常用的是EPROM和FLASH
FLASH包括NAND FLASH和NOR FLASH
NAND FLASH和NOR FLASH的区别是地址线和数据线是否分开