ARM64体系结构编程与实践:基础知识

1 ARM介绍

ARM公司主要向客户提供处理器IP。通过这种独特的盈利模式,ARM软硬件生态变得越来越强大。表1.1展示了ARM公司重大的历史事件。

表1.1 ARM公司重大的历史事件

ARM体系结构是一种硬件规范,主要是用来约定指令集、芯片内部体系结构(如内存管理、高速缓存管理)等。以指令集为例,ARM体系结构并没有约定每一条指令在硬件描述语言(Verilog或VHDL)中应该如何实现,它只约定每一条指令的格式、行为规范、参数等。为了降低客户基于ARM体系结构开发处理器的难度,ARM公司通常在发布新版本的体系结构之后,根据不同的应用需求开发出兼容体系结构的处理器IP,然后授权给客户。客户获得处理器IP之后,再用它来设计不同的SoC芯片。以ARMv8体系结构为例,ARM公司先后开发出Cortex-A53、Cortex-A55、Cortex-A72、Cortex-A73等多款处理器IP。

ARM公司一般有两种授权方式。

  • 体系结构授权。客户可以根据这个规范自行设计与之兼容的处理器。
  • 处理器IP授权。ARM公司根据某个版本的体系结构来设计处理器,然后把处理器的设计方案授权给客户。

从最早的ARM处理器开始,ARM体系结构已经从v1版本发展到目前的v8版本。在每一个版本的体系结构里,指令集都有相应的变化,其主要变化如表1.2所示。

表1.2 ARM体系结构的变化

ARM体系结构又根据不同的应用场景分成如下3种系列。

  • A系列:面向性能密集型系统的应用处理器内核。
  • R系列:面向实时应用的高性能内核。
  • M系列:面向各类嵌入式应用的微控制器内核。

2 ARMv8体系结构基础知识

2.1 ARMv8体系结构

ARMv8是ARM公司发布的第一代支持64位处理器的指令集和体系结构。它在扩充64位寄存器的同时提供了对上一代体系结构指令集的兼容,因此它提供了运行32位和64位应用程序的环境。

ARMv8体系结构除了提高了处理能力,还引入了很多吸引人的新特性。

  • 具有超大物理地址(physical address)空间,提供超过4 GB物理内存的访问。
  • 具有64位宽的虚拟地址(virtual address)空间。32位宽的虚拟地址空间只能供4 GB大小的虚拟地址空间访问,这极大地限制了桌面操作系统和服务器等的应用。64位宽的虚拟地址空间可以提供更大的访问空间。
  • 提供31个64位宽的通用寄存器,可以减少对栈的访问,从而提高性能。
  • 提供16 KB和64 KB的页面,有助于降低TLB的未命中率(miss rate)。
  • 具有全新的异常处理模型,有助于降低操作系统和虚拟化的实现复杂度。
  • 具有全新的加载-获取指令(Load-Acquire Instruction)、存储-释放指令(Store-Release Instruction),专门为C++11、C11以及Java内存模型设计。

ARMv8体系结构一共有8个小版本,分别是ARMv8.0、ARMv8.1、ARMv8.2、ARMv8.3、ARMv8.4、ARMv8.5、ARMv8.6、ARMv8.7,每个小版本都对体系结构进行小幅度升级和优化,增加了一些新的特性。

2.2 采用ARMv8体系结构的常见处理器内核

下面介绍市面上常见的采用ARMv8体系结构的处理器(简称ARMv8处理器)内核。

  • Cortex-A53处理器内核:ARM公司第一批采用ARMv8体系结构的处理器内核,专门为低功耗设计的处理器。通常可以使用1~4个Cortex-A53处理器组成一个处理器簇或者和Cortex-A57/Cortex-A72等高性能处理器组成大/小核体系结构。
  • Cortex-A57处理器内核:采用64位ARMv8体系结构的处理器内核,而且通过AArch32执行状态,保持与ARMv7体系结构完全后向兼容。除ARMv8体系结构的优势之外,Cortex-A57还提高了单个时钟周期的性能,比高性能的Cortex-A15高出了20%~40%。它还改进了二级高速缓存的设计和内存系统的其他组件,极大地提高了性能。
  • Cortex-A72处理器内核:2015年年初正式发布的基于ARMv8体系结构并在Cortex-A57处理器上做了大量优化和改进的一款处理器内核。在相同的移动设备电池寿命限制下,Cortex-A72相对于基于Cortex-A15的设备具有3.5倍的性能提升,展现出了优异的整体功效。

2.3 ARMv8体系结构中的基本概念

ARM处理器实现的是精简指令集体系结构。在ARMv8体系结构中有如下一些基本概念和定义。

  • 处理机(Processing Element,PE):在ARM公司的官方技术手册中提到的一个概念,把处理器处理事务的过程抽象为处理机。
  • 执行状态(execution state):处理器运行时的环境,包括寄存器的位宽、支持的指令集、异常模型、内存管理以及编程模型等。ARMv8体系结构定义了两个执行状态。AArch64:64位的执行状态。提供31个64位的通用寄存器。提供64位的程序计数(Program Counter,PC)指针寄存器、栈指针(Stack Pointer,SP)寄存器以及异常链接寄存器(Exception Link Register,ELR)。提供A64指令集。定义ARMv8异常模型,支持4个异常等级,即EL0~EL3。提供64位的内存模型。定义一组处理器状态(PSTATE)用来保存PE的状态。AArch32:32位的执行状态。提供13个32位的通用寄存器,再加上PC指针寄存器、SP寄存器、链接寄存器(Link Register,LR)。支持两套指令集,分别是A32和T32(Thumb指令集)指令集。支持ARMv7-A异常模型,基于PE模式并映射到ARMv8的异常模型中。提供32位的虚拟内存访问机制。定义一组PSTATE用来保存PE的状态。
  • ARMv8指令集:ARMv8体系结构根据不同的执行状态提供不同指令集的支持。A64指令集:运行在AArch64状态下,提供64位指令集支持。A32指令集:运行在AArch32状态下,提供32位指令集支持。T32指令集:运行在AArch32状态下,提供16位和32位指令集支持。
  • 系统寄存器命名:在AArch64状态下,很多系统寄存器会根据不同的异常等级提供不同的变种寄存器。系统寄存器的使用方法如下。

<register_name>_Elx //最后一个字母 x 可以表示0、1、2、3

<< · Back Index ·>>

发表回复

相关推荐

微型光纤光谱仪薄膜测量解决方案

薄膜是沉积在另一种物质表面的非常薄的物质层,广泛应用于技术工艺行业,如钝化绝缘层、防扩散层、硬涂层等。集成电路就主要 ...

· 2分钟前

三國亂世裡,曹魏十大名將排行榜,誰才是你心中的第一

魏國的武將是三國裡面最多的,而且名將是也是最多的,這將武將多次救曹操於水火之中,如果不是這些大將為曹操出生入死,曹操...

· 4分钟前

刷榜注意事项

刷榜对于各大品牌方可能已经是见惯不怪的品宣方式了,但是对于刷榜这块的,很多大品牌发给宁愿选择价格更高的,也不会选择白 ...

· 5分钟前

文科状元整理:高中历史思维导图,照着学,历史95+!

高中整个历史是由中国史和外国史构成的,中国史里又分古代史、近代史和现代史,近代史分为旧民主主义革命时期和新民主主义革 ...

· 6分钟前

公司議事規則之董事會議事規則

第一章 總則第一條 為瞭進一步規范*****有限公司(簡稱“本公司”)董事會的議事方式和決策程序,促使董事和董事會有效地履行其...

· 8分钟前