Організація роботи мiкропроцесора в захищеному режимi

Страницы работы

Содержание работы

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 - серійний номер МП

Похожие материалы

Информация о работе