Suppongo di concentrarmi su x86, ma generalmente sono interessato al passaggio da 32 a 64 bit.
Logicamente, posso vedere che costanti e puntatori, in alcuni casi, saranno più grandi, quindi è probabile che i programmi siano più grandi. E il desiderio di allocare la memoria sui confini delle parole per l'efficienza significherebbe più spazio bianco tra le allocazioni.
Ho anche sentito che la modalità a 32 bit su x86 deve svuotare la cache durante il cambio di contesto a causa di possibili spazi di indirizzi 4G sovrapposti.
Allora, quali sono i veri vantaggi del 64 bit?
E come domanda supplementare, 128 bit sarebbe ancora meglio?
Modificare:
Ho appena scritto il mio primo programma a 32/64 bit. Crea elenchi / alberi collegati di oggetti a 16 byte (versione 32b) o 32 byte (versione 64b) e stampa molto su stderr - non è un programma veramente utile e non è qualcosa di tipico, ma è il mio primo.
Dimensioni: 81128 (32b) v 83672 (64b) - quindi non molta differenza
Velocità: 17s (32b) contro 24s (64b) - in esecuzione su sistema operativo a 32 bit (OS-X 10.5.8)
Aggiornare:
Noto che è in fase di sviluppo un nuovo ibrido x32 ABI (Application Binary Interface) che è 64b ma utilizza puntatori 32b. Per alcuni test risulta in codice più piccolo e un'esecuzione più veloce rispetto a 32b o 64b.