【发布时间】:2014-12-29 08:14:04
【问题描述】:
如何判断给定ARM处理器上是否存在NEON引擎?可以为此目的查询任何状态/标志寄存器吗?
【问题讨论】:
-
有大量的协处理器寄存器可用于为您提供有关该内核支持和不支持的内容的详细信息。获取该内核或类似内核的 TRM 以查看这些寄存器所在的位置。
-
我相信 ARM 处理器是按照标准设计的。这些信息和那些寄存器实际上是有特权的;因此,在 Linux 下,您必须查看
/proc/cpuinfo以查找 NEON 或 Advanced SIMD 标志。对于特权代码,请查看 ARMv7 架构参考手册,第 B3.12.19 c1 节,协处理器访问控制寄存器 (CPACR);该寄存器的第 31 位是您想要的。 -
CPACR 的第 31 位在设置为 1 时禁用 NEON 指令解码,这似乎不是检测 NEON 引擎的直接方法。
-
@Thomson 立即阅读以下内容; 在以下实现中: 同样,如果支持,该位将重置为零。
-
虽然评论似乎与@Thomson 的场景无关,但我会继续做我破纪录的事情,并指出解析 /proc/cpuinfo 是从不正确答案。 HWCAPS 是从 Linux 用户态进程确定 CPU 特性的方法。 community.arm.com/groups/android-community/blog/2014/10/10/…