ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

HLS高层次综合设计优化--pipeline造成循环展开说明

2026/8/10 3:12:47 拓冰建站 浏览量
HLS高层次综合设计优化--pipeline造成循环展开说明 一、函数pipeline1.如果对函数进行pipeline那么下层层级所有循环都会展开2.关于这个规则到底是为啥呢3.流水先设计意味着一个时钟周期就要启动新的迭代从而提高吞吐量二、流水线设计是硬件电路实现并行处理假设对函数pipeline如果其下层层级不对for循环展开会上什么情况1.我们来想一想如果对函数进行pipeline但是不对下层层级进行for循环的展开会怎么样呢2.如果不展开那么for循环需要很多个周期才能完成假设第一个数据进入了下层层级这个时候第二个clock,函数需要将第二个样本送进去但是这个时候子层的循环都没有执行完成你的第二个样本进不去需要等待采样这样设计不就出问题了吗3.为什么必须展开内层循环因为内层循环的迭代如果依赖外层流水线的阶段性如果不能展开就会变成串行执行破坏流水线的连续填充导致流水线停顿stall。4.如果外层循环流水化内层循环如果不展开那么内层循环的执行会占用多个时钟周期导致外层流水线的每个阶段无法在一个时钟周期内完成导致流水线必须暂停stall等待内层循环完成。因此为了保持外层流水线每个时钟周期都能处理一个新的迭代内层循环必须展开使得内层循环的所有操作可以在一个时钟周期内或几个固定周期内并行完成从而没有内部循环的等待。三、总结为了让外层流水线“不停车”内层循环的所有迭代必须在同一个时钟周期内或在一个固定的、极短的延迟内全部完成。展开Unrolling 就是将内层循环的 N 次迭代复制 N 份硬件逻辑。这样一来当流水线走到这个阶段时不再需要 N 个时钟周期而是通过空间上的并行电路在一个时钟周期内同时计算完内层循环的所有操作。结果 外层流水线的每一级依然能稳定地在一个时钟周期内完成从而保证了整个函数流水线像工厂流水线一样每一拍都输出一个结果。