接着上一篇:计算机组成原理复习(1),本节主要介绍存储器和I/O
注:本文的所有图片参考自“哈尔滨工业大学,计算机组成原理课程张丽杰PPT”
3. 存储器
基本概念
与往常一样,先来看看基本概念:
-
存储系统的层次结构:
- Cache-主存:用于解决主存与CPU速度不匹配的问题;
- 主存-辅存:主存容量较小,辅存容量较大;
-
半导体存储芯片结构(主要记忆片选线以及读写控制线的符号)
-
静态RAM:利用触发器进行存储;读写满足先行后列再选,最后输出;
-
动态RAM:利用电容进行存储;
-
三管MOS
读出和原数据相反,写入和输入的数据相同; -
单管MOS
读出与写入均保持一致; -
动态RAM的刷新:由于动态RAM是利用电容存储电荷的原理存储信息,为了避免电容放电,需要对RAM进行刷新,刷新方式有三种:
1). 集中刷新:在一个统一的时间段刷新;
2). 分散刷新:把一个时钟周期分为读写+刷新两个部分;
3). 异步刷新:集中刷新和分散刷新的结合。一个刷新分布在多个读写周期之后,共同组成一个异步刷新周期
-
-
动态RAM和静态RAM比较:
基于上述事实,动态RAM常被用于主存,静态RAM常被用于Cache
我们来看看重难点:
重难点
存储器与CPU的连接
- 字拓展与位拓展:字拓展主要扩大芯片的寻址空间;位拓展主要扩大数据位数。简单的乘除法即可解决;
下面,给出一个例题以说明存储器与CPU的连接:
- 首先,我们需要根据题目要求,写出地址空间:
系统程序区(选用ROM,只读的,不许修改的)
0110 0000 0000 0000
…
0110 0111 1111 1111
用户程序区(选用RAM,可修改的)
0110 1000 0000 0000
…
0110 1011 1111 1111 - 挑选元件
系统程序区
通过简单分析得:
大小: 2 11 B = 2 K B 2^{11}B = 2KB 211B=2KB(因为有8根数据线,所以是B)
选用ROM为: 1 片 2 K × 8 b i t 1片2K\times8bit 1片2K×8bit
用户程序区
大小: 2 10 B = 1 K B 2^{10}B = 1KB 210B=1KB
选用RAM为: 2 片 1 K × 4 b i t 2片1K\times4bit 2片1K×4bit - 绘制图:
- 注意点:
1). MREQ信号一定要连上;
2). PD信号一定要连上,表明ROM不可编程;
3). WR信号一定不能忘,表明RAM可读写;
4). 74LS138芯片运行时必须满足 G 1 , G 2 A , G 2 B ( 省 去 上 面 的 横 ) G_1,G_{2A},G_{2B}(省去上面的横) G1,G2A,G2B(省去上面的横)的输入情况为1,0,0;
存储器校验
汉明码构成:
- 补充
k
k
k位代码,利用公式
2 k ≥ n + k + 1 2^{k} \ge n+k+1 2k≥n+k+1 - 检验位放在
C 2 i = 2 i ( i ≤ k − 1 , i ∈ N ) C_{2^{i}} = 2^{i}(i\le k-1, i\in N) C2i=2i(i≤k−1,i∈N) - 配偶原则:添加了校验位后, C i C_i Ci小组1的个数为偶数个
- 配奇原则:添加了校验位后, C i C_i Ci小组1的个数为奇数个
- C i C_i Ci小组成员记忆法:卡诺图法
给出一个例子:
汉明码纠错原则:仅仅纠正一位错误,举例如下
多体并行系统
- 高位交叉系统
- 描述:顺序编址
- 优点:访存方便
- 缺点:存储体利用率低;因为程序一般是保存在一段连续的空间中,因此对存储体的访问一般集中在某一个存储体,故存储体利用率低
- 低位交叉系统
- 描述:各个体轮流编址
- 优点:执行效率高,可流水化;CU控制存储器的打开和关闭,在取一段程序时,完全可以在启动
M
0
M_0
M0的后启动
M
1
M_1
M1……从而实现快速取指
注意:上图中说到的总线传输周期,事实上就是控制器对存储器的控制信号的传输时间,所以每隔 τ \tau τ才启动一个存储体。 - 缺点:不易于控制;
Cache映射方式
要了解Cache,首先了解Cache机制:
CPU给出主存地址,先访问Cache,Cache查找比对该地址,如果命中块i,则返回块i;如果未命中,则访问主存,将主存中对应的块放入Cache中,再返回;
-
直接映射
-
全相联映射
-
组相联映射
这都没什么好说的,看例题最为关键:
1). Cache容量有
4
K
B
4KB
4KB,有
4
K
4K
4K个地址,故Cache地址有
log
2
4
K
=
12
\log_2{4K}=12
log24K=12位;
2). 一个块有
16
×
4
B
=
64
B
16\times 4B = 64B
16×4B=64B,故Cache可容纳
4
K
B
÷
64
B
=
2
6
4KB \div 64B = 2^{6}
4KB÷64B=26 个块;
3). 主存有
512
K
512K
512K个地址,故主存地址有
log
2
512
K
=
19
\log_2{512K}=19
log2512K=19位;
4). 主存可容纳
512
K
B
÷
64
B
=
8
K
512KB \div 64B = 8K
512KB÷64B=8K 个块;
5). 主存标记块实质是主存能够分得的区数,简单来说,主存一共能够分得几个Cache体。一个Cache体有64块,主存有
8
K
8K
8K块,故能够分得
8
K
÷
64
=
2
7
8K \div 64 = 2^{7}
8K÷64=27个Cache体,所以能够分成
2
7
2^{7}
27个区,故主存标记位数为
log
2
2
7
=
7
\log_2{2^7}=7
log227=7位;
6). 缓存字块地址即
log
2
2
6
=
6
\log_22^6=6
log226=6位
7). 前面求得一个块有
64
B
64B
64B,所以有
log
2
64
=
6
\log_2 64=6
log264=6位;
最后,检验7+6+6=19=主存地址数,答案初步判断正确;
4. I/O
先来讲讲I/O的三种基本方式
- 程序查询方式
- CPU执行现行程序;
- CPU查询到某I/O的请求;
- CPU等待I/O数据准备与传输;
- CPU恢复执行;
- 程序查询方式的接口电路:
首先CPU向接口发出启动命令,用于启动I/O,此时至B为1,D为0,设备启动;设备启动后,等待I/O输入数据至DBR(Data Buffer Register,数据缓冲区),输入后,设备发起设备工作结束信号,该信号置B为0,D为1,向CPU发出准备就绪命令,最后将DBR的数据送至数据线上。
- 中断请求方式
- CPU执行现行程序;
- I/O进行数据准备,I/O发起中断请求;
- CPU响应中断请求,执行中断程序;
- CPU从中断程序返回,恢复执行;
- 中断请求方式接口电路:
注意排队器可以连接高一级的排队器以及低一级的排队器 - 中断隐指令:非指令,包括中断响应、程序断点进栈、关中断、向量地址送PC
- DMA方式
- 停止CPU访问主存 :
描述:DMA访问主存时停止CPU对主存的访问。
优点:控制简单;
缺点:未充分发挥CPU对主存的利用率; - 周期窃取(挪用)
DMA申请访问主存时分为三种情况:CPU没有访问主存、CPU正在访问主存、CPU和DMA同时访问主存。对于情况1,DMA可以直接占用CPU的存取周期;对于情况2,DMA需要等待CPU完成主存的访问;对于情况3,CPU将总线控制权让给DMA。
总之,DMA最大。 - CPU和DMA交替访问主存
- DMA接口电路:
首先设备将数据送到BR(Buffer Register)中,然后向DMA控制逻辑单元发送数据请求(Data Request),之后DMA控制逻辑单元发送HRQ(估计是DMA占用请求)给到CPU,CPU返回应答信号HLDA,收到信号后,DMA接口将AR送至CPU,DMA控制逻辑单元发送DACK请求给设备,说明DMA传输已经准备完毕,数据可以开始进行传输了,随着WC不断增加直至溢出,中断机构发送中断请求,CPU执行后处理阶段
- DMA方式与中断方式对比
注意两种方式的中断请求功能 - 接口与端口
端口(Port)是指接口中的一些寄存器,是用于存放控制信息、状态信息以及数据信息的;
接口(Interface)是由多个端口以及相应的控制逻辑组成;