作者jk21234 ()
站內PC_Shopping
標題Re: [情報] Intel 新平台 LGA1156 相關 NDA 資料揭露
時間Wed May 6 15:36:54 2009
※ 引述《fsaa3dfx (屌哦屌哦\゜@゜/)》之銘言:
: → kuninaka:軟體裡的Thread跟CPU Thread應該不一樣吧 05/06 01:17
內容不一樣,軟體下的multi-thread是發展已久的概念.
cpu的multi-thread可以說是對應這種(多執行緒的多工OS)環境下.
提出的增加效能的硬體機制.
也可以說cpu的multi-thread是在ILP(Instruction-level parallelism,指令
平行度)無法持續發展的情況下,利用cpu閒置執行單元的方法...
只這樣講好像在繞口令一樣.從基本開始好了.....
現代的作業系統(OS)都有process跟thread的概念.
不過,原先process跟thread的分界不明顯.都被認為是
程式的執行實體.一個程式可以同時被執行很多份,就會有不同的執行實體.
在後來由於作業系統也加入了資源的分配,控管,保護(比如不能讓
其他人的程式去窺探你的程式證在幹嘛)等等.所以就後來的觀念來說,
process比較接近實際分配系統資源的單位,而thread就接近於分配cpu執行的
實體,且實作thread的資源消耗會小於process.
以Windows下來說.每個process(處理程序)都負責向系統要求配置資源,
也擁有至少一個thread.實際執行則是將它之中的thread放到cpu上執行.
Resource
Process --------> 檔案,記憶體,GDI,印表機等等....
---> Thread 1 &(2,3,4.....)
從作業系統端來看,則是系統內存在著N個process,以及M個thread
(M>=N),然後分配cpu輪流執行M個thread.以達成服務多人或者是
單人使用下的多工作業系統的目的...
另外由於過去的高速電腦已經使用多cpu,所以需要效率的程式也會
自行實作多個thread.這些thread就可以分配在不同的cpu上執行.
這個是20世紀以前的事情,當時不管cpu性能有多高,系統內有多少cpu,
每個cpu正在執行的thread數量都是1個.
可是後來發生了一些改變..........(後續)
: → kuninaka:我覺得INTEL的HT是一種概念 實際上跟OS Thread應該不一樣 05/06 01:20
Intel的HT是買下DEC的副產品.最早是DEC在Alpha上提出的,
當時稱作SMT(Simultaneous multithreading)
從SMT到HT基本上沒有甚麼差別,因為當時的P4很有需要,而且
實作的成本也不高就擺上去了.
SMT是甚麼概念?在一個cpu裡面,我可以放入很多執行單元.
可是即使加入了Out-of-Order執行,register-renaming等去解
決各種問題,能利用的比例也不會無限提升
(也就是前面說的ILP提升不起來的問題).
塞8個ALU很簡單,可是讓程式在同一個cycle裡面能利用的ALU
超過2個就開始有難度啦.說不定塞8個ALU裡面,程式使用的比例
從2~6個不等而已. 這時候在cpu內.....
PC(Program Counter)
+---->Register files
ALU/LS (執行單元)
1.還不錯 2.有點忙 3.好涼 4.沒事 5.很久沒叫我了
SMT等cpu實作的multi-thread,就是硬體多一份PC/Register File.
然後......
Thread 1 Thread 2
PC(Program Counter) PC(Program Counter)
+---->Register files +---->Register files
ALU/LS (執行單元)
1.忙左邊 2.忙左邊 3.忙左邊 4.忙右邊 5.忙右邊
這樣相比上面,執行單元的利用率就變高了.......
如此實作的好處有:
硬體要變更的很少,如上,主要是多放置一組暫存器
軟體要變更的也很少.由於作業系統在分配多工執行的時候,
需要執行的context switch這個動作也是將硬體的PC/Register File
保存在記憶體內以及移出,這時候cpu多一組pc/reg,跟系統多裝一顆cpu
要做的工作是差不多的.
也有人因此稱multi-thread為模擬多cpu,不過這是誤解.
不過,雖然SMT的硬體實作成本很低,不過如上的特性,
也就導致說它能帶來的效能因為應用程式不同而會有巨大的差別.
有些程式若本來就能在單一執行緒下充分使用cpu的執行單元,
則開啟SMT後效能改進就不明顯.
還有一個可能會出現的反面效果就是.兩個thread是獨立的,
所以兩方對記憶體存取的動作也互不相干.但是cpu上的cache
只有一份.所以兩者會互搶.......這是部分程式開啟SMT後效能
下降的可能原因之一.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.243.218
1F:推 RHTZ:看不懂還是要推個用心專業!! 05/06 15:37
2F:→ jk21234:用有提到的關鍵字去搜尋相關的教學投影片 05/06 15:37
3F:推 QuentinHu:快推要不然別人會說我看不懂~ 05/06 15:40
4F:推 kuninaka:感謝!!! 05/06 15:44
5F:→ kuninaka:這個就看懂了!! 05/06 15:45
6F:推 kevinchu26:我這篇文章花了5分鐘去看它....針專業 05/06 15:47
7F:推 mebum: 大致看懂 專業推~ 05/06 15:48
8F:推 kuninaka:P4的閒置資源很多 管線拉到31層 XD 05/06 15:49
9F:→ kuninaka:聽說VIA也有HT類似的相關技術 05/06 15:49
10F:→ jk21234:找誰沒有用過比較快 .... 05/06 15:55
11F:推 pol61x438:有看沒有懂 囧 我是實際應用派 XDDDD 05/06 16:13
12F:→ yukitowu:我只能說好險我學的東西還沒還給老師X|D 05/06 16:25
13F:推 wch6858:推 從p4後 pipeline就沒這麼多了 05/06 17:13
14F:推 ang728:有看有推 消化中 05/06 17:58
15F:推 gbcg9725:好專業 05/06 18:18
16F:推 chadjye:推~ 05/06 18:30
17F:推 smartclever:P4是典型的高頻低能代表作,但是他裡面用到的東西卻 05/06 18:48
18F:→ smartclever:是很多教科書或paper提出來的好物 05/06 18:49
19F:推 dolphinus:其實第二段就全講完了. 高手文推 05/06 18:57
20F:推 R119:有寫過多核心的 MPI 跟OpenMP 會比較有感覺 05/06 19:16
21F:→ jk21234:雖然AMD沒做,不過我認為multi-thread對K8仍然有幫助 05/06 19:19
22F:推 kuninaka:wave pipeline之類的XD 05/06 19:35
23F:推 aa78121:窺探你的程式"證"在幹嘛 這是錯字嗎XD 05/06 21:18
24F:→ aa78121:忘了感謝好文 (〒﹏〒) 05/06 21:19
25F:推 vixen:那持續讓CPU負擔100%的程式, 多跑HT有沒有用呢? 05/06 21:40
26F:推 dolphinus:如果程式單跑一個 core 就 100%, HT 通常是沒用的.. 05/06 21:51
27F:→ dolphinus:除了 atom 仍舊可以正常運作以外. 05/06 21:52
28F:→ jk21234:100%就沒用的觀念是錯的.... 05/07 01:45
29F:推 tactical:專業推,但是仍看不懂="= 05/07 08:15
30F:推 VictorTom:推專業....:) 05/07 19:00
31F:推 landattack:謝謝jk21234,很棒的資料與解說! 09/18 08:22