ARM探索之旅02 | ARM Cortex-M 用什么指令集?

A32 Instruction Set

A32指令集,在 armv8 之前的架构中也被称为 「ARM 指令集,指令长度固定32位,4字节对齐」

T32 Instruction Set

T32指令集,在 armv8 之前的架构中被称为 Thumb 指令集。

最初,ARM 指令集的长度固定为 32 位,为了改善用户代码的代码密度,「Thumb 指令集被设计为 16 位指令集」,开发者可以同时使用ARM指令集和Thumb指令集来降低代码大小。但这是两套指令集,两个运行状态,需要在ARM状态和Thumb状态之间来回切换,非常麻烦。

随着时间的推移和Thumb-2技术的引入,「作为Thumb指令集的补充,ARM指令集的大部分功能都被纳入到了Thumb指令,Thumb指令集演化为16位和32位混合长度指令集,称为Thumb-2指令集」

Thumb-2指令集的诞生,使得编译器可以在单个指令集中平衡性能和代码的大小,提供了极好的代码密度,最小化系统内存大小和成本。

二、Arm架构扩展

ARM还提供了一系列的架构扩展用于满足下一代处理器的需求,这些扩展为ARM处理器提供了一些新的功能。

浮点单元

ARM浮点单元技术为「半精度、单精度和双精度的浮点运算」提供了高性能和高效率的硬件支持。

Arm浮点单元使用完整的软件库支持,完全兼容IEEE-754标准,特别适用于对浮点计算精度要求比较高的应用场景。

浮点数据类型的应用场景如下:

  • 汽车控制程序

  • 3D图形

  • 工业控制系统

  • 运动控制系统

Helium

ARM Helium 技术是ARM Cortex-M处理器系列的 M配置向量扩展,简称MVE,该技术是Armv8.1-M架构的扩展,为小型嵌入式设备的机器学习应用提供给了显著的性能提升。

Cortex-M55是首款具有该扩展的处理器。

Helium技术添加了150多个新的标量和向量指令,其中整数Helium技术使8位、16位、32位固定点数据的高效计算成为可能,16位和32位固定点格式在传统的信 处理中广泛应用,比如音频处理,而8位固定点格式在机器学习处理中很重要,比如神经 络计算,图像处理等。

同样,Helium也支持浮点数据类型,包括单精度浮点数(32位)和半精度浮点数(16位)。

三、Cortex-M用什么指令集

讲述了ARM的基本指令集和扩展指令集,是时候来回答我们提出的问题:ARM Cortex-M用什么指令集/p>

「ARM Cortex-M 全部系列只支持唯一的指令集:Thumb指令集或Thumb-2指令集。确切的来说,是支持T32指令集。」

在Cortex-M阵营众多的成员中,每个处理器对 Thumb/Thumb-2 指令集的支持情况不同,「大部分处理器都是支持 Thumb/Thumb-2 指令集的子集」

Cortex-M0、Cortex M3、Cortex M4、Cortex M7系列支持的Thumb指令集如图所示。

至此,ARM探索之旅第二站就结束啦!下一站再会!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月26日
下一篇 2021年4月26日

相关推荐