DMA 資料傳輸的必要性


微型計算機系統基本上由三個模組組成

  • 微處理器
  • 微處理器的儲存器,例如 EPROM 和 RAM,以及
  • 它們連線的 I/O 埠。

下面指出了可能的資料傳輸方式。

  • 儲存器和微處理器之間的資料傳輸是使用 LDA 和 STA 指令進行的。

  • 微處理器和 I/O 埠之間的資料傳輸也是藉助於兩個指令 IN 和 OUT 進行的。

  • 透過 DMA 資料傳輸,資料在輸入輸出埠和儲存器之間傳輸。

如果用於從記憶體位置 3456H 讀取資料然後寫入到輸出埠號 50H 的資料傳輸僅需 13 個時鐘週期(使用 LDA 3456H 指令從記憶體位置 3456H 讀取)和 10 個時鐘週期(寫入到輸出埠號 50H),總共 23 個時鐘週期。如果處理器以 3MHz 的內部頻率工作,時鐘週期為 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 資料傳輸過程中起著重要的作用。

為了獲得平均值、最大值和最小值等統計資料,我們使用模數轉換器。使用程式資料傳輸方案,需要 1000 × 7.66 = 7660μs 的處理器時間。但令人驚訝的是,使用 DMA 資料傳輸方案只需要 1000 × 1.33 = 1330μs 的時間。因此,當需要在記憶體和 I/O 埠之間傳輸大量資料時,透過微處理器路由每個位元組會花費大量時間,為了縮短時間,I/O 埠可以直接訪問記憶體進行資料傳輸。此方案稱為 DMA 資料傳輸。

更新於:2019年7月30日

2K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告