Апаратні та програмні переривання

Переривання (interrupt) - сигнал, що повідомляє процесору про настання якої-небудь події. При цьому виконання поточної послідовності команд припиняється, і управління передається обробнику переривання, який реагує на подію і обслуговує його, після чого повертає управління в перерваний код.

Залежно від джерела виникнення сигналу, переривання діляться на:

  • асинхронні. або зовнішні (апаратні) - події, які виходять від зовнішніх джерел (наприклад, периферійних пристроїв) і можуть статися в будь-який довільний момент: сигнал від таймера, мережевої карти або дискового накопичувача, натискання клавіш клавіатури, рух миші. Факт виникнення в системі такого переривання трактується як запит на переривання (Interrupt request, IRQ);

Апаратні переривання діляться на:

Апаратні та програмні переривання

Апаратні та програмні переривання

Введення-виведення по перериваннях, однак, вимагає ускладнення апаратних засобів - созданіясістеми переривань.

Структура контролера пріоритетних переривань має вигляд

Апаратні та програмні переривання

  • IRn- лінії запиту переривань від периферійних пристроїв;
  • INTR- сигнал запиту переривання від контролера до процесора;
  • INTA- сигнал підтвердження прийому запиту на переривання, запит вектора переривання;
  • NMI- запит на немаскируемое переривання з фіксованим вектором від пристроїв не обслуговуються контролером переривань (наприклад сигнал від блоку живлення про зникнення напруги живлення або поломці);

Під час отримання запиту на переривання IR (N) від периферійного пристрою (ПУ) контролер переривань надсилає запит на переривання (INT) в центральний процесор. Процесор дозволяє обробку переривання, формуючи сигнал підтвердження #INTA, який, вступаючи в контролер переривань, викликає формування на шині даних вектора переривання. Вектор визначають програму обробки. Обробка переривання відбудеться після завершення виконання поточної команди процесором.

Контролер переривань дозволяє управляти перериваннями від пристроїв, дозволяючи або забороняючи деякі з них (шляхом маскування), а так само дозволяє змінювати пріоритети. Режим роботи контролера управляється процесором через шину контролю.

8. (!) Одноуровневая система переривання. Апаратне та програмне забезпечення.

Основним недоліком програмно-керованого введення-виведення є нераціональне використання машинного часу мікропроцесора. Воно, в основному, витрачається на цикли очікування змін у вхідному коді за підтримки портів безумовного введення або на цикли очікування готовності порту за підтримки портів умовного введення-виведення. Число циклів очікування може бути дуже великим через низьку швидкості роботи більшості зовнішніх пристроїв.

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

Функціональна схема включення таких портів в мікропроцесорну систему з навчальним мікропроцесором представлена ​​на ріс.4.17. Ця схема реалізує так звану однорівневу векторну систему переривань. Вона включає в себе порти 1 ... N, що реалізують асинхронний ввід-висновок на зовнішній ділянці обміну, елемент «АБО», пріоритетний шифратор і порт введення вектора переривання.

Нехай у вихідному стані всі запити на обслуговування IRQ1 ... IRQN дорівнюють нулю, тобто відсутні. Нехай далі з'являється запит від порту введення No1 IRQ = 1. Цей запит через елемент «АБО» передається на вхід запиту переривань INT процесора. Процесор, реагуючи на цей запит, виконує наступні дії:

Ріс.4.17.Функціональная схема однорівневої векторної системи переривань

Ріс.4.18.Тіповая блок-схема програми обслуговування переривання

Кожен з портів цієї системи має свою власну програму обслуговування порту, викликану однієї з команд виду RST X. Конкретний варіант команди рестарту називають вектором відповідного переривання. Вектор формується пріоритетним шифратором із запитів IRQ1 ... IRQN і виставляється на шину даних по сигналу. Використання пріоритетного шифратора дозволяє обслуговувати одночасно надійшли запити від різних портів відповідно до заздалегідь визначеної системою пріоритетів.

Програма обслуговування переривання в однорівневої векторної системі зазвичай будується за типовою блок-схемі (рис.4.18).

При практичному використанні переривань слід мати на увазі особливість виконання команди дозволу переривань EI. Вона виконується не в момент отримання її мікропроцесором, а лише після виконання наступної команди. У нашому випадку це означає, що переривання знову будуть дозволені лише після повернення в основну програму.

У однорівневої системи всі запити на переривання практично рівнозначні. Пріоритет позначається лише при одночасності надходження запитів.

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

Слід зазначити, що введення-виведення по перериваннях, в кінцевому підсумку, також забезпечує асинхронну передачу кодів на внутрішньому ділянці обміну. Роль відсутнього сигналу асинхронного протоколу (STB) або (ACK) тут виконує сформований системою вектор переривання.

9. (!) Багаторівнева система переривання. Апаратне та програмне забезпечення.

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

Структура таблиці векторів переривань:

Звернення до елементів таблиці здійснюється по 8-розрядному коду - типу переривання

Апаратні та програмні переривання

Однак кілька контролерів переривань можуть бути вклю-чени послідовно. На сучасних комп'ютерах (починаючи з 286) один (ведучий) контролер переривань підключений непо-безпосередніх до процесора, а другий (підпорядкований) своїм виходом INT підключений до входу IRQ2 головного контролера. Разом виходить 15 входів переривань від IRQ0 до IRQ 15 (IRQ2 не може бути використаний).

При подачі сигналу на переривання від контролера до процесо-ру по лінії INTR-INT, одночасно по лініях даних з контролера переривань в процесор надходить номер вектора переривання, який утворюється шляхом додавання IRQ з Незнач-рим базовим номером, який присвоюється ВIOSом кон-Троллер в процесі завантаження (значення за замовчуванням 08h для провідного контролера і 70h для веденого). Таким чином, наприклад, номер вектора переривання для клавіатури буде 08 + 1 = 9h. для жорсткого диска 70h + 6 = 76h.

Контролер переривань допускає перепрограмування для установки різних режимів формування черги запро-сов, зміни пріоритетів переривань, зміни базових номерів контролерів. Таке перепрограмування здійснювала-вляется через два байтових порту 20h і 21h. За замовчуванням IRQ окремого контролера мають пріоритети відповідно до їх номерами (IRQ0 - найвищий, IRQ7 - найнижчий).

Приклад каскадного включення двох контролерів прямого доступу до пам'яті

Апаратні та програмні переривання