I/O控制方式输入输出管理[1]的基本功就是完成数据交换。随着计算机技术的进步,I/O控制方式也在不断发展,目前常用的I/O方式主要有:程序I/O方式,中断控制方式。DMA方式,I/O通道方式。(1) 程序I/O方式程序I/O方式:处理机向控制器发出I/O指令,启动设备交换数据时,同时将状态字寄存器[2]中的忙/闲标志 busy置为1,不断地循环测试[3]此标志,直至标志位变为0。此时处理机将数据从寄存器取出,执行后续操作,这才完成一个字符的交换。程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据准备的I/O的循环测试中,对CPU造成的极大浪费。在该方式 中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输入操作。(2) 中断驱动方式在此方式中,某进程启动I/O设备时,CPU发出I/O指令,然后立即返回执行原来的任务,设备控制器[4]按照I/O命令去控制指定设备,此时CPU与I/O并行操作[5]。数据准备好后,由控制器发送中断信号,通知 CPU进行数据处理[6]。在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理[7]。可见,这样可使CPU和I/O设备都处于忙碌状 态,从而提高了整个系统的资源利用率及吞吐量,也提高了CPU的利用率。向 I/(空控 制器 cup arrow 10-|||-发读命令-|||-读 I/(空) 制器-|||-就 的状态 arrow CPO-|||-检查-|||-状态? → 出错-|||-就绪-|||-从 制器-|||-中读入字 arrow CPU-|||-向存储器 - →(有存)-|||-中写字-|||-未完 传送-|||-完成?-|||-完成-|||-下一条指令-|||-向I/(空控 制器 cup -10-|||-发读命令-|||-CPL数其它事-|||-1-|||-读 I/C控制 器 ---中断-|||-的状态-|||-arrow CPO-|||-检查-|||-状态? 出错-|||-就绪-|||-从I/C控制-|||-器中读字 arrow CPO-|||-向内存-|||-中写字 CPU内存-|||-未完 传送-|||-完成?-|||-完成-|||-下一条指令-|||-(b)中断驱动方式-|||-(a)程序 I/Oh 式 (b)中断驱动方式图5-1 程序I/O方式与中段驱动方式(3) DMA方式虽然中断方式比程序I/O方式效率提高不少,但是,还是需要经过CPU的寄存器,影响了CPU的运行。 DMA方式在I/O设备与内存之间构建数据通道,这进一步的较少了对CPU的依赖,提高了CPU的运行效率。该方式的特点是:①数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;②所传送的数据是从设备直接送入内存的,或者相反;③仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。DMA控制器如图所示:向 I/(空控 制器 cup arrow 10-|||-发读命令-|||-读 I/(空) 制器-|||-就 的状态 arrow CPO-|||-检查-|||-状态? → 出错-|||-就绪-|||-从 制器-|||-中读入字 arrow CPU-|||-向存储器 - →(有存)-|||-中写字-|||-未完 传送-|||-完成?-|||-完成-|||-下一条指令-|||-向I/(空控 制器 cup -10-|||-发读命令-|||-CPL数其它事-|||-1-|||-读 I/C控制 器 ---中断-|||-的状态-|||-arrow CPO-|||-检查-|||-状态? 出错-|||-就绪-|||-从I/C控制-|||-器中读字 arrow CPO-|||-向内存-|||-中写字 CPU内存-|||-未完 传送-|||-完成?-|||-完成-|||-下一条指令-|||-(b)中断驱动方式-|||-(a)程序 I/Oh 式 (b)中断驱动方式图5-2 DMA控制器为了实现在主机与外设之间成块数据的直接交换,必须在DMA控制器中设置如下四类寄存器:①命令/状态寄存器CR。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态。②内存地址寄存器MAR。存放把数据从设备传送到内存的起始目标地址或者存放由内存到设备的内存源地址。③数据寄存器DR。用于暂存从设备到内存,或从内存到设备的数据。④数据计数器DC。存放本次CPU要读或写的字(节)数。DMA方式的工作流程如下:CPU接收到I/O设备的DMA请求时,CPU设置MAR与DR的初值,并且启动DMA控制器,然后继续其他工作。CPU就把I/O控制操作委托给DMA控制器,由该控制器负责处理。 DMA控制器通过挪用存储周等方式直接与存储器交互,传送整个数据块,每次传送一个字,DC减一,这个过程不需要CPU参与。当DC=0时,DMA控制器发送一个中断信号给处理器。因此只有在传送开始和结束时才需要CPU的参与。向 I/(空控 制器 cup arrow 10-|||-发读命令-|||-读 I/(空) 制器-|||-就 的状态 arrow CPO-|||-检查-|||-状态? → 出错-|||-就绪-|||-从 制器-|||-中读入字 arrow CPU-|||-向存储器 - →(有存)-|||-中写字-|||-未完 传送-|||-完成?-|||-完成-|||-下一条指令-|||-向I/(空控 制器 cup -10-|||-发读命令-|||-CPL数其它事-|||-1-|||-读 I/C控制 器 ---中断-|||-的状态-|||-arrow CPO-|||-检查-|||-状态? 出错-|||-就绪-|||-从I/C控制-|||-器中读字 arrow CPO-|||-向内存-|||-中写字 CPU内存-|||-未完 传送-|||-完成?-|||-完成-|||-下一条指令-|||-(b)中断驱动方式-|||-(a)程序 I/Oh 式 (b)中断驱动方式图5-3 DMA方式工作过程DMA控制方式与中断驱动方式的主要区别是中断驱动方式在每个数据需要传输时都中断CPU,而DMA控制方式则是在所要求传送的一批数据全部传送结束时才中断CPU。此外,中断驱动方式数据传送是在中断处理时由CPU控制完成的,而DMA控制方式则是在DMA控制器的控制下完成的。(4) 通道控制方式I/O通道方式是DMA方式的发展,它可进一步减少I/O操作对CPU的干扰,在有I/O通道的计算机中,进行I/O时,CPU只需要启动通道即可。通道方式实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向 I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令 后,通过执行通道程序便可完成CPU指定的I/O任务。I/O通道与一般处理机的区别是:通道指令的类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中的,也就是说通道与CPU共享内存。通道方式与DMA方式的区别是:DMA方式还需要CPU参与设定传输参数入内存位置以及数据个数,通道方式中不需要CPU参与,整个过程有I/O通道控制。另外,每个DMA控制器只能控制一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。【例】如果I/O设备与存储设备间的数据交换不经过CPU来完成,则这种数据交换方式是( )。A. 程序查询方式 B. 中断方式 C. DMA方式 D. 无条件存取方式
I/O控制方式
输入输出管理[1]的基本功就是完成数据交换。随着计算机技术的进步,I/O控制方式也在不断发展,目前常用的I/O方式主要有:程序I/O方式,中断控制方式。DMA方式,I/O通道方式。
(1) 程序I/O方式
程序I/O方式:处理机向控制器发出I/O指令,启动设备交换数据时,同时将状态字寄存器[2]中的忙/闲标志 busy置为1,不断地循环测试[3]此标志,直至标志位变为0。此时处理机将数据从寄存器取出,执行后续操作,这才完成一个字符的交换。程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据准备的I/O的循环测试中,对CPU造成的极大浪费。在该方式 中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输入操作。
(2) 中断驱动方式
在此方式中,某进程启动I/O设备时,CPU发出I/O指令,然后立即返回执行原来的任务,设备控制器[4]按照I/O命令去控制指定设备,此时CPU与I/O并行操作[5]。数据准备好后,由控制器发送中断信号,通知 CPU进行数据处理[6]。
在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理[7]。可见,这样可使CPU和I/O设备都处于忙碌状 态,从而提高了整个系统的资源利用率及吞吐量,也提高了CPU的利用率。

图5-1 程序I/O方式与中段驱动方式
(3) DMA方式
虽然中断方式比程序I/O方式效率提高不少,但是,还是需要经过CPU的寄存器,影响了CPU的运行。 DMA方式在I/O设备与内存之间构建数据通道,这进一步的较少了对CPU的依赖,提高了CPU的运行效率。该方式的特点是:
①数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;
②所传送的数据是从设备直接送入内存的,或者相反;
③仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。DMA控制器如图所示:

图5-2 DMA控制器
为了实现在主机与外设之间成块数据的直接交换,必须在DMA控制器中设置如下四类寄存器:
①命令/状态寄存器CR。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态。
②内存地址寄存器MAR。存放把数据从设备传送到内存的起始目标地址或者存放由内存到设备的内存源地址。
③数据寄存器DR。用于暂存从设备到内存,或从内存到设备的数据。
④数据计数器DC。存放本次CPU要读或写的字(节)数。
DMA方式的工作流程如下:CPU接收到I/O设备的DMA请求时,CPU设置MAR与DR的初值,并且启动DMA控制器,然后继续其他工作。CPU就把I/O控制操作委托给DMA控制器,由该控制器负责处理。 DMA控制器通过挪用存储周等方式直接与存储器交互,传送整个数据块,每次传送一个字,DC减一,
这个过程不需要CPU参与。当DC=0时,DMA控制器发送一个中断信号给处理器。因此只有在传送开始和结束时才需要CPU的参与。

图5-3 DMA方式工作过程
DMA控制方式与中断驱动方式的主要区别是中断驱动方式在每个数据需要传输时都中断CPU,而DMA控制方式则是在所要求传送的一批数据全部传送结束时才中断CPU。此外,中断驱动方式数据传送是在中断处理时由CPU控制完成的,而DMA控制方式则是在DMA控制器的控制下完成的。
(4) 通道控制方式
I/O通道方式是DMA方式的发展,它可进一步减少I/O操作对CPU的干扰,在有I/O通道的计算机中,进行I/O时,CPU只需要启动通道即可。通道方式实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向 I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令 后,通过执行通道程序便可完成CPU指定的I/O任务。
I/O通道与一般处理机的区别是:通道指令的类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中的,也就是说通道与CPU共享内存。
通道方式与DMA方式的区别是:DMA方式还需要CPU参与设定传输参数入内存位置以及数据个数,通道方式中不需要CPU参与,整个过程有I/O通道控制。另外,每个DMA控制器只能控制一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。
【例】如果I/O设备与存储设备间的数据交换不经过CPU来完成,则这种数据交换方式是( )。
A. 程序查询方式B. 中断方式
C. DMA方式
D. 无条件存取方式
题目解答
答案
C
解析
本题主要考察I/O控制方式中不同方式的数据交换路径,重点区分是否经过CPU。
题目分析
题目问:“如果I/O设备与存储设备间的数据交换不经过CPU来完成,则这种数据交换方式是( )”。关键信息是“数据交换不经过CPU”。
各选项分析
- A. 程序查询方式:CPU需不断测试I/O设备状态,数据交换由CPU直接控制,经过CPU,排除。
- B. 中断方式:每个数据传输完成后中断CPU,数据仍需CPU从设备读入寄存器再写入内存,经过CPU,排除。
- C. DMA方式:I/O设备与内存之间直接构建数据通道,数据块直接在设备和内存间传输,仅在传输开始和结束时需CPU干预,传输过程不经过CPU,符合题意。
- D. 无条件存取方式:属于程序I/O的一种,CPU直接控制数据交换,经过CPU,排除。