發布日期:2022-04-20 點擊率:41
DMA方式,Direct Memory Access,也稱為成組數據傳送方式,有時也稱為直接內存操作。DMA方式在數據傳送過程中,沒有保存現場、恢復現場之類的工作。由于CPU根本不參加傳送操作,因此就省去了CPU取指令、取數、送數等操作。內存地址修改、傳送字 個數的計數等等,也不是由軟件實現,而是用硬件線路直接實現的。所以DMA方式能滿足高速I/O設備的要求,也有利于CPU效率的發揮。
一個設備接口試圖通過總線直接向另一個設備發送數據(一般是大批量的數據),它會先向CPU發送DMA請求信號。外設通過DMA的一種專門接口電路――DMA控制器(DMAC),向CPU提出接管總線控制權的總線請求,CPU收到該信號后,在當前的總線周期結束后,會按DMA信號的優先級和提出DMA請求的先后順序響應DMA信號。CPU對某個設備接口響應DMA請求時,會讓出總線控制權。于是在DMA控制器的管理下,外設和存儲器直接進行數據交換,而不需CPU干預。數據傳送完畢后,設備接口會向CPU發送DMA結束信號,交還總線控制權。
DMA方式的主要優點是速度快。
基本操作實現DMA傳送的基本操作如下:1、外設可通過DMA控制器向CPU發出DMA請求;2、CPU響應DMA請求,系統轉變為DMA工作方式,并把總線控制權交給DMA控制器;3、由DMA控制器發送存儲器地址,并決定傳送數據塊的長度;4、執行DMA傳送;5、DMA操作結束,并把總線控制權交還CPU。
用途DMA方式主要適用于一些高速的I/O設備。這些設備傳輸字節或字的速度非常快。對于這類高速I/O設備,如果用輸入輸出指令或采用中斷的方法來傳輸字節信息,會大量占用CPU的時間,同時也容易造成數據的丟失。而DMA方式能使I/O設備直接和存儲器進行成批數據的快速傳送。DMA控制器或接口一般包括四個寄存器:1:狀態控制寄存器、2:數據寄存器、3:地址寄存器、4:字節計數器。這些寄存器在信息傳送之前需要進行初始化設置。即在輸入輸出程序中用匯編語言指令對各個寄存器寫入初始化控制字。
DMA 是所有現代電腦的重要特色,他允許不同速度的硬件裝置來溝通,而不需要依于 CPU 的大量 中斷 負載。否則,CPU 需要從 來源 把每一片段的資料復制到暫存器,然后把他們再次寫回到新的地方。在這個時間中,CPU 對于其他的工作來說就無法使用。DMA 傳輸將一個內存區從一個裝置復制到另外一個, CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA控制器來實行和完成。典型的例子就是移動一個外部內存的區塊到芯片內部更快的內存去。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。
DMA 傳輸對于高效能嵌入式系統算法和網絡是很重要的。舉個例子,PC ISA DMA控制器擁有 8 個 DMA 通道,其中的 7 個通道是可以讓 PC 的 CPU 所利用。每一個 DMA 通道有一個 16位元 位址暫存器和一個 16 位元計數暫存器。要初始化資料傳輸時,裝置驅動程式一起設定 DMA 通道的位址和計數暫存器,以及資料傳輸的方向,讀取或寫入。然后指示 DMA 硬件開始這個傳輸動作。當傳輸結束的時候,裝置就會以中斷的方式通知 CPU。但是,DMA傳輸方式只是減輕了CPU的工作負擔;系統總線仍然被占用。特別是在傳輸大容量文件時,CPU的占用率可能不到10%,但是用戶會覺得運行部分程序時系統變得相當的緩慢。主要原因就是在運行這些應用程序(特別是一些大型軟件),操作系統也需要從系統總線傳輸大量數據;故造成過長的等待時間。
下一篇: PLC、DCS、FCS三大控
上一篇: DMA工作過程