CPU的工作原理


在當今社會,電子計算機已經全面滲透進了我們的生活。這個偉大的發明承載了無數的心血與汗水,更是人類智慧的結晶。但你知道它們是怎樣工作的嗎?讓我們從硬件開始,了解計算機是如何服務我們的當代生活。

CPU(Central Processing Unit,中央處理器)是計算機的大腦,數據計算處理中心,如果你理解了它的工作原理,就理解了計算機的核心工作方式。

起點

這是一個質朴的CPU,現在讓我們移開它的蓋子,看看里面有什么。

CPU里布滿了攜帶電信號的線路,用於計算。

線路周圍有一圈針腳,用於發出和接收信息。

每個CPU里都有一個以固定頻率通斷的電路——Clock(時鍾)

它用於同步CPU內的所有部件,其通斷頻率(Clock Rate)(事實上是電平高低變化頻率)以GHz(1*10^9Hz)計。

通與斷,有與無,0和1,這就是計算機儲存數據,傳輸信息的方式。

理論上,時鍾的通斷速度越快,CPU的計算效率越高。現代計算機CPU每秒能通斷數十億次,這使得CPU能極快地處理復雜的任務。這么快的變化速度可能讓你無法理解,現在讓我們把時間尺度縮小為1個時鍾周期,從一次電信號的發射來理解CPU的工作原理。

主板

如果我們從線路講起,你可能無法理解它的工作目的。所以我們請來了CPU的左鄰右舍。綠色的是主板,用於連接計算機里的所有組件,上面的線路就是各個元件通信的橋梁。

CPU的背面有大量的針腳,分為上下左右四組,上下的針腳傳輸數據,左右的針腳起控制作用。它們所連向的設備包括RAM、硬盤、顯示器、鍵盤等。

讓我們從RAM講起。

CPU與RAM

現在你看到的兩條銀色物體是RAM(Random Access Memory,隨機存儲器,俗稱內存),用於存儲所有CPU將要處理的數據,這種儲存方式必須通電,否則數據會丟失。

這些數據以0和1的形式儲存,分為兩種:(address)和 (data)

不同的鍵可以有着相同的值,但不能同時存在兩個相同的鍵。值包括了指令,數字,地址等數據信息,而鍵就是這些數據的名稱。如果你學過C語言就要知道:你創建的變量就是在RAM里開通的存儲空間,在空間里存有值,即變量值;如果你此時創建了一個指向該值的指針,那么指針的內容就是鍵。

CPU可以從RAM讀取數據或向RAM寫入數據,以電路通斷的方式。

CPU想要讀取某個值時通過上方的address bus向RAM發送所需值的鍵,然后接通中間的control bus,即可從下方的data bus收到由RAM提供的相應值。CPU從RAM中讀取內容或指令,這個過程在沒有邏輯指令的情況下是順序的,因為程序的執行是順序的。

CPU在寫入數據時通過上方的address bus向RAM發送鍵,同時通過下方的data bus向RAM發送值,最后接通中間的set線路,RAM即可在指定鍵的位置覆蓋上這些數據。這個動作在CPU讀取到相關指令時執行。

但這些值,或者說這些數據都是什么?數據類型包括數字、地址、指令。數字好理解,就是最普通的數據;地址記錄了其他硬件設備的位置信息,方便CPU與它們通信。而指令是最重要的,這些指令就是計算機實現計算的一切。計算機聽命於CPU,CPU聽命於這些編輯好的指令。CPU指令集中有許多指令,以下為較常見的幾種。

LOAD:從RAM讀取數據

ADD:將兩個數字相加

STORE:向RAM寫入數據

COMPARE:比較兩個數字大小

JUMP IF:在滿足COMPARE的一定條件下跳轉到某個值

JUMP:直接跳轉到某個值

OUT:輸出值到某個地址(顯示器,指示燈)

IN:從某個地址(鍵盤,按鈕)輸入值

這很好理解吧?下面讓我們看一段RAM中的內容,理解CPU在讀取這段時做了什么。

00100001 LOAD
00100010 624
00100011 IN
00100100 鍵盤地址
00100101 COMPARE
00100110 JUMP IF =
00100111 01100001
00101000 OUT
00101001 顯示器地址
00101010 ”錯誤“
…… ……
01100001 “正確”

這是一段簡化后的程序,其效果是如果鍵入624顯示“正確”,否則顯示“錯誤”。

詳解如下:

  1. 從RAM加載數字624
  2. 從鍵盤獲取用戶輸入
  3. 比較是否相同
  4. 如果相同跳轉到鍵為01100001的地址執行輸出正確
  5. 在顯示器輸出錯誤

你現在可能非常好奇,CPU是如何處理這些從RAM中獲得的鍵的?讀取的數字儲存在哪?如何進行加法計算?如何比較大小?

別急,現在我們終於能研究CPU內部的線路了。

CPU

這是CPU內部的線路圖,很亂。里面有這各種單元,負責各種工作。先讓兩個最重要的單元上場。

右邊的是控制單元(Control Unit),它就像隊長一樣,從RAM接收指令並解析成其他元件能夠理解的命令。

左邊的是算術邏輯單元(ALU),加法,減法,比較等數學運算都是由它執行的。他有兩個數據輸入口:A和B。

未完待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM