計算機系統(tǒng)結(jié)構(gòu)實驗指導(dǎo)書_第1頁
計算機系統(tǒng)結(jié)構(gòu)實驗指導(dǎo)書_第2頁
計算機系統(tǒng)結(jié)構(gòu)實驗指導(dǎo)書_第3頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北京郵電大學計 算 機 學 院計算機系統(tǒng)結(jié)構(gòu) 實 驗 指 導(dǎo) 書王春露 鄺堅 編著2007 年 3 月個人收集整理 勿做商業(yè)用途目錄計算機系統(tǒng)結(jié)構(gòu)實驗簡介DLX 處理器簡介1.實驗一WINDLX 模擬器安裝及使用12.實驗二指令流水線相關(guān)性分析3.實驗三DLX 處理器程序設(shè)計4。實驗四代碼優(yōu)化5.實驗五循環(huán)展開 (選作 )計算機系統(tǒng)結(jié)構(gòu)實驗簡介DLX是一個虛擬處理器.該處理器是加州大學伯克利分校計算機系JohnL .H ennessy教授和斯坦福大學計算機系David A。 Patterson 教授在其計算機體系結(jié)構(gòu) : 一種定量的方法一書中提出的 . 該處理器反映了新一代處理器的特 點。通過

2、了解DLX處理器的結(jié)構(gòu)和工作原理,并利用DLX莫擬器進行實驗,可以幫助學生綜合地了解和運用有關(guān)處理器指令系統(tǒng)的設(shè)計、流水線的設(shè)計與實現(xiàn)等方面的知識,有助于計算機系統(tǒng)結(jié)構(gòu)課程內(nèi)容的理解。DLX處理器簡介第一節(jié) DL)基本結(jié)構(gòu)DLX是 一種典型的Load/Store 型指令集結(jié)構(gòu)。它不僅體現(xiàn)了當今多種機器的指令集結(jié)構(gòu)的共同特點,而且它還體現(xiàn)岀未來一些機器的指令集結(jié)構(gòu)的特點。這些機器的指令集結(jié)構(gòu)設(shè)計思想都和DLX旨令集結(jié)構(gòu)的設(shè)計思想十分相似,它們都強調(diào):(1)具有一套簡單的 Load/Store 指令集;( 2)注重指令流水效率;( 3)簡化指令的譯碼 ;( 4)高效支持編譯器。DLX是 一種易于學

