自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊CPU的發(fā)展歷程之單核、多核、超線程

商務(wù)辦公
雖然超線程能讓計算機核數(shù)增加,但實際上計算機的核數(shù)翻倍并不能簡單地認(rèn)為著計算機的性能也翻倍了,計算機的性能還受CPU主頻、機器字長、指令字長、存儲字長、主存、I/O速度、硬盤速度等因素影響,也不意味著核數(shù)越多計算機性能會越來越好,因為超線程只是充分利用了CPU的空閑資源,提升了CPU利用率。
  • 物理CPU
  • CPU核數(shù)
  • 邏輯CPU

邏輯CPU是什么?

CPU的線程數(shù)?

超線程技術(shù)

如何查看邏輯CPU數(shù)

  • 小結(jié)

圖片

大家好,我是呼嚕嚕,在計算機的早期,Intel奔騰處理器時代,他們的主板上的單個處理器CPU是相當(dāng)大的。為了提升計算機的整體運算處理能力,一般是在主板上安裝更多這樣的處理器,這樣就可以輕松突破晶體管限制。

物理CPU

物理CPU?,是硬件上的CPU, 也是主板上CPU的插槽個數(shù),是計算機上實際配置的CPU個數(shù)。

 cat /proc/cpuinfo | grep 'physical id'| sort| uniq |wc -l ?來查看我們計算機的物理CPU個數(shù)。

圖片

    在windows下,我們可以在cmd命令中輸入systeminfo?,查看CPU個數(shù)

圖片

物理CPU通過連接器或插槽與其他主板元件通信,通過系統(tǒng)總線完成與系統(tǒng)的不同處理器之間的通信,但是系統(tǒng)總線的傳輸速度比起CPU的速度來說,是非常慢的通常導(dǎo)致出現(xiàn)瓶頸,使得無法充分利用每個CPU提供的計算能力。所以工程師想 能不能讓處理器中的核心組件小型化,并將它們封裝在單個芯片中,這些就是物理內(nèi)核,可以看作是計算單元

CPU核數(shù)

CPU核數(shù)?,物理上真實的cpu核,有獨立的電路元件以及L1,L2緩存,可以獨立地執(zhí)行指令。通常每個CPU下的核數(shù)都是固定的,如果我們的計算機有兩個物理CPU,每個CPU是雙核的,那么計算機總共就是四核的。

    在linux下,我們可以通過指令cat /proc/cpuinfo | grep "cpu cores" | wc -l?來統(tǒng)計CPU核數(shù)。

圖片

在windows下,可以通過任務(wù)管理器查看:

圖片

我們分別看下,單核CPU和多核CPU的架構(gòu)圖:

圖片

圖片

  • 多個物理CPU,CPU通過系統(tǒng)總線進(jìn)行通信,效率比較低。
  • 多核CPU,不同的核通過L3 cache和內(nèi)部總線進(jìn)行通信,主存和外設(shè)通過總線與CPU通信

為了彌補 CPU 與內(nèi)存兩者之間的性能差異,就在 CPU 內(nèi)部引入了 CPU Cache?,也稱高速緩存。CPU Cache用的是 SRAM(Static Random-Access Memory)的芯片,也叫靜態(tài)隨機存儲器。其只要有電,數(shù)據(jù)就可以保持存在,而一旦斷電,數(shù)據(jù)就會丟失。

CPU Cache 通常分為大小不等的三級緩存,分別是 L1 Cache、L2 Cache 和 L3 Cache

部件

CPU訪問所需時間

備注

L1 高速緩存

2~4 個時鐘周期

每個 CPU 核心都有一塊屬于自己的 L1 高速緩存,L1 高速緩存通常分成指令緩存和數(shù)據(jù)緩存。

L2 高速緩存

10~20 個時鐘周期

L2 高速緩存同樣是每個 CPU 核心都有的

L3 高速緩存

20~60個時鐘周期

L3 高速緩存是多個 CPU 核心共用的

我們可以發(fā)現(xiàn)越靠近 CPU 核心的緩存其訪問速度越快,容量也越來越小。緩存讀取數(shù)據(jù)過程。就像數(shù)據(jù)庫緩存一樣,首先在最快的緩存中找數(shù)據(jù),如果緩存沒有命中(Cache miss) 則往下一級找, 直到三級緩存都找不到時,最后會去內(nèi)存找數(shù)據(jù)。

邏輯CPU

在歷史上,為了提升CPU的性能,引入超標(biāo)量、亂序運行、大量的寄存器及寄存器重命名、多指令解碼器、預(yù)測運行、高速緩存等特性,這些特性從而讓CPU擁有大量資源,并且CPU還能智能的預(yù)測執(zhí)行指令。這就導(dǎo)致實際上CPU在大多數(shù)時間上,其資源是被閑置的,浪費是可恥的,為了進(jìn)一步壓榨CPU的性能,工程師發(fā)現(xiàn),完全可以通過復(fù)制一些CPU內(nèi)部組件,例如寄存器或一級緩存,來運行第二個線程,讓這些閑置資源運行在另一個線程上。雖然只有一個物理CPU,但操作系統(tǒng)被提供了兩個"邏輯CPU" ,而不是單個CPU,這樣就成功使得操作系統(tǒng)被"欺騙"了。

邏輯CPU是什么?

 操作系統(tǒng)可以使用邏輯CPU來模擬出真實CPU的效果。在從前沒有多核處理器的時候,一個物理CPU只有一個物理內(nèi)核,而現(xiàn)在有了多核技術(shù),讓物理核通過高速運算,讓應(yīng)用程序以為有兩個CPU在運算,這樣就可以把一個物理CPU當(dāng)作多個"CPU"使用,即邏輯CPU

一般情況下,邏輯CPU=物理CPU個數(shù)*每顆核數(shù)?,如果我們的電腦CPU支持超線程技術(shù)且開啟的話,邏輯CPU的個數(shù)是核數(shù)的2倍,邏輯CPU=物理CPU個數(shù)*每顆核數(shù)*2,超線程技術(shù)可以使得 處理器中的1 顆內(nèi)核在操作系統(tǒng)中,如同2 顆內(nèi)核那樣發(fā)揮作用。

CPU的線程數(shù)?

還有一個我們需要知道:邏輯處理器個數(shù) = CPU的線程數(shù),也就是說有多少個邏輯處理器,就可以開多少個線程。對于一個CPU,線程數(shù)總是大于或等于核心數(shù)的。一個核心最少對應(yīng)一個線程,但通過超線程技術(shù),一個核心可以對應(yīng)兩個線程,也就是說它可以同時運行兩個線程。

一般來說,物理CPU個數(shù)×每顆核數(shù)?應(yīng)該等于邏輯CPU的個數(shù),如果不相等的話,則表示windows電腦的CPU支持超線程技術(shù)。

超線程技術(shù)

CPU的線程數(shù)概念僅僅只針對Intel的CPU , 對于AMD的CPU來說,只有核心數(shù)的概念,沒有線程數(shù)的概念。因為其是通過Intel超線程技術(shù)來實現(xiàn)的,Intel早在2002年推出的Northwood奔騰4 HT處理器就把這一技術(shù)帶入到消費級市場。

超線程技術(shù)(SMT),就是可以把一個物理線程模擬出兩個線程來使用,使得單個核心用起來像兩個核一樣,以充分發(fā)揮CPU的性能。

我們需要先了解一下,線程和進(jìn)程的概念

  • 進(jìn)程:

進(jìn)程可以看作是程序的一次執(zhí)行過程。一個程序的運行需要CPU時間、內(nèi)存空間、文件以及I/O等資源。操作系統(tǒng)就是以進(jìn)程為單位來分配這些資源的,所以說進(jìn)程是操作系統(tǒng)中資源分配的基本單位。進(jìn)程之間的資源是獨立隔離的,能很好的進(jìn)行資源管理和保護。

進(jìn)程也是一個動態(tài)的過程:有它自身的產(chǎn)生,存在和消亡的過程

  • 線程:

線程是進(jìn)程中的一個執(zhí)行任務(wù)(控制單元),負(fù)責(zé)當(dāng)前進(jìn)程中程序的執(zhí)行。一個進(jìn)程可以包含多個線程,至少包含一個線程,與進(jìn)程不同的是多個線程之間資源數(shù)據(jù)是共享的。所以系統(tǒng)在產(chǎn)生一個線程,或是在各個線程之間作切換工作時,負(fù)擔(dān)要比進(jìn)程小得多,也正因為如此,線程也被稱為輕量級進(jìn)程。

為了提高系統(tǒng)的執(zhí)行效率,減少處理器的空轉(zhuǎn)時間和調(diào)度切換的時間,線程取代了進(jìn)程調(diào)度資源的基本功能,所以線程是資源調(diào)度的基本單位

CPU之所以要增加線程數(shù),是源于多任務(wù)處理的需要。線程數(shù)越多,越有利于同時運行多個程序,因為線程數(shù)等同于在某個瞬間CPU能同時并行處理的任務(wù)數(shù)。

超線程的原理其實是:由于CPU和寄存器,緩存,主存、硬盤的讀取速度的差異不是一個數(shù)量級的,CPU非???/p>

比如主頻為3.0GHZ的CPU,一個時鐘周期大約是0.3納秒,內(nèi)存訪問大約需要120納秒,固態(tài)硬盤訪問大約需要50-150微秒,機械硬盤訪問大約需要1-10毫秒,最后網(wǎng)絡(luò)訪問最慢,得幾十毫秒左右。

如果我們把一個時鐘周期如果按1秒算的話,內(nèi)存訪問大約就是6分鐘 ,固態(tài)硬盤大約是2-6天 ,傳統(tǒng)硬盤大約是1-12個月,網(wǎng)絡(luò)訪問就得幾年了!

這就給了我們超線程技術(shù),將CPU內(nèi)部暫時閑置處理資源充分“調(diào)動”起來,使得CPU中看起來同時有2個邏輯核,在同時工作的可能性。

我們知道CPU是采用指令流水線的方式來執(zhí)行任務(wù),在一個邏輯核等待指令執(zhí)行的間隔(等待從cache或內(nèi)存中獲取下一條指令),把時間片分配到另一個邏輯核。物理CPU高速地在這兩個邏輯核之間切換,讓操作系統(tǒng)感知不到這個間隔,實現(xiàn)了“同時執(zhí)行多個任務(wù)”


像奔騰4 HT處理器多加入了一個邏輯處理單元,這讓CPU可以同時執(zhí)行多個程序而共享一顆CPU內(nèi)的資源,如:ALU、FPU、 緩存等,當(dāng)兩個線程都同時需要某一個資源時,其中一個要暫時停止,并讓出資源,直到這些資源閑置后才能繼續(xù),所以單個物理CPU開啟超線程的性能并不能等于兩顆CPU的處理能力。

超線程技術(shù)只增加了5%的芯片面積,就可換來15%~30%的性能提升,而后來的Nehalem架構(gòu)帶來了全新的超線程技術(shù),得益于指令集分制預(yù)測技術(shù)與較短的流水線,它擁有比奔騰4好得多的效能,再加上整合了內(nèi)存控制器讓其擁有更大的內(nèi)存帶寬,還有更大的緩存,這樣就更能夠有效的發(fā)揮超線程的作用,Nehalem的超線程可以在增加很少能耗的情況下,讓性能提升20-30%,后續(xù)每一代雖然都有一些小修改,不過基本上都是Nehalem架構(gòu)的延續(xù)。

 雖然超線程能讓計算機核數(shù)增加,但實際上計算機的核數(shù)翻倍并不能簡單地認(rèn)為著計算機的性能也翻倍了,計算機的性能還受CPU主頻、機器字長、指令字長、存儲字長、主存、I/O速度、硬盤速度等因素影響,也不意味著核數(shù)越多計算機性能會越來越好,因為超線程只是充分利用了CPU的空閑資源,提升了CPU利用率。

如何查看邏輯CPU數(shù)

我們再舉個例子來理解一下邏輯CPU的概念:假設(shè)計算機有一個物理CPU,是2核的,支持超線程。那么這臺計算機就是2核4線程的(4線程中線程數(shù)量也對應(yīng)著邏輯CPU的數(shù)量)。所以兩路(兩路指的是有兩個物理CPU)四核超線程就有2*4*2=16?個邏輯CPU。有人也把它稱之為16核,實際上在linux的/proc/cpuinfo中查看只有8核。

  • 在linux的cpuinfo中邏輯CPU數(shù)就是processor的數(shù)量。我們可以使用指令cat /proc/cpuinfo | grep "processor" | wc -l來查看邏輯CPU數(shù)。
  • 在windows任務(wù)管理器中 邏輯處理器的數(shù)量,就是邏輯CPU數(shù)。

呼嚕嚕的2臺電腦比較垃圾,沒法把開超線程的圖貼給大家看看,大家可以自己去試試。

小結(jié)

  • 一個物理CPU可以有1個或者多個物理內(nèi)核
  • 一個物理內(nèi)核可以有1個或者2個邏輯CPU

參考:

《深入理解計算機系統(tǒng)》

https://www.expreview.com/56674.html

本文轉(zhuǎn)載自微信公眾號「 小牛呼嚕?!?,作者「小牛呼嚕嚕」,可以通過以下二維碼關(guān)注。

轉(zhuǎn)載本文請聯(lián)系「小牛呼嚕?!构娞?。

責(zé)任編輯:武曉燕 來源: 小牛呼嚕嚕
相關(guān)推薦

2024-02-01 14:59:14

多線程硬件系統(tǒng)

2019-11-07 09:20:29

Java線程操作系統(tǒng)

2017-05-27 21:07:24

NFV網(wǎng)絡(luò)功能虛擬化數(shù)據(jù)中心

2021-06-17 08:35:36

Java內(nèi)存模型

2021-07-14 08:00:12

Numa架構(gòu)Linux

2017-03-06 14:45:27

超線程技術(shù)處理器技術(shù)服務(wù)器

2010-06-17 17:34:15

UML發(fā)展

2010-01-07 09:14:27

2009-08-14 13:34:21

SSL證書 EV SSL在線交易

2013-09-11 14:00:16

Windows 8.1

2022-09-15 08:38:39

WebCPU數(shù)量

2023-10-31 09:04:21

CPU調(diào)度Java

2021-10-18 11:55:10

SMTCPU線程

2023-10-08 09:57:23

手機屏幕OLED

2019-12-10 14:09:09

Zen3架構(gòu)SMT4

2009-05-22 08:50:19

2022-07-14 09:04:32

邊緣計算邊緣分析

2017-04-11 09:00:24

機器學(xué)習(xí)發(fā)展歷程啟示

2025-03-27 03:50:00

DeepSeekLLMLLaMA

2010-06-07 10:00:45

MySQL數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號