Jump to content

    
Sign in to follow this  
FLTI

Какой утилитой можно узнать Maximum Payload Size материнской платы?

Recommended Posts

Под линуксом lspci

lspci -vv -s 02:00.0
02:00.0 Class ff00: Altera Corporation Device e001 (rev 01)
        Subsystem: Device 5bde:1100
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 4 bytes
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at fdbf0000 (64-bit, prefetchable) [size=64K]
        Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [78] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] Express (v2) Legacy Endpoint, MSI 00
                DevCap: MaxPayload 2048 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
                LnkCap: Port #1, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 unlimited, L1 unlimited
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Range ABCD, TimeoutDis+
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
                LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -3.5dB
        Capabilities: [100 v1] Virtual Channel
                Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                Arb:    Fixed- WRR32- WRR64- WRR128-
                Ctrl:   ArbSelect=Fixed
                Status: InProgress-
                VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                        Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                        Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=ff                                                    
                        Status: NegoPending- InProgress-

 

Но тут я вижу два MaxPayload, а какой из них относится к матери - не знаю, надо разбираться.

 

Под виндоусом можно попробовать в программе pciscope посмотреть.

 

 

Share this post


Link to post
Share on other sites

Я с ним мало работал, так что "точно" не знаю есть он там или нет. Но он должен отображать все конфигурационное пространство. И если lspci показывает какие-то Maximum Payload Size, а берет он их точно из конфигурационного пространства, то и вероятнее всего Рciscope должен показать.

 

Вот так вот сходу не нагуглил по какому адресу лежит Maximum Payload Size в configuration space.

 

 

Еще может в биосе имеется какая инфа...

Share this post


Link to post
Share on other sites

По ходу поиска инфы о Maximum Payload Size наткнулся в книге "Юрий Зозуля Тонкая настройка компьютера с помощью BIOS. Начали!" ( Питер; Санкт-Петербург; 2010

ISBN 978-5-49807-693-5 ) на следующее определение:

 

Maximum Payload Size

 

Параметр присутствует в некоторых системных платах с шиной PCI Express и задает максимальный размер пакета данных, передаваемого по этой шине.

Возможные значения – 128, 256, 512, 1024, 2048,4096. Они определяют максимальный размер пакета в байтах.

По умолчанию устанавливается значение 4096, которое не следует менять без особой необходимости, поскольку при этом обеспечивается максимальная производительность PCI Express.

 

Неужели Maximum Payload Size по умолчанию устанавливается значение 4096? :wacko:

 

 

Share this post


Link to post
Share on other sites
По ходу поиска инфы о Maximum Payload Size наткнулся в книге "Юрий Зозуля Тонкая настройка компьютера с помощью BIOS. Начали!" ( Питер; Санкт-Петербург; 2010

ISBN 978-5-49807-693-5 ) на следующее определение:

 

Maximum Payload Size

 

Параметр присутствует в некоторых системных платах с шиной PCI Express и задает максимальный размер пакета данных, передаваемого по этой шине.

Возможные значения – 128, 256, 512, 1024, 2048,4096. Они определяют максимальный размер пакета в байтах.

По умолчанию устанавливается значение 4096, которое не следует менять без особой необходимости, поскольку при этом обеспечивается максимальная производительность PCI Express.

 

Неужели Maximum Payload Size по умолчанию устанавливается значение 4096? :wacko:

 

У меня в проекте под Альтеру в настройках PCIE установлено Maximum Payload Size = 128. Можно увелиичить до 256 или 512. Трогать его не собираюсь, проект работает, скорость получилась 800МБайт/с, нас устраивает. Для материнской платы я не знаю какой Maximum Payload Size, но так как 128 - это минимум, то конфликтов быть не может.

 

Я так понял есть два параметра Maximum Payload Size:

1. для девайса, указывающий максимальный размер пакетов, выходящих из девайса или входящих в девайс.

2. для рута (для материнской платы), указывающий максимальный размер пакетов, выходящих из рута или входящих в рут.

Первый настраивается разработчиком девайса.

Второй настраивается разработчиком материнской платы (или пользователем через опции биоса, если такие предоставляются).

 

 

У вас вообще в чем проблема с Maximum Payload Size?

 

 

Share this post


Link to post
Share on other sites

Да вот в соседней теме http://electronix.ru/forum/index.php?showtopic=121074 столкнулся с проблемой, что на матери P75 скорость host->FPGA падает по сравнению с P55.

В ядре PCIe x 4 GEN1 на базе Altera HardIP в настройках PCIE тоже установлено Maximum Payload Size = 128.

Ядро небыстрое, работает на внутренней частоте 125 МГц, поэтому максимум может ~400МБ/c.

Но на P75 матери даже 300 МБ/с не пропускает, идут потери данных, а на P55 всё нормально.

 

Я пытаюсь понять - в чём разница между этими двумя матерями, что так отличаются скорость в слоте PCIe x 4.

Начать выяснение решил с того, чтобы выяснить - какой у них Maximum Payload Size.

Share this post


Link to post
Share on other sites

Года 2 назад был такой экспириенс.

Описание ситуации здесь http://electronix.ru/forum/index.php?showt...t&p=1077326.

Там не расписал, но проблема дополнялась тем, что система намертво вешалась на системнике с процессором CoreDuo, а на системниках с Intel I3 и AMD Phenomx4 все работало без сбоев.

 

При этом формирование заголовка пакета и самого пакета велось в соответствии с спецификацией на PCIE, но на одном компе вешалось, на двух других - нет.

 

 

Вы пишите, что для PCIE корки установлено Maximum Payload Size = 128, тогда (по идеи) абсолютно не важно какой Maximum Payload Size у матери, она возвращаемые пакеты должна урезать до 128 байт. Вот если она этого не делает, тогда будут конфликты.

 

А как вы формируете заголовок пакета? Какие Requester ID и Tag задаете? Другие поля заголовка?

И в чем проявляется потеря данных?

 

Share this post


Link to post
Share on other sites
Вы пишите, что для PCIE корки установлено Maximum Payload Size = 128, тогда (по идеи) абсолютно не важно какой Maximum Payload Size у матери, она возвращаемые пакеты должна урезать до 128 байт. Вот если она этого не делает, тогда будут конфликты.

А вдруг у P75 матери Maximum Payload Size < 128 ?

 

А как вы формируете заголовок пакета? Какие Requester ID и Tag задаете? Другие поля заголовка?

И в чем проявляется потеря данных?

Это ядро у меня в виде .qxp, поэтому подробностей не знаю.

Потеря данных - при пересылке host->FPGA вместо потока данных время от времени идут постоянные уровни.

При пересылке FPGA->host такой проблемы нет, плата с этим ядром нормально работает на 300 МБ/с и на P55, и на P75.

То есть дело не в плате, не в ядре, а какая-то особенность материнки.

Возможно, что и на каких-то других материнках проблем не будет, а на каких-то будет.

Share this post


Link to post
Share on other sites
А вдруг у P75 матери Maximum Payload Size < 128 ?

 

 

Это ядро у меня в виде .qxp, поэтому подробностей не знаю...

 

Так ведь "возможные значения – 128, 256, 512, 1024, 2048,4096".

Меньше 128 не может быть.

 

 

А сигналтапом можно подцепиться к внутренним сигналам .qxp? Например, к tx_st_valid, tx_st_data?

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this