第4章存儲層次結(jié)構(gòu)設(shè)計課件_第1頁
第4章存儲層次結(jié)構(gòu)設(shè)計課件_第2頁
第4章存儲層次結(jié)構(gòu)設(shè)計課件_第3頁
第4章存儲層次結(jié)構(gòu)設(shè)計課件_第4頁
第4章存儲層次結(jié)構(gòu)設(shè)計課件_第5頁
已閱讀5頁,還剩139頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

計算機體系結(jié)構(gòu)

6,63492149第6章,,結(jié)構(gòu)向量體系結(jié)構(gòu)多媒體指令集擴展圖形處理單元向量體系結(jié)構(gòu)2023/7/262計算機體系結(jié)構(gòu)傳統(tǒng)指令級并行技術(shù)的問題提高性能的傳統(tǒng)方法(挖掘)的主要缺陷:程序內(nèi)在的并行性提高流水線的時鐘頻率:提高時鐘頻率,有時導(dǎo)致隨著增加(,)指令預(yù)取和譯碼:有時在每個時鐘周期很難預(yù)取和譯碼多條指令提高命中率:在有些計算量較大的應(yīng)用中(科學(xué)計算)需要大量的數(shù)據(jù),其局部性較差,有些程序處理的是連續(xù)的媒體流(),其局部性也較差。2023/7/263計算機體系結(jié)構(gòu)

結(jié)構(gòu)可有效地挖掘數(shù)據(jù)級并行:基于矩陣運算的科學(xué)計算圖像和聲音處理比更節(jié)能針對每組數(shù)據(jù)操作僅需要取指一次對()更具吸引力允許程序員繼續(xù)以串行模式思維2023/7/264計算機體系結(jié)構(gòu)

向量體系結(jié)構(gòu)多媒體指令集擴展

()x86:每年增加2

寬度每4年翻一番潛在加速比是的2倍2023/7/265計算機體系結(jié)構(gòu)2023/7/266計算機體系結(jié)構(gòu)的定義:對于給定任務(wù)而言世界上最快的機器任何造價超過3千萬美元的機器計算能力達到每秒萬億次的機器由設(shè)計的機器6600(,1964)被認為是第一臺超級計算機2023/7/267計算機體系結(jié)構(gòu)6600,1963A60128,32(,):,2,:,2,...()

a12,10(4)>400,000,750..,5,150,5(7600)100($7-10M)2023/7/268計算機體系結(jié)構(gòu)6600.,,1963: “,...6600.I34.,144...,I's.”

:“..”2023/7/269計算機體系結(jié)構(gòu)

典型應(yīng)用領(lǐng)域軍事研究領(lǐng)域(核武器研制、密碼學(xué))科學(xué)研究天氣預(yù)報石油勘探工業(yè)設(shè)計()

生物信息學(xué)密碼學(xué)均涉及大量的數(shù)據(jù)集處理70-80年代=2023/7/2610計算機體系結(jié)構(gòu)

向量處理機具有更高層次的操作,一條向量指令可以處理N個或N對操作數(shù)(處理對象是向量)+r1r2r3addr3,r1,r2SCALAR(1operation)v1v2v3+vectorlengthadd.vvv3,v1,v2VECTOR(Noperations)2023/7/2611計算機體系結(jié)構(gòu)向量處理機的基本特性基本思想:兩個向量的對應(yīng)分量進行運算,產(chǎn)生一個結(jié)果向量。簡單的一條向量指令包含了多個操作=>每一結(jié)果獨立于前面的結(jié)果長流水線,編譯器保證操作間沒有相關(guān)性硬件僅需檢測兩條向量指令間的相關(guān)性較高的時鐘頻率向量指令以已知的模式訪問存儲器可有效發(fā)揮多體交叉存儲器的優(yōu)勢 可通過重疊減少存儲器操作的延時-64不需要數(shù)據(jù)!(僅使用指令)在流水線控制中減少了控制相關(guān)2023/7/2612計算機體系結(jié)構(gòu)04/21:()12345

