Clovis_Sangrail Asked: 2024-11-19 22:54:43 +0800 CST2024-11-19 22:54:43 +0800 CST 2024-11-19 22:54:43 +0800 CST 64 位 Linux 和 x86_64-v1 微架构 772 在撰写本文时(2024 年 11 月),是否仍有任何当前维护的 64 位 Linux 发行版可以在 x86_64-v1 微架构级硬件上成功安装和运行? 或者所有当前维护的 64 位发行版是否都需要至少支持 x86_64-v2 指令集的 CPU? 64bit 2 个回答 Voted Stephen Kitt 2024-11-19T22:57:55+08:002024-11-19T22:57:55+08:00 Debian 的amd64变体仍然支持所有 64 位 x86 CPU,包括“v1”基线(比较相应的部分i386,其中提到了不受支持的 32 位 CPU)。 除了 RHEL 和 Tumbleweed,我认为大多数发行版仍然支持 v1 基线。Ubuntu有可用的 v3 测试映像,但发行版默认仍然是 v1。 Best Answer Austin Hemmelgarn 2024-11-20T10:52:35+08:002024-11-20T10:52:35+08:00 截至 2024-11-19,绝大多数发行 64 位 x86 软件包的 Linux 发行版都发行了针对基准 x86-64(相当于 AMD K8 或 Intel Prescott 硬件)编译的所有代码。但也有一些例外,有些发行版需要 x86-64-v2 或 x86-64-v3,而一些可以说是更聪明的发行版正在考虑提供使用此类构建的选项,但仍提供基准构建,但一般来说,除非您只关注“大型”发行版,否则它们是相对少数。 部分原因在于希望保持兼容性,但更重要的原因还在于,除非您明确告诉它们使用其他东西,否则 GCC 和 Clang 都只会生成基线 x86-64 代码,而大多数发行版都不会明确告诉它们做其他事情。 更小的部分原因还在于,更高的微架构级别是否对 x86-64 产生重大影响在很大程度上取决于您正在做的事情。 x86-64-v2 中的一小部分指令具有普遍用途(cmpxchg16b 可能是最好的例子),但更高级别中的许多东西(包括 x86-64-v2 的大部分内容)更加具体(例如,popcnt对于一小部分非常具体的事情非常有用(以至于 GCC 和 Clang 都可以识别它在 C/C++ 中所做的简单实现并用该单个指令替换它们),但在这些情况之外绝对没用)。
Debian 的
amd64
变体仍然支持所有 64 位 x86 CPU,包括“v1”基线(比较相应的部分i386
,其中提到了不受支持的 32 位 CPU)。除了 RHEL 和 Tumbleweed,我认为大多数发行版仍然支持 v1 基线。Ubuntu有可用的 v3 测试映像,但发行版默认仍然是 v1。
截至 2024-11-19,绝大多数发行 64 位 x86 软件包的 Linux 发行版都发行了针对基准 x86-64(相当于 AMD K8 或 Intel Prescott 硬件)编译的所有代码。但也有一些例外,有些发行版需要 x86-64-v2 或 x86-64-v3,而一些可以说是更聪明的发行版正在考虑提供使用此类构建的选项,但仍提供基准构建,但一般来说,除非您只关注“大型”发行版,否则它们是相对少数。
部分原因在于希望保持兼容性,但更重要的原因还在于,除非您明确告诉它们使用其他东西,否则 GCC 和 Clang 都只会生成基线 x86-64 代码,而大多数发行版都不会明确告诉它们做其他事情。 更小的部分原因还在于,更高的微架构级别是否对 x86-64 产生重大影响在很大程度上取决于您正在做的事情。 x86-64-v2 中的一小部分指令具有普遍用途(cmpxchg16b 可能是最好的例子),但更高级别中的许多东西(包括 x86-64-v2 的大部分内容)更加具体(例如,popcnt对于一小部分非常具体的事情非常有用(以至于 GCC 和 Clang 都可以识别它在 C/C++ 中所做的简单实现并用该单个指令替换它们),但在这些情况之外绝对没用)。