Тема 8. Організація системи переривань 32-розрядних мікропроцесорів i80х80.
Робота системи переривань у реальному режимі роботи процесора.
Типи переривань.
Каскадні переривання.
Узагальнена процедура обробки переривання.
Особливості системи переривань.
Процедура обробки переривань в захищеному режимі.
Процедура обробки переривань при перемиканні на нову задачу.
У мікропроцесорах сімейства i80x86 система переривань побудована таким чином, щоб, з одного боку, забезпечити можливість створювати ефективні і надійні мультипрограмні операційні системи, що повинні функціонувати в захищеному режимі, а з іншого боку — забезпечити можливість виконувати програми, розроблені для реального режиму. Розглянемо коротко обидва режими.
Робота системи переривань у реальному режимі роботи процесора.
У реальному режимі роботи система переривань використовує поняття вектора переривання.Термін «вектор переривань» використовується тому, що для вказівки адреси використовується не одне значення, а два, тобто ми маємо справу не зі скалярною величиною, а з «векторною».
Отже, кожен вектор переривань складається з 4 байтів чи 2 слів: перші два містять нове значення для регістра IP, а наступні два — нові значення регістра CS. Таблиця векторів перериваньзаймає 1024 байта. У такий спосіб у ній може бути задано 256 векторів переривань. У процесорі і8086 ця таблиця розташовується на адресах 00000H-003FFH. Розташування цієї таблиці в процесорах і80286 і старше визначається значенням регістра IDTR - Interrupt Descriptor Table Register. При включенні чи скиданні процесора і80x86 цей регістр обнуляется. Однак при необхідності можна в регістрі IDTR вказати зсув і, таким чином, перейти на нову таблицю векторів переривань.
Таблиця векторів переривань заповнюється (ініціалізується) при запуску системи, але в принципі може бути змінена чи переміщена.
Кожен вектор переривання має свій номер, названий номером переривання, що вказує його місце в таблиці. Цей номер, помножений на чотири (зсув на два розряди вліво і заповнення бітів, що звільнилися нулями), і просумований із умістом регістра IDTR, дає абсолютну адресу першого байта вектора в оперативній пам'яті.
Подібно виклику процедури, переривання змушує мікропроцесор зберегти в стеці інформацію для наступного повернення, а потім перейти до групи команд, адреса яких визначається вектором переривання. Таким чином, переривання викликає непрямий перехід до своєї підпрограми обробки за рахунок одержання її адреси з вектора переривання.
Типи переривань.
У IBM PC, як і в інших обчислювальних системах, переривання бувають двох видів: внутрішні і зовнішні.
Внутрішні переривання,як ми вже знаємо, виникають у результаті роботи процесора. Вони виникають у ситуаціях, що мають потребу в спеціальному обслуговуванні, чи при виконанні спеціальних інструкцій — INT чи INTO. Це наступні переривання:
· переривання при діленні на нуль, номер переривання — 0;
· переривання по флазі TF (trap flag). В цьому випадку переривання зазвичай використовується спеціальними програмами налагодження типу DEBUG. Номер переривання – 1;
· інструкції INT (interrupt - виконати переривання з відповідним номером) і INTO (interrupt if overflow — переривання по переповненню). Ці переривання називаються програмними.
У якості операнда команди INT указується номер переривання, яке потрібно виконати, наприклад INT 10H. Програмні переривання як засіб переходу на відповідну процедуру були введені для того, щоб виконання цієї процедури здійснювалося в привілейованому режимі, а не в звичайному користувацькому.
Зовнішні перериваннявиникають по сигналі якого-небудь зовнішнього пристрою. Існують два спеціальних зовнішніх сигнали серед вхідних сигналів процесора, за допомогою яких можна перервати виконання поточної програми і тим самим переключити роботу центрального процесора. Це сигнали NMI (nо mask interrupt, немасковане переривання) і INTR (interrupt request, запит на переривання). Відповідно, зовнішні переривання підрозділяються на немасковані і масковані.
Масковані перериваннягенеруються контролером переривань за заявкою визначених периферійних пристроїв.Контролер переривань (його позначення — і8259A) підтримує вісім рівнів (ліній) пріоритету; до кожного рівня «прив'язаний» один периферійний пристрій. Масковані переривання часто називають ще апаратними перериваннями. У ПК, починаючи з IBM PC AT, побудованих на базі мікропроцесора i80286, використовуються два контролери переривань S8259A; вони з'єднуються каскадним образом. Схема послідовного з'єднання цих контролерів зображена на мал. 3.12.
Таким чином, на IBM PC AT передбачено 15 ліній IRQ (interrupt request), частина яких використовується внутрішніми контролерами системної плати, а інші зайняті стандартними адаптерами або не використовуються. Нижче перераховані лінії запиту на переривання, які ми приводимо тому, що кожен фахівець по обчислювальній техніці повинен знати основні стандарти ПК. Отже, лінії IRQ:
0 - системний таймер;
1 - контролер клавіатури;
2 - сигнал повернення по кадрі (EGA/VGA), на AT з'єднаний з IRQ 9;
3 - звичайно СОМ2/СОМ4;
4 - звичайно СОМ 1/СОМЗ;
5- контролер HDD (па перших комп'ютерах IBM PC XT), звичайно вільний на IBM PC AT і використовується звуковою картою;
6 - контролер FDD;
7 - LPT1, багатьма LPT-контролерами не використовується;
8- годинник реального часу з автономним харчуванням (RTC — real time clock);
9 - рівнобіжна IRQ 2;
10 - не використовується, тобто вільно;
11 - вільно;
12 - звичайно контролер миші типу PS/2;
13 - математичний співпроцесор;
14 - звичайно контролер IDEO (перший канал);
15 - звичайно контролер IDE1 (другий канал).
Дата добавления: 2016-07-27; просмотров: 2141;