在研究AArch64中的例外處理時,我發現沒有關于同步和異步之間的例外優先級比較的資訊。
那么當同步和異步例外同時發生時,處理器會怎么做呢?執行指令后是否檢測或異步例外(中斷)?如果是,則不可能同時接受兩種例外。那正確嗎?
uj5u.com熱心網友回復:
規范以一種實際上不允許并發的方式處理這個問題。
來自手冊的 D1.13.4 節“中斷的優先級和識別”:
任何在以下串列中的背景關系同步事件之前掛起的中斷都會在背景關系同步事件之后的第一條指令之前執行,前提是未屏蔽掛起的中斷:
ISB
指令的執行。- 例外條目,如果
FEAT_ExS
未實作,或者如果FEAT_ExS
已實作并且設定了適當的SCTLR_ELx.EIS
位。- [...]
所以它本質上是問“在例外進入發生時是否有掛起的中斷?”,答案是“是”或“否”,這隱含地產生了順序。
但有一個例外:
- 如果背景關系同步事件之后的第一條指令產生了同步例外,那么架構并沒有定義PE是先接受中斷還是先接受同步例外。
它還必須這樣說:
在沒有特定的中斷要求的情況下,該架構只要求在有限時間內獲取未屏蔽的未決中斷。
除了上述之外,實作可以自由地做任何事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/429944.html