Verteilter Speicher

Eine Abbildung eines verteilten Speichersystems von drei Computern.

Im Informatik, Verteilter Speicher bezieht sich auf a Multiprozessor -Computersystem in welchem ​​jeweils Prozessor hat seinen eigenen Privat Erinnerung. Rechenaufgaben können nur mit lokalen Daten arbeiten, und wenn Remotedaten erforderlich sind, muss die Rechenaufgabe mit einem oder mehreren Remote -Prozessoren kommunizieren. Dagegen a geteilte Erinnerung Multiprozessor bietet einen einzelnen Speicherplatz, der von allen Prozessoren verwendet wird. Prozessoren müssen sich nicht bewusst sein, wo sich Daten befinden, außer dass es Leistungsstrafen geben kann und dass die Rennbedingungen vermieden werden sollen.

In einem verteilten Speichersystem gibt es normalerweise einen Prozessor, einen Speicher und eine Form der Verbindung, die es den Programmen für jeden Prozessor ermöglicht, miteinander zu interagieren. Die Verbindung kann mit organisiert werden mit Punkte zu Punktverbindungen oder separate Hardware kann ein Schaltnetzwerk bereitstellen. Das Netzwerktopologie ist ein Schlüsselfaktor bei der Bestimmung, wie die Multiprozessormaschine Waage. Die Verbindungen zwischen Knoten können mit einem Standard -Netzwerkprotokoll (zum Beispiel mit einem Standard -Netzwerkprotokoll implementiert werden Ethernet) Verwenden von maßgeschneiderten Netzwerkverbindungen (zum Beispiel in der Verwendung in der Verwendung Durchgang) oder verwenden Dual-portierte Erinnerungen.

Programmieren verteilter Speichermaschinen

Das Hauptproblem bei der Programmierung verteilter Speichersysteme ist die Verteilung der Daten über die Erinnerungen. Abhängig vom gelösten Problem können die Daten statisch verteilt oder durch die Knoten bewegt werden. Daten können nach Bedarf verschoben werden, oder Daten können im Voraus an die neuen Knoten gedrückt werden.

Als Beispiel, wenn ein Problem als Pipeline beschrieben werden kann, wobei Daten x wird anschließend durch Funktionen verarbeitet f, g, husw. (Das Ergebnis ist h(g(f(x))))), dann kann dies als verteiltes Speicherproblem ausgedrückt werden, bei dem die Daten zuerst an den Knoten übertragen werden, der ausgeführt wird f Das übergibt das Ergebnis auf den zweiten Knoten, der berechnet gund schließlich zum dritten Knoten, der berechnet h. Dies ist auch als bekannt als systolische Berechnung.

Daten können statisch in Knoten aufbewahrt werden, wenn die meisten Berechnungen lokal auftreten, und nur Änderungen an den Kanten müssen an andere Knoten gemeldet werden. Ein Beispiel dafür ist eine Simulation, bei der Daten unter Verwendung eines Gitters modelliert werden und jeder Knoten einen kleinen Teil des größeren Gitters simuliert. Bei jeder Iteration informieren Knoten alle benachbarten Knoten über die neuen Edgedaten.

Verteilter gemeinsamer Speicher

In ähnlicher Weise in verteilter gemeinsamer Speicher Jeder Knoten eines Clusters hat zusätzlich zu dem begrenzten, nicht stammenden privaten Speicher jedes Knotens Zugriff auf einen großen gemeinsam genutzten Speicher.

Shared Memory vs. Distributed Speicher vs. Distributed Shared Speicher

  • Der Vorteil des (verteilten) gemeinsamen Speichers besteht darin, dass er einen einheitlichen Adressraum bietet, in dem alle Daten gefunden werden können.
  • Der Vorteil des verteilten Speichers besteht darin, dass er Rassenbedingungen ausschließt und den Programmierer dazu zwingt, über die Datenverteilung nachzudenken.
  • Der Vorteil des verteilten (gemeinsam genutzten) Speichers ist, dass es einfacher ist, eine Maschine zu entwerfen, die mit dem Algorithmus skaliert wird

Der verteilte gemeinsame Gedächtnis verbirgt den Kommunikationsmechanismus und verbergt nicht die Latenz der Kommunikation.

Siehe auch