[go: up one dir, main page]

DE112005001430B4 - Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle - Google Patents

Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle Download PDF

Info

Publication number
DE112005001430B4
DE112005001430B4 DE112005001430.4T DE112005001430T DE112005001430B4 DE 112005001430 B4 DE112005001430 B4 DE 112005001430B4 DE 112005001430 T DE112005001430 T DE 112005001430T DE 112005001430 B4 DE112005001430 B4 DE 112005001430B4
Authority
DE
Germany
Prior art keywords
data structure
entry
address
sub
segment
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 - Fee Related
Application number
DE112005001430.4T
Other languages
English (en)
Other versions
DE112005001430T5 (de
Inventor
Hemal Shah
Ali Oztaskin
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112005001430T5 publication Critical patent/DE112005001430T5/de
Application granted granted Critical
Publication of DE112005001430B4 publication Critical patent/DE112005001430B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

Verfahren, das Folgendes umfasst:
Empfangen (652) einer Adresse für eine Speicheroperation;
Konvertieren (654) der empfangenen Adresse zu einer ersten virtuellen Adresse eines ersten Eintrages einer Umsetzungs- und Schutztabelle aus virtuell aneinandergrenzenden Datenstrukturen, wobei der erste Eintrag eine erste Datenstruktur aufweist, die Schutzdaten umfasst;
Konvertieren der ersten virtuellen Adresse zu einer ersten physikalischen Adresse des ersten Datenstrukturtabelleneintrages;
Erhalten (664) der ersten Datenstruktur an der ersten physikalischen Adresse;
Ausführen der Speicheroperation unter Verwendung der ersten Datenstruktur des ersten Eintrages der Umsetzungs- und Schutztabelle, wobei das Ausführen eine Schutzüberprüfung (666) unter Verwendung der Schutzdaten umfasst, die aus der ersten Datenstruktur erhalten wurden;
Erhalten (680) einer zweiten virtuellen Adresse eines zweiten Eintrages der Umsetzungs- und Schutztabelle auf der Grundlage von Informationen an der ersten physikalischen Adresse, wobei der zweite Eintrag eine zweite Datenstruktur aufweist, die eine physikalische Adresse eines Puffers umfasst;
Konvertieren der zweiten virtuellen Adresse in eine zweite physikalische Adresse des zweiten Datenstrukturtabelleneintrages;
Erhalten (696) der zweiten Datenstruktur an der zweiten physikalischen Adresse; und
Ausführen (698) der Speicheroperation unter Verwendung der zweiten Datenstruktur des zweiten Eintrages der Umsetzungs- und Schutztabelle, wobei das Ausführen (698) der Speicheroperation ein Übertragen von Daten in den / aus dem Puffer an der physikalischen Adresse umfasst, die aus der zweiten Datenstruktur erhalten wurde.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Verwandte Fälle
  • METHOD, SYSTEM, AND PROGRAM FOR MANAGING MEMORY FOR DATA TRANSMISSION THROUGH A NETWORK, (Anwaltsregister P17143), Seriennummer 10/683,941, eingereicht am 9. Oktober 2003; METHOD, SYSTEM, AND PROGRAM FOR MANAGING VIRTUAL MEMORY, (Anwaltsregister P17601), Seriennummer 10/747,920, eingereicht am 29. Dezember 2003; METHOD, SYSTEM, AND PROGRAM FOR CACHING A VIRTUALIZED DATA STRUCTURE TABLE, (Anwaltsregister P19012), Seriennummer ____, eingereicht am ____; und MESSAGE CONTEXT BASED TCP TRANSMISSION, (Anwaltsregister P18331), Seriennummer , eingereicht am____.
  • Beschreibung des Standes der Technik
  • In einer Netzwerkumgebung empfängt ein Netzwerkadapter in einem Hostcomputer, wie zum Beispiel ein Ethernet-Controller, Faserkanal-Controller usw., Eingabe/Ausgabe (E/A)-Anforderungen oder Antworten auf E/A-Anforderungen, die von dem Hostcomputer initiiert wurden.
  • Oft enthält das Betriebssystem des Hostcomputers einen Gerätetreiber zum Kommunizieren mit der Netzwerkadapterhardware zum Verwalten von E/A-Anforderungen, die über ein Netzwerk zu übertragen sind. Der Hostcomputer kann auch ein Protokoll verwenden, das Daten, die über das Netzwerk zu übertragen sind, in Pakete packt, die jeweils eine Zieladresse sowie einen Teil der zu übertragenden Daten enthalten. Datenpakete, die am Netzwerkadapter empfangen werden, werden oft in einem Paketpuffer gespeichert. Eine Transportprotokollschicht kann die Pakete, die durch den Netzwerkadapter empfangen und in dem Paketpuffer gespeichert werden, verarbeiten und kann auf jegliche E/A-Befehle oder Daten zugreifen, die in das Paket eingebettet sind.
  • Zum Beispiel kann der Computer das TCP/IP (Transmission Control Protocol Internet Protocol) verwenden, um Daten für die Übertragung zu codieren und zu adressieren und um die Nutzdaten in den TCP/IP-Paketen, die am Netzwerkadapter empfangen werden, zu decodieren und auf sie zuzugreifen. IP spezifiziert das Format von Paketen, die auch als Datagramme bezeichnet werden, und das Adressierungsschema. TCP ist ein Protokoll einer höheren Ebene, das eine Verbindung zwischen einem Ziel und einer Quelle herstellt und einen zuverlässigen Vollduplex-Bytestromtransportdienst ermöglicht. Ein anderes Protokoll, Remote Direct Memory Access (RDMA), das auf TCP aufgesetzt ist, bietet neben anderen Operationen das direkte Ablegen von Daten an einem spezifizierten Speicherort am Ziel.
  • Ein Gerätetreiber, eine Anwendung oder ein Betriebssystem kann beträchtliche Hostprozessorressourcen in Anspruch nehmen, um Netzwerkübertragungsanforderungen an den Netzwerkadapter zu handhaben. Eine Technik zum Verringern der Arbeitslast des Hostprozessors ist die Verwendung einer TCP/IP-Offload-Maschine (TOE), in der TCP/IP-Protokoll-bezogene Operationen in der Netzwerkadapterhardware - im Gegensatz zum Gerätetreiber oder anderer Hostsoftware - verkörpert sind, wodurch der Hostprozessor von der Durchführung einiger oder aller TCP/IP-Protokoll-bezogenen Operationen bewahrt wird. Gleichermaßen entlastet eine RDMA-befähigte NIC (RNIC) den oder die Hostprozessoren von RDMA und transportbezogenen Operationen.
  • Offload- bzw. Entlastungsmaschinen und andere Komponenten nutzen häufig einen Speicher, der oft als ein Puffer bezeichnet wird, zum Speichern oder Verarbeiten von Daten. Puffer wurden unter Verwendung von physikalischem Speicher realisiert, der Daten, in der Regel kurzzeitig, in integrierten Schaltkreisen speichert, wofür ein Direktzugriffsspeicher oder RAM ein Beispiel ist. In der Regel kann auf Daten relativ schnell aus solchen physikalischen Speichern zugegriffen werden. Des Weiteren ist ein Puffer in der Regel als ein Satz physikalisch aneinandergrenzender Speicherorte konfiguriert, das heißt, Speicherorte mit aneinandergrenzenden physikalischen Adressen. Ein Hostcomputer hat oft zusätzlichen physikalischen Speicher, wie zum Beispiel Festplatten und optische Disks, zum längerfristigen Speichern von Daten. Diese nicht auf integrierten Schaltkreisen basierenden physikalischen Speicher zeigen die Tendenz, Daten allgemein langsamer abzurufen als die physikalischen Speicher mit integrierten Schaltkreisen.
  • Das Betriebssystem eines Computers nutzt in der Regel einen virtuellen Speicherplatz, der oft viel größer ist als der Speicherplatz des physikalischen Speichers des Computers. 1 zeigt ein Beispiel eines virtuellen Speicherplatzes 50 und eines physikalischen Kurzzeit-Speicherplatzes 52. Der Speicherplatz eines physikalischen Langzeit-Speichers, wie zum Beispiel einer Festplatte, ist mit 54 bezeichnet. Die Daten, die in einem Datenstrom zu versenden sind, oder die Daten, die aus einem Datenstrom empfangen werden, können zunächst in nicht-aneinandergrenzenden Abschnitten, das heißt, nicht-aufeinanderfolgenden Speicheradressen, der verschiedenen Speicherkomponenten gespeichert werden. Zum Beispiel können zwei Teile, die mit 10a und 10b bezeichnet sind, in dem physikalischen Speicher in nicht-aneinandergrenzenden Abschnitten des physikalischen Kurzzeit-Speicherplatzes 52 gespeichert werden, während ein anderer Teil, der mit 10c bezeichnet ist, in einem physikalischen Langzeit-Speicherplatz gespeichert werden kann, der durch eine Festplatte bereitgestellt wird, wie in 1 gezeigt. Das Betriebssystem des Computers nutzt den virtuellen Speicheradreßraum 50, um die tatsächlichen Positionen der Teile 10a, 10b und 10c des Datenstromes 10 zu verfolgen. Somit wird ein Abschnitt 50a des virtuellen Speicheradreßraumes 50 auf die tatsächlichen physikalischen Speicheradressen des physikalischen Speicherplatzes 52, in dem der Datenteil 10a gespeichert ist, abgebildet. In einer ähnlichen Weise wird ein Abschnitt 50b des virtuellen Speicheradreßraumes 50 auf die tatsächlichen physikalischen Speicheradressen des physikalischen Speicherplatzes 52, in dem der Datenteil 10b gespeichert ist, abgebildet. Der Datenstrom 10 befindet sich häufig in einem zusammenhängenden virtuellen Speicheradreßraum, während er in nicht-aneinandergrenzenden physikalischen Speicherplatz hinein abgebildet wird. Des Weiteren wird ein Abschnitt 50c des virtuellen Speicheradreßraumes 50 auf die physikalischen Speicheradressen des Festplatten-Langzeitspeicherplatzes 54, wo der Datenteil 10c gespeichert ist, abgebildet. Ein leerer Abschnitt 50d stellt einen nicht-zugeordneten oder nicht-abgebildeten Abschnitt des virtuellen Speicheradreßraumes 50 dar.
  • 2 zeigt ein Beispiel einer typischen Systemumsetzungs- und -schutztabelle (TPT) 60, die das Betriebssystem benutzt, um virtuelle Speicheradressen auf reale physikalische Speicheradressen mit Schutz auf der Prozeßebene abzubilden. So kann die virtuelle Speicheradresse des virtuellen Speicherplatzes 50a zum Beispiel an der virtuellen Speicheradresse 0X1000 beginnen, die zum Beispiel auf eine physikalische Speicheradresse 8AEF000 des physikalischen Speicherplatzes 52 abgebildet wird. Die System-TPT-Tabelle 60 hat keine physikalischen Speicheradressen, die den virtuellen Speicheradressen des virtuellen Speicheradreßraumes 50d entsprechen, weil der virtuelle Speicherplatz 50d noch nicht auf einen physikalischen Speicherplatz abgebildet wurde.
  • In bekannten Systemen können Abschnitte des virtuellen Speicherplatzes 50 einer Vorrichtung der einem Softwaremodul zur Verwendung durch dieses Modul zugewiesen werden, so daß Speicherplatz für Puffer bereitgestellt wird. Des Weiteren kann bei einigen bekannten Designs eine Eingabe/Ausgabe (E/A)-Vorrichtung wie zum Beispiel ein Netzwerkadapter oder ein Speicher-Controller in der Lage sein, Daten direkt in einem Anwendungspuffer oder einem sonstigen Speicherbereich abzulegen. Eine solche Fähigkeit zur direkten Datenablage kann eine Zwischenpufferung, bei der Daten in einem temporären Puffer abgelegt werden, bevor sie an den vorgesehenen Speicherort des Systems übertragen werden, verringern oder beseitigen. Eine zu Remote Direct Memory Access (RDMA) befähigte Netzwerkschnittstellenkarte (RNIC) ist ein Beispiel einer E/A-Vorrichtung, die Daten direkt ablegen kann. Eine RNIC kann definierte Operationen (auch als „Semantik“ bezeichnet), einschließlich von RDMA Write, RDMA Read und Send/Receive, für Speicher-zu-Speicher-Datenübertragungen über ein Netzwerk unterstützen.
  • Die Adresse des Anwendungspuffers, der das Ziel der RDMA-Operation ist, wird häufig in den RDMA-Paketen in irgendeiner Form eines Pufferidentifikators und einer virtuellen Adresse oder eines Offsets transportiert. Der Pufferidentifikator identifiziert, in welchen Puffer die Daten zu schreiben sind oder aus welchem Puffer die Daten zu lesen sind. Die virtuelle Adresse oder Offset, die bzw. der durch die Pakete transportiert wird, identifiziert die Position innerhalb des identifizierten Puffers für die spezifizierte Direktspeicheroperation.
  • Um eine direkte Datenablage vorzunehmen, verwaltet eine E/A-Vorrichtung in der Regel ihre eigene Umsetzungs- und Schutztabelle (TPT), wovon ein Beispiel bei 70 in 3 gezeigt ist. Die Vorrichtungs-TPT 70 enthält Datenstrukturen 72a, 72b, 72c, ..., 72n, von welchen jede dafür verwendet wird, den Zugang zu einem bestimmten Puffer entsprechend der Identifizierung durch einen zugehörigen Pufferidentifikator der Pufferidentifikatoren 74a, 74b, 74c, ..., 74n zu steuern. Die Vorrichtungs-TPT 70 umfaßt des weiteren Datenstrukturen 76a, 76b, 76c, ..., 76n, von denen jede dafür verwendet wird, den Pufferidentifikator und die virtuelle Adresse oder den Offset in physikalische Speicheradressen des bestimmten Puffers, der durch den zugehörigen Pufferidentifikator 74a, 74b, 74c, ..., 74n identifiziert wird, zu übersetzen. So wird zum Beispiel die Datenstruktur 76a der TPT 70 von der E/A-Vorrichtung dafür verwendet, eine Adressenumsetzung für den durch den Identifikator 74a identifizierten Puffer vorzunehmen. Gleichermaßen wird die Datenstruktur 72a von der E/A-Vorrichtung dafür verwendet, Schutzüberprüfungen für den durch den Pufferidentifikator 74a identifizierten Puffer vorzunehmen. Die Adressenumsetzung und die Schutzüberprüfungen können vor der direkten Datenablage der Nutzdaten, die in einem Paket enthalten sind, das von dem Netzwerk kommend empfangen wurde, oder vor dem Aussenden der Daten in dem Netzwerk vorgenommen werden.
  • Um eine Hochgeschwindigkeitsdatenübertragung zu ermöglichen, wird eine Vorrichtungs-TPT wie zum Beispiel die TPT 70 in der Regel durch die E/A-Vorrichtung und die Treibersoftware für die Vorrichtung verwaltet. Eine Vorrichtungs-TPT kann relativ viel Speicherplatz belegen. Darum befindet sich eine Vorrichtungs-TPT häufig im Systemspeicher. Die E/A-Vorrichtung kann einen Cache eines Teils der Vorrichtungs-TPT verwalten, um Zugriffsverzögerungen zu verkürzen.
  • Die Verwaltung von virtuellem Speicher im Protected Mode bei der IA-32-Architektur von Intel wird in „80486 Systemsoftware-Entwicklung“ von Klaus-Dieter Thies, Carl Hanser Verlag, München, 1992, beschrieben.
  • Ungeachtet dessen besteht im Stand der Technik nach wie vor Bedarf an der Optimierung der Speichernutzung bei der Datenübertragung und anderen Operationen.
  • Figurenliste
  • Es wird auf die Zeichnungen Bezug genommen, in denen gleiche Bezugszahlen immer entsprechende Teile bezeichnen:
    • 1 veranschaulicht zum Stand der Technik gehörende virtuelle und physikalische Speicheradressen eines Systemspeichers in einem Computersystem.
    • 2 veranschaulicht eine zum Stand der Technik gehörende Systemspeicheradressenumsetzungs- und -schutztabelle für die Umsetzung von virtuell zu physikalisch.
    • 3 veranschaulicht eine zum Stand der Technik gehörende Umsetzungs- und Schutztabelle für eine E/A-Vorrichtung.
    • 4 veranschaulicht eine Ausführungsform einer Rechenumgebung, in der Aspekte der hierin angegebenen Beschreibung verkörpert sind.
    • 5 veranschaulicht eine zum Stand der Technik gehörende Paketarchitektur.
    • 6 veranschaulicht eine Ausführungsform einer virtualisierten Datenstrukturtabelle für eine E/A-Komponente gemäß Aspekten der Beschreibung.
    • 7 veranschaulicht eine Ausführungsform von Abbildungstabellen zum Zugreifen auf die virtualisierte Datenstrukturtabelle von 6.
    • 8a und 8b veranschaulichen Ausführungsformen von Datenstrukturen für die Abbildungstabellen von 6.
    • 8c veranschaulicht eine Ausführungsform einer virtuellen Adresse zur Adressierung der virtualisierten Datenstrukturtabelle von 6.
    • 9 veranschaulicht ein Beispiel von Werten für eine Datenstruktur für die Abbildungstabellen von 6.
    • 10 veranschaulicht eine Ausführungsform von Operationen, die zum Besetzen der virtualisierten Datenstrukturtabelle von 6 und der Abbildungstabellen von 7 ausgeführt werden.
    • 11 ist eine schematische Darstellung einer Ausführungsform von Operationen, die ausgeführt werden, um eine empfangene Adresse zu konvertieren und um Datenstrukturen von der virtualisierten Datenstrukturtabelle von 6 zu erhalten.
    • 12 veranschaulicht eine Ausführungsform von Operationen, die ausgeführt werden, um eine empfangene Adresse zu konvertieren und um Datenstrukturen von der virtualisierten Datenstrukturtabelle von 6 zu erhalten.
    • 13 ist eine detailliertere Veranschaulichung einer Ausführungsform von Operationen, die ausgeführt werden, um eine empfangene RDMA-Adresse zu konvertieren und um Datenstrukturen von der virtualisierten Datenstrukturtabelle von 6 zu erhalten.
    • 14 ist eine weitere detaillierte Veranschaulichung einer Ausführungsform von Operationen, die ausgeführt werden, um eine empfangene RDMA-Adresse zu konvertieren und um Datenstrukturen von der virtualisierten Datenstrukturtabelle von 6 zu erhalten.
    • 15 veranschaulicht eine Architektur, die mit den beschriebenen Ausführungsformen verwendet werden kann.
  • Detaillierte Beschreibung der veranschaulichten Ausführungsformen
  • In der folgenden Beschreibung wird auf die begleitenden Zeichnungen Bezug genommen, die einen Bestandteil hiervon bilden und die verschiedene Ausführungsformen der vorliegenden Offenbarung veranschaulichen. Es versteht sich, daß auch andere Ausführungsformen verwendet werden können und strukturelle und funktionsmäßige Änderungen vorgenommen werden können, ohne daß der Umfang der vorliegenden Beschreibung verlassen wird.
  • 4 veranschaulicht eine Rechenumgebung, in der Aspekte beschriebener Ausführungsformen verkörpert sein können. Ein Computer 102 umfaßt eine oder mehrere Zentraleinheiten (CPU) 104 (von denen nur eine einzige gezeigt ist), einen Speicher 106, einen nicht-flüchtigen Speicher 108, einen Speicher-Controller 109, ein Betriebssystem 110 und einen Netzwerkadapter 112. Eine Anwendung 114 wird in einer CPU 104 ausgeführt, befindet sich im Speicher 106 und kann Pakete von einem räumlich abgesetzten Computer senden und empfangen. Der sich im Speicher 106 befindende Inhalt kann gemäß bekannten Cache-Speicherungstechniken cache-gespeichert werden. Der Computer 102 kann eine beliebige im Stand der Technik bekannte Computervorrichtung umfassen, wie zum Beispiel einen Großrechner, einen Server, einen Personalcomputer, einen Arbeitsplatzrechner, einen Laptop, einen handgehaltenen Computer, Telefoniegeräte, Netzwerkzubehör, Virtualisierungsgeräte, Speicher-Controller usw. Es kann jede CPU 104 und jedes Betriebssystem 110 verwendet werden, das dem Fachmann bekannt ist. Programme und Daten im Speicher 106 können im Rahmen von Speicherverwaltungsoperationen in den Speicher 108 umgelagert werden.
  • Der Speicher-Controller 109 steuert das Lesen und Schreiben von Daten aus dem bzw. in den Speicher 108 gemäß einer Speicherprotokollschicht. Das Speicherprotokoll der Schicht kann ein beliebiges aus einer Anzahl bekannter Speicherprotokolle sein, wie zum Beispiel Redundant Array of Independent Disks (RAID), High Speed Serialized Advanced Technology Attachment (SATA), paralleles Small Computer System Interface (SCSI), serielles Zusatz-SCSI usw. Daten, die in den Speicher 108 geschrieben oder aus dem Speicher 108 gelesen werden, können gemäß bekannten Cache-Speicherungstechniken cache-gespeichert werden. Der Speicher-Controller kann in den CPU-Chipsatz integriert sein, der verschiedene Controller enthalten kann, darunter einen System-Controller, einen Peripherie-Controller, einen Speicher-Controller, einen Hub-Controller, einen E/A-Bus-Controller usw.
  • Der Netzwerkadapter 112 umfaßt eine Netzwerkprotokollschicht 116 zum Senden und Empfangen von Netzwerkpaketen an bzw. von räumlich abgesetzten Geräten über ein Netzwerk 118. Das Netzwerk 118 kann ein Local Area-Netzwerk (LAN), das Internet, ein Wide Area-Netzwerk (WAN), ein Storage Area-Netzwerk (SAN) usw. umfassen. Ausführungsformen können dafür konfiguriert sein, Daten über ein drahtloses Netzwerk oder Verbindung zu übertragen, wie zum Beispiel Wireless LAN, Bluetooth usw. In bestimmten Ausführungsformen können der Netzwerkadapter 112 und verschiedene Protokollschichten das Ethernet-Protokoll über eine nicht-abgeschirmte verdrillte Doppelleitung, das Token-Ring-Protokoll, das Fiber-Channel-Protokoll, das Infiniband usw. oder sonstige im Stand der Technik bekannte Netzwerkkommunikationsprotokolle verwenden. Der Netzwerkadapter-Controller kann in den CPU-Chipsatz integriert sein, der, wie oben angemerkt, verschiedene Controller enthalten kann, einschließlich eines System-Controllers, eines Peripherie-Controllers, eines Speicher-Controllers, eines Hub-Controllers, eines E/A-Bus-Controllers usw.
  • Ein Gerätetreiber 120 wird in einer CPU 104 ausgeführt, befindet sich im Speicher 106 und umfaßt Netzwerkadapter 112-spezifische Befehle zum Kommunizieren mit einem Netzwerk-Controller des Netzwerkadapters 112 und zum Verbinden zwischen dem Betriebssystem 110, Anwendungen 114 und dem Netzwerkadapter 112. Der Netzwerk-Controller kann die Netzwerkprotokollschicht 116 verkörpern und kann weitere Protokollschichten steuern, einschließlich einer Data-Link-Schicht und einer physikalischen Schicht, die Hardware wie zum Beispiel einen Datentransceiver enthält.
  • In bestimmten Ausführungsformen umfaßt der Netzwerk-Controller des Netzwerkadapters 112 eine Transportprotokollschicht 121 sowie die Netzwerkprotokollschicht 116. Zum Beispiel kann der Netzwerk-Controller des Netzwerkadapters 112 eine TCP/IP-Offload-Maschine (TOE) verwenden, in der viele Transportschichtoperationen innerhalb der Hardware oder Firmware des Netzwerkadapters 112, im Gegensatz zu dem Gerätetreiber 120 oder zur Hostsoftware, ausgeführt werden können.
  • Die Transportprotokolloperationen umfassen das Packen von Daten in einem TCP/IP-Paket mit einer Prüfsumme und weiteren Informationen und das Senden der Pakete. Diese Sendeoperationen werden durch einen Agenten ausgeführt, der mit einer TOE, einer Netzwerkschnittstellenkarte oder einem integrierten Schaltkreis, einem Treiber, einem TCP/IP-Stapel, einem Hostprozessor oder einer Kombination dieser Elemente verkörpert sein kann. Die Transportprotokolloperationen umfassen auch das Empfangen eines TCP/IP-Paketes über das Netzwerk und das Entpacken des TCP/IP-Paketes, um auf die Nutzdaten zuzugreifen. Diese Empfangsoperationen werden durch einen Agenten ausgeführt, der wiederum mit einer TOE, einem Treiber, einem Hostprozessor oder einer Kombination dieser Elemente verkörpert sein kann.
  • Die Netzwerkschicht 116 handhabt die Netzwerkkommunikation und übermittelt empfangene TCP/IP-Pakete an die Transportprotokollschicht 121. Die Transportprotokollschicht 121 ist mit dem Gerätetreiber 120 oder dem Betriebssystem 110 oder einer Anwendung 114 verbunden und führt zusätzliche Transportprotokollschichtoperationen aus, wie zum Beispiel das Verarbeiten des Inhalts von Nachrichten, die in den Paketen enthalten sind, die am Netzwerkadapter 112 empfangen werden und in eine Transportschicht eingehüllt sind, wie zum Beispiel TCP, Internet Small Computer System Interface (iSCSI), Fiber-Channel-SCSI, paralleler SCSI-Transport oder ein beliebiges im Stand der Technik bekanntes Transportschichtprotokoll. Die TOE der Transportprotokollschicht 121 kann die Nutzdaten aus dem empfangenen TCP/IP-Paket entpacken und die Daten an den Gerätetreiber 120, eine Anwendung 114 oder das Betriebssystem 110 übermitteln.
  • In bestimmten Ausführungsformen können der Netzwerk-Controller und der Netzwerkadapter 112 des Weiteren eine oder mehrere RDMA-Protokollschichten 122 sowie die Transportprotokollschicht 121 umfassen. Zum Beispiel kann der Netzwerkadapter 112 eine RDMA-Offload-Maschine verwenden, in der RDMA-Schichtoperationen innerhalb der Hardware oder Firmware des Netzwerkadapters 112 - im Gegensatz zum Gerätetreiber 120 oder anderer Hostsoftware - ausgeführt werden.
  • So kann zum Beispiel eine Anwendung 114, die Nachrichten über eine RDMA-Verbindung überträgt, die Nachricht über den Gerätetreiber 120 und die eine oder die mehreren RDMA-Protokollschichten 122 des Netzwerkadapters 112 übertragen. Die Daten der Nachricht können an die Transportprotokollschicht 121 zum Packen in einem TCP/IP-Paket gesendet werden, bevor sie durch die Netzwerkprotokollschicht 116 und weitere Protokollschichten, einschließlich der Data-Link-Schicht und der physikalischen Protokollschicht, über das Netzwerk 118 übertragen werden.
  • Der Speicher 106 enthält des Weiteren Dateiobjekte 124, die auch als Socket-Objekte bezeichnet werden können, die Informationen über einer Verbindung zu einem räumlich abgesetzten Computer über das Netzwerk 118 enthalten. Die Anwendung 114 verwendet die Informationen in dem Dateiobjekt 124 zum Identifizieren der Verbindung. Die Anwendung 114 kann das Dateiobjekt 124 zum Kommunizieren mit einem räumlich abgesetzten System verwenden. Das Dateiobjekt 124 kann Folgendes anzeigen: den lokalen Port oder das Socket, der bzw. das zum Kommunizieren mit einem räumlich abgesetzten System verwendet wird, eine lokale Netzwerk (IP)-Adresse des Computers 102, auf dem die Anwendung 114 ausgeführt wird, wie viele Daten durch die Anwendung 114 gesendet und empfangen wurden, und den räumlich abgesetzten Port und die Netzwerkadresse, zum Beispiel die IP-Adresse, mit der die Anwendung 114 kommuniziert. Kontextinformationen 126 umfassen eine Datenstruktur, die Informationen zum Gerätetreiber 120, Betriebssystem 110 oder einer Anwendung 114 umfaßt und die aufrecht erhalten wird, um Anforderungen zu verwalten, die an den Netzwerkadapter 112 gesandt wurden, wie weiter unten noch beschrieben wird.
  • In der veranschaulichten Ausführungsform bildet die CPU 104, die dafür programmiert ist, durch die Software des Speichers 106, die eines oder mehrere von dem Betriebssystem 110, Anwendungen 114 und Gerätetreibern 120 umfaßt, zu arbeiten, einen Host, der mit dem Netzwerkadapter 112 interagiert. Dementsprechend umfaßt ein Datensende- und -empfangsagent 132 die Transportprotokollschicht 121 und die Netzwerkprotokollschicht 116 der Netzwerkschnittstelle 112. Jedoch kann der Datensende- und -empfangsagent mit einer TOE, einer Netzwerkschnittstellenkarte oder einem integrierten Schaltkreis, einem Treiber, einem TCP/IP-Stapel, einem Hostprozessor oder einer Kombination dieser Elemente verkörpert sein.
  • 5 veranschaulicht ein Format eines Netzwerkpaketes 150, das am Netzwerkadapter 112 empfangen oder durch den Netzwerkadapter 112 gesendet wird. Der Data-Link-Frame 148 ist in einem Format verkörpert, das von der Data-Link-Schicht verstanden wird, wie zum Beispiel 802.11 Ethernet. Details zu diesem Ethernet-Protokoll sind in „IEEE Std. 802.11 “, veröffentlicht 1999-2003, beschrieben. Ein Ethernet-Frame kann zusätzliche Ethernet-Komponenten enthalten, wie zum Beispiel einen Header und einen Fehlerprüfcode (nicht gezeigt). Der Data-Link-Frame 148 umfaßt ein Netzwerkpaket 150, wie zum Beispiel ein IP-Datagramm. Das Netzwerkpaket 150 ist in einem Format verkörpert, das von der Netzwerkprotokollschicht 116 verstanden wird, wie zum Beispiel das IP-Protokoll. Ein Transportpaket 152 ist in dem Netzwerkpaket 150 umfaßt. Das Transportpaket 152 ist für eine Verarbeitung durch die Transportprotokollschicht 121, wie zum Beispiel TCP, geeignet. Das Paket kann auch durch andere Schichten gemäß anderen Protokollen verarbeitet werden, einschließlich des Internet Small Computer System Interface (iSCSI)-Protokolls, Fiber-Channel-SCSI, paralleler SCSI-Transport usw. Das Transportpaket 152 umfaßt Nutzdaten 154 sowie weitere Transportschichtfelder, wie zum Beispiel einen Header und einen Fehlerprüfcode. Die Nutzdaten 152 enthalten den zugrundeliegenden übertragenen Inhalt, wie zum Beispiel Befehle, Status und/oder Daten. Der Treiber 120, das Betriebssystem 110 oder eine Anwendung 114 können eine Schicht, wie zum Beispiel einen SCSI-Treiber oder eine SCSI-Schicht, umfassen, um den Inhalt der Nutzdaten 154 zu verarbeiten und um auf einen Status, Befehle und/oder Daten darin zuzugreifen. Details zum Ethernet-Protokoll sind in „IEEE Std. 802.3“, veröffentlicht am 8. März 2002, beschrieben.
  • Gemäß einem Aspekt der hier angegebenen Beschreibung hat eine E/A-Komponente eine virtualisierte Datenstrukturtabelle, wie zum Beispiel eine Adressenumsetzungs- und - schutztabelle (TPT), die virtuell aneinandergrenzende Datenstrukturen, aber nicht unbedingt physikalisch aneinandergrenzende Datenstrukturen im Systemspeicher aufweist. Wie weiter unten noch eingehender erläutert wird, kann eine solche Anordnung Speicheroperationen in einer Vielzahl verschiedener Anwendungen erleichtern.
  • 6 zeigt ein Beispiel einer virtualisierten TPT-Tabelle 200 mit virtuell aneinandergrenzenden Seiten oder Blöcken 202 aus TPT-Einträgen 204, wobei jeder TPT-Eintrag eine oder mehrere Datenstrukturen enthält. Die TPT-Eintragsblöcke 202 grenzen in einem virtuellen TPT-Adreßraum 206 aneinander, können aber im physikalischen Systemspeicherplatz 208, in dem sich die TPT-Eintragsblöcke 202 befinden, voneinander getrennt, das heißt nicht-aneinandergrenzend, sein. Jedoch können in der veranschaulichten Ausführungsform die TPT-Einträge 204 jedes Blocks 202 aus Einträgen aneinandergrenzend sein, das heißt, aneinandergrenzende Systemspeicheradressen im physikalischen Systemspeicherplatz 208, in dem sich die TPT-Eintragsblöcke 202 befinden, aufweisen.
  • Gemäß einem weiteren Aspekt der hier angegebenen Beschreibung kann auf die TPT 200 in einer virtuell aneinandergrenzenden Weise zugegriffen werden. Der virtuelle Adreßraum für TPT kann je E/A-Vorrichtung eingeteilt sein, und er kann von dem virtuellen Adreßraum, der von den Anwendungen, dem Betriebssystem, den Treibern und weiteren E/A-Vorrichtungen benutzt wird, getrennt sein. In der veranschaulichten Ausführungsform ist die TPT 200 auf einer ersten hierarchischen Ebene in mehrere virtuell aneinandergrenzende Einheiten oder Segmente 210 unterteilt. Jede Einheit oder jedes Segment 210 ist wiederum auf einer zweiten hierarchischen Ebene in mehrere physikalisch aneinandergrenzende Untereinheiten oder Untersegmente 202 unterteilt. Die Untersegmente 202 werden im vorliegenden Text als „Seiten“ oder „Blöcke“ 202 bezeichnet. Jede Seite oder jeder Block 202 ist wiederum auf einer dritten hierarchischen Ebene in mehrere virtuell aneinandergrenzende TPT-Einträge 204 unterteilt. Jeder TPT-Eintrag 204 enthält eine oder mehrere Datenstrukturen, die in einem oder mehreren Speicherbytes gespeichert sind. Es versteht sich, daß die TPT 200 mit einer größeren Anzahl oder einer geringeren Anzahl von hierarchischen Ebenen unterteilt sein kann.
  • In der veranschaulichten Ausführungsform hat jedes der Segmente 210 der TPT 200 die gleiche Größe, hat jede der Seiten 202 der TPT 200 die gleiche Größe und hat jeder der TPT-Einträge 204 die gleiche Größe. Es versteht sich jedoch, daß auch TPT-Segmente von ungleichen Größen, TPT-Seiten von ungleichen Größen und TPT-Einträge von ungleichen Größen benutzt werden können.
  • In der veranschaulichten Ausführungsform kann auf die TPT 200 in einer virtuell aneinandergrenzenden Weise unter Verwendung eines Satzes hierarchischer Datenstrukturtabellen 220, die schematisch in 7 gezeigt sind, zugegriffen werden. Eine Datenstrukturtabelle 222 einer ersten hierarchischen Ebene, im vorliegenden Text als eine Segmentdeskriptortabelle 222 bezeichnet, hat mehrere Segmentdeskriptoreinträge 224a, 224b, ..., 224n. Jeder Segmentdeskriptoreintrag 224a, 224b, ..., 224n umfaßt Datenstrukturen, wovon ein Beispiel in 8a bei 224a gezeigt ist. In diesem Beispiel enthält jeder der Segmentdeskriptoreinträge 224a, 224b, ..., 224n mehrere Datenstrukturen 226a, 226b und 226c, die kennzeichnende Merkmale eines der Segmente 210 der TPT 200 definieren. Genauer gesagt, beschreibt jeder der Segmentdeskriptoreinträge 224a, 224b, ..., 224n eine Datenstrukturtabelle der zweiten hierarchischen Ebene, die im vorliegenden Text als eine Seitendeskriptortabelle bezeichnet wird. Jede Seitendeskriptortabelle ist eine von mehreren Seitendeskriptortabellen 230a, 230b, ..., 230n (7).
  • Jede Seitendeskriptortabelle 230a, 230b, ..., 230n hat mehrere Seitendeskriptoreinträge 232a, 232b, ..., 232n. Jeder Seitendeskriptoreintrag 232a, 232b, ..., 232n enthält Datenstrukturen, wovon ein Beispiel in 8b bei 232a gezeigt ist. In diesem Beispiel enthält jeder der Seitendeskriptoreinträge 232a, 232b, ..., 232n mehrere Datenstrukturen 234a, 234b und 234c, die kennzeichnende Merkmale einer der Seiten oder Blöcke 202 eines Segments 210 der TPT 200 definieren.
  • Wenn in der veranschaulichten Ausführungsform die Anzahl von TPT-Einträgen 204 in der TPT-Tabelle 200 durch die Variable 2S dargestellt wird, so kann zum Beispiel auf die TPT-Einträge 204 in einer virtuell aneinandergrenzenden Weise unter Verwendung einer virtuellen Adresse, die s Adreßbits umfaßt, wie bei 240 in 8c gezeigt, zugegriffen werden. Wenn die Anzahl von Segmenten 210, in welche die TPT-Tabelle 200 unterteilt ist, durch die Variable 2m dargestellt wird, so kann jedes Segment 210 bis zu 2(s-m) Bytes des virtuellen TPT-Speicherplatzes 206 beschreiben.
  • In der veranschaulichten Ausführungsform kann sich die Segmentdeskriptortabelle 222 in einem Speicher befinden, der sich innerhalb der E/A-Vorrichtung befindet. Es kann auch ein mit 242 bezeichneter Satz Bits der virtuellen Adresse 240 benutzt werden, um einen Index zu definieren, der im vorliegenden Text als ein TPT-Segmentdeskriptorindex bezeichnet wird, um einen bestimmten Segmentdeskriptoreintrag 224a, 224b, ..., 224n der Segmentdeskriptortabelle 222 zu identifizieren. In der veranschaulichten Ausführungsform können die m signifikantesten Bits der s Bits der virtuellen TPT-Adresse 240 verwendet werden, um den TPT-Segmentdeskriptorindex zu definieren. Es versteht sich, daß sich die Segmentdeskriptortabelle 222 alternativ ganz oder teilweise auch in einem anderen Speicher befinden kann.
  • Nachdem sie durch den TPT-Segmentdeskriptorindex 242 der virtuellen TPT-Adresse 240 identifiziert wurde, kann die Datenstruktur 226a (8a) des identifizierten Segmentdeskriptoreintrages 224a, 224b, ..., 224n die physikalische Adresse einer der mehreren Seitendeskriptortabellen 230a, 230b, ..., 230n (7) bereitstellen. Eine zweite Datenstruktur 226b des identifizierten Segmentdeskriptoreintrages 224a, 224b, ..., 224n kann spezifizieren, wie groß die Seitendeskriptortabelle der Datenstruktur 226a ist, indem zum Beispiel ein Blockzählwert geliefert wird. Eine dritte Datenstruktur 226c des identifizierten Segmentdeskriptoreintrages 224a, 224b, ..., 224n kann zusätzliche Informationen bezüglich des Segments 210 bereitstellen, wie zum Beispiel, ob das bestimmte Segment 210 gerade benutzt wird oder gültig ist, wie in der Typ-Tabelle von 9 dargestellt.
  • Es kann auch ein mit 244 bezeichneter zweiter Satz Bits der virtuellen Adresse 240 benutzt werden, um einen zweiten Index zu definieren, der im vorliegenden Text als ein TPT-Seitendeskriptorindex bezeichnet wird, um einen bestimmten Seitendeskriptoreintrag 232a, 232b, ..., 232n der Seitendeskriptortabelle 232a, 232b, ..., 232n zu identifizieren, die durch die physikalische Adresse der Datenstruktur 226a (8a) des Segmentdeskriptoreintrages 224a, 224b, ..., 224n identifiziert wird, der durch den TPT-Segmentdeskriptorindex 242 der virtuellen TPT-Adresse 240 identifiziert wird. In der veranschaulichten Ausführungsform können die nächsten s-m-p signifikantesten Bits der s Bits der virtuellen TPT-Adresse 240 verwendet werden, um den TPT-Segmentdeskriptorindex 244 zu definieren.
  • Nachdem sie durch die physikalische Adresse identifiziert wurde, die in der Datenstruktur 226a des TPT-Segmentdeskriptortabelleneintrages enthalten ist, der durch den TPT-Segmentdeskriptorindex 242 der virtuellen TPT-Adresse 240 und den TPT-Seitendeskriptorindex 244 der virtuellen TPT-Adresse 240 identifiziert wird, kann die Datenstruktur 234a (8b) des identifizierten Seitendeskriptoreintrages 232a, 232b, ..., 232n die physikalische Adresse einer der mehreren TPT-Seiten oder -Blöcke 202 (7) bereitstellen. Eine zweite Datenstruktur 226b des identifizierten Seitendeskriptoreintrages 232a, 232b, ..., 232n kann reserviert sein. Eine dritte Datenstruktur 234c des identifizierten Seitendeskriptoreintrages 232a, 232b, ..., 232n kann zusätzliche Informationen bezüglich des TPT-Blocks oder der TPT-Seite 202 bereitstellen, wie zum Beispiel, ob der bestimmte TPT-Block oder die bestimmte TPT-Seite 202 gerade verwendet wird oder gültig ist, wie in der Typ-Tabelle von 9 dargestellt ist.
  • Es kann auch ein mit 246 bezeichneter dritter Satz Bits der virtuellen Adresse 240 benutzt werden, um einen dritten Index zu definieren, der im vorliegenden Text als ein TPT-Block-Byte-Offset bezeichnet wird, um einen bestimmten TPT-Eintrag 204 der TPT-Seite oder des TPT-Blocks 202 zu identifizieren, die bzw. der durch die physikalische Adresse der Datenstruktur 234a (8b) des Seitendeskriptoreintrages 232a, 232b, ..., 232n identifiziert wird, der durch den TPT-Seitendeskriptorindex 244 der virtuellen TPT-Adresse 240 identifiziert wird. In der veranschaulichten Ausführungsform können die p geringst-signifikanten Bits der s Bits der virtuellen TPT-Adresse 240 verwendet werden, um den TPT-Block-Byte-Versatz 246 zu definieren, um ein bestimmtes Byte von 2P Bytes in einer Seite oder einem Block 202 aus Bytes zu identifizieren.
  • 10 zeigt ein Beispiel von Operationen eines Gerätetreibers 120 für eine E/A-Vorrichtung, wie zum Beispiel den Adapter 112, zum Initialisieren einer Datenstrukturtabelle, wie zum Beispiel der TPT 200. Der Gerätetreiber 120 weist Speicherblöcke zu (Block 300), um die TPT 200 aufzubauen. Die Größe und Anzahl der zugewiesenen Speicherblöcke sowie die Größe und Anzahl der Segmente 110, in welche die Datenstrukturtabelle unterteilt wird, hängen vom Betriebssystem 110, dem Computersystem 102 und den Erfordernissen der E/A-Komponente ab.
  • Nachdem sie zugewiesen und fixiert wurden, können die Speicherblöcke mit Datenstruktureinträgen, wie zum Beispiel den TPT-Einträgen 204, ausgefüllt werden (Block 302). Wie in 11 gezeigt, kann jeder TPT-Eintrag 204 der TPT 200 eine Datenstruktur 352 umfassen, die Pufferschutzdaten für einen bestimmten Puffer umfassen, und eine Datenstruktur 354 umfassen, welche die physikalische Adresse des bestimmten Puffers enthält. In der veranschaulichten Ausführungsform können die Bytes der TPT-Einträge 204 innerhalb jedes zugewiesenen Speicherblocks physikalisch aneinandergrenzen, obgleich die TPT-Blöcke oder -Seiten 202 der TPT-Einträge 204 der TPT 200 getrennt oder nicht-aneinandergrenzend sein können. In einer Ausführungsform befinden sich die TPT-Blöcke oder -Seiten 202 der TPT-Einträge 204 der TPT 200 jeweils an 2P physikalischen Adreßgrenzen, wobei jeder TPT-Block oder jede TPT-Seite 202 2P aneinandergrenzende Bytes umfaßt. Des Weiteren ist in einer Ausführungsform, in welcher der Systemspeicher zum Beispiel 64-Bit-Adressen hat, jeder TPT-Eintrag 8-Byte-justiert. Es versteht sich, daß auch andere Grenzen und andere Adressierungsschemas verwendet werden können.
  • Es können auch die Datenstrukturtabelleuntersegmentabbildungstabellen, wie zum Beispiel die Seitendeskriptortabellen 230a, 230b, ..., 230n (7), mit Datenstruktureinträgen, wie zum Beispiel den Seitendeskriptoreinträgen 232a, 232b, ..., 232n, ausgefüllt werden (Block 304, 10). Wie zuvor erwähnt, kann jeder Seitendeskriptoreintrag eine Datenstruktur wie zum Beispiel die Datenstruktur 234a (8b), welche die physikalische Adresse einer TPT-Seite oder eines TPR-Blocks 202 aus TPT-Einträgen 204 der TPT 200 enthält, sowie eine Datenstruktur wie zum Beispiel die Datenstruktur 234c, die Typ-Informationen für die Seite oder den Block 202 enthält, enthalten.
  • Die Seitendeskriptortabellen 230a, 230b, ..., 230n (7) können sich entweder im Speicher, wie zum Beispiel dem Systemspeicher 106, oder in der E/A-Komponente befinden. Wenn sich die Seitendeskriptortabellen 230a, 230b, ..., 230n in der E/A-Komponente befinden, kann die E/A-Adresse der Seitendeskriptortabellen 230a, 230b, ..., 230n durch den Gerätetreiber 120 abgebildet werden, und dann können die Seitendeskriptortabellen 230a, 230b, ..., 230n durch den Gerätetreiber 120 initialisiert werden. Wenn sich die Seitendeskriptortabellen 230a, 230b, ..., 230n im Systemspeicher 106 befinden, können sie zum Beispiel unter Verwendung physikalischer Systemadressen adressiert werden.
  • In einer alternativen Ausführungsform können die Seitendeskriptortabellen 230a, 230b, ..., 230n in der TPT 200 selbst in einer virtuell zusammenhängenden Region der TPT 200 gespeichert werden. In dieser Ausführungsform kann die virtuelle TPT-Basisadresse der Seitendeskriptortabellen 230a, 230b, ..., 230n durch den Gerätetreiber 120 initialisiert und an die E/A-Komponente, wie zum Beispiel den Adapter 112, übermittelt werden. Die E/A-Komponente kann dann diese Basisadresse zum Zugreifen auf die Seitendeskriptortabellen 230a, 230b, ..., 230n verwenden.
  • Es kann auch die Datenstrukturtabellensegmentabbildungstabelle, wie zum Beispiel die Segmentdeskriptortabelle 222 (7), mit Datenstruktureinträgen, wie zum Beispiel den Segmentdeskriptoreinträgen 224a, 224b, ..., 224n, ausgefüllt werden (Block 306, 10). Wie zuvor erwähnt, kann jeder Segmentdeskriptoreintrag eine Datenstruktur wie zum Beispiel die Datenstruktur 226a (8a), welche die physikalische Adresse einer der Seitendeskriptortabellen 230a, 230b, ..., 230n enthält, enthalten. Jeder Segmentdeskriptoreintrag kann des Weiteren eine Datenstruktur 226b, welche die Größe der Seitendeskriptortabelle beschreibt, sowie eine Datenstruktur wie zum Beispiel die Datenstruktur 224c, die Typ-Informationen für die Seitendeskriptortabelle enthält, umfassen.
  • Die E/A-Vorrichtung kann die virtuelle Adresse einer Datenstrukturtabelle benutzen, um auf die verschiedenen Datenstrukturen in der Datenstrukturtabelle zuzugreifen, um verschiedenen Funktionen wie zum Beispiel Adressenumsetzung und Schutzüberprüfungen auszuführen. Zum Beispiel kann die E/A-Komponente die virtuelle TPT-Adresse 240 von 8c benutzen, um die physikalische Adresse des TPT-Eintrages 204 für einen bestimmten Puffer zu erhalten, in dem die Datenstrukturen jenes TPT-Eintrages 204 die physikalische Adresse und die Schutzprüfungsinformationen für jenen Puffer enthalten.
  • 12 zeigt ein Beispiel von Operationen einer E/A-Vorrichtung, die eine Adresse 362 (11) für eine Speicheroperation empfängt (Block 402). Die empfangene Adresse wird zu einer virtuellen Adresse 364 (11) eines Eintrages einer Tabelle aus virtuell aneinandergrenzenden Datenstrukturen, wie zum Beispiel eines Eintrages 204 der TPT 200, konvertiert (Block 404). Die E/A-Vorrichtung konvertiert (Block 406) die virtuelle Adresse 364 zu einer physikalischen Adresse des Datenstruktureintrages. Unter Verwendung der physikalischen Adresse können die Daten der Datenstruktur erhalten werden (Block 408), um die angeforderte Speicheroperation auszuführen (Block 410).
  • 13 zeigt ein detaillierteres Beispiel einer E/A-Vorrichtung, die eine Adresse für eine Speicheroperation empfängt. In diesem Beispiel, empfängt (Block 602) ein RDMA-befähigter Netzwerkadapter 112 eine RDMA-Operation mit einer Speicherzieladresse in Form eines Pufferidentifikators und eines Versatzes (virtuelle Adresse oder Versatz auf Null-Basis) innerhalb jenes Puffers. Ein Teil des empfangenen Pufferidentifikators wird zu einem TPT-Index konvertiert (Block 604), der in der veranschaulichten Ausführungsform eine virtuelle TPT-Adresse, wie zum Beispiel die virtuelle TPT-Adresse 240 von FIG. 8c, ist. Ein Teil des TPT-Index‘ wird zu einem Segmenttabellenindex, wie zum Beispiel dem TPT-Segmentdeskriptorindex 242 von FIG. 8c, konvertiert (Block 605). Der Adapter 112 erhält (Block 606) die physikalische Adresse einer Seitentabelle, wie zum Beispiel einer der Seitendeskriptortabellen 230a, 230b, ..., 230n (7), unter Verwendung des oben erzeugten Segmenttabellenindex‘, um einen bestimmten Eintrag einer Segmenttabelle, wie zum Beispiel einer Segmentdeskriptortabelle 220, zu identifizieren und die Datenstrukturen 226a-226c jenes identifizierten Segmenttabelleneintrages 224a, 224b, ..., 224n zu lesen. Ein Teil des TPT-Index‘ wird zu einem Seitentabellenindex, wie zum Beispiel dem TPT-Seitendeskriptorindex 244 von FIG. 8c, konvertiert (Block 608). Der Adapter 112 erhält (Block 610) die physikalische Adresse einer Seite oder eines Blocks aus TPT-Einträgen, wie zum Beispiel eines der TPT-Blöcke 202, unter Verwendung des oben erzeugten Seitentabellenindex‘, um einen bestimmten Eintrag einer Seitentabelle, wie zum Beispiel einer Seitendeskriptortabelle 230a, zu identifizieren, und liest die Datenstrukturen 234a, 234c jenes identifizierten Seitendeskriptortabelleneintrages 232a, 232b, ..., 232n. Ein Teil des TPT-Index‘ wird zu einem TPT-Blockindex oder -versatz, wie zum Beispiel dem TPT-Block-Byte-Versatz 246 von FIG. 8c, konvertiert (Block 612). Der TPT-Blockindex weist auf den TPT-Eintrag, der dem Pufferidentifikator entspricht. Der Adapter 112 erhält (Block 614) die Schutzdaten eines Puffers unter Verwendung des oben erzeugten TPT-Blockindex‘ oder -versatzes, um einen bestimmten Eintrag 204 des identifizierten TPT-Blocks 202 zu identifizieren, und liest die Datenstrukturen 352, 354 jenes identifizierten TPT-Eintrages 204. Die Schutzprüfung kann auf der Grundlage der erhaltenen Schutzinformationen ausgeführt werden (Block 616). Wenn die Schutzprüfung nicht bestanden wird, so wird die Operation abgebrochen, und die verbliebenen Prozesse (Blöcke 618, 620) werden nicht ausgeführt. Wenn die Schutzprüfung bestanden wird, so können die eine oder die mehreren physikalischen Adressen des Puffers auf der Grundlage von Informationen an der indexierten physikalischen Adresse des TPT-Eintrages erhalten werden (Block 618), einschließlich des Versatzes, der Größe der Speicheroperation und der Adressenumsetzungsinformationen. Die angeforderte RDMA-Speicheroperation kann dann an dem identifizierten Puffer unter Verwendung der erhaltenen physikalischen Adresse(n) des Puffers ausgeführt werden (Block 620).
  • 14 zeigt ein weiteres detailliertes Beispiel einer E/A-Komponente, die eine Adresse für eine Speicheroperation empfängt. In diesem Beispiel sind die Operationen der Blöcke 652-666 ähnlich denen der Operationen der Blöcke 602-616 von 13. So kann in der Operation von Block 666 eine Schutzprüfung auf der Grundlage der erhaltenen Schutzinformationen ausgeführt werden. Wenn die Schutzprüfung nicht bestanden wird, so wird die Operation abgebrochen, und die verbliebenen Prozesse (Blöcke 680-698) werden nicht ausgeführt. Wenn jedoch die Schutzprüfung (Block 666) bestanden wird, so wird eine weitere Operationsebene bereitgestellt, auf der mehrere physikalische Pufferadressen erhalten werden können. Genauer gesagt, können mehrere TPT-Indizes oder virtuelle Adressen für Adressenumsetzungseinträge zum Beispiel auf der Grundlage des Versatzes, der Größe der Speicheroperation und der Adressenumsetzungsinformationen erhalten werden (Block 680). Die Indizes von TPT-Einträgen können an der indexierten physikalischen Adresse der TPT erhalten werden, an der die physikalischen Schutzdaten erhalten wurden. Die Informationen über die Indizes können als ein TPT-Basisindex und die Anzahl von TPT-Indizes, die dem Puffer entsprechen, gespeichert werden.
  • Es wird eine Feststellung getroffen (Block 682), ob alle entsprechenden Adressenumsetzungseinträge gelesen wurden. Wenn nicht, so wird der TPT-Index (oder die virtuelle TPT-Adresse) des nächsten Adressenumsetzungseintrages erhalten (Block 684). Ein Teil des TPT-Index‘ wird zu einem Segmenttabellenindex, wie zum Beispiel dem TPT-Segmentdeskriptorindex 242 von FIG. 8c, konvertiert (Block 686).
  • Der Adapter 112 erhält (Block 688) die physikalische Adresse einer Seitentabelle, wie zum Beispiel einer der Seitendeskriptortabellen 230a, 230b, ..., 230n (7), unter Verwendung des oben erzeugten Segmenttabellenindex‘, um einen bestimmten Eintrag einer Segmenttabelle, wie zum Beispiel einer Segmentdeskriptortabelle 220, zu identifizieren, und die Datenstrukturen 226a-226c jenes identifizierten Segmenttabelleneintrages 224a, 224b, ..., 224n zu lesen.
  • Ein Teil des TPT-Index‘ wird zu einem Seitentabellenindex, wie zum Beispiel dem TPT-Seitendeskriptorindex 244 von FIG. 8c, konvertiert (Block 690). Der Adapter 112 erhält (Block 692) die physikalische Adresse einer Seite oder eines Blocks von TPT-Einträgen, wie zum Beispiel eines der TPT-Blöcke 202, unter Verwendung des oben erzeugten Seitentabellenindex‘, um einen bestimmten Eintrag einer Seitentabelle, wie zum Beispiel einer Seitendeskriptortabelle 230a, zu identifizieren, und liest die Datenstrukturen 234a, 234c jenes identifizierten Seitendeskriptortabelleneintrages 232a, 232b, ..., 232n.
  • Ein Teil des TPT-Index‘ wird zu einem TPT-Blockindex oder -versatz, wie zum Beispiel dem TPT-Block-Byte-Versatz 246 von FIG. 8c, konvertiert (Block 694). Der TPT-Blockindex weist zu dem TPT-Eintrag, der dem Adressenumsetzungseintrag entspricht. Der Adapter 112 erhält (Block 696) die physikalische Pufferadresse unter Verwendung des oben erzeugten TPT-Blockindex‘ oder -versatzes, um einen bestimmten Eintrag 204 des identifizierten TPT-Blocks 202 zu identifizieren, und liest die Datenstrukturen 352, 354 jenes identifizierten TPT-Eintrages 204. Auf diese Weise wird ein erhaltener TPT-Index in die physikalische Adresse eines Puffers umgesetzt.
  • Es wird erneut eine Feststellung getroffen (Block 682), ob alle entsprechenden Adressenumsetzungseinträge gelesen wurden. Wenn nicht, so werden die Operationen der Blöcke 684-696 wiederholt. Nachdem alle entsprechenden Adressenumsetzungseinträge gelesen wurden, kann die Speicheroperation unter Verwendung aller physikalischer Pufferadressen, die aus den erhaltenen TPT-Indizes oder virtuellen Adressen übersetzt wurden, ausgeführt werden (Block 698).
  • Weitere Ausführungsform-Details
  • Die beschrieben Techniken zum Verwalten von Speicher können als ein Verfahren, eine Vorrichtung oder ein Herstellungsprodukt unter Verwendung standardmäßiger Programmierungs- und/oder Konstruktionstechniken zum Herstellen von Software, Firmware, Hardware oder Kombinationen davon verkörpert sein. Der Begriff „Herstellungsprodukt“ bezieht sich im Sinne des vorliegenden Textes auf Code oder Logik, der bzw. die in Hardware-Logik (zum Beispiel einem integrierten Schaltkreis-Chip, einem Programmable Gate Array (PGA), in Anwendungsspezifischen Integrierten Schaltkreisen (ASIC) usw.) oder einem computerlesbaren Medium, wie zum Beispiel einem Magnetspeichermedium (zum Beispiel Festplattenlaufwerke, Floppy-Disks, Band usw.), einem optischen Speicher (CD-ROMs, optische Disks usw.), flüchtigen und nicht-flüchtigen Speicherkomponenten (zum Beispiel EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Firmware, programmierbarer Logik usw.) verkörpert ist. Ein Prozessor greift auf den Code in dem computerlesbaren Medium zu und führt ihn aus. Auf den Code, in dem bevorzugte Ausführungsformen verkörpert sind, kann des Weiteren durch ein Übertragungsmedium oder von einem Dateiserver aus über ein Netzwerk zugegriffen werden. In solchen Fällen kann das Herstellungsprodukt, in dem der Code verkörpert ist, ein Übertragungsmedium umfassen, wie zum Beispiel eine Netzwerkübertragungsleitung, ein drahtloses Übertragungsmedium, Signalausbreitung durch den Raum, Funkwellen, Infrarotsignale usw. Somit kann das „Herstellungsprodukt“ das Medium umfassen, in dem der Code verkörpert ist. Außerdem kann das „Herstellungsprodukt“ eine Kombination von Hardware- und Software-Komponenten umfassen, in der der Code verkörpert ist, verarbeitet und ausgeführt wird. Natürlich ist dem Fachmann klar, daß zahlreiche Modifikationen an dieser Konfiguration vorgenommen werden können, ohne den Geltungsbereich der vorliegenden Offenbarung zu verlassen, und daß das Herstellungsprodukt jegliche einschlägig bekannten Informationsträgermedien umfassen kann.
  • In den beschriebenen Ausführungsformen wurden bestimmte Operationen so beschrieben, daß sie durch das Betriebssystem 110, den System-Host 130, den Gerätetreiber 120 oder die Netzwerkschnittstelle 112 ausgeführt werden. In alternativen Ausführungsformen können Operationen, die in der Beschreibung durch eine von diesen ausgeführt werden, auch durch das Betriebssystem 110 und/oder den Gerätetreiber 120 und/oder die Netzwerkschnittstelle 112 ausgeführt werden. Zum Beispiel können Speicheroperationen, die in der Beschreibung als durch den Treiber ausgeführt beschrieben wurden, auch durch den Host ausgeführt werden.
  • In den beschriebenen Ausführungsformen waren eine Transportprotokollschicht 121 und eine oder mehrere RDMA-Protokollschichten 132 in der Hardware des Netzwerkadapters 112 verkörpert. In alternativen Ausführungsformen können eine oder mehrere dieser Protokollschichten in dem Gerätetreiber oder dem Host-Speicher 106 verkörpert sein.
  • In bestimmten Ausführungsformen können die Gerätetreiber- und Netzwerkadapterausführungsformen in einem Computersystem enthalten sein, das einen Speicher-Controller wie zum Beispiel eine SCSI, Integrated Drive Electronics (IDE), Redundant Array of Independent Disk (RAID) usw., einen Controller, der den Zugriff auf eine nicht-flüchtige Speichervorrichtung steuert, wie zum Beispiel ein Magnetdisk-Laufwerk, Bandmedien, optische Disks usw., verwaltet. In alternativen Ausführungsformen können die Netzwerkadapterausführungsformen in einem System enthalten sein, das keinen Speicher-Controller enthält, wie zum Beispiel bestimmte Knoten und Vermittlungen.
  • In bestimmten Ausführungsformen können die Gerätetreiber- und Netzwerkadapterausführungsformen in einem Computersystem verkörpert sein, das einen Video-Controller enthält, um Informationen für eine Wiedergabe auf einem Monitor zu rendern, der mit dem Computersystem verbunden ist, das den Gerätetreiber und den Netzwerkadapter enthält, wie zum Beispiel ein Computersystem, das einen Schreibtischrechner, einen Arbeitsplatzrechner, einen Server, einen Großrechner, einen Laptop, einen handgehaltenen Computer usw. umfaßt. Alternativ können die Netzwerkadapter- und Gerätetreiberausführungsformen in einer Computervorrichtung verkörpert sein, die keinen Video-Controller enthält, wie zum Beispiel eine Vermittlung, ein Router usw.
  • In bestimmten Ausführungsformen kann der Netzwerkadapter dafür konfiguriert sein, Daten über ein Kabel zu übertragen, das an einen Port des Netzwerkadapters angeschlossen ist. Alternativ können die Netzwerkadapterausführungsformen dafür konfiguriert sein, Daten über ein drahtloses Netzwerk oder eine drahtlose Verbindung zu übertragen, wie zum Beispiel ein Wireless LAN, Bluetooth usw.
  • Die veranschaulichte Logik der 10-14 zeigt das Eintreten bestimmter Ereignisse in einer bestimmten Reihenfolge. In alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge ausgeführt, modifiziert oder weggelassen werden. Des Weiteren können Operationen zu der oben beschrieben Logik hinzugefügt werden und trotzdem noch den beschrieben Ausführungsformen entsprechen. Des Weiteren können Operationen, die im vorliegenden Text beschrieben sind, nacheinander ausgeführt werden, oder bestimmte Operationen können parallel abgearbeitet werden. Wieder andere Operationen können durch eine einzelne Verarbeitungseinheit oder durch verteilte Verarbeitungseinheiten ausgeführt werden.
  • 15 veranschaulicht eine Ausführungsform einer Computerarchitektur 700 der Netzwerkelemente, wie zum Beispiel die Hosts und Speicherkomponenten, die in 4 gezeigt sind. Die Architektur 700 kann einen Prozessor 702 (zum Beispiel einen Mikroprozessor), einen Speicher 704 (zum Beispiel einen flüchtigen Speicher) und einen Speicher 706 (zum Beispiel einen nicht-flüchtigen Speicher, wie zum Beispiel Magnetdisk-Laufwerke, optische Disk-Laufwerke, ein Bandlaufwerk usw.) enthalten. Der Prozessor 702 kann zum Beispiel auf einer Hauptplatine installiert sein. Der Speicher 706 kann einen internen Speicherbaustein oder einen Zusatzspeicher oder einen über ein Netzwerk zugänglichen Speicher umfassen. Programme in dem Speicher 706 werden in einschlägig bekannter Weise in den Speicher 704 geladen und durch den Prozessor 702 verarbeitet. Die Architektur enthält des Weiteren einen Netzwerkadapter 708, um eine Kommunikation mit einem Netzwerk wie zum Beispiel einem Ethernet, einer Fiber Channel Arbitrated Loop usw. zu ermöglichen. Des Weiteren kann die Architektur in bestimmten Ausführungsformen einen Video-Controller 709 enthalten, um Informationen auf einem Anzeigemonitor wiederzugeben, wobei der Video-Controller 709 auf einer Videokarte verkörpert sein kann oder in integrierten Schaltkreis-Komponenten, die auf der Hauptplatine montiert sind, integriert sein kann. Wie besprochen, können bestimmte der Netzwerkkomponenten mehrere Netzwerkkarten oder Controller aufweisen. Ein Eingabegerät 710 wird dafür verwendet, Benutzereingaben an den Prozessor 702 zu liefern und es kann eine Tastatur, eine Maus, ein Grafiktablett, ein Mikrofon, einen berührungsempfindlicher Bildschirm oder sonstige weitere Aktivierungs- oder Eingabemechanismen umfassen, die dem Fachmann bekannt sind. Eine Ausgabevorrichtung 712 ist in der Lage, Informationen, die vom Prozessor 702 oder einer anderen Komponente kommen, wiederzugeben, wie zum Beispiel ein Anzeigemonitor, ein Drucker, ein Speicher usw.
  • Der Netzwerkadapter 708 kann auf einer Erweiterungskarte, wie zum Beispiel einer Peripheral Component Interconnect (PCI)-Karte, einer PCI-express- oder einer sonstigen E/A-Erweiterungskarte, die mit einer Hauptplatine verbunden ist, oder auf integrierten Schaltkreis-komponenten, die auf der Hauptplatine montiert sind, montiert sein. Details zur PCI-Architektur sind in „PCI Local Bus, Rev. 2.3“, veröffentlicht durch die PCI-SIG, beschrieben. Details zur Fiber-Channel-Architektur sind in der technischen Spezifikation „Fiber Channel Framing and Signaling Interface“, Dokument Nr. ISO/IEC AWI 14165-25, beschrieben. Details zum TCP-Protokoll sind in „Internet Engineering Task Force (IETF) Request for Comments (RFC) 793“, veröffentlicht im September 1981, beschrieben. Details zum IP-Protokoll sind in „Internet Engineering Task Force Request for Comments (RFC) 791“, veröffentlicht im September 1981, beschrieben; und Details zum RDMA-Protokoll sind in der technischen Spezifikation „Architectural Specification for RDMA over TCP/IP“, Version 1.0 (Oktober 2003), beschrieben.
  • Die obige Beschreibung verschiedener Ausführungsformen dient dem Zweck der Veranschaulichung und Beschreibung. Sie soll weder erschöpfend sein, noch soll sie eine Beschränkung auf die konkret offenbarte Form darstellen. Vor dem Hintergrund der obigen Lehren sind viele Modifikationen und Änderungen möglich.

Claims (39)

  1. Verfahren, das Folgendes umfasst: Empfangen (652) einer Adresse für eine Speicheroperation; Konvertieren (654) der empfangenen Adresse zu einer ersten virtuellen Adresse eines ersten Eintrages einer Umsetzungs- und Schutztabelle aus virtuell aneinandergrenzenden Datenstrukturen, wobei der erste Eintrag eine erste Datenstruktur aufweist, die Schutzdaten umfasst; Konvertieren der ersten virtuellen Adresse zu einer ersten physikalischen Adresse des ersten Datenstrukturtabelleneintrages; Erhalten (664) der ersten Datenstruktur an der ersten physikalischen Adresse; Ausführen der Speicheroperation unter Verwendung der ersten Datenstruktur des ersten Eintrages der Umsetzungs- und Schutztabelle, wobei das Ausführen eine Schutzüberprüfung (666) unter Verwendung der Schutzdaten umfasst, die aus der ersten Datenstruktur erhalten wurden; Erhalten (680) einer zweiten virtuellen Adresse eines zweiten Eintrages der Umsetzungs- und Schutztabelle auf der Grundlage von Informationen an der ersten physikalischen Adresse, wobei der zweite Eintrag eine zweite Datenstruktur aufweist, die eine physikalische Adresse eines Puffers umfasst; Konvertieren der zweiten virtuellen Adresse in eine zweite physikalische Adresse des zweiten Datenstrukturtabelleneintrages; Erhalten (696) der zweiten Datenstruktur an der zweiten physikalischen Adresse; und Ausführen (698) der Speicheroperation unter Verwendung der zweiten Datenstruktur des zweiten Eintrages der Umsetzungs- und Schutztabelle, wobei das Ausführen (698) der Speicheroperation ein Übertragen von Daten in den / aus dem Puffer an der physikalischen Adresse umfasst, die aus der zweiten Datenstruktur erhalten wurde.
  2. Verfahren nach Anspruch 1, wobei die zweite Datenstruktur mehrere physikalische Adressen eines Puffers umfasst und das Ausführen der Speicheroperation ein Übertragen von Daten zu den / aus den physikalischen Adressen des Puffers umfasst.
  3. Verfahren nach Anspruch 1, wobei die Speicheroperationsadresse einen Pufferidentifikator und zumindest eines von einer virtuellen Adresse und einem virtuellen Versatz innerhalb eines Puffers umfasst.
  4. Verfahren nach Anspruch 1, wobei die Datenstrukturtabelle in mehrere Segmente unterteilt ist und jedes Segment in mehrere Untersegmente unterteilt ist und jedes Untersegment in mehrere aneinandergrenzende Datenstruktureinträge unterteilt ist und wobei die erste virtuelle Adresse mehrere Indexbits enthält, die einen Eintrag einer Tabelle aus aneinandergrenzenden Segmentdeskriptoren identifizieren, wobei jeder Segmentdeskriptor eine physikalische Adresse einer Tabelle aus aneinandergrenzenden Untersegmentdeskriptoren enthält, wobei jeder Untersegmentdeskriptor eine physikalische Adresse eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen enthält.
  5. Verfahren nach Anspruch 4, wobei die erste virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits umfasst, die einen Eintrag der Tabelle aus Untersegmentdeskriptoren identifizieren.
  6. Verfahren nach Anspruch 5, wobei die erste virtuelle Adresse des Weiteren mehrere Datenstrukturtabellenindexbits umfasst, die einen Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren.
  7. Verfahren nach Anspruch 6, wobei das Empfangen (652) ein Empfangen einer Zieladresse für eine Remote Direct Memory Access (RDMA)-Speicheroperation umfasst und das Konvertieren der empfangenen Adresse ein Konvertieren (655) eines Teils der RDMA-Zieladresse zu Segmentdeskriptortabellenindexbits, die zu einem Segmentdeskriptortabelleneintrag weisen, umfasst.
  8. Verfahren nach Anspruch 7, wobei das Konvertieren der ersten virtuellen Adresse ein Erhalten (656) einer physikalischen Adresse einer Untersegmentdeskriptortabelle an dem Segmentdeskriptortabelleneintrag, auf den die Segmentdeskriptortabellenindexbits weisen, umfasst.
  9. Verfahren nach Anspruch 8, wobei das Konvertieren der empfangenen Adresse ein Konvertieren (658) eines Teils der RDMA-Zieladresse zu Untersegmentdeskriptortabellenindexbits, die auf einen Untersegmentdeskriptortabelleneintrag weisen, umfasst; und das Konvertieren der ersten virtuellen Adresse ein Erhalten (664) der ersten physikalischen Adresse des ersten Datenstrukturtabelleneintrages an dem Untersegmentdeskriptortabelleneintrag der Untersegmentdeskriptortabelle an der erhaltenen physikalischen Adresse der Untersegmentdeskriptortabelle, auf den die Untersegmentdeskriptortabellenindexbits weisen, umfasst.
  10. Verfahren nach Anspruch 9, wobei das Konvertieren der empfangenen Adresse ein Konvertieren (662) eines Teils der RDMA-Zieladresse zu Datenstrukturtabellenindexbits, die auf einen Datenstrukturtabelleneintrag eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen weisen, umfasst.
  11. Verfahren nach Anspruch 6, wobei der identifizierte Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen eine Datenstruktur enthält, die mehrere Indexbits der zweiten virtuellen Adresse umfasst, die einen Eintrag der Tabelle aus aneinandergrenzenden Segmentdeskriptoren identifizieren.
  12. Verfahren nach Anspruch 11, wobei die zweite virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits enthält, die einen Eintrag einer Tabelle aus Untersegmentdeskriptoren identifizieren.
  13. Verfahren nach Anspruch 12, wobei die zweite virtuelle Adresse des Weiteren mehrere Datenstrukturtabellenindexbits umfasst, die einen Datenstruktureintrag eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren, der mehrere physikalische Adressen eines Puffers umfasst.
  14. System zur Verwendung mit einem Netzwerk, umfassend: wenigstens einen Systemspeicher, der ein Betriebssystem umfasst; eine Hauptplatine; einen Prozessor, der auf der Hauptplatine montiert und mit dem Speicher gekoppelt ist; eine Erweiterungskarte, die mit der Hauptplatine gekoppelt ist; einen Netzwerkadapter, der auf der Erweiterungskarte montiert ist; und einen Gerätetreiber, der durch den Prozessor in dem Systemspeicher für den Netzwerkadapter ausgeführt werden kann, wobei der Gerätetreiber eingerichtet ist, in dem Systemspeicher eine Umsetzungs- und Schutztabelle (200) aus virtuell aneinandergrenzenden Datenstrukturen zu speichern; und wobei der Netzwerkadapter eingerichtet ist: eine Adresse (362) für eine Speicheroperation zu empfangen; die empfangene Adresse (362) zu einer ersten virtuellen Adresse (364) eines ersten Eintrages (204) der Umsetzungs- und Schutztabelle (200) aus virtuell aneinandergrenzenden Datenstrukturen zu konvertieren, wobei der erste Eintrag (204) eine erste Datenstruktur aufweist, die Schutzdaten (352) umfasst; die erste virtuelle Adresse (364) zu einer ersten physikalischer Adresse des ersten Datenstrukturtabelleneintrages (204) zu konvertieren; die erste Datenstruktur an der ersten physikalischen Adresse zu erhalten; die Speicheroperation unter Verwendung der ersten Datenstruktur des ersten Eintrages (204) der Umsetzungs- und Schutztabelle (200) auszuführen, wobei das Ausführen eine Schutzüberprüfung unter Verwendung der Schutzdaten umfasst, die aus der ersten Datenstruktur erhalten wurden; eine zweite virtuelle Adresse eines zweiten Eintrages der Umsetzungs- und Schutztabelle (200) auf der Grundlage von Informationen an der ersten physikalischen Adresse zu erhalten, wobei der zweite Eintrag eine zweite Datenstruktur aufweist, die eine physikalische Adresse eines Puffers umfasst; die zweite virtuelle Adresse in eine zweite physikalische Adresse des zweiten Datenstrukturtabelleneintrages zu konvertieren; die zweite Datenstruktur an der zweiten physikalischen Adresse zu erhalten; und die Speicheroperation unter Verwendung der zweiten Datenstruktur des zweiten Eintrages der Umsetzungs- und Schutztabelle (200) auszuführen, wobei das Ausführen der Speicheroperation ein Übertragen von Daten in den / aus dem Puffer an der physikalischen Adresse umfasst, die aus der zweiten Datenstruktur erhalten wurde.
  15. System nach Anspruch 14, wobei der Systemspeicher einen Puffer umfasst und die zweite Datenstruktur mehrere physikalische Adressen eines Puffers umfasst und das Ausführen der Speicheroperation ein Übertragen von Daten zu den / aus den physikalischen Adressen des Puffers umfasst.
  16. System nach Anspruch 14, wobei die Adresse (362) einen Pufferidentifikator und zumindest eines von einer virtuellen Adresse und einem virtuellen Versatz in einem Puffers umfasst.
  17. System nach Anspruch 14, wobei die Datenstrukturtabelle (200) in mehrere Segmente unterteilt ist und jedes Segment in mehrere Untersegmente unterteilt ist und jedes Untersegment in mehrere aneinandergrenzende Datenstruktureinträge unterteilt ist; wobei der Treiber eingerichtet ist, in dem Systemspeicher eine Tabelle aus aneinandergrenzenden Untersegmentdeskriptoren zu speichern, wobei jeder Untersegmentdeskriptor eine physikalische Adresse eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen umfasst, und in dem Adapter eine Tabelle aus aneinandergrenzenden Segmentdeskriptoren zu speichern, wobei jeder Segmentdeskriptor eine physikalische Adresse einer Tabelle aus aneinandergrenzenden Untersegmentdeskriptoren umfasst und wobei die erste virtuelle Adresse (364) mehrere Indexbits enthält, die einen Eintrag der Tabelle aus aneinandergrenzenden Segmentdeskriptoren identifizieren, wobei jeder Segmentdeskriptor eine physikalische Adresse einer Tabelle aus aneinandergrenzenden Untersegmentdeskriptoren umfasst.
  18. System nach Anspruch 17, wobei die erste virtuelle Adresse (364) des Weiteren mehrere Untersegmentdeskriptortabellenindexbits enthält, die einen Eintrag der Tabelle aus Untersegmentdeskriptoren identifizieren.
  19. System nach Anspruch 18, wobei die erste virtuelle Adresse (364) des Weiteren mehrere Datenstrukturtabellenindexbits umfasst, die einen Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren.
  20. System nach Anspruch 19, wobei das Empfangen ein Empfangen einer Zieladresse für eine Remote Direct Memory Access (RDMA)-Speicheroperation umfasst; wobei das Konvertieren der empfangenen Adresse (362) ein Konvertieren eines Teils der RDMA-Zieladresse zu Segmentdeskriptortabellenindexbits, die auf einen Segmentdeskriptortabelleneintrag weisen, umfasst.
  21. System nach Anspruch 20, wobei das Konvertieren der ersten virtuellen Adresse (364) ein Erhalten einer physikalischen Adresse einer Untersegmentsdeskriptortabelle an dem Segmentdeskriptortabelleneintrag, auf den die Segmentdeskriptortabellenindexbits weisen, umfasst.
  22. System nach Anspruch 21, wobei das Konvertieren der empfangenen Adresse (362) ein Konvertieren eines Teils der RDMA-Zieladresse zu Untersegmentdeskriptortabellenindexbits, die auf einen Untersegmentsdeskriptortabelleneintrag weisen, umfasst; und das Konvertieren der ersten virtuellen Adresse (364) ein Erhalten der ersten physikalischen Adresse des ersten Datenstrukturtabelleneintrages an dem Untersegmentdeskriptortabelleneintrag der Untersegmentdeskriptortabelle an der erhaltenen physikalischen Adresse der Untersegmentsdeskriptortabelle, auf den die Untersegmentdeskriptortabellenindexbits weisen, umfasst.
  23. System nach Anspruch 22, wobei das Konvertieren der empfangenen Adresse (362) ein Konvertieren eines Teils der RDMA-Zieladresse zu Datenstrukturtabellenindexbits, die auf einen Datenstrukturtabelleneintrag eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen weisen, umfasst.
  24. System nach Anspruch 19, wobei der identifizierte Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen eine Datenstruktur umfasst, die mehrere Indexbits der zweiten virtuellen Adresse umfasst die einen Eintrag der Tabelle aus aneinandergrenzenden Segmentdeskriptoren identifizieren.
  25. System nach Anspruch 24, wobei die zweite virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits enthält, die einen Eintrag einer Tabelle aus Untersegmentdeskriptoren identifizieren.
  26. System nach Anspruch 25, wobei die zweite virtuelle Adresse des Weiteren mehrere Datenstrukturtabellenindexbits enthält, die einen Datenstruktureintrag eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren, der mehrere physikalische Adressen eines Puffers umfasst.
  27. Netzwerkadapterteilsystem zur Verwendung mit einem Computersystem, das einen Systemspeicher enthält, umfassend: einen Gerätetreiber, der eingerichtet ist, in dem Systemspeicher eine Umsetzungs- und Schutztabelle aus virtuell aneinandergrenzenden Datenstrukturen zu speichern; und einen Netzwerkadapter, der eingerichtet ist: eine Adresse für eine Speicheroperation zu empfangen; die empfangene Adresse zu einer ersten virtuellen Adresse eines ersten Eintrages der Umsetzungs- und Schutztabelle aus virtuell aneinandergrenzenden Datenstrukturen zu konvertieren, wobei der erste Eintrag eine erste Datenstruktur aufweist, die Schutzdaten umfasst; die erste virtuelle Adresse zu einer ersten physikalischen Adresse des ersten Datenstrukturtabelleneintrages zu konvertieren; die erste Datenstruktur an der ersten physikalischen Adresse zu erhalten; die Speicheroperation unter Verwendung der ersten Datenstruktur des ersten Eintrages der Umsetzungs- und Schutztabelle auszufürhen, wobei das Ausführen eine Schutzüberprüfung unter Verwendung der Schutzdaten umfasst, die aus der ersten Datenstruktur erhalten wurden; eine zweite virtuelle Adresse eines zweiten Eintrages der Umsetzungs- und Schutztabelle auf der Grundlage von Informationen an der ersten physikalischen Adresse zu erhalten, wobei der zweite Eintrag eine zweite Datenstruktur aufweist, die eine physikalische Adresse eines Puffers umfasst; die zweite virtuelle Adresse in eine zweite physikalische Adresse des zweiten Datenstrukturtabelleneintrages zu konvertieren; die zweite Datenstruktur an der zweiten physikalischen Adresse zu erhalten; und die Speicheroperation unter Verwendung der zweiten Datenstruktur des zweiten Eintrages der Umsetzungs- und Schutztabelle auszuführen, wobei das Ausführen der Speicheroperation ein Übertragen von Daten in den / aus dem Puffer an der physikalischen Adresse umfasst, die aus der zweiten Datenstruktur erhalten wurde.
  28. Teilsystem nach Anspruch 27, wobei der Systemspeicher einen Puffer umfasst und die zweite Datenstruktur mehrere physikalische Adressen eines Puffers umfasst und das Ausführen der Speicheroperation ein Übertragen von Daten zu den / aus den physikalischen Adressen des Puffers umfasst.
  29. Teilsystem nach Anspruch 27, wobei die Adresse einen Pufferidentifikator und zumindest eines von einer virtuellen Adresse und einem virtuellen Versatz innerhalb eines Puffers umfasst.
  30. Teilsystem nach Anspruch 27, wobei die Datenstrukturtabelle in mehrere Segmente unterteilt ist und jedes Segment in mehrere Untersegmente unterteilt ist und jedes Untersegment in mehrere aneinandergrenzende Datenstruktureinträge unterteilt ist; wobei der Gerätetreiber eingerichtet ist, in dem Systemspeicher eine Tabelle aus aneinandergrenzenden Untersegmentdeskriptoren zu speichern, wobei jeder Untersegmentdeskriptor eine physikalische Adresse eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen umfasst, und wobei der Treiber dafür geeignet ist, in dem Adapter eine Tabelle aus aneinandergrenzenden Segmentdeskriptoren zu speichern, wobei jeder Segmentdeskriptor eine physikalische Adresse einer Tabelle aus aneinandergrenzenden Untersegmentdeskriptoren umfasst und wobei die erste virtuelle Adresse mehrere Indexbits umfasst, die einen Eintrag der Tabelle aus aneinandergrenzenden Segmentdeskriptoren identifizieren, wobei jeder Segmentdeskriptor eine physikalische Adresse einer Tabelle aus aneinandergrenzenden Untersegmentdeskriptoren umfasst.
  31. Teilsystem nach Anspruch 30, wobei die erste virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits umfasst, die einen Eintrag der Tabelle aus Untersegmentdeskriptoren identifizieren.
  32. Teilsystem nach Anspruch 31, wobei die erste virtuelle Adresse des Weiteren mehrere Datenstrukturtabellenindexbits umfasst, die einen Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren.
  33. Teilsystem nach Anspruch 32, wobei das Empfangen ein Empfangen einer Zieladresse für eine Remote Direct Memory Access (RDMA)-Speicheroperation enthält; wobei das Konvertieren der empfangenen Adresse ein Konvertieren eines Teils der RDMA-Zieladresse zu Segmentdeskriptortabellenindexbits, die auf einen Segmentdeskriptortabelleneintrag weisen, umfasst.
  34. Teilsystem nach Anspruch 33, wobei das Konvertieren der ersten virtuellen Adresse ein Erhalten einer physikalischen Adresse einer Untersegmentsdeskriptortabelle an dem Segmentdeskriptortabelleneintrag, auf den die Segmentdeskriptortabellenindexbits weisen, umfasst.
  35. Teilsystem nach Anspruch 34, wobei das Konvertieren der empfangenen Adresse ein Konvertieren eines Teils der RDMA-Zieladresse zu Untersegmentdeskriptortabellenindexbits, die auf einen Untersegmentsdeskriptortabelleneintrag weisen, umfasst; und das Konvertieren der ersten virtuellen Adresse ein Erhalten der ersten physikalischen Adresse des ersten Datenstrukturtabelleneintrages an dem Untersegmentdeskriptortabelleneintrag der Untersegmentdeskriptortabelle an der erhaltenen physikalischen Adresse einer Untersegmentsdeskriptortabelle, auf den die Untersegmentdeskriptortabellenindexbits weisen, umfasst.
  36. Teilsystem nach Anspruch 35, wobei das Konvertieren der empfangenen Adresse ein Konvertieren eines Teils der RDMA-Zieladresse zu Datenstrukturtabellenindexbits, die auf einen Datenstrukturtabelleneintrag eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen weisen, umfasst.
  37. Teilsystem nach Anspruch 32, wobei der identifizierte Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen eine Datenstruktur umfasst, die mehrere Indexbits der zweiten virtuellen Adresse umfasst, die einen Eintrag der Tabelle aus aneinandergrenzenden Segmentdeskriptoren identifizieren.
  38. Teilsystem nach Anspruch 37, wobei die zweite virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits umfasst, die einen Eintrag einer Tabelle aus Untersegmentdeskriptoren identifizieren.
  39. Teilsystem nach Anspruch 38, wobei die zweite virtuelle Adresse des Weiteren mehrere Datenstrukturtabellenindexbits umfasst, die einen Datenstruktureintrag eines Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren, der mehrere physikalische Adressen eines Puffers umfasst.
DE112005001430.4T 2004-06-30 2005-06-24 Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle Expired - Fee Related DE112005001430B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/882,564 US8504795B2 (en) 2004-06-30 2004-06-30 Method, system, and program for utilizing a virtualized data structure table
US10/882,564 2004-06-30
PCT/US2005/022361 WO2006012257A2 (en) 2004-06-30 2005-06-24 Method, system, and program for utilizing a virtualized data structure table

Publications (2)

Publication Number Publication Date
DE112005001430T5 DE112005001430T5 (de) 2007-05-16
DE112005001430B4 true DE112005001430B4 (de) 2018-09-06

Family

ID=35115844

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005001430.4T Expired - Fee Related DE112005001430B4 (de) 2004-06-30 2005-06-24 Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle

Country Status (4)

Country Link
US (1) US8504795B2 (de)
DE (1) DE112005001430B4 (de)
TW (1) TWI272485B (de)
WO (1) WO2006012257A2 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496690B2 (en) * 2003-10-09 2009-02-24 Intel Corporation Method, system, and program for managing memory for data transmission through a network
US7480298B2 (en) * 2004-08-30 2009-01-20 International Business Machines Corporation Lazy deregistration of user virtual machine to adapter protocol virtual offsets
US8364849B2 (en) 2004-08-30 2013-01-29 International Business Machines Corporation Snapshot interface operations
US7430615B2 (en) * 2004-08-30 2008-09-30 International Business Machines Corporation RDMA server (OSI) global TCE tables
US7580406B2 (en) * 2004-12-31 2009-08-25 Intel Corporation Remote direct memory access segment generation by a network controller
US7370174B2 (en) * 2005-01-05 2008-05-06 Intel Corporation Method, system, and program for addressing pages of memory by an I/O device
US7581021B2 (en) * 2005-04-07 2009-08-25 International Business Machines Corporation System and method for providing multiple virtual host channel adapters using virtual switches
US7853957B2 (en) * 2005-04-15 2010-12-14 Intel Corporation Doorbell mechanism using protection domains
US7565463B2 (en) * 2005-04-22 2009-07-21 Sun Microsystems, Inc. Scalable routing and addressing
US7613864B2 (en) * 2005-04-22 2009-11-03 Sun Microsystems, Inc. Device sharing
US7478178B2 (en) * 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
US7293129B2 (en) * 2005-04-22 2007-11-06 Sun Microsystems, Inc. Flexible routing and addressing
US8190914B2 (en) 2006-02-28 2012-05-29 Red Hat, Inc. Method and system for designating and handling confidential memory allocations
US20070208760A1 (en) * 2006-03-06 2007-09-06 Reuter James M Data-state-describing data structures
US20070208790A1 (en) * 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US7710968B2 (en) * 2006-05-11 2010-05-04 Intel Corporation Techniques to generate network protocol units
US20080235409A1 (en) * 2006-05-31 2008-09-25 Alexey Vitalievich Ryzhykh Multiple Phase Buffer Enlargement for Rdma Data Transfer Related Applications
DE102008022831B4 (de) * 2008-05-08 2015-09-10 Fujitsu Technology Solutions Intellectual Property Gmbh Arbeitsverfahren für ein Speichersubsystem und Vorrichtungen zur Durchführung des Arbeitsverfahrens
US20100106871A1 (en) * 2008-10-10 2010-04-29 Daniel David A Native I/O system architecture virtualization solutions for blade servers
US8131765B2 (en) * 2008-10-14 2012-03-06 Lenovo (Singapore) Pte. Ltd. Apparatus, system and method for caching writes by multiple clients to a virtualized common disk image
JP5647252B2 (ja) * 2009-09-25 2014-12-24 カムレッシュ ガンディー メモリ管理装置及び仮想メモリ領域を提供する方法
US8880843B2 (en) 2010-02-10 2014-11-04 International Business Machines Corporation Providing redundancy in a virtualized storage system for a computer system
US8862859B2 (en) 2010-05-07 2014-10-14 International Business Machines Corporation Efficient support of multiple page size segments
US8745307B2 (en) 2010-05-13 2014-06-03 International Business Machines Corporation Multiple page size segment encoding
KR101724590B1 (ko) * 2011-01-31 2017-04-11 삼성전자주식회사 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법
US8793429B1 (en) * 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US10064138B2 (en) 2014-12-23 2018-08-28 Microsoft Technology Licensing, Llc Energy efficient wireless data transfer
US10324838B2 (en) 2017-10-12 2019-06-18 International Business Machines Corporation Virtually addressable hardware global kernel segment table
CN111328257B (zh) * 2020-03-11 2022-03-22 广东省电信规划设计院有限公司 一种上下位机的数据同步方法及装置
CN114026548A (zh) 2020-05-28 2022-02-08 华为技术有限公司 直接内存访问的方法和系统
CN113568940B (zh) * 2021-08-04 2024-05-21 北京百度网讯科技有限公司 数据查询的方法、装置、设备以及存储介质
US12259824B2 (en) * 2022-10-26 2025-03-25 Red Hat, Inc. Assigning input/output virtual addresses using a pre-defined randomness algorithm

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105113A (en) * 1997-08-21 2000-08-15 Silicon Graphics, Inc. System and method for maintaining translation look-aside buffer (TLB) consistency
US6163834A (en) * 1998-01-07 2000-12-19 Tandem Computers Incorporated Two level address translation and memory registration system and method
US7350028B2 (en) * 1999-05-21 2008-03-25 Intel Corporation Use of a translation cacheable flag for physical address translation and memory protection in a host
US6970992B2 (en) * 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US6519685B1 (en) * 1999-12-22 2003-02-11 Intel Corporation Cache states for multiprocessor cache coherency protocols
US6718453B2 (en) * 2001-03-26 2004-04-06 Intel Corporation Apparatus and method for a channel adapter non-contiguous translation protection table
US7363389B2 (en) * 2001-03-29 2008-04-22 Intel Corporation Apparatus and method for enhanced channel adapter performance through implementation of a completion queue engine and address translation engine
US6725289B1 (en) * 2002-04-17 2004-04-20 Vmware, Inc. Transparent address remapping for high-speed I/O
US7496690B2 (en) * 2003-10-09 2009-02-24 Intel Corporation Method, system, and program for managing memory for data transmission through a network
US20050144402A1 (en) * 2003-12-29 2005-06-30 Beverly Harlan T. Method, system, and program for managing virtual memory
US7562158B2 (en) * 2004-03-24 2009-07-14 Intel Corporation Message context based TCP transmission
US20060004983A1 (en) * 2004-06-30 2006-01-05 Tsao Gary Y Method, system, and program for managing memory options for devices
US20060004941A1 (en) * 2004-06-30 2006-01-05 Shah Hemal V Method, system, and program for accessesing a virtualized data structure table in cache
US20060136697A1 (en) * 2004-12-16 2006-06-22 Tsao Gary Y Method, system, and program for updating a cached data structure table
US7370174B2 (en) * 2005-01-05 2008-05-06 Intel Corporation Method, system, and program for addressing pages of memory by an I/O device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Klaus-Dieter, Thies, 80486 Systemsoftware-Entwicklung, Carl Hanser Verlag München, Wien, 1992, S.123-126 *

Also Published As

Publication number Publication date
DE112005001430T5 (de) 2007-05-16
TWI272485B (en) 2007-02-01
US8504795B2 (en) 2013-08-06
WO2006012257A3 (en) 2006-04-27
US20060004795A1 (en) 2006-01-05
TW200606640A (en) 2006-02-16
WO2006012257A2 (en) 2006-02-02

Similar Documents

Publication Publication Date Title
DE112005001430B4 (de) Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle
US12413539B2 (en) Switch-managed resource allocation and software execution
US7370174B2 (en) Method, system, and program for addressing pages of memory by an I/O device
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE112004002375B4 (de) Verfahren, System und Programm zum Verwalten von Datenleseoperationen
US20060004941A1 (en) Method, system, and program for accessesing a virtualized data structure table in cache
DE60311462T2 (de) Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102012208803B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102018006756A1 (de) Beschleuniger-Fabric
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE112006001642T5 (de) Adressfensterunterstützung für Direktspeicherzugriffsumsetzung
DE112014006490B4 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
US20050144402A1 (en) Method, system, and program for managing virtual memory
DE69524916T2 (de) Verfahren und Vorrichtung zur Datenübertragung im Bereich der Rechnersysteme
EP4421631A1 (de) Datenmigrationsverfahren und -vorrichtung sowie elektronische vorrichtung

Legal Events

Date Code Title Description
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee