ZHCU881D May 2020 – May 2024
对循环进行软件流水线处理时,C7000 编译器会经历三个基本阶段。这三个阶段是:
当编译器试图对内循环进行软件流水线处理时,编译器可能已对循环中的代码应用了某些转换,也可能合并了相邻或嵌套循环。
阶段 1:认证
在编译器允许软件流水线或认为软件流水线合法之前,必须满足几个条件。导致软件流水线失败的两个最常见条件是:
如果软件流水线的任何条件无法 满足,流水线认证将会停止,并显示不合格消息。有关疑难解答,请参阅节 5.4.1,有关此阶段所提供的信息,请参阅节 5.2.1。
如果满足软件流水线的所有条件,编译器继续进入阶段 2。
阶段 2:收集循环和依赖信息
软件流水线的第二阶段涉及收集循环资源和依赖图信息。有关此阶段输出的信息,请参阅节 5.2.2。
阶段 3:软件流水线尝试
一旦编译器认证循环可进行软件流水线,对其进行分区,并分析必要的循环携带和资源要求后,便可以尝试执行软件流水线。
编译器尝试在特定启动间隔 (ii
) 下开始对循环进行软件流水线处理。每当在特定启动间隔下编译器的软件流水线尝试失败时,ii
便会增加,并进行另一次软件流水线尝试。在软件流水线信息注释块中可看到此信息。这个过程一直持续到软件流水线尝试成功或 ii
等于未进行软件流水线的调度循环的长度。如果 ii
达到未进行软件流水线的调度循环的长度,软件流水线尝试将会停止,编译器则生成非软件流水线循环。更多有关此阶段中提供的信息,请参阅节 5.2.3。
如果软件流水线尝试不成功,编译器会提供附加反馈来帮助说明原因。有关最常见的软件流水线故障列表和缓解策略,请参阅节 5.4.2。
在特定启动间隔下找到成功的软件流水线调度和寄存器分配后,便会显示关于循环的更多信息。请参阅节 5.2.4、节 5.2.5、节 5.2.6、节 5.2.7 和 节 5.2.8。