I/O设备的发展
第一阶段
早期计算机采用 分散连接(指计算机各个部件间相连的方式) 的结构,如下图所示。每一个部件之间都需要连接。
以下是分散连接的抽象图
缺点:
- 由于一个I/O设备需要一个专用的逻辑控制电路才能连接使用,所以线路会很多很繁琐。
- 该结构下对I/O设备的读写基本都是串行的,会严重影响CPU的运行速度
- 由于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设备取出数据到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接口发送
READY
信号 给 I/O设备 - I/O设备收到信号后,从I/O接口中取出数据,并回应一个
Strobe
信号给I/O接口
- 在写过程中,I/O设备发送数据到I/O接口中,并发送信号
Strobe
- 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控制主要通过以下三个手段实现:
- 主存和I/O之间架一条通路
- 不中断现行程序
- 周期挪用