Главная страница
Навигация по странице:

  • Таблиця. Джерела апаратних переривань в IBM PC AT

  • Мал.

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

  • Канали та порти вводу-виводу Канали

  • Порти

  • Порти Призначення

  • Архітектура обчислюваних систем. 4%20пара%20Обробка%20переривань%20на%20рiвнi%20AРIC. Обробка переривань на основі контроллера 8259A


    Скачать 55.22 Kb.
    НазваниеОбробка переривань на основі контроллера 8259A
    АнкорАрхітектура обчислюваних систем
    Дата26.09.2021
    Размер55.22 Kb.
    Формат файлаdocx
    Имя файла4%20пара%20Обробка%20переривань%20на%20рiвнi%20AРIC.docx
    ТипДокументы
    #237285

    Обробка переривань на основі контроллера 8259A


    Контролер переривань 8259A є пристроєм, що реалізує до восьми рівнів запитів на переривання, з можливістю програмного маскування і зміни порядку обслуговування переривань.

    Контролер переривань складається з наступних блоків:

    • IRR - регістр реєстрації переривань;

    • PRB - схема прийняття рішень по пріоритетах; схема ідентифікує пріоритет запитів і вибирає запит з найвищим пріоритетом.

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

    • IMR - регістр маскування переривань; забезпечує заборону однієї або декількох ліній запитів переривання.

    • BD - буфер даних; призначений для сполучення з системною шиною даних.

    • CU - схема управління; виробляє сигнали переривання і формує трьохбайтову команду CALL для видачі на шину даних.

    Один контролер 8259A здатний обслуговувати переривання від 8 джерел. Для обслуговування більшої кількості пристроїв використовується каскадне включення контролерів. У системах IBM РС AT каскадне включення дозволяє до 15 пристроям сигналізувати про переривання.



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

    Таблиця. Джерела апаратних переривань в IBM PC AT







    Запит

    Джерело

    Пріоритет

    Номер вектора

    NMI

    Помилка пам’яті або інша невиправна помилка в системі




    02h

    IRQ0

    Системний таймер

    1

    08h

    IRQ1

    Клавіатура

    2

    09h

    IRQ8

    Годинник реального часу

    3

    70h

    IRQ9

    Устройство на шине

    4

    71h

    IRQ10

    Устройство на шине

    5

    72h

    IRQ11

    Устройство на шине

    6

    73h

    IRQ12

    Устройство на шине

    7

    74h

    IRQ13

    Сопроцессор

    9

    75h

    IRQ14

    IDE контролер

    9

    76h

    IRQ15

    Устройство на шине

    10

    77h

    IRQ3

    Послідовний порт (COM2 або COM4)

    11

    0Bh

    IRQ4

    Послідовний порт (COM1 або COM3)

    12

    0Ch

    IRQ5

    Паралельний порт (LPT2) або IDE контролер (другорядний)

    13

    0Dh

    IRQ6

    Контролер дисковода ГМД

    14

    0Eh

    IRQ7

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

    15

    0Fh

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

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

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

    Система переривань і виключень в архітектурі IA-32


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


    Мал. Класифікація подій в системі на основі ЦП IA-32

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

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

    Ці лінії можуть бути конфігуровані на використання вбудованим контроллером переривань - APIC (Advanced Programmable Interrupt Controller), тоді вони називаються LINT0 і LINT1 і їх призначення визначається настройками APIC.

    Переривання, які генеруються під час вступу сигналу на вхід INTR#, називають маскованими апаратними перериваннями. Бит IF в регістрі флагів дозволяє заблокувати (замаскувати) обробку таких переривань.

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

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

    За допомогою інструкції INT n (n - номер переривання) можна згенерувати переривання з будь-яким номером 0...255. Такі переривання називають програмними. Стан бита IF в регістрі прапорів не впливає на можливість генерації програмних переривань. Програмні переривання можуть використовуватися для доступу до сервісів операційної системи (наприклад, INT $21 - сервіси DOS, INT $80 - сервіси Linux), функцій драйверів пристроїв (наприклад, INT $33 - драйвер миші) або спеціальних сервісів (INT $10 - відео-сервіс BIOS, INT $31 - DPMI-сервіс), INT $67 - сервіс EMS).

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

    • виключення, що генеруються програмою, дозволяють програмі контролювати певні умови в заданих точках програми (INTO - перевірка на переповнювання, INT3 - контрольна крапка, BOUND - перевірка меж масиву);

    • виключення машинного контролю (#18), що виникають в процесі контролю операцій усередині чіпа і транзакцій на шині процесора;

    • виявлені процесором помилки в програмі (ділення на нуль, порушення правил захисту, відсутність сторінки і т.п.)

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

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

    Пастка виникає на межі команд відразу ж після команди, що викликала це виключення. Значення регістрів CS і EIP, що заносяться в стек обробника, указують на чергову команду. Наприклад, якщо пастка спрацювала на команді JMP, то в стеку запам'ятовуються значення регістрів CS і EIP, що вказують на посилання команди JMP.

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

    Типовим випадком аварії є виключення #8 "подвійна помилка". Подвійна помилка відбувається, коли процесор намагається обробити виключення, а його обробник генерує ще одне виключення. Для деяких виключень процесор не генерує подвійну помилку, такі виключення називають "легкими". Тільки помилки ділення (виключення #0) і сегментні виключення (#10, #11, #12, #13), що називаються "важкими", можуть викликати подвійну помилку. Таким чином, отримання виключення "неприсутність сегменту" під час обробки виключення в режимі відлагодження не призведе до подвійної помилки, тоді як помилка сегменту, що відбувається під час обробки помилки ділення на нуль, призведе до виключення #8.

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

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

    Всі переривання і виключення мають номер (іноді іменований вектором) в діапазоні від 0 до 255. Номери 0...31 зарезервовані фірмою Intel для виключень.

    Розширений програмований контроллер переривань (APIC)


    Мікропроцесори IA-32, починаючи з моделі Pentium, містять вбудований розширений програмований контроллер переривань (APIC). Вбудований APIC призначений для реєстрації переривань від джерел усередині процесора (наприклад, блок температурного контролю у Pentium 4) або від зовнішнього контроллера переривань і передачі їх ядру процесора на обробку. Особливо важлива роль покладається на вбудований APIC в багатопроцесорних системах, де APIC приймає і генерує повідомлення про міжпроцесорні переривання (IPI - InterProcessor Interrupt). Такі повідомлення можуть використовуватися для розподілу обробки переривань між процесорами або для виконання системних функцій (первинне завантаження, диспетчеризація завдань і т.п.).

    Вбудований APIC розрізняє наступні джерела переривань.

    1. Від локальних пристроїв. Переривання, що генеруються по фронту або рівню сигналу, який поступає від пристрою, безпосередньо підключеного до сигналів LINT0 і LINT1 (наприклад, контроллер переривань типу 8259A).

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

    3. Міжпроцесорні (IPI). У багатопроцесорних системах один з процесорів може перервати інший за допомогою повідомлення IPI на шині APIC (або системній шині).

    4. Від таймера APIC. Вбудований APIC містить таймер, який можна запрограмувати на генерацію переривання після досягнення певного відліку.

    5. Від таймера монітора продуктивності. Процесори містять блок моніторингу продуктивності. Цей блок можна запрограмувати так, щоб пов'язаний з ним таймер досягши певного відліку генерував переривання.

    6. Від термодатчика. Процесори Pentium 4 містять вбудований блок температурного контролю, який можна запрограмувати на генерацію переривань.

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

    Джерела 1, 4, 5, 6, 7 вважаються локальними джерелами переривань і обслуговуються спеціальним набором регістрів APIC, званим таблицею локальних векторів (LVT - local vector table). Два інших джерела обробляються APIC через механізм повідомлень. Ці повідомлення в Pentium і P6 передаються по виділеній трьохлінійній шині APIC. У Pentium 4 для передачі APIC-повідомлень використовалась системна шина, тому контролер переривань може бути підключений безпосередньо до звичайного системного інтерфейсу (наприклад, PCI).


    Мал. Взаємодія вбудованого APIC і зовнішнього контролера переривань

    Структура вбудованого APIC є архітектурною підмножиною мікросхеми контролера переривань Intel 82489DX. Регістри APIC відображаються на 4-Кбайтный блоку оперативної пам'яті за адресою FEE00000h.

    Наявність вбудованого APIC в процесорі виявляється за допомогою інструкції CPUID(1). Після RESET вбудований APIC включений, проте згодом він може бути відключений, тоді процесор працюватиме з перериваннями як Intel-386/486 (лінії LINT0 і LINT1 використовуватимуться як NMI# і INTR#, до яких може бути підключений контроллер переривань типу 8259A).

    Таблиця локальних векторів (LVT) складається з шести 32-бітових регістрів:

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

    • регістр вектора переривання від термодатчика;

    • регістр вектора переривання від монітора продуктивності;

    • регістр вектора переривання LINT0;

    • регістр вектора переривання LINT1;

    • регістр вектора переривання помилки.

    Значення в цих регістрах визначають:

    • номер вектора переривання;

    • тип переривання (fixed - з вказаним вектором, SMI - перехід в режим системного управління, NMI - немасковане, INIT - скидання, EXTINT - зовнішнє: процесор генерує цикл INTA і чекає номер вектора переривання від зовнішнього контролера);

    • активний рівень сигналу (низький або високий) або режим тригера (переривання по фронту або по рівню);

    • маску переривання (переривання може бути замасковане).

    Ці регістри також відображають стан переривання (чи доставляється це переривання ядру процесора в даний момент).

    Крім того, APIC містить регістри управління таймером APIC, регістр версії, регістр помилки, регістри, пов'язані з обслуговуванням переривань (регістр пріоритету, регістр запиту IRR, регістр обслуговування ISR), і регістри, пов'язані з передачею і прийомом IPI.



    Приклади:

    ;Ініціалізація 1 м/с обробки АП

    mov dx,20h ; № порта в DX

    mov al,11h ; 1 слово команд ініціалізації

    out dx,al

    jmp $+2 ; затримка (не обов)

    inc dx ; 21h

    mov al,8 ; 2 слово команд ініціалізації

    out dx,al

    jmp $+2

    mov al,4 ; 3 слово команд ініціалізації

    out dx, al

    jmp $+2

    mov al,1 ; 4 слово команд ініціалізації

    out dx, al

    ;Ініціалізація 2 м/с обробки АП - аналогічно для А0h, A1h

    Канали та порти вводу-виводу
    Канали застосовуються для підключення к ПК периферійних пристроїв: це фізичні лінії. Є паралельні і послідовні канали (розглядаються далі окремо).

    Порти'>Порти – уніфіковані засоби для забезпечення взаємодії з периферійними пристроями. Для усіх ресурсів виділяються свої порти – логічні адреси вводу-виводу, за допомогою яких здійснюється передача даних і управлінь до периферійних пристроїв. Прийом фізичних кодів від клавіатури здійснюється через порт 96 (60h), управління динаміком - 97 (61h) і т.і.

    Порти з номерами 0-FFh призначені для материнської плати, номери 100h-3FFh декодуються на шине вводу-виводу для використання різними адаптерами. Порти з номерами 400h і вище – недоступні.


    Порти

    Призначення

    000-01F

    Порти контролера прямого доступа в пам’ять

    020-03F

    Порти 1 контролера обробки АП

    040-05F

    Порти таймера

    060-06F

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

    0A0-0BF

    Порти 2 контролера обробки АП

    170-177

    Порти 2 ЖД

    1F0-1F7

    Порти 1 ЖД

    0F0-0FF

    Порти сопроцесора

    378-37F

    Порти паралельного каналу

    3F8-3FF

    Порти послідовного каналу


    Уточнення щодо таблиці даних DIOS.
    0:0400 – адреса порту СОМ1

    0:0402 - адреса порту СОМ2

    0:0404 - адреса порту СОМ3

    0:0406 - адреса порту СОМ4

    0:0408 - адреса порту LPT1

    0:0410 – встановлення обладнання

    0:0413 – обсяг ОП (в КБ)

    0:041А - адреса початкового буферу клавіатури

    0:041С - адреса кінцевого буферу клавіатури

    0:041Е – (32б) – буфер клавіатури

    0:0442 – (7б) – стан контролеру Накопичувача Гнучких МД
    Засоби для роботи з портами 1) out, in

    2) outport, inport

    outportb, inportb
    Принципи роботи з портами будуть розглянуті на наступній лекції.


    написать администратору сайта