Supongo que me estoy centrando en x86, pero generalmente estoy interesado en el cambio de 32 a 64 bits.
Lógicamente, puedo ver que las constantes y los punteros, en algunos casos, serán más grandes, por lo que es probable que los programas sean más grandes. Y el deseo de asignar memoria en los límites de las palabras para mayor eficiencia significaría más espacio en blanco entre asignaciones.
También escuché que el modo de 32 bits en el x86 tiene que vaciar su caché cuando se cambia de contexto debido a posibles espacios de direcciones 4G superpuestos.
Entonces, ¿cuáles son los beneficios reales de 64 bits?
Y como pregunta complementaria, ¿128 bits sería incluso mejor?
Editar:
Acabo de escribir mi primer programa de 32/64 bits. Hace listas / árboles enlazados de objetos de 16 bytes (versión 32b) o 32 bytes (versión 64b) y realiza muchas impresiones en stderr; no es un programa realmente útil, ni algo típico, pero es el primero.
Tamaño: 81128 (32b) v 83672 (64b), por lo que no hay mucha diferencia
Velocidad: 17 s (32b) v 24 s (64b): se ejecuta en un sistema operativo de 32 bits (OS-X 10.5.8)
Actualizar:
Observo que se está desarrollando una nueva ABI híbrida x32 (Interfaz binaria de aplicación) que es 64b pero usa punteros 32b. Para algunas pruebas, el resultado es un código más pequeño y una ejecución más rápida que 32b o 64b.