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


12

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

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


1
我想你太担心了。i5的是相对较新的,会很好。但是,通常的经验法则是除非您有> 4GB的RAM,否则不要运行64位,这种开销会使运行速度变慢而不是变快。Windows 32bit只能直接访问不到4GB的空间,因此只有经过检查,才值得使用64bit
朱利安·奈特

1
如果可以升级到Windows 8.1,则可以升级到Windows10。如果需要,也可以对两者进行兼容性检查。
Ramhound

在Windows 7下运行一个显示CPUID数据的工具,它会告诉您CPU是否支持期货。我使用的是I5-3xxxM,并且Windows 8.1在这里可以运行,因此具有3个功能。您仅落后1代,因此它还应该支持所有功能。
magicandre1981

1
@JulianKnight我建议64位具有2或3gb和专用图形卡的任何人使用,因为图形卡内存也需要适合地址空间。如果您有4gb的ram和2gb的图形卡,那么您只是浪费了2gb的ram,并且比安装64位的情况更糟。
Mokubai

1
不用担心 除了某些早期的Atom或x86_64 CPU外,十年前(略多于)的所有Intel CPU都可以运行Windows 10,而不会出现问题
phuclv 2015年

Answers:


21

您的处理器支持这些功能。实际上,运行64位Windows 8.1需要相同的功能。所有现代处理器都可以满足此要求,并且通常仅对某些Core 2和更早版本的处理器存在此问题。

这些指示是什么?

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

  • LAHFSAHF负载和存储的内容AH登记到标志寄存器,分别为(英特尔指令集,PDF页面530和1025)。在64位长模式下运行时,某些没有硬件虚拟化(VT-x)功能的较旧的Intel处理器不支持此指令。这些主要限于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位版本需要此功能。

这对我意味着什么?


1
尽管应该指出,尽管这些特定功能与运行Windows 8.1所需的功能相同,但并非所有运行Windows 10所需的CPU功能都需要运行Windows 8.1。特别是,PAE和NX都没有 8.1下必需的,但必须为10
qasdfdsaq

1
PREFETCHW支持是Broadwell中新的(对于Intel),因此Windows 8.1当然不需要。证据:GCC编译 __builtin_prefetch(p,1,2)到PREFETCHT1用-march=haswell,并与PREFETCHW -march=broadwell。而且,从此Haswell CPU进行的Linux /proc/cpuinfo转储不包括3dnowprefetch,但在Broadwell和Skylake上都包含。有关标志的含义,请参见unix.stackexchange.com/questions/43539/…
彼得·科德斯

1
也许您在想至少自PentiumIII起就存在的SSE PREFETCHh指令。
彼得·科德斯

1
@bwDraco:是的。它的0F 0D r/m8机器代码编码在不支持PREFETCHW的CPU上解码为多字节NOP,因此显然不存在兼容性问题。(预取指令的行为不会影响正确性,只会影响性能。)我在Core2Duo CPU上的运行asm程序中对其进行了尝试prefetchw [rsp],该指令的执行没有错误。但我99%确信它没有任何作用。
彼得·科德斯

1
好的,这里有两个“支持”的含义:Win8.1显然要求PREFETCHW(0F 0D m8)不会作为非法指令出错,至少在P4之后的Intel CPU上就是这种情况,至少如此处所述。他们将其作为无操作对象运行(直到Broadwell),对于Win8.1当然就足够了(因为预取无论如何都是推测性提示,不会影响正确性)。我没有意识到NOP行为,或者在较旧的CPU上却有所不同。
彼得·科德斯

1

如果可以在Windows中使用命令行,则:

PS:在Linux中,您将使用 grep flags /proc/cpuinfo | head -1


0

Microsoft提供了一个名为coreinfo的实用程序,该实用程序提供的功能类似于cat /proc/cpuinfoLinux。

您必须进行搜索,但是您可以在此处找到相关信息,

LAHF-SAHF       -       Supports LAHF/SAHF instructions in 64-bit mode
NX              -       Supports no-execute page protection
CX16            *       Supports CMPXCHG16B instruction
X64             *       Supports 64-bit mode
PREFETCHW       -       Supports PREFETCHW instruction

-意味着CPU缺少该功能,*意味着它具有该功能。

现在看来,Microsoft实际上建议coreinfo在该文档页面上做出决定,

Coreinfo是一个工具,可用于确认您的CPU具有哪些功能。+

我的处理器Intel E7525的完整结果看起来像这样,

Coreinfo v3.31 - Dump information on system CPU and memory topology
Copyright (C) 2008-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

Intel(R) Xeon(TM) CPU 3.40GHz
x86 Family 15 Model 4 Stepping 3, GenuineIntel
Microcode signature: 00000005
HTT             *       Hyperthreading enabled
HYPERVISOR      -       Hypervisor is present
VMX             -       Supports Intel hardware-assisted virtualization
SVM             -       Supports AMD hardware-assisted virtualization
X64             *       Supports 64-bit mode

SMX             -       Supports Intel trusted execution
SKINIT          -       Supports AMD SKINIT

