




已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀
計算機體系結(jié)構(gòu)作業(yè)答案(高性能).pdf.pdf 免費下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1 作作 業(yè)業(yè) 第一講 計算機系統(tǒng)基礎(chǔ)第一講 計算機系統(tǒng)基礎(chǔ) 1 1 在三臺不同指令系統(tǒng)的計算機上運行同一程序 P 時 A 機需要執(zhí)行 1 0 10 8條指令 B 機 需要執(zhí)行 2 0 10 8條指令 C 機需要執(zhí)行 4 0 108條指令 但實際執(zhí)行時間都是 10 秒 請分 別計算這三臺機器在實行程序 P 時的實際運行速度 以 MIPS 為單位 這三臺計算機在運行 程序 P 時 哪臺性能最高 為什么 2 2 如果要給標量處理器增加向量運算部件 并且假定向量模式的運算速度是標量模式的 8 倍 這里把向量模式所占的百分比時間稱作向量化百分比 a 畫出一張圖來表示加速比和向量化百分比的關(guān)系 X 軸為向量化百分比 Y 軸為加速比 b 向量化百分比為多少時 加速比能達到 2 當加速比達到 2 時 向量模式占了運算運行 時間的百分之多少 向量化百分比為多少時 加速比能達到最大加速比的一半 c 假設程序的向量化百分比為 70 如果需要繼續(xù)提升處理器的性能 一種方法是增加硬 件成本將向量部件的速度提高一倍 另外一種方法是通過改進編譯器來提高向量模式的 應用范圍 那么需要提升多少向量化百分比才能得到與向量部件運算速度提高一倍得到 相同的性能 你推薦哪一種設計方案 3 3 假設有一個代表典型應用的基準測試程序 一款不包含浮點部件的處理器 可以通過整 數(shù)指令的模擬來執(zhí)行浮點指令 運行該基準程序的運行速度是 120MIPS 在該處理器上增加 浮點協(xié)處理器后運行該基準程序的運行速度是 80MIPS 下面給出了一些參數(shù) I 基準測試 中整數(shù)指令的數(shù)目 F 基準測試中浮點指令的數(shù)目 Y 模擬一條浮點指令需要的整數(shù)指令 的數(shù)目 W 無浮點協(xié)處理器時基準程序的運行時間 B 有浮點協(xié)處理器時基準程序的運行 時間 a 用上面的參數(shù)符號表示出兩種配置處理器的 MIPS 值 b 在沒有協(xié)處理器的配置下 假定 F 8 10 6 Y 50 W 4 秒 求 I 的值 c 在上題的條件下 求 B 的值 d 在包含協(xié)處理器的配置下 系統(tǒng)的 MFLOPS 是多少 e 你的同事想要購買這種協(xié)處理器來提高性能 而該配置下 MIPS 降低了 請問他的決策 正確嗎 解釋你的觀點 4 4 假設晶片成品率的經(jīng)驗公式如下 晶片成品率 1 b 晶片面積 a a 其中 a 4 是衡 量工藝復雜度的參數(shù) a 假設每 cm 2晶圓的成本為 c 缺陷密度為 b 0 6 cm2 利用電子表格 計算當晶片面積 2 從 0 5cm 2變化到 4cm2時晶片的成本 然后 適用數(shù)學分析工具擬合出晶片成本和面積關(guān) 系的多項式曲線 使其與電子表格中計算出來的數(shù)據(jù)相吻合 b 假設缺陷密度更高 b 2 0 cm 2 求最接近的最低次數(shù)的多項式 5 5 對某處理器進行功耗測試 得到如下數(shù)據(jù) 時鐘不翻轉(zhuǎn) 電壓 1 2V 時 電流為 500mA 時鐘頻率為 1GHz 電壓 1 2V 時 電流為 2500mA 請計算此處理器的靜態(tài)功耗以及 500MHz 下的總功耗 6 6 證明以下結(jié)論 a N 個正數(shù)的幾何平均小于算術(shù)平均 b 用歸一化的 SPEC CPU2000 程序分值進行 A B 兩臺機器的性能比較與所使用的參考機無 關(guān) 7 7 試討論馮 諾伊曼結(jié)構(gòu)的主要特點 a 查閱資料 分別給出一款 Intel AMD IBM 商業(yè)處理器的峰值性能和訪存帶寬 b 分析這 3 種處理器的訪存帶寬和存儲層次參數(shù) 一級 cache 大小和延遲 二級 cache 大 小和延遲等 之間的關(guān)系 8 8 在一臺個人計算機上 如 Pentium 4 Core Opteron 的 CPU a 查閱相關(guān)資料 給出該機器的浮點運算峰值 3 第二講 二進制與邏輯電路第二講 二進制與邏輯電路 9 9 定點數(shù)的表示 a 分別給出 64 位定點原碼和補碼表示的數(shù)的范圍 解 2 63 263 1 b 在 32 位定點補碼表示中 0 x80000000 表示什么數(shù) 解 2 31 10 10 浮點數(shù)的表示 a 把單精度數(shù)轉(zhuǎn)化為十進制數(shù) 0 x7ff0000 0 xbe400000 0 xff800000 解 0 x7ff0000 0 0000 1111 111 1111 0000 0000 0000 0000 1 1111111 2 2 15 127 3 8368135610839464260099560574934e 34 0 xbe400000 1 0111 1100 100 0000 0000 0000 0000 1 1 2 2 124 127 0 1875 0 xff800000 1 1111 1111 000 0000 0000 0000 0000 b 把雙精度數(shù)轉(zhuǎn)化為十進制數(shù) 0 x4035000000000000 0 x8008000000000000 解 0 x4035000000000000 0 10000000011 0101000000000000000000000000000000000000 000000000000 1 0101 2 2 1027 1023 21 0 x8008000000000000 1 00000000000 1000000000000000000000000000000000000000 000000000000 0 1 2 2 1022 2 1023 c 把十進制數(shù)轉(zhuǎn)化為單精度數(shù) 100 0 0 25 解 100 0 1 100100 2 2 6 0b1 10000101 10010000000000000000000 0 xc2c80000 0 25 1 0 2 2 0b0 01111101 00000000000000000000000 0 x3e800000 d 把十進制數(shù)轉(zhuǎn)化為雙精度數(shù) 1024 0 0 25 解 1024 0 1 0 2 10 0 x4090000000000000 0 25 1 0 2 2 0 x3fd0000000000000 11 11 畫出 e a b c d 的晶體管級電路圖 解 4 VDD GND a b a b VDD GND c d c d VDD GND e 12 12 計算一個 FO4 的延遲 假設反向器的輸入電容為 0 0036pf 平均每個負載連線電容為 0 0044pf 翻轉(zhuǎn)延遲為 0 023ns 每 pf 延遲為 4 5ns 解 FO4 指的是某類型的電路單元驅(qū)動四個相同類型的電路單元 FO4 延遲 本征延遲 負載延遲 0 023 4 5 0 0036 0 0044 4 0 167ns 13 13 分析 CMOS EDFF 觸發(fā)器的建立時間 保持時間 和 CLK Q 的構(gòu)成 對于下圖的電路 假設反相器的延遲為 1ns 傳輸門從源到漏 或從漏到源 的延遲為 0 5ns 傳輸門從柵到漏 或源 的延遲為 0 75ns 不考慮由于 latch 的 fight 對反相器延遲的影響 請從概念上 分析此電路的 setup 時間和 hold 時間為多少 給出分析過程 5 解 傳輸門的結(jié)構(gòu) 許多數(shù)字電路設計都是以庫單元為基本單位 這些庫單元將傳統(tǒng)的晶體管電路設計 封 裝 起來 只提供數(shù)字電路設計者所關(guān)心的時序 面積 功耗等信息 正是這種 封裝 促進了數(shù)字電路 EDA 工具的發(fā)展 解放了電路設計人員的生產(chǎn)力 極大豐富電子芯片種類和 數(shù)量 本題深入到庫單元內(nèi)部的電路結(jié)構(gòu) 討論數(shù)字電路設計者所看到的某觸發(fā)器建立時間 保持時間和 CLK Q 時間等時序的形成原因 數(shù)字電路設計者看到的 封裝 后的觸發(fā)器如下圖所示 而題中所給圖是該觸發(fā)器內(nèi)部電路結(jié)構(gòu)圖 觸發(fā)器內(nèi)部的兩個傳輸門控制端信號 C 和 CN 就是時鐘信號形成的 它控制電路相應部分的開啟和關(guān)閉 我們先觀察觸發(fā)器內(nèi)部時鐘 延遲 6 CK C 經(jīng)過兩級反相器 1 1 2 ns CK CN 經(jīng)過一級反相器和兩級傳輸門 傳輸門的輸入到輸出延遲就是傳輸門源到漏 或漏到源 的時間 參考傳輸門晶體管結(jié)構(gòu) 1 0 5 0 5 2 ns 觀察如上圖所示的觸發(fā)器結(jié)構(gòu)圖 在 C 1 CN 0 時 前級傳輸門打開 D 端數(shù)據(jù)進入 N1 打破 N1 和 N2 之間的反相器環(huán) 強制將 N1 處狀態(tài)改成與 D 端相同 N2 處狀態(tài)改為與 D 端相反 反相器環(huán)維持新的狀態(tài) 由于后級傳輸門關(guān)斷 N2 處狀態(tài)無法傳播到 N3 處 當 C 0 CN 1 時 前級傳輸門關(guān)閉 D 端數(shù)據(jù)無法影響觸發(fā)器內(nèi)部狀態(tài) 而后級傳輸門打開 觸 發(fā)器狀態(tài)則通過 N3 N4 和 Q 輸出 同時 N3 和 N4 間反相器環(huán)狀態(tài)也被打破更改為與 N2 相符 當下一個 C 1 CN 0 關(guān)閉后級傳輸門時 N3 和 N4 間反相器環(huán)仍能保持狀態(tài)并驅(qū)動 Q 端 建立時間指的是在時鐘觸發(fā)沿 此題為下降沿 到來之前數(shù)據(jù) D 端 必須穩(wěn)定的時間 換句話說 此觸發(fā)器的建立時間就是在時鐘信號到達 CK 端之前 將觸發(fā)器內(nèi)部 N1 及 N2 狀 態(tài)改變并穩(wěn)定為與 D 端數(shù)據(jù)相符所需的時間 這樣 D 端數(shù)據(jù)必須通過 D N0 N1 N2 才能真正改變觸發(fā)器內(nèi)部狀態(tài) 但即使如此 由于 N1 和 N2 間反相器環(huán)驅(qū)動能力不能確定 為保守起見 還需要加上 N2 N1 時間 此外考慮到接口處 CK 端時鐘信號到 C 和 CN 的傳 播時延 如果 C 和 CN 的傳播時延不一 可能導致傳輸門輸出弱 1 或弱 0 情況 仍從保守情 況出發(fā)取兩者的較小值 另外還要算上傳輸門控制端柵到漏 源 的延遲 這樣 該觸發(fā)器 建 立 時 間Tsetup TD N0 N1 N2 N1 min TCK C TCK CN Ttran 1 0 5 1 1 min 2 2 0 75 0 75 ns 保持時間指的是在時鐘觸發(fā)沿到來之后數(shù)據(jù)必須保持不變的時間 換句話說 此觸發(fā)器 7 的保持時間就是在時鐘信號到達 CK 端之后 D 端需要等待多長時間 使得即使其數(shù)據(jù)變化 也不影響觸發(fā)器內(nèi)部狀態(tài) 反過來想 那什么情況下 D 端數(shù)據(jù)變化可能會影響內(nèi)部狀態(tài)呢 只有當前級傳輸門在完全關(guān)斷之前 D 端數(shù)據(jù)已經(jīng)進入到 N1 進而才有可能對內(nèi)部狀態(tài)產(chǎn)生 影響 所以只需保證在前級傳輸門關(guān)斷時變化的 D 端數(shù)據(jù)不進入 N1 即可 此外也要考慮到 時鐘信號的傳播延遲 仍從保守情況出發(fā)取兩者較大值 加上傳輸門控制端柵到漏 源 的 延遲 這樣 Thold max TCK C TCK CN Ttran TD N0 N1 max 2 2 0 75 1 0 5 1 25ns CK Q 時間指的是時鐘觸發(fā)沿到來之后 Q 端輸出新的觸發(fā)器狀態(tài)所需的時間 只有當 后級傳輸門打開后 Q 端才有可能與觸發(fā)器內(nèi)部狀態(tài)相符 也就是 C 1 0 CN 0 1 時鐘 下降沿時 這時候 N2 處的狀態(tài)需要通過 N2 N3 N4 Q 此時由于后級傳輸門出于 打開狀態(tài) N3 N4 處的反相器環(huán)一般不可能再破壞這個新狀態(tài) 此外仍出于保守考慮時鐘信 號的傳播延遲取較大值 并加上傳輸門控制端柵到漏 源 的延遲 這樣 該觸發(fā)器 CK Q 時 間 TCK Q max TCK C TCK CN Ttran TN2 N3 N4 Q max 2 2 0 75 0 5 1 1 5 25ns 第三講第三講 指令系統(tǒng)結(jié)構(gòu)指令系統(tǒng)結(jié)構(gòu) 14 14 給定下面的代碼片段 A B C D A C B D A a 分別寫出上述代碼片段在四種指令系統(tǒng)類型 堆棧型 累加器型 寄存器 存儲器型 寄存器 寄存器型 下的匯編語言代碼 b 假設操作碼占用 8 位編碼 內(nèi)存地址和操作數(shù)都是 16 位 寄存器型結(jié)構(gòu)有 16 個通用寄 存器 對每種結(jié)構(gòu)回答以下問題 1 需要讀取多少指令字節(jié) 2 與內(nèi)存交換的數(shù)據(jù)有 多少字節(jié) 3 依據(jù)代碼量衡量哪種結(jié)構(gòu)最好 4 依據(jù)與內(nèi)存交換的數(shù)據(jù) 指令和數(shù)據(jù) 量衡量哪種結(jié)構(gòu)最好 解 stack acc R M R R Push B Push C Sub Pop A Load C Neg Add B Store A Load R1 B Sub R1 C Store R1 A Sub R1 C Load R1 B Load R2 C Sub R3 R1 R2 Store R3 A 8 Push A Push C Sub Pop D Push D Push A Add Pop B Load C Neg Add A Store D Add A Store B Store R1 D Add R1 A Store R1 B Sub R4 R3 R2 Store R4 D Add R5 R4 R3 Store R5 B 1 30 18 2 24 16 3 28 14 4 29 10 15 15 16 進制數(shù) 0 x4C4F4F4E47534F4E 要存在 64 位雙字中 a 假設存儲是 8 字節(jié)對齊的 請依據(jù)小尾端的格式將此 16 進制數(shù)寫入內(nèi)存中 并將每個 字節(jié)解釋為一個 ASCII 字符寫在對應的字節(jié)下邊 解 Address 0 xxx000 0 xxx001 0 xxx010 0 xxx011 0 xxx100 0 xxx101 0 xxx110 0 xxx111 0 x 4E 4F 53 47 4E 4F 4F 4C b 按照大尾端的格式重做上題 解 Address 0 xxx000 0 xxx001 0 xxx010 0 xxx011 0 xxx100 0 xxx101 0 xxx110 0 xxx111 0 x 4C 4F 4F 4E 47 53 4F 4E 16 16 根據(jù) MIPS 指令的編碼格式回答下列問題 a 條件轉(zhuǎn)移指令的跳轉(zhuǎn)范圍 解 16 2 位 256KB 128KB 指令都是字節(jié)對齊的 即尋址時都是字節(jié)字節(jié)尋址 所以尋址范圍為 以下同 b 直接跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍 解 26 2 位 256MB 128MB 9 17 17 用 MIPS 的 LWL LWR SWL SWR 指令編寫一段程序 把內(nèi)存單元 1005 1008 的值取到 R1 并存到內(nèi)存單元 2005 2008 解 小尾端下 dli r2 1005 lwr r1 0 x0 r2 lwl r1 0 x3 r2 dli r2 2005 swr r1 0 x0 r2 swl r1 0 x3 r2 18 18 用 MIPS 的 LL SC 指令編寫一段從內(nèi)存單元 100 R2 取數(shù) 把取出來的數(shù)加 100 并存回 到 100 R2 的原子操作代碼 并說明如果在此過程中處理器發(fā)生終端或該單元被其它處理器 修改時處理器如何保證上述操作的原子性 解 1 ll r1 100 r2 add r1 r1 100 sc r1 100 r2 beqz r1 1b nop 如果在 ll 和 sc 之間 含 ll 和 sc 發(fā)生了中斷或者其他處理器修改 100 r2 則 sc 之后 r1 會變 0 回到標號 1 重新執(zhí)行 19 19 列出 X86 和 MIPS 的所有減法指令 包括不同字長 定點和浮點 不同尋址方式等 并 比較它們的異同 解 的減法指令如下 的減法指令如下 定點減法 定點減法 10 影響 被影響 模式下例外 模式下例外 11 模式下例外 模式下例外 同模式 模式例外 浮點減法指令如下 浮點減法指令如下 和將定點轉(zhuǎn)化為的擴展雙精度浮點格式 影響 12 浮點例外 模式下例外 模式下例外 模式下例外 模式下例外 同模式 模式例外 13 的減法如下 的減法如下 定點減法 定點減法 減法 例外 無符號減法 例外 減法 限制 例外 無符號減法 限制 例外 無 浮點減法浮點減法如下 如下 單精度 雙精度 并行單精度 將和的上下兩部分分別相減 限制 例外 浮點例外 和和減法指令比較 減法指令比較 字長 14 的定點減法指令支持位 位 位 位字長 而定點減法支持 位和位字長 浮點 的浮點減法指令均為位擴展雙精度格式 而浮點減法支持單精度 雙精 度和并行單精度格式 尋址方式 的減法只支持寄存器尋址 的定點減法支持寄存器尋址 立即數(shù)和內(nèi)存尋址方式 直接尋址 變址尋址 間接 尋址 基址尋址 基址加變址尋址 的浮點減法支持寄存器尋址 浮點寄存器棧 和內(nèi)存尋址方式 直接尋址 變址尋址 間接尋址 基址尋址 基址加變址尋址 其他區(qū)別 的定點減法會修改 浮點減法會修改 而的減法沒有 的減法和減法產(chǎn)生的例外由于體系結(jié)構(gòu)的不同而有很大不同 的減法會產(chǎn)生例外 例外 除了 在模式下之外 還會產(chǎn)生例外 例 外 所有的浮點減法還會產(chǎn)生 例 外 在模式下進行浮點減法還會產(chǎn)生 例外 的 和所有的浮點減法會觸發(fā)保留指令例外 和會 觸發(fā)溢出例外 浮點減法會觸發(fā)協(xié)處理器不可用例外和一些浮點例外 20 20 給出以下常見處理器中至少三種的 load use 延遲 Pentium III Pentium IV MIPS R10000 Alpha 21264 HP PA8000 Ultra Sparc III Itanium II Power IV AMD K8 解 Pentium 2cycle Pentium 4 2cycle fix 6cycle float Alpha21264 3cycle Itanium II 0cycle MIPS R10000 2cycle HP PA8000 2cycle Ultra Sparc III 2cycle Godson 2 Godson 3 3cycle fix 4cycle float 15 第四講第四講 靜態(tài)流水線靜態(tài)流水線 21 21 假定某 RISC 處理器為標準的五級流水線 IF ID EX MEM WB 結(jié)構(gòu) 并且包含旁路硬件 對于下列指令序列 LW R1 0 R0 LW R2 4 R0 ADD R3 R1 R2 a b e SW R3 12 R0 LW R4 8 R0 ADD R5 R1 R4 c b f SW R5 16 R0 分析上述指令序列之間的相關(guān) 并重排序執(zhí)行序列避免相關(guān) 重排序指令序列可以比原先指 令序列的執(zhí)行減少多少拍 22 22 對于下面的計算 A A B C A B 寫出 MIPS 程序代碼 并且畫出 5 級靜態(tài)流水線 無旁路 上的流水線狀態(tài) 23 23 對于向量加法 X i a X i Y i 假設 X Y 的首地址分別存在 R1 R2 a 的值存 在 F0 中 a 試寫出對應的 MIPS 匯編代碼 b 假設單發(fā)射流水線結(jié)構(gòu)為IF ID EX MEM WB 功能部件足夠 Load Store操作和整數(shù) 操作都花費 1 個時鐘周期 加法操作為 4 個周期 乘法操作為 10 個周期 給出第一個 循環(huán)所有指令的流水線時空圖 24 24 假定某 RISC 處理器為標準的五級流水線 IF ID EX MEM WB 結(jié)構(gòu) 該靜態(tài)流水線處理 器可配置包含硬件旁路電路 延遲槽 分支預測等技術(shù) 并假定所有的運算和訪存操作均為 一拍完成 下面的代碼在該處理器中執(zhí)行 Loop LD R1 0 R2 從地址 0 R2 處讀入 R1 DADDI R1 R1 4 R1 R1 4 SD 0 R2 R1 將 R1 存入地址 0 R2 處 DADDI R2 R2 4 R2 R2 4 DSUB R4 R3 R2 R4 R3 R2 BNEZ R4 Loop R4 不等于 0 時跳轉(zhuǎn)到 Loop 16 已知 R3 的初值為 R2 400 a 不使用旁路硬件 但在同一個周期內(nèi)寄存器的讀和寫能進行旁路 分支預測采用 not taken 策略 如果猜測錯誤則刷新 flushing 流水線上的錯誤指令 畫出這個指令序 列在 RISC 流水線上執(zhí)行的時序 并計算執(zhí)行這個循環(huán)需要多少個時鐘周期 b 使用旁路硬件 采用 taken 策略進行分支預測 如果猜測錯誤則刷新 flushing 流水 線上的錯誤指令 畫出這個指令序列在 RISC 上執(zhí)行的序列 并計算執(zhí)行這個循環(huán)需要 多少個時鐘周期 c 假設 RISC 流水線帶有單拍的分支延遲和前遞或旁路硬件 對包括延遲槽在內(nèi)的指令序 列進行調(diào)度 可以重排指令序列 并修改某些指令的操作數(shù) 但不能改變指令的數(shù)目和 采用別的指令 畫出該流水線的時序圖 并計算整個循環(huán)需要的時鐘周期數(shù) 25 25 許多指令集中都會有一條空操作指令 例如 MIPS 指令集中的 nop 指令 請給出設計空 指令的幾個作用 26 26 下面是靜態(tài)流水線章節(jié)中講述的 5 級流水處理器的部分 Verilog 代碼 a 碩士 請完善其中的 ALU 模塊 b 博士 請完善該 CPU 的代碼并并編寫一個定點乘法程序在該 CPU 模擬環(huán)境上正確執(zhí)行 注意 不用考慮 Forwarding ALU 部件可以直接用 號 每一級流水都要有有效位 0 號通 用寄存器的值恒為 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADD 0001 rd rs1 rs2 000 SUB 0010 rd rs1 rs2 000 AND 0011 rd rs1 rs2 000 OR 0100 rd rs1 rs2 000 NOT 0101 rd rs1 rs2 000 SL 0110 rd rs1 rs2 000 SR 0111 rd rs1 rs2 000 SRU 1000 rd rs1 rs2 000 ADDI 1001 rd rs1 imm LD 1010 rd base offset ST 1011 rd base offset BZ 1100 000 rs1 offset 17 BGT 1100 001 rs1 offset BLE 1100 010 rs1 offset timescale 1ns 10ps module system wire clock reset cpu cpu00 clock clock reset reset initial clock 1 b0 always 20 clock clock initial begin 0 reset 1 b1 70 reset 1 b0 end 18 endmodule module cpu clock reset input clock input reset wire 17 0 brbus wire 15 0 inst wire 2 0 ex dest mem dest wb dest wire 19 0 wbbus wire 55 0 idbus wire 39 0 exbus wire 39 0 membus fetch module fetch clock clock reset reset brbus brbus inst inst decode module decode clock clock reset reset inst inst ex dest ex dest mem dest mem dest wb dest wb dest wbbus wbbus brbus brbus idbus idbus alu module alu clock clock reset reset idbus idbus exbus exbus ex dest ex dest mem module mem clock clock reset reset exbus exbus membus membus mem dest mem dest wb module wb clock clock reset reset membus membus wbbus wbbus wb dest wb dest endmodule timescale 1ns 10ps module fetch module clock reset brbus inst 19 input clock input reset input 17 0 brbus output 15 0 inst reg 15 0 pc wire brbus valid wire brbus taken wire 15 0 brbus offset assign brbus valid brbus 17 assign brbus taken brbus 16 assign brbus offset brbus 15 0 Enter your statements here endmodule timescale 1ns 10ps module decode module clock reset inst ex dest mem dest wb dest wbbus brbus idbus input clock input reset input 15 0 inst input 2 0 ex dest mem dest wb dest input 19 0 wbbus output 55 0 idbus output 17 0 brbus reg 15 0 ir wire wbbus valid wire 2 0 wbbus dest wire 15 0 wbbus value 20 wire idbus valid wire 3 0 idbus op wire 2 0 idbus dest wire 15 0 idbus value1 wire 15 0 idbus value2 wire 15 0 idbus stvalue wire brbus valid wire brbus taken wire 15 0 brbus offset assign wbbus valid wbbus 19 assign wbbus dest wbbus 18 16 assign wbbus value wbbus 15 0 Enter your statements here assign brbus 17 brbus valid assign brbus 16 brbus taken assign brbus 15 0 brbus offset assign idbus 55 idbus valid assign idbus 54 51 idbus op assign idbus 50 48 idbus dest assign idbus 47 32 idbus value1 assign idbus 31 16 idbus value2 assign idbus 15 0 idbus stvalue endmodule timescale 1ns 10ps module alu module clock reset idbus exbus ex dest input clock 21 input reset input 55 0 idbus output 39 0 exbus output 2 0 ex dest wire idbus valid wire 3 0 idbus op wire 2 0 idbus dest wire 15 0 idbus value1 wire 15 0 idbus value2 wire 15 0 idbus stvalue wire exbus valid wire 3 0 exbus op wire 2 0 exbus dest wire 15 0 exbus exresult wire 15 0 exbus stvalue assign idbus valid idbus 55 assign idbus op idbus 54 51 assign idbus dest idbus 50 48 assign idbus value1 idbus 47 32 assign idbus value2 idbus 31 16 assign idbus stvalue idbus 15 0 Enter your statements here assign exbus 39 exbus valid assign exbus 38 35 exbus op assign exbus 34 32 exbus dest assign exbus 31 16 exbus exresult assign exbus 15 0 exbus stvalue endmodule 22 timescale 1ns 10ps module mem module clock reset exbus membus mem dest input clock input reset input 39 0 exbus output 39 0 membus output 2 0 mem dest wire exbus valid wire 3 0 exbus op wire 2 0 exbus dest wire 15 0 exbus exresult wire 15 0 exbus stvalue wire membus valid wire 3 0 membus op wire 2 0 membus dest wire 15 0 membus exresult wire 15 0 membus memresult assign exbus valid exbus 39 assign exbus op exbus 38 35 assign exbus dest exbus 34 32 assign exbus exresult exbus 31 16 assign exbus stvalue exbus 15 0 Enter your statements here assign membus 39 membus valid assign membus 38 35 membus op assign membus 34 32 membus dest assign membus 31 16 membus exresult assign membus 15 0 membus memresult 23 endmodule timescale 1ns 10ps module wb module clock reset membus wbbus wb dest input clock input reset input 39 0 membus output 19 0 wbbus output 2 0 wb dest wire membus valid wire 3 0 membus op wire 2 0 membus dest wire 15 0 membus exresult wire 15 0 membus memresult wire wbbus valid wire 2 0 wbbus dest wire 15 0 wbbus value assign membus valid membus 39 assign membus op membus 38 35 assign membus dest membus 34 32 assign membus exresult membus 31 16 assign membus memresult membus 15 0 Enter your statements here assign wbbus 19 wbbus valid assign wbbus 18 16 wbbus dest assign wbbus 15 0 wbbus value endmodule 24 timescale 1ns 10ps module rom raddr rout input 11 0 raddr output 15 0 rout reg 15 0 rom 4095 0 integer i initial begin readmemb rom vlog rom display nLoad rom successfully n n end assign rout rom raddr endmodule timescale 1ns 10ps module ram clock raddr rout wen waddr win input clock input wen input 15 0 win input 11 0 raddr input 11 0 waddr output 15 0 rout reg 15 0 ram 4095 0 assign rout ram raddr always posedge clock begin if wen begin ram waddr win end end 25 endmodule timescale 1ns 10ps module regfile clock raddr1 rout1 raddr2 rout2 wen waddr win input clock input wen input 15 0 win input 2 0 raddr1 raddr2 input 2 0 waddr output 15 0 rout1 rout2 reg 15 0 ram 7 0 assign rout1 ram raddr1 assign rout2 ram raddr2 always posedge clock begin ram 0 16 b0 if wen begin if waddr 0 ram waddr c 2 d d 1 3 b b d e 4 else 5 e e 1 6 f f e 7 c b f 8 b a f 假設只有 b 和 c 才會在后面的程序里繼續(xù)使用 并且假設在程序執(zhí)行期間沒有例外 請描述 出這些指令序列之間所有類型的相關(guān) 對于控制相關(guān) 說明如何保持結(jié)果的正確性前提下把 程序段提在 if 語句之前執(zhí)行 29 29 證明 如果如果數(shù)組元素 A a i b 和 A c i d 之間存在相關(guān) 那么 GCD c a 能夠整出 d b 30 30 請比較 Tomasulo 和計分牌方法分別是如何處理 RAW WAR 和 WAW 相關(guān)的 31 31 請簡述動態(tài)流水線中如何實現(xiàn)精確例外 32 32 以下這個循環(huán)是高斯消元法中的核心操作 稱為 DAXPY 循環(huán) 雙精度的 a 乘以 X 再加上 Y 以下代碼實現(xiàn)了對長度為 100 的向量進行 DAXPY 操作 Y a X Y bar L D F2 0 R1 取數(shù) X i MUL D F4 F2 F0 乘法操作 a X i L D F6 0 R2 取數(shù) Y i ADD D F6 F4 F6 加法操作 a X i Y i S D 0 R2 F6 存數(shù) Y i DADDUI R1 R1 8 X 的下標加 1 27 DADDUI R2 R2 8 Y 的下標加 1 DSGTUI R3 R1 800 測試循環(huán)是否結(jié)束 BEQZ R3 bar 如果循環(huán)沒有結(jié)束 轉(zhuǎn)移到 bar 在單發(fā)射靜態(tài)流水線上 假定浮點流水線的延遲如下表所示 分支指令在譯碼階段 ID 計 算結(jié)果 采用了分支延遲槽技術(shù) 整數(shù)操作在一拍之內(nèi)發(fā)射和完成 并且結(jié)果是完全旁路的 fully bypassed 產(chǎn)生結(jié)果的指令產(chǎn)生結(jié)果的指令 使用結(jié)果的指令使用結(jié)果的指令 延遲 時鐘周期 延遲 時鐘周期 FP ALU op Another FP ALU op 3 FP ALU op Store double 2 Load double FP ALU op 1 Load double Store double 0 a 把這個循環(huán)展開足夠的次數(shù) 要求消除所有停頓周期和循環(huán)開銷指令 循環(huán)將會被展開 多少次 寫出調(diào)度后的代碼 每產(chǎn)生一個結(jié)果需要多少執(zhí)行時間 b 寫出 DAXPY 循環(huán)在軟件流水后的代碼 可以省略軟件流水的裝入代碼和排空代碼 每產(chǎn) 生一個結(jié)果需要多少執(zhí)行時間 33 33 假設有一個如下圖所示的支持精確例外處理的浮點流水線 流水線分成發(fā)射 執(zhí)行并寫 回 以及提交三個階段 其中浮點加法部件延遲為 2 拍 即假設第 T 拍操作數(shù)準備好開始運 算 第 T 1 拍可以寫回結(jié)果 浮點乘法部件延遲為 3 拍 浮點操作隊列中已有圖中所示的 指令 請給出 6 拍內(nèi)每一拍的寄存器以及結(jié)果總線值的變化 28 第六講第六講 多發(fā)射結(jié)構(gòu)數(shù)據(jù)通路多發(fā)射結(jié)構(gòu)數(shù)據(jù)通路 34 34 假定一個 4 發(fā)射的處理器 每拍可以取指 4 條指令 譯碼 4 條指令 發(fā)射 4 條指令 提 交時從 Reorder Buffer 提交 4 條指令 在發(fā)射和提交時需要檢查哪些數(shù)據(jù)相關(guān) 試畫出發(fā) 射時和提交時相關(guān)的檢測硬件圖 解 發(fā)射時 檢查 4 條指令的源寄存器的狀態(tài)以判斷是否存在和之前的指令的 RAW 相關(guān) 判斷第 2 3 4 條指令的源寄存器是否和第 1 條指令的目的寄存器相關(guān) 判斷第 3 4 條指令的源寄存器是否和第 2 條指令的目的寄存器相關(guān) 判斷第 4 條指令的源寄存器是否和第 3 條指令的目的寄存器相關(guān) 提交時 按指令順序提交即可 35 35 在多發(fā)射亂序執(zhí)行的處理器上 編譯器的調(diào)度還需要嗎 舉例說明 解 需要 動態(tài)調(diào)度只能處理 200 條指令以內(nèi)的相關(guān) 編譯器可以在更大的范圍上進行調(diào)度 例 如死代碼刪除 軟流水等技術(shù)只能通過編譯器來實現(xiàn) 36 36 以下有 4 段 MIPS 代碼片段 每段包含兩條指令 1 DADDI R2 R2 2 LD R2 4 R2 2 DSUB R3 R1 R2 SD R2 7 R1 3 S D F2 7 R1 S D F2 200 R7 4 BLE R2 place SD R2 7 R2 a 分析上述 4 個代碼片段 給出可能的相關(guān)和解決辦法 解 1 存在 RAW 相關(guān)和 WAW 相關(guān) 可以通過寄存器重命名解決 2 不存在相關(guān) 3 訪存相關(guān) 可以通過維護處理器序的訪存隊列來解決 4 不存在相關(guān) 29 b 假設目標硬件的流水線是支持亂序執(zhí)行的雙發(fā)射結(jié)構(gòu) 每個代碼段的兩條指令能夠同時 發(fā)射嗎 解 不能 能 能 能 訪存相關(guān)一般都是同時發(fā)射 等發(fā)現(xiàn)沖突了再說 37 37 假設流水線延遲如下表所示 分支延遲為 1 個周期 沒有延遲槽 產(chǎn)生結(jié)果的指令產(chǎn)生結(jié)果的指令 使用結(jié)果的指令使用結(jié)果的指令 延遲 時鐘周期 延遲 時鐘周期 FP ALU op Another FP ALU op 3 FP ALU op Store double 3 Load double FP ALU op 1 Load double Store double 0 下面循環(huán)計算 Y i a X i Y i 高斯消元法中的關(guān)鍵一步 L L D F4 0 R2 讀 Y i L D F0 0 R1 讀 X i MUL D F0 F0 F2 求 a X i ADD D F0 F0 F4 求 a X i Y i S D F0 0 R2 保存 Y i DSUBUI R2 R2 8 DSUBUI R1 R1 8 BNEZ R1 L a 假設目標機器的流水線是單發(fā)射的 將次循環(huán)展開足夠的次數(shù) 使得代碼執(zhí)行沒有不必 要的延遲 寫出調(diào)度后的代碼并計算一個元素的執(zhí)行時間 b 假設目標機器的流水線是雙發(fā)射的 將次循環(huán)展開足夠的次數(shù) 使得代碼執(zhí)行沒有不必 要的延遲 寫出調(diào)度后的代碼并計算一個元素的執(zhí)行時間 c 自己寫一段與題中類似的 C 代碼 用 gcc 的不同優(yōu)化遍編譯后 查看匯編代碼 對不同 優(yōu)化遍進行比較 描述 gcc 做的優(yōu)化 解 a L L D F0 0 R1 L D F1 8 R1 MUL D F0 F0 F2 MUL D F1 F1 F2 L D F4 0 R2 L D F5 8 R2 ADD D F0 F0 F4 30 ADD D F1 F1 F5 DSUBUI R2 R2 16 DSUBUI R1 R1 16 S D F0 16 R2 S D F1 8 R2 BNEZ R1 L NOP 7 拍一個 b 依賴于哪些指令可以共同發(fā)射 定點 浮點和訪存各有幾個功能部件 c O0 X i 和 Y i 地址放在棧上 每次訪問需要兩次訪存 所有局部變量映射到內(nèi)存地址 而不是寄存器 因此每次訪問都必須要有 load store 沒有循環(huán)展開 延遲槽指令 nop O2 局部變量放在寄存器中 延遲槽用了起來但是沒有循環(huán)展開 38 38 一個 n 發(fā)射的處理器 流水線情況如下 取值 譯碼 重命名到物理寄存器后送入發(fā)射 隊列 發(fā)射隊列亂序發(fā)射 功能部件亂序執(zhí)行 亂序?qū)懟匚锢砑拇嫫?最后順序提交并釋放 物理寄存器 已知該處理器有 m 個邏輯寄存器 i 個功能部件 i n 每條指令從重命名 到寫回需要 t1 拍 從重命名到提交需要 t2 拍 為了能讓流水線滿負荷工作 最少需要多少 個物理寄存器 提示 并不是每個參數(shù)都有用 解 m n t2 39 39 設計一個采用如下結(jié)構(gòu)的流水線 畫出結(jié)構(gòu)圖并寫出每個流水階段的相應操作 a 采用物理寄存器堆重命名 b 保留站后讀寄存器 c 全局保留站 d 一個定點部件 一個浮點部件 一個訪存部件 e 雙發(fā)射 f 流水階段 取指 譯碼 包括重命名 發(fā)射 包括讀寄存器 執(zhí)行 包括寫回 提 交 解 31 32 40 40 請簡述 Intel 的 Nehalem 處理器核的多發(fā)射機制 Nehalem 做了哪些措施來配合高的發(fā) 射寬度 解 4 發(fā)射如圖 一條指令翻譯成多條 code 比較 branch 指令融合成一個 code 28 項 code 隊列維護循環(huán) L1 cache 32KB I 32KB D 4 cycle a 256KB L2 cache per core unshared 10 cycle and up to an 8MB L3 cache shared among all cores 30cycle 33 34 第七講第七講 轉(zhuǎn)移猜測轉(zhuǎn)移猜測 41 41 下表是轉(zhuǎn)移猜測的 Yeh 和 Patt 分類中根據(jù)轉(zhuǎn)移歷史表 BHT 和模式歷史表 PHT 的 不同組合形成的轉(zhuǎn)移猜測種類 PC 中用來索引 BHT 表的位數(shù)為低 6 位 索引 PHT 表的位數(shù) 為低 8 位 BHT 表每項 8 位 請畫出 SAs 轉(zhuǎn)移猜測的結(jié)構(gòu)圖 說明其基本原理 并計算該結(jié) 構(gòu)使用的存儲單元位數(shù) Global PHT Per address PHT Per set PHT Global BHT GAg Gap GAs FP ALU op PAg PAp PAs Load double SAg SAp SAs 解 BHT 2 6 8 512b PHT 2 8 28 2 131072b 共 131584b BHT 根據(jù)地址低 6 位選出一個 8 位向量 和地址低 8 位一起到 PHT 中選取 2 位飽和計數(shù) 42 42 考慮下面一段 MIPS 代碼 假設開始時 R1 寄存器存放值 a BNEZ R1 L1 分支 b1 a 0 DADDIU R1 R0 2 a 0 a 的值變?yōu)?2 L1 DSUBUI R2 R1 2 BNEZ R2 L2 分支 b2 a 2 L2 假定采用兩位分支預測器 第一位是程序中上一個分支未被執(zhí)行的預測情況 第二位是上一 個分支被執(zhí)行時的預測情況 假設初始預測位 NT NT 且 a 值以 0 1 0 1 的規(guī)律變化 畫出 轉(zhuǎn)移預測執(zhí)行情況表 并統(tǒng)計預測錯誤的數(shù)目 解 35 a b1 prediction b1 action New b1 prediction b2 prediction b2 action New b2 prediction 0 NT NT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 彈弓指 的護理及運動
- 2025至2030巴基斯坦基礎(chǔ)建設行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 商業(yè)綜合體的安全管理及風險控制策略研究報告
- 中藥與腸道微生態(tài)的關(guān)聯(lián)研究
- 2025至2030維生素口嚼片行業(yè)項目調(diào)研及市場前景預測評估報告
- 2025至2030中國自由飛行服行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國自動裝配機行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國自主無人機無線充電和基礎(chǔ)設施行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國腕式潛水電腦行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國能源行業(yè)市場發(fā)展分析及投資前景與投資策略報告
- 自由搏擊培訓方案
- 防火門安裝工程操作管理規(guī)程
- (2025)全國交管12123學法減分考試題庫附答案
- 虛擬現(xiàn)實行業(yè)標準-深度研究
- T-ZHCA 025-2023 化妝品抗氧化人體測試方法
- 包皮環(huán)切術(shù)的健康宣教
- 班級優(yōu)化大師使用培訓
- 醫(yī)院后勤保障與傳染病防控
- 北師版五年級下冊數(shù)學30道說理題
- 質(zhì)量管理的五年規(guī)劃
- 《商業(yè)攝影》課件
評論
0/150
提交評論