偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

邏輯CPU是什么?

CPU的線程數(shù)?

超線程技術(shù)

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

  • 小結(jié)

圖片

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

物理CPU

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

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

圖片

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

圖片

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

CPU核數(shù)

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

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

圖片

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

圖片

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

圖片

圖片

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

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

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

部件

CPU訪問所需時(shí)間

備注

L1 高速緩存

2~4 個(gè)時(shí)鐘周期

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

L2 高速緩存

10~20 個(gè)時(shí)鐘周期

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

L3 高速緩存

20~60個(gè)時(shí)鐘周期

L3 高速緩存是多個(gè) CPU 核心共用的

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

邏輯CPU

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

邏輯CPU是什么?

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

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

CPU的線程數(shù)?

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

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

超線程技術(shù)

CPU的線程數(shù)概念僅僅只針對(duì)Intel的CPU , 對(duì)于AMD的CPU來說,只有核心數(shù)的概念,沒有線程數(shù)的概念。因?yàn)槠涫峭ㄟ^Intel超線程技術(shù)來實(shí)現(xiàn)的,Intel早在2002年推出的Northwood奔騰4 HT處理器就把這一技術(shù)帶入到消費(fèi)級(jí)市場(chǎng)。

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

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

  • 進(jìn)程:

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

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

  • 線程:

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

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

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

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

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

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

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

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


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

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

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

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

我們?cè)倥e個(gè)例子來理解一下邏輯CPU的概念:假設(shè)計(jì)算機(jī)有一個(gè)物理CPU,是2核的,支持超線程。那么這臺(tái)計(jì)算機(jī)就是2核4線程的(4線程中線程數(shù)量也對(duì)應(yīng)著邏輯CPU的數(shù)量)。所以兩路(兩路指的是有兩個(gè)物理CPU)四核超線程就有2*4*2=16?個(gè)邏輯CPU。有人也把它稱之為16核,實(shí)際上在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臺(tái)電腦比較垃圾,沒法把開超線程的圖貼給大家看看,大家可以自己去試試。

小結(jié)

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

參考:

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

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

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

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

責(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ù)中心

2009-08-14 13:34:21

SSL證書 EV SSL在線交易

2010-06-17 17:34:15

UML發(fā)展

2010-01-07 09:14:27

2013-09-11 14:00:16

Windows 8.1

2021-06-17 08:35:36

Java內(nèi)存模型

2021-07-14 08:00:12

Numa架構(gòu)Linux

2022-09-15 08:38:39

WebCPU數(shù)量

2023-10-08 09:57:23

手機(jī)屏幕OLED

2022-04-12 11:15:31

Redis消息隊(duì)列數(shù)據(jù)庫

2010-03-31 13:47:22

Oralce數(shù)據(jù)庫

2010-06-07 10:00:45

MySQL數(shù)據(jù)庫

2011-09-19 10:19:04

NoSQL

2023-02-15 08:31:19

2010-03-10 18:12:50

Python編程語言

2022-07-14 09:04:32

邊緣計(jì)算邊緣分析

2025-03-27 03:50:00

DeepSeekLLMLLaMA

2017-04-11 09:00:24

機(jī)器學(xué)習(xí)發(fā)展歷程啟示
點(diǎn)贊
收藏

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