DE112012001526T5 - Zumindest partielles Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen - Google Patents

Zumindest partielles Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen Download PDF

Info

Publication number
DE112012001526T5
DE112012001526T5 DE112012001526.6T DE112012001526T DE112012001526T5 DE 112012001526 T5 DE112012001526 T5 DE 112012001526T5 DE 112012001526 T DE112012001526 T DE 112012001526T DE 112012001526 T5 DE112012001526 T5 DE 112012001526T5
Authority
DE
Germany
Prior art keywords
controller
nic
partially
queue
command
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.)
Pending
Application number
DE112012001526.6T
Other languages
English (en)
Inventor
Eliezer Tamir
Donald E. Wood
Steven B. McGowan
Ben-Zion Friedman
Theodore L. Wilke
Eliel Louzoun
Matthew R. Wilcox
Robert O. Sharp
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 DE112012001526T5 publication Critical patent/DE112012001526T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Selective Calling Equipment (AREA)

Abstract

Eine Ausführungsform kann Schaltungen umfassen, um es einem ersten Netzwerkschnittstellen-Controller (Network Interface Controller – NIC) in einem Client zumindest teilweise zu erleichtern, in der Lage zu sein, über einen zweiten NIC in einem Server, der entfernt vom Client gelegen ist, und auf eine Weise, die unabhängig von einer Betriebssystemumgebung in dem Server ist, auf mindestens eine Befehlsschnittstelle eines anderen Controllers des Servers zuzugreifen. Die Befehlsschnittstelle kann mindestens eine Controller-Befehlswarteschlange umfassen. Ein solches Zugreifen kann das Schreiben von mindestens einem Warteschlangenelement in die mindestens eine Befehlswarteschlange umfassen, um den anderen Controller anzuweisen, mindestens eine Operation durchzuführen, die dem anderen Controller zugehörig ist. Der andere Controller kann die mindestens eine Operation zumindest teilweise als Reaktion auf das mindestens eine Warteschlangenelement durchführen. Viele Alternativen, Varianten und Abwandlungen sind möglich.

Description

  • Gebiet
  • Diese Offenbarung betrifft das zumindest partielle Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen.
  • Stand der Technik
  • In einer herkömmlichen Rechenanordnung umfassen ein Client und ein Server jeweilige Netzwerkschnittstellen-Controller (Network Interface Controller – NIC), die in der Lage sind, unter Verwendung eines Remote Direct Memory Access (RDMA) Protokolls miteinander zu kommunizieren. Der Server umfasst einen Host-Prozessor, der das Betriebssystem des Servers und die zugehörigen Treiber ausführt. Der Server umfasst auch einen Speicher-Controller, der den Speicher des Servers verwaltet. Der NIC des Clients gibt Anforderungen zum Schreiben von Daten in den und zum Lesen von Daten aus dem Speicher an den NIC des Servers aus. Das Betriebssystem des Servers, die zugehörigen Treiber und der Host-Prozessor verarbeiten die durch den NIC des Servers empfangenen Anforderungen und geben entsprechende Anforderungen an den Speicher-Controller aus. Der Speicher-Controller empfängt diese entsprechenden Anforderungen und führt sie aus. Nach dem Ausführen der entsprechenden Anforderungen gibt der Speicher-Controller Anforderungsabschlussinformationen (und zugehörige Daten, wenn Daten von dem Speicher gelesen wurden) an das Betriebssystem des Servers und die zugehörigen Treiber aus. Daraus erzeugen das Betriebssystem des Servers, die zugehörigen Treiber und der Host-Prozessor entsprechende Anforderungsabschlussinformationen und zugehörige Daten und geben die entsprechenden Anforderungsabschlussinformationen und zugehörige Daten an den NIC des Servers aus. Der NIC des Servers gibt dann die entsprechenden Anforderungsabschlussinformationen und zugehörige Daten an den NIC des Clients aus.
  • So verarbeiten in der vorhergehenden herkömmlichen Anordnung das Betriebssystem des Servers, die zugehörigen Treiber und der Host-Prozessor die durch den NIC des Servers empfangenen Anforderungen und die Abschlussinformationen und Daten vom Speicher. Dies verbraucht beträchtliche Beträge des Betriebssystems und der Verarbeitungsbandbreite des Host-Prozessors. Es erhöht auch den Betrag der durch den Host-Prozessor verbrauchten Energie und abgegebenen Wärme. Darüber hinaus erhöht es die Latenzzeit der Verarbeitung der Anforderungen, die durch den NIC des Clients ausgegeben werden.
  • Kurze Beschreibung der verschiedenen Ansichten der Zeichnungen
  • Die Merkmale und Vorteile von Ausführungsformen gehen aus der folgenden ausführlichen Beschreibung und unter Bezugnahme auf die Zeichnungen hervor, in denen gleiche Bezugszeichen gleiche Teile bildlich darstellen; es zeigen:
  • 1 eine Veranschaulichung einer Ausführungsform des Systems.
  • 2 eine Veranschaulichung von Merkmalen in einer Ausführungsform.
  • Obgleich die folgende ausführliche Beschreibung unter Bezugnahme auf veranschaulichende Ausführungsformen erfolgt, sind für den Fachmann viele Alternativen, Abwandlungen und Varianten davon ersichtlich. Folglich wird beabsichtigt, dass der beanspruchte Erfindungsgegenstand breit ausgelegt werden soll.
  • Ausführliche Beschreibung
  • 1 veranschaulicht eine Ausführungsform des Systems 100. Das System 100 kann den Client 10 umfassen, der über das Netzwerk 50 kommunikativ an den Server 20 gekoppelt ist. In dieser Ausführungsform können die Begriffe „Host-Rechner”, „Host”, „Server”, „Client”, „Netzwerkknoten” und „Knoten” untereinander austauschbar verwendet werden und damit können zum Beispiel, aber nicht darauf beschränkt, eine oder mehrere Endstationen, mobile Internet-Geräte, Smartphones, Mediengeräte, Eingabe/Ausgabe-Geräte (E/A), Tablet-Rechner, Elektrogeräte, Zwischenstationen, Netzwerkschnittstellen, Clients, Server und/oder Abschnitte davon gemeint sein. Obgleich die Begriffe Client 10, Server 20 und Netzwerk 50 im Singular verwendet werden, versteht es sich, dass jede dieser entsprechenden Komponenten mehrere solcher jeweiligen Komponenten umfassen kann, ohne von dieser Ausführungsform abzuweichen. In dieser Ausführungsform kann ein „Netzwerk” irgendein/en Mechanismus, irgendein Mittel und irgendeine Art und/oder ein/en Abschnitt davon sein oder umfassen; die das kommunikative Koppeln von zwei oder mehr Entitäten zumindest teilweise ermöglicht, erleichtert und/oder zulässt. Auch kann in dieser Ausführungsform eine erste Entität mit einer zweiten Entität „kommunikativ gekoppelt” sein, wenn die erste Entität in der Lage ist, einen oder mehrere Befehle und/oder Daten an die zweite Entität zu senden und/oder von ihr zu empfangen. In dieser Ausführungsform können die Begriffe Daten und Informationen untereinander austauschbar verwendet werden und können einen oder mehrere Befehle (zum Beispiel einen oder mehrere Programmbefehle) umfassen und/oder einer oder mehrere solcher Befehle können Daten und/oder Informationen sein oder umfassen. Auch kann in dieser Ausführungsform ein „Befehl” Daten und/oder einen oder mehrere Befehle umfassen.
  • Der Client 10 kann einen Remote Direct Memory Access(RDMA)-fähigen Netzwerkschnittstellen-Controller (RNIC) 10 und/oder einen oder mehrere (und in dieser Ausführungsform mehrere) Puffer 13 umfassen.
  • Der Server 20 kann eine oder mehrere integrierte Schaltungschips (Integrated Circuit – IC) 180, Speicher 21 und/oder Speicher 150 umfassen. Einer oder mehrere Chips 180 können Schaltungen 118 umfassen, die zumindest teilweise den RNIC 180 und/oder Speicher-Controller 112 umfassen können. Zusätzlich können einer oder mehrere Chips 180 ein oder mehrere Mehrkern-Host-Prozessoren (HP) und/oder Zentraleinheiten (CPU) 12 umfassen. Obgleich dies in den Figuren nicht gezeigt ist, kann der Server 20 auch einen oder mehrere Chipsätze umfassen (die z. B. Speicher-, Netzwerk- und/oder Eingangs/Ausgangs-Controller-Schaltungen umfassen). Der RNIC 108, der Controller 112 und/oder der/die HP/CPU 12 können in der Lage sein, miteinander zu kommunizieren. Zusätzlich können der RNIC 108, der Speicher-Controller 112 und/oder der/die HP/CPU in der Lage sein, über einen oder mehrere solche Chipsätze auf ein oder mehrere Bauteile des Servers 20 (wie beispielsweise den Speicher 21 und/oder den Speicher 150) zuzugreifen und/oder damit zu kommunizieren. In dieser Ausführungsform können der Client 10 und/oder der RNIC 106 zumindest teilweise entfernt von dem Server 20 und/oder dem RNIC 108 gelegen sein (d. h. geografisch entfernt voneinander gelegen).
  • In dieser Ausführungsform können die „Schaltungen” zum Beispiel einzeln oder in irgendeiner Kombination analoge Schaltungen, digitale Schaltungen, festverdrahtete Schaltungen, programmierbare Schaltungen, Coprozessor-Schaltungen, Zustandsmaschinen-Schaltungen und/oder Speicher umfassen, die Programmbefehle umfassen können, die durch programmierbare Schaltungen ausgeführt werden können. Auch in dieser Ausführungsform können ein Prozessor, HP, eine CPU, ein Prozessorkern (PC), ein Kern und ein Controller jeweils entsprechende Schaltungen umfassen, die in der Lage sind, zumindest teilweise eine oder mehrere arithmetische und/oder logische Operationen durchzuführen und/oder zumindest teilweise einen oder mehrere Befehle auszuführen. In dieser Ausführungsform kann ein integrierter Schaltungschip ein oder mehrere mikroelektronische Geräte, Substrate und/oder Chips umfassen. Obgleich dies nicht in den Figuren gezeigt ist, kann der Server 20 ein grafisches Benutzeroberflächensystem umfassen, das z. B. ein/e entsprechende/s Tastatur, Zeigervorrichtung und Anzeigesystem umfassen kann und die es einem menschlichen Benutzer ermöglichen kann, Befehle in den Server 20 und/oder das System 100 einzugeben und ihren Betrieb zu überwachen. Auch in dieser Ausführungsform kann der Speicher einen oder mehrere der folgenden Speichertypen umfassen: Halbleiter-Firmware-Speicher, programmierbarer Speicher, nichtflüchtiger Speicher, Nurlesespeicher, elektrisch programmierbarer Speicher, Speicher mit wahlfreiem Zugriff, Flash-Speicher, Magnetplattenspeicher, optischer Plattenspeicher und/oder einen anderen oder später entwickelten maschinenlesbaren und/oder -beschreibbaren Speicher.
  • Der Speicher 150 kann den Massenspeicher 156 umfassen. In dieser Ausführungsform kann der Speicher eine oder mehrere Vorrichtungen umfassen, in und/oder von denen Daten gespeichert beziehungsweise und/oder abgefragt werden können. Auch kann der Massenspeicher in dieser Ausführungsform Speicher sein oder umfassen, der in der Lage ist, Daten auf nichtflüchtige Weise zu speichern. Auch kann der Massenspeicher in dieser Ausführungsform, ohne Einschränkung darauf, zum Beispiel einen oder mehrere nichtflüchtige elektromechanische Speicher, magnetische, optische und/oder Halbleiter-Speicher umfassen.
  • Einer oder mehrere maschinenlesbare Programmbefehle können zumindest teilweise im Speicher 21 gespeichert sein. Beim Betrieb des Servers 20 kann auf diese maschinenlesbaren Befehle zugegriffen werden und sie können durch einen oder mehrere Host-Prozessoren 12, RNIC 108 und/oder Controller 112 ausgeführt werden. Wenn sie durch einen oder mehrere HP 12 ausgeführt werden, können dieser eine oder mehreren maschinenlesbaren Befehle eine oder mehrere Betriebssystemumgebungen (Operating System Environment – OSE) 32 ergeben, die zumindest teilweise durch einen oder mehrere HP 12 ausgeführt werden und zumindest teilweise im Speicher 21 resident werden. Auch können dieser eine oder mehreren Befehle, wenn diese maschinenlesbaren Befehle durch den RNIC 108 und/oder den Speicher-Controller 112 ausgeführt werden, eine oder mehrere Befehlsschnittstellen 110 des Speicher-Controllers 112, eine oder mehrere Doorbells 192, einen oder mehrere Pointer 202, einen oder mehrere Agenten 194, eine oder mehrere Warteschlangen 124 und/oder eine oder mehrere Warteschlangen 126 ergeben, die durch den RNIC 108 und/oder den Controller 112 eingerichtet und/oder ausgeführt werden und/oder im Speicher 21 resident werden.
  • In dieser Ausführungsform können eine oder mehrere OSE 32 ein oder mehrere Betriebssysteme (Operating System – OS) 31 und/oder einen oder mehrere RNIC und/oder Speicher-Controller-Treiber 112 und Treiber 33 umfassen. Einer oder mehrere Treiber 33 können sich gegenseitig zumindest teilweise von einem oder mehreren OS 31 unterscheiden. Alternativ oder zusätzlich dazu können, ohne von dieser Ausführungsform abzuweichen, einer oder mehrere entsprechende Abschnitte von einem oder mehreren OS 32 und/oder Treibern 33 sich zumindest teilweise nicht voneinander unterscheiden und/oder können zumindest teilweise ineinander enthalten sein. Ebenso können die Schaltungen 118, der RNIC 108 und/oder der Controller 112, ohne von dieser Ausführungsform abzuweichen, sich voneinander unterscheiden oder alternativ in dem einen oder mehreren nicht gezeigten Chipsätzen und/oder HP 12 enthalten sein. Ebenfalls ohne von dieser Ausführungsform abzuweichen, können einer oder mehrere Abschnitte des Speichers 21 im RNIC 108, im Controller 112, in den Schaltungen 118, dem HP 12 und/oder der IC 180 enthalten sein.
  • In dieser Ausführungsform kann ein Abschnitt oder eine Teilmenge einer Entität die gesamte oder weniger als die gesamte Entität umfassen. Auch können in dieser Ausführungsform ein Prozess, Thread, Deamon, Programm, Treiber, Betriebssystem, eine Anwendung, ein Kernel und/oder ein virtueller Maschinenmonitor jeweils die Ausführung von einer/einen oder mehreren Operationen und/oder Programmbefehlen (1) zumindest teilweise umfassen und/oder (2) dies und/oder sich zumindest teilweise daraus ergeben.
  • In dieser Ausführungsform kann eine Befehlsschnittstelle den Austausch, die Übertragung und/oder den Empfang von Daten und/oder einem oder mehreren Befehlen zumindest teilweise erleichtern, zulassen und/oder ausführen. Auch in dieser Ausführungsform können eine Warteschlange, ein Puffer und/oder eine Doorbell einen oder mehrere Orte im Speicher (d. h. die zumindest teilweise durch eine oder mehrere Adressen angegeben und/oder angezeigt werden) umfassen, an denen Daten und/oder einer oder mehrere Befehle zumindest vorübergehend gespeichert werden können. Ferner kann ein Warteschlangenelement in dieser Ausführungsform Daten und/oder einer/einen oder mehrere Befehle sein oder umfassen, die in einer oder mehreren Warteschlangen zu speichern und/oder gespeichert sind, wie zum Beispiel einer oder mehrere Deskriptoren und/oder einer oder mehrere Befehle. Darüber hinaus kann ein Pointer in dieser Ausführungsform einen oder mehrere Orte und/oder eines oder mehrere Elemente im Speicher anzeigen, adressieren und/oder angeben.
  • In dieser Ausführungsform können der RNIC 106 und der RNIC 108 Daten und/oder Befehle über das Netzwerk 50 gemäß einem oder mehreren Protokollen austauschen, die ein RDMA-Protokoll (z. B. iWARP), Ethernet-Protokoll und/oder Transmission Control Protocol/Internet Protocol (TCP/IP) Protokoll erfüllen und/oder damit kompatibel sein können. Zum Beispiel kann das RDMA-Protokoll Recio et al., „An RDMA Protocol Specification”, Internet Draft Sepecification, Internet Engineering Task Force (IETF), 21. Okt. 2002, erfüllen und/oder damit kompatibel sein. Auch kann das Ethernet-Protokoll den Institute of Electrical and Electronics Engineers, Inc. (IEEE) Std. 802.3-2008, 26. Dezember 2008, erfüllen und/oder damit kompatibel sein. Zusätzlich kann das TCP/IP-Protokoll zum Beispiel die Protokolle, die in Internet Engineering Task Force (IETF) Request For Comments (RFC) 791 und 793, veröffentlicht im September 1981, beschrieben sind, erfüllen und/oder damit kompatibel sein. Viele unterschiedliche, zusätzliche und/oder andere Protokolle können für einen solchen Daten- und/oder Befehlsaustausch verwendet werden, ohne von dieser Ausführungsform abzuweichen (z. B. früher und/oder später entwickelte Versionen der vorhergehenden, damit verwandte und/oder andere Protokolle).
  • In dieser Ausführungsform können die Schaltungen 118 es dem RNIC 106 zumindest teilweise ermöglichen und/oder erleichtern, in der Lage zu sein, über den RNIC 108 auf eine oder mehrere Befehlsschnittstellen 110 zuzugreifen. Zum Beispiel können die Schaltungen 118 es dem RNIC 106 zumindest teilweise ermöglichen und/oder erleichtern, in der Lage zu sein, auf eine Weise auf eine oder mehrere Befehlsschnittstellen 110 zuzugreifen, die von der OSE 32 im Server 20 unabhängig ist. Dieses Zugreifen kann zum Beispiel das Schreiben von mindestens einem Warteschlangenelement (z. B. eines oder mehrere Warteschlangenelemente (Queue Element – QE) 116) in eine oder mehrere Befehlswarteschlangen 114 in einer oder mehreren Schnittstellen 114 umfassen. Dies kann dem Speicher-Controller 112 den Befehl erteilen, zumindest teilweise eine oder mehrere Operationen durchzuführen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, die dem Controller 112 zugehörig sind. Der Controller 112 kann diese einen oder mehreren Operationen zumindest teilweise als Reaktion auf das eine oder die mehreren Warteschlangenelemente 116 (z. B. zumindest teilweise nachdem das eine oder die mehreren Elemente 116 in eine oder mehrere Warteschlangen 114 geschrieben wurden, und als Reaktion darauf) durchführen. Diese eine oder mehreren Operationen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, können eine oder mehrere Schreiboperationen und/oder eine oder mehrere Leseoperationen umfassen, die zumindest teilweise den Speicher und/oder den Massenspeicher 156 einbeziehen. In dieser Ausführungsform kann ein Zugriff eine oder mehrere Leseoperationen und/oder eine oder mehrere Schreiboperationen umfassen, die in diesem Beispiel den Speicher 150 und/oder den Massenspeicher 156 einbeziehen.
  • Als Beispiel können beim Betrieb des Systems 100 der Client 10 und/oder RNIC 106 den Client 10 und/oder RNIC 106 für den Server 20 und/oder den RNIC 108 authentifizieren. Dies kann zum Ergebnis haben, dass dem Client 10 und/oder dem RNIC 106 die Erlaubnis erteilt wird, zumindest teilweise (z. B. über den RNIC 108) auf den Server 20 zuzugreifen. Gleichzeitig, danach oder davor können der RNIC 108, der Controller 112, einer oder mehrere Agenten 194 und/oder die OSE 32 zumindest teilweise im Speicher 21 eine oder mehrere Schnittstellen 110 und/oder einen oder mehrere Zeiger 181 erzeugen, einrichten und/oder pflegen, die zumindest teilweise anzeigen können, wo (z. B. einen oder mehrere Orte) im Speicher 21 eine oder mehrere Schnittstellen 110 und/oder die Komponenten davon sich befinden können. Zum Beispiel können einer oder mehrere Zeiger 181 zumindest teilweise einen oder mehrere Orte im Speicher 21 anzeigen, wo eine oder mehrere Befehlswarteschlangen 114, eine oder mehrere Abschlusswarteschlangen 120, eine oder mehrere Doorbells 170 und/oder einer oder mehrere Puffer 130A...130N sich befinden können. Der RNIC 108 kann dem RNIC 106 über das Netzwerk 50 einen oder mehrere Zeiger 181 bereitstellen. Danach kann der RNIC 106 einen oder mehrere des einen oder der mehreren Zeiger 181 verwenden, um auf eine oder mehrere Schnittstellen 110 und/oder eine oder mehrere Komponenten der einen oder mehreren Schnittstellen 110 zuzugreifen. Einer oder mehrere Zeiger 181 können zumindest teilweise einen oder mehrere Handles für einen oder mehrere Bereiche im Speicher 21 umfassen, wie beispielsweise in dieser Ausführungsform einen oder mehrere Stags, die das RDMA-Protokoll (z. B. iWARP) erfüllen und/oder damit kompatibel sind.
  • Nach dem Empfangen von einem oder mehreren Zeigern 181 können der Client 10 und/oder der RNIC 106 über das Netzwerk 50 und den RNIC 108 einen oder mehrere Befehle 105 an den Server 20 an den Speicher-Controller 112 auf eine Weise ausgeben, die die Beteiligung der OSE 32 umgeht und/oder unabhängig davon ist. Der eine oder die mehreren Befehle 105 können den Speicher-Controller 112 anweisen, eine oder mehrere Operationen durchzuführen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen.
  • Zum Beispiel können einer oder mehrere Befehle 105 das RDMA-Protokoll (z. B. iWARP) erfüllen und/oder damit kompatibel sein. Einer oder mehrere Befehle 105 umfassen und/oder geben zumindest teilweise ein oder mehrere Warteschlangenelemente 116 an, die zumindest teilweise die eine oder mehreren Operationen enthalten und/oder angeben, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, die angewiesen werden. Obgleich dies nicht in den Figuren gezeigt ist, können einer oder mehrere Befehle 105 zumindest teilweise einen oder mehrere der Zeiger 181 umfassen, angeben und/oder anzeigen, die den einen oder die mehreren Orte in einer oder mehreren Befehlswarteschlangen 114 als einen oder mehrere beabsichtigte Zielorte von einem oder mehreren Warteschlangenelementen 116 angeben können.
  • In diesem Beispiel können eines oder mehrere Warteschlangenelemente 116 den Controller 112 anweisen, eine oder mehrere Schreiboperationen durchzuführen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen. Deshalb können einer oder mehrere Befehle 105 zumindest teilweise auch Daten 199 umfassen und/oder angeben, die als Ergebnis der Ausführung von einem oder mehreren Warteschlangenelementen 116 durch den Controller 112 in den Speicher 150 und/oder Massenspeicher 156 zu schreiben sind. Einer oder mehrere Befehle 105 können zumindest teilweise einen oder mehrere der Zeiger 181 umfassen, angeben und/oder anzeigen, die einen oder mehrere Orte des einen der mehreren Puffer (z. B. des Puffers 130A) anzeigen können, in den Daten 199 (zumindest vorübergehend) zu schreiben sind.
  • Zumindest teilweise als Reaktion auf den Empfang von einem oder mehreren Befehlen 105, kann der RNIC 108 direkt (z. B. gemäß dem RDMA-Protokoll (z. B. iWARP) und/oder auf eine Weise, die die OSE 32 umgeht und/oder unabhängig davon ist), auf die durch einen oder mehrere Befehle 105 angewiesene Weise, ein oder mehrere Warteschlangenelemente 116 und Daten 199 in eine oder mehrere Befehlswarteschlangen 114 beziehungsweise einen oder mehrere Puffer 130A schreiben. So kann tatsächlich der RNIC 106 durch das Ausgeben von einem oder mehreren Befehlen 105 an den RNIC 108 ein oder mehrere Warteschlangenelemente 116 und Daten 199 in die eine oder die mehreren Befehlswarteschlangen 114 beziehungsweise einen oder mehrere Puffer 130A schreiben.
  • Einer oder mehrere Befehle 105 können auch einen oder mehrere Werte 201 und einen oder mehrere der Zeiger 181, die einen oder mehrere Orte der einen oder mehreren Doorbells 170 angeben können, in die einer oder mehrere Werte 201 zu schreiben sind, umfassen und/oder angeben. Zumindest teilweise als Reaktion auf diese einen oder mehreren Werte 201 und diese einen oder mehreren der Zeiger 181 in einem oder mehreren Befehlen 105, kann der RNIC 108 (z. B. gemäß dem RDMA-Protokoll (z. B. iWARP) und/oder auf eine Weise, die die OSE 32 umgeht und/oder unabhängig von ihr ist) direkt auf die durch den einen oder die mehreren Befehle 105 angewiesene Weise, einen oder mehrere Werte 201 in die Doorbell 170 schreiben. Das Schreiben von einem oder mehreren Werten 201 in die Doorbell 170 kann die Doorbell 170 läuten. So kann der RNIC 106 tatsächlich durch das Ausgeben von einem oder mehreren Befehlen 105 an den RNIC 108 die Doorbell 170 läuten.
  • In dieser Ausführungsform kann das Läuten einer Doorbell, die einer Entität zugehörig ist, das Schreiben von einem oder mehreren Werten an einem oder mehreren Speicherorten (die z. B. der/die Doorbell zugehörig sind, umfassen und/oder enthalten) umfassen und/oder beinhalten, der zumindest teilweise ergeben und/oder auslösen kann, dass die Entität zumindest teilweise eine oder mehrere Operationen und/oder Vorgänge durchführt. Zusätzlich oder alternativ dazu können, ohne von dieser Ausführungsform abzuweichen, obgleich dies in den Figuren nicht geigt ist, eine oder mehrere Doorbells 170 zumindest teilweise in den Schaltungen 118 und/oder dem Controller 112 enthalten sein. Ebenfalls zusätzlich oder alternativ können, ohne von dieser Ausführungsform abzuweichen, eine oder mehrere Doorbells 192 zumindest teilweise in den Schaltungen 118 und/oder dem Controller 108 enthalten sein. In diesen zusätzlichen oder alternativen Anordnungen können die Doorbells 170 und/oder 192 der CPU 12 und/oder dem Server 20 als ein oder mehrere jeweilige Speicherorte (nicht gezeigt) im entsprechenden Speicher (nicht gezeigt) im Controller 112 und/oder beziehungsweise Controller 108 erscheinen.
  • Zumindest teilweise als Reaktion auf das Läuten der Doorbell 170 kann der Controller 112 in einen vollständig betriebsfähigen Zustand zurückkehren (z. B. wenn der Controller 112 zuvor in einen Zustand mit im Vergleich zu seinem vollständig betriebsfähigen Zustand niedrigerer Leistung eingetreten ist) und kann eines oder mehrere Warteschlangenelemente 116 lesen, die in eine oder mehrere Warteschlangen 114 geschrieben wurden. Der Controller 112 kann dann zumindest teilweise den einen oder die mehreren Befehle ausführen, die durch eines oder mehrere Warteschlangenelemente 116 angegeben und/oder darin enthalten sind. Dies kann zu dem Ergebnis führen, dass der Controller 112 zumindest teilweise die eine oder mehreren Operationen (z. B. eine oder mehrere Schreiboperationen in den Speicher 150 und/oder Massenspeicher 156 der Daten 199, die in einem oder mehreren Puffern 130A gespeichert sind), die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, durchführt.
  • Zumindest teilweise nach dem Abschluss dieser einen oder mehreren Operationen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, kann der Controller 112 zumindest teilweise ein oder mehrere Abschlusswarteschlangenelemente (Completion Queue Element – CQE) 190 erzeugen und in eine oder mehrere Abschlusswarteschlangen 120 schreiben. Auch zumindest teilweise nach dem Abschluss dieser einen oder mehreren Operationen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, kann der Controller 112 auch zumindest teilweise einen oder mehrere Werte in eine oder mehrere Doorbells 192 schreiben, die dem RNIC 108 zugehörig sind. Dies kann eine oder mehrere Doorbells 192 läuten. Zumindest teilweise als Reaktion auf das Läuten von einer oder mehreren Doorbells 192 kann der RNIC 108 (z. B. über eine oder mehrere RDMA-Schreiboperationen und/oder den RNIC 106) eines oder mehrere Abschlusswarteschlangenelemente 190 in einen oder mehrere Puffer 13 im Client 10 (z. B. über eine oder mehrere Antworten 197) schreiben.
  • Nachdem eine oder mehrere (z. B. verschiedenen) solche Schreib- und/oder Leseoperationen, die den Speicher 150 und/oder den Massenspeicher 156 zumindest teilweise einbeziehen, durchgeführt wurden, können einer oder mehrere Agenten 194 bestimmte Verwaltungsfunktionen durchführen. Zum Beispiel können einer oder mehrere Agenten 194 zumindest teilweise einen/eines oder mehrere Befehlswarteschlangeneinträge/Elemente (E) 196A...196N in einer oder mehreren Befehlswarteschlangen 126, die dem RNIC 108 zugehörig sind, und/oder ein/en oder mehrere Befehlswarteschlangeneinträge/Elemente QE A...QE N in der Tabelle 250 (siehe 2) einrichten. Wie unten erörtert, können diese Elemente 196A...196N und/oder QE A...QE N, wenn sie zumindest teilweise durch den RNIC 108 ausgeführt werden, zumindest teilweise das Kopieren von einem oder mehreren anderen Warteschlangeneinträgen (z. B. einer oder mehrere Speicher-Controller-Abschlusseinträge 190) in den Client 10 und/oder RNIC 106 und/oder Daten, die durch den Speicher-Controller 112 gelesen werden, ermöglichen und/oder erleichtern.
  • Diese Verwaltungsfunktionen können auch das zumindest partielle Aktualisieren (z. B. das zweckmäßige Vorrücken) von einem oder mehreren Pointern (z. B. die Ring-Pointer PNTR 202), die dem einen oder mehreren Warteschlangenpaaren (z. B. Befehls/Abschlusswarteschlangenpaar 114, 120 und/oder Befehls/Abschlusswarteschlangenpaar 126, 124) zugehörig sind, die dem Speicher-Controller 112 beziehungsweise dem RNIC 108 zugehörig sind, durch einen oder mehrere Agenten 194 umfassen. Dies kann das Speichern neuer Einträge in die Warteschlangenpaare an Orten ermöglichen, die kein fehlerhaftes Überschreiben anderer Einträge in den Warteschlangenpaaren ergeben werden. Zusätzlich können der eine oder die mehreren Agenten 194 als Teil dieser Verwaltungsfunktionen einen oder mehrere der Puffer 130A...130N angeben, die zur Wiederverwendung verfügbar sein können.
  • Als weiteres Beispiel können eines oder mehrere Warteschlangenelemente 116 den Controller 112 anweisen, eine oder mehrere Leseoperationen durchzuführen, die den Speicher 150 und/oder den Massespeicher 156 einbeziehen. Deshalb können einer oder mehrere Befehle 105 auch zumindest teilweise einen oder mehrere Orte im Speicher 150 und/oder Massenspeicher 156 umfassen und/oder angeben, von dem der Controller 112 Daten 199 als ein Ergebnis des Ausführens von einem oder mehreren Warteschlangenelementen 116 lesen wird.
  • Als Reaktion zumindest partiell auf das Empfangen von einem oder mehreren Befehlen 105 kann der RNIC 108 (d. h. gemäß dem RDMA-Protokoll (z. B. iWARP) und/oder auf eine Weise, die die OSE 32 umgeht und/oder davon unabhängig ist) eines oder mehrere Warteschlangenelemente 116 direkt auf die durch einen oder mehrere Befehle 105 angewiesene Weise in eine oder mehrere Befehlswarteschlangen 114 schreiben. So kann der RNIC 106 durch das Ausgeben von einem oder mehreren Befehlen 105 an den RNIC 108 tatsächlich eines oder mehrere Warteschlangenelemente 116 in eine oder mehrere Befehlswarteschlangen 114 beziehungsweise einen oder mehrere Puffer 130A schreiben.
  • In diesem Beispiel können einer oder mehrere Befehle 105 auch einen oder mehrere Werte 201 und einen oder mehrere der Zeiger 181 umfassen und/oder angeben, die einen oder mehrere Orte von einer oder mehreren Doorbells 170 anzeigen können, an denen der eine oder die mehreren Werte 201 zu schreiben sind. Zumindest teilweise als Reaktion auf diese/n einen oder mehreren Werte 201 und diese/n einen oder mehreren Zeiger 181 in einem oder mehreren Befehlen 105 kann der RNIC 108 direkt (z. B. gemäß dem RDMA-Protokoll (z. B. iWARP) und/oder auf eine Weise, die die OSE 32 umgeht und/oder unabhängig davon ist) auf die durch den einen oder die mehreren Befehle 105 angewiesene Weise, einen oder mehrere Werte 201 in die Doorbell 170 schreiben. Das Schreiben von einem oder mehreren Werten 201 in die Doorbell 170 kann die Doorbell 170 läuten. So kann der RNIC 106 tatsächlich durch das Ausgeben von einem oder mehreren Befehlen 105 an den RNIC 108 die Doorbell 170 läuten.
  • Zumindest teilweise als Reaktion auf das Läuten der Doorbell 170 kann der Controller 112 in einen vollständig betriebsfähigen Zustand zurückkehren (z. B. wenn der Controller 112 zuvor in einen Zustand mit im Vergleich zu seinem vollständig betriebsfähigen Zustand niedrigerer Leistung eingetreten ist) und kann eines oder mehrere Warteschlangenelemente 116 lesen, die in eine oder mehrere Warteschlangen 114 geschrieben wurden. Der Controller 112 kann dann zumindest teilweise den einen oder die mehreren Befehle ausführen, die durch eines oder mehrere Warteschlangenelemente 116 angegeben und/oder darin enthalten sind. Dies kann zu dem Ergebnis führen, dass der Controller 112 zumindest teilweise die eine oder mehreren Operationen (z. B. eine oder mehrere Leseoperationen aus den Speicher 150 und/oder Massenspeicher 156 zum Erhalten von Daten 199), die den Speicher 150 und/oder den Massenspeicher 156 und das Speichern von Daten 199 in einem oder mehreren Puffern (z. B. einer oder mehrere Puffer 130A) einbeziehen, durchführt.
  • Zumindest teilweise nach dem Abschluss dieser einen oder mehreren Operationen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, kann der Controller 112 zumindest teilweise eines oder mehrere Abschlusswarteschlangenelemente 190 erzeugen und in eine oder mehrere Abschlusswarteschlangen 120 schreiben. Auch zumindest teilweise nach dem Abschluss dieser einen oder mehreren Operationen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, kann der Controller 112 auch zumindest teilweise einen oder mehrere Werte in eine oder mehrere Doorbells 192 schreiben, die dem RNIC 108 zugehörig sind. Dies kann eine oder mehrere Doorbells 192 läuten. Zumindest teilweise als Reaktion auf das Läuten von einer oder mehreren Doorbells 192 kann der RNIC 108 (z. B. über eine oder mehrere RDMA-Schreiboperationen und/oder den RNIC 106) eines oder mehrere Abschlusswarteschlangenelemente 190 und die Daten 199 in einen oder mehrere Puffer 13 im Client 10 (z. B. über eine oder mehrere Antworten 197) schreiben.
  • In dieser Ausführungsform kann die Befehlsschnittstelle 110 insofern asynchron sein, als dass zum Beispiel die Abschlusswarteschlangenelemente nicht in einer Reihenfolge in einer oder mehreren Abschlusswarteschlangen 120 gespeichert sein können, die (1) der Reihenfolge, in der die Befehlswarteschlangenelemente in der einen oder mehreren Befehlswarteschlangen 114 gespeichert sind, (2) der Reihenfolge, in der solche Befehlswarteschlangenelemente durch den Speicher-Controller 112 ausgeführt und/oder abgeschlossen werden und/oder (3) der Reihenfolge entspricht, in der die Abschlusswarteschlangenelemente in einer oder mehreren Abschlusswarteschlangen 120 gespeichert sind und/oder dem RNIC 106 und/oder Client 10 bereitgestellt werden. Beim Betrieb kann/können der RNIC 106 und/oder der Client 10 in dem Fall, in dem Schreibbefehle von dem Client 10 und/oder dem RNIC 106 ausgegeben werden, entsprechende Abschlusswarteschlangenelemente, die vom RNIC 108 empfangen werden, auf zweckmäßige Weise neu ordnen. Indes kann im Fall von Lesebefehlen in dieser Ausführungsform jedes Abschlusswarteschlangenelement (z. B. das Element 190), das durch den Speicher-Controller 112 ausgegeben wird, die Elemente umfassen, die in 2 veranschaulicht sind, um zu ermöglichen, dass entsprechende Daten, die vom Speicher 150 und/oder Massenspeicher 156 gelesen werden, zweckmäßig entsprechenden Abschlusswarteschlangenelementen zur Übertragung an den Client 10 und/oder den RNIC 106 zugeordnet werden.
  • Wie in 2 gezeigt, kann das Abschlusswarteschlangenelement (z. B. das Element 190) einen oder mehrere Befehlsparameter 304, eine oder mehrere Befehlswarteschlangenkennungen 306, einen oder mehrere Befehlswarteschlangen-Kopfpositionszeiger 308, Zustandsinformationen 310, ein oder mehrere Warteschlangen-Phasenbits (P) 312 und/oder eine oder mehrere Befehlskennungen 302 umfassen. Ein oder mehrere Parameter 304 können einer/einen oder mehrere befehlsspezifische Parameter des einen oder der mehreren Befehlswarteschlangenelemente 116 und/oder Befehle 105 sein und/oder anzeigen, die dem einen oder den mehreren Abschlusswarteschlangenelementen 190 entsprechen und/oder zugehörig sein können. Eine oder mehrere Befehlswarteschlangenkennungen 306 können die eine oder mehreren Befehlswarteschlangen 114 anzeigen und/oder angeben, in die das eine oder die mehreren Befehlswarteschlangenelemente 116 geschrieben wurden. Ein oder mehrere Befehlswarteschlangen-Kopfpositionszeiger 308 können die gegenwärtige Position (z. B. in der einen oder mehreren Befehlswarteschlangen 114, die durch die eine oder mehreren Kennungen 306 identifiziert werden) angeben, an der sich das eine oder die mehreren Befehlswarteschlangenelemente 116 befinden können. Zustandsinformationen 310 können anzeigen, ob der eine oder die mehreren Befehle 105 und/oder das eine oder die mehreren Befehlswarteschlangenelemente 116 erfolgreich durch den Speicher-Controller 112 durchgeführt wurden. Ein oder mehrere Phasenbits 312 können angeben, ob das eine oder die mehreren Elemente 190 den zuletzt hinzugefügten gültigen Eintrag (z. B. zum Abarbeiten) in einer oder mehreren Abschlusswarteschlangen 120 bilden. Eine oder mehrere Befehlskennungen 302 können zumindest teilweise eine oder mehrere entsprechende Befehlskennungen in den entsprechenden einen oder mehreren Befehlswarteschlangenelementen 116 anzeigen und/oder identisch damit sein. Dieses letztere Feld 302 kann das richtige Verknüpfen von einem oder mehreren Abschlusswartschlangenelementen 190 mit einem oder mehreren entsprechenden Befehlswarteschlangenelementen 116 und/oder den entsprechenden Daten 199, die vom Speicher 150 und/oder Massenspeicher 156 als Ergebnis der Ausführung von diesen einen oder mehreren entsprechenden Befehlswarteschlangenelementen 116 gelesen werden, ermöglichen.
  • Zum Beispiel können in dieser Ausführungsform eine oder mehrere Kennungen 302 derart ausgewählt werden, dass sie nicht mit irgendwelchen anderen Befehlskennungen kollidieren und/oder identisch sind, die gegenwärtig durch irgendwelche Abschlusswarteschlangenelemente verwendet werden, die dem Client 10 und/oder RNIC 106 noch nicht durch den RNIC 108 bereitgestellt wurden. Die Befehlskennungen, die im System 100 verwendet werden können, können im Voraus berechnet und/oder im Voraus erzeugt werden und können als entsprechende Indices INDEX A...INDEX N für entsprechende Einträge EINTRAG A...EINTRAG N in einer Tabelle 250 verwendet werden, die zumindest teilweise im Speicher 21 gespeichert sein kann. Jeder der Einträge EINTRAG A...EINTRAG N in der Tabelle 250 kann eines oder mehrere entsprechende im Voraus berechnete und/oder im Voraus erzeugte Befehlswarteschlangenelemente QE A...QE N speichern, die dem RNIC 108 zugehörig sein können. Jedes entsprechende Element QE A...QE N kann einem oder mehreren entsprechenden Puffern in einem oder mehreren Puffern 130A...130N zugehörig sein. Jeder der Puffer in einem oder mehreren Puffern 130A...130N, in denen der Controller 112 Daten speichern kann, die vom Speicher 150 und/oder dem Massenspeicher 156 gelesen werden, kann auch einer oder mehreren entsprechenden Befehlskennungen, die im System 100 verwendet werden, und/oder entsprechenden Einträgen EINTRAG A...EINTRAG N zugehörig sein.
  • Die Befehlswarteschlangenelemente QE A...QE N können in der Tabelle 250 durch den Client 10 und/oder einen oder mehrere Agenten 194 gespeichert und/oder gepflegt werden. Wenn einer oder mehrere Puffer 130A...130N statisch zugewiesen sind, kann die Tabelle 250 statisch sein und kann im Hinblick auf zum Beispiel die Zuweisungseigenschaften einem oder mehreren Puffern 13 entsprechen, die im Client 10 zugewiesen sein können.
  • Als Beispiel kann der Controller 112, nachdem der Controller 112 Daten 199 vom Speicher 150 und/oder Massenspeicher 156 liest, die Daten 199 in einem oder mehreren Puffern (z. B. einem oder mehreren Puffern 130A) speichern, die einer oder mehreren Befehlskennungen 302 zugehörig sein können, und kann ein oder mehrere Abschlusswarteschlangenelemente 190 in einer oder mehreren Abschlusswarteschlangen 120 speichern. Zumindest teilweise als Reaktion auf das Läuten von einer oder mehreren Doorbells 192 durch den Controller 112 kann der RNIC 108 auf der Grundlage von zumindest teilweise einem oder mehreren Bits 312 das eine oder die mehreren zuletzt hinzugefügten gültigen Abschlusswarteschlangenelemente 190 in einer oder mehreren Warteschlangen 120 bestimmen. Der RNIC 108 kann die eine oder mehreren Befehlskennungen 302 in einem oder mehreren Elementen 190 zum Indexieren in die Tabelle 250 verwenden, um den einen oder die mehreren Einträge (z. B. einen oder mehrere Einträge EINTRAG A) und eines oder mehrere Befehlswarteschlangenelemente (z. B. eines oder mehrere Befehlswarteschlangenelemente QE A) in der Tabelle 250 aufzufinden, die zumindest teilweise den einen oder mehreren Befehlskennungen 302 zugehörig und/oder dadurch identifiziert sein kann. Der RNIC 108 kann zumindest teilweise einen oder mehrere Befehle ausführen, die diesen einen oder mehreren Befehlswarteschlangenelementen QE A zugehörig und/oder darin enthalten sein können. Dies kann zumindest teilweise ergeben, dass der RNIC 108 einen oder mehrere Puffer 130A liest, um Daten 199 zu erhalten, und Daten 199 und eines oder mehrere Abschlusswarteschlangenelemente 190 an den RNIC 106 und/oder Client 10 (z. B. über eine oder mehrere Antworten 197) überträgt. Folglich können Daten 199 und/oder eines oder mehrere Abschlusswarteschlangenelemente 190 in einen oder mehrere Client-Puffer 13 kopiert werden.
  • Alternativ kann der RNIC 108 in dieser Ausführungsform zumindest teilweise eine Zustandsmaschine (nicht gezeigt) umfassen. Diese Zustandsmaschine kann zumindest teilweise von einer oder mehreren Befehlswarteschlangen 126, die dem RNIC 108 zugehörig sein und/oder davon verwendet werden können, unabhängig und/oder davon getrennt sein. Diese Zustandsmaschine kann ein oder mehrere Befehlswarteschlangenelemente QE A in der Tabelle 250 zumindest teilweise auf der Grundlage von einer oder mehreren Befehlskennungen 302 auffinden und kann das eine oder die mehreren Befehlswarteschlangenelemente QE A in ein oder mehrere entsprechende Befehlswarteschlangenelemente 196A in einer oder mehreren Warteschlangen 126 kopieren. Die Zustandsmaschine kann dann dem RNIC 108 zumindest teilweise das Zugreifen auf und das Ausführen von einem oder mehreren Elementen 196A in einer oder mehreren Warteschlangen 126 signalisieren.
  • Darüber hinaus kann der Controller 112 alternativ, ohne von dieser Ausführungsform abzuweichen, vor dem Abschluss von einer oder mehreren Leseoperationen, die den Speicher 150 und/oder den Massenspeicher 156 einbeziehen, zumindest teilweise eines oder mehrere Befehlswarteschlangenelemente QE A in und/oder von der Tabelle 250 zumindest teilweise auf der Grundlage von einer oder mehreren Befehlskennungen 302 auffinden und/oder auswählen. Der Controller 112 kann dann in ein oder mehreren Abschlusswarteschlangenelemente 190 in eine oder mehreren Abschlusswarteschlangen 120 schreiben und kann eines oder mehrere Elemente QE A in ein oder mehrere entsprechende Elemente 196A in einer oder mehreren Befehlswarteschlangen 126 schreiben. Der Controller 112 kann dann eine oder mehrere Doorbells 192 läuten. Das kann zur Folge haben, dass der RNIC 108 zumindest teilweise auf ein oder mehrere Elemente 196A in einer oder mehreren Warteschlangen 126 zugreift und sie ausführt. Dies kann zur Folge haben, dass der RNIC 108 zumindest teilweise einen oder mehrere Puffer 130A liest, um Daten 199 zu erhalten, und Daten 199 und ein oder mehrere Abschlusswarteschlangenelemente 190 an den RNIC 106 und/oder den Client 10 (z. B. über eine oder mehrere Antworten 197) überträgt. Dadurch können Daten 199 und/oder ein oder mehrere Abschlusswarteschlangenelemente 190 in einen oder mehrere Client-Puffer 13 kopiert werden.
  • In dieser Alternative können Firmware und/oder einer oder mehrere Agenten 194, die zumindest teilweise durch den Controller 112 ausgeführt werden, Kontextinformationen pro Warteschlangenpaar pflegen, um ein oder mehrere Warteschlangenpaare anzuzeigen, die für RDMA-Transaktionen verwendet werden. Diese Kontextinformationen können auch verschiedene Pointer (z. B. auf ein oder mehrere Arrays von Elementen 196A...196N zum Bewegen von Daten von einem oder mehreren Puffern 130A...130 zu einem oder mehreren Puffern 13 und/oder den Kopf von einer oder mehreren Warteschlangen 126, eine oder mehrere Warteschlangen 126), einen oder mehrere Orte von einer oder mehreren Doorbells 192 und einen oder mehrere Werte zum Läuten von einer oder mehreren Doorbells 192 und/oder lokale Kopien von Kopf und/oder Pointern auf die eine oder mehreren Warteschlangen 126 umfassen. Mehrere dieser Pointer (z. B. der Kopf- und der End-Pointer) können dynamisch durch Firmware aktualisiert werden, die durch den Controller 112 ausgeführt wird.
  • Zusätzlich oder alternativ könnte, ohne von dieser Ausführungsform abzuweichen, der RNIC 108 und/oder der Speichercontroller 112 zumindest teilweise in dem nicht gezeigten Chipsatz oder in einer nicht gezeigten Leiterplatte enthalten sein. Ebenfalls zusätzlich oder alternativ können der Speicher 150 und/oder der Massenspeicher 156, ohne von dieser Ausführungsform abzuweichen, zumindest teilweise intern im Server 20 oder außerhalb des Servers 20 enthalten sein.
  • Ferner sei erwähnt, dass die Grundsätze dieser Ausführungsform, obgleich die vorhergehende Beschreibung unter Bezugnahme auf den Controller 108, der ein RNIC ist, und auf den Controller 112 vorgenommen wurde, der ein Speicher-Controller ist, auf Umstände angewandt werden können, in denen Protokolle, die sich von RDMA unterscheiden, und/oder zusätzlich dazu eingesetzt werden können und/oder in denen der Controller 112 beim Ausführen und/oder Erleichtern von Operationen beteiligt sein kann, die nicht den Speicher 150 einbeziehen (z. B. andere und/oder zusätzliche Eingabe/Ausgabe- und/oder kommunikationsbezogene Operationen). Dementsprechend können, ohne von dieser Ausführungsform abzuweichen, der Controller 108 und/oder die Kommunikationen zwischen dem Client 10 und dem Server 20 Protokolle, die sich von RDMA unterscheiden und/oder zusätzlich dazu, verwenden/einsetzen. Auch kann der Controller 112, ohne von dieser Ausführungsform abzuweichen, beim Ausführen solcher anderer und/oder zusätzlicher Operationen beteiligt sein und/oder dies erleichtern. In diesen zusätzlichen und/oder alternativen Anordnungen können Hardware- und/oder Firmware-Schaltungen (nicht gezeigt) in den Schaltungen 118 enthalten sein, die zumindest teilweise das Schreiben in Doorbells 170 und/oder 192 über z. B. einen oder mehrere Interrupt-Mechanismen (z. B. eine oder mehrere Message Signaled Interrupts (MSI/MSI-X und/oder andere Mechanismen) ermöglichen. Diese Ausführungsform sollte breit als alle solchen Abwandlungen, Varianten und Alternativen umfassend ausgelegt werden.
  • So kann eine Ausführungsform Schaltungen umfassen, um die Fähigkeit eines ersten NIC in einem Client zum Zugreifen auf mindestens eine Befehlsschnittstelle eines anderen Controllers (z. B. des Typs Speicher-Controller und/oder eines anderen/zusätzlichen Typs) des Servers über einen zweiten NIC in einem Server, der entfernt vom Client gelegen ist, und auf eine Weise, die unabhängig von der Betriebssystemumgebung im Server ist, zumindest teilweise zu erleichtern. Der NIC im Client und der NIC im Server können entsprechende Remote-Direct-Memory-Access-fähige Netzwerkschnittstellen-Controller (z. B. Controller, die zumindest teilweise in der Lage sind, RDMA zu nutzen und/oder darüber zu kommunizieren) sein oder umfassen. Die Befehlsschnittstelle kann mindestens eine Controller-Befehlswarteschlange umfassen (z. B. des Typs Speicher-Controller und/oder eines anderen/zusätzlichen Typs). Ein solches Zugreifen kann das Schreiben von mindestens einem Warteschlangenelement in die mindestens eine Befehlswarteschlange umfassen, um den anderen Controller anzuweisen, mindestens eine Operation durchzuführen (die z. B. das Speichern einbezieht und/oder einen oder mehrere andere und/oder zusätzliche Typen von Operationen, wie beispielsweise andere und/oder zusätzliche Eingabe/Ausgabeoperationen einbezieht), die dem anderen Controller zugehörig sind. Der andere Controller kann die mindestens eine Operation zumindest teilweise als Reaktion auf das mindestens eine Warteschlangenelement durchführen. Viele Alternativen, Varianten und Abwandlungen sind möglich.
  • So kann in dieser Ausführungsform direkt durch den RNIC 106 des Clients über eine oder mehrere RDMA-Transaktionen auf eine Weise auf die eine oder mehreren Befehlsschnittstellen 110 des Speicher-Controllers 112 im Server 20 zugegriffen werden, die die OSE 32 des Servers und/oder die CPU 12 umgeht oder unabhängig davon ist und/oder sie nicht einbezieht. Vorteilhafterweise kann dies das Kommunizieren von Speicherbefehlen, Daten und Abschlussmeldungen zwischen dem Client und Server viel schneller und effizienter und mit einer verkürzten Latenzzeit ermöglichen. Darüber hinaus können in dieser Ausführungsform Interaktionen zwischen dem RNIC 108 und dem Controller 112 vollständig oder nahezu vollständig durch Hardware (z. B. unter Verwendung von Peer-to-Peer-Speicher und Doorbell-Schreiboperationen) und auch auf eine Weise durchgeführt werden, die die OSE 32 des Servers und/oder die CPU 12 umgeht, unabhängig davon ist und/oder nicht einbezieht. Vorteilhafterweise kann dies ermöglichen, dass solche Interaktionen viel schneller und effizienter und mit einer verkürzten Latenzzeit durchgeführt werden. Zusätzlich können die vorhergehenden Merkmale dieser Ausführungsform den Stromverbrauch des Servers, die Wärmeausstrahlung und den Betrag der durch die OSE 32 und CPU 12 verbrauchten Bandbreite verringern.
  • Viele andere Abwandlungen sind möglich. Zum Beispiel kann in dieser Ausführungsform der Client 10, wie vorhergehend erwähnt, mehrere Clients umfassen. Wenn RDMA für Kommunikationen zwischen dem Server 20 und den Clients 10 eingesetzt wird, können die Clients 10 in dieser Ausführungsform vorteilhafterweise die Puffer 130A...130N als einen gemeinsamen Pool von Puffern zwischen oder unter dem Client 10 dynamisch gemeinsam zum Durchführen ihrer Kommunikationen mit dem Server 20, dem RNIC 108 und/oder dem Controller 112 benutzen. Um eine solche gemeinsame Pufferbenutzung zu ermöglichen, kann der RNIC 108 zumindest teilweise in der Lage sein, Pufferangabeinformationen handzuhaben, anzupassen und/oder zu ändern, die zumindest teilweise in Befehlen 105 angezeigt werden können, die dem Server 20 durch die Clients 10 bereitgestellt werden, um zu ermöglichen, dass die Puffer 130A...130N und/oder andere Server-Ressourcen unter den Clients 10 gemeinsam benutzt werden, ohne dass dies zum Beispiel Probleme zur Folge hat, die mit der Konkurrenz verbunden sind.
  • Zum Beispiel können der eine oder die mehreren Zeiger 181 und/oder Stags, die durch den einen oder die mehreren Zeiger 181 angezeigt werden, entsprechende Informationen umfassen, die der RNIC 108 mit einem oder mehreren Puffern und/oder Puffer-Pools in den Puffern 130A...130N anstatt und/oder zusätzlich zu einem oder mehreren Speicherbereichs-Handles verknüpfen kann. In dieser Anordnung können die Clients 10 RDMA-Leseoperationen unter Verwendung solcher Zeiger 181 durchführen und der RNIC 108 kann Schreiboperationen in den einen oder die mehreren Puffer und/oder Pufferpools durchführen, die durch die entsprechenden Informationen und/oder Zeiger 181 angezeigt werden. Beim Durchführen seiner Operationen kann der RNIC 108 die tatsächlichen Befehle und/oder Befehlswarteschlangenelemente, die dem Controller 112 bereitgestellt werden, zweckmäßig anpassen, damit dies zur Folge hat, dass die richtigen Puffer usw. durch den Controller 112 beschrieben werden, wenn der Controller 112 solche Befehle und/oder Befehlswarteschlangenelemente durchführt.
  • Alternativ oder zusätzlich dazu kann der RNIC 108, ohne von dieser Ausführungsform abzuweichen, eine gemeinsam verwendete Empfangswarteschlange (nicht gezeigt) umfassen und/oder ihr zugehörig sein, um zum Beispiel Befehle 105 von mehreren Clients 10 zu empfangen. Der RNIC 108 kann in der Lage sein, zumindest teilweise eine oder mehrere zweckmäßige Server-Pufferadressen, Werte und/oder andere Informationen in einem oder mehreren Abschnitten (z. B. Warteschlangenelemente 116, Werte 201, Zeiger 181 und/oder andere Informationen) der empfangenen Befehle 105 zu ersetzen, um das gemeinsame Verwenden der Strukturen in den einen oder mehreren Befehlsschnittstellen 110 zwischen oder unter mehreren Clients 10 zu ermöglichen, ohne dass dies eine Konkurrenz oder eine andere Verschlechterung der Leistung zur Folge hat. In dieser Anordnung können den/die Clients nicht einer oder mehrere Stags zur Befehlswarteschlange des Speicher-Controllers und/oder der Doorbell bereitgestellt werden und/oder verwenden und das Schreiben in diese Strukturen kann durch den RNIC 108 des Servers durchgeführt werden. Vorteilhafterweise kann dies mehreren Clients 10, die der gemeinsam benutzten Empfangswarteschlange zugehörig sein und/oder diese verwenden können, ermöglichen, dieselbe Speicher-Controller-Befehlswarteschlange, Doorbell und/oder andere Strukturen zu verwenden und/oder gemeinsam zu benutzen.
  • Zum Beispiel können im Falle einer Schreiboperation einer oder mehrere Zeiger 181, einer oder mehrere Werte 201 und/oder andere Informationen in einem oder mehreren Befehlen 105 zumindest teilweise einen oder mehrere Speicher-Controller-Stags für die Schreiboperation (und die entsprechenden Informationen) und/oder einen oder mehrere RDMA-Stags zu einem oder mehreren Puffern anzeigen, in die eines oder mehrere Abschlusswarteschlangenelemente geschrieben werden können. Der RNIC 108 kann zumindest teilweise auf der Grundlage der einen oder mehreren empfangenen Befehle 105 und/oder anderen Informationen, die im RNIC 108 gespeichert sind, einen oder mehrere Puffer in den Puffern 130A...130N und einen oder mehrere Orte in der Befehlswarteschlange 114 auswählen, an denen die zu schreibenden Daten 199 beziehungsweise eines oder mehrere entsprechende Befehlswarteschlangenelemente an den Controller 112 zu posten sind. Der RNIC 108 kann die Daten 199 und das eine oder die mehreren entsprechenden Befehlswarteschlangenelemente gemäß solchen Auswahlen posten und danach die Doorbell 170 läuten. So wie sie durch den RNIC 108 gepostet werden, können das eine oder die mehreren Befehlswarteschlangenelemente die einen oder mehreren Speicher-Controller-Stags, die in dem einen oder den mehreren Befehlen 105 geliefert werden, die Befehlskennung 302, Sicherheitskontextinformationen (z. B. um die Validierung von einem oder mehreren Speicher-Controller-Stags zu ermöglichen) und/oder einen oder mehrere Stags zu dem einen oder den mehreren Puffern anzeigen, in denen die Daten 199 gepostet wurden. Nachdem der Controller 112 die angeforderten einen oder mehreren Schreiboperationen abgeschlossen und eines oder mehrere Abschlusswarteschlangenelemente gepostet hat, kann der Controller 112 die Doorbell 192 läuten. Der RNIC 108 kann zumindest teilweise auf der Grundlage von Informationen in der Tabelle 250 eine oder mehrere zweckmäßige Antworten 197 erzeugen und an den einen oder die mehreren Clients weiterleiten, die den empfangenen Befehl 105 bereitgestellt haben.
  • Im Falle einer Leseoperation können allgemein analoge Informationen im Befehl 105 bereitgestellt werden und allgemein analoge Operationen können durch den RNIC 108 und/oder den Controller 112 durchgeführt werden. Im Falle einer Leseoperation können indes die Daten 199, die durch den Controller 112 gelesen werden, durch den Controller 112 in einem oder mehreren der Puffer 130A...130N gespeichert werden, die durch den RNIC 108 angegeben werden, und können durch den RNIC 108 gelesen werden anstatt umgekehrt (z. B. wie dies in einer Schreiboperation der Fall sein kann). Der RNIC 108 kann die gelesenen Daten 199 an den einen oder die mehreren Clients übertragen, die den empfangenen Befehl 105 in einer oder mehreren Antworten 197 bereitgestellt haben. In der vorhergehenden Anordnung kann der Befehl 105 einem Befehl, der durch einen Client zum Zugreifen auf lokalen Speicher des Clients verwendet wird, zumindest aus dem Gesichtspunkt der einen oder mehreren durch den Client ausgeführten Anwendungen, die einen solchen Zugriff einleiten, ähnlich oder damit identisch sein. Vorteilhafterweise kann dies ermöglichen, dass entfernte Operationen und/oder RDMA-Transaktionen der vorhergehend beschriebenen Typen für diese einen oder mehreren durch den Client ausgeführten Anwendungen im Wesentlichen transparent sind.
  • So kann es in dieser Ausführungsform auf vorteilhafte Weise für mehrere Clients möglich sein, die Befehlswarteschlange des Speicher-Controllers, Doorbells und/oder die Puffer des Servers gemeinsam zu verwenden und/oder diese Strukturen (über den RNIC des Servers) unter Verwendung des RDMA-Protokolls zu schreiben, ohne unter den Ressourcenkonkurrenzproblemen (und/oder den anderen Nachteilen) zu leiden, die anderenfalls auftreten könnten. Der RNIC des Servers kann in der Lage sein, Informationen, die den Befehlen 105 des Clients zugehörig sind und/oder darin enthalten sind, zumindest teilweise abzuwandeln, um ein solches gemeinsames Verwenden und/oder gemeinsames Verwenden von RDMA-Stag-Informationen zwischen oder unter den Clients zu erleichtern. Vorteilhafterweise kann dadurch ermöglicht werden, das RDMA-Protokoll zur Übertragung und/oder zum Abschluss von Befehlen zwischen dem Server und mehreren Clients mit verbesserter Skalierbarkeit, während der Speicherverbrauch zum Ausführen solcher Merkmale verringert wird, und ohne Verschlechterung der Übertragungsrate der Kommunikationsleitung einzusetzen.
  • Viele andere und/oder zusätzliche Abwandlungen, Varianten und/oder Alternativen sind möglich, ohne von dieser Ausführungsform abzuweichen. Folglich sollte diese Ausführungsform breit als alle solchen Alternativen, Abwandlungen und Varianten umfassend ausgelegt werden.

Claims (29)

  1. Vorrichtung, die Folgendes umfasst: Schaltungen, um es einem ersten Netzwerkschnittstellen-Controller (Network Interface Controller – NIC) in einem Client zumindest teilweise zu erleichtern, in der Lage zu sein, über einen zweiten NIC in einem Server, der entfernt vom Client gelegen ist, und auf eine Weise, die unabhängig von einer Betriebssystemumgebung in dem Server ist, auf mindestens eine Befehlsschnittstelle eines anderen Controllers des Servers zuzugreifen, wobei die mindestens eine Befehlsschnittstelle mindestens eine Befehlswarteschlange des anderen Controllers umfasst, wobei das Zugreifen das Schreiben von mindestens einem Warteschlangenelement in die mindestens eine Befehlswarteschlange umfasst, um den anderen Controller anzuweisen, mindestens eine Operation durchzuführen, die dem anderen Controller zugehörig ist, wobei der andere Controller die mindestens eine Operation zumindest teilweise als Reaktion auf das mindestens eine Warteschlangenelement durchführt.
  2. Vorrichtung nach Anspruch 1, wobei: die mindestens eine Operation mindestens eines von einer Schreiboperation und einer Leseoperation umfasst, die Speicher einbezieht; ein integrierter Schaltungschip den zweiten NIC, den anderen Controller und eine Zentraleinheit (Central Processing Unit – CPU) umfasst, wobei die CPU die Betriebssystemumgebung ausführt; und der Speicher Massenspeicher umfasst.
  3. Vorrichtung nach Anspruch 1, wobei: die Schaltungen zumindest teilweise den zweiten NIC und den anderen Controller umfassen; die mindestens eine Befehlsschnittstelle auch mindestens eine Abschlusswarteschlange, mindestens eine Doorbell und mindestens einen Datenpuffer umfasst; der zweite NIC zumindest teilweise Zeiger auf den ersten NIC bereitstellt, um zumindest teilweise anzuzeigen, wo die mindestens eine Befehlswarteschlange, die mindestens eine Abschlusswarteschlange, die mindestens eine Doorbell und der mindestens eine Datenpuffer sich befinden; und der erste NIC einen oder mehrere der Zeiger zum Zugreifen auf die mindestens eine Befehlsschnittstelle verwendet.
  4. Vorrichtung nach Anspruch 3, wobei: der erste NIC das mindestens eine Warteschlangenelement in die mindestens eine Befehlswarteschlange schreibt, um den anderen Controller anzuweisen, die mindestens eine Operation durchzuführen; der erste NIC die mindestens eine Doorbell läutet; der andere Controller zumindest teilweise als Reaktion auf die mindestens eine Doorbell das mindestens eine Warteschlangenelement liest und zumindest teilweise die mindestens eine Operation durchführt; der andere Controller nach dem zumindest partiellen Abschluss der mindestens einen Operation das mindestens eine Abschlusswarteschlangenelement in die mindestens eine Abschlusswarteschlange schreibt und zumindest teilweise nach dem Abschluss der mindestens einen Operation eine andere Doorbell läutet, die dem zweiten NIC zugehörig ist; und der zweite NIC zumindest teilweise als Reaktion auf die andere Doorbell zumindest teilweise das mindestens eine Abschlusswarteschlangenelement dem ersten NIC bereitstellt.
  5. Vorrichtung nach Anspruch 3, wobei: der mindestens eine Agent im Server zumindest teilweise einen oder mehrere Einträge in einer oder mehreren Warteschlangen, die dem zweiten NIC zugehörig sind, einrichtet, um das Kopieren von einem oder mehreren anderen Warteschlangeneinträgen zu ermöglichen, die dem anderen Controller zugehörig sind; der mindestens eine Agent zumindest teilweise einen oder mehrere Pointer aktualisiert, die einem oder mehreren Warteschlangenpaaren zugehörig sind, die dem anderen Controller und dem zweiten NIC zugehörig sind; und der mindestens eine Agent einen oder mehrere wiederzuverwendende Puffer anzeigt.
  6. Vorrichtung nach Anspruch 3, wobei: das mindestens eine Warteschlangenelement mindestens eine Befehlskennung umfasst; der andere Controller nach dem zumindest partiellen Durchführen der mindestens einen Operation mindestens ein Abschlusswarteschlangenelement in mindestens eine Abschlusswarteschlange, die dem anderen Controller zugehörig ist, schreibt, wobei das mindestens eine Abschlusswarteschlangenelement zumindest teilweise die mindestens eine Befehlskennung anzeigt; und der zweite NIC zumindest teilweise mindestens einen anderen Befehl ausführt, der dem mindestens einen Befehlswarteschlangenelement zugehörig ist, das dem zweiten NIC zugehörig ist, wobei das mindestens eine Befehlswarteschlangenelement zumindest teilweise durch die mindestens eine Befehlskennung identifiziert wird.
  7. Vorrichtung nach Anspruch 6, wobei: das mindestens eine Befehlswarteschlangenelement in mindestens einem Eintrag in einer Tabelle an einem Index gespeichert ist, der zumindest teilweise durch die mindestens eine Befehlskennung angezeigt wird, wobei jeder entsprechende Eintrag in der Tabelle einem oder mehreren entsprechenden Puffern von mehreren Puffern zugehörig ist, die den mindestens einen Puffer umfassen.
  8. Vorrichtung nach Anspruch 7, wobei: die mindestens eine Operation ein Lesen aus dem Speicher umfasst; der andere Controller zumindest teilweise vor dem Abschluss der mindestens einen Operation zumindest teilweise das mindestens eine Befehlswarteschlangenelement von der Tabelle zumindest teilweise auf der Grundlage der mindestens einen Befehlskennung auswählt; und der andere Controller das mindestens eine Befehlswarteschlangenelement in mindestens eine andere Befehlswarteschlange, die dem zweiten NIC zugehörig ist, schreibt, in die mindestens eine Abschlusswarteschlange schreibt und die mindestens eine andere Doorbell läutet.
  9. Verfahren, das Folgendes umfasst: zumindest partielles Erleichtern des Zugreifens durch einen ersten Netzwerkschnittstellen-Controller (Network Interface Controller – NIC) in einem Client, über einen zweiten NIC in einem Server, der entfernt vom Client gelegen ist, durch Schaltungen und auf eine Weise, die unabhängig von einer Betriebssystemumgebung in dem Server ist, auf mindestens eine Befehlsschnittstelle eines anderen Controllers des Servers, wobei die mindestens eine Befehlsschnittstelle mindestens eine Befehlswarteschlange des anderen Controllers umfasst, wobei das Zugreifen das Schreiben von mindestens einem Warteschlangenelement in die mindestens eine Befehlswarteschlange umfasst, um den anderen Controller anzuweisen, mindestens eine Operation durchzuführen, die dem anderen Controller zugehörig ist, wobei der andere Controller die mindestens eine Operation zumindest teilweise als Reaktion auf das mindestens eine Warteschlangenelement durchführt.
  10. Verfahren nach Anspruch 9, wobei: die mindestens eine Operation mindestens eines von einer Schreiboperation und einer Leseoperation umfasst, die Speicher einbezieht; ein integrierter Schaltungschip den zweiten NIC, den anderen Controller und eine Zentraleinheit (Central Processing Unit – CPU) umfasst, wobei die CPU die Betriebssystemumgebung ausführt; und der Speicher Massenspeicher umfasst.
  11. Verfahren nach Anspruch 9, wobei: die Schaltungen zumindest teilweise den zweiten NIC und den anderen Controller umfassen; die mindestens eine Befehlsschnittstelle auch mindestens eine Abschlusswarteschlange, mindestens eine Doorbell und mindestens einen Datenpuffer umfasst; der zweite NIC zumindest teilweise Zeiger auf den ersten NIC bereitstellt, um zumindest teilweise anzuzeigen, wo die mindestens eine Befehlswarteschlange, die mindestens eine Abschlusswarteschlange, die mindestens eine Doorbell und der mindestens eine Datenpuffer sich befinden; und der erste NIC einen oder mehrere der Zeiger zum Zugreifen auf die mindestens eine Befehlsschnittstelle verwendet.
  12. Verfahren nach Anspruch 11, wobei: der erste NIC das mindestens eine Warteschlangenelement in die mindestens eine Befehlswarteschlange schreibt, um den anderen Controller anzuweisen, die mindestens eine Operation durchzuführen; der erste NIC die mindestens eine Doorbell läutet; der andere Controller zumindest teilweise als Reaktion auf die mindestens eine Doorbell das mindestens eine Warteschlangenelement liest und zumindest teilweise die mindestens eine Operation durchführt; der andere Controller zumindest teilweise nach Abschluss der mindestens einen Operation das mindestens eine Abschlusswarteschlangenelement in die mindestens eine Abschlusswarteschlange schreibt und zumindest teilweise nach dem Abschluss der mindestens einen Operation eine andere Doorbell läutet, die dem zweiten NIC zugehörig ist; und der zweite NIC zumindest teilweise als Reaktion auf die andere Doorbell zumindest teilweise das mindestens eine Abschlusswarteschlangenelement dem ersten NIC bereitstellt.
  13. Verfahren nach Anspruch 11, wobei: der mindestens eine Agent im Server zumindest teilweise einen oder mehrere Einträge in einer oder mehreren Warteschlangen, die dem zweiten NIC zugehörig sind, einrichtet, um das Kopieren von einem oder mehreren anderen Warteschlangeneinträgen zu ermöglichen, die dem anderen Controller zugehörig sind; der mindestens eine Agent zumindest teilweise einen oder mehrere Pointer aktualisiert, die einem oder mehreren Warteschlangenpaaren zugehörig sind, die dem anderen Controller und dem zweiten NIC zugehörig sind; und der mindestens eine Agent einen oder mehrere wiederzuverwendende Puffer anzeigt.
  14. Verfahren nach Anspruch 11, wobei: das mindestens eine Warteschlangenelement mindestens eine Befehlskennung umfasst; der andere Controller nach dem zumindest partiellen Durchführen der mindestens einen Operation mindestens ein Abschlusswarteschlangenelement in mindestens eine Abschlusswarteschlange, die dem anderen Controller zugehörig ist, schreibt, wobei das mindestens eine Abschlusswarteschlangenelement zumindest teilweise die mindestens eine Befehlskennung anzeigt; und der zweite NIC zumindest teilweise mindestens einen anderen Befehl ausführt, der dem mindestens einen Befehlswarteschlangenelement zugehörig ist, das dem zweiten NIC zugehörig ist, wobei das mindestens eine Befehlswarteschlangenelement zumindest teilweise durch die mindestens eine Befehlskennung identifiziert wird.
  15. Verfahren nach Anspruch 14, wobei: das mindestens eine Befehlswarteschlangenelement in mindestens einem Eintrag in einer Tabelle an einem Index gespeichert ist, der zumindest teilweise durch die mindestens eine Befehlskennung angezeigt wird, wobei jeder entsprechende Eintrag in der Tabelle einem oder mehreren entsprechenden Puffern von mehreren Puffern zugehörig ist, die den mindestens einen Puffer umfassen.
  16. Verfahren nach Anspruch 15, wobei: die mindestens eine Operation ein Lesen aus dem Speicher umfasst; der andere Controller zumindest teilweise vor dem Abschluss der mindestens einen Operation zumindest teilweise das mindestens eine Befehlswarteschlangenelement von der Tabelle zumindest teilweise auf der Grundlage der mindestens einen Befehlskennung auswählt; und der andere Controller das mindestens eine Befehlswarteschlangenelement in mindestens eine andere Befehlswarteschlange, die dem zweiten NIC zugehörig ist, schreibt, in die mindestens eine Abschlusswarteschlange schreibt und die mindestens eine andere Doorbell läutet.
  17. Maschinenlesbarer Speicher, der einen oder mehrere Befehle speichert, die, wenn sie durch eine Maschine ausgeführt werden, zur Folge haben, dass Operationen durchgeführt werden, die Folgendes umfassen: zumindest partielles Erleichtern des Zugreifens durch einen ersten Netzwerkschnittstellen-Controller (Network Interface Controller – NIC) in einem Client, über einen zweiten NIC in einem Server, der entfernt vom Client gelegen ist, durch Schaltungen und auf eine Weise, die unabhängig von einer Betriebssystemumgebung in dem Server ist, auf mindestens eine Befehlsschnittstelle eines anderen Controllers des Servers, wobei die mindestens eine Befehlsschnittstelle mindestens eine Befehlswarteschlange des anderen Controllers umfasst, wobei das Zugreifen das Schreiben von mindestens einem Warteschlangenelement in die mindestens eine Befehlswarteschlange umfasst, um den anderen Controller anzuweisen, mindestens eine Operation durchzuführen, die dem anderen Controller zugehörig ist, wobei der andere Controller die mindestens eine Operation zumindest teilweise als Reaktion auf das mindestens eine Warteschlangenelement durchführt.
  18. Speicher nach Anspruch 17, wobei: die mindestens eine Operation mindestens eines von einer Schreiboperation und einer Leseoperation umfasst, die Speicher einbezieht; ein integrierter Schaltungschip den zweiten NIC, den anderen Controller und eine Zentraleinheit (Central Processing Unit – CPU) umfasst, wobei die CPU die Betriebssystemumgebung ausführt; und der Speicher Massenspeicher umfasst.
  19. Speicher nach Anspruch 17, wobei: die Schaltungen zumindest teilweise den zweiten NIC und den anderen Controller umfassen; die mindestens eine Befehlsschnittstelle auch mindestens eine Abschlusswarteschlange, mindestens eine Doorbell und mindestens einen Datenpuffer umfasst; der zweite NIC zumindest teilweise Zeiger auf den ersten NIC bereitstellt, um zumindest teilweise anzuzeigen, wo die mindestens eine Befehlswarteschlange, die mindestens eine Abschlusswarteschlange, die mindestens eine Doorbell und der mindestens eine Datenpuffer sich befinden; und der erste NIC einen oder mehrere der Zeiger zum Zugreifen auf die mindestens eine Befehlsschnittstelle verwendet.
  20. Speicher nach Anspruch 19, wobei: der erste NIC das mindestens eine Warteschlangenelement in die mindestens eine Befehlswarteschlange schreibt, um den anderen Controller anzuweisen, die mindestens eine Operation auszuführen; der erste NIC die mindestens eine Doorbell läutet; der andere Controller zumindest teilweise als Reaktion auf die mindestens eine Doorbell das mindestens eine Warteschlangenelement liest und zumindest teilweise die mindestens eine Operation durchführt; der andere Controller zumindest teilweise nach dem Abschluss der mindestens einen Operation das mindestens eine Abschlusswarteschlangenelement in die mindestens eine Abschlusswarteschlange schreibt und zumindest teilweise nach dem Abschluss der mindestens einen Operation eine andere Doorbell läutet, die dem zweiten NIC zugehörig ist; und der zweite NIC zumindest teilweise als Reaktion auf die andere Doorbell zumindest teilweise das mindestens eine Abschlusswarteschlangenelement dem ersten NIC bereitstellt.
  21. Speicher nach Anspruch 19, wobei: der mindestens eine Agent im Server zumindest teilweise einen oder mehrere Einträge in einer oder mehreren Warteschlangen, die dem zweiten NIC zugehörig sind, einrichtet, um das Kopieren von einem oder mehreren anderen Warteschlangeneinträgen zu ermöglichen, die dem anderen Controller zugehörig sind; der mindestens eine Agent zumindest teilweise einen oder mehrere Pointer aktualisiert, die einem oder mehreren Warteschlangenpaaren zugehörig sind, die dem anderen Controller und dem zweiten NIC zugehörig sind; und der mindestens eine Agent einen oder mehrere wiederzuverwendende Puffer anzeigt.
  22. Speicher nach Anspruch 19, wobei: das mindestens eine Warteschlangenelement mindestens eine Befehlskennung umfasst; der andere Controller nach dem zumindest partiellen Durchführen der mindestens einen Operation mindestens ein Abschlusswarteschlangenelement in mindestens eine Abschlusswarteschlange, die dem anderen Controller zugehörig ist, schreibt, wobei das mindestens eine Abschlusswarteschlangenelement zumindest teilweise die mindestens eine Befehlskennung anzeigt; und der zweite NIC zumindest teilweise mindestens einen anderen Befehl ausführt, der dem mindestens einen Befehlswarteschlangenelement zugehörig ist, das dem zweiten NIC zugehörig ist, wobei das mindestens eine Befehlswarteschlangenelement zumindest teilweise durch die mindestens eine Befehlskennung identifiziert wird.
  23. Speicher nach Anspruch 22, wobei: das mindestens eine Befehlswarteschlangenelement in mindestens einem Eintrag in einer Tabelle an einem Index gespeichert ist, der zumindest teilweise durch die mindestens eine Befehlskennung angezeigt wird, wobei jeder entsprechende Eintrag in der Tabelle einem oder mehreren entsprechenden Puffern von mehreren Puffern zugehörig ist, die den mindestens einen Puffer umfassen.
  24. Speicher nach Anspruch 23, wobei: die mindestens eine Operation ein Lesen aus dem Speicher umfasst; der andere Controller zumindest teilweise vor dem Abschluss der mindestens einen Operation zumindest teilweise das mindestens eine Befehlswarteschlangenelement von der Tabelle zumindest teilweise auf der Grundlage der mindestens einen Befehlskennung auswählt; und der andere Controller das mindestens eine Befehlswarteschlangenelement in mindestens eine andere Befehlswarteschlange, die dem zweiten NIC zugehörig ist, schreibt, in die mindestens eine Abschlusswarteschlange schreibt und die mindestens eine andere Doorbell läutet.
  25. Vorrichtung nach Anspruch 1, wobei: der erste NIC und der zweite NIC entsprechende Remote Direct Memory Access(RDMA)-fähige Netzwerkschnittstellen-Controller umfassen; der andere Controller einen Speicher-Controller umfasst; und die mindestens eine Operation Speicher einbezieht, der dem Speicher-Controller zugehörig ist.
  26. Verfahren nach Anspruch 9, wobei: der erste NIC und der zweite NIC entsprechende Remote Direct Memory Access(RDMA)-fähige Netzwerkschnittstellen-Controller umfassen; der andere Controller einen Speicher-Controller umfasst; und die mindestens eine Operation Speicher einbezieht, der dem Speicher-Controller zugehörig ist.
  27. Speicher nach Anspruch 17, wobei: der erste NIC und der zweite NIC entsprechende Remote Direct Memory Access(RDMA)-fähige Netzwerkschnittstellen-Controller umfassen; der andere Controller einen Speicher-Controller umfasst; und die mindestens eine Operation Speicher einbezieht, der dem Speicher-Controller zugehörig ist.
  28. Vorrichtung nach Anspruch 1, wobei: der Client mehrere Clients umfasst, um die mindestens eine Befehlswarteschlange gemeinsam zu benutzen.
  29. Vorrichtung nach Anspruch 1, wobei: der Client mehrere Clients umfasst, um den mindestens einen Puffer-Pool, der im Server enthalten ist, gemeinsam zu benutzen.
DE112012001526.6T 2011-03-31 2012-03-27 Zumindest partielles Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen Pending DE112012001526T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/077,725 US8677031B2 (en) 2011-03-31 2011-03-31 Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
USUS-13/077,725 2011-03-31
PCT/US2012/030769 WO2012135234A2 (en) 2011-03-31 2012-03-27 Facilitating, at least in part, by circuitry, accessing of at least one controller command interface

Publications (1)

Publication Number Publication Date
DE112012001526T5 true DE112012001526T5 (de) 2014-01-02

Family

ID=46928831

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012001526.6T Pending DE112012001526T5 (de) 2011-03-31 2012-03-27 Zumindest partielles Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen

Country Status (4)

Country Link
US (3) US8677031B2 (de)
CN (1) CN103460202B (de)
DE (1) DE112012001526T5 (de)
WO (1) WO2012135234A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996755B2 (en) 2011-03-31 2015-03-31 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996403B2 (en) 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
GB2517097B (en) * 2012-05-29 2020-05-27 Intel Corp Peer-to-peer interrupt signaling between devices coupled via interconnects
US11966355B2 (en) * 2013-03-10 2024-04-23 Mellanox Technologies, Ltd. Network adapter with a common queue for both networking and data manipulation work requests
US10452316B2 (en) 2013-04-17 2019-10-22 Apeiron Data Systems Switched direct attached shared storage architecture
US9756128B2 (en) 2013-04-17 2017-09-05 Apeiron Data Systems Switched direct attached shared storage architecture
US9483431B2 (en) 2013-04-17 2016-11-01 Apeiron Data Systems Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA)
US9986028B2 (en) * 2013-07-08 2018-05-29 Intel Corporation Techniques to replicate data between storage servers
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
CN111625377B (zh) * 2017-04-01 2023-11-28 北京忆芯科技有限公司 代理及向队列添加条目的方法
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
US10846223B2 (en) * 2017-10-19 2020-11-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Cache coherency between a device and a processor
EP3942749A4 (de) 2019-05-23 2023-06-07 Hewlett Packard Enterprise Development LP Optimiertes adaptives routing zur reduzierung der anzahl von sprüngen
US11467873B2 (en) * 2019-07-29 2022-10-11 Intel Corporation Technologies for RDMA queue pair QOS management
US11622004B1 (en) * 2022-05-02 2023-04-04 Mellanox Technologies, Ltd. Transaction-based reliable transport

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298407B1 (en) 1998-03-04 2001-10-02 Intel Corporation Trigger points for performance optimization in bus-to-bus bridges
US6272591B2 (en) 1998-10-19 2001-08-07 Intel Corporation Raid striping using multiple virtual channels
US7165258B1 (en) 2002-04-22 2007-01-16 Cisco Technology, Inc. SCSI-based storage area network having a SCSI router that routes traffic between SCSI and IP networks
US20040252709A1 (en) * 2003-06-11 2004-12-16 Fineberg Samuel A. System having a plurality of threads being allocatable to a send or receive queue
US7826470B1 (en) * 2004-10-19 2010-11-02 Broadcom Corp. Network interface device with flow-oriented bus interface
US7562366B2 (en) * 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
US7439973B2 (en) * 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
JP2010512584A (ja) * 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
US8347359B2 (en) 2007-12-28 2013-01-01 Bruce Backa Encryption sentinel system and method
JP4701267B2 (ja) * 2008-06-04 2011-06-15 株式会社日立製作所 ストレージシステムおよびその管理方法
US8677031B2 (en) 2011-03-31 2014-03-18 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996755B2 (en) 2011-03-31 2015-03-31 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
US9244881B2 (en) 2011-03-31 2016-01-26 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface

Also Published As

Publication number Publication date
CN103460202B (zh) 2017-02-15
WO2012135234A2 (en) 2012-10-04
US9244881B2 (en) 2016-01-26
CN103460202A (zh) 2013-12-18
US20150234776A1 (en) 2015-08-20
US20140136646A1 (en) 2014-05-15
US8677031B2 (en) 2014-03-18
US8996755B2 (en) 2015-03-31
US20120254480A1 (en) 2012-10-04
WO2012135234A3 (en) 2013-03-14

Similar Documents

Publication Publication Date Title
DE112012001526T5 (de) Zumindest partielles Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen
DE102014109519A1 (de) Techniken zum Replizieren von Daten zwischen Speicherservern
DE112013000601T5 (de) Techniken für die Befehlsbestätigung für den Zugriff auf ein Speichergerät durch einen entfernten Client
DE102014109518A1 (de) Techniken zur Initialisierung von einem Speichergerät, auf das von der Ferne zugegriffen werden kann
DE102009030544B4 (de) Verfahren für ein koordiniertes Link-Power-Management auf einer Computerplattform, Computer und Rechensystem
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102004038649B4 (de) Dauerspeichervorrichtung für Sicherungsprozess-Prüfpunktzustände
DE112011101321B4 (de) Abfragen von Leistungsdaten auf einem parallelenComputersystem, das Rechenknoten aufweist
DE102019108376A1 (de) Sequenz zur Aushandlung und Aktivierung von Flexbus-Protokollen
DE102012208803B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102019124450A1 (de) Bandbreitenbegrenzung in solid-state-laufwerken
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE202010017669U1 (de) Befehls- und Interrupt-Gruppierung bei einer Datenspeichervorrichtung
DE102012209011B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE112009004075T5 (de) Selektives kommunizieren von daten eines peripheriegeräts zumehreren sendenden computern
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE112012006227T5 (de) Remotezugriff auf den direkten Speicher mit reduzierter Latenzzeit
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE102012209009A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102016121152A1 (de) Multiprozessorsystem mit Speicher, der durch den Multiprozessor gemeinsam verwendet wird, und Verfahren dafür
DE112011105868T5 (de) Netzwerkvorrichtungsauswahl
DE102009060301A1 (de) Das Ermöglichen mehrerer virtueller Geräte-Controller durch Umleiten eines Interrupts von einem physischen Geräte-Controller
DE102021122233A1 (de) Beschleuniger-controller-hub
DE112017001757T5 (de) Verfahren und vorrichtung zum koordinieren und authentifizieren von anfragen nach daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed

Effective date: 20130930

R016 Response to examination communication