歡迎來到電腦的心臟!

你有沒有想過,你的電腦在每一毫秒內到底在做什麼?這不是魔法,而是一個非常快速且嚴謹的流程,稱為提取-執行週期(Fetch-Execute Cycle)。你可以把它想像成 CPU 的心跳。在本指南中,我們將拆解電腦如何處理指令,以及當突發狀況需要引起它的注意時(中斷 Interrupts)會發生什麼事。

如果剛開始覺得這些內容有點「硬」,別擔心!我們會一步一步慢慢學!

1. 主要角色:認識暫存器 (Registers)

在進入週期之前,我們先來認識暫存器。這些是位於處理器(Processor)內部的超高速微型儲存空間。你可以把它們想成是 CPU 用來記錄當下急需資料的「便利貼」。

專用暫存器

  • 程式計數器 (Program Counter, PC): 保存下一條要提取的指令的記憶體位址。它就像書籤一樣,告訴 CPU 目前在書中的位置。
  • 記憶體位址暫存器 (Memory Address Register, MAR): 保存目前要存取的記憶體位址(用於讀取或寫入資料)。
  • 記憶體緩衝暫存器 (Memory Buffer Register, MBR): 保存剛從記憶體提取出來,或即將寫入記憶體的資料或指令。
  • 現行指令暫存器 (Current Instruction Register, CIR): 保存目前正在解碼 (decode)執行 (execute) 的指令。
  • 狀態暫存器 (Status Register, SR): 保存用來標示運算結果的「旗標 (flags)」(位元),例如「剛才的算術運算結果是零嗎?」或「發生了溢位錯誤嗎?」。

指揮官

  • 控制單元 (Control Unit, CU): 這是老大。它負責協調 CPU 的所有活動,並利用時鐘 (Clock) 來保持所有作業同步。
  • 算術邏輯單元 (Arithmetic Logic Unit, ALU): 這是計算機。它處理所有數學運算(如加法)和邏輯運算(如比較兩個數值的大小)。

快速回顧: PC 指向下一步,MAR 指向一個位址,MBR 負責存放資料,而 CIR 則負責存放當下的工作。

你知道嗎? 時鐘並不是用來看時間的。它會發出恆定的脈衝(以 Gigahertz 為單位),告訴 CPU 何時該執行週期的下一步!

2. 提取-執行週期:逐步拆解

電腦每秒會執行數十億次這樣的週期。它主要分為三個階段:提取 (Fetch)解碼 (Decode)執行 (Execute)

階段 1:提取 (Fetch)

這是 CPU 從主記憶體 (RAM) 取得指令的過程。

  1. 程式計數器 (PC) 中的位址複製到記憶體位址暫存器 (MAR)
  2. PC 遞增(加 1),為下一個週期做好準備。
  3. 記憶體中位於 MAR 指定位址的指令,會透過資料匯流排 (Data Bus) 傳送,並儲存到記憶體緩衝暫存器 (MBR)
  4. 將指令從 MBR 複製到現行指令暫存器 (CIR)

階段 2:解碼 (Decode)

CPU 需要釐清該指令的實際含義。

  • 控制單元 (CU) 會檢視 CIR 中的指令。
  • 它會將指令拆分為運算碼 (Opcode)(要做什麼,例如「ADD」)和運算元 (Operand)(對什麼資料做,例如記憶體位址或具體數值)。

階段 3:執行 (Execute)

現在,CPU 開始真正的工作!

  • 若涉及數學或邏輯運算,ALU 會進行計算。
  • 資料可能從記憶體載入或存入記憶體。
  • 運算結果會儲存在暫存器中,或透過 MBR 送回記憶體。

類比時間:廚房裡的廚師
想像一位廚師(即 CPU):
1. 提取: 廚師查看工作台上的食譜卡(指令)。
2. 解碼: 廚師閱讀卡片內容,明白上面寫著「切洋蔥」。
3. 執行: 廚師開始動手切洋蔥!

重點總結: 整個週期使用匯流排 (Buses) 來傳遞資訊(位址匯流排用於找位置,資料匯流排用於攜帶實際資料,而控制匯流排則用於傳送「讀取」或「寫入」等訊號)。

3. 中斷:那句「不好意思!」

電腦非常忙碌!有時硬體裝置(例如印表機沒紙了)或軟體程式需要 CPU 立即處理某些事情,這就稱為中斷 (Interrupt)

CPU 如何處理中斷?

CPU 不會直接中斷手邊的工作。相反,它會在每個提取-執行週期結束時檢查是否有中斷請求。

  1. 在週期結束時,CPU 會檢查「中斷線」是否有訊號。
  2. 如果偵測到中斷,CPU 會完成當前工作,然後儲存其揮發性環境 (Volatile Environment)
  3. CPU 隨後執行一個名為中斷服務常式 (Interrupt Service Routine, ISR) 的特殊程式來處理問題。
  4. ISR 完成後,CPU 會恢復之前儲存的狀態,回到剛才中斷的地方繼續工作。

什麼是「揮發性環境」?

如果你在看書時有人叫你,你會放個書籤以免忘記看到哪裡。CPU 也是如此。它會儲存暫存器的內容以便稍後繼續工作,包括:

  • 程式計數器 (PC)(讓 CPU 知道下一條指令是什麼)。
  • 狀態暫存器 (SR)
  • 堆疊指標 (Stack Pointer) 及其他通用暫存器。

常見誤區: 學生常以為中斷發生的那一瞬間 CPU 就會停下來。錯的!它一定會先完成當前的提取-執行週期,之後才會處理中斷。

重點總結: 中斷機制讓電腦更有效率。CPU 不需要在那乾等慢速的印表機完成工作,而是可以去執行其他任務,等到印表機發出「我準備好了!」的中斷訊號時才回來處理。

快速總結檢查清單

  • 你能列出所有暫存器嗎? (PC, MAR, MBR, CIR, SR)
  • 你知道週期的三個階段嗎? (提取 Fetch, 解碼 Decode, 執行 Execute)
  • 你能解釋 MARMBR 如何協作嗎? (MAR = 「在哪裡?」,MBR = 「資料在這!」)
  • 你知道為什麼在中斷期間要儲存揮發性環境嗎? (為了確保能準確地恢復原始程式的進度。)

做得好!你已經掌握了每台電腦系統中最核心的「心跳」機制。