DMA与通道的对比
要理解两者的不同点,先回忆一下DMA:


从上面两个图可以看出,DMA主要就是完成外设和内存间的数据块传送,并自动修改外设和主存的地址。

一个DMA控制器可以连接有限个外设。

一个处理机可以连接多个DMA处理器。

这是一块DMA芯片,主要工作就是代替CPU在数据块传送时进行的地址加1或者减1的工作,但数据传送的初始化工作还是由CPU完成。
由于DMA通常只控制一台或少数几台同类设备,为了同时控制许多台同类或不同类的设备,因此引入了通道设备:



通道和DMA区别在于:
1、通道一般用在大型计算机系统中(不是大型机)。
2、通道实质是一台能够执行有限的输入输出指令,并能被多台外设共享的小型DMA专用处理机。
3、通道的作用:
解决了两个问题。
a.由cpu承担输入输出的工作。
虽然dma无需cpu进行外设与内存的数据交换工作,但是这只是减少了cpu的负担,dma中输入输出的初始化仍然要由cpu来完成。
b.大型计算机系统中高速设备共享dma接口的问题。大型计算机系统的外设太多以至于不得不共享有限的dma接口(小型计算机系统比如pc机中每个高速设备分配一个dma接口)。
通道的组成:
不同的通道,其组成也不同,下面以选择通道为例介绍通道的组成。
(1)通道地址字寄存器CAWR:它存放从主存某固定单元中读出的通道地址字CAW,再从CAW中取出通道程序首地址。通道中的CAWR类似于CPU中的程序计数器PC。
(2)通道指令寄存器CCWR:它存放从主存中读出的通道指令,根据该通道指令向设备控制器发出控制命令。
(3)数据缓冲寄存器:当发生访存冲突时,它用于暂时保存数据,等待一段时间后再传送。另外,通道与设备之间按字节传送,而通道与主存之间按字传送,故它具有组装与拆分功能。
(4)设备地址寄存器:它接受启动I/O指令(SIO)中所包含的设备号,并依次向I/O总线送出设备地址,经译码产生选中设备信号。
(5)通道状态字寄存器CSWR:它存放通道与设备的状态信息。
(6)通道控制器:它产生控制通道操作的各种信号,类似于CPU中的微程序信号发生器。
通道的工作过程:
(1)初始化:
编制通道程序;
根据需要在主存中开辟I/O缓冲区;
将缓冲区首址及传送字节数送到通道程序中,并将通道程序首地址写入某固定单元;
执行启动命令SIO,该指令中给出通道号及设备号。
(2)通道和设备的启动:
指定的通道接到启动信号后,从某固定单元中读出通道地址字CAW;
CAW送入通道地址寄存器CAWR;
通道将SIO指令送来的设备号送入设备地址寄存器,然后向I/O总线送出所要启动的设备号;
指定设备向通道送出回答信号,并回送本设备地址;
若回送的设备地址与通道送出的设备地址一致,则启动成功;
通道根据VAWR中的内容从主存取出第一条通道指令CCW1,并存于通道指令寄存器CCWR中,然后根据CCW1中的命令码去启动设备;
设备在接到第一条通道发出的命令后,向通道送出状态码,若状态码全为0,则通道向CPU送出条件码,并告之启动成功。反之,则表示不能正常执行通道命令,并说明失败的原因。
数据传送:执行完第一条通道指令后,CAWR增值,以便读出第二条通道指令。若执行的是数据传送指令,当其传送字节数减到0时,表明该通道指令执行完毕,本次数据传送结束。依次类推,直到执行的某条通道指令中SD和CD均为0,则该通道指令是本通道程序中的最后一条。
(4)通道程序的结束:当执行完通道程序的最后一条通道指令,则结束通道程序:一方面通道向设备发出结束命令,一方面向CPU发出中断请求信号,并将通道状态写入主存专用单元。
设备接到结束命令后立即进行某些必要的动作,例如磁带继续运行一段,使磁头停止在两个数据之间的空白处。在设备必要的动作结束后,反馈给通道一个信号,以断开与通道的连接。
CPU接到中断请求信号后,响应中断,执行I/O中断管理程序,对通道作结束处理。
由以上叙述可以看出,DMA和通道的异同点在于:
1:两者都要完成地址加1减1的操作,两者都是硬件,但DMA不能执行指令,通道则可以;
2:DMA的初始化工作仍由CPU完成,通道则是自己完成;
3:与DMA相比,通道能够连接更多的外部设备。

上图是一个通道控制器。

上图是有输入输出两个通道的系统。
比如选择输入输出数据通道的指令:
MOV DX, 221H
OUT DX, AL
MOV DX, 220H
IN AL, DX
以上指令由通道本身执行。