J'essaie actuellement de savoir si ce serait une bonne idée de mettre à jour mon bloc-notes légèrement daté (Windows 7, 64 bits) vers Windows 10. Le problème est que Microsoft indique dans ses spécifications Windows 10 que pour utiliser le La version 64 bits de Windows 10, un processeur qui prend en charge CMPXCHG16b, PrefetchW et LAHF / SAHF est nécessaire. Je sais que mon processeur est 64 bits (Intel Core i5-2430M @ 2,40 GHz) mais je ne sais pas comment il prend en charge CMPXCHG16b, PrefetchW et LAHF / SAHF, et je n'ai aucune idée de ce que cela signifie.
J'ai essayé d'utiliser Google et je n'ai obtenu aucun résultat qui avait du sens pour moi, seulement une comparaison de mon i5 et d'un processeur AMD similaire. J'ai également vérifié le site Web ARK d'Intel. Si quelqu'un pouvait m'indiquer où je peux obtenir plus d'informations, je serais vraiment reconnaissant.
Réponses:
Votre processeur prend en charge ces fonctionnalités. En fait, les mêmes fonctionnalités sont requises pour exécuter Windows 8.1 64 bits. Cette exigence est satisfaite par tous les processeurs modernes et n'est généralement un problème qu'avec certains processeurs Core 2 et antérieurs.
Quelles sont ces instructions?
CMPXCHG16B
instruction effectue une comparaison et un échange atomiques sur des valeurs de 16 octets. Il est pris en charge sur tous les processeurs x86-64 modernes , bien que certains premiers processeurs AMD64 ne le prenaient pas en charge. Cette instruction peut également être appeléeCompareExchange128
. Voir aussi: Quelle est la prévalence des anciens processeurs x64 sans l'instruction cmpxchg16b?L'
PREFETCHW
instruction est une indication pour le processeur de pré-extraire les données de la mémoire dans le cache en prévision de l'écriture ( Intel Instruction Set Reference , PDF page 888). Cette instruction a été introduite dans 3DNow d'AMD ! jeu d'instructions, qui est obsolète, à l'exception des instructionsPREFETCH
etPREFETCHW
. Tous les processeurs AMD depuis l'Athlon 64 prennent en charge cette instruction. Cependant, cette instruction peut ne pas être prise en charge dans certains anciens processeurs Intel 64 bits antérieurs à Nehalem .Le
LAHF
etSAHF
charger et stocker le contenu duAH
registre dans le registre des indicateurs, respectivement (Intel Instruction Set Reference, PDF pages 530 et 1025). Certains processeurs Intel plus anciens sans fonctionnalité de virtualisation matérielle (VT-x) ne prennent pas en charge cette instruction lors de l'exécution en mode long 64 bits ; ceux-ci sont principalement limités à certains processeurs bas de gamme antérieurs à Nehalem . Certains très anciens processeurs AMD64 n'ont pas non plus cette fonctionnalité.Qu'est ce que cela signifie pour moi?
Tous les processeurs Intel Core i7, i5 ou i3, ainsi que tous les processeurs Pentium ou Celeron basés sur les microarchitectures Clarkdale , Arrandale , Sandy Bridge ou plus récentes, prennent en charge ces fonctionnalités, ainsi que les processeurs Intel Atom et Celeron Silvermont . Pour AMD, tous les processeurs 64 bits, à l'exception des plus anciens, possèdent ces fonctionnalités.
Vous n'avez généralement besoin de vous préoccuper de ces instructions que si vous avez un processeur antérieur à ce qui précède. L'application Get Windows 10 vous indiquera si vous pouvez effectuer une mise à niveau vers Windows 10. Si le processeur ne répond pas aux exigences, vous obtiendrez « Le processeur n'est pas pris en charge » .
la source
__builtin_prefetch(p,1,2)
en PREFETCHT1 avec-march=haswell
et en PREFETCHW avec-march=broadwell
. En outre, le/proc/cpuinfo
vidage Linux de ce processeur Haswell n'inclut pas 3dnowprefetch , mais il le fait sur broadwell et skylake. Voir unix.stackexchange.com/questions/43539/… pour la signification des indicateurs.0F 0D r/m8
codage de code machine se décode comme un NOP multi-octets sur les processeurs qui ne prennent pas en charge PREFETCHW, il n'y a donc apparemment aucun problème de compatibilité. (Le comportement des instructions de prélecture n'affecte pas l'exactitude, juste les performances.) Je l'ai essayé sur mon CPU Core2Duo, dans un programme asm qui s'exécuteprefetchw [rsp]
, et l'instruction s'exécute sans faute. Mais je suis sûr à 99% que cela n'a aucun effet.0F 0D m8
) ne soit pas considéré comme une instruction illégale, ce qui est le cas sur les processeurs Intel après P4 au moins comme discuté ici . Ils l'exécutent en mode no-op (jusqu'à Broadwell), et bien sûr, cela suffit pour Win8.1 (car les préfixes sont de toute façon des indices spéculatifs, qui n'affectent pas l'exactitude). Je n'avais pas réalisé le comportement de NOP, ou qu'il était différent sur les CPU plus anciens.Si vous pouvez utiliser la ligne de commande dans Windows, alors:
coreinfo > coreinfo.txt
PS: sous Linux, vous utiliseriez
grep flags /proc/cpuinfo | head -1
la source
Il existe un utilitaire appelé coreinfo , fourni par Microsoft, qui fournit des fonctionnalités comme
cat /proc/cpuinfo
sous Linux.Vous devez rechercher à travers cela, mais vous pouvez trouver les informations ici,
La
-
moyenne que le CPU n'a pas cette fonctionnalité, la*
moyenne qu'il a cette fonctionnalité.Maintenant que je regarde, coreinfo est en fait suggéré par Microsoft pour faire la détermination sur cette page doc,
Le résultat complet de mon processeur, un Intel E7525, ressemble à ceci,
la source
"Processeur Intel (R) Core (TM) i7-2600K à 3,40 GHz"
"Instruction PREFETCHWT1 non prise en charge"
De AIDA 64 Extreme. ^^
Ces trois - CMPXCHG16b, PrefetchW et LAHF / SAHF sont requis pour la mise à niveau vers une version 64 bits de Windows 10 à partir d'une installation 64 bits actuelle de Windows 7.
la source