5.1.3向量启动时间与结果流出时间 在向量流水过程中也存在启动时间π,相当于标量流水线中填入时间, 以设置向量操作所涉及到的参数,比如设置向量长度等。启动后结果连续 输出,每输出一个结果的时间称为结果流出时间,可用/表示。若设向量 长度为冂,则一条向量指令执行时间可表示如下 T=T+nx (5.1) 【例5.2】在一个向量乘法流水线中,向量启动时间为10个时钟周期 启动后1个时钟周期流出一个结果,若向量长度为64,试求产生每个结 果向量元素所用的平均时间。 解:根据题意,Ts=10,l=1,n=64,则产生每一个结果向量元素的平 均时间兀为: T+n×I 10+64×1
5.1.3 向量启动时间与结果流出时间 在向量流水过程中也存在启动时间Tst,相当于标量流水线中填入时间, 以设置向量操作所涉及到的参数,比如设置向量长度等。启动后结果连续 输出,每输出一个结果的时间称为结果流出时间,可用Ir表示。若设向量 长度为n,则一条向量指令执行时间可表示如下: Tvp=Tst+n×Ir (5.1) 【例5.2】在一个向量乘法流水线中,向量启动时间为10个时钟周期, 启动后1个时钟周期流出一个结果,若向量长度为64,试求产生每一个结 果向量元素所用的平均时间。 解:根据题意,Tst=10,Ir=1,n=64,则产生每一个结果向量元素的平 均时间Tav为: Tav= = = = 1.16 Tvp n Tst+n×Ir n 10+64×1 64
可以看出,对于运算速度较慢的向量流水操作,启动 时间影响不大;对于速度较快向量流水操作,启动时间会产 生较大的影响。 对于寄存器一寄存器型向量处理机来说,向量启动时 司主要取决于功能部件流水线的深度,结果流出时间取决于 向量功能部件以多快的频率接收数据。当向量较长时,启动 稳定后的结果流出时间可视为1
可以看出,对于运算速度较慢的向量流水操作,启动 时间影响不大;对于速度较快向量流水操作,启动时间会产 生较大的影响。 对于寄存器—-寄存器型向量处理机来说,向量启动时 间主要取决于功能部件流水线的深度,结果流出时间取决于 向量功能部件以多快的频率接收数据。当向量较长时,启动 稳定后的结果流出时间可视为1
5.1.4向量操作长度控制与向量访问步长 1向量操作长度控制 (1)向量寄存器长度 在寄存器—寄存器型向量处理机中向量由向量寄存器存储,向量寄存 器的个数称为向量寄存器长度,可用A表示。比如,CRAY1的向量寄存 器长度为64。 (2)向量长度与向量长度寄存器 在实际运算中向量长度不一定正好等于向量寄存器的长度,可能小于 也可能大于向量寄存器的长度。因此,需用向量长度寄存器存放向量长度。 (3)向量操作长度控制 这里仍以axXY为例来说明。设向量长度为, FORTRAN程序如下: Do 10I=1 n 10Y()=a*X(①)+Y() 其中向量长度依赖于n,往往是一个过程参数,为此需设置一个向量 长度寄存器ⅥL,向量寄存器的长度用MⅥ表示
5.1.4 向量操作长度控制与向量访问步长 1.向量操作长度控制 (1)向量寄存器长度 在寄存器—-寄存器型向量处理机中向量由向量寄存器存储,向量寄存 器的个数称为向量寄存器长度,可用N来表示。比如,CRAY-1的向量寄存 器长度为64。 (2)向量长度与向量长度寄存器 在实际运算中向量长度n不一定正好等于向量寄存器的长度,可能小于 也可能大于向量寄存器的长度。因此,需用向量长度寄存器存放向量长度。 (3)向量操作长度控制 这里仍以Y=a×X+Y为例来说明。设向量长度为n,FORTRAN程序如下: DO 10 I=1,n 10 Y(I)= a*X(I)+Y(I) 其中向量长度依赖于n,往往是一个过程参数,为此需设置一个向量 长度寄存器VL,向量寄存器的长度用MVL表示
当向量长度小于向量寄存器的长度时,直接存入向量寄存器,其长度 存入向量长度寄存器中。如果向量长度大于向量寄存器的长度时,须分段存 储和运算。向量长度寄存器的值等于向量寄存器长度MV。采用分段技术后, 上述程序可修改成如下飛式 LOW=1 VL=(n MOD MVL) ;取向量的零头 DO 20 J=0,(N/MVL) ;确定外循环次数 Do10I=LOW,LOW+VL-1;按长度Ⅵ操作 Y(I)=a*X(①)+Y(工) ;运算 10 CONTINUE LOWELOW+VL 指向下一次开始运算的向量 VLEMVL ;修改向量长度寄存器的值 20 CONTINUE 在上述分段运算中,第一次运算的长度为( nMODMV),以后各 次的长度为MW,循环次数为(MWM)+1
当向量长度小于向量寄存器的长度时,直接存入向量寄存器,其长度 存入向量长度寄存器中。如果向量长度大于向量寄存器的长度时,须分段存 储和运算。向量长度寄存器的值等于向量寄存器长度MVL。采用分段技术后, 上述程序可修改成如下形式: LOW=1 VL=(n MOD MVL) ;取向量的零头 DO 20 J=0,(N/MVL) ;确定外循环次数 DO 10 I=LOW,LOW+VL-1 ;按长度VL操作 Y(I)= a*X(I)+Y(I) ;运算 10 CONTINUE LOW=LOW+VL ;指向下一次开始运算的向量 VL=MVL ;修改向量长度寄存器的值 20 CONTINUE 在上述分段运算中,第一次运算的长度为(n MOD MVL),以后各 次的长度为MVL,循环次数为(N/MVL)+1
2向量访问步长与跨步访问 目前,存储器一般采用维地址,若存储二维或者多维数组 时,须将其元素映象到维地址空间中。常以行或列为主来存储 各个元素。对于以行为主的存储方式,当按行访问时各行元素地 址相邻;按列访问时,各列中相邻元素不再相邻。这个间隔称为 跨步,这时的访问称为跨步访问。 例如,设有100×100的数组厢和B,求C=AxB设计 FORTRAN循环程序如下 DO10I=1,100 DO10J=1,100 C(I,J)=0.0 DO10K=1,100 10 A(I, J)=C(I, J)+A(I, K)*B(K, J)
2.向量访问步长与跨步访问 目前,存储器一般采用一维地址,若存储二维或者多维数组 时,须将其元素映象到一维地址空间中。常以行或列为主来存储 各个元素。对于以行为主的存储方式,当按行访问时各行元素地 址相邻;按列访问时,各列中相邻元素不再相邻。这个间隔称为 跨步,这时的访问称为跨步访问。 例如,设有100×100的数组A和B,求C=A×B。设计 FORTRAN循环程序如下: DO 10 I=1,100 DO 10 J=1,100 C(I,J)=0.0 DO 10 K=1,100 10 A(I,J)= C(I,J)+ A(I,K)*B(K,J)