計(jì)算機(jī)體系結(jié)構(gòu)作業(yè)答案(高性能).pdf_第1頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)作業(yè)答案(高性能).pdf_第2頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)作業(yè)答案(高性能).pdf_第3頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)作業(yè)答案(高性能).pdf_第4頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)作業(yè)答案(高性能).pdf_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

計(jì)算機(jī)體系結(jié)構(gòu)作業(yè)答案(高性能).pdf.pdf 免費(fèi)下載

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

文檔簡(jiǎn)介

1 作作 業(yè)業(yè) 第一講 計(jì)算機(jī)系統(tǒng)基礎(chǔ)第一講 計(jì)算機(jī)系統(tǒng)基礎(chǔ) 1 1 在三臺(tái)不同指令系統(tǒng)的計(jì)算機(jī)上運(yùn)行同一程序 P 時(shí) A 機(jī)需要執(zhí)行 1 0 10 8條指令 B 機(jī) 需要執(zhí)行 2 0 10 8條指令 C 機(jī)需要執(zhí)行 4 0 108條指令 但實(shí)際執(zhí)行時(shí)間都是 10 秒 請(qǐng)分 別計(jì)算這三臺(tái)機(jī)器在實(shí)行程序 P 時(shí)的實(shí)際運(yùn)行速度 以 MIPS 為單位 這三臺(tái)計(jì)算機(jī)在運(yùn)行 程序 P 時(shí) 哪臺(tái)性能最高 為什么 2 2 如果要給標(biāo)量處理器增加向量運(yùn)算部件 并且假定向量模式的運(yùn)算速度是標(biāo)量模式的 8 倍 這里把向量模式所占的百分比時(shí)間稱作向量化百分比 a 畫出一張圖來表示加速比和向量化百分比的關(guān)系 X 軸為向量化百分比 Y 軸為加速比 b 向量化百分比為多少時(shí) 加速比能達(dá)到 2 當(dāng)加速比達(dá)到 2 時(shí) 向量模式占了運(yùn)算運(yùn)行 時(shí)間的百分之多少 向量化百分比為多少時(shí) 加速比能達(dá)到最大加速比的一半 c 假設(shè)程序的向量化百分比為 70 如果需要繼續(xù)提升處理器的性能 一種方法是增加硬 件成本將向量部件的速度提高一倍 另外一種方法是通過改進(jìn)編譯器來提高向量模式的 應(yīng)用范圍 那么需要提升多少向量化百分比才能得到與向量部件運(yùn)算速度提高一倍得到 相同的性能 你推薦哪一種設(shè)計(jì)方案 3 3 假設(shè)有一個(gè)代表典型應(yīng)用的基準(zhǔn)測(cè)試程序 一款不包含浮點(diǎn)部件的處理器 可以通過整 數(shù)指令的模擬來執(zhí)行浮點(diǎn)指令 運(yùn)行該基準(zhǔn)程序的運(yùn)行速度是 120MIPS 在該處理器上增加 浮點(diǎn)協(xié)處理器后運(yùn)行該基準(zhǔn)程序的運(yùn)行速度是 80MIPS 下面給出了一些參數(shù) I 基準(zhǔn)測(cè)試 中整數(shù)指令的數(shù)目 F 基準(zhǔn)測(cè)試中浮點(diǎn)指令的數(shù)目 Y 模擬一條浮點(diǎn)指令需要的整數(shù)指令 的數(shù)目 W 無(wú)浮點(diǎn)協(xié)處理器時(shí)基準(zhǔn)程序的運(yùn)行時(shí)間 B 有浮點(diǎn)協(xié)處理器時(shí)基準(zhǔn)程序的運(yùn)行 時(shí)間 a 用上面的參數(shù)符號(hào)表示出兩種配置處理器的 MIPS 值 b 在沒有協(xié)處理器的配置下 假定 F 8 10 6 Y 50 W 4 秒 求 I 的值 c 在上題的條件下 求 B 的值 d 在包含協(xié)處理器的配置下 系統(tǒng)的 MFLOPS 是多少 e 你的同事想要購(gòu)買這種協(xié)處理器來提高性能 而該配置下 MIPS 降低了 請(qǐng)問他的決策 正確嗎 解釋你的觀點(diǎn) 4 4 假設(shè)晶片成品率的經(jīng)驗(yàn)公式如下 晶片成品率 1 b 晶片面積 a a 其中 a 4 是衡 量工藝復(fù)雜度的參數(shù) a 假設(shè)每 cm 2晶圓的成本為 c 缺陷密度為 b 0 6 cm2 利用電子表格 計(jì)算當(dāng)晶片面積 2 從 0 5cm 2變化到 4cm2時(shí)晶片的成本 然后 適用數(shù)學(xué)分析工具擬合出晶片成本和面積關(guān) 系的多項(xiàng)式曲線 使其與電子表格中計(jì)算出來的數(shù)據(jù)相吻合 b 假設(shè)缺陷密度更高 b 2 0 cm 2 求最接近的最低次數(shù)的多項(xiàng)式 5 5 對(duì)某處理器進(jìn)行功耗測(cè)試 得到如下數(shù)據(jù) 時(shí)鐘不翻轉(zhuǎn) 電壓 1 2V 時(shí) 電流為 500mA 時(shí)鐘頻率為 1GHz 電壓 1 2V 時(shí) 電流為 2500mA 請(qǐng)計(jì)算此處理器的靜態(tài)功耗以及 500MHz 下的總功耗 6 6 證明以下結(jié)論 a N 個(gè)正數(shù)的幾何平均小于算術(shù)平均 b 用歸一化的 SPEC CPU2000 程序分值進(jìn)行 A B 兩臺(tái)機(jī)器的性能比較與所使用的參考機(jī)無(wú) 關(guān) 7 7 試討論馮 諾伊曼結(jié)構(gòu)的主要特點(diǎn) a 查閱資料 分別給出一款 Intel AMD IBM 商業(yè)處理器的峰值性能和訪存帶寬 b 分析這 3 種處理器的訪存帶寬和存儲(chǔ)層次參數(shù) 一級(jí) cache 大小和延遲 二級(jí) cache 大 小和延遲等 之間的關(guān)系 8 8 在一臺(tái)個(gè)人計(jì)算機(jī)上 如 Pentium 4 Core Opteron 的 CPU a 查閱相關(guān)資料 給出該機(jī)器的浮點(diǎn)運(yùn)算峰值 3 第二講 二進(jìn)制與邏輯電路第二講 二進(jìn)制與邏輯電路 9 9 定點(diǎn)數(shù)的表示 a 分別給出 64 位定點(diǎn)原碼和補(bǔ)碼表示的數(shù)的范圍 解 2 63 263 1 b 在 32 位定點(diǎn)補(bǔ)碼表示中 0 x80000000 表示什么數(shù) 解 2 31 10 10 浮點(diǎn)數(shù)的表示 a 把單精度數(shù)轉(zhuǎn)化為十進(jì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)化為十進(jì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 把十進(jìn)制數(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 把十進(jìn)制數(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 的晶體管級(jí)電路圖 解 4 VDD GND a b a b VDD GND c d c d VDD GND e 12 12 計(jì)算一個(gè) FO4 的延遲 假設(shè)反向器的輸入電容為 0 0036pf 平均每個(gè)負(fù)載連線電容為 0 0044pf 翻轉(zhuǎn)延遲為 0 023ns 每 pf 延遲為 4 5ns 解 FO4 指的是某類型的電路單元驅(qū)動(dòng)四個(gè)相同類型的電路單元 FO4 延遲 本征延遲 負(fù)載延遲 0 023 4 5 0 0036 0 0044 4 0 167ns 13 13 分析 CMOS EDFF 觸發(fā)器的建立時(shí)間 保持時(shí)間 和 CLK Q 的構(gòu)成 對(duì)于下圖的電路 假設(shè)反相器的延遲為 1ns 傳輸門從源到漏 或從漏到源 的延遲為 0 5ns 傳輸門從柵到漏 或源 的延遲為 0 75ns 不考慮由于 latch 的 fight 對(duì)反相器延遲的影響 請(qǐng)從概念上 分析此電路的 setup 時(shí)間和 hold 時(shí)間為多少 給出分析過程 5 解 傳輸門的結(jié)構(gòu) 許多數(shù)字電路設(shè)計(jì)都是以庫(kù)單元為基本單位 這些庫(kù)單元將傳統(tǒng)的晶體管電路設(shè)計(jì) 封 裝 起來 只提供數(shù)字電路設(shè)計(jì)者所關(guān)心的時(shí)序 面積 功耗等信息 正是這種 封裝 促進(jìn)了數(shù)字電路 EDA 工具的發(fā)展 解放了電路設(shè)計(jì)人員的生產(chǎn)力 極大豐富電子芯片種類和 數(shù)量 本題深入到庫(kù)單元內(nèi)部的電路結(jié)構(gòu) 討論數(shù)字電路設(shè)計(jì)者所看到的某觸發(fā)器建立時(shí)間 保持時(shí)間和 CLK Q 時(shí)間等時(shí)序的形成原因 數(shù)字電路設(shè)計(jì)者看到的 封裝 后的觸發(fā)器如下圖所示 而題中所給圖是該觸發(fā)器內(nèi)部電路結(jié)構(gòu)圖 觸發(fā)器內(nèi)部的兩個(gè)傳輸門控制端信號(hào) C 和 CN 就是時(shí)鐘信號(hào)形成的 它控制電路相應(yīng)部分的開啟和關(guān)閉 我們先觀察觸發(fā)器內(nèi)部時(shí)鐘 延遲 6 CK C 經(jīng)過兩級(jí)反相器 1 1 2 ns CK CN 經(jīng)過一級(jí)反相器和兩級(jí)傳輸門 傳輸門的輸入到輸出延遲就是傳輸門源到漏 或漏到源 的時(shí)間 參考傳輸門晶體管結(jié)構(gòu) 1 0 5 0 5 2 ns 觀察如上圖所示的觸發(fā)器結(jié)構(gòu)圖 在 C 1 CN 0 時(shí) 前級(jí)傳輸門打開 D 端數(shù)據(jù)進(jìn)入 N1 打破 N1 和 N2 之間的反相器環(huán) 強(qiáng)制將 N1 處狀態(tài)改成與 D 端相同 N2 處狀態(tài)改為與 D 端相反 反相器環(huán)維持新的狀態(tài) 由于后級(jí)傳輸門關(guān)斷 N2 處狀態(tài)無(wú)法傳播到 N3 處 當(dāng) C 0 CN 1 時(shí) 前級(jí)傳輸門關(guān)閉 D 端數(shù)據(jù)無(wú)法影響觸發(fā)器內(nèi)部狀態(tài) 而后級(jí)傳輸門打開 觸 發(fā)器狀態(tài)則通過 N3 N4 和 Q 輸出 同時(shí) N3 和 N4 間反相器環(huán)狀態(tài)也被打破更改為與 N2 相符 當(dāng)下一個(gè) C 1 CN 0 關(guān)閉后級(jí)傳輸門時(shí) N3 和 N4 間反相器環(huán)仍能保持狀態(tài)并驅(qū)動(dòng) Q 端 建立時(shí)間指的是在時(shí)鐘觸發(fā)沿 此題為下降沿 到來之前數(shù)據(jù) D 端 必須穩(wěn)定的時(shí)間 換句話說 此觸發(fā)器的建立時(shí)間就是在時(shí)鐘信號(hào)到達(dá) CK 端之前 將觸發(fā)器內(nèi)部 N1 及 N2 狀 態(tài)改變并穩(wěn)定為與 D 端數(shù)據(jù)相符所需的時(shí)間 這樣 D 端數(shù)據(jù)必須通過 D N0 N1 N2 才能真正改變觸發(fā)器內(nèi)部狀態(tài) 但即使如此 由于 N1 和 N2 間反相器環(huán)驅(qū)動(dòng)能力不能確定 為保守起見 還需要加上 N2 N1 時(shí)間 此外考慮到接口處 CK 端時(shí)鐘信號(hào)到 C 和 CN 的傳 播時(shí)延 如果 C 和 CN 的傳播時(shí)延不一 可能導(dǎo)致傳輸門輸出弱 1 或弱 0 情況 仍從保守情 況出發(fā)取兩者的較小值 另外還要算上傳輸門控制端柵到漏 源 的延遲 這樣 該觸發(fā)器 建 立 時(shí) 間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 保持時(shí)間指的是在時(shí)鐘觸發(fā)沿到來之后數(shù)據(jù)必須保持不變的時(shí)間 換句話說 此觸發(fā)器 7 的保持時(shí)間就是在時(shí)鐘信號(hào)到達(dá) CK 端之后 D 端需要等待多長(zhǎng)時(shí)間 使得即使其數(shù)據(jù)變化 也不影響觸發(fā)器內(nèi)部狀態(tài) 反過來想 那什么情況下 D 端數(shù)據(jù)變化可能會(huì)影響內(nèi)部狀態(tài)呢 只有當(dāng)前級(jí)傳輸門在完全關(guān)斷之前 D 端數(shù)據(jù)已經(jīng)進(jìn)入到 N1 進(jìn)而才有可能對(duì)內(nèi)部狀態(tài)產(chǎn)生 影響 所以只需保證在前級(jí)傳輸門關(guān)斷時(shí)變化的 D 端數(shù)據(jù)不進(jìn)入 N1 即可 此外也要考慮到 時(shí)鐘信號(hào)的傳播延遲 仍從保守情況出發(fā)取兩者較大值 加上傳輸門控制端柵到漏 源 的 延遲 這樣 Thold max TCK C TCK CN Ttran TD N0 N1 max 2 2 0 75 1 0 5 1 25ns CK Q 時(shí)間指的是時(shí)鐘觸發(fā)沿到來之后 Q 端輸出新的觸發(fā)器狀態(tài)所需的時(shí)間 只有當(dāng) 后級(jí)傳輸門打開后 Q 端才有可能與觸發(fā)器內(nèi)部狀態(tài)相符 也就是 C 1 0 CN 0 1 時(shí)鐘 下降沿時(shí) 這時(shí)候 N2 處的狀態(tài)需要通過 N2 N3 N4 Q 此時(shí)由于后級(jí)傳輸門出于 打開狀態(tài) N3 N4 處的反相器環(huán)一般不可能再破壞這個(gè)新狀態(tài) 此外仍出于保守考慮時(shí)鐘信 號(hào)的傳播延遲取較大值 并加上傳輸門控制端柵到漏 源 的延遲 這樣 該觸發(fā)器 CK Q 時(shí) 間 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)類型 堆棧型 累加器型 寄存器 存儲(chǔ)器型 寄存器 寄存器型 下的匯編語(yǔ)言代碼 b 假設(shè)操作碼占用 8 位編碼 內(nèi)存地址和操作數(shù)都是 16 位 寄存器型結(jié)構(gòu)有 16 個(gè)通用寄 存器 對(duì)每種結(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 進(jìn)制數(shù) 0 x4C4F4F4E47534F4E 要存在 64 位雙字中 a 假設(shè)存儲(chǔ)是 8 字節(jié)對(duì)齊的 請(qǐng)依據(jù)小尾端的格式將此 16 進(jìn)制數(shù)寫入內(nèi)存中 并將每個(gè) 字節(jié)解釋為一個(gè) ASCII 字符寫在對(duì)應(yīng)的字節(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é)對(duì)齊的 即尋址時(shí)都是字節(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ā)生終端或該單元被其它處理器 修改時(shí)處理器如何保證上述操作的原子性 解 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 會(huì)變 0 回到標(biāo)號(hào) 1 重新執(zhí)行 19 19 列出 X86 和 MIPS 的所有減法指令 包括不同字長(zhǎng) 定點(diǎn)和浮點(diǎn) 不同尋址方式等 并 比較它們的異同 解 的減法指令如下 的減法指令如下 定點(diǎn)減法 定點(diǎn)減法 10 影響 被影響 模式下例外 模式下例外 11 模式下例外 模式下例外 同模式 模式例外 浮點(diǎn)減法指令如下 浮點(diǎn)減法指令如下 和將定點(diǎn)轉(zhuǎn)化為的擴(kuò)展雙精度浮點(diǎn)格式 影響 12 浮點(diǎn)例外 模式下例外 模式下例外 模式下例外 模式下例外 同模式 模式例外 13 的減法如下 的減法如下 定點(diǎn)減法 定點(diǎn)減法 減法 例外 無(wú)符號(hào)減法 例外 減法 限制 例外 無(wú)符號(hào)減法 限制 例外 無(wú) 浮點(diǎn)減法浮點(diǎn)減法如下 如下 單精度 雙精度 并行單精度 將和的上下兩部分分別相減 限制 例外 浮點(diǎn)例外 和和減法指令比較 減法指令比較 字長(zhǎng) 14 的定點(diǎn)減法指令支持位 位 位 位字長(zhǎng) 而定點(diǎn)減法支持 位和位字長(zhǎng) 浮點(diǎn) 的浮點(diǎn)減法指令均為位擴(kuò)展雙精度格式 而浮點(diǎn)減法支持單精度 雙精 度和并行單精度格式 尋址方式 的減法只支持寄存器尋址 的定點(diǎn)減法支持寄存器尋址 立即數(shù)和內(nèi)存尋址方式 直接尋址 變址尋址 間接 尋址 基址尋址 基址加變址尋址 的浮點(diǎn)減法支持寄存器尋址 浮點(diǎn)寄存器棧 和內(nèi)存尋址方式 直接尋址 變址尋址 間接尋址 基址尋址 基址加變址尋址 其他區(qū)別 的定點(diǎn)減法會(huì)修改 浮點(diǎn)減法會(huì)修改 而的減法沒有 的減法和減法產(chǎn)生的例外由于體系結(jié)構(gòu)的不同而有很大不同 的減法會(huì)產(chǎn)生例外 例外 除了 在模式下之外 還會(huì)產(chǎn)生例外 例 外 所有的浮點(diǎn)減法還會(huì)產(chǎn)生 例 外 在模式下進(jìn)行浮點(diǎn)減法還會(huì)產(chǎn)生 例外 的 和所有的浮點(diǎn)減法會(huì)觸發(fā)保留指令例外 和會(huì) 觸發(fā)溢出例外 浮點(diǎn)減法會(huì)觸發(fā)協(xié)處理器不可用例外和一些浮點(diǎn)例外 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 處理器為標(biāo)準(zhǔn)的五級(jí)流水線 IF ID EX MEM WB 結(jié)構(gòu) 并且包含旁路硬件 對(duì)于下列指令序列 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 對(duì)于下面的計(jì)算 A A B C A B 寫出 MIPS 程序代碼 并且畫出 5 級(jí)靜態(tài)流水線 無(wú)旁路 上的流水線狀態(tài) 23 23 對(duì)于向量加法 X i a X i Y i 假設(shè) X Y 的首地址分別存在 R1 R2 a 的值存 在 F0 中 a 試寫出對(duì)應(yīng)的 MIPS 匯編代碼 b 假設(shè)單發(fā)射流水線結(jié)構(gòu)為IF ID EX MEM WB 功能部件足夠 Load Store操作和整數(shù) 操作都花費(fèi) 1 個(gè)時(shí)鐘周期 加法操作為 4 個(gè)周期 乘法操作為 10 個(gè)周期 給出第一個(gè) 循環(huán)所有指令的流水線時(shí)空?qǐng)D 24 24 假定某 RISC 處理器為標(biāo)準(zhǔn)的五級(jí)流水線 IF ID EX MEM WB 結(jié)構(gòu) 該靜態(tài)流水線處理 器可配置包含硬件旁路電路 延遲槽 分支預(yù)測(cè)等技術(shù) 并假定所有的運(yùn)算和訪存操作均為 一拍完成 下面的代碼在該處理器中執(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 時(shí)跳轉(zhuǎn)到 Loop 16 已知 R3 的初值為 R2 400 a 不使用旁路硬件 但在同一個(gè)周期內(nèi)寄存器的讀和寫能進(jìn)行旁路 分支預(yù)測(cè)采用 not taken 策略 如果猜測(cè)錯(cuò)誤則刷新 flushing 流水線上的錯(cuò)誤指令 畫出這個(gè)指令序 列在 RISC 流水線上執(zhí)行的時(shí)序 并計(jì)算執(zhí)行這個(gè)循環(huán)需要多少個(gè)時(shí)鐘周期 b 使用旁路硬件 采用 taken 策略進(jìn)行分支預(yù)測(cè) 如果猜測(cè)錯(cuò)誤則刷新 flushing 流水 線上的錯(cuò)誤指令 畫出這個(gè)指令序列在 RISC 上執(zhí)行的序列 并計(jì)算執(zhí)行這個(gè)循環(huán)需要 多少個(gè)時(shí)鐘周期 c 假設(shè) RISC 流水線帶有單拍的分支延遲和前遞或旁路硬件 對(duì)包括延遲槽在內(nèi)的指令序 列進(jìn)行調(diào)度 可以重排指令序列 并修改某些指令的操作數(shù) 但不能改變指令的數(shù)目和 采用別的指令 畫出該流水線的時(shí)序圖 并計(jì)算整個(gè)循環(huán)需要的時(shí)鐘周期數(shù) 25 25 許多指令集中都會(huì)有一條空操作指令 例如 MIPS 指令集中的 nop 指令 請(qǐng)給出設(shè)計(jì)空 指令的幾個(gè)作用 26 26 下面是靜態(tài)流水線章節(jié)中講述的 5 級(jí)流水處理器的部分 Verilog 代碼 a 碩士 請(qǐng)完善其中的 ALU 模塊 b 博士 請(qǐng)完善該 CPU 的代碼并并編寫一個(gè)定點(diǎn)乘法程序在該 CPU 模擬環(huán)境上正確執(zhí)行 注意 不用考慮 Forwarding ALU 部件可以直接用 號(hào) 每一級(jí)流水都要有有效位 0 號(hào)通 用寄存器的值恒為 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 假設(shè)只有 b 和 c 才會(huì)在后面的程序里繼續(xù)使用 并且假設(shè)在程序執(zhí)行期間沒有例外 請(qǐng)描述 出這些指令序列之間所有類型的相關(guān) 對(duì)于控制相關(guān) 說明如何保持結(jié)果的正確性前提下把 程序段提在 if 語(yǔ)句之前執(zhí)行 29 29 證明 如果如果數(shù)組元素 A a i b 和 A c i d 之間存在相關(guān) 那么 GCD c a 能夠整出 d b 30 30 請(qǐng)比較 Tomasulo 和計(jì)分牌方法分別是如何處理 RAW WAR 和 WAW 相關(guān)的 31 31 請(qǐng)簡(jiǎn)述動(dòng)態(tài)流水線中如何實(shí)現(xiàn)精確例外 32 32 以下這個(gè)循環(huán)是高斯消元法中的核心操作 稱為 DAXPY 循環(huán) 雙精度的 a 乘以 X 再加上 Y 以下代碼實(shí)現(xiàn)了對(duì)長(zhǎng)度為 100 的向量進(jìn)行 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 的下標(biāo)加 1 27 DADDUI R2 R2 8 Y 的下標(biāo)加 1 DSGTUI R3 R1 800 測(cè)試循環(huán)是否結(jié)束 BEQZ R3 bar 如果循環(huán)沒有結(jié)束 轉(zhuǎn)移到 bar 在單發(fā)射靜態(tài)流水線上 假定浮點(diǎn)流水線的延遲如下表所示 分支指令在譯碼階段 ID 計(jì) 算結(jié)果 采用了分支延遲槽技術(shù) 整數(shù)操作在一拍之內(nèi)發(fā)射和完成 并且結(jié)果是完全旁路的 fully bypassed 產(chǎn)生結(jié)果的指令產(chǎn)生結(jié)果的指令 使用結(jié)果的指令使用結(jié)果的指令 延遲 時(shí)鐘周期 延遲 時(shí)鐘周期 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 把這個(gè)循環(huán)展開足夠的次數(shù) 要求消除所有停頓周期和循環(huán)開銷指令 循環(huán)將會(huì)被展開 多少次 寫出調(diào)度后的代碼 每產(chǎn)生一個(gè)結(jié)果需要多少執(zhí)行時(shí)間 b 寫出 DAXPY 循環(huán)在軟件流水后的代碼 可以省略軟件流水的裝入代碼和排空代碼 每產(chǎn) 生一個(gè)結(jié)果需要多少執(zhí)行時(shí)間 33 33 假設(shè)有一個(gè)如下圖所示的支持精確例外處理的浮點(diǎn)流水線 流水線分成發(fā)射 執(zhí)行并寫 回 以及提交三個(gè)階段 其中浮點(diǎn)加法部件延遲為 2 拍 即假設(shè)第 T 拍操作數(shù)準(zhǔn)備好開始運(yùn) 算 第 T 1 拍可以寫回結(jié)果 浮點(diǎn)乘法部件延遲為 3 拍 浮點(diǎn)操作隊(duì)列中已有圖中所示的 指令 請(qǐng)給出 6 拍內(nèi)每一拍的寄存器以及結(jié)果總線值的變化 28 第六講第六講 多發(fā)射結(jié)構(gòu)數(shù)據(jù)通路多發(fā)射結(jié)構(gòu)數(shù)據(jù)通路 34 34 假定一個(gè) 4 發(fā)射的處理器 每拍可以取指 4 條指令 譯碼 4 條指令 發(fā)射 4 條指令 提 交時(shí)從 Reorder Buffer 提交 4 條指令 在發(fā)射和提交時(shí)需要檢查哪些數(shù)據(jù)相關(guān) 試畫出發(fā) 射時(shí)和提交時(shí)相關(guān)的檢測(cè)硬件圖 解 發(fā)射時(shí) 檢查 4 條指令的源寄存器的狀態(tài)以判斷是否存在和之前的指令的 RAW 相關(guān) 判斷第 2 3 4 條指令的源寄存器是否和第 1 條指令的目的寄存器相關(guān) 判斷第 3 4 條指令的源寄存器是否和第 2 條指令的目的寄存器相關(guān) 判斷第 4 條指令的源寄存器是否和第 3 條指令的目的寄存器相關(guān) 提交時(shí) 按指令順序提交即可 35 35 在多發(fā)射亂序執(zhí)行的處理器上 編譯器的調(diào)度還需要嗎 舉例說明 解 需要 動(dòng)態(tài)調(diào)度只能處理 200 條指令以內(nèi)的相關(guān) 編譯器可以在更大的范圍上進(jìn)行調(diào)度 例 如死代碼刪除 軟流水等技術(shù)只能通過編譯器來實(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 個(gè)代碼片段 給出可能的相關(guān)和解決辦法 解 1 存在 RAW 相關(guān)和 WAW 相關(guān) 可以通過寄存器重命名解決 2 不存在相關(guān) 3 訪存相關(guān) 可以通過維護(hù)處理器序的訪存隊(duì)列來解決 4 不存在相關(guān) 29 b 假設(shè)目標(biāo)硬件的流水線是支持亂序執(zhí)行的雙發(fā)射結(jié)構(gòu) 每個(gè)代碼段的兩條指令能夠同時(shí) 發(fā)射嗎 解 不能 能 能 能 訪存相關(guān)一般都是同時(shí)發(fā)射 等發(fā)現(xiàn)沖突了再說 37 37 假設(shè)流水線延遲如下表所示 分支延遲為 1 個(gè)周期 沒有延遲槽 產(chǎn)生結(jié)果的指令產(chǎn)生結(jié)果的指令 使用結(jié)果的指令使用結(jié)果的指令 延遲 時(shí)鐘周期 延遲 時(shí)鐘周期 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)計(jì)算 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 假設(shè)目標(biāo)機(jī)器的流水線是單發(fā)射的 將次循環(huán)展開足夠的次數(shù) 使得代碼執(zhí)行沒有不必 要的延遲 寫出調(diào)度后的代碼并計(jì)算一個(gè)元素的執(zhí)行時(shí)間 b 假設(shè)目標(biāo)機(jī)器的流水線是雙發(fā)射的 將次循環(huán)展開足夠的次數(shù) 使得代碼執(zhí)行沒有不必 要的延遲 寫出調(diào)度后的代碼并計(jì)算一個(gè)元素的執(zhí)行時(shí)間 c 自己寫一段與題中類似的 C 代碼 用 gcc 的不同優(yōu)化遍編譯后 查看匯編代碼 對(duì)不同 優(yōu)化遍進(jìn)行比較 描述 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 拍一個(gè) b 依賴于哪些指令可以共同發(fā)射 定點(diǎn) 浮點(diǎn)和訪存各有幾個(gè)功能部件 c O0 X i 和 Y i 地址放在棧上 每次訪問需要兩次訪存 所有局部變量映射到內(nèi)存地址 而不是寄存器 因此每次訪問都必須要有 load store 沒有循環(huán)展開 延遲槽指令 nop O2 局部變量放在寄存器中 延遲槽用了起來但是沒有循環(huán)展開 38 38 一個(gè) n 發(fā)射的處理器 流水線情況如下 取值 譯碼 重命名到物理寄存器后送入發(fā)射 隊(duì)列 發(fā)射隊(duì)列亂序發(fā)射 功能部件亂序執(zhí)行 亂序?qū)懟匚锢砑拇嫫?最后順序提交并釋放 物理寄存器 已知該處理器有 m 個(gè)邏輯寄存器 i 個(gè)功能部件 i n 每條指令從重命名 到寫回需要 t1 拍 從重命名到提交需要 t2 拍 為了能讓流水線滿負(fù)荷工作 最少需要多少 個(gè)物理寄存器 提示 并不是每個(gè)參數(shù)都有用 解 m n t2 39 39 設(shè)計(jì)一個(gè)采用如下結(jié)構(gòu)的流水線 畫出結(jié)構(gòu)圖并寫出每個(gè)流水階段的相應(yīng)操作 a 采用物理寄存器堆重命名 b 保留站后讀寄存器 c 全局保留站 d 一個(gè)定點(diǎn)部件 一個(gè)浮點(diǎn)部件 一個(gè)訪存部件 e 雙發(fā)射 f 流水階段 取指 譯碼 包括重命名 發(fā)射 包括讀寄存器 執(zhí)行 包括寫回 提 交 解 31 32 40 40 請(qǐng)簡(jiǎn)述 Intel 的 Nehalem 處理器核的多發(fā)射機(jī)制 Nehalem 做了哪些措施來配合高的發(fā) 射寬度 解 4 發(fā)射如圖 一條指令翻譯成多條 code 比較 branch 指令融合成一個(gè) code 28 項(xiàng) code 隊(duì)列維護(hù)循環(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)移猜測(cè)轉(zhuǎn)移猜測(cè) 41 41 下表是轉(zhuǎn)移猜測(cè)的 Yeh 和 Patt 分類中根據(jù)轉(zhuǎn)移歷史表 BHT 和模式歷史表 PHT 的 不同組合形成的轉(zhuǎn)移猜測(cè)種類 PC 中用來索引 BHT 表的位數(shù)為低 6 位 索引 PHT 表的位數(shù) 為低 8 位 BHT 表每項(xiàng) 8 位 請(qǐng)畫出 SAs 轉(zhuǎn)移猜測(cè)的結(jié)構(gòu)圖 說明其基本原理 并計(jì)算該結(jié) 構(gòu)使用的存儲(chǔ)單元位數(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 位選出一個(gè) 8 位向量 和地址低 8 位一起到 PHT 中選取 2 位飽和計(jì)數(shù) 42 42 考慮下面一段 MIPS 代碼 假設(shè)開始時(shí) 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 假定采用兩位分支預(yù)測(cè)器 第一位是程序中上一個(gè)分支未被執(zhí)行的預(yù)測(cè)情況 第二位是上一 個(gè)分支被執(zhí)行時(shí)的預(yù)測(cè)情況 假設(shè)初始預(yù)測(cè)位 NT NT 且 a 值以 0 1 0 1 的規(guī)律變化 畫出 轉(zhuǎn)移預(yù)測(cè)執(zhí)行情況表 并統(tǒng)計(jì)預(yù)測(cè)錯(cuò)誤的數(shù)目 解 35 a b1 prediction b1 action New b1 prediction b2 prediction b2 action New b2 prediction 0 NT NT

溫馨提示

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