x86-64
![](https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/AMD_Opteron_146_Venus%2C_2005.jpg/220px-AMD_Opteron_146_Venus%2C_2005.jpg)
x86-64(también conocido como x64, x86_64, AMD64) es la versión de64 bitsdelconjunto de instruccionesx86.Soporta una cantidad mucho mayor dememoria virtualymemoria físicade lo que le es posible a sus predecesores, permitiendo a los programas almacenar grandes cantidades de datos en la memoria. x86-64 también proveeregistros de uso generalde 64 bits y muchas otras mejoras. La especificación fue creada porAMD,y ha sido implementada por AMD,Intel,VIAy otros. Es totalmenteretrocompatiblecon el código x86 de16y32 bits.[1]: 13–14 Debido a que el juego de instrucciones x86 completo de 16 bits y 32 bits está implementado en hardware sin ningún tipo de emulación, los programas ejecutables x86 existentes pueden correr sin ningún tipo de penalización de velocidad o compatibilidad,[2] mientras que las aplicaciones existentes que fueron recodificadas para aprovechar las características del nuevo procesador, pueden alcanzar mejoras en el rendimiento.
Antes del lanzamiento, se usaron los nombres "x86-64" y "x86_64" para referirse al juego de instrucciones. Tras la publicación, AMD lo llamó "AMD64".[3] Intel inicialmente usó los nombres IA-32e y EM64T antes de utilizar "Intel 64" para su implementación. Algunos, incluidoApple,[4][5][6] usan "x86-64" y "x86_64", mientras que otros, notablementeSun Microsystems[7] (ahora Oracle Corporation) yMicrosoft,[8] usan "x64" mientras que la familia de sistemas operativosBSDy muchasdistribuciones Linux[9][10] usan "AMD64".
El procesadorAMD K8fue el primero en implementar esta arquitectura; fue el primero en realizar un agregado importante a la arquitectura x86 diseñada por otra compañía que no era Intel. Intel se vio forzada a seguir su ejemplo y lanzar una familiaNetBurstmodificada la cual era totalmente compatible en software con la especificación y el diseño de AMD.VIA Technologiesintrodujo el x86-64 en su arquitectura VIA Isaiah con elVIA Nano.
La especificación x86-64 es diferente de la arquitectura del IntelItanium(antiguamente "IA-64" ), la cual no es compatible con el juego de instrucciones nativo de la arquitectura x86.
Visión general
[editar]Se trata de una arquitectura desarrollada originalmente porAMDa partir de la arquitecturax86,e implementada bajo el nombre deAMD64.El primer procesador (para computadoras personales) con soporte para esteconjunto de instruccionesfue elOpteron,lanzado en abril de 2003. Posteriormente ha sido implementado en múltiples variantes delAthlon 64y posteriores.
La empresaInteldesarrolló una arquitectura compatible bajo el nombreIntel 64(antesEM64T). La cual ha sido utilizada en elPentium 4y posterioresmicroprocesadoresde la compañía.
Descripción de la arquitectura
[editar]El conjunto de instrucciones del AMD x86-64 (renombrado posteriormente como AMD64) es una extensión directa de la arquitectura del x86 a una arquitectura de 64 bits, motivado por el hecho de que los 4GB de memoria que son direccionables directamente por una CPU de 32 bits ya no es suficiente para todas las aplicaciones. Algunos de los cambios:
- Nuevosregistros.El número de registros de propósito general se ha incrementado de 8 en los procesadoresx86-32a 16, y el tamaño de todos estos registros se ha incrementado de 32 bits a 64 bits. Adicionalmente, el número de registros MMX de 128 bits (usados para las instrucciones extendidasSIMD) se ha incrementado de 8 a 16. Los registros adicionales incrementan el rendimiento.
- Registros MMX (SSE) adicionales:Igualmente el número de registros de 128 bits (usados para las instruccionesSSE) han aumentado de 8 a 16.
- Espacio de direcciones mayor.Debido a la arquitectura de 64 bits, la arquitectura AMD64 puede direccionar hasta 16exabytesde memoria. Las implementaciones futuras de la arquitectura del AMD64 puede proporcionar hasta 2exabytesde memoria disponible. Si la paginación de memoria se utiliza correctamente, los sistemas operativos de 32 bits podrían tener acceso a algunas de las extensiones de dirección físicas sin tener que realizar la ejecución en modo largo (long).
- Instrucción de acceso a datos relativa al puntero:Las instrucciones ahora pueden hacer referencias relativas al puntero de instrucciones (registro RIP). Esto permite crearcódigo independiente de la posiciónque permite un código mucho más eficiente en bibliotecas dinámicas y código cargado en tiempo de ejecución.
- Llamadas al sistema más rápidas.Debido a que lasegmentaciónno está soportada en el modo de 64 bits, las llamadas al sistema no tienen las latencias asociadas con almacenar y recuperar la información de segmentación ni tienen que realizar las comprobaciones necesarias de protección a nivel de segmentación. Por lo tanto, AMD ha introducido una nueva interfaz de llamadas al sistema, al que se accede utilizando solamente la instrucción "SYSCALL". Aunque los sistemas operativos todavía pueden utilizar el sistema de interrupciones para las llamadas al sistema, en el modo de 64 bits utilizar "SYSCALL" es más rápido.
- Instrucciones SSE.La arquitectura AMD 64 incluye las extensiones de IntelSSEySSE2,las últimas cpus incluyen las instruccionesSSE3y algunos también lasSSE4.También están soportadas las instrucciones del x86 yMMX.
- Bit NX.El bit NX es una característica del procesador que permite al sistema operativo prohibir la ejecución del código en área de datos, mejorando la seguridad. Esta características está disponible en los modos de 32 y 64 bits, y está soportada porLinux,Solaris,Windows XP SP2,Windows Server 2003 SP1.
Modos de funcionamiento
[editar]Modo de funcionamiento | Requerido por el Sistema Operativo | Es necesaria la recompilación de la aplicación | Tamaño por defecto del direccionamiento | Tamaño por defecto de los operandos | Extensiones del registro | Tamaño típico del Registro de Propósito General | |
---|---|---|---|---|---|---|---|
Modo largo | Modo 64 bits | SO nuevos de 64 bits | sí | 64 | 32 | sí | 64 |
Modo de compatibilidad |
no | 32 | no | 32 | |||
16 | 16 | 16 | |||||
Modo de Herencia |
Modo protegido | SO de 32 bit heredados | no | 32 | 32 | no | 32 |
16 | 16 | ||||||
Modo 8086 virtual | 16 | 16 | 16 | ||||
Modo real | SO de 16 bit heredados |
Explicación del modo de funcionamiento
[editar]Hay dos modos primarios de operación para esta arquitectura:
Modo Largo
[editar]Es el utilizado por algunosBSDs,GNU/Linux (x86_64),Solaris 10,y por las ediciones de 64 bits de Windows XP Professional, Windows Vista, Windows 7 y Windows 8.
Dado que el conjunto de instrucciones es el mismo, no hay una penalización importante en la ejecución del código x86. Esto no sucede en la arquitectura de IntelIA-64,donde las diferencias en elISAsubyacente implican que la ejecución de código de 32 bits equivale a utilizar un procesador completamente diferente. En todo caso, en AMD 64, las aplicaciones de 32 bits del x86 podrían todavía beneficiarse de una recompilación a 64 bits. Los registros adicionales disponibles en el código de 64 bits, pueden ser utilizados por uncompiladorde alto nivel para la optimización.
Usando el modo largo, un sistema operativo de 64 bits puede ejecutar aplicaciones de 32 bits y 64 bits simultáneamente. También un x86-64 incluye un soporte nativo para ejecutar las aplicaciones de 16 bits del x86. Microsoft ha excluido explícitamente el soporte para aplicaciones de 16 bits en la edición x64 de Windows XP Professional debido a los problemas de conseguir que el código de 16 bits del x86 pueda funcionar con su emuladorWoW64.
Modo de Herencia
[editar]El modo utilizado por los sistemas operativos de 16 bits, comoMS-DOS,y los sistemas operativos de 32 bits, comoWindows XP.En este modo, sólo se puede ejecutar código de 16 bits o de 32 bits. Los sistemas operativos de 64 bits comoWindows XP Professional x64yWindows Server 2003 x64no se ejecutarán.
AMD64
[editar]Estudio de mercado
[editar]AMD64 representa un cambio con el pasado de AMD cuyo comportamiento era seguir los estándares deIntel,aunque mantiene los comportamientos anteriores de Intel extendiendo la arquitectura delx86,desde los 16 bits8086hasta los 32 bits80386,siempre sin eliminar compatibilidad hacia atrás. La arquitectura del AMD64 extiende la arquitectura de 32 bits del x86 (IA-32) añadiendo registros de 64 bits, con modos de total compatibilidad de 32 bits y 16 bits para software ya existente. Incluso el modo de 64 bits permite compatibilidad hacia atrás, facilitando que las herramientas del x86 como loscompiladorespuedan ser adaptadas a la arquitectura AMD64 con un esfuerzo mínimo. La arquitectura del AMD64 dispone de características como elbit NX.
Implementaciones
[editar]Los procesadores siguientes implementan la arquitectura AMD64:
- AMD 64 (K8 - Kryptonite)
- AMDPhenom 64 Quad
- AMDAthlon 64
- AMDAthlon 64 X2
- AMDAthlon 64 FX
- AMDOpteron
- AMDTurion 64 X2
- AMDTurion 64
- AMDSempron(todos los que utilizan sockets 754, 939 y AM2)
- AMDPhenom(K10)
- AMDPhenom II
- AMDAthlon II
- AMDFX(Bulldozer, Piledriver, Steamroller, Excavator)
- AMDRyzen
Intel 64
[editar]Intel 64(antes conocida comoEM64T) es la implementaciónIntelde la tecnología x86-64.
Historia
[editar]Durante mucho tiempo de la historia,AMDha producido y distribuido procesadores basados en los diseños originales de Intel, pero en un giro de la historia, Intel, al ver la oportunidad, adoptó la arquitectura x86-64 de AMD, creada como una extensión de la línea de procesadoresx86propios de Intel. Como AMD luego renombró su arquitectura a AMD64, Intel de igual manera renombró la suya a Intel 64.
Implementaciones
[editar]Esta arquitectura está implementada en los siguientes modelos de procesadores:
Diferencias entre AMD64 e Intel 64
[editar]Aunque existe un alto nivel de compatibilidad a nivel binario, se pueden encontrar pequeñas diferencias entre los dos conjuntos de instrucciones. Un ejemplo menor es el añadido de la instrucción CMPXCHG16B (que intercambia dospalabrasde 64 bits), una extensión de la instrucción CMPXCHG8B presente en la mayoría de los procesadores x86 del mercado; los primeros procesadores AMD no disponían de esta instrucción, por lo tanto todos los procesadores EM64T la incluyeron.
Véase también
[editar]Referencias
[editar]- ↑AMD Corporation (septiembre de 2012).«Volume 2: System Programming»(PDF).AMD64 Architecture Programmer's Manual.AMD Corporation.Consultado el 17 de febrero de 2014.
- ↑IBM Corporation (6 de septiembre de 2007).«IBM WebSphere Application Server 64-bit Performance Demystified».p. 14. Archivado desdeel originalel 25 de enero de 2022.Consultado el 9 de abril de 2010.«Figures 5, 6 and 7 also show the 32-bit version of WAS runs applications at full native hardware performance on the POWER and x86-64 platforms. Unlike some 64-bit processor architectures, the POWER and x86-64 hardware does not emulate 32-bit mode. Therefore applications that do not benefit from 64-bit features can run with full performance on the 32-bit version of WebSphere running on the above mentioned 64-bit platforms.»
- ↑«Debian AMD64 FAQ».Debian Wiki.Consultado el 3 de mayo de 2012.
- ↑«x86-64 Code Model».Apple.Consultado el 23 de noviembre de 2012.
- ↑arch(1)– Comandos generales en elmanualdeDarwin BSDyMac OS X(en inglés)
- ↑Kevin Van Vechten (9 de agosto de 2006).«re: Intel XNU bug report».Darwin-dev mailing list.Apple Computer.Archivado desdeel originalel 1 de febrero de 2020.Consultado el 5 de octubre de 2006.«The kernel and developer tools have standardized on "x86_64" for the name of the Mach-O architecture».
- ↑«Solaris 10 on AMD Opteron».Oracle.Consultado el 9 de diciembre de 2010.
- ↑«Microsoft 64-Bit Computing».Microsoft. Archivado desdeel originalel 12 de diciembre de 2010.Consultado el 9 de diciembre de 2010.
- ↑«AMD64 Port».Debian.Consultado el 23 de noviembre de 2012.
- ↑«Gentoo/AMD64 Project».Gentoo Project. Archivado desdeel originalel 3 de junio de 2013.Consultado el 27 de mayo de 2013.