Адресация периферийных устройств
В составе компьютерной системы, как правило, имеется много периферийных устройств. Для того чтобы их различать, каждому периферийному устройству присваивается необходимое количество уникальных адресов. Соответственно, в контроллере интерфейса устройства предусматриваются схемы для распознавания адресов.
В компьютере периферийные устройства могут адресоваться через:
специальное адресное пространство ввода-вывода;
адресное пространство оперативной памяти.
В случае использования адресного пространства оперативной памяти для адресации периферийных устройств выделяется часть адресов из общего адресного пространства оперативной памяти.
Достоинства такого подхода следующие:
практически неограниченные возможности по выделению адресов для периферийных устройств;
использование для работы с периферийными устройствами в драйверах любых команд и регистров общего назначения архитектуры процессора, а не только специализированных;
использование для программирования драйверов языков высокого уровня, если это целесообразно.
Недостатки такого подхода:
усложнение схем дешифрации адреса в контроллере интерфейса в периферийном устройстве. Так как размер адресного пространства оперативной памяти в современных вычислительных системах составляет величину не менее 4 Гбайт, то количество дешифрируемых разрядов адреса составляет не менее 32-х.
так как каждая адресуемая функция периферийного устройства работает по алгоритму ячейки оперативной памяти и на одинаковом интерфейсе оперативной памяти, то и требования к быстродействию схем контроллера периферийного устройства такие же, как и для микросхем оперативной памяти;
некоторое уменьшение адресного пространства, которое будет использовано для работы оперативной памяти;
повышение стоимости контроллеров периферийных устройств, особенно простых.
В случае использования специального адресного пространства ввода-вывода для работы с периферийными устройствами в системе команд предусматриваются специальные команды ввода-вывода. В архитектуре IA-32/64 такими командами являются команды: IN; OUT; INS; OUTS.Эти команды выполняют обмен информацией между регистром RАХ и регистром (буфером) данных устройства. Адрес устройства задается либо непосредственно в команде ввода-вывода, либо в регистре RDX.
Достоинства использования специального адресного пространства ввода-вывода:
адрес функции периферийного устройства может быть коротким, значит, и необходимы меньшие аппаратурные затраты на дешифрацию адреса. Достаточно распространен случай, когда адрес равен 10 разрядам. При задании в командах IN; OUT; INS; OUTSадреса периферийного устройства через регистр используется 16 младшихразрядов регистраRDX.
программы становятся более наглядными по сравнению с вариантом единого адресного пространства, так как операции ввода-вывода выполняются с помощью специальных команд;
разработка подсистемы ввода-вывода может выполняться отдельно от разработки подсистемы памяти.
Недостатки использования специального адресного пространства ввода-вывода:
ввод-вывод осуществляется только с использованием в процессоре одного регистра RАХ;
для обработки введеной из периферийного устройства порции информации (если аккумулятор – регистр RАХ – занят) требуются дополнительные команды.
Исторически более широкое распространение получил вариант со специализированным адресным пространством ввода-вывода. Это объясняется, в основном, меньшими аппаратурными затратами для его реализации. 20 – 30 лет назад ограничения по затратам аппаратуры имели преобладающее влияние. Стремление уменьшить длину команды, уменьшить затраты на контроллер интерфейса в периферийном устройстве, особенно для относительно простых периферийных устройств, и обусловили широкое распространение такого варианта.
Вариант единого адресного пространства для оперативной памяти и периферийных устройств использовался в некоторых компьютерах, преимущественно в тех, где для связи с оперативной памятью и периферийными устройствами использовалась системная магистраль.
В связи с успехами в развитии микроэлектроники в 90-е годы 20-го века ограничения на аппаратурные затраты для реализации контроллеров интерфейсов (и контроллеров периферийных устройств в целом) перестали играть существенную роль. На первый план при разработке подсистем ввода-вывода, контроллеров интерфейсов, контроллеров периферийных устройств выдвинулись преимущества единого адресного пространства. Особенно отчетливо эти преимущества проявились при внедрении интерфейса PCIи последующих интерфейсов. Поэтому в современных подсистемах ввода-вывода преобладающее влияние получило использование для адресации периферийных устройств единого с оперативной памятью адресного пространства.
24.5. Функции контроллера ПУ и информационная модель взаимодействия
Контроллеры ПУ выполняют следующие функции:
связь с процессором через контроллер внешнего интерфейса;
связь через контроллер внутреннего интерфейса с собственно ПУ;
временная буферизация команд и данных;
обнаружение ошибок и сбоев;
управление работой внешнего устройства.
При выполнении любой операции ввода-вывода (а выполняются операции ввода-вывода под управлением специальных программ операционной системы, так называемых драйверов) драйвер периферийного устройства взаимодействует с периферийным устройством через его контроллер. Драйвер «видит» не само периферийное устройство, которым он должен управлять, а контроллер, который должен обеспечить выполнение всех команд, полученных от драйвера ПУ. При этом сам контроллер ПУ для своего драйвера является специфичным ПУ.
Между процессором и контроллером ПУ в процессе выполнения операции ввода-вывода, между контроллером ПУ и собственно внешним устройством, которым он управляет, передаются следующие типы информации:
команды – управляющая информация от инициатора обмена (процессора, который в данном случае всегда является ведущей стороной) к контроллеру ПУ(ведомой стороне);
ответыконтроллера ПУпроцессору о выполнении полученных от него команд, в том числе и информация о состоянии контроллера ПУ;
данные, передаваемые процессором;
данные, передаваемые контроллером ПУ;
экстренные сообщения контроллера ПУ для процессора для немедленной реакции последнего на непредвиденные события, которые произошли в контроллере ПУ в процессе выполнения операции ввода-вывода и требующие вмешательства процессора.
В ходе выполнения программы на любом отрезке времени процессор может взаимодействовать с одним или несколькими периферийными устройствами, причем последовательность обращений диктуется только драйвером ПУ. Для компьютера эта последовательность является совершенно случайной. Внутренние ресурсы, такие, как оперативная память и коммуникационная подсистема, при этом используются совместно множеством отдельных процессов, в число которых входят и процессы ввода-вывода.
Например, процесс передачи данных от внешнего устройства в процессор может включать такую последовательность операций.
1. Процессор передает контроллеру ПУ приказ проверить состояние подключенного к нему устройства.
2. Контроллер ПУ возвращает процессору информацию о текущем состоянии устройства.
3. Если устройство находится в рабочем состоянии и готово передавать данные, процессор дает контроллеру ПУ команду начать передачу данных.
4. Контроллер ПУ считывает с внешнего устройства порцию данных.
5. Данные передаются от контроллера ПУ в процессор.
Дата добавления: 2015-09-29; просмотров: 1729;