直接記憶體訪問 (DMA) 概念
微型計算機系統基本上由三個模組組成
- 微處理器
- 微處理器的儲存器,如 EPROM 和 RAM
- 它們連線的 I/O 埠。
可能的資料傳輸如下所示。
儲存器和微處理器之間的資料傳輸使用 LDA 和 STA 指令進行。
微處理器和 I/O 埠之間的資料傳輸也透過兩個指令 IN 和 OUT 進行。
透過 DMA 資料傳輸,資料在輸入輸出埠和記憶體之間傳輸。

圖:該圖顯示了微型計算機系統中可能的資料傳輸方式。
為了執行微處理器和記憶體之間或 I/O 埠和處理器之間的資料傳輸,程式的指令被執行,這些資料傳輸被稱為程式化資料傳輸,在過程中涉及少量資料傳輸時已被使用。
微處理器和記憶體都由半導體晶片製成,其工作速度與電子速度相當。因此,在微處理器和記憶體之間傳輸資料並不是什麼問題。如果出現記憶體速度低於微處理器的這種情況,則使用的處理器必須插入等待狀態。除此之外,不會出現其他問題。
諸如 8255、8212 等埠也由半導體晶片製成,這些晶片以電子速度工作。我們使用它們來連線本質上是機電的輸入輸出裝置,因此微處理器的速度變慢,這導致微處理器和輸入輸出埠之間的資料傳輸變得非常複雜。
如果用於從記憶體位置 3456H 讀取資料的資料傳輸,然後寫入輸出埠號 50H,則僅需 13 個時鐘週期即可使用 LDA 3456H 指令從記憶體位置 3456H 讀取資料,以及 10 個時鐘週期即可寫入輸出埠號 50H。因此總共需要 23 個時鐘週期。如果處理器以 3-MHz 的內部頻率工作,時鐘週期為 0.33μs,則需要 7.66μs 的時間才能在外部工作。透過使用程式資料傳輸方案,讀取輸入埠 40H 並寫入記憶體位置輸入埠 2345H
如果我們使用 DMA 資料傳輸從記憶體位置 3456H 讀取資料並寫入輸出埠號 50H,則只需要四個時鐘週期,這會導致僅 1.33μs 的時間。一些裝置,如硬碟和軟盤,可以以非常快的速度執行資料傳輸。一個 1.44 MB 的軟盤,以 360 rpm 的速度旋轉,每軌 18 個扇區,可以儲存多達 512 位元組的記憶體,當資料傳輸速率達到每秒 54K 位元組時,或大約每位元組 19μs。硬碟可以輕鬆地將資料傳輸速度提高至少十倍。因此,它變成了每位元組 1.9μs。當 DMA 資料傳輸變得強制性時,就會出現這種情況。在程式化資料傳輸過程中,我們需要每位元組 7.66μs,只有 4 個位元組會從硬碟中重複出現。因此,可以得出結論,I/O 裝置在 DMA 資料傳輸過程中起著重要作用。
為了獲得平均值、最大值和最小值等統計資料,我們使用模數轉換器。使用程式化資料傳輸方案,需要 1,000 × 7.66 = 7,660μs 的處理器時間。但令人驚訝的是,使用 DMA 資料傳輸方案只需要 1,000 × 1.33 = 1,330μs 的時間。因此,當需要在記憶體和 I/O 埠之間傳輸大量資料時,透過微處理器路由每個位元組需要花費大量時間,因此為了在較短的時間內完成工作,可以將 I/O 埠直接訪問到記憶體以進行資料傳輸。此方案稱為 DMA 資料傳輸。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP