64 bitsÚltimamente muchas personas se preguntan acerca de que es eso de los 32 o 64 bits del sistema operativo puesto que desde Windows Vista y en Windows 7 vemos claramente 2 versiones diferenciadas de cada uno de los sistemas operativos: una de 32 bits y otra de 64 bits. Otras personas, sin embargo, tienen un sistema de 64 bits sin saberlo en su ordenador o portátil recién comprado y se vuelven locos a la hora de instalar controladores (drivers) puesto que los controladores "normales", los de siempre, que son los de 32 bits, no les funcionan o no los pueden instalar.

Recordemos que el sistema operativo más utilizado de todos los tiempos, Windows XP, era un sistema de 32 bits. También hubo una versión de 64 bits de Windows XP que salió más tarde y que debido al poco soporte que tuvo de la industria, la falta de controladores, la falta de aplicaciones de 64 bits y la incompatibilidad de muchas aplicaciones de 32 bits hizo que apenas fuese utilizado por nadie y que pasase sin pena ni gloria ya que muy pocas personas tuvieron conocimiento de esta versión de Windows.

Con la aparición de Windows Vista, Microsoft ya apostó desde el principio por una versión de 64 bits, y ya desde su lanzamiento, la versión a 64 bits contaba con prácticamente los mismos controladores que los de la versión a 32 bits. Además la mayoría de fabricantes de componentes y dispositivos comenzaron también a poner disponibles los controladores a 64 bits junto con los de 32 bits. Todo esto provocó, a pesar del desconocimiento de la arquitectura de 64 bits, una fácil adopción y migración a los sistemas a 64 bits en los ordenadores personales.

Ya con la aparición de Windows 7, los fabricantes de muchos sistemas, incluso portátiles, que llevan instalados de serie 4 GB o más de memoria, ya incluían una versión de 64 bits instalada del sistema operativo Windows 7.

El procesador.

En realidad, al referirnos a los 32 o 64 bits de un sistema nos estamos refiriendo al procesador. Desde el año 2.004 todos los procesadores de Intel y AMD soportan instrucciones, registros y direcciones de memoria de 64 bits extendiendo la anterior arquitectura de 32 bits. Estos procesadores integran toda la arquitectura de 32 bits más una arquitectura extendida de 64 bits, lo que los hacen 100% compatibles con todos los sistemas operativos y programas desarrollados a 32 bits.

Para poder aprovechar toda esta arquitectura de 64 bits es necesario disponer de un sistema operativo, de controladores (drivers) y de programas de 64 bits. Si bien las versiones de 64 bits de tanto Windows Vista y más aún de Windows 7 pueden ejecutar perfectamente aplicaciones a 32 bits, algunas incompatibilidades y la falta de algunos drivers o incluso equipos con poca memoria RAM han hecho que ha pesar de tener procesadores de 64 bits, se hayan seguido instalando sistemas operativos de 32 bits, puesto que estos procesadores de 64 bits son 100% compatibles con la arquitectura anterior de 32 bits.

Bits.

Bit es el acrónimo de Binary Digit (dígito binario). Un bit es un dígito del sistema de numeración binario. Mientras que en el sistema de numeración decimal se usan diez dígitos, en el binario se usan sólo dos dígitos, el 0 y el 1. Un bit o dígito binario puede representar uno de esos dos valores, 0 ó 1. Se puede imaginar un bit, como un interruptor o una bombilla que puede estar en uno de los siguientes dos estados: encendido o apagado. El bit es la unidad mínima de información empleada en informática, en cualquier dispositivo digital, o en la teoría de la información. Con él, podemos representar dos valores cuales quiera, como verdadero o falso, abierto o cerrado, blanco o negro, norte o sur, masculino o femenino, rojo o azul, etc. Basta con asignar uno de esos valores al estado de "apagado" (0), y el otro al estado de "encendido" (1).

Cuando se habla de procesadores de 4, 8, 16, 32, 64 bits, se refiere al tamaño, en número de bits, que tienen los registros internos del procesador y también a la capacidad de procesamiento de la unidad aritmético lógica (ALU). Un procesador de 4 bits tiene registros de 4 bits y la ALU hace operaciones con los datos en esos registros de 4 bits, mientras que un procesador de 8 bits tiene registros y procesa los datos en grupos de 8 bits.

Los procesadores de 16, 32 y 64 bits tienen registros y ALU de 16, 32 y 64 bits respectivamente, y generalmente pueden procesar los datos, tanto en el tamaño en bits de sus registros como, dependiendo que su diseño lo permita, en determinados submúltiplos de éstos. Así, un procesador de 16 bits puede procesar los datos en grupos de 8 y 16 bits, comportándose como si fuera un procesador tanto de 8 como de 16 bits. Un procesador de 32 bits puede procesar los datos en grupos de 8, 16 y 32 bits, y el procesador de 64 bits puede procesar los datos en grupos de 8, 16, 32 y 64 bits. Para poder hacer esto, los procesadores de 16, 32 y 64 bits generalmente tienen sus registros divididos en otros registros más pequeños. Así, los registros de un procesador de 32 bits, por ejemplo, pueden estar divididos a su vez en registros de 16 y 8 bits y puede hacer operaciones aritméticas, lógicas, de comparaciones, y otras, con cualquiera de sus registros en cualquiera de estos tamaños.

Limitaciones de memoria.

Hasta el año 2.010 la mayoría de los procesadores estaban diseñados para que los contenidos de un único registro pudieran almacenar la dirección de memoria de cualquier dato en la memoria virtual. Por tanto, el número total de direcciones en memoria virtual, es decir, la suma total de datos que la computadora puede mantener en su área de trabajo, es determinado por el ancho de estos registros. Empezando en los años 1960 con el IBM S/360, luego (entre muchos otros) la computadora VAX de DEC en los años 1970 y luego con el procesador Intel 80386 a mediados de los años 1.980, un consenso de facto instauró que 32 bits era un tamaño conveniente de registro. Un registro de 32 bits significa que se pueden referenciar 232 direcciones o 4 gigabytes de memoria RAM. En el momento en que estas arquitecturas fueron concebidas, 4 gigabytes de memoria estaban muy lejos de las cantidades disponibles en instalaciones ya que se consideraba más que suficiente "espacio" para direccionamiento. Las direcciones de 4 gigabytes se consideraban un tamaño apropiado con el que trabajar por otra importante razón: 4 mil millones de enteros son suficientes para asignar referencias únicas a la mayoría de cosas físicamente contables en aplicaciones como bases de datos.

No obstante, con el paso del tiempo y las continuas reducciones en el coste de la memoria (véase la Ley de Moore), al comienzo de los años 1.990, comenzaron a aparecer instalaciones con cantidades de RAM próximas a los 4 gigabytes, y comenzó a ser deseable el uso de espacios de memoria virtual que superaban el límite 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 supercomputadoras, estaciones de trabajo de grandes prestaciones y servidores. Los ordenadores de 64 bits se han ido moviendo hacia la computadora personal, comenzando en 2003 con la innovadora tecnología AMD64 (denominada genéricamente x86-64 por su completa compatibilidad inversa con los sistemas x86), los AMD's K8 (Athlon 64) y la arquitectura PowerPC de Macintosh de Apple Computer con los procesadores PowerPC 970 G5 Antares, y a los procesadores EM64T de Intel en el 2004, basados también en tecnología x86-64 y llegando a ser comunes en los ordenadores actuales. La aparición de la arquitectura de 64 bits efectivamente incrementa el límite a 264 direcciones, equivalente a 17,179,869,184 gigabytes o 16 exabytes de RAM. Para poner esto en perspectiva, en los días en que 4 MB de memoria principal eran comunes, el límite máximo de memoria de 232 direcciones era unas 1000 veces mayor que la configuración típica de memoria. En el año 2007, cuando 1 GB de memoria RAM era común, el límite de 264 es unos diez mil millones de veces superior, es decir diez millones de veces más de espacio.

Arquitecutra x86.

x86 es la denominación genérica dada toda una gama de procesadores de la familia Intel, sus compatibles y la arquitectura básica a la que estos procesadores pertenecen por la terminación de sus nombres numéricos: 8086, 80286, 80386, 80486, etc.

En 1.978, Intel comenzó a comercializar el procesador 8086 que funcionaba a 16 bits en versiones que iban desde los 4,77 hasta los 10 MHz. IBM adoptó al hermano menor del 8086 (el 8088, un procesador con un bus de datos interno de 16 bits, pero con el bus externo de 8 bits, lo que permitía aprovechar diseños y circuitos para sistemas de 8 bits) para basarse en él y lanzar la línea de computadoras más exitosa de la historia: el IBM PC (1.981) y el IBM XT (eXtended Technology) (1.983).

El éxito de esta serie fue tal que a partir de ese momento, todos los procesadores (CPUs) de Intel mantuvieron una estricta política de compatibilidad hacia atrás. Todo procesador fabricado por Intel desde ese momento y hasta el 2.001 es capaz de ejecutar código compilado para cualquiera de sus predecesores.

Al 8086 lo sucedió el 80286 en 1.982 (en el cual se basó el IBM PC/AT, 1.985). Este chip, de 24/16 bits, implementó el modo protegido de ejecución, sentando las bases para la aparición de los primeros verdaderos sistemas multitarea de escritorio. El 80286 apareció a 6 MHz, y a lo largo de los años llegó hasta los 12 MHz. Hubo varios sistemas operativos que aprovecharon su modo protegido para ofrecer multitarea real, tales como las primeras versiones de OS/2, o Xenix.

Pero el verdadero boom de la multitarea no llegó hasta el nacimiento del 80386 en 1.985. Un avance tan fuerte que hoy en día es común referirse como i386 a toda la línea de procesadores que le siguieron (también es común la referencia IA32, Intel Architecture of 32 bits). El 386 fue el primer procesador de Intel de 32 bits, y una gran noticia para los desarrolladores era que utilizarlo para aplicaciones de multitarea sería ya mucho más fácil de lo que lo fue con el 80286. El 80386 manejaba velocidades que iban de 16 a 33 MHz.

Posteriormente Intel lanzó nuevos procesadores basados en esta arquitectura, pero ya todos de 32 bits, como el 80486, el Pentium, Pentium Pro, Pentium II, Pentium III y Pentium 4. El Pentium 4 debutó a 1.3 GHz y en noviembre del 2.005 llegaba ya a los 3,80 GHz. Con todo, la carrera de los MHz se vio frenada debido al creciente consumo de energía y generación de calor producido por los microprocesadores a altas frecuencias de reloj, que en los últimos Pentium 4 superó fácilmente los 100W.

64 bits.

En arquitectura de computadoras, 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 procesadores y unidades aritmético-lógicas (ALU) basadas en registros, bus de direcciones o bus de datos de ese ancho.

Los procesadores de 64 bits han existido en las supercomputadoras desde 1.960 y en servidores y estaciones de trabajo basadas en RISC desde mediados de los años 1.990. En 2.003 empezaron a ser introducidos masivamente en los ordenadores personales (previamente de 32 bits) con las arquitecturas x64 y en los procesadores PowerPC G5.

En el año 2.003, AMD sacó a la luz sus líneas de procesadores con arquitectura de 64 bits, AMD64 Opteron y Athlon 64. Apple lanzó también sus procesadores PowerPC 970 "G5" de 64 bits por cortesía de IBM, junto con una actualización de su sistema operativo Mac OS X, que añadía soporte parcial para el modo de 64 bits. Se publicaron varias distribuciones Linux con soporte para AMD64. Microsoft anunció que crearía una versión de su sistema operativo Windows para estos procesadores de AMD, de ahí la versión a 64 bits de Windows XP que hablábamos al principio. Intel sostuvo equivocadamente en esta época que sus procesadores Itanium serían sus únicos procesadores de 64 bits. Un año después Intel adoptar la arquitectura de 64 bits de AMD para sus procesadores Pentium y Xeon así como para todas sus gamas futuras hasta la fecha.

La arquitectura AMD64 representa un cambio con el pasado de AMD cuyo comportamiento era seguir los estándares de Intel y aunque mantiene los comportamientos anteriores de Intel, extiende la arquitectura del x86, que va desde los 16 bits del 8086 hasta los 32 bits del 80386, siempre sin eliminar compatibilidad hacia atrás. La arquitectura del AMD64 es la arquitectura de 32 bits del x86 (IA-32) añadiendo registros de 64 bits, con modos de total compatibilidad de 32 bits y 16 bits para software ya existente. Incluso el modo de 64 bits permite compatibilidad hacía atrás, facilitando a las herramientas del x86, como los compiladores, ser modificados a la arquitectura AMD64 con un esfuerzo mínimo. La arquitectura del AMD64 dispone de características como el bit NX.

Durante mucho tiempo de la historia, AMD ha producido y distribuido procesadores basados en los diseños originales de Intel, pero en un giro de la historia, Intel, al ver la oportunidad, adoptó la arquitectura x86-64 de AMD, creada como una extensión de su propia línea de procesadores x86. Intel adopta la arquitectura de 64 bits de AMD en 2.004, a la cual llamó IA-32e y posteriormente renombró como EM64T y posteriormente renombró a Intel 64 que es como se llama en la actualidad quizá para asemejarse al nombre de esta arquitectura de su competidor AMD, que la denomina AMD64. Se lanzaron versiones actualizadas de sus familias de procesadores Xeon y Pentium 4 que soportaban las nuevas instrucciones de 64 bits.

Aunque existe un alto nivel de compatibilidad a nivel binario entre las tecnologías de 64 bits de Intel y AMD, se pueden encontrar pequeñas diferencias entre los dos conjuntos de instrucciones. Un ejemplo menor es el añadido de la instrucción CMPXCHG16B (que intercambia dos palabras de 64 bits), una extensión de la instrucción CMPXCHG8B presente en la mayoría de los procesadores x86 del mercado. Los primeros procesadores AMD con arquitectura de 64 bits no disponían de esta instrucción, aunque los primeros procesadores de Intel basados en esta arquitectura sí se la incluyeron.

Arquitectura x64.

Al igual que se denominaba x86 a toda una familia de procesadores que iban desde los 16 bits hasta los 32 bits, se denomina x64 a la arquitectura actual de estos mismos procesadores con las extensiones de 64 bits incluidas en el año 2.003 por AMD y en el año 2.004 por Intel. En la actualidad se entiende por x86 a la arquitectura de 32 bits, y x64 a la de 64 bits. En algunos casos se llega a denominar x32 a la arquitectura de 32 bits en vez de x86.

x64 es una arquitectura basada en la extensión del conjunto de instrucciones x86 para manejar direcciones de 64 bits. Además de una simple extensión, contempla mejoras adicionales como duplicar el número y el tamaño de los registros de uso general y de instrucciones multimedia SSE.

La importancia del desarrollo de los 64 bits se debe motivado por el hecho de que los 4 GB de memoria que son direccionables directamente por un procesador de 32 bits ya no son suficientes para todas las aplicaciones.

