3.5.2 ARM体系架构特点
ARM微处理器现用的体系结构中至少支持两种指令集:32位ARM指令集和16位Thumb指令集。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比,使用Thumb指令集可以得到密度更高的代码。ARM指令集的体系结构与扩展如图3-10所示。
ARMV4是目前所支持的最早版本,之前的版本不再使用。某些ARM7系列和Intel公司的Strong ARM处理器采用该版本指令集。ARMV4指令集可以在32位地址空间执行32位的ARM指令集。并且有了T变种,可以在Thumb状态下支持16位的Thumb指令集。这与32位指令相比,可以节省35%的存储空间,且依旧保留了32位系统的优势。
ARMV5是在1999年发布的,与ARMV4相比,其提升了ARM和Thumb两种指令的交互工作能力,并改进了在T变种中ARM/Thumb状态之间的切换效率。同时有了E变种,可以支持DSP指令,在音频数字信号处理中可以提高70%的性能。2000年增加了J变种,可以运行Java指令。
图3-10 ARM系列图
ARMV6版本于2001年发布,其主要特点是增加了SIMD功能扩展,同时拓展了Thumb-2和Trust Zone技术。SIMD应用于视频编/解码与三维绘图等数字信号的处理中,能为音频视频在内的应用系统提供优化功能,可以使音频视频的处理能力提高4倍。Thumb-2是一种新型混合指令集,融合了16位和32位指令,用于实现密度和性能的最佳平衡,作为ARM体系结构的扩展,Trust Zone技术是一种新的硬件安全技术。
ARMV7在相当于ARM11下一代的CPU内核Cortex系列中被采用,针对不同用途,定义了三大分工明确的系列:A系列面向尖端的基于虚拟内存的操作系统和用户应用,R系列针对实时系统,M系列对微控制器和低成本应用提供优化。ARMV7的M系列采用了Thumb-2技术,A系列和R系列还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形和游戏应用,以及传统的嵌入式控制应用的需求。
2011年11月,ARM公司发布了其首款支持64位指令集的处理器架构ARMV8。ARMV8在32位ARM架构上进行开发,主要应用于对扩展虚拟地址和64位数据处理技术有更高要求的产品领域。ARMV8架构包含两个执行状态:AArch64和AArch32。AArch64执行状态针对64位处理技术,引入一个全新指令集A64;而AArch32执行状态将支持现有的ARM指令集。
2021年3月,全新的ARMV9架构面世,自ARMV8推出近十年的时间里,指令集架构在移动空间和服务器空间的采用日益广泛。ARMV9架构有三个侧重点,分别是AI、矢量和DSP性能改进。在具体细节上,ARMV9架构沿用AArch64基准指令集,并在功能方面添加了一些非常重要的扩展,从而确保ARM公司增加架构编号。对于开发者和用户而言,全新ARMV9的最显著特征是将可伸缩矢量扩展2(SVE2)作为ARMNEON技术之后新的基准,在处理5G、虚拟现实(VR)和增强现实(AR)、图像和语音识别等机器学习任务负载时具有很大增益。