Все чаще на форумах возникают темы с вопросом что ставить — 32- или 64-битную систему. В этой статье перечислены важные и не очень особенности обеих архитектур, которые мы смогли вспомнить. А выбор уже за вами. Ну и естественно, что вопрос имеет смысл на том железе, которое поддерживает оба варианта (это практически все современные x86-совместимые процессоры, кроме Intel Atom N2XX и Z5XX).
32 бита
Она же IA-32, x86_32 или просто x86. В названии бинарных пакетов могут встречаться обозначения i386, i486, i586, i686.
Плюсы x86
- Самый главный и, наверное, единственный плюс 32-битной системы в том, что нет проблем с поиском ПО для нее. Если программа существует, то в 99.9% случаев будет и ее 32-битная сборка.
Минусы x86
- В силу особенностей архитектуры не поддерживается больше 4 гигабайт ОЗУ. Это ограничение можно частично обойти с помощью PAE (Physical Address Extension): операционная система будет способна использовать до 64 Гб ОЗУ, однако выделение памяти одному процессу по-прежнему не сможет превышать 4 Гб. на деле это 3гб или 2гб - т.к. часть пространства всегда зарезервирована за ядром.
- При сборке пакетов не используются возможности новых процессоров такие, как SSE, операции с плавающей точкой и т.д., если такую возможность не предусмотрели авторы программы (как, например, glibc, кодеки аудио и видео). Остальные пакеты для совместимости собираются с набором инструкций i486 (иногда 586 и 686, Mandriva и ArchLinux соответственно). Исключение составляют Gentoo и другие source-based дистрибутивы — там можно компилировать с теми оптимизациями, с какими душа пожелает.
- Небольшое число старых (и некоторых сторонних) драйверов не работают в режиме PAE. либо работают с глюками. Так как не рассчитаны на такой режим
64 бита
Известна как x86_64, x86-64, amd64, em64t и x64. Обратите внимание, что IA-64 это совсем другая архитектура (Itanium/Itanium2), которая совсем несовместима с той, о которой идет речь в этой статье.
Плюсы x86_64
- Нет проблем с использованием больших объемов ОЗУ (более 4 Гб на процесс, теоретический максимум 16777216 Тб);
- Можно отображать (mmap()) в виртуальную память процесса большие файлы (более 4 Гб);
- Прирост производительности колеблется от 0.6% до 45% (Сравнение производительности 32-битной и 64-битной версий дистрибутивов Fedora 9, openSUSE 11.0, Ubuntu 8.04.1). Возникает благодаря:
- Возможна отладка программ собранных с флагом GCC -fomit-frame-pointer (включен по умолчанию в -O2 на 64-битной архитектуре).
- Повышенная безопасность:
- 64-битные ядра linux по умолчанию используют NX-бит (на IA-32 NX-бит используется только на ядрах с PAE);
- Благодаря большей разрядности виртуальных адресов, больше возможностей рандомизации адресного пространства процесса, а значит, улучшается защита от некоторых видов атак.
Минусы x86_64
- Опять-таки в силу особенностей архитектуры увеличивается размер занимаемой приложениями памяти: указатели (смещения) и некоторые другие типы данных становятся вдвое больше в расчете на один объект.
- В силу предыдущего минуса, в процессорные кэши влезает меньше объектов. Это теоретически может приводить к падению производительности (количество обрабатываемых объектов в секунду). На практике же в большинстве программ наблюдается либо равная производительность, либо ускорение, так как другие плюсы 64-битности чаще всего перевешивают данный минус.
- Многие проприетарные программы не имеют 64-битных версий, например, 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 бит
Минусы
- Поддержка "из коробки" есть только в debian
- Невозможность адресации более 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) для корректности)