108 年 國立成功大學製造資訊與系統研究所丙組《計算機組織與系統》
第 1 題
Briefly describe the following terms.
(a) Edge devices. (10%)
(b) Von Neumann machine. (10%)
(c) Internet of Things. (10%)
(d) Cloud computing. (10%)
登入後即可作答並保存紀錄。
核心觀念
本題考查計算機組織與分散式計算系統架構中的四大基礎概念:計算機硬體基礎架構(馮紐曼架構)、分散式網路節點與邊緣算力(邊緣裝置)、實體萬物聯網架構(物聯網),以及中心化彈性運算服務(雲端運算)。考生需掌握計算機內部的指令與資料儲存機制,以及現代計算體系中從「端(IoT/Edge)」到「雲(Cloud)」的資料流向、算力分布與服務維運模式。
解題方法
本題為名詞解釋與系統架構簡答題,切入點採「精確定義 + 核心組成/特徵 + 運作機制與優缺點 + 系統定位」的結構化答題策略。
- 定義精確:開門見山給出專有名詞的標準學術定義。
- 元件與架構列點:明確條列出關鍵組件(如馮紐曼架構的五大單元、物聯網的三層架構、雲端運算的三大服務模型)。
- 系統協同與對比:說明邊緣裝置(Edge Devices)、物聯網(IoT)與雲端運算(Cloud Computing)三者間的算力分工(資料採集 本地低延遲處理 雲端巨量分析與儲存),以及馮紐曼架構作為所有終端與雲端伺服器底層硬體算力的基礎地位。
選項分析
(a) Edge devices(邊緣裝置)
- 核心定義:指位於網路拓撲結構的邊緣端、物理位置接近資料源頭(Data Source)或終端使用者的硬體設備。
- 功能特點:
- 本地算力與預處理:具備獨立的計算、儲存與網路通訊能力,可以在資料傳送至中央雲端前,於本地端進行資料過濾、特徵提取或即時推論(Edge Computing)。
- 關鍵效益:
- 超低延遲(Low Latency):不需經過漫長的雲端往返傳輸,可進行毫秒級的即時反應。
- 頻寬節省(Bandwidth Optimization):僅傳送過濾後的關鍵資料或統計結果至雲端,降低主幹網路負荷。
- 隱私與安全性(Privacy & Security):敏感資料保留在本地端處理,減少資料在網路傳輸中洩漏的風險。
- 代表設備:智慧型手機、智慧攝影機、工業物聯網網關(Industrial Gateways)、車載邊緣運算單元(ECU)。
(b) Von Neumann machine(馮紐曼機器 / 馮紐曼架構)
- 核心定義:由約翰·馮紐曼(John von Neumann)於 1945 年提出的一種計算機硬體設計架構,其最核心的精神為儲存程式概念(Stored-Program Concept)。
- 五大基本組成單元:
- 算術邏輯單元(Arithmetic Logic Unit, ALU):負責執行算術與邏輯運算。
- 控制單元(Control Unit, CU):含有程式計數器(Program Counter, PC)與指令暫存器(Instruction Register, IR),負責指令擷取、解碼與控制信號發送。
- 記憶體(Memory):同時存放指令(Instructions)與資料(Data),且共享同一個定址空間。
- 輸入設備(Input Device):接收外部資料與指令。
- 輸出設備(Output Device):輸出運算結果。
- 運作機制:遵循**擷取(Fetch) 解碼(Decode) 執行(Execute)**的順序性循環。
- 主要瓶頸(Von Neumann Bottleneck):由於指令與資料共用同一組記憶體匯流排(Data/Instruction Bus),當 CPU 運算速度遠快於記憶體存取速度時,匯流排的傳輸頻寬限制會成為整體電腦效能的瓶頸。
(c) Internet of Things (IoT, 物聯網)
- 核心定義:將嵌入感測器(Sensors)、軟體、微處理器與無線通訊模組的各類實體物件("Things")連接至網際網路,實現物與物(M2M)、物與人之間自動化收集、交換與處理資料的網路生態體系。
- 經典三層體系架構:
- 感測層(Perception Layer):利用感測器、RFID、GPS 等硬體採集物理世界的溫濕度、位置、圖像等資料。
- 網路層(Network Layer):利用 Wi-Fi、Bluetooth、5G、LoRa、NB-IoT 等通訊協定,將資料安全傳送至集中站台或網關。
第 2 題
The following program tries to copy words from the address in register al and count the number of words copied in register v1, al. This terminating word should be copied but not counted.
Loop: lw a0)
addi v0, 1
sw al)
addi a0, 1
addi al, 1
bne zero, loop
There are multiple bugs in this MIPS program. Please fix them and turn in bug-free version. (10%)
登入後即可作答並保存紀錄。
核心觀念
本題考查 MIPS 組合語言的程式除錯與基本架構設計,核心觀念包含:
- MIPS 暫存器命名慣例(Register Conventions):引數暫存器為
$a0~$a3,傳回值/計數暫存器為$v0~$v1。需注意暫存器名稱拼寫是否符合規範。 - 位元組定址與 Word 對齊(Byte Addressing & Word Alignment):MIPS 記憶體以位元組(Byte)為基本定址單位,一個 Word 的長度為 32 bits(即 4 位元組)。因此記憶體位址指標若要指向下一個 Word,必須每次加 4,而非加 1。
- 控制流程與條件邊界判斷(Off-by-One Control Flow):處理字串或陣列複製時,需精確控制「複製(Copy)」與「計數(Count)」的順序。本題要求終端字
0必須被複製至目標位址,但不可納入累加計數。 - 標籤大小寫敏感性(Case Sensitivity):MIPS 組譯器對標籤區分大小寫,跳躍指令的目標標籤必須與定義完全一致。
解題方法
解決 MIPS 組合語言除錯題時,切入點為逐行追蹤暫存器狀態與記憶體位址變化,對照題目規格需求比對出邏輯與語法漏洞:
- 初期化檢查:檢查計數暫存器
$v0是否在進入迴圈前清零(初始化為 0)。 - 語法與拼寫檢查:檢查暫存器名稱與標籤名稱是否正確。
- 位址計算檢查:檢查記憶體指標移動量是否符合 MIPS 位元組定址(Word 移動需 )。
- 執行順序與邏輯檢查:確保「載入 存入 終止判斷 計數累加 位址更新」的流程滿足「複製終端字但不計數」的要求。
程式除除錯剖析(原程式 Bugs 說明)
原題目程式碼共有以下 5 點 major bugs:
- 暫存器名稱拼寫錯誤(Register Typo):
- 原程式使用
0($al)與addi $al, $al, 1。在 MIPS 架構中不存在$al暫存器(此為字母 l 與數字 1 之誤寫),目標位址引數暫存器應更正為$a1。
- 原程式使用
- 記憶體指標累加量錯誤(Byte vs. Word Offset):
- 原程式使用
addi $a0, $a0, 1與addi $a1, $a1, 1。由於 MIPS 採用位元組定址(Byte Addressing),存取 Word 時若指標僅加 1,會造成記憶體存取未對齊(Alignment Exception)且讀取到錯誤位址。前進至下一個 Word 必須改為加 4(addi $a0, $a0, 4及addi $a1, $a1, 4)。
- 原程式使用
- 計數器邏輯錯誤(Terminating Word Count Error):
- 原程式將
addi $v0, $v0, 1放在lw之後、條件判斷之前。當讀取到終端字0時,也會先將$v0加 1 才結束迴圈,違背了題目「終端字需複製但不計數」的要求。
- 原程式將
- 暫存器未初始化(Uninitialized Register):
- 題目要求用
$v0計算複製的 Word 數,但原程式在迴圈開頭前並未初始化 `
- 題目要求用
第 3 題
Please explain the following designs.
(a) What are the difference in architecture design between CPU and GPU? (10%)
(b) Why does GPU perform better than CPU in executing deep learning applications? (10%)
登入後即可作答並保存紀錄。
核心觀念
本題旨在考驗計算機組織與結構(Computer Organization and Architecture)中,通用處理器(CPU)與圖形處理器(GPU)的晶片架構設計哲學(Design Philosophy)差異,以及硬體架構與特定工作負載(Workload Characteristics)的匹配關係。
核心概念與定義包括:
- CPU 架構哲學(Latency-Oriented Architecture):針對通用計算設計,著重於降低單一執行緒的指令執行延遲(Low Latency)。
- GPU 架構哲學(Throughput-Oriented Architecture):針對圖形與並行計算設計,著重於提高巨量資料的整體處理吞吐量(High Throughput)。
- 隱藏延遲機制(Latency Hiding):CPU 透過龐大的快取(Cache)與複雜的控制邏輯(Control Logic)來「減少延遲」;GPU 則透過巨量執行緒的快速切換(Context Switching)來「隱藏延遲」。
- 深度學習運算特質:以多維張量(Tensor)與矩陣乘加運算(GEMM, General Matrix Multiply)為主,具有極高的資料並行性(Data Parallelism)與記憶體頻寬需求(Memory Bandwidth Bound)。
解題方法
本題為經典的架構申論與比對題,切入點分為兩大階段:
-
(a) 小題切入點:五大架構維度對比法
從晶片資源配置(Chip Area Allocation)的角度出發,橫向對比 CPU 與 GPU 在以下五個核心模組的設計差異:- 算術邏輯單元(ALU / Cores)
- 控制單元(Control Logic)
- 快取記憶體(Cache Hierarchy)
- 執行緒模型(Execution/Thread Model: MIMD/OoOE vs. SIMD/SIMT)
- 記憶體頻寬(Memory Bandwidth)
-
(b) 小題切入點:工作負載與硬體特性匹配法(Workload-Hardware Alignment)
先歸納深度學習(Deep Learning)應用的特徵,再逐一對應 GPU 的硬體優勢:- 運算特性:巨量矩陣乘加運算 對應 GPU 的 SIMT 大規模並行架構。
- 控制特性:控制流規律、分支少 對應 GPU 精簡控制邏輯、高 ALU 晶片面積佔比。
- 訪存特性:參數搬移量極大 對應 GPU 的超高記憶體頻寬(GDDR / HBM)。
- 專用加速:混合精度運算需求 對應 GPU 的專用矩陣加速核心(Tensor Cores)。
選項分析
(註:本題為研究所考試之「申論問答題」,無固定選擇選項。以下針對兩小題的各個架構設計維度與論點進行深度拆解分析,明確釐清正誤觀念與系統設計之權衡):
(a) CPU 與 GPU 架構設計差異之維度拆解分析
-
ALU(算術邏輯單元)配置與算力密度分析:
- CPU:晶片上僅配置少數(數個至數十個)強大的 ALU。時脈高(可達 ),單核執行複雜邏輯時延遲極低。
- GPU:晶片上配置數千甚至上萬個相對簡單的算術運算單元(如 CUDA Cores)。時脈較低(約 ),但總浮點數運算能力(FLOPS)高出 CPU 數個數量級。
-
Control Logic(控制邏輯)複雜度分析:
- CPU:控制邏輯極度複雜,佔據大量晶片面積。配備動態分支預測器(Branch Predictor)、亂序執行(Out-of-Order Execution, OoOE)引擎、推測執行(Speculative Execution)與超純量(Superscalar)排程器,旨在確保複雜條件判斷與分支時不卡頓。
- GPU:控制邏輯極精簡。採用單指令多資料(SIMD)或單指令多執行緒(SIMT)模型,讓多個 ALU(例如 32 個執行緒組成的 Warp)共用同一個控制單元與解碼器,顯著節省晶片面積以容納更多 ALU。
-
Cache(快取記憶體)與延遲處理哲學分析:
- CPU:採用大容量、多階層(L1, L2, L3)快取,佔用晶片一半以上的面積。目標為減少記憶體存取延遲(Reduce Latency),盡量讓資料保留在 SRAM 快取中。
- GPU:快取容量相對較小,主要作資料暫存與頻寬緩衝。GPU 不試圖避免延遲,而是採用**並行隱藏延遲(Hide Latency via Parallelism)**策略:當某組執行緒等待記憶體載入時,硬體排程器會在單一週期內無縫切換(Zero-overhead Context Switch)至另一組已準備好的執行緒執行。
-
Memory Hierarchy(記憶體架構)與頻寬分析:
- CPU:搭配主記憶體(DDR4/DDR5),強調低延遲存取(Low Latency Access),頻寬通常在 。
- GPU:搭配專用高頻寬記憶體(GDDR6/GDDR6X 或 HBM2/HBM3),透過極寬的通道匯流排(如 4096-bit)提供高達 的超高頻寬,專門處理大量資料串流。
(b) GPU 在深度學習應用效能超越 CPU 之原因拆解分析
-
資料並行性(Data Parallelism)與 SIMT 架構完全契合:
- 深度學習(如 CNN, Transformer, MLP)的核心運算為神經元權重與輸入特徵的張量相乘與卷積,算術運算具備高度獨立性(無資料相依性 Data Dependency)。
- GPU 的 SIMT 架構可同時派遣數萬個執行緒平行計算各個神經元節點,相較於 CPU 僅能處理由數個核心進行的多執行緒處理,GPU 展現出極致的平行加速能力。
-
高記憶體頻寬突破「記憶體牆(Memory Wall)」:
- 深度學習模型包含數億至數千億個參數,訓練與推論過程中需頻繁搬移權重矩陣。
- CPU 受限於系統 DRAM 頻寬,會面臨嚴重的記憶體受限(Memory Bound);
第 4 題
Define zero, de-normalized number, floating point number, infinity, and NaN (Not a Number) in IEEE 754 double precision format by giving the range of their exponents and significands, respectively. Give your answer as the following format. (20%)
| exponent | significand | |
|---|---|---|
| zero | ||
| de-normalized | ||
| floating point | ||
| infinity | ||
| NaN |
登入後即可作答並保存紀錄。
核心觀念
IEEE 754 double precision 採用 64 位元格式:
- 1 位元符號位元
- 11 位元指數欄位
- 52 位元 fraction 欄位
指數偏移量為
對於一般正規化有限數:
其中隱含最高位的 ,因此有效數字(significand)為 。
解題方法
先依照指數欄位 是否為全 0、介於兩者之間、或全 1,判斷資料類型:
- 且 :表示零。
- 且 :表示非正規化數(denormalized number,也稱 subnormal number)。
- :表示一般正規化浮點數。
- 且 :表示無限大。
- 且 :表示 NaN。
| 類型 | exponent | significand |
|---|---|---|
| zero | ,有效數字為 | |
| de-normalized | ,有效數字為 | |
| floating point | ,即 | ,範圍為 |
| infinity | ,即 | |
| NaN | ,即 |
各類型詳細說明
1. Zero
零的指數欄位與 fraction 欄位全部為 :
此時不使用一般正規化數的隱含最高位 ,有效數字為 。由於符號位元仍可區分,因此 IEEE 754 同時具有 與 。
2. De-normalized number
非正規化數的指數欄位為全 ,但 fraction 欄位不為 :
此時有效數字沒有隱含最高位 ,而是
其有效指數固定視為 ,數值形式為
對非零最小值而言:
因此正的非正規化數範圍為
第 5 題
Write a C program which exhibits the temporal and spatial localities. The C program cannot exceed 5 lines. (10%)
登入後即可作答並保存紀錄。
核心觀念
本題考驗計算機組織與結構中**局部性原理(Principle of Locality)**的概念與 C 語言程式碼實作能力。局部性原理是快取記憶體(Cache Memory)能有效提升系統效能的核心基礎,分為以下兩種:
-
時間局部性(Temporal Locality):
若某個記憶體位址(資料或指令)被存取,則在不久的將來該位址極有可能被再次存取。- 典型表現:迴圈控制變數(如
i)、重複寫入的累加器(如sum)以及重複執行的迴圈指令。
- 典型表現:迴圈控制變數(如
-
空間局部性(Spatial Locality):
若某個記憶體位址被存取,則位於其相鄰位置的記憶體位址在不久的將來極有可能被存取。- 典型表現:一維陣列在記憶體中為連續配置,以
a[i]循序走訪陣列時,會依序存取相鄰位址;此外,程式計數器(PC)順序抓取下一條指令亦屬於空間局部性。
- 典型表現:一維陣列在記憶體中為連續配置,以
解題方法
題目要求寫出同時展現「時間局部性」與「空間局部性」的 C 語言程式,且總行數不得超過 5 行。
關鍵程式碼實作
int main() {
int a[100] = {0}, sum = 0;
for (int i = 0; i < 100; i++)
sum += a[i];
return 0;
}
程式碼運作邏輯與局部性推導
- 第 1 行 (
int main() {):主函式進入點。 - 第 2 行 (
int a[100] = {0}, sum = 0;):
配置大小為 位元組的連續記憶體空間予陣列a並初始化,同時宣告累加器變數sum。 - 第 3-4 行 (
for (int i = 0; i < 100; i++) sum += a[i];):- 時間局部性體現:變數
sum與迴圈計數器i在迴圈執行的 100 次迭代中被重複讀取與寫入(多次存取相同記憶體位址)。迴圈內的機器指令亦被抓取(Fetch)並執行 100 次。 - 空間局部性體現:陣列
a採用連續記憶體配置,程式透過a[0], a[1], ..., a[99]依序存取相鄰位址。
- 時間局部性體現:變數