單核CPU、多個CPU(路)、超線程技術、多核CPU(物理核、邏輯核)


1.單核CPU

 

路、CPU、物理核、邏輯核和超線程概念

一個服務器主板可以插多個CPU稱為多路,一個CPU可以有多個物理核。如果開啟了超線程,一個物理核可以分成n個邏輯核(一般是2),n為超線程的數量。

(1)路(多個CPU)

“路”都是指服務器CPU的數量,也就是服務器主板上CPU插槽的數量。 通常有單路、兩路、四路和多路。

單路指服務器支持1個CPU ;兩路指服務器支持2個CPU ;四路指服務器支持4個CPU;多路指服務器支持多個CPU。

(2)CPU( Central Processing Unit)

CPU中央處理單元是硬件系統的核心,用於數據的加工處理,能完成各種算術、邏輯運算以及控制功能。CPU不等於物理核,更不等於邏輯核。

(3)物理核(physical core/processor)

可以看的到的,真實的cpu核,有獨立的電路元件以及L1,L2緩存,可以獨立地執行指令。通常有單核、雙核、多核。

單核指一顆CPU中僅有1個運算核心;雙核指一顆CPU中集成了2個運算核心;多核指一顆CPU中集成了兩個以上的運算核心。

(4)邏輯核( logical core/processor,LCPU):

在同一個物理核內,邏輯層面的核。主要是操作系統使用邏輯核來模擬出真實CPU的效果,讓應用程序以為有兩個CPU在運算(依賴於物理核的高速運算)。

如果沒有開啟超線程,邏輯核個數與物理核數相同。當超線程開啟后,邏輯核個數是物理核數的2倍。

(5)超線程( Hyper-threading, HT):1LCPU=1HT

超線程可以在一個邏輯核等待指令執行的間隔(等待從cache或內存中獲取下一條指令),把時間片分配到另一個邏輯核。高速在這兩個邏輯核之間切換,讓應用程序感知不到這個間隔,誤認為自己是獨占了一個物理核。每個物理核2個線程,則意味着它是 HT。即每個物理核可以同時運行的執行線程或處理作業的數量為2。

 

單核CPU、多線程、多核CPU和多個CPU

單核處理器:
單個CPU,且芯片比較大。
多處理器系統:
一塊主板上有2個或多個CPU芯片,不同CPU間靠系統總線來完成通信。
通信效率較低,無法充分利用每個CPU提供的計算能力。
可擴展性較差,想要更多處理能力,需要一個擁有更多處理器的主板。

出現超線程技術:
相同的芯片中復制一些CPU內部組件,例如寄存器或一級緩存,以便在兩個不同的執行線程之間共享信息,而不必通過總線,加快計算過程。
一個芯片中,通過進程的切換,來達到並行處理的目的。從操作系統角度來看,就像是有兩個CPU在工作。
注意:不可能產生一個物理核2倍的處理能力。也不可能提供完全並行處理能力。
 

多核架構處理器
小型化所有處理器組件,稱之為一個物理核心。多個物理核心封裝在一個芯片中,就形成了多核架構。
每個物理核心之間通過內部總線進行通信,不需要通過系統總線。每個物理核心之間也相對獨立,可實現完全並行處理能力。
性能方面:1個雙核CPU > 1個單核CPU超線程 > 2個單核CPU非超線程

(1)單核CPU

相當於阻塞程序,在工作期間只能執行某一個程序!

(2)多線程

a:.線程越多越好嗎?什么時候才有必要用多線程?

線程必然不是越多越好,線程切換也是要開銷的,當你增加一個線程的時候,增加的額外開銷要小於該線程能夠消除的阻塞時間,這才叫物有所值。

(3)多核CPU

多核CPU指多個物理核集成在一個CPU芯片中,每個核都有自己的寄存器,alu運算單元等,但是一級二級緩存是共享的,可以通過內部總線來實現更快的數據交互。每個核的工作是完全並行的,由操作系統來決定多核處理器上的任務調度。常用的調度算法如下:

a.全局隊列調度

指操作系統維護一個全局的任務等待隊列,當系統中有一個CPU核心空閑時,操作系統就從全局任務等待隊列中選取就緒任務開始在此核心上執行。

優點:是CPU核心利用率較高。目前多數多核CPU的操作系統采用此種任務調度算法。

b.局部隊列調度

指操作系統為每個CPU物理內核維護一個局部的任務等待隊列,當系統中有一個CPU內核空閑時,便從該核心的任務等待隊列中選取恰當的任務執行。

優點:任務基本上無需在多個CPU核心間切換,有利於提高CPU核心局部Cache命中率,從而提高系統的性能。

 

 

什么時候該使用多線程呢?這要分四種情況討論:

a.多核CPU——計算密集型任務。此時要盡量使用多線程,可以提高任務執行效率,例如加密解密,數據壓縮解壓縮(視頻、音頻、普通數據),否則只能使一個核心滿載,而其他核心閑置。

b.單核CPU——計算密集型任務。此時的任務已經把CPU資源100%消耗了,就沒必要也不可能使用多線程來提高計算效率了;相反,如果要做人機交互,最好還是要用多線程,避免用戶沒法對計算機進行操作。

c.單核CPU——IO密集型任務,使用多線程還是為了人機交互方便,

d.多核CPU——IO密集型任務,這就更不用說了,跟單核時候原因一樣。

 

多核也要用多線程才能發揮優勢。
同樣,多線程要在多核上才能真正有優勢。
這點來說,對程序員不是透明的。程序員可以控制程序/線程在哪個CPU(核)上運行。用戶也可以控制程序在哪幾個核上運行。所以多核,多線程對用戶和程序員都不是透明的。程序員必須了解這方面的知識。才能讓程序最大限度的發揮機器的性能。

 

 

 

參考文檔:

性能基礎之CPU、物理核、邏輯核概念與關系

單核CPU與多核CPU工作原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM