計算機的心臟"中央處理單元",簡稱 "CPU"。
CPU 負責執行程序,程序由一個個操做(又叫指令,指示"計算機要作什麼)組成。
若是是數學指令,好比加/減,CPU 會讓 ALU 進行數學運算,也多是內存指令,CPU 會和內存通訊,而後讀/寫值。架構
2.1 組件性能
2.2 解析CPU執行程序的過程
如下爲須要執行的四條指令
fetch
2.2.1 執行第一條指令 LOAD_A
(1)當啓動計算機時,全部寄存器從 0 開始。優化
(2)進入第一階段"取指令階段"(fetch phase),負責拿到指令。
首先,將 "指令地址寄存器" 連到 RAM,寄存器的值爲 0,所以 RAM 返回地址 0 的值。
spa
而後,0010 1110 會複製到 "指令寄存器" 裏。
code
(3) "解碼階段"
指令拿到了,要弄清是什麼指令,才能執行,即 "解碼階段"。視頻
8位的指令:用前四位存 "操做代碼",簡稱 "操做碼" (opcode)對應指令表中的指令。後四位表明數據來自哪裏,能夠是寄存器或內存地址。
(4) "執行階段"
知道了是什麼指令,開始 "執行階段"。
步1:取值。用 "控制單元"打開 RAM 的 "容許讀取線", 把地址 14 傳過去,從RAM的地址14中拿到值0000 0011,十進制的 3。ip
步二:存值。根據 LOAD_A 指令的要求 , 要把取到的值只放到寄存器 A,其餘寄存器不受影響,因此使用一根線,把 RAM 連到 4 個寄存器。
步三:用 "控制單元" 啓用寄存器 A 的 "容許寫入線"。
步四: 內存
成功把 RAM 地址 14 的值,放到了寄存器 A。數學
步五:LOAD_A 指令完成,"執行階段"就此結束。把 "指令地址寄存器"+1,去拿下一條指令並解碼執行。
總結:控制單元的抽象
LOAD_A 只是 CPU 能夠執行的各類指令之一,不一樣指令由不一樣邏輯電路(控制單元)解碼。
能夠將"控制單元 "包成一個總體。
控制單元就像管絃樂隊的指揮,"指揮" CPU 的全部組件"取指令→解碼→執行" 。會配置 CPU 內的組件來執行對應操做。
2.2.2 執行 ADD指令 "1000 0100"
(1) 指令解析:
1000 是 ADD 指令,後面的 4 位不是 RAM 地址,而是表明 2 個寄存器,第一個地址是 01, 表明寄存器B,第二個地址是 00, 表明寄存器A。
所以,1000 0100,表明把寄存器 B 的值,加到寄存器 A 裏。
(2) "控制單元"的做用
(3) 把指令地址 + 1,執行下一條指令。
2.2.3 執行STORE A 指令 " 0100 1101"
(1) 解碼
查看指令表,STORE A 指令是把寄存器 A 的值放入RAM,RAM 地址爲13.
(2) 執行
2.2.4時鐘
在執行以上四條指令的時候,咱們人工切換 CPU 的狀態 "取指令→解碼→執行",但實際上電腦用 "時鐘" 來負責管理 CPU 的節奏。
(1) 時鐘的做用
時鐘以精確的間隔觸發電信號,控制單元會用這個信號,推動 CPU 的內部操做,確保一切按步驟進行。
(2) "時鐘速度"
"時鐘速度"指 CPU "取指令→解碼→執行" 的速度 。單位是赫茲 ,
1hz/s表明一秒 1 個週期,
(1) CPU抽象
RAM是在 CPU 外面的獨立組件,CPU 和 RAM 之間 用 "地址線" "數據線" 和 "容許讀/寫線" 進行通訊。
(2) "英特爾 4004"
第一個單芯片 CPU 是 "英特爾 4004" ,1971 年發佈的 4 位CPU,它的微架構 很像咱們以前說的 CPU,它的時鐘速度達到了 740 千赫茲 - 每秒 74 萬次。
如今看視頻的電腦或手機,可能有幾千兆赫茲, 1 秒 10 億次時鐘週期。
(3) 優化