double arrow

Адресация периферийных устройств

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

В компьютере периферийные устройства могут адресоваться через:

специальное адресное пространство ввода-вывода;

адресное пространство оперативной памяти.

В случае использования адресного пространства оперативной памяти для адресации периферийных устройств выделяется часть адресов из общего адресного пространства оперативной памяти.

Достоинства такого подхода следующие:

практически неограниченные возможности по выделению адресов для периферийных устройств;

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

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

Недостатки такого подхода:

усложнение схем дешифрации адреса в контроллере интерфейса в периферийном устройстве. Так как размер адресного пространства оперативной памяти в современных вычислительных системах составляет величину не менее 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. Данные передаются от контроллера ПУ в процессор.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: