在向量操作中,结果通常是不送回到作为源操作数使用的同一个向量寄存器中的。有一类特殊的向量循环,其流水线功能部件的输出可能要回送到它的一个源向量寄存器。换句话说,一个向量寄存器用来同时存放源操作数和结果操作数。
  在功能流水线上的这种递归操作要求特别小心以避免产生数据阻塞问题。
  Cray机器利用每个向量寄存器的分量计数器实现这一功能。在每个流水线周期,从分量这一角度看,向量寄存器的作用好象移位寄存器。当一个操作数分量移出向量寄存器进入流水线功能部件时,一个结果分量可以在同一周期进入腾空的分量寄存器。分量计数器必须跟踪移位操作,直到结果向量的所有64个分量都装入向量寄存器。
  例如,用浮点加法流水线完成递归向量求和V0V0+V1,其中向量寄存器V1保存要进行递归相加的浮点数,向量寄存器V0同时用作操作数寄存器和结果寄存器。令C1和C2分别是与向量寄存器V1和V2相关的分量计数器。初始时,计数器C0和C1都置成0,V0的第一个分量寄存器V00。中的初始值也置成0。通过浮点加法流水线需要6个时钟周期,寄存器和浮点加法流水线需要6个时钟周期,寄存器和浮点加法流水线之间的往返传送各还需要1个时钟周期,因此,一次加法计算总共需要1+6+1=8个时钟周期。假定向量长度寄存器的值为64,只作一个向量循环。
  当计算完成时,V0的分量寄存器将被装入。64个分量被分成8组,每组为8个分量的和。从V056到V063 为最后一个求和的组,其中每个寄存器保存了V1的8个分量的和,这个组共保存了8个这样的求和值。运算结束后,V0各个分量的内容如下:
第1组
第2组
第3组到第7组

第8组 (结果)