Если у вас есть 64-битное адресное пространство, с которым вы можете играть, вы можете использовать определенные конструкции, которые будут очень сложными с меньшим количеством адресного пространства. Например, мой друг недавно указал мне, что адресное пространство для стеков потоков может стать проблемой с тысячами потоков в 32-битной системе. Но в 64-битной системе это даже близко не является проблемой. Это главная прямая выгода для разработчиков, которая может повлиять на то, как вы пишете программы. И это верно независимо от того, сколько фактической памяти у машины.
В большинстве программ, которые я видел преобразованными в 64-битные, наблюдается улучшение производительности из-за наличия дополнительных регистров.
Наличие 64-битных адресов может компенсировать это улучшение производительности в некоторых программах. Указатели на дополнительное пространство занимают, значит, они занимают больше кеша, что оставляет меньше места в вашем кеше для других вещей. Также они занимают большую пропускную способность шины памяти при передаче в и из основной памяти.
Существует по крайней мере один проект, который предлагает перекомпилировать большинство программ в Linux в своего рода смешанном режиме, в котором используются все дополнительные регистры, но используются только 32-битные указатели. Мне интересно, как это получится, потому что это устраняет один недостаток производительности 64-битных программ.
Существует также небольшое (но важное) подмножество программ и алгоритмов, которые могут использовать 64-битные регистры. Например, большинство кандидатов SHA-3 предназначены для использования возможности манипулирования 64-битными данными одновременно при выполнении побитовых операций.
Наконец, поскольку пути данных внутри ЦП теперь имеют ширину 64 бита, это также может означать, что внутри ЦП имеется большая полоса пропускания для перемещения объектов. Но я ожидаю, что это будет полезно и для 64-битных процессоров, работающих в 32-битном режиме.