系列文章目录
第五章 输入输出系统(I/O系统)
文章目录
前言
今天是7月20号,学习计算机组成原理第五章——输入输出系统
这是计算机组成原理的硬件最后一部分
一、概述
1.1 输入输出系统的发展概况
随之输入输出系统的发展,数据的输入输出操作,逐渐地被从CPU中分离出来,独立性越来越强
中断方式或者是DMA方式与CPU进行数据传输,DMA可以绕过CPU直接将数据存储
I/O处理机也是一个计算机,但是他不做计算工作,但是他只是把用户数据发送到远端,显示远端的桌面
字符型设备比较慢
光学字符设备:识别条形码等等
1.2 输入输出系统的组成 (软硬件结合)
1.2.1 I/O软件
1.2.1.1 I/O指令
CPU指令集中的I/O指令
操作码:I/O指令的标志,他表示这个指令是I/O指令
命令码:CPU普通指令的操作码,指出对I/O设备做什么操作,输入输出等
设备码:I/O设备地址或者I/O设备某个寄存器地址,这些寄存器被称为I/O端口
1.2.1.2 通道指令(通道自己定义的指令)
小型的DMA处理机,能够实现I/O设备与主机之间直接信息传送
通道有自己的控制器,有的通道有自己的存储器
通道能够执行由通道指令组成的通道程序
有时候应用程序需要增加广义I/O指令,广义I/O指令指出参加数据传输的I/O设备,数据传输主存的首地址,数据长度,传输方向。操作系统根据广义I/O指令的参数和指令,编写一个由通道指令组成的通道程序,把通道程序放到内存或者通道内存指定位置,启动通道,执行工作。
1.2.2 I/O硬件
I/O硬件,若是由通道方式,设备连接设备控制器,设备控制器连接子通道,子通道连接通道
1.3 I/O设备与主机的联系方式
若要启动I/O设备,如何启动I/O设备
对于I/O设备的编址方式:
统一编址,是将一部分的地址空间用于I/O设备。当地址落入这部分地址空间时,对应就是对I/O设备进行操作。
不统一编址,想要对I/O设备进行操作需要专门的I/O指令(in out)地址可以与原来的地址空间有重复
串行:一位一位传输,速度慢,适合远程传输
并行:同时有多位数据在数据线上传输,数据线有多条,通常情况下数据线的条数是8的倍数
立即响应:结构简单的设备,状态数量比较少,接收或者输入数据可以直接进行显示。比如LED灯。性能不好,立即响应不着急的I/O设备,很影响CPU工作
异步工作采用应答信号:可以并行也可以串行
并行:CPU与接口之间是并行传输,I/O接口和I/O设备有多条数据线组成的类似总线结构的数据线,实现并行输出
同步工作采用同步时标,统一的时钟clk
这里辐射式连接就是上面介绍中的分散连接,接线复杂,不便于增删设备 也不利于设备的移植性
总线连接,外部设备通过接口和主机进行连接,接口可以向外部设备传送主机的命令,外部设备向主机传送状态信息。
接口也可以完成数据缓存,外部输入的数据可以先缓存到接口中进行格式转换
因为接口一般是有工业标准的,容易进行替换和移植
1.4 I/O设备与主机信息传送的控制方式 (3种)
1.4.1 程序查询方式
CPU与I/O串行工作,CPU和I/O是交替完成的
下面是补充扩展部分
加入操作系统以后,进行合理地进程调度,进行进程的时候不能识别设备完成数据准备,需要等到中断服务
最后的P2是因为可能P2的时间片没有结束
独立程序快,操作系统方式慢,因为第二种需要等到时间到了才能查询外设状态
1.4.2 程序中断方式
CPU与I/O部分并行,在I/O数据准备时候CPU可以工作
只能说CPU部分解放出来,解放并不彻底,因为传输过程中仍然需要CPU的参与
而且要保证程序被中断后程序能正确执行需要保护现场,需要指令操作,耗费一定时间。
当只传输很少的字节,这些延迟就很能体现出来
仍然是CPU在内存和I/O设备中间
“I/O设备自身准备”是最耗时间的,CPU不查询,只是启动I/O设备然后做别的事情
准备之后,CPU进入中断处理程序,进行检查状态,I/O是否出错
补充的操作系统的程序中断方式
这个与程序查询方式的操作系统时间差不多
例题:
1.4.3 DMA方式
CPU进一步从数据输入输出解放出来,外部设备和内存之间可以建立直接的连接,DMA控制器或者DMA接口控制外部设备和内存之间进行内存交换
内存和I/O直接进行数据交换,进一步解放CPU
在那一个或几个存取周期中,外部设备和内存在DMA控制器的控制之下,完成数据交换。CPU仍然可以继续工作,只是不能进行对内存的访问,但是仍然可以工作。与程序中断方式相比,不需要保存现场,不需要恢复现场,不需要用软件进行输入输出程序的控制,进一步把CPU从主机和I/O的数据传送过程中解放出来
CPU也会与主存进行数据交互,这里需要和DMA控制器协调-》周期挪用
一个存取周期,CPU只需要读取DMA的上报的状态字,判断这几个读的字是否成功
缺点:上面两种方式某一个字出错都会立马检测出来,而DMA方式一次“I/O准备”会读很多字,CPU不能第一时间相应错误,需要等到DMA结束时
“设备准备数据,每准备好一个字,传输一个到主存,在准备过程中就可以传输到主存”
1.4.4 三者比较小结
中断方式那里的蓝箭头发出请求之后CPU还有一部分棕色线,是因为要等到执行结束周期结束后
二、外部设备(I/O设备 这里已经重复了这几页,没讲)
只做简要介绍
2.1 概述
2.2 输入设备
2.3 输出设备
2.4 其他
2.5 多媒体设备
三、I/O接口
3.1 概述
电平转换:统一传来的高低电平不统一的情况
传送控制命令:传过来的指令能转换为IO能识别的
3.2 接口的功能和组成
设备选择线:单向线,设备地址、设备端口(类似片选线)
数据线:双向
命令线:控制设备
状态线:告诉主机I/O设备的状态
完成触发器D:外部设备是否完成准备工作
工作触发器B:外部设备工作状态是否忙
中断请求触发器INTR:向主机提出终端请求,但是能否允许提出中断请求,要看终端请求的重要性
屏蔽触发器MASK:若MASK=1,即使外部设备完成了工作,仍然不能向主机发出中断请求
3.3 接口类型
没有程序中断接口,因为程序中断对应CPU的功能,不是接口的
可编程的:显示器可以控制分辨率等
不可编程的:耳机麦克风
四、程序查询方式
设置计数值时,设置为正数n,用来记录传输的字,每传输一个字,计数值-1,最后减到0结束
或者设置为负数,-n,用补码表示,每传输一个字计数值+1,最后计数值溢出为0
开始启动命令到达的时候:
D被设置为0,表示数据还未准备就绪
B被设置为1,表示设备启动
最后设备工作结束信号来临:
D被设置为1,表示输入数据已经准备好
B被设置为0,表示设备结束任务
DBR是数据缓存
CPU一直在等待,反复查询的是标记为5的线上的信号,查询到1之后才能确认数据已经准备好。CPU通过数据线读入
五、程序中断方式
5.1 中断的概念
5.2 I/O中断的产生
实际“启动打印机”也是CPU原有的程序命令,不算中断
“传送和接收”是中断服务程序
这里第二个发送中断请求时请求打印下一页,一次传输只传输了一个页面
5.3 程序中断方式的接口电路(讲过,跳过了)
排队器:确定提出中断请求的设备优先级最高的设备优先
中断向量地址形成部件:中断服务程序在内存中的入口地址
数据已经被准备好了,D=1可以请求中断,并且不被屏蔽,Q=0,此时的INTR=1为有请求
若
I
N
T
R
1
=
1
INTR_1=1
INTR1=1 ,那么后续的与门的输入一定会有一个为0,那么后续的
I
N
T
P
n
’
INTP_n ’
INTPn’ 的输出都是0 。
若
I
N
T
R
2
=
1
INTR_2=1
INTR2=1 ,那么相当于中断源2有中断请求,这时候是要
I
N
T
R
1
=
0
INTR_1=0
INTR1=0、
I
N
T
R
2
=
1
INTR_2=1
INTR2=1,很明显由于最左侧接地,
I
N
T
P
1
’
INTP_1 ’
INTP1’开始的后面几个输出应该都是1,那么明显可以看到最后一个1对应的是提出中断请求的优先级最高的设备。它后面的高电平还是低电平没有不做设置。加入与门后可可以将提出中断请求的设备筛选出来,对应其
I
N
T
P
n
INTP_n
INTPn是1。
确定响应哪一个中断源的中断请求,如何找到中断服务程序的入口地址。
这也被称为设备编码器
5.4 I/O中断处理的过程
5.5 中断服务的程序流程
程序断点的保护,包括两部分内容:
- 中断返回以后,执行哪一条指令,保存这条指令地址(PC)
- 程序执行状态,不能由指令直接读取的状态也是程序的断点,需要保护
中断隐指令,本身不是一条指令,硬件自动要执行的一系列操作。这样保存现场的
单重中断:不允许新的中断服务程序中断现在正在运行的中断服务程序,哪怕是更高级别的中断请求
如何对单重中断进行改进,改进之后让他执行多重中断:
在单重中断的服务程序流程中,保护现场、设备服务、恢复现场时,EINT都为0,这些阶段均为关中断。因此在此时有优先级更高的中断CPU也不会响应。在中断服务程序最后才打开中断,允许中断。
多重中断将开中断提前
宏观上并行的,微观上并非完全一直在并行
六、DMA方式
DMA:直接存储器访问
6.1 DMA和程序中断两种方式的数据通路
6.2 DMA与主存交换数据的三种方式
6.2.1 停止CPU访问主存
在DMA工作时,CPU直接停止访问主存,便于控制, 利于大规模数据传输
CPU放弃了总线控制权,放弃了对主存的访问权,都交给DMA接口。若指令已经被取到cache,CPU可以继续工作,只要不访问存储器就可以了。
但是DMA使用主存的时候,数据传输仍然是一个字一个字传输,传输间隔比较大,这些时间被浪费
6.2.2 周期挪用(周期窃取)注:这里的“周期”是访存周期
DMA上连接的是高速设备,所以CPU和DMA同时请求访存的时候,会把总线的控制权让给DMA
但是CPU正在访存的时候,DMA不能抢断
主存工作周期拉满
若DMA不及时访问主存,第二次按键可能覆盖第一次按键,数据覆盖
6.2.3 DMA与CPU交替访问(实用性不强)
DMA不需要申请建立和归还的使用权,会更快一点
需要让主存工作时间很长,在后续可能会拖累CPU,效率并不是最优
6.3 DMA接口的功能和组成
6.3.1 DMA 接口功能
(1)看CPU是否是在使用主存
注意(4)的修正过程,修正传送过程中的数据地址和传输数据的长度,这样用来确定数据块的传送是否结束
6.3.1 DMA 接口组成
以下展示单总线结构:
AR : 地址寄存器(每完成一次输入或者输出都要对地址寄存器进行修改,每次+1)
WC : 传输数据量计数(存一个负数,-n,每次传输一个数据就+1)也有的说这里是每次-1,剩余的字数减少
BR : 数据缓冲器(外部设备的数据或者存储单元的数据,暂存在数据缓冲器中)
DAR:设备地址寄存器(两个作用:1.设备选择使用,这次选择的设备是否为这个接口当前连接的设备,是否由这个DMA进行管理
2. 可以保存磁盘的扇区号、磁道号等等)
AR、WC、DAR都是通过数据线进行设置
DMA控制逻辑:控制接口内部协调的工作,控制给定的时序发出给定的信号,控制数据线、地址线。向主存发出读写控制请求,向CPU发出DMA请求
DREQ:设备向DMA的控制请求信号
DACK:应答信号
HRQ:总线占用信号,请求总线
HLDA:总线应答信号,同意使用总线
上面两个防止DMA和CPU发生控制冲突
中断机构:数据传输后的后续处理
6.4 DMA传送过程
预处理、数据传送、后处理(中断服务程序)
6.4.1 预处理
DAR和AR两个地址,是要告诉DMA从哪到哪,两个地址
6.4.2 数据传送过程
至于数据的输入输出,由DMA接口完成,它可以控制完成一批数据的传送
数据传送时的请求判断,是在判断总线能否使用
主存地址送总线的过程,是AR寄存器负责
注意每一处的判断的都是依靠哪一个寄存器
下面以输入数据的传送过程为例:
567 是先选中主存的一个地址,然后通知设备可以传输设备,然后传数
WC到0,传输完成,溢出信号,发出中断请求
输出过程为例:
对于“DMA请求”以及DMA请求过程,这个概念可以看作业题5.32,我问老师相关的问题并且老师后来也在班级群里面重新讲述了有关的DMA请求过程的该问题
传送多个字的过程,相当于重复1-5步骤,数据块传输完毕之后,DMA接口申请中断,请求CPU进行后处理
针对第1条,只有这一批数据的第一个字准备时,需要CPU参与,后续的字会在DMA取走上一个字之后自动开始准备
由于通常CPU的机器周期与访存周期是同步的,所以在机器周期结束响应DMA请求即可满足要求
6.4.3 后处理
在WC值溢出后,CPU响应了中断请求之后,执行中断程序来进行数据的校验、是否继续使用DMA、测试传送过程是否正确。这些都是在服务中断程序中完成的
与程序中断方式不同,程序中断方式的中断时传一个字中断一次,而DMA也中断,但是他的中断只是进行后处理
6.5 DMA接口与系统的连接方式
一台机器可以有多个DMA接口,多个DMA接口都要连接到总线上
6.5.1 具有公共请求线的DMA请求
这个方式与串行连接方式十分类似
公共的DMA请求线是送往CPU的
DMA响应也是按照优先级,越靠近CPU的DMA接口的优先级越高
固定的优先级
6.5.2 独立的DMA请求
这个方式与总线的独立请求方式一致
每个DMA接口依然要和数据线和地址线连接
每个DMA接口都有独立的DMA请求信号和DMA响应信号,排队逻辑在CPU内部完成
优先级随意改变
七、DMA方式与程序中断方式的比较(注意比较!!!)
对于数据传送,中断方式是中断服务程序,需要CPU参与;DMA方式是硬件控制,不需要CPU参与
中断方式能立即发现异常,DMA等到最后
DMA只要存取周期结束,CPU空闲可以立即响应,优先级高,更快
八、DMA接口的类型
逻辑上,同一时间只允许一个设备进行操作,多选一,因此存在选择线
数据准备阶段可以有多个设备同时进行准备
但是数据传输的时候还是只能有一个设备连接
通道是一种小型的DMA处理机,一条控制指令设置了第一个子通道,下一条指令可以紧接着设置另外一个子通道。对应的外部设备可以同时进行数据准备
总线的分时复用,让多设备可以同时工作
这里假设优先级为磁盘>磁带>打印机
假设真正用于数据传输的时间只有5微秒
注意,速度越快的设备优先级越高,所以在磁盘和磁带同时有DMA请求,先响应磁盘
虽然连接了多个外部设备,还是有很多时间通道处于空闲时间,可以连接更多设备
DMA的请求时间的差别,是外部设备准备的时间
分时复用让多个设备忙起来,磁带磁盘都能准备数据