1 多 CPU
多CPU(multi-processor)指的是在計(jì)算機(jī)主板上有多個(gè)物理CPU,每一個(gè)物理CPU之間通過(guò)系統(tǒng)總線連接。
Architectual State: 包括通用數(shù)據(jù)寄存器、段寄存器、控制寄存器等。
Execution Engine: 執(zhí)行引擎,用來(lái)執(zhí)行CPU指令,包括算數(shù)邏輯單元ALU等。
Local APIC: APIC全稱是Advanced Programmable Interrupt Controller,翻譯過(guò)來(lái)就是高級(jí)可編程中斷控制器,用來(lái)處理CPU中斷。
2 多核 CPU
多核(multi-core processor)指的是在一個(gè)物理CPU內(nèi)部,封裝了多個(gè)物理核心。這些物理核心可能位于同一個(gè)Die上,也可能位于多個(gè)Die上。
關(guān)于Die可以參看 《一文搞懂晶圓 Die CPU 之間的關(guān)系》。
無(wú)論使用哪種方式,多核CPU的架構(gòu)可以表示為下圖:
從上圖可以看到,每一個(gè)物理核心都有自己的Architectual State、Execution Engine、Local APIC。因此,每一個(gè)物理核心都可以看成是一個(gè)邏輯 CPU。
從并行性(Parallel)的角度看,多CPU和多核CPU都可以在同一時(shí)間,同時(shí)執(zhí)行多條指令流。
那既然這樣,為什么還要研究出多核CPU呢?
如果單從性能角度看,多核CPU內(nèi)部物理核心之間通過(guò)片內(nèi)總線通信,速度會(huì)快于系統(tǒng)總線。換句話說(shuō),多核 CPU 的性能要高于多 CPU。
有了多核CPU,那么要構(gòu)造處擁有4個(gè)邏輯CPU的系統(tǒng),那么就有2種方案:
第1種就是使用2個(gè)物理CPU,每個(gè)物理CPU內(nèi)部包含2個(gè)物理核心。
第2中就是使用1個(gè)物理CPU,這個(gè)物理CPU內(nèi)部包含4個(gè)物理核心。
3 超線程技術(shù)
超線程技術(shù)(Hyper-Threading Technology)簡(jiǎn)稱HT或者HTT,它作用于物理CPU內(nèi)部的物理核心上。
為了實(shí)現(xiàn)超線程技術(shù),一個(gè)物理核心內(nèi)部,會(huì)同時(shí)包含2份Architectual State、Local APIC,但是只有1份Execution Engine。
在運(yùn)行的時(shí)候,會(huì)同時(shí)有2條不同的CPU指令流送入物理核心:
因此,一個(gè)物理核心內(nèi)部,就好像有了2個(gè)邏輯核心或者邏輯 CPU:
表面上看,超線程技術(shù)使得一個(gè)物理核心可以當(dāng)成2個(gè)使用,與不支持超線程技術(shù)的單核CPU相比,并行性應(yīng)該翻倍。
但是,從上圖看到,邏輯核心是共享Execution Engine的。
雖然同一時(shí)刻,有2條不同的CPU指令流送入了物理核,但同一時(shí)刻,Execution Engine只能執(zhí)行1條指令流上的指令。
比如,當(dāng)Execution Engine在執(zhí)行指令流1的時(shí)候,需要等待指令需要的數(shù)據(jù)到達(dá),那么,在這個(gè)等待的時(shí)間內(nèi),才可以切換到指令流2執(zhí)行,避免Execution Engine處于空閑狀態(tài)。
換句話說(shuō),超線程技術(shù)的并行性并不徹底,并行性并不能真正的翻倍。
上面Execution Engine的運(yùn)行方式,和在不支持超線程的單核CPU上運(yùn)行多線程非常相似,但是兩者有本質(zhì)的區(qū)別。
在不支持超線程的單核CPU上運(yùn)行多線程,是操作系統(tǒng)進(jìn)行時(shí)間片調(diào)度造成的假象,任何同一時(shí)刻,其實(shí)都只有1條指令流在物理核上執(zhí)行。
在支持超線程的單核CPU上運(yùn)行多線程,硬件層面支持同一時(shí)刻送入2條不同指令流到物理核心,只是在Execution Engine內(nèi)執(zhí)行的時(shí)候需要輪轉(zhuǎn)調(diào)度。
既然超線程技術(shù)本質(zhì)上和多核CPU一樣,增加了核心數(shù)(邏輯核心),但是并行性卻不及多核CPU,那為什么還要設(shè)計(jì)出超線程技術(shù)呢?
答案是超線程技術(shù)可以提升CPU核心的利用率。
在多核CPU上,如果某個(gè)物理核心在執(zhí)行指令流時(shí)需要等待指令數(shù)據(jù),那么該核心就有一段時(shí)間處于空閑狀態(tài)(雖然可能很短暫)。但是如果支持超線程技術(shù),那么該核心可以用來(lái)處理另外的指令流。
綜上所述,結(jié)合多核技術(shù)與超線程技術(shù),邏輯CPU的計(jì)算公式為:
4 SMP
SMP全稱是 Symmetric Multi-Processing,翻譯過(guò)來(lái)是對(duì)稱多處理器,是一種多處理器架構(gòu)。
對(duì)稱多處理器中的對(duì)稱,是指任何程序,不管運(yùn)行在內(nèi)核空間,還是用戶空間,都可以運(yùn)行在任意一個(gè)處理器上。
與之相反,ASMP,Asymmetric Multi-Processing,非對(duì)稱多處理器,指某些處理器用來(lái)運(yùn)行特殊的程序,比如操作系統(tǒng),而另外的處理器用來(lái)運(yùn)行非特殊程序,比如用戶程序。
現(xiàn)代計(jì)算機(jī)系統(tǒng)都使用的是SMP架構(gòu),ASMP架構(gòu)已經(jīng)幾乎絕跡了。
早期的時(shí)候,SMP專指多個(gè)物理CPU的場(chǎng)景。后續(xù)由于多核與超線程技術(shù)的出現(xiàn),SMP在多個(gè)邏輯CPU下也同樣適用。
Symmetric Multi-Proccessing Wikipedia
In the case of multi-core processors, the SMP architecture applies to the cores, treating them as separate processors
Hyper-Threading Wikipedia
The minimum that is required to take advantage of hyper-threading is symmetric multiprocessing (SMP) support in the operating system, as the logical processors appear as standard separate processors.
審核編輯:黃飛
-
cpu
+關(guān)注
關(guān)注
68文章
10780瀏覽量
210510 -
SMP
+關(guān)注
關(guān)注
0文章
71瀏覽量
19602 -
超線程
+關(guān)注
關(guān)注
0文章
16瀏覽量
7598 -
中斷控制器
+關(guān)注
關(guān)注
0文章
59瀏覽量
9426
原文標(biāo)題:一文搞懂多 CPU、多核 CPU、超線程技術(shù)、SMP
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論