数字IC中,存储器大致可分为两类:RAM和ROM。
RAM
广义的RAM可分为寄存器、SRAM、DRAM。
寄存器
狭义的寄存器通常由多个触发器(Flip-Flops)或多个锁存器(Latch)组合而成,读写速度最快,但成本高且面积大(例如每个D触发器由12个晶体管组成)。故常用于CPU内部存储关键配置参数。
(广义的寄存器也可以由SRAM构成)
SRAM
通常由6个(或4个)晶体管构成,不需要动态刷新。常用于高速缓存(cache)。
DRAM
由1个晶体管+1个电容构成,需要附加电路间隔几ms动态刷新(电容充电)以保持数据。对比SRAM,其速度较慢,但成本低、面积小,故可实现大集成度。常用做主存(main memory),例如DDR(DDR SDRAM)。
ROM
按照技术演进顺序,ROM细分出了PROM、EPROM、EEPROM。
PROM
PROM是非易失且不可擦除的一次性可编程ROM,通过施加大电压产生大电流熔断金属丝实现编程,例如EFUSE。
EPROM
EPROM为多次可编程ROM,通过紫外线照射擦除;EEPROM实现了电擦除。
flash
flash具备非易失性且可在线电擦除,属于广义的EEPROM。不同于狭义EEPROM以字节为单位擦除,flash以块为单位擦除,实现了更高的数据密度,从而具备更大的容量。
flash分为nand flash和nor flash两类。
nand flash:
按块(block)擦除、按页(page)读取。由于其地址线和数据线复用,故无法随机寻址。
nor flash:
无页的概念,擦除以块为单位。地址线不与数据线复用,类似RAM可随机寻址读取任一字节,因此具备XIP功能可直接取指运行。
两类flash对比:
由于nand flash的pin复用,故读取速度慢于nor flash。nand flash优势在于擦除和写录更快。nand flash对比nor flash,其电路结构较为简单,数据密度大,且成本低。故大容量flash常采用nand型,小容量flash常采用nor型。在嵌入式系统中,由于nor flash具备字节寻址功能且读取速度更快,故常用于存储bootloader;由于nand flash容量更大,故常用于存放OS kernal和file system,并且用于固态硬盘(SSD)、SD卡、U盘(USB Flash Drive)等。
eMMC
封装了nand flash+flash控制器,用于存储数据和程序的高集成度存储方案,常用于便携式消费电子设备。