ARM架构介绍

news/2024/4/28 11:05:52/文章来源:https://blog.csdn.net/qq_16106195/article/details/131699819

概览

Arm 架构为处理器或内核(称为处理单元PE)的设计提供了基础。

Arm架构已经集成到许多片上系统 (SoC) 设备中,比如智能手机、微型计算机、嵌入式设备、服务器甚至超级计算机。

Arm架构为软件开发人员提供了通用指令集和工作流程,也称为编程模型。这保证ARM架构的不同实现之间的互操作性,以便软件可以在不同的 Arm 设备上运行。

关于ARM架构

Arm架构是世界上最流行的处理器架构之一,每年有数十亿台基于 Arm架构的设备出货。

下表描述了ARM的三种系列架构:A,R,M。

A系列(应用)R系列(实时)M系列(微控制器)
高性能针对有实时要求的系统小型、高能效设备
设计用于运行复杂的操作系统,例如 Linux 或 Windows网络设备和嵌入式控制系统物联网设备

这三个系列允许 Arm 架构根据不同的需求进行定制,同时仍然有一些共性。

下图展示了基于 Arm 系统的示例。

关于ARM架构

这个智能手机的例子包括以下处理器类型:

  • A‑profile 处理器作为主CPU,运行Android 等丰富的操作系统
  • 基于R-profile处理的蜂窝调制解调器,提供网络连接
  • 多个M系列处理器,用于处理系统电源管理等操作
  • SIM卡使用SecurCore,这是一款具有附加安全功能的M系列处理器。SecurCore 处理器通常用于智能卡。

在本篇指南中,我们只关注A系列架构的两个最新版本:Armv8-A和Armv9-A 。

什么是架构?

当提及术语架构时,我们指的是功能规范。但就 Arm 架构而言,指的是处理器的功能规范。架构指定处理器的行为方式,例如它有哪些指令以及这些指令的作用。

你可以认为架构是硬件和软件之间的契约。该架构描述了软件可以依赖硬件来提供哪些功能。正如我们在架构和微架构中解释的那样,某些功能是可选的。 该架构指定:

项目描述
指令集每条指令的功能;指令在内存在内存中如何表示(编码)
寄存器组有多少个寄存器;寄存器的大小;寄存器的功能;初始状态
异常模型不同级别的特权;异常的类型;发生异常或者从异常返回会发生什么
内存模型内存访问的顺序如何;缓存的行为方式、软件必须何时以及如何执行显式维护
调试、跟踪和分析如何设置和触发断点;跟踪工具可以捕获哪些信息以及以什么格式捕获

系统架构

系统不只是包含处理器核心。ARM还提供了规范来描述处理器系统的要求,如下图所示。

ARM架构的发展

规范是软件兼容性的基础。根据规范构建硬件意味着可以编写与之匹配的软件。按照规范编写软件意味着它可以在兼容的硬件上运行。ARM架构是第一层,其通过指令集架构(ISA)兼容性为软件提供通用编程模型。

基本系统架构(BSA)规范描述了系统软件可以依赖的硬件系统架构。 BSA 涵盖处理器和系统架构的各个方面,
例如中断控制器、定时器和操作系统所需的其他常见设备。这为标准操作系统、虚拟机管理程序和固件提供了可
靠的平台。

BSA 广泛适用于不同的市场和场景。其他标准可以建立在 BSA 的基础上,为特定市场提供标准。例如,服务器基础系统架构(SBSA)是针对服务器BSA 的补充。 SBSA 描述了服务器操作系统的硬件和功能要求。该规范是一套文档,随着 CPU 架构的发展,越来越详细地记录硬件功能。

基本启动需求 (BBR) 规范涵盖了操作系统和虚拟机管理程序可以依赖的系统要求。该规范创建了固件接口要求,例如 PSCI、SMCCC、UEFI、ACPI 和 SMBIOS。

BBR还提供了针对特定用例的方法,如下。

  • SBBR:提出用于启动通用的和现有的操作系统和虚拟机的UEFI、ACPI 和 SMBIOS 要求,如Windows,VMware,RHEL,Oracle Linux和Amazon Linux。SBSR还支持其他操作系统,如 Debian、Fedora、CentOS、SLES、Ubuntu、openSUSE、FreeBSD 和 NetBSD。
  • EBBR:与 EBBR 规范一起指定 UEFI 启动通用、现有操作系统的要求,如Debian、Fedora、Ubuntu、openSUSE,并为垂直集成的操作系统平台提供优势。
  • LBBR:指定 LinuxBoot 固件的潜在要求,以便启动超大规模应用程序使用。

架构和微架构

架构不会告诉您处理器是如何构建的或者它是如何工作的。处理器的构建和设计称为微架构。微架构会告诉您处理器是如何工作的。

微架构包括:

  • 流水线速度和布局
  • cache的个数和大小
  • 各个指令集的周期
  • 实施了哪些可选功能

例如,Cortex‑A53和Cortex‑A72都是Armv8‑A架构的实现。这意味着它们具有相同的架构,但它们的微架构却截然不同,如下图和表格所示:

ARM Cortex-A53 A72芯片

架构Cortex-A53Cortex-A72
目标针对电源效率进行优化针对性能进行优化
流水线5级流水线、有序15+级流水线、乱序
CacheL1 I cache:8KB-64KB
L1 D cache:8KB-64KB
L2 cache: 可选,最大2MB
L1 I cache:固定48KB
L1 D cache:固定32KB
L2 cache: 强制,最大2MB

架构上兼容的软件可以在 Cortex‑A53 或 Cortex‑A72 上运行,而无需修改。这是因为它们都实现相同的架构。

ARM架构的开发

Arm 架构随着时间的推移不断发展,每个版本都建立在之前的基础上。

您通常会看到这样的架构:

Armv8-A

这意味着A系列架构的第8个版本。

或者,简而言之:

v8-A

Armv8-A

Armv8‑A 于 2011 年发布,是 Arm 架构的第一个 64 位版本。基于 Armv8‑A 的设备已部署在从手机到超级计算机的各种设备中。

Armv9-A

Armv9‑A 是 A系列架构的最新版本。 Armv9‑A 基于 Armv8‑A 构建并添加了新功能,包括:

  • 可伸缩矢量扩展,版本 2 (SVE2)
  • 事务内存扩展(TME)
  • 分支记录缓冲区扩展(BRBE)
  • 内嵌跟踪扩展(ETE)
  • 跟踪缓冲区扩展(TRBE)

另外,Armv8‑A 中的一些可选功能在 Armv9‑A 中是强制性的。

年度迭代升级

Arm 每年都会发布架构更新,添加新的指令和功能。 Armv9.0‑A 与 Armv8.5‑A 保持一致,继承了 Armv8.5‑A 的所有功能并添加了新功能。 Armv9‑A首次发布后,Armv8‑A和Armv9‑A一起更新。 Arm将布Armv9‑A的新功能,并将继续更新和维护Armv8‑A。下图显示了并行版本:

ARM发布版本

您可以在Understanding the Armv8.x extensions中找到有关每次年度更新中添加内容的更多信息。

其他ARM架构

Arm 架构是最著名的 Arm 规范,但并不是唯一的规范。 Arm 对于构成当今片上系统 (SoC) 的许多组件都有类似的规范。

互连图

  • 通用中断控制器:通用中断控制器(GIC) 规范是与Armv7‑A/R 和Armv8‑A/R 配合使用的标准化中断控制器。

  • 系统内存管理单元:系统内存管理单元(SMMU 或有时是IOMMU)为非处理器主机提供转换服务。

  • 通用定时器:通用定时器为所有定时器提供通用参考系统计数。这些计时器用于操作系统调度程序滴答计数等功能。通用定时器是 Arm 架构的一部分,但系统计数器是系统组件。

  • 服务器基础系统架构和可信基础系统架构:服务器基础系统架构(SBSA) 和可信基础系统架构(TBSA) 为SoC 开发人员提供系统设计指南。

  • 先进微控制器总线架构:先进微控制器总线架构(AMBA)总线协议系列定义控制基于 Arm 系统中组件的连接方式以及这些连接上的协议 。

