HIT_CO_Week_6

十月底在“打渔”😂,没怎么学习,要赶紧把上部分搞定,开始下部分。

这周的内容是输入输出系统,内部不算多,加把劲。

概述

早期采用分散连接,CPU 和 I/O 设备串行工作,信息传送控制方式采用程序查询方式;然后是接口模块和 DMA 阶段,此时信息传送控制方式采用总线连接,CPU 和 I/O 设备并行工作,采用中断方式和 DMA 方式;往后依次是具有通道的阶段和具有 I/O 处理机的阶段。

I/O 系统由两部分组成:I/O 软件和 I/O 硬件,其中软件包括 I/O 指令(CPU 指令的一部分)和通道指令(通道自身的指令),硬件包括 I/O 接口和设备控制器。

I/O 设备与主机的联系方式主要考虑以下问题:

  1. I/O 设备的编址方式:分为统一编址(用取数、存数指令)和不统一编址(有专门的 I/O 指令)
  2. 设备选址:用设备选择电路识别是否被选中
  3. 传送方式:串行或并行
  4. 联络方式:立即响应、异步工作采用应答信号或同步工作采用同步时标
  5. I/O 设备与主机的三种种连接方式:辐射式连接(不便于增删设备)和总线连接(便于增删设备)。

最后是 I/O 设备与主机信息传送的三种控制方式:

  1. 程序查询方式
  2. 程序中断方式
  3. DMA 方式

下面再深入一下。

I/O 设备

I/O 设备也叫外部设备,也就是输入输出设备,大致分为三类:人机交互设备(键盘、鼠标、显示器)、计算机信息存储设备(磁盘、光盘)和机-机通信设备(调制解调器,也就是原来说的光猫),剩下的具体设备就不说了,不是重点。

I/O 接口

首先应该明确的是设置接口的目的(功能):

  1. 实现设备的选择
  2. 实现数据缓冲达到速度匹配
  3. 实现数据串-并格式转换
  4. 实现电平转换
  5. 传送控制命令
  6. 反映设备的状态(“忙”、“就绪”、“中断请求”)

总线连接方式的 I/O 接口电路包括:设备选择线、数据线、命令线和状态线,各个组成部分也有相对应的功能:

功能 组成
选址功能 设备选择电路
传送命令 命令寄存器、命令译码器
传送数据 数据缓冲寄存器
反映设备状态的功能 设备状态标记(完成触发器 D、工作触发器 B、中断请求触发器 INTR、屏蔽触发器 MASK)

I/O 接口大致的基本组成如下图:

I/O 接口的基本组成

I/O 接口分类方式比较多,这里不赘述了,非重点。

程序查询方式

程序查询方式的流程主要分两个部分:查询流程和程序流程,这里不详细描述了,总之记住这种方式最大的特点:串行工作。

查询流程

程序流程

程序查询方式的接口电路

程序中断方式

中断的概念,可以参考百科——中断
实际上,简单理解起来就是打断 CPU 的工作,执行完成其他的指令后,继续执行原指令。从宏观上看,CPU 和其他设备是在并行工作。

程序中断方式的接口电路主要由中断请求触发器、中断屏蔽触发器、排队器、中断向量地址形成部件等组成,如下图所示:

程序中断方式接口电路的基本组成

上图中,完成触发器 D 受设备本身控制;中断屏蔽触发器 MASK 为 1 时,屏蔽中断信号;中断请求触发器 INTR 为 1 时,表示有中断请求。
另外,排队器分为软件和硬件,其内部的中断请求优先级按降序排列。中断向量地址可由硬件产生,也可由软件产生,这个地址可以理解为要执行的程序的地址的地址?

I/O 中断处理过程,如下图:

I/O 中断处理过程

中断服务程序的流程:

  1. 保护现场:包括程序断电的保护(中断隐指令完成)和寄存器内容的保护(进栈指令)
  2. 中断服务:对不同的 I/O 设备具有不同内容的设备服务
  3. 恢复现场:出栈指令
  4. 中断返回:中断返回指令

