DMA爲什麼比輪詢、中斷方式性能要卓越很多?

如果是計算機專業出身的同學,都聽過一個概念,中斷比輪詢要好、DMA比中斷要好。

中斷比輪詢要好,是容易理解的:

在輪詢中,CPU是死循環執行對IO端口的檢測,這種模式,大量的浪費了CPU(因爲CPU除了處理外設之外,更多的時間應該用於對內存的操作,如計算等)。

而中斷方式,則沒有死循環的浪費,CPU可以正常做別的事情,等到外部設備數據來了,就會主動由設備控制器發出中斷(設備控制器預先需要註冊對應的中斷控制號)

但是,爲什麼DMA比中斷要好呢?

嘿嘿。不幸的是,這個問題本身就是錯的。oh my god!

DMA和中斷不是同一個層級的概念。DMA本身也會用到中斷。

DMA之所以比中斷快,是因爲,在DMA機制下,進行外設讀寫操作的指令是由DMA控制器完成,而不是由主機的CPU完成!

DMA方式下,中斷已經成爲了,DMA開始或完成的一個通知信號(讀寫指令由DMA控制器完成)。而在“純中斷”模式下,中斷是啓動主機CPU開始外設讀寫的信號(讀寫指令out_p(),in_p()由主機CPU執行)!


發佈了171 篇原創文章 · 獲贊 9 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章