IA-32
IA-32 (Intel Architecture, 32-bit) — это 32-битная архитектура системы команд (ISA) микропроцессоров, разработанная корпорацией Intel. Она является эволюционным развитием 16-битной архитектуры x86 (Intel 8086) и впервые была реализована в процессоре Intel 80386 (i386), выпущенном в 1985 году. IA-32 долгое время была доминирующей архитектурой для персональных компьютеров и серверов, обеспечивая обратную совместимость с 16-битным и 8-битным программным обеспечением. Впоследствии была вытеснена 64-битной архитектурой x86-64 (AMD64/Intel 64), но остаётся актуальной для встраиваемых систем и устаревших платформ.
История
Предпосылки и создание
В начале 1980-х годов 16-битные процессоры, такие как Intel 80286, столкнулись с ограничениями по адресации памяти (до 16 Мбайт в защищённом режиме) и производительности. Для удовлетворения растущих потребностей программного обеспечения, включая многозадачные операционные системы, Intel приступила к разработке 32-битного процессора, который сохранил бы совместимость с существующим кодом. Проект, получивший кодовое название P3, завершился выпуском процессора Intel 80386 (i386) в октябре 1985 года. Он стал первым процессором, реализовавшим архитектуру IA-32.
Развитие и доминирование
На протяжении 1990-х и начала 2000-х годов IA-32 активно развивалась. Intel выпускала процессоры Pentium (1993), Pentium Pro (1995), Pentium II (1997), Pentium III (1999) и Pentium 4 (2000), каждый из которых вносил улучшения в микроархитектуру, но сохранял базовый набор команд IA-32. В 1999 году компания AMD выпустила процессор Athlon, также совместимый с IA-32, что привело к конкуренции на рынке x86-совместимых процессоров. В 1997 году Intel представила набор инструкций MMX, а в 1999 году — SSE (Streaming SIMD Extensions), которые расширяли возможности IA-32 для мультимедийных и научных вычислений.
Переход к 64-битной архитектуре
В 2003 году AMD выпустила процессор Opteron с архитектурой AMD64, которая расширяла IA-32 до 64-бит. Intel, первоначально делавшая ставку на собственную 64-битную архитектуру IA-64 (Itanium), в 2004 году была вынуждена принять AMD64, выпустив процессоры с поддержкой Intel 64 (ранее EM64T). С этого момента IA-32 стала использоваться в основном в режиме совместимости для 32-битных приложений на 64-битных операционных системах. В 2010-х годах выпуск новых процессоров, работающих исключительно в 32-битном режиме, практически прекратился, однако IA-32 остаётся востребованной во встраиваемых системах и для запуска устаревшего ПО.
Архитектура
Регистры
IA-32 использует 32-битные регистры общего назначения: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Они являются расширением 16-битных регистров AX, BX, CX, DX, SI, DI, BP, SP из архитектуры x86. Для обратной совместимости доступны 8-битные и 16-битные части регистров (например, AL, AH, AX для EAX). Также имеются сегментные регистры (CS, DS, ES, FS, GS, SS), регистр флагов EFLAGS и указатель инструкции EIP.
Адресация памяти
IA-32 поддерживает плоскую модель памяти, где адресное пространство составляет 4 Гбайт (2^32 байт). Адресация осуществляется через 32-битные виртуальные адреса, которые преобразуются в физические с помощью страничной трансляции (поддержка страниц размером 4 Кбайт, 2 Мбайт и 4 Мбайт). В защищённом режиме используется сегментация, которая в современных операционных системах обычно настраивается на плоскую модель (все сегменты отображаются на всё адресное пространство).
Режимы работы
IA-32 поддерживает несколько режимов работы:
- Реальный режим (Real Mode) — унаследован от 8086, адресация до 1 Мбайт, используется для загрузки и совместимости.
- Защищённый режим (Protected Mode) — основной режим IA-32, обеспечивает многозадачность, защиту памяти, страничную трансляцию и поддержку виртуальной памяти.
- Режим виртуального 8086 (Virtual 8086 Mode) — подрежим защищённого режима, позволяющий выполнять 16-битные программы в изолированной среде.
- Режим управления системой (System Management Mode, SMM) — привилегированный режим для управления питанием и аппаратными функциями.
Набор команд
IA-32 включает более 200 инструкций, разделённых на категории:
- Общие инструкции передачи данных (MOV, PUSH, POP, LEA).
- Арифметические инструкции (ADD, SUB, MUL, DIV, INC, DEC).
- Логические инструкции (AND, OR, XOR, NOT, SHL, SHR).
- Инструкции управления потоком (JMP, CALL, RET, условные переходы JE, JNE, JG и др.).
- Инструкции работы со строками (MOVS, CMPS, SCAS, LODS, STOS).
- Инструкции ввода-вывода (IN, OUT).
- Инструкции управления флагами (CLC, STC, CLD, STD).
- Инструкции системного управления (HLT, CLI, STI, INT, IRET).
Расширения набора команд
В процессе развития IA-32 были добавлены следующие расширения:
- MMX (MultiMedia eXtensions) — 57 инструкций для целочисленных SIMD-операций, работающих с 64-битными регистрами MMX (отображаемыми на мантиссы FPU).
- SSE (Streaming SIMD Extensions) — 70 инструкций для операций с плавающей запятой над 128-битными XMM-регистрами, включая поддержку потоковой загрузки данных.
- SSE2 — расширение SSE, добавляющее поддержку целочисленных SIMD-операций на 128-битных регистрах и операции с двойной точностью.
- SSE3 — 13 инструкций для улучшения обработки потоков данных и синхронизации.
- SSSE3 (Supplemental SSE3) — 16 дополнительных инструкций для целочисленных операций.
- SSE4.1, SSE4.2 — расширения для ускорения обработки строк, векторизации и криптографии.
- AES-NI (Advanced Encryption Standard New Instructions) — инструкции для аппаратного ускорения шифрования AES.
- AVX (Advanced Vector Extensions) — расширение, введённое в 2011 году, но работающее в 64-битном режиме; в 32-битном режиме поддерживается ограниченно.
Применение
Персональные компьютеры
IA-32 была основной архитектурой для большинства персональных компьютеров с середины 1980-х до середины 2000-х годов. Операционные системы, такие как MS-DOS, Windows 95/98/Me, Windows NT/2000/XP (32-битные версии), Linux (32-битные сборки), macOS (до версии 10.6 Snow Leopard), работали на процессорах IA-32. Программное обеспечение, написанное для IA-32, могло выполняться на 64-битных процессорах в режиме совместимости.
Встраиваемые системы
Благодаря низкому энергопотреблению и широкой экосистеме, IA-32 используется во встраиваемых системах: промышленных контроллерах, терминалах, медицинском оборудовании, системах управления. Процессоры Intel Atom и Celeron на базе IA-32 (например, серии N и J) применяются в неттопах, тонких клиентах и IoT-устройствах.
Серверы
В серверном сегменте IA-32 доминировала до появления 64-битных процессоров. Многие серверные приложения, включая базы данных и веб-серверы, были оптимизированы для 32-битной архитектуры. С переходом на x86-64 IA-32 используется для запуска устаревших 32-битных приложений на 64-битных серверах.
Ограничения и критика
Ограничение адресации
Главное ограничение IA-32 — 32-битная адресация, позволяющая адресовать не более 4 Гбайт оперативной памяти. Для приложений, требующих больших объёмов памяти (например, редактирование видео, научные расчёты, базы данных), это стало серьёзным препятствием. Технология Physical Address Extension (PAE) позволяла процессорам IA-32 адресовать до 64 Гбайт физической памяти, но виртуальное адресное пространство каждого процесса оставалось ограниченным 4 Гбайт.
Обратная совместимость
Необходимость поддержки 16-битного кода привела к усложнению архитектуры и снижению производительности в некоторых режимах. Наличие множества режимов работы (реальный, защищённый, виртуальный 8086) увеличивало сложность операционных систем и драйверов.
Устаревание
С распространением 64-битных процессоров и операционных систем IA-32 постепенно теряет актуальность. Многие современные программы и операционные системы (например, macOS, начиная с версии 10.15 Catalina, и Windows 11) перестали поддерживать 32-битные приложения, что ограничивает применение IA-32. В 2023 году Intel объявила о прекращении выпуска 32-битных процессоров для настольных ПК, сосредоточившись на 64-битных решениях.
Интересные факты
- Первый процессор IA-32, Intel 80386, содержал 275 000 транзисторов и работал на частоте до 33 МГц. Для сравнения, современные 64-битные процессоры содержат миллиарды транзисторов.
- Архитектура IA-32 используется в некоторых игровых консолях, например, в Xbox (2001) на базе процессора Intel Pentium III.
- В 2018 году компания Intel выпустила процессор Intel Celeron N3350 (Apollo Lake), который является одним из последних 32-битных процессоров, предназначенных для встраиваемых систем.
- IA-32 поддерживает до 256 прерываний (INT 0x00 — INT 0xFF), из которых часть зарезервирована для системных нужд (например, INT 0x00 — деление на ноль, INT 0x03 — точка останова).
- В 2020 году компания Microsoft объявила, что Windows 10 версии 2004 будет последней версией, поддерживающей 32-битные процессоры, хотя обновления безопасности для 32-битных систем продолжают выпускаться.
Источники
- Intel Corporation. «Intel 64 and IA-32 Architectures Software Developer’s Manual» (тома 1–3).
- Patterson, D. A., Hennessy, J. L. «Computer Organization and Design: The Hardware/Software Interface» (5-е издание).
- Шагурин, И. И. «Микропроцессоры Intel: архитектура, программирование, интерфейсы» (М.: Горячая линия – Телеком, 2005).
- Танебаум, Э. С. «Архитектура компьютера» (6-е издание, СПб.: Питер, 2013).
- Документация AMD: «AMD64 Architecture Programmer’s Manual» (тома 1–3).
- Статьи и обзоры на сайте OSDev Wiki (https://wiki.osdev.org/).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →