stringtranslate.com

x86-64

AMD Opteron , la primera CPU que introdujo las extensiones x86-64 en abril de 2003
El conjunto de cinco volúmenes del Manual del programador de la arquitectura x86-64 , publicado y distribuido por AMD en 2002

x86-64 (también conocido como x64 , x86_64 , AMD64 e Intel 64 ) [nota 1] es una versión de 64 bits del conjunto de instrucciones x86 , anunciado por primera vez en 1999. Introdujo dos nuevos modos de operación, el modo de 64 bits y el modo de compatibilidad, junto con un nuevo modo de paginación de 4 niveles .

Con el modo de 64 bits y el nuevo modo de paginación, admite cantidades mucho mayores de memoria virtual y memoria física de lo que era posible en sus predecesores de 32 bits , lo que permite a los programas almacenar mayores cantidades de datos en la memoria. x86-64 también expande los registros de propósito general a 64 bits, y amplía el número de ellos de 8 (algunos de los cuales tenían una funcionalidad limitada o fija, por ejemplo, para la gestión de la pila) a 16 (completamente generales), y proporciona numerosas otras mejoras. La aritmética de punto flotante se admite a través de instrucciones obligatorias similares a SSE2 [ cita requerida ] , y los registros de estilo x87 / MMX generalmente no se usan (pero aún están disponibles incluso en el modo de 64 bits); en su lugar, se utiliza un conjunto de 16 registros vectoriales , de 128 bits cada uno. (Cada registro puede almacenar uno o dos números de doble precisión o de uno a cuatro números de precisión simple , o varios formatos enteros). En el modo de 64 bits, las instrucciones se modifican para admitir operandos de 64 bits y el modo de direccionamiento de 64 bits .

El modo de compatibilidad definido en la arquitectura permite que las aplicaciones de usuario de 16 y 32 bits se ejecuten sin modificaciones, coexistiendo con aplicaciones de 64 bits si el sistema operativo de 64 bits las admite. [11] [nota 2] Como los conjuntos de instrucciones x86 completos de 16 y 32 bits permanecen implementados en el hardware sin ninguna emulación intermedia, estos ejecutables más antiguos pueden ejecutarse con poca o ninguna penalización de rendimiento, [13] mientras que las aplicaciones más nuevas o modificadas pueden aprovechar las nuevas características del diseño del procesador para lograr mejoras de rendimiento. Además, un procesador que admita x86-64 aún se enciende en modo real para una compatibilidad completa con versiones anteriores del 8086 , como lo han hecho los procesadores x86 que admiten el modo protegido desde el 80286 .

La especificación original, creada por AMD y publicada en 2000, ha sido implementada por AMD, Intel y VIA . La microarquitectura AMD K8 , en los procesadores Opteron y Athlon 64 , fue la primera en implementarla. Esta fue la primera incorporación significativa a la arquitectura x86 diseñada por una empresa distinta a Intel. Intel se vio obligada a seguir su ejemplo e introdujo una familia NetBurst modificada que era compatible por software con la especificación de AMD. VIA Technologies introdujo x86-64 en su arquitectura VIA Isaiah, con el VIA Nano .

La arquitectura x86-64 fue rápidamente adoptada por los ordenadores personales de sobremesa y portátiles y los servidores, que habitualmente se configuraban para 16 GiB ( gibibytes ) de memoria o más. Ha sustituido de forma eficaz a la arquitectura discontinuada Intel Itanium (anteriormente IA-64 ), que originalmente estaba destinada a sustituir a la arquitectura x86. x86-64 e Itanium no son compatibles en el nivel de conjunto de instrucciones nativo, y los sistemas operativos y las aplicaciones compilados para una arquitectura no pueden ejecutarse en la otra de forma nativa.

AMD64

Logotipo de AMD64

Historia

AMD64 (también denominada por AMD en su literatura y documentación como "Tecnología AMD de 64 bits" y "Arquitectura AMD x86-64") fue creada como una alternativa a la arquitectura radicalmente diferente IA-64 diseñada por Intel y Hewlett-Packard , que era incompatible con IA-32 , la versión de 32 bits de la arquitectura x86 . AMD anunció originalmente AMD64 en 1999 [14] con una especificación completa disponible en agosto de 2000. [15] Como AMD nunca fue invitada a ser una parte contribuyente para la arquitectura IA-64 y cualquier tipo de licencia parecía poco probable, la arquitectura AMD64 fue posicionada por AMD desde el principio como una forma evolutiva de agregar capacidades informáticas de 64 bits a la arquitectura x86 existente al mismo tiempo que admitía código x86 de 32 bits heredado , a diferencia del enfoque de Intel de crear una arquitectura de 64 bits completamente nueva y completamente incompatible con x86 con IA-64.

El primer procesador basado en AMD64, el Opteron , se lanzó en abril de 2003.

Implementaciones

Los procesadores de AMD que implementan la arquitectura AMD64 incluyen Opteron , Athlon 64 , Athlon 64 X2 , Athlon 64 FX , Athlon II (seguido de "X2", "X3" o "X4" para indicar la cantidad de núcleos y modelos XLT), Turion 64 , Turion 64 X2 , Sempron (versión E6 de "Palermo" y todos los modelos "Manila"), Phenom (seguido de "X3" o "X4" para indicar la cantidad de núcleos), Phenom II (seguido de "X2", "X3", "X4" o "X6" para indicar la cantidad de núcleos), FX , Fusion/APU y Ryzen / Epyc .

Características arquitectónicas

La característica definitoria principal de AMD64 es la disponibilidad de registros de procesador de propósito general de 64 bits (por ejemplo, rax ), operaciones lógicas y aritméticas de enteros de 64 bits y direcciones virtuales de 64 bits . [16] Los diseñadores aprovecharon la oportunidad para realizar también otras mejoras.

Los cambios notables en las extensiones de 64 bits incluyen:

Capacidad de números enteros de 64 bits
Todos los registros de propósito general (GPR) se expanden de 32  bits a 64 bits, y todas las operaciones aritméticas y lógicas, operaciones de memoria a registro y de registro a memoria, etc., pueden operar directamente en números enteros de 64 bits. Las operaciones de inserción y extracción en la pila tienen como valor predeterminado pasos de 8 bytes, y los punteros tienen un ancho de 8 bytes.
Registros adicionales
Además de aumentar el tamaño de los registros de propósito general, el número de registros de propósito general nombrados aumenta de ocho (es decir, eax , ecx , edx , ebx , esp , ebp , esi , edi ) en x86 a 16 (es decir, rax , rcx , rdx , rbx , rsp , rbp , rsi , rdi , r8 , r9 , r10 , r11 , r12 , r13 , r14 , r15 ). Por lo tanto, es posible mantener más variables locales en registros en lugar de en la pila, y dejar que los registros contengan constantes a las que se accede con frecuencia; los argumentos para subrutinas pequeñas y rápidas también se pueden pasar en registros en mayor medida.
AMD64 todavía tiene menos registros que muchos conjuntos de instrucciones RISC (por ejemplo, Power ISA tiene 32 GPR; ARM de 64 bits , RISC-V I, SPARC , Alpha , MIPS y PA-RISC tienen 31) o máquinas similares a VLIW como IA-64 (que tiene 128 registros). Sin embargo, una implementación AMD64 puede tener muchos más registros internos que la cantidad de registros arquitectónicos expuestos por el conjunto de instrucciones (consulte cambio de nombre de registros ). (Por ejemplo, los núcleos AMD Zen tienen 168 registros internos físicos de punto flotante de 64 bits y 160 de 128 bits).
Registros adicionales XMM (SSE)
De manera similar, el número de registros XMM de 128 bits (utilizados para instrucciones Streaming SIMD ) también aumenta de 8 a 16.
La pila de registros x87 FPU tradicional no está incluida en la extensión del tamaño del archivo de registros en el modo de 64 bits, en comparación con los registros XMM utilizados por SSE2, que sí se ampliaron. La pila de registros x87 no es un simple archivo de registros, aunque permite el acceso directo a registros individuales mediante operaciones de intercambio de bajo costo.
Espacio de direcciones virtuales más grande
La arquitectura AMD64 define un formato de dirección virtual de 64 bits, de los cuales los 48 bits de orden inferior se utilizan en las implementaciones actuales. [11] : 120  Esto permite hasta 256  TiB (2 48 bytes ) de espacio de dirección virtual. La definición de la arquitectura permite que este límite se eleve en futuras implementaciones a los 64 bits completos, [11] : 2  : 3  : 13  : 117  : 120  extendiendo el espacio de dirección virtual a 16  EiB (2 64 bytes). [17] Esto se compara con solo 4  GiB (2 32 bytes) para x86. [18]
Esto significa que se pueden operar archivos muy grandes asignando todo el archivo al espacio de direcciones del proceso (lo que suele ser mucho más rápido que trabajar con llamadas de lectura y escritura de archivos), en lugar de tener que asignar regiones del archivo dentro y fuera del espacio de direcciones.
Mayor espacio de direcciones físicas
La implementación original de la arquitectura AMD64 implementó direcciones físicas de 40 bits y, por lo tanto, podía direccionar hasta 1 TiB (2 40 bytes) de RAM. [11] : 24  Las implementaciones actuales de la arquitectura AMD64 (a partir de la microarquitectura AMD 10h ) extienden esto a direcciones físicas de 48 bits [19] y, por lo tanto, pueden direccionar hasta 256 TiB (2 48 bytes) de RAM. La arquitectura permite extender esto a 52 bits en el futuro [11] : 24  [20] (limitado por el formato de entrada de la tabla de páginas); [11] : 131  esto permitiría direccionar hasta 4 PiB de RAM. A modo de comparación, los procesadores x86 de 32 bits están limitados a 64 GiB de RAM en modo de extensión de dirección física (PAE), [21] o 4 GiB de RAM sin modo PAE. [11] : 4 
Mayor espacio de direcciones físicas en modo heredado
Cuando se opera en modo heredado, la arquitectura AMD64 admite el modo de extensión de dirección física (PAE), al igual que la mayoría de los procesadores x86 actuales, pero AMD64 extiende PAE de 36 bits a un límite arquitectónico de 52 bits de dirección física. Por lo tanto, cualquier implementación permite el mismo límite de dirección física que en el modo largo . [11] : 24 
Puntero de instrucción de acceso a datos relativos
Las instrucciones ahora pueden hacer referencia a datos relativos al puntero de instrucción (registro RIP). Esto hace que el código independiente de la posición , como se suele usar en bibliotecas compartidas y en código cargado en tiempo de ejecución, sea más eficiente.
Instrucciones de SSE
La arquitectura original AMD64 adoptó las instrucciones SSE y SSE2 de Intel como instrucciones básicas. Estos conjuntos de instrucciones proporcionan un complemento vectorial a la FPU x87 escalar , para los tipos de datos de precisión simple y doble. SSE2 también ofrece operaciones vectoriales enteras, para tipos de datos que van desde 8 bits a 64 bits de precisión. Esto hace que las capacidades vectoriales de la arquitectura estén a la par con las de los procesadores x86 más avanzados de su tiempo. Estas instrucciones también se pueden utilizar en modo de 32 bits. La proliferación de procesadores de 64 bits ha hecho que estas capacidades vectoriales sean omnipresentes en las computadoras domésticas, lo que permite la mejora de los estándares de las aplicaciones de 32 bits. La edición de 32 bits de Windows 8, por ejemplo, requiere la presencia de instrucciones SSE2. [22] Las instrucciones SSE3 y los conjuntos de instrucciones Streaming SIMD Extensions posteriores no son características estándar de la arquitectura.
Bit de no ejecución
El bit de no ejecución o bit NX (bit 63 de la entrada de la tabla de páginas) permite al sistema operativo especificar qué páginas del espacio de direcciones virtuales pueden contener código ejecutable y cuáles no. Un intento de ejecutar código desde una página etiquetada como "no ejecución" dará como resultado una violación de acceso a la memoria, similar a un intento de escribir en una página de solo lectura. Esto debería dificultar que el código malicioso tome el control del sistema mediante ataques de " desbordamiento de búfer " o "búfer sin comprobar". Una característica similar ha estado disponible en los procesadores x86 desde el 80286 como un atributo de los descriptores de segmento ; sin embargo, esto solo funciona en un segmento completo a la vez.
El direccionamiento segmentado se ha considerado durante mucho tiempo un modo de funcionamiento obsoleto y todos los sistemas operativos actuales de PC lo pasan por alto, estableciendo todos los segmentos en una dirección base de cero y (en su implementación de 32 bits) un tamaño de 4 GiB. AMD fue el primer proveedor de la familia x86 en implementar la función de no ejecución en el modo de direccionamiento lineal. La función también está disponible en el modo heredado de los procesadores AMD64 y los procesadores Intel x86 recientes, cuando se utiliza PAE.
Eliminación de funciones antiguas
Algunas características de "programación del sistema" de la arquitectura x86 no se usaban o se usaban poco en los sistemas operativos modernos y no están disponibles en AMD64 en modo largo (64 bits y compatibilidad), o existen solo en forma limitada. Estas incluyen el direccionamiento segmentado (aunque los segmentos FS y GS se conservan en forma vestigial para su uso como punteros de base adicional a las estructuras del sistema operativo), [11] : 70  el mecanismo de cambio de estado de tarea y el modo 8086 virtual . Estas características permanecen completamente implementadas en el "modo heredado", lo que permite que estos procesadores ejecuten sistemas operativos de 32 y 16 bits sin modificaciones. Algunas instrucciones que demostraron ser raramente útiles no son compatibles con el modo de 64 bits, incluido el guardado/restauración de registros de segmento en la pila, el guardado/restauración de todos los registros (PUSHA/POPA), la aritmética decimal, las instrucciones BOUND e INTO y los saltos "lejanos" y las llamadas con operandos inmediatos.

Detalles del espacio de direcciones virtuales

Direcciones en forma canónica

Implementaciones de espacios de direcciones canónicos (diagramas no a escala)

Aunque las direcciones virtuales tienen 64 bits de ancho en el modo de 64 bits, las implementaciones actuales (y todos los chips que se sabe que están en las etapas de planificación) no permiten que se utilice todo el espacio de direcciones virtuales de 264 bytes (16  EiB ). Esto sería aproximadamente cuatro mil millones de veces el tamaño del espacio de direcciones virtuales en máquinas de 32 bits. La mayoría de los sistemas operativos y aplicaciones no necesitarán un espacio de direcciones tan grande en el futuro previsible, por lo que la implementación de direcciones virtuales tan amplias simplemente aumentaría la complejidad y el costo de la traducción de direcciones sin ningún beneficio real. Por lo tanto, AMD decidió que, en las primeras implementaciones de la arquitectura, solo los 48 bits menos significativos de una dirección virtual se utilizarían realmente en la traducción de direcciones ( búsqueda en la tabla de páginas ). [11] : 120 

Además, la especificación AMD requiere que los 16 bits más significativos de cualquier dirección virtual, bits 48 a 63, deben ser copias del bit 47 (de una manera similar a la extensión de signo ). Si no se cumple este requisito, el procesador generará una excepción. [11] : 131  Las direcciones que cumplen con esta regla se denominan "forma canónica". [11] : 130  Las direcciones de forma canónica van desde 0 hasta 00007FFF'FFFFFFFF, y desde FFFF8000'00000000 hasta FFFFFFFF'FFFFFFFF, para un total de 256  TiB de espacio de dirección virtual utilizable. Esto sigue siendo 65.536 veces más grande que el espacio de dirección virtual de 4 GiB de las máquinas de 32 bits.

Esta característica facilita la posterior escalabilidad a un direccionamiento de 64 bits verdadero. Muchos sistemas operativos (incluidos, entre otros, los de la familia Windows NT ) toman la mitad de mayor dirección del espacio de direcciones (denominado espacio del núcleo ) para sí mismos y dejan la mitad de menor dirección ( espacio de usuario ) para el código de aplicación, pilas de modo de usuario, montones y otras regiones de datos. [23] El diseño de "dirección canónica" garantiza que cada implementación compatible con AMD64 tenga, en efecto, dos mitades de memoria: la mitad inferior comienza en 00000000'00000000 y "crece hacia arriba" a medida que se encuentran disponibles más bits de dirección virtual, mientras que la mitad superior está "acoplada" a la parte superior del espacio de direcciones y crece hacia abajo. Además, imponer la "forma canónica" de las direcciones mediante la verificación de los bits de dirección no utilizados evita que el sistema operativo los use en punteros etiquetados como indicadores, marcadores de privilegios, etc., ya que dicho uso podría volverse problemático cuando la arquitectura se extiende para implementar más bits de dirección virtual.

Las primeras versiones de Windows para x64 ni siquiera usaban los 256 TiB completos; estaban restringidas a solo 8 TiB de espacio de usuario y 8 TiB de espacio de kernel. [23] Windows no admitió todo el espacio de direcciones de 48 bits hasta Windows 8.1 , que se lanzó en octubre de 2013. [23]

Estructura de la tabla de páginas

El modo de direccionamiento de 64 bits (" modo largo ") es un superconjunto de las extensiones de dirección física (PAE); debido a esto, los tamaños de página pueden ser de 4  KiB (2 12 bytes) o 2  MiB (2 21 bytes). [11] : 120  El modo largo también admite tamaños de página de 1  GiB (2 30 bytes). [11] : 120  En lugar del sistema de tabla de páginas de tres niveles utilizado por los sistemas en modo PAE, los sistemas que se ejecutan en modo largo utilizan cuatro niveles de tabla de páginas: la tabla de puntero de directorio de páginas de PAE se extiende de cuatro entradas a 512, y se agrega una tabla adicional de nivel 4 de mapa de páginas (PML4) , que contiene 512 entradas en implementaciones de 48 bits. [11] : 131  Una jerarquía de mapeo completa de páginas de 4 KiB para todo el espacio de 48 bits ocuparía un poco más de 512  GiB de memoria (aproximadamente el 0,195 % del espacio virtual de 256 TiB).

Intel ha implementado un esquema con una tabla de páginas de 5 niveles , que permite que los procesadores Intel 64 admitan un espacio de direcciones virtuales de 57 bits. [24] Extensiones posteriores pueden permitir un espacio de direcciones virtuales de 64 bits completo y memoria física con descriptores de tabla de páginas de 12 bits y desplazamientos de memoria de 16 o 21 bits para tamaños de asignación de páginas de 64 KiB y 2 MiB; la entrada de la tabla de páginas se ampliaría a 128 bits para admitir indicadores de hardware adicionales para el tamaño de la página y el tamaño del espacio de direcciones virtuales. [25]

Límites del sistema operativo

El sistema operativo también puede limitar el espacio de direcciones virtuales. En la sección "Compatibilidad y características de los sistemas operativos" se ofrecen detalles al respecto, cuando corresponda.

Detalles del espacio de dirección física

Los procesadores AMD64 actuales admiten un espacio de direcciones físicas de hasta 248 bytes de RAM, o 256  TiB . [19] Sin embargo, a fecha de 2020 , no se conocían placas base x86-64 que admitieran 256 TiB de RAM. [26] [27] [28] [29] [ verificación fallida ] El sistema operativo puede imponer límites adicionales a la cantidad de RAM que se puede utilizar o que se admite. Los detalles sobre este punto se dan en la sección "Compatibilidad y características del sistema operativo" de este artículo.

Modos de funcionamiento

La arquitectura tiene dos modos principales de funcionamiento: modo largo y modo heredado.

  1. ^ abcd Tenga en cuenta que el código de 16 bits escrito para el 80286 y versiones anteriores no utiliza instrucciones de operandos de 32 bits. El código escrito para el 80386 y versiones posteriores puede utilizar el prefijo de anulación del tamaño del operando (0x66). Normalmente, este prefijo lo utilizan los códigos de modo protegido y largo con el fin de utilizar operandos de 16 bits, ya que ese código se ejecutaría en un segmento de código con un tamaño de operando predeterminado de 32 bits. En el modo real, el tamaño de operando predeterminado es de 16 bits, por lo que el prefijo 0x66 se interpreta de forma diferente, cambiando el tamaño del operando a 32 bits.
Diagrama de estados de los modos de funcionamiento x86-64

Modo largo

El modo largo es el modo de funcionamiento principal previsto de la arquitectura; es una combinación del modo nativo de 64 bits del procesador y un modo de compatibilidad combinado de 32 y 16 bits. Lo utilizan los sistemas operativos de 64 bits. En un sistema operativo de 64 bits, los programas de 64 bits se ejecutan en modo de 64 bits, y las aplicaciones de modo protegido de 32 y 16 bits (que no necesitan utilizar el modo real ni el modo 8086 virtual para ejecutarse en cualquier momento) se ejecutan en modo de compatibilidad. Los programas en modo real y los programas que utilizan el modo 8086 virtual en cualquier momento no se pueden ejecutar en modo largo a menos que esos modos se emullen en el software. [11] : 11  Sin embargo, dichos programas se pueden iniciar desde un sistema operativo que se ejecuta en modo largo en procesadores que admiten VT-x o AMD-V creando un procesador virtual que se ejecuta en el modo deseado.

Dado que el conjunto de instrucciones básicas es el mismo, casi no hay penalización de rendimiento por ejecutar código x86 en modo protegido. Esto es diferente a IA-64 de Intel , donde las diferencias en el conjunto de instrucciones subyacente significan que la ejecución de código de 32 bits debe realizarse en emulación de x86 (haciendo que el proceso sea más lento) o con un coprocesador x86 dedicado. Sin embargo, en la plataforma x86-64, muchas aplicaciones x86 podrían beneficiarse de una recompilación de 64 bits , debido a los registros adicionales en el código de 64 bits y al soporte garantizado de FPU basado en SSE2, que un compilador puede usar para la optimización. Sin embargo, las aplicaciones que manejan regularmente números enteros más anchos que 32 bits, como algoritmos criptográficos, necesitarán una reescritura del código que maneja los números enteros enormes para aprovechar los registros de 64 bits.

Modo legado

El modo heredado es el modo en el que se encuentra el procesador cuando no está en modo largo. [11] : 14  En este modo, el procesador actúa como un procesador x86 antiguo y solo se puede ejecutar código de 16 y 32 bits. El modo heredado permite un direccionamiento virtual máximo de 32 bits, lo que limita el espacio de direcciones virtuales a 4 GiB. [11] : 14  : 24  : 118  Los programas de 64 bits no se pueden ejecutar desde el modo heredado.

Modo protegido

El modo protegido se convierte en un submodo del modo heredado. [11] : 14  Es el submodo en el que operan los sistemas operativos de 32 bits y los sistemas operativos de modo protegido de 16 bits cuando se ejecutan en una CPU x86-64. [11] : 14 

Modo real

El modo real es el modo de funcionamiento inicial cuando se inicializa el procesador y es un submodo del modo heredado. Es compatible con versiones anteriores de los procesadores Intel 8086 e Intel 8088 originales . El modo real se utiliza principalmente en la actualidad en los cargadores de arranque de los sistemas operativos, que la arquitectura requiere para configurar los detalles de la memoria virtual antes de realizar la transición a modos superiores. Este modo también lo utiliza cualquier sistema operativo que necesite comunicarse con el firmware del sistema con una interfaz de estilo BIOS tradicional . [30]

Intel 64

Intel 64 es la implementación de x86-64 de Intel, utilizada e implementada en varios procesadores fabricados por Intel.

Historia

Históricamente, AMD ha desarrollado y producido procesadores con conjuntos de instrucciones inspirados en los diseños originales de Intel, pero con x86-64, los roles se invirtieron: Intel se encontró en la posición de adoptar la ISA que AMD creó como una extensión de la propia línea de procesadores x86 de Intel.

El proyecto de Intel se denominó originalmente Yamhill [31] (por el río Yamhill en el valle Willamette de Oregón). Después de varios años de negar su existencia, Intel anunció en la IDF de febrero de 2004 que el proyecto estaba en marcha. El presidente de Intel en ese momento, Craig Barrett , admitió que este era uno de sus secretos peor guardados. [32] [33]

El nombre que Intel le dio a este conjunto de instrucciones ha cambiado varias veces. El nombre que se usó en la IDF fue CT [34] (probablemente [¿ investigación original? ] para Clackamas Technology , otro nombre en código de un río de Oregón ); en cuestión de semanas comenzaron a referirse a él como IA-32e (para extensiones IA-32 ) y en marzo de 2004 dieron a conocer el nombre "oficial" EM64T (Extended Memory 64 Technology). A fines de 2006, Intel comenzó a usar el nombre Intel 64 para su implementación, en paralelo con el uso del nombre AMD64 por parte de AMD. [35]

El primer procesador que implementó Intel 64 fue el procesador multi-socket Xeon con nombre en código Nocona en junio de 2004. En contraste, los chips Prescott iniciales (febrero de 2004) no habilitaban esta característica. Posteriormente, Intel comenzó a vender Pentium 4 habilitados para Intel 64 utilizando la revisión E0 del núcleo Prescott, que se vendía en el mercado OEM como Pentium 4, modelo F. La revisión E0 también agrega eXecute Disable (XD) (el nombre de Intel para el bit NX ) a Intel 64, y se ha incluido en el entonces actual Xeon con nombre en código Irwindale . El lanzamiento oficial de Intel de Intel 64 (bajo el nombre EM64T en ese momento) en los procesadores de escritorio convencionales fue el Prescott-2M de paso N0.

El primer procesador móvil Intel que implementa Intel 64 es la versión Merom del procesador Core 2 , que se lanzó el 27 de julio de 2006. Ninguna de las CPU para portátiles anteriores de Intel ( Core Duo , Pentium M , Celeron M , Mobile Pentium 4 ) implementa Intel 64.

Implementaciones

Los procesadores de Intel que implementan la arquitectura Intel64 incluyen los Pentium 4 serie F/serie 5x1, 506 y 516, los modelos Celeron D 3x1, 3x6, 355, 347, 352, 360 y 365 y todos los Celeron posteriores , todos los modelos de Xeon desde " Nocona ", todos los modelos de procesadores Pentium Dual-Core desde " Merom-2M ", los Atom 230, 330, D410, D425, D510, D525, N450, N455, N470, N475, N550, N570, N2600 y N2800, todas las versiones de los procesadores Pentium D , Pentium Extreme Edition , Core 2 , Core i9 , Core i7 , Core i5 y Core i3 , y los procesadores Xeon Procesadores de la serie Phi 7200.

