【SPI】Polling Interrupt DMA

三種將資料在I/O間傳送的方法有async

1. Polling
2. Interrupt-driven I/O
3. DMA(Direct Memory Access)spa

 

Polling:最簡單的方式讓I/O device與CPU溝通。I/O device只要將information放進status register,CPU會週期性的檢查並取得information來得知須要服務的device。orm

Interrupt-driven I/O:利用interrupt的機制,當一個I/O device須要服務時,會發出interrupt來通知CPU。一個I/O interrupt對於指令的執行是asynchronous,Control unit須要在執行一個新指令時檢查是否有pending I/O interrupt。I/O interrupt也會傳達更多訊息,如哪個device發出的interrupt和它的priority。ci

DMA(Direct Memory Access):提供一個device controller,讓I/O device能夠直接在記憶體作資料的傳輸,不須要CPU的參與。it

DMA transfer的三個步驟
1. CPU要初始化DMA controller,包括提供I/O device的名稱、執行何種運算、記憶體位置以及所要傳送的bytes數。
2. DMA開始運做。若是request須要多於一次的transfer在bus上,DMA unit會產生下一個memory address和初始下一次的transfer。
3. 一旦DMA transfer完成,DMA controller發出一個interrupt給CPU。io

 

 

優缺點比較
   Polling  Interrupt-driven I/O DMA 
優點 簡單容易執行,可利用軟體來更改CPU polling的順序 不用浪費許多時間在polling上面

適用於高速裝置table

不用浪費許多時間在polling上面 form

缺點

因為CPU速度遠快於I/O device,會浪費許多時間在polling上service

不適合high-bandwidth devicesrequest

須要有interrupt signals和interrupt service routine存在 

不適合high-bandwidth devices

須要有DMA contro
相關文章
相關標籤/搜索