Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASNI_lektsii_chto_vse_chitayut.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
475.18 Кб
Скачать

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

  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);

var

I: byte;

DR, SR, CR: word;

begin

DR:= MemW[0:$408];

SR:= DR + 1;

CR:= SR + 1;

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

begin

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

readln;

end

else

for I:=1 to sizeof (D) do

begin

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

Port[DR]:= D[I];

Port[CR]:= $D; {13}

{можно добавить ещё одно переприсвоение, для того чтобы компьютер успевал сначала добавить, а потом сбросить бит}

Port[CR]:= $C; {12}

end;

End.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • прерывания, о которых идёт речь, это аппаратные или внешние прерывания (т.е прерывания генерируемые внешними по отношению к процессору устройствами)

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

  • маскируемые прерывания (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 не снимается

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