實(shí)驗(yàn)三實(shí)現(xiàn)Tomasulo算法模擬器_第1頁
實(shí)驗(yàn)三實(shí)現(xiàn)Tomasulo算法模擬器_第2頁
實(shí)驗(yàn)三實(shí)現(xiàn)Tomasulo算法模擬器_第3頁
實(shí)驗(yàn)三實(shí)現(xiàn)Tomasulo算法模擬器_第4頁
實(shí)驗(yàn)三實(shí)現(xiàn)Tomasulo算法模擬器_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

實(shí)驗(yàn)三實(shí)現(xiàn)Tomasulo算法模擬器一、實(shí)驗(yàn)?zāi)康募由顚χ噶罴壊⑿行约捌溟_發(fā)的理解;加深對Tomasulo算法的理解;掌握Tomasulo算法在指令流出、執(zhí)行、寫結(jié)果各階段對浮點(diǎn)操作指令以及l(fā)oad和store指令進(jìn)行什么處理;掌握采用了Tomasulo算法的浮點(diǎn)處理部件的結(jié)構(gòu);掌握保留站的結(jié)構(gòu);給定被執(zhí)行代碼片段,對于具體某個時鐘周期,能夠?qū)懗霰A粽尽⒅噶顮顟B(tài)表以及浮點(diǎn)寄存器狀態(tài)表內(nèi)容的變化情況。二、實(shí)驗(yàn)要求設(shè)計(jì)和實(shí)現(xiàn)一個Tomasulo算法模擬器。基本要求:針對程序中直線型代碼,可亂序執(zhí)行、亂序完成。能夠正確輸出每個周期之后保留站的內(nèi)容。保留站基本信息:站名狀態(tài)操作碼第一操作數(shù)值第一操作數(shù)狀態(tài)第二操作數(shù)值第二操作數(shù)狀態(tài)能夠正確輸出每個周期之后寄存器狀態(tài)表的內(nèi)容。寄存器狀態(tài)表基本信息:寄存器名寄存器狀態(tài)(0:不等待保留站的內(nèi)容;n表示等待的保留站名n>0)寄存器內(nèi)容(狀態(tài)為0時,該值才有意義)能夠正確輸出每個周期之后指令狀態(tài)表的內(nèi)容(指令分為浮點(diǎn)運(yùn)算指令和load/store指令),指令狀態(tài)分為流入,執(zhí)行和寫回。指令狀態(tài)表基本信息標(biāo)志出每條指令流出、執(zhí)行、寫回這三個階段所在的周期號較高要求:實(shí)現(xiàn)帶界面的模擬器,可動態(tài)輸入指令并配置相關(guān)信息(e.g指令各個狀態(tài)周期數(shù),運(yùn)算部件數(shù)目),并能正確輸出上述基本要求中的相關(guān)信息。實(shí)現(xiàn)帶“再定序緩沖”的Tomasula算法模擬器,支持分支指令三、實(shí)驗(yàn)報告1.給定指令流輸入測試L.D F6,21(R2)L.D F2,20(R3)MUL.D F0,F2,F4SUB.D F8,F6,F2DIV.D F10,F0,F6ADD.D F6,F8,F2假設(shè)浮點(diǎn)功能部件的延遲時間:加減法2個周期,乘法10個周期,load/store2個周期,除法40個周期。而指令的流入和寫回為1個周期。a.給出第5個時鐘周期后保留站的內(nèi)容:算法模擬器模板——保留站內(nèi)容:算法模擬器個人——保留站內(nèi)容:分析:第5個時鐘周期流出了5條指令,其中l(wèi)oad指令2條,mult指令1條,sub指令1條,divd指令1條。其中mult和sub指令與ld產(chǎn)生相關(guān),相關(guān)寄存器編號為F2。M1與M2代表寄存器F6和F2數(shù)據(jù)已準(zhǔn)備好。2條load指令執(zhí)行完畢并且已經(jīng)寫回。b.給出在第10個周期后,保留站,寄存器狀態(tài)表的信息算法模擬器模板——保留站內(nèi)容:算法模擬器個人——保留站內(nèi)容:算法模擬器模板——寄存器狀態(tài)表信息:算法模擬器個人——寄存器狀態(tài)表信息:分析:第10個時鐘周期6條指令均已流出,且2條load指令執(zhí)行完畢并且寫回。sub指令也已執(zhí)行完畢并寫回,目前保留站中剩下add、mult、div3條指令。add指令正在執(zhí)行階段最后一個時鐘周期,沒有寫回。div指令等待mult指令的結(jié)果。乘法指令還有5個時鐘周期執(zhí)行完畢。2.實(shí)驗(yàn)設(shè)計(jì)思想(1).模塊劃分及類成員定義由所給條件可知,界面點(diǎn)擊執(zhí)行按鈕后,自動彈出4個界面,一個load緩存站,一個保留站,一個寄存器狀態(tài)信息表和一個指令狀態(tài)信息表。因此,為這四個模塊設(shè)計(jì)五個類:a.LoadStation定義成員:緩存站名稱Qi,當(dāng)前組件狀態(tài)Busy,地址計(jì)算Addr,立即數(shù)或計(jì)算結(jié)果value。b.ReservationStation定義成員:當(dāng)前保留站名稱Qi,指令操作的類型Op,當(dāng)前保留站工作狀態(tài)Busy,第一個源操作數(shù)Vj,第二個源操作數(shù)Vk,產(chǎn)生第一個源操作數(shù)的保留站名稱Qj,產(chǎn)生第二個源操作數(shù)的保留站名稱Qk。c.RegisterStation定義成員:以當(dāng)前寄存器為目的操作寄存器的保留站或緩存站名稱Qi,寄存器名稱state,寄存器中的值value。d.Instruction定義成員:當(dāng)前指令名稱name,目的操作寄存器opr1,源操作數(shù)一opr2,源操作數(shù)二opr3。e.InstructionStation定義成員:當(dāng)前指令所在保留站或緩存站名稱Qi,當(dāng)前指令所處的狀態(tài)state,指令執(zhí)行所需要的時間,關(guān)聯(lián)指令隊(duì)列中的指令instruction。以上5個類中,4個與Jpanel相關(guān),只有InstructionStation(指令狀態(tài))為控制類,包含控制成員state。并在公有方法init()中初始化類為對象,并賦初值。如下圖(圖中包含注釋說明):(2).算法設(shè)計(jì)算法設(shè)計(jì)的第一階段為流程劃分:根據(jù)指令流入的方式、執(zhí)行方式以及寫回方式,初期定義為三個階段,第一階段為發(fā)射階段,第二階段為執(zhí)行階段,第三階段為寫回階段。在細(xì)化設(shè)計(jì)的過程中,執(zhí)行階段被分為兩個過程,第一個過程為開始執(zhí)行指令,第二個過程為完成執(zhí)行指令。表現(xiàn)在面板中為兩次刷新,第一次刷新設(shè)置開始時間+“->”,第二次刷新加上完成時間。因此,算法過程被細(xì)化為四個流程a.發(fā)射b.執(zhí)行1c.執(zhí)行2d.寫回a.發(fā)射階段流程說明1)獲取當(dāng)前發(fā)射指令循環(huán)查詢指令隊(duì)列,取序號最小的指令。根據(jù)指令類型循環(huán)查詢保留站或緩存站,如有空閑為(Busy=no),發(fā)射指令。下圖為遍歷指令隊(duì)列,查詢適合發(fā)射的指令。空閑保留站查詢方法圖置于第2小點(diǎn)中。2)根據(jù)指令類型分類處理第一類為Load指令:上圖中第一步判斷是否有可用的空閑load緩存站,下圖說明判斷方法。若存在空閑位,則繼續(xù)執(zhí)行。賦值說明:設(shè)置Busy位為yes,將指令中第一個源操作數(shù)賦值給緩存站value位,load指令中表示立即數(shù),將保留站名稱賦值給指令狀態(tài)中的Qi,保存該指令的當(dāng)前物理位置。第二類為Float運(yùn)算指令:同樣的,先查詢是否存在空閑保留站。運(yùn)算部分發(fā)射階段代碼較多,不過大部分為不同位的設(shè)置,流程相同。賦值說明1:將使用的保留站Busy位置為yes,將該指令的名稱賦值給保留站對象Op成員,并在面板中顯示。循環(huán)查詢源操作數(shù)來源,如果有前序指令的目的寄存器值作為源操作數(shù),將其保留站值賦予Qj或Qk。以上方法通過查詢寄存器表實(shí)現(xiàn)。如下圖賦值說明2:如果寄存器表中對應(yīng)的值還沒有計(jì)算出對應(yīng)的結(jié)果,則獲取產(chǎn)生結(jié)果的保留站名稱。如果結(jié)果已計(jì)算出,則直接將結(jié)果值寫入Vj或者Vk。若無寄存器相關(guān),則直接將操作的寄存器名稱賦給Vj或者Vk。下圖為獲取發(fā)射指令的目的寄存器名稱,并在寄存器狀態(tài)表中更新。最后一步為修改指令狀態(tài)并顯示當(dāng)前發(fā)射周期。b.執(zhí)行1階段流程說明第一類指令load:賦值說明1:當(dāng)load緩存站中的名稱與指令對應(yīng)的名稱相匹配,開始執(zhí)行,對于load指令來說是計(jì)算訪存地址。并將改地址結(jié)果存在緩存站對應(yīng)的Addr。下圖為load指令執(zhí)行時間每時鐘遞減的判斷執(zhí)行函數(shù)。如執(zhí)行時間值依舊大于0,則顯示執(zhí)行過程提示:開始時間+“->”。如執(zhí)行時間等于0,則進(jìn)入指令完成狀態(tài)。并獲取當(dāng)前時鐘周期。第二類指令float運(yùn)算:賦值說明1:float運(yùn)算進(jìn)行的條件是兩個源操作數(shù)Vi和Vk都有值,執(zhí)行時只需將剩余執(zhí)行時間顯示在time欄用于顯示遞減過程即可。下圖為執(zhí)行時間遞減,與load相似,不做分析。c.執(zhí)行2階段流程說明第一類指令load:將計(jì)算結(jié)果賦值給load緩存站中的value值。執(zhí)行時間減一,如執(zhí)行時間為0,則將當(dāng)前時鐘周期值顯示并且設(shè)置狀態(tài)為3。如下圖。第二類指令float運(yùn)算:將當(dāng)前剩余執(zhí)行時間值顯示在面板中。下圖為時間值為0時的time的清零操作。d.寫回階段流程說明第一類指令load:寫回階段刷新load站,重新將Busy設(shè)置為no,其他值置空。第二類指令float運(yùn)算:刷新保留站,Busy設(shè)置為no,其他值置空。下圖為寫回完畢后執(zhí)行的更新寄存器和修改保留站中目的寄存器的操作。賦值說明:對于寄存器,將計(jì)算結(jié)果值置為M+m。對于保留站,將Vj或者Vk賦予寄存器表中的值,而Qj或者Qk置為空值。3.實(shí)驗(yàn)結(jié)果分析選取兩條指令以特定的時鐘周期分析MUL.D F0,F2,F4SUB.D F8,F6,F2(1)選取第4個時鐘周

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論