全文3000字,预计阅读时长:8分钟

适用于从事ARM软硬件设计、开发、调试的工程师、教师以及学生

对于大部分开发者来讲,ARM架构知识一直存放于盲盒之中,知之甚少;而ARM架构知识是ARM结构化知识中非常关键的一部分,它的缺失,会导致我们对于问题的系统化思考难以进行。所以增设了《ARM架构知多少-A系列》专栏来和大家一起学习ARM架构,完善知识结构,拓展系统思考边界。

这篇文章还处于书写过程中,请大家耐心等待~

!!!!!!!!!!!!!!!!!!!!!!!!!!

概念

异常

图灵机是抽象的计算模型,图灵机的运行是数学演算,是完美的机器,完美的机器不会出问题。

ARM64是真实存在的计算模型,软硬件运行过程中不可避免的会发生错误,我们称之为异常。

工作原理

异常发生时,为了能对异常进行排除,捕获异常的世界通常会将关键寄存器内容进行 转储,比如输出或者存储到日志里。这个 转储我们称之为 dump,通过对dump分析,能够快速定位问题原因和发生地点。
dump出的寄存器主要包括通用寄存器、特殊寄存器和相关系统寄存器;
以EL3中捕获异常后dump为例,内容如下:
Unhandled Exception in ELx:
x30 = 0x00000000482074ec
x0 = 0x000000000000ff09
x1 = 0x0000000000010ddd
x2 = 0x0000000000009999
x3 = 0x0000000000009995
x4 = 0x0000000000019000
x5 = 0x0000000000028000
x6 = 0x0000000000028ed8
x7 = 0x0000000000028000
x8 = 0x0000000000000003
x9 = 0x00000000730cda50
x10 = 0x0000000073102358
x11 = 0x0000000000000000
x12 = 0x7265626d756e5f71
x13 = 0x6973735f67726165
x14 = 0x0000000000000000
x15 = 0x0000000000000000
x16 = 0x0000000000000000
x17 = 0x0000000000000000
x18 = 0x0000000000000000
x19 = 0x00000000000189c0
x20 = 0x000000000000ff09
x21 = 0x000000000004a200
x22 = 0x0000000000000000
x23 = 0x0000000000000000
x24 = 0x0000000000000000
x25 = 0x0000000000010000
x26 = 0x0000000000010000
x27 = 0x0000000000000000
x28 = 0x0000000000000000
x29 = 0x00000000000187f0
scr_el3 = 0x0000000004030e30
sctlr_el3 = 0x0000000030cd183f
cptr_el3 = 0x0000000040100400
tcr_el3 = 0x0000000080823519
daif = 0x00000000000002c0
mair_el3 = 0x00000000004404
ffspsr_el3 = 0x00000000600003c5
elr_el3 = 0x0000000000001518
ttbr0_el3 = 0x000000004830c001
esr_el3 = 0x000000001fe00000
far_el3 = 0xcd8d76656859e3b6
spsr_el1 = 0x0000000000000000
elr_el1 = 0x0000000000000000
spsr_abt = 0x0000000000000000
spsr_und = 0x0000000000000000
spsr_irq = 0x0000000000000000
spsr_fiq = 0x0000000000000000
sctlr_el1 = 0x0000000030d01905
actlr_el1 = 0x0000000000000000
cpacr_el1 = 0x0000000000300000
csselr_el1 = 0x0000000000000000
sp_el1 = 0x00000000000187f0
esr_el1 = 0x0000000000000000
ttbr0_el1 = 0x00000000730ff000
ttbr1_el1 = 0x0000000000000000
mair_el1 = 0x00000000000004
ffamair_el1 = 0x0000000000000000
tcr_el1 = 0x00000000251c251
ctpidr_el1 = 0x0000000000000000
tpidr_el0 = 0x0000000000000000
tpidrro_el0 = 0x0000000000000000
par_el1 = 0x0000000000000800
mpidr_el1 = 0x0000000081000000
afsr0_el1 = 0x0000000000000000
afsr1_el1 = 0x0000000000000000
contextidr_el1 = 0x0000000000000000
vbar_el1 = 0x00000000730b5800
cntp_ctl_el0 = 0x0000000000000000
cntp_cval_el0 = 0x0000000006d0f180
cntv_ctl_el0 = 0x0000000000000000
cntv_cval_el0 = 0x59ec09ab00ea05bf
cntkctl_el1 = 0x0000000000000000
sp_el0 = 0x0000000000000000
isr_el1 = 0x0000000000000000
cpuectlr_el1 = 0x0000008000800000

分析工具

dump工具
反汇编工具

分析方法

递进式分析方法

分析过程

步骤1:错误码,分析错误原因
步骤2:异常返回地址,查找发生问题地址
步骤3:通过反汇编,查找发生问题地点
步骤4:通过???,查看调用路径trace
步骤5:寻找解决方法,TBD

案例分析

以上面dump信息为例,对问题进行定位,寻找解决方法

常见问题和解决方法

1.数字除0,描述对应现象
2.非对齐访问
3.访问权限
4.延迟
5.TBD

总结

规模越大、系统越复杂,出现问题越难排查,而本文描述的dump分析是对付这种情况的高阶工具,能够快速的定位问题,找到解决方法

参考

  1. ARM A Profile Architecture Reference
  2. ARM64架构系统寄存器

附录

微架构又称为微体系结构/微处理器体系结构。是在计算机工程中,将一种给定的 指令集架构在处理器中执行的方法。一种给定指令集可以在不同的微架构中执行。实施中可能因应不同的设计目的和技术提升而有所不同。计算机架构是微架构和指令集设计的结合。

Core微架构的处理器

NetBurst微结构的缺陷是IPC(每时钟执行的指令条数)表现不佳,同频情况下Pentium 4有时还不如前代的PentiumⅢ。频率提高后,功耗随之上升,功耗过高,影响了主频的进一步提高。为了改善这种情况,Intel采用了Core微架构。

Core微架构是Intel在Yonah微架构基础之上改进而来的下一代微架构,采取共享式二级缓存设计,两个核心共享4MB或2MB的二级缓存,其内核采用高效的l4级有效流水线设计,每个核心都内建32KB 一级指令缓存与32 KB 一级数据缓存,而且两个核心的一级数据缓存之间可以直接传输数据。每个核心内建四组指令解码单元,支持微指令融合与宏指令融合技术,每个时钟周期最多可以解码五条x86指令,并拥有改进的分支预测功能。每个核心内建五个执行单元,执行资源庞大。采用新的内存相关性预测技术。加入对EM-64T与SSE4指令集的支持,支持增强的电源管理功能,支持硬件虚拟化技术和硬件防病毒功能,内建数字温度传感器,还可提供功率报告和温度报告等,配合系统实现动态的功耗控制和散热控制。Core微架构处理器的内部结构如图1所示:

图1 Core微架构处理器的内部结构

Core微架构的处理器系列有用于桌面平台的Conroe、移动平台的Merom和服务器平台的Woodcrest;有Core处理器和Core 2处理器之分,从结构上又可分为单核Core Solo、双核Core Duo和Core 2 Duo以及四核的Core 2 Quad。在多核结构中耦合度的松紧决定四核协作效率的高低,而微架构则决定每个核心的运算效率、实际性能、功耗高低等关键的特性。Intel的Kentsfield/Yorkfield两代Core 2 Quad处理器都基于Core微架构。 [1]

使用微架构的原因
使用微架构有很多优势,但是同时也具有一定的风险。图2给出了一个简单的成本效益分析

图2 微架构成本分析表

由上图成本效益分析可以看到,在开发大型应用程序时,使用微架构可以获得最大收益。 [2]

Core微架构的优点
Core架构的优势体以下几个方面:

(1)拥有超宽的执行单元。在每个周期,Core架构的指令解码器可以同时发射四条指令,而AMD K8架构只能发射三条指令,换句话说,Core架构拥有更加出色的指令并行度。

(2) Core架构具有“微操作融合(Micro-p Fusion)”和“宏操作融合(Macro-p Fusion)”两项技术,可以对执行指令进行优化,通过减少指令的数量获得更高的效率,Intel表示这两项技术最多可带来67%的效率提升,这也是Core架构产品在低功耗状态下依然拥有强劲效能的主要秘密。

(3) Core微架构的SSE执行单元首度提供完整的128位支持。每个单元都可以在一个时钟周期内执行一个128位SSE指令,而在多个执行单元的共同作用下,Core架构核心可以在一个时钟周期内同时执行1 28位乘法、128位加法、128位数据载入以及128位数据回存,或者是可以同时执行四个32位单精度浮点乘法和四个32位单精度浮点加法,进而显著提升多媒体性能。

(4) Core微架构采用共享Cache设计。Cache资源利用率高于独占式设计,且多个核心可以高效协作。 [1]

XScale微架构处理器
XScale架构处理器是新一代为无线手持式应用产品开发的嵌入式处理器,是PCA开发式子台架构中的应用于系统与通信子系统中的嵌入式处理器。图3是XScale系统结构图:

图3 XScale系统结构图

(1)采用7/8级超级流水线:动态跳转预测;分支目标缓冲器BTB(BranchTargetBarfer)。

(2)支持多媒体处理技术:·新增乘/加器MAC;40位累加器;兼容ARMV5TE指令;特定DSP型协处理器CPO。

(3)指令快存(1-Cache):32KB。

(4)数据快存(D-Cache):32KB:可以重构为28KB片内RAM。

(5)微小数据快存(Mini-DCache):2KB。

(6)指令存储器管理单元IMMU:32路变换后备缓冲器TLB(快表)。

(7)数据存储器管理单元DMMU:32路变换后备缓冲器TLB(快表)。

下一篇:ARM架构知识(6)内存分析

「Arm Arch」 安全微架构相关推荐

  1. 「Arm Arch」 虚拟化微架构

    全文3000字,预计阅读时长:8分钟 适用于从事ARM软硬件设计.开发.调试的工程师.教师以及学生 对于大部分开发者来讲,ARM架构知识一直存放于盲盒之中,知之甚少:而ARM架构知识是ARM结构化知识 ...

  2. 「Arm Arch」 调试微架构

    全文3000字,预计阅读时长:8分钟 适用于从事ARM软硬件设计.开发.调试的工程师.教师以及学生 对于大部分开发者来讲,ARM架构知识一直存放于盲盒之中,知之甚少:而ARM架构知识是ARM结构化知识 ...

  3. 「Arm Arch」 总线微架构

    全文3000字,预计阅读时长:8分钟 适用于从事ARM软硬件设计.开发.调试的工程师.教师以及学生 对于大部分开发者来讲,ARM架构知识一直存放于盲盒之中,知之甚少:而ARM架构知识是ARM结构化知识 ...

  4. 「Arm Arch」 微架构

    本文源自<书香度年华>「ARM 架构专栏」,是一系列由浅入深.循序渐进的文章,文章之间有一定的前后关联性,所以按顺序阅读,建议收藏专栏. 一.概念 微架构(英语:Microarchitec ...

  5. 「Arm Arch」 ISA 概述

    本文源自<书香度年华>「ARM 架构专栏」,是一系列由浅入深.循序渐进的文章,文章之间有一定的前后关联性,所以按顺序阅读,建议收藏专栏. 一.定义 ISA是计算机硬件与系统软件之间的接口, ...

  6. 「Arm Arch」 ISA 指令集

    本文源自<书香度年华>「ARM 架构专栏」,是一系列由浅入深.循序渐进的文章,文章之间有一定的前后关联性,所以按顺序阅读,建议收藏专栏. 目录 一. 摘要 Arm采用精简指令集RISC架构 ...

  7. 「Arm Arch」 ISA 寄存器

    本文源自<书香度年华>「ARM 架构专栏」,是一系列由浅入深.循序渐进的文章,文章之间有一定的前后关联性,所以按顺序阅读,建议收藏专栏. 目录 一. 定义 寄存器在计算机中是用来寄存数据的 ...

  8. 「RISC-V Arch」 初识 RISC-V

    前言 提醒:全文10千字,预计阅读时长15分钟: 读者:对 RISC-V 架构感兴趣的小伙伴: 目的:读者利用15~30 分钟对本文沉浸式阅读理解,能够掌握 RISC-V 架构 80% 的要点: 关键 ...

  9. 「RISC-V Arch」RISC-V 规范结构

    日期:20230228 规范分类 根据 RISC-V 设计哲学,其规范文档也是高度模块化的: ISA 规范(2 篇) 非特权规范 特权规范 非 ISA 规范(6篇) Trace规范 ABI 规范 外部 ...

最新文章

  1. 元素对应到html源代码,【整理】用Chrome或Chromium查看百度首页中各元素的html源码...
  2. 360网络修复工具_Win10网络图标不见了解决方法
  3. 火狐ok谷歌适配_“ OK Google”在锁定手机上的安全性越来越高
  4. Android之应用坐标系统全面详解
  5. JavaFX技巧1:可调整大小的Canvas
  6. 腾讯终于有动作了:国行版Switch快来了...
  7. java数字常量_数字常量 - javawebsoa - 博客园
  8. Windows上Chrome被“毒霸网页“劫持启动页解决方式
  9. 盐城哪里学计算机表格,盐城办公自动化周末班
  10. 小学生python游戏编程7----角色精灵定义
  11. 组合导航:中海达iNAV2产品描述及接口描述
  12. 排队器拦截_如何绕过浏览器的弹窗拦截机制
  13. CS客户端单元测试(1) 开始
  14. 基于MFCC参数的元音识别
  15. Java中的范围限定词
  16. WEB渗透测试(一)被动信息收集3(RECON-NG)
  17. java中介系统平台_基于JAVA的房屋中介管理系统的设计与实现.ppt
  18. java之枚举类型enum
  19. 基于JAVA口红专卖网站计算机毕业设计源码+数据库+lw文档+系统+部署
  20. 桌面 计算机屏蔽,Win10家庭版如何禁止别人修改电脑桌面壁纸?

热门文章

  1. 福建最新建筑施工八大员之(安全员)考试题库真题及答案
  2. LBFGS算法的使用~
  3. 金蝶web前端一面(已挂
  4. erp5开源制造业erp价格引擎介绍
  5. c1灯光语言,最新c1科目三灯光图解
  6. 计算机应用基础考试高起专,计算机应用基础试题(高起专)
  7. linux安装nacos
  8. Java设计模式(通俗版)
  9. Linux的jupyter lab启动,无法从远程的浏览器中访问
  10. java成绩管理系统设计背景_java学生成绩管理系统界面设计