Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
109
Добавлен:
01.05.2014
Размер:
65.02 Кб
Скачать

Программная модель пу.

Программная модель – это то, как программист видит некоторое периферийное устройство.

Любое ПУ представлено для программиста и программы в виде набора регистров с некоторыми адресами. Все регистры имеют четкое функциональное назначение.

Структурно можно выделить три группы регистров (рис 3.):

  1. Регистры контроля.

  2. Регистры состояния.

  3. Регистры ввода/вывода.

Рис.3. Программная модель абстрактного ПУ.

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

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

Через регистры ввода/вывода осуществляется обмен текущей информацией с ПУ.

Пример.

Возьмем в качестве ПУ – адаптер последовательного интерфейса компьютера. Подключим к нему манипулятор-мышь. Настроим его на режим работы, занеся в регистр контроля значение скорости обмена и режима последовательной передачи.

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

Следует обратить внимание, что в зависимости от функциональных свойств ПУ у него может быть несколько регистров контроля, регистров статуса и регистров ввода/вывода. Также возможно совмещение функции некоторых регистров. Например, совмещенный регистр контроля/статуса. Иногда некоторых регистров может не быть.

Виды обмена данными Программный обмен.

Участники обмена: ЦП и ПУ

Инициатор обмена - ЦП

Алгоритм обмена.

Процессор выставляет на шину адреса значение, соответствующее адресу регистра периферийного модуля.

На шине управления выставляется сигнал на чтение или запись.

По шине данных осуществляется передача данных.

Пример.

Аналогией такого механизма могут служить часы. Хозяин часов сверяет время, когда ему необходимо.

Обмен по прерываниям.

Участники обмена: ЦП, ПУ и контроллер прерываний

Инициатор обмена: ПУ.

Алгоритм обмена.

По возникновению некоторого события ПУ обращается к контроллеру прерываний по специально выделенной линии прерываний на шине управления.

Контроллер прерываний переводит процессор к точке, где расположена программа обработки прерывания. Эта программа осуществляет программное взаимодействие с ПУ.

Пример.

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

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

Чтобы упорядочить взаимодействие по прерываниям вводится система приоритетов прерываний, то есть иерархия важности прерываний. В зависимости от архитектурных особенностей ЦП и контроллера прерываний есть разных алгоритмы построения приоритетов.

Первый и самый простой– бесприоритетный механизм. В этом случае при возникновении некоторого прерывания никакие другие прерывания не могут быть обработаны до окончания обработки этого прерывания и выстраиваются в очередь обработки.

Второй механизм– с относительным приоритетом. В этом случае все прерывания имеют свой приоритет, который у них отличается. Пусть мы имеем три прерыванияA,B и С, которые имеют приоритеты а>b>c. Пусть возникло прерываниеB. Процессор перешел к программе его обработки. В время обработки возникли запросы на прерывания сначала С, затем А. Обработка прерыванияBне была прервана и программа обработки прерыванияBдоработала до конца. Теперь, несмотря на то, что запрос на прерываниеCпришел раньше, чем наA, происходит переход к обработке прерыванияA, потому что оно обладает более высоким приоритетом (рис. 4).

Рис. 4. Обработка прерываний с относительным приоритетом.

Третий механизм– механизм с абсолютным приоритетом. Пусть у нас есть два источника прерыванияA и B. С приоритетамиa>b. Пусть поступил запрос на прерываниеB.Процессор приступил к программе его обработки. В это время поступило прерываниеA. Процессор прерывал программу по обработке прерыванияBи перешел к обработке прерыванияA. По окончании программы обработки прерыванияA процессор вернулся и закончил обработку прерыванияB.

Рис. 5. Обработка прерываний с абсолютным приоритетом.

В реальных процессорных системах часто смешиваются абсолютный и относительный механизмы приоритетов. В этом случае прерывания объединяются в группы абсолютных приоритетов. Внутри группы действуют относительные приоритеты.

Пример 1.

Пусть система имеет три уровня абсолютных приоритетов 0,1,2.

В каждой группе выделяются по три прерывания:

  1. A0,B0,C0 a0>b0>c0

  2. A1,B1,C1 a1>b1>c1

  3. A2,B2,C2 a2>b2>c2

Тогда между прерываниями A1,B1,C1 действует относительный механизм, а междуA2,B1,C0– абсолютный.

Задача 1.

  1. A0,B0,C0 a0>b0>c0 ta0=7мкс tb0=8мкс tc0=9мкс

  2. A1,B1,C1 a1>b1>c1 ta1=4мкс tb1=5мкс tc1=6мкс

  3. A2,B2,C2 a2>b2>c2 ta2=1мкс tb2=2мкс tc2=3мкс

где t– время на обработку прерыания.

Пусть с некоторого момента времени в системе возникают запросы на прерывания с интервалом в 1мкс в следующей последовательности. С0,B0,A0,C1,B1,A1,C2,B2,A2. В какой последовательности они будут обработаны?

Полинговые системы

В некоторых системах существует сложный механизм динамического изменения прерываний, то есть после выполнения некоторого прерывания его приоритет падает. Такие системы прерываний называются полинговыми. Пусть у нас есть три прерывания A,B,Cс динамическими приоритетамиa>b>c. Произошло прерываниеA, и процессор его обработал. Теперь мы имеем приоритетыb>c>a.

В некоторых случаях приоритет прерывания повышается с течением времени.

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

Маскирование прерываний.

Маскирование прерываний – это программный механизм запрета обработки некоторых прерываний. Он осуществляется двумя способами.

Первый запрещает некоторое конкретное прерывание. Обычно это производится путем изменения специального флага в периферийном устройстве, которые запрещает этому устройству выдавать прерывания.

Второй механизм – более общий. Он запрещает ЦП обрабатывать прерывания, приоритет которых ниже заданного.

Пример 2.

Возьмет систему прерываний из более раннего примера:

  1. A0,B0,C0

  2. A1,B1,C1

  3. A2,B2,C2

Запретим ЦП выполнять прерывания ниже 1 уровня. Запретим ПУ выдавать запрос на прерывание B1.Тогда будут обрабатываться прерыванияA2,B2,C2,A1,C1.

Задача 2.

Пусть мы имеем эту же систему прерываний. Запретим ПУ выдавать запросы на A0,C1,B2. Запретим ЦП выполнять все прерывания ниже нулевого уровня, ниже первого, ниже второго. Какие в этих случаях прерывания будут обрабатываться?

Часто существует группа прерываний с наивысшим приоритетом, который нельзя запретить. Такие прерывания называются немаскируемыми. Соответственно, прерывания, которые можно запретить, называются маскируемыми.

Примеры прерываний.

Маскируемые:

  1. Прерывание от таймера.

  2. Прерывание по нажатию клавиши.

  3. Прерывание по движению мыши.

Немаскируемые:

  1. Прерывание по недопустимому коду операции.

  2. Переполнение стека.

Перезапуск процессора тоже является особым видом немаскируемого прерывания, которое называется RESET (сброс).

Соседние файлы в папке Конспект в формате doc