DP Reading: Kunpeng Processor Architecture and Programming (7) ARMv8-A Architecture


Hello everyone, I am DP, a novice who has recently started to study processors and servers. The following are my notes while reading the second chapter of Kunpeng processor architecture and programming ARMv8-A architecture . I hope to deepen your understanding of this architecture. understanding, but this is a very low-level principle, and it is also the underlying architecture of many cloud-native servers. ARM-ARMv8-A

1. ARMv8-A processing unit core architecture

In November 2011, ARM released the first new-generation ARMv8 processor architecture that supports 64-bit instruction sets and introduced a series of new features, which also became the technical basis for ARM to enter the server processor market.
Since 2013, ARM has successively released the standard document of the ARMv8 processor architecture " ARM Architecture Reference Manual ARMv8: ARMv8-A Architecture Description (ARM ® Architecture Reference Manual ARMv8, for ARMv8-A Architecture Profile)", which ARM refers to as the document For Arm ARM (hereinafter referred to as " ARMv8-A Architecture Specification "), the latest version of this document (as of press time) was released on June 30, 2023 (Ja-02) ARM official website link

The ARMv8-A architecture belongs to the 64-bit processor architecture and is backward compatible with ARMv7. Of course, it is also backward compatible with ARMv9 (after all, it has been released for 12 years). Although in order to maintain compatibility, the ARMv8-A architecture still supports the 32-bit A32 of the ARMv7 architecture. The instruction set (formerly known as the ARM instruction set) retains all the features of the ARMv7 architecture's TrustZone technology , virtualization technology, and enhanced SIMD (Neon) technology. However, the A64 instruction set is not a 64-bit expansion technology directly added on the basis of the original 32-bit A32 instruction set. In order to reduce complexity and improve efficiency, when the ARMv8-A architecture processor executes 64-bit instructions, the 32-bit instructions will be Stop working , thus ensuring that the processor can complete 64-bit calculations in a low power consumption state.

1. Processor operation mode of ARMv8-A architecture

The ARMv8-A architecture introduces two execution states (Execution State) : AArch64 (64-bit ARM architecture), AArch32 (32-bit ARM architecture)

The newly introduced 64-bit processor architecture AArch64 supports 64-bit general-purpose registers, 64-bit SP (stack pointer) and 64-bit PC (program counter), enabling 64-bit data processing and extended virtual addresses. Regardless of whether it is a 64-bit A64 or a 32-bit A32 instruction set, the instruction length is 32 bits (4 bytes). From the programmer's point of view, only the number of bits in the register is different.

Both AArch64 and AArch32 execution states support SIMD (Singe Instruction Multipul Date, Single Instruction Stream Multiple Data Streams) and floating-point arithmetic instructions. And the enhanced SIMD instruction and floating-point operation instruction can operate on **SIMD and floating-point register (SIMD&FP Register)**.

In the AArch32 execution state, the SIMD instructions in the basic instruction set (Base Instruction Set, except for the enhanced SIMD instructions and floating-point instructions) can operate on 32-bit general-purpose registers.

支持
支持
操作
支持
操作
AArch64 (64位ARM体系结构)
AArch32 (32位ARM体系结构)
SIMD指令集
浮点运算指令集
SIMD和FP寄存器
基本指令集

a. ARMv8-A execution architecture

A. AArch64 Execution Status

The AArch64 execution state is a 64-bit execution state introduced in the ARMv8-A architecture. It provides higher performance and better code density for ARM processors.

In the AArch64 execution state, the ARMv8-A processor can use a 64-bit instruction set that includes more registers, richer operand types, and a more complex instruction pipeline. Compared to the previous 32-bit ARM implementation state (AArch32), AArch64 has the following features:

1. 64 位寻址和数据处理:AArch64 执行状态支持 64 位寻址和数据处理能力,可以处理更大的地址空间和更大的数据。

2. 更多的通用寄存器:AArch64 提供了更多的通用寄存器,从 16 个增加到 31 个,这样可以提供更多的寄存器用于保存临时变量和计算结果,减少了内存访问次数,提高了性能。

3. 扩展指令集:AArch64 引入了新的指令集扩展,如 SIMD(Single Instruction, Multiple Data)和浮点指令集扩展,提供了更高效的并行计算能力和更强大的浮点运算能力。

4. 更好的代码密度:AArch64 的指令编码更为紧凑,能够在相同的指令数量下执行更多的操作,从而提高了代码密度,减少了存储空间的占用。

The introduction of AArch64 execution state in the ARMv8-A architecture enables ARM processors to handle more complex and compute-intensive tasks, delivering higher performance and power efficiency while maintaining compatibility with previous 32-bit ARM applications. This makes ARMv8-A processors widely used in various fields such as mobile devices, servers, Internet of Things, etc.

64位寻址和数据处理
更多的通用寄存器
扩展指令集
更好的代码密度
AArch64 (64位ARM体系结构)
64位寻址和数据处理方式
31个通用寄存器
SIMD和浮点指令集扩展
更紧凑的指令编码

B. AArch32 Execution Status

AArch32 execution state is a 32-bit execution state in the ARMv8-A architecture. It is the old 32-bit execution state retained by the ARMv8-A architecture for backward compatibility.

In the AArch32 execution state, the ARMv8-A processor can run applications using a 32-bit instruction set while maintaining compatibility with the previous ARMv7-A architecture. AArch32 execution state has the following characteristics:

1. 32 位寻址和数据处理:AArch32 执行状态使用 32 位地址和数据处理方式,与之前的 ARMv7-A 架构相同。它可以处理较小的地址空间和较小的数据类型。

2. 通用寄存器和指令集:AArch32 执行状态提供了 16 个通用寄存器,每个寄存器都是 32 位宽度。指令集包括 ARM 和 Thumb-2 指令集,其中 Thumb-2 是一种指令集压缩技术,可以提高代码密度。

3. 兼容性:AArch32 执行状态兼容以前基于 ARMv7-A 架构的软件和操作系统。这意味着现有的 32 位 ARM 应用程序可以在 ARMv8-A 架构上继续运行,而无需进行重写或修改。

The AArch32 execution state is primarily used to run legacy 32-bit ARM applications to ensure backward compatibility. While the ARMv8-A architecture introduced the AArch64 execution state to support higher performance 64-bit applications, AArch32 is still the widely used execution state in many embedded systems and mobile devices.

32位寻址和数据处理
16个通用寄存器
ARM和Thumb-2指令集
兼容性
AArch32 (32位ARM体系结构)
ARMv7-A 架构
32位地址和数据处理方式
16个通用寄存器
ARM和Thumb-2指令集

b. Instruction set supported by ARMv8-A architecture

The instruction sets supported by the ARMv8-A architecture include the following:

  1. A64 (AArch64) instruction set: This is the 64-bit instruction set introduced by the ARMv8-A architecture, also known as the AArch64 execution state. The A64 instruction set provides more efficient addressing and data processing capabilities, more general-purpose registers and richer operand types, and supports more complex instruction pipelines and parallel computing.

  2. A32 (AArch32) instruction set: This is the 32-bit instruction set inherited from the ARMv7-A architecture in the ARMv8-A architecture, also known as the AArch32 execution state. The A32 instruction set is compatible with the previous ARMv7-A architecture and maintains compatibility with previous 32-bit ARM applications.

  3. T32 (Thumb-2) instruction set: This is a 16-bit/32-bit hybrid instruction set with instruction compression technology. The T32 instruction set can execute more instructions in a smaller code space, improving code density and storage space utilization. The Thumb-2 instruction set is widely used in embedded systems and mobile devices.

除了上述指令集,ARMv8-A 架构还支持一些可选的指令集扩展,例如:

  • NEON SIMD(Single Instruction, Multiple Data)指令集扩展:提供了并行计算能力,用于加速图形处理、媒体处理和信号处理等应用。
  • FP(浮点)指令集扩展:提供了更强大的浮点运算能力,用于科学计算、图形渲染和数字信号处理等应用。
  • Cryptography 指令集扩展:提供了硬件加速的密码学功能,包括对称加密、哈希函数和公钥加密算法等。

这些指令集扩展可以根据具体的 ARMv8-A 架构实现进行配置,以满足不同领域和应用的需求。

支持
支持
可选
可选
可选
A64 指令集
A32 指令集
T32 指令集
NEON SIMD
浮点指令集
Cryptography指令集

c. ARMv8-A 支持的数据类型

ARMv8-A支持的数据类型包括以下几种:

  • 整数数据类型。在AArch32执行状态,通用寄存器文件包含32位寄存器,两个32位寄存器可以支持一个双字。在AArch64执行状态,四字整形数据类型(Quadword)仅适用于SIMP&FP寄存器文件。
  • 浮点数据类型。在AArch32执行状态,不支持浮点数据类型。在AArch64执行状态,浮点数据类型仅适用于SIMO&FP寄存器文件。
  • 矢量数据类型。在AArch64执行状态,SIMP&FP寄存器文件包含128位寄存器,可以保存一个或多个压缩元素,所有元素的大小和类型都相同。乘法指令必须区分整数和浮点数据类型。
32位寻址和数据处理
16个通用寄存器
ARM和Thumb-2指令集
兼容性
64位寻址和数据处理
更多的通用寄存器
扩展指令集
更好的代码密度
四字整形数据类型
浮点数据类型
矢量数据类型
AArch32 (32位ARM体系结构)
ARMv7-A 架构
64位地址和数据处理方式
31个通用寄存器
ARM和Thumb-2指令集
AArch64 (64位ARM体系结构)
SIMD和浮点指令集扩展
更紧凑的指令编码
四字整形数据类型 (适用于SIMD&FP寄存器文件)
浮点数据类型 (适用于SIMD&FP寄存器文件)
矢量数据类型 (SIMD&FP寄存器文件包含128位寄存器)

d. ARMv8-A 的异常等级与安全模型

ARMv8-A架构支持不同的异常级别,这些级别在体系结构中被称为异常级别(Exception Levels,EL) 。数字越高,异常等级越高。具体的异常级别包括EL0、EL1、EL2和EL3

EL0是最低的异常级别,大多数应用代码运行在这个级别。操作系统运行在EL1,而hypervisor运行在EL2。EL3是底层固件和安全代码所保留的级别。

ARMv8-A还提供了两种安全状态:Secure(Secure World)和Non-Secure(Normal World)。这种设计使得一个操作系统可以和一个可信赖的操作系统同时运行在同一个硬件上,并对软件或硬件的攻击提供保护。

Secure World 中,运行着Secure firmware和Trusted OS。这些组件提供安全的启动和执行环境,可以确保系统的可信性和安全性。

Non-Secure World 中,运行着Guest OS和Hypervisor。Guest OS是通过虚拟化技术运行的,相互之间并不知道对方的存在。Hypervisor则负责管理和运行多个guest OS,每个OS在各自的世界中运行,并且Hypervisor也提供了对虚拟化的支持。

Virtualization Support
Security and Firmware Services
EL0 (User/Application Mode)
EL1 (Kernel Mode/Supervisor Mode)
EL2 (Hypervisor Mode)
EL3 (Secure Monitor Mode/Firmware)
Secure World (Secure state)
Non-Secure World (Normal state)
Hypervisor
Secure Monitor
Trusted OS
Secure Firmware
Guest OS

这种安全模型的设计提供了对系统安全性的保护,特别是在涉及到虚拟化、多操作系统和系统安全性的场景中。

e. ARMv8-A的虚拟化架构

ARMv8-A的虚拟化架构包括以下关键组件:

  1. 虚拟化扩展(Virtualization Extensions):这一扩展提供了对虚拟化硬件的支持,包括虚拟机监视器(Hypervisor)和客户操作系统。虚拟化扩展使得Hypervisor可以创建和管理多个虚拟机,每个虚拟机运行一个客户操作系统。
  2. 嵌套虚拟化(Nested Virtualization):这是一种允许在虚拟机内运行其他虚拟机的技术。嵌套虚拟化在Hypervisor内部运行一个客户操作系统,该客户操作系统再在其内部运行另一个客户操作系统。
  3. 虚拟化异常处理(Virtualization Exception Handling):这一特性允许Hypervisor捕捉和处理虚拟机的异常事件,以确保虚拟机的安全和稳定运行。
  4. 虚拟化存储器一致性(Virtualization Storage Coherence):这一特性确保了在多级页表的虚拟化存储器管理下,不同虚拟机的内存访问的一致性。

这些组件共同构成了ARMv8-A的虚拟化架构,为Hypervisor和客户操作系统的运行提供了硬件支持。

ARMv8-A
虚拟化扩展
Nested Virtualization
虚拟化异常处理
虚拟化存储器一致性
Hypervisor
客户操作系统

f. ARMv8-A的调试支持

ARMv8-A架构支持两种调试类型:外部调试和self-hosted调试。在外部调试中,开发工具运行在主机上,而目标系统通过调试接口连接到主机。在self-hosted调试中,开发工具在目标系统上运行,不需要外部硬件。

ARMv8-A体系结构提供了一些调试特性,包括:

1. 侵入式和非侵入式调试:侵入式调试会暂停指令的执行,而让调试器检查和修改被调试系统的状态。非侵入式调试允许调试器在不停止目标系统的情况下访问和检查系统资源。
2. 硬件调试和软件调试:硬件调试通过特定的硬件接口进行调试操作,而软件调试通过运行在目标系统上的调试软件进行。
3. 断点和观察点:断点和观察点是常用的调试工具,它们允许开发人员在特定条件下暂停程序的执行,或者观察程序的运行状态。

总的来说,ARMv8-A的调试支持为开发人员提供了灵活和强大的工具,帮助他们进行应用程序的开发和调试。

2. ARMv8-A 架构的寄存器

ARMv8-A系统寄存器
AArch64状态下的通用寄存器
AArch64执行状态下的处理状态PSTATE寄存器
AArch64执行状态下的特殊功能寄存器

a. ARMv8-A系统寄存器

ARMv8-A架构包含多个系统寄存器,这些寄存器被用于控制和监控系统的各种特性和状态。以下是一些ARMv8-A系统寄存器的概述:

  1. 体系结构寄存器(Architectural Registers):这些寄存器定义了处理器的体系结构,包括指令集架构和处理器状态等。
  2. 程序计数器(Program Counter):程序计数器用于存储当前正在执行的指令的地址。
  3. 链接寄存器(Link Registers):链接寄存器用于保存返回地址,使得函数调用可以正确返回。
  4. 栈指针(Stack Pointer):栈指针用于指向栈顶的地址,用于存储和恢复堆栈中的数据。
  5. 状态寄存器(Status Registers):状态寄存器用于保存处理器的状态信息,如溢出标志、零标志、符号标志等。
  6. 控制寄存器(Control Registers):控制寄存器用于控制处理器的操作模式、异常处理和系统配置等。
  7. 调试寄存器(Debug Registers):调试寄存器用于支持调试操作,如设置断点、观察点等。
  8. 系统级控制寄存器(System Control Registers):这些寄存器用于控制系统的硬件特性,如内存控制器、电源管理、中断控制器等。

这些系统寄存器通过指令或特定的硬件操作进行访问和控制,为开发人员提供了管理和监控系统运行状态的机制。

体系结构寄存器
-指令集架构
-处理器状态
程序计数器
-当前指令地址
链接寄存器
-返回地址
栈指针
-栈顶地址
状态寄存器
-溢出标志
-零标志
-符号标志
控制寄存器
-操作模式
-异常处理
-系统配置
调试寄存器
-断点
-观察点
系统级控制寄存器
-内存控制器
-电源管理
-中断控制器

b. AArch64状态下的通用寄存器

在AArch64架构下,通用寄存器是指用于存储操作数、计算结果和临时数据的寄存器。AArch64架构提供了31个通用寄存器,每个寄存器的大小为64位。

通用寄存器的命名方式为Xn,其中n表示寄存器的编号,范围从0到30。

下面是AArch64状态下的通用寄存器列表:

  • X0 - X30: 用于存储操作数、计算结果和临时数据。
  • XZR (X31): 零寄存器,始终为零。
  • SP (Stack Pointer): 栈指针寄存器,用于指向栈的顶部。
  • PC (Program Counter): 程序计数器寄存器,用于存储下一条将要执行的指令的地址。

这些通用寄存器在程序中广泛用于存储、传递数据以及控制程序流程。需要注意的是,通用寄存器的使用需遵循架构规范,避免出现不合法、冲突的寄存器用法。

c. AArch64执行状态下的处理状态PSTATE

在AArch64执行状态下,处理状态PSTATE被用于控制处理器的操作模式和状态。PSTATE寄存器包含多个位字段,每个位字段对应于特定的状态标志或控制信号。

PSTATE的位结构如下:

PSTATE = (SPSel | DAIFSet | DAIFClr | ATS | SPAnded | nSX投 | nA Flag | nF Flag | nZ Flag | nC Flag)

其中,每个字段的含义如下:

  • SPSel:选择栈指针,0表示使用主栈指针,1表示使用辅助栈指针。
  • DAIFSet:设置异常掩码标志,该位设置为1时,异常不会被触发。
  • DAIFClr:清除异常掩码标志。
  • ATS:选择访问权规范标签,0表示使用当前的规范标签,1表示使用被访问的地址所关联的规范标签。
  • SPAnded:栈访问条件,0表示在堆栈边界上执行边界检查,1表示在堆栈内部执行边界检查。
  • nSX投:状态切换控制,该位控制处理器是否切换到特权执行状态。
  • nA Flag、nF Flag、nZ Flag、nC Flag:异常标志位,这些位用于存储算术、浮点、零、溢出异常的状态。

PSTATE寄存器中的这些位字段提供了对处理器操作模式的控制和异常处理机制的监控。通过设置或清除这些位字段,可以控制处理器的行为和操作模式。

d. AArch64 执行状态下的特殊功能寄存器

在AArch64架构下,**特殊功能寄存器(Special Purpose Registers)**是用于控制和管理系统的寄存器。这些寄存器承担着特定的功能,例如处理器状态、异常处理、存储器管理、定时器等。

以下是AArch64执行状态下的一些常见特殊功能寄存器:

  1. CPSR (Current Program Status Register): 当前程序状态寄存器,用于存储当前执行状态的标志位,如条件标志位、执行模式等。

  2. SPSR (Saved Program Status Register): 保存程序状态寄存器,用于在发生异常时保存先前的程序状态。

  3. ELR_ELx (Exception Link Register): 异常链接寄存器,用于保存异常返回地址,在异常处理程序完成后恢复执行。

  4. TTBRx (Translation Table Base Register): 用于存储虚拟地址到物理地址的转换表基址。

  5. TCR (Translation Control Register): 用于设置和控制内存访问的转换和保护属性。

  6. SP_ELx (Stack Pointer Exception Level): 用于存储不同异常级别下的栈指针。

  7. CNTPCT (Counter-timer Physical Count Register): 物理计数器寄存器,用于实现计时和定时器功能。

  8. CNTP_TVAL (Counter-timer Timer Value Register): 定时器值寄存器,用于设置定时器的初始值。

  9. CNTP_CTL (Counter-timer Control Register): 计时器控制寄存器,用于控制计时器的启动、停止和中断。

这些特殊功能寄存器的具体作用和用法在ARM体系结构手册中有详细的说明。在编程和系统调试过程中,合理使用这些寄存器可以实现对系统的控制和管理。注意,在访问特殊功能寄存器时,需要遵循架构规范和特权级别的要求。

3. ARMv8-A 架构的异常与中断

ARMv8-A架构具有丰富的异常和中断处理机制,用于响应和处理系统发生的异常和中断事件。以下是ARMv8-A架构中异常和中断的一般概述:

  1. 异常(Exceptions)

    • 异常是指在程序执行过程中发生的非预期事件,例如访问未授权的内存、除零错误等。
    • ARMv8-A架构定义了几种不同类型的异常,包括中断、陷阱、故障和系统调用等。
    • 异常处理是通过保存当前执行状态并切换到异常处理程序来进行的。
  2. 中断(Interrupts)

    • 中断是由外部设备发出的信号,用于通知CPU需要处理某个事件,例如定时器中断、外部设备请求等。
    • ARMv8-A架构支持多种类型的中断,如外部中断、软件中断等。
    • 中断处理是通过保存当前执行状态并切换到中断处理程序来进行的。

在ARMv8-A架构中,异常和中断的处理涉及到以下关键组件和机制:

  • 异常向量表(Exception Vector Table):存储异常和中断处理程序的入口地址。
  • 异常模式(Exception Modes):用于确定异常处理程序的运行环境,如处理器状态、特权级别等。
  • 异常处理程序(Exception Handling):负责处理异常和中断事件,并进行适当的处理和响应。
  • 异常处理器(Exception Handler):在异常发生时,负责切换到适当的异常处理程序,并保存或恢复相关状态。

ARMv8-A架构通过这些组件和机制,提供了强大的异常和中断处理能力,使得系统能够灵活地响应各种异常与中断事件,并保证数据的完整性和系统的可靠性。

二、ARMv8-A处理器单元的存储系统架构

ARMv8-A架构的内存模型

ARMv8-A架构的内存模型包括多种类型的内存访问和组织方式,以下是一些关键概念:

  1. 虚拟地址空间:ARMv8-A架构支持64位虚拟地址空间,这意味着可以访问的虚拟内存地址范围是[0x0000_0000_0000_0000到0xFFFF_FFFF_FFFF_FFFF]。虚拟地址空间被分为多个区域,每个区域具有不同的属性,如可读、可写、可执行等。
  2. 物理地址空间:物理地址空间是内存的实际映射,与虚拟地址空间不同。物理地址空间的大小取决于系统硬件的设计和实现。
  3. 内存访问权限:ARMv8-A架构支持多种内存访问权限级别,包括特权级别、用户级别和其他级别。不同的内存区域可以具有不同的访问权限级别,以确保数据安全和保护。
  4. 内存一致性模型:ARMv8-A架构采用了一种称为MESI(Modified, Exclusive, Shared, Invalid)的一致性模型,用于管理缓存和内存之间的数据一致性。MESI模型定义了四种状态,表示缓存行在不同的处理器之间共享时的状态。
  5. 缓存和TLB(Translation Lookaside Buffer):ARMv8-A架构包含一级和二级缓存,以及一个TLB(Translation Lookaside Buffer),用于加速内存访问和提高内存访问效率。缓存和TLB的设计和管理由硬件自动完成。
  6. 内存管理单元(MMU):ARMv8-A架构包含一个MMU(Memory Management Unit),用于实现虚拟地址到物理地址的转换和管理内存访问权限。MMU通过页表机制实现内存管理。

这些概念共同构成了ARMv8-A架构的内存模型,用于管理和控制对内存的访问,确保数据的一致性和安全性。

ARMv8A
+Virtual Address Space
+Physical Address Space
+Memory Access Permissions
+Memory Consistency Model
+Cache and TLB
+Memory Management Unit
VirtualAddressSpace
-Range
-Attributes
PhysicalAddressSpace
-Size
MemoryAccessPermissions
-Privilege Level
-Access Levels
MemoryConsistencyModel
-MESI Model
CacheAndTLB
-Level 1 Cache
-Level 2 Cache
-Translation Lookaside Buffer(TLB)
MemoryManagementUnit
-Translation
-Memory Access Control

ARMv8-A架构的系统存储管理单元

ARMv8-A架构的系统存储管理单元(System Memory Management Unit,SMMU) 是一种存储器管理单元,它控制着内存的访问和转换。

SMMU在处理器和内存之间插入了一个转换层,使得从处理器发出的虚拟地址可以被转换为物理地址。这样,多个进程可以同时访问物理内存,而不会发生地址冲突。

SMMU还提供了其他一些功能,如内存访问权限控制、缓存和TLB管理等。这些功能可以保护系统的内存安全,并提高内存访问效率。

在ARMv8-A架构中,SMMU是可选的,但推荐使用。SMMU通常被用于操作系统内核中,以便更好地管理内存访问。

三、ARMv8-A架构的服务器特性

ARMv8-A架构具备一些特性,使其在服务器领域得到广泛应用。以下是ARMv8-A架构的一些服务器特性:

1. 多核处理器:ARMv8-A架构支持多核处理器,这对于运行并发工作负载和提高服务器整体性能非常重要。

2. 虚拟化支持:ARMv8-A架构提供硬件虚拟化扩展,如Virtualization Host Extensions(VHE)和Nested
Virtualization。这些功能使ARMv8-A服务器能够同时运行多个虚拟机实例,实现更高的资源利用率和灵活的虚拟化部署。

3. 安全扩展:ARMv8-A架构引入了TrustZone技术,该技术通过硬件支持创建安全区域,以隔离敏感数据和保护系统免受恶意攻击。这对于服务器中处理敏感数据的场景非常重要。

4. 64位寻址和大内存支持:ARMv8-A架构支持64位寻址,使服务器能够访问更大的物理和虚拟内存空间。这对于处理大规模数据和运行内存密集型应用程序非常重要。

5. 高性能计算:ARMv8-A架构在服务器领域也取得了显著进展,通过提供高性能的处理器核心设计、大型缓存以及高带宽的内存接口,使得ARMv8-A服务器能够处理各种计算密集型工作负载。

6. 能耗效率:ARMv8-A架构在能耗效率方面表现出色,这对于数据中心和云计算环境非常重要。低能耗的设计使得ARMv8-A服务器能够降低功耗成本,并减少对散热和能源消耗的需求。

