114 年 國立中正大學電機工程學系碩士班計算機工程組《計算機組織》
第 1 題20 分
- (20%) Assume the MIPS CPU's register is designed as in the diagram below. Please write down the data at (1), (2), (3), (4), and (5) with the conditions for:
(a) (5%) Normal condition D= 0, Clock= 1 steady, then changes to D= 1, Clock= 0.
(b) (5%) Normal condition D= 1, Clock= 1 steady, then changes to D= 0, Clock= 1.
(c) (5%) D= 1, Clock 1 steady, then reset the register.
(d) (5%) (Q, Q') = (1, 1) in the beginning, next D= 0, Clock = 1 steady.
🖼️【此處有附圖,請對照原卷】
Clock
D
(5)
S
(1)
R
Q
(2) D-(3)-Q'
Reset
(4)
登入後即可作答並保存紀錄。
核心觀念
本題是由 NAND 閘與交互回授構成的暫存器,不能把它當成「時脈為高電位時,輸出直接跟隨 」的電路。判斷各節點時,必須保留回授所儲存的狀態。
NAND 閘的運算為:
圖中的 Reset 為低電位有效:正常時為 ,重置時拉低為 。
解題方法
依原圖,六個邏輯閘皆為 NAND 閘;左側四個閘具有交互回授,右側兩個閘構成輸出鎖存器。 是 , 是 , 是 , 是 Reset, 是左下方 NAND 閘的輸出及其回授線。
令左上方 NAND 閘的輸出為 、 為 ,並以 表示 Clock、 表示 Reset。依接線可寫成:
因此,題目要求的順序為:
以下將(a)至(c)的正常起始狀態,取為題目所給的 值已經被有效時脈邊緣鎖存。
(a)原先 、Clock ,接著 、Clock
原先儲存 ,各節點為:
Clock 降為 後,兩個包含 Clock 輸入的 NAND 閘皆輸出 :
此時 、,所以:
右側在 時保持原值,故 、。代回輸出方程式亦成立。
(b)原先 、Clock ,接著 、Clock 仍為
原先儲存 ,各節點為:
改為 後,左下方輸出變成:
但 原先為 ,上方回授仍維持:
接著:
因此 、,右側仍為 、。Clock 持續為 ,沒有新的有效邊緣,因此不會改存 。
第 2 題20 分
- (20%) Consider two different implementations of the same instruction set architecture. The instructions can be divided into four classes according to their CPI (class A, B, C, and D). P1 with a clock rate of 2.5 GHz and CPIs of 1, 2, 3, and 3, and P2 with a clock rate of 3 GHz and CPIs of 2, 2, 2, and 2. Given a program with a dynamic instruction count of 1.0E6 instructions divided into classes as follows: 10% class A, 20% class B, 50% class C, and 20% class D.
(a) (10%) What is the global CPI for each implementation?
(b) (10%) Find the clock cycles required in both cases.
登入後即可作答並保存紀錄。
核心觀念
本題考查:
- 全域 CPI(global CPI)的加權平均
- CPU 所需時脈週期數的計算
全域 CPI 必須依各類指令所占比例加權:
程式執行所需的總時脈週期數為:
題目未要求執行時間,因此時脈頻率不直接影響時脈週期數;時脈頻率只有在計算執行時間時才會使用。
解題方法
(a)各實作的全域 CPI
各類指令比例為:
- Class A:
- Class B:
- Class C:
- Class D:
實作 P1
P1 的各類 CPI 為 ,因此:
所以:
實作 P2
P2 的四類 CPI 皆為 :
第 3 題20 分
- (20%) Consider the following MIPS loop as:
LOOP: slt 0, t2, t1, s2, t1 is initialized to the value 10. What is the value in register s2 is initially zero?
(b). (10%) For each of the loops above, write the equivalent C code routine. Assume that the registers t1, and $t2 are integers B, i, and temp, respectively.
登入後即可作答並保存紀錄。
核心觀念
slt $t2, $0, $t1 會在 $t1 > 0 時將 $t2 設為 1,否則設為 0。接著 beq $t2, $0, DONE 在 $t2=0 時跳出迴圈;只有 $t1>0 時,才會執行遞減 $t1 與累加 $s2。
解題方法
每次迴圈先檢查 $t1 是否大於 0。若成立,執行:
$t1 \leftarrow $t1 - 1$s2 \leftarrow $s2 + 2
初始 $t1=10,因此更新與累加各執行 10 次。由 $s2=0$ 開始:
迴圈結束時 $t1=0$,下一次檢查使 $t2=0$,程式跳至 DONE。
等價 C 程式與複雜度
第 4 題20 分
- (20%) Please calculate follows in binary and then represent in IEEE 754 single precision binary formats:
(a). (10%) -0.4375×0.75, (b). (10%) 2.75 / 0.125.
登入後即可作答並保存紀錄。
本題考查浮點數的二進位轉換與 IEEE 754 單精度格式表示。
核心觀念:
- 十進位轉二進位:
- 整數部分:使用除以 2 取餘數法。
- 小數部分:使用乘以 2 取整數部分法。
- IEEE 754 單精度格式:
- 共 32 位元。
- 符號位元 (Sign bit, S):1 位元。0 為正,1 為負。
- 指數位元 (Exponent bits, E):8 位元。採用偏移表示法 (biased representation),偏移值為 127。實際指數 。
- 尾數/分數位元 (Mantissa/Fraction bits, F):23 位元。表示規格化數字時,隱含一個前導的 '1'。數字形式為 。
- 浮點數乘法與除法:
- 乘法:
- 符號:相乘。
- 指數:相加 (加上偏移值)。
- 尾數:相乘。
- 除法:
- 符號:相除。
- 指數:相減 (減去偏移值)。
- 尾數:相除。
- 結果正規化:乘法或除法後,結果的尾數可能需要正規化,調整指數。
- 乘法:
(a) -0.4375 × 0.75
步驟 1:將十進位數轉換為二進位
-
-0.4375
- 符號:負數,S = 1。
- 0.4375:
- (整數部分 0)
- (整數部分 1)
- (整數部分 1)
- (整數部分 1)
- 所以,。
- 正規化:。
- 指數 。
- 偏移指數 。
- 二進位表示 :。
- 尾數 : 的小數部分是 (共 23 位)。
- 所以, 的 IEEE 754 表示為:
1 01111101 11000000000000000000000
-
0.75
- 符號:正數,S = 0。
- 0.75:
- (整數部分 1)
- (整數部分 1)
- 所以,。
- 正規化:。
- 指數 。
- 偏移指數 。
- 二進位表示 :。
- 尾數 : 的小數部分是 (共 23 位)。
- 所以, 的 IEEE 754 表示為:
0 01111110 10000000000000000000000
步驟 2:計算乘法
- 符號 (S):負數 正數 = 負數。所以結果的 S = 1。
- 指數 (E):
- 結果的實際指數 。
- 結果的偏移指數 。
- 二進位表示 :。
- 尾數 (F):
- 兩個數的尾數部分是 和 。
- 將它們乘以:。
- 。
- 。
- 。
- 將 轉換為二進位:
- 。
- (整數部分 1)
- (整數部分 0)
- (整數部分 1)
- 所以,。
- 正規化:。
- 結果的實際指數是 。
- 檢查指數計算是否一致:我們之前計算的 。這裡計算出 。這是因為尾數相乘後需要正規化,這會改變指數。
- 正確的指數計算方法:
- , 。
- 相乘的尾數是 和 。
- 。
- 正規化 。
- 所以,結果是 。
- 實際指數 。
- 偏移指數 。
- 二進位表示 :。
- 尾數 : 的小數部分是 (共 23 位)。
步驟 3:組合 IEEE 754 表示
- S = 1
- E = 01111101
- F = 01010000000000000000000
最終結果:1 01111101 01010000000000000000000
第 5 題20 分
- (20%) we assume that the following MIPS code is executed on a pipelined processor with a 5-stage
pipeline, full forwarding, and a predict-taken branch predictor:
lw r2, 0(r1)
label1: beq r2, r0, label2 # not taken once, then taken
lw r3, 0(r2)
beq r3, r0, labell # taken
and r1, r3, rl
label2: sw r1, 0(r2)
(a). (10%) Draw the pipeline execution diagram for this code, assuming there are no delay slots and that
branches execute in the EX stage.
(b). (10%) Repeat question (a), but assume that delay slots are used. In the given code, the instruction that
follows the branch is now the delay slot instruction for that branch.
登入後即可作答並保存紀錄。
核心觀念
五級 MIPS 管線依序為 IF(取指)、ID(解碼與讀暫存器)、EX(運算)、MEM(記憶體存取)、WB(寫回)。
本題須同時處理三件事:
- 載入後立即使用的資料相依:即使有完整轉送,
lw的資料仍要到 MEM 結束才產生。因此緊接著使用載入結果的beq,必須停滯一個週期。 - 預測跳躍與誤預測:分支在 EX 結束時確認結果;若預測錯誤,清除錯誤路徑,下一個週期就取正確路徑的指令。
- 分支延遲槽:有延遲槽時,分支後面緊接的一條指令,不論分支是否跳躍都必須執行;預測的目標指令在延遲槽之後取指。
解題方法
原卷指定:第一個 beq r2, r0, label2 第一次不跳、第二次跳;第二個 beq r3, r0, label1 跳躍。第二個分支的目標是 label1,其後指令是 and r1, r3, r1。
採用分支目標可立即供取指使用的時序:無延遲槽時,分支取指後下一週期取預測目標;有延遲槽時,先取延遲槽,再取預測目標。假設指令與資料記憶體不發生結構冒險。
以下用代號表示指令:
| 代號 | 指令 |
|---|---|
lw r2, 0(r1) | |
第一次、第二次執行 beq r2, r0, label2 | |
第一次、第二次執行 lw r3, 0(r2) | |
beq r3, r0, label1 | |
and r1, r3, r1 | |
正確路徑的 sw r1, 0(r2) | |
誤預測路徑的 sw r1, 0(r2) |
表中的「停」表示停滯或保持,「×」表示該指令於該週期結束被清除;分支列中的 MEM、WB 僅表示通過管線階段,沒有記憶體存取或暫存器寫回。
(a) 無延遲槽
實際執行的指令順序為:
- 的載入結果於 cycle 4 的 MEM 結束產生,故 在 cycle 4 停留於 ID,於 cycle 5 的 EX 使用轉送資料。
- 被預測為跳躍,先取到 ;cycle 5 確認不跳後,清除錯誤路徑,cycle 6 立即取 。
- 與 又形成載入後立即使用的相依,因此 停滯一個週期,在 cycle 10 的 EX 判定跳躍。
- 預測正確,已取到目標 ; 也預測正確,最後執行 。
and不會執行。
| 指令\週期 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| IF | ID | EX | MEM | WB | — | — | — | — | — | — | — | — | |
| — | IF | ID | ID停 | EX | MEM | WB | — | — | — | — | — | — | |
| — | — | IF | IF停 | ID× | — | — | — | — | — | — | — | — | |
| — | — | — | — | — | IF | ID | EX | MEM | WB | — | — | — | |
| — | — | — | — | — | — | IF | ID | ID停 | EX | MEM | WB | — | |
| — | — | — | — | — | — | — | IF | IF停 | ID | EX | MEM | WB | |
| — | — | — | — | — | — | — | — | — | IF | ID | EX | MEM |
因此,最後的 sw 於 cycle 13 的 MEM 完成寫入。