一、中斷的基本概念
(一)中斷和中斷源
所謂“中斷”是指CPU在正常運行程序時,由于內、外部事件引起CPU暫時中止正在運行的程序,轉而去執行請求CPU暫時中止的內、外部事件的服務程序,待該服務程序處理完畢后又返回到被中止的程序的過程。
能夠向CPU發出中斷請求的中斷來源稱為“中斷源”。常見的中斷源為:
(1)一般的輸入輸出設備,如CRT終端、行式打印機等;
(2)數據通道,如磁帶、磁盤等;
(3)實時時鐘,如計數器芯片8253等的定時輸出作為定時中斷請求信號;
(4)故障信號,如電源掉電等;
(5)軟件中斷,如為調試程序而設置的中斷源。
(二)中斷系統的功能
為滿足上述中斷要求,中斷系統應具有的功能可歸結為中斷處理和中斷控制。
(1)中斷處理。包括發現中斷請求,響應中斷請求、中斷處理與中斷返回。
(2)中斷控制。主要是實現中斷優先級的排隊和中斷嵌套。
(三)中斷的主要用途
在微機系統中,中斷的主要用途是:
(1)實現輸入輸出操作;
(2)電源掉電或其他情況的報警;
(3)控制臺或人工干預;
(4)多處理機系統中各處理機之間的協調;
(5)控制操作系統。
(四)可屏蔽中斷與不可屏蔽中斷
根據微處理器內部受理中斷請求的情況,中斷可分為可屏蔽中斷與不可屏蔽中斷兩種。
凡是微處理器內部能夠“屏蔽”的中斷,稱為可屏蔽中斷;凡是微處理器內部不能“屏蔽”的中斷,稱為不可屏蔽中斷。所謂“屏蔽”是指微處理器能拒絕響應中斷請求信號,不允許打斷微處理器所執行的主程序。這通常是由內部的中斷觸發器(或中斷允許觸發器)來控制的。
二、中斷處理過程
微機系統中斷處理過程的流程圖如圖6-14所示。
(一)CPU響應中斷的條件
1.設置中斷請求觸發器
每個中斷源向CPU發出中斷請求信號是隨機的,而大多數CPU都是在現行周期結束時,才檢測有無中斷請求信號發出。故在現行指令執行期間,必須把隨機輸入的中斷信號鎖存起來,并保持到CPU響應這個中斷請求后,才可以清除中斷請求。因此,要求每一個中斷源有一個中斷請求觸發器,如圖.6-15中④所示。
2.設置中斷屏蔽觸發器
在多個中斷源的情況下,為增加控制的靈活性,常要求在每一個外設的接口電路中,設置一個中斷屏蔽觸發器,只有當此觸發器為“1”時,外設的中斷請求才能被送到CPU,如圖6-15中的⑧所示。可把8個外設的中斷屏蔽觸發器組成一個中斷屏蔽寄存器端口,用輸出指令來控制它們的狀態。上述兩個條件在接口中設置。
3.設置中斷允許觸發器的狀態
在CPU內部有一個中斷允許觸發器,只有當其為“1”時(即中斷開放時),CPU才能響應中斷;若其為“0”.(即中斷關閉時),即使中斷請求線上有中斷請求,CPU也不響應。可用允許中斷和禁止中斷指令來設置中斷允許觸發器的狀態。當CPU復位時,中斷允許觸發器也復位為“0”,即關中斷。當中斷響應后,CPU就自動關閉中斷,以禁止接受另一個新的中斷(否則要處理多重中斷),因而通常在中斷服務程序結束時,必須有兩條指令,即允許中斷指令和返回指令。
4.CPU在現行指令結束后響應中斷
在滿足上面三個條件的情況下,CPU在執行現行指令的最后一個機器周期(總線周期)的最后一個時鐘周期(T狀態)時,才采樣中斷輸入線INTR,若發現中斷請求有效,則把內部的中斷鎖存器置“1”,下一機器周期進入中斷周期。
(二)CPU對中斷的響應
進入中斷周期后,中斷響應的過程如下:
1.關中斷
CPU在響應中斷后,發出中斷響應信號 ,同時內部自動地關中斷,以禁止接受其他的中斷請求。
2.保護斷點
把斷點處的IP(指令指針)值和CS值(段基值)壓人堆棧保留,以備中斷處理完后能正確地返回主程序斷點。
3.識別中斷源
CPU要對中斷請求進行處理,必須要找到相應的中斷服務程序(處理中斷的程序)的入口地址,這就是中斷源的識別。
識別中斷源有兩種方法:
(1)查詢中斷。當外設沒有提出中斷請求時,CPU照常執行主程序,只有在接收到外設的中斷請求后,CPU才去查詢,以識別提出中斷請求的設備,主要采用軟件查詢。
軟件查詢是用程序查詢接在中斷線上的每一個外設。查詢程序依次讀出每一個外設的中斷狀態位,通過測試該狀態位來判斷對應的外設是否發出過中斷請求,若是,則轉到相應的中斷服務程序。一個管理4個外設的查詢測試程序的流程圖及硬件示意圖如圖6-16所示。從圖中可見,如果4次測試都未發現有中斷請求,則表示中斷輸入線的信號是由于出錯引起,程序轉向出錯出口。
圖6-16 用軟件查詢法找中斷源
(a)硬件示意圖;(b)流程圖
(2)向量中斷(Vectored Interrupt)。向量中斷又稱矢量中斷,在具有向量中斷的微機系統中,每個外設都預先指定一個中斷向量,當CPU識別出某個外設請求中斷并予以響應時,控制邏輯就將該外設的中斷向量送入CPU,以自動地提供相應的中斷服務程序的人口地址,轉人中斷服務。用向量中斷來確定中斷源主要是用硬件來實現的,通常在微機系統中所用的可編程中斷控制器都能提供中斷向量。
4.保護現場
為了不使中斷服務程序的運行影響主程序的狀態,必須把斷點處有關寄存器(指在中斷服務程序中要使用的寄存器)內容以及標志寄存器的狀態,壓入堆棧保護。
5.執行中斷服務程序
6.恢復現場
即把中斷服務程序執行前壓入堆棧的現場信息彈回原寄存器及標志。
7.開中斷與返回
開中斷放在返回之前,目的是返回主程序后能繼續響應新的中斷請求。
三、中斷優先級(又稱中斷優先權
在實際系統中,常常遇到多個中斷源同時請求中斷的情況,這時CPU必須確定首先為哪一個中斷源服務,以及服務的次序。解決的方法是用中斷優先排隊的處理方法。這就是根據中斷源要求的輕重緩急,排好中斷處理的優先次序,即優先級(Pnonty);先響應優先級最高的中斷請求。有的微處理器有兩條或更多的中斷請求線、而且已經安排好中斷的優先級,但有的微處理器只有一條中斷請—求線。凡是遇到中斷源的數目多于CPU的中斷請求線的情況時,就需要采取適當的方法來解決中斷優先級的問題。
另外,當-CPU正在處理中斷時,也要能響應優先級更高的中斷請求,而屏蔽掉同級或較低級的中斷請求。即所謂多重中斷的問題。
通常,解決中斷的優先級的方法有以下幾種:
(一)軟件查詢確定中斷優先級
把8個外設的中斷請求觸發器組合起來,作為—個端口,賦以設備號,如圖6-17所示。把各個外設的中斷請求信號相“或”后,作為INTR信號,這樣任一外設有中斷請求都可向CPU送出IN丁R信號。當CPU響應中斷后,把中斷寄存器的狀態作為一個外設信息讀人CPU,逐位檢測其狀態,若檢測出某位有中斷請求,即轉入相應的中斷服務程序人口。在查詢方式中詢問的次序即為優先級的次序,不需要有判斷與確定優先級的硬件排隊電路。其缺點是在中斷源較多的情況下,由詢問到轉至相應的中斷服務程序的入口時間較長。
(二)硬件查詢確定優先級
圖6-18為實現硬件查詢的優先級中斷鏈電路(Daisy-chaining)。來自CPU的“中斷響應”信號從A設備開始串行地往下傳送,當A設備有“中斷請求”時,則“中斷響應”信號在門A2處被封鎖,不再下傳,使后級設備得不到CPU的“中斷響應”信號。同時A設備的“數據允許”線EN變為有效,從而允許A設備使用數據總線,將其中斷標志放上數據總線進入CPU。當A設備無“中斷請求”時, “中斷響應”信號可以通過A2門傳給下一設備B。
優先級中斷鏈電路又稱鏈式優先級排隊電路,當“中斷響應”信號串行地通過所有外設時,這些外設的中斷優先級由其在鏈式排隊電路中的先后次序來決定。
(三)中斷優先級編碼電路
用硬件編碼器和比較器組成的中斷優先級排隊電路如圖6-19所示。
設有8個中斷源,當任何一個有中斷請求時,通過“或”門,即可產生一個中斷請求信號,但它能否送至CPU的中斷請求線,還必須受比較器的控制。
圖6-19 編碼器和比較器的優先級排隊電路
8條中斷輸入線的任何一條,經過編碼器可以產生三位二進制優先級編碼A2A1A0,優先級最高的中斷輸入線的編碼為111,優先級最低的中斷輸入線的編碼為000,而且若有多個中斷輸入線同時輸入,則編碼器只輸出優先級最高的編碼。
正在進行中斷處理的外設的優先級編碼,由CPU通過軟件,經據總線送至優先級寄存器,然后輸出編碼B2BlB0至比較器。
比較器對編碼A2A1A0與B2B1B-0的大小進行比較。若A≤B,則“A>B”端輸出低電子,封鎖與門1,禁止向CPU發出新的中斷請求;只有當A>B時,比較器輸出端才為高電平,打開與門1,將中斷請求信號送至CPU的INTR輸入端,—當CPU-響應中斷后,中斷正在進行的中斷服務程序,轉去執行優先級更高的中斷服務程序。
若CPU不在執行中斷服務程序時(即在執行主程序),則優先級失效信號為高電平,此時如有任一中斷源請求中斷,都能通過與門2,向CPU發出INTR信號。
當外設的個數≤8時,它們公用一個產生中斷向量的電路,該電路由三位比較器的編碼A2A1A0供給。據此不同的編碼,即可轉入不同的入口地址。
四、中斷的嵌套
當CPU執行優先級較低的中斷服務程序時,允許響應比它優先級高的中斷源請求中斷,而掛起正在處理的中斷,這就是中斷嵌套或稱多重中斷。此時,CPU將暫時中斷正在進行著的級別較低的中斷服務程序,優先為級別高的中斷服務,待優先級高的中斷服務結束后,再返回到剛才被中斷的較低優先級的那一級,繼續為它進行中斷服務。
多重中斷流程的編排與單級中斷的區別有以下幾點:
(1)加入屏蔽本級和較低級中斷請求的環節。這是為了防止在進行中斷處理時不致受到來自本級和較低級中斷的干擾,并允許優先級比它高的中斷源進行中斷。
(2)在進行中斷服務之前,要開放中斷。因為如果中斷仍然處于禁止狀態,則將阻礙較高級中斷的中斷請求和響應,所以必須在保護現場、屏蔽本級及較低級中斷完成之后,開放中斷,以便允許進行中斷嵌套。
(3)中斷服務程序結束之后,為了使恢復現場過程不致受到任何中斷請求的干擾,必須安排并執行關中斷指令,將中斷關閉,才能恢復現場。
(4)恢復現場后,應該安排并執行開中斷指令,重新開放中斷,以便允許任何其他等待著的中斷請求有可能被CPU響應。應當指出只有在執行了緊跟在開中斷指令后面的一條指令以后,CPU才重新開放中斷。一般緊跟在開中斷指令后的是返回指令RET,它將把原來被中斷的服務程序的斷點地址彈回IP及CS,然后CPU才能開放中斷,響應新的中斷請求。
多個中斷源、單一中斷請求線的中斷處理過程的流程圖如圖6-20所示。
聲明:
(一)由于考試政策等各方面情況的不斷調整與變化,本網站所提供的考試信息僅供參考,請以權威部門公布的正式信息為準。
(二)本網站在文章內容來源出處標注為其他平臺的稿件均為轉載稿,免費轉載出于非商業性學習目的,版權歸原作者所有。如您對內容、版權等問題存在異議請與本站聯系,我們會及時進行處理解決。
相關推薦
2022年浙江自考《科技檔案管理》串講筆記(11)
10-102023年10月浙江自考《領導科學》復習筆記(第四章)
08-182022年浙江自考英語(二)語法及翻譯復習資料(8)
10-092023年10月浙江自考傳播學概論復習資料:傳播技巧
08-302023年4月浙江自考中外新聞作品研究復習資料:華陽礁上補給忙
02-042022年浙江自考英語(二)語法及課后翻譯復習資料(11)
10-102022年浙江自考《高級英語》復習資料(8)
09-282022年浙江自考英語(二)復習資料:語法及課后翻譯(16)
10-172023年4月浙江自考英語(二)串講筆記:lesson14
02-10自考輔導資料:2019年10月《美學》知識點-審美發生的特殊標志
09-16