¿Por qué Intel y AMD deberían abandonar los 32 bits en sus CPUs x86?

Intel-procesadores

Desde que AMD lanzo su procesador Opteron y sus Athlon64 han llovido ya casi 20 años, pero, la transición de los 32 bits a los 64 bits en x86 no se ha acabado de producir del todo, especialmente por el hecho que hay una gran cantidad de software que no funciona en los 64 bits. ¿Ha llegado el momento de abandonar los 32 bits en x86 y forzar la transición y por qué?

Para muchos el mantener la compatibilidad hacía atrás con los 32 bits no deja de ser una anécdota que no afecta al rendimiento de sus PCs, no obstante mantener dicha compatibilidad también supone mantener la forma en la que todas y cada una de las instrucciones de 64 bits funcionen con el mismo rendimiento que las de 32 bits al compartir estas el camino de datos.

Tanto Intel como AMD se pueden plantear una renovación de su arquitectura de 64 bits, compatible con todo el software pero con un rendimiento mucho mayor haciendo una renovación completa de la forma en la que internamente procesan cada una de las instrucciones x86 de 64 bits.

32-64-bits

Pero, ¿qué es una arquitectura de 64 bits? Se considera una arquitectura de 32 bits toda aquella que puede direccionar y por tanto acceder hasta 232 bytes de memoria RAM o lo que es lo mismo: 4 GB de memoria RAM, mientras que un procesador de 64 bits puede llegar a ver hasta 264 bytes de RAM y por tanto puede direccionar una cantidad de memoria mucho mayor de manera directa.

Poco a poco vemos como la capacidad estándar de los ordenadores que están a la venta superan la cifra de 4 GB de memoria RAM, esto significa que pueden ejecutar las versiones de 64 bits de los programas son cada vez mayores. Dado que la vida de un ordenador no es más de cinco años se llegará al punto en que todos y cada uno de los PCs en el mercado podrán ejecutar las versiones de 64 bits de los programas.

PC Genérico x86

Es por ello que la dualidad entre los 32 bits y los 64 bits en cuanto a aplicaciones debería desaparecer llegado a un punto para dejar en la papelera de la historia a las aplicaciones de 32 bits para siempre.

El origen de los 32 bits en las CPUs x86

Logox86

La arquitectura x86 es en origen una arquitectura de 16 bits que se inicio con la serie 8086/8088. La primera vez que Intel implemento una versión de 32 bits de la arquitectura fue en los 80386. Precisamente Intel tomo una decisión de diseño de cara a los registros de su procesador bastante ingeniosa: en vez de crear nuevos registros para el modo de 32 bits extendieron los de 16 bits, algo que luego AMD repitió al desarrollar la extensión a 64 bits de la arquitectura.

registros x86 32 bits

La idea de utilizar versiones extendidas de los registros en vez de nuevos registros es una forma que tuvo Intel de no tener que duplicar los caminos de datos de cada instrucción por un lado y por el otro de no hacer incompatibles las instrucciones del set original. De esta manera se aseguraron que los programas compilados para el x86 de 16 bits funcionaran en procesadores posteriores.

Desde el 80386 hasta el Intel Pentium el camino de datos de cada instrucción durante las etapas de captación y decodificación era el mismo, pero Intel a partir del Pentium Pro en adelante decidió re-hacer los caminos de datos de todas las instrucciones de 32 bits para optimizar su funcionamiento en detraimiento de las de 16 bits.

El Pentium Pro, un precursor histórico del cambio

Pentium Pro

En el Pentium Pro, Intel decidió renovar por completo todo el ciclo de instrucción de todo el conjunto de instrucciones de 32 bits a partir del Pentium Pro, mejora que no aplico sobre las instrucciones de 16 bits de tal manera que los programas de 16 bits para MS-DOS o Windows 3.1 no funcionaban mejor que en un Intel Pentium, por lo que para sacar el máximo beneficio de dicho procesador era necesario utilizar aplicaciones de 32 bits.

Al Pentium Pro se le añadieron instrucciones MMX y se convirtió en el Pentium II, fue en se momento en el que los desarrolladores tanto de aplicaciones como de sistemas operativos tuvieron muy claro que era hora de abandonar los 16 bits de una vez por todas. Lo cual se termino con el lanzamiento en 2001 de Windows XP. el primer Windows para escritorio con base NT, por aquel entonces a nadie se le ocurría desarrollar ya aplicaciones de 16 bits.

En el caso de una reforma del mismo tipo venida de la mano de Intel y/o AMD, se pueden aprovechar para volver a hacer de nuevo los caminos de datos de cada una de las instrucciones. Las consecuencias es que las aplicaciones de 32 bits no se ejecutarían con la misma celeridad que las de 64 bits, pero no habría motivo para quedarse en los 32 bits para nadie, ya que las ventajas que aportaría el salto completo a los 64 bits serían mucho mayores.

El abandono de los 32 bits en PC son clave para la estandarización del SSD

Pila de SSDs

En primer lugar hemos de entender que al contrario que en los discos duros, la memoria NAND Flash utilizada en los discos SSD puede ser direccionada como si fuese RAM. No se ha de confundir con el hecho que se pueda acceder de manera directa al contenido, ya que el SSD esta por debajo en la jerarquía. pero la alta velocidad de la interfaz PCI Express permite copiar los datos de manera muy rápida y casi transparentes a una parte de la RAM que se utilizaría como cache.

Hasta ahora a la hora de utilizar archivos de gran tamaño se utilizaba el disco duro, el cual tiene una velocidad de acceso mucho más baja y una enorme latencia, aparte de un tiempo de búsqueda enorme. Cuando se accede a un disco duro la forma de acceder al mismo no es dentro del direccionamiento de la memoria RAM sino utilizando memoria virtual y un mecanismo de acceso más lento y complejo

En cambio los discos SSD permiten el direccionamiento directo desde el programa como si fuese parte de la memoria memoria RAM, lo cual es beneficio de tener un enorme direccionamiento. Pero para ello es mejor hablar de ejemplos concretos a nivel de software.

Screenshot Sony Vegas

La ventaja es que las aplicaciones x86 para 32 bits no pueden tener acceso inmediato a más de 4 GB de memoria RAM, incluso si el direccionamiento fuese solo de 48 bits estaríamos hablando de 256 TB de memoria accesibles de manera directa. Imaginad por un momento que estáis trabajando con un video en 4K en un programa con Sony Vegas donde el master tiene un tamaño de varias decenas de gigabytes e imaginaos poder controlar la linea de tiempo con toda la soltura del mundo.

Otro ejemplo sería en una base de datos enorme, imaginaos estar trabajando en una aplicación que tiene que hacer continuas búsquedas a la base de datos a toda velocidad aprovechando la enorme velocidad que permite tener la memoria del SSD en el direccionamiento. En realidad posibilidades hay muchas, especialmente en aplicaciones que hacen uso de grandes volúmenes de datos.

A nivel de sistema operativo, ya para terminar, hay que tener en cuenta que muchas aplicaciones utilizan librerías del sistema, el hecho de tener todo el sistema operativo en el direccionamiento del procesador acelera enormemente el funcionamiento de todas y cada una de las aplicaciones.

Fuente: hardzone.es/tutoriales/rendimiento/x86-32-bits-abandonar/