




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章
高級(jí)流水線與指令級(jí)并行性
第二部分一-3.2節(jié)-3.5節(jié)
石教英
回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.2指令級(jí)并行概念與技術(shù)
3.2.1提高流水線性能的思路(1)
?直觀思路:縮小流水線的CPI
.CPIunpipelined
因?yàn)镾peedup=----------------------------------
CPIpipelined
CPIpipelined
=IdealpipelineCPI+pipelinedstallcyclesper
instruction
=1+Structualstalls+RAWstalls+WARstalls
+WAWstalls+Controlstalls
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
,所以:
縮小CP[pipelined的途徑就是:
減少各種競(jìng)爭(zhēng)造成的停頓周期數(shù)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI。
各種高級(jí)流水線技術(shù)及其作用對(duì)象:
技術(shù)作用(減少某類Stall)
LoopunrollingControlstalls
BasicpipelineschedulingRAWstalls
DynamicschedulingwithscoreboardingRAWstalls
DynamicschedulingwithregisterrenamingWAR&WAWstalls
DynamicbranchpredictionControlstalls
IssuingmultipleinstructionpercycleIdealCPI
CompilerdependenceanalysisIdealCPI&datastalls
SoftwarepipeliningandtraceschedulingIdealCPI&datastalls
Speculationdataandcontrolstalls
DynamicmemorydisambiguationRAWstallsinvolving
memory
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
本質(zhì)上思路⑵一■研究指令級(jí)并行性
(ILP,instruction-levelparallelism),據(jù)此進(jìn)一步開發(fā)指
令重疊執(zhí)行的可能性
?流水線技術(shù)就是指令重疊執(zhí)行技術(shù)
前提:
-有足夠硬件資源(無機(jī)構(gòu)競(jìng)爭(zhēng))
-重疊執(zhí)行的指令是相互獨(dú)立的,也就是說,
無數(shù)據(jù)依賴關(guān)系和執(zhí)行順序的約束關(guān)系,
即無數(shù)據(jù)競(jìng)爭(zhēng)和控制競(jìng)爭(zhēng)。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?指令之間可重疊執(zhí)行性,即所謂指令級(jí)并行
性。因此進(jìn)一步研究開發(fā)存在于指令之間的
并行性,將進(jìn)一步提高流水線的性能。
?我們將從兩個(gè)方面研究ILP
-研究循環(huán)的多次迭代之間存在的并行性,即所
謂循環(huán)級(jí)并行性(loop-levelparallelism)(一類
指令并行性)
-研究指令之間的相關(guān)性(dependences)(具有普
遍意義的指令并行性)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
322指令級(jí)并行性
?程序基本塊(basicblock)內(nèi)指令間并行性是
有限的。
-程序基本塊:指不包括轉(zhuǎn)入(除程序入口)和
轉(zhuǎn)出(除程序出口)指令的連續(xù)代碼序列,通
常由6-7條指令組成。
-根據(jù)統(tǒng)計(jì)(參見Fig.2-28,p107)在整數(shù)程序中動(dòng)
態(tài)轉(zhuǎn)移的概率為16%,即程序中一對(duì)轉(zhuǎn)移指令
之間僅含6-7條指令)
-考慮到基本塊內(nèi)指令之間存在各種相關(guān)性,所
以程序基本塊內(nèi)可重疊執(zhí)行的指令數(shù)遠(yuǎn)少于6條。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
?必須研究多個(gè)基本塊代碼之間的可重疊
執(zhí)行性,即ILP。最常見,也是最簡(jiǎn)單
的一種多個(gè)基本塊之間的并行行為:
循環(huán)多次迭代之間的并行性,稱微循環(huán)
級(jí)并行性(loop-levelparallelrism--LLP)o
[例]for(i=1;l<=1000;i=i+1;)
x[i]=x[i]+y[i];
loop內(nèi)指令無重疊執(zhí)行可能性,
loop的每一次迭代可重疊執(zhí)行。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
?如何將此類LLP轉(zhuǎn)化為ILP?
-首先把loop按每次迭代代碼序列展開,
-再根據(jù)代碼指令指令之間相關(guān)性進(jìn)行調(diào)度。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.2.3將LLP轉(zhuǎn)化為ILP方法一一循環(huán)展開
(loopunrolling)力口流水線調(diào)度(pipelinescheduling)
O兩種loopunrolling方法:
-staticloopunrollingbycompiler
-dynamicloopunrollingbyhardware
?流水線調(diào)度:若j指令要用到I指令的結(jié)果
(RAW相關(guān)),流水線調(diào)度是指把(懷吩兩條
指令分隔開來,兩者之間應(yīng)間隔的時(shí)鐘周期
數(shù)等于源指令產(chǎn)生結(jié)果所需的延時(shí)(latency)
時(shí)鐘周期數(shù)。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?兩種流水線調(diào)度方法
-Staticpipelineschedulingbycompiler;
-Dynamicpipelineschedulingbyhardware.
?本章采用如下假設(shè)
-無結(jié)構(gòu)競(jìng)爭(zhēng)(即有足夠硬件可供使用),每一時(shí)鐘周
期可發(fā)射一條指令
-采用DLX標(biāo)準(zhǔn)的整數(shù)操作流水線結(jié)構(gòu)(即由
IF,ID,EX,MEM,WB五拍組成)
-轉(zhuǎn)移指令(Branch)后由一個(gè)時(shí)鐘周期延時(shí)
-浮點(diǎn)操作的延時(shí)時(shí)鐘周期數(shù)參見表
(Fig4.2,p224;表4-37,p204)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
浮點(diǎn)操作延遲時(shí)間
前操作指令后繼相關(guān)指令等待時(shí)鐘周期數(shù)
FPALU操作FPALU操作3
FPALU操作Store(雙字)2
Load(雙字)FPALU操作1
Load(雙字)Store(雙字)0
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?實(shí)例:說明編譯器如何通過調(diào)度和循環(huán)
展開來提高流水線性能
For(i=1;i<=1000;i++)
x[i]=x[i]+s;
其中:x[i]——arrayelement;
s——scalar.
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?轉(zhuǎn)換為DLX匯編語言代碼如下:
Loop:LDFO,0(R1)R1:數(shù)組元素的地址,
ADDDF4,FO,F2初始化為最高地址
SD0(R1),F4F2:標(biāo)量值s
SUBIR1,R1,8雙字地址間隔為8字節(jié)
BNEZR1,Loop
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
計(jì)算未調(diào)度時(shí)loop一次迭代所需時(shí)鐘周期數(shù)
Loop:LDFO,0(R1)FDXMW
ADDDF4,FO,F2FDsA〔A2A3A4W
SD0(R1),F4FsDssXMW
SUBIR1,R1,8FssDXMW
BNEZR1,LoopFsDXMW
10ccFF
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
對(duì)loop代碼進(jìn)行調(diào)度后,一次迭代所需時(shí)鐘周
期數(shù)
Loop:LDFO,0(R1)FDXMW
FDXMW
SUBIR15R158
FDA4
ADDDF4,FO,F2A3A,W
Mw]
BNEZR1,LoopFDX
SD8(R1),F4FDsX、W
FeeFsDXMW
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
前頁(yè)說明:
?為了顛倒SUBI和SD順序,SD的地址發(fā)生了
改變!即恢復(fù)到原地址
?一次迭代由9個(gè)時(shí)鐘周期減少到6個(gè)時(shí)鐘周期
?是積極算一個(gè)數(shù)組元素僅需3個(gè)時(shí)鐘周期
(Load,add和store);另夕卜3個(gè)時(shí)鐘周期
(SUBI,BNEZ和一個(gè)stall)是loop的開銷
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
用loopunrolling來消除loopoverhead,以及
進(jìn)一步改善調(diào)度性能.
Loop:LDF0,0(R1)ADDDF12,F10,F2
stallstall,stall
ADDDF4,FO,F2SD-16(R1),F12
stall,stallLDF14,-24(R1)
SD0(R1),F4stall
LDF6,-8(R1)ADDDF16,F14,F2
stallstall,stall
ADDDF8,F6,F2SD-24(R1),F16
stall,stallSUBIR1,R1,#32
SD-8(R1),F8stall
LDF10,-16(R1)BNEZR1,loop
stall
stall回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
前頁(yè)說明
?Loop展開4次
?SUBI指令中R1要減32
?注意loop展開后,每一次迭代采用不同寄存器,如
用FO,F6,F10,F14表示LD的目的寄存器,分別
表示不同變量
?展開后loop需28個(gè)時(shí)鐘周期,即每次迭代平均需
28/4=7個(gè)時(shí)鐘周期,僅通過展開,消除loop
overhead,就可縮短每次迭代的時(shí)鐘周期數(shù),這
里沒有做任何調(diào)度.
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
對(duì)unrollingloop進(jìn)行調(diào)度,達(dá)到進(jìn)一步縮短
每次迭代的時(shí)鐘周期數(shù)
Loop:LDFO,0(R1)
SD0(R1),F4
LDF6,-8(R1)
SD-8(R1),F8
LDF10,-16(R1)
SUBIR1,R1,#32
LDF14,-24(R1)
SD-16(R1),F12
ADDDF4,FO,F2
BNEZR1Loop
ADDDF8,F6,F25
ADDDF12,F10,F2SD8(R1),F16
ADDDF16,F14,F2(因R1已減32,所以加8)
◎回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
前頁(yè)說明:
?展開調(diào)度后的Loop共需14個(gè)時(shí)鐘周期,則每
次迭代平均只需14/4=3.5個(gè)時(shí)鐘周期
?調(diào)度展開的循環(huán)對(duì)提高性能的作用大于單純
的調(diào)度
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
例子說明的問題:
?通過例子,我們看到研究開發(fā)ILP對(duì)提高處理器功能
單元性能(即流水線性能)的巨大作用;
?流水線思想早在60年代就開始應(yīng)用于處理器,但只
有在80年代和90年代,在深入研究ILP之后提出一系
列先進(jìn)流水線技術(shù),才成為使微處理器性能突飛猛
進(jìn)的關(guān)鍵技術(shù);
?上述例子所采用的一些方法對(duì)我們?nèi)祟悂碇v都十分
直觀和簡(jiǎn)單,但要使硬件和軟件(編譯器)來完成上述
過程,必須總結(jié)出一套形式化的,方法學(xué)上的條例來
確定何時(shí)以及如何來改變指令的執(zhí)行順序。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
小結(jié):關(guān)于循環(huán)展開和調(diào)度方法在執(zhí)行過程
中,我們做出了以下決策和代碼變換。
⑴確信把SD移到SUBI和BNEZ之后是合法的,
并求出SD的位移量;
(2)確信循環(huán)體的每次迭代是相互獨(dú)立的(除
維持循環(huán)的代碼外),以及循環(huán)體展開有利
于性能提高;
(3)為了避免因采用同一寄存器而造成不必要
的限制,可以采用不同寄存器表示不同變量;
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
(4)消除額外測(cè)試和轉(zhuǎn)移指令,調(diào)整維持循環(huán)
的代碼;
⑸只有確信不同迭代中的Loads和stores是互
相獨(dú)立的之后,Loads和Stores才能在展開
后的循環(huán)體中互換位置。為此必須分析存儲(chǔ)
器的地址,并確信Loads和stores訪問的并
非同一地址。這就是所謂的memory
disambiguationo
(6)在調(diào)度指令執(zhí)行順序時(shí),必須確保相關(guān)性
不變,才能使調(diào)度后的代碼的結(jié)果與源代碼
的相同。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
做出上述決策的關(guān)鍵在于
?了解指令之間的相關(guān)性(dependence)
?了解給定的相關(guān)性下,應(yīng)如何改變指令或重
排其執(zhí)行順序。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.2.4相關(guān)性(Ep229,Cp215)
?兩條指令是相互獨(dú)立的,則是并行的,
其執(zhí)行順序允許重排;
?兩條指令是相關(guān)的,則不是并行的,其
執(zhí)行順序不允許重排;
?明確指令相關(guān)性對(duì)
-調(diào)度的可行性
-程序并行程度的多少
-如何利用程序的并行性
至關(guān)重要。
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
,存在三類相關(guān)性
-數(shù)據(jù)相關(guān)性
-名字相關(guān)性
-控制相關(guān)性
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.2.4.1數(shù)據(jù)相關(guān)性(datadependences)
?定義:指令j相對(duì)于指令I(lǐng)存在數(shù)據(jù)相關(guān)性,則
下列條件之一必定成立:
-指令i產(chǎn)生的結(jié)果被指令j所用,或
-指令j與指令k數(shù)據(jù)相關(guān),以及指令k與指令I(lǐng)
數(shù)據(jù)相關(guān)。(即存在相關(guān))
?相關(guān)性是程序的一種性質(zhì)
?存在相關(guān)性僅僅指出存在競(jìng)爭(zhēng)(hazard)的可能
性,但是是否會(huì)造成可檢測(cè)到的競(jìng)爭(zhēng),以及是
否會(huì)造成真正的停頓則是流水線組織的性質(zhì)。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
舉例:
Loop:LDF弋(R1);F0:數(shù)組元素jRAW仿{可]
ADDFIFO,F2;addscalarinF21
RAW2stalls
SD0(R1),F4;StoreresultJ
SUBIR1,R1,#8qdecrementpointer8bytes(perDW)
J卜RAW,1stall
BNEZR1,LoopJ
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
注意:
?黑箭頭表示存在數(shù)據(jù)相關(guān)性,即存在
RAW競(jìng)爭(zhēng)可能性,指令的執(zhí)行順序不
能改變;
?上一段代碼中數(shù)據(jù)相關(guān)性將造成停頓周
期;
?下一段代碼中數(shù)據(jù)相關(guān)性將不會(huì)造成停
頓,因?yàn)樵贒LX即其中“提前”硬件可
以消除這一停頓。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
?了解程序中存在相關(guān)性的重要性:因?yàn)?/p>
相關(guān)性將
-指出存在競(jìng)爭(zhēng)的可能性;
-確定指令的執(zhí)行順序,即指令的結(jié)果必須
按指定的順序計(jì)算;
-給出可能開發(fā)的并行性的上限。(參見原
版書4.7節(jié)。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?消除數(shù)據(jù)相關(guān)性的方法,即克服數(shù)據(jù)相
關(guān)性對(duì)指令級(jí)并行性的限制的方法有兩
類:
-保持相關(guān)性不變,但設(shè)法避免造成競(jìng)爭(zhēng)--
調(diào)度法。即調(diào)度指令,降不相關(guān)指令插入
停頓周期,或改變指令順序,達(dá)到避免出
現(xiàn)停頓,又保持相關(guān)性不變。(如前例)
-通過變換代碼消除相美R--代碼變換法。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
例:LD
FO,O(R1)LDFO,0(R1)
ADDDF4,FO,F2ADDDF4,FO,F2
SD0(R1),F4SD0(R1),F4
SUBIFi1,R1,#8LDF6,-8(R1)
ADDDF8,F6,F2
LD1)
SD-8(R1),F8
ADDDF紙6,F2
SD0(R1*F8SUBIR1,R1,#32
SUBIR1,R1,#8BNEZR1,Loop
優(yōu)化,但未調(diào)度
未完全優(yōu)化
回回
注意:
?已作循環(huán)展開,保留SUBI,但已消除BNEZ;
?由于SUBI存在,造成數(shù)據(jù)相關(guān)性(由箭頭
表明),涉及SUBI,LD和SD等指令,整個(gè)代
碼必須按順序執(zhí)行;
?若由編譯器計(jì)算R1的中間值,并將其轉(zhuǎn)換成
LD和SD的偏移量,最后一個(gè)SUBI減32,就
可以消去由SUBI帶來的相關(guān)性;同時(shí)也可
消去SUBI指令。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
324.2名字相關(guān)性
?定義:
當(dāng)兩條指令使用同一寄存器(名)或
存儲(chǔ)器單元(號(hào)),稱為“名字”,但這
兩條與該名字相關(guān)的指令之間不存在數(shù)
據(jù)流動(dòng)(傳遞),稱這兩條指令為名字
相關(guān)。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?兩類名字相關(guān)性
設(shè)指令i在程序中位于指令j之前,則
-反相關(guān)性:當(dāng)指令j寫入的寄存器或存儲(chǔ)
單元是指令I(lǐng)讀的寄存器或存儲(chǔ)單元。反相
關(guān)性對(duì)應(yīng)于WAR競(jìng)爭(zhēng),這也是“反相關(guān)性:
名稱的來由,因?yàn)樗c數(shù)據(jù)相關(guān)性對(duì)應(yīng)的
RAW競(jìng)爭(zhēng)方向相反。因此一旦檢測(cè)到
WAR競(jìng)爭(zhēng),說明存在反相關(guān)性,必須保持
其先后次序不變,從而造成無法調(diào)度。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?兩類名字相關(guān)性
-輸出相關(guān)性:指令I(lǐng)和j對(duì)同一寄存器或存
儲(chǔ)單元進(jìn)行寫操作。輸出相關(guān)性對(duì)應(yīng)于
WAW競(jìng)爭(zhēng)。同理,若存在輸出相關(guān)性
(即意味著存在WAW競(jìng)爭(zhēng)),也不能改變
先后次序。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
消除名字相關(guān)性的方法
?根據(jù)名字相關(guān)性的定義可知,由于相關(guān)指令之間不
存在數(shù)據(jù)流動(dòng),因此只要改變它們使用的寄存器名
或存儲(chǔ)單元號(hào),(即兩條指令不要使用同名字的寄
存器或同一存儲(chǔ)單元),即可消除名字相關(guān)性。因
止匕,對(duì)于寄存器操作數(shù)而言,只要改用其它寄存器
即可,這一方法稱為“寄存器改名”法(register
renaming)。
寄存器改名可由compiler靜態(tài)完成,也可以由
硬件動(dòng)態(tài)完成。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
舉例:(p233)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?例中循環(huán)體被展開4次,每次迭代中使
用相同寄存器;消除了循環(huán)的額外開銷。
?黑色箭頭指示“名字相關(guān)性”,灰色箭
頭只是“數(shù)據(jù)相關(guān)性”。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
采用“寄存器改名”方法消除名字相關(guān)性后,
得代碼如下(數(shù)據(jù)相關(guān)性保持不變)p233
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
324.3控制相關(guān)性
?定義:
控制相關(guān)性指某指令相對(duì)于轉(zhuǎn)移指
令的順序關(guān)系。原則上講,除程序中第
一基本塊指令外,每一條指令都是控制
相關(guān)的,即依賴于某組轉(zhuǎn)移指令,這種
控制相關(guān)性時(shí)必須遵守的。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?舉例:if-thenstatements;
ifP1(s1與p1控制相關(guān),
s1;
);
與控制相關(guān),
ifp2{s2p2
s2;但與p1控制無關(guān)。
)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?控制相關(guān)的兩條限制:
?與某轉(zhuǎn)移指令控制相關(guān)的指令不能調(diào)到該轉(zhuǎn)
移指令之前,(即不能由控制相關(guān)變?yōu)榭刂?/p>
不相關(guān))
?與某轉(zhuǎn)移指令控制無關(guān)的指令不能調(diào)到該轉(zhuǎn)
移指令之后,(即不能由控制無關(guān)變?yōu)榭刂?/p>
相關(guān))
?注意:有時(shí)候可能破壞上述限制,而仍有正
確結(jié)果(詳見后述“投機(jī)”策略和條件指令)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?舉例.
目的:
-說明控制相關(guān)的存在
-說明如何去掉控制相關(guān)性(p235)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
-第一塊指令無控
制相關(guān)性
-因?yàn)榇嬖谌龡l
BEQ乙所以存在
控制相關(guān)性(黑
箭頭表示)。因
此此循環(huán)展開代
碼不能進(jìn)行調(diào)度
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI。
-可以去掉中間三條BEQ乙從而去掉由它們
造成的控制相關(guān)性。
理由:R1是等于32的倍數(shù),所以中間三條
BEQZ是不會(huì)成功的,這三條轉(zhuǎn)移指令相當(dāng)
于空操作。
-去掉了控制相關(guān)性后,整個(gè)循環(huán)展開代碼
就可以進(jìn)行優(yōu)化(調(diào)度)。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?程序中控制相關(guān)性的保證得益于簡(jiǎn)單流
水線(3.1節(jié))的兩條性質(zhì):
1.指令的按序執(zhí)行性。確保Branch前的
指令只能在Branch前執(zhí)行;
2.控制競(jìng)爭(zhēng)的檢測(cè)將確??刂葡嚓P(guān)指令
只有當(dāng)轉(zhuǎn)移方向明確后才能執(zhí)行。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?遵守控制相關(guān)性是保證程序正確性的一
種有用的且簡(jiǎn)單的方法,然而控制相關(guān)
性并非是必須確保的關(guān)鍵性質(zhì),例如在
上例中,可以去掉BEQZ指令達(dá)到消除
控制相關(guān)性。
,確保程序正確性的兩個(gè)關(guān)鍵性性質(zhì)是:
1.遵守異常(中斷)行為;
2.遵守?cái)?shù)據(jù)流向。
通常,這兩個(gè)性質(zhì)是由控制相關(guān)性來保證的,
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?遵守異常(中斷)行為指改變指令執(zhí)行
順序時(shí)不應(yīng)引起新的異常(中斷)。
例:BEQZR2,L1這里存在控制相關(guān),但無
LWR1,0(R2);數(shù)據(jù)相關(guān)。若不遵守控制
L1:相關(guān)性,把LW移到BEQZ
前,這里雖然無數(shù)據(jù)相關(guān)
性,但由于執(zhí)行LW時(shí)可
能出現(xiàn)存儲(chǔ)器保護(hù)異常
(中斷),因此不能將
LW提前。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?數(shù)據(jù)流向指某結(jié)果的產(chǎn)生以及被應(yīng)
用的流向。
轉(zhuǎn)移指令使數(shù)據(jù)流向不再是靜態(tài)的,
而變?yōu)閯?dòng)態(tài)的,即源數(shù)據(jù)可以由多種來
源,因此為確保數(shù)據(jù)流向,必須遵守控
制相關(guān)性。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
例:
說明:
ADDR1,R2,R3]
OR的操作數(shù)R1有
EQZR4L兩個(gè)來源,即ADD
或SUB。這與BEQZ
SU5,R6
成功與否有關(guān)。所
L:ORR7,R1,R8以只有遵守控制相
關(guān)性才能確保數(shù)據(jù)
R1有兩個(gè)源
的正確流向。
回回
?破壞控制相關(guān)性,而不影響異常(中斷)
行為和數(shù)據(jù)流向的例子:
ADDR1,R2,R3若我們知道SUB指令
的結(jié)果R4在skip后
BEQZR12,skip
不再被用到,稱為
SUBR4,R5,R6
“死”的,且不會(huì)
ADDR5,R4,R9引起異常,則我們
skip:ORR7,R8,R9可以不遵守控制相
關(guān)性將SUB提前到
BEQZ前執(zhí)行。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?這種調(diào)度技術(shù)稱為“投機(jī)”
(speculation),因?yàn)閏ompiler通常根據(jù)
轉(zhuǎn)移指令的行為投機(jī)地預(yù)測(cè)其成功與否。
這里的做法對(duì)于不成功轉(zhuǎn)移概率大的情
況有利。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?前面已經(jīng)介紹過:控制競(jìng)爭(zhēng)與控制相關(guān)
性是緊密聯(lián)系在一起的。通過檢測(cè)控制
競(jìng)爭(zhēng)的存在與否來確??刂葡嚓P(guān)性不被
破壞。
控制競(jìng)爭(zhēng)將導(dǎo)致控制停頓(stalls),
因此確保控制相關(guān)性可消除控制競(jìng)爭(zhēng),
從而消除控制Stalls.
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
消除或減少控制停頓(stalls)的方法有:
?采用delayedbranch方法減少停頓周期
數(shù)(見3.1.5.3)
?循環(huán)展開來消除控制相關(guān)性(見324.3)
?將轉(zhuǎn)移指令轉(zhuǎn)變?yōu)闂l件執(zhí)行指令
(conditionalinstruction)和compiler-
basedandhardwarespeculation(3.3
節(jié))
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.2.5循環(huán)級(jí)并行性(LLP):概念和技術(shù)
?本節(jié)研究如何把相關(guān)性概念擴(kuò)充到loop
之間:僅指操作數(shù)在不同迭代之間的相
關(guān)性,即
-loop間的數(shù)據(jù)相關(guān)性(重點(diǎn)研究)
-loop間的名字相關(guān)性(可用renaming方法
消除)
?Loop之間存在的數(shù)據(jù)相關(guān)性,稱為
Loop-carrieddependence(循環(huán)傳遞相
關(guān)性)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
舉例1:指出loop中S1和S2之間的相關(guān)性
For(i=1;i<=100;i=i+1){
A[i+1]=A[i]+C[i];/*S1*/[si-kS2|
B[i+1]=B[i]+A[i+1];/*S2*/
)
分析:存在兩種數(shù)據(jù)相關(guān)性:
-S1中A[i+1]和S2中的B[i+1]均要用到各自上一次迭
代的值。這就是所謂loop-carrieddependence,對(duì)
這種相關(guān)性而言,該循環(huán)的不同迭代是不能并行的,
即必須順序執(zhí)行。
-S2中的A[i+1]來自本次迭代的S1,故不是loop-
carriedo如巢loop中只含這種相關(guān)性,則該loop的
不同迭代是可以并行執(zhí)行的。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
舉例2:雖然存在loop-carried相關(guān)性,仍能實(shí)
現(xiàn)loop并行執(zhí)行的例子。
說明
For
(i=1;i<=100;i=i+1){-S1中B[i]依賴于上一次迭
A[i]=A[i]+B[i];代的S2,所以這是一種
〃S17loop-carried相關(guān)性。
B[i+1]=C[i]+D[i];-但這一相關(guān)性不是
〃
S27Circular(連環(huán)的)。因?yàn)?/p>
)S1和S2本身相對(duì)不同迭代
無相關(guān)性,且只有S1依賴
于上次迭代的S2,而S2不
siS2依賴于S1。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
作程序變換如下:
A[1]=A[1]+B[1];
說明:
For(i=1;i<=99;i=i+1){
-作適當(dāng)程序變幻,
B[i+1]=C[i]+D[i];
A[i+1]=A[i+1]+B[i+1]可以使這一loop變?yōu)?/p>
)并行。
B[101]=C[100+D[100];
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
3.3克服數(shù)據(jù)相關(guān)的動(dòng)態(tài)調(diào)度方法
?調(diào)度(scheduling)—重排指令執(zhí)行順
序,消除指令相關(guān)性,達(dá)到減少或消除
流水線的停頓周期。
?調(diào)度分兩類
-靜態(tài)調(diào)度?一由編譯器將相關(guān)指令隔離開來
-動(dòng)態(tài)調(diào)度?一由硬件在指令執(zhí)行過程中重排
指令的執(zhí)行次序。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?動(dòng)態(tài)調(diào)度
?動(dòng)態(tài)調(diào)度的優(yōu)點(diǎn)
-可處理在編譯時(shí)不清楚的相關(guān)性
-可減輕編譯器的復(fù)雜性
-適用于不同流水線
?動(dòng)態(tài)調(diào)度的代價(jià)
-硬件復(fù)雜度的提高
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.3.1動(dòng)態(tài)調(diào)度思想
?簡(jiǎn)單流水線技術(shù)的主要缺陷
-指令按序發(fā)射(issue),指令按序執(zhí)行,
按序結(jié)束。
-一旦前面指令停頓,后面指令不能提前
執(zhí)行。
?DIVD與ADDD之間存在RAW
例DIVDFQ^F4
競(jìng)爭(zhēng),它們之間要插入Stall
ADDDF10,FO,F8周期;
?SUBD與它們無關(guān),在普通流
SUBDF12,F8,F14水線中,不能提前執(zhí)行,也
必須跟著停頓。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?啟發(fā):若指令能不按順序執(zhí)行,只要它
們的操作數(shù)已準(zhǔn)備好,可以提前執(zhí)行,
可以提前完成,就可提高流水線的效率。
?一這就是“調(diào)度”思想的基礎(chǔ),調(diào)度
又分靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度。
?動(dòng)態(tài)調(diào)度的必要條件:允許多條指令發(fā)
射,有足夠硬件支持多條發(fā)射,和多份
功能單元支持并行操作」
即將指令送入EX。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?動(dòng)態(tài)調(diào)度思想?一按順序發(fā)射多條指令,
只要條件成熟:
-無結(jié)構(gòu)競(jìng)爭(zhēng)(即有足夠硬件)
-操作數(shù)已準(zhǔn)備好
就可以不按順序執(zhí)行,不按順序完成。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?為實(shí)現(xiàn)動(dòng)態(tài)調(diào)度,流水線必須具備以下功能:
(1)允許按序取多條指令和發(fā)射多條指令一一取指(IF)
流水級(jí)允許按順序取多條指令進(jìn)入單口暫存器
(single-entrylatch)或隊(duì)列(queue),指令然后從
latch或queue取出,進(jìn)入ID節(jié)拍。
(2)能檢查并消除hazards--將ID流水級(jí)分為獨(dú)立的
兩級(jí):Issue級(jí)和Readoperand級(jí):
-Issue級(jí)功能一指令譯碼,檢查是否存在結(jié)構(gòu)競(jìng)
爭(zhēng)(即在這一流水級(jí)解決結(jié)構(gòu)競(jìng)爭(zhēng)問題;
-Readoperands級(jí)功能--等到無數(shù)據(jù)競(jìng)爭(zhēng)
(RAW)后,讀出操作數(shù),即在這一流水級(jí)解決
數(shù)據(jù)競(jìng)爭(zhēng)問題。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
在簡(jiǎn)單DLX流水線中Writeresult總是發(fā)生在最
后一拍,因此在按序執(zhí)行時(shí),不可能出現(xiàn)WAR和WAW
競(jìng)爭(zhēng),然而在允許不按序執(zhí)行時(shí),就可能出現(xiàn)WAR
和WAW競(jìng)爭(zhēng)。
例:DIVDFO,F2,F4
ADDDF10粗F8HRAW,要插入3個(gè)stalls
SUBDF8,淞呼
]WAR,若允許亂序執(zhí)行,
」則出現(xiàn)了WAR。
在動(dòng)態(tài)調(diào)度時(shí)如何解決WAR和WAW兩種競(jìng)爭(zhēng),
將作進(jìn)一步介紹。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
(3)具備多重功能單元或流水化的功能單元一?
為了滿足不按序執(zhí)行何不按序結(jié)束,在EX流
水級(jí)必須至少準(zhǔn)備好多重功能單元,如多個(gè)
加法器,乘法器,除法器等,或者將這些功
能單元也設(shè)計(jì)成流水線結(jié)構(gòu),允許多條指令
重疊執(zhí)行,最終達(dá)到每一流水周期完成一條
指令的目的。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
332記分牌動(dòng)態(tài)調(diào)度法(Dynamic
SchedulingwithScoreboard)
?記分牌是動(dòng)態(tài)調(diào)度的一種方法,1964年
CDC6600提出這一思想。
3?3.2.1帶記分牌的DLXFP處理器結(jié)構(gòu)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?帶記分牌的DLX處理器基本結(jié)構(gòu)圖
寄存器數(shù)據(jù)總線
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
上圖說明:
?處理器有5個(gè):
—2個(gè)FPMultiplier
-1個(gè)FPDivide
-1個(gè)FPAdd
-1個(gè)IntegerUnit
?寄存器和功能單元之間數(shù)據(jù)流通過數(shù)據(jù)總線
傳送
?記分牌控制指令執(zhí)行過程,并紀(jì)錄數(shù)據(jù)的狀
/So
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?什么是記分牌?
?記分牌是一集中控制部件,其功能是控制數(shù)
據(jù)寄存器與處理部件之間的數(shù)據(jù)傳送。在記
分牌中保存有與各個(gè)處理部件相聯(lián)系的寄存
器中的數(shù)據(jù)裝載情況。當(dāng)一個(gè)處理部件所要
求的數(shù)據(jù)都已就緒(裝載完畢),記分牌允
許處理部件開始執(zhí)行。當(dāng)執(zhí)行完成后,處理
部件通知記分牌釋放相關(guān)資源。所以在記分
牌中記錄了數(shù)據(jù)寄存器和多個(gè)處理部件狀態(tài)
的變化情況,通過它來檢測(cè)和消除或減少數(shù)
據(jù)相關(guān)性,加快程序執(zhí)行速度。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
-心〃/rruu<zj口匕;J/ArJI=I<ZXZJJziH?J
l競(jìng)爭(zhēng)檢測(cè)和消除
?每一條指令都要經(jīng)過記分牌(記錄在
“指令狀態(tài)表”中),即發(fā)射到記分牌
數(shù)據(jù)結(jié)構(gòu)中;
?紀(jì)錄數(shù)據(jù)相關(guān)性,把源和目的操作數(shù)記
錄在“功能單元狀態(tài)表”中;
?決定指令何時(shí)可讀出操作數(shù)(檢測(cè)是否
有RAW競(jìng)爭(zhēng))
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?決定指令何時(shí)可以開始執(zhí)行(一旦操作
數(shù)就緒,立即開始執(zhí)行);
?若某條指令不能立即執(zhí)行,則由記分牌
監(jiān)控硬件的每一變化,并決定何時(shí)才能
開始執(zhí)行;
?控制指令何時(shí)能將結(jié)果寫入目的寄存器
(即檢測(cè)是否有WAR競(jìng)爭(zhēng))
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?記分牌在每一流水級(jí)中的功能
?DLX簡(jiǎn)單流水線分5拍:IFIDEXMEMWB;
?我們只考慮FP操作,因此可略去MEM拍;
?如前所述已將ID改為Issue和Readoperands
兩拍;
?記分牌的功能是把指令從取指隊(duì)列取出送入
Issue拍開始
所以我們將考慮記分牌在下列流水級(jí)的功能:
Issue,Readoperands,EX,WB.
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
l.Issue(看指令狀態(tài)表)
?若某指令所需的功能單元為空(即無結(jié)
構(gòu)競(jìng)爭(zhēng));且無其它指令用到同一目的
寄存器(確保不會(huì)出現(xiàn)WAW競(jìng)爭(zhēng)),
則記分牌把該指令發(fā)射(issue)到功
能單元,并更新其內(nèi)部數(shù)據(jù)結(jié)構(gòu);若存
在結(jié)構(gòu)競(jìng)爭(zhēng)或WAW競(jìng)爭(zhēng),則停頓指令
發(fā)射,直到競(jìng)爭(zhēng)消失。
--檢測(cè)結(jié)構(gòu)競(jìng)爭(zhēng)和WAW競(jìng)爭(zhēng),
若有則停頓。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
2.Readoperands(看功能部件狀態(tài)表)
記分牌監(jiān)控源操作數(shù)是否就緒。一個(gè)源操作數(shù)
就緒的條件為:
-早前發(fā)射的活動(dòng)指令對(duì)該操作數(shù)不進(jìn)行寫
入操作(即無RAW競(jìng)爭(zhēng))
-含有操作數(shù)之一的寄存器,就是該活動(dòng)功
能單元即將寫入的寄存器,如SUBDF8,F8,
F14.(即也不會(huì)出現(xiàn)RAW競(jìng)爭(zhēng))。記分牌在
這一步解決了RAW競(jìng)爭(zhēng)問題。
當(dāng)源操作數(shù)準(zhǔn)備就緒,記分牌通知功能單元讀
出操作數(shù),并開始執(zhí)行。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
?檢測(cè)RAW,若有,則停頓該指令,但是
在動(dòng)態(tài)調(diào)度時(shí),有多條指令并行操作,
所以可能有另外指令滿足條件,則繼續(xù)
執(zhí)行下去,從而消除了停頓的損失。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.Execution
?功能單元開始對(duì)操作數(shù)執(zhí)行操作。當(dāng)?shù)?/p>
到“結(jié)果”后,功能單元通知記分牌該
操作已執(zhí)行完畢。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
4.Writeresult
?當(dāng)記分牌知道功能單元已結(jié)束執(zhí)行流水
線,記分牌檢查是否存在WAR競(jìng)爭(zhēng)。
如果存在WAR競(jìng)爭(zhēng),則停頓指令,即
停頓Writeresult節(jié)拍,一直到上一條指
令讀完為止。
一一檢測(cè)WAR,若有則停頓。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
說明:
例:DIVDFO,F2,F4]
卜RAWADDD和SUBD之間對(duì)
ADDDF10,Fb,F8-F8存在WAR競(jìng)爭(zhēng),
-WAR
所以SUBD將停頓下
SUBDF8TF8,Fir
來,一直到ADDD讀
出R8拍后
回回
通常,一條已完成的指令在下列條件下不允
許寫它的結(jié)果:
-在這條已完成指令前面(按發(fā)射順序而
言),有一條指令還未讀該操作數(shù)
-這條已完成指令的一個(gè)操作數(shù)與其結(jié)果采
用同一個(gè)寄存器。
若不存在WAR競(jìng)爭(zhēng),或WAR消失后,記
分牌通知功能單元把其結(jié)果存入目的寄存器。
在下一節(jié)介紹完記分牌的數(shù)據(jù)結(jié)構(gòu)以后,將
給出記分牌在每一流水線的功能以形式化描
述。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
3.3.2.2DLX記分牌的數(shù)據(jù)結(jié)構(gòu)
由三部分組成
?指令狀態(tài)表(instructionstatus)
-指示每一條指令處于哪一流水級(jí)
?寄存器結(jié)果狀態(tài)表(Registerresultstatus)
-指示哪一功能單元將把結(jié)果寫入哪一個(gè)
寄存器。
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件V1.0
?功能單元狀態(tài)表(Functionalunitstatus)
-指示功能單元所處狀態(tài),每一功能單元有
9個(gè)狀態(tài):
Busy一指示功能單元是“忙”還是“空”
Op—功能單元正在完成何種操作
Fi-—目的寄存器號(hào)
Fj,Fk—源寄存器號(hào)
Qj,Qk--生成源寄存器數(shù)Fj,Fk的功能單元
Rj,Rk--Fj,Fk就緒標(biāo)識(shí)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
舉例:分析下列指令序列在記分牌中的狀態(tài)。
LDF6,34(R2)
LDF2,45(R3)
MULTDFO,F2,F4
SUBDF6,F2
DIVDF10,FO,F6
ADDDF6,F8,F2
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
指令狀態(tài)
.
結(jié)
指令發(fā)射讀操執(zhí)行耳說明
果
作數(shù)完成
LDq已結(jié)束
LD已結(jié)束EX,但結(jié)果未寫入
MULTDq功能部件有空,故均已發(fā)
射,但操作數(shù)未就緒。
SUBD
DIVD
ADDD功能部件忙,不能發(fā)射
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
名稱功能部件工作狀態(tài)
BusyOpFiFjFkQjQkRjRk
IntegerYesLoadF2F3No
MultiYesMultFOF2F4IntegerNoYes
Mult2No
AddYesSubF8F6F2IntegerYesNo
DivideYesDivF10FOF6MultiNoYes
寄存器結(jié)果狀態(tài)
FOF2F4F6F8F10F12???F30
FUMultiIntegerSubDivide???
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
說明:
?ADDD指令因?yàn)橛浄峙朴锌斩腥?,?/p>
由于Fpadd被SUBD占用,即出現(xiàn)結(jié)構(gòu)
競(jìng)爭(zhēng)(無加法器可用),而處于Stall,
即未進(jìn)入issue狀態(tài)。
?MULTD,SUBD,DIVD均已進(jìn)入issue
狀態(tài),但由于源操作數(shù)未就緒,而不能
進(jìn)入Readoperand.
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
MULTDisreadytogotowriteresult
指令狀態(tài)
指令發(fā)射讀操執(zhí)行與說明
果
作數(shù)完成
LD已結(jié)束
LDqq已結(jié)束
MULTD1q已結(jié)束EX,但結(jié)果未寫入
SUBD1已提前結(jié)束
DIVD1功能部件忙,不能發(fā)射
ADDD1WAR(F6)競(jìng)爭(zhēng),故不
能進(jìn)入寫結(jié)果流水級(jí)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
名稱功能部件工作狀態(tài)
BusyOpFiFjFkQjQkRjRk
IntegerNo
MultiYesMultFOF2F4YesYes
Mult2No
AddYesSddF6F8F2YesYes
DivideYesDivF10FOF6MultiNoYes
寄存器結(jié)果狀態(tài)
FOF2F4F6F8F10F12???F30
FUMultiAddDivide???
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
說明:
?初始狀態(tài)為:MULTD已結(jié)束EX,但尚未
寫結(jié)果,即F0未就緒。
?SUBD,各項(xiàng)條件均滿足,已提早結(jié)束,
體現(xiàn)了不按序執(zhí)行,即動(dòng)態(tài)調(diào)度思想。
?DIVD因?yàn)镕0未就緒,不能進(jìn)入Read
operand
?ADDD已完成執(zhí)行,但與DIVD之間存
在WAR(F6)競(jìng)爭(zhēng),故不能寫結(jié)果。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
DIVDisreadytogotowriteresult
指令狀態(tài)
指令發(fā)射執(zhí)行寫結(jié)說明
完成果
LD7q已結(jié)束
LDqqq已結(jié)束
MULTD已結(jié)束
SUBDq已結(jié)束
DIVDq以執(zhí)行完,還未寫結(jié)果
ADDD早已提前結(jié)束
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
名稱功能部件工作狀態(tài)
BusyOpFiFjFkQjQkRjRk
IntegerNo
MultiNo
Mult2No
AddNo
DivideYesDivF10FOF6YesYes
寄存器結(jié)果狀態(tài)
FOF2F4F6F8F10F12???F30
FUDivide???
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
說明:
?初始狀態(tài)為:DIVD已結(jié)束EX,但尚未寫
結(jié)果。
?當(dāng)MULTD將結(jié)果寫入FOQIVD就立即
進(jìn)入Readoperands及EX兩步。
?當(dāng)DIVD一讀出F6,與ADDD之間的
WAR競(jìng)爭(zhēng)就消失,所以ADDD立即將其
結(jié)果寫入F6,即ADDD先于DIVD完成。
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
指令在不同流水級(jí)的功能,既要做的checks和
Bookkeeping動(dòng)作的形式化描述如下:
流水級(jí)等待結(jié)束條件操作
發(fā)射級(jí)Notbusy(FU)andBusy(FU).Yes;Op(FU)—Op;
NotResult(D)Fi(FU)—“D",F(xiàn)j(FU)—“S1”;
Fk(FU)—“S2”,Qj—Result,ST');
Qk—Result(“S2”),Rj—notQj;
Rk—notQk;Result("D”)-FU
讀操作數(shù)RjandRkRj—No;Rk—No;Qj_0,Qk—0
執(zhí)行完成功能執(zhí)行完
寫結(jié)果Vf(Fj(f)wFi(FU)orVf(ifQj(f)=FUthenRj(f)—Yes)
Rj(f)=NoVf(ifQk(f)=FUthenRk(f)—Yes)
&(Fk(f)wFi(FU)orResult(Fi(FU))—0;Busy(FU)-No
Rk(f)=No))
H1L>
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
332.3DLX記分牌動(dòng)態(tài)調(diào)度演示實(shí)驗(yàn)
回回
高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)課件VI.0
記分牌算法的性能限制
?記分牌動(dòng)態(tài)調(diào)度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拉巴爾護(hù)理流程圖講解
- 上海體育大學(xué)《醫(yī)學(xué)信息織》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省日照市嵐山區(qū)2025年中考數(shù)學(xué)試題模擬卷(一)含解析
- 上海市閔行區(qū)民辦上寶中學(xué)2024-2025學(xué)年初三中考總復(fù)習(xí)單元同步滾動(dòng)測(cè)試卷數(shù)學(xué)試題含解析
- 新疆天山職業(yè)技術(shù)大學(xué)《雙語食品機(jī)械與設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- 新疆維吾爾自治區(qū)阿克蘇地區(qū)沙雅縣2025屆初三下學(xué)期第一周綜合自測(cè)化學(xué)試題含解析
- 長(zhǎng)沙醫(yī)學(xué)院《數(shù)據(jù)庫(kù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西農(nóng)業(yè)大學(xué)《中學(xué)生物學(xué)教材分析與教學(xué)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆烏魯木齊市達(dá)標(biāo)名校2025屆初三全真模擬化學(xué)試題含解析
- 上海體育大學(xué)《無機(jī)及分析化學(xué)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 七年級(jí)語文下冊(cè)(統(tǒng)編版2024)-【新教材解讀】義務(wù)教育教材內(nèi)容解讀課件
- 冷庫(kù)工程施工組織設(shè)計(jì)方案
- 消化內(nèi)科診療指南及操作規(guī)范
- 網(wǎng)約配送員培訓(xùn)課件
- 五星出東方利中國(guó)-新疆文化網(wǎng)
- 《當(dāng)前國(guó)際安全形勢(shì)》課件
- 《貨幣的前世今生》課件
- 3.1 貫徹新發(fā)展理念 課件-高中政治統(tǒng)編版必修二經(jīng)濟(jì)與社會(huì)
- 2025天貓服飾春夏趨勢(shì)白皮書
- 設(shè)備的運(yùn)行動(dòng)態(tài)管理制度(4篇)
- 借款利率協(xié)議
評(píng)論
0/150
提交評(píng)論