¿Cuál es la diferencia entre Intel 64 y AMD64?

29

¿Alguien puede explicar si hay alguna diferencia entre las arquitecturas intel64 y amd64?

Violencia
fuente
3
IA64 = la arquitectura Intel / HP Itanium VLIW. AMD64 es la extensión desarrollada por AMD del conjunto de instrucciones estándar x86.
66
Márketing. AMD lo desarrolló y luego lo autorizó a Intel. AMD está licenciando x86 de Intel, e Intel está licenciando x64 de AMD. Esto garantiza que ninguno de los dos puede demandar al otro sin perder los derechos de vender toda su línea de CPU, ya que se estarían disparando en el pie.
1
¿Te refieres a x86-64 o IA64? El anterior es el mismo que AMD64 (literalmente, el exacto mismo conjunto de instrucciones, o que tendría que volver a compilar todas las solicitudes de una CPU u otro), y el último es un completamente la arquitectura de CPU diferente.
Avance el
2
Me refiero a x86-64. Intel usó inicialmente los nombres IA-32e y EM64T antes de finalmente decidirse por Intel 64 para su implementación.
Mayhem

Respuestas:

26

Por lo que he leído, la tecnología de memoria extendida de 64 bits (EM64T) es la implementación de Intel de AMD64 de AMD y las diferencias entre Intel64 y AMD64 son:

  • Las instrucciones BSF y BSR de EM64T actúan de manera diferente cuando la fuente es 0 y el tamaño del operando es de 32 bits. El procesador establece el indicador de cero y deja los 32 bits superiores del destino sin definir.

  • AMD64 es compatible con 3DNow! instrucciones. Esto incluye la captación previa con el código de operación 0x0F 0x0D y PREFETCHW, que son útiles para ocultar la latencia de la memoria.

  • EM64T carece de la capacidad de guardar y restaurar una versión reducida (y por lo tanto más rápida) del estado de coma flotante (que involucra las instrucciones FXSAVE y FXRSTOR).

  • EM64T carece de algunos registros específicos del modelo que se consideran arquitectónicos para AMD64. Estos incluyen SYSCFG, TOP_MEM y TOP_MEM2.

  • EM64T admite la actualización de microcódigo como en el modo de 32 bits, mientras que los procesadores AMD64 usan un formato de actualización de microcódigo diferente y controlan MSR.

  • La instrucción CPUID de EM64T es muy específica del proveedor, como es normal para los procesadores de estilo x86.

  • EM64T admite las instrucciones MONITOR y MWAIT, utilizadas por los sistemas operativos para lidiar mejor con Hyper-threading.

  • Los sistemas AMD64 permiten el uso de la apertura AGP como IO-MMU. Los sistemas operativos pueden aprovechar esto para permitir que los dispositivos PCI normales DMA a la memoria por encima de 4 GiB. Los sistemas EM64T requieren el uso de búferes de rebote, que son más lentos.

  • SYSCALL y SYSRET también solo se admiten en modo IA-32e (no en modo de compatibilidad) en EM64T. SYSENTER y SYSEXIT son compatibles en ambos modos.

  • Las ramas cercanas con el prefijo 0 × 66 (tamaño de operando) se comportan de manera diferente. Un tipo de CPU borra solo los 32 bits superiores, mientras que el otro tipo borra los 48 bits superiores.

Violencia
fuente
¿De dónde leíste ese texto?
Tamara Wijsman
44
Bueno, algunos foros / blogs + wikipedia ( en.wikipedia.org/wiki/EMT64#Intel_64 ). También revisé algunos manuales de Intel y AMD.
Mayhem
@Nubok: ¡Agregue la diferencia para la implementación de la arquitectura a través de las tecnologías (versión de 64 bits, por supuesto)  !
user2284570
El IO-MMU es un gran problema: su falta significa que debe absorber una cantidad no trivial de poca memoria para el almacenamiento en búfer (64 MB es el valor predeterminado actual en Linux). Más tarde, Intel introdujo algo similar a VT-d y lo usó para un nivel molesto de segmentación del producto; sin embargo, la confiabilidad del código (y en algunos casos el silicio) ha tendido a que no se use por defecto en Linux para el original propósitos
GreenReaper
8

En la página x86 de Wikipedia puedes leer

En 1999-2003, AMD amplió esta arquitectura de 32 bits a 64 bits y se refirió a ella como x86-64 en los primeros documentos y más tarde como AMD64. Intel pronto adoptó las extensiones arquitectónicas de AMD con el nombre IA-32e, que luego pasó a llamarse EM64T y finalmente Intel 64.

En otras palabras, el diferenciador es principalmente marketing. Existen extensiones específicas de Intel y AMD para el conjunto de instrucciones, pero siempre que esté escribiendo programas en el espacio del usuario, generalmente no necesita saber la diferencia.

Joachim Isaksson
fuente
3
you don't generally need to know the differenceIncorrecto: incluso las pequeñas diferencias en las instrucciones genéricas son muy importantes bugs.chromium.org/p/nativeclient/issues/detail?id=2010
user2284570
44
Incorrecto: incluso una pequeña diferencia en las instrucciones genéricas es muy importante. Para ser justos, (1) dijo que generalmente no es necesario conocer estas diferencias. Obviamente, hay casos específicos en los que puede importar. (2) la mayoría de nosotros no estamos escribiendo una caja de arena reforzada que debe proteger todas y cada una de las rutas de instrucciones disponibles.
Eric W