输入输出系统(二) - 概述(二)

前面已经提到过, 概述部分一共会介绍四个问题, 前面已经介绍了三个问题了:详细请参见。 现在来讲后续这个:

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

一共包括五大方式, 这里主要介绍三种方式:

1, 程序查询方式

CPU与外设采用串行连接的。 流程图如下:

输入输出系统(二) - 概述(二)

输入输出系统(二) - 概述(二)

注意上图中的红框框部分, CPU发出读指令之后, 由于CPU的速度比I/O的速度快很多, 并且只有当I/O中数据准备好了之后才能进行读操作, 所以CPU就必须等待I/O先把数据准备好; 才能进行后续的工作, 这样CPU的效率无形之中就被降低了。


2, 程序中断方式

这种方式实现了CPU与外设的部分并行连接, 在I/O设备进行数据准备时, CPU可以执行其他的事情; 一定程度上解放了CPU。

这种方式将I/O设备工作分为两部分, 一部分是:I/O准备; 一部分是:与主机交换信息。 在I/O准备这个阶段不需要CPU的参与, 发出指令后I/O进行数据准备, 当准备完成之后, 产生中断 让CPU暂停目前程序的处理转而帮助I/O设备与主机的信息交换。

输入输出系统(二) - 概述(二)

启动I/O设备之后继续执行当前程序; 假设在K位置数据准备好了。CPU开始执行中断服务程序, 完成之后, 从K+1位置开始执行现行程序。 这点对于学过单片机的各位应该很好理解。和程序查询方式相比, 这种方式CPU没有出现等待时间。

流程图如下:

输入输出系统(二) - 概述(二)

3, DMA方式

前面两种方式数据传输依然需要CPU的参与, 即如下图:

输入输出系统(二) - 概述(二)

DMA方式可以将CPU从数据输入输出中进一步解放出来, 使外部设备和内存之间建立直接的联系。由DMA控制器控制外部设备与内存直接交换信息。有一条数据通路。 这种方式称为周期挪用(窃取)。

为什么会叫这个名字?

内存与I/O交换数据就必须要有数据总线和地址总线。 DMA控制器控制I/O和内存之间的信息传输就需要暂时控制总线, 这个时间为一个存取周期, 周期挪用(窃取)表示的是挪用(窃取)总线的控制权。

输入输出系统(二) - 概述(二)

如上图所示, CPU一直在执行现行程序, 当碰到I/O需要传输数据时, 发出指令启动I/O, 然后继续执行现行程序, 当I/O

设备数据准备完成之后由DMA发出控制总线的请求, 完成数据的传输。 在这一个存取周期中, CPU不能忘内存里面存取数据,

但这并不意味着此时CPU是处于等待状态的, 现代计算机中CPU可以一次从内存中取许多条指令(预取), 在这个存取周期里

面完全可以执行这些指令。

这种方式比程序中断方式更加提升了CPU的效率(不需要执行相关的指令来保护现场, 让CPU执行完中断服务程序之后继

续执行现行程序, 这都需要指令的参与)。

三种方式的比较:

输入输出系统(二) - 概述(二)


后面还有通道方式和I/O处理机方式。