Все чаще на форумах возникают темы с вопросом что ставить — 32- или 64-битную систему. В этой статье перечислены важные и не очень особенности обеих архитектур, которые мы смогли вспомнить. А выбор уже за вами. Ну и естественно, что вопрос имеет смысл на том железе, которое поддерживает оба варианта (это практически все современные x86-совместимые процессоры, кроме intel atom N2XX). 32 бита
Она же IA-32, x86_32 или просто x86. В названии бинарных пакетов могут встречаться обозначения i386, i486, i586, i686.
Плюсы
* Самый главный и, наверное, единственный плюс 32-битной системы в том, что нет проблем с поиском ПО для нее. Если программа существует, то в 99.9% случаев будет и ее 32-битная сборка.
Минусы
* В силу особенностей архитектуры не поддерживается больше 4 гигабайт ОЗУ. Это ограничение можно частично обойти с помощью PAE (Physical Address Extension): операционная система будет способна использовать до 64 Гб ОЗУ, однако выделение памяти одному процессу по-прежнему не сможет превышать 4 Гб.
* При сборке пакетов не используются возможности новых процессоров такие, как SSE, операции с плавающей точкой и т.д., если такую возможность не предусмотрели авторы программы (как, например, glibc, кодеки аудио и видео). Остальные пакеты для совместимости собираются с набором инструкций i486 (иногда 586 и 686, Mandriva и ArchLinux соответственно). Исключение составляют Gentoo и другие source-based дистрибутивы — там можно компилировать с теми оптимизациями, с какими душа пожелает.
64 бита
Известна как x86_64, x86-64, amd64, intel64 и x64. Обратите внимание, что IA-64 это совсем другая архитектура (Itanium/Itanium2), которая совсем несовместима с той, о которой идет речь в этой статье.
Плюсы
* Нет проблем с использованием больших объемов ОЗУ (более 4 Гб на процесс)
* Прирост производительности колеблется от 0.6% до 45% (Сравнение производительности 32-битной и 64-битной версий дистрибутивов Fedora 9, OpenSUSE 11.0, Ubuntu 8.04.1). Возникает благодаря:
o увеличенному количеству процессорных регистров amd64 по сравнению с IA-32 (уменьшается так называемый "register pressure", компилятор порождает меньше операций spill/fill);
o использованию SSE2 взамен инструкций fp-сопроцессора x87 (The resulting code should be considerably faster in the majority of cases and avoid the numerical instability problems of 387 code ... This is the default choice for the x86-64 compiler.);
o улучшенному ABI (выравнивание fp-переменных, "red zone").
* Возможна отладка программ собранных с флагом GCC -fomit-frame-pointer (включен по умолчанию в -O2 на 64-битной архитектуре).
* 64-битные ядра linux по умолчанию используют NX-бит, что повышает безопасность (на IA-32 NX-бит используется только на ядрах с PAE).
Минусы
* Опять-таки в силу особенностей архитектуры увеличивается размер занимаемой приложениями памяти: указатели (смещения) и некоторые другие типы данных становятся вдвое больше в расчете на один объект.
* В силу предыдущего минуса, в процессорные кэши влезает меньше объектов. Это теоретически может приводить к падению производительности (количество обрабатываемых объектов в секунду). На практике же в большинстве программ наблюдается либо равная производительность, либо ускорение, так как другие плюсы 64-битности чаще всего перевешивают данный минус.
* Многие проприетарные программы не имеют 64-битных версий, например, Skype и Google Earth. Некоторые open source приложения практически не работают в родном 64-битном режиме, например, wine. Тем не менее, все они работают при установке соответствующих 32-битных библиотек. Сложность установки необходимых библиотек зависит от дистрибутива.
* На процессорах Intel Core 2 не задействуется Macrofusion (технология, увеличивающая число инструкций, обрабатываемых процессором за один такт), поэтому прирост производительности от перехода на 64 бита может не совсем оправдать ожидания. Для Core i7 не актуально, источник. Тем более не актуально для процессоров AMD.
* GCC компилирует в 64-битный код несколько медленнее, чем тот же самый исходный код для 32 бит.
32 битная система + 64 битное ядро Плюсы
* Нет проблем с использованием больших объемов ОЗУ (более 4 Гб)
* Возможность использования и 64-битных программ (в таком случае получается 64-битная multilib система с сильным перекосом в сторону 32-бит)
* Те же плюсы, что и у 32 бит
Минусы
* Невозможность адресации более 3 гигабайт памяти одним 32-битным процессом
* Конфликты в некоторых программах использующих ядерные модули (например 32-битный VirtualBox не может работать в такой системе). Проприетарный драйвер NVidia будет работать на таких системах без проблем, однако для этого потребуется ручная установка 64-бит модуля и 32-битных библиотек (из разных пакетов), а вот инсталлятор с оффсайта будет работать некорректно.
/* FIXME: я не уверен насчет проприетарных драйверов для видеокарт. 64битный модуль ядра сможет дергать 32битные библиотеки? --Тёма 05-May-2010 17:50 MSD
Написала про NVidia, ATI - не знаю.--Сильви 10-May-2010 08:01 MSD */
* Нагрузка на процессор будет существенно выше (kernel-userspace переключает не только контекст, но и режим процессора long-compat)
* Сложности и конфликты с установкой и сборкой программного обеспечения в такой системе (архитектура определяется как 64-битная, рекомендуется использовать утилиту i386 (она же - setarch) для корректности)