該文章翻譯自:cpu,也被叫做微處理器,是計算機的心臟,大腦.translated by:
我們就來看看計算機的核心是如何工作的吧
通常來說,乙個工具要比乙個機器更加簡單,因為工具通常以手驅動,而機器以力驅動計算機,通常來說,是以電力驅動的機器.不過他的靈活性與可程式設計性幫助我們更簡單地獲得可以用的工具–查爾斯·巴貝奇
cpu是計算機的心臟,大腦.它執行提供給它的指令.它主要的工具就是計算,進行邏輯操作,並且將指令編排在一起.在我們深入它的工作原理之前,我們先看一下它的主要部件和主要的規律吧
控制單元是cpu的一部分,它幫助我們編排指令的執行,換句話來說,它負責"要做什麼"的部分.根據指令,它能夠將cpu與計算機其他部分的連線啟用(包括alu,雖然alu是在cpu裡面的).控制單元是cpu在處理指令時第乙個收到指令的部件.
總共有兩種控制單元:
實體控制單元由硬體部分組成,如果要對其進行更改,就要在硬體層面對其進行更改,但是微可程式設計控制單元可以通過程式設計來改變其行為.實體控制單元在處理指令上更快,但是微可程式設計控制單元會更加地靈活
顧名思義,算術邏輯單元就是負責cpu中的算術和邏輯的計算工作的.alu會處理加法,減法等操作.它由邏輯電路和邏輯門來實現這些操作
大多數邏輯門會要求兩個輸入,產生輸出
在下面,是乙個半加器的例子,它要求兩個輸入,然後計算出結果.在此處,a和b是輸入,s是本位輸出,c是進製輸出
暫存器是一組資料儲存的單元,乙個暫存器由觸發器組合而成,觸發器就是一組可以儲存一位(1bit)資料的邏輯門
乙個觸發器有兩個輸入,寫輸入和資料輸入,還有乙個輸出.我們啟用了寫輸入後,就可以對儲存的資料進行更改了.當寫輸入處於非啟用狀態時,輸出一直保持同樣的值
上圖為乙個rs觸發器
cpu裡面有眾多的暫存器來儲存資料.但是如果要將這些資料傳送到主存(即記憶體)中,因為這些資料是立即數,所以會比較慢.這些資料會通過匯流排在暫存器中移動,乙個暫存器可以儲存任何型別的bit資料
ram是一組排列好的暫存器的集合,並且以一種最優化的方式組合在一起,所以它能夠儲存非常多的資料.ram具有易失性,當我們關閉電源時,資料就會丟失.當ram從乙個8位的位址裡面讀寫資料時,資料輸入就會被儲存到ram中
指令是計算機能夠表現的計算單位的最小粒度.(譯者注:水平不夠,這段翻譯地有點拗口,大概意思就是,指令在計算機中已經是最小單位了,不可能再進行拆分)
以下是幾種cpu能夠處理的指令
指令使用組合語言提供給計算機,組合語言通常是由高階語言經過編譯器生成而來的(手寫彙編的酸爽,誰用誰知道)
這些指令都是在cpu中用電路實現的,alu負責一些算術的指令,cu負責控制流的指令
在乙個時鐘週期內,cpu能夠處理一條指令,但是現代的處理器通過多核機制和流水線處理等優化,通常可以在乙個週期內處理多條指令
計算機可以處理的一組指令叫做指令集
計算機處理的速度由時鐘頻率來決定的.乙個時鐘週期經過的時間很短,大概在250*10e-12秒,時鐘頻率越高,處理器速度就越快,時鐘頻率由ghz來衡量,1ghz=10e9hz,一赫茲就是一秒,所以1ghz表示一秒有10e9個時鐘週期
時鐘頻率越高,cpu就可以處理更多指令.這意味著,為了提高cpu速度,我們可以提高時鐘頻率或者通過一些優化方法降低乙個操作所需要的指令數.一些處理器有能力提高自身的頻率,不過提高頻率會增大自身的發熱量甚至冒煙**(超,死命給我超!)
指令被順序儲存在記憶體中.乙個cpu指令由操作碼和記憶體位址組成
在cu裡面,有兩個暫存器,乙個是指令暫存器,它載入指令的操作碼,還有乙個是指令位址暫存器,載入正在執行的指令的位址.cpu中還有其他的暫存器,用來儲存指令的其餘部分
讓我們來手動執行指令,完成兩個數相加的操作吧
當我們呼叫<1100 1000>時,這條指令被儲存在ram中.
前面4位是操作碼,它定義著要做的操作.隨後這條指令被送到控制單元的指令暫存器中,被解碼被load_a 8,意思是它需要載入位址1000的暫存器中的資料到暫存器a
與上面的相似,它載入位址為0010的暫存器中的資料到暫存器b
下一條指令是將這兩個資料載入一起.在這裡,控制單元會通知算術邏輯單元進行add操作,然後將結果存在暫存器a中
將暫存器a的資料存入記憶體位址為 0001 0111的暫存器中
所有在cpu,暫存器,記憶體和io裝置之間的資料,都是通過匯流排來傳輸的.
為了要載入剛剛我們進行了加法操作之後的資料,將其存在記憶體中,cpu將記憶體位址"放"在位址匯流排中,將操作後的結果"放"在資料匯流排中,然後啟用控制匯流排的訊號.這樣,通過匯流排的傳輸,資料就送到記憶體中了.
為了減少多次訪問的消耗,cpu通常會有快取機制,在cpu中,會預讀取一些指令,並將其快取下來.在我們看來,乙個處理器在一秒鐘可以完成成百上千萬條指令.這意味著,會有很多時間花在了訪問資料中,甚至比執行指令的時間多得多.所以cpu為了提高執行效率,會快取一些指令和資料在cpu的快取裡面(如現代cpu的l1,l2快取)
現代cpu會使用指令流水線,從而並行地執行多個指令.讀取,解碼,執行.當一條指令在解碼時,cpu能夠讀取下一條指令
但是這會帶來乙個問題,當一條指令依賴於另外的指令時,要怎麼做呢?cpu會先處理沒有依賴的指令
乙個cpu的效能取決於他的執行時間.效能=1/執行時間
在做乙個cpu效能考量的時候,需要考慮到它指令執行時間和時鐘速度,為了要提高程式執行的效率,我們既要提高時鐘頻率,也要減少程式所需的指令數.現在的處理器因為具有多核機制,所以能夠在一秒內執行成千上萬條指令,但是如果我們寫的程式所需指令數太多,同樣是會降低cpu的效能的.
為了讓cpu執行地更快,有非常多的優化方法運用在了cpu上面.當我們編寫程式時,我們需要考慮如何去減少cpu總共要執行的指令數從而提高效率
CPU如何工作
工具通常比機器簡單。它通常與手一起使用,而機器經常通過動物或蒸汽來驅動。查爾斯 巴貝奇計算機是一臺主要由電力驅動的機器,但是其靈活性和可程式設計性有助於實現工具的簡單性。cpu是計算機的心臟和 或大腦。它執行提供給它的指令。它的主要工作是執行算術和邏輯運算並將指令編排在一起。在深入 主要部分之前,我...
CPU是怎麼工作的?
計算機現在已經成了人們生活中的一部分,其中我們也知道計算機中的cpu相當於人的大腦,計算機的所有活動都離不開它。那麼它到底是怎麼工作的呢,我們今天來一起揭開它神秘的面紗。在軟考中,前10道題中,基本上都是基礎的計算機知識,如果你了解了cpu工作原理那麼這些也就不在話下了。我們都知道計算機的基本硬體系...
CPU 是怎樣工作的
原文首發於 guanngxu 的個人部落格 深入理解計算機系統 cpu 是怎樣工作的?編碼 隱匿在計算機軟硬體背後的語言 美 charles petzold cpu 大家應該都不會陌生,日常用的手機 電腦中都有 cpu,cpu 作為乙個裝置的大腦,指揮著其它各種硬體的協同工作,晶元技術也是國內一直沒...