Skip to main content

HTG解釋:CPU如何工作?

HTG解釋:CPU如何工作?

Geoffrey Carr

計算機中的大多數東西都比較容易理解:RAM,存儲器,外圍設備和軟件都可以協同工作以實現計算機功能。但是你的系統的核心,CPU,對許多技術人員來說似乎都很神奇。在這裡,我們將盡力將其分解。

本文的大部分研究來自J. Clark Scott的“但它如何知道?”。這是一個非常精彩的閱讀,比這篇文章更深入,並且非常值得亞馬遜上的幾塊錢。

在我們開始之前要注意一點:現代CPU的數量級比我們在這裡概述的要復雜得多。一個人幾乎不可能理解具有超過十億個晶體管的芯片的每個細微差別。但是,它們如何組合在一起的基本原則保持不變,理解基礎知識將使您更好地理解現代系統。

從小開始

計算機以二進制運行。他們只了解兩種狀態:開啟和關閉。要以二進制形式執行計算,它們使用所謂的晶體管。如果柵極上有電流,晶體管只允許源電流流過漏極。基本上,這形成了二進制開關,其根據第二輸入信號切斷導線。

現代計算機使用數十億個晶體管來執行計算,但在最低級別,您只需要少量幾個就可以形成最基本的組件,稱為門。

邏輯門

正確堆疊幾個晶體管,你就擁有了所謂的邏輯門。邏輯門採用兩個二進制輸入,對它們執行操作,並返回輸出。例如,如果任一輸入為真,則OR門返回true。 AND門檢查兩個輸入是否為真,XOR檢查是否只有一個輸入為真,並且N變量(NOR,NAND和XNOR)是其基本門的反相版本。

用蓋茨做數學

只需兩個門,您就可以進行基本的二進制加法。上圖顯示了使用Logicly創建的半加器,Logicly是一個免費的邏輯門在線遊樂場。如果其中一個輸入打開,則此處的XOR門將打開,但不會同時打開。如果兩個輸入都打開,AND門將打開,但如果沒有輸入則保持關閉。因此,如果兩者都打開,則XOR保持關閉,並且AND門打開,得到兩個正確答案:

這為我們提供了一個簡單的設置,具有三個不同的輸出:零,一和二。但有一點不能存儲高於1的任何東西,並且這台機器不太有用,因為它只解決了最簡單的數學問題之一。但這只是加法器的一半,如果你用其他輸入連接其中兩個,你得到一個完整的加法器:

全加器有三個輸入 - 要添加的兩個數字和一個“進位”。當最終數字超過可以存儲在一個位中的數字時,使用進位。完整加法器將鏈接在一個鏈中,並且進位從一個加法器傳遞到下一個加法器。進位被添加到前半加法器中的XOR門的結果中,並且有一個額外的OR門可以處理兩種情況,因此需要打開。

當兩個輸入都打開時,進位打開,並將其發送到鏈中的下一個完整加法器:

這和添加一樣複雜。向上移動更多位基本上只意味著更長鏈中的更多完整加法器。

大多數其他數學運算可以通過添加來完成;乘法只是重複加法,可以用一些奇特的位反轉進行減法,而除法只是重複減法。雖然所有現代計算機都有基於硬件的解決方案來加速更複雜的操作,但您可以通過全加器技術完成所有操作。

總線和內存

現在,我們的電腦只不過是一台糟糕的計算器。這是因為它無法記住任何內容,也無法對其輸出做任何事情。上面顯示的是一個存儲單元,可以完成所有這些操作。在引擎蓋下,它使用了大量的NAND門,並且在現實生活中可能會有很大差異,具體取決於存儲技術,但它的功能是相同的。你給它一些輸入,打開'write'位,它會將輸入存儲在單元格內。這不僅僅是一個存儲單元,因為我們還需要一種從中讀取信息的方法。這是通過一個啟動器來完成的,啟動器是存儲器中每個位的AND門的集合,都與另一個輸入“讀”位相連。寫和讀位通常也稱為“set”和“enable”。

整個包裹被包含在所謂的寄存器中。這些寄存器連接到總線,總線是連接到整個系統的一束電線,連接到每個組件。即使是現代計算機也有總線,但它們可能有多條總線來提高多任務性能。

每個寄存器仍然有一個寫入和讀取位,但在此設置中,輸入和輸出是相同的。這實際上很好。例如。如果要將R1的內容複製到R2中,可以打開R1的讀取位,這會將R1的內容推送到總線上。當讀取位打開時,您將打開R2的寫入位,這會將總線內容複製到R2中。

寄存器也用於製作RAM。 RAM通常佈置在網格中,導線朝兩個方向傳輸:

解碼器採用二進制輸入並打開相應的編號線。例如,“11”是二進制3,最高的2位數,因此解碼器將打開最高線。在每個十字路口都有一個寄存器。所有這些都連接到中央總線,並連接到中央寫入和讀取輸入。只有在寄存器上的兩條線也打開時,讀和寫輸入才會打開,從而有效地允許您選擇要寫入和讀取的寄存器。同樣,現代RAM要復雜得多,但這種設置仍然有效。

時鐘,步進器和解碼器

寄存器隨處可用,是在CPU中移動數據和存儲信息的基本工具。是什麼告訴他們搬東西?

時鐘是CPU核心中的第一個組件,它將以設定的間隔(以赫茲或每秒週期為單位)關閉和打開。這是你看到的與CPU一起宣傳的速度; 5 GHz芯片每秒可以執行50億次循環。時鐘速度通常是衡量CPU速度的一個非常好的指標。

時鐘有三種不同的狀態:基本時鐘,使能時鐘和設置時鐘。基本時鐘將打開半個週期,而另一半打開。使能時鐘用於打開寄存器,需要打開更長時間才能確保數據已啟用。設置時鐘始終需要與使能時鐘同時打開,否則可能會寫入不正確的數據。

時鐘連接到步進器,它將從一步到最大步數計數,並在完成時將自身重置為一。時鐘也連接到CPU可以寫入的每個寄存器的AND門:

這些AND門也連接到另一個組件即指令解碼器的輸出。指令解碼器採用“SET R2 TO R1”之類的指令,並將其解碼為CPU可以理解的內容。它有自己的內部寄存器,稱為“指令寄存器”,它是存儲當前操作的地方。它究竟是如何歸結為您正在運行的系統,但一旦解碼,它將打開正確的設置並啟用正確寄存器的位,這些寄存器將根據時鐘觸發。

程序指令存儲在RAM中(或現代系統上的L1緩存,更靠近CPU)。由於程序數據存儲在寄存器中,就像每個其他變量一樣,它可以動態操作以跳轉到程序中。這就是程序如何通過循環和if語句獲得它們的結構。跳轉指令將指令解碼器正在讀取的存儲器中的當前位置設置到不同的位置。

它是如何結合在一起的

現在,我們對CPU工作原理的過度簡化是完整的。主總線跨越整個系統並連接到所有寄存器。完整的加法器以及許多其他操作都被打包到算術邏輯單元或ALU中。該ALU將連接到總線,並且還有自己的寄存器用於存儲它正在操作的第二個數字。

為了執行計算,程序數據從系統RAM加載到控制部分。控制部分從RAM讀取兩個數字,將第一個數字加載到ALU的指令寄存器中,然後將第二個加載到總線上。同時,它向ALU發送一個指令代碼,告訴它該做什麼。然後,ALU執行所有計算並將結果存儲在CPU可以讀取的不同寄存器中,然後繼續該過程。

Link
Plus
Send
Send
Pin