Для
учета особенностей реализации процессов
ввода-вывода и специфики различного типа ПУ
используются три режима ввода-вывода
информации: программный ввод-вывод, ввод-вывод
в режиме прерываний и с прямым доступом к
памяти.
Интерфейсы
должны учитывать возможность реализации
всех 3-х режимов ввода-вывода.
Программный
ввод-вывод. Здесь инициализация и
управление процессом ввода-вывода
осуществляет процессор. Существует
три способа его выполнения (см. рис.1).
Рис.1.
Программный ввод-вывод
Первый
способ – прямой, используется для
синхронных ПУ, т.е. устройств, которые
всегда готовы к работе и циклов ожидания не
требуется. Второй – условный с занятием
цикла, когда при не готовности ПУ, процессор
ждет до тех пор, пока наступит его
готовность. Третий – условный с
совмещением. В отличие от предыдущего,
процессор не ждет готовности ПУ, а
переходит к продолжению программы с
периодической проверкой готовности ПУ.
Ввод-вывод
в режиме прерываний. В этом случае
инициатором начала процесса ввода-вывода
является ПУ. Оно, когда готово, подает
сигнал процессору "запрос на прерывание".
Процессор, если ПУ разрешен такой режим,
завершает текущую команду и переходит к
выполнению процесса ввода-вывода (см. рис. 2).
Сначала он осуществляет контекстное
переключение, т.е. запоминает свое
состояние, чтобы можно было после
продолжить программу, идентифицирует ПУ и
передает управление драйверу данного ПУ (ПП),
который и осуществляет ввод или вывод
информации. Идентификация ПУ производится
с помощью адреса вектора прерывания,
который содержит номер ячейки, где хранится
первая команда этого драйвера. Адрес
вектора прерывания ПУ передается
процессору от контроллера прерываний.
Рис.2. Ввод-вывод
в режиме прерывания
Следует
отметить два момента. Во-первых, ПУ должно
иметь, предварительно установленное,
разрешение на работу в режиме прерываний.
Во-вторых, возможны коллизии, когда
несколько ПУ выставляют процессору запрос
прерывания. Эта коллизия разрешается с
помощью механизма задания уровня
приоритетов для каждого ПУ. Возможна
организация вложенных прерываний, когда ПУ
с большим приоритетом прерывает работу ПУ с
меньшим приоритетом. Все эти моменты должен
учитывать стандарт на интерфейс.
Прямой
доступ к памяти (см. рис. 3). Этот режим
используется для высокоскоростных ПУ. В
этом режиме активным устройством является
контроллер прямого доступа к памяти (КПДП).
Процессор, получив от КПДП заявку на прямой
доступ, прерывает свою работу и отключается
от интерфейса, передавая его задатчику, т.е.
КПДП. Процессор при этом не выполняет
контекстного переключения, а может
продолжать свою работу, если она не требует
интерфейса. Управление интерфейсом
переходит к КПДП, который посредством
выполнения операций чтения и записи
передает информацию между ОЗУ и ПУ с
соответствующим заданием адресов памяти. В
этом режиме используется механизм задания
уровня приоритетов для тех ПУ, которые
работают с прямым доступом к памяти. Этот
режим также должен быть предусмотрен в
интерфейсах.
Как
следует из вышеизложенного, канал ввода-вывода
(главный контроллер) реализует функции
управления общие для всех ПУ, а контроллер
внешнего интерфейса учитывает специфику
интерфейса, связывающего его с
соответствующим ПУ.
В
компьютерах, которые работают с малой
интенсивностью ввода-вывода, главный
контроллер (канал) ввода-вывода обычно
отсутствует, а его функции берет на себя
процессор. В этом случае процессор работает
непосредственно с контроллером ввода-вывода
ПУ, что упрощает структуру компьютера.
При
работе с высокоскоростным ПУ обычно
используется режим прямого доступа к
памяти. Для этого режима аппаратно
реализуется специальный
канал
ввода-вывода
в виде
КПДП.
Рис.
3. Режим
прямого
доступа к памяти