Verteilter gemeinsamer Speicher

Im Informatik, verteilter gemeinsamer Speicher (DSM) ist eine Form von Gedächtnisarchitektur wo physisch getrennte Erinnerungen als einzelne gemeinsame geteilt werden können Adressraum. Der Begriff "geteilt" bedeutet nicht, dass es einen einzigen zentralisierten Speicher gibt, sondern dass der Adressraum geteilt wird - d. H. Die gleiche physische Adresse auf zwei Prozessoren bezieht sich auf denselben Ort im Speicher.[1]: 201 Verteilter globaler Adressraum (DGAs), ist ein ähnlicher Begriff für eine breite Klasse von Software- und Hardware -Implementierungen, in denen jeder Knoten von a Cluster hat Zugang zu geteilte Erinnerung Zusätzlich zu den privaten Knoten jedes Knotens (d. H. Nicht geteilt) Erinnerung.

Überblick

DSM FIGURE.jpg

Ein verteiltem Memory-System, oft als a genannt Multikomputer, besteht aus mehreren unabhängigen Verarbeitungsknoten mit lokalen Speichermodulen, die durch ein allgemeines Verbindungsnetzwerk verbunden sind. Software -DSM -Systeme können in einem implementiert werden Betriebssystemoder als Programmierbibliothek und kann als Erweiterungen der zugrunde liegenden betrachtet werden virtueller Speicher die Architektur. Bei der Implementierung im Betriebssystem sind solche Systeme für den Entwickler transparent. was bedeutet, dass das zugrunde liegende Verteilter Speicher ist völlig versteckt vor den Benutzern. Im Gegensatz dazu sind Software -DSM -Systeme auf Bibliothek oder Sprachebene nicht transparent und Entwickler müssen sie normalerweise anders programmieren. Diese Systeme bieten jedoch einen tragbaren Ansatz für DSM -Systemimplementierungen. Ein DSM -System implementiert die geteilte Erinnerung Modell auf einem physikalisch verteilten Speichersystem.

DSM kann sowohl über Software als auch Hardware erreicht werden. Zu den Hardware -Beispielen gehören Cache -Kohärenz Schaltungen und Netzwerkschnittstellencontroller. Es gibt drei Möglichkeiten zur Implementierung von DSM:

  • Buchseite-Basierter Ansatz mit virtuellem Speicher
  • Shared-Variable-Ansatz verwenden Routinen zum Zugriff auf gemeinsame Variablen
  • Objektbasierter Ansatz, der idealerweise auf gemeinsame Daten über objektorientierte Disziplin zugreift

Vorteile

  • Skaliert gut mit einer großen Anzahl von Knoten
  • Das Verhalten der Nachricht ist versteckt
  • Kann komplexe und große Datenbanken ohne Replikation oder Senden der Daten an Prozesse verarbeiten
  • Im Allgemeinen billiger als die Verwendung eines Multiprozessorsystems
  • Bietet einen großen virtuellen Speicherplatz
  • Programme sind aufgrund gemeinsamer Programmierschnittstellen tragbarer
  • Schildprogrammierer vom Senden oder Empfangen von Primitiven

Nachteile

  • Im Allgemeinen langsamer zugänglich als nicht verteilte gemeinsame Speicher
  • Muss zusätzlichen Schutz vor gleichzeitigen Zugriff auf gemeinsam genutzte Daten bieten
  • Kann eine Leistungsstrafe verursachen
  • Little Programmer Control über die tatsächlichen Nachrichten, die generiert werden
  • Programmierer müssen Konsistenzmodelle verstehen, um korrekte Programme zu schreiben
  • DSM-Implementierungen verwenden asynchrones Nachrichtenübergang und können daher nicht effizienter sein als Implementierungen für Nachrichtenüberwachungen

Vergleich mit dem Verabschiedung von Nachrichten

Nachrichtenübergang Verteilter gemeinsamer Speicher
Variablen müssen untersagt werden Variablen werden direkt geteilt
Die Kommunikationskosten sind offensichtlich Kommunikationskosten sind unsichtbar
Prozesse werden durch einen privaten Adressraum geschützt Prozesse können Fehler verursachen, indem Daten geändert werden
Prozesse sollten gleichzeitig ausgeführt werden Die Ausführung der Prozesse kann mit nicht überlappenden Lebensdauern auftreten

Software -DSM -Systeme haben auch die Flexibilität, die gemeinsame Speicherregion auf unterschiedliche Weise zu organisieren. Der Seitenbasis organisiert den gemeinsamen Speicher in Seiten mit fester Größe. Im Gegensatz dazu organisiert der objektbasierte Ansatz den gemeinsam genutzten Speicherbereich als abstrakter Raum zum Speichern von gemeinsam genutzbaren Objekten variabler Größen. Eine andere häufig gesehene Implementierung verwendet a Tupelraum, in der die Teileneinheit a ist Tupel.

Shared Memory Architecture kann das Trennen von Speicher in gemeinsame Teile, die zwischen Knoten und Hauptspeicher verteilt sind, einschließen; oder alle Speicher zwischen Knoten verteilen. EIN Kohärenzprotokoll, ausgewählt in Übereinstimmung mit a Konsistenzmodell, unterhält Gedächtniskohärenz.

Verzeichnisgedächtniskohärenz

Gedächtniskohärenz ist notwendig, so dass das System, das das DSM organisiert, den Datenblöcke in Knoten über die Erinnerungen über das System verfolgt und aufrechterhalten kann. Ein Verzeichnis ist ein solcher Mechanismus, der den Zustand der Cache -Blöcke beibehält, die sich um das System bewegt.

Zustände

State diagram of a block of memory in a DSM. A block is "owned" if one of the nodes has the block in state EM.

Ein grundlegender DSM wird mindestens drei Zustände unter den Knoten für einen bestimmten Block im Verzeichnis verfolgen.[2] Es wird einen Zustand geben, der den Block als ungekocht (u) diktiert, einen Zustand, der einen Block als ausschließlich besitzt oder geändert (EM) diktiert, und einen Zustand, der einen Block als gemeinsam genutzte (en) diktiert. Wenn Blöcke in die Verzeichnisorganisation kommen, wechseln sie im ersten Knoten von u zu EM (Eigentümerstaat). Der Zustand kann zu S übergehen, wenn andere Knoten den Block lesen.

Es gibt zwei primäre Methoden, um das System zu verfolgen, wo Blöcke zwischengespeichert sind und in welchem ​​Zustand über jeden Knoten. Home-Centric Request-Response verwendet das Haus zu Serviceanfragen und -staaten, während der mit Antragsteller zentrierte Knoten seine eigenen Anforderungen über das Haus treiben und verwalten kann.

Hausgemachte Anfrage und Antwort

In einem hausgemachten System wird das DSM vermeiden, dass die Reaktionsrassen zwischen Knoten beantragt werden müssen, indem nur eine Transaktion gleichzeitig erfolgt Antwort des Prozessors auf die Anfrage. Ein Beispiel dafür ist Intel's QPI Home-Source-Modus.[3] Die Vorteile dieses Ansatzes sind, dass es einfach zu implementieren ist, aber seine Anfrage-Wirkungs-Strategie ist aufgrund der Einschränkungen des Heimknotens langsam und gepuffert.

Antragsteller-zentrierte Anfrage und Antwort

In einem anforderungszentrierten System ermöglicht das DSM die Knoten, nach dem Willen durch das Haus zu sprechen. Dies bedeutet, dass mehrere Knoten versuchen können, eine Transaktion zu starten. Dies erfordert jedoch zusätzliche Überlegungen, um Kohärenz sicherzustellen. Zum Beispiel: Wenn ein Knoten einen Block verarbeitet, wird ein Nack (negative Bestätigung) für diesen Block von einem anderen Knoten gesendet, um dem Initiator mitzuteilen, dass der Verarbeitungsknoten diese Anforderung nicht sofort erfüllen kann. Ein Beispiel hierfür ist der QPI Snoop-Source-Modus von Intel.[3] Dieser Ansatz ist schnell, verhindert jedoch nicht die Rennbedingungen und erzeugt mehr Busverkehr.

Konsistenzmodelle

Das DSM muss bestimmte Regeln befolgen, um die Konsistenz darüber zu erhalten, wie das Lesen und Schreiben von Reihenfolge unter Knoten angezeigt wird, die als System bezeichnet werden Konsistenzmodell.

Angenommen, wir haben n Prozesse und Mi Speichervorgänge für jeden Prozess iund dass alle Vorgänge nacheinander ausgeführt werden. Können wir schließen, dass (M1 + M2 +… + Mn)!/((M1! M2!… Mn!) sind mögliche Einschüttungen der Operationen. Das Problem mit dieser Schlussfolgerung besteht darin, die Richtigkeit der verschachtelten Operationen zu bestimmen. Speicherkohärenz für DSM definiert, welche Einschüsse zulässig sind.

Sequential invocations and responses in DSM

Reproduzieren

Es gibt zwei Arten von Replikationsalgorithmen. Replikation lesen und Replikation schreiben. In Read Replication können mehrere Knoten gleichzeitig lesen, aber nur ein Knoten kann schreiben. In der Replikation können mehrere Knoten gleichzeitig lesen und schreiben. Die Schreibanfragen werden von einem Sequenzer behandelt. Die Replikation gemeinsamer Daten im Allgemeinen neigt dazu,:

  • Reduzieren Sie den Netzwerkverkehr
  • Förderung einer erhöhten Parallelität
  • Führen zu weniger Seitenfehlern

Die Erhaltung von Kohärenz und Konsistenz kann jedoch schwieriger werden.

Veröffentlichung und Einstiegskonsistenz

  • Freisetzungskonsistenz: Wenn ein Prozess a Kritischer AbschnittNeue Werte der Variablen werden an alle Standorte propagiert.
  • Eingabekonsistenz: Wenn ein Prozess in einen kritischen Abschnitt eingeht, aktualisiert er automatisch die Werte der gemeinsam genutzten Variablen.
    • Ansichtsbasierte Konsistenz: Es handelt sich um eine Variante der Eingabekonsistenz, mit Ausnahme der gemeinsam genutzten Variablen eines kritischen Abschnitts werden automatisch vom System erkannt. Eine Implementierung der angesehenen Konsistenz ist Vodca das hat eine vergleichbare Leistung mit MPI auf Clustercomputern.

Beispiele

Siehe auch

Verweise

  1. ^ Patterson, David A.; Hennessy, John L. (2006). Computerarchitektur: Ein quantitativer Ansatz (4. Aufl.). Burlington, Massachusetts: Morgan Kaufmann. ISBN 978-01-2370490-0.
  2. ^ Solihin, Yan (2015). Grundlagen der parallelen Multicore -Architektur. Boca Raton, Florida: Chapman und Hall/CRC. S. 339–340. ISBN 9781482211184.
  3. ^ a b Sorin, Daniel J.; Hill, Mark D.; Wood, David A. (2011). Eine Grundierung zur Gedächtniskonsistenz und zur Cache -Kohärenz. Morgan & Claypool. p. 174. ISBN 978-16-0845564-5.

Externe Links