Як визначається пристрій у перерахунку PCI? (шина / пристрій / функція)


8

Мене плутає перерахування шин PCI / пристроїв / функцій PCI. Переглядаючи сторінку Вікіпедії для конфігурації PCI , я бачу, що для даної шини ведучий запитає ідентифікатор постачальника та ідентифікатор пристрою для всіх пристроїв, що використовують функцію 0. Якщо всі 0xFF повернуті, пристрою немає, і перерахунок продовжується. Якщо знайдено дійсний ідентифікатор пристрою та ідентифікатор постачальника, то там є блок PCI, і він буде перерахований. Я не впевнений, як визначається пристрій у функції bus.device.function.

Наприклад, скажімо, у мене є процесор з однією шиною PCI та однією PCI периферією, приєднаною до нього. Я розумію, що процесор буде шукати шину 0 (за замовчуванням) і перевірятиме всі номери пристроїв, які дивляться на функцію 0. Як визначається номер пристрою периферійного пристрою?

Відповіді:


6

У оригінальній рамці PCI ("Звичайна PCI"), а також в PCI-X, пристрої відповідали "слотам", кожен зі своїми роз'ємами, приєднаними до тієї ж паралельної шини. Кожен слот мав унікальний ідентифікаційний штифт, який стверджувався під час перерахунку. Перерахування по суті запитувало (для кожного слота): "Ей, чи є щось у цьому слоті?" Пристрій реагував на передачу даних на шину у відповідь на цей сигнал. Відсутність відповіді означало відсутність пристрою.

Пристрій також може бути "мостом", що означало, що він утворює підпорядковану шину. Ця шина мала б окремий ідентифікатор (присвоєний з висхідного потоку) та мала б свій набір слотів, які були перераховані незалежно.

PCI-Express (PCIe) зовсім інший. PCIe насправді не є шиною - як у ресурсі, що ділиться між пристроями; натомість кожен пристрій має власне індивідуальне послідовне з'єднання "точка-точка" до свого верхнього пристрою (і до будь-яких пристроїв нижче - і якщо у нього є пристрої нижче, це означає, що він також функціонує як міст). Подумай про PCIe як про локальну мережу. Кожен міст є аналогом комутатора, який має купу портів, підключених до інших пристроїв. Інші пристрої можуть бути кінцевими пристроями, або вони можуть бути іншими комутаторами (тобто мостами PCIe).

PCIe був розроблений таким чином, що його концептуальні рамки та адресація (а отже, і поведінка, що надається програмному забезпеченню) сумісні з PCI та PCI-X. Однак реалізація зовсім інша. Наприклад, при перерахуванні пристроїв, оскільки це "точка-точка", єдине питання, яке потрібно визначити в кожній точці перерахування, - "щось там?" Оскільки кожен пристрій має власний незалежний набір проводів, ідентифікатори пристроїв, по суті, всі жорстко закодовані (отже, кожен міст, включаючи "кореневий комплекс" верхнього рівня, повідомляє кожному пристрою, яким буде його ідентифікатор пристрою).

У всіх випадках "функціональна" частина шини / пристрою / функції обробляється суворо в межах периферії. Наприклад, двопортовий контролер NIC часто матиме дві функції, по одній для кожного порту. Вони можуть бути налаштовані та керовані незалежно, але шлях даних від процесора до функції однаковий для обох.


1
Відповідь трохи заплутаний: 1) в PCI "номер пристрою" насправді означає "номер слота" (і це має сенс), 2) ви говорите "PCIe зовсім інший" і "оскільки кожен пристрій має свій незалежний набір проводів" , ідентифікатори пристроїв, по суті, всі жорстко закодовані ", що означає, що набір проводів (= слот) має жорсткий код для нього, таким чином, він такий же, як і в PCI. Тепер питання, коли відбувається «жорстке кодування»? Комутатори / мости переназначають ідентифікатори при скиданні?
xealits

2
Так. Це можна сказати краще. Справа в тому, що в PCI карта знаходиться на загальній шині, але "знає", в якому слоті знаходиться, і реагує лише тоді, коли стверджується його специфічний слот. У PCIe міст має N різних наборів "проводів". Отже, пристрій мосту має дискретний номер прорізу для кожного набору проводів. З точки зору мосту, ця гніздо має певну кількість; він повинен лише визначити, чи є щось там. Сама картка не знає, в якому слоті знаходиться. Коли міст визначає, що там щось є, він повідомляє цьому пристрою, який номер його слота.
Гіл Гамільтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.