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