Jump to content

Конфигурационное пространство PCI

(Перенаправлено из регистра базового адреса )

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

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

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

[ редактировать ]

Одним из основных улучшений локальной шины PCI по сравнению с другими архитектурами ввода-вывода был ее механизм конфигурации. В дополнение к обычным пространствам, отображаемым в памяти и портам ввода-вывода, каждая функция устройства на шине имеет пространство конфигурации длиной 256 байт, адресация которого осуществляется путем знания восьмибитной шины PCI , пятибитного устройства и трехбитной шины. номера битовых функций для устройства (обычно называемые BDF или B/D/F , сокращенно от bus/device/function ). Это позволяет использовать до 256 шин, каждая из которых может содержать до 32 устройств, каждое из которых поддерживает восемь функций. Одна карта расширения PCI может работать как устройство и должна реализовывать как минимум функцию с нулевым номером. Первые 64 байта конфигурационного пространства стандартизированы; остальные доступны для целей, определенных поставщиком. Некоторые высокопроизводительные компьютеры поддерживают более одного домена PCI (или сегмента PCI); каждый домен PCI поддерживает до 256 шин.

Чтобы обеспечить возможность стандартизации большего количества частей конфигурационного пространства без конфликта с существующими вариантами использования, можно определить список возможностей в оставшихся 192 байтах конфигурационного пространства PCI. Каждая возможность имеет один байт, который описывает, какая это возможность, и один байт, указывающий на следующую возможность. Количество дополнительных байтов зависит от идентификатора возможности. Если возможности используются, в регистре состояния устанавливается бит, а в шапке предоставляется указатель на первую в связанном списке возможностей . регистр- указатель , определенный в стандартизированных регистрах.

PCI-X 2.0 и PCI Express представили расширенное пространство конфигурации до 4096 байт. Единственная стандартизированная часть расширенного конфигурационного пространства — это первые четыре байта по адресу. 0x100 , которые являются началом расширенного списка возможностей. Расширенные возможности очень похожи на обычные возможности, за исключением того, что они могут ссылаться на любой байт в расширенном пространстве конфигурации (используя 12 бит вместо восьми), имеют четырехбитный номер версии и 16-битный идентификатор возможности. Идентификаторы расширенных возможностей совпадают с идентификаторами обычных возможностей, но путаницы не возникает, поскольку они находятся в отдельных списках.

Стандартизированные регистры

[ редактировать ]
Стандартные регистры заголовка конфигурационного пространства PCI Type 0 (Non-Bridge)

Регистры Device ID (DID) и Vendor ID (VID) идентифицируют устройство (например, IC ) и обычно называются PCI ID . 16-битный идентификатор поставщика выделяется PCI-SIG . Затем поставщик назначает 16-битный идентификатор устройства. Существует неактивный проект по сбору всех известных идентификаторов поставщиков и устройств. (См. внешние ссылки ниже.)

Регистр состояния используется для сообщения о том, какие функции поддерживаются и произошли ли определенные виды ошибок. Регистр команд содержит битовую маску функций, которые можно индивидуально включать и отключать. Значения регистра типа заголовка определяют различные макеты оставшихся 48 байтов (64–16) заголовка в зависимости от функции устройства. То есть заголовки типа 1 для корневого комплекса, коммутаторов и мостов. Затем введите 0 для конечных точек. Регистр размера строки кэша должен быть запрограммирован до того, как устройству будет сообщено, что оно может использовать транзакцию записи и аннулирования памяти. Обычно это значение должно соответствовать размеру строки кэша ЦП , но правильная настройка зависит от системы. Этот регистр не применяется к PCI Express.

Идентификатор подсистемы (SSID) и идентификатор поставщика подсистемы (SVID) различают конкретную модель (например, карту расширения). Идентификатор поставщика соответствует производителю набора микросхем , а идентификатор поставщика подсистемы соответствует производителю карты. Идентификатор подсистемы назначается поставщиком подсистемы, идентификатор устройства назначается производителем набора микросхем. Например, в случае беспроводных сетевых карт производителем чипа может быть Intel , Broadcom или Atheros , а производителем карты может быть Netgear или Hewlett-Packard . Как правило, комбинация идентификатора поставщика и идентификатора устройства определяет, какой драйвер должен загрузить хост для управления устройством, поскольку все карты с одинаковой комбинацией VID:DID могут обрабатываться одним и тем же драйвером. Комбинация идентификатора поставщика подсистемы и идентификатора подсистемы идентифицирует карту, что представляет собой тип информации, которую драйвер может использовать для внесения незначительных изменений, специфичных для карты, в ее работе.

