首頁>Club>
7
回覆列表
  • 1 # 本季是論語

    舉個通俗的例子吧。 CPU就是個銀行,大家排隊存錢取錢辦手續。

    有幾個視窗就是幾個執行緒,也就是可以“同時”接待的顧客數量。核心數相當於職員數量,也就是真正幹活的人。4核心4執行緒,四個職員四個視窗,一個職員負責一個視窗,這沒啥好說的。4核心8執行緒,四個職員八個視窗,一個職員負責兩個視窗,不過職員沒有分身術,職員A在1號窗口乾活的時候他就沒法同時處理2號視窗。這叫超執行緒(Hyperthread)。那4核心8執行緒跟4核心4執行緒比有什麼區別呢?或者說超執行緒有什麼好處呢? 這要分情況說。 如果來了4個儲戶,一直在4個視窗辦手續,那4C4T(4核心4執行緒,下面都這麼簡寫)和4C8T倒是沒什麼區別。 但實際情況是銀行大廳裡常年坐著100多號人,都要辦手續。 而手續往往特別的複雜,需要儲戶填寫10000000張單據的那種。 如果一直給前四個儲戶辦手續,後面的就等到黃瓜菜都涼了,銀行一定會被投訴到死。 所以就這麼辦:X儲戶填單據的時候,把Y儲戶叫過來辦手續,X填完了這張再讓X過來繼續辦。 不過叫Y過來的時候就得暫時把跟X儲戶相關的單子和資料先收起來,等X下次過來再把Y相關的東西收好,把X的東西再拿出來。這個時候更多的視窗也就是更多的執行緒的優勢就顯示出來了。 X在1號視窗填單據的時候職員A可以轉到2號視窗給Y辦手續,然後再轉到1好視窗繼續給X辦手續。這樣就省下把東西收拾來收拾去的時間,這可以大幅度提高效率。 因為這樣的切換其實非常的頻繁,所以綜合來說還是差不少事的。而且是任務越多超執行緒相對來說效果越好。 再細緻一點說呢,職員雖然同時只能處理一個單子,但他有兩隻眼睛,兩隻手和一張嘴還有一個腦子。 處理一個客戶的單子要先用眼睛看一下,然後腦子想一下怎麼處理,然後動手動嘴。 幾乎所有單子都是這個流程,這三項都做完算是處理好一個單子。 但在職員看完第一個單子開始動腦子想的時候,其實他的眼睛是閒著的。 開始做第一個單子的時候眼睛和腦子都閒著。 不能讓丫閒著啊! 於是我們要求,職員在看完第一個單子開始動腦子想的時候要開始用眼睛看這個客戶的下一個單子,而不是等第一個單子完全處理好再看第二個單子。這樣第一個單子想好了,開始動手動嘴了,就可以立刻開始想第二個單子,而同時眼睛就可以看第三個單子了。 也就是說,這個職員可以手上做著第一個單子,腦子裡想著第二個單子,眼睛同時看第三個單子。某種程度上來說,雖然職員沒有分身術,但他在同一時間處理著三個單子,效率高多了吧? 這個叫流水線。級數是3級,就是把指令分成3個步驟來處理。級數越高每個核心“同時”處理的指令數就越多。但碰上特殊情況也就越蛋疼。 實際情況是對於一個儲戶來說,有的時候第一個單子不辦完下一個就沒法繼續。比如一個儲戶要先查餘額再匯款,餘額不知道匯款的單子根本無從處理。加上單子和單子不一樣,有的單子需要想很久,有的單子根本不用想。 所以一個職員負責一個視窗有的時候,手腦眼有的時候還是有閒下來的時候。我們稱之為流水線上的泡泡,這個時候超執行緒則可以更好的榨乾這個職員的剩餘價值(我們稱之為擠泡泡)。比如雖然他沒有分身術,但比如他在第一個視窗給X辦手續,因為種種原因眼睛閒下來了,那他可以先看看第二個窗口裡Y的單子嘛。

  • 中秋節和大豐收的關聯?
  • 分手後的10個悲傷階段以及如何度過?