Меню Закрыть

I386 или amd64 что это

Содержание

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

Если в вашем компьютере установлен современный процессор от 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 . Как пишут в одном списке рассылки,

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

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

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

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

В чем разница между стандартной загрузкой i386 и загрузкой amd64 Ubuntu 11.04? В настоящее время я запускаю i386 на amd-машине, будет ли моя система работать лучше с загрузкой amd64? (моя машина работала под управлением Windows 7 64bit, но я не смотрел, что до установки Ubuntu).

5 ответов

i386 относится к 32-разрядной версии, а amd64 (или x86_64) относится к 64-разрядной версии для процессоров Intel и AMD.

Запись i386 в Википедии:

Intel 80386, также известный как i386, или только 386, был 32-разрядным микропроцессором, представленным Intel в 1985 году . Это называется x86, IA-32 или i386-архитектура, в зависимости от контекста.

Запись в x86_64 Википедии:

x86-64 является расширением набора команд x86. Он поддерживает значительно большие виртуальные и физические адресные пространства, чем это возможно на x86, что позволяет программистам удобно работать с гораздо большими наборами данных . После запуска архитектуры под названием «x86-64» AMD переименовала ее в AMD64 . x86 -64 по-прежнему используется многими в отрасли в качестве нейтрального поставщика, в то время как другие, в частности Sun Microsystems (теперь Oracle Corporation) и Microsoft, используют x64.

Даже если у вас есть процессор Intel, вы должны использовать AMD64 для установки 64-битного на ваш компьютер (он использует одни и те же наборы инструкций).

Я настоятельно рекомендую использовать его. По большей части вы не заметите разницы, но для больших рабочих нагрузок (например, для редактирования видео, игр и т. Д.) Компьютер будет работать быстрее (компьютер имеет возможность вычислять 2 + 2 + 2 = 6 вместо того, чтобы делать 2 + 2 = 4 + 2 = 6 в примере). В мире Windows 32-разрядная ОС не позволит вам использовать более 3,5 гигабайт ОЗУ на вашем компьютере (даже если у вас есть 8!). Чтобы полностью использовать всю оперативную память, вам необходимо использовать 64-разрядную ОС. Однако для Linux этого предела нет (спасибо, Uri).

Независимо от того, мир переместился с 32 бит, и он существует только для поддержки старых машин, которые не могут работать на 64-разрядных версиях.

Архитектура названа в честь AMD, потому что AMD изобрела ее, Athlon 64. Аналогично, 32-битная архитектура i386 названа в честь Intel 386, потому что он был первым в своем роде, но i386 также будет работать на процессорах AMD. Так что да, вы можете использовать этот образ ISO.

Читайте также:  Пропал звук на телевизоре philips что делать

Источник: Ссылка

да, вы можете установить бит amd64 на процессор Intel 64 бит. AMD изобрела процессор с процессором x86-64 бит, поэтому это просто дань памяти AMD.

Да, вы можете использовать этот .ISO. amd64 относится к архитектуре. AMD первой создала 64-битный процессор, поэтому я считаю, что он был назван в то время, и имя застряло. Это кажется немного запутанным, но amd64 просто означает 64-бит.

Разница между amd64 и i386 заключается в том, что amd64 64-разрядный , а i386 32-разрядный . Это ширина (в битах) регистров, доступных в ядре.

В основном наибольшее число, которое может обрабатывать 32-битное ядро ​​процессора за один раз, составляет чуть более 4,29 миллиарда, в то время как 64-битное ядро ​​может обрабатывать несколько бит более 18,44 миллиарда, миллиард.

Сердечники на современных ПК способны вести себя как 64-разрядный или 32-разрядный процессор в зависимости от версии установленной операционной системы.

64-разрядный код имеет тенденцию работать быстрее, чем 32-разрядный код либо потому, что он может иметь дело с большими номерами на ходу, либо потому, что в 64-битных ядрах больше регистров, поэтому можно хранить больше вещей, не загружая вещи во внешнюю память , Хотя нет гарантии, что 64-битный код будет работать быстрее, если код не был написан, чтобы воспользоваться дополнительными функциями процессора.

Компиляция на 32-битной системе приведет к созданию другого кода, чем 64-разрядная. Вы можете это доказать, составив код сборки в двух системах. Предполагая, что ваш файл C myfile.c , попробуйте gcc -S myfile.c в обеих системах и сравните myfile.s

Хорошо написанный код для 32-битной системы должен компилироваться и запускаться в 64-битной системе, но не весь код хорошо написан. Многие программисты делают предположения относительно системы, которые могут быть неверными: например, ширина регистров или порядок байтов.

Без доступа к исходному коду трудно понять, в чем проблема, но segmenation fault указывает на попытку доступа к памяти, которая не принадлежит программе. Это может, например, указать, что mem_ptr — 32-разрядный указатель, который отлично подходит для 32-разрядной системы, но должен быть 64-разрядным указателем на 64-разрядной системе.


На пятничном семинаре учебного проекта лаборатории МФТИ-Интел один из студентов задал мне примерно такой вопрос: а почему 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. Почему странное — оно создаёт потенциал для путаницы, как мы увидим ближе к концу статьи.

Компании-поставщики софта

Если кому-то показалось, что у этой несчастной архитектуры как-то мало имён и суффиксов, то сейчас я обозначу ещё одно известное мне. Происходит оно от поставщиков программного обеспечения, которым как-то надо различать варианты поставляемых пакетов для 32 и 64 бит. Тут их мнения разделились примерно вот таким образом (подробнее — в Википедии).

  • Дистибутивы Linux: x86 и x86_64, иногда x86 и amd64.
  • Apple: x86 и x86_64.
  • Microsoft и Oracle: x86 и x64.

Итак, ещё одно имя — x64.

Всё вместе

Подведу предварительный итог упомянутых в моей заметке обозначений вариантов архитектуры Intel.

  • Для 32-битного варианта: IA-32, x86, i386, i486, i586, i686.
  • Для 64-битного варианта: Intel 64, AMD64, amd64, EM64T, IA-32e, x86_64, x86-64, x64.

Итого четырнадцать. Если отбросить i386 — i686 как несущественные вариации, то десять.

Ложные имена

Как известно, за свою сорокалетнюю историю Intel выпускала (и выпускает сейчас) не только процессоры IA-32. Были и до сих пор присутствуют продукты других архитектур. Они тоже имеют свои имена, иногда несколько созвучные. При этом происходит путаница, от которой хотелось бы предостеречь.

Intel IA-64. Является полным синонимом термина «Intel Itanium». Используется для обозначения 64-битной архитектуры, несовместимой ни с IA-32, ни с 64-битным её вариантом ни по набору команд, ни по принципам работы. Да, существуют аппаратные и программные прослойки для запуска IA-32 приложений на Итаниуме, но это — тема для отдельного и интересного рассказа. Кстати, и для Itanium есть ещё одно обозначение — IPF, используемое изредка как суффикс.

К сожалению, линейки таких семейств процессоров Intel, как i432, i860, i960 или не дожили до наших дней, или же имеют крайне узкую нишу применения. А то глядишь — пришлось бы для каждого из них запоминать ещё по десятку имён.

Похожие публикации

  • 15 ноября 2013 в 09:07

Правильно ли работает ваш дизассемблер?

Префиксы в системе команд IA-32

64 бита

Вакансии компании Intel

Комментарии 50

Вот кстати давно хотел узнать: а почему нет единого документа, в котором было бы нарисовано когда вышла та или иная архитектура, какие новые фичи и наборы команд появились

Пожалуй, самая полная историческая справка о датах выхода и доступности разных фич в процессорах доступна в Википедии, как это ни удивительно. Про единый документ — чуть ниже.

как через CPUID эту архитектуру определить

Какой бит используется в CPUID для индикации наличия определённой инструкции или класса инструкций всегда можно понять из описания инструкции в мануале Intel SDM. Например, для ANDN из расширения BMI1:

Далее смотрим в том же мануале (может быть, в другом его томе), что ассоциируется с флагом BMI1 в CPUID.

В итоге о BMI2 я узнал совершенно случайно

Есть такой интересный документ: Intel® Architecture Instruction Set Extensions Programming Reference. В нём описываются инструкции, ещё не включенные в реальную продукцию, но планируемые быть доступными в не столь далёком будущем. Обновляется он достаточно часто (я один раз обнаружил, что имею у себя устаревшую локальную версию и из-за этого не в курсе, что вообще происходит). Его части со временем переезжают в Intel SDM, когда инструкции перестают быть «новыми». Очень полезный документ для писателей компиляторов, симуляторов и других программистов системного уровня.

Анонсы новых наборов случаются, кстати, и делаются на сайте Intel Developer Zone. Например, для Intel Haswell New Instructions, Intel RTM.

В каком документе перечислены все имеющиеся архитектуры Intel? 🙂

