3.3 通道处理机

  3.3.1 通道的功能

  前面所述的三种输入输出方式中,存在着两个主要问题;第一,中央处理机对各种方式都要花费很多时间参与工作。对于程序查询与程序中断而言,两者都需要CPU执行程序完成I/O操作。中断方式中,虽然I/O设备准备时间可以与CPU并行进行,但中断程序仍由CPU完成。当设备增多,中断请求增加时,CPU就要频繁地被中断。对DMA而言,CPU在数据的输入输出过程中,虽然只需要处于暂停状态,为I/O系统与主存之间的传送让出了总线。 但是因为是数据块传送,CPU被暂停的时间和次数还是很多的。况且初始化工作后处理的大量工作仍然由CPU完成。第二,每一个外部设备都要带有自己的I/O控制器,但是并不是所有的设备都需要同时工作,因而可以使多个设备分时共用一套I/O控制部件, 例如机器带有多台磁盘,磁带,但不是同时工作,所以设置多个DMA接口在硬件设备上利用率不高。 以上两点对于小型、低性能的机器而言,因外部设备不多,其缺点不甚明显,但是在计算机性能不断提高,外部设备不断增加的情况下,CPU对每次I/O操作都要参与,时间上开销太大,影响了整个系统的性能。上述两个缺陷就变得不可容忍了。为此,提出了通道的概念。IBM公司在360/370机型上首先采用了通道结构。图3.3.1示出了IBM 370的通道结构框图。这是一个CPU/主存-通道-设备控制器-外围设备的结构,通道处理机与主存之间有直接的通路。三种不同的通道分别联接不同类型的设备。CPU执行输入输出的管态指令,并处理来自通道的中断。



