MIPS 74K Core 的異常和中斷

    異常

    74k內核處理各種的異常,包括計算溢出,TLB缺失,IO口的中斷和系統調用。當CPU接收到一箇中斷,通常的處理過程是,掛起現有的指令,並且進入kernel模式,禁止中斷,並把產生異常時,運行到的指令的地址保存到EPC上去(便以以後異常返回),之後就是跳到中斷handler上去了。

    這個handler首先保存了cpu的上下文,包括pc,當前的操作模式,還有中斷的狀態(允許還是禁止)。

    異常包括了精確的和非精確的異常,精確的異常時需要保存返回地址到EPC的(一些可處理和恢復的異常,如TLB缺失,IO中斷等等)。非精確異常就是不需要返回的(如總線錯誤,CP2異常等等)。

   

    中斷

    MIPS32版本1支持兩個軟件中斷,6個硬件中斷,還有一個特殊用途的時鐘中斷。時鐘中斷是作爲外部中斷提供給內核用的,使用的是硬件中斷號5,這個時鐘中斷一般作爲操作系統的tick。

    中斷可以被general exception vector(offset 0x180)或者special interrupt vector (0x200)中斷向量處理,至於使用哪一個,通過CauseIV來決定,軟件可以通過判斷這個位來區分。

    另外在74K內核中,還有一個性能計數器,這個計數器可以被配置成產生多種事件,當這個計數器的MSB字段被置位時,這個計數器會產生一個類似timer的中斷。可以給操作系統提供時鐘tick等。

    中斷模式

    74K內核支持3種中斷模式MIPS32版本2定義:

    1。兼容中斷模式(Interrupt Compatibility mode),和版本1的中斷模式兼容

    2。向量中斷模式(Vectored Interrupt (VI) mode),新增加的一種模式,爲了提高性能。這種中斷模式分配了一個GPR的 shadow set來提高中斷處理的性能,

          可以通過讀取Config3寄存器的VInt位來判斷是否支持這種模式。

    3。外部中斷控制器模式(External Interrupt Controller (EIC) mode),這種方式重新定義了中斷處理方式,爲優先中斷處理和向量中斷處理提供了充分的支持。就好像VI模式,這種模式也是特定體系結構纔有的,如74K,Config3寄存器的VEIC位標記是否支持這樣模式。對於74K內核,如果有外部的SI_EICP信號,VEIC會被置位,告訴內核有一個擴展的中斷控制器存在。

int

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