👋 歡迎來到電腦的核心世界!

大家好!本章節「電腦的內部硬體組件」是電腦組織與架構(Computer Organisation and Architecture)的核心基石。別擔心,即使那些縮寫(ALU、MAR、MBR!)看起來很嚇人,我們將會一步步為大家拆解。
理解這些組件就像是檢視超跑的引擎。一旦你了解各個部件是如何連結與溝通的,你就會明白電腦是如何精確執行你給予的每一道指令。讓我們開始吧!

3.7.1 基本內部組件

電腦系統是由多個關鍵的內部組件所組成,它們以協調的方式共同運作以處理資訊。

關鍵成員(組件)

  • 處理器 (CPU):電腦的「大腦」。它負責執行指令並管理資料的流動。
  • 主記憶體 (RAM):這是一種暫時且高速的儲存空間,用來存放 CPU 當前正在使用的程式與資料。
  • 輸入/輸出控制器 (I/O Controllers):這些是特殊的晶片,扮演中間人的角色,管理 CPU 與周邊設備(如鍵盤、印表機或磁碟機)之間的溝通。

溝通系統:匯流排 (Buses)

各個組件需要不斷地進行溝通。它們是透過一組組平行的電線來達成,這些電線稱為匯流排 (Buses)。你可以把匯流排想像成連結電腦城市各個角落的「高速公路」。

匯流排主要有三種類型,每一種都有特定的工作:

1. 位址匯流排 (Address Bus)

位址匯流排負責攜帶 CPU 想要讀取或寫入資料的記憶體位置(即位址)。
比喻:這就像是郵遞區號或地址,用來指定目的地。

  • 它是單向的 (unidirectional)(資料流動只有一個方向:從 CPU 到記憶體/I/O 控制器)。
  • 位址匯流排的寬度決定了最大可定址記憶體容量(CPU 可以存取多少個唯一的記憶體位置)。
    • 如果位址匯流排有 \(n\) 條線(位元),它就能存取 \(2^n\) 個位址。
    • 範例:32 位元的位址匯流排可以存取 \(2^{32}\) 位元組(4 GB)的記憶體。
2. 資料匯流排 (Data Bus)

資料匯流排負責攜帶 CPU 與主記憶體或 I/O 控制器之間移動的實際資料或指令

  • 它是雙向的 (bidirectional)(資料流動可以是往返於 CPU)。
  • 資料匯流排的寬度(稱為字組長度 (word length)資料匯流排寬度)決定了 CPU 在單一操作中可以處理或移動多少位元。
3. 控制匯流排 (Control Bus)

控制匯流排負責傳輸來自 CPU 的控制訊號(指令),以協調並管理所有活動。

  • 它是雙向的(攜帶來自 CPU 的「讀取」或「寫入」等指令,以及來自其他組件的「就緒 (Ready)」等狀態訊號)。
  • 範例:「記憶體寫入 (Memory Write)」訊號會告訴主記憶體接收目前資料匯流排上的資料,並將其存入位址匯流排上指定的位址。
重點總結:匯流排系統

如果 CPU 想要取得位於 100 號位址的指令:
1. 位址匯流排攜帶 100(單向)。
2. 控制匯流排攜帶 「讀取 (Read)」訊號(雙向)。
3. 資料匯流排將 指令/資料 傳回給 CPU(雙向)。

3.7.2 處理器及其組件

處理器 (CPU) 由幾個關鍵的功能單元以及小型高速儲存空間(稱為暫存器 Register)所組成。

功能單元

  • 算術邏輯單元 (ALU):執行所有的算術計算(如加法、減法)與邏輯運算(如 AND、OR、NOT、比較)。
  • 控制單元 (CU):管理整個 CPU 的運作。它會解碼指令、控制 CPU 與其他設備之間的資料流,並透過控制匯流排發送時序與控制訊號。
  • 時鐘 (Clock):提供時序訊號(脈衝),用來同步 CPU 及其他組件內的所有運作。每個脈衝都標誌著一個新操作的開始。

暫存器:高速暫存空間

暫存器是位於 CPU 內部極小且極快的記憶體位址。它們負責保存 Fetch-Execute 週期中所需要的暫時數值。

專用暫存器(各司其職的專家)

這些暫存器有特定且固定的角色:

  1. 程式計數器 (PC):儲存下一個即將從記憶體取得的指令位址(它永遠指向下一個目標!)
  2. 現行指令暫存器 (CIR):儲存當前正在被解碼與執行的指令。
  3. 記憶體位址暫存器 (MAR):儲存 CPU 想要存取(讀取或寫入)的資料或指令所在的記憶體位址。
  4. 記憶體緩衝暫存器 (MBR)(亦稱為記憶體資料暫存器 MDR):暫時保存剛從記憶體取出的資料或指令,或是等待存入記憶體的資料。
  5. 狀態暫存器 (SR):包含由 ALU 在運算後設定的旗標(單個位元),用來表示運算狀態,例如結果是否為零、是否發生溢位 (overflow),或是否有中斷請求待處理。

此外還有通用暫存器 (General-Purpose Registers),供程式設計師在計算過程中暫存資料數值,從而減少存取主記憶體的頻率。

暫存器記憶小撇步

MAR:記憶體 位址 (Address) 暫存器(存放位址)。
MBR:記憶體 緩衝 (Buffer) 暫存器(存放位元 (Bits)/資料)。
PC:程式計數器 (Program Counter)(指向下一個代碼 (Next Code))。
CIR:現行指令暫存器 (Current Instruction Register)(存放當前代碼 (Code Now))。

3.7.3 取指令-執行週期 (Fetch-Execute Cycle) 與中斷

儲存程式概念 (Stored Program Concept) 指出:機器碼指令(程式)存放在主記憶體中,並由處理器序列式地取出與執行,處理器則負責進行算術與邏輯運算。
CPU 為了執行此儲存程式而不斷運行的循環,即稱為取指令-執行週期 (Fetch-Execute Cycle)

取指令-執行週期(連續迴圈)

階段 1:取指令 (Fetch)

目標是從記憶體取出下一個指令。

  1. PC 中的位址複製到 MAR
  2. 將 PC 的值遞增(通常加 1,為下一個指令做好準備)。
  3. 經由資料匯流排從 MAR 所指的位址取出指令,並暫存於 MBR 中。(控制匯流排發出「讀取」指令)。
  4. 將 MBR 中的指令複製到 CIR
階段 2:解碼 (Decode)

控制單元檢視 CIR 中的指令並進行解讀。

它會確定:需要執行什麼操作?以及該操作所需的資料(運算元)在哪裡? 接著 CU 會準備好所需的控制訊號。

階段 3:執行 (Execute)

執行該指令。

  • 如果是算術/邏輯運算,則由 ALU 負責執行。
  • 如果涉及存取記憶體(載入或儲存資料),則再次使用 MAR 與 MBR。
  • 狀態暫存器 (SR) 會根據執行結果進行更新。

一旦執行完成,週期便會重新開始,取出由 PC 當前所指的下一個指令。

中斷 (Interrupts):處理突發事件

中斷是發送給 CPU 的訊號,用來暫停當前進程,並使 CPU 切換到另一個任務(通常是優先級更高的任務)。

你知道嗎?中斷是非常重要的!沒有它們,你的 CPU 就必須不斷停止主要工作去檢查滑鼠是否移動了,這效率會極低。

中斷與中斷服務常式 (ISR) 的角色
  • 中斷可以由硬體產生(例如印表機完成工作時的 I/O 控制器),或是由軟體產生(例如除以零的錯誤)。
  • 在執行階段結束後,CPU 會檢查狀態暫存器 (SR),看看是否有待處理的中斷。
  • 如果發生中斷,CPU 會暫停當前的 Fetch-Execute 週期,並透過中斷服務常式 (ISR) 來處理中斷。
儲存不穩定環境(Context Switching,上下文切換)

在執行 ISR 之前,CPU 必須儲存被中斷任務的狀態。這些被儲存的資訊稱為不穩定環境 (volatile environment) 或上下文,通常會被推入 (push) 主記憶體中的堆疊 (stack) 裡。

不穩定環境包含:

  • 程式計數器 (PC) 的當前值(即返回位址,讓 CPU 知道之後該回到哪裡)。
  • 狀態暫存器 (SR) 的內容。
  • 其他可能被 ISR 修改的專用暫存器內容(如 MAR、MBR、CIR)。

一旦 ISR 完成,不穩定環境會被復原(從堆疊中彈出 pop),CPU 便會從儲存的返回位址恢復執行原始程式。

重點總結:CPU 週期

CPU 不斷地在以下迴圈中運行:取指令 (Fetch)、解碼 (Decode)、執行 (Execute)、檢查是否有中斷。

3.7.1 & 3.7.2 架構模型

電腦科學家在設計處理器與記憶體的關係時,主要有兩種方式,特別是在處理指令與資料的方式上。

1. 馮紐曼架構 (Von Neumann Architecture)

這是傳統且最常見的模型(用於典型的桌上型電腦)。

  • 它使用單一共享記憶體空間來存放資料指令
  • 它使用單一匯流排系統(位址匯流排、資料匯流排、控制匯流排)在 CPU 與記憶體之間傳輸資料與指令。
  • 優點:設計與管理較簡單。記憶體容量利用率高。
  • 缺點:會遭受馮紐曼瓶頸 (Von Neumann Bottleneck) 的困擾——由於相同的匯流排被用於所有事務,CPU 在同一時間內只能進行「取指令」或「存取資料」,這會拖慢執行速度。

2. 哈佛架構 (Harvard Architecture)

這種架構將記憶體與匯流排路徑分開。

  • 它為指令與資料使用獨立的記憶體空間
  • 它為指令傳輸與資料傳輸使用獨立的匯流排系統
  • 優點:CPU 可以同時取出指令並存取資料,這大幅提升了速度,並允許管線化 (pipelining)(在執行當前指令的同時進行下一次取指令)。
  • 缺點:硬體較複雜;記憶體靈活性較低(你必須預先分配空間專門用於指令,並另外分配專門用於資料)。

在實作上,現代的高效能處理器內部通常會採用修改過的哈佛架構(特別是針對快取記憶體),以獲取速度優勢,同時對外仍表現為馮紐曼機器。

3.7.4 影響處理器效能的因素

並非所有的 CPU 都是一樣的!有幾個因素會影響處理器執行程式的速度與效率。

1. 時鐘速度 (Clock Speed)

這是時鐘產生脈衝的速率,以赫茲 (Hz) 為單位(例如 3.0 GHz)。

  • 影響:更高的時鐘速度意味著每秒可以完成更多的 Fetch-Execute 週期,從而實現更快的處理速度。

2. 多核心 (Multiple Cores)

核心基本上是一個獨立的處理單元(擁有自己的 ALU、CU 與暫存器)。

  • 影響:更多的核心讓處理器能夠同時執行多個指令(平行運算),這對於多工處理或執行特別設計的程式來說,能大幅提升效能。

3. 快取記憶體 (Cache Memory)

這是極少量的超高速記憶體,直接位於 CPU 晶片上(L1、L2)或非常接近的地方(L3)。

  • 影響:快取存放了頻繁存取的資料與指令。如果 CPU 在快取中找到了需要的東西(稱為「快取命中 Cache hit」),就能避開存取速度慢得多的主記憶體,進而大幅提升速度。

4. 字組長度與匯流排寬度

字組長度指的是 CPU 一次處理的位元數(例如 32 位元或 64 位元系統)。

  • 資料匯流排寬度:較寬的資料匯流排(例如 64 位元而非 32 位元)允許在一個時鐘週期內於 CPU 與記憶體之間傳輸更多資料。高速公路車道越多 = 交通流量越快。
  • 位址匯流排寬度:較寬的位址匯流排意味著 CPU 可以存取更大範圍的記憶體位置。
快速複習:效能加速器

更高的時鐘速度 = 每秒執行更多週期。
更多核心 = 同時完成更多任務。
更大/更快的快取 = 等待主記憶體的時間更少。
更寬的匯流排 = 每個週期移動更多資料。

3.7.5 輔助儲存裝置 (Secondary Storage)

雖然主記憶體 (RAM) 很快,但它是揮發性 (volatile) 的——一旦斷電,所有資料都會遺失。我們需要輔助儲存裝置來在電腦關機時永久保存程式、檔案與作業系統。

特性與設備

1. 傳統硬碟 (HDD)

運作原理:透過磁性將資料儲存在旋轉的金屬碟片上。讀寫頭懸浮在碟片表面上方,透過改變或偵測磁極(代表 1 與 0)來進行讀寫。

  • 用途:高容量、符合成本效益,用於儲存大量資料與備份。
  • 主要特性:包含移動的機械部件(碟片、手臂、讀寫頭),容易受到物理衝擊影響,且存取資料速度較慢。
2. 固態硬碟 (SSD)

運作原理:使用快閃記憶體 (flash memory)(類似大型隨身碟)以電子方式儲存資料。資料儲存在電路中,沒有任何移動部件。

  • 用途:快速開機、高速程式載入以及整體的系統反應速度。
  • 主要特性:存取時間遠快於 HDD,安靜運作,對震動有很強的耐受性,但通常每 GB 的成本較高。
3. 雲端儲存 (Cloud Storage)

定義雲端儲存是指將資料儲存在位於遠端(通常是大規模資料中心)的伺服器上,並透過網際網路進行存取。

  • 相對於本地儲存的優點:可從任何地點/設備存取;備份/復原更容易;可擴展性(隨需購買空間)。
  • 相對於本地儲存的缺點:需要網際網路連線;速度取決於連線品質(延遲);有安全與隱私顧慮(資料由第三方儲存)。

如果覺得細節很多,別擔心!請記住所有組件都在一個美麗且快速的週期中共同運作。專注於每個組件的工作職責——只要你知道 MAR 的用途(存放位址),你就能輕鬆追蹤整個 Fetch 週期!持續複習這些關鍵角色,你一定能掌握這個單元。祝你好運!