Прямой доступ к памяти

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

Опрос устройств и прерывания. Исключительные ситуации и системные вызовы

Рассмотрим модель для вывода информации.

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

2. Процессор записывает код команды вывода в порт регистра управления.

3. Процессор записывает данные в порт регистра входных данных.

4. Процессор устанавливает бит готовности команды. В следующих шагах процессор не задействован.

5. Когда контроллер замечает, что бит готовности команды установлен, он устанавливает бит занятости.

6. Контроллер анализирует код команды в регистре управления и обнаруживает, что это команда вывода. Он берет данные из регистра входных данных и инициирует выполнение команды.

7. После завершения операции контроллер обнуляет бит готовности команды.

8. При успешном завершении операции контроллер обнуляет бит ошибки в регистре состояния, при неудачном завершении команды – устанавливает его.

9. Контроллер сбрасывает бит занятости.

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

На первом шаге (и, возможно, после шага 4) процессор ожидает освобождения устройства, непрерывно опрашивая значение бита занятости.

Такой способ взаимодействия процессора и контроллера получил название polling (способ опроса устройств).

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

Технический механизм, который позволяет внешним устройствам оповещать процессор о завершении команды вывода или команды ввода, получил название механизма прерываний.

Для реализации механизма прерываний необходимо к имеющимся шинам локальной магистрали добавить еще одну линию, соединяющую процессор и устройства ввода-вывода – линию прерываний.

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

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

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

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

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

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

Каждому устройству присваивается свой номер прерывания.

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

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

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

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

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

Менее приоритетное прерывание при этом не пропадает, о нем процессору будет доложено после обработки более приоритетного прерывания.

Для внешних прерываний характерны следующие особенности.

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

Исключительные ситуации. К их числу относятся ситуации переполнения, деления на ноль, обращения к отсутствующей странице памяти и т. д. Для исключительных ситуаций характерно следующее.

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

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

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

(Direct Memory Access – DMA)

Запись или чтение большого количества информации из адресного пространства ввода-вывода (например, с диска) приводят к большому количеству операций ввода-вывода, которые должен выполнять процессор.

Для освобождения процессора от операций последовательного вывода данных из оперативной памяти или последовательного ввода в нее был разработан механизм прямого доступа внешних устройств к памяти – ПДП или Direct Memory Access – DMA.

Рассмотрим, как работает этот механизм.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: