Десять имён для одной архитектуры
На пятничном семинаре учебного проекта лаборатории МФТИ-Интел один из студентов задал мне примерно такой вопрос: а почему 64-битный вариант архитектуры процессоров Intel называется x64, а 32-битный — x86? Я начал объяснять, что не всё так просто. Захотелось нарисовать более полную картину. Ведь на самом деле это не x64, и даже не x86.
386-ые, Пентиумы и Коры
На самом деле названий для этого феномена, около сорока лет присутствующего на сцене процессорных технологий, было придумано несколько. Даже больше, чем хотелось бы. Они появились из разных источников и используются в разных контекстах, разными компаниями и разными сообществами. Конечно же, это вносит некоторую неразбериху.
Я постарался здесь собрать все известные мне названия. Не хочу пытаться доказать, что одна группа имён лучше другой, — меньше использовать их не станут.
8086 и семейство
В 1978 году был выпущен 16-битный процессор Intel, который имел «имя» 8086. За ним были 8088, 80186, 80286, 80386 (плюс вариации), 80486 (плюс вариации). Легко заметить, что (почти) все эти числовые имена оканчиваются на две цифры 86, что дало название всей серии x86. Оно укрепилось, его продолжили использовать и после того, как процессорам перестали давать цифровые имена, а появились Intel Pentium, Celeron, Xeon, Core, Atom и т.д. Совместимые продукты других вендоров, таких как IBM, AMD, Cyrix, VIA и т.д., также описываются как x86.
По моим наблюдениям, x86 — самый популярный вариант для имени этой архитектуры в Интернете, статьях и прочей литературе, особенно, когда не стоит задачи точно специфицировать разрядность архитектуры или речь явным образом идёт о 32-битном варианте.
Используются также вариации этого названия для 32-битных вариантов, позволяющие более точно указать минимальный набор поддерживаемых инструкций: i386, i486, i586, i686, — например, для различения вариантов сборок бинарных пакетов дистрибутивов Linux.
Пришествие 64 бит
Своими стараниями Intel расширила машинное слово в описанной ранее серии процессоров с 16 до 32 бит. Достигнуть этой архитектуре 64 бит помогла компания AMD, в 2003 году представившая процессор, поддерживающий новые инструкции и регистры и реализующий AMD64.
Для того, чтобы явно указать повышенную битность процессора/кода/пакета, имя x86 стало получать новый суффикс «64». Вот только через какой знак его приписывать не договорились, и иногда видишь x86_64, а порой x86-64. Например, вывод команды uname в Linux использует подчерк. Наконец, у пакетов можно увидеть и суффикс amd64 строчными буквами.
Intel же обозначала это расширение архитектуры сперва IA-32e, затем EM64T. В настоящее время можно встретить оба варианта в различных именах пакетов, документации и прочем. Тем не менее, есть и третье введённое Intel название…
Как это называет Intel
В официальной документации 32-битная архитектура имеет имя IA-32; её 64-битный вариант получил довольно странное с моей точки зрения имя Intel 64. Почему странное — оно создаёт потенциал для путаницы, как мы увидим ближе к концу статьи.
Компании-поставщики софта
- Дистибутивы Linux: x86 и x86_64, иногда x86 и amd64.
- Apple: x86 и x86_64.
- Microsoft и Oracle: x86 и x64.
Всё вместе
- Для 32-битного варианта: IA-32, x86, i386, i486, i586, i686.
- Для 64-битного варианта: Intel 64, AMD64, amd64, EM64T, IA-32e, x86_64, x86-64, x64.
Ложные имена
Как известно, за свою сорокалетнюю историю Intel выпускала (и выпускает сейчас) не только процессоры IA-32. Были и до сих пор присутствуют продукты других архитектур. Они тоже имеют свои имена, иногда несколько созвучные. При этом происходит путаница, от которой хотелось бы предостеречь.
Intel IA-64. Является полным синонимом термина «Intel Itanium». Используется для обозначения 64-битной архитектуры, несовместимой ни с IA-32, ни с 64-битным её вариантом ни по набору команд, ни по принципам работы. Да, существуют аппаратные и программные прослойки для запуска IA-32 приложений на Итаниуме, но это — тема для отдельного и интересного рассказа. Кстати, и для Itanium есть ещё одно обозначение — IPF, используемое изредка как суффикс.
К сожалению, линейки таких семейств процессоров Intel, как i432, i860, i960 или не дожили до наших дней, или же имеют крайне узкую нишу применения. А то глядишь — пришлось бы для каждого из них запоминать ещё по десятку имён.
GNU/Linux: AMD64 или i386 — что выбрать?
Если в вашем компьютере установлен современный процессор от AMD или Intel 1) , вероятнее всего он является 64-битным, т.е. поддерживает обе эти архитектуры.
В выборе, какую из версий дистрибутива GNU/Linux устанавливать — под AMD64 (64-битную) или под i386 (32-битную), однозначно рекомендую предпочесть первый вариант.
В чём преимущества архитектуры AMD64 над i386?
Основные особенности архитектуры, имеющие значение даже для тех, кому не нужны преимущества в управлении большими объёмами ОЗУ, состоят в следующем:
Ожидать ли прироста производительности от перехода на AMD64?
Да. Дело в том, что современные компиляторы с C/C++ и других высокоуровневых языков обладают достаточным “интеллектом”, чтобы путём простой перекомпиляции под новую архитектуру, ускорить даже не оптимизированные специально под неё программы. Прежде всего – задействованием дополнительных регистров общего назначения, а также использованием инструкций SSE и SSE2 там, где раньше приходилось прибегать к более медленным инструкциям математического сопроцессора (FPU).
В результате всего этого, после простой перекомпиляции под AMD64, программы начинают работать от 20 до 100% быстрее, даже без каких-либо изменений в исходном коде. Подробности представлены в этом тестировании (другие форматы: ODT, PDF) 2) .
Кроме того, в конце 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 . Как пишут в одном списке рассылки,
Какой дистрибутив лучше выбрать, i386 или amd64?
В кратце, 32-bit и 64-bit компьютеры отличаются в архитектуре. Главная разница между архитектурами заключается в поддержке размерности данных. Машины с архитектурой 32-bit могут понимать данные размерностью в 32-bit. Все что больше этого значения такая машина прочитать не сможет. Аналогично, машина с 64-bit может прочитать и обработать данные длиною в 64-bit. Не смотря на то, что 64 это в два раза больше чем 32, 64-bit данные могу содержать в себе намного больше, чем просто двойную информацию 32-bit. Это также объясняет почему 64-битные машины могут работать быстрее и эффективнее чем 32-битные.
Другим отличием между 32-bit и 64-bit машинами является тот размер оперативной памяти, которые они могут поддерживать. 32-bit машина поддерживает максимальный размер памяти в 4GB. В то время как 64-bit – теоретически не ограничена в размене ОЗУ (если посмотреть на цифры, то это около 17.2 миллиардов гигабайт). Однако большинство операционных систем штучно ограничивают до 16GB (или 32GB) ОЗУ, что на наше время ассоциируется с очень мощными машинами.
Что такое Amd64?
В зависимости от использования 32-bit и 64-bit люди дали им имена. Архитектуру 32-bit часто ассоциируют с именами i386 или x86, в то время как 64-bit архитектура широко известна как AMD64/EM64T или /x86-64/x64, в зависимости от продукта и производителя.
Почему AMD64? В соответствии с информации с Википедии фирма AMD была первой, кто разработал спецификацию 64-битного процессора. Они первоначально назвали эту архитектуру x86-64, но позднее переименовали в AMD64, когда вышел релиз их первого 64-битного процессора: серия AMD-K8. С того времени AMD ввела термин 64-битного процессора.
Компания Intel (конкурент AMD) конечно же не могла использовать название AMD64 для их 64-битного процессора, поэтому они вышли под именем EM64T, а затем были переименованы в Intel 64. В некоторых материнских платах компании Intel при загрузке BIOS вы до сих пор сможете увидеть слово «EM64T», которое может пробегать на вашем мониторе.
В наше время технология AMD64 уже ассоциируется с 64-битной архитектурой и ничем не связана с процессорами компании AMD.
Работает ли AMD64 Ubuntu только с процессорами AMD?
Если вернутся к вопросу о выборе ISO образа Ubuntu, то в случае если у вас 32-bit процессор, то вам необходимо загружать и устанавливать Ubuntu версии i386. Если же ваш процессор поддерживает архитектуру 64-bit, то в таком случае можете смело загружать и устанавливать версию amd64, в независимости от того какой фирмы у вас процессор.
С увереностю могу сообщить что если у вас компьютер поддерживает архитектуру 64-bit, то вы также без проблем можете устанавливать и работать в версии Ubuntu i386 (32-bit). Но в таком случае вы не сможете использовать весь ресурс своего компьютера. Если у вас машина 32-bit, то AMD64 Ubuntu у вас однозначно работать не будет.
Возможно ли запускать приложения 32-bit на Ubuntu версии amd64?
В большинстве случаев вы без проблем сможете запускать 32-bit приложения на Ubuntu 64-bit, но при этом не сможете полностью использовать вашу систему. Однако наоборот не получится. Вы не сможете запустить 64-bit приложение на 32-bit системе (к примеру разместить маленький контейнер в большом получиться, но засунуть большой в маленький – никак). Если устанавливать приложения через менеджер пакетов Synaptic, то вы увидите что некоторый софт идет в версии 32-bit, а некоторый в 64-bit (это отображается только тогда, когда вы используете Ubuntu 64-bit). Вы можете выбрать ту версию, которая вам больше подходит. В дополнение можно сказать что не все 32-bit приложения корректно работают в 64-bit системе. Это касается как Windows, так и Linux приложений, которые требуют доступ к аппаратным настройкам.
Какую архитектуру установить на процессор AMD: i386 или amd64?
В общем суть проблемы: возможно ли на процессор AMD поставить 32-хбитную систему? Оперативы все равно всего 2 Гб! И какие возможны проблемы или подводные камни? Насколько сильно заметно возможно падение производительности?
Все равно тот же самый wine тянет пакеты архитектуры i386! Смысл мне тянуть лишние зависимости и гонять x64?
Раз проц AMD то и ставить нужно AMD.
Архитектура называется amd64 просто в силу традиции. Плюсы и минусы 64-битной системы относятся и к штеуду и к амд абсолютно одинаково.
Ставь что хочешь.
Ты бы хоть раздел бы полистал, в который постишь. Набрёл, глядишь, на что-нить интересное.