Програмна модель 32 - розрядних мікропроцесорів

Програмна модель процесора являє собою набір з основних внутрішніх регістрів (рисунок 3.5). Всі регістри процесора мають власне ім'я, по якому до них можливе звернення по команді з програми. Регістри процесорів розширені до 32 розрядів, на що вказує буква Е стоїть перед ім'ям регістра. За призначенням і способом використання регістри можна розбити на наступні групи:







# 159; Регістри загального призначення (EАХ, EВХ, EСХ, EДХ, ESI, EDI, EBP, ESP);

# 159; Сегментні регістри (CS, DS, SS, ES, FS, GS);

# 159; Покажчик команд (EIP);

# 159; Регістр (або покажчик) прапорів (EF);

# 159; Керуючі регістри (CR0, CR1, CR2, CR3);

# 159; Регістри налагодження (DR0 ... DR7);

# 159; Регістри тестування (TR3, TR4, TR5, TR6, TR7);

# 159; модельно-специфічні регістри (які залежать від конкретної моделі процесора).

Опишемо коротко склад і призначення цих регістрів.

Регістри загального призначення

EAX (Extended accumulator, акумулятор); EBX (Extended base, база); ECL (Extended counter, лічильник); EDX (Extended date, дані); ESI (Extended source index, індекс джерела); EDI (Extended destination index, індекс приймача); ESP (Extended base pointer, покажчик бази); EBP (Extended stack pointer, покажчик стека).

Регістр прапорів EFLAGS також розширено до 32 біт Біти 0-15, певні для 8086 і 80286, мають колишнє призначення, ряд прапорів додався з появою процесорів 4-го і 5-го поколінь. Прапори регістра розбиті на три групи: - системні прапори; - прапори станів; - керуючі прапори.

Призначення бітів системних прапорів регістра EFLAGS описано нижче, призначення прапорів управління і стану дивись в МП 8086.

VIP (Virtual Interrupt Pending) - віртуальний запит переривання (Р5 +).

ID (Id Flag) - прапор доступності команди ідентифікації CPUID (P5 + і деякі 486).

AC (Alignment Check) - прапор контролю вирівнювання.

VM (Virtual 8086 Mode) - в захищеному режимі включає режим віртуального процесора 8086.

RF (Resume Flag) - прапор відновлення, використовується спільно з регістрами точок зупину.

IOPL (Input / Output Privilege Level) - рівень привілеїв введення / виведення.

NT (Nested Task Flag) - прапор вкладеної завдання.

Керуючі регістри (Control Registers) CRO, CR1, CR2, CR3 32 бітні регістри, зберігають ознаки стану процесора (рисунок 3.6) Регістр CRO забезпечує загальне керівництво режимами роботи процесора.

Регістр CR1 не використовується.

Регістр CR4 містить біти дозволу архітектурних розширень

31 16 12 1110 9 8 7 6 5 4 3 2 1 0

Малюнок 3.6 - Керуючі регістри процесора

Регістри налагодження (Debug Register) призначені для завдання і управління налагоджувальними точками зупинки.

Регістри DR4, DR5 в процесорі Pentium при вклю-ченном розширенні налагодження звернення до цих регістрів викликає виключення неприпустимого коду операції (#UD).

Регістр DR6 (Breakpoint Status) відображає стан контрольної точки.

Регістр DR7 (Breakpoint Control) управляє установкою контрольних точок.







TR3 - регістр даних внутрішнього кеша.

TR4 - тестовий регістр стану кеша.

TR5 - керуючий регістр тестування кеша.

TR6 - регістр для тесту кешування сторінок.

TR7 - регістр даних для тесту кешування сторінок.

Модельна специфічні регістри MSR (Model-Specific Registers) призначені для управління розширеннями налагодження, моніторингом продуктивності, машинним контролем, кешуванням областей фізичної пам'яті і іншими функціями. Їх призначення прив'язується до архітектури конкретного процесора, склад змінюється від моделі до моделі, доступ привілейованих.

- зміщення (Displacement або Disp) 8-, 16- або 32-бітове число, включене в команду;

- база (Base) -вміст базового регістра;

- Індекс (Index) - вміст індексного регістра;

- Масштаб (Scale) множник (1, 2, 4 або 8), зазначений в коді інструкції.

EA = Base + Index × Scale + Disp

Крім явного використання стека інструкціями PUSH і POP, стек автоматично використовується процесором при виконанні інструкцій виклику (CALL), повернень (RET і IRET), входу і виходу з процедур (ENTER і LEAVE), а також при обробці переривань.

За переривання в стек поміщається також і значення регістра EFLAGS. За інструкціями повернення цих значень витягуються з стека у відповідні регістри, і процесор продовжує виконувати перервану послідовність інструкцій.

Стек використовують для наступних цілей:

- організації переривань, викликів і повернень;

- тимчасового зберігання даних, коли під них немає сенсу виділяти фіксовані місця в пам'яті;

- передачі і повернення параметрів при викликах процедур.

До використання стека він повинен буде почати - повинні бути встановлені значення селектора SS і покажчика ESP так, щоб вони вказували на область реальної оперативної пам'яті.

Переривання і виключення

Переривання і виключення порушують нормальний хід виконання програми для обробки зовнішніх подій або команд переривань.

Переривання підрозділяються на апаратні, викликані електричними сигналами на входах процесора, і програмні, виконувані по команді INTxx.

Програмні переривання, строго кажучи, переривань не є, це лише своєрідний спосіб виклику процедур, але процесором вони обробляються як різновид переривань.

За переривання або виключення процесор зберігає в стеку регістр (E) FLAGS і покажчик CS: (E) IP на ту інструкцію, яку він повинен буде виконати після обробки переривання. Цією інструкцією буде наступна за тією, під час виконання якої відбулося переривання. У захищеному режимі при виникненні ряду винятків в стеці зберігається ще й код помилки. Після збереження цих значень процесор переходить до виконання програми обробки даного переривання (виключення), визначаючи точку входу в нього через номер (0-255) по таблиці переривань. Останньою командою обробника переривання повинна бути інструкція повернення IRET, по якій з стека відновлюється покажчик CS: (E) IP і колишнє значення прапорів. Таким чином, процесор по команді переривань виконує наступні дії:

4. забороняє зовнішні переривання, IF: = 0;

7. дозволяє зовнішні переривання, IF: = 1;

8. починає виконувати базовий цикл роботи процесора.

Апаратні переривання виконуються за таким же алгоритмом іподразделяются на маскіруемие і немасковані.

Масковані переривання виполняютсяпрі встановленому прапорі дозволу (IF = 1).

Немасковані переривання виконуються незалежно від стану прапора IF за сигналом NMI (Non Mascable Interrupt). Його обробка не може перериватися до виконання команди IRET.

Винятки (Exceptions), або особливі випадки, підрозділяються на відмови, пастки і аварійні завершення. Відмінності полягають в зберігаються значеннях CS: (E) IP.

Відмова (fault) - це виняток, яке можна знайти і обслуговується до виконання інструкції, що викликає помилку. Після обслуговування цього винятку управління повертається знову на ту ж інструкцію (включаючи всі префікси), яка викликала відмова.

Пастка (trap) - це виняток, яке можна знайти і обслуговується після виконання інструкції, що його викликає. Після обслуговування цього винятку управління повертається на наступну інструкцію. До класу пасток відносяться і програмні переривання.

Аварійне завершення (abort) - це виняток, яке не дозволяє точно встановити інструкцію, його викликала. Воно використовується для повідомлення про серйозну помилку, такий, як апаратна помилка або пошкодження системних таблиць.







Схожі статті