何為超線程?


概念掃盲:

  1. 物理CPU:物理CPU就是插在主機上的真實的CPU硬件。
  2. 邏輯CPU:邏輯CPU跟超線程技術有聯系,假如物理CPU不支持超線程的,那么邏輯CPU的數量等於核心數的數量;如果物理CPU支持超線程,那么邏輯CPU的數目是核心數數目的兩倍。
  3. 核心數:我們常常會聽說多核處理器,其中的核指的就是核心數。
    1. 在Linux下可以數不同的physical id 來確認主機的物理CPU個數。 
    2. 在Linux下可以通過 processors 的數目來確認邏輯CPU的數量。
    3. 在Linux下可以通過cores來確認主機的物理CPU的核心數。

超線程:
  超線程是英特爾開發出來的一項技術,使得單個處理器可以象兩個邏輯處理器那樣運行,這樣單個處理器以並行執行線程。
這里的單個處理器也可以理解為CPU的一個核心;這樣便可以理解為什么開啟了超線程技術后,邏輯CPU的數目是核心數的兩倍了。

超線程技術實現並行操作的原理?

  一個線程在執行時會占用CPU資源,其他線程想要得到執行就必須等待該線程將CPU資源讓出。

  利用超線程技術,模擬出的兩個邏輯內核共享同一個CPU資源,所以同一時刻可以有兩個線程都占用CPU資源,因此這兩個線程都可以得到執行,這就是實現同一時間執行兩個線程的並行操作。

舉例1:

    有個單核的CPU,想要運行一個多線程的程序,通常情況下,只能是由Cpu在線程之間來回調度,但是當開啟了超線程之后,可以在一個線程執行整數指令集的時候,而恰好在這個時候,另一個線程執行浮點指令集,而這兩個指令集整數指令單元和浮點指令單元來執行。就可以同時執行這兩個線程,這就叫超線程。而且實際上,是有大量資源被閑置着的。超線程技術允許兩個線程同時不沖突地使用CPU中的資源。指令單元閑置,可以通過超線程的技術來達到提高利用率。這叫做硬件多線程技術。
舉例2:

  • Processing Unit(運算處理單元),簡稱PU。 PU一般就是執行運算,比如算數運算加減乘除。
  • Architectual State(架構狀態單元),簡稱AS。AS執行一些邏輯和調度方面的操作,比如控制內存訪問等。

單核CPU(先從簡單的談起)

一般一塊傳統意義的CPU上會有一個PU、一個AS。

比喻 :一個小飯館(單核CPU),夫妻老婆店,老板兼大廚廚房炒菜,老板娘兼服務員點單。這不,來了一個客人,首先,走到老板娘的收銀台前,看菜單准備點單。差不多5分鍾后,客人點完了一份蓋澆飯。老板娘抄好了單,遞給了在后廚的老公。老公開始炒菜。在這個例子中,老板娘可以理解成AS,老板/大廚可以理解稱PU(干實事的)。

多核CPU

這里說的多核,是多個物理核,比如i3的雙核,i5的4核。這中架構下,每一個物理核都有一個PU和一個AS。所以。對於i3來說,就有總共兩個PU,兩個AS。對於i5來說,就有總過4個PU,4個AS。

比喻:上面小飯館的列子,對於5、6個客人可能還能忙的過來。但設想一下子來他個16個客人,這隊估計要排到街上了。如果再告訴你,每10分種就有16個新客人過來點單。。。完了。生意估計是做不下去了 - 老板、老板娘忙到死。

這時,我們就需要一個更大的單位食堂(多核CPU)。有4個服務生、4個大廚。4個服務生同時點單,4個大廚同時開炒(1號服務生專給一號大廚下單,二號服務神生專給二號大廚下單。。。以此類推)。這樣相比小飯館一個老板娘、一個客人隊列,這里成了4個隊列,效率頓時比小飯館提高4倍。16個客人,平均分配成4個隊列,每個隊列就只有4個客人了,情況是不是好了很多?

超線程技術(HT) VS 多線程

超線程(HT)並不是我們一般說的多線程。我們一般說的多線程(multi-threading)是指程序方面的,簡單的說就是‘軟’的,代碼級別的。而超線程一般指的是硬件架構方面的,是‘硬’的:通過調整AS而模擬出來的‘邏輯核’。

簡單的說,超線程就是一個物理核里面,有兩個AS,一個PU。兩個AS共享一個PU。為什么這么做,

舉例3:

比喻:剛剛那個單位食堂,4個服務生,4個大廚,4個隊列。會不會效率問題?           有!

設想每個客人都有看單選單的時候,你能保證每個客人都看兩眼就下單?有的客人難免會磨磨蹭蹭,問東問西,一個菜點它個15分鍾。而設想大廚平均炒一個菜只要10分種。那剩下的那5分鍾呢?大廚在廚房閑着沒事干,喝茶看報紙。時間全被客人-服務生點菜這個環節給浪費掉了。

那有沒有解決方法? 增加服務生!

這時候,我們給每個大廚多增加一個服務生,從一個服務生變成了兩個服務生(AS),服務生1A和服務生1B開兩個隊列,同時給一個大廚(PU)下單。這樣,當出現服務生1A的客人15分鍾單子都沒有下完的情況下,1B的客人單子很有可能3分鍾下好送給大廚開炒了(PU),這樣大廚就不會站在廚房傻等1A客人的訂單。這樣,最大限度地榨干大廚的勞動力 (大廚估計要口吐芬芳了),而對於CPU來說,最大限度的提高了CPU的使用率,減少了CPU的(IDLE)空閑時間。
————————————————
轉自:https://blog.csdn.net/cheng__lu/article/details/98884263


免責聲明!

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



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