在計算機科學中,中斷(Interrupt)是指處理器接收到來自硬體或軟體的信號,提示發生了某個事件,應該被注意,這種情況就稱為中斷。允許中斷是指處理機在處理當前中斷或其他進程時,允許回響來自外部中斷。
基本介紹
- 中文名:允許中斷
- 外文名:Allow Interrupt
- 學科:計算機
- 定義:允許其他中斷請求
- 有關術語:中斷
- 套用:設備管理
簡介,分類,硬體中斷(Hardware Interrupt):,軟體中斷(Software Interrupt),允許中斷原因,中斷優先權,不可禁止中斷,中斷的種類,狀態觸發,邊沿觸發,混合模式,訊息信號(Message-signalled),
簡介
允許中斷是指處理機在處理當前中斷或進程時,中斷禁止暫存器沒有設定位掩碼來關閉,處理機可以根據中斷的性質和優先權來決定是否回響當前中斷請求。通常,在接收到來自外圍硬體(相對於中央處理器和記憶體)的異步信號,或來自軟體的同步信號之後,處理器將會進行相應的硬體/軟體處理,發出這樣的信號稱為進行中斷請求(interrupt request,IRQ)
這裡中斷可以是軟體中斷和硬體中斷。硬體中斷導致處理器通過一個運行信息切換(context switch)來保存執行狀態(以程式計數器和程式狀態字等暫存器信息為主);軟體中斷則通常作為CPU指令集中的一個指令,以可程式的方式直接指示這種運行信息切換,並將處理導向一段中斷處理代碼。
分類
硬體中斷(Hardware Interrupt):
可禁止中斷(maskable interrupt)。硬體中斷的一類,可通過在中斷禁止暫存器中設定位掩碼來關閉。
非可禁止中斷(non-maskable interrupt,NMI)。硬體中斷的一類,無法通過在中斷禁止暫存器中設定位掩碼來關閉。典型例子是時鐘中斷(一個硬體時鐘以恆定頻率—如50Hz—發出的中斷)。
處理器間中斷(interprocessor interrupt)。一種特殊的硬體中斷。由處理器發出,被其它處理器接收。僅見於多處理器系統,以便於處理器間通信或同步。
偽中斷(spurious interrupt)。一類不希望被產生的硬體中斷。發生的原因有很多種,如中斷線路上電氣信號異常,或是中斷請求設備本身有問題。
軟體中斷(Software Interrupt)
軟體中斷。是一條CPU指令,用以自陷一個中斷。由於軟中斷指令通常要運行一個切換CPU至核心態(Kernel Mode/Ring 0)的子例程,它常被用作實現系統調用(System call)。
處理器通常含有一個內部中斷禁止位,並允許通過軟體來設定。一旦被設定,所有外部中斷都將被系統忽略。這個禁止位的訪問速度顯然快於中斷控制器上的中斷禁止暫存器,因此可提供更快速地中斷禁止控制。
如果一個中斷使得機器處於一種確定狀態,則稱為精確中斷(precise interrupt)。精確中斷須保證:
程式計數器的值被保存在已知位置。
程式計數器所指向的指令之前的所有指令已被執行完畢。
程式計數器所指向的指令之後的所有指令不可被執行。如果中斷信號到來後而轉入處理前發生了任何針對暫存器/記憶體的更改,都必須予以還原。
程式計數器所指向的指令地執行狀態已知。
倘無法滿足以上條件,此中斷被稱作非精確中斷(imprecise interrupt)。
中斷儘管可以提高計算機處理性能,但過於密集的中斷請求/回響反而會影響系統性能。這類情形被稱作中斷風暴(interrupt storm)。
允許中斷原因
中斷優先權
在某一時刻有幾個中斷源同時發出中斷請求時,處理器只回響其中優先權最高的中斷源。當處理機正在運行某箇中斷服務程式期間出現另一個中斷源的請求時,如果後者的優先權低於前者,處理機不予理睬,反之,處理機立即回響後者,進入所謂的“嵌套中斷”。中斷優先權的排序按其性質、重要性以及處理的方便性決定,由硬體的優先權仲裁邏輯或軟體的順序詢問程式來實現。
不可禁止中斷
不能由程式控制其禁止,處理機一定要立即處理的中斷稱為非禁止中斷或不可禁止中斷。非禁止中斷主要用於斷電、電源故障等必須立即處理的情況.處理機回響中斷時。
中斷的種類
狀態觸發
在依狀態觸發的中斷系統中,一個等待回響的中斷會在中斷請求線路上以特定的電位標示,如高電位(1)或低電位(0)。當一個設備希望傳送中斷信號時,它驅動中斷請求線路至相應的電位,並在CPU發出強制停止命令或處理所請求的中斷事件之前始終保持。
一般而言,處理器在匯流排周期的特定時點回響中斷的輸出/ 輸入。如果在某次採樣時刻中斷尚未被觸發,則在下一次採樣前,處理器都不會認為有中斷髮生。可以套用這個特性,避免回響在噪音較高的線路上出現的偽中斷。
中斷設備可被設計成與其他設備共享一條狀態觸發中斷線路。中斷線路應該包含一個特定的升/降壓電阻,用於在無中斷請求時為線路電平復位。中斷設備在請求中斷時會保持中斷線路為有效電平,而沒有請求中斷時則令該線路置空。只要有一個或以上的設備發出中斷信號,線路都會處於有效的電平。
由於可共享線路的便利,一些套用傾向於使用該類中斷。當CPU檢測到中斷線路被斷言後,就會逐一檢查各共享設備,直至發現請求設備並處理之。當處理完畢後,繼續檢查中斷線路,倘中斷線路仍為有效電平則重複之前的步驟。在檢查中斷設備的順序上也可做一定規劃,比如優先檢查那些頻繁請求中斷的設備,以加快中斷處理,改善系統性能。
此類中斷模式也有嚴重問題。只要還有任何設備的中斷請求未被處理,線路就會一直保持有效電平狀態,而這將導致CPU沒有機會去探查其他設備所發生的狀態變化。推遲服務低優先權設備也不可行,因為這會防止對高優先權設備的探查。倘若線上路上有一個設備持續傳送請求而CPU不知道怎樣對其進行服務,則這個設備就會持久並排他地占有中斷線路。
早期的PCI(外設互連標準)標準出於上述效率層面的理由規定其周邊須使用狀態觸發中斷。
邊沿觸發
在依邊沿觸發的中斷系統中,中斷設備通過向中斷線路傳送一個脈衝來表示其中斷請求。脈衝可以為上升沿或下降沿。在傳送完脈衝後設備立即釋放中斷線路。如果這個脈衝太短,以至於I/O輪詢不足以確保知悉其存在,則有必要使用專門的硬體設備來輔助對邊沿觸發的探查。
中斷設備可被設計成與其他設備共享一條邊沿觸發中斷線路。中斷線路應該包含一個特定的上拉/下拉電阻,用於在無中斷請求時為線路電平復位。設備通過傳送一個脈衝作為其中斷信號。如果多個設備在近乎相同的時間內傳送脈衝,則會線上路上合併成一個信號。為防止中斷丟失,CPU必須在一個脈衝之後的下一個邊沿(如果脈衝為上升沿則其下一個邊沿就是下降沿)立即觸發。收到中斷請求後CPU立即查詢各中斷設備以定位中斷源。
邊沿觸發中斷不會遭受狀態觸發中斷在共享中斷引腳時所遇到的問題。低優先權設備的服務可被任意推遲,而高優先權設備的中斷請求仍會被CPU收到。一個即便是頻繁發生的偽中斷也不會影響正常設備的中斷請求。但是,邊沿觸發中斷容易丟失,特別是當中斷被有意禁止時。在不引入鎖存器的情況下,在禁止時段傳送的中斷信號不可能被恢復。在早期的計算機系統中因為中斷丟失而導致處理不能繼續的情況時有發生。現代中斷硬體多包含有一個或一組中斷狀態鎖存器,用以暫存一逝而過的中斷請求。在對邊沿觸發中斷硬體進行編程時,應檢查這些中斷狀態暫存器以確保請求事件不會丟失。
已經過時的ISA(工業標準架構)標準使用邊沿觸發中斷,但不規定其實現必須能夠共享線路。
混合模式
一些系統使用狀態觸發與邊沿觸發兼顧的混合中斷模式。其硬體不但探測脈衝,也驗證中斷信號是否保持一段時間。
非可禁止中斷多使用混合模式。由於非可禁止中斷多與重要的系統異常事件相關,十分有必要確保對其中斷信號的捕捉快速而正確。這種兩步驟探查方式能夠有效減輕錯誤中斷或遺失中斷給系統帶來的影響。
訊息信號(Message-signalled)
訊息信號式中斷並不直接通過對特定物理線路進行斷言/傳送脈衝來通知一個中斷。這類中斷設備通過在某種通訊媒介(一般是計算機匯流排)上傳送一個有邏輯含義的訊息(一串/排比特碼)來實現中斷請求。中斷訊息可以是通訊匯流排協定中專門為中斷預留的類型,也可以是一個現有的類型,如記憶體寫操作。
訊息信號式中斷在行為上與邊沿觸發中斷類似,因為它們都是傳送一個瞬間的信號。中斷處理軟體的對此類中斷的處理方式也類似於邊沿觸發中斷:如果兩個訊息相同,則可以合併。訊息信號中斷向量(中斷處理程式的地址)也可以共享,就如同物理線路可以被共享一般。
由於中斷訊息的識別基於特定的比特碼序列而不是物理線路上的單個信號,可以有效地通過設定不同的中斷比特碼來劃分和處理不同類型的中斷。另外,使用串列或並行匯流排都可以傳遞中斷訊息。
由於無論狀態觸發還是邊沿觸發都在使用共享線路時存線上路競爭問題,而物理線路數本身也是稀缺資源,不可能被各中斷源分別獨占,所以訊息信號中斷是一個解決此問題的較好替代方案。訊息信號中斷的本質差別在於其中斷請求運行在單純的物理線路之上,具有特定的邏輯含義。這種區別好比計算機網路體系中第一層(物理層)和第二層(鏈路層)的差別。使用具有邏輯含義的中斷請求,可以把諸請求區分開來,形成多條虛通路,而運行於一條物理匯流排之上。PCI Express串列匯流排標準即使用此種中斷。