ARM架构(一)—— ARMV8V9基础概念

目录

  • 1.ARMCore的时间线
  • 2.ARM术语小结
    • 2.1 A64和arrch64
    • 2.2ARM架构现在的5个系列
    • 2.3 微架构
    • 2.4 PE
    • 2.5 Banked
    • 2.6 ARM文档术语
    • 2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED
    • 2.8 EL1t和EL1h
  • 3 ARMv7的软件架构
  • 4 安全状态切换模型
    • 4.1 Secure state和Non-secure state介绍
  • 5 Interprocessing-执行状态切换模型
    • 5.1 执行状态切换的要求
    • 5.2、大系统软件中执行状态模型
  • 6.特权模型/安全模型/异常模型
  • 小结 aarch64和aarch32对比总结

1.ARMCore的时间线

在这里插入图片描述
tips:加E后缀的是车规级别的芯片,是给车辆使用的。

2.ARM术语小结

2.1 A64和arrch64

  • A64:是指令集。
  • arrch64:是64位的架构。

2.2ARM架构现在的5个系列

  • 1)A系列:应用于移动终端;2)R系列:应用于高实时性要求;3)M系列:应用于嵌入式;4)X系列:超大核;5)N系列:应用于服务器。 其中X和N系列都是A系列下的。

2.3 微架构

微架构:微架构是在架构的基础上实现的具体IP产品,比如ARM v8.0 架构的 A72,ARM v9.0的A715都是微架构。

2.4 PE

  • PE:Processing Element :ARM体系结构定义了抽象机器的行为,称为处理元素(缩写是PE),不仅仅指的ARM Core 其他GPU,NPU的处理单元也可以这么叫。一般将arm核和PE画等号。但是多核比如A65里面,一个核包含两个线程,一个线程就是一个PE,此时就不可以画等号了。

2.5 Banked

  • Banked:一个地址多份拷贝,一个SOC有4个核, ldr x0,[x1] 这个x1寄存器,哪个核去调用,这个x1就是这个核的x1寄存器。

2.6 ARM文档术语

1.TRM(Technical Reference Manual):Arm Cortex processor has a Technical Reference Manual,ARM 核的文档,具体实现定义的,比如查看某个寄存器的具体实现
2.Arm ARMs(ARM Architecture Reference Manual):架构类文档,最常用
3.CIM(Configuration or Integragtion Manual):Arm Cortex processor also has a Configuration or Integragtion Manual,一般给ASIC看的,会有板卡飞线等信息。

2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED

  • IMPLEMENTATION DEFINFD:实现定义的,有两个意思1)ARM IP 产品是实现定义的,比如架构文档中某寄存器是实现定义的,这时候要具体查看它的Core文档,2)是有些实现定义的,ARM没有规定如何实现,需要芯片厂商自己决定如何实现,这个也叫实现定义的。
  • DEPRECATED:弃用的,在架构更新的时候,可能前面版本的某些实现被弃用了,一般不需要详细研究。
  • RES0/RERS1 Reservwd,should be Zero /Reserved ,should be one (后续继续补充)

2.8 EL1t和EL1h

  • EL1t和EL1h的后缀t和h分别表示什么?1)t 表示SP_EL0;h表示SP_ELn。
Exception Level(EL)Stack pointer(SP) options含义
EL0SP_EL0tEL0下的 SP_EL0
EL1SP_EL1t ,SP_EL1h在EL1中使用SP_EL0,SP_EL1
EL2SP_EL2t ,SP_EL2h在EL2中使用SP_EL0,SP_EL2
EL3SP_EL3t ,SP_EL3h在EL3中使用SP_EL0,SP_EL2

SP 栈指针一共有4个寄存器SP_EL0,SP_EL1,SP_EL2,SP_EL3。
在EL0只能使用SP_EL0寄存器;在EL1不仅能能使用SP_EL1寄存器,还能使用SP_EL0寄存器;在 EL2不仅能能使用SP_EL2寄存器,还能使用SP_EL0寄存器;在EL3不仅能能使用SP_EL3寄存器,还能使用SP_EL0寄存器;
t:就是SP_EL0 ;h:就是SP_ELn

3 ARMv7的软件架构

1、ARM有多少种模式?
7种,8种,9种都正确。在ARMv7中大部分都是9种模式;部分核是8种模式,不支持Hyp模式;部分是7种,不支持Hyp模式和Secure Monitor 模式

架构微架构UserPrivilegeSecure MonitorHypervisor
ARMv4ARM 7
ARMv5ARM 7
ARMv7Cortex-A8
ARMv7Cortex-A9
ARMv7Cortex-A5
ARMv7Cortex-A7
ARMv7Cortex-A15
ARMv8Cortex-A53
ARMv8Cortex-A53
ARMv8Cortex-A57
ARMv8Cortex-A72
ARMv8Cortex-A35
ARMv8Cortex-A73
ARMv8Cortex-A55
ARMv8Cortex-A75
ARMv8Cortex-A76

4 安全状态切换模型

4.1 Secure state和Non-secure state介绍

在不考虑RME扩展的前提下
1.ARM架构定义了两种安全状态 Secure state和Non-secure state;
2.ARM架构定义了两套物理地址空间:Secure和Non-secure;
3.如果PE是Non-secure state,那么它只能访问非安全物理地址空间:
4.如果PE是Secure state,那么它既能访问安全物理地址空间,也能访问非安全物理地址空间;
5.EL3永远是Secure state;
6.EL2/EL1/ELO是安全状态还是非安全状态,要根据SCREL3.NS比特:
7.SCR EL3.NS比特只能在EL3被修改
8.EL2是安全状态必须满足以下条件:(1)FEAT SEL2 is implemented(2)The Effective value of SCR EL3.EEL2 is 0b1(3)The Effective value of SCR EL3.NS is 0b0.

5 Interprocessing-执行状态切换模型

这个是由于v8中最初是32位架构,后面推出64位架构,V9第一款也是支持32和64,但是后面出的就是全支持64位架构,所以需要学习下这个执行状态切换,但是在未来都会使用64位架构,就不会存在这个问题了。

5.1 执行状态切换的要求

1.执行状态只能在异常从lower Exception level进入higher Exception level时,或从higher Exception level异常返回到lower Exception level时发生修改
2.如果异常进入或异常返回没有发生Exception Level变化,那么此时执行状态是不能被修改的
3.当产生一个异常从lower Exception level进入higher Exception level时,此时执行状态可能不变,或从aarch32变成arch64,不能从aarch64变成aarch32
4、当一个异常返回从higher Exception level到lower Exception level时,此时执行状态可能不变,或从aarch64变成aarch32,不能从aarch32变成aarch64
5.reset也能导致执行状态的变化

5.2、大系统软件中执行状态模型

在这里插入图片描述
在64位架构上可以运行64位或者32位,但是在32位架构之上只能运行32位

6.特权模型/安全模型/异常模型

在 ARMv8 中,执行发生在四个异常级别之一。在 AArch64 中,异常级别决定了特权级别,类似于ARMv7中定义的特权级别。异常级别决定特权级别,因此在ELn执行对应于特权PLn。类似地,具有比另一个更大的n值的异常级别处于更高的异常级别。一个数字比另一个小的异常级别被描述为处于较低的异常级别。
异常级别提供了适用于 ARMv8 架构的所有操作状态的软件执行权限的逻辑分离。它类似于并支持计算机科学中常见的分层保护域的概念。

  • ELO Normal user applications.
  • EL1 Operating system kernel typically described as privileged
  • EL2 Hypervisor.
  • EL3 Low-level frmware, including the Secure Monitor.

在这里插入图片描述

小结 aarch64和aarch32对比总结

