Linux可能追求x86_64微体系结构功能级别

2020-07-11 06:49:00

源于最近GNU glibc在英特尔和AMD产品家族中使用更新的指令集扩展更好地处理现代CPU优化的工作,开源/Linux开发人员正在谈论x86-64微体系结构功能级别的概念。这些功能级别的想法是将基本x86_64以外的受支持指令分解为Intel和AMD处理器在合理时间支持的指令。虽然较新的Intel/AMD CPU通常支持更多的指令集扩展,但考虑到现代Intel Atom CPU只支持Core和Xeon CPU支持的扩展子集,当前x86_64 CPU功能的处理涉及其他令人头疼的问题,因此Red Hat开发人员正在讨论这些合理合理的功能级别,英特尔和AMD工程师正在讨论这些功能级别。有了这些功能级别,它将允许更好地隔离不同类别的x86_64 Intel/AMD CPU,并使Linux发行版更容易为其x86_64映像提供不同级别的支持或基本要求。该提案是由红帽的弗洛里安·韦默今天发出的,他正致力于Glibc HWCAPS的工作,作为更好地允许AMD禅宗优化的一部分。就Red Hat而言,他们已经讨论了提高Fedora的基本CPU要求,并计划在Red Hat Enterprise Linux9中放弃旧的CPU支持。对于RHEL9,他们已经讨论了支持AVX2 CPU的一个可能的基本要求,但似乎还没有一成不变的东西。目前,x86_64的这些不同特征级别被提出为:级别A-CMPXCHG16B、LAHF/SAHF、POPCNT、SSE3、SSE4.1、SSE4.2、SSSE3。仅略高于基本x86_64要求。B级-A级+AVX。英特尔桑迪桥(Intel Sandy Bridge)和AMD捷豹(AMD Jaguar)的年份。C级-B级+AVX2、BMI1、BMI2、F16C、FMA、LZCNT、MOVBE。大体上是英特尔哈斯韦尔时代的系统。D级-C级+AVX512F、AVX512BW、AVX512CD、AVX512DQ、AVX512VL。在这个阶段,以AVX-512为重点,只需当前的英特尔至强可扩展CPU和冰湖。显然,在未来几代CPU中,在x86-64级别概念的基础上可以很容易地引入额外的级别。如果对x86_64级别的方法达成一致,并达成一些共识,GNU和LLVM可以开始检测它们的库处理,以首先检查最优化的功能级别,返回到最基本/最旧的级别,直到与主机CPU匹配。从那里,当动态加载库并且存在所述库的多个版本时,它将尝试加载最受支持的版本,以便以最佳性能为目标。考虑到英特尔和AMD的众多不同CPU系列/代都有更合理的库/二进制文件子集需要管理,这种级别方法使事情变得简单得多。或者,前面提到的这些级别可以用于Linux发行版,使其基本要求超越传统的x86_64。现在,我们可以在多个不同项目的邮件列表上列出试探性的想法,看看讨论将走向何方,这将是一件很有趣的事情。