今天有一個奇趣的小學生水平的應用題給你。不要小看這個問題,它背后的思想解決了計算機的一個大問題,成為了英特爾奔騰4處理器的核心技術。一起來看看吧。
這個問題是這樣的。
小明、李雷和韓梅梅的媽媽因為很窮,只能給孩子們做兩面烤熟的烤面包當早飯。媽媽買不起烤面包機,一次只能把2片面包的單面烤熟,烤熟一面要1分鐘?,F在問題來了,為了讓3個孩子都早點去人教版小學上學,把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的兩面都已經熟了,拿走;C1也熟了。把B放回來,烤B2。
2~3分鐘:烤B2和C2。第3分鐘結束時,3片面包都烤好了,大功告成!
雖然這是小學生的智力題,但實際上利用它背后的邏輯,則可以提升計算機處理器的速度。
這種計算機技術,就叫做超線程(Hyper-threading)。這是一項英特爾的黑科技。
超線程是英特爾在2002年發(fā)布的一種技術,應用在至強、奔騰4等處理器中,奔騰4的標志上的HT字母就是代表超線程技術。
用下面這張圖可以解釋 CPU里發(fā)生的事情。CPU里其實有好多調度單位,它們類似于一個個烤面包的烤位。
如果按照左邊的單線程處理法,就等同于4分鐘的那種烤法:在烤C面包時,另一邊的烤位白白浪費了。圖里灰色的調度單位相當于閑置的烤位,沒有執(zhí)行任何任務。所以在浪費了這么多調度單位的情況下,完成兩個任務(黑色和綠色)的時間就比較長。
但是在超線程(右圖)的情況下,綠色的任務穿插在黑色的任務里,大部分的調度單位都被同時有效利用,類似于3分鐘的烤面包法,兩邊的烤位隨時都在烤面包,大部分烤位沒有被浪費,所以兩個任務總體完成時間更短。
在超線程技術出現前,CPU只能同時處理一個線程,就像左邊的那種方法。
但是超線程讓CPU可以同時進行兩個及以上的線程,在更短的時間里完成更多的任務,大大提升了計算機的計算效率。根據英特爾的說法,超線程可以讓CPU的性能提升30%。
不過,超線程也不是對所有類型的任務都有效。那些比較大的軟件,比如影片編輯就可以有效利用超線程技術來提高效率。但是如果是文字編輯、瀏覽器等小任務,那么超線程CPU的效率優(yōu)勢就發(fā)揮不出來了。
下次你媽問你,為什么做一會兒作業(yè)就要刷一會兒劇,你可以向她科普超線程的原理,告訴她這樣你可以在更少的時間里做更多的作業(yè),看更多的劇嘞。
(本文經授權轉載自“把科學帶回家”微信公眾號,有刪節(jié))