2023/7/2613計算機體系結(jié)構(gòu)04/21向量處理機基本概念基本思想:兩個向量的對應(yīng)分量進行運算,產(chǎn)生一個結(jié)果向量向量處理機基本特征一條指令包含多個操作單條向量指令內(nèi)所包含的操作相互獨立以已知模式訪問存儲器控制相關(guān)少向量處理機基本結(jié)構(gòu)向量處理機性能評估向量指令流執(zhí)行時間:,,其他指標:R,N1/2,2023/7/2614計算機體系結(jié)構(gòu)向量處理機的基本結(jié)構(gòu):所有的向量操作是存儲器到存儲器:除了和操作外,所有的操作是向量寄存器與向量寄存器間的操作 向量機的結(jié)構(gòu) 1980年以后的所有的向量處理機都是這種結(jié)構(gòu):

,,,,我們也主要針對這種結(jié)構(gòu)2023/7/2615計算機體系結(jié)構(gòu)

存儲器-存儲器型向量機所有指令操作的操作數(shù)來源于存儲器第一臺向量機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計算機體系結(jié)構(gòu).

存儲器-存儲器型向量機()需要更高的存儲器帶寬

結(jié)構(gòu)使得多個向量操作重疊執(zhí)行較困難

啟動時間更長100在向量元素小于100時,標量代碼的性能高于向量化代碼1,均衡點在2個元素1后續(xù)的機器(205,10)都是寄存器型向量機2023/7/2617計算機體系結(jié)構(gòu)

1的變體(1976):

硬布線邏輯控制高效流水化的功能部件多體交叉存儲系統(tǒng)無不支持2023/7/2618計算機體系結(jié)構(gòu)

格式緊湊一條指令包含N個操作表達能力強,一條指令能告訴硬件:N個操作之間無相關(guān)性使用同樣的功能部件訪問不相交的寄存器與前面的操作以相同模式訪問寄存器訪問存儲器中的連續(xù)塊()以已知的模式訪問存儲器()可擴展性好可以在多個并行的流水線上運行同樣的代碼()2023/7/2619計算機體系結(jié)構(gòu)“” . 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計算機體系結(jié)構(gòu)向量處理機的基本組成單元:固定長度的一塊區(qū)域,存放單個向量至少2個讀端口和一個寫端口(一般最少16個讀端口,8個寫端口)典型的有8-32向量寄存器,每個寄存器存放64到128個64位元素():全流水化的,每一個啟動一個新的操作 一般4到8個:,,(1),,,;可能有些重復(fù)設(shè)置的部件():全流水化地或一個向量,可能會配置多個部件:存放單個元素用于標量處理或存儲地址用交叉開關(guān)連接(),,2023/7/2621計算機體系結(jié)構(gòu)2023/7/2622計算機體系結(jié)構(gòu)

使用較深的流水線(=>)執(zhí)行向量元素的操作由于向量元素相互獨立,簡化了深度流水線的控制(=>!)V1V2V3V3<-v1*v2

2023/7/2623計算機體系結(jié)構(gòu)

LaneFunctionalUnit

0,4,8,…1,5,9,…2,6,10,…3,7,11,…2023/7/2624計算機體系結(jié)構(gòu)

C[1]C[2]C[0]A[3]B[3]A[4]B[4]A[5]B[5]A[6]B[6]使用一條流水化的功能部件執(zhí)行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條流水化的功能部件執(zhí)行2023/7/2625計算機體系結(jié)構(gòu)

0123456789ABCDEF+BaseStrideVectorRegistersMemoryBanksAddressGenerator1,16,4,12:2023/7/2626計算機體系結(jié)構(gòu)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計算機體系結(jié)構(gòu)

多條向量指令可重疊執(zhí)行(鏈接技術(shù))例如:每個向量32個元素,8(車道)loadloadmulmuladdadd

2412023/7/2628計算機體系結(jié)構(gòu)04/23向量處理機基本結(jié)構(gòu)

()向量處理機的基本組成向量運算部件的執(zhí)行方式-流水線方式向量部件結(jié)構(gòu)-多“道”結(jié)構(gòu)-多條運算流水線多體交叉存儲系統(tǒng)向量指令并行執(zhí)行向量處理機性能評估向量指令流執(zhí)行時間:,,其他指標:R,N1/2,2023/7/2629計算機體系結(jié)構(gòu)

