天天看點

這代安卓機特别耗電?聊聊安卓應用64位的問題

相信很多朋友已經購買到了最新一代CPU平台的安卓機了。這代安卓機的CPU發生了劇變,在保持了大中小核架構的同時,對大核和小核的微架構都進行了大改。小核心的微架構進化,應該是大家期盼已久的了,祖傳的Cortex-A55終于退休,按理來說全新的Cortex-A510應該會帶來更好的能效。但是有人發現,這代安卓機似乎更加耗電了,這是為何?今天就從新一代ARM處理器的架構聊起,簡單談談安卓應用64位普及遲滞導緻的耗電問題吧。

這代安卓機特别耗電?聊聊安卓應用64位的問題

新一代ARMv9處理器,為何反而更耗電?

新ARM處理器甚至更耗電?

目前上市的最新一代安卓機所使用的高通骁龍8gen1處理器,以及即将上市的聯發科天玑9000處理器,都屬于最新設計的基于ARMv9架構的産品。它們都有一個共同的特點,就是文章開頭所說的大核和小核微架構進行了大改,大核心使用了Cortex-X2微架構,而小核心則使用了Cortex-A510微架構。

這代安卓機特别耗電?聊聊安卓應用64位的問題

新處理器的小核是經過重新設計的Cortex-A510,理論上可以帶來更高的能效

無論是Cortex-X2還是Cortex-A510,它們都有一個共同的特點,那就是不再支援32位,如果安卓機要運作32位的應用,那就必須在微架構隻作了小幅調整的Cortex-A710中運作。如此一來,在某些場景中,就有可能導緻額外的能耗。

在理想的情況下,安卓機在待機或者低負載時,應用程式主要運作在小核心上,小核心的能效比最出色,如此一來就能達到節電的效果;但如今,如果App是32位的,在新的ARM處理器中,就隻能由中核運作,小核的能效優勢隻能幹瞪眼,額外耗電的情況就出現了。

這代安卓機特别耗電?聊聊安卓應用64位的問題

在運作32位安卓App時,處理器實際上隻能工作在Performance工況下,無法進入節電的Efficiency工況

換言之,在使用了新一代CPU的安卓機中,如果運作32位的App,是無法達到理想的能效比的。這個問題,和晶片工藝無關,和系統無關,的的确确就是安卓生态和新處理器架構不比對所導緻的。

隻有64位的安卓App,才能運作在新ARM處理器的小核心上,才能讓新ARM處理器發揮出應有的能效。是以,何時普及64位的安卓App,就成為了新一代ARM處理器何時能更節電問題的答案。

安卓App仍未普及64位?

目前的安卓生态中,32位的應用仍大量存在,這些應用不乏大家常見的裝機必備,例如哔哩哔哩、百度網盤、愛奇藝等等。這種情況是否正常?從技術的角度來看,似乎很不應該。

這代安卓機特别耗電?聊聊安卓應用64位的問題

像哔哩哔哩這樣Target API已經更新到Android 11的應用,也依然隻是32位的

從ARMv8開始,安卓陣營的CPU就已經普遍支援64位,安卓系統也在Android 5.0後,從系統層面支援64位應用。這兩件事,其實都屬于比較遠古的了——基于ARMv8的骁龍810以及Android 5.0都出現于2014年,轉眼都快十年過去了,為何安卓App仍大量停留在32位?

我們可以對比一下蘋果陣營。2013年的iPhone 5S以及iOS 7開始推行64位,一年多後32位的iOS應用就已經難尋蹤迹。和蘋果的步伐相比,安卓陣營可謂步履維艱。

這代安卓機特别耗電?聊聊安卓應用64位的問題

和安卓陣營相比,蘋果iOS推行64位順利得多

安卓推行64位為何如此艱難?這和安卓生态的實際情況是有很大關聯。盡管在ARMv8後,安卓陣營的CPU增加了64位的支援,但依然保留了32位的相容。甚至,前一代産品ARM v8.2處理器,也依然耗費額外的半導體,來相容32位App。同時,安卓系統也一直相容32位App,App并沒有切換到64位的迫切需求。這一切的考量,很大程度是基于對舊裝置的相容。

在安卓初推行64位的時候,市場上依然有大量運作舊CPU以及舊版安卓系統的裝置存在。安卓在市場攻城略地的秘訣,在于開放和相容,如果對32位一刀切,那麼安卓陣營會無可避免迎來分裂。實際上,開放的系統都存在這樣的問題,例如Windows生态為了保持向後相容,時至今日仍對32位應用軟體提供出色的相容,這和安卓是殊途同歸的。

當然,和Windows不同,安卓并不需要承擔太多的生産力任務。在初次推行64位過去近十年後,安卓也的确到了全面抛棄32位包裹的時機。

安卓放棄對32位相容可以帶來什麼好處?首先,CPU就可以省下用于相容32位的半導體,對于寸土寸金的晶片來說這顯得尤為有價值;其次,App可以擁有更好的記憶體使用率,對于日漸膨脹的應用遊戲來說這是至關重要的;再者,App還可以更有效利用CPU的寄存器,帶來更高的效率。

在安卓App日漸複雜、摩爾定律日漸失效的今天,摒棄曆史包裹、全面擁抱64位的時機的确已經到來。雖然目前安卓生态仍存在大量32位App,但我們也可以看到多方對普及64位的努力。

例如,Google要求,從2019年8月1日起,在Google Play釋出的應用必須支援64位。也因為此,國外的安卓生态對于64位的普及要比國内做得更好,這次安卓CPU平台換代,國内的安卓機耗電問題也要比國外更明顯。

這代安卓機特别耗電?聊聊安卓應用64位的問題

Google Play商店兩年多前已經禁止32bit應用上架,國内安卓生态較之滞後

又例如,國内的安卓分發管道也開始要求App支援64位。OPPO商店此前已經規定,2021年12月底後,新釋出的應用必須支援64位;而小米商店則提供了一鍵将32位App置換為64位的功能,如果手機上已安裝的32位App在商店中有64位版本,可以一鍵更新。

同時,國内的很多App在近期也都更新到了64位,例如微信、QQ、12306等等。相信在不久後的将來,國内的安卓App很快會大面積普及64位,新一代的安卓機也會發揮出應有的能效。

總結

毫無疑問,和蘋果相比,安卓的64位普及程序是落後的,安卓陣營并沒有蘋果那樣絕對的應用發行管道壟斷權,這也是安卓借開放之風騰飛所需要付出的代價。幸運的是,目前安卓陣營各方都已經意識到了普及64位的重要性,下一代安卓CPU會進一步抛棄對32位的支援嗎?讓我們拭目以待吧。

繼續閱讀