CPU 是怎樣工作的

2021-09-19 23:43:52 字數 2680 閱讀 2005

原文首發於 guanngxu 的個人部落格:深入理解計算機系統——cpu 是怎樣工作的?

《編碼:隱匿在計算機軟硬體背後的語言》——[美] charles petzold

cpu 大家應該都不會陌生,日常用的手機、電腦中都有 cpu,cpu 作為乙個裝置的大腦,指揮著其它各種硬體的協同工作,晶元技術也是國內一直沒有突破的技術。

我們先來看看怎麼讓電路去運算呢?比如如何讓電路運算1 + 1,直接使用下面這個裝置就可以了。

作為乙個比較好奇的人,總會想看看那個方框框裡面是什麼樣子的,讓我們慢慢解開加法器的外衣。

這個電路你應該不會陌生,它需要兩個開關都閉合時燈泡才會發光,也就是說它有兩個輸入,開關閉合時我們認為輸入為 1,未閉合狀態視為 0;而燈泡是否發光就是我們的輸出,發光為 1,否則為 0。於是就有了下面這張表。

and010

0010

1這樣的電路我們就把它稱之為與(and)門,它接受兩個邏輯輸入,並會給出我們乙個邏輯輸出,與它相似的電路還有邏輯或(or)、**異或(xor)**等等,因為太多了,就不一一介紹了,如果感興趣可以 google 一下。

為了方便我們把上面的電路做乙個簡化,抽象成下面這個樣子,其它的電路也可以通過 google 找到它們的樣子。

現在直接給出乙個可以運算加法的電路,它的樣子長下面這樣。

我們也可以給它列乙個表,顯得更清晰,表中之所以有兩位是因為加法有可能會產生進製,而我們使用的是二進位制表示,所以10表示的是十進位制中的2。+0

100001101

10有加法就很好辦了,減法實際上是加乙個負數,除法可以改寫成乘法,乘法又可以改寫成加法,現在加法一統天下了。

好了,上面說了那麼多,還貼了那麼多圖,只是為了讓你相信電路是可以實現我們數學上的運算的,下面就沒有那麼聲情並茂了。

我們可以把乙個運算抽象為下面這個模型。

輸入資料 --> 運算 --> 輸出資料
計算機中把各種像上述加法器一樣的運算器放在了同乙個小盒子裡面,組成成乙個運算器集合,我們給它取個名字叫算術邏輯單元(alu:arithmetic logical unit),它是 cpu 的核心組成部分。

當然我們不可能只進行加法這種簡單運算,乙個很長很長的算式需要經過多步運算,小學我們就學過梯等式,它實際上有一大推輸入,中間那麼多梯子,都是臨時步驟,臨時步驟、資料一類的東西都需要有個東西給它存起來,所以在 cpu 就拿出乙個小盒子當做儲存器

# 梯等式

485 - ( 6 × 4 + 32 )

= 485 - ( 24 + 32 )

= 485 - 56

= 429

現在我們有了儲存器和運算器兩個幹事的人,但是沒有乙個統籌兼顧的領導者,控制器就充當了這個角色,它需要把控制儲存器中的資料傳送到 alu 去進行運算,然後再將運算的結果取出來存到儲存器中。總的來說,控制器的工作就是完成協調和指揮整個計算機系統的操作。

我們把上面的結構畫出來,圖中的虛線表示指令流,實線表示資料流,這個結構就是著名的馮 · 諾依曼體系結構,遵循這種結構的計算機都叫做馮諾依曼機,現在所有的機器都是馮諾依曼機。

請注意,我們現在實際上只有硬體,沒有軟體是什麼事情都幹不了了,我們這裡所說的軟體是一堆指令序列,比如加法指令、傳送指令等等組成的序列,也就是我們常說的組合語言。

但是在早期並不是這樣的,這台機器上編寫的指令序列是無法執行在另一家公司生產的機器上的,即使是同乙個公司的機器,如果不是同一代,那也不能執行,所以早期的程式設計是直接面向硬體的。

這時就有人站出來研究如何實現一次編寫多處執行了,ibm 首次在它的 360 系統上引入了isa的概念,即指令集體系結構。

指令集體系結構將程式設計所要了解的硬體資訊從硬體系統中抽象了出來,這樣開發人員就可以直接面向處理器的 isa 進行程式設計了。

為什麼手機上的軟體不能執行在電腦中呢?就是因為個人電腦所使用的 intel 和 amd 處理器都是基於 x86 指令集的,而手機大多數都使用的是基於 arm 指令集的處理器。

現在處理器被分為指令集體系結構、處理器微架構、處理器物理實現三個層次。體系結構相當於需求,微架構好比設計,物理實現則是具體的實現過程。

比如我們規定指令集中必須有加法指令,這個指令你怎麼設計、如何實現是給你的事,我只管給出兩個加數你能給我輸出乙個正確的結果,簡單來說就是抽象封裝。

CPU是怎麼工作的?

計算機現在已經成了人們生活中的一部分,其中我們也知道計算機中的cpu相當於人的大腦,計算機的所有活動都離不開它。那麼它到底是怎麼工作的呢,我們今天來一起揭開它神秘的面紗。在軟考中,前10道題中,基本上都是基礎的計算機知識,如果你了解了cpu工作原理那麼這些也就不在話下了。我們都知道計算機的基本硬體系...

CPU是如何工作的

該文章翻譯自 translated by cpu,也被叫做微處理器,是計算機的心臟,大腦.我們就來看看計算機的核心是如何工作的吧 通常來說,乙個工具要比乙個機器更加簡單,因為工具通常以手驅動,而機器以力驅動 查爾斯 巴貝奇 計算機,通常來說,是以電力驅動的機器.不過他的靈活性與可程式設計性幫助我們更...

make是怎樣工作的

預設情況下,我們輸入make命令,那麼 當然你可以指定檔名,make f filename 1.make會去當前目錄下尋找叫makefile或叫makefile的檔案。2.然後讀入makefile檔案裡面內容,找到第乙個目標的檔案並把它作為最終要生成的目標,故第乙個目標是預設目標。4.然後再尋找當前...