實驗一:DLX仿真器實驗_第1頁
實驗一:DLX仿真器實驗_第2頁
實驗一:DLX仿真器實驗_第3頁
實驗一:DLX仿真器實驗_第4頁
實驗一:DLX仿真器實驗_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗一WinDLX模擬器安裝和基本操作試驗目的了解WinDLX的基本功能和作用;加強對指令執(zhí)行細節(jié)的感性認識;掌握該工具的基本命令和操作,為流水線實驗作準備。實驗內容下載和安裝WinDLX;觀察軟件各個觀察窗口的內容和作用;安裝實驗步驟進行操作,掌握軟件的使用方法;課前可以先瀏覽閱讀DLX的RISC指令集。實驗環(huán)境硬件:桌面PC軟件:Windows實驗步驟及說明DLX處理器(發(fā)音為"DeLuXe")是Hennessy和Patterson合著一書《ComputerArchitecture-AQuantitativeApproach》中流水線處理器的例子。WinDLX是一個基于Windows的模擬器。本教程通過一個實例介紹WinDLX的使用方法。WinDLX模擬器能夠演示DLX流水線是如何工作的。本教程使用的例子非常簡單,它并沒有囊括WinDLX的各個方面,僅僅作為使用WinDLX的入門級介紹。當你閱讀完本教程后,請參考幫助文件。通過按Fl鍵,你可以在任何時候獲得相關的幫助信息。雖然我們將詳細討論例子中的各個階段,但你應具備基本的使用Windows的知識?,F假定你知道如何啟動Windows,使用滾動條滾動,雙擊執(zhí)行以及激活窗口。一、安裝WinDLX包含windlx.exe和windlx.hlp文件。同時,還需要一些擴展名為?s的匯編代碼文件。在本手冊中將使用fact.s和input.s這兩個匯編代碼文件。如果你熟悉Windows應用程序的安裝,那么將fact?s和input.s拷貝到WinDLX文件夾后,你可以直接閱讀下一部分。請按以下步驟在Windows下安裝WinDLX:

