Основная задача маршрутизации – определение, где по отношению к мосту находится ресурс

Маршрутизирующие функции  моста.

Основная задача маршрутизации – определение, где по отношению к мосту находится ресурс, адресованный каждой транзакцией, — является первоочередной  задачей при обработке каждой транзакции, «увиденной» мостом на любом из своих интерфейсов. Эта задача решается двояко, поскольку в фазе адреса может передаваться как иерархический адрес PCI(шина®устройство®функция), так и «плоский» адрес памяти или порта ввода-вывода.                 Маршрутизация по иерархическому адресу.

Через номер шины и номер устройства адресуются транзакции конфигурационной записи и чтения, генерации специального цикла. Для этих транзакций маршрутизация основана на системе нумерации шин. Номера присваиваются магистралям (шинам) PCI при конфигурировании системы строго последовательно. Номера мостов соответствуют номерам их вторичных шин. Так, главный мост имеет номер 0. Номера подчиненных шин моста начинаются с номера, следующего за номером его вторичной шины. Таким образом, для каждого моста необходимые ему знания топологии шин системы описываются списком номеров шин – тремя числовыми параметрами, записанными в его конфигурационном пространстве:

номерпервичнойшины (Primary Bus Number);

— номер вторичной шины (SecondaryBusNumber), это и номер моста;

— максимальный номер подчиненной шины (SubordinateBusNumber).

Все шины с номерами в диапазоне от номера вторичной шины до максимального номера подчиненной шины включительно будут лежать со стороны вторичного интерфейса, все остальные – на стороне первичного.

Знание номеров шины позволяет мостам распространять обращения к конфигурационным регистрам устройств PCI  в сторону от хоста к подчиненным шинам  и распространять специальные циклы во всех направлениях. Ответы на расщепленные транзакции (SplitComplete) мост транслирует с одного интерфейса на другой, если они адресованы к шине противоположного интерфейса.

Конфигурационные транзакции типа 0 или специальные циклы мостами не транслируются. Конфигурационные транзакции типа 1, обнаруженные на первичном интерфейсе, мост обрабатывает следующим образом:

преобразует их в конфигурационные транзакции типа 0 или транзакции специального цикла, если номер шины (на линиях AD[23:16]) соответствует номеру вторичной шины. При преобразовании в цикл типа 0 номер устройства с первичной шины, полученный в фазе адреса, декодируется в позиционный код на вторичной шине, номер функции и номер регистра передается без изменений, биты  AD[1:0] на вторичной шине обнуляются.

пропускает их с первичного интерфейса на вторичный без изменения, если номер шины соответствует диапазону номеров подчиненных шин.

игнорирует их, если номер шины лежит вне диапазона номеров шин стороны вторичного интерфейса.

Маршрутизация по «плоскому» адресу.

Для манипулирования с транзакциями обращения к памяти и портам ввода-вывода мосту нужны карты адресов, на которых отмечены области, принадлежащие устройствам вторичной и подчиненных шин. В системе с плоской уникальной адресацией этого достаточно. Для отмеченных областей мост должен отвечать в качестве целевого устройства на транзакции, «увиденные» им на первичном интерфейсе, и инициировать их в роли устройства-инициатора на вторичном интерфейсе; остальные транзакции на первичном интерфейсе он игнорирует.

Ссылка на основную публикацию
Adblock detector