一文讀懂電腦 “心臟”,CPU 硬件工作原理
在數字時代,電腦已然成爲我們生活與工作中不可或缺的得力助手。從日常辦公時飛速處理文檔、表格,到閒暇娛樂時流暢運行大型 3A 遊戲,再到科研領域進行復雜模擬運算,電腦的身影無處不在。但不知你是否曾好奇,究竟是什麼在背後支撐着電腦如此高效地運轉?答案便是電腦的 “心臟”——CPU。
它雖小巧,卻蘊含着巨大能量,宛如一位不知疲倦的指揮家,協調電腦各個部件,精準執行我們發出的每一個指令。今天,就讓我們一同走進 CPU 的神祕世界,深度剖析其硬件工作原理,揭開它強大算力背後的奧祕 。
一、CPU 核心概述
在電腦的世界裏,CPU 堪稱最爲核心的部件,猶如人類的大腦之於身體,其重要性不言而喻。簡單來說,CPU(Central Processing Unit)即中央處理器 ,是一塊超大規模的集成電路,也是電腦的運算核心和控制核心。它承擔着處理、運算計算機內部所有數據的重任,無論是運行辦公軟件、瀏覽網頁,還是暢玩大型遊戲,電腦的每一個操作指令,都需要經過 CPU 的處理才能得以實現。
1.1CPU 實際做什麼?
PU 的核心是從程序或應用程序獲取指令並執行計算。該過程分爲三個關鍵階段:獲取,解碼和執行。CPU 從 RAM 中提取指令,對指令的實際含義進行解碼,然後使用 CPU 的相關部分執行指令。
執行的指令或計算可能涉及基本算術,將某些數字進行比較或在內存中移動它們。由於計算設備中的所有內容均由數字 01 表示,因此這些簡單的任務等同於 CPU 的工作。從啓動 Windows 到觀看嗶哩嗶哩視頻,一切都很輕鬆。
在現代系統中,CPU 並不能完成所有任務,但是它仍必須將其所需的功能編號提供給專用硬件。例如,它告訴圖形卡顯示爆炸效果,因爲您單擊了腳踩雷,或者告訴硬盤驅動器將 Office 文檔傳輸到系統的 RAM 中,以便更快地進行訪問。
1.2CPU 有多重要?
儘管 CPU 對整體系統性能的重要性不如從前,但它在運行設備方面仍起着重要作用。由於它僅負責執行程序中的命令,因此 CPU 速度越快,許多應用程序的運行速度就越快。
也就是說,快速的 CPU 並不是全部。處理器,無論多麼強大,都無法輕鬆渲染最新的 3D 遊戲,也無法存儲信息。這就是其他組件(例如圖形卡和內存)發揮作用的地方。
簡而言之,CPU 並不是萬能的,但它非常重要。通常,更快的 CPU 意味着您的系統或設備將運行得更快。至少它本身不會成爲瓶頸。多個內核和線程可以幫助您一次執行更多操作。
二、CPU 的內部構造
CPU 的內部構造猶如一座精密而複雜的城市,各個部件各司其職,協同合作,共同完成各種複雜的計算任務。其主要由邏輯運算單元、控制單元和存儲單元(寄存器和緩存)等部分組成。每個部分都有着獨特的功能,它們相互配合,確保 CPU 高效地運行 。
在這個流程中,CPU 負責解釋和運行最終轉換成機器語言的內容。CPU 主要由兩部分構成:控制單元和算數邏輯單元(ALU)。
-
控制單元:從內存中提取指令並解碼執行;
-
算數邏輯單元(ALU):處理算數和邏輯運算。
CPU 和內存都是由許多晶體管組成的電子部件,可以把它比作計算機的心臟和大腦。它能夠接收數據輸入,執行指令並且處理相關信息。它與輸入 / 輸出(I / O)設備進行通信,這些設備向 CPU 發送數據和從 CPU 接收數據。從功能上來看,CPU 的內容是由寄存器、控制器、運算器和時鐘四部分組成的,各個部分之間通電信號來連通。
2.1 邏輯運算單元
邏輯運算單元(Arithmetic Logic Unit,簡稱 ALU)是 CPU 的執行單元,也是其核心部分,承擔着數據處理和運算的重任。它就像是一位精通各種運算規則的數學家,能夠快速準確地對數據進行處理。ALU 主要由一系列的邏輯電路組成,這些電路由最基本的與門、或門、非門等邏輯門構成,別看它們結構簡單,卻能組合出強大的運算功能。其主要進行二進制的算術運算,如加法、減法、乘法和除法 ,這些基本的算術運算構成了計算機進行各種複雜數學計算的基礎。
除了算術運算,ALU 還能執行邏輯運算,比如與、或、非、異或等。這些邏輯運算在計算機進行條件判斷、數據比較以及控制程序流程等方面發揮着關鍵作用。以簡單的加法運算爲例,當我們在計算機中輸入兩個數字進行相加時,數據會被傳輸到 ALU 中,ALU 根據加法運算規則,對這兩個二進制數據進行處理,最終得出正確的結果 。
2.2 控制單元
控制單元(Control Unit,簡稱 CU)堪稱 CPU 的指揮中心,它統籌協調着 CPU 的各項操作,確保計算機系統有序運行。控制單元主要由指令寄存器(Instruction Register,IR)、譯碼器(Instruction Decoder,ID)和操作控制器(Operation Controller,OC)等組成。指令寄存器用於存放從內存中讀取的指令,這些指令就像是計算機的行動指南;譯碼器則負責對指令進行解析,將指令翻譯成計算機能夠理解的微操作信號,就如同將外語翻譯成母語,讓計算機明白要執行的具體任務;
操作控制器根據譯碼器的輸出結果,產生相應的控制信號,指揮 CPU 的其他部件協同工作,比如控制數據的傳輸路徑、協調運算單元的操作時序等。在程序運行過程中,控制單元會從內存中依次讀取指令,將其存入指令寄存器,經過譯碼器解析後,操作控制器會根據指令的要求,向邏輯運算單元、存儲單元等發出控制信號,從而實現程序的順序執行、條件跳轉、循環等各種流程控制 。
2.3 存儲單元(寄存器和緩存)
存儲單元是 CPU 中用於存儲數據和指令的部分,主要包括寄存器和緩存。寄存器是 CPU 內部的高速存儲單元,數量較少但速度極快,在數據處理過程中,寄存器用於臨時存儲數據、指令以及運算結果等。比如在進行復雜的數學運算時,參與運算的數據會先被存入寄存器,運算完成後,結果也會暫時存放在寄存器中,等待進一步的處理或傳輸。由於寄存器與 CPU 的運算單元直接相連,能夠在極短的時間內完成數據的讀寫操作,大大提高了 CPU 的數據處理效率 。緩存則是位於 CPU 和內存之間的高速存儲區域,其速度比內存快,但容量相對較小。
緩存一般分爲一級緩存(L1 Cache)、二級緩存(L2 Cache)和三級緩存(L3 Cache),級別越高,容量越大,但速度相對越慢 。緩存的作用是存儲 CPU 近期可能會頻繁訪問的數據和指令,當 CPU 需要讀取數據或指令時,首先會在緩存中查找,如果能在緩存中找到,就可以直接讀取,避免了從速度較慢的內存中讀取數據,從而大大提高了 CPU 的訪問速度和整體性能。例如,當我們打開一個常用的軟件時,軟件的相關指令和數據會被預先加載到緩存中,這樣在我們使用軟件的過程中,CPU 就能快速地從緩存中獲取所需信息,使軟件運行更加流暢 。
三、CPU 如何控制硬件
瞭解了 CPU 的內部構造後,我們再來看看它是如何與外部硬件設備進行交互,從而實現對整個計算機系統的控制的 。
3.1 硬件控制的關鍵 —— 外設寄存器
CPU 雖然強大,但它並不能直接控制硬件設備,而是通過一種名爲外設寄存器的特殊存儲單元來間接實現對硬件的控制 。外設寄存器就像是 CPU 與硬件設備之間的 “翻譯官”,負責傳達 CPU 的指令和數據 。簡單來說,每個硬件設備都有與之對應的外設寄存器,這些寄存器被映射到 CPU 的尋址範圍內,成爲內存空間的一部分 。這樣一來,CPU 就可以像訪問內存一樣,通過內存訪問指令(如 ldr/str 指令 )來操作外設寄存器,進而控制硬件設備的工作狀態 。
例如,當我們想要控制一個 LED 燈的亮滅時,CPU 會通過內存訪問指令向與 LED 燈對應的外設寄存器寫入相應的數據,告訴寄存器是要讓 LED 燈亮起還是熄滅 。寄存器接收到指令後,再將其轉化爲硬件設備能夠理解的電信號,從而實現對 LED 燈的控制 。而芯片的地址映射表則是我們找到這些硬件地址的關鍵工具,它詳細記錄了地址空間的映射關係,幫助我們準確無誤地找到對應的硬件地址 。
3.2 以 LED 實驗爲例
爲了更直觀地理解 CPU 是如何通過外設寄存器控制硬件的,我們以一個簡單的 LED 實驗爲例進行說明 。假設我們使用的開發板核心板芯片爲 S5P6818 ,首先,我們需要查看 FS6818 底板原理圖和 FS6818 核心板原理圖,通過引腳追連線電路,最終找到與 LED 相連的核心板 CPU 引腳,假設爲 GPIOA28 。這裏的 GPIOA28 是一個複用引腳,具有多種功能 。接着,我們查閱 S5P6818 芯片用戶手冊,在手冊的第二章中可以找到關於每個 IO 引腳作用的介紹,通過查看 function Table,重點關注 function 0 - 3,根據實際需求選擇 GPIOA28 的對應功能 。由於我們要控制 LED,所以選擇將其設置爲 GPIO(通用輸入輸出)功能 。
GPIO 是通用的輸入輸出接口,在這個開發板中一共有 160 個,分爲 ABCDE 五組,每組 32 個,GPIOA28 屬於 A 組的第 28 個 。然後,我們要找到對應 GPIO 硬件映射的地址,也就是找到能夠控制該硬件的寄存器 。這些寄存器在 CPU 外部,有對應的地址,我們可以在芯片手冊的寄存器描述(Register Description)部分找到相關信息 。引腳作爲硬件,其控制都會映射到內存的一個地址,所以操作硬件實際上就是操作內存 。在這個實驗中,控制 GPIO 引腳功能的主要有 GPIOxALTFN0 和 GPIOxALTFN1 兩個寄存器,以控制 A 類 GPIO 的 32 個引腳爲例,就需要八個字節來管理 ,其中‘x’代表 ABCDE 組 。
此外,還有 GPIOxOUTENB 寄存器用於設置 GPIO 的模式(輸入或輸出模式),GPIOxOUT 寄存器用於設置 GPIO 輸出的值(高電平或低電平) 。以控制 GPIOA28 爲例,我們需要進行以下操作:首先,分析電路原理圖,得出 LED 的控制方法,假設是高電平亮、低電平滅 ;確定 LED 與 SOC 的連接關係爲 GPIOA28 ;然後,根據芯片手冊,找到對應的寄存器,將 GPIOA28 設置成 GPIO 功能,對應的寄存器是 GPIOAALTFN1,其地址爲 0xC001A024 ,我們向該寄存器寫入數據 0x00000000 ;
接着,將 GPIOA28 設置成 OUTPUT 功能,對應的寄存器是 GPIOAOUTENB,地址爲 0xC001A004 ,寫入數據 0x10000000 ;最後,要設置 GPIOA28 輸出高電平或低電平,對應的寄存器是 GPIOAOUT,地址爲 0xC001A000 ,若要讓 LED 亮,寫入數據 0x10000000 ,若要讓 LED 滅,寫入數據 0x00000000 。通過這樣一系列對寄存器的設置和操作,CPU 就能夠實現對 LED 燈亮滅的控制 。
四、CPU 的工作流程
CPU 的工作流程是一個複雜而有序的過程,它就像是一場精密的交響樂演奏,每個環節都緊密配合,確保計算機能夠高效地運行各種程序 。CPU 執行指令的過程主要分爲以下幾個階段:取指令、指令譯碼、執行指令、訪存取數(若需要)、結果寫回 。
4.1 取指令
取指令(Instruction Fetch,IF)階段是將一條指令從主存中取到指令寄存器的過程 。程序計數器(Program Counter,PC)中的數值,用來指示當前指令在主存中的位置 。當一條指令被取出後,PC 中的數值將根據指令字長度而自動遞增 。例如,若爲單字長指令,則 (PC)+1->PC;若爲雙字長指令,則 (PC)+2->PC,依此類推 。這就好比一位指揮家,按照既定的順序,依次從樂譜架(主存)上拿起樂譜(指令),每拿起一份樂譜,就標記下下一份樂譜的位置(PC 遞增),以便後續準確地獲取 。取指令的速度往往受到內存訪問速度的限制,因此現代計算機系統中通常會採用各種緩存技術來加速指令的獲取 。緩存就像是指揮家身邊的助手,提前將常用的樂譜準備好,當指揮家需要時,能夠快速地提供,大大提高了獲取樂譜的效率 。
4.2 指令譯碼
取出指令後,計算機立即進入指令譯碼(Instruction Decode,ID)階段 。在指令譯碼階段,指令譯碼器按照預定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取操作數的方法 。在組合邏輯控制的計算機中,指令譯碼器對不同的指令操作碼產生不同的控制電位,以形成不同的微操作序列;在微程序控制的計算機中,指令譯碼器用指令操作碼來找到執行該指令的微程序的入口,並從此入口開始執行 。
指令譯碼器就像是一位專業的翻譯,將從主存中獲取的指令翻譯成計算機各個部件能夠理解的 “語言”,告訴它們該做什麼以及如何去做 。例如,當指令譯碼器接收到一條加法指令時,它會識別出這是一個加法操作,並解析出參與加法運算的操作數來自哪裏,是寄存器還是內存中的某個地址 。
4.3 執行指令
在取指令和指令譯碼階段之後,接着進入執行指令(Execute,EX)階段 。此階段的任務是完成指令所規定的各種操作,具體實現指令的功能 。爲此,CPU 的不同部分被連接起來,以執行所需的操作 。例如,如果要求完成一個加法運算,算術邏輯單元(ALU)將被連接到一組輸入和一組輸出,輸入端提供需要相加的數值,輸出端將含有最後的運算結果 。執行指令階段是 CPU 工作流程中的核心環節,它就像是一位技藝精湛的工匠,根據指令譯碼器傳達的任務要求,運用各種工具(CPU 的不同部件),精心地完成各種操作,實現指令的功能 。
4.4 訪存取數(若需要)
根據指令需要,有可能要訪問主存,讀取操作數,這樣就進入了訪存取數(Memory,MEM)階段 。此階段的任務是:根據指令地址碼,得到操作數在主存中的地址,並從主存中讀取該操作數用於運算 。並非所有的指令都需要訪存取數,只有當指令涉及到從內存中讀取數據作爲操作數時,纔會進入這個階段 。
例如,當執行一條需要讀取內存中某個變量值進行計算的指令時,CPU 會根據指令中的地址碼,在主存中找到對應的地址,然後讀取該地址處的數據,將其作爲操作數參與後續的運算 。訪存取數階段就像是從倉庫中提取原材料的過程,CPU 根據指令的要求,準確地從主存這個 “倉庫” 中取出所需的 “原材料”(操作數),爲後續的運算做好準備 。
4.5 結果寫回
作爲最後一個階段,結果寫回(Write Back,WB)階段把執行指令階段的運行結果數據 “寫回” 到某種存儲形式 。結果數據經常被寫到 CPU 的內部寄存器中,以便被後續的指令快速地存取;在有些情況下,結果數據也可被寫入相對較慢、但較廉價且容量較大的主存 。許多指令還會改變程序狀態字寄存器中標誌位的狀態,這些標誌位標識着不同的操作結果,可被用來影響程序的動作 。例如,當執行完一個減法運算後,如果結果爲負數,程序狀態字寄存器中的符號標誌位可能會被設置爲 1,表示結果爲負 。
這個標誌位可以被後續的條件判斷指令讀取,根據標誌位的狀態決定程序的執行流程 。結果寫回階段就像是將完成的產品進行存放的過程,CPU 將執行指令得到的結果 “存放” 到合適的地方(寄存器或主存),同時更新相關的標誌位,爲後續的程序執行提供必要的信息 。在指令執行完畢、結果數據寫回之後,若無意外事件(如結果溢出等)發生,計算機就接着從程序計數器 PC 中取得下一條指令地址,開始新一輪的循環,下一個指令週期將順序取出下一條指令 。
五、影響 CPU 性能的因素
CPU 的性能受到多種因素的綜合影響,這些因素相互關聯,共同決定了 CPU 在各種計算任務中的表現 。瞭解這些影響因素,不僅有助於我們在選購 CPU 時做出更明智的決策,還能讓我們更好地理解計算機系統的性能瓶頸,從而有針對性地進行優化 。
5.1 核心數與線程數
核心數就像是工廠裏的生產線數量,生產線越多,能夠同時進行的生產任務也就越多。CPU 的核心數越多,它就能夠同時處理更多的任務,在多任務處理和並行計算方面具有明顯的優勢 。例如,當我們同時運行多個大型軟件,如視頻編輯軟件、3D 建模軟件以及多個瀏覽器窗口時,多核心的 CPU 能夠將不同的任務分配到各個核心上並行處理,大大提高了工作效率,減少了系統的卡頓現象 。
而線程數則可以理解爲每條生產線上的工人數量,工人越多,生產線的生產效率就越高。超線程技術允許一個物理核心在邏輯上模擬出多個線程,讓單個核心能夠同時執行多個指令流,就像一個工人可以同時完成多項簡單任務一樣 。通過超線程技術,CPU 可以在不增加物理核心數量的情況下,提高資源利用率,增強多任務處理能力 。例如,一個四核八線程的 CPU,雖然只有四個物理核心,但通過超線程技術,它可以同時處理八個線程的任務,在處理多線程任務時,性能相比四核四線程的 CPU 有顯著提升 。
5.2 主頻
主頻是 CPU 的時鐘頻率,簡單來說,就是 CPU 在單位時間內的工作頻率 。它就像是汽車發動機的轉速,轉速越高,單位時間內發動機完成的工作循環就越多,汽車的動力也就越強 。對於 CPU 來說,主頻越高,意味着它在單位時間內能夠完成的運算次數就越多,運行速度也就越快 。在一些對計算速度要求極高的應用場景,如科學計算、金融數據分析等,高主頻的 CPU 能夠顯著縮短計算時間,提高工作效率 。不過,主頻並不是決定 CPU 性能的唯一因素,核心數、緩存大小等其他因素同樣會對 CPU 的性能產生重要影響 。
5.3 緩存大小
緩存是位於 CPU 和內存之間的高速存儲區域,它的作用類似於一個臨時倉庫 。當 CPU 需要讀取數據或指令時,首先會在緩存中查找,如果能在緩存中找到,就可以直接讀取,避免了從速度較慢的內存中讀取數據,大大提高了 CPU 的訪問速度和整體性能 。緩存越大,就能夠存儲更多的常用數據和指令,CPU 在執行任務時能夠更少地等待數據,進而實現更高效的處理能力 。在進行大型遊戲或視頻編輯時,需要頻繁訪問大量的數據,較大的緩存可以將常用的數據保留在快速存儲中,減少從內存讀取的次數,顯著提升遊戲的流暢度和視頻編輯的速度 。如果緩存較小,CPU 就需要頻繁地訪問較慢的內存,可能導致遊戲卡頓、視頻編輯過程中出現延遲等問題 。
5.4 製程工藝
製程工藝是指製造 CPU 時所採用的技術和工藝水平,通常用納米(nm)來表示 。製程工藝越先進,晶體管的體積就越小,在相同面積的芯片上就可以集成更多的晶體管 。這不僅能夠提高 CPU 的性能,還能降低其功耗和發熱量 。以 7nm 製程工藝爲例,相比 14nm 製程工藝,7nm 製程工藝下的晶體管體積更小,集成度更高,CPU 可以在更小的芯片面積上實現更多的功能 。同時,由於晶體管之間的距離縮短,信號傳輸速度更快,CPU 的運行速度也得到了提升 。而且,更小的晶體管尺寸意味着更低的功耗,這對於筆記本電腦、平板電腦等移動設備來說尤爲重要,能夠延長設備的續航時間 。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/WsgEFuRqfJCKoM3Q-3Q-UA