Armv8-A 架构
Armv8-A架构是针对应用程序('A')设计的最新一代Arm架构。
它引入了可用的64位和32位执行状态(Execution state ),分别称为AArch64和AArch32。 AArch64执行状态支持A64指令集,可以在64位寄存器中保存地址,并允许基本指令集中的指令使用64位寄存器进行处理。 AArch32执行状态是一个32位执行状态,它保留了与Armv7-A体系结构的向后兼容性,并增强了该体系结构,可以支持AArch64状态中包含的某些功能。 它支持T32和A32指令集。
Armv8-A是唯一支持AArch64的profile ,其中AArch64和AArch32之间的关系被称为interprocessing。 另外,Armv8-A架构允许支持不同等级的AArch64和AArch32,例如:
- 只有AArch64的设计。
- AArch64可支持AArch32操作系统/虚拟机的设计。
- AArch64只支持在应用层级(非特权)使用AArch32。
对工程师来说Armv8-A有什么新东西?
Armv8-A架构引入了许多变化,可以设计出可实现的性能更高的处理器。
- 大的物理地址
这使处理器能够访问超过4GB的物理内存。 - 64位虚拟寻址
这使虚拟内存越过4GB限制的。 这对使用内存映射文件I / O或稀疏寻址的现代桌面和服务器软件很重要。 - 自动信号事件
这使得高效,高性能的自旋锁成为可能。 - 更大的寄存器文件
有31个64位通用寄存器,这提高了性能并减少了堆栈的使用。 - 高效的64位立即生成
文字池的需求较少。 - 较大的PC相对寻址范围
在共享库和位置无关的可执行程序中的有效的数据寻址范围是+/- 4GB。 - 额外的16KB和64KB转换粒度
这降低了转换后备缓冲区(TLB)不命中率和页面访问的深度。 - 新的异常模型
这降低了OS和hypervisor 程序的复杂度 - 高效的缓存管理
用户空间缓存操作提高了动态代码生成效率。 快速数据缓存clear 操作使用数据缓存清零指令清除。 - 硬件加速密码技术
提供比软件加密更好的3倍到10倍速度性能。 这对于由于太小而不能有效转载到硬件加速器的细粒度解密和加密很有用,例如https。 - 加载-获取,存储-释放的指令
专为C ++ 11,C11,Java内存模型而设计。 它们通过消除显式的内存屏障指令来提高线程安全代码的性能。 - NEON双精度浮点高级SIMD
这使得SIMD矢量化可以应用于更广泛的算法集合,例如科学计算,高性能计算(HPC)和超级计算机。
Armv7-A体系结构
Armv7-A体系结构引入了architecture profiles的概念,并且继续被引入Armv8架构。 它实现了具有多种模式的传统Arm架构,支持基于内存管理单元(MMU)的虚拟内存系统架构(VMSA),并支持Arm(A32)和Thumb(T32)指令集。
架构扩展
这个架构也支持多个扩展。 包括:
- 安全扩展。 这是一组可选的扩展,这些扩展提供了一组安全功能,利用这些安全功能可以协助安全应用程序的开发。
- 多重处理扩展。 这些是一组可选的扩展,提供了一组增强多重处理功能的特性。
- 大的物理地址扩展。 这是一个可选的扩展,它提供了一个地址转换系统,支持高达40位的物理地址,并且具有良好的转换性能。 它需要实现多重处理扩展。
- 虚拟化扩展。 这些是一组可选的扩展,为虚拟机监视器(称为Hypervisor)提供硬件支持,以在各个Guest 操作系统之间进行切换。 它需要实现安全扩展和大的物理地址扩展。
- 通用计时器扩展。 这是一个可选的扩展,它提供了一个系统定时器和一个低延迟寄存器接口。 它是作为大的物理地址扩展或虚拟化扩展的一部分,但也可以使用Armv7-A架构的早期版本来实现。
- 性能监视器扩展。 该扩展定义了一个推荐的性能监视器实现方式,并为性能监视器保留了寄存器空间。
网友评论