DE112005001430B4 - Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle - Google Patents
Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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.
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 in1 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 von6 . -
8a und8b veranschaulichen Ausführungsformen von Datenstrukturen für die Abbildungstabellen von6 . -
8c veranschaulicht eine Ausführungsform einer virtuellen Adresse zur Adressierung der virtualisierten Datenstrukturtabelle von6 . -
9 veranschaulicht ein Beispiel von Werten für eine Datenstruktur für die Abbildungstabellen von6 . -
10 veranschaulicht eine Ausführungsform von Operationen, die zum Besetzen der virtualisierten Datenstrukturtabelle von6 und der Abbildungstabellen von7 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 von6 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 von6 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 von6 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 von6 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 Computer102 umfaßt eine oder mehrere Zentraleinheiten (CPU)104 (von denen nur eine einzige gezeigt ist), einen Speicher106 , einen nicht-flüchtigen Speicher108 , einen Speicher-Controller109 , ein Betriebssystem110 und einen Netzwerkadapter112 . Eine Anwendung114 wird in einer CPU104 ausgeführt, befindet sich im Speicher106 und kann Pakete von einem räumlich abgesetzten Computer senden und empfangen. Der sich im Speicher106 befindende Inhalt kann gemäß bekannten Cache-Speicherungstechniken cache-gespeichert werden. Der Computer102 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 CPU104 und jedes Betriebssystem110 verwendet werden, das dem Fachmann bekannt ist. Programme und Daten im Speicher106 können im Rahmen von Speicherverwaltungsoperationen in den Speicher108 umgelagert werden. - Der Speicher-Controller
109 steuert das Lesen und Schreiben von Daten aus dem bzw. in den Speicher108 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 Speicher108 geschrieben oder aus dem Speicher108 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 Netzwerkprotokollschicht116 zum Senden und Empfangen von Netzwerkpaketen an bzw. von räumlich abgesetzten Geräten über ein Netzwerk 118. Das Netzwerk118 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 Netzwerkadapter112 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 CPU104 ausgeführt, befindet sich im Speicher106 und umfaßt Netzwerkadapter 112-spezifische Befehle zum Kommunizieren mit einem Netzwerk-Controller des Netzwerkadapters112 und zum Verbinden zwischen dem Betriebssystem 110, Anwendungen114 und dem Netzwerkadapter112 . Der Netzwerk-Controller kann die Netzwerkprotokollschicht116 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 Transportprotokollschicht121 sowie die Netzwerkprotokollschicht116 . Zum Beispiel kann der Netzwerk-Controller des Netzwerkadapters112 eine TCP/IP-Offload-Maschine (TOE) verwenden, in der viele Transportschichtoperationen innerhalb der Hardware oder Firmware des Netzwerkadapters112 , im Gegensatz zu dem Gerätetreiber120 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 Transportprotokollschicht121 . Die Transportprotokollschicht121 ist mit dem Gerätetreiber120 oder dem Betriebssystem110 oder einer Anwendung114 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 Transportprotokollschicht121 kann die Nutzdaten aus dem empfangenen TCP/IP-Paket entpacken und die Daten an den Gerätetreiber120 , eine Anwendung114 oder das Betriebssystem110 übermitteln. - In bestimmten Ausführungsformen können der Netzwerk-Controller und der Netzwerkadapter
112 des Weiteren eine oder mehrere RDMA-Protokollschichten122 sowie die Transportprotokollschicht121 umfassen. Zum Beispiel kann der Netzwerkadapter112 eine RDMA-Offload-Maschine verwenden, in der RDMA-Schichtoperationen innerhalb der Hardware oder Firmware des Netzwerkadapters112 - im Gegensatz zum Gerätetreiber120 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ätetreiber120 und die eine oder die mehreren RDMA-Protokollschichten122 des Netzwerkadapters112 übertragen. Die Daten der Nachricht können an die Transportprotokollschicht121 zum Packen in einem TCP/IP-Paket gesendet werden, bevor sie durch die Netzwerkprotokollschicht116 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 Dateiobjekte124 , die auch als Socket-Objekte bezeichnet werden können, die Informationen über einer Verbindung zu einem räumlich abgesetzten Computer über das Netzwerk118 enthalten. Die Anwendung114 verwendet die Informationen in dem Dateiobjekt124 zum Identifizieren der Verbindung. Die Anwendung114 kann das Dateiobjekt124 zum Kommunizieren mit einem räumlich abgesetzten System verwenden. Das Dateiobjekt124 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 Computers102 , auf dem die Anwendung114 ausgeführt wird, wie viele Daten durch die Anwendung114 gesendet und empfangen wurden, und den räumlich abgesetzten Port und die Netzwerkadresse, zum Beispiel die IP-Adresse, mit der die Anwendung114 kommuniziert. Kontextinformationen126 umfassen eine Datenstruktur, die Informationen zum Gerätetreiber120 , Betriebssystem110 oder einer Anwendung114 umfaßt und die aufrecht erhalten wird, um Anforderungen zu verwalten, die an den Netzwerkadapter112 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 Speichers106 , die eines oder mehrere von dem Betriebssystem110 , Anwendungen114 und Gerätetreibern120 umfaßt, zu arbeiten, einen Host, der mit dem Netzwerkadapter112 interagiert. Dementsprechend umfaßt ein Datensende- und -empfangsagent 132 die Transportprotokollschicht121 und die Netzwerkprotokollschicht116 der Netzwerkschnittstelle112 . 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 Netzwerkpaketes150 , das am Netzwerkadapter 112 empfangen oder durch den Netzwerkadapter112 gesendet wird. Der Data-Link-Frame148 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-Frame148 umfaßt ein Netzwerkpaket150 , wie zum Beispiel ein IP-Datagramm. Das Netzwerkpaket150 ist in einem Format verkörpert, das von der Netzwerkprotokollschicht116 verstanden wird, wie zum Beispiel das IP-Protokoll. Ein Transportpaket152 ist in dem Netzwerkpaket150 umfaßt. Das Transportpaket152 ist für eine Verarbeitung durch die Transportprotokollschicht121 , 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 Transportpaket152 umfaßt Nutzdaten154 sowie weitere Transportschichtfelder, wie zum Beispiel einen Header und einen Fehlerprüfcode. Die Nutzdaten152 enthalten den zugrundeliegenden übertragenen Inhalt, wie zum Beispiel Befehle, Status und/oder Daten. Der Treiber120 , das Betriebssystem110 oder eine Anwendung114 können eine Schicht, wie zum Beispiel einen SCSI-Treiber oder eine SCSI-Schicht, umfassen, um den Inhalt der Nutzdaten154 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ärz2002 , 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öcken202 aus TPT-Einträgen204 , wobei jeder TPT-Eintrag eine oder mehrere Datenstrukturen enthält. Die TPT-Eintragsblöcke202 grenzen in einem virtuellen TPT-Adreßraum206 aneinander, können aber im physikalischen Systemspeicherplatz208 , in dem sich die TPT-Eintragsblöcke202 befinden, voneinander getrennt, das heißt nicht-aneinandergrenzend, sein. Jedoch können in der veranschaulichten Ausführungsform die TPT-Einträge204 jedes Blocks202 aus Einträgen aneinandergrenzend sein, das heißt, aneinandergrenzende Systemspeicheradressen im physikalischen Systemspeicherplatz208 , in dem sich die TPT-Eintragsblöcke202 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 TPT200 auf einer ersten hierarchischen Ebene in mehrere virtuell aneinandergrenzende Einheiten oder Segmente 210 unterteilt. Jede Einheit oder jedes Segment210 ist wiederum auf einer zweiten hierarchischen Ebene in mehrere physikalisch aneinandergrenzende Untereinheiten oder Untersegmente 202 unterteilt. Die Untersegmente202 werden im vorliegenden Text als „Seiten“ oder „Blöcke“ 202 bezeichnet. Jede Seite oder jeder Block202 ist wiederum auf einer dritten hierarchischen Ebene in mehrere virtuell aneinandergrenzende TPT-Einträge204 unterteilt. Jeder TPT-Eintrag 204 enthält eine oder mehrere Datenstrukturen, die in einem oder mehreren Speicherbytes gespeichert sind. Es versteht sich, daß die TPT200 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 TPT200 die gleiche Größe, hat jede der Seiten202 der TPT200 die gleiche Größe und hat jeder der TPT-Einträge204 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 in7 gezeigt sind, zugegriffen werden. Eine Datenstrukturtabelle 222 einer ersten hierarchischen Ebene, im vorliegenden Text als eine Segmentdeskriptortabelle 222 bezeichnet, hat mehrere Segmentdeskriptoreinträge224a ,224b , ...,224n . Jeder Segmentdeskriptoreintrag224a ,224b , ...,224n umfaßt Datenstrukturen, wovon ein Beispiel in8a bei224a gezeigt ist. In diesem Beispiel enthält jeder der Segmentdeskriptoreinträge224a ,224b , ...,224n mehrere Datenstrukturen226a ,226b und226c , die kennzeichnende Merkmale eines der Segmente210 der TPT200 definieren. Genauer gesagt, beschreibt jeder der Segmentdeskriptoreinträge224a ,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 in8b bei232a gezeigt ist. In diesem Beispiel enthält jeder der Seitendeskriptoreinträge 232a, 232b, ..., 232n mehrere Datenstrukturen234a ,234b und234c , die kennzeichnende Merkmale einer der Seiten oder Blöcke202 eines Segments210 der TPT200 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äge204 in einer virtuell aneinandergrenzenden Weise unter Verwendung einer virtuellen Adresse, die s Adreßbits umfaßt, wie bei 240 in8c gezeigt, zugegriffen werden. Wenn die Anzahl von Segmenten210 , in welche die TPT-Tabelle 200 unterteilt ist, durch die Variable 2m dargestellt wird, so kann jedes Segment210 bis zu 2(s-m) Bytes des virtuellen TPT-Speicherplatzes206 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 Segmentdeskriptoreintrag224a ,224b , ...,224n der Segmentdeskriptortabelle 222 zu identifizieren. In der veranschaulichten Ausführungsform können die m signifikantesten Bits der s Bits der virtuellen TPT-Adresse240 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 Datenstruktur226a (8a ) des identifizierten Segmentdeskriptoreintrages224a ,224b , ...,224n die physikalische Adresse einer der mehreren Seitendeskriptortabellen 230a, 230b, ..., 230n (7 ) bereitstellen. Eine zweite Datenstruktur226b des identifizierten Segmentdeskriptoreintrages224a ,224b , ...,224n kann spezifizieren, wie groß die Seitendeskriptortabelle der Datenstruktur226a ist, indem zum Beispiel ein Blockzählwert geliefert wird. Eine dritte Datenstruktur226c des identifizierten Segmentdeskriptoreintrages 224a, 224b, ..., 224n kann zusätzliche Informationen bezüglich des Segments210 bereitstellen, wie zum Beispiel, ob das bestimmte Segment210 gerade benutzt wird oder gültig ist, wie in der Typ-Tabelle von9 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 Seitendeskriptoreintrag232a ,232b , ...,232n der Seitendeskriptortabelle 232a, 232b, ..., 232n zu identifizieren, die durch die physikalische Adresse der Datenstruktur226a (8a ) des Segmentdeskriptoreintrages224a ,224b , ..., 224n identifiziert wird, der durch den TPT-Segmentdeskriptorindex242 der virtuellen TPT-Adresse240 identifiziert wird. In der veranschaulichten Ausführungsform können die nächsten s-m-p signifikantesten Bits der s Bits der virtuellen TPT-Adresse240 verwendet werden, um den TPT-Segmentdeskriptorindex244 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-Adresse240 und den TPT-Seitendeskriptorindex244 der virtuellen TPT-Adresse240 identifiziert wird, kann die Datenstruktur234a (8b ) des identifizierten Seitendeskriptoreintrages232a ,232b , ...,232n die physikalische Adresse einer der mehreren TPT-Seiten oder -Blöcke 202 (7 ) bereitstellen. Eine zweite Datenstruktur226b des identifizierten Seitendeskriptoreintrages232a ,232b , ...,232n kann reserviert sein. Eine dritte Datenstruktur234c des identifizierten Seitendeskriptoreintrages232a ,232b , ...,232n kann zusätzliche Informationen bezüglich des TPT-Blocks oder der TPT-Seite202 bereitstellen, wie zum Beispiel, ob der bestimmte TPT-Block oder die bestimmte TPT-Seite202 gerade verwendet wird oder gültig ist, wie in der Typ-Tabelle von9 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-Eintrag204 der TPT-Seite oder des TPT-Blocks202 zu identifizieren, die bzw. der durch die physikalische Adresse der Datenstruktur 234a (8b ) des Seitendeskriptoreintrages232a ,232b , ...,232n identifiziert wird, der durch den TPT-Seitendeskriptorindex244 der virtuellen TPT-Adresse240 identifiziert wird. In der veranschaulichten Ausführungsform können die p geringst-signifikanten Bits der s Bits der virtuellen TPT-Adresse240 verwendet werden, um den TPT-Block-Byte-Versatz246 zu definieren, um ein bestimmtes Byte von 2P Bytes in einer Seite oder einem Block202 aus Bytes zu identifizieren. -
10 zeigt ein Beispiel von Operationen eines Gerätetreibers120 für eine E/A-Vorrichtung, wie zum Beispiel den Adapter112 , zum Initialisieren einer Datenstrukturtabelle, wie zum Beispiel der TPT200 . Der Gerätetreiber120 weist Speicherblöcke zu (Block300 ), um die TPT200 aufzubauen. Die Größe und Anzahl der zugewiesenen Speicherblöcke sowie die Größe und Anzahl der Segmente110 , in welche die Datenstrukturtabelle unterteilt wird, hängen vom Betriebssystem110 , dem Computersystem102 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 (Block302 ). Wie in11 gezeigt, kann jeder TPT-Eintrag204 der TPT200 eine Datenstruktur352 umfassen, die Pufferschutzdaten für einen bestimmten Puffer umfassen, und eine Datenstruktur354 umfassen, welche die physikalische Adresse des bestimmten Puffers enthält. In der veranschaulichten Ausführungsform können die Bytes der TPT-Einträge204 innerhalb jedes zugewiesenen Speicherblocks physikalisch aneinandergrenzen, obgleich die TPT-Blöcke oder -Seiten 202 der TPT-Einträge204 der TPT200 getrennt oder nicht-aneinandergrenzend sein können. In einer Ausführungsform befinden sich die TPT-Blöcke oder -Seiten 202 der TPT-Einträge204 der TPT200 jeweils an 2P physikalischen Adreßgrenzen, wobei jeder TPT-Block oder jede TPT-Seite202 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ägen232a ,232b , ...,232n , ausgefüllt werden (Block304 ,10 ). Wie zuvor erwähnt, kann jeder Seitendeskriptoreintrag eine Datenstruktur wie zum Beispiel die Datenstruktur234a (8b ), welche die physikalische Adresse einer TPT-Seite oder eines TPR-Blocks202 aus TPT-Einträgen204 der TPT200 enthält, sowie eine Datenstruktur wie zum Beispiel die Datenstruktur234c , 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 Systemspeicher106 , 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ätetreiber120 initialisiert werden. Wenn sich die Seitendeskriptortabellen 230a, 230b, ..., 230n im Systemspeicher106 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 TPT200 gespeichert werden. In dieser Ausführungsform kann die virtuelle TPT-Basisadresse der Seitendeskriptortabellen 230a, 230b, ..., 230n durch den Gerätetreiber120 initialisiert und an die E/A-Komponente, wie zum Beispiel den Adapter112 , ü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ägen224a ,224b , ...,224n , ausgefüllt werden (Block306 ,10 ). Wie zuvor erwähnt, kann jeder Segmentdeskriptoreintrag eine Datenstruktur wie zum Beispiel die Datenstruktur226a (8a ), welche die physikalische Adresse einer der Seitendeskriptortabellen 230a, 230b, ..., 230n enthält, enthalten. Jeder Segmentdeskriptoreintrag kann des Weiteren eine Datenstruktur226b , welche die Größe der Seitendeskriptortabelle beschreibt, sowie eine Datenstruktur wie zum Beispiel die Datenstruktur224c , 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 von8c benutzen, um die physikalische Adresse des TPT-Eintrages204 für einen bestimmten Puffer zu erhalten, in dem die Datenstrukturen jenes TPT-Eintrages204 die physikalische Adresse und die Schutzprüfungsinformationen für jenen Puffer enthalten. -
12 zeigt ein Beispiel von Operationen einer E/A-Vorrichtung, die eine Adresse362 (11 ) für eine Speicheroperation empfängt (Block402 ). Die empfangene Adresse wird zu einer virtuellen Adresse364 (11 ) eines Eintrages einer Tabelle aus virtuell aneinandergrenzenden Datenstrukturen, wie zum Beispiel eines Eintrages204 der TPT200 , konvertiert (Block404 ). Die E/A-Vorrichtung konvertiert (Block406 ) die virtuelle Adresse364 zu einer physikalischen Adresse des Datenstruktureintrages. Unter Verwendung der physikalischen Adresse können die Daten der Datenstruktur erhalten werden (Block408 ), um die angeforderte Speicheroperation auszuführen (Block410 ). -
13 zeigt ein detaillierteres Beispiel einer E/A-Vorrichtung, die eine Adresse für eine Speicheroperation empfängt. In diesem Beispiel, empfängt (Block602 ) ein RDMA-befähigter Netzwerkadapter112 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 (Block604 ), der in der veranschaulichten Ausführungsform eine virtuelle TPT-Adresse, wie zum Beispiel die virtuelle TPT-Adresse240 von FIG. 8c, ist. Ein Teil des TPT-Index‘ wird zu einem Segmenttabellenindex, wie zum Beispiel dem TPT-Segmentdeskriptorindex242 von FIG. 8c, konvertiert (Block605 ). Der Adapter112 erhält (Block606 ) 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 Datenstrukturen226a -226c jenes identifizierten Segmenttabelleneintrages224a ,224b , ...,224n zu lesen. Ein Teil des TPT-Index‘ wird zu einem Seitentabellenindex, wie zum Beispiel dem TPT-Seitendeskriptorindex244 von FIG. 8c, konvertiert (Block608 ). Der Adapter112 erhält (Block610 ) die physikalische Adresse einer Seite oder eines Blocks aus TPT-Einträgen, wie zum Beispiel eines der TPT-Blöcke202 , unter Verwendung des oben erzeugten Seitentabellenindex‘, um einen bestimmten Eintrag einer Seitentabelle, wie zum Beispiel einer Seitendeskriptortabelle 230a, zu identifizieren, und liest die Datenstrukturen234a ,234c jenes identifizierten Seitendeskriptortabelleneintrages232a ,232b , ...,232n . Ein Teil des TPT-Index‘ wird zu einem TPT-Blockindex oder -versatz, wie zum Beispiel dem TPT-Block-Byte-Versatz246 von FIG. 8c, konvertiert (Block612 ). Der TPT-Blockindex weist auf den TPT-Eintrag, der dem Pufferidentifikator entspricht. Der Adapter112 erhält (Block614 ) die Schutzdaten eines Puffers unter Verwendung des oben erzeugten TPT-Blockindex‘ oder -versatzes, um einen bestimmten Eintrag204 des identifizierten TPT-Blocks202 zu identifizieren, und liest die Datenstrukturen 352, 354 jenes identifizierten TPT-Eintrages204 . Die Schutzprüfung kann auf der Grundlage der erhaltenen Schutzinformationen ausgeführt werden (Block616 ). Wenn die Schutzprüfung nicht bestanden wird, so wird die Operation abgebrochen, und die verbliebenen Prozesse (Blöcke618 , 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 (Block618 ), 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 (Block620 ). -
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öcke652 -666 ähnlich denen der Operationen der Blöcke602 -616 von13 . So kann in der Operation von Block666 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öcke680 -698 ) werden nicht ausgeführt. Wenn jedoch die Schutzprüfung (Block666 ) 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 (Block680 ). 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 (Block684 ). Ein Teil des TPT-Index‘ wird zu einem Segmenttabellenindex, wie zum Beispiel dem TPT-Segmentdeskriptorindex242 von FIG. 8c, konvertiert (Block686 ). - Der Adapter
112 erhält (Block688 ) 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 Segmenttabelleneintrages224a ,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 Adapter112 erhält (Block 692) die physikalische Adresse einer Seite oder eines Blocks von TPT-Einträgen, wie zum Beispiel eines der TPT-Blöcke202 , unter Verwendung des oben erzeugten Seitentabellenindex‘, um einen bestimmten Eintrag einer Seitentabelle, wie zum Beispiel einer Seitendeskriptortabelle 230a, zu identifizieren, und liest die Datenstrukturen234a ,234c jenes identifizierten Seitendeskriptortabelleneintrages232a ,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 (Block694 ). Der TPT-Blockindex weist zu dem TPT-Eintrag, der dem Adressenumsetzungseintrag entspricht. Der Adapter112 erhält (Block696 ) die physikalische Pufferadresse unter Verwendung des oben erzeugten TPT-Blockindex‘ oder -versatzes, um einen bestimmten Eintrag204 des identifizierten TPT-Blocks 202 zu identifizieren, und liest die Datenstrukturen352 ,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öcke684 -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-Host130 , den Gerätetreiber120 oder die Netzwerkschnittstelle112 ausgeführt werden. In alternativen Ausführungsformen können Operationen, die in der Beschreibung durch eine von diesen ausgeführt werden, auch durch das Betriebssystem110 und/oder den Gerätetreiber120 und/oder die Netzwerkschnittstelle112 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-Protokollschichten132 in der Hardware des Netzwerkadapters112 verkörpert. In alternativen Ausführungsformen können eine oder mehrere dieser Protokollschichten in dem Gerätetreiber oder dem Host-Speicher106 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 Computerarchitektur700 der Netzwerkelemente, wie zum Beispiel die Hosts und Speicherkomponenten, die in4 gezeigt sind. Die Architektur700 kann einen Prozessor702 (zum Beispiel einen Mikroprozessor), einen Speicher704 (zum Beispiel einen flüchtigen Speicher) und einen Speicher706 (zum Beispiel einen nicht-flüchtigen Speicher, wie zum Beispiel Magnetdisk-Laufwerke, optische Disk-Laufwerke, ein Bandlaufwerk usw.) enthalten. Der Prozessor702 kann zum Beispiel auf einer Hauptplatine installiert sein. Der Speicher706 kann einen internen Speicherbaustein oder einen Zusatzspeicher oder einen über ein Netzwerk zugänglichen Speicher umfassen. Programme in dem Speicher706 werden in einschlägig bekannter Weise in den Speicher704 geladen und durch den Prozessor702 verarbeitet. Die Architektur enthält des Weiteren einen Netzwerkadapter708 , 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-Controller709 enthalten, um Informationen auf einem Anzeigemonitor wiederzugeben, wobei der Video-Controller709 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ät710 wird dafür verwendet, Benutzereingaben an den Prozessor702 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 Ausgabevorrichtung712 ist in der Lage, Informationen, die vom Prozessor702 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 September1981 , beschrieben. Details zum IP-Protokoll sind in „Internet Engineering Task Force Request for Comments (RFC) 791“, veröffentlicht im September1981 , beschrieben; und Details zum RDMA-Protokoll sind in der technischen Spezifikation „Architectural Specification for RDMA over TCP/IP“, Version1.0 (Oktober2003 ), 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)
- 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.
- 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. - Verfahren nach
Anspruch 1 , wobei die Speicheroperationsadresse einen Pufferidentifikator und zumindest eines von einer virtuellen Adresse und einem virtuellen Versatz innerhalb eines Puffers umfasst. - 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. - Verfahren nach
Anspruch 4 , wobei die erste virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits umfasst, die einen Eintrag der Tabelle aus Untersegmentdeskriptoren identifizieren. - Verfahren nach
Anspruch 5 , wobei die erste virtuelle Adresse des Weiteren mehrere Datenstrukturtabellenindexbits umfasst, die einen Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren. - 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. - 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. - 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. - 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. - 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. - Verfahren nach
Anspruch 11 , wobei die zweite virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits enthält, die einen Eintrag einer Tabelle aus Untersegmentdeskriptoren identifizieren. - 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. - 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.
- 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. - 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. - 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. - System nach
Anspruch 17 , wobei die erste virtuelle Adresse (364) des Weiteren mehrere Untersegmentdeskriptortabellenindexbits enthält, die einen Eintrag der Tabelle aus Untersegmentdeskriptoren identifizieren. - 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. - 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. - 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. - 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. - 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. - 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. - System nach
Anspruch 24 , wobei die zweite virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits enthält, die einen Eintrag einer Tabelle aus Untersegmentdeskriptoren identifizieren. - 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. - 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.
- 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. - Teilsystem nach
Anspruch 27 , wobei die Adresse einen Pufferidentifikator und zumindest eines von einer virtuellen Adresse und einem virtuellen Versatz innerhalb eines Puffers umfasst. - 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. - Teilsystem nach
Anspruch 30 , wobei die erste virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits umfasst, die einen Eintrag der Tabelle aus Untersegmentdeskriptoren identifizieren. - Teilsystem nach
Anspruch 31 , wobei die erste virtuelle Adresse des Weiteren mehrere Datenstrukturtabellenindexbits umfasst, die einen Datenstruktureintrag des Untersegments aus aneinandergrenzenden Datenstruktureinträgen identifizieren. - 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. - 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. - 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. - 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. - 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. - Teilsystem nach
Anspruch 37 , wobei die zweite virtuelle Adresse des Weiteren mehrere Untersegmentdeskriptortabellenindexbits umfasst, die einen Eintrag einer Tabelle aus Untersegmentdeskriptoren identifizieren. - 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.
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)
| 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)
| 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 |
-
2004
- 2004-06-30 US US10/882,564 patent/US8504795B2/en not_active Expired - Fee Related
-
2005
- 2005-06-24 WO PCT/US2005/022361 patent/WO2006012257A2/en not_active Ceased
- 2005-06-24 DE DE112005001430.4T patent/DE112005001430B4/de not_active Expired - Fee Related
- 2005-06-27 TW TW094121396A patent/TWI272485B/zh not_active IP Right Cessation
Non-Patent Citations (1)
| 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 |