如何在具有霓虹内在函数的多核处理器中有效地使用所有霓虹灯单元
Posted
技术标签:
【中文标题】如何在具有霓虹内在函数的多核处理器中有效地使用所有霓虹灯单元【英文标题】:How to use all neon units efficiently in multi-core processor with neon intrinsics 【发布时间】:2016-07-18 06:24:03 【问题描述】:Neon intinsics 将寄存器的分配留给编译器,所以我们不需要关心它。但是我想知道在多核处理器中(我的处理器是 zynq,有两个 arm-cortex-A9 内核,两个霓虹灯单元),编译器是否知道如何有效地使用所有霓虹灯单元?或者我需要做些什么来确保编译器可以使用所有霓虹灯单元?
我认为在多核处理器中,如果我们可以使用所有的霓虹灯单元,我们可能会获得更好的性能增益。有人知道吗?谢谢!
【问题讨论】:
这个问题没有任何意义——NEON 单元仍然是 CPU 内核的一部分。除非您有效地问“我如何编写多线程代码以在两个内核上运行?”,但没有更多细节将属于“过于宽泛”。 谢谢!这是我的错误。您的意思是我们使用哪个 NEON 单元取决于我们使用哪个 CPU 内核? 是的,无论它与流水线的其余部分的集成程度如何(从 Cortex-A8 上的“不太”到当前某些内核上的“不可分割”),它仍然是CPU 内核作为整数 ALU 或任何其他块。我希望你能看到问“或者我需要做些什么来确保编译器可以使用所有寄存器文件/指令解码器/加载存储单元?”的愚蠢行为? - FPU 没有什么不同,无论是仅 VFP 还是完整的 NEON 矢量管道。 【参考方案1】:NEON 是着色器核心中的一个功能单元,仅适用于 x86 的 SSE,因此其行为类似于任何“普通”整数或浮点指令。
编译器可以自动处理使用单个内核中的单元,但是在多个内核中使用多个 NEON 单元将需要显式的应用程序逻辑来将工作拆分到多个线程上。
【讨论】:
以上是关于如何在具有霓虹内在函数的多核处理器中有效地使用所有霓虹灯单元的主要内容,如果未能解决你的问题,请参考以下文章