输入输出系统之概述

I/O设备的发展

第一阶段

早期计算机采用 分散连接(指计算机各个部件间相连的方式) 的结构,如下图所示。每一个部件之间都需要连接。

分散连接

以下是分散连接的抽象图

CPU和IO设备的联系-第一阶段

缺点:

  1. 由于一个I/O设备需要一个专用的逻辑控制电路才能连接使用,所以线路会很多很繁琐。
  2. 该结构下对I/O设备的读写基本都是串行的,会严重影响CPU的运行速度
  3. 由于I/O设备和CPU之间的耦合性过于紧密,所以对于设备的增减过于麻烦

第二阶段

这个阶段计算机采用 总线连接的结构,(这里关注点在于I/O设备,所以拿单总线结构距离)。如下图所示

单总线连接

这个阶段I/O设备通过 接口 挂在在总线上与CPU相连。I/O接口通常包含 数据通路控制通路 两个部分:

  • 数据通路:用于缓冲数据,可以进行串-并转换,匹配I/O设备和CPU的速度。
  • 控制通路:用于接收I/O指令

这个阶段相比第一阶段,补足了缺点,并让CPU和I/O设备并发处理的时间更多,但是还不能做到完全的并发处理

第三阶段

这个阶段更适用于I/O设备数量繁多的大型计算机,即在CPU和I/O接口之间又加入了 通道,通道用于负责管理整个I/O过程。当通道接收到CPU的指令后,先从主存中取出通道程序,然后单独执行,直至I/O设备输入或输出完毕,再通知CPU完成。这个过程不需要CPU参与,就大大提高了CPU和I/O设备的并行能力。

第四阶段

采用I/O处理机,I/O处理机又称 外围处理机,其相当于一个小型CPU,基本是独立于CPU进行工作的

输入输出系统的组成

输入输出系统主要包含两个部分:I/O软件、I/O硬件

I/O软件

I/O指令

I/O指令时CPU指令集的一部分,如下图所示
I/O指令

  • 操作码:标明该指令是 I/O指令还是其他指令
  • 命令码: 标明该指令具体做什么事,比如从I/O设备取出数据到CPU里、或者将数据送到I/O设备里
  • 设备码:标明要处理的目标对象

通道指令

通道指令不是CPU指令集的一部分,通道指令是为拥有通道的I/O系统专门设置的指令,这类指令结构通常如下图所示

通道指令

该指令通常存放再主存中,当需要运行时,由通道从主存中取出并执行。通道程序即由通道指令组成,它完成了某种外围设备与主存之间传送信息的操作。

区别

通道是通道自身的指令,用来执行I/O操作;
I/O指令是CPU指令系统的一部分,是CPU用来控制输入输出的操作命令。
在有通道结构的计算机中,I/O指令不实现I/O数据传输,主要是用于启动、暂停I/O设备;或者查询通道和I/O设备的状态及控制通道所做的其他操作。

一旦CPU启动了I/O设备后,就由通道接管CPU对I/O设备的管理。

I/O硬件

通常包括接口模块和I/O设备两大部分

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

这个部分主要解决三个部分:

  • 设备地址
  • 设备选择
  • 传送方式
  • CPU和设备间的传输方式

设备地址

  • 统一编址:
    将主存划分一部分地址出来作为设备地址,比如在64K地址的存储空间中,划出8K地址作为I/O设备的地址,只要访问的地址在这8K范围内,就是对I/O设备的访问。

  • 单独编址
    单独设置一个存储空间作为I/O设备的地址,使用专用的指令来存储。

设备选择

用设备选择电路识别是否被选中

传送方式

  • 串行
  • 并行

联络方式

立即响应

信号一到,立即响应

异步工作 + 应答信号

I/O设备读流程

  1. 在读过程中,I/O接口发送 READY 信号 给 I/O设备
  2. I/O设备收到信号后,从I/O接口中取出数据,并回应一个 Strobe 信号给I/O接口

I/O设备写流程

  1. 在写过程中,I/O设备发送数据到I/O接口中,并发送信号Strobe
  2. I/O接口收到信号后,通知CPU中断处理,然后返回READY信号给I/O设备

同步工作采用同步时钟

I/O设备的控制方式

程序查询控制

程序查询方式

该方式主要在于CPU读I/O设备状态,然后检查状态是否就绪,如果没有就绪就循环查询。该查询方式会消耗很多时间在状态检查上(一直检查),同时还会花费部分时间在数据交互上。

程序中断控制

程序中断

当CPU执行原程序时,如果遇到了I/O指令启动了I/O设备后,等待I/O接口数据缓冲区满了后,再通知CPU中断,执行中断服务程序

程序中断流程图

这个控制方式相比中断方式,CPU不需要长时间轮询状态,只需要启动I/O设备后,就能转头去做其他事情。直到I/O设备发回中断请求,CPU停止做事情,转去执行中断服务程序(交换信息)。

DMA控制

由于程序中断在数据交换过程仍然要CPU参与,会在一定程度上影响CPU速度。

DMA控制主要通过以下三个手段实现:

  1. 主存和I/O之间架一条通路
  2. 不中断现行程序
  3. 周期挪用