PatentDe  


Dokumentenidentifikation DE102006032832A1 17.01.2008
Titel Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
Anmelder Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V., 80686 München, DE
Erfinder Lojewski, Carsten, Dr., 67655 Kaiserslautern, DE
Vertreter PFENNING MEINIG & PARTNER GbR, 80339 München
DE-Anmeldedatum 14.07.2006
DE-Aktenzeichen 102006032832
Offenlegungstag 17.01.2008
Veröffentlichungstag im Patentblatt 17.01.2008
IPC-Hauptklasse G06F 12/00(2006.01)A, F, I, 20060714, B, H, DE
Zusammenfassung Die vorliegende Erfindung betrifft ein Netzwerksystem (1) mit einer Vielzahl über Netzwerkverbindungen (3) verbundener Netzelemente (2). Diese Netzelemente (2) weisen einen Speicher (5) auf, sowie eine DMA-fähige Netzwerkschnittstelle (8).
Derartige verteilte Speichersysteme sind insbesondere im Bereich des verteilten Parallel Computing zu finden.
Erfindungsgemäß wird nun auf jedem Netzelement (2) eine Instanz einer virtuellen Maschine installiert, die einen Teil des jeweiligen lokalen Speichers als globalen Speicherbereich (10) bestimmt, auf dem die einzelnen Instanzen (12) zugreifen können. Der VM-Speicherbereich wird durch die VM-Instanzen so organisiert, dass sich ein einheitlicher globaler virtueller Adressraum ergibt.

Beschreibung[de]

Die vorliegende Erfindung betrifft ein Netzwerksystem mit einer Vielzahl von über Netzwerkverbindungen verbundenen Netzelementen sowie ein Verfahren zur Steuerung verteilter Speicher. Derartige Netzwerksysteme und Verfahren werden benötigt, um über Netzwerkverbindungen verbundene verteilte Speicher effizient zu organisieren, insbesondere um den Speicherzugriff bei parallelem verteiltem Computing zu organisieren.

Die vorliegende Erfindung betrifft daher insbesondere die Zugriffsteuerung auf verteilte, virtuelle Speicher, insbesondere in parallelen Anwendungen und dabei die Vereinigung und Virtualisierung dieser Speicher durch entfernte Direktspeicherzugriffe (RDMA).

Als virtueller Speicher bzw. virtuelle Speicheradresse werden dabei Speicher verstanden, die unter einer logischen Adresse angesprochen werden. Eine virtuelle Adresse ist insofern eine logische Adresse, die sich von der hardwareseitigen physikalischen Adresse der Speicherstelle unterscheiden kann. Weiterhin wird unter einer Adresse in der vorliegenden Anmeldung nicht nur eine einzige Speicheradresse verstanden, sondern beispielsweise auch eine Adressangabe bestehend aus der Adresse der ersten anzusprechenden Speicherstelle in Verbindung mit der Länge (Anzahl von Bits oder Bytes oder dergleichen) des anzusprechenden Speichers, was insgesamt einen Speicherbereich adressiert.

Unter einer Maschine wird im Folgenden ein Programm bzw. eine Hardware (feste Verschaltung bzw. Verdrahtung) verstanden, die eine bestimmte Aufgabe löst. Üblicherweise sind dies Softwareprogramme. Sie agieren jedoch wie technische Maschinen und stellen daher lediglich Software-Implementierungen von technischen Maschinen dar. Eine Instanz einer derartigen Maschine ist ein Programmbestandteil, der eine bestimmte Aufgabe ausführt bzw. löst.

Im Folgenden wird weiterhin davon ausgegangen, dass der Zugriff auf einzelne lokale Speicherstellen innerhalb eines Netzwerkelements grundsätzlich auf der Basis lokaler virtueller Adressen erfolgt. Selbstverständlich ist jedoch auch der Zugriff auf der Basis lokaler reeller Adressen möglich, auch wenn dies heutzutage nicht mehr üblich ist.

Der Fortschritt im Bereich der Netzwerktechnik ermöglicht es, heutzutage auch entfernte Speicherbereiche, beispielsweise über Netzwerkverbindungen verbundene Speicherbereiche mit hohen Bandbreiten anzusprechen. Eine aktuelle Entwicklung hierzu ist unter dem Namen „Infiniband" bekannt. Sie nutzt PC-Erweiterungskarten (Schnittstellen), die über eine Direktspeicherzugriff-Hardware (DMA-Hardware, direct memory access hardware) lokale Speicherbereiche lesen und schreiben können, um diese dann anschließend mittels eines Netzwerks zu kommunizieren.

Grundsätzlich ist es dadurch möglich, einzelne Recheneinheiten, z.B. einzelne Personal Computer (PC), beispielsweise auch mit mehreren Multicore-Prozessoren zu einem leistungsfähigen Parallelrechner zu verbinden. In einem solchen Falle spricht man von einer schwach gekoppelten, verteilten Speicher-Topologie (distributed memory system), da die entfernten Speicherbereiche lediglich über Netzwerkverbindungen statt über herkömmliche Busverbindungen miteinander verknüpft sind.

In einem solchen Falle einer schwach gekoppelten verteilten Speicher-Topologie ist es erforderlich, Adressumrechnungseinheiten vorzusehen, die lokale virtuelle Adressen in nutzbare physikalische Adressen überführen.

Nach dem Stand der Technik wird hierzu die gesamte Hardware einer Recheneinheit durch das Betriebssystem virtualisiert und dem Anwender über eine Software-Schnittstelle zur Verfügung gestellt. Der Zugriff einer Anwendung auf einen solchen lokalen, virtualisierten Speicher und die damit verbundene Umrechnung erfolgt üblicherweise durch das Betriebssystem. Will eine Anwendung auf einen entfernten Speicherbereich zugreifen (lesen oder schreiben), so wird dies durch Kommunikationsbibliotheken realisiert, also über spezielle Kommunikationsspeicher.

Infiniband löst den Zugriff einer Recheneinheit A auf eine Recheneinheit B bzw. deren Speicher wie folgt beschrieben.

Zuerst alloziert die Recheneinheit A einen bei ihr vorhandenen lokalen virtuellen Speicher VA und schreibt die zu kommunizierenden Daten in diesen Speicherbereich. Dann wird von der Recheneinheit A an die Recheneinheit B über die Netzwerkverbindung, beispielsweise eine Ethernet-Verbindung, die Größe des erforderlichen Speichers übermittelt. Hierauf alloziert die Recheneinheit B in dem ihr zur Verfügung stehenden lokalen Speicher einen lokalen virtuellen Speicher VB mit dieser erforderlichen Länge. Die Anfangsadresse des lokalen virtuellen Speichers VB wird dann als virtuelle Adresse an die Recheneinheit A, wiederum über die Netzwerkverbindung, gesandt.

Nunmehr rechnet die Recheneinheit A die physikalische Adresse des Speicherbereichs VA aus und führt anschließend einen Datentransfer von der physikalischen Adresse des Speicherbereiches VA mit der Länge B zu dem Datenbereich VB in der Recheneinheit B durch. Auch dies erfolgt wiederum über eine Netzwerkverbindung.

Wie zu erkennen ist, erfordert ein derartiges Vorgehen eine Vielzahl von Kommunikationsverbindungen und Abstimmungen zwischen den beteiligten Recheneinheiten. Ein derartiger Speicherzugriff kann dabei lediglich zwischen einzelnen Kommunikationspaaren von jeweils 2 Recheneinheiten durchgeführt werden. Nachteilig ist weiterhin, dass eine aufwändige Kommunikationsbibliothek und ein Kommunikationsspeicher VA zur Verfügung gestellt werden müssen und die Rechenwerke der Recheneinheiten selbst in den Datenaustausch involviert werden. Insbesondere ist bei diesem Vorgehen eine kollektive Operation einer Vielzahl von Recheneinheiten zu aufwändig in der Organisation und daher nicht performant. Eine globale Speicherkonsistenz wird ebenfalls nicht gewährleistet.

Hier setzt nun die vorliegende Erfindung ein, die es sich zur Aufgabe macht, ein Netzwerksystem und ein Verfahren zur Verfügung zu stellen, mit dem effizient und konsistent auf verteilte Speicher zugegriffen werden kann, um beispielsweise eine parallele Anwendung auf verteilten Netzwerkeinheiten durchzuführen.

Diese Aufgabe wird bei der vorliegenden Erfindung durch das Netzwerksystem nach Anspruch 1 und das Verfahren nach Anspruch 15 gelöst. Vorteilhafte Weiterbildungen des erfindungsgemäßen Netzwerksystems und des erfindungsgemäßen Verfahrens werden in den jeweiligen abhängigen Ansprüchen gegeben. Die Erfindung betrifft weiterhin Verwendungen derartiger Netzwerksysteme und Verfahren, wie sie in Anspruch 26 gegeben werden.

Entscheidend bei der vorliegenden Erfindung ist, dass zur konsistenten Organisation des Zugriffs auf verteilte Speicher in verteilten Netzwerkelementen, auf den beteiligten Netzwerkelementen eine gemeinsame virtuelle Maschine installiert wird. Diese ist nichts anderes als ein Programm bzw. ein festverdrahtetes System (Hardware), die die im Folgenden beschriebenen Funktionen durchführt.

Die virtuelle Maschine besteht dabei aus einer Vielzahl von Instanzen (Programmabschnitten und/oder Hardware-Elementen), wobei in jedem Netzelement eine Instanz installiert wird. Diese Instanz alloziert in dem lokalen Speicher des jeweiligen Netzelementes einen Speicherbereich, der der virtuellen Maschine zur Verfügung steht. Dieser wird als VM-Speicherbereich bezeichnet. Diesem Speicherbereich sowie den darin befindlichen Speicherstellen werden globale virtuelle Adressen (VM-Adressen) zugeordnet. Diese virtuellen globalen Adressen sind für jede der Speicherstellen innerhalb der Gesamtheit von VM-Speicherbereichen, die durch die einzelnen Instanzen der virtuellen Maschine auf den jeweiligen Netzelementen alloziert werden, eindeutig. Über eine derartige virtuelle VM-Adresse lässt sich dann von jeder der Instanzen jede beliebige Speicherstelle innerhalb der Gesamtheit der VM-Speicherbereiche eindeutig ansprechen, sofern dieser zuvor entsprechende Zugriffsrechte eingeräumt wurden.

Besonders vorteilhaft ist es, wenn die einzelnen Instanzen die globalen virtuellen VM-Adressen ihrer jeweiligen allozierten VM-Speicherbereiche unmittelbar nach Installation der virtuellen Maschine untereinander austauschen.

Als Netzelemente kommen dabei Recheneinheiten in Frage, die ein eigenes Rechenwerk sowie einen zugeordneten Speicher aufweisen. Es sind jedoch aufgrund der technologischen Entwicklung auch über Netzwerkverbindungen, beispielsweise Internet-Verbindungen oder andere LAN-Verbindungen oder auch WLAN-Verbindungen, miteinander gekoppelte Speichereinheiten, möglich, die nicht über eigene Recheneinheiten im eigentlichen Sinne verfügen. Aufgrund der technologischen Weiterentwicklung ist es möglich, dass unmittelbar die Speichereinheit selbst die erforderliche Mikroprozessorkapazität zur Installation einer VM-Instanz aufweist oder eine derartige VM-Instanz in einer RDMA-Schnittstelle (Netzwerkkarte mit remote direct memory acess, entfernter Direktspeicherzugriff) installiert werden kann.

Die globalen virtuellen Adressen der VM-Speicherbereiche bilden einen globalen virtuellen Adressraum. Die lokale Umrechnung und Kommunikation der für den globalen virtuellen Adressraum benötigten Adressen wird von den einzelnen VM-Instanzen durchgeführt, die lokal laufende Vorrichtungen bzw. Programme darstellen. Diese lokalen VM-Instanzen und gegebenenfalls zusammen mit den lokalen und globalen Operationen oder auch Anwendungen bilden gemeinsam die virtuelle Maschine. Diese ist also die Vereinigung aller VM-Instanzen.

Die virtuelle Maschine optimiert gegebenenfalls die Datenkommunikation und überwacht auch die parallel laufenden Prozesse der einzelnen Instanzen. Wird nun von einer Instanz auf eine globale virtuelle VM-Adresse zugegriffen, so prüft diese zuerst, ob diese innerhalb des eigenen Netzelementes liegt. In diesem Falle führt sie unmittelbar die Umrechnung in die lokale virtuelle Adresse bzw. gegebenenfalls auch lokale reale Adresse durch und greift auf den Speicher zu. Anderenfalls greift sie über die globale virtuelle Adresse auf den globalen VM-Speicherbereich der erforderlichen Netzeinheit zu.

Besonders vorteilhaft ist es, wenn die globale virtuelle Adresse ein 2-Tupel ist, das als erstes Element die Netzadresse des Netzelementes, in dem der Speicher physikalisch alloziert ist, und als zweites Element eine virtuelle Speicheradresse innerhalb dieses Netzelementes aufweist. Auch eine reale Speicheradresse ist als zweites Element des 2-Tupels möglich. Hierdurch ist ein unmittelbarer Zugriff jeder VM-Instanz auf eine definierte Speicherstelle innerhalb des globalen virtuellen Adressraumes möglich.

Vorteilhafterweise ist es auch möglich, einen eigenen Cachespeicherbereich bei einzelnen oder allen der Netzelemente zu allozieren. Möchte dann eine Anwendung auf Daten zugreifen, die lokal nicht vorliegen, so können diese Daten bereits zuvor in einem derartigen VM-Cache zwischengespeichert werden. Beim nächsten Zugriff auf diese Daten durch das Netzelement, in dem sie im VM-Cache gespeichert sind, sind diese Daten also lokal vorhanden und werden nicht mehr durch das Netzwerk übertragen. Auch eine globale Gültigkeit dieser Cachedaten kann gewährleistet werden, indem z.B. Cacheeinträge als „dirty" markiert werden, wenn zuvor eine VM-Instanz dieses Schreiben verändert. Insgesamt wird hierdurch ein beschleunigter Zugriff auf die in dem globalen virtuellen Adressraum gespeicherten Daten möglich.

Im Falle von Recheneinheiten als Netzelemente wird also auf jeder der Recheneinheiten eine Instanz der virtuellen Maschine gestartet. Diese teilt dann den in der Recheneinheit vorhandenen Hauptspeicher in zwei bzw. drei Bereiche ein. Diese Bereiche sind zum einen der globale virtuelle Speicher der virtuellen Maschine, der lokale Speicher, der der lokalen Anwendung auf der Recheneinheit zur Verfügung stehen soll, sowie gegebenenfalls ein VM-Cache, wie oben beschrieben. Die Einteilung kann global erfolgen, über eine Anwendung gesteuert sein oder auch vom Betriebssystem vorgegeben werden.

Die Zugriffsrechte für den globalen virtuellen VM-Speicherbereich und den VM-Cache wird global für jede VM-Instanz vergeben. So kann beispielsweise jeder VM-Instanz der Zugriff auf diese Speicherbereiche erlaubt werden oder nur ein Teil der VM-Instanzen.

Vorteilhafterweise tauschen nach dem Start der VM-Maschine alle beteiligten VM-Instanzen ihre für den globalen VM-Speicher reservierten lokalen Adressbereiche. Jede globale virtuelle Adresse ist danach dann beispielsweise über eine LUT-Struktur (look up table-Struktur) ansprechbar. Die Umrechnung der lokalen virtuellen oder realen Adressen in bzw. aus globalen virtuellen VM-Adressen erfolgt innerhalb der lokalen VM-Instanz, wobei vorteilhafterweise folgende Realisierungen möglich sind:

  • • als Softwaremakro innerhalb einer Hochsprache,
  • • über das Betriebssystem durch Einblenden des globalen virtuellen Speicherbereichs im Prozessraum, der diesen Speicherbereich nützenden Anwendung,
  • • direkte Implementierung der Adressumrechnung mittels einer look up-Tabelle (LUT) auf der Hardware der DMA-fähigen Netzwerkschnittstelle.

Vorteilhaft an der vorliegenden Erfindung ist nunmehr die Verwendung eines gemeinsamen globalen virtuellen Speichers in einem System mit verteilten Speichern. Es wird eine einseitige, global asynchrone Kommunikation ohne Kommunikationspartner (single side communications) möglich. Weiterhin kann die Kommunikation als globale Zero-Copy-Kommunikation erfolgen, bei der keine Zwischenkopien erzeugt werden müssen. Die Rechenwerke der Recheneinheiten sind daher während der Kommunikation frei für weitere Aufgaben, selbst bei asynchronen Kommunikationsmodi. Der globale Cachespeicher kann ebenfalls über die lokalen Speicherbereiche verteilt werden.

Wesentlich bei der vorliegenden Erfindung ist außerdem, dass eine globale Speicherkonsistenz gewährleistet wird. Die vorliegende Erfindung ermöglicht es, weiterhin eine NUMA-Computer-Speicher-Architektur für Multiprozessorsysteme (non-uniform memory acess) innerhalb des erfindungsgemäßen globalen Speichermodels zu integrieren.

Die vorliegende Erfindung ist dabei insbesondere auf parallelen oder nicht parallelen Systemen, insbesondere mit mehreren über Netzwerke miteinander verbundenen Recheneinheiten für parallele oder auch nichtparallele Anwendungen einsetzbar. Der Einsatz ist jedoch auch möglich mit mehreren verteilten Speichereinheiten, wenn jedes Speichersubsystem eine Vorrichtung aufweist, die einen Fernzugriff (remote access) auf diesen Speicher ermöglicht. Auch gemischte Systeme, bei denen nicht parallel gearbeitet wird, jedoch der Speicher verteilt auf verschiedene Netzwerkelemente vorliegt, eignen sich für die Anwendung der vorliegenden Erfindung.

Im folgenden werden einige Beispiele erfindungsgemäßer Netzwerksysteme und Verfahren gegeben.

Es zeigen

1 die logische Struktur eines erfindungsgemäßen Netzwerksystems mit zwei Recheneinheiten A und B;

2 die physikalische Struktur eines erfindungsgemäßen Netzwerksystems mit zwei Recheneinheiten 1 und N; und

3 ein Flussdiagramm mit dem genauen Ablauf einer virtuellen Adressumrechnung.

Hier wie im folgenden werden für gleiche oder ähnliche Elemente gleiche oder ähnliche Bezugszeichen verwendet, so dass deren Beschreibung ggf. nicht wiederholt wird. Im folgenden werden einzelne Aspekte der Erfindung im Zusammenhang miteinander geschildert, auch wenn jeder einzelne der im folgenden geschilderten Aspekte der Beispiele und der Erfindung als solche für sich erfindungsgemäße Weiterbildungen der vorliegenden Erfindung darstellen.

1 zeigt nun den Aufbau eines Netzwerksystems nach der vorliegenden Erfindung. Dieses weist zwei Recheneinheiten A und B auf, die jeweils einen lokalen Speicher 5a und 5b aufweisen. Von diesem lokalen Speicher wird durch die jeweils auf der Recheneinheit A und B installierte Instanz der virtuellen Maschine ein Teil 10a, 10b für den globalen Gebrauch durch die virtuelle Maschine als globaler Speicherbereich reserviert. Die auf den jeweiligen Recheneinheiten A und B installierten Instanzen der virtuellen Maschine, die mit den Bezugszeichen 12a und 12b bezeichnet sind, verwalten diesen Speicher. Sie teilen also insgesamt den Speicher 5a, 5b ein in lokalen Speicher 9a, 9b und globalen virtuellen Speicherbereich 10a, 10b.

Die Gesamtheit des reservierten globalen Speicherbereichs 10a, 10b, der Instanzen der virtuellen Maschine 12a, 12b sowie die globalen Operationen, die zum Betrieb der Maschine und zur Optimierung der Speichernutzung erforderlich sind (z.B. Barriers, kollektive Operation etc.), bilden die virtuelle Maschine 11. Diese virtuelle Maschine ist also ein Gesamtsystem bestehend aus reserviertem Speicher und Programmbestandteilen bzw. Hardware, die die VM-Instanzen 12a, 12b bilden.

Mit einer derartigen virtuellen Maschine 11 innerhalb eines Netzwerksystems 1 wird folglich ein übergreifender globaler virtueller Speicherbereich geschaffen und verwaltet, der für Anwendungen auf einer der Recheneinheiten A oder B sowie für Anwendungen, die parallel und verteilt auf den Recheneinheiten A und B laufen, zugänglich ist.

2 zeigt eine weitere Realisierung der virtuellen Maschine, wobei hier nicht die logische Ebene, sondern die Hardwareebene dargestellt ist. Die Recheneinheiten 1 und N, dieser Index deutet an, dass 2 auch auf eine beliebige Anzahl Recheneinheiten verallgemeinert werden kann, sind mit den Bezugszeichen 2a und 2b bezeichnet. Jede der Recheneinheiten 2a und 2b besitzt einen Hauptspeicher 5a, 5b sowie Rechenwerke 4a bis 4a' bzw. 4b bis 4b', die als RW1 bis RWN bezeichnet sind. Der Index 1 bis N deutet an, dass jede Recheneinheit eine beliebige Zahl von Rechenwerken 4 aufweisen kann. Diese Rechenwerke arbeiten mit dem Hauptspeicher 5a zusammen. Die Recheneinheit 2a, 2b weist weiterhin eine DMA-fähige Schnittstelle 8a bzw. 8b auf. Diese Schnittstellen 8a und 8b sind mit einem Netzwerk 3 verbunden, über das die Recheneinheiten 1 und N, 2a und 2b bzw. bei Verallgemeinerung auch weitere Recheneinheiten miteinander kommunizieren können.

