摘要: 本文主要介绍了ARM64(Armv8)体系结构的基本概念。
关键字:ARM64、Armv8、体系结构、ARM架构、指令集、数据宽度
1. ARM体系结构是什么?
ARM体系结构,又称ARM架构,是一种硬件规范。主要用来约定指令集、芯片内部体系结构(如内存管理、高速缓存管理)等。
ARM指令集在结构体系中并没有约定每一条指令在硬件描述语言(VHDL或Verilog HDL)中如何实现,而只约定了每条指令的格式、行为规范、参数等。
ARM体系结构从v1版本发展到v9版本,每个版本的体系结构,指令集都有相应的变化。
2. Armv8-A体系结构的基本概念
2.1处理机(Processing Element ,PE):处理事务的过程抽象为处理机。
2.2执行状态(Execution State):处理器运行时的环境,包括寄存器的位宽、支持的指令集、异常模型、内存管理以及编程模型等。
Armv8体系结构定义了AArch64和AArch32两个执行状态。
2.2.1 AArch64为64位执行状态
- 提供31个64位的通用寄存器
- 提供64位的程序计数指针寄存器(PC)、栈指针寄存器(SP)、异常链接寄存器(ELR).
- 提供A64指令集
- 提供64位的内存模型
- 定义Armv8异常模型,支持EL0-EL3共4个异常等级。
- 定义一组处理器状态(PSTATE)用来保存处理机(PE)的状态。
2.2.2 AArch32为32位执行状态
- 提供13个32位的通用寄存器
- 提供32位的程序计数指针寄存器(PC)、栈指针寄存器(SP)、链接寄存器(LR).
- 提供A32指令集和T32(Thumb)指令集。
- 提供32位的虚拟内存访问机制。
- 定义Armv8异常模型,支持EL0-EL3共4个异常等级。
- 定义一组处理器状态(PSTATE)用来保存处理机(PE)的状态。
2.3 Armv8指令集
- Arm 体系结构根据不同的执行状态会有三种指令集。
- A64指令集,运行在AArch64状态下,提供64位指令集支持。
- A32指令集,运行在AArch32状态下,提供32位指令集支持。
- T32指令集,运行在AArch32状态下,提供Thumb 16位和32位指令集支持。
2.4 系统寄存器命令
在AArch64状态下,一些系统寄存器会根据不同的异常等级提供不同的变种寄存器。例如:SP_EL0表示在EL0下的SP寄存器,SP_EL1表示在EL1下的SP寄存器。
3. AArch64异常等级
ARMv8-A架构定义了一组异常级别(Exception Level,EL),从EL0到EL3,其中: 如果ELn为异常级别,n的值越大表示软件执行权限越高。
如上图所示,
- EL0提供用于普通用户的应用。
- EL1提供操作系统相关的支持。
- EL2提供对非安全操作的虚拟化支持。
- EL3提供了两个安全状态之间切换的支持,安全状态和非安全状态。
- 一个程序可能不包括所有的异常级别,但必须包括EL0和EL1,至于EL2、EL3可选。
4. ARMv8支持的数据宽度
ARMv8支持如下几种数据宽度:
- 字节:8位
- 半字:16位
- 字 :32位
- 双字:64位
- 四字:128位
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
关于凯发k8一触即发电子
凯发k8一触即发电子技术有限公司(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。
20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。凯发k8一触即发电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。
欢迎关注“凯发k8一触即发电子”公众号
了解更多研发工具软件知识