• 6

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

it6168 wrote:
如果99.9%的ap...(恕刪)

不過通常手機並不會只開一個app,很多手機沒有在清內存時 line fb 遊覽器 或其他哩哩摳摳的主要手機app等等 都占著茅坑,多核的價值就在這邊.
就是因為有哩哩扣扣的app 在, 所以才覺得要雙核.一核跑這些app. 另一核跑大型的.

只是我不知道android 或程式會不會這樣分配. 搞不好其實就是全部混在一起跑.

不應該只討論核心數量,要討論手機軟體跟硬體方面對多核心的支援多不多

以下列出我認為Android手機多核心有支援的地方:

1. Android本身有做過多核心優化的功能,像是Android支援的tread pool,就算APP開發者沒有用到,系統也會用的到,另外像是系統的Activity Manager, Telephony Manager都是同時跑在不同執行緒上,所以理論上越多核心,Android也跑得越順,只是一般使用下差異可能不大。

2. 也有人講到Java VM 所做的多核心優化,或許載入程式、執行程式的速度也會有差 (這方面我不確定)

3. 更下層的一些Library,是否支援multiple process

4. 播放檔案或是圖片時Decoder, Encoder 編碼的部分會比較明顯受到多核心的影響,理論上運算量越大,多核心越有效率 (原理上面有人講過了)

所以只要手機一跑起來,不管寫的APP是不是有寫成多執行緒,就已經在利用多核心的好處了,只是利用的程度有限,每一支經過客制化的Android手機優化的程度也不一樣,不過確定的是:

1. 核心數加倍, 效能不會加倍

2. 如果某些APP已經可以在雙核心上執行得很順,那四核心、八核心肯定不會有太大差別

3. 多核心的優化不見得在軟體,像是晶片廠所出的四核心、八核心CPU都會對他相關的晶片做最佳化,像是提升影音運算的效率,所以MediaTek的八核心才會強調他運算H.264的效能還有功耗比其他家好、重點是更省電

4. 當我們對手機的拍照、錄影畫質、撥放畫質的要求提升,多核心的重要性就更大

5. 當你開的背景常駐程式越多(像是Line,wechat聊天程式),多核心就越重要

6. RAM不夠的情況,核心再多再快都沒用


以上只是我不負責任的個人見解, 有錯請見諒,下台一鞠躬






it6168 wrote:
一直好奇一件事, 在...(恕刪)
it6168 wrote:
大家別太認真.

我覺得CPU 和公司運作很像.

程式就像公司的 process.業務,研發,製造,財務,行政, 採購, 大家各司其職又互相關聯.

在這裏製造就很像GPU. 重複做大量的事.

在製造之前的那些單位呢, 越強大的單一組織比較有效. 而製造呢, 越多條產線, 產能越大.

不過因為我在意的是速度. 而不是多核心或多執行緒是否能被執行, 所以VM 並沒有回答我的疑問.

我想知道,跑單一程式, 到底是intel 和apple A7 的雙核快, 還是quacomm,mtk,navidia,rockchip 這些強調多核的CPU 快.



...(恕刪)

如果這程式只吃雙核
你給他16核也沒有幫助
因為他就只吃下雙核

除非今天是像電腦要轉檔之類
或者看4k影片、同時多開在螢幕上
不然就是打遊戲⋯多核優勢才比較有

但手機不用轉檔
也很少人會想在4、5吋上看4k影片
連續看兩小時虐待自己眼睛
也不會在小螢幕開多開
更不用說頂極PC game頂多才吃4核

所以手機用八核?根本噱頭騙外行
就算是目前的四核,論單核效能也低落
還外加耗電⋯

所以目前而言雙核在手機上夠用
但前提是效能夠強⋯
看amd與intel之爭
就知道多核的優缺點
會發展多核就是amd單核效能低落
靠多核心來彌補
優點就是便宜、缺點是耗電
但遇到吃重單核效能的程式
多核完全沒有用

it6168 wrote:
我想知道,跑單一程式, 到底是intel 和apple A7 的雙核快, 還是quacomm,mtk,navidia,rockchip 這些強調多核的CPU 快.

這個不難,跑分程式都會充份利用多核心,用同一個跑分程式分別跑一跑就知道了。
跑分程式畢竟不是一般使用的程式, 看版上大家回的, 大部份程式並不像跑分程式這樣儘量的用多核.
同一個程式多半還是只用到一顆核心吧.

不過有趣的是, 雖然有人說多核解影片或是3D比較快. 可是以zenfone 為例, 3D mark 分數反而比多核的來的高.
不否認強調有幾核心或是跑分都是好看的,手機用的順不順才是重點,

下面的影片是在Infocus版有人貼出來分享的,只是想問一下,影片最後真實賽車3好像很卡的樣子,
小弟之前用NEXUS7一代玩這遊戲也沒有這麼卡啊,是貼影片的人在設定上出了什麼問題嗎?

ZenFone 5跑遊戲的影片
https://www.youtube.com/watch?v=dMXUidZgnuA

Simon_shih wrote:
亂七八糟的討論串, 很多講法都是錯的.

1. android 3.0 以後支援多核心, 是系統支援不是程式支援.
2. android 程式跑在支援多核心的VM上, 所以不管你的程式有沒有寫成多執行序, 作業系統都可以用多核心同時跑, 並不是程式開發者的問題.
3. 有些人不懂VM. 簡單這麼說吧, 你不能直接存取電腦的硬體, 不能叫CPU1做這做, CPU3做這個, 因為VM的關係Android才能同時支持不同的硬體(intel/ARM) 或是不同數量的核心.
4. 絶大部份的遊戲都支援非同步多執行序.像你在angry bird看到的一支鳥, 一支豬, 一個箱子, 都是一支執行序.


這討論串

看到這裡為止,這個回應最正確

因我本身是軟體工程師(目前主攻Android & iOS app)

很多人都把軟體執行緒跟硬體HT & CPU多核心混在一起胡謅

是否多核心跑(OS開放情形下)

取決于核心指令特性,與OS(VM)的核心排程,不是寫app的程式設計師決定的

Phil Chen
若是VM 在控制.

那是一顆二執行緒的核心快, 還是二顆單執行緒的核心快呢?
Phil Chen wrote:
是否多核心跑(OS開放情形下)

取決于核心指令特性,與OS(VM)的核心排程,不是寫app的程式設計師決定的

當然是由寫app的程式設計師決定的。為了怕雞同鴨講,把問題說清楚些。

1. 假如app只有單一執行緒,仍可享受多核心的好處。因為別的程式和作業系統跟這個程式搶核心的機會降低了。

2. Java程式(Android app的開發語言)本身就有多緒功能。程式設計師即使沒寫出多執行緒指令,這個app仍有可能同時用到多核心。例如Java的資源回收器可以在另一執行緒作業,減少搶核心的機會。又如某些系統呼叫裡面可能會變多緒執行,可以利用多核心。

但以上兩點對單一程式加速的好處很有限。例如第1點,如果跑app時系統沒有跑其它程式,本來就不會有人搶核心,多核的好處就機乎沒有了。
又如第2點,資源回收器並不經常忙碌;系統內建的功能如有多緒功能,大多是為了不卡住UI,而不是為了要加速的。
對於app真正要做的事,例如壓縮影片、處理圖片等,如果程式設計師沒有自行做出多緒設計,這個app在多核的機器跑比起在單核跑並不會有明顯的加速效果。因為它的工作在同一時間上,只在單一核心做。其它核心只偶爾幫忙收一下垃圾,都在納涼。

以上2點,雖然實際上是利用到了多核心,但我不認為那算app跑多核心。所以我會說,app要跑多核心,仍是由程式設計師決定的。
  • 6
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?