7.2.10 通道技术

1.通道相关概念

(1)通道

通道(channel)是计算机系统中能够独立完成I/O操作的硬件装置,也称为I/O处理机。它提供了数据在I/O设备与主存之间传输的通路,是一种专用于操纵I/O设备、功能简单的专用处理机。通道可与CPU并行执行。

通道与CPU一样,有运算和控制逻辑,有自己的指令系统,也在程序控制下工作。通道自己的机器指令集,称为I/O通道指令、I/O命令或通道命令字。

(2)通道程序

通道通过执行通道程序进行工作。使用通道指令编写的程序称为通道程序,或者说通道程序就是通道命令字的有序集合。通道程序通常由操作系统根据I/O请求而动态产生。通道程序保存在主存中。

(3)通道命令字

通道命令字也称通道控制字,包含通道执行的操作以及参数,通常由命令码、数据主存地址、传输长度及标志码等部分组成。其作用相当于中央处理机的指令寄存器。

·命令码:确定设备所执行操作。一般分为3类:数据传输类、通道命令转移类和设备控制类。

·数据主存地址:对于不同的命令有不同的含义。比如,命令码为数据传输类,主存地址是指内存I/O数据区的起始地址。若命令码为通道命令转移类时,主存地址是指转移地址。

·标志码:非0时表示通道程序未结束,为0时表示通道程序结束。·传输长度:表示本命令应传输的单位数据个数。

(4)通道地址字

通道地址字(Channel Address Word,CAW)通常是指主存中的一个固定单元,用于存放通道程序的首地址。

(5)通道状态字

通道状态字(Channel Status Word,CSW)通常是指主存中的一个固定单元,用于存放通道和设备执行I/O操作的信息,如通道、控制器、设备的状态,包括I/O传输完成信息、出错信息、重复执行次数等。通道状态字中包含通道命令地址、设备状态、通道状态、剩余字节数等字段。

2.通道控制结构

在一般大型计算机系统中,主机对外部设备的控制可以分为三个层次来实现,即通道、控制器和设备,如图7-2所示。

7.2.10 通道技术 - 图1

图 7-2 设备、控制器、通道与内存之间的连接

一旦CPU发出启动通道的指令,通道就可以独立于CPU工作。CPU通过执行I/O指令对通道实施控制,通道通过执行通道指令控制设备控制器工作,设备控制器发出动作序列对设备实施控制,设备执行相应的I/O操作。这样,一个通道可以连接多个控制器,而一个控制器又可以连接若干台同类型的外部设备。最终,设备在控制器控制下执行操作。

由于通道和控制器的数量一般比设备的数量少,如果连接不当,会造成I/O瓶颈问题,进而导致整个系统吞吐量的下降。解决瓶颈问题最有效的方法是增加设备到主机之间的通路,而不增加通道,将一个设备连接到多个控制器上;而一个控制器又连接到多个通道上。因此,一般设备的连接采用交叉连接,其好处是:

·提高系统的可靠性:当某条通路因控制器或通道故障而断开时,可使用其他通路。

·提高设备的并行性:对于同一个设备,当与它相连的某一条通路中的控制器或通道被占用时,可以选择另一条空闲通路,减少了设备因等待通路所需要花费时间。

3.通道分类

按照信息交换方式和所连接的设备种类,通道可以分为以下3种类型。

(1)字节多路通道

这种通道以字节为单位传输数据,主要用于连接打印机、终端等低速或中速的I/O设备。该通道通常含有多个子通道,每个子通道连接一台I/O设备并且每次完成一个字节的数据传送。字节多路通道为一台设备传送一个字节后,立即转去为另一台设备传送一个字节。

(2)数组选择通道

数组选择通道又称为成组选择通道、数据选择通道。这种通道以数据块为单位成批传输数据,可以同时连接多台高速设备,但可分配的通道只有一个,每次只能为一台设备服务。当被分配了该通道的I/O设备输入输出操作完成后,其他设备才能利用该通道,因此,这种通道的利用率较低。它适用于连接磁盘、磁带等高速设备。

(3)数组多路通道

数组多路通道又称为成组多路通道、数据多路通道。这种通道综合了字节多路通道分时工作和数组选择通道传输速率高的特点,同样含有多个子通道,每个子通道连接一台I/O设备,但数据传输以数据块为单位进行。其实质是对通道程序采用多道程序设计技术,使与通道连接的设备可以并行工作。

成组多路通道适于连接高速I/O设备,如磁盘。它首先为一台设备执行一条通道指令,传送一批数据,然后再选择另一台设备执行一条通道指令,即多台设备的通道程序都在同时执行中,但任何时刻通道只能为一台设备服务。

4.通道工作原理

通道具有自己的指令系统,包括读、写、控制、转移、结束,以及空操作等指令,并可以执行由这些指令编写的通道程序。通道的运算控制部件包括:通道地址字、通道命令字(Channel Command Word,CCW)、通道状态字。

通道一般需要与主机共享同一个内存,以保存通道程序和交换数据。通道访问内存采用“周期窃用”方式。

采用通道方式后,输入输出操作过程如下:CPU在执行用户程序时遇到I/O请求,则可以根据用户的I/O请求生成通道程序(通道程序也可能是事先编制好的),放在内存中,并把该通道程序首地址放入CAW中。然后,CPU执行“启行I/O”指令,启动通道工作。通道接收“启动I/O”指令信号,从CAW中取出通道程序首地址,并根据此地址取出通道程序的第一条指令,放入CCW中;同时向CPU发应答信号,通知“启动I/O”指令执行完毕,CPU可继续执行。而通道开始执行通道程序,进行物理I/O操作。执行完一条指令,如果还有下一条指令则继续执行;否则表示传输完成,向CPU发中断信号,通知CPU通道程序执行完毕,同时自行停止。CPU响应中断,处理通道结束事件,并从CSW中得到有关通道状态,若为正常结束,执行正常结束,中断服务程序;否则,执行错误处理中断服务程序。