版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗三 WinDLX流水線實驗王宇航安全0901班09283020實驗三 WinDLX流水線實驗1 實驗?zāi)康模和ㄟ^本實驗,加深對結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)和指令調(diào)度的理解,了解結(jié)構(gòu)相關(guān)對CPU性能的影響,掌握如何使用定向技術(shù)來減少數(shù)據(jù)相關(guān)帶來的暫停,了解指令調(diào)度技術(shù)對CPU性能改進(jìn)的好處。2 實驗內(nèi)容:2.1 用WinDLX模擬器進(jìn)行結(jié)構(gòu)相關(guān)的分析 1、生成structure.s程序。用WinDLX模擬器運行該程序。 2、通過模擬,找出存在結(jié)構(gòu)相關(guān)的指令對,以及導(dǎo)致結(jié)構(gòu)相關(guān)的部件。 3、記錄由結(jié)構(gòu)相關(guān)引起的暫停時鐘周期數(shù),計算暫停時鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。2.2 用WinDLX模擬器分析數(shù)據(jù)相
2、關(guān) 1、生成data.s程序。 2、通過Configuration菜單中的選項,設(shè)定在不采用定向技術(shù)的情況下,用WinDLX模擬器運行程序data_d.s。記錄數(shù)據(jù)相關(guān)引起的暫停時鐘周期數(shù)以及程序執(zhí)行的總時鐘周期數(shù),計算暫停時鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。 3、在采用定向技術(shù)的情況下,用WinDLX模擬器再次運行程序data_d.s。記錄數(shù)據(jù)相關(guān)引起的暫停時鐘周期數(shù)以及程序執(zhí)行的總時鐘周期數(shù),計算暫停時鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。2.3 用WinDLX模擬器分析指令調(diào)度 1、生成sch-before.s及sch-after.s程序。 2、通過Configuration菜單中的選項,將除法
3、單元數(shù)設(shè)置為3,將加法乘法除法的延遲設(shè)置為3個時鐘周期。 3、用WinDLX模擬器運行調(diào)度前的程序sch-before.s 。記錄程序執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時鐘周期數(shù)。 4、用WinDLX模擬器運行調(diào)度后的程序sch-after.s ,記錄程序執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時鐘周期數(shù)。2.4 綜合實驗(習(xí)題3.4)在WinDLX上運行如下代碼序列:LOOP:LWR1,0(R2) ADDIR1,R1,#1SW0(R2),R1ADDIR2,R2,#4SUBR4,R3,R2BNEZR4,LOOP其中:R3的初值是R2+396。假設(shè):在整個代碼序列的運行過程中,所有
4、的存儲器訪問都是命中的,并且在一個時鐘周期中對同一個寄存器的讀操作和寫操作可以通過寄存器文件“定向”。1、 在沒有任何其他定向(或旁路)硬件的支持下,假設(shè)采用排空流水線的策略處理分支指令,且所有的存儲器訪問都是命中Cache,那么執(zhí)行上述代碼需要多少個時鐘周期?2、 假設(shè)該流水線有正常的定向路徑,且采用預(yù)測分支失敗的策略處理分支指令,所有的存儲器訪問都命中Cache,那么執(zhí)行上述代碼需要多少個時鐘周期?3、 假設(shè)該流水線有正常的定向路徑和一個單周期延遲分支,請對該循環(huán)中的指令進(jìn)行調(diào)度,但是不能增加指令的條數(shù)。計算執(zhí)行上述代碼所需要的時鐘周期數(shù)。3 實驗過程:3.1 用WinDLX模擬器進(jìn)行結(jié)構(gòu)
5、相關(guān)的分析3.1.1 實驗過程: 用WinDLX打開之前編寫好的structure.s程序,單步執(zhí)行,查看Clock Cycle Diagram窗口中的變化: 可以看出指令“ADDIR2, R2, #8 ”和指令“LD F0, 0(R2)”發(fā)生結(jié)構(gòu)沖突??梢钥闯觥癆DDIR2, R2, #8”、“ADDI R3, R3, #8” 和“SUBIR5, R5, #1”這三條指令和“ADDD F4, F0, F2”存在結(jié)構(gòu)相關(guān)。導(dǎo)致結(jié)構(gòu)相關(guān)的部件是存儲數(shù)據(jù)和指令的存儲器部件。通過單步執(zhí)行可以在code窗口中觀察到程序的LOOP段共循環(huán)了10次,而且上述的因結(jié)構(gòu)沖突引起暫停的指令都是在LOOP循環(huán)中。
6、所以程序執(zhí)行完畢后,因結(jié)構(gòu)沖突引起的暫停周期數(shù)為2×10=20,由圖3可知,程序總共執(zhí)行了117個時鐘周期。所以暫停時鐘數(shù)占總執(zhí)行周期的百分比為:20/117 = 17.09 %。3.1.2 結(jié)構(gòu)相關(guān)對CPU性能的影響及解決結(jié)構(gòu)相關(guān)的方法:上述四對指令在流水線中重疊執(zhí)行時產(chǎn)生了對存儲器訪問的資源沖突,即結(jié)構(gòu)相關(guān)問題。上述WinDLX的執(zhí)行過程采用了流水化功能單元的解決辦法來解決結(jié)構(gòu)相關(guān),CPU產(chǎn)生了暫停周期,使流水線的性能下降。且暫停周期占總執(zhí)行周期的百分比還比較大,是一個不容忽視的問題。解決結(jié)構(gòu)相關(guān)通常需要采用流水線功能單元的方法或資源重復(fù)的方法。既然流水線功能單元的方法引入的暫停
7、影響了流水線的性能,可以考慮采用資源重復(fù)的方法,即在流水線機器中設(shè)置相互獨立的指令存儲器和數(shù)據(jù)存儲器,也可將Cache分割成指令Cache和數(shù)據(jù)Cache,這樣就能夠很好的消除結(jié)構(gòu)相關(guān)。但是這樣做會帶來很大的硬件開銷,對流水線機器而言,如果要在每個時鐘周期內(nèi),能夠支持取指令操作和對數(shù)據(jù)的存儲訪問操作同時進(jìn)行,而又不發(fā)生結(jié)構(gòu)相關(guān),那么存儲總線的帶寬必須要加倍。所以在解決該問題時要在性能和開銷兩方面進(jìn)行權(quán)衡。3.2 用WinDLX模擬器分析數(shù)據(jù)相關(guān)3.2.1 實驗過程: 用WinDLX打開之前寫好的data_d.s程序,配置Configuration菜單中的選項,設(shè)定不采用定向技術(shù)。記錄數(shù)據(jù)相關(guān)引
8、起的暫停時鐘周期數(shù)以及程序執(zhí)行的總時鐘周期數(shù),結(jié)果如下:可以看出,在不采用定向技術(shù)的情況下,data_d.s程序總過執(zhí)行了202個時鐘周期,其中由數(shù)據(jù)相關(guān)引起的暫停周期為104個,占總執(zhí)行周期的51.48%。配置Configuration菜單中的選項,設(shè)定采用定向技術(shù)。記錄數(shù)據(jù)相關(guān)引起的暫停時鐘周期數(shù)以及程序執(zhí)行的總時鐘周期數(shù),結(jié)果如下:可以看出,采用定向技術(shù)之后,data_d.s程序總過執(zhí)行了128個時鐘周期,其中由數(shù)據(jù)相關(guān)引起的暫停周期為30個,占總執(zhí)行周期的23.44%。3.2.2 總結(jié): 由上述記錄可知,通過定向技術(shù),減少了數(shù)據(jù)相關(guān)所引起的暫停周期的數(shù)量,縮短了程序的執(zhí)行周期,整個性能
9、是原來的1.58倍。3.3 用WinDLX模擬器分析指令調(diào)度3.3.1 實驗過程:通過Configuration菜單中的選項,將除法單元數(shù)設(shè)置為3,將加法乘法除法的延遲設(shè)置為3個時鐘周期。用WinDLX模擬器運行調(diào)度前的程序sch-before.s 。記錄程序執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時鐘周期數(shù)。結(jié)果如下: 可以看出,sch-before.s程序執(zhí)行的總時鐘周期數(shù)為31,總暫停周期數(shù)為16,其中寫后讀相關(guān)(RAW)暫停周期為9個,Trap 暫停周期為7個。用WinDLX模擬器運行調(diào)度前的程序sch-after.s 。記錄程序執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時鐘周期
10、數(shù)。結(jié)果如下:可以看出,sch-after.s 程序執(zhí)行的總時鐘周期數(shù)為25,總暫停周期數(shù)為9,其中寫后讀相關(guān)(RAW)暫停周期為3個,Trap 暫停周期為6個。3.3.2 總結(jié):經(jīng)調(diào)度之后,程序執(zhí)行的總時鐘周期數(shù)從31減到了25,同時各種類型的暫停周期數(shù)也相應(yīng)了減少了。通過編譯器重新組織代碼順序來實現(xiàn)“指令調(diào)度”,消除了一部分的暫停周期,使流水線性能得到了提高。3.4 綜合實驗(習(xí)題3.4)1、 根據(jù)實驗內(nèi)容二中的data_d.s程序,將程序做修改如下,生成3_4_before.s: 其中R2是數(shù)組A的基址,R3是數(shù)組B的基址,R3 = R2+4*9= R2+36,模擬了9個循環(huán)。因為R3
11、=R2 + 396,所以共396/4 = 99個循環(huán)。 用WinDLX運行3_4_before.s,配置Configuration菜單中的選項,設(shè)定不采用定向技術(shù)。程序在一個循環(huán)周期內(nèi)的流水線時空圖如下所示:由圖中分支指令后的trap指令的執(zhí)行可以看出,WinDLX對分支指令采用的是預(yù)測分支失敗的方法,即在分支指令取指后的下一個周期取下一條指令。當(dāng)分支指令跳轉(zhuǎn)成功時,流水線就把在分支指令之后取出的所有指令轉(zhuǎn)化為空操作,并按分支目標(biāo)地址重新取指令執(zhí)行。可以看出,執(zhí)行一個循環(huán)需要 -15-(-30)=15個周期。在一個循環(huán)周期內(nèi),指令序列的流水線時空圖如下所示:S代表R-Stall。與WinDLX
12、中運行出的流水線時空圖不同之處在于,這里采用的是排空流水線處理分支指令,即在第15時鐘周期,當(dāng)流水線在ID段檢測到分支指令“BNEZ R4, LOOP”后,就暫停執(zhí)行其后的所有指令,直到分支指令到達(dá)MEM段,確定是否分支成功并計算出新的PC值為止。這里,因為分支成功,所以重新取指令“LWR1, 0(R2)”執(zhí)行。由圖9可以看出,執(zhí)行完一個循環(huán)需要的時鐘周期數(shù)為:18 -1 =17. 由于R3 =R2 + 396,因此共有396/4 = 99個循環(huán)。故執(zhí)行完整個程序所需要的時鐘周期數(shù)為 17×98 + 18 = 1684。2、 用WinDLX運行3_4_before.s,配置Confi
13、guration菜單中的選項,設(shè)定采用定向技術(shù)。程序在一個循環(huán)周期內(nèi)的流水線時空圖如下所示: 由上述可知WinDLX對分支指令采用的是預(yù)測分支失敗的方法。且由圖10可以看出,在采用定向的條件下,執(zhí)行一個循環(huán)需要-2-(-11)= 9個周期。在一個循環(huán)周期內(nèi),指令序列的流水線時空圖如下所示: 與WinDLX中運行出的流水線時空圖不同之處在于,這里分支指令后沒有“TRAP #0”指令。因而在采用預(yù)測分支失敗的策略處理分支指令的情況下,流水線中繼續(xù)流水的是“LW R1, 0(R2)”指令。分支成功后重新取指令“LW R1, 0(R2)”執(zhí)行。 由圖可知,執(zhí)行完一個循環(huán)需要的時鐘周期數(shù)為:11 -1
14、=10。 執(zhí)行完整個程序所需要的時鐘周期數(shù)為 10×98 + 11 = 991。3、 按照題的要求對該循環(huán)中的指令進(jìn)行調(diào)度,采用的調(diào)度方法為:將獨立執(zhí)行的指令“ADDIR2, R2, #4”前移至“LW R1, 0(R2)”后;將分支指令前的一條指令“SW 0(R2), R1”修改為“SW -4(R2), R1”,后移至分支指令“BNEZR4, LOOP”后作為延遲槽中的指令。調(diào)度后程序如下所示:將調(diào)度后的程序保存為3_4_after.s,導(dǎo)入WinDLX,設(shè)定為采用定向技術(shù),運行該程序。在一個循環(huán)周期內(nèi),該指令序列的流水線時空圖如下所示:由上圖可以看出,在采用預(yù)測分支失敗的策略處理分支指令時,分支指令“BNEZ R4, LOOP”跳轉(zhuǎn)成功后,停止了其后繼指令“SW -4(R2), R1”的執(zhí)行,直接轉(zhuǎn)向分支目標(biāo)指令“LW R1, 0(R2)”處執(zhí)行。在這種情況下,執(zhí)行一個循環(huán)需要 -3-(-10)=7個時鐘周期。 在一個循環(huán)周期內(nèi),指令序列的流水線時空圖如下所示: 與WinDLX中運行出的流水線時空圖不同之處在于,這里是采用單周期延遲分支的
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度醫(yī)療機構(gòu)專用凈水器安裝與消毒處理合同
- 2025年度公司管理人員特殊工種聘用合同3篇
- 2025年度全款購置旅游觀光車房產(chǎn)合同3篇
- 二零二五年度公寓樓出租合同范本(帶裝修服務(wù))3篇
- 二零二五年度全新教育機構(gòu)兼職教師教學(xué)資源整合合同3篇
- 二零二五年度食堂特色菜品研發(fā)用工合同3篇
- 2024年沾益縣人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 二零二五年度校園外賣公司送餐合同3篇
- 二零二五年度電力巡檢駕駛員聘用合同協(xié)議書3篇
- 2025年度綠色廠房拆除與生態(tài)修復(fù)合同3篇
- 水泥行業(yè)數(shù)字化轉(zhuǎn)型服務(wù)方案
- 深圳市南山區(qū)2024-2025學(xué)年第一學(xué)期期末教學(xué)質(zhì)量檢測九年級物理 24-25上九年級物理
- 應(yīng)急設(shè)施設(shè)備和物資儲備管理制度(4篇)
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- 江蘇省鎮(zhèn)江市實驗學(xué)校2023-2024學(xué)年九年級上學(xué)期期末考試化學(xué)試卷
- 期末 (試題) -2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- GB/T 32066-2024煤基費托合成液體石蠟
- 水電工程施工機械臺時費定額(2004年版)
- 鋼鐵企業(yè)安全生產(chǎn)事故案例匯編
- 安慶市農(nóng)業(yè)雪災(zāi)恢復(fù)重建和救災(zāi)資金使用情況總結(jié)
- 食品工程原理課程設(shè)計攪拌器的設(shè)計
評論
0/150
提交評論