2023年北郵計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第1頁
2023年北郵計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第2頁
2023年北郵計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第3頁
2023年北郵計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第4頁
2023年北郵計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

北京郵電大學(xué)實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)計(jì)算機(jī)學(xué)院班王陳()目錄TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc"實(shí)驗(yàn)一WINDLX模擬器安裝及使用?PAGEREF_Toc\h3HYPERLINK\l"_Toc"·實(shí)驗(yàn)準(zhǔn)備?PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK·實(shí)驗(yàn)環(huán)境?PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK\l"_Toc"·實(shí)驗(yàn)環(huán)節(jié) PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK\l"_Toc"·實(shí)驗(yàn)內(nèi)容及規(guī)定?PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK\l"_Toc"·實(shí)驗(yàn)過程?PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK\l"_Toc"·實(shí)驗(yàn)總結(jié)?PAGEREF_Toc\h8HYPERLINK\l"_Toc"實(shí)驗(yàn)二指令流水線相關(guān)性分析 PAGEREF_Toc\h9HYPERLINK\l"_Toc"·實(shí)驗(yàn)?zāi)康?PAGEREF_Toc\h9·實(shí)驗(yàn)環(huán)境 PAGEREF_Toc\h9HYPERLINK\l"_Toc"·實(shí)驗(yàn)環(huán)節(jié)?PAGEREF_Toc\h9HYPERLINK實(shí)驗(yàn)三DLX解決器程序設(shè)計(jì) PAGEREF_Toc\h17HYPERLINK·實(shí)驗(yàn)?zāi)康?PAGEREF_Toc\h17HYPERLINK·實(shí)驗(yàn)環(huán)境?PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK·實(shí)驗(yàn)環(huán)節(jié)?PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK·實(shí)驗(yàn)過程?PAGEREF_Toc\h17HYPERLINK\l"_Toc"A.?向量加法代碼及性能分析 PAGEREF_Toc\h17HYPERLINK\l"_Toc"B.雙精度浮點(diǎn)加法求和代碼及結(jié)果分析?PAGEREF_Toc\h22·實(shí)驗(yàn)總結(jié) h27HYPERLINK\l"_Toc"實(shí)驗(yàn)四代碼優(yōu)化?PAGEREF_Toc\h28HYPERLINK\l"_Toc"·實(shí)驗(yàn)?zāi)康?PAGEREF_Toc\h28HYPERLINK\l"_Toc"·實(shí)驗(yàn)環(huán)境 PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK·實(shí)驗(yàn)原理 PAGEREF_Toc\h28HYPERLINK\l"_Toc"·實(shí)驗(yàn)環(huán)節(jié) PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK\l"_Toc"·實(shí)驗(yàn)過程 PAGEREF_Toc\h28HYPERLINK\l"_Toc"·實(shí)驗(yàn)總結(jié)+實(shí)習(xí)體會(huì)?PAGEREF_Toc\h33HYPERLINK實(shí)驗(yàn)五循環(huán)展開 PAGEREF_Toc\h34HYPERLINK\l"_Toc"·實(shí)驗(yàn)?zāi)康?PAGEREF_Toc\h34HYPERLINK\l"_Toc"·實(shí)驗(yàn)環(huán)境?PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK\l"_Toc"·實(shí)驗(yàn)原理?PAGEREF_Toc\h34HYPERLINK·實(shí)驗(yàn)環(huán)節(jié) PAGEREF_Toc\h錯(cuò)誤!未定義書簽。HYPERLINK\l"_Toc"·實(shí)驗(yàn)過程?PAGEREF_Toc\h34HYPERLINK矩陣乘程序代碼清單及注釋說明 PAGEREF_Toc\h34HYPERLINK\l"_Toc"相關(guān)性分析結(jié)果?PAGEREF_Toc\h39HYPERLINK增長浮點(diǎn)運(yùn)算部件對性能的影響 PAGEREF_Toc\h39HYPERLINK\l"_Toc"增長forward部件對性能的影響?PAGEREF_Toc\h39HYPERLINK轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開銷 PAGEREF_Toc\h39HYPERLINK\l"_Toc"·實(shí)驗(yàn)總結(jié)+實(shí)習(xí)體會(huì)+課程建議?PAGEREF_Toc\h39實(shí)驗(yàn)一WINDLX模擬器安裝及使用WinDLX模擬器的結(jié)構(gòu)和功能說明1.點(diǎn)擊運(yùn)營之后,會(huì)看到一個(gè)如下圖所示的窗口。它涉及Register,Code,Pipeline,ClockCycleDiagram,Stat(yī)istics,Breakpoints。接下來具體介模擬器的結(jié)構(gòu)及各個(gè)部件的功能。2.Register窗口介紹Rigister窗口中顯示的是各個(gè)寄存器的名稱及內(nèi)容。如下圖:可以看到寄存器中以十六進(jìn)制標(biāo)記,從上圖可以看出各個(gè)寄存器中的內(nèi)容。2.Code窗口介紹在沒有進(jìn)行任何執(zhí)行的時(shí)候,初次打開code窗口,即為下圖所示窗口現(xiàn)實(shí)的信息是各個(gè)存儲器內(nèi)同。第一列標(biāo)記存儲器的地址;第二列是機(jī)器代碼,用16進(jìn)制表達(dá);第三列是匯編指令。當(dāng)我們點(diǎn)擊上方的,可以選擇單步或多步執(zhí)行(也可以使用快捷鍵F7或F8)。若選擇單步執(zhí)行,每按一次F7,指令執(zhí)行一次,可以看到,一次執(zhí)行的為IF->ID->intEX->MEM->WB,沒執(zhí)行一次尚有顏色的變化。顏色是用來標(biāo)記指令處在哪個(gè)流水段的,如下圖。當(dāng)然,我們也可以使用多步執(zhí)行,按快捷鍵F8,選擇5步流水,即可。3.Pipeline窗口介紹通過閱讀WinDLX模擬器說明書可以知道,Pipeline窗口顯示的是DLX解決器的內(nèi)部結(jié)構(gòu)。窗口用下圖標(biāo)記DLX五段流水。當(dāng)然,如同Code窗口介紹講述的那樣,不同的顏色顯示了指令處在哪段流水線。使用快捷鍵F7單步執(zhí)行,可以明顯的看出,不同時(shí)候流水段執(zhí)行的不同指令。如下圖。圖片反映的正式與Code中所處的時(shí)刻相同的指令流水??梢郧宄吹讲煌魉螆?zhí)行的是哪條指令。4.ClockCycleDiagram窗口實(shí)驗(yàn)準(zhǔn)備中我們已經(jīng)知道,該窗口顯示的是流水線的時(shí)空圖。時(shí)空圖反映的是不同時(shí)隙內(nèi)的運(yùn)營情況。如下圖。在我看來,時(shí)空圖是最佳理解的。由于它反映的就是流水段的并行限度。在這個(gè)DLX模擬器中,并不存在一些數(shù)據(jù)或者控制上的沖突問題。所以可以依靠上圖很清楚的看到指令所處的不同流水段,及指令執(zhí)行情況。該時(shí)空圖同樣也是和前面的Code等相相應(yīng)。也可以通過快捷鍵F7來進(jìn)一步執(zhí)行指令,可以看到流水線時(shí)空圖的擴(kuò)展情況。任意雙擊指令的一行,可以具體看到不同流水段的情況。如下圖所示。5.Statistics窗口介紹該窗口是對運(yùn)營程序中的數(shù)據(jù)進(jìn)行分析。重要涉及模擬器中硬件配置情況,在該窗口中,我們可以比較不同配置對于該模擬器的不同影響。如下圖所示。整體指令執(zhí)行情況硬件配置情況暫停次數(shù)和比例及因素分析分支次數(shù)和比例Load/Store指令執(zhí)行情況浮點(diǎn)指令執(zhí)行次數(shù)和比例trap發(fā)生的次數(shù)和比例6.Breakpoints窗口介紹該窗口使用來觀測代碼運(yùn)營情況。先打開Breakpoints窗口,點(diǎn)擊窗口上方的來設(shè)立breakpoint,也就是設(shè)立指令運(yùn)營到流水線的哪個(gè)階段程勛停止執(zhí)行。如上圖,假如選擇EX階段,在Code窗口中相應(yīng)的行會(huì)出現(xiàn)BEX,即指令執(zhí)行到譯碼結(jié)束執(zhí)行開始的時(shí)候,程序?qū)⒅兄??!?shí)驗(yàn)總結(jié)通過本次實(shí)驗(yàn),由于是第一次接觸DLX模擬器,該實(shí)驗(yàn)可以幫助我對這個(gè)模擬器大體的功能及使用做個(gè)大體的了解。對于日后的實(shí)驗(yàn)打下好的基礎(chǔ)。我覺得WinDLX模擬器小而精悍,它有不同顏色的標(biāo)記,不同寄存器及存儲器的反映。通過使用它,可以對5步流水的過程及不同階段很清楚明白的看到。也可以看到不同指令分析走到了哪一步,到了哪一步流水段。實(shí)驗(yàn)二指令流水線相關(guān)性分析·實(shí)驗(yàn)?zāi)康耐ㄟ^使用WINDLX模擬器,對程序中的三種相關(guān)現(xiàn)象進(jìn)行觀測,并對使用專用通路,增長運(yùn)算部件等技術(shù)對性能的影響進(jìn)行考察,加深對流水線和RISC解決器的特點(diǎn)的理解?!?shí)驗(yàn)環(huán)境WindowsXP操作系統(tǒng)WinDLX模擬器·實(shí)驗(yàn)環(huán)節(jié)1.觀測程序中出現(xiàn)的數(shù)據(jù)/控制/結(jié)構(gòu)相關(guān)。指出程序中出現(xiàn)上述現(xiàn)象的指令組合。2.考察增長浮點(diǎn)運(yùn)算部件對性能的影響。?3.考察增長forward部件對性能的影響。?4.觀測轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開銷。觀測程序中出現(xiàn)的數(shù)據(jù)/控制/結(jié)構(gòu)相關(guān);指出程序中出現(xiàn)上述現(xiàn)象的指令組合。數(shù)據(jù)相關(guān)如下圖所示,在ClockCycleDiagram窗口所想是的時(shí)空圖中和Pipeline窗口中的流圖中,第一次出現(xiàn)了R-Stall。接下來可以點(diǎn)擊上圖中的橘色窗口,則屏幕顯示lbur3,0×0(r2)要在WB周期寫回r3中的數(shù)據(jù);而下一條指令seqir5,r3,0×a要在intEX周期中讀?。?中的數(shù)據(jù)。上述過程發(fā)生了WR沖突,即寫讀相關(guān)。為了避免此類沖突,seqr5,r4,0×a的intEX指令延遲了一個(gè)周期進(jìn)行。由此,相關(guān)指令為:控制相關(guān)由上圖可以看出,在第4時(shí)鐘周期:第一條指令處在MEM段;第二條命令處在intEX段;第三條指令出于aborted狀態(tài);第四條命令處在IF段。因素分析:jalInputUnsigned是無條件分支指令,但當(dāng)?shù)谌齻€(gè)周期開始的時(shí)候,也就是jal這條指令被譯碼后才知道。此時(shí),movi2fp已經(jīng)執(zhí)行,且將要執(zhí)行的下一條命令在此外一個(gè)地址處,所以這條指令不會(huì)執(zhí)行,這個(gè)時(shí)候就會(huì)發(fā)生控制相關(guān)。由此,發(fā)生控制相關(guān)的指令為:結(jié)構(gòu)相關(guān)一方面,我們先來看一下執(zhí)行過控制相關(guān)的時(shí)空圖和Pipeline,如下圖。當(dāng)我們點(diǎn)擊Pipeline中IF所相應(yīng)的框框可以看到具體的該指令執(zhí)行情況,如下圖:上圖表白了addir2,r2,0×1的具體信息。該指令與它前一條指令addr1,r1,r3發(fā)生了結(jié)構(gòu)相關(guān)。并且由于此處的沖突,需要暫停2個(gè)周期。在ID段暫停后,則開始進(jìn)圖intEX段。所以這條指令(addir2,r2,0×1)你不能進(jìn)入ID流水段,譯碼部分占用,發(fā)生了結(jié)構(gòu)相關(guān)。該部分的指令為:考察增長浮點(diǎn)運(yùn)算部件對性能的影響。該實(shí)驗(yàn)取N=6一方面通過,點(diǎn)擊FloatingPointStageConfiguration來設(shè)立浮點(diǎn)運(yùn)算部件的配置。由于實(shí)驗(yàn)手冊上面規(guī)定Delay=4,所以我們將Delay這一欄改成4,而Count可以任意,為了對比,我們第一次浮點(diǎn)運(yùn)算部件取所有為2,第二次浮點(diǎn)運(yùn)算部件取所有為3。如下圖所示:運(yùn)營50個(gè)cycles之后,可以看到他們數(shù)據(jù)的對比:由此可見,浮點(diǎn)運(yùn)算部件的增減對效率無影響。比較各個(gè)數(shù)據(jù),發(fā)現(xiàn)沒有變化。無論怎么增長浮點(diǎn)運(yùn)算部件,記錄結(jié)果都同樣。因素在于此程序中浮點(diǎn)計(jì)算指令沒有重疊,所以并行度沒有增長,性能沒有提高。3.考察增長forward部件對性能的影響。為了對比有無forward部件的性能。需要在中勾選enableforwarding,以及不勾選enableconfigurat(yī)ion來看性能數(shù)據(jù)的對比。不使用forward部件:使用forward部件:從上面的數(shù)據(jù)我們可以看出增長forwardi部件后RAW由本來占總時(shí)鐘周期的26%減少至18%,RAW個(gè)數(shù)由本來的13減少至9。增長forward部件使得控制相關(guān)比例增長了。即,使用forward部件后,總的時(shí)鐘周期減少,數(shù)據(jù)相關(guān)減少,流水線的性能得到一定的改善。觀測轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開銷。我們假設(shè),浮點(diǎn)部件設(shè)立Count=3,Delay=4;N=6。執(zhí)行完畢后,查看條件轉(zhuǎn)移分支,如下圖所示:由上圖可知,轉(zhuǎn)移指令一共8條,成功轉(zhuǎn)移2條(占25%),不成功為6條。所以,靜態(tài)指令調(diào)度算法只能解決數(shù)據(jù)相關(guān),條件轉(zhuǎn)移結(jié)果與本來相比沒有變化。即,若轉(zhuǎn)移不成功,對流水線的執(zhí)行無影響,流水線的吞吐率和效率沒有減少;若轉(zhuǎn)移成功,則要廢棄預(yù)先讀入的指令,重新從轉(zhuǎn)移成功處讀入指令,執(zhí)行效率會(huì)下降?!?shí)驗(yàn)總結(jié)本次實(shí)驗(yàn)中,重要碰見一個(gè)問題,就是在當(dāng)初文獻(xiàn)加載時(shí)沒有成功,后來通過查詢資料和自己的嘗試,發(fā)現(xiàn),在選擇文獻(xiàn)的順序很關(guān)鍵,它決定了文獻(xiàn)在存儲器中出現(xiàn)的順序。本次實(shí)驗(yàn),重要通過對于三中相關(guān)的觀測,分析出現(xiàn)相關(guān)時(shí)的指令,分析浮點(diǎn)運(yùn)算部件和forward部件對性能的影響,觀測轉(zhuǎn)移指令在轉(zhuǎn)移成功和不成功時(shí)的流水線開銷,這些實(shí)驗(yàn)一步一步,通過WinDLX形象生動(dòng)的表達(dá),使我在實(shí)踐中更加進(jìn)一步的結(jié)識了流水線。實(shí)驗(yàn)三DLX解決器程序設(shè)計(jì)·實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)使用DLX匯編語言編程,進(jìn)一步分析相關(guān)現(xiàn)象·實(shí)驗(yàn)過程向量加法代碼及性能分析一方面給據(jù)題目規(guī)定,需要純熟掌握DLX編程語言,然后根據(jù)規(guī)范格式編寫向量的代碼。向量聲明VectorLength:

.word

16

//聲明向量長度Vector1:

.word

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

//聲明兩個(gè)向量

Vector1和Vector2Vector2:

.word

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

Result:

.space

4

//聲明一個(gè)空間來存放打印的數(shù)據(jù)

Loop:

//循環(huán)體ld

f10,Vector1(r2)

ld

f12,Vector2(r2)

//讀入兩個(gè)提前聲明的向量add

f4,f2,f0//加法運(yùn)算

trap

5

//系統(tǒng)中斷源代碼運(yùn)營結(jié)果分析當(dāng)運(yùn)營到如下圖所示的時(shí)候,則表達(dá)運(yùn)營結(jié)束。運(yùn)營結(jié)果為接下來我們可以查看Statistics可以看到運(yùn)營結(jié)果的數(shù)據(jù)顯示,如下圖所示。1)程序相關(guān)性分析結(jié)果

數(shù)據(jù)相關(guān)由上圖的可以看出,該程序產(chǎn)生了11.31%的數(shù)據(jù)相關(guān)。所以當(dāng)對當(dāng)前指令的操作數(shù)寄存器進(jìn)行操作(EX)的時(shí)候,前幾條指令的運(yùn)算結(jié)

果尚未寫回(WB)結(jié)果寄存器,由此產(chǎn)生數(shù)據(jù)相關(guān)。

