Arm終端事業(yè)部生態(tài)系統(tǒng)及工程高級(jí)總監(jiān)Geraint North從4個(gè)角度對(duì)Arm在軟件及生態(tài)領(lǐng)域的工作進(jìn)行了總結(jié)介紹。
向64位的遷移
安卓移動(dòng)生態(tài)系統(tǒng)向64位架構(gòu)的升級(jí)過(guò)程非常漫長(zhǎng)。
10多年前,首款64位架構(gòu)的Arm CPU就已經(jīng)推出,面世兩年之后,安卓的生態(tài)系統(tǒng)其實(shí)就已經(jīng)能很好地利用它的能力。但目前,基于32位架構(gòu)的依然存在。
“2022年,我們?cè)?4位的投資確實(shí)受到考驗(yàn)?!盙eraint North介紹說(shuō),升級(jí)的挑戰(zhàn)在于安卓生態(tài)系統(tǒng)具有極大的多樣性,除設(shè)備的種類(lèi),合作伙伴類(lèi)型和數(shù)量,遷移意味著大量的時(shí)間和成本,因此,產(chǎn)業(yè)鏈不同角色之間必須有大量的細(xì)致協(xié)調(diào)。
但是,向64位遷移是不可阻擋的趨勢(shì)。
64位的優(yōu)勢(shì)在于,更大的地址空間提供了更高的安全性,而作為大部分操作系統(tǒng)標(biāo)準(zhǔn)功能的地址空間布局的隨機(jī)化加載(Address space layout randomization,ASLR),提升了攻擊者定位正在攻擊的代碼或者數(shù)據(jù)的難度。此外,64位指針在頂部提供了大量的空間,方便采用PAC簽署指針、用MTE來(lái)進(jìn)行內(nèi)存標(biāo)記。
SpecInt2006性能測(cè)試展示了六年前發(fā)布的32位Cortex-A76與今年發(fā)布的64位Cortex-A720之間的性能差距。看得出來(lái),二者性能隨著時(shí)間的推移在不斷加大,最后一個(gè)支持32位代碼的Cortex-A710提升了36%,這是32位性能的最佳表現(xiàn),但卻是32位的“末日輝煌”。
支持64位的Arm Cortex-A715/A720其性能逐漸攀升。Arm正借助軟件的力量在把時(shí)間和投資聚焦在64位路徑的優(yōu)化之上。
事實(shí)上,早在幾年前,Arm就開(kāi)始從CPU和操作系統(tǒng)中逐漸剔除32位的歷史遺留問(wèn)題,向應(yīng)用開(kāi)發(fā)者證明向64位的過(guò)渡在真實(shí)發(fā)生,并且為他們支持64位的平臺(tái)提供額外的助力。
“隨著去年十月谷歌Pixel手機(jī)推出僅支持的64位的安卓配置,32位架構(gòu)的旅程終于要走完了?!盙eraint North長(zhǎng)舒了一口氣。爾后,MediaTek推出首款僅支持64位性能內(nèi)核的安卓SoC,現(xiàn)已被廣泛部署到許多的高端手機(jī)中。
Google在應(yīng)用商店向64位過(guò)渡這方面的工作受到Geraint North的好評(píng)。他表示,早在2019年1月Google就為開(kāi)發(fā)者提供了非常明確的時(shí)間表,于2021年8月停止向具有64位功能的設(shè)備提供32位的應(yīng)用程序。2022年,Google已經(jīng)完成了向64位遷移的所有準(zhǔn)備工作。
因?yàn)閼?yīng)用商店的龐大數(shù)量,在中國(guó)推廣64位的應(yīng)用生態(tài)系統(tǒng)挑戰(zhàn)更大,但出乎Geraint North意料:在頂級(jí)OEM開(kāi)發(fā)商支持下,Arm在中國(guó)推動(dòng)64位的工作進(jìn)展非常順利——報(bào)告顯示,截至2023年3月30日,OPPO、vivo、小米等主流應(yīng)用商店前萬(wàn)款應(yīng)用支持率高達(dá)93%,所有應(yīng)用支持率達(dá)到90%;排名前1000位應(yīng)用的支持率幾乎達(dá)到了100%。
談到64位下一步的發(fā)展方向,Geraint North表示,Arm正在重點(diǎn)關(guān)注數(shù)字電視和機(jī)頂盒兩個(gè)領(lǐng)域,語(yǔ)音控制攝像頭進(jìn)行視頻會(huì)議和沉浸式高端游戲領(lǐng)域也有很大的市場(chǎng)潛力。
安全技術(shù)部署
隨著更多軟件的出現(xiàn),數(shù)字化正在支持越來(lái)越多的工作、生活方式,越來(lái)越多的數(shù)據(jù)也在它生命周期某一個(gè)點(diǎn)上推動(dòng)Arm。
Arm非常重視軟件至關(guān)重要的安全性和穩(wěn)定性并致力為開(kāi)發(fā)者提供可靠、易用的安全功能。
根據(jù)NIST 2023年4月發(fā)布的最新報(bào)告,通用漏洞評(píng)分系統(tǒng)(CVSS)指標(biāo)正呈現(xiàn)上升態(tài)勢(shì),2021年有20,000多個(gè)漏洞,包括未能驗(yàn)證網(wǎng)頁(yè)上字段、SQL注入型攻擊等等。
在眾多的漏洞中,Arm對(duì)白色的越界寫(xiě)入(CWE-787,圖中快速上升的白色線條)保持高度關(guān)注。CWE-787是一種內(nèi)存攻擊形式,可以修改索引或執(zhí)行引用緩沖溢出的內(nèi)存位置,損壞數(shù)據(jù)或?qū)е孪到y(tǒng)崩潰。
Armv9架構(gòu)CPU首次引入的安全技術(shù)有效地化解了這些難題。這些技術(shù)包括內(nèi)存標(biāo)記擴(kuò)展(MTE)、指針認(rèn)證(PAC)和分支目標(biāo)識(shí)別(BTI)等。
關(guān)于MTE技術(shù),前文已經(jīng)有過(guò)詳述,此處不再介紹。PAC是指在調(diào)用函數(shù)時(shí)生成并存儲(chǔ)返回地址的加密簽名,在函數(shù)返回時(shí)使用它來(lái)驗(yàn)證返回地址;BTI限制間接分支指令(BR或BLR),使其只能針對(duì)BTI指令。
PAC和BTI的聯(lián)合應(yīng)用,對(duì)代碼跳轉(zhuǎn)進(jìn)行了更嚴(yán)格的控制,使得攻擊者很難將現(xiàn)有代碼的片斷用于不法攻擊;即使找到了覆蓋指針的方法,但因?yàn)槊總€(gè)函數(shù)被調(diào)用時(shí)連接寄存器都會(huì)被清零,哪怕是突破沙盒后攻擊者可以訪問(wèn)的代碼幾乎無(wú)跡可尋,所以仍難以真正覆蓋任何代碼。也就是說(shuō),如果有人以某種方式修改了內(nèi)存地址,Arm也將不予認(rèn)證。
PAC/BTI的安全性得到了市場(chǎng)的認(rèn)可。
據(jù)Geraint North介紹,開(kāi)源的網(wǎng)絡(luò)瀏覽器Chromium是Google Chrome瀏覽器和微軟Edge瀏覽器的基礎(chǔ)。全球70%的頁(yè)面瀏覽量來(lái)自于Chrome原生的瀏覽器,Chromium基于大量個(gè)人數(shù)據(jù)訪問(wèn)得出這樣的結(jié)論:70%的安全漏洞報(bào)告由內(nèi)存引起。
過(guò)去三年來(lái),Arm和Google開(kāi)源社區(qū)合作,用PAC和BTI全面保護(hù)Chromium。
Chromium作為一個(gè)大型的開(kāi)源項(xiàng)目支持了大量的開(kāi)源分支。Arm不得不為這些項(xiàng)目延伸出的各種Build、編譯器、內(nèi)核等增加PAC和BTI,并采用Arm系統(tǒng)模擬器Fast Model開(kāi)發(fā)所需的軟件功能,基于Chromium所依賴的代碼庫(kù)在流片前完成了所有的工作。
另一個(gè)案例是Unity。Unity是移動(dòng)開(kāi)發(fā)最常用的平臺(tái)之一,70%的頂級(jí)移動(dòng)游戲基于該平臺(tái)開(kāi)展創(chuàng)作。2022年Unity也啟用了PAC/BTI,這對(duì)消費(fèi)者來(lái)說(shuō)絕對(duì)是個(gè)利好——只需簡(jiǎn)單地勾選,就能夠?qū)崿F(xiàn)安全保證。
具有PAC/BTI功能的設(shè)備應(yīng)用已經(jīng)一年,在生態(tài)系統(tǒng)中的部署速度提升很快。
提升Armv8性能的同時(shí)釋放Armv9的能力
按照SPECint2017的標(biāo)準(zhǔn)評(píng)判,過(guò)去三年來(lái),Arm處理器的性能已經(jīng)提升12%。
盡管Armv8架構(gòu)已經(jīng)非常成熟,但Arm仍然持續(xù)沖擊新的高度,以推動(dòng)安卓生態(tài)系統(tǒng)運(yùn)轉(zhuǎn)。聚焦于可伸縮矢量擴(kuò)展(SVE2)、設(shè)法提高支持多語(yǔ)言、可實(shí)現(xiàn)源程序動(dòng)態(tài)編譯的編譯器和虛擬機(jī)的LLVM(Low Level Virtual Machine)的性能,是Arm的一個(gè)重要方向。
一年前,Armv9引入了全新矢量架構(gòu)SVE2,進(jìn)一步釋放了性能的潛力:一是確保其代碼生成質(zhì)量盡可能好一些、快一些,達(dá)到甚至超過(guò)Neon(基于Arm平臺(tái)對(duì)Single Instruction Multiple Data技術(shù)的一種實(shí)現(xiàn),可以理解為SVE2、SVE的前身),保證LLVM可以向量化,同時(shí)增強(qiáng)LLVM,使其能夠?qū)eon無(wú)法做到但SVE2可以做到的工作進(jìn)行矢量化;二在LLVM中引入函數(shù)多版本,允許Neon和SVE2代碼輕松共存,并在運(yùn)行時(shí)自動(dòng)選擇合適的版本,以簡(jiǎn)化操作。
Arm Fast Model對(duì)于流片前的功能也提供了非常有益的幫助,大幅降低了性能增益方面的風(fēng)險(xiǎn)。
SVE2非常適合圖像處理。但Arm對(duì)Halide也非常感興趣,后者是一種非常適合以高性能的方式表達(dá)圖像和數(shù)組處理操作的C++語(yǔ)言,因?yàn)橹恍枰枋鲆淮嗡惴ň湍軌驗(yàn)椴煌闹噶罴筛鞣N不同的高效的代碼而受到開(kāi)發(fā)人員的青睞。
Geraint North介紹說(shuō),Arm圍繞SVE2在最新的CPU技術(shù)中挖掘更多的性能,在Halide方面也驗(yàn)證目前的工作方法。由于它使LLVM作為代碼生成器,所以Arm與LLVM的合作將有助于Halide。
安卓動(dòng)態(tài)性能框架
Arm的技術(shù)更新離不開(kāi)眾多開(kāi)發(fā)者的支持。
據(jù)Geraint North介紹,Arm建立了Android適應(yīng)性框架的目標(biāo),一直努力開(kāi)發(fā)適應(yīng)性工具和庫(kù),以實(shí)時(shí)了解和響應(yīng)不斷變化的性能、溫度和用戶情況。過(guò)去幾年來(lái),Arm獲得了大量的反饋。
Android適應(yīng)性套件由四個(gè)關(guān)鍵組成部分組成::APDF Hint API幫助系統(tǒng)根據(jù)游戲的運(yùn)行情況對(duì)CPU升頻或降率;APDF Thermal API為開(kāi)發(fā)者提供數(shù)字信號(hào),以了解與熱閥值的距離;游戲模式API向開(kāi)發(fā)者提供關(guān)于用戶性能或電池偏好的建議;游戲狀態(tài)API告訴系統(tǒng)正在做什么,動(dòng)態(tài)調(diào)整以適應(yīng)游戲性能需求的最佳狀態(tài)。
已有開(kāi)發(fā)者已經(jīng)利用這些工具實(shí)現(xiàn)了最大的增益。
如將APDF Hint API集成到Pixel的SurfaceFlinger,可降低50%的掉幀率,并節(jié)省6%的電量,在Chrome瀏覽器和安卓地圖中還發(fā)現(xiàn)了節(jié)省能耗的巨大潛力。所有這些,都只是APDF Hint API卓越性能的一部分。
使用Unity自適應(yīng)的功能,Arm與Google合作展示了APDF thermal API的優(yōu)勢(shì)。演示數(shù)據(jù)顯示,Candy Clash運(yùn)行在第6分鐘后,熱狀態(tài)升級(jí)到第一級(jí),在第18分鐘的時(shí)候,熱狀態(tài)達(dá)到警戒值,APDF Thermal API立即啟動(dòng),動(dòng)態(tài)改變場(chǎng)景的渲染質(zhì)量,避免觸發(fā)設(shè)備的關(guān)閉。
“安卓動(dòng)態(tài)性能框架提供了一個(gè)一致的API,讓開(kāi)發(fā)者可以針對(duì)整個(gè)安卓生態(tài)系統(tǒng)進(jìn)行開(kāi)發(fā),這就是Arm給合作伙伴提供了強(qiáng)大潛力來(lái)實(shí)現(xiàn)自己的差異性,并且盡可能利用到這些技術(shù)讓API裝備自己?!痹贕eraint North看來(lái),這是Arm硬件和軟件協(xié)同工作,為提供最佳消費(fèi)者體驗(yàn)的又一個(gè)實(shí)例。