Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gosy_org_evm.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
400.32 Кб
Скачать
    1. Программно управляемый ввод-вывод(pio – Programmed input/output)

Ввод-вывод осуществляется при непосредственном участии ЦП. Реализация ввода/вывода производится специальной программой, называемой драйвером ВУ, которая выполняет следующие действия:

  1. Пересылка порции данных между ОП и адресуемым портом ввода-вывода. Как правило в качестве промежуточного звена используется какой-либо регистр ЦП (например, регистр аккумулятор в процессорах семейства Intel Pentium)

  2. Проверка готовности ВУ к обмену. Сводится к опросу регистра состояния, точнее, специального флага готовности контроллера ВУ.

  3. Ожидание готовности ВУ путем циклической проверки состояния флага готовности.

  4. Изменение (модификация) параметров пересылки, в частности, текущего адреса области ОП для ввода/вывода и счетчика длины пересылаемого блока.

  5. Проверка завершения передачи путем сравнения счетчика с некоторым конечным значением. Например, с нулем при декрементном счетчике.

Основным достоинством PIO является простота его реализации, а основной недостаток – крайне неэффективное использование ресурсов ЦП.

    1. Ввод-вывод по прерыванию.

Использование этого способа организации ввода/вывода позволяет устранить основной недостаток предыдущего.

Основная идея этого способа: после осуществления элементарных действий по пересылке очередной порции данных (см. выше) ЦП вместо переключения в состояние активного ожидания с опросом готовности ВУ (как в первом способе) переходит к выполнению другой программы. Планировщик заданий ОС запускает другой процесс.

В свою очередь, устройство в/в (ВУ) о своей готовности продолжить операцию ввода/вывода с очередной порцией данных сообщает ЦП с помощью сигнала прерывания. Так, например, в процессорах фирмы Intel сигнал прерывания от ВУ поступает на специальный вход процессора INT R(Interrupt Request – запрос прерывания). Промежуточным звеном между ВУ и ЦП ретранслирующим запросы прерываний от многих ВУ на единственный вход ЦП, является специализированная микросхема PIC (программируемый контроллер прерываний).

Отметим далее, ЦП после завершения любой машинной команды производит опрос наличия сигнала INT R (основанием для этого является установленный флаг IF). При сброшенном флаге реакция ЦП на запросы от ВУ временно приостановлена. При наличии активного уровня на входе INT R и разрешении прерывания(IF=1) ЦП выполняет следующие действия:

  1. Cохраняет минимальный контекст прерываемой программы на аппаратном уровне. В процессорах фирмы Intel для этой цели используется стек, в который поочередно загружаются регистр флагов, сегмент кода CS, счетчик команд IP.

  2. Идентифицирует источник прерывания и преобразует код источника в начальный адрес программы обработчика соответствующего прерывания (в процессорах Intel функцию идентификации источника, точнее номера ВУ, пославшего запрос прерывания выполняет PIC, который пересылает в ЦП код (номер) запроса по шине данных в цикле подтверждения прерывания). ЦП, получив код запроса, модифицирует его в адрес соответствующего вектора прерывания и далее считывает содержимое этого вектора: 2 младших байта в IP, 2 старших в CS, тем самым осуществляется загрузка адреса обработчика прерывания в регистры ЦП.

  3. ЦП переходит к выполнению программы обработчика прерывания. Обработчики прерываний для соответствующих ВУ связаны с драйверами этих устройств.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]