您好、欢迎来到现金彩票网!
当前位置:双彩网 > 向量指令 >

向量流水技术PPTppt

发布时间:2019-06-30 09:47 来源:未知 编辑:admin

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  3.6 向量流水技术;向量处理机是具有向量数据表示和向量指令系统的处理机。 向量处理机是解决数值计算问题的一种高性能计算机。 向量处理机属大型或巨型机,也可以用微机加一台向量协处理器组成。 向量处理机一般都采用流水线结构,通常有多条并行工作的流水线。 必须把要解决的问题转化为向量运算,才能发挥向量处理机的效率。;3. 6.1 向量流水机的基本系统结构;3.6.1.1 向量流水处理的主要特点;在对相同数量的数据项进行操作时,向量操作要比一串标量指令操作更快。 向量流水机可使访存和有效地址计算流水化。 高档的向量机允许多个向量操作同时进行,从而可开发对不同元素进行多个向量操作的并行性。;向量处理机的典型结构图;例:一个典型向量求解问题: Y=a×X+Y 其中X和Y为向量,初始值存放在存储器中,a为标量。 采用双精度运算时的算法:a乘X后再加Y。;若用标量机运算,需要用标量指令对向量中的每个元素进行一次乘、加和存储操作,并且为了实现循环操作,每次必须要指明对X和Y中元素位置的下标变量进行增量,并使操作次数每次减1,以判别循环是否结束。 设X和Y向量的首地址分别存放在Rx和Ry中,当向量元素长度为64时,用标量机处理的循环程序段为:; LD F0,a ;标量a装入F0 ADDI R4,Rx,#512 ;将向量元素的末地址装 ;入R4中 LOOP:LD F2,0(Rx) ;取向量元素X(i) MULD F2,F0,F2 ;a与X(i)相乘 LD F4,0(Ry) ;取向量元素Y(i) ADDD F4,F2,F4 ;aX(i)与Y(i)相加 SD 0(Ry),F4 ;存结果向量元素 ADDI Rx,Rx,#8 ;增量向量元素X下标 ADDI Ry,Ry,#8 ;增量向量元素Y下标 SUB R20,R4,Rx ;R4-Rx→R20,计算是 ;否到达限界值 BNZ R20,LOOP ;若循环未结束,转LOOP;用向量机完成同样操作: LD F0,a ;标量a装入F0 LV V1,Rx ;装入向量X,LV为向 量取指令 MULTV V2,F0,V1 ;向量X与标量a相乘 LV V3,Ry ;装入向量Y ADDV V4,V2,V3 ;向量加aX+Y SV Ry,V4 ;存结果向量,SV为向量存指令;;标量机与向量机计算Y=a×X+Y的比较;3.6.1.3 向量启动时间和启动率;例:一个向量乘法流水部件的启动时间为l0个时钟周期。启动后的启动率为1。对于长度为64的向量乘法,产生每个向量元素结果所需时钟周期数为: 对于运行速度较慢的向量流水操作,启动时间的大小对它的影响不大,但对于启动率为1的高速向量流水操作,启动时间的增加就将使性能受到较大影响。 ;寄存器 — 寄存器工作方式的影响因素;3.6.2 向量操作长度控制和向量访问步长;;可见向量操作长度依赖于n值,而这个n值通常在编译时无法知道,往往要在运行时才可确定,而且这个长度也可能是过程的参数,因此在执行时很易改变。 解决方法:采用一个向量长度寄存器,存放某一代码段操作的长度,由它来控制向量操作的长度以及向量的装载和存储。;在向量长度寄存器中存放的向量长度值不能超过向量寄存器的长度(MVL)。 向量长度小于向量寄存器长度时,均可放入向量寄存器。 向量长度大于向量寄存器长度时,需将向量长度按向量寄存器长度分段,分段后的向量长度即是每次向量操作的长度,它必须等于或小于向量寄存器长度。;采用分段技术后, SAXPY循环可写成如下形式: low=0; VL=n % MVL; *找出零头长度值 for ( j=0; jn/MVL; j++) { *外循环 for ( i=low; ilow+VL;i++) *以长度VL操作 Y[i]=a*X[i]+Y[i] ; *主要操作 low=low+VL ; *下一向量的开始 VL=MVL ; *将长度值恢复成MVL }; 经分段处理后,第一段长度为n mod MVL,而以后各段的长度均为MVL。;2. 向量访问步长;例:元素为100×100的A=B×C矩阵乘法的程序段为: for ( i=0; i100;i++) for ( j=0; j100;j++){ A[i,j]=0.0; for ( k=0; k100;k++) A[i,j]=A[i,j]+B[i,k]*C[k,j]; } 在执行内循环k时,若以行为主存放矩阵元素,则B矩阵中元素是连续存放的,C矩阵中元素是以跨步方式进行访问的,相邻元素的间距为100。;支持完全的一维数据显式访问的向量机是指能支持对向量跨步访问的向量机。 当向量由存储器装入向量寄存器后,原来在存储器中间隔存放的元素在向量寄存器中便成为逻辑上相连续的。能支持完全的一维数据显式访问的向量机能以行、列,甚至沿对角线访问这些方向上的向量元素。;CRAY—1巨型机属于能支持完全的一维数据显式访问的向量机。 CYBER—205巨型机采用存储器—存储器工作方式,它不支持完全的一维数据显式访问,只能以连续方式访存。如果要进行跨步访问运算,则必须先将这些在存储器中不连续存放的向量元素,先经过运算部件进行依次排序,然后再送入存储器使它们相邻连续存放,最后再从存储器中连续取出进行运算,显然这将大大降低运算性能。;在向量机中,向量的取、存操作除了需要说明起始地址外,还应说明访问元素的跨步。 元素的跨步需要存放在一个寄存器中,并在向量操作过程中始终保持此参数值。 向量机中通常采用一个专用地址流部件来生成跨步向量元素访问。;;向量机的访存冲突;例:设有16个存储体,访问时间为12个时钟周期,共要访问64个向量元素。对于步长为1的访问,将需要12+64=76个时钟周期。但当步长为16的倍数时,由于每次对存储器访问将与前一次访问相冲突,因此,每个元素访问都需要12个周期,这样64个元素访问就需要64×12=768个时钟周期。 (注:交叉存储体流水访问);防止访存冲突的方法 ⑴ 使跨步和存储体数互为质数 如使存储体为17而跨步步长为16。 ⑵ 增加存储体数目 如对于64个存储体,步长为32的访问,若每隔一次访问就会发生访问冲突,而当访问步长为8时,每隔八次访问才会发生访问冲突。当向量机中有多条存储器流水线时,就需要有更多存储体以防止发生冲突,因此,当代的向量巨型机中,存储体数都大于64,有的甚至多达512个。;3.6.3 向量处理方法;1. 横向加工方式;处理过程: 逐个求D中的N个分量,先进行相加k←b1+c1,其中k为暂存单元,然后相乘d1←k×a1 。 这样,在每个向量元素的加乘运算中,都会发生数据相关的情况,而且当采用静态流水线次乘和加功能的转换。这样共会出现N次相关和2N次功能转换。因此,这种横向加工方式只适合于标量循环算法,不适合于向量流水处理。;2.纵向(垂直)加工方式;; 用向量指令形式表示时为: K=B+C D=K×A 此时,在两条向量指令间仅有一次数据相关,流水线功能的切换只需一次。;纵向加工方式的特点;⑵ 纵向加工方式对主存带宽要求高。 为减轻主存的负担,可在主存与流水部件之间设置缓冲器。 ;3.纵横向加工方式;;第一组计算: k1~n=b1~n+c1~n d1~n=a1~n×k1~n 第二组计算: kn+1~2n=bn+1~2n+cn+1~2n dn+1~2n=an+1~2n×kn+1~2n … 每组内各有两条向量指令,各组内有一次数据相关,需2次流水功能切换,需n个中间向量寄存器单元。;采用纵横向加工方式,组内的元素计算均在寄存器中完成,可大大减少访存次数,降低了对主存带宽的要求,减少了因存储器冲突而引起的等待。提高了处理速度。; 3.6.4 增强向量处理性能的方法;例: ① V0←V1+V2 无冲突情况,可以并行处理 V5←V3×V4 ② V0←V1+V2 运算时发生向量寄存器使用 V3←V1×V4 冲突,不可以并行处理 两条指令不能同时执行,必须在第一条指令执行完,将V1释放后,第二条指令方可开始执行。这是因为两条指令中使用V1时的首元素下标可能不同,向量长度也可能不同,从而难以由V1同时向两条指令提供所需的源向量。;③ V3←V1+V2 运算时发生功能部件冲突, V6←V4+V5 不可以并行处理 在理想情况下,若有m个部件并行工作,可使运算速度提高m倍,但实际上由于程序本身并行度有限和可能发生上述的冲突情况,因此能完全并行工作的功能部件数总是小于m的。;1. Cray-1向量机 Cray -1系统是美国Cray公司于1976年提供的产品。 它是一台运算速度达亿次/秒以上的巨型机。速度这么高的一个原因是它采用了层次结构的存储器系统。;Cray-1 处理机结构图;Date;Date;(1)主存与流水结构运算器之间有一级或两级的中间存储器。对于向量运算来说,中间存储器是V寄存器,它是向量寄存器,它由8个64个分量的寄存器组成,每个分量为一个64位寄存器。向量指令能对向量寄存器的分量进行连续的重复处理。 ;;;CRAY-I指令;Cray-1 处理机的4类向量指令;第2类向量指令;第3类向量指令;第4类向量指令;第一类指令从一个或二个向量寄存器取得操作数并把结果回送到另一个向量寄存器中去。第二类向量指令从Si寄存器取得一个标量操作数,又从Vk寄存器取得一个向量操作数,并且把向量结果回送给另一个向量寄存器Vi。第三类以及第四类指令分别是把数据从存储器传送到一个向量寄存器中以及反过来把数据从向量寄存器传送到存储器中。存储器和工作寄存器之间的数据通路可以看成是具有固定时间延迟的数据传送流水线年底交付使用 (参见 国防科大的李勇编写的教材) (1)系统组成;(2) 主要性能 ①字长64位,4种数据类型 浮点:1+15+48 长整:64 短整:24 逻辑:64,128 ②指令格式 单字长 g(4)+h(3)+i(3)+j(3)+k(3) 算术、逻辑指令,gh-OP码,ijk-向量Regs 双字长 g(4)+h(3)+i(3)+j(3)+k(3)+m(16) 标量访存指令, g-OP码,h-变址寄存器A i-结果或源寄存器,jkm?22位的形式地址 主存地址?(A)+jkm;③中央处理机主频 20MHz,每拍50ns ④运算速度 向量运算75%时,1亿次/秒 ⑤主存系统 模31体交叉访问,存储周期400ns ⑥I/O通道 20个,接外围系统;(3)中央处理机结构 三部分组成:Regs、流水部件和指令缓冲部件 ①操作寄存器和后援寄存器 两组向量寄存器: (8x64x64b)x2 V, V’ 向量长度寄存器:VL ( 7b,≤ 128, 即最多可传64对向量元素) 向量控制寄存器 VM(64b), VM’(64b) (屏蔽寄存器,用于向量的测试、归并、压缩和还原) 标量寄存器S(8x64b)和标量后援寄存器T(64x64b) M 地址寄存器A(8x24b)和地址后援寄存器B(64x64b);②功能部件 18个独立的专用功能部件 一组地址部件-?24b的短整运算 AA(1), AM(3) 一组标量部件-?64b整数和逻辑运算 对S运算?SA (1), SS左右移位(1), SLg (0),SP计数(1,2) 二组浮点部件-?向量、标量运算(分别与V, V’接) FA (5), FM (6), FR倒数近似值(6) 二组向量部件-?64位的非浮点数向量运算(V,V’) VA (1), VS左右移位(3,2), VLg (1);V V’寄存器与功能部件的使用;③指令控制部件 程序字计数器P(24b) 指令缓冲站IB(4个站x16x16b) 指令字缓冲寄存器BIP (16b) 下一指令字寄存器NIP (16b) 现行指令字寄存器CIP (16b) 低部指令字寄存器LIP (16b) 指令流出控制部件 IC 4类向量指令格式与Cray-1相似,但访存流水m=16;向量与标量性能的平衡;;机器型号;3.6.4.2 链接技术;;在寄存器—寄存器系统结构中,所有的向量操作数在把它们送入流水线之前,都要预先装入向量寄存器中。中间和最后结果(流水线输出)在把它们存入主存储器以前,也要把它们装入向量寄存器中。 ;;当发出向量指令时,所要求的功能流水线和操作数寄存器便要预定若干个时钟周期,其值取决于向量长度。使用同一组功能部件或操作数寄存器的后继向量指令在预定被释放之前是不能发出的。两个或更多的向量指令如果是不相关的,便可以同时使用不同功能流水线和不同的向量寄存器。这种并发的指令能以相继的时钟周期发出。 ;;功能部件和操作数寄存器的预定(冲突);例:向量加和向量乘的操作 ADDV V1,V2,V3 ;V1←V2+V3 MULTV V4,V1,V5 ;V4←V1×V5 这两条指令间对V1向量寄存器存在先写后读相关,如果使向量寄存器V1在同一时钟周期内,既接收一个功能部件送来的运算结果,又可把这一结果作为下一个向量指令运算所需的源操作数送给另一个功能部件,就可使这两个部件链接起来进行操作。通常把这种链接称为超级向量操作。 当链接进入充分流水操作状态后,在一个时钟周期内就可同时获取两个操作结果。;例:以下4条向量指令序列链接在一起执行一种复合的功能: ????V0←存储器 ;读存储器 ????V2←V0+V1 ;向量加 ????V3←V2>A3 ;右移 ????V5←V3∧V4 ;求逻辑积 下图给出的图解说明表示把存储器读流水线、向量加流水线、向量移位流水线和向量逻辑乘流水线链接成一个较长的流水线的内容决定移位计数值。;Date;时间特征;Date;例:要进行向量运算 D=A×(B+C) 设向量长度≤64,且B和C已由存储器取至V0和V1,则完成运算的向量指令为: LD V3,A ;V3←A ADDV V2,V0,V1 ;V2←V0+V1 MULTV V4,V2,V3 ;V4←V2×V3 第一、二条指令因既无向量寄存器使用冲突,也无功能部件使用冲突,因而可并行执行。第三条指令与第一、二条指令均存在先写后读相关冲突,因而可将第三条指令与第一、二条指令链接执行。;Date;采用并行和链接加速技术后,当被加工向量长度为N时,执行所需时间为: (1+6+1)+(1+7+1)+(N-1)=17+N-1 =N+16拍 若这三条指令全部用串行方法则所需时间为: [(1+6+1)+N-1]+[(1+6+1)+N-1]+[(1+7+1)+N-1]=3N+22拍 若前两条指令并行执行,第三条指令串行执行,则所需时间为: [(1+6+1)+N-1]+[(1+7+1)+N-1] =2N+15拍 注意:由于同步的要求,数据进入和流出每个功能部件,包括访存都需要1拍时间。;实现链接的时间上的要求: ① 只有当前一指令的第一个结果分量送入结果向量寄存器的那一个时钟周期方可链接,若错过该时刻就无法进行链接,只有等前一向量指令全部执行完毕,释放向量寄存器资源后才能执行后面指令。 在上面的例子中,当一条向量指令的两个源操作数分别是两条先行指令的结果寄存器时,要求先行的两条指令产生运算结果的时间必须相等,即要求有关功能部件的延迟时间相等(如上例中的访存和浮点加功能部件延时均为6个时间单位)。 ②进行链接的向量指令的向量长度必须相等,否则就不可能链接。;例:在CRAY-1机中,浮点功能部件中各功能段的执行时间为: 浮点加法:6拍;浮点乘法:7拍;求倒数:14拍;存储器存/取:6拍;启动功能部件: 1拍;打入结果: 1拍。 分析任务数为50时,下列指令段的完成时间: ① V0←存储器 ② V3←V1+V2 ③ V4←V0×V3 ④ V0←V4+V5;分析: ①与②无功能和寄存器冲突,可并行。 ②与③先写后读数据相关,可以链接。 ④与②有功能冲突,必须在①与②执行完后,才能启动④,即④只能串行工作 。 ① V0←存储器 ② V3←V1+V2 ③ V4←V0×V3 ④ V0←V4+V5 执行时间: (1+6+1)+(1+7+1)+(50-1)+(1+6+1)+(50-1) =123拍;例:分析在CRAY-1机中,任务数为50时,下列指令段的完成时间。 ① V0←存储器 ② V1←V2+V3 ③ V6←V4×V5 分析:三条指令均无功能冲突,可采用全并行的方式,指令段的完成时间为: (1+7+1)+(50-1)=58拍;例:分析在CRAY-1机中,任务数为50时,下列指令段的完成时间,设浮点求倒数的执行时间为14拍。 ① V2← V0×V1 ② V3←存储器 ③ V4←V2+V3 ④ V5←1/ V4 分析: ①与②无功能和寄存器冲突,可并行。 ①与②节拍不一致, ③不能与①、②链接,只能串行执行。 ③与④先写后读数据相关,可以链接。 执行时间: (1+7+1)+(50-1)+ (1+6+1)+(1+14+1)+(50-1)=131拍;3.6.5 向量处理性能的评估参数和方法;在向量处理机上,执行一条向量长度为n的向量指令的时间Tvp可表示为: Tvp=Ts+Tvf+(n-1)Tc ?其中,Ts为向量流水线的建立时间,它包括向量起始地址的设置、计数器加1,条件转移指令执行等。Tvf为向量流水线的流过时间,它是一条指令从开始译码到流过流水线得到第一个结果的时间。Tc为流水线“瓶颈”段的执行时间。;如果不存在“瓶颈”流水段,每段的执行时间都等于一个时钟周期,则上式也可以写成: Tvp=[s+e+(n-1)]τ 其中,s为向量流水线建立时间所需的时钟周期数,e为向量流水线流过时间所需的时钟周期数,n为向量长度,τ为时钟周期。 ;向量编队;?例3.6.5.1:假设每种流水功能部件只有一个,则下面一组向量操作能分成4个编队: LV V1, Rx ;取向量x MULTSV V2,F0,V1 ;向量和标量相乘 LV V3,Ry ;取向量Y ADDV V4,V2,V3 ;加法 SV Ry,V4 ;存结果 第一条指令LV为第一个编队。MULTSV指令因为与第一条LV指令相关,它们不能在同一个编队中。;MULTSV指令和第二条LV指令之间不存在功能部件冲突和数据相关,所以这两条指令为第二个编队。ADDV指令与第二条LV指令数据相关,所以ADD为第三个编队。SV指令与ADDV指令数据相关,所以它为第四个编队。所以这一组向量操作划分为以下四个编队: 1.LV 2.MULTSV LV 3.ADDV 4.SV ;一个编队计算一个元素的执行时间记为Tchime,它与向量长度无关(≈ 1拍)。因此,一组由m个编队组成的向量操作的执行时间为m个Tchime。如果向量长度为n,则整个程序的向量操作的执行时间为m×n个时钟周期。上述例子中,因为整个程序分为4个编队,所以要花费4个Tchime。;?除了上述向量操作的真正执行时间外,还需要考虑向量的启动时间Tstart,Tstart是向量操作流水线的延迟,它等于流水功能部件的流水段数,也即流水线的深度。它和上述的向量流水线的流过时间几乎相等。;例3.6.5.2 :假设一台向量处理机中功能部件的启动开销为:取数和存数部件为12个时钟周期、乘法部件为7个时钟周期、加法部件为6个时钟周期。则例6.5.1中每个编队的开始时间、获得第一个结果元素的时间和获得最后一个结果元素的时间如下表所示。 (未考虑链接情况) ;如果向量长度n为64,则得到一个结果元素的平均时间为:4+(41/64)=4.64个时钟周期。;程序段的执行时间;为了简单起见,我们把Tloop看作是一个常数,Cray 1机器的Tloop约等于15。 ???? 下面我们用例子来说明Tn和Tstart的计算。;例3.6.5.3:在一台向量处理机上实现A=B×s操作,其中A和B是长度为200的向量,s是一个标量。向量寄存器长度为64。各功能部件的启动时间见本PPT50。求总的执行时间。 ;;Tn=4(15+Tstart)+3?200?1 =660+4 ? Tstart 又3组串行工作, Tstart=7(load)+7(mul)+6(store)=20 Tn=660+80=740 节拍 一个结果元素的平均执行时间(包括启动开销)为740/200=3.7。 下面讨论编队中考虑链接的情况;例3.6.5.4:在某台向量处理机上执行DAXPY (Double-Precisio n a* X plus Y)代码,即完成Y=a×X+Y,其中X和Y是向量,最初存放在内存。a是一个标量。它们的向量指令如下: (MVL=64) LV V1, Rx ;12 MULTSV V2,F0,V1 ;7 LV V3,Ry ;12 ADDV V4,V2,V3 ;6 SV Ry,V4 ;12 解:这5条向量指令分成3个编队,并且前两个编队中每两条指令组成一条链。 ; LV, MULTSV ;12+7 LV , ADDV ;12+6 SV ; 12 Tstart=12+7+12+6+12=49 Tn=(n+64)+3n=4n+64 (n%64≠ 0) 或=n+3n=4n;2. ?最大性能R∞;可以说, 近似于 Fc (1/Tc) 对于例6.5.4,假设时钟频率为200MHZ,因为每个循环只有2次浮点运算操作,所以 ;n? 是指达到一半R∞值所需的向量长度。它是评价向量流水线建立时间对性能影响的参数,表示为建立流水线而导致操作的损失。;;如: CRAY-1的n1/2=10~20, CYBER 205的n1/2=100。;;?4.向量长度临界值nv ;;Tnv= 59 nv 如果按向量方式工作,则执行时间为 Tnv 64 =64+3×nv 时钟周期。 所以 59nv= 64+3nv ;

  “原创力文档”前称为“文档投稿赚钱网”,本网站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】

http://bluecaleel.com/xiangliangzhiling/212.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有