6.2 向量处理机的结构
向量处理机的基本思想是把两个向量的对应分量进行运算,产生一个结果向量。这样,如果A,B,C都是向量,各有N个元素,则一台向量处理机能够完成如下运算:C=A+B也可以表示成 0≤i≤N-1其中C用分量形式可表示为,A,B与其类似。
一种采用流水线运算部件实现上述运算的方法如图6.1所示。运算器的两条输入数据通路分别传送数据A和B。存储器每个时钟周期分别提供A和B的一个元素到相应的输入数据通路上。运算器每个时钟周期产生一个输出值。实际上,数据的输入速率只需和输出速率一样就可以了。如果运算器每d个时钟周期输出一个结果,那么输入数据的速率也就只需每d个时钟周期为每条数据通路送入一个数据就可以了。
图6.1是向量处理机最简单的框图,用它来说明数据在流水线上流动的一般情况。图中流水线运算器是向量计算机的核心部件。
要求向量计算机的存储器系统能提供给运算器连续不断的数据流以及接收来自运算器的连续不断的运算结果,这是设计存储器系统的困难之处。对此,向量处理机在系统结构方面所采用的主要技术都是设法维持连续的数据流,调整操作次序以减少数据流请求。假设取操作数、运算、把结果写回存储器在一个时钟周期内完成,就要求存储系统能在一个时钟周期内读出两个操作数和写回一个运算结果。
一般的随机访问存储器一个时钟周期内最多只能完成一次读操作或写操作。因此图6.1所示的存储器系统的带宽至少应3倍于一般的存储器系统。这里还忽略了输入/输出操作对存储器带宽的要求,以及取指令对存储器带宽的影响,不过向量结构的一大优点就在于取一次指令可以完成一个很长的向量运算。所以,与传统结构中20%-50%的带宽用于取指令的情况相比,向量结构中取指令操作所要求的带宽可以忽略。
系统结构设计者所面临的主要问题是如何设计出一个能满足运算器带宽要求的存储器系统。目前市场上出售的向量计算机主要采用两种方法:
(1)利用几个独立的存储器模块来支持对相互独立的数据的并发访问,从而达到所要求的存储器带宽。即存储器-存储器结构。
(2)构造一个具有所要求带宽的高速中间存储器,并能实现该高速中间存储器与主存储器之间的快速数据交换。即寄存器-寄存器结构。
在第一种方法中,如果一个存储模块一个时钟周期最多能取一个数据,那么要在一个时钟周期存取N个独立数据就需有N个独立的存储模块。在第二种方法中,中间存储器的容量较小,所以存取速度比较快,从而获得较高的带宽。但是,由于小容量的存储器中的数据必须由主存装入,尽管其带宽很高,最终大容量的主存仍会成为整个系统的瓶颈。
为了最大限度地利用这种小容量的高速存储器,对已装入高速存储器的操作数应尽量被多次访问。这样,处理机实际访问主存的请求就会减少,主存的带宽也不必和处理机所要求的最大带宽一样高了。
在后面我们还将看到这种高速存储器的另一个用途是提供主存所没有的访问方式。这样,就可以把矩阵这种数据结构从主存送到中间存储器。矩阵存入中间存储器之后就可以按行、按列、按对角线或按子阵对其进行快速存取。若矩阵存于主存储器中,就不一定都能按这些方式进行有效的存取。第二种方法在某些机器上又被加以改进,提供不止一级的中间存储器,适当选择各级存储器的容量、成本和性能,使得整个存储器系统的性能价格比较为理想。