Устройство вывода обнаруживает, что семафор установлен и принимает данные из буфера.
Низкий уровень синхроимпульса -ACK X сбрасывает семафор, указывая тем самым, что данные приняты и буфер пуст.
МикроЭВМ обнаруживает, что семафор сброшен и, следовательно, данные приняты.
Через некоторое время микроЭВМ выбирает новые данные и разрешает ШД, чтобы осуществить их вывод.
МикроЭВМ устанавливает семафор, чтобы указать ВУ, что буфер полон.
МикроЭВМ выводит данные в буфер из аккумулятора (или другого внутреннего регистра).
Этот процесс повторяется, начиная с шага 1.
Из рассмотренных временных диаграмм ясно, что семафор синхронизирует передачу данных между микроЭВМ и ВУ; каждое из этих устройств знает, что делает другое. На рис. 34 устройство ввода (источник) не вводит новые данные в буфер до тех пор. пока сброшен семафор. МикроЭВМ (получатель) не принимает данные из буфера до тех пор, пока семафор не будет установлен. На рис. 35 микроЭВМ (источник) не выводит новые данные в буфер, пока сброшен семафор. Устройство вывода (получатель) не принимает данные, пока семафор не установлен. Очевидно, что только источник может установить семафор, и только получатель может его сбросить, но оба они могут проверить его.
В интегральных схемах, реализующих стробируемый ввод-вывод, выходной сигнал семафора представляется либо как разряд внутреннего регистра состояния, содержимое которого вводится и тестируется микроЭВМ, либо как сигнал, подаваемый на внешний вывод, который подсоединяется к ВУ. Программируемый параллельный интерфейс представляет собой превосходный пример для проверки указанных выше идей.
Рис. 36. Альтернативная блок-схема |
Блок-схема и временные диаграммы для конкретных интегральных схем могут отличаться от тех, что показаны на рис. 33 - 35. Альтернативная блок-схема показана на рис.36.
Отметим, что теперь данные в буфере изменяются перед установкой семафора. Такая последовательность событий является более благоразумной как с аппаратной, так и с программной стороны. Однако, при использовании аппаратных средств, таких как ИС 8155,8156 и 8255, интервал между изменением данных в буфере и установкой семафора может быть настолько мал, что любой шаг может быть первым. Применительно к рис. 36 шаги (2) и (3) при рассмотрении условного ввода должны быть переставлены, как и шаги (5) и (6) при рассмотрении условного вывода.
Выбор метода ввода-вывода
При построении систем условного ввода-вывода необходимо решить ряд вопросов, связанных с выбором метода ввода-вывода, а именно:
· что лучше использовать, флаг или семафор;
· если необходим флаг, то кто, источник или получатель, должен проверять выход флага;
· кто из участников обмена, источник или получатель, тратить слишком много времени в цикле проверки;
· может ли использование механизма прерывания улучшить характеристики системы.
Чтобы ответить на эти вопросы, рассмотрим общую блок-схему условного ввода-вывода с использованием семафора, представленную на рис. 37.
Рис. 37. Обобщённая блок-схема условного ввода-вывода с семафором |
В эту блок-схему добавлены блоки обработки данных как на стороне источника, так и на стороне получателя. Эти блоки могут включать в себя, например, арифметические и логические операции, сохранение данных в памяти, извлечение данных из памяти и тестовые операции с командными словами.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.