jueves, agosto 18, 2005

Tecnología de los 64 bits, AMD64.


Tecnología de los 64 bits, AMD64.

Es indiscutible que el contar con un sistema de 64 bits nos abre un tremendo potencial, principalmente en beneficio del usuario final. Sin embargo, no todos saben a ciencia cierta cuales son esos reales beneficios, y si efectivamente le tocan a uno en sus aplicaciones finales. Es por eso que antes de seguir con el análisis del Sempron 64 le daremos una repasada a la tencología de los 64 bits.

Registros

Una de las ventajas de contar con una plataforma de 64 bits es que los registros que maneja el procesador se ensanchan, crecen.



En azul se puede apreciar la tecnología clásica de 32 bits, y en rojo la mejora que incluyó AMD con su extensión de 64 bits.
Como se puede apreciar en el gráfico, los registros de propósitos generales (que son los que más ocupa el procesador) se ensancharon de 32 a 64 bits, pudiendo acarrear así más datos por cada ciclo de reloj. A su vez, se agregaron 8 registros SSE más para poder recibir y procesar ese mayor caudal de información, además de que las demás instrucciones (MMX, 3dnow) se deshechan.
Para poder aprovechar todo eso, la aplicación debe poder trabajar en 64 bits. En pocas palabras, si tu software está desarrollado para 32 bits (como la gran mayoría de las aplicaciones de oficina y juegos) no se beneficiará con estos cambios.
Si bien es cierto que los impulsores de esta tecnología dicen que se lograrán beneficios de rendimiento del 5% al 10% aún en software de 32 bits producto de esta nueva implementación, existe la posibilidad de que haya software que vea un ligero decremento en el rendimiento final debido a que el direccionamiento de memoria en 64 bits es demasiado grande.
Memoria

Los procesadores de 32 bits pueden direccionar a todo reventar 4GB de RAM, de los cuales 2GB se los agarra el kernel dejándonos un máximo de 2GB para asignarle a procesos. Aún cuanto tengas múltiples procesadores, que sumados puedan manejar 4GB cada uno, cada proceso podrá ocupar máximo 2GB. Hay métodos como el PAE de Windows y el VLM de Linux que permiten superar esta barrera, pero todos estos bypass resienten de alguna forma el rendimiento.
Parafraseando el dicho de un famoso informático, podríamos decir que 2GB son suficientes para todos. Quizás si, por lo menos para aquellos que utilizan su pc para uso doméstico/ofimático. Pero hay quienes trabajan editando grandes imágenes, archivos CAD pesadísimos, desarrollo multimedia con videos muy grandes y base de datos que trabajan con grandes archivos que tienen una limitante con esos 2GB.
Con 64 bits se pueden direccionar 16 exabytes (16 mil millones de Gigabytes), cifra que suena monstruosa y que resolvería todos nuestros problemas por un largo largo tiempo. La tecnología x86-64 de AMD tiene realmente 40 bits físicos, con lo que puede direccionar hasta 1 terabyte (mil gigabytes) por procesador, que definitivamente es más que suficiente para el uso cotidiano y para servidores.

Compatibilidad

Otro plus que se incluye en los procesadores AMD con extensiones de 64 bits es su compatiblidad. Si por algún requerimiento de software los 32 bits te quedaban chicos, o tu aplicación (por ejemplo una base de datos gigantesca) rendía pésimo en tan poca RAM estábas obligado a adquirir un servidor carísimo como el Itanium. Estos mastodónticos procesadores cuentan con su propio set de instrucciones de 64 bits que suple tus necesidades de registros y de memoria, sin embargo es imposible que ejecutes aplicaciones de 32 bits en él. Bueno, la verdad es que si es posible mediante un emulador, pero el rendimiento de un itanium en 32 bits es malísimo (se dice que al nivel de un obsoleto procesador pentium II).
La idea de AMD de incorporar extensiones de 64 bits es poder ejecutar aplicaciones tanto de 64 como de 32 bits en el mismo sistema, sin una pérdida de rendimiento para éstas últimas. Así, tú puedes adquirir un procesador AMD 64, instalarle un sistema operativo x86-64 (Windows o Linux, ya están disponibles), correr tu juego favorito de 32 bits o una aplicación en 64 bits. Para servidores es lo mismo: instala una versión server de Windows x64 o Linux 64, instala tu motor de base de datos, asígnale de cuanta ram dispongas (no existe la limitante de 2GB) y al mismo tiempo un servidor de aplicaciones de 32 bits.
Si no quieres instalar un sistema típico de 32 bits, no hay problema: instalas tu clásico Windows 32 bits (Windows XP Home, por ejemplo) o Linux 32 bits. Aún cuando no disfrutes de los beneficios propios de los 64 bits puedes trabajar sin problemas y sin pérdida de rendimiento: nada es emulado.
Esta característica de compatibilidad de los procesadores con extensiones de 64 bits te permiten una migración suave desde los 32 bits hacia los 64 bits.

