Введение

Механизм автоматической конфигурации, используемый PCI, является базовым способом, с помощью которого Conventional PCI, PCI X и PCI Express выполняют автоматическую конфигурацию карт, установленных в их шину.

Обзор

Устройства PCI имеют набор регистров, называемый пространством конфигурации, а PCI Express добавляет расширенное пространство конфигурации для устройств. Регистры пространства конфигурации отображаются в области памяти. Драйверы устройств и диагностическое программное обеспечение должны иметь доступ к пространству конфигурации, а операционные системы обычно используют API для обеспечения такого доступа. Если операционная система не предоставляет определенных методов доступа или API для запросов к пространству конфигурации, отображаемому в память, то драйверу или диагностическому программному обеспечению необходимо самостоятельно обеспечить доступ к пространству конфигурации способом, совместимым с базовыми правилами доступа операционной системы. Во всех системах драйверам устройств рекомендуется использовать API, предоставляемые операционной системой, для доступа к пространству конфигурации устройства.

Техническая информация

Одним из основных преимуществ локальной шины PCI перед другими архитектурами ввода/вывода был её механизм конфигурации. Помимо обычных областей памяти и портов ввода/вывода, каждая функция устройства на шине имеет пространство конфигурации объёмом 256 байт, адресуемое по знанию восьмибитного номера шины PCI, пятибитного номера устройства и трёхбитного номера функции устройства (обычно обозначаемого как BDF или B/D/F, сокращение от шина/устройство/функция). Это позволяет использовать до 256 шин, каждая с до 32 устройств, каждое из которых поддерживает восемь функций. Одна PCI-плата может выступать в роли устройства и должна реализовывать как минимум функцию номер ноль. Первые 64 байта пространства конфигурации стандартизованы, остальные доступны для целей, определённых производителем. Некоторые высокопроизводительные компьютеры поддерживают более одного домена PCI (или сегмента PCI); каждый домен PCI поддерживает до 256 шин. Чтобы стандартизировать больше частей пространства конфигурации без конфликтов с существующими назначениями, может быть определён список возможностей в оставшихся 192 байтах пространства конфигурации PCI. Каждая возможность имеет один байт, описывающий её тип, и один байт, указывающий на следующую возможность. Количество дополнительных байтов зависит от идентификатора возможности. Если возможности используются, устанавливается бит в регистре Status, а указатель на первый элемент в связанном списке возможностей предоставляется в регистре Cap. pointer, определённом в стандартизированных регистрах. PCI X 2.0 и PCI Express представили расширенное пространство конфигурации объёмом до 4096 байт. Единственной стандартизированной частью расширенного пространства конфигурации являются первые четыре байта, которые являются началом расширенного списка возможностей. Расширенные возможности очень похожи на обычные, за исключением того, что они могут ссылаться на любой байт в расширенном пространстве конфигурации (используя 12 бит вместо восьми), имеют четырёхбитный номер версии и 16-битный идентификатор возможности. Идентификаторы расширенных возможностей перекрываются с идентификаторами обычных возможностей, но путаница исключена, поскольку они находятся в отдельных списках.

Стандартные реестры

Регистры идентификатора устройства (DID) и идентификатора поставщика (VID) идентифицируют устройство (например, интегральную схему) и обычно называются идентификатором PCI. 16-битный идентификатор поставщика выделяется PCI SIG. 16-битный идентификатор устройства затем присваивается поставщиком. Существует неактивный проект по сбору всех известных идентификаторов поставщиков и устройств (см. внешние ссылки ниже). Регистр состояния используется для сообщения о поддерживаемых функциях и о возникновении определенных типов ошибок. Регистр команд содержит битовую маску функций, которые можно включать и отключать по отдельности. Значения регистра типа заголовка определяют различные структуры оставшихся 48 байт (64 16) заголовка в зависимости от функции устройства. То есть, заголовки типа 1 для корневого комплекса, коммутаторов и мостов, а тип 0 – для конечных точек. Регистр размера кэш-линии должен быть запрограммирован перед тем, как устройству будет разрешено использовать транзакции записи в память и отмены кэша. Обычно это должно соответствовать размеру кэш-линии ЦП, но правильная настройка зависит от системы. Этот регистр не применяется к PCI Express. Идентификатор подсистемы (SSID) и идентификатор поставщика подсистемы (SVID) различают конкретные модели (например, плату расширения). В то время как идентификатор поставщика принадлежит производителю чипсета, идентификатор поставщика подсистемы принадлежит производителю платы. Идентификатор подсистемы присваивается поставщиком подсистемы из того же адресного пространства, что и идентификатор устройства. Например, в случае беспроводных сетевых карт производителем чипа может быть Broadcom или Atheros, а производителем платы – Netgear или Hewlett Packard. Как правило, комбинация идентификатора поставщика и идентификатора устройства определяет, какой драйвер должен загружать хост для работы с устройством, поскольку все платы с одинаковой комбинацией VID:DID могут обрабатываться одним и тем же драйвером. Комбинация идентификатора поставщика подсистемы и идентификатора подсистемы идентифицирует плату, что является информацией, которую драйвер может использовать для внесения незначительных изменений в ее работу.