各位好,
Intel同事向Compiler SIG提议编译器默认使能x86-64-v2来构建OpenEuler 23.09创新版本,并于今天在TC例会上进行了分享,TC原则上同意在创新版本上进行预验证。 另外,TC建议调研社区的伙伴(特别是相关OSV和云厂商)对此proposal的建议,请各位在此邮件上反馈意见和建议即可,感谢~
如下是x86-64微架构level:
* x86-64 * The current default microarchitecture level * CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 * Intel Pentium4 launched in 2000, AMD K8 Hammer in 2003 * x86-64-v2 * CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 * Intel Nehalem launched in 2008, Silvermont (Atom core) in 2013, AMD Piledriver in 2012 * x86-64-v3 * AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE * Intel Haswell launched in 2013, Gracemont (Atom core) in Nov. 2021, AMD Excavator in 2015 * x86-64-v4 * AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL * Intel Skylake launched in 2015, AMD Zen4 in 2022
不同的level代表能支持的微架构级别,目前openEuler的GCC默认配置成x86-64,该提议建议默认配置成x86-64-v2,从上表可以看到增加了新指令的支持,减少了对老旧硬件的支持。
假设:(1)在生产环境中运行超过10年的硬件并不多 (2)此类硬件很少需要升级到最新的操作系统发行版 收益:(1)摆脱支持非常旧的硬件的限制(>10年); (2)将微体系结构的最低级别提高到Intel Nehalem或 AMD Piledriver; (3)使用更多的矢量指令,以提升应用性能; (4)期望开箱即用的性能收益; 影响:对早于x86-64-v2的硬件不再支持/兼容。
RHEL 9默认配置成了x86-64-v2,供参考:https://developers.redhat.com/blog/2021/01/05/building-red-hat-enterprise-li...
Compiler SIG 赵川峰(Steve)