[V-02] 虚拟化基础-CPU架构(基于AArch64)

ver 0.2
在这里插入图片描述

更多精彩内容,请关注公众号

前言

本文将介绍一下虚拟化的基础知识,硬件体系的架构。敲敲黑板复习一下虚拟化的核心思想: 将硬件资源在空间和时间两个维度进行分割变成易用的形式供上层软件使用。那么首先就要清楚的到底啥是硬件资源,这些硬件资源是怎么联系在一起的,这就是本文要说明的硬件体系的架构。下面章节会介绍典型的基于aarch64的soc的系统架构,然后围绕soc的架构逐步阐述总线、以及各个子系统的作用。
这部分的内容偏向底层,如果之前一点硬件的基础没有读起来可能会有些费劲,但是还是希望大家坚持住,冲出自己的舒适区才能真正的提高自己。

正文

1. AArch64体系架构

1.1 SOC

主板结构

先介绍一个基础的概念soc,全称叫做:System-on-a-Chip,中⽂的的意思就是“把系统都做在⼀个芯⽚上”。我们使用的智能手机的主板上就有soc,它集成了很多⼿机上最关键的部件,⽐如CPU、GPU、内存、也就说虽然它在主板上的存在是⼀个芯⽚,但是它⾥边可是由很多部件封装组成的。⽐如通常我们所说的⾼通888、麒麟950、三星的exynos 4412、A6等等都只是系统部件打包封装(SoC)后的总称。然而各家的打包封装的内容则不尽相同,原因也不尽相同。随着芯⽚的集成化程度提升,很多模块都做到芯⽚的内部,这样做成的⽚上系统(SoC),好处是整个系统功能更内聚,板级⾯积会减少,但是芯⽚的体积却越来越⼤。
先看一下主板的样子,如图1-1所示。这个板子基本上就是一个比较成熟的板子了,经过软硬件测试,外面扣上壳字,加上散热系统,连上摄像头,连上屏幕就可以工作了。那我们的soc在哪里,就是那个“Qualcomm”的小片子。
主板

图1-1 典型的嵌入式设备的主板电路
SOC架构

这个soc可不是通常意义上大家理解的CPU而是一个功能集合的单元,来看一段对8155的介绍。

SA8155是Qualcomm® Snapdragon™新一代为汽车娱乐系统打造的SoC芯片,SoC集成LTE模组。使用的是7nm的制程工艺工艺,超性能和低功能完成结合的车载芯片。SA8155包含如下主要的元器件: 485 CPU \ 640 GPU \ 696 DSP \ 图像处理引擎 \ VPU \ DPU \ NPU \ 定位套装 \ 低功耗LPDDR4X \ X24 LTE Modem.
基于 Arm Cortex 技术的 Qualcomm® Kryo™ 485 CPU
Qualcomm® Adreno™ 640 GPU 提供最高的图形性能和能效
Qualcomm® Hexagon™ 696 DSP,带有四路 Hexagon Vector eXtensions (HVX) 处理器
Qualcomm® Spectra™ 380 图像处理引擎
Adreno 554 VPU 用于高质量、超高清视频编码和解码
Adreno 895 DPU 支持超高清多显示器
Qualcomm® NPU130 神经处理单元,用于高性能机器学习用例
Qualcomm® 定位套件,支持 GPS、GLONASS、北斗、伽利略和 QZSS 系统
四个 16 位高速 LPDDR4X SDRAM,具有可选的低功耗特性
集成 Snapdragon X24 LTE 调制解调器,Cat20 下载速度高达 2.0 Gbps

除了CPU和内存外,上面提到的每一个设备(xPU & xDSP)都是硬件资源,都要被虚拟化。我们来看一下8155的内部的block图,如图1-2所示。可以看到Processors(PE or CPU)只是这个SOC上的一个sub芯片。
8155soc

图1-2 8155的SOC布局
总线架构

那这个SOC上的设备是怎么关联到一起的,要通过一组线链接起来才能工作,而且根据不同的设备的特点连接的这每一组线要有功能的规范才能够协同工作,在SOC设计的领域总线也有成熟的架构,而ARM系列芯片采用的就是高级微控制器总线架构(Advanced Microcontroller Bus Architecture, AMBA),如图1-3所示就是一组典型的基于AAarch64的Soc的总线拓扑架构。
AMBA

图1-3 基于AMBA的总线架构