=f(,,.):功能部件消耗向量元素的速率:可在同一時鐘周期開始執(zhí)行的指令集合():執(zhí)行一個所花費的大致時間(.)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計算機體系結(jié)構(gòu)

向量啟動時間由兩部分構(gòu)成功能部件延時:一個操作通過功能部件的時間截止時間或恢復(fù)時間():運行下一條向量指令的間隔時間RXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXWRXXXW

2023/7/2631計算機體系結(jié)構(gòu)

C90,494%1284T0,EightlanesNodeadtime100%efficiencywith8elementvectorsNodeadtime642023/7/2632計算機體系結(jié)構(gòu)

:部件流水線的深度(1) 12 7 6 't;=n1 1.01211(121)2.,1212718+2n 12121223+2n3.24+2n24+2629+3n24.30+3n30+31241+4n32023/7/2633計算機體系結(jié)構(gòu)

當向量的長度不是64時(假設(shè)向量寄存器的長度是64)怎么辦?

()控制特定向量操作的長度,包括向量的.(當然一次操作的向量的長度不能>向量寄存器的長度)例如:

10i=1,n10 Y(i)=a*X(i)+Y(i)n的值只有在運行時才能知道

n>.()怎么辦?2023/7/2634計算機體系結(jié)構(gòu)(分段開采)假設(shè)>.()?:產(chǎn)生新的代碼,使得每個向量操作的元素數(shù)第一次循環(huán)做最小片(n),以后按=操作 =1

=(n)/**/

1j=0,(n/)/**/ 10i=,1/**/

Y(i)=a*X(i)+Y(i)/**/

10

=/**/

=/**/

1 2023/7/2635計算機體系結(jié)構(gòu)

的向量執(zhí)行時間計算試計算×s,其中為長度為200的向量(每個向量元素占8個字節(jié)),s是一個標量。向量寄存器長度為64。各功能部件的啟動時間如前所述,求總的執(zhí)行時間,(=15)2023/7/2636計算機體系結(jié)構(gòu)R201600#R22AR10812S1R10641R3064:V1BV21*2A1A1BR105122S364R42A?R4,2023/7/2637計算機體系結(jié)構(gòu)=12+7+12=31T200=660+4*31=784每一元素的執(zhí)行時間=784/200=3.92023/7/2638計算機體系結(jié)構(gòu)2023/7/2639計算機體系結(jié)構(gòu)

R:當向量長度為無窮大時的向量流水線的最大性能。常在評價峰值性能時使用,單位為實際問題是向量長度不會無窮大,的開銷還是比較大的表示向量長度為n時的向量流水線的性能N1/2:達到R一半的值所需的向量長度,是評價向量流水線時間對性能的影響。:向量流水線方式的工作速度優(yōu)于標量串行方式工作時所需的向量長度臨界值。該參數(shù)既衡量建立時間,也衡量標量、向量速度比對性能的影響2023/7/2640計算機體系結(jié)構(gòu)

()

119768086461

198312086482L,1S

198816686482L,1S901991240812884901996455812884.1198410812841.419941331612831.20019821338-25632-102432.30019961008-25632-102432219841608+8K256168319954008+8K2561682023/7/2641計算機體系結(jié)構(gòu)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計算機體系結(jié)構(gòu)()()()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計算機體系結(jié)構(gòu)

1,16,4,12:=1&&>=,10123456789ABCDEF+BaseStrideVectorRegistersMemoryBanksAddressGenerator2023/7/2644計算機體系結(jié)構(gòu)(15)a64136a6.???2023/7/2645計算機體系結(jié)構(gòu)

假設(shè)處理順序相鄰的元素在存儲器中不順序存儲。例如 10i=1,100 10j=1,100 A()=0.0 10k=1,10010 A()=A()()*C()B或C的兩次訪問不會相鄰(相隔800):向量中相鄰元素間的距離

=>()=>會導(dǎo)致體沖突

(.,=3216)2023/7/2646計算機體系結(jié)構(gòu)32

