第六章 向量处理机

2.向量循环或分段开采技术

  当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段。处理长向量的程序结构称为向量循环。这种技术也称为分段开采,一次处理一个向量段。将长向量分段成为循环是由系统硬件和软件控制完成的,程序员看不到这种向量分段为循环的过程,对程序员是透明的。每经过一次循环,便处理长向量的一个段。一般在进入循环以前,根据向量长度计算出循环计数值。下面是一个说明Cray 1实现向量循环的例子。
例6.3设A和B是长度为N的向量。考虑以下的循环操作:
    DO 10 I=1,N
  10 A(I)=5.0*B(I)+C
  当N为64或更小时,产生A数组的7条指令序列是:
      在标量寄存器内设置常数
       将常数C装入标量寄存器
      在VL寄存器内设置向量长度
       将B向量读入向量寄存器
    B数组的每个分量和常数相乘
    C和5*B(x) 相加
      将结果向量存入A数组
  第5条和第6条指令使用了不同的功能部件,又共享中间寄存器,它们可以链接在一起,该链的输出最后存入A数组。
  当N超过64时,就需要向量循环。在进入循环以前,把N除以64,以确定循环计数值。如果有余数,则在第一次循环中首先产生A数组的余数个分量。对于A和B数组的每64个分量的段,循环由第4条到第7条指令组成。