Windows 10 64 位要求:我的 CPU 是否支持 CMPXCHG16b、PrefetchW 和 LAHF/SAHF?

roe*_*bsi 15 cpu windows-7 64-bit windows-10-upgrade

我目前正在尝试找出将我略显过时的笔记本(Windows 7,64 位)更新到 Windows 10 是否是个好主意。问题是 Microsoft 在其Windows 10 规范中声明要使用64 位版本的 Windows 10,需要支持 CMPXCHG16b、PrefetchW 和 LAHF/SAHF 的处理器。我知道我的处理器是 64 位(Intel Core i5-2430M @ 2.40 GHz),但我不知道如何确定它是否支持 CMPXCHG16b、PrefetchW 和 LAHF/SAHF,我也不知道这些是什么意思。

我尝试使用谷歌并没有得到对我有意义的结果,只有我的 i5 和类似的 AMD 处理器的一些比较。我还查看了英特尔的 ARK 网站。如果有人能指出我可以在哪里获得更多信息,我将不胜感激。

bwD*_*aco 24

您的处理器支持这些功能。事实上,运行 64 位 Windows 8.1 需要相同的功能。所有现代处理器都满足此要求,并且通常仅适用于某些 Core 2 和更早版本的处理器。

这些指令是什么?

  • 早期的 AMD64 处理器缺少该CMPXCHG16B指令,这是CMPXCHG8B大多数 80486 后处理器上存在的指令的扩展。与 类似CMPXCHG8BCMPXCHG16B允许对八进制词进行原子操作。这对于在大于指针大小的数据上使用比较和交换的并行算法很有用,这在无锁和无等待算法中很常见。没有CMPXCHG16B人必须使用变通方法,例如临界区或替代的无锁方法。它的缺失还阻止了 Windows 8.1 之前的 64 位 Windows 拥有大于 8 TB 的用户模式地址空间。64 位版本的 Windows 8.1 需要该说明。
  • PREFETCHW指令提示处理器将数据从内存预取到缓存中以备写入(英特尔指令集参考,PDF 第 888 页)。这条指令是在 AMD 的3DNow! 指令集,除PREFETCHPREFETCHW指令外已弃用。自 Athlon 64 以来的所有 AMD 处理器都支持此指令。但是,在Nehalem之前的某些较旧的 64 位 Intel 处理器中可能不支持此指令。

  • LAHFSAHF负载和存储的内容AH登记到标志寄存器,分别为(英特尔指令集,PDF页面530和1025)。一些没有硬件虚拟化 (VT-x) 功能的旧英特尔处理器在 64 位长模式下运行时不支持此指令;这些主要限于某些早于Nehalem的低端处理器。一些非常老的 AMD64 处理器也缺少此功能。

  • 早期的 AMD64 和 Intel 64 CPU 在 64 位模式下缺少 LAHF 和 SAHF 指令。AMD 于 2005 年 3 月在其 Athlon 64、Opteron 和 Turion 64 修订版 D 处理器中引入了这些指令(也在 64 位模式下),而英特尔于 2005 年 12 月在 Pentium 4 G1 步进中引入了这些指令。 Windows 8.1 的 64 位版本需要这个功能。

这对我意味着什么?

  • Broadwell 中的 PREFETCHW 支持是新的(对于 Intel),因此 Windows 8.1 当然不需要它。证据:[gcc 编译](https://godbolt.org/g/n0RTkL) `__builtin_prefetch(p,1,2)` 使用 `-march=haswell` 到 PREFETCHT1,以及使用 `-march=broadwell` 到 PREFETCHW。此外,Linux `/proc/cpuinfo` 转储 [来自这个 Haswell CPU 不包括 3dnowprefetch](https://lists.samba.org/archive/linux/2015-May/034392.html),但它确实在布罗德韦尔和斯凯莱克。有关标志的含义,请参阅 http://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean。 (2认同)

归档时间:

查看次数:

62204 次

最近记录:

6 年,9 月 前