Підсистема переривань МПС (Лекція), ЛЕКЦІЇ З МПС

1. Внутрішні та зовнішні переривання

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

3. Контролери переривань

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

1. Внутрішні та зовнішні переривання

Розрізняють внутрішні та зовнішні (по відношенню до процесора) події, що вимагають реакції підсистеми переривань. До внутрішніх подій відносяться переповнення розрядної сітки при виконанні арифметичних операцій, спроба поділу на 0, вилучення кореня парного ступеня з негативного числа і т.п., поява неіснуючого коду команди, звернення програми в область пам'яті, для неї не призначену, збій при виконанні передачі або операції в АЛУ та багато іншого. Внутрішні переривання повинні забезпечуватися розвиненою системою апаратного контролю процесора, тому вони не набули широкого поширення в простих 8- і 16-розрядних МП.

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

З погляду реалізації внутрішні та зовнішні переривання функціонують однаковим чином, хоча під час роботи підсистеми із зовнішніми перериваннями виникають додаткові проблеми ідентифікації джерела переривання. Тому нижче буде розглянуто зовнішні переривання.

Аналіз стану довкілля можна здійснювати шляхом програмного сканування - зчитування через певні проміжки часу слів стану всіх можливих джерел переривань, виділення ознак відстежуваних подій і перехід (при необхідності) на перерву підпрограму.

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

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

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

Підсистема переривань має забезпечувати виконання таких функцій:

1) виявлення зміни стану довкілля (запит на переривання);

2) ідентифікація джерела переривання;

3) вирішення конфліктної ситуації у разі одночасного виникнення кількох запитів (пріоритет запитів);

4) визначення можливості переривання поточної програми (пріоритетпрограм);

5) фіксація стану програми, що переривається (поточної);

6) перехід до програми, що відповідає обслуговуваному перериванню;

7) повернення до перерваної програми після закінчення роботи програми, що перериває.

Розглянемо варіанти реалізації МПС перелічених вище функцій.

(1) Фіксація зміни стану довкілля може здійснюватися різними засобами: двійковими датчиками, компараторами, схемами формування станів тощо. Вважатимемо, що це кошти формують зрештою логічні сигнали запиту на переривання z , причому для визначеності вважатимемо, що активний стан цього сигналу передається рівнем логічної одиниці (H - рівень).

Кількість джерел запитів у МПС то, можливо різна, зокрема і досить велика. Дефіцит зовнішніх висновків МП виключає можливість передачі запитів від ВП "власними" лініями інтерфейсу. Зазвичай одну лінію запиту підключається кілька джерел переривань (за функцією АБО), котрий іноді всі джерела системи - на єдиний вхід (як і i8080).

Розрізняють два типи входів запитів на переривання - радіальні та векторні. Процесор аналізує стан входів запитів наприкінці кожного машинного циклу.

лекція

Мал. 1 . Організація векторного переривання

(3) Для виключення конфліктів при одночасному виникненні кількох запитів на векторному вході сигнал у відповідь INTA подається на джерела запитів не паралельно, а послідовно – в порядку зменшення пріоритетів запитів. Джерело, що не виставляє запит, транслює сигнал INTA зі свого входу на вихід, а джерело, що виставило запит, блокує подальше поширення сигналу INTA. Таким чином, тільки одне джерело, що виставило запит, отримає відпроцесора сигнал INTA і видасть його вектор на шину даних.

Більш гнучко вирішується проблема організації пріоритетів запитів при використанні МПС спеціальних контролерів переривань (див. нижче).

Конфлікти на радіальному вході виключаються порядком програмного опитування джерел.

(4) Переривання в загальному випадку може виникати не тільки при вирішенні "фонового" завдання, а й у момент роботи іншої програми, що перериває, причому не будь-яку програму, що перериває, допустимо переривати будь-яким запитом. У фоновій задачі також можуть зустрічатися ділянки, під час роботи яких переривання (всі чи деякі) неприпустимі. Загалом у кожний час роботи процесора має бути виділено підмножина запитів, яким дозволено переривати поточну програму.

