“把科學帶回家” 提供
今天有一個奇趣的小學生水平的應用題給你。不要小看這個問題,它背後的思想解決了計算機的一個大問題,成為了英特爾奔騰4處理器的核心技術。
一起來看看。
關鍵概念
超線程
材料和操作
這個問題是這樣的。
小明、李雷和韓梅梅的媽媽因為很窮,只能給孩子們做烤麵包當早飯吃。3個孩子都在人教版小學上學,吃完早飯要麻利地去學校上學。
但是因為媽媽很窮,只能買臨保,甚至是過期的麵包。孩子們要吃到兩面都烤熟的麵包才不會拉肚子,也不會捱餓。
同時,媽媽買不起烤麵包機,只能用炭火給孩子們烤。而且炭火一次只能把麵包的一面烤熟,而炭火爐很小,一次只能烤2片面包。
媽媽通過大量的實際操作發現,把1片面包的1面烤熟要1分鐘。
現在問題來了。把3片面包的兩面都烤熟,至少需要多久?
如果我告訴你,最少只需要3分鐘。你能想出來,聰明的媽媽是怎麼烤的嘛?
(下面的原理部分是答案和解析。)
原理
假設3片面包分別叫做A、B、C,它們分別有1和2兩個面。麵包A的正面叫做A1,反面叫做A2,以此類推。
按照一般人的思路,先把A和B兩片面包的兩面都烤熟,用去2分鐘。然後再單獨烤C,這樣又要用去2分鐘。怎麼算都需要4分鐘對吧?
怎樣才能在3分鐘內烤完呢?這就是在更少的時間裡處理多任務的奧義了。關鍵在於,不要急於求成。
0-1分鐘:
烤A1和B1。
第1分鐘結束時,把B拿走,換C。此時,A1、B1烤熟了。
1-2分鐘:
烤A2和C1。
第2分鐘結束時,A的兩面都已經熟了,拿走;B1和C1也熟了。把B翻過來,烤B2。
2-3分鐘:
烤B2和C2。
第3分鐘結束時,3片面包都烤好了,大功告成!
這個問題看起來就像小學生的智力題,但實際上利用它背後的邏輯,則可以提升計算機處理器的速度。
這種計算機技術,就叫做超線程(hyper-threading)。點我查看這麼聰明的英特爾的一個價值5億美金的黑歷史。
超線程是英特爾在2002年發佈的一種技術,應用在Xeon、奔騰4等處理器裡。
用下面這個圖可以解釋 CPU裡發生的事情。CPU裡其實有好多調度單位,它們類似於一個個烤麵包的烤位。
如果按照左邊的處理法,就等同於4分鐘的那種烤法:在烤C麵包時,另一邊的烤位白白浪費了。左圖裡灰色的調度單位相當於閒置的烤位,沒有執行任何任務。所以在浪費了這麼多調度單位的情況下,完成兩個任務(黑色和綠色)的時間就比較長。
但是在超線程(右圖)的情況下,綠色的任務穿插在黑色的任務裡,大部分的調度單位都被同時有效利用,類似於3分鐘的烤麵包法,兩邊的烤位隨時都在烤麵包,大部分烤位沒有被浪費,所以2個任務總體完成時間更短。
在超線程技術出現前,CPU只能同時處理一個線程,就像左邊的那種方法。
但是超線程讓CPU可以同時進行2個及以上的線程,在更短的時間裡完成更多的任務,大大提升了計算機的計算效率。根據英特爾的說法,超線程可以讓CPU的性能提升30%。
不過,超線程也不是對所有類型的任務都有效。那些比較大的軟件,比如影片編輯就可以有效利用超線程技術來提高效率。但是如果是編輯圖像、瀏覽器軟件等小任務,那麼超線程 CPU 的效率就處於劣勢了。
你媽問你,為什麼做一會兒作業就要刷一會兒劇,你可以向她科普超線程的原理,告訴她這樣你可以在更少的時間裡做更多的作業,看更多的劇叻。
https://shimo.im/docs/VvVKYjYWRhwVJ3qG/
閱讀更多 萬物雜誌 的文章