1.横向处理方式
逐个求Fi的方式,为此
先算: ![](../../../../img/ch9/gs_9_2.gif)
再算: ![](../../../../img/ch9/gs_9_3.gif)
……
最后算: ![](../../../../img/ch9/gs_9_4.gif)
一般计算机就是采用这种方式组成循环程序进行处理的。这种处理方式适用于一般的处理机,即标量处理机,而不适用于向量处理机的并行处理。
2.纵向处理方式
设A,D,E,F是长度为N的向量,A=(a1, a2,…,an), D=(d1, d2, …, dn),E=(e1, e2, …, en),F=(f1,
f2, …, fn),则上述DO循环可以写成如下向量运算的形式:
![](../../../../img/ch9/gs_9_5.gif)
纵向处理方式对整个向量按相同的运算处理完之后,再去执行别的运算。为此
先算 ![](../../../../img/ch9/gs_9_6.gif)
再算 B*U V
再算 U-E U
再算 U*D U
最后算 U+V F
这种处理方式适用于向量处理机。向量长度N的大小不受限制,无论N有多大,相同的运算都用一条向量指令完成。向量指令的源向量和目的向量都在内存储器中,运算的中间结果需要送回内存储器保存。因而,对存储器的信息流量要求较高。
3.纵横处理方式
即把长度为N的向量分成若干组,每组长度为n,组内按纵向方式处理,依次处理各组。若N=K·n+r,其中r为余数,也作为一组处理,则共有K+1组,其运算过程为:
先算第1组 ![](../../../../img/ch9/gs_9_7.gif)
…
再算第2组 ![](../../../../img/ch9/gs_9_8.gif)
…
……
最后算第K+1组 ![](../../../../img/ch9/gs_9_9.gif)
…
![](../../../../img/ch9/gs_9_10.gif)
纵横处理方式对向量长度N的大小也不加限制,但它是以n为一组进行分组处理的。在每组运算中,用长度为n的向量寄存器作为运算寄存器并保留中间结果,从而大大减少了访问存储器的次数。这就可以降低对存储器信息流量的要求,也减少访问存储器发生冲突所引起的等待时间,因而提高了处理速度。
|