了解ARM文档

Arm 为开发人员提供了大量文档。在本指南的这一部分中,我们将解释在哪里可以找到有关在 Arm 上进行开发的文档和其他信息。

文档在哪里

你可以从Arm developer website下载ARM架构和处理器手册。

您可以提出开发问题,并查找Arm community中 Arm 专家针对特定主题的文章和博客。

哪个文档描述了什么

以下是不同类型文档的简短描述:

  • 每份Arm 架构参考手册都描述了一个架构规范。Arm 架构参考手册与该架构的实现相关。
  • 每个Arm Cortex 处理器都有一份技术参考手册(TRM)。 TRM描述了该处理器特有的功能。一般来说,TRM不会重复Arm架构参考手册中给出的任何信息。
  • 每个Arm Cortex 处理器还具有配置和集成手册(CIM)。 CIM 描述了如何将处理器集成到系统中。一般来说,此信息仅与 SoC 设计人员相关。

那么,这对我意味着什么

如果您正在寻找有关某个处理器的信息,可能需要参考几个不同的文档。如果你打算使用Cortex‑A75 处理器,以下可能是你需要的各种文档:

架构文档

Cortex‑A75 实现了 ARMv8.2‑A、GICv4 CPU 接口和 AMBA 总线接口,因此你必须参考每部分的单独文档。你还必须参考微架构的相关文档。

如果使用现有的SoC,你必须参考SoC制造商提供的文档,通常是以datasheet的形式,其给出的信息只针对该SoC。

我可以从每个文档中获取什么信息

下表展示了在不同类型文档中可以获取到的信息(X表示具有)。

-架构--微架构微架构-
Arm架构参考手册GIC规范AMBA规范TRMCIMSoC Datasheet
指令集X
指令周期时序X
架构寄存器XX
处理器寄存器X
内存模型X
异常模型X
可选功能XX(有些是一起选)
cache/TLB大小X
电源管理X
总线接口XX
所有合法总线事务X
处理器生成的总线事务X
内存表X
外设X
SoC引脚排列X

参考手册和用户指南之间的差异

目前为止,我们查看的文档(Arm 架构参考手册、TRM 和 CIM)都是参考手册。这意味着他们不提供有关处理器的使用指南。例如,Arm 架构参考手册中没有关于如何打开 MMU的说明。

这种结构是经过深思熟虑的,这是为了在参考手册中找到架构所需的技术细节与提供更一般指导的文档(例如
本指南)之间保持清晰的界限。一般性指导文档将介绍概念,而其他文档则提供您需要遵循的说明。

常用架构术语

该架构使用了几个术语,通常在文档中以小写字母书写,它们具有非常具体的含义。 Arm 架构参考手册定义了每个术语。在本节中,我们将介绍最常见的术语,并为编程者提供需要的附加信息。

PE处理单元

处理单元(PE)是 Arm 架构实现的通用术语。您可以将 PE 视为具备程序计数器并可以执行程序的任何东西。例如,Arm 架构参考手册指出:

决定 PE 如何运行的状态,包括当前的异常级别和安全状态,以及在 AArch32 状态下的 PE 模式。

手册使用通用术语PE,因为有不同的微架构。例如,Arm Cortex‑A 处理器 可以采用下面的微架构:

  • Cortex‑A8 是单核、单线程处理器,整个处理器就是一个PE。
  • Cortex‑A53 是一个多核处理器,每个核心都是一个线程。每个核心都是一个PE。
  • Cortex‑A65AE 是多核处理器,每个核心有两个线程。每个线程都是一个PE。

通过使用术语 PE,架构与不同处理器中的设计决策保持分离开。

IMPLEMENTATION DEFINED

实施定义(简称IMP DEF)的功能是由特定的微架构定义的。实现必须呈现一致的行为或值。

例如,缓存的大小是IMP DEF。该架构为软件提供了一种定义的机制来查询缓存大小,但缓存的大小取决于处理器设计者。

同样,对密码指令的支持是 IMP DEF。同样,有寄存器允许软件确定指令是否存在。

在这两个示例中,选择都是静态的。也就是说,给定的处理器要么支持,要么不支持这些功能和指令。该功能不能在运行时更改支持。

对于 Cortex‑A 处理器,一些 IMP DEF 选择将被修复,一些将是综合选项。例如,在 Cortex‑A57 上,L1 缓存的大小是固定的,L2 缓存的大小是综合选项。然而,L2 缓存的大小是在设计时决定的。它在运行时仍然是静态的。

IMP DEF 选项的完整详细信息记录在处理器的技术参考手册 (TRM) 中。

UNPREDICTABLE and CONSTRAINED UNPREDICTABLE

UNPREDICTABLE 和CONSTRAINED UNPREDICTABLE用于描述软件不应该做的事情。

当某些事情不可预测或受约束不可预测时,软件不能依赖处理器的行为。如果软件多次执行非法操作,处理器也可能表现出不同的行为。

例如,提供未对⻬的转换表是受限且不可预测的。这代表了糟糕的软件。糟糕的软件意味着违反翻译表应遵守的架构规则。

与 IMP DEF 行为不同,技术参考手册 (TRM) 通常不会描述所有不可预测的行为。

Deprecated

有时我们会从架构中删除某个功能。发生这种情况的原因有多种,例如性能或因为该功能不再常用且没有必要。但是,可能仍然有一些旧版软件依赖于该功能。

因此,在完全删除某个功能之前,我们首先将其标记为“已弃用”。例如,Arm 架构参考手册指出:

出于性能原因,不推荐使用IT指令以及CP15DMB、 CP15DSB和CP151SB屏障指令。

DEPRECATED 是向开发人员发出的警告:某个功能将来会被删除,他们应该开始从代码中删除它。

通常,一个控件会同时添加到架构中,从而允许禁用该功能。该控件允许开发人员测试遗留代码中该功能的使用情况。

RES0和RES1

RES0表示保留,应为零。 RES1表示Reserved,应该是1。

RES0和RES1用于描述未使用且对处理器功能没有影响的字段。

保留字段可能会在架构的某些未来版本中使用。在这种情况下, RES0/ RES1 字段值如果为 1 将表示新的行为。

RES0字段并不总是读取为 0,RES1 字段也不总是读取为 1。RES0和RES1 仅告诉您该字段未使用。

有时RES0和 RES1 字段必须是有状态的。有状态意味着该字段读到的是最后写入的值。

检查你学的知识

以下问题将帮助您检查您所学的知识:

  1. 如果您在某个文档中看到 Armv7‑R,指的是该架构的哪个版本和系列?

    版本7,R系列

  2. 在哪个版本的 Arm 架构中,A系列添加了对于 64 位的支持?

版本8(Armv8-A)

  1. 指令编码、cache大小和内存序这三项分别是架构还是微架构?

    • 指令编码:架构
    • cache大小:微架构
    • 内存序:架构
  2. 什么是PE

    PE 是一个处理单元:实现 Arm 架构的machine。

相关信息

以下是与本指南中相关的一些资源:

  • Arm架构参考手册

  • Arm社区

其他Arm架构

  • 通用中断控制器GIC

  • 服务器基础系统架构SBSA

  • 系统内存管理单元SMMU或者IOMMU

  • 可信基础系统架构TBSA

后续步骤

本指南介绍了 Arm 架构的基本原理、它是如何发展的、它的系列及其应用。这些知识有助于为您进一步了解 Arm 技术奠定基础。

