Matthew Bowden - Fotolia
Eine Einführung in die Verwendung der CXL-Technologie
Der Compute Express Link, eine Open-Source-Speicherverbindung, gewinnt zunehmend an Bedeutung. Erfahren Sie hier, warum er wichtig ist und wie er die Leistung verbessert.
Die Compute-Express-Link-Technologie sollte das Preis-/Leistungsverhältnis eines Unternehmens verbessern, aber Rechenzentrumsmanager müssen wissen, welche Systeme sie am besten nutzen können.
Compute Express Link, kurz CXL, ermöglicht die kohärente Unterstützung großer Memory-Ressourcen (Arbeitsspeicher) zwischen Prozessoren. Es ist eine gute Alternative zur derzeitigen Funktionsweise von GPUs, bei der Daten über einen langsameren PCIe-I/O-Kanal vom Memory des Hosts zum Memory der GPU übertragen werden. CXL 3.0 ermöglicht auch die Zuweisung von gemeinsam genutztem Memory an verschiedene Hosts in einem System und damit eine Aufteilung des Memory-Speichers, ähnlich wie dies heute bei Speichersystemen der Fall ist.
Bisher haben Systeme mit mehreren Prozessoren (wie CPU, GPU und KI-Prozessoren) den Arbeitsspeicher in verschiedene Bereiche aufgeteilt - einen für den Server, einen für die GPU und vielleicht einen für den KI-Prozessor - und die Administratoren haben jeden Datenaustausch zwischen diesen Geräten als I/O-Transfer behandelt. Compute Express Link ist eine Möglichkeit, alle Memory-Zugriffe für alle Prozessoren wie Memory aussehen zu lassen.
Warum CXL wichtig ist
Heute wird die gesamte Kommunikation zwischen einer GPU oder einem ähnlichen Gerät und dem Memory eines Servers als I/O durchgeführt. I/O ist im Vergleich zum Memory-Kanal eine viel langsamere Methode zur Aktualisierung des Memorys. Ebenso wurde die gesamte Datenverwaltung zwischen der CPU des Servers und dem Arbeitsspeicher eines Beschleunigers als I/O abgewickelt, was die Datenbewegung in beide Richtungen verlangsamt.
Vor der CXL-Technologie verwaltete der Host die Memory-Speicher dieser Systeme über PCIe. Die physische PCIe-Schnittstelle ist schnell, das Protokoll jedoch nicht - insbesondere bei großen Datenübertragungen. Mit CXL können Administratoren Datenübertragungen viel schneller durchführen, aber das CXL-Protokoll ist begrenzter als das von PCIe.
Ein Teil der Verzögerung rührt auch daher, dass die Software den PCIe durch einen Interrupt-gesteuerten Kontext-Switch verwaltet. Andererseits verarbeiten Prozessoren Memory-Zugriffe sofort, ohne ein Interrupt-gesteuertes I/O-Protokoll zu verwenden.
CXL ermöglicht es Beschleunigern, auf das Memory eines Servers als Arbeitsspeicher zuzugreifen, und erlaubt es dem Server, auf das Memory eines Beschleunigers als reines Memory zuzugreifen. Es gibt keine Unterbrechungen und keine Kontext-Switche.
Diese Technologie wird bestimmte Aufgaben beschleunigen. In der Zeit vor CXL luden Administratoren eine GPU-Karte auf die gleiche Weise, wie sie auf eine PCIe-SSD schreiben würden: über einen PCIe-I/O-Kanal. Bei einer I/O-Übertragung fällt eine Menge Software-Overhead an, so dass diese Übertragungen sehr langsam sind. Durch die Konvertierung solcher Zugriffe in eine standardisierte Load-Store-Semantik für das Memory verschwindet dieser Overhead, und Administratoren können die Daten schnell vom Server-Memory in den Arbeitsspeicher der GPU kopieren. Die Daten werden auch in umgekehrter Richtung übertragen, so dass Administratoren den Memory-Inhalt des KI-Beschleunigers als Memory-zu-Memory-Kopie in den Arbeitsspeicher des Host-Servers kopieren können.
Die Implementierung ist allerdings nicht einfach. Wenn zwei unabhängige Geräte auf das Memory des jeweils anderen zugreifen, kann der Prozess an Kohärenz verlieren. Wenn beispielsweise ein Serverprozessor einen bestimmten Memory-Platz zwischengespeichert hat und ein Beschleuniger diesen Speicherplatz ändert, müssen die Administratoren die zwischengespeicherte Kopie in der CPU des Servers aktualisieren. Die CXL-Technologie verwendet eingebaute Mechanismen, die sicherstellen, dass Administratoren solche Vorgänge ordnungsgemäß verwalten.
Wie bei den meisten architektonischen Änderungen liegt auch bei CXL der Schwerpunkt auf der Steigerung des Rechendurchsatzes und der Senkung der Kosten. Durch die Verringerung der Verzögerungen bei der Übertragung von Arbeitsspeicher zu Arbeitsspeicher optimiert CXL die Nutzung vorhandener Hardware, wobei lediglich die zugrunde liegende Software geändert wird.
Tatsächlich sind die physischen Schnittstellen von PCIe und CXL identisch. Während der Initialisierung bestimmen diese Protokolle, ob ein bestimmter Kanal als PCIe-Lane oder für CXL verwendet wird.
Wer nutzt CXL?
Die meisten potenziellen Anwender finden sich in Hyperscale-Rechenzentren. Administratoren können CXL als Mechanismus für die gemeinsame Nutzung von Memory-Pools durch viele Server verwenden, was es für große Installationen besonders interessant macht; es könnte dazu beitragen, den Durchsatz im Rechenzentrum zu verbessern, darüber hinaus zur Senkung der Kosten und der Serveranzahl.
Rechenzentrumsmanager werden CXL auch in anderen Anwendungen einsetzen, insbesondere in Subsystemen, die über einen eigenen Arbeitsspeicher verfügen, wie GPU-Karten und KI-Beschleuniger. Langfristig ist zu erwarten, dass CXL in Systemen mit mehreren Prozessoren weit verbreitet sein wird.
CXL und Optane
Viele Fachleute haben CXL als einen Platz für Optane-DIMMs gesehen. Intels Entscheidung, Optane abzukündigen, hat keinen Einfluss auf die Verwendung von CXL.
Ein bedeutender Teil der Unterstützung für CXL kommt aus der Hyperscale-Community. Hyperscale-Rechenzentren sind an der CXL-Technologie interessiert, weil sie gemeinsame DRAM-Pools unterstützt. Für die meisten dieser Unternehmen ist DRAM ein wichtiges Thema. Stellen Sie sich zum Beispiel eine Serverfarm mit 20.000 Servern vor, die alle ähnlich konfiguriert sind und über eine bestimmte Menge an DRAM verfügen. Wenn für bestimmte Anwendungen zu wenig DRAM vorhanden ist, werden diese Anwendungen nur langsam ausgeführt. Die Pages werden häufiger als gewünscht auf den Speicher ausgelagert und wieder zurückgeholt.
Warum also nicht alle Server mit einer großen Menge an DRAM ausstatten? Das ist zum einen teurer, aber es gibt auch noch andere Probleme. DRAM ist ein Energiefresser, so dass man versucht, seine Größe gering zu halten. Ein Großteil dieser Energie wird in Wärme umgewandelt, so dass die Kühlungskosten mit mehr DRAM steigen. Es ist eine bewährte Praxis, jeden Server mit der kleinstmöglichen DRAM-Größe auszustatten.
Einige Administratoren könnten versucht sein, bestimmte Server für Anwendungen zu reservieren, die viel Memory benötigen. Dies widerspricht dem Konzept der Virtualisierung und der Kompositionsfähigkeit (Composability), bei dem Aufgaben jedem Server frei zugewiesen werden können, unter der Annahme, dass alle Server des Rechenzentrums gleichwertig sind. Außerdem lässt jeder Server mit einer großen Menge an DRAM einen Großteil dieses Arbeitsspeichers ungenutzt, wenn er Aufgaben ausführt, die weniger Memory brauchen.
Andere Teile des Systems weisen dynamisch gemeinsame Ressourcen zu, zum Beispiel Speicher und sogar Server im Falle der Virtualisierung. Warum kann man das nicht auch mit dem Memory machen? Dies ist die Hauptmotivation für Hyperscale-Rechenzentren, gemeinsame Memory-Pools einzuführen. Anwendungen, die einen großen Arbeitsspeicher benötigen, können einen Teil des Memorys aus dem Pool ausleihen und ihn wieder abgeben, wenn die Aufgabe erledigt ist.
Auf diese Weise können einzelne Server relativ wenig internen DRAM (Near-Memory) enthalten und sich das, was sie benötigen, aus dem Pool auf der anderen Seite des CXL-Kanals (Far-Memory) ausleihen.
Wie CXL die Leistung verbessert
Nahezu jedes Programm wird leistungsfähiger, wenn die Administratoren Memory hinzufügen, aber bei allen Anwendungen gibt es einen Punkt, an dem der Nutzen abnimmt. Die CXL-Technologie hilft dabei, indem sie das System in die Lage versetzt, dynamisch zu bestimmen, welche Programme eine Leistungssteigerung erhalten sollen und welche nicht.
In einem Beispiel erfährt Anwendung A bei jeder Verdoppelung der Memory-Größe eine große Leistungssteigerung, während Anwendung B eine geringere Steigerung erfährt und Anwendung C nur geringfügig von der Memory-Größe betroffen ist. Jedes System, auf dem Instanzen von Anwendung A laufen, sollte dieser Anwendung so viel gemeinsames Memory wie möglich zuweisen und alles, was übrig bleibt, für Anwendung B reservieren.
Wenn es keine Instanzen von Anwendung A gibt, sollte Anwendung B den größten Teil des Speicherpools erhalten, und die Reste gehen an Anwendung C. Alle Anwendungen profitieren dann von dieser verbesserten Leistung.
Wenn ein Speicherblock frei wird und die Manager des Rechenzentrums diesen Block nutzen können, um eine Instanz von Anwendung B um 12 Prozent zu beschleunigen, eine Instanz von Anwendung A aber nur um 11 Prozent, weil Anwendung A bereits viel Memory zugewiesen wurde, dann sollte der dynamische Zuweisungsalgorithmus Anwendung B bevorzugen.
Ein guter Supervisor muss diesen Prozess verwalten. Diese Software dafür wird im Laufe der Zeit entwickelt werden.
Letztendlich geht es jedoch darum, wie ein großes System den Memory-hungrigsten Anwendungen mehr Arbeitsspeicher zur Verfügung stellen kann, wenn sie ihn brauchen, und gleichzeitig den DRAM-Bestand des Rechenzentrums mit seinen hohen Kosten, seinem Stromverbrauch und seinen Kühlungsanforderungen reduziert.
Die CXL-Technologie bietet großes Memory zu niedrigen Kosten für speicherhungrige Anwendungen. Außerdem ermöglicht sie es Beschleunigern und Servern, in das Memory des jeweils anderen zu schreiben und dabei die Kohärenz zu wahren.