Перейти к содержанию
    

PCI шина - сколь глубока нора ...

чтобы на практике устройства "определялись" БИОСом и не "терялись" на концах деревьев ...

 

задача практическая ... имею более 70 PCI-шин и до 140 PCI- устройств

 

на самых "дальних" PCI-ветках/шинах (за 9/10-тым P2P мостом) "подветки" и PCI-устройства ... теряются :crying:

 

PS: пока подозрения есть толко на ограничения(какие???) по таймингу , т.е. если "подрезать" ветки стоящие ранее - то в "проблемных" все "находится"

PS2:еще особенности

Latency L0 кое где до 12000 nS (max по спецификациям 8000)

L1 64000 nS (max по спецификациям 128000)

 

 

Изменено пользователем Bios71

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможность раз:

PCI-to-PCI bridge specification говорит о максимальной первичной задержке ответа в 16 тактов от любого таргета (с изначальной дефолтной длительностью) плюс 8 тактов на каждую последующую completion

если каждый бридж съедает по 1 такту upstream и 1 такту downstream, то для классического PCI-to-PCI bridge стабильно работать будут только bus0 иследующие за ним 8 уровней иерархии...

а всё, что навешено дальше 8го - фактически будет обрубаться первым в иерархии бриджем, как completion timeout.

 

возможность два:

BIOS производит энумерацию рекурсивно, при этом одновременно выделяет ресурсы, плюс обеспечивает выравнивание и, соответственно, повторное выделение/перемещение окон. Вероятно, в какойто момент ему приходится настолько сильно увеличивать окно под какой-то из бриджей, что это приводит к "отрезанию" большей части доступной на тот момент оперативки, в результате чего процесс энумерации тупо прерывается, и остальные устройства не ищутся.

основное предположение здесь связано с размещением диапазонов окон устройств-потомков в диапазон окна бриджа-родителя.

Изменено пользователем krux

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможность раз:

PCI-to-PCI bridge specification говорит о максимальной первичной задержке ответа в 16 тактов от любого таргета (с изначальной дефолтной длительностью) плюс 8 тактов на каждую последующую completion

если каждый бридж съедает по 1 такту upstream и 1 такту downstream, то для классического PCI-to-PCI bridge стабильно работать будут только bus0 иследующие за ним 8 уровней иерархии...

а всё, что навешено дальше 8го - фактически будет обрубаться первым в иерархии бриджем, как completion timeout.

 

возможность два:

BIOS производит энумерацию рекурсивно, при этом одновременно выделяет ресурсы, плюс обеспечивает выравнивание и, соответственно, повторное выделение/перемещение окон. Вероятно, в какойто момент ему приходится настолько сильно увеличивать окно под какой-то из бриджей, что это приводит к "отрезанию" большей части доступной на тот момент оперативки, в результате чего процесс энумерации тупо прерывается, и остальные устройства не ищутся.

основное предположение здесь связано с размещением диапазонов окон устройств-потомков в диапазон окна бриджа-родителя.

 

спасибо за указанное направления в которое (хотябы) смотреть

 

с БИОСом действительно не все играет как задумано (хотя я и есть "биос")

виндовс-девайс-менеджер (который я раньше уважал) НЕ показывает "потерянные" устройства,

 

в самой дальней ветке последний(с PCIe-девайсом) и предпоследний мосты (на нем P2P и новая ветка) имеют за собой что то (!!!!) , RW-Everything и PCI.EXE(DOS) показывают часть(первый ряд) затерянных устройств ... но без выделенных ресурсов (а P2P неотображаемый мост не видит 11/12 уровень мостов с устройствами :biggrin: )

 

под такое гигантское(и прожорливое) число устройств выделяю больше 2.5 Гб памяти (на машине 16Гб)

но первые 4Гб являются волшебными ... их любят все и в них лезут, и система и PCI и выделенные ресурсы , а они НЕ резиновые

 

буду копать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а может у вас ещё и конфликт шин случился? всмысле двум физически разным шинам записаны одни и те же [primary bus number]:[secondary bus number]:[subordinate bus number]

 

64-битные BARы, которые ещё и работают ;-) встречаются очень редко, поэтому не смотрите на то что у вас 16 ГБайт. фактически под PCI у вас их всё равно 4 ;-)

и ещё для информации к размышлению: устройствам с 32-разрядными BARами, которые захотят совершить DMA-транзакцию, память (в которую они будут писать/читать) нужна будет тоже из первых 4Гб, т.е. копирование данных туда-сюда из верхних 12 Гбайт будет неизбежно.

 

 

 

и ещё, у вас PCI или PCI-Express?

у PCI-Express привязку к тактам сделать невозможно, т.е. её там нет, зато вместо этого есть таймауты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а может у вас ещё и конфликт шин случился? всмысле двум физически разным шинам записаны одни и те же [primary bus number]:[secondary bus number]:[subordinate bus number]

проверял, вроде все уникально/индивидуально

 

64-битные BARы, которые ещё и работают ;-) встречаются очень редко, поэтому не смотрите на то что у вас 16 ГБайт. фактически под PCI у вас их всё равно 4 ;-)

и ещё для информации к размышлению: устройствам с 32-разрядными BARами, которые захотят совершить DMA-транзакцию, память (в которую они будут писать/читать) нужна будет тоже из первых 4Гб, т.е. копирование данных туда-сюда из верхних 12 Гбайт будет неизбежно.

это я и имел ввиду про "волшебные".... первые 4Гб

 

