CPU 超線程、多核

五種英特爾消費級CPU,說它們是消費級是爲了和企業級處理器Xeon(志強)區分:多線程

- 賽揚是雙核,不支持超線程 - 入門玩家架構

- 奔騰是雙核,不支持超線程 - 中低端玩家線程

- i3是雙核,支持超線程 - 中端玩家隊列

- i5是4核,不支持超線程 - 中高端玩家內存

- i7是4核,支持超線程 - 高端玩家it

 

而志強的一些低端CPU,普通玩家也能夠用,好比入門

- E3是4核,支持超線程 - 高端玩家thread

 

CPU架構效率

要談超線程和多核,就不得不談CPU的架構和邏輯。無關的技術細節太多,這裏略去。咱們重點談一下CPU中兩個相關的模塊:硬件

1)Processing Unit(運算處理單元),簡稱PU

2)Architectual State(架構狀態單元),簡稱AS

PU通常就是執行運算,好比算數運算加減乘除。AS執行一些邏輯和調度方面的操做,好比控制內存訪問等。

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

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

比喻一個小飯館(單核CPU),夫妻老婆店,老闆兼大廚廚房炒菜,老闆娘兼服務員點單。這不,來了一個客人,首先,走到老闆娘的收銀臺前,看菜單準備點單。差很少5分鐘後,客人點完了一份蓋澆飯。老闆娘抄好了單,遞給了在後廚的老公。老公開始炒菜。在這個例子中,老闆娘能夠理解成AS,老闆/大廚能夠理解稱PU(幹實事的)。

多核CPU

這裏說的多核,是多個物理核,好比i3的雙核,i5的4核。這中架構下,每個物理核都有一個PU和一個AS。因此。對於i3來講,就有總共兩個PU,兩個AS。對於i5來講,就有總過4個PU,4個AS。

 

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

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

 

這個應該仍是比較容易理解的。

超線程技術(HT)

重頭戲來了,超線程是個啥玩意。他是咱們平時說的多線程嗎?

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

簡單的說吧,超線程就是一個物理核裏面,有兩個AS,一個PU。兩個AS共享一個PU。爲何這麼作,看下面的例子:

 

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

有!

 

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

 

那有沒有解決方法?我想你們應該都能猜出來了 

--- 增長服務生

 

這時候,咱們給每一個大廚多增長一個服務生,從一個服務生變成了兩個服務生(AS),服務生1A和服務生1B開兩個隊列,同時給一個大廚(PU)下單。這樣,當出現服務生1A的客人15分鐘單子都沒有下完的狀況下,1B的客人單子頗有可能3分鐘下好送給大廚開炒了(PU),這樣大廚就不會站在廚房傻等1A客人的訂單。這樣,最大限度地榨乾大廚的勞動力 (大廚估計要罵娘了),而對於CPU來講,最大限度的提升了CPU的使用率,減小了CPU的(IDLE)空閒時間。有的時候,真不能怪大廚(PU)不賣力,而是你服務生(AS)叫單太墨跡。

 

在下圖中,橙色和藍色代表大廚(PU/CPU)是在工做的,白色格子代表大廚(PU)是空閒的。A圖是單核沒有沒有用超線程,B圖雙核沒有超線程,圖C是單核啓用了超線程。能夠清晰地看到,從單核增長到雙核(在沒有超線程的狀況下),CPU使用率並無增長。而用了超線程後,總體CPU使用率提升了,雖然只是一個核。

相關文章
相關標籤/搜索