第六章 向量处理机

例6.6 在一台向量处理机上实现A=B×s操作,其中A和B是长度为200的向量,s是一个标量。向量寄存器长度为64。各功能部件的启动时间和例6.5相同。求总的执行时间。
解:因为向量长度超过了向量寄存器的长度,所以要采取分段开采方法。每次循环主要由下面三条向量指令组成:
  LV V1,Rb ;取向量B
  MULTVS V2,V1,Fs ;向量和标量相乘
  SV Ra,V2 ;存向量
  这里假设A和B的最初分别放在Ra和Rb之中,s在Fs中。其它标量指令这里不一一列出了。
  这三条指令由于存在相关性,它们必须分属于3个编队,因此=3。根据Tn的计算公式,
  则 =4×(15+Tstart)+200×3
      = 60+(4×Tstart)+600
      =660+(4×Tstart)
  其中是向量取(LV)的启动时间(12个时钟周期)、向量乘(MULTVS)的启动时间(7个时钟周期)和向量存(SV)的启动时间(12个时钟周期)的和,所以=12+7+12=31因此=660+4×31=784 一个结果元素的平均执行时间(包括启动开销)为784/200=3.9。
   下面我们举一个向量指令能够链接的例子。
例6.7在某台向量处理机上执行DAXPY(double-precision a× X plus Y)代码,即完成Y=a×X+Y,其X和Y是向量,最初存放在内存。a是一个标量。它们的向量指令如下:
  LV V1,Rx ; 取向量X
  MULTSV V2, F0, V1 ; 标量和向量相乘
  LV V3,Ry ; 取向量Y
  ADDV V4, V2, V3 ; 相加
  SV Ry V4 ; 存结果
  我们可把上述五条向量指令分成三个编队,并且前两个编队中每两条指令组成一条链。
  LV V1,Rx MULTSV V2, F0, V1 编队1:取数和乘法指令链接
  LV V3,Ry ADDV V4, V2, V3 编队2:取数和加法指令链接
  SV Ry,V4 编队3:把结果存入
  可知=3, =15 =12+7+12+6+12=49,MVL=64。代入Tn的计算公式,得: