PCIe Switch im Chipset Funktionsweise/Geschwindigkeit

Qowy

Ensign
Registriert
Aug. 2012
Beiträge
138
Hi,
mal eine theoretischeFfrage die eher im Workstation Bereich wichtig wird aber ich sie mal anhand eines x570 stelle, da ich das grad da habe und einfacher zu erklären ist.

Limitiert der CPU -> Chipset Link Transfers zwischen Geräten am Chipset?

Beispiel:

Wir schließen an ein x570 Chipset die folgenden Dinge an (Mainboard Layout mal egal).

2x 4x4 M.2 SSDs
2x 20Gbit USB 4.0 (oder 3.2 Gen2x2) Geräte

Nun machen wir einen "endlosen" Datentransfer zwischen diesen Geräten. Also M.2 zu M.2 und USB zu USB alles mit max Speed.

Mit DMA sollte die CPU ja raus sein. Limitiert also der 4x4 Uplink des Chipsets überhaupt?
Hat das Chipset eine effektive Max Switching Plane speed (wie Ethernet switche?)
 
Ganz raus ist die CPU nicht wegen CRC Check.
 
Also wenn ein PCIe Gerät ein anderes direkt anspricht, sollte das direkt über den Chipsatz / PCIe-Switch gehen können. Die Frage ist hier, ob das eines der beiden Geräte kann.
Denn um ganz autonom zu arbeiten müsste entweder eine NVMe SSD den USB-Chipsatz verstehen / Treiber dafür haben oder umgekehrt (wie das bei DirectStorage / RTX IO der Fall sein soll).

Ohne dass brauchst du immer noch die CPU mit Treibern / OS die das ganze koordiniert und für jeden Datenblock anweist wohin der geschrieben wird oder woher er geladen wird und dabei muss auch sichergestellt werden, dass du keinen Puffer überschreibst, also Daten nur in dem Tempo anlieferst oder abfragst, wie sie bereitstehen, weshalb ich mir bei deinem Beispiel nicht vorstellen kann, dass das direkt passiert.

Ich habe aber leider keine Detaillkentnisse über die Treiber und Controller, ob die so etwas vllt doch machen könnten...

Unter Linux könnte man sowas vllt an den IOMMU Gruppen checken. Denn dann müssten Geräte, die untereinander reden können, entweder in der selben IOMMU Gruppe sein, oder aber die IOMMU entsprechend konfiguriert sein um diese direkten Zugriffe zu erlauben...

Wenn die PCIe-Geräte dort voneiner isoliert sind, ist es für sie unmöglich direkt miteinander zu kommunizieren.
 
Ok also bedeutet es kann durchaus sein, dass ein m2 zu m2 transfer von denen beide am Chipsatz hängen durchaus nochmal über die CPU müssen?

Am ehesten denke ich eigentlich an NIC zu NVME, da hier ja sehr viel offloading betrieben wird normalerweise, ich wollte das beispiel jetzt nur nicht verkomplizieren.

Aber kommen wir mal zur Basisfrage ohne konkrete Beispiele.

Ist der Durchsatz eines PCIe Switches höher als seine Uplink Anbindung?
 
Qowy schrieb:
Mit DMA sollte die CPU ja raus sein.
Das ist prinzipiell korrekt, aber es gibt hier einen Denkfehler.

Beim Direct Memory Access reden die Geräte direkt mit dem Arbeitsspeicher, ohne Beteiligung der CPU. Damit sind die Prozessorkerne raus, aber nicht der Speichercontroller. Die Kommunikation erfolgt nicht direkt zwischen den Geräten, sondern weiterhin über den Arbeitsspeicher. Und damit müssen am Chipset angeschlossene Geräte die Daten dennoch durch die Anbindung zum CPU-Sockel schicken, weil dort der Speichercontroller sitzt.
 
Qowy schrieb:
Aber kommen wir mal zur Basisfrage ohne konkrete Beispiele.

Ist der Durchsatz eines PCIe Switches höher als seine Uplink Anbindung?
Leider keine Ahnung, gerade mal in Intels ausführlichen Specs geschaut, ob die was angeben, aber nichts gefunden.

Meine Vermutung, aktuell geht so ziemlich alles über die CPU (auch für Sicherheit. Wenn deine Daten verschlüsselt sind, passiert das ja noch in der CPU und ist für jede Partition individuell zb) und dann ist diese Bandbreite zwischen PCIe devices relativ irrelevant...

Für SSD zu SSD Kommunikation einen direkten Transfer vorzusehen ist vermutlich viel zu viel Aufwand für die Last die das erzeugt. Nur bei GPUs mit Spielen scheint sich das zu lohnen (oder bei Netzwerk-Switch Dingen von Netzwerk zu Netzwerk) und bei GPUs ist das nocht nicht im Desktop angekommen und bei Netzwerk auch ziemliche Nische für Server mit stark auf den Einsatzzweck optimiertem Code, weniger universell).
 
Qowy schrieb:
Ok also bedeutet es kann durchaus sein, dass ein m2 zu m2 transfer von denen beide am Chipsatz hängen durchaus nochmal über die CPU müssen?
Ja.

Qowy schrieb:
Ist der Durchsatz eines PCIe Switches höher als seine Uplink Anbindung?
Selbst bei PCIe 3.0 x4 hättest du etwas über 31Gbit und X570 ist mit PCIe 4.0 x4 angebunden, das sind etwas über 63Gbit.

Ich denke das meiste geht auch über die CPU bzw. zumindest dessen Speichercontroller.
 
  • Gefällt mir
Reaktionen: PHuV
Ok schon mal vielen Dank für die Antworten,
also ein Fall von nichts genaues weiß man nicht.

Die konkrete Anwendung meiner Frage, wäre auch eher auf einer TR plattform oder ähnlichem wo es um die Auswertung großer Datenmengen von großen SSD Verbünden geht.

Ich dachte nur bevor ich versuche so viel wie möglich an die CPU zu hängen ist das evtl vllt. sogar kontraproduktiv wenn man SSD zu SSD Transfer oder NIC zu SSD hat (und dann auch noch gleichzeitig).

Im normalen Windows/BasisLinux betrieb, bleibt dann aber wohl so viel wie möglich an die CPU das sicherste.
 
Ach so ein paar U.2 7GB/s SSDs füllen im sequeziellen transfer ganz gut aus ;)
 
ameisenbaer schrieb:
Bei den AMD und Intel Chipsätzen ist das der breiten Allgemeinheit unbekannt, was geht und was nicht.
Dazu müßte man entsprechende White Papers der Chipsätze lesen, die wohl so nicht einfach verfügbar sind wie beispielsweise die White Papers der CPUs.
Qowy schrieb:
Ach so ein paar U.2 7GB/s SSDs füllen im sequeziellen transfer ganz gut aus ;)
Wie und wo betreibst Du U.2 SSDs?
 
Zuletzt bearbeitet:
Qowy schrieb:
Die konkrete Anwendung meiner Frage, wäre auch eher auf einer TR plattform oder ähnlichem wo es um die Auswertung großer Datenmengen von großen SSD Verbünden geht.
Ich würde schwer davon ausgehen, dass das Design / die interne Struktur hier sehr verwandt ist, da Chipsatz und IO-Die beide von AMD kommen und in der Vergangenheit sogar quasi eine Variante des IO-Die als Chipsatz genutzt wurde. Deshalb nehme ich stark an, dass die Chipsatzbandbreite skaliert mit dem Uplink / den angebotenen Ports.

Gerade an der CPU direkt wird sowas ja aber schon genutzt um zB mehrere GPUs direkt miteinander kommunizieren zu lassen. Da gibt es ja mit CUDA auch schon ein paar Bandbreitentests. Die dann GPU-zu-GPU Memory-Transfers testen. Vllt findest du da Zahlen die Flaschenhälse aufzeigen, ansonsten würde bei sowas nur testen helfen. Das wird aber stark Custom-Treiber oder sogar Geräte brauchen um das umzusetzen, weil es eben gerade zwischen verschiedenen Komponenten von verschiedenen Herstellern überhaupt nicht standard ist.
 
Ray519 schrieb:
Ich würde schwer davon ausgehen, dass das Design / die interne Struktur hier sehr verwandt ist
Nicht wirklich. Eine TR-Plattform hat zwar ebenfalls einen Chipsatz, aber die Boards sind so ausgelegt, dass für die ganzen PCIe-Slots fast ausschließlich Lanes genutzt werden, die direkt aus der CPU kommen. Ein 3990X hat auf sTRX4 64 Lanes, die allesamt keinen Umweg über den Chipsatz nehmen müssen.
 
Ja, genau das meine ich ja. Letztendlich das Gleiche, das im Chipsatz passieren muss für direkte Kommunikation zwischen 2 PCIe Geräten, muss auch im "Chipsatz" der CPU passieren (= IO-Die bei allen außer den ganz alten Threadrippern/Epics) und beide sind vom gleichen Hersteller. Also wahrscheinlich, dass die Grundkonzepte und das Design sehr ähnlich ist, nur dass die CPU wesentlich mehr Lanes, Ports, Speed udn Bandbreite bietet...
 
Nixdorf schrieb:
Nicht wirklich. Eine TR-Plattform hat zwar ebenfalls einen Chipsatz, aber die Boards sind so ausgelegt, dass für die ganzen PCIe-Slots fast ausschließlich Lanes genutzt werden, die direkt aus der CPU kommen. Ein 3990X hat auf sTRX4 64 Lanes, die allesamt keinen Umweg über den Chipsatz nehmen müssen.
Ja TR ist da auch so ein bisschen der Messias, Wir haben noch xeon Geräte wo man mit der lahmen Chipsatz Cpu Kommunikation echt aufpassen musste, wenn man "nur" die Workstation Xeons hat (Ohne Server Sockel) danke intel...
 
Zurück
Oben