Pregunta

Una cosa que no entiendo es cómo puede funcionar el código compilado para una CPU Intel en una CPU AMD.

Mi comprensión básica es que si compila código C, por ejemplo, el compilador convierte el código fuente en lenguaje máquina que tendrá instrucciones para un procesador en particular. Por lo tanto, debe compilar con un compilador para cualquier plataforma que desee que use su aplicación. ¿Por qué no necesita un compilador para AMD versus Intel, y tiene que comprar software para un procesador en particular?

Sé que los procesadores AMD y los procesadores Intel comparten cierta compatibilidad en las instrucciones x86 anteriores; Lo que me gustaría saber es ¿cómo lo hacen? Quiero decir, no es como si AMD o Intel se estuvieran llamando y contando sus secretos comerciales, entonces, ¿cómo pueden crear conjuntos de instrucciones que sean compatibles?

¿Toda la compatibilidad todavía se basa en el conjunto de instrucciones 386, con un conjunto de declaraciones como "SI AMD CPU", haga esto SINO SI INTEL lo hace? "

¿Fue útil?

Solución

Las CPU AMD e Intel x86 y x86-64 son casi totalmente compatibles. Ambos implementan todo x86 y x86-64. Cada uno tiene sus propias extensiones (como MMX y 3DNow), pero los compiladores generalmente no los usan a menos que usted se lo indique. Hoy en día, AMD e Intel son compatibles con casi todas las extensiones del otro. La única vez que tenga que preocuparse por la diferencia es cuando está haciendo cosas de kernel de muy bajo nivel.

Por cierto, el conjunto de instrucciones no es realmente un "secreto comercial". La implementación es. Ambas compañías producen documentación en el conjunto de instrucciones, por lo que cada una puede copiarla. La razón de esto probablemente sea que si más compañías producen chips compatibles, se escribirá más software para este conjunto de instrucciones, por lo que más personas comprarán estos chips. x86 / x86-64 es básicamente la arquitectura estándar para computadoras de escritorio, lo que garantiza que las personas continuarán comprando chips Intel y AMD. Intel y AMD tienen implementaciones muy diferentes, solo ejecutan el mismo código.

Otros consejos

En realidad tienen un acuerdo de licencia cruzada. La información y la innovación fluyeron de Intel a AMD en los años 90 cuando AMD era una segunda fuente de procesadores 386 y 486, y luego de AMD a Intel cuando Intel adoptó las extensiones x86-64.

Recuerde también que los conjuntos de instrucciones para estos procesadores están documentados públicamente; normalmente un proveedor inventará un nuevo conjunto de instrucciones, y una generación o dos más tarde el otro proveedor implementará extensiones compatibles. Como tal, en lugar de IF 386 ... tiene algo más en la línea de SI SE APOYA SSE4 ..., sin importar el proveedor específico.

Ambos proveedores implementan el mismo conjunto de instrucciones, por lo que cuando su código compilado se convierta en instrucciones de máquina, funcionarán en ambos chips. Sin embargo, hay algunos conjuntos de instrucciones especiales, como SSE, que pueden ser específicos para un proveedor u otro. Si desea mejorar el rendimiento de una aplicación, puede realizar comprobaciones de tiempo de ejecución para usar estas funciones cuando estén disponibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top