



免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
WinDLX 教程劉 依 張晨曦 編譯DLX 處理器 (發(fā)音為 DeLuXe)是Hennessy 和Patterson合著一書(shū)Computer Architecture - A Quantitative Approach中流水線(xiàn)處理器的例子。WinDLX是一個(gè)基于Windows的模擬器。本教程通過(guò)一個(gè)實(shí)例介紹WinDLX的使用方法。WinDLX模擬器能夠演示DLX流水線(xiàn)是如何工作的。 本教程使用的例子非常簡(jiǎn)單,它并沒(méi)有囊括WinDLX的各個(gè)方面,僅僅作為使用WinDLX的入門(mén)級(jí)介紹。當(dāng)你閱讀完本教程后,請(qǐng)參考幫助文件。通過(guò)按F1鍵,你可以在任何時(shí)候獲得相關(guān)的幫助信息。雖然我們將詳細(xì)討論例子中的各個(gè)階段,但你應(yīng)具備基本的使用Windows的知識(shí)?,F(xiàn)假定你知道如何啟動(dòng) Windows,使用滾動(dòng)條滾動(dòng),雙擊執(zhí)行以及激活窗口。一、安 裝WinDLX 包含windlx.exe和windlx.hlp文件。同時(shí),還需要一些擴(kuò)展名為.s的匯編代碼文件。 在本手冊(cè)中將使用fact.s 和input.s這兩個(gè)匯編代碼文件。如果你熟悉 Windows 應(yīng)用程序的安裝,那么將 fact.s和input.s 拷貝到WinDLX 文件夾后,你可以直接閱讀下一部分。請(qǐng)按以下步驟在Windows下安裝WinDLX:1. 為WinDLX創(chuàng)建目錄,例如D:WINDLX2. 解壓WinDLX軟件包或拷貝所有的WinDLX文件(至少包含 windlx.exe, windlx.hlp, fact.s 和input.s )到這個(gè)WinDLX 目錄。二、一個(gè)完整的例子我們使用WinDLX 匯編器中的匯編文件fact.s ,這個(gè)程序計(jì)算數(shù)(通過(guò)鍵盤(pán)輸入)的階乘。這需要用到文件input.s,它用于接收從鍵盤(pán)輸入的數(shù)。1. 開(kāi)始和配置WinDLX象啟動(dòng)任何Windows應(yīng)用程序一樣,通過(guò)雙擊 WinDLX 圖標(biāo)啟動(dòng)WinDLX,將出現(xiàn)一個(gè)帶有六個(gè)圖標(biāo)的主窗口,雙擊這些圖標(biāo)將彈出子窗口。后面將解釋和介紹如何使用每一個(gè)窗口。為了初始化模擬器, 點(diǎn)擊File 菜單中的 Reset all 菜單項(xiàng),彈出一個(gè)“Reset DLX”對(duì)話(huà)框。然后點(diǎn)擊窗口中的“確認(rèn)”按鈕即可。OKOKWinDLX可以在多種配置下工作。你可以改變流水線(xiàn)的結(jié)構(gòu)和時(shí)間要求、存儲(chǔ)器大小和其他幾個(gè)控制模擬的參數(shù)。點(diǎn)擊 Configuration / Floating Point Stages(點(diǎn)擊Configuration打開(kāi)菜單,然后點(diǎn)擊Floating Point Stages菜單項(xiàng)),選擇如下標(biāo)準(zhǔn)配置: CountDelayAddition Units:12Multiplication Units:15Division Units:119如果需要,可以通過(guò)點(diǎn)擊相應(yīng)區(qū)域來(lái)改變?cè)O(shè)置。然后,點(diǎn)擊OK 返回主窗口。點(diǎn)擊 Configuration / Memory Size ,可以設(shè)置模擬處理器的存儲(chǔ)器大小。應(yīng)設(shè)置為0x8000,然后,點(diǎn)擊 OK 返回主窗口。在 Configuration 菜單中的其他三個(gè)配置也可以設(shè)置,它們是:Symbolic addresses, Absolute Cycle Count 和 Enable Forwarding。 點(diǎn)擊相應(yīng)菜單項(xiàng)后, 在它的旁邊將顯示一個(gè)小鉤。 2. 裝載測(cè)試程序在開(kāi)始模擬之前,至少應(yīng)裝入一個(gè)程序到主存。為此,選擇File / Load Code or Data,窗口中會(huì)列出目錄中所有匯編程序。 我們?cè)谇懊嬉呀?jīng)提到,fact.s 計(jì)算一個(gè)整型值的階乘; input.s中包含一個(gè)子程序,它讀標(biāo)準(zhǔn)輸入(鍵盤(pán))并將值存入DLX處理器的通用寄存器R1中。按如下步驟操作,可將這兩個(gè)文件裝入主存。點(diǎn)擊 fact.s點(diǎn)擊 select 按鈕點(diǎn)擊 input.s點(diǎn)擊 select按鈕點(diǎn)擊 load按鈕選擇文件的順序很關(guān)鍵,它決定了文件在存儲(chǔ)器中出現(xiàn)的順序。對(duì)話(huà)框中會(huì)顯示信息“File(s) loaded successfully. Reset DLX?”,點(diǎn)擊“是(Y)” 按鈕確認(rèn)。這樣,文件就已被裝入到存儲(chǔ)器中了。 現(xiàn)在可以開(kāi)始模擬工作了。3. 模 擬在主窗口中,你可以看見(jiàn)六個(gè)圖標(biāo),它們分別為“Register”,“Code”,“Pipeline”,“Clock Cycle Diagram”,“Statistics” 和“Breakpoints”。點(diǎn)擊其中任何一個(gè)將彈出一個(gè)新窗口(子窗口)。在模擬過(guò)程中將介紹每一個(gè)窗口的特性和用法。(1) Pipeline 窗口我們首先來(lái)看一下DLX處理器的內(nèi)部結(jié)構(gòu)。為此,雙擊圖標(biāo)Pipeline,出現(xiàn)一個(gè)子窗口,窗口中用圖表形示顯示了DLX的五段流水線(xiàn)。你應(yīng)盡可能地?cái)U(kuò)大此窗口,以便處于不同流水段的指令都能夠在圖表中顯示。 此圖顯示DLX處理器的五個(gè)流水段和浮點(diǎn)操作 (加 / 減, 乘和除)的單元。(2) Code 窗口我們來(lái)看一下 Code 窗口。雙擊圖標(biāo),你將看到代表存儲(chǔ)器內(nèi)容的三欄信息,從左到右依次為:地址 (符號(hào)或數(shù)字)、命令的十六進(jìn)制機(jī)器代碼和匯編命令。 $TEXT 0x20011000addi r1,r0,0x1000main+0x40x0c00003cjal InputUnsigned現(xiàn)在,點(diǎn)擊主窗口中的 Execution開(kāi)始模擬。在出現(xiàn)的下拉式菜單中,點(diǎn)擊Single Cycle或按 F7鍵。這時(shí),窗口中帶有地址“$TEXT ”的第一行變成黃色。按下 F7 鍵,模擬就向前執(zhí)行一步,第一行的顏色變成橘黃色,下一行變成黃色.。這些不同顏色指明命令處于流水線(xiàn)的哪一段。如果Pipeline窗口已經(jīng)關(guān)閉,請(qǐng)雙擊相應(yīng)圖標(biāo)重新打開(kāi)它。 如果窗口足夠大,你能夠看到命令“jal InputUnsigned”在 IF段,“addi r1, r0, 0x1000 ”在第二段ID。其他方框中帶有一個(gè)“X”標(biāo)志,表明沒(méi)有處理有效信息。再次按下F7鍵,代碼窗口中的顏色會(huì)再改變, 紅色表明命令處入第三段“intEX”。 再按下F7,圖形顯示將變?yōu)椋涸诖a窗口中,黃色出現(xiàn)在更下面的位置,并且可能是唯一彩色行。查看一下Pipeline窗口,你會(huì)發(fā)現(xiàn)IF, intEX 和MEM 段正在使用而ID段沒(méi)有。為什么?(3) Clock Cycle Diagram 窗口使所有子窗口圖標(biāo)化,然后打開(kāi)Clock Cycle Diagram 窗口。它顯示流水線(xiàn)的時(shí)空?qǐng)D。在窗口中,你將看到模擬正在第四時(shí)鐘周期,第一條命令正在MEM段,第二條命令在intEX段,第四條命令在IF段。而第三條命令指示為aborted。其原因是:第二條命令(jal)是無(wú)條件分支指令, 但只有在第三個(gè)時(shí)鐘周期, jal 指令被譯碼后才知道,這時(shí),下一條命令movi2fp已經(jīng)取出,但需執(zhí)行的下一條命令在另一個(gè)地址處,因而,movi2fp的執(zhí)行應(yīng)被取消,在流水線(xiàn)中留下氣泡。jal 的分支地址命名為InputUnsigned。為找到此符號(hào)地址的實(shí)際值,點(diǎn)擊主窗口中的Memory和 Symbols,出現(xiàn)的子窗口中顯示相應(yīng)的符號(hào)和對(duì)應(yīng)的實(shí)際值。在 Sort:區(qū)域選定name,使它們按名稱(chēng)排序,而不是按數(shù)值排序。數(shù)字后的G代表全局符號(hào), L代表局部符號(hào)。input中的InputUnsigned 是一個(gè)全局符號(hào),它的實(shí)際值為0x144 ,用作地址。點(diǎn)擊OK 按紐關(guān)閉窗口。再一次點(diǎn)擊 F7 ,第一條命令(addi)到達(dá)流水線(xiàn)的最后一段。如果想了解某條命令執(zhí)行后處理器內(nèi)部會(huì)發(fā)生什么?你只要對(duì)準(zhǔn)Clock cycle diagram窗口中相應(yīng)命令所在行,然后雙擊它,彈出一個(gè)新窗口。窗口中會(huì)詳細(xì)顯示每一個(gè)流水段處理器內(nèi)部的執(zhí)行動(dòng)作。這個(gè)窗口Information about . 作為將來(lái)的Information 窗口。觀察完后,點(diǎn)擊OK按鈕關(guān)閉窗口。雙擊第三行(movi2fp),你會(huì)看到它只執(zhí)行了第一段(IF), 這是因?yàn)槌霈F(xiàn)跳轉(zhuǎn)而被取消。 (雙擊Code窗口中的某一行或者Pipeline 窗口中的某一段,同樣可以Information 窗口。)(4) Breakpoint 窗口當(dāng)通過(guò)Code 窗口觀察代碼時(shí) (如果未打開(kāi),雙擊圖標(biāo) Code),你會(huì)看到接下來(lái)的幾條指令幾近一樣,它們都是sw-操作:將寄存器中的數(shù)寫(xiě)入存儲(chǔ)器中。重復(fù)按F7 將很枯燥,因此,我們使用斷點(diǎn)加快此過(guò)程?,F(xiàn)在,請(qǐng)指向Code 窗口中包含命令trap 0x5的0x0000015c行,此命令是寫(xiě)屏幕的系統(tǒng)調(diào)用。單擊命令行,然后點(diǎn)擊主窗口菜單Code,單擊Set Breakpoint (確保命令行仍被標(biāo)記!),將彈出一個(gè)新的Set Breakpoint 窗口。通過(guò)此窗口,你可以選擇命令運(yùn)行到流水線(xiàn)的哪一階段時(shí),程序停止執(zhí)行。缺省為ID段。點(diǎn)擊OK 關(guān)閉窗口。在Code 窗口中, trap 0x5行上出現(xiàn) 了BID ,它表示當(dāng)本指令在譯碼段時(shí),程序中止執(zhí)行。如果想查看已定義的斷點(diǎn),你只要單擊圖標(biāo)Reakpoints,將彈出一個(gè)小窗口,其中顯示了所有斷點(diǎn)。重新使窗口圖標(biāo)化?,F(xiàn)在你只要點(diǎn)擊Execution / Run 或按F5,模擬就繼續(xù)運(yùn)行。會(huì)出現(xiàn)一個(gè)對(duì)話(huà)框提示你ID-Stage: reached at Breakpoint #1,按“確認(rèn)”按鈕關(guān)閉。點(diǎn)擊Clock cycle diagram窗口中的trap 0x5行,你將看到模擬正處于時(shí)鐘周期14。trap 0x5行如下所示:原因是:無(wú)論何時(shí)遇到一條trap指令時(shí),DLX 處理器中的流水線(xiàn)將被清空。在Information 窗口(雙擊trap行彈出)中,在IF段顯示消息3 stall(s) because of Trap-Pipeline-Clearing!。 (不要忘了按OK關(guān)閉窗口)。指令trap 0x5 已經(jīng)寫(xiě)到屏幕上,你可以通過(guò)點(diǎn)擊主窗口菜單條上的Execute / Display DLX-I/O來(lái)查看。(5) Register 窗口為進(jìn)一步模擬,點(diǎn)擊Code 窗口,用箭頭鍵或鼠標(biāo)向下滾動(dòng)到地址為0x00000194的那一行(指令是lw r2, SaveR2(r0)),點(diǎn)擊此行,然后按Ins鍵,或點(diǎn)擊Code / Set Breakpoint / OK,在這一行上設(shè)置一個(gè)斷點(diǎn)。采用同樣的方法,在地址0x000001a4(指令jar r31)處設(shè)置斷點(diǎn)。現(xiàn)在按F5繼續(xù)運(yùn)行。這時(shí),會(huì)彈出DLX-Standard-I/O 窗口,在信息An integer value 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)在我們來(lái)看一下寄存器中的內(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段。(6) Statistics 窗口最后我們來(lái)看一下Statistics 窗口。按F5使程序完成執(zhí)行,出現(xiàn)消息Trap #0 occurred 表明最后一條指令 trap 0 已經(jīng)執(zhí)行, Trap指令中編號(hào)“0”沒(méi)有定義,只是用來(lái)終止程序。雙擊圖標(biāo)Statistics。Statistics 窗口提供各個(gè)方面的信息:模擬中硬件配置情況、暫停及原因、條件分支、 Load/Store指令、浮點(diǎn)指令和traps。窗口中給出事件發(fā)生的次數(shù)和百分比,如RAW stalls:17(7.91 % of all Cycles)。在靜態(tài)窗口中我們可以比較一下不同配置對(duì)模擬的影響?,F(xiàn)在我們看一看定向的作用。在前面的模擬過(guò)程中,我們采用了定向。(注:所謂“定向”,即建立專(zhuān)用路徑來(lái)避免數(shù)據(jù)相關(guā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ú)效(去掉小鉤),打開(kāi)斷點(diǎn)Breakpoints 圖標(biāo)并點(diǎn)擊Breakpoints 菜單,刪除所有斷點(diǎn),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年市政考試應(yīng)考強(qiáng)化試題及答案
- 公共關(guān)系品牌傳播的有效渠道試題及答案
- 水利水電工程考前知識(shí)強(qiáng)化試題及答案
- 如何應(yīng)對(duì)中級(jí)經(jīng)濟(jì)師考試試題及答案
- 經(jīng)濟(jì)法概論考試復(fù)習(xí)技巧與試題及答案
- 中級(jí)經(jīng)濟(jì)師的成功備考經(jīng)驗(yàn)試題及答案
- 2025廢品處理協(xié)議合同示例
- 明確規(guī)劃的2025年工程經(jīng)濟(jì)試題及答案
- 2025股權(quán)質(zhì)押貸款合同范本
- 煙草福建公司筆試試題2024
- 東風(fēng)EQ1092F型汽車(chē)分動(dòng)器的設(shè)計(jì)
- 小主持人社團(tuán)教案
- 銀行賬戶(hù)注銷(xiāo)申請(qǐng)(備案)表
- 2023年貴州省初中學(xué)業(yè)水平考試物理中考試卷真題(答案詳解)
- 銷(xiāo)售貨款責(zé)任追究制度
- 2022年浙江省金華市義烏市小升初語(yǔ)文試卷(一)
- 22S803 圓形鋼筋混凝土蓄水池
- 中建機(jī)電工程實(shí)體質(zhì)量控制水暖
- 常見(jiàn)藻類(lèi)圖譜(史上最全版本)
- 城市水污染的現(xiàn)狀及治理建議分析
- 電子CAD技能試題(4)555振蕩器
評(píng)論
0/150
提交評(píng)論