Ventajas ocultas de x64

A estas alturas, y aunque el apoyo de la industria no es el adecuado, parece que a nivel general quien más y quien menos es consciente de las ventajas que aporta la arquitectura x86-64 sobre la x86. A saber, soporte de instrucciones generales de 8 bytes, y la posibilidad de direccionar cantidades de memoria más grandes.

Sin embargo son mucho menos conocidas algunas ventajas añadidas de esta arquitectura. La más evidente es que en las CPU que soportan x64, las instrucciones extendidas como SSE están siempre disponibles, por lo que la mayoría de herramientas de desarrollo tomarán ventaja de este hecho, generándolas cuando pueda resultar ventajoso. En cambio si nos movemos en 32 bits, la mayoría de programas no las usarán, al poder no estar disponibles en determinado procesador, o bien debido a la complejidad adicional a nivel de desarrollo que requiere detectar las capacidades de la CPU, y ejecutar fragmentos optimizados para él en tiempo de ejecución.

Obviamente no es una ventaja absoluta, pues aunque pocas, hay aplicaciones de 32 bits que requieren y utilizan SSE (principalemente juegos), y algunas otras que si están disponibles esas extensiones las utilizan (mayoritariamente desarrollos con Intel C++/Fortran.

Los procesadores que soportan x86-64, además del citado duplicado en el tamaño de registros que les permiten gestionar mayores bloques de memoria, y realizar operaciones con datos más grandes, incluyen ciertas mejoras a nivel de arquitectura. Por un lado son procesadores de generaciones más nuevas que los de 32 bits, lo que hace que las instrucciones suelan estar más optimizadas, y por tanto requieran menos ciclos de reloj para ser ejecutadas. Esto quiere decir, que a igualdad de frecuencia (Ghz), normalmente un procesador de 64 bits ejecutará los programas más velozmente que uno de 32. Esto es válido tanto para programas de 32 como de 64 bits. Pero es que además, incluyen nuevos registros internos, que solamente una aplicación diseñada para estas arquitecturas podría explotar, evitando accesos a memoria redundantes, y por tanto mejorando el rendimiento general.

Otro punto ventajoso muy a tener en cuenta, y probablemente el más importante de todos es el nuevo convenio de llamadas a funciones en Win64: X64, en contraposición a stdcall de Win32. Gracias a los nuevos registros, las llamadas a funciones, tanto del sistema, como del propio programa, pueden pasar los parámetros usando los nuevos registros, en vez de utilizar la memoria de pila como se hacía tradicionalmente. Esto redunda, que sin ningún cambio, las llamadas a procedimientos y funciones, son más eficientes en la nueva arquitectura.

Ventajas ocultas de x64

Deja un comentario