Actualmente estoy tratando de averiguar si sería una buena idea actualizar mi portátil ligeramente anticuado (Windows 7, 64 bits) a Windows 10. El problema es que Microsoft indica en sus especificaciones de Windows 10 que usar el Se necesita una versión de 64 bits de Windows 10, un procesador que admita CMPXCHG16b, PrefetchW y LAHF / SAHF. Sé que mi procesador es de 64 bits (Intel Core i5-2430M @ 2.40 GHz) pero no sé cómo saber si es compatible con CMPXCHG16b, PrefetchW y LAHF / SAHF, y no tengo idea de lo que significan.
Intenté usar Google y no obtuve ningún resultado que tuviera sentido para mí, solo una comparación de mi i5 y un procesador AMD similar. También revisé el sitio web ARK de Intel. Si alguien pudiera señalarme dónde puedo obtener más información, estaría realmente agradecido.
fuente
Respuestas:
Su procesador admite estas características. De hecho, se requieren las mismas características para ejecutar Windows 8.1 de 64 bits. Todos los procesadores modernos cumplen con este requisito y generalmente solo es un problema con ciertos procesadores Core 2 y anteriores.
¿Cuáles son estas instrucciones?
CMPXCHG16B
instrucción realiza una comparación e intercambio atómico en valores de 16 bytes. Es compatible con todos los procesadores x86-64 modernos , aunque algunas de las primeras CPU AMD64 no lo admitían. Esta instrucción también puede denominarseCompareExchange128
. Consulte también: ¿Qué tan frecuentes son los viejos procesadores x64 que carecen de la instrucción cmpxchg16b?La
PREFETCHW
instrucción es una pista para que el procesador precargue los datos de la memoria en la memoria caché con anticipación para la escritura ( Referencia del conjunto de instrucciones de Intel , PDF página 888). Esta instrucción fue introducida en 3DNow de AMD ! conjunto de instrucciones, que está en desuso excepto las instruccionesPREFETCH
yPREFETCHW
. Todos los procesadores AMD desde Athlon 64 admiten esta instrucción. Sin embargo, es posible que esta instrucción no sea compatible con algunos procesadores Intel de 64 bits anteriores a Nehalem .El
LAHF
ySAHF
carga y almacenar el contenido delAH
registro en el registro de banderas, respectivamente (Instrucción Intel Conjunto de referencia, páginas PDF 530 y 1025). Algunos procesadores Intel más antiguos sin funcionalidad de virtualización de hardware (VT-x) no admiten esta instrucción cuando se ejecutan en modo largo de 64 bits ; estos se limitan principalmente a ciertos procesadores de gama baja anteriores a Nehalem . Algunos procesadores AMD64 muy antiguos también carecen de esta característica.Que significa esto para mi?
Todos los procesadores Intel Core i7, i5 o i3, así como todos los procesadores Pentium o Celeron basados en Clarkdale , Arrandale , Sandy Bridge o microarquitecturas más recientes, admiten estas características, así como los procesadores Intel Atom y Celeron Silvermont . Para AMD, todos menos los procesadores de 64 bits más antiguos tienen estas características.
En general, solo debe preocuparse por estas instrucciones si tiene un procesador anterior a lo anterior. La aplicación Get Windows 10 le dirá si puede actualizar a Windows 10. Si el procesador no cumple con los requisitos, obtendrá " La CPU no es compatible " .
fuente
__builtin_prefetch(p,1,2)
a PREFETCHT1 con-march=haswell
, y a PREFETCHW con-march=broadwell
. Además, el/proc/cpuinfo
volcado de Linux de esta CPU Haswell no incluye 3dnowprefetch , pero sí en broadwell y skylake. Consulte unix.stackexchange.com/questions/43539/… para conocer el significado de las banderas.0F 0D r/m8
codificación de código de máquina se descodifica como un NOP de varios bytes en CPU que no admiten PREFETCHW, por lo que aparentemente no hay problemas de compatibilidad. (El comportamiento de las instrucciones de captación previa no afecta la corrección, solo el rendimiento). Lo probé en mi CPU Core2Duo, en un programa asm que se ejecutaprefetchw [rsp]
, y la instrucción se ejecuta sin fallar. Pero estoy 99% seguro de que no tiene ningún efecto.0F 0D m8
) no falla como una instrucción ilegal, que es el caso en las CPU Intel después de P4, al menos como se discute aquí . Lo ejecutan como un no-op (hasta Broadwell), y por supuesto eso es suficiente para Win8.1 (porque las captaciones previas son pistas especulativas de todos modos, que no afectan la corrección). No me había dado cuenta del comportamiento de NOP, o que era diferente en las CPU más antiguas.Si puede usar la línea de comando en Windows, entonces:
coreinfo > coreinfo.txt
PD: en Linux usarías
grep flags /proc/cpuinfo | head -1
fuente
Hay una utilidad llamada coreinfo , provista por Microsoft, que proporciona funcionalidad como
cat /proc/cpuinfo
en Linux.Tienes que buscar a través de esto, pero puedes encontrar la información aquí,
Lo
-
que significa que la CPU carece de esa característica, lo que*
significa que tiene esa característica.Ahora que lo veo, Microsoft realmente sugiere coreinfo para hacer la determinación en esa página de documento,
El resultado completo para mi procesador, un Intel E7525, se ve así,
fuente
"CPU Intel (R) Core (TM) i7-2600K a 3.40GHz"
"Instrucción PREFETCHWT1 no admitida"
De AIDA 64 Extreme. ^^
Estos tres: CMPXCHG16b, PrefetchW y LAHF / SAHF son necesarios para actualizar a una versión de 64 bits de Windows 10 desde una instalación actual de 64 bits de Windows 7.
fuente