AMBA是用于ARM架构下系统芯片(SoC)设计中的一种总线架构,由安谋国际科技于1996年开发,它在超大规模集成电路设计中有着重要的作用,准确的说AMBA应该是一个协议族,具体如下:
AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构
AHB (Advanced High-performance Bus) 高级高性能总线
ASB (Advanced System Bus) 高级系统总线
APB (Advanced Peripheral Bus) 高级外围总线
AXI (Advanced eXtensible Interface) 高级可拓展接口
按照AMBA协议规范,SOC上的设备通过硬件总线连接到了一起(主要是连到了Soc中的大脑CPU上),上电后在OS的作用下SOC就可以工作了。下面引用一段ARM官方文档对于AMBA总线的介绍。

The Advanced Microcontroller Bus Architecture, or AMBA, is an open-standard, on-chip interconnect specification for the connection and management of functional blocks in system-on-a-chip (SoC) designs. Essentially, AMBA protocols define how functional blocks communicate with each other.

到这里,我们已经解决了各个设备物理链接的问题。注意,这只是从硬件视角看过去的拓扑,软件工程师是不会在这个总线拓扑上的各个节点的引脚上去发送高低点评信号。底层软件工程师会使用封装好的指令根据手册继续封装服务向上层提供功能。对于上层的软件工程师来说,这个总线架构是透明的,但是要让各个模块有序的配合工作又不能按照总线架构去做软件设计,肯定就有软件层面的架构去把各个设备绑到一起,这个模型就是内存模型,后面会讲到。

1.2 CPU架构

我们了解了SOC架构,总线架构之后,下面就要讲一下CPU的架构了,CPU是虚拟化技术要虚拟的核心组件,肯定要了解一下它的内部结构和工作的原理。
先看一个基于AArch64的SOC设计实例,如图1-4所示。“big and LITTLE processor clusters with GIC-400 do distribute interrupts”所描述的就是一颗CPU,从现在的视角看过去大致有两部分组成: Cortex-Axx代表的核心、GIC-xxx代表的中断控制器。GIC也是AArch64体系的重要组件,后面会有专门的文章叙述,本文还是聚焦ARM的计算单元本身。
SYSARCH

图1-4 基于AArch64的SoC实例
Cortex-Axx

ARM11芯⽚之后,也就是从ARMv7架构开始,ARM的命名⽅式有所改变。新的处理器家族,改以Cortex命名,如图1-5所示。

Arm Cortex and Arm Neoverse are the brand names that are used for the Arm processor IP offerings. Our partners offer other processor brands using the Arm architecture.

ARM list

图1-5 ARM家族图谱

Cortex品牌分为三个系列,分别是 Cortex-A -应⽤处理器、Cortex-R - 实时处理器、Cortex-M - 微控制器。它们的区别如图1-6所示:
A R M

图1-6 A、R、M three architecture profiles

写到这里真的是感慨良多,我们在IC这个领域真的是落后人家太多,如今被各种制裁各种打压。作为长在红旗下的一代人,真的希望我们民族也早日让他们看上15000+页的中文手册,不爽的时候也可以对他们甩出一句“不!”。

架构(Architecture)

ARMvX(如armv8/armv9)是ARM真正的架构,处理器的架构,可以理解为⼀个技术规范、⼀个技术参考、⼀个设计,总之就是⼀个技术栈。有了架构之后,你的产品(core IP)就可以follow这个架构来设计。例如cortex-A710的这⼀款ARM Core IP是ARMv9架构的。而我们的华子应该是买了ARMv8的IP永久授权。
也可以将处理器架构视为硬件和软件之间的规则,该架构描述了软件可以依赖硬件提供哪些功能。

When we use the term architecture, we mean a functional specification. In the case of the Arm architecture, we mean a functional specification for a processor. An architecture specifies how a processor will behave, for example what instructions it has and what the instructions do.
You can think of an architecture as a contract between the hardware and the software. The architecture describes what functionality the software can rely on the hardware to provide. Some features are optional, as we explain in Architecture and micro-architecture.

ARM的架构规范涵盖的内容如图1-7所示:ARM Arch

图1-7 ARM Architecture Specification
CPU微架构(micro-architecture)

到这里,我们已经知道了ARM的品牌矩阵和架构,但是Cortex架构(Architecture)不会告诉我们处理器是如何构建和⼯作的。处理器的构建和设计被称为微架构,微架构(micro-architecture)告诉你处理器是如何⼯作的。例如,Cortex-A53和Cortex-A72都是Armv8-A架构的实现,这意味着它们具有相同的架构,但它们具有⾮常不同的微架构,如图1-8所示。
微架构

图1-8 Cortex-A53 与 A72的架构对比

看一段wikichip上对A77的介绍:

Cortex-A77 (codename Deimos) is the successor to the Cortex-A76, a low-power high-performance ARM microarchitecture designed by ARM Holdings for the mobile market. Deimos was designed by Arm’s Austin, Texas team. This microarchitecture is designed as a synthesizable IP core and is sold to other semiconductor companies to be implemented in their own chips. The Cortex-A77, which implemented the ARMv8.2 ISA, is a high performance core which is often combined with a number of low(er) power cores (e.g. Cortex-A55) in a DynamIQ big.LITTLE configuration to achieve better energy/performance.

big.LITTLE
在解释下big.LITTLE这个概念之前,先了解下主流CPU的微架构有3种设计模式:SMP、AMP、HMP。

Symmetric Multi-Processing (SMP)
• Symmetric Multi-Processing (SMP) is a software architecture that dynamically determines the roles of individual cores.
• Each core in the cluster has the same view of memory and of shared hardware.
• Any application, process, or task can run on any core and the operating system scheduler can dynamically migrate tasks between cores to achieve optimal system load.
• A multi-threaded application can run on several cores at once. The operating system can hide much of the complexity from applications.

Asymmetric Multi-processing (AMP)
• An Asymmetric Multi-processing (AMP) system enables you to statically assign individual roles to a core within a cluster so that, in effect, you have separate cores, each performing separate jobs within each cluster.
• This is known as a function-distribution software architecture and typically means that you have a separate OS running on the individual cores.
• In an AMP system, each task can have a different view of memory and there is no scope for a core that is highly loaded to pass work to one that is lightly loaded.
• There is no requirement for hardware cache coherency in such systems, although there are typically mechanisms for communication between the cores through shared resources, possibly requiring dedicated hardware.

Heterogeneous multi-processing (HMP)
• The term Heterogeneous multi-processing (HMP) finds application in many different contexts.
• It is often conflated with AMP to describe systems that are composed of different types of processors, such as a multi-core ARM applications processor and an application-specific processor (such as a baseband controller chip or an audio codec chip).
• This is best explained using the ARM implementation of HMP technology known as big.LITTLE.

简单的归纳这3种设计模式如下,现代的处理器早就告别了单核处理器的时代,每个CPU上都会部署多个核,从而是CPU能够真正并发的处理多个任务,而怎么部署这些核心,主要有3种形式:
SMP的形式,每个核心都一样,每个核心看见的内存视角也一样。AMP的形式,各个核心分成不同的组,每个组处理的任务也不一样,但是每个组看见的内存视角不一样。HMP,各个核心的可能不一样,但是大家看见的内存视角是一样的,这里的HMP就是big.LITTLE架构。
从A75开始,ARM提出了⼀个新的多核⼼管理系统单元,叫做DSU。通过DSU模块,CPU设计者可以随意摆放不同架构的核⼼并共享L3缓存,减少不同架构核⼼直接传递数据损耗。在DSU架构之前,每个Cluster需要摆放同架构CPU,如将4个A73处理器放在⼀个Cluster中,将4个A53放在另外⼀个Cluster,这两个Cluster的数据相互访问会有⼀定的连接损耗,如图1-9所示。这么搞的主要原因就是为了降低成本和功耗,HMP结构的CPU支持动态关闭Core的能力,重度计算的场景用算力高的Cores,轻度算力的场景使用Little Cores,关闭不用的Cores。
DIQ

图1-9 Big.LITTLE High Level Layout

下面来看一个具体的CPU微架构的实例,来看一看物理CPU(Physical CPU)的一个core到底有哪些组件组成,如图1-10所示。
A77 MicroARCH

图1-10 Cortex-A77 Individual Core MicroARCH

终于我们到了一个具体的core了,从图1-10可以看出,一个CPU的core主要由3部分组成:Front End、Execution Engine、 Memory subsystem。尽管经过了高度的抽象,但是看上去还是非常的复杂。这么复杂的硬件系统,其实就是为了完成一个任务:取指、译码、指令分派、指令发射、指令执⾏到数据读写。我们大致叙述一下里面几个核心的几个组件的作用。
(1) 三级缓存(L1、L2、L3),我们辛苦写得代码就是经过这样一级一级(不能跨越)的传递从内存传递到CPU去执行,被代码操作的数据也是同样的这样一级一级的传递到CPU上去的。其中,L1和L2是核间独立的,而L3是核间共享的(编码时要注意核间一致性问题)。
(2) 分支预测单元(BPU) 我们看到图中的每个core的中都有不止一个ALU,说明现代的处理器能够同时处理多条指令。那么在多级流⽔线系统中,在执⾏分⽀判断指令时,系统如果不知道下⾯⾛哪⼀条分⽀,需要等到分⽀执⾏出结果才可以再获取正确的指令。为了提升流⽔线性能,现代处理器中提供了⼀个分⽀预测单元(BPU),⽤来预测常⽤路径,并提前进⾏指令预取,确保流⽔线被填充完整。
(3) Decoder 译码单元,在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进⾏拆分和解释,识别区分出不同的指令类别以及各种获取操作数的⽅法。指令有很多种,有进⾏各种运算的指令、控制下⼀条命令的指令、对内存进⾏读写的命令,还有对CPU进⾏控制的指令。
(4) Execution Engine 在取指令和指令译码阶段之后,接着进⼊执⾏指令(Execute,简称EX)阶段。此阶段的任务是完成指令所规定的各种操作,实现具体指令的功能。为此,CPU的不同部分的组件被连接起来,以执⾏所需的操作。根据指令需要,有可能要访问主存,读取操作数,这样就进⼊了访存取数的阶段。此阶段的任务是:根据指令中的地址码,经过MMU将虚拟地址转化成物理地址,根据物理地址得到操作数在cache或主存中的地址,并从cache或主存中读取该操作数⽤于运算。执行结束后,进入回写阶段。结果写回(Write Back,简称WB)阶段⼀般把执⾏指令阶段的运⾏结果数据写回到内部寄存器中,以便被后续的指令快速地存取。在有些情况下,结果数据也可被写⼊相对较慢、但较廉价且容量较⼤的主存,这个过程要也要经过一级一级的缓存。
(4) Register 寄存器(通⽤寄存器和系统寄存器),可⽤于存储需要被译码和执⾏的指令、数据、地址等。CPU从内存中读取指令进⾏译码并执⾏,执⾏的过程中需要去访问内存中的数据,CPU内部的寄存器可以暂存中间的指令和数据等信息,通常说的CPU的context指的就是CPU寄存器值。

通用CPU逻辑微架构
上面我们是以Cortex-A77为例描述了一颗CPU的core的物理结构,还是非常的复杂,各个模块的之间的逻辑关系还不是很清晰,下面我们从逻辑层面对CPU的架构做一下阐述,如图1-11所示。
Logical MicroARCH

图1-11 CPU和主存协同工作的逻辑架构

从CPU的功能出发,可以简要分成三个逻辑模块:
(1) Control Unit: CPU的指挥中⼼,协调数据的移动;控制器⼜称为控制单元(Control Unit,简称CU),是计算机的指挥中⼼,只有在它的控制下,整个CPU才能够有条不紊地⼯作、⾃动执⾏程序。CU包括指令寄存器、指令计数器,其中指令寄存器存放当前正在执⾏的指令,指令计数器总是指向下⼀条要执⾏指令的地址。
(2) ALU: 运算器是⼀个负责算术运算和逻辑运算的模块,主要包含算术逻辑单元(Arithmetic Logic Unit,简称ALU)和浮点运算单元(Floating Point Unit,简称FPU)。
(3) Register: 寄存器的主要功能是存储数据、地址及指令,并且能够⾼速、⾃动地完成数据的存储。寄存器是有记忆功能的器件,⽽且采⽤两种稳定状态0或1来记录数据信息,所以CPU中的程序和数据都要转换为⼆进制才可以存储和操作。

CPU的根本任务是执⾏指令,我们常说的取指-译码-执⾏-访存-写回,就是典型的指令Pipeline操作。

CPU微架构相关的一些思考
上面的内容很多都是引用文献和一些前辈的文章的描述,搬过来和大家分享一下,有基础的可能觉得简单,没有基础的可能是一脸懵。那么我们就一起是思考一下如下的场景,俗话说:思考使人进步,O(∩_∩)O。
(1) context 这些冷冷的硬件架构对于一个软件工程师来说首先要搞清楚的就是context(上下文),就是一段代码执行的是时候CPU的状态,而一个CPU中的core只能在一个时刻能可能处在一种上下文中工作。以linux为例,这个上下文就是三种情况,进程上下文、svc之后的kernel为进程提供服务的上下文、中断(异常)上下文。这些上下文映射到硬件架构,核心的纽带就是寄存器,从一个上下文切换到另外一个上下文保存的核心数据就是寄存器里面的状态。不管OS调度子系统,异常处理子系统设计的多么复杂,落实到硬件上首先要考虑的就是寄存器中的数据和状态怎么管控。
(2) 并发 现代处理器架构之所以能够高性能的运行,就在于能够高并发的执行指令, 多core之间可以在多硬线程(多context)同时工作,那么多个context通过共享cache才能完成协作,那么在编写应用层代码的时候就得注意共享数据的同步问题。这个硬件的场景映射到软件层面就是各种各样的锁啊,那么反过来锁的实现原理又是啥,就要利用体系内存屏障机制保证cache中的数据一致性。对于一个core,大家也能看到指令的执行也是多个指令流的,经过译码的指令叫做MOP(Macro-Operation),MOP不是实际执⾏的指令,最终送到执⾏单元的指令叫做uOP(Micro-Operation),也是并发的执行。是的一个context下,现代的core也可以并发执行,也涉及到数据的一致性,操作的顺序性问题,同样要使用屏障机制防止编译器重排序。
(3) 内存模型和管理 刚学习Linux的时候觉得内存很简单,malloc一下,free一下就可以了。知道后来一个神告诉我,你搞懂内存的那一天才是你真正领略什么叫复杂,一个几个字节空间分配的链路和蕴含的知识量能让你怀疑人生。映射到CPU的架构上就能看出,CPU操作的指令和数据都来自同一个cache(大家可以翻翻教材,回忆一下哈弗和冯诺依曼),怎么管理、context切换之后cache怎么切换、虚拟机的内存又是如何管理的、设备又是怎么和CPU在软件层面关联到一起的,等等,这些都需要去仔细去思考一下。

结语

虚拟化的最重要课题就是虚拟CPU,VM如果没有vCPU的加持是不能正常工作的。俗话说百闻不如一见,本文我们从一个PCB板子开始一步一步的分解放大局部,最后到了CPU的一个core上,了解了CPU的内部的物理结构和逻辑结构。这些知识点都是我们继续前进的基础,虽然限于篇幅,书不尽言,但是核心的知识点基本都呈现了出来。后面如果有必要,会专门开一个系列写一写ARM体系的文章。限于个人水平,难免有纰漏之处,还希望大家多多指教,共同提高。后面还有几篇文章继续阐述硬件的架构,on the way。
笔者在研究linux的时候,有的时候看到kernel的代码真的是迷茫,就是想不太明白为啥要有这样的逻辑,直到有一天去认真的啃ARM的文档,确实搞明白了很多原理。一个不懂体系的程序员不一定写不出好的代码,一个懂得体系的程序员一定是找到了嵌入式开发技术精进的法门,同样对于理解虚拟化技术更是大有裨益。
>这里也介绍一点关于学习体系知识的经验。
(1) 要有信心,体系这个方向确实有一定难度,但是有计算机相关的理工科基础的同学都可以搞明白,问题不大。
(2) 要有耐心,体系的代码和文档晦涩而且特别多,要有足够的耐心去阅读和思考,放下手机和精神内耗,静下心来慢慢的阅读。
(3) 要有恒心,这个时代很多人其实活了一辈子都是小猫钓鱼那个故事里的小猫,搞成一件事情是需要持之以恒的那股子劲儿的。
找到一个适合自己的方法(多写代码,多和别人分享心得,不要怕犯错,实践是检验真理的唯一标准),一个坑一个坑的填上,就是一条坦途大道。

在这里插入图片描述

更多精彩内容,请关注公众号

Reference

[00] <DDI0553B_s_armv8m_arm.pdf>
[01] <DEN0024A_v8_architecture_PG.pdf>
[02] <introduction_to_armv8m_architecture_100688_0200_en.pdf>
[03] <A-Profile/learn_the_architecture_a64_instruction_set_architecture_guide_102374_0102_01_en.pdf
[04] <A-Profile/learn_the_architecture_aarch64_exception_model_102412_0103_01_en.pdf
[05] <A-Profile/learn_the_architecture_aarch64_virtualization_guide_102142_0100_04_en.pdf
[06] <earn_the_architecture_introducing_the_arm_architecture_102404_0201_01_en.pdf
[07] <learn_the_architecture_generic_interrupt_controller_v3_and_v4_virtualization_107627_0102_02_en.pdf
[08] <80-ARM-ARCH-OVW-wx0003_搞懂ARM处理器架构.pdf>
[09] <SysReg_xml_v88A-2021-12.pdf>
[10] 高通SA8155原理图和特性介绍
[11] <80-ARM-M-ARCH-NH0001_从A76到A78-在变化中学习ARM微架构.pdf>
[12] WikiChip

