虽然DMA控制方式能够满足高速数据传输的需要,但每传送一个数据块都需要向CPU发出中断,且在每个数据块的传送开始或结束时,CPU都要介入其中进行处理,以实现CPU与设备的并行操作,因此效率仍不够高。此外CPU发出的每条I/O指令只能读、写同一内存区域中的连续数据块,不能满足复杂I/O操作的需求。如当人们希望一次读取位于磁盘不同位置上的多个数据块,并将它们分别传送到内存的不同区域时,则需要CPU多次发出I/O指令,并进行多次中断处理才能完成传送。另一方面,随着计算机的发展和应用范围的不断扩大,需要CPU与外设之间具有更高的并行能力,同时也能够使种类繁多、物理特性各异的外部设备以标准接口的方式连接到系统中。因此计算机系统引入了通道结构。
通道是继DMA之后让CPU摆脱I/O操作的又一种好方法。在DMA控制方式中,对I/O设备的管理和某些操作仍然由CPU控制,此外,在多个设备之间也无法共享DMA控制器。I/O通道是专门管理I/O的硬件,它将CPU从繁忙的I/O事务中彻底解脱出来,实现CPU、通道、设备并行操作。I/O通道可以控制多台设备共享设备控制器,从而实现多台设备与内存交换数据。I/O通道控制方式与DMA控制方式类似,也是以内存为中心实现数据在设备与内存的直接交换。在I/O通道控制方式下,当进程发出I/O请求后,只需给CPU指出通道相应的操作和使用的I/O设备,即可执行启动通道的指令来启动通道,并从内存中调出相应的通道程序予以执行。此时CPU将该I/O请求任务交由通道控制完成,当整个I/O任务在通道控制下完成之后,再由通道发出中断请求信号,此时CPU响应中断并进行后续处理。因此I/O通道进一步减少了CPU对I/O过程的干预,既减轻了CPU的工作负担,也提升了计算机系统的并行工作能力,使现代计算机系统的功能更加完善。正是有了中断技术和通道技术,才真正实现了CPU与I/O设备的并行工作,由此也真正实现了多道程序设计。
通道通过执行通道程序与设备控制器一起实现了对I/O设备的控制。通道程序通常存放在内存中并由一系列通道指令(通道命令)组成,它规定了设备应该执行的各种操作和顺序。通道指令与一般的计算机指令不同,通常包含命令码、内存地址、传输字节数、记录结束标志以及通道程序结束标志等信息。其中,命令码规定了本条指令要执行的操作,如读、写、控制等;内存地址指明数据送入内存(读操作)或从内存取数据(写操作)的内存起始地址;传输字节数指明本条指令要读、写的字节数;记录结束标志用来标识某个记录是否结束,若为1,则表示本条指令是处理某个记录的最后一条指令;通道程序结束标志用来标识通道程序是否结束,若为1,则表示本条指令是通道程序的最后一条指令。CPU启动通道后,就由通道执行通道程序完成CPU交给的I/O任务。
I/O通道控制方式传输数据的步骤如下。
(1)当进程提出I/O请求时,CPU对通道发出启动命令且传送相应参数,然后转向处理其他事务。
(2)通道根据收到的启动命令调出通道程序执行,于是设备、通道、CPU并行工作。(www.xing528.com)
(3)通道逐条执行通道程序中的通道命令来控制设备执行规定的操作,完成设备与内存之间的数据传输。
(4)数据传输完毕,通道向CPU发出中断请求。
(5)CPU响应通道提出的中断请求,对本次I/O进行结束处理。
通道方式与DMA方式类似,是DMA方式的进一步发展。但通道方式与DMA方式不同的是:在DMA方式中,数据的传送方向、存放数据的内存起始地址以及传送的数据块长度等都由CPU控制;而在通道方式中,这些操作都由专门负责I/O操作的硬件——通道来实现。通道实现了在I/O设备与内存之间直接进行数据的交换,和DMA方式相比,通道使CPU从以数据块为单位的干预,减少到仅当全部数据交换完成后只干预一次。在DMA方式下,每个设备都配置一个专用的DMA控制器,只能进行固定的数据传输操作;而通道方式则有自己的指令,即通道命令,能够根据通道程序控制多个外部设备,从而提供了多个设备共享一个DMA的功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。