我有一个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"信息?
如果我完全走错了路,我会理解我的理解错误的一些指示。