На контроллере есть общее адресное пространство, независимое от числа логических устройств и входящих в контроллер и части, которые дублируются на каждом из устройств. Существуют специальные команды, которые отображают эти части в общее адресное пространство, путем занесения номера логического устройства в специальную ячейку. В свою очередь каждая из этих частей делится на 3 типовых части. Первая часть – управление КПУ в целом; вторая часть зарезервирована; третья часть – регистры, определяемые производителем. Последние части: управление, определяемое производителем и конфигурация производителя, т.е. те данные, которые использует драйвер производителя.
Рис. 1. 21. Регистры конфигурационного адресного пространства
Здесь используется последовательность байт в слове, называемая Big Endian (по младшему адресу выводится более важная информация, чем по старшему).
1. Vender ID – Идентификатор производителя. 0FFFFh – это признак того, что идентификатор производителя не определен, т.е. такого значения быть не может.
2. Device ID – идентификатор устройства, выделяемый производителем.
3. Revision ID – модификация устройства. Определяется производителем самостоятельно.
4. Header Type – тип заголовка. Имеет следующую структуру.
Рис. 1. 22. Структура 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 – устройство неопределенного класса, т.е. не может быть отнесено ни к одному из этих классов.
