何謂中斷式資料傳輸

中斷式的資料傳輸是指微電腦介面有資料需要CPU處理時,就發出一個中斷要求信號給CPUCPU可以暫停主程式的工作,來處理中斷要求介面的工作,通常是為了傳送資料給其他介面或記憶體,當資料傳送完畢後再回到主程式中繼續執行,這種介面處理資料的方式稱為中斷式I / O由於中斷式I / O不必浪費主程式去檢查介面的時間,只在介面有需要時才與CPU聯絡,是一種相當有效率的介面溝通方式。 中斷式資料傳輸的常用裝置

( 5-10)可知80×86的中斷系統使用了兩只PIC,兩層串接下共有15條中斷要求線,我們可以清楚的看到電腦一些重要的介面都是使用中斷式的介面傳輸,包括了定時 / 計數器、鍵盤、串列埠連接的滑鼠與數據機、並列埠的列表機、I / O插槽中的顯示卡與音效卡、浮點運算器、軟碟、硬碟、光碟等等。


 程式控制I/O

1. PIO (Programmed I/O):

PIO為程式控制資料轉移、所有I/O Operation 皆由CPU直接控制執行,亦即CPU負責啟動、指揮、中止。I/O設備與主記憶體皆由之間的資料皆由CPU負責。所以CPU要全程等待IO Operation 完成。因此非常浪費CPU時間,大大降低CPU資源(通常CPU比IO設備快很多)。

2. DMA (Direct Memory Access):

DMA即為直接記憶體存取。DMA為一存取介面可直接將Main memory中的資料與I/O設備作存取動作,而降低了CPU的I/O工作量。

 

(1)位址暫存器:存記憶體中某位置的位址,以便DMA傳輸。

(2)控制暫存器:表示轉移模式。

(3)字組計數器:存轉移之字組數。當其內含值為0,表示已完成傳輸。

DMA的動作流程:

(1)當I/O設備有I/O動作要求執行時,發出一個DMA需求給DMA的控制單元。

(2)DMA控制單元接收了I/O設備的DMA需求信號之後,即發出匯流排需求給CPU。

(3)CPU在接到DMA的匯流排需求訊號之後,即中止目前的程式指令,傳送資料所需之起始位址、傳送資料字組數……等傳給DMA的控制單元。 然後CPU便將主記憶體的存取權轉交給DMA。

(4)DMA在獲得main memory的存取權後,即直接將main memory上的資料與I/O設備互傳,以完成I/O動作。

(5)當DMA已做完I/O動作,將I/O設備所需資料傳送完畢,則發出一中斷訊號給CPU,則CPU會中斷匯流排傳輸,取回main memory控制權,並看情形是否有在一次DMA需求。

在第四個步驟時DMA控制器已經取得控制權這時CPU已經不需要監控較低速IO動作所以可以大大提升CPU利用率。

資料來源:http://www.hansweb.idv.tw/pcnews/webpage/pchw/wpiodma/wpiodmap1.htm

直接記憶體存取的工作模式

由於DMAC通常是一只IC,為了適合各種場合的需要,在設計時就規劃了多種工作模式,只要在使用前以程式寫入一些資料至它的內部暫存器,就可以選擇工作模式,典型的DMAC晶片82C37A就有以下四種工作模式。

1. 單一轉移模式(single transfer mode)

2. 區段轉移模式(block transfer mode)

3. 要求轉移模式(demand transfer)

4. 串接模式(cascade mode)

單一轉移模式中,週邊設備每啟動一次DRQDMAC僅轉移一筆資料就把匯流排控制權交回CPU

區段轉移模式時,DRQ只需維持啟動狀態到DACK回應為止,DMAC就可以將整個區段的資料轉移完畢。

要求轉移模式與區段轉移模式類似,但每轉移一筆資料都重新檢查DRQ,若DRQ不在啟動狀態則暫停DMA的工作,並將匯流排控制權交還CPU,直到DRQ再啟動時,再從上次暫停的位址繼續轉移至最後一筆資料。

串接模式允許一個以上的介面要求DMA,如 ( 5-12)所示。假設每一只DMAC都有兩個通道的DRQ要求線及DACK認知線,則可擴充至第二層DMAC,此時可擁有四個DMA的通道選擇,且優先權為維持第一層的遺傳,使得通道1>通道2>通道3>通道4。當第二層提出DMA需求時,第一層DMAC除了傳達HRQHLDA之外,本身並不輸出任何位址與控制信號,DMA的工作仍然由第二層的DMAC來處理。

 

資料來源:http://www.ltivs.ilc.edu.tw/kocp/mpu/m5/m5-7.htm

直接記憶體存取(DMA)

直接記憶體存取(direct memory accessDMA)為一個特殊的硬體結構,它允許介面裝置與記憶體之間直接轉移資料,而不需經由CPU的參與。在週邊與記憶體之間需要大量資料轉移時,此種方式可說是一種不需要中斷服務程式的中斷服務,直接由硬體完成此特定的工作,節省了許多程式執行的時間。

 

 直接記憶體存取的工作程序

一個直接記憶體存取的微電腦架構如 ( 5-11)所示,其中DMAC是這個架構中負責行使直接記憶體存取的控制晶片,整個DMA的工作程序描述如下:

(1)    一個週邊的IO裝置須要直接記憶體存取時,以DRQ=1DMAC提出DMA請求。

(2)    DMACHRQ=1通知CPU HOLD端。

(3)    CPU執行完畢目前的匯流排週期,將位址匯流排、資料匯流排以及控制匯流排置於高阻抗狀態,亦即與CPU接腳中分離,然後啟動HLDA=1告知DMAC可以使用系統匯流排了。

(4)    DMAC將事先以程式規劃好的位址計數器內容轉移至位址匯流排。

(5)    接著以DACK=1通知IO裝置位址線已備妥。

(6)    啟動記憶體及IO裝置的讀或寫控制線,完成第一筆資料的轉移。如果DMAC設定在區段模式,DMAC會將位址計數器加一,語句計數器減一,再回到前一個步驟,直到DMAC中的語句計數器等於零。

(7)    DMAC釋放控制權將所有匯流排開路,移除DMA請求,以HRQ=0通知 DMA工作已經結束,CPU得知後以HLDA=0回應,並收回匯流排控制權繼續原先的工作。