Software

Sistemas operativos ya hay, tando de Microsoft como de Linux, en versiones desktop y servers. Importantes empresas de software ya han desarrollado versiones de sus productos para x86-64, por lo menos he visto a Microsoft, Oracle, Mysql y poco a poco se van sumando más. De hecho, en muchos casos basta recompilar y ya está.
Aún cuando sea lenta la producción de aplicaciones para este nuevo set de instrucciones, la compatibilidad 32-64 bits que nos ofrece x86-64 nos permite trabajar con nuestro programa en 32 bits hasta que salga la versión de 64 bits sin necesidad de cambiar de equipo ni reinstalar un nuevo sistema operativo.

Hardware

Hoy en día se encuentran ya en el mercado soluciones AMD e Intel con extensiones de 64 bits y desde ya se pueden aprovechar los beneficios de los registros extendidos. Sin embargo, el caso de la memoria ram es diferente.
Sabemos que un solo procesador AMD 64 es capaz de manejar 1 terabyte, y que Windows x64 te permite direccionar hasta 128GB de memoria física y 16 terabytes de memoria virtual. Lamentablemente, no he visto placas madre para escritorio que soporten más de 4GB, con lo que la ventaja del manejo de memoria de los 64 bits no nos sirve para nada... por el momento. Placas madre para servidores x86-64 ya hay, y por ahí hay una que puede manejar hasta 64GB .
Es cuestión de tiempo que las placas madre para escritorio manejen más memoria RAM. A medida que el mercado lo exija comenzarán a salir productos con capacidad para más de 4GB. También los fabricantes de memoria RAM deberán hacer su parte para construir módulos de memoria de mayor capacidad.
Otro punto a destacar es el hecho de que, al haber más productos de 64 bits en el mercado, el consumidor podrá elegir y exigir precios más bajos. Así, si una aplicación de encriptación requería de una plataforma de 64 bits estabas obligado a mirar sistemas Itanium o Risc, sistemas que tienen un precio muy elevado (de varios miles de dólares) lo cual equivaldría probablemente a matar una mosca a cañonazos. Otra opción es resignarte a un equipo de 32 bits. En este momento puedes parar un sistema de 64 bits por menos de 700 dólares basado en un Sempron 64. Evidentemente no rinde tanto como un Itanium o un Risc, pero tendrás una plataforma de 64 bits a precio accesible y con una relación performance/precio imbatible.

Pionero

Cuando AMD dijo que iba a lanzar su línea de procesadores con extensiones de 64 bits para la línea de servidores (Opteron) como para el escritorio (Athlon 64), Intel reaccionó con declaraciones mirando a huevo la decisión de su rival. Sin embargo, ahora Intel sigue la senda impuesta por AMD e incorpora en sus procesadores Xeon para servidores y Pentium 4 D para el escritorio un set de instrucciones llamado EM64T que hace exactamente lo mismo que AMD.
Podría decirse que el que ganó fue AMD al convertirse en innovador tecnológico. Quizás, pero yo creo que los que ganamos somos los consumidores, pues si bien antes los sistemas operativos de 64 bits eran cerrados para cada plataforma, en este momento podemos elegir entre Opteron 64, Xeon EM64T, Athlon 64, Sempron 64, Pentium D y Celeron D utilizando el mismo sistema operativo y las mismas aplicaciones.