Fruitsekta.ru

Мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Архитектура x86 и x64

Десять имён для одной архитектуры


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

  • Скопировать ссылку
  • Facebook
  • Twitter
  • ВКонтакте
  • Telegram
  • Pocket
Читать еще:  Произошла ошибка unarc dll

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

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

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

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

64 бита

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

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

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

как через 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.

Чем архитектура ARM отличается от x86

В наше время существует две самые популярные архитектуры процессоров. Это x86, которая была разработана еще 80х годах и используется в персональных компьютерах и ARM — более современная, которая позволяет сделать процессоры меньше и экономнее. Она используется в большинстве мобильных устройств или планшетов.

Обе архитектуры имеют свои плюсы и минусы, а также сферы применения, но есть и общие черты. Многие специалисты говорят, что за ARM будущее, но у нее остаются некоторые недостатки, которых нет в x86. В нашей сегодняшней статье мы рассмотрим чем архитектура arm отличается от x86. Рассмотрим принципиальные отличия ARM или x86, а также попытаемся определить что лучше.

Что такое архитектура?

Процессор — это основной компонент любого вычислительного устройства, будь то смартфон или компьютер. От его производительности зависит то, насколько быстро будет работать устройство и сколько оно сможет работать от батареи. Если говорить просто, то архитектура процессора — это набор инструкций, которые могут использоваться при составлении программ и реализованы на аппаратном уровне с помощью определенных сочетаний транзисторов процессора. Именно они позволяют программам взаимодействовать с аппаратным обеспечением и определяют каким образом будут передаваться данные в память и считываться оттуда.

На данный момент существуют два типа архитектур: CISC (Complex Instruction Set Computing) и RISC (Reduced Instruction Set Computing). Первая предполагает, что в процессоре будут реализованы инструкции на все случаи жизни, вторая, RISC — ставит перед разработчиками задачу создания процессора с набором минимально необходимых для работы команд. Инструкции RISC имеют меньший размер и более просты.

Архитектура x86

Архитектура процессора x86 была разработана в 1978 году и впервые появилась в процессорах компании Intel и относится к типу CISC. Ее название взято от модели первого процессора с этой архитектурой — Intel 8086. Со временем, за неимением лучшей альтернативы эту архитектуру начали поддерживать и другие производители процессоров, например, AMD. Сейчас она является стандартом для настольных компьютеров, ноутбуков, нетбуков, серверов и других подобных устройств. Но также иногда процессоры x86 применяются в планшетах, это довольно привычная практика.

Первый процессор Intel 8086 имел разрядность 16 бит, далее в 2000 годах вышел процессор 32 битной архитектуры, и еще позже появилась архитектура 64 бит. Мы подробно рассматривали разрядность процессоров в отдельной статье. За это время архитектура очень сильно развилась были добавлены новые наборы инструкций и расширения, которые позволяют очень сильно увеличить производительность работы процессора.

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

Читать еще:  Принципы построения архитектуры

Архитектура ARM

Эта архитектура была представлена чуть позже за x86 — в 1985 году. Она была разработана известной в Британии компанией Acorn, тогда эта архитектура называлась Arcon Risk Machine и принадлежала к типу RISC, но затем была выпущена ее улучшенная версия Advanted RISC Machine, которая сейчас и известна как ARM.

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

В отличие от x86, разработчики изначально пытались получить минимальные затраты на ресурсы, они имеют меньше инструкций процессора, меньше транзисторов, но и соответственно меньше всяких дополнительных возможностей. Но за последние годы производительность процессоров ARM улучшалась. Учитывая это, и низкое энергопотребление они начали очень широко применяться в мобильных устройствах, таких как планшеты и смартфоны.

Отличия ARM и x86

А теперь, когда мы рассмотрели историю развития этих архитектур и их принципиальные отличия, давайте сделаем подробное сравнение ARM и x86, по различным их характеристикам, чтобы определить что лучше и более точно понять в чем их разница.

Производство

Производство x86 vs arm отличается. Процессоры x86 производят только две компании Intel и AMD. Изначально эта была одна компания, но это совсем другая история. Право на выпуск таких процессоров есть только у этих компаний, а это значит, что и направлением развития инфраструктуры будут управлять только они.

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

Количество инструкций

Это главные различия архитектуры arm и x86. Процессоры x86 развивались стремительно, как более мощные и производительные. Разработчики добавили большое количество инструкций процессора, причем здесь есть не просто базовый набор, а достаточно много команд, без которых можно было бы обойтись. Изначально это делалось чтобы уменьшить объем памяти занимаемый программами на диске. Также было разработано много вариантов защит и виртуализаций, оптимизаций и многое другое. Все это требует дополнительных транзисторов и энергии.

ARM более прост. Здесь намного меньше инструкций процессора, только те, которые нужны операционной системе и реально используются. Если сравнивать x86, то там используется только 30% от всех возможных инструкций. Их проще выучить, если вы решили писать программы вручную, а также для их реализации нужно меньше транзисторов.

Потребление энергии

Из предыдущего пункта выплывает еще один вывод. Чем больше транзисторов на плате, тем больше ее площадь и потребление энергии, правильно и обратное.

Процессоры x86 потребляют намного больше энергии, чем ARM. Но на потребление энергии также влияет размер самого транзистора. Например, процессор Intel i7 потребляет 47 Ватт, а любой процессор ARM для смартфонов — не более 3 Ватт. Раньше выпускались платы с размером одного элемента 80 нм, затем Intel добилась уменьшения до 22 нм, а в этом году ученые получили возможность создать плату с размером элемента 1 нанометр. Это очень сильно уменьшит энергопотребление без потерь производительности.

За последние годы потребление энергии процессорами x86 очень сильно уменьшилось, например, новые процессоры Intel Haswell могут работать дольше от батареи. Сейчас разница arm vs x86 постепенно стирается.

Тепловыделение

Количество транзисторов влияет еще на один параметр — это выделение тепла. Современные устройства не могут преобразовывать всю энергию в эффективное действие, часть ее рассеивается в виде тепла. КПД плат одинаковый, а значит чем меньше транзисторов и чем меньше их размер — тем меньше тепла будет выделять процессор. Тут уже не возникает вопрос ARM или x86 будет выделять меньше теплоты.

Производительность процессоров

ARM изначально не были заточены для максимальной производительности, это область преуспевания x86. Отчасти этому причина меньше количество транзисторов. Но в последнее время производительность ARM процессоров растет, и они уже могут полноценно использоваться в ноутбуках или на серверах.

Выводы

В этой статье мы рассмотрели чем отличается ARM от x86. Отличия довольно серьезные. Но в последнее время грань между обоими архитектурами стирается. ARM процессоры становятся более производительными и быстрыми, а x86 благодаря уменьшению размера структурного элемента платы начинают потреблять меньше энергии и выделять меньше тепла. Уже можно встретить ARM процессор на серверах и в ноутбуках, а x86 на планшетах и в смартфонах.

А как вы относитесь к этим x86 и ARM? За какой технологией будущее по вашему мнению? Напишите в комментариях! Кстати, Линус Торвальдс предпочитает x86.

На завершение видео о развитии арихтектуры ARM:

Ссылка на основную публикацию
Adblock
detector