购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 Arm架构及分类

术语“架构”(Architecture)指的是功能规范,在Arm架构下,指的是处理器的功能规范。体系架构指定处理器的行为方式,如处理器的指令和指令的作用。我们可以将架构看作软件和硬件之间的“契约”,该架构描述了软件可以依赖硬件提供的功能。有些特性是可选的,这将在后面的微结构中进行说明。

Arm CPU架构使用先进的微架构技术以支持广泛的性能点,包括Arm处理器的小型实现和高级设计的高效实现。它指定了如下内容。

(1)指令集:每条指令的功能,以及该指令在存储器中的表示方法(其编码)。

(2)寄存器集:寄存器的数量、大小、功能,以及它们的初始状态。

(3)异常模型:不同特权级、异常类型,以及采纳异常和从异常返回时发生的事情。

(4)存储器模型:存储器访问的顺序,以及当软件必须执行准确维护操作时的缓存行为。

(5)调试、跟踪和统计:如何设置和触发断点,以及跟踪工具可以捕获的信息和采用的方式。

Arm CPU架构最初基于精简指令集计算机(Reduced Instruction Set Computer,RISC)原理并包括以下各项。

(1)统一寄存器文件,其中的指令不限于对特定寄存器执行操作。

(2)一种加载/保存架构,其中的数据处理仅在寄存器内容上进行,而不是直接在存储器内容上进行。

(3)简单的寻址模式,其中所有的加载/保存地址仅由寄存器内容和指令字段确定。

随着时间的推移,Arm CPU架构不断发展,其新功能可满足新兴市场的需求,并可改善CPU的功能、安全性和性能。

最新的M-Profile架构是Armv8.1-M,是当前Armv8-M架构的扩展。它带来了许多新的功能,包括用于信号处理应用的通用矢量扩展,称为M-Profile矢量扩展(M-Profile Vector Extension,MVE)。在Arm Cortex-M处理器中,MVE被命名为Helium。除MVE之外,还有许多其他架构增强功能。

Arm公司提供了3种架构概要(Profile):A-Profile、R-Profile和M-Profile。

(1)A-Profile(应用):用于复杂的计算应用领域,如服务器、移动电话和汽车主机。

(2)R-Profile(实时):用于需要实时响应的地方。例如,安全关键应用或需要确定性响应的应用,如医疗设备或车辆转向、制动和信号。

(3)M-Profile(微控制器):用于能效、功耗和尺寸很重要的地方。M-Profile特别适用于深度嵌入式芯片。最近,简单的物联网(Internet of Things,IoT)设备已经成为M-Profile CPU的关键应用,如应用在小型传感器、通信模块和智能家居产品中。

Arm架构由内建的调试和可视化工具给予支持。

不同架构的概要和版本号写作Armv8-A、Armv7-R、Armv6-M。其中,A、R和M表示相关的架构框架(概要),6、7和8表示架构的不同版本。Arm IP具有单独的产品编号。

注:架构不会告诉我们如何构建处理器并真正工作。处理器的构建和设计称为微架构(Micro-Architecture)。微架构告诉我们特定处理器的工作原理。微架构包含以下内容,即流水线长度和布局、缓存的数量和大小、单个指令的周期数,以及实现了哪些可选的特性。例如,Cortex-A53和Cortex-A72都实现了Armv8-A架构,这意味着它们有相同的架构,但是它们的微结构并不相同。例如,Cortex-A53为功耗效率优化微架构,它有8级流水线;而Cortex-A72为性能优化微架构,它有15+级流水线。架构兼容的软件无须修改即可在Cortex-A53或Cortex-A72上运行,因为它们都实现了相同的架构。

1.2.1 M-Profile

Arm公司生产了一整套处理器,它们提供共享通用指令集和程序员模型,并具有某种程度的向后兼容性。M-Profile为深度嵌入式系统提供低延迟和高确定性操作。

1.Armv8.1-M

Armv8.1-M架构将Armv8-M架构带到了新的性能水平,且不影响软件开发的简易性和Arm第三方生态系统的丰富性。新架构包括MVE,可使机器学习和信号处理性能水平显著提升。它实现了简化的程序员Cortex-M处理器模型,为数百万名设计人员带来了先进的计算能力。在Arm Cortex-M处理器中,MVE被命名为Arm Helium技术。该架构还通过Arm TrustZone增强了系统范围的安全性。

Armv8.1-M架构包括以下功能。

(1)提供了一种有效的矢量处理功能,可加速信号处理和机器学习算法,称为MVE。

(2)在矢量扩展中支持其他数据类型,如半精度浮点数(FP16)和8位整数(INT8)。

(3)低开销循环。

(4)聚集加载,分散保存存储器访问。

Arm8.1-M有以下几个可选的新架构扩展。

(1)Helium-MVE用于未来的Arm Cortex-M处理器。

(2)低开销分支扩展。

(3)用于MPU的特权从不执行(Privileged Execute Never,PXN)扩展。

(4)可靠性、可用性和可服务性(Reliability,Availability and Serviceability,RAS)扩展。

(5)用于调试特性的额外扩展。

2.Armv8-M

Armv8-M架构针对深度嵌入式系统进行了优化。它实现了程序员模型,专为低延迟处理设计。基于受保护存储器系统架构(Protected Memory System Architecture,PMSA),它可以实现存储器保护单元(Memory Protection Unit,MPU)(可选)。它支持T32指令集的“变种”。

Armv8-M架构包含以下功能。

(1)新系统级程序员模型。

(2)基于PMSAv8,允许一个可选的MPU。

(3)仅支持T32指令集的子集。

(4)各种框架扩展,以实现设计的高度灵活性和可扩展性。

Armv8-M有以下几个可选的架构扩展。

(1)主扩展。这提供了与Armv7-M的向后兼容性,并且是浮点和DSP扩展所需的。

(2)安全扩展。这也可以成为Armv8-M的Arm TrustZone。

(3)浮点扩展。这要求实现主扩展。

(4)调试扩展。

(5)数字信号处理扩展。这需要实现主扩展。

3.Armv7-M

Armv7-M架构为简单的流水线设计提供了机会,可在广泛的市场和应用中提供系统性能水平。它提供低周期数执行最低的中断延迟和无缓存操作,专为深度嵌入式系统设计。它支持T32指令集的“变种”,专为整体规模和确定性操作比绝对性能更重要的实现设计。

Armv7-M有以下两个可选的架构扩展。

(1)数字信号处理扩展。

(2)浮点扩展。

4.Armv6-M

Armv6-M架构是Armv7-M架构的子集,提供以下功能。

(1)Armv7-M程序员模型的轻量级版本。

(2)调试扩展,包含用于调试支持的架构扩展。

(3)支持T32指令集。

(4)向上兼容Armv7-M。为Armv6-M开发的应用级和系统级软件可以在Armv7-M上不进行任何修改地执行。

Armv6-M有以下两个可选的架构扩展。

(1)非特权/特权扩展。这允许Armv6-M系统使用与Armv7-M相同的权限级别。

(2)PMSA扩展。这需要实现非特权/特权扩展。

M-Profile与CPU的对应关系如表1.1所示。

表1.1 M-Profile与CPU的对应关系

1.2.2 R-Profile

R-Profile为安全关键环境提供了高性能处理器。

1.Armv8-R

Armv8-R架构是针对实时框架的最新Arm CPU架构。它引入了最高安全级别的虚拟化,同时保留了基于MPU的PMSA。它支持A32和T32指令集。

Armv8-R架构引入了很多功能,允许为安全关键环境设计和实现高性能处理器。它的功能如下。

(1)没有重叠的存储区域。

(2)有与Armv8-A模型兼容的新异常模式。

(3)支持客户操作系统的虚拟化。

(4)支持双精度浮点数和高级单指令多数据流(Single Instruction Multiple Data,SIMD)(可选)。

2.Armv7-R

Armv7-R架构实现了具有多种模式的传统Arm CPU架构,并支持基于MPU的PMSA。它支持Arm(32位)和Thumb(16位)指令集。

该架构支持以下多种扩展。

(1)多处理扩展。这是一组可选扩展,提供了一组增强多处理功能的特性。

(2)通用定时器扩展。这是一个可选扩展,为架构提供系统定时器和低延迟寄存器接口。

(3)性能监视器扩展。该扩展定义了推荐的性能监视器实现,并为性能监视器保留了寄存器空间。

R-Profile与CPU的对应关系如表1.2所示。

表1.2 R-Profile与CPU的对应关系

1.2.3 A-Profile

A-Profile瞄准移动和企业等高性能市场。

1.Armv8-A

