《向量流水处理机》由会员分享,可在线阅读,更多相关《向量流水处理机(46页珍藏版)》请在金锄头文库上搜索。
1、第十四讲向量流水处理机,计 算 机 系 统 结 构,2,向量处理的基本概念 向量流水处理机的结构 提高向量流水处理机性能的方法,3,向量处理的基本概念,从数学的概念上讲,标量是指单个量,而向量是指一组标量。例如,有一个数组A(a1,a2,a3,an),其中括号内的每一个元素ai就是一个标量。而A称为向量,它由一组标量组成。 一条向量指令可以处理N个或N对操作数。我们把这N个互相独立的数叫做向量,对这样一组数的运算叫做向量处理。因此,向量指令的处理效率要比标量指令的处理效率高得多。,4,向量处理方式,有三种处理方式: 横向处理方式,又称为水平处理方式,横向加工方式等。向量计算是按行的方式从左至右
2、横向地进行。 纵向处理方式,又称为垂直处理方式,纵向加工方式等。向量计算是按列的方式自上而下纵向地进行。 纵横处理方式,又称为分组处理方式,纵横向加工方式等。横向处理和纵向处理相结合的方式。 要根据向量运算的特点和向量处理机的类型选择向量的处理方式。,5,向量处理方式,例如:向量计算:A*(B+C) 的 循环程序用C语言为 for(i=1; i=n; i+)di= ai * (bi+ci) 水平处理法(横向) d1=a1*(b1+c1) d2=a2*(b2+c2) dn=an*(bn+cn),6,水平处理法,假设中间结果为t(i) 计算第1个分量: t(1) b(1)c(1) d(1) a(1
3、)t(1) 计算第2个分量: T(2) b(2)c(2) d(2) a(2)t(2) 计算第N个分量: t(N) b(N)c(N) d(N) a(N)t(N),当采用流水方式计算时,在每个向量加乘运算中都会发生数据相关。而且当使用静态流水线时,还要进行2次乘和加功能的转移。这样共出现N次相关,2N次功能转换。因此,横向处理方法不适合于向量流水处理。,7,纵向处理法,向量计算是按列的方式自上而下纵向地进行。 即先是所有B和C向量元素对的相加运算,中间结果暂存到k1kN中;然后再纵向加工所有对应元素的乘法运算。,(b1c1),(b2c2),(bNcN),8,纵向处理法,用向量指令形式来表示,则变成
4、: KBC DKA 只需要两条指令就能实现 VADD B, C, K VMUL K, A, D 显然,当采用流水方式计算时,数据相关在两条向量指令间仅有1次,而流水线加、乘功能的切换只需1次。因此,纵向处理方法可获得较高的吞吐率,适合于在向量处理机中应用。,9,纵横处理法,当向量长度N大于向量寄存器长度n时,需要分组处理。 分成k组,组内采用纵向处理方式,组间采用横向处理方式。 分组方法: n=k*m+r 其中:m为每组长度,r为第k+1组剩余分量 Bi+CiKi (1到m) Ki*AiDi (1到m)Bi+CiKi (m+1到2m)Ki*AiDi (m+1到2m),10,纵横处理法,每组用两
5、条向量指令, 每组发生相关两次,其中组内发生数据相关一次,组间切换时发生相关一次。主要优点: 减少访问主存储器的次数 例如:中间变量K不写入主存储器,11,向量处理的基本概念 向量流水处理机的结构 提高向量流水处理机性能的方法,12,基本结构,主存,标量寄存器,标量功能部件,向量功能部件,向量寄存器/ 向量缓冲器,向量指令 控制部件,向量存取 部件,指令 处理部件,向量功能部件,向量功能部件,控制部分:控制部件和缓冲部件(中间REG),标量流水:功能部件和标量寄存器(S),向量流水:功能、存取部件和寄存器(V、VM、VL),向量流水处理机的结构,13,向量流水处理机的结构,按向量元素和结果存放
6、分M-M和R-R两类。 存储器存储器结构 多个独立的存储器模块并行工作 处理机结构简单 对存储系统的访问速度要求很高 寄存器寄存器结构 运算通过向量寄存器进行 需要大量高速寄存器 对存储系统访问速度的要求降低,14,存储器-存储器结构,向量处理机的基本思想是把两个向量的对应分量进行计算,产生一个结果向量。 参加运算的向量数据在存储器中,运算的结果也送到存储器中,其结构与数据流的示意图如下图所示。如果以向量加法为例子:C=A+B,一种能实现两个向量相加的流水结构的加法器,15,多模块存储器系统的向量处理机,16,向量计算C=A+B的时空图,假设一个存取周期等于两个时钟周期,并假设向量A、B、C各
7、有8个,那么理想实现CAB向量计算的时空图如图所示。 为了不发生读写冲突,各向量元素在存储模块中的位置是有意安排的。由于运算流水线分为4段,因此输入数据进入流水线4个时钟周期之后才能产生相应的输出值。当数据充满后,流水线就一直处于忙碌状态。,17,功能部件4 功能部件3 功能部件2 功能部件1 存储体M8 存储体M7 存储体M6 存储体M5 存储体M4 存储体M3 存储体M2 存储体M1,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 t,1 2 3 4 5 6 7 8,1 2 3 4 5 6 7 8,1 2 3 4 5 6 7 8,1 2 3 4 5 6 7 8,
8、RB6 RB6 RA8 RA8 WC4 WC4,RB5 RB5 RA7 RA7 WC3 WC3,RB4 RB4 RA6 RA6 WC2 WC2,RB3 RB3 RA5 RA5 WC1 WC1,RB2 RB2 RA4 RA4,RB1 RB1 RA3 RA3,RA2 RA2,RA1 RA1,WC8 WC8,WC7 WC7,WC6 WC6,WC5 WC5,RB8 RB8,RB7 RB7,C=A+B向量处理时序图,18,具有延迟缓冲器的向量流水线结构然而实际情况并非总和上述理想化的情况一样。假如结果向量C的第一个元素C1不是存放在我们想存放的模块M5而是在模块M6,那么将出现存储模块的读写冲突。为了消
9、除争用存储器的现象,可在运算流水线的输入端和输出端增加可变延迟缓冲器,如图所示。 显然,有了输入输出缓冲器,可以实现向量操作无冲突地进行,存储系统,可变延迟器,流水处理部件,可变延迟器,先启动读A,再启动读B,A延迟2个时钟进入加法器,19,寄存器-寄存器结构,使主存有较高带宽的另一种方法是由一级或多级中间存储器形成一个层次结构的存储器系统,其中带宽最高的这一级存储器安排在离处理器最近的位置。当处理器需要向量时,把向量从主存送到速度最快的这一级存储器。反之,运算结果也先送到速度最快的中间存储器。由于中间级存储器起着数据的中间存储作用,功能上相当于寄存器,因此称为寄存器-寄存器型向量处理机。,2
10、0,Cray-1向量机结构,21,对于向量运算来说,中间存储器是8个向量寄存器(V),每个向量寄存器有64个分量,每个分量为一个64位寄存器。 执行向量指令时,流水结构运算器在一个时钟周期内从两个V寄存器得到一对操作数,完成某种操作后用一个时钟周期时间把结果送入另一个V寄存器。注意,此处的向量运算流水线是从向量寄存器而不是从主存储器获得数据。同样,从流水线输出的结果向量也是送回向量寄存器。而另一方面,主存储器与V寄存器之间的数据传送以成组传送方式进行。 对标量运算来说,有两级中间存储器。速度很快的一级是8个64位的S寄存器,它是标量寄存器。主存与T寄存器之间以成组传送方式进行数据交换。,22,
11、中间存储器的优点,这种中间存储器与Cache相比的一大优点是速度快。因为CRAY-1流水运算器通过寄存器寻址方式访问中间存储器,而访问Cache必须查Cache表,这需要较长时间。,23,向量处理的基本概念 向量流水处理机的结构 提高向量流水处理机性能的方法,24,提高向量流水处理机性能的方法,一、多功能部件并行操作 二、链接技术 三、分段开采技术 四、向量递归技术,25,一、多功能部件并行操作,对向量机中多个功能部件,使其能并行操作。 并行操作条件: (1)不存在向量寄存器使用冲突 不允许出现RAW、WAR、WAW、RAR相关。 如:V4V1+V2 V5V1V2V5V2V3 V5V3V4 (
12、2)不存在功能部件使用冲突 每种功能部件一般只设置一个。 如:V3V1V2V6V4V5,26,二、链接技术,利用向量指令间存在的先写后读的数据相关性来加快向量指令序列执行速度的技术称为链接技术。 实质上,链接技术是标量流水定向传送方法在向量寄存器中的应用。例如下面的向量加、向量乘操作: ADDV V1,V2,V3 ; V1V2V3 MULV V4,V1,V5 ; V4V1V5,27,由于这两条指令间对V1向量寄存器存在先写后读相关,通常必须等加法指令做完后才可开始乘法指令。但如果使向量寄存器V1在同一时钟周期内,既接收一个功能部件送来的运算结果,又可把这一结果作为下一个向量指令运算所需的源操作
13、数传送给另一个功能部件,那就可使这两个部件链接起来进行操作。通常把这种链接称为超级向量操作。当链接进入充分流水操作状态后,在1个时钟周期就可同时获取两个操作结果。,28,链接条件:,(1)不存在功能部件使用冲突; (2)共用向量寄存器中向量长度、起始地址、偏移量、步长均相等; (3)参与链接的先行指令产生结果周期相同; (4)只有在先行指令产生第一结果分量的那个时钟方可链接,否则不行。,适用情况:,即第1条指令的结果,是第2条指令的操作数,这时,所得到的第1条指令的中间结果不必要等待全部向量元素都执行完才进行第二条指令的操作,可以将从一个流水线部件得到的结果直接送入下一个功能流水线部件的向量寄
14、存器,形成两条指令的链接 注意:不同向量机对向量指令的链接方法有所不同,29,例:用链接技术进行向量运算:DA(BC) 假设向量长度64,且向量B、C已由存储器取至V0和V1。 解:用下面3条向量指令可完成上述运算:LV V3, M(A) ; V3A ADDV V2, V0, V1 ; V2V0V1 MULV V,V2, V3 ; VV2V3 第1、2条指令无向量寄存器使用冲突,也无功能部件使用冲突,因而可以并行执行。 第3条指令与第1、2条指令均存在先写后读相关冲突,因而可将第3条指令与第1、2条指令链接执行。 由于同步的要求,数据进入、流出每个功能部件,包括访问储存器,都需1个时钟周期时间。,30,访存与浮点加并行, 再与浮点乘链接 LD V3,A ADDV V2,V0,V1 MULV V4,V2,V3,V0,V4,V1,V2,V3,1,3,2,4,5,6,1,3,2,4,5,6,浮点加,浮点乘,D,B,C,访存,存储器,A,并行和链接操作图,1,3,2,4,6,7,5,31,浮点加,访存,浮点乘,6 5 4 3 2 1,6 5 4 3 2 1,