ARM体系结构是否意味着跨核兼容性

时间:2014-01-07 20:59:44

标签: arm compatibility cpu-architecture

当我开发Cortex-A15和Cortex-A9的基准测试代码时,我遇到了这个问题。它们都基于ARMv7-A架构,所以这意味着同一个程序集将在两者上运行,或者架构版本是否只定义了一般设计?

2 个答案:

答案 0 :(得分:2)

架构版本管理基本指令集,寄存器等,因此任何“v7”代码都可以在任何v7架构上运行(注意v7-M仅支持Thumb指令集) - 但可能与v6不兼容如果它使用任何特定于v7的指令,则更早。

但是,在任何给定的实现上可能存在或不存在许多可选的体系结构扩展,例如浮点,NEON,安全性扩展等。任何依赖于这些扩展的可移植代码都应该检查在尝试使用可能不存在的功能并可能导致异常之前,通过读取标准系统寄存器来实现这些功能。例如,A15具有虚拟化扩展和大型物理地址扩展,而A9则没有。

基础架构中还有一些被定义为实现定义的功能,例如ACTLR(辅助控制寄存器),它通常用于公开核心微体系结构的细节(例如控件) bit启用/禁用分支预测器)。它们的含义和用法甚至可以在核心的不同版本之间变化,但通常是低级别的东西,大多数人甚至不需要查看它们。

答案 1 :(得分:0)

如果有的话,差异是微妙的。编写适用于多种臂架构的程序集并不困难。真正的问题是,在核心之外的东西等,从供应商到供应商以及产品到产品都非常显着,因此在广泛添加两个数字端口时,您对这些数字的处理最终会发生变化。

ARM在记录这些内容方面做得很好。 ARM arm架构参考手册(Arm arm)和trms技术参考手册之间。具有指令集细节的任何人将按照指令或每种形式的指令记录哪种架构支持该指令。然后,您可以选择您感兴趣的所有变体支持的说明。