標(biāo)量流水線技術(shù)_第1頁
標(biāo)量流水線技術(shù)_第2頁
標(biāo)量流水線技術(shù)_第3頁
標(biāo)量流水線技術(shù)_第4頁
標(biāo)量流水線技術(shù)_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

標(biāo)量流水線技術(shù)第一頁,共八十七頁,2022年,8月28日第4章標(biāo)量流水線技術(shù)4.1概述4.2標(biāo)量流水線工作原理4.3指令級流水線第二頁,共八十七頁,2022年,8月28日4.1概述4.1.1控制流及其改變4.1.2程序執(zhí)行過程中的重疊操作與先行控制第三頁,共八十七頁,2022年,8月28日4.1.1控制流及其改變

所謂控制流是指被執(zhí)行的指令序列的處理順序,其地址由程序計數(shù)器PC給出,一條接著一條地執(zhí)行。在一般情況下,PC的值是時間的單調(diào)函數(shù),如圖4.1(a)所示。但是當(dāng)遇上轉(zhuǎn)移類指令時,控制流將發(fā)生間斷,轉(zhuǎn)移到目標(biāo)地址后又順序執(zhí)行,PC中的值如圖4.1(b)所示。通常,改變程序順序執(zhí)行的因素有多種,常見的有以下4種。圖4.1程序計數(shù)器PC與時間t的關(guān)系

第四頁,共八十七頁,2022年,8月28日(1)轉(zhuǎn)移指令轉(zhuǎn)移指令可分為無條件轉(zhuǎn)移和條件轉(zhuǎn)移兩種類型,且有多條,都是把轉(zhuǎn)移目標(biāo)地址送入程序計數(shù)器PC中,然后又順序執(zhí)行,如圖4.1(b)所示。(2)過程調(diào)用與返回即執(zhí)行被調(diào)用的過程或子程序,其入口地址送入PC中;返回時,返回地址送入PC,另外還有嵌套和遞歸。

(3)協(xié)同程序協(xié)同程序與過程調(diào)用程序有所不同,它是被調(diào)用過程未必從頭開始執(zhí)行,而是從上一次返回的位置開始,如圖4.2所示。(4)中斷與自陷中斷是由外部事件引起,自陷是由CPU的內(nèi)部原因引起,CPU執(zhí)行中斷服務(wù)程序,執(zhí)行完后返回原來被中斷的程序。以上幾種情況都改變PC中的值,使控制流發(fā)生改變。圖4.2協(xié)同程序改變控制流第五頁,共八十七頁,2022年,8月28日4.1.2程序執(zhí)行過程中的重疊操作與先行控制

1.程序執(zhí)行過程中的重疊操作在計算機運行的過程中,指令的解釋方式可分為三種,即順序、重疊和流水,依據(jù)不同的解釋方式,可以產(chǎn)生不同的工作方式和過程。下面僅介紹順序解釋方式和重疊解釋方式,流水線方式將在第4.2節(jié)介紹。(1)順序解釋方式順序解釋是最簡單的一種方式,它是一條指令執(zhí)行完后再去解釋下一條指令。早期的計算機多采用這種方式,指令執(zhí)行過程分為取指令、分析(譯碼)和執(zhí)行三個階段,順序進行,其示意如圖4.3所示。圖4.3順序執(zhí)行方式

第六頁,共八十七頁,2022年,8月28日

若取指令、分析和執(zhí)行所用的時間(周期)相等,設(shè)為t,則順序解釋執(zhí)行n條指令所需要的時間T=3×n×t。如果各部分時間表示為t取指、t分析和t執(zhí)行,則順序執(zhí)行n條指令所用的時間為:

(2)重疊解釋方式是在兩條相鄰指令的解釋過程中,存在某些時段可以重疊進行,其示意如圖4.4所示。圖4.4重疊執(zhí)行方法

T=∑(t取i+t分i+t執(zhí)i)ni=1(4.1)第七頁,共八十七頁,2022年,8月28日圖4.5兩階段一次重疊工作方式圖(a)是一次重疊方式,執(zhí)行n條指令所用的時間為:T=(2n+1)t;圖(b)是二次重疊方式,執(zhí)行n條指令所用的時間為:

T=3t+(n-1)t=(n+2)t。

為實現(xiàn)重疊解釋方式,需要硬件支持,比如設(shè)置指令緩沖寄存器或稱指令隊列。又如程序與數(shù)據(jù)分別存儲,以便分別迅速讀取操作數(shù)。

若指令的解釋過程可分為兩個段,上述重疊解釋過程可如圖4.5所示。如果“分析”和“執(zhí)行”的時間相同,那么解釋執(zhí)行n條指令的時間為:

T=(n+1)t。第八頁,共八十七頁,2022年,8月28日2.先行控制

在上述重疊解釋方式中假設(shè)“分析”和“執(zhí)行”的時間相等,但是實際的解釋執(zhí)行過程中,“分析”和“執(zhí)行”的時間往往不相等,如圖4.6(a)所示,這樣解釋執(zhí)行n條指令的時間為:

T=t分1+∑[max(t分i,t執(zhí)i-1)]+t執(zhí)nni=2(4.2)圖4.6分析與執(zhí)行時間不相等和先行控制方式第九頁,共八十七頁,2022年,8月28日為解決重疊過程中的“空閑”,可采用先行控制技術(shù),使“分析”和“執(zhí)行”分別連續(xù)進行,如圖4.6(b)所示。這時,執(zhí)行n條指令所需要的時間為:ni=1T先行=t分1+∑t執(zhí)i(4.3)圖4.6分析與執(zhí)行時間不相等和先行控制方式第十頁,共八十七頁,2022年,8月28日

為了實現(xiàn)“分析”和“執(zhí)行”分別連續(xù)進行,8086微處理器把CPU分為總線接口部件和執(zhí)行部件,且設(shè)置一個指令隊列,可在執(zhí)行第k條指令時由總線接口部件預(yù)取第k+1、k+2甚至k+2條指令。

圖4.7先行控制邏輯

以上可見,先行控制技術(shù)實質(zhì)上是預(yù)取處理技術(shù)和緩沖技術(shù)的結(jié)合,緩沖部件一般采用先進先出寄存器,其個數(shù)稱為緩沖深度。先行控制邏輯如圖4.7所示,其中緩沖區(qū)的深度一般應(yīng)滿足以下關(guān)系:D取指棧≥D操作數(shù)≥D讀?!軩寫棧第十一頁,共八十七頁,2022年,8月28日4.2標(biāo)量流水線工作原理4.2.1標(biāo)量流水線工作原理4.2.2標(biāo)量流水線分類4.2.3流水線性能分析4.2.4流水線中的主要障礙4.2.5流水線的實現(xiàn)與控制4.2.6流水線的動態(tài)調(diào)度第十二頁,共八十七頁,2022年,8月28日4.2.1標(biāo)量流水線工作原理1.標(biāo)量流水線工作原理如果能把指令的執(zhí)行過程細分為五個部分,如圖4.8所示。這五個部分由相應(yīng)的硬件來實現(xiàn),因此也稱為五個子過程或狀態(tài),用Si表示。這樣,前一條指令只要走出第一子過程,就可以讀取下一條指令……。于是,構(gòu)成標(biāo)量流水線工作方式。

圖4.8流水過程示意圖

第十三頁,共八十七頁,2022年,8月28日

設(shè)每一子過程時間相同,指令流入,經(jīng)過五個子過程后從輸出端流出,若用二維坐標(biāo)表示,即可構(gòu)成如圖4.9所示時空圖,即空間與時間之間的二維關(guān)系圖。在理想情況下每經(jīng)一個時鐘周期指令向右移動一格,新的指令從左邊進入。經(jīng)過4個時鐘周期后五個部件全部工作,其中前4個時鐘周期稱為填入階段;以后,稱為填滿,即正常工作;最后,各條指令一一退出,稱為排空階段。若用m表示部件或空間段數(shù),整個時間可為兩個部分。m△t是第一條指令流出時間,即流出第一個結(jié)果的時間;以后(n-1)△t中,每經(jīng)一拍流出一個結(jié)果。圖4.9流水線各段組成與時空圖

第十四頁,共八十七頁,2022年,8月28日

2.流水線工作特點概括起來,流水線的工作特點主要有以下幾點:(1)一條流水線通常由多個流水段組成;(2)在每一個流水段有專門的功能部件,對指令進行某種加工處理;(3)流水線的工作一般分為三個階段,即建立(填入)、填滿和排空;(4)在理想情況下,各流水段所需要的時間是相等的,流水線填滿后每隔△t時間就會有一個結(jié)果流出流水線。第十五頁,共八十七頁,2022年,8月28日4.2.2標(biāo)量流水線分類

③處理機流水線是一種宏流水過程,其中每一個處理機完成某一專門的任務(wù),各處理機產(chǎn)生的結(jié)果存放到與下一個處理機共享存儲器中,如圖4.10所示。

圖4.10處理機流水線

從不同的角度來看,有不同的分類方式,大致有以下幾類。1.按照處理機分類按照處理機分類,流水線可以分為操作部件級、指令級和處理機級。①操作部件級流水線是按復(fù)雜的算術(shù)邏輯運算的過程構(gòu)成流水線,比如把浮點加法運算分成求階差、對階、尾數(shù)相加和結(jié)果規(guī)格化四個子過程。②指令級流水線是把一條指令的解釋執(zhí)行過程分成若干個子過程,比如前面所說的取指令、譯碼、執(zhí)行、訪存和寫回五個子過程。第十六頁,共八十七頁,2022年,8月28日2.按照功能分類

按功能可分為單功能流水線和多功能流水線兩種。單功能流水線是所有設(shè)備按照一種模式工作,僅完成一種功能;多功能流水線是指構(gòu)成流水線的設(shè)備可不同組合,在不同的時間完成不同功能。圖4.11所示是TI-ASC計算機的流水結(jié)構(gòu),可構(gòu)成多種流水線,比如定點加、浮點加、定點乘和浮點向量點積等。第十七頁,共八十七頁,2022年,8月28日圖4.11多功能流水線的多種連接

第十八頁,共八十七頁,2022年,8月28日

3.按照工作方式分類按工作方式可分為靜態(tài)和動態(tài)流水線。靜態(tài)流水線是在同一時間內(nèi)只能以一種方式工作。其結(jié)構(gòu)可以是單功能,也可以是多功能。其中多功能結(jié)構(gòu)的流水線在同一時間只能進行一種工作;在從一種功能轉(zhuǎn)換成另一種功能時流水線必須排空。一般不希望流水線功能頻繁切換。動態(tài)流水線則允許在同一時間內(nèi)將不同的功能段連接成不同的子流水線集,以完成不同的運算功能。顯然,動態(tài)流水線必定是多功能流水線;單功能流水線必定是靜態(tài)流水線。第十九頁,共八十七頁,2022年,8月28日4.按照連接方式分類

可分為線性流水線和非線性流水線。所謂線性流水線是指從輸入到輸出各功能部件只允許經(jīng)過一次,沒有反饋回路或者分支。非線性流水線是某些功能部件可能被反復(fù)使用,如圖4.12所示,S3的輸出可反饋到S2,S4的輸出可反饋到S1。顯然存在功能段使用沖突。

圖4.12非線性流水線示意圖

第二十頁,共八十七頁,2022年,8月28日流水線性能分析

目前,衡量流水線性能的技術(shù)指標(biāo)主要有三個,即吞吐率、效率和加速比。1.吞吐率Tp吞吐率是指單位時間內(nèi)處理機所能處理的任務(wù)數(shù)或者輸出的結(jié)果數(shù),可分為最大吞吐率和實際吞吐率。(1)最大吞吐率若以△ti表示通過流水線各功能段所用的時間,那么在流水線穩(wěn)定后可獲得的最大吞吐率可表示為:顯然,△ti最大的一段將成為流水線的瓶頸。如果段的△ti相差不大,則屬于正常流水線。一般需要采取一定的措施,使各段的△ti趨于一致。(4.4)Tpmax=1max(△ti)ni=1第二十一頁,共八十七頁,2022年,8月28日(2)流水線中的瓶頸如圖4.13(a)所示,由4個功能段構(gòu)成流水線,其中通過第1、2、4段所用的時間為△t,通過第3段所用的時間為3△t,則時空圖如圖4.13(b)所示。顯然,最大吞吐率將降為Tpmax=1/(3△t)。圖4.13帶瓶頸流水線及其消除時空圖第二十二頁,共八十七頁,2022年,8月28日(3)消除瓶頸影響的方法為消除瓶頸影響可采取相應(yīng)的措施,比如把第3段細分,使之成為3段,每段所用的時間近乎于△t,如圖4.13(c)所示。這樣,可使6個任務(wù)依次進入流水線,使最大吞吐率仍然保持為Tpmax=1/△t。圖4.13帶瓶頸流水線及其消除時空圖第二十三頁,共八十七頁,2022年,8月28日

