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架構很重要!!!