十月底在“打渔”😂,没怎么学习,要赶紧把上部分搞定,开始下部分。
这周的内容是输入输出系统,内部不算多,加把劲。
概述
早期采用分散连接,CPU 和 I/O 设备串行工作,信息传送控制方式采用程序查询方式;然后是接口模块和 DMA 阶段,此时信息传送控制方式采用总线连接,CPU 和 I/O 设备并行工作,采用中断方式和 DMA 方式;往后依次是具有通道的阶段和具有 I/O 处理机的阶段。
I/O 系统由两部分组成:I/O 软件和 I/O 硬件,其中软件包括 I/O 指令(CPU 指令的一部分)和通道指令(通道自身的指令),硬件包括 I/O 接口和设备控制器。
I/O 设备与主机的联系方式主要考虑以下问题:
- I/O 设备的编址方式:分为统一编址(用取数、存数指令)和不统一编址(有专门的 I/O 指令)
- 设备选址:用设备选择电路识别是否被选中
- 传送方式:串行或并行
- 联络方式:立即响应、异步工作采用应答信号或同步工作采用同步时标
- I/O 设备与主机的三种种连接方式:辐射式连接(不便于增删设备)和总线连接(便于增删设备)。
最后是 I/O 设备与主机信息传送的三种控制方式:
- 程序查询方式
- 程序中断方式
- DMA 方式
下面再深入一下。
I/O 设备
I/O 设备也叫外部设备,也就是输入输出设备,大致分为三类:人机交互设备(键盘、鼠标、显示器)、计算机信息存储设备(磁盘、光盘)和机-机通信设备(调制解调器,也就是原来说的光猫),剩下的具体设备就不说了,不是重点。
I/O 接口
首先应该明确的是设置接口的目的(功能):
- 实现设备的选择
- 实现数据缓冲达到速度匹配
- 实现数据串-并格式转换
- 实现电平转换
- 传送控制命令
- 反映设备的状态(“忙”、“就绪”、“中断请求”)
总线连接方式的 I/O 接口电路包括:设备选择线、数据线、命令线和状态线,各个组成部分也有相对应的功能:
功能 | 组成 |
---|---|
选址功能 | 设备选择电路 |
传送命令 | 命令寄存器、命令译码器 |
传送数据 | 数据缓冲寄存器 |
反映设备状态的功能 | 设备状态标记(完成触发器 D、工作触发器 B、中断请求触发器 INTR、屏蔽触发器 MASK) |
I/O 接口大致的基本组成如下图:
I/O 接口分类方式比较多,这里不赘述了,非重点。
程序查询方式
程序查询方式的流程主要分两个部分:查询流程和程序流程,这里不详细描述了,总之记住这种方式最大的特点:串行工作。
程序中断方式
中断的概念,可以参考百科——中断。
实际上,简单理解起来就是打断 CPU 的工作,执行完成其他的指令后,继续执行原指令。从宏观上看,CPU 和其他设备是在并行工作。
程序中断方式的接口电路主要由中断请求触发器、中断屏蔽触发器、排队器、中断向量地址形成部件等组成,如下图所示:
上图中,完成触发器 D 受设备本身控制;中断屏蔽触发器 MASK 为 1 时,屏蔽中断信号;中断请求触发器 INTR 为 1 时,表示有中断请求。
另外,排队器分为软件和硬件,其内部的中断请求优先级按降序排列。中断向量地址可由硬件产生,也可由软件产生,这个地址可以理解为要执行的程序的地址的地址?
I/O 中断处理过程,如下图:
中断服务程序的流程:
- 保护现场:包括程序断电的保护(中断隐指令完成)和寄存器内容的保护(进栈指令)
- 中断服务:对不同的 I/O 设备具有不同内容的设备服务
- 恢复现场:出栈指令
- 中断返回:中断返回指令
中断还分为单重中断(不允许中断现行的中断服务程序)和多重中断(允许级别更高的中断源中断现行的服务程序),二者的区别如下图:
最后,需要再次强调的是,在宏观上 CPU 和 I/O 并行工作,但在微观上,CPU 中断现行程序为 I/O 服务。
DMA 方式
DMA 方式的特点
程序中断方式的数据传送通路需要经过 CPU,但 DMA 方式的数据传送通路不需要经过 CPU,外部设备与主存直接通过 DMA 接口即可进行数据交换。
DMA 与主存交换数据的方式有三种:
- 停止 CPU 访问主存,这种方式控制简单,但在数据传送的过程中,CPU 处于不工作状态或保持状态,不能充分发挥 CPU 对主存的利用率。
- 周期挪用(也叫周期窃取),这里提到的周期就是指访存周期(存取周期)。所谓周期挪用,其实就是指在 DMA 接口开始进行数据传送时,CPU 放弃对主存的占用,待 DMA 接口完成数据传送后,CPU 再进行对主存访问。此时存在三种可能:CPU 此时不访存、CPU 正在访存、CPU 和 DMA 同时请求访存(此时 CPU 将总线控制权让给 DMA)。
- DMA 与 CPU 交替访问,将 CPU 工作周期分为 $C_1$(专供 DMA 访存)和 $C_2$(专供 CPU 访存)。
DMA 接口的功能
主要是以下五点:
- 向 CPU 申请 DMA 传送
- 处理总线控制权的转交
- 管理系统总线、控制数据传送
- 确定数据传送的首地址和长度,修正传送过程中的数据地址和长度
- DMA 传送结束时,给出操作完成信号
DMA 接口组成
参考下图:
DMA 工作过程
DMA 传送过程
DMA 传送过程依次是预处理、数据传送和后处理。
预处理
通过几条输入输出指令预置如下信息:
- 通知 DMA 控制逻辑传送方向(入/出)
- 设备地址 DMA 的 DAR
- 主存地址 DMA 的 AR
- 传送字数 DMA 的 WC
数据传送
后处理
后处理主要完成以下三个任务:
- 校验送入主存的数是否正确
- 是否继续用 DMA
- 测试传送过程是否正确,错则转诊断程序
注意,后处理过程都是由中断服务程序完成。
DMA 接口与系统的连接方式
主要是两种方式:具有公共请求线的 DMA 请求和独立的 DMA 请求,这有点像是并联和串联的差异?😦
DMA 方式与程序中断方式的比较
类别 | 中断方式 | DMA方式、 |
---|---|---|
数据传送 | 程序 | 硬件 |
响应时间 | 指令执行结束 | 存取周期结束 |
处理异常情况 | 能 | 不能 |
中断请求 | 传送数据 | 后处理 |
优先级 | 低 | 高 |
DMA 接口的类型
也就是下面两种:
选择型: 在物理上连接多个设备,在逻辑上只允许连接一个设备。
多路型:在物理上连接多个设备,在逻辑上允许连接多个设备。
总结
这章的内容听起来真的是枯燥无味啊...基本上 30s 过后,绝对会走神。哎,自己的注意力已经变得这么难以集中了么(手动狗头)...
回到正题,输入输出系统这一块的内容应该在信息传送的三种控制方式上,容易与其他章节的知识点结合起来出综合题。所以针对应试的话,需要找一找这方面的题目进行练习。
另外,在学习这章的过程中,有一个很深刻的感受:如果学习这门课之前先学习了微机原理,那这门课学起来应该恒容易😂,原因是因为这门课介绍了很多与电路相关的东西。
PS:在 MOOC 上的课程中,这是两周的内容,这里只算一周的内容。
PPS:最后补上最后一章的思维导图...