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.
- Раньше не было возможности смотреть видеофайлы в некоторых распространённых форматах с помощью
mplayer
, поскольку для этого требовался только-32-битный бинарный несвободный пакетw32codecs
. Но на сегодняшний день, поддержка всех этих форматов реализована в полностью свободном коде, поэтому вполне можно обойтись и безw32codecs
, установив только самmplayer
(или один из GUI к нему – мне, например, нравитсяsmplayer
).