複製鏈接
請複製以下鏈接發送給好友

允許中斷

鎖定
在計算機科學中,中斷(Interrupt)是指處理器接收到來自硬件或軟件的信號,提示發生了某個事件,應該被注意,這種情況就稱為中斷。允許中斷是指處理機在處理當前中斷或其他進程時,允許響應來自外部中斷。
中文名
允許中斷
外文名
AllowInterrupt
學    科
計算機
定    義
允許其他中斷請求
有關術語
中斷
應    用
設備管理

允許中斷簡介

允許中斷是指處理機在處理當前中斷或進程時,中斷屏蔽寄存器沒有設定位掩碼來關閉,處理機可以根據中斷的性質和優先級來決定是否響應當前中斷請求。通常,在接收到來自外圍硬件(相對於中央處理器和內存)的異步信號,或來自軟件的同步信號之後,處理器將會進行相應的硬件/軟件處理,發出這樣的信號稱為進行中斷請求(interrupt request,IRQ)
這裏中斷可以是軟件中斷和硬件中斷。硬件中斷導致處理器通過一個運行信息切換(context switch)來保存執行狀態(以程序計數器和程序狀態字等寄存器信息為主);軟件中斷則通常作為CPU指令集中的一個指令,以可編程的方式直接指示這種運行信息切換,並將處理導向一段中斷處理代碼。

允許中斷分類

允許中斷硬件中斷:

可屏蔽中斷(maskable interrupt)。硬件中斷的一類,可通過在中斷屏蔽寄存器中設定位掩碼來關閉。
非可屏蔽中斷(non-maskable interrupt,NMI)。硬件中斷的一類,無法通過在中斷屏蔽寄存器中設定位掩碼來關閉。典型例子是時鐘中斷(一個硬件時鐘以恆定頻率—如50Hz—發出的中斷)。
處理器間中斷(interprocessor interrupt)。一種特殊的硬件中斷。由處理器發出,被其它處理器接收。僅見於多處理器系統,以便於處理器間通信或同步。
偽中斷(spurious interrupt)。一類不希望被產生的硬件中斷。發生的原因有很多種,如中斷線路上電氣信號異常,或是中斷請求設備本身有問題。

允許中斷軟件中斷

軟件中斷。是一條CPU指令,用以自陷一箇中斷。由於軟中斷指令通常要運行一個切換CPU至內核態(Kernel Mode/Ring 0)的子例程,它常被用作實現系統調用(System call)。
處理器通常含有一個內部中斷屏蔽位,並允許通過軟件來設定。一旦被設定,所有外部中斷都將被系統忽略。這個屏蔽位的訪問速度顯然快於中斷控制器上的中斷屏蔽寄存器,因此可提供更快速地中斷屏蔽控制。
如果一箇中斷使得機器處於一種確定狀態,則稱為精確中斷(precise interrupt)。精確中斷須保證:
程序計數器的值被保存在已知位置。
程序計數器所指向的指令之前的所有指令已被執行完畢。
程序計數器所指向的指令之後的所有指令不可被執行。如果中斷信號到來後而轉入處理前發生了任何針對寄存器/內存的更改,都必須予以還原。
程序計數器所指向的指令地執行狀態已知。
倘無法滿足以上條件,此中斷被稱作非精確中斷(imprecise interrupt)。
中斷儘管可以提高計算機處理性能,但過於密集的中斷請求/響應反而會影響系統性能。這類情形被稱作中斷風暴(interrupt storm)。

允許中斷允許中斷原因

允許中斷中斷優先級

在某一時刻有幾個中斷源同時發出中斷請求時,處理器只響應其中優先權最高的中斷源。當處理機正在運行某個中斷服務程序期間出現另一箇中斷源的請求時,如果後者的優先權低於前者,處理機不予理睬,反之,處理機立即響應後者,進入所謂的“嵌套中斷”。中斷優先權的排序按其性質、重要性以及處理的方便性決定,由硬件的優先權仲裁邏輯或軟件的順序詢問程序來實現。 [1] 

允許中斷不可屏蔽中斷

不能由程序控制其屏蔽,處理機一定要立即處理的中斷稱為非屏蔽中斷或不可屏蔽中斷。非屏蔽中斷主要用於斷電、電源故障等必須立即處理的情況.處理機響應中斷時。 [2] 

允許中斷中斷的種類

允許中斷狀態觸發

在依狀態觸發的中斷系統中,一個等待響應的中斷會在中斷請求線路上以特定的電位標示,如高電位(1)或低電位(0)。當一個設備希望發送中斷信號時,它驅動中斷請求線路至相應的電位,並在CPU發出強制停止命令或處理所請求的中斷事件之前始終保持。
一般而言,處理器在總線週期的特定時點響應中斷的輸出/ 輸入。如果在某次採樣時刻中斷尚未被觸發,則在下一次採樣前,處理器都不會認為有中斷髮生。可以應用這個特性,避免響應在噪音較高的線路上出現的偽中斷。
中斷設備可被設計成與其他設備共享一條狀態觸發中斷線路。中斷線路應該包含一個特定的升/降壓電阻,用於在無中斷請求時為線路電平復位。中斷設備在請求中斷時會保持中斷線路為有效電平,而沒有請求中斷時則令該線路置空。只要有一個或以上的設備發出中斷信號,線路都會處於有效的電平。
由於可共享線路的便利,一些應用傾向於使用該類中斷。當CPU檢測到中斷線路被斷言後,就會逐一檢查各共享設備,直至發現請求設備並處理之。當處理完畢後,繼續檢查中斷線路,倘中斷線路仍為有效電平則重複之前的步驟。在檢查中斷設備的順序上也可做一定規劃,比如優先檢查那些頻繁請求中斷的設備,以加快中斷處理,改善系統性能。
此類中斷模式也有嚴重問題。只要還有任何設備的中斷請求未被處理,線路就會一直保持有效電平狀態,而這將導致CPU沒有機會去探查其他設備所發生的狀態變化。推遲服務低優先級設備也不可行,因為這會防止對高優先級設備的探查。倘若在線路上有一個設備持續發送請求而CPU不知道怎樣對其進行服務,則這個設備就會持久並排他地佔有中斷線路。
早期的PCI(外設互連標準)標準出於上述效率層面的理由規定其周邊須使用狀態觸發中斷。

允許中斷邊沿觸發

在依邊沿觸發的中斷系統中,中斷設備通過向中斷線路發送一個脈衝來表示其中斷請求。脈衝可以為上升沿下降沿。在發送完脈衝後設備立即釋放中斷線路。如果這個脈衝太短,以至於I/O輪詢不足以確保知悉其存在,則有必要使用專門的硬件設備來輔助對邊沿觸發的探查。
中斷設備可被設計成與其他設備共享一條邊沿觸發中斷線路。中斷線路應該包含一個特定的上拉/下拉電阻,用於在無中斷請求時為線路電平復位。設備通過發送一個脈衝作為其中斷信號。如果多個設備在近乎相同的時間內發送脈衝,則會在線路上合併成一個信號。為防止中斷丟失,CPU必須在一個脈衝之後的下一個邊沿(如果脈衝為上升沿則其下一個邊沿就是下降沿)立即觸發。收到中斷請求後CPU立即查詢各中斷設備以定位中斷源。
邊沿觸發中斷不會遭受狀態觸發中斷在共享中斷引腳時所遇到的問題。低優先級設備的服務可被任意推遲,而高優先級設備的中斷請求仍會被CPU收到。一個即便是頻繁發生的偽中斷也不會影響正常設備的中斷請求。但是,邊沿觸發中斷容易丟失,特別是當中斷被有意屏蔽時。在不引入鎖存器的情況下,在屏蔽時段發送的中斷信號不可能被恢復。在早期的計算機系統中因為中斷丟失而導致處理不能繼續的情況時有發生。現代中斷硬件多包含有一個或一組中斷狀態鎖存器,用以暫存一逝而過的中斷請求。在對邊沿觸發中斷硬件進行編程時,應檢查這些中斷狀態寄存器以確保請求事件不會丟失。
已經過時的ISA(工業標準架構)標準使用邊沿觸發中斷,但不規定其實現必須能夠共享線路。

允許中斷混合模式

一些系統使用狀態觸發與邊沿觸發兼顧的混合中斷模式。其硬件不但探測脈衝,也驗證中斷信號是否保持一段時間。
非可屏蔽中斷多使用混合模式。由於非可屏蔽中斷多與重要的系統異常事件相關,十分有必要確保對其中斷信號的捕捉快速而正確。這種兩步驟探查方式能夠有效減輕錯誤中斷或遺失中斷給系統帶來的影響。

允許中斷消息信號

消息信號式中斷並不直接通過對特定物理線路進行斷言/發送脈衝來通知一箇中斷。這類中斷設備通過在某種通訊媒介(一般是計算機總線)上發送一個有邏輯含義的消息(一串/排比特碼)來實現中斷請求。中斷消息可以是通訊總線協議中專門為中斷預留的類型,也可以是一個現有的類型,如內存寫操作。
消息信號式中斷在行為上與邊沿觸發中斷類似,因為它們都是發送一個瞬間的信號。中斷處理軟件的對此類中斷的處理方式也類似於邊沿觸發中斷:如果兩個消息相同,則可以合併。消息信號中斷向量(中斷處理程序的地址)也可以共享,就如同物理線路可以被共享一般。
由於中斷消息的識別基於特定的比特碼序列而不是物理線路上的單個信號,可以有效地通過設定不同的中斷比特碼來劃分和處理不同類型的中斷。另外,使用串行或並行總線都可以傳遞中斷消息。
由於無論狀態觸發還是邊沿觸發都在使用共享線路時存在線路競爭問題,而物理線路數本身也是稀缺資源,不可能被各中斷源分別獨佔,所以消息信號中斷是一個解決此問題的較好替代方案。消息信號中斷的本質差別在於其中斷請求運行在單純的物理線路之上,具有特定的邏輯含義。這種區別好比計算機網絡體系中第一層(物理層)和第二層(鏈路層)的差別。使用具有邏輯含義的中斷請求,可以把諸請求區分開來,形成多條虛通路,而運行於一條物理總線之上。PCI Express串行總線標準即使用此種中斷。
參考資料
  • 1.    《中國電力百科全書》編輯委員會.中國電力百科全書:中國電力出版社,2001
  • 2.    《數學辭海》編輯委員會.:,2002.數學辭海 第五卷:中國科學技術出版社,2002