操作成組地在寄存器和存儲器之間移動數(shù)據(jù)三類尋址方式(單步長)()(常數(shù)步長)()(間接尋址)等價于寄存器間接尋址方式對稀疏矩陣有效用于向量化操作的指令增多2023/7/2647計算機體系結(jié)構(gòu) 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計算機體系結(jié)構(gòu)1:寄存器定向路徑的向量機版本首次在1上使用MemoryV1LoadUnitMult.V2V3ChainAddV4V5Chainv1v312v5,v3,v42023/7/2649計算機體系結(jié)構(gòu)

采用鏈接技術(shù),前一條指令的第一個結(jié)果出來后,就可以啟動下一條相關(guān)指令的執(zhí)行LoadMulAddLoadMulAddTime不采用鏈接技術(shù),必須處理完前一條指令的最后一個元素,才能啟動下一條相關(guān)的指令2023/7/2650計算機體系結(jié)構(gòu)

多條向量指令可重疊執(zhí)行(鏈接技術(shù))例如:每個向量32個元素,8(車道)loadloadmulmuladdadd

2412023/7/2651計算機體系結(jié)構(gòu)#2:: 100i=1,64 (A(i).0) A(i)=A(i)–B(i)

100使用長度為的布爾向量控制向量指令的執(zhí)行當使能時,向量指令操作僅對中對應(yīng)位為1的分量起作用2023/7/2652計算機體系結(jié)構(gòu)

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計算機體系結(jié)構(gòu)V1;AV1V2;BF00;F0V10(i)1V1(i)0V1121s1A使用寄存器的缺陷簡單實現(xiàn)時,條件不滿足時向量指令仍然需要花費時間有些向量處理器帶條件的向量執(zhí)行僅控制向目標寄存器的寫操作,可能會有除法錯。2023/7/2654計算機體系結(jié)構(gòu)#3:: 100i=1100 A(K(i))=A(K(i))+C(M(i))()使用中給出的偏移再加基址來讀取=>aa這些元素以密集的方式操作完成后,再使用同樣的存儲到稀疏矩陣的對應(yīng)位置這些操作編譯時可能無法完成。主要原因:編譯器無法預(yù)知以及是否有數(shù)據(jù)相關(guān)使用設(shè)置步長(0,1,2,...,63)2023/7/2655計算機體系結(jié)構(gòu)

(1993).(1988) 6000721672560.25140160(1.1) 17125(7.3)

():1(32B64B):1(4B)2023/7/2656計算機體系結(jié)構(gòu)