X86S

X86S es una simplificación de x86-64 propuesta por Intel en mayo de 2023 para sus productos "Intel 64". [36] La nueva arquitectura eliminaría la compatibilidad con sistemas operativos de 16 y 32 bits, mientras que los programas de 32 bits seguirían ejecutándose en un sistema operativo de 64 bits. Una CPU ya no tendría el modo heredado y se iniciaría directamente en el modo largo de 64 bits . Habrá una forma de cambiar a la paginación de 5 niveles sin pasar por el modo no paginado. Las características específicas eliminadas incluyen: [37]

Intel cree que el cambio sigue lógicamente la eliminación de la puerta A20 en 2008 y la eliminación del soporte de sistemas operativos de 16 y 32 bits en el firmware de Intel en 2020. El soporte para sistemas operativos heredados se lograría a través de virtualización acelerada por hardware y/o emulación de anillo 0. [37]

Extensiones de rendimiento avanzadas

Advanced Performance Extensions es una propuesta de Intel de 2023 para nuevas instrucciones y 16 registros de propósito general adicionales.

Implementación x86-64 de VIA

VIA Technologies presentó su primera implementación de la arquitectura x86-64 en 2008 después de cinco años de desarrollo por parte de su división de CPU, Centaur Technology . [38] Con el nombre en código "Isaiah", la arquitectura de 64 bits se dio a conocer el 24 de enero de 2008, [39] y se lanzó el 29 de mayo bajo la marca VIA Nano . [40]

El procesador admite una serie de extensiones x86 específicas de VIA diseñadas para aumentar la eficiencia en dispositivos de bajo consumo. Se espera que la arquitectura Isaiah sea dos veces más rápida en rendimiento de números enteros y cuatro veces más rápida en rendimiento de punto flotante que el VIA Esther de la generación anterior a una velocidad de reloj equivalente . También se espera que el consumo de energía esté a la par con las CPU VIA de la generación anterior, con una potencia de diseño térmico que varía de 5 W a 25 W. [41] Al ser un diseño completamente nuevo, la arquitectura Isaiah se construyó con soporte para características como el conjunto de instrucciones x86-64 y la virtualización x86 que no estaban disponibles en sus predecesores, la línea VIA C7 , al tiempo que conserva sus extensiones de cifrado.

Niveles de microarquitectura

En 2020, a través de una colaboración entre AMD, Intel, Red Hat y SUSE , se definieron tres niveles de microarquitectura (o niveles de características) sobre la línea base x86-64: x86-64-v2, x86-64-v3 y x86-64-v4. [42] [43] Estos niveles definen características específicas a las que los programadores pueden apuntar para proporcionar optimizaciones en tiempo de compilación. Las características expuestas por cada nivel son las siguientes: [44]

Los niveles de características de la microarquitectura x86-64 también se pueden encontrar como AMD64-v1, AMD64-v2... o AMD64_v1... en configuraciones donde se utiliza la nomenclatura "AMD64". Estos se utilizan como sinónimos de la nomenclatura x86-64-vX y, por lo tanto, son funcionalmente idénticos. Por ejemplo, la documentación del lenguaje Go o la distribución Linux Fedora.

Todos los niveles incluyen características que se encuentran en los niveles anteriores. Las extensiones del conjunto de instrucciones que no están relacionadas con el cálculo de propósito general, incluidas AES-NI y RDRAND , están excluidas de los requisitos del nivel.

Diferencias entre AMD64 e Intel 64

Aunque son casi idénticos, existen algunas diferencias entre los dos conjuntos de instrucciones en la semántica de unas pocas instrucciones de máquina (o situaciones) poco utilizadas, que se utilizan principalmente para la programación de sistemas . [47] Los compiladores generalmente producen ejecutables (es decir, código de máquina ) que evitan cualquier diferencia, al menos para los programas de aplicación ordinarios . Por lo tanto, esto es de interés principalmente para los desarrolladores de compiladores, sistemas operativos y similares, que deben lidiar con instrucciones de sistema individuales y especiales.

Implementaciones recientes

Implementaciones más antiguas

Adopción

Gráfico de áreas que muestra la representación de diferentes familias de microprocesadores en la lista de clasificación de supercomputadoras TOP500, de 1993 a 2020 [78]

En las supercomputadoras rastreadas por TOP500 , la aparición de extensiones de 64 bits para la arquitectura x86 permitió que los procesadores x86 de 64 bits de AMD e Intel reemplazaran la mayoría de las arquitecturas de procesadores RISC utilizadas previamente en dichos sistemas (incluidos PA-RISC , SPARC , Alpha y otros), así como los x86 de 32 bits, aunque el propio Intel inicialmente intentó sin éxito reemplazar x86 con una nueva arquitectura de 64 bits incompatible en el procesador Itanium .

A partir de 2023 , una supercomputadora basada en HPE EPYC llamada Frontier es la número uno. La primera supercomputadora basada en ARM apareció en la lista en 2018 [79] y, en los últimos años, los coprocesadores de arquitectura no CPU ( GPGPU ) también han jugado un papel importante en el rendimiento. Los coprocesadores Xeon Phi "Knights Corner" de Intel , que implementan un subconjunto de x86-64 con algunas extensiones vectoriales, [80] también se utilizan, junto con los procesadores x86-64, en la supercomputadora Tianhe-2 . [81]

Compatibilidad y características del sistema operativo

Los siguientes sistemas operativos y versiones admiten la arquitectura x86-64 en modo largo .

BSD

Libélula BSD

En febrero de 2004 se inició el trabajo preliminar de infraestructura para un puerto x86-64. [82] Este desarrollo se estancó más tarde. El desarrollo se reanudó durante julio de 2007 [83] y continuó durante Google Summer of Code 2008 y SoC 2009. [84] [85] La primera versión oficial que contenía soporte para x86-64 fue la versión 2.4. [86]

LibreBSD

FreeBSD agregó por primera vez soporte para x86-64 bajo el nombre "amd64" como una arquitectura experimental en 5.1-RELEASE en junio de 2003. Fue incluida como una arquitectura de distribución estándar a partir de 5.2-RELEASE en enero de 2004. Desde entonces, FreeBSD la ha designado como una plataforma de nivel 1. La versión 6.0-RELEASE corrigió algunas peculiaridades con la ejecución de ejecutables x86 bajo amd64, y la mayoría de los controladores funcionan tal como lo hacen en la arquitectura x86. Actualmente se está trabajando para integrar más completamente la interfaz binaria de aplicación (ABI) x86, de la misma manera que funciona actualmente la compatibilidad con ABI de 32 bits de Linux.

NetBSD

El soporte de la arquitectura x86-64 se incluyó por primera vez en el árbol de código fuente de NetBSD el 19 de junio de 2001. A partir de NetBSD 2.0, publicado el 9 de diciembre de 2004, NetBSD/amd64 es un puerto totalmente integrado y compatible. El código de 32 bits todavía se admite en el modo de 64 bits, con una capa de compatibilidad del núcleo netbsd-32 para llamadas al sistema de 32 bits. El bit NX se utiliza para proporcionar una pila y un montón no ejecutables con granularidad por página (la granularidad de segmento se utiliza en x86 de 32 bits).

OpenBSD

OpenBSD ha sido compatible con AMD64 desde OpenBSD 3.5, publicado el 1 de mayo de 2004. La implementación completa en el árbol de la compatibilidad con AMD64 se logró antes del lanzamiento inicial del hardware porque AMD había prestado varias máquinas para el hackathon del proyecto ese año. Los desarrolladores de OpenBSD han adoptado la plataforma debido a su compatibilidad con el bit NX , que permitió una implementación sencilla de la función W^X .

El código para el puerto AMD64 de OpenBSD también se ejecuta en procesadores Intel 64 que contienen el uso clonado de las extensiones AMD64, pero como Intel omitió el bit NX de la tabla de páginas en los primeros procesadores Intel 64, no hay capacidad W^X en esas CPU Intel; los procesadores Intel 64 posteriores agregaron el bit NX bajo el nombre de "bit XD". El multiprocesamiento simétrico (SMP) funciona en el puerto AMD64 de OpenBSD, a partir de la versión 3.6 del 1 de noviembre de 2004.

Dos

Es posible ingresar al modo largo bajo DOS sin un extensor DOS, [87] pero el usuario debe regresar al modo real para poder llamar a las interrupciones del BIOS o DOS.

También es posible ingresar al modo largo con un extensor DOS similar a DOS/4GW , pero más complejo ya que x86-64 carece del modo virtual 8086. El propio DOS no es consciente de eso, y no se deberían esperar beneficios a menos que se ejecute DOS en una emulación con un backend de controlador de virtualización adecuado, por ejemplo: la interfaz de almacenamiento masivo.

Linux

Linux fue el primer núcleo de sistema operativo en ejecutar la arquitectura x86-64 en modo largo , comenzando con la versión 2.4 en 2001 (antes de la disponibilidad del hardware). [88] [89] Linux también proporciona compatibilidad con versiones anteriores para ejecutar ejecutables de 32 bits. Esto permite que los programas se recompilen en modo largo mientras se conserva el uso de programas de 32 bits. Las distribuciones Linux actuales se entregan con núcleos x86-64 nativos y userlands . Algunas, como Arch Linux , [90] SUSE , Mandriva y Debian , permiten a los usuarios instalar un conjunto de componentes y bibliotecas de 32 bits cuando se instalan desde un medio de distribución de 64 bits, lo que permite que la mayoría de las aplicaciones de 32 bits existentes se ejecuten junto con el sistema operativo de 64 bits.

La interfaz binaria de aplicación ( ABI) x32 , introducida en Linux 3.4, permite que los programas compilados para la ABI x32 se ejecuten en el modo de 64 bits de x86-64 mientras que solo utilizan punteros y campos de datos de 32 bits. [91] [92] [93] Aunque esto limita el programa a un espacio de dirección virtual de 4 GiB, también disminuye la huella de memoria del programa y en algunos casos puede permitir que se ejecute más rápido. [91] [92] [93]

Linux de 64 bits permite hasta 128  TiB de espacio de direcciones virtuales para procesos individuales y puede direccionar aproximadamente 64 TiB de memoria física, sujeto a las limitaciones del procesador y del sistema, [94] o hasta 128 PiB (virtuales) y 4 PiB (físicos) con paginación de 5 niveles habilitada. [95]

macOS

Mac OS X 10.4.7 y versiones superiores de Mac OS X 10.4 ejecutan herramientas de línea de comandos de 64 bits utilizando las bibliotecas matemáticas y POSIX en máquinas basadas en Intel de 64 bits, al igual que todas las versiones de Mac OS X 10.4 y 10.5 las ejecutan en máquinas PowerPC de 64 bits. Ninguna otra biblioteca o marco funciona con aplicaciones de 64 bits en Mac OS X 10.4. [96] El núcleo y todas las extensiones del núcleo son solo de 32 bits.

Mac OS X 10.5 admite aplicaciones GUI de 64 bits que utilicen Cocoa , Quartz , OpenGL y X11 en máquinas basadas en Intel de 64 bits, así como en máquinas PowerPC de 64 bits. [97] Todas las bibliotecas y marcos que no son GUI también admiten aplicaciones de 64 bits en esas plataformas. El núcleo y todas las extensiones del núcleo son solo de 32 bits.

Mac OS X 10.6 es la primera versión de macOS que admite un kernel de 64 bits . Sin embargo, no todas las computadoras de 64 bits pueden ejecutar el kernel de 64 bits, y no todas las computadoras de 64 bits que pueden ejecutar el kernel de 64 bits lo harán de forma predeterminada. [98] El kernel de 64 bits, al igual que el kernel de 32 bits, admite aplicaciones de 32 bits; ambos kernels también admiten aplicaciones de 64 bits. Las aplicaciones de 32 bits tienen un límite de espacio de dirección virtual de 4 GiB en cualquiera de los kernels. [99] [100] El kernel de 64 bits no admite extensiones de kernel de 32 bits , y el kernel de 32 bits no admite extensiones de kernel de 64 bits.

OS X 10.8 incluye sólo el kernel de 64 bits, pero continúa admitiendo aplicaciones de 32 bits; sin embargo, no admite extensiones de kernel de 32 bits.

macOS 10.15 incluye solo el kernel de 64 bits y ya no admite aplicaciones de 32 bits. Esta eliminación de la compatibilidad ha presentado un problema para WineHQ (y la versión comercial CrossOver ), ya que necesita poder seguir ejecutando aplicaciones de Windows de 32 bits. La solución, denominada wine32on64 , fue agregar procesadores que hacen que la CPU entre y salga del modo de compatibilidad de 32 bits en la aplicación nominalmente de 64 bits. [101] [102]

macOS utiliza el formato binario universal para empaquetar versiones de 32 y 64 bits de código de aplicación y biblioteca en un único archivo; la versión más adecuada se selecciona automáticamente en el momento de la carga. En Mac OS X 10.6, el formato binario universal también se utiliza para el núcleo y para aquellas extensiones de núcleo que admiten núcleos de 32 y 64 bits.

Solaris

Solaris 10 y versiones posteriores admiten la arquitectura x86-64.

Para Solaris 10, al igual que con la arquitectura SPARC , sólo hay una imagen del sistema operativo, que contiene un núcleo de 32 bits y un núcleo de 64 bits; se denomina imagen de DVD-ROM "x64/x86". El comportamiento predeterminado es arrancar un núcleo de 64 bits, lo que permite ejecutar tanto los ejecutables de 64 bits como los de 32 bits existentes o nuevos. También se puede seleccionar manualmente un núcleo de 32 bits, en cuyo caso sólo se ejecutarán los ejecutables de 32 bits. El isainfocomando se puede utilizar para determinar si un sistema está ejecutando un núcleo de 64 bits.

Para Solaris 11, solo se proporciona el núcleo de 64 bits. Sin embargo, el núcleo de 64 bits admite ejecutables, bibliotecas y llamadas del sistema tanto de 32 como de 64 bits.

Ventanas

Las ediciones x64 del cliente y servidor de Microsoft Windows ( Windows XP Professional x64 Edition y Windows Server 2003 x64 Edition) se lanzaron en marzo de 2005. [103] Internamente, en realidad son la misma compilación (5.2.3790.1830 SP1), [104] [105] ya que comparten la misma base de origen y los mismos binarios del sistema operativo, por lo que incluso las actualizaciones del sistema se lanzan en paquetes unificados, de forma muy similar a las ediciones Windows 2000 Professional y Server para x86. Windows Vista , que también tiene muchas ediciones diferentes, se lanzó en enero de 2007. Windows 7 se lanzó en julio de 2009. Windows Server 2008 R2 se vendió solo en ediciones x64 e Itanium; las versiones posteriores de Windows Server solo ofrecen una edición x64.

Las versiones de Windows para x64 anteriores a Windows 8.1 y Windows Server 2012 R2 ofrecen lo siguiente:

En Windows 8.1 y Windows Server 2012 R2, los espacios de direcciones virtuales del modo usuario y del modo kernel se han ampliado a 128 TiB. [23] Estas versiones de Windows no se instalarán en procesadores que carezcan de la CMPXCHG16Binstrucción.

Las siguientes características adicionales se aplican a todas las versiones x64 de Windows:

Consolas de videojuegos

Tanto la PlayStation 4 como la Xbox One , y todas las variantes de esas consolas, incorporan procesadores AMD x86-64, basados ​​en la microarquitectura Jaguar . [116] [117] El firmware y los juegos están escritos en código x86-64; no está involucrado ningún código x86 heredado.

La generación actual, la PlayStation 5 y las Xbox Series X y Series S respectivamente, también incorporan procesadores AMD x86-64, basados ​​en la microarquitectura Zen 2. [118] [119]

Aunque se considera una PC, Steam Deck utiliza una unidad de procesamiento acelerado (APU) AMD x86-64 personalizada, basada en la microarquitectura Zen 2. [120]

Convenciones de nombres de la industria

Dado que AMD64 e Intel 64 son sustancialmente similares, muchos productos de software y hardware utilizan un término independiente del proveedor para indicar su compatibilidad con ambas implementaciones. La designación original de AMD para esta arquitectura de procesador, "x86-64", todavía se utiliza para este propósito, [2] al igual que la variante "x86_64". [3] [4] Otras empresas, como Microsoft [6] y Sun Microsystems / Oracle Corporation , [5] utilizan la contracción "x64" en material de marketing.

El término IA-64 se refiere al procesador Itanium y no debe confundirse con x86-64, ya que es un conjunto de instrucciones completamente diferente.

Muchos sistemas operativos y productos, especialmente aquellos que introdujeron soporte x86-64 antes de la entrada de Intel al mercado, utilizan el término "AMD64" o "amd64" para referirse tanto a AMD64 como a Intel 64.

Licencias

x86-64/AMD64 fue desarrollado exclusivamente por AMD. Hasta abril de 2021, cuando expiraron las patentes pertinentes, AMD tenía patentes sobre técnicas utilizadas en AMD64; [123] [124] [125] AMD tuvo que obtener la licencia de esas patentes para poder implementar AMD64. Intel celebró un acuerdo de licencia cruzada con AMD, otorgando a AMD la licencia de sus patentes sobre técnicas x86 existentes y a AMD la licencia de sus patentes sobre técnicas utilizadas en x86-64. [126] En 2009, AMD e Intel resolvieron varias demandas y desacuerdos sobre licencias cruzadas, ampliando sus acuerdos de licencia cruzada. [127] [128] [129]

