1.循环控制结构的处理
  处理循环控制结构的方法大体上可以分为两类:非流水线设计方式与流水线设计方式。图5.20是这两种方法的示意图。 
图5.20 循环结构的两种处理方法
  循环结构常见于数字信号处理(Digital Signal Processing, DSP)算法中。在数字信号处理应用中,设fc为外界采样频率,tc为控制步时间段长度。为使采样数据不致丢失,调度方案应该使最终设计具有与fc相当的数据吞吐速度。即每隔nc个控制步,系统必须接受一组新的采样数据,并对这组数据进行相应的处理。其中
  外界对数据处理的要求由fc明确表示,当控制步时间段长度tc确定后,控制步数nc就被确定。
  定义5.4 循环过程完整地处理一组采样数据所需的控制步数目称为循环体的执行时间,用EL( execution length )表示。EL由硬件能力决定。
  定义5.5 循环过程中两组采样数据处理过程起始点时间之差(以控制步数目来衡量)称为循环体的数据等待时间,用IL(input data latency)表示。IL是调度过程中可以选择的一个参数。

  设计方式的选择方法如下:
  (1)如果数据等待时间大于等于循环体执行时间(IL≥EL ), 意味着循环体执行时间EL已经可以满足外界对数据处理的要求,只要用非流水线设计方式即可。为了以尽可能低的成本实现DSP系统,通常令EL = nc
  (2)如果数据等待时间小于循环体执行时间(IL < EL ), 意味着循环体执行时间EL不能满足外界对数据处理的要求,需要用流水线设计方式来满足外界对数据处理的要求。为了以尽可能低的成本实现DSP系统,通常选择IL = nc,即令数据的等待时间与外界对数据处理的要求相一致。
  从图5.20中可以看出,对于流水线设计方式,nc对应于循环体的数据等待时间IL。对于非流水线设计方式,nc对应于循环体的执行时间EL( 此时IL = EL )。
  对于非流水线设计方式,操作的调度相对简单。其原因在于:非流水线系统中,每一时刻只有一个控制步中的操作在执行,只需考虑一个循环体中的操作调度。另外,非流水线设计方式下,一组数据处理过程中的任何一个操作必然在下一组数据处理开始之前完成,操作间不存在跨过程(循环体)的数据引用,可以直接断开反馈边,将循环体展开进行调度。对于流水线设计方式,操作的调度相对复杂一些。
  思考题:既然非流水线方式比较简单就应该尽量使用非流水线方式,在什么情况下才需要使用流水线方式?