Wie funktioniert PCIe switching (bifurcation)?

Stannis

Lieutenant
Registriert
Juli 2011
Beiträge
594
Mainboards bieten eine große Menge an PCIe Slots an, für Grakas, NVMEs und viele mehr.

CPUs haben eine begrenzte Anzahl an PCIe lanes.

(Die im folgenden genannte Hardware dient nur als Beispiel. Ich interessiere mich dafür, wie sowas allgemein funktioniert)

Beispielhaft sei genannt, dass ein i9 14900k über 20 PCIe5.0 lanes verfügt.
Boards mit dieser CPU, z.B. ein MSI Pro Z790-P, verfügen über:
  • PCIe5.0 slot (an CPU) x16
  • NVMe (an CPU) mit PCIe4.0 x4
  • viele, viele weitere "bis zu / up to 3.0 / 4.0" slots am Chipset, darunter NVMe
Mit den ersten beiden Punkten müssten nun schon alle 20 lanes belegt sein. Das Board hat aber viele viele weitere PCIe Geräte.

Ich weiß, dass es PCIe switching gibt, und wenn ich diese Grafik aus der Wikipedia richtig lese, kann man einige Lanes an das Chipset übereignen, und hinter diesem dann viele weitere Geräte "multiplexen".

Mit obiger Liste (x16 GPU und x4 NVMe) wären nun aber alle Lanes belegt – oder kann der PCIe root complex ausnutzen, dass 5.0 doppelt so schnell ist wie 4.0, d.h. er braucht 16 lanes für die GPU (angenommen, sie nutzt 5.0), 2 für die NVMe (werden aufgespalten zu 4 lanes @ PCIe4.0), und 2 @ PCIe5.0 bleiben für den Switch (das Chipset?) übrig, der dann sämtliche andere Geräte über zwei PCIe5.0 lanes füttern muss. Der Switch müsste dann aber erzwingen, dass alle an ihn angeschlossenen Geräte nur eine Maximalbandbreite erreichen, die mit 2 lanes @ 5.0 bedient werden können (ca. 8GB/s)?

Natürlich fällt auf, dass immer von "up to XYZ speed" die Rede ist. Ich weiß auch, dass man die Anzahl der Lanes im BIOS zuweilen konfigurieren kann.
Bei diesem Board aber habe ich im BIOS Handbuch nur Optionen gefunden, wie man die Geschwindigkeit der Slots (PCIeX.0-Standard) setzen kann, siehe Seite 13.

Nun, wie dem auch sei, ich würde mich freuen, wenn jemand diese Fragen beantworte kann (nicht notwendigerweise zu diesem Board):
  1. Die absolute Höchstgeschwindigkeit, was zeitgleich über PCIe transportiert werden kann, ist begrenzt durch die Anzahl der CPU PCIe lanes, richtig?
  2. Der Root Complex kann N schnellere Lanes zu >N kleineren lanes aufspalten?
  3. Ist das Chipset faktisch (unter anderem) ein PCIe switch?
  4. Wenn es in einem Handbuch heißt, z.B. der Graka-Slot sei "x16 (from CPU)", heißt das, die CPU lanes sind hart an diesen GPU slot verkabelt, oder ist auch das umkonfigurierbar?
  5. Eine physische Lane von der CPU kann nicht "heruntergetaktet" werden (z.B. von 5.0 auf 4.0) und es würde auch nichts bringen um mehr Geräte nutzen zu können, weil ja immer noch eine physische Lane blockiert wäre?
Danke
 
Siehe zum Beispiel hier: https://www.computerbase.de/forum/threads/z790-pcie-lanes-frage.2110652/#post-27454475

Die zusätzlichen Lanes kommen durch den Chipsatz vom Mainboard.

Stannis schrieb:
Boards mit dieser CPU, z.B. ein MSI Pro Z790-P, verfügen über:

Im Handbuch von dem Board ist auch das erklärt: https://download-2.msi.com/archive/mnu_exe/mb/PROZ790-P_PROZ790-PWIFI.pdf


Bifurcation ist wieder was anderes. Das funktioniert wie ein Switch im Netzwerk.

Ansonsten hängt das halt immer von der konkreten Implementierung des Chipsatzes sowie des PCI-Express Switches ab was technisch möglich ist.

Komplett frei konfigurierbar wirst du nichts finden, weil PCIe hat schon gewisse Anforderungen und Toleranzen. Es wird seltsam etwas verbaut was technisch anspruchsvoll ist und dann wahrscheinlich zu 95% nicht benötigt wird.

Steig mal in die Thematik über z.B. https://www.broadcom.com/products/pcie-switches-retimers/pcie-switches/pex8724 ein. Der wird auf z.B. https://www.amazon.de/PCIe-Controller-Karte-NVMe-Chipsatz-PLX8724/dp/B08ZZXLXW verbaut.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010
JumpingCat schrieb:
Bifurcation ist wieder was anderes. Das funktioniert wie ein Switch im Netzwerk.
? ein pcie-switch wäre mit einem netzwerk-switch vergleichbar. bifurcation erlaubt einfach nur eine andere zuteilung der lanes innerhalb eines slots.
 
  • Gefällt mir
Reaktionen: ghecko
Stannis schrieb:
Mit den ersten beiden Punkten müssten nun schon alle 20 lanes belegt sein. Das Board hat aber viele viele weitere PCIe Geräte.
Du hast die DMI Lanes vergessen, die Intel zur Anbindung der Chipsätze nutzt. In deinem ark.intel.com Link werden 8 Lanes der DMI Generation 4 genannt. DMI kann man wohl als PCIe Derivat bezeichnen.

Bifurcation erlaubt es einfach mehrere PCIe Geräte in einem Slot zu betreiben. Ohne Bifurcation würde nur das erste Gerät erkannt werden.

Stannis schrieb:
Die absolute Höchstgeschwindigkeit, was zeitgleich über PCIe transportiert werden kann, ist begrenzt durch die Anzahl der CPU PCIe lanes, richtig?
Mehr als die Summe aller Lanes wird kein PCIe Gerät übertragen können, auch keine CPU.

Stannis schrieb:
Der Root Complex kann N schnellere Lanes zu >N kleineren lanes aufspalten?
Nein, eine Aufspaltung von 8 5.0 Lanes in 16 4.0 Lanes ist nicht möglich. Die Lanes können nur auf ältere Protokollgenerationen heruntergeregelt werden. Aber die Anzahl bleibt immer gleich.

Stannis schrieb:
Ist das Chipset faktisch (unter anderem) ein PCIe switch?
Im Grunde ja, aber ein Chipsatz implementiert wesentlich mehr Funktionalität. Elektrische Leitungen können beispielsweise als 1 Sata Port oder eine PCIe Lane konfiguriert werden.

Stannis schrieb:
Wenn es in einem Handbuch heißt, z.B. der Graka-Slot sei "x16 (from CPU)", heißt das, die CPU lanes sind hart an diesen GPU slot verkabelt, oder ist auch das umkonfigurierbar?
Das hängt vom Board ab. Es gibt ja Boards, die zwei x16 Slot bereitstellen, von denen der erste mit 16 aktiven Lanes genutzt werden kann, oder beide mit jeweils 8 Lanes. Der zweite alleine aber nur mit maximal 8 Lanes.

Dann befinden sich kleine Schalter auf dem Board, die diese 8 Lanes umschalten können. Elektrisch ist also dafür die "Verkabelung" auf dem PCB.
Stannis schrieb:
Eine physische Lane von der CPU kann nicht "heruntergetaktet" werden (z.B. von 5.0 auf 4.0) und es würde auch nichts bringen um mehr Geräte nutzen zu können, weil ja immer noch eine physische Lane blockiert wäre?
Doch das geht. Du kannst ja eine RTX4090 mit PCIe 4.0 in einem PCIe 5.0 Slot betreiben. CPU und GPU einigen sich auf 4.0 und fertig.

Es ist sogar on the fly möglich. Moderne Grafikkarten laufen im Idle in der Regel nur mit PCIe 1.0, um Strom zu sparen.
Ergänzung ()

