嵌入式基础知识——存储器
1. 计算机存储结构
存储器是用来存储程序和数据的部件,是实现"存储程序控制"的基础,理想的存储器应该是执行快,容量足,价格便宜等。但实际上,目前无法同时满足这些目标,因此计算机通常采用分级存储的方式。
- 寄存器:CPU 寄存器,保存来自 cache 的字
- L1 高速缓存:芯片内的高速缓存 cache,保存来自芯片外 cache 的行
- L2 高速缓存:芯片外的高速缓存,如 SRAM、DRAM、DDRAM,保存来自主存储器cache 的行
- 主存储器:如 Flash、PROM、EPROM、EEPROM,保存来自外部存储器的文件
- 外部存储器:如磁盘、光盘、CF卡、SD卡等
- 远程二级存储:如分布式文件系统,Web 服务器
2. 存储器分类
2.1 RAM(内存) 与 ROM(硬盘)
按照存储器存放信息易失性,可分为 RAM 和 ROM:
- RAM:随机存储器(Random Access Memory),读写速度快,但掉电时会丢失其存储的内容。速度、价格、容量介于 Cache 与辅存之间、断电数据丢失、CPU 可直接访问
存储当前正在执行的程序和数据。 - ROM:只读存储器(Read-Only Memory),存储的内容掉电后不会丢失。速度最慢、价格最低、容量最大、断电数据不丢失、CPU 不可直接访问存储暂时不运行的程序和数据,需要时再传送到主存。
2.1.1 主存储器 RAM
按照 RAM 存储单元的工作原理,又可分为如下几类:
- SRAM:静态随机存储器(Static RAM),它是靠触发器的自保护功能存储数据,数据一旦写入,其信息就稳定的保存在电路中等待读出,无论读出多少次,只要不断电,信息会一直保存;
- DRAM:动态随机存储器(Dynamic RAM),它将每个位存储为对一个电容的充电,而它的电容容量小,易漏电,因此需要定时给电容补电,通常称为"刷新";
- DDR SDRAM:双倍速率同步动态随机存储器(Double Date Rate SDRAM),或称为 DDR。DDR 内存是在 SDRAM 内存的基础上发展而来的
2.1.2 辅助存储器 ROM
- PROM:可编程只读存储器(Programmable ROM)
- EPROM:可抹除可编程只读存储器(Erasable Programmable ROM)
- EEPROM:电子式可抹除可编程只读存储器(Electrically Erasable Programmable ROM)
2.2 Cache
Cache 是一种比常见内存更快的存储器,一般称为高速缓存存储器。
根据 Cache 的工作机制,可分为:
- 回写式 Cache:当 CPU 执行写数据时,回写式 Cache 只把该数据写入其数据地址对应的 Cache 中,不直接写入内存。仅当该 Cache 块需要替换时,才把 Cache 写回写入内存中
- 写通式 Cache:当 CPU 执行写数据时,写通式 Cache 必须同时把该数据写入其数据地址对应的 Cache 块和内存中。
2.3 其他
2.3.1 Flash
Flash 称为快闪存储器,简称闪存,因其擦除和写入速度比较快而得名。
Flash 是 EEPROM 的变种,不同的是 EEPROM 能在字节水平上进行擦除重新,而 Flash 需要在块的水平上进行擦除。
- NOR Flash:它带有 SRAM 接口,有足够的地址引脚来寻址,可以方便地存取其内部的每一个字节,因此可直接连接总线系统,构成内存储器;
- NAND Flash:它使用复杂的 I/O 口来串行地存取数据,采用串行接口,不能直接构成内存,只能用来构成外部存储器。
两者的一些特点对比:
- NOR 的读速度比 NAND 稍快
- NAND 的写速度比 NOR 快很多
- NAND 的擦除速度也比 NOR 快很多
- NAND 的擦除单元更小
- NOR 上可直接运行程序,NAND 只能存储信息
2.3.2 磁盘、光盘等
- 磁盘:利用磁头变化和磁化电流进行读/写的存储器
- 光盘:用光学方式读/写信息的圆盘
- CF卡:紧凑式闪存(Compact Flash),由 SanDisk 公司于1994年生成,并制定相关规范
- SD卡:安全数字存储卡(Secure Digital Memory Card)
3. 三级存储体系
上面介绍过,存储器的3个指标:容量、速度、价格往往无法同时满足,因此计算机采用多级存储器构成存储体系。
典型的三级存储结构,从内到外一般指Cache、主存储器、外部存储器。
Cache 设置在 CPU 和主存之间,可放在 CPU 的内部或外部,其作用是解决主存和 CPU 的速度匹配问题。
除了速度匹配问题,存储还受容量制约,因此。还需要外部存储器提供大容量存储空间。
4. 高速缓存控制器
高速缓存控制器负责CPU与高速缓存和主存之间的通信控制
5. 一些存储相关的计算题
5.1 题目一
某计算机总线是32位,地址空间从 0xF000000
到 0xF007FFFF
映射为 Flash 空间,若实现 Flash 的最大存储容量,至少需要多少片 16Kx16bit
的 Flash 芯片。
主存容量计算,内存地址和芯片计算问题,先要了解:
- 内存单元个数 = 内存尾地址 - 内存首地址 + 1
- 内存容量 = 内存单元个数 x 每个内存单元容量
- 将得出的 16 进制容量简化为 2 的幂的形式
分析:
- Flash 的存储单元个数为:
0xF007FFFF
-0xF0000000
+ 1 =0x80000
= 219 个 - 总线是 32 位,也表示内存单元的大小是 32bit
- 因此,Flash 总的容量大小为 219 × 32bit = 224 bit
- 每片的大小是
16K x 16bit
,也即 218 bit(214 × 24) - 因此,需要的片数为:224 / 218 = 26 = 64片
5.2 题目二
某计算机字长是 32位,存储容量是 256KB,求按字编址的寻址范围
一些基础知识:
- 位:二进制的每一个 0 或 1 是组成二进制的最小单位,称为位(bit)。
- 字:计算机在存储、传送或操作时,作为一个单元的一组二进制码称为字。
- 字长:一个字中的二进制位的位数称为字长,常用的字长包括 8位、16位、32位、64位。例如,通常把处理字长为 8位数据的CPU称为 8位CPU。
- 字节:字长为 8位的编码称为字节(Byte),字节是计算机中的基本编码单位。
分析:
- 按字编址,需要知道字长,题目知字长 32位,即 4Byte
- 存储容量 256KB,即 256K Byte
- 所以,寻址范围为 256K / 4 = 64K
(个人理解:因为计算机存储传送或操作时是按字作为单位的,那么寻址也是按字进行寻址,这里一个字就是32位也就是 4Byte,所以寻址范围就是存储容量 / 一次寻址单位 = 256K / 4 = 64K 或者 65536字)
5.3 题目三
一个 32K x 32位
的静态存储器,求其地址线和数据线的位数
分析:
- 32位,说明数据宽度是 32位,即数据线的位数是32
- 32K,即 215,所以地址线需要15位
5.4 题目四
某计算机主存容量 64KB,其中 ROM 区为 4KB,其余是 RAM 区,按字节编址。若使用 2K x 8位
的 ROM 和 4K x 4位
的 RAM 设计该存储器,计算两种需用到的数量。
分析:
- 由题目知,ROM 是 4KB,RAM 是 64 - 4 = 60KB
- 按字节编址,则按 8bit 位编址
- 一片 ROM 是
2K x 8bit
,需要2片,即可满足大小为 4KB 的 ROM - 一片 RAM 是
4K x 4bit
,需要30片(60K / 4K = 15,1Byte = 8位,8bit / 4 bit = 2,所以需要 15 × 2 = 30片 )
5.5 题目五
容量为 64块 的 Cache 采用组相连方式映射,块大小为 128 字节,每 4块 为一组,若主存容量为 4096 块,且以字节编址,求主存地址的位数和主存区号的位数。
基础知识:
主存地址 = 区号 + 组号 + 组内块号 + 块内地址号
分析:
- 块大小为 128 字节,即 128 Byte
- 主存容量为 4096块,即 4K 块,结合块的大小,主存容量为
4K × 128 Byte
= 512KB = 219 KB,所以主存地址需要 19 位 - 块大小为 128 字节(27),则块内地址需要用 7 位表示
- 每 4 组为一块,则组内块号需要用 2 位表示
- Cache 容量为 64 块,则分了 16 组,则组号需要用 4位 表示
- 主存区号位数 = 19 - 7 - 2 - 4 = 6
6. 其他计算机基础知识
6.1 冯诺依曼计算机组成结构图
-
输入设备:把其他信号转换成计算机能识别和处理的信号并送入计算机中。如键盘、鼠标、摄像头等
-
输出设备:把运算结果以人或其他设备所能接受的形式送出计算机0外。如显示器、音响、打印机等
-
存储器:用来存储程序和数据的部件,是实现"存储程序控制"的基础。如内存、硬盘等
-
运算器:CPU 中负责进行算数运算和逻辑运算的部件,其核心是算术逻辑单元 ALU
-
控制器:是CPU的指挥中心,其控制着整个 CPU 执行程序的逻辑过程
6.2 总线
总线
:总线是计算机中各个部件之间传送信息的公共通信干线
, 在物理上就是一束导线按照其传递信息的类型可以分为数据总线
、地址总线
、控制总线
。DMA总线
:DMA(Direct Memory Access)即直接存储器访问
,使用 DMA 总线可以不通过 CPU 直接在存储器之间进行数据传递。
6.3 地址空间
一个 处理器
能够访问(读写)的 存储空间
是有限的,我们称这个空间为它的 地址空间(寻址空间)
,一般来说 N位
地址总线的处理器的地址空间是 2的 N 次方
。
例如:2位总线能访问 00、01、10、11 即 22。
6.4 CPU 工作原理简述
CPU执行指令的过程
:
- CPU先通过
指令计数器PC
向内存写入要读取数据的地址, - 内存根据地址找到数据并返回给CPU,
- CPU通过
指令寄存器IR
接收到数据,将数据通过指令译码器
翻译成可执行指令
发送给运算器执行,运算结果储存在寄存器
中, - CPU指令计数器
自增
重复执行步骤。
一条指令的执行分为三个阶段:
取址
:CPU 将 PC 寄存器中的地址发送给内存,内存将其地址中对应的指令返回到 CPU 中的指令寄存器(IR)译码
:译码器对 IR 中的指令进行识别,将指令(机器码)解析成具体的运算执行
:控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器
` 中,
- CPU指令计数器
自增
重复执行步骤。