Программно - управляемый обмен данными

Так как скорость работы периферийного оборудования обычно ниже скорости работы процессора, чтобы осуществить операцию обмена процессор должен убедиться, что устройство готово к выполнению операции обмена. Сделать это можно следующим образом. Контроллер устройства, допускающего программно - управляемый обмен с процессором подключается как минимум к двум портам. Через один из них производится обмен данными (чтение и запись). Этот порт мы будем называть регистром данных. Другой порт служит для вывода приказов в устройство и ввода информации о его состоянии. Этот порт будем называть регистром команд и состояний. Конечно, реальные устройства могут иметь значительно большее число программно - доступных регистров (например, контроллер накопителя на магнитных дисках может иметь несколько десятков регистров), но, как минимум, их два. Порты, занятые одним устройством, имеют обычно соседние адреса.

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

Теперь можно описать алгоритм программно - управляемого обмена данными между процессором и внешним устройством.

1. Запустить внешнее устройство. Для этого необходимо вывести в регистр команд и состояний контроллера устройства команду запуска.

2. Проверить, готово устройство или нет. Для этого необходимо ввести содержимое регистра команд и состояний и проверить бит готовности. При неготовности устройства вернуться к шагу 2.

3. Устройство готово. Можно читать или писать данные.

Алгоритм программного обмена данными очень прост, реализуется небольшим числом команд. На ЭВМ с процессором 8086 и тактовой частотой 4 Мгц фрагмент программы, реализующий пункты 2 и 3 этого алгоритма, состоит из четырех команд, время его выполнения (время ввода одного байта) составляет приблизительно 10 МКс. Максимальная скорость обмена, таким образом, может достигать 100 Кбайт/с. Этот режим обеспечивает очень высокую скорость приема (или передачи) информации, т.к. после регистрации готовности внешнего устройства немедленно выполняется команда пересылки данных. Поэтому этот способ обмена применяется тогда, когда необходимо осуществлять ввод - вывод небольших порций данных и делать это очень быстро. Необходимо также отметить, что реализация этого способа обмена требует минимальных аппаратных затрат.

Однако этому методу обмена данными присущи существенные недостатки. Один из них состоит в том, что в процессе ожидания готовности процессор не может выполнять никакой полезной работы. Если устройство работает очень медленно, огромное количество процессорного времени расходуется бесполезно на выполнение цикла ожидания готовности. В качестве примера можно привести клавиатуру. Высококлассная машинистка способна вводить до 180 символов в минуту, т.е. до 3 символов в секунду, максимальная скорость ввода составляет 4 - 5 нажатий в секунду. Большую скорость ввода человек реализовать не способен из-за “неповоротливости” своих пальцев. При скорости 5 нажатий в секунду между отдельными нажатиями проходит 0.2 с. Даже такая “медленная” машина как IBM XT с процессором 8086 и тактовой частотой 4 МГц способна выполнить за это время десятки тысяч машинных операций. Хотя с точки зрения человека машинистка работает очень быстро, с точки зрения центрального процессора она “очень нетороплива”.

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

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


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



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