Está en la página 1de 10

Arquitectura de 64 bits

En arquitectura de ordenadores, 64 bits es un adjetivo usado para describir enteros,


direcciones de memoria u otras unidades de datos que comprenden hasta 64 bits (8
octetos) de ancho, o para referirse a una arquitectura de CPU y ALU basadas en
registros, bus de direcciones o bus de datos de ese ancho. Los microprocesadores de
64 bits han existido en los superordenadores desde 1960 y en servidores y estaciones
de trabajo basadas en RISC desde mediados de los aos 1990. En 2003 empezaron a
ser introducidos masivamente en los ordenadores personales (previamente de 32 bits)
con las arquitecturas x86-64 y los procesadores PowerPC G5. Aunque una CPU
puede ser internamente de 64 bits, su bus de datos o bus de direcciones externos
pueden tener un tamao diferente, ms grande o ms pequeo y el trmino se utiliza
habitualmente para describir tambin el tamao de estos buses. Por ejemplo, muchas
mquinas actuales con procesadores de 32 bits usan buses de 64 bits (p.ej. el
Pentium original y las CPUs posteriores) y pueden ocasionalmente ser conocidas
como "64 bits" por esta razn. El trmino tambin se puede referir al tamao de las
instrucciones dentro del conjunto de instrucciones o a cualquier otro elemento de datos
(p.ej. las cantidades de 64 bits de coma flotante de doble precisin son comunes). Sin
ms calificaciones, sin embargo, la arquitectura de los ordenadores de 64 bits tiene
integrados registros que son de 64 bits, que permite soportar (interna y
externamente) datos de 64 bits. * * * * * o * * * * * * * 1 Implicaciones de
arquitectura 2 Limitaciones de memoria 3 Cronologa del procesador de 64
bits 4 32 bits contra 64 bits 5 Pros y contras 5.1 Disponibilidad del Software
6 Modelos de datos de 64 bits 7 Arquitecturas de microprocesador de 64
bits actuales 8 Ms all de los 64 bits 9 Imgenes 10 Vase tambin 11
Referencias 12 Enlaces externos

Implicaciones de arquitectura Los registros en un procesador se dividen
generalmente en tres grupos: enteros, coma flotante y otros. En todos los
procesadores de propsito general, slo los registros enteros pueden
almacenar punteros (una direccin de algn dato en memoria). Los registros
que no son de enteros no se pueden utilizar para almacenar punteros para
leer o escribir memoria y por tanto no se pueden utilizar para evitar
cualesquiera restricciones impuestas por el tamao de los registros enteros.
Casi todos los procesadores de propsito general (con la notable excepcin
de muchos ARM e implementaciones MIPS de 32 bits) han integrado
hardware de coma flotante, que puede o no utilizar registros de 64 bits para
transportar datos con el fin de procesarlos. Por ejemplo, la arquitectura X86
incluye instrucciones de coma flotante del x87 que utiliza 8 registros de 80
bits en una configuracin en forma de pila; revisiones posteriores del x86 y
la arquitectura x86-64 tambin incluyen instrucciones SSE que utilizan 8
registros de 128 bits (16 registros en el x86-64). En contraste, el procesador
de 64 bits de la familia DEC Alpha define 32 registros de

coma flotante de 64 bits adems de sus 32 registros de enteros de 64 bits.
Limitaciones de memoria Muchas CPUs estn actualmente (en 2008)
diseadas para que los contenidos de un nico registro puedan almacenar
la direccin de memoria de cualquier dato en la memoria virtual. Por tanto,
el nmero total de direcciones en memoria virtual la suma total de datos
que el ordenador puede mantener en su rea de trabajo es determinado
por el ancho de estos registros. Empezando en los aos 1960 con el IBM
S/360, luego (entre muchos otros) el miniordenador VAX de DEC en los
aos 1970 y luego con el Intel 80386 a mediados de los aos 1980, un
consenso de facto instaur que 32 bits era un tamao conveniente de
registro. Un registro de 32 bits significa que se puede referenciar 232
direcciones o 4 gigabytes de RAM. En el momento en que estas
arquitecturas fueron concebidas, 4 gigabytes de memoria estaban muy lejos
de las cantidades disponibles en instalaciones que se consideraban
suficiente "espacio" para direccionamiento. Las direcciones de 4 gigabytes
se consideraban un tamao apropiado con el que trabajar por otra
importante razn: 4 mil millones de enteros son suficientes para asignar
referencias nicas a la mayora de cosas fsicamente contables en
aplicaciones como bases de datos. No obstante, con el paso del tiempo y
las continuas reducciones en el coste de la memoria (vase la Ley de
Moore), al comienzo de los aos 1990, comenzaron a aparecer
instalaciones con cantidades de RAM prximas a los 4 gigabytes, y
comenz a ser deseable el uso de espacios de memoria virtual que
superaban el lmite de 4 gigabytes para manejar ciertos tipos de problemas.
Como respuesta, varias empresas empezaron a lanzar nuevas familias de
chips con arquitecturas de 64 bits, inicialmente para superordenadores,
estaciones de trabajo de grandes prestaciones y servidores. Las
computadoras de 64 bits se han ido moviendo hacia el ordenador personal,
con algunos modelos de las lneas Macintosh de Apple Computer
cambiando a procesadores PowerPC 970 (llamados "G5" por Apple) en
2003 y a procesadores EM64T de 64 bits en 2006, y con procesadores x86-
64 llegando a ser comunes en PC de gama alta. La aparicin de la
arquitectura de 64 bits efectivamente incrementa el lmite a 264 direcciones,
equivalente a 17,179,869,184 gigabytes o 16 exabytes de RAM. Para poner
esto en perspectiva, en los das en que 4 MB de memoria principal eran
comunes, el lmite mximo de memoria de 232 direcciones era unas 1000
veces mayor que la configuracin tpica de memoria. En 2007, cuando 1GB
de memoria principal es comn, el lmite de 264 es unos diez mil millones de
veces superior, es decir diez millones de veces ms de espacio. Muchos PC
de 64 bits del mercado tienen actualmente un lmite artificial en la cantidad
de memoria que pueden reconocer, pues las limitaciones fsicas hacen muy
poco probable que se vaya a necesitar soporte para los 16 exabytes de
capacidad total. El Mac Pro de Apple, por ejemplo, puede configurarse
fsicamente con hasta 32 gigabytes de memoria, y por ello no hay necesidad
de soportar ms all de esa cantidad. Un ncleo linux reciente (versin
2.6.16) puede ser compilado con soporte para hasta 64 gigabytes de
memoria. Segn Apple la nueva version de su sistema operativo
tericamente soporta 16 Terobytes de memoria.[1] Cronologa del
procesador de 64 bits * 1961: IBM lanz el superordenador IBM 7030
Stretch. Este utilizaba palabras de 64 bits e instrucciones de 32 64 bits. *
1974: Control Data Corporation lanz el superordenador vectorial CDC Star-
100, que utiliza una arquitectura de palabras de 64 bits (los sistemas previos
de CDC estaban basados en arquitecturas de 60 bits). * 1976: Cray
Research lanz el primer ordenador Cray-1. Este estaba basado en una
arquitectura de palabras de 64 bits, que sent las bases para los posteriores
superordenadores vectoriales de Cray.

