一、存储器概述
1、存储器的分类
(1) 按存储介质分类
a. 半导体存储器:比较常见 ,易失
- TTL:Transistor-Transistor-Logic 晶体管-晶体管逻辑电路
集成度比较低,功耗比较高,速度快 - MOS:MOS管,金属-氧化物-半导体(如目前的计算机内存)
功耗低,集成度高
b. 磁表面存储器:要有磁头和载磁体(磁盘分区)
c. 磁芯存储器:硬磁材料,环状元件(S极N极表示0,1)
d. 光盘存储器:激光/磁光材料
(2) 按存取方式分类
a. 存取时间与物理地址无关(随机访问)
- 随机存储器:可读可写
- 只读存储器:只读
b. 存取时间与物理地址有关(串行访问)
- 顺序存取存储器 磁带
- 直接存取存储器 磁盘
(3) 按在计算机中的作用分类
a. 主存储器
- RAM:random access memory
- 静态RAM
- 动态RAM - ROM:read only memory
- MROM: mask read-only memory,掩模式只读存储器
- PROM:programmable ROM,可编程ROM
- EPROM:erasable programmable ROM,可擦除可编程ROM
- EEPROM:electrically erasable programmable ROM,电可擦除可编程ROM
b. Flash memory 例如U盘
c 高速缓冲存储器(Cache):用静态RAM做,速度快
d. 辅助存储器:磁盘、磁带、光盘
2.存储器的层次结构
缓存cache:存的主存的副本,是CPU经常用到的内容
缓存-主存:利用硬件连接成一个整体,主要解决速度问题
主存-辅存(虚拟存储器):利用软硬件连接起来,主要解决容量问题
二、主存储器
1、主存
(1) 主存的基本组成
(2) 主存和CPU的联系
(3) 主存中存储单元地址的分配
(4) 主存的技术指标
- 存储容量:主存存放二进制代码的总位数
- 存储速度:
- 存取时间:存储器的访问是时间(读出时间,写入时间)
- 存取周期:连续两次独立的存储器操作,读或写所需的最小间隔时间
- 存取周期 = 存取时间+恢复时间
- 存储器的带宽 : 位/秒
2、半导体存储芯片简介
(1) 半导体存储芯片的基本结构
(2) 半导体存储芯片的译码驱动方式
a.线选法
地址译码器A:2^4 = 16
读/写控制电路D:8
存在的问题:容量稍大的芯片不合适,集成不了那么多线
b.重合法
3.随机存储存储器(RAM)
(1) 静态RAM(SRAM)
a.静态RAM基本电路的读操作
b.Intel 2114芯片举例
-
读
在行地址中选中0,列地址中选中每行的0,那么第0行所有的第0列都会输出 -
写
(2) 动态RAM(DRAM)
a.动态RAM基本电路操作
读出与原存信息相反:
- 如果Cg是0,读数据线是高电平,读出的信息是1
- 如果Cg是1,读数据线是低电平,读出的信息是0
写入与输入信息相同:
- 写入的信息是1,写数据线是高电平,T3会对Cg进行充电,Cg保存为1
-写入的是低电平,T3会对Cg进行放电,Cg保存为0
b.Intel 1103芯片举例
-
读
三角形元件:刷新传感器 -
写
c.RAM4116芯片举例
-
读
读放大器:是一个跷跷板电路,一端0,另一端1 -
写
d.动态RAM刷新
对动态RAM进行出刷新只与行地址有关,刷新的是一行的数据,而不是某一个存储单元的数据
-
集中刷新
死区:0.5s*128=64s -
分散刷新
无死区 t = tM+tR = 读写+刷新 → 存取周期0.5μs+0.5μs -
分散刷新与集中刷新相结合
对于15.6μs是集中式刷新,但对于整个来说是分散式刷新
死区:每0.5μs
将刷新安排在指令译码阶段,不会出现死区
(3) 动态RAM和静态RAM比较
4.只读存储器(ROM)
(1) MROM: mask read-only memory掩模式只读存储器
行列选择线交叉处 有 MOS管 为“1”
行列选择线交叉处 无 MOS管 为“0”
(2) PROM:programmable ROM 可编程ROM
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200531161427269.png = 400x)
一次性的,熔丝断不断,程序不可修改
(3) EPROM:erasable programmable ROM 可擦除可编程ROM
浮动栅的驱散:用紫外线来做,直接照射
缺点:信息擦除比较麻烦
(4) EEPROM:electrically erasable programmable ROM 电可擦除可编程ROM
电可擦除,局部擦除,全部擦除
(5) Flash Memory闪存
比EEPROM快,已经具备RAM的一些功能
5.存储器与CPU的连接
(1) 存储器容量的扩展
a.位扩展
2114芯片:静态RAM
b.字扩展
c.字、位扩展
4K = 2^12 所以12根地址线
8位:8根数据线
(2) 存储器与CPU的连接
a.地址线的连接
- 每一个内存芯片,都有自己的地址范围,地址范围要满足CPU的要求。所以每一根地址线都要用到
b.数据线的连接
c.读/写命令线的连接
d.片选线的连接
- 片选线首先要确认CPU这次访问的是存储器而不是I/O,所以对存储器的访问信号一定要在片选线中有所体现
e.合理选择存储芯片
- 保存系统程序的地方 用ROM
- 保存配置信息的地方 用ROM
- 用户的程序区和系统程序的运行区域用RAM
- 芯片数量尽可能少,片选逻辑尽可能简单
f.其他:时序/负载
g.例题
16根地址线,A0-A15
- 写出对应的二进制码
- 确定芯片的数量及类型
系统程序区: 一片2K x 8 ROM
用户程序区: 两片1K x 4 RAM - 分配地址线
138译码器:将二进制编译成十进制输出的,比如CBA=111,那么输出端Y7(非),此处,CBA有两种情况100和101,因此是Y4(非)和Y5(非),如果Y5是有效的,选择的是2片RAM,Y4有效选择的1片ROM
- 确定片选信号
MREQ一定要连接到片选信号上
MREQ访存控制信号,低电平有效,表示片选信号指的是存储器
当Y5和A10是低电平的条件下,才能访问到RAM
6.存储器的校验
(1) 合法代码集合
- {000,001,010,011,100,101,110,111} 出错看不出
- {000,011,101,110}
如果其中一个数变成了100,能知道错,因为都是偶数位0,但是不知道哪一位错 - {000,111}
采用3倍冗余的方式传输,用000表示一个0,很容易判断出错一位出错的情况 - {0000,1111}
采用4倍冗余,收到1100,但是只能纠正一位出错的情况,两位不知道是0000还是1111
编码的检测能力和纠错能力和任意两组合法代码之间的二进制位的最少差异数有关
(2) 编码的最小距离
- 任意两组合法代码之间二进制位数的最少差异
L−1=D+C(D≥C)
L—— 编码的最小距离
D —— 检测错误的位数
C —— 纠正错误的位数
(3) 海明码
a. 海明码只能纠一位错
- 海明码组成
- 海明码纠错
b. 海明码例题
7.提高访存速度的措施
(1) 采用高速器件
(2) 采用层次机构:Cache-主存
(3) 调整主存结构
a.单体多字系统
b.多体并行系统
- 高位交叉 顺序编址
- 低位交叉 各个体轮流编址
低位交叉的特点:在不改变存取周期的前提下,增加存储器的带宽
三、高速缓冲存储器
1. Cache的工作原理
(1) 为什么要用Cache
- Cache避免CPU“空等”现象
- 程序访问的局部性原理
(2) Cache工作原理
- 主存和缓存的编址
- 块内偏移地址决定块的大小
- 在内存和Cache之间进行传送的时候,是整体进行传送,快内字节的顺序不会发生变化,所以内存和缓存的块内地址是完全相同的
- 主存和缓存按块存储
- 主存和缓存的块的大小相同
-
Cache命中与未命中
缓存 共有C块,主存共有M块,M>>C- 命中: 主存块 调入 缓存
用标记记录与某缓存块建立了对应关系的主存块 - 未命中:主存块 未调入 缓存
主存块与缓存块未建立对应关系
- 命中: 主存块 调入 缓存
-
Cache命中率
命中率: CPU欲访问的信息在Cache中的比例
命中率与Cache的容量与块长有关 -
Cache - 主存系统的效率
(3) Cache的基本结构
(4) Cache的读写操作
a. 读
b. 写
Cache和主存一致性的问题
i. 写直达法(写通过):
-
写操作时数据既写入Cache又写入主存
写操作时间就是访问主存时间 -
优点:Cache和主存一直保持一致
[ 缺点:可能造成CPU对同一块内存单元进行反复的写
ii. 写回法
-
写操作时只把数据写入Cache而不写入主存
当Cache数据被替换出去时才写回主存 -
缺点:Cache和主存不能保持一直一致,在多处理器时,每个处理器都有Cache,无法保证一致性问题
(5) Cache的改进
a. 增加Cache的奇数
b. 统一缓存和分立缓存
2. Cache-主存的地址映射
(1) 直接映射
根据主存储体和Cache存储体的大小
- 把主存储体划分成若干个和Cache存储体相同的区。
- 每个区的大小和Cache存储体的大小是相同的
- 每个区中包含的字块数和Cache存储体包含的字块数是相同的
- 每个缓存块可以和若干个主存块对应
- 每个主存块只能和一个缓存块对应
(2) 全相联映射
主存中的任意一个块可以放入到Cache中的任意一个块中
(3) 组相联映射
- Cache 被分成多少组,主存储区的每个区就被分成了多少块
- 某一主存块只能映射到某一Cache组中的任一一块
3. Cache替换算法
(1) 先进先出算法FIFO
- 类似队列,先进先出
- 缺点:
- 踢出的数据可能是之后不久要用的数据
- 不能很好的体现出程序的局部性原理
(2) 最近最少使用算法LRU
- 在最近一段时间内,使用最少的块中的数据踢出
- 比较好的体现成程序的局部性原理,应用较广
四、辅助存储器
1. 概述
特点:不直接与CPU交换信息
a. 磁盘记录密度:
- 道密度:单位长度上有多少个磁道
- 位密度:单位长度的磁道保存了多少位二进制信息
- 每个磁道都是同心圆,越往外,位密度越低
b. 存储容量
c. 平均寻址时间
- 在硬盘表面移动,找到指定磁道的时间
- 等待时间:读写头停止运动,磁盘旋转,等待指定扇区旋转到指定磁头下面的时间
- 辅存速度 = 寻址时间 + 磁头读写时间