Intel®高层次综合编译器专业版: 最佳实践指南

ID 683152
日期 12/04/2023
Public
文档目录

5.9. 提升Loop II以提高fMAX

如果有一个不影响组件吞吐量的循环,就可以使用ii pragma指令提升循环的启动间隔(II)来尝试增加设计中的fMAX

实例

假设组件有2个不同顺序的可流水线循环的情况:低trip count的循环和高trip count且无循环携带的存储器依赖关系的处理循环。该情况下,编译器并不知道初始化循环对设计的整体吞吐量的影响要小得多。如果可能,编译器会尝试将两个II为1的循环进行流水线处理。

由于初始化循环带有循环携带的依赖关系,因此其将有一个反馈路径位于生成的硬件中。为获得具有这种反馈路径的II,可能会牺牲一些时钟频率。根据主循环中的反馈路径,设计中的其余部分可能会以更高的工作频率运行。

如果在初始化循环中指定#pragma ii 2,相当于告知编译器优化该循环的II时无需太积极。较低积极度的优化使编译器可对限制fmax的路径进行流水线化,并使整体组件设计达到更高fmax

初始化循环需要更长时间才能使用新的II。但循环的长久运行时间反而减少了,因为较高fmax补偿了初始化循环中增加的运行时间。