Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Механизм автоматической конфигурации, используемый PCI, является базовым способом, с помощью которого Conventional PCI, PCI X и PCI Express выполняют автоматическую конфигурацию карт, установленных в их шину.
Auto configuration mechanism used by PCI
PCI configuration space is the underlying way that the Conventional PCI, PCI X and PCI Express perform auto configuration of the cards inserted into their bus.
Обзор
Устройства PCI имеют набор регистров, называемый пространством конфигурации, а PCI Express добавляет расширенное пространство конфигурации для устройств. Регистры пространства конфигурации отображаются в области памяти. Драйверы устройств и диагностическое программное обеспечение должны иметь доступ к пространству конфигурации, а операционные системы обычно используют API для обеспечения такого доступа. Если операционная система не предоставляет определенных методов доступа или API для запросов к пространству конфигурации, отображаемому в память, то драйверу или диагностическому программному обеспечению необходимо самостоятельно обеспечить доступ к пространству конфигурации способом, совместимым с базовыми правилами доступа операционной системы. Во всех системах драйверам устройств рекомендуется использовать API, предоставляемые операционной системой, для доступа к пространству конфигурации устройства.
PCI devices have a set of registers referred to as configuration space and PCI Express introduces extended configuration space for devices. Configuration space registers are mapped to memory locations. Device drivers and diagnostic software must have access to the configuration space, and operating systems typically use APIs to allow access to device configuration space. When the operating system does not have access methods defined or APIs for memory mapped configuration space requests, the driver or diagnostic software has the burden to access the configuration space in a manner that is compatible with the operating system's underlying access rules. In all systems, device drivers are encouraged to use APIs provided by the operating system to access the configuration space of the device.
Техническая информация
Одним из основных преимуществ локальной шины 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-битный идентификатор возможности. Идентификаторы расширенных возможностей перекрываются с идентификаторами обычных возможностей, но путаница исключена, поскольку они находятся в отдельных списках.
One of the major improvements the PCI Local Bus had over other I/O architectures was its configuration mechanism. In addition to the normal memory mapped and I/O port spaces, each device function on the bus has a configuration space, which is 256 bytes long, addressable by knowing the eight bit PCI bus, five bit device, and three bit function numbers for the device (commonly referred to as the BDF or B/D/F, as abbreviated from bus/device/function). This allows up to 256 buses, each with up to 32 devices, each supporting eight functions. A single PCI expansion card can respond as a device and must implement at least function number zero. The first 64 bytes of configuration space are standardized; the remainder are available for vendor defined purposes. Some high end computers support more than one PCI domain (or PCI segment); each PCI domain supports up to 256 buses. In order to allow more parts of configuration space to be standardized without conflicting with existing uses, there can be a list of capabilities defined within the remaining 192 bytes of PCI configuration space. Each capability has one byte that describes which capability it is, and one byte to point to the next capability. The number of additional bytes depends on the capability ID. If capabilities are being used, a bit in the Status register is set, and a pointer to the first in a linked list of capabilities is provided in the Cap. pointer register defined in the Standardized Registers. PCI X 2.0 and PCI Express introduced an extended configuration space, up to 4096 bytes. The only standardized part of extended configuration space is the first four bytes at which are the start of an extended capability list. Extended capabilities are very much like normal capabilities except that they can refer to any byte in the extended configuration space (by using 12 bits instead of eight), have a four bit version number and a 16 bit capability ID. Extended capability IDs overlap with normal capability IDs, but there is no chance of confusion as they are in separate lists.
Стандартные реестры
Регистры идентификатора устройства (DID) и идентификатора поставщика (VID) идентифицируют устройство (например, интегральную схему) и обычно называются идентификатором PCI. 16-битный идентификатор поставщика выделяется PCI SIG. 16-битный идентификатор устройства затем присваивается поставщиком. Существует неактивный проект по сбору всех известных идентификаторов поставщиков и устройств (см. внешние ссылки ниже). Регистр состояния используется для сообщения о поддерживаемых функциях и о возникновении определенных типов ошибок. Регистр команд содержит битовую маску функций, которые можно включать и отключать по отдельности. Значения регистра типа заголовка определяют различные структуры оставшихся 48 байт (64 16) заголовка в зависимости от функции устройства. То есть, заголовки типа 1 для корневого комплекса, коммутаторов и мостов, а тип 0 – для конечных точек. Регистр размера кэш-линии должен быть запрограммирован перед тем, как устройству будет разрешено использовать транзакции записи в память и отмены кэша. Обычно это должно соответствовать размеру кэш-линии ЦП, но правильная настройка зависит от системы. Этот регистр не применяется к PCI Express. Идентификатор подсистемы (SSID) и идентификатор поставщика подсистемы (SVID) различают конкретные модели (например, плату расширения). В то время как идентификатор поставщика принадлежит производителю чипсета, идентификатор поставщика подсистемы принадлежит производителю платы. Идентификатор подсистемы присваивается поставщиком подсистемы из того же адресного пространства, что и идентификатор устройства. Например, в случае беспроводных сетевых карт производителем чипа может быть Broadcom или Atheros, а производителем платы – Netgear или Hewlett Packard. Как правило, комбинация идентификатора поставщика и идентификатора устройства определяет, какой драйвер должен загружать хост для работы с устройством, поскольку все платы с одинаковой комбинацией VID:DID могут обрабатываться одним и тем же драйвером. Комбинация идентификатора поставщика подсистемы и идентификатора подсистемы идентифицирует плату, что является информацией, которую драйвер может использовать для внесения незначительных изменений в ее работу.
The Device ID (DID) and Vendor ID (VID) registers identify the device (such as an IC), and are commonly called the PCI ID. The 16 bit vendor ID is allocated by the PCI SIG. The 16 bit device ID is then assigned by the vendor. There is an inactive project to collect all known Vendor and Device IDs. (See the external links below.) The Status register is used to report which features are supported and whether certain kinds of errors have occurred. The Command register contains a bitmask of features that can be individually enabled and disabled. The Header Type register values determine the different layouts of remaining 48 bytes (64 16) of the header, depending on the function of the device. That is, Type 1 headers for Root Complex, switches, and bridges. Then Type 0 for endpoints. The Cache Line Size register must be programmed before the device is told it can use the memory write and invalidate transaction. This should normally match the CPU's cache line size, but the correct setting is system dependent. This register does not apply to PCI Express. The Subsystem ID (SSID) and the Subsystem Vendor ID (SVID) differentiate specific model (such as an add in card). While the Vendor ID is that of the chipset manufacturer, the Subsystem Vendor ID is that of the card manufacturer. The Subsystem ID is assigned by the subsystem vendor from the same number space as the Device ID. As an example, in the case of wireless network cards, the chip manufacturer might be Broadcom or Atheros, and the card manufacturer might be Netgear or Hewlett Packard. Generally, the Vendor ID–Device ID combination designates which driver the host should load in order to handle the device, as all cards with the same VID:DID combination can be handled by the same driver. The Subsystem Vendor ID–Subsystem ID combination identifies the card, which is the kind of information the driver may use to apply a minor card specific change in its operation.