Стан процесора. Вектор стану

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

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

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

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

Вектор стану формується у відповідних регістрах процесора і зазнає зміни після виконання кожної команди.

Набір інформаційних елементів, що створюють вектор стану, відрізняється у ЕОМ різних типів.

Наприклад: Вектор стану процесора Intel 8086

Вміст вказівника інструкцій IP
Вміст сегменту кодів CS
Вміст регістра прапорів FLAGS

 

4.2 Принципи організації систем переривання програм

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

Запит переривання - сигнал, що оповіщає процесор про подію, яка вимагає переривання. Система переривання програм ( контролер переривань ) - це сукупність апаратних і програмних засобів, які дозволяють ЕОМ реалізовувати переривання швидко і без великих зусиль зі сторони програміста.

Основні функції системи переривань:
1. Запам'ятовування стану програми, що переривається, і здійснення переходу до програми, що обробляє переривання.
2. Відновлення стану перерваної програми і повернення до неї.

Характеристики системи переривань
1. Загальна кількість запитів переривання ( входів в систему переривання)
2. Час реакції - між появою запиту переривання і початком виконання перериваючої програми. Зазвичай цю характеристику визначають для запиту з найвищим пріоритетом.
3. Витрати переривання - витрати часу на перемикання програм (час запам’ятовування стану програми, що переривається і час на відновлення стану перерваної програми)
4. Глибина переривання - максимальне число програм, які можуть переривати одна одну. Глибина переривання зазвичай співпадає з кількістю рівнів пріоритету. Чим вищий цей показник, тим швидше реакція на термінові запити.
5. Насичення системи переривань відбувається якщо запит виявиться таким, що не було обслуговано до моменту приходу нового запиту від того ж джерела. Оскільки попередній запит буде загублений, то це неприпустимо.

Допустимі моменти переривання програм -
1) після закінчення будь-якої поточної команди
2) після будь-якого такту виконання команди

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

4.3 Організація переходу до програми оброблення переривання

Вектор переривання - вектор початкового стану перериваючої програми. Він містить всю необхідну інформацію для переходу до перериваючої програми, в т.ч. її початкову адресу( у IBM PC це тільки початкова адреса ) . Кожному запиту переривання відповідає свій вектор переривання. Вектори переривання зазвичай знаходяться в спеціально виділених фіксованих елементах пам'яті. ( У IBM PC 1024 перших байта =256 векторів* 4байти адреси). Вектори переривань зберігаються в елементах пам'яті з молодшими адресами, довжина кожного вектора - 2 слова.

Приклад: Вектор переривання 5h має адресу (5*4=20) 20 =14h
- debug
- D 0000:0014 L 4
54 FF 00 F0

Вектор переривання у цьому випадку є адресою програми оборки переривання F000:FF54.

Повна адреса зберігається в пам'яті аналогічно зберіганню слів: спочатку зсув, потім початкова адреса сегменту.

При переході до перериваючої програми поточний вектор стану програми, що переривається, передається з відповідних регістрів в пам'ять (наприклад, в стек) .У IBM PC стек при переході до перериваючої програми виглядатиме таким чином:

Вершина SP -à Old IP( молодша частина адреси повернення)
Old CS( старша частина адреси повернення)
Old Flag Register (старий регістр прапорів)

Після цього відбувається завантаження в регістри процесора вектора переривання.

4.4 Пріоритети

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

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

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

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

Є можливість програмно керувати пріоритетом перериваючих програм. Один зі способів – використання маски переривань.

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