STM32学习笔记——十八、常用存储器介绍
1 存储器种类
- 存储器是计算机结构的重要组成部分
- 存储器:用来存储程序代码和数据的部件
- 有了存储器,计算机才具有记忆功能
- 基本的存储器种类
- 存储器按其存储介质特性分为:
- 易失性存储器
- 存储器断电后,存储数据内容丢失
- 优势:存取速度快
- 代表:内存
- 非易失性存储器
- 存储器断电后,存储数据内容丢失
- 优势:可长期保存
- 代表:硬盘
2 RAM 存储器
- RAM随机存储器(Random Access Memory):
- 随机存取含义:存储器中消息被读取或写入时,所需要的时间与这段信息所在的位置无关
- RAM可随时读取磁鼓内部任意地址的数据,时间都是相同的,名字由此得来
- RAM 专门用于指代作为计算机内存的易失性半导体存储器
- RAM 的存储机制将RAM分为:
- 动态随机存储器DRAM(Dynamic RAM)
- 静态随机存储器SRAM(Static RAM)
2.1 DRAM 动态随机存储器
动态随机存储器 DRAM
- 存储单元:以电容的电荷来表示数据
- 有电荷代表1
- 无电荷代表0
- 定期刷新操作(即动态一词形容的特性):时间一长,代表1的电容会放电,代表0的电容会吸收电荷
- 刷新操作:电量大于1/2,认为为1,充满电;电量小于1/2,认为为0.电容放电
- 刷新操作:电量大于1/2,认为为1,充满电;电量小于1/2,认为为0.电容放电
2.1.1 SDRAM 同步动态随机存储器
DRAM根据通讯方式可分为:
- 同步动态随机存储器
- 异步动态堆积存储器
- 根据通讯时是否需要使用时钟信号来区分
同步通讯时序图:
- 一种利用时钟进行同步的通讯时序
- 在时钟的上升沿表示有效数据
同步DRAM(Synchronous DRAM):- 优点:使用时钟同步的通讯速度更快,同步DRAM使用更广泛
2.1.2 DDR SDRAM
DDR SDRAM(Double Data Rate SDRAM):
- 为了进一步提高SDRAM的通讯速度,设计了DDR SDRAM
- 存储特性:与SDRAM没有区别
- SDRAM只在上升沿表示有效数据,在一个时钟周期内,只能表示一个有效数据
- DDR SDRAM在时钟上升沿及下降沿各表示一个数据,在一个时钟周期内,可以表示两位数据
- 同时中频率下,提高了一倍速度
- DDRII和DDRIII通讯方式无区别,通讯同步时钟的频率提高了
2.2 SRAM 静态随机存储器
静态随机存储器 SRAM:
- 存储单元:以锁存器来存储数据
- 电路结构不需要定时刷新充电,能保持状态,断电后,数据还是会丢失,称其为静态(Static) RAM
- 电路结构不需要定时刷新充电,能保持状态,断电后,数据还是会丢失,称其为静态(Static) RAM
- 通讯方式:
- 同步(SSRAM)
- 异步SRAM:异步SRAM用的比较广泛
2.3 DRAM 与 SRAM 的应用场合
对比DRAM 与SRAM 的结构
- DRAM 的结构简单得多,所以生产相同容量的存储器,DRAM的成本要更低,且集成度更高。
- DRAM 中的电容结构则决定了它的存取速度不如SRAM
- 特性对比见表DRAM 与SRAM 对比
- 在实际应用场合中:
- SRAM 一般只用于CPU 内部的高速缓存(Cache)
- 外部扩展的内存一般使用DRAM
- 在STM32 系统的控制器中,只有STM32F429 型号或更高级的芯片才支持扩展SDRAM,其它型号如STM32F1、STM32F2 及STM32F407 等型号只能扩展SRAM
3 非易失性存储器
非易失性存储器:
- 种类非常多
- 半导体类:
- ROM
- FLASH
- 光盘
- 软盘
- 机械硬盘
3.1 ROM 存储器
ROM 存储器(Read Only Memory):
- 只能读存储器
- 后来设计出了可方便写入数据ROM
- Read Only Memory名称延续下来
- 指代非易失性半导体存储器
- 包括:FLASH存储器
3.1.1 MASK ROM
MASK(掩膜)ROM:
- 正宗的Read Only Memory
- 存储在内部的数据,是出场时使用特殊工艺固化的,生产后不可修改
- 主要优势:大批量生产时成本低
- 应用场合:生产量大,数据不需要修改的场合
3.1.2 OTPROM
OTPROM(One Time Programable ROM) 一次可编程存储器:
- 用户可使用专用的编程器,将自己的资料写入,只能写入一次、
- 被写入后,内容也不可再修改
- 应用场合:
- NXP公司生产的控制器芯片中尝试用OTPROM来存储密钥
- STM32F429芯片中具有一部分OTPROM空间
3.1.3 EPROM
**EPROM(Erasable Programmable ROM)**可重复擦写的存储器:
- 解决了PROM芯片只能写入一次的问题
- 使用紫外光线照射芯片内部擦除数据,擦出和写入都要专用的设备
- 现在这种存储器基本淘汰,被EEPROM取代
3.2 FLASH 存储器
FLASH存储器闪存(可重复擦写的存储器):
- 有书籍称为:FLASH ROM
- 容量比EEPROM大得多
- 在擦除时,一般以多个字节为单位
- 例如:有的FLASH存储器以4096个字节为山区,最小的擦除单位为一个扇区
根据存储单元电路的不同存储器分为:
- NOR FLASH
- NAND FLASH
- 特性对比
- NOR 与NAND 的共性:
- 在数据写入前都需要有擦除操作,而擦除操作一般是以“扇区/块”为单位的
- NOR 与NAND 特性的差别
- 主要是由于其内部“地址/数据线”是否分开导致的
- 由于NOR 的地址线和数据线分开,它可以按“字节”读写数据,符合CPU 的指令译码执行要求
- 假如NOR 上存储了代码指令,CPU 给NOR 一个地址,NOR 就能向CPU 返回一个数据让CPU 执行,中间不需要额外的处理操作。
- 而由于NAND 的数据和地址线共用,只能按“块”来读写数据
- 假如NAND 上存储了代码指令,CPU 给NAND 地址后,它无法直接返回该地址的数据,所以不符合指令译码要求。
- 表NOR_FLASH与NAND_FLASH 特性对比中的最后一项“是否支持XIP”描述的就是这种立即执行的特性(eXecuteIn Place)。
- 由于NOR 的地址线和数据线分开,它可以按“字节”读写数据,符合CPU 的指令译码执行要求
- 若代码存储在NAND 上,可以把它先加载到RAM 存储器上,再由CPU 执行。
- 在功能上可以认为NOR 是一种断电后数据不丢失的RAM,但它的擦除单位与RAM 有区别,且读写速度比RAM 要慢得多。
- FLASH 的擦除次数都是有限的(现在普遍是10 万次左右),当它的使用接近寿命的时候,可能会出现写操作失败。
- 由于NAND 通常是整块擦写
- 块内有一位失效整个块就会失效,这被称为坏块
- 由于擦写过程复杂,从整体来说NOR 块块更少,寿命更长
- 由于可能存在坏块,所以FLASH 存储器需要“探测/错误更正(EDC/ECC)”算法来确保数据的正确性
- 由于两种FLASH 存储器特性的差异
- NOR FLASH 一般应用在代码存储的场合,如嵌入式控制器内部的程序存储空间
- NAND FLASH 一般应用在大数据量存储的场合,包括SD 卡、U 盘以及固态硬盘等,都是NAND FLASH 类型的。