
En arquitectura informática , los enteros de 64 bits , las direcciones de memoria u otras unidades de datos [ a ] son aquellos que tienen un ancho de 64 bits . Asimismo, las unidades centrales de procesamiento (CPU) y las unidades aritmético-lógicas (ALU) de 64 bits son aquellas que se basan en registros de procesador , buses de direcciones o buses de datos de ese tamaño. Un ordenador que utiliza un procesador de este tipo es un ordenador de 64 bits.
Desde la perspectiva del software, la computación de 64 bits implica el uso de código máquina con direcciones de memoria virtual de 64 bits . Sin embargo, no todos los conjuntos de instrucciones de 64 bits admiten direcciones de memoria virtual completas de 64 bits; x86-64 y AArch64 , por ejemplo, solo admiten 48 bits de dirección virtual, y los 16 bits restantes deben ser todos ceros (000...) o todos unos (111...), y varios conjuntos de instrucciones de 64 bits admiten menos de 64 bits de dirección de memoria física.
El término 64 bits también describe una generación de computadoras en la que los procesadores de 64 bits son la norma. 64 bits es un tamaño de palabra que define ciertas clases de arquitectura de computadoras, buses, memoria y CPU y, por extensión, el software que se ejecuta en ellas. Las CPU de 64 bits se han utilizado en supercomputadoras desde la década de 1970 ( Cray-1 , 1975) y en computadoras con conjunto de instrucciones reducido (RISC) y servidores desde principios de la década de 1990. En 2003, las CPU de 64 bits se introdujeron en el mercado de PC convencionales en forma de procesadores x86-64 y el PowerPC G5 .
Un registro de 64 bits puede almacenar cualquiera de 2⁶⁴ (más de 18 quintillones o 1,8 × 10¹⁹ ) valores diferentes. El rango de valores enteros que se pueden almacenar en 64 bits depende de la representación entera utilizada. Con las dos representaciones más comunes, el rango es de 0 a 18.446.744.073.709.551.615 (igual a 2⁶⁴ − 1) para la representación como un número binario ( sin signo ) , y de −9.223.372.036.854.775.808 (−2⁶³ ) a 9.223.372.036.854.775.807 ( 2⁶³ − 1) para la representación como complemento a dos . Por lo tanto, un procesador con direcciones de memoria de 64 bits puede acceder directamente a 2⁶⁴ bytes (16 exabytes o EB) de memoria direccionable por bytes .
Sin más aclaraciones, una arquitectura de computadora de 64 bits generalmente tiene registros de enteros y de direccionamiento de 64 bits de ancho, lo que permite la compatibilidad directa con tipos de datos y direcciones de 64 bits. Sin embargo, una CPU puede tener buses de datos o de direcciones externos con tamaños diferentes a los de los registros, incluso mayores (el Pentium de 32 bits tenía un bus de datos de 64 bits, por ejemplo). [ 1 ]
Implicaciones arquitectónicas
Los registros del procesador se dividen típicamente en varios grupos: enteros , de punto flotante , de instrucción única, datos múltiples (SIMD), de control y, a menudo, registros especiales para aritmética de direcciones que pueden tener varios usos y nombres, como registros de dirección , índice o base . [ 2 ] Sin embargo, en los diseños modernos, estas funciones suelen ser realizadas por registros enteros de propósito más general . En la mayoría de los procesadores, solo los registros enteros o de dirección pueden usarse para direccionar datos en la memoria; los otros tipos de registros no pueden. Por lo tanto, el tamaño de estos registros normalmente limita la cantidad de memoria directamente direccionable, incluso si hay registros, como los de punto flotante, que son más amplios.
La mayoría de los procesadores de alto rendimiento de 32 y 64 bits (con algunas excepciones notables como las CPU con arquitectura ARM o MIPS de 32 bits, que son más antiguas o están integradas ) tienen hardware de punto flotante integrado, que a menudo, aunque no siempre, se basa en unidades de datos de 64 bits. Por ejemplo, si bien la arquitectura x86 / x87 tiene instrucciones capaces de cargar y almacenar valores de punto flotante de 64 (y 32) bits en la memoria, el formato interno de datos y registros de punto flotante es de 80 bits, mientras que los registros de propósito general son de 32 bits. En contraste, la familia Alpha de 64 bits utiliza un formato de datos y registros de punto flotante de 64 bits y registros enteros de 64 bits.
Historia
Muchos conjuntos de instrucciones de computadora están diseñados de manera que un solo registro entero puede almacenar la dirección de memoria de cualquier ubicación en la memoria física o virtual de la computadora . Por lo tanto, el número total de direcciones de memoria a menudo viene determinado por el ancho de estos registros. El IBM System/360 de la década de 1960 fue una de las primeras computadoras de 32 bits; tenía registros enteros de 32 bits, aunque solo usaba los 24 bits de menor orden de una palabra para las direcciones, lo que resultaba en un espacio de direcciones de 16 MiB ( 16 × 1024 2 bytes ). Las superminicomputadoras de 32 bits , como la DEC VAX , se hicieron comunes en la década de 1970, y los microprocesadores de 32 bits, como la familia Motorola 68000 y los miembros de 32 bits de la familia x86 a partir del Intel 80386 , aparecieron a mediados de la década de 1980, lo que convirtió a 32 bits en una especie de consenso de facto como un tamaño de registro conveniente.
Un registro de direcciones de 32 bits significaba que se podían referenciar 2³² direcciones, o 4 GB de memoria de acceso aleatorio (RAM). Cuando se diseñaron estas arquitecturas, 4 GB de memoria superaban con creces las cantidades típicas (4 MiB) en las instalaciones, por lo que se consideró que esto proporcionaba suficiente margen para el direccionamiento. Se consideró que 4290 millones de direcciones era un tamaño adecuado para trabajar por otra razón importante: 4290 millones de enteros son suficientes para asignar referencias únicas a la mayoría de las entidades en aplicaciones como las bases de datos .
La mayoría de los ordenadores modernos disponen de espacio para entre 8 y 32 mil millones de direcciones únicas en su memoria de acceso aleatorio ; una arquitectura de 64 bits puede acceder a una dirección 2 mil millones de veces mayor. Es probable que nunca se utilice todo el espacio de 64 bits.
Algunas arquitecturas de supercomputadoras de las décadas de 1970 y 1980, como la Cray-1 , [ 3 ] usaban registros de hasta 64 bits de ancho y admitían aritmética de enteros de 64 bits, aunque no admitían direccionamiento de 64 bits. A mediados de la década de 1980, comenzó el desarrollo del Intel i860 [ 4 ] que culminó en un lanzamiento en 1989; el i860 tenía registros de enteros de 32 bits y direccionamiento de 32 bits, por lo que no era un procesador completamente de 64 bits, aunque su unidad gráfica admitía aritmética de enteros de 64 bits. [ 5 ] Sin embargo, los 32 bits siguieron siendo la norma hasta principios de la década de 1990, cuando las continuas reducciones en el costo de la memoria llevaron a instalaciones con cantidades de RAM cercanas a los 4 GB, y el uso de espacios de memoria virtual que superaban el límite de 4 GB se volvió deseable para manejar ciertos tipos de problemas. En respuesta, MIPS y DEC desarrollaron arquitecturas de microprocesadores de 64 bits, inicialmente para estaciones de trabajo y servidores de gama alta . A mediados de la década de 1990, HAL Computer Systems , Sun Microsystems , IBM , Silicon Graphics y Hewlett-Packard habían desarrollado arquitecturas de 64 bits para sus sistemas de estaciones de trabajo y servidores. Una excepción notable a esta tendencia fueron los mainframes de IBM, que entonces usaban tamaños de datos de 32 bits y direcciones de 31 bits; los mainframes de IBM no incluyeron procesadores de 64 bits hasta el año 2000. Durante la década de 1990, varios microprocesadores de 64 bits de bajo costo se usaron en electrónica de consumo y aplicaciones embebidas. Cabe destacar que la Nintendo 64 [ 6 ] y la PlayStation 2 tenían microprocesadores de 64 bits antes de su introducción en las computadoras personales. Las impresoras de gama alta, los equipos de red y las computadoras industriales también usaban microprocesadores de 64 bits, como el Quantum Effect Devices R5000 . [ 7 ] La computación de 64 bits comenzó a llegar a las computadoras de escritorio personales a partir de 2003, cuando algunos modelos de las líneas Macintosh de Apple cambiaron a procesadores PowerPC 970 (denominados G5 por Apple), y Advanced Micro Devices (AMD) lanzó su primer procesador x86-64 de 64 bits . La memoria física finalmente alcanzó los límites de 32 bits. En 2023, las computadoras portátiles estaban equipadas comúnmente con 16 GB y los servidores a partir de 64 GB de memoria, [ 8 ] superando ampliamente la capacidad de direcciones de 4 GB de 32 bits.
Línea de tiempo de datos de 64 bits
- 1961
- IBM presenta la supercomputadora IBM 7030 Stretch , que utiliza palabras de datos de 64 bits y palabras de instrucciones de 32 o 64 bits.
- 1974
- Control Data Corporation lanza la supercomputadora vectorial CDC Star-100 , que utiliza una arquitectura de palabra de 64 bits (los sistemas CDC anteriores se basaban en una arquitectura de 60 bits).
- International Computers Limited lanza la serie ICL 2900 con enteros en complemento a dos de 32, 64 y 128 bits ; coma flotante de 64 y 128 bits; decimal empaquetado de 32, 64 y 128 bits y un registro acumulador de 128 bits. Esta arquitectura se ha mantenido a lo largo de varias máquinas de ICL y Fujitsu. La más reciente es la Fujitsu Supernova, que emula el entorno original en procesadores Intel de 64 bits.
- 1976
- Cray Research presenta la primera supercomputadora Cray-1 , basada en una arquitectura de palabras de 64 bits, que servirá de base para las futuras supercomputadoras vectoriales de Cray.
- 1983
- Elxsi lanza la minisupercomputadora paralela Elxsi 6400. La arquitectura de Elxsi tiene registros de datos de 64 bits, pero un espacio de direcciones de 32 bits.
- 1989
- Intel presenta el procesador Intel i860 de conjunto de instrucciones reducido (RISC). Comercializado como un "microprocesador de 64 bits", tenía esencialmente una arquitectura de 32 bits, mejorada con una unidad gráfica 3D capaz de realizar operaciones con enteros de 64 bits. [ 9 ]
- 1993
- Atari presenta la consola de videojuegos Atari Jaguar , que incluye algunas rutas de datos de 64 bits en su arquitectura. [ 10 ]
Línea de tiempo de direcciones de 64 bits
- 1991
- MIPS Computer Systems produce el primer microprocesador de 64 bits, el R4000 , que implementa la arquitectura MIPS III , la tercera revisión de su arquitectura MIPS . [ 11 ] La CPU se utiliza en estaciones de trabajo gráficas SGI a partir de la IRIS Crimson . Kendall Square Research entrega su primera supercomputadora KSR1, basada en una arquitectura de procesador RISC de 64 bits propietaria que ejecuta OSF/1 .
- 1992
- Digital Equipment Corporation (DEC) presenta la arquitectura Alpha de 64 bits puros que nació del proyecto PRISM . [ 12 ]
- 1994
- Intel anuncia sus planes para la arquitectura IA- 64 de 64 bits (desarrollada conjuntamente con Hewlett-Packard ) como sucesora de sus procesadores IA-32 de 32 bits . Se preveía su lanzamiento entre 1998 y 1999.
- 1995
- Sun lanza un procesador SPARC de 64 bits , el UltraSPARC . [ 13 ] HAL Computer Systems, propiedad de Fujitsu, lanza estaciones de trabajo basadas en una CPU de 64 bits, el SPARC64 de primera generación diseñado independientemente por HAL . IBM lanza los microprocesadores A10 y A30, los primeros procesadores PowerPC AS de 64 bits. [ 14 ] IBM también lanza una actualización del sistema AS/400 de 64 bits, que puede convertir el sistema operativo, la base de datos y las aplicaciones.
- 1996
- Nintendo presenta la consola de videojuegos Nintendo 64 , construida alrededor de una variante de bajo costo del MIPS R4000. HP lanza la primera implementación de su arquitectura PA-RISC 2.0 de 64 bits , la PA-8000 . [ 15 ]
- 1998
- IBM lanza la línea POWER3 de procesadores PowerPC/ POWER de 64 bits completos . [ 16 ]
- 1999
- Intel publica el conjunto de instrucciones para la arquitectura IA-64 . AMD divulga públicamente su conjunto de extensiones de 64 bits para IA-32, denominadas x86-64 (posteriormente conocidas como AMD64).
- 2000
- IBM lanza su primer mainframe con arquitectura z/Architecture de 64 bits , el zSeries z900. z/Architecture es una versión de 64 bits de la arquitectura ESA/390 de 32 bits , descendiente de la arquitectura System/360 de 32 bits .
- 2001
- Intel lanza al mercado su línea de procesadores IA-64, tras repetidos retrasos. Ahora comercializados bajo la marca Itanium y dirigidos a servidores de gama alta, las ventas no cumplen las expectativas.
- 2003
- AMD presenta sus líneas de procesadores Opteron y Athlon 64 , basadas en su arquitectura AMD64 , la primera arquitectura de procesador de 64 bits basada en x86. Apple también comercializa la CPU PowerPC 970 "G5" de 64 bits, fabricada por IBM. Intel mantiene que sus chips Itanium seguirán siendo sus únicos procesadores de 64 bits.
- 2004
- En respuesta al éxito comercial de AMD, Intel admite haber estado desarrollando un clon de las extensiones AMD64, denominado IA-32e (posteriormente renombrado EM64T y, más tarde, Intel 64). Intel comercializa versiones actualizadas de sus procesadores Xeon y Pentium 4 compatibles con el nuevo conjunto de instrucciones de 64 bits.
- VIA Technologies anuncia el procesador Isaiah de 64 bits. [ 17 ]
- 2006
- Sony, IBM y Toshiba comienzan a fabricar el procesador Cell de 64 bits para su uso en PlayStation 3 , servidores, estaciones de trabajo y otros dispositivos. Intel lanzó Core 2 Duo como el primer procesador x86-64 convencional para su línea de móviles, ordenadores de sobremesa y estaciones de trabajo. Las líneas de procesadores de extensión de 64 bits anteriores no estaban ampliamente disponibles en el mercado minorista de consumo (la mayoría de los Pentium 4/D de 64 bits eran OEM), los Pentium 4, Pentium D y Celeron de 64 bits no entraron en producción en masa hasta finales de 2006 debido a un problema de bajo rendimiento (la mayoría de las obleas de buen rendimiento estaban destinadas a servidores y mainframes, mientras que la línea de procesadores convencionales seguía siendo de 130 nm y 32 bits hasta 2006) y pronto se convirtieron en gama baja después del debut de Core 2. AMD lanzó su primer procesador móvil de 64 bits y lo fabricó en 90 nm.
- 2011
- ARM Holdings anuncia ARMv8-A, la primera versión de 64 bits de la familia de arquitectura ARM . [ 18 ]
- 2012
- ARM Holdings anunció sus núcleos Cortex-A53 y Cortex-A57, sus primeros núcleos basados en su arquitectura de 64 bits, el 30 de octubre de 2012. [ 19 ] [ 20 ]
- 2013
- Apple anuncia el iPhone 5S , que es el primer teléfono inteligente con procesador de 64 bits, el sistema en chip A7 basado en ARMv8-A, y el iPad Air y el iPad Mini 2 , que son las primeras tabletas con procesadores de 64 bits.
- 2014
- Se publicó RISC-V , con soporte para 32 y 64 bits. [ 21 ] Google anuncia la tableta Nexus 9 , el primer dispositivo Android que funciona con el chip Tegra K1 de 64 bits.
- 2015
- Apple anuncia el iPod Touch (6.ª generación) , el primer iPod Touch que utiliza un procesador de 64 bits, el sistema en chip A8 basado en ARMv8-A, junto con el Apple TV (4.ª generación) , el primer Apple TV que utiliza un procesador de 64 bits.
- 2018
- Apple anuncia el Apple Watch Series 4 , el primer Apple Watch que utiliza un procesador de 64 bits, el sistema en chip S4 basado en ARMv8-A.
- 2020
- Synopsis anuncia el ISA ARCv3, la primera versión de 64 bits del ISA ARC . [ 22 ] Apple lanza el Apple M1 , que carece de soporte para aplicaciones de 32 bits.
- 2023
- Qualcomm lanza los procesadores Snapdragon 8 Gen 3 y Snapdragon X Elite , que carecen de soporte para aplicaciones ARM de 32 bits.
Cronología de los sistemas operativos de 64 bits
- 1985
- Cray lanza UNICOS , la primera implementación de 64 bits del sistema operativo Unix . [ 23 ]
- 1993
- DEC lanza el sistema operativo DEC OSF/1 AXP de 64 bits , similar a Unix (posteriormente renombrado Tru64 UNIX), para sus sistemas basados en la arquitectura Alpha .
- 1994
- Silicon Graphics añadió compatibilidad con el procesador R8000 al sistema operativo IRIX en su versión 6.0.
- 1995
- DEC lanza OpenVMS 7.0, la primera versión completa de 64 bits de OpenVMS para Alpha. Se lanza la primera distribución de Linux de 64 bits para la arquitectura Alpha. [ 24 ]
- 1996
- Silicon Graphics añade compatibilidad con los procesadores R4x00 en modo de 64 bits al sistema operativo IRIX en su versión 6.2.
- 1998
- Sun lanza Solaris 7, con soporte completo para UltraSPARC de 64 bits .
- 2000
- IBM lanza z/OS , un sistema operativo de 64 bits derivado de MVS , para los nuevos mainframes zSeries de 64 bits; Linux de 64 bits para z Systems llega casi inmediatamente después del lanzamiento de la CPU.
- 2001
- Linux se convierte en el primer núcleo de sistema operativo en brindar soporte completo a x86-64 (en un simulador, ya que aún no se habían lanzado procesadores x86-64). [ 25 ]
- 2001
- Microsoft lanza Windows XP Edición de 64 bits para la arquitectura IA-64 del Itanium ; esta podía ejecutar aplicaciones de 32 bits a través de una capa de ejecución.
- 2003
- Apple lanza su sistema operativo Mac OS X 10.3 "Panther", que añade soporte para aritmética de enteros de 64 bits nativa en procesadores PowerPC 970. [ 26 ] Varias distribuciones de Linux lanzan soporte para AMD64 . FreeBSD lanza soporte para AMD64.
- 2005
- El 4 de enero, Microsoft descontinúa Windows XP 64-Bit Edition, ya que no había PC con procesadores IA-64 disponibles desde septiembre anterior, y anuncia que está desarrollando versiones x86-64 de Windows para reemplazarlo. [ 27 ] El 31 de enero, Sun lanza Solaris 10 con soporte para procesadores AMD64 y EM64T. El 29 de abril, Apple lanza Mac OS X 10.4 "Tiger" que proporciona soporte limitado para aplicaciones de línea de comandos de 64 bits en máquinas con procesadores PowerPC 970; las versiones posteriores para Macs basadas en Intel admitían aplicaciones de línea de comandos de 64 bits en Macs con procesadores EM64T. El 30 de abril, Microsoft lanza Windows XP Professional x64 Edition y Windows Server 2003 x64 Edition para procesadores AMD64 y EM64T. [ 28 ]
- 2006
- Microsoft lanza Windows Vista , que incluye una versión de 64 bits para procesadores AMD64/EM64T que conserva la compatibilidad con 32 bits. En la versión de 64 bits, todas las aplicaciones y componentes de Windows son de 64 bits, aunque muchos también incluyen sus versiones de 32 bits para garantizar la compatibilidad con los complementos .
- 2007
- Apple lanza Mac OS X 10.5 "Leopard", que ofrece soporte completo para aplicaciones de 64 bits en máquinas con procesadores PowerPC 970 o EM64T.
- 2009
- Microsoft lanza Windows 7 , que, al igual que Windows Vista, incluye una versión completa de 64 bits para procesadores AMD64/Intel64; la mayoría de los ordenadores nuevos vienen con una versión de 64 bits preinstalada. Microsoft también lanza Windows Server 2008 R2 , el primer sistema operativo de servidor exclusivamente de 64 bits. Apple lanza Mac OS X 10.6 , "Snow Leopard", que incluye un kernel de 64 bits para procesadores AMD64/Intel64, aunque solo algunos modelos recientes de ordenadores Apple ejecutan el kernel de 64 bits de forma predeterminada. La mayoría de las aplicaciones incluidas en Mac OS X 10.6 también son ahora de 64 bits. [ 26 ]
- 2010
- Windows 7 (64 bits) se convierte en el sistema operativo más popular en Steam, superando a Windows XP (32 bits). [ 29 ] [ 30 ]
- 2011
- Apple lanza Mac OS X 10.7 , "Lion", que ejecuta el kernel de 64 bits de forma predeterminada en los equipos compatibles. Los equipos más antiguos que no pueden ejecutar el kernel de 64 bits ejecutan el kernel de 32 bits, pero, al igual que en versiones anteriores, aún pueden ejecutar aplicaciones de 64 bits; Lion no es compatible con equipos con procesadores de 32 bits. Casi todas las aplicaciones incluidas con Mac OS X 10.7 ahora también son de 64 bits, incluido iTunes.
- 2012
- Microsoft lanza Windows 8 que admite UEFI Clase 3 ( UEFI sin CSM) y arranque seguro . [ 31 ] Apple lanza OS X Mountain Lion , que hace que el kernel de 64 bits sea el predeterminado en algunas máquinas antiguas que antes no eran compatibles y elimina el kernel de 32 bits.
- 2018
- Apple lanza watchOS 5 , la primera versión de watchOS que incorpora compatibilidad con 64 bits.
- 2019
- Apple lanza macOS 10.15 "Catalina", eliminando la compatibilidad con aplicaciones Intel de 32 bits.
- 2021
- Microsoft lanzará Windows 11 el 5 de octubre, que solo será compatible con sistemas de 64 bits, dejando de ser compatible con los sistemas IA-32 y AArch32.
- 2022
- Google lanza el Pixel 7 , que deja de ser compatible con aplicaciones de 32 bits. Apple lanza watchOS 9 , la primera versión de watchOS que se ejecuta exclusivamente en los modelos de Apple Watch con procesadores de 64 bits (incluidos el Apple Watch Series 4 o posterior, el Apple Watch SE (1.ª generación) o posterior y el recién presentado Apple Watch Ultra ), dejando de ser compatible con el Apple Watch Series 3 , el último modelo de Apple Watch con procesador de 32 bits.
- 2023
- Google lanza Android 14 , que deja de ser compatible con aplicaciones de 32 bits.
- 2024
- Microsoft lanza la actualización Windows 11 2024 , cuyas versiones para ARM dejan de ser compatibles con las aplicaciones ARM de 32 bits.
Límites de los procesadores
En principio, un microprocesador de 64 bits puede direccionar 16 EB ( 16 × 1024 6 = 2 64 = 18.446.744.073.709.551.616 bytes ) de memoria. Sin embargo, no todos los conjuntos de instrucciones, ni todos los procesadores que los implementan, admiten un espacio de direcciones virtuales o físicas completo de 64 bits.
La arquitectura x86-64 ( a partir de marzo de 2024) ) permite 48 bits para la memoria virtual y, para cualquier procesador dado, hasta 52 bits para la memoria física. [ 32 ] [ 33 ] Estos límites permiten tamaños de memoria de 256 TB ( 256 × 1024 4 bytes ) y 4 PB ( 4 × 1024 5 bytes ), respectivamente. Actualmente, un PC no puede contener 4 petabytes de memoria (debido al tamaño físico de los chips de memoria), pero AMD previó grandes servidores, clústeres de memoria compartida y otros usos del espacio de direcciones físicas que podrían acercarse a esto en un futuro previsible. Por lo tanto, la dirección física de 52 bits proporciona un amplio espacio para la expansión sin incurrir en el costo de implementar direcciones físicas completas de 64 bits. De manera similar, el espacio de direcciones virtuales de 48 bits fue diseñado para proporcionar 65.536 (2¹⁶ ) veces el límite de 32 bits de 4 GB ( 4 × 1024³ bytes ), lo que permite espacio para una expansión posterior y no genera la sobrecarga de traducir direcciones completas de 64 bits.
La Power ISA v3.0 permite 64 bits para una dirección efectiva, mapeada a una dirección segmentada con entre 65 y 78 bits permitidos, para la memoria virtual y, para cualquier procesador dado, hasta 60 bits para la memoria física. [ 34 ]
La arquitectura Oracle SPARC 2015 permite 64 bits para la memoria virtual y, para cualquier procesador dado, entre 40 y 56 bits para la memoria física. [ 35 ]
La arquitectura del sistema de memoria virtual ARM AArch64 permite de 48 a 56 bits para la memoria virtual y, para cualquier procesador dado, de 32 a 56 bits para la memoria física. [ 36 ]
La especificación DEC Alpha requiere un mínimo de 43 bits de espacio de direcciones de memoria virtual (8 TB) para ser compatible, y el hardware debe verificar y generar una excepción si los bits restantes no compatibles son cero (para garantizar la compatibilidad con procesadores futuros). Alpha 21064 admitía 43 bits de espacio de direcciones de memoria virtual (8 TB) y 34 bits de espacio de direcciones de memoria física (16 GB). Alpha 21164 admitía 43 bits de espacio de direcciones de memoria virtual (8 TB) y 40 bits de espacio de direcciones de memoria física (1 TB). Alpha 21264 admitía 43 o 48 bits de espacio de direcciones de memoria virtual (8 TB o 256 TB) configurables por el usuario y 44 bits de espacio de direcciones de memoria física (16 TB).
aplicaciones de 64 bits
32 bits frente a 64 bits
Un cambio de una arquitectura de 32 bits a una de 64 bits es una alteración fundamental, ya que la mayoría de los sistemas operativos deben modificarse extensamente para aprovechar la nueva arquitectura, puesto que dicho software debe gestionar el hardware de direccionamiento de memoria. [ 37 ] Otro software también debe adaptarse para utilizar las nuevas capacidades; el software antiguo de 32 bits puede ser compatible ya sea porque el conjunto de instrucciones de 64 bits es un superconjunto del conjunto de instrucciones de 32 bits, de modo que los procesadores que admiten el conjunto de instrucciones de 64 bits también pueden ejecutar código para el conjunto de instrucciones de 32 bits, o mediante emulación de software , o mediante la implementación real de un núcleo de procesador de 32 bits dentro del procesador de 64 bits, como en algunos procesadores Itanium de Intel, que incluían un núcleo de procesador IA-32 para ejecutar aplicaciones x86 de 32 bits . Los sistemas operativos para esas arquitecturas de 64 bits generalmente admiten aplicaciones tanto de 32 bits como de 64 bits. [ 38 ]
Una excepción significativa a esto es el IBM AS/400 , cuyo software se compila en una arquitectura de conjunto de instrucciones virtual (ISA) llamada Interfaz de Máquina Independiente de Tecnología (TIMI); el código TIMI se traduce a código máquina nativo mediante software de bajo nivel antes de su ejecución. El software de traducción es lo único que debe reescribirse para trasladar el sistema operativo completo y todo el software a una nueva plataforma, como cuando IBM migró el conjunto de instrucciones nativo para AS/400 del antiguo IMPI de 32/48 bits al más reciente PowerPC-AS de 64 bits , con nombre en clave Amazon . El conjunto de instrucciones IMPI era bastante diferente incluso del PowerPC de 32 bits, por lo que esta transición fue aún más importante que simplemente trasladar un conjunto de instrucciones de 32 a 64 bits.
En hardware de 64 bits con arquitectura x86-64 (AMD64), la mayoría de los sistemas operativos y aplicaciones de 32 bits pueden ejecutarse sin problemas de compatibilidad. Si bien el mayor espacio de direcciones de las arquitecturas de 64 bits facilita el trabajo con grandes conjuntos de datos en aplicaciones como vídeo digital , computación científica y grandes bases de datos , ha habido un debate considerable sobre si estas arquitecturas, o sus modos de compatibilidad con 32 bits, serán más rápidas que los sistemas de 32 bits de precio similar para otras tareas.
Un programa Java compilado puede ejecutarse en una máquina virtual Java de 32 o 64 bits sin modificaciones. Las longitudes y la precisión de todos los tipos integrados, como char, short, int, long, float, y double, y los tipos que se pueden usar como índices de matrices, están especificados por el estándar y no dependen de la arquitectura subyacente. Los programas Java que se ejecutan en una máquina virtual Java de 64 bits tienen acceso a un espacio de direcciones mayor. [ 39 ]
La velocidad no es el único factor a considerar al comparar procesadores de 32 y 64 bits. Aplicaciones como la multitarea, las pruebas de estrés y la agrupación en clústeres (para computación de alto rendimiento , HPC) pueden ser más adecuadas para una arquitectura de 64 bits si se implementa correctamente. Por esta razón, los clústeres de 64 bits se han implementado ampliamente en grandes organizaciones, como IBM, HP y Microsoft.
Resumen:
- Un procesador de 64 bits ofrece el mejor rendimiento con software de 64 bits.
- Un procesador de 64 bits puede tener retrocompatibilidad , lo que le permite ejecutar software de aplicación de 32 bits para la versión de 32 bits de su conjunto de instrucciones, y también puede admitir la ejecución de sistemas operativos de 32 bits para la versión de 32 bits de su conjunto de instrucciones.
- Un procesador de 32 bits es incompatible con software de 64 bits.
Ventajas y desventajas
Una idea errónea común es que las arquitecturas de 64 bits no son mejores que las de 32 bits a menos que el ordenador tenga más de 4 GB de memoria de acceso aleatorio . [ 40 ] Esto no es del todo cierto:
- Algunos sistemas operativos y ciertas configuraciones de hardware limitan el espacio de memoria física a 3 GB en sistemas IA-32 , debido a que gran parte de la región de 3 a 4 GB está reservada para el direccionamiento de hardware; véase barrera de 3 GB ; las arquitecturas de 64 bits pueden direccionar mucho más de 4 GB. Sin embargo, los procesadores IA-32 desde el Pentium Pro en adelante permiten un espacio de direcciones de memoria física de 36 bits , utilizando la Extensión de Dirección Física (PAE), que proporciona un rango de direcciones físicas de 64 GB, de los cuales hasta 62 GB pueden ser utilizados por la memoria principal; los sistemas operativos que admiten PAE pueden no estar limitados a 4 GB de memoria física, incluso en procesadores IA-32. Sin embargo, los controladores y otro software en modo kernel, sobre todo las versiones más antiguas, pueden ser incompatibles con PAE; esto se ha citado como la razón por la que las versiones de 32 bits de Microsoft Windows están limitadas a 4 GB de RAM física [ 41 ] (aunque la validez de esta explicación ha sido cuestionada [ 42 ] ).
- Algunos sistemas operativos reservan parte del espacio de direcciones de los procesos para uso del sistema operativo, lo que reduce el espacio total disponible para la asignación de memoria a los programas de usuario. Por ejemplo, Windows de 32 bits reserva 1 o 2 GB (según la configuración) del espacio total de direcciones para el núcleo, lo que deja solo 3 o 2 GB (respectivamente) disponibles para el modo de usuario. Este límite es mucho mayor en los sistemas operativos de 64 bits.
- La implementación de archivos mapeados en memoria se está volviendo más compleja en arquitecturas de 32 bits, dado que los archivos de más de 4 GB son cada vez más comunes. Estos archivos tan grandes no se pueden mapear fácilmente en memoria en arquitecturas de 32 bits, ya que solo una parte del archivo se puede mapear en el espacio de direcciones a la vez. Para acceder a un archivo de este tipo mediante mapeo en memoria, las partes mapeadas deben intercambiarse dentro y fuera del espacio de direcciones según sea necesario. Esto representa un problema, ya que el mapeo en memoria, si el sistema operativo lo implementa correctamente, es uno de los métodos más eficientes para acceder a la memoria desde el disco.
- Algunos programas de 64 bits, como codificadores, decodificadores y software de cifrado, pueden beneficiarse enormemente de los registros de 64 bits, mientras que el rendimiento de otros programas, como los orientados a gráficos 3D, no se ve afectado al cambiar de un entorno de 32 bits a uno de 64 bits.
- Algunas arquitecturas de 64 bits, como x86-64 y AArch64 , admiten más registros de propósito general que sus contrapartes de 32 bits (aunque esto no se debe específicamente a la longitud de palabra). Esto conlleva un aumento significativo de la velocidad en bucles ajustados, ya que el procesador no tiene que recuperar datos de la caché o la memoria principal si estos caben en los registros disponibles.
- Ejemplo en C :
int a , b , c , d , e ; para ( a = 0 ; a < 100 ; a ++ ) { b = a ; c = b ; d = c ; e = d ; }- Este código primero crea cinco valores: a, b, c, d y e; y luego los coloca en un bucle. Durante el bucle, este código cambia el valor de b por el valor de a, el valor de c por el valor de b, el valor de d por el valor de c y el valor de e por el valor de d. Esto tiene el mismo efecto que cambiar todos los valores por a.
- Si un procesador solo puede almacenar dos o tres valores o variables en registros, necesitaría transferir algunos valores entre la memoria y los registros para poder procesar también las variables d y e; este proceso consume muchos ciclos de CPU. Un procesador que puede almacenar todos los valores y variables en registros puede recorrerlos sin necesidad de transferir datos entre registros y memoria en cada iteración. Este comportamiento se puede comparar fácilmente con la memoria virtual, aunque sus efectos dependen del compilador.
La principal desventaja de las arquitecturas de 64 bits es que, en comparación con las de 32 bits, los mismos datos ocupan más espacio en la memoria (debido a punteros más largos y posiblemente otros tipos de datos, así como al relleno de alineación). Esto aumenta los requisitos de memoria de un proceso determinado y puede afectar al uso eficiente de la caché del procesador. Mantener un modelo parcial de 32 bits es una forma de solucionar este problema y, en general, resulta bastante eficaz. Por ejemplo, el sistema operativo z/OS adopta este enfoque, requiriendo que el código del programa resida en espacios de direcciones de 31 bits (el bit de orden superior no se utiliza en el cálculo de direcciones en la plataforma de hardware subyacente), mientras que los objetos de datos pueden residir opcionalmente en regiones de 64 bits. No todas estas aplicaciones requieren un gran espacio de direcciones ni manipulan elementos de datos de 64 bits, por lo que no se benefician de estas características.
Disponibilidad del software
Los sistemas de 64 bits basados en x86 a veces carecen de equivalentes del software escrito para arquitecturas de 32 bits. El problema más grave en Microsoft Windows son los controladores de dispositivos incompatibles para hardware obsoleto. La mayoría del software de aplicación de 32 bits puede ejecutarse en un sistema operativo de 64 bits en modo de compatibilidad , también denominado modo de emulación , por ejemplo, la tecnología Microsoft WoW64 para IA-64 y AMD64. El entorno de controladores del modo nativo de Windows de 64 bits [ 43 ] se ejecuta sobre NTDLL.DLL de 64 bits , que no puede llamar al código del subsistema Win32 de 32 bits (a menudo dispositivos cuya función de hardware real se emula en el software en modo de usuario, como las impresoras Winprinter). Debido a que los controladores de 64 bits para la mayoría de los dispositivos no estuvieron disponibles hasta principios de 2007 (Vista x64), usar una versión de 64 bits de Windows se consideraba un desafío. Sin embargo, desde entonces la tendencia se ha orientado hacia la computación de 64 bits, sobre todo a medida que los precios de la memoria bajaron y aumentó el uso de más de 4 GB de RAM. La mayoría de los fabricantes comenzaron a proporcionar controladores de 32 y 64 bits para los nuevos dispositivos, por lo que la falta de controladores de 64 bits dejó de ser un problema. Sin embargo, no se proporcionaban controladores de 64 bits para muchos dispositivos antiguos, que, en consecuencia, no podían utilizarse en sistemas de 64 bits.
La compatibilidad de los controladores no suponía un gran problema con los controladores de código abierto, ya que los de 32 bits podían modificarse para su uso en arquitecturas de 64 bits. La compatibilidad con hardware fabricado antes de principios de 2007 resultaba problemática para las plataformas de código abierto, debido al número relativamente reducido de usuarios.
Las versiones de 64 bits de Windows no pueden ejecutar software de 16 bits . Sin embargo, la mayoría de las aplicaciones de 32 bits funcionarán correctamente. Los usuarios de 64 bits se ven obligados a instalar una máquina virtual de un sistema operativo de 16 o 32 bits para ejecutar aplicaciones de 16 bits o utilizar una de las alternativas para NTVDM . [ 44 ]
Mac OS X 10.4 "Tiger" y Mac OS X 10.5 "Leopard" solo tenían un núcleo de 32 bits, pero podían ejecutar código de usuario de 64 bits en procesadores de 64 bits. Mac OS X 10.6 "Snow Leopard" tenía núcleos de 32 y 64 bits y, en la mayoría de las Mac, usaba el núcleo de 32 bits incluso en procesadores de 64 bits. Esto permitía que esas Mac admitieran procesos de 64 bits sin dejar de admitir controladores de dispositivos de 32 bits; aunque no los controladores de 64 bits ni las ventajas de rendimiento que estos pueden ofrecer. Mac OS X 10.7 "Lion" se ejecutaba con un núcleo de 64 bits en más Mac, y OS X 10.8 "Mountain Lion" y las versiones posteriores de macOS solo tienen un núcleo de 64 bits. En sistemas con procesadores de 64 bits, tanto el núcleo de macOS de 32 como el de 64 bits pueden ejecutar código de usuario de 32 bits, y todas las versiones de macOS hasta macOS Mojave (10.14) incluyen versiones de 32 bits de las bibliotecas que usarían las aplicaciones de 32 bits, por lo que el software de usuario de 32 bits para macOS funcionará en esos sistemas. Apple eliminó las versiones de 32 bits de las bibliotecas en macOS Catalina (10.15).
Linux y la mayoría de los sistemas operativos tipo Unix , así como sus herramientas de desarrollo en C y C++ , han sido compatibles con procesadores de 64 bits durante muchos años. Numerosas aplicaciones y bibliotecas para estas plataformas son software de código abierto , escritas en C y C++, por lo que, si son compatibles con 64 bits, pueden compilarse a versiones de 64 bits. Este modelo de distribución basado en el código fuente, con énfasis en lanzamientos frecuentes, facilita la disponibilidad de software para estos sistemas operativos.
modelos de datos de 64 bits
En programas de 32 bits, los punteros y los tipos de datos como los enteros generalmente tienen la misma longitud. Esto no es necesariamente cierto en máquinas de 64 bits. [ 45 ] [ 46 ] [ 47 ] Por lo tanto, la combinación de tipos de datos en lenguajes de programación como C y sus derivados, como C++ y Objective-C, puede funcionar en implementaciones de 32 bits, pero no en implementaciones de 64 bits.
En muchos entornos de programación para C y lenguajes derivados de C en máquinas de 64 bits, intlas variables siguen siendo de 32 bits, pero los enteros largos y los punteros son de 64 bits. Estos se describen como con un modelo de datos LP64 , que es una abreviatura de "Long, Pointer, 64". [ 48 ] [ 49 ] Otros modelos son el modelo de datos ILP64 en el que los tres tipos de datos son de 64 bits, [ 50 ] [ 49 ] e incluso el modelo SILP64 donde los enteros cortos también son de 64 bits. [ 51 ] [ 52 ] Sin embargo, en la mayoría de los casos las modificaciones requeridas son relativamente menores y sencillas, y muchos programas bien escritos pueden simplemente recompilarse para el nuevo entorno sin cambios. Otra alternativa es el modelo LLP64 , que mantiene la compatibilidad con el código de 32 bits al dejar tanto como como de 32 bits. [ 53 ] [ 49 ] LL se refiere al tipo de entero largo largo , que es de al menos 64 bits en todas las plataformas, incluidos los entornos de 32 bits.intlong
También existen sistemas con procesadores de 64 bits que utilizan un modelo de datos ILP32 , con la adición de enteros long long de 64 bits; este modelo también se utiliza en muchas plataformas con procesadores de 32 bits. Reduce el tamaño del código y el de las estructuras de datos que contienen punteros, a costa de un espacio de direcciones mucho menor, lo que lo convierte en una buena opción para algunos sistemas embebidos. Para conjuntos de instrucciones como x86 y ARM, en los que la versión de 64 bits tiene más registros que la de 32 bits, proporciona acceso a los registros adicionales sin la penalización de espacio. Es común en máquinas RISC de 64 bits, se exploró en x86 como ABI x32 y recientemente se ha utilizado en el Apple Watch Series 4 y 5. [ 54 ] [ 55 ]
Un modelo de programación es una elección que se realiza para adaptarse a un compilador determinado, y varios pueden coexistir en el mismo sistema operativo. Sin embargo, el modelo de programación elegido como modelo principal para la interfaz de programación de aplicaciones (API) del sistema operativo suele ser el que predomina.
Otro aspecto a considerar es el modelo de datos utilizado para los controladores de dispositivos . Los controladores constituyen la mayor parte del código del sistema operativo en la mayoría de los sistemas operativos modernos (aunque muchos pueden no cargarse cuando el sistema operativo está en ejecución). Muchos controladores utilizan punteros de forma intensiva para manipular datos y, en algunos casos, deben cargar punteros de un tamaño determinado en el hardware que admiten para el acceso directo a memoria (DMA). Por ejemplo, un controlador para un dispositivo PCI de 32 bits que solicita al dispositivo que transfiera datos mediante DMA a las áreas superiores de la memoria de una máquina de 64 bits no podría satisfacer las solicitudes del sistema operativo para cargar datos del dispositivo a la memoria por encima de la barrera de 4 gigabytes , porque los punteros para esas direcciones no cabrían en los registros DMA del dispositivo. Este problema se resuelve haciendo que el sistema operativo tenga en cuenta las restricciones de memoria del dispositivo al generar solicitudes a los controladores para DMA, o utilizando una unidad de gestión de memoria de entrada/salida (IOMMU).
Arquitecturas actuales de 64 bits
A fecha de agosto de 2023 ,Las arquitecturas de 64 bits para las que se fabricaron procesadores incluían:
- La extensión de 64 bits creada por Advanced Micro Devices (AMD) para la arquitectura x86 de Intel (posteriormente licenciada por Intel); comúnmente denominada x86-64 , AMD64 o x64 :
- Extensiones AMD64 de AMD (utilizadas en procesadores Athlon 64 , Opteron , Sempron , Turion 64 , Phenom , Athlon II , Phenom II , APU , FX , Ryzen y Epyc )
- Las extensiones Intel 64 de Intel , utilizadas en los procesadores Intel Core 2/i3/i5/i7/i9, algunos Atom y los más recientes Celeron , Pentium y Xeon.
- Extensiones de 64 bits de VIA Technologies , utilizadas en los procesadores VIA Nano .
- Arquitectura AArch64 de ARM Holdings
- Arquitectura PowerPC / Power ISA de IBM :
- El procesador Power10 de IBM y sus predecesores, y los procesadores IBM A2.
- La arquitectura z/Architecture de IBM , una versión de 64 bits de la arquitectura ESA/390 , se utiliza en los mainframes IBM Z de IBM :
- Procesador IBM Telum II y predecesores
- Hitachi AP8000E
- RISC-V
- Arquitectura SPARC V9:
- Procesadores M8 y S7 de Oracle y sus predecesores
- Procesadores SPARC64 XII y SPARC64 XIfx de Fujitsu y sus predecesores
- Arquitectura MIPS64 de MIPS Technologies
- Arquitectura NEC SX
- Arquitectura de Elbrus :
- ARCO
La mayoría de las arquitecturas de 64 bits derivadas de una versión de 32 bits de la misma arquitectura pueden ejecutar código escrito para la versión de 32 bits de forma nativa, sin pérdida de rendimiento. Por ejemplo, los procesadores x86-64 pueden ejecutar aplicaciones IA-32 a máxima velocidad. [ 57 ] Este tipo de compatibilidad se conoce comúnmente como compatibilidad biarquitectura o, más generalmente, compatibilidad multiarquitectura .
Véase también
Notas
- ↑ como los números de punto flotante .
Referencias
- ↑ Manual del usuario del procesador Pentium Volumen 1: Libro de datos del procesador Pentium (PDF) . Intel . 1993.
- ↑ Sharma, Nitin Kumar; Yadav, KP; Sharma, BK "Estudio comparativo de las familias de microprocesadores de 64 bits y Apple" (PDF) . Revista Internacional de Tecnología Innovadora e Ingeniería Exploratoria . 3 (2): 163– 169. ISSN 2278-3075 .
- ↑ "Manual de referencia de hardware del sistema informático Cray-1" (PDF) . Cray Research . 1977. Consultado el 8 de octubre de 2013 .
- ↑ Grimes, Jack; Kohn, Les; Bharadhwaj, Rajeev (julio-agosto de 1989). "El procesador Intel i860 de 64 bits: una CPU de propósito general con capacidades de gráficos 3D" . IEEE Computer Graphics and Applications . 9 (4): 85–94 . Bibcode : 1989ICGA....9d..85G . doi : 10.1109/38.31467 . S2CID 38831149. Recuperado el 19 de noviembre de 2010 .
- ↑ "Manual de referencia del programador de la familia de procesadores i860" (PDF) . Intel . 1991. Consultado el 12 de septiembre de 2019 .
- ↑ "NEC ofrece dos microprocesadores RISC de 64 bits de alto rendimiento y costo" ( Comunicado de prensa). NEC . 20 de enero de 1998. Consultado el 9 de enero de 2011.
Las versiones del procesador VR4300 se utilizan ampliamente en aplicaciones de automatización de oficina y de consumo, incluyendo el popular videojuego Nintendo 64™ e impresoras láser avanzadas como la recientemente anunciada y galardonada familia de impresoras Hewlett-Packard LaserJet 4000.
- ↑ "Información técnica sobre el microprocesador MIPS R5000" (PDF) . MIPS Technologies, Inc. Consultado el 19 de agosto de 2024 .
- ↑ "DDR5 | DRAM" . Samsung Semiconductor Global . Consultado el 19 de enero de 2025 .
- ↑ "Microprocesador i860 de 64 bits" . Intel. 1989. Archivado del original el 19 de marzo de 2011. Consultado el 30 de noviembre de 2010 .
- ↑ «Historia de Atari Jaguar» . Edad Atari .
- ↑ Joe Heinrich (1994). Manual del usuario del microprocesador MIPS R4000 (2.ª ed.). MIPS Technologies, Inc.
- ↑ Richard L. Sites (1992). "Arquitectura Alpha AXP". Digital Technical Journal . 4 (4). Digital Equipment Corporation.
- ↑ Gwennap, Linley (3 de octubre de 1994). "UltraSparc libera el rendimiento de SPARC". Microprocessor Report . 8 (13). MicroDesign Resources.
- ↑ Bishop, JW; et al. (julio de 1996). "Microprocesador RISC PowerPC AS A10 de 64 bits". IBM Journal of Research and Development . 40 (4). IBM Corporation: 495– 505. doi : 10.1147/rd.404.0495 .
- ↑ Gwennap, Linley (14 de noviembre de 1994). "PA-8000 combina complejidad y velocidad". Microprocessor Report . 8 (15). MicroDesign Resources.
- ↑ FP O'Connell; SW White (noviembre de 2000). "POWER3: La próxima generación de procesadores PowerPC". IBM Journal of Research and Development . 44 (6). IBM Corporation: 873– 884. doi : 10.1147/rd.446.0873 .
- ↑ "VIA revela detalles del núcleo del procesador Isaiah de próxima generación" (Comunicado de prensa). VIA Technologies, Inc. Archivado del original el 11 de octubre de 2007. Consultado el 18 de julio de 2007 .
- ↑ "Vista previa de la tecnología ARMv8" (PDF) . 31 de octubre de 2011. Archivado del original (PDF) el 11 de noviembre de 2011. Consultado el 15 de noviembre de 2012 .
- ↑ "ARM lanza la serie Cortex-A50, los procesadores de 64 bits más eficientes energéticamente del mundo" (Comunicado de prensa). ARM Holdings . Consultado el 31 de octubre de 2012 .
- ↑ "Presentación de ARM: Lanzamiento de los procesadores ARMv8 de 64 bits ARM Cortex-A53 y ARM Cortex-A57" . ARMdevices.net . 31 de octubre de 2012.
- ↑ Asanović, Krste ; Patterson, David A. (6 de agosto de 2014). Los conjuntos de instrucciones deberían ser gratuitos: el caso de RISC-V (PDF) . Departamento de EECS, Universidad de California, Berkeley. UCB/EECS-2014-146.
- ↑ "Synopsys presenta un nuevo procesador ARC de 64 bits" . Archivado del original el 31 de marzo de 2022.
- ↑ Stefan Berka. "Sistema Operativo Unicos" . www.operating-system.org. Archivado del original el 26 de noviembre de 2010. Consultado el 19 de noviembre de 2010 .
- ↑ Jon "maddog" Hall (1 de junio de 2000). "Mi vida y el software libre" . Linux Journal .
- ↑ Andi Kleen. Portando Linux a x86-64 (PDF) . Simposio Linux de Ottawa 2001.
Estado: El kernel, el compilador y la cadena de herramientas funcionan. El kernel arranca y funciona en el simulador y se utiliza para portar el espacio de usuario y ejecutar programas.
- 1 2 John Siracusa (septiembre de 2009). "Mac OS X 10.6 Snow Leopard: la reseña de Ars Technica" . Ars Technica . pág. 5. Archivado del original el 9 de octubre de 2009. Recuperado el 6 de septiembre de 2009 .
- ↑ Joris Evers (5 de enero de 2005). "Microsoft descarta Windows XP para Itanium" . Computerworld. Archivado del original el 18 de junio de 2013. Consultado el 17 de octubre de 2017 .
- ↑ "Microsoft eleva el límite de velocidad con la disponibilidad de las ediciones de 64 bits de Windows Server 2003 y Windows XP Professional" (Comunicado de prensa). Microsoft. 25 de abril de 2005. Consultado el 10 de septiembre de 2015 .
- ↑ "Encuesta sobre hardware de Steam" . Valve Software. 4 de diciembre de 2010. Archivado del original el 4 de diciembre de 2010.
- ↑ "Windows 7 de 64 bits, el sistema operativo más utilizado" . Bit-Tech. 4 de agosto de 2010.
- ↑ "UEFI en plataformas Dell BizClient" (PDF) .
- ↑ "Manual del programador AMD64 Volumen 2: Programación del sistema" . Advanced Micro Devices. Junio de 2025. pág. 127.
- ↑ "Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, Volumen 3A: Guía de programación del sistema, Parte 1" (PDF) . Intel. Septiembre de 2016. pág. 4-2.
- ↑ "Power ISA Versión 3.0" . IBM . 30 de noviembre de 2015. pág. 983.
- ↑ "Arquitectura Oracle SPARC 2015 Borrador D1.0.9" (PDF) . Oracle . 16 de noviembre de 2016. pág. 475. Archivado del original (PDF) el 22 de abril de 2020.
- ↑ "Manual de referencia de la arquitectura ARM para la arquitectura de perfil A" . 30 de noviembre de 2024. Sección D8.1.6 "Tamaño de dirección física implementado", sección D8.1.8 "Rangos de direcciones virtuales compatibles".
- ↑ Mashey, John (octubre de 2006). "El largo camino hacia los 64 bits" . ACM Queue . 4 (8): 85– 94. doi : 10.1145/1165754.1165766 .
- ↑ "Windows 7: ¿64 bits o 32 bits?" . Foros de W7. 2 de abril de 2009. Archivado del original el 5 de abril de 2009. Consultado el 5 de abril de 2009 .
- ↑ "Preguntas frecuentes sobre la máquina virtual Java HotSpot" . Oracle . Consultado el 13 de diciembre de 2024 .
- ↑ "Descripción de las diferencias entre las versiones de 32 bits de Windows Vista y las versiones de 64 bits de Windows Vista" . Archivado del original el 15/10/2011 . Consultado el 14/10/2011 .
- ↑ Mark Russinovich (21 de julio de 2008). "Llevando al límite las capacidades de Windows: memoria física" . Archivado del original el 7 de abril de 2017. Consultado el 9 de marzo de 2017 .
- ↑ Chappell, Geoff (27 de enero de 2009). "Memoria con licencia en Windows Vista de 32 bits" . geoffchappell.com . WP:SPS . Consultado el 9 de marzo de 2017 .
- ↑ "Dentro de las aplicaciones nativas" . Technet.microsoft.com. 1 de noviembre de 2006. Archivado del original el 23 de octubre de 2010. Consultado el 19 de noviembre de 2010 .
- ↑ Lincoln Spector (12 de agosto de 2013). "Ejecutar un programa antiguo en un PC nuevo" .
- ↑ Peter Seebach (2006). "Explorando el desarrollo de 64 bits en POWER5: ¿Qué tan portable es realmente su código?" . IBM .
- ↑ Henry Spencer. "Los diez mandamientos para programadores de C" .
- ↑ "La historia de Thud y Blunder" . Datacenterworks.com . Consultado el 19 de noviembre de 2010 .
- ↑ "Modelos de datos ILP32 y LP64 y tamaños de tipos de datos" . Guía de programación de z/OS XL C/C++ .
- 1 2 3 "Modelos de programación de 64 bits" . Consultado el 5 de junio de 2020 .
- ↑ "Uso de la interfaz ILP64 frente a la interfaz LP64" . Intel . Consultado el 19 de diciembre de 2025 .
- 1 2 "Manual de referencia de Cray C/C++" . Agosto de 1998. Tabla 9-1. Asignación de tipos de datos de los sistemas de investigación de Cray. Archivado del original el 16 de octubre de 2013. Recuperado el 15 de octubre de 2013 .
- 1 2 "Manual de referencia de Cray C y C++ (8.7) S-2179" . Consultado el 24 de junio de 2020 .
- ↑ "Modelos de datos abstractos - Aplicaciones de Windows" . 30 de mayo de 2018.
- ↑ "Libro blanco de ILP32 para AArch64" . ARM Limited. 9 de junio de 2015. Archivado del original el 30 de diciembre de 2018. Consultado el 9 de octubre de 2018 .
- ↑ "Dispositivos Apple en 2018" . woachk, investigador de seguridad. 6 de octubre de 2018.
- ↑ "/usr/web/sources/plan9/sys/src/libmach/executable.c - Plan 9 de Bell Labs" . 9p.io. Archivado del original el 12 de agosto de 2025. Recuperado el 8 de julio de 2026 .
- ↑ stevewhims. "Programación de 64 bits para desarrolladores de juegos: aplicaciones Win32" . learn.microsoft.com . Consultado el 22 de octubre de 2025 .
Enlaces externos
- Guía de transición a 64 bits, Biblioteca para desarrolladores de Mac
- Karpov, Andrey. "Una colección de ejemplos de errores de 64 bits en programas reales" . Archivado del original el 23 de septiembre de 2021.
- Kilgard, Mark J. "¿Está tu código X preparado para 64 bits?" . Archivado del original el 3 de junio de 2001. Recuperado el 26 de septiembre de 2012 .
- Lecciones sobre el desarrollo de aplicaciones C/C++ de 64 bits en Wayback Machine (archivado el 14 de abril de 2021)
- Modelos de programación de 64 bits: ¿Por qué LP64?
- Arquitectura AMD64 (EM64T)
- computadoras de 64 bits
- Unidad de datos