Véase también

Notas

  1. ^ Se utilizan varios nombres para el conjunto de instrucciones. Antes del lanzamiento, se utilizaban x86-64 y x86_64, mientras que tras el lanzamiento AMD lo denominó AMD64. [1] Intel utilizó inicialmente los nombres IA-32e y EM64T antes de decidirse finalmente por "Intel 64" para su implementación. Algunos en la industria, incluyendo Apple , [2] [3] [4] utilizan x86-64 y x86_64, mientras que otros, notablemente Sun Microsystems [5] (ahora Oracle Corporation ) y Microsoft , [6] utilizan x64. La familia BSD de sistemas operativos y varias distribuciones Linux [7] [8] utilizan AMD64, al igual que Microsoft Windows internamente. [9] [10]
  2. ^ En la práctica, los sistemas operativos de 64 bits generalmente no admiten aplicaciones de 16 bits, aunque las versiones modernas de Microsoft Windows contienen una solución limitada que admite de manera efectiva los instaladores InstallShield y Microsoft ACME de 16 bits al sustituirlos silenciosamente con código de 32 bits. [12]
  1. ^ The Register informó que el modelo G1 (0F49h) de Pentium 4 se probará el 17 de octubre y se enviará en grandes cantidades el 14 de noviembre. [66] Sin embargo, el documento de Intel dice que las muestras están disponibles el 9 de septiembre, mientras que el 17 de octubre es la "fecha de primera disponibilidad de material posterior a la conversión", que Intel define como "la fecha proyectada en la que un cliente puede esperar recibir los materiales posteriores a la conversión... los clientes deben estar preparados para recibir los materiales posteriores a la conversión en esta fecha". [67]

