109 成大資工所硬體考點分析
只有 5 題、2 頁,全部是申論。第 3 題直接要你手寫一段 GPU 矩陣乘法程式,第 5 題整題在問檔案系統的多層快取。
題型與配分
考試科目:計算機組織與系統,系所「電機資訊學院-資訊聯招」,考試日期 0210、節次 1,全卷 100 分、2 頁、5 大題。本試題不可使用計算機。
| 題號 | 配分 | 主題 |
|---|---|---|
| 1 | 20% | CPU 與 GPU 的架構與管線比較 |
| 2 | 10% | 異質運算與資料平行運算的定義 |
| 3 | 20% | 手寫 GPU 矩陣乘法程式 |
| 4 | 20% | 讀者—寫者問題與號誌的硬體/軟體實作 |
| 5 | 30% | 檔案系統的多層快取 |
109 年是成大硬體的轉折點:106–108 都是「答案填進卷首表格」的格式,109 年起改成純申論,而且題數大幅減少(只有 5 題、2 頁)。
這一年 GPU 相關題佔了 50 分(第 1、2、3 題),是成大硬體十年裡 GPU 比重最高的一年。
OS 與計組的比重:計組 50%(第 1、2、3 題)、OS 50%(第 4、5 題)。
計算機組織考點
- 第 1 題(20%)|簡要說明並討論 CPU 與 GPU 的架構與管線。開放式論述,要自己組織比較的面向:設計目標、晶片面積分配、管線設計、執行模型、記憶體系統。只寫「GPU 核心比較多」拿不到多少分,要講到每個差異背後的設計取捨
- 第 2 題(10%)|兩個定義:
- (a) 異質運算(heterogeneous computing)
- (b) 資料平行運算(data parallel computing),最好能與另一種平行(task parallelism)對照著講
- 第 3 題(20%)|手寫一段 C 程式(用你熟悉的 GPU 程式框架擴充)做矩陣乘法:A 是 M×N、B 是 N×P,結果 C 是 M×P,CPU 由 GPU 加速。要同時寫出主機端與裝置端兩部分——主機端負責記憶體配置與搬移、kernel 的啟動設定;裝置端每條執行緒要算出自己負責的元素。最常被扣分的是漏掉邊界檢查,以及矩陣維度不是 block 大小的整數倍時的處理。這是成大硬體十年唯一一次要求手寫 GPU 程式
作業系統考點
- 第 4 題(20%)|看一段讀者—寫者的號誌實作回答四個小問(卷上給
wmut、rmut、rcount的完整程式): - (1) 5%|這段虛擬碼是不是讀者—寫者問題的最佳解、為什麼。先判斷它是哪一類讀者—寫者問題,再討論它的公平性
- (2) 5%|三條執行緒依序是 讀者 R1 → 寫者 W1 → 讀者 R2 準備進入臨界區,實際進入的順序是什麼。一定要照卷上的程式逐行模擬,特別留意
rcount的值會決定讀者要不要去等wmut——直覺的順序不一定是答案 - (3) 5%|實作號誌要用什麼特殊硬體指令
- (4) 5%|嵌入式平台沒有這些硬體指令時,用什麼軟體實作保證
wait()/signal()的原子性 - (1)(2) 是同一件事的兩個角度:(2) 的模擬結果就是 (1) 的論證證據
- 第 5 題(30%)|檔案系統的快取:
- (1) 10%|從磁碟把檔案資料讀進使用者空間應用時,除了處理器快取外還會經過哪些快取?什麼情況下寫入不會被這些軟體快取緩衝? 要從硬體、核心、使用者層函式庫三個層次去想,第二問考的是繞過快取的開檔旗標與同步寫入
- (2) 10%|同時快取程序頁面與檔案內容的虛擬記憶體技術叫什麼?在這種系統上,程序讀取大檔案並把資料存進 heap 會發生什麼事? 後半題要想清楚檔案內容與 heap 在實體記憶體裡各佔什麼、會不會互相競爭
- (3) 5%|檔案資料被兩個不同快取各存一份的情況叫什麼
- (4) 5%|用什麼技術避免 (3) 的情況?並畫出使用該技術的檔案 I/O 方塊圖。方塊圖是評分項目,要畫出資料實際走的路徑
這份考卷的難點
- 第 3 題要在考場上手寫一段完整的 GPU 程式。 沒寫過 CUDA/OpenCL 的人幾乎不可能拿到分數。主機端流程、執行緒索引、邊界檢查這三塊是骨架,寫得出骨架就有大部分分數。
- 第 4(2) 題的答案要靠逐行模擬。 三條執行緒的「準備順序」與「實際進入順序」不一定相同,這一小題就是 (1) 小題的具體演示。
- 第 5 題整題在問一條很少被完整教到的鏈路:從使用者層緩衝一路到磁碟快取,以及統一快取帶來的副作用。這是 Silberschatz 裡篇幅不多但成大特別重視的一節。
- 全卷只有 5 題、100 分,平均一題 20 分。任何一題答不出來就是 20% 直接歸零,容錯率極低。
準備建議
- 109 年起成大硬體改成純申論、題數少而配分大。每題 10–30 分,寫不出來就沒有部分分數可撿,準備時要確保覆蓋面完整
- GPU 的架構與程式模型是成大的招牌(109 年佔 50 分)。要能講出 SIMT、warp、latency hiding、shared memory、grid/block/thread 的階層,並能寫出矩陣乘法 kernel 的骨架
- 讀者—寫者問題的兩個版本(第 4 題)要分清各自會讓誰飢餓。成大直接考「這段程式是不是最佳解」
- 同步原語的硬體與軟體實作(第 4(3)(4) 題):硬體指令與純軟體演算法各要能舉出兩三種
- 檔案 I/O 的完整快取鏈路(第 5 題):要能畫出資料從磁碟到使用者緩衝區經過的每一層,以及怎麼繞過其中一層。這一塊在其他學校很少考,但成大考了 30 分
- 是非題與定義題要寫理由——成大歷年都明訂「explain your answer」