1、向量指令的类型: 以CRAY-1向量处理机为例,有四类指令,两种指令格式。 (1) 向量与向量操作,Vi Vj OP Vk (2) 向量与标量操作,Vi Sj OP Vk (3) 向量取,Vi ((Ah)+ jkm) (4) 向量存,((Ah)+ jkm) Vi 第一类指令从一个或二个向量寄存器取得操作数并把结果回送到另一个向量寄存器中去。第二类向量指令从Si寄存器取得一个标量操作数,又从Vk寄存器取得一个向量操作数,并且把向量结果回送给另一个向量寄存器Vi。第三类以及第四类指令分别是把数据从存储器传送到一个向量寄存器中以及反过来把数据从向量寄存器传送到存储器中。存储器和工作寄存器之间的数据通路可以看成是具有固定时间延迟的数据传送流水线。 |
||||||||||||||||||
CRAY向量处理机的指令格式 | ||||||||||||||||||
|
||||||||||||||||||
gh为操作码,i为目的寄存器编号,j、k为源寄存器编号。 |
||||||||||||||||||
|
||||||||||||||||||
g为操作码,h为变址寄存器A的编号, i为目的寄存器编号,jkm共22位为形式地址。 |
||||||||||||||||||
当发出向量指令时,所要求的功能流水线和操作数寄存器便要预定若干个时钟周期,其值取决于向量长度。使用同一组功能部件或操作数寄存器的后继向量指令在预定被释放之前是不能发出的。两个或更多的向量指令如果是不相关的,便可以同时使用不同功能流水线和不同的向量寄存器。这种并发的指令能以相继的时钟周期发出。 图9.6(a)表示了两条独立的指令,其中一条使用加法流水线而另一条使用乘法流水线。图9.6(b)描述了两个独之的向量加法都要求使用加法流水线。当第一条加法指令发出时,加法流水线就被预定了,所以,第二条加法指令就要延迟到加法流水线空闲后才能发出。图9.6(c)表明两条不同的向量指令共享同一个操作数寄存器V1。第一条加法指令预定操作数寄存器V1,使乘法指令要延迟到操作数寄存器V1空闲后才能发出。图9.6(d)说明加法流水线和操作数寄存器V1都被预定的情况。就象操作数寄存器要求预定一样,结果寄存器也需要预定若干个时钟周期,其值取决于向量长度和流水线延迟。这种预定保证了最后结果能正确地传送到结果寄存器。 |
||||||||||||||||||
图9.6 功能部件和操作数寄存器的预定 | ||||||||||||||||||
V0V1+V2 V3V4*V5 (a)不相关的指令 V3V1+V2 V3V1+V2 V0V1+V2 |
||||||||||||||||||
结果寄存器可能成为后继指令的操作数寄存器。在Cray 1中,这种技术称为两条流水线的链接(chaining)。流水线链接是从流水线的内部定向概念发展而来的。链接是当从一个流水线部件得到的结果直接送入另一个功能流水线的操作数寄存器时所发生的连接过程。换句话说,中间结果不必送回存储器,而且甚至在向量操作完成以前就使用。链接允许当第一个结果一变成可用的操作数时就马上发出相继的操作。当然,所需要的功能流水线和操作数寄存器必须恰当地预定;否则,链接操作就不得不挂起直到所需要的资源变为可用为止。 |
||||||||||||||||||