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

更新 發佈閱讀 2 分鐘

直接記憶體存取(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
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
13會員
222內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/04/01
多核心,是指單個積體電路中建置兩個或以上的獨立實體中央處理單元(Core),這些Core可以分別獨立地執行程式指令,以平行運算的概念加快程式執行速度。 本章節將大概介紹有關此單元相關的一些知識內容。
Thumbnail
2025/04/01
多核心,是指單個積體電路中建置兩個或以上的獨立實體中央處理單元(Core),這些Core可以分別獨立地執行程式指令,以平行運算的概念加快程式執行速度。 本章節將大概介紹有關此單元相關的一些知識內容。
Thumbnail
2025/04/01
所謂中斷,是計算機系統中的一種機制,允許外部設備或內部事件暫停CPU當前的任務,轉而處理更緊急或重要的事件。中斷的目的是提高系統效率,讓CPU不必持續輪詢(polling)設備狀態,而是由設備主動通知CPU需要處理。 本章節將會完整帶領讀者了解其知識觀念。
Thumbnail
2025/04/01
所謂中斷,是計算機系統中的一種機制,允許外部設備或內部事件暫停CPU當前的任務,轉而處理更緊急或重要的事件。中斷的目的是提高系統效率,讓CPU不必持續輪詢(polling)設備狀態,而是由設備主動通知CPU需要處理。 本章節將會完整帶領讀者了解其知識觀念。
Thumbnail
2025/04/01
組合語言透過組譯程式轉換成機器碼,而轉換高階語言的方式有直譯與編譯。 本章節會讓讀者知道兩者的觀念與差異,在最後,我們會透過一張圖簡述程式碼的執行過程。
Thumbnail
2025/04/01
組合語言透過組譯程式轉換成機器碼,而轉換高階語言的方式有直譯與編譯。 本章節會讓讀者知道兩者的觀念與差異,在最後,我們會透過一張圖簡述程式碼的執行過程。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
動態規劃Dynamic Programming其實是 一種泛用的演算法思考方式與演算法建構框架。 動態規劃並不拘束於只能解課本上特定的的範例題。 只要我們能找出DP狀態定義、DP遞迴結構、初始條件(終止條件),就能適用動態規劃來解題,以數學的形式表達,並且在紙筆上或者電腦上、計算機上計算
Thumbnail
動態規劃Dynamic Programming其實是 一種泛用的演算法思考方式與演算法建構框架。 動態規劃並不拘束於只能解課本上特定的的範例題。 只要我們能找出DP狀態定義、DP遞迴結構、初始條件(終止條件),就能適用動態規劃來解題,以數學的形式表達,並且在紙筆上或者電腦上、計算機上計算
Thumbnail
隨著企業數位轉型的步伐加快,提升工作效率和降低成本成為了重要目標。 在這個過程中,RPA與API結合使用,為企業帶來了更高效、更智能的自動化解決方案。 RPAI 數位優化器將和大家一起探討RPA與API串接的應用,並分析其在不同領域中的實際效益。
Thumbnail
隨著企業數位轉型的步伐加快,提升工作效率和降低成本成為了重要目標。 在這個過程中,RPA與API結合使用,為企業帶來了更高效、更智能的自動化解決方案。 RPAI 數位優化器將和大家一起探討RPA與API串接的應用,並分析其在不同領域中的實際效益。
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
本文介紹了 MyISAM 和 InnoDB 儲存引擎原理的區別和比較,並從讀取效率和寫入效率、結構、任務以及操作等方面探討了兩者的差異。
Thumbnail
本文介紹了 MyISAM 和 InnoDB 儲存引擎原理的區別和比較,並從讀取效率和寫入效率、結構、任務以及操作等方面探討了兩者的差異。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News