6

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

我有一个特别感兴趣的案例:我想在Nvidia Jetson TK1(NVIDIA Cortex-A15 CPU)上运行comma.ai 的 Openpilot 视觉二进制文件,该二进制文件是为OnePlus 3 智能手机(Qualcomm MSM8996 Snapdragon 820 CPU)编译的。有远见的人会在 Jetson 上运行吗?

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

4

1 回答 1

2

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

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

我不确定系统土地。另请参阅:ARMv8 AArch32 模式是否向后兼容 armv4 、 armv5 或 armv6?

于 2019-02-15T09:49:34.377 回答