<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談多CPU、多核CPU、超線程技術、SMP

sanyue7758 ? 來源:處芯積律 ? 2024-01-06 10:38 ? 次閱讀

1 多 CPU

多CPU(multi-processor)指的是在計算機主板上有多個物理CPU,每一個物理CPU之間通過系統總線連接。

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

Architectual State: 包括通用數據寄存器、段寄存器、控制寄存器等。

Execution Engine: 執行引擎,用來執行CPU指令,包括算數邏輯單元ALU等。

Local APIC: APIC全稱是Advanced Programmable Interrupt Controller,翻譯過來就是高級可編程中斷控制器,用來處理CPU中斷。

2 多核 CPU

多核(multi-core processor)指的是在一個物理CPU內部,封裝了多個物理核心。這些物理核心可能位于同一個Die上,也可能位于多個Die上。

關于Die可以參看 《一文搞懂晶圓 Die CPU 之間的關系》。

無論使用哪種方式,多核CPU的架構可以表示為下圖:

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

從上圖可以看到,每一個物理核心都有自己的Architectual State、Execution Engine、Local APIC。因此,每一個物理核心都可以看成是一個邏輯 CPU。

從并行性(Parallel)的角度看,多CPU和多核CPU都可以在同一時間,同時執行多條指令流。

那既然這樣,為什么還要研究出多核CPU呢?

如果單從性能角度看,多核CPU內部物理核心之間通過片內總線通信,速度會快于系統總線。換句話說,多核 CPU 的性能要高于多 CPU。

有了多核CPU,那么要構造處擁有4個邏輯CPU的系統,那么就有2種方案:

第1種就是使用2個物理CPU,每個物理CPU內部包含2個物理核心。

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

第2中就是使用1個物理CPU,這個物理CPU內部包含4個物理核心。

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

3 超線程技術

超線程技術(Hyper-Threading Technology)簡稱HT或者HTT,它作用于物理CPU內部的物理核心上。

為了實現超線程技術,一個物理核心內部,會同時包含2份Architectual State、Local APIC,但是只有1份Execution Engine。

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

在運行的時候,會同時有2條不同的CPU指令流送入物理核心:

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

因此,一個物理核心內部,就好像有了2個邏輯核心或者邏輯 CPU:

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

表面上看,超線程技術使得一個物理核心可以當成2個使用,與不支持超線程技術的單核CPU相比,并行性應該翻倍。

但是,從上圖看到,邏輯核心是共享Execution Engine的。

雖然同一時刻,有2條不同的CPU指令流送入了物理核,但同一時刻,Execution Engine只能執行1條指令流上的指令。

比如,當Execution Engine在執行指令流1的時候,需要等待指令需要的數據到達,那么,在這個等待的時間內,才可以切換到指令流2執行,避免Execution Engine處于空閑狀態。

換句話說,超線程技術的并行性并不徹底,并行性并不能真正的翻倍。

上面Execution Engine的運行方式,和在不支持超線程的單核CPU上運行多線程非常相似,但是兩者有本質的區別。

在不支持超線程的單核CPU上運行多線程,是操作系統進行時間片調度造成的假象,任何同一時刻,其實都只有1條指令流在物理核上執行。

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

在支持超線程的單核CPU上運行多線程,硬件層面支持同一時刻送入2條不同指令流到物理核心,只是在Execution Engine內執行的時候需要輪轉調度。

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

既然超線程技術本質上和多核CPU一樣,增加了核心數(邏輯核心),但是并行性卻不及多核CPU,那為什么還要設計出超線程技術呢?

答案是超線程技術可以提升CPU核心的利用率。

在多核CPU上,如果某個物理核心在執行指令流時需要等待指令數據,那么該核心就有一段時間處于空閑狀態(雖然可能很短暫)。但是如果支持超線程技術,那么該核心可以用來處理另外的指令流。

綜上所述,結合多核技術與超線程技術,邏輯CPU的計算公式為:

4 SMP

SMP全稱是 Symmetric Multi-Processing,翻譯過來是對稱多處理器,是一種多處理器架構。

對稱多處理器中的對稱,是指任何程序,不管運行在內核空間,還是用戶空間,都可以運行在任意一個處理器上。

與之相反,ASMP,Asymmetric Multi-Processing,非對稱多處理器,指某些處理器用來運行特殊的程序,比如操作系統,而另外的處理器用來運行非特殊程序,比如用戶程序。

現代計算機系統都使用的是SMP架構,ASMP架構已經幾乎絕跡了。

早期的時候,SMP專指多個物理CPU的場景。后續由于多核與超線程技術的出現,SMP在多個邏輯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
    cpu
    +關注

    關注

    68

    文章

    10509

    瀏覽量

    207137
  • SMP
    SMP
    +關注

    關注

    0

    文章

    68

    瀏覽量

    19467
  • 超線程
    +關注

    關注

    0

    文章

    16

    瀏覽量

    7567
  • 中斷控制器
    +關注

    關注

    0

    文章

    59

    瀏覽量

    9386

原文標題:一文搞懂多 CPU、多核 CPU、超線程技術、SMP

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何弄懂 多核CPU下的多線程?

    多核CPU下的多線程編程原來是這么回事...
    發表于 04-02 07:09

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

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

    CPU超線程技術

    CPU超線程技術 CPU生產商為了提高CPU的性能,通常做法是提高CPU的時鐘頻率和增加緩存
    發表于 04-26 09:12 ?640次閱讀

    CPU超線程技術

    CPU超線程技術            CPU生產商為了提高CPU的性
    發表于 12-24 10:57 ?421次閱讀

    什么是超線程

    什么是超線程 超線程: 即Hyperthreading Technology。HT技術就是利用特殊的硬件指令,把兩個邏輯內核模擬
    發表于 02-04 12:00 ?789次閱讀

    基于Windows 操作系統內核驅動的多核CPU 線程管理

    1 引言 本文分析了Windows 系統的進程調度機制,并設計了一種基于Windows 操作系統內核驅動的多核CPU 線程管理方法,實現了一個基于Windows 內核驅動的線程管理服務
    發表于 10-31 11:02 ?0次下載
    基于Windows 操作系統內核驅動的<b class='flag-5'>多核</b><b class='flag-5'>CPU</b> <b class='flag-5'>線程</b>管理

    多核CPU、多進程、多線程之間的聯系解析

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

    Linux:QEMU的CPU配置

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

    處理器開啟/關閉超線程后,游戲幀數將發生什么變化?

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

    CPU溫度過高?教你如何關閉超線程功能

    CPU散熱是很多玩家極為關注的問題,溫度高了不僅對CPU性能不利,還會影響使用壽命等。如果發覺自己的CPU溫度過高了,不妨試試微星的方法——關閉沒什么用的超線程功能。
    發表于 11-25 11:12 ?8816次閱讀

    講講線程、進程和CPU中的超線程

    因此,超線程簡單來講就是把這些不能公用的資源加倍。而那些流水線上的操作邏輯電路、ALU單元等則可以不用復制。以此實現多個線程同時在一個CPU的核心中進行處理。
    的頭像 發表于 08-05 16:38 ?2131次閱讀

    CPU 拓撲中的SMP架構

    CPU 拓撲用來表示 CPU 在硬件層面的組合方式,本文主要講解 CPU 拓撲中的 SMP(Symmetric Multi-Processor,對稱多處理器系統)架構,
    的頭像 發表于 08-29 11:02 ?3632次閱讀

    超線程是什么意思?

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

    SMP多核啟動cpu操作函數

    _ops回調 其中spin-table啟動方式的回調如下: const struct cpu_operations smp_spin_table_ops = {.name= "spin-table
    的頭像 發表于 12-05 16:04 ?336次閱讀
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b>啟動<b class='flag-5'>cpu</b>操作函數

    SMP多核secondary cpu啟動流程

    ,詳細分析可以參考上篇博文。其中以下流程執行secondary cpu啟動相關的一些初始化工作: 在初始化完成且hotplug線程創建完成后,就可通過以下流程喚醒cpu hotplug線程
    的頭像 發表于 12-05 17:41 ?331次閱讀
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b>secondary <b class='flag-5'>cpu</b>啟動流程
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>