* 1983: Elxsi lanz el minisuperordenador Elxsi 6400 paralelo. La
arquitectura Elxsi tena registros de datos de 64 bits pero un espacio de
direcciones de 32 bits. * 1991: MIPS Technologies produjo el primer
microprocesador de 64 bits, como la tercera revisin de la arquitectura RISC
MIPS, el R4000. La CPU fue utilizada en las estaciones de trabajo de Silicon
Graphics empezando con el IRIS Crimson. Sin embargo, el soporte de 64
bits para el R4000 no se incluy en el sistema operativo IRIX hasta la
versin IRIX 6.2 en 1996. * 1992: Digital Equipment Corporation (DEC)
introdujo el Alpha con una arquitectura pura de 64 bits que naci del
proyecto PRISM. * 1993: DEC lanz los sistemas operativos de 64 bits estilo
UNIX Tru64 y el OpenVMS para Sistemas Alpha. * 1994: Intel anunci sus
planes para la arquitectura IA-64 de 64 bits (desarrollada conjuntamente con
HP) como sucesor de su procesador de 32 bits IA-32. SGI lanz el IRIX 6.0
con soporte de 64 bits para las CPUs R8000. * 1995: Sun lanz un
procesador SPARC de 64 bits, el UltraSPARC. HAL Computer Systems
propiedad de Fujitsu lanz estaciones de trabajo basadas en una CPU de
64 bits, HAL independientemente dise la primera generacin de
SPARC64. IBM lanz los sistemas AS/400 de 64 bits, con la posibilidad de
actualizar el sistema operativo, las bases de datos y las aplicaciones. DEC
lanz el OpenVMS Alpha 7.0, la primera versin completa de 64 bits de
OpenVMS para Alpha. * 1996: HP lanz una implementacin de 64 bits, la
versin 2.0 de su arquitectura de procesador PA-RISC, el PA-8000.
Nintendo introdujo la consola de videojuegos Nintendo 64, construida con
una variante de bajo coste del MIPS R4000. * 1997: IBM lanz su RS64
equipado con procesadores PowerPC de 64 bits. * 1998: IBM lanz su
procesador POWER3 completamente de 64 bits de la familia
PowerPC/POWER. Sun lanz Solaris 7, con soporte completo para
UltraSPARC de 64 bits. * 1999: Intel public el conjunto de instrucciones
para la arquitectura IA-64. Primera revelacin pblica del juego de
extensiones de 64 bits al IA-32 de AMD (posteriormente renombrado como
AMD64). * 2000: IBM estren su primer mainframe de 64 bits, el z900 y su
nuevo sistema operativo, el Z/OS culminando el mayor desarrollo de la
historia de investigacin de un procesador de 64 bits e instantneamente
borrando la compatibilidad con las mquinas de 31 bits de sus competidores
Fujitsu/Amdahl e Hitachi. Un Linux para zSeries de 64 bits apareci casi
inmediatamente. * 2001: Intel finalmente lanz su lnea de procesadores de
64-bit, con la marca Itanium, teniendo como objetivo servidores de gama
alta. No cumpli las expectativas debido a los repetidos retrasos del
lanzamiento del IA-64 al mercado y se convirti en un fracaso. Linux fue el
primer sistema operativo en esta versin de procesador. * 2002: Intel
introdujo el Itanium 2 como sucesor del Itanium. * 2003: AMD sac a la luz
sus lneas de procesadores con arquitectura AMD64 Opteron y Athlon 64.
Apple lanz tambin sus CPUs PowerPC 970 "G5" de 64 bits por cortesa
de IBM, junto con una actualizacin de su sistema operativo Mac OS X, que
aadi soporte parcial para el modo de 64 bits. Se publicaron varias
distribuciones Linux con soporte para AMD64. Microsoft anunci que creara
una versin de su sistema operativo Windows

para esos chips AMD. Intel sostuvo que sus chips Itanium seran sus nicos
procesadores de 64 bits. * 2004: Intel, reaccionando al xito de mercado de
AMD, admiti que haba estado desarrollando un clon de las extensiones
AMD64, al que llam IA-32e y posteriormente renombr como EM64T. Se
lanzaron versiones actualizadas de sus familias de procesadores Xeon y
Pentium 4 que soportaban las nuevas instrucciones. Freescane anuncia su
ncleo e700, sucesor de su familia PowerPC G4. * 2005: El 31 de enero,
Sun lanz Solaris 10 con soporte para los procesadores AMD64 y EM64T.
En marzo, Intel anunci que sus primeros procesadores EM64T de doble
ncleo se pondran a la venta en el segundo cuatrimestre de 2005 con la
publicacin de su Pentium Extreme Edition 840 y los nuevos chips Pentium
D. El 30 de abril, Microsoft lanz pblicamente su Windows XP Professional
x64 Edition para procesadores AMD64 y EM64T. En mayo, AMD introdujo
sus primeros procesadores para servidores Opteron AMD64 de doble
ncleo y anunci su versin de escritorio, llamada Athlon 64 X2. Los
primeros procesadores Athlon 64 X2 (Toledo) contaban con dos ncleos
con una memoria cach L2 de 1MB y consistan de aproximadamente 233,2
millones de transistores. Tenan un tamao de 199 mm2. En julio, IBM
anunci sus nuevos procesadores PowerPC 970MP (cuyo nombre en
cdigo era Antares) de doble ncleo y 64 bits usados por IBM y Apple.
Microsoft lanz la consola Xbox 360 que usaba el procesador PowerPC de
64 bits Xenon, fabricado por IBM. * 2006: Se pusieron en produccin los
procesadores Itanium 2 Montecito de doble ncleo. Sony, IBM y Toshiba
comenzaron a fabricar el procesador Cell para su uso en la PlayStation 3,
servidores, estaciones de trabajo y otros dispositivos. Apple incorpor
procesadores Xeon EM64T de 64 bits en su nuevo Mac Pro y sus
ordenadores Intel Xserve, y posteriormente actualiz el iMac, el MacBook y
el MacBook Pro con procesadores EM64T Intel Core 2 Duo. 32 bits contra
64 bits El cambio de una arquitectura de 32 bits a una de 64 bits es una
alteracin fundamental, y muchos sistemas operativos tienen que
modificarse ostensiblemente para aprovechar las ventajas de la nueva
arquitectura. El resto del software tambin tiene que ser portado para usar
las nuevas capacidades; el software antiguo normalmente es soportado a
travs del modo de hardware compatible (en el que los nuevos
procesadores soportan las versiones antiguas del conjunto de instrucciones
antiguo de 32 bits, as como las de la versin de 64 bits), a travs de
emulacin software o por la implementacin de un ncleo de procesador de
32 bits dentro del procesador de 64 bits (como con los procesadores Itanium
de Intel, que incluyen un ncleo de procesador x86 para ejecutar
aplicaciones x86 de 32 bits). Los sistemas operativos para estas
arquitecturas de 64 bits generalmente soportan aplicaciones de 32 bits y de
64 bits. Una excepcin significativa de esto es el AS/400, cuyo software se
ejecuta en un conjunto de instrucciones virtual, llamado TIMI (Technology
Independent Machine Interface) que se traduce a cdigo nativo por software
de bajo nivel antes de ser ejecutado. El software de bajo nivel es todo lo que
ha de ser reescrito para portar todo el SO y el software a una nueva
plataforma, como cuando IBM hizo la transicin de su lnea desde los
antiguos juegos de instrucciones de 32/48 ("IMPI") al PowerPC de 64 bits
(IMPI no tena nada que ver con el PowerPC de 32 bits, as que fue incluso
una transicin mayor que la de un juego de instrucciones de 32 bits a su
equivalente de 64 bits). Mientras las arquitecturas de 64 bits
incontestablemente hacen ms sencillo el trabajar con grandes conjuntos de
datos en aplicaciones como el vdeo digital, computacin cientfica y
grandes bases de datos, ha habido un debate considerable sobre si los
modos de compatibilidad co n 32 bits sern ms rpidos que los sistemas
de 32 bits del mismo precio para otras tareas. En las arquitecturas x86-64
(AMD64 y EM64T, IA-32e), la mayora de los sistemas operativos de 32 bits
y aplicaciones pueden ejecutarse sin problemas en el hardware de 64 bits.