也可采用空間重復(fù)因素,增設(shè)2個第3段,并列工作,如圖4.13(d)所示。這樣,連續(xù)的3個任務(wù)可分別通過S3a、S3b和S3c,其時空圖如圖4.13(e)所示??稍谝欢ǔ潭壬蠝p輕瓶頸引起的吞吐率下降。圖4.13帶瓶頸流水線及其消除時空圖續(xù)第二十四頁,共八十七頁,2022年,8月28日(4.5)Tp===nm△t+(n-1)△t1△t[1+(m-1)/n]Tpmax1+(m-1)/n(4.6)Sp====m△t+(n-1)△t1+(m-1)/nToTknm△tnmm+n-1m

(4)實際吞吐率任何一個流水線都存在填入和排空過程,因此實際吞吐率總是小于最大吞吐率。設(shè)m為流水線中功能段數(shù),從圖4.9可以看出,完成n個任務(wù)所用的時間為:T=m△t+(n-1)△t則實際吞吐率為:顯然,當(dāng)n>>m時,Tp→Tpmax。2.加速比Sp加速比是指執(zhí)行同一任務(wù)時不采用流水線技術(shù)所用的時間與采用流水線方式所用的時間之比。對于n個任務(wù),設(shè)有m段流水線。若不采用流水線,所用的時間為To,采用流水線后使用的時間為Tk,則加速比為:顯然,n>>m時,Sp→m,即最大加速比。m增大,加速比提高。第二十五頁,共八十七頁,2022年,8月28日E====n個任務(wù)占用時空區(qū)面積m段流水線總時空區(qū)面積m(m+n-1)△tnm△tnm+n-1Spm(4.7)

3.效率E效率是指流水線中各功能段的時間利用率,也就是各功能段被實際利用的時空區(qū)與各功能段所提供總的時空區(qū)面積之比。如圖4.9所示,效率可表示為:

圖4.9流水線各段組成與時空圖第二十六頁,共八十七頁,2022年,8月28日

圖4.14雙功能靜態(tài)流水線

【例4.1】流水線性能分析。設(shè)有A、B兩個向量,每個向量有4個元素,要求在如圖4.14所示的靜態(tài)加、乘雙功能流水線上計算,并求吞吐率、加速比和效率。第二十七頁,共八十七頁,2022年,8月28日

解:在流水線中,由功能段S1、S2、S3、S4、S6構(gòu)成乘法流水線,S1、S5、S6構(gòu)成加法流水線。設(shè)經(jīng)過每一個功能段的時間均為△t,流水線的輸出可直接返回輸入端或者暫存到緩沖寄存器中,流水線功能切換時間忽略不計。為了在最短的時間內(nèi)完成上述運算,可讓流水線先進行兩個向量中4個元素的加法運算,即求(a0+b0)、(a1+b1)、(a2+b2)、(a3+b3);然后切換成乘法功能,再按照[(a0+b0)×(a1+b1)]×[(a2+b2)×(a3+b3)]的順序進行三次乘法運算。根據(jù)分析,可畫出流水線的時空圖,如圖4.15所示。從圖中可以看出,在17△t時間內(nèi)輸出了7個結(jié)果,因此實際吞吐率為:Tp=7/17△t順序操作,則需要作4次加法運算和3次乘法運算。一次加法運算需要3△t,一次乘法運算需要5△t,總共需要To=4×3△t+3×5△t=27△t。這樣加速比為:Sp=To/Tp=27△t/17△t=1.88流水線的效率可用陰影面積除以全部6個狀態(tài)段的總時空面積而求得:E=(3×4△t+5×3△t)/(6×17△t)=27/102=26.4%第二十八頁,共八十七頁,2022年,8月28日

圖4.15流水線時空圖舉例

第二十九頁,共八十七頁,2022年,8月28日4.2.4流水線中的主要障礙

在實際應(yīng)用中,往往有這樣或者那樣的原因使流水線不能暢通,概括起來有三種:資源相關(guān)、數(shù)據(jù)相關(guān)和控制相關(guān)。仍設(shè)流水線有五個功能段S1~S5(IF、ID、EXE、MEM、WB)。但不同指令在流過時對流水線的使用不同。下面以ALU、LOAD和STORE、BRANCH指令為例,予以說明。(1)ALU類指令在S1取出,S2譯碼,S3執(zhí)行,S4不進行任何操作,在S5把執(zhí)行結(jié)果寫回目標(biāo)寄存器堆。(2)傳送類指令LOAD和STORE在S1取出,S2譯碼及讀寄存器堆,S3計算有效地址,S4訪問存儲器:LOAD指令在S4讀存儲器,并送數(shù)據(jù)寄存器,在S5把讀出的數(shù)據(jù)寫回寄存器堆;STORE指令僅在S4把數(shù)據(jù)寄存器中的數(shù)據(jù)寫入目標(biāo)存儲器單元。第三十頁,共八十七頁,2022年,8月28日

(3)分支轉(zhuǎn)移類BRANCH在S1取出,S2譯碼并讀寄存器堆,S3生成轉(zhuǎn)移目標(biāo)地址,并形成條件碼,S4判斷條件,若成立,則將轉(zhuǎn)移地址送入程序計數(shù)器PC;S5不進行任何操作。三類指令對各功能段的占用如表4.1所示。表4.1三類指令對流水線的使用指令功能段)ALU指令LOAD/STOREBRANCHIf(S1)取指取指取指ID(S2)譯碼

讀寄存器堆譯碼

讀寄存器堆譯碼

讀寄存器堆EX(S3)執(zhí)行計算有效地址計算轉(zhuǎn)移目標(biāo)地址

設(shè)置條件碼MEM(S4)-訪存(讀或?qū)懀┤魲l件成立

轉(zhuǎn)移目標(biāo)地址送PCWB(S5)結(jié)果寫回寄存器堆讀出數(shù)據(jù)寫入寄存器堆-第三十一頁,共八十七頁,2022年,8月28日

1.資源相關(guān)也稱為資源或結(jié)構(gòu)沖突。如圖4.16所示,有5條指令相繼進入流水線,其中第1條指令是存儲器讀LOAD。在時鐘周期T4第1條指令執(zhí)行到MEM段,和第i+3條指令的IF段發(fā)生沖突,即資源相關(guān)。

圖4.16兩條指令同時訪問存儲器沖突

