[英]Prefetch instructions on ARM
较新的ARM处理器包括PLD和PLI指令。
我正在编写紧密的内部循环(在C ++中),它具有非顺序的内存访问模式,但是我的代码完全理解的模式。 如果我可以在处理当前内存位置的同时预取下一个位置,我预计会有大幅加速,我希望这很快就足以尝试值得实验!
我正在使用来自ARM的新的昂贵的编译器,它似乎没有在任何地方包含PLD指令,更不用说在我关心的这个特定循环中了。
如何在C ++代码中包含显式预取指令?
如果您试图从这些循环中提取真正的最大性能,那么我建议在汇编程序中编写整个循环结构。 您应该能够使用内联汇编,具体取决于循环中涉及的数据结构。 如果你可以展开任何一个循环(比如使访问非顺序访问所涉及的部分),那就更好了。
冒着明显的问题:你有没有验证过编译器的目标架构? 例如(幽默我),如果默认编译器是针对ARM7的,那么你永远不会看到PLD指令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.