Referencias

  1. ^ "Preguntas frecuentes sobre Debian AMD64". Wiki de Debian . Archivado desde el original el 26 de septiembre de 2019. Consultado el 3 de mayo de 2012 .
  2. ^ abc «x86-64 Code Model». Apple. Archivado desde el original el 2 de junio de 2012. Consultado el 23 de noviembre de 2012 .
  3. ^ abc arch(1) –  Manual de comandos generales de Darwin y macOS
  4. ^ abc Kevin Van Vechten (9 de agosto de 2006). "re: Informe de error de Intel XNU". Lista de correo Darwin-dev . Apple Computer . Archivado desde el original el 1 de febrero de 2020 . Consultado el 5 de octubre de 2006 . El núcleo y las herramientas de desarrollo han estandarizado el uso de "x86_64" para el nombre de la arquitectura Mach-O
  5. ^ ab "Solaris 10 en AMD Opteron". Oracle. Archivado desde el original el 25 de julio de 2017. Consultado el 9 de diciembre de 2010 .
  6. ^ ab «Microsoft 64-Bit Computing». Microsoft. Archivado desde el original el 12 de diciembre de 2010. Consultado el 9 de diciembre de 2010 .
  7. ^ "AMD64 Port". Debian. Archivado desde el original el 26 de septiembre de 2019. Consultado el 23 de noviembre de 2012 .
  8. ^ "Proyecto Gentoo/AMD64". Proyecto Gentoo. Archivado desde el original el 3 de junio de 2013. Consultado el 27 de mayo de 2013 .
  9. ^ "Detalles de implementación de WOW64". Archivado desde el original el 13 de abril de 2018 . Consultado el 24 de enero de 2016 .
  10. ^ "Clase ProcessorArchitecture". Archivado desde el original el 3 de junio de 2017 . Consultado el 24 de enero de 2016 .
  11. ^ abcdefghijklmnopqrstu AMD Corporation (diciembre de 2016). «Volumen 2: Programación del sistema» (PDF) . Manual del programador de la arquitectura AMD64 . AMD Corporation. Archivado (PDF) del original el 13 de julio de 2018. Consultado el 25 de marzo de 2017 .
  12. ^ Raymond Chen (31 de octubre de 2013). «Si no hay una capa de emulación de 16 bits en Windows de 64 bits, ¿cómo es posible que se puedan ejecutar determinados instaladores de 16 bits?». Archivado desde el original el 14 de julio de 2021. Consultado el 14 de julio de 2021 .
  13. ^ "IBM WebSphere Application Server 64-bit Performance Demystified" (PDF) . IBM Corporation. 6 de septiembre de 2007. p. 14. Archivado (PDF) del original el 25 de enero de 2022 . Consultado el 9 de abril de 2010 . Las figuras 5, 6 y 7 también muestran que la versión de 32 bits de WAS ejecuta aplicaciones con el máximo rendimiento de hardware nativo en las plataformas POWER y x86-64. A diferencia de algunas arquitecturas de procesadores de 64 bits, el hardware POWER y x86-64 no emula el modo de 32 bits. Por lo tanto, las aplicaciones que no se benefician de las características de 64 bits pueden ejecutarse con el máximo rendimiento en la versión de 32 bits de WebSphere que se ejecuta en las plataformas de 64 bits mencionadas anteriormente.
  14. ^ "AMD revela nuevas tecnologías en el foro de microprocesadores" (nota de prensa). AMD. 5 de octubre de 1999. Archivado desde el original el 8 de marzo de 2012 . Consultado el 9 de noviembre de 2010 .
  15. ^ "AMD lanza la especificación arquitectónica x86-64; permite la migración impulsada por el mercado a la informática de 64 bits" (nota de prensa). AMD. 10 de agosto de 2000. Archivado desde el original el 8 de marzo de 2012 . Consultado el 9 de noviembre de 2010 .
  16. ^ Manual del programador de la arquitectura AMD64 (PDF) . p. 1.
  17. ^ Mauerer, W. (2010). Arquitectura de kernel de Linux profesional. John Wiley e hijos.
  18. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, volumen 3A: Guía de programación del sistema, parte 1" (PDF) . pp. 4–7. Archivado (PDF) desde el original el 16 de mayo de 2011. Consultado el 10 de julio de 2019 .
  19. ^ ab "BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors" (PDF) . p. 24. Archivado (PDF) del original el 18 de abril de 2016 . Consultado el 27 de febrero de 2016 . El espacio de direcciones físicas aumentó a 48 bits.
  20. ^ "Myth and facts about 64-bit Linux" (PDF). March 2, 2008. p. 7. Archived from the original (PDF) on October 10, 2010. Retrieved May 30, 2010. Physical address space increased to 48 bits
  21. ^ Shanley, Tom (1998). Pentium Pro and Pentium II System Architecture. PC System Architecture Series (Second ed.). Addison-Wesley. p. 445. ISBN 0-201-30973-4.
  22. ^ Microsoft Corporation. "What is PAE, NX, and SSE2 and why does my PC need to support them to run Windows 8 ?". Archived from the original on April 11, 2013. Retrieved March 19, 2013.
  23. ^ a b c d "Memory Limits for Windows Releases". MSDN. Microsoft. November 16, 2013. Archived from the original on January 6, 2014. Retrieved January 20, 2014.
  24. ^ "5-Level Paging and 5-Level EPT" (PDF). Intel. May 2017. Archived (PDF) from the original on December 5, 2018. Retrieved June 17, 2017.
  25. ^ US patent 9858198, Larry Seiler, "64KB page system that supports 4KB page operation", published 2016-12-29, issued 2018-01-02, assigned to Intel Corp. 
  26. ^ "Opteron 6100 Series Motherboards". Supermicro Corporation. Archived from the original on June 3, 2010. Retrieved June 22, 2010.
  27. ^ "Supermicro XeonSolutions". Supermicro Corporation. Archived from the original on May 27, 2010. Retrieved June 20, 2010.
  28. ^ "Opteron 8000 Series Motherboards". Supermicro Corporation. Archived from the original on May 27, 2010. Retrieved June 20, 2010.
  29. ^ "Tyan Product Matrix". MiTEC International Corporation. Archived from the original on June 6, 2010. Retrieved June 21, 2010.
  30. ^ a b "From the AMI Archives: AMIBIOS 8 and the Transition to EFI". American Megatrends. September 8, 2017. Archived from the original on October 25, 2021. Retrieved October 25, 2021.
  31. ^ "Intel is Continuing the Yamhill Project?". Neowin. Archived from the original on June 5, 2022. Retrieved June 5, 2022.
  32. ^ "Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott". The Inquirer. February 17, 2004. Archived from the original on January 12, 2013. Retrieved August 20, 2017.
  33. ^ ""A Roundup of 64-Bit Computing", from internetnews.com". Archived from the original on September 25, 2012. Retrieved September 18, 2006.
  34. ^ Lapedus, Mark (February 6, 2004). "Intel to demo 'CT' 64-bit processor line at IDF". EDN. AspenCore Media. Archived from the original on May 25, 2021. Retrieved May 25, 2021.
  35. ^ "Intel 64 Architecture". Intel. Archived from the original on June 29, 2011. Retrieved June 29, 2007.
  36. ^ "Intel Publishes "X86-S" Specification For 64-bit Only Architecture". www.phoronix.com.
  37. ^ a b "Envisioning a Simplified Intel Architecture for the Future". Intel.
  38. ^ "VIA to launch new processor architecture in 1Q08" (subscription required). DigiTimes. July 25, 2007. Archived from the original on December 3, 2008. Retrieved July 25, 2007.
  39. ^ Stokes, Jon (January 23, 2008). "Isaiah revealed: VIA's new low-power architecture". Ars Technica. Archived from the original on January 27, 2008. Retrieved January 24, 2008.
  40. ^ "VIA Launches VIA Nano Processor Family" (Press release). VIA. May 29, 2008. Archived from the original on February 3, 2019. Retrieved May 25, 2017.
  41. ^ "VIA Isaiah Architecture Introduction" (PDF). VIA. January 23, 2008. Archived from the original (PDF) on September 7, 2008. Retrieved July 31, 2013.
  42. ^ Weimer, Florian (July 10, 2020). "New x86-64 micro-architecture levels". llvm-dev (Mailing list). Archived from the original on April 14, 2021. Retrieved March 11, 2021.
  43. ^ Weimer, Florian (January 5, 2021). "Building Red Hat Enterprise Linux 9 for the x86-64-v2 microarchitecture level". Red Hat developer blog. Archived from the original on February 20, 2022. Retrieved March 22, 2022.
  44. ^ "System V Application Binary Interface Low Level System Information". x86-64 psABI repo. January 29, 2021. Archived from the original on February 2, 2021. Retrieved March 11, 2021 – via GitLab.
  45. ^ "QEMU version 7.2.0 released - QEMU". www.qemu.org. Archived from the original on December 21, 2022. Retrieved January 9, 2023.
  46. ^ "ChangeLog/7.2 - QEMU". wiki.qemu.org. Archived from the original on January 9, 2023. Retrieved January 9, 2023.
  47. ^ Wasson, Scott (March 23, 2005). "64-bit computing in theory and practice". The Tech Report. Archived from the original on March 12, 2011. Retrieved March 22, 2011.
  48. ^ "Discussion on Stack Overflow". March 2021. Archived from the original on January 11, 2023. Retrieved March 2, 2021.
  49. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A–Z" (PDF). Intel. September 2013. pp. 4–397. Archived (PDF) from the original on October 20, 2013. Retrieved January 21, 2014.
  50. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z" (PDF). Intel. September 2013. pp. 4–400. Archived (PDF) from the original on October 20, 2013. Retrieved January 21, 2014.
  51. ^ "How retiring segmentation in AMD64 long mode broke VMware". Pagetable.com. November 9, 2006. Archived from the original on July 18, 2011. Retrieved May 2, 2010.
  52. ^ "VMware and CPU Virtualization Technology" (PDF). VMware. Archived (PDF) from the original on July 17, 2011. Retrieved September 8, 2010.
  53. ^ "Linux-Kernel Archive: [PATCH 2/5] KVM: svm: Disallow EFER.LMSLE on hardware that doesn't support it". lkml.indiana.edu. Retrieved November 3, 2023.
  54. ^ "AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions" (PDF). AMD. May 2018. p. 419. Archived (PDF) from the original on August 20, 2018. Retrieved August 2, 2018.
  55. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z" (PDF). Intel. September 2014. pp. 4–412. Archived (PDF) from the original on January 13, 2015. Retrieved December 28, 2014.
  56. ^ Hadi Brais, The Significance of the x86 LFENCE Instruction, 14 May 2018. Archived on 10 Jun 2023.
  57. ^ "Live Migration with AMD-V™ Extended Migration Technology" (PDF). developer.amd.com. Archived (PDF) from the original on December 6, 2022. Retrieved June 30, 2022.
  58. ^ Maged M. Michael. "Practical Lock-Free and Wait-Free LL/SC/VL Implementations Using 64-Bit CAS" (PDF). IBM. Archived (PDF) from the original on May 2, 2013. Retrieved January 21, 2014.
  59. ^ darwou (August 20, 2004). "Why is the virtual address space 4GB anyway?". The Old New Thing. Microsoft. Archived from the original on March 26, 2017. Retrieved March 25, 2017.
  60. ^ a b "System Requirements—Windows 8.1". Archived from the original on April 28, 2014. Retrieved April 27, 2014. To install a 64-bit OS on a 64-bit PC, your processor needs to support CMPXCHG16b, PrefetchW, and LAHF/SAHF.
  61. ^ Petkov, Borislav (August 10, 2009). "Re: [PATCH v2] x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag". Linux kernel mailing list. Archived from the original on January 11, 2023. Retrieved June 30, 2022.
  62. ^ "Revision Guide for AMD Athlon 64 and AMD Opteron Processors" (PDF). AMD. Archived (PDF) from the original on August 24, 2009. Retrieved July 18, 2009.
  63. ^ "Product Change Notification 105224 - 01" (PDF). Intel. Archived from the original (PDF) on November 17, 2005.
  64. ^ "Actualización de especificaciones del procesador Intel® Pentium® D de la secuencia 800 y del procesador Intel® Pentium® Extreme Edition 840" (PDF) . Archivado (PDF) del original el 18 de mayo de 2021 . Consultado el 30 de junio de 2022 .
  65. ^ "Intel Xeon 2.8 GHz - NE80551KG0724MM / BX80551KG2800HA". CPU-World . Archivado desde el original el 28 de junio de 2020 . Consultado el 30 de junio de 2022 .
  66. ^ Smith, Tony (23 de agosto de 2005). «Intel modifica EM64T para lograr compatibilidad total con AMD64». The Register . Archivado desde el original el 30 de junio de 2022. Consultado el 30 de junio de 2022 .
  67. ^ "Notificación de cambio de producto 105271 – 00" (PDF) . Intel. Archivado desde el original (PDF) el 17 de noviembre de 2005.
  68. ^ 0F47h ​​debutó en la versión B0 de Pentium D el 21 de octubre, [63] [64] pero 0F48h, que también soporta LAHF/SAHF, se lanzó el 10 de octubre en el Xeon de doble núcleo . [65] [a]
  69. ^ "Notificación de cambio de producto 104101 – 00" (PDF) . Intel. Archivado desde el original (PDF) el 16 de julio de 2004.
  70. ^ "Hoja de datos del procesador Intel® Xeon™ MP de 64 bits con caché L3 de hasta 8 MB" (PDF) . Archivado (PDF) del original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  71. ^ "Justin Boggs en Microsoft PDC 2008". pág. 5. Archivado desde el original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  72. ^ Waldecker, Brian. «Procesadores multinúcleo AMD Opteron» (PDF) . pág. 13. Archivado (PDF) del original el 13 de diciembre de 2022. Consultado el 17 de noviembre de 2022 .
  73. ^ "Hoja de datos del procesador Intel® Xeon® serie 7500, volumen 2" (PDF) . Archivado (PDF) del original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  74. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32". Septiembre de 2014. pág. 2-21. Archivado desde el original el 14 de mayo de 2019. La arquitectura Intel 64 aumenta el espacio de direcciones lineales para software a 64 bits y admite un espacio de direcciones físicas de hasta 46 bits.
  75. ^ Logan, Tom (14 de noviembre de 2011). «Revisión del Intel Core i7-3960X». Archivado desde el original el 28 de marzo de 2016. Consultado el 1 de julio de 2022 .
  76. ^ Ye, Huaisheng. "Introducción a la paginación de 5 niveles en procesadores escalables Intel Xeon de tercera generación con Linux" (PDF) . Lenovo. Archivado (PDF) del original el 26 de mayo de 2022 . Consultado el 1 de julio de 2022 .
  77. ^ Kennedy, Patrick (10 de noviembre de 2022). «AMD EPYC Genoa supera a Intel Xeon de forma sorprendente». ServeTheHome . p. 2. Archivado desde el original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  78. ^ "Estadísticas | TOP500 Supercomputer Sites". Top500.org. Archivado desde el original el 19 de marzo de 2014. Consultado el 22 de marzo de 2014 .
  79. ^ "Generador de sublistas | TOP500 sitios de supercomputadoras" www.top500.org . Archivado desde el original el 7 de diciembre de 2018 . Consultado el 6 de diciembre de 2018 .
  80. ^ "Manual de referencia de la arquitectura del conjunto de instrucciones del coprocesador Intel® Xeon PhiTM" (PDF) . Intel. 7 de septiembre de 2012. Sección B.2 Limitaciones del modo de 64 bits del coprocesador Intel Xeon Phi. Archivado (PDF) del original el 21 de mayo de 2014 . Consultado el 21 de mayo de 2014 .
  81. ^ "Intel potencia la supercomputadora más rápida del mundo y revela nuevas y futuras tecnologías informáticas de alto rendimiento". Archivado desde el original el 22 de junio de 2013 . Consultado el 21 de junio de 2013 .
  82. ^ "cvs commit: src/sys/amd64/amd64 genassym.c src/sys/amd64/include asm.h atomic.h bootinfo.h coredump.h cpufunc.h elf.h endian.h exec.h float.h fpu.h frame.h globaldata.h ieeefp.h limits.h lock.h md_var.h param.h pcb.h pcb_ext.h pmap.h proc.h profile.h psl.h ..." Archivado desde el original el 4 de diciembre de 2008. Consultado el 3 de mayo de 2009 .
  83. ^ "Puerto AMD64". Archivado desde el original el 18 de mayo de 2010. Consultado el 3 de mayo de 2009 .
  84. ^ "DragonFlyBSD: GoogleSoC2008". Archivado desde el original el 27 de abril de 2009. Consultado el 3 de mayo de 2009 .
  85. ^ "Estudiantes aceptados para Summer of Code". Archivado desde el original el 4 de septiembre de 2010. Consultado el 3 de mayo de 2009 .
  86. ^ "DragonFlyBSD: release24". Archivado desde el original el 23 de septiembre de 2009. Consultado el 3 de mayo de 2009 .
  87. ^ "Tutorial for entering protected and long mode from DOS". Archived from the original on February 22, 2017. Retrieved July 6, 2008.
  88. ^ Andi Kleen (June 26, 2001). "Porting Linux to x86-64". Archived from the original on September 10, 2010. Status: The kernel, compiler, tool chain work. The kernel boots and work on simulator and is used for porting of userland and running programs
  89. ^ Andi Kleen. "Andi Kleen's Page". Archived from the original on December 7, 2009. Retrieved August 21, 2009. This was the original paper describing the Linux x86-64 kernel port back when x86-64 was only available on simulators.
  90. ^ "Arch64 FAQ". April 23, 2012. Archived from the original on May 14, 2012. Retrieved May 11, 2012. You can either use the multilib packages or a i686 chroot.
  91. ^ a b Thorsten Leemhuis (September 13, 2011). "Kernel Log: x32 ABI gets around 64-bit drawbacks". www.h-online.com. Archived from the original on October 28, 2011. Retrieved November 1, 2011.
  92. ^ a b "x32 - a native 32-bit ABI for x86-64". linuxplumbersconf.org. Archived from the original on May 5, 2012. Retrieved November 1, 2011.
  93. ^ a b "x32-abi". Google Sites. Archived from the original on October 30, 2011. Retrieved November 1, 2011.
  94. ^ "AMD64 Port". debian.org. Archived from the original on September 26, 2019. Retrieved October 29, 2011.
  95. ^ "5-level paging". kernel.org. Retrieved February 7, 2024.
  96. ^ "Apple – Mac OS X Xcode 2.4 Release Notes: Compiler Tools". Apple Inc. April 11, 2007. Archived from the original on April 22, 2009. Retrieved November 19, 2012.
  97. ^ "Apple – Mac OS X Leopard – Technology - 64-bit". Apple Inc. Archived from the original on January 12, 2009. Retrieved November 19, 2012.
  98. ^ "Mac OS X v10.6: Macs that use the 64-bit kernel". Apple Inc. Archived from the original on August 31, 2009. Retrieved November 29, 2012.
  99. ^ John Siracusa. "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica LLC. Archived from the original on October 9, 2009. Retrieved June 20, 2010.
  100. ^ "Mac OS X Technology". Apple Inc. Archived from the original on March 28, 2011. Retrieved November 19, 2012.
  101. ^ Schmid, J; Thomases, K; Ramey, J; Czekalla, U; Mathieu, B; Abhiram, R (September 10, 2019). "So We Don't Have a Solution for Catalina...Yet". CodeWeavers Blog. Archived from the original on September 29, 2021. Retrieved September 29, 2021.
  102. ^ Thomases, Ken (December 11, 2019). "win32 on macOS". WineHQ. Archived from the original on November 11, 2020. Retrieved September 29, 2021.
  103. ^ "Microsoft Raises the Speed Limit with the Availability of 64-Bit Editions of Windows Server 2003 and Windows XP Professional". Microsoft News Center (Press release). April 25, 2005. Retrieved January 29, 2024.
  104. ^ "A description of the x64-based versions of Windows Server 2003 and of Windows XP Professional x64 Edition". Microsoft Support. Archived from the original on April 20, 2016. Retrieved August 14, 2016.
  105. ^ "Windows Server 2003 SP1 Administration Tools Pack". Microsoft Download Center. Archived from the original on August 27, 2016. Retrieved August 14, 2016.
  106. ^ a b "/LARGEADDRESSAWARE (Handle Large Addresses)". Visual Studio 2022 Documentation – MSVC Linker Reference – MSVC Linker Options. Microsoft. Archived from the original on December 21, 2022. Retrieved December 21, 2022. The /LARGEADDRESSAWARE option tells the linker that the application can handle addresses larger than 2 gigabytes.
  107. ^ a b c Matt Pietrek (May 2006). "Everything You Need To Know To Start Programming 64-Bit Windows Systems". Microsoft. Retrieved April 18, 2023.
  108. ^ Chris St. Amand (January 2006). "Making the Move to x64". Microsoft. Retrieved April 18, 2023.
  109. ^ "Behind Windows x86-64's 44-bit Virtual Memory Addressing Limit". Archived from the original on December 23, 2008. Retrieved July 2, 2009.
  110. ^ a b "64-bit programming for Game Developers". Retrieved April 18, 2023.
  111. ^ "Memory Limits for Windows and Windows Server Releases". Microsoft. Retrieved April 18, 2023.
  112. ^ Kingsley-Hughes, Adrian (August 23, 2010). "AMD says goodbye to 3DNow! instruction set". ZDNet. Archived from the original on January 8, 2023. Retrieved January 8, 2023.
  113. ^ "General Porting Guidelines". Programming Guide for 64-bit Windows. Microsoft Docs. Retrieved April 18, 2023.
  114. ^ "Driver history for Microsoft SQL Server". Microsoft Docs. Retrieved April 18, 2023.
  115. ^ "Microsoft OLE DB Provider for Jet and Jet ODBC driver are available in 32-bit versions only". Office Access. Microsoft Docs. KB957570. Retrieved April 18, 2023.
  116. ^ Anand Lal Shimpi (May 21, 2013). "The Xbox One: Hardware Analysis & Comparison to PlayStation 4". Anandtech. Archived from the original on June 7, 2013. Retrieved May 22, 2013.
  117. ^ "The Tech Spec Test: Xbox One Vs. PlayStation 4". Game Informer. May 21, 2013. Archived from the original on June 7, 2013. Retrieved May 22, 2013.
  118. ^ "What to expect from Sony 'PlayStation 5' launch in November". The Indian Express. August 31, 2020. Archived from the original on September 19, 2020. Retrieved September 14, 2020.
  119. ^ Cutress, Dr Ian. "Hot Chips 2020 Live Blog: Microsoft Xbox Series X System Architecture (6:00pm PT)". www.anandtech.com. Archived from the original on September 17, 2020. Retrieved September 14, 2020.
  120. ^ Hollister, Sean (November 12, 2021). "Steam Deck: Five big things we learned from Valve's developer summit". The Verge. Archived from the original on February 7, 2022. Retrieved November 12, 2021.
  121. ^ "ProcessorArchitecture Fields". Archived from the original on April 28, 2015. Retrieved September 4, 2013.
  122. ^ "An example file from Linux 3.7.8 kernel source tree displaying the usage of the term x86_64". Archived from the original on September 23, 2005. Retrieved February 17, 2013.
  123. ^ US 6877084 
  124. ^ US 6889312 
  125. ^ US 6732258 
  126. ^ "Acuerdo de licencia cruzada de patentes entre AMD e Intel". 1 de enero de 2001. Archivado desde el original el 21 de junio de 2007. Consultado el 23 de agosto de 2009 .
  127. ^ "Acuerdo de conciliación entre AMD e Intel". Archivado desde el original el 7 de julio de 2017 . Consultado el 18 de septiembre de 2017 .
  128. ^ Stephen Shankland y Jonathan E. Skillings (12 de noviembre de 2009). «Intel pagará a AMD 1.250 millones de dólares en un acuerdo antimonopolio». CNET. Archivado desde el original el 8 de noviembre de 2012. Consultado el 24 de abril de 2012 .
  129. ^ Smith, Ryan (12 de noviembre de 2009). "AMD e Intel resuelven sus diferencias: AMD pasa a ser fabless". AnandTech . Archivado desde el original el 13 de mayo de 2010.

Enlaces externos