Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Архітектура 32-розрядних мікропроцесорів



Існуючі 32-розрядні МП і 386, i 486, Pentium, Pentium Pro і Pentium II мають розрядність регістрів та шини адреси, яка дорівнює 32. Шина даних для процесорів і 386, i 486 є 32-розряд-ною, а для процесорів Pentium, Pentium Pro і Pentium II — 64-розрядною. Вони дають змогу адресувати 4 Гбайт пам'я­ті за наявності засобів підтримки сегментної та сторінкової адресації пам'яті. Процесори мають чотирирівневу систему захисту пам'яті та портів введення-виведення, можуть пра­цювати у багатозадачному режимі. До режимів роботи МП i 80286 доданий Virtual Real Mode — режим віртуального процесора i 8086. Мікропроцесори допускають паралельну роботу кількох віртуальних процесорів i 8086 під керуван­ням операційної системи типу Windows, OS/2, Unix. Проце­сори оперують з бітами, полями бітів, 8-, 16- та 32-бітовими операндами, рядками бітів, байтів, слів (16-розрядних даних) і подвійних слів (32-розрядних даних). В архітектуру про­цесорів введено засоби налагодження і тестування.

Програмна модель. Програмну модель 32-розрядного про­цесора наведено на рис. 3.8. Вона містить такі групи регістрів:

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

Рис. 3.8. Програмна модель 32-розрядного процесора

Регістри загального призначення містять усі регіст­ри даних і регістри-покажчики МП i 8086 та i 80286 і стільки само додаткових 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 (i 486+);

VM (Virtual 8086 Mode) — у захищеному режимі вми­кає режим віртуального процесора 8086. Спроба викорис­тання привілейованих команд у цьому випадку приведе до винятку 13;

RF (Resume Flag) — прапорець поновлення. У режимі налагодження одиничне значення RF дозволяє здійснити рестарт команди після особливого випадку налагодження.

Сегментні регістри. Крім сегментних регістрів МП i 8086 та i 80286 (DS, CS, SS, ES), програмна модель містить два додаткових сегментних регістри даних — FS і GS. З кожним з шести сегментних регістрів пов'язані тіньові регістри дескрипторів. У тіньові регістри у захищеному режимі переписують­ся 32-розрядна базова адреса сегмента, 20-розрядна межа й атрибути (права доступу) з дескрипторних таблиць.

* У подальшому позначення i 386+, i 486+, Pentium+ означають, що наведені дані справедливі для вказаної моделі МП і всіх старших мо­делей.

** Вирівнювання операнда по межі 2,4,8 означає, що адреса операн­да є кратною, тобто 2, 4, 8.

Керуючі регістри CR 0 — CR 3 (Control Register) збері­гають ознаки стану процесора, спільні для всіх задач. Мо­лодші чотири розряди регістра CR 0 містять біти регістра MSW МП i80286 і деякі інші біти керування. Регістр CR 1зарезервовано; регістр CR 2 зберігає 32-розрядну лінійну адресу, за якою отримано відмову сторінки пам'яті; регістр CR3 у старших 20 розрядах зберігає фізичну базову адресу таблиці каталога сторінок і біти керування кеш-пам'яттю, а регістр CR 4 (Pentium+) містить біти дозволів архітектур­них розширень МП.

Системні адресні регістри. Системні покажчики (ре­гістри глобальної дескрипторної таблиці GDTR і таблиці переривань IDTR) зберігають відповідно 32-розрядні базові адреси і 16-розрядні межі таблиць. Системні сегментні регіст­ри задач TR і локальної дескрипторної таблиці LDTR є 6-розрядними селекторами. їм відповідають тіньові регістри дескрипторів, які містять 32-розрядну базову адресу сегмен­та, 20-розрядну межу і права доступу.

Регістри налагодження DR 0 —DR 3 (Debug Register) зберігають 32-розрядні адреси точок зупину в режимі нала­годження, DR 4 —DR 5 зарезервовані і не використовуються; DR 6 — відображує стан контрольної точки; DR 7 — керує розміщенням у програмі контрольних точок.

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

Сегментна організація пам'яті. У 32-розрядних МП роз­різняють три адресні простори пам'яті — логічний, лінійний і фізичний. Логічна адреса (або віртуальна) складається з селектора і зміщення ЕА. Лінійна адреса утворюється дода­ванням базової адреси сегмента до ефективної адреси. Фізична адреса пам'яті створюється після перетворення лінійної адреси блоком сторінкової переадресації.

Організація пам'яті залежить від режиму роботи МП. У ре­альному і віртуальному режимах i 8086 адресація пам'яті така сама, як у МП i 8086. У захищеному режимі здійснюється сегментна і сторінкова організація пам'яті. Сегментна організація використовується на прикладному рівні, а сторін­кова — на системному. Формування адреси комірки пам'яті у захищеному режимі подано на рис. 3.9. Блок сегментації перетворює простір логічних адрес на простір лінійних адрес. Вихідними даними для блока сегментації є зміщення ЕА у сегменті та сегментний регістр, які задаються у команді. Вміст сегментного регістра у захищеному режимі є селектором. Він містить інформацію про тип дескрипторної таблиці (глобаль­ної або локальної) та індекс дескриптора (див. рис. 3.1). Індекс дескриптора є номером дескриптора у таблиці. Де­скриптор містить базову адресу сегмента. Лінійна адреса ство­рюється додаванням базової та ефективної адрес згідно з рис. 3.2.

Рис. 3.9. Формування адреси комір­ки пам'яті у захищеному режимі

Блок сторінкової переадресації формує фізичну адресу пам'яті. За вимкненого блока лінійна адреса збігається з фізичною. Блок обчислення ефективної адреси обчислює адресу-зміщення операнда у сегменті за одним з наступних типів адресації, наведених у табл. 3.3. Алгоритм обчислення адреси комірки пам'яті для різних типів адресації показано на рис. 3.10. Регістри загального призначення МП можуть виконувати функції таких регістрів: базового Base, індексно­го Index, масштабуваиня множника Scale і зміщення Disp. У табл. 3.4 подано використання цих регістрів залежно від режимів адресації: 16- або 32-розрядної. Масштабовані типи адресації можливі лише у 32-розрядному режимі адресації.

Таблиця 3.3. Типи адресації у 32-розрядних процесорах

Тип адресації Обчислення ЕА
Регістрова ЕА = вмісту РЗП
Пряма ЕА = Disp
Непряма регістрова ЕА = Base
Базова ЕА = Base + Disp
Індексна ЕА - Index + Disp
Масштабована індексна ЕА = Scale x Index + Disp
Базова індексна ЕА = Base + Index
Масштабована базова індексна EA = Base + Index ´ Scale
Базова індексна зі зміщенням EA- Base + Index +Disp
Масштабована базова індексна зі зміщенням EA = Base + Index ´ Scale + Disp

У реальному режимі за замовчуванням використовується 16-бітова адресація, але за допомогою префікса зміни роз-рядності адреси можна перемкнути на 16-розрядний режим. У захищеному режимі тип адресації залежить від біта D у дескрипторі кодового сегмента (за D = 0 використовується 16-розрядна адресація, а за D = 1 — 32-розрядна).

Використання сегментних регістрів під час адресації пам'яті визначається типом звернення до пам'яті (табл. 3.5). Для деяких типів звернень допускається заміна сегментного регістра, що вводиться, застосуванням префіксів команд CS:, DS:, SS:, ES:, FS:, GS:, наприклад

ADD FS:[ESI],EAX; [FS.ESI] [FS:ESI]+EAX.

Рис. 3.10. Алгоритм обчислення ад­реси комірки пам'яті для різних типів адресації

Tаблиця 3.4. Використання РЗП під час обчислення ефективної адреси

Компонент Адресація
16-розрядна 32-розрядна
Базовий регістр (Base) ВХ або ВР Будь-який 32-розрядний РЗП
Індексний регістр (Index) SI або DI Будь-який 32-розрядний РЗП, крім ESP
Масштаб (Scale)   1,2,4або8
Зміщення (Disp) 0,8 або 16 біт 0, 8 або 32 біт

Таблиця 3-5. Використання сегментних регістрів для адресації пам'яті

Тип звернення до пам'яті Сегментний регістр Змі­щення
за замовчу­ванням альтернативний
Вибірка команд CS Немає IP, EIP
Стекові операції SS Немає SP, ESP
Адресація змінної DS CS, ES, SS, ES, GS ЕА
Рядок-джерело DS CS, ES, SS, ES, GS SI
Рядок-приймач ES Немає DI
Використання ВР, ЕВР або ESP як базо­вого регістра SS CS, ES, DS, ES, GS ЕА

Приклад 3.6. Знайти значення фізичної адреси операнда в команді пересилання у регістр AL вмісту комірки пам'яті

MOVAL, [ВХ + 4 SI + 1000 H ],

якщо базова адреса сегмента даних дорівнює 12 456 789 H, а вміст регістрів ВХ = 0120 H, SI = 1234 H. Блока сторінкової переадресації немає.

Ефективна адреса комірки пам'яті

ЕА = 0120 H + 4 ∙ 1234 H + 1000 H = 59 F0H.

Виконавши операцію додавання 32-розрядної базової адреси з ефек­тивною адресою ЕА, отримаємо лінійну адресу, яка збігається і з фізич­ною адресою:

12456789 H + 59F0H = 1245С179 H.

Отже, фізична адреса дорівнює 1245С179 H.

Формування базової адреси сегмента пояснює рис. 3.11. Поле ТІ селектора сегмента визначає робочу дескрипторцу таблицю (глобальну або локальну), де знаходиться початко­ва адреса сегмента.

Поле RPL визначає запрошений рівень привілею сегмента, а поле Index —зміщення від початкової адреси таблиці. За­значимо, що початкова адреса таблиці зберігається або у регістрі GDTR — для глобальної таблиці, або у тіньовому ре­гістрі. В останньому випадку регістр LDTR, в свою чергу, є селектором і вказує, де в глобальній дескрипторній таблиці знаходиться інформація про початкову адресу локальної таб­лиці. Ця інформація переписується у тіньовий регістр.

Формат дескриптора для 32-розрядних процесорів пода­но на рис. 3.12. Дескриптор МП i80286 містить нуль у бітах 63 — 48, а поля базової адреси і межі займають відповідно 24 і 16 біт. У 32-розрядному МП поле базової адреси займа­ють другий, третій, четвертий і сьомий байти дескриптора. У процесі виконання команди ці байти об'єднуються в одну 32-розрядну базову адресу.

Рис. 3.11. Формування базової адреси сегмента

Рис. 3.12. Формат дескриптора для 32-розрядних процесорів

Поле межі займає байти з номерами 0, 1 і молодші чотири біти шостого байта дескриптора. Межа задає максимальне зміщення у сегменті або останню одиницю, що адресується в сегменті. За 20-розрядної межі максимальне значення еле­ментів, що адресуються, становить 220. Оскільки елементом сегмента є не лише байт, а й сторінка 4 Кбайт, сегмент може містити від одного байта до 4 Гбайт. Байт з номером 5 дес­криптора AR (Access Rights) містить право доступу, зокрема, такі біти керування: Р (Present) — біт наявності; DPL (Descripter Privilege Level) — поле рівня привілеїв сегмен­та; S (System) — системний біт; Туре — поле типу сегмента; A (Accessed) — біт звернення.

Біт присутності Р дорівнює одиниці, якщо сегмент знаходиться у фізичній пам'яті (ОЗП). У системі віртуаль­ної пам'яті операційна система може передавати вміст деяких сегментів на диск, при цьому вона скидає біт Р у стан логіч­ного нуля в дескрипторі цього сегмента. Якщо програма після цього знову звертається до сегмента, виникає особливий ви­падок відсутності сегмента. Операційна система шукає вільну область фізичної пам'яті (при цьому, можливо, відправляє на диск деякий інший сегмент), копіює вміст запрошеного сегмен­та з диска у пам'ять, записує в його дескриптор нову базову адресу та здійснює рестарт команди, що викликала особли­вий випадок 11 відсутності сегмента. Описаний процес нази­вають свопінгом (swapping), або довантаженням.

Поле рівня привілеїв сегмента DPL містить 2 біти. Найвищому рівню привілею відповідає значення 0, найниж­чому — значення 3.

Системний біт S має нульове значення (S = 0) у дес­крипторах сегмента кодів, системних сегментів для зберіган­ня локальних таблиць дескрипторів, станів задач TSS (Task State Segment) та у дескрипторах, що називають вентилями (Gate), або шлюзами. В інших випадках 5=1.

Рис. 3.13. Формат вентилів

Вентиль містить інформацію про логічну адресу входу до деякої системної програми і займає 8 байт. Формат вентилів показано на рис. 3.13.

Вентилі призначені для передавання керування і містять логічну адресу переходу у вигляді селектора SELECTOR і 32-розрядного зміщення OFFSET. Вентилі виклику використовують для викликів процедур зі зміною рівня привілеїв, вентилі задач — для перемикання задач, вентилі перери­вань та вентилі пастки — для переходу до процедур обслу­говування переривань, при цьому вентилі переривань забо­роняють переривання (відбувається скидання прапорця IF), а вентилі пастки — не забороняють.

Поле WORD COUNT (див. рис. 3.13) у вентилях викли­ку визначає кількість слів, які копіються зі стеку однієї про­цедури у стек іншої процедури. Для інших вентилів поле WORD CO UNT містить нульові значення.

Поле типу сегмента Туре займає три розряди і визна­чає тип сегмента згідно з табл. 3.6.

Біт звернення А. У сегментах коду і даних А = 0 озна­чає, що до сегмента не було звернень. У системних об'єктах поле Туре разом з бітом А визначає тип системного об'єкта (див. табл. 3.6).

У старшій тетраді шостого байта дескриптора знаходяться такі біти керування:

G (Granularity) — біт гранулярності. Якщо G = 0, одини­цею пам'яті в сегменті є байт, а якщо G = 1, — сторінка завдовжки 4 Кбайт;

D (Default size) — біт розміру. Якщо D = 0, операнди в пам'яті вважають 16-розрядними, а якщо D = 1, — 32-розрядними. Застосовується для сумісності з МП i 80286;

U (User) — біт користувача. Може бути встановлений або відбутися скидання програмно.

Як видно з опису дескриптора, 32-розрядний МП дозволяє створювати сегменти, в яких можуть виконуватися операції зчитування, читання-записування, виконання або виконання-зчитування. Для створення характерних для МП i 8086 сег­ментів, у яких виконуються одночасно всі перелічені опе­рації, використовують перекриття сегментів пам'яті, тобто початкова адреса одного сегмента є адресою іншого

Таблиця 3.6. Типи сегментів і системних об'єктів

Туре А Тип сегмента Дозволені операції
Сегменти кодів і даних
0 0 0 А Даних Тільки зчитування
0 0 1 А —«— - Зчитування і запис
0 1 0 А Стеку Тільки зчитування
0 1 А —«— Зчитування і запис
1 0 0 А Коду Тільки виконання
1 0 1 А —«— Виконання і зчитування
1 1 0 А Підлеглий сегмент коду** Тільки виконання
1 1 1 А —«— Виконання і зчитування
Системні сегменти***
0 0 0   Доступний сегмент TSS стану задачі* i 80286
0 0 1   Таблиця локальних дескрипторів LDT
0 0 1   Зайнятий сегмент TSS стану задачі i 80286
1 0 0   Доступний сегмент TSS стану задачі i 386+
1 0 1   Зарезервовано
1 0 1   Зайнятий сегмент TSS стану задачі* i 386+
Вентилі***
0 1 0   Вентиль виклику i 80286 {Call Gate)
0 1 0   Вентиль задачі i 80286 (Task Gate)
0 1 1   Вентиль переривання i 80286 (Interrupt Gate)
0 1 1   Вентиль пастки i 80286 (Trap Gate)
1 1 0   Вентиль виклику i 386 + (Call Gate)
1 1 0   Вентиль задачі i 386 +(Task Gate)
1 1 1   Вентиль переривання i 386 + (Interrupt Gate)
1 1 1   Вентиль пастки i 386 + (Trap Gate)

Примітки: *На практиці такі сегменти стеку не використо­вуються.

** Підлеглі сегменти кодів подано у п. 3.2.4.

*** Інші стани полів Туре та А не використовуються.

.

Сторінкова організація пам'яті. Цей тип організації, зде­більшого застосовують у системах віртуальної пам'яті, що

дає змогу програмісту використовувати більший простір ад­рес, ніж існуюча фізична пам'ять. Враховуючи властивість просторової локальності кодів і даних (близького розміщен­ня необхідних комірок пам'яті), доцільно оперувати не бай­тами, а деякими невеликими модулями пам'яті — сторінками. За сторінкового перетворення весь лінійний адресний простір 32-розрядного МП ємністю 4 Гбайт розбивається на 2 сторі­нок по 4 Кбайт. Фізичний простір пам'яті мікропроцесорної системи також розбивається на сторінки, причому у фізичній пам'яті сторінок значно менше 2. Наприклад, за ємності па­м'яті 4 Мбайт кількість фізичних сторінок (їх ще називають сторінковими кадрами, або page frame) становить 2. Відсутні у ВІС фізичної пам'яті зберігаються у зовнішній пам'яті (на-копичувачі на твердому магнітному диску) і за потреби за­вантажуються у фізичну пам'ять, тобто відбувається процес свопінгу. Прикладні програми можуть розпоряджатися всім простором віртуальної пам'яті — 4 Гбайт. Процес сторінко­вого перетворення адреси подано па рис. 3.14.

У процесі перетворення старші 20 біт 32-розрядної лінійної адреси замінюються іншим 20-розрядним значенням — но­мером фізичної сторінки згідно з механізмом перетворення адреси (див. рис. 3.14). Регістр керування CR3 PDBR (Раде Directory Base Register) (див. п. 3.2) містить фізичну базо­ву адресу каталога сторінок. Каталог сторінок знаходиться у фізичній пам'яті постійно і не бере участі у свопінгу. Він містить 1024 32-розрядні адреси PDE(Page Directory Entry). Кожна з них є початковою адресою таблиць сторінок. Таблиця сторінок PTE (Page Table Entry) містить адреси сторінкових кадрів у фізичній пам'яті.

Рис. 3.14. Сторінкове перетворення адреси

Фізична базова адреса каталога сторінок формується із значення рядка таблиці сторінок РТЕ і 12 розрядів зміщен­ня лінійної адреси.

Захист за привілеями. Систему привілеїв призначено для запобігання недозволеним взаємодіям користувачів, несанкціо­нованому доступу до даних, пошкодженню програм і даних. Частково ці задачі розв'язуються організацією захищеного режиму пам'яті, частково — захистом за привілеями; 32-роз­рядні процесори підтримують чотири рівні привілеїв 0 — 3, причому рівень 0 є найбільш привілейованим. Рівень 0 за­звичай присвоюється ядру операційної системи, рівень 1 — системним сервісам, рівень 2 — розширенням операційної системи і рівень 3 — прикладним програмам користувача. Під час виконання програми контролюється, чи може про­грама:

• здійснювати привілейовані команди;

• звертатися до даних інших програм;

• передавати керування іншій програмі командами пере­давання керування типу FAR.

До привілейованих команд належать команди, що зміню­ють сегментацію, впливають на механізм захисту, модифіку­ють прапорець дозволу переривань IF. За спроби виконати ці команди на рівнях привілеїв 1, 2, 3 генерується виняток 13.

Для контролю звернення програми до даних інших про­грам використовуються поля CPL (Current Privilege Level або Code Privilege Level — поточний рівень привілеїв; за­дається полем RPL селектора CS) і дескриптора даних DPL. Доступ до даних дозволяється якщо .

Передавання керування програм різних рівнів привілеїв здійснюється за допомогою використання:

• підлеглих сегментів коду;

• дескрипторів вентилів викликів (шлюзів).

У підлеглих сегментах виконання команд можливе, якщо поточний рівень привілеїв (CPL) не нижчий від рівня при­вілеїв дескриптора (DPL) підлеглого сегмента, у непідлег­лих — керування сегмента передається за CPL - DPL. За­звичай у підлеглих сегментах кодів розміщують бібліотеки, до яких можуть звертатися програми різних рівнів привілеїв. Використання підлеглих кодових сегментів не змінює поточ­ний рівень привілеїв. Єдиним способом зміни рівня привілею є використання вентилів викликів. Вентилі ідентифікують дозволені точки входу в кодові сегменти з більшим рівнем привілею. У дескрипторі вентиля задається повна адреса точки входу (селектор: зміщення) тієї процедури, якій пере­дається керування.

Перемикання задач. У багатозадачних системах і систе­мах з великою кількістю користувачів МП виконує деяку частину команд однієї задачі (програм), після цього перемикається на виконання іншої задачі і так триває доти, доки знову не повертається до першої задачі. Для підтримки ба-гатозадачного режиму в МП є такі засоби:

• сегмент стану задачі TSS;

• дескриптор сегмента стану задачі;

• регістр задачі TR;

• вентиль задачі.

Дескриптор сегмента стану задачі вказує на сегмент, що містить повний стан задачі, а вентиль задачі містить селектор, що вказує на дескриптор TSS. Регістр TR є селектором сегмента TSS поточної задачі. Кожна задача має свій сегмент стану. В сегменті TSS міститься інформація про стан проце­сора на час перемикання задач — вміст майже всіх регістрів МП, включаючи регістр прапорців, роздільні покажчики стеків для рівнів привілеїв 0, 1, 2 і посилання на селектор TSS задачі, що її викликала.

Перемикання задач здійснюється або за командами міжсег-ментних переходів JMP FAR чи викликів підпрограм CALL FAR, або за апаратними чи програмними перериваннями і винятками. У першому випадку програма має посилатися на сегмент стану задачі TSS або на дескриптори вентиля задачі в GDT(LDT), у другому — відповідний перериванню дес­криптор в таблиці переривань IDT має бути дескриптором вентиля задачі.

Під час передавання керування викликаній задачі за коман­дою IRET перевіряється прапорець вкладеної задачі NT (Nested Task). Якщо NT = 0, команда IRET працює у зви­чайному режимі, залишаючись у поточній задачі. Якщо NT = 1, команда IRET виконує перемикання на попередню задачу.





Дата публикования: 2014-12-11; Прочитано: 3883 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.019 с)...