第3章流水线技术_向量PPT讲稿.ppt
第第3章流水线技术章流水线技术_向量向量2022/9/171第1页,共116页,编辑于2022年,星期二向量处理机是向量处理机是具有向量数据表示和向量指令系统的具有向量数据表示和向量指令系统的处理机。处理机。向量处理机是解决数值计算问题的一种高性能计向量处理机是解决数值计算问题的一种高性能计算机。算机。向量处理机属向量处理机属大型或巨型机大型或巨型机,也可以用微机加一,也可以用微机加一台台向量协处理器向量协处理器组成。组成。向量处理机一般都采用流水线结构,向量处理机一般都采用流水线结构,通常有多条通常有多条并行工作的流水线。并行工作的流水线。必须把要解决的问题转化为向量运算,才能发挥必须把要解决的问题转化为向量运算,才能发挥向量处理机的效率。向量处理机的效率。2022/9/172第2页,共116页,编辑于2022年,星期二3.6.1向量流水机的基本系统结构向量流水机的基本系统结构1.标量流水线的局限性标量流水线的局限性处理机不具有向量数据表示,仅对标量数据进行流水处理机不具有向量数据表示,仅对标量数据进行流水处理。向量的处理通过标量循环程序完成。所以,处理。向量的处理通过标量循环程序完成。所以,(1)流水线工作的时钟周期不可能取得很短。流水线工作的时钟周期不可能取得很短。(2)取指令及译码的速率受限。取指令及译码的速率受限。即在一个时钟周期内最多只能启动一条指令,通常称即在一个时钟周期内最多只能启动一条指令,通常称为为Flynn瓶颈。瓶颈。2.向量流水线向量流水线处理机具有向量数据表示,可通过向量指令对向量中处理机具有向量数据表示,可通过向量指令对向量中的各元素进行流水处理。的各元素进行流水处理。2022/9/173第3页,共116页,编辑于2022年,星期二3.6.1.1向量流水处理的主要特点向量流水处理的主要特点(1)在向量操作中,每个当前结果向量元素的计算在向量操作中,每个当前结果向量元素的计算与以前结果向量元素的计算是相互独立的,有利于与以前结果向量元素的计算是相互独立的,有利于发挥流水线的性能,允许向量流水线有较深的深度。发挥流水线的性能,允许向量流水线有较深的深度。(2)一条向量指令相当于一个标量循环,可降低对一条向量指令相当于一个标量循环,可降低对指令访问带宽的要求,也消除了由循环转移可能引指令访问带宽的要求,也消除了由循环转移可能引起的控制相关。起的控制相关。(3)若向量指令所要访问的向量元素均相邻,则可若向量指令所要访问的向量元素均相邻,则可利用多模块、交叉存取的方法加快向量元素的存取利用多模块、交叉存取的方法加快向量元素的存取速度,减少访存等待时间的开销。速度,减少访存等待时间的开销。2022/9/174第4页,共116页,编辑于2022年,星期二在对相同数量的数据项进行操作时,在对相同数量的数据项进行操作时,向量操作要比一串标量指令操作更快。向量操作要比一串标量指令操作更快。向量流水机可使访存和有效地址计算流向量流水机可使访存和有效地址计算流水化。水化。高档的向量机允许多个向量操作同时进高档的向量机允许多个向量操作同时进行,从而可开发对不同元素进行多个向行,从而可开发对不同元素进行多个向量操作的并行性。量操作的并行性。2022/9/175第5页,共116页,编辑于2022年,星期二3.6.1.2 3.6.1.2 向量机的基本系统结构向量机的基本系统结构向量机系统结构的分类向量机系统结构的分类存储器存储器存储器工作方式向量机存储器工作方式向量机向量操作的源向量和目的向量都取自或存向量操作的源向量和目的向量都取自或存放到主存中。放到主存中。寄存器寄存器寄存器工作方式向量机寄存器工作方式向量机向量操作的源向量和目的向量都取自或存向量操作的源向量和目的向量都取自或存放到向量寄存器中。放到向量寄存器中。2022/9/176第6页,共116页,编辑于2022年,星期二典型的向量机基本系统结构典型的向量机基本系统结构向量机主要由向量机主要由标量流水部件和向标量流水部件和向量流水部件量流水部件组成,包含了组成,包含了向量功能向量功能部件、向量取存部件、向量寄存部件、向量取存部件、向量寄存器或向量缓冲部件、标量寄存器、器或向量缓冲部件、标量寄存器、标量处理部件以及向量控制器标量处理部件以及向量控制器等等部件。部件。2022/9/177第7页,共116页,编辑于2022年,星期二向量处理机的典型结构图向量处理机的典型结构图2022/9/178第8页,共116页,编辑于2022年,星期二例:一个典型向量求解问题:例:一个典型向量求解问题:YaXY其中其中X和和Y为向量,初始值存放在存储器为向量,初始值存放在存储器中,中,a为标量。为标量。采用双精度运算时的算法:采用双精度运算时的算法:a乘乘X后再加后再加Y。2022/9/179第9页,共116页,编辑于2022年,星期二若用标量机运算,需要用标量指令对向量中若用标量机运算,需要用标量指令对向量中的每个元素进行一次乘、加和存储操作,并的每个元素进行一次乘、加和存储操作,并且为了实现循环操作,每次必须要指明对且为了实现循环操作,每次必须要指明对X和和Y中元素位置的下标变量进行增量,并中元素位置的下标变量进行增量,并使操作次数每次减使操作次数每次减1,以判别循环是否结,以判别循环是否结束。束。设设X和和Y向量的首地址分别存放在向量的首地址分别存放在Rx和和Ry中,当向量元素长度为中,当向量元素长度为64时,用标量机处时,用标量机处理的循环程序段为:理的循环程序段为:2022/9/1710第10页,共116页,编辑于2022年,星期二LDF0,a;标量;标量a装入装入F0ADDIR4,Rx,#512;将向量元素的末地址装;将向量元素的末地址装;入;入R4中中LOOP:LDF2,0(Rx);取向量元素;取向量元素X(i)MULDF2,F0,F2;a与与X(i)相乘相乘LDF4,0(Ry);取向量元素;取向量元素Y(i)ADDDF4,F2,F4;aX(i)与与Y(i)相加相加SD0(Ry),F4;存结果向量元素;存结果向量元素ADDIRx,Rx,#8;增量向量元素;增量向量元素X下标下标ADDIRy,Ry,#8;增量向量元素;增量向量元素Y下标下标SUBR20,R4,Rx;R4RxR20,计算是,计算是;否到达限界值;否到达限界值BNZR20,LOOP;若循环未结束,转;若循环未结束,转LOOP2022/9/1711第11页,共116页,编辑于2022年,星期二用向量机完成同样操作:用向量机完成同样操作:LDF0,a;标量;标量a装入装入F0LVV1,Rx;装入向量;装入向量X,LV为向为向量量取指令取指令MULTVV2,F0,V1;向量;向量X与标量与标量a相相乘乘LVV3,Ry;装入向量;装入向量YADDVV4,V2,V3;向量加;向量加aXYSVRy,V4;存结果向量,;存结果向量,SV为向量为向量存指令存指令2022/9/1712第12页,共116页,编辑于2022年,星期二因为向量指令是对因为向量指令是对64个元素进行操作,且个元素进行操作,且没有对元素下标变量增量和判循环是否结没有对元素下标变量增量和判循环是否结束的指令,所以向量机只需执行束的指令,所以向量机只需执行6条指令即条指令即可完成操作,从而大大降低了对指令带宽可完成操作,从而大大降低了对指令带宽的要求。的要求。2022/9/1713第13页,共116页,编辑于2022年,星期二标量机与向量机计算标量机与向量机计算YaXY的比较的比较标量机标量机向量机向量机编程方式编程方式 采用标量指令,采用标量指令,循环程序循环程序采用向量采用向量指令指令指令条数指令条数96425786联锁频率联锁频率高高低低对指令带对指令带宽的要求宽的要求高高不高不高2022/9/1714第14页,共116页,编辑于2022年,星期二3.6.1.3 3.6.1.3 向量启动时间和启动率向量启动时间和启动率一条向量指令执行所需时间一条向量指令执行所需时间Tvp:TvpTstnIrTst:向量流水线的启动时间,包括流水线固:向量流水线的启动时间,包括流水线固有的延迟时间,用于设置为完成向量操作所需有的延迟时间,用于设置为完成向量操作所需的相应参数的相应参数(如向量长度等如向量长度等)。n:向量中元素长度:向量中元素长度Ir:启动率,表示向量流水线填满后,每流:启动率,表示向量流水线填满后,每流出一个结果所需时间。出一个结果所需时间。2022/9/1715第15页,共116页,编辑于2022年,星期二例:一个向量乘法流水部件的启动时间为例:一个向量乘法流水部件的启动时间为l0个时钟个时钟周期。启动后的启动率为周期。启动后的启动率为1。对于长度为。对于长度为64的向量的向量乘法,产生每个向量元素结果所需时钟周期数为:乘法,产生每个向量元素结果所需时钟周期数为:对于运行速度较慢的向量流水操作,启动时间的大对于运行速度较慢的向量流水操作,启动时间的大小对它的影响不大,但对于启动率为小对它的影响不大,但对于启动率为1的高速向量的高速向量流水操作,启动时间的增加就将使性能受到较大影流水操作,启动时间的增加就将使性能受到较大影响。响。2022/9/1716第16页,共116页,编辑于2022年,星期二寄存器寄存器寄存器工作方式的影响因素寄存器工作方式的影响因素向量功能部件流水线的深度向量功能部件流水线的深度流水线的启动时间主要取决于功能部件流水线的深流水线的启动时间主要取决于功能部件流水线的深度。因为这是获取第一个流水结果所需的时间。度。因为这是获取第一个流水结果所需的时间。向量功能部件接收一个操作数的频率向量功能部件接收一个操作数的频率流水线的启动率主要取决于相应的向量功能部件接流水线的启动率主要取决于相应的向量功能部件接收一个操作数的频率。当流水线处于充分流水状态收一个操作数的频率。当流水线处于充分流水状态时,就能在每个时钟周期开始时立即对一个新操作时,就能在每个时钟周期开始时立即对一个新操作数进行运算,从而可使启动率达到数进行运算,从而可使启动率达到1。2022/9/1717第17页,共116页,编辑于2022年,星期二3.6.2向量操作长度控制和向量访问步长向量操作长度控制和向量访问步长1.向量操作长度控制向量操作长度控制实际程序中的向量长度往往并不与向实际程序中的向量长度往往并不与向量机的自然向量长度相同。量机的自然向量长度相同。自然向量长度:向量寄存器型的向量机中,自然向量长度:向量寄存器型的向量机中,每个向量寄存器可存放的向量元素个数。每个向量寄存器可存放的向量元素个数。2022/9/1718第18页,共116页,编辑于2022年,星期二程序中一个具体的向量操作长度在编程序中一个具体的向量操作长度在编译时经常是未知的,因为在一个代码段中译时经常是未知的,因为在一个代码段中可能需要不同的向量长度。可能需要不同的向量长度。例如求解单精度向量循环例如求解单精度向量循环SAXPY的代码段的代码段为:为:for(i=0;in;i+)Yia*XiYi;2022/9/1719第19页,共116页,编辑于2022年,星期二可见向量操作长度依赖于可见向量操作长度依赖于n值,而这个值,而这个n值值通常在编译时无法知道,往往要在运行时通常在编译时无法知道,往往要在运行时才可确定,而且这个长度也可能是过程的才可确定,而且这个长度也可能是过程的参数,因此在执行时很易改变。参数,因此在执行时很易改变。解决方法:解决方法:采用一个向量长度寄存器,采用一个向量长度寄存器,存放某一代码段操作的长度,由它来控存放某一代码段操作的长度,由它来控制向量操作的长度以及向量的装载和存制向量操作的长度以及向量的装载和存储。储。2022/9/1720第20页,共116页,编辑于2022年,星期二在向量长度寄存器中存放的向量长度值不能在向量长度寄存器中存放的向量长度值不能超过向量寄存器的长度超过向量寄存器的长度(MVL)。向量长度小于向量寄存器长度时,均可放入向量长度小于向量寄存器长度时,均可放入向量寄存器。向量寄存器。向量长度大于向量寄存器长度时,需将向向量长度大于向量寄存器长度时,需将向量长度按向量寄存器长度分段,分段后的量长度按向量寄存器长度分段,分段后的向量长度即是每次向量操作的长度,它必向量长度即是每次向量操作的长度,它必须等于或小于向量寄存器长度。须等于或小于向量寄存器长度。2022/9/1721第21页,共116页,编辑于2022年,星期二采用分段技术后,采用分段技术后,SAXPY循环可写成如下形式:循环可写成如下形式:low0;VLn%MVL;*找出零头长度值找出零头长度值for(j0;jn/MVL;j+)*外循环外循环for(ilow;ilowVL;i+)*以长度以长度VL操作操作Yia*XiYi;*主要操作主要操作lowlowVL;*下一向量的开始下一向量的开始VLMVL;*将长度值恢复成将长度值恢复成MVL;经分段处理后,第一段长度为经分段处理后,第一段长度为nmodMVL,而以,而以后各段的长度均为后各段的长度均为MVL。2022/9/1722第22页,共116页,编辑于2022年,星期二2.向量访问步长向量访问步长存储器是一维线性空间,当需要在其中存放二存储器是一维线性空间,当需要在其中存放二维或多维数组时,必须将其各元素映射到一维维或多维数组时,必须将其各元素映射到一维线性空间中。线性空间中。以行为主的存储方式:以行为主的存储方式:当按行进行元素访问时,要访问的元素的地址是当按行进行元素访问时,要访问的元素的地址是相邻连续的。当按列进行元素访问时,要访问的相邻连续的。当按列进行元素访问时,要访问的元素的地址是不连续的,需要采用向量跨步方式元素的地址是不连续的,需要采用向量跨步方式进行访问。进行访问。2022/9/1723第23页,共116页,编辑于2022年,星期二例:元素为例:元素为100100的的ABC矩阵乘法的程序段矩阵乘法的程序段为:为:for(i0;i100;i+)for(j0;j100;j+)Ai,j0.0;for(k0;k75%时,时,1亿次亿次/秒秒主存系统主存系统模模31体交叉访问,存储周期体交叉访问,存储周期400nsI/O通道通道20个,接外围系统个,接外围系统2022/9/1762第62页,共116页,编辑于2022年,星期二(3)中央处理机结构)中央处理机结构三部分组成:三部分组成:Regs、流水部件和指令缓冲部件、流水部件和指令缓冲部件操作寄存器和后援寄存器操作寄存器和后援寄存器两组向量寄存器:两组向量寄存器:(8x64x64b)x2V,V向量长度寄存器:向量长度寄存器:VL(7b,128,即最多可传即最多可传64对向量元素)对向量元素)向量控制寄存器向量控制寄存器VM(64b),VM(64b)(屏蔽寄存器,(屏蔽寄存器,用于向量的测试、归并、压缩和还原)用于向量的测试、归并、压缩和还原)标量寄存器标量寄存器S(8x64b)和标量后援寄存器和标量后援寄存器T(64x64b)M地址寄存器地址寄存器A(8x24b)和地址后援寄存器和地址后援寄存器B(64x64b)2022/9/1763第63页,共116页,编辑于2022年,星期二功能部件功能部件1818个独立的专用功能部件个独立的专用功能部件一组地址部件一组地址部件-24b24b的短整运算的短整运算 AAAA(1 1),AM,AM(3 3)一组标量部件一组标量部件-64b64b整数和逻辑运算整数和逻辑运算 对对S S运算运算SA SA(1 1),SS,SS左右移位左右移位(1 1),SLg SLg(0 0),SP,SP计数计数(1 1,2 2)二组浮点部件二组浮点部件-向量、标量运算(分别与向量、标量运算(分别与V,VV,V接)接)FA FA(5 5),FM,FM(6 6),FR,FR倒数近似值倒数近似值(6 6)二组向量部件二组向量部件-6464位的非浮点数向量运算位的非浮点数向量运算(V,VV,V)VA VA(1 1),VS,VS左右移位左右移位(3 3,2 2),VLg,VLg(1 1)2022/9/1764第64页,共116页,编辑于2022年,星期二VV寄存器与功能部件的使用寄存器与功能部件的使用向量功能部件,浮点功能部件VkVjVi向量功能部件,浮点功能部件VkVjVi2022/9/1765第65页,共116页,编辑于2022年,星期二指令控制部件指令控制部件程序字计数器程序字计数器P(24b)P(24b)指令缓冲站指令缓冲站IB(4IB(4个站个站x16x16b)x16x16b)指令字缓冲寄存器指令字缓冲寄存器BIP(16b)BIP(16b)下一指令字寄存器下一指令字寄存器NIP(16b)NIP(16b)现行指令字寄存器现行指令字寄存器CIP(16b)CIP(16b)低部指令字寄存器低部指令字寄存器LIP(16b)LIP(16b)指令流出控制部件指令流出控制部件 ICIC4 4类向量指令格式与类向量指令格式与Cray-1Cray-1相似,但访存流水相似,但访存流水m=16m=162022/9/1766第66页,共116页,编辑于2022年,星期二向量与标量性能的平衡实际的应用问题实际的应用问题中通常既有中通常既有向量计算又有又有标 量计算,而且两类计算有一定的比例,而且两类计算有一定的比例向量平衡点向量平衡点(vectorbalancepoint):为了使向为了使向量硬件设备和标量硬件设备的利用率相等,量硬件设备和标量硬件设备的利用率相等,一个程序中向量代码所占的百分比。一个程序中向量代码所占的百分比。关键问题是:关键问题是:希望向量硬件和标量硬件都能 够充分利用,不要空闲。,不要空闲。2022/9/1767第67页,共116页,编辑于2022年,星期二例如:一个系统的向量运算速度为一个系统的向量运算速度为90Mflops,标量运算速度为标量运算速度为10Mfolps。如果程序的。如果程序的90是向量运算,是向量运算,10是标量运算。则向量平衡是标量运算。则向量平衡点为点为0.9。硬件利用率最高。硬件利用率最高。向量处理机的向量平衡点向量处理机的向量平衡点必须与用户程序的必须与用户程序的向量化程度相匹配。向量化程度相匹配。IBM向量计算机的设计思想向量计算机的设计思想与上述方法不同,它维与上述方法不同,它维持较低的向量与标量比例,定在持较低的向量与标量比例,定在35的范围之间。的范围之间。这种做法能够适应通用应用问题对标量和向量这种做法能够适应通用应用问题对标量和向量处理要求。处理要求。2022/9/1768第68页,共116页,编辑于2022年,星期二机器型号Fujitsu VP400Cray ISCray 2SCray X-MPCray Y-MPHitachi S820NEC SX2向量性能Mflops标量性能Mflops向量平衡点85.09.80.90151.511.20.93143.313.10.92201.617.00.92737.317.80.98424.29.50.98207.16.60.972022/9/1769第69页,共116页,编辑于2022年,星期二3.6.4.2 3.6.4.2 链接技术链接技术链接特性:链接特性:当相邻两条指令存在先写后读相关时,只当相邻两条指令存在先写后读相关时,只要前一条指令的结果向量的第一个元素产要前一条指令的结果向量的第一个元素产生并存入结果向量寄存器,就可以将它作生并存入结果向量寄存器,就可以将它作为下一条指令的源操作数,启动下一条指为下一条指令的源操作数,启动下一条指令的运算,从而将两个或两个以上的功能令的运算,从而将两个或两个以上的功能部件链接起来。部件链接起来。2022/9/1770第70页,共116页,编辑于2022年,星期二链接技术:链接技术:当从一个流水线部件得到的结当从一个流水线部件得到的结果直接送入另一个功能流水线的操作数寄存果直接送入另一个功能流水线的操作数寄存器时所发生的连接过程。换句话说,中间结器时所发生的连接过程。换句话说,中间结果不必送回存储器或寄存器,并在向量操作果不必送回存储器或寄存器,并在向量操作完成以前就使用它。完成以前就使用它。2022/9/1771第71页,共116页,编辑于2022年,星期二在寄存器在寄存器寄存器系统结构中,所有寄存器系统结构中,所有的向量操作数在把它们送入流水线之的向量操作数在把它们送入流水线之前,都要预先装入向量寄存器中。中前,都要预先装入向量寄存器中。中间和最后结果间和最后结果(流水线输出流水线输出)在把它们在把它们存入主存储器以前,也要把它们装入存入主存储器以前,也要把它们装入向量寄存器中。向量寄存器中。2022/9/1772第72页,共116页,编辑于2022年,星期二链接技术是利用向量指令间存在的先链接技术是利用向量指令间存在的先写后读的数据相关性来加快向量指令写后读的数据相关性来加快向量指令序列执行速度的技术。序列执行速度的技术。链接技术的实质是标量链接技术的实质是标量流水定向流水定向传送传送方法在向量寄存器中的应用。方法在向量寄存器中的应用。2022/9/1773第73页,共116页,编辑于2022年,星期二当发出向量指令时,所要求的功能流水线和当发出向量指令时,所要求的功能流水线和操作数寄存器便要预定若干个时钟周期,其操作数寄存器便要预定若干个时钟周期,其值取决于向量长度。使用同一组功能部件或值取决于向量长度。使用同一组功能部件或操作数寄存器的后继向量指令在预定被释放操作数寄存器的后继向量指令在预定被释放之前是不能发出的。两个或更多的向量指令之前是不能发出的。两个或更多的向量指令如果是不相关的,便可以同时使用不同功能如果是不相关的,便可以同时使用不同功能流水线和不同的向量寄存器。这种并发的指流水线和不同的向量寄存器。这种并发的指令能以相继的时钟周期发出。令能以相继的时钟周期发出。2022/9/1774第74页,共116页,编辑于2022年,星期二结果寄存器可能成为后继指令的操作数寄存器。结果寄存器可能成为后继指令的操作数寄存器。在在Cray1中,这种技术称为两条流水线的链接中,这种技术称为两条流水线的链接(chaining)。链接是从流水线的内部定向概念发展。链接是从流水线的内部定向概念发展而来的。而来的。链接允许当第一个结果刚刚可用时就马链接允许当第一个结果刚刚可用时就马上发出相继的操作。当然,所需要的功能流水线上发出相继的操作。当然,所需要的功能流水线和操作数寄存器必须恰当地预定,否则,链接操和操作数寄存器必须恰当地预定,否则,链接操作就不得不挂起直到所需要的资源变为可用为止。作就不得不挂起直到所需要的资源变为可用为止。2022/9/1775第75页,共116页,编辑于2022年,星期二功能部件和操作数寄存器的预定(冲突)功能部件和操作数寄存器的预定(冲突)2022/9/1776第76页,共116页,编辑于2022年,星期二例:向量加和向量乘的操作例:向量加和向量乘的操作ADDVV1,V2,V3;V1V2V3MULTVV4,V1,V5;V4V1V5这两条指令间对这两条指令间对V1向量寄存器存在先写后读相关,向量寄存器存在先写后读相关,如果使向量寄存器如果使向量寄存器V1在同一时钟周期内,既接收在同一时钟周期内,既接收一个功能部件送来的运算结果,又可把这一结果作一个功能部件送来的运算结果,又可把这一结果作为下一个向量指令运算所需的源操作数送给另一个为下一个向量指令运算所需的源操作数送给另一个功能部件,就可使这两个部件链接起来进行操作。功能部件,就可使这两个部件链接起来进行操作。通常把这种链接称为超级向量操作。通常把这种链接称为超级向量操作。当链接进入充分流水操作状态后,在一个时钟周期当链接进入充分流水操作状态后,在一个时钟周期内就可同时获取两个操作结果。内就可同时获取两个操作结果。2022/9/1777第77页,共116页,编辑于2022年,星期二例:以下例:以下4条向量指令序列链接在一起执行一种复条向量指令序列链接在一起执行一种复合的功能:合的功能:V0存储器存储器;读存储器;读存储器V2V0+V1;向量加;向量加V3V2A3;右移;右移V5V3V4;求逻辑积;求逻辑积下图给出的图解说明表示把存储器读流水线、向量下图给出的图解说明表示把存储器读流水线、向量加流水线、向量移位流水线和向量逻辑乘流水线链加流水线、向量移位流水线和向量逻辑乘流水线链接成一个较长的流水线。寄存器接成一个较长的流水线。寄存器A3的内容决定移的内容决定移位计数值。位计数值。2022/9/1778第78页,共116页,编辑于2022年,星期二2022/9/1779第79页,共116页,编辑于2022年,星期二时间特征时间特征2022/9/1780第80页,共116页,编辑于2022年,星期二2022/9/1781第81页,共116页,编辑于2022年,星期二例:要进行向量运算例:要进行向量运算DA(BC)设向量长度设向量长度64,且,且B和和C已由存储器取至已由存储器取至V0和和V1,则完成运算的向量指令为:则完成运算的向量指令为:LDV3,A;V3AADDVV2,V0,V1;V2V0V1MULTVV4,V2,V3;V4V2V3第一、二条指令因既无向量寄存器使用冲突,也无第一、二条指令因既无向量寄存器使用冲突,也无功能部件使用冲突,因而可并行执行。第三条指令功能部件使用冲突,因而可并行执行。第三条指令与第一、二条指令均存在先写后读相关冲突,因而与第一、二条指令均存在先写后读相关冲突,因而可将第三条指令与第一、二条指令链接执行。可将第三条指令与第一、二条指令链接执行。2022/9/1782第82页,共116页,编辑于2022年,星期二2022/9/1783第83页,共116页,编辑于2022年,星期二采用并行和链接加速技术后,当被加工向量长度为采用并行和链接加速技术后,当被加工向量长度为N时,执行所需时间为:时,执行所需时间为:(161)(171)(N1)17N1N16拍拍若这三条指令全部用串行方法则所需时间为:若这三条指令全部用串行方法则所需时间为:(161)N1(161)N1(171)N13N22拍拍若前两条指令并行执行,第三条指令串行执行,则若前两条指令并行执行,第三条指令串行执行,则所需时间为:所需时间为:(161)N1(171)N12N15拍拍注意:由于同步的要求,数据进入和流出每个功能注意:由于同步的要求,数据进入和流出每个功能部件,包括访存都需要部件,包括访存都需要1拍时间。拍时间。2022/9/1784第84页,共116页,编辑于2022年,星期二实现链接的时间上的要求:实现链接的时间上的要求:只有当前一指令的第一个结果分量送入结果向只有当前一指令的第一个结果分量送入结果向量寄存器的那一个时钟周期方可链接量寄存器的那一个时钟周期方可链接,若错过该时,若错过该时刻就无法进行链接,只有等前一向量指令全部执行刻就无法进行链接,只有等前一向量指令全部执行完毕,释放向量寄存器资源后才能执行后面指令。完毕,释放向量寄存器资源后才能执行后面指令。在上面的例子中,当一条向量指令的两个源操作数在上面的例子中,当一条向量指令的两个源操作数分别是两条先行指令的结果寄存器时,分别是两条先行指令的结果寄存器时,要求先行的要求先行的两条指令产生运算结果的时间必须相等,即要求有两条指令产生运算结果的时间必须相等,即要求有关功能部件的延迟时间相等关功能部件的延迟时间相等(如上例中的访存和浮如上例中的访存和浮点加功能部件延时均为点加功能部件延时均为6个时间单位个时间单位)。进行进行链接的向量指令的向量长度必须相等链接的向量指令的向量长度必须相等,否则,否则就不可能链接。就不可能链接。2022/9/1785第85页,共116页,编辑于2022年,星期二例:在例:在CRAY1机中,浮点功能部件中各功能段机中,浮点功能部件中各功能段的执行时间为:的执行时间为:浮点加法:浮点加法:6拍;浮点乘法:拍;浮点乘法:7拍;求倒数:拍;求倒数:14拍;拍;存储器存存储器存/取:取:6拍;启动功能部件:拍;启动功能部件:1拍;打入结拍;打入结果:果:1拍。拍。分析任务数为分析任务数为50时,下列指令段的完成时间:时,下列指令段的完成时间:V0存储器存储器V3V1V2V4V0V3V0V4V52022/9/1786第86页,共116页,编辑于2022年,星期二分析:分析:与与无功能和寄存器冲突,可并行。无功能和寄存器冲突,可并行。与与先写后读数据相关,可以链接。先写后读数据相关,可以链接。与与有功能冲突,必须在有功能冲突,必须在与与执行完后,才能执行完后,才能启动启动,即,即只能串行工作只能串行工作。V0存储器存储器V3V1V2V4V0V3V0V4V5执行时间:执行时间:(161)(171)(501)(161)(501)123拍拍并行并行链接链接串行串行2022/9/1787第87页,共116页,编辑于2022年,星期二例:分析在例:分析在CRAY1机中,任务数为机中,任务数为50时,下列时,下列指令段的完成时间。指令段的完成时间。V0存储器存储器V1V2V3V6V4V5分析:三条指令均无功能冲突,可采用全并行的方分析:三条指令均无功能冲突,可采用全并行的方式,指令段的完成时间为:式,指令段的完成时间为:(171)(501)58拍拍2022/9/1788第88页,共116页,编辑于2022年,星期二例:分析在例:分析在CRAY1机中,任务数为机中,任务数为50时,下列时,下列指令段的完成时间,设浮点求倒数的执行时间为指令段的完成时间,设浮点求倒数的执行时间为14拍。拍。V2V0V1V3存储器存储器V4V2V3V51/V4分析:分析:与与无功能和寄存器冲突,可并行。无功能和寄存器冲突,可并行。与与节拍不一致,节拍不一致,不能与不能与、链接,只能链接,只能串行执行。串行执行。与与先写后读数据相关,可以链接。先写后读数据相关,可以链接。执行时间:执行时间:(171)(501)(161)(1141)(501)131拍拍并行并行链接链接串行串行2022/9/1789第89页,共116页,编辑于2022年,星期二3.6.5 3.6.5 向量处理性能的评估参数和方法向量处理性能的评估参数和方法衡量向量处理机的性能主要是向量衡量向量处理机的性能主要是向量指令的处理时间指令的处理时间Tvp、向量长度为无穷、向量长度为无穷大时的向量处理机的最大性能大时的向量处理机的最大性能R、半、半性能向量长度性能向量长度n1/2和向量方式的工作速和向量方式的工作速度优于标量串行方式工作时所需的向度优于标量串行方式工作时所需的向量长度临界值量长度临界值nv等。下面讨论这些参等。下面讨论这些参数。数。2022/9/1790第90页,共116页,编辑于2022年,星期二在向量处理机上,执行一条向量长度为在向量处理机上,执行一条向量长度为n的向量的向量指令的时间指令的时间Tvp可表示为:可表示为:TvpTsTvf(n-1)Tc其中,其中,Ts为向量流水线的建立时间,它包括向为向量流水线的建立时间,它包括向量起始地址的设置、计数器加量起始地址的设置、计数器加1,条件转移指令,条件转移指令执行等。执行等。Tvf为向量流水线的流过时间,它是一为向量流水线的流过时间,它是一条指令从开始译码到流过流水线得到第一个结果条指令从开始译码到流过流水线得到第一个结果的时间。的时间。Tc为流水线为流水线“瓶颈瓶颈”段的执行时间。段的执行时间。1.向量指令的处理时间向量指令的处理时间Tvp2022/9/1791第91页,共116页,编辑于2022年,星期二如果不存在如果不存在“瓶颈瓶颈”流水段,每段的执行流水段,每段的执行时间都等于一个时钟周期,则上式也可以时间都等于一个时钟周期,则上式也可以写成:写成:Tvpse(n-1)其中,其中,s为向量流水线建立时间所需的时为向量流水线建立时间所需的时钟周期数,钟周期数,e为向量流水线流过时间所需的为向量流水线流过时间所需的时钟周期数,时钟周期数,n为向量长度,为向量长度,为时钟周期。为时钟周期。2022/9/1792第92页,共116页,编辑于2022年,星期二向量编队向量编队一组向量操作的执行时间主要取决于下面三一组向量操作的执行时间主要取决于下面三个因素:向量的长度、向量操作之间是否存个因素:向量的长度、向量操作之间是否存在流水功能部件的冲突和数据的相关性。在流水功能部件的冲突和数据的相关性。1)能在一个时钟周期内一起开始执行的向量指令)能在一个时钟周期内一起开始执行的向量指令称为一个编队。(一定不存在流水功能部件的冲称为一个编队。(一定不存在流水功能部件的冲突和数据的相关性突和数据的相关性RAW除外除外)2)有冲突和相关的指令分在不同的编队。)有冲突和相关的指令分在不同的编队。3)一个编队的运行时间为队中耗时最长的指令)一个编队的运行时间为队中耗时最长的指令运行时间运行时间2022/9/1793第93页,共116页,编辑于2022年,星期二例例3.6.5.1:假设每种流水功能部件只有一个,则:假设每种流水功能部件只有一个,则下面一组向量操作能分成下面一组向量操作能分成4个编队:个编队:LVV1,Rx;取向量;取向量xMULTSVV2,F0,V1;向量和标量相乘;向量和标量相乘LVV3,Ry;取向量;取向量YADDVV4,V2,V3;加法;加法SVRy,V4;存结果;存结果第一条指令第一条指令LV为第一个编队。为第一个编队。MULTSV指令因为指令因为与第一条与第一条LV指令相关,它们不能在同一个编队中。指令相关,它们不能在同一个编队中。2022/9/1794第94页,共116页,编辑于2022年,星期二MULTSV指令和第二条指令和第二条LV指令之间不存在功能部指令之间不存在功能部件冲突和数据相关,所以这两条指令为第二个编队。件冲突和数据相关,所以这两条指令为第二个编队。ADDV指令与第二条指令与第二条LV指令数据相关,所以指令数据相关,所以ADD为第三个编队。为第三个编队。SV指令与指令与ADDV指令数据相关,指令数据相关,所以它为第四个编队。所以这一组向量操作划分为所以它为第四个编队。所以这一组向量操作划分为以下四个编队以下四个编队:1LV2MULTSVLV3ADDV4SV2022/9/1795第95页,共116页,编辑于2022年,星期二一个编队计算一个元素的执行时间记为一个编队计算一个元素的执行时间记为Tchime,它与向量长度无关(,它与向量长度无关(1拍)。因此,一拍)。因此,一组由组由m个编队组成的向量操作的执行时间个编队组成的向量操作的执行时间为为m个个Tchime。如果向量长度为。如果向量长度为n,则整个程序,则整个程序的向量操作的执行时间为的向量操作的执行时间为mn个时钟周期。个时钟周期。上述例子中,因为整个程序分为上述例子中,因为整个程序分为4个编队,所个编队,所以要花费以要花费4个个Tchime。2022/9/1796第96页,共116页,编辑于2022年,星期二除了上述向量操作的真正执行时间外,除了上述向量操作的真正执行时间外,还需要考虑向量的启动时间还需要考虑向量的启动时间Tstart,Tstart是向量操作流水线的延迟,它等是向量操作流水线的延迟,它等于流水功能部件的流水段数,也即于流水功能部件的流水段数,也即流水线的深度。它和上述的向量流流水线的深度。它和上述的向量流水线的流过时间几乎相等。水线的流过时间几乎相等。2022/9/1797第97页,共116页,编辑于2022年,星期二例例3.6.5.2:假设一台向量处理机中功能部件:假设一台向量处理机中功能部件的启动开销为:取数和存数部件为的启动开销为:取数和存数部件为12个时钟个时钟周期、乘法部件为周期、乘法部件为7个时钟周期、加法部件个时钟周期、加法部件为为6个时钟周期。则例个时钟周期。则例6.5.1中每个编队的中每个编队的开始时间、获得第一个结果元素的时间开始时间、获得第一个结果元素的时间和获得最后一个结果元素的时间如下表和获得最后一个结果元素