当前位置: 首页 > news >正文

ARM架构的基本知识

ARM两种授权

  • 体系结构授权, 一种硬件规范, 用来约定指令集, 芯片内部体系结构(内存管理, 高速缓存管理), 只约定每一条指令的格式, 行为规范, 参数, 客户根据这个规范自行设计与之兼容的处理器
  • 处理IP授权, ARM公司根据某个版本的体系结构设计处理器, 再把处理器设计方案授权给客户

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ARM体系结构又根据不同的应用场景分为3种系列

  • A系列: 面向性能密集型系统的应用处理器内核
  • R系列: 面向实时应用的高性能内核
  • M系列: 面向各类嵌入式应用的微控制内核

ARMv8体系结构中的基本概念

ARM处理器实现的是精简指令集体系结构。在ARMv8体系结构中有如下一些基本概念和定义。

  • 处理机(Processing Element,PE):在ARM公司的官方技术手册中提到的一个概念,把处理器处理事务的过程抽象为处理机。
  • 执行状态(execution state):处理器运行时的环境,包括寄存器的位宽、支持的指令集、异常模型、内存管理以及编程模型等。ARMv8体系结构定义了两个执行状态。
    • AArch64:64位的执行状态。
      • 提供31个64位的通用寄存器。提供64位的程序计数(Program Counter,PC)指针寄存器、栈指针(Stack Pointer,SP)寄存器以及异常链接寄存器(Exception Link Register,ELR)。
      • 提供A64指令集。定义ARMv8异常模型,支持4个异常等级,即EL0~EL3。
      • 提供64位的内存模型。定义一组处理器状态(PSTATE)用来保存PE的状态。
    • AArch32:32位的执行状态。
      • 提供13个32位的通用寄存器,再加上PC指针寄存器、SP寄存器、链接寄存器(Link Register,LR)。
      • 支持两套指令集,分别是A32和T32(Thumb指令集)指令集。
      • 支持ARMv7-A异常模型,基于PE模式并映射到ARMv8的异常模型中。
      • 提供32位的虚拟内存访问机制。
      • 定义一组PSTATE用来保存PE的状态。
  • ARMv8指令集:ARMv8体系结构根据不同的执行状态提供不同指令集的支持。A64指令集:运行在AArch64状态下,提供64位指令集支持。A32指令集:运行在AArch32状态下,提供32位指令集支持。T32指令集:运行在AArch32状态下,提供16位和32位指令集支持。
  • 系统寄存器命名:在AArch64状态下,很多系统寄存器会根据不同的异常等级提供不同的变种寄存器。系统寄存器的使用方法如下。
<register_name>_Elx  //最后一个字母 x 可以表示0、1、2、3

如SP_EL0表示在EL0下的SP寄存器,SP_EL1表示在EL1下的SP寄存器。

ARMv8处理器执行状态

ARMv8处理器支持两种执行状态——AArch64状态和AArch32状态

AArch64状态是ARMv8新增的64位执行状态,而AArch32是为了兼容ARMv7体系结构的32位执行状态

AArch42执行状态

支持16个32位的通用寄存器

ARMv8体系架构下AArch64执行状态

异常等级

确定了处理器当前运行特权级别

  • EL0:用户特权,用于运行普通用户程序。
  • EL1:系统特权,通常用于操作系统内核。如果系统使能了虚拟化扩展,运行虚拟机操作系统内核。
  • EL2:运行虚拟化扩展的虚拟机监控器(hypervisor)。
  • EL3:运行安全世界中的安全监控器(secure monitor)
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ARMv8体系结构允许切换应用程序的运行模式。如在一个运行64位操作系统的ARMv8处理器中,我们可以同时运行A64指令集的应用程序和A32指令集的应用程序,但是在一个运行32位操作系统的ARMv8处理器中就不能运行A64指令集的应用程序了。

当需要运行A32指令集的应用程序时,需要通过一条管理员调用(Supervisor Call,SVC)指令切换到EL1,操作系统会做任务的切换并且返回AArch32的EL0,从而为这个应用程序准备好AArch32状态的运行环境。

通用寄存器

支持31个64位的, 分别是X0 ~ X30

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以使用W来表示低32位的数据, W0表示X0寄存器的低32位数据, W1表示X1寄存器的低32位数据

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特殊寄存器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

系统寄存器

ARMv8体系结构支持如下7类系统寄存器:

  • 通用系统控制寄存器;
  • 调试寄存器;
  • 性能监控寄存器;
  • 活动监控寄存器;
  • 统计扩展寄存器;
  • RAS寄存器;
  • 通用定时器寄存器。

系统寄存器支持不同的异常等级的访问,通常系统寄存器会使用“Reg_ELn”的方式来表示。

  • Reg_EL1:处理器处于EL1、EL2以及EL3时可以访问该寄存器。
  • Reg_EL2:处理器处于EL2和EL3时可以访问该寄存器。
  • 大部分系统寄存器不支持处理器处于EL0时访问,但也有一些例外,如CTR_EL0。

数据类型

支持的数据宽度

字节(8bit), 半字(16bit), 字(32bit), 双字(64bit),四字(128bit)

相关文章:

ARM架构的基本知识

ARM两种授权 体系结构授权, 一种硬件规范, 用来约定指令集, 芯片内部体系结构(内存管理, 高速缓存管理), 只约定每一条指令的格式, 行为规范, 参数, 客户根据这个规范自行设计与之兼容的处理器处理IP授权, ARM公司根据某个版本的体系结构设计处理器, 再把处理器设计方案授权给…...

网络安全(黑客技术)——如何高效自学

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学&#xff1f;如何学&#xff1f; 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c…...

云原生场景下高可用架构的最佳实践

作者&#xff1a;刘佳旭&#xff08;花名&#xff1a;佳旭&#xff09;&#xff0c;阿里云容器服务技术专家 引言 随着云原生技术的快速发展以及在企业 IT 领域的深入应用&#xff0c;云原生场景下的高可用架构&#xff0c;对于企业服务的可用性、稳定性、安全性越发重要。通…...

图论-最短路径算法-弗洛伊德算法与迪杰斯特拉算法

弗洛伊德算法&#xff1a; 弗洛伊德算法本质是动态规划&#xff0c;通过添加点进如可选择的点组成的集合的同时更新所有点之间的距离&#xff0c;从而得到每两个点之间的最短距离。 初始化&#xff1a; 创建一个二维数组 dist&#xff0c;其中 dist[i][j] 表示从节点 i 到节点…...

[23] IPDreamer: Appearance-Controllable 3D Object Generation with Image Prompts

pdf Text-to-3D任务中&#xff0c;对3D模型外观的控制不强&#xff0c;本文提出IPDreamer来解决该问题。在NeRF Training阶段&#xff0c;IPDreamer根据文本用ControlNet生成参考图&#xff0c;并将参考图作为Zero 1-to-3的控制条件&#xff0c;用基于Zero 1-to-3的SDS损失生成…...

深入理解React中的useEffect钩子函数

引言&#xff1a; React是一种流行的JavaScript库&#xff0c;它通过组件化和声明式编程的方式简化了前端开发。在React中&#xff0c;一个核心概念是组件的生命周期&#xff0c;其中包含了许多钩子函数&#xff0c;用于管理组件的不同阶段。其中之一就是useEffect钩子函数&…...

数字化时代的财务管理:挑战与机遇

导语&#xff1a;随着数字化技术的不断发展&#xff0c;财务管理正面临着前所未有的挑战和机遇。数字化不仅改变了财务数据的收集、处理和分析方式&#xff0c;还为财务决策提供了更多的依据和方向。本文将探讨数字化时代财务管理的新特点&#xff0c;以及如何利用数字化技术提…...

网络通信协议-HTTP、WebSocket、MQTT的比较与应用

在今天的数字化世界中&#xff0c;各种通信协议起着关键的作用&#xff0c;以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议&#xff0c;它们各自适用于不同的应用场景。本文将比较这三种协议&#xff0c;并探讨它们的主要应用领域。 HTTP&#xff…...

【深度学习】深度学习实验四——循环神经网络(RNN)、dataloader、长短期记忆网络(LSTM)、门控循环单元(GRU)、超参数对比

一、实验内容 实验内容包含要进行什么实验,实验的目的是什么,实验用到的算法及其原理的简单介绍。 1.1 循环神经网络 (1)理解序列数据处理方法,补全面向对象编程中的缺失代码,并使用torch自带数据工具将数据封装为dataloader。 (2)分别采用手动方式以及调用接口方式…...

DB2分区表详解

一、分区表基本概念 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。分区后的表称为分区表。 表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个“表空间”(物理文件上),这样查询数据时…...

