一個程式, 會同時使用多個核心嗎? why Intel?

it6168 wrote:
跑分程式畢竟不是一般...(恕刪)

你可以這樣理解:
如果app設計良好像跑分程式一樣,它就能發揮全部多核的功能。雖然大部份的程式不能達到這樣的效果,但大型且又耗時的app應該是要能做到接近跑分程式的效果。

當然了,你想的並沒錯。如果某雙核機器的跑分與某8核機器跑分一樣。那麼在大多數應用會是雙核機比8核機快。8核機只有在少數app能與雙核機一樣快,而比雙核快是絕無可能。
所以強大的二核心, 其實比八顆弱小的核心, 在日常的使用更順暢嘍.

另外一個問題是搭配記憶體的問題, 因為都是共用記憶體, 單一核心抓資料比較快, 還是多核心抓資料比較快呢?


it6168 wrote:
所以強大的二核心, ...(恕刪)

你知道人體的神經元傳導速度慢於目前電腦的速度,但完成神經傳導動作卻是快於電腦所做的神經元,最大的差異就是可同步多神經元處理,所以多核還是有優點尤其在多視窗下,只要記憶體夠,這就是多核優勢。
我沒有寫 app,不過不管 ios 或 android,都是類 unix 的東西,跑起來原理應該差不多,很大的差異應該就在排程器 (scheduler) 的不同。

然後,一個程式可以是多線程 (multi-processes) 或者多執行序 (multi-threads),或者單線程但是多執行序,或者多線程也多執行序,當然也有單線程、單執行序。

但無論如何,一個 process 或者一個 thread,不會從頭到尾都占用同一個 CPU,大概是要用到 CPU 的時候,要透過 scheduler 安排,兩個 CPU (可能是真的兩個,或者雙核心) 會跑得比四個快嗎?

假設你兩個核心剛好都被 block,那時候有第三個核心,速度當然就比較快了,等到 ios 真多工的時候,兩個核心同時被 block 的機會應該就多很多。

以下是一個例子,同一個 PID 的東西,每次跑都用到不同的 CPU,那個 7、0、4 就是用到的 CPU:


root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
90750 nobody 1 20 0 429M 40996K accept 7 0:13 0.98% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 20 0 429M 40996K accept 0 0:13 1.56% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 21 0 429M 40996K accept 4 0:13 1.95% php-fpm


不考慮太多變數的話,多 CPU (多核心) 當然會跑比較快,就像電影院的售票口,一般的狀況下,開 4 個當然就比只開 2 個快。
問題就出在手機用途少多工. CPU 二核剛剛好, 反而是GPU核心該多一些
ken73chen wrote:
我沒有寫 app,不過不管 ios 或 android,都是類 unix 的東西,跑起來原理應該差不多,很大的差異應該就在排程器 (scheduler) 的不同。

然後,一個程式可以是多線程 (multi-processes) 或者多執行序 (multi-threads),或者單線程但是多執行序,或者多線程也多執行序,當然也有單線程、單執行序。

但無論如何,一個 process 或者一個 thread,不會從頭到尾都占用同一個 CPU,大概是要用到 CPU 的時候,要透過 scheduler 安排,兩個 CPU (可能是真的兩個,或者雙核心) 會跑得比四個快嗎?

假設你兩個核心剛好都被 block,那時候有第三個核心,速度當然就比較快了,等到 ios 真多工的時候,兩個核心同時被 block 的機會應該就多很多。

以下是一個例子,同一個 PID 的東西,每次跑都用到不同的 CPU,那個 7、0、4 就是用到的 CPU:


root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
90750 nobody 1 20 0 429M 40996K accept 7 0:13 0.98% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 20 0 429M 40996K accept 0 0:13 1.56% php-fpm
root@xxxx:/usr/home/kenchen # top -b -Unobody | grep 90750
90750 nobody 1 21 0 429M 40996K accept 4 0:13 1.95% php-fpm


不考慮太多變數的話,多 CPU (多核心) 當然會跑比較快,就像電影院的售票口,一般的狀況下,開 4 個當然就比只開 2 個快。...(恕刪)

其實不用想太多⋯看電腦就知道
沒有幾個程式需要多核
對一般人而言
只有打遊戲才會用到多核
何況是小小螢幕的手機⋯

而且看intel amd也知道多核不是最重要
Amd被intel電翻了⋯
多年來都是intel雙核電amd四核
Intel四核又電amd八核

所以多核在目前手機上沒什麼用
而且特別是爛爛的多核
更沒有太多效益
ZF選用Intel雙核CPU(虛擬四核)搭配高效能的GPU
我覺得是非常聰明而且有良心的

簡單的說, 手機縱使有多個背景程式在執行,
但多半都不會是持續使用CPU
除非你喜歡拿手機來轉檔那另當別論
否則大多數的時候, 2~3核就很夠用

了不起就邊聽音樂邊上網, 背景正在下載程式
就算同時安裝了FB messenger, whatsapp, skype, line..
這些軟體也不會100%佔用CPU資源

Atom雙核虛擬四核, 就跟桌機的超執行緒一樣
能讓單核CPU多出30%左右的效能
剛好能應付一些低CPU用量的背景程序

而3D遊戲的畫質與速度取決於GPU的效能
拿ZF5跟紅米note來比
前者安兔兔總分雖然22000, 看似比紅米note 26000低
但ZF5的浮點運算, 記憶體速度, 以及GPU都比note高
也就是說實際上的操作感覺, 尤其是遊戲,
單核心時脈2.0G的ZF5會大勝

也許真少有數使用者喜歡同時讓七八個程式同時執行
但我相信這個時候的瓶頸會是記憶卡的讀寫速度
就跟PC一樣.

YUN12345 wrote:
其實不用想太多⋯看電...(恕刪)




不是只有遊戲需要多核呢!瞧瞧,Windows 的應用程式,多半都已經是多執行序的了,
ken73chen wrote:
Windows 的應用程式,多半都已經是多執行序的了


程式有多執行序是發揮多核心優勢的必要條件但不是充份條件。
例如一個程式的UI有一個執行緒,忙著運算時是在另一個執行序。此時只有運算的那個執行緒很忙,而UI那個多半在納涼。這對整體運算速度沒有幫助,只是給使用者的體驗比較好而已。此時有單核心或雙核心對使用者而言幾乎是無感的。
以手機跟pc比,最大的不同是即時性。如果想讓手機在接到電話就馬上做出反應,多核會比較佔優勢,比較容易騰出cpu即時處理(多工)。至於玩遊戲跟ui順不順其實看ram頻寬跟gpu就對了!多不多核心應該還好,至於八核心是真的有點多。

文章分享
評分
評分
複製連結

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