第二十八期 ARM64體系的異常與中斷(2)

2021-10-05 13:36:57 字數 1207 閱讀 4892

上一期中我們介紹了arm64體系的異常,這一期我們將介紹arm64體系中通用中斷控制器(general interrupt controller,gic)的中斷處理流程。

中斷是外設給處理器傳遞資訊的一種方式,外設中斷相對於處理器通常是非同步的。arm64體系中外設中斷是通過通用中斷控制器**給處理器的。通用中斷控制器是支援和管理中斷的硬體部件,它提供了用於管理中斷源、中斷行為和將中斷路由至乙個或多個處理器的暫存器。gicv3(general interrupt controller version 3)支援armv8-a 架構,其硬體架構定義了:

對於每乙個處理器,gic描述了系統內的不同中斷是如何產生外部中斷請求(irq)和快速中斷請求(fiq)的,而armv8-a異常模型(exception model)則描述了處理器是如何處理這些irq和fiq中斷請求的。

gic用於處理外設中斷,外設中斷表現為傳送給gic的訊號。gic定義了四種外設中斷:

gicv3的硬體架構圖如下圖所示[1]:

可以看出gicv3由distributor、redistributor、cpu inte***ce和its四個部分組成,它們的功能是:

redistributor:為ppi提供配置,將處於pending狀態的最高優先順序的中斷在有限時間內傳送給cpu介面;

cpu inte***ce:cpu inte***ce提供乙個連線處理器(processing element,pe)與gic的介面;

its(interrupt translation service):將事件轉化為lpi(可選的)。

gic處理物理中斷的流程如下圖所示[1]:

各個階段的含義為:

本期我們考察了armv8-a架構中gic(general interrupt controller)的中斷處理流程,下一期我們將介紹linux核心中的中斷處理流程。

參考文獻

[1] arm® generic interrupt controller architecture specification gic architecture version 3.0 and version 4.0 beta

[2]

[3]

微軟安全新聞聚焦 雙週刊第二十八期 補發

biweekly spotlights 2013.2 6 2013.3 4 第 28期 金融軟體安全和 bits 框架2013 年3 月 4日 不論是在個人主機 筆記本 還是雲服務平台上執行的金融軟體,都對保護使用者和金融服務機構的安全起著至關重要的作用。這些軟體都應該具有防禦惡意攻擊 避免使用者交...

學習python的的第二十八天

windowsc md 命令提示符下 ipconfig linux 在終端ifconfig ipv4 ipv6 資料逢二進一 十進位制 二進位制 為二,八,十六進製制的方法 num 15 進製的轉換 m bin num 十制制轉二進位制 print m ba oct num 十進位制轉八進位制 pr...

第二十八條 利用有限制萬用字元來提公升API的靈活性

如第二十五條所述,引數化型別是不可變的。型別type1和type2而言,不管type1與type2的關係,list既不是list的子型別,也不是也不是它的超型別。那麼按理來說我們宣告了 乙個list的變數,應該只能把object型別的物件放入其中,但是我們知道可以把object的子類放入其中。同樣我...