Auf jeder dieser Recheneinheiten 2a, 2b wird nun eine Instanz einer virtuellen Maschine installiert, wobei jede der lokalen VM-Instanzen die lokalen virtuellen Adressen (ggf. auch lokalen realen Adressen) abstrahiert und sie für DMA-Operationen vorbereitet. Das Netzwerk 3 ist selbstverständlich auch DMA-fähig, da es dann den Datentransport zwischen den beiden Recheneinheiten 2a und 2b über die DMA-Netzwerkschnittstellen 8a, 8b durchführt.

Vorteilhafterweise weist das DMA-fähige Netzwerk 3 folgende Kenngrößen auf:

  • – Der Datenaustausch zwischen den Hauptspeichern erfolgt hardwareparallel, d.h. der DMA-Controller und das Netzwerk 3 arbeiten unabhängig und nicht programmgesteuert;
  • – die Zugriffe auf die Speicher 7a, 7b (lesend/schreibend) erfolgen ohne Intervention der Rechenwerke 4a, 4a', 4b, 4b';
  • – die Datentransporte können asynchron-nicht-blockierend durchgeführt werden;
  • – es erfolgt die Übertragung mit einem Zero-Copy-Protokoll (es werden keine Kopien der übertragenen Daten angelegt), so dass kein lokaler Betriebssystem-Overhead erforderlich ist.

Um die Latenzzeiten des Netzwerks zu verstecken, können vorteilhafterweise parallele Anwendungen in dem Netzwerksystem 1 asynchron auf den globalen Speicherbereich der virtuellen Maschine zugreifen. Der aktuelle Zustand der Lese- und Schreiboperation kann dabei jederzeit von der virtuellen Maschine abgefragt werden.

Bei dem in 2 dargestellten System wird die Zugriffsbandbreite auf entfernte Speicherbereiche, d.h. beispielsweise von der Recheneinheit 1 auf den Speicherbereich 5b der Recheneinheit N weiter erhöht, indem die jeweilige lokale Instanz der virtuellen Maschine auf den Speicherbereichen 5a und 5b einen Cache-Speicher (Speicherpuffer) 6a bzw. 6b installiert. Diese Cache-Speicher 6a und 6b bilden zusammen aufgrund der Organisation durch die virtuellen Maschine einen globalen Cache-Speicher. Dieser kann beispielsweise als FIFO (First In First Out) oder als LRU (Least Recently Used)-Speicherbereich organisiert werden, um asynchron angeforderte Daten zwischenzuspeichern. Auch für diesen globalen Cache-Speicher bzw. seine einzelnen Speicherbereiche 6a, 6b kann globale Speicherkonsistenz innerhalb der beteiligten VM-Instanzen garantiert werden, z.B. indem Cache-Einträge als „dirty" markiert werden, wenn eine VM-Instanz diese zuvor schreibend verändert hat.

Hierdurch wird insgesamt ein beschleunigter Zugriff auf erforderliche Daten erreicht. Der Cache-Speicher 6a, 6b ist für jeder der Anwendungen, die die virtuelle Maschine nutzt, transparent, da er von der virtuellen Maschine verwaltet und kontrolliert wird. ES ist jedoch auch möglich, den Cache-Speicher 6a, 6b durch die Anwendungen, die auf einem oder parallel auf mehreren der Recheneinheiten läuft, zu verwalten und zu kontrollieren.

Bei dem in 2 gezeigten Beispiel steht ein Teil des Hauptspeichers 5a, 5b als lokaler Speicher weiterhin allen Anwendungen auf den Recheneinheiten 2a, 2b lokal wie gewohnt zur Verfügung. Dieser lokale Speicher ist jedoch für die virtuelle Maschine nicht sichtbar (getrennte Adressräume) und kann folglich lokal anderweitig genutzt werden.

3 zeigt nun die virtuelle Adressumrechnung innerhalb eines Netzwerksystems, wie es in den 1 und 2 dargestellt wird.

Greift eine Anwendung auf eine Speicheradresse innerhalb des globalen Speicherbereichs 10a, 10b zu, so ermittelt die jeweilige lokale VM-Instanz 12a, 12b ein zugehöriges Kommunikations-2-Tupel als virtuelle Adresse innerhalb des globalen VM-Speicherbereichs 10a, 10b. Dieses 2-Tupel ist bei diesem Beispiel aus zwei Elementen zusammengesetzt, wobei das erste Element sich aus der Netzadresse der lokalen Recheneinheit 2a, 2b und das zweite Elemente aus einer virtuellen Adresse innerhalb des globalen Adressraums der VM-Maschine ergibt.

