zoukankan      html  css  js  c++  java
  • 【SPI】Polling Interrupt DMA

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

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

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

    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。

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

    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。

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

    適用於高速裝置

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

    缺點

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

    不適合high-bandwidth devices

    需要有interrupt signals和interrupt service routine存在 

    不適合high-bandwidth devices

    需要有DMA contro
  • 相关阅读:
    选择LDO的方法(转)
    详细讲解MOSFET管驱动电路(转)
    队列--参考源码(转)
    锂电池保护板原理(转)
    低电压锁定(UVLO) (转)
    i2c的时钟延展问题(转)
    I2C死锁原因及解决方法(转)
    记录cocos2d-x3.0版本号更改内容官方说明
    c#面试题总结
    【面试】【Spring常见问题总结】【07】
  • 原文地址:https://www.cnblogs.com/tony-ning/p/5358114.html
Copyright © 2011-2022 走看看