




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
一.高級計算機體系結(jié)構(gòu)基礎(chǔ)計算機的基本概念什么是計算機計算機的基本組成衡量計算機的因素影響計算機設(shè)計的主要因素及其發(fā)展趨勢摩爾定律和工藝的發(fā)展計算機市場發(fā)展趨勢多核結(jié)構(gòu)的發(fā)展趨勢計算機重要指標(biāo)性能、成本、功耗我國計算機發(fā)展歷史1一.高級計算機體系結(jié)構(gòu)基礎(chǔ)計算機的基本概念1現(xiàn)在的計算機中為什么用二進制?
計算機是由電子元器件構(gòu)成的,二進制最易實現(xiàn)。馮諾億曼結(jié)構(gòu):數(shù)據(jù)和程序都在存儲器中,CPU從內(nèi)存中取指令和數(shù)據(jù)進行運算并把結(jié)果也放到內(nèi)存中外存儲器輸入設(shè)備輸出設(shè)備控制器運算器數(shù)據(jù)線控制線CPU內(nèi)存2現(xiàn)在的計算機中為什么用二進制?計算機是由電子元器件構(gòu)成用最少的指令描述一件事情--算法,編譯提高‘芯’跳的速度--主頻每拍做更多的事情--體系結(jié)構(gòu)計算機怎樣才能跑得快3用最少的指令描述一件事情提高‘芯’跳的速度每拍做更多的事情計第一代到第四代第一代:電子管計算機(1946-1958)每秒幾千到幾萬次運算馮諾依曼結(jié)構(gòu)第二代:晶體管計算機(1958-1964)每秒幾十萬次高級程序語言出現(xiàn):FORTRAN、COBOL等IBM7094、CDC1604等第三代:中小規(guī)模集成電路計算機(1964-1975)每秒幾百萬次操作系統(tǒng)逐步成熟、小型機出現(xiàn)IBM360、PDP11、VAX11第四代:大規(guī)模集成電路計算機(1975-)每秒億次以上微處理器出現(xiàn):Intel,AMD4第一代到第四代第一代:電子管計算機(1946-1958)4摩爾定律到達尺寸極限后怎么辦?會不會有新材料及新器件技術(shù)取代CMOS?硅的平臺不可能被取代,但硅平臺上生長的器件會不斷改進摩爾定律的進一步延續(xù)的技術(shù):納米線技術(shù)、碳納米管技術(shù)一個普及性的技術(shù)必須可以工業(yè)大規(guī)??芍苽淦渌魏渭夹g(shù)都不具備這個特點成為成熟的產(chǎn)業(yè),從高向廣發(fā)展飛機滿天飛了,汽車還遍地跑5摩爾定律到達尺寸極限后怎么辦?會不會有新材料及新器件技術(shù)取代摩爾定律與系統(tǒng)結(jié)構(gòu)第一階段:晶體管不夠用計算機由很多獨立芯片構(gòu)成計算機結(jié)構(gòu)受限于晶體管數(shù)目不夠第二階段:存儲器速度太慢集成度提高,微處理器蓬勃發(fā)展存儲容量指數(shù)增加,但訪存速度增加緩慢Cache占多達80%的芯片面積第三階段:晶體管越來越多而“難”用設(shè)計驗證能力提高與晶體管增加形成剪刀差功耗問題突出、連線成為主要矛盾不得已向多核發(fā)展第四階段:夠用就行?6摩爾定律與系統(tǒng)結(jié)構(gòu)第一階段:晶體管不夠用6CPU發(fā)展趨勢:高性能,低成本
高性能多核CPU正從向千億次量級向萬億次量級邁進片上運算能力的增加使帶寬問題日益突出結(jié)合一定領(lǐng)域需求的XPU開始盛行,處理器核加向量處理器(VPU)和圖形處理器(GPU)等屬于這類結(jié)構(gòu)。繼功耗問題之后,帶寬問題導(dǎo)致第二次結(jié)構(gòu)變革功耗問題導(dǎo)致多核結(jié)構(gòu),帶寬問題導(dǎo)致專用核結(jié)構(gòu)為了提高性能而犧牲微處理器的通用性和可編程性7CPU發(fā)展趨勢:高性能,低成本高性能多核CPU正從向千Question?1多核技術(shù)出現(xiàn)原因?22個1G的多核Vs2G的單核處理器3編程模型:SIMDvsMIMD?4虛擬化技術(shù)的意義?8Question?1多核技術(shù)出現(xiàn)原因?22個1G的多核主頻障礙過去主頻的提高一半靠摩爾定律,一半靠結(jié)構(gòu)優(yōu)化如P3是10級流水線,P4是20級流水線流水線很難再細分隨著晶體管尺寸的縮小,連線延遲成為主要延遲局部線延遲不變(變短了,但也變細了)全局的連線延遲還會不斷變長(芯片面積不變)高主頻的復(fù)雜設(shè)計正在終結(jié)強調(diào):局部化、流水化、異步、自定時9主頻障礙過去主頻的提高一半靠摩爾定律,一半靠結(jié)構(gòu)優(yōu)化9復(fù)雜度障礙晶體管數(shù)目的指數(shù)增加與設(shè)計隊伍的增加形成剪刀差設(shè)計能力、驗證能力晶體管越來越難用串?dāng)_問題、片上漂移、可制造性設(shè)計處理器結(jié)構(gòu)經(jīng)歷了簡單、復(fù)雜、簡單、復(fù)雜的螺旋上升過程最早期的處理器結(jié)構(gòu)由于工藝技術(shù)的限制,不可能做得很復(fù)雜,一般都是串行執(zhí)行隨著流水線、動態(tài)調(diào)度、CACHE、向量機技術(shù)等技術(shù)的發(fā)展,處理器結(jié)構(gòu)變得復(fù)雜,如IBM360系列的機器以及Cray的向量機RISC技術(shù)的提出使處理器結(jié)構(gòu)得到一次較大的簡化隨著多發(fā)射亂序執(zhí)行技術(shù)的實現(xiàn),RISC結(jié)構(gòu)越來越復(fù)雜,Intel和HP研制的EPIC結(jié)構(gòu)沒有從根本上對處理器結(jié)構(gòu)進行簡化10復(fù)雜度障礙晶體管數(shù)目的指數(shù)增加與設(shè)計隊伍的增加形成剪刀差10未來可能會流行的CPU結(jié)構(gòu)多核+向量處理典型:Larrabee(16wayALU/512bit)向量的位寬:64/128/256/512/1024……眾核:同構(gòu)的基于分片的多核(tilebased)典型:Tile64處理器核的個數(shù):64/128512/1024帶有協(xié)處理器的異構(gòu)多核典型:CELL通用處理器+專用的協(xié)處理器(GPU、流處理器)11未來可能會流行的CPU結(jié)構(gòu)多核+向量處理11摩爾定律發(fā)展過程中碰到的“墻”1980’s:存儲墻CPU變快,內(nèi)存只變大不變快80%的晶體管用于片內(nèi)高速緩存等2000’s:功耗墻一Intel放棄4GHz的PentiumIV為標(biāo)志,終止復(fù)雜的高主頻設(shè)計多核設(shè)計成為主流未來還有可能碰到的“墻”帶寬墻:“茶壺里倒餃子”(性能和帶寬1-2FLOPS:1BPS的關(guān)系)成本墻:太貴了做不起(目前只剩Intel、IBM、TSMC三家)或用不起(10nm以后單片成本反而增加)應(yīng)用墻:16核以上的CPU賣給誰?量大面廣的應(yīng)用需要多少核?如果克服不了上述“墻”,通用CPU的摩爾定律到2015年即告終止12摩爾定律發(fā)展過程中碰到的“墻”1980’s:存儲墻12帶寬障礙摩爾定律的新定義片內(nèi)處理器核的個數(shù)指數(shù)增長封裝引腳增加緩慢每個核使用的引腳數(shù)指數(shù)下降茶壺里倒餃子高速信號傳輸緩解帶寬瓶頸目前引腳上的信號頻率已經(jīng)達到GHz很快會出現(xiàn)板上頻率高于片內(nèi)頻率的現(xiàn)象13帶寬障礙摩爾定律的新定義13提高計算機的性能:
減少指令數(shù)和提高IPC結(jié)構(gòu)提高計算機性能的常用方法和原則加快經(jīng)常性事件的速度局部性原理利用并行性歸一化時間計算方法當(dāng)負載中各程序的執(zhí)行百分比不同時,計算加權(quán)執(zhí)行時間是一種方法,另一種方法是“歸一化”。就是說,將執(zhí)行時間對一臺參考機器進行歸一化,然后取其歸一化執(zhí)行時間的平均值。SPEC測試程序套件采用了該方法。平均歸一化時間既可表示為算術(shù)平均值,也可表示為幾何平均值。14提高計算機的性能:
減少指令數(shù)和提高IPC結(jié)構(gòu)提高計算機性能影響CPU性能的因素Inst.CountCPIClockRateProgramXCompilerX(X)ISAXXOrganizationXXTechnologyX性能的最本質(zhì)定義完成一個任務(wù)(如后天的天氣預(yù)報)所需的時間以指令為基本單位15影響CPU性能的因素Inst.CountCPIClockCPI及IPC在指令系統(tǒng)確定后,系統(tǒng)結(jié)構(gòu)設(shè)計者的主要目標(biāo)就是降低CPI或提高IPC平均CPI“AverageCyclesperInstruction”CPI=(CPUTime*ClockRate)/InstructionCount=Cycles/InstructionCountInstructionFrequency16CPI及IPC在指令系統(tǒng)確定后,系統(tǒng)結(jié)構(gòu)設(shè)計者的主要目標(biāo)就是開發(fā)并行性指令級并行是過去的20年里體系結(jié)構(gòu)設(shè)計者提升性能的主要途徑時間并行性:指令流水線空間并行性:SuperScalar(Out-of-Order)和EPIC(編譯器優(yōu)化)進一步挖掘指令級并行的空間不大數(shù)據(jù)級并行:SIMD向量機SSE多媒體指令作為指令級并行的有效補充,在高性能計算及流媒體等領(lǐng)域發(fā)揮重要作用,在專用處理器中應(yīng)用較多線程級并行線程級并行大量存在于Internet應(yīng)用多核處理器多線程處理器是目前的熱點17開發(fā)并行性指令級并行17低功耗優(yōu)化方法優(yōu)化對象動態(tài)功耗優(yōu)化靜態(tài)功耗優(yōu)化優(yōu)化層次系統(tǒng)級算法級邏輯級電路級版圖及工藝級18低功耗優(yōu)化方法優(yōu)化對象18在三臺不同指令系統(tǒng)的計算機上運行同一程序P時,A機需要執(zhí)行1.0*108條指令,B機需要執(zhí)行2.0*108條指令,C機需要執(zhí)行4.0*108條指令,但實際執(zhí)行時間都是10秒,請分別計算這三臺機器在實行程序P時的實際運行速度,以MIPS為單位。這三臺計算機在運行程序P時,哪臺性能最高?為什么?2.如果要給標(biāo)量處理器增加向量運算部件,并且假定向量模式的運算速度是標(biāo)量模式的8倍,這里把向量模式所占的百分比時間稱作向量化百分比。a)畫出一張圖來表示加速比和向量化百分比的關(guān)系,X軸為向量化百分比,Y軸為加速比。b)向量化百分比為多少時,加速比能達到2?當(dāng)加速比達到2時,向量模式占了運算運行時間的百分之多少?向量化百分比為多少時,加速比能達到最大加速比的一半?c)假設(shè)程序的向量化百分比為70%。如果需要繼續(xù)提升處理器的性能,一種方法是增加硬件成本將向量部件的速度提高一倍,另外一種方法是通過改進編譯器來提高向量模式的應(yīng)用范圍,那么需要提升多少向量化百分比才能得到與向量部件運算速度提高一倍得到相同的性能?你推薦哪一種設(shè)計方案?3.假設(shè)有一個代表典型應(yīng)用的基準(zhǔn)測試程序。一款不包含浮點部件的處理器(可以通過整數(shù)指令的模擬來執(zhí)行浮點指令)運行該基準(zhǔn)程序的運行速度是120MIPS,在該處理器上增加浮點協(xié)處理器后運行該基準(zhǔn)程序的運行速度是80MIPS。下面給出了一些參數(shù):I-基準(zhǔn)測試中整數(shù)指令的數(shù)目,F(xiàn)-基準(zhǔn)測試中浮點指令的數(shù)目,Y-模擬一條浮點指令需要的整數(shù)指令的數(shù)目,W-無浮點協(xié)處理器時基準(zhǔn)程序的運行時間,B-有浮點協(xié)處理器時基準(zhǔn)程序的運行時間。a)用上面的參數(shù)符號表示出兩種配置處理器的MIPS值。b)在沒有協(xié)處理器的配置下,假定F=8*106,Y=50,W=4秒,求I的值。c)在上題的條件下,求B的值。d)在包含協(xié)處理器的配置下,系統(tǒng)的MFLOPS是多少?e)你的同事想要購買這種協(xié)處理器來提高性能,而該配置下MIPS降低了,請問他的決策正確嗎?解釋你的觀點5.對某處理器進行功耗測試,得到如下數(shù)據(jù):時鐘不翻轉(zhuǎn),電壓1.2V時,電流為500mA;時鐘頻率為1GHz,電壓1.2V時,電流為2500mA。請計算此處理器的靜態(tài)功耗以及500MHz下的總功耗。高級計算機體系結(jié)構(gòu)(精編)ppt課件191.解:A為10MIPS,B為20MIPS,C為40MIPS。三臺機器實際性能相同。2.解:加速比y與向量化比例x之間的關(guān)系是:y=1/((1-x)+x/8)=1/(1-7x/8)……(A)(2)在式(A)中令y=2,可解得x=4/7≈57.14%。此時向量模式運行時間占總時間比例是((4/7)/8)/(3/7+((4/7)/8))=1/7=14.29%(3)硬件方法,整體加速比為1/(1-0.7*(1-1/16))=2.91軟件方法,設(shè)相同加速比下向量化比例為x,即1/(1-7x/8)=2.91,x=0.75所以推薦軟件方法。3.解:(1)MIPSEMUL=(I+F×Y)/(W×106);MIPSFPU=(I+F)/(B×106)(2)120=(I+8×106×50)/(4×106)=>I=80×106(3)80=(80×106+8×106)/(B×106)=>B=1.1(4)MFLOPS=F/((B-((W*I)/(I+F*Y)))×106)≈18.46(5)決策正確,因為執(zhí)行時間縮短了,這才是關(guān)鍵標(biāo)準(zhǔn)。5.解:1.1V下靜態(tài)功耗1.1*1.1/(1.05/0.5)=0.576W1.1V下1GHZ時動態(tài)功耗為1.1*2.5-0.576=2.174W1.1V下0.5GHZ功耗功耗為2.174*0.5/1=1.087W1.1V下0.5GHZ總功耗為1.087+0.576=1.663W201.解:A為10MIPS,B為20MIPS,C為40二.二進制與邏輯電路計算機中數(shù)的表示CMOS門電路及工藝CMOS組合邏輯與時序邏輯CMOS電路延遲從Verilog到GDSII其它“0”和“1”表示方法21二.二進制與邏輯電路計算機中數(shù)的表示21計算機中數(shù)的表示二進制最容易邏輯實現(xiàn)自然界中的二值系統(tǒng)較多“1”和“0”的表示用電壓的高低表示,半導(dǎo)體工藝,CMOS用磁通量的有無表示,超導(dǎo)體工藝用能級的高低表示,量子計算機用基因序列表示,A,G,C,T,DNA計算機,非二進制?22計算機中數(shù)的表示二進制22定點數(shù)的表示(1)原碼:A=an-1an-2…...a1a0表示最高位an-1為符號位,0表示正,1表示負。其它位an-2…...a1a0表示數(shù)值。原碼的問題:加減法效率低,兩個“0”補碼本質(zhì)是取模運算,如-2%12=10最高位an-1為符號位,0表示正,1表示負。A=an-1an-2…...a1a0表示(-2n-1an-1+an-2…...a1a0)an-1==0時,補碼和原碼一樣,A表示正an-2…...a1a0
。an-1==1時,A表示(-2n-1+an-2…...a1a0)。原碼與補碼的轉(zhuǎn)換最高位為0時,一樣最高位為1時,最高位不變,其余位“按位取反加一”。23定點數(shù)的表示(1)原碼:A=an-1an-2…...a定點數(shù)的表示(2)補碼運算取負數(shù),每一位(包括符號位)求補,即按位取反加一。A-B=A+B的負數(shù)=A+(B求補)加法溢出判斷:A和B的最高位一樣,且結(jié)果的最高位與A和B的最高位不一樣。1001+0101(-7+5)=1110,1100+0100(-4+4)=0000,0011+0100(3+4)=0111,1100+1111(-4-1)=1011,0101+0100(5+4)=1001,1001+1010(-7-6)=001124定點數(shù)的表示(2)補碼運算24浮點數(shù)的表示(1)定點數(shù)的不足表示范圍有限,太大或太小的數(shù)都不能表示除法不精確浮點數(shù)的表示:IEEE754標(biāo)準(zhǔn)三部分組成:符號位,階碼(exponent),尾數(shù)(fraction)最高位是符號位階碼的移碼表示,底為2,2(階碼-偏移值)
規(guī)格化表示,尾數(shù)的最高位總為1,因此可以不存單精度和雙精度擴展的單雙精度SExp.(8)Fraction(23)SExp.(11)Fraction(52)25浮點數(shù)的表示(1)定點數(shù)的不足SExp.(8)Fracti浮點數(shù)的表示(2)IEEE754浮點格式參數(shù)26浮點數(shù)的表示(2)IEEE754浮點格式參數(shù)26定點數(shù)的表示分別給出64位定點原碼和補碼表示的數(shù)的范圍;在32位定點補碼表示中,0x80000000表示什么數(shù)?按照以下要求將浮點數(shù)表示出來把單精度數(shù)轉(zhuǎn)化為十進制數(shù):0x7ff0000,0xbe400000,0xff800000把雙精度數(shù)轉(zhuǎn)化為十進制數(shù):0x4035000000000000,0x8008000000000000把十進制數(shù)轉(zhuǎn)化為單精度數(shù):-100.0,0.25把十進制數(shù)轉(zhuǎn)化為雙精度數(shù):1024.0,0.2527定點數(shù)的表示271.解:
(1)[-(263-1),263-1]和[-263,263-1]
(2)-231
2.解:
(1)0x7ff0000=0,00001111,11111110000000000000000=(1.1111111)2*2(15-127)
=3.8368135610839464260099560574934e-34
0xbe400000=1,01111100,1000000000000000000=-(1.1)2*2(124-127)=-0.1875
0xff800000=1,11111111,0000000000000000000=-∞
(2)0x4035000000000000=0,10000000011,010100000000000000000000000000000000
0000000000000000=(1.0101)2*2(1027-1023)=21
0x8008000000000000=
1,00000000000,1000000000000000000000000000000000000000000000000000
=-(0.1)2*2-1022=-2-1023
(3)-100.0=-(1.100100)2*26=0b11000010110010000000000000000000=0xc2c80000
0.25=(1.0)*2-2=0b00111110100000000000000000000000=0x3e800000;
(4)1024.0=(1.0)*210=0x4090000000000000
0.25=(1.0)*2-2=0x3fd0000000000000281.解:
(1)[-(263-1),263-1]和[-三.指令系統(tǒng)結(jié)構(gòu)ISA指令系統(tǒng)結(jié)構(gòu)的設(shè)計原則影響指令系統(tǒng)結(jié)構(gòu)的因素指令系統(tǒng)的分類指令系統(tǒng)的組成RISC指令系統(tǒng)結(jié)構(gòu)RISC系統(tǒng)結(jié)構(gòu)的簡史不同RISC結(jié)構(gòu)的比較29三.指令系統(tǒng)結(jié)構(gòu)ISA指令系統(tǒng)結(jié)構(gòu)的設(shè)計原則29指令系統(tǒng)的設(shè)計原則指令系統(tǒng)在計算機中的位置硬件和軟件的界面設(shè)計要求兼容性:在很長時間內(nèi)保持不變,如X86通用性:編譯器或程序員覺得好用,有較多功能,適合于各種應(yīng)用高效性:便于CPU設(shè)計的優(yōu)化,不同的實現(xiàn)方法得到不同的性能安全性:支持通用操作系統(tǒng),考慮不同的安全要求30指令系統(tǒng)的設(shè)計原則指令系統(tǒng)在計算機中的位置30指令系統(tǒng)的分類從功能上分類算術(shù)與邏輯運算、轉(zhuǎn)移、訪存、系統(tǒng)指令…從指令使用數(shù)據(jù)的方式堆棧型、累加器型、寄存器型...從指令編碼定長、變長31指令系統(tǒng)的分類從功能上分類31指令系統(tǒng)的類型堆棧型(Stack):零地址指令操作數(shù)在棧頂,運算操作不用指定操作數(shù)累加器型(Accumulator):單地址指令一個操作數(shù)總在累加器中,結(jié)果也寫回累加器寄存器型(Register):多地址指令Register-Register型Register-Memory型Memory-Memory型32指令系統(tǒng)的類型堆棧型(Stack):零地址指令32指令系統(tǒng)的組成指令的主、謂、賓CPU、操作、操作數(shù)操作數(shù)數(shù)據(jù)類型:定點/浮點,32位/64位…訪存對象:字節(jié)/半字/字/雙字,大/小尾端…尋址方式:寄存器、立即數(shù)、直接、間接...操作算術(shù)與邏輯運算、轉(zhuǎn)移、訪存、系統(tǒng)指令…指令訪問控制:轉(zhuǎn)移指令指令編碼定長、變長33指令系統(tǒng)的組成指令的主、謂、賓33尋址方式如何在指令中表示訪存地址34尋址方式如何在指令中表示訪存地址34尋址方式小結(jié)至少支持以下尋址方式RegisterImmediateDisplacementRegisterindirect指令中常數(shù)位數(shù)地址偏移量位數(shù)12-16位立即數(shù)位數(shù)8-16位35尋址方式小結(jié)至少支持以下尋址方式35轉(zhuǎn)移指令轉(zhuǎn)移指令類型條件轉(zhuǎn)移/無條件轉(zhuǎn)移過程調(diào)用/過程返回轉(zhuǎn)移地址類型相對:PC+偏移量絕對:指令中給出轉(zhuǎn)移地址間接:根據(jù)寄存器內(nèi)容轉(zhuǎn)移(編譯器不知道目標(biāo)地址),如Switch語句、函數(shù)指針、動態(tài)鏈接、過程返回等36轉(zhuǎn)移指令轉(zhuǎn)移指令類型36指令編碼需要考慮的因素操作碼部分比較簡單操作數(shù)的個數(shù)、類型對指令長度影響很大變長指令程序代碼短、定長指令實現(xiàn)簡單編碼方法定長:RISC變長:VAX的指令1-53字節(jié),其中ADD指令3-19字節(jié),Intel的X86指令1-17字節(jié)混合:IBM360/370,MIPS16,Thumb,TITMS320C54x37指令編碼需要考慮的因素37MIPS指令類型訪存指令(包括定點和浮點)運算指令(包括定點和浮點)比較和轉(zhuǎn)移指令(包括定點和浮點)系統(tǒng)管理指令TLB、CACHE、例外處理TRAP、Breakpoint38MIPS指令類型訪存指令(包括定點和浮點)38常見RISC指令系統(tǒng)比較通過比較常見RISC處理器的指令系統(tǒng)加深對RISC的了解MIPS、PA-RISC、PowerPC、SPARC通過以下方面進行比較指令格式尋址方式指令功能39常見RISC指令系統(tǒng)比較通過比較常見RISC處理器的指令系統(tǒng)指令格式比較OP(6)RS1(5)RS2(5)Const(16)MIPSOP(6)RD(5)RS1(5)Const(16)PowerPCOP(6)RS1(5)RS2(5)Const(11)OPX(6)PA-RISCRS1(5)1RD(5)OP(2)OPX(6)Const(13)SPARCOP(6)RS1(5)RS2(5)RD(5)SA(5)OPX(6)MIPSOP(6)RD(5)RS1(5)RS2(5)OPX(11)PowerPCOP(6)RS1(5)RS2(5)RD(5)OPX(11)PA-RISCRS1(5)RS2(5)0RD(5)OP(2)OPX(6)OPX(8)SPARCOP(6)RS1(5)OPX/RS2Const(14)MIPSOP(6)OPX(5)RS1(5)Const(16)PowerPCOP(6)RS1(5)RS2(5)Const(11)OPX(3)PA-RISCOP(2)OPX(11)Const(19)SPARCOPXOCOP(6)Const(24)MIPSOP(6)Const(26)PowerPCOP(6)RS1(5)RS2(5)Const(14)PA-RISCOP(2)Const(30)SPARCOPXOCReg-RegReg-ImmBranchJump/Call40指令格式比較OP(6)RS1(5)RS2(5)Const(1指令功能比較所有RISC處理器都有一些公共指令load/store指令算術(shù)運算及邏輯指令控制流指令系統(tǒng)管理指令不同處理器在發(fā)展過程中形成的特色舉例MIPS的非對齊訪問SPARC的寄存器窗口PowerPC的Link和Count寄存器HP的Nullification……41指令功能比較所有RISC處理器都有一些公共指令411.給定下面的代碼片段:
A=B-C;
D=A-C;
B=D+A;
a)分別寫出上述代碼片段在四種指令系統(tǒng)類型(堆棧型、累加器型、寄存器-存儲器型、寄存器-寄存器型)下的匯編語言代碼。
b)假設(shè)操作碼占用8位編碼,內(nèi)存地址和操作數(shù)都是16位,寄存器型結(jié)構(gòu)有16個通用寄存器。對每種結(jié)構(gòu)回答以下問題:1)需要讀取多少指令字節(jié)?2)與內(nèi)存交換的數(shù)據(jù)有多少字節(jié)?3)依據(jù)代碼量衡量哪種結(jié)構(gòu)最好?4)依據(jù)與內(nèi)存交換的數(shù)據(jù)(指令和數(shù)據(jù))量衡量哪種結(jié)構(gòu)最好?
2.16進制數(shù)0x4C4F4F4E47534F4E要存在64位雙字中。
a)假設(shè)存儲是假設(shè)存儲是8字節(jié)對齊的,請依據(jù)小尾端格式將此16進制數(shù)寫入內(nèi)存中,并將每個字節(jié)解釋為一個ASCII字符寫在對應(yīng)的字節(jié)下邊。
b)按照大尾端的格式重做上題。
3.假定在指令系統(tǒng)設(shè)計中需要考慮兩種條件轉(zhuǎn)移指令的設(shè)計方法,這兩種方法如下。1)CPUA:先通過一條比較指令設(shè)置條件碼A,再用一條分支指令檢測條件碼。2)CPUB:比較操作包含在分支指令中
在兩種CPU中,條件轉(zhuǎn)移指令都需要兩個時鐘周期,所有其他指令都需要一個時鐘周期。在CPUA中,全部指令的25%是條件轉(zhuǎn)移指令,因為每次條件轉(zhuǎn)移都需要一次比較,所以比較指令約占所有指令的25%,因為CPUA不需要在轉(zhuǎn)移中包含分支,所以它的時鐘頻率是CPUB的1.2倍。請問哪一種CPU性能更高?如果CPUA的時鐘頻率只是CPUB的1.1倍,結(jié)果又是多少?
1.給定下面的代碼片段:
A=B-C;
D=A-C;
B=424.如果對通常的MIPS指令集增加寄存器-內(nèi)存形式的指令,如下所示,可以減少一些load數(shù)量。Lw$1,0($n)add$2,$2,$1
可以合并成一條指令:add$2,0($n)
1)給出一段符合上述例子的代碼(load得到的值立即作為運算指令的源操作數(shù)),但是編譯器依然無法用寄存器-內(nèi)存形式的指令消除這條load指令。
2)假設(shè)這樣的修改帶來了5%的主頻下降,同時沒有CPI影響。如果load占所有指令的26%,最少要消滅load指令的百分之多少,才能使得新指令集不導(dǎo)致性能下降?
3)在傳統(tǒng)的靜態(tài)5級流水線上,寄存器-內(nèi)存形式的指令有何實現(xiàn)困難?
5.根據(jù)MIPS指令的編碼格式回答下列問題。
1)條件轉(zhuǎn)移指令的跳轉(zhuǎn)范圍是多少?
2)直接跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍是多少?
6.用MIPS的LWL/LWR/SWL/SWR指令編寫一段程序,把內(nèi)存單元1005~1008的值取到寄存器R1,再存到內(nèi)存單元2005~2008中。
7.用MIPS的LL/SC指令編寫一段從內(nèi)存單元100(R2)取數(shù),把取出來的數(shù)加100并存回到100(R2)的原子操作代碼,并說明如果在此過程中處理器發(fā)生中斷或該單元被其他處理器修改時處理器如何保證上述操作的原子性。
4.如果對通常的MIPS指令集增加寄存器-內(nèi)存形式的指令,43堆棧型累加器型寄存器-存儲器型寄存器-寄存器型匯編代碼PushB;PushCSub;PopAPushA;PushCSub;PopDPushD;PushAAdd;PopBLoadC;NegAddB;StoreALoadC;NegAddA;StoreDAddA;StoreBLoadR1,BSubR1,CStoreR1,ASubR1,CStoreR1,DAddR1,AStoreR1,BLoadR1,BLoadR2,CSubR3,R1,R2StoreR3,ASubR4,R3,R2StoreR4,DAddR5,R4,R3StoreR5,B指令字節(jié)30262829內(nèi)存交換字節(jié)48424239代碼量衡量√交換數(shù)據(jù)量衡量√1.解(1)44堆棧型累加器型寄存器-存儲器型寄存器-寄存器型匯編Push2.解:小尾端:
Address0xxx0000xxx0010xxx0100xxx0110xxx1000xxx1010xxx1100xxx111
0x4E4F53474E4F4F4C
大尾端:
Address0xxx0000xxx0010xxx0100xxx0110xxx1000xxx1010xxx1100xxx111
0x4C4F4F4E47534F4E
3.解:假設(shè)CPUA總指令數(shù)為x,轉(zhuǎn)移指令有0.25x,條件碼指令0.25x,其它指令0.5x
A執(zhí)行周期數(shù)2*0.25x+0.75x=1.25x
則CPUB總指令數(shù)為0.75x,其中轉(zhuǎn)移指令0.25x,其它指令0.5x。
B執(zhí)行周期數(shù)2*0.25x+0.5x=1x
當(dāng)CPUA頻率為1.2倍時,性能是CPUB的1.2/1.25=0.96倍
當(dāng)CPUA頻率為1.1倍時,性能是CPUB的1.1/1.25=0.88倍
因此CPUA兩種情況下都差
4.a)lw$1,0($n)
add$2,$2,$1
bnez$1,1f//任何將$1作為src的指令都可以
b)假設(shè)需要減少x的load指令。減少后,指令數(shù)為1-0.26x。則(1-0.26x)/0.95=1
x=0.19%
c)困難在于訪存MEM在EXE之前就要進行,而add$2,0($n)需要先訪存后EXE
2.解:小尾端:
Address0xxx0000xxx0455.
a)條件轉(zhuǎn)移指令的跳轉(zhuǎn)范圍。16+2位256KB(+-128KB)
b)直接跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍。26+2位256MB(+-128MB)
6.解:
小尾端下
dlir2,1005
lwrr1,0x0(r2)
lwlr1,0x3(r2)
dlir2,2005
swrr1,0x0(r2)
swlr1,0x3(r2)
7.解:
1:llr1,100(r2)
addr1,r1,100
scr1,100(r2)
beqzr1,1b
nop
如果在ll和sc之間(含ll和sc),發(fā)生了中斷或者其他處理器修改100(r2),則sc之后r1會變0,回到標(biāo)號1重新執(zhí)行。
5.
a)條件轉(zhuǎn)移指令的跳轉(zhuǎn)范圍。16+2位256K46四.指令流水線一個簡單的CPU數(shù)據(jù)通路控制邏輯時序控制指令流水線指令相關(guān)和流水線沖突流水線的前遞技術(shù)流水線和例外多功能部件與多拍操作47四.指令流水線一個簡單的CPU47指令流水線:時序的改進上述時序的三個步驟指令地址送到PC、取指到IR、計算結(jié)果到GPR可以合并為兩個計算下一條指令的PC和指令執(zhí)行重疊可以把計算下一拍PC值作為指令執(zhí)行的一部分(轉(zhuǎn)移指令的運算結(jié)果是PC的值)48指令流水線:時序的改進上述時序的三個步驟可以合并為兩個48
能否把取指和運算也重疊?大多數(shù)情況可以重疊第n+1條指令執(zhí)行時,第n條指令已經(jīng)執(zhí)行完,因此第n+1條指令可以用到第n條指令的結(jié)果。但有一個例外如果第n+1條指令的取指也要用到第n條指令的結(jié)果,則第n+1條指令的取指必須等到第n條指令結(jié)束后才能執(zhí)行。正是Branch指令的情況,可以用delayslot解決這個問題49能否把取指和運算也重疊?大多數(shù)情況可以重疊49上述流水線的進一步改進上述流水線是兩級流水線取指和執(zhí)行執(zhí)行階段做的事情較多譯碼(包括讀取寄存器的值)運算(ALU操作)訪存(取數(shù)或存數(shù))寫回到寄存器時鐘周期較長,一拍內(nèi)必須做完上述四件事情可以把執(zhí)行階段再細分執(zhí)行階段分成譯碼、運算、訪存、寫回50上述流水線的進一步改進上述流水線是兩級流水線50流水線的相關(guān)問題指令相關(guān)的概念流水線變深了,相關(guān)問題更為突出。在流水線中,如果某指令的某個階段必須等到它前面另一條指令的某個階段后才能開始,則這兩條指令存在相關(guān)相關(guān)的指令要隔開足夠遠,否則后面的指令就必須等待在我們的流水線中,可能發(fā)生如下相關(guān)紅線表示數(shù)據(jù)相關(guān)藍線表示轉(zhuǎn)移相關(guān)(從中可看出轉(zhuǎn)移指令在譯碼階段執(zhí)行的必要性)還有結(jié)構(gòu)相關(guān)(在我們的例子中不存在)51流水線的相關(guān)問題指令相關(guān)的概念51指令流水線的相關(guān)數(shù)據(jù)相關(guān):使用同一個寄存器引起的相關(guān)如后面的指令用到前面指令的結(jié)果控制相關(guān):與PC有關(guān)的相關(guān)每條指令取指用到PC,轉(zhuǎn)移指令修改PC結(jié)構(gòu)相關(guān):資源沖突多條指令同時使用一個功能部件相關(guān)引起流水線阻塞52指令流水線的相關(guān)數(shù)據(jù)相關(guān):使用同一個寄存器引起的相關(guān)52由訪存引起的結(jié)構(gòu)相關(guān)訪存和取指都需要存儲器端口Havard結(jié)構(gòu)loadinst1inst2inst3inst4loadinst1inst2inst3nopinst453由訪存引起的結(jié)構(gòu)相關(guān)訪存和取指都需要存儲器端口loadloa數(shù)據(jù)相關(guān)RAW(ReadAfterWrite)后面指令用到前面指令所寫的數(shù)據(jù)WAW(WriteAfterWrite)兩條指令寫同一個單元在簡單流水線中沒有此類相關(guān),因為不會亂序執(zhí)行WAR(WriteAfterRead)后面指令覆蓋前面指令所讀的單元在簡單流水線中沒有此類相關(guān)在動態(tài)流水線中會有WAR和WAW相關(guān)54數(shù)據(jù)相關(guān)RAW(ReadAfterWrite)54數(shù)據(jù)相關(guān)的例子addr1,r2,r3subr4,r1,r3andr6,r1,r7orr8,r1,r9xorr10,r1,r1155數(shù)據(jù)相關(guān)的例子addr1,r2,r355控制相關(guān)PC相關(guān)轉(zhuǎn)移指令計算的下一條指令地址在EX階段計算,下一條指令等2拍使用專門的地址運算部件把地址計算提前到譯碼階段可以少等一拍使用一個轉(zhuǎn)移指令延遲槽(delayslot)可以不用等待轉(zhuǎn)移條件相關(guān)如果在ID階段執(zhí)行轉(zhuǎn)移指令時轉(zhuǎn)移指令的源操作數(shù)沒有準(zhǔn)備好還是要等待56控制相關(guān)PC相關(guān)56流水線的前遞技術(shù):
解決RAW相關(guān)的前遞(Forwarding)技術(shù)在執(zhí)行(EX)階段的運算結(jié)果出來后直接送到后續(xù)指令的EX階段addr1,r2,r3subr4,r1,r3andr6,r1,r7orr8,r1,r9xorr10,r1,r1157流水線的前遞技術(shù):
解決RAW相關(guān)的前遞(Forwardin前遞情況下的數(shù)據(jù)相關(guān)取數(shù)指令的結(jié)果在MEM階段才有效,后續(xù)相關(guān)指令需要阻塞一拍lwr1,100(r2)subr4,r1,r3andr6,r1,r7orr8,r1,r9xorr10,r1,r1158前遞情況下的數(shù)據(jù)相關(guān)取數(shù)指令的結(jié)果在MEM階段才有效,后續(xù)相通過靜態(tài)調(diào)度解決相關(guān)如下程序段的優(yōu)化和非優(yōu)化代碼
a=b+c; d=e-f;
Fastcode: LW Rb,b LW Rc,c
LW Re,e ADD Ra,Rb,Rc LW Rf,f
SW a,Ra SUB Rd,Re,Rf SW d,RdSlowcode: LW Rb,b LW Rc,c ADD Ra,Rb,Rc
SW a,Ra LW Re,e LW Rf,f SUB Rd,Re,Rf SW d,Rd59通過靜態(tài)調(diào)度解決相關(guān)如下程序段的優(yōu)化和非優(yōu)化代碼FastcForwarding的相關(guān)處理邏輯以ALU左端的輸入為例當(dāng)s1和前面兩級的目標(biāo)寄存器域d1和d2都不相等時,選擇中間通路當(dāng)s1==d2時,選擇右邊通路當(dāng)s1==d1且當(dāng)前操作不是LD時,選擇左邊通路當(dāng)s1==d1且當(dāng)前操作是LD時,后面流水線暫停,往前面流水線送空操作60Forwarding的相關(guān)處理邏輯以ALU左端的輸入為例60例外(Exception)與流水線例外原因I/O請求:外部中斷指令例外:用戶請求例外系統(tǒng)調(diào)用、斷點、跟蹤調(diào)試指令運算部件整數(shù)運算溢出、浮點異常存儲管理部件訪存地址不對齊、用戶訪問系統(tǒng)空間、TLB失效、缺頁、存儲保護錯(寫只讀頁)保留指令錯:未實現(xiàn)指令硬件錯等等61例外(Exception)與流水線例外原因61例外發(fā)生的流水階段取指:訪存例外譯碼:保留指令、中斷指令如Trap、Syscall執(zhí)行:整數(shù)溢出、浮點異常(如除零)等訪存:訪存例外其它:外部中斷,可能在任何時候發(fā)生例外特征同步與異步用戶請求與系統(tǒng)強制可屏蔽與不可屏蔽指令內(nèi)與指令間可恢復(fù)與結(jié)束62例外發(fā)生的流水階段62在前述例外中,指令內(nèi)可恢復(fù)例外的處理比較困難,條件轉(zhuǎn)移指令的delayslot又增加了例外處理的難度精確例外:在處理例外時,發(fā)生例外指令前面的所有指令都執(zhí)行完,例外指令后面的所有指令還未執(zhí)行。精確例外是存儲管理和IEEE運算規(guī)范的要求發(fā)生例外指令前面的指令繼續(xù)執(zhí)行完后面的指令不能修改機器狀態(tài),對運算狀態(tài)字的修改可能在EX階段進行多條指令發(fā)生例外63在前述例外中,指令內(nèi)可恢復(fù)例外的處理比較困難,條件轉(zhuǎn)移指令的可以把每條指令的例外延遲到WB時再處理對機器狀態(tài)的修改也在WB階段進行對狀態(tài)寄存器的修改從EX階段延遲到WB階段64可以把每條指令的例外延遲到WB時再處理64簡單流水線的例外處理任何一級流水發(fā)生例外時,在流水線中記錄下發(fā)生例外的事件,直到WB階段再處理如果在EX階段要修改機器狀態(tài)(如狀態(tài)寄存器),保存下來直到WB階段再修改。指令的PC值隨指令流水前進到WB階段例外處理專用外部中斷作為IF的例外處理指定通用寄存器中的一個(如最后一個)為例外處理時保存PC值專用。當(dāng)發(fā)生例外的指令在WB階段時:保存該指令的PC(也在WB階段),有些機器還保存其它狀態(tài)置PC值為例外處理程序入口地址65簡單流水線的例外處理651.假定某假定某RISCRISC處理器處理器為標(biāo)準(zhǔn)的五級流水線(IF/ID/EX/MEM/WB)結(jié)構(gòu),并且包含旁路硬件。對于下列指令序:LWR1,0(R0)LWR2,4(R0)ADDR3,R1,R2;a=b+eSWR3,12(R0)LWR4,8(R0)ADDR5,R1,R4;c=b+fSWR5,16(R0)分析上述指令序列之間的相關(guān),并重排序執(zhí)行列避免相關(guān)。指令可以比原先并重排序執(zhí)行列避免相關(guān)。重排指令序列可以比原先指令序列的執(zhí)行減少多少拍?2.對于下面的計算A=+B;C=A-B寫出MIPSMIPS程序代碼,并且畫出5級靜態(tài)流水線(無旁路)上的流水線狀態(tài)。3.對于向量加法X(i)=a*X(i)+Y(i),假設(shè),假設(shè)X,Y的首地址分別存在R1,R2,a的值存在F0中。a)試寫出對應(yīng)的MIPS匯編代碼。b)假設(shè)單發(fā)射流水線結(jié)構(gòu)為IF/ID/EX/MEM/WBI,功能部件足夠,Load、SStore操作和整數(shù)操作都花費1個時鐘周期,加法操作為4個周期,乘法操作為10個周期。給出第一循環(huán)所有指令的流水線時空圖。661.假定某假定某RISCRISC處理器處理器為標(biāo)4.假定某假定某RISC處理器為標(biāo)準(zhǔn)的五級流水線(IF/ID/EX/MEM/WB)結(jié)構(gòu),該靜態(tài)流水線處理器可配置包含硬件旁路電、延遲槽分支預(yù)測等技術(shù),并假定所有的運算和訪存操作均為一拍完成。下面的代碼在該處理器中執(zhí)行Loop:LDR1,0(R2)DADDIR1,R1,#4;R1=R1+4SD0(R2),R1;將R1存入地址0+R2處DADDIR2,R2,#4;R2=R2+4DSUBR4,R3,R2;R4=R3-R2BNEZR4,Loop;已知R3的初值R2+400a)不使用旁路硬件,但在同一個周期內(nèi)寄存器的讀和寫能進行但預(yù)測采nottaken策略,如果猜測錯誤則刷新(flushing)流水線上的錯誤指令,畫出這個指序列在RISC流水線上執(zhí)行的時序,并計算執(zhí)行這個循環(huán)需要多少時鐘周期。b)使用旁路硬件,采taken策略進行分支預(yù)測,如果猜錯誤則刷新(flushing)流水線上的錯誤指令,畫出這個序列在RISC上執(zhí)行的序列,并計算執(zhí)行這個循環(huán)需要多少個時鐘周期。c)假設(shè)RISC流水線帶有單拍的分支延遲和前遞或旁路硬件,對包括槽在內(nèi)指令序列進行調(diào)度,可以重排指令序并修改某些的操作數(shù)但不能改變指令的數(shù)目和采用別的指令,畫出該流水線時序圖并計算整個循環(huán)需要鐘周期數(shù)。5.許多指令集中都會有一條空操作指令(例如MIPS指令集中的nop指令),請給出設(shè)計空指令的幾個作用。674.假定某假定某RISC處理器為標(biāo)準(zhǔn)的五級流水線(1.解:LWR1,0(R0)LWR2,4(R0)ADDR3,R1,R2;a=b+eSWR3,12(R0)LWR4,8(R0)ADDR5,R1,R4;c=b+fSWR5,16(R0)123456789101112131415LWR1,0(R0)IFIDEXMEMWBLWR2,4(R0)IFIDEXMEMWBADDR3,R1,R2IFstallstallstallIDEXMEMWBSWR3,12(R0)stallstallstallIFIDEXMEMWBLWR4,8(R0)stallstallstallIFIDEXMEMWBADDR5,R1,R4stallStallstallIFIDstallEXMEMWBSWR5,16(R0)stallStallstallIFIDstallEXMEMWB681.解:123456789101112131415LWR1排序前共需要15拍。重排后的指令序列為:LWR1,0(R0);LWR2,4(R0);LWR4,8(R0);ADDR3,R1,R2;ADDR5,R1,R4;SWR3,12(R0);SWR5,16(R0)12345678910111213LWR1,0(R0)IFIDEXMEMWBLWR2,4(R0)IFIDEXMEMWBLWR4,8(R0)IFIDEXMEMWBADDR3,R1,R2IFstallstallIDEXMEMWBADDR5,R1,R4stallstallIFIDEXMEMWBSWR3,12(R0)stallstallIFIDEXMEMWBSWR5,16(R0)stallstallIFIDEXMEMWB69排序前共需要15拍。12345678910111213LW123456789101112131415LWR1,0(R0)IFIDEXMEMWBLWR2,4(R0)IFIDEXMEMWBADDR3,R1,R2IFstallstallStallIDEXMEMWBSUBR4,R3,R2stallstallstallIFstallstallStallIDEXMEMWBSWR3,0(R0)stallstallstallstallstallstallIFIDEXMEMWBSWR4,8(R0)stallstallstallstallstallstallIFstallstallIDEXMEMWB通過重排,上述指令序列只需要13拍,減少了2拍。2.解:MIPS代碼如下:LWR1,0(R0);loadALWR2,4(R0);loadBADDR3,R1,R2;A=A+BSUBR4,R3,R2;C=A-BSWR3,0(R0);storeASWR4,8(R0);storeC70123456789101112131415LWR1,0(R3.解:假設(shè)此處的浮點運算均為單精度浮點運算。數(shù)組的長度為N(N<215-1)。 ADDIUR3,R0,N; N SLLR3,R3,2; N*4 ADDUR3,R1,R3; R3=R1+N*4Loop:LWC1F1,0(R1); loadX(i) LWC1F2,0(R2); loadY(i) MUL.SF3,F0,F1; a*X(i) ADD.SF4,F2,F3; a*X(i)+Y(i) ADDIUR1,R1,4; i++forX ADDIUR2,R2,4; i++forY BNER1,R3,Loop SWC1F4,-4(R1); storetoX(i)713.解:711234567891011121314151617LWC1F1,0(R1)IFIDEXMEMWBLWC1F2,0(R2)IFIDEXMEMWBMUL.SF3,F0,F1IFIDEX1EX2EX3EX4MEMWBADD.SF4,F2,F3IFIDstallstallstallEX1EX2EX3MEMWBADDIUR1,R1,4IFIDstallstallstallstallstallEXMEMWBADDIUR2,R2,4IFIDstallstallstallstallstallEXMEMWBBNER1,R3,LoopIFIDstallstallstallstallstallEXMEMWBSWC1F4,-4(R1)IFIDstallstallstallstallstallEXMEMWB721234567891011121314151617LWC14.解://此題中(2)(3)兩小問中認為WB和ID能通過旁路消除相關(guān)。(1)無旁路部件,前99次循環(huán)的流水線時空圖如下123456789101112131415161718192021LDR1,0(R2)IFIDEXMEMWBDADDIR1,R1,4IFstallstallIDEXMEMWBSDR1,0(R2)stallstallIFstallstallIDEXMEMWBDADDIR2,R2,4stallstallstallstallIFIDEXMEMWBDSUBR4,R3,R2stallstallstallstallIFstallstallIDEXMEMWBBNEZR4,LoopstallstallstallstallstallstallIFstallstallIDEXMEMWBLDR1,0(R2)stallstallstallstallstallstallstallstallstallstallIFIDEXMEMWB734.解://此題中(2)(3)兩小問中認為WB和ID能前99次循環(huán),每次都是預(yù)測錯,每個循環(huán)16個時鐘周期。最后一個循環(huán),預(yù)測對,但整個循環(huán)最后一條指令寫回需要18個時鐘周期。共計:16×99+18=1602時鐘周期(2)有旁路,預(yù)測taken,前99次循環(huán)流水線時空圖如下:12345678910111213LDR1,0(R2)IFIDEXMEMWBDADDIR1,R1,4IFIDstallEXMEMWBSDR1,0(R2)IFstallIDEXMEMWBDADDIR2,R2,4stallIFIDEXMEMWBDSUBR4,R3,R2IFIDEXMEMWBBNEZR4,LoopIFIDEXMEMWBLDR1,0(R2)stallIFIDEXMEMWB74前99次循環(huán),每次都是預(yù)測錯,每個循環(huán)16個時鐘周期。最前99次循環(huán),執(zhí)行一個循環(huán)需要8拍。最后一次循環(huán)完整執(zhí)行完需要11拍。共計:8×99+11=803時鐘周期(3)仍認為分支預(yù)測takenLoop:LDR1,0(R2)DADDIR2,R2,#4DSUBR4,R3,R2DADDIR1,R1,#4BNEZR4,LoopSD-4(R2),R11234567891011LDR1,0(R2)IFIDEXMEMWBDADDIR2,R2,4IFIDEXMEMWBDSUBR4,R3,R2IFIDEXMEMWBDADDIR1,R1,4IFIDEXMEMWBBNEZR4,LoopIFIDEXMEMWBSD-4(R2),R1IFIDEXMEMWBLDR1,0(R2)IFIDEXMEMWB75前99次循環(huán),執(zhí)行一個循環(huán)需要8拍。最后一次循環(huán)完整執(zhí)行前99次循環(huán),執(zhí)行一個循環(huán)需要6拍。最后一次循環(huán)完整執(zhí)行完需要10拍。整個循環(huán)共計:6×99+10=604時鐘周期5.解:空操作指令(nop指令),其不改變程序可見寄存器、狀態(tài)寄存器以及內(nèi)存的狀態(tài),以及用于等待需要一定周期執(zhí)行的操作。nop指令的作用,常見的有:取指的強制訪存對齊(memoryalignment),防止相關(guān)風(fēng)險(hazard),以及用于填充延遲槽(branchdelayslot)。76前99次循環(huán),執(zhí)行一個循環(huán)需要6拍。最后一次循環(huán)完整執(zhí)行五.動態(tài)流水線技術(shù)影響流水線效率的因素指令調(diào)度技術(shù)動態(tài)調(diào)度技術(shù)Tomasulo算法動態(tài)流水線的例外處理五.動態(tài)流水線技術(shù)影響流水線效率的因素77影響流水線效率的因素影響RISCCPU性能的因素IronRule:Runtime=程序指令數(shù)*CPIPipelineCPI=IdealpipelineCPI+Structuralstalls+RAWstalls+WARstalls+WAWstalls+Controlstalls影響流水線效率的因素影響RISCCPU性能的因素78程序的相關(guān)性數(shù)據(jù)相關(guān)(真相關(guān)):導(dǎo)致RAW名字相關(guān):會導(dǎo)致WAW和WAR控制相關(guān):條件轉(zhuǎn)移程序的相關(guān)性容易引起流水線堵塞,可以通過軟件和硬件的方法避免堵塞或降低堵塞的影響編譯調(diào)度:如循環(huán)展開亂序執(zhí)行:需要等待的指令不影響其他指令程序的相關(guān)性數(shù)據(jù)相關(guān)(真相關(guān)):導(dǎo)致RAW79定義:指令j數(shù)據(jù)相關(guān)于指令i指令j使用了指令i產(chǎn)生的結(jié)果,或,指令j數(shù)據(jù)相關(guān)于指令k,指令k數(shù)據(jù)相關(guān)于指令i。數(shù)據(jù)相關(guān)的指令不能并行執(zhí)行寄存器的數(shù)據(jù)相關(guān)比較容易判斷存儲器的數(shù)據(jù)相關(guān)不容易判斷:100(R4)=20(R6)?對不同循環(huán)體,20(R6)=20(R6)?1Loop: LD F0,0(R1) 2 ADDD F4,F0,F2 3 SUBI R1,R1,8 4 BNEZ R1,Loop ;delayedbranch5SD 8(R1),F4 ;alteredwhenmovepastSUBI數(shù)據(jù)相關(guān)定義:指令j數(shù)據(jù)相關(guān)于指令i1Loop: LD F0,080兩條指令使用相同名字(寄存器或存儲器),但不交換數(shù)據(jù)逆相關(guān)(Antidependence):指令j寫指令i所讀的存儲單元且i先執(zhí)行。逆相關(guān)會導(dǎo)致流水線WAR相關(guān)。輸出相關(guān)(OutputDependence):指令j與指令i寫同一個單元且i先執(zhí)行。逆相關(guān)會導(dǎo)致流水線WAW相關(guān)。寄存器的名字相關(guān)可以通過寄存器重命名(RegisterRenaming)解決,存儲單元的重命名比較困難100(R4)=20(R6)?對不同循環(huán)體,20(R6)=20(R6)?在前述例子中,編譯器必須知道0(R1)!=-8(R1)!=-16(R1)!=-24(R1)名字相關(guān)兩條指令使用相同名字(寄存器或存儲器),但不交換數(shù)據(jù)名字相關(guān)81靜態(tài)調(diào)度的問題在譯碼階段把指令“隔開”來解決相關(guān)只要有一條指令停止,后面指令就不能前進象是一種譯碼部件的結(jié)構(gòu)相關(guān)對編譯要求高,最好是編譯把相關(guān)指令隔開有些信息在譯碼時難以確定,如是否發(fā)生例外、訪存操作需要多少周期等DIVDf0,f2,f4ADDDf10,f0,f8SUBDf12,f8,f14靜態(tài)調(diào)度的問題在譯碼階段把指令“隔開”來解決相關(guān)DIVDf82基本思想把相關(guān)的解決盡量往后拖延,直到不能再前進前面指令的等待不影響后面指令繼續(xù)前進把譯碼分成兩個階段:發(fā)射和讀操作數(shù)發(fā)射:指令譯碼,檢查結(jié)構(gòu)相關(guān)讀操作數(shù):檢查操作數(shù)是否準(zhǔn)備好,準(zhǔn)備好就讀數(shù),否則等待當(dāng)一條指令在讀操作數(shù)階段等待時,后面指令的發(fā)射可以繼續(xù)進行在什么地方等待?亂序執(zhí)行指令進入是有序的執(zhí)行可以亂序,只要沒有相關(guān)就可執(zhí)行,多條指令同時執(zhí)行結(jié)束也是有序的(早期有些機器是亂序的,現(xiàn)代操作系統(tǒng)一般要求有序結(jié)束),(怎么把亂序變成有序?)與靜態(tài)調(diào)度相比有些相關(guān)編譯無法檢測、編譯器更加簡單、程序性能對機器依賴少DIVDf0,f2,f4ADDDf10,f0,f8SUBDf8,f8,f14動態(tài)調(diào)度思想基本思想DIVDf0,f2,f4動態(tài)調(diào)度思想83假設(shè)只考慮RAW相關(guān),可能發(fā)生如下執(zhí)行次序DIV發(fā)射,F(xiàn)1,F2都準(zhǔn)備好MUL1發(fā)射,F(xiàn)0沒準(zhǔn)備好,所以沒有讀數(shù)據(jù)ADD發(fā)射,F(xiàn)3,F4都準(zhǔn)備好MUL2發(fā)射,F(xiàn)0沒有準(zhǔn)備好,所以沒有讀數(shù)據(jù)ADD完成,F(xiàn)0寫回F0準(zhǔn)備好,MUL1讀數(shù)據(jù)DIV完成,F(xiàn)0寫回F0準(zhǔn)備好,MUL2讀數(shù)據(jù)DIVF0,F1,F2MULF5,F0,F6ADDF0,F3,F4MULF7,F0,F8解決WAW和WAR的辦法假設(shè)只考慮RAW相關(guān),可能發(fā)生如下執(zhí)行次序DIVF0,84為了避免MUL1讀回ADD寫的F0值,MUL2讀回DIV寫的F0值最簡單的做法是在MUL讀F0之前ADD不能寫回,在DIV寫回之前ADD不能寫回,正是記分板的辦法在上述方法中,F(xiàn)0成為瓶頸,它必須保證DIV寫、MUL1讀、ADD寫、MUL2讀的串行次序,這是問題的本質(zhì)所在。真正相關(guān):MUL1用DIV的結(jié)果,MUL2用ADD的結(jié)果,F(xiàn)0最終的結(jié)果為ADD的結(jié)果。MUL1用DIV的結(jié)果不一定通過F0,MUL2用ADD的結(jié)果也不一定通過F0。DIVF0,F1,F2MULF5,F0,F6ADDF0,F3,F4MULF7,F0,F8解決WAW和WAR的辦法為了避免MUL1讀回ADD寫的F0值,MUL2讀回DIV寫的85為了避免MUL1讀ADD寫的F0值,MUL2讀DIV寫的F0值也可以在MUL1的輸入端指定只接收DIV的輸出值,在MUL2的輸入端指定只接收ADD的輸出值,相當(dāng)于DIV直接把結(jié)果寫到MUL1的輸入端,ADD直接把結(jié)果寫到MUL2的輸入端。要求:(1)DIV的輸出連到MUL1的輸入,ADD的輸出連接到MUL2的輸入;(2)MUL1和MUL2的輸入端有寄存器,這些寄存器能夠指定接收哪個部件的輸出作為自己的值同樣,為了避免F0的最終值為DIV所寫的值可以在F0記錄它當(dāng)前接收哪個功能部件所寫的值要求F0有一個標(biāo)志DIVF0,F1,F2MULF5,F0,F6ADDF0,F3,F4MULF7,F0,F8解決WAW和WAR的辦法為了避免MUL1讀ADD寫的F0值,MUL2讀DIV寫的F086上述解決辦法要求每個功能部件的輸入端有一些寄存器每個寄存器(包括功能部件輸入端的寄存器以及通用寄存器)都記錄一個功能部件號,指定它當(dāng)前接收哪個功能部件的值每個功能部件的輸出接到每個功能部件的輸入有了上述功能,WAR和WAW相關(guān)不用阻塞寄存器重命名技術(shù)DIVF0,F1,F2MULF5,F0,F6ADDF0,F3,F4MULF7,F0,F8DIVRenFa,F1,F2MULF5,RenFa,F6ADD(F0,RenFb),F3,F4MULF7,RenFb,F8解決WAW和WAR的辦法上述解決辦法要求DIVF0,F1,F2DIVRe87Tomasulo算法小結(jié)通過動態(tài)調(diào)度緩解流水線阻塞例如減少CACHE失效對性能的影響保留站:重命名寄存器+緩存源操作數(shù)避免寄存器成為瓶頸避免WAW和WAR阻塞缺點硬件復(fù)雜性結(jié)果總線成為瓶頸,多條結(jié)果總線增加硬件復(fù)雜度在IBM360/91后被廣泛使用動態(tài)調(diào)度、寄存器重命名等思想一直被使用:PentiumII;PowerPC604;MIPSR10000;HP-PA8000;Alpha21264Tomasulo算法小結(jié)通過動態(tài)調(diào)度緩解流水線阻塞88例外(Exception)與流水線I/O請求:外部中斷指令例外:用戶請求中斷系統(tǒng)調(diào)用、斷點、跟蹤調(diào)試指令運算部件整數(shù)運算溢出、浮點異常存儲管理部件訪存地址不對齊、用戶訪問系統(tǒng)空間、TLB失效、缺頁、存儲保護錯(寫只讀頁)保留指令錯:未實現(xiàn)指令硬件錯等等例外(Exception)與流水線I/O請求:外部中斷89精確例外的要求:在處理例外時,發(fā)生例外指令前面的所有指令都執(zhí)行完,例外指令后面的所有指令還未執(zhí)行.非精確例外的原因:在亂序執(zhí)行時,前面的指令發(fā)生中斷時,后面的指令已經(jīng)執(zhí)行完并修改了寄存器或存儲單元.在下面的例子中,沒有任何相關(guān),ADDF和SUBF指令可以比DIVF先結(jié)束。如果在ADDF結(jié)束后DIVF發(fā)生例外,此時無法恢復(fù)例外現(xiàn)場記分板和Tomasulo算法中都是非精確例外只要保證后面指令修改機器狀態(tài)時,前面的指令都已經(jīng)不會發(fā)生中斷即可.DIVFf0,f2,f4ADDFf10,f10,f8SUBFf12,f12,f14動態(tài)流水線的精確例外處理精確例外的要求:在處理例外時,發(fā)生例外指令前面的所有指令都90實現(xiàn)精確例外處理的一個辦法是把后面指令對機器狀態(tài)的修改延遲到前面指令都已經(jīng)執(zhí)行完有些指令在EX階段也修改機器狀態(tài),如運算指令修改結(jié)果狀態(tài)在執(zhí)行階段停止流水線會影響后面的指令執(zhí)行可以用一些緩沖器來臨時保存執(zhí)行結(jié)果,當(dāng)前面所有指令執(zhí)行完后,再把保存在緩沖器中的結(jié)果寫回到寄存器或存儲器
在流水線修改機器狀態(tài)時(在執(zhí)行或?qū)懟仉A段)寫到緩沖器增加提交(Commit)階段,把緩沖器的內(nèi)容寫回到寄存器或存儲器提交階段只有前面指令都結(jié)束后才能進行有序提交:亂序執(zhí)行,有序結(jié)束所用的緩沖器通常被稱為ReorderBuffer(ROB)在猜測執(zhí)行中也用上述機制都是在某些情況不確定的情況下先執(zhí)行,但留有反悔的余地硬件支持動態(tài)流水線的精確例外處理實現(xiàn)精確例外處理的一個辦法是把后面指令對機器狀態(tài)的修改延遲到91內(nèi)容:目標(biāo)地址(存數(shù)地址或寄存器號)、值、操作類型寫回時寫回到ROB,因此后面指令有可能從ROB讀操作數(shù)使用ROB號作為重命名號(原來使用保留站號),一條指令的結(jié)果寄存器被重命名為其結(jié)果ROB號保留站重命名源寄存器號,ROB重命名結(jié)果寄存器號提交時把結(jié)果寫回寄存器或存儲器只要一條指令沒有提交,它就不會對寄存器或存儲器的內(nèi)容進行修改,在一條指令沒有提交之前很容易取消該指令(由于前面指令發(fā)生了例外或由于猜測執(zhí)行不正確)ROB可以和WriteBuffer合并ReorderBuffer(ROB)內(nèi)容:目標(biāo)地址(存數(shù)地址或寄存
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- XPE銷售合同范本
- 勞務(wù)居間服務(wù)合同范本
- 化妝品合作合同范本
- 關(guān)于門窗合同范本
- 2024年廈門國際機場防爆安檢人員考試真題
- 加工電子合同范本
- 保安個人勞務(wù)派遣合同范本
- 2024年深圳市龍崗區(qū)青少年業(yè)余體校招聘筆試真題
- 2024年山東青島高新區(qū)營商環(huán)境觀察員社會招募筆試真題
- 農(nóng)資分公司加盟合同范例
- 四川省成都市2024年七年級《英語》上冊月考試題與參考答案
- 2025(人教版)數(shù)學(xué)一年級下冊全冊教學(xué)案
- 蘇科版 八年級物理下冊 第六章 綜合測試卷(2025年春)
- 2025年中學(xué)生心理健康教育心得體會例文(5篇)
- 小學(xué)生學(xué)會公平與公正的行為主題班會
- 2025年湖南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 江蘇省南通市2025屆高三第一次調(diào)研測試數(shù)學(xué)試題(南通一模)(含解析)
- 《大學(xué)物理矢量》課件
- 梅大高速塌方災(zāi)害調(diào)查評估報告及安全警示學(xué)習(xí)教育
- 福建省部分地市2025屆高中畢業(yè)班第一次質(zhì)量檢測 生物試卷(含答案)
- 2024-2025學(xué)年上學(xué)期上海初中英語七年級期末模擬試卷2
評論
0/150
提交評論