jueves, 16 de marzo de 2017

Diferencias entre i386, x86, x64, AMD64 e IA64

Habitualmente habreis encontrado un programa para descarga, y habreis visto que en lugar de haber un solo botón, dan opción para su descarga con distintos textos, como por ejemplo "ubuntu-16.04.2-desktop-amd64.iso" o bien "ubuntu-16.04.2-desktop-i386.iso". En este ejemplo los dos archivos son una ISO, pero ambos varían en que una imagen es para i386 y otra para amd64.

Estas diferencias son importantes, ya que afectan al procesador bajo el que funciona la aplicación, de manera que si descargas la version de procesador incorrecta, la aplicación fallará. Veamos las diferencias:

x86: 

Son programas diseñados para los juegos de instrucciones de la arquitectura Intel8086. Hablamos de arquitectura de procesadores Intel de 1978, cuando los primeros pc´s de sobremesa para los usuarios. Obviamente, hoy dia, cuando buscas un programa medianamente actual y lo encuentras con esta nomenclatura, realmente se refieren a la i386. Es más, esta nomenclatura se diseñó para procesadores de 16 bit.

i386:

Los i386 son la tercera generación de procesadores x86, llamada Intel80386. El procesador con instrucciones i386 fue lanzado en 1985 pero cesaron su producción en 2007. La diferencia principal de las instrucciones i386 frente a las x86 es el direccionamiento de 32 bits.
Aunque llevamos funcionando con procesadores preparados para 64 bits desde hace años, todavía se crean aplicaciones compatibles con i386. La razón es que aunque el procesador Intel 80386 se creó el siglo pasado, las diferentes versiones de procesadores superiores a este, pero basados en direccionamiento de 32 bits han mantenido compatibilidad con este juego de instrucciones. También se le conoce como IA-32.
IA64: IA64 hace referencia al juego de instrucciones de los procesadores Intel Itanium para servidores. Una arquitectura que funcionaba con direccionamiento de 64 bits unicamente, y que no pisó los equipos de los usuarios, manteniendose en servidores, debido a la potencia de proceso. Un programa con la nomenclarura IA64 solo funcionará con procesadores Intel Itanium, no sobre cualquier procesador intel.

AMD64, x64, EM64T: 

Bajo todas estas nomenclaruras hay una interesante historia. Allá por el año 2003, el mercado de procesadores para el mercado doméstico se encontraba repartido entre Intel y AMD, con sus Pemtium III y sus AMD K7, respectivamente. En esa época Intel se encontraba batallando con procesadores Power PC y los de arquitectura Sparc con sus Intel Itanium y su nuevo juego de instrucciones. El salto de los 16 a los 32 bit en equipos de usuario se dio en torno a 1985, y se empezaba a vislumbrar la necesidad de cambiar a arquitectura de 64 bit, pero Intel no tenia prisa, y la arquitectura Itanium era cara para equipos de sobremesa.
Pero AMD se les adelantó, ¡y de qué manera! Mientras que la arquitectura IA64 solo funcionaba en 64 bits, AMD comercializó su CPU AMD Opteron, tambien conocido como AMD K8 con  el juego de instrucciones x86_64, cuya novedad más llamativa es la inclusión del juego de instrucciones x86 completo de 16 y 32 bit, permitiendo en su nuevo procesador la ejecucion de aplicaciones antiguas, de forma nativa, así como programas desarrollados para el nuevo juego de instrucciones de 64 bit. Y en un procesador comercializado tanto para entornos empresariales como para usuarios domesticos y de oficina.

El susto de Intel fue importante, de forma que tuvieron que aparcar la familia de procesadores Itanium, y modificar a la carrera su gama de procesadores i386 para compatibilizarla con el juego de instrucciones actualizado por AMD. Así llegaron los primeros procesadores Pentium 4 de Intel como llegaron...reportando problemas de calentamiento importantes, y eso que corrian en sus inicios a poco más de 1 Ghz. Pero eso ya es otra historia. Para entorno empresarial, en cambio, Intel desarrolló la gama Xeon, viendose obligada por tema de costes a abandonar la arquitectura Itanium. A sus dos tipos de procesador, en cambio, la implementación de AMD64 la llamó de otra manera, EM64T, en referencia a "Extended Memory Technology"


Si has llegado hasta este punto del artítulo y no eres conocedor de estos temas, estarás todo el rato preguntandote lo mismo: ¿y eso, en qué me afectan? Que diferencias hay entre 32 y 64 bits? Pues, y para no hacer la respuesta muy pesada, lo simplificaré: para el usuario, no hay diferencia, ya que el trabajo del procesador es transparente para el usuario. La diferencia es cómo un procesador ejecuta una orden. Un proceso de un programa ejecutado en 32 bits puede requerir más ciclos de reloj para ser llevada a cabo que el mismo proceso en un programa de 64 bits, que en el mismo ciclo de reloj, incluye más ordenes para su ejecución. Que traducido al castellano, significa que el trabajo se ejecuta en menos tiempo.

Una forma de verificar esto es con un programa de compresión de archivos. Ejecuta un winzip o similar instalado en 32 bits y comprime algo grande, como una ISO de Windows o una pelicula en formato MKV. Luego haz lo mismo con el mismo programa pero instalado en 64 bits. Verás la diferencia.

1 comentario:

¡Gracias por colaborar en este blog con tus comentarios! :)