Ich versuche derzeit herauszufinden, ob es eine gute Idee wäre, mein leicht veraltetes Notebook (Windows 7, 64-Bit) auf Windows 10 zu aktualisieren. Das Problem ist, dass Microsoft in seinen Windows 10-Spezifikationen angibt, dass das verwendet werden soll Es wird eine 64-Bit-Version von Windows 10 benötigt, ein Prozessor, der CMPXCHG16b, PrefetchW und LAHF / SAHF unterstützt. Ich weiß, dass mein Prozessor 64-Bit ist (Intel Core i5-2430M bei 2,40 GHz), aber ich weiß nicht, wie ich herausfinden kann, ob er CMPXCHG16b, PrefetchW und LAHF / SAHF unterstützt, und ich habe keine Ahnung, was diese bedeuten.
Ich habe versucht, Google zu verwenden, und habe keine für mich sinnvollen Ergebnisse erhalten, nur einen Vergleich meines i5 und eines ähnlichen AMD-Prozessors. Ich habe auch Intels ARK-Website überprüft. Wenn mich jemand darauf hinweisen könnte, wo ich mehr Informationen bekommen kann, wäre ich wirklich dankbar.
quelle
Antworten:
Ihr Prozessor unterstützt diese Funktionen. Tatsächlich sind dieselben Funktionen erforderlich, um 64-Bit-Windows 8.1 auszuführen. Diese Anforderung wird von allen modernen Prozessoren erfüllt und ist im Allgemeinen nur bei bestimmten Core 2-Prozessoren und früheren Prozessoren ein Problem.
Was sind diese Anweisungen?
CMPXCHG16B
Befehl führt einen atomaren Vergleich und Austausch von 16-Byte-Werten durch. Es wird von allen modernen x86-64- Prozessoren unterstützt, obwohl einige frühe AMD64-CPUs dies nicht unterstützten. Diese Anweisung kann auch als bezeichnet werdenCompareExchange128
. Siehe auch: Wie häufig fehlt alten x64-Prozessoren die Anweisung cmpxchg16b?Die
PREFETCHW
Anweisung ist ein Hinweis für den Prozessor, Daten aus dem Speicher in Erwartung des Schreibens in den Cache vorab abzurufen ( Intel Instruction Set Reference , PDF Seite 888). Diese Anweisung wurde in AMDs 3DNow! Befehlssatz, der bis auf die AnweisungenPREFETCH
und veraltet istPREFETCHW
. Alle AMD-Prozessoren seit dem Athlon 64 unterstützen diese Anweisung. Diese Anweisung wird jedoch möglicherweise in einigen älteren 64-Bit-Intel-Prozessoren vor Nehalem nicht unterstützt .Das
LAHF
undSAHF
Laden und Speichern des Inhalts desAH
Registers in das Flags-Register (Intel Instruction Set Reference, PDF-Seiten 530 und 1025). Einige ältere Intel-Prozessoren ohne Hardware-Virtualisierungsfunktion (VT-x) unterstützen diese Anweisung nicht, wenn sie im 64-Bit- Modus ausgeführt werden . Diese sind meist auf bestimmte Low-End-Prozessoren vor Nehalem beschränkt . Bei einigen sehr alten AMD64-Prozessoren fehlt diese Funktion ebenfalls.Was bedeutet das für mich?
Alle Intel Core i7-, i5- oder i3-Prozessoren sowie alle Pentium- oder Celeron-Prozessoren, die auf Clarkdale- , Arrandale- , Sandy Bridge- oder neueren Mikroarchitekturen basieren , unterstützen diese Funktionen sowie Intel Atom- und Celeron Silvermont- Prozessoren. Für AMD verfügen alle außer den ältesten 64-Bit-Prozessoren über diese Funktionen.
Sie müssen sich im Allgemeinen nur um diese Anweisungen kümmern, wenn Sie einen Prozessor haben, der älter ist als die oben genannten. Die Get Windows 10-App zeigt an, ob Sie ein Upgrade auf Windows 10 durchführen können. Wenn der Prozessor die Anforderungen nicht erfüllt, wird " Die CPU wird nicht unterstützt " angezeigt.
quelle
__builtin_prefetch(p,1,2)
mit PREFETCHT1 mit-march=haswell
und mit PREFETCHW mit-march=broadwell
. Auch das Linux -/proc/cpuinfo
Dump ist von dieser Haswell CPU nicht enthält 3DNowPrefetch , aber es funktioniert auf Broadwell und Skylake. Die Bedeutung von Flags finden Sie unter unix.stackexchange.com/questions/43539/… .0F 0D r/m8
Maschinencode-Codierung wird auf CPUs, die PREFETCHW nicht unterstützen, als Multi-Byte-NOP dekodiert, sodass anscheinend kein Kompatibilitätsproblem vorliegt. (Das Verhalten von Prefetch-Anweisungen wirkt sich nicht auf die Korrektheit aus, sondern nur auf die Leistung.) Ich habe es auf meiner Core2Duo-CPU in einem asm-Programm versucht, das ausgeführt wirdprefetchw [rsp]
, und die Anweisung wird fehlerfrei ausgeführt. Aber ich bin zu 99% sicher, dass es keine Wirkung hat.0F 0D m8
) nicht als illegale Anweisung fehlerhaft ist, was bei Intel-CPUs nach P4 zumindest wie hier beschrieben der Fall ist . Sie führen es als No-Op aus (bis Broadwell), und das ist natürlich für Win8.1 ausreichend (da Prefetches ohnehin spekulative Hinweise sind, die die Korrektheit nicht beeinträchtigen). Ich hatte das NOP-Verhalten nicht bemerkt oder festgestellt, dass es bei älteren CPUs anders war.Wenn Sie die Befehlszeile in Windows verwenden können, dann:
coreinfo > coreinfo.txt
PS: Unter Linux würden Sie verwenden
grep flags /proc/cpuinfo | head -1
quelle
Es gibt ein von Microsoft bereitgestelltes Dienstprogramm namens coreinfo , das Funktionen wie
cat /proc/cpuinfo
unter Linux bietet .Sie müssen dies durchsuchen, aber Sie können die Informationen hier finden,
Der
-
Mittelwert, dass der CPU diese Funktion fehlt, der*
Mittelwert, dass sie diese Funktion hat.Nun, da ich nachschaue, wird coreinfo tatsächlich von Microsoft vorgeschlagen, die Entscheidung auf dieser Dokumentseite zu treffen.
Das vollständige Ergebnis für meinen Prozessor, einen Intel E7525, sieht folgendermaßen aus:
quelle
"Intel (R) Core (TM) i7-2600K-CPU bei 3,40 GHz"
"PREFETCHWT1-Anweisung wird nicht unterstützt"
Von AIDA 64 Extreme. ^^
Diese drei - CMPXCHG16b, PrefetchW und LAHF / SAHF - sind für das Upgrade von einer aktuellen 64-Bit-Installation von Windows 7 auf eine 64-Bit-Version von Windows 10 erforderlich.
quelle