Glossary

SSE - Simple Sequential Execution
dts - device tree source
dtc - device tree compiler
dtb - device tree blob
dtsi - device tree source includefile
TLB - Translation lookaside buffer(地址变换高速缓存)
A-profile - Application-profile (A-profile)
R-profile - Real-time profile (R-profile)
SVE - Scalable Vector Extension (SVE)
M-profile - Microcontroller-profile (M-profile)
RME - Realm Management Extension 领域管理扩展
SME - Scalable Matrix Extension
MPAM - Memory System Resource Partitioning and Monitoring(MPAM)
ISA - Instruction Set Architecture 指令集架构
RAS - Reliability, Availability, and Serviceability (RAS)
TRM - Technical Reference Manual
SysReg - System Registers
PG - Programmer’s Guide
SCMI - System Control and Management Interface (SCMI)
ACPI - Advanced Configuration and Power Interface (ACPI)
PSCI - Power State Coordination Interface (PSCI)
UEFI - Unified Extensible Firmware Interface (UEFI)
UART - Universal Asynchronous Receiver/Transmitter
SPI - Shared Peripheral Interrupt
PPI - Private Peripheral Interrupt
SGI - Software Generated Interrupts
MPAM - Memory System Resource Partitioning and Monitoring
LPI - Locality-specific Peripheral Interrupt (LPI)
PE - Processing Element
MSI - message-signaled interrupts (MSI)
IAR - Interrupt Acknowledge Registers
EOIR - End of Interrupt Registers
IRM - Interrupt Routing Mode
ITS - Interrupt Translation Service
ITT - Interrupt Translation Tables
DCVS - Dynamic clock and voltage scaling
soc - System-on-a-Chip
AMBA - Advanced Microcontroller Bus Architecture
AMBA - Advanced Microcontroller Bus Architecture 高级处理器总线架构
AHB - Advanced High-performance Bus 高级高性能总线
ASB - Advanced System Bus 高级系统总线
APB - Advanced Peripheral Bus 高级外围总线
AXI - Advanced eXtensible Interface 高级可拓展接口
PAS - physical address spaces
ASIDs - Address Space Identifiers
PCSA - power control system architecture
EAS - energy aware scheduling
IPA - intrlligent power allocation
ATF - ARM Trusted Firmware
SCP - system control processor
PCF - power control framework
PPU - power policy unit
LPI - low power interface
PCSM - power control state machine
AP - Application Processors
SCP - System Control Processor (SCP)
SMC - Secure Monitor Call (SMC)
HVC - Hypervisor Call (HVC)
OPP - Operating Performance Point (OPP)
DVFS - Dynamic Voltage and Frequency Scaling (DVFS)
DCVS - Dynamic Clock and Voltage Scaling (DCVS)
AMU - Arm Activity Monitors Extension (AMU)
EAS - Energy Aware Scheduling
IPA - Intelligent Power Allocation
AP - Application Processor (AP)
SIMD - Single Instruction Multiple Data(SIMD)
VBAR - Vector Base Address Register
SCTLR - System Control Register
ELR - Exception Link Register
ESR - Exception Syndrome Register
FAR - Fault Address Register
HCR - Hypervisor Configuration Register
SCR - Secure Configuration Register
SCTLR - System Control Register
SPSR - Saved Program Status Register
UART - Universal Asynchronous Receiver/Transmitter
ALU - Arithmetical Logical Unit
NMI - non-maskable interrupts
BSA - Base System Architecture
SBSA - Server Base System Architecture
BBR - Base Boot Requirements
TBSA - Trusted Base System Architecture
AMBA - Advanced Microcontroller Bus Architecture
TRM - Technical Reference Manual
MMU - Memory Management Unit
DSU - DynamIQ Shared Unit
BPU - Branch Predictor Unit
INTID - Interrupt ID
SBSA - Server Base System Architecture
ESR - Exception Syndrome Register
FAR - Fault Address Register
ELR - Exception Link Register
VBAR - Vector Base Address Registers
SMP - Symmetric Multi-Processing
AMP - Asymmetric Multi-processing
HMP - Heterogeneous multi-processing 异构多处理

  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值