計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)winDLX流水線實(shí)驗(yàn)報(bào)告_第1頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)winDLX流水線實(shí)驗(yàn)報(bào)告_第2頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)winDLX流水線實(shí)驗(yàn)報(bào)告_第3頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)winDLX流水線實(shí)驗(yàn)報(bào)告_第4頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)winDLX流水線實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 計(jì)算機(jī)體系結(jié)構(gòu) 課程實(shí)驗(yàn) 學(xué) 號(hào) 班 級(jí) 專 業(yè) 學(xué)生姓名 年 月 日 2 實(shí)實(shí) 驗(yàn)驗(yàn) 報(bào)報(bào) 告告 學(xué)生姓名 學(xué)生姓名 學(xué)學(xué) 號(hào) 號(hào) 時(shí)間 時(shí)間 地點(diǎn) 地點(diǎn) 實(shí)驗(yàn)課程名稱 實(shí)驗(yàn)課程名稱 計(jì)算機(jī)體系結(jié)構(gòu) 一 實(shí)驗(yàn)名稱 一 實(shí)驗(yàn)名稱 流水線中的相關(guān) 求 n 個(gè)數(shù)的方差 二 實(shí)驗(yàn)原理 二 實(shí)驗(yàn)原理 1 WinDLX WinDLX 模擬器是一個(gè)圖形化 交互式的 DLX 流水線模擬器 能夠演示 DLX 流水線是 如何工作的 該模擬器可以裝載 DLX 匯編語言程序 后綴為 s 的文件 然后單步 設(shè)斷 點(diǎn)或是連續(xù)執(zhí)行該程序 CPU 的寄存器 流水線 I O 和存儲(chǔ)器都可以用圖形表示出來 以 形象生動(dòng)的方式描述 DLX 流水線的工作過程 模擬器還提供了對(duì)流水線操作的統(tǒng)計(jì)功能 便于對(duì)流水線進(jìn)行性能分析 2 流水線執(zhí)行過程 指令執(zhí)行的5個(gè)階段 1 取指令周期 2 指令譯碼 讀寄存器周期 3 執(zhí)行 有效地址計(jì)算周期 4 存儲(chǔ)器訪問 分支完成周期 5 寫回周期 3 流水線中的相關(guān) 1 結(jié)構(gòu)相關(guān) 當(dāng)某一條機(jī)器指令需要訪問物理器件時(shí) 如加法器 此時(shí)加法器正被另 一條機(jī)器指令使用 從而產(chǎn)生結(jié)構(gòu)相關(guān) 2 數(shù)據(jù)相關(guān) 當(dāng)某一條指令需要訪問某個(gè)寄存器時(shí) 此時(shí)這個(gè)寄存器正被另一條指令 所使用 從而產(chǎn)生數(shù)據(jù)相關(guān) 3 控制相關(guān) 當(dāng)程序執(zhí)行到某個(gè)分支語句時(shí) 順序執(zhí)行的下一條語句將被跳過而去執(zhí) 行分支語句中滿足條件的那條指令 從而產(chǎn)生控制相關(guān) 3 三 實(shí)驗(yàn)?zāi)康?三 實(shí)驗(yàn)?zāi)康?1 通過該模擬實(shí)驗(yàn) 進(jìn)一步掌握和鞏固流水線的基本知識(shí) 2 初步掌握在特定體系結(jié)構(gòu)下的匯編代碼的編寫和優(yōu)化 3 培養(yǎng)運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的能力 4 對(duì)流水線性能分析 5 了解影響流水線效率的因素 6 了解各類相關(guān)及解決方法 四 實(shí)驗(yàn)內(nèi)容 四 實(shí)驗(yàn)內(nèi)容 使用 WinDLX 模擬器 對(duì) Variance s 做如下分析 1 分析 Variance s 和 Input s 輸入順序不同時(shí)產(chǎn)生的影響 2 分析 Variance s 中匯編語言含義 同時(shí)分析程序執(zhí)行流程 3 觀察程序中出現(xiàn)的數(shù)據(jù) 控制 結(jié)構(gòu)相關(guān) 指出程序中出現(xiàn)上述現(xiàn)象的指令組合 4 考察增加運(yùn)算部件對(duì)性能的影響 5 考察增加 forward 部件對(duì)性能的影響 6 觀察轉(zhuǎn)移指令在轉(zhuǎn)移成功和轉(zhuǎn)移不成功時(shí)候的流水線開銷 注意 除 4 以外 加 乘 除部件都只有一個(gè) 本問題中所有部件延遲設(shè)置為 加 法 2 個(gè)延遲周期 乘法 5 個(gè)延遲周期 除法 19 個(gè)延遲周期 五 實(shí)驗(yàn)器材 設(shè)備 元器件 五 實(shí)驗(yàn)器材 設(shè)備 元器件 IBM PC 兼容機(jī) Windows 3 0 以上的操作系統(tǒng) 六 實(shí)驗(yàn)步驟及操作 六 實(shí)驗(yàn)步驟及操作 1 雙擊 WinDLX 圖標(biāo)運(yùn)行 WinDLX 裝入測(cè)試程序之前 先初始化 WinDLX 模擬器 點(diǎn)擊 File 菜單中的 Reset all 菜單項(xiàng) 彈出一個(gè) Reset DLX 對(duì)話框 然后點(diǎn)擊窗口中的 確 認(rèn) 按鈕即可 2 選擇 File Load Code or Data 按如下步驟操作 可將 Variance s 和 Input s 這兩個(gè)程 序裝入主存 點(diǎn)擊 Variance s 點(diǎn)擊 select 按鈕 點(diǎn)擊 Input s 點(diǎn)擊 select 按鈕 點(diǎn)擊 load 按鈕 3 按 F7 鍵程序順序執(zhí)行觀察 6 個(gè)子窗口的情況 4 七 實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析 七 實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析 1 先裝入 Variance s 再轉(zhuǎn)入 Input s 時(shí) 因?yàn)槌绦蝽樞驁?zhí)行 地址順序符合程序執(zhí)行 順序 程序能夠正確執(zhí)行 順序相反時(shí) 因?yàn)?Input s 的地址高 而程序順序執(zhí)行到 Input s 時(shí)將沒有正確的輸入窗口 程序執(zhí)行到輸出結(jié)果時(shí) 也不會(huì)出現(xiàn)結(jié)果 2 程序中出現(xiàn)的三種相關(guān) 1 數(shù)據(jù)相關(guān) 以圖 1 中出現(xiàn)的兩個(gè)數(shù)據(jù)相關(guān)為例 下面兩條指令中 因?yàn)榈诙l指令要讀 r3 而執(zhí)行到此操作時(shí)加載指令仍對(duì) r3 進(jìn)行操作 因此出現(xiàn)了數(shù)據(jù)相關(guān) lbu r3 0 r2 seqi r5 r3 10 下面兩條指令中 因?yàn)榧臃ㄖ噶钜x r1 而執(zhí)行到此操作時(shí)乘法指令仍對(duì) r 進(jìn)行 操作 因此出現(xiàn)了數(shù)據(jù)相關(guān) multu r1 r1 r4 add r1 r1 r3 圖 1 數(shù)據(jù)相關(guān) 2 控制相關(guān) 以圖 2 中出現(xiàn)的控制相關(guān)為例 下面兩條指令中 因?yàn)榈谝粭l指令出現(xiàn)跳轉(zhuǎn)指令時(shí) 存儲(chǔ)指令的取指將作廢 所 以出現(xiàn)控制相關(guān) jal InputUnsigned sw PrintfValue r3 r1 圖 2 控制相關(guān) 5 3 結(jié)構(gòu)相關(guān) 以圖 3 中出現(xiàn)的結(jié)構(gòu)相關(guān)為例 下面兩條指令中 因?yàn)楫?dāng)?shù)诙l乘法指令需要使用乘法器時(shí) 第一條乘法指令仍 在使用乘法器 所以出現(xiàn)結(jié)構(gòu)相關(guān) mult r2 r0 r0 mult r3 r0 r0 圖 3 結(jié)構(gòu)相關(guān) 3 主程序 Variance s 的代碼 data data 標(biāo)識(shí)下面的數(shù)據(jù)放在數(shù)據(jù)區(qū)中 輸入語句 指示你輸入要求多少個(gè)數(shù)的方差 Prompt asciiz Please input An integer which is array s size value 0 輸入語句 指示你輸入要求方差的數(shù) PromptLast asciiz Please input the integer 輸出格式 表示求出的方差按什么格式輸出 PrintfFormat asciiz the Variance is g 表示下面采用字對(duì)齊 align 2 word 在存儲(chǔ)器中順序存放列出的字 PrintfPar word PrintfFormat 在存儲(chǔ)區(qū)中空出相應(yīng)大小的區(qū)域 Printf space 8 Variance space 8 PrintfValue space 1024 text text 標(biāo)識(shí)下面的代碼存放在代碼區(qū)中 global main global 標(biāo)識(shí) main 可以被全局訪問 main 將 Prompt 字符串首地址放入 r1 寄存器中 addi r1 r0 Prompt 跳轉(zhuǎn)向 InputUnsigned 標(biāo)識(shí)的地址 調(diào)用 input 子函數(shù)讀取數(shù)組大小的 值 jal InputUnsigned 將 input 函數(shù)讀取的數(shù)放入寄存器中 add r5 r0 r1 add r6 r0 r1 6 add r7 r0 r1 add r8 r0 r1 addi r3 r0 0 循環(huán)調(diào)用 input 函數(shù)讀數(shù) InputArray r5 寄存器中的值為 0 則跳轉(zhuǎn)向 ProcessPart 標(biāo)識(shí)的地址 beqz r5 ProcessPart addi r1 r0 PromptLast jal InputUnsigned 將 r1 寄存器中的數(shù)放入 r3 寄存器中所存數(shù)地址的存儲(chǔ)器中 sw PrintfValue r3 r1 addi r3 r3 4 subi r5 r5 1 無條件跳轉(zhuǎn)向 InputArray 標(biāo)識(shí)的指令地址 j InputArray ProcessPart r2 r3 寄存器中數(shù)清 0 mult r2 r0 r0 mult r3 r0 r0 Loop1 r6 寄存器中的值為 0 則跳轉(zhuǎn)向 Average1 標(biāo)識(shí)的地址 beqz r6 Average1 將 r3 寄存器中所存地址的存儲(chǔ)器中的數(shù)加載到 r1 中 lw r1 PrintfValue r3 求出 n 個(gè)數(shù)的累加和存入 r2 中 add r2 r2 r1 addi r3 r3 4 subi r6 r6 1 無條件跳轉(zhuǎn)向 Loop1 標(biāo)識(shí)的指令地址 j Loop1 Average1 求出 n 個(gè)數(shù)的平均數(shù)存入 r9 中 div r9 r2 r8 r2 r3 寄存器中數(shù)清 0 mult r2 r0 r0 mult r3 r0 r0 Loop2 r7 寄存器中的值為 0 則跳轉(zhuǎn)向 Average2 標(biāo)識(shí)的地址 beqz r7 Average2 將 r3 寄存器中所存地址的存儲(chǔ)器中的數(shù)加載到 r1 中 lw r1 PrintfValue r3 求出 n 個(gè)數(shù)與平均數(shù)差值平方的累加和 7 sub r10 r1 r9 mult r10 r10 r10 add r2 r2 r10 addi r3 r3 4 subi r7 r7 1 無條件跳轉(zhuǎn)向 Loop2 標(biāo)識(shí)的指令地址 j Loop2 Average2 求出方差存入 r11 中 div r11 r2 r8 output 將方差存入 Variance 所指存儲(chǔ)空間中 sw Variance r11 轉(zhuǎn)換為雙精度并輸出 lf f2 Variance cvti2d f0 f2 sd Printf f0 addi r14 r0 PrintfPar trap 5 調(diào)用中斷 格式化輸出轉(zhuǎn)化為標(biāo)準(zhǔn)輸出 over trap 0 調(diào)用系統(tǒng)中斷 0 表示程序執(zhí)行結(jié)束 4 樣例輸出 以圖 4 中數(shù)據(jù)為例 輸入需要求方差數(shù)的個(gè)數(shù)為 4 4 個(gè)數(shù)分別為 3 5 6 2 輸出結(jié)果為 2 圖 4 輸出界面 5 盡量減少和消除程序中出現(xiàn)的相關(guān) 1 消除數(shù)據(jù)相關(guān) a 采用定向技術(shù) 在發(fā)生數(shù)據(jù)相關(guān)時(shí) 等待前面計(jì)算結(jié)果的指令并不一定真的馬 上就用到該計(jì)算結(jié)果 如果能夠?qū)⒃撚?jì)算結(jié)果從其產(chǎn)生的地方直接送到其他指令需要 它的地方 就可以避免暫停 具體操作為 在 WinDLX 模擬器中選中 Configuration 菜 單中的 Enable Forwarding 選項(xiàng) b 手動(dòng)優(yōu)化 以圖 1 中的一個(gè)數(shù)據(jù)相關(guān)為例 交換兩條加法指令的順序可消除數(shù) 據(jù)相關(guān) multu r1 r1 r4 multu r1 r1 r4 8 add r1 r1 r3 addi r2 r2 1 addi r2 r2 1 add r1 r1 r3 2 消除控制相關(guān) 循環(huán)展開 將循環(huán)體代碼復(fù)制多次實(shí)現(xiàn) 即減少跳轉(zhuǎn)指令執(zhí)行的次數(shù) 循環(huán)展開 能夠增大指令調(diào)度的空間 減少循環(huán)分支指令的開銷 以 Variance s 中的一個(gè)循環(huán)體 為例 循環(huán)展開一次后 j Loop1 指令執(zhí)行次數(shù)減少了一半 Loop1 Loop1 beqz r6 Average1 beqz r6 Average1 lw r1 PrintfValue r3 lw r1 PrintfValue r3 add r2 r2 r1 add r2 r2 r1 addi r3 r3 4 addi r3 r3 4 subi r6 r6 1 subi r6 r6 1 j Loop1 beqz r6 Average1 lw r1 PrintfValue r3 add r2 r2 r1 addi r3 r3 4 subi r6 r6 1 j Loop1 3 消除結(jié)構(gòu)相關(guān) 結(jié)構(gòu)相關(guān)的起因是資源爭(zhēng)用 考慮采用資源充分重復(fù)設(shè)置的方法來避免結(jié)構(gòu)相關(guān) 在本程序中產(chǎn)生結(jié)構(gòu)相關(guān)的原因是乘法器爭(zhēng)用 增加一個(gè)乘法器可以消除結(jié)構(gòu)相關(guān) 具體操作為 在 WinDLX 模擬器中選中 Configuration 菜單中的 Floating Point Stages Configuration 選項(xiàng) 在彈出的對(duì)話框中設(shè)置 6 程序流程圖 1 輸入函數(shù) Input s 流程圖 9 開始 輸入數(shù)字n1 n2 回車結(jié)束 初始化sum 0 j 1 取n j 其值是否為 10 為換行符 sum放入存儲(chǔ)器中 是 結(jié)束 n j n j 48 sum sum 10 n j j 否 2 主程序 Variance s 流程圖 10 開始 輸入數(shù)組 大小n i 1 是 否 初始化Loop1 循環(huán)數(shù)j n j 1 否 j j 1 是 結(jié)束 調(diào)用輸入 子函數(shù) 調(diào)用輸入子 函數(shù) 將輸入累加 求平均數(shù) 初始化Loop2 循環(huán)數(shù)k n K 1 否 k k 1 是 求第j個(gè)數(shù)與 平均數(shù)的差 將差的平方 累加 求出方差 初始化InputArray 循環(huán)數(shù)i n i i 1 11 八 實(shí)驗(yàn)結(jié)論 八 實(shí)驗(yàn)結(jié)論 1 程序的裝入要嚴(yán)格按照順序 順序?qū)⒂绊懗绦虻恼_執(zhí)行 2 程序執(zhí)行順序 部件的個(gè)數(shù)都會(huì)對(duì)程序的執(zhí)行產(chǎn)生影響 3 為減少數(shù)據(jù)相關(guān) 應(yīng)調(diào)整程序的執(zhí)行順序或采用定向技術(shù) 4 為減

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論