Stannis schrieb:
Natürlich fällt auf, dass immer von "up to XYZ speed" die Rede ist. Ich weiß auch, dass man die Anzahl der Lanes im BIOS zuweilen konfigurieren kann.
Bei diesem Board aber habe ich im BIOS Handbuch nur Optionen gefunden, wie man die Geschwindigkeit der Slots (PCIeX.0-Standard) setzen kann, siehe Seite 13.
Bei sehr komplexen Board Designs kann man die Lane Zuweisung teilweise erzwingen. Das kann Sinn machen, wenn sich zum Beispiel ein PCIe Slot und ein M.2 Slot Lanes teilen, es also einen Umschalter dazwischen gibt. Wird beides als bestückt erkannt, laufen sie jeweils nur mit 2 Lanes. Wenn du aber willst, dass ein Gerät davon Fullspeed läuft und das andere deaktiviert wird, kannst du das eben erzwingen.

Oder auch für Funktionen, die nicht so einfach erkannt werden können. Wie andere Funktionen am Chipsatz. Ich kann bei mir beispielsweise wählen, ob zwei Sata Ports aktiv sein sollen oder einer der M.2 Slots mit 4 anstatt 2 Lanes läuft.

Die PCIe Generation wird in der Regel automatisch erkannt. Du hast aber auch hier oft Optionen, um bei "Problemen" Protokollversionen erzwingen zu können. Beispiel: Ein ranziges Riser Kabel für die GPU. Die Geräte einigen sich auf PCIe 4.0, das Kabel kann aber nur 3.0 stabil. Dann kannst du 3.0 erzwingen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Stannis, xexex und JumpingCat
1. Nicht unbedingt. Wenn die Plattform und die Devices es supporten, dann können die auch direkt untereinander Daten austauschen, ohne über die CPU zu gehen. Wenn diese Devices dann an PCIe-Lanes angebunden sind, die nicht von der CPU kommen, dann beansprucht dieser Transfer nicht nur keine CPU-Zyklen, sondern belegt auch keine Bandbreite auf den PCIe-Lanes der CPU. Mal abgesehen von sowas wie DirectStorage, was aber auch noch ein Exot ist, ist das aber typischerweise kein Desktop-Feature und nichts womit man sich als Nutzer zwingend befassen muss.

2. Nicht von sich aus / nicht jeder. Das ist Multiplexing, wie es viele PCIe-Switches z.B. machen. Ein PCIe 5.0 x16 Uplink (zur CPU) kann z.B. auf zwei PCIe 4.0 x16 Downlinks (zu den Devices) gemultiplext werden, da die maximale Bandbreite von zwei PCIe 4.0 Lanes auf eine 5.0 Lane passt.

3. Ja.

4. Kommt drauf an, in der Praxis ist auf den verschiedenen Mainboards alles implementiert, harte Verdrahtung, Bifurcation und Switching.

5. Doch, Lanes können heruntergestuft werden. Aber das erlaubt nicht automatisch multiplexing, d.h. ja, erstmal ist trotz Herunterstufung die Lane belegt.
 
  • Gefällt mir
