ARMv8-A架构

376 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

ARMv8-A架构

ARMv8-A是ARM公司发布的第一代支持64位处理器的指令集和架构。它在扩充64位寄存器的同时提供了对上一代架构指令集的兼容,因此它提供了运行32位和64位应用程序的环境。 ARMv8-A架构除了提高了处理能力,还引入了很多吸引人的新特性。 具有超大物理地址空间,提供超过4GB物理内存。 具有64位宽的虚拟地址空间。32位宽的虚拟地址空间只能提供4GB大小的虚拟地址空间访问,这极大地限制了桌面操作系统和服务器等的发挥。64位宽的虚拟地址空间可以提供更大的访问空间。 提供31个64位宽的通用寄存器,可以减少对栈的访问,从而提高性能。 提供16KB和64KB的页面,有助于降低TLB的未命中率(miss rate)。 具有全新的异常处理模型,有助于降低操作系统和虚拟化的实现复杂度。 具有全新的加载-获取指令(Load-Acquire Instruction)、存储-释放指令(Store-Release Instruction),专门为C++11、C11以及Java内存模型设计。

采用ARMv8架构的常见处理器内核

下面介绍市面上常见的采用ARMv8架构的处理器(简称ARMv8处理器)内核。Cortex-A53处理器内核:ARM公司第一款采用ARMv8-A架构的处理器内核,专门为低功耗设计的处理器。通常可以使用1~4个Cortex-A53处理器组成一个处理器簇或者和Cortex-A57/Cortex-A72等高性能处理器组成大/小核架构。

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

ARMv8架构中的基本概念

ARM处理器实现的是精简指令集架构。在ARMv8-A架构中有如下一些基本概念和定义。 处理机(Processing Element,PE):在ARM公司的官方技术手册中提到的一个概念,把处理器处理事务的过程抽象为处理机。 执行状态(Execution State):处理器运行时的环境,包括寄存器的位宽、支持的指令集、异常模型、内存管理以及编程模型等。ARMv8架构定义了两个执行状态。