



免費預覽已結束,剩余1頁可下載查看
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
WinDLX 教程劉 依 張晨曦 編譯DLX 處理器 (發(fā)音為 DeLuXe)是Hennessy 和Patterson合著一書Computer Architecture - A Quantitative Approach中流水線處理器的例子。WinDLX是一個基于Windows的模擬器。本教程通過一個實例介紹WinDLX的使用方法。WinDLX模擬器能夠演示DLX流水線是如何工作的。 本教程使用的例子非常簡單,它并沒有囊括WinDLX的各個方面,僅僅作為使用WinDLX的入門級介紹。當你閱讀完本教程后,請參考幫助文件。通過按F1鍵,你可以在任何時候獲得相關的幫助信息。雖然我們將詳細討論例子中的各個階段,但你應具備基本的使用Windows的知識?,F(xiàn)假定你知道如何啟動 Windows,使用滾動條滾動,雙擊執(zhí)行以及激活窗口。一、安 裝WinDLX 包含windlx.exe和windlx.hlp文件。同時,還需要一些擴展名為.s的匯編代碼文件。 在本手冊中將使用fact.s 和input.s這兩個匯編代碼文件。如果你熟悉 Windows 應用程序的安裝,那么將 fact.s和input.s 拷貝到WinDLX 文件夾后,你可以直接閱讀下一部分。請按以下步驟在Windows下安裝WinDLX:1. 為WinDLX創(chuàng)建目錄,例如D:WINDLX2. 解壓WinDLX軟件包或拷貝所有的WinDLX文件(至少包含 windlx.exe, windlx.hlp, fact.s 和input.s )到這個WinDLX 目錄。二、一個完整的例子我們使用WinDLX 匯編器中的匯編文件fact.s ,這個程序計算數(shù)(通過鍵盤輸入)的階乘。這需要用到文件input.s,它用于接收從鍵盤輸入的數(shù)。1. 開始和配置WinDLX象啟動任何Windows應用程序一樣,通過雙擊 WinDLX 圖標啟動WinDLX,將出現(xiàn)一個帶有六個圖標的主窗口,雙擊這些圖標將彈出子窗口。后面將解釋和介紹如何使用每一個窗口。為了初始化模擬器, 點擊File 菜單中的 Reset all 菜單項,彈出一個“Reset DLX”對話框。然后點擊窗口中的“確認”按鈕即可。OKOKWinDLX可以在多種配置下工作。你可以改變流水線的結構和時間要求、存儲器大小和其他幾個控制模擬的參數(shù)。點擊 Configuration / Floating Point Stages(點擊Configuration打開菜單,然后點擊Floating Point Stages菜單項),選擇如下標準配置: CountDelayAddition Units:12Multiplication Units:15Division Units:119如果需要,可以通過點擊相應區(qū)域來改變設置。然后,點擊OK 返回主窗口。點擊 Configuration / Memory Size ,可以設置模擬處理器的存儲器大小。應設置為0x8000,然后,點擊 OK 返回主窗口。在 Configuration 菜單中的其他三個配置也可以設置,它們是:Symbolic addresses, Absolute Cycle Count 和 Enable Forwarding。 點擊相應菜單項后, 在它的旁邊將顯示一個小鉤。 2. 裝載測試程序在開始模擬之前,至少應裝入一個程序到主存。為此,選擇File / Load Code or Data,窗口中會列出目錄中所有匯編程序。 我們在前面已經(jīng)提到,fact.s 計算一個整型值的階乘; input.s中包含一個子程序,它讀標準輸入(鍵盤)并將值存入DLX處理器的通用寄存器R1中。按如下步驟操作,可將這兩個文件裝入主存。點擊 fact.s點擊 select 按鈕點擊 input.s點擊 select按鈕點擊 load按鈕選擇文件的順序很關鍵,它決定了文件在存儲器中出現(xiàn)的順序。對話框中會顯示信息“File(s) loaded successfully. Reset DLX?”,點擊“是(Y)” 按鈕確認。這樣,文件就已被裝入到存儲器中了。 現(xiàn)在可以開始模擬工作了。3. 模 擬在主窗口中,你可以看見六個圖標,它們分別為“Register”,“Code”,“Pipeline”,“Clock Cycle Diagram”,“Statistics” 和“Breakpoints”。點擊其中任何一個將彈出一個新窗口(子窗口)。在模擬過程中將介紹每一個窗口的特性和用法。(1) Pipeline 窗口我們首先來看一下DLX處理器的內(nèi)部結構。為此,雙擊圖標Pipeline,出現(xiàn)一個子窗口,窗口中用圖表形示顯示了DLX的五段流水線。你應盡可能地擴大此窗口,以便處于不同流水段的指令都能夠在圖表中顯示。 此圖顯示DLX處理器的五個流水段和浮點操作 (加 / 減, 乘和除)的單元。(2) Code 窗口我們來看一下 Code 窗口。雙擊圖標,你將看到代表存儲器內(nèi)容的三欄信息,從左到右依次為:地址 (符號或數(shù)字)、命令的十六進制機器代碼和匯編命令。 $TEXT 0x20011000addi r1,r0,0x1000main+0x40x0c00003cjal InputUnsigned現(xiàn)在,點擊主窗口中的 Execution開始模擬。在出現(xiàn)的下拉式菜單中,點擊Single Cycle或按 F7鍵。這時,窗口中帶有地址“$TEXT ”的第一行變成黃色。按下 F7 鍵,模擬就向前執(zhí)行一步,第一行的顏色變成橘黃色,下一行變成黃色.。這些不同顏色指明命令處于流水線的哪一段。如果Pipeline窗口已經(jīng)關閉,請雙擊相應圖標重新打開它。 如果窗口足夠大,你能夠看到命令“jal InputUnsigned”在 IF段,“addi r1, r0, 0x1000 ”在第二段ID。其他方框中帶有一個“X”標志,表明沒有處理有效信息。再次按下F7鍵,代碼窗口中的顏色會再改變, 紅色表明命令處入第三段“intEX”。 再按下F7,圖形顯示將變?yōu)椋涸诖a窗口中,黃色出現(xiàn)在更下面的位置,并且可能是唯一彩色行。查看一下Pipeline窗口,你會發(fā)現(xiàn)IF, intEX 和MEM 段正在使用而ID段沒有。為什么?(3) Clock Cycle Diagram 窗口使所有子窗口圖標化,然后打開Clock Cycle Diagram 窗口。它顯示流水線的時空圖。在窗口中,你將看到模擬正在第四時鐘周期,第一條命令正在MEM段,第二條命令在intEX段,第四條命令在IF段。而第三條命令指示為aborted。其原因是:第二條命令(jal)是無條件分支指令, 但只有在第三個時鐘周期, jal 指令被譯碼后才知道,這時,下一條命令movi2fp已經(jīng)取出,但需執(zhí)行的下一條命令在另一個地址處,因而,movi2fp的執(zhí)行應被取消,在流水線中留下氣泡。jal 的分支地址命名為InputUnsigned。為找到此符號地址的實際值,點擊主窗口中的Memory和 Symbols,出現(xiàn)的子窗口中顯示相應的符號和對應的實際值。在 Sort:區(qū)域選定name,使它們按名稱排序,而不是按數(shù)值排序。數(shù)字后的G代表全局符號, L代表局部符號。input中的InputUnsigned 是一個全局符號,它的實際值為0x144 ,用作地址。點擊OK 按紐關閉窗口。再一次點擊 F7 ,第一條命令(addi)到達流水線的最后一段。如果想了解某條命令執(zhí)行后處理器內(nèi)部會發(fā)生什么?你只要對準Clock cycle diagram窗口中相應命令所在行,然后雙擊它,彈出一個新窗口。窗口中會詳細顯示每一個流水段處理器內(nèi)部的執(zhí)行動作。這個窗口Information about . 作為將來的Information 窗口。觀察完后,點擊OK按鈕關閉窗口。雙擊第三行(movi2fp),你會看到它只執(zhí)行了第一段(IF), 這是因為出現(xiàn)跳轉而被取消。 (雙擊Code窗口中的某一行或者Pipeline 窗口中的某一段,同樣可以Information 窗口。)(4) Breakpoint 窗口當通過Code 窗口觀察代碼時 (如果未打開,雙擊圖標 Code),你會看到接下來的幾條指令幾近一樣,它們都是sw-操作:將寄存器中的數(shù)寫入存儲器中。重復按F7 將很枯燥,因此,我們使用斷點加快此過程?,F(xiàn)在,請指向Code 窗口中包含命令trap 0x5的0x0000015c行,此命令是寫屏幕的系統(tǒng)調(diào)用。單擊命令行,然后點擊主窗口菜單Code,單擊Set Breakpoint (確保命令行仍被標記!),將彈出一個新的Set Breakpoint 窗口。通過此窗口,你可以選擇命令運行到流水線的哪一階段時,程序停止執(zhí)行。缺省為ID段。點擊OK 關閉窗口。在Code 窗口中, trap 0x5行上出現(xiàn) 了BID ,它表示當本指令在譯碼段時,程序中止執(zhí)行。如果想查看已定義的斷點,你只要單擊圖標Reakpoints,將彈出一個小窗口,其中顯示了所有斷點。重新使窗口圖標化?,F(xiàn)在你只要點擊Execution / Run 或按F5,模擬就繼續(xù)運行。會出現(xiàn)一個對話框提示你ID-Stage: reached at Breakpoint #1,按“確認”按鈕關閉。點擊Clock cycle diagram窗口中的trap 0x5行,你將看到模擬正處于時鐘周期14。trap 0x5行如下所示:原因是:無論何時遇到一條trap指令時,DLX 處理器中的流水線將被清空。在Information 窗口(雙擊trap行彈出)中,在IF段顯示消息3 stall(s) because of Trap-Pipeline-Clearing!。 (不要忘了按OK關閉窗口)。指令trap 0x5 已經(jīng)寫到屏幕上,你可以通過點擊主窗口菜單條上的Execute / Display DLX-I/O來查看。(5) Register 窗口為進一步模擬,點擊Code 窗口,用箭頭鍵或鼠標向下滾動到地址為0x00000194的那一行(指令是lw r2, SaveR2(r0)),點擊此行,然后按Ins鍵,或點擊Code / Set Breakpoint / OK,在這一行上設置一個斷點。采用同樣的方法,在地址0x000001a4(指令jar r31)處設置斷點?,F(xiàn)在按F5繼續(xù)運行。這時,會彈出DLX-Standard-I/O 窗口,在信息An integer value 1: 后鼠標閃爍,鍵入20 然后按 Enter,模擬繼續(xù)運行到斷點 # 2 處。 在Clock cycle diagram 窗口中,在指令之間出現(xiàn)了紅和綠的箭頭。紅色箭頭表示需要一個暫停,箭頭指向處顯示了暫停的原因。R-Stall(R-暫停)表示引起暫停的原因是RAW。綠色箭頭表示定向技術的使用?,F(xiàn)在我們來看一下寄存器中的內(nèi)容。為此,雙擊主窗口中的Register 圖標。Register 窗口會顯示各個寄存器中的內(nèi)容??匆幌翿1到 R5的值。按F5使模擬繼續(xù)運行到下一個斷點處,有些值將發(fā)生改變,指令lw從主存中取數(shù)到寄存器中。如果你希望不設置斷點,而使模擬繼續(xù)進行。辦法是:點擊Execute / Multiple Cycles 或者按 F8鍵,在新出現(xiàn)的窗口中輸入17 ,然后按 Enter鍵,模擬程序將繼續(xù)運行17 個時鐘周期。向上滾動Clock cycle diagram 窗口,直到看到指令周期72到78。在EX段,兩個浮點操作(multd and subd)分別在不同的部件上運行,它們都需要多個周期才能結束。因而在它們之后的下一條指令能取指,譯碼和執(zhí)行,然后暫停一個周期以允許subd完成MEM段。(6) Statistics 窗口最后我們來看一下Statistics 窗口。按F5使程序完成執(zhí)行,出現(xiàn)消息Trap #0 occurred 表明最后一條指令 trap 0 已經(jīng)執(zhí)行, Trap指令中編號“0”沒有定義,只是用來終止程序。雙擊圖標Statistics。Statistics 窗口提供各個方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、 Load/Store指令、浮點指令和traps。窗口中給出事件發(fā)生的次數(shù)和百分比,如RAW stalls:17(7.91 % of all Cycles)。在靜態(tài)窗口中我們可以比較一下不同配置對模擬的影響?,F(xiàn)在我們看一看定向的作用。在前面的模擬過程中,我們采用了定向。(注:所謂“定向”,即建立專用路徑來避免數(shù)據(jù)相關。)如果不采用定向,執(zhí)行時間將會怎樣呢?我們先看一下Statistics 窗口中的各種統(tǒng)計數(shù)字:總的周期數(shù)(215) 和暫停數(shù) (17 RAW, 25 Control, 12 Trap; 54 Total) ,然后關閉窗口。點擊 Configuration中的Enable Forwarding使定向無效(去掉小鉤),打開斷點Breakpoints 圖標并點擊Breakpoints 菜單,刪除所有斷點,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年春季學期新蘇教版六年級語文下冊寫作技巧范文
- 童年的煩惱之身高問題450字7篇
- 2025年大數(shù)據(jù)分析師職業(yè)技能測試卷:大數(shù)據(jù)在數(shù)據(jù)挖掘與計算機視覺中的應用試題
- 小學數(shù)學復習與評估計劃
- 2025年中式面點師(高級)考試試卷:特色面點制作與品牌塑造策略
- 2025年中學教師資格考試《綜合素質(zhì)》學生心理輔導案例典型試題試卷
- 家庭語文復習計劃制定
- 2025年鄉(xiāng)村醫(yī)生考試題庫:農(nóng)村傳染病防治與預防控制策略試題
- 企業(yè)資源規(guī)劃軟件項目開發(fā)工作流程
- 2025年大學輔導員考試題庫:班級管理策略與班級管理信息化試題卷
- 2024版民政局離婚協(xié)議書格式范文
- 安檢五步法的安檢流程
- 腫瘤學概論課件
- HJ 651-2013 礦山生態(tài)環(huán)境保護與恢復治理技術規(guī)范(試行)
- 關愛生命-急救與自救技能智慧樹知到期末考試答案章節(jié)答案2024年上海交通大學醫(yī)學院
- 2024年浙江省金華市東陽市中考二模語文試題(原卷版+解析版)
- 《酒店消防安全培訓》課件完整版
- 幼兒園高瞻課程
- 蔣詩萌小品《誰殺死了周日》臺詞完整版
- 可打印的離婚協(xié)議書樣本
- tubeless胸科手術麻醉
評論
0/150
提交評論