第三十二頁,共八十七頁,2022年,8月28日圖4.17用停頓的方法解決存儲器沖突為了解決沖突,故在取第i+3條指令時暫停一拍,如圖4.17所示。第三十三頁,共八十七頁,2022年,8月28日2.數(shù)據(jù)相關(guān)(1)數(shù)據(jù)相關(guān)往往發(fā)生在兩條指令執(zhí)行中,后一條指令所需要的操作數(shù)正好是前一條指令執(zhí)行的結(jié)果。如有以下兩條指令,其執(zhí)行過程如圖4.18所示。ADDR1,R2,R3;R2+R3→R1SUBR4,R1,R5;R1-R5→R4SUB指令需要在第3拍使用前一條ADD的執(zhí)行結(jié)果,而ADD指令的結(jié)果要在第5拍時才能寫入寄存器R1中。即讀超前于寫(RAW)。圖4.18數(shù)據(jù)相關(guān)沖突

第三十四頁,共八十七頁,2022年,8月28日圖4.19加法運算結(jié)果定向傳送(2)解決辦法可采用“定向傳送”技術(shù),也稱為旁路技術(shù)或相關(guān)專用通路技術(shù)。如圖4.19所示,第一條指令A(yù)DD需在WB段才能把結(jié)果寫回到R1中,而后繼指令中除了XOR之外都要在此之前使用。若采用停頓法,需停頓3拍。而ADD指令則是在EX段就已產(chǎn)生了運算結(jié)果,因此可直接傳送給后續(xù)的SUB、AND和OR指令的EX段。第三十五頁,共八十七頁,2022年,8月28日

定向傳送示意如圖4.20(a)所示,定向傳送的實現(xiàn)如圖4.20(b)所示,即增加旁路,實現(xiàn)運算結(jié)果的定向傳送。當(dāng)然,這種方式將增加電路的復(fù)雜性。

圖4.20旁路定向傳送

第三十六頁,共八十七頁,2022年,8月28日圖4.19加法運算結(jié)果定向傳送在有些計算機中把時鐘周期分為前半周期和后半周期。讀操作一般在后半周期進行,寫操作一般在前半周期進行。這樣,對于圖4.19所示的指令OR的定向傳送可以取消,如圖4.21所示。第三十七頁,共八十七頁,2022年,8月28日

圖4.21減少定向傳送措施

第三十八頁,共八十七頁,2022年,8月28日

(3)數(shù)據(jù)相關(guān)類型數(shù)據(jù)相關(guān)有三種類型,即RAW、WAR、WAW:①RAW:是指令j試圖在指令i寫入寄存器之前讀取寄存器中的數(shù)據(jù),這樣指令j讀出的就是其原來的內(nèi)容,簡稱為讀超前于寫。②WAR:是指令j試圖在指令i讀出寄存器中的數(shù)據(jù)之前寫入寄存器,這樣指令i讀出的就是寄存器中的新內(nèi)容,簡稱為寫超前于讀。③WAW:是指令j試圖在指令i寫入寄存器之前寫入寄存器,這樣兩條指令的寫入過程顛倒,簡稱為j寫超前于i寫。(4)裝入延遲在RISC機中,執(zhí)行指令LOAD存在一定的延遲,稱為裝入延遲。如圖4.22(a)所示,指令LOAD在MEM段(S4)才能把數(shù)據(jù)從存儲器中讀出,而指令A(yù)DD則在EX段就要使用。

圖4.22(a)RISC機中的裝入延遲第三十九頁,共八十七頁,2022年,8月28日圖4.22(b)裝入延遲引起的停頓

由于是訪問存儲器,尚不能定向傳送,多采用停頓的方法,如圖4.22(b)所示,稱為流水線裝入延遲或者“空泡”。第四十頁,共八十七頁,2022年,8月28日

3.控制相關(guān)(1)控制相關(guān)也稱為控制轉(zhuǎn)移沖突,主要由轉(zhuǎn)移類指令引起。統(tǒng)計表明,一般程序中轉(zhuǎn)移指令占1/4。轉(zhuǎn)移發(fā)生時,流水線受到破壞,程序計數(shù)器PC指向新的指令地址。由于一般在MEM段的末尾才能使PC值改變,于是需停頓3個時鐘周期,如圖4.23所示。

圖4.23控制相關(guān)引起的停頓

第四十一頁,共八十七頁,2022年,8月28日

【例4.2】設(shè)在某一程序中,有25%的轉(zhuǎn)移指令,其中2/3轉(zhuǎn)移發(fā)生,試計算執(zhí)行一條指令的平均時鐘周期。

解:設(shè)執(zhí)行一條指令的平均時鐘周期為Pi,則Pi=1×75%+1×25%×[1×1/3+2/3×(3+1)]=1.5(周期)顯然,使流水線的性能下降33.3%。(2)減少控制相關(guān)對流水線性能影響的措施常有以下幾種。①盡早判斷轉(zhuǎn)移發(fā)生和生成轉(zhuǎn)移地址。把原在MEM段進行目標(biāo)地址的計算提前到ID段進行,并在條件成立時送入程序計數(shù)器PC。這樣,可使流水線頓時間由3拍減少到1拍。②預(yù)取轉(zhuǎn)移成功和不成功兩個方向上的目標(biāo)指令。設(shè)兩個指令隊列,預(yù)取兩個隊列。③加快和提前形成條件碼。比如乘除法運算的結(jié)果符號可根據(jù)兩操作數(shù)的符號提前產(chǎn)生。第四十二頁,共八十七頁,2022年,8月28日④加快短循環(huán)程序的處理。對于反復(fù)執(zhí)行的短循環(huán)程序可以全部取出,放入指令緩沖器中,以提高處理速度。⑤提高轉(zhuǎn)移方向的預(yù)測率預(yù)測方法可用狀態(tài)圖表示,如圖4.25所示。圖4.25轉(zhuǎn)移預(yù)測狀態(tài)圖第四十三頁,共八十七頁,2022年,8月28日其中使用兩位二進制數(shù)表示是否轉(zhuǎn)移,11和10表示預(yù)測轉(zhuǎn)移發(fā)生狀態(tài),00和01表示預(yù)測轉(zhuǎn)移不發(fā)生狀態(tài)。ⅰ

如果狀態(tài)標(biāo)志處在11狀態(tài),即預(yù)測轉(zhuǎn)移發(fā)生,這時如發(fā)生轉(zhuǎn)移,原狀態(tài)保持;若不發(fā)生轉(zhuǎn)移,則低位清0,狀態(tài)標(biāo)志變?yōu)?0,仍是預(yù)測轉(zhuǎn)移發(fā)生狀態(tài)。ⅱ