У МПС це завдання вирішується на кількох рівнях. У процесорі зазвичай передбачається програмно-доступний прапор роздільної здатності/заборони переривання, значення якого визначає можливість чи неможливість всіх переривань. Для створення гнучкішої системи пріоритетів програм на кожному джерелі переривань може бути передбачений спеціальний програмно-доступний тригер дозволу формування запиту. У такому випадку можливе формування довільного підмножини дозволених джерел переривань.

Розглянемо можливість переривання програми після закінчення різних процесів. Враховуючи, що перервана програма повинна бути запущена після закінчення роботи, що перериває з того місця, де вона була перервана, підсистема переривань МПС повинна забезпечити фіксацію повного стану програми, що переривається, на момент переривання.

При перериванні після поточного машинного такту потрібно запам'ятовувати як стан всіх регістрів процесора (програмно-доступних ісистемних), а й стан первинного управляючого автомата. Реалізація процедури фіксації стану та подальшого відновлення вимагатиме значних витрат додаткового обладнання та/або часу.

3. Контролери переривань

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

Нижче наведена структурна схема простого контролера переривань К589ІК14, що застосовується спільно з МП К580ВМ80 (на схемі показані лише основні блоки та висновки контролера).

підсистема

Контролер включає наступні блоки:

Ø РгЗП - регістр запитів, який надходять запити на переривання z0..z7 від зовнішніх джерел;

Ø ПШ - пріоритетний шифратор, що формує на виході трирозрядний код номера збудженого входу (відповідного розряду РгЗП), причому, якщо на вході ПШ присутні кілька одиниць, то на виході буде сформовано код більшого номера;

Ø Буф. - б уферна схема, що включає вихід ПШ до ліній системної шини даних при подачі на вхід керуючий сигналу підтвердження переривання INTA;

Ø РгТП - регістр поточного пріоритету, програмно-доступний у просторі вводу/виводу і триразрядний код пріоритету поточної програми, що зберігає;

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

RST 0 = CALL 0000h

RST 1 = CALL 0008h

RST 2 = CALL 0010h

RST 7 = CALL 0038h

До недоліків розглянутого вище контролера переривань К589ИК14 належить жорстка система пріоритетів запитів, яка дозволяє забезпечити рівноймовірне обслуговування джерел переривань. Крім того, контролер не дозволяє виділити довільне підмножина дозволених в даний момент переривань з безлічі запитів, що надходять на його входи. Можна лише встановити певний рівень, починаючи з якого запити будуть дозволені.

Програмований контролер переривань К580ВН59 дозволяє організувати більш гнучку та ефективну підсистему переривань МПС.

підсистема

Мал. 3 . Структура контролера переривань К580ВН59

Програмований контролер переривань включає блоки зв'язку з системною шиною, управління і запитів. Блок запитів містить три 8-розрядні регістри - регістр запитів РгЗ , в якому фіксуються запити від джерел переривань, регістр маски РгМ , що визначає підмножина джерел, яким дозволені переривання і регістр станів РгС , в якому фіксуються запити, прийняті на обслуговування.

Склад керуючих ліній контролера включає стандартні лінії підключення до системної шини: D[7:0], A0, WR, RD, CS; лінії, що передають запит на переривання процесору та відповідь МП INT та INTA відповідно.

Лінії запитів z7..z0 з'єднують контролер із джерелами переривань. Контролер може обслуговувати до 8 джерел переривань. При більшій кількості джерел можливе каскадне включення. .ВН59, причому одне з контролерів буде провідним, інші (трохи більше 8) - веденими. Для призначення ролі контролера в системі призначений вхід SP (H - рівень відповідає провідному контролеру). ДляОрганізації взаємодії каскадованих контролерів переривань призначені лінії CAS[2:0].

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