AArch64,64位执行状态:
1.提供31个64位通用寄存器,其中X30用作过程链接寄存器。
2.提供64位程序计数器(PC)、堆栈指针(SPs)和异常链接寄存器(ELRS)。
3.为SIMD向量和标量浮点支持提供32个128位寄存器。
4.提供单个指令集A64定义了ARMV8异常模型,有四个异常级别,EL0-EL3,提供了一个执行特权层次结构
5.提供对64位虚拟寻址的支持
6.定义许多包含PE状态的进程状态(PSTATE)元素。A64指令集包括直接操作各种PSTATE元素的指令
7.使用表示可以访问寄存器的最低异常级别的后缀来命名每个系统寄存器。
AArch32,32位执行状态:
1.提供13个32位通用寄存器,以及一个32位PC、SP和link寄存器(LR)。LR同时用作ELR和过程链接寄存器。其中一些寄存器具有多个存储实例,用干不同的PE模式,
2.为从Hyp模式返回的异常提供一个ELR。
3.为高级SIMD向量和标量浮点支持提供32个64位寄存器。
4.提供两个指今集,A32和T32
5.支持基于PE模式的ARMv7-A异常模型,并将其映射到基于异常级别的ARMV8异常模型。
6.提供对32位虚拟寻址的支持。
7.定义许多包含PE状态的进程状态(PSTATE)元素。A32和T32指令集包括直接操作各种PSTATE元素的指令,以及使用应用程序(APSR)或当前程序状态寄存器(CPSR)访问PSTATE的指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/382070.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用特殊符号

1、 > 和 >> 用法 这两个符号> 和 >> 主要区别如下: 符号>:覆盖现有文件,如果目录中不存在上述名称的文件,则创建一个文件。 符号>>:追加现有文件,如果目录中不存在上述名称的文…

Unity中UI系统3——UGUI

概述 基础知识 UGUI基础 六大基础组件 Canvas——渲染模式控制组件 Canvas Scaler —— 分辨率自适应组件 CanvasScaler——恒定像素模式 CanvasScaler——缩放模式 可以适当的自己去了解对数 CanvasScaler——恒定物理模式 CanvasScaler —— 3D模式 Graphic Raycaster——射线…

将mars3D导入自己的项目中

文章目录 Mars3D官方文档 一、打开自己的vite项目二、创建场景配置文件1.json文件路径 public\config\config.json2.创建组件定义文件路径 src\components\mars-work\mars-map.vue三、demo中引入四、必要样式 依赖文件 总结 Mars3D官方文档 一、打开自己的vite项目 我创建了一…

请你谈谈:spring bean的生命周期 - 阶段4:检查Aware相关接口

在Spring框架中,Aware 接口系列提供了一种机制,允许bean在初始化过程中感知到容器中的特定对象,如应用上下文(ApplicationContext)、Bean工厂(BeanFactory)等。如果你有一个用户自定义的对象&am…

2、如何发行自己的数字代币(truffle智能合约项目实战)

2、如何发行自己的数字代币(truffle智能合约项目实战) 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架(代币发布成功) 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…

分类损失函数 (一) torch.nn.CrossEntropyLoss()

1、交叉熵 是一种用于衡量两个概率分布之间的距离或相似性的度量方法。机器学习中,交叉熵常用于损失函数,用于评估模型的预测结果和实际标签的差异。公式: y:真是标签的概率分布,y:模型预测的概率分布 …

Kotlin泛型实化

内联函数 reified实现 1. 内联函数 内联函数中的代码会在编译的时候自动被替换到调用它的地方,这样的话也就不存在什么泛型擦除的问题了,因为代码在编译之后会直接使用实际的类型来替代内联函数中的泛型声明。 2. reified关键字 在Kotlin中&#xff0…

购物车案例(源码分享)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

谷粒商城实战笔记-37-前端基础-Vue-基本语法插件安装

文章目录 一,v-model1,双向绑定2,vue的双向绑定2.1 html元素上使用指令v-model2.2 model中声明对应属性2.3,验证view绑定modelmodel绑定view 完整代码 二,v-on1,指令简介2,在button按钮中添加v-…

llama 2 改进之 RMSNorm

