![北郵大三下計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/0dd924f4-34b0-49b6-9d1d-d71ced5a1118/0dd924f4-34b0-49b6-9d1d-d71ced5a11181.gif)
![北郵大三下計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/0dd924f4-34b0-49b6-9d1d-d71ced5a1118/0dd924f4-34b0-49b6-9d1d-d71ced5a11182.gif)
![北郵大三下計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/0dd924f4-34b0-49b6-9d1d-d71ced5a1118/0dd924f4-34b0-49b6-9d1d-d71ced5a11183.gif)
![北郵大三下計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/0dd924f4-34b0-49b6-9d1d-d71ced5a1118/0dd924f4-34b0-49b6-9d1d-d71ced5a11184.gif)
![北郵大三下計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一到五WINDLX模擬器_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/0dd924f4-34b0-49b6-9d1d-d71ced5a1118/0dd924f4-34b0-49b6-9d1d-d71ced5a11185.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、北京郵電大學(xué)實(shí)驗(yàn)報(bào)告課程名稱 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)計(jì)算機(jī)學(xué)院 2011211311班薛玥(2011211432)目錄實(shí)驗(yàn)一 WINDLX模擬器安裝及使用3·實(shí)驗(yàn)準(zhǔn)備3·實(shí)驗(yàn)環(huán)境4·實(shí)驗(yàn)步驟5·實(shí)驗(yàn)內(nèi)容及要求5·實(shí)驗(yàn)過(guò)程5·實(shí)驗(yàn)總結(jié)11實(shí)驗(yàn)二 指令流水線相關(guān)性分析12·實(shí)驗(yàn)?zāi)康?2·實(shí)驗(yàn)環(huán)境12·實(shí)驗(yàn)步驟12·實(shí)驗(yàn)過(guò)程12·實(shí)驗(yàn)總結(jié)19實(shí)驗(yàn)三 DLX處理器程序設(shè)計(jì)20·實(shí)驗(yàn)?zāi)康?0·實(shí)驗(yàn)環(huán)境20·實(shí)驗(yàn)步驟20·實(shí)驗(yàn)過(guò)程20A.向量加法代碼及性能分析20B
2、.雙精度浮點(diǎn)加法求和代碼及結(jié)果分析26·實(shí)驗(yàn)總結(jié)31實(shí)驗(yàn)四 代碼優(yōu)化32·實(shí)驗(yàn)?zāi)康?2·實(shí)驗(yàn)環(huán)境32·實(shí)驗(yàn)原理32·實(shí)驗(yàn)步驟32·實(shí)驗(yàn)過(guò)程32·實(shí)驗(yàn)總結(jié)+實(shí)習(xí)體會(huì)37實(shí)驗(yàn)五 循環(huán)展開(kāi)38·實(shí)驗(yàn)?zāi)康?8·實(shí)驗(yàn)環(huán)境38·實(shí)驗(yàn)原理38·實(shí)驗(yàn)步驟38·實(shí)驗(yàn)過(guò)程38矩陣乘程序代碼清單及注釋說(shuō)明38相關(guān)性分析結(jié)果43增加浮點(diǎn)運(yùn)算部件對(duì)性能的影響43增加forward部件對(duì)性能的影響43轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開(kāi)銷43·實(shí)驗(yàn)總結(jié)+實(shí)習(xí)體會(huì)+課程建議43實(shí)驗(yàn)一 W
3、INDLX模擬器安裝及使用·實(shí)驗(yàn)準(zhǔn)備1.了解DLX的基本結(jié)構(gòu)和原理DLX是一種典型的Load/Store型指令集結(jié)構(gòu)。它具有一套簡(jiǎn)單的Load/Store指令集;它注重指令流水效率;它簡(jiǎn)化指令的譯碼;它高效支持編譯器。2.了解DLX中的寄存器 DLX中有32個(gè)通用寄存器(GPRs),分別將其命名為R0,R1R31。每個(gè)通用寄存器長(zhǎng)度為32位。另外,DLX中有32個(gè)浮點(diǎn)寄存器(FPRs),分別將其命名為F0,F1F31。3.了解DLX數(shù)據(jù)類型DLX提供了多種長(zhǎng)度的整型數(shù)據(jù)和浮點(diǎn)數(shù)據(jù)。對(duì)整型數(shù)據(jù)而言,有8位,16位,32位多種長(zhǎng)度;對(duì)浮點(diǎn)而言,有32位單精度浮點(diǎn)數(shù)和64位雙精度浮點(diǎn)數(shù)。浮
4、點(diǎn)數(shù)據(jù)表示采用的是IEEE754標(biāo)準(zhǔn)。DLX操作都是對(duì)32位整型數(shù)據(jù)及32或64位浮點(diǎn)數(shù)據(jù)進(jìn)行的。4.了解DLX的尋址方式和數(shù)據(jù)傳送 DLX提供了寄存器尋址,立即尋址,偏移尋址和寄存器間接尋址四種尋址方式。寄存器尋址字段的大小為5位,用來(lái)標(biāo)識(shí)32個(gè)通用寄存器或浮點(diǎn)寄存器。5.了解DLX的指令格式因?yàn)镈LX只有四種尋址方式,所以將其尋址方式編碼在操作碼中。為了簡(jiǎn)化指令譯碼,并充分發(fā)揮流水線的效率,所有DLX指令的字長(zhǎng)均是32位,其中用6位表示操作碼。DLX中各種類型指令的格式如下圖所示:6.了解DLX中的操作 DLX指令中的操作可以分為四種類型,即:Load和Store操作、ALU操作、分支和跳
5、轉(zhuǎn)操作、浮點(diǎn)操作。(1)Load和Store操作 可以對(duì)DLX的所有通用寄存器和浮點(diǎn)寄存器進(jìn)行Load(載入)和Store(儲(chǔ)存)操作,但是通用寄存器R0的Load操作沒(méi)有任何效果。 (2) ALU操作在DLX中,所有的ALU指令都是寄存器寄存器型指令,其運(yùn)算包含了簡(jiǎn)單的算術(shù)和邏輯運(yùn)算,DLX還允許所有這些指令對(duì)立即值進(jìn)行操作,立即值以16位符號(hào)擴(kuò)展形式出現(xiàn)。在DLX指令集中,還有一些寄存器比較指令(=,<,>,),如果比較結(jié)果為真,這些指令就在目標(biāo)寄存器中填入1(表示真),否則填入0(表示假)。因?yàn)檫@些比較操作指令要對(duì)目標(biāo)寄存器進(jìn)行“設(shè)置”,所以也稱它們?yōu)樵O(shè)置相等、設(shè)置不等、設(shè)置
6、小于等指令。 (3) 分支和跳轉(zhuǎn)操作在DLX中,對(duì)程序流程的控制是通過(guò)一些跳轉(zhuǎn)和分支指令來(lái)實(shí)現(xiàn)的。根據(jù)描述目標(biāo)地址的方法和是否鏈接可以將跳轉(zhuǎn)操作指令分為四種類型。其中兩種類型的跳轉(zhuǎn)指令用帶符號(hào)位的26位偏移量加上程序計(jì)數(shù)器的值來(lái)確定跳轉(zhuǎn)的目標(biāo)地址,另外兩種類型的跳轉(zhuǎn)指令則指定一個(gè)寄存器,由寄存器中的內(nèi)容決定跳轉(zhuǎn)的目標(biāo)地址。跳轉(zhuǎn)有兩種類型,一種是簡(jiǎn)單跳轉(zhuǎn),另一種是跳轉(zhuǎn)并鏈接(用于過(guò)程調(diào)用),后者將返回一個(gè)地址,即將下一條順序指令地址(返回地址)保存在寄存器R31中。DLX中的所有分支指令均是條件分支指令,其源操作數(shù)寄存器中包含了一個(gè)數(shù)值或某個(gè)比較結(jié)果。分支指令測(cè)試該源操作數(shù)寄存器中的值是0還是非
7、0,決定分支是否成功。(4) 浮點(diǎn)操作 DLX的浮點(diǎn)操作有:加、減、乘、除。后綴D代表雙精度浮點(diǎn)操作,而后綴F代表單精度浮點(diǎn)操作(如:ADDD、ADDF、SUBD、SUBF、MULTD、MULTF、DIVD、DIVF)。值得提出的是,DLX的浮點(diǎn)比較操作設(shè)置浮點(diǎn)狀態(tài)寄存器中的位,如果比較結(jié)果為真,則將該位設(shè)置為1;如果比較結(jié)果為假,則將該位設(shè)置為0。浮點(diǎn)分支指令BFPT和BFTF則測(cè)試該寄存器的值來(lái)決定分支是否成功。·實(shí)驗(yàn)環(huán)境Windows XP操作系統(tǒng)WinDLX模擬器·實(shí)驗(yàn)步驟1.WINDLX模擬器安裝 2.熟悉模擬器的配置3.熟悉各工具的使用·實(shí)驗(yàn)內(nèi)容及要求
8、閱讀模擬器Help文檔和相關(guān)資料,利用Fact.s及Input.s代碼熟悉模擬器的配置、各項(xiàng)工具使用、寄存器設(shè)置及指令系統(tǒng)。軟件包中還有WinDLX教程和聯(lián)機(jī)幫助,可以通過(guò)它們進(jìn)一步了解模擬器的使用方法和DLX處理器的原理。·實(shí)驗(yàn)過(guò)程前期精讀老師所給資料+上網(wǎng)查詢相關(guān)資料,了解WinDLX模擬器。1.首先,要認(rèn)真閱讀老師所給的有關(guān)WinDLX的實(shí)驗(yàn)指導(dǎo)書和使用指南,在實(shí)驗(yàn)開(kāi)始之前一定要對(duì)軟件有個(gè)細(xì)致的了解,點(diǎn)擊,文檔十分細(xì)致的講述了這個(gè)模擬器各個(gè)窗口所包含的功能。但是我在做實(shí)驗(yàn)的時(shí)候還上網(wǎng)查了一些資料,希望能夠?qū)ψ约涸谝院蟮脑囼?yàn)中有所幫助。文檔介紹了該模擬器的指令格式及要求。2.在詳
9、細(xì)了解了WinDLX模擬器之后,點(diǎn)擊,則開(kāi)始運(yùn)行。WinDLX模擬器的結(jié)構(gòu)和功能說(shuō)明1.點(diǎn)擊運(yùn)行之后,會(huì)看到一個(gè)如下圖所示的窗口。它包括Register, Code, Pipeline, Clock Cycle Diagram, Statistics, Breakpoints。接下來(lái)詳細(xì)介模擬器的結(jié)構(gòu)及各個(gè)部件的功能。2.Register窗口介紹Rigister窗口中顯示的是各個(gè)寄存器的名稱及內(nèi)容。如下圖:可以看到寄存器中以十六進(jìn)制標(biāo)識(shí),從上圖可以看出各個(gè)寄存器中的內(nèi)容。2.Code窗口介紹 在沒(méi)有進(jìn)行任何執(zhí)行的時(shí)候,初次打開(kāi)code窗口,即為下圖所示窗口現(xiàn)實(shí)的信息是各個(gè)存儲(chǔ)器內(nèi)同。第一列標(biāo)識(shí)
10、存儲(chǔ)器的地址;第二列是機(jī)器代碼,用16進(jìn)制表示;第三列是匯編指令。當(dāng)我們點(diǎn)擊上方的,可以選擇單步或多步執(zhí)行(也可以使用快捷鍵F7或F8)。若選擇單步執(zhí)行,每按一次F7,指令執(zhí)行一次,可以看到,一次執(zhí)行的為IF->ID->intEX->MEM->WB,沒(méi)執(zhí)行一次還有顏色的變化。顏色是用來(lái)標(biāo)識(shí)指令處于哪個(gè)流水段的,如下圖。當(dāng)然,我們也可以使用多步執(zhí)行,按快捷鍵F8,選擇5步流水,即可。3.Pipeline窗口介紹通過(guò)閱讀WinDLX模擬器說(shuō)明書可以知道,Pipeline窗口顯示的是DLX處理器的內(nèi)部結(jié)構(gòu)。窗口用下圖標(biāo)識(shí)DLX五段流水。當(dāng)然,如同Code窗口介紹講述的那樣,不
11、同的顏色顯示了指令處于哪段流水線。使用快捷鍵F7單步執(zhí)行,可以明顯的看出,不同時(shí)候流水段執(zhí)行的不同指令。如下圖。圖片反映的正式與Code中所處的時(shí)刻相同的指令流水??梢郧逦吹讲煌魉螆?zhí)行的是哪條指令。4.Clock Cycle Diagram窗口實(shí)驗(yàn)準(zhǔn)備中我們已經(jīng)知道,該窗口顯示的是流水線的時(shí)空?qǐng)D。時(shí)空?qǐng)D反映的是不同時(shí)隙內(nèi)的運(yùn)行情況。如下圖。在我看來(lái),時(shí)空?qǐng)D是最好理解的。因?yàn)樗从车木褪橇魉蔚牟⑿谐潭?。在這個(gè)DLX模擬器中,并不存在一些數(shù)據(jù)或者控制上的沖突問(wèn)題。所以可以依靠上圖很清晰的看到指令所處的不同流水段,及指令執(zhí)行情況。該時(shí)空?qǐng)D同樣也是和前面的Code等相對(duì)應(yīng)。也可以通過(guò)快捷鍵F7
12、來(lái)進(jìn)一步執(zhí)行指令,可以看到流水線時(shí)空?qǐng)D的擴(kuò)展情況。任意雙擊指令的一行,可以詳細(xì)看到不同流水段的情況。如下圖所示。5.Statistics窗口介紹該窗口是對(duì)運(yùn)行程序中的數(shù)據(jù)進(jìn)行分析。主要包括模擬器中硬件配置情況,在該窗口中,我們可以比較不同配置對(duì)于該模擬器的不同影響。如下圖所示。1) 整體指令執(zhí)行情況2) 硬件配置情況3) 暫停次數(shù)和百分比及原因分析4) 分支次數(shù)和百分比5) Load/Store指令執(zhí)行情況6) 浮點(diǎn)指令執(zhí)行次數(shù)和百分比 7) trap發(fā)生的次數(shù)和百分比6.Breakpoints窗口介紹該窗口使用來(lái)觀察代碼運(yùn)行情況。先打開(kāi)Breakpoints窗口,點(diǎn)擊窗口上方的來(lái)設(shè)置brea
13、kpoint,也就是設(shè)置指令運(yùn)行到流水線的哪個(gè)階段程勛停止執(zhí)行。如上圖,如果選擇EX階段,在Code窗口中相應(yīng)的行會(huì)出現(xiàn)BEX,即指令執(zhí)行到譯碼結(jié)束執(zhí)行開(kāi)始的時(shí)候,程序?qū)⒅兄埂?#183;實(shí)驗(yàn)總結(jié)通過(guò)本次試驗(yàn),由于是第一次接觸DLX模擬器,該試驗(yàn)?zāi)軌驇椭覍?duì)這個(gè)模擬器大致的功能及使用做個(gè)大致的了解。對(duì)于日后的實(shí)驗(yàn)打下好的基礎(chǔ)。我覺(jué)得WinDLX模擬器小而精悍,它有不同顏色的標(biāo)記, 不同寄存器及存儲(chǔ)器的反映。通過(guò)使用它,可以對(duì)5步流水的過(guò)程及不同階段很清楚明白的看到。也可以看到不同指令分析走到了哪一步,到了哪一步流水段。實(shí)驗(yàn)二 指令流水線相關(guān)性分析·實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)使用WINDLX模擬器,
14、對(duì)程序中的三種相關(guān)現(xiàn)象進(jìn)行觀察,并對(duì)使用專用通路,增加運(yùn)算部件等技術(shù)對(duì)性能的影響進(jìn)行考察,加深對(duì)流水線和RISC處理器的特點(diǎn)的理解。·實(shí)驗(yàn)環(huán)境Windows XP操作系統(tǒng)WinDLX模擬器·實(shí)驗(yàn)步驟1.觀察程序中出現(xiàn)的數(shù)據(jù)/控制/結(jié)構(gòu)相關(guān)。指出程序中出現(xiàn)上述現(xiàn)象的指令組合。2.考察增加浮點(diǎn)運(yùn)算部件對(duì)性能的影響。3.考察增加forward部件對(duì)性能的影響。4.觀察轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開(kāi)銷。·實(shí)驗(yàn)過(guò)程在開(kāi)始模擬之前,至少應(yīng)裝入一個(gè)程序到主存,按照下述步驟,將fact.s和input.s加載至WinDLX中。 加在完后點(diǎn)擊Code后可以看
15、到如下圖所示。證明加載成功,即可進(jìn)行以下實(shí)驗(yàn)。1. 觀察程序中出現(xiàn)的數(shù)據(jù)/控制/結(jié)構(gòu)相關(guān);指出程序中出現(xiàn)上述現(xiàn)象的指令組合。1) 數(shù)據(jù)相關(guān)如下圖所示,在Clock Cycle Diagram窗口所想是的時(shí)空?qǐng)D中和Pipeline窗口中的流圖中,第一次出現(xiàn)了R-Stall。接下來(lái)可以點(diǎn)擊上圖中的橘色窗口,則屏幕顯示lbu r3,0×0(r2)要在WB周期寫回r3中的數(shù)據(jù);而下一條指令seqi r5,r3,0×a要在intEX周期中讀取r3中的數(shù)據(jù)。上述過(guò)程發(fā)生了WR沖突,即寫讀相關(guān)。為了避免此類沖突,seq r5,r4,0×a的intEX指令延遲了一個(gè)周期進(jìn)行。由此
16、,相關(guān)指令為:2) 控制相關(guān)由上圖可以看出,在第4時(shí)鐘周期:第一條指令處于MEM段;第二條命令處于intEX段;第三條指令出于aborted狀態(tài);第四條命令處于IF段。原因分析:jal InputUnsigned是無(wú)條件分支指令,但當(dāng)?shù)谌齻€(gè)周期開(kāi)始的時(shí)候,也就是jal這條指令被譯碼后才知道。此時(shí),movi2fp已經(jīng)執(zhí)行,且將要執(zhí)行的下一條命令在另外一個(gè)地址處,所以這條指令不會(huì)執(zhí)行,這個(gè)時(shí)候就會(huì)發(fā)生控制相關(guān)。由此,發(fā)生控制相關(guān)的指令為:3) 結(jié)構(gòu)相關(guān)首先,我們先來(lái)看一下執(zhí)行過(guò)控制相關(guān)的時(shí)空?qǐng)D和Pipeline,如下圖。當(dāng)我們點(diǎn)擊Pipeline中IF所對(duì)應(yīng)的框框可以看到詳細(xì)的該指令執(zhí)行情況,如下
17、圖:上圖表明了addi r2,r2,0×1的詳細(xì)信息。該指令與它前一條指令add r1,r1,r3發(fā)生了結(jié)構(gòu)相關(guān)。并且由于此處的沖突,需要暫停2個(gè)周期。在ID段暫停后,則開(kāi)始進(jìn)圖intEX段。所以這條指令(addi r2,r2,0×1)你不能進(jìn)入ID流水段,譯碼部分占用,發(fā)生了結(jié)構(gòu)相關(guān)。該部分的指令為:2. 考察增加浮點(diǎn)運(yùn)算部件對(duì)性能的影響。該實(shí)驗(yàn)取N=6首先通過(guò),點(diǎn)擊Floating Point Stage Configuration來(lái)設(shè)置浮點(diǎn)運(yùn)算部件的配置。由于實(shí)驗(yàn)手冊(cè)上面要求Delay=4,所以我們將Delay這一欄改成4,而Count可以任意,為了對(duì)比,我們第一次浮
18、點(diǎn)運(yùn)算部件取全部為2,第二次浮點(diǎn)運(yùn)算部件取全部為3。如下圖所示:運(yùn)行50個(gè)cycles之后,可以看到他們數(shù)據(jù)的對(duì)比:由此可見(jiàn),浮點(diǎn)運(yùn)算部件的增減對(duì)效率無(wú)影響。比較各個(gè)數(shù)據(jù),發(fā)現(xiàn)沒(méi)有變化。無(wú)論怎么增加浮點(diǎn)運(yùn)算部件,統(tǒng)計(jì)結(jié)果都一樣。原因在于此程序中浮點(diǎn)計(jì)算指令沒(méi)有重疊,所以并行度沒(méi)有增加,性能沒(méi)有提高。3.考察增加forward部件對(duì)性能的影響。 為了對(duì)比有無(wú)forward部件的性能。需要在中勾選enable forwarding,以及不勾選enable configuration來(lái)看性能數(shù)據(jù)的對(duì)比。不使用forward部件:使用forward部件:從上面的數(shù)據(jù)我們可以看出增加forwardi部件
19、后RAW由原來(lái)占總時(shí)鐘周期的26%減少至18%,RAW個(gè)數(shù)由原來(lái)的13減少至9。增加forward部件使得控制相關(guān)比例增加了。即,使用forward部件后,總的時(shí)鐘周期減少,數(shù)據(jù)相關(guān)減少,流水線的性能得到一定的改善。3. 觀察轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開(kāi)銷。我們假設(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é)果與原來(lái)相比沒(méi)有變化。即,若轉(zhuǎn)移不成功,對(duì)流水線的執(zhí)行無(wú)影響,流水線的吞吐率和效率沒(méi)有降低;若轉(zhuǎn)移成功
20、,則要廢棄預(yù)先讀入的指令,重新從轉(zhuǎn)移成功處讀入指令,執(zhí)行效率會(huì)下降。·實(shí)驗(yàn)總結(jié)本次試驗(yàn)中,主要遇見(jiàn)一個(gè)問(wèn)題,就是在當(dāng)初文件加載時(shí)沒(méi)有成功,后來(lái)通過(guò)查詢資料和自己的嘗試,發(fā)現(xiàn),在選擇文件的順序很關(guān)鍵,它決定了文件在存儲(chǔ)器中出現(xiàn)的順序。本次實(shí)驗(yàn),主要通過(guò)對(duì)于三中相關(guān)的觀察,分析出現(xiàn)相關(guān)時(shí)的指令,分析浮點(diǎn)運(yùn)算部件和forward部件對(duì)性能的影響,觀察轉(zhuǎn)移指令在轉(zhuǎn)移成功和不成功時(shí)的流水線開(kāi)銷,這些實(shí)驗(yàn)一步一步,通過(guò)WinDLX形象生動(dòng)的表示,使我在實(shí)踐中更加深入的認(rèn)識(shí)了流水線。實(shí)驗(yàn)三 DLX處理器程序設(shè)計(jì)·實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)使用DLX匯編語(yǔ)言編程,進(jìn)一步分析相關(guān)現(xiàn)象·實(shí)驗(yàn)環(huán)境W
21、in XP操作系統(tǒng)DLX匯編語(yǔ)言環(huán)境·實(shí)驗(yàn)步驟1.熟悉DLX匯編語(yǔ)言。2.自編一段匯編代碼,完成兩雙精度浮點(diǎn)一維向量的加法(或乘除法)運(yùn)算,并輸出結(jié)果。向量長(zhǎng)度>=16。觀察程序中出現(xiàn)的數(shù)據(jù)/控制/結(jié)構(gòu)相關(guān)3.對(duì)此程序完成上面實(shí)驗(yàn)二中1)、2)、3)、4)方面的分析·實(shí)驗(yàn)過(guò)程A. 向量加法代碼及性能分析首先給據(jù)題目要求,需要熟練掌握DLX編程語(yǔ)言,然后根據(jù)規(guī)范格式編寫向量的代碼。1) 向量聲明VectorLength: .word 16 /聲明向量長(zhǎng)度Vector1: .word
22、 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è)空間來(lái)存放打印的數(shù)據(jù) Loop: /循環(huán)體ld f10
23、,Vector1(r2) ld f12,Vector2(r2) /讀入兩個(gè)提前聲明的向量add f4,f2,f0 /加法運(yùn)算 trap 5 /系統(tǒng)中斷2) 源代碼運(yùn)行結(jié)果分析當(dāng)運(yùn)行到如下圖所示的時(shí)候,則表示運(yùn)行結(jié)束。運(yùn)行結(jié)果為接下來(lái)我們可以查看Statistics可以看到運(yùn)行結(jié)果的數(shù)據(jù)顯示,如下圖所示。1)程序相關(guān)性分析結(jié)果 數(shù)據(jù)相關(guān)由
24、上圖的可以看出,該程序產(chǎn)生了11.31%的數(shù)據(jù)相關(guān)。所以當(dāng)對(duì)當(dāng)前指令的操作數(shù)寄存器進(jìn)行操作(EX)的時(shí)候,前幾條指令的運(yùn)算結(jié) 果還未寫回(WB)結(jié)果寄存器,由此產(chǎn)生數(shù)據(jù)相關(guān)。 結(jié)構(gòu)相關(guān)由于程序只簡(jiǎn)單的做了一次加法,所以沒(méi)有結(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ù)測(cè)成功來(lái)執(zhí)行指令,所以執(zhí)行bnez后馬上將其下一條指令trap 讀進(jìn)來(lái)。2)浮點(diǎn)運(yùn)算部件帶來(lái)的影響當(dāng)我們通過(guò)設(shè)置浮點(diǎn)部件的個(gè)數(shù),并將程序運(yùn)行完畢,查
25、看Statistics中的數(shù)據(jù)作對(duì)比。如下圖所示。將浮點(diǎn)加法器由1個(gè)增加為4個(gè)后(左圖為4個(gè)),可以由上圖看出,程序執(zhí)行的性能未得到提升。分析原因我們知道,由于該程序?yàn)楫a(chǎn)生浮點(diǎn)加法器的結(jié)構(gòu)相關(guān),所以增加浮點(diǎn)加法器的數(shù)量對(duì)程序執(zhí)行的性能提升沒(méi)有幫助。3)forward部件的影響 由上圖的對(duì)比可以看到,當(dāng)不勾選enable forwarding時(shí),運(yùn)行時(shí)間由283增加到381。所以forwarding技術(shù)為該程序帶來(lái)的加速比為381/282=1.354) 轉(zhuǎn)移成功和不成功 查看statistics中的Conditional Branches選項(xiàng),兩者的下述相同,如下圖所示??梢?/p>
26、發(fā)現(xiàn),由于系統(tǒng)按照預(yù)測(cè)成功來(lái)執(zhí)行指令,所以執(zhí)行 bnez后馬上將其下一條指令trap讀進(jìn)來(lái)判斷出是轉(zhuǎn)移不成功時(shí),系統(tǒng)對(duì)trap指令進(jìn)行的操作被全部作廢,轉(zhuǎn)而去執(zhí)行跳轉(zhuǎn)到的指令id。B. 雙精度浮點(diǎn)加法求和代碼及結(jié)果分析按照題目要求,自行又編寫了一套程序來(lái)實(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讀寫相
27、關(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)由Statistics中的可以看到,發(fā)生了4.43%的控制相關(guān)。系統(tǒng)按照預(yù)測(cè)成功來(lái)執(zhí)行指令,執(zhí)行一條指令后馬上將其下一條指令trap讀進(jìn)來(lái)。2)增加浮點(diǎn)運(yùn)算部件對(duì)性能的影響。下圖分別為浮點(diǎn)運(yùn)算部件為1和
28、4的時(shí)候數(shù)據(jù)情況對(duì)比。由上圖的對(duì)比可知,當(dāng)浮點(diǎn)運(yùn)算部件個(gè)數(shù)給邊后統(tǒng)計(jì)結(jié)果均相同,也就是其數(shù)量對(duì)該函數(shù)沒(méi)有任何性能方面的改進(jìn)。分期其原因?yàn)?,這主要是因?yàn)楹瘮?shù)中沒(méi)有連續(xù)的浮點(diǎn)加指令,乘、 除指令。3)增加forward部件對(duì)性能的影響。 下圖左側(cè)為沒(méi)有勾選enable forwarding時(shí)的運(yùn)行數(shù)據(jù)結(jié)果,右側(cè)為使用了forwarding技術(shù)。由上圖的對(duì)比可以看出,增加forwarding技術(shù)后,流水線的加速比為:474/352=1.347流水線性能有明顯改善。 4)轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開(kāi)銷。 由Conditional Branches
29、的數(shù)據(jù)可以看出,該轉(zhuǎn)移指令“not taken”的情況占絕大多數(shù)(95.24%)。在一共的21中,發(fā)生了僅為1次,所以預(yù)測(cè)順序取對(duì)流水線的性能是有利的。轉(zhuǎn)移不成功時(shí):順序預(yù)取的下條指令可以直接在流水線中執(zhí)行,保證流水線不斷流;轉(zhuǎn)移成功時(shí):順序預(yù)取的下條指令作廢,需要轉(zhuǎn)到轉(zhuǎn)移地址處重新取指,流水線發(fā)生了斷流現(xiàn)象。·實(shí)驗(yàn)總結(jié)在實(shí)驗(yàn)中,我主要遇到的問(wèn)題是WinDLX所加載的.s文件不要出現(xiàn)中文格式,不然會(huì)導(dǎo)致加載失?。ㄩ_(kāi)始好幾次為了方便我直接起名為“雙精度浮點(diǎn)向量加.s”卻怎么樣也導(dǎo)入不成功);在編寫雙精度浮點(diǎn)數(shù)運(yùn)算時(shí)有些對(duì)于指令掌握不熟練,并且雙精度double型運(yùn)算指令,其所
30、有的運(yùn)算指令名稱上面都要加上“d”才ok。而如果是單精度的,則需要添加字母“f”;其次,對(duì)于浮點(diǎn)數(shù)的相關(guān)設(shè)置,包括狀態(tài)寄存器和浮點(diǎn)寄存器都需要在實(shí)驗(yàn)之前查資料了解透徹,不然在試驗(yàn)中就會(huì)有語(yǔ)法錯(cuò)誤。通過(guò)此次實(shí)驗(yàn)我對(duì)實(shí)驗(yàn)二所進(jìn)行的數(shù)據(jù)相關(guān)、控制相關(guān)、結(jié)構(gòu)相關(guān)的性能分析做了更深入的了解,以及對(duì)于功能部件對(duì)流水線的影響,forwarding技術(shù)對(duì)流水線的影響,還有就是靜態(tài)指令調(diào)度等。通過(guò)自行編寫向量矢量算法,在代碼中初始化兩個(gè)向量,按照分量順序進(jìn)行運(yùn)算。當(dāng)然,如果想要改變?cè)聪蛄?,直接處理代碼中的相關(guān)數(shù)據(jù)即可??傊搶?shí)驗(yàn)主要著重對(duì)浮點(diǎn)運(yùn)算以及對(duì)于流水線的相關(guān)影響及性能分析,使我受益匪淺。實(shí)驗(yàn)四 代碼優(yōu)
31、化·實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)簡(jiǎn)單編譯優(yōu)化方法,觀察采用編譯優(yōu)化方法所帶來(lái)的性能的提高。·實(shí)驗(yàn)環(huán)境Win XP操作系統(tǒng)DLX匯編語(yǔ)言環(huán)境·實(shí)驗(yàn)原理采用靜態(tài)調(diào)度方法重排指令序列,減少相關(guān),優(yōu)化程序·實(shí)驗(yàn)步驟1. 使用靜態(tài)調(diào)度方法手工優(yōu)化實(shí)驗(yàn)2或?qū)嶒?yàn)3的代碼2. 對(duì)優(yōu)化程序,重復(fù)實(shí)驗(yàn)二中(1)、(2)、(3)、(4)工作。·實(shí)驗(yàn)過(guò)程選擇上一個(gè)實(shí)驗(yàn)的向量加法運(yùn)算作為優(yōu)化對(duì)象。優(yōu)化后的代碼如下圖所示。當(dāng)如下圖所示的時(shí)候證明已經(jīng)執(zhí)行完畢。執(zhí)行完畢后,我們點(diǎn)擊Statistics查看運(yùn)行結(jié)果數(shù)據(jù)分析。1) 程序相關(guān)性分析結(jié)果 優(yōu)化之后其中斷數(shù)據(jù)顯示為:優(yōu)化前為
32、:由上述兩圖對(duì)比可以看出,數(shù)據(jù)相關(guān):其RAW相關(guān)由優(yōu)化前的34.12%減少為20.57%,性能改善很多;結(jié)構(gòu)相關(guān)沒(méi)有發(fā)生改變;控制相關(guān):由原來(lái)的3.94%變?yōu)?.75%,沒(méi)有改善。因此,可以看出,我所進(jìn)行的代碼優(yōu)化對(duì)性能方面改善并不是很強(qiáng)烈,主要影響還是在數(shù)據(jù)相關(guān)方面。2)增加浮點(diǎn)運(yùn)算部件對(duì)性能的影響。上圖左圖為4個(gè)浮點(diǎn)部件執(zhí)行結(jié)果,右圖為原始默認(rèn)1個(gè)浮點(diǎn)部件執(zhí)行結(jié)果。由此可以看出,其部件個(gè)數(shù)對(duì)統(tǒng)計(jì)結(jié)果并無(wú)影響。原因?yàn)樵撨\(yùn)算過(guò)程中不存在結(jié)構(gòu)相關(guān),因此并行度沒(méi)有增加,程序影響不大,部件增加對(duì)于系統(tǒng)的性能并沒(méi)有改善。3)增加forward部件對(duì)性能的影響。 左圖為使用forwading技
33、術(shù)的統(tǒng)計(jì)結(jié)果。通過(guò)對(duì)比可以看出,使用forwarding技術(shù)之后執(zhí)行周期少了316-283=33個(gè)時(shí)鐘周期,在這些時(shí)鐘周期中,forwarding技術(shù)主要在于消除了執(zhí)行過(guò)程中的數(shù)據(jù)相關(guān)(由65個(gè)中斷減少至32個(gè))。因此,代碼執(zhí)行效率改善很多。5) 轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開(kāi)銷。由統(tǒng)計(jì)結(jié)果中的Conditional Branches(如下圖)可以看出,優(yōu)化前和優(yōu)化后的Conditional Branches都為上圖顯示,優(yōu)化對(duì)于轉(zhuǎn)移指令并無(wú)影響。在本代碼運(yùn)行過(guò)程中,成功幾率為93.75%,在進(jìn)行一共16次轉(zhuǎn)移中,taken一共15次。分析原因可以知道,預(yù)測(cè)成功執(zhí)行指令,當(dāng)判斷轉(zhuǎn)
34、移不成功是,系統(tǒng)對(duì)trap指令不再執(zhí)行,進(jìn)行跳轉(zhuǎn)。·實(shí)驗(yàn)總結(jié)+實(shí)習(xí)體會(huì)本次試驗(yàn)主要是對(duì)上一個(gè)實(shí)驗(yàn)中的代碼進(jìn)行優(yōu)化,使我在做實(shí)驗(yàn)的過(guò)程中掌握了進(jìn)行代碼優(yōu)化的方法,以及相關(guān)性的分析。而相關(guān)性分析在我看來(lái)是重點(diǎn),它關(guān)系到能否進(jìn)行優(yōu)化以及怎么優(yōu)化。首先需要分析程序中產(chǎn)生的相關(guān)性,代碼優(yōu)化的目的就是減少相關(guān)性的發(fā)生,提高流水線的效率。通過(guò)上述的實(shí)驗(yàn)報(bào)告和數(shù)據(jù)對(duì)比,可以看到,代碼優(yōu)化我做到了。實(shí)習(xí)體會(huì):其實(shí)總的來(lái)說(shuō)這幾次試驗(yàn)難度不大,主要還是將課上老師所講的融入實(shí)驗(yàn)當(dāng)中。其中forwarding技術(shù)和預(yù)測(cè)技術(shù)都是課上老師詳細(xì)講過(guò)的,所以對(duì)于實(shí)驗(yàn)的理解起來(lái)更容易一些。理解之后,通過(guò)實(shí)驗(yàn)結(jié)果的統(tǒng)計(jì)數(shù)據(jù)可以客觀的看到這些技術(shù)對(duì)于流水線性能的影響。這對(duì)于我來(lái)說(shuō)收獲頗多。實(shí)驗(yàn)五 循環(huán)展開(kāi)·實(shí)驗(yàn)?zāi)康倪M(jìn)一步學(xué)習(xí)DLX匯編語(yǔ)言編程方法,學(xué)習(xí)循環(huán)展開(kāi)編譯優(yōu)化方法,觀察采用循環(huán)展開(kāi)編譯優(yōu)化方法所帶來(lái)的性能的提高
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度產(chǎn)業(yè)投資顧問(wèn)服務(wù)合同樣本
- 2025至2030年中國(guó)噸袋包裝機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 7《開(kāi)國(guó)大典》8《燈光》聯(lián)讀說(shuō)課稿-2024-2025學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)上冊(cè)
- 2025年電腦繡花服飾項(xiàng)目可行性研究報(bào)告
- 8《安全記心上》第一課時(shí) 平安出行(說(shuō)課稿)-2023-2024學(xué)年道德與法治三年級(jí)上冊(cè)統(tǒng)編版
- 2024-2025學(xué)年高中語(yǔ)文 18 興賢說(shuō)課稿 語(yǔ)文版選修《唐宋八大家散文鑒賞》
- 2025年復(fù)合自封口茶葉袋項(xiàng)目可行性研究報(bào)告
- 2025年雙氣室項(xiàng)目可行性研究報(bào)告
- 2025年內(nèi)絲彎管接頭項(xiàng)目可行性研究報(bào)告
- 2025年三眼夾板項(xiàng)目可行性研究報(bào)告
- 高考英語(yǔ)單詞3500(亂序版)
- 《社區(qū)康復(fù)》課件-第五章 脊髓損傷患者的社區(qū)康復(fù)實(shí)踐
- 北方、南方戲劇圈的雜劇文檔
- 燈謎大全及答案1000個(gè)
- 白酒銷售經(jīng)理述職報(bào)告
- 部編小學(xué)語(yǔ)文(6年級(jí)下冊(cè)第6單元)作業(yè)設(shè)計(jì)
- 洗衣機(jī)事業(yè)部精益降本總結(jié)及規(guī)劃 -美的集團(tuán)制造年會(huì)
- 2015-2022年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文/數(shù)學(xué)/英語(yǔ)筆試參考題庫(kù)含答案解析
- 2023年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)模擬試題及答案解析
- 鋁合金門窗設(shè)計(jì)說(shuō)明
- 小學(xué)數(shù)學(xué)-三角形面積計(jì)算公式的推導(dǎo)教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
評(píng)論
0/150
提交評(píng)論