吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Armv8的同步異常、External abort等區別簡析

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

1、同步異常和異步異常的概念

具備以下3個行為的稱之為同步異常:

  • 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

其實就是說:

  • 異常是由執行或嘗試執行指令產生的
  • 產生異常的那個位置是確定的,即每次執行到“那個指令處”就會產生
  • 異常是precise的

具備以下3個行為的稱之為異步異常:

  • 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.

其實就是說:

  • 異常不是由執行或嘗試執行指令產生的
  • 產生異常的那個位置不是確定的,即不知道執行到哪里,就產生了異常
  • 異常是imprecise的

那么precise 和 imprecise 又是什么意思呢??

image.png

比較繞、比較難懂,咱們換一個說法:按照預期產生的異常稱之precise,反之imprecise

2、系統中有哪些同步異常?

  • 嘗試執行UNDEFINED指令產生的任何異常,包括:
    (1)、嘗試在不適當的異常級別執行指令。
    (2)、當指令被禁用時嘗試執行指令。
    (3)、嘗試執行尚未分配的指令位模式。
  • 非法執行狀態異常。這些是由嘗試執行指令引起的 PSTATE.IL 為 1,(詳細可參考D1-2486 頁上的AArch64 狀態的非法返回事件)
  • 使用未對齊的 SP 導致的異常。
  • 嘗試使用未對齊的 PC 執行指令導致的異常。
  • 由異常生成指令SVC、HVC或SMC引起的異常。
  • 嘗試執行系統寄存器定義為被捕獲到更高的異常級別。(詳細可參考可配置的指令使能和禁止,在D1-2510 頁)
  • 由內存地址轉換系統生成的指令中止與嘗試相關聯從產生故障的內存區域執行指令。
  • 內存地址轉換系統生成的數據中止與嘗試讀取或寫入產生故障的內存。
  • 由地址未對齊引起的數據中止。
  • 如果實施FEAT_MTE2,則由標記檢查故障引起的數據中止。。
  • 所有調試異常:(1)、Breakpoint Instruction exceptions. (2)、Breakpoint exceptions. (3)、Watchpoint exceptions. (4)、Vector Catch exceptions. (5)、Software Step exceptions.
  • 在支持捕獲浮點異常的實現中,由捕獲的IEEE 浮點異常引起的異常
  • 在某些實現中,外部中止。外部中止是失敗的內存訪問,包括訪問地址轉換期間發生的內存系統的那些部分。

3、Serror的理解

Serror(也稱System Error),是異步異常的一種,一般是來自 Externalaborts, 當memory system訪問時bus上產生的 Externalaborts 。例如

  • 訪問內存被TZC擋住時,bus會返回的一個異常

image.png

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

4、External abort的理解

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

image.png
例如:

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

image.png

4、instruction abort、data abort

在aarch64架構中,instruction abort、data abort已然變成了同步異常中的一種。不再是單獨的異常模型了。所以當出現instruction abort、data abort時,那么一定是同步異常,可能是internal abort,也可能是external abort,但終歸是同步異常。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121198
  • SMC
    SMC
    +關注

    關注

    2

    文章

    85

    瀏覽量

    20373
  • SVC
    SVC
    +關注

    關注

    0

    文章

    33

    瀏覽量

    12182
  • MMU
    MMU
    +關注

    關注

    0

    文章

    91

    瀏覽量

    18370
  • ARMv8
    +關注

    關注

    1

    文章

    35

    瀏覽量

    14195