3、習和研究的處理器結(jié)構(gòu)模型。這種類型的機器正在日趨流行,而且其結(jié)構(gòu)非常易于理解。1 . DLX中的寄存器DLX 中有32個通用寄存器(GPRS ,分別將其命名為 R0,R1R31。每個通用寄存器長度為32位。另外,DLX中有32個浮點寄存器(FPRs),分別將其命名為 FO, F1F31。每個浮點寄存器長度為 32位。這些浮點 寄存器可以用來保存 32 位的單精度浮點數(shù),或者通過相鄰兩個浮點寄存器奇偶對FiFi+1 ( i=0,2,4 , 30)來保存雙精度浮點數(shù),這種組合而成的 64位雙精度浮點寄存器在 DLX中分別被命名為 F0,F2F28 , F30.2. DLX 數(shù)據(jù)類型DLX提供了多種

4、長度的整型數(shù)據(jù)和浮點數(shù)據(jù).對整型數(shù)據(jù)而言,有8位,16位,32位多種長度;對浮點而言,有32位單精度浮點數(shù)和 64位雙精度浮點數(shù).浮點數(shù)據(jù)表示采用的是IEEE754標準。DLX操作都是對32位整型數(shù)據(jù)及 32或 64 位浮點數(shù)據(jù)進行的 .3 . DLX的尋址方式和數(shù)據(jù)傳送DLX 提供了寄存器尋址 , 立即尋址,偏移尋址和寄存器間接尋址四種尋址方式。寄存器尋址字段的大小為5 位,用來標識 32 個通用寄存器或浮點寄存器 .4。 DLX 的指令格式因為DLX只有四種尋址方式,所以將其尋址方式編碼在操作碼中。為了簡化指令譯碼,并充分發(fā)揮流水線的效率,所有DLX指令的字長均是 32位,其中用6位表示操

5、作碼。DLX中各種類型指令的格式如圖1所示:I類型指令操作碼OFrslrd立即值字節(jié)、半字*宇的載A和儲存rd l rsl OP立即慎&,一 5 M _聯(lián)型指令操作碼OF "1 "2 rd氏uk |奇存器奇存器此喺作】rdTsl Func rs2 函數(shù)對數(shù)據(jù)的凜作進行編碼:加、減 對特殊寄存器的讀/寫和移動J類型指令操作碼DP與FC相啲漏移量跳轉(zhuǎn),跳轉(zhuǎn)并錐接.從異常處自陷和逋叵.5 . DLX中的操作DLX指令中的操作可以分為四種類型,即:Load和Store操作、ALU操作、分支和跳轉(zhuǎn)操作、浮點操作。(1) Load 和 Store 操作可以對DLX的所有通用寄存

6、器和浮點寄存器進行Load (載入)和Store (儲存)操作,但是通用寄存器R0的Load操作沒有任何效果。ALU 操作在DLX中,所有的ALU指令都是寄存器寄存器型指令,其運算包含了簡單的算術(shù)和邏輯運算,如加、減、ANDOR XOR和移位.另外,DLX還允許所有這些指令對立即值進行操作 ,立即值以16位符號擴展形式岀現(xiàn)。 LHI ( Load高位 立即值)操作將立即值載入到一個寄存器的高半部分,而該寄存器的低半部分則設(shè)置為0.這樣就可以通過兩條 Load指令構(gòu)造一個32位的常數(shù)。正如上面所提到的,R0主要用來合成一些有用的操作。比如, Load 一個常數(shù)就可以看作是一次簡單的立即值加操作,

7、其中一個源操作數(shù)是R0;寄存器-寄存器間的數(shù)據(jù)移動也可以看作是一次簡單的加,其中一個源操作數(shù)是R0.這兩個操作可以分別用 LI和MOV表示。在DLX指令集中,還有一些寄存器比較指令(=,工,),如果比較結(jié)果為真,這些指令就在目標寄存器中填入1 (表示真),否則填入0 (表示假)。因為這些比較操作指令要對目標寄存器進行“設(shè)置",所以也稱它們?yōu)樵O(shè)置相等、設(shè)置不等、設(shè)置小于等指令.(3 )分支和跳轉(zhuǎn)操作在DLX中,對程序流程的控制是通過一些跳轉(zhuǎn)和分支指令來實現(xiàn)的。根據(jù)描述目標地址的方法和是否鏈接可以將26位偏移量加上程序計數(shù)器的值來確定跳轉(zhuǎn)的目跳轉(zhuǎn)操作指令分為四種類型。其中兩種類型的跳轉(zhuǎn)指

8、令用帶符號位的個人收集整理 勿做商業(yè)用途 標地址,另外兩種類型的跳轉(zhuǎn)指令則指定一個寄存器,由寄存器中的內(nèi)容決定跳轉(zhuǎn)的目標地址 . 跳轉(zhuǎn)有兩種類型,一種 是簡單跳轉(zhuǎn),另一種是跳轉(zhuǎn)并鏈接(用于過程調(diào)用) , 后者將返回一個地址,即將下一條順序指令地址(返回地址 ) 保存在寄存器 R31 中。DLX 中的所有分支指令均是條件分支指令 , 其源操作數(shù)寄存器中包含了一個數(shù)值或某個比較結(jié)果 . 分支指令測試該 源操作數(shù)寄存器中的值是 0還是非 0,決定分支是否成功。分支目標地址由一個帶符號的26 位偏移量加上程序計數(shù)器的值來確定 , 分支目的地址指向下一條要執(zhí)行的指令( 4) 浮點操作在DLX中,浮點指令

9、的操作數(shù)來源于浮點寄存器,同時該浮點指令還指明了相應(yīng)的操作是單精度浮點操作還是雙精度浮點操作。DLX的浮點操作有:力廿、減、乘、除。后綴D代表雙精度浮點操作,而后綴F代表單精度浮點操作 (如:ADDD ADDFSUBD SUBF MULTD MULTF DIVD、DIVF)。值得提岀的是,DLX的浮點比較操作設(shè)置浮點狀態(tài)寄存器中的位,如果比較 結(jié)果為真,則將該位設(shè)置為1;如果比較結(jié)果為假,則將該位設(shè)置為0。浮點分支指令 BFPT和BFTF則測試該寄存器的值來決定分支是否成功。另外,操作MOVF將一個單精度浮點寄存器的內(nèi)容拷貝至另一個單精度浮點寄存器;MOVD則將一個雙精度浮點寄存器的內(nèi)容拷貝至

10、另一雙精度寄存器;MOVFP2I和MOVI2FP操作則是在一個浮點寄存器和通用寄存器之間移動數(shù)據(jù),如果要將一個雙精度浮點數(shù)移入兩個通用寄存器則需要兩條指令,另外DLX還提供了在32位浮點寄存器中進行整數(shù)乘除操作的指令。第二節(jié) DLX 流水線結(jié)構(gòu)一一個簡單實現(xiàn)為了說明指令的流水執(zhí)行方式 , 先論述在不流水的情況下,種簡單數(shù)據(jù)通路,下面可以看岀在五個時鐘周期內(nèi)可以完成一條1取指令周期( IF ):DLX指令是如何執(zhí)行的.圖2給岀了實現(xiàn)DLX指令的一DLX指令.IR Mem : PCNPC PC + 4其操作為:根據(jù)PC直從存貯器中取岀指令,并將指令送入指令寄存器IR;PC值增加4,指向順序的下一條

11、指令,并將下一條指令的地址放入臨時寄存器NP(中 .實現(xiàn)DLX指令的一種簡單數(shù)據(jù)通路2 指令譯碼/讀寄存器周期(ID):A RegsIR6.。10B RegsIR11.。15Imm(IR16)16 # IR16.。31其操作為:對指令操作碼進行譯碼,按照給定的尋址方式和地址段中的內(nèi)容形成操作數(shù)的地址,并用這個地址讀 操作數(shù)。操作數(shù)可能在駐村中,也可能在通用寄存器中.8:指令的譯碼操作和讀寄存器操作是并行進行的。之所以能做到這一點, 是因為DLX指令格式中,操作碼在固定位置這種技術(shù)也稱為固定字段譯碼技術(shù).值得注意的是,在上述過程中,可能讀岀了一些在后面周期中并不會使用到的寄存器內(nèi)容,但是這并不會

12、影響指令執(zhí)行的正確性.相反,卻可以有效地降低問題的復(fù)雜性另外,由于立即值在 DLX旨令格式中處于固定位置,因此這里也對其進行符號擴展,以便在下一個周期能使用它 當然由于指令的不同,也許在后面的周期中并不會用到這個立即值,但無論如何,提前形成立即值總是有益無害的。3 執(zhí)行/有效地址計算周期(EX在這個周期,不同的指令有不同的操作.1(1)存儲器訪問:ALUOutput A+ Imm當指令為存貯器訪問指令時,該周期的操作為:ALU將操作數(shù)相加形成有效地址,并將結(jié)果放入臨時寄存器ALUoutput 中.(2 )寄存器一寄存器 ALU操作:ALUOutput A opB當指令為寄存器一-寄存器ALL操

13、作指令時,該周期的操作為:ALU根據(jù)操作碼指岀的功能對臨時寄存器A和B中的值進行處理,并將結(jié)果送入臨時寄存器ALUoutput中.(3) 寄存器一立即值 ALU操作:ALUOutput A opImm當指令為寄存器一一-寄存器ALU操作指令時,該周期的操作為:ALU根據(jù)操作碼指岀的功能對臨時寄存器A和Imm中的值進行處理,并將結(jié)果送入臨時寄存器ALUoutput中.(4) 分支操作ALUOutput NPO ImmCond( A op 0)當指令為分支指令時,該周期的操作為:ALU將臨時寄存器NP(和Imm中的值相加,得到分支的目標地址。同時,對在前一個周期讀入到寄存器A的值進行檢查,決定分支

14、是否成功。0P由分支操作碼決定這里, 將有效地址計算周期和執(zhí)行周期合并為一個時鐘周期,這是由 DLX 指令集結(jié)構(gòu)本身的特點所允許的 , 因為在DLX 指令集結(jié)構(gòu)中 ,沒有任何指令需要同時計算數(shù)據(jù)的存儲器地址、計算分支指令的目標地址和對數(shù)據(jù)進行處理.另外,上面四種操作類型中沒有包含各種形式的跳轉(zhuǎn)操作,它們和分支操作十分相似, 這里就不再贅述4存儲器訪問 / 分支完成周期( MEM)在該周期處理的DLX旨令只有Load、Store和分支指令。存儲器訪問:LMD MemALUOutput或Mem ALUOutput B存貯器的訪問操作包含了Load和Store兩種類型的操作。如果指令是Load指令,

15、就將臨時寄存器 ALUOutput中的值作為訪存地址,從存貯器中讀岀相應(yīng)的數(shù)據(jù),并放入臨時寄存器LM呼;如果指令是Store指令,就將臨時寄存器中的值按照臨時寄存器ALUOutput所知名的地址寫入存貯器。 分支操作:if (cond ) PC ALUOutput elsePC NPC如果分支條件寄存器中的內(nèi)容為真,表明分支轉(zhuǎn)移成功,選擇臨時寄存ALUOutput中的值作為分支目標地址,并將其放入PC中。否則,他將臨時寄存器NP(中的值送入PC中,作為下一條指令地址。15寫回周期( WB): 不同指令在該周期完成的工作也不一樣。這里按如下指令類型對寫回周期所要完成的工作進行說明。(1)寄存器一

16、寄存器型 ALU 指令:RegsIR16。20 ALUOutput(2 )寄存器一立即值型 ALU 指令:Regs : IR11.15 ALUOutput( 3)Load 指令Regs IR11 15 LMD上述指令均是將結(jié)果寫入寄存器文件。 無論結(jié)果是來自于存儲器系統(tǒng) (臨時寄存器 LMD 中的內(nèi)容) ,還是來自于 ALU 的計算結(jié)果(臨時寄存器 ALUoutput 中的內(nèi)容 ) ,都由操作碼決定將其送入目標寄存器相應(yīng)的域中從圖1-2中可以看岀, 分支指令需要 4個時鐘周期完成 ,其它指令需要 5個時鐘周期完成。 假設(shè)分支指令數(shù)占指令總 數(shù)(也稱混合指令數(shù))的 12,則其 CPI 是4.88

17、個時鐘周期。由此可見 ,上述實現(xiàn)無論是從性能方面,還是從硬件開銷 方面,都稱不上是一種優(yōu)化實現(xiàn)。由于 ALU 指令在 MEM 周期不做任何工作,所以可以在 MEM 周期就完成 ALU 指令, 這并不影響執(zhí)行部件的時鐘速 度,但是可以降低 CPI。假設(shè)ALU指令數(shù)占混合指令條數(shù)的 44%,則CPI可達4。44,這種改進所帶來的加速比為 4.88/4.44=1。 1.如果還要降低 CPI ,就有可能會延長時鐘周期時間 , 因為在每個時鐘周期中可能需要完成更多的工作,因此,時鐘 周期時間和 CPI 之間也存在著折衷關(guān)系,這種折衷取舍需建立在對系統(tǒng)仔細分析的基礎(chǔ)之上。DLX基本流水線我們可以將每一個時

18、鐘周期看作是流水線的一個時鐘周期,使圖2中的數(shù)據(jù)通路成為一條指令流水線。硬件每個時鐘周期啟動一條新的指令,并執(zhí)行5條不同指令中的某一部分。我們可以把該流水線描述成為圖 3所示的流水過程。一種簡單DLX流水線.的流水過程指令塢號時鐘周朋12345799指令1IFIDEXIEMWB181+1IFIDEKIEM指1+2IFIDEXMEMTB181+3IFIDEXIE1幗)8令i +噸IfIDEXHERWB圖3簡單的DLX流水線從圖3可以看岀,每條指令仍然需要 5個時鐘周期完成,但是指令執(zhí)行的吞吐量卻有很大提 高,雖然DLX流水線十分簡單,但是要使DLX指令的各種組合能夠在上述流水線中真正流水起來,

19、充分發(fā)揮流水線的效率并不是容易的事情,它必須解決各種相關(guān)問題實驗一 WINDLX 模擬器安裝及使用一、實驗類別: 綜合實驗二、實驗?zāi)康?:建立實驗環(huán)境,了解 WINDLX 模擬器的結(jié)構(gòu)及使用三、實驗學時: 2四、人組數(shù) :1/1五、實驗設(shè)備環(huán)境 WinDLX要求的硬件平臺是 IBM PC兼容機,WinDLX是一個 Windows 應(yīng)用程序,運行于 Windows 3.0 以上的操作系統(tǒng) .六、實驗原理:WinDLX軟件包中帶有說明文件,供安裝程序時候使用七、教學要點與學習難點:軟件包中還有 WinDLX教程和聯(lián)機幫助,可以通過它們進一步了解模擬器的使用方法和DLX處理器的原理。大家在進行模擬實

20、驗以前應(yīng)該仔細閱讀這些文檔。八、實驗內(nèi)容和要求:閱讀模擬器Help文檔和相關(guān)資料,利用Fact。s及In put。s代碼熟悉模擬器的配置、各項工具使用、寄存器設(shè)置及指令系統(tǒng)。九、實驗步驟: (1) WINDLX 模擬器安裝(2) 熟悉模擬器的配置( 3) 熟悉各工具的使用十、 可研究與探索的問題 :十一、 實驗報告要求:簡要介紹 WINDLX 模擬器結(jié)構(gòu)和功能二 實驗二 指令流水線相關(guān)性分析一、實驗類別:驗證實驗二、實驗?zāi)康模和ㄟ^使用 WINDLX 模擬器,對程序中的三種相關(guān)現(xiàn)象進行觀察, 并對使用專用通路, 增加運算部件等技術(shù)對性能的影響進行考察, 加深對流水 線和 RISC 處理器的特點的

21、理解。三、實驗學時: 4四、實驗組人數(shù): 1/1五、實驗設(shè)備環(huán)境:Win DLX模擬器可以裝入 DLX匯編語言程序,然后單步、設(shè)置斷點 或者連續(xù)執(zhí)行該程序。 CPU的寄存器、流水線、I/O和存儲器都可以使用圖形的方 式表示出來。模擬器還提供了對流水線操作的統(tǒng)計功能。該模擬器對理解流水線和 RISC 處理器的特點很有幫助。六、實驗原理: 指令流水線中主要有 結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)、控制相關(guān)。 相關(guān)影響流 水線性能。七、教學要點與學習難點:三種相關(guān)及其解決辦法八、實驗內(nèi)容和要求:使用WinDLX模擬器,對求階乘程序 Fact。s做分析九、實驗步驟:(1) 觀察程序中出現(xiàn)的數(shù)據(jù) /控制/結(jié)構(gòu)相關(guān)。 指出

22、程序中出現(xiàn)上述現(xiàn)象的指令組 合。( 2) 考察增加浮點運算部件對性能的影響。( 3) 考察增加 forward 部件對性能的影響。( 4 ) 觀察轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時候的流水線開銷 .注意:除( 2)以外,浮點加、乘、除部件都只有一個;本問題中所有浮點運算部件的延時都請設(shè)定為 4 個周期 .十、 可研究與探索的問題 :實驗報告要求:( 1)實驗?zāi)康?.(2)實驗原理。(3 )針對上面的實驗內(nèi)容,記錄實驗過程,給出分析結(jié)果, 相關(guān)理論依據(jù)。(4 )給出實驗總結(jié):根據(jù)實驗,總結(jié)采用流水線技術(shù)會遇到的問題和為解決這些問題所采用的各種技術(shù)的作用。 同時簡單談?wù)勛约簩α魉€技術(shù)的認識。三 實

