Linux 5.19將為支持Arm可伸縮矩陣擴(kuò)展(SME)做好所有基礎(chǔ)準(zhǔn)備工作??蓴U(kuò)展矩陣擴(kuò)展(SME)是Armv9-A的一個(gè)新擴(kuò)展,它建立在SVE/SVE2矢量擴(kuò)展的基礎(chǔ)上,允許矩陣疊瓦存儲(chǔ)、加載/存儲(chǔ)/插入/提取疊瓦矢量、SVE矢量的外積和流式SVE模式。帶有SME的流式SVE模式啟用了新的SME存儲(chǔ)和指令以及SVE2指令的一個(gè)子集,而離開流式模式后行為與SVE2沒有變化。
SME是一序列增強(qiáng)CPU構(gòu)架對(duì)矩陣運(yùn)算支持的最新更新,SME為支持矩陣運(yùn)算引入了一個(gè)新的編程模式和寄存器狀態(tài)。
SME是在可伸縮向量擴(kuò)展(Scalable Vector Extensions, SVE和SVE2)的基礎(chǔ)上建立的,并增加了有效處理矩陣的能力,主要功能包括:
矩陣tile的存儲(chǔ)
存取,插入,提取 tile向量,包括on-the-fly 轉(zhuǎn)置
計(jì)算SVE向量的外積(Outer product)
Streaming SVE 模式
您可以在community.arm.com了解更多關(guān)于Arm的SME。
除了Arm工程師為支持可伸縮矩陣擴(kuò)展而進(jìn)行的編譯器方面的修改外,內(nèi)核方面的修改也是必要的,這就是工程師一直在進(jìn)行的工作,而且現(xiàn)在似乎已經(jīng)為L(zhǎng)inux 5.19做好了準(zhǔn)備。
通過ARM64的Git倉(cāng)庫(kù),現(xiàn)在的for-next/sme分支包含了Arm可伸縮矩陣擴(kuò)展的內(nèi)核啟用工作。為了在未來(lái)帶有該擴(kuò)展的Arm CPU上啟用SME支持/使用,需要進(jìn)行各種內(nèi)核修改。這也包括為新的流模式和現(xiàn)有的SVE代碼的變化而暴露的ABI的文件,用于SME的使用。
現(xiàn)在,對(duì)可擴(kuò)展矩陣擴(kuò)展(SME)的基線支持已經(jīng)存在,引入Kconfig選項(xiàng)以使其可以被構(gòu)建。雖然功能注冊(cè)沒有對(duì)具有SME的系統(tǒng)在運(yùn)行時(shí)支持SVE提出強(qiáng)制性要求,但對(duì)流模式SVE的支持卻大多與普通SVE共享,因此其依賴于SVE。
除了需要這組SME補(bǔ)丁外,系統(tǒng)管理員還可以通過一個(gè)新的ARM64_SME構(gòu)建時(shí)間開關(guān)來(lái)切換對(duì)SME擴(kuò)展的支持。
如果沒有任何問題在最后一刻出現(xiàn),這個(gè)初始的Arm SME支持已經(jīng)準(zhǔn)備好在Linux 5.19主線中使用。
(舉報(bào))