CPU通常包含以下幾個主要部件:
1. **控制單元(Control Unit):** 控制單元負(fù)責(zé)解析并執(zhí)行存儲在內(nèi)存中的程序指令。它從內(nèi)存中讀取指令,解碼指令的操作碼和操作數(shù),并控制數(shù)據(jù)流向和控制信號的生成,以確保指令正確執(zhí)行。
2. **算術(shù)邏輯單元(Arithmetic Logic Unit,ALU):** 算術(shù)邏輯單元執(zhí)行各種算術(shù)和邏輯運(yùn)算,包括加法、減法、乘法、除法、與、或、非等。它負(fù)責(zé)處理數(shù)據(jù)的運(yùn)算和邏輯判斷,以完成各種計算任務(wù)。
3. **寄存器(Registers):** 寄存器是CPU內(nèi)部用于暫存數(shù)據(jù)和指令的高速存儲單元。CPU中包含多個寄存器,如程序計數(shù)器(Program Counter,PC)、指令寄存器(Instruction Register,IR)、累加器(Accumulator)、通用寄存器等,用于存儲臨時數(shù)據(jù)和控制信息。
CPU的工作原理是根據(jù)程序指令序列執(zhí)行一系列操作,包括取指令、解碼指令、執(zhí)行指令和更新狀態(tài)等。它通過與內(nèi)存、輸入輸出設(shè)備和其他外部設(shè)備的交互,實現(xiàn)計算機(jī)系統(tǒng)的各種功能和應(yīng)用。
CPU的性能通常通過時鐘頻率、指令執(zhí)行速度和多核數(shù)量等指標(biāo)來衡量。隨著技術(shù)的進(jìn)步和需求的增長,CPU不斷發(fā)展,從單核到多核、從CISC架構(gòu)到RISC架構(gòu)等,以滿足不同應(yīng)用場景的需求。
上文:現(xiàn)代計算機(jī)系統(tǒng)
操作系統(tǒng)與運(yùn)行操作系統(tǒng)的內(nèi)核硬件關(guān)系密切。操作系統(tǒng)擴(kuò)展了計算機(jī)指令集并管理計算機(jī)的資源。因此,操作系統(tǒng)因此必須足夠了解硬件的運(yùn)行,這里我們先簡要介紹一下現(xiàn)代計算機(jī)中的計算機(jī)硬件。
從概念上來看,一臺簡單的個人電腦可以被抽象為上面這種相似的模型,CPU、內(nèi)存、V/O 設(shè)備都和總線串聯(lián)起來并通過總線與其他設(shè)備進(jìn)行通信。
CPU 是計算機(jī)的大腦,它主要和內(nèi)存進(jìn)行交互,從內(nèi)存中提取指令并執(zhí)行它。
一個 CPU 的執(zhí)行周期是從內(nèi)存中提取第一條指令、解碼并決定它的類型和操作數(shù),執(zhí)行,然后再提取、解碼執(zhí)行后續(xù)的指令,重復(fù)該循環(huán)直到程序運(yùn)行完畢。
每個 CPU 都有一組可以執(zhí)行的特定指令集。因此,x86 的 CPU 不能執(zhí)行 ARM 的程序并且 ARM 的 CPU 也不能執(zhí)行 x86 的程序。
由于訪問內(nèi)存獲取執(zhí)行或數(shù)據(jù)要比執(zhí)行指令花費(fèi)的時間長,因此所有的 CPU 內(nèi)部都會包含一些寄存器來保存關(guān)鍵變量和臨時結(jié)果。因此,在指令集中通常會有一些指令用于把關(guān)鍵字從內(nèi)存中加載到寄存器中,以及把關(guān)鍵字從寄存器存入到內(nèi)存中。還有一些其他的指令會把來自寄存器和內(nèi)存的操作數(shù)進(jìn)行組合,例如 add 操作就會把兩個操作數(shù)相加并把結(jié)果保存到內(nèi)存中。
除了用于保存變量和臨時結(jié)果的通用寄存器外,大多數(shù)計算機(jī)還具有幾個特殊的寄存器,這些寄存器對于程序員是可見的。其中之一就是程序計數(shù)器(program counter),程序計數(shù)器會指示下一條需要從內(nèi)存提取指令的地址。提取指令后,程序計數(shù)器將更新為下一條需要提取的地址。
另一個寄存器是堆棧指針(stack pointer),它指向內(nèi)存中當(dāng)前棧的頂端。堆棧指針會包含輸入過程中的有關(guān)參數(shù)、局部變量以及沒有保存在寄存器中的臨時變量。
還有一個寄存器是 PSWProgram Status Word)程序狀態(tài)字寄存器,這個寄存器是由操作系統(tǒng)維護(hù)的8個字節(jié)(64位) long 類型的數(shù)據(jù)集合。它會跟蹤當(dāng)前系統(tǒng)的狀態(tài)。除非發(fā)生系統(tǒng)結(jié)束,否則我們可以忽略 PSW。用戶程序通常可以讀取整個PSW,但通常只能寫入其某些字段。PSW 在系統(tǒng)調(diào)用和1/0 中起著重要作用。
操作系統(tǒng)必須了解所有的寄存器。在時間多路復(fù)用(time multiplexing)的 CPU 中,操作系統(tǒng)往往停止運(yùn)行一個程序轉(zhuǎn)而運(yùn)行另外一個。每次當(dāng)操作系統(tǒng)停止運(yùn)行一個程序時,操作系統(tǒng)會保存所有寄存器的值,以便于后續(xù)重新運(yùn)行該程序。
為了提升性能,CPU 設(shè)計人員早就放棄了同時去讀取、解碼和執(zhí)行一條簡單的指令。許多現(xiàn)代的 CPU 都具有同時讀取多條指令的機(jī)制。
例如,一個 CPU 可能會有單獨(dú)訪問、解碼和執(zhí)行單元,所以,當(dāng) CPU 執(zhí)行第 N 條指令時,還可以對N+1條指令解碼,還可以讀取 N+2 條指令。像這樣的組織形式被稱為流水線(pipeline):
比流水線更先進(jìn)的設(shè)計是超標(biāo)量(superscalar)CPu,下面是超標(biāo)量 CPU的設(shè)計
在上面這個設(shè)計中,存在多個執(zhí)行單元,例如,一個用來進(jìn)行整數(shù)運(yùn)算、一個用來浮點(diǎn)數(shù)運(yùn)算、一個用來布爾運(yùn)算。兩個或者更多的指令被一次性取出、解碼并放入緩沖區(qū)中,直至它們執(zhí)行完畢。只要一個執(zhí)行單元空閑,就會去檢查緩沖區(qū)是否有可以執(zhí)行的指令。如果有,就把指令從緩沖區(qū)中取出并執(zhí)行。
這種設(shè)計的含義是應(yīng)用程序通常是無序執(zhí)行的。在大多數(shù)情況下,硬件負(fù)責(zé)保證這種運(yùn)算的結(jié)果與順序執(zhí)行指令時的結(jié)果相同。
除了用在嵌入式系統(tǒng)中非常簡單的 CPU 之外,多數(shù) CPU 都有兩種模式,即前面已經(jīng)提到的內(nèi)核態(tài)和用戶態(tài)。
通常情況下,PSW 寄存器中的一個二進(jìn)制位會控制當(dāng)前狀態(tài)是內(nèi)核態(tài)還是用戶態(tài)。當(dāng)運(yùn)行在內(nèi)核態(tài)時,CPU 能夠執(zhí)行任何指令集中的指令并且能夠使用硬件的功能。在臺式機(jī)和服務(wù)器上,操作系統(tǒng)通常以內(nèi)核模式運(yùn)行,從而可以訪問完整的硬件。在大多數(shù)嵌入式系統(tǒng)中,一部分運(yùn)行在內(nèi)核態(tài)下,剩下的一部分運(yùn)行在用戶態(tài)下。
用戶應(yīng)用程序通常運(yùn)行在用戶態(tài)下,在用戶態(tài)下,CPU 只能執(zhí)行指令集中的一部分并且只能訪問硬件的一部分功能。一般情況下,在用戶態(tài)下,有關(guān) V/O 和內(nèi)存保護(hù)的所有指令是禁止執(zhí)行的。當(dāng)然,設(shè)置 PSW 模式的二進(jìn)制位為內(nèi)核態(tài)也是禁止的。
為了獲取操作系統(tǒng)的服務(wù),用戶程序必須使用系統(tǒng)調(diào)用(system call),系統(tǒng)調(diào)用會轉(zhuǎn)換為內(nèi)核態(tài)并且調(diào)用操作系統(tǒng)。TRAP 指令用于把用戶態(tài)切換為內(nèi)核態(tài)并啟用操作系統(tǒng)。當(dāng)有關(guān)工作完成之后,在系統(tǒng)調(diào)用后面的指令會把控制權(quán)交給用戶程序。我們會在后面探討操作系統(tǒng)的調(diào)用細(xì)節(jié)。
果本文對你有幫助,歡迎關(guān)注、點(diǎn)贊、收藏、轉(zhuǎn)發(fā)給朋友,讓我有持續(xù)創(chuàng)作的動力
今天來給大家簡單科普一下CPU的相關(guān)知識吧。首先,CPU是做什么的?
CPU簡介(摘自百度百科)中央處理器(CPU),是電子計算機(jī)的主要設(shè)備之一,電腦中的核心配件,其功能主要是解釋計算機(jī)指令以及處理計算機(jī)軟件中的數(shù)據(jù)。在計算機(jī)體系結(jié)構(gòu)中,CPU 是對計算機(jī)的所有硬件資源(如存儲器、輸入輸出單元) 進(jìn)行控制調(diào)配、執(zhí)行通用運(yùn)算的核心硬件單元,是計算機(jī)的運(yùn)算和控制核心。
簡單來說,我們操作電腦,就相當(dāng)于給電腦出了一道又一道的“題目”,而CPU就負(fù)責(zé)“解題”——是不是和我們的大腦功能很相似呢?
因此,在電腦(尤其是DIY臺式機(jī))的選購中,選好一款合適的CPU是非常重要的。CPU如何命名?CPU的命名有什么玄機(jī)?相信你看了下面一段就能明白。
CPU叫這些名字
目前PC界有兩家主要的CPU廠商,分別是“藍(lán)廠”——Intel:
和“紅廠”——AMD:
先看看CPU“姓”什么吧。下圖展示這兩家近幾年的產(chǎn)品系列,一些太古老的就不列入其中了:
現(xiàn)階段電腦的CPU主要采用酷睿和銳龍的CPU,別的系列用的不多,像至強(qiáng)E3、A系列APU,F(xiàn)X“農(nóng)機(jī)系列”現(xiàn)在都已經(jīng)“停更”了。
試一試
找出下圖中配置單和筆記本電腦配置表中的CPU:
答案如下:
這些都是CPU!相信以后看到一臺電腦的配置表,你可以第一時間找到CPU型號了。
了解完CPU“姓”什么之后,我們需要進(jìn)一步了解它的“全名”。CPU的全名由以下幾個部分組成:
PS:Intel的移動端CPU會用不同數(shù)字代表不同的功耗,比如i5-1135G7就代表TDP=12-28W,而i5-1130G7就代表TDP=7-15W。
看到這里,相信CPU的名字對于你來說,不是什么“謎語”了。
CPU后綴的學(xué)問
由于CPU的后綴相當(dāng)復(fù)雜,所以這里獨(dú)立用一節(jié)來解釋。先看桌面端CPU(臺式機(jī))的吧:
AMD和Intel桌面端后綴的最大區(qū)別,就是Intel家沒有后綴的CPU不能超頻,只有帶K的和帶X/XE的可以超;而AMD銳龍和線程撕裂者系列,無論什么后綴,全系列支持超頻。
再來看看移動端CPU(筆記本電腦)的后綴吧:
移動端CPU的后綴比較復(fù)雜,尤其是Intel的。Intel在10代和11代低壓酷睿采用了一種全新的命名方式——即用不同的定位名區(qū)分不同功耗的CPU,而后綴則用來區(qū)分核顯,比如i5-1035G7,核顯性能強(qiáng)于i5-1035G4。
隨著CPU性能的發(fā)展和輕薄本散熱性能的提高,“低壓”和“標(biāo)壓”的鴻溝逐漸模糊,買筆記本的時候更應(yīng)該關(guān)注能“跑到多少W”,而不是“標(biāo)壓/低壓”。
▲小新Pro14宣傳圖
從命名看性能
廠商給CPU命名,自然是希望消費(fèi)者能一眼看出性能差別(不過我覺得這一目的沒有達(dá)到),我們應(yīng)該怎樣判斷CPU的性能呢?
還是從這張圖入手:
例:R9 5900X>R7 5800X
例:R7 5800X>R7 3800X
例:R9 5950X>R9 5900X
例:i5-10600K>i5-10400F
那不同代際的不同定位之間,不同廠商之間的CPU怎么比較性能呢?這個時候就需要一份“天梯圖”了。
我個人推薦使用超能網(wǎng)的天梯圖:
入口:https://topic.expreview.com/CPU/
這份天梯比較詳細(xì),可供的CPU也比較齊全。
影響CPU性能的因素
在我看來,CPU的性能主要由以下幾個因素決定(重要程度從上到下):
決定CPU性能的最重要因素,體現(xiàn)CPU廠商功力。
拋開架構(gòu)看核心和主頻是不合理的,當(dāng)年AMD“農(nóng)機(jī)時代”,多核高頻,游戲性能還比不如同時代的i3。同一代CPU的架構(gòu)一般是一樣的,不同陣營的CPU可以通過評測來了解具體的架構(gòu)。
▲AMD最新的Zen3架構(gòu)
IPC,英文全稱“Instruction Per Clock”,中文翻譯過來就是每個時鐘的指令,代表了一款CPU的設(shè)計架構(gòu)。CPU性能判斷標(biāo)準(zhǔn)公式是CPU性能=IPC(CPU每一時鐘周期內(nèi)所執(zhí)行的指令多少)×頻率(MHz時鐘速度)。
IPC越強(qiáng),CPU性能就越強(qiáng),因此Intel和AMD兩家都在不遺余力地提升自家CPU的IPC。
一般來說,制程越先進(jìn),數(shù)值就越小,相同面積下能容納的晶體管數(shù)量就越多,CPU性能越強(qiáng)。比如同樣是4核心的CPU,7nm比14nm的要強(qiáng)得多。
從占地足足150平方米的“ENIAC”到現(xiàn)在小巧的PC,電腦體積之所以能越來越小,和CPU制程的發(fā)展息息相關(guān)。
核心數(shù)很直觀,就是物理核心數(shù),多少核就是多少核,如假包換。
現(xiàn)在不少CPU都有“超線程”技術(shù),所謂超線程,就是一種提高核心利用率的方式,簡而言之就是能將一個物理核心虛擬成兩個線程,任務(wù)管理器看到的“框框”數(shù)目就是線程數(shù)。
注意:超線程只是一種提高核心利用率的技術(shù),本質(zhì)上不能代替物理核心!比如同種架構(gòu)之下,4核心8線程,性能是不如6核6線程的。
主頻就是“核心速度”,顯示的是當(dāng)前狀態(tài)下CPU的工作頻率。一般來說,主頻越高,運(yùn)行速度越快,就好比汽車發(fā)動機(jī),轉(zhuǎn)速越快,車速自然也就越快。
有一些比較老的軟件或者電腦書籍,會要求“主頻XXGHz”,但現(xiàn)在CPU的頻率并不是一成不變的,有一個叫“睿頻”的技術(shù),無論Intel還是AMD都有,當(dāng)需要的時候,CPU主頻會自動上去的。為了減少功耗,CPU是不會長時間高頻率運(yùn)行的。
CPU高速緩存是用于減少處理器訪問內(nèi)存所需平均時間的部件。當(dāng)處理器發(fā)出內(nèi)存訪問請求時,會先查看緩存內(nèi)是否有請求數(shù)據(jù)。如果存在(命中),則不經(jīng)訪問內(nèi)存直接返回該數(shù)據(jù);如果不存在(失效),則要先把內(nèi)存中的相應(yīng)數(shù)據(jù)載入緩存,再將其返回處理器。
緩存越大,CPU就可以更加從容地處理數(shù)據(jù),不需要每次都訪問內(nèi)存,能在一定程度上降低延遲,提升使用體驗。
Q:i7一定比i5好嗎?
A:不一定,一切以天梯為準(zhǔn),比如i5 8600K就強(qiáng)于i7 7700K。而同一代,同一平臺的CPU,i7>i5>i3。
Q:筆記本低壓CPU就是垃圾?
A:不是的,現(xiàn)在筆記本低壓和標(biāo)壓的界限越來越模糊,主要看功耗。
Q:AMD的CPU跟NVIDIA的顯卡兼容不?
A:目前無論是N卡還是AMD的顯卡,接口是一樣的,都兼容。
Q:核心越多越好?主頻越高越好?
A:是的。但是僅限于同種架構(gòu)的CPU進(jìn)行比較,拋開架構(gòu)比較就是耍流氓。當(dāng)年FX9590,八核全核心5GHz,其綜合性能跟自家R5 1400差不多,游戲性能被吊打。
Q:散片就是山寨,小作坊產(chǎn)品?
A:不是,目前CPU除了Intel和AMD,別家沒有能力去山寨