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