10s*_*nds 5 android arm cpu-architecture abi arm64
我有一台 Android 设备(SAMSUNG Galaxy Tab Active2 SM-T397U),配有Exynos 7870 SoC。Exynos 7870使用 8 个实现Armv8-A 架构的Cortex A-53内核。不过,它不支持arm64-v8 ABI,也不清楚它支持哪种指令集。
有多个 Android 应用程序可以提取设备的系统 CPU 和 SoC 信息。
使用这样一个应用程序(AIDA64),它将指令集列为“64位ARM”,但支持的ABI仅列为armeabi-v7a和armeabi(下面的屏幕截图)。
另一个应用程序 (DroidInfo) 将 CPU 架构列为“ARMv7-A”,指令集也列为“armeabi-v7a”和“armeabi”(下面的屏幕截图)
DroidInfo 列出 SoC 模型和支持的指令集的屏幕截图
我的印象是,实现 v8a 架构的 CPU 核心能够利用armeabi-v8a ABI 来实现最优化的性能。
如果是这种情况,我想了解为什么该 SoC 仅支持 armeabi-v7a ABI 而不是 arm64-v8a ABI。ABI 上的 Android 开发人员页面针对 arm64-v8a ABI 进行了说明:
“此 ABI 适用于支持 AArch64 的基于 ARMv8 的 CPU。”
是否有基于 ARMv8 的 CPU 支持不同的指令集?ARM关于ARMv8指令集的参考手册指出,ARMv8有两个指令集——AArch64状态下使用的A64和AArch32状态下使用的A32。有没有可能这个CPU被锁定在Aarch32状态?如果是这种情况,这样做的原因是什么,或者是否有可能,有没有办法确认这种情况?
我也无法理解为什么这些应用程序报告的 Exynos 7870 的架构/指令集不一致,大概它们在幕后使用相同的 API 来获取此信息,或者是否有更强大的方法来获取“真实的”信息?
如果我完全走错了路,我会很感激一些关于我的理解错误的指示。
| 归档时间: |
|
| 查看次数: |
4057 次 |
| 最近记录: |