Las mquinas virtuales de JAVA de 64 bits de Sun son ms lentas en el
arranque que las de 32 bits porque Sun sigue asumiendo que todas las
mquinas de 64 bits son servidores y slo han implementado el compilador
de "servidor" (C2) para plataformas de 64 bits. El compilador "cliente" (C1)
produce cdigo ms lento, pero compila mucho ms rpido. As que aunque
un programa Java en una JVM de 64 bits puede funcionar mejor en un
periodo grande de tiempo (tpico de aplicaciones "servidoras" de ejecucin
larga), su tiempo de arranque ser probablemente mucho mayor. Para
aplicaciones de vida corta (como el compilador de Java, javac) el
incremento en el tiempo de arranque puede dominar el tiempo de ejecucin,
haciendo la JVM de 64 bits ms lenta en conjunto. Debera notarse que la
velocidad no es el nico factor a considerar en una comparacin de
procesadores de 32 bits y 64 bits. Usos como la multitarea, las pruebas de
carga y el clustering (para computacin de alto rendimiento) pueden ser ms
idneos para una arquitectura de 64 bits teniendo en cuenta un desarrollo
correcto. Los clusters de 64 bits han sido ampliamente usados en grandes
organizaciones como IBM, Vodafone, HP y Microsoft, por esta razn. An
asi estaremos "obligados" a migrar a 64 bits antes del "Efecto 2038", por un
bug referido con el tiempo (muy similar al "Efecto 2000") y que afecta a
sistemas Unix y basados en Unix, ya que la representacin del tiempo es
basada en el sistema POSIX, que se basa en contar el nmero de segundos
transcurridos desde el 1 de enero de 1970 a las 00:00:00 (ignorando los
segundos intercalares).En la mayoria de los sistemas de 32 bits time_t es un
entero de 32 bits con signo, y una vez que el valor llege a 2.147.483.647
(2038-19-01 03:14:07 UTC)al segundo siguiente saltara al valor -
2.147.483.648 (1901-13-12 o 1970-01-01). En cambio, en la mayoria de los
sistemas de 64 bits se utilizan enteros de 64 bits en time_t, lo cual soluciona
el problema por unos miles de millones de aos. Pros y contras Un error
comn es, que las arquitecturas de 64 bits no son mejores que las de 32
bits a menos que el ordenador tenga ms de 4 GB de memoria. Esto no es
completamente cierto: * Algunos sistemas operativos reservan porciones de
espacio de direcciones de procesos para uso del SO, reduciendo el espacio
total de direcciones disponible para mapear memoria para programas de
usuario. Por ejemplo, las DLLs de Windows XP y los componentes de
usuario del SO estn mapeados en cada espacio de direcciones de
proceso, dejando slo entre 2 y 3.8 GB (dependiendo de la configuracin)
de espacio de direcciones disponible, incluso si el ordenador tiene 4 GB de
RAM. Esta restriccin no est presente en el Windows de 64 bits. * El
mapeado en memoria de archivos es menos til con arquitecturas de 32
bits, especialmente con la introduccin de tecnologa de grabacin de DVD
relativamente barata. Un archivo de 4 GB ya no es inusual y tales archivos
grandes no pueden ser mapeados fcilmente con arquitecturas de 32 bits;
slo se puede mapear una regin del archivo en el espacio de direcciones y
para acceder al archivo usando mapeado de memoria, estas regiones
tendrn que mapearse dentro y fuera del espacio de direcciones segn sea
necesario. Esta es una cuestin clave, ya que el mapeado de memoria es
uno de los mtodos ms eficientes para transportar datos del disco a la
memoria, cuando es correctamente implementado por el SO. La principal
desventaja de las arquitecturas de 64 bits es que, con respecto a las
arquitecturas de 32 bits, los mismos datos ocupan ligeramente ms espacio
en memoria (debido al crecimiento de los punteros y posiblemente otros
tipos y al relleno para alineamiento). Esto incrementa los requisitos de
memoria de un proceso dado y puede tener implicaciones para el uso
eficiente de la cach del procesador. Mantener un modelo parcial de 32 bits
es una manera de manejar esto y es en general razonablemente efectivo.
De hecho, el

sistema operativo de altas prestaciones Z/OS ha escogido este enfoque
actualmente, requiriendo que el cdigo de programa resida en varios
espacios de direcciones de 32 bits mientras que los objetos de datos
pueden (opcionalmente) residir en regiones de 64 bits. Actualmente,
muchos programas comerciales estn construidos como cdigo de 32 bits,
no de 64 bits, as que no pueden obtener ventajas de los grandes espacios
de direcciones de 64 bits o de registros de 64 bits ms anchos y las rutas de
datos en procesadores de 64 bits o, en procesadores x86, de los registros
adicionales en el modo de 64 bits. Sin embargo, los usuarios de sistemas
operativos libres o de cdigo abierto han podido utilizar entornos exclusivos
de 64 bits durante aos. No todas las aplicaciones necesitan un gran
espacio de direcciones o manipular elementos de 64 bits, as que no se
beneficiaran de los grandes espacios de direcciones o de los registros ms
anchos y las rutas de datos; el principal beneficio para las aplicaciones de
64 bits que no se beneficiaran de nada de esto sera que las versiones x86
podran usar ms registros. Disponibilidad del Software

Los sistemas de 64 bits algunas veces carecen de software equivalente
escrito para arquitecturas de 32 bits. Los problemas ms graves son
debidos a controladores de dispositivo incompatibles. Aunque gran parte del
software puede ejecutarse en modo de compatibilidad con 32 bits (tambin
conocido como un modo emulado, p. ej. la Tecnologa Microsoft WoW64),
normalmente es imposible ejecutar un driver (o un programa similar) en ese
modo ya que habitualmente se ejecuta entre el SO y el hardware, donde no
se puede usar la emulacin directa. Muchos paquetes de software de
cdigo abierto pueden simplemente ser compilados desde las fuentes

para trabajar en un entorno de 64 bits en sistemas operativos como Linux.
Todo lo que se necesitara en este caso es un compilador (normalmente
GCC) para la mquina de 64 bits. Modelos de datos de 64 bits La
conversin de aplicaciones escritas en lenguajes de alto nivel desde una
arquitectura de 32 bits a una de 64 bits vara en dificultad. Un problema
comn recurrente es que algunos programadores asumen que los punteros
tienen la misma longitud que otros tipos de datos. Los programadores
asumen que pueden transferir cantidades entre estos tipos de datos sin
perder informacin. Estos supuestos se dan realmente en algunas
mquinas de 32 bits (e incluso en algunas de 16 bits), pero no se dan en
mquinas de 64 bits. El lenguaje de programacin C y su descendiente el
C++ hacen particularmente fcil cometer este tipo de errores. Para evitar
este error en C y C++, se puede utilizar el operador sizeof para determinar
el tamao de estos tipos primitivos si se necesitan tomar decisiones
basadas en el tamao en tiempo de ejecucin. Tambin la cabecera en el
estndar C99 y la clase numeric_limits en la cabecera en el estndar de
C++, dan ms informacin til; sizeof slo devuelve el tamao en
carcteres, lo que es a veces engaoso, porque el propio tamao de un
carcter (CHAR_BITS) no est definido de la misma manera en todas las
implementaciones de C o C++. Se necesita ser cuidadoso para usar el tipo
ptrdiff_t (en la cabecera estndar ) para el resultado de restar dos punteros,
demasiado cdigo incorrecto utiliza "int" o "long" en su lugar. Para
representar un puntero (ms que un puntero diferencia) como un entero, se
usa uintptr_t cuando est disponible (slo est definida en C99, pero
algunos compiladores anteriores al estndar lo cumplen ofrecindolo como
una extensin). Ni C ni C++ definen la longitud de un puntero, ni de datos int
ni long a un nmero de bits especficos. En muchos entornos de
programacin en mquinas de 32 bits, los punteros, las variables "int" y las
variables "long" tienen todos 32 bits de longitud. Sin embargo, en muchos
entornos de programacin en mquinas de 64 bits, las variables "int" siguen
teniendo 32 bits de longitud y los punteros tienen 64 bits de longitud. Son
descritos como poseedores de un modelo de datos LP64. Otra alternativa
es el modelo de datos ILP64 en el que los tres tipos de datos tiene 64 bits
de longitud. No obstante, en muchos casos las modificaciones necesarias
son relativamente menores y sencillas, y muchos programas bien escritos
pueden ser simplemente recompilados para el nuevo entorno sin cambios.
Otra alternativa es el modelo de datos LLP64 que mantiene la
compatibilidad con el cdigo de 32 bits dejando tanto int como long con 32
bits de longitud. "LL" hace referencia al tipo "long long", que tiene al menos
64 bits en todas las plataformas, entornos de 32 bits incluidos. Muchos
compiladores de 64 bits actuales usan el modelo LP64 (incluyendo Solaris,
AIX, HP, Linux y los compiladores nativos de MacOS). El compilador VC++
de Microsoft usa el modelo LLP64 que es ms compatible retroactivamente.
Advierta que la eleccin de un modelo de programacin se hace al compilar,
y varios modelos pueden coexistir en el mismo SO. No obstante,
generalmente suele predominar el modelo de programacin elegido por la
API del sistema operativo como modelo primario. Otro detalle a tener en
cuenta es el modelo de datos usado para los controladores de dispositivos.
Los controladores de dispositivos conforman la mayor parte del cdigo del
sistema operativo en la mayora de los sistemas operativos modernos
(aunque muchos puedan no ser cargados mientras el sistema operativo se
ejecuta). Muchos controladores hacen un frecuente uso de punteros para
manipular datos, y en algunos casos han de cargar punteros de un tamao
determinado en el hardware que soportan para realizar DMA. Por ejemplo,
un controlador para un dispositivo PCI de 32 bits solicitando al dispositivo
transferir datos usando DMA

