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.