search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

科普貼:你知道為什麼手機的CPU核心比電腦還多嗎?

需要注意的是,如果我說說的「電腦」不單指 PC(個人電腦),那問題本身都是不成立的,用於超算的大型計算機的核心數目更會驚人。另外,如果算上 GPU(圖形處理器),這個問題也可能不成立。

所以問題暫且設定為:手機的 CPU 與 PC (個人電腦)的 CPU 的核心對比吧。

為什麼手機核心數目提升的比計算機快?

結論:兩個領域有非常不同的需求,其中關鍵的影響因素是「發熱」和「功耗」。

1 PC 可以不在意發熱與功耗,但手機不可以

PC 可以一味地追求高主頻,高單核性能,因為它可以安裝風扇或者安裝很大塊的散熱裝置,可以直接接入家用能源。

當然,雖然 PC 的性能往上漲的空間可以更高,但是這個「一味地」也是有限制的,所以 PC 在更早以前就在嘗試多核了。

但是手持智能設備的單核不可以「一味地」追求高頻,它小巧,它隨身攜帶,它要考慮發熱,要考慮電池的容量。

所以,智能終端的 SOC 在設計的時候必須在兼顧溫控與能耗的情況下。這註定智能終端的 SOC 要走 PC 的多核化老路,並且做更多樣化的嘗試。

就是因為這種差異,導致手持設備 SOC 的設計廠商在做各種架構,技術與工藝的嘗試。

2 單核發展遇到瓶頸

好了,那單核的性能努力如何呢?從當前市場上在售的來看:

Cortex-A57 是 ARM 最先進、性能最高的應用處理器,號稱可在同樣的功耗水平下達到當今頂級智能手機性能的三倍;

而 Cortex-A53 是世界上能效最高、面積最小的64位處理器,同等性能下能效是當今高端智能手機的三倍。

這兩款處理器還可整合為 ARM big.LITTLE(大小核心伴侶)處理器架構,根據運算需求在兩者間進行切換,以結合高性能與高功耗效率的特點,兩個處理器是獨立運作的。

而聯發科的 Helio X20 的大核 A72 可以到 2.5Ghz。(A57 / A72 的指標數據的時間背景為 2015 年 。)

但單核在主頻上去以後,要求的電壓更高,發熱嚴重,而隨著發熱量的增加,漏電率又會增加,會進一步增加能耗與發熱。

即便有相應的技術改進如 HPM 以及最新的 FinFet,讓漏電率下降不少,還有一些晶圓分類和標記技術,以及各種類型資源的 DVFS 支持去降低電壓。

但功耗和發熱還是會影響手持設備的兩個重要體驗,即續航與溫控。

所以即便單核的性能過於強勁,發熱的劇增會導致處理器持續高頻不了多久。

因為人體的溫度是恆定的 37 度,如果人體接觸的物體溫度,溫一點,42~43 度,再熱一點 45~47 度,再就燙起來了。

再加上主板的散熱結構已經阻止了固定工藝和技術下的性能成長空間,也限制了高頻核心的高性能的應用。

同時手持設備的結構空間限制,又限制了散熱技術的應用,這個是 PC 和伺服器根本就不存在的問題。

既然往上漲不了了(實際上還有技術和成本制約),那是不是可以橫著漲呢?

3 手機多核為用戶提供更好的體驗

好了,嘗試多核,而多核又有同構多核,異構多核,有真多核還有偽多核。

到這個份上,咱們就可以得到一個初步的結論,多核完全是為了迎合消費者,不是為了迎合而迎合,而是為了給用戶更好的體驗。

(以下內容高能,請提前準備好博士學位證書)

為什麼會提供更好的體驗?

隨著主頻的提升,單核的工作能耗會隨著指數級上升,相應的熱量聚集也會更高。

換算到同等計算能力(單位時間內可執行的指令數)的多核,能耗上升呈線性關係,熱量聚集會明顯降低。

具體量化起來,得畫個圖表,把頻率,核數和能耗關係繪製出來,這裡先省掉。

先來介紹一下這種換算的實際場景限制:

1)對於遠古時代的單一任務系統,多核是沒有意義的。任務的工作量沒有辦法分派給其他核心執行。并行不起來。

2)現今的系統,包括 Android 等手持設備的系統默認任務數量已經非常多,具體數量會有差異。稍微看了下 MX3,有100+,實際線程數只會更多。

3)多核相比單核,無用的任務 Context Switch 會減少,能耗利用率會提高,任務的響應能力(最高頻率滿足條件下)也相應會增加。

甚至對於一些關鍵的任務,可以通過獨佔某一個核心獲得最好的響應能力。

那核數是不是越多越好呢?是不是 100 個任務就開 100 個核呢?

肯定不是,首先有硬體成本(晶體管個數會成倍增加)的限制;

其次,核數多了以後,負載均衡,任務遷移,甚至任務同步也是很大一筆開銷;

再者,並不是所有的任務都是大任務(CPU 緊密型,典型的例子是 Android 升級包的 AES 解密演算法),實際上是大部分任務都是輕任務(典型的例子是很多內核線程,比如 watchdog),輕任務完全可以通過單核分時調度,未來的 Linux 還支持 package 多個小任務到一塊;

還有一個是,蠻多應用在開發之初未能採用多任務設計,無法充分利用多核。

那到底應該設計成多少個核呢?不同的核如何分配呢?大小核還是異構多核?

核心數的上限應該取決於實際的應用情況:

1)單個應用的設計情況,暫時手頭沒有詳細的不同應用的線程數數據,綜合其他渠道的一些數據,大型遊戲通常會是使用多任務的典型場景。

2)多個應用同時工作的情況,以及前後台同時工作,系統啟動,系統休眠后喚醒等場景,例如後台下載,聽音樂,前台瀏覽網頁。

3)未來應用場景,比如說分屏與多窗口,多個前台應用同時工作等。

具體的核心數利用情況,手頭沒有大數據,暫時不給確切的結論。

後面找個時間寫個腳本觀察下自己一天的使用情況,把日常應用都跑一遍,統計下真實的核心利用率,根據部分實驗結果預計部分場景可以到 5~8 個,也有部分可以比較充分地利用 3~4 個,而有一部分用到 1~2 就夠了。

但是目前最多的手機核數已經到 8 核,包括同構與大小核(big.LITTLE)。

同構多核的 8 個核是對等的,所以考慮的場景更多應該是 8 個核同時利用的情況,這個情況應該是非常少數的,比如系統啟動,前後台多個大型任務同時工作,以及未來潛在的分屏或者多窗口,再一個是 Benchmark(你懂得)。

而大小核(4+4)的這種情況則不一樣,這相當於搞了兩個檔位,一個高檔位是 High Performance 的 U,一個低檔位是 High Efficiency 的 U,這個可以針對不同應用場景進行靈活組合,並不需要多個核一定要完全跑起來,比如說:

1)很多小型遊戲,比如說玩過的一個漂流遊戲,三個小核跑起來很節能也很順暢,但是 2 個就不夠,第三個線程無法并行。

2)比如說應用啟動與 ListView,可以立即遷移到大核上,保留1~2個小核跑其他的小任務,Boost 1~2 秒后,交互完工後再回到小核。

3)而開機以及前後台等場景則可以突發把所有核心都開起來,做到快速開機。

這樣大小核兼顧了手持設備的續航和溫控體驗,這裡的多核並不僅僅是需要多個核心同時跑起來,而是可以有多個不同的檔位選擇適應不同的場景。

至於 MTK 未來的 4 + 4 + 2 架構(Helio X20)則更多是對當前大小核的一個補充,相當於多引入了一個檔位,這個對於平衡能耗與性能是非常不錯的嘗試。

相比於之前簡單的調頻來調節檔位,這個切換不同架構的 U (low energy v.s. high performance)的檔位能更好地體現能效與性能的差異(蠻像汽車的檔位哈),謀求不同場景的應用需求。

A72 的引入必然會全面提升交互場景以及超大型遊戲的應用體驗,讓交互延遲進一步下降。

而兩個低檔位的不同頻率(工藝方面暫時不確定是否有差異?)的 A53 則可以進一步突破 MT6752 的同構 8 核架構,讓兩對 4 核分別滿足不同場景需求,比如說在線瀏覽和小型遊戲等日常應用場景可以降到最低檔,而中型遊戲可以跑中檔,確實負載小的時候還可以切回最低檔;而系統啟動等場景,由於可以多核全開,那麼啟動速度可以預想應該會提升不少



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