[迷思] 多核心有這麼好嗎?

多核心有沒有用? 當然有用! 但是多核心值不值得是另一回事.
理想的狀態下, 一個工作可以由多個核心共同完成, 那效能就會跟核心數成正比.
問題是這樣的工作(程式)是有限制的! 必需無相依性(或低相依性),也就是在A工作
沒做完時,B工作能不能做.

例如我要判斷 C是不是大於等於A+B. 那工作的順序是:
1.算出A+B的結果
2.C有沒有大於等於第一步算出來的結果.
這種就是無法平行運算的東西, 必需按照順序來才行.

假如我有一個程式是寫這樣:
C=A+B
D=E+F
這種就可以做平行運算, 兩個算式可以同時丟給兩個處理單元作運算,時間只要一半!!

但是如果是這樣的情形:
C=A+B
D=C+E
這又不能做平行運算了, 因為在C的結果不知道之前, D是沒辦法算出來的.

問題是, 我們寫程式, 都是很多種方法混用, 沒有辦法保證一定可以用平行處理的算法
來寫程式. 所以, 真正能發揮多核心好處的程式, 大多是像影像,3D運算(非遊戲類),科學
運算類等等,可以分散成很多不相關的小程式,或是很多個做同樣事小程式,就可以做到同
時計算結果, 發揮多核心最大的效果.

舉個例子, 像轉影片檔. 這是同樣一段程式執行很多個來同時進行運算. 例如我有個影片
檔要轉檔, 某一張影像有:
ABCDEFGH....
這幾個圖素要輸出, 這時候會有同一段程式,但是一個程式(process)負責算A點,一個負
責算B點, 依此類推, 這個工作是無相依性,一個圖點算一次, 又不影響後面的結果. 所以
就可以給多個核心同時做計算, 8核CPU就可以一次同時進行8個圖素的轉檔計算的工作
,效能當然是成倍數成長的. Photoshop某些濾鏡也是像這樣的情形. 重點是在於, 工作的
過程可不可以被拆成很多獨立的工作來同時做. 這個在寫程式上是有難度的. 也不是每
種程式都做得到.

至於什麼多核CPU可以讓不同核心同時執行不同程式, 以前單核CPU也可以啊?!就算我一邊
上網一邊MSN一邊聽MP3, CPU也沒有滿載不是嗎? 好, 假設我今天是單核執行很多程式,
CPU佔用50%,但是我換成雙核就變成各25%(事實上不會那麼平衡), 那又如何? 只要大家都
正常工作不影響效率, 那單核跟多核沒什麼不一樣. 除非有人常跑會很吃重CPU的程式,又
要一邊做別的事,不過也不是大部份人會需要的.

雖然講多核CPU對一般沒有特別用途的使用者(包括玩電腦遊戲)來說沒有很大差別,但是
有時候簡單的算數是一般人拿來判斷物品價值的方法(當然也常被利用拿來讓大家多花
不必要的錢), 例如4比2好, 2比1好. 我以前花三萬買一台單核的PC, 現在花三萬, 就
可以有雙核了耶~ 事實上如果一般用途上也許買單核的就好了, 可能兩萬五就有了,做
CPU的哪有那麼笨叫你買C/P值好的東西? 當然是能用一些手段讓大家買貴一點的東西!
有時候也不用想太多,反正平常每次換電腦大概都是三萬左右, 那性能上有些提昇(雖然
可能用不太到)也就算了.但是如果原來都花三萬買電腦的人, 原來會買到雙核CPU,可能
只是因為看起來四核比較好而多花幾千塊買四核, 那就不值得了.
與失敗為伍者,天天靠盃都是別人的錯。 與成功為伍者,天天跟失敗切磋直到不再出錯。

clarklee wrote:
single line又如何?

同時跑10個軟體..單核會比雙核快嗎?

假如不會..雙核就有其價值了不是嗎....


可以分成兩個情況來看.
假設一個軟體要吃掉20%的CPU效能, 那10個程式就要200%的CPU效能,
這時候雙核CPU會比單核快上不少.(實際上不會快兩倍,能有1.5倍以上就不錯了)

假設這10個程式每個平均都吃不到10%的CPU效能, 那單核跟雙核是差不多的.

不幸的是, 一般使用者會出現的是第二種情形, 執行很多個軟體但是都不太佔
CPU(尤其是現在CPU又更快了)....

有沒有價值要看用在什麼地方, 假如我是常常做影片轉檔的人, 愈多核CPU當然
愈好! 只是上上網, 打打遊戲, 抓抓東西, 講真的不會有很大的差別.
與失敗為伍者,天天靠盃都是別人的錯。 與成功為伍者,天天跟失敗切磋直到不再出錯。

多核心好不好?以目前的大環境來說,雙核心是比單核心好,四核心還不夠實用。

因為大多數程式只能使用一個核心執行,所以核心的效能決定了程式的運作速度,這表示單純運作一個
程式的時候,雙核心閒置了一個核心而四核心閒置了三個。

不過事實上背景還是會有很多程式在運作,單核心必須分身去處理這些作業,效能自然就受到影響。而
雙核心可以用閒置的核心去應付,四核心當然就更是遊刃有餘...

問題在,如果一個閒置的核心就能應付這些背景作業,那另外兩個閒置核心的存在意義是?沒有。

如果背景作業的負載可以用上三個核心,那麼I/O的部分是否會產生瓶頸?資源是不是夠用?或者說你
是不是根本就應該另外找一台電腦專門來跑這些背景作業?


所以說如果一個程式只能用一個核心,那雙核心還是最實用的,因為你不可能不跑背景作業嘛:P
bluesystem wrote:
假設這10個程式每個平均都吃不到10%的CPU效能, 那單核跟雙核是差不多的.

雙核還是會比較快,因為CPU process切換的代價非常高,雙核可以減少一半的process切換成本。

您前面提到的C=A+B問題,通常跟多核沒有關係,而是跟pipeline有關,以3級pipeline而言,
FETCH, DECODE, EXECUTE,跟前指令的運算元為獨立時(如您所說的例子),在第一道FETCH
完成後(DECODE時)就可以進行第二道FETCH。

而影像處理的多工方面是由SIMD (Single Instruction, Multiple Data)完成,大家最常聽過的就是
Intel MMX,MMX的64-bit暫存器可同時存放並執行8個8-bit資料,以8-bit深度的圖形來說,一次
就可進行8個pixel的運算,後來的SSE和SSE2也是一樣的概念。

那多核用在哪裡? 就是前頭提的process。10個程式若都非常忙碌,多核的能力在此就能得以發揮,
事實上,您現在上的網站,同時要能handle數千人上網瀏覽網頁,單核和多核的最大服務人數就一定
有明顯的差別。
isamuplus wrote:
問題在,如果一個閒置的核心就能應付這些背景作業,那另外兩個閒置核心的存在意義是?沒有。

若是負載滿載的伺服器,多一核是一核...
audiofan wrote:
背景程式可不只一個啊,若是負載滿載的伺服器,多一核是一核...


借問
在採買server 不知是雙核的xeon X5130 2.0G(1333) 雙cpu好呢
還是四核的 xeon E5310 1.6G(1066) 雙cpu 好呢?
多核心與多工及平行處理的關係, 要講是一堆術語,
簡單來說, 多核心可以拿來作多工或平行處理, 但平行處理與程式設計有非常大的關係
也就是說某程式沒有專門用平行處理的方式來寫的話, 多核心也沒用,
但多工就不一樣了, 最簡單的例子就是小弟上班時喜歡轉大量的影片檔,
每次在轉檔時將近要6個小時, 而在這段期間, 公事上要用的 PHOTOIMPACT及FRONTPAGE可以說是慢到不行,
嚴重影響到我正常的工作。
自從電腦換成雙核心後, 轉檔還是需要5.5~6個小時, 並沒有變快, 但是卻完全不會影響到其它我正常的工作軟體,
這就是換雙核心的好處了。
--- 簽名? 還沒想到!
cityhunter wrote:
借問 在採買serv...(恕刪)


當然買4 顆CPU 的了....
越多顆越好了... 當然了RAM 越大更好....

RUN 過64顆RISC CPU 系統就知道多顆CPU 的好處了....
==好APP與好朋友分享==
jjoy wrote:
多核心與多工及平行處...(恕刪)


同意+1

電腦不是只有執行一個軟體..
當前的雙核心因為軟體支援的關係,很少可以把一個工作拆成兩份給兩個核心用。
但是大部分的電腦都會開個MSN掛著、WMP聽音樂、BT下載、然後瀏覽器瀏覽文章...
邊轉檔邊上網看文章而不會產生LAG,軟體支不支援雙核心?管它的,至少我現在就是邊轉檔邊打這篇文章的。
越多當然越好
當我開啟
MAIL SERVER
DNS SERVER
WEB SERVER
FTP SERVER
AD
再外加的
MSN
YAHOO
驢子

我的PF使用量爆到1.5G

電腦..開機...慢Orz

這時心想..有多核心的話該有多好
我還在用p4 2.8HT
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 16)

今日熱門文章 網友點擊推薦!