結(jié)構(gòu)相關(guān)由于程序只簡樸的做了一次加法,所以沒有結(jié)構(gòu)相關(guān)產(chǎn)生。

控制相關(guān)查看pipeline中可以看到,當(dāng)執(zhí)行到如下情況時(shí),發(fā)生了控制相關(guān)。由Statistics中的可以看出,其控制相關(guān)發(fā)生了5.3%。分析可知,由于系統(tǒng)按照預(yù)測成功來執(zhí)行指令,所以執(zhí)行bnez后立即將其下一條指令trap

讀進(jìn)來。2)浮點(diǎn)運(yùn)算部件帶來的影響當(dāng)我們通過設(shè)立浮點(diǎn)部件的個(gè)數(shù),并將程序運(yùn)營完畢,查看Statistics中的數(shù)據(jù)作對比。如下圖所示。將浮點(diǎn)加法器由1個(gè)增長為4個(gè)后(左圖為4個(gè)),可以由上圖看出,程序執(zhí)行的性能未得到提高。分析因素我們知道,由于該程序?yàn)楫a(chǎn)生浮點(diǎn)加法器的結(jié)構(gòu)相關(guān),所以增長浮點(diǎn)加法器的數(shù)量對程序執(zhí)行的性能提高沒有幫助。3)forward部件的影響