NX              -       Supports no-execute page protection
SMEP            -       Supports Supervisor Mode Execution Prevention
SMAP            -       Supports Supervisor Mode Access Prevention
PAGE1GB         -       Supports 1 GB large pages
PAE             *       Supports > 32-bit physical addresses
PAT             *       Supports Page Attribute Table
PSE             *       Supports 4 MB pages
PSE36           *       Supports > 32-bit address 4 MB pages
PGE             *       Supports global bit in page tables
SS              *       Supports bus snooping for cache operations
VME             *       Supports Virtual-8086 mode
RDWRFSGSBASE    -       Supports direct GS/FS base access

FPU             *       Implements i387 floating point instructions
MMX             *       Supports MMX instruction set
MMXEXT          -       Implements AMD MMX extensions
3DNOW           -       Supports 3DNow! instructions
3DNOWEXT        -       Supports 3DNow! extension instructions
SSE             *       Supports Streaming SIMD Extensions
SSE2            *       Supports Streaming SIMD Extensions 2
SSE3            *       Supports Streaming SIMD Extensions 3
SSSE3           -       Supports Supplemental SIMD Extensions 3
SSE4a           -       Supports Streaming SIMDR Extensions 4a
SSE4.1          -       Supports Streaming SIMD Extensions 4.1
SSE4.2          -       Supports Streaming SIMD Extensions 4.2

AES             -       Supports AES extensions
AVX             -       Supports AVX intruction extensions
FMA             -       Supports FMA extensions using YMM state
MSR             *       Implements RDMSR/WRMSR instructions
MTRR            *       Supports Memory Type Range Registers
XSAVE           -       Supports XSAVE/XRSTOR instructions
OSXSAVE         -       Supports XSETBV/XGETBV instructions
RDRAND          -       Supports RDRAND instruction
RDSEED          -       Supports RDSEED instruction

CMOV            *       Supports CMOVcc instruction
CLFSH           *       Supports CLFLUSH instruction
CX8             *       Supports compare and exchange 8-byte instructions
CX16            *       Supports CMPXCHG16B instruction
BMI1            -       Supports bit manipulation extensions 1
BMI2            -       Supports bit manipulation extensions 2
ADX             -       Supports ADCX/ADOX instructions
DCA             -       Supports prefetch from memory-mapped device
F16C            -       Supports half-precision instruction
FXSR            *       Supports FXSAVE/FXSTOR instructions
FFXSR           -       Supports optimized FXSAVE/FSRSTOR instruction
MONITOR         *       Supports MONITOR and MWAIT instructions
MOVBE           -       Supports MOVBE instruction
ERMSB           -       Supports Enhanced REP MOVSB/STOSB
PCLMULDQ        -       Supports PCLMULDQ instruction
POPCNT          -       Supports POPCNT instruction
LZCNT           -       Supports LZCNT instruction
SEP             *       Supports fast system call instructions
LAHF-SAHF       -       Supports LAHF/SAHF instructions in 64-bit mode
HLE             -       Supports Hardware Lock Elision instructions
RTM             -       Supports Restricted Transactional Memory instructions

DE              *       Supports I/O breakpoints including CR4.DE
DTES64          *       Can write history of 64-bit branch addresses
DS              *       Implements memory-resident debug buffer
DS-CPL          *       Supports Debug Store feature with CPL
PCID            -       Supports PCIDs and settable CR4.PCIDE
INVPCID         -       Supports INVPCID instruction
PDCM            -       Supports Performance Capabilities MSR
RDTSCP          -       Supports RDTSCP instruction
TSC             *       Supports RDTSC instruction
TSC-DEADLINE    -       Local APIC supports one-shot deadline timer
TSC-INVARIANT   -       TSC runs at constant rate
xTPR            *       Supports disabling task priority messages

EIST            *       Supports Enhanced Intel Speedstep
ACPI            *       Implements MSR for power management
TM              *       Implements thermal monitor circuitry
TM2             -       Implements Thermal Monitor 2 control
APIC            *       Implements software-accessible local APIC
x2APIC          -       Supports x2APIC

CNXT-ID         *       L1 data cache mode adaptive or BIOS

MCE             *       Supports Machine Check, INT18 and CR4.MCE
MCA             *       Implements Machine Check Architecture
PBE             *       Supports use of FERR#/PBE# pin

PSN             -       Implements 96-bit processor serial number

PREFETCHW       -       Supports PREFETCHW instruction

Maximum implemented CPUID leaves: 00000005 (Basic), 80000008 (Extended).

Logical to Physical Processor Map:
*-  Physical Processor 0
-*  Physical Processor 1

Logical Processor to Socket Map:

Logical Processor to NUMA Node Map:
**  NUMA Node 0

Logical Processor to Cache Map:

-5

“英特尔®酷睿TM i7-2600K CPU @ 3.40GHz”

“不支持PREFETCHWT1指令”

来自AIDA 64 Extreme。^^

从Windows 7的当前64位安装升级到Windows 10的64位版本需要这三个-CMPXCHG16b,PrefetchW和LAHF / SAHF。


6
PREFETCHWT1是单独的指令,不是必需的,因此请不要将其与PREFETCHW混淆。
bwDraco
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.