計(jì)算機(jī)標(biāo)準(zhǔn)體系結(jié)構(gòu)第四次實(shí)驗(yàn)Tomasulo方法實(shí)驗(yàn)_第1頁(yè)
計(jì)算機(jī)標(biāo)準(zhǔn)體系結(jié)構(gòu)第四次實(shí)驗(yàn)Tomasulo方法實(shí)驗(yàn)_第2頁(yè)
計(jì)算機(jī)標(biāo)準(zhǔn)體系結(jié)構(gòu)第四次實(shí)驗(yàn)Tomasulo方法實(shí)驗(yàn)_第3頁(yè)
計(jì)算機(jī)標(biāo)準(zhǔn)體系結(jié)構(gòu)第四次實(shí)驗(yàn)Tomasulo方法實(shí)驗(yàn)_第4頁(yè)
計(jì)算機(jī)標(biāo)準(zhǔn)體系結(jié)構(gòu)第四次實(shí)驗(yàn)Tomasulo方法實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Tomasulo辦法實(shí)驗(yàn) 姓名:王宇航 學(xué)號(hào):09283020Tomasulo辦法實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)浚和ㄟ^(guò)本實(shí)驗(yàn),理解指令流水化過(guò)程中亂序執(zhí)行和寄存器重命名辦法。二、實(shí)驗(yàn)內(nèi)容:1、用dlxView模仿器或Tomasulo算法模仿器執(zhí)行浮點(diǎn)指令程序段。2、指出指令亂序執(zhí)行和寄存器重命名過(guò)程。三、實(shí)驗(yàn)環(huán)境操作系統(tǒng):Windows7旗艦版解決器:Intel(R)Core(TM)i3雙核內(nèi)存:2.00GB軟件:Tomasulo算法模仿器四、實(shí)驗(yàn)過(guò)程:1、設(shè)立Tomasulo算法模仿器參數(shù)其中Load部件執(zhí)行時(shí)間不能設(shè)立為1,至少為2,故不作修改;加/減法部件執(zhí)行時(shí)間為4個(gè)時(shí)鐘周期,乘法部件執(zhí)行時(shí)間為7個(gè)時(shí)鐘周期,除法部件執(zhí)行時(shí)間為15個(gè)時(shí)鐘周期。2、分析Tomasulo算法模仿器中指令亂序執(zhí)行過(guò)程Tomasulo算法模仿器中默認(rèn)設(shè)立指令下圖所示:執(zhí)行該指令序列,重點(diǎn)觀測(cè)指令狀態(tài)寫成果一欄,便會(huì)發(fā)現(xiàn)執(zhí)行過(guò)程中存在亂序執(zhí)行現(xiàn)象,共有兩處亂序執(zhí)行,分別如下列圖所示:圖中顯示,在第10周期時(shí),位于MULT.D指令之后SUB.D指令通過(guò)4個(gè)周期已經(jīng)執(zhí)行完畢并已經(jīng)將成果寫回寄存器,而MULT.D指令仍在執(zhí)行中。在第13周期時(shí),MULT.D指令通過(guò)7個(gè)周期執(zhí)行完畢,才將成果寫回。此外,還可以看到,位于DIV.D指令之后ADD.D指令在第11周期時(shí)就已經(jīng)開始執(zhí)行,而DIV.D指令直至當(dāng)前都未開始執(zhí)行。在第15周期時(shí),ADD.D指令通過(guò)4個(gè)周期執(zhí)行完畢,先于DIV.D指令寫回成果;而DIV.D指令仍在執(zhí)行中。在第29周期時(shí),DIV.D指令通過(guò)15個(gè)周期終于執(zhí)行完畢,將成果寫回寄存器。以上分析證明,在Tomasulo算法中存在亂序執(zhí)行并且不會(huì)影響執(zhí)行成果對(duì)的性。這是由于,Tomasulo算法采用分布保存站,沖突檢測(cè)和指令執(zhí)行控制是分布。3、分析Tomasulo算法模仿器中寄存器重命名過(guò)程在Tomasulo算法中通過(guò)寄存器重命名來(lái)消除WAR沖突,這一過(guò)程是通過(guò)保存站來(lái)完畢。當(dāng)指令流出到保存站時(shí),若其操作數(shù)已經(jīng)就緒,則將該指令中相應(yīng)寄存器號(hào)換為該數(shù)據(jù)自身;若其操作數(shù)尚未計(jì)算出來(lái),則將該指令中相應(yīng)寄存器號(hào)重命名為將產(chǎn)生這個(gè)操作數(shù)保存站標(biāo)記,從而使得該指令與此寄存器不再關(guān)于系,背面指令對(duì)此寄存器寫入操作也不也許對(duì)該指令導(dǎo)致WAR沖突了。(1)將指令中相應(yīng)寄存器號(hào)換為數(shù)據(jù)自身執(zhí)行Tomasulo算法模仿器中默認(rèn)設(shè)立指令序列,容易看出最后一條指令A(yù)DD.D和前一條指令DIV.D之間存在一種WAR沖突,即DIV.D指令要讀寄存器F8中值,ADD.D要寫寄存器F8中值,由于亂序執(zhí)行,ADD.D指令會(huì)先于DIV.D指令完畢;但是執(zhí)行成果卻不會(huì)發(fā)生錯(cuò)誤,是由于Tomasulo算法通過(guò)寄存器重命名將這一沖突消除了??梢钥吹皆诘?周期時(shí),DIV.D指令流出到保存站中,此時(shí)F8中值已經(jīng)由前面L.D指令得出,為M1,但是模仿器并沒有將相應(yīng)寄存器號(hào)R[F8]寫入Vk字段中,而是將其換為了F8中數(shù)據(jù)自身M1,從而使得該指令與寄存器F8不再關(guān)于聯(lián),無(wú)論背面指令如何改寫F8也都不會(huì)影響該指令對(duì)的執(zhí)行了。此外,由于前面MULT.D指令尚未得出F2值,故DIV.D指令將寄存器F2重命名為MULT.D指令保存站標(biāo)記Mult1,寫入Qj字段中。如下圖所示:在這個(gè)周期中,ADD.D指令已經(jīng)執(zhí)行完畢,并且已經(jīng)將寄存器F8中值由M1改寫成了M5,但此時(shí)DIV.D指令仍在對(duì)的執(zhí)行著,并沒有發(fā)生任何錯(cuò)誤,并且通過(guò)15個(gè)執(zhí)行周期可以對(duì)的完畢執(zhí)行過(guò)程,第15周期如下圖所示:由此闡明了將指令中相應(yīng)寄存器號(hào)換為數(shù)據(jù)自身這一寄存器重命名辦法成功地消除了WAR沖突。(2)將指令中相應(yīng)寄存器號(hào)重命名為將產(chǎn)生該操作數(shù)保存站標(biāo)記對(duì)Tomasulo算法模仿器中默認(rèn)設(shè)立指令進(jìn)行重排,將第一條L.D指令后移兩個(gè)位置,重排后指令如下圖所示:可以看到,在該指令序列中,最后一條指令A(yù)DD.D和前一條指令DIV.D之間依然存在一種WAR沖突。執(zhí)行該指令序列,觀測(cè)執(zhí)行過(guò)程??梢园l(fā)當(dāng)前第5周期時(shí),DIV.D指令流出到保存站中,而此時(shí)前面L.D指令尚未得出F8值,但是模仿器并沒有將相應(yīng)寄存器號(hào)R[F8]寫入Vk字段中,而是將其換為了L.D指令保存站標(biāo)記Load2寫入了Qk中,從而使得該指令與寄存器F8不再關(guān)于聯(lián),無(wú)論背面指令如何改寫F8也都不會(huì)影響該指令對(duì)的執(zhí)行了,如下圖所示: 對(duì)寄存器F2解決和前一種狀況相似。在第6周期時(shí),保存站Load2完畢計(jì)算,得出F8值M2,就會(huì)通過(guò)CBD將F8值直接傳送到DIV.D指令保存站Mult2Vk字段中,如下圖所示: 在第12周期時(shí),MULT.D指令得出F2值后也會(huì)通過(guò)CDB將其直接送到DIV.D指令保存站中,DIV.D指令便可以開始執(zhí)行了。(3)分析WAW沖突消除辦法寄存器重命名辦法不但可以消除WAR沖突,還可以配合使用對(duì)目的寄存器預(yù)約辦法消除WAW沖突。這一辦法思想是,在一條指令流出到保存站時(shí),將成果寄存器Qi字段設(shè)立為該指令保存站標(biāo)記,表達(dá)到果寄存器將要接受該指令成果,這樣其實(shí)相稱于提前完畢了寫操作。由于指令是按程序順序流出,當(dāng)浮現(xiàn)多條指令寫同一種成果寄存器時(shí),最后留下預(yù)約成果必然是最后一條指令,因而可以消除WAW沖突。為了演示消除WAW沖突過(guò)程,改寫上述指令最后一條指令,將目的寄存器由F8改為F12,如下圖所示:在該指令序列中,DIV.D指令和最后ADD.D指令之間存在WAW沖突,即DIV.D指令要寫寄存器F12,ADD.D指令也要寫寄存器F12,由于亂序執(zhí)行,ADD.D指令會(huì)先于DIV.D指令完畢,寫成果至寄存器F12。若沒有任何防范辦法,當(dāng)DIV.D指令完畢后又會(huì)寫其執(zhí)行成果至寄存器F12,修改剛才ADD.D指令執(zhí)行成果,導(dǎo)致成果錯(cuò)誤。但Tomasulo算法通過(guò)寄存器重命名和對(duì)目的寄存器預(yù)約辦法將這一沖突消除了。執(zhí)行修改后指令序列,觀測(cè)執(zhí)行過(guò)程??梢钥吹剑诘?周期時(shí),DIV.D指令流出到保存站中,同步將寄存器F12Qi字段中設(shè)為DIV.D指令保存站標(biāo)記Mult2,完畢預(yù)約工作。如下圖所示:在第6周期時(shí),ADD.D指令流出到保存站中,同步將寄存器F12Qi字段中改寫為該指令保存站標(biāo)記Add2,這樣就表達(dá)寄存器F12最后接受是ADD.D指令執(zhí)行成果,雖然DIV.D指令在ADD.D指令之后執(zhí)行完,也無(wú)法再改寫寄存器F12了,從而保證了F12中成果對(duì)的性。如下圖所示:為了驗(yàn)證這一辦法有效性,可以看一下第16周期和第28周期。在第16周期,ADD.D指令先于DIV.D指令完畢執(zhí)行過(guò)程,將成果寫入寄存器F12中,值為M5;在第29周期,DIV.D指令也完畢執(zhí)行過(guò)程,但是再也無(wú)法寫寄存器F12了,F(xiàn)12中值依然為ADD.D指令執(zhí)行成果M5,如下圖所示:第16周期第28周期由此闡明寄存器重命名和對(duì)目的寄存器預(yù)約辦法成功地消除了WAW沖突。五、實(shí)驗(yàn)總結(jié):本

溫馨提示

  • 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論