概念
“Direct Memory Access(存儲器直接訪問)。這是指一種高速的數據傳輸操作,允許在外部設備和存儲器之間直接讀寫數據。整個數據傳輸操作在一個稱爲"DMA控制器"的控制下進行的。CPU除了在數據傳輸開始和結束時做一點處理外(開始和結束時候要做中斷處理),在傳輸過程中CPU可以進行其他的工作(前提是未設置停止CPU訪問)。這樣,在大部分時間裏,CPU和輸入輸出都處於並行操作。因此,使整個計算機系統的效率大大提高”。
DMA傳送方式是讓存儲器與外設、或外設與外設之間直接交換數據,不需要經過CPU的累加器中轉,減少了這個中間環節,並且內存地址的修改、傳送完畢的結束報告都是由硬件電路實現的,因此大大地提高了數據的傳輸速度。一個DMA傳送只需要執行一個DMA週期,相當於一個總線讀寫週期。
DMA是在專門的硬件( DMA)控制下,實現高速外設和主存儲器之間自動成批交換數據儘量減少CPU干預的輸入/輸出操作方式。
適用場合
DMA方式主要適用於一些高速的I/O設備。這些設備傳輸字節或字的速度非常快。對於這類高速I/O設備,如果用輸入輸出指令或採用中斷的方法來傳輸字節信息,會大量佔用CPU的時間,同時也容易造成數據的丟失。而DMA方式能使I/O設備直接和存儲器進行成批數據的快速傳送。
DMA傳送主要用於需要高速大批量數據傳送的系統中,以提高數據的吞吐量。如磁盤存取、圖像處理、高速數據採集系統、同步通信中的收/發信號等方面應用甚廣。通常只有數據流量較大(kBps或者更高)的外設才需要支持DMA能力,這些應用方面典型的例子包括視頻、音頻和網絡接口。
DMA控制器(DMAC)
DMA傳送雖然脫離CPU的控制,但並不是說DMA傳送不需要進行控制和管理。通常是採用DMA控制器來取代CPU,負責DMA傳送的全過程控制。目前DMA控制器都是可編程的大規模集成芯片。
DMA傳輸過程
1、當外設有DMA需求,並且準備就緒,就向DMAC控制器發出DMA請求信號DREQ。
DMA的工作方式 (因爲DMA和CPU都要使用總線,工作方式的區分也就是基於總線的分配方式)
1,停止CPU訪內;
總線全部給DMA使用。
2,周啓挪用方式;
週期挪用,又叫週期竊取,是指利用CPU不訪問存儲器的那些週期來實現DMA操作,此時DMA可以使用總線而不用通知CPU也不會妨礙CPU的工作。週期挪用並不減慢CPU的操作,但可能需要複雜的時序電路,而且數據傳輸過程是不連續的和不規則的。
(週期竊取,是DMA方式中由DMA接口向CPU申請佔用總線,佔用一個存取週期。)
與CPU暫停訪存的方式相比,它既實現了I/O傳送,又較好地發揮了主存與CPU的效率,是一種廣泛採用的方法。應該指出,I/O設備每挪用一個主存週期都要申請總線控制權、建立總線控制權和歸還總線控制級權。因此,儘管傳送一個字對主存而言只佔用一個主存週期,但對DMA接口而言,實質上要佔2—5個主存週期(由邏輯線路的延遲特性而定)。因此週期挪用的方法比較適合於I/O設備的讀寫週期大於主存週期的情況。
3,DMA與CPU交替訪內。
DMA傳輸方式
1,單字節傳輸方式;
一次DMA只傳輸一個字節,效率很低。但是在傳輸過程中CPU有機會獲取對總線的控制器。
2,數據塊傳輸方式;
數據以數據塊的方式進行傳輸。只要DREQ啓動就會連續地傳送數據塊。一次請求傳送一個數據塊,效率高。在數據的傳送期間,CPU長時間無法控制總線。
3,請求傳輸方式;
DREQ信號有效就連續傳輸數據,否則不能進行數據的傳輸。
4,級聯傳輸方式。
用於通過多個DMA控制器級聯以擴展通道。第一級只起優先權網絡的作用,實際的操作由第二級芯片完成。還可由第二級到第三級等。(多個DMAC)
DMA傳送類型
1,兩個設備之間;
2,設備和內存之間;(多數情況下,DMAC進行的是外設接口和內存之間的傳輸。)
3,內存和內存之間。
DMA技術的弊端
DMA傳送的優點是以增加系統硬件的複雜性和成本爲代價的,因爲DMA是用硬件控制代替軟件控制的。另外,DMA傳送期間CPU被掛起,部分或完全失去對系統總線的控制,這可能會影響CPU對中斷請求的及時響應與處理。因此,在一些小系統或速度要求不高、數據傳輸量不大的系統中,一般並不用DMA方式。
因爲DMA允許外設直接訪問內存,從而形成對總線的獨佔。這在實時性強的硬實時系統嵌入式開發中將會造成中斷延時過長。
參考網址:
http://weiqijun.blog.51cto.com/338163/71651/
http://baike.baidu.com/subview/32471/5048464.htm#reference-[1]-5048464-wrap