112 成大資工所硬體考點分析
首度出現 10 題單選(20 分),內容偏 Silberschatz 的冷門細節。第 5 題要指出管線資料路徑上的 bug 並畫圖修正。
題型與配分
科目:計算機組織與系統,系所「電機資訊學院-資訊聯招」,日期 0206、節次 1,全卷 100 分、5 頁、6 大題。不可使用計算機、於本試題紙上作答者不予計分。
| 題號 | 配分 | 主題 |
|---|---|---|
| 1 | 20% | 十個單選(保護、檔案系統、I/O、Windows、spinlock) |
| 2 | 10% | Solaris 分派表的時間量子與優先權調整 |
| 3 | 10% | 儲存系統的長尾延遲 |
| 4 | 10% | 分頁、TLB 命中率、多層頁表層數 |
| 5 | 30% | 管線資料路徑(含找 bug 並畫圖修正) |
| 6 | 20% | 危障處理(NOP、重排、分支預測準確率) |
112 年是成大硬體十年裡唯一有「單選題」的一年(第 1 題 10 小題共 20 分)。其餘九年都是純申論或填表格。
第 1 題的十個單選幾乎全部出自 Silberschatz 的細節段落(Android 的保護模型、ISAM、Windows 的 dispatcher object、Linux spinlock),不是課堂重點但課本裡都有。
OS 與計組的比重:OS 50%(第 1、2、3、4 題)、計組 50%(第 5、6 題)。
第 1 題:十個單選(20%)
- (1)|保護與存取控制——涵蓋 Android 的 UID 隔離機制、MAC(強制存取控制)對 root 的限制、RBAC 對超級使用者風險的影響、能力式(capability-based)保護的實例。留意選項裡「增加」與「降低」風險的方向
- (2)|檔案系統與掛載,哪個是錯的——核心觀念:掛載是把檔案系統接到目錄樹上的動作
- (3)|檔案配置與空間管理——涵蓋 FAT 的結構、一致性檢查能不能「完全」復原、不可覆寫裝置還需要哪些機制、grouping 與 linked list 在找多個空閒區塊時的效率比較
- (4)|「統一虛擬記憶體用什麼機制同時快取程序頁與檔案資料」——與 109 年第 5(2) 題、中正 110 年第 1(3) 題與 112 年第 2 題都是同一個考點
- (5)|IBM 的 ISAM(索引循序存取法)——要能描述它的兩層索引結構:誰放在記憶體、誰放在磁碟、各指向什麼
- (6)|輪詢式 I/O 的主要低效來源——要能說出「浪費在哪裡」,而不只是說它慢
- (7)|磁碟排程演算法為何只考慮尋道距離——要能說出現代磁碟對 OS 隱藏了什麼。與中正 110 年第 1(5) 題一字不差
- (8)|一道指令會修改多個位置時,中途發生頁錯誤該如何處理——核心要求是「指令必須能被重新執行」
- (9)|Windows 的 dispatcher object 進入 signaled 狀態時會發生什麼——要分清 event 物件與 mutex 物件被 signal 時的行為差異
- (10)|關於 Linux spinlock 哪個「不正確」——「單處理器上的 spinlock」是關鍵。與中正 110 年第 1(7) 題一字不差
第 2 題:Solaris 分派表(10%)
卷上給完整的 Solaris time-sharing/interactive 分派表(priority、time quantum、time quantum expired、return from sleep 四欄)。
- (1) 4%|優先權 15 與 55 的時間量子各是多少毫秒
- (2) 3%|優先權 35 的執行緒用完整個時間量子而未阻塞,新優先權是多少
- (3) 3%|優先權 40 的執行緒在量子用完前因 I/O 阻塞,新優先權是多少
都是查表題,但要知道每一小題該查哪一欄。答完之後可以想想這張表的設計反映了 MLFQ 的什麼精神。
第 3 題:儲存系統的長尾延遲(10%)
題目先解釋什麼是 tail latency(第 99 百分位的延遲可能是平均值的 100 倍),以及它對即時嵌入式系統與企業伺服器的 QoS 影響。
- (1) 5%|提出四個可能造成儲存系統長尾延遲的原因(要簡述)
- (2) 5%|提出兩個解決長尾延遲的方法
這一題完全是產業知識,課本上沒有。可以從 SSD 內部的背景工作、快閃記憶體的物理特性、HDD 的機械延遲、佇列排隊幾個方向去想原因;解法則對應著「怎麼避開或隔離這些背景工作」。
第 4 題:分頁、TLB 與多層頁表(10%)
- (1) 2%|32-bit 虛擬位址、4 KB 頁、最大實體記憶體 32 GB,求程序最多幾個頁與最多幾個頁框
- (2) 2%|單層分頁、記憶體存取 100 ns、TLB 存取 20 ns,要求有效存取時間 < 140 ns,求最小 TLB 命中率。TLB 失誤時要多幾次記憶體存取是關鍵
- (3) 3%|無頁錯誤時有效存取 100 ns、頁錯誤服務 15 ms、頁錯誤率 0.0000004,求有效存取時間。ms 與 ns 的單位要統一
- (4) 3%|64-bit 虛擬位址、8 KB 頁、每個頁表條目 8 bytes、最大實體記憶體 64 GB,求需要幾層頁表。先算一頁能放幾個條目,由此決定每層能解析幾個位元。交大 114 年題組 B 也考同一個
第 5 題:管線資料路徑(30%)
- (1) 5%|卷上給單週期資料路徑並標出五級的分界。問要加入什麼硬體資源來在各級之間暫存資料、為什麼
- (2) 12%|加上管線暫存器後,這條資料路徑在處理 load 指令時有一個 bug,請描述並畫圖修正
- 思考方向:在單週期設計裡「指令本身」整個週期都在,但在管線裡,當
lw走到 WB 級時 IF/ID 裡早就換成後面的指令了。順著這條線去想「WB 級需要的哪一項資訊沒有跟著指令一起往下傳」 - 這是 Patterson & Hennessy 課本裡最經典的一張「錯誤資料路徑」圖,值得先把正確版本畫熟
- (3) 8%|各級時間 IF 100/ID 50/EX 100/MEM 200/WB 80 ps,求 load 與 store 指令的延遲(非管線化)。要想清楚兩種指令各自會走過哪幾級
- (4) 5%|管線化後的時脈週期是多少、為什麼。理由要寫出來
第 6 題:危障處理(20%)
- (1) 5%|五級管線不處理資料危障時,在下列程式中插入必要的 NOP:
addi x10, x14, 10
sub x13, x10, x14
xor x4, x3, x5
要插幾個 NOP 取決於「暫存器檔能不能同週期先寫後讀」的假設,作答時要註明
- (2) 5%|用程式碼重排(code reordering)緩解,開銷能不能完全消除、為什麼。要看有幾道指令是獨立的、能拿來填空檔
- (3) 10%|Always-Taken 與 Always-Not-Taken 兩種預測器對
for (i=0;i<4;i++) x=a+b;的準確率。先算清楚迴圈的分支總共判斷幾次、其中幾次跳,差一的錯誤在這裡特別常見
這份考卷的難點
- 第 5(2) 題要指出資料路徑上的 bug。 這是課本裡的經典圖,但如果只把管線暫存器當成「存資料的地方」,沒想到控制資訊與其他欄位也要一路傳遞,就完全答不出來。12 分,是全卷配分最高的單一小問。
- 第 1 題的十個單選偏冷門。 Android 的保護模型、ISAM 的索引階層、Windows 的 dispatcher object、Linux spinlock 在單處理器上的行為——這些都在 Silberschatz 裡,但很少在課堂上講。
- 第 4(2) 題的 TLB 失誤成本:TLB 失誤時要算幾次記憶體存取,算少了就會得到錯誤的命中率。
- 第 3 題的長尾延遲要答出四個原因加兩個解法,而且明訂要簡述。這一題完全是產業知識,課本上沒有。
準備建議
- 112 年是成大硬體唯一一次出單選題,而且考的都是 Silberschatz 的細節段落。準備時不要只讀重點整理,課本正文裡的例子(ISAM、Windows dispatcher、Android 保護)都可能入題
- 管線資料路徑的經典 bug(第 5(2) 題)一定要懂。這是 Patterson & Hennessy 第 4 章的核心圖
- TLB 有效存取時間(第 4(2) 題):命中與失誤兩種情況各要幾次存取
- 多層頁表的層數(第 4(4) 題)。交大 114 年題組 B 也考同一個
- 長尾延遲(第 3 題)是 SSD 時代的產業議題,要能講出成因與對應的解法
- 分支預測的準確率計算(第 6(3) 題):迴圈分支的判斷次數要算清楚
- Solaris 分派表(第 2 題)要會查,並能說出它體現的排程精神