计算机组成原理之输入输出系统


英文缩写的中文含义

  • DMA:内存直接访问
  • DBR:接口内的数据缓冲寄存器
  • INTR:接口内的中断请求触发器
  • MASK:接口内的屏蔽触发器
  • SEL:Select,设备选择电路发出的选择信号
  • EINT:允许中断触发器
  • AR:地址寄存器
  • WC:字计数器
  • DAR:设备地址寄存器
  • HRQ:DMA控制逻辑向CPU发出的总线使用请求信号
  • HLDA:CPU给DMA控制逻辑的应答信号
  • DACK:DMA控制逻辑对设备给出的应答信号
  • DREQ:外部设备向DMA控制逻辑发出的请求信号
  • BR:数据缓冲器

输入输出系统的发展概况

1. 早期阶段

  • 早期I/O设备种类较少,I/O设备与主机交换信息都必须通过CPU;
  • 分散连接
  • CPU与I/O串行工作,使用程序查询方式传送信息
graph LR
A[存储器]-->CPU
CPU-->B1[I/O1]
B1-->CPU
CPU-->A
CPU-->B2[I/O2]
B2-->CPU
CPU-->B3[....]
B3-->CPU
CPU-->B4[I/On]
B4-->CPU

2. 接口模块和DMA阶段

  • IO设备通过接口模块与主机连接,采用总线结构(接口见后面)
  • CPU与IO设备并行工作,有中断方式和DMA方式
  • 缺点:增加了硬件成本,使控制变得十分复杂;对众多的DMA进行管理,会占用CPU的工作时间,直接影响CPU的整体工作效率。

3. 具有通道结构的阶段

  • 适用于大、中型计算机系统
  • 通道负责管理IO设备以及实现主存与IO设备之间交换信息,能够独立的执行通道指令所编写的输入输出程序
  • 通道受CPU的IO指令启动、停止或改变其工作状态
  • CPU不直接参与管理IO设备,故CPU的资源利用率更高

4. 具有I/O处理机的阶段

  • IO处理机独立于主机工作,既可完成IO通道对IO的控制,又可以完成码制变换、格式处理、数据块检错、纠错等操作
  • 与CPU工作的并行性更高

从早期到I/O处理机时期,外部设备的独立性越来越高。

输入输出系统的组成

组成:硬件和软件两部分。

1. 软件

1.1 主要任务

  • 将用户编制的程序或数据输入至主机
  • 将运算结果输送给用户
  • 实现I/O系统与主机工作的协调

1.2 I/O指令

  • 操作码:标志位
  • 命令码:
    • 将数据从IO输入主机
    • 将数据从主机输出IO
    • 状态测试
    • 形成某些操作命令
  • 设备码:地址编码
  • IO指令是CPU指令的一部分,用来控制外部设备,由CPU译码后执行

1.3 通道指令

  • 是对具有通道的IO系统专门设置的指令
  • 一般用于指明参与传送的数据组的首地址、传送字数、操作命令等
  • 通道指令是通道用于执行IO操作的指令,可以存放在主存,由通道取出并执行
  • 通道程序由通道指令组成,完成某种外围设备与主存传送信息的操作

2. 硬件

  • 设备<——>I/O接口
  • 设备<——>设备控制器<——>通道

I/O设备与主机的联系方式

1. I/O编址方式

通常将IO设备码视为地址码,对IO地址码有两种编址方式

  • 统一编址:将IO地址看作是存储器地址的一部分
  • 不统一编址(独立编址):有专门的IO指令

2. 设备寻址

每台设备都赋予一个设备号,因此可以用I/O指令的设备码字段直接指出该设备的设备号。通过接口电路中的设备选择电路,便可选中要交换信息的设备。

3. 传送方式

  • 串行传送:同一瞬间只传送一位信息
  • 并行传送:同一瞬间传送n位信息

4. 联络方式

IO设备与主机之间必须了解彼此当时所处的状态。

4.1 立即响应方式

  • 只要CPU的I/O指令一到,I/O设备就立即响应
  • 无需特殊联络信号
  • 适用于工作速度缓慢的I/O设备

4.2 异步工作采用应答信号联络

  • 在交换信息前,IO与CPU各自完成自身的任务,一旦出现联络信号,彼此才准备交换信息
  • 适用于IO设备与主机工作速度不匹配的情况

4.3 同步工作采用同步时标联络

要求I/O设备与CPU的工作速度完全同步,这种联络互相之间还得配有专用电路,用以产生同步时标来控制同步工作

5. I/O与主机的连接方式

5.1 辐射式连接

graph LR;
A[主机]-->B[外设1]
B-->A
A-->C[外设2]
C-->A
A-->D[外设3]
D-->A
  • 每台设备都配有一套控制线路和一组信号线
  • 缺点:不便于增删设备

