64 位 ARMv8 是 ARM 公司推出的新一代处理器架构,这一代架构最大升级就是原生支持 64 位执行模式,同时保持向下兼容 32 位 ARM 指令集,也就是大家熟知的 AArch64 和 AArch32 两种执行状态,它广泛应用在手机 平板 服务器 工控 嵌入式 车载芯片当中,是现在主流高性能 ARM 芯片的基础架构,相比上一代 ARMv7 只支持 32 位运算,ARMv8 引入全新 64 位通用寄存器,扩大虚拟地址寻址空间,提升并行计算能力,操作系统可以运行完整 64 位内核,能够支持更大内存,后续 ARMv8 还持续迭代出 ARMv8.1 ARMv8.2 ARMv8.3 ARMv8.4 ARMv8.5 ARMv8.6 等小版本扩展,不断补充新指令和特性,很多芯片厂商拿到 ARMv8 架构授权之后,会自研核心,比如 Cortex A53 A57 A72 A73 A76 这些经典核心,全部属于 ARMv8 架构体系
核心架构基础原理
ARMv8 把处理器执行状态划分成两种模式,AArch64 是原生 64 位执行模式,拥有 31 个独立 64 位通用寄存器,编号 X0 到 X30,还有专门的 PC 程序计数器,SP 栈指针,相比 ARMv7 的 16 个 32 位寄存器,寄存器数量增加,编译器可以更好做寄存器分配,减少内存访存开销,AArch32 就是兼容旧版 32 位模式,保留原来 ARMv7 的执行环境,老的 32 位应用程序不需要重新编译,就可以在支持 ARMv8 的芯片上运行,实现平滑过渡
指令集体系特点
ARMv8 的 64 位指令集命名为 A64 指令集,属于定长 32 位编码指令,和传统 ARM32 的 Thumb 混合编码不一样,A64 不再区分 ARM 和 Thumb 两种状态,指令编码统一规整,解码设计更简洁,分支预测 乱序执行等硬件模块设计更方便,同时新增大量运算 向量 原子操作相关指令,NEON 向量单元也升级成 64 位版本,提升多媒体 图像 信号处理性能
寻址与内存能力
64 位 ARMv8 理论虚拟地址空间非常大,早期实现没有一次性用满全部 64 位地址位,主流实现一般使用 48 位虚拟地址,可寻址虚拟空间达到 256TB,物理地址也可以支持远大于 4GB 内存,这就是它对比 32 位 ARMv7 最大优势,32 位架构最大只能访问 4GB 内存,服务器 高性能嵌入式场景很容易碰到内存上限,ARMv8 就解决这个瓶颈
核心分类与应用对照表
核心型号 所属架构 定位 典型应用
Cortex A53 ARMv8 低功耗 手机小核 平板 工控
Cortex A57 ARMv8 高性能初代 64 位 早期旗舰手机
Cortex A72 ARMv8 高性能改进版 机顶盒 服务器 平板
Cortex A76 ARMv8.2 高性能大核 旗舰手机 边缘计算
识别 64 位 ARMv8 架构的学习步骤
第一步 区分架构版本和 CPU 核心,ARMv8 是架构规范,Cortex 核心是基于这个架构设计出来的具体处理器内核,不要把两者等同
第二步 确认执行模式,芯片支持 AArch64 就代表具备原生 64 位能力,操作系统可以选择安装 64 位系统
第三步 查看扩展小版本,ARMv8 后续小版本会增加新指令集,比如内存安全 虚拟化 浮点优化相关扩展,不同芯片支持的扩展并不完全一致
第四步 区分授权类型,有内核授权和架构授权,部分厂商可以基于 ARMv8 规范自研核心,不一定使用 ARM 官方 Cortex 核心
补充深度知识点
ARMv8 同时完善虚拟化 安全扩展,也就是 EL0 EL1 EL2 EL3 四个异常等级,不同异常等级对应用户态 内核态 虚拟化监控 安全世界,这套异常等级设计是 64 位 ARMv8 非常重要的底层机制,服务器操作系统 可信执行环境都是依靠这套等级做权限隔离,这也是 ARMv8 可以进军服务器领域的重要基础
【相关 FAQ】
问题 1 64 位 ARMv8 可以运行 32 位程序吗
回答 1 64 位 ARMv8 支持 AArch32 兼容模式,原生可以运行老的 32 位程序,实现对旧软件的兼容,部分精简配置芯片会关闭 AArch32 支持
问题 2 64 位 ARMv8 和 ARMv7 主要差别是什么
回答 2 64 位 ARMv8 原生支持 64 位运算和更大寻址空间,寄存器数量更多,指令集升级为 A64,ARMv7 只支持 32 位运算,内存上限只有 4GB
问题 3 64 位 ARMv8 所有小版本指令都完全一样吗
回答 3 64 位 ARMv8 后续迭代的 ARMv8.1 到 ARMv8.6 属于扩展版本,会新增额外指令特性,基础 A64 指令保持兼容,不同芯片支持扩展项存在差别
问题 4 64 位 ARMv8 的 Cortex A53 属于大核还是小核
回答 4 64 位 ARMv8 里面的 Cortex A53 属于低功耗小核,主打能效,常和高性能大核搭配组成大小核异构方案
【免责申明】
本文为 64 位 ARMv8 架构技术科普内容,不同厂商芯片实现和扩展特性存在差异,详细规范请参考 ARM 官方架构手册,本文仅作学习参考,不替代官方技术文档


