GNU/Linux: AMD64 или i386 - что выбрать?

Впервые опубликовано 2008-01-12.

Если в вашем компьютере установлен современный процессор от AMD или Intel1), вероятнее всего он является 64-битным, т.е. поддерживает обе эти архитектуры.

В выборе, какую из версий дистрибутива GNU/Linux устанавливать - под AMD64 (64-битную) или под i386 (32-битную), однозначно рекомендую предпочесть первый вариант.

В чём преимущества архитектуры AMD64 над i386?

Основные особенности архитектуры, имеющие значение даже для тех, кому не нужны преимущества в управлении большими объёмами ОЗУ, состоят в следующем:

  • Полная поддержка арифметики над 64-битными числами;
  • Регистры общего назначения расширены с 32 бит до 64 бит;
  • Удвоено количество регистров общего назначения (с 8 до 16);
  • Удвоено количество регистров SSE (также, с 8 до 16).
  • SSE/SSE2 являются стандартной частью архитектуры, а значит все скомпилированные под AMD64 программы могут пользоваться этими инструкциями без всяких дополнительных проверок.

Подробности см. в статье на Википедии.

Ожидать ли прироста производительности от перехода на AMD64?

Да. Дело в том, что современные компиляторы с C/C++ и других высокоуровневых языков обладают достаточным “интеллектом”, чтобы путём простой перекомпиляции под новую архитектуру, ускорить даже не оптимизированные специально под неё программы. Прежде всего – задействованием дополнительных регистров общего назначения, а также использованием инструкций SSE и SSE2 там, где раньше приходилось прибегать к более медленным инструкциям математического сопроцессора (FPU).

В результате всего этого, после простой перекомпиляции под AMD64, программы начинают работать от 20 до 100% быстрее, даже без каких-либо изменений в исходном коде. Подробности представлены в этом тестировании (другие форматы: ODT, PDF)2).

Цитата:

Following conclusions were made:
1.It was clearly shown that most of applications have better performance in 64 bit environment.
2.Performance degradation was observed in very few cases and it was very low – in about few percents – lame MP3 encoder, GNU compiler.
3.Most of applications have 20-30% performance gain in 64 bit mode.
4.In very few cases the gain was extremely high – 70-100% – mathematical processing in octave, image processing with ImageMagic.

Кроме того, в конце 2009-го года Phoronix провёл собственное сравнение производительности 32- и 64-битного ПО, подтвердив вышеприведённые результаты, а в следующем сравнении от апреля-2011 преимущество 64-битного ПО был не просто подтверждёно ещё раз и во множестве тестов, но также высказано недоумение, почему некоторые дистрибутивы GNU/Linux до сих пор предлагают устаревшую 32-битную версию в качестве основной.

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

Какие ещё плюсы есть у AMD64?

Поскольку 64-битная арифметика на 64-битной архитектуре выполняется гораздо быстрее, чем на 32-битной, некоторые программы могут под AMD64 задействовать её там, где под i386 не использовали, т.к. было слишком медленно.

К примеру, счётчик переданных и полученных данных в сетевом коде ядра Linux на 32-битных архитектурах является 32-битным числом, и соответственно, обнуляется каждые 4 гигабайта. Именно поэтому, на 32-битных архитектурах невозможно увидеть более 4 ГБ в строчке “RX bytes/TX bytes” вывода команды ifconfig. Как пишут в одном списке рассылки,

64 bit counters are expensive. It's not worth it doing 64 bit counters in the networking hotpath; the userspace accounting programs already know how to deal with this overflow anyway….

На 64-битной же архитектуре, с этим нет никаких проблем:

eth0      Link encap:Ethernet ......
....
          RX bytes:42182507534 (39.2 GiB)  TX bytes:169507880757 (157.8 GiB)
...

Каких проблем можно ожидать при использовании 64-битного дистрибутива?

  • Возможны проблемы с запуском проприетарных, поставляемых в бинарном виде и при этом скомпилированных только под 32-битную архитектуру программ. Но такие программы (как и необходимость в их использовании) на платформе GNU/Linux довольно редки, и на сегодня всё чаще, параллельно с 32-битной, авторами подобного программного обеспечения начинает предлагаться и 64-битная версия.

Какие проблемы были раньше, но уже решены?

Здесь в качестве примера приводится дистрибутив Debian Lenny для amd64.

  • Раньше не было возможности использовать Java-апплеты в браузере, поскольку не было 64-битной версии соответствующего плагина. Однако после публикации компанией Sun исходников Java под лицензией GPL (см. проект OpenJDK), такой плагин появился.
  • Раньше не было плагина для просмотра Flash-роликов (к примеру, видео на YouTube) в браузере. Теперь, для этого достаточно установить один из свободных Flash-плагинов: Gnash или Swfdec (соответствующие пакеты есть в репозитории).
  • Раньше не было возможности смотреть видеофайлы в некоторых распространённых форматах с помощью mplayer, поскольку для этого требовался только-32-битный бинарный несвободный пакет w32codecs. Но на сегодняшний день, поддержка всех этих форматов реализована в полностью свободном коде, поэтому вполне можно обойтись и без w32codecs, установив только сам mplayer (или один из GUI к нему – мне, например, нравится smplayer).
1) Свою реализацию AMD64 компания Intel называет”EM64T”

amd64vsi386.txt · Last modified: 2015-10-26 12:14 UTC by rm