ИА-32
IA-32 (сокращение от « Архитектура Intel, 32-битная », обычно называемая i386) . [1] [2] ) [3] — это 32-битная версия x86 архитектуры набора команд , разработанная Intel и впервые реализованная в 80386 микропроцессоре в 1985 году. IA-32 — первое воплощение x86, поддерживающее 32-битные вычисления; [4] в результате термин «IA-32» может использоваться как метоним для обозначения всех версий x86, поддерживающих 32-битные вычисления. [5] [6]
В различных директивах языков программирования IA-32 до сих пор иногда называют архитектурой «i386». В некоторых других контекстах определенные итерации IA-32 ISA иногда обозначаются i486 , i586 и i686 инструкций, , имея в виду надмножества предлагаемые микроархитектурами 80486 , P5 и P6 соответственно. Эти обновления предлагали многочисленные дополнения к базовому набору IA-32, включая возможности операций с плавающей запятой и расширения MMX .
Intel исторически была крупнейшим производителем процессоров IA-32, а вторым по величине поставщиком была AMD . В 1990-е годы VIA , Transmeta и другие производители микросхем также производили процессоры, совместимые с IA-32 (например, WinChip ). В современную эпоху Intel по-прежнему производила процессоры IA-32 на Intel Quark платформе микроконтроллеров до 2019 года; однако с 2000-х годов большинство производителей (включая Intel) перешли почти исключительно к внедрению процессоров на базе 64-битного варианта x86, x86-64 . По спецификации x86-64 предлагает устаревшие режимы работы, работающие на IA-32 ISA, для обеспечения обратной совместимости. Даже учитывая современную распространенность x86-64, на сегодняшний день версии многих современных операционных систем с защищенным режимом IA-32 все еще поддерживаются, например, Microsoft Windows (до Windows 10 ), [7] Windows Server (до Windows Server 2008 ) [8] и дистрибутив Debian Linux . [9] Несмотря на название IA-32 (и вызывающее некоторую потенциальную путаницу), 64-битная эволюция x86, произошедшая от AMD, не будет известна как «IA-64», вместо этого это имя будет принадлежать архитектуре Intel Itanium .
Архитектурные особенности [ править ]
Основной определяющей характеристикой IA-32 является наличие 32-битных регистров процессора общего назначения (например, EAX и EBX), 32-битных целочисленных арифметических и логических операций, 32-битных смещений внутри сегмента в защищенном режиме и трансляция сегментированных адресов в 32-битные линейные адреса. Дизайнеры воспользовались возможностью внести и другие улучшения. Некоторые из наиболее значительных изменений (по сравнению с 16-битным набором команд 286 ):
- 32-битные целочисленные возможности
- Все регистры общего назначения (GPR) расширены с 16 бит до 32 бит, и все арифметические и логические операции, операции между памятью и регистром и между регистрами и т. д. могут работать непосредственно с 32-битными целыми числами. По умолчанию операции push и pop в стеке выполняются с шагом в 4 байта, а несегментированные указатели имеют ширину 4 байта.
- Более общие режимы адресации
- Любой GPR может использоваться в качестве базового регистра, а любой GPR, кроме ESP, может использоваться в качестве индексного регистра в ссылке на память. Значение индексного регистра можно умножить на 1, 2, 4 или 8 перед добавлением к значению базового регистра и смещению.
- Дополнительные сегментные регистры
- Предусмотрены два дополнительных сегментных регистра: FS и GS.
- Большее виртуальное адресное пространство
- Архитектура IA-32 определяет 48-битный формат сегментированного адреса с 16-битным номером сегмента и 32-битным смещением внутри сегмента. Сегментированные адреса отображаются в 32-битные линейные адреса.
- Пейджинг по требованию
- 32-битные линейные адреса — это виртуальные адреса, а не физические адреса; они транслируются в физические адреса через таблицу страниц . В процессорах 80386, 80486 и исходных процессорах Pentium физический адрес составлял 32 бита; в процессорах Pentium Pro и более поздних версиях расширение физического адреса позволяло использовать 36-битные физические адреса, хотя размер линейного адреса по-прежнему составлял 32 бита.
Режимы работы [ править ]
Режим работы | операционная система Требуется | Тип выполняемого кода | Размер адреса по умолчанию | Размер операнда по умолчанию | Типичная георадара ширина |
---|---|---|---|---|---|
Защищенный режим | 32-битная операционная система или загрузчик | 32-битный код защищенного режима | 32 бита | 32 бита | 32 бита |
16-битная операционная система с защищенным режимом или загрузчик или 32-битный загрузчик | 16-битный код защищенного режима | 16 бит | 16 бит | 16 или 32 бита | |
Виртуальный режим 8086 | 16- или 32-битная операционная система с защищенным режимом | 16-битный код реального режима | 16 бит | 16 бит | 16 или 32 бита |
Реальный режим | 16-битная операционная система реального режима или загрузчик или 32-битный загрузчик | 16-битный код реального режима | 16 бит | 16 бит | 16 или 32 бита |
Нереальный режим | 16-битная операционная система реального режима или загрузчик или 32-битный загрузчик | 16-битный код реального режима | 32 бита | 16 бит | 16 или 32 бита |
См. также [ править ]
- х86-64
- ИА-64
- Список бывших производителей процессоров, совместимых с IA-32
- Уязвимость процессора при временном выполнении
Ссылки [ править ]
- ^ «То же самое (1) Страница руководства Mac OS X» . Руководство по общим командам BSD . Яблоко . 19 декабря 2008 года. Архивировано из оригинала 2 июня 2012 года . Проверено 3 августа 2013 г.
Двоичные файлы Thin Universal для указанной архитектуры [...] должны быть указаны как «i386», «x86_64» и т. д.
- ^ «Дополнительные предопределенные макросы» . программное обеспечение.intel.com . Интел . Архивировано из оригинала 15 февраля 2021 года . Проверено 25 ноября 2020 г.
- ^ Кемп, Стив. «Запуск 32-битных приложений в 64-битной версии Debian GNU/Linux» . Администрация Дебиан . Архивировано из оригинала 16 сентября 2013 года . Проверено 31 августа 2013 г.
- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32» . Корпорация Интел . Сентябрь 2014. с. 31. Архивировано из оригинала 26 января 2012 года . Проверено 19 декабря 2014 г.
Процессор Intel386 был первым 32-разрядным процессором в семействе архитектуры IA-32. Он представил 32-битные регистры для использования как для хранения операндов, так и для адресации.
- ^ Грин, Рональд В. (5 мая 2009 г.). «Что означают архитектуры IA-32, Intel 64 и IA-64?» . программное обеспечение.intel.com . Интел . Архивировано из оригинала 19 декабря 2014 года . Проверено 19 декабря 2014 г.
- ^ «Поддерживаемое оборудование» . Помощь Ubuntu . Канонический . Архивировано из оригинала 19 декабря 2014 года . Проверено 31 августа 2013 г.
- ^ «Системные требования и характеристики Windows 10 | Microsoft» . www.microsoft.com . Архивировано из оригинала 1 мая 2018 года . Проверено 20 августа 2018 г.
- ^ Скотт М. Фултон, III (16 мая 2007 г.). «Windows Server 2008 — последняя 32-разрядная операционная система » . БетаНьюс .
- ^ «Debian GNU/Linux на машинах x86» . Архивировано из оригинала 28 апреля 2019 года . Проверено 20 августа 2020 г.