113 成大資工所硬體考點分析
光是是非題就佔 30 分(第 2 題 10 題+第 5 題 10 題)。第 4 題用「一道指令最多要重啟幾次」逼你算最少頁框數,間接定址那一層最容易漏。
題型與配分
科目:計算機組織與系統,系所「電機資訊學院-資訊聯招」,日期 0201、節次 1,全卷 100 分、4 頁、6 大題。不可使用計算機、於本試題紙上作答者不予計分。
| 題號 | 配分 | 主題 |
|---|---|---|
| 1 | 20% | 十個單選(特權指令、分層設計、死結、繫結) |
| 2 | 10% | 十個是非(OS 基本觀念) |
| 3 | 5% | 銀行家演算法的安全序列 |
| 4 | 15% | 需求分頁的指令重啟與最少頁框數 |
| 5 | 20% | 十個是非(計組基本觀念) |
| 6 | 30% | 迴圈最佳化、雙核與 SIMD 的加速比 |
是非題與單選題合計 50 分(第 1 題 20 + 第 2 題 10 + 第 5 題 20),是成大硬體十年裡客觀題比重最高的一年。
OS 與計組的比重:OS 50%(第 1、2、3、4 題)、計組 50%(第 5、6 題)。
第 1 題:十個單選(20%)
- (1)|關於特權指令哪個是錯的——關鍵分界:「無法嘗試執行」與「可以嘗試但會觸發陷阱」是兩件事
- (2)|訊息傳遞模型的特性——要能列出它與共享記憶體在速度、實作難度、跨機器適用性上的三組取捨
- (3)|分層式 OS 設計的主要困難——要能說出這個架構在設計階段最棘手的那一步
- (4)|boot block 的職責——它本身很小,所以只能做最低限度的一件事
- (5)|「什麼機制讓 OS 服務可以動態載入」——與 113 年中正第 1(3) 題的 Linux 架構是同一組觀念
- (6)|資源配置圖中的環代表什麼——要分清「每種資源只有一個實例」與「多個實例」兩種情況下,環是充要條件還是只是必要條件
- (7)|絕對碼(absolute code)在哪一種位址繫結下產生——三種繫結時機(編譯期/載入期/執行期)各自產出什麼樣的碼,要能對應
- (8)|動態連結函式庫的實作機制——「stub」是關鍵詞,要能說出它在第一次呼叫時做了什麼
- (9)|UNIX 的
vfork()與fork()有何不同——關鍵在對位址空間的處理。與台大 108 年第 7(b4) 題是同一個考點 - (10)|Belady's anomaly 的定義——要能說出「哪個量增加、哪個量反而上升」,以及它只發生在哪一類演算法上
第 2 題:十個是非(10%)
十個敘述涵蓋的主題:
- (1) SSD 的揮發性
- (2) 程序的 effective UID 在執行期間會不會改變(要想到 setuid)
- (3) Mac OS X 的核心架構
- (4) 許多 OS 把 I/O 裝置與檔案合併成統一抽象
- (5) 具名管線的通訊需不需要父子關係(要跟一般管線對照)
- (6) 對 POSIX 共享記憶體的每次存取是否都需要系統呼叫
- (7) 典型 Linux 系統的第一個程序
- (8) one-to-one 與 many-to-one 模型的並行性比較
- (9) 平行應用開發的趨勢(隱式執行緒)
- (10) Grand Central Dispatch 的執行緒模型
全部是 Silberschatz 正文的細節,每題 1 分但涵蓋面很廣。(2) 與 (6) 的關鍵字分別是「一直」與「所有」,這種全稱用語要特別小心。
第 3 題:銀行家演算法(5%)
四個程序 P1–P4、三種資源 A/B/C,給 Allocation、Max 與 Available (1,1,2)。要先建出 Need 矩陣(題目有提示),再判斷是否存在安全序列。
第 4 題:需求分頁的指令重啟與最少頁框(15%)
- (1) 5%|執行
Add A, B, C(即 C = A + B)時,最多可能重啟幾次指令?(假設含指令的那一頁已在記憶體中)。要數出這道指令總共會碰到幾個可能不在記憶體中的頁 - (2) 5%|若考慮間接定址
ADD (A), (B), (C),執行這道指令至少需要幾個頁框?間接定址讓每個運算元的存取多了一層,這是本題唯一的考點;這一小題沒有排除指令本身那一頁 - (3) 5%|現代系統傾向使用更大的頁面(因為 CPU 與記憶體容量成長遠快於磁碟速度)。請提出採用大頁的三個優點與兩個缺點。可以從頁表大小、TLB、磁碟 I/O、碎裂、頁錯誤代價幾個面向去想
第 5 題:十個是非(20%)
十個敘述涵蓋的主題:
- (1) 快取是用哪一種記憶體技術建造的
- (2) 執行時間、CPU 時間、MIPS、時脈週期數是否全都是良好的跨處理器比較指標
- (3) 通用暫存器架構的例子
- (4) 對整數有效的平行執行策略是否對浮點也有效(要想到浮點運算的性質)
- (5) 延遲分支對長管線處理器是否有用
- (6) 高階語言的抽象能不能讓程式設計師完全不考慮記憶體行為
- (7) OS 是不是排程磁碟存取的最佳位置(與 112 年第 1(7) 題呼應)
- (8) 指令數與 CPI 是否互相獨立
- (9) 處理器效能通常靠降低時脈率來改善
- (10) 1 GHz 是否一定比 800 MHz 快
幾個判斷點:(2) 要逐一檢查四個指標而不是整體判斷;(5) 要想清楚管線長度與延遲槽數量的關係;(10) 是 CPU 效能方程式的基本應用。這些都是跨校高頻陷阱。
第 6 題:迴圈最佳化與平行加速(30%)
程式為 for(i=0;i<1000;i++) for(j=0;j<1000;j++) A[i][j] = B[i][j]*100+20;,陣列元素是 32-bit 整數。
- (1) 10%|編譯器常用什麼最佳化技術減輕分支懲罰?請寫出最佳化後的程式碼。改寫時要注意迴圈次數能不能被整除
- (2) 10%|雙核處理器上平行執行相對於循序執行的理想加速比、為什麼(無控制危障、記憶體失誤開銷可忽略)。理由要寫出來:先論證各次迭代彼此獨立,才有資格談理想加速比
- (3) 10%|單核加上 128-bit SIMD 引擎的效能比、為什麼。關鍵是 SIMD 暫存器寬度與單一元素寬度的關係,題目特別給了元素是 32-bit
這份考卷的難點
- 第 4(2) 題的「最少頁框數」要想到間接定址會多一層存取。 只算一層的人會少算一半,而且別忘了指令本身。
- 第 5(5) 題的延遲分支:延遲分支的效果跟管線長度有關,要想清楚管線變長時延遲槽會變成怎樣、編譯器還填不填得滿。
- 第 5(4) 題的浮點平行歸約是近年跨校共同的高頻考點。
- 客觀題佔 50 分但涵蓋面極廣:從 Mach 微核心、Grand Central Dispatch、具名管線,到記憶體技術、延遲分支、MIPS 指標。任一小題只有 1–2 分,但總量很大,靠的是課本讀得夠廣。
準備建議
- 113 年是成大硬體客觀題最多的一年(50 分),而且題目來源是 Silberschatz 與 Patterson & Hennessy 的正文細節。是非題與單選題要靠「讀得廣」而不是「算得準」
- 需求分頁的最少頁框數(第 4(2) 題)要會推,特別是間接定址的情況
- 大頁的優缺點(第 4(3) 題)是跨校高頻題(成大 108 年第 4(4) 題也考過同一個方向)
- 迴圈最佳化的三種加速(第 6 題):迴圈展開、多核平行、SIMD。這三個在成大 108、110、113 年反覆出現
- 跨校共同的計組陷阱要整理成清單:快取用的記憶體技術、MIPS 指標的侷限、浮點運算的結合律、L1 與 L2 的設計目標、延遲分支與管線長度
- vfork 與 fork 的差別(第 1(9) 題)——台大 108 年也考,是跨校共同考點