Перечень автобусов

[ редактировать ]

Для адресации устройства PCI его необходимо включить путем сопоставления с адресным пространством порта ввода-вывода системы или адресным пространством, отображаемым в памяти . Прошивка системы (например, BIOS ) или операционная система программируют регистры базового адреса (обычно называемые BAR) для информирования устройства о конфигурации его ресурсов путем записи команд конфигурации в контроллер PCI. Поскольку все устройства PCI находятся в неактивном состоянии после перезагрузки системы, им не будут назначены адреса, по которым операционная система или драйверы устройств могут взаимодействовать с ними. Либо BIOS , либо операционная система географически обращается к устройствам PCI (например, к первому слоту PCI, второму слоту PCI, третьему слоту PCI или встроенным устройствам PCI и т. д. на материнской плате ) через контроллер PCI с помощью для каждого слота или для каждого устройства сигналы IDSEL (выбор устройства инициализации).

Биты PCI BAR
Биты Описание Ценности
Для всех PCI BAR
0 Тип региона 0 = Память
1 = ввод/вывод
Для планок памяти
2-1 Аренда 0 = любой 32-битный
1 = < 1 МБ
2 = любой 64-битный
3 Предварительная выборка 0 = нет
1 = да
31-4 Базовый адрес естественно выровнено по 16 байтам
Для панелей ввода/вывода
1 Сдержанный
31-2 Базовый адрес естественно выровнено по 4 байта

Когда компьютер включен, шины PCI и устройства должны быть пронумерованы BIOS или операционной системой. Перебор шин выполняется путем попытки доступа к регистрам пространства конфигурации PCI для каждой шины, устройства и функции. Обратите внимание, что номер устройства, отличный от VID и DID, представляет собой просто порядковый номер устройства на этой шине. Более того, после обнаружения нового моста определяется новый номер шины, и нумерация устройств возобновляется с нулевого номера устройства.

Если от функции устройства №0 не получен ответ, мастер шины выполняет отмену и возвращает значение со всеми битами ( FFFFFFFF в шестнадцатеричном формате), что является недопустимым значением VID/DID, поэтому BIOS или операционная система могут определить, что указанная комбинация шина/номер_устройства/функция (B/D/F) отсутствует. Таким образом, когда чтение нулевого идентификатора функции для данной шины/устройства приводит к прерыванию работы ведущего устройства (инициатора), следует предположить, что на этой шине не существует работающего устройства, поскольку устройства должны реализовывать функцию с нулевым номером. В этом случае чтение остальных номеров функций (1–7) не требуется, поскольку их тоже не будет.

Когда чтение указанной комбинации B/D/F для регистра идентификатора поставщика завершается успешно, встроенное ПО системы или операционная система знает, что он существует; он записывает все единицы в свои BAR и считывает запрошенный объем памяти устройства в закодированной форме. Конструкция подразумевает, что все размеры адресного пространства являются степенью двойки и естественным образом выровнены. [1]

На этом этапе BIOS или операционная система запрограммирует отображаемые в памяти адреса и адреса портов ввода-вывода в регистры конфигурации BAR устройства. Эти адреса остаются действительными до тех пор, пока система остается включенной. При выключении питания эти настройки теряются, и процедура повторяется при следующем включении системы. BIOS или операционная система также программируют некоторые другие регистры пространства конфигурации PCI для каждого устройства PCI, например запрос прерывания . Поскольку весь этот процесс полностью автоматизирован, пользователь избавлен от необходимости вручную настраивать любое вновь добавленное оборудование путем изменения DIP-переключателей на самих картах. Автоматическое обнаружение устройств и назначение адресного пространства — это то, как технология Plug and Play реализуется .

Если мост PCI-PCI найден, система должна назначить вторичной шине PCI за мостом номер шины, отличный от нуля, а затем перечислить устройства на этой вторичной шине. Если обнаружено больше мостов PCI, обнаружение продолжается рекурсивно до тех пор, пока не будут проверены все возможные комбинации домен/шина/устройство.

