計算機概論-直接記憶體存取(DMA)

計算機概論-直接記憶體存取(DMA)

更新於 發佈於 閱讀時間約 3 分鐘

直接記憶體存取(Direct Memory Access, DMA)

DMA是一種用於高效傳輸資料的技術,允許外部設備直接與記憶體進行資料交換,而無需CPU的介入。這種機制大幅減輕了CPU的負擔,並提高了資料傳輸的效率。以下是DMA的基本原理詳細解說:

  • 在沒有DMA的情況下,CPU需要負責從I/O設備讀取資料並寫入記憶體,或從記憶體讀取資料並寫入I/O設備。
  • 這種方式會消耗大量CPU時間,降低系統整體性能。

DMA 的核心思想

DMA控制器(DMAC)作為一個獨立的硬體模組,負責管理I/O設備與記憶體之間的資料傳輸。

CPU只需初始化DMA控制器,設定傳輸參數(如起始地址、資料長度等),之後的傳輸過程由DMA控制器獨立完成。

在DMA傳輸期間,CPU並不介入控制記憶體與匯流排,而是直接由DMA控制器管理匯流排、並管理記憶體與I/O之間的資料傳輸。

DMA 的工作流程

(1) CPU初始化DMA控制器

CPU設定DMA控制器的參數,包括:

  • 來源地址:資料的起始位置(I/O設備或記憶體)。
  • 目標地址:資料的目的位置(記憶體或I/O設備)。
  • 傳輸長度:需要傳輸的資料量(通常以位元組為單位)。
  • 傳輸模式:例如單次傳輸、區塊傳輸等。

(2) DMA控制器請求匯流排使用權

DMA控制器向CPU發送匯流排請求(Bus Request, BR)或者(HOLD),請求接管系統匯流排的控制權。


(3) CPU釋放匯流排控制權

CPU完成當前指令後,釋放匯流排控制權,並向DMA控制器發送匯流排授權(Bus Grant, BG)或者(HLDA)。


(4) DMA控制器執行資料傳輸

DMA控制器接管匯流排,直接從來源地址讀取資料並寫入目標地址。

傳輸過程中,CPU可以執行其他任務,無需參與資料傳輸。


(5) 傳輸完成後的通知

當傳輸完成時,DMA控制器會向CPU發送終止信號,通知CPU傳輸已完成。系統匯流排控制權交還給CPU。

DMA 的系統方塊圖

raw-image

註: 常用的DMA控制器為 8237,是一顆40支接腳的直接記憶體存取控制晶片。


本頻道持續更新中(內容涵蓋前端程式設計入門、大學必備程式設計入門、電子系專業課程入門、數學微積分題解)如果身旁有相關科系的學生,不妨推薦一下喔~

相信這裡會是家教或線上課程之外,高中、大學生系統性綜合學習的好選擇。

最後感謝您的觀看!

avatar-img
電資鼠 - 您的學習好夥伴
8會員
194內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!
多核心,是指單個積體電路中建置兩個或以上的獨立實體中央處理單元(Core),這些Core可以分別獨立地執行程式指令,以平行運算的概念加快程式執行速度。 本章節將大概介紹有關此單元相關的一些知識內容。
所謂中斷,是計算機系統中的一種機制,允許外部設備或內部事件暫停CPU當前的任務,轉而處理更緊急或重要的事件。中斷的目的是提高系統效率,讓CPU不必持續輪詢(polling)設備狀態,而是由設備主動通知CPU需要處理。 本章節將會完整帶領讀者了解其知識觀念。
組合語言透過組譯程式轉換成機器碼,而轉換高階語言的方式有直譯與編譯。 本章節會讓讀者知道兩者的觀念與差異,在最後,我們會透過一張圖簡述程式碼的執行過程。
多核心,是指單個積體電路中建置兩個或以上的獨立實體中央處理單元(Core),這些Core可以分別獨立地執行程式指令,以平行運算的概念加快程式執行速度。 本章節將大概介紹有關此單元相關的一些知識內容。
所謂中斷,是計算機系統中的一種機制,允許外部設備或內部事件暫停CPU當前的任務,轉而處理更緊急或重要的事件。中斷的目的是提高系統效率,讓CPU不必持續輪詢(polling)設備狀態,而是由設備主動通知CPU需要處理。 本章節將會完整帶領讀者了解其知識觀念。
組合語言透過組譯程式轉換成機器碼,而轉換高階語言的方式有直譯與編譯。 本章節會讓讀者知道兩者的觀念與差異,在最後,我們會透過一張圖簡述程式碼的執行過程。