108 中山資工所硬體考點分析
五大題各 20 分、全是問答申論。第 1 題把 IEEE754 與定點數的「相鄰數間距」對照著問,是十年最完整的浮點題組。
題型與配分
科目名稱:計算機結構【資工系碩士班甲組、乙組】,題號 434001,考試時間 100 分鐘。本科目依簡章規定「不可以」使用計算機(問答申論題)。試題請隨卷繳回。
| 題號 | 配分 | 主題 |
|---|---|---|
| 1 | 20% | IEEE754 與定點數(十個小問) |
| 2 | 20% | 效能與 Amdahl's Law(四個小問) |
| 3 | 20% | 五級管線的頻率、吞吐量與合併級數 |
| 4 | 20% | 快取的位元數、AMAT 與兩層快取 |
| 5 | 20% | SIMD、控制危障、區域性、多重發射 |
中山硬體的三個固定規定(八年不變):
- 考試時間 100 分鐘(其他學校多為 100–120 分鐘,但中山的題數相對多)
- 不可以使用計算機
- 全部是問答申論題,沒有選擇題、沒有倒扣
而且科目標示為【資工系碩士班甲組、乙組】——甲乙兩組考同一份卷子(與中山的數學與軟體考科不同,那兩科是分組的)。
OS 與計組的比重:中山硬體是純計算機結構,完全不考作業系統(OS 被放在「作業系統與資料結構」那一科)。
第 1 題:IEEE754 與定點數(20%)
卷上先給完整的 IEEE754 單精度與雙精度格式對照表(含 zero、subnormal、infinity、NaN 的判定條件)。
- 1.1(2%)|單精度零的二進位表示。要注意零的表示方式不只一種
- 1.2(2%)|十進位 −0.5 的單精度表示。考正規化與指數偏移
- 1.3(2%)|一般數(normal)的最大量值
- 1.4(2%)|一般數的最小量值
- 1.5(2%)|非正規化數的最小量值
- 1.6(2%)|單精度浮點數的可表示範圍
- 1.3–1.6 四小題要對照卷上的格式表,逐一確認指數欄位與尾數欄位的極值。「一般數」與「非正規化數」的指數欄位允許範圍不同,是最常混淆的地方
- 1.7(2%)|相鄰兩個單精度浮點數的間距是否相同?為什麼。要從浮點數的結構(尾數位數固定、指數會變)去推
- 1.8(2%)|32-bit 二補數定點數(16 整數位 + 16 小數位)的相鄰間距是否相同?為什麼
- 1.9(2%)|該定點格式的可表示範圍。二補數的正負範圍不對稱,上界要小心
- 1.10(2%)|為什麼兩個 32-bit 定點數相加可在一個週期內完成,而兩個單精度浮點數相加通常要超過一個週期。要能把浮點加法器的各個步驟依序講出來,並說明為什麼這些步驟之間有先後相依
這一題把「浮點 vs 定點」的四個面向(間距、範圍、精度、運算複雜度)全部串起來,是中山硬體十年最完整的浮點題組。
第 2 題:效能與 Amdahl's Law(20%)
- 2.1(5%)|處理器 40% 時間在運算、60% 在等 I/O,換成快 10 倍的新處理器後的整體加速比。要先分清哪一部分被加速
- 2.2(5%)|用 100 個處理器要達到 80 倍加速,依 Amdahl's Law 序列部分最多能佔多少比例。反求比例的題型,式子列對之後的代數移項要小心
- 2.3(5%)|32 個處理器、遠端記憶體存取 200 ns、時脈 3.3 GHz、base CPI = 0.5、所有參考都在快取命中。比較「完全沒有通訊」與「0.2% 的指令涉及遠端通訊」的效能差異。遠端存取的延遲要先換算成時脈週期,再加進 CPI
- 2.4(5%)|25% 是浮點運算(平均 CPI 4.0)、其餘 CPI 1.33;浮點運算中有 2% 是除法(CPI = 20)。比較兩個設計方案:
- 方案 A|把浮點除法的 CPI 從 20 降到 2
- 方案 B|把所有浮點運算的平均 CPI 從 4.0 降到 2.5
- 要各自算出整體 CPI 再比較。「2% 是除法」是浮點運算裡的 2%,不是全部指令的 2%,這個比例代錯會得到完全不同的結論
第 3 題:五級管線(20%)
各級關鍵路徑延遲:IF 20 ns、ID 20 ns、EX 50 ns、MA 40 ns、WB 30 ns。
- 3.1(2%)|最高工作頻率
- 3.2(6%)|100 道指令、無危障時的吞吐量、總延遲、平均 CPI。第一道指令要填滿管線,這幾個週期別漏算
- 3.3(4%)|若要把五級合併成四級、以速度為第一優先,最好的設計是什麼?新設計的最高工作頻率是多少。要看合併哪兩級對時脈週期的影響最小,而且只能合併相鄰的級
- 3.4(4%)|什麼是資料危障?舉一個組合語言例子
- 3.5(4%)|什麼是超管線(super-pipeline)?優缺點是什麼。缺點至少要講到兩三點,而且要跟管線深度的增加連起來
第 4 題:快取(20%)
- 4.1(2%)|直接對映、16 KB 資料、16-byte 區塊、32-bit 位址、每區塊一個 valid 位元的總位元數。總位元數要把資料、tag、valid 都算進去
- 4.2(2%)|改成 2-way 的總位元數
- 4.3(2%)|改成全關聯 的總位元數
- 4.1–4.3 三小題的差別只在 index 與 tag 的切法,要看出關聯度變化時哪一個欄位在變
- 4.4(4%)|比較三種設計的優缺點;TLB 通常用哪一種?為什麼。要從 TLB 的大小與失誤代價兩個角度論證
- 4.5(2%)|AMAT:1 ns 週期、失誤罰則 20 cycles、每指令 0.05 次失誤、快取存取 1 cycle。題目給的是「每指令」的失誤次數,要想清楚能不能直接當成失誤率用
- 4.6(4%)|完美快取快多少:I-cache 失誤率 2%、D-cache 失誤率 4%、無停頓 CPI = 2、罰則 100 cycles、load/store 佔 36%。資料快取的失誤只發生在 load/store 上
- 4.7(2%)|兩層快取的 AMAT:1000 次參考中 L1 失誤 40 次、L2 失誤 20 次;L2 到記憶體的罰則 200 cycles、L2 命中時間 10 cycles、L1 命中時間 1 cycle。L2 的區域失誤率分母是什麼是這一題唯一的陷阱
- 4.8(2%)|每指令的平均停頓週期(每指令 1.5 次記憶體參考)。要把「每次參考」換成「每道指令」
第 5 題:綜合觀念(20%)
- 5.1(5%)|SIMD 的優點;CPU 的 SIMD 與 GPU 的 SIMD 有何差異。後半題要點出 GPU 實際上的執行模型,以及兩者在分支處理上的不同
- 5.2(5%)|什麼是控制危障?提出一個改善效能退化的方法
- 5.3(5%)|空間區域性與時間區域性的差異;舉兩個程式技巧說明。兩個技巧最好各自對應一種區域性
- 5.4(5%)|什麼是靜態多重發射?什麼是動態多重發射?比較差異。比較的軸線是「由誰、在什麼時候」決定發射,以及因此帶來的硬體複雜度與效能差異
這份考卷的難點
- 五大題各 20 分、沒有選擇題、100 分鐘要寫完 30 個小問。 中山硬體的最大壓力是時間——平均每個小問只有 3 分多鐘,而且不可使用計算機。
- 第 1.7 與 1.8 題的對照是全卷最漂亮的設計。 兩題要一起想,要能一句話說清楚兩種表示法在間距上為什麼不同。
- 第 3.3 題要看出合併哪兩級最划算。 合併之後新的一級延遲要跟原本最長的一級比較,合併錯的兩級會讓時脈大幅下降。
- 第 4.7 題的「L2 區域失誤率」容易誤算。 分母選錯就整題錯,題目有給提示,但很多人仍會拿總參考數當分母。
準備建議
- 中山硬體是純計算機結構、完全不考 OS(OS 在「作業系統與資料結構」那一科)。Patterson & Hennessy 要讀得非常熟
- 100 分鐘、不可用計算機、五大題全申論——時間是最大的敵人。建議按「每題 20 分鐘」硬性分配,寫不完的題目至少把公式與思路寫上去
- IEEE754 的各種邊界值要能從格式表自己推出來:零、最大/最小正規化數、最小非正規化數、可表示範圍
- 浮點與定點的四個對照(間距、範圍、精度、加法複雜度)是中山偏好的問法
- 快取總位元數的三種組態(4.1–4.3):關聯度改變時 index 與 tag 怎麼消長要熟練;TLB 為什麼用某一種組態要能講理由
- 兩層快取的區域失誤率與全域失誤率(4.7、4.8)要分清兩者的分母
- Amdahl's Law 的三種問法(2.1 求加速比、2.2 反求序列比例、2.4 比較兩個改善方案)都要練
- 管線合併級數的取捨(3.3):練習「合併哪兩級對時脈影響最小」這種判斷