外部设备在中央处理机的控制之下完成信息的传输。在信息传输中,中央处理机做多少工作、外部设备做多少工作呢?这个问题将决定CPU和I/O设备的并行能力,同时它也取决于软、硬技术的基础。
CPU一般通过I/O控制器与物理设备打交道。按照I/O控制器智能化程度的高低,可以将I/O设备的控制方式分为四类:循环测试I/O方式、I/O中断方式、DMA方式和通道方式。
1.循环测试I/O方式
这种方式只在早期计算机中使用。在该方式中I/O控制器是操作系统软件和硬件设备之间的接口,它接收CPU的命令,并控制I/O设备进行实际的操作。
在循环测试I/O方式中有数据缓冲寄存器和控制寄存器。数据缓冲寄存器是CPU与I/O设备之间进行数据传送的缓冲区。当输入设备要输入数据时,先将输入数据送入数据缓冲寄存器,然后由CPU从中取出数据;反之,当CPU要输出数据时,先把数据送入该寄存器,然后再由输出设备把其中的数据取走,进行实际的输出。
控制寄存器有几个重要的信息位:启动位、完成位等。完成位置为1表示设备完成一次操作。例如,当输入设备完成一个输入之后,即把完成位置为1。启动位是在CPU要启动I/O设备进行物理操作时,将此位置1,设备立即工作。
下面看一下循环测试I/O方式的工作过程。假如一个程序要从某一输入设备输入一个数据,那么将按如下步骤进行:
①将一个启动位为“1”的控制字写入该设备的控制状态寄存器,从而启动该设备进行输入操作;
②反复读控制寄存器的内容,并测试其中的完成位,若为0,转为步骤②,否则转为步骤③;
③把数据缓冲区中的数据读入CPU或主存单元。
上述步骤可以看出,循环测试I/O方式的工作过程非常简单,但CPU的利用率相当低。因为CPU执行指令的速度高出I/O设备几个数量级,所以在循环测试中CPU浪费了大量的时间。
2.I/O中断方式
为了提高CPU的利用率,应使CPU与I/O设备并行工作。为此,出现了I/O中断方式。这种方式要求在控制寄存器中有一位“中断允许位”。
在I/O中断方式下,数据的输入按如下步骤进行。
①要求输入数据的进程把一个启动和中断允许位为“1”的控制字写入设备控制寄存器中,从而启动该设备进行物理操作。
②上述进程因等待输入操作的完成而进入等待状态,于是进程调度程序调入另一进程运行。
③当输入完成时,输入设备通过中断申请线向CPU发中断请求信号,通过中断进入,CPU转向该设备的中断处理程序。
④中断处理程序首先保护被中断程序的现场,然后把输入缓冲寄存器中的输入数据转送到某一特定单元中去,以便要求输入的进程使用。同时,还把等待输入完成的那个进程唤醒,最后中断处理程序恢复被中断程序的现场,并返回到被中断的进程继续执行。
⑤在以后某个时刻,进程调度程序将调度到要求输入的进程,该进程从约定的特定单元中取出数据做进一步处理。
与循环测试方式相比,I/O中断方式使CPU的利用率大大提高了。但缺点是由于每台设备每次输入/输出一个数据,都要求中断CPU,当系统配置的设备较多时,系统进行中断处理的次数就很多,这会使CPU的有效计算时间大大减少。为减少I/O中断处理对CPU造成的负担,又出现了通道方式和DMA方式。
3.通道方式(www.xing528.com)
在大、中型和超级小型机中,一般采用I/O通道控制I/O设备的各种操作。I/O通道是用来控制外部设备与主存之间进行成批数据传输的部件。每个通道可以连接多台外部设备并控制它们的I/O操作。通道有自己的一套简单的指令系统和执行通道程序,通道接收CPU的委托,而又独立于CPU工作。因此,可以把通道看作是一台小型的处理I/O的处理机,或称I/O处理机。
通道有三种不同的类型,即字节多路通道、选择通道和数组多路通道,如图8-2所示。字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台设备传送一个字节之后,通道硬件就转去执行另一个通道程序,控制另一台设备的数据传送。字节多路通道主要用来连接大量低速设备,如终端、串行打印机等。
图8-2 通道的类型
选择通道一次从头到尾执行一个通道程序,只有执行完一个通道程序之后再执行另一个通道程序,所以它一次只能控制一台设备进行I/O操作。由于选择通道能控制外部设备高速连续地传送一批数据,因此常用它来连接高速外部设备,如磁盘机等。
数组多路通道以分时的方式执行几个通道程序,它每执行一个通道程序的一条通道指令就转向另一通道程序。因为每条通道指令可以控制传送一组数据,所以数组多路通道既具有选择通道传输速率高的优点,又具有字节多路通道分时操作、同时管理多台设备I/O操作的优点。数组多路通道一般用于连接中速设备,如磁带机等。
与前面两种I/O方式相比,通道方式有更强的I/O处理能力。有关I/O的工作,CPU委托通道去做,当通道完成了I/O任务后,向CPU发中断信号,请求CPU处理。这样就使CPU基本上摆脱了I/O控制工作,并大大提高了CPU与外部设备的并行工作的程度。
4.DMA方式
在DMA方式中,I/O控制器有更强的功能。它除了具有上述的中断功能外,还有一个DMA控制机构。在DMA控制器的控制下,设备和主存之间可成批地进行数据交换,而不用CPU干预。这样既大大减轻了CPU的负担,也使I/O的数据传送速度大大提高。
在DMA方式下,允许DMA控制器“接管”地址线的控制权,而直接控制DMA控制器与主存的数据交换。因此,I/O设备与主存之间的数据传送不需要CPU介入,从而减轻了CPU的负担。DMA控制器与其他部件的关系如图8-3所示。
图8-3 DMA控制器与其他部件的关系
下面讨论在DMA方式下进行数据输入的步骤及过程。
①当一个进程准备要求设备输入一批数据时,把要求传送的主存始址和要传送的字节数分别送入DMA控制器的主存地址寄存器和传送字数寄存器。
②把允许中断位和启动位为“1”的一个控制字送入控制寄存器,从而启动设备进行成批的数据传送。
③该进程将自己挂起,等待一批数据输入的完成,于是进程调度程序调度其他进程运行。
④当一批数据输入完成时,输入设备完成中断信号中断正在运行的进程,控制转向中断处理程序。
⑤中断处理程序首先保护被中断程序的现场,唤醒等待输入完成的进程,然后恢复现场,返回到被中断的进程。
⑥当进程调度程序调度到要求输入的进程时,该进程按照开始时指定的主存始址和实际传送字数对输入数据进行加工处理。
执行了上述步骤②之后,DMA硬件马上控制I/O设备与主存之间的信息交换。每当I/O设备把一个数据读入DMA控制器的数据缓冲寄存器之后,DMA控制器立即取代CPU,接管地址总线的控制权,并按照DMA控制器中的主存地址寄存器内容把输入的数据送入相应的主存单元。然后,DMA硬件电路自动地把传送字数寄存器减1,把主存地址寄存器加1,并恢复CPU对主存的控制权,DMA控制器对每一个输入的数据重复上述过程,直到传送字数寄存器中的值变为O时,向CPU发出完成中断信号。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。