Может оказаться, что на одной плате существуют многофункциональные устройства. Пример, на звуковой карте есть очень много устройств: входной и выходной каналы, регулятор громкости, микшер и т.д. и т.п. А конфигурационное адресное пространство одно. Каждое из этих устройств независимо: микшер может быть, а может и не быть, также и регулятор. Т.е. на контроллере может быть несколько логических устройств.
Рис. 1. 72. Конфигурационное адресное пространство
Это те регистры КПУ, которые он должен отобразить в адресном пространстве (АП) СИ PCI. Эти регистры разделены на две большие части. К первой части относятся те регистры, которые используются в одном экземпляре для всего контроллера, а ко второй части – ячейки для каждого из устройств, подключаемых к контроллеру.
На контроллере есть общее адресное пространство, независимое от числа логических устройств и входящих в контроллер и части, которые дублируются на каждом из устройств. Существуют специальные команды, которые отображают эти части в общее адресное пространство, путем занесения номера логического устройства в специальную ячейку. В свою очередь каждая из этих частей делится на 3 типовых части. Первая часть – управление КПУ в целом; вторая часть зарезервирована; третья часть – регистры, определяемые производителем. Последние части: управление, определяемое производителем и конфигурация производителя, т.е. те данные, которые использует драйвер производителя.
Рис. 1. 73. Регистры конфигурационного адресного пространства
Здесь используется последовательность байт в слове, называемая Big Endian (по младшему адресу выводится более важная информация, чем по старшему).
1. Vender ID – Идентификатор производителя. 0FFFFh – это признак того, что идентификатор производителя не определен, т.е. такого значения быть не может.
2. Device ID – идентификатор устройства, выделяемый производителем.
3. Revision ID – модификация устройства. Определяется производителем самостоятельно.
4. Header Type – тип заголовка. Имеет следующую структуру.
Рис. 1. 74. Структура Header Type
Если седьмой разряд равен, “1” – устройство многофункциональное, если – “0”, устройство не многофункциональное.
5. Class Code – Определяет тип устройства, необходимый для правильного выбора стандартного драйвера.
0Вh – базовый класс.
0Аh – подкласс устройства.
09h – тип программного интерфейса. Есть специальные приложения, в которых оговорены эти типы.
К базовым классам:
0 – устаревшие устройства.
1 – контроллер массовой памяти.
2 – сетевой контроллер.
3 – контроллер дисплея.
4 – мультимедийные устройства.
5 – контроллер памяти.
6 – мост.
7 – коммуникационный контроллер.
8 – BIOS.
9 – входное устройство.
10 – контроллер криптографического закрытия данных.
В – процессор.
С – последовательный контроллер.
D – беспроводный контроллер.
FF – устройство неопределенного класса, т.е. не может быть отнесено ни к одному из этих классов.