1. Модуль ввода-вывода формирует сигнал запроса прерывания, который предназначается процессору.
2. Процессор завершает выполнение текущей команды программы, прежде чем анализировать наличие сигнала запроса прерывания.
3. Процессор анализирует, не поступил ли сигнал запроса прерывания, обнаруживает его и посылает сигнал подтверждения тому модулю, который сформировал сигнал запроса. Получив сигнал подтверждения, модуль, инициировавший прерывание, снимает соответствующий сигнал с линии управления магистрали,
4. Процессор выполняет действия, предшествующие передаче управления по программе обработки прерывания. Прежде всего нужно позаботиться о сохранении текущего состояния процессора, что позволит в дальнейшем возобновить выполнение прерванной программы с той же точки. Здесь нужно обратить внимание на то, что в этот момент в счетчике команд процессора находится адрес команды, которая должна была бы выполняться процессором, если бы не произошло прерывание. Эту команду (а точнее, ее адрес) принято называть точкой прерывания, и она же является точкой возврата из прерывания. Поэтому процессор должен каким-то образом сохранить состояние счетчика команд, регистра состояния, который содержит слово состояния процессора PSW (processor status word). Как правило, эта информация помещается в системный стек.
5. Затем процессор загружает в счетчик команд начальный адрес программы (подпрограммы) обработки прерывания. В разных компьютерах и разных операционных системах эта операция выполняется по-разному. В одних — каждый источник прерывания (модуль ввода-вывода, вызвавший прерывание) имеет свою подпрограмму обработки, в других — прерывания разбиты на группы и каждая группа имеет свою программу обработки, а в третьих — вообще существует одна программа обработки всех прерываний, внутри которой происходит ветвление в соответствии с конкретным источником прерывания. Если архитектура системы предусматривает наличие множества подпрограмм обработки прерываний, то информацию о том, какую именно подпрограмму нужно вызывать в каждом конкретном случае, процессор должен получать вместе с самим сигналом запроса прерывания. Другой вариант процессор получает ее от устройства, инициировавшего прерывание, в ответ на сигнал подтверждения. Как только в счетчик команд будет помещен адрес подпрограммы, процессор начнет новый цикл выполнения команды. Первой фазой цикла будет извлечение команды, адрес которой находится в счетчике. В результате процессор приступит к выполнению заданной подпрограммы обработки прерывания. Что именно будет при этом сделано, определяет программист, который разработал подпрограмму.
6. Перед передачей управления подпрограмме обработки прерывания процессор аппаратными средствами выполнил сохранение счетчика команд и PSW в системном стеке. Но помимо этой информации для возобновления прерванной программы может потребоваться и восстановление состояния других регистров процессора. Поэтому, как правило, первые команды подпрограммы обработки сохраняют в стеке состояния всех остальных регистров процессора, поскольку они могут понадобиться самой подпрограмме и, следовательно, их содержимое к моменту завершения подпрограммы будет изменено. В Приложении рис.2 (а) показано, что при этом происходит. В данном случае пользовательская программа была прервана в тот момент, когда выполняла команду, хранящуюся по адресу N. Аппаратно в стек помещается содержимое счетчика команд, каким оно было в момент завершения выполнения этой команды — N+1, а в счетчик команд заносится начальный адрес подпрограммы обработки Y. Сама подпрограмма затем помещает в стек содержимое регистров процессора, в результате чего указатель стека смещается и после завершения сохранения регистров будет указывать на ячейку Т.
7. После этого подпрограмма приступает к собственно обработке прерывания Этот процесс, как правило, включает анализ состояния модуля ввода-вывода, вызвавшего прерывание, и прием или передачу порции данных Иногда в процессе обработки модулю посылаются другие команды или сообщения, в частности команды запуска следующего сеанса обмена, если передается большой блок данных.
8. После завершения обработки подпрограмма восстанавливает содержимое в регистрах, которое было сохранено в стеке в самом начале выполнения подпрограммы (Приложение рис.2 (б)), и только после этого выполняет последнюю команду — команду возврата из прерывания.
9. Выполнение команды возврата из прерывания сводится к восстановление из стека слова состояния программы PSW и счетчика команд. В результате состояние регистров процессора полностью восстанавливается в том виде, каким оно было в момент обнаружения прерывания.
Обращаю ваше внимание на то, что очень важно перед началом обработки прерывания сохранить всю информацию, необходимую для продолжения выполнения прерванной программы. Прерывание может возникнуть в любой момент, и подпрограмме обработки прерывания абсолютно неизвестно, какую именно программу она прервала, какие регистры процессора эта программа использовала, а какие нет. Надежное функционирование вычислительной системы, имеющей дело с прерываниями, может быть гарантировано только, если аппаратными и программными средствами предусмотрено полное сохранение состояния системы в момент прерывания и последуют — его восстановление.
Проектирование механизма обработки прерываний
При проектировании механизма обработки прерываний в конкретной вычислительной системе нужно решить два важных вопроса: как передать процессору информацию об источнике прерывания и как должен поступить процессор в случае, если одновременно возникают прерывания от нескольких источников.
Сначала рассмотрим проблему идентификации источника прерывания, в практике проектирования компьютерных систем применяется четыре варианта решения:
• включение в состав системной магистрали нескольких линий передачи сигналов прерывания;
• программный опрос;
• последовательное включение источников в цепь распространения сигнала предоставления прерывания (аппаратный опрос);
• арбитраж магистрали.
Естественно, самый простой подход — предоставить каждому потенциальному источнику отдельную линию передачи сигнала запроса прерывания. Но практически удается выделить для этой цели всего несколько линий, хотя потому что количество контактов микросхемы процессора ограничено. Следовательно, в чистом виде этот подход можно реализовать только в специализированных компьютерах с заранее заданным составом модулей ввода-вывода. Иногда поступают по-другому — разделяют потенциальные источники прерывай на ограниченное число групп, каждой из которых предоставляется своя линия распространения сигналов запроса прерываний. Но внутри группы в таком случае должен быть использован один из трех оставшихся подходов.
Один из таких подходов предполагает программный опрос источников - модулей ввода-вывода — при получении процессором сигнала запроса прерывания. Опрос выполняется в самом начале выполнения подпрограммы обработки прерывания, сразу же за сохранением состояния регистров процессор стеке. Для того чтобы такой опрос был возможен, в составе системной магистрали должна быть предусмотрена отдельная линия для передачи сигнала опроса (линия TESTI/0), а в наборе команд процессора — соответствующая команда, аргументом которой является адрес модуля ввода-вывода. При выполнении этой команды процессор формирует сигнал опроса на линии TESTI/O, сопровождая его кодом адреса модуля ввода-вывода на линиях адреса. Если опрашиваемый модуль действительно был источником прерывания, он выставляет сигнал подтверждения, который фиксируется в одном из битов слова состояния PSW. Следующая команда условного перехода анализирует этот бит и выполняет переход на ветвь обработки данного прерывания. Опрашивая по очереди все потенциальные источники прерывания, программа может таким образом найти, какой из них был инициатором данного прерывания. Другой вариант реализации этой идеи состоит в том, что в регистре состояния каждого модуля ввода-вывода предусматривается специальный бит, который устанавливается аппаратно, если данный модуль формирует сигнал прерывания. Опрашивая по очереди регистры состояния модулей, программа может выяснить, какой же из них послал сигнал запроса прерывания, и перейти на соответствующую ветвь. Недостаток метода программного опроса тот же, что и программно управляемого ввода-вывода, — процессор теряет время на опрос всех потенциальных источников прерываний.
Альтернативой программному опросу является аппаратный опрос, который реализуется последовательным включением источников в цепь распространения сигнала предоставления прерывания. При такой организации образуется цепочка источников — daisy chain, - в которой каждое звено (модуль ввода-вывода) пропускает дальше сформированный процессором сигнал предоставления прерывания, если сам он источником прерывания не является. Если же модуль ранее сформировал сигнал запроса прерывания, то, получив сигнал предоставления, он дальше его не пропускает, а выставляет собственный вектор прерывания — специфичный именно для данного устройства код — на линии данных магистрали. В результате процессор, опросив линии данных через некоторое время после формирования сигнала предоставления прерывания, получит информацию о том, кто же именно « осмелился его побеспокоить». Как правило, вектор прерывания содержит адрес подпрограммы обработки данного прерывания, но иногда это может быть просто уникальный идентификатор модуля. В любом случае полученный вектор прерывания несет процессору или программе информацию, достаточную для того, чтобы однозначно распознать источник прерывания, и соответственно на него реагировать. Прерывания, сопровождаемые передачей в том или ином виде уникального кода, идентифицирующего источник прерывания, принято называть векторными (vectored interrupt).
Существует и другой вариант реализации идеи векторного прерывания — с помощью арбитра магистрали. В этом случае прежде чем сформировать сигнал запроса прерывания, модуль ввода-вывода стремится захватить управление магистралью — стать задатчиком. Механизм арбитража магистрали, предоставляющий право стать задатчиком одному из конкурентов, если их окажется несколько. В его основе лежит та же идея последовательного соединения претендентов в цепочку. Получив от арбитра магистрали право быть задатчиком, модуль выставляет сигнал запроса прерывания и в ответ на сигнал предоставления прерывания от процессора выставляет код собственного вектора прерывания на линии данных.
Описанные выше методы не только позволяют выяснить, какой же из модулей ввода-вывода является "возмутителем спокойствия", но и ранжировать их по приоритету в случае, если несколько модулей одновременно попытаются вызвать прерывание. Если в вычислительной системе используется несколько линий запроса прерывания, то каждая из них может иметь свой приоритет, и в аппаратуре процессора предусматривается, что предпочтение будет отдано источнику прерывания, подключенному к линии с более высоким приоритетом. При программном опросе приоритет источников закладывается в последовательность опроса потенциальных источников — те из них, которые имеют более высокий приоритет, опрашиваются раньше менее привилегированных. Программный подход фактически перекладывает ответственность за назначение приоритетов на плечи системного программиста. Если используется метод аппаратного опроса источников, то приоритет зависит от места каждого из них в цепочке распространения сигнала предоставления прерывания — чем ближе модуль к процессору (который в данном случае является "боссом"), тем выше его приоритет (в компьютерном мире многое устроено так же, как у людей). Об обсуждения концепций организации ввода-вывода перейдем к рассмотрению двух конкретных примеров.
Контроллер прерываний Intel 82C59A
Микропроцессор Intel 80386 поддерживает работу с одной линией запроса прерывания (INTR) и одной линией сигнала предоставления прерывания (INTA). Для того чтобы процессор Intel 80386 мог обслуживать множество внешних устройств, к нему подключается внешний контроллер прерываний Intel 82C59A, к которому, в свою очередь, подключаются модули управления внешними устройствами. Контролер Intel 82С59А в данном случае играет роль арбитра прерываний.
В Приложении рис.3 представлена схема подключения множества модулей ввода-вывода к процессору Intel 803S6 через контроллер прерываний Intel 82С59А Отдельный контроллер Intel 82C59A может обслуживать до восьми модулей ввода-вывода. Если в компьютере предполагается использовать более восьми модулей, контроллеры включаются по каскадной схеме и в результате могут обслуживать до 64 модулей.
Единственная задача контроллера Intel 82C59A — обслуживание прерываний. Он получает сигналы запроса прерываний от подключенных модулей ввода-вывода, анализирует, какое из устройств, одновременно приславших запрос. имеет наивысший приоритет, и передает сигнал запроса прерывания на линию INTR, подключенную непосредственно к процессору. Процессор отвечает сигналом предоставления прерывания на линии INTA. В ответ контроллер помещает вектор соответствующего прерывания на линии данных. После этого процессор начинает выполнять процедуру обработки прерывания и работает напрямую с модулями ввода-вывода — считывает или передает данные.
Режим работы контроллера Intel 82C59A, а именно схема назначения приоритетов, программируется процессором. Существуют три варианта режима назначения приоритетов.
• Вложенный (fully nested). Приоритет запроса определяется тем, к какому контакту контроллера подключен сигнал. Тот из них, который подключен ко входу IRO, имеет приоритет 0, а подключенный ко входу IR7 — приоритет 7.
• Циклический (rotating). В некоторых приложениях нескольким внешним устройствам (группе) назначается один и тот же приоритет. В этом режиме после получения сигнала предоставления прерывания модуль, инициировавший прерывание, получает самый низкий приоритет в группе.
• Маскируемый (special mask). В этом режиме процессор может заблокировать прерывания от выбранных устройств, передав специальный код маски.
Программируемый контроллер интерфейса Intel 82C55A
Программируемый контроллер интерфейса Intel 82C55A может служить прекрасным примером модуля, используемого как в режиме программируемого ввода-вывода, так и в режиме ввода-вывода по прерыванию. Модуль выполнен в виде БИС в корпусе с 40 выводами и предназначен для работы с микропроцессором Intel 80386. В Приложении рис.4 представлена блок-схема контроллера и назначение выводов.
Внешнее устройство подключается к контроллеру через 24 линии связи, показанные на схеме справа. Сигналы на этих линиях определяются состоянием внутренних регистров контроллера, которые программируются процессором Intel 80386. Процессор может задавать через регистры управления разные режимы работы контроллера. 24 выходных линии разбиты на три группы по 8 линий в каждой — группы А, В и С. Каждая группа может функционировать как отдельный 8-разрядный порт ввода-вывода. Кроме того, группа С разбита на две подгруппы — СА и СВ, — которые можно использовать в сочетании с портами А и В соответственно. Если контроллер будет сконфигурирован таким способом, то подгруппы са и СВ смогут передавать (принимать) сигналы управления и состояния, а порты — сигналы данных на ввод и на вывод.
Слева на схеме представлены линии интерфейса, по которым контроллер обменивается сигналами с процессором через системную магистраль. В их числе входят 8 двунаправленных линий передачи данных (линии DO-D7), по которым передаются (принимаются) данные в порты ввода-вывода и в регистры управления. Обмен данными выполняется, когда установлен сигнал CHIP SELECT и один из сигналов READ или WRITE. Сигнал RESET устанавливает контроллер в исходное состояние.
Загружая тот или иной код в регистр управления, процессор способен задавать режим работы контроллера и конфигурацию порта С. В режиме 0 три группы выходных линий контроллера работают как три независимых 8-разрядных порта, каждый из которых может быть сконфигурирован либо как порт ввода, либо как порт вывода. Другой вариант конфигурации — группы линий А и В работают как порты ввода-вывода, а группа линий С делится на две, одна из которых становится группой передачи сигналов управления, поддерживающих порт А, а другая — порт В. Сигналы управления предназначены для выполнения двух основных процедур — обмена сигналами при установлении связи (процедура «handshaking» — рукопожатие) и формирования сигнала запроса прерывания. В первом случае реализуется самый простой алгоритм синхронизации. Одна управляющая линия используется для передачи сигнала готовности DATA READY,который означает, что данные выставлены на внешние линии данных. Другая линия используется для приема сигнала подтверждения ACKNOWLEDGE, который является индикатором того, что выставленные ранее данные считаны и соответствующие сигналы можно сбросить. Еще одна линия предназначена для передачи сигнала запроса прерывания INTERRUPT REQUEST и подключается непосредственно к соответствующей линии системной магистрали.
Поскольку режим работы контроллера Intel 82C55A программируется извне, его можно настроить на работу с самыми разными несложными внешними устройствами. В Приложении рис.5 показано, как с помощью этого контроллера можно реализовать управление клавиатурой и дисплеем видеотерминала. Клавиатура рассматривается как устройство ввода, передающее 8-разрядный код. Два разряда, shift и CONTROL, имеют особое значение для программы обслуживания клавиатуры, которая выполняется процессором. Однако особая интерпретация этих ; разрядов никак не затрагивает контроллер — это не его заботы. Он передает эти разряды дальше на линии данных системной магистрали точно так же, как и шесть остальных. Для синхронизации обмена с клавиатурой выделены две сигнальных линии — DATA READY И ACKNOWLEDGE.
Дисплей также подключен к контроллеру через 8-разрядный порт данных. Набор управляющих линий включает, помимо DATA READY и ACKNOWLEDGE, еще две дополнительных.
Заключение
Приоритет ВУ в микроЭВМ с программным опросом готовности внешнего устройства однозначно определяется порядком их опроса в подпрограмме обработки прерываний. Чем раньше в подпрограмме опрашивается готовность ВУ, тем меньше время реакции на его запрос и выше приоритет. Необходимость проверки готовности всех внешних устройств существенно увеличивает время обслуживания тех ВУ, которые опрашиваются последними. Это является основным недостатком рассматриваемого способа организации прерываний. Поэтому обслуживание прерываний с опросом готовности ВУ используется только в тех случаях, когда отсутствуют жесткие требования на время обработки сигналов прерывания внешних устройств. Организация системы прерываний в микроЭВМ с использованием векторов прерываний позволяет устранить указанный недостаток. При такой организации системы прерываний ВУ, запросившее обслуживания, само идентифицирует себя с помощью вектора прерывания - адреса ячейки основной памяти микроЭВМ, в которой хранится либо первая команда подпрограммы обслуживания прерывания данного ВУ, либо адрес начала такой подпрограммы. Таким образом, процессор, получив вектор прерывания, сразу переключается на выполнение требуемой подпрограммы обработки прерывания. В микроЭВМ с векторной системой прерывания каждое ВУ должно иметь собственную подпрограмму обработки прерывания.
Различают векторные системы с интерфейсным и внеинтерфейсным вектором. В первом случае вектор прерывания формирует контроллер ВУ, запросившего обслуживания, во втором - контроллер прерываний, общий для всех устройств, работающих в режиме прерываний (IBM-совместимые персональные компьютеры).
Аппаратный опрос готовности ВУ производится гораздо быстрее, нежели программный. Но если обслуживания запросили одновременно два или более ВУ, обслуживание менее приоритетных ВУ будет отложено на время обслуживания более приоритетных, как и в системе прерывания с программным опросом. Рассмотренная векторная система прерываний практически полностью соответствует системе прерываний, реализованной в микроЭВМ "Электроника-60". Восьмиразрядный вектор прерывания в "Электронике-60" указывает одну из ячеек памяти с адресами от 0 до (376)8, в которой размещается адрес начала подпрограммы обработки прерывания.
В следующей за указанной вектором прерывания ячейке памяти хранится новое содержимое регистра состояния процессора, загружаемое в него при переключении на подпрограмму обработки прерывания. Один из бит нового содержимого регистра состояния процессора запрещает или разрешает прерывания от других ВУ, что позволяет ВУ с более высоким приоритетом прерывать подпрограммы обслуживания ВУ с меньшим приоритетом и наоборот. Векторная система с внеинтерфейсным вектором прерывания используется в IBM-совместимых персональных компьютерах. В этих компьютерах контроллеры внешних устройств не имеют регистров для хранения векторов прерывания, а для идентификации устройств, запросивших обслуживания, используется общий для всех ВУ контроллер прерываний
Приложение
Алгоритм обработки прерывания.
Изменение состояния памяти и регистров процессора в процессе обработки прерывания: а — вход в подпрограмму обработки прерывания; б — завершение подпрограммы обработки прерывания.
Схема подключения контроллеров прерываний INTEL 82C59A к микропроцессору INTEL 80386
Программируемый контроллер интерфейса INTEL82C55A: а)блок-схема; б) назначение выводов микросхем.
Подключение клавиатуры и дисплея контроллеру интерфейса INTEL 82C55A.
Список литературы
1. Духнич Е.И., Андреев А.Е., Организация вычислительных машин и систем:Учебн. пособие/ВолгГТУ, Волгоград, 2003.-80с.
2. Луценко Е.В. «Вычислительные машины» - Краснодар. 2000.
3. Тертышный В.Т. «История персонального компьютера» - М. 2002.
4. Уильям Столлингс «Структурная организация и архитектура компьютерных систем». - М 2002г.
5. www.intuit.ru – “Интернет Университет”, портал дистанционного образования.
... использоваться совместно (разделяемо) с прерываниями, полученными другими способами (по линиям запросов от устройств PCI и от других устройств системной платы). 6. Режим прямого доступа к памяти Мы уже знаем, что в вычислительных системах используется два способа организации обмена данными между внешним устройством и памятью. Первый способ - программируемый ввод-вывод (PIO). В этом режиме ...
... , региональных задач. 3).Средние ЭВМ – машины очень широкого распространения. 4).Малые ЭВМ. 5).ПЭВМ (персональные ЭВМ). 6).Микро ЭВМ и микропроцессоры. 7).Сети ЭВМ.Общие принципы построения современных ЭВМ. Основным принципом построения ЭВМ является программное управление, в основе которого лежит представление алгоритма решения любой задачи в виде программы вычислений. Алгоритм – это ...
... ВУ различных типов, назначения и количества. Всю совокупность современных ВУ можно классифицировать по двум основным группам (Рис.3): внешняя память и устройства ввода/вывода, наиболее типичные представители которых могут быть охарактеризованы следующим образом. Внешние устройства (ВУ) ЭВМ - периферия Внешние устройства (ВУ) ЭВМ-периферия Внешняя память (ВП) Устройства ввода/ ...
... , и мощных систем для разработки нового программного обеспечения. Персональные компьютеры являются наиболее широко используемым видом компьютеров, их мощность постоянно увеличивается, а область применения расширяется. Персональные компьютеры могут объединяться в сети, что позволяет десяткам и сотням пользователей легко обмениваться информацией и одновременно получать доступ к общим базам данных. ...
0 комментариев