Структура процесора сімейства IA-32 дуже складна, оскільки в них апаратно реалізована сукупність паралельних конвеєрів (конвеєрна і суперскалярна архітектура). На малюнку 7 процесор IA-32 представлений у вигляді набору основних блоків.
Блок інтерфейсу з магістраллю управляє передачею команд і даних з пам'яті в процесор і результатів - назад в оперативну пам'ять. Блок передвибірки команд відповідає за читання наступних команд з сегмента кодів. Блок декодування команд здійснює розшифровку команди і формування послідовності керуючих сигналів для її виконання (аналог УУ). Виконавчий блок відповідно до назви виконує команду (аналог АЛП).
Малюнок 7 - Структура процесора сімейства IA-32
Крім того було додано ще кілька спеціалізованих регістрів, використовуваних в захищеному режимі:
а) керуючі регістри С0..С3;
TR - регістр стану завдання;
в) налагоджувальні регістри;
г) тестові регістри.
3) віртуальний - в цьому режимі процесор моделює псевдоодновременную роботу декількох віртуальних процесорів i8086. В даний час режим застарів і практично не використовується.
Таблиця локальних дескрипторів містить дескриптори сегментів програми, а таблиця глобальних - дескриптори сегментів програм операційної системи. Два біта селектора містять код рівня привілеїв сегмента, який перевіряється при зверненнях з інших програм. Таким чином, реалізується захист сегментів.
Префікс повторення - використовується тільки для команд обробки рядків і буде розглянуто далі.
Префікс розміру операнда (66h) - вказується, еслівместо 32-х розрядного регістра для зберігання операнда використовується 16-ти розрядний.
Малюнок 10 - Структура машинної команди IA-32
На малюнку 10 використані наступні позначення:
d - біт напрямку обробки, наприклад, пересилання даних: 1 - в регістр, 0 - з регістра; використовується в арифметичних командах і командах пересилання, якщо хоча б один операнд знаходиться в регістрі;
w - розмір операнда: 1 - операнди - подвійні слова, 0 - операнди - байти;
mod - режим: 00 - Disp = 0 - зсув в команді відсутня (0 байт);
01 - Disp = 1 - безпосереднє зміщення розміром 1 байт;
10 - Disp = 2 - безпосереднє зміщення розміром 2 байти;
11 - обидва операнда знаходяться в регістрах.
Регістри кодуються в залежності від розміру операнда (w):