总而言之,ARMv8-A架构的服务器特性包括多核处理器、虚拟化支持、安全扩展、64位寻址和大内存支持、高性能计算以及能耗效率。这些特性使得ARMv8-A架构成为构建高效、灵活和安全的服务器解决方案的理想选择。

ARMv8-A 的服务器架构标准化

ARMv8-A的服务器架构标准化主要由ARM和其他相关组织共同推动和定义。以下是与ARMv8-A服务器架构标准化相关的一些重要组织和标准:

1. ARM:作为ARMv8-A架构的设计和拥有者,ARM在推动ARMv8-A服务器架构标准化方面起到了关键作用。ARM提供了广泛的技术支持和文档,帮助厂商和开发者实现符合ARMv8-A架构标准的服务器产品。

2. ARM Server Base System Architecture (SBSA):ARM SBSA是对基于ARMv8-A架构的服务器硬件和软件的标准化规范。该规范定义了服务器平台的基本要求,包括硬件配置、启动流程、操作系统接口等,以确保不同ARMv8-A服务器的兼容性和可移植性。

3. ARM Server Base Boot Requirements (SBBR):ARM SBBR是对基于ARMv8-A架构的服务器引导过程的标准化规范。该规范定义了服务器引导的基本要求,包括UEFI固件、ACPI、设备树等,以确保服务器引导过程的标准化和互操作性。

4. Linaro Enterprise Group (LEG):Linaro是一个由ARM及其合作伙伴组成的工程组织,致力于促进ARM架构的开源软件生态系统的发展。Linaro Enterprise Group专注于ARM服务器领域,推动ARMv8-A服务器的标准化和开源软件支持。

5. ServerReady:ServerReady是一个由软件和硬件厂商共同发起的倡议,旨在提供对符合ARMv8-A架构标准的服务器进行认证和验证的程序。通过ServerReady认证,厂商可以获得对其产品的认可,增强其市场竞争力。

这些组织和标准共同推动了ARMv8-A服务器架构的标准化工作,并为ARMv8-A架构的服务器产品提供了一致的硬件、软件和生态支持。这有助于提高ARMv8-A服务器的互操作性、可靠性和市场竞争力,并推动ARM架构在服务器领域的广泛应用。

ARMv8-A 的RAS拓展与PMU拓展

ARMv8-A的RAS拓展和PMU拓展都是为了增强ARM处理器的功能和性能而设计的。

  1. ARMv8-A的RAS拓展:

RAS扩展(RAS Extension) 是对ARMv8.2体系结构的强制扩展,也是对ARMv8.0和ARMv8.1体系结构的可选扩展。它主要被用于提高系统的可靠性、可用性和可服务性(RAS)。

RAS扩展提供了一组扩展寄存器,这些寄存器是ARMv8-A体系结构定义的一部分。通过这些寄存器,可以控制和监控系统的关键部分,如内存控制器和中断控制器。

在ARMv8-A中,可以使用一组特定的指令来访问RAS扩展寄存器。这些指令可以用于读取和修改扩展寄存器的值,从而控制系统的行为。

  1. ARMv8-A的PMU拓展:

PMU扩展(Performance Monitoring Unit Extension) 是ARMv8-A体系结构的一部分,主要用于监控系统性能。

The PMU extension provides a way to monitor processor and memory performance metrics such as number of instructions executed, cache hit rate, etc. With these metrics, you can better understand how your system is doing and make adjustments if necessary to improve performance.

The PMU extension provides a powerful set of registers for recording and monitoring system performance. These registers can be used to collect various performance metrics and can be read and modified at runtime.

In ARMv8-A, a specific set of instructions can be used to access the PMU extension registers. These instructions can be used to read and modify the value of the register, thereby controlling the performance monitoring function of the system.

ARMv8A
+RAS Extension
+PMU Extension
RASExtension
+Registers
+Control and Monitoring
+Access Instructions
PMUExtension
+Registers
+Performance Monitoring
+Access Instructions

Official website map
PS: Official website ARMv8-A coordinates ARM-A series official documents

reference:

  1. Kunpeng processor architecture and programming
  2. Arm Architecture Reference Manual for A-profile architecture: Known issues

Guess you like

Origin blog.csdn.net/m0_74037814/article/details/132336552