我们讨论了一些对于理解 Arm 架构至关重要的常见术语和概念,以及 Arm 架构的不同系列。我们描述了架构、系统架构和微架构的功能,以及 Arm 架构术语和概念是如何出现在 Arm 架构参考手册和其他 Arm 文档和资源中。我们还了解了 Arm 架构和其他 Arm 架构的不同系列。

本系列中的其他指南详细介绍了 Arm 架构的各个方面,并提供了示例和说明。

要继续了解 Arm 架构,请参阅我们的Learn the Architecture series of guides。
术奠定基础。

我们讨论了一些对于理解 Arm 架构至关重要的常见术语和概念,以及 Arm 架构的不同系列。我们描述了架构、系统架构和微架构的功能,以及 Arm 架构术语和概念是如何出现在 Arm 架构参考手册和其他 Arm 文档和资源中。我们还了解了 Arm 架构和其他 Arm 架构的不同系列。

本系列中的其他指南详细介绍了 Arm 架构的各个方面,并提供了示例和说明。

要继续了解 Arm 架构,请参阅我们的Learn the Architecture series of guides。

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

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

相关文章

爬取 2 万多张 Flickr 图片,莫纳什大学复现 10 年间日本樱花开放的时空特征

内容一览:近年来,全球气候变化形势严峻,由此引发的蝴蝶效应,正深刻地影响着人类和大自然。在这一背景下,收集数百甚至数千公里范围内开花模式的数据,了解气候变化如何对开花植物产生影响,成为近…

python -m 是什么命令

