Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика (1 семестр).doc
Скачиваний:
143
Добавлен:
11.06.2015
Размер:
777.73 Кб
Скачать

6.13.Описать событие «прерывание выполняется»

В одном из регистров внешнего устройства появилось целое двоичное число без знака. Возможно появление сигнала на линии внешней связи. 2. Прерывание передано. На линии прерывания появился сигнал.  3. Прерывание пришло. В регистре прерывания (регистр процессора) появилась единица. 4. Прерывание произошло. Центральный процессор сменил слово состояния.

Если произошел запрос прерывания, и флаг I в регистре состояния установлен в 1, то адрес следующий команды сохраняется в стеке, а выполнения программы продолжается с адреса, хранящимся в соответствующем векторе прерывания. Когда запрос прерывания получен, и программа перешла по этому вектору (адресу), флаг I сбрасывается в 0, чтобы предотвратить возможность вызова нового прерывания во время обработки текущего прерывания. Флаг I будет снова установлен в 1 в конце обработчика прерывания, когда выполняется команда возврата RETI. Он также может быть установлен в 1 в процессе обработки (после сохранения контекстовых регистров), чтобы разрешить вложенные прерывания. Средние и старшие модели AVR могут обрабатывать столько вложенных прерываний, на сколько хватит объема стека для хранения содержимого счетчика команд и регистров контекста. Младшие модели имеют ограниченный объем стека (три позиции), который может быстро переполниться при выполнении вложенных прерываний или подпрограмм.

6.14. Описать событие «прерывание пришло»

В регистре прерывания (регистр процессора) появилась единица.

6.15. Организация внешних устройств

Вспомним принципиальную схему компьютера: центральный процессор, оперативная память, общая шина, группа внешних устройств.

          1. Рисунок 1

Винчестер, клавиатура, «мышка», монитор, CD-диск, – это внешние устройства, которые стандартным образом подключаются к общей шине. Вы, уважаемый читатель, возможно, привыкли к «системному блоку». Должен огорчить: это точка зрения сборщика компьютера. Нас интересуют принципы функционирования.

          1. Рисунок 2

Посмотрим рисунок 2. На нем показано внешнее устройство, соединенное с общей шиной. Устройство имеет физическую компоненту и интерфейсную. Физическая компонента выполняет то, что должна. Принтер печатает, мышка вводит координаты, клавиатура символы и т.д. Интерфейсная часть ─ это набор регистров. Обычно интерфейсную часть называют контроллером внешнего устройства. Часть регистров имеет выход на общую шину. Эти регистры называются портами. Каждое устройство может иметь несколько портов. Порты должны иметь свои уникальные идентификаторы, называемые адресами. Адреса портов хранятся в контроллере. Ранее адреса присваивались при изготовлении устройства, и менять их было невозможно. Сейчас некоторые устройства позволяют программную настройку. Для общения с внешними устройствами процессор Intel имеет две команды: IN N и OUT N. Операндом обоих команд является адрес порта N. Команда IN передает двоичное число в соответствующий порт, Команда OUT читает значения соответствующего порта. В некоторых умных книгах мне приходилось читать фразу: «Процессор находит нужное устройство и передает ему информацию». Однако процессор это не делает. Выполняя команду обмена, процессор выдает на общую шину адрес порта и переходит к выполнению следующей команды. Адрес по общей шине поступает на все внешние устройства, подключенные к шине. Контроллер внешнего устройства сравнивает поступивший адрес с хранимыми адресами. Если совпадений нет, контроллер не реагирует на поступившую команду. Если пришедший адрес совпадает с хранимым адресом, команда выполняется. Здесь описана схема обмена процессора Intel. Запуск обменной операции IBM 360/370 осуществлялся очень похоже, только там была двухуровневая схема. Команда SIO N M содержала два адреса: адрес канала и адрес устройства в канале. Уважаемый читатель! Вы можете отметить преимущества и недостатки описанных схем? Теперь начинается старая история. Описана всего лишь упрощенная схема. Надо понять, зачем нужны порты, что в них может храниться, как в порт попадает число, как извлекается. Начнем с функционального назначения. Порт может содержать: 1. Значение, полученное на внешнем устройстве 2. Значение, переданное на внешнее устройство процессором 3. Значение, определяющее состояние внешнего устройства 4. Значение, определяющее поведение внешнего устройства. Например, ввод с клавиатуры. Все клавиши перенумерованы, номер клавиши называется «скан-код». Вы нажали клавишу на клавиатуре, ее скан-код появляется в порту клавиатуры. Как только в порту клавиатуры появляется значение, контроллер клавиатуры устанавливает прерывание на линии прерывания. Прерывание добирается до процессора. Возможно, процессор выполнит прерывание, и управление перейдет к обработчику прерываний от клавиатуры. Обработчик содержит команду IN N, где N – адрес порта клавиатуры. Когда будет выполнена эта команда, скан-код попадет в процессор.

          1. Рисунок 3

Что-то ощутимо запахло мистикой. Давайте конкретнее. В команде IN, расположенной в обработчике прерываний, не содержится адрес результата. Придется вернуться к схеме процессора (рисунок 3). Процессор выполняет команду IN. Команда выбирается в регистры АЛУ (Арифметико-логическое устройство). АЛУ формирует пакет, состоящий из признака команды чтения R и адреса порта. Этот пакет выбрасывается в общую шину. Как было описано ранее, пакет попадает в контроллеры всех внешних устройств, но реагирует только устройство, имеющее порт N. Контроллер соответствующего устройства выводит значение порта (I) в шину данных. Это значение доползает до процессора и заносится в регистр общего назначения, обычно R1. Одной из следующих команд обработчика это число переносится в оперативную память. Было бы интересно проследить дальнейший путь прочитанного числа, но это в большей степени относится к функциям операционной системы.

          1. Рисунок 4

На рисунке 4 показана схема вывода в порт. Процессор выбирает команду W N. Будущее значение порта должно быть заранее занесено в общий регистр R1. АЛУ формирует пакет, состоящий из признака команды записи W, адреса порта N, значения I. Как показано в схеме, пакет выводится в общую шину. По общей шине пакет попадает на все подключенные устройства, но только устройство с нужным адресом выбирает данное I и заносит в соответствующий порт. Остальные устройства не реагируют. По этой схеме происходит запись, например, в таймер, устанавливается режим принтера и т.д. Внешнее устройство может находиться в различных состояниях. Оно может быть готово, либо нет. На принтере может отсутствовать бумага, может произойти замятие бумаги и т.д. Каждому состоянию можно однозначно сопоставить двоичное целое без знака. Тогда каждому состоянию может соответствовать значение порта устройства. Процессор может считывать это значение. После чего операционная система оценивает состояние устройства и принимает решение. Здесь действует партийный принцип принятия решений: ситуация возникает в низовой ячейке, но решение может принимать только генеральный секретарь. Если у рядового партийца понос, фенолфталеин (пурген) ему выдал секретарь. И, наконец, порты, определяющие рабочее состояние внешнего устройства. Можно назвать это параметрическим состоянием. Принтер может находиться в графическом, либо текстовом режиме. Зависит это от значения соответствующего порта. Это значение по разобранной схеме устанавливает процессор. Как отдельное внешнее устройство организованы три регистра: Таймер, компаратор, системные часы. Системные часы ─ регистр, в который с постоянной частотой прибавляется единица. Эти регистры работают на независимом питании, поэтому служба времени функционирует при отключенном компьютере. Компаратор ─ регистр, к которому с постоянной частотой прибавляется единица. Первоначальную установку выполняет процессор, передавая в порт значение. Как только значение компаратора станет равным системным часам, возникает прерывание. Этот механизм можно использовать для генерации события в заданный момент времени. Таймер ─ регистр (порт), из которого с постоянной частотой вычитается единица. Если значение регистра равно нулю, возникает прерывание от таймера. В процессоре Intel значение таймера восстанавливается, и события повторяются периодически. Начальное значения порта устанавливает процессор, передавая в порт значение. Таким образом, задается частота регулярного события. Процессор IBM 360/370 такое восстановление не проводил. При необходимости это делала операционная система.