为什么我的基于ARMv8的CPU内核(Exynos 7 Octa 7870)的Android设备不支持arm64-v8a ABI或64位指令集?

时间:2018-03-09 00:19:40

标签: android arm cpu-architecture arm64 abi

我有一个Android设备(SAMSUNG Galaxy Tab Active2 SM-T397U),其中包含 Exynos 7870 SoC Exynos 7870使用8个 Cortex A-53 核心that implement the Armv8-A architecture.但是,它不支持arm64-v8 ABI,并且它不清楚哪个指令集它支持。

有多个Android应用可以提取设备的系统CPU和SoC信息。

使用一个这样的应用程序(AIDA64),它将指令集列为" 64位ARM" ,但支持的ABI仅作为armeabi-v7a和armeabi(截图如下) 。

AIDA64 Screenshot listing SoC Model and supported Instruction Sets

另一个应用程序(DroidInfo)将CPU架构列为" ARMv7-A" ,并将指令设置为" armeabi-v7a"和" armeabi" (以下截图)

DroidInfo Screenshot listing SoC Model and supported Instruction Sets

我认为实现v8a架构的CPU内核能够utilize armeabi-v8a ABI for most optimized performance.

如果是这种情况,我想了解为什么这个SoC只支持armeabi-v7a ABI和不支持arm64-v8a ABI。 ABI上的Android开发者页面声明了arm64-v8a ABI:

  

"此ABI适用于支持AArch64的基于ARMv8的CPU。"

是否有基于ARMv8的CPU支持不同的指令集? ARM reference manual on the ARMv8 Instruction Set表示ARMv8有两个指令集 - A64用于AArch64状态 A32处于AArch32状态。该CPU是否可能在Aarch32状态下锁定?如果是这种情况,这样做的原因是什么,或者甚至是可能的,是否有办法确认是这种情况?

我也无法理解为什么Exynos 7870的架构/指令集会被这些应用程序报告不一致,大概是他们使用相同的API来获取这些信息,或者是否有更强大的方法获得" true"信息?

如果我完全走错了路,我会理解我的理解错误的一些指示。

0 个答案:

没有答案