1、n向量处理机是解决数值计算问题的一种高性能计算机结构n向量处理机一般都采用流水线结构,有多条流水线并行工作n向量处理机通常属大型或巨型机,也可以用微机加一台向量协处理器组成n一般向量计算机中包括有一台高性能标量处理机n必须把要解决的问题转化为向量运算,向量处理机才能充分发挥作用6.1 向量处理的基本概念向量处理的基本概念n什么是向量处理什么是向量处理n 例如:一个简单的C语言程序如下:for(i=1;i N)GOTO 2010 read bI read cI add bI+cI store aIbI+cI read aI+1 multiply 2*aI+1 store bI 2*aI+1 in
2、crement I I+1 goto 1020Stop常量常量2 2,a,b,ca,b,c中每中每一个元素都称为一一个元素都称为一个标量。该指令序个标量。该指令序列称为标量指令序列称为标量指令序列,执行过程为标列,执行过程为标量处理过程,每一量处理过程,每一条指令只处理一个条指令只处理一个或一对数据。或一对数据。n上述程序用向量化指令序列实现为:a1:n=b1:n+c1:n temp1:n=a2:n+1 b1:n=2*temp1:n 将n个独立的数构成的整体称为向量向量,对这一组数的运算称为向量处理向量处理。一条向量处理指令可以处理n个或n对操作数。向量处理方式n要根据向量运算的特点和向量处理
3、机的类型选择向量的处理方式。n有三种处理方式:1横向处理方式,又称为水平处理方式,横向加工方式等。向量计算是按行的方式从左至右横向地进行。2纵向处理方式,又称为垂直处理方式,纵向加工方式等。向量计算是按列的方式自上而下纵向地进行。3纵横处理方式,又称为分组处理方式,纵横向加工方式等。横向处理和纵向处理相结合的方式。n 以一个简单的C语言编写的程序为例,说明向量的三种处理方式的工作原理。for(i=1;i=n;i+)yi=ai(bi+ci);n横向处理方式 也称为水平处理方式,横向加工方式等逐个分量进行处理:假设中间结果为TI计算第1个分量:T1 B1C1 Y1 A1T1计算第2个分量:T2 B
4、2C2 Y2 A2T2最后一个分量:TN BNCN YNANTNn存在两个问题:在计算向量的每个分量时,都发生写读数据相关。流水线效率低如果采用多功能流水线,必须频繁进行流水线切换n横向处理方式对向量处理机不适合即使在标量处理机中,也经常通过编译器进行指令流调度。n纵向处理n也称为垂直处理方式,纵向加工方式等T1=B1+C1T2=B2+C2Tn=Bn+CnY1=A1T1Y2=A2T2YN=AN TNn采用向量指令只需要2条:VADDB,C,TVMULA,T,Yn这种处理方式适用于向量处理机,数据相关不影响流水线连续工作。不同的运算操作只需要切换1次。n纵横处理方式 将长度为n的向量分成若干组,
5、每组长度为m,组内按纵向方式处理,依次处理各组。n用于寄存器-寄存器结构的向量处理机中向量寄存器的长度是有限的,例如,每个向量寄存器有64个寄存器。当向量长度N大于向量寄存器长度n时,需要分组处理。n分组方法:nm,其中:为余数,共分组。组内采用纵向处理方式,组间采用横向处理方式。因此,也称为分组处理方式,纵横向加工方式等。6.2 向量处理机结构向量处理机结构n向量处理机的基本思想是把两个向量的对应分量进行运算,产生一个结果向量。最关键问题是存储器系统能够满足运算部件带宽的要求。n主要采用两种方法:1.存储器存储器结构多个独立的存储器模块并行工作处理机结构简单,对存储系统的访问速度要求很高2.
6、寄存器寄存器结构运算通过向量寄存器进行需要大量高速寄存器,对存储系统访问速度的要求降低存储器存储器结构存储器存储器结构n下图说明一个具有8个存储体的向量处理机:MMMMMMMM流水结构加法器ABC=A+B三条互相独立的数据通路,可并行工作,同一个存储模块同时只能为一个通路服务n向量处理示例1:求C=A+B,设A、B、C的存储形式如图:C4B6A0C5B7A1C6B0A2C7B1A3C0B2A4C2B3A5C3B4A6C4B5A7模块0模块1模块2模块3模块4模块5模块6模块7A、B、C在主存储器中的存放情况流水段1流水段2流水段3流水段4W4W4RB6RB6RA0RA0W5W5RB7RB7RA
7、1RA1W6RA2RA2RB0RB0RA3RA3RB1RB1W0W0RA4RA4RB2RB2W1W1RA5RA5RB3RB3W2W2RA6RA6RB4RB4W3W3RA7RA7RB5RB576543210765432107654321076543210M0M1M2M3M4M5M6M70 1 2 3 4 5 6 7 8 9 10 11 12两个向量在流水线方式下分量相加的时序图时间(时钟周期)n在流水线的输入端和输出端增加缓冲器可以消除争用存储器现象。可变延迟器可变延迟器可变延迟器可变延迟器主存主存储器储器流水结流水结构加法构加法器器ABC延迟4个时钟周期延迟2个时钟周期W0RB8RB8RA8R
8、A8RB0RB0RA0RA0RB8RB8RA8RA8RB1RB1RA1RA1RB8RA8RA8RB2RB2RA2RA2 RA8RA8RB3RB3RA3RA3 RA8RB4RB4RA4RA4RB5RB5RA5RA5 RB6RB6RA6RA6RB7RB7RA7RA776543210765432106543210543210M0M1M2M3M4M5M6M70 1 2 3 4 5 6 7 8 9 10 11 12流水段1流水段2流水段3流水段4存储器发生冲突时两个向量相加的时序图寄存器寄存器-寄存器结构寄存器结构n把存储器-存储器结构中的缓冲栈改为向量寄存器,运算部件需要的操作数从向量寄存器中读取,运
9、算的中间结果也写到向量寄存器中。n向量寄存器与标量寄存器的主要差别是:一个向量寄存器能够保存一个向量,例如:64个64位寄存器。连续访问一个向量的各个分量。n需要有标量寄存器和地址寄存器等。n采用寄存器-寄存器结构的主要优点:降低主存储器的流量。例如:采用寄存器-寄存器结构的CRAY-1与采用存储器-存储器结构的STAR-100比较,运算速度高3倍多,而主存流量低2.5倍。nSTAR-100的主存储器流量:328W/1.28us=200MW/SCRAY-1的主存储器流量:4W/50ns=80MW/S8个向量寄存器86464主存储器8MB64个个体12个流水线结构的运算部件缓冲寄存器6464标量
10、寄存器864缓冲寄存器6424地址寄存器824指令缓冲寄存器25616CRAY-1向量处理机结构q向量处理机系统结构的设计目标向量处理机系统结构的设计目标 提高向量处理机性能的常用技术提高向量处理机性能的常用技术6.3 6.3 提高向量处理机性能的办法提高向量处理机性能的办法向量处理机系统结构的设计目标向量处理机系统结构的设计目标n较好地维持向量较好地维持向量/标量性能平衡标量性能平衡 向量平衡点(vector balance point)定义为:为了使向量硬件设备和标量硬件设备的利用率相等,一个程序中向量代码所占的百分比。例如:系统在向量模式下能够达到9Mflops,在标量模式下能够达到1M
11、flops的运算速度,假设代码的90%是向量运算,10%是标量运算,这样花在两种模式上的计算时间相等,那么向量平衡点为0.9。几种超级计算机的向量性能和标量性能(了解)机器型号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.97n可扩展性随处理机数目的增加而提高可扩展性随处理机数目的增加而提高 可扩
12、展性的三个目标:规模可扩展性、换代可扩展性、问题可扩展性。n提供高性能的提供高性能的I/OI/O和易访问的网络和易访问的网络 提高向量处理机性能的常用技术提高向量处理机性能的常用技术n链接技术链接技术 向量指令的类型:n4321VjVkVin4321SjVkVi第一类向量指令第二类向量指令存储器7654321Vi存储器7654321Vi第三类向量指令第四类向量指令n向量运算中的相关和冲突n向量运算中的数据相关和功能部件冲突:采用顺序发射顺序完成方式(1)写读数据相关。(2)读读数据相关,或向量寄存器冲突。(3)运算部件冲突。V0 V1V2 V3 V1V2V3 V4*V5 V6 V4+V5(a)
13、不相关的指令 (b)功能部件的预定V3 V1V2 V0 V1V2V6 V1*V5 V3 V1+V5(c)操作数寄存器预定 (d)功能部件和操作数寄存器的预定n3、向量链接技术(chaining)n 结果寄存器可能成为后继指令的操作数寄存器两条有数据相关的向量指令并行执行,这种技术称为两条流水线的链接技术。例如:有如下3条向量指令:V3 AV2 V0V1V4 V2V3第一、二条指令没有数据相关和功能部件冲突,可以同时开始执行。第三条指令与第一、二条指令均存在写读数据相关,可以链接执行。浮点加71 2 3 4 5 6MemV0V1V2V3V41 2 3 4 5 61 2 3 4 5 6浮点乘n三种
14、执行方式比较:n(1)如果向量长度为N,三条指令采用串行方法执行的时间为:(1+6+1)+N-1+(1+6+1)+N-1+(1+7+1)+N-1=3N+22 拍n(2)如果前两条指令并行执行,第三条指令串行执行,则执行时间为:(1+6+1)+N-1+(1+7+1)+N-1=2N+15 拍n(3)如果采用链接技术,则执行时间为:(1+6+1)+(1+7+1)+(N-1)=17+N-1=N+16 拍n实现链接的条件:n(1)没有向量寄存器冲突和运算部件冲突。n(2)只有第一个结果送入向量寄存器的那一个周期可以链接。n(3)先行的两条指令产生运算结果的时间必须相等。n(4)两条向量指令的向量长度必须
15、相等。当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,采用循环结构处理这个长向量,这种技术称为向量循环开采技术,也称为向量分段开采技术。例如:A和B为长度N的向量。for(i=1;iN;i+)ai=5*b(i)+c;当N为当N为64或更小时,产生A数组的7条指令序列是:q1:S15.0在标量寄存器内设置常数q2:S2C 将常数C装入标量寄存器q3:VLN 在VL寄存器内设置向量长度q4:VoB 将B向量读入向量寄存器q5:V1S1 Vo B数组的每个分量和常数相乘q6:V2S2V1 C和5 B(x)相加q7:AV2将结果向量存入A数组向量循环开采技术向量循环开采技术向量处理机
16、主要出自美国和日本。美国著名的向量计算机公司有:CRAY、CDC、TI等日本公司有:NEC、Fujitsu、Hitachi等6.4 向量处理机实例向量处理机实例(自学)机器型号美国和日本制造的向量处理机Cray IS配置特点有10条流水线的单处理机,12.5ns,COS/CF7 2.1第一台基于ECL的超级计算机,1976年问世Cray2S/4-256256M字存储器的4台处理机,4.lns,COS或UNIX/CF77 3.016K字的本地存储器,移植了UNIXV,1985问世向量处理机的历史与现状向量处理机的历史与现状机器型号Cray X-MP 416配置特点16M字存储器的4台处理机,12
17、8M字SSD,8.5ns,COS CF77 5.0使用共享寄存器组用于IPC,1983年问世Cray Y-MP 832128M字存储器的8台处理机,6ns,CF77 5.0XMP的改进型,1988年问世每台处理机2条向量流水线,16台处理机,4.2ns,Unicos/CF77 5.0CrayY-MPC-90最大的Cray机器1991年问世机器型号CDC Cyber 205配置特点有4条流水线的单处理机,20ns,虚拟OS/FTN200存储器到存储器系统结构,1982年问世ETA 10E单处理机,10.5ns,ETAV/FTN 200Cyber 205的后继型号,1985年问世每台处理机4组流水
18、线,4台处理机,2.9ns,F77SX,22GflopsNECSX-X/441991年问世机器型号Fujitsu VP2600/10配置特点5条流水线的单处理机和双标量处理机,3.2ns,MSP.EX/F77 EX/VP使用可重构微向量寄存器和屏蔽,1991年问世512MB存储器,18条流水线的单处理机,4ns,FORT77/HAPV23-OCHitachi 820/8064个通道,最大传输速率288MB/S,1988年问世Cray Y-MP 816由1至8台处理机组成,多个处理机共享中央存储器、I/O子系统、处理机通信子系统和实时钟。中央存储器由256个交叉访问的存储体组成。每个处理机对4个
19、存储器端口的交叉访问。CPU的时钟周期为6ns。4个存储器端口允许处理机同时执行两个标量和向量取操作、一个存储操作和一个独立的I/O操作。CRAY Y-MP向量处理机n每个CPU由14个功能部件组成,分为向量、标量、地址和控制四个子系统。n使用了大量地址寄存器、标量寄存器、向量寄存器、中间寄存器和临时寄存器。n可以实现功能流水线灵活的链接。nI/O子系统支持三类通道,传输速率分别为6兆字节/秒,100兆字节/秒和1G字节/秒。CPU2CPU8CPU7CPU6CPU5CPU4CPU3中央寄存器处理机之间通信实时钟(64位)V寄存器8个寄存器每个V寄存器有64个64位分量寄存器T寄存器(8个64位
20、寄存器)A寄存器(8个32位寄存器)B寄存器(8个32位寄存器)S寄存器(8个64位寄存器)屏蔽寄存器(64位)向量长度(8位)指令缓冲区(512个16位指令区)交换参数寄存器指令输出发送寄存器可编程时钟(32位)I/O控制向量功能部件加/减、移位、逻辑(64位运算)标量功能部件加/减、移位、逻辑(32位运算)浮点功能部件加/减、倒数、乘、近似(64位运算)地址功能部件加/减、乘(32位运算)性能监控器状态寄存器外部设备I/O部分CPU1控制部分地址部分标量部分向量部分n以通用中小型机,或微机作为主机;向量处理部件作为外围设备,加速向量的处理速度。n向量协处理器是为中小型用户设计的,解决科学计
21、算中大量向量处理任务的一种装置。n与各种不同主机相连的向量协处理器,价格和功能的变化范围很大。nFPS-164是最典型的向量协处理器,美国浮点系统公司生产。每个向量处理器有两个乘加部件,两组向量寄存器,两组标量寄存器。向量协处理器n每个乘加部件每个周期能输出一个结果。n向量寄存器:2组?4个?个操作数,每个操作数个字节。n运算过程:标量处理器把原始数据装入向量寄存器,把标量数据和指令播送到全部向量处理器。向量处理器就同步地运算,但它们处理的数据是各不相同的。n向量操作可以和标量处理器中的标量操作同时进行。n向量协处理器特别适合于大规模的数值处理,用户购买需要台数的向量处理器,使用现有的处理机作
22、为主机。标量运算部件协处理器主存储器120 MB地址寄存器间址寄存器向量处理器向量处理器向量处理器标量寄存器X寄存器组Y寄存器组向量寄存器乘法流水线加法流水线与主计算机连接FPS-164向量协处理器结构图衡量向量处理机性能的主要指标有:向量指令处理时间Tvp、最大性能R、半性能向量长度n1/2等。1、向量指令处理时间Tvp 执行一条向量长度为n的向量指令的时间Tvp表示为:TvpTs+Tvf+(n-1)Tc 其中:Ts为向量流水线的建立时间。Tvf为向量流水线的流过时间。Tc为流水线“瓶颈”段的执行时间。如果每段执行时间都等于一个时钟周期,则有:Tvps+e+(n-1)t t其中:s为向量流水
23、线建立时间所需的时钟周期数。e为向量流水线流过时间所需的时钟周期数。n为向量长度。t为时钟周期长度。把几条能在一个时钟周期内同时开始执行的向量指令称为一个编队,同一个编队中的指令一定不存在功能部件冲突和数据相关。6.5 6.5 向量处理机的性能评价向量处理机的性能评价例例1:假设一台向量处理机中功能部件的启动开销为:取数和存数部件为12个时钟周期、乘法部件为7个时钟周期、加法部件为6个时钟周期。先把序列向量操作分成编队,然后计算每个编队的开始时间、获得第一个结果元素的时间和获得最后一个结果元素的时间。LV V1,Rx ;取向量x MULTSV V2,F0,V1 ;向量和标量相乘LV V3,Ry
24、 ;取向量YADDV V4,V2,V3 ;加法SV Ry,V4 ;存结果解:解:第一条指令LV为第一个编队。MULTSV指令和第二条LV指令为第二个编队。ADDV指令为第三个编队。SV指令为第四个编队。如果采用向量链接技术采用向量链接技术(不考虑访问存储器的冲突),需要:12+7+6+12+n 136+n个周期个周期。如果考虑向量长度大于向量寄存器长度时,则需要分段开采。向量长度为n的一组向量操作的整个执行时间为:其中:Tloop为执行标量代码的开销,Tstart为每个编队的向量启动开销,MVL是向量寄存器的长度。Tloop可以看作是一个常数,Cray 1机的 Tloop 约等于15。例例2:
25、在一台向量处理机上实现ABs操作,其中A和B是长度为200的向量,s是一个标量。向量寄存器长度为64。各功能部件的启动时间与上例相同。求总的执行时间。chimestartloopnTnTTMVLnT解:解:因为向量长度超过了向量寄存器的长度,所以要采取分段开采方法。每次循环主要由下面三条向量指令组成:LV V1,Rb;取向量BMULTVS V2,V1,Fs;向量和标量相乘SV Ra,V2;存向量假设A和B的分别放在Ra和Rb之中,s在Fs中。三条指令之间存在有写读数据相关,因此必须把它们分成3个编队,Tchime=3。T2004(15+Tstart)+2003 60(4Tstart)+600
26、660(4Tstart)其中:其中:Tstart=12+7+12=31,因此,因此,T200660+431784 每个结果元素的平均这些时间为:768/200 3.9个周期。例3:在某台向量处理机上执行代码代码如下:1:LV V1,Rx;取向量x2:MULTSV V2,F0,V1;向量和标量相乘3:LV V3,Ry;取向量Y4:ADDV V4,V2,V3;加法5:SV Ry,V4;存结果考虑访问存储器冲突,向量寄存器长度为n、各功能部件的启动时间与上例相同。求总的执行时间。解:指令1、2,指令3、4和指令5分成三个编队,前两个编队中两条指令采用向链接技术执行。Tchime=3,Tloop=15
27、,Tstart=12+7+12+6+12=49,VL=64。64+4n=3n64+n=3n 491564n=TnTTMVLnTchimestartloopn2、最大性能RR表示当向量长度为无穷大时的向量流水线的最大性能。常在评价峰值性能时使用,单位为MFLOPS。最大性能R 表示为:其中:n为向量长度;Tn为一组向量操作的整个执行时间。对于例3,假设时钟频率为200MHZ。每个循环有2个浮点操作:RTnnnn limlim浮点运算次数时钟频率循环所花费的时钟周期数浮点运算次数时钟频率 RMHZnnMHZMFLOPSn 220046422004100lim3、半性能向量长度n1/2为达到一半R值所需的向量长度称为半性能向量长度n1/2。主要评价向量流水线建立时间对性能的影响。CRAY-1的n1/21020,CYBER 205的n1/2100。由MFLOPS定义可知:对于例3,如果向量处理机的时钟频率为200MHz。因为:R=100MFLOPS,因此有:1002 2 n1/2Tn1/2 200假设:n1/2 64,因此:Tn1/2 64+3 n1/2解得:1002 2 n1/2(64+3 n1/2)200n1/212.8 所以:n1/213MFLOPS=n n 1/21/2执行循环时的浮点运算次数执行循环的时钟周期数时钟周期秒106