本章討論處理器如何處理執行中的不連續性程序員
程序執行的不連續性---------------------------一異步
體系結構的改進---------------------------------二工具
硬件的細節---------------------------------------三spa
一 :程序執行的不連續性操作系統
引入同步和異步:指針
同步,在規定好的時間內發生的事件,如第三章的各個微狀態之間的轉移。
blog
異步,系統正在進行的,其餘活動相關的,不可預料的時間發生的事情,如中斷。索引
程序執行的不連續性:事件
中斷,設備引發處理器注意的機制,通常指外部設備引發的不連續性。內存
異常,內部產生的問題,執行非法指令,要打斷原有指令序列的執行而後去處理。
陷入,當前運行的程序沒法處理的一種內部狀況,只能調用操做系統來處理。
不連續性是一種工具:
他容許計算機系統提供輸入/輸出
他容許計算機系統爲相互競爭的活動管理資源。
他容許計算機系統幫助程序員開發正確的程序。
檢測不連續性是處理器的責任,引導處理器處理不連續性代碼是操做系統的責任。
處理不連續性要作的事:
硬件隱式完成的活動
操做系統顯式完成的活動。
引入處理過程,處理器處理不連續時執行的過程。
處理器在處理不連續性上,與第二章的調用過程基本同樣,可是有四個要注意:
一、不連續性能夠在指令執行的任意位置發生。
二、不連續性是計劃外的,硬件控制權給處理過程,要保存PC的值。
三、在檢測到不連續性時,硬件須要肯定處理過程的地址,以便轉交控制權。
四、硬件隱式保存PC值,須要知道如何如恢復。
引入異常/陷入寄存器ETR,用來保存不連續性的編號。
操做系統和處理器體系結構合做解決:
一、體系結構定義一系列異常和他們對應的編號
二、操做體統定義一系列異常(中斷,陷入)以及他們對應的編號。
三、在啓動操做系統,創建中斷向量表IVT,給出處理異常中斷陷入的處理過程地址。
四、在普通程序執行時,硬件檢測異常和陷入,將矢量表填入ETR
五、在普通程序執行時,硬件檢測外部中斷以及對應編號。
六、硬件使用矢量值索引IVT,找處處理過程,將控制權交給處理過程。
二:體系結構的改進
修改FSM:
在原來FSM基礎上多一個宏狀態
FSM在指令結束時檢查,有中斷則到INT宏狀態,沒有就返回Fetch。
把當前PC保存在某個寄存器$k0,接受處理過程的地址,裝入PC。
之因此在最後一個檢查,由於處理器的寄存器處於乾淨的狀態。
處理級聯中斷:
中斷中又中斷回事去原始程序的PC值。
爲處理級聯中斷引入:
禁止中斷指令
容許中斷指令
處理方法:
關閉中斷,原始程序的返回地址保存到$k0,
打開中斷,保存寄存器堆,而後執行指令,
執行處理過程,
關閉中斷,恢復寄存器$k0,返回原程序。
設備會有不一樣的優先級,如硬盤〉鍵盤,若是硬盤中斷則忽視鍵盤。
從處理過程當中返回:
引入新指令:Return from interrupt (RETI)
語義:Load PC from $k0;
Enable interrupts;
這是一條原子指令,執行完以前不會有新的中斷。
三:硬件的細節
中斷數據通路的細節
引入:
INT線,全部但願中斷CPU的設備都斷言該線。
INTA線,CPU斷言該線,讓一個設備獲得確認。
全部設備經過「線或」(超出本書範圍)先到INT線上
處理器發出的INTA線一次穿過全部設備(菊鏈),最接近處理器的優先處理。
推廣:
多條INT和INTA線,每一對對應一個優先級
設備速度越快,丟失數據可能性越高,因此須要快速處理。
得到過程地址的細節:
在收處處理器發送的INTA信號時,將它的向量放到數據總線上,
與以前操做系統開機放在內存中的IVT對應。
總結:
一、不管什麼時候,設備中斷處理器都斷言INT。
二、處理器完成EXCUTE宏後檢查INT宏狀態。
三、若是有中斷請求,處理器進入INT宏狀態並將INTA線斷言。
四、設備收到INTA信號後,將本身的向量放到數據總線上。
五、處理器收到向量並在IVT中查找對應表項,記錄處理過程的PC值。
六、處理器將PC保存在$k0中並將IVT中取出的值填入PC。
保存/恢復棧:
中斷與當前運行的程序沒有關係,取內存哪裏爲棧。
體系結構有棧指針寄存器來保存兩個棧:
用戶棧
系統棧
進入INT宏狀態,FSM執行棧切換。
硬件改進:
一、複製棧指針,指派$sp爲棧指針,複製一個給用戶一個給系使用,
中斷處理過程保存狀態用系統$sp,不會弄亂用戶棧。
二、特權模式,處理器引入一個模式位來判斷時用戶模式仍是內核模式(FSM在INT宏狀態中爲「內核」),
以前容許中斷的指令只能夠由操做系統使用,也叫特權指令。
體系結構和硬件改進總結:
一箇中斷向量表IVT,由操做系統初始化爲各處理過程的地址。
一個異常/陷入寄存器ETR,含有內部產生的異常和陷入的向量。
接受外部中斷的向量的硬件機制。
用戶/內核模式和與之相關的處理器模式位。
與模式位有關的用戶/內核棧。
一個硬件機制,中斷時隱式將當前PC保存到特殊寄存器$k0中。
加入只能由操做系統使用的特權指令用來打斷。