110 中山資工所硬體考點分析
第 4 題一題 40 分要當系統工程師,從三種快取階層設計中算出位元數與存取時間,還要把每位元 0.01 美元的製造成本一起納入建議。
題型與配分
科目名稱:計算機結構【資工系碩士班甲組、乙組】,題號 434001,考試時間 100 分鐘。不可以使用計算機(問答申論題)。試題請隨卷繳回。
| 題號 | 配分 | 主題 |
|---|---|---|
| 1 | 10% | 五個單選(但要說明沒選的理由) |
| 2 | 30% | 單核 CPI 與雙核加速比 |
| 3 | 20% | GPU 的 GFLOP/s 吞吐量 |
| 4 | 40% | 記憶體階層的完整設計題(位元數、存取時間、成本) |
第 1 題的作答要求很特殊:「請解釋你「沒有選擇」的那些選項的理由」——不只要選對,還要說明其他三個選項為什麼錯。這是中山硬體八年唯一一次這樣要求。
第 4 題一題就佔 40 分,而且要同時考慮效能與製造成本給出設計建議。這是中山硬體八年裡配分最高的單一題目。
全卷純計算機結構,不考作業系統。
第 1 題:五個單選(10%,要解釋未選的理由)
- 1.1(2%)|128 MB 記憶體、每個 word 8 bytes,定址任一 word 至少要幾位元。陷阱是把它當成 byte 定址
- 1.2(2%)|TLB 失誤時哪個敘述為真。選項是把「TLB 失誤」推論過頭來設計的,要分清 TLB、頁表、快取、主記憶體各自的命中與失誤是獨立的事件
- 1.3(2%)|關於 Snoopy 一致性協定哪個為真。考匯流排上出現讀取失誤與寫入失誤時,其他快取各該怎麼反應
- 1.4(2%)|關於快取失誤哪個為真。涵蓋四種失誤(3C + 一致性)的定義、區塊過大的污染效應、提高關聯度降低的是哪一種失誤。假選項是把某種失誤的定義或對策安到別種身上
- 1.5(2%)|關於快取設計哪個為真。涵蓋快取存取管線化、迴圈交換(loop interchange)、way prediction。每一項最佳化都要對準它改善的是 AMAT 三個因子裡的哪一個
第 2 題:單核 CPI 與雙核加速比(30%)
base CPI = 1.0(所有參考都在主快取命中)、時脈 5 GHz、主記憶體存取 100 ns(含所有失誤處理)、每指令主快取失誤率 2%。
- 2.1(10%)|單層快取的單核 CPI。陷阱是失誤罰則的單位:題目給的是 ns,要先換算成週期數
- 2.2(20%)|從 1 核增加到 2 核、其餘設定不變,且 60% 的指令必須序列執行時的加速比。考 Amdahl's Law 在多核下的應用,要想清楚記憶體階層設定不變時,CPI 會不會影響加速比
第 3 題:GPU 的吞吐量(20%)
GPU 有 10 個 SIMD 處理器,每道 SIMD 指令寬度 32,每個 SIMD 處理器有 8 條 lane(單精度算術與 load/store)⇒ 每道未分歧的 SIMD 指令每 4 個週期產生 32 個結果。
條件:分歧分支使平均只有 80% 的執行緒活躍;70% 的 SIMD 指令是單精度算術、20% 是 load/store;平均 SIMD 指令發射率 0.85;GPU 時脈 1.5 GHz。
求 GFLOP/s 吞吐量。 出自 Hennessy & Patterson 第四章的 GPU 習題。題目給的每一個比例都要用上,漏乘任何一個都會錯;其中「只有 80% 的執行緒活躍」這個分歧懲罰最容易被忽略,而 load/store 那 20% 不算浮點運算。不能用計算器,數字要小心處理。
第 4 題:記憶體階層的完整設計(40%)
情境:你是系統工程師,要設計含 CPU、一或兩層快取、主記憶體與硬碟的階層。三種政策:
- 政策 1|只有 2-way 的 L1
- 政策 2|直接對映的 L1 + 2-way 的 L2
- 政策 3|2-way 的 L1 + 2-way 的 L2
規格:32-bit 機器、base CPI 1.0、時脈 5 GHz、每個快取區塊一個 word、L1 容量 8 KB、L2 容量 16 KB、頁面 212 bytes;TLB 與頁表都要有 dirty bit(write-back)、reference bit(近似 LRU)、valid bit 三個額外位元;L1 的 TLB 有 10 個條目、L2 的 TLB 有 20 個、頁表有 30 個條目,TLB 與頁表都用全關聯。
- 4.1(10%)|算出頁表、L1 的 TLB、L2 的 TLB 各需要多少位元。考全關聯結構的 tag 怎麼切,以及頁表與 TLB 在「需不需要存 tag」上的差別。三個額外位元每個條目都要算進去
- 4.2(10%)|用 2-way 組相聯時,L1(8 KB)與 L2(16 KB)各需要多少位元。標準的快取總位元數計算。兩小題的差別只在容量,可以互相驗算;write-back 的 dirty 位元別漏
- 4.3(20%)|給出設計建議,同時考慮效能與製造成本:
- 存取時間|L2 = 5 ns、主記憶體 = 100 ns、硬碟 = 1 µs;L1 與 L2 之間的傳輸時間忽略,主記憶體與最低層快取之間、以及與硬碟之間的傳輸都是 50 ns
- TLB 位於最低層快取,每次請求要先存取 TLB,TLB 失誤要花 10 ns 處理
- 失誤率|直接對映:L1 與其 TLB 都是 2%、L2 與其 TLB 都是 0.5%;2-way:L1 與其 TLB 都是 1%、L2 與其 TLB 都是 0.1%;主記憶體失誤率 0.1%
- 成本|每個位元的製造成本 0.01 美元
- 要做的事:對三種政策分別算出平均存取時間與總製造成本,再綜合判斷建議哪一種。題目沒有給「效能與成本怎麼加權」,所以最後的建議要寫清楚你的判斷準則,閱卷看的是推理是否完整
這份考卷的難點
- 第 4 題是一道 40 分的完整系統設計題,要算三種政策 × 兩個維度(效能、成本)。 位元數的計算涉及 TLB(全關聯、含三個額外位元)、頁表、L1、L2 四個結構,每一個的 tag 位元數都不同;存取時間又要把 TLB 失誤、各層失誤、傳輸時間逐層疊上去。不可使用計算器,工作量極大。
- 第 3 題的 GFLOP/s 要把好幾個係數串起來。 分歧造成的活躍比例最容易被漏掉。
- 第 1 題要解釋「沒有選擇的選項為什麼錯」。 這代表四個選項都要判斷並寫出理由,實際工作量是一般單選題的四倍。
- 第 2.1 題的失誤罰則要換算成週期。 換算後會發現 CPI 被拉高了一個數量級,這個落差本身就是題目要傳達的訊息:記憶體牆有多嚴重。
準備建議
- 中山硬體很愛「一題 30–40 分的完整設計題」(110 年第 4 題 40 分、109 年第 3 題的面積分配)。準備方向是練「把多個公式串成一條完整分析鏈」的能力
- TLB、頁表、快取三種結構的位元數組成(第 4.1、4.2 題)要分清楚:哪個需要 tag、哪個以索引直接定位、哪些控制位元要算進去
- GPU 吞吐量的計算(第 3 題):練 Hennessy & Patterson 的 GPU 章節習題,每個比例代表什麼物理意義要清楚
- 失誤罰則的單位換算(第 2 題):ns 與 cycles 之間的換算,中山八年反覆考
- Amdahl's Law 在多核下的應用(第 2.2 題)
- 快取失誤的四種分類(第 1.4 題)要分清各自的成因與對應的改善方法
- 100 分鐘寫四大題但第 4 題就佔 40 分——建議先把第 1、2、3 題做完,把大部分時間留給第 4 題