Поиск по базе сайта:
Тема: Системні ресурси. (продовження) Система переривань icon

Тема: Системні ресурси. (продовження) Система переривань




Скачати 399.35 Kb.
НазваТема: Системні ресурси. (продовження) Система переривань
Сторінка1/2
Дата конвертації15.11.2012
Розмір399.35 Kb.
ТипДокументи
  1   2
1. /AKC/БЛАНК_контролю_нау.doc
2. /AKC/КОНТРОЛЬНА_АКС.doc
3. /AKC/ЛЕКЦIф_м1/01_ЛЕКЦIЯ__1.doc
4. /AKC/ЛЕКЦIф_м1/02_ЛЕКЦIЯ__2.doc
5. /AKC/ЛЕКЦIф_м1/03_ЛЕКЦIЯ__3.doc
6. /AKC/ЛЕКЦIф_м1/04_ЛЕКЦIЯ__4.doc
7. /AKC/ЛЕКЦIф_м1/05_ЛЕКЦIЯ__5.doc
8. /AKC/ЛЕКЦIф_м1/06_ЛЕКЦIЯ__6.doc
9. /AKC/ЛЕКЦIф_м1/07_ЛЕКЦIЯ__7.doc
10. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/01_x86.doc
11. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/02_Поколiння_процесорiв_з_1_по_7.doc
12. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/03_Процесори_молодших_поколiнь.doc
13. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/04_Мiкропроцесори_шостого_поколiння.doc
14. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/05_Архiтектура_IA64.doc
15. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/06_Огляд_сучасних_процесорiв.doc
16. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/_00_ЛЕКЦIЯ__8.doc
17. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/_ПРОЦЕСОРИ_мат.doc
18. /AKC/ЛЕКЦIф_м1/ЛЕКЦIЯ__8_процесори/_Типи процесорiв.doc
19. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_10/10_01_ОРГАНIЗАЦ_ПАМ+.doc
20. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_10/10_02_ДИНАМIЧНА_ПАМ+.doc
21. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_10/10_03_ТАЙМIНГИ+.doc
22. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_10/10_а_ЛЕКЦIЯ_ОП.doc
23. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_10/10_б_ЛЕКЦIЯ_Таймiнги.doc
24. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_10/10_в_ЛЕКЦIЯ_Огляд_ОП.doc
25. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_11/11_00_Фiзична структура HDD.doc
26. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_11/11_01_НАКОПИЧУВАЧI_+.doc
27. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_11/11_02_ЛЕКЦIЯ_RAID_.doc
28. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_11/11_02_ПРИСТР_ЗБЕРЕЖ_ДАНИХ_1+.doc
29. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_11/11_03_IDE.doc
30. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_11/11_04_SCSI_.doc
31. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_12/12_01_ШИНИ_розширення.doc
32. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_12/12_01а_PCI.doc
33. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_12/12_01б_PCI_express.doc
34. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_00_Iнтерфейси.doc
35. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_01_СОМ.doc
36. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_02_LPT.doc
37. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_03+06_Iнтерфейси.doc
38. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_04_USB+FireWire.doc
39. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_05_Fibre Channel.doc
40. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_07_Bluetooth.doc
41. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_13/13_08_IrDa.doc
42. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_14/14_00_Вiдесистема.doc
43. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_14/14_00_вiдеоадаптер.doc
44. /AKC/ЛЕКЦIф_м2/ЛЕКЦIЯ_14/14_01_Аудио_ГУК_Р12.doc
45. /AKC/ПИТАННЯ+модуль2+акс.doc
46. /AKC/ПИТАННЯ_МОДУЛЬ_ь1+.doc
47. /AKC/тесты с ответами.doc
Національний авіаційний унуверситет
Завдання на контрольну роботу завданям курсової роботи з дисципліни «Архітектура комп’ютерних систем»
Тема 1 Класичні основи побудови еом. Покоління комп’ютерів
Тема 2 Основні архітектури кс
Тема: Системні ресурси Системними ресурсами
Тема: Системні ресурси. (продовження) Система переривань
Тема: Системні ресурси (продовження) Прямий доступ до пам'яті dma
1. Поняття системної плати
Тема організація введення-виведення І bios
X86 Intel 80x86
Архітектура і мікроархітектура процесорів. Покоління процесорів
Мікропроцесори фірми Intel молодших поколінь
Мікропроцесори шостого покоління
Архітектура ia-64
Arhitektura komp system
Рис 1 Верхній рівень структурної організації комп‘ютера
Зміст Введення
Тип процессора Микро-архитектура
Підсистеми пам'яті
Динамічне озп. Конструктивні особливості
Таймінги пам'яті поняття «таймінгів»
Тема 12. Класифікація запам’ятовуючих пристроїв. Типи оперативної пам’яті план лекції Поняття «пам’ять еом»
Тема 13. Таймінги
Arhitektura komp system
Тема 14. Фізична структура жорсткого диску
Жорсткі диски. Введення 2 Фізичний пристрій жорсткого диска 2
Raid-масиви початкового рівня Що таке raid?
Устройства хранения данных
Интерфейс ide ata/atapi и sата
Arhitektura komp system
8. pci/pci-x
Шини pci/pci-x
Шина pci express Шина pci express
Usb fireWire ps/2 ata (ide)/ атарі
Інтерфейс rs-232C — com-порт
Паралельний інтерфейс — lpt-порт
Універсальна послідовна шина
Usb (Universal Serial Bus універсальна послідовна шина) є промисловим стандартом розширення архітектури рс, орієнтованим на інтеграцію з телефонією І пристроями побутової електроніки. Версія 1
Fibre Channel Fibre Channel
Arhitektura komp system
Arhitektura komp system
Arhitektura komp system
Тема 11. Відеоадаптер
Img src= 44 html 2f3a33e
Питання до модуля №2
2) Основні компоненти машини фон Неймана 3) Які покоління комп’ютерів характеризуються децентралізацією управління процедурами вводу-виводу (системи переривання програм)
Які принципи програмно-керованих еом не використовувалися Нейманом

