0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Armv8的同步異常、External abort等區(qū)別簡(jiǎn)析

冬至配餃子 ? 來源:Arm精選 ? 作者:baron ? 2023-11-23 17:13 ? 次閱讀

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 又是什么意思呢??

image.png

比較繞、比較難懂,咱們換一個(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è)異常

image.png

注意,像MMU產(chǎn)生的異常,它屬于 internalabort,它是同步異常。像未定義指令異常,它也是同步異常

4、External abort的理解

External Abort,可以同步異常,也可以是Serror

image.png
例如:

  • Instruction Abort 可能是內(nèi)部同步異常,也可能是同步External Abort
  • Data Abort 可能是內(nèi)部同步異常,也可能是同步External Abort (即 External abort 可以屬于同步異常哦)

image.png

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,但終歸是同步異常。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120383
  • SMC
    SMC
    +關(guān)注

    關(guān)注

    2

    文章

    85

    瀏覽量

    20282
  • SVC
    SVC
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    12139
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    18292
  • ARMv8
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    14158
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM重新定義ARMv8新架構(gòu),ARMv8新架構(gòu)特性解說

    本文從ARMv8-A產(chǎn)生的背景開始,對(duì)它進(jìn)行一個(gè)簡(jiǎn)單的介紹,使大家從整體上,對(duì)ARMv8有一個(gè)簡(jiǎn)單的了解。
    的頭像 發(fā)表于 10-08 17:02 ?1.1w次閱讀
    ARM重新定義<b class='flag-5'>ARMv8</b>新架構(gòu),<b class='flag-5'>ARMv8</b>新架構(gòu)特性解說

    一文幫你梳理Cortex與ARMv8基礎(chǔ)概念

    到底什么是Cortex、ARMv8、arm架構(gòu)、ARM指令集、soc?一文幫你梳理基礎(chǔ)概念【科普】1. 從0開始學(xué)ARM-安裝Keil MDK uVision集成開發(fā)環(huán)境
    發(fā)表于 12-14 08:20

    ARMv8架構(gòu)資料分享

    ,大大提升了處理器的性能。從目前的的了解來看,基本上 ARMv8 與上代架構(gòu)的差別是非常大的。除了 A64 指令集之外,還有許多地方都有較大改動(dòng),下面列出幾個(gè)目前比較關(guān)注的點(diǎn):  · 執(zhí)行狀態(tài)與異常級(jí)別
    發(fā)表于 03-21 14:50

    ARMv8架構(gòu)的兩種執(zhí)行狀態(tài)分別是什么

    、A64與A32的切換對(duì)于A32來說,ARM和thumb的切換,通過bx指令即可切換。但是對(duì)于A64和A32兩種執(zhí)行狀態(tài),只能通過異常,進(jìn)行切換。ARMv8對(duì)EL切換,進(jìn)行了以下的限定:?切換到低EL
    發(fā)表于 04-06 10:49

    探討一下ARMv8的AArch32 PE模式

    ARMv8,定義了異常等級(jí),來進(jìn)行權(quán)限控制。分別是EL0,EL1,EL2,EL3。對(duì)于AArch32,ARMv8定義了9種PE模式,來確執(zhí)行權(quán)限,不使用EL。對(duì)于AArch64,不支持PE模式
    發(fā)表于 04-06 10:57

    ARMv8架構(gòu)概述

    Armv8 OverviewARMv7與Armv8的升級(jí)示意如下:Aarch64指令集Aarch64的32個(gè)通用寄存器引用和描述如下,與Aarch32寄存器相比如下,在ARM 32位系統(tǒng)中,函數(shù)參數(shù)
    發(fā)表于 05-13 10:31

    Armv8.1-M PAC和BTI擴(kuò)展簡(jiǎn)

    1、Armv8.1-M PAC和 BTI 擴(kuò)展簡(jiǎn)Armv8-M通過Trustzone for Armv8-M, Memory Protec
    發(fā)表于 08-05 14:56

    ARMv8 architecture里的Memory aborts簡(jiǎn)

    translation regime.  External abort: Any memory system fault other than a Debug exception, an Alignment fault
    發(fā)表于 03-21 14:28

    ARM推新品:ARMv8首次支援64位元指令集

    處理器授權(quán)大廠ARM于上周(10/27)公布最新處理器規(guī)格ARMv8架構(gòu),一舉將其產(chǎn)品線推入64位元市場(chǎng)。ARMv8ARMv7架構(gòu)為基礎(chǔ),并內(nèi)含64位元指令集,預(yù)估可將32/64位元應(yīng)用優(yōu)勢(shì)極大化。
    發(fā)表于 11-01 09:32 ?1494次閱讀

    TRACE32支持ARMv8架構(gòu)

      ARMv8架構(gòu)是首個(gè)包括64位執(zhí)行模式的ARM架構(gòu),允許處理器將64位執(zhí)行模式與32位執(zhí)行模式相結(jié)合。開發(fā)該版本ARM指令系統(tǒng)的關(guān)鍵技術(shù)之一是將ARM處理器工藝的高能效優(yōu)勢(shì)融入64位計(jì)算,并獲得更大的可用虛擬地址空間。ARMv8架構(gòu)在
    發(fā)表于 09-12 19:01 ?11次下載

    Armv8架構(gòu)及虛擬化介紹

    ARMv8基本概念 (1)執(zhí)行狀態(tài)(execution state):處理器運(yùn)行時(shí)的環(huán)境,包括寄存器的位寬、支持的指令集、異常模型、內(nèi)存管理及編程模型。ARMv8體系結(jié)構(gòu)定義了
    的頭像 發(fā)表于 04-16 10:45 ?6486次閱讀

    AFE8092幀同步特性簡(jiǎn)

    AFE8092幀同步特性簡(jiǎn)
    的頭像 發(fā)表于 08-24 13:37 ?657次閱讀
    AFE8092幀<b class='flag-5'>同步</b>特性<b class='flag-5'>簡(jiǎn)</b><b class='flag-5'>析</b>

    ARMv8工作模式有哪些

    ARMv8 工作模式 ARMv8 沒有 Privilege level 的概念,取而代之的是 Exception level(異常級(jí)別),簡(jiǎn)稱為EL,用于描述特權(quán)級(jí)別,一共有 4 個(gè)級(jí)別:EL0
    的頭像 發(fā)表于 09-11 16:34 ?1494次閱讀
    <b class='flag-5'>ARMv8</b>工作模式有哪些

    armv8 u-boot的啟動(dòng)介紹

    先看arm官網(wǎng)提供的一張圖: 上圖詳細(xì)概括了arm官方推薦的armv8的啟動(dòng)層次結(jié)構(gòu): 官方將啟動(dòng)分為了BL1,BL2,BL31,BL32,BL33階段,根據(jù)順序,芯片啟動(dòng)后首先執(zhí)行BL1階段代碼
    的頭像 發(fā)表于 12-07 11:09 ?2218次閱讀
    <b class='flag-5'>armv8</b> u-boot的啟動(dòng)介紹

    u-boot armv8鏈接腳本

    u-boot armv8鏈接腳本 在進(jìn)行源碼分析之前,首先看看u-boot的鏈接腳本,通過鏈接腳本可以從整體了解一個(gè)u-boot的組成,并且可以在啟動(dòng)分析中知道某些邏輯是在完成什么工作。 在
    的頭像 發(fā)表于 12-07 11:19 ?687次閱讀