計(jì)算機(jī)體系結(jié)構(gòu)張晨曦版本第四章解答-new.doc_第1頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)張晨曦版本第四章解答-new.doc_第2頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)張晨曦版本第四章解答-new.doc_第3頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)張晨曦版本第四章解答-new.doc_第4頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)張晨曦版本第四章解答-new.doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余3頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

第四章 習(xí)題四4.1解釋下列術(shù)語(yǔ):指令級(jí)并行:指令序列中存在的潛在的并行性稱(chēng)為指令級(jí)并行。指令調(diào)度:指令調(diào)度是一種用以避免沖突的方法,但并不改變相關(guān)。通過(guò)改變指令在程序中的位置,將相關(guān)指令間的距離加大到不小于指令執(zhí)行延遲的時(shí)鐘數(shù),以此消除相關(guān)指令造成的流水線沖突。指令的動(dòng)態(tài)調(diào)度:在程序執(zhí)行過(guò)程中,依靠專(zhuān)門(mén)的硬件對(duì)代碼進(jìn)行調(diào)度,重新安排指令的執(zhí)行順序,來(lái)調(diào)整相關(guān)指令實(shí)際執(zhí)行時(shí)的關(guān)系,減少可能的沖突。指令的靜態(tài)調(diào)度:在程序的編譯期間,由編譯器進(jìn)行代碼調(diào)度和優(yōu)化,重新安排指令的執(zhí)行順序,把相關(guān)的指令拉開(kāi)距離,以減少可能產(chǎn)生的沖突。保留站:在Tomasulo算法實(shí)現(xiàn)結(jié)構(gòu)中,保留站設(shè)置在運(yùn)算部件的入口,每個(gè)保留站中保存一條已經(jīng)流出并等待到本功能部件執(zhí)行的指令的相關(guān)信息,包括操作碼、操作數(shù)以及用于檢測(cè)和解決沖突的信息。在一條指令流出到保留站的時(shí)候,如果該指令的操作數(shù)已經(jīng)在寄存器中就緒,則將之取到該保留站中。如果操作數(shù)還沒(méi)有計(jì)算出來(lái),則在該保留站中記錄將產(chǎn)生這個(gè)操作數(shù)的保留站的標(biāo)識(shí)。CDB:公共數(shù)據(jù)總線,是Tomasulo算法實(shí)現(xiàn)結(jié)構(gòu)中的一條重要的數(shù)據(jù)通路,所有功能部件的計(jì)算結(jié)果都要送到CDB上,由它把這些結(jié)果直接送到各個(gè)需要該結(jié)果的地方。動(dòng)態(tài)分支預(yù)測(cè)技術(shù):用硬件動(dòng)態(tài)地進(jìn)行分支處理的方法。這些方法是在程序運(yùn)行時(shí),根據(jù)分支指令過(guò)去的表現(xiàn)來(lái)預(yù)測(cè)其將來(lái)的行為。如果分支行為發(fā)生了變化,預(yù)測(cè)結(jié)果也隨之改變。其目的有兩個(gè):預(yù)測(cè)分支是否成功和盡快找到分支目標(biāo)地址(或指令),從而避免控制相關(guān)造成流水線停頓。BHT:分支歷史表,也稱(chēng)之為分支預(yù)測(cè)緩沖器,用來(lái)記錄分支指令最近一次或幾次的執(zhí)行情況(成功或不成功),并根據(jù)此進(jìn)行預(yù)測(cè)。分支目標(biāo)緩沖:將分支成功的分支指令的地址和它的分支目標(biāo)地址都放到一個(gè)緩沖區(qū)中保存起來(lái),緩沖區(qū)以分支指令的地址作為標(biāo)識(shí),取指令階段,所有指令地址都與保存的標(biāo)示作比較,一旦相同,就認(rèn)為本指令是分支指令,且認(rèn)為它轉(zhuǎn)移成功,并且它的分支目標(biāo)地址就是保存在緩沖區(qū)的分支目標(biāo)地址。前瞻執(zhí)行:基于硬件的前瞻執(zhí)行結(jié)合了以下三種思想:(1) 動(dòng)態(tài)分支預(yù)測(cè)。用來(lái)選擇后續(xù)執(zhí)行的指令。(2) 在控制相關(guān)的結(jié)果尚未出來(lái)之前,前瞻地執(zhí)行后續(xù)指令。(3) 用動(dòng)態(tài)調(diào)度方法對(duì)基本塊的各種組合進(jìn)行跨基本塊的調(diào)度。ROB:再定序緩沖,前瞻執(zhí)行允許指令亂序執(zhí)行,但要求按程序順序確認(rèn),為此設(shè)置ROB,用以保存指令執(zhí)行完畢到指令得到確認(rèn)間的所有指令及其結(jié)果。超標(biāo)量:超標(biāo)量處理機(jī)的典型結(jié)構(gòu)是有多個(gè)操作部件,每個(gè)時(shí)鐘周期流出的指令數(shù)不定,但有上限。可通過(guò)多個(gè)獨(dú)立的操作部件實(shí)現(xiàn)多指令的并行,使CPI的值小于1。超流水:將流水段進(jìn)一步化,在一個(gè)時(shí)鐘周期內(nèi)能夠分時(shí)流出多條指令,使CPI的值小于1。超長(zhǎng)指令字:這種指令字很長(zhǎng),被分割成多個(gè)字段,每個(gè)字段稱(chēng)為一個(gè)指令槽,直接獨(dú)立控制一個(gè)功能部件。每個(gè)時(shí)鐘周期流出的指令數(shù)是固定的,它們構(gòu)成一條長(zhǎng)指令,或說(shuō)是一個(gè)混合指令包,只能通過(guò)編譯靜態(tài)調(diào)度。循環(huán)展開(kāi):通過(guò)多次復(fù)制循環(huán)體并改變結(jié)束條件來(lái)相對(duì)增加有效操作時(shí)間,用于指令調(diào)度的一種方式。4.2 簡(jiǎn)述Tomasulo算法的基本思想。(1)記錄和檢測(cè)指令相關(guān),操作數(shù)一旦就緒就立即執(zhí)行,把發(fā)生RAW沖突的可能性減少到最??;(2)通過(guò)寄存器換名來(lái)消除WAR和WAW沖突。4.3 根據(jù)需要展開(kāi)下面的循環(huán)并進(jìn)行指令調(diào)度,直到?jīng)]有任何延遲。指令的延遲如表4.3。表4.3 本章使用的浮點(diǎn)流水線的延遲產(chǎn)生結(jié)果指令使用結(jié)果指令延遲時(shí)鐘周期數(shù)浮點(diǎn)計(jì)算另外的浮點(diǎn)計(jì)算 3浮點(diǎn)計(jì)算浮點(diǎn)存操作(SD) 2浮點(diǎn)取操作(LD)浮點(diǎn)計(jì)算 1浮點(diǎn)取操作(LD)浮點(diǎn)存操作(SD) 0 LOOP: L.D F0, 0(R1) (一次空轉(zhuǎn)) MULT.D F0, F0, F2 L.D F4, 0(R2) (二次空轉(zhuǎn)) ADD.DF0, F0, F4 (二次空轉(zhuǎn)) S.D0(R2), F0 DSUBI R1, R1, #8 DSUBI R2, R2, #8 BNEQZ R1, LOOP (一次空轉(zhuǎn))循環(huán)展開(kāi)三次: LOOP: LD F0, 0(R1) LD F3, -8(R1) LD F6, -16(R1)MULTD F0, F0, F2MULTD F3, F3, F2MULTD F6, F6, F2LD F4, 0(R2)LD F5, -8(R2)LD F7, -16(R2)ADDD F0, F0, F4ADDD F3, F3, F5ADDD F6, F6, F7SD 0(R2), F0SD -8(R2), F3SD -16(R2), F6SUBI R1, R1, #24BNEQZ R1, LOOPSUBI R2, R2, #24展開(kāi)二次也可。4.4 假設(shè)有一個(gè)長(zhǎng)流水線,僅僅對(duì)條件轉(zhuǎn)移指令使用分支目標(biāo)緩沖。假設(shè)分支預(yù)測(cè)錯(cuò)誤的開(kāi)銷(xiāo)為4個(gè)時(shí)鐘周期,緩沖不命中的開(kāi)銷(xiāo)為3個(gè)時(shí)鐘周期。假設(shè):命中率為90%,預(yù)測(cè)精度為90%,分支頻率為15%,沒(méi)有分支的基本CPI為1。(1) 求程序執(zhí)行的CPI(2) 相對(duì)于采用固定的2個(gè)時(shí)鐘周期延遲的分支處理,哪種方法程序執(zhí)行速度更快?解答:(1) CPI=1+命中率預(yù)測(cè)錯(cuò)誤率4+不命中率3 分支頻率=1+0.90.14+0.13 0.15=1+0.36+0.3 0.15=1+0.660.15=1.099(2) 采用固定2時(shí)鐘延遲CPI=1+15%2=1.3由CPI比較可知前一種方式更快4.5 假設(shè)分支目標(biāo)緩沖的命中率為90%,程序中無(wú)條件轉(zhuǎn)移指令的比例為5%,沒(méi)有無(wú)條件轉(zhuǎn)移指令的程序CPI值為1。假設(shè)分支目標(biāo)緩沖中包含分支目標(biāo)指令,允許無(wú)條件轉(zhuǎn)移指令進(jìn)入分支目標(biāo)緩沖,則程序的CPI值為多少?解答:CPI=1+5%(1-90%)3=1.00154 6 下面一段MIPS匯編程序是計(jì)算高斯消去法中的關(guān)鍵一步,用于完成下面公式的計(jì)算: Y=a X +Y其浮點(diǎn)指令延遲如表4.3所示,整數(shù)指令均為1個(gè)時(shí)鐘周期完成,浮點(diǎn)和整數(shù)部件均為流水。整數(shù)操作之間以及與其他所有浮點(diǎn)操作之間的延遲為0,轉(zhuǎn)移指令的延遲為0。X中的最后一個(gè)元素存放在存儲(chǔ)器中的地址為DONE。FOO:L.DF2 ,0(R1)MULT.D F4 ,F2 ,F0L.DF6 ,0(R2)ADD.DF6 ,F4 ,F6S.D 0(R2), F6 DADDIU R1 , R1, #8 DADDIU R2 , R2, #8 DSUBIU R3 , R1 , DONE BEQZ R3 , FOO (1) 對(duì)于標(biāo)準(zhǔn)的MIPS單流水線,上述循環(huán)計(jì)算一個(gè)Y值需要多少時(shí)間?其中有多少空轉(zhuǎn)周期?(2) 對(duì)于標(biāo)準(zhǔn)的MIPS單流水線,將上述循環(huán)順序展開(kāi)4次,不進(jìn)行任何指令調(diào)度,計(jì)算一個(gè)Y值需要多少時(shí)間?加速比是多少?其加速是如何獲得的?(3) 對(duì)于標(biāo)準(zhǔn)的MIPS單流水線,將上述循環(huán)順序展開(kāi)4次,優(yōu)化和調(diào)度指令,使循環(huán)處理時(shí)間達(dá)到最優(yōu),計(jì)算一個(gè)Y值平均需要多少時(shí)間,加速比是多少?解答:(1)易知循環(huán)計(jì)算一個(gè)Y值需要15個(gè)時(shí)鐘周期,其中有6個(gè)空轉(zhuǎn)周期。 FOO:L.DF2 ,0(R1); load Xi(一次空轉(zhuǎn))MULT.D F4 ,F2 ,F0; mutliply a* XiL.DF6 ,0(R2); load Yi(二次空轉(zhuǎn))ADD.DF6 ,F4 ,F6; add a* Xi+ Yi(二次空轉(zhuǎn))S.D 0(R2), F6 ; store YiDADDIU R1 , R1, #8 ;increment X indexDADDIU R2 , R2, #8 ; increment Y indexDSUBIU R3 , R1 , DONE ; test if doneBEQZ R3 , FOO ; loop if not done(一次空轉(zhuǎn)) (2)FOO:L.DF2 ,0(R1); load Xi(一次空轉(zhuǎn))MULT.D F4 ,F2 ,F0; mutliply a* XiL.DF6 ,0(R2); load Yi(二次空轉(zhuǎn))ADD.DF6 ,F4 ,F6; add a* Xi+ Yi(二次空轉(zhuǎn))S.D 0(R2), F6 ; store YiDADDIU R1 , R1, #8 ;increment X indexDADDIU R2 , R2, #8 ; increment Y indexDSUBIU R3 , R1 , DONE ; test if doneBEQZ R3 , FOO ; loop if not done(一次空轉(zhuǎn))FOO:L.DF2 ,8(R1); load Xi(一次空轉(zhuǎn))MULT.D F4 ,F2 ,F0; mutliply a* XiL.DF6 ,8(R2); load Yi(二次空轉(zhuǎn))ADD.DF6 ,F4 ,F6; add a* Xi+ Yi(二次空轉(zhuǎn))S.D 8(R2), F6 ; store YiDADDIU R1 , R1, #8 ;increment X indexDADDIU R2 , R2, #8 ; increment Y indexDSUBIU R3 , R1 , DONE ; test if doneBEQZ R3 , FOO ; loop if not done(一次空轉(zhuǎn))FOO:L.DF2 ,16(R1); load Xi(一次空轉(zhuǎn))MULT.D F4 ,F2 ,F0; mutliply a* XiL.DF6 ,16(R2); load Yi(二次空轉(zhuǎn))ADD.DF6 ,F4 ,F6; add a* Xi+ Yi(二次空轉(zhuǎn))S.D 16(R2), F6 ; store YiDADDIU R1 , R1, #8 ;increment X indexDADDIU R2 , R2, #8 ; increment Y indexDSUBIU R3 , R1 , DONE ; test if doneBEQZ R3 , FOO ; loop if not done(一次空轉(zhuǎn))FOO:L.DF2 ,24(R1); load Xi(一次空轉(zhuǎn))MULT.D F4 ,F2 ,F0; mutliply a* XiL.DF6 ,24(R2); load Yi(二次空轉(zhuǎn))ADD.DF6 ,F4 ,F6; add a* Xi+ Yi(二次空轉(zhuǎn))S.D 24(R2), F6 ; store YiDADDIU R1 , R1, #32 ;increment X indexDADDIU R2 , R2, #32 ; increment Y indexDSUBIU R3 , R1 , DONE ; test if doneBEQZ R3 , FOO ; loop if not done(一次空轉(zhuǎn))計(jì)算一個(gè)Y值平均需要:45/4=11.25個(gè)時(shí)鐘周期加速比:15/11.25=1.33通過(guò)循環(huán)展開(kāi)使得指令減少、分支減少。(3) FOO: LD F2 , 0(R1) LD F1, 0(R1) LD F7, 0(R1) LD F8, 0(R1)MULTD F4 , F2 , F0MULTD F3, F1, F0 MULTD F9 F7, F0 MULTD F10 F8 F0LD F6 , 0(R2) LD F5, 0(R2) LD F11

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論