stringtranslate.com

x86-64

AMD Opteron , la primera CPU en introducir las extensiones x86-64 en abril de 2003
El conjunto de cinco volúmenes del Manual del programador de 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 , anunciada por primera vez en 1999. Introdujo dos nuevos modos de operación, el modo de 64 bits y 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 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 expande su número de 8 (algunos de los cuales tenían funcionalidad limitada o fija, por ejemplo para administración de pila) a 16 (totalmente generales) y proporciona muchas otras mejoras. La aritmética de punto flotante se admite mediante instrucciones obligatorias tipo SSE2 , y los registros de estilo x87 / MMX generalmente no se utilizan (pero aún están disponibles incluso en 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 de 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 completos de instrucciones x86 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 en el rendimiento, [13] mientras que las aplicaciones más nuevas o modificadas pueden aproveche las nuevas características del diseño del procesador para lograr mejoras de rendimiento. Además, un procesador que admite x86-64 aún se enciende en modo real para lograr compatibilidad total 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 lanzada 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 de Intel. Intel se vio obligada a hacer lo mismo e introdujo una familia NetBurst modificada que era compatible con el software con las especificaciones de AMD. VIA Technologies introdujo x86-64 en su arquitectura VIA Isaiah, con VIA Nano .

La arquitectura x86-64 se adoptó rápidamente para servidores y computadoras personales de escritorio y portátiles que comúnmente estaban configurados para 16 GB de memoria o más. Ha reemplazado efectivamente la arquitectura Intel Itanium descontinuada (anteriormente IA-64 ), que originalmente estaba destinada a reemplazar la arquitectura x86. x86-64 e Itanium no son compatibles en el nivel del conjunto de instrucciones nativo, y los sistemas operativos y las aplicaciones compiladas para una arquitectura no se pueden ejecutar en la otra de forma nativa.

AMD64

Logotipo AMD64

Historia

AMD64 (también denominado por AMD en su literatura y documentación como “Tecnología AMD de 64 bits” y “Arquitectura AMD x86-64”) se creó como una alternativa a la arquitectura IA-64 radicalmente diferente 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 contribuir con la arquitectura IA-64 y cualquier tipo de licencia parecía improbable, la arquitectura AMD64 se posicionó por AMD desde el principio como una forma evolutiva de agregar capacidades informáticas de 64 bits a la arquitectura x86 existente y al mismo tiempo admitir el código x86 heredado de 32 bits , 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 , fue lanzado 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 el número de núcleos y modelos XLT), Turion 64 , Turion 64 X2 , Sempron (paso a paso "Palermo" E6 y todos los modelos "Manila"), Phenom (seguido de "X3" o "X4" para indicar el número de núcleos), Phenom II (seguido de "X2", " X3", "X4" o "X6" para indicar el número de núcleos), FX , Fusion/APU y Ryzen / Epyc .

Características arquitectonicas

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

Los cambios notables en las extensiones de 64 bits incluyen:

Capacidad de 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. Los push y pops en la pila tienen por defecto pasos de 8 bytes, y los punteros tienen 8 bytes de ancho.
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 con nombre 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 los registros que en la pila, y permitir 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, PA-RISC , Power ISA y MIPS tienen 32 GPR; Alpha , ARM de 64 bits y SPARC tienen 31) o máquinas tipo VLIW como la 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 enteros de 64 bits y 160 vectoriales de 128 bits).
Registros XMM (SSE) adicionales
De manera similar, la cantidad de registros XMM de 128 bits (utilizados para instrucciones Streaming SIMD ) también aumenta de 8 a 16.
La pila de registros FPU x87 tradicional no está incluida en la extensión del tamaño del archivo de registro en 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 registro, 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  TB (2 48 bytes ) de espacio de direcciones virtuales. 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 direcciones virtuales a 16  EB (2 64 bytes). [16] Esto se compara con sólo 4  GB (2,32 bytes ) para el x86. [17]
Esto significa que se pueden operar archivos muy grandes asignando todo el archivo al espacio de direcciones del proceso (lo que a menudo es mucho más rápido que trabajar con llamadas de lectura/escritura de archivos), en lugar de tener que asignar regiones del archivo dentro y fuera del espacio de dirección.
Mayor espacio de direcciones físicas
La implementación original de la arquitectura AMD64 implementaba direcciones físicas de 40 bits y, por lo tanto, podía direccionar hasta 1 TB (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 [18] y, por lo tanto, pueden direccionar hasta 256 TB (2 48 bytes) de RAM. La arquitectura permite ampliar esto a 52 bits en el futuro [11] : 24  [19] (limitado por el formato de entrada de la tabla de páginas); [11] : 131  esto permitiría direccionar hasta 4 PB de RAM. A modo de comparación, los procesadores x86 de 32 bits están limitados a 64 GB de RAM en modo de extensión de dirección física (PAE), [20] o 4 GB 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 direcciones físicas que en el modo largo . [11] : 24 
Acceso a datos relativos al puntero de instrucción
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 usa a menudo en bibliotecas compartidas y en el código cargado en tiempo de ejecución, sea más eficiente.
instrucciones SSE
La arquitectura AMD64 original adoptó SSE y SSE2 de Intel como instrucciones principales. Estos conjuntos de instrucciones proporcionan un complemento vectorial para la FPU escalar x87 , para los tipos de datos de precisión simple y doble. SSE2 también ofrece operaciones de vectores enteros, para tipos de datos con una precisión de entre 8 y 64 bits. Esto hace que las capacidades vectoriales de la arquitectura estén a la par de las de los procesadores x86 más avanzados de su época. 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, permitiendo mejorar 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. [21] Las instrucciones SSE3 y los conjuntos de instrucciones de 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 ejecutar" resultará en una infracción de acceso a la memoria, similar a un intento de escribir en una página de solo lectura. Esto debería hacer que sea más difícil para el código malicioso tomar el control del sistema mediante ataques de " desbordamiento del búfer " o "búfer no controlado". 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 sólo funciona en un segmento completo a la vez.
El direccionamiento segmentado se ha considerado durante mucho tiempo un modo de operación obsoleto, y todos los sistemas operativos de PC actuales lo evitan, estableciendo todos los segmentos en una dirección base de cero y (en su implementación de 32 bits) un tamaño de 4 GB. AMD fue el primer proveedor de la familia x86 en implementar la no ejecución en modo de direccionamiento lineal. La función también está disponible en modo heredado en procesadores AMD64 y 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 usaron o fueron infrautilizadas en los sistemas operativos modernos y no están disponibles en AMD64 en modo largo (64 bits y compatibilidad) o existen solo de forma limitada. Estos incluyen el direccionamiento segmentado (aunque los segmentos FS y GS se conservan en forma residual para su uso como punteros extra-base a las estructuras del sistema operativo), [11] : 70  el mecanismo de cambio de estado de tarea y el modo virtual 8086 . Estas características permanecen completamente implementadas en "modo heredado", lo que permite que estos procesadores ejecuten sistemas operativos de 32 y 16 bits sin modificaciones. Algunas instrucciones que rara vez resultaron útiles no son compatibles con el modo de 64 bits, incluido guardar/restaurar registros de segmento en la pila, guardar/restaurar todos los registros (PUSHA/POPA), aritmética decimal, instrucciones BOUND e INTO y " saltos "lejos" y llamadas con operandos inmediatos.

Detalles del espacio de direcciones virtuales

Direcciones de forma canónica

Implementaciones de espacio de direcciones canónico (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 2,64 bytes (16  EB ). 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 implementar 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 usarí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, los bits 48 al 63, sean copias del bit 47 (de forma 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  direcciones de formato canónico van desde 0 hasta 00007FFF'FFFFFFFF, y desde FFFF8000'00000000 hasta FFFFFFFF'FFFFFFFF, para un total de 256  TB de espacio de direcciones virtuales utilizable. Esto sigue siendo 65.536 veces mayor que el espacio de direcciones virtuales de 4 GB de las máquinas de 32 bits.

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

Las primeras versiones de Windows para x64 ni siquiera utilizaban los 256 TB completos; estaban restringidos a sólo 8 TB de espacio de usuario y 8 TB de espacio de kernel. [22] Windows no admitió todo el espacio de direcciones de 48 bits hasta Windows 8.1 , que se lanzó en octubre de 2013. [22]

Estructura de la tabla de páginas

El modo de direccionamiento de 64 bits (" modo largo ") es un superconjunto de Extensiones de dirección física (PAE); Debido a esto, el tamaño de las páginas puede ser de 4  KB (2 de 12 bytes) o 2  MB (2 de 21 bytes). [11] : 120  El modo largo también admite tamaños de página de 1  GB (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 punteros de directorio de páginas de PAE se amplía de cuatro entradas a 512, y una tabla de páginas adicional Se agrega la tabla Page-Map Level 4 (PML4) , que contiene 512 entradas en implementaciones de 48 bits. [11] : 131  Una jerarquía de mapeo completa de páginas de 4 KB para todo el espacio de 48 bits requeriría un poco más de 512  GB de memoria (aproximadamente el 0,195 % del espacio virtual de 256 TB).

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. [23] Otras extensiones pueden permitir espacio completo de direcciones virtuales de 64 bits y memoria física al expandir el tamaño de entrada de la tabla de páginas a 128 bits, y reducir los recorridos de páginas en la jerarquía de 5 niveles al usar un tamaño de asignación de página más grande de 64 KB que aún admite operaciones de página de 4 KB para compatibilidad con versiones anteriores. [24]

Límites del sistema operativo

El sistema operativo también puede limitar el espacio de direcciones virtuales. Los detalles, cuando corresponda, se proporcionan en la sección "Compatibilidad y características del sistema operativo".

Detalles del espacio de direcciones físicas

Los procesadores AMD64 actuales admiten un espacio de direcciones físicas de hasta 248 bytes de RAM, o 256  TB . [18] Sin embargo, a partir de 2020 , no se conocían placas base x86-64 que admitieran 256 TB de RAM. [25] [26] [27] [28] [ verificación fallida ] El sistema operativo puede imponer límites adicionales a la cantidad de RAM que se puede utilizar o admitir. Los detalles sobre este punto se proporcionan 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 operación: modo largo y modo heredado.

  1. ^ abcd Tenga en cuenta que el código de 16 bits escrito para 80286 y siguientes no utiliza instrucciones de operandos de 32 bits. El código escrito para 80386 y superiores puede usar el prefijo de anulación de tamaño de operando (0x66). Normalmente, este prefijo lo utilizan los códigos protegidos y de modo 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 modo real, el tamaño del operando predeterminado es de 16 bits, por lo que el prefijo 0x66 se interpreta de manera diferente, cambiando el tamaño del operando a 32 bits.
Diagrama de estado de los modos de funcionamiento x86-64.

modo largo

El modo largo es el modo de operación principal previsto por 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. Es utilizado por 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 en modo protegido de 32 y 16 bits (que no necesitan utilizar el modo real ni el modo virtual 8086 para ejecutarse en cualquier momento). tiempo) se ejecuta en modo de compatibilidad. Los programas en modo real y los programas que utilizan el modo virtual 8086 en cualquier momento no se pueden ejecutar en modo largo a menos que esos modos se emulen 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 en el rendimiento al ejecutar código x86 en modo protegido. Esto es diferente al IA-64 de Intel , donde las diferencias en el conjunto de instrucciones subyacentes significan que la ejecución de código de 32 bits debe realizarse en emulación de x86 (lo que hace 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 la compatibilidad garantizada con FPU basada en SSE2, que un compilador puede utilizar para la optimización. Sin embargo, las aplicaciones que normalmente manejan números enteros de más de 32 bits, como los algoritmos criptográficos, necesitarán reescribir el código que maneja los números enteros enormes para aprovechar los registros de 64 bits.

Modo heredado

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 de 32 bits como máximo, lo que limita el espacio de direcciones virtuales a 4 GB. [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 en 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 lo utilizan principalmente hoy en día los cargadores de arranque del sistema operativo, 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 mediante una interfaz tradicional de estilo BIOS . [29]

Intel 64

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

Historia

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

El proyecto de Intel originalmente tenía el nombre en código Yamhill [30] (en honor al río Yamhill en el valle de Willamette en 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 efectivamente en marcha. El entonces presidente de Intel, Craig Barrett , admitió que éste era uno de sus secretos peor guardados. [31] [32]

El nombre de Intel para este conjunto de instrucciones ha cambiado varias veces. El nombre utilizado en las FDI fue CT [33] (presumiblemente [¿ investigación original? ] para Clackamas Technology , otro nombre en clave 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 (Tecnología de memoria extendida 64). A finales de 2006, Intel comenzó a utilizar el nombre Intel 64 para su implementación, en paralelo al uso del nombre AMD64 por parte de AMD. [34]

El primer procesador en implementar Intel 64 fue el procesador multisocket Xeon , cuyo nombre en código es Nocona , en junio de 2004. Por el contrario, los chips Prescott iniciales (febrero de 2004) no permitían esta característica. Posteriormente, Intel comenzó a vender Pentium 4 habilitados para Intel 64 utilizando la revisión E0 del núcleo Prescott, y se vendió 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 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 paso N0 Prescott-2M.

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 las series Pentium 4 F/5x1, 506 y 516, los modelos Celeron D 3x1, 3x6, 355, 347, 352, 360 y 365 y todos los Celeron posteriores , todos 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 de la serie Xeon Phi 7200.

X86S

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

Intel cree que el cambio sigue lógicamente después de la eliminación de la puerta A20 en 2008 y el cese de la compatibilidad con sistemas operativos de 16 y 32 bits en el firmware de Intel en 2020. La compatibilidad con sistemas operativos heredados se lograría mediante virtualización acelerada por hardware y/o anillo. 0 emulación. [36]

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 . [37] Con el nombre en clave "Isaiah", la arquitectura de 64 bits se dio a conocer el 24 de enero de 2008, [38] y se lanzó el 29 de mayo bajo la marca VIA Nano . [39]

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 la generación anterior VIA Esther 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 oscila entre 5 W y 25 W. [40] Al ser un diseño completamente nuevo, la arquitectura Isaiah se creó con soporte para características como el x86. -64 conjunto de instrucciones y virtualización x86 que no estaban disponibles en sus predecesores, la línea VIA C7 , aunque conservaban 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) además de la línea base x86-64: x86-64-v2, x86-64-v3 y x86. -64-v4. [41] [42] 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: [43]

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

Diferencias entre AMD64 e Intel 64

Aunque son casi idénticas, existen algunas diferencias entre los dos conjuntos de instrucciones en la semántica de algunas instrucciones (o situaciones) de máquina poco utilizadas, que se utilizan principalmente para la programación de sistemas . [46] 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 interesa principalmente a los desarrolladores de compiladores, sistemas operativos y similares, que deben trabajar con instrucciones de sistema individuales y especiales.

Implementaciones recientes

Implementaciones más antiguas

Adopción

Un 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 [77]

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

A partir de 2020 , una supercomputadora basada en Fujitsu A64FX llamada Fugaku es la número uno. La primera supercomputadora basada en ARM apareció en la lista en 2018 [78] y, en los últimos años, los coprocesadores con arquitectura sin CPU ( GPGPU ) también han desempeñado 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, [79] también se utilizan, junto con los procesadores x86-64, en la supercomputadora Tianhe-2 . [80]

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 iniciaron los trabajos preliminares de infraestructura para un puerto x86-64. [81] Este desarrollo se estancó más tarde. El desarrollo comenzó de nuevo en julio de 2007 [82] y continuó durante Google Summer of Code 2008 y SoC 2009. [83] [84] La primera versión oficial que contenía soporte x86-64 fue la versión 2.4. [85]

FreeBSD

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

NetBSD

El soporte de la arquitectura x86-64 se confirmó por primera vez en el árbol fuente de NetBSD el 19 de junio de 2001. A partir de NetBSD 2.0, lanzado 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 kernel netbsd-32 para llamadas al sistema de 32 bits. El bit NX se utiliza para proporcionar pila y montón no ejecutables con granularidad por página (la granularidad de segmento se utiliza en x86 de 32 bits).

OpenBSD

OpenBSD ha soportado AMD64 desde OpenBSD 3.5, lanzado el 1 de mayo de 2004. La implementación completa en árbol del soporte 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 adoptaron la plataforma debido a su soporte para el bit NX , lo que permitió una fácil implementación 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 dado que 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. ; Posteriormente, los procesadores Intel 64 agregaron el bit NX con el nombre "bit XD". El multiprocesamiento simétrico (SMP) funciona en el puerto AMD64 de OpenBSD, a partir de la versión 3.6 el 1 de noviembre de 2004.

DOS

Es posible ingresar al modo largo en DOS sin un extensor de DOS, [86] 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 de 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 ello y no se deben esperar beneficios a menos que se ejecute DOS en una emulación con un controlador de virtualización adecuado, por ejemplo: la interfaz de almacenamiento masivo.

linux

Linux fue el primer kernel del sistema operativo que ejecutó la arquitectura x86-64 en modo largo , comenzando con la versión 2.4 en 2001 (antes de la disponibilidad del hardware). [87] [88] Linux también proporciona compatibilidad con versiones anteriores para ejecutar ejecutables de 32 bits. Esto permite que los programas se vuelvan a compilar en modo largo manteniendo el uso de programas de 32 bits. Las distribuciones actuales de Linux se entregan con kernels y zonas de usuario nativos x86-64 . Algunos, como Arch Linux , [89] 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, permitiendo así que se ejecuten la mayoría de las aplicaciones de 32 bits existentes. junto con el sistema operativo de 64 bits.

x32 ABI (Interfaz binaria de aplicaciones), introducida en Linux 3.4, permite que los programas compilados para x32 ABI se ejecuten en el modo de 64 bits de x86-64 mientras solo usan punteros y campos de datos de 32 bits. [90] [91] [92] Aunque esto limita el programa a un espacio de direcciones virtuales de 4 GB, también disminuye la huella de memoria del programa y, en algunos casos, puede permitir que se ejecute más rápido. [90] [91] [92]

Linux de 64 bits permite hasta 128  TB de espacio de direcciones virtuales para procesos individuales y puede abordar aproximadamente 64 TB de memoria física, sujeto a las limitaciones del procesador y del sistema [93] , o hasta 128 PB (virtual) y 4 PB (físico) con Paginación de 5 niveles habilitada. [94]

Mac OS

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 POSIX y bibliotecas matemáticas en máquinas basadas en Intel de 64 bits, tal como las ejecutan todas las versiones de Mac OS X 10.4 y 10.5. en máquinas PowerPC de 64 bits. Ninguna otra biblioteca o marco funciona con aplicaciones de 64 bits en Mac OS X 10.4. [95] El núcleo y todas sus extensiones son sólo de 32 bits.

Mac OS X 10.5 admite aplicaciones GUI de 64 bits que utilizan Cocoa , Quartz , OpenGL y X11 en máquinas basadas en Intel de 64 bits, así como en máquinas PowerPC de 64 bits . [96] Todas las bibliotecas y marcos que no son GUI también admiten aplicaciones de 64 bits en esas plataformas. El kernel y todas las extensiones del kernel son sólo 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. [97] El kernel de 64 bits, al igual que el kernel de 32 bits, admite aplicaciones de 32 bits; Ambos núcleos también admiten aplicaciones de 64 bits. Las aplicaciones de 32 bits tienen un límite de espacio de direcciones virtuales de 4 GB en cualquiera de los núcleos. [98] [99] 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 sigue 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 del soporte ha presentado un problema para WineHQ (y la versión comercial CrossOver ), ya que aún debe poder ejecutar 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 nominal de 64 bits. [100] [101]

macOS utiliza el formato binario universal para empaquetar versiones de 32 y 64 bits del código de la aplicación y la biblioteca en un solo 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 kernel y para aquellas extensiones del kernel que admiten kernels 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 , solo hay una imagen del sistema operativo, que contiene un kernel de 32 bits y un kernel de 64 bits; esto está etiquetado como imagen de DVD-ROM "x64/x86". El comportamiento predeterminado es iniciar un kernel de 64 bits, lo que permite ejecutar ejecutables de 64 bits y de 32 bits nuevos o existentes. También se puede seleccionar manualmente un kernel 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 kernel de 64 bits.

Para Solaris 11, sólo se proporciona el kernel de 64 bits. Sin embargo, el kernel de 64 bits admite ejecutables, bibliotecas y llamadas al sistema de 32 y 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. [102] Internamente, en realidad son la misma versión (5.2.3790.1830 SP1), [103] [104] ya que comparten la misma base de origen y los mismos binarios del sistema operativo, incluso las actualizaciones del sistema se lanzan en paquetes unificados, de manera 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ó sólo 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 tanto en modo usuario como en modo kernel se han ampliado a 128 TB. [22] Estas versiones de Windows no se instalarán en procesadores que carezcan de CMPXCHG16Binstrucciones.

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

Juegos de consolas

Tanto la PlayStation 4 como la Xbox One , y todas las variantes de dichas consolas, incorporan procesadores AMD x86-64, basados ​​en la microarquitectura Jaguar . [115] [116] 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 . [117] [118]

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

Convenciones de nomenclatura de la industria

Dado que AMD64 e Intel 64 son sustancialmente similares, muchos productos de software y hardware utilizan un término neutral 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.

Licencia

x86-64/AMD64 fue desarrollado exclusivamente por AMD. AMD posee patentes sobre técnicas utilizadas en AMD64; [122] [123] [124] esas patentes deben tener una licencia de AMD para poder implementar AMD64. Intel celebró un acuerdo de licencia cruzada con AMD, otorgando licencias a AMD sobre sus patentes sobre técnicas x86 existentes y otorgando licencias a AMD sobre sus patentes sobre técnicas utilizadas en x86-64. [125] En 2009, AMD e Intel resolvieron varias demandas y desacuerdos sobre licencias cruzadas, ampliando sus acuerdos de licencias cruzadas. [126] [127] [128]

Ver 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 en el lanzamiento AMD lo nombró AMD64. [1] Intel inicialmente utilizó los nombres IA-32e y EM64T antes de decidirse finalmente por "Intel 64" para su implementación. Algunos en la industria, incluido Apple , [2] [3] [4] usan x86-64 y x86_64, mientras que otros, en particular Sun Microsystems [5] (ahora Oracle Corporation ) y Microsoft , [6] usan x64. La familia de sistemas operativos BSD y varias distribuciones de 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 alternativa limitada que admite de manera efectiva los instaladores InstallShield y Microsoft ACME de 16 bits al sustituirlos silenciosamente por código de 32 bits. [12]
  1. ^ The Register informó que la versión G1 (0F49h) del Pentium 4 se probará el 17 de octubre y se enviará en volumen el 14 de noviembre. [65] 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 la 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". [66]

Referencias

  1. ^ "Preguntas frecuentes sobre Debian AMD64". WikiDebian . Archivado desde el original el 26 de septiembre de 2019 . Consultado el 3 de mayo de 2012 .
  2. ^ abc "Modelo de código x86-64". Manzana. 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). "con respecto a: informe de error de Intel XNU". Lista de correo de desarrolladores de Darwin . Computadora Apple . Archivado desde el original el 1 de febrero de 2020 . Consultado el 5 de octubre de 2006 . El kernel y las herramientas de desarrollo se han estandarizado en "x86_64" para el nombre de la arquitectura Mach-O.
  5. ^ ab "Solaris 10 en AMD Opteron". Oráculo. Archivado desde el original el 25 de julio de 2017 . Consultado el 9 de diciembre de 2010 .
  6. ^ ab "Computación Microsoft de 64 bits". Microsoft. Archivado desde el original el 12 de diciembre de 2010 . Consultado el 9 de diciembre de 2010 .
  7. ^ "Puerto AMD64". 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 de arquitectura de procesador". 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 arquitectura AMD64 . Corporación AMD. Archivado (PDF) desde el 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 que se permite ejecutar ciertos instaladores de 16 bits?". Archivado desde el original el 14 de julio de 2021 . Consultado el 14 de julio de 2021 .
  13. ^ "Desmitificado el rendimiento de IBM WebSphere Application Server de 64 bits" (PDF) . Corporación IBM. 6 de septiembre de 2007. p. 14. Archivado (PDF) desde el original el 25 de enero de 2022 . Consultado el 9 de abril de 2010 . Las Figuras 5, 6 y 7 también muestran la versión de 32 bits de WAS que ejecuta aplicaciones con un rendimiento de hardware nativo completo en las plataformas POWER y x86-64. A diferencia de algunas arquitecturas de procesador 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 funciones de 64 bits pueden ejecutarse con pleno 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 microporcesores" (Presione soltar). 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" (Comunicado 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. ^ Mauerer, W. (2010). Arquitectura de kernel de Linux profesional. John Wiley e hijos.
  17. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, volumen 3A: Guía de programación del sistema, parte 1" (PDF) . págs. 4–7. Archivado (PDF) desde el original el 16 de mayo de 2011 . Consultado el 10 de julio de 2019 .
  18. ^ ab "Guía para desarrolladores de BIOS y kernel (BKDG) para procesadores 10h de la familia AMD" (PDF) . pag. 24. Archivado (PDF) desde el original el 18 de abril de 2016 . Consultado el 27 de febrero de 2016 . El espacio de direcciones físicas aumentó a 48 bits.
  19. ^ "Mitos y realidades sobre Linux de 64 bits" (PDF) . 2 de marzo de 2008. pág. 7. Archivado desde el original (PDF) el 10 de octubre de 2010 . Consultado el 30 de mayo de 2010 . El espacio de direcciones físicas aumentó a 48 bits.
  20. ^ Shanley, Tom (1998). Arquitectura del sistema Pentium Pro y Pentium II . Serie de arquitectura de sistemas de PC (Segunda ed.). Addison-Wesley. pag. 445.ISBN _ 0-201-30973-4.
  21. ^ Corporación Microsoft. "¿Qué son PAE, NX y SSE2 y por qué mi PC necesita admitirlos para ejecutar Windows 8?". Archivado desde el original el 11 de abril de 2013 . Consultado el 19 de marzo de 2013 .
  22. ^ abcd "Límites de memoria para versiones de Windows". MSDN . Microsoft . 16 de noviembre de 2013. Archivado desde el original el 6 de enero de 2014 . Consultado el 20 de enero de 2014 .
  23. ^ "Paginación de 5 niveles y EPT de 5 niveles" (PDF) . Intel. Mayo de 2017. Archivado (PDF) desde el original el 5 de diciembre de 2018 . Consultado el 17 de junio de 2017 .
  24. ^ Patente estadounidense 9858198, Larry Seiler, "Sistema de páginas de 64 KB que admite operación de páginas de 4 KB", publicada el 29 de diciembre de 2016, emitida el 2 de enero de 2018, asignada a Intel Corp. 
  25. ^ "Placas base Opteron serie 6100". Corporación Supermicro. Archivado desde el original el 3 de junio de 2010 . Consultado el 22 de junio de 2010 .
  26. ^ "Supermicro XeonSoluciones". Corporación Supermicro. Archivado desde el original el 27 de mayo de 2010 . Consultado el 20 de junio de 2010 .
  27. ^ "Placas base Opteron serie 8000". Corporación Supermicro. Archivado desde el original el 27 de mayo de 2010 . Consultado el 20 de junio de 2010 .
  28. ^ "Matriz de productos Tyan". Corporación Internacional MiTEC. Archivado desde el original el 6 de junio de 2010 . Consultado el 21 de junio de 2010 .
  29. ^ ab "De los archivos de AMI: AMIBIOS 8 y la transición a EFI". Mega tendencias americanas . 8 de septiembre de 2017. Archivado desde el original el 25 de octubre de 2021 . Consultado el 25 de octubre de 2021 .
  30. ^ "¿Intel continúa con el proyecto Yamhill?". Neowin . Archivado desde el original el 5 de junio de 2022 . Consultado el 5 de junio de 2022 .
  31. ^ "Craig Barrett confirma extensiones de dirección de 64 bits para Xeon. Y Prescott". El investigador. 17 de febrero de 2004. Archivado desde el original el 12 de enero de 2013 . Consultado el 20 de agosto de 2017 .
  32. ^ ""Un resumen de la informática de 64 bits ", de internetnews.com". Archivado desde el original el 25 de septiembre de 2012 . Consultado el 18 de septiembre de 2006 .
  33. ^ Lapedus, Marcos. "Intel hará una demostración de la línea de procesadores de 64 bits 'CT' en IDF". EDN . Medios de AspenCore. Archivado desde el original el 25 de mayo de 2021 . Consultado el 25 de mayo de 2021 .
  34. ^ "Arquitectura Intel 64". Intel . Archivado desde el original el 29 de junio de 2011 . Consultado el 29 de junio de 2007 .
  35. ^ "Intel publica la especificación" X86-S "para arquitectura únicamente de 64 bits". www.phoronix.com .
  36. ^ ab "Visualizando una arquitectura Intel simplificada para el futuro". Intel .
  37. ^ "VIA lanzará una nueva arquitectura de procesador en el 1T08" (se requiere suscripción) . Digitimes . Archivado desde el original el 3 de diciembre de 2008 . Consultado el 25 de julio de 2007 .
  38. ^ Stokes, Jon (23 de enero de 2008). "Isaiah reveló: la nueva arquitectura de bajo consumo de VIA". Ars Técnica. Archivado desde el original el 27 de enero de 2008 . Consultado el 24 de enero de 2008 .
  39. ^ "VIA lanza la familia de nanoprocesadores VIA" (Presione soltar). A TRAVÉS DE . 29 de mayo de 2008. Archivado desde el original el 3 de febrero de 2019 . Consultado el 25 de mayo de 2017 .
  40. ^ "Introducción a la arquitectura VIA Isaiah" (PDF) . A TRAVÉS DE . 23 de enero de 2008. Archivado desde el original (PDF) el 7 de septiembre de 2008 . Consultado el 31 de julio de 2013 .
  41. ^ Weimer, Florian (10 de julio de 2020). "Nuevos niveles de microarquitectura x86-64". llvm-dev (lista de correo). Archivado desde el original el 14 de abril de 2021 . Consultado el 11 de marzo de 2021 .
  42. ^ Weimer, Florian (5 de enero de 2021). "Construcción de Red Hat Enterprise Linux 9 para el nivel de microarquitectura x86-64-v2". Blog para desarrolladores de Red Hat . Archivado desde el original el 20 de febrero de 2022 . Consultado el 22 de marzo de 2022 .
  43. ^ "Información del sistema de bajo nivel de la interfaz binaria de la aplicación System V". Repositorio x86-64 psABI . 29 de enero de 2021. Archivado desde el original el 2 de febrero de 2021 . Consultado el 11 de marzo de 2021 – vía GitLab .
  44. ^ "Lanzada la versión 7.2.0 de QEMU - QEMU". www.qemu.org . Archivado desde el original el 21 de diciembre de 2022 . Consultado el 9 de enero de 2023 .
  45. ^ "Registro de cambios/7.2 - QEMU". wiki.qemu.org . Archivado desde el original el 9 de enero de 2023 . Consultado el 9 de enero de 2023 .
  46. ^ Wasson, Scott (23 de marzo de 2005). "Computación de 64 bits en teoría y práctica". El informe técnico . Archivado desde el original el 12 de marzo de 2011 . Consultado el 22 de marzo de 2011 .
  47. ^ "Discusión sobre el desbordamiento de pila". Marzo de 2021. Archivado desde el original el 11 de enero de 2023 . Consultado el 2 de marzo de 2021 .
  48. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, volumen 2 (2A, 2B y 2C): referencia del conjunto de instrucciones, A – Z" (PDF) . Intel. Septiembre de 2013. págs. 4–397. Archivado (PDF) desde el original el 20 de octubre de 2013 . Consultado el 21 de enero de 2014 .
  49. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, volumen 2 (2A, 2B y 2C): referencia del conjunto de instrucciones, AZ" (PDF) . Intel. Septiembre de 2013. págs. 4–400. Archivado (PDF) desde el original el 20 de octubre de 2013 . Consultado el 21 de enero de 2014 .
  50. ^ "Cómo retirar la segmentación en modo largo AMD64 rompió VMware". Pagetable.com. 9 de noviembre de 2006. Archivado desde el original el 18 de julio de 2011 . Consultado el 2 de mayo de 2010 .
  51. ^ "Tecnología de virtualización de CPU y VMware" (PDF) . VMware. Archivado (PDF) desde el original el 17 de julio de 2011 . Consultado el 8 de septiembre de 2010 .
  52. ^ "Archivo del kernel de Linux: [PARCHE 2/5] KVM: svm: no permitir EFER.LMSLE en hardware que no lo admita". lkml.indiana.edu . Consultado el 3 de noviembre de 2023 .
  53. ^ "Manual del programador de arquitectura AMD64, volumen 3: instrucciones del sistema y de uso general" (PDF) . AMD. Mayo de 2018. pág. 419. Archivado (PDF) desde el original el 20 de agosto de 2018 . Consultado el 2 de agosto de 2018 .
  54. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, volumen 2 (2A, 2B y 2C): referencia del conjunto de instrucciones, AZ" (PDF) . Intel. Septiembre de 2014. págs. 4–412. Archivado (PDF) desde el original el 13 de enero de 2015 . Consultado el 28 de diciembre de 2014 .
  55. ^ Hadi Brais, La importancia de la instrucción x86 LFENCE, 14 de mayo de 2018. Archivado el 10 de junio de 2023.
  56. ^ "Migración en vivo con la tecnología de migración extendida AMD-V™" (PDF) . desarrollador.amd.com . Archivado (PDF) desde el original el 6 de diciembre de 2022 . Consultado el 30 de junio de 2022 .
  57. ^ Maged M. Michael. "Implementaciones prácticas de LL/SC/VL sin bloqueos y sin esperas utilizando CAS de 64 bits" (PDF) . IBM. Archivado (PDF) desde el original el 2 de mayo de 2013 . Consultado el 21 de enero de 2014 .
  58. ^ darwou (20 de agosto de 2004). "¿Por qué el espacio de direcciones virtuales es de 4 GB de todos modos?". Lo viejo y nuevo . Microsoft. Archivado desde el original el 26 de marzo de 2017 . Consultado el 25 de marzo de 2017 .
  59. ^ ab "Requisitos del sistema: Windows 8.1". Archivado desde el original el 28 de abril de 2014 . Consultado el 27 de abril de 2014 . Para instalar un sistema operativo de 64 bits en una PC de 64 bits, su procesador debe ser compatible con CMPXCHG16b, PrefetchW y LAHF/SAHF.
  60. ^ Petkov, Borislav (10 de agosto de 2009). "Re: [PATCH v2] x86: borrar el indicador X86_FEATURE_LAHF_LM forzado incorrectamente". Lista de correo del kernel de Linux . Archivado desde el original el 11 de enero de 2023 . Consultado el 30 de junio de 2022 .
  61. ^ "Guía de revisión para los procesadores AMD Athlon 64 y AMD Opteron" (PDF) . AMD. Archivado (PDF) desde el original el 24 de agosto de 2009 . Consultado el 18 de julio de 2009 .
  62. ^ "Notificación de cambio de producto 105224 - 01" (PDF) . Intel. Archivado desde el original (PDF) el 17 de noviembre de 2005.
  63. ^ "Actualización de la especificación del procesador Intel® Pentium® D secuencia 800 y del procesador Intel® Pentium® Extreme Edition 840" (PDF) . Archivado (PDF) desde el original el 18 de mayo de 2021 . Consultado el 30 de junio de 2022 .
  64. ^ "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 .
  65. ^ Smith, Tony (23 de agosto de 2005). "Intel modifica EM64T para lograr compatibilidad total con AMD64". El registro . Archivado desde el original el 30 de junio de 2022 . Consultado el 30 de junio de 2022 .
  66. ^ "Notificación de cambio de producto 105271 – 00" (PDF) . Intel. Archivado desde el original (PDF) el 17 de noviembre de 2005.
  67. ^ 0F47h ​​debutó en la versión B0 de Pentium D el 21 de octubre, [62] [63] pero 0F48h, que también admite LAHF/SAHF, se lanzó el 10 de octubre en el Xeon de doble núcleo . [64] [un]
  68. ^ "Notificación de cambio de producto 104101 – 00" (PDF) . Intel. Archivado desde el original (PDF) el 16 de julio de 2004.
  69. ^ "Hoja de datos del procesador MP Intel® Xeon ™ de 64 bits con caché L3 de hasta 8 MB" (PDF) . Archivado (PDF) desde el original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  70. ^ "Justin Boggs en Microsoft PDC 2008". pag. 5. Archivado desde el original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  71. ^ Waldecker, Brian. "Procesadores multinúcleo AMD Opteron" (PDF) . pag. 13. Archivado (PDF) desde el original el 13 de diciembre de 2022 . Consultado el 17 de noviembre de 2022 .
  72. ^ "Hoja de datos del procesador Intel® Xeon® serie 7500, volumen 2" (PDF) . Archivado (PDF) desde el original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  73. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32". Septiembre de 2014. p. 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 espacio de direcciones físicas de hasta 46 bits.
  74. ^ Logan, Tom (14 de noviembre de 2011). "Revisión de Intel Core i7-3960X". Archivado desde el original el 28 de marzo de 2016 . Consultado el 1 de julio de 2022 .
  75. ^ Sí, 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) desde el original el 26 de mayo de 2022 . Consultado el 1 de julio de 2022 .
  76. ^ Kennedy, Patrick (10 de noviembre de 2022). "AMD EPYC Genoa supera a Intel Xeon de una manera impresionante". Servir al hogar . pag. 2. Archivado desde el original el 17 de noviembre de 2022 . Consultado el 17 de noviembre de 2022 .
  77. ^ "Estadísticas | TOP500 sitios de supercomputadoras". Top500.org. Archivado desde el original el 19 de marzo de 2014 . Consultado el 22 de marzo de 2014 .
  78. ^ "Generador de sublistas | Sitios de supercomputadoras TOP500". www.top500.org . Archivado desde el original el 7 de diciembre de 2018 . Consultado el 6 de diciembre de 2018 .
  79. ^ "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) desde el original el 21 de mayo de 2014 . Consultado el 21 de mayo de 2014 .
  80. ^ "Intel impulsa la supercomputadora más rápida del mundo y revela tecnologías informáticas de alto rendimiento nuevas y futuras". Archivado desde el original el 22 de junio de 2013 . Consultado el 21 de junio de 2013 .
  81. ^ "compromiso de cvs: 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 limites.h lock.h md_var.h param.h pcb.h pcb_ext.h pmap.h proc.h perfil.h psl.h ..." Archivado desde el original en 4 de diciembre de 2008 . Consultado el 3 de mayo de 2009 .
  82. ^ "Puerto AMD64". Archivado desde el original el 18 de mayo de 2010 . Consultado el 3 de mayo de 2009 .
  83. ^ "DragonFlyBSD: GoogleSoC2008". Archivado desde el original el 27 de abril de 2009 . Consultado el 3 de mayo de 2009 .
  84. ^ "Estudiantes aceptados en Summer of Code". Archivado desde el original el 4 de septiembre de 2010 . Consultado el 3 de mayo de 2009 .
  85. ^ "DragonFlyBSD: lanzamiento 24". Archivado desde el original el 23 de septiembre de 2009 . Consultado el 3 de mayo de 2009 .
  86. ^ "Tutorial para ingresar al modo protegido y largo desde DOS". Archivado desde el original el 22 de febrero de 2017 . Consultado el 6 de julio de 2008 .
  87. ^ Andi Kleen (26 de junio de 2001). "Migración de Linux a x86-64". Archivado desde el original el 10 de septiembre de 2010. Estado: El núcleo, el compilador y la cadena de herramientas funcionan. El kernel arranca y funciona en el simulador y se utiliza para migrar el área de usuario y ejecutar programas.
  88. ^ Andi Kleen. "Página de Andi Kleen". Archivado desde el original el 7 de diciembre de 2009 . Consultado el 21 de agosto de 2009 . Este fue el artículo original que describía el puerto del kernel Linux x86-64 cuando x86-64 solo estaba disponible en simuladores.
  89. ^ "Preguntas frecuentes sobre Arch64". 23 de abril de 2012. Archivado desde el original el 14 de mayo de 2012 . Consultado el 11 de mayo de 2012 . Puede utilizar los paquetes multilib o un chroot i686.
  90. ^ ab Thorsten Leemhuis (13 de septiembre de 2011). "Kernel Log: x32 ABI soluciona los inconvenientes de 64 bits". www.h-online.com. Archivado desde el original el 28 de octubre de 2011 . Consultado el 1 de noviembre de 2011 .
  91. ^ ab "x32: una ABI nativa de 32 bits para x86-64". linuxplumbersconf.org. Archivado desde el original el 5 de mayo de 2012 . Consultado el 1 de noviembre de 2011 .
  92. ^ ab "x32-abi". Sitios de Google. Archivado desde el original el 30 de octubre de 2011 . Consultado el 1 de noviembre de 2011 .
  93. ^ "Puerto AMD64". debian.org. Archivado desde el original el 26 de septiembre de 2019 . Consultado el 29 de octubre de 2011 .
  94. ^ "Paginación de 5 niveles". kernel.org . Consultado el 7 de febrero de 2024 .
  95. ^ "Apple - Notas de la versión de Mac OS X Xcode 2.4: herramientas del compilador". Apple Inc. 11 de abril de 2007. Archivado desde el original el 22 de abril de 2009 . Consultado el 19 de noviembre de 2012 .
  96. ^ "Apple - Mac OS X Leopard - Tecnología - 64 bits". Apple Inc. Archivado desde el original el 12 de enero de 2009 . Consultado el 19 de noviembre de 2012 .
  97. ^ "Mac OS X v10.6: Mac que utilizan el kernel de 64 bits". Apple Inc. Archivado desde el original el 31 de agosto de 2009 . Consultado el 29 de noviembre de 2012 .
  98. ^ Juan Siracusa. "Mac OS X 10.6 Snow Leopard: la revisión de Ars Technica". Ars Technica LLC. Archivado desde el original el 9 de octubre de 2009 . Consultado el 20 de junio de 2010 .
  99. ^ "Tecnología Mac OS X". Apple Inc. Archivado desde el original el 28 de marzo de 2011 . Consultado el 19 de noviembre de 2012 .
  100. ^ Schmid, J; Thomases, K; Ramey, J; Czekalla, U; Mathieu, B; Abhiram, R (10 de septiembre de 2019). "Así que no tenemos una solución para Catalina... todavía". Blog de CodeWeavers . Archivado desde el original el 29 de septiembre de 2021 . Consultado el 29 de septiembre de 2021 .
  101. ^ Thomases, Ken (11 de diciembre de 2019). "win32 en MacOS". VinoHQ . Archivado desde el original el 11 de noviembre de 2020 . Consultado el 29 de septiembre de 2021 .
  102. ^ "Microsoft aumenta el límite de velocidad con la disponibilidad de ediciones de 64 bits de Windows Server 2003 y Windows XP Professional". Centro de noticias de Microsoft (Comunicado de prensa). 25 de abril de 2005 . Consultado el 29 de enero de 2024 .
  103. ^ "Una descripción de las versiones basadas en x64 de Windows Server 2003 y de Windows XP Professional x64 Edition". Soporte de Microsoft . Archivado desde el original el 20 de abril de 2016 . Consultado el 14 de agosto de 2016 .
  104. ^ "Paquete de herramientas de administración de Windows Server 2003 SP1". Centro de descarga de Microsoft . Archivado desde el original el 27 de agosto de 2016 . Consultado el 14 de agosto de 2016 .
  105. ^ ab "/LARGEADDRESSAWARE (Manejar direcciones grandes)". Documentación de Visual Studio 2022: referencia del vinculador de MSVC: opciones del vinculador de MSVC . Microsoft. Archivado desde el original el 21 de diciembre de 2022 . Consultado el 21 de diciembre de 2022 . La opción /LARGEADDRESSAWARE le dice al vinculador que la aplicación puede manejar direcciones de más de 2 gigabytes.
  106. ^ a b C Matt Pietrek (mayo de 2006). "Todo lo que necesita saber para empezar a programar sistemas Windows de 64 bits". Microsoft . Consultado el 18 de abril de 2023 .
  107. ^ Chris St. Amand (enero de 2006). "Hacer el cambio a x64". Microsoft . Consultado el 18 de abril de 2023 .
  108. ^ "Detrás del límite de direccionamiento de memoria virtual de 44 bits de Windows x86-64". Archivado desde el original el 23 de diciembre de 2008 . Consultado el 2 de julio de 2009 .
  109. ^ ab "Programación de 64 bits para desarrolladores de juegos" . Consultado el 18 de abril de 2023 .
  110. ^ "Límites de memoria para versiones de Windows y Windows Server". Microsoft . Consultado el 18 de abril de 2023 .
  111. ^ Kingsley-Hughes, Adrian (23 de agosto de 2010). "AMD se despide del conjunto de instrucciones 3DNow!". ZDNet . Archivado desde el original el 8 de enero de 2023 . Consultado el 8 de enero de 2023 .
  112. ^ "Pautas generales de portabilidad". Guía de programación para Windows de 64 bits. Documentos de Microsoft . Consultado el 18 de abril de 2023 .
  113. ^ "Historial del controlador para Microsoft SQL Server". Documentos de Microsoft . Consultado el 18 de abril de 2023 .
  114. ^ "El proveedor Microsoft OLE DB para Jet y el controlador Jet ODBC solo están disponibles en versiones de 32 bits". Acceso a la oficina. Documentos de Microsoft . KB957570 . Consultado el 18 de abril de 2023 .
  115. ^ Anand Lal Shimpi (21 de mayo de 2013). "Xbox One: análisis y comparación de hardware con PlayStation 4". Anandtech. Archivado desde el original el 7 de junio de 2013 . Consultado el 22 de mayo de 2013 .
  116. ^ "La prueba de especificaciones técnicas: Xbox One frente a PlayStation 4". Informador del juego. 21 de mayo de 2013. Archivado desde el original el 7 de junio de 2013 . Consultado el 22 de mayo de 2013 .
  117. ^ "Qué esperar del lanzamiento de Sony 'PlayStation 5' en noviembre". El expreso indio . 31 de agosto de 2020. Archivado desde el original el 19 de septiembre de 2020 . Consultado el 14 de septiembre de 2020 .
  118. ^ Cutress, Dr. Ian. "Blog en vivo de Hot Chips 2020: Arquitectura del sistema Microsoft Xbox Series X (6:00 p. m., hora del Pacífico)". www.anandtech.com . Archivado desde el original el 17 de septiembre de 2020 . Consultado el 14 de septiembre de 2020 .
  119. ^ Hollister, Sean (12 de noviembre de 2021). "Steam Deck: cinco cosas importantes que aprendimos de la cumbre de desarrolladores de Valve". El borde . Archivado desde el original el 7 de febrero de 2022 . Consultado el 12 de noviembre de 2021 .
  120. ^ "Campos de arquitectura del procesador". Archivado desde el original el 28 de abril de 2015 . Consultado el 4 de septiembre de 2013 .
  121. ^ "Un archivo de ejemplo del árbol de fuentes del kernel de Linux 3.7.8 que muestra el uso del término x86_64". Archivado desde el original el 23 de septiembre de 2005 . Consultado el 17 de febrero de 2013 .
  122. ^ Estados Unidos 6877084 
  123. ^ Estados Unidos 6889312 
  124. ^ Estados Unidos 6732258 
  125. ^ "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 .
  126. ^ "Acuerdo de conciliación de AMD Intel". Archivado desde el original el 7 de julio de 2017 . Consultado el 18 de septiembre de 2017 .
  127. ^ 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 .
  128. ^ 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