113 民航特考三等 航空通信 計算機概論 考古題詳解
第 一 題30 分
管線化(Pipelining)是讓電腦的處理器效能提升的重要關鍵,請回答下列問題:
(一)請說明如何以管線化(Pipelining)加速指令執行。(10 分)
(二)何謂管線危障(Pipeline Hazard)?(5 分)
(三)管線危障有三種不同類型,即結構危障(Structural Hazard)、資料危障(Data Hazard)、控制危障(Control Hazard),請說明此三種危障之意義及發生的原因。(15 分)
登入後即可作答並保存紀錄。
核心觀念
管線化是將一個指令的執行過程切分成數個階段,並讓多個指令分別占用不同階段、同時處理。它提高的是處理器的指令吞吐量,也就是單位時間內完成的指令數;不代表單一指令本身的執行延遲必然縮短。
常見的五階段管線如下:
| 階段 | 工作內容 |
|---|---|
| IF(Instruction Fetch) | 從記憶體擷取指令 |
| ID(Instruction Decode) | 解碼指令並讀取暫存器 |
| EX(Execute) | 執行運算或計算位址 |
| MEM(Memory Access) | 存取資料記憶體 |
| WB(Write Back) | 將結果寫回暫存器 |
解題方法
(一)如何以管線化加速指令執行
未使用管線時,處理器通常要等一個指令完成後才開始下一個指令。管線化則將指令拆成多個階段,並在每個時鐘週期讓不同指令分別進入不同階段。例如:
| 時鐘週期 | 第 1 週期 | 第 2 週期 | 第 3 週期 | 第 4 週期 | 第 5 週期 | 第 6 週期 |
|---|---|---|---|---|---|---|
| 指令 1 | IF | ID | EX | MEM | WB | |
| 指令 2 | IF | ID | EX | MEM | WB |
第一個指令進入第二階段後,第二個指令即可開始擷取;管線填滿後,理想上每個時鐘週期都能完成一個指令。
若有 個等長階段、共執行 個指令,忽略危障與管線填充、排空等因素:
- 未管線化所需週期數約為 。
- 管線化所需週期數約為 。
- 理想加速比為:
當指令數很多時,理想加速比會接近 。實際效能還會受到階段時間不均、管線危障及額外控制成本影響,因此通常低於理想值。整體而言,管線化藉由重疊不同指令的執行階段,提高指令吞吐量。
(二)何謂管線危障
管線危障是指管線中的指令因資源衝突、資料相依或控制流程改變,無法按預定時序順利前進,造成管線停頓(stall)、插入氣泡(bubble),或清除已擷取的指令。危障會降低管線的有效吞吐量,使實際效能低於理想狀況。
(三)三種管線危障的意義及發生原因
1. 結構危障(Structural Hazard)
第 二 題25 分
請回答下列與網路或資訊安全相關之問題:
(一)網路中封包傳遞主要有三種模式,分別為單點傳播(Unicast)、廣播(Broadcast)、群播(Multicast),請說明此三種模式的特性,說明時亦請強調三者之差異。(15 分)
(二)請說明電腦病毒(Virus)和電腦蠕蟲(Worm)的特性,說明時亦請強調兩者之差異。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查網路封包的傳送對象範圍,以及惡意程式的自我複製方式與散播途徑。
單點傳播、廣播與群播的主要差別,在於一個封包要送給誰:一個特定接收端、同一廣播網域內的所有裝置,或加入特定群組的多個接收端。病毒與蠕蟲則都能自我複製,但是否依附宿主程式,以及是否能藉網路自行散播,是區分重點。
解題方法
先依「封包的目的接收者範圍」比較三種傳播模式;再依「是否依附宿主」和「如何散播」比較病毒與蠕蟲。回答時要指出各自適用情境與限制,才能凸顯彼此差異。
(一)單點傳播、廣播與群播
1. 單點傳播(Unicast)
單點傳播是由一個傳送端,將資料送往一個特定接收端,屬於一對一傳送。封包目的位址指向單一目的主機,常用於一般網頁瀏覽、電子郵件傳送及檔案下載等情境。
若多個接收端都需要相同資料,傳送端通常須分別傳送多份資料,因而可能增加網路流量。
2. 廣播(Broadcast)
廣播是由一個傳送端,將資料送給同一廣播網域內的所有裝置,屬於一對全體傳送。接收端不必事先加入特定群組,但網路上的裝置會收到廣播封包,再由各裝置判斷是否需要處理。
廣播通常受限於區域網路或特定廣播網域,路由器一般不會將區域網路廣播封包轉送到其他網段。廣播方便尋找網路上的服務或主機,但若大量使用,會占用頻寬並增加裝置處理負擔。
3. 群播(Multicast)
群播是由一個傳送端,將資料送給已加入特定群組的多個接收端,屬於一對多群組傳送。只有加入該群組的接收端需要接收並處理資料;網路設備可依群播群組資訊轉送封包,減少傳送端為每位接收者各送一份資料所造成的重複流量。
群播常見於網路影音直播或多點視訊會議等需要將相同資料送給多個接收端的情境。
三者比較
| 傳播模式 | 接收對象 | 傳送關係 | 主要特性 |
|---|---|---|---|
| 單點傳播 | 一個特定接收端 | 一對一 | 目標明確;多個接收端通常需分別傳送 |
| 廣播 | 同一廣播網域內所有裝置 | 一對全體 | 不需加入群組;流量與處理負擔由網域內裝置共同承受 |
第 三 題25 分
下圖中,節點內的數字為此節點編號,邊上的數字為此邊權重,請依據此圖回答下列問題:
🖼️【此處有附圖,請對照原卷】
圖中節點與邊的資訊如下:
- 節點:、、、、、、。
- 邊及其權重: 權重為 ; 權重為 ; 權重為 ; 權重為 ; 權重為 ; 權重為 ; 權重為 ; 權重為 ; 權重為 ; 權重為 ; 權重為 。
(一)請列出以編號 為起點,並以深度優先搜尋(Depth-First Search, DFS)方式走訪完所有節點之順序,走訪時若有多個選擇,以編號小者優先。(7 分)
(二)請列出以編號 為起點,並以廣度優先搜尋(Breadth-First Search, BFS)方式走訪完所有節點之順序,走訪時若有多個選擇,以編號小者優先。(7 分)
(三)請畫出此圖之最小生成樹(Minimum Spanning Tree)。(11 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查圖形搜尋與最小生成樹:
- DFS(深度優先搜尋):從目前節點選擇尚未拜訪的鄰接節點,優先一路深入;無路可走時回溯。
- BFS(廣度優先搜尋):使用佇列,按照距離起點的層次逐層拜訪。
- 最小生成樹(MST):在連通且無向加權圖中,選出連接所有節點且不形成循環的邊,使總權重最小。共有 個節點,因此生成樹必須有 條邊。
圖中邊視為無向邊,且鄰接節點均依編號由小到大選擇。
(一)DFS 深度優先搜尋
各節點的鄰接節點依編號排序如下:
由節點 出發:
- 先拜訪 。
- 的未拜訪鄰點中,選編號最小的 。
- 從 出發,選未拜訪的 。
- 從 出發,選未拜訪的 。
- 從 出發,拜訪未拜訪的 。
- 從 出發,拜訪未拜訪的 。
- 從 出發,拜訪未拜訪的 。
因此 DFS 走訪順序為:
(二)BFS 廣度優先搜尋
由節點 出發:
- 第 層:
- 第 層: 的鄰點為
- 第 層:由 可發現尚未拜訪的
依照 BFS 佇列處理順序:
- 拜訪 ,依序加入 。
- 處理 ,加入尚未拜訪的 。
- 處理 ,加入尚未拜訪的 。
- 處理 ,沒有新的節點。
- 依序處理 。
因此 BFS 走訪順序為:
(三)最小生成樹
採用 Kruskal 演算法,將邊依權重由小到大排列:
第 四 題20 分
請回答下列與程式設計相關之問題:
(一)請分別說明區域變數(Local Variable)、全域變數(Global Variable)、靜態變數(Static Variable)三種變數之特色。(10 分)
(二)請說明疊代法(Iterative Method)與遞迴法(Recursive Method),說明時亦請強調兩者之差異。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查變數的作用範圍與生命週期。判斷時要分清楚兩件事:程式的哪些部分可以存取該變數,以及變數在何時建立、何時消失。
解題方法
依「宣告位置、可存取範圍、生命週期與保存狀態」比較三種變數:
| 變數種類 | 宣告位置與作用範圍 | 生命週期與保存狀態 |
|---|---|---|
| 區域變數(Local Variable) | 在函式、程序或區塊內宣告,通常只能在該函式或區塊內存取。 | 一般於進入該範圍時建立,離開時結束生命週期;再次呼叫函式時,通常重新建立,值不會自動保留。 |
| 全域變數(Global Variable) | 在函式或區塊之外宣告,通常可供程式多個函式或模組存取;實際範圍依語言規則及存取控制而定。 | 通常在程式執行期間持續存在,直到程式結束;多個函式可讀取或修改,因此須注意共用狀態與副作用。 |
| 靜態變數(Static Variable) | 「靜態」主要描述生命週期或儲存方式,實際可見範圍依宣告位置及語言規則而定。 | 通常在程式執行期間保留,離開宣告所在函式或區塊後仍保存其值;再次進入時可沿用先前的值。 |
例如,在支援區域靜態變數的語言中,函式內的靜態變數只在該函式內可見,但多次呼叫時會保留先前的值;它與同一函式內的一般區域變數不同,也不因此成為全域變數。
解題技巧與常見陷阱
- 區域變數的關鍵是「範圍有限」;一般區域變數離開範圍後不保留值。
- 全域變數的關鍵是「可由多處共用存取」,但能否跨檔案或模組存取仍取決於語言規則。
- 靜態變數的關鍵是「保留狀態」;不能只憑「靜態」二字判定它的作用範圍。區域靜態變數可以範圍局部、生命週期長。
- 各程式語言對初始化、可見範圍與儲存細節有所差異,作答時應抓住上述一般概念,避免將特定語言的細節說成所有語言的通則。
(二)疊代法與遞迴法
核心觀念
本題考查重複處理問題的兩種方式:疊代法透過迴圈反覆執行;遞迴法則由函式直接或間接呼叫自身,將問題縮小至基本情況。
解題方法
以計算階乘 為例,兩種方法都能逐步得到相同結果:
**疊代法:**設定累積值為 ,依序將 到 乘入累積值,迴圈結束後即為 。迴圈必須有明確的初始值、繼續條件與更新步驟。