精確斷點(diǎn)和不精確斷點(diǎn)_第1頁
精確斷點(diǎn)和不精確斷點(diǎn)_第2頁
精確斷點(diǎn)和不精確斷點(diǎn)_第3頁
精確斷點(diǎn)和不精確斷點(diǎn)_第4頁
精確斷點(diǎn)和不精確斷點(diǎn)_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、5.3.7 精確斷點(diǎn)與不精確斷點(diǎn)對(duì)于輸入輸出設(shè)備的中斷服務(wù),實(shí)際上不需要有精確斷點(diǎn)。比較簡單的處理方法是:讓已經(jīng)進(jìn)入流水線的所有指令都執(zhí)行完成,斷點(diǎn)就是最后進(jìn)入流水線的那條指令的地址。對(duì)于程序性錯(cuò)誤和機(jī)器故障等引起的中斷,它們出現(xiàn)的概率很低,處理原則:不在于縮短時(shí)間,關(guān)鍵是要正確保存現(xiàn)場和正確恢復(fù)斷點(diǎn)。不精確斷點(diǎn)(Imprecise),流水線可以不斷流需要的硬件比較少,控制邏輯比較簡單中斷響應(yīng)時(shí)間加長 采用不精確斷點(diǎn)法可能會(huì)發(fā)生如下兩個(gè)問題:(1)程序的調(diào)試?yán)щy調(diào)試程序時(shí)要設(shè)置斷點(diǎn),程序員通過查看斷點(diǎn)處的中間執(zhí)行結(jié)果判斷程序是否正確。但由于不精確斷點(diǎn),程序不能準(zhǔn)確中斷,因此,難于調(diào)試。早期的流

2、水線處理機(jī),多采用不精確斷點(diǎn)法近期的流水線處理機(jī)一般都采用精確斷點(diǎn)法(2)程序執(zhí)行的結(jié)果可能出錯(cuò),例如: i:FADD R1, R2 ;(R1)(R2)R1 i+1:FMUL R3, R1 ;(R3)(R1)R3當(dāng)?shù)趇條指令執(zhí)行到S6段時(shí)發(fā)現(xiàn)浮點(diǎn)加法結(jié)果溢出,于是發(fā)出中斷服務(wù)申請(qǐng)。由于采用不精確斷點(diǎn)法,已經(jīng)進(jìn)入流水線的第i+1條指令將執(zhí)行完成;因?yàn)榈趇+1條指令使用了不正確的R1,所以浮點(diǎn)乘法的執(zhí)行結(jié)果是不正確的。采用精確斷(Precise)點(diǎn)法,要設(shè)置一定數(shù)量的后援寄存器,把整個(gè)流水線中所有指令的執(zhí)行結(jié)果和現(xiàn)場都保存下來。5.4 動(dòng)態(tài)調(diào)度技術(shù)5.4.1 順序流動(dòng)與亂序流動(dòng)5.4.2 亂序流動(dòng)

3、中的數(shù)據(jù)相關(guān)5.4.3 數(shù)據(jù)重定向方法5.4.4 Tomasulo動(dòng)態(tài)調(diào)度算法實(shí)現(xiàn)方法: 由硬件動(dòng)態(tài)調(diào)整指令執(zhí)行順序,以減少數(shù)據(jù)相關(guān)造成的影響。主要優(yōu)點(diǎn):能夠處理在編譯時(shí)無法確定的相關(guān),并簡化編譯器設(shè)計(jì)在其他流水線機(jī)器上編譯的目標(biāo)代碼也能夠高效運(yùn)行用靜態(tài)調(diào)度法生成的代碼也能在動(dòng)態(tài)調(diào)度法的機(jī)器中運(yùn)行主要缺點(diǎn):指令級(jí)并行度低,因?yàn)橹荒茉诒容^小的范圍內(nèi)尋找并行性5.4.1 順序流動(dòng)與亂序流動(dòng)1.順序流動(dòng)方式:任務(wù)按順序流入流水線,也按順序流出流水線把如下一段程序輸入到這條流水線中: k: R0(R1) k+1: k+2: R2(R0)(R3) k+3: k+4: k+5: 指令k+2無法繼續(xù)執(zhí)行,要

4、在功能段S2中等待。后續(xù)的指令k+4、k+5、等也不能進(jìn)入流水線。功能段S3、S4、S5將逐漸空閑。缺點(diǎn):吞吐率和效率降低優(yōu)點(diǎn):流水線的控制邏輯比較簡單流水線“斷流”,有些功能段“空閑”2.亂序(Out of order)流動(dòng)方式:指令流出流水線的順序與流入流水線的順序不同。又稱為錯(cuò)序流動(dòng)方式、無序流動(dòng)方式、異步流動(dòng)方式等。5.4.2 亂序流動(dòng)中的數(shù)據(jù)相關(guān)在亂序流動(dòng)方式中,可能發(fā)生三種數(shù)據(jù)相關(guān) 寫寫相關(guān) k: LOAD F1, A ;F1(A) 寫讀相關(guān) k+1:FADD F2, F1 ;F2(F2)+(F1) k+2:FMUL F1, F3 ;F1(F1)(F3) k+3:STORE F1,

5、 B ;B(F1)讀寫相關(guān)(1)寫讀相關(guān):指令k與指令k+1之間關(guān)于F1的相關(guān),又稱為數(shù)據(jù)相關(guān)、先寫后讀相關(guān)、流相關(guān)、WR相關(guān)、RAW相關(guān)等。(2)讀寫相關(guān):指令k+1與指令k+2之間關(guān)于F1的相關(guān),變量名相關(guān)、先讀后寫相關(guān)、反相關(guān)、RW相關(guān)、WAR相關(guān)等。(3)寫寫相關(guān):指令k與指令k+2左邊的F1之間的相關(guān)關(guān)系稱為:輸出相關(guān)、寫寫相關(guān)、WW相關(guān)、WAW相關(guān)或?qū)懞笤賹懴嚓P(guān)等。有時(shí)把相關(guān)稱為“冒險(xiǎn)”(hazard)、“竟?fàn)帯?(competition)等。在程序執(zhí)行過程中,只有避免相關(guān),執(zhí)行結(jié)果才是正確的。 三種數(shù)據(jù)相關(guān)可以用下列關(guān)系式來表示: 對(duì)于寫讀相關(guān) D(i) S(j) 對(duì)于讀寫相關(guān)

6、S(i) D(j) 對(duì)于寫寫相關(guān) D(i) D(j) 5.4.3 數(shù)據(jù)重定向方法1.三種數(shù)據(jù)相關(guān)的重定向 重定向之前,j只能在i之后執(zhí)行。 重定向之后,可以做到:(1)寫讀相關(guān),j與i可以同時(shí)執(zhí)行 即專用數(shù)據(jù)通路(2)寫寫相關(guān),先后順序無關(guān)(3)讀寫相關(guān),先后順序無關(guān) 后兩種情況又稱為“變量換名技術(shù)”2.變量換名技術(shù)用來自動(dòng)消除讀寫數(shù)據(jù)相關(guān)和寫寫數(shù)據(jù)相關(guān)規(guī)則:一個(gè)變量只允許定值一次在三種數(shù)據(jù)相關(guān)中,實(shí)際上只有寫讀數(shù)據(jù)相關(guān)必須依靠硬件、或采用軟硬件結(jié)合的方法來解決 解決方法:推后處理或?qū)S脭?shù)據(jù)通路在上面的數(shù)據(jù)重定向圖中,把B換成了B,并在以后的都引用B讀寫數(shù)據(jù)相關(guān)和寫寫數(shù)據(jù)相關(guān)就不存在了。一個(gè)實(shí)

7、際例子:Loop: LD F0, 0(R1) ADD F0, F2 SD 0(R1), F0 LD F0, -8(R1) ADD F0, F2 SD -8(R1), F0 LD F0, -16(R1) ADD F0, F2 SD -16(R1), F0 LD F0, -24(R1) ADD F0, F2 SD -24(R1), F0 SUBI R1, R1, #32 BNEZ R1, LoopLoop: LD F0, 0(R1) LD F4, -8(R1) LD F6, -16(R1) LD F8, -24(R1) ADD F0,F(xiàn)2 ADD F4,F(xiàn)2 ADD F6,F(xiàn)2 ADD F8,F(xiàn)2

8、 SD 0(R1), F0 SD -8(R1), F4 SUBI R1, R1, #32 SD -16(R1), F6 BNEZ R1, Loop SD -24(R1), F83.一個(gè)簡單的程序: k: LOAD F1, A k+1: FADD F1, F2 k+2: FMUL F1, F3 k+3: STORE F1, B專門設(shè)置:AFADD、FMULB、FADDFMUL三條專用路徑。撤消:F1FADD、F1FMUL、FADDF1 、AF1的路徑。5.4.4 Tomasulo動(dòng)態(tài)調(diào)度算法P310實(shí)用的動(dòng)態(tài)調(diào)度算法主要有兩種:(1)集中控制:CDC計(jì)分牌(scorebord)算法, 最先在CD

9、C 6600大型機(jī)中采用。(2)分散控制:Tomasulo算法, 公共數(shù)據(jù)總線法,令牌法等。最早在大型機(jī)IBM 360/91的浮點(diǎn)處理部件中被采用。以上面的一段程序?yàn)槔f明Tomasulo算法k: LOAD F1, Ak+1: FADD F1, F2k+2: FMUL F1, F3k+3: STORE F1, B5.5 超標(biāo)量處理機(jī)5.5.1 基本結(jié)構(gòu)5.5.2 單發(fā)射與多發(fā)射5.5.3 多流水線調(diào)度5.5.4 資源沖突5.5.5 超標(biāo)量處理機(jī)性能三種主流處理機(jī): 超標(biāo)量處理機(jī) 超流水線處理機(jī) 超標(biāo)量超流水線處理機(jī)5.5.1 基本結(jié)構(gòu)普通標(biāo)量流水線處理機(jī): 一條指令流水線,一個(gè)多功能操作部件,

10、 每個(gè)時(shí)鐘周期平均執(zhí)行指令的條數(shù)小于1。多操作部件標(biāo)量處理機(jī): 一條指令流水線,多個(gè)獨(dú)立的操作部件, 指令級(jí)并行度小于1。超標(biāo)量處理機(jī)典型結(jié)構(gòu): 多條并行工作的指令流水線,多個(gè)獨(dú)立的操作部件, 指令級(jí)并行度(ILP)大于1。 Motorola公司的MC88110有10個(gè)操作部件兩個(gè)寄存器堆:整數(shù)部件通用寄存器堆,32個(gè)32位寄存器浮點(diǎn)部件擴(kuò)展寄存器堆,32個(gè)80位寄存器緩沖深度為4的先行讀數(shù)棧緩沖深度為3的后行寫數(shù)棧兩個(gè)獨(dú)立的高速Cache中,各為8KB,采用兩路組相聯(lián)方式轉(zhuǎn)移目標(biāo)指令Cache,用于存放另一條分支上的指令5.5.2 單發(fā)射與多發(fā)射1.單發(fā)射處理機(jī):每個(gè)周期只取一條指令、只譯碼

11、一條指令,只執(zhí)行一條指令,只寫回一個(gè)運(yùn)算結(jié)果。取指令部件和指令譯碼部件各設(shè)置一套;只設(shè)置一個(gè)多功能操作部件或設(shè)置多個(gè)獨(dú)立的操作部件;操作部件中可以采用流水線結(jié)構(gòu),也可以不采用流水線結(jié)構(gòu)。目標(biāo)是每個(gè)時(shí)鐘周期平均執(zhí)行一條指令,ILP的期望值為1。2.多發(fā)射處理機(jī):每個(gè)周期同時(shí)取多條指令、同時(shí)譯碼多條指令,同時(shí)執(zhí)行多條指令,同時(shí)寫回多個(gè)運(yùn)算結(jié)果。多個(gè)取指令部件,多個(gè)指令譯碼部件和多個(gè)寫結(jié)果部件。設(shè)置多個(gè)指令執(zhí)行部件,有些指令執(zhí)行部件采用流水線結(jié)構(gòu)。目標(biāo)是每個(gè)時(shí)鐘周期平均執(zhí)行多條指令,ILP的期望值大于1。3.超標(biāo)量處理機(jī):有兩條或兩條以上能同時(shí)工作的指令流水線先行指令窗口:能夠從指令Cache中預(yù)取

