"一心不可二用"的簡單科普

來源: 加州老李 2011-10-25 20:09:38 [] [博客] [舊帖] [給我悄悄話] 本文已被閱讀: 次 (1093 bytes)
本文內容已被 [ 加州老李 ] 在 2011-10-26 06:04:48 編輯過。如有問題,請報告版主或論壇管理刪除.

大家都知道,CPU越快越好。但大概很少人知道CPU的利用率非常低。

以及Pentium 4為例,P4有七個執行單元(Execution Unit),其中兩個EU每個時鍾周
期能做兩次運算,其餘5個能做一次運算。因為7個EU是互相獨立的,這樣理論上P4每
個時鍾周期可以做9次運算。但是INTEL發現,典型的應用下,P4的利用率隻有35%。

這是因為一個CPU隻能執行一個線程(process)。如果有多個線程需要執行,CPU分時執行多個
線程。而CPU的7個EU分工做不同的運算。比如有的專門做浮點運算,有的專門做定
點運算,還有的做圖形相關運算。

如果一個線程隻需要大量定點運算,那麽顯然有的EU非常忙,而另外的EU卻閑著。
INTEL推出"超線程"Pentium 4,一個CPU可以同時執行兩個線程,如果這兩個線程有互補性
質,比如一個大量做定點運算,另一個大量做浮點運算,那麽CPU的利用率就會顯著
提高。這是最早的"雙核"處理器。但這隻是虛擬雙核。如果同時執行的兩個線程沒
有互補性質,CPU的速度會更慢。

後來出現了真正的雙核處理器,相當於把兩個CPU做在一起,每個核就是一個CPU,可
以單獨執行一個線程。從操作係統角度看,一個雙核CPU就是兩個CPU,同時執行兩
個線程。一個四核CPU就是四個CPU,同時執行四個線程。

所有跟帖: 

多說一句: 程序不等於線程。 -加州老李- 給 加州老李 發送悄悄話 加州老李 的博客首頁 (123 bytes) () 10/25/2011 postreply 20:32:11

你上麵大概把process和thread搞混了吧?線程是thread 一個程序可以多線程 -mc3361- 給 mc3361 發送悄悄話 (0 bytes) () 10/26/2011 postreply 12:27:28

俺也是這麽認為的。 -朱歌亮- 給 朱歌亮 發送悄悄話 朱歌亮 的博客首頁 (0 bytes) () 10/26/2011 postreply 13:04:30

記得80年代出版的UNIX書裏,無論操作係統生成的“process”,還是被另一個process生成的“process” -加州老李- 給 加州老李 發送悄悄話 加州老李 的博客首頁 (70 bytes) () 10/26/2011 postreply 13:22:04

20萬年前連人都沒有,哈哈 -mc3361- 給 mc3361 發送悄悄話 (0 bytes) () 10/26/2011 postreply 13:52:31

我沒記錯的話,“thread”這個概念出現較晚,好像是Solaris裏最先有的。 -加州老李- 給 加州老李 發送悄悄話 加州老李 的博客首頁 (291 bytes) () 10/26/2011 postreply 13:05:51

但是不能把thread和process混淆,100年前還沒有電腦,嗬嗬 -mc3361- 給 mc3361 發送悄悄話 (0 bytes) () 10/26/2011 postreply 13:51:56

老朽知識老化,真的老了 :-) -加州老李- 給 加州老李 發送悄悄話 加州老李 的博客首頁 (0 bytes) () 10/26/2011 postreply 19:37:27

也不是,早期的Unix也是有線程的,不過是叫light process,而不是叫thread,但和thread差不多 -企鵝肥肥- 給 企鵝肥肥 發送悄悄話 企鵝肥肥 的博客首頁 (91 bytes) () 10/26/2011 postreply 21:34:46

現在的Linux,process和thread是很嚴格地不同的。的確無法混同。Thread -企鵝肥肥- 給 企鵝肥肥 發送悄悄話 企鵝肥肥 的博客首頁 (0 bytes) () 10/26/2011 postreply 21:43:15

搞IPC,完全沒有必要啊,地址空間都共享了,何必還IPC。thread比process塊,除非很有 -企鵝肥肥- 給 企鵝肥肥 發送悄悄話 企鵝肥肥 的博客首頁 (56 bytes) () 10/26/2011 postreply 21:46:18