在10狀態(tài),如果發(fā)生轉(zhuǎn)移,則低位置1,狀態(tài)標(biāo)志變?yōu)?1;若不發(fā)生轉(zhuǎn)移,則高位清0,狀態(tài)標(biāo)志變?yōu)?0。ⅲ

在00狀態(tài),如果不發(fā)生轉(zhuǎn)移,原狀態(tài)保持;若發(fā)生轉(zhuǎn)移,則低位置1,狀態(tài)標(biāo)志變?yōu)?1,仍預(yù)測轉(zhuǎn)移不發(fā)生。ⅳ

在01狀態(tài),如果發(fā)生轉(zhuǎn)移,則高位置1,狀態(tài)標(biāo)志變?yōu)?1;若不發(fā)生轉(zhuǎn)移,則低位清0,狀態(tài)標(biāo)志變?yōu)?0。統(tǒng)計表明,預(yù)測準(zhǔn)確率達83%。第四十四頁,共八十七頁,2022年,8月28日⑥

采用延遲轉(zhuǎn)移技術(shù)如圖4.24所示,在執(zhí)行轉(zhuǎn)移指令時流水線停頓,即轉(zhuǎn)移延遲。延遲時間稱為延遲槽??扇∵m當(dāng)?shù)闹噶钤谘舆t遭執(zhí)行,即填補延遲槽。常用方法有三種,如圖4.26所示。

圖4.26采用延遲轉(zhuǎn)移技術(shù)的3種方法

第四十五頁,共八十七頁,2022年,8月28日在圖4.26(a)中,是用條件轉(zhuǎn)移指令I(lǐng)F的前一條指令A(yù)DDR1,R2,R3填補到延遲槽。在圖4.26(b)中,是用轉(zhuǎn)移目標(biāo)處的第一條指令SUBR4,R5,R6填補延遲槽,而原來位置的指令仍然保留。在圖4.26(c)中,是用非轉(zhuǎn)移方向的指令填補延遲槽。前提是不發(fā)生數(shù)據(jù)相關(guān)。實踐表明,第一種方案較好于其它兩種。第四十六頁,共八十七頁,2022年,8月28日流水線的實現(xiàn)與控制

1.流水線中的中斷處理在早期的流水線計算機中,只對中斷的現(xiàn)場進行不精確保護,即對進入流水線的指令處理完畢,再去響應(yīng)中斷請求。顯然,此時已不再是中斷請求時的現(xiàn)場。這對于外部設(shè)備的中斷請求可能影響不大,但是對于陷阱和內(nèi)部中斷影響就大了?,F(xiàn)在采用的是精確斷點保護法,即使用大量的后援寄存器,以使進入流水線的所有指令的現(xiàn)場都得到保護和恢復(fù)。2.非線性流水線中功能段的競爭與調(diào)度對于非線性流水線,存在前饋和反饋。若不能很好地調(diào)度,就會出現(xiàn)兩條指令或任務(wù)爭用某一功能段。若要不發(fā)生沖突,就要相隔適當(dāng)?shù)臅r間調(diào)度下一條指令或任務(wù)進入流水線。下面借助于預(yù)約表進行分析。第四十七頁,共八十七頁,2022年,8月28日

設(shè)有一個非線性、單功能流水線P,由K個功能段組成,每一個任務(wù)流過流水線需要的時鐘周期數(shù)為N(t1,t2,…,tn),縱向表示功能段,橫向表示時鐘周期,可畫出如圖4.27所示的預(yù)約表。圖中的每一行表示P的一個功能段,每一列表示一個時鐘周期,總列數(shù)表示任務(wù)從流入到流出所經(jīng)過的總時鐘周期數(shù)。若某任務(wù)在某一時刻ti使用功能段Si,用“√”

表示。一行中有多個“√”,表示重復(fù)使用該功能段。根據(jù)預(yù)約表很容易看出第一段間隔數(shù)為8,第二段間隔數(shù)為1,5,6等。把所有行的間隔節(jié)拍數(shù)都列出來,可構(gòu)成一個間隔禁止表F(Forbiddenlist),即F={1,5,6,8},表示禁止相隔這些拍數(shù)調(diào)度。圖4.27預(yù)約表

第四十八頁,共八十七頁,2022年,8月28日

可用N-1位的二進制向量C=(Cn-1,Cn-2,……,C2,C1)表示,稱為沖突向量(Collisionvector)。其中第i位的狀態(tài)表示與當(dāng)前任務(wù)相隔i拍調(diào)入下任務(wù)時,是否發(fā)生沖突。0表示不沖突,1表示沖突。沖突向量取N-1位是因為經(jīng)過N拍后任務(wù)就流出流水線,又由于位數(shù)N是最大禁止間隔,因此Cn-1位總是1。根據(jù)上述禁止表F,可形成相應(yīng)的沖突向量(10110001),稱為原始沖突向量。第2,3,4,7位為0,可與當(dāng)前任務(wù)相隔2拍、3拍、4拍或7拍調(diào)入下一任務(wù)。下一任務(wù)進入流水線后,將產(chǎn)生新的沖突向量。然后再根據(jù)新的沖突向量確定第三個任務(wù)何時調(diào)入。第四十九頁,共八十七頁,2022年,8月28日

如何形成新的沖突向量呢?任何一個任務(wù)在流水線中每經(jīng)一拍向前推進一段,相當(dāng)于原始沖突向量右移一位,左邊補0。這樣,就形成了新的沖突向量。例如選擇第二個任務(wù)在2拍后調(diào)入流水線,則原始沖突向量應(yīng)當(dāng)邏輯右移兩位,即(00101100)。為使第三個任務(wù)調(diào)入后不與前兩個任務(wù)發(fā)生沖突,新的沖突向量應(yīng)當(dāng)是第二個任務(wù)的當(dāng)前沖突向量(00101100)與第二個任務(wù)的初始沖突向量(10110001)按位“或”,結(jié)果為(10111101)。按照這一方式,選擇各種可能的間隔拍數(shù)調(diào)入新的任務(wù),并產(chǎn)生新的沖突向量,一直進行到不再產(chǎn)生新的沖突向量為止。第五十頁,共八十七頁,2022年,8月28日

