處理器中斷的本質,硬中斷、軟中斷、異常的區別
2023年,era 1103a計算機系統引入了中斷(interrupt)機制。
era 1103a用於接收、處理風洞試驗資料,再將資料處理結果返回給風洞,如此迴圈往復。但風洞資料的準備時間比較長,era 1103a只能處於等待狀態,這段時間被白白的浪費掉了。為了提高era 1103a的利用率,其引出了一條中斷線,在等待風洞資料的這段時間執行其他程式,當風洞資料到來的時通過中斷線告知era 1103a停止當前工作去接收風洞資料。
以上就是最初的中斷設計原型。
era 1103a計算機系統
現代處理器的中斷概念變得越來越廣泛,已經不僅僅侷限於外部裝置中斷。
中斷存在的意義是cpu控制外部裝置的同時,外部裝置也可以高效的「控制cpu」。這種設計思想擴充套件到了外部硬體控制cpu、軟體控制cpu、cpu執行管理等三個方面。
因此,使用events
事件表示,更加貼切實際,但在平時描述中,基本上仍然採用了中斷這個詞。
events
的分類如下圖所示,主要包括中斷和異常,外部硬體控制cpu對應hardware interupt
,軟體控制cpu對應software
interrupt,cpu執行管理則對應exception
。
硬體中斷是平時接觸的最多的一類event,比如滑鼠、鍵盤、網絡卡等等都可以產生硬體中斷。因為cpu並不知道外部硬體裝置何時產生硬體中斷請求,不會提前獲知產生硬體中斷的前提,因此,硬體中斷屬於非同步event。
cpu和外部io裝置通過一根或多根硬體連線,進行硬體中斷訊號的傳遞。這種硬體連線可以在soc內部實現,可以在外部pcb板上實現。
當cpu內部整合了中斷控制器ip之後,各個io裝置的中斷訊號線可以在soc內部連線到中斷控制器。如非常常見的arm gic,不僅可以處理外部io裝置的硬體中斷,也可以處理cpu內部之間硬體中斷。其內部結構如下圖所示:
內部gic
外部io裝置可以通過中斷控制晶元連線到cpu,該類晶元通常稱之為pic。
此類中斷控制晶元中最具有代表性的應該是intel
8259,在微機原理課程中就能找到它的影子。
這是為intel 8085和intel 8086微處理器設計的可程式設計中斷控制器(pic)。8259將多個中斷輸入源組合成乙個到主微處理器的單一中斷輸出,將系統中可用的中斷級別擴充套件到處理器晶元上的乙個或兩個級別之外。在如今高效能gic中,仍然可見這種分層次、可擴充套件的中斷架構設計理念。
假設作業系統阻止非特權**直接訪問系統資源,那麼應用程式如何訪問這些受保護的資源呢?此時,軟體中斷就可以實現這一目的。當乙個應用軟體終止或者向作業系統請求一些服務時,軟體中斷就會發生。如果說在軟體**中包含了系統呼叫,可以將software
interrupt理解為同步事件。
當cpu接收到乙個軟體中斷訊號時,可能會暫時將控制切換到乙個中斷處理程式程式,核心中被中斷掛起的程序(例如,乙個程式的執行例項)將在中斷被接受後恢復。
應用程式基於系統呼叫完成應用層和作業系統核心之間的通訊,實現對cpu的控制。
2.3 異常
cpu異常發生在各種錯誤的情況下,如當訪問無效的記憶體位址或除零時,為了作出反應,產生了異常處理機制。不同架構的處理器對異常型別的定義有所不同,但核心思想是cpu工作過程遇到了不被允許的錯誤或者強制停止指令等,可以將異常做如下分類。
對於faults
異常,通常不影響軟體**的繼續執行,此類異常主要包括:
除0操作
無效操作碼
裝置不可用
對於traps
異常,比較常見的就是jtag debug。當cpu收到了debug指令後,會進入到異常模式。此類異常主要包括:
斷點溢位
除錯指令
對於abort
異常,比較常見的就是取指異常,當從ram中沒有正確的獲取到待執行指令時,cpu進入到abort
異常。此類異常主要包括:
訪存錯誤
匯流排錯誤
cache錯誤
參考鏈結
軟中斷 硬中斷 區別
from 軟中斷一般是指由指令int引起的 偽 中斷動作 給cpu製造乙個中斷的假象 而硬中斷則是實實在在由8259的連線觸發的中斷。因此,嚴格的講,int與irq毫無關係,但二者均與中斷向量有關係。int引起的中斷,cpu是從指令中取得中斷向量號 而irq引起的中斷,cpu必須從資料線上取回中斷號...
軟中斷與硬中斷
軟中斷 1.程式設計異常通常叫做軟中斷 2.軟中斷是通訊程序之間用來模擬硬中斷的 一種訊號通訊方式。3.中斷源發中斷請求或軟中斷訊號後,cpu或接收程序在適當的時機自動進行中斷處理或完成軟中斷訊號對應的功能 4.軟中斷是軟體實現的中斷,也就是程式執行時其他程式對它的中斷 而硬中斷是硬體實現的中斷,是...
軟中斷與硬中斷
軟中斷 1.程式設計異常通常叫做軟中斷 2.軟中斷是通訊程序之間用來模擬硬中斷的 一種訊號通訊方式。3.中斷源發中斷請求或軟中斷訊號後,cpu或接收程序在適當的時機自動進行中斷處理或完成軟中斷訊號對應的功能 4.軟中斷是軟體實現的中斷,也就是程式執行時其他程式對它的中斷 而硬中斷是硬體實現的中斷,是...