x86 может быть общим термином, который охватывает все процессоры, обратно совместимые с 8086, и все расширения архитектуры, включая x86-64.
Обратите внимание, что IA-64 - это , а не x86 вообще, это Itanium (64-битная архитектура VLIW с явной спекуляцией / параллелизмом) . Он также был разработан Intel, но совершенно не связан с x86 с точки зрения совместимости или дизайна. (Ранние процессоры IA-64 также были интегрированы с ядром x86 для совместимости. Intel выпускала IA-64, а AMD - AMD64 / x86-64)
Intel иногда говорит о том, что их процессоры имеют ядра IA + интегрированный графический процессор и другую логику вне каждого ядра IA. (IA = Intel Architecture = x86).
32-битный x86, в частности (исключая 16-битный или 64-битный) можно назвать
- IA-32 (иногда используется Intel)
- i386 или i686 (распространено в Linux)
- (только для Windows): x86 . Да, действительно: в мире Windows «x86» означает 32-разрядный. Вот почему у вас есть каталог
Program Files (x86)
с таким именем. Этот выбор может привести к путанице в терминологии для всех, потому что x86 по-прежнему является лучшим способом обозначения архитектуры в целом, в отличие от ARM или MIPS.
- редко: x86-32. Официально он не используется ни одним из известных мне поставщиков оборудования или программного обеспечения, но это однозначный полезный термин.
Никогда не называй это х32. x32 - это вариант ILP32 для x86-64 System V ABI: 32-разрядные указатели в 64-разрядном режиме. https://en.wikipedia.org/wiki/X32_ABI
64-битная x86 проще ссылаться конкретно (исключая 32 и 16-битную):
- x86-64 или x86_64 (черта против подчеркивания не имеет никакого значения. В тексте большинство людей используют черту, но только
_
может быть частью имен функций / переменных в большинстве языков.)
- AMD64 или amd64
- (только для Windows) x64
- (В основном только в документации по архитектуре процессора Intel, они не популярны, и я не видел их в именах каталогов программного обеспечения или параметрах конфигурации) IA-32e или Intel64. «Е» означает «расширения», по-видимому. https://en.wikipedia.org/wiki/X86-64#Intel_64 имеет раздел истории, в котором упоминается наименование.
Не IA-64, это отдельная архитектура.
Конечно, если вы хотите быть педантичным, для поддержки устаревшего режима требуются процессоры x86-64, поэтому вы можете запустить чистую 32-битную ОС на процессоре x86-64, и она будет все еще a 64-битный процессор.
С 64-битным ядром, работающим в 32-битном пользовательском пространстве, ЦП находится в режиме «совместимости», который является лотом , как 32-битный защищенный режим, за исключением того, что формат таблицы страниц имеет 52 физические адреса. (Больше, чем 36-битная физическая ширина адреса из таблиц страниц PAE, на которой основан формат таблицы страниц x86-64.) Пространство пользователя будет трудно определить разницу между работой под 32-битным ядром и 64-битное ядро, за исключением специфических для ОС вещей, таких как запрос ядра с помощью системного вызова.
Имена каталогов программного обеспечения
Многие проекты идут с i386
против x86-64
или amd64
. Это была бы моя рекомендация как наименее двусмысленная. (Или, может быть, i686, если вас не интересует совместимость с процессорами старше PPro.)
Некоторые, например GMP (библиотека GNU MultiPrecision), которая имеет рукописный asm для многих архитектур, используют «x86» и «x86_64». https://gmplib.org/repo/gmp/file/tip/mpn.
(GMP имеет несколько настроенных вручную версий одной и той же функции для разных процессоров x86. В «x86» есть подкаталоги с различными версиями функций, настроенных на Pentum, Core 2, Haswell и / или использующих преимущества инструкций. устанавливать расширения, такие как BMI2. Это необычно, большинство проектов не получают такой конкретности. В некоторых может быть что-то, что может использовать AVX или AVX512, или SSE4.1, например, но это часто только в исходных файлах.)