DMA與通道的對比
要理解兩者的不同點,先回憶一下DMA:


從上面兩個圖可以看出,DMA主要就是完成外設(shè)和內(nèi)存間的數(shù)據(jù)塊傳送,并自動修改外設(shè)和主存的地址。

一個DMA控制器可以連接有限個外設(shè)。

一個處理機可以連接多個DMA處理器。

這是一塊DMA芯片,主要工作就是代替CPU在數(shù)據(jù)塊傳送時進行的地址加1或者減1的工作,但數(shù)據(jù)傳送的初始化工作還是由CPU完成。
由于DMA通常只控制一臺或少數(shù)幾臺同類設(shè)備,為了同時控制許多臺同類或不同類的設(shè)備,因此引入了通道設(shè)備:



通道和DMA區(qū)別在于:
1、通道一般用在大型計算機系統(tǒng)中(不是大型機)。
2、通道實質(zhì)是一臺能夠執(zhí)行有限的輸入輸出指令,并能被多臺外設(shè)共享的小型DMA專用處理機。
3、通道的作用:
解決了兩個問題。
a.由cpu承擔輸入輸出的工作。
雖然dma無需cpu進行外設(shè)與內(nèi)存的數(shù)據(jù)交換工作,但是這只是減少了cpu的負擔,dma中輸入輸出的初始化仍然要由cpu來完成。
b.大型計算機系統(tǒng)中高速設(shè)備共享dma接口的問題。大型計算機系統(tǒng)的外設(shè)太多以至于不得不共享有限的dma接口(小型計算機系統(tǒng)比如pc機中每個高速設(shè)備分配一個dma接口)。
通道的組成:
不同的通道,其組成也不同,下面以選擇通道為例介紹通道的組成。
(1)通道地址字寄存器CAWR:它存放從主存某固定單元中讀出的通道地址字CAW,再從CAW中取出通道程序首地址。通道中的CAWR類似于CPU中的程序計數(shù)器PC。
(2)通道指令寄存器CCWR:它存放從主存中讀出的通道指令,根據(jù)該通道指令向設(shè)備控制器發(fā)出控制命令。
(3)數(shù)據(jù)緩沖寄存器:當發(fā)生訪存沖突時,它用于暫時保存數(shù)據(jù),等待一段時間后再傳送。另外,通道與設(shè)備之間按字節(jié)傳送,而通道與主存之間按字傳送,故它具有組裝與拆分功能。
(4)設(shè)備地址寄存器:它接受啟動I/O指令(SIO)中所包含的設(shè)備號,并依次向I/O總線送出設(shè)備地址,經(jīng)譯碼產(chǎn)生選中設(shè)備信號。
(5)通道狀態(tài)字寄存器CSWR:它存放通道與設(shè)備的狀態(tài)信息。
(6)通道控制器:它產(chǎn)生控制通道操作的各種信號,類似于CPU中的微程序信號發(fā)生器。
通道的工作過程:
(1)初始化:
編制通道程序;
根據(jù)需要在主存中開辟I/O緩沖區(qū);
將緩沖區(qū)首址及傳送字節(jié)數(shù)送到通道程序中,并將通道程序首地址寫入某固定單元;
執(zhí)行啟動命令SIO,該指令中給出通道號及設(shè)備號。
(2)通道和設(shè)備的啟動:
指定的通道接到啟動信號后,從某固定單元中讀出通道地址字CAW;
CAW送入通道地址寄存器CAWR;
通道將SIO指令送來的設(shè)備號送入設(shè)備地址寄存器,然后向I/O總線送出所要啟動的設(shè)備號;
指定設(shè)備向通道送出回答信號,并回送本設(shè)備地址;
若回送的設(shè)備地址與通道送出的設(shè)備地址一致,則啟動成功;
通道根據(jù)VAWR中的內(nèi)容從主存取出第一條通道指令CCW1,并存于通道指令寄存器CCWR中,然后根據(jù)CCW1中的命令碼去啟動設(shè)備;
設(shè)備在接到第一條通道發(fā)出的命令后,向通道送出狀態(tài)碼,若狀態(tài)碼全為0,則通道向CPU送出條件碼,并告之啟動成功。反之,則表示不能正常執(zhí)行通道命令,并說明失敗的原因。
數(shù)據(jù)傳送:執(zhí)行完第一條通道指令后,CAWR增值,以便讀出第二條通道指令。若執(zhí)行的是數(shù)據(jù)傳送指令,當其傳送字節(jié)數(shù)減到0時,表明該通道指令執(zhí)行完畢,本次數(shù)據(jù)傳送結(jié)束。依次類推,直到執(zhí)行的某條通道指令中SD和CD均為0,則該通道指令是本通道程序中的最后一條。
(4)通道程序的結(jié)束:當執(zhí)行完通道程序的最后一條通道指令,則結(jié)束通道程序:一方面通道向設(shè)備發(fā)出結(jié)束命令,一方面向CPU發(fā)出中斷請求信號,并將通道狀態(tài)寫入主存專用單元。
設(shè)備接到結(jié)束命令后立即進行某些必要的動作,例如磁帶繼續(xù)運行一段,使磁頭停止在兩個數(shù)據(jù)之間的空白處。在設(shè)備必要的動作結(jié)束后,反饋給通道一個信號,以斷開與通道的連接。
CPU接到中斷請求信號后,響應(yīng)中斷,執(zhí)行I/O中斷管理程序,對通道作結(jié)束處理。
由以上敘述可以看出,DMA和通道的異同點在于:
1:兩者都要完成地址加1減1的操作,兩者都是硬件,但DMA不能執(zhí)行指令,通道則可以;
2:DMA的初始化工作仍由CPU完成,通道則是自己完成;
3:與DMA相比,通道能夠連接更多的外部設(shè)備。

上圖是一個通道控制器。

上圖是有輸入輸出兩個通道的系統(tǒng)。
比如選擇輸入輸出數(shù)據(jù)通道的指令:
MOV DX, 221H
OUT DX, AL
MOV DX, 220H
IN AL, DX
以上指令由通道本身執(zhí)行。