3.3.1 IBM 370通道结构框图

  综合而言,通道的具体功能如下:
  (1) 选择设备。由于第一个通道带有多台设备,而每台设备的工作状态可能各不相同,必定会处于下述4个状态之一: ①空闲可用;②等待中断处理:③正在工作;④故障或脱机。
  当需要该类设备输入输出时,通道可根据现有状态指定参与工作的设备。
  (2) 执行通道程序。通道程序的功能是完成全部传送操作。通道控制器类似中央控制器执行程序一样,控制通道程序的运行。
  (3) 对外部设备进行控制、状态检测、故障处理。
  (4) 进行信息的交换。 如串-并行的转换、 字块的拆卸与组装等。

  3.3.2 通道的逻辑组成与工作过程

  图3.3.2示出了通道组成的逻辑框图,它是由下列部分组成。

  (1) 通道指令地址寄存器。存放通道指令的地址。其输出送到主存地址寄存器,取出通道指令后立即进行修改,形成下条通道指令地址。在IBM 370计算机中因为指令长度为64位,所以每次加“8”。
  (2) 通道指令寄存器。存放现行的通道指令中命令码与标志码等字段。
  (3) 内存地址寄存器。开始传送指令时,它接收通道指令中的内存地址字段, 存放内存区的首地址。 在传送过程中,每传送一个字节,进行加“1”操作,形成下一个字节的地址。
  (4) 长度计数器。接收通道指令中的传送长度字段。在执行过程中,每传送一个字节进行减“1”,当全部为“0”时,则说明该条指令结束。
  (5) 数据缓冲寄存器。存放一个机器字长的数据,与主存进行数据传送。
  (6) 装配/拆卸部件。通道与主存的数据交换是按一个机器字长进行,而通道与外设之间是按一个字节进行。该部件用来进行机器字长与字节之间的变换。
  (7) 状态寄存器。存放通道与设备的状态。
  (8) 中断逻辑。 根据工作状态产生输入输出中断请求, 并接受CPU的响应信息,同时包含有排优逻辑及其他中断控制电路。
  (9) 标准接口。输入输出接口部件包括缓冲器、驱动器及校验电路,其结构符合标准,具有良好的一致互换性。
  (10) 通道控制部件。产生通道工作中所需的控制信号。
  通道的工作过程可参见图3.3.3。图3.3.4是通道程序、管理程序和用户程序的执行时间关系。

  在具有了通道的机器中,输入输出系统对用户程序员而言是透明的。用户程序不可以使用输入输出指令,只能将输入输出要求提交给操作系统,然后机器由目标状态(即运行用户程序)进入管理状态进行。由目态到管态的转换可以在用户程序中使用一条特殊指令,或广义指令。广义指令由一条访管指令与一组参数组成。在这条指令中,用户可以提出对输入输出操作的要求。下面是一条广义指令格式:

  这是一条读入成批数组的访管指令, M为操作系统中设备管理程序的入口地址,设备号指明了是哪种设备,其他为输入数组的参数。
  当CPU在执行用户程序的过程中,遇到第K条指令时,则根据指令的设备号转入到操作系统设备管理程序的入口,开始执行管理程序。这一段管理程序的功能是根据给出的参数编制好通道程序,并存放在主存某一区域,之后将该存储区的首地址填入通道地址字单元中。这是一个固定的存储单元。 在IBM 370计算机中是主存的72号单元。最后执行一条启动输入输出的指令。若启动成功,则从通道地址字中取出通道程序的第1条指令, 送到通道处理机开始执行通道程序,同时修改通道指令的地址,为取下一条指令做好准备。通道地址字此时已空闲,可记录其他通道程序地址。每条通道指令结束后,通道程序则根据通道指令中的标志位的状态得知该段程序是否结束。如果没有结束,则继续执行下条通道指令;如果已执行完,则发出“通道结束”和“设备结束”信息。 整个通道程序完成后, 发出正常结束中断请求,CPU响应中断,进行传送的后处理。

  3.3.3 通道的种类

  根据外设的工作速度及传送方式的不同,通道分为3种类型。

  1.字节多路通道

  用于连接多台慢速外设,采用交叉传送数据的方式。一个通道可以连接多台外设,而且使其都处于工作状态。外设对一个数据的传送在时间上分两个部分:①辅助操作时间,即设备准备时间。如机电操作所用的时间;②数据传送时间。通道只是在数据传送时工作,在设备准备时可以为其他已准备好的设备服务。 如图3.3.5中的通道连接了3个设备。当设备A已准备好, 通道即为它传送第一个数据A,此时设备B,C处于准备工作状态。 当通道结束设备A的服务后, B已准备好,则可转向为B服务。B传送完后,设备C已就绪,则又转向C。如此交叉地为各设备工作,换句话说,设备可以分时占用通道。通道每传送一次为一个字节。

  2.选择通道

  许多高速设备,如磁盘、磁带,其数据传输率很高。数据的传送是成组进行的,因此要求通道只能为一台设备所占用。选择通道是指每一个通道连接一台高速外设,也可以连接多台相同的高速外设,但通道只能对各台外设串行服务。当某一设备工作时,则通道与该设备相连,一直到整个数组传送完后,才可能转向为其他设备服务。如果该设备具有n个数据,则其输出为AlA2A3…An

  3.数组多路通道

  数组多路通道是字节多路通道与选择通道工作方式的综合,是在数组传送的基础上,再分时为多个高速外设服务。每台高速外设,如磁盘,其工作时间有寻址时间与传送时间之分。而寻址时间很长,在这段时间中并不需要通道的控制,所以是通道空闲时间,那么通道可以为其他准备好的高速外设服务。其工作方式如图3.3.6所示。

  当通道向A设备发出寻址命令后, 立即从逻辑上与该设备断开,它可以为准备好的C设备传送数据。当A寻址结束,开始传送数据时,通道就在整个数组传送时间中为A设备独占。 数组多路通道的传输率应该与选择通道相同。

  3.3.4 通道中的数据传送过程

  通道的性能决定于通道数据传送的方式,三种通道的传送方式都不相同,为说明其传送方式,需要将外设传送过程的时间阶段予以较为详细的分析、外设设备自得到启动命令到可以进行数据传送之间,有一段设备准备时间。这段时间相对于计算机的主机而言是很长的,是机电或人为动作所需的时间。如人敲击键盘、打印机的机械运动、或磁盘、光盘启动转动磁头定位所需的时间,此间通道是不参与工作的。当设备准备完毕,需要传送数据时,则发出数据传送请求信息到通道。由于通道可能连接多台设备,此时也许正在忙于其他设备的传送工作, 因此到通道响应此请求之间需要一段时间, 称设备选择时间Ts。通道传送一个字节的时间实际上是执行通道指令的时间,以TD表示。如果假设此通道上连接了p台设备, 每个设备所要求传送的字节数都为n个字节,三种通道数据传送的过程分别如下:
  字节多路通道如图3.3.7所示, 图中表示的是字节多路通道分时地为9台外设服务, 每台设备传送n个字节所需的时间T中各过程的分配。T所需的总时间为:

  选择通道在一段时间内只为一台设备服务,当一台传送完毕后再为第2台设备服务, 其传送时间图如3.3.8所示,那么p个设备传送数据所需的总时间为:

  数组多路通道的数据传送方式适用于数据的高速成组传送,通道分时地为多个设备服务,在每个分时的时段内,传送一个数据块。包含多个字节, 如磁盘存储器每个数据块k=512个字节。一般情况下,每台设备所要传送的数据量n都大于k,所以通道需要在各设备间进行多次切换。如图3.3.9,p台外设传送数据的时间T应为:

  3.3.5 通道的流量分析

  对于通道性能的分析通常用通道吞吐率来衡量,也就是通道的流量,是指一个通道在数据传送期间,单位时间内能够传送的数据量。当通道在满负荷工作状态下工作,得到的则是通道的最大流量。从上述数据传送时间图分析,三种通道的最大流量可以表示为:
         
  当各通道连接上各个设备,实际工作时吞吐率则可以根据不同设备的性能求出。字节多路通道的实际流量是与通道连接的所有设备传输率的总和:
            
  对于选择通道与数据通道,在一段时间内,连续传送一台设备的数据,所以通道的传输率也就是设备的传输率。是所带设备中数据流量最大的设备的传输率。
            
  在实际结构中,比较合理的是实际的通道流量应小于和尽量接近于最大流量, 如果通道所带的外设太多或者性能太高, 使实际的流量大于通道本身性能所具有的最大流量,那么就会出现丢失数据的错误。如果实际流量小于最大流量而且相差甚多,虽然通道能够正常工作但是说明通道的设备利用率不够。
  下面以字节多路通道为例说明对其通道流量的分析。
  :一个字节多路通道连接5台外部设备, 各台外设向通道提出数据传送请求的时间间隔为:D1为10μs,D2为30μs,D3为30μs,D4为50μs,D5为75μs。
  问:
  (1)计算该字节多路通道的实际数据传输率是多少?工作周期为多少?
  实际多路通道的流量为:
      
  实际的工作的周期为:
           
  如果设计的通道性能即通道的最大流量大于实际的流量,理论上说则可以满足5台设备 的工作要求。但实际工作中,三台设备的服务请求具有不同的优先权级别,如果级别排列得不合适,就有可能不能充分发挥通道的性能,而造成丢漏数据的现象,下面以此题为例予以说明。
  (2)如果5台设备是按照数据传输率的高低决定其服务请求的优先级别,传输率高的优先级也高。并假定5台设备在0时刻同时向通道发出第一次传送数据的要求,在以后的时间里按照各自的数据传输率连续工作。要求画出通道分时为各台设备服务的时间关系图。
  图3.3.10中示出了D1~D5台设备数据传送的时间图,向上的箭头为设备向通道发出的数据传输的服务请求,阴影部分为通道服务的时间为5μs,包括TsTd,传送一个字节。

  由图中可以看出,5台设备的第1次服务请求Dl~D4设备的请求都得到了服务,但是D5的第1次请求没有在指定的75μs内得到服务,而被丢掉了。如果D5设备的优先权能够动态地变动,在30μs后~70μs之间,可以提高到D2,D3或D4之前,则可以及时地完成D5的第1次的传送,否则就需要增大通道的最大流量,或者在D5设备中增加一定数量的数据缓存器,暂时存放数据,一旦有机会即可传送。