Android程序如何使用NEON SIMD?

时间:2012-07-17 02:05:33

标签: android neon

我一直在学习cpu功能,偶然发现了NEON。

从我所看到的,看起来NEON需要特定的编程来使用它,但这是完全正确的,或者具有此功能的cpus是否仍然找到方法来直到它并加快某些应用程序的媒体进程,即使它没有特定的代码吗?

1 个答案:

答案 0 :(得分:10)

有许多方法可以使用NEON指令。其中一些是:

  • 库。您的memcpy很可能是使用NEON手工制作的。 API中的音乐/视频回放库正在使用NEON和/或GPU进行加速。麻生太郎,有三个使用它的库。来自Qualcomm的FastCV就是一个很好的例子
  • 编译器发布的说明。某些编译器在提供正确选项时将发出NEON指令。大多数编译器将使用neon进行浮点运算,但不对它们进行矢量化。他们将该单元用作单个数据单元,因为它快速方便。 GCC和ARM编译器中有一些矢量化功能,但它们的范围和结果确实有限。
  • 带内在函数的手工编码C http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html这可能是开始进入NEON世界的最佳方式。
  • 手动编码汇编程序。如果你想达到最佳性能,这似乎是最好的。它还需要大量的努力和CS知识。

  • 最后但并非最不重要的是,只需下载使用它的应用即可使用NEON。您最喜欢的音乐播放器和相机应用程序可以将NEON设备放在智能手机中,以便充分利用。

结论:NEON有很多用法,但仅在代码专门包含NEON指令时使用。从技术上讲,正如@pst所说,它必须是一段代码目标