收藏 人收藏

    評論

    相關推薦

    ARM重新定義ARMv8新架構,ARMv8新架構特性解說

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

    一文幫你梳理Cortex與ARMv8基礎概念

    到底什么是Cortex、ARMv8、arm架構、ARM指令集、soc?一文幫你梳理基礎概念【科普】1. 從0開始學ARM-安裝Keil MDK uVision集成開發環境
    發表于 12-14 08:20

    ARMv8架構資料分享

    ,大大提升了處理器的性能。從目前的的了解來看,基本上 ARMv8 與上代架構的差別是非常大的。除了 A64 指令集之外,還有許多地方都有較大改動,下面列出幾個目前比較關注的點:  · 執行狀態與異常級別
    發表于 03-21 14:50

    ARMv8架構的兩種執行狀態分別是什么

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

    探討一下ARMv8的AArch32 PE模式

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

    ARMv8架構概述

    Armv8 OverviewARMv7與Armv8的升級示意如下:Aarch64指令集Aarch64的32個通用寄存器引用和描述如下,與Aarch32寄存器相比如下,在ARM 32位系統中,函數參數
    發表于 05-13 10:31

    Armv8.1-M PAC和BTI擴展

    1、Armv8.1-M PAC和 BTI 擴展Armv8-M通過Trustzone for Armv8-M, Memory Protec
    發表于 08-05 14:56

    ARMv8 architecture里的Memory aborts

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

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

    處理器授權大廠ARM于上周(10/27)公布最新處理器規格ARMv8架構,一舉將其產品線推入64位元市場。ARMv8ARMv7架構為基礎,并內含64位元指令集,預估可將32/64位元應用優勢極大化。
    發表于 11-01 09:32 ?1509次閱讀

    TRACE32支持ARMv8架構

      ARMv8架構是首個包括64位執行模式的ARM架構,允許處理器將64位執行模式與32位執行模式相結合。開發該版本ARM指令系統的關鍵技術之一是將ARM處理器工藝的高能效優勢融入64位計算,并獲得更大的可用虛擬地址空間。ARMv8架構在
    發表于 09-12 19:01 ?11次下載

    Armv8架構及虛擬化介紹

    ARMv8基本概念 (1)執行狀態(execution state):處理器運行時的環境,包括寄存器的位寬、支持的指令集、異常模型、內存管理及編程模型。ARMv8體系結構定義了
    的頭像 發表于 04-16 10:45 ?6655次閱讀

    AFE8092幀同步特性

    AFE8092幀同步特性
    的頭像 發表于 08-24 13:37 ?701次閱讀
    AFE8092幀<b class='flag-5'>同步</b>特性<b class='flag-5'>簡</b><b class='flag-5'>析</b>

    ARMv8工作模式有哪些

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

    armv8 u-boot的啟動介紹

    先看arm官網提供的一張圖: 上圖詳細概括了arm官方推薦的armv8的啟動層次結構: 官方將啟動分為了BL1,BL2,BL31,BL32,BL33階段,根據順序,芯片啟動后首先執行BL1階段代碼
    的頭像 發表于 12-07 11:09 ?2447次閱讀
    <b class='flag-5'>armv8</b> u-boot的啟動介紹

    u-boot armv8鏈接腳本

    u-boot armv8鏈接腳本 在進行源碼分析之前,首先看看u-boot的鏈接腳本,通過鏈接腳本可以從整體了解一個u-boot的組成,并且可以在啟動分析中知道某些邏輯是在完成什么工作。 在
    的頭像 發表于 12-07 11:19 ?764次閱讀
    大发888娱乐城下载新澳博| 八运24山下卦局| 百家乐官网稳一点的押法| 涟源市| 抚宁县| 百家乐押注最多是多少| 斗地主百家乐的玩法技巧和规则| 功夫百家乐的玩法技巧和规则 | 至尊百家乐娱乐场开户注册 | 线上百家乐官网网站| 百家乐官网赌博分析网| 功夫百家乐官网的玩法技巧和规则| 百家乐官网77scs官| 百家乐官网操作技巧| 百家乐赢钱| LV百家乐赢钱LV| 大发888网址官方| 林芝县| 百家乐官网游戏机论坛| 速博百家乐官网的玩法技巧和规则 | 百家乐官网技巧真人荷官网| 阳宅24山流年吉凶方位| 百家乐桌布| 百家乐官网几点不用补 | 水果机器| 久盛娱乐城| 百家乐官网赌博技巧网| 百家乐下注稳赢法| 百家乐事一箩筐的微博| bet365网址器| 南陵县| 总统百家乐官网的玩法技巧和规则 | 顶级赌场是真的吗| 百家乐官网全程打庄| 澳门百家乐官网娱乐城送体验金 | 盛世国际投注| 澳门百家乐官网在线| 百家乐长玩必输| 免费百家乐计划软件| 澄迈县| 百家乐官网tt赌场娱乐网规则|