ARMv8 向后兼容 ARMv7(Snapdragon 820 与 Cortex-A15)

标签 arm cpu-architecture backwards-compatibility binary-compatibility armv8

我发现 ARMv8 只是 ARMv7 架构的扩展,所有在 ARMv7 上编译的代码都应该在 ARMv8 上运行。我对 ARMv8 到 ARMv7 的向后兼容性感兴趣。在 ARMv8 上编译的代码可以在 ARMv7 上运行吗?

我有一个特别感兴趣的案例:我想运行 comma.ai's Openpilot visiond binary这是为 OnePlus 3 smartphone 编译的(高通MSM8996 Snapdragon 820 CPU)上Nvidia Jetson TK1 (NVIDIA Cortex-A15 CPU)。愿景会在 Jetson 上运行吗?

编辑:可能除了 CPU 兼容性之外还有更多问题,因为 Visiond 可能在该手机上大量使用 GPU。可能取决于他们是否使用一些标准并行化方式(OpenCL、NEON 等)或有一些针对 Snapdragon GPU 的自定义代码。即使使用 OpenCL,在不同硬件上兼容的可能性也可能相当低。

最佳答案

我相信aarch32用户区与ARMv7完全或非常高度向后兼容,即为ARMv7编译的用户区程序应该只能在AArch32中工作,但我在ARM手册中找不到精确的引用。

aarch32 确实在 ARMv7 上添加了新指令,但是,其中大多数似乎是 ARMv8 添加的功能,设计人员决定在 aarch32 上公开。因此,aarch32 不向前兼容 ARMv7,即为 aarch32 编译的程序可能无法在 ARMv7 上运行。

我不确定系统土地。另请参阅:Does ARMv8 AArch32 mode has backward compatible with armv4 , armv5 or armv6?

关于ARMv8 向后兼容 ARMv7(Snapdragon 820 与 Cortex-A15),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42972096/

相关文章:

c - Arm 4 微 Controller 上的硬故障错误

c++ - boost 日志 1.62 : filter condition must be in parentheses?

java - -source 和 -target 兼容性有什么区别?

用 NEON 改进的代码

c++ - 我需要什么工具链来交叉编译 Clang for iOS

c - 可能是指针问题,但不确定原因

cpu - 缓存行大小背后的理论和测量是什么?

assembly - 正在运行时中断汇编指令

build-process - 在 scons 中检测 CPU 架构(32 位/64 位)?

grails 向后兼容性