(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstoreIter.1Iter.2ScalarSequentialCode向量化是指在編譯期間對操作重定序需要進行大量的循環(huán)相關(guān)分析VectorInstructionloadloadaddstoreloadloadaddstoreIter.1Iter.2VectorizedCodeTime2023/7/2657計算機體系結(jié)構(gòu)并行的類型指令級并行()以并行方式執(zhí)行某個指令流中的獨立無關(guān)的指令(,,)線程級并行()以并行方式執(zhí)行多個獨立的指令流(,)數(shù)據(jù)級并行()以并行方式執(zhí)行多個相同類型的操作()、??.,?.,,2023/7/2658計算機體系結(jié)構(gòu)04/28向量處理機性能評估向量指令流執(zhí)行時間:,,其他指標:R,N1/2,向量機的存儲器訪問存儲器組織:獨立存儲體、多體交叉方式:固定步長(1常數(shù)),非固定步長()基于向量機模型的優(yōu)化鏈接技術(shù)有條件執(zhí)行稀疏矩陣的操作多媒體擴展指令擴展的指令類型較少向量寄存器長度較短2023/7/2659計算機體系結(jié)構(gòu)的興起應(yīng)用需求和技術(shù)發(fā)展推動著體系結(jié)構(gòu)的發(fā)展圖形、機器視覺、語音識別、機器學(xué)習(xí)等新的應(yīng)用均需要大量的數(shù)值計算,其算法通常具有數(shù)據(jù)并行特征結(jié)構(gòu)(,,)是執(zhí)行這些算法的最有效途徑2023/7/2660計算機體系結(jié)構(gòu)

機器適合挖掘規(guī)則數(shù)據(jù)級并行同樣的操作作用于不同的數(shù)據(jù)元素向量內(nèi)的元素操作獨立,可有效提高性能,簡化設(shè)計性能的提升受限于代碼的向量化標量操作限制了向量機的性能’s目前很多包含操作指令,,2023/7/2661計算機體系結(jié)構(gòu).:又稱為并行處理機、處理器。其核心是一個由多個處理單元構(gòu)成的陣列,用單一的控制部件來控制多個處理單元對各自的數(shù)據(jù)進行相同的運算和操作。2023/7/2662計算機體系結(jié)構(gòu).:多個獨立的操作由編譯器封裝在一起2023/7/2663計算機體系結(jié)構(gòu).:單個操作作用在多個不同的數(shù)據(jù)元素上2023/7/2664計算機體系結(jié)構(gòu)()在已有的中添加一些向量長度很短的向量操作指令將已有的64寄存器拆分為2x32b4x16b8x8b1957年,2將36拆分為2x18b4x9b新的設(shè)計具有較寬的寄存器128b,2/3/4256b()單條指令可實現(xiàn)寄存器中所有向量元素的操作16b16b16b16b32b32b64b8b8b8b8b8b8b8b8b16b16b16b16b16b16b16b16b16b16b16b16b++++4x16badds2023/7/2665計算機體系結(jié)構(gòu)

:一條指令操作同時作用于不同的數(shù)據(jù)元全陣列處理用于多媒體操作

:884162321641.2023/7/2666計算機體系結(jié)構(gòu):(I)2023/7/2667計算機體系結(jié)構(gòu):()2023/7/2668計算機體系結(jié)構(gòu)

受限的指令集:無向量長度控制操作無常數(shù)步長尋址和操作操作必須64/128邊界對齊受限的向量寄存器長度:需要超標量發(fā)射以保持部件忙通過循環(huán)展開隱藏延遲增加了寄存器讀寫壓力在微處理器設(shè)計中向全向量化發(fā)展更好地支持非對齊存儲器訪問支持雙精度浮點數(shù)操作(64)(2008),256b(1024b)2023/7/2669計算機體系結(jié)構(gòu)向量處理機性能評估向量指令流執(zhí)行時間:,,其他指標:R,N1/2,向量機的存儲器訪問存儲器組織:獨立存儲體、多體交叉方式:固定步長(1常數(shù)),非固定步長()基于向量機模型的優(yōu)化鏈接技術(shù)有條件執(zhí)行稀疏矩陣的操作多媒體擴展指令擴展的指令類型較少向量寄存器長度較短2023/7/2670計算機體系結(jié)構(gòu)71:

機器適合挖據(jù)規(guī)整的數(shù)據(jù)級并行同樣的操作作用在許多數(shù)據(jù)元素上提高性能、設(shè)計簡單(向量內(nèi)的操作相互獨立)性能的提升受限于代碼的向量化標量操作限制著向量機的性能很多已有的擴展了一些操作

,,()早期的是指帶有高性能浮點運算部件、可高效生成3D圖形的具有固定功能的專用設(shè)備(1990s)讓機具有類似工作站的圖形功能用戶可以配置圖形處理流水線,但不是真正的對其編程2001-2005,加入了越來越多的可編程性例如新的語言可用來編寫一些小的程序處理圖形的頂點或像素,是的變體大規(guī)模并行(針對每幀上百萬頂點或像素)但非常受限于編程模型有些用戶注意到通過將輸入和輸出數(shù)據(jù)映射為圖像,并對頂點或像素渲染計算可進行通用計算因為不得不使用圖形流水線模型,這對完成通用計算來說是個非常難用的編程模型2023/7/2672計算機體系結(jié)構(gòu)()2006年,的8800支持一種新的編程語言:“”隨后工業(yè)界推出,與具有相同的,但獨立于供應(yīng)商:針對通用計算,發(fā)揮計算的高性能和存儲器的高帶寬來加速一些通用計算中的核心()一種附加處理器模型(作為附加設(shè)備):發(fā)射數(shù)據(jù)并行的到上運行我們僅討論樣式的簡化版本,僅考慮的計算核部分,不涉及圖形加速部分2023/7/2673計算機體系結(jié)構(gòu)

異構(gòu)多核系統(tǒng)針對每個任務(wù)選擇合適的處理器和存儲器通用適合執(zhí)行一些串行的線程串行執(zhí)行快帶有,訪問存儲器延時低適合執(zhí)行大量并行線程可擴放的并行執(zhí)行高帶寬的并行存取GPUSMemSMemSMemPCIeBridgeHostMemoryCPUCacheDeviceMemoryCache75

指令流水線類似于的流水線。不是用指令編程基于一般的指令,應(yīng)用由一組線程構(gòu)成。兩個概念()()編程模型指程序員如何表達代碼例如,順序模型(),數(shù)據(jù)并行(),數(shù)據(jù)流模型、多線程模型(,),…執(zhí)行模型指硬件底層如何執(zhí)行代碼例如,亂序執(zhí)行、向量機、數(shù)據(jù)流處理機、多處理機、多線程處理機等執(zhí)行模型與編程模型可以差別很大例如.,順序模型可以在亂序執(zhí)行的處理器上執(zhí)行。模型可以用處理器實現(xiàn)(a)?(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstoreIter.1Iter.2ScalarSequentialCode’s:1.()2.()3.()2023/7/2676計算機體系結(jié)構(gòu)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()不是用指令編程使用線程(編程模型)每個線程執(zhí)行同樣的代碼,但操作不同的數(shù)據(jù)元素每個線程有自己的上下文(即可以獨立地啟動/執(zhí)行等)一組執(zhí)行相同指令的線程由硬件動態(tài)組織成一個是由硬件形成的操作

一個線程對應(yīng)一個數(shù)據(jù)元素大量的線程組織成很多線程塊許多線程塊組成一個網(wǎng)格由硬件對線程進行管理

2023/7/2682計算機體系結(jié)構(gòu)’sblockIdx0threadId0threadId1threadId255blockIdx1threadId0threadId1threadId255blockIdx(n+255)/256)threadId0threadId1threadId255創(chuàng)建足夠的線程塊以適應(yīng)輸入向量(中將由多個線程塊構(gòu)成的、在上運行的代碼稱為,可以是2維的)(i<n)=256()2023/7/2683計算機體系結(jié)構(gòu)

由多個并行核構(gòu)成,每個核是一個多線程處理器(包含多個車道())發(fā)送整個“”到,由將這些線程塊分發(fā)到多個核上(每個線程塊在一個核上運行)上核的數(shù)量對程序員而言是透明的Core0Lane0Lane1Lane15Core1Lane0Lane1Lane15Core15Lane0Lane1Lane15

2023/7/2684計算機體系結(jié)構(gòu)

計算由大量的相互獨立的線程()完成,這些線程組合成線程塊()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計算機體系結(jié)構(gòu).是硬件指令集的抽象“()”使用虛擬寄存器用軟件將其翻譯成機器碼: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計算機體系結(jié)構(gòu)

<<<,>>>(,…);GPUSMs:SMemSMemSMemPCIeBridgeHostMemoryCPUCacheDeviceMemoryCache...HostThread

aGPUSMs:SMemSMemSMemPCIeBridgeHostMemoryCPUCacheDeviceMemoryCacheBlockPer-block

SharedMemoryPer-appDevice

GlobalMemory

Thread;;;:“,”使用模型,每個線程的標量指令流匯聚在一起在硬件上以方式執(zhí)行(32a)μT0μT1μT2μT3μT4μT5μT6μT7xayy

2023/7/2689計算機體系結(jié)構(gòu)

[,2010]2023/7/2690計算機體系結(jié)構(gòu)91030201

(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstore.1.2::a.()a::aA:

0X:A(.,)92.:一條指令流(一串順序的指令),每條指令對應(yīng)多個數(shù)據(jù)輸入(向量指令):多個指令流(標量指令)構(gòu)成線程,這些線程動態(tài)構(gòu)成。一個處理多個數(shù)據(jù)元素主要優(yōu)點:可以獨立地處理線程,即每個線程可以在任何標量流水線上單獨執(zhí)行(處理模式)可以將線程組織成,即可以將執(zhí)行相同指令流的線程構(gòu)成,形成處理模式,以充分發(fā)揮處理的優(yōu)勢

(0;i<N;)C[i]=A[i]+B[i];loadloadaddstoreloadloadaddstore.1.20X設(shè)一個由32構(gòu)成如果有32K次循環(huán)1K個這些可以在同一條流水線上交替執(zhí)行

1X.32+1.32+2202.20*32+1.20*32+294

:執(zhí)行相同指令(操作不同的數(shù)據(jù)元素)的一組線程同一中的所有線程執(zhí)行相同代碼:a…387

WXYZ

95a96

:一組執(zhí)行相同指令的線程(作用于不同的數(shù)據(jù)元素)

流水線上每次執(zhí)行每個線程的一條指令()通過的交叉執(zhí)行來隱藏延時所有線程的寄存器值保存在寄存器文件中可以容忍長延時

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,…:

不同線程的相同指令使用線程來存取不同的數(shù)據(jù)元素

’s16,4401234567891011121314150123456789101112131415+++++:

0123100

328241W3W0W1W4W2W5

:05/02多媒體擴展指令擴展的指令類型較少向量寄存器長度較短編程模型:()使用線程(編程模型),不是用指令編程每個線程執(zhí)行同樣的代碼,但操作不同的數(shù)據(jù)元素每個線程有自己的上下文(即可以獨立地啟動/執(zhí)行等)計算由大量的相互獨立的線程()完成,這些線程組合成線程塊()執(zhí)行模型:()一組執(zhí)行相同指令的線程由硬件動態(tài)組織成一個是由硬件形成的操作存儲器組織,,2023/7/26101計算機體系結(jié)構(gòu)()(=0;<100000;){C[]=A[]+B[];}100000(…){=*+;=[];=[];C[]=+;}

2023/7/26102計算機體系結(jié)構(gòu)()2023/7/26103計算機體系結(jié)構(gòu).傳統(tǒng)的僅包含一個線程:一條向量指令必須執(zhí)行完,然后啟動下一條向量指令編程模型為()需要知道向量長度包含指令由多個標量線程構(gòu)成,以方式執(zhí)行(即所有的線程執(zhí)行相同的指令)不需要每個線程可以單獨對待(即可以映射到不同的中),編程模型不是不必知道向量長度多個線程可以動態(tài)構(gòu)成是標量可以動態(tài)形成邏輯上的向量指令是一種在硬件上實現(xiàn)的編程模型,它是一種編程模型而不是計算機組織每個處理單元執(zhí)行同樣的過程,處理不同的數(shù)據(jù)這些過程可以在程序中的某個點上同步,例如多條指令流執(zhí)行相同的程序每個程序/過程操作不同的數(shù)據(jù)運行時可以執(zhí)行不同的控制流路徑許多科學(xué)計算應(yīng)用以這種方式編程運行在硬件結(jié)構(gòu)上()現(xiàn)代以這種類似的方式編程運行在硬件上.:一條指令流(一串順序的指令),每條指令對應(yīng)多個數(shù)據(jù)輸入(向量指令):多個指令流(標量指令)構(gòu)成線程,這些線程動態(tài)構(gòu)成。一個處理多個數(shù)據(jù)元素主要優(yōu)點:可以獨立地處理線程,即每個線程可以在任何標量流水線上單獨執(zhí)行()可以將線程組織成,即可以將執(zhí)行相同指令流的線程構(gòu)成,形成,以充分發(fā)揮處理的優(yōu)勢

每個線程可以包含控制流指令這些線程可以執(zhí)行不同的控制流路徑ThreadWarpCommonPC2341BCDEFAG:

控制邏輯使用流水線以節(jié)省資源這些標量線程構(gòu)成當一個中的線程分支到不同的執(zhí)行路徑時,產(chǎn)生分支發(fā)散()BranchPathAPathBAB與向量處理機模型的條件執(zhí)行相同(?)

簡單的編譯為謂詞(有條件)執(zhí)行等價于在向量屏蔽寄存器的作用下的向量運算比較復(fù)雜的控制流編譯生成分支如何處理分支?μT0μT1μT2μT3μT4μT5μT6μT7(>=n)1y

:2023/7/26109計算機體系結(jié)構(gòu)

與向量結(jié)構(gòu)類似,使用內(nèi)部的屏蔽字()還使用了分支同步堆棧保存分支的路徑地址保存該路徑的每個的屏蔽字()即指示哪些車道可以提交結(jié)果()指令標記()管理何時分支到多個執(zhí)行路徑,何時路徑匯合層線程的控制流由分支指令(、、)由程序員指定的每個線程車道的1謂詞寄存器硬件指令層,控制流包括:分支指令()特殊的指令用于管理分支同步棧硬件為每個提供堆棧保存分支的路徑硬件指令帶有控制每個線程車道1謂詞寄存器2023/7/26110計算機體系結(jié)構(gòu)

硬件跟蹤各μ轉(zhuǎn)移的方向(判定哪些是成功的轉(zhuǎn)移,哪些是失敗的轉(zhuǎn)移)如果所有線程所走的路徑相同,那么可以保持這種如果各線程選擇的方向不一致,那么創(chuàng)建一個屏蔽()向量來指示各線程的轉(zhuǎn)移方向(成功、失敗)繼續(xù)執(zhí)行分支失敗的路徑,將分支成功的路徑壓入硬件堆棧(分支同步堆棧),待后續(xù)執(zhí)行車道何時執(zhí)行分支同步堆棧中的路徑?通過執(zhí)行操作,彈出執(zhí)行路徑以及屏蔽字,執(zhí)行該轉(zhuǎn)移路徑完成整個分支路徑執(zhí)行后再執(zhí)行下一條指令稱為(匯聚)對于相同長度的路徑,操作的效率平均為50%2023/7/26111計算機體系結(jié)構(gòu) (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計算機體系結(jié)構(gòu)(I):()-G1111TOSBCDEFAGThreadWarpCommonPCThread2Thread3Thread4Thread1111110010110111111111111-A1111TOSED0110EC1001TOS-E1111ED0110TOS-E1111ADGATimeCBE-B1111TOS-E1111TOSReconv.PCNextPCActiveMaskStackED0110EE1001TOS-E1111()ABCDA--1111BD1110CD0001NextPCRecvPCActiveMaskD--1111

A;(){B;}{C;}D;TOSD1111A0001C1110B1111D

:

主要優(yōu)點:可以獨立地處理線程,即每個線程可以在任何標量流水線上單獨執(zhí)行(處理模式)可以將線程組織成,即可以將執(zhí)行相同指令流的線程構(gòu)成,形成處理模式,以充分發(fā)揮處理的優(yōu)勢如果有許多線程,對具有相同值的線程可以將它們動態(tài)組織到一個中這樣可以減少“分支發(fā)散”提高利用率利用率:執(zhí)行有用操作的的比例(即,執(zhí)行活動線程的比例)

:()

XYZ

:().,“,”2007.BranchPathAPathBA

AABBGGAACCDDEEFFAABBGGAACDEEFA11111111B11100011C10000010D01100001F00011100E11100011G11111111AnewwarpcreatedfromscalarthreadsofbothWarpxandyexecutingatBasicBlockDDExecutionofWarpxatBasicBlockAExecutionofWarpyatBasicBlockALegendAA

LaneFunctionalUnit

0,4,8,…

1,5,9,…

2,6,10,…

3,7,11,…

?

存儲器訪問如何處理?固定模式的存儲器訪問相對簡單,當動態(tài)構(gòu)成時,使得訪問模式具有隨機性,使得問題變得復(fù)雜。降低存儲器訪問的局部性導(dǎo)致存儲器帶寬利用率的下降?現(xiàn)代包括高速緩存,減少對存儲器的訪問:一個中的所有線程的存儲器訪問都命中(互相沒有沖突):一個中有些命中,有些失效:一個線程的導(dǎo)致整個停頓需要有相關(guān)技術(shù)來解決存儲器發(fā)散訪問問題285:240“”

:308285“”…==,8

===64()124285“”…64()32(a)321024285TexT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論