32 или 64 бита
Содержимое устарело Информация ниже частично устарела. Вы можете проверить её и актуализировать. |
{{#if: | [[Категория:{{{category}}}]] }}
Все чаще на форумах возникают темы с вопросом что ставить — 32- или 64-битную систему. В этой статье перечислены важные и не очень особенности обеих архитектур, которые мы смогли вспомнить. А выбор уже за вами. Ну и естественно, что вопрос имеет смысл на том железе, которое поддерживает оба варианта (это практически все современные x86-совместимые процессоры, кроме Intel Atom N2XX и Z5XX).
32 бита
Она же IA-32, x86_32 или просто x86. В названии бинарных пакетов могут встречаться обозначения i386, i486, i586, i686 (названия процессоров, в режиме совместимости с набором команд которых ПО было скомпилировано).
Плюсы x86
- Самый главный плюс 32-битной системы в том, что нет проблем с поиском ПО для нее. Если программа существует и не является современной игрой, то в 99.9% случаев будет и ее 32-битная сборка.
- Ещё один плюс этой архитектуры в том, что ПО, будучи запущенным, занимает меньше ОЗУ по причине того, что размер указателя — 4 байта.
Минусы x86
- В силу особенностей архитектуры (см. второй «плюс» x86) не поддерживается больше 4 гигабайт ОЗУ. Это ограничение можно частично обойти с помощью PAE (Physical Address Extension): операционная система будет способна использовать до 64 Гб ОЗУ, однако выделение памяти одному процессу по-прежнему не сможет превышать 4 Гб. На деле это 3гб или 2гб, так как часть адресного пространства всегда зарезервирована за ядром.
- К сожалению, небольшое число старых (и некоторых сторонних) драйверов не работают в режиме PAE, либо работают с глюками, так как не рассчитаны на такой режим.
- При сборке пакетов по умолчанию не используются возможности новых процессоров такие, как SSE, операции с плавающей точкой и т. д., если такую возможность не предусмотрели авторы программы (как, например, glibc, кодеки аудио и видео). Остальные пакеты для совместимости собираются с набором инструкций i486 (иногда i586 и i686, используется в Mandriva и ArchLinux соответственно). Исключение составляют Gentoo и другие source-based дистрибутивы — там можно компилировать с теми оптимизациями, с какими душа пожелает.
- Многие современные игры выпускаются только под x86_64.
64 бита
Известна как x86_64, x86-64, amd64, EM64T и x64. Обратите внимание, что IA-64 — это совсем другая архитектура (Itanium/Itanium2), которая совсем не совместима с той, о которой идет речь в этой статье.
Плюсы x86_64
- Нет проблем с использованием больших объемов ОЗУ (более 4 Гб на процесс, теоретический максимум 264 байта, т. е. 16777216 Тб).
- Как следствие, можно отображать (mmap()) в виртуальную память процесса большие файлы (более 4 Гб).
- Прирост производительности по сравнению с IA-32 колеблется от 0.6% до 45% (Сравнение производительности 32-битной и 64-битной версий дистрибутивов Fedora 9, openSUSE 11.0, Ubuntu 8.04.1). Возникает благодаря:
- увеличенному количеству процессорных регистров amd64 по сравнению с IA-32 (уменьшается так называемый "register pressure", компилятор порождает меньше операций spill/fill)
- использованию 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.)
- улучшенному ABI (выравнивание fp-переменных, "red zone")
- Возможна отладка программ собранных с флагом GCC -fomit-frame-pointer (включен по умолчанию в -O2 на 64-битной архитектуре).
- Повышенная безопасность:
- 64-битные ядра Linux по умолчанию используют NX-бит (на IA-32 NX-бит используется только на ядрах с PAE).
- Благодаря большей разрядности виртуальных адресов, больше возможностей рандомизации адресного пространства процесса, а значит, улучшается защита от некоторых видов атак.
Минусы x86_64
- Опять-таки в силу особенностей архитектуры увеличивается размер занимаемой приложениями памяти: указатели (смещения) и некоторые другие типы данных становятся вдвое больше в расчете на один объект.
- В силу предыдущего минуса, а также увеличения длины некоторых инструкций и использования SSE/SSE2 вместо более компактного x87-кода, в процессорные кэши влезает меньше объектов. Это теоретически может приводить к падению производительности (количество обрабатываемых объектов в секунду). На практике же в большинстве программ наблюдается либо равная производительность, либо ускорение, так как другие плюсы 64-битности чаще всего перевешивают данный минус.
- Многие проприетарные программы не имеют 64-битных версий, например, Google Earth. Некоторые open source приложения практически не работают в родном 64-битном режиме, например, wine. Тем не менее, все они работают при установке соответствующих 32-битных библиотек. Сложность установки необходимых библиотек зависит от дистрибутива.
- На процессорах архитектуры Intel Core 2 не задействуется Macrofusion (технология, увеличивающая число инструкций, обрабатываемых процессором за один такт), поэтому прирост производительности от перехода на 64 бита может не совсем оправдать ожидания. Для Nehalem и более поздних не актуально, источник. Тем более не актуально для процессоров AMD.
- GCC компилирует в 64-битный код несколько медленнее, чем тот же самый исходный код для 32 бит.
32 битная система + 64 битное ядро
Плюсы
- Нет проблем с использованием больших объемов ОЗУ (более 4 Гб)
- Возможность использования и 64-битных программ (в таком случае получается 64-битная multilib система с сильным перекосом в сторону 32-бит)
- Те же плюсы, что и у 32 бит
Минусы
- Поддержка «из коробки» есть только в Debian
- Невозможность адресации более 3 гигабайт памяти одним 32-битным процессом
- Конфликты в некоторых программах. использующих модули ядра(например 32-битный VirtualBox не может работать в такой системе). Проприетарный драйвер NVIDIA будет работать на таких системах без проблем, однако для этого потребуется ручная установка 64-битного модуля и 32-битных библиотек (из разных пакетов), а вот установщик с официального сайта будет работать некорректно.
- Нагрузка на процессор будет существенно выше (kernel-userspace переключает не только контекст, но и режим процессора long-compat)
- Сложности и конфликты с установкой и сборкой программного обеспечения в такой системе (архитектура определяется как 64-битная, рекомендуется использовать утилиту i386 (она же — setarch) для корректности)