Netzwerksystem und Verfahren zur Steuerung parallel existierender Adressräume
Die vorliegende Erfindung betrifft ein Netzwerksystem mit einer Vielzahl von über Netzwerkverbindungen verbundener Netzelemente sowie ein Verfahren zur Steuerung parallel existierender Adressräume. Derartige Netzwerksysteme und Verfahren werden benötigt, um ü- ber Netzwerkverbindungen verbundene verteilte Spei- eher effizient zu organisieren, insbesondere um den Speicherzugriff bei parallelem verteiltem Computing zu beschleunigen.
Die vorliegende Erfindung betrifft insbesondere die Zugriffsteuerung auf verteilte Speicher, insbesondere durch parallel laufende Anwendungen (parallel verteilte Anwendungen, bei denen Anwendungen auf mehreren getrennten Einheiten, wie z.B. PCs, parallel abgearbeitet werden) und dabei die Vereinigung dieser verteilten Speicher, um sie den Anwendungen durch
entfernte Direktspeicherzugriffe (RDMA, engl, remote direct memory access) effizient zur Verfügung zu stellen.
Als virtueller Speicher bzw. virtuelle Speicheradresse werden Speicher verstanden, die unter einer abstrahierten Adresse angesprochen werden. Eine virtuelle Adresse ist insofern eine abstrahierte Adresse, die sich von der hardwareseitigen physikalischen Ad- resse der Speicherstelle unterscheiden kann. Weiterhin wird unter einem Adressbereich in der vorliegenden Anmeldung 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 verstanden.
Unter dem Begriff eines linearen Adressraums wird im Folgenden eine Abbildung auf einen Speicherbereich verstanden, der ab einer definierten Startadresse linear durch verschiedene Offsets (beginnend ab der Startadresse mit Offset gleich Null) angesprochen werden kann.
Unter einer Maschine wird im Folgenden ein einen Programmteil (Software) und einen Hardwareteil (feste Verschaltung bzw. Verdrahtung) umfassendes Element verstanden, welches eine bestimmte Aufgabe löst. Eine solche Maschine agiert insgesamt gesehen wie eine technische Maschine und ctcllt somit eine einen SofL- wareanteil umfassende Implementierung einer technischen Maschine dar. Eine Instanz einer derartigen Maschine (welche ebenfalls einen Programmteil und einen Hardwareteil umfasst) ist eine Einheit bzw. ein Be- standteil, der lokal (in einem Netzwerkelement) eine bestimmte Aufgabe ausführt bzw. löst.
Im Folgenden wird weiterhin davon ausgegangen, dass der Zugriff auf einzelne lokale oder entfernte Speicherstellen grundsätzlich auf der Basis lokal berech- neter Adressen erfolgt.
Der Fortschritt im Bereich der Netzwerktechnik ermöglicht es, heutzutage auch entfernte Speicherbereiche, beispielsweise über Netzwerkverbindungen verbundene Speicherbereiche mit hohen Bandbreiten anzusprechen. Aus dem Stand der Technik sind bereits DMA (DMA = engl, direct memory access) fähige Netzwerkelemente bekannt. Sie nutzen z. B. PC-Erweiterungskarten (Schnittstellen) , die über eine Direktspeicher- zugriff-Hardware (DMA-Hardware) lokale oder entfernte Speicherbereiche lesen und schreiben können. Dieser Datenaustausch erfolgt einseitig, also ohne zusätzlichen Austausch von Adressangaben.
Grundsätzlich ist es dadurch möglich, einzelne Recheneinheiten, z.B. einzelne Personal Computer (PC), beispielsweise auch mit mehreren Multicore-Prozes- soren zu einem leistungsfähigen Parallelrechner zu verbinden. In einem solchen Falle spricht man von ei- ner schwach gekoppelten, verteilten Speicher-Topolo- gie (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, ein Kommunikationsnetzwerk aufzusetzen, welches einen Datenaustausch zwischen den Kommunikationspartnern erst ermöglicht.
Nach dem Stand der Technik wird hierzu die gesamte Hardware einer Recheneinheit durch das Betriebssystem virtualisiert und einer Anwendung über Software- Schnittstellen zur Verfügung gestellt. Der Zugriff einer Anwendung auf einen solchen lokalen, virtuali- sierten 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.
Der Zugriff einer Recheneinheit A auf eine Recheneinheit B bzw. deren Speicher erfolgt dabei stets über ein mehrstufiges Kommunikationsprotokoll:
Zuerst informiert die Recheneinheit A die Recheneinheit B, dass Daten zu kommunizieren sind. Sodann al- lokiert die Recheneinheit A temporär einen Kommunika- tionsspeicher VA und kopiert die zu kommunizierenden Daten in diesen Speicher. Dann wird von der Recheneinheit A an die Recheneinheit B die Größe des erforderlichen Speichers übermittelt. Hierauf allokiert die Recheneinheit B temporär einen Kommunikations- Speicher VB mit dieser erforderlichen Größe. Daraufhin informiert die Recheneinheit B die Recheneinheit A darüber, dass der temporär allokierte Speicher bereitsteht. Im Anschluss erfolgt der Datenaustausch. Nach erfolgtem Datenaustausch und erfolgter Verwen- düng der kommunizierten Da.ten v/erden die temporär al- lokierten Speicherbereiche wieder freigegeben.
Wie zu erkennen ist, erfordert ein derartiges Vorgehen eine Vielzahl von Kommunikationsverbindungen und Abstimmungen zwischen den beteiligten Recheneinheiten. Ein derartiger Speicherzugriff kann dabei ledig-
lieh zwischen einzelnen Kommunikationspaaren von jeweils zwei Recheneinheiten durchgeführt werden. Nachteilig ist weiterhin, dass eine aufwändige Kommunikationsbibliothek zur Verfügung gestellt werden muss und dass für jede zu erfolgende Kommunikation erneut temporär Kommunikationsspeicher VA und VB zur Verfügung gestellt werden müssen. Nachteilig ist schließlich, dass die Rechenwerke der Recheneinheiten selbst in den Datenaustausch involviert werden (z. B. Kopiervorgang der Nutzdaten in den temporären Kommunikationspuffer) .
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 effizienter, flexibler und besser skalierbar auf verteilte Speicher zugegriffen werden kann, um beispielsweise eine parallele Anwendung auf mehreren, verteilten Netzwerkeinheiten durchführen zu können. Unter einer parallelen Anwendung wird hierbei die Gesamtheit aller zeitlich parallel-ablaufender Rechenprogramme mit Ausführungspfad (en) beschrieben, die zusammen, verbunden über ein Netzwerk, zur Bearbeitung von Eingabedaten herangezogen werden können. Die einzelnen Re- chenprogramme werden dabei auf physikalisch getrennten Rechenwerken mit eigenem Speicher ausgeführt (Rechenwerke der Netzelemente) . Man spricht daher auch von parallelen Anwendungen auf verteilten Speichern (Distributed Memory Computing) .
Diese Aufgabe wird bei der vorliegenden Erfindung durch das Netzwerksystem nach Anspruch 1 und das Verfahren nach Anspruch 21 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 23 gegeben werden.
Entscheidende Idee bei der vorliegenden Erfindung ist es, dass zur effizienten und konsistenten Organisation des Zugriffs einer Anwendung auf verteilte Speicher in verteilten Netzelementen a priori (d.h. spätestens beim AnwendungsStart oder unmittelbar danach) in jedem der beteiligten Netzelemente zumindest ein
Teil des normalerweise für Berechnungen zur Verfügung stehenden physikalischen Systemspeichers dauerhaft (d. h. über die gesamte Laufzeit dieser Anwendung bzw. Applikation) für den Datenaustausch mit anderen Netzelementen exklusiv für diese Anwendung reserviert wird. Unter einer exklusiven Reservierung eines lokalen physikalischen Speicherbereichs für die Anwendung wird dabei verstanden, dass dieser lokale Speicherbereich so abgetrennt wird, dass er fortan ausschließ- lieh der besagten Anwendung zur Verfügung steht, dass also anderen Anwendungen und das Betriebssystem keine Zugriffsrechte mehr auf diesen physikalischen Speicherbereich haben und/oder erwerben können.
Die lokal in den einzelnen Netzelementen reservierten Speicherbereiche werden wie nachfolgend noch näher beschrieben in einem global dauerhaft nutzbaren physikalischen Kommunikations- und Rechenspeicher zusam- mengefasst, indem die einzelnen Netzelemente unter- einander Informationen (z. B. Startadr^sse und Länge des reservierten Bereiches bzw. Adressbereich) über die bzw. zur Identifikation der lokal reservierten physikalischen Speicherbereiche austauschen. Untereinander austauschen bedeutet hierbei, dass jedes be- teiligte Netzelement mit jedem anderen beteiligten
Netzelement einen solchen Informationsaustausch vor-
nimmt (beteiligt sind hierbei in der Regel alle Netzelemente des Netzwerksystems) . Basierend auf diesen ausgetauschten Informationen wird ein globaler virtueller Adressraum (globaler VM-Speicherbereich) aufge- spannt, indem die globalen virtuellen Adressen dieses Adressraums so aufgebaut werden, dass jede globale virtuelle Adresse eine ein Netzelement eindeutig festlegende Information (z. B. Nummer des Netzelementes) und eine eine sich auf diesem Netzelement befin- dende physikalische Speicheradresse eindeutig festlegende Information (z. B. die Adressangabe der physikalischen Speicherstelle selbst) umfasst.
Dieser globale VM-Speicherbereich kann dann von der Anwendung für die unmittelbare Kommunikation (unmittelbarer Datenaustausch zwischen den Netzelementen, d. h. ohne weitere Adressumrechnungen virtuell auf physikalisch) mittels DMA-Hardware verwendet werden, indem die Anwendung die globalen virtuellen Adressen als Zugriffsadressen einsetzt. Die Anwendung verwendet somit globale virtuelle Adressen für einen DMA- Aufruf: Dies wird dadurch ermöglicht, dass der globale VM-Speicherbereich in den virtuellen Adressraum der Anwendung (dies ist der virtuelle Adressraum, welcher der Anwendung vom Betriebssystem zur Verfügung gestellt wird) eingeblendet wird. Wie eine solche Einblendung erfolgen kann, ist dem Fachmann bekannt (z. B. MMAP) . Der direkte DMA-Aufruf durch die Anwendung ist hierbei möglich, da ein direkter linea- rer Zusammenhang zwischen dem eingeblendeten globalen VM-Speicherbereich und den einzelnen lokal reservierten physikalischen Speicherbereichen besteht. Die Anwendung wird hierbei weiterhin standardmäßig durch das Betriebssystem verwaltet und kann Dienste des Be- triebssystems in Anspruch nehmen.
Der lokal zur Verfügung gestellte physikalische Sys- temspeicher eines Netzelementes kann dabei beispielsweise einen über einen Systembus des Netzelementes (z. B. PC) ansprechbaren Speicher umfassen, es ist jedoch auch möglich, dass dieser physikalische Systemspeicher einen auf einer separaten Karte (z. B. PCI-E-Steckkarte) zur Verfügung gestellten Speicher (Kartenspeicher) umfasst.
Um die vorbeschriebene Lösung zur realisieren, wird auf den beteiligten Netzelementen eine gemeinsame virtuelle Maschine installiert. Diese umfasst auf den Netzwerkelementen Programmteile (Software) und festverdrahtete Teile (Hardware) und führt die im Folgen- den beschriebenen Funktionen durch.
Die virtuelle Maschine besteht dabei aus einer Vielzahl von Instanzen (lokale Programmabschnitte und lokale Hardware-Elemente), wobei in jedem Netzelement eine Instanz, die sog. VM- Instanz, welche dann jeweils einen Programmteil (lokale VM-Schnittstellen- bibliothek) und einen Hardwareteil (lokales VM-Hard- wareinterface) aufweist, installiert wird. Die VM- Instanz allokiert in dem lokalen Speicher des jewei- ligen Netzelementes den vorstehend beschriebenen, zu reservierenden lokalen physikalischen Speicherbereich, der der virtuellen Maschine (und über diese der Anwendung) nach Austausch der vorbeschriebenen Informationen in Form des globalen VM-Speicher- bereichs zur Verfügung gestellt wird. Die Allckatiori kann dabei entweder von der lokalen VM-Schnittstellenbibliothek zur Laufzeit der Anwendung vorgenommen werden, oder von dem lokalen VM-Hardwareinterface zur Systemstartzeit oder während des Bootvorgangs vorge- nommen werden. Die globalen virtuellen Adressen sind für jede der Speicherstellen innerhalb des globalen
VM-Speicherbereichs eindeutig. Über eine derartige globale virtuelle VM-Adresse lässt sich dann von jeder der VM-Instanzen jede beliebige Speicherstelle innerhalb des globalen VM-Speicherbereichs eindeutig 5 ansprechen, sofern dieser Instanz zuvor entsprechende Zugriffsrechte eingeräumt wurden.
Die lokalen VM-Instanzen bilden somit gemeinsam, gegebenenfalls zusammen mit lokalen und globalen Opera- 10 tionen (beispielsweise gemeinsame globale atomare
Zähler), die virtuelle Maschine. Diese ist also die Vereinigung aller VM-Instanzen.
Somit werden durch die vorliegende Erfindung zwei pa- 15 rallel existierende, voneinander unabhängige Adressräume ausgebildet: Ein erster Adressraum, welcher wie gehabt durch das Betriebssystem verwaltet wird, und ein weiterer, zweiter Adressraum, welcher durch die lokalen VM-Instanzen verwaltet wird. Der zweite Ad- 20 ressraum steht mit Hilfe der lokalen VM-Instanzen exklusiv einer Anwendung (gegebenenfalls auch mehrerer Anwendungen) zur Verfügung.
Besonders vorteilhaft ist es, wenn die einzelnen VM- 25 Instanzen die von den einzelnen Netzelementen untereinander auszutauschenden Informationen (z. B. Startadresse und Länge des reservierten Bereiches) über die lokal reservierten physikalischen Speicherbereiche unmittelbar nach Systemstart oder während des ■}o RoOtVo-TCTcIn47S austauschen, da zu diesem Zeitpunkt linear zusammenhängende physikalische Speicherbereiche maximaler Größe im jeweiligen lokalen Netzelement reserviert werden können bzw. dem Zugriff durch das Betriebssystem entzogen werden können. 35
Als Netzelemente kommen dabei Recheneinheiten in Fra-
ge, die ein eigenes Rechenwerk sowie einen zugeordneten Speicher aufweisen (z.B. PCs). 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 dass eine derartige VM- Instanz in einer RDMA-Schnittstelle (Netzwerkkarte mit remote direct memory acess, entfernter Direkt- Speicherzugriff) installiert werden kann.
Die virtuelle Maschine optimiert die Datenkommunikation und überwacht auch die parallel laufenden Prozesse der einzelnen Instanzen. Bei einem Zugriff ei- ner parallelen Anwendung (welche auf allen lokalen Netzelementen ausgeführt wird) auf den globalen VM- Speicherbereich mittels DMA-Aufruf werden die benötigten Quell- und Zieladressen von der zugehörigen lokalen VM-Instanz (diese ist die VM-Instanz desjeni- gen Netzelements, in dem die Anwendung einen Datenaustausch initiiert) wie folgt berechnet:
Die (globale virtuelle) Quelladresse ergibt sich gemäß der Adresstranslation, welche durch das Einblen- den des globalen VM-Speicherberei rhs in den virtuellen Adressraum der Anwendung definiert wurde bzw. entstanden ist, aus einer einfachen Offsetberechnung (der Offset ist hierbei gleich der Differenz aus der Startadresse des lokalen physikalischen Bereichs und der Startadresse des zugehörigen eingeblendeten Bereichs; erste Art der Offsetberechnung) .
Wird nun von der (lokalen) VM-Instanz auf die (globale virtuelle) Zieladresse zugegriffen, so prüft die Instanz zuerst, ob die Zieladresse innerhalb des ei- genen (lokalen) Netzelementes liegt. Ist dies der
Fall, wird die Zieladresse von der VM- Instanz analog zur Quelladresse (s. oben) berechnet. Andernfalls, wenn also die Nummer des Netzelements nicht der Nummer des Netzelements der zugreifenden VM-Instanz ent- spricht, ergibt sich die Zieladresse ebenfalls aus einer Offsetberechnung, wobei sich der Offset hier dann jedoch aus der Differenz der Startadressen der reservierten physikalischen Speicherbereiche des lokalen Netztelements und des betroffenen entfernten Netzelements ergibt, zweite Art der Offsetberechnung (d. h. es erfolgt ein Zugriff über die globale virtuelle Adresse auf den lokalen physikalischen Speicherbereich der betroffenen entfernten Netzeinheit; die betroffene entfernte Netzeinheit ist dabei dasjenige Netzelement, welches durch die in der entsprechenden globalen VM-Adresse beinhaltete Information zur Identifikation des zugehörigen Netzelementes, also z.B. die Nummer des Netzelementes, festgelegt ist) . Anschließend erfolgt in beiden Fällen der Datenaus- tausch mittels hardwareparallelem DMA.
Besonders vorteilhaft ist es, wenn die globale virtuelle Adresse ein 2-Tupel ist, das als erstes Informationselement z.B. die weltweit eindeutige MAC-Adresse des Netzelementes., in dem <ieτ" Speicher physikalisch allokiert ist, und als zweites Informationselement eine physikalische Speicheradresse innerhalb dieses Netzelementes aufweist. 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, durch die parallele Anwendung gesteuerten, globalen Cachespeicherbereich zu definieren. Dies kann wie folgt geschehen: Zunächst wird eines der beteiligten Netzelemente als Cachenetzelement ausgewählt. In diesem ausgewählten Cachenetzelement wird lokaler physikalischer Speicher gesondert als globaler LBU- Cachespeicher ausgewiesen (LBU von engl, load balan- cing unit; eine solche LBU ist eine Menge von Operanden bzw. Inhalten oder zu bearbeitende Daten, die, wie dem Fachmann bekannt ist, eine Zerlegung des parallel zu lösenden Problems der parallelen Anwendung in mehrere einzelne, global eindeutige Teilstücke (die Units) , die den einzelnen Netzelementen zur Bearbeitung zugeordnet werden, beschreibt; die Inhalte der LBUs sind dabei unveränderlich) . Das Cachenetz- element teilt allen anderen Netzelementen seine Eigenschaft, das Cachenetzelemente zu sein (sowie seine Netzelementnummer) , mittels eines von der virtuellen Maschine zur Verfügung gestellten Service mit (globale Operation) .
In dem Cachenetzelement wird im globalen LBU-Speicher ein Protokoll gespeichert, in welchem vermerkt wird, welche LBUs sich aktuell auf welchen Netzelementen befinden. Das Protokoll vermerkt hierbei für alle LBUs, in welchem Netzelement sie sich gerade befinden und wo sie dort im lokalen physikalischen Speicher abqeleαt sind. Hierzu wird das Protokoll ϊiher die
Laufzeit jeweils aktualisiert, wenn eine LBU zwischen zwei Netzelementen kommuniziert wird bzw. worden ist, indem die beteiligten Netzelemente dies dem Cachenetzelement mitteilen. Jede LBU-Kommunikation wird somit im Protokoll festgehalten. Das Protokoll kann beispielsweise in Form einer n-fach assoziativen Ta-
belle erstellt werden, bei der jeder Tabelleneintrag aus der folgenden Information besteht: Global eindeutige LBU-Nummer, Nummer des Netzelements, auf dem die zugehörige LBU gerade abgelegt ist und physikalische Speicheradresse, an der die LBU im physikalischen
Speicher des Netzelements gespeichert ist. Da das Cachenetzelement als genau eine zentrale Instanz mit global eindeutig definiertem Protoll fungiert, ist hierdurch eine globale Cachekohärenz einfach zu rea- lisieren.
Wenn nun die Anwendung eines Netzelements auf eine LBU zugreifen will, fragt sie zunächst bei dem Cachenetzelement an, ob sich die Nummer der angefragten LBU gerade im Protokoll befindet (z. B. also diese LBU kürzlich von einem der Netzelemente von seiner lokalen Festplatte in den reservierten lokalen physikalischen Speicher geladen worden war) , also über den reservierten physikalischen Speicher des lokalen oder eines der entfernten Netzelemente zugreifbar ist.
Somit ist es wie vorbeschrieben möglich, erfindungsgemäß einen globalen Cachespeicherbereich auszubilden. Möchte somit eine Anwendung auf Daten zugreifen, die lokal nicht vorliegen, die jedoch gemäß der von dem Cachenetzelement verwalteten Tabelle in dem reservierten physikalischen Speicher eines entfernten Netzelements vorliegen, so kann auf die vorbeschriebene Art und Weise effizient auf diese Daten zuge- griffen werden, da die Daten im globalen VM-
Speicherbereich vorhanden sind, also ein DMA-Zugriff auf diese Daten erfolgen kann (was z. B. lokale oder entfernte Plattenzugriffe vermeidet) . Eine globale Gültigkeit von Cachedaten kann durch das Cachenetz- element somit gewährleistet werden. Insgesamt wird hierdurch ein beschleunigter Zugriff auf die in dem
globalen virtuellen Adressraum gespeicherten Daten möglich.
Im Falle von Recheneinheiten als Netzelementen wird also auf jeder der Recheneinheiten eine Instanz der virtuellen Maschine gestartet. Diese teilt dann den in einem Netzelement vorhandenen Hauptspeicher in zwei getrennte Adressereiche ein. Diese Bereiche entsprechen zum einen der dem globalen virtuellen Spei- cherbereich exklusiv zur Verfügung gestellten, lokal reservierten physikalischen Speicherbereich der virtuellen Maschine, sowie dem übrig bleibenden lokalen physikalischen Speicher, der weiterhin vom Betriebssystem verwaltet wird. Die Einteilung kann fix zum Systemstart erfolgen, über eine Anwendung zu ihrer Laufzeit gesteuert erfolgen oder auch vom Betriebssystem selbst vorgegeben werden.
Es können dabei Zugriffsrechte für den globalen vir- tuellen VM-Speicherbereich und/oder den optionalen
VM-Cache global für jede VM- Instanz vergeben werden. So kann beispielsweise jeder VM- Instanz der Zugriff auf diese Speicherbereiche erlaubt werden oder nur einem Teil der VM- Instanzen.
Beispielsweise unmittelbar nach dem Start der VM- Maschine tauschen alle beteiligten VM-Instanzen Informationen über ihre für den globalen VM-Speicher reservierten lokalen Adressbereiche aus (z. B. mit- tels Multicast oder Broadcast) . Damit kann in jedem Netzelement lokal eine LUT-Struktur (look up table- Struktur) erzeugt werden, mit deren Hilfe die entfernten globalen virtuellen Adressen effizient berechnet werden können. Die Umrechnung der lokalen physikalischen Adressen in bzw. aus globalen virtuellen VM-Adressen (siehe oben stehende Beschreibung zur
Berechnung von Quell- und Zielebene) erfolgt dabei innerhalb der lokalen VM-Instanzen.
Dabei sind vorteilhafterweise folgende Realisierungen der Umrechnungen möglich:
• Direkte Implementierung der Adressumrechnung auf der Hardware der DMA-fähigen Netzwerkschnittstelle (z. B. mittels der oben beschriebenen look up- Tabelle LUT) . • Als Softwaremakro innerhalb einer Hochsprache.
Vorteilhaft an der vorliegenden Erfindung ist insbesondere die Verwendung mehrerer (zweier) unterschiedlicher Adressräume. Der erste Adressraum entspricht dabei dem globalen VM-Speicherbereich in einem System mit verteilten Speichern, auf dem DMA Operationen von parallelen Anwendungen effizient ausgeführt werden können. Der zweite Adressraum entspricht dabei einem parallel zum und unabhängig vom VM-Speicherbereich existierenden Adressraum, welcher von den lokalen Betriebssystemen verwaltet wird und welcher somit ein Speichermodell wie beim Clustercomputing (Distributed Memory Computimg) darstellt.
Es wird somit eine einseitige, global asynchrone Kommunikation ohne Kommunikationspartner (Single side communication) möglich. Weiterhin kann die Kommunikation als globale Zero-Copy-Kommunikation erfolgen, da keine Zwischenkopien für Kommunikationspuffer erzeugt werden müssen. Die Rechenwerke der Rechenpinheiten der Netzelemente sind während der Kommunikation frei für Berechnungsaufgaben.
Ein anwendungsbezogener, globaler, zentral durch ge- nau ein Cachenetzelement verwalteter Cachespeicher
(LBU-Cachespeicher) kann als globaler nutzbarer Ser-
vice von der virtuellen Maschine zur Verfügung gestellt werden. Dieser ermöglicht eine effiziente Kommunikation auch bei Anwendungsproblemen, welche einen größeren Speicherbedarf erfordern, als den von dem globalen VM-Speicherbereich zur Verfügung gestellten.
Die vorliegende Erfindung ist dabei insbesondere auf parallelen oder nicht parallelen Systemen, insbesondere mit mehreren über Netzwerke miteinander verbun- denen 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 ac- cess) 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
Figur 1 eine konservative Systemarchitektur;
Figur 2 die logische Struktur eines erfindungsgemäßen Netzwerksystems mit zwei Netzelementen 2a und 2b;
Figur 3 die einzelnen Ebenen eines erfindungsgemäßen Netzwerksystems;
Figur 4 den Aufbau des Hardware-Interfaces einer
VM-Instanz ;
Figur 5 den globalen virtuellen Adressraum bzw. den globalen VM-Speicherbereich;
5 Figur 6 den Adressraum einer parallelen Anwendung;
Figur 7 die Speicherallokation in zwei Netzelementen sowie die Offsetberechnung zum Berechnen einer Zieladresse für einen DMA- 10 Zugriff.
Hier wie im Folgenden werden für gleiche oder ähnliche Elemente gleiche oder ähnliche Bezugszeichen verwendet, so dass deren Beschreibung ggf. nicht wieder-
15 holt 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
20 vorliegenden Erfindung darstellen.
Figur 1 zeigt eine konservative Systemarchitektur, wie sie aus dem Stand der Technik bekannt ist. Die Figur zeigt, wie in konventionellen Systemen eine An- 25 wendung (beispielsweise auch eine parallele Anwendung) auf eine Hardware (beispielsweise einen physikalischen Speicher) zugreifen kann. Wie in Figur 1 gezeigt, werden hierzu, beispielsweise in einem Netzelement, in der Regel drei verschiedene Ebenen (hier
T H \re*τrt i \ca 1 VIV-IÖ T-^ H nanHpr Ha rαp α t-e l I t- I an oαohi 1 Ho t- ni e zwei oberen Ebenen, die Anwendungsebene, auf der die beispielsweise parallele Anwendung läuft, sowie die sich darunter befindende Betriebssystemebene bzw. Hardware-Abstraktionsebene, sind als Software-Lösung 35 realisiert. Unterhalb der Betriebssystemebene befindet sich die physikalische Ebene, auf der sich samt-
liehe Hardware-Komponenten befinden. Die Anwendung kann somit wie gezeigt über das Betriebssystem bzw. die vom Betriebssystem zur Verfügung gestellten Dienste auf die Hardware zugreifen. Hierzu ist in der Betriebssystemebene eine Hardware-Abstraktionsebene (HAL, von engl, hardware abstraction layer) vorgesehen (beispielsweise Treiber oder ähnliches) , über welche das Betriebssystem auf die physikalische Ebene bzw. Hardwareebene zugreifen kann, also z.B. berech- nete Daten der Anwendung in einen physikalischen Speicher schreiben kann.
Figur 2 zeigt nun den grundlegenden Aufbau eines Netzwerksystems nach der vorliegenden Erfindung. Die- ses weist zwei Netzelemente 2a, 2b in Form von Recheneinheiten (PCs) auf, die jeweils einen lokalen physikalischen Speicher 5a und 5b aufweisen. Von diesem lokalen Speicher wird durch die jeweils auf dem Netzelement installierte Instanz der virtuellen Ma- schine ein Teil 10a, 10b für den globalen Gebrauch durch die virtuelle Maschine als globaler virtueller Speicherbereich reserviert. Nachfolgend wird das Bezugszeichen 10 alternativ für einen durch eine VM- Instanz abgetrennten physikalischen Speicher oder für den diesem Speicher entsprechenden Teil des globalen virtuellen Speicherbereichs verwendet. Für den Fachmann ist dabei aus dem Zusammenhang erkennbar, was jeweils gemeint ist. Die auf den jeweiligen Recheneinheiten installierten Instanzen der virtuellen Ma-
r RP7iin<37e ή r
lhpτi 1 9 a i τnH 1 QVi Vie» - zeichnet sind, verwalten diesen Speicher 10a, 10b. Der physikalische Speicher 5 wird also aufgeteilt in lokalen Speicher 9a, 9b, welcher vom Betriebssystem verwaltet wird und einer spezifischen Anwendung (so- wie anderen Anwendungen) zusätzlich zur Verfügung gestellt werden kann, und globalen VM-Speicher 10a,
10b, welcher exklusiv der spezifischen (parallelen) Anwendung zur Verfügung gestellt wird und für das Betriebssystem nicht mehr sichtbar ist.
5 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, kollek-0 tive Operation etc.), bilden die virtuelle Maschine 11. Diese virtuelle Maschine ist also ein Gesamtsystem bestehend aus reserviertem Speicher, Programmbestandteilen und/oder Hardware, die die VM-Instanzen 12a, 12b bilden. 5
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 Re-0 cheneinheiten sowie für Anwendungen, die parallel und verteilt auf den Recheneinheiten laufen, zugänglich ist.
Die Anzahl der Netzelemente bzw. Recheneinheiten kann5 natürlich auf eine beliebige Anzahl verallgemeinert werden .
Jede der Recheneinheiten 2a und 2b besitzt hier neben ihrem Hauptspeicher 5a, 5b ein oder mehrere Rechen- O w
a τ-V->sa -i t- e-rι m π -t- rieni Hannh ono i - eher 5a zusammen. Jede Recheneinheit 2a, 2b weist hier auf Hardwareebene weiterhin eine DMA-fähige Schnittstelle auf. Diese Schnittstellen sind mit einem Netzwerk verbunden, über das alle Recheneinhei-5 ten untereinander miteinander kommunizieren können.
Auf jeder dieser Recheneinheiten 2a, 2b wird nun eine Instanz einer virtuellen Maschine installiert, wobei die lokalen VM- Instanzen wie vorbeschrieben die lokalen physikalischen Speicher exklusiv reservieren, den globalen VM-Speicher aufspannen und hierdurch die
DMA-Operationen ermöglichen. Das Netzwerk ist selbstverständlich auch DMA-fähig, da es dann den Datentransport zwischen den beiden Recheneinheiten 2a und 2b über die DMA-Netzwerkschnittstellen der Netzele- mente durchführt.
Vorteilhafterweise weist das DMA- fähige Netzwerk hierbei folgende Kenngrößen auf :
- Der Datenaustausch zwischen den Hauptspeichern er- folgt hardwareparallel, d.h. der DMA-Controller und das Netzwerk arbeiten unabhängig und nicht programmgesteuert ;
- die Zugriffe auf die Speicher (lesend/schreibend) erfolgen ohne Intervention der Rechenwerke; - 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 Betriebssys- tem-Overhead erforderlich ist.
Um die Latenzzeiten des Netzwerks zu verstecken, können vorteilhafterweise parallele Anwendungen in dem Netzwerksystem 1 asynchron auf den globalen VM- Rnp i rtiprhprp i rh H P>T- TrT T-I- I i Pi I i Pn Ma ςrtri np 7i iαrp i f pn
Der aktuelle Zustand der Lese- und Schreiboperation kann dabei jederzeit von der virtuellen Maschine abgefragt werden.
Bei dem beschriebenen System wird die Zugriffsbandbreite auf entfernte Speicherbereiche, d.h. bei-
spielsweise von der Recheneinheit 2a auf den Speicherbereich b der Recheneinheit 2b weiter erhöht, indem wie vorbeschrieben ein globaler Cachespeicherbereich definiert wird (z.B. wird das Netzelement 2a als das Cachenetzelement festgelegt) . Die lokalen VM- Instanzen organisieren hierbei die notwendigen Anfragen und/oder Zugriffe auf das Protokoll in dem Cachenetzelement. Der globale Cachespeicherbereich wird somit durch die virtuelle Maschine organisiert. Er kann beispielsweise auch als FIFO (First In First Out) oder als LRU (Least Recently Used) - Speicherbereich organisiert werden, um asynchron angeforderte Daten zwischenzuspeichern. Für diesen globalen Cache-Speicher kann globale Speicherkonsistenz 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 weiter beschleunigter Zugriff auf erforderliche Daten erreicht. Der Cache- Speicherbereich ist für jede der Anwendungen, die die virtuelle Maschine nutzt, transparent, da er von der virtuellen Maschine verwaltet und kontrolliert wird.
Bei dem in Figur 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 für die virtuelle Maschine nicht sicht- bar (getrennte Adressräume) und kann folglich lokal anderweitig genutzt werden.
Greift eine Anwendung über eine VM- Instanz auf eine Speicheradresse innerhalb des globalen Speicherbe- reichs 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 Informationselementen zusammengesetzt, wobei das erste Element sich aus der Netzadresse (insbesondere weltweit eindeutige MAC- Adresse) der lokalen Recheneinheit 2a, 2b und das zweite Elemente sich aus einer physikalischen Adresse innerhalb des Adressraums dieses Netzelementes ergibt.
Dieses 2 -Tupel gibt also an, ob sich der zu der globalen virtuellen Adresse zugehörige physikalische Speicher innerhalb der Recheneinheit selbst, auf der die Anwendung läuft und die auf diesen Speicherbe- reich 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, so wird nach der ersten Art der Offsetbe- rechnung wie vorbeschrieben unmittelbar auf diesen Speicher zugegriffen.
Liegt die Zieladresse jedoch auf entfernten Recheneinheiten, beispielsweise auf der Recheneinheit 5b, so führt die lokale VM-Instanz, die auf der Recheneinheit 5a installiert ist, lokal die zweite Art der Offsetberechnung wie vorbeschrieben durch und initiiert einen DMA-Aufruf mit entsprechender Quell- und Zieladresse. Die Berechnung der Adressen auf der ent- fernten Recheneinheit 5b erfolgt hierbei WIR nachfolgend noch genauer beschrieben über das 2 -Tupel der globalen virtuellen Adresse 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 . Zur weiteren Datenübertragung sind dann die Rechenwerke in den Rechen-
einheiten 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 Speichertopo- logie verbunden.
Die vorliegende Erfindung ist auch durch einfache Ersetzung der Recheneinheiten 2a, 2b durch Speichereinheiten auch in Netzwerksystemen verwendbar, bei denen einzelne Speichereinheiten über Netzwerkverbindungen 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 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.
Figur 3 zeigt nunmehr die parallele Adressraumarchitektur und die verschiedenen Ebenen (Softwareebene und Hardwareebene) , wie sie in der vorliegenden Erfindung ausgebildet werden. Die Figur zeigt hierzu ein einzelnes Netzelement 2a, was wie vorbeschrieben ausgebildet ist. Entsprechende weitere Netzelemente, die mit dem Netzelement 2a über ein Netzwerk verbunden sind, sind dann ebenso ausgebildet (die parallele spezifische Anwendung AW, welche über die virtuelle Maschine bzw. die lokalen VM- Instanzen den globalen
VM-Speicherbereich nutzt, läuft auf allen Netzelemen-
ten 2 ) .
Wie vorbeschrieben werden nun zwei parallel existierende, getrennte Adressräume erzeugt, ein erster Ad- ressraum (globaler VM-Speicherbereich) , welcher in den virtuellen Adressraum der Anwendung AW eingeblendet wird, und somit der Anwendung als globaler virtueller Adressraum zur Verfügung steht: Die Anwendung AW (es kann sich hierbei selbstverständlich auch um mehrere Anwendungen handeln) kann somit über die globalen virtuellen Adressen des VM-Speicherbereiches unmittelbar, d.h. mittels DMA-Aufrufen, auf die Hardware der physikalischen Ebene, d.h. den für den globalen VM-Speicherbereich lokal reservierten physika- lischen Speicher (hier als VM-Speicher 10 bezeichnet) zugreifen. Wie in Figur 3 gezeigt (rechte Spalte) , operiert in diesem Fall die einzelne Anwendung mit Hilfe der lokalen VM-Instanz auf der Betriebssystemebene und hat einen exklusiven Zugriff auf die VM- Hardware, insbesondere also auf den von der VM-
Hardware verwalteten physikalischen Systemspeicher 10.
Um dies zu ermöglichen, umfasst die lokale VM-Instanz 12 im vorliegenden Fall auf der Betriebssystemebene eine VM-Softwarebibliothek 12-1 sowie auf der physikalischen Ebene/Hardwareebene ein VM-Hardware- Interface 12-2.
Parallel zum VM-Speicherbereich bzw. Adressraum und getrennt davon, besteht ein weiterer, zweiter Adressraum: Der lokale Adressraum. Während der VM-Adress- raum von der virtuellen Maschine bzw. der lokalen VM- Instanz 12 verwaltet wird und somit für das Betriebs- System BS, sowie für andere nicht mit den VM-Instan- zen operierende Anwendungen nicht sichtbar ist, wird
dieser weitere, zweite Adressraum standardmäßig durch das Betriebssystem BS verwaltet. Wie bei der konservativen Systemarchitektur (Figur 1) kann das Betriebssystem BS den diesem zweiten Adressraum 9 ent- sprechenden physikalischen Speicher des Systemspeichers 5 über die Hardware-Abstraktionsebene HAL der spezifischen Anwendung AW zusätzlich zur Verfügung stellen. Die Anwendung hat somit die Möglichkeit, auf beide, getrennte Adressräume zuzugreifen. Andere, nicht über die virtuelle Maschine organisierte Anwendungen können jedoch nur auf den Systemspeicherbereich 9 bzw. den ersten Adressraum über das Betriebssystem zugreifen.
Figur 4 zeigt nun ein Beispiel für einen Aufbau des
VM-Hardware-Interfaces 12-2 aus Figur 3. Dieser Hardwareteil der VM- Instanz 12 besteht hier aus den Komponenten Zentralprozessor, DMA-Controller, Netzwerk- schnittstelle und optionalem lokalem Kartenspeicher. Die VM-Hardware- Interfaceeinheit 12-2 ist im vorliegenden Fall als Steckkarte auf einem Bussystem (z.B. PCI, PCI-X PCI-E, AGP) realisiert. Der hier optional zusätzlich zur Verfügung gestellte lokale Kartenspeicher 13 kann ebenso wie der VM-Speicher 10 (welcher hier physikalischem Speicher auf der Hauptplatine bzw. dem Motherboard zugeordnet ist) der Anwendung AW als Teil des globalen VM-Speicherbereichs zur Verfügung gestellt werden (der einzige Unterschied zwischen dem lokalen Kartenspeicher 13 und dem VM- Speicherbereich 10 besteht somit darin, dass die entsprechenden physikalischen Speichereinheiten auf unterschiedlichen physikalischen Elementen angeordnet sind) . Alternativ zur Realisation als Steckkarte kann das VM-Hardware-Interface 12-2 auch als eigenständi- ges Systemboard realisiert werden. Das VM-Hardware- Interface 12-2 ist in der Lage, den ihm zugewiesenen
Systemspeicher selbstständig zu verwalten.
Figur 5 skizziert die Ausbildung des die verschiedenen lokalen Netzelemente 2 überspannenden globalen VM-Speicherbereiches bzw. Adressraums des erfindungsgemäßen Netzwerksystems 1. Um diesen globalen Speicherbereich aufzuspannen, tauschen die einzelnen lokalen VM-Instanzen in den einzelnen Netzelementen vor Aufnahme jeglicher Datenkommunikation untereinander Informationen aus. Untereinander austauschen bedeutet hierbei, dass jedes über ihre VM- Instanz 12 am Netzwerksystem 1 beteiligte Netzelement 2 mit jedem anderen Netzelement 2 die entsprechende Information austauscht. Die ausgetauschte Information ist im vorlie- genden Fall ebenfalls als 2-Tupel kodiert, das erste Element des 2-Tupels enthält eine für jedes beteiligte Netzelement 2 innerhalb des Netzwerksystems 1 eineindeutige Nummer (z.B. MAC-Adresse) eines über das Internet mit anderen Netzelementen verbundenen PCs, das zweite Element des 2-Tupels enthält die Startadresse und die Länge des in diesem Netzelement reservierten physikalischen Speicherbereiches (bzw. Informationen über den entsprechenden Adressbereich) . Wie bereits beschrieben, lässt sich auf Basis dieser vor- ab jeglicher Datenkommunikation ausgetauschten Information der globale VM-Adressraum aufspannen, der dann ohne zusätzliche Adressumrechnungen für die DMA- Controller-Kommunikation nutzbar ist. Der globale Adressraum wird den lokal laufenden Anwendungen hierbei mittels der jeweiligen lokalen VM-Instanz zugängig gemacht .
Figur 6 skizziert die Einblendung des globalen VM- Speicherbereichs in den virtuellen Adressraum der spezifischen Anwendung AW, was die Voraussetzung für das Verwenden der globalen virtuellen Adressen für
einen DMA-Aufruf über eine VM- Instanz 12 durch die Anwendung AW ist. Figur 6 zeigt somit den Adressraum der Anwendung AW, welche über die jeweiligen VM- Softwarebibliotheken 12-1, die von den VM-Hardware- Interfaces 12-2 zur Verfügung gestellten Adressbereiche in ihren virtuellen Adressraum einblendet bzw. mapped. Der gesamte virtuelle Adressraum der Anwendung AW ist hierbei wie üblich wesentlich größer, als der eingeblendete globale VM-Speicherbereich. Zusatz - lieh ist hier der von der Anwendung über das Betriebssystem BS zusätzlich nutzbare lokale physikalische Speicher, welcher nicht für die virtuelle Maschine reserviert wurde, eingezeichnet (gemappter lokaler Speicher 9) .
Neben dem vom Betriebssystem BS lokal verwalteten Adressraum (Virtualisierung des restlichen lokalen physikalischen Systemspeichers) existiert somit vollständig getrennt dazu ein weiterer Adressraum als globaler, über mehrere VM-Instanzen verteilter VM- Speicherbereich (letzterer dann für die parallele DMA-Kommunikation nutzbar) .
Entscheidend hierbei ist, dass der globale virtuelle Adressraum bzw. globale VM-Speicherbereich der Anwendung erst nach Initialisierung der VM-Instanzen und dem vorbeschriebenen Austausch der Information für die DMA-Kommunikation zur Verfügung steht. Hierzu wird lokal durch jede beteiligte VM- Instanz 12 zu- nä(jhaL vOiVi physikalischen Speicher dεc zugehöriger. Netzelementes zumindest ein Teilbereich abgetrennt, d.h. als exklusiv reservierter physikalischer Speicherbereich ausgezeichnet. Diese Allokation kann dabei entweder von der VM-Schnittstellenbibliothek 12-1 zur Laufzeit der Anwendung vorgenommen werden, oder vor diesem Zeitpunkt bereits durch das VM-Hardware-
Interface 12-2 zur Systemstartzeit oder während des Bootvorgangs. Ist diese Reservierung erfolgt, so tauschen dann die einzelnen VM- Instanzen der einzelnen Netzelemente untereinander die notwendige Information (Startadresse und Länge des reservierten Bereichs) über die lokal reservierten physikalischen Speicherbereiche untereinander aus. Auf diese Art und Weise wird eine Speicherallokation realisiert, bei der dem von der Anwendung AW nutzbaren globalen VM-Speicher- bereich ein linearer physikalischer Adressraum, der direkt für DMA-Operationen mit Quell- und Zieladresse und Datenlänge verwendet werden kann, zugeordnet ist. Dieser Adressraum kann über ein Speicherabbild (memo- ry mapping in den virtuellen Adressraum der Anwen- düng) oder über die VM- Instanz aus einer Anwendung heraus direkt angesprochen werden.
Figur 7 zeigt nun anhand des einfachen Beispiels zweier Netzelemente 2a und 2b, wie in jedem dieser Netzelemente lokal physikalischer Speicher für den globalen VM-Speicherbereich reserviert wird und wie bei einem späteren Speicherzugriff durch die VM- Instanz eines lokalen Netzelementes (Netzelement 2a) auf ein entferntes Netzelement (Netzelement 2b) die Berechnung der Zieladresse für den unmittelbaren DMA- Aufruf erfolgt. Das Netzelement 2a und das Netzelement 2b stellen hierbei jeweils einen physikalischen Speicherbereich 5a, 5b (Hauptspeicher) zur Verfügung. Dieser beginnt jeweils bei der physikalischen StartaHrpcjQO R - O-V-O" In? TvToI- 70I ornon1- Oa τ«τ-ϊ τ-r^ nun C-IOT* physikalische Speicherbereich bzw. entsprechende globale VM-Speicherbereich 10a zur Verfügung gestellt (ebenso im Element 2b der Speicherbereich 10b) . Der Bereich 10a weist hierbei die Länge LO auf (Länge des Speicherbereichs 10b: Ll) . Die physikalischen Speicherbereiche 10a und 10b beginnen nun bei unter-
schiedlichen physikalischen Startadressen S0 (Element 2a) und Si (Element 2b) . Zusätzlich eingezeichnet ist die Netzelementnummer „0" des Elementes 2a und die Netzelementnummer „1" des Elementes 2b (diese beiden Nummern werden als erstes Informationselement des In- formations-2-Tupels zwischen den beiden Netzelementen 2a und 2b gegenseitig ausgetauscht) . Beginnt so z.B. eine globale virtuelle Adresse mit „0", so weiß die VM-Instanz des Netzelementes 2a, dass die zugehörige physikalische Speicherstelle in diesem Netzelement zu finden ist, beginnt sie mit „1", so weiß die VM- Instanz des Netzelementes 2a, dass die zugehörige physikalische Speicherstelle im entfernten Netzelement 2b zu finden ist.
Im letzteren Fall wird die Zieladresse für einen DMA- Zugriff des Elementes 2a auf den physikalischen Speicher des Elementes 2b wie folgt berechnet: Durch die ausgetauschte Information weiß die Einheit 2a um die Differenz der physikalischen Startadressen S0 und Si.
Eine einfache Offsetberechnung der Verschiebung dieser Startadressen, also Off = S0- Si, ermöglicht dann mit dem berechneten Offset Off einen direkten DMA- Zugriff einer Anwendung im Netzelement 2a über die zugehörige VM-Instanz auf den Speicher des Netzelementes 2b.
Zu einer normalerweise von einer Anwendung angesprochenen (lokalen) physikalischen Adresse wird somit beim Zugriff auf ein entferntes Net^element einfach der Offset Off addiert, um auf die korrekte physikalische Speicherstelle des entfernten Netzelementes zuzugreifen (lineare Abbildung zwischen dem globalen VM-Bereich und den lokal zugeordneten physikalischen Speicherbereichen) .
Da nicht sichergestellt werden kann, dass alle Netzelemente physikalischer Speicher an übereinstimmenden Startadressen S mit gleicher Länge L reservieren können, ist ein Austausch dieser Informationen unter den Netzelementen notwendig. Effektiv ist hier ein Austausch mittels Broadcast oder Multicast über das DMA- Netzwerk. Jedes Netzelement kann dann die Informationen der anderen Netzelemente innerhalb der VN mitlesen und eine LUT-Struktur aufbauen (siehe Tabelle) , über die der aufgespannte globale Adressraum durch einfache lokale Berechnungen (Offsetberechnungen) angesprochen werden kann.
Netzelementnummer 2-Tupel (Startadresse, Länge) Startadresse Länge
0 SO LO
N SN LN