18禁网站免费,成年人黄色视频网站,熟妇高潮一区二区在线播放,国产精品高潮呻吟AV

學(xué)習(xí)啦>學(xué)習(xí)電腦>電腦硬件知識>CPU知識>

CPU基礎(chǔ)知識大全詳解

時(shí)間: 懷健0 分享

CPU基礎(chǔ)知識大全詳解有哪些?CPU在電腦中是最核心關(guān)鍵的硬件之一,相當(dāng)于人的大腦,決定了電腦運(yùn)算能力,因此CPU的選擇至關(guān)重要。下面就讓小編帶你去看看CPU基礎(chǔ)知識大全詳解,希望對你有所幫助吧!

程序員必須了解的CPU知識 - 科普篇

1導(dǎo)讀

對于一名程序員來說,無論你使用的是什么語言,代碼最終都會(huì)交給CPU來執(zhí)行。所以了解CPU相關(guān)的知識一方面屬于程序員的內(nèi)功,另一方面也可以幫助你在日常編寫代碼時(shí)寫出更加高效的代碼

本文不打算對CPU進(jìn)行深入探究,相反是以簡單的語言來幫助大家了解CPU的工作原理以及不得不提到的CPU緩存相關(guān)知識,其中晦澀的內(nèi)容我會(huì)通過配圖來幫助大家理解,最后會(huì)以幾個(gè)例子來幫助大家更直觀的感受到CPU緩存帶來的性能影響

2CPU基礎(chǔ)知識

CPU即Central Processing Unit(中央處理器),是我們的代碼打交道最多的硬件之一,要想讓一個(gè)CPU工作,就必須給它提供指令和數(shù)據(jù),而這里的指令和數(shù)據(jù)一般就放在我們的內(nèi)存當(dāng)中。其中指令就是由我們平常編寫的代碼翻譯而來,數(shù)據(jù)也是我們代碼中需要用到的數(shù)據(jù)(例如一個(gè)int值、一串字符串等等)

以C語言為例,從我們開始編寫到運(yùn)行的生命周期可以粗略的用下圖表示:

大致分為以下幾個(gè)步驟

我們?nèi)粘V惺褂镁庉嬈骰蛘逫DE敲入代碼

代碼編寫完成后使用編譯和鏈接工具生成可以被執(zhí)行的程序,也就是機(jī)器語言(指令的集合)

當(dāng)程序被運(yùn)行時(shí),整個(gè)程序(包括指令和數(shù)據(jù))會(huì)被完整的載入到內(nèi)存當(dāng)中

CPU不停的向內(nèi)存讀取該程序的指令執(zhí)行直到程序結(jié)束

通過上述第4步我們知道,CPU自身是沒有保存我們的程序的,需要不停的向內(nèi)存讀取

那么有個(gè)問題是CPU是如何向內(nèi)存讀取的呢?

這里其實(shí)存在一個(gè)“總線”的概念,即CPU會(huì)通過地址總線、控制總線、數(shù)據(jù)總線來與我們的內(nèi)存進(jìn)行交互。其中地址總線的作用是尋址,即CPU告訴內(nèi)存需要哪一個(gè)內(nèi)存地址上的數(shù)據(jù);控制總線的作用是對外部組件的控制,例如CPU希望從內(nèi)存讀取數(shù)據(jù)則會(huì)在控制總線上發(fā)一個(gè)“讀信號”,如果希望往內(nèi)存中寫一個(gè)數(shù)據(jù)則會(huì)發(fā)一個(gè)“寫信號”;而數(shù)據(jù)總線的作用顧名思義就是用來傳輸數(shù)據(jù)本身的了

例如CPU需要希望從內(nèi)存中讀一條數(shù)據(jù),那么整個(gè)過程為:

到這里我們已經(jīng)知道了CPU在執(zhí)行我們程序的過程中會(huì)不斷的與內(nèi)存交互,讀取需要的指令和數(shù)據(jù)或者寫入相關(guān)的數(shù)據(jù)。這個(gè)過程是非常非??斓模话鉉PU與內(nèi)存交互一次需要200個(gè)時(shí)鐘周期左右,而現(xiàn)代的處理器單個(gè)時(shí)鐘周期一般都短于1納秒(1秒 = 十億納秒)

但我們的前輩們?nèi)匀粚@個(gè)速度不滿足,所以又對CPU設(shè)計(jì)了一套緩存系統(tǒng)來加速對內(nèi)存中數(shù)據(jù)的讀取

3CPU緩存

現(xiàn)代CPU通常設(shè)計(jì)三級緩存(L1、L2、L3),其中L1、L2緩存是每個(gè)CPU核心獨(dú)享的,L3緩存是所有CPU核心共享的,而L1緩存又分為數(shù)據(jù)緩存和指令緩存

我們的數(shù)據(jù)就從內(nèi)存先到L3緩存中,再到L2緩存中,再到L1緩存中,最后再到CPU寄存器中

按照大小來看,通常L1 < L2 < L3 < 內(nèi)存 < 磁盤,如果你手邊有一臺Linu__機(jī)器的話,可以通過下面的命令查看CPU各級緩存的大小

以我手上這臺服務(wù)器為例,L1指令緩存大小為32K、數(shù)據(jù)緩存大小為32K,L2緩存大小為1MB,L3緩存大小為35.75MB

按照速度來看,通常L1 > L2 > L3 > 內(nèi)存 > 磁盤,以時(shí)鐘周期為計(jì)量單位

L1緩存:約 4 個(gè)CPU時(shí)鐘周期

L2緩存:約 10 個(gè)CPU時(shí)鐘周期

L3緩存:約 40 個(gè)CPU時(shí)鐘周期

內(nèi)存:約 200 個(gè)CPU時(shí)鐘周期

也就意味著如果能命中緩存,我們程序的執(zhí)行速度至少提升5倍左右,如果能命中L1緩存則提升50倍左右,這已經(jīng)屬于相當(dāng)大的性能提升了

有了緩存系統(tǒng)后,CPU就不必要每條指令或數(shù)據(jù)都讀一次了,可以一次性讀取若干條指令或數(shù)據(jù)然后放到緩存里供以后查詢,因?yàn)楦鶕?jù)局部性原理,CPU訪問內(nèi)存時(shí),無論是讀取指令還是數(shù)據(jù),所訪問的內(nèi)存單元都趨于聚集在一個(gè)較小的連續(xù)區(qū)域中,所以一次性讀取一塊連續(xù)的內(nèi)存有利于后續(xù)的緩存命中

現(xiàn)實(shí)中,CPU通常情況下每次的讀取內(nèi)存時(shí)都會(huì)一次性讀取內(nèi)存中連續(xù)的64個(gè)字節(jié),這個(gè)連續(xù)的64字節(jié)術(shù)語就叫做Cache Line(緩存行),所以每一級CPU緩存就像下面這樣

如果你手邊有一臺Linu__機(jī)器的話,可以通過下面的命令查看你的機(jī)器使用的CPU的Cache Line大小是多少

對于我的服務(wù)器來說,L1緩存就有 32KB / 64B = 512 個(gè)Cache Line

到這里,我們已經(jīng)知道了CPU緩存的工作原理和加載方式,這里實(shí)際上還遺留了兩個(gè)話題沒有講,一個(gè)是如何組織每一級的 Cache Line(例如 L1 的 512 個(gè)Cache Line)來提升訪問的命中率;另一個(gè)更加復(fù)雜一點(diǎn),在現(xiàn)代CPU都是多核的場景下如何保證數(shù)據(jù)的一致性,因?yàn)槊總€(gè)核都有自己的L1和L2緩存,那么如果核心1修改的時(shí)候只修改了緩存的數(shù)據(jù)而沒有修改內(nèi)存中的數(shù)據(jù),其他核心讀到的就是舊數(shù)據(jù)了,如何解決這一問題?

由于本篇文章只是期望對CPU知識進(jìn)行一個(gè)科普,不希望對于小白來說一次性接觸大量的新內(nèi)容,所以這兩個(gè)問題我準(zhǔn)備在后面的另外兩篇再進(jìn)行更細(xì)致的討論

4性能對比

下面以幾個(gè)實(shí)際的例子來加深大家對Cache Line如何影響程序性能的理解

示例一

我們假設(shè)有一個(gè)5000萬長度的int數(shù)組,接著把這個(gè)數(shù)組的其中一些元素乘以2,考慮下面這兩份代碼

直覺上代碼一比代碼二少循環(huán)了4倍,并且也少乘2了4倍,理論上代碼一比代碼二快4倍左右才合理

但在我的服務(wù)器上運(yùn)行的結(jié)果是代碼一平均花費(fèi)90毫秒,代碼二平均花費(fèi)93毫秒,性能幾乎是差不多的,讀者可以自行思考一下原因,再點(diǎn)擊下方空白處查看解析

點(diǎn)擊下方空白區(qū)域查看解析

解析

這里最主要的原因還是Cache Line,雖然代碼一需要執(zhí)行的指令確實(shí)比代碼二要少4倍,但由于CPU一次會(huì)把連續(xù)的64個(gè)字節(jié)都讀入緩存,而讀寫緩存的速度又特別快(還記得嗎?L1的讀取速度只有約4個(gè)時(shí)鐘周期,是內(nèi)存的50倍),以至于我們很難察覺到這4倍指令的差距

示例二

假設(shè)我們需要遍歷一個(gè)二維數(shù)組,考慮下面這兩種遍歷方法

由于數(shù)組長度是一模一樣的,直覺上我們期望的是兩份代碼運(yùn)行時(shí)間相差無幾。但在我的服務(wù)器上代碼一運(yùn)行需要23毫秒,代碼二運(yùn)行需要51毫秒,讀者可以自行思考一下原因,再點(diǎn)擊下方空白處查看解析

點(diǎn)擊下方空白區(qū)域查看解析

解析

這里最主要的原因依然是Cache Line,由于C語言中二維數(shù)組的內(nèi)存是連續(xù)的,所以我們按行訪問的時(shí)候訪問的一直都是連續(xù)的內(nèi)存,而Cache Line也是連續(xù)的64個(gè)字節(jié),所以按行訪問對Cache Line更友好,更容易命中緩存

而按列訪問的話每次訪問的內(nèi)存不是連續(xù)的,每次的跨度都是256__sizeof(int)也就是1KB,更容易出現(xiàn)緩存Miss

示例三

假設(shè)我們有一個(gè)數(shù)組,我們希望計(jì)算所有大于100的元素的和,考慮下面兩份代碼

其中代碼一是隨機(jī)生成了個(gè)長度為1000W的數(shù)組,然后統(tǒng)計(jì)大于100的所有數(shù)字的和;代碼二也是隨機(jī)生成了個(gè)長度為1000W的數(shù)組,但是是先排完序,再統(tǒng)計(jì)大于100的所有數(shù)字的和。并且可以看到,兩份代碼都是只計(jì)算了統(tǒng)計(jì)sum的那段代碼的消耗時(shí)間,所以兩份代碼都不考慮隨機(jī)生成數(shù)組和排序花費(fèi)的時(shí)間

理論上來講兩份代碼花費(fèi)時(shí)間應(yīng)當(dāng)是相差無幾的,但實(shí)際上在我的機(jī)器上跑出來第一份代碼輸出的是46毫秒,第二份代碼輸出的是23毫秒

讀者可以自行思考一下原因,再點(diǎn)擊下方空白處查看解析,提示:第二份代碼中在統(tǒng)計(jì)sum之前數(shù)組是有序的

電腦CPU如何選購?臺式機(jī)CPU知識掃盲和選購建議

CPU有幾個(gè)重要的參數(shù):架構(gòu)、主頻、核心、線程、緩存、接口。

架構(gòu):

有句老話叫“拋開架構(gòu)看核心主頻都是耍流氓”,那什么是架構(gòu)?假如我們把架構(gòu)想象成交通工具,那么老的架構(gòu)就是火車,而新的架構(gòu)就是高鐵,所以架構(gòu)的提升直接影響CPU的性能。這也就是為什么老式的CPU雖然也有超高的主頻但性能還是被現(xiàn)在的i3碾壓的原因了。

電腦CPU如何選購?臺式機(jī)CPU知識掃盲和選購建議

主頻:

我們常在CPU的信息里看到 某某CPU主頻3.6GHz,這里的主頻其實(shí)是CPU內(nèi)核工作的時(shí)鐘頻率,并不直接等于CPU的運(yùn)算速度,但是高的主頻對于CPU的運(yùn)算速度卻至關(guān)重要。

核心:

核心又稱內(nèi)核,是CPU用來完成所有計(jì)算、接受/存儲(chǔ)命令、處理數(shù)據(jù)等任務(wù)的裝置。我們可以簡單的把核心理解為人的手,單核就是一只手、雙核就是兩只手、四核就是四只手。

核心數(shù)并不是越多越好的,要看使用場景,比如在打字的時(shí)候,兩只手就比一只手效率高,但是在操作鼠標(biāo)的時(shí)候,使用兩只手只會(huì)起到適得其反的效果。至于什么場景需要使用多少核心的CPU在下面會(huì)講到。

電腦CPU如何選購?臺式機(jī)CPU知識掃盲和選購建議

線程:

我們通常會(huì)看到“四核四線程” 和“四核八線程”這兩種說法,我們可以簡單的把工廠里的流水線比作線程,把工人比作核心,早先由于工人工作技能不高,一個(gè)工人只能處理一條流水線的任務(wù),我們可以把這個(gè)稱為單核單線程,但是后來工人技術(shù)熟練了,覺得操作一條流水線很無聊,不能體現(xiàn)自己的價(jià)值,于是就給又分配一條流水線,讓這個(gè)工人同時(shí)處理兩條流水線的任務(wù),我們可以把這個(gè)稱為“單核雙線程”。

緩存:

緩存也是CPU里的一項(xiàng)非常重要的參數(shù),由于CPU的運(yùn)算速度比內(nèi)存條的讀寫速度要快很多,這會(huì)讓CPU花費(fèi)很長的時(shí)間等待數(shù)據(jù)的到來或是把數(shù)據(jù)寫入內(nèi)存條,這個(gè)時(shí)候CPU內(nèi)的高速緩存可以作為臨時(shí)的存儲(chǔ)介質(zhì)來緩解CPU的運(yùn)算速度與內(nèi)存讀寫速度不匹配的矛盾,所以緩存越大越好。

電腦CPU如何選購?臺式機(jī)CPU知識掃盲和選購建議

接口:

CPU需要通過接口安裝在主板上才能工作,而目前CPU的接口都是針腳式接口,AMD和英特爾的CPU在接口上就有很大的差別,所以需要使用適配接口的主板才能正常工作。目前英特爾主流的接口類型為LGA-1151接口(6、7、8代i3 i5 i7都是這種接口);AMD平臺主流的接口類型有AM4接口(銳龍系列)和FM2+接口(速龍系列、APU系列)。

PS:英特爾最新的酷睿8代CPU雖然也是LGA-1151接口,但不適配老式的LGA-1151接口主板的平臺,需要另購主板

說完了這些重要的參數(shù),相信你也對CPU有了一個(gè)大概的了解,我們再談?wù)劜煌瑘鼍皩PU的選擇。

計(jì)算機(jī)系統(tǒng)基礎(chǔ):CPU相關(guān)知識筆記

1、什么是CPU

計(jì)算機(jī)的基本硬件系統(tǒng)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備5大部件組成。

運(yùn)算器和控制器等部件被集成在一起稱為中央處理單元(Central Processing Unit,CPU).CPU

是硬件系統(tǒng)的核心。

2、CPU的用途

CPU主要負(fù)責(zé)獲取程序指令、對指令進(jìn)行譯碼并加以執(zhí)行。

CPU的功能如下:

3、CPU的組成

CPU主要由運(yùn)算器、控制器、寄存器和內(nèi)部總線等部件組成。

3.1 運(yùn)算器

運(yùn)算器包括算術(shù)邏輯單元(ALU)、累加器、緩沖寄存器、狀態(tài)條件寄存器等。它的主要工作是完成所規(guī)定的的各種算術(shù)和邏輯運(yùn)算。

算術(shù)邏輯單元(ALU):ALU的重要組成部件,負(fù)責(zé)處理數(shù)據(jù),實(shí)現(xiàn)算術(shù)和邏輯運(yùn)算。

累加器(AC):當(dāng)執(zhí)行算術(shù)或邏輯運(yùn)算時(shí),為ALU提供一個(gè)工作區(qū)。

數(shù)據(jù)緩沖器(DR):作為CPU和內(nèi)存、外部設(shè)備之間數(shù)據(jù)傳送的中轉(zhuǎn)站、操作速度的緩沖;

在單累加器結(jié)構(gòu)的運(yùn)算器中,DR還可以作為操作數(shù)寄存器。

狀態(tài)寄存器(PSW):保存算術(shù)指令和邏輯指令運(yùn)行或測試的結(jié)果建立的的各種條件碼內(nèi)容,分為狀態(tài)標(biāo)志和控制標(biāo)志。

3.2 控制器

用于控制這個(gè)CPU的工作,不僅要保證程序的正確執(zhí)行,還要能處理異常事件。

控制器主要包括指令控制邏輯、時(shí)序控制邏輯、總線控制邏輯、中斷控制邏輯。

3.2.1 指令控制

指令寄存器(IR):當(dāng)執(zhí)行一條指令時(shí),需要先把它從內(nèi)存存儲(chǔ)器取到緩沖寄存器中,再送入IR中暫存,指令譯碼器會(huì)根據(jù)IR的內(nèi)容產(chǎn)生各種微操作命令,控制其他部件協(xié)調(diào)工作,完成指令的功能。

程序計(jì)數(shù)器(PC):PC具有寄存和計(jì)數(shù)兩種功能。又稱為指令計(jì)數(shù)器。

地址寄存器(AR):用來保存當(dāng)前CPU所訪問的內(nèi)存單元地址。

指令譯碼器(ID):包含指令操作碼和地址碼兩部分,為了能執(zhí)行任何給定的指令必須對操作碼進(jìn)行分析,以便識別要進(jìn)行的操作。

3.2.2 時(shí)序控制

時(shí)序控制要為每條指令按時(shí)間順序提供應(yīng)有的控制信號。

3.2.3 總線控制

為多個(gè)功能部件提供服務(wù)的信息通路的控制電路。

3.2.4 中斷控制

用于控制各種中斷請求,并根據(jù)優(yōu)先級排隊(duì),逐個(gè)交給CPU處理。

3.3 寄存器組

分為專用寄存器、通用寄存器。運(yùn)算器和控制器中的寄存器是專用寄存器,作用是固定的。

通用寄存器用途廣泛由程序員規(guī)定其用途。

4、什么是多核CPU

內(nèi)核:CPU的核心稱為內(nèi)核,是CPU的最重要組成部分。CPU的所有計(jì)算、接收/存儲(chǔ)命令、處理數(shù)據(jù)都是由核心執(zhí)行。

多核:在一個(gè)單芯片上集成兩個(gè)或者更多個(gè)處理器內(nèi)核,并且每個(gè)內(nèi)核都有自己的邏輯單元、控制單元、中端處理器、運(yùn)算單元、一級Cache、二級Cache共享或獨(dú)有。

多核CPU優(yōu)點(diǎn):可滿足用戶同時(shí)進(jìn)行多任務(wù)處理等要求。

CPU基礎(chǔ)知識大全詳解相關(guān)文章:

CPU的基礎(chǔ)知識大全有哪些

CPU基礎(chǔ)知識拓展大全

電腦主板應(yīng)用知識大全

CPU基礎(chǔ)知識大全詳解

CPU基礎(chǔ)知識大全詳解有哪些?CPU在電腦中是最核心關(guān)鍵的硬件之一,相當(dāng)于人的大腦,決定了電腦運(yùn)算能力,因此CPU的選擇至關(guān)重要。下面就讓小編帶你去看看CPU基礎(chǔ)知識大全詳解,希望對你有所幫助吧!程序員必須了解的CPU知識 - 科普篇1導(dǎo)讀對于一名程序員來說,無論你使用的是什么語言,代碼最終都會(huì)交給CPU來執(zhí)行。所以了解CPU相關(guān)的知識一方面屬于程序員的內(nèi)功,另一方面也可以幫助你在日常編寫代碼時(shí)寫出更加高效的代碼本文不打算對CPU進(jìn)行深入探究,相反是以簡單的語言來幫助大家了解CPU的工作原理以及
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

  • CPU基礎(chǔ)知識拓展
    CPU基礎(chǔ)知識拓展

    CPU 的全稱是 Central Processing Unit,它是你的電腦中最硬核的組件,這種說法一點(diǎn)不為過。CPU 是能夠讓你的計(jì)算機(jī)叫計(jì)算機(jī)的核心組件,但是它卻不能代表你

  • CPU基礎(chǔ)知識科普
    CPU基礎(chǔ)知識科普

    CPU的英文全稱是(Central Processing Unit),中文意思翻譯中央處理器,是計(jì)算機(jī)的主要設(shè)備之一,功能主要是解釋計(jì)算機(jī)指令以及處理計(jì)算機(jī)軟件中的數(shù)據(jù)。下

  • CPU的基礎(chǔ)知識
    CPU的基礎(chǔ)知識

    我們通常會(huì)將CPU比喻為人類的大腦,是計(jì)算機(jī)的核心硬件,決定了一臺電腦的運(yùn)算性能好壞。我們在選購CPU的時(shí)候,通常都會(huì)在網(wǎng)上查詢處理器型號參數(shù),

  • 電腦CPU溫度多少合適
    電腦CPU溫度多少合適

    電腦cup溫度過高怎么辦?cpu溫度跟電腦所處的周圍環(huán)境溫度是有很大關(guān)系的,夏天的時(shí)候CPU溫度會(huì)高一點(diǎn)的。一起來看看電腦cup溫度多少合適,歡迎查閱!C

744476