被Armv9 重點(diǎn)引入的SVE2是何方神圣?
2021-04-06 12:10:34 EETOP編譯整理3月30日,Arm召開了最新架構(gòu)Armv9的發(fā)布會(huì),并展示了SVE的高級形式“ SVE2”的存在。
在Armv9發(fā)布時(shí),Arm發(fā)布了《SVE2簡介》,從這本白皮書中我們可以大概了解一下SVE2。
可伸縮矢量擴(kuò)展-SVE(Scalable Vector Extension)是Arm AArch64架構(gòu)下的下一代SIMD指令集,旨在加速高性能計(jì)算。
而SVE2本質(zhì)上是SVE的擴(kuò)展,但是最初的SVE是針對HPC的(因此第一個(gè)實(shí)現(xiàn)是富士通的A64FX),而SVE2實(shí)現(xiàn)了NEON兼容的指令。從某種意義上說,最大的不同是它被定位為NEON的后繼產(chǎn)品(Photo01)。
Photo01:正如我將在后面詳細(xì)解釋的那樣,它比SVE更易于使用。
Photo02展示了SVE2的主要功能,SVE是為HPC設(shè)計(jì)的,從某種意義上說,配置上已經(jīng)完全放棄了對NEON的兼容,但是SVE2是非常接近NEON的配置。
Photo02:顯示了指令的預(yù)期用途。
同時(shí),與SVE相比,它可以實(shí)現(xiàn)靈活的數(shù)據(jù)訪問,并可用于廣泛的應(yīng)用。雖然考慮到要維持對SVE的向后兼容性,但是只有ID 寄存器需要變更,反過來說只要對應(yīng)就可以了。藍(lán)色標(biāo)記的功能是NEON或SVE提供的功能。例如,在“ NEON型DSP指令”的情況下,它最初來自NEON一代。
這種處理方式原本是DSP的特長,這種指令被稱為DSP式的 "指令",但已經(jīng)被原封不動(dòng)地接管了。但是,究竟是指令本身兼容,還是編寫了具有相同功能的指令(指令本身不兼容),目前還不清楚。換句話說,目前還不清楚是否會(huì)包含類似DSP的 "機(jī)制",比如Helium中包含的Low Overhead Branch Extension。
“Cross-lane match detect/count”以后的特征主要是繼承自SVE。
新功能是與比特Bit shuffle和加密相關(guān)的指令。由于指令集列表尚未發(fā)布(當(dāng)前僅是SVE),所以目前還不是很清楚,但是看起來它的配置與x86 SSE / AVX非常相似。
從NEON轉(zhuǎn)到這里有一個(gè)小障礙。是指將操作的結(jié)果做成不同大小時(shí)的對應(yīng)關(guān)系(Photo03)。
Photo03:所以在NEON中使用這樣的用法的情況下,重寫起來有點(diǎn)麻煩也是沒辦法的事
NEON的寬度固定為128bit,而SVE/SVE2的最小單位為128bit,可擴(kuò)展到2048bit寬度。仔細(xì)想想,NEON的方法也不是不可以,但是需要考慮一下。特別是可擴(kuò)展性部分,很麻煩,需要根據(jù)SVE寄存器的大小,從程序上處理 "數(shù)據(jù)放在哪里"。與此相比,SVE方法具有可擴(kuò)展性和易部署性。
這是NEON與128/256 / 512bit SVE(Photo04)之間的性能比較。
Photo04:柱狀圖(左軸)為矢量化率,折線(右軸)為性能比
這是之前在安藤教授的文章中出現(xiàn)的一張幻燈片,根據(jù)應(yīng)用的不同,性能提升率自然也會(huì)發(fā)生變化,但差別還是蠻大的:在NAS Parallel Benchmark中提升了2倍,在ASC Coral HACC中提升了8倍。
那么SVE2呢? SVE2的性能與HPC的SVE相同(SVE2并沒有進(jìn)一步提高性能),但DSP/多媒體的性能是128bit的1.2倍,256bit的2倍,512bit的3.5倍(Photo05)。
Photo05:即使使用相同的寬度(128位),速度也將快約1.2倍,但本質(zhì)在于,它很容易加寬寬度并相應(yīng)地加快速度。
Photo06是對范圍更廣的應(yīng)用程序的比較。
Photo06:與上面的Photo05一樣,豎線是矢量化率,折線是性能提高率。比較為NEON×2與128位SVE2×2與256位SVE2×2
如果矢量化效果不好(如eembc_automotive_idctrn01),性能與VNEON相差不大,但如果矢量化效果好,性能將大大提高。
順便說一句,除此以外,在Linano Connect Bangkok 2019上推出的“ Arm Architecture中的新技術(shù)”不僅包括SVE2,還包括筆者在此介紹的Transaction Memory(Photo07)。
Photo07:Arm本身還是只在少數(shù)CPU IP中支持多線程,但也有一些CPU支持4路SMT,比如Marvell(原Broadcom的)Thunder X2。內(nèi)存被認(rèn)為對同步這些處理器很有用。
首先,雖然對事務(wù)內(nèi)存(Transaction Memory)的研究已經(jīng)廣泛開展了一段時(shí)間,但I(xiàn)BM的POWER8是第一個(gè)在量產(chǎn)產(chǎn)品中實(shí)現(xiàn)的。接下來,英特爾在Haswell一代支持它為TSX(事務(wù)同步擴(kuò)展),但以AMD為例,現(xiàn)在也不支持事務(wù)存儲(chǔ)。它不一定是一個(gè)廣泛使用的功能。
Arm目前還沒有宣布會(huì)支持這一功能,但據(jù)說將來的Arm處理器將支持它 (Photo07)。
在執(zhí)行TME時(shí),自然會(huì)假設(shè)有兩個(gè)或更多的線程會(huì)嘗試訪問相關(guān)的內(nèi)存區(qū)域,因此在某些情況下可能無法建立事務(wù)(回滾)。其實(shí)現(xiàn)方式是將每個(gè)線程的狀態(tài)寫入狀態(tài)寄存器并返回(Photo09)。
Photo 08
Photo09
順便說一句,事務(wù)內(nèi)存通常有兩種類型的方法,即HLE(硬件鎖定清除)和RTM(受限跨轉(zhuǎn)錄存儲(chǔ)),并且Intel支持這兩種方法,但是Arm似乎僅支持HLE(照片10)。
Photo10:不幸的是,沒有關(guān)于為什么不支持RTM的解釋
HLE和RTM之間的區(qū)別在Ando博士的評論中也有詳細(xì)介紹,因此,如果您閱讀此書,請查看用法示例(Photo 11),它與Intel的TSX盡可能接近。
Photo11:確切地說,這類似于將HLE與TSX一起使用
截至目前,Arm還沒有透露哪一代Arm內(nèi)核將支持TME,但似乎不久之后LLVM和GNU Tools/Glibc就已經(jīng)支持了。當(dāng)然,在智能手機(jī)中使用TME的意義不大,所以我認(rèn)為它只適用于Neoverse,但如果在不久的將來支持它,我不會(huì)感到驚訝。
EETOP 官方微信
創(chuàng)芯大講堂 在線教育
半導(dǎo)體創(chuàng)芯網(wǎng) 快訊
相關(guān)文章