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.
źródło
Odpowiedzi:
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?
CMPXCHG16B
Instrukcja wykonuje atomową-porównywana i wymiany na wartości 16-bajtowych. Jest obsługiwany na wszystkich współczesnych procesorach x86-64 , chociaż niektóre wczesne procesory AMD64 go nie obsługiwały. Ta instrukcja może być również określana jakoCompareExchange128
. Zobacz także: Jak często stare procesory x64 nie mają instrukcji cmpxchg16b?Ta
PREFETCHW
instrukcja 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 instrukcjiPREFETCH
iPREFETCHW
. 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 .LAHF
ISAHF
obciążenia i zapisać zawartośćAH
rejestru 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.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 ”.
źródło
__builtin_prefetch(p,1,2)
do PREFETCHT1 z-march=haswell
i do PREFETCHW z-march=broadwell
. Ponadto/proc/cpuinfo
zrzut systemu Linux z tego procesora Haswell nie obejmuje programu 3dnowprefetch , ale dotyczy Broadwell i Skylake. Zobacz unix.stackexchange.com/questions/43539/... sensu flagami.0F 0D r/m8
maszynowego 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 asmprefetchw [rsp]
, a instrukcja wykonuje się bez winy. Ale jestem 99% pewien, że to nie ma wpływu.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.Jeśli możesz użyć wiersza polecenia w systemie Windows, to:
coreinfo > coreinfo.txt
PS: W Linuksie byś użył
grep flags /proc/cpuinfo | head -1
źródło
Istnieje narzędzie o nazwie coreinfo , dostarczone przez Microsoft, które zapewnia funkcjonalność podobną
cat /proc/cpuinfo
do systemu Linux.Musisz to przeszukać, ale informacje znajdziesz tutaj,
-
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,
Pełny wynik dla mojego procesora, Intel E7525, wygląda następująco,
źródło
„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.
źródło