Архітектура 32-розрядних мікропроцесорів
2. Програмна модель 32-розрядних МП
Програмну модель 32-розрядного процесора наведено на рисунку 1. Вона містить такі групи регістрів: регістри загального призначення, лічильник команд, регістр прапорців, сегментні регістри, регістри керування, системні адресні регістри, регістри налагодження та тестування.
Рисунок 1 - Програмна модель 32-розрядного процесора
Регістри загального призначення містять усі регістри даних і регістри-покажчики МП i8086 та i80286 і стільки само додаткових 32-розрядних регістрів. У позначенні 32-розрядних регістрів використовується літера Е (Expanded — розширений).
Лічильник команд ЕІР містить зміщення наступної виконуваної команди в сегменті кодів. Для 16-розрядних адрес використовуються молодші 16 розрядів (IP).
Регістр прапорців EF розширено до 32 розрядів. Молодші 16 розрядів регістра EF створюють регістр прапорців F 16-розрядного процесора. У регістр EF додано нові прапорці:
ID (Identification Flag) — прапорець дозволу команди ідентифікації CPU ID (Pentium+ і деякі процесори типу 486)*;
VIP (Virtual Interrupt Pending) — віртуальний запит переривання (Pentium+);
VIF (Virtual Interrupt Flag) — віртуальна версія прапорця дозволу переривання IF для багатозадачних систем (Pentium+);
AC (Alignment Check) — прапорець контролю вирівнювання. Використовується лише на рівні привілеїв 3. Якщо АС = 1 і AM = 1 (AM — біт у регістрі керування CRQ), то у разі звернення до операнда, не вирівняного за відповідною межею (2, 4, 8 байт)**, відбувається виняток 17 (i486+);
VM (Virtual 8086 Mode) — у захищеному режимі вмикає режим віртуального процесора 8086. Спроба використання привілейованих команд у цьому випадку приведе до винятку 13;
RF (Resume Flag) — прапорець поновлення. У режимі налагодження одиничне значення RF дозволяє здійснити рестарт команди після особливого випадку налагодження.
Сегментні регістри. Крім сегментних регістрів МП i8086 та i80286 (DS, CS, SS, ES), програмна модель містить два додаткових сегментних регістри даних — FS і GS. З кожним з шести сегментних регістрів пов'язані тіньові регістри дескрипторів. У тіньові регістри у захищеному режимі переписуються 32-розрядна базова адреса сегмента, 20-розрядна межа й атрибути (права доступу) з дескрипторних таблиць.
* У подальшому позначення i386+, i486+, Pentium+ означають, що наведені дані справедливі для вказаної моделі МП і всіх старших моделей.
** Вирівнювання операнда по межі 2,4,8 означає, що адреса операнда є кратною, тобто 2, 4, 8.
Керуючі регістри CR0 — CR3 (Control Register) зберігають ознаки стану процесора, спільні для всіх задач. Молодші чотири розряди регістра CR0 містять біти регістра MSW МП i80286 і деякі інші біти керування. Регістр CR1зарезервовано; регістр CR2 зберігає 32-розрядну лінійну адресу, за якою отримано відмову сторінки пам'яті; регістр CR3 у старших 20 розрядах зберігає фізичну базову адресу таблиці каталога сторінок і біти керування кеш-пам'яттю, а регістр CR4 (Pentium+) містить біти дозволів архітектурних розширень МП.
Системні адресні регістри. Системні покажчики (регістри глобальної дескрипторної таблиці GDTR і таблиці переривань IDTR) зберігають відповідно 32-розрядні базові адреси і 16-розрядні межі таблиць. Системні сегментні регістри задач TR і локальної дескрипторної таблиці LDTR є 6-розрядними селекторами. їм відповідають тіньові регістри дескрипторів, які містять 32-розрядну базову адресу сегмента, 20-розрядну межу і права доступу.
Регістри налагодження DR0—DR3 (Debug Register) зберігають 32-розрядні адреси точок зупину в режимі налагодження, DR4—DR5 зарезервовані і не використовуються; DR6 — відображує стан контрольної точки; DR7 — керує розміщенням у програмі контрольних точок.
Регістри тестування TR (Test Register) входять до групи модельно-специфічних регістрів, їхній склад і кількість залежать від типу процесора: в МП 386 використовувалися два регістри - TR6 і TR7, у Pentium-12 – TR1 –TR12. Ця група регістрів зберігає результати тестування МП і кеш-пам'яті.