Открыть сервис

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 →