Dieses 2-Tupel gibt also an, ob sich der zu der virtuellen Adresse zugehörige physikalische Speicher innerhalb der Recheneinheit selbst, auf der die Anwendung läuft und die auf diesen Speicherbereich zugreifen möchte, befindet oder in einem entfernten Speicherbereich in einer entfernten Recheneinheit zugehörig ist. Ist die zugehörige physikalische Adresse lokal auf der zugreifenden Recheneinheit vorhanden, handelt es sich also um eine lokale virtuelle Adresse, so wird diese über das Betriebssystem BS aufgelöst. Soweit das Betriebssystem NUMA und Process Affinity unterstützt, so kann die virtuelle Maschine einer Anwendung oder einem Ausführungspfad direkt Speicherbereiche eines bestimmten Rechenwerkes zuordnen. Auf diese Weise wird dann der Inhalt des angesprochenen Speichers aus dem lokalen VM-Speicherbereich 10a bzw. 10b angesprochen. Greift beispielsweise die Recheneinheit 5a in 1 auf einen Speicherbereich des globalen Speichers zu, so wird geprüft, ob sich dieser Speicher des globalen Speicherbereichs lokal auf der Recheneinheit 5a befindet. Wenn dies der Fall ist, so wird unmittelbar auf diesen Speicher zugegriffen.

Liegt die Zieladresse jedoch auf entfernten Recheneinheiten, beispielsweise auf der Recheneinheit 5b, so berechnet die lokale VM-Instanz, die auf der Recheneinheit 5a installiert ist, die virtuelle Adresse auf der entfernten Recheneinheit 5b und initiiert einen DMA-Aufruf mit Quell- und Zieladressen. Die Berechnung dieser Adressen auf der entfernten Recheneinheit 5b erfolgt wiederum über das 2-Tupel mittels eines Zugriffs auf eine Look-Up-Tabelle. Nach Initiierung des DMA-Aufrufs geht die Kontrolle an die DMA-Hardware, in diesem Falle eine RDMA-Hardware (Remote Direct Memory Access, entfernter Direktspeicherzugriff). Zur weiteren Datenübertragung sind dann die Rechenwerke 4 in den Recheneinheiten 5 nicht mehr involviert und können andere Aufgaben, beispielsweise lokale Anwendungen oder hardwareparallele Berechnungen übernehmen.

Durch die vorliegende Erfindung wird also eine Maschine mit verteiltem Speicher (Shared Memory Machine) mit den Vorteilen einer verteilten Speichertopologie verbunden.

Die vorliegenden Beispiele beziehen sich im wesentlichen auf Netzwerksysteme 1, die Recheneinheiten 5a, 5b aufweisen. Die vorliegende Erfindung ist jedoch durch einfache Ersetzung der Recheneinheiten 5a, 5b durch Speichereinheiten auch in Netzwerksystemen verwendbar, bei denen einzelne Speichereinheiten über Netzwerkverbindungen 3 miteinander verbunden sind. Diese Speichereinheiten müssen nicht Teil von Recheneinheiten sein. Es genügt, wenn diese Speichereinheiten Vorrichtungen aufweisen, die einen RDMA-Zugriff auf diese Speichereinheiten ermöglichen. Dies ermöglicht dann auch den Einsatz von über Netzwerkverbindungen 3 gekoppelte Speichereinheiten innerhalb eines Systems, bei dem ggf. lediglich noch eine Recheneinheit vorhanden ist bzw. in Systemen, bei denen die virtuelle Maschine lediglich die Organisation mehrerer verteilter Speichereinheiten übernimmt.

Besonders vorteilhaft ist jedoch der Einsatz des erfindungsgemäßen Netzwerksystems 1 für parallele verteilte Anwendungen, bei denen Anwendungen auf mehreren Recheneinheiten 5a, 5b parallel abgearbeitet werden.


Anspruch[de]
Netzwerksystem (1) mit einer Vielzahl über Netzwerkverbindungen (3) verbundener Netzelemente (2), wobei jedes der Netzelemente (2) mindestens einen Speicher (5) sowie eine Direktspeicherzugriff (DMA)-fähige Netzwerkschnittstelle (8) aufweist,

dadurch gekennzeichnet,

dass auf jedem Netzelement (2) eine Instanz (VM-Instanz, 12) einer virtuellen Maschine (VM, 11) läuft, die zumindest einen Teil des Speichers (5) in dem Netzelement (2) als globalen VM-Speicherbereich (10) bestimmt, wobei gegebenenfalls jede der VM-Instanzen (12) Zugriffsrechte hierauf besitzt, und

wobei jeder Speicherstelle im VM-Speicherbereich (10) eine für alle VM-Instanzen (12) der virtuellen Maschine (11) einheitliche globale virtuelle Adresse zugeordnet ist.
Netzwerksystem (1) nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass die globalen virtuellen Adressen aller VM-Instanzen (11) einen einheitlichen globalen virtuellen Adressraum bilden. Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Netzelemente (2) Speichereinheiten oder Recheineinheiten, die mindestens eine Rechenwerk (4) aufweisen, sind. Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, gekennzeichnet durch eine Vielzahl über Netzwerkverbindungen (3) verbundener Recheneinheiten (2) als Netzelemente (2), wobei jede der Recheneinheiten (2) mindestens ein Rechenwerk (4), einen Speicher (5) sowie eine Direktspeicherzugriff (DMA)-fähige Netzwerkschnittstelle (8) aufweist,

dadurch gekennzeichnet,

dass auf jeder Recheneinheit (2) eine Instanz (VM-Instanz, 11) einer virtuellen Maschine (VM, 10) läuft, die den in der jeweiligen Recheneinheit (2) angeordneten Speicher (5) in mindestens zwei Bereiche, nämlich einen globalen VM-Speicherbereich (10), wobei gegebenenfalls jede der VM-Instanzen (12) der virtuellen Maschine (11) Zugriffsrechte hierauf besitzt, sowie einen lokalen Speicherbereich (9), der von weiteren, lokal auf der Recheneinheit (2) laufenden Prozessen angesprochen werden kann,

