4 程序中斷方式
4.1中斷的概念
cpu在執行程序的過程中如果發生意外或特殊事件,cpu要中斷當前程序的執行,處理特殊時間,通過執行中斷服務程序的方式進行處理,處理結束後要返回被中斷程序的程序斷點
4.2 中斷的產生
4.3 程序中斷方式的接口電路
一、配置中斷請求觸發器和中斷屏蔽觸發器
- 如果INTR輸出端爲1,表示有中斷請求,並且可以通過中斷請求線告訴cpu外部設備有中斷請求
- MASK,Q輸出爲1表示這個中斷會被屏蔽,爲0不會被屏蔽掉
二、中斷排隊器
排隊有硬件軟件兩種方式,硬件使用鏈式排隊器
三、中斷向量地址形成部件
由硬件產生向量地址,再用向量地址找到入口地址
中斷號:中斷的編號
中斷向量:中斷服務程序的入口地址,有時也指程序狀態字
向量地址:存儲中斷向量的存儲單元地址
四、程序中斷方式接口電路基本組成
4.4 I/O中斷處理過程
一、CPU相應中斷的條件和時間
1、條件
- 允許中斷觸發器EINT = 1
- 用開中斷指令將EINT置爲 1
- 用關中斷指令將EINT置 0 ,或硬件自動復位
2、時間
當D = 1且MASK = 0時,CPU不能隨時相應中斷中斷,在每條指令執行階段的結束前 cpu查詢是否有中斷請求,通過查詢信號把每一個接口當中有中斷請求的接口的中斷請求觸發器置 1
二、I/O中斷處理過程
- CPU在執行主程序過程中執行到了輸入指定,要求指定外部設備將數據輸入主機當中,CPU通過這條指令在數據線上給出設備的地址送到接口電路當中後,利於設備選擇電路進行比較,SEL信號有效,由CPU傳來啓動命令,或者對接口或設備的控制命令,經過譯碼之後,該命令和SEL同時有效時,觸發器D和B被設置
- B置爲1,設備開始工作,數據還沒有準備好所以D爲0,B用於啓動設備
- 設備啓動後,數據被送入接口當中的數據緩衝寄存器DBR
- 工作結束,把觸發器D和B進行修改,數據已經準備好
- 如果接口提出的中斷請求沒有被屏蔽,CPU發出中斷查詢信號,把中斷接口請求觸發器INTR置爲1,同時啓動排隊器進行排隊,
- 經過排隊器排隊後,輸出信號只有1個是1其他都是0,
- CPU發出中斷響應信號
- 信號發出後會形成向量地址,向量地址經過數據線傳給cpu傳給pc,pc利用地址取出中斷服務程序的入口地址或者跳轉指令
- 設備編碼器的地址會通過數據線傳遞給cpu。cpu利用地址找到中斷服務程序的入口地址,找到中斷服務程序,運行,並取走數據
4.5 中斷服務程序流程
一、中斷服務程序的流程
1、保護現場
- 程序斷點的保護 中斷隱指令完成
- 寄存器內容的保護 進棧指令
2、中斷服務
對不同的IO設備具有不同內容的設備服務
3、回覆現場
出棧指令
4、中斷返回 中斷返回指令
二、單重中斷和多重中斷
1、單重中斷
不允許中斷現行的中斷服務程序
2、多重中斷(中斷嵌套)
允許級別更高的中斷源中斷現行的中斷服務程序
三、單重中斷和多重中斷的服務程序流程
四、主程序和服務程序搶佔CPU的示意圖
宏觀上CPU與IO並行工作
微觀上CPU中斷現行程序爲IO服務