主要產品系列 |
中斷控制是計算機發展中一種重要的技術。最初它是為克服對I/O接口控制采用程序查詢所帶來的處理器低效率而產生的。中斷控制的主要優點是只有在I/O需要服務時才能得到處理器的響應,而不需要處理器不斷地進行查詢。由此,最初的中斷全部是對外部設備而言的,即稱為外部中斷(或硬件中斷)。但隨著計算機系統結構的不斷改進以及應用技術的提高,中斷的適用范圍也擴大,出現了所謂的內部中斷(或異常),是為解決機器運行時所出現的某些隨機事件及編程方便而出現的。因而形成了一個完整的中斷系統。中斷控制是所有計算機系統的一個核心模塊,不同的硬件平臺,有不同的中斷機制.不管怎樣,中斷機制最核心的部分是中斷向量表,每一種硬件體系根據自己的實現提供一張中斷向量表。
此向量表提供了所有支持的中斷定義以及相應的中斷服務程序,當發生異常時,首先要保存當前的處理器狀態,然后進入到相應的異常向量地址,一般來說在異常向量地址是一個跳轉指令,使程序進入相應的異常處理過程。
X86中,中斷向量表存儲于存儲器的前1024字節中,它包括256種不同的4字節中斷向量。
ARM中,中斷向量表存儲于存儲器的低端或者高端地址的前0x1c(依賴于硬件的具體配置),它支持7種類型的異常,其中第一個中斷向量是復位中斷向量,當系統復位后,從此開始重新執行。
在Motorola的68K中,中斷向量表占用存儲器的1024字節中,它包括256種不同的中斷向量。其地址根據VBR的配置的不同而不同,其中第一個中斷向量是復位中斷向量,當系統復位后,從此開始重新執行。
根據中斷向量表,可以把這些中斷具體分為同步中斷,異步中斷,軟中斷:
同步中斷(exception),也即是我們通常所說的異常(),是在CPU執行特定指令時出現的非法情況,它的產生是由于前面的CPU操作引起的,是同步發生的。比較典型的異常有:除零異常。一些體系結構下的復位中斷也可以算是一種異常。
異步中斷(interrupt):主要是由外部事件觸發的,這就是我們常說的中斷,它的發生不可預料的,是異步的。比如說,鍵盤中斷等。在不同的體系結構中,中斷機制也不一樣。一般可以分為可屏蔽中斷和非屏蔽中斷。
軟中斷(software interrupt ):在大多數硬件體系結構中,都提供軟中斷的功能,主要用于進入管理模式等的手段。
X86中,除前32個作為Intel專用中斷向量外,其他224作為用戶自定義中斷。0~31的向量對應于異常和非屏蔽中斷。32~47的向量(即由I/O設備引起的中斷)分配給屏蔽中斷。48~255的向量用來標識軟中斷。Linux只用了其中的一個(即128或0x80向量)用來實現系統調用。
ARM中,除了定義的5個異常外,有2個專門用于中斷,這2個中斷被分為快中斷和慢中斷。由于快中斷有專門的寄存器保存上下文,避免了許多上下文切換開銷,所以快中斷能夠比慢中斷快,而且在處理快中斷時,慢中斷會被屏蔽掉。這2個中斷提供了系統的所有中斷入口,系統查詢相應的中斷控制器來區分具體的中斷。
在Motorola的68K中,中斷向量表提供了7個中斷優先級和192個可分配的中斷向量,其中7級是不可屏蔽中斷。
相關閱讀:
聲明:本站部分內容根據互聯網資料整理而成,若侵犯您的權益,請聯系我們,我們會盡快處理。