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

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

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

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

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

图灵机与ARM

计算机源于图灵机,图灵机是一种计算模型,是一种抽象的数学计算;数学计算离不开运算,即数据操作

在物理世界,数据需要存储媒介,在计算机中与之对应的两个概念就是寄存器;而与操作对应的就是指令,指令组成了指令集

在计算机中寄存器和指令集构成了编程模型,对应于抽象的计算模型。加上支撑编程模型的其他部件,构成了指令集架构(ISA,Instruction Set Architecture)。

ARM64就是一个指令集架构的实现。

为了安全和虚拟化,ARM64引入了异常级别,有点类似x86的Rign0~Ring3。

时空与万物

ARM64上,应用程序运行在第0级别,即EL0,系统程序运行在EL1,管理程序运行在EL2,监视程序运行在EL3。如果把EL0比作人类空间,那么EL1就是高级人类空间,EL2是人类空间创造空间,EL3主宰万物的上帝空间。

EL3运行最可信的软件,EL2运行虚拟化软件,EL1运行系统特权软件,EL0运行普通应用软件。

只有上帝统治万物,EL3将世界分为安全世界(EL2-EL1-EL0)和非安全世界(SEL2-SEL1-SEL0);

只有EL2能够创造人类空间,EL2中运行虚拟化软件可以创造多个(EL1-EL0)空间,SEL2中运行虚拟化软件可以创造多个(SEL1-SEL0)空间

只有高级人类空间能管理人类空间,EL1可以运行多个 EL0空间,SEL1可以运行多个S EL0空间。

正因为应用于鱼龙混杂的复杂系统上,所以必须考虑这些安全&虚拟化问题。

以上就是ARM64支撑多级虚拟世界与安全平行世界的框架,也是是异常级别的底层逻辑

基础设施

每个异常级别都有自己独特的寄存器和指令,来实现各异常级别的超能力
每个异常级别可以共用寄存器,这些寄存器物理存在只有一份,各个异常级别分时复用;
每个异常级别可以共用指令,因为各个空间运行起来会有一些相同的逻辑。

寄存器

EL0

EL1

EL2

EL3

指令

EL0

EL1

EL2

EL3

工作状态

32位&64位,TBD

联络站

每个异常级别都自己的联络站,用于和其他异常级别通信,这个联络站入口由异常向量基址VBAR_(S)ELx指定;

根据不同配置,联络站提供4个接待中心:当前异常级别与EL0共用堆栈寄存器、当前异常级别使用自己的堆栈寄存器、低一级异常级别处于32位模式以及低一级异常级别处于64位模式。

每个接待中心提供的4个服务窗口,分别是同步异常窗口、FIQ窗口、IRQ窗口、系统错误窗口;

联络方式

调用call,低异常级别可以通过系统调用访问高异常级别,比如svc、hvc、smc

陷入trap,低异常级别非法操作与中断事件陷入高异常级别,由高异常级别进行管理,比如同步异常、系统中断

异常返回eret,高异常级别可以通过eret指令返回到低异常级别,返回前可以构造低异常级别世界的状态

工作原理

状态

基础设施的状态构成了异常级别(世界)的状态,TBD

同步异常

指令执行遇到问题时,产生的异常

异步异常

FIQ、IRQ、SError, TBD

运行用例

1.内存申请

TBD

2.异常访问

TBD

3.访问控制

TBD

结语

寄存器、指令集、异常级别构筑ARM64的基础运行框架,而对于外部存储和设备的访问还要依靠关键的基础设施架构总线

参考

  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架构知识(5)总线

「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. Linux系统文本命令快速登录与退出
  2. @AUTORELEASEPOOL
  3. 运维企业专题(1)HTTP加速器——Varnish缓存机制前篇
  4. 广东时代互联---网络管理面试
  5. python 异常处理模块_我的python学习之路-异常处理和模块导入
  6. UVa202 循环小数
  7. 使用require.js和backbone实现简单单页应用实践
  8. 一步一步学习iOS 5编程(第三版)-PDF中文版-正式发布!
  9. python中backward_pytorch的梯度计算以及backward方法详解
  10. CentOS4.4平台下安装EXTMAIL手记V1.3
  11. 浅析h3c交换机端口模式access,trunk与hybrid之联系与区别
  12. DSP CCS5.5安装步骤
  13. 不用在PLC内编程,快速实现西门子与欧姆龙、三菱等品牌的PLC之间实时通讯
  14. 使用js-xlsx纯前端导出excel
  15. 怎樣制作线段动画_线条动画 怎么制作随意运动的线条动画?线条动态视频如何制作?线条动画制作教程...
  16. 自定义结构体及初始化
  17. LeetCode 263 Ugly Number(丑数)
  18. 视频号怎么添加商品带货扩展链接规则
  19. 感谢我的数据结构老师王卓
  20. 基础的JavaScript编码规范

热门文章

  1. 《破解数字VLSI验证面试》翻译计划——综述
  2. 超级计算机用户名,天河二号超级计算机资源申请表.doc
  3. μthenticode:一款用于验证 Windows 文件签名的跨平台工具
  4. 【Unity学习笔记】第一人称射击游戏
  5. linux nc 命令详解
  6. QZ 5T 抓斗行车起重机 切电阻,空操,电气电器图纸
  7. 深入浅出JavaScript-老杜JavaScript基础教程全套完整版+老杨JS应用篇
  8. 蜻蜓短视频系统-文件上传之本地上传报错问题解决-蜻蜓Q蜻蜓s蜻蜓系统上传采用本地上传报错Class ‘League\Flysystem\Adapter\Local‘ not found
  9. php 房间匹配,房间和可用性日期PHP / MySQL
  10. lucene工具类-DocIdsWriter