9

我一直在学习一些关于 cpu 功能的知识,并偶然发现了 NEON。

从我读过的内容来看,NEON 似乎需要特定的编程才能使用它,但这是完全正确的吗,或者具有此功能的 cpu 是否仍然找到方法来实现它并加快某些应用程序的媒体进程,即使没有具体代码呢?

4

1 回答 1

10

有多种方法可以使用 NEON 指令。他们之中有一些是:

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

  • 最后但同样重要的是,您只需下载使用 NEON 的应用程序即可使用它。您最喜欢的音乐播放器和相机应用程序让您的智能手机中的 NEON 装置得到充分利用。

结论:NEON的用法很多,但只有在代码中具体包含NEON指令的情况下才会使用。正如@pst 所说,从技术上讲,它必须以一段代码为目标。

于 2012-07-17T06:19:45.053 回答