第六章 向量处理机

6.1.2 向量处理方式

  在大型数组的处理中常常包含向量计算,按照数组中各计算相继的次序,我们可以把向量处理方法分为三种类型:
  (1)横向处理方式。向量计算是按行的方式从左至右横向地进行。
  (2)纵向处理方式。向量计算是按列的方式自上而下纵向地进行。
  (3)纵横处理方式。横向处理和纵向处理相结合的方式。
  下面以一个用FORTRAN语言编写的程序来说明上述三种处理方式:
    
 
  1.横向处理方式

  逐个求Fi的方式,为此
  先算:
  再算:
  ……
  最后算:
一般计算机就是采用这种方式组成循环程序进行处理的。这种处理方式适用于一般的处理机,即标量处理机,而不适用于向量处理机的并行处理。

  2.纵向处理方式

  设A,D,E,F是长度为N的向量,则上述DO循环可以写成如下向量运算的形式:
     
  纵向处理方式对整个向量按相同的运算处理完之后,再去执行别的运算。为此
  先算 
  再算  
  再算  
  再算  
  最后算
  这种处理方式适用于向量处理机。向量长度N的大小不受限制,无论N有多大,相同的运算都用一条向量指令完成。向量指令的源向量和目的向量都在内存储器中,运算的中间结果需要送回内存储器保存。因而,对存储器的信息流量要求较高。

  3.纵横处理方式

  即把长度为N的向量分成若干组,每组长度为n,组内按纵向方式处理,依次处理各组。若N=K・n+r,其中r为余数,也作为一组处理,则共有K+1组,其运算过程为:
  先算第1组    
         
         …
  再算第2组   
          
          
  ……
  最后算第K+1组
           
           …
           
  纵横处理方式对向量长度N的大小也不加限制,但它是以n为一组进行分组处理的。在每组运算中,用长度为n的向量寄存器作为运算寄存器并保留中间结果,从而大大减少了访问存储器的次数。这就可以降低对存储器信息流量的要求,也减少访问存储器发生冲突所引起的等待时间,因而提高了处理速度。