Re: [閒聊]關於intel hyper threading的解說?
有錯請指證
流水線作業
http://i.imgur.com/MaWNiqr.png
假設要洗衣服要經過:
淨泡機、攪拌機、脫水機、烘乾機,一台半小時。
假設要洗四桶衣服,經過四台機器需要(0.5+0.5+0.5+0.5)*4=8個小時。
BUT!
第0.5個小時
將第一桶衣服拿去浸泡
第1.0個小時
第一桶衣服 從浸泡機拿出來 丟進去攪拌機後
第二桶衣服 就丟去浸泡了
第1.5個小時
第一桶衣服 從攪拌機拿出來 丟進去脫水機
第二桶衣服 從浸泡機拿出來 丟進去攪拌機
第三桶衣服 丟去浸泡
.
.
.
最後總時間只需要3.5個小時!
這就是流水線作業
與電腦相關的,就是各級資源可以盡量避免資源空閒。
http://i.imgur.com/wl4FNJg.png
以這張圖為例分別是:
指令抓取、提取暫存器、運算單元、資料存取、存回暫存器。
而上面是很單純的流水線處理。
而現今的CPU呢?
http://i.imgur.com/9ClQylc.png
看一下架構示意圖。
可以看到運算單元有非常多個,有整數運算,浮點數運算... 等。
但是一個指令進來,可能只使用了一個整數運算單元,而其他單元都是處於閒置狀態。
那如何有效利用 全部的運算單元呢?
就是將指令全部丟進去處理,最後會卡在運算單元這級 如果可以進行運算就進行,如果不
行就先等待,等資源一空閒就進行運算。
處理完的回傳值,會再全部丟到緩衝單元,按順序全部排好,再輸出,這樣就與一個一個
慢慢執行後的輸出一樣了。
那與INTEL的Hyper-Threading有什麼關係?
http://i.imgur.com/V6xEdv2.png
一顆雙核心的處理器,處理兩個程式的時候發現,其中一顆在運作的時候,另一顆剛好空
閒。那我是不是就可以在一顆核心空閒的時候,給他另一個程式進行運算?
所以就有了最右邊的圖。
http://i.imgur.com/Sdc8ORb.png
當然一般來說不會這麼剛好,不過還是可以盡量進行填空,達到增加資源利用效率的效果
,減少時間。
以這張圖來說,原本需要20個*2的cycle,現在只要25個cycle。
http://i.imgur.com/TIlceLU.png
不過如果原本就全部都填滿了的話,HT就一點作用也沒有了。
根據統計,HT實際使用上約可提供1.3倍的效能,而現在支援多執行緒的程式也越來越多。
從魔獸的4核心,到最近刺客教條等單機大作的8核心。
個人淺見E3、I7的4C8T是可以投資的,因為支援8T的東西只會越來越多。
文章前面的圖面是陳中和教授的上課講義,老師如果不希望使用該圖,我會馬上拿下來。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.84.109
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1427814899.A.E78.html
→
03/31 23:39, , 1F
03/31 23:39, 1F
→
03/31 23:43, , 2F
03/31 23:43, 2F
→
03/31 23:45, , 3F
03/31 23:45, 3F
→
03/31 23:46, , 4F
03/31 23:46, 4F
→
03/31 23:47, , 5F
03/31 23:47, 5F
→
03/31 23:48, , 6F
03/31 23:48, 6F
→
03/31 23:49, , 7F
03/31 23:49, 7F
→
03/31 23:53, , 8F
03/31 23:53, 8F
感謝提供
※ 編輯: jonothan (223.142.56.222), 04/01/2015 00:16:07
→
04/01 01:16, , 9F
04/01 01:16, 9F
→
04/01 01:19, , 10F
04/01 01:19, 10F
→
04/01 02:01, , 11F
04/01 02:01, 11F
→
04/01 02:01, , 12F
04/01 02:01, 12F
推
04/01 05:33, , 13F
04/01 05:33, 13F
→
04/01 05:33, , 14F
04/01 05:33, 14F
→
04/01 07:09, , 15F
04/01 07:09, 15F
→
04/01 07:09, , 16F
04/01 07:09, 16F
→
04/01 07:10, , 17F
04/01 07:10, 17F
→
04/01 07:15, , 18F
04/01 07:15, 18F
→
04/01 07:15, , 19F
04/01 07:15, 19F
→
04/01 08:26, , 20F
04/01 08:26, 20F
推
04/01 10:50, , 21F
04/01 10:50, 21F
→
04/01 12:45, , 22F
04/01 12:45, 22F
→
04/01 12:47, , 23F
04/01 12:47, 23F
→
04/01 12:49, , 24F
04/01 12:49, 24F
→
04/01 12:49, , 25F
04/01 12:49, 25F
→
04/01 12:50, , 26F
04/01 12:50, 26F
→
04/01 13:36, , 27F
04/01 13:36, 27F
→
04/01 13:41, , 28F
04/01 13:41, 28F
→
04/01 13:42, , 29F
04/01 13:42, 29F
→
04/01 13:43, , 30F
04/01 13:43, 30F
→
04/01 13:44, , 31F
04/01 13:44, 31F
→
04/01 15:58, , 32F
04/01 15:58, 32F
→
04/01 15:59, , 33F
04/01 15:59, 33F
→
04/01 16:01, , 34F
04/01 16:01, 34F
→
04/01 16:02, , 35F
04/01 16:02, 35F
→
04/01 16:03, , 36F
04/01 16:03, 36F
→
04/01 16:05, , 37F
04/01 16:05, 37F
→
04/01 16:06, , 38F
04/01 16:06, 38F
→
04/01 19:39, , 39F
04/01 19:39, 39F
→
04/01 19:58, , 40F
04/01 19:58, 40F
→
04/01 20:00, , 41F
04/01 20:00, 41F
→
04/01 20:01, , 42F
04/01 20:01, 42F
→
04/01 20:02, , 43F
04/01 20:02, 43F
→
04/01 20:04, , 44F
04/01 20:04, 44F
→
04/01 20:04, , 45F
04/01 20:04, 45F
→
04/01 20:04, , 46F
04/01 20:04, 46F
→
04/01 20:05, , 47F
04/01 20:05, 47F
→
04/01 20:05, , 48F
04/01 20:05, 48F
→
04/01 20:06, , 49F
04/01 20:06, 49F
→
04/01 20:14, , 50F
04/01 20:14, 50F
推
04/01 20:20, , 51F
04/01 20:20, 51F
→
04/01 20:34, , 52F
04/01 20:34, 52F
→
04/01 20:36, , 53F
04/01 20:36, 53F
→
04/01 20:51, , 54F
04/01 20:51, 54F
→
04/01 20:53, , 55F
04/01 20:53, 55F
→
04/01 20:53, , 56F
04/01 20:53, 56F
→
04/01 20:54, , 57F
04/01 20:54, 57F
推
04/01 23:04, , 58F
04/01 23:04, 58F
→
04/02 07:11, , 59F
04/02 07:11, 59F