Тема: Системні ресурси. (продовження)

Система переривань

Розглядаються основні питання, пов'язані з організацією роботи ЕОМ при обробці переривань, а також особливості системи переривань в персональної ЕОМ.

Організація обробки переривань в ЕОМ

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

Механізм переривання забезпечується відповідними апаратно-програмними засобами комп'ютера.

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



Рис. 1 Виконання переривання в комп'ютері: tр - час реакції процесора на запит переривання; tс - час збереження стану переривається програми і виклику обробника переривання; tв - час відновлення перерваної програми.

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

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

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

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

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

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

Глибина переривання - максимальна кількість програм, які можуть переривати одна одну. Глибина переривання зазвичай збігається з кількістю рівнів пріоритетів, що розпізнаються системою переривань. Робота системи переривань при різній глибині переривань (n) Представлена на рис. 2. Тут передбачається, що зі збільшенням номера запиту переривання збільшується його пріоритет.



Рис. 2. Робота системи переривань при різній глибині переривань

Без урахування часу реакції, а також часу запам'ятовування і часу відновлення:

t11+ t12= t1,

t21+ t22= t2.

Переривання діляться на апаратні і програмні.

Апаратні переривання використовуються для організації взаємодії з зовнішніми пристроями. Запити апаратних переривань надходять на спеціальні входи мікропроцесора. Вони бувають:

  • масковані, які можуть бути замасковані програмними засобами комп'ютера;

  • немасковані, запит від яких таким чином замаскований бути не може. (див. далі)

Програмні переривання викликаються наступними ситуаціями:

  • особливий випадок, що виник при виконанні команди і перешкоджає нормальному продовження програми (переповнення, порушення захисту пам'яті, відсутність потрібної сторінки в оперативній пам'яті і т.п.);

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

Кожному запиту переривання в комп'ютері присвоюється свій номер (тип переривання), що використовується для визначення адреси обробника переривання.

При надходженні запиту переривання комп'ютер виконує наступну послідовність дій:

  1. визначення найбільш пріоритетного незамаскованого запиту на переривання (якщо одночасно надійшло кілька запитів);

  2. визначення типу обраного запиту;

  3. збереження поточного стану лічильника команд і регістра прапорів;

  4. визначення адреси обробника переривання за типом переривання і передача управління першій команді цього обробника;

  5. виконання програми - обробника переривання;

  6. відновлення збережених значень лічильника команд і регістра прапорів перерваної програми;

  7. продовження виконання перерваної програми.

Етапи 1-4 виконуються апаратними засобами ЕОМ автоматично при появі запиту переривання. Етап 6 також виконується апаратно по команді повернення з обробника переривання.

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

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


Ланцюгова однотактна система визначення пріоритету запиту переривання

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

Дана схема використовується для аналізу запитів апаратних переривань. Пріоритет запитів переривань (ЗПi) Зменшується зі зменшенням номера запиту. У той момент, коли комп'ютер має визначити наявність і пріоритет зовнішнього апаратного переривання (зазвичай після закінчення виконання кожної команди), процесор видає сигнал опитування. Якщо на вході ЗП3 присутній сигнал високого рівня (є запит), то на елементі 11 формується загальний сигнал наявності запиту переривання і подальше проходження сигналу опитування блокується. Якщо ЗП3= 0, То аналізується сигнал ЗП2 і так далі. На шифраторі (елемент 12) формується номер надійшов запиту переривання.

Цей номер передається в процесор лише за наявності загального сигналу запиту переривання.

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



Рис. 3.Схема визначення номера найбільш пріоритетного запиту переривання

Обробка переривань в персональної ЕОМ