aufteilt, und

wobei jeder Speicherstelle im VM-Speicherbereich (10) eine für alle VM-Instanzen (12) einheitliche globale virtuelle Adresse zugeordnet ist.
Netzwerksystem (1) nach einem der Ansprüche 1 bis 3, gekennzeichnet durch

mindestens eine Recheneinheit (2) als Netzelement (2), wobei jede der Recheneinheiten (2) mindestens ein Rechenwerk (4), einen Speicher (5) sowie eine Direktspeicherzugriff (DMA)-fähige Netzwerkschnittstelle (8) aufweist, sowie

mindestens eine mit der mindestens einen Recheneinheit (2) über Netzwerkverbindungen (3) verbundene Speichereinheit (2) als Netzelement (2), die mindestens einen Speicher (5) und eine Direktspeicherzugriff (DMA)-fähige Netzwerkschnittstelle (8) aufweist,

dadurch gekennzeichnet,

dass auf jeder Recheneinheit (2) und Speichereinheit (2) eine Instanz (VM-Instanz) einer virtuellen Maschine (VM, 11) läuft, wobei die auf einer Recheneinheit (2) laufende VM-Instanz (12) den in der jeweiligen Recheneinheit (2) angeordneten Speicher (5) in mindestens zwei Bereiche, nämlich einen globalen VM-Speicherbereich (10), wobei jede der VM-Instanzen (12) der virtuellen Maschine (11) Zugriffsrechte hierauf besitzt, sowie einen lokalen Speicherbereich (9), der von weiteren, lokal auf der Recheneinheit (2) laufenden Prozessen angesprochen werden kann,

aufteilt, und

die auf einer Speichereinheit (2) laufende VM-Instanz (12) zumindest einen Teil des Speichers (5) in der Speichereinheit (2) als globalen VM-Speicherbereich (10) bestimmt, wobei jede der VM-Instanzen (12) gegebenenfalls Zugriffsrechte hierauf besitzt,

und wobei jeder Speicherstelle in einem globalen VM-Speicherbereich eine für alle VM-Instanzen (12) einheitliche globale virtuelle Adresse zugeordnet ist.
Netzwerksystem (1) nach einem der Ansprüche 1 bis 3, gekennzeichnet durch

eine Vielzahl über Netzwerkverbindungen (3) verbundener Speichereinheiten (2) als Netzelemente (2), wobei jede der Speichereinheiten (2) mindestens einen Speicher (5) sowie eine Direktspeicherzugriff (DMA)-fähige Netzwerkschnittstelle (8) aufweist,

dadurch gekennzeichnet,

dass auf jeder Speichereinheit (2) eine Instanz (VM-Instanz, 12) einer virtuellen Maschine (VM, 11) läuft, die zumindest einen Teil des Speichers (5) in der Speichereinheit (2) als globalen VM-Speicherbereich (10) bestimmt, wobei gegebenenfalls jede der VM-Instanzen (12) der virtuellen Maschine (11) Zugriffsrechte hierauf besitzt, und

wobei jeder Speicherstelle im globalen VM-Speicherbereich (10) eine für alle VM-Instanzen (12) einheitliche globale virtuelle Adresse zugeordnet ist.
Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die einheitliche, globale virtuelle Adresse sich zusammensetzt aus einer Adresse des Netzelementes (2), insbesondere seiner Netzadresse, in dem der VM-Speicherbereich (10) angeordnet ist, und einer lokalen virtuellen oder realen Adresse auf dem Netzelement (2). Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Umrechnung zwischen der lokalen virtuellen oder realen Adresse und der globalen virtuellen Adresse in der VM-Instanz (12) erfolgt. Netzwerksystem (1) nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass die Umrechnung zwischen der lokalen virtuellen oder realen Adresse und der globalen virtuellen Adresse als Software-Makro in einer Hochsprache, durch Einblenden des globalen VM-Speicherbereichs (10) in der Prozessraum einer im Netzwerk (1) parallel auszuführenden Anwendung und/oder durch eine Look-Up-Tabelle, insbesondere in der DMA-fähigen Netzwerk-Schnittstelle (8), erfolgt. Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die globale virtuelle Adresse ein 2-Tupel ist. Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass zumindest eine der VM-Instanzen (12) der virtuellen Maschine (11) zumindest eines Netzelementes (2) einen VM-Cachespeicherbereich (6) in dem in der Recheneinheit oder Speichereinheit angeordneten Speicher (5) vorsieht zum Zwischenspeichern von aus einem VM-Speicherbereich (10) angeforderten oder anzufordernden Daten. Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Übertragung von Daten über die Netzwerkverbindungen (3) zumindest teilweise asynchron erfolgt. Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass bei Anforderung der Übertragung von Daten aus Speicherstellen mit einer globalen virtuellen Quelladresse eines lokalen Netzelementes (2) zu Speicherstellen mit einer globalen virtuellen Zieladresse, die auf dem lokalen Netzelement (2) laufende VM-Instanz (12) aus der globalen virtuellen Quelladresse die lokale virtuelle oder reale Adresse bestimmt und einen lokalen DMA-Aufruf seiner DMA-fähigen Netzwerk-Schnittstelle mit Quell- und Zieladresse zur Übertragung der Daten, die in den durch die lokale virtuelle oder reale Adresse bezeichneten Speicherstellen gespeichert sind, an die Zieladresse durchführt. Netzwerksystem (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass nach der Installation der VM-Instanzen (12) auf den einzelnen Netzelementen (2) jede der VM-Instanzen (12) einen VM-Speicherbereich (10) in dem Speicher (5) des zugehörigen Netzelementes (2) bestimmt und sämtliche VM-Instanzen (12) die globalen virtuellen Adressen bzw. die Adressbereiche der globalen virtuellen Adressen der VM-Speicherbereiche (10) untereinander austauschen. Verfahren zur Steuerung verteilter Speicher (5) in einem Netzwerksystem (1) mit einer Vielzahl über Netzwerkverbindungen (3) verbundener Netzelemente (2), wobei jedes der Netzelemente (2) mindestens einen Speicher (5) sowie eine Direktspeicherzugriff-(DMA)-fähige Netzwerkschnittstelle (8) aufweist, dadurch gekennzeichnet, dass auf jedem Netzelement (2) eine Instanz (VM-Instanz, 12) einer virtuellen Maschine (VM, 11) installiert wird, die zumindest einen Teil des Speichers (5) in dem jeweiligen Netzelement (2) als VM-Speicherbereich (10) bestimmt, auf den gegebenenfalls jede der VM-Instanzen (12) der virtuellen Maschine (11) zugreifen können, und wobei jeder Speicherstelle im VM-Speicherbereich (10) eine für alle VM-Instanzen (12) einheitliche globale virtuelle Adresse zugeordnet wird. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass die globalen virtuellen Adressen aller VM-Instanzen (12) einen globalen Speicher mit einheitlichem globalem Adressraum bilden. Verfahren nach einem der Ansprüche 15 und 16 dadurch gekennzeichnet, dass nach der Installation der VM-Instanzen (12) sämtliche VM-Instanzen (12) die globalen virtuellen Adressen bzw. Adressbereiche der lokalen VM-Speicherbereiche (10) untereinander austauschen. Verfahren nach einem der Ansprüche 15 bis 17, dadurch gekennzeichnet, dass die einzelnen Netzelemente (2) auf die VM-Speicherbereiche (10) bzw. den globalen Speicher der virtuellen Maschine unter Verwendung der globalen virtuellen Adressen zugreifen. Verfahren nach einem der Ansprüche 15 bis 18, dadurch gekennzeichnet, dass die einheitliche, globale virtuelle Adresse aus einer Adresse des Netzelementes (2), beispielsweise der Netzadresse des Netzelementes (2), in dem der VM-Speicherbereich (10) angeordnet ist, und einer lokalen virtuellen oder realen Adresse auf dem Netzelement (2) gebildet wird. Verfahren nach einem der Ansprüche 15 bis 19, dadurch gekennzeichnet, dass die Umrechnung zwischen der lokalen virtuellen oder realen Adresse und der globalen virtuellen Adresse von der VM-Instanz (12) durchgeführt wird. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass die Umrechnung zwischen der lokalen virtuellen oder realen Adresse und der globalen virtuellen Adresse als Software-Makro in einer Hochsprache, durch Einblenden des globalen VM-Speicherbereichs (10) in der Prozessraum einer im Netzwerk parallel auszuführenden Anwendung und/oder durch eine Look-Up-Tabelle, insbesondere in der DMA-fähigen Schnittstelle (8) durchgeführt wird. Verfahren nach einem der Ansprüche 15 bis 21, dadurch gekennzeichnet, dass die einheitliche, globale virtuelle Adresse als 2-Tupel gebildet wird. Verfahren nach einem der Ansprüche 15 bis 22, dadurch gekennzeichnet, dass zumindest eine der VM-Instanzen einen VM-Cachespeicherbereich (6) in dem in dem zugehörigen Netzelement (2) angeordneten Speicher (5) bestimmt zum Zwischenspeichern von aus einem globalen VM-Speicherbereich (10) angeforderten oder anzufordernden Daten. Verfahren nach einem der Ansprüche 15 bis 23, dadurch gekennzeichnet, dass Daten über die Netzwerkverbindungen (3) zumindest teilweise asynchron übertragen werden. Verfahren nach einem der Ansprüche 15 bis 24, dadurch gekennzeichnet, dass bei Anforderung zur Übertragung von Daten aus Speicherstellen mit einer globalen, virtuellen Quelladresse eines lokalen Netzelementes (2) zu Speicherstellen mit einer globalen, virtuellen Zieladresse die auf dem lokalen Netzelement (2) laufende VM-Instanz (12) aus der globalen virtuellen Quelladresse die lokale virtuelle oder reale Quelladresse bestimmt und einen lokalen DMA-Aufruf der DMA-fähigen Netzwerk-Schnittstelle (8) mit Quell- und Zieladresse zur Übertragung der Daten, die in den durch die lokale virtuelle oder reale Adresse bezeichneten Speicherstellen gespeichert sind, an die Zieladresse durchführt. Verfahren nach einem der Ansprüche 15 bis 25, dadurch gekennzeichnet, dass für jede der VM-Instanzen (12) Zugriffsberechtigungen auf die einzelnen VM-Speicherbereiche festgelegt werden. Verwendung eines Netzwerksystems (1) und/oder eines Verfahrens nach einem der vorhergehenden Ansprüche zur Zugriffssteuerung, Vereinigung und Virtualisierung verteilter Speicher (5) mittels Ferndirektspeicherzugriffs (RDMA, remote direct memory access), insbesondere zur Durchführung paralleler Anwendungen.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com