23、驗三 DLX 處理器程序設(shè)計一、實驗類別:綜合型二、實驗?zāi)康?:學習使用 DLX 匯編語言編程 ,進一步分析相關(guān)現(xiàn)象三、實驗學時: 4四、實驗組人數(shù): 1/1五、實驗設(shè)備環(huán)境:DLX匯編語言環(huán)境六、實驗原理:掌握向量運算算法和編程方法。七、教學要點與學習難點:DLX匯編語言八、實驗內(nèi)容和要求:自編一段匯編代碼, 完成兩雙精度浮點一維向量的加法 (或乘除法) 運算 ,并輸出結(jié)果 .向量長度 >=16。觀察程序中出現(xiàn)的數(shù)據(jù) / 控制/ 結(jié)構(gòu)相關(guān)九、實驗步驟 :(1)熟悉DLX匯編語言.2)編寫 兩雙精度浮點一維向量的加法運算程序。3 )對此程序完成上面實驗二中1)、 2)、 3)、 4)方面

24、的分析。十、 可研究與探索的問題: 十一、 實驗報告要求:(1)實驗?zāi)康?。?)代碼清單及注釋說明( 3)程序相關(guān)性分析結(jié)果四 實驗四 代碼優(yōu)化實驗類別:實驗?zāi)康模壕C合實驗 學習簡單編譯優(yōu)化方法, 觀察采用編譯優(yōu)化方法所帶來的性能的提三、實驗學時 :4四、實驗組人數(shù) :1/1五、實驗設(shè)備環(huán)境: DLX 匯編語言環(huán)境六、實驗原理: 采用 靜態(tài)調(diào)度方法重排指令序列,減少相關(guān),優(yōu)化程序七、教學要點與學習難點:指令靜態(tài)調(diào)度方法。八、實驗內(nèi)容和要求: 對實驗二或?qū)嶒炄拇a進行優(yōu)化, 給出性能改進的量化值, 同時給出采取優(yōu)化手段的理論依據(jù)。九、實驗步驟 :(1) 使用靜態(tài)調(diào)度方法手工優(yōu)化 實驗 2或?qū)嶒?3 的代碼(2) 對優(yōu)化程序 ,重復(fù)實驗二中 (1 )、 (2 )、( 3

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論