存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。其中的“易失/非易失”是指存储器断电后, 它存储的数据内容是否会丢失的特性。由于一般易失性存储器存取速度快,而非易失性存储器可长期保存数据, 它们都在计算机中占据着重要角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。
易失性存储器
1、RAM(Random Access Memory):随机存储器。可随意读取存储器内部任意地址的数据,所需时间与数据所在位置无关,时间都是相同的。
根据RAM的存储机制,又分为动态随机存储器DRAM(Dynamic RAM)以及静态随机存储器SRAM(Static RAM)两种。
DRAM:动态随机存储器。存储单元以电容的电荷来表示数据,有电荷代表1,无电荷代表0。但随着时间延长,代表1的电容会放电,代表0的电容会吸收电荷,因此它需要定期刷新操作,即“动态(Dynamic)“的特性。 刷新操作会对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保证数据的正确性。
根据DRAM的通讯时是否需要使用时钟信号,又分为同步和异步两种。
SDRAM(Synchronous DRAM):使用时钟同步的通讯,速度更快,在时钟的上升沿表示有效数据。
DDR SDRAM(Double Data Rate SDRAM):可以在时钟的上升沿和下降沿各表示一个数据,即一个时钟周期可以表示2位数据,在时钟频率相同的情况下,与SDRAM相比速度提高了一倍。至于DDRII和DDRIII,它们的通讯方式没有区别,主要是通讯同步时钟的频率提高了。
2、SRAM:静态随机存储器。存储单元以锁存器存储数据,不需要定时刷新充电就能保持状态。SRAM根据其通讯方式也分为同步(SSRAM)和异步SRAM,相对来说,异步SRAM用得比较广泛。
3、DRAM和SRAM比较
DRAM的结构简单得多,所以生产相同容量的存储器,DRAM的成本要更低,且集成度更高。 而DRAM中的电容结构则决定了它的存取速度不如SRAM。所以在实际应用场合中,SRAM一般只用于CPU内部的高速缓存(Cache),而外部扩展的内存一般使用DRAM。
非易失性存储器
1、ROM(Read Only Memory):只读存储器。一般用于指代非易失性半导体存储器。
MASK ROM:掩膜只读存储器。内部存储数据不可修改,大批量生产时成本低。
OTPROM(One Time Programmable ROM):一次可编程存储器。用户可以使用专用编程器自己写入资料,但只能写入一次,写入后内容不可修改。
EPROM(Erasable Programmable ROM):可重复擦写的存储器。使用紫外线照射芯片内部擦除数据,擦除和写入需要专用设备。
EEPROM(Electrically Erasable Programmable ROM):电可擦拆存储器。EEPROM可以重复擦写,它的擦除和写入都是直接使用电路控制, 不需要再使用外部设备来擦写。而且可以按字节为单位修改数据,无需整个芯片擦除。
2、FLASH存储器:闪存。可重复擦写的存储器,容量一般比EEPROM大得多, 且在擦除时,一般以多个字节为单位。
根据存储单元电路的不同, FLASH存储器又分为NOR FLASH和NAND FLASH。
NOR与NAND的共性是在数据写入前都需要有擦除操作,而擦除操作一般是以“扇区/块”为单位的。 而NOR与NAND特性的差别,主要是由于其内部“地址/数据线”是否分开导致的。
NOR的地址线和数据线分开,可以按“字节”读写数据,符合CPU的指令译码执行要求,所以假如NOR上存储了代码指令, CPU给NOR一个地址,NOR就能向CPU返回一个数据让CPU执行,中间不需要额外的处理操作。
而NAND的数据和地址线共用,只能按“块”来读写数据,假如NAND上存储了代码指令,CPU给NAND地址后, 它无法直接返回该地址的数据,所以不符合指令译码要求。若代码存储在NAND上,可以把它先加载到RAM存储器上,再由CPU执行。所以在功能上可以认为NOR是一种断电后数据不丢失的RAM, 但它的擦除单位与RAM有区别,且读写速度比RAM要慢得多。
另外,FLASH的擦除次数都是有限的(现在普遍是10万次左右),当它的使用接近寿命的时候,可能会出现写操作失败。 由于NAND通常是整块擦写,块内有一位失效整个块就会失效(坏块),而且由于擦写过程复杂,从整体来说NOR坏块更少, 寿命更长。由于可能存在坏块,所以FLASH存储器需要“探测/错误更正(EDC/ECC)”算法来确保数据的正确性。
由于两种FLASH存储器特性的差异,NOR FLASH一般应用在代码存储的场合,如嵌入式控制器内部的程序存储空间。 而NAND FLASH一般应用在大数据量存储的场合,包括SD卡、U盘以及固态硬盘等,都是NAND FLASH类型的。