:: Статистика ::

 
Індекс цитування

 

 

 

 

 

Переривання

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

Переривання в PDP-11
Для прикладу розглянемо організацію переривань в машинах сімейства PDP-11. Процесори даної архітектури зараз практично не використовуються в машинах загального призначення, але виробляються і застосовуються як мікроконтроллери. Ряд архітектурних вирішень PDP-11, розробленою на початку 70-х років, не втратили актуальності і понині. Зокрема, підхід до реалізації переривань вважається класичним [Кейслер 1986].
Процесори сімейства PDP-11 розрізняють 128 типів переривань і виключень (чим переривання відрізняється від виключення, див. далі). Кожному типові відповідає процедура-обробник. Адреси точок входу всіх процедур зібрані в таблицю векторів переривань. Ця таблиця займає 256 слів фізичної пам'яті, починаючи з нульової адреси. Кожен елемент таблиці (вектор) містить адресу обробника і нове слово стану процесора. Пізніше буде пояснено, для чого це зроблено.
Процесор дізнається про виникнення переривання, якщо на один з входів запиту поданий сигнал. Зазвичай цей сигнал генерується одним із зовнішніх пристроїв. Наприклад, переривання може сигналізувати про завершення операції переміщення голівки дисковода або передачі даних в режимі ПДП.
Кожен вхід відповідає певному рівню пріоритету. PDP-11 має вісім рівнів пріоритету переривання. Переривання відбувається лише коли рівень пріоритету процесора нижчий за пріоритет запрошуваного переривання. Якщо біля процесора встановлений пріоритет, рівний 7, зовнішні переривання заборонені. Пріоритет процесора задається його словом стану. Отримавши запит, процесор завершує виконання поточної команди і виставляє
сигнал готовності до переривання. Після цього зовнішній пристрій виставляє на шині даних номер вектора переривання.
Процесор прочитує номер і викликає відповідну процедуру з таблиці. При цьому виклик обробника переривання відрізняється від виклику звичайної процедури: при звичайному виклику в стеку зберігається лише адреса команди, на яку слід повернути управління. При перериванні ж в стеку зберігаються два значення: адреси команди і слова стану процесора. Нове слово стану береться з таблиці векторів.
При цьому пріоритет процесора автоматично встановлюється рівним тому значенню, яке розробник програми обробки вважає за правильне. Звернете увагу: не рівним пріоритету оброблюваного переривання, а тому, яке вимагає розробник.
При завершенні процедури обробки викликається команда RTI (ReTurn from Interrupt— повернення з переривання). Ця команда виштовхує із стека адресу перерваної команди і старе слово стану, тим самим і продовжуючи виконання перерваної програми, і відновлюючи пріоритет процесора. [Кичев/некрасов 1988].
Для порівняння: у процесорах сімейства 180x86 вектор переривання містить лише адресу програми-обробника, а пріоритет процесора задається не словом стану процесора, а регістром зовнішнього устройства— контроллера переривань. Контроллер переривань зазвичай встановлює пріоритет, рівним пріоритету переривання, що обробляється в даний момент. Аби підвищити або знизити цей рівень, обробник переривання повинен програмувати контроллер. Перед завершенням обробника необхідно повернути контроллер переривань у вихідний стан, виконавши над ним серію магічних команд — епілог переривання.
Обробка переривань в системах з віртуальною пам'яттю декілька ускладнюється: адже окрім адреси обробника нам треба ще задати адресний простір, в якому ця адреса визначена. У моделях PDP-11, що мають диспетчер пам'яті, ця проблема вирішується просто: для процесора в кожен момент часу задано два адресні простори: призначене для користувача і системне. Всі переривання обробляються в системному адресному просторі. Для реалізації цього процесор має два набори регістрів диспетчера пам'яті. Їх наявність, з одного боку, знімає з обробника переривання обов'язок перемикати адресні простори, а з іншою дозволяє ядру при обробці системних викликів звертатися до сегменту даних призначеного для користувача процесу.
У захищеному режимі процесорів 180x86 використаний гнучкіший механізм установки адресного простору для обробника. По суті, з кожним обробником може бути асоційоване свій віртуальний адресний простір. Про спосіб, яким це досягається, краще прочитати в літературі по відповідних процесорах, наприклад [Паппас/маррі 1993].

Переривання позбавлені недоліків, які ми вказали і вище для обробки подій за допомогою опиту: чекаючи події, процесор може займатися якій-небудь іншою корисною роботою, а коли подія станеться, він приступить до обробки, не чекаючи повного завершення цієї роботи.
Проте цей механізм має і власні недоліки. Зокрема, обробка переривання зв'язана з набагато більшими накладними витратами чим перевірка прапора і умовний перехід в режимі чекання. Біля оптимізованих для обробки подій мікроконтроллерів різниця невелика або навіть може бути на користь механізму переривань: приведений в прикладі 6.1 цикл опиту займає 5 циклів процесора, а обробник переривання біля PIC викликається протягом 3—4 циклів ([www.microchip.com PICMicro] стверджує, що середня затримка переривання складає 3,75 циклу). Таким чином, середній час реакції на подію в режимі опиту складає 2,5 циклу (по середньому часу опит у виграші), а максимальне -5 циклів (в даному випадку перевага на стороні переривань).
Проте біля процесорів загального призначення, які при обробці переривання вимушені зберігати декілька регістрів і здійснювати відносно складний діалог з пристроєм, що викликав переривання, затримка між установкою сигналу переривання і виконання першої команди його обробника — цей інтервал і називається затримкою переривання (interrupt latency) — складає десятки тактів.
Сучасні суперскалярні процесори при обробці переривань вимушені скидати чергу попередньої вибірки команд і, принаймні, частину кешів команд і даних, тому біля .них накладні витрати ще більші. Затримка переривання біля сучасних реалізацій архітектури х86 лише ненамного краще, ніж біля 80386 хоча за швидкістю виконань послідовних програм сучасні процесори перевершують 80386 на декілька порядків. Тому молодші моделі процесорів з архітектурою х86, 8086 і навіть 8085, хоча і не знаходять вживання в персональних комп'ютерах, але продовжують випускатися для використання у вбудовуваних застосуваннях або як периферійні процесори.
Так, наприклад, "марсоход" Sojoumer використовував як процесор, що управляє, 8085 на сапфіровій підкладці (для забезпечення радіаційної стійкості).
Ця ж обставина є додатковим аргументом на користь включення в систему канальних процесорів, в даному випадку з метою звільнення центрального процесора не від опиту, а від обробки переривань. Розробники великих комп'ютерів часто реалізовували канальні процесори старших моделей на основі центральних процесорів молодших моделей тієї ж серії.

 

рекламодавці:

/ ml lfppюн документация про ВУС изоляция

::  Меню ::

ГОЛОВНА

Введення

Представлення даних в обчислювальних системах 

Машинні мови

Завантаження програм 

Управління оперативною пам'яттю

Сегментна і сторінкова віртуальна пам'ять

Комп'ютер і зовнішні події

Паралелізм з точки зору програміста 

Реалізація багатозадачності на однопроцесорних комп'ютерах 

Зовнішні пристрої

Драйвери зовнішніх пристроїв 

Файлові системи 

Додаток. Огляд архітектури сучасних ОС

 


:: Навігація ::

Головна

Додати у вишукане  

 

 

 


Copyright © Asentli, 2008