Преимущества 64-битной системы - PullRequest
6 голосов
/ 30 января 2011

С точки зрения разработчика, я пытаюсь понять, в чем смысл продажи 64-битной системы?

Я понимаю, что в вашем распоряжении больше регистров, больше памяти может быть выделено для процесса, но я не могу понять, что делает жизнь разработчика проще. Есть примеры?

С точки зрения производительности, есть ли какой-нибудь выигрыш, если программа выполняется на 32-битной или 64-битной версии?

Ура!

РЕДАКТИРОВАТЬ: Спасибо за все ваши ответы. Я вижу, что некоторые разговоры стремятся к восприятию конечного пользователя, каким бы важным оно ни было ... Я больше смотрю на любые архитектурные преимущества, которые вы можете выжать.

Из того, что я понимаю, похоже, что оптимизация - это скорее цепочка компилятора-ассемблера, чем функциональность, к которой может обращаться программист?

Ответы [ 7 ]

9 голосов
/ 30 января 2011

Если у вас есть 64-битное адресное пространство, с которым вы можете играть, вы можете использовать определенные конструкции, которые будут очень сложными с меньшим количеством адресного пространства. Например, мой друг недавно указал мне, что адресное пространство для стеков потоков может стать проблемой с тысячами потоков в 32-битной системе. Но в 64-битной системе это даже близко не является проблемой. Это главная прямая выгода для разработчиков, которая может повлиять на то, как вы пишете программы. И это верно независимо от того, сколько фактической памяти у машины.

В большинстве программ, которые я видел преобразованными в 64-битные, наблюдается улучшение производительности из-за наличия дополнительных регистров.

Наличие 64-битных адресов может компенсировать это улучшение производительности в некоторых программах. Указатели на дополнительное пространство занимают, значит, они занимают больше кеша, что оставляет меньше места в вашем кеше для других вещей. Также они занимают большую пропускную способность шины памяти при передаче в и из основной памяти.

Существует по крайней мере один проект, который предлагает перекомпилировать большинство программ в Linux в своего рода смешанном режиме, в котором используются все дополнительные регистры, но используются только 32-битные указатели. Мне интересно, как это получится, потому что это устраняет один недостаток производительности 64-битных программ.

Существует также небольшое (но важное) подмножество программ и алгоритмов, которые могут использовать 64-битные регистры. Например, большинство кандидатов SHA-3 предназначены для использования возможности манипулирования 64-битными данными одновременно при выполнении побитовых операций.

Наконец, поскольку пути данных внутри ЦП теперь имеют ширину 64 бита, это также может означать, что внутри ЦП имеется большая полоса пропускания для перемещения объектов. Но я ожидаю, что это будет полезно и для 64-битных процессоров, работающих в 32-битном режиме.

1 голос
/ 30 января 2011

Несколько специфических ответов для Mac OS X (общие ответы рассматриваются в других ответах):

1) В 32-битном OSX адресное пространство отображается 4/4 (то есть ядро ​​получает 2 ^ 32 AND)для каждого приложения), что требует двойной очистки TLB на каждом системном вызове.В 64-битной среде достаточно места для отображения ядра и приложения в разные диапазоны адресов.

2) Программы Objective C используют новый ABI / runtime на 64-битных машинах x86.Это дает вам C ++ совместимые исключения, не хрупкие переменные экземпляра и некоторые ускорения.

1 голос
/ 30 января 2011

Когда вы запускаете несколько процессов, например, сеанс отладки, компилятор и другие инструменты, вы заметите большой выигрыш в производительности, если у вас много оперативной памяти в вашей системе.У меня 16 ГБ ОЗУ в моей системе Win7, и я никогда не вернусь к тому, чтобы иметь меньше.Это немного похоже на то, когда вы начинаете использовать двойные мониторы, одного просто недостаточно после этого.

1 голос
/ 30 января 2011

Как вы сказали, больше памяти может быть большим преимуществом. Для 32-битных систем вы будете ограничены процессами максимум 4 ГБ (или даже 2 или 3, в зависимости от того, насколько раздражает ваша ОС).

64 бита - это удвоенное количество байтов на инструкцию, поэтому у вас больше пропускной способности внутри. Например: все быстрее.

см. Также: http://lifehacker.com/5431284/the-lifehacker-guide-to-64+bit-vs-32+bit-operating-systems

0 голосов
/ 30 января 2011

Извините, я сохранил этот стиль списка битов и не упомянул об увеличении адресации памяти и о других, уже упомянутых.

a) Вы получите удвоенное количество регистров, фактически предоставив вам в три раза больше регистров в вашем распоряжении. b) Регистры общего назначения увеличены с 32 до 64 бит, то есть обработка 64-битных целых чисел (т.е.) будет быстрее. c) Более эффективный код, независимый от позиции, поскольку теперь на данные можно ссылаться относительно регистра RIP. d) Бит без выполнения , делающий систему более терпимой к переполнению буфера.

0 голосов
/ 30 января 2011

Большинство настольных приложений на самом деле не должны быть 64-битными двоичными файлами, за исключением заметных приложений обработки изображений или видео.В отличие от этого, серверные приложения часто делают это.

Лучшее преимущество при работе на 64-битной машине a в том, что у вашего приложения будет больше места в оперативной памяти, поэтому оно не будет заменено другимприложениям потребуется оперативная память.И все же 32-битные приложения работают на 64-битной машине (к счастью).Я набираю это на 16-Гбайт ноутбуке Linux с 2 дБ (Oracle 11g и Mysql 6.0alpha), Windows в VirtualBox и множеством виртуальных машин Java, затмение с Xmx = 2 Гб ...), и я не смог все это в4ГБ.Тем не менее, я все еще предпочитаю запускать 32-битные приложения, когда им не требуется большой объем памяти.

0 голосов
/ 30 января 2011

64-разрядная система имеет 64-разрядные адреса памяти вместо 32-разрядных, поэтому максимальный объем доступной памяти составляет 2 64 против 2 32 . Это первое количество составляет примерно 10 18 байтов, по сравнению с 10 9 байтами, которые вы можете иметь с последним количеством. Следовательно, в 64-битной системе можно иметь гораздо больше памяти.

...