112 專技高考高等考試 資訊技師 計算機系統 考古題詳解
第 一 題25 分
目前個人電腦、筆記型電腦中的處理器都是多核心的微處理器。為了增加性能,這些微處理器內部都使用多層次(multiple layers)的快取記憶體(cache memory),例如 L1、L2 及 L3。
請繪圖說明在多核心處理器中的記憶體階層,包括各層次的快取記憶體與主記憶體,並請說明各個層次快取記憶體的主要功能。另外,請註明各個層次記憶體的相對大小關係。
登入後即可作答並保存紀錄。
核心觀念
本題考查多核心處理器的記憶體階層,重點是各層快取與主記憶體的配置、功能及容量關係。記憶體階層利用時間區域性與空間區域性,將常用或可能很快再用到的資料放在離處理器較近、速度較快的記憶體中,以降低平均存取時間。
解題方法
由處理器核心往外,依序畫出 L1、L2、L3 快取及主記憶體,並標示各層是否由核心私有或由多核心共享。一般多核心處理器的典型配置如下:
多核心處理器
┌───────────────────────────┐
│ 核心 0 核心 1 │
│ ┌────────┐ ┌────────┐ │
│ │ L1 快取│ │ L1 快取│ │ 每核心私有
│ └───┬────┘ └───┬────┘ │
│ ┌───┴────┐ ┌───┴────┐ │
│ │ L2 快取│ │ L2 快取│ │ 常見為每核心私有
│ └────┬───┘ └───┬────┘ │
│ └──────┬─────┘ │
│ ┌─────┴─────┐ │
│ │ L3 快取 │ │ 常見為多核心共享
│ └─────┬─────┘ │
└─────────────┼───────────────┘
│
┌──────┴──────┐
│ 主記憶體 DRAM│
└─────────────┘
各層主要功能與相對大小
| 層次 | 典型配置 | 主要功能 | 相對容量與速度 |
|---|---|---|---|
| L1 快取 | 通常每個核心私有,常分為指令快取與資料快取 | 最靠近核心,保存核心近期或即將使用的指令與資料,提供最低延遲的存取 | 容量最小、速度最快 |
第 二 題25 分
在現代的計算機系統中,為了提升性能,通常使用指令層次平行技術(instruction-level parallelism)與超純量(superscalar)技術。請解釋這兩種技術的意義。
另外,在微處理器中也常使用硬體來支援 SIMD(single instruction, multiple data)平行處理技術。請說明指令層次平行技術與 SIMD 平行處理技術的區別。
登入後即可作答並保存紀錄。
核心觀念
本題考查處理器平行化的兩種層次:
- 指令層次平行(Instruction-Level Parallelism, ILP):在同一個處理器核心中,找出彼此沒有資料相依或資源衝突的不同指令,讓它們重疊執行或同時執行,以提高指令吞吐量。常見實作方式包括指令管線、超純量、亂序執行與推測執行。
- 超純量(Superscalar):處理器的一種微架構設計。處理器具有多個可平行工作的執行單元,每個時脈週期能發出並執行多條指令;硬體會判斷指令間的相依性與資源需求,安排可同時執行的指令。超純量是實現 ILP 的一種方式。
SIMD 平行處理則是單一指令同時對多筆資料執行相同運算,例如一條向量加法指令,將兩組向量的對應元素逐一相加。
解題方法
回答時先說明 ILP 與超純量的關係,再從「平行的對象」及「控制方式」比較 ILP 與 SIMD:
- ILP 的平行單位是不同的指令,處理器從指令串流中找出可同時執行的指令。
- SIMD 的平行單位是多筆資料,同一條指令對多個資料元素執行相同操作。
- 因此,ILP 著重提升指令執行吞吐量;SIMD 著重提升資料平行工作量的處理能力。
例如:
A = B + C
D = E × F
若兩條指令沒有相依且有足夠執行單元,超純量處理器可以同時執行它們,這是 ILP。
若資料以向量表示,一條 SIMD 加法指令可同時計算:
[C₀, C₁, C₂, C₃] = [A₀, A₁, A₂, A₃] + [B₀, B₁, B₂, B₃]
這是對多筆資料執行同一種運算。
第 三 題25 分
在撰寫一個 C 語言程式之後的程式原始碼,必須歷經數個步驟,才能夠在個人電腦或筆記型電腦中的記憶體中執行,其中每一個步驟都會使用到一個系統工具程式,例如第一個步驟會使用到編譯程式。
請說明這些步驟與相關系統工具程式的功能。另外,也請說明識別碼(identifier)在各個步驟中如何轉換為記憶體位址。
登入後即可作答並保存紀錄。
核心觀念
這題考查 C 程式由原始碼到可執行程式的建置流程,以及識別碼如何經由編譯、組譯、連結與載入,最後對應到記憶體位址。典型流程為:
不同系統可能把部分步驟整合在同一工具中,例如編譯器驅動程式一次呼叫前處理器、編譯器、組譯器及連結器;各階段的功能仍可分別說明。
解題方法:依序追蹤程式與位址的轉換
從原始碼開始,逐步說明每個工具如何轉換程式表示;再追蹤識別碼從原始碼名稱,變成符號表項目、機器碼中的符號參照,最後成為實際記憶體位址。
各步驟與系統工具程式
-
前處理(preprocessing):前處理器(preprocessor) 處理
#include、#define、條件編譯等指示。例如將標頭檔內容納入原始碼、展開巨集,輸出前處理後的 C 程式。此時識別碼通常仍是原始碼中的名稱。 -
編譯(compilation):編譯器(compiler) 將前處理後的 C 程式轉成組合語言,並進行語法與語意檢查、型別檢查及程式最佳化。編譯器會為變數、函式等識別碼建立符號表資訊,記錄其型別、作用範圍、儲存類別及相關位置資訊。區域變數的位置常以堆疊框架或暫存器表示,尚不一定是最終記憶體位址。
-
組譯(assembly):組譯器(assembler) 將組合語言轉成目的檔(object file),內容包括機器碼、資料、符號表及重定位資訊。識別碼在此以符號形式保留;若其實際位置尚未確定,機器碼中會留下待修正的位址或位移欄位。
-
連結(linking):連結器(linker) 將一個或多個目的檔與所需函式庫結合,解析外部符號參照。例如某檔案呼叫另一檔案定義的函式,連結器會將呼叫端符號與函式定義配對,並進行重定位。連結器依程式各區段的配置,將符號參照轉成可執行檔中的位址或相對位移。
第 四 題25 分
在計算機系統中,當處理器欲與 I/O 裝置進行資料轉移時,可以由處理器依序詢問 I/O 裝置,以決定哪一個 I/O 裝置已備妥轉移資料,這種方式稱為輪呼式 I/O(polling I/O)。
請說明輪呼式 I/O 的動作流程。另外,請說明此種 I/O 資料轉移的缺點。
登入後即可作答並保存紀錄。
核心觀念
本題考查輪呼式 I/O(polling I/O)的控制方式與處理器資源使用效率。輪呼式 I/O 是由處理器主動檢查各 I/O 裝置的狀態,判斷裝置是否已備妥資料或能否接收資料;它不涉及法條或計算公式。
解題方法
依「處理器如何發現裝置就緒」及「就緒後如何傳送資料」兩個步驟說明,即可涵蓋輪呼式 I/O 的動作流程。
- 初始化裝置:處理器設定 I/O 裝置及其控制器,例如指定操作方式、資料來源或目的地。
- 依序查詢狀態:處理器逐一讀取各裝置的狀態暫存器,檢查裝置是否已就緒。若尚未就緒,處理器繼續查詢;若都未就緒,便重複輪詢。
- 確認裝置就緒:處理器查到已備妥資料、或可進行資料傳輸的裝置。
- 執行資料轉移:處理器透過 I/O 控制器,在 I/O 裝置與處理器暫存器或主記憶體之間搬移資料。若一次操作只轉移一部分資料,處理器還須重複查詢狀態並進行後續傳輸。
- 完成或繼續輪詢:傳輸完成後,處理器可繼續檢查其他裝置,或等待下一次 I/O 需求。