и ещё, у вас PCI или PCI-Express?

у PCI-Express привязку к тактам сделать невозможно, т.е. её там нет, зато вместо этого есть таймауты.

PCI-Express мосты через удлинитель http://www.onestopsystems.com/pcie_hib38_x8.php (с расширителем до 4-х) на PEG порту(x4) IvyBridge

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не уверен насколько это поможет... но вдруг

 

 

 

для удлинителя ещё одна проблема может быть c ACK latency timeout, при, например, переполнении replay buffer в самом свиче из-за ошибок CRC.

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

в интернетах оно зовётся PLX_SDK_v7_10_Final_2013-08-09

написано на java, периодически глючит, вылетает и т.п. прелести.

этот софт позволяет делать многие вещи со свичами, но для активации плюшек на каждую определенную модель свича нужен отдельный ключ, т.е. в идеале всё равно понадобится NDA, и тогда тут всё печально.

 

L0 и L1 Latency вы где крутите? на IvyBridge?

дело в том что тогда это фактически параметры общения между рут-портом IvyBridge и первым свичем, и к дальним таргетам в иерархии эти параметры никак не относятся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для удлинителя ещё одна проблема может быть c ACK latency timeout, при, например, переполнении replay buffer в самом свиче из-за ошибок CRC.

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

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

 

 

в интернетах оно зовётся PLX_SDK_v7_10_Final_2013-08-09

написано на java, периодически глючит, вылетает и т.п. прелести.

этот софт позволяет делать многие вещи со свичами, но для активации плюшек на каждую определенную модель свича нужен отдельный ключ, т.е. в идеале всё равно понадобится NDA, и тогда тут всё печально.

NDA нас(точнее клиента) сильно не испугаешь, хочу еще посоветовать им поменять DUAL (с адаптером) на -PCIe-HIB38-x8-QUAD

 

L0 и L1 Latency вы где крутите? на IvyBridge?

дело в том что тогда это фактически параметры общения между рут-портом IvyBridge и первым свичем, и к дальним таргетам в иерархии эти параметры никак не относятся.

ну вроде в процессе энумерации для ASPM задержки считаются накопительно , как-то так :

 

Setting ASPM for Link...

UP STREAM PORT -> [b1|D0|F0] <--> [b0|D1|F0] <- DN STREAM PORT

Getting Overwr Aspm Settings for DNSTREAM PORT: Calc ASPM = 0 ... Setup ASPM = 0

Getting Overwr Aspm Settings for UPSTREAM PORT: Calc ASPM = 0 ... Setup ASPM = 0

Status = EFI_SUCCESS : Calc ASPM = 0 ... Overwr ASPM = 0

Calculate MPL :

Link # 1, Link MPL=0; Total MPL=0 dn->[b4|DB|F0]<->[b13|D0|F0]<-up;

Link # 2, Link MPL=0; Total MPL=0 dn->[b2|D8|F0]<->[b3|D0|F0]<-up;

Link # 3, Link MPL=0; Total MPL=0 dn->[b0|D1|F0]<->[b1|D0|F0]<-up;

Calculated MPL 0

 

Calculate L0s:

Link# 0 Lat=2000(nS) dn->[b4|DB|F0]<->[b3|D0|F0]<-up;

Link# 1 Lat=4000(nS) dn->[b2|D8|F0]<->[b1|D0|F0]<-up;

Link# 2 Lat=2000(nS) dn->[b0|D1|F0]<->[b47|D0|F0]<-up;

Total Calclulated latency: 8000 (nS)

Calculate L1 :

Link# 0 Lat=32000(nS) dn->[b4|DB|F0]<->[b3|D0|F0]<-up;

Link# 1 Lat=32000(nS) dn->[b2|D8|F0]<->[b1|D0|F0]<-up;

Link# 2 Lat=8000(nS) dn->[b0|D1|F0]<->[b47|D0|F0]<-up;

Total Calclulated latency: 34000 (nS)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

боюсь, что тут придётся ASPM выключить (и в ACPI соответственно сделать тоже самое).

хотя бы то тех пор пока отлаживаете всё остальное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

боюсь, что тут придётся ASPM выключить. хотя бы то тех пор пока отлаживаете всё остальное

так он и выключен, просто статистика ведется (в процессе PCI-энумерации), что карты поддерживают (Gen1/2/3 ... x1/x4/x8) и пр. сколько стоит т.е. длится L0/L1 для ASPM.... и я ее/статистику посматриваю для "выявления подозрительных мест"

 

и в ACPI соответственно сделать тоже самое

.

 

а вот ето новенькое ... в каком месте и какими методами ... это можно увидеть .... привествуются ссылки

 

Изменено пользователем Bios71

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так ACPI же заполняется BIOS-ом, соответственно в FADT

поле IA_PC

бит PCIe ASPM Control

 

сейчас все операционки читают ACPI, поэтому если BIOS засунул в ACPI что-то не то, то возможны всякие приколы, смешные и не очень.

например windows может найти только 2 ядра процессора вместо 16 (8 с гипертредингом)

 

http://acpi.info/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FADT

поле IA_PC

бит PCIe ASPM Control

http://acpi.info/

 

проверил(RW-Everything), запрещающий бит стоит :(

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PCI-Express мосты через удлинитель http://www.onestopsystems.com/pcie_hib38_x8.php (с расширителем до 4-х) на PEG порту(x4) IvyBridge

 

методом "научного тыка" нащупано ограничение для удлинителя onestopsystems, максимум 64 шины за ним :wacko:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...