0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談多CPU、多核CPU、超線程技術(shù)、SMP

sanyue7758 ? 來(lái)源:處芯積律 ? 2024-01-06 10:38 ? 次閱讀

1 多 CPU

多CPU(multi-processor)指的是在計(jì)算機(jī)主板上有多個(gè)物理CPU,每一個(gè)物理CPU之間通過(guò)系統(tǒng)總線連接。

0a3ceb76-abe3-11ee-8b88-92fbcf53809c.png

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)可以表示為下圖:

0a4106fc-abe3-11ee-8b88-92fbcf53809c.png

從上圖可以看到,每一個(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è)物理核心。

0a44a2bc-abe3-11ee-8b88-92fbcf53809c.png

第2中就是使用1個(gè)物理CPU,這個(gè)物理CPU內(nèi)部包含4個(gè)物理核心。

0a48e912-abe3-11ee-8b88-92fbcf53809c.png

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。

0a4cb6d2-abe3-11ee-8b88-92fbcf53809c.png

在運(yùn)行的時(shí)候,會(huì)同時(shí)有2條不同的CPU指令流送入物理核心:

0a5073b2-abe3-11ee-8b88-92fbcf53809c.png

因此,一個(gè)物理核心內(nèi)部,就好像有了2個(gè)邏輯核心或者邏輯 CPU:

0a54476c-abe3-11ee-8b88-92fbcf53809c.png

表面上看,超線程技術(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í)行。

0a57c518-abe3-11ee-8b88-92fbcf53809c.png

在支持超線程的單核CPU上運(yùn)行多線程,硬件層面支持同一時(shí)刻送入2條不同指令流到物理核心,只是在Execution Engine內(nèi)執(zhí)行的時(shí)候需要輪轉(zhuǎn)調(diào)度。

0a5b378e-abe3-11ee-8b88-92fbcf53809c.png

既然超線程技術(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.

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10780

    瀏覽量

    210510
  • SMP
    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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是超線程?超線程是如何工作的?

    什么是超線程?超線程是如何工作的?
    發(fā)表于 10-26 07:22

    CPU超線程技術(shù)

    CPU超線程技術(shù) CPU生產(chǎn)商為了提高CPU的性能,通常做法是提高CPU的時(shí)鐘頻率和增加緩存
    發(fā)表于 04-26 09:12 ?694次閱讀

    SMP技術(shù)

    SMP技術(shù) SMP英文全稱為Symmetrical Multi-Processing,意指“對(duì)稱多處理”技術(shù),是指在一個(gè)計(jì)算機(jī)上匯集了一組處理器—即
    發(fā)表于 12-17 14:08 ?4497次閱讀

    CPU超線程技術(shù)

    CPU超線程技術(shù)            CPU生產(chǎn)商為了提高CPU的性
    發(fā)表于 12-24 10:57 ?459次閱讀

    什么是超線程技術(shù)

    什么是超線程技術(shù)        &nb
    發(fā)表于 12-24 14:01 ?375次閱讀

    什么是超線程

    什么是超線程 超線程: 即Hyperthreading Technology。HT技術(shù)就是利用特殊的硬件指令,把兩個(gè)邏輯內(nèi)核模擬
    發(fā)表于 02-04 12:00 ?836次閱讀

    基于Windows 操作系統(tǒng)內(nèi)核驅(qū)動(dòng)的多核CPU 線程管理

    1 引言 本文分析了Windows 系統(tǒng)的進(jìn)程調(diào)度機(jī)制,并設(shè)計(jì)了一種基于Windows 操作系統(tǒng)內(nèi)核驅(qū)動(dòng)的多核CPU 線程管理方法,實(shí)現(xiàn)了一個(gè)基于Windows 內(nèi)核驅(qū)動(dòng)的線程管理服務(wù)
    發(fā)表于 10-31 11:02 ?0次下載
    基于Windows 操作系統(tǒng)內(nèi)核驅(qū)動(dòng)的<b class='flag-5'>多核</b><b class='flag-5'>CPU</b> <b class='flag-5'>線程</b>管理

    多核CPU、多進(jìn)程、多線程之間的聯(lián)系解析

    多核cpu主要分原生多核和封裝多核。Windows 應(yīng)用程序中消息有兩種送出途徑;直接和排隊(duì)。Windows或某些運(yùn)行的應(yīng)用程序可直接發(fā)布消息給窗口過(guò)程。
    發(fā)表于 12-01 09:37 ?9029次閱讀
    <b class='flag-5'>多核</b><b class='flag-5'>CPU</b>、多進(jìn)程、多<b class='flag-5'>線程</b>之間的聯(lián)系解析

    Linux:QEMU的CPU配置

    根據(jù)前面描述 CPU 的基本知識(shí), 可以知道 CPU 有物理 CPU, 多核 CPU, 超線程
    的頭像 發(fā)表于 06-22 18:01 ?5502次閱讀
    Linux:QEMU的<b class='flag-5'>CPU</b>配置

    處理器開啟/關(guān)閉超線程后,游戲幀數(shù)將發(fā)生什么變化?

    CPU處理器的核心數(shù)在不斷提升,如今桌面端消費(fèi)級(jí)市場(chǎng)基本起步都是4核心,高端一些的都達(dá)到了8核心,AMD甚至在去年還推出了16核心32線程的處理器。多核線程
    的頭像 發(fā)表于 09-13 09:16 ?2.2w次閱讀
    處理器開啟/關(guān)閉<b class='flag-5'>超線程</b>后,游戲幀數(shù)將發(fā)生什么變化?

    CPU溫度過(guò)高?教你如何關(guān)閉超線程功能

    CPU散熱是很多玩家極為關(guān)注的問(wèn)題,溫度高了不僅對(duì)CPU性能不利,還會(huì)影響使用壽命等。如果發(fā)覺(jué)自己的CPU溫度過(guò)高了,不妨試試微星的方法——關(guān)閉沒(méi)什么用的超線程功能。
    發(fā)表于 11-25 11:12 ?1w次閱讀

    講講線程、進(jìn)程和CPU中的超線程

    因此,超線程簡(jiǎn)單來(lái)講就是把這些不能公用的資源加倍。而那些流水線上的操作邏輯電路、ALU單元等則可以不用復(fù)制。以此實(shí)現(xiàn)多個(gè)線程同時(shí)在一個(gè)CPU的核心中進(jìn)行處理。
    的頭像 發(fā)表于 08-05 16:38 ?2427次閱讀

    超線程是什么意思?

    超線程技術(shù)就是利用特殊的硬件指令,把兩個(gè)邏輯內(nèi)核模擬成兩個(gè)物理芯片,讓單個(gè)處理器都能使用線程級(jí)并行計(jì)算。 超線程(HT, Hyper-Threading)是英特爾研發(fā)的一種
    的頭像 發(fā)表于 09-01 19:28 ?1.1w次閱讀

    SMP多核啟動(dòng)cpu操作函數(shù)

    其中spin-table啟動(dòng)方式的回調(diào)如下: const struct cpu_operations smp_spin_table_ops = {.name= "spin-table
    的頭像 發(fā)表于 12-05 16:04 ?620次閱讀
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b>啟動(dòng)<b class='flag-5'>cpu</b>操作函數(shù)

    SMP多核secondary cpu啟動(dòng)流程

    ,詳細(xì)分析可以參考上篇博文。其中以下流程執(zhí)行secondary cpu啟動(dòng)相關(guān)的一些初始化工作: 在初始化完成且hotplug線程創(chuàng)建完成后,就可通過(guò)以下流程喚醒cpu hotplug線程
    的頭像 發(fā)表于 12-05 17:41 ?691次閱讀
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b>secondary <b class='flag-5'>cpu</b>啟動(dòng)流程