Wymagania 64-bitowe dla systemu Windows 10: Czy mój procesor obsługuje CMPXCHG16b, PrefetchW i LAHF / SAHF?

12

Obecnie próbuję dowiedzieć się, czy dobrym pomysłem byłoby zaktualizowanie mojego nieco przestarzałego notebooka (Windows 7, 64-bit) do Windows 10. Problem polega na tym, że Microsoft określa w swoich specyfikacjach Windows 10, że należy użyć 64-bitowa wersja systemu Windows 10 wymaga procesora obsługującego CMPXCHG16b, PrefetchW i LAHF / SAHF. Wiem, że mój procesor jest 64-bitowy (Intel Core i5-2430M @ 2,40 GHz), ale nie wiem, jak sprawdzić, czy obsługuje CMPXCHG16b, PrefetchW i LAHF / SAHF i nie mam pojęcia, co one oznaczają.

Próbowałem użyć Google i nie uzyskałem żadnych sensownych wyników, tylko porównanie mojego i5 i podobnego procesora AMD. Sprawdziłem także stronę ARK Intela. Gdyby ktoś mógł wskazać mi, gdzie mogę uzyskać więcej informacji, byłbym bardzo wdzięczny.

roebsi
źródło
1
Myślę, że za bardzo się martwisz. I5 są stosunkowo nowe i będą w porządku. Jednak ogólną zasadą jest, aby nie uruchamiać 64-bitów, chyba że masz> 4 GB pamięci RAM, koszty ogólne mogą spowolnić, a nie przyspieszyć. Windows 32bit może uzyskać bezpośredni dostęp tylko nieco mniej niż 4 GB, więc tylko jeśli przejdziesz, warto przejść na 64-bitowy
Julian Knight
1
Jeśli możesz zaktualizować system do wersji Windows 8.1, możesz uaktualnić system do wersji Windows 10. Możesz także uruchomić kontrolę zgodności dla obu wersji.
Ramhound,
Uruchom narzędzie w systemie Windows 7, które wyświetla dane CPUID, informuje to, czy procesor obsługuje przyszłości. Używam I5-3xxxM i tutaj działa Windows 8.1, więc ma 3 funkcje. Opóźnia cię tylko 1 generacja, więc powinna również obsługiwać wszystkie funkcje.
magicandre1981
1
@JulianKnight Radzę 64bit każdemu, kto ma 2 lub 3 GB i dedykowaną kartę graficzną, ponieważ pamięć karty graficznej również musi zmieścić się w przestrzeni adresowej. Jeśli masz 4 GB pamięci RAM i kartę graficzną 2 GB, to właśnie zmarnowałeś 2 GB pamięci RAM i masz gorzej, niż gdybyś zainstalował 64-bit.
Mokubai
1
Nie martw się o to. Z wyjątkiem niektórych wczesnych procesorów Atom lub x86_64, wszystkie procesory Intel w (nieco więcej) dekadzie wstecz mogą bez problemu uruchomić Windows 10
phuclv

Odpowiedzi:

21

Twój procesor obsługuje te funkcje. W rzeczywistości te same funkcje są wymagane do uruchomienia 64-bitowego systemu Windows 8.1. Wymóg ten jest spełniony przez wszystkie współczesne procesory i generalnie stanowi problem tylko w przypadku niektórych procesorów Core 2 i wcześniejszych.

Jakie są te instrukcje?

  • We wczesnych procesorach AMD64 brakowało CMPXCHG16Binstrukcji, która jest rozszerzeniem CMPXCHG8Binstrukcji obecnej na większości procesorów po 80486. Podobnie jak CMPXCHG8B, CMPXCHG16Bpozwala na operacje atomowe na słowach ósemkowych. Jest to przydatne w przypadku algorytmów równoległych wykorzystujących porównywanie i zamianę danych większych niż rozmiar wskaźnika, powszechne w algorytmach bez blokady i bez oczekiwania. Bez CMPXCHG16Btego trzeba stosować obejścia, takie jak sekcja krytyczna lub alternatywne podejście bez blokady. Jego brak również uniemożliwia 64-bitowemu systemowi Windows wcześniejszemu niż Windows 8.1 posiadanie przestrzeni adresowej trybu użytkownika większej niż 8 terabajtów. 64-bitowa wersja systemu Windows 8.1 wymaga instrukcji.
  • Ta PREFETCHWinstrukcja jest wskazówką dla procesora, aby wstępnie pobrać dane z pamięci do pamięci podręcznej w oczekiwaniu na zapis ( Intel Instruction Set Reference , PDF strona 888). Ta instrukcja została wprowadzona w 3DNow AMD ! zestaw instrukcji, który jest przestarzały, z wyjątkiem instrukcji PREFETCHi PREFETCHW. Wszystkie procesory AMD od Athlona 64 obsługują tę instrukcję. Jednak ta instrukcja może nie być obsługiwana w niektórych starszych 64-bitowych procesorach Intel starszych niż Nehalem .

  • LAHFI SAHFobciążenia i zapisać zawartość AHrejestru pod flagami zarejestrować, odpowiednio (Intel Zestaw instrukcji, strony PDF 530 i 1025). Niektóre starsze procesory Intel bez sprzętowej wirtualizacji (VT-x) funkcji nie obsługują tej instrukcji , gdy działa w 64-bitowym trybie długiej ; są one głównie ograniczone do niektórych niższych procesorów sprzed Nehalem . Niektóre bardzo stare procesory AMD64 również nie mają tej funkcji.

  • We wczesnych procesorach AMD64 i Intel 64 brakowało instrukcji LAHF i SAHF w trybie 64-bitowym. AMD wprowadziło te instrukcje (również w trybie 64-bitowym) ze swoimi procesorami Athlon 64, Opteron i Turion 64 wersja D w marcu 2005 r., Podczas gdy Intel wprowadził instrukcje ze wzmocnieniem Pentium 4 G1 w grudniu 2005 r. 64-bitowa wersja systemu Windows 8.1 wymaga tej funkcji.

Co to dla mnie znaczy?

  • Wszystkie procesory Intel Core i7, i5 lub i3, a także wszystkie procesory Pentium lub Celeron oparte na mikroarchitekturach Clarkdale , Arrandale , Sandy Bridge lub nowsze obsługują te funkcje, a także procesory Intel Atom i Celeron Silvermont . W przypadku AMD wszystkie oprócz najstarszych 64-bitowych procesorów mają te funkcje.

  • Zasadniczo musisz się martwić tymi instrukcjami, jeśli masz procesor wcześniejszy niż powyższe. Aplikacja Pobierz Windows 10 powie ci, czy możesz uaktualnić system do Windows 10. Jeśli procesor nie spełnia wymagań, pojawi się komunikat „ Procesor nie jest obsługiwany ”.

bwDraco
źródło
1
Należy jednak zauważyć, chociaż te szczególne funkcje są takie same, jak wymagane do uruchomienia systemu Windows 8.1, nie wszystkie funkcje procesora wymagane do uruchomienia systemu Windows 10 są wymagane do uruchomienia systemu Windows 8.1. W szczególności PAE i NX nie są wymagane zgodnie z 8.1, ale obowiązkowe dla 10
qasdfdsaq
1
Obsługa PREFETCHW jest nowa (dla Intela) w Broadwell, więc Windows 8.1 na pewno jej nie wymaga. Dowody: gcc kompiluje się __builtin_prefetch(p,1,2) do PREFETCHT1 z -march=haswelli do PREFETCHW z -march=broadwell. Ponadto /proc/cpuinfozrzut systemu Linux z tego procesora Haswell nie obejmuje programu 3dnowprefetch , ale dotyczy Broadwell i Skylake. Zobacz unix.stackexchange.com/questions/43539/... sensu flagami.
Peter Cordes,
1
Może myślałeś o instrukcjach SSE PREFETCHh, które istniały przynajmniej od Pentium III.
Peter Cordes,
1
@bwDraco: tak. Jego 0F 0D r/m8maszynowego kod kodowania dekodowanie jako NOP wielo-bajtowego na procesorach, które nie obsługują PREFETCHW, więc najwyraźniej nie problem ze zgodnością. (Zachowanie instrukcji pobierania wstępnego nie wpływa na poprawność, tylko na wydajność.) Wypróbowałem to na moim procesorze Core2Duo w uruchomionym programie asm prefetchw [rsp], a instrukcja wykonuje się bez winy. Ale jestem 99% pewien, że to nie ma wpływu.
Peter Cordes,
1
Ok, tutaj są dwa znaczenia „wsparcia”: Win8.1 najwyraźniej wymaga, aby PREFETCHW ( 0F 0D m8) nie popełnił błędu jako niedozwolona instrukcja, co ma miejsce w przypadku procesorów Intela po P4 przynajmniej tak, jak tutaj omówiono . Uruchamiają go jako brak operacji (do Broadwell), i oczywiście to wystarcza dla Win8.1 (ponieważ prefiksy są i tak spekulacyjnymi wskazówkami, które nie wpływają na poprawność). Nie zdawałem sobie sprawy z zachowania NOP lub że było inaczej na starszych procesorach.
Peter Cordes,
1

Jeśli możesz użyć wiersza polecenia w systemie Windows, to:

  • Pobierz SysInternals coreinfo.exe z technet
  • Biegać coreinfo > coreinfo.txt
  • Otwórz plik w edytorze tekstu i wykonaj wyszukiwanie (bez rozróżniania wielkości liter) dla każdej instrukcji

PS: W Linuksie byś użył grep flags /proc/cpuinfo | head -1

robocat
źródło
0

Istnieje narzędzie o nazwie coreinfo , dostarczone przez Microsoft, które zapewnia funkcjonalność podobną cat /proc/cpuinfodo systemu Linux.

Musisz to przeszukać, ale informacje znajdziesz tutaj,

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

-Oznacza, że CPU brakuje tej funkcji, *oznacza to, że ma tę funkcję.

Teraz, gdy patrzę, Microsoft rzeczywiście sugeruje , że coreinfo chce ustalić tę stronę dokumentu,

Coreinfo to narzędzie, którego można użyć do potwierdzenia, które z tych możliwości posiada procesor. +

Pełny wynik dla mojego procesora, Intel E7525, wygląda następująco,

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:
Evan Carroll
źródło
-5

„Procesor Intel (R) Core (TM) i7-2600K @ 3,40 GHz”

„Instrukcja PREFETCHWT1 nie jest obsługiwana”

Od AIDA 64 Extreme. ^^

Te trzy - CMPXCHG16b, PrefetchW i LAHF / SAHF są wymagane do uaktualnienia do 64-bitowej wersji systemu Windows 10 z bieżącej 64-bitowej instalacji systemu Windows 7.

Jota
źródło
6
PREFETCHWT1 to osobna instrukcja i nie jest wymagana, więc nie myl jej z PREFETCHW.
bwDraco