Преимущества и недостатки прерывания

Одна из самых сложных проблем при проектирований подсистем ввода-вывода — согласование во времени работы ЦП и периферийного оборудования. Процессор должен определять, когда у периферийного устройства имеются новые данные для ввода или когда оно готово получить данные из ЦП. Для очень медленных УВВ, таких как пе-рёключа1*ели‘ или световые индикаторы, решение этой - проблемы не вызывает затруднений, так как быстрой реакции ЦП не требуется. Центральный процессор может обмениваться информацией с такими УВВ в произвольные моменты времени.

По-другому обстоит дело с более быстрыми УВВ. Обычно их скорость не настолько велика, чтобы оии могли работать в темпе процессора, но и не настолько мала, чтобы любой способ управления ими оказался приемлемым. В эту категорию попадают такие УВВ, как клавишные пульты, телетайпы, печатающие устройства, кассетные накопители, Модемы, системы сбора данных (data acquisition systems) и др. Как было отмечено выше, обмен с такими УВВ может быть синхронным или асинхронным. При асинхронной передаче ЦП должен «быть уверен», что УВВ готово к обмену; при синхронной передаче ЦП инициирует процесс обмена и обеспечивает нужное согласование во времени.

Программно-организованное ожидание сигналов и обеспечение*временных задержек приводит к потере процессором времени, увеличению размера и сложности программ. Пусть, например, ЦП ожидает начала передачи данных от УВВ, максимальная скорость которого составляет 10 символов/с. Тогда ЦП будет обнаруживать, что признак «данные готовы» установлен не чаще чем 10 раз в секунду. Зато программа fipd-веркй признака очень короткая:

СНК: ЧИТАТЬ DPORT

AND # MASK

ПЕРЕХОД, ЕСЛИ НУЛЬ СНК

Если каждая команда выполняется .за 5 мкс, то ЦП проверит признак 6700 раз за 0,1 с. Ясно, что проверка, которая в 99,случаев будет безуспешной, малоэффективна.

Даже несколько подобных проверок вряд ли полностью загрузят ЦП. Например, ЦП может проверить каждый из десяти признаков 670 раз за 0,1 с. Кроме того, могут возникнуть и другие проблемы: что произойдет, если одно УВВ подготовит данные, в то время как ЦП обслуживает другое УВВ?

как быть, если то УВВ, которое процессор проверяет первым, почти всегда активно? ,

Процесс проверки готовности каждого из УВВ называется полин* гом (polling). Его можно сравнить (как бы ни была велика и сложна система) с работой телефонного коммутатора, при которой все линии последовательно опрашиваются, чтобы узнать, не поступил ли сигнал вызова.

При работе с синхронными УВВ необходимо точно соблюдать временные интервалы между пересылками информации. Центральный процессор может сам организовать задержку (см. §8.1), загружая регистр и декрементируя его заданное число раз. Но при такой организации задержек процессор полностью загружен. Если потребовать, .чтобд ЩЪвыполнял другую работу в этот период, то необходимо, чтобы либо программист определил требуемое время пересылки, либо

* процессор проверял показания таймера, чтобы узнать, закончился ли заданный интервал времени. Оба варианта приводят к усложнению программ.

, Самое обычное решение, альтернативное применению программ по-линга и программ реализации временных задержек, — использование прерываний. Прерыванием1 называется подаваемый на вход процессора сигнал, который может непосредственно, аппаратным способом, изменить последовательность операций ЦП. Этот сигнал действует как зуммер, который заставляет процессор приостановить обычные действия и реагировать на сигнал. На рис. 9.1 показано использование прерывания в качестве сигнала «данные готовы». В данном случае нет необходимости в специальных командах проверки принака «готово», так как изменение значения признака непосредственно воздействует на ЦП. На рис. 9.2 запрос на прерывание поступает от таймера. Процессору не нужно самому вести отсчет времени, так как в момент завершения временного интервала возникнет прерывание.

Очевидно, что прерывания полезны при организации ввода-вывода, так как процессору при этом не нужно проверять признаки готовности и следить за длительностью временных интервалов. Аппарат прерываний используется также в следующих целях:

1. Сигнал тревоги. Такой сигнал может поступать от первичных преобразователей, переключателей, компараторов. Ситуации, в которых возникает сигнал тревоги, редки, но вршя реакции на такие сигналы должно быть очень мало. На рис. 9.3 приведен пример системы обеспечения безопасности.

2. Предупреждение о падении напряжения^ сети электропитания. Такое прерывание дает системе возможность сохранить данные в блоке памяти, потребляющем мало энергии, или подключиться к резервному источнику питания.

Схема, обнаруживающая падение напряжения в сети электропитания (рис. 9.4), обычно представляет собой RC-цепь, которая реагирует на изменеиие напряжения достаточно быстро, так что процессор может выполнить еще много команд, прежде чем подача энергии полностью прекратится. Перебои в системе питания — редкие явления, реакция на которые должна быть быстрой. Обработка прерывания при отказе электропитания должна выполняться прежде всего, так как такой сбой приводит к полной неработоспособности системы.

3. Ручное управление с лицевой панели. С помощью прерывания можно разрешить ручное управление системой, что необходимо для профилактики, ремонта, тестирования и отладки системы.

4. Средство отладки. Прерывания дозволяют вносить исправлений в программу, осуществлять ее трассировку и приостанавливать исполнение программы в контрольных точках.

5. Индикация аппаратных сбоев.

6. Индикация ошибок при передаче данных.

7. Координация работы аппаратуры в многопроцессорных системах.

8. Управление прямым доступом к памяти. ч

9. Управление работой операционной системы.

10. Измерение производительности системы.

.11. Моделирование часов реального времени. Такие часы посылают сигналы прерывания через равные интервалы времени заданной длительности.

Чтобы оценить преимущества, которые дает система прерываний, следует учесть такую важную характеристику, как отношение времени реакции на прерывание к промежутку времени между событиями. Если время реакции должно быть намного меньше среднего промежутка времени между событитси, то процессор будет вынужден многократно проверять соответствующий прианак.

Если, например, процессор должен реагировать на событие в течение 1 мс, а происходят подобные события 1 раз в минуту* то в сред* нем за 1 мин процессор осуществит 120 000 безуспешных проверок. Необходимость проверять несколько таких признаков может существенно снизить производительность процессора.

 



Купить мужские футболки alichecker.info.