Android cpu架构类型升级方案调研
1.背景說明
當前APP上個版本APK安裝包大小58.3M,因為業務原因集成某功能APK大小將會增加至109M左右,會影響用戶的升級意愿和安裝使用情況,故對APK架構支持進行調研,通過數據對比得出可行性方案結論。
2.CPU架構相關知識
Android 支持的cpu架構類型:armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64,其中分為三大家族:arm、x86、mips,目前常見的麒麟cpu、高通cpu、聯發科cpu都是arm架構,常見于移動設備;AMD和因特爾CPU均為x86架構,早起華碩手機采用了x86架構的cpu,但是目前幾乎沒有了;mips在32位和64位嵌入式領域中歷史悠久,獲得了不少的成功,在Android剛發布時還有使用,但目前已經已經找不到蹤跡。其中64位相較于32位在運算處理中,會獲得較快的支持。
下面詳細介紹可跳過,直接看 3.數據分析
參考:【arm cpu架構體系】【armV8】【armv7】【A系列的CPU】_money_yuan的博客-CSDN博客_armv8架構
如圖所示,綠色的部分都是v7-A的架構,藍色的是v8-A架構,基本上綠色都是可以支持到32和64位的,除了A32,只支持到32位。在右邊的每個部分,比如說需要高效能的最上面的A15-A73這個部分是最高效的,接下來就是比較注重整個效率的部分了,中間那個部分是比較高效率的,最下面那欄的是效率最好的,在電池的效能方面達到了最好的標準。
| 架構 | 處理器家族 |
| ARMv1 | ARM1 |
| ARMv2 | ARM2 、ARM3 |
| ARMv3 | ARM6, ARM7 |
| ARMv4 | StrongARM 、ARM7TDMI 、ARM9 TDMI |
| ARMv5 | ARM7EJ 、ARM9E 、ARM10E 、XScale |
| ARMv6 | ARM11 、ARM Cortex-M |
| ARMv7 | ARM Cortex-A 、ARM Cortex-M 、ARM Cortex-R |
| ARMv8 | Cortex-A50[9] |
下面我們將詳細了解近年來ARM公司發布的數款A系列處理器。ARM公司的Cortex-A系列處理器適用于具有高計算要求、運行豐富操作系統以及提供交互媒體和圖形體驗的應用領域。
Cortex-A73
?
這是ARM 2016年發布的最新A系列處理器,Cortex-A73支持全尺寸ARMv8-A構架,ARMv8-A是ARM公司的首款支持64位指令集的處理器架構,包括ARM TrustZone技術、NEON、虛擬化和加密技術。所以無論是32位還是64位,Cortex-A73都可以提供適應性最強的移動應用生態開發環境。Cortex-A73包括128位 AMBR 4 ACE接口和ARM的big.LITTLE系統一體化接口,采用了目前最先進的10nm技術制造,可以提供比Cortex-A72高出30%的持續處理能力,非常適合移動設備和消費級設備使用。預計今年晚些時候到2017年,Cortex-A73處理器將會逐漸覆蓋到我們合作伙伴的高端智能手機、平板電腦、翻蓋式移動設備、數字電視等一系列消費電子設備。
Cortex-A72
Cortex-A72最早發布于2015年年初,也是基于ARMv8-A架構,采用臺積電16nm FinFET制造工藝,Cortex-A72可在芯片上單獨實現性能,也可以搭配Cortex-A53處理器與ARMCoreLinkTMCCI高速緩存一致性互連(CacheCoherentInterconnect)構成ARMbig.LITTLETM配置,進一步提升能效。在相同的移動設備電池壽命限制下,Cortex-A72能相較基于Cortex-A15的設備提供3.5倍的性能表現,相比于Cortex-A57也有約1.8倍的性能提升,展現出了優異的整體功耗效率。Cortex-A72是目前基于ARMv8-A架構處理器中使用最廣泛的處理器之一,主要其應用市場包括高端智能手機、大屏幕的移動設備、企業網路設備、服務器、無線基臺、數字電視。
Cortex-A57
Cortex-A57是ARM針對2013年、2014年和2015年設計起點的CPU產品系列的旗艦級CPU,它也是ARM首次采用64位ARMv8-A架構CPU,而且通過Aarch32執行狀態,保持與ARMv7架構的完全后向兼容性。除了ARMv8的架構優勢之外,Cortex-A57還提高了單個時鐘周期性能,比高性能的Cortex-A15 CPU高出了20%至40%。它還改進了二級高速緩存的的設計以及內存系統的其他組件,極大的提高了能效。Cortex-A57將為移動系統提供超高能的性能,而借助big.LITTLE,SoC能以很低的平均功耗做到這一點。其主要面對的是中高端電腦,平板電腦以及服務器產品。
Cortex-A53
?
Cortex-A53同樣是采取了ARMv8-A架構,能夠支持32位的ARMv7代碼和64位代碼的AArch64執行狀態。A53架構特點是功耗降低、能效提高。其目標是28nm HPM制造工藝下、運行SPECint2000測試時,單個核心的功耗不超過0.13W。它提供的性能比Cortex-A7處理器的功率效率更高,并能夠作為一個獨立的主要的應用處理器,或者搭配Cortex-A57處理器構成big.LITTLE配置。Cortex-A53在相同的頻率下,能提供比Cortex-A9更高的效能。其主要面對的是中高端電腦,平板電腦,機頂盒,數字電視等。
Cortex-A35
?
Cortex-A35是基于ARMv8-A 64位架構設計的一款低功耗CPU,其目的是為了取代此前32位Cortex-A7和Cortex-A5兩顆老核心,采用和A53/A7類似的順序有限雙發射設計,同時融入了A72的一些新特性,并在前端重新設計了指令預取單元,提升了分支預測精度。此外,A35還采用了A53的緩存、內存架構,可配置8-64KB一級指令和數據緩存、128KB-1MB二級緩存,加入了NEON/FP單元,改進了存儲性能,支持完整流水線的雙精度乘法,還為CPU核心、NEON流水線都配備了硬件保留狀態(獨立電源域)以提升電源管理效率。在同樣的工藝、頻率下,A35的功耗比A7低大約10%,同時性能提升6-40%。而對比A53,它可以保留80-100%的性能,但是功耗降低32%、面積縮小25%,能效提升25%。A35還可以和A53、A57、A72等大核心搭配,組成big.LITTLE混合架構系統,進一步提升系統能效。其主要定位于低功耗的低端手機、可穿戴、物聯網等領域。
Cortex-A32
?
這是ARM 新一代構架中,唯一一個 32 位(ARMv7-A )架構的處理器,但 A32 就像是 32 位版的 A35,目標很明顯,就是在效能比本來就逆天的 A35 的基礎上進一步控制功耗。A32 架構主打芯片面積、功耗控制和能耗比,其停留在 32 位(ARMv7-A 指令集),指令預取單元針對效率進行了重新設計,一、二級暫存、浮點和 DSP 操作性能則針對速度進行了改進,并引入了新的電源管理特性。其支持 TrustZone 安全加密、NEON SIMD 指令集、DSP / SIMD 擴展、VFPv4 浮點計算、虛擬硬件等。A32 可以在 32 位下提供和 A35 一樣的性能。但更低功耗,讓它的效能比(單位電能產出的性能)比 A35 還要高 10%、比 A5 高 30%、比 A7 高 25%。A35 可以透過提升頻率達到 A53 80-100% 性能,也就是說,A32 也可以在 32 位下達到同樣的性能等級,這時候的芯片面積只有 A53 的 68%,而功耗則只有 A53 的 61%。
在 64 位之下,A35 都有代替 A53 架構的實力,而在 32 位中,A32 就已經是完勝所有人的境界了,而且比起 64 位的 A35 架構,32 位的 A32 更適合用在穿戴設備和物聯網產品上。
Cortex-A17
A17仍然基于32位ARMv7-A指令集,初期會采用28nm工藝,后期進化到20nm。本質架構和A12一樣都是雙寬度、亂序發射,僅僅是改進了外部互聯,引入了新的一致性總線AMBA4 ACE,可以更快速地連接內存控制器,從而改善性能和能效。得益于這個新的總線,A17可以支持多核心SoC的完整內存一致性操作,能夠參與big.LITTLE雙架構混合方案,在特定頻率、工藝、內存條件下,A17的性能比A12提升大約40%。在某些特定的環境中,A17的性能已經可以和A15處于一個檔次了,但是功耗更低、能效更高。雖然在命名上排在Cortex-A15之上,但其定位中端,而不是高端。
Cortex-A15
Cortex-A15最早在2010年發布,基于32位ARMv7-A架構。A15和A9同樣具備亂序執行,但是Cortex-A15具備(兩倍)的指令發射端口和執行資源,指令解碼能力也要高出50%,動態分支預測能力更強(采用了多層級分支表緩存),指令拾取帶寬更強(128 bit vs 64 bit),這些都能讓A15的流水線執行具備更高的效率。除此以外,A15采用了VFPv4浮點單元設計,能執行FMA指令以及硬件除法指令,相較而言A9的峰值向量浮點性能基本上只有A15的一半。Cortex-A15處理器可以應用在智能手機、平板電腦、移動計算、高端數字家電、服務器和無線基礎結構等設備上。
Cortex-A9
?
ARM Cortex-A9采用ARMv7-A架構,目前我們能見到的四核處理器大多都是屬于Cortex-A9系列。 Cortex-A9 處理器的設計旨在打造最先進的、高效率的、長度動態可變的、多指令執行超標量體系結構,提供采用亂序猜測方式執行的 8 階段管道處理器,憑借范圍廣泛的消費類、網絡、企業和移動應用中的前沿產品所需的功能,它可以兼具高性能和高能效。Cortex-A9 微體系結構既可用于可伸縮的多核處理器(Cortex-A9 MPCore多核處理器),也可用于更傳統的處理器(Cortex-A9單核處理器)。可伸縮的多核處理器和單核處理器支持 16、32 或 64KB 4 路關聯的 L1 高速緩存配置,對于可選的 L2 高速緩存控制器,最多支持 8MB 的 L2 高速緩存配置,它們具有極高的靈活性,均適用于特定應用領域和市場。
Cortex-A8
ARM Cortex-A8處理器,基于ARMv7-A架構,是目前使用的單核手機中最為常見的產品。Cortex-A8處理器是首款基于ARMv7體系結構的產品,能夠將速度從600MHz提高到1GHz以上。Cortex-A8處理器可以滿足需要在300mW以下運行的移動設備的功率優化要求;以及需要2000 Dhrystone MIPS的消費類應用領域的性能優化要求。Cortex-A8 高性能處理器目前已經非常成熟,從手機到上網本、DTV、打印機和汽車信息娛樂,Cortex-A8處理器都提供了可靠的高性能解決方案。
Cortex-A7
Cortex-A7采用ARMv7-A架構,它的特點是在保證性能的基礎上提供了出色的低功耗表現。Cortex-A7處理器的體系結構和功能集與Cortex-A15 處理器完全相同,不同這處在于,Cortex-A7 處理器的微體系結構側重于提供最佳能效,因此這兩種處理器可在big.LITTLE(大小核大小核心伴侶結構)配置中協同工作,從而提供高性能與超低功耗的終極組合。單個Cortex-A7處理器的能源效率是Cortex-A8處理器的5倍,性能提升50%,而尺寸僅為后者的五分之一。
Cortex-A5
?
Cortex-A5處理器同樣基于ARMv7-A架構,它是能效最高、成本最低的處理器,能夠向最廣泛的設備提供最基礎的 Internet 訪問。Cortex-A5 處理器在指令以及功能方面與更高性能的 Cortex-A8、Cortex-A9 和 Cortex-A15 處理器完全兼容 - 一直到操作系統級別。Cortex-A5 處理器還保持與經典 ARM 處理器(包括 ARM926EJ-S、ARM1176JZ-S 和 ARM7TDMI?)的向后應用程序兼容性。其定位于從入門級智能手機、低成本手機和智能移動設備以及基礎工業設備。
3.數據分析
首先通過友盟統計平臺對上傳的日志進行數據分析,在某些特定的錯誤數據集中(為了盡可能減少設備差異性而導致不一致,任何設備都可能產生該失敗情況),根據采集的設備信息進行分析。采集日期:2021.06
| 設備cpu架構類型 | 數量 |
| arm64-v8a,armeabi-v7a,armeabi | 232 |
| armeabi-v7a,armeabi | 8(Android4.4.4、7、9) |
通過篩選240條數據,進行分析,其中所有設備均支持armeabi-v7a、armeabi,其中有8條數據的設備不支持arm64-v8a。
4.常見應用架構支持類型對比
| 應用名稱 | cpu架構支持 | 支持系統API | 安裝包大小(M) | so大小(M) | so大小比重(升序) |
| 駕考寶典 | armeabi-v7a | 21-30 | 150.9 | 25.7 | 17% |
| 粉筆職教 | armeabi-v7a | 21-29 | 60.8 | 10.8 | 18% |
| 有道云詞典 | armeabi-v7a | 21-29 | 162.6 | 30.5 | 19% |
| 愛奇藝 | armeabi-v7a | 16-30 | 60.6 | 12.3 | 20% |
| 掌門1對1輔導 | armeabi-v7a | 19-30 | 155.2 | 31.9 | 21% |
| 騰訊視頻 | armeabi | 21-28 | 134.6 | 35.7 | 27% |
| 網易公開課 | armeabi-v7a、arm64-v8a | 21-29 | 40.5 | 11.2 | 28% |
| 抖音 | armeabi-v7a | 19-29 | 125.5 | 38.4 | 31% |
| 小猿搜題 | armeabi-v7a | 19-26 | 115.5 | 37.8 | 33% |
| 作業幫 | armeabi-v7a | 18-26 | 110.9 | 36.4 | 33% |
| 環球網校 | armeabi-v7a | 18-29 | 63 | 24.3 | 39% |
| 微信 | arm64-v8a | 21-29 | 209.5 | 102.1 | 49% |
| 華圖在線 | armeabi、armeabi-v7a | 19-26 | 110.8 | 54 | 49% |
| 233網校 | armeabi-v7a、arm64-v8a | 21-29 | 98.4 | 53 | 54% |
| 支付寶 | armeabi | 18-29 | 96.3 | 52.8 | 55% |
| 淘寶 | armeabi-v7a、arm64-v8a | 14-28 | 157.6 | 88.1 | 56% |
| 中華會計網 | armeabi-v7a、arm64-v8a | 17-26 | 103.6 | 59.7 | 58% |
通過對比總結:
17個應用中14個支持armeabi-v7a、3個支持armeabi、5個支持arm64-v8a,支持的cpu架構類型越多,so大小比重越大,其中,騰訊視頻和微信為了更好的支持性,支持armeabi架構;而雖然微信使用的人很多,但它支持的卻是arm64-v8a的架構,對架構要求最高
5.APP架構支持類型對比
以下是APP v4.3.1加入某直播sdk后安裝包大小的情況(測試包)
| 架構支持類型 | 安裝包大小(M) | so大小(M) | so大小比重 |
| armeabi-v7a、arm64-v8a、x86 | 102.4 | 65.5 | 63.9% |
| armeabi-v7a、arm64-v8a | 81.7 | 44.8 | 54.7% |
| arm64-v8a | 60.8 | 23.9 | 39.3% |
| armeabi-v7a | 57.8 | 20.9 | 36.1% |
6.實施方案
方案1:
當前Android項目支持的cpu架構類型為:arm64-v8a、armeabi-v7a、x86,基于以上數據分析后得出,CPU架構僅保留armeabi-v7a支持可行性較大,安裝包大小和上個版本接近(57.1M->59.7M),不會出現兼容性問題,但是有極少數用戶可能使用的有一些模擬器(x86平臺)等設備,會導致無法使用,對于需要支持64位架構的應用市場可以考慮多包上傳;
方案2:
CPU架構僅保留arm64-v8a支持,但是有少數用戶可能使用的是七八年甚至十來年的設備,會因兼容性導致無法使用,有一定的風險,但是微信就已經這么做了,可見風險之小;
方案3:
繼續維持現有平臺支持方案:cpu架構類型為:arm64-v8a、armeabi-v7a、x86,在升級時安裝包會較大,一定程度上的體驗度降低;
總結
以上是生活随笔為你收集整理的Android cpu架构类型升级方案调研的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序(一):微信小程序申请注册与开
- 下一篇: Android 使用NDK开发中,遇到m