5.2 总线连接

  • 便于增删设备

I/O接口

I/O接口通常是指主机与外部设备之间设置的一个硬件电路及其相应的软件控制。

它是一组电子电路,由若干专用寄存器和相应的控制逻辑电路构成,是CPU和I/O设备之间交换信息的媒介和桥梁

1. 为什么要设置接口

  • 实现设备的选择:设备选择电路
  • 实现数据缓冲达到速度匹配:DBR
  • 实现数据串-并格式转换
  • 实现电平控制
  • 传送控制命令:命令寄存器、命令译码器
  • 反映设备的状态(“忙”、“就绪”、“中断请求”):设备状态标记

2. 接口的功能和组成

功能 组成
选址(确认是否为参与的设备) 设备选择电路
传送命令(传送主机命令) 命令寄存器、命令译码器
传送数据(核心) 数据缓冲寄存器DBR
反应设备状态 设备状态标记

此外,接口的组成还有:

  • 完成触发器D(D=1表示工作完成done)
  • 工作触发器B(B=1表示正在忙busy)
  • 中断请求触发器INTR
  • 屏蔽触发器MASK

接口$\neq$端口:

  • 接口:指主机与外部设备之间设置的一个硬件电路及其相应的软件控制。
  • 端口:指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的就是数据端口、控制端口和状态端口。
  • 接口 = 端口 + 相应的控制逻辑

I/O设备与主机信息传送的控制方式

1. 程序查询方式

程序查询方式是由CPU通过程序不断查询IO设备是否已做好准备,从而控制IO与主机交换信息。

为了正确完成这种查询,通常要执行如下三条指令:

  • 测试指令:查询设备是否准备就绪
  • 传送指令:在设备准备就绪时,执行传送指令
  • 转移指令:若设备未准备就绪,执行转移指令,转职测试指令,继续测试设备状态

1.1 程序查询流程

1.1.1 单个设备查询流程

1.1.2 多个设备查询流程

按照优先级一一查询,哪个设备准备好了就处理哪个设备。

1.1.3 程序流程

  • 这种方式传送数据要占用CPU中的寄存器,故首先需要将寄存器中的原内容保护起来
  • 传送的往往是一批数据,因此需要设置计数值
  • 设置于传送数据在内存缓冲器中的首地址

这种方式下,CPU和IO串行工作,在检查IO状态时,CPU处于“踏步等待”。

1.2 程序查询方式的接口电路

以输入为例:

  1. CPU发出启动命令,若设备选择电路发出的SEL为1(选中),则D触发器置0,B触发器置1
  2. B为1,在忙,启动设备
  3. 设备向DBR中输入数据
  4. 设备输送完数据后,D置1,B置0
  5. 告诉CPU设备准备就绪
  6. DBR中的数据通过数据线传输到内存中

2. 程序中断方式

2.1 中断的产生

CPU与打印机并行工作,串行传送数据。

2.2 程序中断方式的接口电路

2.2.1 中断请求触发器(INTR)和中断屏蔽触发器(MASK)

  • INTR=1:有请求
  • MASK=1:被屏蔽
  • 在IO设备准备工作已完成(D=1)且没有被屏蔽(MASK=0)的情况下,INTR的D端被置1,在下一个CPU查询信号到来时,INTR输出1;否则输出0

2.2.2 排队器

排队器分为硬件和软件两部分,硬件在CPU内或在接口电路中(链式排队器),软件之后会学。

被选中的输出INTPi为1,没有被选中的都为0.

2.2.3 中断向量地址形成部件

CPU响应了IO中断后,要转去执行该设备的中断服务程序,而每个中断服务程序都有不同的入口地址,CPU必须要找到这个入口地址。方法有两种:由软件产生(后面会讲)和由硬件产生(由硬件产生==向量地址==,再由向量地址找到入口地址)。

  • 排队器输出的数据(INTP1到INTPn组成)经过中断向量地址形成部件(其实就是设备编码器),生成一个向量地址,向量地址中存储的是一个跳转指令,会跳转到中断服务程序的入口地址。
  • 向量地址实际上就是中断服务程序入口地址的地址

中断向量地址和入口地址的区别与联系:

区别:向量地址是硬件电路(向量编码器)产生的中断源的内存中断向量表表项地址编号;中断入口地址是中断服务程序首址。

联系:中断向量地址可以理解为中断服务程序入口地址的地址,通过它访存可获得中断服务程序入口地址。

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

2.3. I/O中断处理过程

