Auteur Sujet: Règles de compatibilité cartes mères pour le 10Gb/s  (Lu 53235 fois)

0 Membres et 1 Invité sur ce sujet

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 479
  • Malissard (26)
Règles de compatibilité cartes mères pour le 10Gb/s
« le: 07 avril 2019 à 18:14:55 »
Ce thread liste les précautions à prendre et/ou vérifier avant de se lancer dans un upgrade vers une connectivité 10Gb/s. Une telle connexion représente un flux pouvant aller jusqu'à 1,2Go/s, l'impact est très important en regard des ressources disponibles sur une carte mère. D'autant plus que ce flux doit bien aller quelque part au final.

"Moi aussi je veux ça"



Choix du bus

Le bus PCI standard était déjà juste suffisant(*) pour le Gigabit. En version 64bits (533Mo/s) ou même PCI-X (1066Mo/s),  ce n'est pas suffisant non plus.

*: à condition de trouver la bonne carte, cf https://lafibre.info/infrastructure/carte-reseau-1-gbs-limitee-a-500-mbs/

Le bus PCI-Express supporte couramment 3 normes sur nos cartes mères actuelles:
 - 1.0/1.1:  taux de 2,5GT/s soit 250Mo/s par ligne
 - 2.0:  taux de 5GT/s soit 500Mo/s par ligne
 - 3.0: taux de 8GT/s soit 984,6Mo/s par ligne

Prochaines versions (non implèmentée ou en cours de finalisation):
 - 4.0: taux de 16GT/s soit 1969Mo/s par ligne
 - 5.0: taux de 32GT/s soit 3938Mo/s par ligne

Attention: il s'agit du débit brut, pas du débit utile. Le protocole PCI-Express a en effet un overhead.

Le nombre de lignes utilisables suit cette règle: x1, x2, x4, x8 et x16. En pratique, on ne trouve jamais de x2.

Les connecteurs  courant sont x1, x4, x8 et x16. Attention, il s'agit d'une taille physique ! En effet, la norme PCI-Express prévoit une rétro-compatibilité: un périphérique x1 peut être utilisé dans un slot x16. Pour faire l'inverse il suffit d'un adaptateur ou que le slot ne soit pas pourvu d'encoche.

Ainsi, toutes les lignes ne sont pas forcèment câblées, soit pour une question de coût, soit car il n'y en a plus de disponibles.

Dans le reste de ce thread, la notation PCIe sera utilisée.

Northbridge ou Southbridge ?

Jusqu'en 2008/2009, les processeurs d'Intel faisaient appel à un chipset pour communiquer avec le monde extérieur, on l'appelle le "Northbridge". Ce chipset était une puce en charge:
 - des accès mémoire
 - du connecteur graphique dédié (AGP puis PCIe)
 - ou éventuellement d'un chipset graphique intégré
 - de la connexion avec le "southbridge", via une connexion dédiée (PCI au début puis DMI à la fin)
 - parfois en option un contrôleur Ethernet

Chez Intel, le Northbridge a l'acronyme de MCH pour Memory Controller Hub https://en.wikipedia.org/wiki/Northbridge_(computing)

Le "Southbridge" était à son tour en charge des connexions avec les périphériques dits "lents", c'est-à-dire:
 - contrôleur IDE ou SATA pour les disques durs
 - contrôleur USB
 - contrôleur audio AC'97
 - bus I2C
 - bus PCI
 - contrôleur Ethernet

Chez Intel, le Southbridge est connu sous l'acronyme "ICH" pour I/O Controller Hub https://en.wikipedia.org/wiki/I/O_Controller_Hub.

Cette architecture a rapidement atteint 2 limites:
 - le bus Processeur <-> MCH, dit FSB (Front Side Bus), limite les accès vers la mémoire et la carte graphique
 - le bus MCH<->ICH limite à son tour les échanges avec l'extérieur.

Un seul chipset

Comment faire ? Simple:
 - migration du contrôleur RAM dans le CPU
 - intégration du connecteur graphique PCIe x16 dans le CPU
 - création d'un bus normalisé entre le CPU et le Southbridge

Oups pardon, le PCH, Platform Controller Hub https://en.wikipedia.org/wiki/Platform_Controller_Hub

Les accès mémoires sont désormais plus rapide, du fait de la latence réduite par l'accès direct et parce qu'il est assez simple d'augmenter la bande passante mémoire en jouant sur le nombre de contrôleur (1 seul au début, puis 2, 3 et même 4 aujourd'hui).

Autre avantage de la solution, Intel a pu intégrer directement un contrôleur graphique dans ses processeurs.

Intel a même été plus loin en intégrant le PCH au sein du processeur sous la forme d'un SoC unique.

"Chouette, fini les problèmes de bande passante !"

Pas tout à fait, si on a réglé le problème de la mémoire et du bus graphique, il reste toujours une connectivité à améliorer vers l'extérieur.

Explique-moi ton besoin, je te dirais comment t'en passer

Au minimum, une carte réseau 10Gb/s a besoin de 4 lignes PCIe 2.0. En 1.1, on n'a que 1000Mo/s théoriques donc ça ne sera pas suffisant, il faudrait alors 8 lignes PCIe 1.1.

Ainsi on trouvera des cartes PCIe 2.0 x8: grace à la rétro-compatibilité, en PCIe 1.1 elles auront suffisamment de bande passante pour 1x 10Gb/s.

En revanche, s'il y a 2 ports 10Gb/s, le PCIe 3.0 devient obligatoire sur 4 lignes.

 
« Modifié: 16 juin 2019 à 19:50:56 par BadMax »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 479
  • Malissard (26)
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #1 le: 07 avril 2019 à 18:19:16 »
Tableau des ressources PCIe de la génération MCH/ICH



En admettant que le processeur de cette génération parvienne à gérer le flux, il n'y a quasiment aucune chance de trouver les ressources PCIe nécessaires sur les ICH7 et 9. Sur ICH8 et 10, en admettant qu'on regroupe 4 lignes (maximum possible sur les 6), on n'aurait que 1000Mo/s disponibles... sans parler qu'on utiliserait toute la capacité du FSB.

Eventuellement sur le 975X, on pourrait utiliser un PCIe x8 au détriment de la carte graphique.

Reste les X38/X48 qui pourraient éventuellement supporter une carte 10Gb/s via le 2e PCIe x16.
« Modifié: 16 juin 2019 à 19:52:03 par BadMax »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 479
  • Malissard (26)
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #2 le: 07 avril 2019 à 18:19:27 »
Tableau des ressources PCIe de la génération actuelle "PCH"



Ici on retrouve le dernier socket d'Intel, le LGA2066, avec le X299 on pourrait même se permettre d'avoir plusieurs cartes 10Gb/s.

Sur LGA1151 v1 et 2, "on en a sous le pied", si les lignes PCIe sont bien réparties on a aussi de quoi faire.

Sur LGA2011, les CPU de cette génération disposant de 40 lignes PCIe directes, elles sont bien mieux adaptées que les 8x PCIe 2.0 du PCH. Pourquoi ? Car il y a fort à parier que le fabricant de la carte mère ne mettra pas de slot x4 ou même x8, préférant les utiliser pour des contrôleurs SATA ou Ethernet supplèmentaires.

Idem pour le LGA1366, bien qu'étant agé de plus de 10 ans, 36 lignes sont disponibles depuis le CPU. Piège ! En réalité nous sommes en présence d'une plateforme MCH/ICH, X58/ICH10. Le socket 1366 est en effet commun au Core i7 et au Xeon de cette génération. Le X58 est donc nécessaire pour adresser le bus QPI du processeur à 6,4GT/s (4,8GT/s sur i7 sauf version X). Le ICH10 est donc hors de course pour accepter une connexion 10Gb/s, sa connexion avec le X58 n'étant que de 1000Mo/s. Il faudra sacrifier l'un des 2 ports x16 du CPU. Avantage: le GPU n'est pas impacté.

Sur les plateformes 1150 et 1155, il faudra passer par les lignes directes du CPU au détriment du GPU, en effet le PCH ne disposant que de 8x lignes, il serait étonnant que 4 d'entre elles soient utilisables. Si c'est le cas, c'est bon !

Pour la plateforme LGA1156, son PCH est très limité par ses 8 lignes PCIe 1.1. A condition d'en trouver 4 (improbable), on aurait 1000Mo/s.

Dans tous les cas, toutes les lignes PCIe indiquées ne sont pas forcèment utilisables, chaque chipset dispose d'options de répartition laissées à la guise du fabricant de la carte mère. Celui-ci pourra privilégier le nombre de ports SATA ou USB et ne proposer qu'un port PCIe 1x.

Quelques options consommatrices de ces lignes PCIe:
 - SLI: le 2e ou 3e slot graphique peut être cablé dessus et non pas en direct. Dans le cas du 10Gb/s, si on ne fait pas de SLI, on peut s'en servir pour la carte 10Gb
 - RAID: l'ajout d'un contrôleur consomme des lignes PCIe, environ entre 2 et 4. 
 - SATA3: en plus des interfaces d'origine, au lieu d'un contrôleur RAID, le fabricant ajoute des ports 6Gb/s et/ou un/des ports eSATA
 - USB3: si le chipset n'en est pas pourvu d'origine ou n'en propose pas suffisamment, le contructeur en rajoute
 - Ethernet: en principe, le chipset en propose un nativement, l'ajout d'un 2è port se fera probablement via les lignes PCIe optionnelles.

Ces dernières options sont donc à éviter si vous voulez être sûr d'avoir suffisamment de lignes, à moins d'opter pour une carte mère LGA2011 ou LGA2066 qui sont prévues pour de nombreuses entrées/sorties.
« Modifié: 16 juin 2019 à 20:02:09 par BadMax »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 479
  • Malissard (26)
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #3 le: 07 avril 2019 à 18:19:34 »
Tableau des ressources PCIe de la génération actuelle chez AMD

AMD a aussi fait le choix de la suppression du Northbridge et a donc un seul composant.



Ici, il faut clairement faire le choix entre 2 gammes: AM4 ou TR4.

La série Threadripper est très orientée haut-de-gamme avec ses 64 lignes PCIe 3.0. Chez Intel il faut aller chercher du Xeon pour trouver l'équivalent. Heureusement qu'il y en a beaucoup car le chipset ne dispose que de 8 lignes PCIe 2.0. Il y a fort à parier que les fabricants de carte mère ne les laisseront pas libre d'usage et il faudra certainement se rabattre sur les lignes directes du CPU.

Sur la série Ryzen, le choix est assez restreint: le chipset ne dispose pas d'assez de lignes. Reste le connecteur PCIe 3.0 x4 -> en général celui-ci est prévu pour la connexion d'un disque NVMe au format M2. Dans ce cas, seules les plateformes X370 et X470 seront compatibles, en réduisant la capacité de la carte graphique à 8 lignes PCIe 3.0.

Note: il est peu probable de constater une réduction des performances d'une carte graphique en la passant de 16 lignes à 8 lignes PCIe 3.0. Sauf si la carte synchronise en PCIe 2.0, ou pire, en PCIe 1.1.
« Modifié: 16 juin 2019 à 19:51:43 par BadMax »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 479
  • Malissard (26)
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #4 le: 07 avril 2019 à 20:13:08 »
Comment vérifier la connexion PCI d'une ressource sous Linux ?

lspci est l'outil à connaitre sous Linux pour vérifier qui et quoi est connecté.

1ère étape: lister l'ensemble des ressources
# lspci -tv
-[0000:00]-+-00.0  Intel Corporation 4th Gen Core Processor DRAM Controller
           +-14.0  Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
           +-1a.0  Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2
           +-1c.0-[01]----00.0  Intel Corporation I210 Gigabit Network Connection
           +-1c.1-[02]----00.0  Intel Corporation I210 Gigabit Network Connection
           +-1c.2-[03-04]----00.0-[04]----00.0  ASPEED Technology, Inc. ASPEED Graphics Family
           +-1d.0  Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1
           +-1f.0  Intel Corporation C222 Series Chipset Family Server Essential SKU LPC Controller
           +-1f.2  Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
           \-1f.3  Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller

Nous avons ici l'ensemble des ressources d'un bus PCI. Il n'y en a qu'un seul.
Exemple avec une carte mère serveur bi-processeur avec 2x bus PCIe:
+-[0000:80]-+-00.0-[81]--                                                                                                                                                             
 |           +-01.0-[82]--                                                                                                                                                             
 |           +-03.0-[83-84]----00.0-[84]----04.0  Adaptec ASC-29320ALP U320                                                                                                           
 |           +-05.0-[85]--                                                                                                                                                             
 |           +-07.0-[86]--+-00.0  NVIDIA Corporation GP104 [GeForce GTX 1070]                                                                                                         
 |           |            \-00.1  NVIDIA Corporation GP104 High Definition Audio Controller                                                                                           
 |           +-14.0  Intel Corporation 7500/5520/5500/X58 I/O Hub System Management Registers                                                                                         
 |           +-14.1  Intel Corporation 7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers                                                                                       
 |           +-14.2  Intel Corporation 7500/5520/5500/X58 I/O Hub Control Status and RAS Registers                                                                                     
 |           +-14.3  Intel Corporation 7500/5520/5500/X58 I/O Hub Throttle Registers                                                                                                   
 |           +-16.0  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 |           +-16.1  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 |           +-16.2  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 |           +-16.3  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 |           +-16.4  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 |           +-16.5  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 |           +-16.6  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 |           \-16.7  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device                                                                                               
 \-[0000:00]-+-00.0  Intel Corporation 5520 I/O Hub to ESI Port                                                                                                                       
             +-01.0-[01-02]--+-00.0  Intel Corporation 82576 Gigabit Network Connection                                                                                               
             |               \-00.1  Intel Corporation 82576 Gigabit Network Connection                                                                                               
             +-03.0-[03]--+-00.0  Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP]                                                       
             |            \-00.1  Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]                                                   
             +-07.0-[04]----00.0  LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS                                                                                       
             +-09.0-[05]--                                                                                                                                                             
             +-14.0  Intel Corporation 7500/5520/5500/X58 I/O Hub System Management Registers
             +-16.0  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-16.1  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-16.2  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-16.3  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-16.4  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-16.5  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-16.6  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-16.7  Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
             +-1a.0  Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
             +-1a.1  Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5
             +-1a.2  Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
             +-1a.7  Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
             +-1b.0  Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
             +-1d.0  Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
             +-1d.1  Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
             +-1d.2  Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
             +-1d.7  Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1
             +-1e.0-[06]----05.0  Texas Instruments TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]
             +-1f.0  Intel Corporation 82801JIR (ICH10R) LPC Interface Controller
             +-1f.2  Intel Corporation 82801JI (ICH10 Family) SATA AHCI Controller
             \-1f.3  Intel Corporation 82801JI (ICH10 Family) SMBus Controller

Comment lire ?
 - 0000:00 indique la racine
 - à laquelle on ajoute l'id de la ressource, exemple: "14.0" pour "Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI" du 1er exemple
 - le chiffre entre [] indique l'id de la ressource se situant sous une autre, exemple "02" pour "Intel Corporation 82576 Gigabit Network Connection"

2è étape: on regarde le détail

lspci -s (racine):(id)

lspci -vv -s 0000:00:14.0
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) (prog-if 30 [XHCI])
        Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at dff00000 (64-bit, non-prefetchable)
        Capabilities: [70] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
                Address: 00000000fee03000  Data: 0032

Quand il y a un crochet, il y a 2 ressources à regarder: 0000:00:01.0 et 0000:01:00.0

Attention, ça devient verbeux:
lspci -vv -s 0000:00:01.0
00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 13) (prog-if 00 [Normal decode])
        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: 256 bytes
        Interrupt: pin ? routed to IRQ 26
        Bus: primary=00, secondary=01, subordinate=02, sec-latency=0
        I/O behind bridge: 0000a000-0000afff
        Memory behind bridge: fb800000-fb9fffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [40] Subsystem: Super Micro Computer Inc 5520/5500/X58 I/O Hub PCI Express Root Port 1
        Capabilities: [60] MSI: Enable+ Count=1/2 Maskable+ 64bit-
                Address: fee00000  Data: 40e1
                Masking: 00000002  Pending: 00000000
        Capabilities: [90] Express (v2) Root Port (Slot+), MSI 00
                DevCap: MaxPayload 256 bytes, PhantFunc 0
                        ExtTag+ RBE+
                DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 256 bytes, MaxReadReq 128 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
                LnkCap: Port #0, Speed 5GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <512ns, L1 <64us
                        ClockPM- Surprise+ LLActRep+ BwNot+ ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
                SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
                        Slot #5, PowerLimit 25.000W; Interlock- NoCompl-
                SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
                        Control: AttnInd Off, PwrInd Off, Power- Interlock-
                SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
                        Changed: MRL- PresDet+ LinkState+
                RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible+
                RootCap: CRSVisible+
                RootSta: PME ReqID 0000, PMEStatus- PMEPending-
                DevCap2: Completion Timeout: Range BCD, TimeoutDis+, LTR-, OBFF Not Supported ARIFwd+
                DevCtl2: Completion Timeout: 260ms to 900ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd+
                LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
                         EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
        Capabilities: [e0] 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: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
        Capabilities: [150 v1] Access Control Services
                ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
                ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
        Capabilities: [160 v0] Vendor Specific Information: ID=0002 Rev=0 Len=00c <?>
        Kernel driver in use: pcieport
        Kernel modules: shpchp

Nous avons trouvé un port PCIe. Via les lignes "LnkCap" et LnkSta on sait qu'il s'agit d'un PCIe 2.0 x4 mais en mode PCIe 1.1 x4.

lspci -vv -s 0000:01:00.0
01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
        Subsystem: Super Micro Computer Inc 82576 Gigabit Network Connection
        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: 256 bytes
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at fb9e0000 (32-bit, non-prefetchable) [size=128K]
        Region 1: Memory at fb9c0000 (32-bit, non-prefetchable) [size=128K]
        Region 2: I/O ports at ac00 [size=32]
        Region 3: Memory at fb99c000 (32-bit, non-prefetchable) [size=16K]
        Expansion ROM at fb9a0000 [disabled] [size=128K]
        Capabilities: [40] 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=1 PME-
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
                Address: 0000000000000000  Data: 0000
                Masking: 00000000  Pending: 00000000
        Capabilities: [70] MSI-X: Enable+ Count=10 Masked-
                Vector table: BAR=3 offset=00000000
                PBA: BAR=3 offset=00002000
        Capabilities: [a0] Express (v2) Endpoint, MSI 00
                DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
                DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
                DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR-, OBFF Disabled
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
                         EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
        Capabilities: [140 v1] Device Serial Number 00-30-48-ff-ff-db-4d-20
        Capabilities: [150 v1] Alternative Routing-ID Interpretation (ARI)
                ARICap: MFVC- ACS-, Next Function: 1
                ARICtl: MFVC- ACS-, Function Group: 0
        Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)
                IOVCap: Migration-, Interrupt Message Number: 000
                IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy+
                IOVSta: Migration-
                Initial VFs: 8, Total VFs: 8, Number of VFs: 0, Function Dependency Link: 00
                VF offset: 128, stride: 2, Device ID: 10ca
                Supported Page Size: 00000553, System Page Size: 00000001
                Region 0: Memory at 00000000fb960000 (64-bit, non-prefetchable)
                Region 3: Memory at 00000000fb940000 (64-bit, non-prefetchable)
                VF Migration: offset: 00000000, BIR: 0
        Kernel driver in use: igb
        Kernel modules: igb

Et c'est normal, cette carte ne supporte que PCIe 1.1 x4 (LnkCap). Pourquoi 4 lignes pour du Gigabit ? Parce qu'elle a une petite soeur sur l'adresse 0000:01:00.1. Oui, il s'agit d'une carte à 2 ports réseaux Gigabit. Une ligne PCIe n'aurait pas suffit.

Ligne directe ou pas ?

Dans l'exemple du contrôleur USB, on est bien sûr sur le PCH.
Mais pour l'exemple de la carte réseau ? C'est comme le port salut, c'est écrit dessus : le root port est sur MCH (Intell 5500/X58). Si on avait été sur un PCH ou un ICH on aurait son nom dans la ressource.
Exemple: "PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Root Port 1"
ou "PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1"
par opposition à "PCI Bridge : Intel Corporation 4th Gen Core PCI Express Root Port #0"
« Modifié: 16 juin 2019 à 19:51:37 par BadMax »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 479
  • Malissard (26)
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #5 le: 07 avril 2019 à 22:32:33 »
Les cas tordu du PCI-Express

Exemple sur une ASRock AB350 Pro4, plateforme Ryzen AM4.
+-08.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe Dummy Host Bridge
           +-08.1-[12]--+-00.0  Advanced Micro Devices, Inc. [AMD] Device 1455
           |            \-00.2  Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]

Mais qu'est-ce donc ?
lspci -vv -s 0000:00:08.1
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B (prog-if 00 [Normal decode])
...
                LnkCap: Port #0, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
                        ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 8GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-

Encore un port PCIe 3.0 x16 ? Maisje ne devrais en avoir qu'un seul ? Et sur l'adresse 0000:00:07.1 il y en a un autre ?
En fait, ces 2 ports ne remontent pas au CPU, ils sont dans le chipset.

Exemple de switch PCI-Express:
PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)On trouvera cette entrée autant de fois qu'il y a de lignes derrière.

Dans les "capabilities" des différentes entrées, on va trouver d'abord un "Express (v2) Upstream Port" puis les entrées suivantes  "Express (v2) Downstream Port".  Derrière chaque Downstream port on va peut trouver un device connecté, soit via un port PCIe 1x physique soit une ligne cablée sur la carte mère.

Ces switches permettent de répartir une bande passante: un port PCIe 2.0 sur 4 lignes donnera 4 PCIe 2.0/1.1. Inconvénient, ils ajoutent une légère latence.
« Modifié: 16 juin 2019 à 19:51:27 par BadMax »

ajds

  • Abonné Free fibre
  • *
  • Messages: 1 091
  • 78-TDF Delta 10G+Devialet
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #6 le: 15 septembre 2019 à 14:42:26 »
Post très intéressant, merci !

Si je peut faire une petite remarque, dans les tableaux de compatibilité, je ne serais pas aussi catégorique sur les "Non" en rouge. Ça reste compatible mais avec des performances moins bonnes.
Par exemple, sur une ancienne config Asus P5 DW DH, sur base 975X, j'ai des taux de transfert disque de 980 Mo/s avec une grappe raid 6 et une carte sas en Pcie 8X.
C'est sûr on ne serait pas au max du 10Gb/s mais pas trop loin quand même.

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #7 le: 15 septembre 2019 à 15:21:12 »
On peut mettre une carte 10 Gb/s sur un Pentium IV, bien sur.

Il est intéressant de savoir si cela la communication de la carte mère limitera le débit ou non.

Bien sur ce n'est pas le seul élèment qui peut limiter le débit.

J'ai listé une configuration minimum nécessaire pour un test fiable via des outils dans un navigateur web type nPerf (beaucoup plus consommateur en CPU que iPerf)
=> https://www.arcep.fr/demarches-et-services/consommateurs/comment-fiabiliser-un-test-de-debit.html

Comme vous pouvez le voir, sur le 10 Gb/s je ne me suis pas engagé. C'est un sujet complexe comme le montre les explications de BadMax.

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 479
  • Malissard (26)
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #8 le: 16 septembre 2019 à 22:41:32 »
Post très intéressant, merci !

Si je peut faire une petite remarque, dans les tableaux de compatibilité, je ne serais pas aussi catégorique sur les "Non" en rouge. Ça reste compatible mais avec des performances moins bonnes.
Par exemple, sur une ancienne config Asus P5 DW DH, sur base 975X, j'ai des taux de transfert disque de 980 Mo/s avec une grappe raid 6 et une carte sas en Pcie 8X.
C'est sûr on ne serait pas au max du 10Gb/s mais pas trop loin quand même.

On peut aussi envisager de monter une carte 10Gb dans un slot PCI-X 133MHz et tenter un iperf, possible que le 10Gb ne soit pas très loin.

Le problème est que cela resterait un test éloigné de la réalité: quand on télécharge à 10Gb/s, il faut bien stocker quelque part -> si le bus CPU est déjà saturé par la carte réseau, ça va etre difficile d'aller écrire sur un disque.

A partir de la génération "PCH", le bus DMI est suffisamment dimensionné pour laisser passer 10Gb/s, d'où la différence avec la génération "FSB" et le "non" dans la colonne "compatibilité 10G".

Mais comme le souligne, cela reste bas-niveau, il faut que le CPU suive.

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #9 le: 29 novembre 2019 à 13:11:39 »
Tableau des ressources PCIe de la génération actuelle "PCH"


Je reformule pour être sur de bien comprendre, si on prend le chipset H310 qui équipe pas mal de PC "desktop" d'entrée de gamme / moyen de gamme (il y a des Core i5 9400 vendus avec), il y a donc au maximum :
- 1 port PCIe 3.0 x16
- 1 port PCIe 2.0 x4 + 1 port PCIe 2.0 x2
ou
- 1 port PCIe 3.0 x16
- 1 port PCIe 2.0 x4 + 2 ports PCIe 2.0 x1
ou
- 1 port PCIe 3.0 x16
- 3 ports PCIe 2.0 x2
ou
- 1 port PCIe 3.0 x16
- 6 ports PCIe 2.0 x1

Ces combinaisons sont bien possible pour le constructeur d'une carte mère ?
(peu de chance d'avoir une cm avec chipset H310 et 7 ports PCIe, mais c'est pour bien comprendre)

Exemple :

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #10 le: 29 novembre 2019 à 23:51:18 »
Je reformule pour être sur de bien comprendre, si on prend le chipset H310 qui équipe pas mal de PC "desktop" d'entrée de gamme / moyen de gamme (il y a des Core i5 9400 vendus avec), il y a donc au maximum :
- 1 port PCIe 3.0 x16
- 1 port PCIe 2.0 x4 + 1 port PCIe 2.0 x2
ou
- 1 port PCIe 3.0 x16
- 1 port PCIe 2.0 x4 + 2 ports PCIe 2.0 x1
ou
- 1 port PCIe 3.0 x16
- 3 ports PCIe 2.0 x2
ou
- 1 port PCIe 3.0 x16
- 6 ports PCIe 2.0 x1

Ces combinaisons sont bien possible pour le constructeur d'une carte mère ?
(peu de chance d'avoir une cm avec chipset H310 et 7 ports PCIe, mais c'est pour bien comprendre)
A priori oui (à condition de n'avoir aucun contrôleur USB/SATA/Ethernet/Wifi supplémentaire sur la carte mère), pour ce chipset ça devrait être possible, pour d'autres avec plus de lignes c'est plus compliqué à calculer.

https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/300-series-chipset-pch-datasheet-vol-1.pdf
La table "Desktop PCH HSIO Details" dit que le H310 a :
 - ligne 10 : PCIe, GbE
 - ligne 11 : PCIe
 - ligne 12 : PCIe
 - ligne 13 : PCIe
 - ligne 14 : GbE
 - ligne 16 : PCIe
 - ligne 17 : PCIe, GbE
Donc si le réseau Intel intégré est utilisé, la logique veut qu'on utilise la ligne 14, ce qui n'enlève pas de PCIe (sur d'autres chipsets ce n'est pas forcément le cas, donc le réseau intégré ou certains ports SATA et USB peuvent enlever des lignes PCIe).

Mais on trouve des cartes mères avec un contrôleur Ethernet Realtek RTL8111H (je suppose qu'il est moins cher que la PHY nécessaire pour utiliser le contrôleur Intel intégré...), et dans ce cas ça utilise une ligne PCIe, donc il n'en reste plus que 5 pour les ports reliés au chipset.

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Règles de compatibilité cartes mères pour le 10Gb/s
« Réponse #11 le: 30 novembre 2019 à 08:37:30 »
Merci, oui il doit y avoir plusieurs lignes PCIe utilisées par la carte mère :

- contrôleur Ethernet Realtek
- logement M.2 2230 pour carte combinée Wi-Fi et Bluetooth
- logement M.2 22x0 pour SSD M.2 PCIe NVMe quand supporté (je ne pense pas que ce soit possible en MVMe avec ce chipset en PCIe 2.0)
- ...