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 | 含义 |
|---|---|---|
| EL0 | SP_EL0t | EL0下的 SP_EL0 |
| EL1 | SP_EL1t ,SP_EL1h | 在EL1中使用SP_EL0,SP_EL1 |
| EL2 | SP_EL2t ,SP_EL2h | 在EL2中使用SP_EL0,SP_EL2 |
| EL3 | SP_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 模式
| 架构 | 微架构 | User | Privilege | Secure Monitor | Hypervisor |
|---|---|---|---|---|---|
| ARMv4 | ARM 7 | √ | √ | ||
| ARMv5 | ARM 7 | √ | √ | ||
| ARMv7 | Cortex-A8 | √ | √ | √ | |
| ARMv7 | Cortex-A9 | √ | √ | √ | |
| ARMv7 | Cortex-A5 | √ | √ | √ | |
| ARMv7 | Cortex-A7 | √ | √ | √ | √ |
| ARMv7 | Cortex-A15 | √ | √ | √ | √ |
| ARMv8 | Cortex-A53 | √ | √ | √ | √ |
| ARMv8 | Cortex-A53 | √ | √ | √ | √ |
| ARMv8 | Cortex-A57 | √ | √ | √ | √ |
| ARMv8 | Cortex-A72 | √ | √ | √ | √ |
| ARMv8 | Cortex-A35 | √ | √ | √ | √ |
| ARMv8 | Cortex-A73 | √ | √ | √ | √ |
| ARMv8 | Cortex-A55 | √ | √ | √ | √ |
| ARMv8 | Cortex-A75 | √ | √ | √ | √ |
| ARMv8 | Cortex-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的指令
相关文章:
ARM架构(一)—— ARMV8V9基础概念
目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…...
如何使用Python进行数据分析
Python是一种广泛应用于数据科学和机器学习领域的编程语言。本文将介绍如何使用Python进行数据分析,包括Python在数据分析中的应用场景、常用库和工具,以及实际案例分析。 一、Python在数据分析中的应用场景 数据清洗:处理缺失值、异常值&a…...
Python学习笔记40:游戏篇之外星人入侵(一)
前言 入门知识已经学完,常用标准库也了解了,pygame入门知识也学了,那么开始尝试小游戏的开发。 当然这个小游戏属于比较简单的小游戏,复杂的游戏需要长时间的编写累计开发经验,同时也需要一定的时间才能编写出来。现在的话还是嫩…...
R的数据集读取和利用,如何高效地直接复制黏贴数据到R
R语言自带了许多内部数据集,这些数据集不仅为初学者提供了丰富的练习资源,还为研究人员和数据分析师提供了方便的数据测试和模型验证工具。在这篇文章中,我们将详细探讨如何读取和使用数据集。 一、认识数据集 1、数据和数据集 数据(Data)是指以某种形式表示…...
@JsonProperty 踩坑
JsonProperty 在fastjson 和 hutooljson 中是不会生效的。 在 fastjson 中,对应的注解是 JSONField。如果你正在使用 fastjson 进行 JSON 的序列化和反序列化,并且想要改变字段的 JSON 属性名,你应该使用 JSONField 注解,而不是 …...
业务架构、数据架构、应用架构和技术架构分析
一文看懂:什么是业务架构、数据架构、应用架构和技术架构 TOGAF(开放集团架构框架)是企业广泛应用的架构设计和管理利器。其核心在于四大架构领域:业务、数据、应用和技术,助力组织高效运作。TOGAF,让架构设…...
android studio中svn的使用
第一步,建立一个项目。 第二步,share project。 第三步,选择存放的位置,然后添加提交信息,最后点击share。这样就可以在svn上面看到一个空的项目名称。 第四步,看到文件变成了绿色,点击commit图…...
敏捷CSM认证:精通敏捷Scum估算方法,高效完成项目!
咱们做项目的时候可能都遇到过这种情况:项目一开始信心满满,觉得 deadline 稳了。结果呢?各种意外状况频出,时间好像怎么都不够用了,最后项目只能无奈延期,整个团队都像霜打的茄子。 说到底,还…...
三、建造者模式
文章目录 1 基本介绍2 案例2.1 Car 类2.2 CarBuilder 抽象类2.3 EconomyCarBuilder 类2.4 LuxuryCarBuilder 类2.5 CarDirector 类2.6 测试程序2.7 测试结果2.8 总结 3 各角色之间的关系3.1 角色3.1.1 Product ( 产品 )3.1.2 Builder ( 抽象建造者 )3.1.3 ConcreteBuilder ( 具…...
MySQL-----索引
一、什么是索引 存储引擎用于快速找到记录的一种数据结构。 索引类似于目录。就比如我们要找书里的一段话,我们先按目录找,然后再具体定位,这样速度会很快。 二、索引的作用 通过创建唯一性索引,可以保证数据库表中每一行数据的…...
Webpack 5 Tree Shaking与Module Federation
Webpack是一个流行的JavaScript模块打包器,它在前端工程化中扮演着核心角色。Webpack 5引入了许多新特性,其中两个最值得关注的是Tree Shaking和Module Federation。这两个特性分别解决了代码体积优化和微前端架构的问题。接下来,我们将深入探…...
免费分享一套微信小程序图书馆座位预约管理系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】,帅呆了~~
大家好,我是java1234_小锋老师,看到一个不错的微信小程序图书馆座位预约管理系统(SpringBoot后端Vue管理端),分享下哈。 项目介绍 随着移动互联网技术的飞速发展和智能设备的普及,图书馆服务模式正在经历深刻的变革。本论文旨在…...
k8s入门:从安装到实际应用
Kubernetes (K8s) 入门指南:从安装到实际应用 Kubernetes 是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。它能帮助你管理多个容器化应用程序,并确保它们在不同环境下的一致性和可用性。本文将介绍如何在本地环境安…...
基于Qt的上位机通用框架
0.前言 最近一年多的时间一直在开发设备控制相关的软件,加上之前在聚光的两年时间,前前后后开发这种设备控制类型的上位机软件也有三年的时间了。总结出了一套基于Qt的上位机编程框架,核心思想类似于C#的依赖注入,对象的初始化都…...
Vulnhub靶场DC-7练习
目录 0x00 准备0x01 主机信息收集0x02 站点信息收集1. 获取用户名/密码2. ssh连接目标主机3. drush命令修改Drupal密码 0x03 漏洞查找与利用1. Drupal写入php木马2. 连接shell3. 反弹shell并提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-…...
吴恩达深度学习笔记1 Neural Networks and Deep Learning
参考视频:(超爽中英!) 2024公认最好的【吴恩达深度学习】教程!附课件代码 Professionalization of Deep Learning_哔哩哔哩_bilibili Neural Networks and Deep Learning 1. 深度学习引言(Introduction to Deep Learning) 2. 神 经 网 络 的 编 程 基 础…...
(十)Spring教程——Spring配置概述
目录 前言 1.Spring容器高层视图 2.基于XML的配置 前言 在使用Spring所提供的各项丰富而神奇的功能之前,必须在Spring IoC容器中装配好Bean,并建立好Bean和Bean之间的关联关系。Spring的配置文件已经很精简了,但是广大的开发者希望它做得更…...
飞书群聊机器人自定义机器人接入,并实现艾特@群成员功能
飞书群聊机器人还是比钉钉的要麻烦一点,钉钉的直接通过手机号就可以艾特群里面的人,但是飞书的要想艾特群里面的人,需要使用用户的 Open ID 或 User ID。这两个ID怎么获取呢?还需要在飞书的开放平台上创建一个应用,然后…...
CrowdStrike更新致850万Windows设备宕机,微软紧急救火!
7月18日,网络安全公司CrowdStrike发布了一次软件更新,导致全球大范围Windows系统宕机。 预估CrowdStrike的更新影响了将近850万台Windows设备,多行业服务因此停滞,全球打工人原地放假,坐等吃瓜,网络上爆梗…...
银行黄金交易流程
银行黄金交易流程 银行黄金交易流程通常包括以下几个步骤: 咨询和开户: 首先,客户需要到银行的贵金属交易柜台或在线平台咨询黄金交易的相关规定和手续,然后进行开户,在银行开立有关黄金交易的账户。这可能需要提供个…...
终极指南:八大网盘直链下载助手完整使用教程,告别限速烦恼
终极指南:八大网盘直链下载助手完整使用教程,告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…...
网盘直链下载助手终极指南:三步解锁八大网盘高速下载
网盘直链下载助手终极指南:三步解锁八大网盘高速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...
国电智深DCS污水处理自动控制组态与模糊PID优化【附方案】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流,点击《获取方式》 (1)基于EDPF-NT的三容水箱液位模糊PID控制与改进PSO优化…...
在Python项目中下载OpenAI兼容SDK并接入Taotoken聚合API
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Python项目中下载OpenAI兼容SDK并接入Taotoken聚合API 对于使用Python的开发者而言,通过OpenAI官方风格的SDK接入大模…...
WeChatMsg完整指南:如何永久保存并深度分析你的微信聊天记录
WeChatMsg完整指南:如何永久保存并深度分析你的微信聊天记录 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...
瓷砖规格有哪些?瓷砖用量如何计算?
瓷砖规格有哪些?瓷砖用量如何计算? 目前建材市场上出现的瓷砖规格有许多种,每一种瓷砖规格所装饰出来的效果都各有千秋,如果想节省瓷砖和降低造价,那么在购买瓷砖前计算要铺贴的使用量就十分必要。了解瓷砖规格以及瓷砖用量,对于购买瓷砖的消费者而言,一定会有所帮助的…...
PyWxDump微信数据解析工具:3步快速备份聊天记录的完整指南
PyWxDump微信数据解析工具:3步快速备份聊天记录的完整指南 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 想要安全备份微信聊天记录却不知从何下手?PyWxDump微信数据解析工具为你提供了简单高效的解…...
告别漫长等待:用Anaconda一行命令搞定XGBoost-GPU版安装(Windows/Linux通用)
告别漫长等待:用Anaconda一行命令搞定XGBoost-GPU版安装(Windows/Linux通用) 在机器学习领域,XGBoost因其出色的性能和广泛的应用场景而备受推崇。然而,当面对大规模数据集时,传统的CPU计算往往显得力不从心…...
从零打造机甲战士:我的STM32 RoboMaster开发实战入门
1. 从玩具到战士:为什么选择STM32开发RoboMaster机器人 第一次看到RoboMaster比赛视频时,我被那些灵活移动、精准射击的机甲深深震撼。作为一个电子爱好者,我立刻萌生了自己打造参赛机器人的想法。但在选择开发平台时,我遇到了所有…...
如何用嘎嘎降AI处理农学论文:实验数据图表密集的农学毕业论文降AI完整操作教程
如何用嘎嘎降AI处理农学论文:实验数据图表密集的农学毕业论文降AI完整操作教程 关于农学论文降AI教程,有几个细节提前知道,能少走很多弯路。 核心用嘎嘎降AI(www.aigcleaner.com),4.8元,达标率…...
