Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Керівництво програміста

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Сигнали запитання BREQ# використовуються для арбітражу симетричних агентів. Агент «n» запрошує шину, управляючи сигналом BREQn#, а інші лінії розглядає як вхідні. Симетричні агенти підтримують розподілений механізм арбітражу на основі циклічної зміни ідентифікатора пріоритету. «Коли обертається» ідентифікатор подає собою внутрішній стан всіх симетричних агентів для визначення агента із найменшим… Читати ще >

Керівництво програміста (реферат, курсова, диплом, контрольна)

1 АРХІТЕКТУРА ПРОЦЕСОРІВ INTEL.

1.1 Історія розвитку процесорів.

Історія мікропроцесорів почалася в 1971 році, коли фірма Intel випустила перший мікропроцесор i4004. Він мав розрядність 4 біта, спроможність адресувати 640 байт пам «яті, тактову частоту 108 кГц й продуктивність 0.06 MIPS. Такий процесор уже міг працювати в якості обчислювального ядра калькулятора. Він містив 2300 транзисторів й виконувався по технології із дозволом 10 мкм. Через рік із «явився його 8- бітный «родич» — i8008, що адресує уже 16 Кб пам «яті.

У 1974 ж році із «явився 8-разрядный процесор i8080, що ставши надто популярним влаштуванням. Він уже мав частоту 2 МГц й адресував 64 Кб пам «яті. 6000 транзисторів дозволила розмістити 6-мкм технологія виготовлення. Процесор вимагав трьох джерел живлення (+5, +12 та -5 У) й складної двухтактної синхронизації. На цьому процесорі будувалися різноманітні термінали, контролери й навіть перший ПК Altair. У нашій стране запізнилою місяцем 8080 стали процесори 580ИК80 й КР580ВМ80, на базі які в початку й середині 80-х років будувалося багато «саморобних» ПК.

Наступним етапом ставши процесор i8085 (5 МГц, 0.37 MIPS, 6500 транзисторів, 3-мкм технологія). Він зберіг популярну рєгістрову архітектуру 8080 й програмну єдність, але й в нього додали порт послідовного інтерфейсу, скасували спеціальні ІС підтримки (тактового генератора й системного контролера) й декілька змінили зовнішній інтерфейс. Головним подарунком розробникам апаратури стала лише одна живлюща напруга +5 В.

Варіацію на задану тему 8080 й 8085 подає процесор Z80 фірми Zilog. Зберігши програмну єдність із 8080, в нього запровадили додаткові регістри, що дозволило істотно підвищити продуктивність. Результат виявився вражаючим — ще нещодавно популярні комп «ютери Sinclair, побудовані на Z80, демонстрували на іграх графіку, не гіршу ніж у РС на 16-разрядном процесорі 286.

перший 16-разрядный процесор 8086 фірма Intel випустила в 1978 році. Частота 5 МГц, продуктивність 0.33 MIPS, але й інструкції уже із 16-розрядними операндами (пізніше із «явилися процесори 8 й 10 МГц). Технологія 3 мкм, 29 тис. транзисторів, що адресує пам «ять 1 МБ. Регістрова архітектура й система команд істотно відрізнялися від 8080, але й, природно, просліджуються загальні ідеї. Через рік із «явився 8088 — тієї ж процесор, але й із 8-битной шиною даних. З нього почалася історія IBM PC, що наклала свій відбиток на подальший розвиток цієї лінії процесорів. Масове поширення й відчинена архітектура РС призвели до лавиноподібній появі програмного забезпечення, що розробляється крупними, середніми й дрібними фірмами й ентузіастамиодинцями. Технічний прогрес вимагав (й тепер вимагає) розвитку процесорів, але й вантаж програмного забезпечення РС, що винне працювати й на более нових процесорах, на свій чергу вимагав забезпечення зворотної єдності. Таким чином, усі нововведення в архітектурі наступних процесорів повинні були прибудовуватись до існуючого ядра. Аж раптом ще й сама архітектура РС «підкинула», наприклад, складнощі із використанням векторів перериваннь. Фірма Intel зарезервувала Перші 32 вектору «для службового користування», однак ними «наїхали» переривання BIOS. Один із результатів — додатковий засіб обробки виключень сопроцесора, застосовуваний в старших моделях РС.

Процесор 80 286, що знаменує наступний етап архітектури, із «явився лише в 1982 році. Він уже мав 134 тис. транзисторів (технологія 1.5 мкм) й адресував до 16 МБ фізичної пам «яті. Його принципові нововведення — захищений режим й віртуальна пам «ять розміром до 1 Держбезпеки — не знайшли масового застосування, процесор більшою частиною використовувався як дуже швидкий 8086.

Клас 32-розрядних процесорів був відкритий в 1985 році моделлю 80 386 (275 тис. транзисторів, 1.5 мкм). Розрядність шини даних (як й внутрішніх регістрів) досягла 32 біт, пам «ять, що адресується фізична — 4 Держбезпеки. З «явилися нові регістри, нові 32-битные операції, істотно доопрацьований захищений режим, із «явився режим V86, сторінкове керування пам «яттю. Процесор знайшов широке застосування в РС, й на благодатному грунті його нових властивостей ставши розростатись «самий великий вірус» — MS Windows із додатками. З цого години стала помітна тенденція «позитивного зворотного зв «язку»: на появу нового процесора виробники ПО реагують випуском нових привабливих продуктів, наступним версіям якого ставає тісно у межах цого процесора. З «являється более продуктивний процесор, але й после нетривалого захоплення й його ресурси «із «їдають» й т. буд. Цей «вічний рух», кінцево, природно, але й є обгрунтована підозра, що більші ресурси розбещують (чи, принаймні, розслаблюють) розробника ПО, не змушуючи його напружуватися в пошуках более ефективних засобів рішення задачі. Прикладом ефективного програмування можна лічити іграшки на Sinclair ZX-Spectrum, що реалізуються на «іграшкових» ресурсах — 8-бітном процесорі й 64 (128) Кб ОЗП. З протилежними прикладами більшість користувачів РС стикаються регулярно, але й із процесором Pentium 200 й 32 МБ ОЗП ними не завжди обертають увагу.

Історія процесора 386 нагадує історію 8086: першу модель із 32-бітной шиною даних (згодом названою 386DX) змінив 386SX із 16-розрядной шиною. Він досить легко вписувався, а архітектуру РС АТ, шо раніше базувалася на процесорі 286.

Процесор Intel486DX із «явився 1989;го році. Транзисторів — 1.2 млн., технологія 1 мкм. Від 386-го істотно відрізняється розміщенням на кристалі первинного кеша й вбудованого математичного сопроцесора (попередні процесори малі можливість використання зовнішніх х87 сопроцесорів). Крім того, для підвищення продуктивності в цьому СІSC-процесорі (як й в наступних) застосоване RISC-ядро. Далі із «явилися його різновиди, що відрізняються наявністю чи відсутністю сопроцесора, застосуванням внутрішнього множення частоти, політикою запису кеша й іншими. Позичилися енергозбереженням (із «явився режим SMM), що відбилося й в продовженні лінії 386 процесорів (із «явився процесор Intel386SL).

У 1993 році із «явилися Перші процесори Pentium із частотою 60 й 66 МГц — 32-розрядные процесори із 64-розрядной шиною даних. Транзисторів 3.1 млн., технологія 8.0 мкм, живлення 5 У. Від 486-го принципово відрізняється суперскалярною архітектурою — спроможністю за такт випускати із конвейєрів до двох інструкцій (що, кінцево, не означає можливості проходження інструкції через процесор за півтакта чи за такт). Інтерес до процесора із боці виробників й покупців РС стримувався його дуже високою ціною. Крім того, із «явився скандал із виявленою помилкою сопроцесора. Хоча фірма Intel математично обгрунтувала невисоку імовірність її прояви (разів у декілька років), вон все-таки пішла на безкоштовну заміну уже проданих процесорів на виправлені.

Процесори Pentium із частотою 75, 90 й 100 МГц, що із «явилися 1994;го році, уявили уже другу ґенерацію процесорів Pentium. При майже до того ж числі транзисторів смердоті виконувалися по технології 0.6 мкм, що дозволило знизити потужність, що споживається. Від першої ґенерації смердоті відрізнялися внутрішнім множенням частоти, підтримкою мультипроцесорних конфігурацій й малі інший тип корпусу. З «явилися версії (75 МГц в мініатюрному корпусі) для мобільних застосуваннь (в блокнотних ПК). Процесори Pentium другої ґенерації сталі у РС. 1995;го році із «явилися процесори на 120 й 133 МГц, виконані уже по технології 0.35 мкм (Перші процесори на 120 МГц робилися ще по технології 0.6 мкм). У 1996;й називають фатальністю Pentium — із «явилися процесори на 150, 166 й 200 МГц, й Pentium ставши рядовим процесором для РС широкого застосування.

Паралельно із Pentium розвивався й процесор Pentium Pro, що відрізнявся новинками «динамічного виконання інструкцій», направленими на збільшення числа паралельно виконуваних інструкцій. Крім цього у його корпусі розмістили й вторинний кеші, для початку обсягом 256 Кб. Однак на 16-бітных додатках, а середі Windows 95 його застосування не дасть переваг. Процесор містить 5.5 млн. транзисторів ядра й 15.5 млн. транзисторів для вторинного кеша обсягом 256 Кб. перший процесор із частотою 150 МГц із «явився в початку 1995 року (технологія 0.6 мкм), а кінці року із «явилися процесори із частотою 166, 180 й 200 МГц (технологія 0.35 мкм), у які кеші досягав й 512 Кб.

Після довгих обіцянок в початку 1997 року із «явилися процесори Pentium MMX. Розширення MMX припускає паралельну обробку групи операндів однією інструкцією. Технологія MMX закликана прискорювати виконання мультимедійних додатків, в частковості операції із зображеннями й обробку сигналів. Її ефективність викликає суперечки в середі розробників, оскільки виграш в самих операціях обробки компенсується програшем на додаткових операціях упаковки-распаковки. Крім Про те, обмежена розрядність ставити под сумнів застосування MMX в декодерах MPEG-2, в які вимагається обробка 80-бітных операндів. Окрім розширення MMX ці процесори, у порівнянні із звичайним Pentium, мають подвійний обсяг первинного кеша й деякі елементи архітектури, що запозичилися у Pentium Pro, що підвищує продуктивність процесора Pentium MMX й на звичайних додатках. Процесори Pentium MMX мають 4.5 млн. транзисторів й виконані по технології 0.35 мкм. За станом на сьогодняшній день є процесори із тактовими частотами 166, 200, 233 й 266 МГц.

Технологія MMX був із «єднана із архітектурою Pentium Pro — й в травні 1997 року із «явився процесор Pentium II. Він подає собою злегка урізаний варіант ядра Pentium Pro із более високою внутрішньою тактовою частотою, в що запровадили підтримку MMX. Труднощі розміщення вторинного кеша в одному корпусі із процесором подолали нехитрим засобом — кристал із ядром процесора й набір кристалів статичної пам «яті й додаткових схем, що реалізують вторинний кеші, розмістили на невеликій друкарській платі-картридже. Всі кристали закриті загальною кришкою й охолоджуються спеціальним вентилятором. Тактовые частоти ядра — 233, 266, 300, 333, 366, 400 й 450 МГц.

Пізнішє побачив світло спрощений варіант процесора Pentium II, назва, що отримала Celeron. У ньому вдвічі зменшений вторинний кеші й, немовби, прибрана підтримка багатопроцесорних систем. Однак шляхом «хірургічного» втручання підтримку багатопроцесорності можна повернути. Це пояснюється тім, що в Celeron застосоване ядро Pentium II без будь-яких змін.

У 1999;му році із «явився процесор Pentium III. У ньому застосоване покращене ядро процесора Pentium II, в яку додана підтримка технології MMX- 2. Технологія MMX-2 підрозумує наявність 8 додаткових 128-розрядных регістрів (в попередніх процесорах регістри MMX знаходилися в мантисах регістрів сопроцесора) й виконання групових інструкцій над 4 числами в форматі короткого речовинного. Перші процесори виготовляються по технології 0.35 мкм й мають тактову частоту 400 МГц. У подальшому планується перехід на 0.18 мкм технологію й збільшення частоти до 1 ГГц.

У момент фірма Intel розробляє принципово нову архітектуру IA64, що відкриває клас 64-розрядных процесорів. Першим процесором що є дану архітектуру винен статі Merced. Цей процесор якщо матір 128 64-розрядных регістрів загального призначення й нову систему команд, покликану істотно підвищити продуктивність. Однак в зв «язку із величезним обсягом ПО в спеціальному режимі якщо вироблятися підтримка системи команд попередніх процесорів. Merced також якщо підгримувати розширення MMX-2 й додаде до нього декілька нових команд. Перші процесори будуть виготовлятися по технології 0.35 мкм й матір тактову частоту 400 МГц. У подальшому планується перехід на 0.18 мкм технологію й збільшення частоти до 1 ГГц.

1.2 Опис внутрішніх блоків.

8086/88.

Найбільш простий інтерфейс мають процесори 8086/88. Вони здатні працювати в двох режимах: мінімальному й максимальному.

У мінімальному режимі процесор сам виробляє сигнали керування для зовнішньої шини. Цей режим передвизначений для побудови невеликих систем, що не використають сопроцесора, й дозволяє безпосередно до процесора підключать периферійні мікросхеми із сімейства 8085.

У РС застосовується максимальний режим, при якому сигнали керування системною шиною виробляються контролером шини 8288 за сигналами стану процесора. Всі сигнали керування активні низьким рівнем, що забезпечує можливість керування, що розділяється шиною декількома приладами. Цикл шини позичає 4 такту (не лічивши тактів чекання).

Будь-який цикл може бути необмежено розтягнутий із допомогою сигналу готовності. Цикли звертання до портів відрізняються від циклів пам «яті використанням шини адреси. У разі звертання до портів лінії адреси A [8: 15] завжди містять нулі. Цикл підтвердження переривання аналогічний циклу читання із порту, але й стан шини адреси процесором не управляється. Передача керування шиною здійснюється за сигналами RQ/GT: влаштування, що запрошує керування шиною, генерує імпульс запитання. Процесор, закінчивши черговий цикл, по тій ж лінії передає імпульс підтвердження й звільняє шину. Шиною починає керувати влаштування, а, по завершенні своїх операцій воно та наступним імпульсом повідомляє процесору про звільнення шини. Типові шині цикли процесорів наведені на малюнку 1.1.

Процесор 8086 має 6-байтну внутрішню чергу інструкцій (іменно таку довжину має найдовша інструкція). Блок передвиборки за наявності двох вільних байт в черзі намагається її заповнити у тому годину, коли зовнішня шина процесора не позичена операціями обміну. Черга у процесора 8088 скорочена до запланованих 4 байт, а передвиборка виконується уже за наявності одного вільного байта. Ці відзнаки оптимизують конвейєр із урахуванням розрядності шини даних. Черга обнуляється при виконанні будь-якої команди передачі керування, навіть при переході на наступну адресою. Цією властивістю часто користуються при програмуванні керування приладами введення-виведення, що вимагають затримки між сусідніми операціями обміну. Дешифратор в даних процесорах по суті є й влаштуванням керування.

Процесор має 8 16-разрядных регістрів загального призначення й 4 16- розрядних сегментних регістра. Влаштування обчислення виконавчої адреси має двухвходовий суматор, тому при адресації зі зміщенням чи, якщо відносна адреси перебує із трьох частин, вимагаються зайві такти для обчислення адреси. 80 286.

Процесори 80 286 випускалися в 68-виводних корпусах. Їхній інтерфейс відрізняється від 8086 застосуванням роздільних шин адреси й даних, конвейєрною адресацією, а також складом й призначенням керуючих сигналів.

Шина адреси дозволяє адресувати 16 МБ фізичної пам «яті в захищеному режимі й 1 МБ із області молодших адресу — в реальному режимі. При адресації введення-виведення процесор використає лише біти A [0: 15] шини адреси (при цьому інші біти рівні 0). як й в процесорі 8086, обмін по шині даних можливий байтами чи словами. При побайтном обміні байт із парною адресою передається по лініям D [0: 7], із непарним — по лініям D [8−15]. Обмін словами із парною адресою відбувається по лініям D [0−15]. При адресації слова із непарною адресою процесор автоматично виконує два послідовних шиних циклу: перший по лініям D [8−15], другий — по D [0−7]. Байти шини, що беруть доля в обміні, як й для процесора 8086, визначаються сигналами A0 й BHE#.

Синхронизація процесора здійснюється зовнішнім сигналом, частота якого ділиться навпіл внутрішнім дільником для одержання сигналу внутрішньої синхронизації. На зовнішні виводи процесора цей сигнал не надходить, але й його виробляє спеціальна мікросхема 82 284 — генератор синхронизації для 80 286. Максимальна пропускна спроможність локальної шини процесора — одне слово за кожні два циклу внутрішньої частоти.

Конвейєрна адресація, застосовувана в процесорі, передбачає можливість початку нового циклу, не чекаючи завершення фізичного обміну даними попереднього циклу. Це дозволяє скоротити число тактів чекання, необходимых для згоди із відносно повільною пам «яттю й портами, за рахунок более раннього початку виконання дешифрації адреси влаштуванням пам «яті чи введення-виведення. Конвейєрний режим дозволяє контролерам пам «яті ефективно використати швидкий сторінковий режим динамічної пам «яті й чергування банків.

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

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

Керування тимчасовою діаграмою підрозумує затримку й розтяжку командних циклів. Розтяжка при необхідності подовжує командний цикл звертання для відносно повільних зовнішніх приладів введення-виведення й пам «яті. Зовнішні схеми із допомогою затримки сигналу готовності можуть розтягувати цикл одну годину. При цьому вводяться такти чекання процесора. Затримка передвизначена для зрушення початку командного імпульса системної шини відносно відповідної йому фази адресації й ідентифікації. Затримка команд здійснюється мікросхемой 82 288 за сигналом CMDLY, що перевіряється по кожному спаду CLK. Необхідність затримки й розтяжки команд із «явилася в зв «язку із істотним підвищенням продуктивності (відносно 8086) локальної шини процесора. 80 286 здатний генерувати шинні цикли із мінімальним періодом удвічі такти внутрішньої частоти. Так при частоті процесора 16 МГц шинні цикли підуть із періодом 250 нс. У повній мірі цією продуктивністю може скористуватися лише пам «ять, підключена до локальної шини. Прилади на шині ISA такого темпу не витримують. Крім того, смердоті звичайно вимагають певного години відновлення — пасивного стану керуючих сигналів шини між їм командами, що адресувалися. Керування затримкою й розтяжкой циклів в залежності від типу й адреси звертання покладається на мікросхеми чипсета системної плати, а заподіяння числа тактів чекання й години відновлення для різноманітних операцій в машинах класу AT запровадили відповідні опції BIOS SETUP. Шини цикли процесора уявлені на малюнках 1.2 й 1.3.

При проектуванні процесора 80 286 був поставили завдання значно підвищити продуктивність. Буфер передвиборки залишився колишнім, але й влаштування передвиборки піддалося значній переробці. Колі черга команд порожня, а це трапляється после кожної інструкції передачі керування, нові байти минають через чергу не затримуючись. Крім того, при передвиборці в захищеному режимі здійснюється контроль між сегменту кодів. Дешифратор уже подає собою окреме влаштування, що вибирає дані із черги команд й «розгортає» кожну інструкцію в 69 біт, що включають всю інформацію, необхідну процесору для виконання команди, за винятком резидентних операндів. Ці мікроинструкції розміщуються в спеціальний буфер (на 3 команди), що також здатний пропускати команди без затримки в випадку передачі керування. У дешифраторі передбачений спеціальний засіб, що дозволити попереджати шиний інтерфейс про ті, у наступному такті знадобиться цикл вибірки даних із пам «яті. У цьому випадку шиний інтерфейс не дасть почати передвиборку, виключаючи завдяки цьому втрати в продуктивності.

Блок формування адреси має два суматора: суматор зміщення й суматор фізичної адреси. Обчислення повної адреси позичає два такту й доповнюється ще одним тактом, якщо зміщення перебує із трьох елементів.

Влаштування сегментації заазнало істотних змін. Сегментні регістри тепер перебують із двох частин: 16-разрядного селектора й програмно недосяжної дескрипторної частини, що містить базову адресою, розмір й права доступу сегменту. 80 386.

Синхронизація процесора 80 386 в точності відповідає синхронизації 80 286. Інтерфейс процесора 80 386 в значному ступені схожий на інтерфейс 80 286 хоча й зазнав ряду змін.

Шина даних припускає як 16-ти, то й 32-разрядный режим обміну, в залежності від стану вхідного сигналу BS16#. При читанні в 16-розрядному режимі дані на лініях D [16−31] ігноруються, при записі процесор керує всією шиною даних незалежно від сигналу BS16#/.

Шина адреси дозволяє адресувати 4 Держбезпеки фізичної пам «яті в захищеному режимі й 1 МБ із області молодших адресу в реальному режимі. При виконанні інструкцій введення-висновку процесор адресується до області 64 Кб простори введення-виведення (0−0000FFFFh). При обміні із сопроцесором в циклах введення-виведення процесор виставляє адреси 80 0000F8−800 0000FFh, що спрощує дешифрацію адреси зовнішніми схемами. Лінії A [31: 2] ідентифікують адресою із точністю до подвійного слова, а межах цого слова сигнали BE[0: 3]# безпосередно вказують, що байти використовуються в даному циклі. Якщо в поточному циклі запису обидва сигнали BE0# й BE1# неактивні, виводимі дані старших байт автоматично дублюються на лініях молодших. Якщо слово, що адресувалося перетинає між подвійного слова, процесор после пересилки молодшої частини, що помістилася, автоматично генерує додатковий цикл обміну із іншими значеннями A [31: 2] й BE [3: 0] #.

Сигнал BS16# вводитися зовнішньою схемою, якщо поточний цикл адресується до 16-битному влаштування, підключеному до молодшої половини шини даних. Якщо в даному циклі припускалася передача й двох старших байт, процесор автоматично вводити додатковий цикл для передачі цих байт по молодшій половині шини даних.

Тип циклу локальної шини визначається сигналами M/IO#, D/C#, W/R# й LOCK#, комбінація які дійсна под годину активності сигналу ADS# (строб адреси). Сигнали керування шиною ADS#, READY# й NA# задають тимчасові межі циклів й керують конвейєрною адресацією. Сигнал ADS# відзначає вушко шкірного циклу, под годину його чинності виробляється ідентифікація типу циклу й фіксується відповідна йому адреси. Сигнал READY# винен вводитися зовнішньою схемою в кожному циклі, відзначаючи готовність до завершення поточного циклу. Сигнал NA# використовується для запитання наступної адреси при конвейєрній адресації, коли зовнішні схеми уже готові сприйняти нову адресою й сигнали ідентифікації. Якщо процесор уже має внутрішнє запитання на наступний шини цикл, він видасть адресою й ідентифікатори наступного циклу до завершення поточного.

Сигнали арбітражу локальної шини передвизначені для передачі керування локальною шиною іншому влаштуванню по його запитанню — переходу до лав лот. «1» лінії HOLD. Колі процесор визнає можливим передачу керування (в незаблокованих циклах відразу по завершенні поточного шиного циклу), він виставить сигнал підтвердження HLDA. У такому стані процесор переводити у високоімпедансний стан усі двунаправлені й вихідні лінії. Цим станом можна користуватися й для налагодження апаратних засобів. Шині цикли процесора уявлені на малюнках 1.4 й 1.5.

У процесорі 80 386 збільшився буфер передвиборки до 16 байт, що заповнюється тепер подвійними словами. Всі основні регістри поширені до 32 розрядів. Суматори лінійної адреси замінені однім трьохвходовим.

До блоку обчислення адреси додане нове влаштування — блок трансляції сторінок. Дане влаштування транслює лінійну адресою в фізичну й перебує із трьох основних блоків: ПЛМ керування, суматор фізичної адреси й кеш-пам «яті сторінок (TLB).

Блок TLB подає собою чотирьохвходову асоціативну пам «ять, що містить 20- розрядні базові адреси 32 сторінок. У якості тега використовуються старші розряди лінійної адреси. Блок перебує із двох модулів пам «яті, основної й додаткової, й логіки обслуговування. Основний модуль пам «яті містить 8 блоків, кожний із які забезпечує входь в кадр, для 4 сторінок. Вхід в кадр певної сторінки реалізується із допомогою розміщеної в модулі рядка бітів, що містить інформацію про що вибирається сторінку (базова адреси, атрибути) й інформацію, необхідну для її вибору.

Робота TLB відбувається слідуючим чином. Після формування лінійної адреси 3 молодших розряди поля (біти 14−12 лінійної адреси) визначають номер одного із восьмих блоків. Старші 17 розрядів (біти 31−15) порівнюються із 17 бітами тегів, що містяться в чотирьох рядках вибраного блоку. При їхньому збігу зазначена в стоці базова адреси заміщає 20 старших розрядів лінійної адреси.

Таким чином, кеш-пам «ять сторінок покриває 32*4Кб=128Кб адресного простору, що для більшості додатків забезпечує кеш-попадания із імовірністю 98%. 80 486.

Інтерфейс процесора 80 486 є тієї архітектурною компонентою, що в найбільшому ступені відрізняє його від попередника, 80 386. Зміни, внесені в набір сигналів й протоколи обміну, малі метою реалізувати в вигляді збільшеної продуктивності 80 486 тих переваги в швидкодії й функціональної потужності набору внутрішніх блоків, що із «явилися за рахунок використання более досконалої мікроэлектронної технології.

На зміну конвейєрної адресації попередніх процесорів, починаючи із процесора 80 486, уведень режим пакетної передачі. Цей режим передвизначений для швидких операцій зі рядками кеша. Ряд кеша процесора 80 486 має довжину 16 байт, отже, для її пересилки вимагається чотири 32- розрядных шиних циклу. Ос-кільки використання кеша припускає, що ряд винен у ньому бути присутнім цілком, запровадили пакетний цикл оптимизований для операцій обміну внутрішнього кеша із оперативною пам «яттю. У цьому циклі адреси й сигнали ідентифікації типу шин циклу видаються лише в першому такті пакету, а кожному із наступних тактів можуть передаватися дані, адреси які уже не передається по шині, а вираховується із Першого по правилам, відомим й процесору, й зовнішньому влаштуванню. У пакетний цикл процесор може перетворити будь-яке внутрішнє запитання на множествену передачу, але й при читанні його розмір обмежений одним рядком кеша, а при записі в стандартному режимі шини в окремий пакет може збиратися не более 32 біт. Більш пізні моделі процесорів при роботі із WB-кешем при записі рядків в пам «ять збирають в окремий пакет чотири 32-бітних циклу, але й це уже робота в розширеному режимі шини 486-го процесора. Пакетний цикл починається процесором як і, як й звичайний: на зовнішній шині встановлюється адреси, сигнали ідентифікації типу циклу й формується строб ADS#. У наступному такті передається перша порція даних, й, якщо вона не єдина, сигнал BLAST# має пасивне значення. Якщо влаштування, що адресувалося підтримує пакетний режим, воно та винне відповісти сигналом BRDY# замість сигналу RDY# по готовності даних в першій ж передачі даних циклу. У цьому випадку процесор продовжить цикл як пакетний, не вводячи такту адресації-ідентифікації (із сигналом ADS#), а відразу перейде до передачі наступної порції даних. Нормально про завершення пакетного циклу повідомляє влаштуванню сигналом BLAST#, що видається в такті останньої передачі пакету. Якщо у процесора є наміру зібрати пакет, а влаштування відповідає сигналом RDY#, дані будуть передаватися звичайними циклами. Введенням сигналу RDY# замість BRDY# зовнішнє влаштування може в останній момент перервати пакетну передачу, й процесор її продовжить звичайними циклами. У ідеальному варіанті (без тактів чекання) для передачі 16 байт в пакетному режимі вимагається усього п «ять тактів шини замість восьми, що зажадалося б при звичайному режимі обміну. Пакетний режим припускає додержання одніх й тихий ж правил формування наступних адресу як процесором, то й зовнішнім влаштуванням. Під годину пакетного циклу процесора 486 старші біти адреси A[31:4] залишаються незмінними. Змінюватися можуть лише біти A [3: 2] й сигнали BE[3:4]#. Таким чином, один пакетний цикл не може перетинати між рядка кеша. Крім того, є специфічний порядок чергування адресу в пакетному циклі, що визначається початковою адресою пакету й розрядністю передач. Якщо под годину пакетного циклу процесор виявить активність сигналів BS16# чи BS8# до того, як перейти до наступної адреси, будуть завершені поточні 32-бітні цикли. Ос-кільки пакетний режим підтримується звичайно лише оперативною пам «яттю (разом зі вторинним кешем), розрядність якої намагаються не усікати, на практиці перетворення послідовності адресу у вісім — чи 16-битные передачі навряд чи де використовується. Порядок чергування адресу в пакетному циклі характерний для всіх процесорів Intel й сумісних з ними, починаючи із 486-го. Він оптимизован для двох банкової організації пам «яті, підрозумуючей чергування банків, що використаються під час передач пакетного циклу.

Процесор 486 має чотири внутрішніх буферу для операцій запису. Якщо под годину внутрішнього запитання процесора на запис усі буфери вільні й шина не позичена, запис виконується відразу без буферирування. Якщо шина позичена, запитання спрямовується в буфер, позичаючи для запису лише один внутрішній такт, а із буферу дані вивантажуються в оперативну пам «ять чи влаштування введення-виведення в міру звільнення зовнішньої шини. Зовнішні операції запису із буферів будуть вироблятися до того ж порядку, що й запитання, що надійшли. Однак якщо за наявності невільних буферів із «з'явитися запитання на читання пам «яті, воно та може бути обслуговане й раніше, ніж задовольняться йому запитання, що передують на запис. Ця зміну послідовності може відбутися лише до того випадку, якщо усі запитання запису в буферах зв «язані із кеш-попаданнями, а запитання на читання відноситься до кеш-промаху. Тільки в цьому випадку процесор може сміло міняти порядок операцій, але й лише одного разу до тихий пір, доки не визволяться усі буфери запису. Більше одного разу міняти лад у загальному випадку не можна, бо лічені дані можуть замістити ряд, що модифікувався кеша, із якого оновлена інформація якраз й очікує в буфері черги на запис в основну пам «ять. У такому випадку друга спроба зміни послідовності може порушити цілісність даних. Для операцій введеннявиведення зміну порядку неможлива. Читання введення-виведення ніколи не може обганяти запис в пам «ять. Одинкові операції висновку не буферируються із тим, щоб дати можливість своєчасно (для програми) повідомити із своєї реакції на запис до порту (викликати апаратне переривання чи цикл анулювання рядка). Однак засоби введення програмної затримки між одинковими операціями висновку для процесора 486 відрізняються від що передують: тут команда JMP, раніше безумовно що наводити до генерації зовнішнього циклу звертання до пам «яті скоріше усього якщо обслугована із внутрішнього кеша, й бажаної затримки не відбудеться. Надійним засобом введення зовнішнього циклу шини між циклами вивода є явна операція читання некешуємої області пам «яті. Ця операція якщо виконана лише после завершення попереднього циклу висновку, а наступна операція висновку почнеться лише по завершенні цого читання. Операції блокового висновку, викликані інструкцією REP OUTS, будуть використати буфери, але й порядок не якщо порушений.

Синхронизація процесора здійснюється зовнішнім сигналом CLK, усі тимчасові параметри відраховуються відносно його позитивного перепаду. Зовнішня частота процесором уже не ділиться навпіл (як у 386-го), а може навіть умножатися на коефіцієнт, що у різних моделей процесорів може приймати значення 1, 2, 2.5 й 3. При Цьому інтерфейс зовнішньої шини процесора завжди працює на зовнішній частоті, а частота тактування обчислювального ядра може підвищуватися в декілька раз. Стандартними значеннями зовнішньої частоти є 25, 33.33, 40 й 50 МГц. Коефіцієнт множення задається рівнем логічного сигналу на вході CLKMUL.

Шина адреси дозволяє адресувати 4 Держбезпеки фізичної пам «яті в захищеному режимі й 1 МБ із області молодших адресу в реальному режимі. Сигналом A20M# можна включити примусове обнулення лінії A20 (як для внутрішнього кешу, так й для зовнішніх операцій). Таким чином эмулюється циклічне Повернення адреси процесора 8086/88 (сигнал сприймається лише в реальному режимі). При виконанні інструкцій введення-виведення процесор адресується на 64-му Кб простори введення-виведення. Лінії A[31:2] ідентифікують адресою із точністю до подвійного слова, а межах цого слова сигнали BE[3:0]# безпосередно вказують, котрі байти використовуються в даному циклі. Лінії A[31:4], що визначають адресою рядка внутрішнього кеша, в циклах анулювання працюють на введення.

Шина даних D[31:0] припускає як 32-розрядний режим, то й 16 — й 8- розрядний, в залежності від стану вхідних сигналів BS16# чи BS8#. Алі, в відзнаку від 386-го, перекомутація байтів не здійснюється. Кожний байт шини даних має біт паритету DP[3:0]. Схеми паритету генерують коректні контрольні біти в циклах запису, а циклах читання в випадку помилки паритету лише виробляється сигнал помилки на виході PCHK#, що ніяк не впливає на роботу процесора. Він може використовуватися зовнішніми схемами по розсуду розробника системної плати.

Тип циклу локальної шини визначається сигналами M/IO#, D/C#, W/R# й LOCK# под годину активності сигналу ADS#.

Сигнали арбітражу локальної шини у порівнянні із попередніми процесорами доповнені вихідною лінією BREQ, що управляється процесором в будь-якому стані. Цей сигнал вказує зовнішньому арбітру тих, що процесор має внутрішнє запитання на використання шини. Сигнал встановлюється водночас зі стробом ADS#. Якщо процесор в даний момент не керує шиною, то сигнал із «з'явитися у тому момент, коли процесор виставив б сигнал ADS#. Для запитання передачі керування локальною шиною іншому влаштуванню використовується сигнал HOLD. Колі процесор визнає можливим передачу керування, він виставить сигнал підтвердження HLDA. Крім того, є сигнал безумовного отключення процесора від шини — BOFF#. По цьому сигналу процесор віддає керування шиною в наступному ж такті, а поточний цикл може бути перерваний. По Закінченню чинності сигналу BOFF# процесор рестартує перерваний цикл, знову ввівши такт адресації й ідентифікації зі стробом ADS#. Для внутрішніх вузлів процесора це бачиться як введення тактів чекання. Сигнал AHOLD передвизначений для захоплення зовнішнім контролером лише шини адреси для анулювання рядків внутрішньої кеш-пам «яті. Анулювання рядка виробляється за наявності строба зовнішньої адреси EADS#.

До інтерфейсу кеш-пам «яті відносяться вхідні сигнали KEN# (дозвіл кешировання пам «яті по поточній адресі), FLUSH# (анулювання всіх рядків внутрішнього кеша із попереднім вивантаженням рядків, що модифікувалися в випадку застосування зворотного запису) й вихідні сигнали PWT й PCD, керуючі зовнішнім кешированням. Процесори, працюючі в режимі зворотного запису кешу, використають додаткові сигнали INV, HITM#, CASHE# й WB/WT#. Перші процесори сімейства 486-х в первинному кеше забезпечували лише політику наскрізного запису. Їх не було б необхідності в реалізації пакетного режиму при записі. Запис зовнішнім контролером в кешуюму пам «ять наводити лише до анулювання рядка кеша, якщо осередок, до якої якщо в обігу зовнішній контролер, уявлений й в внутрішньому кеші. Для політики зворотного запису інтерфейс ускладнюється — необхідно забезпечення можливості вивантаження рядків кеша, що модифікувалися в основну пам «ять, якщо до пам «яті, що відображається цими рядками, якщо в обігу зовнішній контролер шини. З цими відмінностями зв «язані поняття стандартного й розширеного режиму шини процесора 486. Стандартний режим шини передвизначений для роботи первинного кеша із політикою наскрізний запису, що повністю сумісно із інтерфейсом перших процесорів 486 із WT-кешем. Його основні відзнаки наступні: на сигнал FLUSH# процесор не відповідає спеціальним циклом підтвердження; за сигналом FLUSH# процесор анулює всіх рядки внутрішнього кеша за 15−20 тактів CLK; сигнали, специфічні для WBкеша, ігноруються; сигнал EADS# сприймається в останній момент години. Розширений режим шини передвизначений для роботи первинного кеша із політикою зворотного запису, що повністю сумісно із інтерфейсом процесорів 486 із WB-кешем. Його основні відзнаки наступні: за сигналом FLUSH# процесор виконує зворотні записи рядків, що модифікувалися кеша, после чого відповідає спеціальним циклом підтвердження; зворотний запис рядків, що модифікувалися кеша, що виконується за сигналом FLUSH# й інструкції WBINVD, може позичати біля 2000 тактів CLK, система винна спостерігати за шиною, очікуючи спеціального циклу підтвердження; сигнали BLEN#, EWBE#, WB/WT#, INV сприймаються процесором; сигнал WB/WT# сприймається в кожному циклі звертання до пам «яті, дозволяючи визначати політику запису для шкірного рядка окремо; сигнал EADS# сприймається лише в стані HOLD, AHOLD чи BOFF#; сигнал PLOCK# не активний (постійна високий рівень). Вибір режиму шини здійснюється процесором за станом лінії WB/WT# в останній момент закінчення сигналу RESET, низькому рівню відповідає стандартний режим шини. Сигнал всередині процесора резистором підтягується до низького рівня, так що на системній платі, не зворотного запису, що підтримує режим, процесор завжди якщо працювати в стандартному режимі. На малюнку 1.6 уявлений пакетний цикл заповнення рядка кеш-пам «яті.

Процесор 486 має RISC-ядро, що зажадало докорінної зміни дешифрації команд. Черга кодів перебує із двох блоків по 16 байт й заповнюється, чи із кешу за 1 такт, чи швидкими пакетними циклами поблочно. Запитання на передвиборку має нижчий пріоритет у порівнянні із іншими запитаннями, що дозволяє звести до мінімуму годину, необхідний для вибірки операнда. На малюнку 1.7 уявлений конвейєр процесора.

Більшість команд перебувають в крапках конвейєра не более одного такту. Крім того запис результату може бути суміщений із виконанням наступної команди, якщо будь-який операнд наступної команди, чи не перетинається із результатом попередньої, чи перетинається повністю (укладати склад. Наприклад АХ й ЕАХ). Дешифрация команди виконується в дві стадії. На першій стадії виробляється трансляція команди в RISC-інструкцію. На другій стадії виробляється обчислення адресу операндів й формування відповідних запитань.

Арифметичний блок має в свойому складі окрім блоку цілочисельної обробки ще й блок обробки чисел із плаваючою крапкою, що раніше входив в склад сопроцесора.

У склад процесора війшло ще одне влаштування, покликане значно підвищити продуктивність. Це кеші пам «ять Першого рівня, працююча на частоті ядра. Кэш-пам «ять має розмір 8 Кб й має чотирьохвходову наборно-асоціативну структуру. Її робота аналогічній роботі блоку TLB.

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

По інтерфейсу шина процесора Pentium нагадує шину 486, але й має помітні відзнаки. Нові особливості направлені на підтримку політики зворотного запису кеша, підвищення продуктивності й забезпечення додаткових функціональних можливостей. Якщо шина 486-го був орієнтована на максимальну гнучкість й простоту підключення приладів із різноманітною розрядностью, то шина Pentium орієнтована на досягнення максимальної продуктивності.

Шина даних стала 64-бітной для підвищення продуктивності обміну із пам «яттю. Можливість динамічного керування розрядністю шини вилучена, згоди по розрядності із інтерфейсними шинами покладене на мікросхеми чипсета. При дозволеному контролі паритету даних (сигнал PEN) помилка викликає не лише спрацьовування сигналу PCHK#, але й й фіксацію збойної адреси й даних в регістрі машинного контролю. А якщо встановлен біт MCE регістру CR4, по цій помилці генерується виключення 18. У доповнення до контролю паритету шини даних запроваджено контроль паритету шини адреси. Виявлена помилка паритету бітів A[31:5] шини адреси лише викликає сигнал помилки APCHK#, що може бути оброблений системною логікою.

Пакетні цикли виконуються лише у разі звертання до пам «яті, причому як при читанні, то й при записі. Пакетні цикли зв «язані лише із кешуємою пам «яттю, при цьому кешуємість пам «яті подразумує й її підтримку пакетного режиму. Під годину пакетного циклу сигнали дозволу байт й молодші біти адреси не міняються. Порядок чергування адресу, як й у процесора 486, оптимизован для двухбанкової організації пам «яті. Знову із «явилася конвейєрна адресація, що дозволяє водночас на шині бути присутім двом обслуговуваним запитанням. Ознакою пакетного циклу (й його закінчення) є сигнал CASHE#. Зовнішня система має не може перервати пакетний цикл, початий процесором. Конвейєризация запрошується сигналом NA#, в відповідь на який процесор через такт видасть адресою наступного циклу. Без конвейєризації наступна адреси був б виставлена лише после завершення передачі даних поточного циклу.

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

Для підтримання погодженості даних кеша й основної пам «яті процесор відпрацьовує цикли спостереження, що ініціювалися зовнішньою системою. Ці цикли, як й в 486-м, використають сигнали AHOLD#, EADS# й відповідні сигнали процесора HIT# й HITM#. Сигнал FLUSH# викликає вивантаження всіх рядків, що модифікувалися первинного кеша. Цикли спостереження ініціюються системою для визначення присутності затребуваної області пам «яті в рядку будь-як кеш-пам «яті й визначення її стану. Процесори, починаючи із Pentium, підтримують протокол MESI, назв по їм станам, що визначаються: Modified, Exclusive, Shared, Invalid. Почну визначаються слідуючим чином: Mstate — ряд присутній лише в одному кеші й модифікований, ті є відрізняється від вмісту основної пам «яті. Доступ до цого рядка можливий без генерації зовнішнього (по відношенню до локальної шини) циклу звертання; E-state — ряд присутній лише в одному кеші, але й не модифікований. Доступ до цого рядка можливий без генерації зовнішнього циклу звертання, при записі вон перейде до лав М; S-state — ряд потенційно може бути присутнім в декількох кешах. Її читання можливо без генерації зовнішнього циклу, а запис в неї винна супроводжуватися наскрізним записом в основну пам «ять, що притягне анулювання відповідних рядків в інших кешах; I-state — ряд якщо відстуній в кеше, її читання може призвести до генерації циклу заповнення рядка. Запис в неї якщо наскрізний й вийде на зовнішню шину. Шини цикли процесора уявлені на малюнку 1.8.

Процесор Pentium має суперскалярну архітектуру, що означає можливість одночасного виконання более однієї інструкції за такт. Він побудований на основі двох конвейєрів загального призначення для цілочисельних операцій й конвейєрного FPU. Процесор може виконувати водночас дві цілочисельні інструкції.

Структура конвейєрів уявлена на малюнку 1.9 (Пунктиром показані стадії, добавлені в процесори із підтримкою ММХ). На стадії передвибірки PF команди вибираються із кеша команд. Далі смердоті надходять на стадію вибірки F. Тут відбувається розподіл вибраної порції коду на окремі команди, а також декодування будь-яких префіксів. Між стадією F й D1 знаходиться FIFO-буфер. У ньому може міститися до чотирьох інструкцій (в процесорах без ММХ буфер якщо відстуній, а префікси декодуються на стадії D1). Буфер прозорий, т. є. він не віднімає години, коли порожній. У кожному такті із стадії F в буфер може надходити до двох інструкцій. Бо середня швидкість виконання команд менш ніж дві команди за такт, ті буфер звичайно заповнений.

На стадії D1 відбувається перетворення команд в RISC-інструкції й прийняття рішення про распаралелювання. Далі команди надходять удвічі конвейєра. Обидва конвейєра функціонально подібні, але й другий V конвейєр у порівнянні із головним U має деякі обмеження. Стадія D2, на якій вираховуються адреси операндів пам «яті, має багатоканальний суматор. У відзнаку від відповідної стадії конвейєра попередніх процесорів, ця стадія не вводити додаткових тактів затримки при багатокомпонентних обчисленнях адреси. На стадії ЕХ відбувається безпосереднє виконання команд в цілочисельних АЛУ. Pentium має окремий умножитель, що не використає ресурсів АЛУ, й, отже, дозволяє виконувати інші команди паралельно із множенням. Алі бо умножитель лише один, дві команди множення не распаралеливаються. Множення може вироблятися в V конвейєрі. Кожний конвейєр має свій буфер запису WB для підвищення продуктивності при послідовних операціях запису в пам «ять. Буфери мають розрядність 64 б й можуть обидва заповнитися за такт, наприклад, при одночасних кешіпромахи записи на обидва конвейєрах.

У відзнаку від цілочисельних команд, що цілком виконуються на стадії ЕХ, команди FPU й MMX починають виконуватися на стадії ЕХ, а после цого уходять на свої стадії. На стадіях конвейєра FPU виконуються наступні дії. На стадії ЕХ відбувається читання операндів із пам «яті й регістрів, далі перехід на стадію Х1 чи перетворення даних до зовнішнього формату й запис в пам «ять. На стадії Х1 відбувається перетворення даних до внутрішнього формату й запис в регістр. На стадії Х2 виконання команд, але в стадії WF — округлення й запис результату. Для команд ММХ існують два своїх конвейєра, постачених окремими АЛУ й умножителями. На стадії ЕХ відбувається читання операндів. Стадія Mex — виконання команд, перший такт множення. Стадія Wm/М2 — запис результату однотактних команд, другий такт множення. Стадія М3 — третій такт множення. Wmul — запис результату множення.

Блок попередньої вибірки інструкцій має чотири 32-байтных буферу. На стадії PF дві незалежні парі буферів вибірки працюють разом із цільовим буфером ветвлення ВТВ. У кожний момент години попередню вибірку інструкцій може активно запрошувати лише один буфер. Вибірка виробляється послідовно до появи інструкції галуження. Колі така інструкція із «являється, ВТВ завбачує, якщо чи перехід. Якщо завбачується перехід, ті дозволяється робота іншого буферу передвиборки й він починає передвиборку із цільової крапки галуження. Якщо завбачене галуження не відбулося, конвейєри інструкцій скидаються й передвиборка починається знову. Ос-кільки кеші інструкцій окремий від кешу даних, передвиборка інструкцій не конфліктує із запитаннями даних із кеша. Pentium Pro.

Зовнішній інтерфейс процесора Pentium Pro докорінно відрізняється від всіх попередніх моделей процесорів. Застосування динамічного виконання різко підвищує частоту запитань процесорного ядра до шини за даними пам «яті й інструкціями, оскільки ядро водночас обробляє декілька інструкцій. Для обходу вузького місця — зовнішньої шини — кристал процесорного ядра використає архітектуру подвійної незалежної шини. Одна із цих шин використовується лише для зв «язку із кристалом вторинного кеша, розташованим до того ж корпусі мікросхеми, а й у Pentium II — на загальному картриджі. Ця шина є локальною й в геометричному сенсі - провідники мають довжину порядку одиниць сантиметрів, що дозволяє використати її на частоті ядра процесора. Значний обсяг вторинного кеша дозволяє задовольняти більшість запитань до пам «яті суто локально, при цьому коефіцієнт завантаження шини досягає 90%. Друга шина процесорного кристалу виходить на зовнішні виводи мікросхеми, вона й є системною шиною процесора. Ця шина працює на зовнішній частоті незалежно від внутрішньої шини. Завантаження процесором зовнішньої шини для звичайних «настільних» застосуваннь складає порядку 10% від її пропускної спроможності, а серверних застосуваннь може досягати 60% при чотирьохпроцесорной конфігурації. Таким Чином, обмежена пропускна спроможність зовнішньої шини перестає сильно стримувати продуктивність процесора. Зниження навантаження на зовнішню шину дозволяє ефективно використати багатопроцесорну архітектуру.

Системна шина PentiumPro й Pentium II более ефективна для про «єднання процесорів по симетричній архітектурі, ніж шини попередніх процесорів, оптимизовані для обміну із пам «яттю. Вона дозволяє без додаткових схем про «єднувати до чотирьох процесорів.

Сигнали системної шини про «єднуються в групи запитань й відповідей. Кожне влаштування-агент, підключене до цієї шини, до ініціализації запитання через механізм арбітражу винне отримати декларація про використання шини запитання. Запитання виходить протягом двох суміжних такту: в першому такті передається адреси, тип звертання й тому подібна інформація. У іншому такті передається унікальний ідентифікатор транзакції, довжина запитання, дозволені байти шини й т. п. Три такти после запитання перевіряється стан помилки для захисту від помилок передачі чи порушень протоколу. БудьЯка виявлена помилка викликає повторення запитання, а друга помилка для тієї самої запитання викликає виключення контролю. Шини транзакції діляться на безліч фаз, перекриваючих одне одного. У фазі завершення усі агенти, що відповідають на дане запитання, при необхідності можуть виставити на шину коди завершення. Інші процесори в цій фазі управляють лініями HIT# й HITM#, в залежності від попадання запитання в їхній внутрішній кеші. Агент, що не встигає відповісти за відведені чотири такту, може виставити водночас сигнали HIT# й HITM# для затримки фази завершення на число тактів, кратне двом. У випадку кеш-попадания запитання до пам «яті задовольняє процесор, оскільки передачі кеш-кэш відбуваються швидше. Однак при попаданні у ряд, що модифікувався цикли звертання до пам «яті неминучі. На шині водночас може бути присутнім безліч запитань й відповідей, однак логічний аналізатор, «що розуміє» протокол шини Pentium Pro, здатний розкласти їхні «на полички» відповідних транзакцій.

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

Шина REQ[4:0]# под годину Першого такту фази запитання несе частину інформації про транзакції, достатню для ініціалізації циклу спостереження. При транзакції доступу до пам «яті відразу передається інформація про розмір адресного простору — 4 Держбезпеки (32-біта) чи 64 Держбезпеки (38-біт). Під годину іншого такту фази запитання по цим лініям передається додаткова інформація, включаюча довжину поля даних. Можливо заподіяння довжини 0−8, 16 чи 32 байта.

Шина A[35:3]# використовується багатофункціонально. Під годину Першого такту фази запитання вона містить адреси пам «яті чи введення-висновку, а для транзакцій із відкладеною відповіддю — її ідентифікатор. Під годину іншого такту фази запитання ця шина несе інформацію про атрибути транзакції, її ідентифікатор, й додаткові функції, що беруть доля байтах. По закінченню дії сигналу RESET# процесори із цих ліній одержують інформацію про конфігурацію по включенню.

Сигнали запитання BREQ[3:0]# використовуються для арбітражу симетричних агентів. Агент «n» запрошує шину, управляючи сигналом BREQn#, а інші лінії розглядає як вхідні. Симетричні агенти підтримують розподілений механізм арбітражу на основі циклічної зміни ідентифікатора пріоритету. «Коли обертається» ідентифікатор подає собою внутрішній стан всіх симетричних агентів для визначення агента із найменшим пріоритетом для наступної події арбітражу. По включенні живлення що обертається ідентифікатор встановлюється в значення 3, дозволяючи агенту 0 матір вищий пріоритет із всіх симетричних агентів. По черговій події арбітражу новий стані рівним номера агента — поточного власника шини, в результаті чого, віддавши керування шиною при наступній події, він отримає найнижчий пріоритет. Чергова подія трапляється, коли виставляє запитання до вільної шини чи поточний власник знімає своє запитання. За станом ліній BREQ[3:0] й значенню ідентифікатора, відомого усім агентам, смердоті водночас (по однаковим правилам) визначають нового власника шини. Власник шини може відраховувати керування шиною, зберігаючи активне значення свого сигналу запитання. Однак виявивши запитання від інших агентів, він по можливості винен віддати керування шиною. Для підключення до шини арбітражу BREQ[3:0]# використовуються сигнали процесора BR0#(i/o) й BR[3:1]# (і). Під годину конфігурування по включенню центральний агент винен виставити сигнал BREQ0#. Всі симетричні агенти за сигналами прийнятим зі своїх ліній BR[3:0]#, визначають свій ідентифікатор агента. Процесор Pentium II розрахований на застосування не более ніж в двухпроцесорних симетричних системах, він має лише сигнали BR0# й BR1#. Тимчасова діаграма роботи процесора уявлена на малюнку 1.10.

У сімействі процесорів Pentium Pro використовується архітектура динамічного виконання, в якій сочетаєтся зміну порядку виконання, предположне виконання інструкцій із апаратним перейменуванням регістрів й передсказанням ветвлень. Їхньою відокремлювальною рисою є ті, що інструкції, що минають через конвейєр в порядку надходження, розбиваються на найпростіші мікрооперації, що виконуються суперскалярним процесорним ядром в порядку, зручному процесору. «Безладне» ядро процесора містить декілька конвейєрів, до які підключаються виконавчі прилади. Декілька виконавчих приладів можуть про «єднуватися на одному конвейєрі. Конвейєр процесора містить три частини: препроцесор, ядро із неупорядоченим виконанням, що упорядковує влаштування. Схема конвейєра уявлена на малюнку 1.11.

Конвейєр має наступні східців. Буфер мети галуження ВТВ зберігає історію й їхніх цільових адресу, що відбувалися ветвлень. Кожний із 512 елементів ВТВ зберігає цільову адресою й чотири біти передісторії, що несуть інформацію про ті, траплялася чи перехід за останні чотири проходу через інструкції галуження, посилатися на дану адресою. Якщо на підставі аналізу передісторії завбачується перехід, цільова адреси посилається у нього предвиборки, не чекаючи виконання інструкції галуження. Окрім BTB, Pentium Pro має буфер стекових вертаннь, що дозволити коректно завбачувати адресою Повернення із процедур, що викликаються із різноманітних крапок. Таким чином, виклик процедури в лінійній послідовності кодів не наводити до втрати продуктивності предвиборки. Блок вибірки інструкцій IFU має дві стадії. На першій стадії інструкції вибираються 16-байтними пакетами, зрівненими по межам параграфів. На другий стадії інструкції попередно декодуються й вкладаються удвічі буферу по 16 байт уже без прив «язки до між параграфів. На східці ID процесор має три декодера. перший декодер за такт здатний декодувать одну макроінструкцію, що містить до чотирьох мікрооперацій. Два інших декодера можуть за такт декодувати лише інструкцію, що перебує із однієї мікрооперації. Більш складні інструкції декодуються за декілька тактів.

У кожному такті декодери можуть виробляти до шести мікрооперацій, що надходять в спе-ціальну чергу. З черги до трьох мікрооперацій надходять на стадію RAT. Тут відбувається перейменування регістрів, але в стадії RS резервування місця в ROB. ROB організований в вигляді кільцевого буферу на 40 місця. Микрооперации надходять в ROB в порядку черги й удаляються в порядку черги, а виконуватися мікрооперації можуть поза чергою в міру готовності вихідних даних й доступності виконавчих приладів. До трьох мікрооперації можуть передаватися на виконання в кожному такті. У залежності від функції, що виконується мікрооперація спрямовується до одного із п «ятих портів. До шкірного порту прикріплені свої виконавчі прилади. Порт 0 може містити цілочисельне АЛУ й FPU, порт 1 — цілочисельне АЛУ, порт 2 — блок завантаження даних, порт 3 — блок адреси запису, порт 4 — блок даних запису. У процесорі Pentium II порт 0 містить АЛУ ММХ й умножитель ММХ, а порт 1 — АЛУ ММХ й зсуватель ММХ. Після виконання мікрооперація вертається зворотно в ROB, де очікує вилучення. Після того як результат мікрооперації був записаний в ROB, він (результат) ставає доступним іншим мікроопераціям.

1.3 Програмна модель мікропроцесорів.

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

Для виконання обчислень й адресація процесори мають 8 регістрів загального призначення. У процесорах 8086/88 й 80 286 ці регістри мають розрядність 16 біт. Регістри АХ, ВХ, DX й СХ припускають звертання як до всього регістру, то й до їхніх молодших й старших частин. Регістри SP, BP, SI й DI припускають звертання лише до всього регістру. У 32-розрядних процесорах усі ці регістри мають 32 розряди й містять в молодшій частині регістри попередніх процесорів. Імена 32-разрядных регістрів починаються із символу «Є» ((ЕАХ, ЕВХ й т. Д.). Кожний регістр має своє призначення, але й як правило може використовуватися й в інший ролі. (Є) АХ — акумулятор; (Є) СХ — лічильник; (Є) DX — регістр даних; (Є) ВХ — регістр базової адреси; (Є) SP — покажчик стека; (Є) ВР — додатковий покажчик стека; (Є) SI — індекс операнда-джерела; (E) DI — індекс операнда-приймальника;

У 16-разрядных процесорах для адресації застосовуються регістри ВХ, ВР, SI й DI в різноманітних комбінаціях, причому регістри ВХ й ВР містять базову адресою, а SI й DI — індекс. У 32-розрядних процесорах в якості базового чи індексного може виступати будь-який регістр. Сегментні регістри.

Для надання гнучкості програмам в процесорах є сегментні регістри. Адресація пам «яті завжди виконується відносно якого-небудь сегменту, параметри якого зберігаються в сегментном регістрі. У процесорі 8086/88 є 4 16-разрядных сегментних регістра, що зберігають сегментну адресою. У разі звертання до операнду в пам «яті формується його лінійна адреси шляхом підсумовування зміщення операнда в сегменті із сегментною адресою, зсунутою на виборах 4 розряди ліворуч. У підсумку одержується 20-розрядна лінійна адреси, по якій процесор виробляє вибірку. У процесорі 8086/88 не застосовується жодний захист пам «яті, тому до всіх сегментів розв «язаний доступ як по запису то й по читанню. Сегмент може розташуватися по будь-якій адресі кратній 16 й має розмір 64 Кб. Кожному сегментному регістру відведена своя роль. DS — сегмент даних; CS — сегмент коду; SS — сегмент стека; ES — додатковий сегмент даних.

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

Процесор 80 286 підтримує захист пам «яті, тому його сегментні регістри були істотно перероблені й доповнені. Тепер сегментний регістр перебує із двох основних частин:. Селекторна частина в режимі реальних адресу містить сегментну адресою, а захищеному режимі - селектор сегменту, індикатор дескрипторнї таблиці й пріоритет запитання. Має 16 розрядів й відповідає сегментному регістру процесора 8086/88 в всіх операціях по завантаженню/вивантаженню;. Дескрипторна частина містить базову лінійну адресою (24 розряди) початку сегменту, розмір (16 розрядів) й атрибути.

Формування лінійної адреси операнда зводиться до підсумовування зміщення із базовою лінійною адресою сегменту із відповідної дескрипторной частини. У режимі реальних адресу при завантаженні сегментного регістру значення сегментної адреси зсувається ліворуч на виборах 4 розряди й записується в полі базової адреси. Розмір сегменту встановлюється рівним 64 Кб, а атрибути дозволяють використати сегмент як для запису то й для читання. У захищеному режимі вся дескрипторна частина завантажується із таблиці дескрипторів в відповідності із селектор. У будь-якому режимі розмір сегменту не перевищує 64 Кб.

У 32-розрядних процесорах був доопрацьована дескрипторна частина сегментних регістрів. Поле базової лінійної адреси поширене до 32 розрядів, полі розміру сегменту поширене до 20 розрядів. У атрибутах із «явилося два нових біти: біт розрядності сегменту й біт дрібності (дрібніше ці біти будуть описані в розділі, присвяченому захищеному режиму). Крім того із «явилося два нових сегментних регістра FS й GS. Вони використовуються поряд із регістрами DS й ES для зберігання параметрів сегментів даних. Регістр прапорів.

Регістр прапорів використовується для зберігання результатів арифметичних операцій й керування процесором. У процесорах 8086/88 й 80 286 регістр прапорів має 16 розрядів.

Призначення прапорів наступне:. CF — прапор перенесення;. PF — прапор паритету;. AF — прапор половинного перенесення;. ZF — прапор нуля;. SF — прапор знаку;. TF — прапор трасировки;. IF — прапор переривання;. DF — прапор направлення;. OF — прапор переповнення.

Прапори CF, PF, AF, ZF, SF й OF відображають результат виконання арифметичної операції й використовуються для організації ветвленнь в програмах шляхом виконання переходу при певному стані якого-або прапора.

Настанова прапора TF наводити доти, що после виконання кожної інструкції процесор якщо генерувати переривання 1. Скид прапора IF призведе до забороні обробки апаратних перериваннь, що маскуються. Прапор DF вказує направлення при виконанні строковых команд.

У процесорі 80 286 додалися два нових поля, що використовуються в захищеному режимі.. Прапор NT (біт 14) задає поведінку команди IRET (Повернення із переривання), якщо він скинуть, адреси Повернення якщо вибиратися із стека, а якщо встановлен — відбудеться переключення задачі. Даний прапор встановлюється щоразу, коли відбувається переключення задачі шляхом виконання команд передачі керування чи виклика переривання й скидається при поверненні до попередньої задачі шляхом виконання команди IRET. Усі описане вище відноситься лише до захищеного режиму.. Поле IOPL (біти 13−12) задає рівень привілей введення-виведення. Команда введення-виведення якщо виконана лише якщо значення в цьому полі чисельно понад значення поточного рівня пріоритету. Дане полі також має сенс лише в захищеному режимі.

У процесорі 80 386 регістр прапорів поширений до 32 розрядів й містить два нових прапора:. RF (біт 16) — прапор поновлення, використовується спільно із регістрами крапок зупинки;. VM (біт 17) — прапор виртуальної машини. У захищений режим 32-разрядных процесорів уведень новий подрежим. Настанова даного прапора наводити доти, що формування лінійної адреси в захищеному режимі здійснюється також, як й в режимі реальних адресу, але й при цьому зберігається робота механізму захисту завдань й введення-виведення.

У процесор 80 486 був доданий лише один новий прапор — AC (біт 18). Настанова цого прапора наводити до включення механізму контролю за вирівнюванням операндів.

У останніх моделях 80 486, а процесорах Pentium із «явилися три нових прапора:. ID (біт 21) — якщо вдається встановити цей прапор, означати процесор підтримує команду CPUID, що закликана повідомляти програмі користувача інформацію про процесор;. VIP (біт 20) — віртуальне запитання переривання;. VIF (біт 19) — віртуальний прапор переривання.

У процесорах Pentium Pro й Pentium II регістр прапорів в порівнянні із процесорами Pentium. Системні регістри.

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

У процесорі 8086/88 є лише один регістр, що можна лічити системним. Це регістр покажчика команд IP. Даний регістр має 16 розрядів й містить зміщення наступної команди в сегменті коду. Програму не може напряму працювати із цим регістром, однак виконуючи переходь, вона побічним чином змінює вміст регістру IP.

У процесорі 80 286 в зв «язку із підтримкою захищеного режиму був уведень цілий ряд системних регістрів для зберігання покажчиків на системні області пам «яті й керування процесором.

Регістр GDTR зберігає покажчик на таблицю глобальних дескрипторів й її розмір. Має два поля: полі лінійної адреси початку таблиць (24 біти) й полі розміру таблиці (16 біт). Доступ до цого регістру здійснюється із допомогою команд LGDT й SGDT для завантаження й збереження вмісту регістру відповідно.

Регістр IDTR по внутрішньому формату відповідає регістру GDTR й зберігає покажчик й довжину таблиці перериваннь. У попередньому процесорі таблиця перериваннь завжди розташувалася в початку фізичної пам «яті. У процесорі 80 286 вона може розташуватися в будь-якому місці пам «яті.

Регістр LDTR по внутрішньому формату нагадує сегментний регістр й зберігає базову адресою, розмір й атрибути локальної дескрипторної таблиці.

Регістр TR по внутрішньому формату нагадує сегментний регістр й зберігає базову адресою, розмір й атрибути сегменту стану поточної задачі.

Регістр MSW — слово стану машини. Має 16 розрядів й містить чотири прапора:. PE (біт 0) — дозвіл захисту. Настанова цого прапора переводити процесор в захищений режим, Повернення в реальний режим можливе лише за сигналом RESET;. MP (біт 1) — моніторінг сопроцесора, дозволяє викликати виключення 7 по кожній команді WAIT;. EM (біт 2) — емуляція сопроцесора. Настанова цого прапора викликає появу виключення 7 при кожній команді, стосовній до сопроцесору, що дозволяє здійснювати його програмну емуляцію.. TS (біт 3) — переключення завдань. Встановлюється процесором после шкірного переключення задачі. Скидається командою CLTS. При встановленому прапорі, команда, стосовна до сопроцесору, викличе виключення 7, що дозволяє програмно визначити, відноситься чи контекст сопроцесора до поточної задачі.

Починаючи із процесора 386 змінилася розрядність полів системних регістрів. Так полі базової адреси регістрів GDTR, IDTR, LDTR й TR поширилося до 32 розрядів. Регістр MSW поширився до 32 розрядів й називається тепер CR0. У ньому із «явилися нові прапори:. WP (біт 16) дозвіл захисту від запису на рівні привілей супервізора в сторінки лише для читання;. PG (біт 31) включення механізму трансляції сторінок.

У зв «язку із підтримкою механізму трансляції сторінок із «явилися також два нових регістри: CR2 — містить 32-битну лінійну адресою, по якій був отримана остання відмова сторінки пам «яті й CR3, старші 20 розрядів якого зберігають фізичну адресою каталогу сторінок.

У процесорі 80 486 регістр CR0 був доповнений декількома новими прапорами:. ET (біт 4) — індикатор підтримки інструкцій математичного сопроцесора;. NE (біт 5) — дозвіл стандартного (для Intel) механізму повідомлення про помилку FPU через генерацію виключення. При NE=0 й активному сигналі IGNNE# помилки FPU ігноруються. При NE=0 й пасивному сигналі IGNNE# при виникненні помилки FPU процесор зупиняється й чекає переривання, який вводимо зовнішньою логікою за сигналом на висновку FERR#. Таким чином емулюється обробка помилок FPU, прийнята в РС зі часів сопроцесорів 80 287 й 80 387;. AM (біт 18) — дозвіл контролю вирівнювання (контроль виконується лише на рівні привілей 3 при АМ=1 й прапорі АС=1);. NW (біт 29) — заборона наскрізна запису кеша й циклів анулювання;. CD (біт 30) — заборона заповнення кеша (кеш-попадания в раніше заповнені рядки при цьому не забороняються).

У регістр CR3 були додані два нових б: PCD (б 4) — заборона кешування й PWT (б 3) — кешування сторінки зі наскрізним записом.

У останні моделі 80 486 й процесори Pentium був доданий регістр CR4, що містить біти дозволу архітектурних рішень. У даному регістрі визначені наступні біти:. VME (біт 0) — дозвіл механізму віртуальних перериваннь;. PVI (біт 1) — дозвіл використання віртуального прапора перериваннь в захищеному режимі;. TSD (біт 2) — перетворення інструкції RDTSC в привілейовану (лише Pentiun+);. DE (біт 3) — дозвіл крапок зупинки по звертанню до портів введеннявиведення;. PSE (біт 4) — дозвіл сторінок розміром 4 МБ (лише Penium+);. PAE (біт 5) — дозвіл 36-розрядної фізичної адреси (лише Pentium Pro+).

Захищений режим Сегментація пам «яті.

Захищений режим почав вперше підтримуватися процесором 80 286. Наступні процесори лише доповнювали режим новими можливостями, але й основні поняття й механізми залишилися.

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

Дескриптори сегментів зберігаються в пам «яті масивів даних, що сформувалися в вигляді таблиць. Процесор використає три типу таблиць дескрипторів: GDT — глобальна таблиця дескрипторів; LDT — локальна таблиця дескрипторів; IDT — таблиця дескрипторів перериваннь.

Таблиця GDT містить будь-які типи дескрипторів, окрім тихий, що використаються при обробці перериваннь. У GDT заносяться дескриптори сегментів, що можуть використовуватися системою при виконанні різноманітних завдань. Таблиці LDT містять дескриптори сегментів, що використаються при рішенні поточної задачі. Кількість таблиць, що створюються LDT визначається операційною системою й залежить від числа завдань, що реалізуються. У принципі кожна завдання може матір окрему LDT, що включає дескриптори сегментів, що використаються при її рішенні. Крім того, LDT можуть містити спеціальні дескриптори шлюзів — крапок входу в програми чи задачі. У випадку спільного використання сегментів таблиці LDT можуть повністю чи частково перекривати одне одного. Таблиця IDT використовується для реалізації перериваннь. Таблиці можуть матір розміри від 8 байт до 64 Кб, т. є. Містити до 8192 дескрипторів.

Звертання до необхідного дескриптору здійснюється із допомогою селектора, що міститься в відповідному сегментном регістрі. Селектор подає собою 16-разрядный покажчик, що має три поля (малюнок 1.13.).

Поле RPL (біти 1−0) визначає рівень привілей запитання. Це двухрозрядний код, що вказує допустимий рівень захисту сегменту, що може бути вибраний із допомогою даного селектора.

Поле TI (біт 2) служити індикатором таблиці. Його значення вказує таблицю, що вибирається: GDT при TI=0, LDT при TI=1.

Поле ІНДЕКС (біти 15−3) служити індексом для вибору одного із 8192 дескрипторів.

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

Кожна із таблиць має відповідний регістр: GDTR, LDTR, IDTR. Регістр GDTR містить 48 розрядів (40 в 80 286), із які 32 (24 в 80 386) задають базову адресою таблиці, а 16 розрядів вказують її обсяг в байтах мінус 1. Якщо подставити в молодші 3 розряду селектора нулі, то отримається зміщення дескриптора в таблиці. Це зміщення порівнюється із межею таблиці. У випадку, якщо зміщення виходить за межі таблиці, виробляється виключення. Якщо порушення межі немає, зміщення підсумовується із базовою адресою таблиці, в результаті утвориться лінійна адреси дескриптора. Дана перевірка й наступне формування адреси справедливі для всіх таблиць.

Регістр LDTR містить 16-разрядный покажчик, що визначає розміщення в GDT дескриптора таблиці, що використається LDT. Дескриптор LDT містить 32- розрядний (24-розрядний в 80 286) базову адресою таблиці й її 16-розрядний розмір, що при завантаженні регістру LDTR вибираються із GDT й зберігаються в внутрішніх програмно недосяжних регістрах процесора.

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

Окрім базової адреси й розміру сегменту дескриптора визначають ряд інших важливих його атрибутів. У загальному вигляді формат дескриптора уявлений на малюнку 1.14.

У процесорі 80 286 біти 63−48 зарезервовані й повинні бути рівним нулю. У центрі «доп. Атрибути» присутнє 4 біти:. Біт дрібності G (біт 55) вказує, в які одиницях завдань розмір сегменту: в байтах при G=0 чи сторінках обсягом по 4 Кб при G=1. Таким чином, в процесорах 80 386+ сегмент може матір розмір до 220*4Кб= 4Гб;. Біт розрядність D (біт 54). Даний біт має сенс лише для сегментів коду й стека. Для сегменту коду він задає розрядність операндів й адреси за замовчанням. Для сегменту стека він задає розрядність осередків стека, при D=1 для стекових операцій використовується регістр ESP, й осередок стека має 32 розряди, т. є. Навіть при вталкуванні в стік 16-розрядного слова ESP зменшиться на виборах 4;. Біт 53 передвизначений для майбутніх розширеннь й винен містити 0;. Біт 52 не використовується.

Байт доступу дескриптора визначає права доступу до сегменту, що вибирається. У залежності від вмісту сегменту байт доступу має різноманітні формати (малюнок 1.15), хоча призначення ряду полів залишається однаковим. Однакове призначення мають наступні поля:. Біт присутності Р визначає наявність відповідного сегменту в пам «яті. Якщо Р=0 (сегмент якщо відстуній), ті даний дескриптор не використовується для формування адресу. У цьому випадку вміст інших розрядів дескриптора може бути довільним. Якщо в регістр сегменту надходить селектор дескриптора, що є Р=0, ті процесор генерує виключення «відсутність сегменту». Оброблювач даного виключення може підвантажити необхідний сегмент із диску;. Поле DPL вказує рівень привілей дескриптора. У залежності від співвідношення значень DPL, CPL (поточний рівень привілей) й RPL, що задається в молодших бітах селектора, дозволяється чи забороняється звертання до даного сегменту. Таким чином забезпечується рівень, що вимагається захисту сегменту;. Системний біт P. S визначає роль що вибирається дескриптора в системі. При S=1 дескриптор забезпечує звертання до сегментів кодів чи даних. Дескриптори, що є S=0, служать для звертання до таблиць LDT, сегментів TSS, чи шлюзів для входу в інші задачі чи програми, включаючи оброблювачі перериваннь. Такі дескриптори називаються системними.

Поле типу системного дескриптора визначає його тип. Типи системних дескрипторів наведені в таблиці 1.1.

Таблиця 1.1 Типи системних дескрипторов.

|Тип |Визначення |Тип |Визначення | |0 |Не використовується |8 |Не використовується | |1 |Доступний TSS 286 |9 |Доступний TSS 386+ | |2 |Таблиця LDT |A |Зарезервований | |3 |Зайнятий TSS 286 |B |Зайнятий TSS 386+ | |4 |Шлюз виклика 286 |З |Шлюз виклика 386+ | |5 |Шлюз задачі |D |Зарезервований | |6 |Шлюз перериваннь 286 |E |Шлюз перериваннь 386+ | |7 |Шлюз пастки 286 |F |Шлюз пастки 386+ |.

У процесорі 80 286 доступні лише типи із 0 по 7.

Можна виділити три основних класу системних дескрипторів.

Дескриптори таблиць LDT (тип 2) забезпечують звертання до локальної таблиці дескрипторів для вибору сегментів.

Дескриптори сегментів TSS (типи 1 3 9 У) використовуються при переключенні завдань в багатозадачному режимі. Біт 1 в байті доступу сегменту TSS пазиваеться бітом зайнятості й вказує, є чи завдання, що викликається зайнятой. Цей біт дескриптора встановлюється в одиницю, коли процесор виконує виклик задачі, й скидається в нуль при виконанні Повернення попередньої задачі. Б зайнятості використовується для запобігання повторного виклика уже працюючої задачі. Переключення на зайняту завдання наводити до генерації виключення 13.

Відзначимо, що дескриптори LDT й TSS завжди повинні матір значення біта розрядності D=0.

Дескриптори шлюзів (типи 4−7, З, E, F) використовуються для звертання до програм й завдань, а також при обробці перериваннь й ловушек.

Формати байта доступу для дескрипторів кодів й даних (S=1) показані на малюнку 1.15. Вони відрізняються значеннями б виконавчості Є: Е=1 для сегментів кодів й Е=0 для сегментів даних й стека.

Біт звертання, А встановлюється в одиницю у разі звертання до сегменту т. є. При завантаженні відповідного дескриптора в сегментний регістр. Цей біт періодично перевіряється операційною системою, що реалізує віртуальну пам «ять, що таким чином виявляє незапитані сегменти, що є А=0. Сегменти, довгий годину що залишаються незапитаними, виводяться із оперативної пам «яті на диск, звільняючи місце для інших сегментів.

Біт дозволу читання R вводитися для сегменту кодів й дозволяє при R=1 виробляти читання його вмісту. При R=0 допускається лише вибірка вмісту цого сегменту для виконання через регістр CS. Спроба читання в цьому випадку викличе виключення 13. Відзначимо, що виключення цого типу виникне також при спробі запису в сегмент програм незалежно від значення біту R.

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

Біт дозволу запису W вводитися для сегментів даних. Дозволяє при W=1 чи забороняє при W=0 зміну вмісту цих сегментів. Читання із сегментів даних розв «язане завжди.

Біт направлення розширення ED визначає розміщення сегменту даних відносно базової адреси. При ED=0 (розширення вгору) дані в сегменті розміщуються в направленні зростання адресу від базової адреси до межі. При ED=1 (розширення вниз) дані в сегменті розташуються в направленні зменшення адресу. Таким чином, при розширенні вгору відносна адреси осередку сегменту винна бути менш чи рівна значенню розміру сегменту, при розширенні вниз відносна адреси винна бути понад розміру сегменту. Захист пам «яті.

Процесор має спеціальні засоби, що забезпечують в захищеному режимі захист пам «яті від несанкціонованого доступу. Для захисту інформації, що зберігається в сегментах пам «яті, використовується система привілей, що регулює доступ доти чи іншого сегменту в залежності від рівня його захищеності й від ступеня важливості запитання. У процесорі встановлені чотири рівня привілей PL, що задаються номерами від 0 до 3. Найбільш привілейованим є рівень із меншим номером. Рівень захищеності сегменту також має чотири рівня, що схематичні подаються в вигляді вложенных колець захисту (малюнок 1.16).

Відповідні рівні захищеності ілюструються на прикладі сегментів кодів. Найменш захищеними є програми користувача, для які виділяється рівень із номером 3. Рівні із 0 по 2 відводяться для системних програм.

У відповідності із рівнями привілей й захищеності встановлені наступні правила доступу для сегментів кодів й даних. 1. Дані із сегменту, що є рівень захисту PL можуть бути вибрані програмою, що є такий ж чи более високий рівень привілей. 2. Сегмент кодів (процедура), рівень, що є захисту PL, може бути викликаний програмою, що є такий ж чи более низький рівень привілей.

Необхідно відзначити, що правило 2 не виконується при викликові сегментів кодів, що є встановлений біт підпорядкованості С=1 в байті доступу дескриптора.

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

Рівень привілей дескриптора DPL задається бітами 5 й 6 в байті доступу дескриптора. Значення DPL вказує рівень захищеності сегменту, т. є. Номер кільця захисту, до якого він відноситься.

Рівень привілей запитання RPL задається бітами 0 й 1 селектора. Значення RPL визначає рівень привілей, ініціатора запитання-звертання до сегменту. Ініціатором є програма чи влаштування, що із допомогою селектора якщо в обігу до пам «яті системи.

Поточний рівень привілей CPL задається бітами 0 й 1 селектора, розміщеного в регістрі CS. Визначає рівень привілей в останній момент сегменту, що виконується програми.

Процесор має спе-ціальну команду ARPL, що використається для корекції значення RPL селектора. При цьому селектор служити першим операндом команди. У якості іншого операнда в регістр завантажується поточне значення CS. При виконанні команди порівнюються значення двох молодших бітів операндів, що містять RPL й CPL. Поле RPL селектора приймає максимальне із значень RPL й CPL, т. Є. Встановлюється мінімальний рівень привілей запитання. Якщо значення RPL при цьому змінилося, ті встановлюється ознака ZF.

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

Звертання до сегментів даних виробляється із допомогою селекторів, що завантажуються в регістри DS, ES, FS, GS. При звертанні аналізується значення RPL селектора й CPL програми. Ефективний рівень привілей (EPL) для запитання даних в цьому випадку визначається як максимальне із значень RPL й CPL. Звертання до сегменту, що запрошується даних дозволяється, якщо його рівень захисту DPL й EPL. Порушення цого правила викликає переривання типу 13.

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

Звертання до підлеглих сегментів допускається лише із програм, що є такий ж чи более низький рівень привілей. Таким чином, в програмах із поточним рівнем привілей CPL можуть виконуватися міжсегментні команди JMP, CALL із передачею керування підлеглому сегменту, що є DPL й CPL. При такій передачі керування зберігається рівень вихідної (викликаючої) програми.

Звертання до непідлеглих сегментів із допомогою команд JMP й CALL допускається лише в випадку, якщо значення CPL поточної програми рівно DPL сегменту. Крім того, команда CALL може викликати сегменти програм із более високим рівнем привілей, використовуючи механізм шлюзів (чи вентилів).

Менш привілейована процедура може викликати более привілейовану, будучи в обігу до неї через дескриптор шлюзу виклика, що визначає доступну крапку входу. Цей засіб дозволяє програмам користувача бути в обігу до операційної системи. Формат дескриптора шлюзу виклика уявлений на малюнку 1.17.

У процесорі 80 286 бвти із 48 по 63 не використовуються й повинні бути рівні 0.

П «ятибайтове полі WC вказує кількість параметрів, що переносяться в стік нової програми. Параметри подають собою 16-разрядные слова для 16- розрядних програм (до того числі й для процесора 80 286) й 32-разрядные слова для 32-разрядных програм.

При викликові програм через шлюз повинні виконуватися наступні правила. Значення RPL селектора шлюзу й CPL викликаючої програми повинні бути менш чи рівним значенню DPL в байті доступу шлюзу.

Якщо програма, що викликається має інший (более високий) рівень привілей для неї створюється новий стік. При цьому в регістри SS й (E)SP із сегменту TSS завантажується новий вміст, що визначає початкова адреси нового стека. У цей стік послідовно вводяться старі значення SS й (E) SP; параметри, переносимі із старого стека; старі значення CS й (E) IP. Кількість переносимих параметрів визначається полем WC, причому вибираються останні із завантажених в старий стік параметрів. Стати команді RET виробляється відновлення із стека старого вмісту регістрів SS, (E)SP й CS, (E)IP.

Реалізація введення-виведення в захищеному режимі виробляється із урахуванням CPL програми, що виконується. Величина CPL порівнюється зі значенням поля IOPL в регістрі (E)FLAGS. Введення-виведення виробляється лише при виконанні умови CPL менш чи рівно IOPL. Багатозадачність.

Багатозадачністю називається такий засіб організації роботи системи, при якому в її пам «яті водночас містяться програми й дані для виконання декількох процесів обробки інформації (завдань). При цьому винен забезпечуватися взаємний захист програм й даних, стосовних до різноманітних завдань, а також можливість переходу від виконання однієї задачі до другий (переключення завдань). Процесори починаючи із 80 286 мають ефективні засоби підтримки багатозадачного режиму. У якості таких засобів використовується структура даних, організована в вигляді сегменту, що називається сегментом стану задачі TSS. Апаратними засобами для підтримки багатозадачности служити регістр задачі TR, в що із GDT може бути завантажений дескриптор задачі.

Кожна завдання має свій сегмент TSS, структура якого перебує із двох частин. Обов «язкова частина містить всю інформацію, необхідну процесору для рішення даної задачі. Додаткова частина може містити яку-або інформацію про завдання, що використається операційною системою, бітову карту, що визначає допустимі адреси приладів введення/висновку (лише 80 386+) й бітовую карту віртуальних перериваннь (лише Pentium+). Розглянемо утримання обов «язкової частини TSS (таблиці 1.2 й 1.3).

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

Поля SS0, (E) SP0, SS1, (E) SP1, SS2, (E) SP2 служать джерелом нового покажчика стека при зміні поточного рівня привілей (передачі керування).

Біт пастки T в TSS викликає при Т=1 переривання типу 1 при переключенні на дану завдання. Це переривання використовується при налагодженні програмного забезпечення.

Бітова карта перенаправлення перериваннь БКПП забезпечує можливість автоматичного перенаправлення програмного переривання в віртуальном режимі. Бітова карта введення-виведення БКВВ забезпечує індивідуальний захист шкірного порту введення-виведення. При записі в біті БКВВ нуля дозволяє при CPL>IOPL звертання до відповідного порту. За останнім байтом БКВВ винен слідувати заключний байт, що містить 1 в всіх розрядах. Адреси цого байта винна відповідати межі сегменту.

Дескриптор TSS винен зберігатися лише в GDT. Тому звертання до дескриптору TSS із допомогою селектора, що є біт TI=1, викликає виключення 10.

Для переключення завдань процесор використає звичайні команди міжсегментного переходу JMP, виклика CALL й Повернення IRET. Якщо селектор команди JMP чи CALL вибирає із таблиці GDT системний дескриптор, у якого полі типу рівно 1 (для 80 286) чи 9 (для 80 386+), виконується переключення завдань. При цьому селектор заноситися в TR. Слідує відзначити, що команди передачі керування містять зміщення. Однак при переключенні завдань воно та ігнорується.

При переключенні завдань із допомогою команд JMP чи CALL повинні виконувати правила привілей, встановлені для доступу до даних: максимальне із CPL й RPL винне бути менш чи рівно DPL. Таким Чином допускається переключення на задачі, чий ступінь захисту менш чи рівному рівню привілей поточної задачі.

Таблиця 1.2. Сегмент стану задачі 80 286.

|Зміщення|Вміст | |0 |Селектор Повернення | |2 |SP0 | |4 |SS0 | |6 |SP1 | |8 |SS1 | |0A |SP2 | |0C |SS2 | |0E |IP | |10 |FLAGS | |12 |AX | |14 |CX | |16 |DX | |18 |BX | |1A |SP | |1C |BP | |1E |SI | |20 |DI | |22 |ES | |24 |CS | |26 |SS | |28 |DS | |2A |LDTR | |2C |Інформація ОС |.

При використанні команди CALL можливо звертання до завдань із более високим ступенем захисту, ніж рівень привілей поточної програми, із допомогою шлюзу задачі. Використання шлюзу задачі аналогічно використанню шлюзів виклика. У дескрипторі шлюзу задачі визначені лише два поля: полі селектора, в якому знаходиться селектор TSS, й полі прав доступу. Режим V86.

Починаючи із процесора 80 386 стало можливим виконання в захищеному режимі програм, написаних для 8086/88, забезпечуючи при цьому ряд засобів захисту й можливість страничной організації пам «яті. Такий варіант захищеного режиму називається режимом віртуального 8086 й реалізується при настанові в регістрі EFLAGS значення ознаки VM=1.

Таблиця 1.3. Сегмент стану задачі 80 386+.

|Зміщення|Вміст | |0 |Селектор Повернення | |4 |ESP0 | |8 |SS0 | |градусів |ESP1 | |10 |SS1 | |14 |ESP2 | |18 |SS2 | |1С |CR3 | |20 |EIP | |24 |EFLAGS | |28 |EAX | |2С |ECX | |30 |EDX | |34 |EBX | |38 |ESP | |3С |EBP | |40 |ESI | |44 |EDI | |48 |ES | |4С |CS | |50 |SS | |54 |DS | |58 |FS | |5С |GS | |60 |LDTR | |64 |Відносна адреси БКПП (б 15−1). | |66 |Т (б 0) | | |Відносна адреси БКВВ | |68 |Інформація ОС | | |БКПП | | |БКВВ |.

Всі програми, що виконуються в режимі V86, мають нижчий рівень привілей. Цьому режим V86 відрізняється від реального режиму, при якому усім програмам надається вищий рівень привілей. При формуванні лінійної адреси в режимі V86 не використовуються дескриптори, тому правила привілей в цьому режимі не виконуються. У режимі V86 використовуються лише окремі засоби захисту: 1. У режимі V86 не здійснюється захист сегментів. Якщо використовується странічна адресація, ті її захист при порушенні правив доступу до сторінки наводити до виключення 14. 2. Надходження команд, що виконуються лише при рівні CPL=0, в режимі V86 викликає виключення 13. 3. Надходження команд, що виконуються лише в захищеному режимі, викликає виключення 6 (недозволений код команди). Команди PUSHF, POPF, CLI, STI, INT, IRET дошкульні до значення поля IOPL. Вони виконуються лише при IOPL=3. Виконання команд введення/висновку не залежить від значення поля IOPL. Однак захист може здійснюватися із допомогою БКВВ.

1.3.3 Механізм трансляції сторінок.

32-разрядные процесори підтримують механізм трансляції сторінок. Даний механізм здійснює перетворення лінійної адреси в фізичну шляхом таблиць сторінок. Вперше трансляція сторінок почала підтримуватися в процесорі 80 386. Наступні ґенерації процесорів додашли в цей механізм нові можливості. Керування сторінковим перетворенням здійснюється із допомогою трьох бітів в регістрах керування (таблиця 1.4). PG — біт 31 регістру CR0. Дозволяє механізм сторінкового перетворення (80 386+); PSE — біт 4 регістру CR4. Дозволяє сторінки розміром 4Мб (чи розміром 2 МБ, коли встановлений прапор PAE) (Pentium+); PAE біт 5 регістру CR4. Дозволяє 36-разрядный фізична адреси. Розширена фізична адреси може бути використана лише із дозволеним сторінковим перетворенням (Pentium Pro+).

Таблиця 1.4. Розміри сторінок й фізичної адреси.

|CR0. PG|CR4. PAE|CR4. |PDE. PS|Розмір |Розмір фізичної | | | |PSE | |сторінки |адреси | |0 |x |x |x |- |Сторінкове | | | | | | |перетворення | | | | | | |відключено | |1 |0 |0 |x |4Кб |32 б | |1 |0 |1 |0 |4Кб |32 б | |1 |0 |1 |1 |4Мб |32 б | |1 |1 |x |0 |4Кб |36 б | |1 |1 |x |1 |2Мб |36 б |.

Інформація, якої використає процесор для перетворення лінійної адреси в фізичний, знаходиться в наступних таблицях: Каталог сторінок; Таблиця сторінок; Таблиця покажчиків на каталог сторінок. Колі використовується 32-разрядный фізична адреси, таблиці забезпечують доступ до сторінок розміром 4 Кб чи 4 МБ. При використанні розширеної 36- разрядного фізичної адреси таблиці забезпечують доступ до сторінок розміром 4 Кб чи 2 МБ. Перетворення лінійної адреси для 4 Кб сторінок. Дане перетворення виконується в всіх 32-разрядных процесорах. На малюнку 1.18. Уявлений механізм трансляції лінійної адреси на сторінки розміром 4Кб. Покажчик на каталог сторінок знаходиться в регістрі CR3. Елементи каталогу сторінок вказують на таблиць сторінок, елементи таблиці сторінок — на сторінки фізичної пам «яті. Цей засіб може бути використаний для адресації до 220 сторінок, що покриває лінійний адресний простір розміром 4 Гб.

Для вибору різноманітних елементів таблиць лінійна адреси ділиться на 3 секції: Елемент каталогу сторінок — біти із 22 по 31 містять індекс для входу в каталог сторінок. Вибраний елемент містить базова фізична адреси таблиці сторінок; Елементи таблиці сторінок — біти із 12 по 21 містять індекс для входу в вибрану таблицю сторінок. Цей елемент містить базова фізична адреси сторінки в фізичній пам «яті; Зміщення — біти із 0 по 11 містять зміщення фізичної адреси всередині сторінки. Перетворення лінійної адреси для 4 МБ сторінок. На малюнку 1.19 показане, як каталог сторінок може бути використаний для відображення лінійної адреси на виборах 4 МБ сторінки. Елементи каталогу сторінок вказують на сторінки фізичної пам «яті. Цей засіб сторінкового перетворення може бути використаний для відображення до 1024 сторінок на лінійний адресний простір розміром 4 Держбезпеки. Даний засіб доступний в процесорах Pentium+.

Сторінки розміром 4 МБ вибираються, коли встановлений прапор PSE в регістрі керування CR4 й коли встановлений прапор P. S в елементі каталогу сторінок. Колі ці прапори встановлені, лінійна адреси ділиться на дві секції: Елемент каталогу сторінок — біти із 22 по 31 містять індекс для входу в каталог сторінок. Вибраний елемент містить базова фізична адреси 4Мб сторінки; Зміщення — біти із 0 по 21 містять зміщення фізичної адреси всередині сторінки. Елементи таблиць сторінкового перетворення. На малюнках 1.20 й 1.21 показань формат елемента каталогу сторінок й таблиці сторінок відповідно, коли використовуються 4Кб сторінки й 32- розрядний фізична адреси. На малюнку 1.22 показань формат елемента каталогу сторінок, коли використовуються 4МБ сторінки й 32-разрядный фізична адреса.

Функції полів в елементах наступні: Базова адреси сторінки, біти із 12 по 31. Для елемента таблиці 4Кб сторінок: містить фізична адреси Першого байта 4Кб сторінки. Б даного поля інтерпретуються як 20 старших біта фізичної адреси. Для елемента каталогу 4Кб сторінок: містить фізична адреси Першого елемента таблиці сторінок. Біти даного поля інтерпретуються як 20 старших бітів фізичної адреси. Для елемента каталогу 4Мб сторінок: містить фізична адреси Першого байта 4Мб сторінки. Використовуються лише б із 22 по 31 цого поля. Ці б інтерпретуються як 11 старших розрядів фізичної адреси сторінки; Біт присутності Р. Показує, знаходиться чи сторінка чи таблиця сторінок в фізичній пам «яті. Колі Р=1, сторінка знаходиться в пам «яті й у разі звертання до ній відбувається перетворення лінійної адреси в фізичний. Колі Р=0, сторінки в пам «яті немає, інша частина елемента проста до операційної системи. Якщо процесор спробує звернутися до сторінки, у якої Р=0, ті відбудеться виключення 14; Біт R/W. Біт читання/запис. І біт U/S. Біт користувач/супервизор. Ці біти застосовуються для захисту по привілей на рівні сторінок; Біт А. Біт звертання. Показує, було б чи звертання до сторінки чи таблиці сторінок. Процесор встановлює цей біт у разі звертання до сторінки. Скид біта здійснюється лише програмним шляхом; Біт D. Біт «брудний». Показує, було б чи звертання до сторінки для запису. Процесор встановлює цей біт при записі в сторінку. Скид біта здійснюється лише програмним шляхом. Даний біт спільно із бітом, А використовується операційною системою для керування пам «яттю; Біт P. S. Розмір сторінки. Визначає Розмір сторінки. Даний б використовується лише в елементах каталогу сторінок. Колі цей біт не встановлений, розмір сторінки 4Кб й елемент каталогу сторінок вказує на таблицю сторінок. Колі цей біт встановлений, розмір сторінки рівний 4Мб при використанні 32- разрядного адреси (й 2Мб при використанні розширеної адреси) й елемент каталогу сторінок вказує на сторінку; Біт G. Глобальна сторінка. Колі даний біт встановлений, це означає, що сторінка є глобальною. Колі сторінка позначена як глобальна й глобальні сторінки розв «язані (біт PGE в регістрі CR4), при перезавантаженні регістру CR3 елемент таблиці сторінок чи елемент каталогу сторінок не оголошується невірогідним в TLB. Цей біт для того, щоб відвернути вилучення часто сторінок, що використаються із TLB. Даний біт підтримується лише в процесорах Pentium Pro+.

Якщо біт PSE в регістрі CR4 встановлений, ті обидва засобу перетворення можуть використовуватися із одного й тієї самої каталогу сторінок. Розширення фізичної адреси. Біт PAE в регістрі CR4 дозволяє розширення фізичної адреси в процесорі Pentium Pro+ із 32 до 36 розрядів. Ця можливість може бути використана лише при включеному сторінковому перетворенні. Колі розширення фізичної адреси розв «язане, процесор підтримує сторінки двох розмірів: 4Кб й 2Мб. як й при 32-разрядном адресі, обидва розміру сторінок можуть використовуватися водночас, т. є. Елемент каталогу сторінок може посилатися на 2Мб сторінку чи каталог сторінок, що містить покажчики на 4Кб сторінки. Для підтримки 36-разрядного фізичної адреси в таблицях для сторінкового перетворення зроблені наступні зміни: Елементи таблиць стали 64-разрядными для розміщення 36-разрядного адреси. Таким Чином, кожний каталог сторінок й кожна таблиця сторінок може містити 512 елементів; У ієрархію сторінкового перетворення додана нова таблиця — таблиця покажчиків на каталог сторінок. Ця таблиця містить чотири 64-разрядных елемента й знаходиться вище каталогу сторінок в ієрархії; Базова 20-разрядный адреси каталогу сторінок в регістрі CR3 замінена на 27- розрядний адресою таблиці покажчиків на каталог сторінок. Це 27 старших розрядів фізичної адреси Першого елемента таблиці каталогу; 32-разрядный лінійна адреси відображається на 36-разрядное простір фізичних адрес.

Перетворення лінійної адреси із розширеною адресацією для 4Кб сторінок. На малюнку 1.23 показань механізм перетворення лінійної адреси із використанням 4Кб сторінок, коли розв «язане розширення фізичної адреси. Цей засіб перетворення може бути використаний для адресації 220 сторінок, що покриває лінійний адресний простір розміром 4Гб. Для вибору різноманітних елементів таблиць лінійна адреси ділиться на виборах 4 секції: Елемент таблиці каталогу сторінок — біти 30 й 31 містять індекс для входу в таблицю каталогу. Вибраний елемент містить базова фізична адреси каталогу сторінок; Елемент каталогу сторінок — біти із 21 по 29 містять індекс для входу в каталог сторінок. Вибраний елемент містить базова фізична адреси таблиці сторінок; Елементи таблиці сторінок — біти із 12 по 20 містять індекс для входу в вибрану таблицю сторінок. Цей елемент містить базова фізична адреси сторінки в фізичній пам «яті; Зміщення — біти із 0 по 11 містять зміщення фізичної адреси всередині сторінки.

Перетворення лінійної адреси із розширеною адресацією для 2Мб сторінок. На малюнку 1.24 показане, як таблиця каталогу сторінок й каталог сторінок можуть бути використані для відображення лінійної адреси на 2Мб сторінки. Цей засіб сторінкового перетворення може бути використаний для відображення до 2048 сторінок на лінійний адресний простір розміром 4Гб. Розмір сторінки 2Мб вибирається, коли встановлений біт PSE в регістрі CR4 й встановлений біт P. S в елементі каталогу сторінок. Колі ці біти встановлені, лінійна адреси ділиться втричі секції: Елемент таблиці каталогу сторінок — біти 30 й 31 містять індекс для входу в таблицю каталогу. Вибраний елемент містить базова фізична адреси каталогу сторінок; Елемент каталогу сторінок — біти із 21 по 29 містять індекс для входу в каталог сторінок. Вибраний елемент містить базова фізична адреси сторінки розміром 2Мб; Зміщення — біти із 0 по 20 містять зміщення фізичної адреси всередині сторінки.

1.3.4 Віртуальні переривання В процесорах Pentium+ в механізм обробки переривань були додані деякі нові можливості. Розглянемо зміни, що стосуються режиму V86. Колі процесор знаходиться в цьому режимі, засіб обробки переривань залежить від стану різноманітних прапорів й полів: VME-прапор (біт 0 в регістрі CR4) — коли він в одиниці, дозволяються розширені можливості по обробці переривань й виключень в режимі V86, а також дозволяється апаратна підтримка прапора VIF; IOPL-прапор (біт 12 й 13 в регістрі EFLAGS) — управляє тім, як будуть оброблятися переривання; БКПП — бітова карта перенаправлення переривань (32 байта в TSS) — містить 256 прапорів, що показують, як програмні переривання (переривання, що генеруються командою INT n) будуть оброблятися в режимі V86. Програмні переривання можуть спрямовуватися на обробку в поточну програму 8086 чи оброблятися в захищеному режимі. Апаратні переривання й виключення завжди спрямовуються в захищений режим. У таблиці 1.5. Показане, як процесор обробляє переривання й виключення в режимі V86 в залежності від стану описаних вище прапорів й полів.

Таблиця 1.5. Обробка переривань й виключень в режимі V86.

|Засіб |VME |IOPL |Б в БКПП|Дії процесора | |1 |0 |3 |x |Програмні переривання (INT n), | | | | | |виключення й переривання, що | | | | | |маскуються спрямовуються в | | | | | |захищений режим (через IDT) | |2 |0 |.

Показати весь текст
Заповнити форму поточною роботою