久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

CPU基礎知識詳解[共五篇]

時間:2020-11-25 00:40:42下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《CPU基礎知識詳解》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《CPU基礎知識詳解》。

第一篇:CPU基礎知識詳解

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

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

1導讀

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

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

2CPU基礎知識

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

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

大致分為以下幾個步驟

我們日常中使用編輯器或者IDE敲入代碼

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

當程序被運行時,整個程序(包括指令和數據)會被完整的載入到內存當中

CPU不停的向內存讀取該程序的指令執行直到程序結束

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

那么有個問題是CPU是如何向內存讀取的呢?

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

例如CPU需要希望從內存中讀一條數據,那么整個過程為:

到這里我們已經知道了CPU在執行我們程序的過程中會不斷的與內存交互,讀取需要的指令和數據或者寫入相關的數據。這個過程是非常非常快的,一般CPU與內存交互一次需要200個時鐘周期左右,而現代的處理器單個時鐘周期一般都短于1納秒(1秒= 十億納秒)

但我們的前輩們仍然對這個速度不滿足,所以又對CPU設計了一套緩存系統來加速對內存中數據的讀取

3CPU緩存

現代CPU通常設計三級緩存(L1、L2、L3),其中L1、L2緩存是每個CPU核心獨享的,L3緩存是所有CPU核心共享的,而L1緩存又分為數據緩存和指令緩存

我們的數據就從內存先到L3緩存中,再到L2緩存中,再到L1緩存中,最后再到CPU寄存器中

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

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

按照速度來看,通常L1 > L2 > L3 > 內存 > 磁盤,以時鐘周期為計量單位

L1緩存:約 4 個CPU時鐘周期

L2緩存:約 10 個CPU時鐘周期

L3緩存:約 40 個CPU時鐘周期

內存:約 200 個CPU時鐘周期

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

有了緩存系統后,CPU就不必要每條指令或數據都讀一次了,可以一次性讀取若干條指令或數據然后放到緩存里供以后查詢,因為根據局部性原理,CPU訪問內存時,無論是讀取指令還是數據,所訪問的內存單元都趨于聚集在一個較小的連續區域中,所以一次性讀取一塊連續的內存有利于后續的緩存命中

現實中,CPU通常情況下每次的讀取內存時都會一次性讀取內存中連續的64個字節,這個連續的64字節術語就叫做CacheLine(緩存行),所以每一級CPU緩存就像下面這樣

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

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

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

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

4性能對比

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

示例一

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

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

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

點擊下方空白區域查看解析

解析

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

示例二

假設我們需要遍歷一個二維數組,考慮下面這兩種遍歷方法:

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

點擊下方空白區域查看解析

解析

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

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

示例三

假設我們有一個數組,我們希望計算所有大于100的元素的和,考慮下面兩份代碼

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

理論上來講兩份代碼花費時間應當是相差無幾的,但實際上在我的機器上跑出來第一份代碼輸出的是46毫秒,第二份代碼輸出的是23毫秒

讀者可以自行思考一下原因,再點擊下方空白處查看解析,提示:第二份代碼中在統計sum之前數組是有序的電腦CPU如何選購?臺式機CPU知識掃盲和選購建議

CPU有幾個重要的參數:架構、主頻、核心、線程、緩存、接口。

架構:

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

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

主頻:

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

核心:

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

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

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

線程:

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

緩存:

緩存也是CPU里的一項非常重要的參數,由于CPU的運算速度比內存條的讀寫速度要快很多,這會讓CPU花費很長的時間等待數據的到來或是把數據寫入內存條,這個時候CPU內的高速緩存可以作為臨時的存儲介質來緩解CPU的運算速度與內存讀寫速度不匹配的矛盾,所以緩存越大越好。

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

接口:

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

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

說完了這些重要的參數,相信你也對CPU有了一個大概的了解,我們再談談不同場景對CPU的選擇。

計算機系統基礎:CPU相關知識筆記

1、什么是CPU

計算機的基本硬件系統由運算器、控制器、存儲器、輸入設備、輸出設備5大部件組成。

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

是硬件系統的核心。

2、CPU的用途

CPU主要負責獲取程序指令、對指令進行譯碼并加以執行。

CPU的功能如下:

3、CPU的組成CPU主要由運算器、控制器、寄存器和內部總線等部件組成。

3.1 運算器

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

算術邏輯單元(ALU):ALU的重要組成部件,負責處理數據,實現算術和邏輯運算。

累加器(AC):當執行算術或邏輯運算時,為ALU提供一個工作區。

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

在單累加器結構的運算器中,DR還可以作為操作數寄存器。

狀態寄存器(PSW):保存算術指令和邏輯指令運行或測試的結果建立的的各種條件碼內容,分為狀態標志和控制標志。

3.2 控制器

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

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

3.2.1 指令控制

指令寄存器(IR):當執行一條指令時,需要先把它從內存存儲器取到緩沖寄存器中,再送入IR中暫存,指令譯碼器會根據IR的內容產生各種微操作命令,控制其他部件協調工作,完成指令的功能。

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

地址寄存器(AR):用來保存當前CPU所訪問的內存單元地址。

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

3.2.2 時序控制

時序控制要為每條指令按時間順序提供應有的控制信號。

3.2.3 總線控制

為多個功能部件提供服務的信息通路的控制電路。

3.2.4 中斷控制

用于控制各種中斷請求,并根據優先級排隊,逐個交給CPU處理。

3.3 寄存器組

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

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

4、什么是多核CPU

內核:CPU的核心稱為內核,是CPU的最重要組成部分。CPU的所有計算、接收/存儲命令、處理數據都是由核心執行。

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

多核CPU優點:可滿足用戶同時進行多任務處理等要求。

第二篇:CPU基礎知識

CPU的英文全稱是(Central ProcessingUnit),中文意思翻譯中央處理器,是計算機的主要設備之一,功能主要是解釋計算機指令以及處理計算機軟件中的數據。計算機的可編程性主要是指對中央處理器的編程。下面就讓小編帶你去看看CPU基礎知識大全,希望能幫助到大家!

關于 CPU 的一些基本知識總結

CPU是計算機的大腦。

1、程序的運行過程,實際上是程序涉及到的、未涉及到的一大堆的指令的執行過程。

當程序要執行的部分被裝載到內存后,CPU要從內存中取出指令,然后指令解碼(以便知道類型和操作數,簡單的理解為CPU要知道這是什么指令),然后執行該指令。再然后取下一個指令、解碼、執行,以此類推直到程序退出。

2、這個取指、解碼、執行三個過程構成一個CPU的基本周期。

3、每個CPU都有一套自己可以執行的專門的指令集(注意,這部分指令是CPU提供的,CPU-Z軟件可查看)。

正是因為不同CPU架構的指令集不同,使得__86處理器不能執行ARM程序,ARM程序也不能執行__86程序。(Intel和AMD都使用__86指令集,手機絕大多數使用ARM指令集)。

注:指令集的軟硬件層次之分:硬件指令集是硬件層次上由CPU自身提供的可執行的指令集合。軟件指令集是指語言程序庫所提供的指令,只要安裝了該語言的程序庫,指令就可以執行。

4、由于CPU訪問內存以得到指令或數據的時間要比執行指令花費的時間長很多,因此在CPU內部提供了一些用來保存關鍵變量、臨時數據等信息的通用寄存器。

所以,CPU需要提供 一些特定的指令,使得可以從內存中讀取數據存入寄存器以及可以將寄存器數據存入內存。

此外還需要提供加法、減、not/and/or等基本運算指令,而乘除法運算都是推算出來的(支持的基本運算指令參見ALUFunctions),所以乘除法的速度要慢的多。這也是算法里在考慮時間復雜度時常常忽略加減法次數帶來的影響,而考慮乘除法的次數的原因。

5、除了通用寄存器,還有一些特殊的寄存器。典型的如:

PC:program counter,表示程序計數器,它保存了將要取出的下一條指令的內存地址,指令取出后,就會更新該寄存器指向下一條指令。

堆棧指針:指向內存當前棧的頂端,包含了每個函數執行過程的棧幀,該棧幀中保存了該函數相關的輸入參數、局部變量、以及一些沒有保存在寄存器中的臨時變量。

PSW:program statusword,表示程序狀態字,這個寄存器內保存了一些控制位,比如CPU的優先級、CPU的工作模式(用戶態還是內核態模式)等。

6、在CPU進行進程切換的時候,需要將寄存器中和當前進程有關的狀態數據寫入內存對應的位置(內核中該進程的棧空間)保存起來,當切換回該進程時,需要從內存中拷貝回寄存器中。即上下文切換時,需要保護現場和恢復現場。

7、為了改善性能,CPU已經不是單條取指-->解碼-->執行的路線,而是分別為這3個過程分別提供獨立的取值單元,解碼單元以及執行單元。這樣就形成了流水線模式。

例如,流水線的最后一個單元——執行單元正在執行第n條指令,而前一個單元可以對第n+1條指令進行解碼,再前一個單元即取指單元可以去讀取第n+2條指令。這是三階段的流水線,還可能會有更長的流水線模式。

8、更優化的CPU架構是superscalar架構(超標量架構)。這種架構將取指、解碼、執行單元分開,有大量的執行單元,然后每個取指+解碼的部分都以并行的方式運行。比如有2個取指+解碼的并行工作線路,每個工作線路都將解碼后的指令放入一個緩存緩沖區等待執行單元去取出執行。

9、除了嵌入式系統,多數CPU都有兩種工作模式:內核態和用戶態。這兩種工作模式是由PSW寄存器上的一個二進制位來控制的。

10、內核態的CPU,可以執行指令集中的所有指令,并使用硬件的所有功能。

11、用戶態的CPU,只允許執行指令集中的部分指令。一般而言,IO相關和把內存保護相關的所有執行在用戶態下都是被禁止的,此外其它一些特權指令也是被禁止的,比如用戶態下不能將PSW的模式設置控制位設置成內核態。

12、用戶態CPU想要執行特權操作,需要發起系統調用來請求內核幫忙完成對應的操作。其實是在發起系統調用后,CPU會執行trap指令陷入(trap)到內核。當特權操作完成后,需要執行一個指令讓CPU返回到用戶態。

13、除了系統調用會陷入內核,更多的是硬件會引起trap行為陷入內核,使得CPU控制權可以回到操作系統,以便操作系統去決定如何處理硬件異常。

關于CPU的基本組成1、CPU是用來運算的(加法運算+、乘法運算__、邏輯運算and not or等),例如c=a+b。

2、運算操作涉及到數據輸入(input)、處理、數據輸出(output),a和b是輸入數據,加法運算是處理,c是輸出數據。

3、CPU需要使用一個叫做存儲器(也就是各種寄存器)的東西保存輸入和輸出數據。以下是幾種常見的寄存器(前文也介紹了一些)

MAR: memory address register,保存將要被訪問數據在內存中哪個地址處,保存的是地址值

MDR: memory data register,保存從內存讀取進來的數據或將要寫入內存的數據,保存的是數據值

AC: Accumulator,保存算術運算和邏輯運算的中間結果,保存的是數據值

PC: Program Counter,保存下一個將要被執行指令的地址,保存的是地址值

CIR: current instruction register,保存當前正在執行的指令

4、CPU還要將一些常用的基本運算工具(如加法器)放進CPU,這部分負責運算,稱為算術邏輯單元(ALU, Arithmetic LogicUnit)。

5、CPU中還有一個控制器(CU, Control Unit),負責將存儲器中的數據送到ALU中去做運算,并將運算后的結果存回到存儲器中。

控制器還包含了一些控制信號。

5、控制器之所以知道數據放哪里、做什么運算(比如是做加法還是邏輯運算?)都是由指令告訴控制器的,每個指令對應一個基本操作,比如加法運算對應一個指令。

6、例如,將兩個MDR寄存器(保存了來自內存的兩個數據)中的值拷貝到ALU中,然后根據指定的操作指令執行加法運算,將運算結果拷貝會一個MDR寄存器中,最后寫入到內存。

7、這就是馮諾依曼結構圖,也就是現在計算機的結構圖。

關于CPU的多核和多線程

1、CPU的物理個數由主板上的插槽數量決定,每個CPU可以有多核心,每核心可能會有多線程。

2、多核CPU的每核(每核都是一個小芯片),在OS看來都是一個獨立的CPU。

3、對于超線程CPU來說,每核CPU可以有多個線程(數量是兩個,比如1核雙線程,2核4線程,4核8線程),每個線程都是一個虛擬的邏輯CPU(比如windows下是以邏輯處理器的名稱稱呼的),而每個線程在OS看來也是獨立的CPU。

這是欺騙操作系統的行為,在物理上仍然只有1核,只不過在超線程CPU的角度上看,它認為它的超線程會加速程序的運行。

4、要發揮超線程優勢,需要操作系統對超線程有專門的優化。

5、多線程的CPU在能力上,比非多線程的CPU核心要更強,但每個線程不足以與獨立的CPU核心能力相比較。

6、每核上的多線程CPU都共享該核的CPU資源。

例如,假設每核CPU都只有一個“發動機”資源,那么線程1這個虛擬CPU使用了這個“發動機”后,線程2就沒法使用,只能等待。

所以,超線程技術的主要目的是為了增加流水線(參見前文對流水線的解釋)上更多個獨立的指令,這樣線程1和線程2在流水線上就盡量不會爭搶該核CPU資源。所以,超線程技術利用了superscalar(超標量)架構的優點。

7、多線程意味著每核可以有多個線程的狀態。比如某核的線程1空閑,線程2運行。

8、多線程沒有提供真正意義上的并行處理,每核CPU在某一時刻仍然只能運行一個進程,因為線程1和線程2是共享某核CPU資源的。可以簡單的認為每核CPU在獨立執行進程的能力上,有一個資源是唯一的,線程1獲取了該資源,線程2就沒法獲取。

但是,線程1和線程2在很多方面上是可以并行執行的。比如可以并行取指、并行解碼、并行執行指令等。所以雖然單核在同一時間只能執行一個進程,但線程1和線程2可以互相幫助,加速進程的執行。

并且,如果線程1在某一時刻獲取了該核執行進程的能力,假設此刻該進程發出了IO請求,于是線程1掌握的執行進程的能力,就可以被線程2獲取,即切換到線程2。這是在執行線程間的切換,是非常輕量級的。(WIKI:if resources for one process are not available, then another process cancontinue if its resources are available)

9、多線程可能會出現一種現象:假如2核4線程CPU,有兩個進程要被調度,那么只有兩個線程會處于運行狀態,如果這兩個線程是在同一核上,則另一核完全空轉,處于浪費狀態。更期望的結果是每核上都有一個CPU分別調度這兩個進程。

關于CPU上的高速緩存

1、最高速的緩存是CPU的寄存器,它們和CPU的材料相同,最靠近CPU或最接近CPU,訪問它們沒有時延(<1ns)。但容量很小,小于1kb。

32bit:32__32比特=128字節

64bit:64__64比特=512字節

2、寄存器之下,是CPU的高速緩存。分為L1緩存、L2緩存、L3緩存,每層速度按數量級遞減、容量也越來越大。

3、每核心都有一個自己的L1緩存。L1緩存分兩種:L1指令緩存(L1-icache)和L1數據緩存(L1-dcache)。L1指令緩存用來存放已解碼指令,L1數據緩存用來放訪問非常頻繁的數據。

4、L2緩存用來存放近期使用過的內存數據。更嚴格地說,存放的是很可能將來會被CPU使用的數據。

5、多數多核CPU的各核都各自擁有一個L2緩存,但也有多核共享L2緩存的設計。無論如何,L1是各核私有的(但對某核內的多線程是共享的)。

操作系統之CPU知識掃盲

關于馮·諾依曼結構

馮·諾依曼結構(Von Neumannarchitecture)是一種將程序指令存儲器和數據存儲器合并在一起的計算機設計概念結構。馮·諾依曼結構隱約指導了將存儲設備與中央處理器分開?的概念,因此依本結構設計出的計算機又稱存儲程序計算機,這也是目前大多數計算機設計的主要參考原則。

最早的計算機器僅內含固定用途的程序。現代的某些計算機依然維持這樣的設計方式,通常是為了簡化或教育目的。例如一個計算器僅有固定的數學計算程序,它不能拿來當作文字處理軟件,更不能拿來玩游戲。若想要改變此機器的程序,你必須更改線路、更改結構甚至重新設計此機器。當然最早的計算機并沒有設計的那么可編程。當時所謂的“重寫程序”很可能指的是紙筆設計程序步驟,接著制訂工程細節,再施工將機器的電路配線或結構改變。

而存儲程序型計算機的概念改變了這一切。借由創造一組指令集結構,并將所謂的運算轉化成一串程序指令的運行細節,可讓程序運行時自我修改程序的運算內容,讓此機器更有彈性。借著將指令當成一種特別類型的靜態數據,一臺存儲程序型計算機可輕易改變其程序,并在程控下改變其運算內容。馮·諾伊曼結構與存儲程序型計算機是互相通用的名詞。而哈佛結構則是一種將程序數據與普通數據分開存儲的設計概念,但是它并未完全突破馮.諾伊曼架構。

CPU執行原理

CPU的主要運作原理,不論其外觀,都是執行儲存于被稱為程序里的一系列指令。在此討論的是遵循普遍的馮·諾伊曼結構(von Neumannarchitecture)設計的裝置。程序以一系列數字儲存在計算機存儲器中。差不多所有的馮·諾伊曼CPU的運作原理可分為四個階段:提取、解碼、執行和寫回。

(1)提取

從程序內存中檢索指令(為數值或一系列數值)。由程序計數器指定程序存儲器的位置,程序計數器保存供識別目前程序位置的數值。換言之,程序計數器記錄了CPU在目前程序里的蹤跡。提取指令之后,PC根據指令式長度增加存儲器單元[iwordlength]。指令的提取常常必須從相對較慢的存儲器查找,導致CPU等候指令的送入。這個問題主要被論及在現代處理器的緩存和管線化架構。

(2)解碼

CPU根據從存儲器提取到的指令來決定其執行行為。在解碼階段,指令被拆解為有意義的片斷。根據CPU的指令集架構(ISA)定義將數值解譯為指令[isa]。一部分的指令數值為運算碼,其指示要進行哪些運算。其它的數值通常供給指令必要的信息

(3)執行

在提取和解碼階段之后,接著進入執行階段。該階段中,連接到各種能夠進行所需運算的CPU部件。例如,要求一個加法運算,算術邏輯單元將會連接到一組輸入和一組輸出。輸入提供了要相加的數值,而且在輸出將含有總和結果。ALU內含電路系統,以于輸出端完成簡單的普通運算和邏輯運算(比如加法和比特運算)。如果加法運算產生一個對該CPU處理而言過大的結果,在標志寄存器里,溢出標志可能會被設置

(4)寫回

最終階段,寫回,以一定格式將執行階段的結果簡單的寫回。運算結果經常被寫進CPU內部的寄存器,以供隨后指令快速訪問。在其它案例中,運算結果可能寫進速度較慢,如容量較大且較便宜的主存

注意,這上面的4個階段與我們編寫程序是非常相關的,但編程語言里面可能會簡化,并把2和3階段合并,分為:加載,處理,寫回。在多線程編程里面,了解這幾個概念至關重要,由此可以延伸,數據從哪里加載,在哪里執行,最后結果又寫回了哪里。指令數據一般從內存里面加載,但是內存的訪問時間,相比cpu慢了n多倍,所以為了加速處理,cpu一般把指令給加載到離cpu更近的寄存器里面,或者是L1,L2,L3的cache來提速,最終計算出來的結果,還要寫回內存。正是因為cpu執行指令復雜,所以這里面其實牽扯到很多問題,比如多個線程如何協作處理任務,以及如何保證程序數據的原子性,有序性,可見性。而這正是Java的內存模型出現的意義。在其他不同的編程語言里面其實都有在操作系統之上抽象的內存模型來應對不同的cpu架構的的差異,這一點需要注意。

多個單核CPU vs 單個多核CPU

多個單核CPU:

成本更高,因為每個CPU都需要一定的線路電路支持,這樣對主板上布局布線極為不便。并且當運行多線程任務時,多線程間通信協同合作也是一個問題。依賴總線的傳輸,速度較慢,且每一個線程因為運行在不同的CPU上。導致不同線程間各開一個Cache,會造成資源的浪費,同時如果線程間協作就會有冗余數據的產生,更加大了內存的開銷。

單個多核CPU:

