DE69826930T2 - System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe - Google Patents

System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe Download PDF

Info

Publication number
DE69826930T2
DE69826930T2 DE69826930T DE69826930T DE69826930T2 DE 69826930 T2 DE69826930 T2 DE 69826930T2 DE 69826930 T DE69826930 T DE 69826930T DE 69826930 T DE69826930 T DE 69826930T DE 69826930 T2 DE69826930 T2 DE 69826930T2
Authority
DE
Germany
Prior art keywords
computer
data
memory
addresses
network interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69826930T
Other languages
English (en)
Other versions
DE69826930D1 (de
Inventor
Madhusudham Fremont Talluri
Marshall C. Mountain View Pease
Srinivasan Freemont Viswanathan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69826930D1 publication Critical patent/DE69826930D1/de
Application granted granted Critical
Publication of DE69826930T2 publication Critical patent/DE69826930T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/912Applications of a database
    • Y10S707/922Communications
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf Computernetzwerke mit auf Speicher abgebildeten Datenübertragungen, um einen ersten Computer in die Lage zu versetzen, auf Daten oder Programme zuzugreifen, die auf einer Platte oder einer anderen nicht-wahlfrei zugreifbaren Computerspeichereinrichtung gespeichert sind, die physikalisch mit einem zweiten Computer verbunden ist.
  • HINTERGRUND DER ERFINDUNG
  • In vielen Computersystemen mit mehreren Knoten ist es für Prozesse oder Aufgaben, die auf einem Computerknoten laufen (manchmal der Client genannt) von Bedeutung, auf Information zugreifen zu können, die auf einer Platte oder ähnlichen Einrichtung gespeichert ist, die einem anderen Computerknoten (manchmal der Server genannt) zugeordnet sind. Allgemein ist ein Zugriff auf Daten auf einer entfernt gelegenen Platte aufwendig im Hinblick auf Latenz und verwendete Ressourcen. Die vorliegende Erfindung stellt ein System und ein Verfahren zur Reduktion sowohl der Latenz als auch der auf dem Serverknoten verwendeten Ressourcen bereit, wenn ein Clientknoten einen Plattenlesevorgang von einer auf (oder am) Serverknoten gelegenen Platte durchführt.
  • Unter Bezug auf 1 wird eine sehr vereinfachte Darstellung der zwei Computerknoten, hier Knoten A oder Server 50 und Knoten B oder Client 52 genannt, gezeigt. Der Computer bei jedem Knoten kann jede Art von Computer sein. Mit anderen Worten hat die besondere Marke, Architektur und das Betriebssystem keine Bedeutung für die vorliegende Diskussion solange jeder Computerknoten dafür eingerichtet ist, in einer Netzwerkumgebung zu operieren. Jeder Computerknoten 50, 52 wird typischerweise eine zentrale Verarbeitungseinheit (central processing unit, CPU) 54, einen wahlfrei zugreifbaren Speicher 56, einen internen Speicherbus 58 und eine Kommunikationsschnittstalle 60 beinhalten, oft als Netzwerkschnittstellenkarte (network interface card, NIC) bezeichnet. Die Computerknoten kommunizieren miteinander durch Übermitteln von Nachrichten oder Paketen zueinander über eine Netzwerk-Zwischenverbindung 62, die eine oder mehrere Arten von Kommunikationsmedien, Umschalt- bzw. Vermittlungsmechanismen und ähnliches enthalten kann.
  • Für die Zwecke dieser Diskussion wird angenommen, daß die NIC für eine auf Speicher abgebildete Nachrichtenweitergabe geeignet ist. Das heißt, die NIC muß unter Verwendung lokaler physikalischer Adressen direkt adressierbar sein und direktes Laden und Speichern in und aus den Speicherstellen in einen entfernt gelegenen Computerknoten kann durch die NIC ausgeführt werden, ohne die Treibersoftware der NIC benutzen zu müssen. Da sich die vorliegende Erfindung auf entfernten Plattenzugriff bezieht, hat darüber hinaus wenigstens einer der Computerknoten 50 eine nicht-flüchtige, nicht-wahlfrei zugreifbare Speichervorrichtung 64 wie eine Hochgeschwindigkeitsmagnetplatte und eine entsprechende Plattensteuerung 66. Tatsächlich werden in vielen Implementierungen die meisten oder alle der Computerknoten einen oder mehrere lokale Plattentreiber haben. Da wir jedoch nur daran interessiert sind zu erklären, wie ein Computerknoten 52 auf Daten auf der Platte 64 zugreift, die mit einem anderen Computerknoten 50 verbunden ist, wird nur die Platte 64 für den Serverknoten 50 in 1 gezeigt.
  • Man beachte, daß der Begriff „Nachrichtenübertragung" manchmal verwendet wird, um den Gebrauch eines Nachrichtenübertragungsprotokolls anzuzeigen oder zu implizieren, in dem das empfangende System automatisch die übertragene Nachricht verarbeitet, während der Begriff „Datenübertragung" einfach das Schreiben oder Kopieren von Daten von einem System zu einem anderen anzeigt. In diesem Dokument jedoch werden die Begriffe „Nachrichtenübertragung" und „Datenübertragung" austauschbar gebraucht.
  • 2 zeigt eine vereinfachte Darstellung einer herkömmlichen Kommunikationsschnittstelle (oder NIC) 60, wie die in den Computerknoten 50 von 1 verwendeten, wobei nur die Komponenten von besonderem Interesse gezeigt werden. Die NIC 60 beinhaltet üblicherweise zwei Mechanismen zur Adreßabbildung: eine eingehende Speicherverwaltungseinheit (incoming memory management unit, IMMU) 70 und eine ausgehende Speicherverwaltungseinheit für (outgoing memory management unit, OMMU) 72. Der Zweck der zwei Speicherverwaltungseinheiten ist es, lokale physikalische Adressen (physical addresses, PA's) in jedem Computerknoten auf globale Adressen (global adresses, GA's) abzubilden und umgekehrt. Die Transportlogik 74 in der NIC 60 handhabt die Mechanik der Übertragung und des Empfangs von Nachrichtenpaketen einschließlich des Nachsehens und Konvertierens von Adressen unter Verwendung der IMMU 70 und der OMMU 72.
  • Die gestrichelten Linien zwischen dem Speicherbus 60 und der IMMU 70 und der OMMU 72 stellen von der CPU stammende Steuersignale zum Speichern und Löschen von Adreßübersetzungseinträgen in die zwei MMU's dar, typischerweise unter der Steuerung eines NIC Treiberprogramms. Die gestrichelte Linie zwischen dem Speicherbus 60 und der Transportlogik 74 stellt von der CP stammende Steuersignale zur Konfigurierung und Steuerung der Transportlogik 74 dar.
  • Speicherabbildung zwischen virtuellen, lokalen physikalischen und globalen Adreßräumen
  • In den 3 und 4 nutzen die Knoten in einem verteilen Computersystem (wie die in 1 abgebildeten) einen gemeinsam genutzten globalen Adreßraum (global address) GA. Jeder Knoten bildet Teile seines lokalen Adreßraums (local address) LA auf „Fenster" in dem globalen Adreßraum ab. Darüber hinaus bilden Prozesse auf jedem der Knoten Teile ihrer privaten virtuellen Adreßräume (virtual address) VA auf den lokalen physikalischen Adreßraum (physical address) PA ab und können ferner einen Teil des lokalen physikalischen Adreßraumes PA in ein Fenster in dem globalen Adreßraum GA exportieren. Der Prozeß des „Exportierens" eines Teils des lokalen physikalischen Adreßraumes wird manchmal auch als „Exportieren eines Teils der lokalen physikalischen Adresse auf einen anderen Knoten" bezeichnet, weil einem spezifischen anderen Computerknoten ein Lese- und/oder Schreibzugriff auf den exportierten Teil des lokalen physikalischen Adreßraumes über einen abgebildeten bzw. zugeordneten globalen [TEXT UNLESBAR] den 3 und 4 gezeigten lokalen physikalischen Adressen (z. B. PA1 und PA2) physikalische Busadressen und nicht notwendigerweise Speicherplatzadressen sind. In der Tat werden viele physikalische Adressen tatsächlich auf andere Einrichtungen als Speicher abgebildet, zum Beispiel Netzwerkschnittstellen. Wenn zum Beispiel physikalischer Speicher auf einem ersten Computer auf einen zweiten Computer exportiert wird, werden die in dem zweiten Computer zum Schreiben in den exportierten Speicher verwendeten physikalischen Adressen nicht auf irgendeinen lokalen Speicher abgebildet; vielmehr werden sie auf die Netzwerkschnittstelle des zweiten Computers abgebildet.
  • Wenn eine eine Zieladresse enthaltende Nachricht von einem Prozeß in Knoten A 50 zu einem Prozeß in Knoten B 52 geschickt wird, wird eine Reihe von Adreßübersetzungen (auch Adreßabbildübersetzungen genannt) auf der Zieladresse durchgeführt. Eine virtuelle Adresse VA1 von einem Prozeß in Knoten A wird zuerst von dem TLB (translation lookaside buffer, Übersetzungs-Vorgriffspuffer) 80-A in der CPU 54-A von Knoten A in eine lokale physikalische Adresse PA1 übersetzt. Die lokale physikalische Adresse PA1 wird dann von der abgehenden MMU (OMMU) 72-A in der Netzwerkschnittstelle von Knoten A in eine globale Adresse GAx übersetzt. Wenn die die globale Adresse enthaltende Nachricht von Knoten B empfangen wird, wird die globale Adresse GAx von der eingehenden MMU (IMMU) 70-B in der Netzwerkschnittstelle 60-B von Knoten B in eine lokale physikalische Adresse PA2 umgewandelt, die dem Knoten B zugeordnet ist. Die lokale physikalische Adresse PA2 entspricht einer virtuellen Adresse VA2, die einem Empfangsprozeß zugeordnet ist. Ein TLB 80-B in CPU 54-B von Knoten B bildet die virtuelle Adresse VA2 auf die lokalen Adresse PA2 ab, an der die empfangene Nachricht gespeichert wird.
  • Man beachte, daß TLBs allgemein nur virtuelle Adressen in lokale physikalische Adressen übersetzen und nicht umgekehrt, und daher einige der Pfeile in 4 eher Abbildungen bzw. Zuordnungen darstellen als tatsächliche Adreßübersetzungen. Wenn der Empfangsprozeß im Knoten B eine empfangene Nachricht bei Adresse VA2 liest, wird der TLB 80-B diese virtuelle Adresse in dieselbe lokale Adresse LA2 übersetzen, die durch die IMMU 70-B der Netzwerkschnittstelle als die Zieladresse für die empfangene Nachricht festgelegt wurde.
  • Adreßraumbereiche zum Empfang von Nachrichten werden zwischen den sendenden und empfangenden Knoten mittels Protokollen höherer Schichten im voraus ausgehandelt, welche typischerweise reservierten Adreßraum, Mailbox oder paketbasierte Kommunikation benutzen, die zu diesem Zweck eingerichtet sind. Die Einzelheiten, wie Fenster in dem globalen Adreßraum zugewiesen werden und wie empfängerseitige Adressen zum Empfang von Nachrichten bereitgestellt werden, liegen außerhalb des Rahmens dieses Dokuments. Darüber hinaus erfordert die vorliegende Erfindung keinerlei Veränderungen in solchen die Kommunikation aufbauenden Mechanismen.
  • Empfangspuffer werden typischerweise in seitengroßen Stücken zugewiesen, da jeder MMU-Eintrag im allgemeinen eine Abbildung von einer oder mehreren Seiten von Adreßraum (und allgemeiner 2n Seiten für ganzzahlige Werte von n ≥ 0) darstellt. Größere Empfangspuffer oder Empfangspuffer unregelmäßiger Größe können unter Verwendung mehrerer MMU-Einträge durch Protokolle auf Benutzerebene erstellt werden. Sobald die Empfangspuffer zugeordnet sind und die entsprechenden MMU-Abbildungen eingerichtet sind, können die Programme auf Benutzerebene die Empfangspuffer ohne Eingriff des Kernes verwalten. Viele unterschiedliche Arten der Nachrich tenweitergabe auf Benutzerebene (application program interfaces, Anwendungsprogrammierungsschnittstellen) „API's" können auf dem grundlegenden Empfangspuffermechanismus gebaut werden. Dies umfaßt die Sende- und Empfangs-Unix-Primitiven bzw. -Grundfunktionen, Sockets, ORB (object resource broker, Objektressourcenvermittler), Transport, entfernte Prozeßaufrufe, und so weiter. Der grundlegende Mechanismus zur Nachrichtenweitergabe ist dafür angelegt, so „leichtgewichtig" und effizient wie möglich zu sein, um so wenig Prozessorzyklen wie möglich zu verwenden.
  • Eine Ausführungsform der Erfindung kann die lokale physikalische Adresse für den oben diskutierten globalen Adreßabbildungsmechanismus verwenden.
  • Konventionelle Methodik zum Lesen entfernter Platten
  • 5 zeigt den herkömmlichen Vorgang für einen Prozeß auf Knoten B zum Lesen von Information von einer Platte auf Knoten A. Der erste Schritt für Knoten B besteht darin, einen Empfangspuffer durch „Exportieren von Speicher" für Knoten A aufzubauen (Schritt 80), so daß Knoten A eine Nachricht hineinschreiben kann. In einigen Implementierungen kann dieser Schritt im voraus ausgeführt werden, da es im voraus bekannt ist, daß Knoten B viele Platten-Lesevorgänge von Knoten A ausführen wird. Bei den meisten Implementierungen jedoch wird der Schritt des Exportierens von Speicher in Reaktion auf eine entfernte Plattenleseanforderung durch einen Benutzer oder Kernprozeß in Knoten B ausgeführt. Der Speicher exportierende Schritt 80 wird durch das Schaffen eines IMMU-Eintrags in Knoten B ausgeführt, der den physikalischen Adreßbereich eines Empfangspuffers im Speicher von Knoten B auf einen entsprechenden Bereich von globalen Adressen abbildet. Wie oben angegeben hat Knoten B typischerweise einen vorab zugewiesenen Bereich von globalen Adressen für das Exportieren von Speicher zu anderen Knoten. Andere Mechanismen zum Zuweisen globaler Adressen könnten jedoch genauso anwendbar sein.
  • Als nächstes wird in Schritt 82 eine Anforderungsnachricht von dem Clientknoten (Knoten B) in den Serverknoten (Knoten A) übertragen, in der die angeforderte Information gespeichert ist. Die Anforderungsnachricht spezifiziert:
    • – den Zielknoten, an den die Nachricht übermittelt wird;
    • – den Quellknoten, von dem die Nachricht gesandt wird;
    • – die Informationsquelle, wie eine Plattendatei, Teil einer Plattendatei oder Speicherbereich einer Platte, die die angeforderte Information enthält;
    • – die globale Adresse, an die die angeforderte Information übertragen werden soll; und
    • – andere Parameter wie Protokollparameter, die hier nicht von Bedeutung sind.
  • Wenn beim Server (Knoten A) die angeforderte Nachricht empfangen wird, richtet der Server einen OMMU Eintrag ein, um den Speicher zu importieren, der von dem anfordernden Clientknoten, Knoten B, (Schritt 84) exportiert wird. Der bei Schritt 84 eingerichtete OMMU-Eintrag bildet einen Bereich, den globalen Adreßbereich, der in der empfangenen Nachricht spezifiziert ist, auf einen entsprechenden Bereich des physikalischen Speichers in dem Serverknoten ab. Falls nötig (z. B. wenn nicht genügend zusammenhängender Speicher verfügbar ist und/oder die Größe des abgebildeten Adreßbereichs nicht gleich 2n Seiten ist), wird der Serverknoten zwei oder mehr OMMU- Einträge generieren, um die spezifizierten globalen Adreßräume auf zwei oder mehr lokale physikalische Adreßbereiche abzubilden.
  • Sobald die IMMU in dem anfordernden Knoten B und die OMMU in dem antwortenden oder sendenden Knoten A eingerichtet wurden, beginnt die Übertragung der angeforderten Daten. Insbesondere werden die angeforderten Plattendaten zuerst von Knoten B in den bzw. die lokalen physikalischen Speicherbereich(e) kopiert, die zuvor auf die OMMU-Einträge abgebildet wurden (Schritt 86), typischerweise unter Verwendung einer Plattensteuerungs-DMA-Operation zur Durchführung der Datenübertragung. Dann werden die Inhalte des bzw. der lokalen physikalischen Speicherbereiche(s) vom lokalen Speicher in die zugewiesenen globalen Adressen geschrieben (Schritt 88). Das Schreiben der Daten in eine globale Adresse führt dazu, daß die Kommunikationsschnittstelle des sendenden Knotens für die Übertragung der Daten in den Knoten geschrieben wird, der jenen globalen Adressen zugeordnet ist, wie in dem bzw. den OMMU-Eintrag bzw. -Einträgen des sendenden Knotens für jene globalen Adressen angegeben. Dieser Datenübertragungsvorgang (Schritt 88) kann unter der direkten Steuerung der CPU durch „programmierte I/O"-Befehle durchgeführt werden, oder kann durch einen DMA-Vorgang einer Kommunikationsschnittstelle (NIC) durchgeführt werden (d. h. in diesem Fall behandelt die DMA-Logik in der Kommunikationsschnittstelle die Übertragung der Daten von einem lokalen physikalischen Speicher in das Kommunikationsnetzwerk). Schließlich wird, nachdem die angeforderten Daten vollständig in den Empfangspuffer in dem anfordernden Knoten übertragen wurden, typischerweise eine „Abgeschlossen"-Nachricht von dem sendenden Knoten an eine vorher festgelegte Nachrichtenwarteschlangenposition in dem anfordernden Knoten (Schritt 90) übermittelt, um den anfordernden Knoten zu informieren, daß die Übertragung der angeforderten Daten abgeschlossen wurde.
  • Nachdem der Server die angeforderten Daten an den anfordernden Knoten übertragen hat (Schritte 86, 88 und 90) „zieht" der Server die Verbindung „herunter", indem der OMMU-Eintrag (oder Einträge) für den importierten Speicher, der mit der Anforderung von Knoten B verbunden ist, gelöscht wird.
  • Als Reaktion auf die Abschluß-Nachricht zieht der anfordernde Knoten seine Seite der Verbindung durch Löschen des entsprechenden IMMU-Eintrags (oder der Einträge) herunter wie um den Export des für die Anforderung verwendeten Speichers rückgängig zu machen und dem Teil des lokalen physikalischen Speichers des anfordernden Systems die lokale Lese-/Schreibsteuerung zurückzugeben (Schritt 94). Dann oder parallel zum Herunterzieh-Vorgang verarbeitet der anfordernde Knoten die erhaltenen Daten (Schritt 96).
  • Natürlich umfaßt der Stand der Technik viele Variationen der Abfolge von Vorgängen, die oben unter Bezug auf 5 zur Ausführung eines entfernten Plattenlesevorgangs beschrieben wurden. Die oben beschriebenen Schritte sind jedoch typisch für verteilte Computersysteme, die UNIXTM-(eine Handelsmarke von SCO)-artige Betriebssysteme wie SolarisTM (eine Handelsmarke von Sun Microsystems, Inc.) verwenden.
  • US-Patent 5394526 offenbart einen Datenserver zur Übertragung ausgewählter Blöcke einer entfernten Datei an ein Verteilungscomputernetzwerk. Der Datenserver beinhaltet einen üblichen Interprozessorbus, der Kommunikationsprozessoren mit einem oder mehreren Geräteprozessoren verbindet, von denen jeder einen Pufferspeicher hat. Die Pufferspeicher sind mit der Speichereinrichtung verbunden, die über einen DMA-Übertragungspfad mit der Speichereinrichtung verbunden ist, die an den relevanten Geräteprozessor angeschlossen ist. Im Betrieb wird daher die Datenübertragung zuerst durch DMA aus der Speichereinrichtung an den Pufferspeicher und dann durch einen zweiten DMA aus dem Pufferspeicher an den Kommunikationsprozessor ausgeführt. Daher gibt es nur eine einzige Datenübertragung über den gemeinsamen Bus.
  • EP 755014 offenbart ein Verfahren zur Datenübertragung über ein Mehrknoten-Datenverarbeitungssystem. Jeder Knoten hat wenigstens einen Prozessor, der mit Speicher, Cachespeicher und einer Kommunikationsschnittstelle ausgestattet ist. Der Vorgang der Datenübertragung verwendet ein Speicher(Cachespeicher)-Kohärenzprotokoll.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Besondere und bevorzugte Aspekte der Erfindung sind in den anliegenden unabhängigen und abhängigen Ansprüchen dargelegt.
  • Eine Ausführungsform der Erfindung stellt ein System und ein Verfahren bereit, um einen entfernten Plattenzugriff durch das direkte Routing von Daten von der Platte in dem entfernten Server zu einem Kommunikationsbus effizienter zu machen, ohne zuvor eine Kopie der Daten in dem Speicher des entfernten Servers anzufertigen.
  • Eine Ausführungsform der Erfindung ermöglicht es, entferntes Plattenlesen und ähnliche entfernte Vorgänge zur Datenbeschaffung aus Speichereinrichtungen auf entfernten Knoten effizienter zu gestalteten. In einem verteilten Computersystem gibt es bei Verwendung der vorliegenden Erfindung mehrere Computer oder Computerknoten, einschließlich eines, der ein Clientknoten zum Durchführen eines entfernten Lesevorgangs genannt wird, und eines anderen, der ein Serverknoten genannt wird. Sowohl der Client- als auch der Serverknoten können tatsächlich Teil eines Clusters von Computerknoten sein, die aus der Sicht eines Computers außerhalb des Serverclusters als ein einzelner Serverknoten agieren.
  • Wenn der Clientknoten Daten von einer Platte oder ähnlichen Einrichtung beim Serverknoten anfordert, exportiert der Clientknoten den Speicher, der einem zugewiesenen Lesepuffer zugeordnet ist, durch das Generieren und Speichern von einem oder mehreren eingehenden MMU-(IMMU)-Einträgen, die den Lesepuffer auf einen zugewiesenen globalen Adreßbereich abbilden. Die entfernte Datenleseanfrage wird zusammen mit dem zugewiesenen globalen Adreßbereich dem Serverknoten übermittelt.
  • Beim Serverknoten wird die Anfrage bedient, indem ein Speicherimportvorgang durchgeführt wird, bei dem ein oder mehrere ausgehende MMU(OMMU)-Einträge generiert und zum Abbilden des in der Leseanfrage spezifizierten globalen Adreßbereichs auf einen entsprechenden Bereich lokaler physikalischer Adressen gespeichert werden. Die abgebildeten bzw. zugeordneten (mapped) lokalen physikalischen Adressen in dem Server sind nicht Speicherstellen im Speicher des Servers. Der Server führt dann eine DMA-Operation der Plattensteuerung zur direkten Übertragung der in der Anforderungsnachricht angegebenen Daten von der Platte an die abgebildeten lokalen physikalischen Adressen durch. Die DMA-Operation überträgt die angegebenen Daten an die Netzwerkschnittstelle des Servers, wo die abgebildeten lokalen physikalischen Adressen, an die die Daten übertragen werden, in die entsprechenden globalen Adressen konvertiert werden. Die angegebenen Daten mit den entsprechenden Adressen werden dann an den Clientknoten übertragen.
  • Der Clientknoten reagiert auf den Empfang der angegebenen Daten mit der Umwandlung der globalen Adressen in den empfangenen Daten in die lokalen physikalischen Adressen, die dem zugeordneten Empfangspuffer entsprechen und Speichern der empfangenen, angegebenen Daten in dem zugeordneten Empfangspuffer.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Beispielhafte Ausführungsformen der Erfindung werden nachfolgend unter Bezug auf die beigefügten Zeichnungen nur beispielhaft beschrieben, von denen:
  • 1 ein Blockdiagramm zweier Computerknoten in einem Computernetzwerk ist.
  • 2 ein Blockdiagramm ist, das die Komponenten der in jedem Computer eines Computernetzwerk vorgefundenen Kommunikationsschnittstelle darstellt.
  • 3 virtuelle, lokale und globale Adreßräume und Abbildung zwischen diesen Adreßräumen darstellt.
  • 4 ein Blockdiagramm der Computermodule ist, die verwendet werden, um Adreßübersetzungen durchzuführen, die mit dem Übertragen von Daten von einem ersten Knoten an einen zweiten Knoten eines verteilten Computersystems verbunden sind.
  • 5 ein Flußdiagramm eines herkömmlichen Vorgangs ist für einen Prozeß auf einem ersten Computerknoten B, um Information von einer Platte auf einem anderen Computerknoten A zu lesen.
  • 6 ein Computersystem mit einem Cluster von Computern darstellt, die als ein einziger Serverknoten agieren.
  • 7 ein Flußdiagramm eines Vorgangs ist für einen Prozeß auf einem ersten Computerknoten B zum Lesen von Information von einer Platte auf einem anderen Computerknoten A gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 ein Blockdiagramm eines Server- oder Clientcomputers ist, der eine bevorzugte Ausführungsform der vorliegenden Erfindung umfaßt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • In 6 wird ein verteiltes Computersystem 200 gezeigt, das einen Mehrfach-CPU-Server 202 und zahlreiche Clientcomputer 204 umfaßt, die mit dem Server über ein oder mehrere Kommunikationsnetzwerke 206 verbunden sind. Der Server 202 umfaßt ein oder mehrere Cluster 208 von Computern 210, um damit mehr Berechnungsdienste für die Clients 204 bereitzustellen, als durch einen einzelnen Servercomputer zur Verfügung gestellt werden könnten. Der Server 202 wird manchmal als „der Servercluster" bezeichnet. Für die Zwecke des vorliegenden Dokumentes ist es irrelevant, ob zwei Servercomputer 210, die sich Information teilen müssen, im gleichen oder in verschiedenen Clustern 210 sind.
  • Berechnungsaufgaben und Aufgaben in Verbindung mit Dateidiensten werden über den Computer 210 des Servers verteilt. Als ein Ergebnis davon können die Daten, die von einem Prozeß, der auf einem Servercomputer läuft, auf einer Platte oder einer ähnlichen Speichereinrichtung gelegen sein, die Teil eines anderen Servercomputers ist (oder damit verbunden ist).
  • Die vorliegende Erfindung zielt hauptsächlich auf ein Verfahren, mit dem Vorgänge zum „entfernten Plattenlesen" effizienter gemacht werden. Das heißt, wenn ein erster Computer 210 im Server 202 Daten lesen muß, die auf einer Platte auf einem anderen Computer 210 im Server gespeichert sind, liefert die vorliegende Erfindung einen effizienten Mechanismus und eine Methodologie zur Durchführung dieses Vorgangs, die effizienter sind als der oben zu 5 beschriebene.
  • Für die Zwecke der Beschreibung der vorliegenden Erfindung werden die Begriffe „Client" und „Server" beide verwendet, um auf Computer 210 im Server 202 Bezug zu nehmen. Die vorliegenden Erfindung könnte jedoch auch benutzt werden, um Datenlesevorgänge auf entfernten Platten zwischen irgendeinem „echten" Clientcomputer 204 und einem Servercomputer 210 im Servercluster 202 durchzuführen.
  • 7 zeigt den verbesserten Datenlesevorgang auf entfernten Platten der vorliegenden Erfindung, der einen Prozeß auf Knoten B in die Lage setzt, Information von einer Platte auf Knoten A zu lesen. Einige der Schritte dieses Vorgangs sind dieselben wie die oben zu 5 beschriebenen und haben daher dieselben Bezugszahlen wie in 5. Neuen oder modifizierten Schritten sind neue Bezugszahlen zugewiesen.
  • Der erste Schritt für Knoten B ist das Einrichten eines Empfangspuffers durch „Exportieren von Speicher" an Knoten A (Schritt 80). In einigen Ausführungsformen kann dieser Schritt im Vorhinein durchgeführt werden, da im Vorhinein bekannt ist, daß Knoten B viele Plattenlesevorgänge von Knoten A durchführen wird. In den meisten Implementierungen jedoch wird der Schritt des Exportierens von Speicher als Reaktion auf eine entfernte Plattenleseanforderung durch einen Nutzer- oder einen Kernprozeß in Knoten B durchgeführt. Der Speicher-Export-Schritt 80 wird durchgeführt, indem ein IMMU-Eintrag in Knoten B erstellt wird, der den physikalischen Adreßbereich eines Empfangspuffers im Speicher von Knoten B auf einen entsprechenden Bereich globaler Adressen abbildet. Wie oben angegeben wird Knoten B typischerweise einen Bereich globaler Adressen haben, die ihm im Voraus zum Speicherexport an andere Knoten zugewiesen wurde. Andere Mechanismen zum Zuweisen globaler Adressen wären jedoch gleichermaßen anwendbar.
  • Als nächstes wird in Schritt 82 eine Anforderungsnachricht durch den Clientknoten (Knoten B) an den Serverknoten (Knoten A) übertragen, bei dem die angefragte Information gespeichert ist. Die Anforderungsnachricht spezifiziert:
    • – den Zielknoten, an den die Nachricht übertragen wird;
    • – den Quellknoten, von dem die Nachricht gesandt wird;
    • – die Informationsquelle, wie eine Plattendatei, Teil einer Plattendatei oder Bereich auf einer Platte, der die angeforderte Information enthält;
    • – die globale Adresse, an die die angeforderte Information übertragen werden soll; und
    • – andere Parameter, wie Protokollparameter, die hier nicht relevant sind.
  • Beim Server (Knoten A) richtet der Server einen OMMU-Eintrag beim Empfang der Anfragenachricht ein, um den Speicher, der von dem anfragenden Clientknoten, Knoten B, (Schritt 300) exportiert wird, zu importieren. Der OMMU-Eintrag, der in Schritt 300 eingerichtet wurde, bildet einen Bereich, den der globale Adreßbereich in der empfangenen Nachricht spezifiziert, auf einen entsprechenden Bereich von physikalischem Speicher in dem Serverknoten ab. Anders als in Schritt 85 in 5 bezeichnen die abgebildeten lokalen physikalischen Adressen keine Speicherstellen in dem zweiten Computerspeicher, sondern die abgebildeten lokalen physikalischen Adressen sind physikalische Adressen, reserviert für die Nutzung durch die Netzwerkschnittstelle des Servers. Falls nötig (d. h., wenn ein ausreichend großer zusammenhängender Bereich physikalischer Adressen, der der Netzwerkschnittstelle zugeordnet ist, nicht verfügbar ist und/oder die Größe des abgebildeten Adreßbereichs nicht gleich 2n Seiten ist) wird der Serverknoten zwei oder mehr OMMU-Einträge generieren, um so den spezifizierten globalen Adreßraum auf zwei oder mehr lokale physikalische Adreßbereiche abzubilden.
  • Sobald die IMMU in dem anfragenden Knoten B und die OMMU in dem antwortenden oder sendenden Knoten A eingerichtet wurden, stellt die Plattensteuerung in dem Server ihre interne DMA 332 so ein (gezeigt in 8), daß sie die angeforderten Daten in die lokale physikalische Adresse (im Server), die dem importierten Speicher zugewiesen ist, kopiert (Schritt 301). Mit anderen Worten werden zur Durchführung einer direkten Datenübertragung von der Platteneinrichtung auf die in dem anfordernden Clientcomputer abgebildeten lokalen physikalischen Adressen die DMA-Quelladresse, -Zieladresse und Datenmengenzählregister des DMA auf die zum Durchführen einer direkten Datenübertragung nötigen Werten eingestellt.
  • Als nächstes führt der Server eine „open barrier"-Operation (Schritt 302) durch, die im wesentlichen eine Zahl der aufgetretenen Fehlerereignisse der Netzwerkkommunikation (CEE count, CEE-Zahlen) in einer lokalen Variablen (LEE count, LEE-Zahlen) speichert. Wenn eine „close barrier"-Operation zu einem späteren Zeitpunkt durchgeführt wird, wartet der Treiber für die Netzwerkschnittstelle auf den Abschluß jedweder noch ausstehenden Operationen, und dann wird die aktuelle Zahl der aufgetretenen Fehlerereignisse der Netzwerkkommunikation, die CEE-Zahl, mit dem lokal gespeicherten Wert der LEE-Zahl verglichen und ein Fehler-Bedingungs-Flag wird gesetzt, wenn die beiden nicht gleich sind.
  • Bei dem „open barrier"-Schritt wird der Vorgang der Übertragung der Plattensteuerungs-DMA eingeleitet, wodurch die Übertragung der angeforderten Daten von der Platte direkt zu der Server-Netzwerk-Schnittstelle (304) veranlaßt wird. Da die Zieladressen für den DMA-Abgleich von der OMMU abgebildet werden, erhält die NIC-Karte die Plattendaten direkt von dem relevanten internen Bus und überträgt diese Daten erneut auf dem Kommunikationskanal zum anfragenden Server, wobei die lokalen physikalischen Zieladressen in die entsprechenden globalen Adressen übersetzt werden. Bei dem anfragenden Clientcomputer werden die globalen Adressen in den übertra genen Daten durch die IMMU des empfangenden Clientcomputer in lokale physikalische Adressen umgewandelt, und dann werden die Daten auf einem lokalen internen Bus zum Speichern in den Empfangspuffer übertragen, der jenen lokalen physikalischen Adressen entspricht. Wie vorher angegeben, sind all die zuvor erwähnten Adreßübersetzungen und Datenrückübertragungen durch die Netzwerkschnittstelle völlig automatisch und stellen den Standardbetrieb solcher Einrichtungen dar.
  • Nachdem der Server die angeforderten Daten an den anfordernden Knoten überträgt (Schritte 301, 302, 304), führt er dann eine „close barrier"-Operation (Schritt 306) durch, um festzustellen, ob die Datenübertragung erfolgreich war oder nicht. In der Tat kann die close barrier-Operation einen Datenübertragungsfehler entdecken oder einen anderen Fehler des Kommunikationssystems, der nicht mit der Datenübertragung verbunden ist, die durch das Befehlspaar „open-close-barrier" geschützt wird. Wenn die „close barrier"-Operation ein Fehlerflag setzt, werden die Schritte 302, 304 und 306 wiederholt. Wenn nach einer festgelegten Anzahl von Wiederholungen die Datenübertragung immer noch ohne Erfolg bleibt, wird eine Fehlermeldung an den Client und die Betreiber des Servercomputers geschickt (was einfach nur das Schreiben einer Fehlermeldung in eine Protokolldatei sein kann).
  • Nachdem die DMA-Operation abgeschlossen ist, was dazu führt, daß die angeforderten Daten vollständig an den Empfangspuffer in dem anfragenden Knoten übertragen werden, wird von dem sendende Knoten eine „Abgeschlossen"-Nachricht zu einer vorher festgelegten Stelle in der Nachrichtenwarteschlange in dem anfordernden Knoten übertragen (Schritt 90), um den anfordernden Knoten zu informieren, daß die Übertragung der angeforderten Daten abgeschlossen wurde.
  • Schließlich „zieht" der Server die Verbindung „herunter", indem der OMMU-Eintrag (oder die Einträge) für den importierten Speicher, der mit der Anforderung auf Knoten B verbunden ist, gelöscht wird (Schritt 92).
  • Als Reaktion auf die Abschluß-Nachricht zieht der anfragende Knoten seine Seite der Verbindung durch Löschen des entsprechenden IMMU-Eintrags (oder der Einträge) herunter, um den Export der für die Anfrage verwendeten Speicher rückgängig zu machen und die lokale Lese-/Schreibsteuerung für diesen Teil des lokalen physikalischen Speichers des anfordernden Systems zurückzugeben (Schritt 94). Dann oder gleichzeitig mit dem Vorgang des Herunterziehens verarbeitet der anfordernde Knoten die empfangenen Daten (Schritt 96). Natürlich gibt es viele Variationen des Ablaufs der oben in 7 beschriebenen Operationen zum Durchführen eines entfernten Plattenlesevorgangs. Die oben beschriebenen Schritte der DMA-Operation (Schritte 300, 304) stellen einen beträchtlichen Vorteil gegenüber Plattenleseverfahren nach dem Stand der Technik dar. Insbesondere wird der Plattenlesevorgang schneller durchgeführt, da der Vorgang des Speicherns in lokalen Serverspeicher vermieden wird, was Systemlatenzzeiten reduziert. Ebenso wird, was sehr bedeutsam ist, die Speichernutzung im Server reduziert, da der Server keine lokalen Speicherressourcen zur Verwendung durch entfernte Lesevorgänge eines Clientcomputers belegen muß.
  • 8 zeigt ein Blockdiagramm eines Computers 210 innerhalb des Serverclusters 200 (siehe 6). Der Computer 210 kann entweder ein Server oder ein Client, bezogen auf einen bestimmten entfernten Plattenlesevorgang, sein. Der Computer 210 beinhaltet eine CPU 320, einen internen Kommunikations- oder Speicherbus 322, wahlfrei zugreifbaren Speicher 324, eine Kommunikations- oder Netzwerkschnittstelle (communications or network interface, NIC) 326 und eine nicht-flüchtige, nicht wahlfrei zugreifbare Speichereinrichtung 328 wie eine Hochgeschwindigkeits-Magnetplatte und eine entsprechende Plattensteuerung 330. Die Plattensteuerung 330 beinhaltet die DMA-Logik 332 zum Durchführen von Datenübertragungen mittels direktem Speicherzugriff (direct memory access, DMA) in und aus der Plattenspeichervorrichtung 328.
  • Nach einer bevorzugten Ausführungsform sind der NIC 326 und die Plattensteuerung 330 an einen PCI-Bus 334 angeschlossen, der wiederum an den Hauptspeicherbus 322 durch eine Busbrücke 336 angeschlossen ist. Der Speicher 324 des Computers speichert üblicherweise in Verbindung mit der Plattenspeichereinrichtung 328:
    • – ein Betriebssystem 340 (z. B. das Sun Microsystems Betriebssystems SolarisTM);
    • – Anwendungsprogramme 342, einschließlich Anwendungsprogrammen, die Daten aus einer entfernt gelegenen Plattenspeichervorrichtung anfordern können;
    • – ein Dateisystem 341, das unter anderem Dateiübertragungen zwischen Computerknoten in Reaktion auf Befehle des Anwendungsprogramms behandelt, wobei das Dateisystem Client- und Serverdateisystemanteile zum Behandeln der Seiten von Client und Server einer Dateiübertragung beinhaltet;
    • – einen NIC-Treiber 344 zum Steuern der Netzwerkschnittstelle 326 und zum Verwalten der IMMU und OMMU darin (nicht in 8 abgebildet);
    • – eine Prozedur zum Lesen entfernter Platten 346 (die vorzugsweise als Teil des Betriebssystems 340 implementiert ist) zum Durchführen des clientseitigen Teils des entfernten Plattenlesevorgangs, in Verbindung mit NIC-Treiber 344;
    • – ein Plattensteuerungstreiber 348 zum Steuern der Verwendung der Plattensteuerung, einschließlich des Einrichtens der Plattensteuerungs-DMA;
    • – Empfangspuffer 350 zum Empfang der angeforderten Daten von einem entfernten Knoten; und
    • – eine Empfangswarteschlange 352 zum Empfang von „Abschluß"-Nachrichten und dergleichen von entfernten Knoten, nachdem diese Daten an den Computer 210 übermittelt haben.
  • Der clientseitige Teil des Dateisystems 341 führt Schritt 82 durch, welcher die gesamte Kette von Ereignissen zur Durchführung eines entfernten Platten-I/O-Vorgangs anstößt.
  • Die Serverseite des entfernten Plattenlesevorgangs ist, wie in 7 gezeigt, in dem Dateisystem 341 implementiert (zur Durchführung von Schritt 90), im Schritt NIC-Treiber 344 (d. h. zur Durchführung der Schritte 300, 302, 306, 308 und 92) und dem Plattensteuerungstreiber 348 (d. h. zur Durchführung der Schritte 301 und 304). Obwohl in 7 nicht gezeigt, wird die gesamte Kette von Schritten, die auf der Serverseite durchgeführt werden, unter der Steuerung des serverseitigen Teils des Dateisystems 341 durchgeführt (d. h. Schritt 82 auf der Clientseite spricht die Serverseite des Dateisystems 341 an, was dann auf der Serverseite den in 7 gezeigten Satz von Schritten einleitet).
  • Schreiben auf entfernte Platten
  • Genau dieselben Techniken wie die oben beschriebenen können auch zum Durchführen eines Schreibvorgangs auf entfernte Platten ausgeführt werden. Das bedeutet, ein Clientknoten kann unter Verwendung derselben Vorgangs wie in 7 beschrieben mit den folgenden geringfügigen Änderungen Daten direkt auf die Platte auf einem Serverknoten schreiben. In Schritt 80 wird der Speicher, der die auf die Platte zu schreibenden Daten enthält, exportiert. In Schritt 82 zeigt die Anforderungsnachricht den Plattenschreibvorgang an, der durchzuführen ist. In Schritt 301 wird die Plattensteuerungs-DMA eingestellt, um die Daten aus der Entfernung auf die Platte zu lesen und in Schritt 304 wird das entfernte Lesen der DMA auf eine Platte durchgeführt (d. h. Daten von dem Client werden auf die Platte geschrieben).
  • Während die vorliegende Erfindung unter Bezugnahme auf einige spezifische Ausführungsformen beschrieben wurde, ist die Beschreibung für die Erfindung beispielhaft erläuternd und soll nicht als Beschränkung der Erfindung ausgelegt werden. Verschiedene Änderungen können Fachleuten auf dem Gebiet in den Sinn kommen, ohne von dem Schutzumfang der Erfindung, wie in den beigefügten Ansprüchen definiert, abzuweichen.

Claims (5)

  1. Verfahren zum Durchführen eines Fernlesevorgangs einer Festplatte zwischen ersten und zweiten Computern mit den Schritten: am ersten Computer (204): Zuordnen eines Bereichs von lokalen physikalischen Adressen, die zu einem Empfangspuffer gehören, zu einem entsprechenden Bereich globaler Adressen, Senden (82) einer Anforderungsnachricht an den zweiten Computer, wobei die Anforderungsnachricht Daten spezifiziert, die von der Festplatte geholt werden sollen, welche bei dem zweiten Computer angeordnet ist, und des Bereichs von globalen Adressen, die zu dem zugehörigen Empfangspuffer gehören, am zweiten Computer (202) Reagieren auf den Empfang der Anforderungsnachricht durch: Zuordnen (300) des Bereichs von globalen Adressen, welche in der Anforderungsnachricht spezifiziert sind, zu einem entsprechenden Bereich lokaler physikalischer Adressen, Ausführen (304) eines DMA-Vorgangs für das direkte Übertragen der Daten, die in der Datennachricht spezifiziert sind, von der Festplatte zu den zugeordneten lokalen physikalischen Adressen, wobei der DMA-Vorgang die spezifizierten Daten an eine Netzwerkschnittstelle in dem zweiten Computer sendet, wo die zugeordneten lokalen physikalischen Adressen, zu welchen die Daten übertragen werden, in die entsprechenden globalen Adressen umgewandelt werden, und Senden (90) der spezifizierten Daten mit den entsprechenden globalen Adressen von der Netzwerkschnittstelle des zweiten Computers an eine Netzwerkschnittstelle des ersten Computers, und am ersten Computer Reagieren auf den Empfang der spezifizierten Daten durch: Umwandeln der globalen Adressen in den empfangenen spezifizierten Daten in die lokalen physikalischen Adressen, welche dem zugeordneten Empfangspuffer entsprechen, und Speichern der empfangenen spezifizierten Daten in dem zugeordneten Empfangspuffer, wobei der DMA-Vorgang den Speicher in dem zweiten Computer umgeht, um die Herstellung einer lokalen Kopie der übertragenen Daten im Speicher an dem zweiten Computer zu vermeiden.
  2. Verfahren nach Anspruch 1, welches weiterhin die Schritte aufweist: am ersten Computer Reagieren auf eine Anwendungsprogrammanforderung für Daten von einer Festplatte, die am zweiten Computer lokalisiert ist, durch: Zuordnen eines Empfangspuffers im Speicher des ersten Computers, wobei der Empfangspuffer einen zugehörigen Bereich lokaler physikalischer Adressen hat, Speichern eines Eintrags in einer Zuordnungseinheit eines Eingangsspeichers in dem ersten Computer zum Zuordnen des lokalen physikalischen Adreßbereichs, der zu dem zugeordneten Empfangspuffer gehört, zu dem entsprechenden Bereich globaler Adressen, und Senden einer Anforderungsnachricht, und am zweiten Computer, wenn auf den Empfang der Anforderungsnachricht reagiert wird: Speichern eines Eintrags in einer Zuordnungseinheit eines Ausgangsspeichers in dem zweiten Computer zum Zuordnen des Bereiches globaler Adressen, welche in der Anforderungsnachricht spezifiziert sind, zu einem entsprechenden Bereich lokaler physikalischer Adressen, wobei die zugeordneten lokalen physikalischen Adressen keine Positionen in einem Speicher in dem Speicher des zweiten Computers bezeichnen.
  3. Verfahren nach Anspruch 2, wobei am zweiten Computer der Eintrag in der Zuordnungseinheit des Ausgangsspeichers deaktiviert wird, nachdem die spezifizierten Daten erfolgreich an den ersten Computer übertragen worden sind, und am ersten Computer der Eintrag in der Zuordnungseinheit des Eingangsspeichers deaktiviert wird, nachdem die spezifizierten Daten durch den zweiten Computer empfangen wurden.
  4. Vorrichtung für das Ausführen eines Fernlesevorgangs von Festplatten zwischen ersten und zweiten Computern, mit: am ersten Computer (204): einer CPU (320), einem Speicher (324), einschließlich eines Speichers, in welchem ein Empfangspuffer zugeordnet ist, einer Verwaltungseinheit des Eingangsspeichers, im folgenden als IMMU bezeichnet, einer Netzwerkschnittstelle (326), einer Treiberprozedur einer Netzwerkschnittstelle, die durch die CPU des ersten Computers ausführbar ist und die: in der IMMU einen Eintrag zum Zuordnen eines Bereiches von lokalen physikalischen Adressen, welche dem Empfangspuffer zugeordnet sind, zu einem entsprechenden Bereich globaler Adressen speichert, und eine Anforderungsnachricht an den zweiten Computer über die Netzwerkschnittstelle und einen Kommunikationskanal sendet, der mit der Netzwerkschnittstelle verbunden ist, wobei die Anforderungsnachricht Daten spezifiziert, die von einer Festplatte gewonnen werden können, welche in dem zweiten Computer und dem Bereich globaler Adressen liegt, welcher zu dem zugeordneten Empfangspuffer gehört, am zweiten Computer (202): einer CPU (320), einem Speicher (324), der Festplatte (328), welche die in der Anforderungsnachricht spezifizierten Daten speichert, einer Verwaltungseinheit für einen Ausgangsspeicher, im folgenden als OMMU bezeichnet, einer Netzwerkschnittstelle (326), die mit dem Kommunikationskanal verbunden ist, einem Netzwerkschnittstellentreiber, der durch die CPU des zweiten Computers ausführbar ist, welcher: in der OMMU einen Eintrag speichert, der den Bereich globaler Adressen, welcher in der Anforderungsnachricht spezifiziert ist, auf einen entsprechenden Bereich lokaler physikalischer Adressen abbildet, wobei die abgebildeten lokalen physikalischen Adressen keine Stellen in einem Speicher in dem Speicher des zweiten Computers bezeichnen, und einer Festplattensteuerung (320), die mit der Festplatte verbunden ist, wobei die Festplattensteuerung mit einer Netzwerkschnittstelle durch einen internen Bus (334) verbunden ist, die Festplattensteuerung eine DMA-Logik (332) aufweist, um die in der Anforderungsnachricht spezifizierten Daten direkt von der Festplatte auf die zugeordneten bzw. abgebildeten lokalen physikalischen Adressen zu übertragen, wobei der DMA-Vorgang die spezifizierten Daten an die Netzwerkschnittstelle in dem zweiten Computer sendet, bei welchem die abgebildeten lokalen physikalischen Adressen, an welche die Daten übertragen werden, in die entsprechenden globalen Adressen gemäß dem in der OMMU gespeicherten Eintrag umgewandelt werden, und die spezifizierten Daten mit den entsprechenden globalen Adressen über den Kommunikationskanal an den ersten Computer gesendet werden, wobei am ersten Computer die Netzwerkschnittstelle eine Logik für das Reagieren auf den Empfang der spezifizierten Daten aufweist, indem die globalen Adressen in den empfangenen, spezifizierten Daten in die lokalen physikalischen Adressen, welche dem zugehörigen Empfangspuffer entsprechen, umgewandelt werden, und Speichern der empfangenen spezifizierten Daten in dem zugehörigen Empfangspuffer.
  5. Vorrichtung nach Anspruch 4, wobei der Netzwerkschnittstellentreiber in dem zweiten Computer den OMMU-Eintrag deaktiviert, nachdem die spezifizierten Daten erfolgreich an den ersten Computer übertragen worden sind, und der Netzwerkschnittstellentreiber in dem ersten Computer den IMMU-Eintrag deaktiviert, nachdem die spezifizierten Daten von dem zweiten Computer erfolgreich empfangen wurden.
DE69826930T 1997-06-30 1998-06-29 System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe Expired - Lifetime DE69826930T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US885058 1997-06-30
US08/885,058 US5884313A (en) 1997-06-30 1997-06-30 System and method for efficient remote disk I/O

Publications (2)

Publication Number Publication Date
DE69826930D1 DE69826930D1 (de) 2004-11-18
DE69826930T2 true DE69826930T2 (de) 2006-03-09

Family

ID=25386035

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69826930T Expired - Lifetime DE69826930T2 (de) 1997-06-30 1998-06-29 System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe

Country Status (5)

Country Link
US (2) US5884313A (de)
EP (1) EP0889623B1 (de)
JP (1) JPH1196127A (de)
CA (1) CA2241994A1 (de)
DE (1) DE69826930T2 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098108A (en) * 1997-07-02 2000-08-01 Sitara Networks, Inc. Distributed directory for enhanced network communication
US6026448A (en) * 1997-08-27 2000-02-15 International Business Machines Corporation Method and means for exchanging messages, responses and data between different computer systems that require a plurality of communication paths between them
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
DE19807076A1 (de) * 1998-02-20 1999-08-26 Cit Alcatel Datenbereitstellungsystem
US6549946B1 (en) * 1998-05-21 2003-04-15 International Business Machines Corporation Apparatus and method for telecommunication routing and parameter negotiation
US6615383B1 (en) * 1998-05-29 2003-09-02 Sun Microsystems, Inc. System and method for message transmission between network nodes connected by parallel links
US6920475B1 (en) * 1999-04-23 2005-07-19 Oracle International Corporation Communication architecture for distributed computing environment
JP3376956B2 (ja) * 1999-05-14 2003-02-17 日本電気株式会社 プロセッサ間通信装置
US7281030B1 (en) * 1999-09-17 2007-10-09 Intel Corporation Method of reading a remote memory
US6910082B1 (en) * 1999-11-18 2005-06-21 International Business Machines Corporation Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server
US6892298B2 (en) * 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
US7876748B1 (en) 2000-09-07 2011-01-25 International Business Machines Corporation Stable hash-based mapping computation for a dynamically varying target set
US20020129172A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US7124228B2 (en) * 2001-07-10 2006-10-17 Sun Microsystems, Inc. Bus communication architecture, in particular for multicomputing systems
US7266622B2 (en) * 2002-03-25 2007-09-04 International Business Machines Corporation Method, computer program product, and system for automatic application buffering
US20040128407A1 (en) * 2002-12-31 2004-07-01 Bennett Joseph A. ATA device programming time
US7526617B2 (en) * 2005-12-29 2009-04-28 Sap Ag System and method for memory management using memory windows
US20080225837A1 (en) * 2007-03-16 2008-09-18 Novell, Inc. System and Method for Multi-Layer Distributed Switching
US7882327B2 (en) * 2007-07-31 2011-02-01 Advanced Micro Devices, Inc. Communicating between partitions in a statically partitioned multiprocessing system
US9015446B2 (en) 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
JP6011814B2 (ja) * 2011-05-23 2016-10-19 パナソニックIpマネジメント株式会社 通信端末
US10572393B2 (en) * 2015-04-22 2020-02-25 ColorTokens, Inc. Object memory management unit
US10454845B2 (en) * 2015-04-22 2019-10-22 ColorTokens, Inc. Object memory management unit
US10778636B2 (en) * 2016-06-28 2020-09-15 ColorTokens, Inc. Dynamic credential based addressing
US11829793B2 (en) 2020-09-28 2023-11-28 Vmware, Inc. Unified management of virtual machines and bare metal computers
US11824931B2 (en) 2020-09-28 2023-11-21 Vmware, Inc. Using physical and virtual functions associated with a NIC to access an external storage through network fabric driver
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4825358A (en) * 1985-04-10 1989-04-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5394526A (en) * 1993-02-01 1995-02-28 Lsc, Inc. Data server for transferring selected blocks of remote file to a distributed computer network involving only single data transfer operation
US5680573A (en) * 1994-07-12 1997-10-21 Sybase, Inc. Method of buffering data objects in a database
JPH0887459A (ja) * 1994-09-19 1996-04-02 Fujitsu Ltd バックグラウンド通信方式
US5729682A (en) * 1995-06-07 1998-03-17 International Business Machines Corporation System for prompting parameters required by a network application and using data structure to establish connections between local computer, application and resources required by application
FR2737031B1 (fr) * 1995-07-21 1997-08-14 Bull Sa Procede de transfert de donnees dans un systeme informatique multinodal
US5787483A (en) * 1995-09-22 1998-07-28 Hewlett-Packard Company High-speed data communications modem
US5913028A (en) * 1995-10-06 1999-06-15 Xpoint Technologies, Inc. Client/server data traffic delivery system and method
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations

Also Published As

Publication number Publication date
DE69826930D1 (de) 2004-11-18
EP0889623B1 (de) 2004-10-13
CA2241994A1 (en) 1998-12-30
JPH1196127A (ja) 1999-04-09
EP0889623A3 (de) 2002-06-05
EP0889623A2 (de) 1999-01-07
US6049808A (en) 2000-04-11
US5884313A (en) 1999-03-16

Similar Documents

Publication Publication Date Title
DE69826930T2 (de) System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe
DE60027404T2 (de) Kreditbasiertes flusskontrollverfahren
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE60038448T2 (de) Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE69907776T2 (de) Verfahren und Vorrichtung zur Identifizierung gefährdeter Bauteile in einem System mit redundanten Bauteilen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69434330T2 (de) Übertragungsvorrichtgung und verfahren
DE112020002498T5 (de) System und verfahren zur erleichterung einer effizienten paketweiterleitung in einer netzwerkschnittstellensteuerung (nic)
DE69628631T2 (de) Dateneingangs/-ausgangsvorrichtung durch Referenzierung zwischen zentralen Verarbeitungseinheiten und Ein-/Ausgabevorrichtungen
DE69935805T2 (de) Rechnersystem und verfahren zum betreiben von mehreren betriebssystemen in verschiedenen partitionen des rechnersystems und um den verschiedenen partitionen die kommunikation miteinander durch gemeinsame speicher zu erlauben
DE69636029T2 (de) Verfahren und Vorrichtung zur Datenübertragung
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE60033529T2 (de) Netzprozessor, speicherorganisation und verfahren
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE60311462T2 (de) Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
DE4319912A1 (de) Echtzeitdaten-Abbildungsnetzwerksystem und Verfahren zum Betreiben desselben
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager

Legal Events

Date Code Title Description
8364 No opposition during term of opposition