111 專利師高等考試 專利師(選試專業日文及計算機結構) 計算機結構 考古題詳解
第 一 題20 分
假設 C 語言的指令
被編譯成組合語言的指令時,會將其中的變數 分別存放在暫存器 。已知組合語言指令:
sub $t0, $s1, $s2
將 的內容減 的內容以後儲存在暫存器 。
則上述的 C 語言指令會被編譯成怎樣的組合程式片段?
登入後即可作答並保存紀錄。
核心觀念
本題測驗計算機結構中指令集架構(ISA)之算術運算指令與暫存器配置(Register Allocation),核心重點涵蓋:
- 高階語言運算式之指令分解:硬體指令集(如經典之 MIPS 架構)的算術運算指令通常為三運算元格式(Three-operand format),一次僅能處理一個雙元運算子(Binary operator)。因此複合算術式必須分解為循序的單一步驟。
- 暫存器分工原則:
- 保存暫存器(Saved Registers):如 $$,用以對應高階語言中的常駐變數。
- 暫時暫存器(Temporary Registers):如 $$,用以暫存運算過程中的中間評估值(Intermediate values)。
- 減法指令格式語意:
- 格式為
sub rd, rs, rt,其硬體語意為: 其中第一運算元為目的暫存器(Destination),第二與第三運算元分別為被減數(Minuend)與減數(Subtrahend)。
解題方法
步驟一:變數與暫存器對照 依題目所給之對應關係:
- 變數 $
- 變數 $
- 變數 $
- 變數 $
- 變數 $
步驟二:分解運算式之語法樹(Parse Tree) 欲計算之目標式為: 括號具有最高優先權,運算步驟如下:
- 先計算左子運算式 ,並將結果置於臨時暫存器 $:
- 再計算右子運算式 ,並將結果置於臨時暫存器 $:
- 最後計算主運算式之差,並將結果存入變數 之對應暫存器 $:
第 二 題20 分
請定義位元組(byte)及字組(word),並說明定義的理由,請務必涵蓋是否分別等於多少個位元(bit),以及是否與處理器的硬體組成有什麼關係。
如果在暫存器之間傳送一個位元組需要 秒,則傳送一個字組、兩個字組及四個字組分別需要多少時間?
登入後即可作答並保存紀錄。
核心觀念
本題評量計算機結構中基礎資料單位之定義、微架構硬體對應關係,以及暫存器傳輸層級(Register-Transfer Level, RTL)的時間延遲計算:
- 位元組(Byte):現代計算機架構中最小的定址單位(Addressable Unit)與字元編碼標準(通常固定為 )。
- 字組(Word):處理器一次操作、運算(ALU 寬度)及傳輸(資料路徑寬度)的自然單位,其大小直接由處理器的硬體微架構決定(非固定常數)。
- 暫存器傳輸延遲:暫存器之間傳送資料所需的時間,取決於傳輸的資料量以及內部資料匯流排(Datapath Bus)的傳輸機制與頻寬。
解題方法
一、位元組(Byte)與字組(Word)的定義、理由與硬體組成關係
1. 位元組(Byte)
- 定義與位元數: 在現代計算機標準中,(在國際標準中亦稱八位元組 Octet)。
- 定義理由:
- 字元表示需求:早期為容納標準文字編碼(如 7 位元的 ASCII 碼加上 1 個同位檢查位元,或 8 位元的 EBCDIC 編碼),需要至少 8 位元的資料長度。
- 記憶體定址基準:為了在定址空間大小與定址硬體成本間取得平衡,自 IBM System/360 架構確立以來,業界統一以 8 個位元作為主記憶體可獨立定址的最小基本單元(Byte-addressing)。
- 與處理器硬體組成的關係:
- 位元組大小()屬於工業標準規格,不隨處理器架構的位元數(如 16、32 或 64 位元)改變而改變。
- 處理器的記憶體管理單元(MMU)、快取記憶體(Cache)控制器及位址解碼硬體,均以位元組為邊界進行定址與存取控制。
2. 字組(Word)
- 定義與位元數: 字組是處理器微架構設計中的「自然資料單位」(Natural Data Unit),表示 CPU 在單一指令或單一時脈週期中能夠最有效率地處理、運算與傳輸的資料長度。其位元數不固定,由處理器的指令集架構(ISA)與微架構設計決定:
- 在 16 位元處理器中:。
- 在 32 位元處理器中:。
- 在 64 位元處理器中:。
- 定義理由: 定義字組的目的在於最佳化硬體的整合成效,使暫存器容量、ALU 運算寬度與內部內部匯流排頻寬能完全匹配,避免因資料寬度不一致而造成傳輸瓶頸或硬體閒置。
- 與處理器硬體組成的關係: 字組的大小與處理器的核心硬體組成存在直接的對應關係:
- 通用暫存器(GPR)寬度:通用暫存器的長度通常等於 1 個字組長度。
- 算術邏輯單元(ALU)寬度:整數 ALU 的運算單元位元數等於字組大小。
- 內部資料路徑(Datapath)寬度:處理器核心內部暫存器與執行單元之間的內部匯流排寬度通常為 1 個字組。
二、暫存器間傳送時間推導與計算
題目給定:「在暫存器之間傳送一個位元組需要 秒」。此條件指明暫存器間透過單一位元組寬度的內部傳輸路徑進行循序傳輸時,單位位元組的傳輸延遲為 秒。
題目未明確指定該處理器的字組大小(Word Size),以通用符號推導通式,並以國家考試最常見的經典 32 位元處理器架構()及 64 位元架構作為標準計算依據:
第 三 題20 分
有一處理器的時脈週期時間(clock cycle time)為 奈秒(ns),錯失懲罰(miss penalty)為 個時脈週期,每一個指令的錯失率(miss rate)為 ,快取記憶體(cache)存取時間(包含偵測是否命中)為 個時脈週期。
假設讀與寫的錯失懲罰相同,並且忽略寫入停頓(stall),則平均記憶體存取時間(average memory access time)為多少奈秒?請詳細說明計算過程,否則不予計分。
登入後即可作答並保存紀錄。
核心觀念
本題評量計算機結構中記憶體階層架構(Memory Hierarchy)之核心效能指標——平均記憶體存取時間(Average Memory Access Time, AMAT)。
在單層快取記憶體系統架構下,AMAT 的標準定義公式為:
相關參數定義如下:
- 命中時間(Hit Time):快取記憶體存取所需時間(包含判斷是否命中 Tag 比較的時間)。
- 錯失率(Miss Rate):存取快取記憶體時發生未命中的比率。
- 錯失懲罰(Miss Penalty):當快取未命中時,將資料區塊由下一層記憶體搬移至快取並回傳給處理器所需付出的額外等待時間。
- 時脈週期時間(Clock Cycle Time, ):處理器每個時脈週期的實體時間長度。
解題方法
本題為非選擇題(計算題),解題關鍵在於先確認各變數單位,統一以「時脈週期數(Clock Cycles)」或「實體時間(奈秒, ns)」進行推導,最後依題目要求輸出奈秒值。
步驟一:整理題目已知參數
- 時脈週期時間(Clock Cycle Time, ):
- 快取存取時間/命中時間(Hit Time):
- 錯失率(Miss Rate):(即 )
- 錯失懲罰(Miss Penalty):
- 條件限制:讀取與寫入之錯失懲罰相同,且忽略寫入停頓(Write Stall),故無須分開探討讀取與寫入分支。
步驟二:推導與計算
【法一】以時脈週期(Cycles)計算後換算時間:
第 四 題20 分
假設在執行程式時,CPI(clock cycles per instruction)從 變成 ,時脈速率(clock rate)從 變成 ,則執行時間會變成原來的幾倍?請詳細說明計算過程,否則不予計分。
登入後即可作答並保存紀錄。
核心觀念
本題評量計算機架構中最根本的CPU 效能公式(CPU Performance Equation)。
CPU 執行特定程式所需的 CPU 時間(CPU Execution Time,)取決於三個關鍵因子:
- 指令數(Instruction Count, ):程式所執行的機器指令總數。
- 每道指令平均時脈週期數(Clock Cycles Per Instruction, ):執行每道指令平均所需的時脈週期數。
- 時脈速率(Clock Rate / Frequency, ) 或 時脈週期(Clock Cycle Time, ):硬體時脈震盪頻率,兩者互為倒數()。
三者之數學關係式如下:
在執行相同程式且編譯器未改變的前提下,指令數 視為常數,因此執行時間 與 成正比、與時脈速率 成反比。
解題方法
本題為計算問答題,配分關鍵在於列出完整的符號關係式、定義前置假設,並展示乾淨的數值代入與約分過程。
步驟一:定義變數與基本假設
設變更前與變更後執行同一程式之指令數皆為 (即 )。
- 變更前:
- 時脈速率
- 執行時間為
- 變更後:
- 時脈速率
- 執行時間為
步驟二:推導執行時間比值關係式
依 CPU 效能公式列出前後兩者的執行時間:
兩式相除求得變更後相對於變更前的執行時間倍數:
第 五 題20 分
下列組合語言程式:
lw $t1, 0($s3)
add $t0, $t1, $s2
將記憶體裡面的資料載入暫存器 ,然後使用該暫存器的內容於接下來的加法運算。
這樣的程式在管線化(pipelining)時,為什麼會有或沒有危障(hazard)?如果有,是哪一種危障?是否可以利用硬體加速?如果可以,請說明其方法。加速後能不能完全沒有停頓(pipeline stall)?
登入後即可作答並保存紀錄。
核心觀念
本題評量經典 RISC 處理器(以 MIPS 經典五級管線為典型代表)在管線化(Pipelining)架構下的資料相依性控制機制。核心觀念涵蓋:
- 五級管線架構(5-Stage Pipeline):包含取指(IF, Instruction Fetch)、解碼/讀取暫存器(ID, Instruction Decode / Register Read)、執行/計算有效位址(EX, Execution / Address Calculation)、記憶體存取(MEM, Memory Access)及寫回暫存器(WB, Write Back)。
- 資料危障(Data Hazard)與相依性:當後續指令所需讀取的運算元,取決於前一條指令尚未寫回暫存器的運算結果時,發生「先寫後讀」(Read-After-Write, RAW)之資料危障。
- 載入使用危障(Load-Use Data Hazard):負載指令(
lw)的資料必須至 MEM 階段完成後才能產出,若緊鄰的下一條指令在 EX 階段即需要該資料,即形成特有的載入使用相依性。 - 轉發/旁路技術(Forwarding / Bypassing):透過額外的內部資料路徑與多工器(MUX),直接將管線暫存器中新計算出的數值提前送至後續指令的 ALU 輸入端,無需等待資料寫回暫存器檔案。
解題方法
針對題目所給予之指令序列進行時序與管線級數比對:
lw $t1, 0($s3)
add $t0, $t1, $s2
1. 危障產生之成因與類型
- 指令行為分析:
lw $t1, 0($s3):在 Cycle 1 進行 IF,Cycle 2 進行 ID,Cycle 3 於 EX 階段計算記憶體位址($\text{Address} =