FIQ和IRQ

來源:互聯網
上載者:User

文章1-FIQ和IRQ區別

FIQ和IRQ是兩種不同類型的中斷,ARM為了支援這兩種不同的中斷,提供了對應的叫做FIQ和IRQ處理器模式(ARM有7種處理模式)。

一般的中斷控制器裡我們可以配置與控制器相連的某個中斷輸入是FIQ還是IRQ,所以一個中斷是可以指定為FIQ或者IRQ的,為了合理,要求系統更快響應,自身處理所耗時間也很短的中斷設定為FIQ,否則就設定了IRQ。

如果該中斷設定為了IRQ,那麼當該中斷產生的時候,中斷處 理器通過IRQ請求線告訴ARM,ARM就知道有個IRQ中斷來了,然後ARM切換到IRQ模式運行。類似的如果該中斷設定為FIQ,那麼當該中斷產生的 時候,中斷處理器通過FIQ請求線告訴ARM,ARM就知道有個FIQ中斷來了,然後切換到FIQ模式運行。

簡單的對比的話就是FIQ比IRQ快,為什麼快呢?

ARM的FIQ模式提供了更多的banked寄存器,r8到 r14還有SPSR,而IRQ模式就沒有那麼多,R8,R9,R10,R11,R12對應的banked的寄存器就沒有,這就意味著在ARM的IRQ模式 下,中斷處理常式自己要儲存R8到R12這幾個寄存器,然後退出中斷處理時程式要恢複這幾個寄存器,而FIQ模式由於這幾個寄存器都有banked寄存 器,模式切換時CPU自動儲存這些值到banked寄存器,退出FIQ模式時自動回復,所以這個過程FIQ比IRQ快.

FIQ比IRQ有更高優先順序,如果FIQ和IRQ同時產生,那麼FIQ先處理。

在symbian系統裡,當CPU處於FIQ模式處理FIQ 中斷的過程中,預取指令異常,未定義指令異常,軟體中斷全被禁止,所有的中斷被屏蔽。所以FIQ就會很快執行,不會被其他異常或者中斷打斷,所以它又比 IRQ快了。而IRQ不一樣,當ARM處理IRQ模式處理IRQ中斷時,如果來了一個FIQ插斷要求,那正在執行的IRQ中斷處理常式會被搶斷,ARM切 換到FIQ模式去執行這個FIQ,所以FIQ比IRQ快多了。

另外FIQ的入口地址是0x1c,IRQ的入口地址是0x18。

原文地址:http://www.cublog.cn/u2/83842/showart_1404725.html


文章2-ARM的FIQ為何比IRQ快:

1。FIQ的優先順序比IRQ高。

2。FIQ模式下,比IRQ模式多了幾個獨立的寄存器。

不要小看這幾個寄存器,ARM在編譯的時候,如果你FIQ中斷處理常式足夠用這幾個獨立的寄存器來運作,它就不會進行通用寄存器的壓棧,這樣也省了一些時間。

3。FIQ的中斷向量地址在0x0000001C,而IRQ的在0x00000018。(也有的在FFFF001C以及FFFF0018)

寫過完整彙編系統的都比較明白這點的差別,18隻能放一條指令,為了不與1C處的FIQ衝突,這個地方只能跳轉,而FIQ不一樣,1C以後沒有任何中斷向量表了,這樣可以直接在1C處放FIQ的中斷處理常式,由於跳轉的範圍限制,至少少了一條跳轉指令。

4。IRQ和FIQ的響應延遲有區別

IRQ的響應並不及時,從Verilog模擬來看,IRQ會延遲幾個指令周期才跳轉到中斷向量處,看起來像是在等預取的指令執行完。FIQ的響應不清楚,也許比IRQ快。

原文地址:http://blog.csdn.net/masxcy/archive/2009/06/26/4301723.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.