题
较新的 ARM 处理器包括 PLD 和 PLI 指令。
我正在编写紧密的内部循环(用 C++ 编写),它具有非顺序内存访问模式,但我的代码自然可以完全理解该模式。如果我可以在处理当前内存位置的同时预取下一个位置,我预计会有显着的加速,并且我希望这足够快,值得尝试!
我正在使用来自 ARM 的新的昂贵编译器,它似乎没有在任何地方包含 PLD 指令,更不用说在我关心的这个特定循环中了。
如何在我的 C++ 代码中包含显式预取指令?
其他提示
如果您试图从这些循环中真正获得最大性能,那么我建议您在汇编程序中编写整个循环结构。您应该能够根据循环中涉及的数据结构使用内联汇编。如果您可以展开循环的任何部分(例如涉及非顺序访问的部分),那就更好了。
冒着问显而易见的风险:您验证了编译器的目标架构吗?例如(幽默一下),如果默认情况下编译器针对 ARM7,那么您 绝不 去看PLD指令。
不隶属于 StackOverflow