中断还分为单重中断(不允许中断现行的中断服务程序)和多重中断(允许级别更高的中断源中断现行的服务程序),二者的区别如下图:

单重中断和多重中断的区别

最后,需要再次强调的是,在宏观上 CPU 和 I/O 并行工作,但在微观上,CPU 中断现行程序为 I/O 服务

DMA 方式

DMA 方式的特点

程序中断方式的数据传送通路需要经过 CPU,但 DMA 方式的数据传送通路不需要经过 CPU,外部设备与主存直接通过 DMA 接口即可进行数据交换。

DMA 与主存交换数据的方式有三种:

  1. 停止 CPU 访问主存,这种方式控制简单,但在数据传送的过程中,CPU 处于不工作状态或保持状态,不能充分发挥 CPU 对主存的利用率。
  2. 周期挪用(也叫周期窃取),这里提到的周期就是指访存周期(存取周期)。所谓周期挪用,其实就是指在 DMA 接口开始进行数据传送时,CPU 放弃对主存的占用,待 DMA 接口完成数据传送后,CPU 再进行对主存访问。此时存在三种可能:CPU 此时不访存、CPU 正在访存、CPU 和 DMA 同时请求访存(此时 CPU 将总线控制权让给 DMA)。
  3. DMA 与 CPU 交替访问,将 CPU 工作周期分为 $C_1$(专供 DMA 访存)和 $C_2$(专供 CPU 访存)。

DMA 接口的功能

主要是以下五点:

  1. 向 CPU 申请 DMA 传送
  2. 处理总线控制权的转交
  3. 管理系统总线、控制数据传送
  4. 确定数据传送的首地址和长度,修正传送过程中的数据地址和长度
  5. DMA 传送结束时,给出操作完成信号

DMA 接口组成

参考下图:
DMA 接口组成

DMA 工作过程

DMA 传送过程

DMA 传送过程依次是预处理、数据传送和后处理。

预处理

通过几条输入输出指令预置如下信息:

  • 通知 DMA 控制逻辑传送方向(入/出)
  • 设备地址 DMA 的 DAR
  • 主存地址 DMA 的 AR
  • 传送字数 DMA 的 WC

数据传送

DMA 传送过程示意

数据传送过程(输出)

后处理

后处理主要完成以下三个任务:

  1. 校验送入主存的数是否正确
  2. 是否继续用 DMA
  3. 测试传送过程是否正确,错则转诊断程序

注意,后处理过程都是由中断服务程序完成。

DMA 接口与系统的连接方式

主要是两种方式:具有公共请求线的 DMA 请求和独立的 DMA 请求,这有点像是并联和串联的差异?😦

具有公共请求线的 DMA 请求

独立的 DMA 请求

DMA 方式与程序中断方式的比较

类别 中断方式 DMA方式、
数据传送 程序 硬件
响应时间 指令执行结束 存取周期结束
处理异常情况 不能
中断请求 传送数据 后处理
优先级

DMA 接口的类型

也就是下面两种:

选择型: 在物理上连接多个设备,在逻辑上只允许连接一个设备。

选择型

多路型:在物理上连接多个设备,在逻辑上允许连接多个设备。

多路型

总结

这章的内容听起来真的是枯燥无味啊...基本上 30s 过后,绝对会走神。哎,自己的注意力已经变得这么难以集中了么(手动狗头)...

回到正题,输入输出系统这一块的内容应该在信息传送的三种控制方式上,容易与其他章节的知识点结合起来出综合题。所以针对应试的话,需要找一找这方面的题目进行练习。
另外,在学习这章的过程中,有一个很深刻的感受:如果学习这门课之前先学习了微机原理,那这门课学起来应该恒容易😂,原因是因为这门课介绍了很多与电路相关的东西。

PS:在 MOOC 上的课程中,这是两周的内容,这里只算一周的内容。

PPS:最后补上最后一章的思维导图...

I/O


Buy me a coffee ? :)
0%