基本地址变换机构

基本地址变换机构&#xff1a;用于实现逻辑地址到物理地址转换的一组硬件机构。 关于页号页表的定义&#xff0c;放个本人的传送门 1.页表寄存器 基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。 1.作用 通常会在系统中设置一个页表寄存器&#xff08;PTR&…...

以单颗CMOS摄像头重构三维场景,维悟光子发布单目红外3D成像模组

维悟光子近期发布全新单目红外3D成像模组,现可提供下游用户进行测试导入。通过结合微纳光学元件编码和人工智能算法解码,维悟光子单目红外3D成像模组采用单颗摄像头,通过单帧拍摄,可同时获取像素级配准的3D点云和红外图像信息,可被应用于机器人、生物识别等广阔领域。 市场…...

Jinja2模板注入 | python模板注入特殊属性 / 对象讲解

在进行模板利用的时候需要使用特殊的属性和对象进行利用&#xff0c;这里对这些特殊属性及方法进行讲解 以下实验输出python3版本为 3.10.4&#xff0c; python2版本为 2.7.13 特殊属性 __class__ 类实例上使用&#xff0c;它用于获取该实例对应的类__base__ 用于获取父类__mr…...

一致性公式证明

首先&#xff0c;假设存在两个不同的聚类假设 f 1 f^1 f1和 f 2 f^2 f2&#xff0c;它们在两个视角上的聚类结果分别为 y 1 ∈ { − 1 , 1 } n y^1\in\{-1,1\}^n y1∈{−1,1}n和 y 2 ∈ { − 1 , 1 } n y^2\in\{-1,1\}^n y2∈{−1,1}n。 证明一致性不等式&#xff1a; ​ …...

allegro中shape的一些基本操作(一)——添加和修改shape

添加shape 简单添加shape的方式有3种&#xff0c;如下图所示 点击选择相应的shape模式后可以在option面板中设置相应的shape参数&#xff08;这里不做过多介绍&#xff0c;里面可以设置shape的大小、静态或动态shape等参数&#xff09;&#xff0c;然后再用鼠标在相应的层上添…...

HBuilder创建uniapp默认项目导入uview(胎教)

1&#xff1a;更新HBuilder 建议更新 2&#xff1a;更新插件 我本人在没有更新插件的情况下报错了&#xff0c;找到了**这个大佬**解决问题&#xff0c;所以建议更新插件 先卸载uni-app&#xff08;Vue2&#xff09;编译 再重新安装 uni-app&#xff08;Vue2&#xff09;…...

C语言基础算法复习

003 斐波那契数列问题 #include<stdio.h> int main() {int i,f11,f21,f3,num;printf("%5d %5d",f1,f2);num2;for(i1; i<18; i){f3f1f2;f1f2;f2f3;num;printf("%5d",f3);if(num%40) printf("\n");}return 0; }//#输数斐波那契数列的前20…...

PyQt界面里如何加载本地视频以及调用摄像头实时检测(小白入门必看)

目录 1.PyQt介绍 2.代码实现 2.1实时调用摄像头 2.2 使用YOLOv5推理 2.3 代码中用到的主要函数 1.PyQt介绍 PyQt是一个用于创建桌面应用程序的Python绑定库&#xff0c;它基于Qt框架。Qt是一个跨平台的C应用程序开发框架&#xff0c;提供了丰富的图形界面、网络通信、数据…...

Ubuntu:VS Code IDE安装ESP-IDF【保姆级】

物联网开发学习笔记——目录索引 参考&#xff1a; VS Code官网&#xff1a;Visual Studio Code - Code Editing. Redefined 乐鑫官网&#xff1a;ESP-IDF 编程指南 - ESP32 VSCode ESP-ID Extension Install 一、前提条件 Visual Studio Code IDE安装ESP-IDF扩展&…...

软考高级系统架构设计师系列之:快速掌握软件工程核心知识点

软考高级系统架构设计师系列之:快速掌握软件工程核心知识点 一、软件开发方法二、软件开发模型三、软件开发模型-瀑布模型四、软件开发模型-经典模型汇总五、软件开发模型-增量模型与螺旋模型六、软件开发模型-V模型七、软件开发模型-构件组装模型八、软件开发模型-统一过程九…...

别再花冤枉钱!手把手教你用Arduino+ESP32自制车机CAN模拟器(附开源代码)

