PCI/ru: Difference between revisions
mNo edit summary |
|||
Line 9: | Line 9: | ||
===Принципы адресации устройств=== | ===Принципы адресации устройств=== | ||
Характерной особенностью шины PCI является наличие трёх адресных пространств: | |||
* от 0 до 6 ''связных зон'' адресации портов ввода/вывода; | |||
* от 0 до 7 связных зон адресации внутренней памяти (включая ROM) и отображённых на память устройств ввода/вывода; | |||
* конфигурационное адресное пространство размером 1кб (расширено до 4кб в спецификации PCI Express). | |||
Термин "''связная зона''" означает некий диапазон адресов, однозначно соответствующих конкретным регистрам ввода/вывода и внутренним ячейкам памяти устройства, не содержащий пустых областей и не пересекающийся с адресными зонами других устройств. | |||
Назначение конкретных адресов каждой из адресных зон производится этапе '''конфигурации''': | |||
* непосредственно после включения питания - под управлением BIOS; | |||
* после загрузки ОС (подгонка под адресную модель ядра и ''Hotplug'') - под управлением шинных драйверов и подсистемы ACPI. | |||
Важно, что само устройство при конфигурации выступает лишь "заказчиком" адресного пространства для своих устройств, указывая требуемый размер каждой зоны ввода/вывода или MMIO (или 0, если данная зона устройству не нужна); конкретные адреса для этих зон выделяются BIOSом или операционной системой в соответствии с имеющимися ресурсами и используемой моделью памяти. | |||
BDF-адрес устройства в системном конфигурационном пространстве (см.ниже) определяется его физическим подключением к конкретному слоту PCI-шины (для интегрированных устройств - схемой разводки сигнальных линий на материнской плате и регистровой моделью чипсета) и поэтому не зависит ни от BIOS, ни от операционной системы. | |||
По окончании конфигурации назначенные адреса хранятся в '''BAR'''-регистрах конфигурационного пространства и могут быть прочитаны драйвером и пользовательской программой. | |||
В принципе, PCI-устройство может вообще не иметь никаких ресурсов ввода/вывода - ни портов, ни MMIO); однако его конфигурационное пространство должно существовать в любом случае. | |||
===Конфигурационное пространство=== | ===Конфигурационное пространство=== |
Revision as of 11:18, 13 July 2010
Шина PCI
Спецификация PCI задаёт один из основных стандартов аппаратной и программной организации современных ПК.
Официальный стандарт распространяется группой PCI SIG [1] для ограниченного круга подписчиков; однако в Сети можно найти исчерпывающую информацию практически обо всех технических деталях.
История создания и эволюции PCI - см. [2]. Здесь лишь кратко напомним, что внедрение шины PCI в середине 90-х привело к мощному рывку в развитии компьютерной техники. Настолько мощному, что уже к началу 2000-х она превратилась в один из тормозящих факторов. В новых системах четко прослеживается тенденция сокращения сектора PCI-карт и вытеснения собственно шины на периферию Южного Моста.
Тем не менее, основные принципы адресации, конфигурирования и программной организации устройств, заложенные стандартом PCI, остаются неизменными.
Принципы адресации устройств
Характерной особенностью шины PCI является наличие трёх адресных пространств:
- от 0 до 6 связных зон адресации портов ввода/вывода;
- от 0 до 7 связных зон адресации внутренней памяти (включая ROM) и отображённых на память устройств ввода/вывода;
- конфигурационное адресное пространство размером 1кб (расширено до 4кб в спецификации PCI Express).
Термин "связная зона" означает некий диапазон адресов, однозначно соответствующих конкретным регистрам ввода/вывода и внутренним ячейкам памяти устройства, не содержащий пустых областей и не пересекающийся с адресными зонами других устройств.
Назначение конкретных адресов каждой из адресных зон производится этапе конфигурации:
- непосредственно после включения питания - под управлением BIOS;
- после загрузки ОС (подгонка под адресную модель ядра и Hotplug) - под управлением шинных драйверов и подсистемы ACPI.
Важно, что само устройство при конфигурации выступает лишь "заказчиком" адресного пространства для своих устройств, указывая требуемый размер каждой зоны ввода/вывода или MMIO (или 0, если данная зона устройству не нужна); конкретные адреса для этих зон выделяются BIOSом или операционной системой в соответствии с имеющимися ресурсами и используемой моделью памяти.
BDF-адрес устройства в системном конфигурационном пространстве (см.ниже) определяется его физическим подключением к конкретному слоту PCI-шины (для интегрированных устройств - схемой разводки сигнальных линий на материнской плате и регистровой моделью чипсета) и поэтому не зависит ни от BIOS, ни от операционной системы.
По окончании конфигурации назначенные адреса хранятся в BAR-регистрах конфигурационного пространства и могут быть прочитаны драйвером и пользовательской программой.
В принципе, PCI-устройство может вообще не иметь никаких ресурсов ввода/вывода - ни портов, ни MMIO); однако его конфигурационное пространство должно существовать в любом случае.
Конфигурационное пространство
Стандартные поля
BAR-регистры
Регистры состояния и контроля
Дополнительные поля
Адресное пространство
Адресация памяти
(продолжение следует)