A1.1 電腦硬體與運作
電腦硬體與運作(Computer hardware and operation)探討 CPU、記憶體與儲存裝置如何合作執行程式。重點是 CPU 內部元件的功能、fetch–decode–execute 循環、CPU 與 GPU 的差異,以及為什麼電腦需要由快到慢的多層記憶體。
CPU 由哪些元件組成?
中央處理器(Central Processing Unit, CPU)負責執行程式指令,主要元件如下:
| 元件 | 功能 |
|---|---|
| 算術邏輯單元(Arithmetic Logic Unit, ALU) | 執行加減等算術運算與 AND、OR、比較等邏輯運算 |
| 控制單元(Control Unit, CU) | 解碼指令,送出控制訊號協調其他元件 |
| 程式計數器(Program Counter, PC) | 存放「下一條指令」的記憶體位址 |
| 記憶體位址暫存器(Memory Address Register, MAR) | 存放即將讀寫的記憶體位址 |
| 記憶體資料暫存器(Memory Data Register, MDR) | 存放剛從記憶體讀出、或即將寫入的資料 |
| 指令暫存器(Current Instruction Register, CIR) | 存放目前正在解碼與執行的指令 |
| 累加器(Accumulator, AC) | 暫存 ALU 運算結果 |
CPU 透過三種 匯流排(bus) 和記憶體溝通:位址匯流排(address bus)傳送位址、資料匯流排(data bus)傳送資料、控制匯流排(control bus)傳送讀/寫等控制訊號。
Fetch–decode–execute 循環怎麼運作?
CPU 不斷重複以下三個步驟執行程式:
- Fetch(擷取):PC 的位址複製到 MAR,經位址匯流排送到 RAM;RAM 把該位址的指令經資料匯流排送到 MDR,再複製到 CIR;PC 加 1,指向下一條指令。
- Decode(解碼):CU 解讀 CIR 中的指令,判斷要做什麼運算、需要哪些資料。
- Execute(執行):ALU 執行運算,或從記憶體讀取/寫入資料,結果存入 AC 或其他暫存器。
flowchart LR
F["Fetch<br/>PC → MAR → RAM → MDR → CIR"] --> D["Decode<br/>CU 解讀指令"]
D --> E["Execute<br/>ALU 運算 / 存取記憶體"]
E --> F
多核心與管線化如何提升效能?
- 多核心(multi-core):一顆 CPU 內有多個核心,可同時執行多個指令流。程式必須能拆成可平行處理的工作,才能真正受益。
- 管線化(pipelining):當一條指令在執行時,下一條指令已經在解碼、再下一條在擷取,像生產線一樣重疊進行,提高每秒完成的指令數。
CPU 和 GPU 有什麼不同?
圖形處理器(Graphics Processing Unit, GPU)原本為繪圖設計,擁有 數千個簡單核心,擅長對大量資料做同一種運算(平行處理)。
| 比較 | CPU | GPU |
|---|---|---|
| 核心數 | 少(數個到數十個),每個核心很強 | 多(數千個),每個核心較簡單 |
| 擅長 | 複雜邏輯、分支判斷、循序工作 | 大量重複的平行運算 |
| 典型用途 | 作業系統、一般應用程式 | 3D 繪圖、影片編碼、機器學習訓練 |
這就是為什麼訓練神經網路(見 A4 機器學習)通常使用 GPU:矩陣乘法可以拆成大量獨立的小運算同時進行。
為什麼需要多層記憶體?
越快的記憶體越貴、容量越小,所以電腦用 記憶體階層(memory hierarchy) 兼顧速度與容量:
| 層級 | 速度 | 容量 | 是否揮發 |
|---|---|---|---|
| 暫存器(registers) | 最快 | 數百 bytes | 是 |
| 快取(cache,L1/L2/L3) | 很快 | KB–MB | 是 |
| 主記憶體 RAM | 快 | GB | 是 |
| 次要儲存:SSD | 中 | 數百 GB–TB | 否 |
| 次要儲存:HDD | 慢 | TB | 否 |
- RAM(Random Access Memory):存放正在執行的程式與資料,斷電後內容消失(揮發性,volatile)。
- ROM(Read-Only Memory):存放開機程式(例如 BIOS/UEFI 韌體),斷電不消失。
- 快取(cache):位於 CPU 內或旁邊,存放最近或最常使用的資料。CPU 要資料時先查快取,找到稱為 cache hit,找不到(cache miss)才去 RAM 拿,因此快取能大幅降低平均存取時間。
次要儲存裝置有哪些類型?
- 內接(internal):HDD(機械硬碟,用磁頭讀取旋轉磁碟)、SSD(固態硬碟,快閃記憶體,無移動零件)。
- 外接(external):USB 隨身碟、外接硬碟、光碟、記憶卡。
- 網路與雲端儲存:NAS、雲端硬碟,透過網路存取,方便分享與備份,但依賴網路連線。
什麼是嵌入式系統?
嵌入式系統(embedded system)是放在更大裝置裡、只負責特定功能的電腦,例如洗衣機控制器、汽車防鎖死煞車系統(ABS)、智慧手錶。特色是功能固定、資源有限、常需要即時反應與低耗電。
推薦影音
中央處理器 CPU
簡述:Crash Course 用動畫拆解 CPU 如何依 PC、指令暫存器與 ALU 一步步執行程式,正好對應本頁的 fetch–decode–execute 循環。
Fetch–decode–execute 循環與暫存器
簡述:逐一說明 PC、MAR、MDR、CIR、累加器在每個步驟扮演的角色,適合考前複習暫存器之間的資料流向。
進階 CPU 設計:快取、管線化與多核心
簡述:介紹快取、管線化、超純量與多核心如何讓 CPU 更快,對應本頁「多核心與管線化」與「記憶體階層」兩節。
記憶體與儲存裝置
簡述:從打孔卡、磁帶講到硬碟與 SSD,說明不同儲存技術的速度與容量取捨,對應本頁次要儲存裝置一節。
練習題
練習 1:暫存器的角色
在 fetch 階段,PC、MAR、MDR、CIR 的內容依序發生什麼變化?
參考答案
PC 的位址複製到 MAR → 透過位址匯流排向 RAM 要資料 → 指令經資料匯流排放進 MDR → MDR 內容複製到 CIR → PC 加 1 指向下一條指令。
練習 2:快取的效果
說明為什麼增加快取容量通常能提升效能,但不會無限提升。
參考答案
快取越大,cache hit 機率越高,CPU 不必常去較慢的 RAM 取資料。但快取越大成本越高、搜尋時間也會增加,而且程式的存取模式有限,命中率提升到一定程度就趨於飽和。
練習 3:CPU 還是 GPU?
下列工作較適合 CPU 還是 GPU:(a) 訓練影像辨識神經網路;(b) 執行作業系統的檔案管理;(c) 即時算繪 3D 遊戲畫面。
參考答案
(a) GPU,大量矩陣運算可平行化;(b) CPU,包含大量分支判斷與循序邏輯;(c) GPU,每個像素可獨立平行計算。
練習 4:選擇儲存裝置
一位攝影師要在外拍時備份大量照片,應選 HDD、SSD 還是雲端儲存?請說明理由。
參考答案
外拍時建議用外接 SSD:無移動零件、耐震、讀寫快、不需要網路。回到工作室後可再上傳雲端做異地備份。HDD 容量便宜但怕摔,雲端則受限於外拍地點的網路。