由上圖的對比可以看到,當(dāng)不勾選enableforwarding時(shí),運(yùn)營時(shí)間由283增長到381。所以forwarding技術(shù)為該程序帶來的加速比為381/282=1.35轉(zhuǎn)移成功和不成功

查看statistics中的ConditionalBranches選項(xiàng),兩者的下述相同,如下圖所示。可以發(fā)現(xiàn),由于系統(tǒng)按照預(yù)測成功來執(zhí)行指令,所以執(zhí)行

bnez后立即將其下一條指令trap讀進(jìn)來判斷出是轉(zhuǎn)移不成功時(shí),系統(tǒng)對trap指令進(jìn)行的操作被所有作廢,轉(zhuǎn)而去執(zhí)行跳轉(zhuǎn)到的指令id。雙精度浮點(diǎn)加法求和代碼及結(jié)果分析按照題目規(guī)定,自行又編寫了一套程序來實(shí)現(xiàn)雙精度浮點(diǎn)加法求和結(jié)果分析當(dāng)運(yùn)營到如下圖所示時(shí),運(yùn)營結(jié)束,可以看到運(yùn)營結(jié)果如下圖所示。產(chǎn)看Statistics可以看到具體數(shù)據(jù)情況和產(chǎn)生相關(guān)的比例等。1)程序中出現(xiàn)的數(shù)據(jù)/控制/結(jié)構(gòu)相關(guān)

控制相關(guān):

數(shù)據(jù)相關(guān)由Statistics中的知道,發(fā)生了55.48%的數(shù)據(jù)相關(guān)。產(chǎn)看代碼可以發(fā)現(xiàn),產(chǎn)生的相關(guān)都為RW讀寫相關(guān)。它們分別為:addi

r1,r0,0subi

r2,r1,20subi

r2,r1,20beqz

r2,finishmultu

r3,r1,r4ld

f0,a(r3)ld

f2,b(r3)addd

f4,f0,f2addd

f4,f0,f2sd

r(r3),f4

控制相關(guān)由Stat(yī)istics中的可以看到,發(fā)生了4.43%的控制相關(guān)。系統(tǒng)按照預(yù)測成功來執(zhí)行指令,執(zhí)行一條指令后立即將其下一條指令trap讀進(jìn)來。2)增長浮點(diǎn)運(yùn)算部件對性能的影響。下圖分別為浮點(diǎn)運(yùn)算部件為1和4的時(shí)候數(shù)據(jù)情況對比。由上圖的對比可知,當(dāng)浮點(diǎn)運(yùn)算部件個(gè)數(shù)給邊后記錄結(jié)果均相同,也就是其數(shù)量對該函數(shù)沒有任何性能方面的改善。分期其因素為,這重要是由于函數(shù)中沒有連續(xù)的浮點(diǎn)加指令,乘、