a reas superiores de la memoria de una mquina de 64 bits podra no
satisfacer las peticiones del sistema operativo de cargar datos desde el
dispositivo a la memoria por encima de la barrera de los 4 gibibytes, pues
los punteros para esas direcciones no cabran en los registros DMA del
dispositivo. Este problema se soluciona haciendo que el sistema operativo
tenga en cuenta las restricciones de memoria del dispositivo a la hora de
generar peticiones de DMA a los dispositivos, o bien usando una IOMMU.

Arquitecturas de microprocesador de 64 bits actuales
Las arquitecturas de microprocesador de 64 bits (a fecha de 2006)
comprenden: * La arquitectura DEC Alpha (vase la cronologa de Digital
Alpha) * La arquitectura IA-64 de Intel (usada en las CPUs Itanium de Intel) *
La arquitectura AMD64 de AMD (previamente conocida como x86-64), una
versin de 64 bits de la arquitectura x86 (usada en las CPUs Athlon 64,
Opteron, Sempron y Turion 64). o Intel usa ahora el mismo conjunto de
instrucciones en los procesadores Pentium 4 y Xeon nuevos y en los
procesadores Core 2 Duo, llamndola Intel 64 (previamente conocida como
EM64T, originalmente IA-32e). Los fabricantes de software Microsoft y Sun
llaman a este conjunto de instrucciones "x64". * La arquitectura SPARC (de
64 bits desde SPARC V9) o La arquitectura UltraSPARC de Sun o La
arquitectura SPARC64 de Fujitsu * La arquitectura POWER de IBM (de 64
bits desde POWER3 y las variantes RS64) * La arquitectura PowerPC de
IBM/Motorola (el

PowerPC 620 de 64 bits y las variantes PowerPC 970) * La arquitectura
z/Architecture de IBM, usada por los mainframes zSeries y System z9, una
versin de 64 bits de la arquitectura ESA/390 * Las arquitecturas MIPS IV,
MIPS V, y MIPS64 de MIPS Technologies * La familia PA-RISC de HP (de
64 bits desde el PA-RISC 2.0) Muchas arquitecturas de procesador de 64
bits pueden ejecutar nativamente cdigo de la versin de 32 bits de la
arquitectura sin ninguna penalizacin en el rendimiento. Este tipo de soporte
se conoce frecuentemente como soporte biarquitectura o ms generalmente
como soporte multiarquitectura. Ms all de los 64 bits A fecha de 2007, las
palabras de 64 bits parecen ser suficientes para la mayora de usos
prcticos. Aun as, debera mencionarse que el System/370 de IBM usa
nmeros de coma flotante de 128 bits, y muchos

procesadores modernos incluyen registros de coma flotante de 128 bits. Sin
embargo, el System/370 era notable, en que tambin usaba nmeros
decimales de longitud variable de hasta 16 bytes de longitud (por ejemplo
de 128 bits).