109 中興資工所硬體考點分析
唯一一份全申論的硬體卷。計組只佔 25 分(第 1–4 題),但要追蹤 MIPS 程式的記憶體內容、推導全加器的邏輯式。
題型與配分
科目名稱:資訊概論,學系「資訊科學與工程學系-甲組」,本科目不得使用計算機,全卷 5 頁、10 大題。
| 題號 | 配分 | 歸屬 | 主題 |
|---|---|---|---|
| 1 | 6% | 硬體 | MIPS 記憶體定址的逐步追蹤 |
| 2 | 6% | 硬體 | 指令格式與三種定址範圍 |
| 3 | 6% | 硬體 | 三層記憶體的平均存取時間 |
| 4 | 7% | 硬體 | 32-bit 加法溢位與全加器邏輯式 |
| 5–9 | 約 50% | 軟體 | Java 輸出、遞迴、建堆、最短路徑、排序穩定性 |
| 10 | 約 25% | OS | 非搶占排程 |
109 年的資訊概論是唯一一份全申論的卷子(其餘年度都是選擇題為主),而且計算機組織只佔 25 分(第 1–4 題)——這是中興硬體八年裡計組比重最低的一年。
沒有任何倒扣標示(全申論卷)。
第 1 題:MIPS 記憶體定址的逐步追蹤(6%)
給一段 MIPS 程式與初始記憶體內容,$t1 = 3000、$t2 = 3004:
lw $s1, 0($t1)
sub $s2, $s2, $s2
add $s2, $s2, 100
lw $s1, 0($s1)
add $s1, $s1, $s2
lw $s3, 0($t2)
add $s3, $s3, $s2
sw $s3, 4($s1)
sw $s1, 0($s1)
要逐條寫出每道指令做了什麼,並追蹤暫存器與記憶體的變化。
sub $s2,$s2,$s2是一個常見的慣用法,要看出它的效果- 第四行
lw $s1,0($s1)用的位址是前面剛載入的值——這是整題的關鍵,要看清楚$s1在這一行前後代表的是什麼 - 最後兩道
sw的目的位址都來自$s1,要用更新之後的值 - 另外,第三行寫的是
add搭配立即數,嚴格來說不符合 MIPS 的指令格式,作答時可以註明
這題考的是「暫存器內容隨指令改變」的追蹤能力,特別是「用載入的值當位址」的二次間接。
第 2 題:指令格式與定址範圍(6%)
給 MIPS 的三種指令格式表(R-format、I-format、J-format 的欄位寬度)。
- (a)|決定三種定址的最大範圍:(i) 立即數(immediate)、(ii) 位移(displacement)、(iii) PC 相對分支。要從格式表上找出各自用的欄位寬度,並注意有號或無號,以及 PC 相對分支的單位是位元組還是字
- (b)|判斷三道指令的型別:
sub $s2,$s2,$s2、lw $s1,100($s1)、beq $s0,$1,Exit。beq 的格式最常被歸錯
第 3 題:三層記憶體的平均存取時間(6%)
快取存取 10 ns;資料在主記憶體但不在快取時,要 30 ns 載入快取,然後重新發起參考;資料不在主記憶體時,要 12 ms 從磁碟取回,再 30 ns 複製到快取,然後重新發起參考。
- (a)(3%)|快取命中率 0.9、主記憶體命中率 0.6 時的平均存取時間(ns)。三個陷阱:
- 「重新發起參考」代表每一種失誤情況最後都還要再付一次快取存取的時間
- 主記憶體命中率 0.6 是「快取失誤之後」的條件機率,要乘上快取失誤率才是整體比例
- ms 與 ns 差了六個數量級,單位沒統一答案會完全離譜
- (b)(3%)|OS 如何在等待 12 ms 的磁碟載入期間改善 CPU 使用率?說明這個機制怎麼運作。要講到程序狀態的轉換、排程器的動作,以及磁碟傳輸完成時如何通知 OS
第 4 題:加法溢位與全加器(7%)
- (a)|
$s1 = 0100 0000 ... 0000、$s2 = 0111 1111 ... 1111,分別執行addu $s3, $s1, $s2與add $s4, $s1, $s2,問結果。考add與addu的差別——要先判斷兩個運算元當成有號數時是正是負、相加會不會溢位,再想清楚兩道指令在溢位時的行為有什麼不同 - (b)|寫出 1-bit 全加器的 CarryOut 與 Sum 的邏輯函式。可以從真值表推,兩個輸出都有不只一種等價的寫法
這份考卷的難點
- 第 3(a) 題的數量級差異極大。 快取、主記憶體、磁碟的延遲差了六個數量級,平均時間會被哪一項主導要看得出來。單位換算錯一次答案就完全不對。
- 第 4(a) 題要分清
add與addu。 很多人以為addu的「u」代表計算方式不同,實際上兩者的差別在別的地方。 - 第 1 題的二次間接。 先用
$s1當位址載入一個值,再把那個值當成新的位址,要逐條追蹤暫存器內容。 - 第 2(a) 題的 PC 相對範圍。 位移欄位的單位是什麼,決定了實際的位元組範圍要不要再乘一個係數。
準備建議
- 109 年是中興硬體唯一的全申論卷,而且計組只佔 25 分。但這 25 分全部是基本功:指令格式、定址範圍、記憶體階層、加法器邏輯
add與addu的差別(第 4 題)是 MIPS 最常被誤解的一組指令,要能說清楚兩者計算結果與例外行為各自是否相同- 三種定址範圍(第 2 題)要能從格式表自己推出來,不要只背數字
- 全加器的兩個邏輯式(第 4b 題)要能從真值表推導
- 含磁碟的多層平均存取時間(第 3 題):先把每一種情況的「總延遲」算清楚(含重新參考的時間),再用機率加權
- MIPS 程式的逐條追蹤(第 1 題)建議用表格記錄每道指令後各暫存器的值