最近因项目的需要,在进行DSP代码优化,现在手中有一个算法,一个比较大的循环,由于算法实现由他人完成,我就只针对现有结构对代码进行优化,通过编译器优化和手工调整,循环结构能流水起来,但通过看编译器生成的汇编代码中的流水信息,A、B两个寄存器组使用不平衡,功能单元使用也不平衡。如附件所示。
查看过相关的关于C6000优化的文档资料,提示通过对相应的指针采用了 加关键字restrict 以及循环前加 #pragma MUST_ITERATE指令,等实现资源的平衡,但这里始终无法实现,导致ii值比较大。
对于这样的大循环体,不知道高手们有何好的方法实现A/B突破口组的平衡?谢谢