Каждая функция немостового устройства PCI может реализовать до 6 BAR, каждый из которых может отвечать на разные адреса в порте ввода-вывода и адресном пространстве, отображаемом в памяти. Каждый BAR описывает регион [2] [1] это размер от 16 байт до 2 гигабайт, что ниже предела адресного пространства в 4 гигабайта. Если платформа поддерживает опцию «Выше 4G» в прошивке системы, можно использовать 64-битные BAR. BAR с изменяемым размером (также известный как Re-Size BAR , AMD Smart Access Memory (SAM), [3] или ASRock Clever Access Memory (CAM)) [4] — это возможность, которую устройство PCIe может использовать для согласования большего размера BAR. [5] Традиционно размер BAR был ограничен 256 МБ, но современные видеокарты имеют кадровые буферы гораздо большего размера. [3] Это несоответствие привело к неэффективности доступа ЦП к кадровому буферу. [3] Изменяемый размер BAR позволяет процессору получить доступ ко всему кадровому буферу одновременно, тем самым повышая производительность. [3]

Устройство PCI также может иметь дополнительное ПЗУ .

Аппаратная реализация

[ редактировать ]

При доступе к пространству конфигурации устройство PCI не декодирует адрес, чтобы определить, должно ли оно ответить, а вместо этого просматривает сигнал выбора устройства инициализации (IDSEL). Для каждого сигнала IDSEL существует уникальный общесистемный метод активации. Устройство PCI должно декодировать только 11 битов младшего порядка адресного пространства (AD[10] до AD[0]) сигналов адреса/данных и может игнорировать декодирование 21 сигнала A/D высокого порядка (AD[31] до AD[11]), поскольку реализация доступа к пространству конфигурации имеет вывод IDSEL каждого слота, подключенный к разным линиям адреса/данных старшего порядка от AD[11] до AD[31]. Сигнал IDSEL представляет собой отдельный контакт для каждого устройства/адаптера/слота PCI.

Чтобы настроить карту в слоте n , мост шины PCI выполняет цикл доступа к пространству конфигурации, обращаясь к регистру устройства PCI по линиям AD[7:2] (AD[1:0] всегда равны нулю, поскольку регистры представляют собой двойные слова). (32-бита)), а номер функции PCI указан в битах AD[10:8], при этом все нули старшего порядка, за исключением AD[ n +11], используются в качестве сигнала IDSEL в данном слоте/устройстве.

Чтобы уменьшить электрическую нагрузку на критическую по времени (и, следовательно, чувствительную к электрической нагрузке) шину AD[], сигнал IDSEL на разъеме слота PCI обычно подключается к назначенному ему выводу AD[ n +11] через резистор. Это приводит к тому, что сигнал IDSEL PCI достигает своего активного состояния медленнее, чем другие сигналы шины PCI (из-за постоянной времени RC как резистора, так и входной емкости контакта IDSEL). Таким образом, доступ к пространству конфигурации выполняется медленнее, чтобы дать сигналу IDSEL время достичь допустимого уровня.

Сканирование на шине выполняется на платформе Intel путем доступа к двум определенным стандартизированным портам. Эти порты представляют собой адрес пространства конфигурации ( 0xCF8 ) Порт ввода-вывода и данные пространства конфигурации ( 0xCFC ) Порт ввода-вывода. Значение, записываемое в порт ввода-вывода адреса конфигурационного пространства , создается путем объединения значений B/D/F и значения адреса регистров в 32-битное слово.

Программная реализация

[ редактировать ]

Чтение и запись конфигурации может быть инициирована из ЦП двумя способами: один устаревший метод через адреса ввода-вывода. 0xCF8 и 0xCFC и еще один, называемый конфигурацией с отображением в памяти. [6]

Устаревший метод присутствовал в исходном PCI и называется механизмом доступа к конфигурации (CAM). Он позволяет косвенно получить доступ к 256 байтам адресного пространства устройства через два 32-битных регистра, называемых PCI CONFIG_ADDRESS и PCI CONFIG_DATA. Эти регистры находятся по адресам 0xCF8 и 0xCFC в адресном пространстве ввода-вывода x86. [7] Например, программный драйвер (прошивка, ядро ​​ОС или драйвер ядра) может использовать эти регистры для настройки устройства PCI, записывая адрес регистра устройства в CONFIG_ADDRESS и помещая данные, которые должны быть записаны в устройство, в КОНФИГ_ДАННЫЕ. Поскольку для записи в регистр устройства этот процесс требует записи в регистр, он называется «косвенным».

