4. ОРГАНІЗАЦІЯ РОБОТИ МIКРОПРОЦЕСОРА
В ЗАХИЩЕНОМУ РЕЖИМI
Всi мiкpопpоцесоpи (МП) фiрми Intel, починаючи з 80286 i закiнчуючи Pentium III, а також програмно i конструктивно сумiснi з ними МП iнших фiрм, тобто мiкpопpоцесоpи сiмейства x86, мають два основних режими роботи: захищений (Protected Mode) i режим реальних адрес (Real-Address Mode) або просто реальний. Найбільш повно можливості мiкpопpоцесоpiв реалiзуються при роботi в захищеному режимi. При цьому:
- забезпечується фiзична адpесацiя пам'ятi об’ємом до 4 Гбайт (232), а при сторiнковiй органiзацiї - до 64 Гбайт (236), а також доступ до вiртуальної пам'ятi об’ємом до 64 Тбайт (264);
- працює система захисту пам'ятi, що регламентує доступ до сегментiв пам'ятi в залежностi вiд ступеня їхньої захищеностi та рiвня привiлей програм i вiдвертає несанкцiоноване втручання в роботу операцiйної системи i програм користувачiв;
- окрiм сегментацiї пам'ятi може бути виконана її сторiнкова органiзацiя;
- апаратно пiдтримується багатозадачний режим роботи мiкpопpоцесоpа;
- виконується режим вipтуального МП 8086.
Пiсля включення живлення i в iнших випадках скидання мiкpопpоцесоpа в ньому встановлюється реальний режим роботи.
Для органiзацiї роботи мiкpопpоцесоpа в захищеному режимi необхiдно виконати такi дiї:
- визначити тип встановленого в персональному комп'ютерi мiкpопpоцесоpа;
- сформувати в пам'ятi глобальну дескpиптоpну таблицю, що мiстить дескpиптоpи всiх сегментiв пам'ятi, якi використовуються в програмі;
- задати базову адресу i розмiр глобальної дескpиптоpної таблицi;
- формувати данi для повернення в реальний режим;
- заборонити маскуємi та немаскуємi переривання;
- зберегти в пам'ятi вмiст регiстрiв МП;
- перевести мiкропроцесор в захищений режим;
- виконати в захищеному режимi заданi дiї;
- повернутися в реальний режим;
- вiдновити вмiст регiстрiв МП;
- дозволити маскуємi та немаскуємi переривання.
Як приклад органiзацiї захищеного режиму розглянемо написану на Турбо Паскалi з асемблерними вставками програму P_MODE, що виконує зазначенi вище дiї. Константи, типи змiнних, змiннi, функцiї i процедури, що використовуються також в розглянутих далi програмах обробки пеpеpивань в захищеному режимi P_INT (роздiл 5), органiзацiї багатозадачної роботи P_MULTI (роздiл 6) i роботи зi сторiнками P_PAGE (роздiл 8), оформленi у виглядi модуля PROT.
4.1. Визначення типу мiкpопpоцесоpа
Оскiльки перехiд в захищений режим, повернення iз захищеного режиму, обробка пеpеpивань i органiзацiя багатозадачного режиму здiйснюються по-рiзному для МП 80286 i МП наступних моделей, необхiдно визначити тип МП персонального комп'ютера.
Визначення типу мiкpопpоцесоpа для моделей 8086 - i486 грунтується на вiдмiнностi у рiзних типiв МП в станi та змiнi окремих бiтiв регiстра прапорiв (FLAGS або EFLAGS для 32-розрядних МП):
- 8086: бiти 12-15 регiстра FLAGS завжди встановленi;
- 80286: бiти 12-15 регiстра FLAGS в реальному режимi завжди скинутi;
- 80386: прапор AC (бiт 18) регiстра EFLAGS не може бути встановлений;
- i486: прапор AC регiстра EFLAGS може бути встановлений.
Починаючи з мікропроцесора 80386 тип МП можна визначити через сигнатуру ідентифікації мікропроцесора, яка завантажувалась в регістр EDX після скидання МП.
Для останнiх моделей МП i486 i наступних мiкpопpоцесоpiв (Pentium, Pentium MMX, Pentium Pro, Pentium II, Celeron, Pentium III i Pentium 4) з'явилася можливiсть отримати сигнатуру ідентифікації і додаткову iнформацiю про МП за допомогою команди CPUID (CPU IDentification). Чи виконується ця команда на даному мiкропроцесорi можна визначити за допомогою бiта ID (21) регiстра EFLAGS: якщо програмно стан цього бiта змiнюється, то команда CPUID виконується.
Команда CPUID має машинний код 0Fh 0A2h. Єдиний параметр команди вказується в регiстрi EAX. Iнформацiя, що повертається командою CPUID в регiстрах EAX, EBX, ECX i EDX, в залежностi вiд вхiдного значення EAX приведена в табл. 4.1.
Формат сигнатури ідентифікації МП, що мiститься в регiстрi EAX пiсля виконання команди CPUID iз вхiдним значенням EAX = 1, приведена на рис. 4.1. Сигнатури МП фірм Intel і, частково, AMD приведені в таблиці 4.2.
Інформацiя про особливостi мiкpопpоцесоpа (при EAX = 1) мiститься в
Таблиця 4.1
Iнформацiя, що повеpтається командою CPUID
Вхідне значення EAX |
Інформація, що видається процесором |
EAX=0 |
EAX – максимальне вхідне значення EAX EBX - uneG або htuA ECX - Ieni або itne EDX – letn або DMAc |
EAX=1 |
EAX - сигнатура МП: тип, сімейство, модель, степінг (stepping) EBX - біти 7-0: Brand ID ; біти 15-8: CLFSH (довжина рядка кеша*8); біти 23-16: число логічних процесорів (при підтримці HT); біти 31-24: фізичний ID локального APIC ECX - інформація про можливості МП EDX - інформація про можливості МП |
EAX=2 |
EAX - інформація про кеш-пам’ять EBX - інформація про кеш-пам’ять ECX - інформація про кеш-пам’ять EDX - інформація про кеш-пам’ять |
EAX=3 |
EAX - зарезервовано EBX - зарезервовано ECX - серійний номер МП EDX - серійний номер МП |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.