ARMv8 架构
From:http://www.arm.com/zh/products/processors/instruction-set-architectures/armv8-architecture.php
ARMv8-A 将 64 位架构支持引入 ARM 架构中,其中包括:
- 64 位通用寄存器、SP(堆栈指针)和 PC(程序计数器)
- 64 位数据处理和扩展的虚拟寻址
- 两种主要执行状态:
- AArch64 - 64 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
- AArch32 — 32 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
这些执行状态支持三个主要指令集:
- A32(或 ARM):32
位固定长度指令集,通过不同架构变体增强部分 32 位架构执行环境现在称为 AArch32。
- T32 (Thumb) 是以 16 位固定长度指令集的形式引入的,随后在引入
Thumb-2 技术时增强为 16 位和 32
位混合长度指令集。部分 32 位架构执行环境现在称为 AArch32。
- A64:提供与 ARM 和 Thumb
指令集类似功能的 32 位固定长度指令集。随 ARMv8-A 一起引入,它是一种 AArch64 指令集。
ARM ISA 不断改进,以满足前沿应用程序开发人员日益增长的要求,同时保留了必要的向后兼容性,以保护软件开发投资。在 ARMv8-A 中,对 A32 和
T32 进行了一些增补,以保持与 A64 指令集一致。
A64
A64 是一种支持 AArch64
执行状态的全新 32 位固定长度指令集。下面摘要说明了 A64
ISA 的特性。
- 基于 5
位寄存器说明符的简洁解码表
- 指令语义与
AArch32 中大致相同
- 31 个随时可供访问的通用 64 位寄存器
- 无模式 GP 寄存器组 - 改进的性能和能耗
- 程序计数器 (PC)
和堆栈指针 (SP) 非通用寄存器
- 可用于大多数指令的专用零寄存器
与
A32 的主要差异有:
- 支持 64
位操作数的新指令 大多数指令可具有 32 位或 64 位参数
- 地址假定为 64
位大小 P64 和 LLP64 是主要目标数据模型
- 条件指令远少于
AArch32 条件 {跳转、比较、选择}
- 无任意长度的加载/存储多重指令 增加了用于处理寄存器对的 LD/ST 'P'
A64 高级 SIMD 和标量浮点支持在语义上类似于 A32 支持;它们共享浮点/向量寄存器文件(V0 至 V31)。A64
提供了 3 项主要功能增强:
- 更多 128
位寄存器:32 x 128 位宽寄存器;可视为 64 位宽寄存器
- 高级 SIMD
支持 DP 浮点执行
- 高级 SIMD
支持完全 IEEE 754 执行;舍入模式、非规范化数字、NaN 处理
有一些针对 IEEE754-2008 的附加浮点指令:
- MaxNum/MinNum 指令
- 使用 RoundTiesAway 的浮点到整数转换
A64 中的寄存器封装模型也不同于 A32:
所有向量寄存器均为 128 位宽,Vx[127:0]:
- 双精度标量浮点使用 Vx[63:0]
- 单精度标量浮点使用 Vx[31:0]
ARM tools
The ARM software
development tools are used extensively throughout the processor design cycle and
set the standard for the ecosystem, providing comprehensive code generation and
debug support for all ARM processors.
The latest
generation of tools, developed alongside the ARMv8 architecture, consists of
virtual platforms, code generation tools, debug solutions and performance
analysis tools.
More information on
ARM tools support for ARMv8 covering ARM DS-5 Ultimate Edition, ARM Fast Models
for ARMv8 and the ARM Foundation Model can be found on the DS-5 website.
Open source tools
Open source
components are key to many of today's innovative
products and Linaro is dedicated to the timely
availability of robust and well optimized open source components for the next
generation of innovative products and beyond.
To begin the
process for ARMv8, early versions of the tools and kernel components are
available for download at http://www.linaro.org/engineering/ARMv8 along with
instructions on how to use the ARMv8 Foundation Model to execute and debug code
prior to the widespread availability of silicon based development platforms.