Доповідь - Організація системи переривань мікропроцесора 8086
Химия

Доповідь — Організація системи переривань мікропроцесора 8086


Завантажити доповідь: Організація системи переривань мікропроцесора 8086

Мікропроцесор 8086 має просту, але досить універсальну систему переривань. Кожному перериванню поставлений у відповідність код типу. Допускається обробка до 256 типів переривань.

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

Можливі джерела переривань:

        Немаскируемое прерывание
-----------------------------------------¬
¦NMI
-----------¬ - - - - - - - - - -¦- - - - - - - ¬
--->¦ ¦ V МП 8086
--->¦ ¦ INT ¦ ------------------------------¬¦
Запросы --->¦ +-------->¦ Схемы прерываний ¦
от --->¦Контроллер¦ ¦ L---T-----T-----T-----T--------¦
уст- --->¦прерываний¦ ¦ ¦ ¦ ¦
ройств --->¦ ¦ ¦ ----+---¬ ¦ ----+---¬ ¦ ¦
--->¦ ¦ ¦Команда¦ ¦ ¦Ошибка ¦ ¦
--->¦ ¦ ¦ ¦ INT ¦ ¦ ¦деления¦ ¦ ¦
L----------- L-------- ¦ L-------- ¦
¦ ----+---¬ ------+-----¬ ¦
¦Команда¦ ¦Одношаговый¦
¦ ¦ INT0 ¦ ¦ режим ¦ ¦
L-------- L------------
L - - - - - - - - - - - - - - - - -

Зовнішні переривання

У мікропроцесорі є два входи переривань — маскування переривання INT і немаскируемого переривання NMI.

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

Якщо встановлено сигнал на лінії INT і встановлено в 1 прапорець дозволу переривання IF, то після завершення виконання поточної команди відбувається переривання і процесор виконує такі дії:

1) видає контролеру переривання підтвердження переривання;

2) зчитує з контролера переривання код типу переривання;

3) заносить у стек вміст регістру прапорів;

4) заносить у стек вміст регістрів IP і CS;

5) викликає та виконує процедуру переривання;

6) витягує зі стека вміст CS та IP;

7) витягує зі стека вміст регістру прапорів;

8) повертається до виконання наступної команди перерваної програми.

Лінія неперервного переривання NMI використовується для сигналізації про катастрофічні події в системі. Немасковані переривання мають фіксований код 2. Немасковане переривання виконується швидше за маскований, так як не вимагає підтвердження і зчитування типу.

Якщо встановлено сигнал на лінії NMI, після завершення виконання поточної команди відбувається переривання і процесор виконує такі действия:

1) заносить у стек вміст регістру прапорів;

2) заносить у стек вміст регістру IP і CS, запам’ятовуючи цим точку повернення з процедури переривання;

3) викликає та виконує процедуру переривання;

4) витягує зі стека вміст CS та IP;

5) витягує зі стека вміст регістру прапорів;

6) повертається до виконання наступної команди.

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

Внутрішні переривання

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

Команда INTO генерує переривання типу 4 після завершення, якщо встановлено прапор переповнення OF.

Процесор самостійно генерує переривання типу 0 відразу після виконання команд розподілу DIV та IDIV, якщо мало місце розподіл на 0.

Якщо встановлено прапор покрокової роботи TF, процесор автоматично генерує переривання типу 1 після кожної команди. Покроковий режим призначений для налагодження програм.

Внутрішні переривання характеризуються такими властивостями:

1) Тип переривання або зумовлений, або міститься у коді команди.

2) Підтвердження переривання не видається.

3) Внутрішні переривання не можна заборонити, крім переривань покрокової роботи.

4) Будь-яке внутрішнє переривання (крім переривання покрокової роботи) має вищий пріоритет, ніж зовнішні переривання. Якщо запит NMI або INT з’являється під час виконання команди, яка сама генерує внутрішнє переривання (наприклад, помилка поділу), воно обробляється першим.

За командами внутрішнього переривання процесор виконує такі действия:

1) заносить у стек вміст регістру прапорів;

2) заносить у стек вміст регістру IP та CS;

3) викликає та виконує процедуру переривання;

4) витягує зі стека вміст CS та IP;

5) витягує зі стека вміст регістру прапорів;

6) повертається до виконання наступної команди.

Пріоритети переривань у порядку їх зменшення:

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

2) програмне переривання, яке ініціюється командою INT;

3) команда переривання при переповненні;

4) немасковане переривання NMI;

5) переривання INT, що маскується;

6) переривання покрокової роботи.

Таблиця покажчиків векторів переривань

Таблиця покажчиків векторів переривань здійснює зв’язок між кодом типу переривання та процедурою, яка обслуговує переривання цього типу. Таблиця займає 1 Кбайт пам’яті з діапазоном адрес 0 — 3FF і може містити до 256 елементів. Кожен елемент i таблиці є повною початковою логічною адресою процедури, яка обслуговує переривання типу i. Слово з меншою адресою містить усунення, а слово з більшою адресою базову адресу сегмента. Оскільки кожен елемент таблиці складається з 4 байт, процесор обчислює адресу потрібного елемента таблиці шляхом множення типу коду на 4.

Процедури переривань

Коли викликається процедура переривання, вміст регістрів прапорів CS і IP включено в стек, а прапори IF і TF скинуті. Процедура може дозволити зовнішні переривання командою STI, допускаючи переривання себе запитом на вході INT. Крім того, вона може бути завжди перервана запитом на вході переривань, що не маскуються, на вході NMI. Внутрішні переривання, що виникають під час виконання процедури, також перериватимуть її. У кожній процедурі необхідно ретельно стежити, щоб у ній не виникло переривання того типу, яке вона обслуговує. Необхідно також задавати обсяг стека, розрахований на максимальну глибину вкладення переривань.

Кожна процедура переривання повинна запам’ятовувати вміст усіх регістрів, які вона використовує, до їх модифікації, а перед завершенням відновлювати вміст цих регістрів.

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

Процедура переривання має закінчуватись командою повернення з переривання IRET. Перед її виконанням передбачається, що стек перебуває у тому стані, у якому він був відразу після виклику процедури. Команда IRET отримує три верхні слова зі стека в регістри IP, CS і прапорів.

Фактичні дії процедури залежить від її призначення.

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

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

Переривання типу 0


Переривання через помилку розподілу виникає у разі, коли результат операції розподілу перевищує максимально допустиме значення, наприклад, при розподілі на 0.

Переривання типу 1


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

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

Переривання типу 3


Переривання типу 3 – це переривання контрольної точки.

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

Команда INT3 має довжину 1 байт, що дозволяє вставляти її в будь-якому місці програми: запам’ятовується команда, що замінюється, і замість неї підставляється команда INT3. Процедура контрольної точки після виконання своїх основних функцій відновлює раніше замінену команду і виробляє декремент слова в стеку, яке зберігало старе значення IP, щоб після завершення процедури стався перехід до цієї команди.

© Реферат плюс



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *