標籤:

如何評價 ARM 的 big.LITTLE 大小核切換技術?

蘋果之前一直雙大核,好像功耗控制也非常好,難道是軟體系統優化等原因?


先說結論:大小核挺好,調度是大小核的衍生,用不好會有問題,但它是免費的,不好可以不用。

看了 @北極的答案,寫的挺好,但是缺乏一點數據支撐。而 @winnie Shao說的也對,只不過拿好幾家用Big.Little來說明它好有點牽強。

為什麼在網上找不到Big.Little的具體功耗數據呢?因為選用不同的核,用不同的工藝,使用不同的signoff條件,設計不同的電源/電壓/頻率域,運行不同的大小核切換軟體(HMP/EAS),使用不同的功耗模型,跑不同的場景,得到的功耗曲線都是不一樣的,沒法一概而論。而這些東西,在流片以前是沒法給出答案的,就算用了模擬環境,也沒法跑複雜的場景,得到準確的答案。

另一方面,如很多人所述,對於安卓手機,大家都做8核,那麼你的4核就算調度的再好,你也賣不上8核的價。市場上的安卓手機晶元就那麼幾個玩家,高通可以自己玩,其他的三星,MTK,海思,展訊,LG,聯芯,RDA,中興,ASR,松果,哪家的市場和管理敢扔開ARM的建議直接自己干?大小核再不好,它在市場和技術上都是經過考驗的,誰敢在模擬都沒法證明它不好的情況下去掉它直接流片?做產品不是拍腦袋,就算技術上不需要,那市場呢?誰敢保證做出來OEM都同意你的觀點?就算OEM都同意,顧客會有什麼反應?這難道是一個普通的手機晶元公司能定的事情?除了蘋果恐怕沒人敢這麼說,這個相信大家都明白。

當然,還有一個例外,就是有低端和超低端手機晶元的,比如MTK,展訊,聯芯和RDA等,為了面積成本考慮,根本就不會有很多電源/電壓/頻率域,由於晶元本身就小,用不到8核,功耗也低,不存在降功耗的需求,這時可以只用單一配置。

再補充一句題外話,ARM自己測出來的場景,最多用到6核,大小核是ARM提的,8核也是ARM提的,但10核確實不是ARM提的,並且ARM的調度軟體都不支持10核,需要用戶自己改。

而要看Big.Little的功耗到底好在哪,我們需要做一堆假設和簡化。假設使用A73MP4/A53MP4,在TSMC16FF+節點,分別跑在2.3Ghz和1.5Ghz(具體Signoff條件我就不寫了),無極調頻。此時軟體,模型和場景先省略,單看獨自跑的時候需要多少電(基於Dhrystone):

A73@2.3G/0.8V需要500mW動態功耗(220mW/Ghz/core)和110mW的靜態功耗(MP4,2MB L2C)

A53@1.5G/0.8V需要100mW動態功耗(63mW/Ghz/core)和7mW的靜態功耗(MP4,1MB L2C)

(這兩組數據來自ARM)

以上是單個核在全速跑的時候的數據,非常明顯,A73需要610mW,而A53隻需要107毫瓦,6倍。

而他們的性能呢?A73的SPEC2KINT是835/Ghz,A53是500/Ghz。乘上頻率,分別是1920和750.

一個任務運行在A53運行,時間比A73多花2.5倍,能量可以少6倍,能效比是3.1/7.

那如果這個任務在低頻 的A73運行呢?假設是1.5G,功率是440mW,性能1252,能效比2.8/7。

不過,降低A73的頻率可以使用更低的0.72V,功耗可以再降20%,能效應該是3.4/7.

再假設A53也降頻,到500Mhz,和2.3Ghz的A73比,能效就變成了3.1/7.5.

基於以上功耗數據,我們可以很明顯看到,A53的能效一直是在A73的2倍以上。不考慮運行時間只考慮能效,所有的任務當然都是給A53比較好。但同時,由於很多程序都是單線程的,為了用戶體驗,還是要放到A73上提高速度。在圖形處理上,如果使用了OpenGL ES,單核CPU性能更重要,會直接成為GPU性能的瓶頸,到最新的 Vulkan才緩解。這兩點放在一起,推動了大小核的產生,雖然電源設計更困難,調度程序更複雜,IP需要買的更多。此外,如果把以上的功耗條件改掉,比如A53跑到極高的頻率(意味著用極高電壓和漏電極高的物理庫,導致漏電成數倍上升),有可能會造成小核的能效低於大核,那又是另外的情況了,並不能說明就該取消小核。

@北極還提到,手機上非跑分情況下的用電大戶不是 cpu,而跑分時調度又沒有必要。這話沒錯,但是也不全對。平時的耗電大戶是屏幕,玩遊戲是 GPU,可是除此之外,所謂的待機功耗大部分都在 CPU和匯流排的靜態功耗。DDR此時大多是關的,基帶也是休眠的。如果我拿 一個A73來做待機核,他的漏電是 A53的十五倍。這樣的晶元到了 OEM會被罵死。這一點,你就是找神仙也沒法幫你優化。再說Vulkan,它使用了CPU多線程,使得以前只能在一個CPU大核跑的GPU驅動可以分散在多核小核。這時候誰用的電更少?調度軟體會幫你決定,而單一大核就沒有這個能力。

有人說那我功耗控制做的更精細些,然後去掉小核。不是不行,但是這需要額外面積和更複雜的軟體,而且上面也說了,做不到小核那樣低的漏電。還有,同樣的優化也可以用在小核。並且,從A73下一代開始,arm可以把調度的單位做到單個核,而不是之前的一個簇。一個到八個核晶元公司完全可以定義八級大小,也可以獨立的改頻率,不存在四核八核十核十二核的概念了。

還有,都是大核難道就不需要切換和合併嗎?也需要,只不過不一定在兩個簇內,可能不需要通過匯流排。而 A73下一代就把這個改進了。

還有人提到了切換的代價,其實切換隻是大小核的附帶功能,而這個代價會越來越小。我就不上數據了。

總之,大小核是個好設計,省了功耗,間接省了面積。之前由於做的不夠精細,導致多餘的核產生,今年出的新設計就會改掉了。


根據ARM的資料,設計big.LTTILE模型的最主要目的就是為了省電,那麼在討論省電的時候,我們具體討論的是什麼?我認為省電的最終目的就是為了讓設備電池使用的時間更長。

使用big.LITTLE模型的可以大幅度(官方聲稱)減少CPU功耗,以達到省電的目的,其中最著名的就是這個圖了:

但我目前找到的各種資料里都沒有給出這個圖Power軸的單位是什麼,這其實很奇怪,因為沒有單位的話,我們很難知道具體省了多少電。

而另外一個關鍵的問題就是:移動設備在使用的過程中CPU究竟佔了整體功耗的多大比例?

這兩個問題不明確的話,實際上就真說不清楚big.LITTLE模型究竟能讓設備使用增加多少,以及帶來多少性能的提升。

沒有在中文網頁里找到一個關於功耗的具體分布,在這個頁面System-level optimisation and its contribution to the decision of problems of power consumption里找到了一圖:

可惜這個鏈接並未給出具體的數據來源和設備類型,但可以看出一點的就是,純CPU功耗在實際設備使用場景中並不是大頭,最高的一項CPU也只佔據了1/4的功耗

可是問題是1/4功耗的場景中,測試類型是計算,這本身就是一個需要用大核來跑任務,在big.LITTLE模型里不屬於省電的狀態。

那麼就算是採用官方聲稱的能節約70%的功耗的數字,實際對設備整體的使用時間延長非常有限

而廠商卻可以拿big.LITTLE做賣點,因為核心數變多了,成本增加了,產品也可以賣的更貴一點。

另外一個重要的問題就是big.LITTLE的任務遷移代價了,這個代價官方是有說明的:

An important consideration of a big.LITTLE system is the time it takes to migrate a task between the Cortex-A15 cluster and the Cortex-A7 cluster. If it takes too long then it may become noticeable to the operating system and the system power may outweigh the benefit of task migration for some time. Therefore, the Cortex-A15-Cortex-A7 system is designed to migrate in less than 20,000-cycles, or 20-microSeconds with processors operating at 1GHz.

也就是說,1GHz主頻下,任務遷移成本大概是20000個周期,約20微秒,看上去任務開銷不大。

但問題是緩存的更新並沒有算在這20微秒里,官方給的圖L2 cache更新機制是這樣的:

在遷移完成以後的一段時間裡,保持小核的cache仍然活動一段時間,此時是大小核同時運行,以功耗換性能,等大核完成cache同步以後再徹底關閉小核。

除此之外,還有直接關閉L2 cache,犧牲性能的代價的方法;或者直接複製L2 cache內容的方法。這兩種方案的開銷都是毫秒級的。

因為沒有CCI-400的具體性能數據(今年據說已經有新的模型了,這個了解的還不多),所以任務遷移的具體代價沒有數據能拿出來,但肯定不是官方聲稱的20微秒這麼美好的數據。

而官方文檔里並沒有給出具體緩存snooping的開銷以及在何時關閉小核,那麼說明這個數據可能是不太好看的。所以,我認為在最糟糕的情況下,應該會出現毫秒級的延遲,因為任何涉及緩存的複製、遷移都是需要消耗較大的時間的。

最後總結一下:

1、big.LITTLE確實能降低CPU能耗,但由於CPU並非移動設備上耗電的大戶,所以實際這種技術只是在一定程度上降低了功耗,但絕對不是官方聲稱70%,70%僅僅針對低負載的情況,並且只是CPU的功耗。

2、很多關鍵的性能數據廠商並沒有給出,比如任務遷移的具體代價(尤其是cache相關),CPU節能的具體數字等等。

3、CPU的功耗的演算法可以參見:低功耗CPU是怎麼做到的? - 電腦硬體,在移動平台上,單核做好優化的情況下,也能一定程度上達到節能效果,並且還沒有任務遷移的代價(比如蘋果的A8),系統流暢性上也沒有影響。

4、我個人認為,設計big.LITTLE是在廠商無力在單核上做優化設計的後果,這一條屬於個人觀點。

圖片來源《big.LITTLE Processing with ARM Cortex-A15 Cortex-A7》


其實沒節到什麼能,你看做得好的 Krait 和 Apple 的各代 core,都不是這種方式。

這個方案最牛逼之處在於 marketing。

- 很容易堆積 core 數量,四核八核消費者說起來倍兒有面子。

- 你們不覺得 big.LITTLE 挺好理解的嗎?要節能就用小,要性能就換大。容易闡述清楚的特點才能成為賣點。當然具體做得好不好就沒人管了。


這個技術其實就是ARM迎合市場需求,掩蓋自身架構設計實力不足的遮羞布。

有能力自己設計IP的廠家,哪個真看得上ARM公版架構了?蘋果,高通,英偉達,AMD,連LG,三星都有自研架構的計劃。

當初發布A15的時候,可是說給高性能平板和伺服器準備的哦~但是眼看著高通自研的 Krait 發展越來越好,A9後繼無人,Krait 在市場上無人能擋,三星等沒有自研核心的廠商嗷嗷待哺,ARM只好弄個bL來強上A15增強性能。

A15強上手機的時候發熱耗電說誤判了工藝更新的進度,A57都已經用上最先進的14nm結果也就馬馬虎虎,同樣的說辭估計還要再來一遍,這麼大個公司連續兩次誤判製程更新你糊弄誰哦,合著ARM永遠是為N年後的工藝設計內核的是吧。強上這倆根本就不是為智能手機設計的架構真是屈才了。

還真有人以為bL是用來省電的, 自己去看高通Krait,蘋果Cyclone,intel ATOM手機,真比bL費電了么?順便也能打打以為X86就是不能低功耗的人的臉。手機上X86表現不好是歷史原因,不是技術。


從實測的待機和續航看,大小核的機器相比只有大核的機器確實有優勢。

現在手機大部分應用是輕應用,所謂的a53小核拉到高頻,滿足日常80%以上的需求。大核心只是時不時拉一下,遊戲解決了多核心支持以後優勢如此。

很多完全a53的所謂低性能機器,日常用一點不慢。

體驗不打折,功耗優勢是實實在在的。


同組做模擬集成電路設計的教授聽我解釋了這個概念後說:看來數字IC的資源多到蛋疼…


手機上其實krait採用的aSMP更合適,可以更好的兼顧節能與性能...

簡單就是說大小核在切換的時候無論如何都要有個過程的,然後就會卡一下...


2015/06/17 加 big.LITTLE 技術的實質是跨核的DVFS

---------------------------

謝邀,謝邀,謝邀。可算有條問到我心裡去的題了。

首先聲明,利益相關,我就是Axx家的,其次,我不是負責手機市場的,因此以下言論,僅僅代表我個人,不代表公司。否則按照公司規定,隨便評論合作夥伴,可以開除了。

且僅在知乎,不許轉載。

下面開始正式答題:

1,為什麼設計big.LITTLE 大小核這樣的機制

手機的功耗是有條紅線的,誰家的AP,都必須在紅線之下。否則,要麼上超大電池,要麼超短待機時間... ...

但是人們群眾對於性能的追求是沒有止境的,要更強更快的核。

PPA(power,performance, area)這三個參數,是相互制約,必須平衡取捨的。

又想馬兒跑得快,又想馬兒不吃草,只能有所取捨,有所犧牲了。

大小核的機制,本質是犧牲晶元的面積Area,換取低功耗Power和高性能Performance。 Power和Performance這兩個參數,廣大的人民群眾是非常容易感知的,也是個大媒體,評測機構喜聞樂見的,面積Area這個東東,主要影響成本,都是敏感話題,廣大的晶元廠商和手機廠商們就悶聲不提了。因此很少有人說到,大小核的這個實質取捨。

拿錢(晶元面積),換高性能Performance和低功耗Power,是非常合理的取捨。因此只有高端機,才用大小核的方案。中低檔,都沒有用。當然某些公司是不會做,大小核,2個CPU cluster,必須用片上互聯,核數一般4+4,對於某些只能做單CPU cluster的公司,算是有技術門檻的。

2,big.LITTLE 大小核的好處

先上當時ARMbig.LITTLE的一些白皮書的地址:big.LITTLE Technology

一張圖解決問題。如果全大核,功耗下不去,如果全小核,性能上不去。

當年,三星首先採用big.LITTLE A7+A15 (謝謝你的愛,這麼多年我難以忘懷...)

Nvidia 是4個高頻A9 +一個低頻A9的方案,也算是big.LITTLE

只有高通是4個變頻的Krait,但是因為ARMv8上棋差一招,於是高通全盤接受,也是big.LITTLE 了

MTK 開始的8核,4個高頻A7+4個低頻A7

海思的4個高頻A53+4個低頻A53

都是big.LITTLE 啊,家家都有了,還不能說明問題么?

至於說掩蓋ARM設計問題的人,你們還記得大明湖畔的A17么?性能功耗具佳的A17。

3,big.LITTLE 技術的實質是跨核的DVFS

DVFS, Dynamic voltage and frequency scaling,動態電壓頻率調整

百度百科:DVFS 即動態電壓頻率調整,動態技術則是根據晶元所運行的應用程序對計算能力的不同需要,動態調節晶元的運行頻率和電壓(對於同一晶元,頻率越高,需要的電壓也越高),從而達到節能的目的。

在ARM提出big.LITTLE之前,大家都是一個核內調整。而big.LITTLE,第一次提出跨核(必須是architecturally identical的核,否則跨不了)。

舉個例子,核A,可以從1.1G-1.9Ghz之間調整,核B,設計團隊略微弱於A團隊,因此只能1.2G-1.8Ghz,但是B團隊可以用big.LITTLE,採取團體戰形式,bigB努力高頻優化 1.5G-2.0G, LITTLEB努力低頻優化, 900Mhz-1.4Ghz,整體看就是900Mhz-2.0G的範圍。

技術是好技術,每個具體實行,要看團隊。

ARM的貢獻是i, 提出跨核概念 ii,是掃平軟體障礙。

4. 不負責任亂評論一下,為什麼有些人反對big.LITTLE

站在ARM的角度看,big.LITTLE 太聰明了,解決了功耗和性能的矛盾要求,還能一起賣兩個核的IP,隨便把CCI/CCN也搞成必需品了,真是最佳設計啊。

其它晶元小夥伴,內心就崩潰了,買2個IP核,再搭上匯流排互聯,就已經吐血的貴了,每個晶元的面積大了,成本就上去了,這個讓人怎麼活,世道已經如此艱難... ...

還有軟體的開銷... ...

還有一些小夥伴,從來就做單核,雙核的,你一口氣就上八核,這怎麼跟,怎麼跟,跟... ...

不要向公司舉報我,我僅代表個人意見。


DB界的大牛Prof Ooi Beng Chin(黃銘鈞)最近的一篇paper:A Performance Study of Big Data on Small Nodes(http://www.comp.nus.edu.sg/~ooibc/vldb2015-small.pdf)比較了諸如Hadoop、MySql和Shark這樣的Big Data workload在Intel Xeon的集群和big.LITTLE集群上的性能和功耗,涵蓋了當 OS 負責切換大小核時的情況。

結論:

Our study shows that there is noone size fits all rule for
judging the efficiency of executing Big Data workloads on small and big
nodes. But small memory size, low memory and I/O bandwidths, and
software immaturity concur in canceling the lower-power advantage of ARM
servers. We show that I/O-intensive MapReduce workloads are more
energy-efficient to run on Xeon nodes. In contrast, database query
processing is always more energy-efficient on ARM servers, at the cost
of slightly lower throughput. With minor software modifications,
CPU-intensive MapReduce workloads are at least 20% cheaper to execute on
ARM nodes.

(來源:http://ooibc.blog.163.com/blog/static/1039682352014102035740994/)


我只想說Intel/AMD 敢這麼玩早被罵死了


不需要那麼多原理,用簡單的幾句話就說明白了:

用big乾重活,用LITTLE干輕活,為什麼big只乾重活不幹輕活?多搞出個LITTLE不是浪費嗎?

其實是ARM搞水平不行,搞不定big(A9、A57等高新能核心,A72不知道搞定了沒有)的功耗。


手上拿的是雙四核版本(獵戶座5420)的note3。從實際體驗上覺得這種模式必然被淘汰。軟體切換卡頓而且發熱量巨大。(和驍龍800版本的對比)


對這個問題不熟悉,但是前段時間剛好看到一篇文章講 big.LITTLE 的坑 A tale of an impossible bug: big.LITTLE and caching


廢物功能……設計的好,降頻降電壓最直接。


ARM設計出來的主要目的就是為了節能,因為A15架構的功率很大,如果不採用大小核技術的話,按照現在的鋰電池,電很快就會被耗光。


省電而已,跟混合動力汽車差不多。


毫無美感的垃圾


8個大核,能耗發熱吃不消。

8個小核,單核效能不夠用。

只好這麼折衷。


好精彩


推薦閱讀:

如何看待高通選擇與貴州合作開發伺服器晶元?
如何學習ARM嵌入式開發?
樹莓派 (Raspberry Pi)或arduino能用來開發產品嗎?
為什麼高通、聯發科(或許應該問ARM)他們不能研發一款像蘋果A系列處理器那樣單核性能突出的處理器呢?
在硬體公司(晶元公司)做軟體的他們到底在做什麼?

TAG:ARM | Android |