新的CPU指令是否经常使用?兼容性是如何实现的?

问题描述 投票:0回答:0

我正在查看为最近发布的游戏指定的最低 CPU,这让我开始考虑 CPU 兼容性。 x86 和 AMD64 背后的主要卖点之一是向后兼容性。然而,每一代基于 x86 的新一代 CPU 通常都包含新的扩展,支持新的指令。

我运行 Gentoo Linux 并为我的用户空间软件创建本地构建,试图最大限度地提高我系统上软件的性能。我也喜欢它,因为它给了我很多控制权和创建自定义补丁的能力,并在包管理器中轻松重建。 然而,如今,从源代码构建软件使我成为少数计算机用户。这让我想到了我的主要问题,虽然 Linux 是一个值得探索的有趣地方,但我主要好奇这是如何在 Windows 和 Mac OSX 中完成的。我的问题是这些新指令是否被大多数人实际使用,如果是,如何保持兼容性?

我的理解是,在二进制 x86 发行版上,软件是为运行该发行版所需的某个祖先和最低 CPU 构建的。从那时起,每个 x86 CPU 都应该能够运行该软件,因为它们向后兼容。但是,这意味着这些发行版不会为拥有较新 CPU 的用户利用较新的指令。某些软件可能会尝试在运行时检测 CPU 功能。然后它可以根据结果填写一个函数指针表,或者以其他方式调整它的执行路径,以根据最适合该 CPU 特性的指令来使用更新的指令。

Beyond Linux 是我真的不知道如何处理这些问题的地方。 Windows 程序是按照一些旧的 CPU 标准构建的吗? 但如果是这样的话,所有这些新的闪亮扩展将很少被任何用户或软件利用(除非使用运行时检测)。 我怀疑 Windows 内核在旧硬件上使用较新的 CPU 指令并模拟行为时会捕获非法指令异常。然而,这是如何处理的? 或者只是在某些软件的情况下,比如我一开始提到的游戏,他们正在构建旧模型,慢慢地,那些简单的旧 CPU 不再可用运行较新的软件。我运行的 CPU 已有 11 年历史。也许我很快就无法运行常见的Windows应用程序了

linux windows x86 x86-64 cpu-architecture
© www.soinside.com 2019 - 2024. All rights reserved.