概述
存储器分类
按存储介质分类
- 半导体存储体 易失
- TTL 晶体管 集成度低 功耗高 速度快
- MOS 金属氧化物 集成度高 功耗低
- 磁表面存储器 磁盘
- 磁芯存储器
- 光盘存储器 激光、磁光材料
按存取方式分类
随机访问
存取时间与物理地址无关。
随机存储器
随机存储器在程序的执行过程中可读可写。
只读存储器
在程序的执行过程中只读。
串行访问
存取时间与物理地址有关。
- 顺序存取存储器 磁带
- 直接存取存储器 磁盘
按计算机中的作用分类
- 主存储器
- RAM
- SRAM 静态 RAM 高速缓冲存储器 Cache
- DRAM 动态 RAM
- ROM
- MROM
- PROM
- EPROM
- EEPROM
- RAM
- Flash Memory U盘/SSD 比硬盘速度快
- 辅助存储器
- 磁盘、磁带、光盘
存储器的层次结构
缓存-主存层次和主存-辅存层次
缓存-主存
主要解决速度问题,所以使用硬件来实现。
主存-辅存
主要解决容量问题,一般使用软件和硬件相结合的方式实现。
主存存储器
主存的基本组成
如果是读,则会把数据送到 MDR 中,如果是写,则把 MDR 中的数据写到存储体中。
主存与 CPU 之间的联系
主存中存储单元地址的分配
假设地址线为 24 根,按字节寻址 则存储器容量有 2^24 = 16MB,若字长为 16 位,按则字寻址 则有 8 MW = 8 M * 2 B,若字长为32位,按字寻址有 4MW。
主存的技术标准
存储容量
主存存放二进制代码的总位数。
存储速度
存取时间
存储器的访问时间,从给出存储地址到得到稳定的数据读出或写入的时间。
存取周期
连续两次独立的存储器操作(读或写)所需的最小间隔时间。
存取周期 > 存取时间
存储器的带宽 位/秒
主存储器 半导体芯片简介
半导体存储芯片的基本结构
地址线(单向) | 数据线(双向) | 芯片容量 |
---|---|---|
10 | 4 | 1K * 4 位 |
14 | 1 | 2^14 * 1 位 |
13 | 8 | 2^13 * 8 位 |
存储芯片片选线的作用
假设有 16 K 1 位 的存储芯片,CPU 要求组成 64K 8 位的存储器。怎么用 16 K 1 位的存储芯片构成 64 K 8 位的存储器呢?
至少需要32片存储芯片构成。
此时一个字节的八位比特在8片芯片中。
半导体存储芯片的译码驱动方式
线选法
有四个地址线,能编码16个地址,图中有16条线。8位输出线,则这个图中存储器的容量位 16 * 8 位;
假设要实现 1M * 8 位 的存储器,则需要 100W 条线,很显然不可行。
重合法
随机存取存储器 (RAM)
SRAM
触发器电路
DRAM
用电容来表示 0 和 1。
动态 RAM 刷新
电容中存放的电荷随着时间的推移会漏电,所以要刷新。刷新与行地址有关,每次刷新的是一行中的所有单元。
三种刷新方式
- 集中刷新 存在死区,四区时间内,动态 RAM 不可用,CPU 和 I/O 设备必须等待
- 分散刷新 无死区,但增加了无效的刷新,使得性能下降
- 异步刷新 分散刷新与集中刷新相结合
SRAM VS DRAM
对比项 | DRAM | SRAM |
---|---|---|
存储原理 | 电容 | 触发器 |
集成度 | 高 | 低 |
芯片引脚 | 少 | 多 |
功耗 | 小 | 大 |
价格 | 低 | 高 |
速度 | 慢 | 快 |
刷新 | 有 | 无 |
只读存储器 ROM
一般保存系统程序或者配置信息。
- 早期的只读存储器出厂时就写好了内容
- 改进1:用户可以自己写,一次性的
- 改进2:可以多次写,要能对信息进行擦除
- 改进3:电可擦写,特定设备
- 改进4:电可擦写,直接连接到计算机
类型
- 掩模 ROM(MROM)厂家把信息直接写入,用户不可更改
- PROM 一次性(破坏性)编程 熔丝通断表示位信息
- EPROM 多次性编程 N 型沟道浮动栅 MOS 电路,信息擦除麻烦
- EEPROM 多次性编程
- Flash Memory 闪速型存储器(U盘、具备 RAM 功能)
CPU 与 内存的连接
存储器容量的扩展
位扩展
位扩展的目的是增加存储字长(数据线)。
如何用 1K 4 位(即1K个存储单元,每个存储单元保存4位信息,1K个存储单元需要10根地址线)的存储芯片组成 1K 8 位的存储器?
答案:需要两片 1K * 4 位的芯片、10根地址线、8根数据线。地址线对两片芯片同时寻址,8根地址线分成两份连接到两个芯片上。
位扩展需要把两个芯片当成一个芯片来用,两个芯片同时工作,同时读,同时写,要想同时就需要把两个芯片的片选信号用同一个信号来表示。
字扩展
目的是增加存储字的数量(寻址空间扩展)。
如何用 1K 8 位的存储芯片组成 2K 8 位的存储器?
答案:需要两片 1K * 8 位的存储芯片,11根地址线(多出一根片选信号(地址最高位为0选第一片)),8根数据线。
字、位同时扩展
如何用 1K 4 位存储芯片组成 4K 8 位的存储器?
答案:需要 8 片 1K 4 位的存储芯片,12根地址线(其中两根是片选线),8根数据线。用两片 1K 4 的芯片组成 1K 8 的存储器,这样的芯片组需要 4 组才能实现 4K 8 位的存储器。
地址线分为地址信号和片选信号。
存储器与 CPU 的连接
- 地址线的连接
- 数据线的连接
- 读写命令线的连接
- 片选线的连接
- 合理选择存储芯片
- 时序、负载
存储器的校验
- 为什么要对存储器的信息进行校验?
受环境影响,比如太空中带电粒子的打击,可能会对电容进行充电,导致信息错误,导致更大的灾难。 - 为了能够校验出信息是否正确,如何进行编码?
- 纠错或检错能力与什么因素有关?
- 校验出信息出错后如何进行纠错
合法代码集合
- {000, 001, 010, 011, 100, 101, 110, 111} 如果有一位错误,无法检测,检0位错、纠0位错。
- {000, 011, 101, 110} 1的个数为0或偶数,检1位错,纠0位错,能够知道哪个错了,但是无法纠正。
- {000, 111} 假设使用三倍冗余的方式存储0和1,比如 000 表示 0, 111 表示 1,假设收到 100,由于存储器1位错的概率极大,多位错的概率小,所以可以认为 100 原始保存的是 000,检1位错,纠1位错。
- {0000, 1111} 使用四倍份冗余,检两位错,纠1位错。
- {00000, 11111} 使用五倍份冗余,检两位错,纠2位错。
纠错和检错能力相关因素
编码的检测能力和纠错能力与什么有关?和任意两组合法代码之间二进制位的最少差异数有关。差的越多,检错和纠错能力就越强。
编码最小距离
合法代码集中,任意两组(个)合法代码之间二进制位数的最少差异。编码的纠错、检错能力与编码的最小距离有关。
L-1 = D+C (D >= C)
- L = 编码的最小距离
- D = 检验错误的位数
- C = 纠正错误的位数
汉明码的组成
汉明码是具有一位纠错能力的编码。
- 汉明码采用奇偶校验
- 汉明码采用分组校验
把位划分成多个组。
- 汉明码的分组是一种基于非划分的方式,有些位属于多个组,有些位属于一个组。
略
提高访存速度的措施
- 采用高速器件
- 采用层次结构 Cache-主存
- 调整主存结构
单体多字系统
之前假设机器字长和存储字长相等,一次取指令只取一条。现在可以一次取多个来提高速度。增加存储器带宽。
问题一:如果 CPU 只想写一个数据寄存器的数据,会导致其他三个寄存器都写数据到内存,可以通过硬件解决。
问题二:如果要访问的数据不连续呢,比如第一条指令是跳转指令,并且跳转了很远,那么这时取出的其他三个字就是无效的。
多体并行系统
高位交叉 顺讯编址
如果每个存储体都有自己的 MAR ,那么就可以并行。
问题:程序的指令具有连续性,虽然这种架构有了并行的思想,在程序执行时会导致某个存储体非常繁忙。
这种方式就是之前存储器容量扩展的方式,高位交叉编地址,存储体内顺序编址。适合存储器容量扩展,但不适合提高存储器带宽。
低位交叉 各个体轮流编址
地址的后两位给出了存储体编号。
程序指令顺序轮流放在多个存储体中。
特点:在不改变存取周期的前提下,增加存储器带宽,流水方式。
高位交叉用于容量扩展,低位交叉用于带宽增加
高性能存储芯片
SDRAM 同步 DRAM
在系统时钟的控制下进行读出和写入 CPU 无须等待,之前都是没有同步的,相当于异步。这种 SDRAM 需要存储器速度很高,能跟上 CPU。
RDRAM
主要解决存储器带宽问题。
带 Cache 的 DRAM
在 DRAM 的芯片内集成一个由 SRAM 组成的 Cache,有利于猝发式读取。