為什麼現在手機SoC核心數量比電腦還要多

ADVERTISEMENT

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

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

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

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

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

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

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

但是手持智慧裝置的單核不可以“一味地”追求高頻,它小巧,它隨身攜帶,它要考慮發熱,要考慮電池的容量。

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

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

2 單核發展遇到瓶頸

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

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

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

ADVERTISEMENT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ADVERTISEMENT

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

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

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

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

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

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

2)現今的系統,包括Android等手持裝置的系統預設任務數量已經非常多,具體數量會有差異。稍微看了下MX3,有100+,實際執行緒數隻會更多。

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

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

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

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

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

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

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

ADVERTISEMENT

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

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

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核分別滿足不同場景需求,比如說線上瀏覽和小型遊戲等日常應用場景可以降到最低檔,而中型遊戲可以跑中檔,確實負載小的時候還可以切回最低檔;而系統啟動等場景,由於可以多核全開,那麼啟動速度可以預想應該會提升不少。

A53在魅藍note上的精彩表現已經證明瞭A53的能效設計優勢,而A72作為ARM的下一代High Performance CPU,效能提升是可以預見的。我們可以預想Helio這款U的能效與效能應該可以做到更好的平衡,期待有更精彩的表現,對於續航、溫控與互動體驗或許都會有提升。(A72的指標資料的時間背景為2015年。)

不過,對於低端一些的機型,如果多核的價值不能得到充分發揮,出於成本的原因,或許會迴歸4 ~ 6個核心,比如3 + 2或者4 + 1或者2 + 2,如果1~2個big核採用A72,那麼綜合的效能和能效表現或許會更好。

» IT之家

ADVERTISEMENT