日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

物理CPU

物理CPU,是硬件上的CPU, 也是主板上CPU的插槽個數,是計算機上實際配置的CPU個數

我們在linux下可以通過指令 cat /proc/cpuinfo | grep 'physical id'| sort| uniq |wc -l來查看我們計算機的物理CPU個數

 

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

 

物理CPU通過連接器或插槽與其他主板元件通信,通過系統總線完成與系統的不同處理器之間的通信,但是系統總線的傳輸速度比起CPU的速度來說,是非常慢的通常導致出現瓶頸,使得無法充分利用每個CPU提供的計算能力。

 

所以工程師想 能不能讓處理器中的核心組件小型化,并將它們封裝在單個芯片中,這些就是物理內核,可以看作是計算單元

CPU核數

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

 

在linux下,我們可以通過指令cat /proc/cpuinfo | grep "cpu cores" | wc -l來統計CPU核數。

 

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

 

我們分別看下,單核CPU和多核CPU的架構圖:

 


 

  1. 多個物理CPU,CPU通過系統總線進行通信,效率比較低。
  2. 多核CPU,不同的核通過L3 cache和片內總線進行通信,主存和外設通過總線與CPU通信

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

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

部件

CPU訪問所需時間

備注

L1 高速緩存

2~4 個時鐘周期

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

L2 高速緩存

10~20 個時鐘周期

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

L3 高速緩存

20~60個時鐘周期

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

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

邏輯CPU

在歷史上,為了提升CPU的性能,引入超標量、亂序運行、大量的寄存器及寄存器重命名、多指令解碼器、預測運行、高速緩存等特性,這些特性從而讓CPU擁有大量資源,并且CPU還能智能的預測執行指令。這就導致實際上CPU在大多數時間上,其資源是被閑置的,浪費是可恥的。

更多精彩文章在公眾號「小牛呼嚕嚕」

為了進一步壓榨CPU的性能,工程師發現,完全可以通過復制一些CPU內部組件,例如寄存器或一級緩存,來運行第二個線程,讓這些閑置資源運行在另一個線程上。雖然只有一個物理CPU,但操作系統被提供了兩個"邏輯CPU" ,而不是單個CPU,這樣就成功使得操作系統被"欺騙"了。

邏輯CPU是什么?

操作系統可以使用邏輯CPU來模擬出真實CPU的效果。在從前沒有多核處理器的時候,一個物理CPU只有一個物理內核,而現在有了多核技術,讓物理核通過高速運算,讓應用程序以為有兩個CPU在運算,這樣就可以把一個物理CPU當作多個"CPU"使用,即邏輯CPU

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

CPU的線程數?

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

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

超線程技術

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

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

我們需要先了解一下,線程和進程的概念

進程:

進程可以看作是程序的一次執行過程。一個程序的運行需要CPU時間、內存空間、文件以及I/O等資源。操作系統就是以進程為單位來分配這些資源的,所以說進程是操作系統中資源分配的基本單位。進程之間的資源是獨立隔離的,能很好的進行資源管理和保護。 進程也是一個動態的過程:有它自身的產生,存在和消亡的過程

線程:

線程是進程中的一個執行任務(控制單元),負責當前進程中程序的執行。一個進程可以包含多個線程,至少包含一個線程,與進程不同的是多個線程之間資源數據是共享的。所以系統在產生一個線程,或是在各個線程之間作切換工作時,負擔要比進程小得多,也正因為如此,線程也被稱為輕量級進程。為了提高系統的執行效率,減少處理器的空轉時間和調度切換的時間,線程取代了進程調度資源的基本功能,所以線程是資源調度的基本單位

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

超線程的原理其實是:由于CPU和寄存器,緩存,主存、硬盤的讀取速度的差異不是一個數量級的,CPU非常快

比如主頻為3.0GHZ的CPU,一個時鐘周期大約是0.3納秒,內存訪問大約需要120納秒,固態硬盤訪問大約需要50-150微秒,機械硬盤訪問大約需要1-10毫秒,最后網絡訪問最慢,得幾十毫秒左右。 如果我們把一個時鐘周期如果按1秒算的話,內存訪問大約就是6分鐘 ,固態硬盤大約是2-6天 ,傳統硬盤大約是1-12個月,網絡訪問就得幾年了

更多精彩文章在公眾號「小牛呼嚕嚕」

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

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

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

 

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

 

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

如何查看邏輯CPU數

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

  1. 在linux的cpuinfo中邏輯CPU數就是processor的數量。我們可以使用指令

cat /proc/cpuinfo | grep "processor" | wc -l來查看邏輯CPU數。

  1. 在windows任務管理器中 邏輯處理器的數量,就是邏輯CPU數。

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

 

小結

  1. 一個物理CPU可以有1個或者多個物理內核
  2. 一個物理內核可以有1個或者2個邏輯CPU

參考:

《深入理解計算機系統》

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


本篇文章到這里就結束啦,如果我的文章對你有所幫助的話,還請點個免費的,你的支持會激勵我輸出更高質量的文章,感謝!

原文鏡像:
https://mp.weixin.qq.com/s/JzLUgh47zAT5sD9dieNdog

分享到:
標簽:CPU
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定