Мікропроцесори типу х86 мають два входи запитів зовнішніх апаратних переривань:

  • NMI -- немасковане переривання, використовується для запитів переривань при порушенні живлення;

  • INT -- масковане переривання, запит від якого можна програмним чином замаскувати шляхом скидання прапора IF в регістрі прапорів.



Рис. 4.Структура контролера пріоритетних переривань

Єдиний вхід запиту маскованих переривань мікропроцесора не дозволяє підключити до нього безпосередньо сигнали запитів від великої кількості різних зовнішніх пристроїв, які входять до складу сучасного комп'ютера: таймер, клавіатури, "миші", принтера, мережевої карти і т.д. Для їх підключення до одного входу INT мікропроцесора використовується контролер пріоритетних переривань (рис. 4). Його функції:

  1. сприйняття і фіксація запитів переривань від зовнішніх пристроїв;

  2. визначення незамаскованих запитів серед запитів, які надійшли;

  3. проведення арбітражу: виділення найбільш пріоритетного запиту з незамаскованих запитів відповідно до встановленого механізмом призначення пріоритетів;

  4. порівняння пріоритету виділеного запиту з пріоритетом запиту, який в даний момент може оброблятися в мікропроцесорі, формування сигналу запиту на вхід INT мікропроцесора у випадку, якщо пріоритет нового запиту вище;

  5. передача в мікропроцесор по шині даних типу переривання, вибраного в процесі арбітражу, для запуску відповідної програми - обробника переривання; ця дія виконується по сигналу дозволу переривання INTA від мікропроцесора, який видається у випадку, якщо переривання в регістрі прапорів мікропроцесора не замасковані (IF = 1).

Перехід до відповідного обробникові переривання здійснюється (у реальному режимі роботи мікропроцесора) за допомогою таблиці векторів переривань. Ця таблиця (рис. 5) розташовується в самих молодших адресах оперативної пам'яті, має об'єм 1 Кбайт і містить значення сегментного регістра команд (CS) і покажчика команд (IP) для 256 обробників переривань.



Рис. 5.Структура таблиці векторів переривань

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

Таблиця 14.1.

Тип переривання

Джерело переривання

0

Поділ на 0

1

Покроковий режим виконання програми

2

Запит по входу NMI

· · ·

8

Запит по входу IRQ0 (системний таймер)

9

Запит по входу IRQ1 (контролер клавіатури)

· · ·

11

Відсутність сегмента в оперативній пам'яті

· · ·

255

Користувача переривання

Різні джерела задають тип переривання по-різному:

  • програмні переривання вводять його зсередини процесора або містять його в номері команди INT n;

  • апаратні масковані переривання вводять його від контролера пріоритетних переривань по шині даних;

Немаскованим апаратним переривання призначено тип 2.

В таблиці 2 представлено стандартний розподіл номерів апаратних переривань і відповідних їм номерів в таблиці векторів переривань (INT).

У нових комп'ютерах передбачено 16 запитів на переривання з номерами від 0 до 15, як показано на таблиці 2. Зазвичай кожного компонента комп'ютера повинен бути поставлений у відповідність унікальний запит на переривання. Конфлікти запитів на переривання можуть призвести до збоїв в роботі і навіть до відмови комп'ютера. У зв'язку з великою кількістю компонентів, які можна встановити в комп'ютерній системі, складно призначити унікальний запит на переривання для кожного компонента. Сьогодні більшість номерів IRQ призначаються автоматично завдяки використанню операційних систем з підтримкою PnP і реалізації слотів IRQ, портів USB і портів FireWire.

Як видно з таблиці, більшість входів IRQ зайняті системними ресурсами комп'ютера. Вільні (зарезервовані) тільки чотири канали: 10, 11, 12, 15, причому вони знаходяться на 16-розрядній частині роз'єму магістралі ISA. Правда, іноді в комп'ютерах застосовується тільки один паралельний порт або (значно рідше) тільки один послідовний порт, і тоді вільними виявляються ще IRQ3 і IRQ5. Сигнали IRQ0 ... IRQ2, IRQ8 і IRQ13 задіяні на системній платі і недоступні для плат розширення.

Табл. 1. Розподіл каналів апаратних переривань.

Номер переривання IRQ

INT

Призначення

0

08

Програмований таймер

1

09

Контролер клавіатури

2

0A

Каскадування другого контролера

8

70

Годинник реального часу (тільки АТ)

9

71

Програмно переадресовано на IRQ2

10

72

Резерв

11

73

Резерв

12

74

Резерв

13

75

Математичний співпроцесор

14

76

Контролер жорсткого диска

15

77

Резерв

3

0B

Послідовний порт СОМ2

4

0C

Послідовний порт СОМ1

5

0D

Паралельний порт LPT2

6

0E

Контролер гнучкого диска

7

0F

Паралельний порт LPT1




У комп\'ютері використовуються два 8-розрядних контролера переривань. Сигнали IRQ0 ... IRQ7 відносяться до першого з них, а IRQ8 ... IRQ15 - до другого. Для каскадування другого контролера переривань задіяний вхід IRQ2 (рис. 6). У зв\'язку з цим запити переривання мають наступні пріоритети обслуговування в порядку зростання: IRQ7, IRQ6, IRQ5, IRQ4, IRQ3, IRQ15, IRQ14, IRQ12, IRQ11, IRQ10, IRQ9. Така схема включення склалася історично, так як в комп\'ютері IBM PC XT використовувався тільки один 8-канальний контролер переривань, а при переході на IBM PC AT до нього був доданий другий контролер для подвоєння кількості каналів запитів переривань. У сучасних комп\'ютерах обидва контролера переривань разом з іншими контролерами можуть входити до складу однієї і тієї ж мікросхеми, але сумісність розподілу переривань, як і раніше забезпечується.



Рис. 6. Включення двох контролерів переривань.

Апаратні переривання

Апаратні переривання забезпечують реакцію процесора на події, які відбуваються асинхронно по відношенню до виконуваного програмного коду. За виникненні такої події адаптер (контролер) пристрою формує запит переривання, який надходить на вхід контролера переривань. Контролер переривань формує загальний запит переривання для процесора, а коли процесор підтверджує отримання цього запиту, контролер повідомляє процесору вектор переривання, по якому вибирається програмна процедура обробки переривання. Процедура має виконати дії з обслуговування цього пристрою, включаючи скидання його запиту, і відправити команду закінчення в контролер переривання, що дає можливість відреагувати на наступні події. Логіка роботи системи переривань і програмна модель контролера переривань, сумісного з мікросхемою i8259A, є важливою частиною стандартизації архітектури РС-сумісних комп\'ютерів.

Немасковані переривання

Немасковані переривання (Non--Maskable Interrupt, NMI) в PC використовуються для сигналізації про фатальні апаратні помилки. На немасковані переривання процесор реагує завжди (якщо завершено обслуговування попереднього немаскованого переривання); цьому перериванню відповідає фіксований вектор 2. Сигнал на лінію NMI (вхід процесора) приходить від схем контроля пам\'яті (парності або ЕСС), від ліній контролю шини ISA (IOCHK) і шини PCI (SERR#). Сигнал NMI блокується до входу процесора установкою в 1 біта 7 порту 070h окремі джерела дозволяються та ідентифікуються бітами порту 061 h:

  • біт 2 R/W (ERP) - дозвіл контролю ОЗУ і сигналу SERR# Шипи РСI;

  • біт 3 R/W (EIC) - дозвіл контролю шини ISA;

  • біт 6 R (IOCHK) - помилка контролю на шині ISA (сигнал IOCHK#);

  • біт 7 R (РCK) - помилка парності ОЗП або сигнал SERR# На шині PCI.

Джерелами переривання SMI є схеми чіпсета, що беруть участь в управленні енергоспоживанням, а також контролер USB при емуляції традиційних клавіатури і миші. Це переривання має найвищий пріоритет і обслуговаується трохи інакше, ніж «класичні» переривання. Тут процесор не виконує виклик процедури, описаної в таблиці переривань, а переходить в режим SMM, що супроводжується установкою сигналу SMIACT#, за яким замість звичайної пам\'яті процесору стає доступною пам\'ять SMRAM. Вихід з режиму SMM відбувається при виконанні інструкції RSM, які закінчує процедуру обробки SMI. Після обробки SMI можливий рестарт (повторне виконання) інструкції зупину (HALT) та інструкцій введення-виведення.


Масковані переривання

Масковані переривання використовуються для сигналізації про події в пристроях. Реакція процесора па масковані переривання може бути затримана скиданням його внутрішнього прапора IF (інструкція CLI забороняє переривання, STI - дозволяє). За виникненні події, що вимагає реакції адаптера (контролера) пристрою формує запит переривання, який надходить на вхід контролера переривань. Завдання контролера переривань - довести до процесора запит переривання і повідомити вектор, за яким вибирається програмна процедура обробки переривань. У IBM PC-сумісних комп’ютерах застосовується два основні типи контролерів переривань:

  • Периферійний контролер переривань (Peripheral Interrupt Controller, PIC) програмно сумісний з традиційним контролером 8259А, який використовувався ще в перших моделях IBM PC, з часів IBM PC/AT застосовується зв\'язка з пари каскадно з\'єднаних контролерів РIС, що дозволяє обслуговувати до 15 лінії запитів переривань.

  • Вдосконалений периферійний контролер переривань (Advanced Peripheral Interrupt Controller, АРIС) введений у комп\'ютери для підтримки мультипроцесорних систем на основі 4-5-го поколінь (486 і Pentium) і використовується понині для більш пізніх моделей процесорів. Окрім підтримки мультипроцесорних конфігурацій, сучасний контролер APIC дозволяє збільшувати кількість доступних ліній переривань й обробляти запити переривань від пристроїв РСI, що надсилаються через механізм повідомлень (MSI), комп\'ютер, оснащений контролером АРIС, обов\'язково має можливість функціонувати і в режимі, сумісному зі стандартною зв\'язкою пари РIС. Цей режим включається з апаратного скидання (і включення живлення), що дозволяє використовувати старі ОС і додатки MS--DOS, які «не знають» APIC і мультипроцесування.

Традиційна схема формування запитів переривань з використанням пари контролерів PIC зображена на рис.4.



Рис. 4. Комутації запитів переривань

На входи контролерів переривань надходять запити від стандартних пристроїв (клавіатура, системний таймер, CMOS-таймер, співпроцесор), периферійних контролерів системної плати і від карт розширення. Традиційно всі лінії запитів, не зайняті перерахованими пристроями, присутні на всіх слотах шини ISA/EISA. Ці лінії позначаються як IRQх і мають загальноприйняте призначення (див. далі). Частина цих ліній віддається і розпорядження шині PCI.

Традиційні (не PnP) пристрої ISA використовують запит по позитивному перепаду сигналу IRQx, що робить неможливим їх спільне (сумісне) використання кількома пристроями. Пристрої ISA, що підтримують механізм PnP, дозволяють налаштовуватися на переривання по низькому рівню сигналу; пристрої PCI працюють тільки за низьким рівнем. «Ділення» ліній між шинами, а також керування чутливістю (до перепаду або рівню) окремих ліній забезпечуються параметри CMOS Setup, а також механізм PnP. У параметрах CMOS Setup назва «ISA» або «Legacy» має на увазі використання ліній IRQx традиційним і адаптерами шини ISA (статичний розподіл), а названя «РСI/PnP» - адаптерами шини PCI або адаптерами PnP для шини ISA (динамічний розподіл).

Для запитів переривання з шини РСI задіють 4 лінії запитів переривання, які позначають як INTR А, В, С, D. Ці лінії працюють за низького рівня, що дає можливість їх спільного використання. Лінії циклічно зсуваються в слотах і незалежно комутуються на доступні лінії IRQx за допомогою конфігураційних регістрів чіпсету.

У табл. 2 запити розміщені в порядку зменшення пріоритету. Номери векторів, відповідних лініях запитів контролерів, система пріоритетів і деякі інші параметри задаються програмно при ініціалізації контролерів PIC або APIC. Ці основні налаштування залишаються традиційними для сумісності з програмним забезпеченням, але розрізняються для ОС реального та захищеного режимів. Так, наприклад, в ОС Windows базові вектори для ведучого і веденого контролерів - 50h і 58h відповідно.

Таблиця 4.2, апаратні переривання (у порядку зменшення пріоритету)



1 Запити переривань 0, 1, 3 і 13 на шини розширень не виводиться.

2 Вказані номери векторів при роботі в реальному режимі процесора.

3 Вказані номери векторів при роботі в ОС.

Кожному пристрою, для підтримки роботи якого потрібні переривання, повинен бути призначений свій номер переривання. Призначення номерів переривань виконуються з двох сторін, по-перше, адаптер, який потребує переривання, повинен бути налаштований на використання конкретної лінії шини (джамперами або програмно); пo-друге, програмне забезпечення, що підтримує даний адаптер, повинно бути поінформоване про номер вектора, який застосовується. У процесі призначення переривання може брати участь система PnP для шин ISA і PCI; для розподілу ліній запитів між шинами служать спеціальні параметри CMOS Setup. Сучасні ОС мають можлиність змінити призначення запитів щодо розподілу, зробленого через CMOS Setup.

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

  1. Пристрій за подією переривання збуджує призначену йому лінію запиту переривання.

  2. Контролер приймає сигнали запитів від джерел переривань (сигнали IRQх) і за наявності незамаскованого запиту подає сигнал загального запиту переривання (сигнал INTR) процесору х86.

  3. Процесор, реагуючи на запит (коли переривання прапором IF дозволені), зберігає в стеку вміст регістру прапорів і адреса повернення, після чого формує шинний цикл INTA (Interrupt Acknowledge - підтвердження поривання), який доводиться до контролера переривань.

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

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

Подальші кроки описують випадок апаратного переривання.

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

  2. Процедура обслуговує пристрій-джерело переривання – виконує дії, які пов\'язані з подією, про яку і сигналізував пристрій. Це обслуговування повинно забезпечити і зняття сигналу запиту переривання від даного пристрою. У разі поділюваних переривань джерел може бути декілька, і всі вони потребують обслуговування. Якщо обробка переривання займає значний час, протягом якого потрібна реакція системи на більш пріоритетні запити, то після критичної секції і обробник включають інструкцію STI, яка встановлює прапор дозволу переривань (IF) в процесорі. З цього моменту можливі вкладені переривання, які переривають роботу даного обробника при надходженні іншого, більш пріоритетного переривання.

  3. Процедура обробки переривання посилає контролеру команду ЕОI (End Of Interrupt - завершення обробки переривання), за якою контролер дозволяє подальший прийом сигналу з обслугованого виходу і менше пріоритетних. Це має бути зроблено після зняття сигналу переривання від пристроїв, які обслуговуються інакше контролер після EOI пошле повторний запит. Оброблювач переривання, для якого надійшов запит від веденого контролера, повинен надіслати EOI як веденому так і ведучому контролеру.

  4. Завершується обробка переривання інструкцією IRET, за якою процесор повертається до виконання перерваного потоку інструкцій, попередньо витягаючи з стека вміст регістру прапорів (з встановленим IF), і апаратні переривання знову виявляються дозволеними.

Ця послідовність описана стосовно до звичайного контролеру переривань (PIC). В системах з APIC змінюється спосіб доставки вектора переривання від контролера до процесора, а в переривання MSI змінюється спосіб доставки сигналу від пристрою до контролера APIC.

Традиційний контролер переривань - PIC

Контролер переривань (PIC) 8259A є периферійним пристроєм, який пов\'язаний з процесором через ту чи іншу шину розширення введення-виведення. По цій шині процесор може звертатися до регістрів контролера, програмуючи його режими і керуючи ним, а також отримувати від контролера 8-бітний вектор переривання, для чого в інтерфейсі системної шини процесора і шини розширення є спеціальна команда підтвердження переривання (INTA). Контролер 8259А має 8 входів запитів від джерел і один вихід загального запиту. Кожному з входів відповідає свій вектор; програмуванням регістрів контролера задається номер вектора для входу 0, іншим входам відповідають наступні номери векторів. Кожен вхід може бути програмно замаскований - тоді він не викликає сигнал загального запиту. Контролер займає дві адреси в просторі введення-виведення, програмне звернення дозволяє управляти режимами роботи контролера, а також пріоритетами і масками запитів. Крім того, контролер дозволяє працювати в режимі опитування (poll mode), або полінгу (polling), забезпечуючи ідентифікацію джерела переривання (з урахуванням пріоритетів) без вироблення спільного запиту.

З кожним входом запиту в контролері пов\'язано по одному біту в регістрах IRR, IMR і ISR; біт 0 кожного з цих регістрів відноситься до входу 0, біт 1 - до входу 1, біт 7 - до входу 7:

IRR (Interrupt Request Register) - регістр запитів переривань. У цьому регістрі біт встановлюється при виявленні сигналу переривання на відповідному вході, незалежно від маски.

  • IMR (Interrupt Mask Register) - регістр масок переривань. Одиничне значення біта означає замаскованість даного входу - за запитом із замаскованого входу спільний запит переривання не генерується.

  • ISR (Interrupt Service Register) -- регістр обслуговує переривання.

Контролер переривань дозволяє програмувати свої входи на чутливість до рівня або перепаду сигналу.

  • Чутливість до рівня (level sensitive) означає, що контролер переривань виробляє запит переривання процесора за фактом виявлення певного рівня на вході IRQx. Якщо до моменту завершення оброблення цього запиту (після запису команди ЕОI в регістр контролера переривань) контролер знову виявляє активний рівень на тому ж вході IRQx, то він знову формує запит на переривання процесора.

  • Чутливість до перепаду (edge sensitive) означає, що контролер переривань виробляє запит переривання процесора тільки за фактом виявлення перепаду (на ISA - позитивного) на вході IRQx. Повторно запит з цього входу можливий тільки за наступним таким же перепадом, тобто сигнал попередньо повинен повернутися в початковий стан.

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

Один контролер PIC 8259A дозволяє обслуговувати 8 запитів переривань: в PC/AT застосовується каскадне з\'єднання двох контролерів, один з яких є ведучим, інший - веденим. Провідний контролер 8259A# 1 обслуговує запити 0. 1, 3-7; його вихід підключається до входу запиту переривань процесора. До його входу 2 підключений ведений контролер 8259A#2, який обслуговує запити 8-15. При цьому підтримується вкладеність пріоритетів - запити 8-15 зі своїм рядком спадаючих пріоритетів, вклинюються між запитами 1 і 3 провідного контролера, пріоритети запитів якого також зменшуються з ростом номера. У XT каскадування не застосовувалося, і один контролер 8259А обслуговував усі 8 ліній запитів.

У IBM PC/XT/AT використовується спеціальний режим вкладених переривань з фіксованим пріоритетом і автоматичним неспецифічним завершенням. Після ініціалізації (процедурою POST і при завантаженні ОС) всі входи контролерів, які не використовуються є замасковані (на запити переривань не реагують), а їх вектори переривань вказують на «заглушку» - процедуру з єдиною інструкцією IRET. Для підключення обробника переривання від пристрою насамперед слід завантажити обробник в пам\'ять і встановити покажчик на нього в таблиці переривань. Далі слід демаскувати відповідний йому вхід в контролері переривань. Якщо обробник переривання видаляється з пам\'яті, попередньо повинен бути замаскований відповідний йому вхід контролера. Всі зміни в таблиці переривань повинні виконуватися при замаскованих переривання, щоб уникнути спроби використання вектора в процесі його модифікації (це приведе до «вильоту» програми - зверненню за некоректною адресою).

У сучасних системних платах функції контролерів переривань покладаються на чіпсет, який може мати і більш гнучкі засоби управління, ніж пара контролерів 8259А. Процедура ініціалізації контролерів може і відрізнятися від традиційної, але нею займається тест POST, який «знає» особливості системної плати. Однак в операційному режимі завжди зберігається програмна сумісність з 8259А. Кожна процедура обробки апаратного переривання повинна завершуватися командою EOI (End Of Interruption), яка посилається контролеру:

  • для 1-го контролера - посилка байти 20h за адресою 020h;

  • для 2-го контролера - посилка байти 20h за адресою 0A0h; програмний виклик переривання 0Ah - завершення для провідного контролера - для деяких старих версій BIOS було необхідне явне скидання маски запиту в регістрі 2-го контролера.

Некоректно завершена процедура не дозволить повторно використовувати даний або інші запити переривань.

Покращений контролер переривань - APIC

Контролер APIC в першу чергу призначений для симетричних мультипроцесорних систем, в яких всі процесори розділяють загальні пристрої введення-виведення і загальні контролери переривання. Однак APIC використовується і в однопроцесорних системних платах. Система з APIC складається з локальних контролерів, встановлених в процесорах, і контролерів переривання від введення-виведення (одного або декількох). Усі контролери APIC з\'єднані між собою локальною шиною, за якою вони обмінюються один з одним повідомленнями. Завдання кожного локального контролера (local APIC) -- трансляція повідомлень, прийнятих по локальній шині в сигнали, що викликають всі апаратні переривання свого процесора - масковані (INTR), немасковані (NMI) і системного управління (SMI). Крім того, локальні контролери APIC дозволяють кожному процесору генерувати переривання для інших процесорів. Локальний контролер має внутрішній інтервальний таймер, що дозволяє виробляти переривання через програмований інтервал часу. Контролер переривань від введення-виведення (I/O APIC) перетворюють запити апаратних переривань від пристроїв в повідомлення протоколу локальної шини APIC. У мультипроцесорному режимі він відповідає за розподіл переривань по процесорах, для чого може бути потрібний статичний або динамічний розподіл. У випадку статичного розподілу для кожного номера переривання вказується номер процесора, що його обслуговує. У випадку динамічного розподілу кожне переривання направляється найменш пріоритетному в даний момент процесору. Цей же контролер відповідає за поширення сигналів про системні події (NMI, INIT, SMI) і міжпроцесорні переривання.

Контролер I/O APIC є частиною чіпсета системної плати. Доступні три режими обробки переривань:

  • режим PIC (PIC mode) - емуляція пари PIC 8259A з традиційною передачею сигналів переривання одному завантажувальному процесору (Bootstrap Processor, BSP) по лініях INTR і NMI;

  • режим віртуальних проводів (virtual wire mode) - те саме, але з подачею сигналів переривання по локальній шині APIC, при цьому контролер I/O APIC може працювати спільно з PIC 8259A, забезпечуючи додаткові можливості (зокрема, додаткові входи запитів переривань);

  • симетричний режим вводу-виводу (symmetric I/O mode) - повідомлення переривання від пристроїв генерує APIC; переривання можуть доставлятися будь-якому процесору: кожен вхід запиту індивідуально програмується за допомогою таблиці перенаправлення переривань вводу-виводу (I/O redirection table).

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

Для симетричних систем допустимі вектори в діапазоні 10h - FEh. Рівень пріоритету переривання визначається номерами його вектора, поділеним на 16. Самий пріоритетний рівень - нульовий.

Контролер I/O APIC дозволяє виробляти значну кількість запитів переривань; кожному запиту відповідає свій елемент у таблиці перенаправлення, що знаходиться в APIC. Кожен елемент визначає спосіб реакції на свій запит, вектор переривання і процесор (процесори) призначення, який повинен його обробити. З запитами пов\'язані індивідуальні входи INTINn, певний рівень або перепад сигналу на цих входах викликають відповідні запити. Чутливість і вектор (а отже, і пріоритет) для кожного запиту програмуються індивідуально. Більш вдосконалені моделі I/O APIC дозволяють викликати переривання записом номера входу в регістр контролера, що, наприклад, використовується для підтримки переривань MSI на шині РСI. При цьому можлива і економія сигнальних входів: APIC може мати входи INTINn не для всіх номерів запитів, які створюються записом у цей регістр. Однак число запитів завжди обмежується розміром таблиці перенаправлення.

Регістри контролерів APIC відображаються на простір пам\'яті. Всі локальні контролери APIC використовують один і той же діапазон адрес (по замовченню базова адреса -- FEEE 0000h) - до їх регістрів звертаються тільки програми, що виконуються на їх же процесорах, і ці звернення не виводяться на системну шину. Контролери I/O APIC доступні всім процесорам, за замовчуванням базова адресу першого I/O APIC -- FEC0 0000h, базові адреси інших контролерів (якщо такі є) призначаються послідовно з кроком 1000h.

Виділення для повідомлень APIC окремої локальної шини дозволяє звільнити системну шину процесора від трафіку, пов\'язаного з обслуговуванням переривань (подачі підтверджень переривань для отримання вектора). У сучасних процесорах використовується локальна шина, що складається із трьох сигнальних ліній: PICD[1:0] – двохнаправлена шина даних і PICCLK - сигнал синхронізації (тактова частота). Протокол шини забезпечує розподілений механізм арбітражу і надійну доставку повідомлень. Повідомлення, що передаються по локальній шині APIC, програмно невидимі; реалізація і протокол шини можуть бути змінені виробниками процесорів і чіпсетів системних плат, але це не відіб\'ється на ПЗ.

Крім використання послідовної локальної шини, є й інший варіант доставки повідомлень до локальних контролерів APIC - в цьому варіанті відбуваються звернення до простору пам\'яті. Для цього локальні контролери APIC настроюються на відстеження операцій запису за певними адресами. Джерело повідомлень виконує операцію запису в простір пам’яті, в якій і адресу, і дані несуть інформацію про подію переривання. Як джерело повідомлень може виступати розширений контролер званий I/O(x) APIC.

Проблема поділюваних переривань

Лінії запитів переривань в комп\'ютері, насиченому периферійними пристроями, є найбільш дефіцитним ресурсом, тому доводиться використовувати ці лінії спільно, тобто застосовувати колективні переривання (shared interrupts) між кількома пристроями. Обробники переривань (програми) від різних пристроїв, що мають одну лінію запиту (і отже, спільний вектор переривання), повинні бити вибудовані в ланцюжок. У процесі обробки переривання черговий обробник в ланцюжку читанням відомого йому регістра свого пристрою повинен визначити, чи не це пристрій викликав переривання. Якщо цей, то обробник повинен виконати необхідні дії і скинути сигнал запиту переривання від свого пристрою, після чого передати управління наступному обробникові в ланцюжку; в іншому випадку він просто передає управління наступного обробнику. Щоб переривання, які одночасно виникають від декількох пристроїв, не губилися, контролер переривань повинен бути чутливим до рівня, а не до перепаду на вході запиту. Відповідно з схемотехнікою логіки ТТЛ і КМОП активним рівнем повинен бути низький; вихідний формувач сигналу запитів у адаптерів повинен мати відкритий колектор (ТТЛ) або відкритий стік (КМОП); вхід запиту у контролера повинен бути «підтягнутий» до високого рівню резистором. Тоді безпосереднє з\'єднання цих виходів зі входом контролера ( «монтажне І») дасть необхідний результат в апаратному плані, а в програмному плані необхідно коректно вибудувати обробники в ланцюжок.

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

Прояви конфліктів по перериваннях можуть бути різноманітними. Мережева карта не зможе приймати кадри з мережі чи буде їх іноді втрачати; у пристроїв зберігання доступ до даних буде разюче повільним (іноді можна хвилинами очікувати, наприклад, появи інформації про файли і каталоги) або навіть неможливим: звукові карти будуть мовчати або «заїкатися»; на відеопрогравачах зображення буде смикатися і т. д. Конфлікти можуть призводити і до раптового перезавантаження комп\'ютера, наприклад, по приході кадру з мережі або сигналу від модему. Спасінням від проблем подільності може бути перестановка карт PCI у відповідний слот, у якому конфлікти не спостерігаються (це не означає, що їх немає).


Лекція: Організація обміну в обчислювальної системі

У цій лекції розглядаються дві підсистеми, що забезпечують обмін даними між периферійними пристроями і ЦП. Мова йде про підсистемі обробки апаратних переривань і підсистемі прямого доступу до пам\'яті.

Мета: ознайомити студентів з видами подій у обчислювальної системі на основі IA-32, сформувати уявлення про організацію доставки асинхронних сигналів (переривань) центральному процесору, про спосіб організації обміну в обчислювальної системі на основі прямого доступу периферійного пристрою до пам\'яті.
  1   2




Схожі:




База даних захищена авторським правом ©lib.exdat.com
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації