欢迎光临散文网 会员登陆 & 注册

DMA与通道的对比

2023-03-26 17:59 作者:我爱计算机科学  | 我要投稿

要理解两者的不同点,先回忆一下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相比,通道能够连接更多的外部设备。

上图是一个通道控制器。


PCL-730板卡组成框图

上图是有输入输出两个通道的系统。

比如选择输入输出数据通道的指令:

MOV DX, 221H

OUT DX, AL

MOV DX, 220H

IN AL, DX

以上指令由通道本身执行。


DMA与通道的对比的评论 (共 条)

分享到微博请遵守国家法律