python -m 命令是什么意思 首先python --help 可以看到-m的含义:意思是将库中的python模块用作脚本去运行。 python --help 命令显示结果 python -m xxx.py 和python xxx.py 有什么区别 这是两种加载py文件的方式: 叫做直接运行(python xxx.py&#xf…

OpenCV中的RGB与YUV转换

1 基本概念 YUV 颜色空间从模拟电视时代开始就被广泛应用于彩色图像的转换与处理。其基于一个 3x3 的矩阵,通过线性变换将 RGB 像素转换为一个亮度(Luma)分量 Y 以及两个色度(Chroma)分量 U 和 V。由于模拟电视存在着多…

RabbitMQ系列(28)--RabbitMQ使用Federation Queue(联邦队列)解决异地访问延迟问题

前言: 联邦队列可以在多个Broker节点(或者集群)之间为单个队列提供均衡负载的功能。一个联邦队列可以连接一个或者多个上游队列(upstream queue),并从这些上游队列中获取消息以满足本地消费者消费消息的需求。 1、Federation Queue工作原理图 2、添加策…

ELK-日志服务【filebeat-安装使用】

目录 【1】安装Filebeat 【2】配置-测试 【3】配置使用Filebeat 【4】filebeat-收集系统文件日志 【5】配置filebeat,将/var/log/all.log日志采集到es集群中 【6】定制索引名称 【7】收集多个web节点的日志,输出到相同的索引中 【8】filebeat-收…

数据结构--栈

一、栈 数组是一种连续存储、随机访问的线性表,链表属于分散存储、连续访问的线性表。它们每个数据都有其相对位置,有至多一个直接前驱和之多一个直接后继。栈(Stack)和队列(Queue)也属于线性表&#xff0c…

twaver——树中选择子网,拓扑中显示子网里面的拓扑

twaver.network.Network.setCurrentSubNetwork ( currentSubNetwork [animate] [finishFunction] ) 将当前子网设置为指定子网,并且可以设置是否有动画效果,而且能指定设置当前子网结束后执行的动作 Parameters: currentSubNetwork twaver.SubNetwork 子…

【UT学习记录】

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 Part1:Mock Part2:PowerMock Part3:Junit 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文…

即插即用篇 | YOLOv8 引入具备跨空间学习的高效多尺度注意力 Efficient Multi-Scale Attention | 《ICASSP 2023 最新论文》

论文地址:https://arxiv.org/vc/arxiv/papers/2305/2305.13563v1.pdf 该论文展示了通道或空间注意机制在各种计算机视觉任务中产生更明显的特征表示的显著效果。然而,通过通道维度缩减来建模跨通道关系可能会在提取深度视觉表示方面带来副作用。本文提出了一种新颖高效的多尺…

ES6——Promise

promise 含义:异步编程解决方案 特点:1、状态不受外界影响,状态有三种:pending、fulfilled、rejected 2、状态不可逆,只能pending -> fulfilled、pending -> rejected 缺点:无法取消、不设置回调函…

C语言联合体

一、联合体的概念 联合 (union) 是一个能在同一个存储空间里 ( 但不同时) 存储不同类型数据的复合数据类型。 大致结构如下: n union foo /* 定义一个联合类型foo */ n { q int digit; q double bigfl[10]; q char letter; n }baz; /* 定义一个example类型的联合变量…

JVM (simple Version)

简介 JVM 其实就是一个Java进程 , 从操作系统申请一大块内存区域, 供 java 代码使用 . 申请出的内存 , 进一步划分 , 给出不同的用途 . JVM 内存区域划分 : 堆中存放就是 new 出来的对象. (成员变量) 栈 是用来维护方法之间的调用关系 (局部变量) 元数据区(或者叫方法区) 存放的…

计算机毕设 大数据房价数据分析及可视化 - python 房价分析

文章目录 1 课题背景2 数据爬取2.1 爬虫简介2.2 房价爬取 3 数据可视化分析3.1 ECharts3.2 相关可视化图表 4 最后 1 课题背景 房地产是促进我国经济持续增长的基础性、主导性产业。如何了解一个城市的房价的区域分布,或者不同的城市房价的区域差异。如何获取一个城…

自动驾驶与智能网联场地测试一体化装备应用

自动化驾驶层级与结构 L1:能够辅助驾驶员玩车某些驾驶任务制动防抱死系统 (ABS),车身电子稳定系统 (ESP)等,这些配置就是L1级别的运用。 L2:部分自动化,在L2的级别里,必须要具备的是自适应巡航系统,主动车道保持系统自动刹车辅助系统以及自动泊车系统等系统。 L3:有条件…

Qt + QR-Code-generator 生成二维码

0.前言 之前使用 libgrencode 生成二维码,LGPL 协议实在不方便,所以需要找一个 github 星星多的,代码简单最好 header-only,协议最好是 MIT 或者兼容协议而不是 GPL 或者 LPGL。 QR-Code-generator 正好符合这个要求&#xff0c…

Linux和Shell笔记-1相关概念理解

Unix和Linux关系 UNIX是最早的商业操作系统之一,由贝尔实验室(AT&T Bell Laboratories)于 1970 年代开发。UNIX 是一个多用户、多任务的操作系统,具有强大的命令行界面和可扩展性。 Linux 是一个开放源代码的类 UNIX 操作系统…

​LeetCode解法汇总931. 下降路径最小和

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matr…

小白到运维工程师自学之路 第五十一集 (三剑客之sed)

一、概述 sed是一个流式文本编辑器,可以对文本进行搜索、替换、删除等操作。它是一个非交 互式的命令行工具,通常用于处理大量的文本数据。sed的工作方式是逐行读取输入文 本,按照预定义的命令对每一行进行处理,并输出结果。它…

使用STM32 再实现电动车防盗钥匙扣

实现目标 1. 点击遥控器 A 按键,系统进入警戒模式,一旦检测到震动(小偷偷车),则喇叭发出声响报警 2. 点击遥控器 B 按键,系统退出警戒模式,再怎么摇晃系统都不会报警 硬件介绍 1. 震动传感器…

解决uniapp运行手机基座出现的问题

常见的问题:(往往在更新编辑器版本后会出现以下问题) 问题1.明明已经连接到手机,就是检测不到设备 问题2.同步资源失败,未得到同步资源的授权 解决办法汇总 问题1解决办法: 方法一:进入HBuild…