




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1一.高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)基礎(chǔ)計(jì)算機(jī)的基本概念什么是計(jì)算機(jī)計(jì)算機(jī)的基本組成衡量計(jì)算機(jī)的因素影響計(jì)算機(jī)設(shè)計(jì)的主要因素及其發(fā)展趨勢(shì)摩爾定律和工藝的發(fā)展計(jì)算機(jī)市場(chǎng)發(fā)展趨勢(shì)多核結(jié)構(gòu)的發(fā)展趨勢(shì)計(jì)算機(jī)重要指標(biāo)性能、成本、功耗我國(guó)計(jì)算機(jī)發(fā)展歷史1一.高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)基礎(chǔ)計(jì)算機(jī)的基本概念2現(xiàn)在的計(jì)算機(jī)中為什么用二進(jìn)制?
計(jì)算機(jī)是由電子元器件構(gòu)成的,二進(jìn)制最易實(shí)現(xiàn)。馮諾億曼結(jié)構(gòu):數(shù)據(jù)和程序都在存儲(chǔ)器中,CPU從內(nèi)存中取指令和數(shù)據(jù)進(jìn)行運(yùn)算并把結(jié)果也放到內(nèi)存中外存儲(chǔ)器輸入設(shè)備輸出設(shè)備控制器運(yùn)算器數(shù)據(jù)線控制線CPU內(nèi)存2現(xiàn)在的計(jì)算機(jī)中為什么用二進(jìn)制?計(jì)算機(jī)是由電子元器件構(gòu)3用最少的指令描述一件事情--算法,編譯提高‘芯’跳的速度--主頻每拍做更多的事情--體系結(jié)構(gòu)計(jì)算機(jī)怎樣才能跑得快3用最少的指令描述一件事情提高‘芯’跳的速度每拍做更多的事情4第一代到第四代第一代:電子管計(jì)算機(jī)(1946-1958)每秒幾千到幾萬次運(yùn)算馮諾依曼結(jié)構(gòu)第二代:晶體管計(jì)算機(jī)(1958-1964)每秒幾十萬次高級(jí)程序語言出現(xiàn):FORTRAN、COBOL等IBM7094、CDC1604等第三代:中小規(guī)模集成電路計(jì)算機(jī)(1964-1975)每秒幾百萬次操作系統(tǒng)逐步成熟、小型機(jī)出現(xiàn)IBM360、PDP11、VAX11第四代:大規(guī)模集成電路計(jì)算機(jī)(1975-)每秒億次以上微處理器出現(xiàn):Intel,AMD4第一代到第四代第一代:電子管計(jì)算機(jī)(1946-1958)5摩爾定律到達(dá)尺寸極限后怎么辦?會(huì)不會(huì)有新材料及新器件技術(shù)取代CMOS?硅的平臺(tái)不可能被取代,但硅平臺(tái)上生長(zhǎng)的器件會(huì)不斷改進(jìn)摩爾定律的進(jìn)一步延續(xù)的技術(shù):納米線技術(shù)、碳納米管技術(shù)一個(gè)普及性的技術(shù)必須可以工業(yè)大規(guī)??芍苽淦渌魏渭夹g(shù)都不具備這個(gè)特點(diǎn)成為成熟的產(chǎn)業(yè),從高向廣發(fā)展飛機(jī)滿天飛了,汽車還遍地跑5摩爾定律到達(dá)尺寸極限后怎么辦?會(huì)不會(huì)有新材料及新器件技術(shù)取6摩爾定律與系統(tǒng)結(jié)構(gòu)第一階段:晶體管不夠用計(jì)算機(jī)由很多獨(dú)立芯片構(gòu)成計(jì)算機(jī)結(jié)構(gòu)受限于晶體管數(shù)目不夠第二階段:存儲(chǔ)器速度太慢集成度提高,微處理器蓬勃發(fā)展存儲(chǔ)容量指數(shù)增加,但訪存速度增加緩慢Cache占多達(dá)80%的芯片面積第三階段:晶體管越來越多而“難”用設(shè)計(jì)驗(yàn)證能力提高與晶體管增加形成剪刀差功耗問題突出、連線成為主要矛盾不得已向多核發(fā)展第四階段:夠用就行?6摩爾定律與系統(tǒng)結(jié)構(gòu)第一階段:晶體管不夠用7CPU發(fā)展趨勢(shì):高性能,低成本
高性能多核CPU正從向千億次量級(jí)向萬億次量級(jí)邁進(jìn)片上運(yùn)算能力的增加使帶寬問題日益突出結(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ā)展趨勢(shì):高性能,低成本高性能多核CPU正從向8Question?1多核技術(shù)出現(xiàn)原因?22個(gè)1G的多核Vs2G的單核處理器3編程模型:SIMDvsMIMD?4虛擬化技術(shù)的意義?8Question?1多核技術(shù)出現(xiàn)原因?22個(gè)1G的多核9主頻障礙過去主頻的提高一半靠摩爾定律,一半靠結(jié)構(gòu)優(yōu)化如P3是10級(jí)流水線,P4是20級(jí)流水線流水線很難再細(xì)分隨著晶體管尺寸的縮小,連線延遲成為主要延遲局部線延遲不變(變短了,但也變細(xì)了)全局的連線延遲還會(huì)不斷變長(zhǎng)(芯片面積不變)高主頻的復(fù)雜設(shè)計(jì)正在終結(jié)強(qiáng)調(diào):局部化、流水化、異步、自定時(shí)9主頻障礙過去主頻的提高一半靠摩爾定律,一半靠結(jié)構(gòu)優(yōu)化10復(fù)雜度障礙晶體管數(shù)目的指數(shù)增加與設(shè)計(jì)隊(duì)伍的增加形成剪刀差設(shè)計(jì)能力、驗(yàn)證能力晶體管越來越難用串?dāng)_問題、片上漂移、可制造性設(shè)計(jì)處理器結(jié)構(gòu)經(jīng)歷了簡(jiǎn)單、復(fù)雜、簡(jiǎn)單、復(fù)雜的螺旋上升過程最早期的處理器結(jié)構(gòu)由于工藝技術(shù)的限制,不可能做得很復(fù)雜,一般都是串行執(zhí)行隨著流水線、動(dòng)態(tài)調(diào)度、CACHE、向量機(jī)技術(shù)等技術(shù)的發(fā)展,處理器結(jié)構(gòu)變得復(fù)雜,如IBM360系列的機(jī)器以及Cray的向量機(jī)RISC技術(shù)的提出使處理器結(jié)構(gòu)得到一次較大的簡(jiǎn)化隨著多發(fā)射亂序執(zhí)行技術(shù)的實(shí)現(xiàn),RISC結(jié)構(gòu)越來越復(fù)雜,Intel和HP研制的EPIC結(jié)構(gòu)沒有從根本上對(duì)處理器結(jié)構(gòu)進(jìn)行簡(jiǎn)化10復(fù)雜度障礙晶體管數(shù)目的指數(shù)增加與設(shè)計(jì)隊(duì)伍的增加形成剪刀差11未來可能會(huì)流行的CPU結(jié)構(gòu)多核+向量處理典型:Larrabee(16wayALU/512bit)向量的位寬:64/128/256/512/1024……眾核:同構(gòu)的基于分片的多核(tilebased)典型:Tile64處理器核的個(gè)數(shù):64/128512/1024帶有協(xié)處理器的異構(gòu)多核典型:CELL通用處理器+專用的協(xié)處理器(GPU、流處理器)11未來可能會(huì)流行的CPU結(jié)構(gòu)多核+向量處理12摩爾定律發(fā)展過程中碰到的“墻”1980’s:存儲(chǔ)墻CPU變快,內(nèi)存只變大不變快80%的晶體管用于片內(nèi)高速緩存等2000’s:功耗墻一Intel放棄4GHz的PentiumIV為標(biāo)志,終止復(fù)雜的高主頻設(shè)計(jì)多核設(shè)計(jì)成為主流未來還有可能碰到的“墻”帶寬墻:“茶壺里倒餃子”(性能和帶寬1-2FLOPS:1BPS的關(guān)系)成本墻:太貴了做不起(目前只剩Intel、IBM、TSMC三家)或用不起(10nm以后單片成本反而增加)應(yīng)用墻:16核以上的CPU賣給誰?量大面廣的應(yīng)用需要多少核?如果克服不了上述“墻”,通用CPU的摩爾定律到2015年即告終止12摩爾定律發(fā)展過程中碰到的“墻”1980’s:存儲(chǔ)墻13帶寬障礙摩爾定律的新定義片內(nèi)處理器核的個(gè)數(shù)指數(shù)增長(zhǎng)封裝引腳增加緩慢每個(gè)核使用的引腳數(shù)指數(shù)下降茶壺里倒餃子高速信號(hào)傳輸緩解帶寬瓶頸目前引腳上的信號(hào)頻率已經(jīng)達(dá)到GHz很快會(huì)出現(xiàn)板上頻率高于片內(nèi)頻率的現(xiàn)象13帶寬障礙摩爾定律的新定義14提高計(jì)算機(jī)的性能:
減少指令數(shù)和提高IPC結(jié)構(gòu)提高計(jì)算機(jī)性能的常用方法和原則加快經(jīng)常性事件的速度局部性原理利用并行性歸一化時(shí)間計(jì)算方法當(dāng)負(fù)載中各程序的執(zhí)行百分比不同時(shí),計(jì)算加權(quán)執(zhí)行時(shí)間是一種方法,另一種方法是“歸一化”。就是說,將執(zhí)行時(shí)間對(duì)一臺(tái)參考機(jī)器進(jìn)行歸一化,然后取其歸一化執(zhí)行時(shí)間的平均值。SPEC測(cè)試程序套件采用了該方法。平均歸一化時(shí)間既可表示為算術(shù)平均值,也可表示為幾何平均值。14提高計(jì)算機(jī)的性能:
減少指令數(shù)和提高IPC結(jié)構(gòu)提高計(jì)算機(jī)15影響CPU性能的因素Inst.CountCPIClockRateProgramXCompilerX(X)ISAXXOrganizationXXTechnologyX性能的最本質(zhì)定義完成一個(gè)任務(wù)(如后天的天氣預(yù)報(bào))所需的時(shí)間以指令為基本單位15影響CPU性能的因素Inst.CountCPICloc16CPI及IPC在指令系統(tǒng)確定后,系統(tǒng)結(jié)構(gòu)設(shè)計(jì)者的主要目標(biāo)就是降低CPI或提高IPC平均CPI“AverageCyclesperInstruction”CPI=(CPUTime*ClockRate)/InstructionCount=Cycles/InstructionCountInstructionFrequency16CPI及IPC在指令系統(tǒng)確定后,系統(tǒng)結(jié)構(gòu)設(shè)計(jì)者的主要目標(biāo)17開發(fā)并行性指令級(jí)并行是過去的20年里體系結(jié)構(gòu)設(shè)計(jì)者提升性能的主要途徑時(shí)間并行性:指令流水線空間并行性:SuperScalar(Out-of-Order)和EPIC(編譯器優(yōu)化)進(jìn)一步挖掘指令級(jí)并行的空間不大數(shù)據(jù)級(jí)并行:SIMD向量機(jī)SSE多媒體指令作為指令級(jí)并行的有效補(bǔ)充,在高性能計(jì)算及流媒體等領(lǐng)域發(fā)揮重要作用,在專用處理器中應(yīng)用較多線程級(jí)并行線程級(jí)并行大量存在于Internet應(yīng)用多核處理器多線程處理器是目前的熱點(diǎn)17開發(fā)并行性指令級(jí)并行18低功耗優(yōu)化方法優(yōu)化對(duì)象動(dòng)態(tài)功耗優(yōu)化靜態(tài)功耗優(yōu)化優(yōu)化層次系統(tǒng)級(jí)算法級(jí)邏輯級(jí)電路級(jí)版圖及工藝級(jí)18低功耗優(yōu)化方法優(yōu)化對(duì)象在三臺(tái)不同指令系統(tǒng)的計(jì)算機(jī)上運(yùn)行同一程序P時(shí),A機(jī)需要執(zhí)行1.0*108條指令,B機(jī)需要執(zhí)行2.0*108條指令,C機(jī)需要執(zhí)行4.0*108條指令,但實(shí)際執(zhí)行時(shí)間都是10秒,請(qǐng)分別計(jì)算這三臺(tái)機(jī)器在實(shí)行程序P時(shí)的實(shí)際運(yùn)行速度,以MIPS為單位。這三臺(tái)計(jì)算機(jī)在運(yùn)行程序P時(shí),哪臺(tái)性能最高?為什么?2.如果要給標(biāo)量處理器增加向量運(yùn)算部件,并且假定向量模式的運(yùn)算速度是標(biāo)量模式的8倍,這里把向量模式所占的百分比時(shí)間稱作向量化百分比。a)畫出一張圖來表示加速比和向量化百分比的關(guān)系,X軸為向量化百分比,Y軸為加速比。b)向量化百分比為多少時(shí),加速比能達(dá)到2?當(dāng)加速比達(dá)到2時(shí),向量模式占了運(yùn)算運(yùn)行時(shí)間的百分之多少?向量化百分比為多少時(shí),加速比能達(dá)到最大加速比的一半?c)假設(shè)程序的向量化百分比為70%。如果需要繼續(xù)提升處理器的性能,一種方法是增加硬件成本將向量部件的速度提高一倍,另外一種方法是通過改進(jìn)編譯器來提高向量模式的應(yīng)用范圍,那么需要提升多少向量化百分比才能得到與向量部件運(yùn)算速度提高一倍得到相同的性能?你推薦哪一種設(shè)計(jì)方案?3.假設(shè)有一個(gè)代表典型應(yīng)用的基準(zhǔn)測(cè)試程序。一款不包含浮點(diǎn)部件的處理器(可以通過整數(shù)指令的模擬來執(zhí)行浮點(diǎn)指令)運(yùn)行該基準(zhǔn)程序的運(yùn)行速度是120MIPS,在該處理器上增加浮點(diǎn)協(xié)處理器后運(yùn)行該基準(zhǔn)程序的運(yùn)行速度是80MIPS。下面給出了一些參數(shù):I-基準(zhǔn)測(cè)試中整數(shù)指令的數(shù)目,F(xiàn)-基準(zhǔn)測(cè)試中浮點(diǎn)指令的數(shù)目,Y-模擬一條浮點(diǎn)指令需要的整數(shù)指令的數(shù)目,W-無浮點(diǎn)協(xié)處理器時(shí)基準(zhǔn)程序的運(yùn)行時(shí)間,B-有浮點(diǎn)協(xié)處理器時(shí)基準(zhǔn)程序的運(yùn)行時(shí)間。a)用上面的參數(shù)符號(hào)表示出兩種配置處理器的MIPS值。b)在沒有協(xié)處理器的配置下,假定F=8*106,Y=50,W=4秒,求I的值。c)在上題的條件下,求B的值。d)在包含協(xié)處理器的配置下,系統(tǒng)的MFLOPS是多少?e)你的同事想要購(gòu)買這種協(xié)處理器來提高性能,而該配置下MIPS降低了,請(qǐng)問他的決策正確嗎?解釋你的觀點(diǎn)5.對(duì)某處理器進(jìn)行功耗測(cè)試,得到如下數(shù)據(jù):時(shí)鐘不翻轉(zhuǎn),電壓1.2V時(shí),電流為500mA;時(shí)鐘頻率為1GHz,電壓1.2V時(shí),電流為2500mA。請(qǐng)計(jì)算此處理器的靜態(tài)功耗以及500MHz下的總功耗。高級(jí)計(jì)算機(jī)體系結(jié)構(gòu)(精編)課件1.解:A為10MIPS,B為20MIPS,C為40MIPS。三臺(tái)機(jī)器實(shí)際性能相同。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%。此時(shí)向量模式運(yùn)行時(shí)間占總時(shí)間比例是((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)決策正確,因?yàn)閳?zhí)行時(shí)間縮短了,這才是關(guān)鍵標(biāo)準(zhǔn)。5.解:1.1V下靜態(tài)功耗1.1*1.1/(1.05/0.5)=0.576W1.1V下1GHZ時(shí)動(dòng)態(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為4021二.二進(jìn)制與邏輯電路計(jì)算機(jī)中數(shù)的表示CMOS門電路及工藝CMOS組合邏輯與時(shí)序邏輯CMOS電路延遲從Verilog到GDSII其它“0”和“1”表示方法21二.二進(jìn)制與邏輯電路計(jì)算機(jī)中數(shù)的表示22計(jì)算機(jī)中數(shù)的表示二進(jìn)制最容易邏輯實(shí)現(xiàn)自然界中的二值系統(tǒng)較多“1”和“0”的表示用電壓的高低表示,半導(dǎo)體工藝,CMOS用磁通量的有無表示,超導(dǎo)體工藝用能級(jí)的高低表示,量子計(jì)算機(jī)用基因序列表示,A,G,C,T,DNA計(jì)算機(jī),非二進(jìn)制?22計(jì)算機(jī)中數(shù)的表示二進(jìn)制23定點(diǎn)數(shù)的表示(1)原碼:A=an-1an-2…...a1a0表示最高位an-1為符號(hào)位,0表示正,1表示負(fù)。其它位an-2…...a1a0表示數(shù)值。原碼的問題:加減法效率低,兩個(gè)“0”補(bǔ)碼本質(zhì)是取模運(yùn)算,如-2%12=10最高位an-1為符號(hào)位,0表示正,1表示負(fù)。A=an-1an-2…...a1a0表示(-2n-1an-1+an-2…...a1a0)an-1==0時(shí),補(bǔ)碼和原碼一樣,A表示正an-2…...a1a0
。an-1==1時(shí),A表示(-2n-1+an-2…...a1a0)。原碼與補(bǔ)碼的轉(zhuǎn)換最高位為0時(shí),一樣最高位為1時(shí),最高位不變,其余位“按位取反加一”。23定點(diǎn)數(shù)的表示(1)原碼:A=an-1an-2…...24定點(diǎn)數(shù)的表示(2)補(bǔ)碼運(yùn)算取負(fù)數(shù),每一位(包括符號(hào)位)求補(bǔ),即按位取反加一。A-B=A+B的負(fù)數(shù)=A+(B求補(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定點(diǎn)數(shù)的表示(2)補(bǔ)碼運(yùn)算25浮點(diǎn)數(shù)的表示(1)定點(diǎn)數(shù)的不足表示范圍有限,太大或太小的數(shù)都不能表示除法不精確浮點(diǎn)數(shù)的表示:IEEE754標(biāo)準(zhǔn)三部分組成:符號(hào)位,階碼(exponent),尾數(shù)(fraction)最高位是符號(hào)位階碼的移碼表示,底為2,2(階碼-偏移值)
規(guī)格化表示,尾數(shù)的最高位總為1,因此可以不存單精度和雙精度擴(kuò)展的單雙精度SExp.(8)Fraction(23)SExp.(11)Fraction(52)25浮點(diǎn)數(shù)的表示(1)定點(diǎn)數(shù)的不足SExp.(8)Frac26浮點(diǎn)數(shù)的表示(2)IEEE754浮點(diǎn)格式參數(shù)26浮點(diǎn)數(shù)的表示(2)IEEE754浮點(diǎn)格式參數(shù)定點(diǎn)數(shù)的表示分別給出64位定點(diǎn)原碼和補(bǔ)碼表示的數(shù)的范圍;在32位定點(diǎn)補(bǔ)碼表示中,0x80000000表示什么數(shù)?按照以下要求將浮點(diǎn)數(shù)表示出來把單精度數(shù)轉(zhuǎn)化為十進(jìn)制數(shù):0x7ff0000,0xbe400000,0xff800000把雙精度數(shù)轉(zhuǎn)化為十進(jìn)制數(shù):0x4035000000000000,0x8008000000000000把十進(jìn)制數(shù)轉(zhuǎn)化為單精度數(shù):-100.0,0.25把十進(jìn)制數(shù)轉(zhuǎn)化為雙精度數(shù):1024.0,0.2527定點(diǎn)數(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]和[-29三.指令系統(tǒng)結(jié)構(gòu)ISA指令系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)原則影響指令系統(tǒng)結(jié)構(gòu)的因素指令系統(tǒng)的分類指令系統(tǒng)的組成RISC指令系統(tǒng)結(jié)構(gòu)RISC系統(tǒng)結(jié)構(gòu)的簡(jiǎn)史不同RISC結(jié)構(gòu)的比較29三.指令系統(tǒng)結(jié)構(gòu)ISA指令系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)原則30指令系統(tǒng)的設(shè)計(jì)原則指令系統(tǒng)在計(jì)算機(jī)中的位置硬件和軟件的界面設(shè)計(jì)要求兼容性:在很長(zhǎng)時(shí)間內(nèi)保持不變,如X86通用性:編譯器或程序員覺得好用,有較多功能,適合于各種應(yīng)用高效性:便于CPU設(shè)計(jì)的優(yōu)化,不同的實(shí)現(xiàn)方法得到不同的性能安全性:支持通用操作系統(tǒng),考慮不同的安全要求30指令系統(tǒng)的設(shè)計(jì)原則指令系統(tǒng)在計(jì)算機(jī)中的位置31指令系統(tǒng)的分類從功能上分類算術(shù)與邏輯運(yùn)算、轉(zhuǎn)移、訪存、系統(tǒng)指令…從指令使用數(shù)據(jù)的方式堆棧型、累加器型、寄存器型...從指令編碼定長(zhǎng)、變長(zhǎng)31指令系統(tǒng)的分類從功能上分類32指令系統(tǒng)的類型堆棧型(Stack):零地址指令操作數(shù)在棧頂,運(yùn)算操作不用指定操作數(shù)累加器型(Accumulator):?jiǎn)蔚刂分噶钜粋€(gè)操作數(shù)總在累加器中,結(jié)果也寫回累加器寄存器型(Register):多地址指令Register-Register型Register-Memory型Memory-Memory型32指令系統(tǒng)的類型堆棧型(Stack):零地址指令33指令系統(tǒng)的組成指令的主、謂、賓CPU、操作、操作數(shù)操作數(shù)數(shù)據(jù)類型:定點(diǎn)/浮點(diǎn),32位/64位…訪存對(duì)象:字節(jié)/半字/字/雙字,大/小尾端…尋址方式:寄存器、立即數(shù)、直接、間接...操作算術(shù)與邏輯運(yùn)算、轉(zhuǎn)移、訪存、系統(tǒng)指令…指令訪問控制:轉(zhuǎn)移指令指令編碼定長(zhǎng)、變長(zhǎng)33指令系統(tǒng)的組成指令的主、謂、賓34尋址方式如何在指令中表示訪存地址34尋址方式如何在指令中表示訪存地址35尋址方式小結(jié)至少支持以下尋址方式RegisterImmediateDisplacementRegisterindirect指令中常數(shù)位數(shù)地址偏移量位數(shù)12-16位立即數(shù)位數(shù)8-16位35尋址方式小結(jié)至少支持以下尋址方式36轉(zhuǎn)移指令轉(zhuǎn)移指令類型條件轉(zhuǎn)移/無條件轉(zhuǎn)移過程調(diào)用/過程返回轉(zhuǎn)移地址類型相對(duì):PC+偏移量絕對(duì):指令中給出轉(zhuǎn)移地址間接:根據(jù)寄存器內(nèi)容轉(zhuǎn)移(編譯器不知道目標(biāo)地址),如Switch語句、函數(shù)指針、動(dòng)態(tài)鏈接、過程返回等36轉(zhuǎn)移指令轉(zhuǎn)移指令類型37指令編碼需要考慮的因素操作碼部分比較簡(jiǎn)單操作數(shù)的個(gè)數(shù)、類型對(duì)指令長(zhǎng)度影響很大變長(zhǎng)指令程序代碼短、定長(zhǎng)指令實(shí)現(xiàn)簡(jiǎn)單編碼方法定長(zhǎng):RISC變長(zhǎng):VAX的指令1-53字節(jié),其中ADD指令3-19字節(jié),Intel的X86指令1-17字節(jié)混合:IBM360/370,MIPS16,Thumb,TITMS320C54x37指令編碼需要考慮的因素38MIPS指令類型訪存指令(包括定點(diǎn)和浮點(diǎn))運(yùn)算指令(包括定點(diǎn)和浮點(diǎn))比較和轉(zhuǎn)移指令(包括定點(diǎn)和浮點(diǎn))系統(tǒng)管理指令TLB、CACHE、例外處理TRAP、Breakpoint38MIPS指令類型訪存指令(包括定點(diǎn)和浮點(diǎn))39常見RISC指令系統(tǒng)比較通過比較常見RISC處理器的指令系統(tǒng)加深對(duì)RISC的了解MIPS、PA-RISC、PowerPC、SPARC通過以下方面進(jìn)行比較指令格式尋址方式指令功能39常見RISC指令系統(tǒng)比較通過比較常見RISC處理器的指令40指令格式比較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)Const41指令功能比較所有RISC處理器都有一些公共指令load/store指令算術(shù)運(yùn)算及邏輯指令控制流指令系統(tǒng)管理指令不同處理器在發(fā)展過程中形成的特色舉例MIPS的非對(duì)齊訪問SPARC的寄存器窗口PowerPC的Link和Count寄存器HP的Nullification……41指令功能比較所有RISC處理器都有一些公共指令1.給定下面的代碼片段:
A=B-C;
D=A-C;
B=D+A;
a)分別寫出上述代碼片段在四種指令系統(tǒng)類型(堆棧型、累加器型、寄存器-存儲(chǔ)器型、寄存器-寄存器型)下的匯編語言代碼。
b)假設(shè)操作碼占用8位編碼,內(nèi)存地址和操作數(shù)都是16位,寄存器型結(jié)構(gòu)有16個(gè)通用寄存器。對(duì)每種結(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進(jìn)制數(shù)0x4C4F4F4E47534F4E要存在64位雙字中。
a)假設(shè)存儲(chǔ)是假設(shè)存儲(chǔ)是8字節(jié)對(duì)齊的,請(qǐng)依據(jù)小尾端格式將此16進(jìn)制數(shù)寫入內(nèi)存中,并將每個(gè)字節(jié)解釋為一個(gè)ASCII字符寫在對(duì)應(yīng)的字節(jié)下邊。
b)按照大尾端的格式重做上題。
3.假定在指令系統(tǒng)設(shè)計(jì)中需要考慮兩種條件轉(zhuǎn)移指令的設(shè)計(jì)方法,這兩種方法如下。1)CPUA:先通過一條比較指令設(shè)置條件碼A,再用一條分支指令檢測(cè)條件碼。2)CPUB:比較操作包含在分支指令中
在兩種CPU中,條件轉(zhuǎn)移指令都需要兩個(gè)時(shí)鐘周期,所有其他指令都需要一個(gè)時(shí)鐘周期。在CPUA中,全部指令的25%是條件轉(zhuǎn)移指令,因?yàn)槊看螚l件轉(zhuǎn)移都需要一次比較,所以比較指令約占所有指令的25%,因?yàn)镃PUA不需要在轉(zhuǎn)移中包含分支,所以它的時(shí)鐘頻率是CPUB的1.2倍。請(qǐng)問哪一種CPU性能更高?如果CPUA的時(shí)鐘頻率只是CPUB的1.1倍,結(jié)果又是多少?
1.給定下面的代碼片段:
A=B-C;
D=A-C;
B=4.如果對(duì)通常的MIPS指令集增加寄存器-內(nèi)存形式的指令,如下所示,可以減少一些load數(shù)量。Lw$1,0($n)add$2,$2,$1
可以合并成一條指令:add$2,0($n)
1)給出一段符合上述例子的代碼(load得到的值立即作為運(yùn)算指令的源操作數(shù)),但是編譯器依然無法用寄存器-內(nèi)存形式的指令消除這條load指令。
2)假設(shè)這樣的修改帶來了5%的主頻下降,同時(shí)沒有CPI影響。如果load占所有指令的26%,最少要消滅load指令的百分之多少,才能使得新指令集不導(dǎo)致性能下降?
3)在傳統(tǒng)的靜態(tài)5級(jí)流水線上,寄存器-內(nèi)存形式的指令有何實(shí)現(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ā)生中斷或該單元被其他處理器修改時(shí)處理器如何保證上述操作的原子性。
4.如果對(duì)通常的MIPS指令集增加寄存器-內(nèi)存形式的指令,44堆棧型累加器型寄存器-存儲(chǔ)器型寄存器-寄存器型匯編代碼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堆棧型累加器型寄存器-存儲(chǔ)器型寄存器-寄存器型匯編Pus2.解:小尾端:
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倍時(shí),性能是CPUB的1.2/1.25=0.96倍
當(dāng)CPUA頻率為1.1倍時(shí),性能是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之前就要進(jìn)行,而add$2,0($n)需要先訪存后EXE
2.解:小尾端:
Address0xxx0000xxx05.
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會(huì)變0,回到標(biāo)號(hào)1重新執(zhí)行。
5.
a)條件轉(zhuǎn)移指令的跳轉(zhuǎn)范圍。16+2位256K47四.指令流水線一個(gè)簡(jiǎn)單的CPU數(shù)據(jù)通路控制邏輯時(shí)序控制指令流水線指令相關(guān)和流水線沖突流水線的前遞技術(shù)流水線和例外多功能部件與多拍操作47四.指令流水線一個(gè)簡(jiǎn)單的CPU48指令流水線:時(shí)序的改進(jìn)上述時(shí)序的三個(gè)步驟指令地址送到PC、取指到IR、計(jì)算結(jié)果到GPR可以合并為兩個(gè)計(jì)算下一條指令的PC和指令執(zhí)行重疊可以把計(jì)算下一拍PC值作為指令執(zhí)行的一部分(轉(zhuǎn)移指令的運(yùn)算結(jié)果是PC的值)48指令流水線:時(shí)序的改進(jìn)上述時(shí)序的三個(gè)步驟可以合并為兩個(gè)49
能否把取指和運(yùn)算也重疊?大多數(shù)情況可以重疊第n+1條指令執(zhí)行時(shí),第n條指令已經(jīng)執(zhí)行完,因此第n+1條指令可以用到第n條指令的結(jié)果。但有一個(gè)例外如果第n+1條指令的取指也要用到第n條指令的結(jié)果,則第n+1條指令的取指必須等到第n條指令結(jié)束后才能執(zhí)行。正是Branch指令的情況,可以用delayslot解決這個(gè)問題49能否把取指和運(yùn)算也重疊?大多數(shù)情況可以重疊50上述流水線的進(jìn)一步改進(jìn)上述流水線是兩級(jí)流水線取指和執(zhí)行執(zhí)行階段做的事情較多譯碼(包括讀取寄存器的值)運(yùn)算(ALU操作)訪存(取數(shù)或存數(shù))寫回到寄存器時(shí)鐘周期較長(zhǎng),一拍內(nèi)必須做完上述四件事情可以把執(zhí)行階段再細(xì)分執(zhí)行階段分成譯碼、運(yùn)算、訪存、寫回50上述流水線的進(jìn)一步改進(jìn)上述流水線是兩級(jí)流水線51流水線的相關(guān)問題指令相關(guān)的概念流水線變深了,相關(guān)問題更為突出。在流水線中,如果某指令的某個(gè)階段必須等到它前面另一條指令的某個(gè)階段后才能開始,則這兩條指令存在相關(guān)相關(guān)的指令要隔開足夠遠(yuǎn),否則后面的指令就必須等待在我們的流水線中,可能發(fā)生如下相關(guān)紅線表示數(shù)據(jù)相關(guān)藍(lán)線表示轉(zhuǎn)移相關(guān)(從中可看出轉(zhuǎn)移指令在譯碼階段執(zhí)行的必要性)還有結(jié)構(gòu)相關(guān)(在我們的例子中不存在)51流水線的相關(guān)問題指令相關(guān)的概念52指令流水線的相關(guān)數(shù)據(jù)相關(guān):使用同一個(gè)寄存器引起的相關(guān)如后面的指令用到前面指令的結(jié)果控制相關(guān):與PC有關(guān)的相關(guān)每條指令取指用到PC,轉(zhuǎn)移指令修改PC結(jié)構(gòu)相關(guān):資源沖突多條指令同時(shí)使用一個(gè)功能部件相關(guān)引起流水線阻塞52指令流水線的相關(guān)數(shù)據(jù)相關(guān):使用同一個(gè)寄存器引起的相關(guān)53由訪存引起的結(jié)構(gòu)相關(guān)訪存和取指都需要存儲(chǔ)器端口Havard結(jié)構(gòu)loadinst1inst2inst3inst4loadinst1inst2inst3nopinst453由訪存引起的結(jié)構(gòu)相關(guān)訪存和取指都需要存儲(chǔ)器端口loadl54數(shù)據(jù)相關(guān)RAW(ReadAfterWrite)后面指令用到前面指令所寫的數(shù)據(jù)WAW(WriteAfterWrite)兩條指令寫同一個(gè)單元在簡(jiǎn)單流水線中沒有此類相關(guān),因?yàn)椴粫?huì)亂序執(zhí)行WAR(WriteAfterRead)后面指令覆蓋前面指令所讀的單元在簡(jiǎn)單流水線中沒有此類相關(guān)在動(dòng)態(tài)流水線中會(huì)有WAR和WAW相關(guān)54數(shù)據(jù)相關(guān)RAW(ReadAfterWrite)55數(shù)據(jù)相關(guān)的例子addr1,r2,r3subr4,r1,r3andr6,r1,r7orr8,r1,r9xorr10,r1,r1155數(shù)據(jù)相關(guān)的例子addr1,r2,r356控制相關(guān)PC相關(guān)轉(zhuǎn)移指令計(jì)算的下一條指令地址在EX階段計(jì)算,下一條指令等2拍使用專門的地址運(yùn)算部件把地址計(jì)算提前到譯碼階段可以少等一拍使用一個(gè)轉(zhuǎn)移指令延遲槽(delayslot)可以不用等待轉(zhuǎn)移條件相關(guān)如果在ID階段執(zhí)行轉(zhuǎn)移指令時(shí)轉(zhuǎn)移指令的源操作數(shù)沒有準(zhǔn)備好還是要等待56控制相關(guān)PC相關(guān)57流水線的前遞技術(shù):
解決RAW相關(guān)的前遞(Forwarding)技術(shù)在執(zhí)行(EX)階段的運(yùn)算結(jié)果出來后直接送到后續(xù)指令的EX階段addr1,r2,r3subr4,r1,r3andr6,r1,r7orr8,r1,r9xorr10,r1,r1157流水線的前遞技術(shù):
解決RAW相關(guān)的前遞(Forward58前遞情況下的數(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階段才有效,后59通過靜態(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)化代碼Fast60Forwarding的相關(guān)處理邏輯以ALU左端的輸入為例當(dāng)s1和前面兩級(jí)的目標(biāo)寄存器域d1和d2都不相等時(shí),選擇中間通路當(dāng)s1==d2時(shí),選擇右邊通路當(dāng)s1==d1且當(dāng)前操作不是LD時(shí),選擇左邊通路當(dāng)s1==d1且當(dāng)前操作是LD時(shí),后面流水線暫停,往前面流水線送空操作60Forwarding的相關(guān)處理邏輯以ALU左端的輸入為例61例外(Exception)與流水線例外原因I/O請(qǐng)求:外部中斷指令例外:用戶請(qǐng)求例外系統(tǒng)調(diào)用、斷點(diǎn)、跟蹤調(diào)試指令運(yùn)算部件整數(shù)運(yùn)算溢出、浮點(diǎn)異常存儲(chǔ)管理部件訪存地址不對(duì)齊、用戶訪問系統(tǒng)空間、TLB失效、缺頁(yè)、存儲(chǔ)保護(hù)錯(cuò)(寫只讀頁(yè))保留指令錯(cuò):未實(shí)現(xiàn)指令硬件錯(cuò)等等61例外(Exception)與流水線例外原因62例外發(fā)生的流水階段取指:訪存例外譯碼:保留指令、中斷指令如Trap、Syscall執(zhí)行:整數(shù)溢出、浮點(diǎn)異常(如除零)等訪存:訪存例外其它:外部中斷,可能在任何時(shí)候發(fā)生例外特征同步與異步用戶請(qǐng)求與系統(tǒng)強(qiáng)制可屏蔽與不可屏蔽指令內(nèi)與指令間可恢復(fù)與結(jié)束62例外發(fā)生的流水階段63在前述例外中,指令內(nèi)可恢復(fù)例外的處理比較困難,條件轉(zhuǎn)移指令的delayslot又增加了例外處理的難度精確例外:在處理例外時(shí),發(fā)生例外指令前面的所有指令都執(zhí)行完,例外指令后面的所有指令還未執(zhí)行。精確例外是存儲(chǔ)管理和IEEE運(yùn)算規(guī)范的要求發(fā)生例外指令前面的指令繼續(xù)執(zhí)行完后面的指令不能修改機(jī)器狀態(tài),對(duì)運(yùn)算狀態(tài)字的修改可能在EX階段進(jìn)行多條指令發(fā)生例外63在前述例外中,指令內(nèi)可恢復(fù)例外的處理比較困難,條件轉(zhuǎn)移指64可以把每條指令的例外延遲到WB時(shí)再處理對(duì)機(jī)器狀態(tài)的修改也在WB階段進(jìn)行對(duì)狀態(tài)寄存器的修改從EX階段延遲到WB階段64可以把每條指令的例外延遲到WB時(shí)再處理65簡(jiǎn)單流水線的例外處理任何一級(jí)流水發(fā)生例外時(shí),在流水線中記錄下發(fā)生例外的事件,直到WB階段再處理如果在EX階段要修改機(jī)器狀態(tài)(如狀態(tài)寄存器),保存下來直到WB階段再修改。指令的PC值隨指令流水前進(jìn)到WB階段例外處理專用外部中斷作為IF的例外處理指定通用寄存器中的一個(gè)(如最后一個(gè))為例外處理時(shí)保存PC值專用。當(dāng)發(fā)生例外的指令在WB階段時(shí):保存該指令的PC(也在WB階段),有些機(jī)器還保存其它狀態(tài)置PC值為例外處理程序入口地址65簡(jiǎn)單流水線的例外處理661.假定某假定某RISCRISC處理器處理器為標(biāo)準(zhǔn)的五級(jí)流水線(IF/ID/EX/MEM/WB)結(jié)構(gòu),并且包含旁路硬件。對(duì)于下列指令序: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.對(duì)于下面的計(jì)算A=+B;C=A-B寫出MIPSMIPS程序代碼,并且畫出5級(jí)靜態(tài)流水線(無旁路)上的流水線狀態(tài)。3.對(duì)于向量加法X(i)=a*X(i)+Y(i),假設(shè),假設(shè)X,Y的首地址分別存在R1,R2,a的值存在F0中。a)試寫出對(duì)應(yīng)的MIPS匯編代碼。b)假設(shè)單發(fā)射流水線結(jié)構(gòu)為IF/ID/EX/MEM/WBI,功能部件足夠,Load、SStore操作和整數(shù)操作都花費(fèi)1個(gè)時(shí)鐘周期,加法操作為4個(gè)周期,乘法操作為10個(gè)周期。給出第一循環(huán)所有指令的流水線時(shí)空?qǐng)D。661.假定某假定某RISCRISC處理器處理器674.假定某假定某RISC處理器為標(biāo)準(zhǔn)的五級(jí)流水線(IF/ID/EX/MEM/WB)結(jié)構(gòu),該靜態(tài)流水線處理器可配置包含硬件旁路電、延遲槽分支預(yù)測(cè)等技術(shù),并假定所有的運(yùn)算和訪存操作均為一拍完成。下面的代碼在該處理器中執(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)不使用旁路硬件,但在同一個(gè)周期內(nèi)寄存器的讀和寫能進(jìn)行但預(yù)測(cè)采nottaken策略,如果猜測(cè)錯(cuò)誤則刷新(flushing)流水線上的錯(cuò)誤指令,畫出這個(gè)指序列在RISC流水線上執(zhí)行的時(shí)序,并計(jì)算執(zhí)行這個(gè)循環(huán)需要多少時(shí)鐘周期。b)使用旁路硬件,采taken策略進(jìn)行分支預(yù)測(cè),如果猜錯(cuò)誤則刷新(flushing)流水線上的錯(cuò)誤指令,畫出這個(gè)序列在RISC上執(zhí)行的序列,并計(jì)算執(zhí)行這個(gè)循環(huán)需要多少個(gè)時(shí)鐘周期。c)假設(shè)RISC流水線帶有單拍的分支延遲和前遞或旁路硬件,對(duì)包括槽在內(nèi)指令序列進(jìn)行調(diào)度,可以重排指令序并修改某些的操作數(shù)但不能改變指令的數(shù)目和采用別的指令,畫出該流水線時(shí)序圖并計(jì)算整個(gè)循環(huán)需要鐘周期數(shù)。5.許多指令集中都會(huì)有一條空操作指令(例如MIPS指令集中的nop指令),請(qǐng)給出設(shè)計(jì)空指令的幾個(gè)作用。674.假定某假定某RISC處理器為標(biāo)準(zhǔn)的五級(jí)流水線681.解: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.解:123456789101112131415LW69排序前共需要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拍。1234567891011121370123456789101112131415LWR1,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,0713.解:假設(shè)此處的浮點(diǎn)運(yùn)算均為單精度浮點(diǎn)運(yùn)算。數(shù)組的長(zhǎng)度為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.解:721234567891011121314151617LWC1F1,0(R1)IFIDEXMEMWBLWC1F2,0(R2)IFIDEXMEMWBMUL.SF3,F0,F1IFIDEX1EX2EX3EX4MEMWBADD.SF4,F2,F3IFIDstallstallstallEX1EX2EX3MEMWBADDIUR1,R1,4IFIDstallstallstallstallstallEXMEMWBADDIUR2,R2,4IFIDstallstallstallstallstallEXMEMWBBNER1,R3,LoopIFIDstallstallstallstallstallEXMEMWBSWC1F4,-4(R1)IFIDstallstallstallstallstallEXMEMWB721234567891011121314151617LWC734.解://此題中(2)(3)兩小問中認(rèn)為WB和ID能通過旁路消除相關(guān)。(1)無旁路部件,前99次循環(huán)的流水線時(shí)空?qǐng)D如下123456789101112131415161718192021LDR1,0(R2)IFIDEXMEMWBDADDIR1,R1,4IFstallstallIDEXMEMWBSDR1,0(R2)stallstallIFstallstallIDEXMEMWBDADDIR2,R2,4stallstallstallstallIFIDEXMEMWBDSUBR4,R3,R2stallstallstallstallIFstallstallIDEXMEMWBBNEZR4,LoopstallstallstallstallstallstallIFstallstallIDEXMEMWBLDR1,0(R2)stallstallstallstallstallstallstallstallstallstallIFIDEXMEMWB734.解://此題中(2)(3)兩小問中認(rèn)為WB和ID74前99次循環(huán),每次都是預(yù)測(cè)錯(cuò),每個(gè)循環(huán)16個(gè)時(shí)鐘周期。最后一個(gè)循環(huán),預(yù)測(cè)對(duì),但整個(gè)循環(huán)最后一條指令寫回需要18個(gè)時(shí)鐘周期。共計(jì):16×99+18=1602時(shí)鐘周期(2)有旁路,預(yù)測(cè)taken,前99次循環(huán)流水線時(shí)空?qǐng)D如下:12345678910111213LDR1,0(R2)IFIDEXMEMWBDADDIR1,R1,4IFIDstallEXMEMWBSDR1,0(R2)IFstallIDEXMEMWBDADDIR2,R2,4stallIFIDEXMEMWBDSUBR4,R3,R2IFIDEXMEMWBBNEZR4,LoopIFIDEXMEMWBLDR1,0(R2)stallIFIDEXMEMWB74前99次循環(huán),每次都是預(yù)測(cè)錯(cuò),每個(gè)循環(huán)16個(gè)時(shí)鐘周期75前99次循環(huán),執(zhí)行一個(gè)循環(huán)需要8拍。最后一次循環(huán)完整執(zhí)行完需要11拍。共計(jì):8×99+11=803時(shí)鐘周期(3)仍認(rèn)為分支預(yù)測(cè)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í)行一個(gè)循環(huán)需要8拍。最后一次循環(huán)完整76前99次循環(huán),執(zhí)行一個(gè)循環(huán)需要6拍。最后一次循環(huán)完整執(zhí)行完需要10拍。整個(gè)循環(huán)共計(jì):6×99+10=604時(shí)鐘周期5.解:空操作指令(nop指令),其不改變程序可見寄存器、狀態(tài)寄存器以及內(nèi)存的狀態(tài),以及用于等待需要一定周期執(zhí)行的操作。nop指令的作用,常見的有:取指的強(qiáng)制訪存對(duì)齊(memoryalignment),防止相關(guān)風(fēng)險(xiǎn)(hazard),以及用于填充延遲槽(branchdelayslot)。76前99次循環(huán),執(zhí)行一個(gè)循環(huán)需要6拍。最后一次循環(huán)完整五.動(dòng)態(tài)流水線技術(shù)影響流水線效率的因素指令調(diào)度技術(shù)動(dòng)態(tài)調(diào)度技術(shù)Tomasulo算法動(dòng)態(tài)流水線的例外處理五.動(dòng)態(tài)流水線技術(shù)影響流水線效率的因素影響流水線效率的因素影響RISCCPU性能的因素IronRule:Runtime=程序指令數(shù)*CPIPipelineCPI=IdealpipelineCPI+Structuralstalls+RAWstalls+WARstalls+WAWstalls+Controlstalls影響流水線效率的因素影響RISCCPU性能的因素程序的相關(guān)性數(shù)據(jù)相關(guān)(真相關(guān)):導(dǎo)致RAW名字相關(guān):會(huì)導(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)致RAW定義:指令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)比較容易判斷存儲(chǔ)器的數(shù)據(jù)相關(guān)不容易判斷:100(R4)=20(R6)?對(duì)不同循環(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,0兩條指令使用相同名字(寄存器或存儲(chǔ)器),但不交換數(shù)據(jù)逆相關(guān)(Antidependence):指令j寫指令i所讀的存儲(chǔ)單元且i先執(zhí)行。逆相關(guān)會(huì)導(dǎo)致流水線WAR相關(guān)。輸出相關(guān)(OutputDependence):指令j與指令i寫同一個(gè)單元且i先執(zhí)行。逆相關(guān)會(huì)導(dǎo)致流水線WAW相關(guān)。寄存器的名字相關(guān)可以通過寄存器重命名(RegisterRenaming)解決,存儲(chǔ)單元的重命名比較困難100(R4)=20(R6)?對(duì)不同循環(huán)體,20(R6)=20(R6)?在前述例子中,編譯器必須知道0(R1)!=-8(R1)!=-16(R1)!=-24(R1)名字相關(guān)兩條指令使用相同名字(寄存器或存儲(chǔ)器),但不交換數(shù)據(jù)名字相關(guān)靜態(tài)調(diào)度的問題在譯碼階段把指令“隔開”來解決相關(guān)只要有一條指令停止,后面指令就不能前進(jìn)象是一種譯碼部件的結(jié)構(gòu)相關(guān)對(duì)編譯要求高,最好是編譯把相關(guān)指令隔開有些信息在譯碼時(shí)難以確定,如是否發(fā)生例外、訪存操作需要多少周期等DIVDf0,f2,f4ADDDf10,f0,f8SUBDf12,f8,f14靜態(tài)調(diào)度的問題在譯碼階段把指令“隔開”來解決相關(guān)DIVDf基本思想把相關(guān)的解決盡量往后拖延,直到不能再前進(jìn)前面指令的等待不影響后面指令繼續(xù)前進(jìn)把譯碼分成兩個(gè)階段:發(fā)射和讀操作數(shù)發(fā)射:指令譯碼,檢查結(jié)構(gòu)相關(guān)讀操作數(shù):檢查操作數(shù)是否準(zhǔn)備好,準(zhǔn)備好就讀數(shù),否則等待當(dāng)一條指令在讀操作數(shù)階段等待時(shí),后面指令的發(fā)射可以繼續(xù)進(jìn)行在什么地方等待?亂序執(zhí)行指令進(jìn)入是有序的執(zhí)行可以亂序,只要沒有相關(guān)就可執(zhí)行,多條指令同時(shí)執(zhí)行結(jié)束也是有序的(早期有些機(jī)器是亂序的,現(xiàn)代操作系統(tǒng)一般要求有序結(jié)束),(怎么把亂序變成有序?)與靜態(tài)調(diào)度相比有些相關(guān)編譯無法檢測(cè)、編譯器更加簡(jiǎn)單、程序性能對(duì)機(jī)器依賴少DIVDf0,f2,f4ADDDf10,f0,f8SUBDf8,f8,f14動(dòng)態(tài)調(diào)度思想基本思想DIVDf0,f2,f4動(dòng)態(tài)調(diào)度思想假設(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,為了避免MUL1讀回ADD寫的F0值,MUL2讀回DIV寫的F0值最簡(jiǎn)單的做法是在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寫的為了避免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的輸入端有寄存器,這些寄存器能夠指定接收哪個(gè)部件的輸出作為自己的值同樣,為了避免F0的最終值為DIV所寫的值可以在F0記錄它當(dāng)前接收哪個(gè)功能部件所寫的值要求F0有一個(gè)標(biāo)志DIVF0,F1,F2MULF5,F0,F6ADDF0,F3,F4MULF7,F0,F8解決WAW和WAR的辦法為了避免MUL1讀ADD寫的F0值,MUL2讀DIV寫的F0上述解決辦法要求每個(gè)功能部件的輸入端有一些寄存器每個(gè)寄存器(包括功能部件輸入端的寄存器以及通用寄存器)都記錄一個(gè)功能部件號(hào),指定它當(dāng)前接收哪個(gè)功能部件的值每個(gè)功能部件的輸出接到每個(gè)功能部件的輸入有了上述功能,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,F2DIVReTomasulo算法小結(jié)通過動(dòng)態(tài)調(diào)度緩解流水線阻塞例如減少CACHE失效對(duì)性能的影響保留站:重命名寄存器+緩存源操作數(shù)避免寄存器成為瓶頸避免WAW和WAR阻塞缺點(diǎn)硬件復(fù)雜性結(jié)果總線成為瓶頸,多條結(jié)果總線增加硬件復(fù)雜度在IBM360/91后被廣泛使用動(dòng)態(tài)調(diào)度、寄存器重命名等思想一直被使用:PentiumII;PowerPC604;MIPSR10000;HP-PA8000;Alpha21264Tomasulo算法小結(jié)通過動(dòng)態(tài)調(diào)度緩解流水線阻塞例外(Exception)與流水線I/O請(qǐng)求:外部中斷指令例外:用戶請(qǐng)求中斷系統(tǒng)調(diào)用、斷點(diǎn)、跟蹤調(diào)試指令運(yùn)算部件整數(shù)運(yùn)算溢出、浮點(diǎn)異常存儲(chǔ)管理部件訪存地址不對(duì)齊、用戶訪問系統(tǒng)空間、TLB失效、缺頁(yè)、存儲(chǔ)保護(hù)錯(cuò)(寫只讀頁(yè))保留指令錯(cuò):未實(shí)現(xiàn)指令硬件錯(cuò)等等例外(Exception)與流水線I/O請(qǐng)求:外部中斷精確例外的要求:在處理例外時(shí),發(fā)生例外指令前面的所有指令都執(zhí)行完,例外指令后面的所有指令還未執(zhí)行.非精確例外的原因:在亂序執(zhí)行時(shí),前面的指令發(fā)生中斷時(shí),后面的指令已經(jīng)執(zhí)行完并修改了寄存器或存儲(chǔ)單元.在下面的例子中,沒有任何相關(guān),ADDF和SUBF指令可以比DIVF先結(jié)束。如果在ADDF結(jié)束后DIVF發(fā)生例外,此時(shí)無法恢復(fù)例外現(xiàn)場(chǎng)記分板和Tomasulo算法中都是非精確例外只要保證后面指令修改機(jī)器狀態(tài)時(shí),前面的指令都已經(jīng)不會(huì)發(fā)生中斷即可.DIVFf0,f2,f4ADDFf10,f10,f8SUBFf12,f12,f14動(dòng)態(tài)流水線的精確例外處理精確例外的要求:在處理例外時(shí),發(fā)生例外指令前面的所有指令都實(shí)現(xiàn)精確例外處理的一個(gè)辦法是把后面指令對(duì)機(jī)器狀態(tài)的修改延遲到前面指令都已經(jīng)執(zhí)行完有些指令在EX階段也修改機(jī)器狀態(tài),如運(yùn)算指令修改結(jié)果狀態(tài)在執(zhí)行階段停止流水線會(huì)影響后面的指令執(zhí)行可以用一些緩沖器來臨時(shí)保存執(zhí)行結(jié)果,當(dāng)前面所有指令執(zhí)行完后,再把保存在緩沖器中的結(jié)果寫回到寄存器或存儲(chǔ)器
在流水線修改機(jī)器狀態(tài)時(shí)(在執(zhí)行或?qū)懟仉A段)寫到緩沖器增加提交(Commit)階段,把緩沖器的內(nèi)容寫回到寄存器或存儲(chǔ)器提交階段只有前面指令都結(jié)束后才能進(jìn)行有序提交:亂序執(zhí)行,有序結(jié)束所用的緩沖器通常被稱為ReorderBuffer(ROB)在猜測(cè)執(zhí)行中也用上述機(jī)制都是在某些情況不確定的情況下先執(zhí)行,但留有反悔的余地硬件支持動(dòng)態(tài)流水線的精確例外處理實(shí)現(xiàn)精確例外處理的一個(gè)辦法是把后面指令對(duì)機(jī)器狀態(tài)的修改延遲到內(nèi)容:目標(biāo)地址(存數(shù)地址或寄存器號(hào))、值、操作類型寫回時(shí)寫回到ROB,因此后面指令有可能從ROB讀操作數(shù)使用ROB號(hào)作為重命名號(hào)(原來使用保留站號(hào)),一條指令的結(jié)果寄存器被重命名為其結(jié)果ROB號(hào)保留站重命名源寄存器號(hào),ROB重命名結(jié)果寄存器號(hào)提交時(shí)把結(jié)果寫回寄存器或存儲(chǔ)器只要一條指令沒有提交,它就不會(huì)對(duì)寄存器或存儲(chǔ)器的內(nèi)容進(jìn)行修改,在一條指令沒有提交之前很容易取消該指令(由于前面指令發(fā)生了例外或由于猜測(cè)執(zhí)行不正確)ROB可以和WriteBuffer合并ReorderBuffer(ROB)內(nèi)容:目標(biāo)地址(存數(shù)地址或寄存器號(hào))、值、操作類型Re動(dòng)態(tài)流水線小結(jié)有序進(jìn)入、亂序執(zhí)行(允許超車)、有序結(jié)束主要數(shù)據(jù)結(jié)構(gòu)保留站(發(fā)射隊(duì)列)把有序
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 雞西市重點(diǎn)中學(xué)2025屆校高三第五次月考物理試題含解析
- 南開大學(xué)濱海學(xué)院《體育休閑娛樂導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 工程質(zhì)量控制中的風(fēng)險(xiǎn)識(shí)別與應(yīng)對(duì)策略
- 第8課 北宋的政治 教案2024-2025學(xué)年七年級(jí)歷史下冊(cè)新課標(biāo)
- 白領(lǐng)上班背包使用習(xí)慣問卷
- 金灣區(qū)溫室大棚施工方案
- 襄陽移動(dòng)木屋施工方案
- 燃燒器改造施工方案
- 噴灰漆施工方案
- 臨時(shí)用戶供電施工方案
- 新生兒魚鱗病個(gè)案護(hù)理
- 生物質(zhì)燃料的資源開發(fā)與利用
- 《積極心理學(xué)》課件
- 食管胃底靜脈曲張出血的診治指南解讀
- 急性農(nóng)藥中毒護(hù)理查房
- 2024-2025北京高考英語作文及范文匯編
- 2024年八年級(jí)語文下冊(cè)《經(jīng)典常談》第一章《說文解字》練習(xí)題卷附答案
- 特殊環(huán)境焊接防護(hù)技術(shù)
- 通用電子嘉賓禮薄
- 學(xué)校輔導(dǎo)員安全培訓(xùn)課件
- 太陽能熱水器原理與應(yīng)用
評(píng)論
0/150
提交評(píng)論