7. 中央處理器-The Central Processing Unit(CPU)

一、cpu介紹

計算機的心臟"中央處理單元",簡稱 "CPU"。
CPU 負責執行程序,程序由一個個操做(又叫指令,指示"計算機要作什麼)組成。
若是是數學指令,好比加/減,CPU 會讓 ALU 進行數學運算,也多是內存指令,CPU 會和內存通訊,而後讀/寫值。架構

二、製做cpu

2.1 組件性能

  • 1個RAM :假設它只有 16 個位置,每一個位置存 8 位。
  • 四個8位寄存器:A,B,C,D。用來 臨時存數據 和 操做數據。
  • 一張指令表:程序也能夠以二進制存在內存裏的,因此可給 CPU 支持的全部指令,分配一個 ID。
  • 一個"指令地址寄存器",蹤程序運行到哪裏了。(存當前指令的內存地址)
  • 一個指令寄存器,存當前指令。
  • 控制單元:用於解碼
  • 時鐘:用於管理 CPU 的節奏。

2.2 解析CPU執行程序的過程
如下爲須要執行的四條指令
clipboard.pngfetch

2.2.1 執行第一條指令 LOAD_A
(1)當啓動計算機時,全部寄存器從 0 開始。優化

clipboard.png

(2)進入第一階段"取指令階段"(fetch phase),負責拿到指令。
首先,將 "指令地址寄存器" 連到 RAM,寄存器的值爲 0,所以 RAM 返回地址 0 的值。
clipboard.pngspa

而後,0010 1110 會複製到 "指令寄存器" 裏。
clipboard.pngcode

(3) "解碼階段"
指令拿到了,要弄清是什麼指令,才能執行,即 "解碼階段"。視頻

8位的指令:用前四位存 "操做代碼",簡稱 "操做碼" (opcode)對應指令表中的指令。後四位表明數據來自哪裏,能夠是寄存器或內存地址。
  • 根據指令表,前 4 位 0010 是 LOAD_A 指令,意思是,把 RAM 的值放入寄存器 A。後 4 位 1110 是 RAM的地址, 轉成十進制是 14。
  • 指令由 "控制單元" 進行解碼。 "控制單元" 也是邏輯門組成的。

clipboard.png

(4) "執行階段"
知道了是什麼指令,開始 "執行階段"。
步1:取值。用 "控制單元"打開 RAM 的 "容許讀取線", 把地址 14 傳過去,從RAM的地址14中拿到值0000 0011,十進制的 3。ip

clipboard.png

步二:存值。根據 LOAD_A 指令的要求 , 要把取到的值只放到寄存器 A,其餘寄存器不受影響,因此使用一根線,把 RAM 連到 4 個寄存器。
步三:用 "控制單元" 啓用寄存器 A 的 "容許寫入線"。
步四: 內存

clipboard.png
成功把 RAM 地址 14 的值,放到了寄存器 A。數學

步五:LOAD_A 指令完成,"執行階段"就此結束。把 "指令地址寄存器"+1,去拿下一條指令並解碼執行。
clipboard.png

總結:控制單元的抽象
LOAD_A 只是 CPU 能夠執行的各類指令之一,不一樣指令由不一樣邏輯電路(控制單元)解碼。
能夠將"控制單元 "包成一個總體。
控制單元就像管絃樂隊的指揮,"指揮" CPU 的全部組件"取指令→解碼→執行" 。會配置 CPU 內的組件來執行對應操做。

clipboard.png

2.2.2 執行 ADD指令 "1000 0100"

(1) 指令解析:
1000 是 ADD 指令,後面的 4 位不是 RAM 地址,而是表明 2 個寄存器,第一個地址是 01, 表明寄存器B,第二個地址是 00, 表明寄存器A。
所以,1000 0100,表明把寄存器 B 的值,加到寄存器 A 裏。

(2) "控制單元"的做用

  • 啓用寄存器B做爲做爲 ALU 的第一個輸入。啓用寄存器 A,做爲 ALU 的第二個輸入。
  • 傳遞 ADD 操做碼告訴ALU 能夠執行ADD操做 (由於ALU能夠執行多種操做)
  • 控制單元用一個本身的寄存器暫時保存結果(由於結果應該存到寄存器 A,但不能直接寫入寄存器 A,這樣新值會進入 ALU ,不斷和本身相加)。關閉 ALU以後,再把值寫入寄存器A。

(3) 把指令地址 + 1,執行下一條指令。

clipboard.png

clipboard.png

2.2.3 執行STORE A 指令 " 0100 1101"
(1) 解碼
查看指令表,STORE A 指令是把寄存器 A 的值放入RAM,RAM 地址爲13.

(2) 執行

  • 把地址13傳給 RAM,
  • 打開RAM的"容許寫入",同時打開寄存器 A 的 "容許讀取",把寄存器 A 裏的值,傳給 RAM。

clipboard.png

2.2.4時鐘
在執行以上四條指令的時候,咱們人工切換 CPU 的狀態 "取指令→解碼→執行",但實際上電腦用 "時鐘" 來負責管理 CPU 的節奏。

(1) 時鐘的做用
時鐘以精確的間隔觸發電信號,控制單元會用這個信號,推動 CPU 的內部操做,確保一切按步驟進行。

(2) "時鐘速度"
"時鐘速度"指 CPU "取指令→解碼→執行" 的速度 。單位是赫茲 ,
1hz/s表明一秒 1 個週期,

三、CPU

(1) CPU抽象
RAM是在 CPU 外面的獨立組件,CPU 和 RAM 之間 用 "地址線" "數據線" 和 "容許讀/寫線" 進行通訊。

(2) "英特爾 4004"
第一個單芯片 CPU 是 "英特爾 4004" ,1971 年發佈的 4 位CPU,它的微架構 很像咱們以前說的 CPU,它的時鐘速度達到了 740 千赫茲 - 每秒 74 萬次。
如今看視頻的電腦或手機,可能有幾千兆赫茲, 1 秒 10 億次時鐘週期。

(3) 優化

  • 超頻:計算機超頻,意思是修改時鐘速度,加快 CPU 的速度。芯片製造商常常給 CPU 留一點餘地,能夠接受一點超頻。但超頻太多會讓 CPU
    過熱,或產生亂碼,由於信號跟不上時鐘。
  • 降頻:有時不必讓處理器全速運行,可能用戶走開了,或者在跑一個性能要求較低的程序,把 CPU 的速度降下來,能夠省不少電。
  • 動態調整頻率:不少現代處理器能夠按需求 加快或減慢時鐘速度。
相關文章
相關標籤/搜索