Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. Архітектура ПЕОМ.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
237.56 Кб
Скачать

21.Загальна схема переривань в івм рс ат

Створюючи IBM PC / AT, фірма IBM вирішила подвоїти кількість ліній запитів переривань і застосувала два контролери типу 8259, з'єднавши їх каскадно. Ведучий контролер переривань обслуговував запити переривань по лініях IRQ0-IRQ7, ведений - по лініях IRQ8-IRQ15. Вихідна лінія запиту переривання відомого контролера надходила на одну з вхідних ліній (IRQ2) ведучого; для підключення зовнішніх пристроїв використовувалися всі вісім вхідних ліній відомого контролера і сім (IRQ0, IRQ1 і IRQ3-IRQ7) ведучого, що в сумі давало 15 ліній.

Така схема обробки переривання стала стандартною. Однак вона має цілий ряд недоліків, найважливішими з яких є нестача ліній запитів переривань (15 штук сучасного комп'ютера не вистачає) і нездатність працювати в багатопроцесорної системі. Останнє особливо актуальним стало з появою багатоядерних процесорів, адже кожне ядро ​​з точки зору програміста є окремим процесором. Ці проблеми були загалом вирішені шляхом розробки удосконаленого програмованого контролера переривань (APIC), проте в цілях сумісності традиційний PIC і раніше підтримується і використовується старими операційними системами, які не вміють працювати з APIC. Слід зауважити, що сучасні варіанти PIC, що входять, як правило, в мікросхему південного мосту чіпсета системної плати, підтримують лише частина можливих режимів вихідної пари контролерів 8259. Так, з очевидних причин викинута можливість роботи PIC з мікропроцесором 8080. У наступних розділах будуть описані тільки ті можливості контролера переривань, які присутні в його сучасних реалізаціях.

Загальна схема обробки переривання

Перед початком роботи контролер переривань слід буде почати посилкою в нього групи командних слів ініціалізації (ICW). Оскільки контролер переривань IBM PC / AT складався з двох мікросхем 8259 і ця схема емулюється усіма сучасними ПК, при ініціалізації необхідно видати відповідні ICW і ведучому, і веденого контролерам. Детальніше послідовність ініціалізації описана нижче, у підрозділі «Ініціалізація контролера переривань».

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

Запити надходять по восьми лініях IRQ, причому залежно від встановленого режиму запитом може вважатися або наявність на лінії IRQ високого рівня, або позитивний перепад сигналу на цій лінії (тобто перехід з низького рівня у високий). В оригінальному контролері 8259 спосіб фіксації запиту - за рівнем (Level Mode) або по позитивному перепаду (Edge Mode) сигналу IRQ - встановлювався для всієї мікросхеми в цілому, проте в сучасних комп'ютерах від цього відмовилися, ввівши спеціальні регістри, за допомогою яких для кожної лінії IRQ метод виявлення запиту вказується індивідуально. Докладніше про це буде говоритися в описі регістрів PIC, а також у підрозділі «Фіксація запитів переривань і розділення ліній IRQ».

Виявлені запити запам'ятовуються в регістрі запитів переривань - IRR (Interrupt Request Register). Кожен біт цього регістра відповідає одній лінії IRQ. Біт IRR дорівнює 1, якщо було отримано запит від відповідної лінії, і 0, якщо запиту по цій лінії не надходило.

Окремі лінії IRQ можуть бути замасковані за допомогою регістра маскування переривань - IMR (Interrupt Mask Register). Установка будь-якого біта цього регістра маскує запити по відповідній лінії IRQ: вони приймаються і фіксуються в IRR звичайним чином, але їх обробка не виконується доти, поки відповідний біт в IMR НЕ буде скинутий.

Третім і останнім внутрішнім регістром контролера є регістр обслуговуваних переривань ISR (Interrupt Service Register). Коли контролер переривань обробляє переривання і видає процесору його вектор, відповідний йому біт в ISR встановлюється, а в IRR скидається. Установка деякого розряду ISR в загальному випадку блокує обробку нових переривань, що надходять по тій же лінії IRQ, а також всіх переривань з меншим пріоритетом. Скидання розрядів ISR виконується по командах процесора, якими він повідомляє контролер переривань, що обробка того чи іншого переривання завершена (подпробнее про це йдеться у підрозділі «Закінчення обробки переривання»). Таким чином, IRR показує, які переривання очікують обробки, а ISR - які обробляються в даний момент.

Контролер переривань постійно аналізує наявність незамаскованими запитів переривань, тобто одиничних бітів IRR, що не замаскованих одиничними бітами IMR і ISR. Якщо є хоча б один незамаскованими запит, контролер видає сигнал на свій вихід запиту переривання (INTR) і очікує надходження сигналу підтвердження переривання (INTA), отримавши який, видає вектор найбільш пріоритетного з наявних незамаскованими запитів, скидає відповідний йому біт IRR та встановлює біт ISR , після чого продовжує приймати і обслуговувати запити (технічно вектор переривання видається за другим сигналом INTA, однак для програміста точний протокол обміну між контролером переривань і процесором ролі не грає, тому детально тут не описується).