Способ обмена данными с внешним устройством

Принципы организации обмена с внешними устройствами компьютера (программно-управляемый ввод/вывод и DMA).

Принципы организации обмена с внешними устройствами компьютера (программно-управляемый ввод/вывод и DMA).

Внешние устройства подключаются к системному интерфейсу через специальные устройства — контроллеры (адаптеры). Каждый контроллер имеет в своем составе ряд программно-доступных регистров (как минимум имеет хотя бы регистр данных, регистр состояния и регистр управления).

Каждый контроллер имеет свой набор команд. Получив, через свои регистры, команду от выполняющего программу ввода-вывода процессора, контроллер отрабатывает команду автономно, управляя внешним устройством через «малый» интерфейс между устройством и контроллером. Контроллер, отрабатывая принятую от процессора команду, пересылает во внешнее устройство свои команды, данные, и читает из устройства состояния. Кроме того, контроллер может выполнять ряд вспомогательных аппаратных функций, инициируемых аппаратными сигналами, или записью управляющей информации в его программно-доступный регистр (например, «сброс» по сигналу RESET, или включение процесса самодиагностики жесткого диска). Существуют простые контроллеры и более сложные (интеллектуальные) контроллеры, выполняющие более сложные аппаратные функции и команды.

Процессор управляет внешним устройством, выполняя соответствующую программу ввода/вывода, где он с помощью команд IN, OUT (чтение порта, запись в порт) осуществляет доступ к программно-доступным регистрам контроллера. Например, в регистр управления процессор записывает команду, из регистра состояния читает информацию о состоянии устройства и контроллера, в регистр данных записывает выводимые на устройство данные, или читает из регистра данных считываемую с устройства информацию.

Возможны два способа организации программного обмена с внешними устройствами:

1) Обмен с опросом готовности устройства.

Выполняя программу ввода-вывода, процессор, запустив в контроллере операцию, циклически читает регистр состояния контроллера, ожидая появления в соответствующем разряде регистра состояния признака готовности к обмену данными с процессором. При появлении этого признака в регистре состояния, процессор осуществляет обмен через регистр данных, с помощью команды OUT, осуществляет запись в регистр данных (при выводе на устройство), или выполняет чтение информации из регистра данных контроллера с помощью команды IN (при вводе с устройства). После чего запускает в контроллере следующую операцию и т. д.;

2) Обмен по запросам на обслуживание устройства (запросам на маскируемое прерывание).

При выполнении программы ввода-вывода, процессор, запустив на контроллере операцию продолжает выполнять другую полезную программу. Контроллер внешнего устройства, в случае полной готовности к обмену данными с процессором, выдает на соответствующую линию IRQ сигнал запроса на обслуживание (запрос на маскируемое прерывание). Процессор, через выполнение процедуры прерывания по сигналу IRQ, переходит на выполнение программы ввода/вывода для данного устройства. Эта программа осуществляет обмен данными через регистр данных контроллера и запускает в контроллере следующую операцию. Процессор возвращается к выполнению прерванной программы через выполнение команды IRET (возврат из прерывания), которой заканчивается программа ввода/вывода) и т. д.

Любой контроллер, получив от процессора (по командам OUT), через свои программно-доступные регистры команду, отрабатывает команду автономно, управляя внешним устройством через «малый» интерфейс между устройством и контроллером. Контроллер, отрабатывая принятую от процессора команду, пересылает во внешнее устройство команды, данные, и читает из устройства информацию о его состоянии и данные. Кроме того, контроллер может выполнять ряд вспомогательных аппаратных функций инициируемых аппаратными сигналами или записью управляющей информации в его программно-доступный регистр.

Как было сказано выше, возможны два способа организации программного обмена с внешними устройствами: «обмен с опросом готовности устройства» и обмен «по запросам на обслуживание устройства» (запросам на маскируемое прерывание). Различие этих способов программного обмена в способе определения готовности устройства к обмену данными.

Например, при обмене «с опросом готовности устройства» с матричным принтером, выполняя программу ввода-вывода, процессор, запустив в контроллере матричного принтера операцию вывода, циклически читает регистр состояния контроллера и ожидает появления (в соответствующем разряде регистра состояния) признака готовности к обмену данными с процессором. При появлении этого признака в регистре состояния, процессор, с помощью команды OUT, осуществляет запись в регистр данных контроллера принтера очередного байта информации для вывода на принтер, и запускает в контроллере принтера, записью команды в регистр управления, следующую операцию вывода и т. д.

При обмене с принтером «по запросам на обслуживание от устройства» (запросам на маскируемое прерывание), процессор, выполняя программу вывода, запустив в контроллере принтера операцию, не ожидает готовности контролера к обмену данными. Он продолжает выполнять полезную программу. Контроллер принтера, в случае полной готовности к обмену данными с процессором, выдает на соответствующую линию IRQ (например, для принтера — IRQ7) сигнал запроса на обслуживание, который поступает на вход контроллера прерываний (который находится в микросхеме «южного моста»). Контроллер прерываний выдает на вход INTR процессора активный сигнал, а процессор, через выполнение процедуры прерывания по сигналу INTR (в ее выполнении участвуют контроллер прерываний и контроллер шины), переходит на выполнение программы вывода для данного устройства. Эта программа осуществляет запись данных в регистр данных контроллера и запись команды в регистр управления, т. е. запускает в контроллере следующую операцию вывода. Процессор в конце программы обслуживания устройства выбирает и выполняет команду IRET (возврат из прерывания, которой заканчивается программа ввода/вывода), и возвращается к выполнению прерванной ранее программы и т. д.

Читайте также:  Начислить амортизацию линейным способом пример проводки

3) Прямой доступ (DMA DirectMemoryAccess — прямой доступ к памяти).

Прямой доступ (DMA)- это способ обмена между внешним устройством и динамической памятью, при котором управление операциями обмена по интерфейсу между регистром данных устройства и последовательно расположенными ячейками памяти, осуществляет контроллер прямого доступа к памяти, а микропроцессор в это время находится в отключенном от интерфейса состоянии. Прямой доступ может осуществляться двумя способами: обычным DMA и Busmastering DMA. Существуют несколько разновидностей обмена по прямому доступу. Single word DMA – одиночный режим (в каждом цикле обмена словом, сигнал запроса на обмен сбрасывается сигналом, подтверждающим каждый цикл обмена). Multiword DMA – множественный режим (на сигнал запроса на обмен от устройства выполняется поток циклов обмена сопровождаемых сигналами подтверждения; устройство может из-за неготовности приостановить обмен, сняв свой сигнал запроса, и продолжить обмен, вновь установив запрос). Режим DMA позволяет освободить процессор от рутинной пересылки данных между внешними устройствами и памятью, отдав эту работу контроллеру DMA, процессор в это время может обрабатывать другие данные или другую задачу в многозадачной системе.

4) BIOS, UEFI-BIOS. Важным компонентом системы ввода-вывода компьютеров является BIOS – это Basic Input/Output System — базовая система ввода/вывода, «зашитая» в ПЗУ (отсюда и название ROM BIOS). BOIS представляет собой набор программ которые реализуют функции управления внешними устройствами на физическом уровне (программно-управляемый ввод/вывод и DMA), функции проверки и обслуживания аппаратуры компьютера, и выполняет роль посредника между операционной системой и аппаратурой.

BIOS – практически уже достаточно давно начинает уступать место платформе UEFI (Unified Extensible Firmware Interface), представляющей собой новый тип интерфейса между, оборудованием и операционной системой (OS) компьютера. BIOS, созданная четверть века назад, давно не удовлетворяет требованиям, предъявляемым к современным ПК. Все новые компьютеры используют систему UEFI (но в системе UEFI есть блок совместимости с BIOS, поэтому те программы, которым для работы нужен был BIOS, спокойно могут работать и на компьютерах с UEFI). Этот тип интерфейса между оборудованием и ОС, изначально носивший имя EFI, уже в середине девяностых годов создавался корпорацией Intel для платформы Itanium. Сейчас разработку EFI курирует организация Unified EFI Forum (UEFI).

Перевод компьютеров на интерфейс UEFI позволил значительно сократить время загрузки ПК. Если при использовании BIOS с момента включения питания до появления экрана приветствия ОС проходит в среднем полминуты, то с внедрением UEFI этот показатель сократится до нескольких секунд. UEFI обеспечит поддержку альтернативных средств ввода данных, таких как виртуальные клавиатуры и сенсорные дисплеи. Администраторы получат в своё распоряжение расширенные инструменты удалённого управления и средства диагностики, а пользователи — возможность запускать приложения вроде браузера и медиаплеера, не загружая ОС.

Источник

Обмен данными с внешними устройствами ввода/вывода.

1.возможна организация команд ввода/вывода с использованием специальных команд ввода/вывода

2.по аналогии с обращением к памяти

· упрощается схема взаимодействия системного интерфейса с изолированными шинами, с контроллером внешних устройств

  • при вводе данных из внешнего устройства процессор выставляет на адресную шину адрес регистра данных контроллера ВУ и с помощью единичного сигнала «ввод» информирует контроллер ВУ о типе операции, которую оно должно выполнить → устройство, обнаружив появление сигнала «ввод», выставляет на шину данных байт слова или двойное слово (содержимое регистра данных), полученное от внешнего устройства
  • для синхронизации процессора и контроллера ВУ может использоваться сигнал готовности ВУ → процессор, обнаружив появление сигнала «готовность ВУ», считывает данные с шины данных и снимает сигнал «ввод», на этом цикл обмена заканчивается
  • принцип обмена данными, при котором сигналы, посланные активным устройством (процессору в данном случае) подтверждаются сигналами пассивного устройства называется колетированием
  • активное устройство называют задатчиком, а пассивное исполнителем
  • устройство, осуществляющее ввод/вывод с использованием специальных команд и сигналов, называется устройством с отображением на пространство ввод/вывод
  • устройство, осуществляющее ввод/вывод по аналогии с обращением в память называется устройством с отображением на память
  • в контроллере всегда имеется группа регистров – адресуемые регистры

Регистры контроллера внешних устройств:

    1. регистры данных (если устройство осуществляет однонаправленную передачу – 1 регистр: если двунаправленную – 2 регистра: регистр входных и регистр выходных данных)
      • через регистр выходных данных данные вводятся в устройство компьютера
      • через выходной регистр – данные выводятся
    2. регистры состояния и управления

· регистр состояния (один или несколько) доступен в режиме чтения и сохраняет в своих разрядах информацию о текущем состоянии внешнего устройства

· регистр управления (один или несколько) работает в режиме записи и служит для приёма команд управления внешними устройствами

· регистры в состоянии управления, также как и регистры данных доступны только через шину данных; другими словами часть управляющей информации в компьютере передаётся не по шине управления, а по шине данных;

Читайте также:  Способы удаленного заработка подростку

· такая организация передачи управления информации обусловлена тем, что каждое внешнее устройство имеет целый набор собственных сигналов и команд, а потому предусмотреть для них соответствующие линии на шине управления системного интерфейса не представляет возможным, очевидно, что это существенно замедляет обмен данными с внешним устройством

Нарисуем упрощённую блок-схему контроллера внешнего устройства для системного интерфейса с изолированной шиной:

  • логика управления обеспечивает дешифрацию регистров контроллеров; приём управляющих сигналов системного интерфейса (ввод/вывод); формирование на их основе внутренних управляющих сигналов, кроме того, она может генерировать сигнал готовности ВУ; запрос на прерывание; запрос на прямой доступ к памяти
  • внутренние управляющие сигналы определяют, в какой из регистров контроллера будет подключён через приемо-передатчик шины к шине данных

Различают 3 основных способа организации ввода/вывода:

    1. программно – управляющий обмен
    2. обмен в режиме прерывания
    3. обмен в режиме прямого доступа к памяти

программно – управляющий обмен – это передача данных по инициативе и под управлением программы, осуществляющей ввод/вывод

Такой обмен может быть реализован в 2 режимах:

а) обмен в синхронном режиме – обмен с безусловной передачей данных (без контроля приёма данных);

· синхронный режим используется для обмена с такими ВУ, для которых точно известно время выполнения одной операции ввода/вывода;

· программа, управляющая обменом, должна давать команды на приём или передачу данных с временным интервалом не меньшим, чем время необходимое для выполнения одной операции

· если команды и данные будут передаваться в более быстром темпе, то они будут потеряны

· этот наиболее простой способ обмена требует минимальных и аппаратных и программных затрат

б) обмен в асинхронном режиме – обмен с проверкой готовности ВУ (обмен по готовности ВУ)

· в этом режиме каждая следующая команда на приём или передачу данных даётся только тогда, когда ВУ выполнит предыдущую команду и сообщит об этом, установив бит (флаг) готовности в своём регистре состояний

Изобразим алгоритм обмена:

Рассмотрим действия, необходимые для печати слова EPSON на принтере, подключённом параллельно в входу PC (LPT1).

Контроллер параллельного интерфейса имеет 3 регистра:

  1. регистр данных – 378h: записывается байт данных, который затем пересылается в буфер принтера
  2. регистр состояний – 379h
  3. регистр управления – 37Ah: записывается команда, управляющая работой принтера

Рассмотрим простейшую программу:

const D: array [1..7] of byte = ($45,$50,$53,$4F,$4E,$D,$A);

if (Port[SR] and $80) = 0 then

writeln(‘принтер не готов’);

for I:=1 to sizeof (D) do

while (Port[SR] and $80) = 0 do;

обмен в режиме прерывания – такой способ обмена, при котором производится приостановка (для выполнения ввода/вывода) или прерывание выполняемой программы; причём обмен инициирует не программа, выполняемая процессором, а само внешнее устройство (ВУ)

· при реализации этого способа обмена команды или инструкции обслуживания этого устройства оформляются в виде подпрограммы – подпрограммы обработки прерываний (ПОП)

· процессор передаёт управление ПОП только в том случае, если ВУ, исходя из своих внутренних побуждений, само известит процессор о готовности к обмену, для этого он выставляет на соответствующую линию шины управления системного интерфейса сигнал «запрос на прерывание»

· если при программо-управляемом обмене готовность ВУ определяется путём программного считывания содержимого регистра состояний контроллера ВУ, то появление запроса на прерывание появляется аппаратно

· наличие сигнала готовности проверяется процессором автоматически при выполнении каждой команды – это существенно экономит время процессора, поскольку программный цикл ожидания отсутствует

Какие действия выполняются в компьютере при появлении сигнала на прерывание?

процессор завершает выполнение текущей команды

если аппаратное прерывание разрешено, т.е. установлен флаг в прерывании в регистре состояний процессора, то процессор с помощью специальных сигналов и соответствующих циклов шины подтверждает готовность к прерыванию и идентифицирует источник запроса

процессор сохраняет в (текущем) стеке содержимое счётчика команд (СК) и содержимое регистра состояний (РС)

процессор помещает в СК адрес подпрограммы обработки прерывания для данного устройства и приступает к её выполнению

в начале своей работы подпрограмма обработки прерывания должна сохранить в стеке содержимое регистров процессора и в конце работы она должна восстановить эти регистры из стека

подпрограмма обработки прерываний завершается специальной инструкцией возврата из прерывания, по этой инструкции процессор извлекает из стека адрес возврата прерванной программы – после чего продолжается выполнение прерванной программы

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

· приоритет – число, приписанное ВУ, которое определяет очерёдность его обслуживания (обычно наибольший приоритет имеет наиболее быстродействующие устройства или устройства, данные от которых не могут быть восстановлены

· устройство с высшим приоритетом обслуживается первым

· если обслуживание запрашивает устройство, приоритет которого не выше приоритета уже обслуживаемого устройства, то его запрос блокируется до завершения текущей ПОП

  • в контроллерах ВУ, работающих в режиме прерывания в регистре управления, как правило, имеется бит, с помощью которого можно разрешить или запретить устройству генерацию сигналов «запрос на прерывание»
  • прерывания, о которых идёт речь, это аппаратные или внешние прерывания (т.е прерывания генерируемые внешними по отношению к процессору устройствами)
Читайте также:  Протяженность маршрута патрулирования пешим способом составляет

аппаратные прерывания подразделяют на:

  • маскируемые прерывания (INIR) можно запретить, сбросив флаг прерывания в регистре флагов процессора; можно также запретить прерывания от отдельных устройств с помощью регистра маски контроллера прерываний
  • немаскируемые прерывания с помощью регистра флагов запретить нельзя; немаскируемые прерывания могут генерировать схемы контроля чётности оперативной памяти (NMI), а также систему управления энергопотребления (SMI)
  • также различают программные или внутренние прерывания – генерируются самим процессором
  • к программным прерываниям относят особые случаи (исключения) (деление на ноль; запрос о отсутствующей в памяти страницы; нарушение защиты по привилегиям)
  • прерывания, генерируемые машинными командами, используются для доступа к стандартным подпрограммам, адреса которых программисту неизвестны
  • программные прерывания обрабатываются так же, как и аппаратные, только в первом случае отсутствуют циклы подтверждения прерывания

Высшие приоритеты имеют:

    1. программы прерывания
    2. немаскируемые аппаратные прерывания
    3. маскируемые прерывания

Существуют 2 основных свойства идентификации ВУ, запросившего обслуживание:

  1. с помощью программного опроса (полинга) готовности ВУ, работающих в режиме прерывания
  2. с использованием векторов прерывания
    • в первом случае запросы на прерывание от всех ВУ объединяются по схеме ИЛИ (монтажное ИЛИ) и подаются на соответствующий вход процессора; обработка прерываний осуществляется с помощью единой подпрограммы обработки прерываний

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

Существует 2 основных способа получения вектора прерывания:

    1. само ВУ может сообщить вектор прерывания
    2. контроллер прерывания, общий для всех ВУ

Соответственно различают 2 варианта реализации векторной системы:

  1. векторная система с интерфейсным вектором
  2. с вне интерфейсным вектором
    • в первом случае контроллер каждого внешнего устройства, работающего в режиме прерывания должен иметь специальный регистр для хранения вектора прерывания

  • это схема намного эффективнее схемы прерывания с программным опросом, поскольку здесь опрос осуществляется не программно, а аппаратно
  • во втором случае системы с вне интерфейсным вектором — специальные регистры для хранения векторов, адресов в контроллере ВУ отсутствует, а для идентификации используется общий для всех устройств контроллер прерывания – такая схема характерна для IBM совместимых PC

Изобразим схему взаимодействия процессора с контроллером прерывания и шины IBM PC:

  • за исключением IRQ0, IRQ1, IRQ8, IRQ13 (системный таймер, клавиатура, часы реального времени, сопроцессор); контроллер шины формирует 2 цикла чтения, только во 2 цикле чтения контроллер прерывания выставляет номер вектора прерывания на шину данных, а процессор считывает его с шины данных
  • в реальном режиме вектора прерываний хранятся в таблице векторов прерываний, которые находятся в одном килобайте оперативной памяти, под каждый вектор выделено 4 байта (2 под смещение и 2 байта под адрес сегмента)
  • абсолютный адрес вектора прерываний в таблице = номер вектора умножить на 4
  • далее процессор сохраняет в стеке содержимое регистров флагов, содержимое регистра сегмента кода CS, смещение IP, затем сбрасывается флаг прерывания в регистре флагов; по адресу: номер вектора умноженный на 4 считывается из оперативной памяти адрес сегмента
  • подпрограмма обработки прерывания завершается инструкцией конца прерывания – EOI (end of interruption)
  • если обслуживание одновременно запрашивает несколько устройств, то контроллер прерывания обслуживает устройства с наибольшим приоритетом, а остальные устройства блокирует до получения команды конца прерывания

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

· это наиболее быстрый способ обмена поскольку он требует меньшего числа тактов шины, чем при программно-управляющем обмене и обмене в режиме прерывания

· в режиме прямого доступа могут работать LPT, COM, накопитель на магнитной диске, жёсткий диск, сетевые адаптеры

· существует много способов организации обмена в режиме доступа к памяти

1. с захватом цикла (с идентификацией состояния памяти)

· в этом режиме обмен устройства с памятью осуществляется в течении тех машинных циклов процессора, когда последний не обращается к шине

· для идентификации таких состояний процессор может генерировать специальный сигнал, указывающий что шина свободна

2. прямой доступ к памяти с блокировкой процессора по запросу

· в этом случае на время обмена процессор отключается от шин системного интерфейса

· если устройство работает медленно, то оно в режиме прямого доступа к памяти (ПДП) – передаёт отдельные байты

· команда SC – после передачи байта запрос на прямой доступ к памяти сразу снимается DACK

· если устройство работает быстро – данные передаются блоками, DACK не снимается

Источник

Оцените статью
Разные способы