CPU與外設傳送數據方式


7.2 CPU與外設之間數據傳送的方式

    在微型計算機系統中,CPU與外設之間的數據傳送方式主要有程序傳送方式、中斷傳送方式和直接存儲器存取(DMA)傳送方式,分別介紹如下。 
    7.2.1 程序傳送方式 
    程序傳送方式是指直接在程序控制下進行數據的輸入/輸出操作。程序查詢方式分為無條件傳送方式和查詢方式(條件傳送方式)兩種。 
    一. 無條件傳送方式 
    微機系統中的一些簡單的外設,如開關、繼電器、數碼管、發光二極管等,在它們工作時,可以認為輸入設備已隨時准備好向CPU提供數據,而輸出設備也隨時准備好接收CPU送來的數據,這樣,在CPU需要同外設交換信息時,就能夠用IN或OUT指令直接對這些外設進行輸入/輸出操作。由於在這種方式下CPU對外設進行輸入/輸出操作時無需考慮外設的狀態,故稱之為無條件傳送方式。 
    對於簡單外設,若采用無條件傳送方式,其接口電路也很簡單。如簡單外設作為輸入設備時,輸入數據保持時間相對於CPU的處理時間要長得多,所以可直接使用三態緩沖器和數據總線相連,如圖7.5(a)所示(如圖7.5)。當執行輸入的指令時,讀信號RD有效,選擇信號M/IO處於低電平,因而三態緩沖器被選通,使其中早已准備好的輸入數據送到數據總線上,再到達CPU。所以要求CPU在執行輸入指令時,外設的數據是准備好的,即數據已經存入三態緩沖器中。 
    簡單外設為輸出設備時,由於外設取數的速度比較慢,要求CPU送出的數據在接口電路的輸出端保持一段時間,所以一般都需要鎖存器,如圖7.5(b)所示。CPU執行輸出指令時,M/IO和WR信號有效,於是,接口中的輸出鎖存器被選中,CPU輸出的信息經過數據總線送入輸出鎖存器中,輸出鎖存器保持這個數據,直到外設取走。 
    無條件傳送方式下,程序設計和接口電路都很簡單,但是為了保證每一次數據傳送時外設都能處於就緒狀態,傳送不能太頻繁。對少量的數據傳送來說,無條件傳送方式是最經濟實用的一種傳送方法。 
    二.查詢傳送方式 
    查詢傳送也稱為條件傳送,是指在執行輸入指令(IN)或輸出指令(OUT)前,要先查詢相應設備的狀態,當輸入設備處於准備好狀態、輸出設備處於空閑狀態時,CPU才執行輸入/輸出指令與外設交換信息。為此,接口電路中既要有數據端口,還要有狀態端口。 
    查詢傳送方式的流程圖如圖7.6所示。從圖中可以看出,采用查詢方式完成一次數據傳送要經歷如下過程: 
    1.CPU從接口中讀取狀態字; 
    2.CPU檢測相應的狀態位是否滿足“就緒”條件; 
    3.如果不滿足,則重復1、2步;若外設已處於“就緒”狀態,則傳送數據。 
    如圖7.7所示給出的是采用查詢方式進行輸入操作的接口電路。輸入設備在數據准備好之后向接口發選通信號,此信號有兩個作用:一方面將外設中的數據送到接口的鎖存器中,另一方面使接口中的一個D觸發器輸出“1”,從而使三態緩沖器的READY位置“1”。CPU輸入數據前先用輸入指令讀取狀態字,測試READY位,若READY位為“1”,說明數據已准備就緒,再執行輸入指令讀入數據。由於在讀操作時RD信號已將狀態位READY清0,於是可以開始下一個數據輸入過程。 
    如圖7.8所示給出的是采用查詢方式進行輸出操作的接口電路。CPU輸出數據時,先用輸入指令讀取接口中的狀態字,測試BUSY位,若BUSY位為0,表明外設空閑,此時CPU才執行輸出指令,否則CPU必須等待。執行輸出指令時由端口選擇信號、M/IO信號和寫信號共同產生的選通信號將數據總線上的數據打入接口中的數據鎖存器,同時將D觸發器置1。D觸發器的輸出信號一方面為外設提供一個聯絡信號,通知外設將鎖存器鎖存的數據取走;另一方面使狀態寄存器的BUSY位置1,告訴CPU當前外設處於忙狀態,從而阻止CPU輸出新的數據。輸出設備從接口中取走數據后,會送一個回答信號ACK,該信號使接口中的D觸發器置0,從而使狀態寄存器中的BUSY位清0,以便開始下一個數據輸出過程。 
    前面介紹的都是對單個外設進行的查詢式輸入/輸出,實際上,一個微機系統中往往會有多個外設與CPU交換信息,對於多個外設,如何利用查詢方式實現輸入/輸出呢?通常采用的是輪流查詢法對各個外設依次進行查詢,並進行信息交換。 
    查詢傳送方式的主要優點是能保證主機與外設之間協調同步的工作,且硬件線路比較簡單,程序也容易實現。但是,在這種方式下,CPU花費了很多時間查詢外設是否准備就緒,在這些時間里,CPU不能進行其它的操作;此外,在實時控制系統中,若采用查詢傳送方式,由於一個外設的輸入/輸出操作未處理完畢就不能處理下一個外設的輸入/輸出,故不能達到實時處理的要求。因此,查詢傳送方式有兩個突出的缺點:浪費CPU時間,實時性差。所以,查詢傳送方式適用於數據輸入/輸出不太頻繁且外設較少、對實時性要求不高的情況。 
    不論是無條件傳送方式還是查詢傳送方式,都不能發現和處理預先無法估計的錯誤和異常情況。為了提高CPU的效率、增強系統的實時性,並且能對隨機出現的各種異常情況做出及時反應,通常采用中斷傳送方式。 
    7.2.2 中斷傳送方式 
    中斷傳送方式是指當外設需要與CPU進行信息交換時,由外設向CPU發出請求信號,使CPU暫停正在執行的程序,轉去執行數據的輸入/輸出操作,數據傳送結束后,CPU再繼續執行被暫停的程序。 
    查詢傳送方式是由CPU來查詢外設的狀態,CPU處於主動地位,而外設處於被動地位。中斷傳送方式則是由外設主動向CPU發出請求,等候CPU處理,在沒有發出請求時,CPU和外設都可以獨立進行各自的工作。目前的微處理器都具有中斷功能,而且已經不僅僅局限於數據的輸入/輸出,而是在更多的方面有重要的應用。例如實時控制、故障處理以及BIOS和DOS功能調用等。有關中斷技術的具體內容將在下一節做介紹。 
    中斷傳送方式的優點是:CPU不必查詢等待,工作效率高,CPU與外設可以並行工作;由於外設具有申請中斷的主動權,故系統實時性比查詢方式要好得多。但采用中斷傳送方式的接口電路相對復雜,而且,每進行一次數據傳送就要中斷一次CPU。CPU每次響應中斷后,都要轉去執行中斷處理程序,都要進行斷點和現場的保護和恢復,浪費了很多CPU的時間。故這種傳送方式一般適合於少量的數據傳送。對於大批量數據的輸入/輸出,可采用高速的直接存儲器存取方式,即DMA方式。 
    7.2.3 直接存儲器存取(DMA)傳送方式 
    一.DMA傳送方式簡介 
    DMA傳送方式是在存儲器和外設之間、存儲器和存儲器之間直接進行數據傳送(如磁盤與內存間交換數據、高速數據采集、內存和內存間的高速數據塊傳送等),傳送過程無需CPU介入,這樣,在傳送時就不必進行保護現場等一系列額外操作,傳輸速度基本取決於存儲器和外設的速度。DMA傳送方式需要一個專用接口芯片DMA控制器(DMAC)對傳送過程加以控制和管理。進行DMA傳送期間,CPU放棄總線控制權,將系統總線交由DMAC控制,由DMAC發出地址及讀/寫信號來實現高速數據傳輸。傳送結束后DMAC再將總線控制權交還給CPU。一般微處理器都設有用於DMA傳送的聯絡線。 
    DMAC中主要包括一個控制狀態寄存器、一個地址寄存器和一個字節計數器,在傳送開始前先要對這些寄存器進行初始化,一旦傳送開始,整個過程便全部由硬件實現,所以數據傳送速率非常高。DMAC的基本結構及其與系統的連接如圖7.9所示。 
    二.DMA控制器的工作方式 
    DMAC一般可以有如下幾種工作方式: 
    1. 單字節傳輸方式 
    該方式下,DMAC每次控制總線后只傳輸一個字節,傳輸完后即釋放總線控制權。這樣CPU至少可以得到一個總線周期,並進行有關操作。 
    2. 成組傳輸方式(塊傳輸方式) 
    采用這種方式,DMAC每次控制總線后都連續傳送一組數據,待所有數據全部傳送完后再釋放總線控制權。顯然,成組傳輸方式的數據傳輸率要比單字節傳輸方式高。但是,成組傳輸期間CPU無法進行任何需要使用系統總線的操作。 
    3. 請求傳輸方式 
    該方式下,每傳輸完一個字節,DMAC都要檢測I/O接口發來的DMA請求信號是否有效。若有效,則繼續進行DMA傳輸;否則就暫停傳輸,將總線控制權交還給CPU,直至DMA請求信號再次變為有效,再從剛才暫停的那一點繼續傳輸。 下面將以成組傳輸方式為例介紹DMA操作的基本過程。 
    三.DMA操作的基本過程
    1. DMAC的初始化 DMAC的初始化主要做如下幾方面工作: 
    (1)指定數據的傳送方向。即指定外設對存儲器是做讀操作還是寫操作,這就要對控制/狀態寄存器中的相應控制位置數。 
    (2)指定地址寄存器的初值。即給出存儲器中用於DMA傳送的數據區的首地址。 
    (3)指定計數器的初值。即明確有多少數據需要傳送。 
    2. DMA數據傳送 
    DMA數據傳送(以數據輸入為例)按以下步驟進行: 
    (1)外圍設備發選通脈沖,把輸入數據送入緩沖寄存器,並使DMA請求觸發器置1; 
    (2)DMA請求觸發器向控制/狀態端口發准備就緒信號,同時向DMA控制器發DMA請求信號; 
    (3)DMA控制器向CPU發出總線請求信號(HOLD); 
    (4)CPU在完成了現行機器周期后,即響應DMA請求,發出總線允許(HLDA),並由DMA控制器發出DMA響應信號,使DMA請求觸發器復位。此時,由DMA控制器接管系統總線; 
    (5)DMA控制器發出存儲器地址,並在數據總線上給出數據,隨后在讀/寫控制信號線上發出寫的命令; 
    (6)來自外設的數據被寫入相應存儲單元; 
    (7)每傳送一個字節,DMA控制器的地址寄存器加1,從而得到下一個地址,字節計數器減1。回到(5),傳送下一個數據。如此循環,直到計數器的值為0,數據傳送完畢。 
    3. DMA結束 
    DMA傳送完畢,由DMAC撤消總線請求信號,從而結束DMA操作。CPU撤消總線允許信號,恢復對總線的控制。 
    前面介紹的三種傳送方式各有利弊,在實際使用時,要根據具體情況選擇既能滿足要求,又盡可能簡單的方式。

http://cs.xiyou.edu.cn:84/wjyl/OnlineClass/7.2.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM