生活随笔
收集整理的這篇文章主要介紹了
DMA摘记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.特點
PIO模式下硬盤和內存之間的數據傳輸是由CPU來控制的;而在DMA模式下,CPU只須向DMA控制器下達指令,讓DMA控制器來處理數據的傳送,數據傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率。DMA模式與PIO模式的區別就在于,DMA模式不過分依賴CPU,可以大大節省系統資源,二者在傳輸速度上的差異并不十分明顯。DMA模式又可以分為Single-Word DMA(單字節DMA)和Multi-Word DMA(多字節DMA)兩種,其中所能達到的最大傳輸速率也只有16.6MB/s。 DMA 傳送方式的優先級高于程序中斷,兩者的區別主要表現在對CPU的干擾程度不同。程序中斷請求不但使CPU停下來,而且要CPU執行中斷服務程序為中斷請求服務,這個請求包括了對斷點和現場的處理以及CPU與外設的傳送,所以CPU付出了很多的代價;DMA請求僅僅使CPU暫停一下,不需要對斷點和現場的處理,并且是由DMA控制外設與主存之間的數據傳送,無需CPU的干預,DMA只是借用了一點CPU的時間而已。還有一個區別就是,CPU對這兩個請求的響應時間不同,對程序中斷請求一般都在執行完一條指令的時鐘周期末尾響應,而對DMA的請求,由于考慮它的高效性,CPU在每條指令執行的各個階段之中都可以讓給DMA使用,是立即響應。
DMA主要由硬件來實現,此時高速外設和內存之間進行數據交換不通過CPU的控制,而是利用系統總線。DMA方式是I/O系統與主機交換數據的主要方式之一,另外還有程序查詢方式和中斷方式。
2.DMA工作原理
DMA 是所有現代電腦的重要特色,他允許不同速度的硬件裝置來溝通,而不需要依于 CPU 的大量 中斷 負載。否則,CPU 需要從 來源 把每一片段的資料復制到 暫存器,然后把他們再次寫回到新的地方。在這個時間中,CPU 對于其他的工作來說就無法使用。 DMA 傳輸重要地將一個內存區從一個裝置復制到另外一個。
當 CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器 來實行和完成。典型的例子就是移動一個外部內存的區塊到芯片內部更快的內存去。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對于高效能 嵌入式系統 算法和網絡是很重要的。
3.示例
舉個例子,PC ISA DMA 控制器擁有 8 個 DMA 通道,其中的 7 個通道是可以讓 PC 的 CPU 所利用。每一個 DMA 通道有一個 16位元 位址暫存器和一個 16 位元 計數暫存器。
要初始化資料傳輸時,裝置驅動程式一起設定 DMA 通道的位址和計數暫存器,以及資料傳輸的方向,讀取或寫入。然后指示 DMA 硬件開始這個傳輸動作。當傳輸結束的時候,裝置就會以中斷的方式通知 CPU。 "分散-收集" (Scatter-gather) DMA 允許在一次單一的 DMA 處理中傳輸資料到多個內存區域。相當于把多個簡單的 DMA 要求串在一起。再一次,這個動機是要減輕 CPU 的多次輸出輸入中斷和資料復制任務。 DRQ 意為 DMA 要求;DACK 意為 DMA 確認。這些符號一般在有 DMA 功能的電腦系統硬件概要上可以看到。他們表示了介于 CPU 和 DMA 控制器之間的電子訊號傳輸線路。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的DMA摘记的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。