5.1 概述
5.1.1 发展概况
- 早期
-
- 分散连接
- CPU和I/O设备 串行 工作 程序查询方式
- 接口模块和DMA阶段
-
- 总线连接
- CPU和I/O设备 并行 工作:中断方式;DMA方式
- 具有通道结构的阶段
- 具有I/O处理机制的阶段
5.1.2 组成
输入输出系统由 I/O 软件和 I/O 硬件组成
I/O 软件
- I/O 指令 CPU指令的一部分;
一条指令构成:
| 操作码 | 命令码 | 设备码 |
|---|---|---|
- 操作码:I/O指令标志
- 命令码:指令功能、读、写、检测、控制命令
- 设备码:地址码,指明I/O指令要访问的设备地址
- 通道指令 通道自身的指令
指出数据的首地址、传送字数、操作命令
I/O 硬件
设备 I/O接口 这种方式通过总线将I/O设备和主机相连
如果采用通道方式,结构则变成:
设备 设备控制器 通道
5.2 I/O设备和主机的联络
如果主机想要I/O设备进行通信,则需要I/O的地址
下面引入I/O设备的编址方式
5.2.1 I/O设备的编址方式
1. 统一编址
- 又称为存储器映射方式,指把 I/O 端口当作存储器的单元进行地址分配,这种方式 CPU 不需要设置专门的 I/O 指令,用统一的访存指令就可以访问 I/O 端口。
- 优点:不需要专门的 I/O 指令,CPU 访问 I/O 端口灵活、方便,I/O 端口有较大的编址空间。
- 缺点:占用存储器地址,使内容容量变小,利用存储器编址的 I/O 设备进行数据输入输出等操作速度较慢。

2. 独立编址
- 又称为 I/O 映射方式,单独对 I/O 端口进行编址,与主存地址空间是两个独立的地址空间,需要设置专门的 I/O 指令来操作 I/O 端口。
- 优点:使用专门的 I/O 指令,程序编制清晰,易于理解。
- 缺点:I/O 指令少,一般只能对端口进行传送操作,尤其需要 CPU 提供存储器读/写、I/O 设备读/写两套控制信号,增加了控制的复杂性。

对设备进行编址后就可以进行设备选址
用设备选择电路识别是否被选中
选中之后进行信息传送
下面引入信息传送方式
5.2.2 传送方式
在系统总线那章提到过数据传送方式有2种:串行、并行
这边也是这2种方式
5.2.3 联络方式
1. 立即响应
2. 异步
异步工作采用应答信号;这里应答信号用于I/O接口和I/O设备之间

3. 同步
同步工作采用同步时标
在前面我们介绍过采用同步方式需要有一个定宽定距的时标
5.3 I/O设备和主机的连接方式
1. 辐射式
就是上文说的分散式
每台设备都有配有一套控制线路和一组信号线

