简介
DMA方式比起中断方式来已经显著地减少了 CPU 的干预,即已由以字(节)为单位的干预减少到以数据块为单位的干预,但 CPU 每发出一条 I/O 指令,也只能去读(或写)一个连续的数据块。而当我们需要一次去读多个数据块且将它们分别传送到不同的内存区域,或者相反时,则须由 CPU 分别发出多条 I/O 指令及进行多次中断处理才能完成。
I/O 通道方式是 DMA 方式的发展, 它可进一步减少 CPU 的干预, 即把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现 CPU、通道和 I/O 设备三者的并行操作,从而更有效地提高整个系统的资源利用率。
通道命令重复操作即I/O通道不停地执行从内存把数据写入到辅存操作。主要原因有:I/O 通道方式可以实现一组数据块的读写,而不需要CPU的干预。
通道程序通道是通过执行通道程序, 并与设备控制器共同实现对 I/O 设备的控制的。 通道程序是由一系列通道指令(或称为通道命令)所构成的。通道指令与一般的机器指令不同,在它的每条指令中都包含下列诸信息:
(1) 操作码。操作码规定了指令所执行的操作,如读、写、控制等操作。
(2) 内存地址。内存地址标明字符送入内存(读操作)和从内存取出(写操作)时的内存首址。
(3) 计数。该信息表示本条指令所要读(或写)数据的字节数。
(4) 通道程序结束位 P。该位用于表示通道程序是否结束。P=1 表示本条指令是通道程序的最后一条指令。
(5) 记录结束标志 R。R=0 表示本通道指令与下一条指令所处理的数据是同属于一个记录;R=1 表示这是处理某记录的最后一条指令。1
通道指令通道指令及其格式:通道指令也称通道控制字CCW,它是通道用于执行I/O操作的指令,由通道从主存中取出并执行之。
命令:命令用于说明通道和设备执行什么操作。命令一般又分为基本操作位和补充位两部分。通道运行时只识别基本操作位,而不识别补充位。
数据地址:它给出本次I/O操作时的主存缓冲区首地址,在数据传送过程中,每传送一个字或一个字节,它就加1或减1。
传送字节数:它表示数据传送字节数,每传送一个字节就修改其值,当为0时,表明传送结束。
特征位:
数据链特征位(SD) 若SD=1,表示下一条通道指令也是数据传送指令。
命令链特征位(CD) 若CD=1,表示该通道指令执行完毕,下一条要执行的通道指令与该通道指令的操作不同。
封锁错误长度特征(SLL) 错误长度是指通道指令中所给定的传送字节数与I/O设备请求传送的字节数不相等,则该通道指令执行完毕产生错误长度标志,并向CPU发出中断请求。若SLL=1,即使产生长度错标志,出不向CPU发出中断请求,继续向下执行通道指令。
封锁写入主存特征位(SKIP) SKIP=1时,禁止将I/O设备读出的数据写入主存。
程序控制中断特征位(PCI) PCI=1时,表示执行本通道指令时,允许产生一个中断条件。
说明:SD=0,CD=0本通道指令是通道程序的最后一条指令,可向CPU发出中断请求。
SD=1,CD=0下一条通道指令和本条通道的操作命令相同。
SD=0,CD=1下一条通道指令和本条通道的操作命令不同。
通道的组成不同的通道,其组成也不同,下面以选择通道为例介绍通道的组成。
(1)通道地址字寄存器CAWR:它存放从主存某固定单元中读出的通道地址字CAW,再从CAW中取出通道程序首地址。通道中的CAWR类似于CPU中的程序计数器PC。
(2)通道指令寄存器CCWR:它存放从主存中读出的通道指令,根据该通道指令向设备控制器发出控制命令。
(3)数据缓冲寄存器:当发生访存冲突时,它用于暂时保存数据,等待一段时间后再传送。另外,通道与设备之间按字节传送,而通道与主存之间按字传送,故它具有组装与拆分功能。
(4)设备地址寄存器:它接受启动I/O指令(SIO)中所包含的设备号,并依次向I/O总线送出设备地址,经译码产生选中设备信号。
(5)通道状态字寄存器CSWR:它存放通道与设备的状态信息。
(6)通道控制器:它产生控制通道操作的各种信号,类似于CPU中的微程序信号发生器。