x86 — это семейство архитектур набора команд (ISA), то есть договор о том, какие машинные команды понимает процессор и как они устроены. Ведет начало от процессора Intel 8086 (1978), а название закрепилось по ряду его наследников, чьи номера оканчивались на 86: 80186, 80286, 80386, 80486.
Содержание
Ниже я разбираю именно линейку x86: как она прошла путь от 16 к 32 и 64 битам, чем x86 отличается от x86-64 (он же x64, он же AMD64), в чем разница с ARM и что на практике значат разрядность, регистры и режимы работы. Про внутреннее устройство любого процессора и про типологию CISC/RISC есть отдельные материалы — здесь фокус на самой распространенной десктопной и серверной архитектуре.
История x86: от 16 к 32 и 64 битам
Разрядность архитектуры — это ширина данных и адресов, которые процессор обрабатывает за один заход. У x86 она росла ступенями, и каждая ступень сохраняла совместимость с предыдущей.
16 бит (1978). Первым был Intel 8086 — 16-разрядный процессор с 16-битными регистрами. Именно его система команд стала основой всей архитектуры. Позже, в 80286 (1982), появился защищенный режим, но он оставался 16-битным.
32 бита (1985). Процессор Intel 80386 (i386) расширил архитектуру до 32 бит. Его программная модель и кодирование команд стали общим знаменателем для всех 32-битных x86-процессоров — этот набор называют IA-32 или просто x86 в узком смысле. 32-битный адрес дает 2^32 = 4 ГиБ адресуемой памяти.
64 бита (2000-2003). Расширение до 64 бит предложила уже не Intel, а AMD: спецификация x86-64 (AMD64) была опубликована в 2000 году, а первые процессоры с ее поддержкой — серверные Opteron и настольные Athlon 64 — вышли в 2003 году. Позже Intel приняла тот же набор (под именами EM64T и Intel 64).
Важно не перепутать причинно-следственную связь: x86-64 — это расширение x86, а не наоборот. Старая формулировка «x64 послужил основой x86» переворачивает историю: сначала была 16- и 32-битная x86, а 64-битный режим достроили сверху через 15-25 лет.
x86 и x86-64 (AMD64): в чем разница
На практике термины путают, поэтому разведу их по цепочке:
- x86 в узком смысле — 32-битная архитектура (IA-32), наследница i386;
- x86-64 (синонимы: x64, AMD64, Intel 64) — ее 64-битное расширение;
- когда в установщике или свойствах системы пишут «x86», почти всегда имеют в виду 32-битную сборку, а «x64» — 64-битную.
Ключевые отличия удобно смотреть таблицей.
| Параметр | x86 (IA-32) | x86-64 (AMD64) |
|---|---|---|
| Разрядность | 32 бита | 64 бита |
| Появление | 1985 (Intel 80386) | 2000 — спецификация AMD, 2003 — первые процессоры |
| Адресное пространство на процесс | 2^32 = 4 ГиБ | до 2^48 = 256 ТиБ в текущих реализациях |
| Регистры общего назначения | 8 (EAX, EBX, …) шириной 32 бита | 16 (RAX, …, R8-R15) шириной 64 бита |
| Запуск 32-битного кода | да | да, через режим совместимости |
| Запуск 64-битного кода | нет | да |
Два момента в таблице стоит прокомментировать, потому что вокруг них много неточностей.
Про память x86. Лимит в 4 ГиБ — это адресное пространство одного процесса, а не жесткий потолок железа. Часть диапазона резервируется под устройства, поэтому в 32-битной системе пользователю нередко доступно около 3-3,5 ГБ. Технология PAE позволяет 32-битной ОС адресовать больше физической памяти, но отдельный 32-битный процесс все равно ограничен своими 4 ГиБ.
Про память x86-64. Теоретический потолок 64-битного адреса огромен (2^64 — это те самые «16 миллиардов гигабайт», или 16 ЭиБ), но реальные процессоры столько не адресуют. Текущие реализации используют 48-битный виртуальный адрес (256 ТиБ) и до 52-битного физического. Цифры растут от поколения к поколению, поэтому конкретный потолок стоит смотреть по документации на процессор, а не по «16 миллиардам».
Чем x86 отличается от ARM
x86 и ARM — это разные архитектуры набора команд, и различие глубже, чем «Intel против смартфонов».
x86 исторически относится к типу CISC (сложный набор команд): много разных инструкций переменной длины, богатые режимы адресации. ARM — это RISC (сокращенный набор команд): команды проще и чаще фиксированной длины. На практике граница размылась — современные x86-ядра внутри дробят сложные команды на простые микрооперации, — но сам договор о командах у архитектур несовместим: бинарный код x86 не запустится на ARM напрямую.
ARM выросла из проекта Acorn RISC Machine: первый кристалл ARM1 заработал в 1985 году, а компания Arm (тогда Advanced RISC Machines) была основана в 1990 году как совместное предприятие Acorn, Apple и VLSI. Архитектуру с самого начала затачивали под энергоэффективность, поэтому она заняла рынок смартфонов и встраиваемых систем.
За последние годы ARM вышла и на десктопы: в 2020 году Apple начала переводить компьютеры Mac на собственные чипы Apple Silicon (M1 и далее) на архитектуре ARM. Есть и Windows на ARM. Совместимость со старым x86/x64-софтом там решается эмуляцией (в Windows 11 за это отвечает слой Prism), а не прямым исполнением — за перевод чужих команд платят производительностью.
Ни одна архитектура не «лучше» вообще: x86-64 держит десктопы и серверы за счет производительности и совместимости с накопленным софтом, ARM выигрывает по энергоэффективности и потому доминирует в мобильных устройствах. Подробный разбор ARM как отдельной архитектуры выходит за рамки этой статьи.
Регистры и режимы работы x86 кратко
Регистры — это сверхбыстрые ячейки внутри процессора, куда кладут операнды и промежуточные результаты. Их эволюция наглядно показывает рост разрядности x86:
- в 8086 — 16-битные регистры общего назначения: AX, BX, CX, DX и другие;
- в i386 их расширили до 32 бит и добавили приставку E: EAX, EBX, …;
- в x86-64 они стали 64-битными с приставкой R (RAX, RBX, …), и к восьми исходным добавили еще восемь (R8-R15) — всего 16 регистров общего назначения.
Старшие имена включают младшие: младшие 32 бита RAX доступны как EAX, младшие 16 — как AX. Именно поэтому 64-битный процессор без проблем исполняет и 32-, и 16-битный код.
Режимы работы определяют, как процессор видит память и какие правила защиты применяет:
- реальный режим (real mode) — 16-битный, как у 8086; прямая адресация, без защиты. Сейчас в нем в основном стартует загрузчик;
- защищенный режим (protected mode) — появился с 80286, полноценным стал в i386; дает 32-битную адресацию, виртуальную память, кольца привилегий и защиту процессов друг от друга;
- длинный режим (long mode) — вводится в x86-64; включает собственно 64-битный подрежим и подрежим совместимости для запуска 32- и 16-битных программ без эмуляции.
Смежные темы: Процессоры: устройство и принципы работы, Память компьютера: виды и назначение, Двоичная система счисления и двоичный код.
FAQ
«x86» — это всегда 32 бита? В контексте установщиков и сборок ОС — да, «x86» обычно означает 32-битную версию, а «x64» — 64-битную. Но как название семейства архитектур x86 охватывает и 16-, и 32-, и 64-битные поколения. Смысл зависит от контекста.
Пойдут ли мои старые 32-битные программы на 64-битном процессоре? На уровне процессора — да: x86-64 исполняет 32-битный код через режим совместимости. Ограничения обычно накладывает операционная система (например, в 64-битной ОС может не быть 32-битной подсистемы) или отсутствие 16-битной поддержки в современных Windows.
Почему x86 не вытеснили полностью, если ARM экономичнее? Из-за совместимости: за десятилетия накоплен огромный объем ПО, собранного под x86, и на десктопах/серверах производительность и предсказуемость этой экосистемы пока перевешивают выигрыш в энергоэффективности.
Выводы
x86 — это семейство архитектур набора команд, выросшее из Intel 8086 (1978). Оно прошло путь от 16 бит через 32-битную IA-32 (i386, 1985) к 64-битному расширению x86-64 (AMD64, спецификация 2000, процессоры 2003), сохраняя на каждом шаге обратную совместимость. x86-64 — это надстройка над x86, а не его основа.
Главные практические различия сводятся к разрядности: ширина регистров и объем адресуемой памяти. 32-битный процесс ограничен 4 ГиБ, 64-битный в текущих реализациях адресует до 256 ТиБ виртуальной памяти и имеет вдвое больше регистров общего назначения. ARM — это отдельная, несовместимая по коду архитектура с иным балансом производительности и энергопотребления, а не «конкурент внутри x86».
Освойте тему на практике
Архитектура процессора — фундамент низкоуровневого и системного программирования, где важно, как код ложится на регистры, режимы и разрядность. Разобраться в этом системно можно на курсе по системному программированию, а познакомиться с форматом обучения и преподавателями — на открытых уроках и вебинарах.



