时序和资源约束下重定时软件循环的代码大小缩减
1. 引言
重定时最初是作为时钟同步数字电路的优化技术提出的,后来也成功应用于循环密集型程序编译时的循环优化。在软件实现中,重定时会将一个寄存器从操作符的输入移动到输出,这意味着操作符结果的使用会延迟一个迭代,而操作数的使用会提前一个迭代。
对单个循环应用重定时后,代码会由三部分组成:前言(prologue)、新循环和尾声(epilogue)。前言是在新循环的重复处理开始前必须执行的原始代码段;新循环在以优化时序为目标时,运行速度会比原循环更快;尾声则是新循环和前言无法执行的原始代码段。
减少重定时循环的代码大小对于内存受限的片上系统和嵌入式系统尤为重要,同时也会对功耗产生影响。本文旨在解决在时序和资源约束下减少重定时软件循环代码大小的问题,通过数学公式对该问题进行了描述,并开发了相应的算法来进行优化求解。
2. 循环图模型
本文主要关注形如图 1 (a) 所示的 for 类型循环,假设循环体仅由一组计算和/或赋值操作组成,不包含条件或分支指令(如 if - then - else)。
我们使用有向循环图 (G=(V, E, d, w)) 来对循环进行建模,其中:
- (V) 是循环体中的操作集合;
- (E) 是表示数据依赖关系的弧集合;
- 每个顶点 (v \in V) 都有一个非负整数执行延迟 (d(v) \in N),其中 (N) 是非负整数集合;
- 每条弧 (e_{u,v} \in E)(从顶点 (u \in V) 到顶点 (v \in V))都有一个权重 (w(e_{u,v}) \in N),这意味着操作 (u) 在任
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