需要注意的是,在產(chǎn)生新的沖突向量時每次右移后的位向量應(yīng)與原始沖突向量按位“或”。由此可以畫出用沖突向量表示的流水線狀態(tài)轉(zhuǎn)移圖,如圖4.28所示。圖4.28流水線狀態(tài)圖第五十一頁,共八十七頁,2022年,8月28日表4.2各調(diào)度方案平均間隔拍數(shù)調(diào)度策略平均間隔拍數(shù)(3,4)(4,3)(2,7)(2,2,7)(3,4,3,7)(3,4,7)(4,3,7)(3,7)(4,7)(7)3.503.504.503.674.254.674.675.005.507.00

采用圖中任何一個閉合回路進行調(diào)度,都不會發(fā)生功能部件沖突。但需找到一個最佳策略,以便獲得最高吞吐率。其方法是計算出每一種調(diào)度法的平均間隔拍數(shù),如表4.2所示。然后,找出最小的一個。這里,平均間隔為3.5拍的調(diào)度策略有兩種,即(3,4)和(4,3)。第五十二頁,共八十七頁,2022年,8月28日4.2.6流水線的動態(tài)調(diào)度

靜態(tài)調(diào)度主要借助于軟件對指令的執(zhí)行順序進行調(diào)整,目前已經(jīng)得到廣泛應(yīng)用。動態(tài)調(diào)度起始更早,但是直到20世紀(jì)后期才得以發(fā)展。它主要是通過硬件重新安排指令的執(zhí)行順序,以減少流水線中的停頓。有以下優(yōu)點:①能處理在編譯時難以發(fā)現(xiàn)的相關(guān);②能簡化編譯程序;③使代碼具有可移植性。其缺點主要是硬件電路復(fù)雜。目前主要有兩種方法,一種是集中式動態(tài)調(diào)度,另一種是分布式動態(tài)調(diào)度。第五十三頁,共八十七頁,2022年,8月28日

1.集中式動態(tài)調(diào)度集中式動態(tài)調(diào)度是依賴硬件在程序運行的過程中對可能出現(xiàn)的相關(guān)進行預(yù)測,從而保證流水線中的各個功能部件能最大限度地重疊工作,其示意如圖4.29所示。

圖中主要設(shè)置了一個狀態(tài)寄存器RF和一個記錄控制器(也稱為記分牌),用來對各功能部件的工作狀態(tài)、進入流水線中的各條指令的狀態(tài)、圖4.29集中式動態(tài)調(diào)度使用的源寄存器和目標(biāo)寄存器的狀況進行集中統(tǒng)一的記錄和調(diào)度。早期的CDC6600計算機采用的就是這一技術(shù),現(xiàn)在的RISC超級標(biāo)量機很多也采用與之類似的措施,以提高流水線的性能。第五十四頁,共八十七頁,2022年,8月28日2.分布式動態(tài)調(diào)度是把調(diào)度控制分配到各功能部件上。早期的IBM360/91采用了這一技術(shù),其示意如圖4.30所示。其中每一個浮點數(shù)寄存器FLR設(shè)置一個“忙”標(biāo)志,以表示指令間所用的數(shù)據(jù)是否會發(fā)生沖突。其浮點運算器主要包括以下部件。(1)運算器:由相互獨立的加法器和乘除法器組成。(2)保存站:在加法器中有三個A1~A3,在乘除法器中有兩個M1~M2,當(dāng)兩個數(shù)據(jù)都到齊后,若運算器空閑,立即進行運算。每一個保存站都有地址,稱為站號。保存站與浮點操作數(shù)緩沖寄存器FLB統(tǒng)一編址,如圖3.30所示。(3)指令處理部件:也稱為浮點操作棧,用來存放取出的指令,經(jīng)譯碼產(chǎn)生控制信號,送往相應(yīng)的部件。(4)浮點數(shù)據(jù)預(yù)取緩沖器FLB:暫存存儲器中預(yù)取出來的浮點數(shù),作為源操作數(shù)。(5)浮點數(shù)據(jù)寄存器FLR:作為另一源操作數(shù);或者存放運算結(jié)果或中間結(jié)果,即目標(biāo)寄存器。各寄存器有一個“忙”標(biāo)志,其中“1”表示寄存器正被使用。另外,每個寄存器設(shè)有“站號標(biāo)記”,表示數(shù)據(jù)由何而來。該組寄存器表示為F0~F7。(6)數(shù)據(jù)存儲緩沖器SDB:用來暫存欲存入存儲器的數(shù)據(jù),也設(shè)有站號,表示數(shù)據(jù)由何而來。(7)公用數(shù)據(jù)總線CDB:用來連接上述各個部件,傳送數(shù)據(jù)。第五十五頁,共八十七頁,2022年,8月28日圖4.30IBM360/91流水線的分布式動態(tài)調(diào)度示意圖

第五十六頁,共八十七頁,2022年,8月28日F0置忙

M1:源1站號置0001源2站號置0010F0置1000A1:源1站號置0011源2站號置0100F0置1010S1:LDF0,F(xiàn)LB1F0←0001

S2:MDF0,F(xiàn)LB2

S3:STDF0,AC1站←1000S4:LDF0,F(xiàn)LB3F0站←0011S5:ADDF0,F(xiàn)LB4第五十七頁,共八十七頁,2022年,8月28日

這種調(diào)度方法是把數(shù)據(jù)的傳送控制分派到各個單元的站號的設(shè)置上,即分布式動態(tài)調(diào)度方式。其特點可概括為以下幾點。(1)通過公用數(shù)據(jù)總線把數(shù)據(jù)直接傳送到所需要的部件,減少了流水線中的停頓周期。(2)通過加法器保存站和乘除法保存站,可緩解資源使用中沖突的機會。(2)通過修改站號實現(xiàn)分布式動態(tài)調(diào)度,可消除WAR和WAW數(shù)據(jù)相關(guān)的可能性。(3)通過對FLR寄存器“忙”標(biāo)志的判斷,可檢查是否存在RAW數(shù)據(jù)相關(guān)。

第五十八頁,共八十七頁,2022年,8月28日圖4.31轉(zhuǎn)移目標(biāo)緩沖器

3.硬件動態(tài)預(yù)測轉(zhuǎn)移法是由轉(zhuǎn)移目標(biāo)緩沖器BTB(Branchtargetbuffer)來實現(xiàn)。BTB由高速存儲器或者寄存器堆組成,按內(nèi)容訪問,圖4.31所示。第五十九頁,共八十七頁,2022年,8月28日

其中存放轉(zhuǎn)移指令的地址(即PC值)、轉(zhuǎn)移目標(biāo)地址和2位狀態(tài)標(biāo)志。標(biāo)志位按照圖4.25設(shè)置,用于轉(zhuǎn)移預(yù)測。

圖4.25轉(zhuǎn)移預(yù)測狀態(tài)圖

遇到轉(zhuǎn)移指令時,用PC值與BTB中的內(nèi)容進行比較。若有相符合內(nèi)容,則判斷標(biāo)志位,以確定是否取出轉(zhuǎn)移目標(biāo)地址。若轉(zhuǎn)移條件成立,則根據(jù)取出的目標(biāo)地址執(zhí)行程序;若轉(zhuǎn)移條件不成立,則取消本次操作,并修改狀態(tài)標(biāo)志位。第六十頁,共八十七頁,2022年,8月28日4.3指令級流水線4.3.1指令級流水線4.3.2超級標(biāo)量流水線4.3.3超長指令字4.3.4展開循環(huán)體后調(diào)度4.3.5軟件流水法4.3.6超級流水機舉例第六十一頁,共八十七頁,2022年,8月28日4.3.1指令級流水線

流水線可分為粗粒度和細粒度兩種類型,其中細粒度流水線指的就是指令級流水線。20世紀(jì)80年代發(fā)展起來的RISC機在指令級流水線的開發(fā)中取得了很大的成就,它的目標(biāo)是使CPI達到1。新一代RISC機還試圖使CPI小于1。指令級流水線的并行性常用并行度來衡量,是指在不存在相關(guān),可同時并行執(zhí)行的指令的條數(shù)。下面舉例說明。

第六十二頁,共八十七頁,2022年,8月28日【例4.2】分析下面兩個程序段的并行度。程序段1程序段2LOADR1,M[R7]ADDR2,R1,1ADDR3,R3,1SUBR4,R3,R2FPMULF3,F(xiàn)3,F(xiàn)4STOREM[R4],R5

解:由于在程序段1中,3條指令所使用的數(shù)據(jù)地址不存在相關(guān),因此可并行執(zhí)行,其并行度為3。而在程序段2中,ADD指令的目標(biāo)寄存器是R2,而在SUB指令中R2是源操作數(shù),存在RAW相關(guān);同時,在SUB指令中R4是目標(biāo)寄存器,而在STORE指令中R4作為基地址寄存器,也是一種RAW相關(guān)。因此,在程序段2中3條指令只能順序執(zhí)行,即并行度為1。目前在指令級流水線中,主要使用的方法有超級標(biāo)量流水線法和超長指令字法。第六十三頁,共八十七頁,2022年,8月28日4.3.2超級標(biāo)量流水線

1.基本概念在理想的流水線中,每一個時鐘周期可啟動一條指令。執(zhí)行過程分為4個階段,理想流水線的示意如圖4.32所示。在超級標(biāo)量流水線中,人們希望在一個時鐘周期內(nèi)啟動多條指令。如圖4.33所示同時啟動了3條指令,因此并行度為3。圖4.32理想流水線圖4.33每拍啟動三條指令第六十四頁,共八十七頁,2022年,8月28日

圖4.34每1/2拍或每1/3拍啟動一條或三條指令也可以每1/2周期或者每1/3周期啟動一條指令,如圖4.34(a)所示每1/2周期啟動一條指令,并行度為2。還可以每1/2周期或者1/3周期啟動多條指令,如圖4.34(b)所示每1/3周期啟動了3條指令,其并行度為9。第六十五頁,共八十七頁,2022年,8月28日

圖4.37超長指令字(VLIW)

另外,也可以通過超長指令字實現(xiàn)每個時鐘周期完成多個操作,如圖4.37所示。第六十六頁,共八十七頁,2022年,8月28日2.超級標(biāo)量機的組成特點在超級標(biāo)量流水線計算機中要實現(xiàn)一拍完成多個操作,就必須有相應(yīng)的功能部件予以支持。如圖4.35(a)所示,只有一個ALU,每一拍只能進行一種操作,即啟動一條指令。如圖4.35(b)提供一個ALU和一個浮點運算器FP,可在一拍中進行兩種操作,即啟動兩條指令。圖中I-Cache表示指令高速緩沖存儲器,RF表示寄存器堆。

圖4.35超級標(biāo)量機多執(zhí)行部件第六十七頁,共八十七頁,2022年,8月28日

圖4.36超級標(biāo)量機典型結(jié)構(gòu)3.超級標(biāo)量機的典型結(jié)構(gòu)圖4.36所示是一種超級標(biāo)量機的典型結(jié)構(gòu),由存儲部件、ALU部件及控制部件組成。第六十八頁,共八十七頁,2022年,8月28日

程序執(zhí)行時同時取出兩條指令,分別送相應(yīng)的譯碼器。譯碼后,根據(jù)狀態(tài)記錄部件中記錄的功能部件與寄存器使用情況,確定哪些指令可以送入執(zhí)行部件中同時執(zhí)行;有關(guān)寄存器和執(zhí)行部件的狀態(tài)可能發(fā)生變化,送狀態(tài)記錄部件,供下一次判斷使用。即根據(jù)狀態(tài)記錄部件中記錄的相關(guān)信息來確定多條指令可否同時被調(diào)度和執(zhí)行。自20世紀(jì)80年代末,超級標(biāo)量機陸續(xù)問世,比如Intel公司的i860、IBM公司的RS6000以及Motorola公司的88110等。在一個周期內(nèi)可啟動2~4條指令。但是在實際運行時,一個時鐘周期啟動的指令條數(shù)往往小于IPC(Instructionpercycle)的值。主要特點:①配置有多個性能不同的處理部件,采用多條流水線并行處理。②能同時對多條指令進行譯碼,并根據(jù)狀態(tài)記錄部件中記錄的狀態(tài)將可執(zhí)行指令送入相應(yīng)的執(zhí)行部件。③通過硬件實現(xiàn)多條指令的調(diào)度,即用硬件資源重復(fù)來實現(xiàn)空間上的并行操作。第六十九頁,共八十七頁,2022年,8月28日4.3.3超長指令字1.超長指令字超長指令字VLIW(Verylonginstructionword)是在20世紀(jì)80年代初由美國耶魯大學(xué)的Fisher教授首先提出來的。它的一條指令很長可達上百位,甚至上千位,主要在于減少訪存次數(shù),如圖4.37所示在一個周期完成多個操作。

圖4.37超長指令字(VLIW)

特點:單一控制器,每個周期啟動一條指令。在其內(nèi)部,一條超長指令字被分成多個控制字段,獨立控制一個功能部件。第七十頁,共八十七頁,2022年,8月28日2.超長指令字計算機的組成原理

