版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机体系结构
6,63492149第6章,,结构向量体系结构多媒体指令集扩展图形处理单元向量体系结构2023/7/262计算机体系结构传统指令级并行技术的问题提高性能的传统方法(挖掘)的主要缺陷:程序内在的并行性提高流水线的时钟频率:提高时钟频率,有时导致随着增加(,)指令预取和译码:有时在每个时钟周期很难预取和译码多条指令提高命中率:在有些计算量较大的应用中(科学计算)需要大量的数据,其局部性较差,有些程序处理的是连续的媒体流(),其局部性也较差。2023/7/263计算机体系结构
结构可有效地挖掘数据级并行:基于矩阵运算的科学计算图像和声音处理比更节能针对每组数据操作仅需要取指一次对()更具吸引力允许程序员继续以串行模式思维2023/7/264计算机体系结构
向量体系结构多媒体指令集扩展
()x86:每年增加2
宽度每4年翻一番潜在加速比是的2倍2023/7/265计算机体系结构2023/7/266计算机体系结构的定义:对于给定任务而言世界上最快的机器任何造价超过3千万美元的机器计算能力达到每秒万亿次的机器由设计的机器6600(,1964)被认为是第一台超级计算机2023/7/267计算机体系结构6600,1963A60128,32(,):,2,:,2,...()
a12,10(4)>400,000,750..,5,150,5(7600)100($7-10M)2023/7/268计算机体系结构6600.,,1963: “,...6600.I34.,144...,I's.”
:“..”2023/7/269计算机体系结构
典型应用领域军事研究领域(核武器研制、密码学)科学研究天气预报石油勘探工业设计()
生物信息学密码学均涉及大量的数据集处理70-80年代=2023/7/2610计算机体系结构
向量处理机具有更高层次的操作,一条向量指令可以处理N个或N对操作数(处理对象是向量)+r1r2r3addr3,r1,r2SCALAR(1operation)v1v2v3+vectorlengthadd.vvv3,v1,v2VECTOR(Noperations)2023/7/2611计算机体系结构向量处理机的基本特性基本思想:两个向量的对应分量进行运算,产生一个结果向量。简单的一条向量指令包含了多个操作=>每一结果独立于前面的结果长流水线,编译器保证操作间没有相关性硬件仅需检测两条向量指令间的相关性较高的时钟频率向量指令以已知的模式访问存储器可有效发挥多体交叉存储器的优势 可通过重叠减少存储器操作的延时64不需要数据!(仅使用指令)在流水线控制中减少了控制相关2023/7/2612计算机体系结构04/21:()12345
2023/7/2613计算机体系结构04/21向量处理机基本概念基本思想:两个向量的对应分量进行运算,产生一个结果向量向量处理机基本特征一条指令包含多个操作单条向量指令内所包含的操作相互独立以已知模式访问存储器控制相关少向量处理机基本结构向量处理机性能评估向量指令流执行时间:,,其他指标:R,N1/2,2023/7/2614计算机体系结构向量处理机的基本结构:所有的向量操作是存储器到存储器:除了和操作外,所有的操作是向量寄存器与向量寄存器间的操作 向量机的结构 1980年以后的所有的向量处理机都是这种结构:
,,,,我们也主要针对这种结构2023/7/2615计算机体系结构
存储器-存储器型向量机所有指令操作的操作数来源于存储器第一台向量机100(‘73)(‘71),是存储器-存储器型机器1(’76)是第一台寄存器型向量机for(i=0;i<N;i++){C[i]=A[i]+B[i];D[i]=A[i]-B[i];}ExampleSourceCodeADDVC,A,BSUBVD,A,BVectorMemory-MemoryCodeLVV1,ALVV2,BADDVV3,V1,V2SVV3,CSUBVV4,V1,V2SVV4,DVectorRegisterCode2023/7/26计算机体系结构.
存储器-存储器型向量机()需要更高的存储器带宽
结构使得多个向量操作重叠执行较困难
启动时间更长100在向量元素小于100时,标量代码的性能高于向量化代码1,均衡点在2个元素1后续的机器(205,10)都是寄存器型向量机2023/7/2617计算机体系结构
1的变体(1976):
:
硬布线逻辑控制高效流水化的功能部件多体交叉存储系统无不支持2023/7/2618计算机体系结构
格式紧凑一条指令包含N个操作表达能力强,一条指令能告诉硬件:N个操作之间无相关性使用同样的功能部件访问不相交的寄存器与前面的操作以相同模式访问寄存器访问存储器中的连续块()以已知的模式访问存储器()可扩展性好可以在多个并行的流水线上运行同样的代码()2023/7/2619计算机体系结构“” . V123 V123 + V102 V102 + V123 V123 x V102 V102 x V11 V1[R11+63] ,1 V112 V1[R11+63*R2] ,2 V112 V1[R120..63].("") 12 =(V12i)? . 1 ...=R1 1 .=R1 2023/7/2620计算机体系结构向量处理机的基本组成单元:固定长度的一块区域,存放单个向量至少2个读端口和一个写端口(一般最少16个读端口,8个写端口)典型的有8-32向量寄存器,每个寄存器存放64到128个64位元素():全流水化的,每一个启动一个新的操作 一般4到8个:,,(1),,,;可能有些重复设置的部件():全流水化地或一个向量,可能会配置多个部件:存放单个元素用于标量处理或存储地址用交叉开关连接(),,2023/7/2621计算机体系结构2023/7/2622计算机体系结构
使用较深的流水线(=>)执行向量元素的操作由于向量元素相互独立,简化了深度流水线的控制(=>!)V1V2V3V3<-v1*v2
2023/7/2623计算机体系结构
LaneFunctionalUnit
0,4,8,…1,5,9,…2,6,10,…3,7,11,…2023/7/2624计算机体系结构
C[1]C[2]C[0]A[3]B[3]A[4]B[4]A[5]B[5]A[6]B[6]使用一条流水化的功能部件执行C[4]C[8]C[0]A[12]B[12]A[16]B[16]A[20]B[20]A[24]B[24]C[5]C[9]C[1]A[13]B[13]A[17]B[17]A[21]B[21]A[25]B[25]C[6]C[10]C[2]A[14]B[14]A[18]B[18]A[22]B[22]A[26]B[26]C[7]C[11]C[3]A[15]B[15]A[19]B[19]A[23]B[23]A[27]B[27]使用4条流水化的功能部件执行2023/7/2625计算机体系结构
0123456789ABCDEF+BaseStrideVectorRegistersMemoryBanksAddressGenerator1,16,4,12:2023/7/2626计算机体系结构T0(,1995)Vectorregisterelementsstripedoverlanes[0][8][16][24][1][9][17][25][2][10][18][26][3][11][19][27][4][12][20][28][5][13][21][29][6][14][22][30][7][15][23][31]2023/7/2627计算机体系结构
多条向量指令可重叠执行(链接技术)例如:每个向量32个元素,8(车道)loadloadmulmuladdadd
2412023/7/2628计算机体系结构04/23向量处理机基本结构
()向量处理机的基本组成向量运算部件的执行方式-流水线方式向量部件结构-多“道”结构-多条运算流水线多体交叉存储系统向量指令并行执行向量处理机性能评估向量指令流执行时间:,,其他指标:R,N1/2,2023/7/2629计算机体系结构
=f(,,.):功能部件消耗向量元素的速率:可在同一时钟周期开始执行的指令集合():执行一个所花费的大致时间(.)mm;如果每个向量长度为n,那么m个所花费的时间是m个每个所花费的时间是n个,该程序所花费的总时间大约为mxn(忽略额外开销;当向量长度较长时这种近似是合理的)4,1,64=>4x64=256(4)1: LV V1,Rx ;loadvectorX2: MULV V2,F0,V1 ;vector-scalarmult. LV V3,Ry ;loadvectorY3: ADDV V4,V2,V3 ;add4: SV Ry,V4 ;storetheresult2023/7/2630计算机体系结构
向量启动时间由两部分构成功能部件延时:一个操作通过功能部件的时间截止时间或恢复时间():运行下一条向量指令的间隔时间RXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXW
2023/7/2631计算机体系结构
C90,494%1284T0,EightlanesNodeadtime100%efficiencywith8elementvectorsNodeadtime642023/7/2632计算机体系结构
:部件流水线的深度(1) 12 7 6 't;=n1 1.01211(121)2.,1212718+2n 12121223+2n3.24+2n24+2629+3n24.30+3n30+31241+4n32023/7/2633计算机体系结构
当向量的长度不是64时(假设向量寄存器的长度是64)怎么办?
()控制特定向量操作的长度,包括向量的.(当然一次操作的向量的长度不能>向量寄存器的长度)例如:
10i=1,n10 Y(i)=a*X(i)+Y(i)n的值只有在运行时才能知道
n>.()怎么办?2023/7/2634计算机体系结构(分段开采)假设>.()?:产生新的代码,使得每个向量操作的元素数第一次循环做最小片(n),以后按=操作 =1
=(n)/**/
1j=0,(n/)/**/ 10i=,1/**/
Y(i)=a*X(i)+Y(i)/**/
10
=/**/
=/**/
1 2023/7/2635计算机体系结构
的向量执行时间计算试计算×s,其中为长度为200的向量(每个向量元素占8个字节),s是一个标量。向量寄存器长度为64。各功能部件的启动时间如前所述,求总的执行时间,(=15)2023/7/2636计算机体系结构R201600#R22AR10812S1R10641R3064:V1BV21*2A1A1BR105122S364R42A?R4,2023/7/2637计算机体系结构=12+7+12=31T200=660+4*31=784每一元素的执行时间=784/200=3.92023/7/2638计算机体系结构2023/7/2639计算机体系结构
R:当向量长度为无穷大时的向量流水线的最大性能。常在评价峰值性能时使用,单位为实际问题是向量长度不会无穷大,的开销还是比较大的表示向量长度为n时的向量流水线的性能N1/2:达到R一半的值所需的向量长度,是评价向量流水线时间对性能的影响。:向量流水线方式的工作速度优于标量串行方式工作时所需的向量长度临界值。该参数既衡量建立时间,也衡量标量、向量速度比对性能的影响2023/7/2640计算机体系结构
()
119768086461
198312086482L,1S
198816686482L,1S901991240812884901996455812884.1198410812841.419941331612831.20019821338-25632-102432.30019961008-25632-102432219841608+8K256168319954008+8K2561682023/7/2641计算机体系结构A:9(2008)65(3.2)8+64(256x64)64:2,2,1,1,18(32+,100+)1(8x8)(1.6)464642561614512128()2023/7/2642计算机体系结构()()()100x10011k()119768012110160(1)
1983120121218940(4)
19881661503072,667(8)90199124038790215,238(16)901996455705160357,600(32).1198410320(1).4199413616025313,240(4).200198213318422533(1)21984166438851,300(1)31995400368275725,600(4)2023/7/2643计算机体系结构
1,16,4,12:=1&&>=,10123456789ABCDEF+BaseStrideVectorRegistersMemoryBanksAddressGenerator2023/7/2644计算机体系结构(15)a64136a6.???2023/7/2645计算机体系结构
假设处理顺序相邻的元素在存储器中不顺序存储。例如 10i=1,100 10j=1,100 A()=0.0 10k=1,10010 A()=A()()*C()B或C的两次访问不会相邻(相隔800):向量中相邻元素间的距离
=>()=>会导致体冲突
(.,=3216)2023/7/2646计算机体系结构32
操作成组地在寄存器和存储器之间移动数据三类寻址方式(单步长)()(常数步长)()(间接寻址)等价于寄存器间接寻址方式对稀疏矩阵有效用于向量化操作的指令增多2023/7/2647计算机体系结构 F0 R4512 : F2,0() X(i) F202 *X(i) F4,0() Y(i) F42,F4 *X(i)+Y(i) F4,0() Y(i) 8 X 8 Y R204 R20 (Y=a×X+Y) F0 a V1 X V201 . V3 Y V423 4 X,Y64.578(2+9*64).
321(1+5*64)(1.8X)578(2+9*64).
6(96X)64+64X2023/7/2648计算机体系结构1:寄存器定向路径的向量机版本首次在1上使用MemoryV1LoadUnitMult.V2V3ChainAddV4V5Chainv1v312v5,v3,v42023/7/2649计算机体系结构
采用链接技术,前一条指令的第一个结果出来后,就可以启动下一条相关指令的执行LoadMulAddLoadMulAddTime不采用链接技术,必须处理完前一条指令的最后一个元素,才能启动下一条相关的指令2023/7/2650计算机体系结构
多条向量指令可重叠执行(链接技术)例如:每个向量32个元素,8(车道)loadloadmulmuladdadd
2412023/7/2651计算机体系结构#2:: 100i=1,64 (A(i).0) A(i)=A(i)–B(i)
100使用长度为的布尔向量控制向量指令的执行当使能时,向量指令操作仅对中对应位为1的分量起作用2023/7/2652计算机体系结构
C[4]C[5]C[1]WritedataportA[7]B[7]M[3]=0M[4]=1M[5]=1M[6]=0M[2]=0M[1]=1M[0]=0M[7]=1Density-TimeImplementationscanmaskvectorandonlyexecuteelementswithnon-zeromasksC[1]C[2]C[0]A[3]B[3]A[4]B[4]A[5]B[5]A[6]B[6]M[3]=0M[4]=1M[5]=1M[6]=0M[2]=0M[1]=1M[0]=0WritedataportWriteEnableA[7]B[7]M[7]=1SimpleImplementationexecuteallNoperations,turnoffresultwritebackaccordingtomask2023/7/2653计算机体系结构V1;AV1V2;BF00;F0V10(i)1V1(i)0V1121s1A使用寄存器的缺陷简单实现时,条件不满足时向量指令仍然需要花费时间有些向量处理器带条件的向量执行仅控制向目标寄存器的写操作,可能会有除法错。2023/7/2654计算机体系结构#3:: 100i=1100 A(K(i))=A(K(i))+C(M(i))()使用中给出的偏移再加基址来读取=>aa这些元素以密集的方式操作完成后,再使用同样的存储到稀疏矩阵的对应位置这些操作编译时可能无法完成。主要原因:编译器无法预知以及是否有数据相关使用设置步长(0,1,2,...,63)2023/7/2655计算机体系结构
(1993).(1988) 6000721672560.25140160(1.1) 17125(7.3)
():1(32B64B):1(4B)2023/7/2656计算机体系结构
(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstoreIter.1Iter.2ScalarSequentialCode向量化是指在编译期间对操作重定序需要进行大量的循环相关分析VectorInstructionloadloadaddstoreloadloadaddstoreIter.1Iter.2VectorizedCodeTime2023/7/2657计算机体系结构并行的类型指令级并行()以并行方式执行某个指令流中的独立无关的指令(,,)线程级并行()以并行方式执行多个独立的指令流(,)数据级并行()以并行方式执行多个相同类型的操作()、??.,?.,,2023/7/2658计算机体系结构04/28向量处理机性能评估向量指令流执行时间:,,其他指标:R,N1/2,向量机的存储器访问存储器组织:独立存储体、多体交叉方式:固定步长(1常数),非固定步长()基于向量机模型的优化链接技术有条件执行稀疏矩阵的操作多媒体扩展指令扩展的指令类型较少向量寄存器长度较短2023/7/2659计算机体系结构的兴起应用需求和技术发展推动着体系结构的发展图形、机器视觉、语音识别、机器学习等新的应用均需要大量的数值计算,其算法通常具有数据并行特征结构(,,)是执行这些算法的最有效途径2023/7/2660计算机体系结构
机器适合挖掘规则数据级并行同样的操作作用于不同的数据元素向量内的元素操作独立,可有效提高性能,简化设计性能的提升受限于代码的向量化标量操作限制了向量机的性能’s目前很多包含操作指令,,2023/7/2661计算机体系结构.:又称为并行处理机、处理器。其核心是一个由多个处理单元构成的阵列,用单一的控制部件来控制多个处理单元对各自的数据进行相同的运算和操作。2023/7/2662计算机体系结构.:多个独立的操作由编译器封装在一起2023/7/2663计算机体系结构.:单个操作作用在多个不同的数据元素上2023/7/2664计算机体系结构()在已有的中添加一些向量长度很短的向量操作指令将已有的64寄存器拆分为2x32b4x16b8x8b1957年,2将36拆分为2x18b4x9b新的设计具有较宽的寄存器128b,2/3/4256b()单条指令可实现寄存器中所有向量元素的操作16b16b16b16b32b32b64b8b8b8b8b8b8b8b8b16b16b16b16b16b16b16b16b16b16b16b16b++++4x16badds2023/7/2665计算机体系结构
:一条指令操作同时作用于不同的数据元全阵列处理用于多媒体操作
:884162321641.2023/7/2666计算机体系结构:(I)2023/7/2667计算机体系结构:()2023/7/2668计算机体系结构
受限的指令集:无向量长度控制操作无常数步长寻址和操作操作必须64/128边界对齐受限的向量寄存器长度:需要超标量发射以保持部件忙通过循环展开隐藏延迟增加了寄存器读写压力在微处理器设计中向全向量化发展更好地支持非对齐存储器访问支持双精度浮点数操作(64)(2008),256b(1024b)2023/7/2669计算机体系结构向量处理机性能评估向量指令流执行时间:,,其他指标:R,N1/2,向量机的存储器访问存储器组织:独立存储体、多体交叉方式:固定步长(1常数),非固定步长()基于向量机模型的优化链接技术有条件执行稀疏矩阵的操作多媒体扩展指令扩展的指令类型较少向量寄存器长度较短2023/7/2670计算机体系结构71:
机器适合挖据规整的数据级并行同样的操作作用在许多数据元素上提高性能、设计简单(向量内的操作相互独立)性能的提升受限于代码的向量化标量操作限制着向量机的性能很多已有的扩展了一些操作
,,()早期的是指带有高性能浮点运算部件、可高效生成3D图形的具有固定功能的专用设备(1990s)让机具有类似工作站的图形功能用户可以配置图形处理流水线,但不是真正的对其编程2001-2005,加入了越来越多的可编程性例如新的语言可用来编写一些小的程序处理图形的顶点或像素,是的变体大规模并行(针对每帧上百万顶点或像素)但非常受限于编程模型有些用户注意到通过将输入和输出数据映射为图像,并对顶点或像素渲染计算可进行通用计算因为不得不使用图形流水线模型,这对完成通用计算来说是个非常难用的编程模型2023/7/2672计算机体系结构()2006年,的8800支持一种新的编程语言:“”随后工业界推出,与具有相同的,但独立于供应商:针对通用计算,发挥计算的高性能和存储器的高带宽来加速一些通用计算中的核心()一种附加处理器模型(作为附加设备):发射数据并行的到上运行我们仅讨论样式的简化版本,仅考虑的计算核部分,不涉及图形加速部分2023/7/2673计算机体系结构
异构多核系统针对每个任务选择合适的处理器和存储器通用适合执行一些串行的线程串行执行快带有,访问存储器延时低适合执行大量并行线程可扩放的并行执行高带宽的并行存取GPUSMemSMemSMemPCIeBridgeHostMemoryCPUCacheDeviceMemoryCache75
指令流水线类似于的流水线。不是用指令编程基于一般的指令,应用由一组线程构成。两个概念()()编程模型指程序员如何表达代码例如,顺序模型(),数据并行(),数据流模型、多线程模型(,),…执行模型指硬件底层如何执行代码例如,乱序执行、向量机、数据流处理机、多处理机、多线程处理机等执行模型与编程模型可以差别很大例如.,顺序模型可以在乱序执行的处理器上执行。模型可以用处理器实现(a)?(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstoreIter.1Iter.2ScalarSequentialCode’s:1.()2.()3.()2023/7/2676计算机体系结构77.1:()loadloadaddstoreloadloadaddstoreIter.1Iter.2ScalarSequentialCodea:
,
(0;i<N;)C[i]=A[i]+B[i];78loadloadaddstoreloadloadaddstoreIter.1Iter.2ScalarSequentialCode.2:()(0;i<N;)C[i]=A[i]+B[i];
loadloadaddstoreloadloadaddstore.1.2
::aa(,)AV1BV2V1+V2V3V3C79loadloadaddstoreloadloadaddstoreIter.1Iter.2ScalarSequentialCode.3:(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstore.1.2::a.()a80.3:(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstore.1.2::a.()a::aa
81Aa()不是用指令编程使用线程(编程模型)每个线程执行同样的代码,但操作不同的数据元素每个线程有自己的上下文(即可以独立地启动/执行等)一组执行相同指令的线程由硬件动态组织成一个是由硬件形成的操作
一个线程对应一个数据元素大量的线程组织成很多线程块许多线程块组成一个网格由硬件对线程进行管理
2023/7/2682计算机体系结构’sblockIdx0threadId0threadId1threadId255blockIdx1threadId0threadId1threadId255blockIdx(n+255)/256)threadId0threadId1threadId255创建足够的线程块以适应输入向量(中将由多个线程块构成的、在上运行的代码称为,可以是2维的)(i<n)=256()2023/7/2683计算机体系结构
由多个并行核构成,每个核是一个多线程处理器(包含多个车道())发送整个“”到,由将这些线程块分发到多个核上(每个线程块在一个核上运行)上核的数量对程序员而言是透明的Core0Lane0Lane1Lane15Core1Lane0Lane1Lane15Core15Lane0Lane1Lane15
2023/7/2684计算机体系结构
计算由大量的相互独立的线程()完成,这些线程组合成线程块()C.(n,a,*x,*y){ (0;i<n;) y[i]=a*x[i]+y[i];}..=(255)/256;256<<<,256>>>(n,2.0);.(n,a,*x,*y){ i=*+; (i<n)y[i]*x[i][i];}2023/7/2685计算机体系结构.是硬件指令集的抽象“()”使用虚拟寄存器用软件将其翻译成机器码:32R8,,9;*(51229)32R8,R8,;R8=i=64 0,[8];0=X[i]64 2,[8];2=Y[i]64R0D,0,4;0=0*4(a)64R0D,0,2;0=0+2(Y[i])64[8],0;Y[i]=(X[i]*a+Y[i])2023/7/2686计算机体系结构
<<<,>>>(,…);GPUSMs:SMemSMemSMemPCIeBridgeHostMemoryCPUCacheDeviceMemoryCache...HostThread
aGPUSMs:SMemSMemSMemPCIeBridgeHostMemoryCPUCacheDeviceMemoryCacheBlockPer-block
SharedMemoryPer-appDevice
GlobalMemory
Thread;;;:“,”使用模型,每个线程的标量指令流汇聚在一起在硬件上以方式执行(32a)µT0µT1µT2µT3µT4µT5µT6µT7xayy
2023/7/2689计算机体系结构
[,2010]2023/7/2690计算机体系结构91030201
(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstore.1.2::a.()a::aA:
0X:A(.,)92.:一条指令流(一串顺序的指令),每条指令对应多个数据输入(向量指令):多个指令流(标量指令)构成线程,这些线程动态构成。一个处理多个数据元素主要优点:可以独立地处理线程,即每个线程可以在任何标量流水线上单独执行(处理模式)可以将线程组织成,即可以将执行相同指令流的线程构成,形成处理模式,以充分发挥处理的优势
(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstore.1.20X设一个由32构成如果有32K次循环1K个这些可以在同一条流水线上交替执行
1X.32+1.32+2202.20*32+1.20*32+294
:执行相同指令(操作不同的数据元素)的一组线程同一中的所有线程执行相同代码:a…387
WXYZ
95a96
:一组执行相同指令的线程(作用于不同的数据元素)
流水线上每次执行每个线程的一条指令()通过的交叉执行来隐藏延时所有线程的寄存器值保存在寄存器文件中可以容忍长延时
DecodeRFRFRFALUALUALUD-CacheThreadWarp6ThreadWarp1ThreadWarp2DataAllHit?Miss?WarpsaccessingmemoryhierarchyThreadWarp3ThreadWarp8WritebackWarpsavailableforschedulingThreadWarp7I-FetchSIMDPipeline:97()32A[][]C[]C[1]C[2]C[0]A[3]B[3]A[4]B[4]A[5]B[5]A[6]B[6]ExecutionusingonepipelinedfunctionalunitC[4]C[8]C[0]A[12]B[12]A[16]B[16]A[20]B[20]A[24]B[24]C[5]C[9]C[1]A[13]B[13]A[17]B[17]A[21]B[21]A[25]B[25]C[6]C[10]C[2]A[14]B[14]A[18]B[18]A[22]B[22]A[26]B[26]C[7]C[11]C[3]A[15]B[15]A[19]B[19]A[23]B[23]A[27]B[27]Executionusingfourpipelinedfunctionalunits:98LaneFunctionalUnit
0,4,8,…
1,5,9,…
2,6,10,…
3,7,11,…:
不同线程的相同指令使用线程来存取不同的数据元素
’s16,4401234567891011121314150123456789101112131415+++++:
0123100
328241W3W0W1W4W2W5
:05/02多媒体扩展指令扩展的指令类型较少向量寄存器长度较短编程模型:()使用线程(编程模型),不是用指令编程每个线程执行同样的代码,但操作不同的数据元素每个线程有自己的上下文(即可以独立地启动/执行等)计算由大量的相互独立的线程()完成,这些线程组合成线程块()执行模型:()一组执行相同指令的线程由硬件动态组织成一个是由硬件形成的操作存储器组织,,2023/7/26101计算机体系结构()(=0;<100000;){C[]=A[]+B[];}100000(…){=*+;=[];=[];C[]=+;}
2023/7/26102计算机体系结构()2023/7/26103计算机体系结构.传统的仅包含一个线程:一条向量指令必须执行完,然后启动下一条向量指令编程模型为()需要知道向量长度包含指令由多个标量线程构成,以方式执行(即所有的线程执行相同的指令)不需要每个线程可以单独对待(即可以映射到不同的中),编程模型不是不必知道向量长度多个线程可以动态构成是标量可以动态形成逻辑上的向量指令是一种在硬件上实现的编程模型,它是一种编程模型而不是计算机组织每个处理单元执行同样的过程,处理不同的数据这些过程可以在程序中的某个点上同步,例如多条指令流执行相同的程序每个程序/过程操作不同的数据运行时可以执行不同的控制流路径许多科学计算应用以这种方式编程运行在硬件结构上()现代以这种类似的方式编程运行在硬件上.:一条指令流(一串顺序的指令),每条指令对应多个数据输入(向量指令):多个指令流(标量指令)构成线程,这些线程动态构成。一个处理多个数据元素主要优点:可以独立地处理线程,即每个线程可以在任何标量流水线上单独执行()可以将线程组织成,即可以将执行相同指令流的线程构成,形成,以充分发挥处理的优势
每个线程可以包含控制流指令这些线程可以执行不同的控制流路径ThreadWarpCommonPC2341BCDEFAG:
控制逻辑使用流水线以节省资源这些标量线程构成当一个中的线程分支到不同的执行路径时,产生分支发散()BranchPathAPathBAB与向量处理机模型的条件执行相同(?)
简单的编译为谓词(有条件)执行等价于在向量屏蔽寄存器的作用下的向量运算比较复杂的控制流编译生成分支如何处理分支?µT0µT1µT2µT3µT4µT5µT6µT7(>=n)1y
:2023/7/26109计算机体系结构
与向量结构类似,使用内部的屏蔽字()还使用了分支同步堆栈保存分支的路径地址保存该路径的每个的屏蔽字()即指示哪些车道可以提交结果()指令标记()管理何时分支到多个执行路径,何时路径汇合层线程的控制流由分支指令(、、)由程序员指定的每个线程车道的1谓词寄存器硬件指令层,控制流包括:分支指令()特殊的指令用于管理分支同步栈硬件为每个提供堆栈保存分支的路径硬件指令带有控制每个线程车道1谓词寄存器2023/7/26110计算机体系结构
硬件跟踪各µ转移的方向(判定哪些是成功的转移,哪些是失败的转移)如果所有线程所走的路径相同,那么可以保持这种如果各线程选择的方向不一致,那么创建一个屏蔽()向量来指示各线程的转移方向(成功、失败)继续执行分支失败的路径,将分支成功的路径压入硬件堆栈(分支同步堆栈),待后续执行车道何时执行分支同步堆栈中的路径?通过执行操作,弹出执行路径以及屏蔽字,执行该转移路径完成整个分支路径执行后再执行下一条指令称为(汇聚)对于相同长度的路径,操作的效率平均为50%2023/7/26111计算机体系结构 (X[i]0) X[i]=X[i]–Y[i]; X[i]=Z[i]; 640,[8];0=X[i] 32P1,0,#0;P11 1,1,*;, ;P1,1 642,[8];2=Y[i] 640,0,2;0 64[8],0;X[i]=0 1,1,*; ;P1,11: 640,[8] ;0=Z[i] 64[8],0 ;X[i]=01:<>,* ;2023/7/26112计算机体系结构(I):()-G1111TOSBCDEFAGThreadWarpCommonPCThread2Thread3Thread4Thread1111110010110111111111111-A1111TOSED0110EC1001TOS-E1111ED0110TOS-E1111ADGATimeCBE-B1111TOS-E1111TOSReconv.PCNextPCActiveMaskStackED0110EE1001TOS-E1111()ABCDA--1111BD1110CD0001NextPCRecvPCActiveMaskD--1111
A;(){B;}{C;}D;TOSD1111A0001C1110B1111D
:
主要优点:可以独立地处理线程,即每个线程可以在任何标量流水线上单独执行(处理模式)可以将线程组织成,即可以将执行相同指令流的线程构成,形成处理模式,以充分发挥处理的优势如果有许多线程,对具有相同值的线程可以将它们动态组织到一个中这样可以减少“分支发散”提高利用率利用率:执行有用操作的的比例(即,执行活动线程的比例)
:()
XYZ
:().,“,”2007.BranchPathAPathBA
AABBGGAACCDDEEFFAABBGGAACDEEFA11111111B11100011C10000010D01100001F00011100E11100011G11111111AnewwarpcreatedfromscalarthreadsofbothWarpxandyexecutingatBasicBlockDDExecutionofWarpxatBasicBlockAExecutionofWarpyatBasicBlockALegendAA
LaneFunctionalUnit
0,4,8,…
1,5,9,…
2,6,10,…
3,7,11,…
?
存储器访问如何处理?固定模式的存储器访问相对简单,当动态构成时,使得访问模式具有随机性,使得问题变得复杂。降低存储器访问的局部性导致存储器带宽利用率的下降?现代包括高速缓存,减少对存储器的访问:一个中的所有线程的存储器访问都命中(互相没有冲突):一个中有些命中,有些失效:一个线程的导致整个停顿需要有相关技术来解决存储器发散访问问题285:240“”
:308285“”…==,8
===64()124285“”…64()32(a)321024285TexT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分布式光伏电站合作协议范文
- 钢结构屋顶安装方案详解
- 建筑工程劳务合同签订指南
- 汽车维修车间工艺流程标准化手册
- 五年级科学实验详细记录
- 高中生物学实验教学资源开发
- 农民工法律权益培训教材
- 保险行业职业分类与岗位职责
- 国开作业人体解剖生理学-第八章 自测练习62参考
- 高中生物科学家和科学史填空式检测题
- 艺术课程标准(2022年版)
- 妇幼健康服务工作评分细则
- JJG 968-2002烟气分析仪
- GB/T 2522-2017电工钢带(片)涂层绝缘电阻和附着性测试方法
- GB/T 193-2003普通螺纹直径与螺距系列
- GB/T 1149.3-2010内燃机活塞环第3部分:材料规范
- 七年级语文部编版下册第单元写作抓住细节课件
- 高校教师培训高等教育法规概论课件
- 基坑钢板桩支护计算书计算模板
- 焦聚优点-发现不一样的自己 课件-心理健康
- 【精品】东南大学逸夫建筑馆施工组织设计
评论
0/150
提交评论