Формат CONFIG_ADDRESS следующий:

0x80000000 | bus << 16 | device << 11 | function <<  8 | offset

Как объяснялось ранее, адресация устройства через шину, устройство и функцию (BDF) также называется «географической адресацией устройства». Видеть arch/x86/pci/early.c в коде ядра Linux для примера кода, использующего географическую адресацию. [8]

Когда на некоторых процессорах AMD используется расширенное конфигурационное пространство, дополнительные биты смещения 11:8 записываются в биты 27:24 регистра CONFIG_ADDRESS: [9] [10]

0x80000000 | (offset & 0xf00) << 16 | bus << 16 | device << 11 | function <<  8 | (offset & 0xff)

Второй метод был создан для PCI Express. Это называется механизмом расширенного доступа к конфигурации (ECAM). Он расширяет пространство конфигурации устройства до 4 КБ, при этом нижние 256 байт перекрывают исходное (устаревшее) пространство конфигурации в PCI. Часть адресного пространства «украдена», так что доступ со стороны ЦП не идет к памяти, а достигает данного устройства в структуре PCI Express. Во время инициализации системы BIOS определяет базовый адрес для этой «украденной» адресной области и сообщает его корневому комплексу и операционной системе.

Каждое устройство имеет собственное пространство размером 4 КБ, и информация о каждом устройстве доступна через простой массив. dev[bus][device][function] так что для этого использования «украдено» 256 МБ физического непрерывного пространства (256 шин × 32 устройства × 8 функций × 4 КБ = 256 МБ). Базовый физический адрес этого массива не указан. Например, в современных системах x86 таблицы ACPI содержат необходимую информацию. [11]

См. также

[ редактировать ]
  1. ^ Jump up to: а б «Регистры базовых адресов» . PCI . osdev.org. 24 декабря 2013 г. Проверено 17 апреля 2014 г.
  2. ^ «Методы настройки PCI» . прочтите.seas.hardvard.edu. 22 ноября 2011 г. Проверено 27 сентября 2021 г.
  3. ^ Jump up to: а б с д Арчер, Джеймс (07 декабря 2021 г.). «Что такое Resizable BAR и стоит ли его использовать?» . Каменно-бумажный дробовик . Проверено 26 марта 2024 г.
  4. ^ Рэйвенлорд (04 декабря 2020 г.). «ASRock реализует CAM (память с интеллектуальным доступом) на материнской плате Intel Z490 Taichi» . TechPowerUp . Проверено 26 марта 2024 г.
  5. ^ «Что такое изменяемый размер BAR и как его включить?» . intel.com . Корпорация Интел. 18 апреля 2023 г. Проверено 26 марта 2024 г.
  6. ^ «Доступ к регистрам конфигурации PCI Express* с использованием наборов микросхем Intel» (PDF) . Корпорация Интел . Проверено 27 сентября 2018 г.
  7. ^ «Механизм настройки PCI №1» . osdev.org . 01.01.2015 . Проверено 1 января 2015 г.
  8. ^ «kernel/git/stable/linux-stable.git:arch/x86/pci/early.c (дерево стабильных версий ядра Linux, версия 3.12.7)» . ядро.орг . Проверено 10 января 2014 г.
  9. ^ «kernel/git/stable/linux-stable.git:arch/x86/pci/direct.c (дерево стабильных версий ядра Linux, версия 3.12.7)» . ядро.орг . Проверено 11 сентября 2017 г.
  10. ^ Рихтер, Роберт. «x86: добавить доступ к расширенному конфигурационному пространству PCI для AMD Barcelona» . ядро.орг . Проверено 26 сентября 2018 г.
  11. ^ «XSDT — OSDev Wiki» . Проверено 30 апреля 2017 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 606ffcf5d603cc737a5563ff20a3925b__1722614760
URL1:https://arc.ask3.ru/arc/aa/60/5b/606ffcf5d603cc737a5563ff20a3925b.html
Заголовок, (Title) документа по адресу, URL1:
PCI configuration space - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)