超長指令字計算機的結(jié)構(gòu)示意如圖4.38所示,包含兩個存儲器讀/寫部件、一個浮點加法部件和一個浮點乘法部件。所有功能部件均由統(tǒng)一的時鐘信號驅(qū)動,根據(jù)超長指令的各個控制字段工作。圖中包括存/取1、存/取2、浮點加、浮點乘及其相關(guān)的數(shù)據(jù)通路,可同時進行兩路存儲器訪問、浮點加和浮點乘操作。這種計算機是在編譯時處理可能出現(xiàn)的數(shù)據(jù)相關(guān)和資源相關(guān),因此硬件電路比較簡單。而且,在編譯階段完成超長字指令中多個可并行執(zhí)行的操作的調(diào)度。圖4.38超長指令字計算機結(jié)構(gòu)示意圖第七十一頁,共八十七頁,2022年,8月28日表4.3順序執(zhí)行序列源代碼操

作需用周期C=A+BLOADALOADBC=A+BSTOREC1111K=I+JLOADILOADJK=I+JSTOREK1111L=M-KLOADML=M-KSTOREL111Q=C×KQ=C×KSTOREQ21合計14個周期3.超長指令字的生成設(shè)有以下賦值運算:C=A+BK=I+JL=M-KQ=C×K若按照順序操作,所使用的指令序列如表4.3所示,共需要14個周期。從中找出不存在任何相關(guān)的操作同時進行,即可得到如表4.4所示的并/串行操作序列。這樣,每一行可構(gòu)成一個超長字指令,編譯時可把13條指令壓縮成6條,僅需要6個周期即可完成。表4.4并行操作序列周期操

作1LOADALOADB2LOADILOADJC=A+B3LOADMSTORECK=I+J4STOREKL=M-KQ=C×K5STOREL6STOREQ第七十二頁,共八十七頁,2022年,8月28日

4.VLIW壓縮調(diào)度技術(shù)上述壓縮采用的是表調(diào)度法,而且是一種局部壓縮調(diào)度法。目前常用的壓縮調(diào)度方法可分為局部壓縮和全局壓縮。(1)局部壓縮局部壓縮是在小范圍內(nèi)進行,即一個基本的程序塊,僅有一個入口和一個出口。(2)全局壓縮全局壓縮允許代碼在基本程序塊之間移動。當(dāng)然,這種移動必須保證各個基本程序塊原語義不變。目前全局壓縮有三種方式,即路徑調(diào)度、滲透調(diào)度和軟件流水。①路徑調(diào)度法是在編譯時把代碼劃分為若干不相交的子集,稱之為路徑,然后選擇執(zhí)行概率最高的路徑作為主路徑。對主路徑采用表調(diào)度法進行壓縮,且允許代碼在一定約束條件下在基本塊之間移動。這種方式可能犧牲非主路徑的性能,以獲得主路徑的最佳效果。但是非主路徑需要進行補償。第七十三頁,共八十七頁,2022年,8月28日

圖4.39表示沿主路徑壓縮及補償?shù)氖疽?。在圖4.39中,(a)的陰影框表示主路徑,(b)表示壓縮后對非主路徑造成的影響,(c)表示補償,其中R表示重聚補償,S表示分裂補償。補償?shù)木唧w過程如圖4.40所示。圖4.39沿主路徑壓縮與補償示意圖

第七十四頁,共八十七頁,2022年,8月28日在圖4.40中,是對主路徑進行調(diào)度后而進行的補償。其中圖(a)是用第一條指令填補if語句的延遲槽,而對if語句進行的分裂補償。圖(b)是用第二條指令填補乘法語句的延遲槽,而對乘法指令進行重聚補償。圖4.40路徑調(diào)度與補償

第七十五頁,共八十七頁,2022年,8月28日②滲透調(diào)度法(Percolationscheduling)是通過一系列語義的等價變換,把操作不斷地推向前進,即滲透。滲透后把屬于不同基本塊的操作最大限度地重疊起來。不是根據(jù)轉(zhuǎn)移分支的概率選擇操作,而是設(shè)法讓后續(xù)的操作近早執(zhí)行。具體的實施方法,請參閱高級編譯技術(shù)的有關(guān)章節(jié)。③軟件流水法(Softwarepipelining)主要是加快循環(huán)程序的執(zhí)行,在4.3.5節(jié)介紹。

第七十六頁,共八十七頁,2022年,8月28日4.3.4展開循環(huán)體后調(diào)度

展開循環(huán)體后調(diào)度是在編譯時多次展開循環(huán)體,然后在程序語義保持不變的前提下對指令序列重新排列,以提高流水線的并行度。下面舉例說明:設(shè)有以下循環(huán)體程序段,為存儲器中的某一向量加上F2中的一個指定的標(biāo)量值。

LOOP:LDF0,0(R1);F0←M[(R1)+0],讀向量元素ADDDF4,F(xiàn)0,F(xiàn)2;F4←(F0)+(F2)SD0(R1),F(xiàn)4;M[(R1)+0]←F4,存向量元素SUBR1,R1,#8;R1←(R1)-8,將指針減8BNEZR1,LOOP;若(R1)≠0,則轉(zhuǎn)移到LOOP第七十七頁,共八十七頁,2022年,8月28日

設(shè)浮點加法需要3個周期,寄存器整型運算需要1個周期,分支指令需要2個周期,讀存儲器需要2個周期,寫存儲器時只要送入存儲緩沖器即可,因此僅1個周期。為了使流水線正確工作,須插入等待周期,用STALL表示:LOOP:LDF0,0(R1);F0←M[(R1)+0],讀向量元素STALL;停頓ADDDF4,F(xiàn)0,F(xiàn)2;F4←(F0)+(F2)STALLSTALLSD0(R1),F(xiàn)4;M[(R1)+0]←F4,存向量元素SUBR1,R1,#8;R1←(R1)-8,將指針減8BNEZR1,LOOP;若(R1)≠0,則轉(zhuǎn)移到LOOPSTALL需要9個周期。

第七十八頁,共八十七頁,2022年,8月28日

1.未展開循環(huán)體調(diào)度對循環(huán)體重新調(diào)度,僅需6個周期完成。LOOP:LDF0,0(R1);F0←M[(R1)+0],讀向量元素STALL;裝載停頓ADDDF4,F(xiàn)0,F(xiàn)2;F4←(F0)+(F2)SUBR1,R1,#8;R1←(R1)-8,將指針減8BNEZ

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論