Blackfin 在循环缓冲区中进行零开销循环。它如何在没有比较或递减计数器的情况下实现迭代次数已完成?
问问题
807 次
1 回答
2
来自 blackfin 文档:
定序器支持零开销循环机制。定序器包含两个循环单元,每个循环单元包含三个寄存器。每个循环单元都有一个循环顶部寄存器(LT0、LT1)、一个循环底部寄存器(LB0、LB1)和一个循环计数寄存器(LC0、LC1)。
两组零开销循环寄存器实现循环,使用硬件计数器而不是软件指令来评估循环条件。评估后,处理分支到新的目标地址。两组寄存器都包括循环计数器 (LC)、循环顶部 (LT) 和循环底部 (LB) 寄存器。
如果每次进入循环时循环计数器都递减,则此方法有效。
然后当程序计数器到达 Loop Bottom 时,测试这个计数器的值就足够了
- 如果 Loop Counter == 0 则转到下一条指令并退出循环
- 如果 Loop Counter != 0,则到 Loop Top 继续迭代。还需要同时递减 Loop Counter。
这确保了零开销循环。
于 2019-07-03T18:42:32.027 回答