Los principales cambios, mejoras o añadidos a la arquitectura de 64 bits son los siguientes:

  • Nuevos registros. El número de registros de propósito general se ha incrementado de 8 en los procesadores x86-32 a 16, y el tamaño de todos estos registros se ha incrementado de 32 bits a 64 bits. Adicionalmente, el número de registros MMX de 128 bits (usados para las instrucciones extendidas SIMD) se ha incrementado de 8 a 16. Los registros adicionales incrementan el rendimiento.

  • Registros XMM (SSE) adicionales: Igualmente el número de registros de 128 bits (usados para las instrucciones SSE) han aumentado de 8 a 16.

  • Espacio de direcciones mayor. Debido a la arquitectura de 64 bits, se pueden direccionar hasta 16 exabytes de memoria RAM. Esto, comparado con los 4 GB del x86-32, de los que sólo la mitad está disponible para aplicaciones en la mayoría de las versiones de 32 bits de Microsoft Windows, el sistema operativo dominante en entornos domésticos y la memoria virtual de todos los programas en el modo de 32 bits está limitada a 3 GB.

  • Instrucción de acceso a datos relativa al puntero: Las instrucciones ahora pueden hacer referencias relativas al puntero de instrucciones (registro RIP). Esto permite crear código independiente de la posición que permite un código mucho más eficiente en bibliotecas dinámicas y código cargado en tiempo de ejecución.

  • Llamadas al sistema más rápidas. Debido a que la segmentación no está soportada en el modo de 64 bits, las llamadas al sistema no tienen las latencias asociadas con almacenar y recuperar la información de segmentación ni tienen que realizar las comprobaciones necesarias de protección a nivel de segmentación. Por lo tanto, se ha introducido una nueva interfaz de llamadas al sistema, al que se accede utilizando solamente la instrucción "SYSCALL". Aunque los sistemas operativos todavía pueden utilizar el sistema de interrupciones para las llamadas al sistema, en el modo de 64 bits utilizar "SYSCALL" es más rápido.

  • Instrucciones Multimedia SSE. La arquitectura de 64 bits incluye las extensiones de Intel SSE y SSE2 y los últimos procesadores incluyen SSE3 también. También están soportadas las instrucciones del x86 y las antiguas extensiones multimedia MMX.

  • Bit NX. El bit NX es una característica del procesador que permite al sistema operativo prohibir la ejecución del código en área de datos, mejorando la seguridad. Esta características está disponible en los modos de 32 y 64 bits, y está soportada por Linux, Solaris, Windows XP SP2, Windows Server 2003 SP1 y todas las versiones actuales de los principales sistemas operativos como Windows 7, Linux, etc.
  •  

    ¿128 Bits?

    Un falso rumor muy extendido por la red el año pasado era que la futura versión de Windows, Windows 8, se desarrollaría exclusivamente a 128 bits. Ni existen en la actualidad procesadores a 128 bits ni existen planes para desarrollarlos. Este rumor podría ser una mala interpretación de un soporte para discos duros o unidades de coma flotante (FPUs) con punteros y registros de 128 bits.

    El mayor motivo del cambio de los 32 bits a los 64 bits era la limitación de memoria RAM a 4 GB en los sistemas a 32 bits. En la actualidad, con los sistemas a 64 bits esta limitación alcanza los 16 exabytes de memoria (16,8 millones de Terabytes). Siguiendo la ley de Moore quedarían más de 50 años para necesitar esa cifra, y sinceramente es más que probable que la arquitectura actual no dure tanto tiempo. Con 16 exabytes de memoria RAM se podrían direccionar todos los datos que hay ahora mismo en el mundo.

    También es cierto que la mayoría de los procesadores actuales tienen varios registros de 128 bits. Las extensiones SSE los necesitan para realizar cálculos matemáticos útiles sobre todo para operaciones multimedia, aunque en realidad no trabajan con datos de 128 bits sino con varios datos de longitud menor (32-bit, 64-bit, etc) de manera simultánea. En esto se podría estar trabajando para Windows 8, pero hay que tener en cuenta que las versiones anteriores de Windows ya usan cuando pueden SSE, así que no hay nada nuevo.

    Por otro lado, AMD ha venido aireando durante un tiempo las instrucciones de 128 bits con su propuesta de SSE5, ahora partida en varios subcomponentes y que se supone lista para 2011 cuando salga al mercado su procesador Bulldozer. Intel se ha sumado a la guerra con AVX (Advanced Vector eXtensions), otro conjunto de instrucciones incompatible con el anterior y que incluso define registros de 256 bits, pero con la arquitectura en sí trabajando con 64 bits. En la actualidad AMD ha incluido la tecnología AVX de Intel en sus nuevos procesador Bulldozer en detrimento de su propia tecnología SSE5.

    ¿256 bits, 384 bits?

    También vemos que muchas tarjetas gráficas nos hablan de que funcionan a 256 o 384 bits. En realidad se refieren al ancho en bits del bus de la memoria. A mayor ancho en bits, mayor ancho de banda en teoría y con las velocidades de las memorias GDDR5 utilizadas en estas tarjetas gráficas, se pueden conseguir esas velocidades en los buses de memoria.



    Fuentes: Genbeta, Intel, Wikipedia