12.20 你能做出這道小學生水平的應用題,就解決了計算機的一個大問題

把科學帶回家” 提供


你能做出這道小學生水平的應用題,就解決了計算機的一個大問題


今天有一個奇趣的小學生水平的應用題給你。不要小看這個問題,它背後的思想解決了計算機的一個大問題,成為了英特爾奔騰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/


分享到:


相關文章: