Реферат: Керiвництво программиста
Шина адреси дозволяє адресувати 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#.
Синхронизація процесора здійснюється зовнішнім сигналом, частота якого ділиться навпіл внутрішнім дільником для одержання сигналу внутрішньої синхронизації. На зовнішні виводи процесора цей сигнал не надходить, але його виробляє спеціальна мікросхема 82284 - генератор синхронизації для 80286. Максимальна пропускна спроможність локальної шини процесора - одне слово за кожні два цикла внутрішньої частоти.
Конвейєрна адресація, застосовувана в процесорі, передбачає можливість початку нового циклу, не чекаючи завершення фізичного обміну даними попереднього циклу. Це дозволяє скоротити число тактів чекання, необхідних для погодження з відносно повільною пам'яттю і портами, за рахунок більш раннього початку виконання дешифрації адреси влаштуванням пам'яті або введення-виведення. Конвейєрний режим дозволяє контролерам пам'яті ефективно використати швидкий сторінковий режим динамічної пам'яті і чергування банків.
Процесор 80286 не тримає на шині адреси, відповідно поточному циклу шиши на всьому його протязі. Для єдності з шиною ISA, потребуючей дійсність адреси на весь час циклу, сигнали шини адреси процесора заклацуються на регістрах.
Формування керуючих сигналів системної шини виконує зовнішня микросхема 82288 або її функціональний аналог з чипсета системної плати на підставі сигналів стану і типу циклу.
Керування тимчасовою діаграмою підрозумує затримку і розтяжку командних циклів. Розтяжка при необхідності подовжує командний цикл звертання для відносно повільних зовнішніх приладів введення-виведення і пам'яті. Зовнішні схеми з допомогою затримки сигналу готовності можуть розтягувати цикл на будь-який час. При цьому вводяться такти чекання процесора. Затримка передвизначена для зрушення початку командного імпульса системної шини відносно відповідної йому фази адресації і ідентифікації. Затримка команд здійснюється мікросхемой 82288 по сигналу CMDLY, що перевіряється по кожному спаду CLK. Необхідність затримки і розтяжки команд з'явилася в зв'язку з істотним підвищенням продуктивності (відносно 8086) локальної шини процесора. 80286 здатний генерувати шинні цикли з мінімальним періодом в два такти внутрішньої частоти. Так при частоті процесора 16 МГц шинні цикли підуть з періодом 250 нс. В повній мірі цією продуктивністю може скористуватися лише пам'ять, підключена до локальної шини. Прилади на шині ISA такого темпу не витримують. Крім того, вони звичайно вимагають певного часу відновлення - пасивного стану керуючих сигналів шини між їм командами ,що адресувалися. Керування затримкою і розтяжкой циклів в залежності від типу і адреси звертання покладається на мікросхеми чипсета системної плати, а для завдання числа тактів чекання і часу відновлення для різноманітних операцій в машинах класу AT ввели відповідні опції BIOS SETUP. Шини цикли процесора уявлені на рисунках 1.2 і 1.3.
При проектуванні процесора 80286 була поставлена задача значно підвищити продуктивність. Буфер передвиборки залишився колишнім, але влаштування передвиборки піддалося значній переробці. Коли черга команд порожня, а це трапляється після кожної інструкції передачі керування, нові байти минають через чергу не затримуючись. Крім того, при передвиборці в захищеному режимі здійснюється контроль меж сегменту кодів. Дешифратор вже подає собою окреме влаштування, що вибирає дані з черги команд і “розгортає” кожну інструкцію в 69 біт, що включають всю інформацію, необхідну процесору для виконання команди, за винятком резидентних операндів. Ці мікроинструкції розміщуються в спеціальний буфер (на 3 команди), що також здатний пропускати команди без затримки в випадку передачі керування. В дешифраторі передбачений спеціальний засіб, що дозволить попереджати шиний інтерфейс про те, що в наступному такті знадобиться цикл вибірки даних з пам'яті. В цьому випадку шиний інтерфейс не дасть почати передвиборку, виключаючи завдяки цьому втрати в продуктивності.
Блок формування адреси має два суматора: суматор зміщення і суматор фізичної адреси. Обчислення повної адреси позичає два такту і доповнюється ще одним тактом, якщо зміщення перебує з трьох елементів.
Влаштування сегментації заазнало істотних змін. Сегментні регістри тепер перебують з двох частин: 16-разрядного селектора і програмно недосяжної дескрипторної частини, що містить базову адресу, розмір і права доступу сегменту.
80386.
Синхронизація процесора 80386 в точності відповідає синхронизації 80286.
Інтерфейс процесора 80386 в значному ступені схожий на інтерфейс 80286 хоча і зазнав ряду змін.
Шина даних припускає як 16-ти, так і 32-разрядный режим обміну, в залежності від стану вхідного сигналу BS16#. При читанні в 16-розрядному режимі дані на лініях D [16-31] ігноруються, при записі процесор керує всією шиною даних незалежно від сигналу BS16#/.
Шина адреси дозволяє адресувати 4 Гб фізичної пам'яті в захищеному режимі і 1 Мб з області молодших адрес в реальному режимі. При виконанні інструкцій введення-висновку процесор адресується до області 64 Кб простори введення-виведення (00000000-0000FFFFh). При обміні з сопроцесором в циклах введення-виведення процесор виставляє адреси 800000F8-8000000FFh, що спрощує дешифрацію адреси зовнішніми схемами. Лінії 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.
В процесорі 80386 збільшився буфер передвиборки до 16 байт, що заповнюється тепер подвійними словами. Всі основні регістри поширені до 32 розрядів. Суматори лінійної адреси замінені однім трьохвходовим.
В блок обчислення адреси додане нове влаштування - блок трансляції сторінок. Дане влаштування транслює лінійну адресу в фізичну і перебує з трьох основних блоків: ПЛМ керування, суматор фізичної адреси і кеш-пам'яті сторінок (TLB).
Блок TLB подає собою чотирьохвходову асоціативну пам'ять, що містить 20-розрядні базові адреси 32 сторінок. В якості тега використовуються старші розряди лінійної адреси. Блок перебує з двох модулей пам'яті, основної і додаткової, і логіки обслуговування. Основний модуль пам'яті містить 8 блоків, кожний з яких забезпечує входи в кадр, для 4 сторінок. Вхід в кадр певної сторінки реалізується з допомогою розміщеної в модулі рядка бітів, що містить інформацію про що вибирається сторінку (базова адреса, атрибути) і інформацію, необхідну для її вибору.
Робота TLB відбувається слідуючим чином. Після формування лінійної адреси 3 молодших розряди поля (біти 14-12 лінійної адреси) визначають номер одного з восьмих блоків. Старші 17 розрядів (біти 31-15) порівнюються з 17 бітами тегів, що містяться в чотирьох рядках вибраного блоку. При їхньому збігу означена в стоці базова адреса заміщає 20 старших розрядів лінійної адреси.
Таким чином, кеш-пам'ять сторінок покриває 32*4Кб=128Кб адресного простору, що для більшості додатків забезпечує кеш-попадания з імовірністю 98%.
80486.
Інтерфейс процесора 80486 є тієї архітектурною компонентою, що в найбільшому ступені відрізняє його від попередника, 80386. Зміни, внесені в набір сигналів і протоколи обміну, мали метою реалізувати в вигляді збільшеної продуктивності 80486 ті переваги в швидкодії і функціональної потужності набору внутрішніх блоків, що з'явилися за рахунок використання більш досконалої мікроэлектронної технології.
На зміну конвейєрної адресації попередніх процесорів, починаючи з процесора 80486, введений режим пакетної передачі. Цей режим передвизначений для швидких операцій зі рядками кеша. Рядок кеша процесора 80486 має довжину 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-бітні цикли. Оскільки пакетний режим підтримується звичайно тільки оперативною пам'яттю (разом зі вторинним кешем), розрядність якої намагаються не усікати, на практиці перетворення послідовності адрес в 8 - або 16-битные передачі вряд чи де використовується. Порядок чергування адрес в пакетному циклі характерний для всіх процесорів Intel і сумісних із ними, починаючи з 486-го. Він оптимизован для двох банкової організації пам'яті, підрозумуючей чергування банків, що використаються в сусідніх передачах пакетного циклу.