(Ps:吐槽一下为什么有人觉得计算机难学,就是因为一些shabi把一个很简单的原理非要用一个晦涩难懂的“专业名词”来描述
2. 总线连接
外部设备通过接口和主机进行连接,接口能够向外部设备传送主机的控制命令、也可以向主机传送外部设备的状态信息、接口也可以完成数据的缓存
- 优点:便于增删设备

5.4 I/O设备和主机信息传送的控制方式
5.4.1 程序查询方式
完全通过程序来控制主机和外围设备之间的信息传送。
通常的办法是在用户的程序中安排一段由输入输出指令和其他指令所组成的程序段直接控制外围设备的工作。也就是说CPU要不断地查询外围设备的工作状态,一旦外围设备“准备好”或“不忙”,即可进行数据的传送。该方法是主机与外设之间进行数据交换的最简单、最基本的控制方法。
优点:较好协调主机与外设之间的时间差异,所用硬件少。
缺点:主机与外设只能串行工作,主机一个时间段只能与一个外设进行通讯,CPU效率低。

5.4.2 程序中断方式
当外围设备完成数据传送的准备后,便主动向CPU发出“中断请求” 信号。若CPU允许中断,则在一条指令执行完后,响应中断请求,转去执行中断服务子程序,完成数据传送,通常传送一个字或一个字节。传送完后继续执行原程序。
中断请求方式在一定程度上实现了CPU和外围设备的并行工作。若在某一时刻有几台设备发出中断请求,CPU可根据预先定好的优先级,去处理几台外设的数据传送。
但是对于工作频率较高的外设,如磁盘,数据交换通常是成批的,若采用中断方式,则不合适。一般采用DMA(Direct Memory Access)方式。
优点:避免频繁查询,适合随机出现的服务和中低速外设使用。
缺点:成批数据交换时,中断影响传送效率,一次传送一个字符,中断处理时间大于传送数据时间。需要一定的硬件电路。

5.4.3 DMA方式
DMA方式,Direct Memory Access,也称为成组数据传送方式,有时也称为直接内存操作。DMA方式在数据传送过程中,没有保存现场、恢复现场之类的工作。
由于CPU根本不参加传送操作,因此就省去了CPU取指令、取数、送数等操作。内存地址修改、传送字 个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的。所以DMA方式能满足高速I/O设备的要求,也有利于CPU效率的发挥。
这边先简单介绍3种方式的特点,下面会详细介绍。
5.4.4 三种方式的CPU工作效率的比较

5.5 I/O设备
5.5.1 概述
外部设备通过I/O接口和主机之间进行数据的交换;主机通过I/O接口向外部设备传输控制命令,同时通过I/O接口读取外部设备的状态;

5.6 节会详细介绍I/O接口
外部设备分类图:

5.5.2 输入设备
- 键盘
-
- 按键
- 判断哪个键被按下
- 将此键翻译成ASCII码(编译键盘法)(教材P169 图5.15讲述了编码键盘的结构和工作原理)
- 鼠标
-
- 机械式 金属球 电位器
- 光电式 光电转换器
- 触摸屏
5.5.3 输出设备
- 显示器
-
- 字符显示 字符发生器
- 图形显示 主观图像
- 图像显示 客观图像
- 打印机
-
- 击打式 点阵式(逐字、逐行)
- 非击打式
-
-
- 激光 逐页
- 喷墨 逐行
-
5.5.4 其他
- A/D、D/A 模拟/数字(数字/模拟)转换器
- 终端 完成显示控制与存储、键盘管理及通信控制
- 汉字处理
5.5.5 多媒体设备
多媒体(Multimedia)是多种媒体的综合,一般包括文本,声音和图像等多种媒体形式,多媒体指组合两种或两种以上媒体的一种人机交互式信息交流和传播媒体。
5.6 I/O接口
5.6.1 概述
接口这个词有很广泛的含义,接口可以用在软件和软件之间;硬件和硬件之间;硬件和软件之间
这节主要讲I/O设备和主机之间的接口,即硬件和硬件之间
先明白为什么要设置接口?
- 实现设备的选择
- 实现数据缓冲达到速度匹配
- 实现数据格式的转换(串行—并行)
- 实现电平转换
- 传送控制命令
- 反映设备的状态(“忙”、“就绪”、“中断请求”)
5.6.2 接口的功能和组成
- 实现主机和外设的通信联络控制。主要是时序配合、工作速度上的协调,确保信息的正确传输,从而保证计算机系统统一、协调地工作。
- 进行地址译码和设备选择。接口负责通过 CPU 送来地外设地址进行译码产生设备选择信息,从而确定目标外设。
- 实现数据缓冲。主要是针对 CPU 速度与外设的相差很大,因此接口必须设置数据缓冲寄存器进行暂存数据,避免 CPU 送来的大量数据而外设处理不过来导致外设奔溃,或者造成数据的丢失。
- 信号格式转换。主要是对电平、数据格式等进行转换,接口需要提供计算机和外设之间的信号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等。
- 传送控制命令和状态信息。控制命令指接口根据 CPU 的请求对指定的外设进行开启、关闭等控制;状态信息就是指接口将指定外设“准备好”等表示外设状态的信息反馈给 CPU,以及 CPU 提出中断时发送给指定外设的相关响应信号。

接口电路:

构成简图:

5.6.3 接口类型
- 按数据传送方式分类
-
- 并行接口
- 串行接口
- 按功能选择的灵活性分类
-
- 可编程接口
- 不可编程接口
- 按通用性分类
-
- 通用接口
- 专用接口
- 按数据传送的控制方式分类
-
- 中断接口
- DMA接口
5.7 程序中断详解
5.7.1 中断的概念
中断是指CPU在执行程序过程中发生意常事件或者特殊事件,CPU要中断当前程序的处理或者当前程序的执行,转而去处理这个特殊事件或者异常事件。处理结束后要返回到被中断的程序的程序断点,继续去执行原来的程序

省略号代表执行正常程序,在K阶段收到中断请求,如果能处理这个请求就响应它,同时停止当前执行的程序,处理中断请求后,在K+1阶段重新执行刚才被中断的程序
5.7.2 I/O中断的产生
一个东西产生肯定会有原因或者叫做源头
首先了解什么是中断源?
在主机的外部、主机的内部;CPU的外部、CPU的内部能够引发CPU发生中断的因素,我们都把它叫做中断源
以打印机为例:

5.7.3 程序中断方式的接口电路
1. 中断请求触发器和中断屏蔽触发器
一个外部设备向CPU发出中断请求,会有一个中断请求标志,所以需要中断触发器 ;
这个中断请求标志能否变成中断请求信号还要看该标志是否会被屏蔽掉,所以我们还需要一个中断屏蔽触发器。因为有时候CPU正在执行的程序或者正在执行的中断程序的重要性,要比这个设备提出的中断请求的重要性要高,那么这个中断标志会被中断屏蔽器屏蔽掉,不让它向CPU发出中断信号

D触发器准备好数据时Q端为1,MASK的Q非端为1,即Q端为0(中断标志没有被屏蔽),两者经过与门为1的话进入INTR,发出中断请求信号
2. 排队器
- 排队
-
- 硬件 在CPU内或在接口电路中(链式排队器)
- 软件 详见第8章
硬件排队器

假设现在INTR2为高电平1,其他都为低电平0
经过与非门后,只有INTP1和INTP2为高电平,优先级高
那我们怎么让它只有INTP2为高电平呢
在上面再加一个与非门和非门

这样就只有INTP2为高电平,处于优先状态
3. 中断向量地址形成部件
经过排队器后,确认响应哪一个中断源,那么我们如何找到该中断源的入口地址呢
有两种方法
- 入口地址
-
- 硬件向量法 由硬件产生向量地址,再由向量地址找到入口地址
- 由软件产生 详见第8章
硬件向量法
向量地址:由中断向量地址形成部件根据排队器的输出生成,里面存放优先级高的设备地址或者是跳转指令,再根据这个设备地址找到发出中断请求的设备或者执行跳转指令

向量地址是通过系统总线传送到CPU中
例:

向量地址12H中存放的是一条跳转指令,跳转到200处,执行打印机服务程序
4. 程序中断方式接口电路的基本组成

5.7.4 I/O中断处理过程
1. CPU响应中断的条件和时间
条件
- 允许中断触发器EINT=1
- 用开中断指令将EINT置“1”
- 用关中断指令将EINT置“0”或硬件自动复位
时间
- 当D=1(随机)且MASK= 0 时
一般在每条指令执行阶段的结束前,CPU会发中断查询信号(将INTR置 “1” )
2. 处理过程
以输入为例:

5.7.5 中断服务程序流程
1. 中断服务程序的流程
- 保护现场
- 程序断点的保护 中断隐指令完成
- 寄存器内容的保护 进栈指令
- 中断服务
- 对不同的I/O设备具有不同内容的设备服务
- 恢复现场 出栈指令
- 中断返回 中断返回指令
2. 单重中断和多重中断
- 单重中断:不允许中断现行的中断服务程序
- 多重中断:允许级别更高的中断源中断现行的中断服务程序 (中断嵌套)
3. 单重中断和多重中断的服务程序流程
单重中断

多重中断

4. 主程序和中断程序抢占CPU示意图

- 宏观上CPU和I/O并行工作; I/O传送数据,CPU也传送数据
- 微观上CPU中断现行程序为I/O服务
5.8 DMA方式详解
5.8.1 DMA方式的特点

外部设备通过DMA接口直接和主存访问,不通过CPU
5.8.2 DMA与主存交换数据的三种方式
1. 停止CPU访问主存
这种方式当数据进行交换的时候,CPU就放弃了对内存的访问、以及对总线的控制权。内存访问和总线控制权全部转交给DMA接口
特点:
- 控制简单
- CPU处于不工作状态或保持状态
- 未充分发挥CPU对主存的利用率
图解:

蓝线这段部分是DMA工作,但是有很长一段时间没有访问内存,且CPU已失去对内存的访问权,从而导致未充分发挥CPU对主存的利用率
2. 周期挪用(或周期窃取)
如果DMA接口准备好了数据传输,那么DMA接口通过申请建立总线的使用权,占用一个或几个内存访问周期完成数据的传输。在数据传输的间隔或者数据的准备阶段,DMA接口放弃对内存的使用权、放弃对内存的占用
DMA访问主存有三种可能
- CPU此时不访存 这时候DMA接口可以访问内存
- CPU正在访存 这时候DMA接口不能访问内存,不能抢占总线
- CPU和DMA同时请求访存 这时候CPU将总线控制权让给DMA,因为DAM上连接的都是高速设备,如果不响应可能会造成数据丢失
图解:

3. DMA与CPU交替访问
把工作周期分为 2 个周期

图解:

每个工作周期分为 2 个周期,一个供DMA使用,一个供CPU使用
不需要申请建立和归还总线的使用权
5.8.3 DMA接口的功能和组成
1. 功能
- 向CPU申请DMA传送
- 处理总线控制权的转变
- 管理系统总线、控制数据传送
- 确定数据传送的首地址和长度
-
- 修正传送过程中数据地址和长度
- DMA传送结束,给出操作完成信号
2. 组成
假设以单总线结构为例:

- AR:Address Register
- WC:Word Count (不是厕所!)
- DAR:Device Adress Register
- BR:Buffer Register
- DREQ:Device Request
- DACK:Device Acknowledgment
5.8.4 DMA工作过程
- 预处理
- 数据传送
- 后处理
1.预处理:
通过几条输入输出指令预置如下信息
-
-
-
- 通知DMA控制逻辑传送方向(入/出)
- 设备地址—>DMA的DAR
- 主存地址—>DMA的AR
- 传送字数—>DMA的WC
-
-
2. 数据传送

数据输入:

数据输出:

3. 后处理
后处理的目的:
- 校验送入主存的数是否正确
- 是否继续使用DMA
- 测试传送过程是否正确,错则转诊断程序
完整过程:

5.8.5 DMA接口与系统的连接方式
1. 具有公共请求线的DMA请求

2. 独立的DMA请求

5.8.9 DMA接口的类型
1. 选择型
在物理上连接多个设备
在逻辑上只允许连接一个设备

2. 多路型
在物理上连接多个设备
在逻辑上允许连接多个设备同时工作
但在数据传输的过程中,只允许有一个设备和内存进行传输,但是在数据准备阶段允许有多个设备同时进行数据准备
5.9 DMA方式和程序中断方式比较

本文完
敬爱与明天🌹