謝謝科普! -baitu- 給 baitu 發送悄悄話 baitu 的博客首頁 (0 bytes) () 10/25/2011 postreply 20:33:44

為什麽intel比arm耗電多了,hp要用arm做server,intel不行了 -LovChina- 給 LovChina 發送悄悄話 (0 bytes) () 10/26/2011 postreply 02:37:38

Intel是ASIC,而AMR是RSIC, 如果執行相同的操作,AMR的指令數要比Intel要少, -企鵝肥肥- 給 企鵝肥肥 發送悄悄話 企鵝肥肥 的博客首頁 (118 bytes) () 10/26/2011 postreply 21:40:27

HP and Calxeda have teamed up to build servers based on ARM's lo -LovChina- 給 LovChina 發送悄悄話 (91 bytes) () 10/28/2011 postreply 07:22:24

沒那麽簡單劃分,現代的x86 cpu早已進入混合時代了,x86指令經片上翻譯成微指令 -old_taoist- 給 old_taoist 發送悄悄話 (340 bytes) () 10/29/2011 postreply 11:51:03

謝謝科普 -企鵝肥肥- 給 企鵝肥肥 發送悄悄話 企鵝肥肥 的博客首頁 (0 bytes) () 11/03/2011 postreply 23:44:16

謝謝科普!那麽多核CPU能不能跑超線程呢? -徒勞- 給 徒勞 發送悄悄話 (0 bytes) () 10/26/2011 postreply 06:17:01

Intel的Core i7支持Hyper-Threading。 -加州老李- 給 加州老李 發送悄悄話 加州老李 的博客首頁 (0 bytes) () 10/26/2011 postreply 07:12:46

謝謝你!似乎還是蠻難懂的。。。是不是說,如果軟件編得就是單線程或不互補 -xinliji- 給 xinliji 發送悄悄話 (86 bytes) () 10/26/2011 postreply 10:14:08

如果能知道哪些application能更好的利用多核,就對買電腦的人有真正的指導意義了 -xinliji- 給 xinliji 發送悄悄話 (23 bytes) () 10/26/2011 postreply 10:17:32

還有,同時run不同的applications,比方說photoshop和firefox, skype,多核應該比單核好吧? -xinliji- 給 xinliji 發送悄悄話 (0 bytes) () 10/26/2011 postreply 10:31:11

現在的趨勢是用GPU加速計算。cpu之作調度。 -old_taoist- 給 old_taoist 發送悄悄話 (0 bytes) () 10/29/2011 postreply 12:01:03

還是不太懂,幹嘛不多用幾個CPU,一塊媽媽板上裝10個CPU,不就快多啦? -千裏一盞燈- 給 千裏一盞燈 發送悄悄話 千裏一盞燈 的博客首頁 (0 bytes) () 10/26/2011 postreply 17:19:15

這樣的話,這10個CPU之間的通訊速度和它們跟內存的通訊速度會嚴重約束計算機的整體速度。 -加州老李- 給 加州老李 發送悄悄話 加州老李 的博客首頁 (0 bytes) () 10/26/2011 postreply 20:06:00

我原來公司專門設計一個主板,調配CPU通訊和負荷,速度超快,TB級別 -kdkboy- 給 kdkboy 發送悄悄話 (0 bytes) () 10/27/2011 postreply 21:56:38

那也比core之間通訊慢 -old_taoist- 給 old_taoist 發送悄悄話 (0 bytes) () 10/29/2011 postreply 12:05:34

軟件是按每個cpu插座收費的 -old_taoist- 給 old_taoist 發送悄悄話 (0 bytes) () 10/29/2011 postreply 12:06:36

請您先登陸,再發跟帖!

發現Adblock插件

如要繼續瀏覽
請支持本站 請務必在本站關閉/移除任何Adblock

關閉Adblock後 請點擊

請參考如何關閉Adblock/Adblock plus

安裝Adblock plus用戶請點擊瀏覽器圖標
選擇“Disable on www.wenxuecity.com”

安裝Adblock用戶請點擊圖標
選擇“don't run on pages on this domain”