Reaktionen: Stannis und JumpingCat
1. Ein PCIe Port hat eine maximal Bandbreite. Ergibt sich aus max, Lanes * Max Geschwindigkeit. Maximale Bandbreite von einem "Ding" mit mehreren Ports ist sehr komplex. Könnte bis zu dem Maximum von jedem Port gleichzeitig sein. Oder entschieden weniger. Noch spannender wenn du das als Crossbar verstehst, weil PCIe Multi-Master ist, wo jedes Gerät Anfragen stellen kann, theoretisch an jedes andere Gerät (auch wenn das in der Praxis wenig bis gar nicht passiert).
Stannis schrieb:
Der Root Complex kann N schnellere Lanes zu >N kleineren lanes aufspalten?
Ignorier das "Root Complex" ist hier erstmal mehr theoretisch.
Es gibt einen Port Controller. Der hat eine Anzahl an Lanes und die Lanes eine max. Geschwindigkeit. Fertig. Bifurcation heißt, es gibt mehr Port Controller. ZB für den 14900K:
Port Controller: 16 Lanes, Gen 5.
Und dann hat die CPU einen 2. Port Controller der max. 8 Lanes Gen 5 kann. Falls der erste Controller nur die ersten 8 oder weniger Lanes nutzt, können die hinteren 8 Lanes umgeswitchted und vom 2. Controller genutzt werden.
Deshalb gehört zu Bifurcation auch immer ein unteres Limit. Und der Raptor Lake kann nur auf x8+x8 runter. Weil er dahinter nur die 2 Controller hat. Du könntest zwar jeden davon auch rückwärtskompatibel mit einem x2 Gen 2 Gerät oder so betreiben. Aber dann sind die anderen Lanes verschwendet. Älter Intel CPUs hatten zum Beispiel auch Bifurcation zu x8+x4+x4 hinter dem x16 Port.
Der x4 Port von der CPU hat zB keine Bifurcation. Während die Chipsätze meistens bis x1 runter gehen. Wobei Intel hier eine fixe max. Anzahl an Controller hat. So dass man nicht alle Ports gleichzeitig als x1 nutzen kann. Weil dann gehen einem die Controller aus. Aber welche Ports bifurcated werden und welche nicht ist dort erstmal flexibel.

Root Complex ist quasi wo PCIe mit Speichercontroller und CPUs verbunden ist. Das ist also das höchste in der PCIe Topologie. Aber das ist erstmal egal für das meiste. Und man kann auch PCIe Protokoll haben über nicht-PCIe Verbindungen haben (also nicht physikalisch PCIe, weil kein kompatibler Port gebraucht wird). So zB mit dem DMI. Wobei das höchstwahrscheinlich einfach nur PCIe ohne die Kompatibilität ist, die normale Ports haben müssen. Weil Intel genau weiß, was auf der anderen Seite sein wird.

Stannis schrieb:
Ist das Chipset faktisch (unter anderem) ein PCIe switch?
Ja, der Kern. Und typischerweise noch Dinge die die CPU zwingend braucht. Und dann noch mehr Peripherie.
Stannis schrieb:
Wenn es in einem Handbuch heißt, z.B. der Graka-Slot sei "x16 (from CPU)",
Das heißt, dass von dem Port zur CPU 16 Lanes gehen. Ob die Lanes auch mit entsprechender Hardware an andere Ports geleitet werden können sagt das noch nicht. Ist aber meistens Board-Sache. Das ist der CPU egal. Das Board muss das richtig Konfigurieren, bevor die CPU versucht sich zu verbinden. Das passiert während dem BIOS.
Stannis schrieb:
Eine physische Lane von der CPU kann nicht "heruntergetaktet" werden (z.B. von 5.0 auf 4.0)
PCIe 5.0 ist keine Geschwindigkeit Das ist eine PDF. Die maximale Geschwindigkeit wäre 32 GT/s. 16 GT/s war das Maximum von 4.0. Auch gerne als Gen 4 bezeichnet. 8 GT/s, 5 GT/s und 2.5 GT/s gibt es auch darunter.
PCIe schreibt vor immer alle langsameren Geschwindigkeiten können zu müssen. Sowohl Ports als auch Geräte. Und auch immer mit weniger Lanes. Für maximale Abwärtskompatibilität.

Die maximale Geschwindigkeit mit der Spec Version auszudrücken ist eigentlich falsch.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: JumpingCat
Danke für die Antworten, das hilft schon mal sehr

FUSION5 schrieb:
Du hast die DMI Lanes vergessen, die Intel zur Anbindung der Chipsätze nutzt. In deinem ark.intel.com Link werden 8 Lanes der DMI Generation 4 genannt. DMI kann man wohl als PCIe Derivat bezeichnen.

Ah ja, spannend, davon wusste ich noch nicht. Liege ich nun richtig in der Annahme, dass die PCIe lanes von der CPU dann nicht dem Chipsatz zur Verfügung stehen, sondern alle PCIe-Geräte am Chipsatz in letzter Instanz über die DMI-Lanes laufen?

Khorneflakes schrieb:
Ein PCIe 5.0 x16 Uplink (zur CPU) kann z.B. auf zwei PCIe 4.0 x16 Downlinks (zu den Devices) gemultiplext werden, da die maximale Bandbreite von zwei PCIe 4.0 Lanes auf eine 5.0 Lane passt.
Doch, Lanes können heruntergestuft werden. Aber das erlaubt nicht automatisch multiplexing
Aber es ist quasi eine Grundvoraussetzung für Multiplexing, um die max. Bandbreite nicht zu überschreiten.
Wird das denn nun mit PCIe lanes direkt von der CPU gemacht, oder nur über den Chipsatz und die DMI-Lanes (siehe oben)?

Ray519 schrieb:
Das heißt, dass von dem Port zur CPU 16 Lanes gehen. Ob die Lanes auch mit entsprechender Hardware an andere Ports geleitet werden können sagt das noch nicht.

Mit "Port" ist immer ein PCIe slot auf dem Board gemeint, richtig?
 
Stannis schrieb:
Liege ich nun richtig in der Annahme, dass die PCIe lanes von der CPU dann nicht dem Chipsatz zur Verfügung stehen, sondern alle PCIe-Geräte am Chipsatz in letzter Instanz über die DMI-Lanes laufen?
Ja, das ist richtig.
Ergänzung ()

Stannis schrieb:
Aber es ist quasi eine Grundvoraussetzung für Multiplexing, um die max. Bandbreite nicht zu überschreiten.
Es ist eine Grundvoraussetzung, weil ohne die Abwärtskompatibilität nie ein Multiplexing Szenario auftreten würde.

Was passiert, wenn die Uplink Bandbreite nicht ausreicht, wird im Protokoll geregelt. Letztendlich wird es zu einer Drosselung der Endgeräte kommen.

Stannis schrieb:
Wird das denn nun mit PCIe lanes direkt von der CPU gemacht
Direkt an Lanes der CPU dürfte es nie zu Multiplexing kommen, beide Seiten sprechen einfach das ältere Protokoll.

Stannis schrieb:
oder nur über den Chipsatz und die DMI-Lanes (siehe oben)?
Auf jeden Fall hinter einem PCIe Switch, welches auch ein Chipsatz sein könnte.

Ein Beispiel wäre das Asus Pro WS X570-ACE, ein AM4 Workstation Mainboard. Der Chipsatz hat eine PCIe 4.0 x4 Anbindung zur CPU. Am Chipsatz befindet sich ein PCIe 3.0 x8 Steckplatz um Netzwerk oder SAS Controller aus dem Server Bereich anbinden zu können.

Da könnte theoretisch die volle Bandbreite durchlaufen. Es sei denn, du würdest die Bandbreite zwischen CPU und Chipsatz manuell drosseln oder es wollten weitere Endgeräte am Chipsatz mit der CPU kommunizieren. Dann wird das halt dynamisch geregelt.

Wie bei einem Ethernet Switch, dessen Uplink nicht alle Ports mit voller Bandbreite versorgen kann.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Stannis
Stannis schrieb:
Liege ich nun richtig in der Annahme, dass die PCIe lanes von der CPU dann nicht dem Chipsatz zur Verfügung stehen, sondern alle PCIe-Geräte am Chipsatz in letzter Instanz über die DMI-Lanes laufen?
Diese PCIe-Lanes verbinden die CPU und den Chipsatz. Der Begriff Chipsatz ist alt. Aktuell ist das eher ein I/O-Hub oder ein Portmultiplikator. Die Funktion des Chipsatzes ist prinzipiell nicht unähnlich zu einem Portmultiplikator ("Dockingstation") für Notebooks, die dann verschiedene USB- und Netzwerk-Ports und Videoausgänge bietet. Es handelt sich, im Prinzip, um weitere PCIe-Lanes, an die ein Device (der Chipsatz) dauerhaft angebunden ist. Und es sind nicht nur die PCIe-Geräte, die am Chipsatz angeschlossen sind, die über diesen Uplink kommunizieren müssen. Jeglicher Traffic von SATA- und USB-Geräten geht da auch drüber.

Stannis schrieb:
Aber es ist quasi eine Grundvoraussetzung für Multiplexing, um die max. Bandbreite nicht zu überschreiten.
Wird das denn nun mit PCIe lanes direkt von der CPU gemacht, oder nur über den Chipsatz und die DMI-Lanes (siehe oben)?
Der Begriff Multiplexing beschreibt die Kombination von zwei oder mehr Datenströmen auf einem Übertragungsweg, anstatt für jeden Datenstrom einen eigenen zu haben. Dafür werden die Datenströme kombiniert (und ggf. später wieder getrennt). Damit das geht, müssen sie aber physisch auf den Übertragungsweg passen. Indem du die Downlinks mit einer PCIe-Generation niedriger laufen läst (Bandbreite verdoppelt sich immer von Generation zu Generation), kannst du PCIe-Lanes 1:2 multiplexen.

Mit den Lanes von der CPU wird das nicht gemacht. Das erfordert ein separates, aktives Bauteil, das wir leider häufig PCIe-Switch nennen (z.B. die bekannten PLX-Switches). PCIe-Multiplexer wäre richtiger, allerdings kann ein Switch auch eine Art Multiplexer sein. Ist halt unglücklich. Switching, wie wir festgestellt haben, gibt es aber auch noch mal separat und hat eine eigene Bedeutung, nämlich das Lanes exklusiv zwischen Punkt A und B hin- und hergeschaltet werden, ohne dass dabei gemultiplext wird.

Beim Chipsatz wird sowas ähnliches gemacht wie das beschriebene Multiplexing, allerdings ist da das Verhältnis der Bandbreite von Uplink zu Downlink nicht so klar definiert. Wenn du PCIe 5.0 und 4.0 Lanes 1:2 multiplext, dann hast du im Uplink die gleiche Bandbreite wie im Downlink. Beim Chipsatz ist der maximale Durchsatz aller angeschlossenen Geräte, wenn man alle Ports belegt, typischerweise höher als die Bandbreite, die der Uplink zur CPU bietet. Das reduziert Komplexität und Kosten, weil angenommen wird, dass du nie alle Ports gleichzeitig auslasten wird. Bei PCIe-Multiplexern gehst du schon davon aus, dass du die Endgeräte mit voller Bandbreite gleichzeitig nutzen wirst.

Stannis schrieb:
Mit "Port" ist immer ein PCIe slot auf dem Board gemeint, richtig?
Ich bediene mich gerade mal bei der PCI SIG:
1736678053048.png

Quelle: https://pcisig.com/sites/default/files/files/PCI_Express_Basics_Background.pdf

PCIe 1, 6 und 7 sind PCIe-Ports. 3, 4 und 5 auch. Die Endpoints, das sind dann z.B. PCIe-Slots, in die du eine Karte einstecken kannst. Das ist nur beispielhaft, je nach Architektur der Plattform sieht die Topologie von System zu System anders aus.

Wenn du dir mal mit HWiNFO, AIDA64, lspci, hwloc oder ähnlichen Tools die komplette Topologie eines Systems anschaust, dann wirst du zum einen sehen dass das sehr komplex sein kann und zum anderen auch besser verstehen wie das System aufgebaut ist und funktioniert. hwloc insbesondere visualisiert Topologien sehr schön, wie ich finde.
 
  • Gefällt mir
Reaktionen: Stannis und JumpingCat
FUSION5 schrieb:
Ja, das ist richtig.

Khorneflakes schrieb:
Diese PCIe-Lanes verbinden die CPU und den Chipsatz.

Danke für die Ausführung, das meiste leuchtet ein – aber nun scheinen wir einen Widerspruch zu haben. Läuft die Peripherie am Chipsatz nun über DMI, natives PCIe von der CPU, oder beides?
 
DMI ist nur der Name von Intel für ihre Art der Verbindung zwischen CPU und Chipsatz: https://en.wikipedia.org/wiki/Direct_Media_Interface
In der Praxis sind das einfach PCIe-Lanes die exklusiv dafür da sind.

Intel legt da großen Wert darauf in den Specs der CPU mitzuteilen, welche DMI-Generation sie nutzt und wie viele DMI-Lanes genutzt werden, siehe z.B.:
https://www.intel.com/content/www/u...-36m-cache-up-to-5-70-ghz/specifications.html

Bei AMD funktioniert das technisch genauso. Wenn du da in die Specs von einer CPU schaust findest du solche Angaben auch: https://www.amd.com/en/products/processors/desktops/ryzen/7000-series/amd-ryzen-9-7950x3d.html
AMD ist da einfach nur etwas pragmatischer und sagt, die CPU hat 28 Lanes und 24 sind nutzbar (weil vier für die Anbindung des Chipsatzes reserviert sind).
 
  • Gefällt mir
Reaktionen: JumpingCat, Stannis und FUSION5
Stannis schrieb:
Wird das denn nun mit PCIe lanes direkt von der CPU gemacht,
Bifurcation is komplett optional. Abwärtskompatibilität ist, wie erwähnt, Pflicht.
Stannis schrieb:
Mit "Port" ist immer ein PCIe slot auf dem Board gemeint, richtig?
Jo. Zu unterscheiden von "Port Controller"

Stannis schrieb:
Aber es ist quasi eine Grundvoraussetzung für Multiplexing, um die max. Bandbreite nicht zu überschreiten.
Wird das denn nun mit PCIe lanes direkt von der CPU gemacht, oder nur über den Chipsatz und die DMI-Lanes (siehe oben)?
Beides kann kombiniert werden. Wenn der x16 CPU Port auf 2 Slots in x8 Zur Verfügung steht, dann werden die 2. 8 Lanes, die dank Bifurcation vom x16 Port abgesplittet werden können zwischen den hinteren 8 Lanes im ersten Slot und den ersten 8 Lanes im 2. Slot umgeschaltet (durch das Board). Bifurcation wäre hier in der CPU. "Multiplexing" zwischen den beiden Ports passiert auf dem Board. Du kannst auch einfach einen x4 Port von der CPU zwischen 3 verschiedenen Dingen auf dem Mainboard "multiplexen". So dass du entweder einen normalen PCIe Port, einen M.2 Port oder irgendeine Zusatzperipherie nutzen kannst zum Beispiel. Abwärtskompatibilität wäre vollständig unabhängig davon.
Aber Bifurcation macht nur Sinn, wenn der Haupt-Port Controller mit weniger als den maximalen Lanes betrieben wird. Weil da geht es um das interne "multiplexen" der selben Lanes (der Logik dafür) zwischen verschiedenen Controllern.
Khorneflakes schrieb:
(Bandbreite verdoppelt sich immer von Generation zu Generation)
Nicht immer. Siehe 5 vs 8 GT/s
Khorneflakes schrieb:
Indem du die Downlinks mit einer PCIe-Generation niedriger laufen läst (Bandbreite verdoppelt sich immer von Generation zu Generation), kannst du PCIe-Lanes 1:2 multiplexen.
Du beschreibst hier einfach nur noch Hub / Switches. Das würde ich mal nicht mehr als "Multiplexing" bezeichnen. Das ist ein paket-basiertes Multi-Hop Protokoll. Das ist wesentlich komplexer.

Und diese Bedeutung ist auch eine Leicht andere, asl für was es hier verwendet wurde (was mehr da sind Leitungen die zwischen verschiednene Dingen hin und her geschaltet werden können, eher statisch.
Khorneflakes schrieb:
AMD ist da einfach nur etwas pragmatischer und sagt, die CPU hat 28 Lanes und 24 sind nutzbar (weil vier für die Anbindung des Chipsatzes reserviert sind).
Die DMI Lanes können nicht für was anderes genutzt werden. Und das haben nur Intel CPUs, die zwingend einen Chipsatz brauchen. Wie wir bei AMD APUs sehen, sind das SoCs. In Notebooks wird kein Chipsatz verbaut, sondern der selbe PCIe Port einfach für Peripherie genutzt. AMD muss also einen vollwertigen Port verbauen.


Während Intel so Dinge machen kann, wie dass der DMI Port nur auf einer exakten Geschwindigkeit läuft und nur mit ganz spezifischen Lane-Anzahlen. Weil sie eben nur ganz bestimmte Ding auf der anderen Seite zulassen. Man kann also Hardware sparen, wenn man das nicht zu einem anderweitig kompatiblen, normalen PCIe Port macht.
 
Ja, von PCIe 2.0 auf 3.0 wurde aber auch das Encoding geändert. Der Durchsatz hat sich trotz nicht verdoppelter Transferrate nahezu verdoppelt. Beim Wechsel von 5.0 auf 6.0 werden wir das andersrum auch wieder erleben, da wird sich die Transferrate verdoppeln, der Durchsatz aber nicht ganz.

Wenn man sich für den Detailgrad interessiert, dann kann man sich die Spezifikationen und technischen Beschreibungen reinziehen, aber für die grundlegende Funktion von PCIe ist das vielleicht etwas übertrieben.

Der Punkt ist, dass durch die Unterschiede der PCIe-Generationen der Durchsatz der multiplen Downlinks komplett in den Durchsatz des einen Uplinks passen, obwohl das Verhältnis der Lanes nicht 1:1 ist. Das ist die Funktionsgrundlage von z.B. PLX-Switches. Würde man das nicht machen, dann wäre der Uplink überbucht und wenn viel Traffic über die Verbindung geht, dann müsste z.B. mittles Flow Control dafür gesorgt werden, dass trotzdem noch Daten von und zu allen Endpoints transferiert werden können, dann natürlich jeweils etwas langsamer.
 
Khorneflakes schrieb:
Der Punkt ist, dass durch die Unterschiede der PCIe-Generationen der Durchsatz der multiplen Downlinks komplett in den Durchsatz des einen Uplinks passen, obwohl das Verhältnis der Lanes nicht 1:1 ist. Das ist die Funktionsgrundlage von z.B. PLX-Switches.
Das ist nicht der Punkt.
Es ist einfach Hub Topologie.
Es wäre mit sehr großer Wahrscheinlichkeit Schwachsinn, wenn man Downlink-Ports mit mehr Bandbreite verbaut als der Uplink-Port. Ob das jetzt ist, weil man die Downlink-Ports auf langsamere Geschwindigkeiten limitiert oder die Lanes als Maximum annimmt ist grad egal.

Ob du jetzt den Switch nutzt um viele langsamere Geräte anzubinden oder verschiedene Geräte mit der selben Bandbreite als der Upstream Port (und sie werden halt typischerweise nicht gleichzeitig genutzt). Oder sogar einfach mehrere hochbandbreitige Geräte, weil es das beste ist was du erreichen kannst, auch wenn sie im Usecase nicht die maximale Bandbreite ihres Upstream-Ports erreichen. Chipsätze machen alles davon.

Ganz selten findest du einen Switch, bei dem die Downstream-Ports in Summe nicht die Bandbreite des Upstreams übersteigen. AMD hat Chipsätze mit x4 Gen 4 Upstream and und 2 x4 Gen 4 Downstreams. Zusätzlich zu dem x4 Gen 3 Downstream. Und verkettet auch noch 2 davon.

Auch Intel hatte mit B660 zB nur x4 Gen 4 Upstream und trotzdem noch x4 Gen 4 Ports am Chipsatz.

Nichts am Unterschied der Generationen ist "Funktionsgrundlage" von Switches. Das ist einfach ein spezieller Usecase für einen Switch, in dem man spezialisieren kann, mit mehr, dafür langsameren Ports. Ich denke mal die allermeisten PCIe Switches haben, wie USB Hubs, die Selbe Upstream und Downstream Geschwindigkeit (per Lane).
 
Ja doch, in meiner Erklärung für Stannis war genau das der Punkt. Den Rest schenke ich dir, das unterscheidet sich nicht von dem was schon gesagt wurde. Wir sind da alle einer Meinung.
 
Zurück
Oben