除指令。3)增長forward部件對性能的影響。

下圖左側(cè)為沒有勾選enableforwarding時(shí)的運(yùn)營數(shù)據(jù)結(jié)果,右側(cè)為使用了forwarding技術(shù)。由上圖的對比可以看出,增長forwarding技術(shù)后,流水線的加速比為:474/352=1.347流水線性能有明顯改善。

4)轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開銷。

由ConditionalBranches的數(shù)據(jù)可以看出,該轉(zhuǎn)移指令“not

taken”的情況占絕大多數(shù)(95.24%)。在一共的21中,發(fā)生了僅為1次,所以預(yù)測順序取對流水線的性能是有利的。轉(zhuǎn)移不成功時(shí):順序預(yù)取的下條指令可以直接在流水線中執(zhí)行,保證流水線不斷流;轉(zhuǎn)移成功時(shí):順序預(yù)取的下條指令作廢,需要轉(zhuǎn)到轉(zhuǎn)移地址處重新取指,流水線發(fā)生了斷流現(xiàn)象?!?shí)驗(yàn)總結(jié)在實(shí)驗(yàn)中,我重要碰到的問題是WinDLX所加載的.s文獻(xiàn)不要出現(xiàn)中文格式,不然會(huì)導(dǎo)致加載失?。ㄩ_始好幾次為了方便我直接起名為“雙精度浮點(diǎn)向量加.s”卻怎么樣也導(dǎo)入不成功);在編寫雙精度浮點(diǎn)數(shù)運(yùn)算時(shí)有些對于指令掌握不純熟,并且雙精度double型運(yùn)算指令,其所有的運(yùn)算指令名稱上面都要加上“d”才ok。而假如是單精度的,則需要添加字母“f”;另一方面,對于浮點(diǎn)數(shù)的相關(guān)設(shè)立,涉及狀態(tài)寄存器和浮點(diǎn)寄存器都需要在實(shí)驗(yàn)之前查資料了解透徹,不然在實(shí)驗(yàn)中就會(huì)有語法錯(cuò)誤。通過本次實(shí)驗(yàn)我對實(shí)驗(yàn)二所進(jìn)行的數(shù)據(jù)相關(guān)、控制相關(guān)、結(jié)構(gòu)相關(guān)的性能分析做了更進(jìn)一步的了解,以及對于功能部件對流水線的影響,forwarding技術(shù)對流水線的影響,尚有就是靜態(tài)指令調(diào)度等。通過自行編寫向量矢量算法,在代碼中初始化兩個(gè)向量,按照分量順序進(jìn)行運(yùn)算。當(dāng)然,假如想要改變源向量,直接解決代碼中的相關(guān)數(shù)據(jù)即可。總之,該實(shí)驗(yàn)重要著重對浮點(diǎn)運(yùn)算以及對于流水線的相關(guān)影響及性能分析,使我受益匪淺。實(shí)驗(yàn)四代碼優(yōu)化·實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)簡樸編譯優(yōu)化方法,觀測采用編譯優(yōu)化方法所帶來的性能的提高?!?shí)驗(yàn)原理采用靜態(tài)調(diào)度方法重排指令序列,減少相關(guān),優(yōu)化程序·實(shí)驗(yàn)過程選擇上一個(gè)實(shí)驗(yàn)的向量加法運(yùn)算作為優(yōu)化對象。優(yōu)化后的代碼如下圖所示。當(dāng)如下圖所示的時(shí)候證明已經(jīng)執(zhí)行完畢。執(zhí)行完畢后,我們點(diǎn)擊Statistics查看運(yùn)營結(jié)果數(shù)據(jù)分析。程序相關(guān)性分析結(jié)果

優(yōu)化之后其中斷數(shù)據(jù)顯示為:優(yōu)化前為:由上述兩圖對比可以看出,數(shù)據(jù)相關(guān):其RAW相關(guān)由優(yōu)化前的34.12%減少為20.57%,性能改善很多;結(jié)構(gòu)相關(guān)沒有發(fā)生改變;控制相關(guān):由本來的3.94%變?yōu)椋?75%,沒有改善。因此,可以看出,我所進(jìn)行的代碼優(yōu)化對性能方面改善并不是很強(qiáng)烈,重要影響還是在數(shù)據(jù)相關(guān)方面。2)增長浮點(diǎn)運(yùn)算部件對性能的影響。上圖左圖為4個(gè)浮點(diǎn)部件執(zhí)行結(jié)果,右圖為原始默認(rèn)1個(gè)浮點(diǎn)部件執(zhí)行結(jié)果。由此可以看出,其部件個(gè)數(shù)對記錄結(jié)果并無影響。因素為該運(yùn)算過程中不存在結(jié)構(gòu)相關(guān),因此并行度沒有增長,程序影響不大,部件增長對于系統(tǒng)的性能并沒有改善。3)增長forward部件對性能的影響。

左圖為使用forwading技術(shù)的記錄結(jié)果。通過對比可以看出,使用forwarding技術(shù)之后執(zhí)行周期少了316-283=33個(gè)時(shí)鐘周期,在這些時(shí)鐘周期中,forwarding技術(shù)重要在于消除了執(zhí)行過程中的數(shù)據(jù)相關(guān)(由65個(gè)中斷減少至32個(gè))。因此,代碼執(zhí)行效率改善很多。轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開銷。由記錄結(jié)果中的ConditionalBranches(如下圖)可以看出,優(yōu)化前和優(yōu)化后的ConditionalBranches都為上圖顯示,優(yōu)化對于轉(zhuǎn)移指令并無影響。在本代碼運(yùn)營過程中,成功幾率為93.75%,在進(jìn)行一共16次轉(zhuǎn)移中,taken一共15次。分析因素可以知道,預(yù)測成功執(zhí)行指令,當(dāng)判斷轉(zhuǎn)移不成功是,系統(tǒng)對trap指令不再執(zhí)行,進(jìn)行跳轉(zhuǎn)?!?shí)驗(yàn)總結(jié)+實(shí)習(xí)體會(huì)本次實(shí)驗(yàn)重要是對上一個(gè)實(shí)驗(yàn)中的代碼進(jìn)行優(yōu)化,使我在做實(shí)驗(yàn)的過程中掌握了進(jìn)行代碼優(yōu)化的方法,以及相關(guān)性的分析。而相關(guān)性分析在我看來是重點(diǎn),它關(guān)系到能否進(jìn)行優(yōu)化以及怎么優(yōu)化。一方面需要分析程序中產(chǎn)生的相關(guān)性,代碼優(yōu)化的目的就是減少相關(guān)性的發(fā)生,提高流水線的效率。通過上述的實(shí)驗(yàn)報(bào)告和數(shù)據(jù)對比,可以看到,代碼優(yōu)化我做到了。實(shí)習(xí)體會(huì):其實(shí)總的來說這幾次實(shí)驗(yàn)難度不大,重要還是將課上老師所講的融入實(shí)驗(yàn)當(dāng)中。其中forwarding技術(shù)和預(yù)測技術(shù)都是課上老師具體講過的,所以對于實(shí)驗(yàn)的理解起來更容易一些。理解之后,通過實(shí)驗(yàn)結(jié)果的記錄數(shù)據(jù)可以客觀的看到這些技術(shù)對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論