12、多條指令,能夠?qū)Υ翱趦?nèi)的指令進(jìn)行數(shù)據(jù)相關(guān)性分析和功能部件沖突檢測。例如:Intel公司的i860、i960、Pentium,Motolora公司的MC88110,IBM公司的Power 6000,TI公司生產(chǎn)SuperSPARC等操作部件的個(gè)數(shù)一般多于每個(gè)周期發(fā)射的指令條數(shù)。通常為4 個(gè)至16個(gè)操作部件。超標(biāo)量處理機(jī)的指令級(jí)并行度:1ILPm5.5.3 多流水線調(diào)度順序發(fā)射(in-order issue)與亂序發(fā)射(out-order issue):指令發(fā)射順序是按照程序中指令排列順序進(jìn)行的稱為順序發(fā)射順序完成(in-order completion)與亂序完成(out-order compl

13、etion):指令完成順序是按照程序中指令排列順序進(jìn)行的稱為順序完成多流水線的調(diào)度主要有三種方法:順序發(fā)射順序完成順序發(fā)射亂序完成亂序發(fā)射亂序完成以如下6條指令組成的程序?yàn)槔?,說明這三種調(diào)度方法 I1:LOAD R1, A ;R1(A) I2:FADD R2, R1 ;R2(R2)(R1) I3:FMUL R3, R4 ;R3(R3)(R4) I4:FADD R4, R5 ;R4(R4)(R5) I5:DEC R6 ;R6(R6)1 I6:FMUL R6, R7 ;R6(R6)(R7)6條指令中有4個(gè)數(shù)據(jù)相關(guān),包括2個(gè)寫讀相關(guān),1個(gè)讀寫相關(guān)和1個(gè)寫寫相關(guān)。1.順序發(fā)射順序完成 共用10個(gè)時(shí)鐘周

14、期完成 還有8個(gè)空閑的時(shí)鐘周期2.順序發(fā)射亂序完成 總的執(zhí)行時(shí)間為9個(gè)時(shí)鐘周期, 節(jié)省了一個(gè)時(shí)鐘周期。少了5個(gè)空閑時(shí)鐘周期。3. 亂序發(fā)射亂序完成沒有空閑周期,功能部件得到充分利用。 總的執(zhí)行時(shí)間為8個(gè)周期,節(jié)省2個(gè)周期。5.5.4 資源沖突如果操作部件采用流水線結(jié)構(gòu),發(fā)生資源沖突的可能性很??;如果不采用流水線結(jié)構(gòu),發(fā)生資源沖突的可能性就比較大。下面是一個(gè)由4條指令的程序例子: I1:FADD R0, R1 ;R0(R0)(R1) I2:FMUL R2, R3 ;R2(R2)(R3) I3:FADD R4, R5 ;R4(R4)(R5) I4:FMUL R6, R7 ;R6(R6)(R7)操作

15、部件不采用流水線: 做完4條指令總共用了11個(gè)周期, 有5個(gè)空閑周期。操作部件采用流水線: 做完4條指令共用8個(gè)周期, 少用3個(gè)周期。操作部件采用流水線結(jié)構(gòu)的原因分析假每個(gè)周期發(fā)射m條指令,操作部件的延遲時(shí)間為k個(gè)周期,如果操作部件不采用流水線結(jié)構(gòu),則使用同一個(gè)操作部件的兩條指令應(yīng)該至少相差mk如果操作部件采用k段流水線結(jié)構(gòu),則使用同一個(gè)操作部件的兩條指令只需相差m或m以上指令流水線的段數(shù)k一般在4至10之間,每個(gè)時(shí)鐘周期發(fā)射的指令條數(shù)m在2至4之間。取中間值,k7,m3為了不發(fā)生資源沖突,如果操作部件不采用流水線結(jié)構(gòu), 兩條使用同一個(gè)功能部件的指令序號(hào)必須相差21或21以上。如果操作部件采用

16、流水線結(jié)構(gòu), 兩條使用同一個(gè)功能部件的指令序號(hào)只需要相差3或3以上。因此,在超標(biāo)量處理機(jī)中,操作部件一般要采用流水線結(jié)構(gòu)。 如果由于某種原因,操作部件不能采用流水線結(jié)構(gòu),則必須設(shè)置多個(gè)相同種類的操作部件普通標(biāo)量處理機(jī),希望相同操作連續(xù)出現(xiàn)。 只有連續(xù)出現(xiàn)相同操作的指令序列時(shí),流水線的效率才能得到充分發(fā)揮。超標(biāo)量處理機(jī)則正好相反,希望相同操作不要連續(xù)出現(xiàn)。相同操作的指令序列連續(xù)出現(xiàn)時(shí),會(huì)發(fā)生資源沖突;要求相同操作的指令能夠相對(duì)均勻地分布在程序中。超標(biāo)量處理機(jī)的這種要求正好符合一般標(biāo)量程序的特點(diǎn)。5.5.5 超標(biāo)量處理機(jī)性能單流水線普通標(biāo)量處理機(jī)的指令級(jí)并行度記作(1, 1),超標(biāo)量處理機(jī)的指令級(jí)

17、并行度記作(m, 1),超流水線處理機(jī)的指令級(jí)并行度記作(1, n),而超標(biāo)量超流水線處理機(jī)的指令級(jí)并行度記作(m, n)。在理想情況下,N條指令在單流水線標(biāo)量處理機(jī)上的執(zhí)行時(shí)間為: T(1, 1)(kN1)t在每個(gè)周期發(fā)射m條指令的超標(biāo)量處理機(jī)上執(zhí)行的時(shí)間為: 超標(biāo)量處理機(jī)相對(duì)于單流水線標(biāo)量處理機(jī)的加速比為:超標(biāo)量處理機(jī)的加速比的最大值為:S(m,1)MAXm5.6 超流水線處理機(jī)5.6.1 指令執(zhí)行時(shí)序5.6.2 典型處理機(jī)結(jié)構(gòu)5.6.3 超流水線處理機(jī)性能超流水線處理機(jī)的兩種定義:在一個(gè)周期內(nèi)分時(shí)發(fā)射多條指令的處理機(jī)指令流水線的段數(shù)大于等于8的流水線處理機(jī)提高處理機(jī)性能的兩種方法:通過增

18、加硬件資源來提高處理機(jī)性能通過各部分硬件的重疊工作來提高處理機(jī)性能兩種不同并行性:超標(biāo)量處理機(jī)采用的是空間并行性。超流水線處理機(jī)采用的是時(shí)間并行性。5.6.1 指令執(zhí)行時(shí)序每隔1/n個(gè)時(shí)鐘周期發(fā)射一條指令, 即處理機(jī)的流水線周期為1/n個(gè)時(shí)鐘周期。5.6.2 典型處理機(jī)結(jié)構(gòu)MIPS R4000處理機(jī): 每個(gè)時(shí)鐘周期包含兩個(gè)流水段是一種很標(biāo)準(zhǔn)的超流水線處理機(jī)結(jié)構(gòu)。指令流水線有8個(gè)流水段。指令Cache和數(shù)據(jù)Cache的容量各8KB,每個(gè)時(shí)鐘周期可以訪問Cache兩次,在一個(gè)時(shí)鐘周期內(nèi)可以從指令Cache中讀出兩條指令,從數(shù)據(jù)Cache中讀出或?qū)懭雰蓚€(gè)數(shù)據(jù)。主要運(yùn)算部件有整數(shù)部件和浮點(diǎn)部件。如果在

19、LOAD指令之后的兩條指令中,任何一條指令要在它的EX流水級(jí)使用這個(gè)數(shù)據(jù),則指令流水線要暫停一個(gè)時(shí)鐘周期。5.6.3 超流水線處理機(jī)性能指令級(jí)并行度為(1,n)的超流水線處理機(jī),執(zhí)行N條指令所的時(shí)間為:超流水線處理機(jī)相對(duì)于單流水線普通標(biāo)量處理機(jī)的加速比為: 加速比的最大值為:S(1, n)MAXn5.7 超標(biāo)量超流水線處理機(jī)一個(gè)時(shí)鐘周期發(fā)射m次,每次發(fā)射n條指令 5.7.1 指令執(zhí)行時(shí)序5.7.2 典型處理機(jī)結(jié)構(gòu)5.7.3 超標(biāo)量超流水線處理機(jī)性能5.7.4 三種處理機(jī)的性能比較5.7.1 指令執(zhí)行時(shí)序5.7.2 典型處理機(jī)結(jié)構(gòu)DEC公司的Alpha處理機(jī)為典型的超標(biāo)量超流水線結(jié)構(gòu)。主要由四個(gè)功能部件和兩個(gè)Cache組成:整數(shù)部件EBOX 浮點(diǎn)部件FBOX 地址部件ABOX 中央控制部件IBOX 指令Cache和數(shù)據(jù)Cache在EBOX內(nèi)還有多條專用數(shù)據(jù)通路,可以把運(yùn)算結(jié)果直接送到執(zhí)行部件。中央控制部件IBOX能夠同時(shí)完成: 同時(shí)讀出兩條指令; 同時(shí)對(duì)兩條指令進(jìn)行譯碼,并作相關(guān)性檢測; 如果資源和相關(guān)性允許,IBOX就把兩條指令同時(shí)發(fā)射給EBOX、ABOX和FBOX三個(gè)執(zhí)行部件中的兩個(gè)。指令流水線的控制方式: 采用順序發(fā)射亂序完成。在指令Cache中有一個(gè)轉(zhuǎn)移歷史表,實(shí)現(xiàn)條件轉(zhuǎn)移的動(dòng)態(tài)預(yù)測。Alpha 21064處理機(jī)共有三條指令流水線:(1)整數(shù)操作流水線為7個(gè)流水段

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論