計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì).doc_第1頁(yè)
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì).doc_第2頁(yè)
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì).doc_第3頁(yè)
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì).doc_第4頁(yè)
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

河北大學(xué)工商學(xué)院計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì) 學(xué) 部 信息科學(xué)與工程學(xué)部 學(xué)科門類 工學(xué) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) 5008網(wǎng)絡(luò)1班 學(xué) 號(hào) 2008482118 姓 名 康業(yè)凱 2011年 6月11日河北大學(xué)工商學(xué)院計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì)目 錄第1章 引言1第2章 WinDLX指令集22.1 WinDLX指令集簡(jiǎn)介22.2 WinDLX指令集結(jié)構(gòu)2第3章 WinDLX模擬器63.1 WinDLX模擬器的安裝63.2 WinDLX模擬器的配置63.3 WinDLX運(yùn)行及模擬結(jié)果分析7第4章 WinDLX模擬器的流水線模擬與分析124.1 控制相關(guān)124.2 數(shù)據(jù)相關(guān)164.3 指令調(diào)度21總結(jié)26參考文獻(xiàn)27第1章 引言引言介紹指令集結(jié)構(gòu)發(fā)展概述(1)最早的指令集,來自于IBM650,累加器型指令集結(jié)構(gòu)。在硬件資源十分有限的條件下,累加器型指令集結(jié)構(gòu)是必然的選擇。(2)1963年,出現(xiàn)了堆棧技術(shù),堆棧最上面的兩個(gè)元素被保存在CPU中作為運(yùn)算器的輸入,其它部分則保存在內(nèi)存中。(3)1964年,出現(xiàn)基于寄存器的指令集結(jié)構(gòu)。1964年,IBM資深專家首次提出計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的概念,包括:數(shù)據(jù)表示,指令集系統(tǒng),中斷系統(tǒng),存儲(chǔ)系統(tǒng),I/O結(jié)構(gòu)等。其中,指令結(jié)構(gòu)是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的核心問題。(4)20世紀(jì)70年代,軟件價(jià)格增長(zhǎng)大于硬件價(jià)格的增長(zhǎng),編譯器和操作系統(tǒng)越來越大,許多研究人員希望通過引入強(qiáng)有力的,基于軟件的系統(tǒng)結(jié)構(gòu)來緩解軟件危機(jī),CISC的典范VAX出現(xiàn)。(5)20世紀(jì)80年代,為提高CPU執(zhí)行指令速度,RISC應(yīng)運(yùn)而生。1995年左右,設(shè)計(jì)師使用高性能通用處理機(jī)和科學(xué)應(yīng)用處理機(jī)的技術(shù)來設(shè)計(jì)DSP新的指令集結(jié)構(gòu)。注:DSP為數(shù)字信號(hào)處理。(6)20世紀(jì)90年代,更多的設(shè)計(jì)人員轉(zhuǎn)向了SOC(system-on-chip)。(7)補(bǔ)充:三種類型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn)表1-1 三種類型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn)指令集結(jié)構(gòu)類型優(yōu)點(diǎn)缺點(diǎn)堆棧型是一種表示計(jì)算的簡(jiǎn)單模型;指令短小不能隨機(jī)訪問堆棧,從而很難生成有效代碼。同時(shí),由于堆棧是瓶頸,所以很難被高效的實(shí)現(xiàn)累加器型減小了計(jì)算機(jī)的內(nèi)部狀態(tài);指令短小由于累加器是唯一的寄存器,這種機(jī)器的存儲(chǔ)器通信開銷最大寄存器型易于生成高效的目標(biāo)代碼所有操作數(shù)均需命名,且要顯式表示,因而指令比較長(zhǎng)第 28 頁(yè) 共 27 頁(yè)第2章 WinDLX指令集2.1 WinDLX指令集簡(jiǎn)介美國(guó)斯坦福大學(xué)計(jì)算機(jī)系Hennessy 教授和加州伯克利分校計(jì)算機(jī)系Paterson教授是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)領(lǐng)域非常受人尊敬的學(xué)者和開拓者。他們合著的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)-量化研究方法一書,是他們對(duì)計(jì)算機(jī)組織、系統(tǒng)結(jié)構(gòu)研究和實(shí)踐的全面而系統(tǒng)的總結(jié)。DLX 處理器 (發(fā)音為 DeLuXe)為這本書中流水線處理器的例子。WINDLX是一個(gè)基于Windows的DLX模擬器。2.2 WinDLX指令集結(jié)構(gòu)2.2.1 WinDLX的寄存器(1)32個(gè)32位通用寄存器(GPR),名稱為R0,R1,R2R31,寄存器R0的內(nèi)容恒為全零。(2)32個(gè)32位浮點(diǎn)寄存器(FPR),既可用作單精度浮點(diǎn)寄存器,也可以奇偶配對(duì)來存儲(chǔ)雙精度浮點(diǎn)數(shù)。2.2.2 WinDLX的數(shù)據(jù)表示DLX能處理的數(shù)據(jù)類型有8位字節(jié),16位半字、32位整數(shù)字以及32位單精度浮點(diǎn)數(shù)和64位雙精度浮點(diǎn)數(shù)。DLX的操作主要面向32位整數(shù)以及32位或64位浮點(diǎn)數(shù)。字節(jié)或半字節(jié)在被調(diào)入32位寄存器時(shí),用零或者符號(hào)位填充32位寄存器的高位剩余部分,一旦被調(diào)入寄存器,它們將按照32位整數(shù)的方式進(jìn)行計(jì)算。2.2.3 WinDLX的尋址方式利用R0寄存器永遠(yuǎn)為零的特性,DLX用很少的硬件代價(jià),提供了5種尋址方式: (1)寄存器尋址方式; (2)立即數(shù)尋址方式(立即數(shù)范圍為16位);(3)位移尋址方式(某寄存器的值加上位移量形成操作數(shù)地址);(4)寄存器間接尋址方式(位移尋址方式中位移量等于零);(5)直接尋址方式(位移尋址方式中寄存器用R0)。2.2.4 WinDLX指令格式為使機(jī)器更容易進(jìn)行流水線操作和譯碼,DLX采用定長(zhǎng)操作碼的指令字格式。指令字長(zhǎng)度32位(單字長(zhǎng)指令),其中操作碼占6位。具體指令格式如下圖: 6 5 5 16操作碼源寄存器目的寄存器立即數(shù) 圖2-1 I型指令格式 6 5 5 5 11操作碼源寄存器1源寄存器2目的寄存器功能碼 圖2-2 R型指令格式 6 26操作碼與PC相加的偏移量 圖2-3 J型指令格式I型指令格式主要用來對(duì)各種類型數(shù)的存取操作指令編碼,即各種Load指令和Store指令,I型指令格式還用來為分支指令編碼,包括條件分支指令,寄存器跳轉(zhuǎn)指令和寄存器跳轉(zhuǎn)并連接指令。R型指令格式主要用來為各種算數(shù)/邏輯運(yùn)算指令編碼。R型指令還為讀寫特殊寄存器指令和寄存器之間的傳送指令編碼。J型指令格式主要用來為跳轉(zhuǎn)并連接指令(注意不是寄存器跳轉(zhuǎn)并連接指令)和陷阱與異常返回指令編碼。2.2.5 WinDLX指令集DLX指令大致可以分為4大類:加載/存儲(chǔ)、ALU操作、分支與跳轉(zhuǎn)和浮點(diǎn)數(shù)操作。1) Load和Store操作:可以對(duì)DLX的所有通用寄存器和浮點(diǎn)寄存器進(jìn)行Load(載入)和Store(儲(chǔ)存)操作,但是對(duì)通用寄存器R0的Load操作沒有任何效果。表2-1 DLX的加載和存儲(chǔ)指令指令實(shí)例指令名稱含 義LW R1 , 30 (R2)載入整型字RegsR1 32 Mem30+RegsR2LW R1 , 1000 (R0)載入整型字RegsR1 32 Mem1000+0LB R1 , 40 (R3)載入字節(jié)RegsR1 32 (Mem40+RegsR30)24 # Mem40+RegsR3LBU R1 , 40 (R3)載入無(wú)符號(hào)字節(jié)RegsR1 32 024 # Mem40+RegsR3LH R1 , 40 (R3)載入整型半字RegsR1 32 (Mem40+RegsR30)16 # Mem40+RegsR3# Mem41+RegsR3LF F0 , 50 (R3)載入單精度浮點(diǎn)RegsF0 32 Mem50+RegsR3LD F0 , 50 (R2)載入雙精度浮點(diǎn)RegsF0 # RegsF1 64 Mem50+RegsR2SW 500 (R4) , R3儲(chǔ)存整型字Mem500+RegsR4 32 RegsR3SF 40 (R3) , F0儲(chǔ)存單精度浮點(diǎn)Mem40+RegsR3 32 RegsF0SD 40 (R3) , F0儲(chǔ)存雙精度浮點(diǎn)Mem40+RegsR3 32 RegsF0Mem44+RegsR3 32 RegsF1SH 502 (R2), R31儲(chǔ)存整型半字Mem502+RegsR2 16 RegsR3116.31SB 41 (R3) , R2儲(chǔ)存整型字節(jié)Mem41+RegsR3 8 RegsR224.312)ALU操作:在DLX中,所有的ALU指令都是寄存器寄存器型指令,其運(yùn)算包含了簡(jiǎn)單的算術(shù)和邏輯運(yùn)算,如加、減、AND、OR、XOR和移位?!霸O(shè)置相等”、“設(shè)置不等”、“設(shè)置小于”:寄存器比較指令(=,),如果比較結(jié)果為真,這些指令就在目標(biāo)寄存器中填入1(表示真),否則填入0(表示假)。表2-2 DLX中算術(shù)/邏輯運(yùn)算指令,帶立即數(shù)或不帶立即數(shù)指令實(shí)例指令名稱含 義Add R1,R2,R3加RegsR1 RegsR2 + RegsR3ADDI R1,R2,#3和立即值相加RegsR1 RegsR2 + 3LHI R1,#42載入高位立即值RegsR1 42 # 016SLLI R1,R2,#5邏輯左移立即值形式RegsR1 RegsR2 5SLT R1,R2,R3設(shè)置小于if (RegsR2 1: 后鼠標(biāo)閃爍,鍵入20 然后按 Enter,模擬繼續(xù)運(yùn)行到斷點(diǎn) # 2 處。 在Clock cycle diagram 窗口中,在指令之間出現(xiàn)了紅和綠的箭頭。紅色箭頭表示需要一個(gè)暫停,箭頭指向處顯示了暫停的原因。R-Stall(R-暫停)表示引起暫停的原因是RAW。綠色箭頭表示定向技術(shù)的使用?,F(xiàn)在我們來看一下寄存器中的內(nèi)容。為此,雙擊主窗口中的Register 圖標(biāo)。Register 窗口會(huì)顯示各個(gè)寄存器中的內(nèi)容??匆幌翿1到 R5的值。按F5使模擬繼續(xù)運(yùn)行到下一個(gè)斷點(diǎn)處,有些值將發(fā)生改變,指令lw從主存中取數(shù)到寄存器中。如果你希望不設(shè)置斷點(diǎn),而使模擬繼續(xù)進(jìn)行。辦法是:點(diǎn)擊Execute / Multiple Cycles 或者按 F8鍵,在新出現(xiàn)的窗口中輸入17 ,然后按 Enter鍵,模擬程序?qū)⒗^續(xù)運(yùn)行17 個(gè)時(shí)鐘周期。向上滾動(dòng)Clock cycle diagram 窗口,直到看到指令周期72到78。在EX段,兩個(gè)浮點(diǎn)操作(multd and subd)分別在不同的部件上運(yùn)行,它們都需要多個(gè)周期才能結(jié)束。因而在它們之后的下一條指令能取指,譯碼和執(zhí)行,然后暫停一個(gè)周期以允許subd完成MEM段。(8) Statistics 窗口最后我們來看一下Statistics 窗口。按F5使程序完成執(zhí)行,出現(xiàn)消息Trap #0 occurred 表明最后一條指令 trap 0 已經(jīng)執(zhí)行, Trap指令中編號(hào)“0”沒有定義,只是用來終止程序。雙擊圖標(biāo)Statistics。Statistics 窗口提供各個(gè)方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、 Load/Store指令、浮點(diǎn)指令和traps。窗口中給出事件發(fā)生的次數(shù)和百分比,如RAW stalls:17(7.91 % of all Cycles)。在靜態(tài)窗口中我們可以比較一下不同配置對(duì)模擬的影響。現(xiàn)在我們看一看定向的作用。在前面的模擬過程中,我們采用了定向。如果不采用定向,執(zhí)行時(shí)間將會(huì)怎樣呢?我們先看一下Statistics 窗口中的各種統(tǒng)計(jì)數(shù)字:總的周期數(shù)(215) 和暫停數(shù) (17 RAW, 25 Control, 12 Trap; 54 Total) ,然后關(guān)閉窗口。點(diǎn)擊 Configuration中的Enable Forwarding使定向無(wú)效(去掉小鉤),打開斷點(diǎn)Breakpoints 圖標(biāo)并點(diǎn)擊Breakpoints 菜單,刪除所有斷點(diǎn),然后按F5,鍵入20后,按Enter ,模擬程序一直運(yùn)行到結(jié)束。重新查看靜態(tài)窗口,你會(huì)看到控制暫停和 Trap 暫停仍然是同樣的值,而RAW暫停從17變成了53,總的模擬周期數(shù)增加到236。利用這些值,你能夠計(jì)算定向技術(shù)帶來的加速比:236 / 215 = 1.098DLXforwarded比 DLXnot forwarded 快9.8%。第4章 基于WinDLX模擬器的流水線模擬與分析4.1 控制相關(guān)4.1.1 實(shí)驗(yàn)?zāi)康耐ㄟ^本實(shí)驗(yàn),加深對(duì)控制相關(guān)的理解,了解控制相關(guān)對(duì)CPU性能的影響。4.1.2 實(shí)驗(yàn)內(nèi)容1. 用WinDLX模擬器運(yùn)行程序structure_d.s 。2. 通過模擬,找出存在控制相關(guān)的指令對(duì)以及導(dǎo)致控制相關(guān)的部件。3. 由控制相關(guān)引起的暫停時(shí)鐘周期數(shù),計(jì)算暫停時(shí)鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。4論述控制相關(guān)對(duì)CPU性能的影響,討論解決控制相關(guān)的方法。5在以上實(shí)驗(yàn)結(jié)果的基礎(chǔ)上,討論在流水線CPU設(shè)計(jì)當(dāng)中,降低控制相關(guān)開銷的方法,并給出具體的設(shè)計(jì)方案,用指令序列舉例說明。4.1.3 實(shí)驗(yàn)原理1.控制相關(guān)是指因?yàn)槌绦虻膱?zhí)行方向可能被改變而引起的相關(guān)。可能改變程序執(zhí)行方向的指令通常有無(wú)條件轉(zhuǎn)移、一般條件轉(zhuǎn)移、復(fù)合條件轉(zhuǎn)移、子程序調(diào)用、中斷等。(1)無(wú)條件轉(zhuǎn)移指令一般能夠在指令分析器中就執(zhí)行完成,一般對(duì)指令執(zhí)行部件的工作不會(huì)造成影響。(2)條件轉(zhuǎn)移1一般條件轉(zhuǎn)移指令,相關(guān)最嚴(yán)重的情況發(fā)生在條件碼是上一條指令產(chǎn)生的。優(yōu)點(diǎn):轉(zhuǎn)移不成功對(duì)先行控制器的影響不大,缺點(diǎn):轉(zhuǎn)移成功時(shí),不僅指令執(zhí)行過程變成了完全串行,而且要作廢已經(jīng)取到先行指令緩沖棧中的大量指令,增加了處理機(jī)與主存之間的通信量。2復(fù)合條件轉(zhuǎn)移指令,如果轉(zhuǎn)移不成功,則就象一條普通的運(yùn)算型指令一樣。如果轉(zhuǎn)移成功,不僅要全部或部分作廢先行指令緩沖棧中已經(jīng)預(yù)取的指令,還可能要作廢先行操作棧中的指令和先行讀數(shù)棧中的操作數(shù),作廢當(dāng)前在指令分析器中分析的指令。2. WinDLX模擬器運(yùn)行程序后,打開Statistics 窗口可看到各個(gè)方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、 Load/Store指令、浮點(diǎn)指令和traps。 3. 查看Statistics 窗口信息, 找出存在控制相關(guān)的指令對(duì)以及導(dǎo)致控制相關(guān)的部件,計(jì)算暫停時(shí)鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。4.1.4 控制相關(guān)下WinDLX配置Statistics 窗口:提供各個(gè)方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、 Load/Store指令、浮點(diǎn)指令和traps。窗口中給出事件發(fā)生的次數(shù)和百分比。點(diǎn)擊 Configuration / Floating Point Stages選擇標(biāo)準(zhǔn)配置。 點(diǎn)擊 Configuration / Memory Size 設(shè)置模擬處理器的存儲(chǔ)器大小(應(yīng)設(shè)置為0x8000)。 在Configuration 菜單中的Symbolic addresses, Absolute Cycle Count 和 Enable Forwarding也可設(shè)置, 點(diǎn)擊相應(yīng)菜單項(xiàng)后, 它的旁邊將顯示一個(gè)小鉤。4.1.5 實(shí)驗(yàn)過程1. 運(yùn)行程序structure_d.s. 為了初始化模擬器, 點(diǎn)擊File 菜單中的 Reset all 菜單項(xiàng),彈出一個(gè)“Reset DLX”對(duì)話框。然后點(diǎn)擊窗口中的“確認(rèn)”按鈕;點(diǎn)擊 structure_d.s點(diǎn)擊 select 按鈕點(diǎn)擊 load按鈕 點(diǎn)擊主窗口中的 Execution開始運(yùn)行2. 在主窗口中點(diǎn)擊“Statistics”圖標(biāo),出現(xiàn)一個(gè)子窗口。此窗口提供各個(gè)方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、 Load/Store指令、浮點(diǎn)指令和traps.3.查看Statistics 窗口中的各種統(tǒng)計(jì)數(shù)字,記錄由控制相關(guān)引起的暫停時(shí)鐘周期數(shù),計(jì)算暫停時(shí)鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。4.1.6 結(jié)果分析1.裝載完測(cè)試程序:雙擊Pipeline子窗口,此時(shí),所有方框均為交叉線,表明流水線沒有執(zhí)行程序在程序執(zhí)行過程中。雙擊Register子窗口, PC寄存器值為0x00000100,也就是說程序會(huì)從內(nèi)存0x00000100處開始執(zhí)行。 2.運(yùn)行過程中圖4-1 Register運(yùn)行中子窗口PC變?yōu)?x00000114,這是流水線下一步要裝入的指令的地址,但根據(jù)程序,下一條指令應(yīng)該執(zhí)行地址0x00000138所指的指令。“BNEZ R5, loop”為存在控制相關(guān)的指令,由于“BNEZ R5, loop”指令被譯碼,流水線知道其指令滿足條件轉(zhuǎn)移,說明剛才順序取進(jìn)來的指令為誤取,下一周期將“TRAP 0x0”指令封殺,不對(duì)其譯碼,直接跳轉(zhuǎn)到LD F0, 0x0(R2)。3.運(yùn)行結(jié)束 圖4-2 Statistics子窗口 運(yùn)行總周期數(shù)為139,ID執(zhí)行指令數(shù)為86;intEX的延遲為1,faddEX、fmulEX;總暫停數(shù)為42個(gè),其中30個(gè)RAW暫停,9個(gè)Control暫停,3個(gè)Trap暫停,總暫停時(shí)鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比為30.22%,控制相關(guān)暫停周期數(shù)占總執(zhí)行周期的百分比為6.47%;共十個(gè)條件分支,其中9個(gè)轉(zhuǎn)移成功,造成9次控制相關(guān),一個(gè)轉(zhuǎn)移不成功。4.2 數(shù)據(jù)相關(guān)4.2.1 實(shí)驗(yàn)?zāi)康耐ㄟ^本實(shí)驗(yàn),加深對(duì)數(shù)據(jù)相關(guān)的理解,掌握如何使用定向技術(shù)來減少數(shù)據(jù)相關(guān)帶來的暫停。4.2.2 實(shí)驗(yàn)內(nèi)容1在不采用定向技術(shù)的情況下(通過Configuration菜單中的Enable Forwarding選項(xiàng)設(shè)置),用WinDLX模擬器運(yùn)行程序data_d.s 。2. 記錄數(shù)據(jù)相關(guān)引起的暫停時(shí)鐘周期數(shù)以及程序執(zhí)行的總時(shí)鐘周期數(shù),計(jì)算暫停時(shí)鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。3. 采用定向技術(shù)的情況下,用WinDLX模擬器再次運(yùn)行程序data_d.s。4.2.3 實(shí)驗(yàn)原理1三種數(shù)據(jù)相關(guān):“先讀后寫”、“先寫后讀”和“寫-寫”相關(guān)。2在流水線中建立專用數(shù)據(jù)路徑來避免數(shù)據(jù)相關(guān)的基本原理是數(shù)據(jù)重定向。4.2.4 數(shù)據(jù)相關(guān)下WinDLX配置1Statistics 窗口:將待運(yùn)行程序裝入主存后按F5使程序完成執(zhí)行,出現(xiàn)消息Trap #0 occurred 表明最后一條指令 trap 0 已經(jīng)執(zhí)行, Trap指令中編號(hào)“0”沒有定義,只是用來終止程序。雙擊圖標(biāo)Statistics。Statistics 窗口提供各個(gè)方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、 Load/Store指令、浮點(diǎn)指令和traps。窗口中給出事件發(fā)生的次數(shù)和百分比。2Code窗口:雙擊圖標(biāo)Code,你將看到代表存儲(chǔ)器內(nèi)容的三欄信息,從左到右依次為:地址 (符號(hào)或數(shù)字)、命令的十六進(jìn)制機(jī)器代碼和匯編命令。點(diǎn)擊主窗口中的 Execution開始模擬。在出現(xiàn)的下拉式菜單中,點(diǎn)擊Single Cycle或按 F7鍵,模擬就向前執(zhí)行一步。3Breakpoint 窗口:當(dāng)通過Code 窗口觀察代碼時(shí) (如果未打開,雙擊圖標(biāo) Code),你會(huì)看到接下來的幾條指令幾近一樣,它們都是sw-操作:將寄存器中的數(shù)寫入存儲(chǔ)器中。重復(fù)按F7 將很枯燥,因此,我們使用斷點(diǎn)加快此過程。現(xiàn)在,請(qǐng)指向Code 窗口中包含命令trap 0x5的0x0000015c行,此命令是寫屏幕的系統(tǒng)調(diào)用。單擊命令行,然后點(diǎn)擊主窗口菜單Code,單擊Set Breakpoint (確保命令行仍被標(biāo)記!),將彈出一個(gè)新的Set Breakpoint 窗口。通過此窗口,你可以選擇命令運(yùn)行到流水線的哪一階段時(shí),程序停止執(zhí)行。缺省為ID段。點(diǎn)擊OK 關(guān)閉窗口。圖4-3 設(shè)置斷點(diǎn)子窗口在Code 窗口中, trap 0x5行上出現(xiàn) 了BID ,它表示當(dāng)本指令在譯碼段時(shí),程序中止執(zhí)行。如果想查看已定義的斷點(diǎn),你只要單擊圖標(biāo)Reakpoints,將彈出一個(gè)小窗口,其中顯示了所有斷點(diǎn)。重新使窗口圖標(biāo)化。現(xiàn)在你只要點(diǎn)擊Execution / Run 或按F5,模擬就繼續(xù)運(yùn)行。會(huì)出現(xiàn)一個(gè)對(duì)話框提示你ID-Stage: reached at Breakpoint #1,按“確認(rèn)”按鈕關(guān)閉。點(diǎn)擊Clock cycle diagram窗口中的trap 0x5行,你將看到模擬正處于時(shí)鐘周期14。trap 0x5行如下所示:圖4-4 trap 0x5行原因是:無(wú)論何時(shí)遇到一條trap指令時(shí),DLX 處理器中的流水線將被清空。在Information 窗口(雙擊trap行彈出)中,在IF段顯示消息3 stall(s) because of Trap-Pipeline-Clearing!。 (不要忘了按OK關(guān)閉窗口)。指令trap 0x5 已經(jīng)寫到屏幕上,你可以通過點(diǎn)擊主窗口菜單條上的Execute / Display DLX-I/O來查看。4.2.5 實(shí)驗(yàn)過程1.使用定向技術(shù):1)程序fact.s ,input.s ,data_d.s裝入主存運(yùn)行初始化模擬器, 點(diǎn)擊File 菜單中的 Reset all 菜單項(xiàng),彈出一個(gè)“Reset DLX”對(duì)話框。然后點(diǎn)擊窗口中的“確認(rèn)”按鈕;點(diǎn)擊 fact.s 點(diǎn)擊 select點(diǎn)擊 input.s點(diǎn)擊 select點(diǎn)擊 data_d.s點(diǎn)擊 select 點(diǎn)擊 load 2)設(shè)置斷點(diǎn)按F7鍵以單步方式運(yùn)行程序,指向Code窗口中包含指令trap 0x5的0x0000015c行,點(diǎn)擊主窗口菜單Code,單擊Set Breakpoint (確保指令行仍被標(biāo)記),將彈出一個(gè)“Set Breakpoint”窗口,點(diǎn)擊OK。3)按F5鍵,程序就會(huì)連續(xù)向前運(yùn)行,直到碰到我們?cè)O(shè)置的斷點(diǎn)后停下來,此時(shí)會(huì)出現(xiàn)一個(gè)提示對(duì)話框“ID-Stage: reached at Breakpoint #1”,按OK按鈕關(guān)閉。按F5鍵繼續(xù)運(yùn)行,屏幕上會(huì)出現(xiàn)DLX-Standard I/O對(duì)話框,輸入20后按回車鍵,程序會(huì)繼續(xù)模擬運(yùn)行,直至出現(xiàn)提示框“Trap #0 occurred”表明最后一條指令trap 0已經(jīng)執(zhí)行。4)記錄下Statistics 窗口中的各種統(tǒng)計(jì)數(shù)字:總的周期數(shù)和暫停數(shù)( RAW,Control,Trap,Total),然后關(guān)閉窗口。2.使用不定向技術(shù):點(diǎn)擊 Configuration中的Enable Forwarding使定向無(wú)效(去掉小鉤),打開斷點(diǎn)Breakpoints 圖標(biāo),點(diǎn)擊Breakpoints 菜單,點(diǎn)擊Delete All刪除所有斷點(diǎn),然后按F5,鍵入20后,按Enter ,程序一直運(yùn)行到結(jié)束。再次打開Statistics 窗口,記下新的統(tǒng)計(jì)數(shù)字。計(jì)算暫停時(shí)鐘周期數(shù)占總執(zhí)行周期數(shù)的百分比。計(jì)算采用定向技術(shù)后性能提高的倍數(shù)。4.2.6 結(jié)果分析圖4-5 采用不定向技術(shù)圖4-6 采用定向技術(shù)1)采用定向技術(shù):總的周期數(shù)128和暫停數(shù)(30 RAW,9Control,3Trap,42Total)總暫停數(shù)占總周期數(shù)的32.81%讀后寫暫停周期數(shù)占總周期數(shù)的23.44%寫后寫暫停周期數(shù)為0 2)不采用定向技術(shù) 總的周期數(shù)202,暫停數(shù)(104 RAW,9Control,3Trap,116Total) 總暫停占總時(shí)鐘周期數(shù)百分比為57.42%, 讀后寫暫停周期數(shù)占總周期數(shù)的51.48% 寫后寫暫停周期數(shù)為0 3.比較采用定向技術(shù)與采用不定向技術(shù)所得數(shù)據(jù):表4-1 數(shù)據(jù)統(tǒng)計(jì)總的時(shí)鐘周期Control暫停Trap暫停RAW暫停總暫停采用定向技術(shù)128933042不采用定向技術(shù)20293104116 定向技術(shù)帶來的加速比:202 / 128 = 1.578,即定向比不定向快57.8%4.3 指令調(diào)度4.3.1 實(shí)驗(yàn)?zāi)康耐ㄟ^本實(shí)驗(yàn),加深對(duì)指令調(diào)度的理解,了解指令調(diào)度技術(shù)對(duì)CPU性能改進(jìn)的好處。4.3.2 實(shí)驗(yàn)內(nèi)容1. 通過Configuration菜單中的“Floating point stages”選項(xiàng),把除法單元數(shù)設(shè)置為3,把加法乘法除法的延遲設(shè)置為3個(gè)時(shí)鐘周期。2. 用WinDLX模擬器運(yùn)行調(diào)度前的程序sch-before.s 。記錄程序執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時(shí)鐘周期數(shù)。3. 用WinDLX模擬器運(yùn)行調(diào)度后的程序sch-after.s ,記錄程序執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時(shí)鐘周期數(shù)。4. 根據(jù)記錄結(jié)果,比較調(diào)度前和調(diào)度后的性能。4.3.3 實(shí)驗(yàn)原理在非線形流水線中,由于存在有反饋回路,當(dāng)一個(gè)任務(wù)在流水線中流過時(shí),在同一個(gè)功能段中可能要經(jīng)過多次。因此不能每一個(gè)時(shí)鐘周期向流水線輸入一個(gè)新任務(wù),否則會(huì)發(fā)生在同一個(gè)時(shí)刻有幾個(gè)任務(wù)爭(zhēng)用同一個(gè)功能段的情況。這種情況稱為功能部件沖突,或流水線沖突。為了避免沖突,一般采用延遲輸入新任務(wù)的方法。應(yīng)該間隔多少時(shí)鐘周期向流水線輸入一個(gè)新任務(wù)就是非線性流水線的調(diào)度問題。非線性流水線調(diào)度的就是找出一個(gè)最小的循環(huán)周期,按照這周期向流水線輸入新任務(wù),流水線的各個(gè)功能段都不會(huì)發(fā)生沖突,而且流水線的吞吐率和效率最高。4.3.4 WinDLX配置點(diǎn)擊 Configuration / Floating Point Stages(點(diǎn)擊Configuration打開菜單,然后點(diǎn)擊Floating Point Stages菜單項(xiàng)),選擇如下標(biāo)準(zhǔn)配置:表4-2 DLX流水線結(jié)構(gòu)設(shè)置CountDelayAddition Units:12Multiplication Units:15Division Units:119在本實(shí)驗(yàn)中,將標(biāo)準(zhǔn)配置更改為以下配置:表4-3 DLX流水線結(jié)構(gòu)設(shè)置CountDelayAddition Units:13Multiplication Units:13Division Units:334.3.5 實(shí)驗(yàn)過程1.在主窗口中點(diǎn)擊Configuration打開菜單,然后點(diǎn)擊Floating Point Stages菜單項(xiàng),把除法單元數(shù)設(shè)置為3,把加法、乘法、除法的延遲設(shè)置為3個(gè)時(shí)鐘周期。2.將程序sch-before.s裝入主存后運(yùn)行。記錄程序運(yùn)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時(shí)鐘周期數(shù)。3.將程序sch-afte

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論