108 專利師高等考試 專利師(選試專業日文及計算機結構) 計算機結構 考古題詳解
第 一 題20 分
計算機的分類方法中,最有名的方法之一是 Flynn’s taxonomy 或稱 classification,其依據指令流的數目以及數據流的數目將計算機分成:
單指令流單數據流(single instruction stream, single data stream,或稱 SISD)計算機、單指令流多數據流(single instruction stream, multiple data streams,或稱 SIMD)計算機、多指令流單數據流(multiple instruction streams, single data stream,或稱 MISD)計算機、多指令流多數據流(multiple instruction streams, multiple data streams,或稱 MIMD)計算機。
試說明這四種計算機類別分別適用於哪些型態的計算工作,並舉出日常常見實際應用的代表機器一種。舉例應具體、足以反映機器的特色。
登入後即可作答並保存紀錄。
核心觀念
本題旨在測驗計算機系統結構領域中經典的弗林分類法(Flynn’s Taxonomy)。該分類法於 1966 年由 Michael J. Flynn 提出,依據「同一時間內硬體可執行的指令流(Instruction Stream)數量」與「被處理的資料流(Data Stream)數量」,將所有計算機架構劃分為四種基本型態:
- 指令流(Instruction Stream, IS):由程式計數器(Program Counter, PC)定址並提取至控制單元執行的機器指令序列。
- 資料流(Data Stream, DS):由記憶體載入至運算單元(ALU / PE)、供指令操作的資料集合。
評估架構適用型態時,核心關鍵在於程式所具備的平行度類型:無平行(純循序)、資料階層平行(Data-Level Parallelism, DLP)、指令/冗餘階層 或 工作/執行緒階層平行(Thread/Task-Level Parallelism, TLP)。
解題方法
本題為標準的觀念型申論題,答題架構應具備「定義剖析 適用運算型態 具體代表機型與特色說明」,切入重點如下:
- 精準對應運算屬性:針對各架構的硬體配置(單/多控制單元、單/多處理元件),推導其最能發揮效能之應用負載。
- 實體機型具體具特色:題目明定「舉出日常常見實際應用的代表機器一種,且應具體、足以反映機器的特色」。因此不可僅寫抽象名詞(如「個人電腦」、「超級電腦」),必須指出具體處理器型號、商用架構或經典代表系統,並明確指出其如何體現該類別的特色。
選項分析(四架構分項深入剖析)
本題為申論問答題,針對題幹所列之四種架構,分別進行理論架構、適用型態與代表機型之完整剖析:
1. 單指令流單數據流(SISD, Single Instruction Stream, Single Data Stream)
- 硬體特徵:由單一控制單元(Control Unit, CU)擷取單一指令流,並控制單一運算邏輯單元(ALU)對單一資料流進行操作。
- 適用運算型態:
- 純循序型運算(Sequential Computation):前後指令具高度資料相依性(Data Dependency)而難以平行化之工作。
- 控制密集型任務(Control-Intensive Tasks):分支決策繁多、流程複雜的單執行緒應用,例如編譯器語法分析(Compiler Parsing)、文字處理器或傳統作業系統核心單工行程。
- 代表機器及特色:
- 經典 Intel 80486 / Pentium(單核心、未啟用超執行緒)桌上型電腦:此類處理器僅具備單一程式計數器與一組運算核心,同一週期僅能針對單一暫存器/記憶體資料位址執行一條指令操作,是馮・紐曼(Von Neumann)傳統單工架構的標準具體實作。
2. 單指令流多數據流(SIMD, Single Instruction Stream, Multiple Data Streams)
- 硬體特徵:單一控制單元分發同一條指令廣播至多個處理元件(Processing Elements, PEs),各元件同時對彼此獨立的不同資料執行相同的運算。
- 適用運算型態:
- 高度資料平行(Data-Level Parallelism, DLP)運算:大批結構整齊、無資料相依性的陣列或矩陣資料處理。
- 典型工作包括數位影像/音訊處理(如濾波、傅立葉轉換)、3D 圖形渲染、密碼學平行雜湊、深度學習之張量矩陣乘加運算。
- 代表機器及特色:
- NVIDIA GeForce RTX 4090 圖形處理器(GPU):GPU 內部具備數千個串流核心(CUDA Cores),以 32 個執行緒為一組(Warp)鎖步(Lock-step)共用同一指令解碼單元,同時對不同像素或頂點座標資料進行相同著色或矩陣變換運算,徹底展現 SIMD(在 GPU 實作上常稱 SIMT)吞吐量最大化的平行特性。
3. 多指令流單數據流(MISD, Multiple Instruction Streams, Single Data Stream)
- 硬體特徵:多個控制單元提取不同的指令流,各自指揮運算單元對同一組資料流進行不同的操作或驗證。此架構在通用商業電腦中極為罕見。
- 適用運算型態:
第 二 題20 分
假設某計算機程式花費執行時間的 做開頭的啟始動作以及結束時的處理,並且在這些過程中並無任何改善程式效能的機會;另外 的時間做數據搬移(即記憶體讀寫動作,此處假設過程中並無中央處理器的額外時間負擔);其他 的時間則是做數據處理(亦即處理計算的工作)。
(一)若僅改善數據處理使用的演算法,使得數據處理的部分加速了 倍,則程式整體的加速為若干倍?
(二)若不改善程式,而僅將中央處理器替換成一個處理速度是兩倍快的中央處理器,則程式整體的加速為若干倍?
(三)若不對記憶體系統做任何改善,則程式整體加速的上限為若干倍?
登入後即可作答並保存紀錄。
核心觀念
本題的核心考點為計算機效能評估中的阿姆達爾定律(Amdahl's Law)與程式執行時間結構分析。
- 阿姆達爾定律(Amdahl's Law): 當我們僅針對系統中的某一部分進行效能增強時,系統整體獲得的加速倍率受限於該部分在原始執行時間中所佔的比例。其公式為: 其中:
- :系統整體加速倍率(Overall Speedup)。
- :可被改善(加速)的部分佔原始總執行時間的比例(Fraction Enhanced)。
- :該特定部分本身的加速倍率(Speedup Factor)。
- :未受加速影響的部分所佔比例。
- 執行時間結構分解: 設程式原始總執行時間為 ,題幹將其切分為三個不可重疊的組成區塊:
- 啟始與結束處理時間():佔 (),題幹已明確限制「並無任何改善程式效能的機會」,此部分恆不變。
- 數據搬移時間():佔 (),屬於記憶體讀寫,題幹註明「無中央處理器的額外時間負擔」,其耗時僅取決於記憶體子系統。
- 數據處理時間():佔 (),屬於 CPU 計算工作,受演算法與 CPU 運算速度影響。
解題方法
設程式原始總執行時間為 :
(一) 僅改善數據處理演算法,加速 20 倍
- 分析各部分變化:
- 啟始與結束:未受影響,維持 。
- 數據搬移:未受影響,維持 。
- 數據處理:改善後耗時縮減為原先的 :
- 計算新總執行時間與整體加速倍率:
(二) 不改程式,僅將 CPU 替換為 2 倍速之處理器
- 分析各部分對 CPU 升級之反應:
- 啟始與結束:題幹已設定此部分「並無任何改善程式效能的機會」,故即使換更快的 CPU 亦無法縮減其時間,維持 。
- 數據搬移:題幹已假設「過程中並無中央處理器的額外時間負擔」,代表瓶頸完全在記憶體存取速度,不受 CPU 運算頻率影響,維持 。
- 數據處理:純計算工作,其執行時間與 CPU 處理速度成反比。更換為 2 倍速 CPU 後,加速倍率 :
- 計算新總執行時間與整體加速倍率:
第 三 題20 分
試以二進數字系統為例,討論有正負號的定點數字表示法與浮點數字表示法(浮點數字表示法的格式請以 IEEE 754 標準為依據;但不需刻意使用標準中使用的各欄位大小)。假設兩種數字表示法使用的位元數目都是相同的,都是 32 個位元。
(每小題 5 分,共 20 分)
(一)列出並說明定點數字表示法使用的格式,包含各欄位的名稱、大小、功能。
(二)列出並說明浮點數字表示法使用的格式,內容項目應同上。
(三)浮點數字表示法中,一般是否有規範到(使用到)不需使用位元而能表示出來的資訊?如果有,是哪些?
(四)浮點數字表示法可以表示數值非常細微或是極端巨大、範圍非常寬廣的許多數字。以 32 個位元的表示法為例,其能夠表示的不同數值數量約略為若干?並請作必要說明。
登入後即可作答並保存紀錄。
核心觀念
本題評量計算機算術(Computer Arithmetic)中數值資料表示法的底層架構,核心觀念涵蓋以下四項:
- 定點數表示法(Fixed-point Representation):小數點位置由設計者或編譯器事先約定,硬體上無須額外儲存小數點位置,數值在數軸上呈「等間距均勻分佈」。
- 浮點數表示法(Floating-point Representation):依循 IEEE 754 標準格式,將數值拆解為符號(Sign)、指數(Exponent)與假數/尾數(Significand / Mantissa),透過科學記號達到動態縮放效果。
- 隱含資訊(Implicit Information):IEEE 754 標準利用規格化常態數(Normalized numbers)的特性,省略不需佔用實體位元的欄位與數值常數(如隱含位元 Hidden Bit、隱含基底等),以提升儲存效益與精確度。
- 資訊理論限制與非均勻分佈:位元數決定了狀態數的上限( 個位元最多僅有 種狀態樣式)。浮點數擴大表示範圍(Dynamic Range)並非增加了表示數量,而是透過「犧牲大數間的解析度(間距變疏)」換取廣泛動態範圍,且其中含有冗餘表示(如 )與非數(NaN)。
解題方法
本題為申論與計算題,解題切入點如下:
- 第 (一) 小題:以通用的 32 位元有號定點數(以業界最廣泛採用的二補數 Two's Complement 格式為標準典範)進行結構拆解,明確定義符號位元、整數部與小數部的大小及小數點的隱含性質。
- 第 (二) 小題:依據 IEEE 754 單精度(Single Precision, 32-bit)浮點數標準,條列 Sign、Exponent、Fraction(Mantissa)三欄位的確切名稱、位元數、編碼機制(如 Excess-127 偏置碼)與數學意義。
- 第 (三) 小題:由 IEEE 754 的編碼公式 出發,精確點出規格化數中著名的「隱藏位元(Hidden Bit)」,並補充隱含基底(Base 2)與隱含小數點位置。
- 第 (四) 小題:運用鴿籠原理(Pigeonhole Principle)與資訊編碼上限進行推導。32 個位元之位元樣式(Bit Patterns)總數為 ;進一步分析實質代表的「不同數值」,必須扣除 與 的重複,以及多種無效數值 NaN(Not a Number)的編碼樣式。
各小題詳細解析
(一) 定點數字表示法使用的格式
以 32 位元有正負號定點數(Signed Fixed-point Number,採二補數表示法)為例,小數點位置為系統事先約定固定。常見格式以 表示(其中 , 為符號位元)。以 格式為代表說明:
| 欄位名稱 | 位元大小 | 功能與意義說明 |
|---|---|---|
| 符號欄位 (Sign) | (MSB, Bit 31) | 決定數值正負。以二補數系統而言, 表示正數, 表示負數,在權重計算上具有負權重()。 |
| 整數欄位 (Integer part) | (如 15 位元, Bits 30~16) | 儲存數值的整數絕對值大小,權重由 遞減至 。 |
| 小數欄位 (Fraction part) | (如 16 位元, Bits 15~0) | 儲存數值的小數部分大小,權重由 遞減至 。 |
註:若為純整數表示法,則整數欄位佔 31 位元,小數欄位佔 0 位元;虛擬的小數點固定於 Bit 0 右側,由硬體電路隱含約定,不佔用任何位元空間。
(二) 浮點數字表示法使用的格式
依據 IEEE 754 標準 32 位元單精度(Single Precision)浮點數格式,其 32 個位元劃分為三個欄位:
31 30 23 22 0
+--+------------+---------------------------------------+
|S | Exponent | Fraction |
+--+------------+---------------------------------------+
1b 8 b 23 b
| 欄位名稱 | 位元大小 | 功能與意義說明 |
|---|---|---|
| 符號欄位 (Sign, ) | (Bit 31) | 表示該數值的正負號。 代表正數, 代表負數。 |
| 指數欄位 (Exponent, ) | (Bits 30~23) | 決定數值的數量級(動態範圍)。採用偏置碼(Biased Representation,通常為 Excess-127)。實際指數值為 。保留 與 專用於表示特殊數值(、次常態數、、NaN)。 |
| 假數/小數欄位 (Fraction, ) | (Bits 22~0) | 儲存有效數字(Significand)的小數部分,決定數值的精確度(Precision)。 |
在規格化情況下,其數值計算公式為:
(三) 浮點數表示法中不需使用位元即可表示的資訊
浮點數標準中,以下資訊由規範與硬體架構預先約定,不佔用實體位元:
第 四 題20 分
中央處理器(central processing unit,CPU)的主要設計方向是採用管線化處理(pipelined processing)。
(每小題 5 分,共 20 分)
(一)相較於非管線化的設計,管線化的設計在硬體線路複雜度方面的需求為何?並說明之。
(二)相較於非管線化的設計,管線化的設計在程式執行時功率消耗的需求為何?並說明之。
(三)相較於非管線化的設計,管線化的設計在程式執行時間方面的表現為何?並說明之。
(四)管線化處理設計上常見的挑戰有三大類管線危障(pipeline hazards),試條列並說明之。
登入後即可作答並保存紀錄。
核心觀念
本題評量中央處理器(CPU)採用「管線化處理(Pipelined Processing)」架構之基本原理與工程權衡(Trade-offs),涵蓋硬體成本、功耗特性、效能公式與設計挑戰。核心理論與定義如下:
- CPU 效能方程式(CPU Performance Equation):
- (Instruction Count):程式總指令數。
- (Cycles Per Instruction):平均每條指令執行的時脈週期數。
- (時脈週期時間):取決於最長邏輯路徑的關鍵路徑延遲(Critical Path Delay)。
- 理想加速比(Speedup)與延遲(Latency)/ 吞吐量(Throughput)權衡:
- 管線化技術將資料路徑分割為 個獨立階段(Stages)。
- 吞吐量(每單位時間完成指令數)在理想狀態下提升至非管線化的 倍。
- 單一指令延遲(Latency)因增加級間暫存器延遲與時鐘偏斜(Clock Skew),實際上略微增加。
- CMOS 動態功率消耗公式(Dynamic Power Consumption):
- :切換活動因子(Activity Factor)。
- :負載電容(Capacitance)。
- :工作電壓。
- :時脈頻率(Clock Frequency)。
- 管線危障(Pipeline Hazards): 管線中阻止下一條指令在預期週期執行的情況,主要分為結構危障(Structural Hazard)、資料危障(Data Hazard)與控制危障(Control Hazard)。
解題方法
本題為典型的申論分析題,評分標準在於「論點明確」、「因果論述嚴謹」與「對比基準清楚」。切入分析如下:
- 第 (一) 小題(硬體線路複雜度):
- 基準:相對於非管線化(單一週期 Single-Cycle 或傳統多週期 Multi-Cycle)。
- 切入點:管線化需在各階段間加入「管線暫存器(Pipeline Registers)」、用以傳遞控制信號的「管線化控制邏輯」、以及解決危障所需的「前向傳遞電路(Forwarding Unit)」與「危障偵測單元(Hazard Detection Unit)」,因此硬體複雜度顯著增加。
- 第 (二) 小題(功率消耗需求):
- 切入點:運用 CMOS 動態功耗公式 分析。
- 因果推導:管線化顯著縮短關鍵路徑,使時脈頻率 大幅提升;同時大量增加的管線暫存器與時脈樹(Clock Tree)提高有效電容 ;加上額外的轉發與危障判斷邏輯,使得執行時的動態與靜態功率消耗皆顯著高於非管線化設計。
- 第 (三) 小題(程式執行時間):
- 切入點:利用 CPU 執行時間三要素()進行對比。
- 結論導向:指令數 不變,時脈週期 大幅縮短(約變為 ),理想狀態下 ;雖然危害導致的暫停(Stall)使實際 ,但時脈頻率倍增帶來的增益遠大於暫停損失,整體程式執行時間顯著縮短(效能提升)。
- 第 (四) 小題(三大類管線危障):
- 採「定義 發生情境 解決策略」之架構,逐一條列結構危障、資料危障與控制危障。
詳細解題過程
(一) 管線化設計在硬體線路複雜度方面的需求與說明
相較於非管線化設計,管線化設計對硬體線路複雜度的需求顯著增加。其主要原因如下:
- 增設級間管線暫存器(Pipeline Registers): 非管線化之單一週期處理器無須在資料路徑中間暫存資料;管線化將資料路徑切分為多個階段(如 IF、ID、EX、MEM、WB),各階段交界處必須配置大量的管線暫存器(如 IF/ID、ID/EX 等暫存器),用以鎖存各階段的中間運算結果及對應的指令控制信號。
- 控制單元與信號傳遞線路複雜化: 非管線化的控制信號僅需直接送達各元件;管線化架構必須將控制信號隨同指令在各階段暫存器間同步流動(Pipelined Control),並在不同階段精準解碼出該階段所需的控制線路。
- 危障處理與旁路互連線路(Forwarding & Hazard Detection Logic): 為避免管線停頓,硬體需額外實作:
- 前向傳遞單元(Forwarding/Bypassing Unit):包含大量的多工器(Multiplexers)與比較器,將後續階段的計算結果直接拉回至執行階段輸入端。
- 危障偵測單元(Hazard Detection Unit):即時判斷資料衝突(如 Load-use hazard)並強制插入氣泡(Bubble/Stall),大幅增加資料路徑控制的複雜度。
(二) 管線化設計在程式執行時功率消耗的需求與說明
相較於非管線化設計,管線化設計在程式執行時的功率消耗(Power Consumption)需求顯著提高。其主要原因如下:
- 高時脈頻率帶來的動態切換功耗: 依據 CMOS 動態功率公式 ,管線化將關鍵路徑細分,時脈頻率 較非管線化(尤其是單週期架構)提高數倍,直接導致動態開關功耗成倍數增長。
- 額外儲存元件與時脈樹負載電容增加: 大量級間管線暫存器需要在每一個時脈邊緣被觸發,使得晶片內部的時脈分配網路(Clock Tree Network)必須驅動極大的閘極電容負載( 增加),時脈樹本身即消耗龐大動態功率。
- 電路規模擴增提高靜態漏電功率(Static Leakage Power): 為實作轉發多工器、危障控制與暫存器,晶片總電晶體數增加、晶片面積擴大,隨之產生的次臨界漏電流(Subthreshold Leakage)與閘極漏電功率亦高於非管線化架構。
(三) 管線化設計在程式執行時間方面的表現與說明
相較於非管線化設計,管線化設計在程式執行時間方面的表現為整體執行時間大幅縮短,系統吞吐量(Throughput)顯著提升。說明如下:
第 五 題20 分
階層式記憶體的設計是基於程式執行時使用記憶體上顯現出來某些特性的原理。
(每小題 5 分,共 20 分)
(一)寫出這個原理的名稱並說明其意義。
(二)這個原理又分別可以在時間上與空間上具體觀察到其行為。分別說明這個原理在時間上與空間上表現的行為是如何?
(三)以快取記憶體為例:在設計快取記憶體時,一般我們會在哪些(至少列出重要者一項即可)設計參數上,如何利用到時間上的這種行為特性,做出怎樣的設計結果?
(四)在設計快取記憶體時,一般我們又會在哪些(至少列出重要者一項即可)設計參數上,如何利用到空間上的這種行為特性,做出怎樣的設計結果?
登入後即可作答並保存紀錄。
核心觀念
本題評量計算機結構中「階層式記憶體架構(Memory Hierarchy)」的理論基礎與「快取記憶體(Cache Memory)」的硬體設計參數配置。涉及的核心觀念包含:
- 局部性原理(Principle of Locality):程式在任一執行時期,對記憶體的存取並非均勻隨機分布,而是集中於整體位址空間的一小部分。
- 時間局部性(Temporal Locality):若某個記憶體單元被存取,則其在不久的將來極有可能再次被存取。
- 空間局部性(Spatial Locality):若某個記憶體單元被存取,則其物理位置相鄰的記憶體單元極有可能在不久的將來被存取。
- 快取設計參數與策略:
- 應對時間局部性:快取置換政策(Cache Replacement Policy,如 LRU)、快取保留機制。
- 應對空間局部性:區塊大小(Block Size / Cache Line Size)、硬體預先擷取(Hardware Prefetching)。
解題方法
回答本題應採「定義 特性行為 硬體參數對應 效益結果」的結構化論述,切入點如下:
- 子題(一):明確給出中文名詞「局部性原理」與英文對應詞「Principle of Locality」,並從程式執行的行為特性說明其本質:程式碼具有結構性(如迴圈、程序呼叫、循序指令執行),導致記憶體參照具有高度集中性(約 90% 的執行時間只存取 10% 的記憶體空間,即 90/10 規則)。
- 子題(二):將局部性原理劃分為「時間」與「空間」兩軸度,分別結合典型程式結構(例如迴圈計數器、陣列元素逐筆存取、指令指標循序遞增)具體描述其在時間與位址空間上的行為表現。
- 子題(三):鎖定時間特性,關鍵在於「如何保留最近用過的資料以供再利用」。挑選最具代表性的設計參數——置換政策(Replacement Policy),說明快取滿載時如何依據時間特性淘汰最久未存取的區塊(LRU),確保留存高重複使用率的資料,最大化快取命中率(Hit Rate)。
- 子題(四):鎖定空間特性,關鍵在於「存取某點時如何順道攜帶鄰近資料」。挑選最具代表性的設計參數——區塊大小(Block Size / Line Size),說明由底層記憶體載入快取時,並非單字組(Word)傳輸,而是以較大區塊(如 64 Bytes)為單位載入鄰近連續位址,使後續循序存取直接命中,有效分攤失誤懲罰(Miss Penalty)。
選項分析(各子題作答重點剖析)
本題為申論題,以下針對各小題之給分關鍵、答題架構與論證要點進行深入剖析:
- 第(一)小題評分關鍵:
- 正確寫出專有名詞:局部性原理(Principle of Locality)。
- 意義說明不可僅寫表面字義,須指出「程式在一段時間內存取的記憶體位址往往局限在有限範圍內」,並強調它是整個記憶體階層設計(以速度快但容量小的 SRAM 作為第一層,速度慢但容量大的 DRAM/硬碟作為底層)能夠達到「接近頂層存取速度、底層便宜單位成本」的理論基石。
- 第(二)小題評分關鍵:
- 時間上的行為:須指出「重複存取性(Recency & Frequency)」,即某資料被存取後,短期內會被反覆存取。經典範例為
for或while迴圈內的常數、迴圈控制變數(如i++)及共用副程式碼。 - 空間上的行為:須指出「鄰近存取性(Proximity)」,即存取某位址 後,位址 也會隨之被存取。經典範例為指令計數器(Program Counter, PC)的循序遞增執行、陣列(Array)資料結構的連續走訪。
- 第(三)小題評分關鍵:
- 設計參數選定:置換政策(Replacement Policy)最為切題且具說服力(亦可選快取階層保存機制)。
- 如何利用與設計結果:必須闡述「若近期存取過,未來很可能再存取;反之,很久未存取者,未來存取機率低」。硬體據此實作「最久未使用(Least Recently Used, LRU)」演算法,於失誤發生且空間已滿時,優先剔除最久未被參照的區塊,讓熱門資料常駐於快取中。
- 第(四)小題評分關鍵:
- 設計參數選定:區塊大小(Block Size / Cache Line Size)為最佳切入點(亦可答預先擷取 Prefetching Buffer)。