用ArduinoESP32打造高性价比CAN总线模拟器&#xff1a;从硬件搭建到报文解析全指南 在汽车电子和工业控制领域&#xff0c;CAN总线作为可靠的通信标准已经存在三十余年。面对市面上动辄上千元的商业CAN模拟器&#xff0c;许多开发者、学生和DIY爱好者常常望而却步。实际上&…...

智能手机如何重塑芯片市场:从基带到SoC的平台化竞争

1. 市场格局的剧变&#xff1a;一部智能手机如何重塑芯片江湖如果你在2007年问一个半导体行业的从业者&#xff0c;手机核心芯片市场的格局会怎样&#xff0c;他大概率会给你描绘一个由德州仪器、飞思卡尔、英飞凌等传统巨头主导的图景。然而&#xff0c;仅仅五年后&#xff0c…...

从零到一:DPDK高性能网络开发实战指南

1. 为什么你需要了解DPDK&#xff1f; 如果你正在开发需要处理高吞吐量网络数据的应用&#xff0c;比如视频流服务器、金融交易系统或者云计算平台&#xff0c;传统的Linux网络栈可能会成为性能瓶颈。我亲身经历过一个项目&#xff0c;用传统方式开发的网关每秒只能处理30万包…...

从2013年俄罗斯科技路演看技术商业化:硬件集成、异构计算与生态挑战

1. 项目概述&#xff1a;一次被遗忘的科技路演及其启示2013年秋天&#xff0c;在硅谷的心脏圣克拉拉&#xff0c;发生了一场如今看来颇具历史意味的科技路演。俄罗斯&#xff0c;这个在世人印象中与能源、重工业紧密相连的国家&#xff0c;派出了一支由政府和产业界高层领衔的代…...

CodeGPT:基于AI的Git提交信息自动生成工具实战指南

1. 项目概述&#xff1a;CodeGPT&#xff0c;一个用Go写的AI驱动Git工具 如果你和我一样&#xff0c;每天都要在终端里敲无数次 git commit -m "..." &#xff0c;并且为写一个清晰、规范的提交信息而绞尽脑汁&#xff0c;那今天分享的这个工具绝对能让你眼前一亮…...

5 月 8 日 AIoT 双标落地,中国智能基础设施建设开启十年竞速!

AIoT 产业里程碑&#xff1a;5 月 8 日双标落地2026 年 5 月 8 日&#xff0c;注定会被写进中国 AIoT 产业的发展史。多个国家级部委在同一天落下两枚关乎未来十年的战略锚点。第一枚&#xff0c;是国家网信办、国家发展改革委、工业和信息化部联合印发的 《智能体规范应用与创…...

边缘AI落地实战:从软件平台到NPU硬件的协同开发路径

1. 边缘AI的现实挑战与破局思路在2025年的阿姆斯特丹&#xff0c;一场汇聚了半导体巨头与初创公司的会议&#xff0c;清晰地勾勒出当前技术领域最炙手可热的战场&#xff1a;边缘人工智能。这不再是实验室里的概念演示&#xff0c;而是工程师们每天都要面对的真实难题——如何让…...

macOS 上 GNS3 快速部署与跨 VLAN 通信实战

1. macOS 下 GNS3 的快速安装指南 第一次接触 GNS3 是在准备 CCNP 认证的时候&#xff0c;当时为了省下买真机的钱&#xff0c;在 MacBook Pro 上折腾了好几天。现在回想起来&#xff0c;如果当时有人能给我一份详细的安装指南&#xff0c;至少能少走一半弯路。GNS3 作为网络工…...

构建可靠AI编码代理:OpenClaw-Build工作流详解与实战

1. 项目概述&#xff1a;一个能“闭环”的AI编码代理工作流如果你用过市面上那些号称能自动编程的AI代理&#xff0c;大概率经历过这样的挫败感&#xff1a;你满怀期待地丢给它一个需求&#xff0c;它吭哧吭哧干了两三个任务&#xff0c;然后要么开始“神游”&#xff0c;写出来…...

Attu:向量数据库可视化管理工具的终极指南

Attu&#xff1a;向量数据库可视化管理工具的终极指南 【免费下载链接】attu The Best GUI for Milvus 项目地址: https://gitcode.com/gh_mirrors/at/attu 还在为复杂的向量数据库命令行操作而烦恼吗&#xff1f;Attu作为Milvus向量数据库的官方图形化管理工具&#xf…...