2.3.1CPU响应中断请求的条件和时间

  • 条件
    • CPU中的允许中断触发器EINT=1
    • 开中断指令将EINT置1
    • 关中断指令将EINT置0
  • 时间
    • 当D=1(随机)且MASK=0时
    • 在每条指令执行阶段结束前
    • CPU发中断查询信号(将EINT置1)

CPU相应IO中断请求的条件和时间是:当中断允许状态为1(EINT=1),且至少有一个中断请求被查到,则在一条指令执行完时,响应中断。

2.3.2 I/O中断处理简单过程

  1. 中断请求
  2. 中断判优:排队器
  3. 中断响应
  4. 中断服务
  5. 中断返回

2.4 中断服务程序的流程

2.4.1 中断服务程序流程

  1. 保护现场:
    • 程序断点的保护:中断隐指令
    • 寄存器内容的保护:进栈指令
  2. 中断服务
  3. 恢复现场:出栈指令,将保存在存储器(或堆栈)中的信息送回到原来的寄存器中
  4. 中断返回

2.4.2 单重中断

  • 不允许中断现行的中断服务程序

2.4.3 多重中断

  • 允许级别更高的中断源中断现行的中断服务程序

  • PC的保护和更新是由硬件自动完成的
  • CPU响应中断最先完成的步骤为关中断

宏观上,CPU和IO并行工作

微观上,CPU中断现行程序为IO服务(串行)

3. DMA方式

3.1 DMA与主存交换数据的三种方法

DMA接口和CPU共享主存,这就有可能会出现两者争用主存的冲突,为了有效地分时使用主存,DMA与主存交换数据时通常可采用如下三种方法:

3.1.1 停止CPU访问主存

  • DMA接口向CPU发送停止信号,要求CPU放弃地址线、数据线和有关控制线的使用权,CPU处于不工作或保持状态
  • 优点:控制简单
  • 缺点:未充分发挥CPU对主存的利用率

3.1.2 周期挪用(周期窃取)

  • 每次IO设备发出DMA请求时,IO设备便挪用或窃取总线占用权一个或几个访存周期,而DMA不请求时,CPU仍继续访问主存
  • DMA优先权高于CPU,同时访存时DMA优先
  • 既实现了IO传送,又发挥了主存与CPU的效率

3.1.3 DMA与CPU交替访问

  • 适用于CPU的工作周期比主存存取周期长的情况,不需要申请建立和归还总线的使用权
  • 优点:CPU既不停止主程序的运行也不进入等待状态,“透明的DMA”
  • 缺点:硬件逻辑复杂,实用性不强

3.2 DMA接口的功能和组成

3.2.1 DMA接口功能

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

3.2.2 DMA接口基本组成

  • AR:存放主存地址
  • DAR:存放设备地址,或磁盘相关
  • WC:字计数器,记录传送了多少个字
  • BR:数据缓冲寄存器
  • DMA控制逻辑:控制接口内部协调工作,发出各种信号
  • 中断机构:用于DMA传送完以后,对后续工作的处理

3.2.3 DMA的工作过程

DMA的传送过程:
  • ==预处理==:通过几条输入输出指令预置如下信息
    • 通知DMA控制逻辑传送方向(输入/输出)
    • 设备地址:DMA的DAR
    • 主存地址:DMA的AR
    • 传送字数:DMA的WC
  • ==数据传送==:继续执行主程序,同时完成一批数据传送
  • ==后处理==:由中断服务程序完成,做DMA结束处理
    • 检验送入主存的数据是否正确
    • 决定是否继续用DMA传送其他数据块。若传送,对DMA接口初始化;否则停止外设
    • 测试在传送过程中是否出现错误,若出错,则转错误诊断及处理错误程序

数据传送过程(输入):

数据传送过程(输出):

DMA接口与系统的连接方式
  1. 具有公共请求线的DMA请求
  2. 独立的DMA请求
    DMA方式与程序中断方式的比较
中断方式 DMA方式
数据传送 程序(中断服务程序) 硬件
响应时间 指令执行结束 存取周期结束
处理异常情况 不能
中断请求 传送数据 后处理
优先级

3.3 DMA接口的类型

3.3.1 选择型

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

3.3.2 多路型

在物理上连接多个设备,在逻辑上允许连接多个设备同时工作

3.3.3 多路型DMA接口的工作原理


文章作者: 恰醋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 恰醋 !
评论
 上一篇
穿越沙漠问题求解 穿越沙漠问题求解
问题描述一辆吉普车来到1000km宽的沙漠边沿。吉普车的耗油量为1L/km,最大装油量为500L。显然,吉普车必须用自身油箱中的油在沙漠中设几个临时加油点,否则是通不过沙漠的。假设在沙漠边沿有充足的汽油可供使用,那么吉普车应在哪些地方、建多
2020-04-13
下一篇 
  目录