Armv8-A架构是针对A-Profile的最新一代Arm CPU架构。它引入了使用64位和32位执行状态的能力,分别称为AArch64和AArch32。AArch64执行状态支持A64指令集,保存64位寄存器中的地址,并允许基本指令集中的指令使用64位寄存器进行处理。AArch32执行状态保留了与Armv7-A架构的向后兼容性,并增强了Armv7-A架构,因此AArch32执行状态可以支持AArch64执行状态中包含的某些功能,支持T32和A32指令集。

Armv8-A是唯一支持AArch64执行状态的配置文件,其中,AArch64和AArch32之间的关系称为进程间处理。此外,Armv8-A架构还允许不同级别的AArch64和AArch32。例如:

(1)AArch64只设计。

(2)AArch64设计也支持AArch32操作系统/虚拟机。

(3)AArch64仅支持(非特权)应用程序级别的AArch32。

Armv8-A架构引入了大量的变化,使得它能够实现更高性能的处理器,这些变化如下。

(1)大物理地址。这使得处理器能够访问容量超过4GB的物理存储器。

(2)64位虚拟寻址。这使得虚拟存储器容量超过4GB的限制,对于使用存储器映射文件I/O或稀疏寻址的现代桌面和服务器软件非常重要。

(3)自动事件信令。这使得它能实现高效的和高性能的自旋锁。

(4)更大的寄存器文件。它有31个64位通用寄存器,提升了性能并减少了堆栈的使用。

(5)高效的64位立即生成。这使得它对文字池的需求较少。

(6)大的PC相对寻址范围。±4GB寻址范围,用于在共享库和与位置无关的可执行文件中进行高效的数据寻址。

(7)额外的16KB和64KB转换颗粒。这降低了转换旁视缓冲区(Translation Lookaside Buffer,TLB)的缺失率和搜索页面的深度。

(8)新异常模型。这降低了操作系统和监控程序软件的复杂度。

(9)高效的缓存管理。用户空间缓存操作可改善动态代码生成的效率。使用数据缓存零指令可以快速清除数据缓存。

(10)硬件加速的加密。与前一代框架相比,它提供3倍到10倍的软件加密性能。这对于小颗粒解密和加密非常有用,因为颗粒度太小以至于不能有效地卸载到硬件加速器,如HTTPS。

(11)加载-获取、保存-释放指令。这是专为C++11、C11、Java存储器模型设计的功能。它们通过消除显式的存储器屏障指令来提高线程安全代码的性能。

(12)NEON双精度浮点高级SIMD。这使得SIMD矢量化能应用于更广泛的算法集,如科学计算、高性能计算(High Performance Computing,HPC)和超级计算机。

2.Armv7-A

Armv7-A架构引入了架构框架的概念,该架构框架已经进入Armv8-A架构。它实现了具有多种模式的传统Arm CPU架构,支持基于MMU的VMSA,并支持Arm(A32)和Thumb(T32)指令集。

该架构还支持以下多种扩展。

(1)安全扩展。这是一组可选扩展,提供了一组便于开发安全应用程序的安全功能。

(2)多处理扩展。这是一组可选扩展,提供了一组增强多处理性能的功能。

(3)大物理地址扩展。这是一个可选扩展,提供了一个地址转换系统,在细粒度转换下,支持高达40位的物理地址,要求实现多处理扩展。

(4)虚拟化扩展。这是一组可选扩展,为虚拟机监视器提供硬件支持,称为监控程序(Hypervisor),以在客户与操作系统之间切换。它要求实现安全扩展和大物理地址扩展。

(5)通用定时器扩展。这是一个可选扩展,提供了一个系统定时器和与定时器接口的低延迟寄存器。它是大物理地址扩展或虚拟化扩展的一部分,但是它也可以使用早期版本的Armv7-A架构实现。

(6)性能监视器扩展。此扩展定义了推荐的性能监视器的实现,并为性能监视器保留了寄存器空间。

尽管性能监视器扩展仍然是可选的,但是这些扩展提供的大多数功能都包含在Armv8-A架构中。

A-Profile与CPU的对应关系如表1.3所示。

表1.3 A-Profile与CPU的对应关系 aGhH0WI/Do4/CdbcCXN562rqnQAwKGYKVDlXyiFuL7TdW8xAGg78XOLpN3lEb0PG

点击中间区域
呼出菜单
上一章
目录
下一章
×