1.I/O系统的硬件结构
对于不同规模的计算机系统,其I/O系统的结构也有所差异。通常可根据I/O系统的结构规模分为以下两类。
(1)单总线型I/O系统
像微型计算机这类比较简单的系统,其I/O系统多采用单总线I/O系统结构方式,如图9-4所示。
图9-4 单总线型I/O系统结构图
从图9-4中可以看出,CPU和内存是直接连接到系统总线上的,I/O设备是通过设备控制器连接到系统总线上的。CPU并不直接与I/O设备进行通信,而是与设备控制器进行通信,并通过设备控制器控制相应的设备。因此设备控制器就是控制一个或多个I/O设备的硬件,它提供了CPU和设备之间的接口。当然,应根据设备的类型来配置与其相适应的控制器。常用的控制器有磁盘控制器、打印机控制器、显示器控制器等。
在微型机和小型机中,设备控制器往往被称为接口卡,如网卡、显卡等,也称为适配器,如网络适配器、显示器适配器等。
(2)大型机I/O系统
通常,为大型机所配置的I/O设备较多,特别是配有较多的高速外设。所有这些设备的控制器如果都通过一条总线直接与CPU通信,无疑会加重总线和CPU的负担。因此在大型机I/O系统中,并不采用单总线结构,而是增加一级I/O通道,来代替CPU与各设备控制器进行通信,实现对设备的控制。图9-5是具有通道的I/O系统结构,在图9-5中I/O系统共分为四级:最低级为I/O设备;次低级为设备控制器;次高级为I/O通道;最高级是CPU。因此,也称这样的I/O系统结构为四级结构。
图9-5 具有通道的I/O系统结构图
2.设备控制器
通常设备并不直接与CPU进行通信,而是与设备控制器通信。设备控制器是I/O设备中的电子部件,在微型计算机中它常被设计成可插入主板扩展槽中的印刷电路板,也称接口卡,而设备本身则是I/O设备的另一组成部分——机械部分。操作系统一般不直接与设备打交道,而是把指令直接发到设备控制器中。设备控制器的复杂性因不同设备而异,其差别很大。一般可以将设备控制器分为两类:一类是用于控制字符设备的设备控制器;另一类是用于控制块设备的设备控制器。
为了实现设备的通用性和互换性,设备控制器与设备之间应采用标准接口,如SCSI(小型计算机系统接口)或IDE(集成设备电子器件)接口。设备控制器上一般都有一个接线器可以通过电缆与标准接口相连接,它可以控制2个、4个或8个同类设备。对微型计算机和小型计算机系统来说,由于它们的I/O系统比较简单,因此CPU与设备控制器之间的通信采用如图9-4所示的单总线模式。
设备控制器是CPU与I/O设备之间的接口,它接收从CPU发来的命令去控制I/O设备工作,使CPU从繁杂的设备控制事务中解脱出来。设备控制器又是一个可编址设备,当它仅控制一台设备时,只有唯一的设备地址;若连接多台设备,则具有多个设备地址,使每个地址对应一台设备。
设备控制器通常具有以下6种功能。
(1)接收和识别命令。CPU可以向设备控制器发送多种命令,设备控制器应能接收和识别CPU发来的命令。因此设备控制器中应有相应的控制寄存器和命令译码器,用于存放接收到的命令和参数,并对收到的命令进行译码。
(2)数据交换。数据交换指实现CPU与设备控制器之间、设备控制器与设备之间的数据交换。对于前者,CPU并行地将数据写入设备控制器中的数据寄存器,或从设备控制器中的数据寄存器中并行地读取数据;对于后者,输入设备将数据输入设备控制器中的数据寄存器,或将设备控制器中数据寄存器暂存的数据传送给输出设备。
(3)地址识别。系统中的每台设备都有一个设备地址,设备控制器应能识别它所控制的每台设备的地址。因此设备控制器中应包含地址译码器。
(4)标识和报告设备的状态。CPU需要随时了解设备的当前状态。如仅当设备处于发送就绪状态时,CPU才能启动设备控制器从设备中读取数据。因此设备控制器应具有状态寄存器来保存设备的当前状态,以便将它提供给CPU。
(5)数据缓冲。I/O设备的速度与CPU和内存的速度相比差异很大,故可以在设备控制器中设置缓冲,缓解I/O设备与CPU以及内存之间的速度矛盾。(www.xing528.com)
(6)差错控制。对从设备传送来的数据进行差错检测,若发现传送出现错误,则将差错检测码置位并同时向CPU报告。CPU收到报告后使本次传送来的数据作废,然后重新进行一次数据传送,以确保数据输入的正确性。
由于设备控制器处于CPU和设备之间,它既要与CPU通信,又要与设备通信,并且还具有按CPU发来的命令去控制设备操作的功能。因此大多数设备控制器由以下三部分组成。
(1)设备控制器与CPU的接口。该接口用于实现设备控制器与CPU之间的通信。此接口中有三类信号线——数据线、地址线和控制线,数据线通常与两类寄存器相连接,分别是数据寄存器和控制—状态寄存器。
(2)设备控制器与设备的接口。该接口用于实现设备控制器与设备之间的信息交换,一个设备控制器上可以连接一台或多台设备。相应地,在设备控制器中就有一个或多个设备接口,一个接口连接一台设备,在每个接口中都有三种类型的信号:数据信号、控制信号和状态信号。
(3)I/O逻辑。该逻辑用于实现对设备的控制并通过一组控制线与CPU交互。进行I/O时,CPU利用该逻辑向设备控制器发送命令,I/O逻辑对接收到的命令进行译码。每当CPU启动一台设备时就将启动命令送给设备控制器,同时通过地址线把设备的地址送给设备控制器,由设备控制器的I/O逻辑对收到的地址进行译码,再根据译出的命令对所选的设备进行控制。
当主机配置的外部设备很多时,仅有设备控制器是远远不够的,CPU的负担依然很重。于是在CPU和设备控制器之间又增设了通道,这样可使一些原来由CPU处理的I/O任务转交给通道来承担,从而把CPU从繁忙的I/O任务中解脱出来以提高系统的工作效率。
(1)通道及通道与CPU之间的通信
通道又称I/O处理器,是一个独立于CPU的专管I/O控制的处理器,它控制设备与内存直接进行数据交换。通道具有执行I/O指令的功能,并通过执行通道程序来控制I/O操作。但I/O通道又与一般的CPU不同,一方面由于通道硬件较为简单,所以指令类型也较为单一,执行的指令也只与I/O操作有关;另一方面是通道没有自己的内存,它所执行的通道程序存放在内存中,即通道与CPU共享内存。
有了通道之后,CPU与通道之间的关系是主从关系,即CPU是主设备,通道是从设备。这样,采用通道方式实现数据传输的过程是:当运行的程序要求传输数据时,CPU向通道发出I/O指令,命令通道开始工作,此时,CPU就可以转去执行其他的程序。通道接收到CPU的I/O指令后,从内存中取出相应的通道程序完成I/O操作。当I/O操作完成(或出错)时,通道以中断方式中断CPU正在执行的程序,请求CPU对此次数据传输进行善后处理。
引入通道之后的I/O系统结构如图9-6所示(注:主机包括CPU和内存)。这时的系统对I/O操作实施三级控制,第一级CPU执行I/O指令,启动或停止通道运行,查询通道状态;第二级是通道接收I/O指令后,执行通道程序向设备控制器发出命令;第三级是设备控制器根据通道发来的命令,控制设备完成I/O操作。
图9-6 I/O系统的三级控制结构
通道和设备控制器都是独立的功能部件,它们可以并行工作。一台计算机中可以配置多个通道,一个通道可以连接多个设备控制器,一个设备这种情况可以连接多台同类型的设备。由于通道价格较高,计算机中一般配置较少,因此这种情况有可能成为I/O的瓶颈。解决办法是增加设备到主机之间的连接通路,即将一台设备连接到几个设备控制器上,将一个设备控制器连接到几个通道上。多通路方式不仅可以缓解I/O的瓶颈问题,还提高了系统的可靠性,这是因为当个别通道或控制器出现故障时,不会导致设备与内存之间的所有通路中断。
由此可见,引入通道技术后可以实现CPU与通道的并行操作。另外,通道之间以及通道上的外设也都能实现并行操作,从而提高了系统的效率。
(2)通道的类型
通道是用于控制外部设备的,但由于外部设备的种类繁多,各自的速率相差很大,因此针对这些不同的外部设备也就有不同的通道类型,按信息交换方式可以将通道分为以下三种类型。
①字节多路通道。它含有多个分配型子通道,每个子通道连接一台I/O设备,这些子通道以字节为单位按时间片轮转方式共享主通道。每次子通道控制外部设备交换一个字节数据后,便立即让出字节多路通道,以便让另一个子通道使用。当所有子通道轮转一周后,就又返回来由第一个子通道去使用字节多路通道。由于字节多路通道的数据传送是以字节为单位进行的,并且要频繁进行通道的切换,因此I/O效率不高。字节多路通道多用来连接低速或中速设备,如打印机等。
②数组选择通道。按成组方式进行数据传送,每次以数据块为信息单位传送一批数据,因此信息传输速率很高,主要用于连接高速外部设备,如磁盘机、磁带机等。尽管数组选择通道可以连接多台设备,但它在一段时间内只能运行一个通道程序,即只能控制一台设备进行数据传输,因此一段时间内它只能选择为一台设备服务。当通道被某台设备占用后,即使该通道空闲且无数据传输也不允许其他设备使用该通道,直至占有该通道的设备释放它为止。由此可见,数组选择通道的利用率很低。
③数组多路通道。数组选择通道虽然有很高的传输速率,但它每次只允许一台设备传送数据,因此将它的高传输率优点与字节多路通道分时并行操作的优点结合起来,就形成了数组多路通道。数组多路通道含有多个非分配型子通道,可以连接多种高速外部设备以成组方式进行数据传送,实现多个通道程序、多种高速外部设备并行操作。这种通道主要用来连接中、高速块设备,如磁带机等。
数组多路通道先为某一台设备执行一条通道命令,传送一批数据后,自动地转换为另一台设备执行一条通道命令。由于它在任何一个时刻只能为一台设备服务,这就类似于选择通道,但它不等整个通道程序执行结束,就为另一台设备的通道程序执行指令,这又类似于字节多路通道的分时功能。本质上,数组多路通道相当于通道程序的多道程序设计技术的硬件实现。如果所有的通道程序都只有一条指令,那么数组多路通道就相当于数组选择通道了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。