可以很好地規避基本上多個單核CPU提到的所有缺點。他不需要考慮硬件上的開銷以及復雜性問題,同時也可以很好地解決多線程間協同工作的問題,減少內存的開銷,因為多線程程序在多核CPU中運行是共用一塊內存區的,數據的傳輸速度比總線來的要快同時不會有冗余數據的產生。單個多核CPU的問題也是顯而易見的,假設倆大程序,每一個程序都好多線程還幾乎用滿cache,它們分時使用CPU,那在程序間切換的時候,光指令和數據的替換就是個問題。

單個多核cpu已經成為個人計算機的主流配置,多個多核的cpu在一些大型的服務器里面也很常見。

超線程

“超線程”(HyperthreadingTechnology)技術就是通過采用特殊的硬件指令,可以把兩個邏輯內核模擬成兩個物理超線程芯片,在單處理器中實現線程級的并行計算,同時在相應的軟硬件的支持下大幅度的提高運行效能,從而使單處理器上模擬雙處理器的效能。其實,從實質上說,超線程是一種可以將CPU內部暫時閑置處理資源充分“調動”起來的技術。

每個單位時間內,CPU只能處理一個線程,以這樣的單位進行,如果想要在單位時間內處理超過一個的線程,是不可能的,除非是有兩個核心處理單元,英特爾的HT技術便是以單個核心處理單元,去整合兩個邏輯處理單元,也就是一個實體核心,兩個邏輯核心,在單位時間內處理兩個線程,模擬雙核心運作。

簡單的說,超線程就是在單個core中,模擬出兩個邏輯處理單元,以此能夠提高程序執行的并發能力,提高系統cpu資源的利用率。

至此,關于CPU的個數,核數,邏輯CPU的個數計算關系如下:

(1)總核數 = 物理CPU個數 __ 每顆物理CPU的核數

(2)總邏輯CPU數 = 物理CPU個數 __ 每顆物理CPU的核數 __ 超線程數

一些概念解釋如下:

舉例,在一個Mac Pro的機器上,可以通過關于本機,系統報告選項中,看到當前系統的基本配置情況,如下:

比如上面的信息中,顯示了當前的系統物理上只擁有一個cpu,但是這個cpu有4個核。然后,我們查詢其邏輯cpu的個數,會發現顯示是8個:(在Mac上打開活動監視器,然后雙擊最下面的中間的cpu負載的地方,就可以看到)

這就是因為每個核又有2個超線程,所以8個邏輯cpu個數=1物理cpu個數 __ 4核 __2個超線程,最終也就是說如果我要編寫一個多線程計算密集型的程序任務,起的線程數可以以邏輯cpu的個數作為參照。當然如果是io密集型的任務,可以開的更多一點。

CPU性能參數

計算機的性能在很大程度上由CPU的性能決定,而CPU的性能主要體現在其運行程序的速度上。影響運行速度的性能指標包括CPU的工作頻率、Cache容量、指令系統和邏輯結構等參數。

大多數情況下,我們主要關注的是CPU的主頻,也稱時鐘頻率,是指同步電路中時鐘的基礎頻率,它以“每秒時鐘周期”(clock cycles persecond)來度量,單位是兆赫(MHz)或千兆赫(GHz)用來表示CPU的運算、處理數據的速度。通常,主頻越高,CPU處理數據的速度就越快。

在上面的mac的參數里面,我們能夠看到在Intel Core i7處理器下,主頻是2.2 GHz,當前主頻高的處理器也在4GHz之內,其主要原因主要在于散熱,提高主頻超過一定范圍后熱密度急速提高,很不經濟,也造成散熱困難。

總結

本文主要介紹了計算機操作系統中CPU有關的知識,計算機的核心就在于CPU,了解CPU相關的知識,可以讓我們更清楚我們的程序底層執行的過程,從而寫出更健壯的代碼及調優相關的程序。

CPU科普知識

CPU歷來都是一個高大上的話題,普通吃瓜群眾除了CPU越貴越好之外,可能就一無所知了。曾經小編對于CPU也是一頭霧水,后來請教了很多大神,又查閱了很多資料,才粗略地搞明白了一點。在此,小編就按照自己的理解,盡量用最通俗的語言去撕開CPU神秘的面紗,讓更多人能夠明白CPU。

CPU的中文翻譯叫中央處理器,好吧,這其實只是一句廢話,不過為了這個牛逼的翻譯,我們也給它一個牛逼的比喻,那我們就把CPU比喻成一個國家的中央機構,接下來我們一一對應打比喻講解。

影響CPU性能的主要因素可以分為兩大塊:主頻和架構。這里看不懂不要緊,接下來聽小編為你一一解釋就懂了。

主頻我們可以理解為中央部門的工作能力,架構可以理解為國家的管理制度,主要用于協調中央機構各部門之間的工作。所以整個中央機構的工作效率(CPU性能)主要就是受到這兩個方面的影響。工作能力越高各部門之間協調越好,整體工作效率自然就越高。反之,任何一方面不夠好,都會對整體工作效率造成明顯的影響。

我們知道市面上最大的PC處理器主要由兩大品牌Intel和AMD壟斷,而大部分時間里,Intel都是壓著AMD打的,原因就是因為AMD的架構不行,雖然主頻對比Intel不落下風甚至稍微領先,但是整體性能卻被Intel徹底壓制了。這就是因為AMD的中央機構各部門協調能力比Intel差多了,所以即使工作能力差不多,但協調不好,所以整體工作性能就比不過了。

說完了性能接下來我們就來說說CPU的結構和工作原理。

CPU的結構主要由運算器、控制器、寄存器三大塊組成。

①運算器就是中央機構里負責執行任務的部門,也就是專門干活的;而控制器就是中央機構的領導小組,針對不同需要,給運算器下達不同的命令;寄存器可以理解為控制器和運算器之間的聯絡小組,主要工作就是協調控制器和運算器。

運算器這個干活的部門,平日里整個中央機構要干點啥事就找這個部門。例如東邊洪災了,你去賑災吧;西邊發現金礦了,你去主導挖礦吧;北邊下大雪了,你去送溫暖吧;南邊下暴雨了,你去疏導洪流吧……

②而控制器這個部門比較牛逼,他們是不用干活的,主要就是對國家(整部計算機)發生的各種情況,做出應對,然后讓運算器去把活干好。在這里,我們會發現一個大問題:如果這個部門閑的蛋疼,亂下命令怎么辦?這也好辦,我們就制定出一套行為規范來限制他們,不讓他們亂搞。而這套行為規范就是CPU的指令集。

指令集就是CPU的行為規范,所有的命令都必須嚴格按照這部行為規范來執行。在這里說明一下不同類型的CPU指令集也不一樣,其中最常見的就是__86架構下的復雜指令集和ARM架構下的簡單指令集。__86就是我們平常電腦CPU的架構,ARM就是手機CPU的架構。

由于電腦CPU這個中央機構所在的國家(電腦)面積大、人口多、國情復雜,啥事都會發生,所以規章制度就需要特別完善,考慮到方方面面的情況要怎么應對。而手機CPU這個中央機構國家小、人口少、面積窄,所以規章制度簡單一點就可以了。這就是復雜指令集和簡單指令集的區別。

③寄存器這個部門稍微復雜一點,因為它雖然沒有運算器和控制器那么重要,但是它P事多,控制器平時總喜歡讓寄存器去給運算器傳達個命令。而運算器有時候也會擔心數據太多一時處理不過來,就讓寄存器幫它先記著,有時候工作需要紙筆、螺絲刀之類的小工具,也讓寄存器幫它拿著。

了解完寄存器的功能后,又發現了一個問題,如果控制部門下達的命令太多,而運算部門又沒那么快可以做完,又或者運算器讓它記住的東西或者臨時拿著的東西太多,寄存器部門太小,人太少,忙不過來怎么辦?好辦,擴招人員吧,可是這個部門的人員都是編制內的,沒有在編名額了怎么辦?也好辦,那就招些編外人員吧,也就是我們常說的臨時工。

招了臨時工,總要給他個名號吧,那就再成立一個部門,叫高速緩存。為了體現親疏有別,這個部門把臨時工分為三個等級,分別是一級高速緩存、二級高速緩存、三級高速緩存。反正也是臨時工,名號就這么隨便叫吧。

在CPU這個中央機構可跟新聞上說的事給臨時工做、鍋給臨時工背不同,在這里高速緩存這個臨時工部門是作為寄存器替補而存在的,也是說,必須在寄存器完成不了工作量時,才能交給高速緩存來做。一開始交給一級高速緩存來做,一級也做不完再給二級,二級還做不完就給三級。這里又有一個問題出現了,那就是如果三級也做不完怎么辦?

這完全沒問題,交給中央機構的一個下屬部門去辦,這個部門就是內存。但是因為內存畢竟不屬于中央機構,工作能力沒有中央機構人員那么強,效率也沒有那么高。

所以控制部門要下達命令或者運算部門要做事時,首先想到的就是寄存器,寄存器忙不過來了就找高速緩存幫忙,高速緩存也忙不過來就找內存幫忙。那么,內存也傳達不過來呢?內存傳達不過來那就沒辦法了,只能讓電腦卡著吧,等運算部門先把上一件事處理好再說。所以,買電腦,不能光看CPU牛不牛,內存容量也要跟上。

還有一個容易被大家忽略的問題,在這里也說一下吧,那就是晶體管。晶體管是構成CPU最基礎的原件,可以理解為整個中央機構的工作人員。隨著科技的進步,CPU生產工藝越來越精細,目前手機端CPU(ARM架構)制程已經提升到7nm,電腦端也達到了14nm。

制程的提升,我們可以理解為,縮減每個辦公人員的辦公面積,以前科技不發達每個辦公人員必須配一個獨立辦公室,才能有效完成工作,現在技術進步了,每個辦公人員只需要一張辦公桌就能完成工作了。所以同樣的一棟大樓,可以容納的辦公人員(晶體管)就多了,工作能力就上升了。

以前一個CPU由于制程落后,只能容納幾千萬或者幾億個晶體管,現在制程進步了,一個同樣體積的CPU可以容納幾十億個晶體管,性能自然就提升了。

那么,為什么晶體管數量增加了,CPU的能耗卻沒有增加呢?我們可以這么理解,每個工作人員都需要吃飽了才有力氣干活,以前的工作人員需要吃九菜一湯才夠力氣,現在改為營養配餐了,每個工作人員只需要吃一片營養藥丸就可以工作了,所以工作人員雖然增加了,但是整體伙食成本(耗電量)并沒有增加。

最后,我們說一下CPU的核心和進程又是什么呢?我們可以這么理解,在單核時代,每個CPU只有一個核心,也就是只有一個中央機構,但是國家那么大,事那么多,中央機構每天加班25個小時都忙不完了。那就沒辦法了,擴充中央機構吧。于是乎雙核、四核、多核CPU就出來了。每一個核心都是一個獨立的中央機構,都具有相同的工作能力。

這么多個中央機構成立了,那聽誰的,有事情交給哪個中央機構去做,要知道它們的權利和功能都是一樣的啊。這時候就要改變CPU架構了,也就是國家的管理制度了。以前國家只有一個中央機構,啥事都交給它去做準沒錯,現在突然變成好幾個中央機構了,怎么辦?

這個時候就需要為每個核心安排去負責不同的事務了,這套中央機構專門負責農業,那套負責工業,剩下的負責稅收、財政等等之類的。

那什么是進程呢,進程其實可以理解為一個中央機構里面的人員組成。有時候事太多了,光這幾個中央機構處理起來還是有點吃力,但是為了節約成本,我們不能再組建新的中央機構了,那就只好折中處理,不另外成立新的中央機構了,就在原有的基礎上,每個中央機構組建兩套完全一致的工作班子吧。

所以,4核CPU就是擁有四個獨立的中央機構,都具備相同的工作能力和權限,但是每個核心都會負責不同的事務。4核8線程就是四個獨立的中央機構,每一個中央機構都擁有兩套完整的工作班子,每套工作班子權限也一樣。

這時候問題又出現了,例如某個中央機構負責的事特別多,忙不過來,而其他的中央機構負責的事很少,閑的發慌,那怎么辦?這時候,我們的架構又出現了,好辦!今天你這個核心負責的事多,就你來主導,讓其他事少的核心輔助你工作。明天另外一個核心負責的事多,就由它來主導,其他核心輔助它工作。

在這里小編想起來一個網上很火的段子:MTK的CPU一核有難九核圍觀。這就是架構落后造成的,它的管理制度不完善,沒辦法調節每個中央機構之間的互相配合,有事情要做,往死里用一個核心,其他九個核心啥事沒有,只好吃瓜圍觀了。

所以,在最后,重申一遍,CPU架構很重要!!

第三篇:CPU基礎知識拓展

CPU 的全稱是 Central Processing Unit,它是你的電腦中最硬核的組件,這種說法一點不為過。CPU是能夠讓你的計算機叫計算機的核心組件,但是它卻不能代表你的電腦,CPU與計算機的關系就相當于大腦和人的關系。下面就讓小編帶你去看看CPU基礎知識拓展,希望能幫助到大家!

程序優化:CPU緩存基礎知識

CPU緩存

CPU緩存(CPUCache)的目的是為了提高訪問內存(RAM)的效率,這雖然已經涉及到硬件的領域,但它仍然與我們息息相關,了解了它的一些原理,能讓我們寫出更高效的程序,另外在多線程程序中,一些不可思議的問題也與緩存有關。

現代多核處理器,一個CPU由多個核組成,每個核又可以有多個硬件線程,比如我們說4核8線程,就是指有4個核,每個核2個線程,這在OS看來就像8個并行處理器一樣。

CPU緩存有多級緩存,比如L1, L2, L3等:

L1容量最小,速度最快,每個核都有L1緩存,L1又專門針對指令和數據分成L1d(數據緩存),L1i(指令緩存)。

L2容量比L1大,速度比L1慢,每個核都有L2緩存。

L3容量最大,速度最慢,多個核共享一個L3緩存。

有些CPU可能還有L4緩存,不過不常見;此外還有其他類型的緩存,比如TLB(translation lookasidebuffer),用于物理地址和虛擬地址轉譯,這不是我們關心的緩存。

下圖展示了緩存和CPU的關系:

Linu__用下面命令可以查看CPU緩存的信息:

$ getconf-a | grep CACHE

LEVEL1_ICACHE_SIZE 32768

LEVEL1_ICACHE_ASSOC 8

LEVEL1_ICACHE_LINESIZE 64

LEVEL1_DCACHE_SIZE 32768

LEVEL1_DCACHE_ASSOC 8

LEVEL1_DCACHE_LINESIZE 64

LEVEL2_CACHE_SIZE 262144

LEVEL2_CACHE_ASSOC 8

LEVEL2_CACHE_LINESIZE 64

LEVEL3_CACHE_SIZE 31457280

LEVEL3_CACHE_ASSOC 20

LEVEL3_CACHE_LINESIZE 64

LEVEL4_CACHE_SIZE 0

LEVEL4_CACHE_ASSOC 0

LEVEL4_CACHE_LINESIZE 0

上面顯示CPU只有3級緩存,L4都為0。

L1的數據緩存和指令緩存分別是32KB;L2為256KB;L3為30MB。

在緩存和主存之間,數據是按固定大小的塊傳輸的 該塊稱為緩存行(cache line),這里顯示每行的大小為64Bytes。

ASSOC表示主存地址映射到緩存的策略,這里L1,L2是8路組相聯,L3是20路組相聯,等一會兒再說是什么意思。

緩存結構

一塊CPU緩存可以看成是一個數組,數組元素是緩存項(cache entry),一個緩存項的內容大概是這樣的:

+-------------------------------------------+

| tag | data block(cache line)| flag |

+-------------------------------------------+

data block就是從內存中拷貝過來的數據,也就是我們說的cache line,從上面信息可知大小是64字節。

tag 保存了內存地址的一部分,是用來驗證是否緩存命中的。

flag 是一些標志位,比如緩存是否失效,寫dirty等等。

實際上LEVEL1_ICACHE_SIZE這個數據,是用data block來算的,并不包括tag和flag占用的大小,比如64 __ 512 =32768,表示LEVEL1_ICACHE_SIZE可以緩存512個cache line。

緩存首先要解決的問題是:怎么映射內存地址和緩存地址?比如CPU要檢查一個內存值是否已經緩存,那么它首先要能算出這個內存地址對應的緩存地址,然后才能檢查。

為了解決這個問題,緩存將內存地址分成下面幾個部分:

+-------------------------------------------+

| tag | inde__ | offset |

+-------------------------------------------+

tag和緩存項中的tag對應,用來驗證是否緩存命中的。

inde__ 緩存項數組中的索引。

offset 緩存塊(cacheline)中的偏移,因為緩存塊是64字節,而內存值可能只有4個字節,一個緩存塊可以保存多個連續的內存值。這個offset實際上就是指明內存值在cacheline中的位置。

直接映射緩存

現在我們舉一個具體的例子,說明內存和緩存是如何映射的:

假如緩存的大小是32768B(32KB),緩存塊大小是64B,那么緩存項數組就有? 32768?/64=512 個。

CPU要訪問一個內存地址0__1CAABBDD?,它首先檢查這個內存地址是否在緩存中,檢查過程是這樣的:

內存地址的二進制形式是(低位在前面):

| tag | inde__ | offset |

0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1

先計算內存在cacheline中的偏移,因為緩存塊是64字節,那么offset需要占6位(2^6=64),即offset=011101=29。

接著要計算緩存項的索引,因為緩存項數組是512個,所以inde__需要占9位(2^9=512),即inde__=011101111=239。

現在我們通過offset和inde__已經找到緩存塊的具體位置了,但是因為內存要遠比緩存大很多,所以多個內存塊是可以映射到同一個位置的,怎么判斷這個緩存塊位置存的就是這個內存的值呢?答案就是tag:內存地址去掉inde__和offset的部分,剩下的就是tag=***01=0__3955。

通過inde__找到緩存項,比較緩存項中的tag是否與內存地址中的tag相同,如果相同表示命中,就直接取緩存塊中的值;如果不同表示未命中,CPU需要將內存值拷貝到緩存(替換掉老的)。

這種映射方式就稱為直接映射(Directmapped),它的缺點就是多個內存地址會映射到同一個緩存地址,拿上面的內存地址來看,只要offset和inde__相同的內存地址,就一定會映射到同一個地方,比如:

***00 011101111 011101

***10 011101111 011101

***11 011101111 011101

如果同時訪問上面3個地址,就會一直替換緩存的值,也就是一直出現緩存沖突,這可能比沒有緩存還要慢,因為除了訪問內存外,還多一個拷貝內存值到緩存的操作。

N路組相聯

為了解決上面的問題,我試著把緩存項數組分成2個數組(2路),比如分成2個256的數組,如下圖所示:

查找過程和上面其實一樣的:

先通過inde__找到數組索引,只不過因為是2路,所以存在2個數組。

然后通過內存tag依次比較2個緩存頂的tag,如果其中一個tag相等,說明這個數組緩存命中;如果兩個都不相等,說明緩存不命中,CPU會拷貝內存值到緩存中,但是現在有2個位置,要拷貝進哪個呢?我的理解CPU應該是隨機選1路拷貝。

offset這個其實無關緊要,因為它是cache line中的偏移。

那這個和直接映射相比,好在哪里呢,因為一個內存值會隨機拷貝到2路中的1個,所以緩存沖突(多個內存地址映射到同一個緩存地址)的概率會降低一半;如果把緩存項數組分成4個數組,這就是4路組相聯。

上面LEVEL1_ICACHE_ASSOC的值等于8,表明是8路組相聯。分組越多,緩存沖突率越低,但是CPU要遍歷的數組就越多,這是一個權衡的問題。

通過觀察也可以發現,其實直接映射就是1路組相聯。如果直接分成512個數組,那每個數組只有1項,這種就是全相聯,CPU直接遍歷512個數組,判斷內存地址在哪1個。

緩存分配策略和更新策略:

當CPU從內存讀數據時,如果該數據沒有在緩存中(cache miss),CPU會把數據拷貝到緩存。

當CPU往內存寫數據時:

如果緩存缺失,CPU會先從內存拷貝數據到緩存,然后再更新緩存的數據。

CPU更新緩存數據,也可能有多個策略:

直接寫(write through):更新緩存的數據,同時更新內存的數據。

寫回(write back):只更新緩存的數據,同時在緩存項設置一個drity標志位,內存的數據只會在某個時刻更新(比如替換cacheline時)。

從上面描述我們知道,當我們向一個內存寫數據時,內存中的數據可能不馬上被更新,這個新數據可能還在cacheline呆著。因為每個核都有自己的緩存,如果CPU不做處理,可以想象一定會出問題的:比如核1改了數據,核2去讀同一個數據,此時數據還在核1的緩存中,核2讀到的就是老的數據。CPU為了處理多核間的緩存同步,那是相當的復雜。

《裝機小知識-CPU篇》

首先給大家講一下,本次內容主要給大家普及一下購機DIY知識,不做深層講述(講了小白也不懂),只求做到簡單化明了化,給您一個明確的DIY購機思路,選擇適合你自己的一臺電腦,而不是3000進吧1萬帶回家用幾年卻只發揮了2000的性能。

CPU最重要的幾個參數,制程,架構,主頻,核心,緩存。以及支持幾代的內存和是否有核心顯卡。支持的內存肯定是越新越好,內存方面的我們在內存一欄詳細講訴

核心顯卡這里簡單先講了,目前intel目前最高級別的核心顯卡UHD630,水平在獨立顯卡GT730的檔次(略高一點)。日常辦公,平面設計,家庭影音,都沒有問題,DNF,夢幻西游,LOL以及各種網頁游戲都能玩。核心顯卡在你使用兩條內存組雙通的情況下性能會有較大提升,所以你想節約預算又只玩小型游戲比如LOL就可以考慮組個雙通內存就可以了,可以做到高特效流暢。具體表現可以 點擊此處 觀看測試視頻(AMD最新一代核顯強于intel核顯)

接下來我們就講CPU最主要的核心參數。

制程:制程越小代表著同一大小芯片上可以做更多晶體管,提高性能降低功耗(功耗越高耗電越多發熱量越大,CPU溫度上升性能壽命會下降,所以功耗很重要),制程越小每個芯片可以有更多的流水線或者是更多的核心。從第六代酷睿開始intel就一直使用14nm制程工藝,包括最新的9代酷睿,也是14nm的,而AMD二代銳龍是12nm制程工藝,另外可能大家也看到過華為麒麟980宣傳的7nm以及臺積電公布的突破5nm量產工藝。為什么intel就一直不更新制程工藝,實際上個人覺得主要有兩個方面。

1:intel是自建生產線,只生產自己家產品,如果換制程那么生產線基本要重建,然而14nm的生產線才剛建沒幾年,實在沒想到芯片制程工藝突破如此迅速。因為臺積電是代工生產芯片,所以他的核心競爭力就是要更高端精密的制程工藝,才有更多廠家找他代工。

2:intel得益于自身架構的優化以及芯片的穩定性,即便是14nm制程的芯片功耗也不高。尤其是用在臺式機上,中低端主流的i3 i5一般散熱器都能壓住,至于高端超頻系列的CPU,好一點的散熱器也沒有問題。在2017年以前intel在PC芯片都是出于壟斷地位,可能覺得自己不需要這么著急突破,擠擠牙膏就算更新迭代了,所以更新制程帶來的低功耗,高性能在當時的intel看來不是那么急切需要提高,殊不知自己的不思進取給了AMD很多的時間來打一個翻身仗。。又或者intel早已開發7nm級別的PC芯片,只是藏大招沒拿出來而已。不過就這次AMD搶走一半市場以后intel的9代處理器還是14nm,還是加核心的手段看起來又不像有大招。哎神仙打架我們關切個什么呢。總之現在,電腦處理器14nm沒有任何問題,不必拿制程說事。

PS:相比PC處理器,手機處理器就需要更小的制程來達到高度集成的效果,降低功耗提升性能,增加續航。所以目前最新制程的處理器都是用在了手機上面。

架構:架構這個屬于研發,很復雜,而且對裝機沒有太多的幫助,因為新的CPU架構都是進一步優化,且產品統一采用的都是新架構,通常都會比原架構更優秀,值得一提的就是intel與AMD雖然都是基于__86指令集研發的架構,但是intel比AMD更穩定的原因主要就在于架構上的優勢(僅限目前,且差距一直在縮小)架構其實是處理器性能非常重要的指標,只是統一性很高,對比又很少所以電腦普通用戶沒有必要深究。

主頻(不是越高越好):主頻是直接表現CPU性能的參數之一,但是以目前的工藝水平,主頻不會有更大突破,上線基本會在4G-5GHz,Intel/AMD兩大CPU廠商均將提升性能的手段放在多核心上。主要還是因為CPU頻率越高,功耗及發熱就會越高,散熱就會是個問題,溫度過高壽命及穩定性和性能都會大打折扣。頻率更能反映單核的性能,目前仍然有很多軟件是只支持單線程工作的,所以對于這類用戶對頻率的選擇比重更大,比如現在銷量很高的I58400主頻只有2.8Ghz,如果讓它工作只支持單線程的軟件,這個時候你會發現,只有1個核心占用,剩下的5個核心占用為0。效果可能還不如i38100的3.6Ghz。

有部分機友對于我這個論斷不滿意,覺得貶低了8400(其實下文也有為8400正名),這里我主要想表達的是頻率與單核的關系,當然我自己也忽略了一個問題就是I38100沒有睿頻,所以部分機友就拿8400的睿頻來說體驗效果是高于8100的,但是兄弟們,你們抓錯方向了。

i5 8400 基礎2.8G 睿頻 1核4G 2核3.9G 3核3.9G 4核3.9G 5核3.8G 6核3.8G

這是理論最高值,條件滿足能夠達到,也的確是比I3 8100強,兩款CPU本來也不是一個檔次的,但是注意用詞,我說的是可能不如I38100,因為睿頻不可控,板載平臺,供電,散熱,CPU體質,實際載荷等等很多都影響著睿頻,也有很多人的8400就是到不了3.8,只有3.2-3.3,你讓他換個主板還是換個電源,而且睿頻需要高負載情況下才有,那非高負載的程序呢?這樣寫的本質是在講述頻率與單核,基礎頻率一樣很重要。請不要忽視。

但是i58400是六核六線程的多核處理器,解決支持多核多線程的軟件即便主頻較低,將處理任務分攤給多個核心來工作,那么單核就不需要那么高的性能也能游刃有余的完成任務。就好比一個人1秒能算10次,2個人每人1秒能算7次,對于支持多線程軟件來說,同樣給你1s我兩個人可以算14次,而你還是只能10次。如果是只支持單線程的軟件的話,來來來,算10次那個人,給你發朵小紅花。

不過雖然8400主頻是2.8GHz但畢竟i5,單核性能也不會很差,i5 8400總性高出i3 810040%左右。往后發展游戲多核將更為普遍,各類大型軟件基本也會往支持多線程開發。購機前請先了解自己常用的軟件是否對單核性能有較高的要求比如PS。如果是小型軟件這些即便只支持單核也可以忽略掉,現在的CPU處理起來都沒有問題。如果你有錢也很任性,選I78700K或者I9 9900K 超到5G大小通吃也是可以的。

關于頻率選擇,常見的以下幾種,普通用戶就看主頻和睿頻即可。

主頻:CPU工作默認頻率。

睿頻:CPU高負載運行下,智能調節頻率高于基礎頻率,達到提高CPU性能的目的(智能可控)

超頻:玩家自己通過主板BIOS設定CPU頻率和電壓高于基礎頻率或者睿頻頻率,達到提高CPU性能的目的(超頻有風險,燒毀無質保,一般超頻到5GHz,好一點的水冷能壓住。極度超頻實用性不大,降溫成本太高,不少廠商展示的時候用的都是液氮降溫,只有部分CPU支持超頻比如intel酷睿尾綴代K和AMD銳龍尾綴帶__的。)

核心/線程(不是越多越好):上面講主頻的時候其實就已經講到核心,總的來說核心要參考單核性能和多核性能,多核雖好,但不一定適合你,還要根據使用需求,平時就上網看電影 用辦公軟件啥的買個I7 8700K也沒什么用,體驗基本和i3 8100一樣。如果你喜歡玩大型游戲或者工作上用PS AE PR分析軟件之類的,多核對你來說就很重要了。核心越多同一時間數據處理能力越強。

超線程:比如8核16線程的I9 9900K相較于8核I7 9700K,前者為擁有超線程技術的CPU。I79700K處理任務時,共8核心,一個核心一條線程,如果任務沒有占滿核心性能,那么這個核心剩余性能就閑置了,如果又來一個任務就只能用第二顆核心或者等任務處理完了再進行下一個任務。I99900K處理任務時,一個核心兩條線程,如果任務沒有占滿核心性能,又來一個任務,那么就會用該核心的剩余性能進行處理,而不是用第二顆核心來處理,達到同時處理更多任務的目的,提高效率。

超線程是利用特殊的硬件指令一核模擬雙核運行,但還是不如雙核來的實際有用,核心數量才是性能標桿,超線程僅提高了CPU核心的使用效率,不能直接提升核心性能,也就是說如果數據計算已經吃滿所有核心那么超不超線程都沒有實際意義。超線程CPU用在僅支持單線程的程序上可能還達不到不帶超線程功能的CPU性能,但性能差距也不會太大。超線程會大幅提高跑分數據(跑分沒什么卵用)。

低端的超線程U比如G4560G5400很好用,效果提升顯著,因為核心少,超線程的話恰好能滿足日常需求,因為現在電腦操作越來越快,同時下達的任務可能會好幾個(比如看直播的同時下載電影然后又在掛游戲,微信,QQ在視頻語音什么的)。以前低端的雙核的CPU現在已經不適用了不能同時處理這么多任務,所以在G4560把超線程用上過后,直接解決了這個問題,性能及體驗直逼i37100價格卻只有其一半,被大家奉為神U。高端的CPU從酷睿八代或者銳龍1代開始核心就已經增多,正常使用情況下6核基本已經足夠了,超不超線程的體驗差距已經不大,高端超線程U比如I78700K9900K在程序游戲多開的情況下效果比較好(這里多開是指同時開幾個大型游戲或者幾十個小型游戲或手游掛機這種),或者數據建模,大型工程分析關鍵,視頻渲染也是比較占優勢的。

目前大多主流游戲做的都是雙核或者四核處理,新一點的游戲有的做到六核處理,如果你買電腦玩游戲,追求八核十六線程也沒有用,僅有部分核心能用到。游戲體驗和i5沒有差別(多開除外)。

緩存(越大越好):緩存是一個很重要的參考指標,緩存分一級緩存 二級緩存三級緩存,都集成在CPU上,容量都是越大越好,一級緩存級別最高,容量相比最小。CPU緩存相當重要,與CPU同頻運行,遠高于內存頻率,CPU讀取數據時一級二級三級依次讀取,待三級緩存都沒有的數據才從內存中調取,每級緩存命中概率都在80%左右,所以要從內存調用的數據其實是很少的,由于緩存速度遠高于內存,所以緩存越大越能在使用過程中存放更多的數據,降低CPU調用數據的時間,提高執行效率,直接反應在使用體驗上就是速度快。比如很多朋友升級CPU過后明顯覺得速度快了很多,用在單核小程序上也是,以為是處理器性能增加的原因,其實還有很重要的原因是緩存增加了的原因。三級緩存對游戲體驗效果比較明顯。

這里推薦一下適用于各種需求的CPU

辦公 上網 炒股 影音 家用 2D游戲 頁游 回合游戲

建議1000-1500預算:G4560G5400的核顯機就已經足夠使用了,單條內存4G,配個固態提高效率。如果加獨顯最高加到1050TI這樣級別的顯卡,玩LOL DOAT 吃雞中檔特效及各類大型游戲也沒有問題。詳細看此測評,視頻只看CPU占用,測評的是1030和1050,并非1050TI,只是給大家看一下G4560這樣的CPU玩吃雞占用也沒有占滿

如往上升可以加到2000-3000元預算:I3 8100 I5 84008500酷睿的核顯主機在組雙通的內存的情況下可以做到高特效流暢玩LOL。因CPU的性能大幅閑余所以后期升級可以直接加一個高端獨立顯卡I3+1060,而I5最高建議加到2070,就能玩更高級的游戲開高特效甚至滿特效。(如果確定后期要升獨顯,建議再組核顯機的時候就把電源配高一點。)

主玩各類網游及各類單機游戲

建議3000-6000預算:I3 8100 I5 8400 8500 R5 2600(考慮價格,排名為推薦先后),獨顯選1050TI或10606G或同級別A卡。如果對大型游戲特效畫質要求較高,顯卡可以升到1070TI 或者2070 或者更高,預算在6000以上。

PS AE PR AI或者工程分析軟件,建模等需要大量數據運算的工作需求

建議6000-8000預算:R5 2600__ I5 8600K I5 9600K I5 8500 I79700K(考慮價格,排名為推薦先后),如若對游戲需求不大頂多配個1050TI,充一下4G顯存,內存16G起,提高你的工作效率。該級別處理器也可用于普通直播及LOL直播。預算充足可往上升R7 2700__ I78700K I9 9900K等。

如主要工作是做視頻,廣告,影視,需頻繁長時間渲染高質量長視頻,大型模型應力分析軟件,大型網游及單機游戲直播。

建議1W-1.5W預算 R7 2700__ I7 8700K I7 8700 I9 9900K(考慮價格,排名為推薦先后)。

若預算充足還可以2W以上預算 升AMD Ryzen ThreadRipper系列或者intel 酷睿I9__系列甚至雙路,因為分析軟件的計算需求是沒有上線的。

以上為本人收集知識編寫推薦,若有不嚴謹的地方還請各位多多包涵并提出改正。感謝各位觀看,有不一樣想法的朋友也歡迎留言提出,文明交流。

電腦硬件入門——基礎之CPU架構解讀1、9900K整體架構

還是先看圖[1]:

9900K整體架構圖

9900K大概可以分為5個部分:

CPU核心:圖中紅框部分為一個核心,9900K一共有8個核心。早期的CPU其實就只有這么一個東西,但現在的CPU逐步發展,把一些周邊的部件也集成在同一塊半導體晶片上,因此傳統的CPU就變成了現代CPU上的核心。此外,為了提高CPU的計算能力,單塊CPU中的核心數量越來越多,就消費級市場來說,從2005第一款雙核心CPU奔騰D發布到今天的單塊CPU晶片有8個核心的i9-9900K。

三級緩存(Level 3 Cache,簡寫為L3、L3$、L3C、L3Cache):圖中中間8個粉色塊組成的三級緩存,用于臨時存放內存中的一小部分數據。這里分成8小塊,對應8個CPU核心。有時候L3也叫末級緩存(LastLevelCache,LLC),當然,對9900K這樣具有三級緩存的CPU,L3才等同于LLC。有的老式CPU有的只有二級緩存,LLC就是L2;某些服務器使用的CPU有四級緩存,LLC則是指L4。

核心顯卡:圖中左邊紫框部分,這個以后的文章中我們再介紹。

系統代理:圖中右邊綠色部分,這是負責連接CPU與其它部件的多個模塊的集合。從上到下分別是:

顯示控制器:負責核心顯卡輸出;

PCI-e控制器:負責CPU與外部IO設備連接,以后的文章我們會另外介紹;

eDRAM控制器:這個其實9900K是沒有的,某些定制型號會集成有特殊的內存,稱為嵌入式動態隨機訪問存儲(Embedded DynamicRandom-Access Memory, eDRAM)。一般來說eDRAM是作為核心顯卡的專用顯存使用,這個控制器就是負責從eDRAM讀寫數據的。

內存控制器:負責CPU與內存連接,從內存中讀寫數據。

環形總線(RingBus):把上面這些模塊連接起來的,上圖中標記著Ring的藍色圈。

2、核心架構圖

這張圖看起來很復雜是不是?不用擔心,我們一個一個說。當然,我們這是入門知識,不會介紹的太細。

我們上一篇文章提到,現代CPU都是改進型哈弗架構;并且舉了一個會計做財務報告的例子。這里我們繼續使用這個例子來介紹。但之前,我們稍微改一下做財務報告的方式,不是一個人全部做完,我們是一個團隊。有的同事根據制作指南列計算步驟,有的同事根據計算步驟在小紙條上列公式,有的同事負責從賬本上把數據抄到寫好公式的小紙條上,有的同事對著小紙條用計算器算數并且算完了寫回小紙條上,有的同事把小紙條上的數抄到最終的財務報表上。CPU里面,小紙條有一個專門的名稱,叫寄存器(Register)。

2.1 緩存子系統(Memory Subsystem)

一家規模比較大點的企業,完整的賬本很厚。我們做整年的財務報告,通常只需要每個科目的匯總數就可以了,為了方便,我們把每個科目匯總的那幾頁復印出來放在一起。

完整的財務報告制作指南也很厚,但一個企業可能只有其中很少一部業務。例如一家軟件公司,就不涉及原材料進貨、倉庫存儲之類的業務;很多公司也沒有貸款、投資之類的業務。所以我們也只把跟公司有相關業務的部分復印出來。

同樣的,內存中的數據很多,CPU只需要把計算用到的指令、數據放到緩存中——也就是圖中的紫色塊的緩存子系統。

2.2 前端(Front End)

CPU的前端其實就是我們上篇文章中的控制單元,負責對指令進行預處理。指令預處理大體上分為取指、預解碼、融合、解碼、分支預測、重排等操作。

取指(Fetch)

我們制作財務報表,第一步就是把制作指南拿出來。CPU也一樣,先把指令載入進來。

預解碼(PreDecode)

制作指南是一整頁的,我們要分解出第一步算哪個數據,第二步又是算哪個數據,在小紙條上把公式列出來,一張小紙條一個公式。CPU也一樣,要把程序中一整批的指令數據,拆分出來第一條是什么指令,第二條是什么指令;可能還需要對指令進行分類標志。預解碼后的指令放在指令隊列(InstructionQueue)里面。

解碼(Decode),又稱為譯碼

小紙條上的公式寫著:利潤=收入-支出,查帳本的同事就需要先把收入和支出數據從賬本中找出來,抄到小紙條上。同樣的,CPU碰到類似把內存中兩個數加起來這樣的指令,需要分解成:

從內存載入第一個數字;

從內存載入第二個數字;

兩個數字相加

這樣三個指令。一般來說,我們把原始的指令稱為宏操作(Macro-Operations),分解后的指令稱為微操作(Micro-Operations,μops)。

指令融合(Micro-Fusion/Macro-Fusion)

假設指南中有一個數據是算平均數的,某個按計算器的同事手上整好有一個可以直接算平均數的統計用計算器。那么,當我們在指南中看到一條類似

這樣的公式的時候,我們可以直接列算這幾個數的平均數公式,注明給這位同事算。CPU也一樣,某些指令是可以融合起來執行的,例如:

比較A和B的大小;

如果A不等于B,跳轉到標志__的指令。

可以用一條指令JNEA,B,__來代替,這樣的處理稱之為指令融合。指令解碼前的宏操作融合,稱為Macro-Fusion,解碼后的微操作融合,稱為Micro-Fusion。

分支預測(Branch Prediction)

理論上,制作指南中列出的所有步驟,我們都要完成上面的這些處理。但假設制作指南中說,盈利的話要算某幾個數據,虧損的話這幾個數不用算,要另外算其它幾個數據。當我們計算過第一季度的數據知道企業第一季度是盈利的,我們算第二季度的數據時,想偷懶就直接跳過虧損要算的那幾個數據的處理了。CPU處理指令也是一樣的,負責預測的模塊叫分支預測器(BranchPredictor)

當然,如果算下來我們發現第二季度虧損了,還是要重新處理指南上的這些計算步驟。CPU也一樣。

指令重排,或者叫亂序執行(Out-Of-Order,OOO),或者動態執行(Dynamic E__ecution)

事實上,我們不一定要完全按照指南上的步驟第一步算什么,第二步算什么這樣算。只要公式列出來,數據抄出來了,就可以直接交給按計算器的同事去算。所以可能第一步要用的數據不太好找,按計算器的同事就先把第二步算出來了。

當然,這里有一個前提,就是算第二步的時候,不需要用到第一步的計算結果。

2.3 執行單元(E__ecution Engine)

執行單元也就是上一篇文章提到的運算單元了。也就是我們這個團隊里抄數據、按計算器的各位同事了。其中,按計算器的同事中,有的用的計算器簡單點,只能做四則計算,還只能算整數;有的用高級點的計算器,可以算小數;有的用統計專用的計算器;有的用更高級的可以算很多函數的計算器。當然,有這么多不同的計算器,什么樣的小紙條給哪位同事用,我們也需要有一個人來做分配小紙條這件事情。

數據存取單元(Load Data/Store Data)

CPU里面也一樣,有負責從緩存子系統中載入數據的Load Data單元;有把計算結果寫回去緩存子系統的Store Data單元。

計算單元

CPU里面負責具體計算的,根據計算類型、計算的數據不同,有多種計算單元:

整數算術邏輯單元(Integer Arithmetic Logic Unit,IntALU),算整數加減法/二進制運算;需要說明一下的,電腦里面很多小數計算也是通過移位操作處理后,用整數單元計算后再數小數位這樣的方式來處理的。

整數乘法器(Integer Multiplier,Int MUL),專門負責整數乘法的;

整數除法器(Integer Divider,Int DIV),專門負責整數除法的;

分支處理(Branch),負責各種跳轉指令的;

地址生成器(Address GenerationUnit,AGU),這個稍微解釋一下,例如制作指南中說,總收入要和上一的總收入對比算增長率,那么就需要翻譯成“現在做2018年的年報,上一就是2017總收入”。CPU也是一樣,有的指令是把內存地址A1的數和A1后面第五個地址的數相加,那么要先算出來A1后面五個地址A2到底是哪個地址。

整數向量ALU(Int Vect ALU),向量是指類似空間坐標+值(__,y,z,value)這樣的一組數據,其中__、y、z和value都是整數。類似整數,除了算加減法/二進制的整數向量ALU,還有整數向量乘法器、除法器(Int VectMUL,Int Vect DIV)。

浮點向量加乘融合單元(Fused multiply–add,FP FMA),這個也要解釋一下。我們知道,105可以寫成這樣的形式,這種形式在計算機中稱為浮點數。上面提到向量中,如果(__,y,z,value)中的一個或者多個都是浮點,就是浮點向量。而加乘融合,是指

這樣的計算,當然,可以算加乘融合的,自然也可以用來算加減法和乘法:A=0就是乘法,C=1就是加減法。

浮點除法單元(FP DIV):算浮點除法的,也可以算一些常用函數例如開方、對數等。

其它:例如加密用的AES,字符串處理的Vect String,位查找的bit Scan(對一個二進制數據按照多種方法數0)

調度器(Scheduler)

有這么多不同的計算單元,CPU需要一個把不同的計算指令分配給對應計算單元的調度器。

不過呢,我們這個財務部比較特殊,分了幾個小辦公室,某幾個同事在一個辦公室里面,另外幾個同事又在另一個辦公室里面,而每次我們只能傳一張小紙條到一個辦公室。

在9900K里面,從圖中可以看到,不同的計算單元在不同的端口(Port)下,就是類似的情況。

寄存器文件(Register File)

計算財務數據的時候,很多數據的計算是需要多步計算的,具體到每一步的計算,可能要分給不同的同事來算。如果每一步列一張小紙條,等某位同事算完第一個數,再抄到第二張小紙條給另外一位同事,這顯然很慢很麻煩——直接列在一張小紙條上就好了嘛。

另外,我們有這么多同事,分配小紙條的同事每次傳小紙條可以一次分配好多張——當然,前提是分給不同的同事。

因為可能一張紙條要算好幾次,又有這么多紙條傳來傳去,因此為了不出錯,我們需要標明這張小紙條給誰算,算完了,負責分配小紙條的同事根據下一步要算的,把標注的名字改一下給另外一位同事去算。

CPU中的寄存器也一樣,一個數據可能需要不同的計算單元多次處理,又有那么多的計算單元分成了好幾組。所以我們需要多個寄存器,這些寄存器的組合稱之為寄存器文件。每個計算單元只能處理特定名稱的寄存器里面的數據,因此調度器經常需要對寄存器進行分配、重命名、退出等操作

第四篇:CPU講稿

CPU是Central Processing Unit(中央微處理器)的縮寫,由運算器和控制器兩部分組成,按照其處理信息的字長,CPU可以分為:4位微處理器、8位微處理器、16位微處理器、32位微處理器以及正在走紅的64位微處理器。

一、CPU發展的孕育期(1971~1978)

代表CPU:intel 4004、8008 世界上第一款可用于微型計算機的4位處理器,是英特爾公司于1971年推出的包含了2300個晶體管的4004。由于性能很差,市場反應十分冷淡。于是Intel公司隨后又研制出了8080處理器、8085處理器,加上當時Motorola公司的MC6800微處理器和Zilog公司的Z80微處理器,一起組成了8位微處理器的家族。

二、CPU發展的搖籃期(1978~1979)

代表CPU:intel 8086、8088 這期間的代表是英特爾公司1978年推出的這款8086處理器,它是第一塊16位微處理器,最高主頻為8MHz,內存尋址能力為1MB。同時英特爾還生產出與之相配合的數學協處理器8087,這兩種芯片使用相互兼容的指令集,但i8087指令集中增加了一些專門用于對數、指數和三角函數等數學計算的指令,人們將這些指令集統一稱之為 x86指令集。雖然以后英特爾又陸續生產出第二代、第三代等更先進和更快的新型CPU,但都仍然兼容原來的x86指令。從這點上來說,雖然用今天的眼光看來,8086的性能是那么的不堪,但是它的誕生卻奠定了以后CPU發展的基礎。

1979年,英特爾公司再接再厲,又開發出了8088。8088集成了約29000個晶體管,采用40針的DIP封裝,最高頻率為8MHz。也正是從8088開始,PC(個人電腦)的概念開始在全世界范圍內發展起來,因為1981年IBM公司將8088芯片首先用于其研制的PC機中,標志著PC真正走進了人們的工作生活之中。

三、CPU發展的嬰幼期(1979~1985)

代表CPU:Intel 80286 1982年,英特爾公司在8086的基礎上,研制出了80286微處理器,它 是一顆真正為PC而存在的CPU,IBM公司將80286微處理器首先用在AT機中,引起了業界了極大的轟動。80286 采用PGA封裝,集成了大約130000個晶體管,最大主頻為20MHz,內、外部數據傳輸均為16位,使用24位內存儲器的尋址,內存尋址能力為16MB,可使用的工作方式包括實模式和保護模式兩種。在這之前,INTEL也發布過80186 CPU,這是一顆性能介于8088,80286之間的的CPU,但因為某種原因,80186從來都沒有在PC中應用過。

四、CPU發展的幼兒期(1985~1993)

代表CPU:intel 80386、80486 1985年10月,intel推出了386DX,其內部包含27.5萬個晶體管,最高頻率為40MHz,內部和外部數據總線是32位,地址總線為32位,可以尋址4GB內存,管理64TB的虛擬存儲空間,并且有比80286更多的指令。而且在386時代,英特爾為了解決內存的速度瓶頸,采取了用預讀內存的方法來緩解,并為386設計了高速緩存(Cache)這一方案。intel的這一設想無疑是偉大的,不僅一直沿用至今,而且還發揮著越來越重要的作用。

在intel發布386的時候,同時也有其他的幾家CPU制造商也推出了類似的產品,性能也不錯,比如Motorola 68000、AMD Am386SX/DX和IBM 386SLC。

1989年,英特爾乘勝追擊推出486芯片,該芯片集成了120萬個晶體管,使用1微米的制造工藝,頻率從25MHz逐步提高到50MHz。在當時,486所采用的技術是最先進的,采用了突發總線方式,大大提高了與內存的數據交換速度。性能比80386 DX提高了近4倍。

在intel推出486的同時,其他幾家CPU制造商也不甘寂寞,也都發布了自己的同性能CPU,其中以TI 486 DX、Cyrix 486DLC和AMD 5x86為代表。

五、CPU發展的兒童期(1993~1999)

代表CPU:Intel Pentium/Pentium2/Celeron、AMD K5/K6 1993年,intel的Pentium(奔騰)CPU面世,這一全面超越486的性能優良的產品為intel贏得了巨大的聲譽,Intel?inside 深入人心,同時也把其他競爭對手甩在了后面,一舉奠定了市場的霸主的地位。早期奔騰75MHz~120MHz使用0.5微米制造工藝,后期120MHz以上的奔騰則改用0.35微米工藝。

97年~98年,這兩年對于CPU業界來說,絕對是一個不平凡的一年,也是一個極其混亂的兩年,這不僅是因為在這兩年里,各大CPU廠商都拿出了自己的看家法寶,也是因為在這兩年里,不少CPU制造商因產品性能問題被兼并或倒閉。

97年初intel為了提高電腦在多媒體、3D圖形方面的應用能力,發布了Pentium MMX(多能奔騰),同時許多新指令集也應運而生,其中最著名的就是intel的MMX(MultiMedia Extensions,多媒體擴展指令集)、SSE和AMD的3D NOW!。這些指令可以一次處理多個數據,在軟件的配合下,可以得到最佳的性能。

97年中Pentium II和AMD K6上市,年末Cyrix 6x86MX面市。AMD是一個生命力異常頑強的公司,在與intel的競爭中,一直是屢敗屢戰,精神可嘉。在Pentium呼風喚雨的年代,AMD在1996年發布了自己第一塊獨立生產的x86級CPU——K5,但性能一般。永不服輸的AMD在1997年又卷土重來,推出了擁有全新的MMX指令,整體性能要優于奔騰MMX,接近同主頻PⅡ的水平K6。

到了98年,經過一年混戰,CPU市場正式開始洗牌。Intel的Pentium 2發布,它采用0.25微米工藝制造,最高頻率為400MHZ。但是因為轉用了Slot 1架構,所以很多消費者并買帳。AMD的K6-2乘機而入,憑借低廉的價格一度占得近30%的市場份額,這也給AMD一個喘息的機會。所以到了99年,面對Intel的猛烈反撲,AMD沒有步Cyrix的后塵,落得被收購的下場。

而在低端市場,英特爾為進一步搶占市場份額,于98年4月推出了最高頻率為300MHz的Celeron(賽揚),但因為沒有二級緩存,該微處理器性能甚為低下,于是intel緊接著又發布了內建32KB L1 Cache、128KB L2 Cache的Celeron300A、333、366,在市場中挽回了一點顏面。

六、CPU發展的少年期(1999~2001)

代表CPU:Intel Pentium3、AMD Athlon 99年伊始,intel就忙不迭的發布了采用Katmai核心的Pentium3 CPU,該CPU的系統總線頻率為100MHz,起始主頻為450MHz,一級緩存為32KB(16KB指令緩存加16KB數據緩存),二級緩存大小為512KB,0.25微米工藝制造,內部集成950萬個晶體管,采用Slot 1架構。

反觀AMD方面,為了抵抗來勢洶洶的P3,AMD于99年6月推出了具有重大意義的K7微處理器,并將其正式命名為Athlon。K7也不負眾望,在時鐘頻率上率先進入到了G時代,并給intel的處理器在市場上帶來了很大的壓力,自此,CPU市場真正步入intel、AMD兩強爭霸的時代。

七、CPU發展的青年期(2000~2003)

代表CPU:intel Pentium4/Celeron4、AMD Athlon xp/Duron 面對市場的壓力,intel于2000年發布了Pentium4處理器。但接下來的一切都不是很順利,光是接口就改了2次。第一次是因為剛開始的423接口的Willamette 核心 P4 所搭配的 RDRAM(i850芯片組)價格太高,市場反應冷淡,于是又改成NORTHWOOD核心的478接口P4。再后來為了提升頻率,intel又將核心改換為 Prescott 核心,接口也換為LGA775,雖然經過這么一折騰,頻率是上去了,最高的達到了4G,但是發熱量也高的驚人,而且如此頻繁的改換接口,也令消費者不厭其煩。

在低端市場,intel則一律把CPU的二級緩存消減3/4,從512K到128K(后期的 Prescott 核心賽揚為256K),使性能大大削弱了。

而AMD公司則在2000年6月份推出了Athlon xp處理器,再次向英特爾發出了挑戰,并在DIY市場取得重大成功,可以這么說,在進入到Pentium4時代以來,在AMD的緊逼下,intel感到了前所未有的危機,這也為AMD后來的K8處理器打下了一個堅實的基礎。

早期的Palomino核心Athlon XP為0.18微米制造工藝,發熱量較大。但在AMD采用了新的Thoroughbred核心后,發熱量問題得到了很好的控制。而兩者除了在發熱量及DIE尺寸上有所不同外,外形幾乎一樣,都是462針的接口、128K的一級緩存和256K的二級緩存和3750萬的晶體管數。

八、CPU發展的壯年期(2003~至今)

代表CPU:AMD Athlon 64

第五篇:CPU學習心得

CPU學習感想

今天終于測試成功了!

清楚得記得,3周前自己把所有線路都接好時的興奮和小小的成就感。可是,我并沒有在第一次測試時就成功,甚至當第一次接上電源時,連可愛的保護電路都是“罷工”狀態,當時背上就出汗了,驚愕啊!記得當時自己還有點不耐煩,因為那斷時間做事情都很不順利,還遇到好多不開心的事情,現在面前又擺了個不work的CPU電路板,郁悶不說,還產生了放棄的念頭。。在這里真的要感想小孟學長,若不是他的耐心指導和幫助,讓我看到一點希望,我想我也許就放棄了吧。

說實話,從去聽課介紹CPU,到自己上網查各類資料,再到和老師溝通,再到開始動手插面包板,到最后的測試找Bug并且Debug,這一過程中,我學到的不僅僅只是關于CPU的知識,還有耐心、細心、謙虛。

我本身對電腦知識了解的很少,剛去聽課時,對什么CPU的基本知識都一無所知,像ALU,CAD等等,也找不到頭緒,不知道從哪下手,感覺自己不知道得實在太多。我開始和老師頻繁得通e-mail,詢問老師各種看來都很低級的問題,金老師有個特點,他不會直接告訴你答案,而是要你自己去思考和尋找答案——這也是我在學習CPU時最大的收獲,并且已經感覺到它的重要性。老師會給我指一個方向,給我一點提示,接下來都要靠自己去思考自己動手。我開始對CPU有了大致的了解和概念,也對自己制作這樣一個電路板有了一些信心。

在開始動手后,有一個讓我印象格外深——輸入A由register file出來后要與check做AND再輸入IC7483,可是,平時做的AND,2個輸入都是1bit,現在一個輸入A(4bit)另一個輸入check(1bit),這要怎么做呢?看著IC7408,恍然發現,可以讓A的4個bit分別與check做AND,然后再依序輸出,就能得到4bit的A與1bit的check做AND的結果了!當時很開心,一路接下去也很順利。沿途還注意到IC7483是做加法器用,所以Co要接地;總共有2個clock,IC74195 和IC74157,并且每種有2顆,當時我就想到,可以只做一個clock電路,讓IC74157的clock位接到Q,IC74195的enable位接Q’,因為當74157的選擇位是0時,會選擇輸出B的資料,第一次就把B寫進去了,摁下clock后就會將A寫進去,這樣就能完成接下來的A*B的工作;同時,我還想,接一個保護電路的話,保護力度會不夠,所以在第二塊板上也加了一個保護電路;感覺自己做的最明智得就是將重要的輸入輸出都拉出來,經過LED顯示,并在板子周邊貼上小紙條做標記,心想,這樣出來的效果會更明顯些。在接近尾聲時,發現自己的材料不夠,甚至IC還有拿錯的,我2次跑去實驗室找學長拿材料,那時候心情也很好,覺得自己在做一件很偉大的事情一樣。

測試時經歷時間最長的,在第三次時終于成功了。也許是在宿舍放太久了吧,第一次接上電源,保護電路的LED都不亮,自信心一下子就澆滅了一半。學長建議換個LED試試,這才看到一絲光亮。第一次測試,經過換LED、換IC、重接clock電路,讓保護電路和clock電路正常work了。第二次測試,我和學長從9點一直Debug到12點半,各種稀奇古怪的情況和小錯誤,類似LED壞了,IC壞了,有線沒插好,線插錯位置了,DIPI開關接錯等等,一點一點找問題,然后再解決。我們順利讓74157和register file工作了。我還確定了,剩下的問題來自于7483,導致74195無法正常work。這真的很鍛煉耐性和細心。我記得那次從實驗室里走出來,腿都軟了。第三次測試,只花了半小時。學長和我一開始怎么都找不到7483那塊問題所在,我們甚至還把所有DIPI開關和排阻來控制輸入的電路換了另一種接法(其中,我知道LED不亮并不代表off,只有它真正接地才是off狀態),試圖想“喚醒”7383.,可是7483 很不給“面子”,其他都正常,就它在“罷工”,最后沒轍,決定換顆IC試試。不能怕麻煩,真的,即使那顆IC被很多線纏繞,也要耐性把它從里面“解救”出來并且把好的在放到正確的位置。當新的7483按上的那一瞬間,期望的LED都亮了!開心得不得了!那種喜悅,真的只有真正經歷的人才能體會哈!

感謝一路幫我的小孟學長。

感謝最最最好的金老師,教會我好多,學習上的,做人做事上的,讓我受益匪淺!

下載CPU基礎知識詳解[共五篇]word格式文檔
下載CPU基礎知識詳解[共五篇].doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    CPU介紹

    通的處理器定名規則都是msm,即mobile station modem,是包含基帶的處理器,另外還要apq——application processor qualcomn,沒有基帶的處理器,還有mpq——media processor qualcom......

    CPU名詞解釋

    英特爾? 定向 I/O 虛擬化技術(VT-d) 英特爾? 定向 I/O 虛擬化技術 (VT-d) 在現有對 IA-32(VT-x)和安騰? 處理器 (VT-i) 虛擬化支持的基礎上,還新增了對 I/O 設備虛擬化的支持......

    計算機Cpu介紹

    計算機Cpu介紹 從計算機組成的觀點來看,計算機中最重要的核心部件是Cpu(中央處理單元),以不同的Cpu類型劃分計算機是否可行呢?生產Cpu的廠商非常多,不同Cpu廠商之間的產品逐步分化......

    cpu計算除法

    演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 cpu計算除法 CPU如何來計算除法 一 問題:計算機如何來計算除法的?第一步:分析除法現在做一個簡單的除法 56/7,大......

    cpu的生產工藝

    我們常可以在CPU性能列表上看到“工藝技術”一項,其中有“0.35μm”或“0.25μm”等,這些同樣是為了說明CPU技術先進程度。一般來說“工藝技術”中的數據越小表明CPU生產技術......

    CPU散熱器問卷調查

    問卷調查 本問卷調查只用于課題研究,感謝您的參與! 1、 您是什么職業? A、學生B、上班族C、老板D、自由職業 2、您是否已有電腦? A、 暫時沒有 B、 已有(臺式筆記本平板電腦) C、......

    Intel CPU發展史載

    IntelCPU開展史載但凡隨著時間推移成為歷史的東西,都能被載入史冊,而這恰巧就是收藏最為吸引人的地方。在我們周圍生活著的人們,也許有不同的奇奇怪怪的收藏癖好,比方筆者就酷愛......

    CPU及安裝說課稿

    說課稿 尊敬的各位專家評委、老師: 大家好! 我今天的說課內容是《“計算機組裝與維護”之中央處理器(CPU)及安裝》,下面我將從教材分析與處理、教學對象、教學目標、教學重點與難......

主站蜘蛛池模板: 亚洲av无码一区二区三区观看| 日韩亚洲av无码一区二区三区| 老司机午夜永久免费影院| 极品少妇xxxx| 性猛交ⅹxxx富婆视频| 人妻换人妻仑乱| 国产剧情麻豆女教师在线观看| 国产va免费精品高清在线30页| 永久免费的av在线电影网| 久久精品国产自清天天线| 亚洲无码在线播放| 国产精品久久久久久久久电影网| 国产玖玖玖九九精品视频靠爱| 在线播放无码后入内射少妇| 色噜噜狠狠色综合成人网| 伊人狠狠色丁香婷婷综合| 亚洲成a人片在线观看无码专区| 亚洲av中文无码乱人伦在线咪咕| 国产成人一区二区无码不卡在线| 欧洲免费一区二区三区视频| 久久99精品久久久久久清纯| 全黄性性激高免费视频| 黑人与人妻无码中字视频| 一本久久a久久精品亚洲| 台湾无码av一区二区三区| 亚洲国产成人精品福利| 人妻 色综合网站| 国产精品久久久久久久久久直播| 无码人妻精品一区二区三区66| 亚洲人成在线影院| 亚洲国产欧美在线看片一国产| 精品9e精品视频在线观看| 国模丽丽啪啪一区二区| 337p日本欧洲亚洲大胆精品555588| 又粗又黑又大的吊av| 久久久久噜噜噜亚洲熟女综合| 国产精品一久久香蕉国产线看观看| 人妻熟女一区二区aⅴ图片| 北条麻妃一区二区三区av高清| 久久精品女人天堂av免费观看| 国产综合久久久久久鬼色|