Программно — управляемый обмен данными
Так как скорость работы периферийного оборудования обычно ниже скорости работы процессора, чтобы осуществить операцию обмена процессор должен убедиться, что устройство готово к выполнению операции обмена. Сделать это можно следующим образом. Контроллер устройства, допускающего программно — управляемый обмен с процессором подключается как минимум к двум портам. Через один из них производится обмен данными (чтение и запись). Этот порт мы будем называть регистром данных. Другой порт служит для вывода приказов в устройство и ввода информации о его состоянии. Этот порт будем называть регистром команд и состояний. Конечно, реальные устройства могут иметь значительно большее число программно — доступных регистров (например, контроллер накопителя на магнитных дисках может иметь несколько десятков регистров), но, как минимум, их два. Порты, занятые одним устройством, имеют обычно соседние адреса.
Обычно один из битов регистра команд и состояний используется для индикации готовности устройства. Он устанавливается, если устройство готово к обмену и сбрасывается в обратном случае. Положение бита готовности обычно стараются выбирать так, чтобы он совпадал со знаковым битом чисел. Тогда проверка готовности может осуществляться так. Центральный процессор cчитывает содержимое регистра команд и состояний и сравнивает полученное число с нулем. Если бит готовности не установлен, прочитанное число будет положительным, иначе отрицательным. Проверка готовности может производиться и более сложным способом, например, сравнением группы битов с некоторой заданной комбинацией.
Теперь можно описать алгоритм программно — управляемого обмена данными между процессором и внешним устройством.
1.Запустить внешнее устройство. Для этого необходимо вывести в регистр команд и состояний контроллера устройства команду запуска.
2.Проверить, готово устройство или нет. Для этого необходимо ввести содержимое регистра команд и состояний и проверить бит готовности. При неготовности устройства вернуться к шагу 2.
3.Устройство готово. Можно читать или писать данные.
Алгоритм программного обмена данными очень прост, реализуется небольшим числом команд. На ЭВМ с процессором 8086 и тактовой частотой 4 Мгц фрагмент программы, реализующий пункты 2 и 3 этого алгоритма, состоит из четырех команд, время его выполнения (время ввода одного байта) составляет приблизительно 10 МКс. Максимальная скорость обмена, таким образом, может достигать 100 Кбайт/с. Этот режим обеспечивает очень высокую скорость приема (или передачи) информации, т.к. после регистрации готовности внешнего устройства немедленно выполняется команда пересылки данных. Поэтому этот способ обмена применяется тогда, когда необходимо осуществлять ввод — вывод небольших порций данных и делать это очень быстро. Необходимо также отметить, что реализация этого способа обмена требует минимальных аппаратных затрат.
Однако этому методу обмена данными присущи существенные недостатки. Один из них состоит в том, что в процессе ожидания готовности процессор не может выполнять никакой полезной работы. Если устройство работает очень медленно, огромное количество процессорного времени расходуется бесполезно на выполнение цикла ожидания готовности. В качестве примера можно привести клавиатуру. Высококлассная машинистка способна вводить до 180 символов в минуту, т.е. до 3 символов в секунду, максимальная скорость ввода составляет 4 — 5 нажатий в секунду. Большую скорость ввода человек реализовать не способен из-за “неповоротливости” своих пальцев. При скорости 5 нажатий в секунду между отдельными нажатиями проходит 0.2 с. Даже такая “медленная” машина как IBM XT с процессором 8086 и тактовой частотой 4 МГц способна выполнить за это время десятки тысяч машинных операций. Хотя с точки зрения человека машинистка работает очень быстро, с точки зрения центрального процессора она “очень нетороплива”.
Другой существенный недостаток состоит в том, что использование такого способа обмена приводит к существенным сложностям при организации взаимодействия с несколькими устройствами одновременно. Ожидание (возможно бесплодное) готовности одного их устройств лишает процессор возможности опрашивать остальные. Конечно, в этом случае можно организовать последовательный (кольцевой) опрос источников (см. блок-схему на рис. 8), но это увеличит программные издержки и снизит скорость накопления информации.
Совместить работу нескольких медленных устройств с выполнением полезной вычислительной работы позволяет режим обмена с использованием прерываний.
Источник
Программный обмен. Вывод информации. Аппаратное и программное обеспечение
Программный ввод-вывод – это наиболее простой способ обмена данными между процессором и внешним устройством, часто называемый также вводом/выводом с опросом.
Ввод/вывод происходит под полным контролем центрального процессора и реализуется специальной процедурой ввода/вывода. В этой процедуре ЦП с помощью команды ввода/вывода сообщает модулю ввода/вывода, а через него и внешнему устройству о предстоящей операции. Адрес модуля и ВУ, к которому производится обращение, указывается в адресной части команды ввода или вывода. Модуль исполняет затребованное действие, после чего устанавливает в единицу соответствующий бит в своем регистре состояния. Ничего другого, чтобы уведомить ЦП, модуль не предпринимает. Следовательно, для определения момента завершения операции или пересылки очередного элемента блока данных процессор должен периодически опрашивать и анализировать содержимое регистра состояния МВВ.
Иллюстрация процедуры программно управляемого ввода блока данных с устройства ввода приведена на рис. данные читаются пословно. Для каждого читаемого слова ЦП должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных МВВ, то есть доступно для считывания.
Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного МВВ и конкретного ВУ. Существуют четыре типа команд В/ВЫВ, которые может получить МВВ: управление, проверка, чтение и запись.
Команды управления используются для активизации ВУ и указания требуемой операции. Например, в устройство памяти на магнитной ленте может быть выдана команда перемотки или продвижения на одну запись. Для каждого типа ВУ характерны специфичные для него команды управления.
Команда проверки применяется для проверки различных ситуаций- возникающих в МВВ и ВУ в процессе ввода/вывода. С помощью таких команд ЦП способен выяснить, включено ли ВУ, готово ли оно к работе, завершена ли последняя операция ввода/вывода и не возникли ли в ходе ее выполнения какие-либо ошибки. Действие команды сводится к установке или сбросу соответствующих разрядов регистра состояния МВВ.
Команда чтения побуждает модуль получить элемент данных из ВУ и занести его в регистр данных (РД). ЦП может получить этот элемент данных, запросив МВВ поместить его на шину данных.
Команда записи заставляет модуль принять элемент данных (байт или слово) с шины данных и переслать его в РД с последующей передачей в ВУ.
Если к МВВ подключено несколько ВУ, то в процедуре ввода/вывода нужно производить циклический опрос всех устройств, с которыми в данный момент прох изводятся операции В/ВЫВ.
Из блок-схемы (см. рис. 8.6) явно виден основной недостаток программно управляемого В/ВЫВ — неэффективное использование процессора из-за ожидания готовности очередной порции информации, в течение которого никаких иных пох лезных действий ЦП не выполняет. Кроме того, пересылка даже одного слова трех бует выполнения нескольких команд. ЦП должен тратить время на анализ битов состояния МВВ, запись в МВВ битов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно сках зывается на эффективности ввода/вывода.
Главным аргументом в пользу программно управляемого ввода/вывода являх ется простота МВВ, поскольку основные функции по управлению В/ВЫВ берет на себя процессор. При одновременной работе с несколькими ВУ приоритет устройств легко изменить программными средствами (последовательностью опроса). Наконец, подключение к СВВ новых внешних устройств или
Известны два типа программно-управляемой передачи данных: синхронная, асинхронная.
Синхронная передача данныххарактерна для периферийных устройств, для которых известны временные соотношения. При этом типе передачи устройство ввода-вывода должно быть готово к приему или передаче данных за время, равное времени выполнения определенной команды процессора. Синхронная передача реализуется при минимальных затратах технических и программных средств.
Асинхронная передача данных, иногда называемая обменом посредством “рукопожатия”, широко используется в микроЭВМ. При такой передаче данных ЭВМ перед выполнением операции ввода-вывода проверяет состояние периферийного устройства. Блок-схема алгоритма асинхронного программного обмена (фрагмента некоторой программы) приведена на рис. 16.
Обычно при обмене необходимо:
- проверить состояние устройства (чтение регистра состояния (PC));
- активизировать устройство, если последнее готово к обмену;
- передать данные (чтение регистра данных (РД), запись РД);
- дезактивировать устройство.
Асинхронная передача является идеальной в смысле согласования временных различий между периферийными устройствами и процессором. Недостаток ее в том, что процессор вынужден ожидать, пока периферийное устройство не будет готово к обмену. Это приводит не только к непроизводительным затратам времени МП (при наличии длительных задержек), но и во многих случаях является просто недопустимым. Например, в процессах управления в этом случае возникает необходимость сохранения уровня сигналов управления на время ожидания передачи. Методом, позволяющим устранить подобные трудности, является передача данных с прерыванием программы.
Рис. 16. Блок-схема алгоритма асинхронного программного обмена
Источник
Способы обмена данными
Основные способы обмена данными.
Между микропроцессорной системой (МС) и внешним устройством (ВУ) происходит обмен полезной информацией в виде слов данных (
) и служебной информацией в виде управляющих слов (
) и слов состояния (
). Служебная информация может занимать значительный объем. Поэтому в общем случае для обмена информацией отводится ряд портов ввода/вывода (ВВ), образующих пространство доступа к внешнему устройству (ВУ). Ввод и вывод всегда рассматриваются по отношению к микропроцессору. Обмен информацией между процессором и ВУ осуществляется по определенным правилам. Совокупность правил, называемых протоколом обмена, является основой для составления драйвера ВУ. Драйвер представляет собой набор подпрограмм, обслуживающих обмен ВУ с микропроцессором.
Существуют три способа обмена данными: программно управляемый обмен, обмен с прерыванием программы и обмен по каналу прямого доступа к памяти. Рассмотрим в общих чертах особенности каждого способа обмена.
Программно–управляемый обмен данными.
Обмен инициируется и выполняется процессором с помощью:
● специальных команд ввода–вывода,
при этом в формате команды должен содержаться код выполняемой операции и номер выбираемого порта ВУ;
● команд обращения к
ОЗУ, при этом каждый порт ВУ рассматривается как адрес, отличный от адресов других ячеек.
С точки зрения использования вспомогательных сигналов различают прямой и условный обмен.
Прямым, или безусловным,
вводом–выводом называется такая процедура, при которой для активизации обмена не требуется никаких условий и вспомогательных сигналов. Прямой ввод/вывод возможен только с внешними устройствами, которые всегда готовы к обмену. Он является составной частью более сложных протоколов обмена.
вводом–выводом называется такая процедура, при которой активизация обмена возможна при выполнении условия готовности к обмену ВУ.
Большинство ВУ работает асинхронно по отношению к процессору. При асинхронном обмене информацией важной задачей является проверка готовности ВУ. Поэтому ВУ должно иметь аппаратные средства для выработки информации о своем внутреннем состоянии. Микропроцессор считывает эту информацию, передает ее в аккумулятор, анализирует и на основе анализа принимает решение о готовности ВУ. При отсутствии готовности ВУ процессор переходит в состояние ожидания. Если обнаружено состояние готовности, то выполняются операции передачи данных. Таким способом достигается сопряжение во времени работы процессора и таких устройств, которые по быстродействию уступают процессору.
Таким образом, условный ввод/вывод применяется для обмена с низкоскоростными внешними устройствами и сопровождается сигналом готовности ГтВУ, генерируемым ВУ. Сигнал готовности ГтВУ вводится в процессор в составе слова состояния и информирует его о готовности ВУ к обмену. После завершения операции обмена сигнал готовности ГтВУ должен быть снят и выставлен перед новой операцией. Для этого процессор информирует ВУ об окончании операции с помощью сигнала подтверждения Пт.
На рис. 3.2.1 приведены диаграммы условного ввода/вывода с помощью контроллера обмена. В этом случае могут быть также использованы сигналы готовности Гт контроллера и подтверждения ПтВУ внешнего устройства.
При вводе (рис. 3.2.1, а) процессы протекают в следующей последовательности:
● если сигнал подтверждения микропроцессора (контроллера) Пт = 0, ВУ выставляет на шине ШВУ новые данные и сигнал готовности ГтВУ = 1;
● так как ГтВУ = 1, процессор дает команду на ввод данных, и данные по ШД поступают в аккумулятор;
● процессор через контроллер выставляет сигнал подтверждения Пт = 1, извещая ВУ о том, что данные введены;
● при Пт = 1 ВУ снимает сигнал готовности (ГтВУ =0);
● при ГтВУ = 0 процессор снимает сигнал подтверждения (Пт = 0).
При выводе данных (рис. 3.2.1, б) процессы протекают в следующей последовательности:
● если сигнал готовности контроллера Гт = 0, ВУ осуществляет сброс сигнала подтверждения (ПтВУ = 0), после чего процессор на ШД выставляет новые данные;
● при сигнале подтверждения ПтВУ = 0 контроллер устанавливает сигнал готовности Гт = 1;
● данные по ШВУ выводятся в ВУ;
● при Гт = 1 ВУ устанавливает сигнал подтверждения (ПтВУ =1);
● при ПтВУ = 1 процессор снимает ранее установленный сигнал готовности (Гт = 0).
Рассмотренный протокол обмена называется квитированием.
Возможны два вида условного обмена: с занятием цикла и совмещенного. При обмене с занятием цикла (рис. 3.2.2, а) в случае неготовности ВУ микропроцессор находится в режиме ожидания; при совмещенном обмене (рис. 3.2.2, б) после опроса ВУ микропроцессор возвращается к выполнению основной программы.
По способу кодирования различают обмен данными в параллельном и последовательном коде.
Необходимость передачи данных в последовательном коде обусловлена двумя факторами:
● наличием устройства (например, клавиатура, дисплей, телетайп), принцип работы которого базируется на использовании последовательного кода;
● удалением внешнего устройства от процессора на значительное расстояние. Дело в том, между отдельными проводниками соединительной линии между источником и приемником информации существует емкостная связь. С увеличением длины соединительной линии растет емкость между ее отдельными проводниками. Поэтому при передаче импульсных сигналов по одному проводнику в других проводниках наводятся помехи, уровень которых может быть соизмеримым с уровнем полезных сигналов.
В этих условиях обмен информацией между процессором и внешним устройством должен сопровождаться преобразованием параллельного кода в последовательный код при выводе данных и последовательного кода в параллельный — при вводе данных. Указанные функции возлагаются на контроллер обмена, который обычно выполняется в виде интегральной схемы.
К достоинствам программно–управляемого обмена данных относится его простота, к недостаткам — бесполезная трата времени на ожидание готовности ВУ и невозможность обеспечения своевременной реакции на внезапно возникшую потребность ВУ в обмене информацией.
Обмен с прерыванием программы.
При этом способе инициатором обмена является внешнее устройство, которое подает специальный сигнал ЗАПРОС ПРЕРЫВАНИЯ на соответствующий вход процессора. После выполнения текущей микрокоманды процессор прекращает выполнение основной программы, вырабатывает сигнал ПОДТВЕРЖДЕНИЕ ПРЕРЫВАНИЯ и переходит к подпрограмме обработки прерывания, расположенной в фиксированной области памяти. После выполнения этой подпрограммы происходит возврат к основной программе.
Обмен данными с помощью прямого доступа к памяти.
По этому способу используется канал прямого доступа к памяти (ПДП), по которому массивы данных передаются непосредственно между внешним устройством (ВУ) и ОЗУ, минуя процессор. Это позволяет достичь наибольшей скорости передачи, но требует определенных аппаратных затрат для организации канала. Аналогично случаю обмена по прерыванию ВУ посылает в процессор сигнал запроса на прямой доступ. После отправления сигнала подтверждения процессор прекращает работу по выполнению текущей программы, отключает свои буферные регистры от шин адреса и данных, а также прекращает выработку управляющих сигналов. Таким образом, процессор как бы замирает до окончания процедуры ПДП, чем этот режим и отличается от режима обработки прерывания. Все функции адресации, передачи данных и управления выполняет контроллер ПДП, содержащий счетчик адреса, счетчик числа слов в массиве, а также ряд триггеров и логических схем, которые внесены в блок управления.
До начала работы канала ПДП в счетчик адреса заносится адрес ячейки ОЗУ, с которой начинается массив данных, и в счетчик слов (в прямом или дополнительном коде) — число слов в массиве. При передаче каждого слова содержимое этих счетчиков изменяется на единицу и обмен данными производится автоматически, пока не будет передан весь массив слов.
В микропроцессорных системах встроены (или предусматриваются) интерфейсные схемы для организации ввода/вывода.
Источник