「Arm Arch」 安全微架构

简介: 「Arm Arch」 安全微架构

全文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)内存分析

相关文章
|
2月前
|
人工智能 安全 Cloud Native
Nacos 3.0 架构升级,AI 时代更安全的 Registry
随着Nacos3.0的发布,定位由“更易于构建云原生应用的动态服务发现、配置管理和服务管理平台”升级至“ 一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台 ”。
|
4月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
907 61
|
2月前
|
存储 设计模式 人工智能
AI Agent安全架构实战:基于LangGraph的Human-in-the-Loop系统设计​
本文深入解析Human-in-the-Loop(HIL)架构在AI Agent中的核心应用,探讨其在高风险场景下的断点控制、状态恢复与安全管控机制,并结合LangGraph的创新设计与金融交易实战案例,展示如何实现效率与安全的平衡。
402 0
|
6月前
|
人工智能 运维 安全
AI 安全架构概述
AI 安全架构涵盖数据采集、模型训练、推理部署等阶段,确保安全性、隐私与合规。其核心组件包括数据层、模型层、推理层、应用层和运维层,针对数据安全威胁(如数据投毒)、模型窃取、对抗攻击及系统漏洞等风险,提出数据加密、对抗训练、联邦学习等防御策略,并强调开发前、开发中和部署后的最佳实践,以降低 AI 解决方案的安全风险。
631 13
|
4月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
381 10
|
5月前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
5月前
|
监控 安全 数据安全/隐私保护
销售易CRM:技术架构与安全性能的深度解析
销售易CRM基于云计算与微服务架构,融合高可用性、弹性扩展及模块化开发优势,为企业提供灵活定制化的客户关系管理解决方案。系统采用多层次安全防护机制,包括数据加密、细粒度权限控制和实时监控审计,确保数据安全与隐私保护。某金融机构的成功案例表明,销售易CRM显著提升了数据安全性和系统性能,同时满足行业合规要求。作为数字化转型的利器,销售易CRM助力企业实现可持续发展与市场竞争力提升。
|
6月前
|
监控 安全 Cloud Native
企业网络架构安全持续增强框架
企业网络架构安全评估与防护体系构建需采用分层防御、动态适应、主动治理的方法。通过系统化的实施框架,涵盖分层安全架构(核心、基础、边界、终端、治理层)和动态安全能力集成(持续监控、自动化响应、自适应防护)。关键步骤包括系统性风险评估、零信任网络重构、纵深防御技术选型及云原生安全集成。最终形成韧性安全架构,实现从被动防御到主动免疫的转变,确保安全投入与业务创新的平衡。
|
9月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。

热门文章

最新文章