Немножко придерусь к словам. Если Вам интересны именно «архитектуры», т.е. видимые системному программисту абстракции и связанные с ними наборы команд, то их не очень много, и ещё меньше из них ныне здравствуют. Поддерживаются, наверное, только Itanium и IA-32, но я не выяснял точно. Остальные уже упомянуты в этом треде: 4004, 8008, iAPX 432 и т.д. Забыли, правда, про StrongARM/XScale.

Если же подразумевались «микроархитектуры», т.е. внутренние реализации архитектур, то обычно эту их имена не используют для целей рекламы. По крайней мере с именами микроархитектур не ассоциируют предлагаемые функциональные особенности/преимущества. Для этих нужд используют маркетинговое имя, вроде Intel® Core ™. Просто для того, чтобы оставить за собой пространство для манёвра, типа «вот описание архитектуры, а как она сделана внутри — это может поменяться без предварительного уведомления». Список микроархитектур для IA-32 ну очень длинный, я вынужден снова отослать интересующихся в Википедию.

Кстати, официальная база данных для сравнения выпущенных продуктов Intel называется ARK. С датами выхода, поддерживаемыми наборами команд, размерами и рекомендуемой ценой для партии. Есть даже Андроид приложение 🙂

Intel IA-64. Является полным синонимом термина «Intel Itanium».

Кстати, и для Itanium есть ещё одно обозначение — IPF.

Вполне официально расшифровывается как Intel Architecture. Создавалась как замена x86, которую переименовали в IA-32, и которая исчерпала свой потенциал по тогдашним представлениям самой Intel. Но внедрить принципиально новую и полностью несовместимую со старой технологию у них не получилось — подсуетилась AMD со своим 64-битным расширением к x86, под которую адаптировать софт и ОСы оказалось намного проще. Поэтому пришлось отказаться от IA-64 и бросить все силы в погоню за AMD. Вернули название x86, добавили EM64T (называть архитектуру IA-32 64-bit как-то глупо 🙂 а название IA-64 уже было занято, пришлось изголяться), вот так и получилась x86-64 и прочая чехарда с названиями.

Это маркетинговое название, которое не расшифровывается.

Ваша версия романтична, поэтична и очень красива, но не отражает действительность чуть более, чем полностью. Главная ошибка в ваших рассуждениях заключается в том, что вы предполагаете, что процессор от идеи до железа может быть реализован буквально за пол года в качесвте ответа на шаги конкурента. Это, к сожалению, не так. Примерно за два года до выхода железа публикуется его ISA — набор команд. На этот момент всё планирование, все эксперименты и багфикс в наборах инструкций уже завершён и осталось только отладить железячную часть. В этот момент можно напрячься и добавить кэшей, чуть увеличить тактовую частоту, но архитектура как таковая готова и команда работает уже давно над новыми чипами.

Итак, работа на Итаниумом началась ещё с лохматого 1989 года. Что, простите там было у AMD в тот момент? Чип делали долго и тщательно. Выверяли набор инструкций, проводили научные диспуты и старались сделать красивую архитектуру. В 2001 году сделали. Архитектура получилась красивая, стройная и лично мне она очень нравится. Но к сожалению, с некоторыми фундаментальными недостатками. Один из которых, заключается в том, что архитектура in-order и требует очень хорошей компиляторной поддержки для достижения хорошей или даже хотя бы приемлемой производительности. Ещё одним недостатком были проблемы с увеличением частоты из-за архитектурных особенностей, которые вовремя не смогли починить и частота долгое время была ахилесовой пятой этой архитектуры.

В это время х86 развивался и рос. Увеличивалось окно Out-Of-Order буфера, росло количество исполнительных устройств, взрослели векторные инструкции. Всё это сводило на нет преимущества широкого слова (Itanium2 способен за такт исполнять до 6 инструкций, правда если ограничения на инструкции одного типа).

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

Естественно, в Интеле над 64 битами работали, но АМД обогнал на повороте и первым опубликовал свою спецификацию и первым выпустил чип. Это был умный и хитрый шаг. Но чип от Интел появился не сильно позже, что подтверждает, что он был и так практически готов. Но вот пришлось срочно переделывать имеющееся на ту спецификацию, которую выпустил АМД, ибо создавать ад для софтверной экосистемы в виде двух версий 64 битных чипов никто не хотел.

Заметьте, с Итаниумом это вообще никак не связано, он продолжал жить своей жизнью. Только вот с именованием получилась путаница и 64 битную версию x86 пришлось назвать Intel64, а IA-64 оставить за Итаниумом.

Я не очень понял ваше замечание про in-order. В IA-64 модель памяти слабее чем в x86/x64, есть value speculation, что дает больше возможностей по выполнению инструкций Out-Of-Order.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.