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