Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
5
Добавлен:
31.01.2023
Размер:
573.93 Кб
Скачать

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

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

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

Структурно можно выделить три группы регистров (рис. 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. Обработка прерываний с абсолютным приоритетом.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. Прерывание от мыши.

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

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

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

  3. Прерывание по неисправности питания.

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

Соседние файлы в предмете Организация ЭВМ и вычислительных систем