Архітектура 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-розрядну межу і права доступу.

Регістри налагодження DR0DR3 (Debug Register) зберігають 32-розрядні адреси точок зупину в режимі нала­годження, DR4DR5 зарезервовані і не використовуються; DR6 — відображує стан контрольної точки; DR7 — керує розміщенням у програмі контрольних точок.

Регістри тестування TR (Test Register) входять до групи модельно-специфічних регістрів, їхній склад і кількість залежать від типу процесора: в МП 386 використовувалися два регістри - TR6 і TR7, у Pentium-12 – TR1TR12. Ця група регістрів зберігає результати тестування МП і кеш-пам'яті.