| 定义5.6 在两组相邻数据处理过程中,如果前一组数据处理过程中某操作的输出被后一组数据处理过程中的另一个操作引用,则称这种引用为跨循环体的数据引用。 例如,图5.14中的操作3、操作7、操作10和操作11构成了一个环路。为区分两组相邻数据处理过程中的操作,现在用上标的形式加以标注:前一组数据处理过程中的操作用op32 表示,后一组数据处理过程中的操作用 流水线设计方式的操作调度相对复杂一些,其原因在于:数据处理过程在时间上相互重叠,调度时不能只考虑当前控制步的情况,还要考虑与当前控制步重叠的其他控制步的情况。如图5.20(b)所示,若当前控制步为P1的第5控制步,则还要考虑P2的第1控制步的情况。另外,调度时控制数据流图中的环路不能简单地断开,必须保证跨过程数据引用的正确性。 在流水线设计方式下,实际上影响IL的一个重要因素是环路,即跨过程数据引用关系。如图5.21(a)所示,9个操作均为单周期操作,并且可以由同一类功能单元实现。其中操作8到操作4的数据相关边为反馈边,操作8的输出被操作4引用。显然,IL必须大于操作8与操作4的高度差(即从操作1到操作8的路径长度与操作1到操作4的路径长度之差)。 图5.21(b)给出了流水线设计方式下一种循环的展开与折叠方案。从图中看出,经过循环体展开与折叠处理后,在IL = 3时,仅需3个该类功能单元即可实现循环操作的调度。其中浅绿色阴影框中的部分称为流水线观察窗,流水线观察窗从前一组数据处理过程中的第IL + 1控制步开始,到后一组数据处理过程中的第IL控制步为止,覆盖了由两组数据处理过程的操作组成的循环体中的所有操作。在流水线观察窗中,前一组数据处理过程中的第IL + i(1≤i≤IL)控制步与后一组数据处理过程中的第i(1≤i≤IL)控制步合称为流水层。一个流水线观察窗由 ( EL - IL )个流水层组成,通过该窗口可以观察循环体中所有操作的执行,也可以通过流水层来同时考虑前一组数据处理过程中的第IL + i控制步与后一组数据处理过程的第i控制步中的所有操作。
|