С точки зрения центрального процессора и исполняющейся на нем программы, внешние устройства представляют собой наборы специализированных ячеек памяти или, если угодно, регистров. У микроконтроллеров эти ячейки памяти представляют собой регистры центрального процессора, у процессоров общего назначения регистры устройств обычно подключаются к шинам адреса и данных ЦПУ. Устройство имеет адресный дешифратор. Если выставленный на шине адрес соответствует адресу одного из регистров устройства, дешифратор подключает соответствующий регистр к шине данных (рис. 9.1). Таким образом, регистры устройства получают адреса в физическом адресном пространстве процессора.
Рис. 9.1. Подключение внешнего устройства к шине
Два основных подхода к адресации этих регистров — это отдельное адресное
пространство ввода-вывода и отображенный в
память ввод-вывод (memory-mapped I/O), когда память и регистры
внешних устройств размещаются в одном адресном пространстве. В первом
случае для обращения к регистрам Устройств используются специальные команды
IN и OUT. Во втором
Рис. 9.2. Фиксированная и географическая адресация
Географическая адресация обладает свойством, которое на первый взгляд
кажется противоестественным: перемещение платы устройства в другой разъем
приводит к необходимости переконфигурации ОС (а в некоторых случаях, например,
если перемещенная плата была контроллером загрузочного диска, а вторичный
загрузчик или процедура инициализации ядра недостаточно сообразительны,
может даже привести к ошибкам при загрузке). Однако этот способ распределения
адресного пространства удобен тем. тго исключает возможность конфликта
адресов между устройствами разных производителей или между двумя однотипными
устройствами (с этой проблемой должен быть знаком каждый, кто пытался
одновременно установить в компьютер сетевую и звуковую карты конструктива
ISA). Большинство периферийных шин современных
мини- и микрокомпьютеров, такие, как PCI, S-Bus и др., реализуют географическую
адресацию.
Многие современные конструктивы требуют, чтобы кроме регистров управления
и данных устройства имели также конфигурационные регистры, через обращение
к которым ОС может получить информацию об устройстве: фирму-изготовителя,
модель, версию, количество регистров и т. д. Наличие таких регистров позволяет
ОС без вмешательства (или с минимальным вмешательством) со стороны администратора
определить установленное в системе оборудование и автоматически подгрузить
соответствующие управляющие модули.