Пространство конфигурации PCIe против ECAM - PullRequest
0 голосов
/ 25 июня 2018

Является ли PCIe ECAM точно таким же, как «Регистры конфигурации, совместимые с PCI», только сопоставленные с памятью вместо ввода-вывода?

Мне кажется, что PCIe использует тот же механизм конфигурации, что и обычный PCI:[1]

| 31 | 30 - 24 | 23 - 16 | 15 - 11 | 10 - 8 | 7 - 2 | 1 - 0 | | Enable | Reserved | Bus Nr | Device Nr | Function Nr | Register Nr | 00 |

Но в PCIe вы можете использовать зарезервированные байты для адресации большего количества регистров функции.Это правильно?

В разделе 7.2.1 [2] ECAM определяется как:

| 27 - 20 | 19 - 15 | 14 - 12 | 11 - 8 | 7 - 2 | 1 - 0 | | Bus Nr | Dev Nr | Function Nr | Ext. Register Nr | Register Nr | Byte Enable |

Это выглядит очень похоже на обычную конфигурацию.Только зарезервированные биты сдвигаются в номер регистра, который они расширяют в PCIe.Но я могу использовать их как старый?Обращайтесь к ним только в области памяти, а не в области ввода-вывода?

[1] https://wiki.osdev.o/PCI#Configuration_Space_Access_Mechanism_.231 [2] в спецификации PCI Express Base, ред. 4.0, версия 1.0

1 Ответ

0 голосов
/ 26 июня 2018

Вы смешиваете яблоки и апельсины в своем сравнении. Декодирование первого адреса обеспечивается компонентом хост-моста в системах с архитектурой PC-AT (*). Это способ использования адресного пространства ввода-вывода процессора Intel для взаимодействия с механизмом пространства конфигурации шины PCI. Он может также использоваться в системе PCIe, , поскольку компонент моста хоста PCIe обеспечивает такой же интерфейс для устройств PCIe. Тем не менее, все ниже хост-моста реализовано совершенно по-разному между PCI и PCIe.

Между тем, вторая схема декодирования, которую вы показали, может использоваться только в блоке отображения памяти, через который PCIe обеспечивает доступ к расширенному пространству конфигурации. И только после того, как этот блок был отображен в физическое адресное пространство системно-зависимым способом.

Так что, хотя они имеют похожую функцию, нет, вы не можете использовать их одинаково. Вы можете:

  1. Доступ к первым 256 байтам пространства конфигурации любого устройства PCI или PCIe с использованием первого механизма, но вы должны использовать первую схему адресации, ИЛИ
  2. Доступ ко всему расширенному пространству конфигурации любого устройства PCIe с использованием второго механизма (, включая первые 256 байтов), но затем необходимо использовать вторую схему адресации.

(*) «Пространственный интерфейс ввода-вывода для конфигурации шины PCI через 0xCF8 / 0xCFC» действительно является частью архитектуры Intel / PC-AT. Другие системные архитектуры (например, MIPS) не имеют отдельных адресных пространств ввода / вывода, а разработанные для них мосты хостов имеют разные механизмы для генерации обращений к пространству конфигурации PCIe (или они просто напрямую используют механизм отображения памяти).

...