I'm currently trying to find out whether or not it would be a good idea to update my slightly dated notebook (Windows 7, 64-bit) to Windows 10. The problem is that Microsoft states in their Windows 10 specifications that to use the 64-bit version of Windows 10, a processor which supports CMPXCHG16b, PrefetchW and LAHF/SAHF is needed. I know that my processor is 64-bit (Intel Core i5-2430M @ 2.40 GHz) but I don't know how to find out whether it supports CMPXCHG16b, PrefetchW and LAHF/SAHF, and I have no idea what these mean.

I tried using Google and got no results that made sense to me, only some comparison of my i5 and a similar AMD processor. I also checked Intel's ARK website. If somebody could point me to where I can get more info I would be really grateful.

  • 1
    I think you are worrying too much. The i5's are relatively recent and will be fine. However, a general rule of thumb is not to run 64bit unless you have >4GB of RAM, the overheads can make things run slower rather than faster. Windows 32bit can only directly access slightly less than 4GB so only if you go over that is it worth going 64bit – Julian Knight Jun 23 '15 at 22:42
  • 1
    If you can upgrade to Windows 8.1 you can upgrade to Windows 10. You can also run a compatibility check for both if you want. – Ramhound Jun 23 '15 at 23:38
  • Run a tool under Windows 7 that displays CPUID data, this tells you if the CPU supports the futures. I use an I5-3xxxM and here Windows 8.1 works, so it has the 3 features. You are only 1 generation behind, so it should also support all features. – magicandre1981 Jun 24 '15 at 4:16
  • 1
    @JulianKnight I'd advise 64bit to anyone with 2 or 3gb and a dedicated graphics card as the graphics card memory also needs to fit into the address space. If you have 4gb of ram and a 2gb graphics card then you've just wasted 2gb of ram and are worse off than if you'd installed 64 bit. – Mokubai Jul 22 '15 at 6:30
  • 1
    Don't worry about that. Except for some early Atom or x86_64 CPUs, all Intel CPUs in (a little more than) a decade back can run windows 10 without problem – phuclv Oct 14 '15 at 8:04
up vote 20 down vote accepted

Your processor supports these features. In fact, the same features are required to run 64-bit Windows 8.1. This requirement is met by all modern processors and is generally only an issue with certain Core 2 and earlier processors.

What are these instructions?

  • Early AMD64 processors lacked the CMPXCHG16B instruction, which is an extension of the CMPXCHG8B instruction present on most post-80486 processors. Similar to CMPXCHG8B, CMPXCHG16B allows for atomic operations on octal words. This is useful for parallel algorithms that use compare and swap on data larger than the size of a pointer, common in lock-free and wait-free algorithms. Without CMPXCHG16B one must use workarounds, such as a critical section or alternative lock-free approaches. Its absence also prevents 64-bit Windows prior to Windows 8.1 from having a user-mode address space larger than 8 terabytes. The 64-bit version of Windows 8.1 requires the instruction.
  • The PREFETCHW instruction is a hint to the processor to prefetch data from memory into the cache in anticipation for writing (Intel Instruction Set Reference, PDF page 888). This instruction was introduced in AMD's 3DNow! instruction set, which is deprecated except for the PREFETCH and PREFETCHW instructions. All AMD processors since the Athlon 64 support this instruction. However, this instruction may not be supported in some older 64-bit Intel processors predating Nehalem.

  • The LAHF and SAHF load and store the contents of the AH register into the flags register, respectively (Intel Instruction Set Reference, PDF pages 530 and 1025). Some older Intel processors without hardware virtualization (VT-x) functionality do not support this instruction when running in 64-bit long mode; these are mostly limited to certain low-end processors predating Nehalem. Some very old AMD64 processors also lack this feature.

  • Early AMD64 and Intel 64 CPUs lacked LAHF and SAHF instructions in 64-bit mode. AMD introduced these instructions (also in 64-bit mode) with their Athlon 64, Opteron and Turion 64 revision D processors in March 2005 while Intel introduced the instructions with the Pentium 4 G1 stepping in December 2005. The 64-bit version of Windows 8.1 requires this feature.

What does this mean for me?

  • All Intel Core i7, i5, or i3 processors, as well as all Pentium or Celeron processors based on the Clarkdale, Arrandale, Sandy Bridge, or newer microarchitectures, support these features, as well as Intel Atom and Celeron Silvermont processors. For AMD, all but the oldest 64-bit processors have these features.

  • You generally only need to be concerned about these instructions if you have a processor that predates the above. The Get Windows 10 app will tell you if you can upgrade to Windows 10. If the processor doesn't meet requirements, you'll get "The CPU isn't supported."

  • 1
    Should point out though, while these particular features are the same as required to run Windows 8.1, not all CPU features required to run Windows 10 are required to run Windows 8.1. In particular, PAE and NX are not required under 8.1 but mandatory for 10 – qasdfdsaq Nov 6 '15 at 14:22
  • Actually even Nehalem is too new. I think any 64-bit Intel processor released in 2006 and later supports these features. – Yuhong Bao Jul 1 '16 at 1:46
  • 1
    PREFETCHW support is new (for Intel) in Broadwell, so Windows 8.1 certainly doesn't require it. Evidence: gcc compiles __builtin_prefetch(p,1,2) to PREFETCHT1 with -march=haswell, and to PREFETCHW with -march=broadwell. Also, the Linux /proc/cpuinfo dump from this Haswell CPU doesn't include 3dnowprefetch, but it does on broadwell and skylake. See unix.stackexchange.com/questions/43539/… for the meaning of flags. – Peter Cordes Nov 9 '16 at 21:34
  • 1
    Maybe you were thinking of the SSE PREFETCHh instructions which have existed since PentiumIII at least. – Peter Cordes Nov 9 '16 at 21:36
  • 1
    @bwDraco: yes. Its 0F 0D r/m8 machine-code encoding decodes as a multi-byte NOP on CPUs that don't support PREFETCHW, so there's apparently no compatibility issue. (The behaviour of prefetch instructions doesn't affect correctness, just performance.) I tried it on my Core2Duo CPU, in an asm program that runs prefetchw [rsp], and the instruction executes without faulting. But I'm 99% sure it has no effect. – Peter Cordes Nov 9 '16 at 21:46

If you can use the command line in Windows then:

  • Get SysInternals coreinfo.exe from technet
  • Run coreinfo > coreinfo.txt
  • Open the file in a text editor, and do a find (case insensitive) for each of the instructions

PS: In Linux you would use grep flags /proc/cpuinfo | head -1

"Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz"

"PREFETCHWT1 Instruction Not Supported"

From AIDA 64 Extreme. ^^

These three - CMPXCHG16b, PrefetchW and LAHF/SAHF are required for upgrade to a 64bit version of Windows 10 from a current 64bit installation of Windows 7.

  • 6
    PREFETCHWT1 is a separate instruction and is not required, so don't confuse it with PREFETCHW. – bwDraco Jul 22 '15 at 1:33

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.