• 16

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

單核再怎麼快,在CPU使用率100%的情況下,
再開別的程式都是慢。

但雙核以上就不是了,軟體不支援多核沒關係,
頂多其中一核使用率100%,另一核還可做其他事。
(XP的系統是可使用雙核的)

雙核會普及那麼快,就是他可避開CPU使用率100%時,無法順暢再做另一件事的老問題。

除非電腦一次只想做一項工作,
不然想邊轉檔(重度工作)邊MSN、上網,
還是用雙核較好。
突然想到一個情況
同一個線上遊戲 同時間開多個角色上線(獨立視窗)
因為是同一個程式那會不會還是都擠在一個CPU上運算
還是說系統一樣會把他分散到所有閒置的CPU上
雙核就已經很方便了 又有時候我用火狐看小說 一次全開
一個核心就跑滿50% 火狐就沒反應了
但是這時候 雙核的好處 我有另一顆核心
我可以在開個mediaplayer聽音樂
在多開個msn 在開個ie 收收信 上其他的網 我不用等待

或者我在解壓縮時 還是能順暢的上msn聽音樂上網
多核真的比較方便
還會懷疑雙核效能的,大概是還沒換用雙核。

不談理論的,就談實際用起來的情況,雙核頻率也許不高,但是實際用起來比單核快多了。

雖然windows有多工,但是用單核應該都知道,windows正忙於一項工作時,最好不要再開另一項工作,否則會加倍的慢。最好是一項工作處理完再執行一項。

而雙核,舉實例好了。我今天用photoshop處理大圖,要好幾分鐘,photoshop這個程式幾乎忙到當掉無回應,但是我開explore看網頁,卻還是一樣暢快,因為開ie是用另一個核心。瀏覽網頁一會後,回去photoshop看,圖已經處理好了。

若是已往的單核,在photoshop已佔掉所有cpu資源時,還去開啟另一個程式,那麼二個程式都會加倍的慢。但是雙核就運作得順暢且快速多了。

就算不是跑多個程式好了,感覺雙核也比單核順暢不少。因為windows本身就經常處在多工之中,多一個cpu就好像多一個幫手一樣!
其實可以這樣說
系統核心會影響整體效能的因素主要是排程跟資源管理
多核系統在系統排程上會比較花時間
但也由於多核,所以可以達成實體上的同步執行,這是單核做不到的
理論上只要資源不相衝突
在多核上同時運作的程式可以不受彼此的干擾
這也是為何多核系統可以提高系統負載的能力 --> 實體平行度變高

但是核心變多不代表效能就一定變好
這牽扯剛剛所提到的平行度問題
甚至由於多核系統下系統核心的運作干擾變多
單一程式的執行能力可能還因此下降

另外一點
由於核心有多個,也避免了單一核心deadlock的情況
所以當機的機率慮就相對少一點
至少目前我用更新後的XP還沒發生過死當的情況....
cityhunter wrote:
借問 在採買serv...(恕刪)

採購只會說 費用低的較好
雙核其實也快不了多少...
主要要看OS怎麼分配...
例如有一個事件1要處理...
OS只會丟到核心1...
那核心2呢???在閒置...
他不會幫忙處理...
這樣看來一樣是單核心...
並不會一件事由2個核心同時處理...
而達到更快的速度...
但多了一個事件2呢...
OS會丟給核心2...
讓2個核心同時處理2件事...
如果核心1處理事件1需要10分鐘...
核心2處理事件2需要20分鐘...

傳統單核心會先處理事件1再處理事件2...
總共會是30分鐘...
(實際上會處理事件1處理一半又處理事件2...切來切去...所以很慢...時間會超過30分鐘...)
雙核心會同時處理2個事件...所以最多也20分鐘就處理完了...
如果OS能寫到能把閒置的核心同時幫忙處理另一個核心的事件...
會變成核心心處理事件1處理完又幫核心2處理一半的時間...
也就是核心1處理事件1需10分鐘...又處理事件2 5分鐘...
核心2處理事件2只需15分鐘...
整體快了5分鐘...
這樣子是不是快了許多...
問題是...現在OS還無法做到這樣子...
因為核心1永遠不會知道核心2處理到哪裡...
核心2也不知事情要處理多久要如何把一半的時間給核心1處理...
況且誰有權利去抓取和存取記憶體...這都是問題...

所以目前的雙核心可以看成是2台單核心電腦在處理事情...
只是他是在同一台電腦上做而已...
最大的問題還是卡在OS無法把處理的程序最佳化...
因為這是個很大的難題...

雙核心真的比較快嗎?某種程度上是有...
但某種程度上他也算是單核心...

ANYWAY...單不單雙不雙不重要...
能省電又安靜才是王道...低溫又省電才是現在人比較關切的重點...
因為開24小時...幾乎都在待機中...能省則省...
錢不好賺呀...
不知道是否學過 "計算機組織","作業系統" 及 "多緒程式設計"

其實還是有辦法知道,也都有規則可作,
只是不好做.
不好做,所以支援多核心/多CPU的程式就少.
qpiglarry wrote:
雙核其實也快不了多少...(恕刪)


這樣講有點模糊
OS 並不能直接拆解AP延展平行度
但是如果AP的系統呼叫適當的話
OS還是能合理地分配運算資源

另外,OS也不是單純把程序丟到不同的CPU去做就不管事情了
有一種技術叫做「分時多工」
OS會把CPU資源切割許多塊給不同的程序執行用
比如AP1的某項動作需要硬體的DMA配合OS達成
AP1就可能暫時進入等候序列
而這時AP2就能適時介入使用CPU資源
或者交給某個OS內部程序使用
因此各個程序間的執行會有重疊區間
這也是減少的時間的由來....當然也可以看成多程序執行的效率變好了

另外在某些 RTOS 的排程設計上
是有所謂的預先排程技術
配合事先演算規劃...的確是可以完全達到特定時間執行的 hard scheduling
這樣就可以讓各個程序充分地分享利用CPU資源
當然...就一般情況所設計的OS是很難做到的
如果使用者在處理秏資源的程式時(如轉檔),不用電腦做另外的事,
這時單核的高時脈就有利了,會比雙核快完成;

若使用者用秏資源的程式時,又要做其他耗資源的事,
這時雙核的優勢就出現了,能順暢完成多工,
但該秏資源的程式其處理時間就會較長一點。

所以要看使用者偏那一方面,雙方都沒有好到底的優勢。
(軟體限制了一切)
  • 16
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 16)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?