常用存储器介绍
存储器种类
- 存储器是用来存储计算机的程序代码和数据,有了存储器,计算机才具有记忆功能。
- 存储器按照存储介质的特性可分为“易失性存储器”和“非易失性存储器”
- 易失性存储器:存储器断电后,存储的数据会丢失;
- 非易失性存储器:存储器断电后,存储的数据不会丢失;
- 一般,易失性存储器存取速度快;非易失性存储器可长期保存数据;在计算机中,易失性存储器的代表是内存,非易失性存储器的代表是硬盘;
易失性存储器
- RAM,Random Access Memory,随机存取存储器;
- “随机存取”,指的是内部的任意地址可随意读取或写入数据并且所需的时间与数据的位置无关(即可随机读取或写入RAM内部任意地址的数据,并且所需的时间是相同的)
- RAM按照存储机制可分为DRAM,Dynamic RAM,动态随机存储器和SRAM,Static RAM,静态随机存储器;
-
DRAM,Dynamic RAM,动态随机存储器存储单元以电容的电荷来表示数据,有电荷代表1,无电荷代表0。但时间一长,电容就会放电,因此,需要定时刷新(给电容充电),所以这种存储时称为“动态(Dynamic)”RAM;
- DRAM根据通讯时是否使用时钟信号进行同步又分为同步和异步两种。使用时钟信号同步的通讯速度更快,所以SDRAM,Synchronous DRAM,同步动态随机存储器使用更为广泛;
- 为了进一步提高SDRAM通信速度,人们又设计了DDR SDRAM,Double Data Rate SDRAM,双倍速率同步动态随机存储器(它的存储特性与SDRAM没有区别,但SDRAM只在上升沿表示有效数据,1个时钟周期内只能表示1个有效数据,DDR SDRAM在时钟的上升沿及下降沿各表示一个数据,一个时钟周期内可表示2个有效数据,提高了一倍的速度);
- DDRII 和DDRIII与DDR相比,通讯方式也没有区别,主要是通讯同步时钟的频率提高了
-
SRAM,Static RAM,静态随机存储器存储单元以锁存器来存储数据,这种电路结构不需要定时刷新充电就能保持状态(断电的话,数据还是会丢失的),所以这种存储时称为“静态(Static)”RAM;
-
DRAM与SRAM对比
SRAM一般只用于CPU内部的高速缓存(Cache),而外部扩展的内存一般使用DRAM。【STM32系列控制器中,只有STM32F429或更高级的芯片才支持扩展SDRAM,其他型号如STM32F1、STM32F2以及STM32F407等型号只能扩展SRAM】
非易失性存储器
- 非易失性存储器种类有很多,半导体类的有ROM和Flash;其他的包括光盘、软盘以及机械硬盘;
- ROM ,Read Only Memory,只读存储器。
由于技术的发展,后来设计出了可以方便写入数据的ROM,而Read Only Memory的名称被沿用下来了,现在一般用于指代非易失性半导体存储器;
- MASK ROM,掩膜只读存储器。
正宗的“Read Only Memory”,存储在它内部的数据是在出厂时使用特殊工艺固化的,生产后就不可修改。主要优势是大批量生产时成本低,目前在生产量大且数据不需要修改的场合还有应用。 - OTP ROM,One Time ProgrammableROM,一次可编程只读存储器。
这种存储器出场时内部并没有数据,用户需要使用专用的编程器将数据写入且只能写入一次。数据被写入后,不可以再修改。
NXP公司生产的控制器芯片中常使用OTPROM来存储密钥;
STM32F429芯片中也具有一部分OTPROM空间; - EPROM,Erasable Programmable ROM,可擦写可编程只读存储器
它解决了PROM只能写入一次的问题;
但这种存储器使用紫外线照射芯片内部擦除数据,擦除和写入都要专用的设备,现在基本淘汰; - EEPROM,Electrically Erasable Programmable ROM,电可擦除可编程只读存储器
EEPROM的擦除和写入都是直接使用电路控制,不需要使用外部设备;
EEPROM可以一字节为单位修改数据,无需擦除整个芯片。目前主要使用的ROM芯片都是EEPROM;
- Flash,闪存
Flash,也是可重复擦写的存储器;- Flash容量比一般的EEPROM大得多。
- Flash在写入数据前都需要有擦除操作,而擦除操作一般是以“扇区/块”为单位。【原因:Flash中的数据位只能从“1”变为“0”,一旦一个位被设置为“0”,它就不能再次变为“1”】
- Flash擦除的次数是有限的(现在普遍是10万次左右),当它接近使用寿命的时候,可能就会出现写操作失败;
- NAND Flash通常是整块擦写,块内部有一位失效整个块就会失效,这被称为坏块;
根据存储单元电路不同,Flash又分为NOR Flash和NAND Flash,
- NOR Flash与NAND Flash的差别,主要是其内部“地址/数据线”是否分开:
- NOR Flash地址线和数据线分开,可以按“字节”读写数据,复合CPU指令译码执行要求。所以当NOR Flash中存储了代码指令,CPU给NOR Flash一个地址,NOR Flash就能向CPU返回一个数据让CPU执行,中间不需要额外的处理操作’
- NAND Flash地址线和数据线分开,只能按“块”来读写数据,不符合CPU指令编译码要求。即当NAND Flash中存储了代码指令,CPU给NAND地址后,它无法直接返回该地址的数据。
- NOR Flash和NAND Flash特性对比中“是否支持XIP”描述的就是这种立即执行的特性(eX-ecute In Place)。在功能上,可以认为NOR Flash是一种断电后数据不丢失的RAM,但它的擦除单位与RAM有区别,且读写速度比RAM要慢得多。
- NOR Flash一般用于存储代码的场合,如嵌入式控制器内部的程序存储空间;
- NAND Flash一般用于大数据存储的场合,例如,SD卡,U盘,固态硬盘等。