question-14

Вопрос 14

Организация ввода-вывода в вычислительных системах. Инициация обмена, передача информации и завершение обмена. Драйверы

Организация ввода-вывода

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

Обмен данными строится по следующей иерархической схеме:

io_connection.png

Драйвер - это…

Специальная системная программа, которая знает аппаратные особенности конкретного устройства (адреса его регистров в контроллере, поддерживаемые режимы, команды управления). Драйвер скрывает сложную низкоуровневую работу с «железом» и предоставляет операционной системе простой унифицированный интерфейс.

Инициация обмена

Это этап, на котором процессор или контроллер дает команду на начало обмена данными. Существует три основных подхода:

  • Асинхронная инициация (Программно-управляемая) Процессор непрерывно опрашивает регистр состояния контроллера (spin-loop), ожидая появления бита готовности. Основной недостаток — процессор простаивает и тратит такты впустую во время ожидания отклика медленного ВУ.

    sync_overhead.png

  • Синхронная инициация Процессор обращается к ВУ в строго определенные моменты времени. Применяется редко и только для устройств, чьё время отклика жестко фиксировано и заранее известно. async_overhead.png

  • По прерыванию Процессор дает ВУ команду и продолжает выполнять полезную работу. Когда ВУ готово к обмену, контроллер посылает процессору аппаратный сигнал прерывания. Процессор временно откладывает текущую задачу, обслуживает устройство и возвращается назад.

    interrupt_init.png

Передача информации

Способ транспортировки данных между контроллером ВУ и оперативной памятью (ОЗУ) выбирается на основе требуемой скорости обмена:

  • Программно-управляемая передача Каждый байт данных проходит маршрут: ВУ Контроллер Аккумулятор процессора ОЗУ. Применяется для медленных устройств, обменивающихся небольшими порциями данных (клавиатуры, мыши, датчики температуры). Поскольку частота нажатия клавиш крайне низкая, нагрузка на процессор при такой схеме незаметна.

  • Прямой доступ к памяти (ПДП / DMA) Обмен происходит напрямую между контроллером ВУ и ОЗУ под управлением специального контроллера ПДП, вообще минуя процессор. Процессор лишь настраивает контроллер ПДП (указывает начальный адрес памяти и размер блока) и продолжает выполнять вычисления. ПДП критически важен для высокоскоростных устройств (твердотельные накопители SSD, видеокарты, гигабитные сетевые адаптеры). Без ПДП процессор тратил бы все свои ресурсы исключительно на копирование байтов из порта в память, и система бы зависала при любой сетевой активности или чтении диска.

Завершение обмена

  • Синхронное завершение Драйвер или вызывающая программа блокируется и ожидает, пока контроллер ВУ аппаратно не подтвердит успешное окончание операции ввода-вывода.

  • Асинхронное завершение Драйвер дает команду на старт и сразу возвращает управление программе. Позже, когда ВУ закончит работу, оно генерирует прерывание, сообщая драйверу об успешном завершении, после чего операционная система уведомляет программу.

Ссылка на оригинал


question-39

Вопрос 39

Контроллер приема асинхронного последовательного интерфейса

Назначение и состав

Аппаратная реализация регистров: D- и RS-триггеры

Буферный регистр A1 и Сдвиговый регистр построены на базе D-триггеров. Они защёлкивают информацию со входа D строго по синхроимпульсам на входе C. Регистр состояния A2 — это RS-триггер, управляемый сигналами Set и Reset. Подробнее: RS- и D-Триггеры.

Контроллер принимает данные с одной асинхронной линии связи, аппаратно вырезает стартовые/стоповые биты и передаёт чистый байт процессору. Использует принцип деления частоты для центровки момента считывания, чтобы избежать влияния помех и рассинхронизации.

Основные элементы: буфер А1 и триггер А2, Сдвиговый регистр, Тактовый генератор (ТГ), Делитель на 16 и Счётчик по модулю 9.

Алгоритм работы (прием)

  1. Ожидание: Изначально на линии «Данные от ВУ» висит логическая 1 (режим простоя), которая блокирует работу делителя частоты.
  2. Ловля стартового бита: Как только напряжение на линии падает до 0 (пришёл стартовый бит), блокировка с делителя снимается. Он начинает считать такты ТГ.
  3. Центровка (защита от помех): Досчитав до 8 (ровно середина стартового бита), контроллер проверяет линию. Если там всё ещё 0, стартовый бит считается истинным. Делитель сбрасывается и начинает отсчитывать полные циклы по 16 тактов.
  4. Сдвиг данных: Ровно через каждые 16 тактов (в геометрическом центре каждого бита) значение с линии защёлкивается и вдвигается в Сдвиговый регистр.
  5. Окончание приема: С каждым вдвинутым битом Счётчик по модулю 9 (отсчитывающий 1 стартовый + 8 информационных битов) увеличивается. Досчитав до 9, он выдает сигнал, по которому:
    • Чистые 8 бит данных параллельно перегружаются из Сдвигового регистра в буфер А1.
    • Триггер состояния А2 устанавливается в 1.
    • Блокируется работа делителя до прихода нового стартового бита.
  6. Чтение процессором: Процессор видит А2 = 1, подаёт команду “Ввод”, забирает байт из А1, и аппаратура автоматически сбрасывает А2 в 0. Контроллер готов к приему нового кадра.

async-dev-get.png

Рис. 1: Контроллер приема асинхронного последовательного интерфейса

Ссылка на оригинал