ARM架构是否意味着跨核兼容性

ARM架构是否意味着跨核兼容性,arm,compatibility,cpu-architecture,Arm,Compatibility,Cpu Architecture,当我为Cortex-A15和Cortex-A9开发基准代码时,我想到了这个问题。它们都基于ARMv7-A体系结构,因此这是否意味着相同的程序集将在两者上运行,还是体系结构版本仅定义了一种通用设计?如果有什么区别的话,差别是很细微的。编写跨许多arm体系结构的程序集并不太困难。真正的问题是,外围端口等核心之外的东西在不同的供应商和产品之间的表现非常显著,因此,在广泛添加两个数字端口时,您对这些数字的处理最终会有所不同 ARM在记录这些方面做得很好。在ARM架构参考手册(ARM)和trms技术参考手

当我为Cortex-A15和Cortex-A9开发基准代码时,我想到了这个问题。它们都基于ARMv7-A体系结构,因此这是否意味着相同的程序集将在两者上运行,还是体系结构版本仅定义了一种通用设计?

如果有什么区别的话,差别是很细微的。编写跨许多arm体系结构的程序集并不太困难。真正的问题是,外围端口等核心之外的东西在不同的供应商和产品之间的表现非常显著,因此,在广泛添加两个数字端口时,您对这些数字的处理最终会有所不同


ARM在记录这些方面做得很好。在ARM架构参考手册(ARM)和trms技术参考手册之间。任何拥有指令集详细信息的人都将记录每条指令或每种指令形式的体系结构支持该指令。然后,您可以选择您感兴趣的所有变体所支持的指令。

体系结构版本管理基本指令集、寄存器等,因此任何“v7”代码都将在任何v7体系结构上运行(注意,v7-M只支持Thumb指令集)-但如果使用任何v7特定指令,则可能与v6及更早版本不兼容

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

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