1、同步異常和異步異常的概念
具備以下3個(gè)行為的稱之為同步異常:
- The exception is generated as a result of direct execution or attempted execution of an instruction.
- The return address presented to the exception handler is guaranteed to indicate the instruction that caused the exception.
- The exception is precise
其實(shí)就是說:
- 異常是由執(zhí)行或嘗試執(zhí)行指令產(chǎn)生的
- 產(chǎn)生異常的那個(gè)位置是確定的,即每次執(zhí)行到“那個(gè)指令處”就會(huì)產(chǎn)生
- 異常是precise的
具備以下3個(gè)行為的稱之為異步異常:
- The exception is not generated as a result of direct execution or attempted execution of the instruction stream. The return address presented to the exception handler is not guaranteed to indicate the instruction that caused the exception.
- The exception is imprecise.
其實(shí)就是說:
- 異常不是由執(zhí)行或嘗試執(zhí)行指令產(chǎn)生的
- 產(chǎn)生異常的那個(gè)位置不是確定的,即不知道執(zhí)行到哪里,就產(chǎn)生了異常
- 異常是imprecise的
那么precise 和 imprecise 又是什么意思呢??
比較繞、比較難懂,咱們換一個(gè)說法:按照預(yù)期產(chǎn)生的異常稱之precise,反之imprecise
2、系統(tǒng)中有哪些同步異常?
- 嘗試執(zhí)行UNDEFINED指令產(chǎn)生的任何異常,包括:
(1)、嘗試在不適當(dāng)?shù)漠惓<?jí)別執(zhí)行指令。
(2)、當(dāng)指令被禁用時(shí)嘗試執(zhí)行指令。
(3)、嘗試執(zhí)行尚未分配的指令位模式。 - 非法執(zhí)行狀態(tài)異常。這些是由嘗試執(zhí)行指令引起的
PSTATE.IL
為 1,(詳細(xì)可參考D1-2486 頁上的AArch64 狀態(tài)的非法返回事件) - 使用未對(duì)齊的 SP 導(dǎo)致的異常。
- 嘗試使用未對(duì)齊的 PC 執(zhí)行指令導(dǎo)致的異常。
- 由異常生成指令SVC、HVC或SMC引起的異常。
- 嘗試執(zhí)行系統(tǒng)寄存器定義為被捕獲到更高的異常級(jí)別。(詳細(xì)可參考可配置的指令使能和禁止,在D1-2510 頁)
- 由內(nèi)存地址轉(zhuǎn)換系統(tǒng)生成的指令中止與嘗試相關(guān)聯(lián)從產(chǎn)生故障的內(nèi)存區(qū)域執(zhí)行指令。
- 內(nèi)存地址轉(zhuǎn)換系統(tǒng)生成的數(shù)據(jù)中止與嘗試讀取或?qū)懭氘a(chǎn)生故障的內(nèi)存。
- 由地址未對(duì)齊引起的數(shù)據(jù)中止。
- 如果實(shí)施FEAT_MTE2,則由標(biāo)記檢查故障引起的數(shù)據(jù)中止。。
- 所有調(diào)試異常:(1)、Breakpoint Instruction exceptions. (2)、Breakpoint exceptions. (3)、Watchpoint exceptions. (4)、Vector Catch exceptions. (5)、Software Step exceptions.
- 在支持捕獲浮點(diǎn)異常的實(shí)現(xiàn)中,由捕獲的IEEE 浮點(diǎn)異常引起的異常
- 在某些實(shí)現(xiàn)中,外部中止。外部中止是失敗的內(nèi)存訪問,包括訪問地址轉(zhuǎn)換期間發(fā)生的內(nèi)存系統(tǒng)的那些部分。
3、Serror的理解
Serror(也稱System Error),是異步異常的一種,一般是來自 Externalaborts
, 當(dāng)memory system訪問時(shí)bus上產(chǎn)生的 Externalaborts
。例如
- 訪問內(nèi)存被TZC擋住時(shí),bus會(huì)返回的一個(gè)異常
注意,像MMU產(chǎn)生的異常,它屬于 internalabort
,它是同步異常。像未定義指令異常,它也是同步異常
4、External abort的理解
External Abort,可以同步異常,也可以是Serror
例如:
- Instruction Abort 可能是內(nèi)部同步異常,也可能是同步External Abort
- Data Abort 可能是內(nèi)部同步異常,也可能是同步External Abort (即 External abort 可以屬于同步異常哦)
4、instruction abort、data abort
在aarch64架構(gòu)中,instruction abort、data abort已然變成了同步異常中的一種。不再是單獨(dú)的異常模型了。所以當(dāng)出現(xiàn)instruction abort、data abort時(shí),那么一定是同步異常,可能是internal abort,也可能是external abort,但終歸是同步異常。
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120383 -
SMC
+關(guān)注
關(guān)注
2文章
85瀏覽量
20282 -
SVC
+關(guān)注
關(guān)注
0文章
33瀏覽量
12139 -
MMU
+關(guān)注
關(guān)注
0文章
91瀏覽量
18292 -
ARMv8
+關(guān)注
關(guān)注
1文章
35瀏覽量
14158
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論