Cody Blog

Software development

20分鐘了解 CPU 基本運作

這兩天發現了一個不錯的教學影片,用二十分鐘左右的時間介紹CPU的基本運作原理,相當值得一看。

這個影片主要是來自一本書《But How Do It Know》,天瓏這本代訂購一本賣 946,薄薄的一本,只有2百多頁。這本書虛構了一個Scott CPU來舉例,我看完教學影片做了一些筆記當參考:

Instruction Set

CPU 基於最基本的 Instruction Set 來達成複雜的工作。例如:

  • Load a number from RAM into the CPU
  • ADD two numbers toether
  • STORE a number from the CPU back out to RAM
  • COMPARE one number with another
  • JUMP IF Condition to another address in RAM
  • JUMP to another address in RAM
  • OUTput to a device such as a monitor
  • INput to from a device such as a keyboard

基本元件

從這個影片中,整理一下一些元件的用途

Random access memory(RAM)

其 Random 之意就是代表可以隨意存取某個Addreess的資料。RAM主要分兩部份,Address 和 Data。CPU 可以要求從某個 Address 讀出 Data。而RAM的Data又可以分成好幾種類型: - 指令集 - 數字 - 另一個記憶體位置 - 字元

Control Unit

CPU 可以說是電腦的大腦,而 Control Unit 則可以說是CPU的艦長,負責發號司令負責叫ALU運算跟控制暫存器

Arithmetic Logic Unit(ALU)

負責實際運算的部份,Input 由 Control Unit 控制,運算完的結果透過 Output 或是 Flags 來讓 Control Unit 知道結果

BUS(匯流排)

ALU, Control Unit 和 Register 透過共用的BUS來轉移資料

Register

Register(暫存器)在 CPU 裡面扮演重要的腳色,它們讓 ALU 計算出來的數值可以有地方暫時存放,以供之後的運算。而Control unit 會用set wireenable wire來控制那些 Register 會被寫入,和輸出: - set wire: 讓 ALU 計算完的值可以透過 bus(匯流排)來寫入 register - enable wire: 讓register的值可以輸出到 bus 上

因為多個 Register 彼此共用一個 bus,為了要讓 ALU 可以讀到兩個Input,會在其中一個Input 加入一個 Temp register,讓這個 register 可以暫時鎖死一個值到 ALU,然後另一個值再從Register中用 enable wire直接打到 ALU上 。

其它的Register

  • Instruction register: 把指令的種類輸出到 Control Unit
  • Instruction address register: 下一個指令所在的 address 輸出到 memory address register
  • Memory address register: 把 address 輸出到 Memory

參考連結

CPU

Comments