簡(jiǎn)介:Arm Neoverse生態(tài)及性能優(yōu)勢(shì)和遷移建議
2022年11月5日,“倚天開啟云原生算力新時(shí)代”專場(chǎng)在杭州·云棲大會(huì)D館云棲科創(chuàng)SHOW場(chǎng)舉行,安謀科技(Arm China)高級(jí)軟件經(jīng)理別再平帶來了題為《Neoverse生態(tài)與軟件遷移》的主題分享,詳細(xì)的介紹了Arm Neoverse生態(tài)及性能優(yōu)勢(shì)和遷移建議,本文根據(jù)該演講整理而成。
01 Arm完善、豐富的生態(tài)成為國(guó)內(nèi)外多家云廠商首選
在Arm的生態(tài)系統(tǒng)中包含CPU架構(gòu)、CPU微架構(gòu),芯片實(shí)現(xiàn)三個(gè)概念,CPU架構(gòu)定義了用戶對(duì)CPU核心的期望行為,包括寄存器、內(nèi)存模型,異常模型等等,而CPU微架構(gòu)則是一個(gè)CPU核心的具體實(shí)現(xiàn),芯片則是芯片廠商在CPU核心的基礎(chǔ)上配合各種加速器和總線互聯(lián)最終實(shí)現(xiàn)。
同一個(gè)CPU架構(gòu)可以有不同的微架構(gòu)實(shí)現(xiàn),例如上圖右側(cè)中的例子:Arm的Cortex A710和Arm的Neoverse N2兩款CPU核心,都是基于Armv9.0架構(gòu)實(shí)現(xiàn),同一款軟件也同樣可以在兩款CPU上運(yùn)行。
上圖中展示的是Arm的CPU架構(gòu)演進(jìn),Arm自2011年推出基于64位的Armv8架構(gòu)以來,保持著逐代演進(jìn)的節(jié)奏,根據(jù)市場(chǎng)和客戶的需求,不斷地在安全、性能、功能等方面加入不同的CPU特性,不同的CPU特性會(huì)組合成為一個(gè)CPU擴(kuò)展,也就是一個(gè)?。ㄐ拢┌姹?。Arm的CPU版本是逐年演進(jìn)且向前兼容的,像Neoverse N2是基于Armv9的架構(gòu),它可以同時(shí)兼容前代架構(gòu)的所有特性,系統(tǒng)軟件等也可以通過查詢系統(tǒng)寄存器了解當(dāng)前硬件所實(shí)現(xiàn)的具體CPU架構(gòu)特性。
2018年Arm戰(zhàn)略性地將服務(wù)器芯片設(shè)計(jì)和傳統(tǒng)客戶端芯片設(shè)計(jì)分離,推出了Arm Neoverse產(chǎn)品線,縱向看Arm Neoverse平臺(tái)有三個(gè)系列產(chǎn)品,V系列、N系列和E系列。V系列強(qiáng)調(diào)性能,可提供最高單核處理能力,主要用于HPC和數(shù)據(jù)中心云應(yīng)用等;N系列更注重性能、功耗和面積的平衡,具備最高的可擴(kuò)展性,主要適用于數(shù)據(jù)中心、云計(jì)算應(yīng)用;E系列更注重功耗和面積,主要應(yīng)用于無線接入等功耗受限的領(lǐng)域。
橫向看Neoverse平臺(tái)近幾年推出的CPU產(chǎn)品,N1平臺(tái)是第一代聚焦基礎(chǔ)設(shè)施的CPU實(shí)現(xiàn),目前已經(jīng)獲得廣泛應(yīng)用。在服務(wù)器領(lǐng)域,基于N1的產(chǎn)品有AWS和Ampere的服務(wù)器芯片,DPU領(lǐng)域有英特爾基于Neoverse N1的DPU實(shí)現(xiàn)。第二代是V1,屬V系列產(chǎn)品,更注重單核性能,新增2×256的SVE加速引擎,AWS的Graviton 3是基于V1來實(shí)現(xiàn)的,并且已經(jīng)于今年5月份正式商用。
N2是第一個(gè)支持Armv9架構(gòu)的CPU核心,支持2×128的SVE引擎,倚天710芯片也是基于N2平臺(tái)實(shí)現(xiàn)的。
Poseidon平臺(tái)基于Armv9.2架構(gòu),在N2的基礎(chǔ)上性能再提高30%,且增加了CCA架構(gòu)特性,支持機(jī)密計(jì)算。
上圖展示的是Arm Neoverse平臺(tái)推出以來,在最近兩年時(shí)間里取得的一些成就??梢钥吹皆谠粕?,AWS、微軟、谷歌、阿里云等都推出了基于Arm Neoverse的云實(shí)例。在智能網(wǎng)卡領(lǐng)域,Marvell推出了基于Neoverse的智能網(wǎng)卡,谷歌云和英特爾聯(lián)合推出了“Mt Evans”DPU。在企業(yè)領(lǐng)域,惠普發(fā)布了基于Ampere的ProLiant Gen11平臺(tái),也代表Arm正進(jìn)入傳統(tǒng)的企業(yè)領(lǐng)域。同時(shí)在規(guī)范方面,Arm推出了System Ready認(rèn)證項(xiàng)目,針對(duì)Arm系統(tǒng)的軟硬件進(jìn)行測(cè)試認(rèn)證,確保最終Arm的系統(tǒng)可以開箱即用和安裝多樣的操作系統(tǒng),過去兩年已經(jīng)有五十多個(gè)系統(tǒng)獲得System Ready認(rèn)證。
聚焦云計(jì)算領(lǐng)域,從上圖中可以看到Arm Neoverse系統(tǒng)已經(jīng)被部署在公有云、私有云,混合云等方方面面,且已經(jīng)被國(guó)內(nèi)外主流云計(jì)算廠商所采用,比如阿里云、騰訊云、AWS、微軟、谷歌等。
在云原生的軟件生態(tài)方面,Arm持續(xù)致力于開源軟件開發(fā)和支持。目前Arm對(duì)超過100個(gè)開源項(xiàng)目進(jìn)行投入,可以看到(上圖)自下而上從網(wǎng)絡(luò)、OS、虛擬化、容器,編程語言以及各種上層應(yīng)用負(fù)載,Arm都有很完善的支持。對(duì)底層網(wǎng)絡(luò)側(cè)的DPDK、OVS、ODP均可支持。在語言層面,OpenJDK、GoLang等也都可以在Arm平臺(tái)上直接運(yùn)行,包括壓縮方面的主流計(jì)算庫,Arm也可以很好的支持。
頂部(上圖)列出了一些主流的云負(fù)載應(yīng)用,有常見的一些數(shù)據(jù)庫、緩存、Web服務(wù)器、大數(shù)據(jù)、存儲(chǔ)等。左側(cè)(上圖)中可以看到Arm在CI/CD領(lǐng)域也有很大的投入,GitLab、Github Actions、Travis等都原生支持Arm系統(tǒng),方便開發(fā)者在Arm系統(tǒng)上進(jìn)行開發(fā)構(gòu)建。
在操作系統(tǒng)領(lǐng)域,從主流的發(fā)行版OS到社區(qū)版OS,Arm都已經(jīng)是所謂的”第一等公民“,Red Hat Enterprise Linux、CentOS、SUSE、龍蜥社區(qū)等對(duì)Arm系統(tǒng)都有原生支持。
在編譯器領(lǐng)域,在GCC和LLVM,Arm和生態(tài)伙伴一起合作,持續(xù)投入,確保在Silicon硬件系統(tǒng)面世以前,相應(yīng)的架構(gòu)特性和微架構(gòu)實(shí)現(xiàn)就在編譯器中獲得支持。隨著編譯器版本的更新,Arm會(huì)逐步支持相應(yīng)架構(gòu)特性,以及相應(yīng)微架構(gòu)實(shí)現(xiàn),保證客戶用最簡(jiǎn)便的編譯方法獲得最優(yōu)化的運(yùn)行性能。
從另一角度可以看到,Arm會(huì)把自己的IP路線圖和編譯器路線圖相配合,例如在2024年之后,相應(yīng)的編譯器就會(huì)支持Poseidon,我們會(huì)在Poseidon平臺(tái)落地前,就把相應(yīng)的功能支持加入到編譯器當(dāng)中,保證最終用戶拿到硬件之后可以第一時(shí)間用現(xiàn)有的編譯器獲得最好的性能。
02 多兼容,可擴(kuò)展,Arm多業(yè)務(wù)場(chǎng)景性能大幅提升
下圖中列了Neoverse平臺(tái)的N1、N2兩款CPU核心以及Cortex A72的性能對(duì)比及架構(gòu)特性的增強(qiáng)。Arm Neoverse N1這款CPU核心,對(duì)比Cortex A72有60%的性能提升,同時(shí)降低了30%的功耗。Arm Neoverse N1加入了很多服務(wù)器領(lǐng)域的架構(gòu)特性,例如獨(dú)立的L2 Cache,支持原子操作,同時(shí)也支持基本的RAS特性。
接下來的Neoverse N2 CPU核心,在N1基礎(chǔ)上提升了35%的性能,且保持了同樣的功耗,使得N2有了非常好的可擴(kuò)展性,同時(shí)N2也是第一款支持Armv9架構(gòu)的CPU實(shí)現(xiàn),尤其指出N2實(shí)現(xiàn)了MPAM架構(gòu)特性,類似于傳統(tǒng)x86的RDT,可以把內(nèi)存及cache進(jìn)行隔離劃分,可以避免系統(tǒng)抖動(dòng)及云環(huán)境下多租戶之間的相互影響。
使用基于Arm Neoverse平臺(tái)的服務(wù)器,可以獲得更高的性能,更低的功耗,以及最終帶來更低的部署成本。給大家列一個(gè)端到端的例子,上圖中包含網(wǎng)絡(luò)服務(wù)的端到端的解決方案,可以看到從整個(gè)解決方案中的各種軟件,Arm都有相應(yīng)的性能提升,比較熟悉的包括前端的web服務(wù)、反向代理、防火墻,后端的數(shù)據(jù)庫、緩存,以及業(yè)務(wù)處理的Java、視頻編解碼等,Arm系統(tǒng)相對(duì)于同代的x86系統(tǒng),都有20%以上的性能優(yōu)勢(shì)。
相對(duì)于第一代N1來說,N2在各種應(yīng)用負(fù)載上均有大幅的性能提升,在MemcacheD、MySQL、NGINX上分別有30%、29%、48%的性能提升。
上圖中為大家展示的是我們基于Neoverse N2的倚天G8y實(shí)例,和傳統(tǒng)x86實(shí)例的實(shí)測(cè)對(duì)比結(jié)果,我們對(duì)Web服務(wù)器場(chǎng)景進(jìn)行測(cè)試,使用默認(rèn)的編譯器及軟件版本,最終測(cè)試得到的結(jié)果顯示,對(duì)于HTTP場(chǎng)景下,G8y實(shí)例相對(duì)于x86實(shí)例有20%的性能優(yōu)勢(shì)。如果再考慮加密層面,針對(duì)HTTPS進(jìn)行測(cè)試會(huì)有38%的性能優(yōu)勢(shì)。倚天G8y實(shí)例將于11月15號(hào)正式商用,相應(yīng)的測(cè)試參數(shù)都在上圖中列了出來,大家可以參考進(jìn)行對(duì)比測(cè)試。
同時(shí)我們也進(jìn)行了內(nèi)存數(shù)據(jù)庫Redis的測(cè)試,在pipeline參數(shù)分別設(shè)置為1、50、100的情況下,基于倚天710芯片的g8y實(shí)例相對(duì)于x86實(shí)例分別有10%、20%,36%的性能收益。其中整個(gè)軟件都是直接用現(xiàn)有的開源軟件項(xiàng)目直接下載并直接編譯安裝,無需經(jīng)過任何手動(dòng)優(yōu)化即可獲得圖中的結(jié)果。
03 有效操作優(yōu)化保障代碼安全,實(shí)現(xiàn)性能提升
在上文中我們已經(jīng)看到,Arm本身有很完善的軟件生態(tài),尤其在云原生領(lǐng)域,用戶在使用的時(shí)候,基本無需進(jìn)行特殊代碼改動(dòng),接近于開箱即用的場(chǎng)景,我這邊給到大家的遷移建議主要是針對(duì)一些自研非開源的軟件,尤其是大家之前的軟件中使用了一些針對(duì)x86系統(tǒng)的手動(dòng)優(yōu)化,在這些場(chǎng)景下,主要是在SIMD并發(fā)處理和內(nèi)存訪問優(yōu)化方面給大家提一些建議。
首先是SIMD單指令多數(shù)據(jù)的優(yōu)化,通過使用這種技術(shù),我們可以在一條指令中同時(shí)執(zhí)行多個(gè)操作,提高操作并行度,進(jìn)而最終提高IPC。Arm架構(gòu)主要包含兩個(gè)架構(gòu)擴(kuò)展,Neon和SVE,特別適合用在一些數(shù)據(jù)量比較大的處理場(chǎng)景,起到加速作用,例如視頻編解碼、圖形圖像處理、音頻語音處理、壓縮與解壓縮,以及一些網(wǎng)絡(luò)的處理等等。
首先來看Neon,我們可以把一個(gè)128比特的寄存器,當(dāng)做是幾個(gè)元素的集合,元素的大小可以是8、16、32、64位,元素可以被當(dāng)作整數(shù)或者浮點(diǎn)數(shù)進(jìn)行處理,但是要保證這里面的每個(gè)元素和數(shù)據(jù)類型是相同的,對(duì)應(yīng)的元素會(huì)組成一個(gè)通道,當(dāng)我們執(zhí)行一條Neon指令的時(shí)候,就可以同時(shí)處理多個(gè)數(shù)據(jù)元素,提高效率。
再看SVE架構(gòu)擴(kuò)展,其功能和Neon類似,但SVE相比Neon主要有兩個(gè)方面的優(yōu)勢(shì):
1、從架構(gòu)角度看,Neon寄存器寬度固定為128比特,限制了它的擴(kuò)展。SVE在架構(gòu)上允許從128一直到2048比特的位寬,只要是128比特的整數(shù)倍就可以,給了設(shè)計(jì)者更大的靈活度。
2、從軟件角度看,SVE在軟件上不需要關(guān)心Vector具體的寬度,開發(fā)人員只需要寫一套代碼,就可以運(yùn)行在不同硬件上。
關(guān)于使用Neon和SVE加速,最常用的方式是通過傳入一些編譯選項(xiàng),或者編譯器識(shí)別當(dāng)前CPU類型去自動(dòng)應(yīng)用Neon和SEV加速。但如果大家發(fā)現(xiàn)了一些熱點(diǎn)想要手動(dòng)進(jìn)行優(yōu)化的時(shí)候,建議直接用intrinsics方式,相對(duì)于匯編代碼,代碼邏輯更清晰且更容易編寫,同時(shí)也便于編譯器進(jìn)一步進(jìn)行性能優(yōu)化。
關(guān)于性能優(yōu)化的例子:Arm在SPDK當(dāng)中應(yīng)用Neon對(duì)算法進(jìn)行優(yōu)化,無論編碼還是解碼,基本上都有大約2倍的性能提升,在SPDK內(nèi)存清零操作中,使用SVE加速獲得了8倍的性能提升。右側(cè)(上圖)是代碼的示例,通過代碼示例,在右下角也可以看到,這套代碼沒有具體vector寬度的指定,不管最終SVE硬件的寬度是128還是256, 都可以直接運(yùn)行。另外也可以看到這個(gè)SVE版本的循環(huán)沒有針對(duì)尾循環(huán)的特殊處理,因?yàn)镾VE擴(kuò)展配合特殊的循環(huán)指令以及相應(yīng)的掩碼預(yù)測(cè)寄存器,可以自動(dòng)處理尾循環(huán)。
Arm和傳統(tǒng)x86 CPU之間一個(gè)很顯著的區(qū)別是它們的內(nèi)存模型(memory model)。大家最直觀的內(nèi)存序是順序內(nèi)存序(SC),這種情況下所有的內(nèi)存操作都不會(huì)亂序,好處是容易理解,但對(duì)于CPU的實(shí)現(xiàn)限制太嚴(yán),會(huì)嚴(yán)重影響CPU性能。目前比較多的是x86采用的TSO模型,相對(duì)于第一種SC,解除了一些限制,允許存儲(chǔ)和加載這兩個(gè)操作亂序。
Arm架構(gòu)則采用了一種限制更少的memory model,這種模型下所有的內(nèi)存加載和存儲(chǔ)操作都可以進(jìn)行亂序,這樣給了微架構(gòu)設(shè)計(jì)者最大的自主權(quán),可以帶來更高的性能。
Arm為了提高性能允許各種內(nèi)存操作進(jìn)行亂序,當(dāng)我們需要按照一種固定的順序執(zhí)行時(shí),Arm提供了各種內(nèi)存柵欄來保證內(nèi)存訪問的順序,幫助大家來保證代碼正確性。從左到右(上圖)分別是Load-Acquire / Store-Release半柵欄、DMB全柵欄、DSB、ISB,屏障的限制越來越強(qiáng),對(duì)性能的影響也越來越大,在保障正確性的前提下,盡量選擇比較弱的柵欄,做到恰到好處地實(shí)現(xiàn)正確性和性能的平衡。
我們的建議是寫代碼時(shí),先選擇比較強(qiáng)的柵欄,保證代碼的正確性,后續(xù)進(jìn)行代碼評(píng)測(cè)優(yōu)化的過程中如果發(fā)現(xiàn)成為瓶頸的話,再選用一些比較弱的柵欄進(jìn)行優(yōu)化。
上圖是Arm對(duì)DPDK Virtio應(yīng)用進(jìn)行優(yōu)化的例子,包含前端后端,通過一個(gè)隊(duì)列進(jìn)行通信,相當(dāng)于一個(gè)生產(chǎn)者一個(gè)消費(fèi)者。這里最初使用的是全柵欄,后續(xù)在性能測(cè)試時(shí)發(fā)現(xiàn)是一個(gè)瓶頸,做優(yōu)化時(shí)把相應(yīng)的全柵欄DMB換成了半柵欄后,在PVP測(cè)試場(chǎng)景下獲得了20%的性能提升,只要改動(dòng)這一處即可達(dá)到性能提升的效果。
這里說明一下,Arm memory model是一種硬件定義的內(nèi)存模型,對(duì)于大多數(shù)情況,我們并不建議大家直接操作依賴于具體架構(gòu)的匯編代碼,一種更推薦的方式是借助于語言定義的memory model,例如我們可以使用C++11或者C11的memory model,調(diào)用其API,這樣工具鏈會(huì)處理語言的memory model并自動(dòng)映射到最終硬件架構(gòu)的memory model,這樣的操作方便移植且不容易出錯(cuò)。
最后再次強(qiáng)調(diào),與內(nèi)存序相關(guān)的編程非常復(fù)雜,memory model是非常容易出問題的點(diǎn),我們必須仔細(xì)權(quán)衡其正確性和性能。為了代碼的安全,建議大家在開發(fā)初期可以使用一些較強(qiáng)的屏障指令保證邏輯正確,在后續(xù)的代碼優(yōu)化過程當(dāng)中,通過移除一些冗余屏障或在必要時(shí)切換到較輕的屏障,最終達(dá)到提高性能的目的。
以上就是我要分享的全部?jī)?nèi)容,謝謝大家。
審核編輯 :李倩
-
cpu
+關(guān)注
關(guān)注
68文章
11080瀏覽量
217082 -
遷移
+關(guān)注
關(guān)注
0文章
34瀏覽量
8061 -
生態(tài)系統(tǒng)
+關(guān)注
關(guān)注
0文章
707瀏覽量
21057
原文標(biāo)題:安謀科技(Arm China)高級(jí)軟件經(jīng)理別再平:Neoverse生態(tài)與軟件遷移
文章出處:【微信號(hào):Arm軟件開發(fā)者,微信公眾號(hào):Arm軟件開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Arm Neoverse N2平臺(tái)實(shí)現(xiàn)DeepSeek-R1滿血版部署

解讀基于Arm Neoverse V2平臺(tái)的Google Axion處理器
Arm助力開發(fā)者加速遷移至Arm架構(gòu)云平臺(tái) Arm云遷移資源分享
Arm Neoverse CMN S3 推動(dòng)Compute Express Link (CXL) 存儲(chǔ)創(chuàng)新

如何在基于Arm Neoverse平臺(tái)的CPU上構(gòu)建分布式Kubernetes集群

使用智能工具簡(jiǎn)化向Arm平臺(tái)的遷移過程

利用Arm Kleidi技術(shù)實(shí)現(xiàn)PyTorch優(yōu)化

強(qiáng)悍的AWS Graviton4處理器及其背后的Arm Neoverse
為什么開發(fā)者都往Arm平臺(tái)遷移
Arm Neoverse如何加速實(shí)現(xiàn)AI數(shù)據(jù)中心
基于Arm Neoverse的微軟全新Azure虛擬機(jī)上線
Arm全面設(shè)計(jì)助力Arm架構(gòu)生態(tài)發(fā)展
基于高通主板的ARM架構(gòu)服務(wù)器
從STM32到基于Arm的MSPM0的遷移指南

從遷移到基于Arm STM32的MSPMO指南

評(píng)論