RMSNorm 论文:https://openreview.net/pdf?idSygkZ3MTJE Github:https://github.com/bzhangGo/rmsnorm?tabreadme-ov-file 论文假设LayerNorm中的重新居中不变性是可有可无的,并提出了均方根层归一化(RMSNorm)。RMSNorm根据均方根(RMS)将…

前端JS特效第50集:zyupload图片上传

zyupload图片上传,先来看看效果: 部分核心的代码如下(全部代码在文章末尾): var operimg_id; var zoom_rate100; var zoom_timeout; function rotateimg(){var smallImg$("#"operimg_id);var numsmallImg.attr(curr_rotate);if(nu…

2024 HNCTF PWN(hide_flag Rand_file_dockerfile Appetizers TTOCrv_)

文章目录 参考hide_flag思路exp Rand_file_dockerfile libc 2.31思路exp Appetizers glibc 2.35绕过关闭标准输出实例客户端 关闭标准输出服务端结果exp TTOCrv_🎲 glibc 2.35逆向DT_DEBUG获得各个库地址随机数思路exp 参考 https://docs.qq.com/doc/p/641e8742c39…

语音识别 语音识别项目相关笔记内容

语音识别 语音识别项目相关笔记内容 语音识别应用范畴语音识别框架语音基本操作使用scipy.io.wavfile读取wav音频文件获取采样率、长度、通道数使用numpy读取pcm格式音频文件读取wav音频文件,并绘制图像读取双声道的wav音频文件,分别绘制不同声道的波形图读取一个采样率为16k…

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法 一、环境介绍1.1 本次环境规划1.2 kubernetes简介1.3 kubernetes特点二、本次实践介绍2.1 本次实践介绍2.2 报错场景三、查看报错日志3.1 查看pod描述信息3.2 查看pod日志四、报错分析五、故障处理…

【Vue】深入了解 v-for 指令:从基础到高级应用的全面指南

文章目录 一、v-for 指令概述二、v-for 指令的基本用法1. 遍历数组2. 遍历对象3. 使用索引 三、v-for 指令的高级用法1. 组件列表渲染2. 使用 key 提升性能3. 嵌套循环 四、结合其他功能的高级用法1. 处理过滤和排序后的结果2. 迭代数值范围3. 结合其他命令使用模板部分 (<t…

基于vue3 + vite产生的 TypeError: Failed to fetch dynamically imported module

具体参考这篇衔接&#xff1a; Vue3报错&#xff1a;Failed to fetch dynamically imported module-CSDN博客 反正挺扯淡的&#xff0c;错误来源于基于ry-vue-plus来进行二次开发的时候遇到的问题。 错误起因 我创建了一个广告管理页面。然后发现访问一直在加载中。报的是这样…

Unity点击生成节点连线

Unity点击生成节点连线 效果 2.主要代码 Test_Line 控制类 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;public class Test_Line : MonoBehaviour {public GameObject qiu_prefab;public List<Game…

h5点击电话号跳转手机拨号

需要使用到h5的 <a>标签 我们首先在<head>标签中添加代码 <meta name"format-detection" content"telephoneyes"/>然后再想要的位置添加代码 <a href"tel:10086"> 点击拨打&#xff1a;10086 </a> 这样功能就实现…

【Day1415】Bean管理、SpringBoot 原理、总结、Maven 高级

0 SpringBoot 配置优先级 从上到下 虽然 springboot 支持多种格式配置文件&#xff0c;但是在项目开发时&#xff0c;推荐统一使用一种格式的配置 &#xff08;yml是主流&#xff09; 1 Bean管理 1.1 从 IOC 容器中获取 Bean 1.2 Bean 作品域 可以通过注解 Scope("proto…

深入浅出WebRTC—ALR

ALR&#xff08;Application Limited Region&#xff09;指的是网络传输过程中&#xff0c;由于应用层的限制&#xff08;而非网络拥塞&#xff09;导致带宽未被充分利用的情况。在这种情况下&#xff0c;应用层可能因为处理能力、手动配置或其他因素无法充分利用可用带宽&…