為WinDLX創(chuàng)建目錄,例如D:\WINDLX解壓WinDLX軟件包或拷貝所有的WinDLX文件(至少包含windlx.exe,windlx.hlp,fact.s和input.s)到這個WinDLX目錄。二、一個完整的例子我們使用WinDLX匯編器中的匯編文件fact?s,這個程序計算數(通過鍵盤輸入)的階乘。這需要用到文件input?s,它用于接收從鍵盤輸入的數。1?開始和配置WinDLX象啟動任何Windows應用程序一樣,通過雙擊WinDLX圖標象啟動任何Windows應用程序一樣,通過雙擊WinDLX圖標啟動WinDLX,將出現一個帶有六個圖標的主窗口,雙擊這些圖標將彈出子窗口。后面將解釋和介紹如何使用每一個窗口。為了初始化模擬器,點擊MZe菜單中的Resetall菜單項,彈出一個“ResetDLX"對話框。然后點擊窗口中的“確認”按鈕即可。WinDLX可以在多種配置下工作。你可以改變流水線的結構和時間要求、存儲器大小和其他幾個控制模擬的參數。點擊Configuration/FloatingPointStages(點擊Configuration打開菜單,然后點擊FloatingPointStages菜單項),選擇如下標準配置:Count DelayCount Delay如果需要,可以通過點擊相應區(qū)域來改變設置。然后,點擊OK返回主窗口。點擊Configuration/MemorySize,可以設置模擬處理器的存儲器大小。應設置為0x8000,然后,點擊OK返回主窗口。在Configuration菜單中的其他三個配置也可以設置,它們是:Symbolicaddresses,AbsoluteCycleCount和EnableForwarding。點擊相應菜單項后,在它的旁邊將顯示一個小鉤。2.裝載測試程序在開始模擬之前,至少應裝入一個程序到主存。為此,選擇F7Ze/LoadCodeorData,窗口中會列出目錄中所有匯編程序。我們在前面已經提到,facts計算一個整型值的階乘;inputs中包含一個子程序,它讀標準輸入(鍵盤)并將值存入DLX處理器的通用寄存器R1中。按如下步驟操作,可將這兩個文件裝入主存。?點擊fact.s?點擊select按鈕?點擊input.s?點擊select按鈕?點擊load按鈕選擇文件的順序很關鍵,它決定了文件在存儲器中出現的順序。對話框中會顯示信息“File(s)loadedsuccessfully.ResetDLX?”,點擊“是(Y)"按鈕確認。這樣,文件就已被裝入到存儲器中了。現在可以開始模擬工作了。3.模擬在主窗口中,你可以看見六個圖標,它們分別為“Register”,“Code”,“Pipeline”,“ClockCycleDiagran”,“Statistics”和“Breakpoints'。點擊其中任何一個將彈出一個新窗口(子窗口)。在模擬過程中將介紹每一個窗口的特性和用法。(1)Pipeline窗口我們首先來看一下DLX處理器的內部結構。為此,雙擊圖^標Pipeline,出現一個子窗口,窗口中用圖表形示顯示了DLX的五段流水線。你應盡可能地擴大此窗口,以便處于不同流水段的指令都能夠在圖表中顯示。此圖顯示dlx處理器的五個流水段和浮點操作(加/減乘和除)的單元。(2)Code窗口我們來看一下Code窗口。雙擊圖標,你將看到代表存儲器內容的三欄信息,從左到右依次為:地址(符號或數字)、命令的十六進制機器代碼和匯編命令。$TEXT0x20011000addir1,r0,0x1000main+0x40x0c00003cjalInputUnsigned現在,點擊主窗口中的Execution開始模擬。在出現的下拉式菜單中,點擊SingZeCycle或按F7鍵。這時,窗口中帶有地址“$TEXT”的第一行變成黃色。按下F7鍵,模擬就向前執(zhí)行一步,第一行的顏色變成橘黃色,下一行變成黃色.。這些不同顏色指明命令處于流水線的哪一段。如果Pipeline窗口已經關閉,請雙擊相應圖標重新打開它。如果窗口足夠大,你能夠看到命令“jalInputUnsigned”在IF段,“addir1,r0,0x1000"在第二段ID。其他方框中帶有一個“X”標志,表明沒有處理有效信息。再次按下F7鍵,代碼窗口中的顏色會再改變,紅色表明命令處入第三段“intEX”。再按下F7,圖形顯示將變?yōu)椋涸诖a窗口中,黃色出現在更下面的位置,并且可能是唯一彩色行。查看一下Ppeline窗口,你會發(fā)現IF,IntEX和MEM段正在使用而ID段沒有。為什么?(3)ClockCycleDiagram窗口使所有子窗口圖標化,然后打開CloMCycleDiagram窗口。它顯示流水線的時空圖。在窗口中,你將看到模擬正在第四時鐘周期,第一條命令正在MEM段,第二條命令在intEX段,第四條命令在IF段。而第三條命令指示為"aborted"。其原因是:第二條命令(jal)是無條件分支指令,但只有在第三個時鐘周期,jal指令被譯碼后才知道,這時,下一條命令movi2fp已經取出,但需執(zhí)行的下一條命令在另一個地址處,因而,movi2fp的執(zhí)行應被取消,在流水線中留下氣泡。jal的分支地址命名為"InputUnsigned"。為找到此符號地址的實際值,點擊主窗口中的臃加0口和Symbols,出現的子窗口中顯示相應的符號和對應的實際值。在"Sort:"區(qū)域選定"name",使它們按名稱排序,而不是按數值排序。數字后的"G"代表全局符號,"L"代表局部符號。"input"中的"InputUnsigned"是一個全局符號,它的實際值為0x144,用作地址。點擊OK按紐關閉窗口。再一次點擊F7,第一條命令(addi)到達流水線的最后一段。如果想了解某條命令執(zhí)行后處理器內部會發(fā)生什么?你只要對準Clockcyclediagram窗口中相應命令所在行,然后雙擊它,彈出一個新窗口。窗口中會詳細顯示每一個流水段處理器內部的執(zhí)行動作。這個窗口"Informationabout..."作為將來的負/0rmaio〃窗口。觀察完后,點擊OK按鈕關閉窗口。雙擊第三行(movi2fp),你會看到它只執(zhí)行了第一段GF),這是因為出現跳轉而被取消。(雙擊Code窗口中的某一行或者Pipeline窗口中的某一段,同樣可以Information窗口。)(4)Breakpoint窗口當通過Code窗口觀察代碼時(如果未打開,雙擊圖標Code),你會看到接下來的幾條指令幾近一樣,它們都是sw-操作:將寄存器中的數寫入存儲器中。重復按F7將很枯燥,因此,我們使用斷點加快此過程。現在,請指向Code窗口中包含命令trap0x5的0x0000015c行,此命令是寫屏幕的系統(tǒng)調用。單擊命令行,然后點擊主窗口菜單Code,單擊SetBreakpoint(確保命令行仍被標記!),將彈出一個新的"SetBreakpoint'窗口。通過此窗口,你可以選擇命令運行到流水線的哪一階段時,程序停止執(zhí)行。缺省為ID段。點擊OK關閉窗口。在Code窗口中,trap0x5行上出現了"BID",它表示當本指令在譯碼段時,程序中止執(zhí)行。如果想查看已定義的斷點,你只要單擊圖標Reakpoints,將彈出一個小窗口,其中顯示了所有斷點。重新使窗口圖標化?,F在你只要點擊EvecMion/Run或按F5,模擬就繼續(xù)運行。會出現一個對話框提示你"ID-Stage:reachedatBreakpoint#1",按“確認”按鈕關閉。點擊Cockcyclediagram窗口中的trap0x5行,你將看到模擬正處于時鐘周期14。trap0x5行如下所示:原因是:無論何時遇到一條trap指令時,DLX處理器中的流水線將被清空。在Information窗口(雙擊trap行彈出)中,在IF段顯示消息"3stall(s)becauseofTrap-Pipeline-Clearing!"。(不要忘了按OK關閉窗口)。指令trap0x5已經寫到屏幕上,你可以通過點擊主窗口菜單條上的Execute/DisplayDLXIO來查看。(5)Register窗口為進一步模擬,點擊Code窗口,用箭頭鍵或鼠標向下滾動到地址為0x00000194的那一行(指令是lwr2,SaveR2(r0)),點擊此行,然后按Ins鍵,或點擊Code/SetBreakpoint/OK,在這一行上設置一個斷點。采用同樣的方法,在地址0x000001a4(指令jarr31)處設置斷點?,F在按/5繼續(xù)運行。這時,會彈出DXStandardlO窗口,在信息"Anintegervalue>1:"后鼠標閃爍,鍵入20然后按Enter,模擬繼續(xù)運行到斷點#2處。在Clockcyclediagram窗口中,在指令之間出現了紅和綠的箭頭。紅色箭頭表示需要一個暫停,箭頭指向處顯示了暫停的原因。R-Stall(R-暫停)表示引起暫停的原因是RAW。綠色箭頭表示定向技術的使用?,F在我們來看一下寄存器中的內容。為此,雙擊主窗口中的Register圖標。Register窗口會顯示各個寄存器中的內容。看一下R1到R5的值。按F5使模擬繼續(xù)運行到下一個斷點處,有些值將發(fā)生改變,指令lw從主存中取數到寄存器中。如果你希望不設置斷點,而使模擬繼續(xù)進行。辦法是:點擊Execute/MultipleCycles或者按F8鍵,在新出現的窗口中輸入17,然后按Enter鍵,模擬程序將繼續(xù)運行17個時鐘周期。向上滾動CZockcyclediagram窗口,直到看到指令周期72到78。在EX段,兩個浮點操作(multdandsubd)分別在不同的部件上運行,它們都需要多個周期才能結束。因而在它們之后的下一條指令能取指,譯碼和執(zhí)行,然后暫停一個周期以允許subd完成MEM段。⑹Statistic窗口最后我們來看一下fairtics窗口。按F5使程序完成執(zhí)行,出現消息"Trap#0occurred"表明最后一條指令trap0已經執(zhí)行,Trap指令中編號“0"沒有定義,只是用來終止程序。雙擊圖標StatisticsoStatistics窗口提供各個方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、Load/Store指令、浮點指令和traps。窗口中給出事件發(fā)生的次數和百分比,如RAWstalls:17(7.91%ofallCycles)。在靜態(tài)窗口中我們可以比較一下不同配置對模擬的影響。現在我們看一看定向的作用。在前面的模擬過程中,我們采用了定向。如果不采用定向,執(zhí)行時間將會怎樣呢?我們先看一下Statistics窗口中的各種統(tǒng)計數字:總的周期數(215)和暫停數(17RAW,25Control,12Trap;54Total),然后關閉窗口。點擊Configuration中的EnableForwarding使定向無效(去掉小鉤),打開斷點Brea^oints圖標并點擊Breakpoints菜單,刪除所

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論