非递归与递归计算的等价变换解析
在计算架构的设计中,为了提高计算效率、优化硬件资源以及满足不同的性能需求,需要对计算进行各种等价变换。下面将详细介绍非递归计算和递归计算的等价变换相关内容。
非递归计算的等价变换
非递归计算的结果不仅取决于当前输入值,还与过去的输入值有关,因此其架构需要包含内存。在依赖有向图(DDG)中,这表现为存在权重大于零的边,但由于非递归性,DDG 中不存在循环路径。
重定时(Retiming)
重定时也称为寄存器平衡,是一种通过重新定位寄存器来提高计算速率而不影响功能的重组方法。其目标是均衡任意两个寄存器之间的计算延迟,从而缩短限制计算周期的最长路径。
在 DDG 中,要实现重定时,需要考虑如何在不改变原始功能的情况下修改边的权重。可以通过对某个顶点增加或减少其入边和出边的延迟来实现。例如,选择一个顶点,给指向该顶点的每条边增加延迟,同时从离开该顶点的每条边移除相同的延迟,使该顶点的操作滞后于其他顶点;反之,也可以使该顶点领先于其他顶点。由于入边的修改在出边得到补偿,从外部看 DDG 的功能不变,重定时后的 DDG 与初始的 DDG 功能等价。
不过,并非所有通过这种方式得到的 DDG 都是合法的。合法的重定时必须遵守以下规则:
1. 数据汇(输出)和时变数据源(可变输入)不能作为要重定时的超顶点的一部分,而常量数据源(固定输入)在重定时时不会发生任何变化。
2. 当一个顶点或超顶点被分配 l 个计算周期的滞后(领先)时,其所有入边的权重增加(减少) l,所有出边的权重减少(增加) l。
3. 任何边的权重不能变为负值。
4. 任何循环路径必须始终包含至
超级会员免费看
订阅专栏 解锁全文
886

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



