5. Организация системы ввода-вывода в эвм
5.1. Назначение и основные требования к системе ввода-вывода эвм
Назначение системы ввода-вывода– это обеспечение взаимодействия центральной части машины с внешней средой (пользователи, устройства, процессы), которое реализуется периферийными (или внешними) устройствами (ПУ или ВУ).
Связь процессора с периферийными устройствами осуществляется:
Через аккумулятор (регистр общего назначения).
Через оперативную память.
Оперативная память может непосредственно взаимодействовать с внешним устройством (ВУ) в режиме прямого доступа в память (ПДП).
Основные проблемы ввода-вывода.
Существует большое количество ВУ с различными параметрами:
По скорости передачи данных.
Формату передачи данных (устройства последовательного, параллельного представления информации и т.д.).
Различным размерам передаваемых данных (биты, байты, слова, блоки, секторы).
Количеству выполняемых функций (чтение, запись, перемотка, подсчет, измерение).
Различные скорости работы центральной части машины и ВУ (требуется многоуровневая буферная память).
Асинхронность работы центральной части машины и ВУ (согласование операций в устройствах).
Требования к системе ввода-вывода
Гарантировать эффективное согласование центральной части машины и ВУ с целью достижения максимальной производительности.
Обеспечение распределения ВУ между одновременно выполняемыми задачами в системе (большинство машин работают в многозадачных режимах).
Обеспечение управления каждым конкретным внешним устройством.
Обеспечение дружественного интерфейса с пользователем.
5.2. Архитектура систем ввода-вывода
Существует два основных способа организации системы ввода вывода.
Прямой ввод-вывод (рис. 5.1).
Косвенный (канальный) ввод-вывод (рис. 5.2).
1 ОП
Системная шина
ЦП
2
ОП Контроллер ВУ Контроллер ВУ
ВУ ВУ1 ВУ2 ВУ3
Механизм
Носитель информации
Рис.5.1
При прямом вводе-выводе работа внешних устройств и памяти управляется центральным процессором, и все они подключаются к одной системной шине, при этом в зависимости от варианта подключения памяти может быть: в случае 1 – одно пространство адресов памяти и портов внешних устройств, а в случае 2 – отдельные адреса обращения к памяти и внешним устройствам. Процесс взаимодействия внешних устройств и центральной части машины определяется интерфейсом ввода вывода, под которым понимается совокупность сигналов, линий связи и алгоритмов управления, обеспечивающих заданный протокол взаимодействия внешних устройств и процессора. Под протоколом понимается последовательность формирования прямых и квитирующих сигналов взаимодействия (ответный сигнал называется квитирующим).
ВУ1 ВУ2 ВУ3 ВУ4
Контроллер 1 Контроллер 2
Канал 1
(Мультиплексный)
ЦП ОП
Канал 2 Контроллер ВУ
(Селекторный)
Рис. 5.2
На рис 5.2 показан процесс ввода-вывода по способу, называемому канальным.
Каналы делятся на следующие.
Мультиплексные (обслуживают много ВУ, но медленных).
Селекторные (обслуживают мало ВУ, но быстродействующих).
Отличительная особенность канального ввода-вывода — процессор освобождается от управления внешними устройствами, функция процессора заключается в инициализации запуска канальных программ и завершении операции ввода-вывода, выполняемой с помощью канала, по соответствующему признаку из канала (по существу это многопроцессорная система).
Состав и сравнение функций контроллеров и каналов
Контроллер
В текущий момент времени он выполняет одну команду ввода-вывода, получаемую от процессора или канала, и одновременно обслуживает одно внешние устройство.
В его функции входит:
Опознание своего адреса выборки.
Подтверждение готовности внешних устройств.
Управление операцией во внешнем устройстве.
Согласование форматов данных.
Согласование скоростей передачи (буферизация).
Фиксация момента и характера операции ввода-вывода.
Контроллер должен содержать:
Селектор адреса (логическая схема, выдающая разрешающий сигнал на один адрес).
Регистры управления (содержит команду) и состояния. Состояния характеризуются следующими битами: DONE,BUSY,ERROR, часто применяются биты приоритета.
Буферные регистры данных, которые служат для согласования форматов и скоростей передачи.
Канал
Выполняет целую канальную программу из многих команд.
Допускает одновременное управление несколькими внешними устройствами.
В его функции входит:
Опознание своего адреса и подтверждения готовности.
Прием команд процессора, инициализирующих работу канала, и нахождения в памяти своей канальной программы.
Поиск контроллера и внешнего устройства, участвующего в операции, и проверки их готовности.
Запуск канальной программы и управление обменом.
Сообщение центрального процессора о завершении операции и всей программы.
Канал представляет собой специализированный процессор с расширенными управлениями, и ограниченный арифметическими возможностями.
studfiles.net
Организация и особенности использования однокристальных микроконтроллеров (продолжение) Организация ввода-вывода информации в мк 1816
Для связи МК 1816 с объектом управления, для ввода и вывода информации используется 27 линий. Эти линии сгруппированы в 3 порта по 8 линий в каждом и могут быть использованы для вывода, ввода или для вывода — ввода через двунаправленные линии. Кроме портов ввода — вывода, имеются 3 входные линии, сигналы на которых могут изменять ход программы, а именно:
линия ЗПР* используется для ввода в МК сигнала запроса прерывания от внешнего источника;
линия Т0 предназначена для ввода тестирующего сигнала от двоичного датчика объекта управления. Кроме того, под управлением программы (ENT0 CLC — команда «разрешение выдачи сигнала синхронизации») по этой линии из МК может выдаваться сигнал синхронизации;
линия Т1 используется для ввода тестирующего сигнала или в качестве входа счетчика событий (по команде STRT CNT — «запуск счетчика событий»).
Порты (или каналы) ввода — вывода Р1 и Р2.Каждая линия портов Р1 и Р2 может быть программным путем настроена на ввод, вывод или на работу с двунаправленной линией передачи. Специальная схемотехника цепей вывода портов Р1 и Р2, обеспечивающая квазидвунаправленную работу портов, несмотря на то, что выходы схем вывода статически заперты. На нижеследующем рисунке представлена схема одной линии (одного разряда) порта.
Каждый контакт ввода — вывода портов Р1 и Р2 является выходом с открытым стоком и входом с высоким импедансом, соответствующим по логическому уровню сигналу 1. Линия постоянно подключена к источнику электропитания +5 В через резистор большого сопротивления (50 КОм), чем обеспечивается для единичной стандартной ТТЛ-нагрузки достаточный ток, соответствующий логической 1. В то же время потенциал в линии может быть приближен к потенциалу «земли» (уровень логического 0) нулевым сигналом на выходе стандартной ТТЛ-схемы. Чем и обеспечивается возможность использовать статически запертую схему вывода как для ввода, так и для вывода информации.
При передаче на выход из МК уровня 1 по сигналу ЗАПИСЬ для ускорения переходного процесса от 0 к 1 на короткое время (0,5 мкс) открывается верхний МОП-транзистор с относительно низким сопротивлением (5 КОм). При передаче в линию уровня 0 открытым оказывается нижний МОП-транзистор выходной схемы с сопротивлением 3 КОм. Это сопртивление достаточно малое для того, чтобы обеспечить отвод тока из входной цепи ТТЛ-нагрузки.
Для того, чтобы настроить некоторую линию на режим ввода в МК, необходимо перед этим в буферный D-триггер этой линии записать 1. При этом нижний МОП-транзистор выходной схемы окажется закрытым и это обеспечит ТТЛ-источнику вводимого сигнала высокоимпедансную нагрузку. Сигнал системного сброса СБРОС* автоматически записывает во все линии портов Р1 и Р2 сигнал 1.
Квазидвунаправленная структура портов Р1 и Р2 для программиста МК 1816 специфична тем, что в процессе ввода информации выполняется операция логического И над вводимыми данными и текущими (последними выводимыми) данными. Для того, чтобы можно было осуществить ввод, программист должен следить за тем, чтобы в соответствующих линиях ввода сохранялось значение 1. Квазидвунаправленные буферные схемы портов Р1 и Р2 и команды логических операций ANL (логическое И аккумулятора с маской в регистре) и ORL (логическое ИЛИ аккумулятора с непосредственным операндом или с маской в регистре или в ячейке памяти) представляют программисту эффективное средство маскирования для обработки однобитовых входов и выходов в МК.
Порт ввода — вывода BUS (или DB).Порт ВUS представляет собой двунаправленный буфер с тремя состояниями и предназначен для побайтного ввода, вывода или ввода-вывода информации. Если порт ВUS используется для двунаправленных передач, то обмен информацией через него выполняется по командам МОVХ. При выводе байта генерируется стробирующий сигнал ЗП*, а выводимый байт фиксируется в буферном регистре. При вводе байта генерируется стробирующий сигнал ЧТ*, но вводимый байт в буферном регистре не фиксируется. В отсутствие передач порт ВUS по своим выходам находится в высокоимпедансном состоянии.
Если порт ВUS используется как однонаправленный, то вывод через него выполняется по команде OUTL, а ввод — по команде INS. Вводимые и выводимые через порт ВUS байтгы можно маскировать с помощью команд AND и OR, что позволяет выделять и обрабатывать в байте отдельный бит или группу бит. Для этого предварительно по команде «OUTL BUS,А» в порт ВUS из аккумулятора должна быть загружена маска. В МК-системах простой конфигурации, когда порт BUS не используется в качестве порта-расширителя системы, обмен выполняется по командам INS, OUTL и MOVX. Возможно попеременное использование команд OUTL и MOVX. Однако при этом необходимо помнить, что выводимый по команде OUTL байт фиксируется в буферном регистре порта BUS, а команда MOVX уничтожает содержимое буферного регистра порта.
В МК-системах, имеющих внешнюю память программ, порт BUS используется для выдачи адреса внешней памяти и для приема команды из внешней памяти программ. В таких системах использование команды «OUTL BUS» недопустимо, так как фиксация в буферном регистре порта ВUS выводимого байта явится причиной неправильной выборки сладующей команды.
В командах ввода — вывода информации имя порта, через который осуществляется ттередача, содержится в коде команды. Следовательно (из-за невозможности динамического определения имени порта в каком-либо рабочем регистре), отсутствует возможность использования одной программы управления идентичными устройствами, подключенными к разным портам. Это вынуждает программиста загружать в память программ две или более по существу (но не по кодам) одинаковых программ управления однотипными устройствами. Однако динамический выбор идеитичных устройств, а следовательно, и использование одной параметризуемой подпрограммы управления этими устройствами возможны в том случае, если обращение к внешним портам ввода — вывода выполнять по командам обращения к внешней памяти MOVX.
http://www.kosmos.mk.ua/usmtu/mpk/k1816/k1816org4.html
studfiles.net
СИСТЕМЫ ВВОДА ВЫВОДА Организация ввода — вывода микропроцессорного устройства Ввод _ вывод _ это процесс обмена данными между ядром микропроцессорного устройства и периферийными устройствами. В микропроцессорном устройстве применяют три режима:
Все реестры имеют адрес, в зависимости от конкретной реализации порты могут объединяться. Признак готовности периферийного устройства к вводу _ выводу обычно содержится в одном из разрядов порта состояния, различают изолированный и неизолированный ввод _ вывод. В первом случае в системе команд есть специальные команды ввода _ вывода, в которых содержится номер порта, указываемый во втором слове код операции ввода _ вывода. Адресное пространство портов и ячеек памяти в этом случае изолированы, так как для пересылки в память имеются особые команды. В этом случае адреса портов ввода _ вывода, некоторых, ячеек могут совпадать. Во втором случае адресные пространства едины и совпадения адресов нет. При постоянном способе ввода _ вывода инициализируется программой выполняемой в микропроцессорном устройстве. При вводе _ выводе важна проверка готовности периферийного устройства, то есть состояние определяющего бита порта состояния. В некоторых микропроцессорах, это делается независимо от вида команды и при неготовности периферийного устройства микропроцессор переходит в состояние ожидания. Тем самым достигается согласование во времени работы микропроцессора и более медленных периферийных устройств. При асинхронном вводе _ выводе в программу включаются специальные команды проверки готовности. Микропроцессор проверяет бит готовности с помощью одной или нескольких команд. Если бит установлен в единицу, то инициируется собственно ввод или вывод одного или нескольких слов данных. Если бит сброшен, то микропроцессор выполняет цикл из двух-трех команд, проверяющих состояние бита до тех пор пока периферийное устройство не будет готово к вводу выводу. Этот цикл называется циклом ожидания. Из-за него микропроцессор непроизводительно теряет время, что является главным недостатком программного ввода вывода, достоинство: простота реализации без дополнительных аппаратных затрат. Ввод вывод по прерываниям лишен недостатка программного ввода вывода и применяется при работе в реальном времени. Периферийное устройство подает сигнал `запрос прерывания’ на соответствующий вход микропроцессора. Микропроцессор после выполнения текущей команды приостанавливает выполнение основной программы, вырабатывает сигнал подтверждения прерывания и переходит к подпрограмме обработки прерывания, расположенной в фиксированной области памяти. После выполнения этой подпрограммы происходит возврат к основной программе. Для реализации подпрограммы обработки прерывания в микропроцессоре должны выполнятся следующие действия:
Ввод вывод в режиме прямого доступа к памяти Ввод вывод в режим прямого доступа к памяти используют канал прямого доступа к памяти по которому массивы данных передаются непосредственно между периферийным устройством и АЗУ, минуя микропроцессор. Это позволяет достичь наибольшей скорости передачи, но требует специального контроллера прямого доступа к памяти. Периферийное устройство посылает в контроллер прямого доступа к памяти запрос, который транслируется контроллером в микропроцессор, на что микропроцессор отвечает сигналом подтверждения. При этом микропроцессор прекращает работу по выполнению текущей программы, переводит свои буферные регистры, подключенные к шине адреса и шине данных, в высоко эмпедансное состояние и прекращает выработку управляющих сигналов. В контроллер прямого доступа к памяти в его счетчики заносится адрес ячейки АЗУ с которой начинается массив данных и число слов в нем, а также взводится триггер прямого доступа к памяти. Адрес ячейки выдается затем на шину адреса и начинается обмен. При передаче каждого слова содержимое счетчиков в контроллере изменяется на единицу и обмен данными производиться автоматически пока триггер прямого доступа к памяти не сбросится сигналом переполнения или обнуления счетчика. Запрос снимается и микропроцессор возобновляет приостановленную программу. Ввод вывод Как в 86 32 разрядные микропроцессоры позволяют адресовать до 64К однобайтных или 32К двухбайтных регистров в пространстве отдельным от памяти. Дополнительно имеется возможность обращения к 32 битным портам. При операциях ввода вывода линии А16-А31 не используются в шине адреса. Адрес устройства задается либо в команде (только младший байт), либо берется из регистра DX (16 бит). Команды ввода вывода вызывают шинные циклы с активными сигналами OWRD, строковые команды обеспечивают блочный ввод вывод со скоростью превышающей аналогичные операции со стандартным контроллером DMA. В адресном пространстве ввода вывода область 0F8-0FF зарезервирована для использования сопроцессором. В защищенном режиме инструкции ввода вывода являются привилегированными это означает, что они могут исполняться задачами только с определенным уровнем привилегий определяемым полем IOPL, регистром флагов или битовой картой разрешения ввода вывода хранящейся в TSS. Несанкционированная попытка выполнения этих инструкций вызывает исключение 13. Защищенный режим Защищенный режим позволяет адресовать до 4 Гбайт физической памяти, через которые при использовании механизма страничной адресации могут отображаться до 64 Кбайт виртуальной памяти каждой задачи. Режим виртуального 86 является особым состоянием задачи защищенного режима, в котором микропроцессор функционирует как 86, но с возможностью использования 32 разрядных адресов и операндов. Защищенный режим предназначен для обеспечения независимости выполнения нескольких задач, что подразумевает защиту ресурсов одной задачи от возможного воздействия другой. Основным защищаемым ресурсом является память, в которой хранятся коды, данные, и различные системные таблицы. Защищать требуется и совместно используемую аппаратуру обращение, к которой обычно происходит через операцию ввода вывода и прерывания. Защита памяти основана на использовании сегментации.
Механизм виртуальной памяти позволяет любой задаче использовать логическое адресное пространство размером до 16К сегментов по 4 Гбайта. Для этого каждый сегмент в своем дескрипторе имеет специальный бит, который указывает на присутствие данного сегмента в оперативной памяти в текущий момент времени. Не используемый сегмент может быть выгружен из оперативной во внешнюю память, о чем делается пометка в его дескрипторе. На освободившееся место из внешней памяти может восстановиться содержимое другого сегмента и в его дескрипторе делается пометка о присутствии. При обращении задачи к отсутствующему сегменту микропроцессор вырабатывает соответствующее исключение обработчик, которого и заведует виртуальной памятью в операционной системе. После свопинга страницы или сегмента выполнение задачи продолжается. Поэтому виртуализация памяти для прикладных задач прозрачна. Дескрипторы Дескрипторы имеют 8 байтный формат, назначение определяется полями байта управления доступа. Два стартовых байта содержат расширение полей базового адреса и лимита, бит дробности G определяющий в каких единицах задан лимит (0 в байтах, 1 в страницах по 4К). Дескрипторы сегментов кода и данных определяют базовый адрес, размер сегмента, права доступа (чтение, чтение/запись, только исполнение кода или исполнение/чтение), а для систем с виртуальной памятью еще и присутствие сегментов физической памяти. В байте управления доступом в этих дескрипторах бит S=1, бит Р присутствие в памяти, биты DPL— уровень привилегий сегмента, бит А — обращения, бит Е — определяет тип сегмента данных или кода, свойства сегмента определяет поле TYPE. В этом поле бит ED контролируемое направления задает расширение вверх, т.е. смещение не должно превышать значение лимита, или расширение вниз (для стека, у которого смещение должно превышать значение лимита). Бит В в предпоследнем байте дескриптора сегмента стека определяет разрядность используемого указателя стека. Бит WQ разрешение или запрет записи данных в сегмент. В сегмент кода запись невозможна, лимит указывает на его последний байт, а биты поля типа имеют следующие назначения: бит С _ подчиненность, при С=1 код может исполняться если текущий уровень привилегий CPL не ниже уровня привилегий дескриптора; DPL при С=0 управление к данному сегменту передается если DPL=CPL; бит R _ это разрешение или запрет чтения сегмента, запись в сегмент кода возможна только через псевдоним, т.е. сегмент данных с разрешенной записью имеющий те же значения базы и лимита; бит D в предпоследнем байте определяет разрядность адресов и данных по умолчанию. Привилегии В защищенном режиме имеется 4-уровневая система привилегий, которая управляет использованием привилегированных инструкций и доступом к дескрипторам. Уровни привилегий нумеруются от 0 до 3, нулевой имеет высшие привилегии. Уровни привилегий обеспечивают защиту задач изолируемых друг от друга локальными таблицами дескрипторов. Программы, операционные системы, обработчики прерываний и другое системное обеспечение могут включаться в виртуальное адресное пространство каждой задачи и защищаться системой привилегий. Каждая часть системы работает на своем уровне привилегий. Задачи, дескрипторы и селекторы имеют свои атрибуты привилегий. Привилегии задач действуют на выполнение инструкций и использование дескрипторов. Текущий уровень привилегий и задачи CPL определяются двумя младшими битами регистра CS, и может изменяться только при передаче управления к новому сегменту через дескриптор вентиля. Привилегии дескриптора задаются полем DPL байта управления доступом. DPL определяет наименьший уровень привилегий с которым возможен доступ к данному дескриптору. Привилегии селектора задаются полем RPL т.е. двумя младшими битами селектора. С помощью RPL можно урезать эффективный уровень привилегий EPL, который определяется как максимальное арифметическое из значений CPL и RPL. Контроль доступа к сегментным данным производится при исполнении команд загрузки селекторов в SS, DS, ES, FS и GS. Для получения доступа эффективный уровень привилегий EPL должен быть EPL DPL. Контроль типов и привилегий при передаче управления производится при загрузке селектора в регистр CS. Тип дескриптора на который ссылается данный селектор должен соответствовать выполняемой инструкции. Нарушение типа порождает исключение 13. Привилегии и битовая карта разрешения ввода вывода и управляет флагом прерываний IF. Уровень привилегий ввода вывода определяется полем IOPL регистра флагов. Значение IOPL можно изменить только при CPL=0. Защита Защита микропроцессора предназначена для предотвращения несанкционированного выполнения критических инструкций: команды HLT, которая останавливает микропроцессор и команд влияющих на сегменты кода и данных.
Переключение задач Для многозадачных и многопользовательских операционных систем важна способность микропроцессора к быстрому переключению выполняемых задач. Операция переключения задач сохраняет состояние микропроцессора и связь с предыдущей задачей, загружает состояние новой задачи и начинает ее выполнение. Переключение задач выполняется по инструкции межсегментного перехода JMP или вызова CALL ссылающейся на сегмент состояния задачи TSS или дескриптор вентиля задачи в GDT или LDT. Переключение задач может происходить также по операциям и программным прерываниям и исключениям, если соответствующий элемент в IDT является дескриптором вентиля задачи. Дескриптор TSS указывает на сегмент, содержащий полное состояние микропроцессора, а дескриптор вентиля задачи содержит селектор указывающий на дескриптор TSS. Для возврата управления вызвавшей текущую или ей прерванной используется задачи инструкция IRET. Каждая задача должна иметь связанный с ней TSS. В формате TSS содержатся образы регистров микропроцессора, раздельные указатели стеков для уровней привилегий 0, 1, 2., и обратную ссылку на селектор TSS вызвавшей задачи. Кроме того, в TSS содержится битовая карта разрешения ввода вывода и бит отладочной ловушки Т. Карта разрешения ввода вывода расположена в конце TSS и имеет по одному биту на каждый адрес портов ввода вывода. Разрешению обращения соответствует единичное значение бита. Текущий TSS идентифицируется регистром задачи TR в нем содержится селектор, ссылающийся на дескриптор текущего TSS. Смена контекста сопроцессора при переключении задач автоматически не производится, однако микропроцессор обнаруживает первое использование сопроцессора после переключения задач и вырабатывает исключение 7, обработчик которого сам определяет, необходима ли смена контекста. Страничное управление памятью Страничное управление памятью является дополнительным средством для организации виртуальной памяти. Страницы не имеют прямой связи с логической структурой данных или программ. Селекторы можно рассматривать как логические имена модулей кодов и данных, страницы же представляют части этих модулей. Учитывая обычные свойства локальности кода и ссылок на данные в оперативной памяти в каждый момент времени надо хранить только небольшие части сегментов необходимые активным задачам. Эту возможность и обеспечивает страничное управление памятью. Режим виртуального 86 (V86) Этот режим является особым состоянием задачи защищенного режима. В нем работает защита и механизм страничной переадресации. Основным различием реального и защищенного режимов является интерпретация сегментных регистров. В режиме V86 для получения линейного адреса содержимое сегментных регистров сдвигается на 4 разряда влево и суммируется с эффективным адресом. Один Мбайт адресуемого таким образом пространство с памятью страничной трансляции может отображаться в любую область 4 Гбайт физической памяти. Все программы, выполняемые в режиме V86, имеют уровень привилегий 3. Поэтому программы V86 выполняются со всеми проверками защиты. Прерывание V86 для полной эмуляции машины на микропроцессоре 86 обрабатывается особым образом. Все прерывания и исключения влекут собой смену уровня привилегий обратно к уровню операционной системы защищенного режима. Эта операционная система может распознать по образу регистра флагов в стеке, что прерывание пришло из V86. Далее операционная система может либо обработать это прерывание самостоятельно либо переслать его к операционной системе реального режима работающей в V86. В конечном итоге операционная система защищенного режима может эмулировать окружение обычной 86 машины. Прозрачно для приложения работающего в V86. Вход в режим V86 возможен либо выполнением инструкций IRET в 32 битном режиме, либо переключением задач на задачу, у которой в TSS образ регистра флагов имеет установленный в единицу бит VM. Выход из режима V86 возможен только при обработке прерывания. Если задача имеет CPL=0, то бит VM сбрасывается, и вызываемая задача будет выполняться в защищенном режиме. Если CPI>0, то генерируется исключение 13. Если прерывание вызывает переключение задач, то регистры с флагом VM сохраняются в TSS старой задачи. Новый режим устанавливается по TSS новой задачи. Значение VM не может изменяться никакими другими способами. Более того, его значение не читается. |
skachivaem.ru