新的 ARM SVE 指令的可移植性如何?

How portable are the new ARM SVE instructions?

我正在寻找有关 Arm 新的可扩展向量单元 (SVE) 的信息。对我来说,用能够并行计算 2048 位的蜜蜂进行图像处理等看起来非常好。但我不确定它是否会在每个 Armv8(如 RPI 3)或某些超级计算机上都是 运行。有没有人知道它将包含在 Linux 内核中的时间表。

我阅读了 2016 年 8 月的公告中的link。但我希望获得更新的信息。

ARMv8 SVE 未融入 phones/SBCs 中使用的标准 ARMv8 处理器。它是可供 CPU designers/fabricators 使用的可选处理器扩展。这个想法是,ARM 许可证持有者可以采用标准的 ARMv8 许可证并构建具有更宽 SIMD 单元的 CPU。由于 SVE 的实施,此 'custom' ARMv8 CPU 将与标准 ARMv8 软件兼容。您可以在这里阅读更多相关信息:

https://www.community.arm.com/processors/b/blog/posts/technology-update-the-scalable-vector-extension-sve-for-the-armv8-a-architecture

要从标准中引用 ,ARMv8 体系结构参考手册 DDI 0487C.a A1.7 部分 "ARMv8 architecture extensions" 说:

SVE is an optional extension to ARMv8.2. That is, SVE requires the implementation of ARMv8.2.

接下来的一节说 SVE 记录在一个单独的文档中:"ARM Architecture Reference Manual Supplement, The Scalable Vector Extension (SVE), for ARMv8-A",目前可以从以下位置下载:https://developer.arm.com/docs/ddi0584/latest/arm-architecture-reference-manual-supplement-the-scalable-vector-extension-sve-for-armv8-a

该页面的 ZIP 文件中有一个 PDF。

因此,如果要可移植性,就必须依赖比汇编更高级的构造,例如C语言。

根据 ARMv8 参考手册,可以通过读取 ID_AA64PFR0_EL1.SVEhere is an example.

的值来检查 SVE 支持