DE102021109482A1 - SYSTEM UND VERFAHREN ZUR REGELUNG VON NVMe-oF-BEFEHLSANFRAGEN UND DATENFLUSS ÜBER EIN NETZWERK MIT UNGLEICHMÄßIGER GESCHWINDIGKEIT - Google Patents

SYSTEM UND VERFAHREN ZUR REGELUNG VON NVMe-oF-BEFEHLSANFRAGEN UND DATENFLUSS ÜBER EIN NETZWERK MIT UNGLEICHMÄßIGER GESCHWINDIGKEIT Download PDF

Info

Publication number
DE102021109482A1
DE102021109482A1 DE102021109482.8A DE102021109482A DE102021109482A1 DE 102021109482 A1 DE102021109482 A1 DE 102021109482A1 DE 102021109482 A DE102021109482 A DE 102021109482A DE 102021109482 A1 DE102021109482 A1 DE 102021109482A1
Authority
DE
Germany
Prior art keywords
host
command
switch
connection
data
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
DE102021109482.8A
Other languages
English (en)
Inventor
Brian Peter L'Ecuyer
Charles Tuffli
Steven Lahr
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102021109482A1 publication Critical patent/DE102021109482A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device

Abstract

Vorgeschlagen werden ein Verfahren und ein System zur Implementierung einer Flusssteuerung. Während des Betriebs identifiziert ein Switch einen Befehl von einem Host zum Zugriff auf ein mit dem Switch gekoppeltes Speichergerät. Der Switch stellt den Befehl in einer Befehlswarteschlange ein, die dem Host entspricht. Als Reaktion auf die Feststellung, dass eine zur Übertragung an den Host anstehende Datenmenge vom Speichergerät unter einem vorgegebenen Schwellenwert liegt, entfernt der Switch einen Befehl aus der Befehlswarteschlange und leitet den entfernten Befehl an das Speichergerät weiter.

Description

  • HINTERGRUND
  • Diese Offenbarung bezieht sich allgemein auf Speichersysteme. Genauer gesagt bezieht sich diese Offenbarung auf ein System und ein Verfahren, das die Flussrate zwischen Host-Geräten und Speicher-Arrays reguliert.
  • Nichtflüchtiger Speicher Express over Fabric (NVMe-oF) ermöglicht Computerservern (oder Hosts) die Kommunikation mit einem Speichersystem über ein Netzwerk. Zum Beispiel kann ein Host ein Solid-State-Laufwerk (SSD), das sich auf einer separaten Hardware befindet, über eine Switched Fabric lesen/schreiben. Die Geschwindigkeit des Netzwerkanschlusses eines Hosts kann sich von der Verbindungsgeschwindigkeit des Speicher-Arrays unterscheiden. Die nicht übereinstimmenden Link-Raten zwischen dem Host-Fabric-Link und dem Storage-Array-Fabric-Link können zu einer erheblichen Unterauslastung der vollen Link-Bandbreite führen.
  • Figurenliste
    • 1 zeigt ein beispielhaftes Speichersystem nach dem Stand der Technik.
    • 2 zeigt ein beispielhaftes Speichersystem, gemäß einer Ausführungsform.
    • 3 zeigt ein Flussdiagramm, das einen beispielhaften Frame-Übertragungsprozess eines Speicherarrays gemäß einer Ausführungsform illustriert.
    • 4 zeigt ein Diagramm, das den Mechanismus zur Regelung der Befehlsanforderungen gemäß einer Ausführungsform veranschaulicht.
    • 5 zeigt ein Flussdiagramm, das einen beispielhaften Prozess zur Regelung der Abgabe von Befehlsanforderungen gemäß einer Ausführungsform darstellt.
    • 6 zeigt eine beispielhafte Vorrichtung, die die Flusssteuerung in einem System mit NVMe-oF-angeschlossenen Geräten erleichtert, gemäß einer Ausführungsform.
    • 7 zeigt ein beispielhaftes Computersystem, das die Flusskontrolle in einem Netzwerk gemäß einer Ausführungsform erleichtert.
  • In den Abbildungen beziehen sich gleiche Referenznummern auf die gleichen Abbildungselemente.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende Beschreibung soll es dem Fachmann ermöglichen, die Ausführungsformen herzustellen und zu verwenden, und wird im Zusammenhang mit einer bestimmten Anwendung und deren Anforderungen gegeben. Verschiedene Modifikationen der offengelegten Ausführungsformen werden für den Fachmann leicht ersichtlich sein, und die hier definierten allgemeinen Prinzipien können auf andere Ausführungsformen und Anwendungen angewendet werden, ohne vom Geist und Umfang der vorliegenden Offenbarung abzuweichen. Daher ist der Umfang der vorliegenden Offenbarung nicht auf die gezeigten Ausführungsformen beschränkt, sondern es ist ihr der weitestgehende Geltungsbereich zuzuerkennen, der mit den hier offengelegten Prinzipien und Merkmalen vereinbar ist.
  • Die hier beschriebenen Ausführungsformen bieten eine Lösung für die Ende-zu-Ende-Flusskontrolle in vernetzten Geräten, die die NVMe-oF-Technologie implementieren. Der Flusskontrollmechanismus bestimmt a priori eine Übertragungsflussrate zwischen dem Speicher-Array und den Host-Geräten, um Frame-Drops zu verhindern und einen nahezu maximalen Verbindungsdurchsatz zu erreichen. Um eine ungleichmäßige Verteilung der Speicherressourcen des Speicherarrays unter den Hosts, die auf das Speicherarray zugreifen, zu verhindern, was auch zu einer unzureichenden Nutzung der gesamten verfügbaren Bandbreite des Speicherarrays führen kann, kann der Switch außerdem Befehlswarteschlangen implementieren, um von den Hosts empfangene Befehlsanforderungen in eine Warteschlange zu stellen, bevor diese Befehlsanforderungen an das Speicherarray weitergeleitet werden. Genauer gesagt unterhält der Switch einen Satz von Befehlswarteschlangen, eine Befehlswarteschlange pro Host, die die Übermittlung neu empfangener Befehlsanforderungen von einem bestimmten Host an das Speicher-Array verzögern kann, wenn die zur Übertragung anstehenden Daten an diesen Host einen vorgegebenen Schwellenwert überschreiten.
  • Eine Ausführungsform kann ein Verfahren und System zur Implementierung einer Flusssteuerung bereitstellen. Während des Betriebs identifiziert ein Switch einen Befehl von einem Host zum Zugriff auf ein mit dem Switch gekoppeltes Speichergerät. Der Switch stellt den Befehl in einer Befehlswarteschlange ein, die dem Host entspricht. Als Reaktion auf die Feststellung, dass eine zur Übertragung an den Host anstehende Datenmenge vom Speichergerät unter einem vorgegebenen Schwellenwert liegt, entfernt der Switch einen Befehl aus der Befehlswarteschlange und leitet den entfernten Befehl an das Speichergerät weiter.
  • In einer Variante dieser Ausführungsform unterhält der Switch eine Vielzahl von Befehlswarteschlangen. Jede Befehlswarteschlange in der Vielzahl der Befehlswarteschlangen entspricht einem anderen mit dem Switch gekoppelten Host.
  • In einer Variante dieser Ausführungsform wird der vorgegebene Schwellenwert auf der Grundlage der Größe des Speicherplatzes bestimmt, der dem Host durch das Speichergerät zugewiesen wurde.
  • In einer Variante dieser Ausführungsform unterteilt der Schalter einen Befehl in mehrere kleinere Befehle und stellt die mehreren kleineren Befehle in die Befehlswarteschlange.
  • In einer Variante dieser Ausführungsform erzeugt ein Controller des Speichergeräts auf der Grundlage des Befehls einen Eintrag in einer dem Host entsprechenden Arbeitsanforderungswarteschlange. Der Eintrag spezifiziert eine Größe eines Datenrahmens, der mit dem Befehl verbunden ist.
  • In einer weiteren Variante ist der Host über eine erste Kommunikationsverbindung mit dem Switch gekoppelt, das Speichergerät ist über eine zweite Kommunikationsverbindung mit dem Switch gekoppelt, und die erste und die zweite Kommunikationsverbindung haben unterschiedliche Verbindungsraten. Das Speichergerät bestimmt eine Verbindungsrate mit dem Host und setzt einen Startwert eines Countdown-Timers basierend auf der bestimmten Verbindungsrate und der Größe des Datenrahmens.
  • In einer weiteren Variante kommunizieren der Host und das Speichergerät über eine NVMe-oF-Technik (Non-Volatile Memory Express over Fabric) miteinander und bestimmen die Verbindungsrate, indem sie Informationen austauschen, die mit den verschiedenen Verbindungsraten verbunden sind, während sie eine NVMe-oF-Verbindung aufbauen.
  • In einer weiteren Variante ist ein mit dem Schalter gekoppeltes Steuerungsmodul so konfiguriert, dass es eine Verbindungsrate der ersten Kommunikationsverbindung bestimmt, eine Verbindungsrate der zweiten Kommunikationsverbindung bestimmt und die Verbindungsrate auf der Grundlage der bestimmten ersten und zweiten Kommunikationsverbindungsraten bestimmt.
  • In einer weiteren Variante ist der Startwert des Countdown-Timers gleich einer Dauer, die für die Übertragung des Datenframes mit der ermittelten Verbindungsrate benötigt wird.
  • In einer weiteren Variante lässt das Speichergerät den Countdown-Timer laufen, während es den Datenrahmen an den Host überträgt, und wartet, bis der Countdown-Timer abgelaufen ist, bevor es einen nachfolgenden Datenrahmen überträgt, der einem nächsten Eintrag in der Arbeitsanforderungswarteschlange entspricht.
  • Flusssteuerung für NVMe-oF
  • 1 zeigt ein beispielhaftes Speichersystem gemäß dem Stand der Technik. Das Speichersystem 100 kann eine Reihe von Hosts (z. B. Host 102 und Host 104), ein Speicher-Array (z. B. ein SSD-Speicher-Array) 106 und eine Switched Fabric 108 umfassen, die einen oder mehrere miteinander verbundene Switches enthält. Die Hosts und das Speicher-Array 106 können NVMe-oF unterstützen, so dass ein Host über die Switched Fabric 108 auf das Speicher-Array 106 zugreifen kann (z. B. lesen oder schreiben).
  • In 1 ist das Speicherarray 106 über eine Hochgeschwindigkeitsverbindung (z. B. eine 100-Gbit/s-Verbindung) mit der Switched Fabric 108 verbunden und der Host 102 ist ebenfalls über eine Hochgeschwindigkeitsverbindung mit der Switched Fabric 108 verbunden. Der Host 104 ist jedoch über eine langsame Verbindung (z. B. eine 25-Gbit/s-Verbindung) mit der Switched Fabric 108 verbunden. Der Unterschied in den Verbindungsgeschwindigkeiten zwischen dem Host 104 und dem Speicher-Array 106 kann dazu führen, dass die Hochgeschwindigkeitsverbindung des Speicher-Arrays 106 nicht ausgelastet wird. Genauer gesagt, wenn der Host 104 Daten aus dem Storage Array 106 liest, werden die Daten mit einer Rate von 100 Gbit/s bereitgestellt, was die 25-Gbit/s-Verbindung des Hosts 104 leicht überfordern kann (z. B. zu Überlastungen auf der 25-Gbit/s-Verbindung führt).
  • Ein bestehender Ansatz zur Handhabung des Ratenunterschieds zwischen der langsameren Verbindung des Hosts und der schnelleren Verbindung des Speicherarrays ist die Pufferung von Frames, die über die schnellere Verbindung innerhalb der Switched Fabric gesendet werden, während auf freie Plätze in der Ausgangswarteschlange der langsameren Verbindung gewartet wird (in diesem Beispiel die Ausgangswarteschlange, die dem Host 104 zugewiesen ist). Die Menge der Pufferung, die von der Switched Fabric bereitgestellt werden kann, ist jedoch begrenzt, und ohne die Ende-zu-Ende-Steuerung zur Verlangsamung des Senders (in diesem Beispiel das Speicher-Array 106) wird der Pufferplatz schließlich erschöpft sein, was zu verworfenen Frames führt.
  • Um eine Ende-zu-Ende-Flusskontrolle zu implementieren, erkennt ein bestehender Ansatz das Auftreten eines Frame-Drops, der daraus resultiert, dass der Switch-Puffer erschöpft ist, und fordert den Absender (z. B. das Speicher-Array oder den Host) auf, sich aus der Übertragung zurückzuziehen (z. B. die Bereitstellung angeforderter Daten oder das Senden zusätzlicher Anforderungen zu unterlassen). Ein anderer bestehender Ansatz beruht darauf, dass der Switch ein ECN-Paket (Explicit Congestion Notification) an den Sender sendet, wenn der Switch-Puffer bis zu einem bestimmten Schwellenwert belegt ist. Bei beiden Ansätzen wird die Übertragung (z. B. das Senden von Frames) mit einer niedrigeren Rate begonnen und dann die Übertragungsrate schrittweise erhöht, bis ein verworfener Frame erkannt oder ein ECN-Paket erzeugt wird. Nach der Erkennung des Staus (z. B. durch den Empfang eines ECN-Pakets) reduziert der Sender seine Übertragungsrate. Beispielsweise kann der Sender seine Übertragungsrate auf die Hälfte reduzieren und sie dann schrittweise erhöhen, bis ein weiteres Überlastungsereignis erkannt wird. Dies kann zu der sägezahnförmigen Leistungskurve führen, bei der die Nutzungsrate der verfügbaren Verbindung irgendwo zwischen 50 % und 100 % liegt.
  • Ein zusätzliches Schema zur Abschwächung von Überlastungen verwendet einen Pausenrahmen, um den Sender daran zu hindern, den Switch-Puffer zu überlaufen. Dieser Pausenmechanismus kann jedoch zum Head-of-Line-Blocking sowie zu einer erheblichen Verschlechterung der Systemleistung führen, wenn die Anzahl der Switch-Sprünge zunimmt.
  • Um eine Ende-zu-Ende-Flusskontrolle für das Speichersystem ohne die oben genannten Probleme bereitzustellen, bieten einige hierin diskutierte Ausführungsformen Mechanismen, um a priori zu bestimmen, wie hoch die Flussrate zwischen dem Speicher-Array und den Host-Geräten sein sollte. Genauer gesagt, können während der Anfangsphase des Aufbaus der Kommunikation zwischen einem Host und einem Controller des Speicherarrays die effektiven Verbindungsraten der Geräte ausgetauscht werden. Zum Beispiel können ein Host und das Speicher-Array während des anfänglichen Handshakes ihre Verbindungsraten austauschen. Wenn die Link-Rate des Hosts geringer ist als die des Storage Arrays, kann die Netzwerkschnittstelle des Storage Arrays die geringere Link-Rate des Hosts verwenden, um zu steuern, wie schnell Frames an den Host zurückgesendet werden können. Alternativ kann das Verwaltungsmodul (das ein Hardwaremodul oder ein von einem Prozessor ausführbares Softwareprogramm sein kann) des Switches verwendet werden, um die physikalischen Verbindungsschnittstellengeschwindigkeiten der Geräte (z. B. Hosts und Speicher-Arrays) im Netzwerk zu erhalten.
  • 2 illustriert ein beispielhaftes Speichersystem gemäß einer Ausführungsform. Das Speichersystem 200 kann eine Vielzahl von Hosts (z. B. Hosts 202 und 204), ein oder mehrere Speicher-Arrays (z. B. Speicher-Array 206), einen Switch 208 und ein Controller-Modul 210 umfassen. Die Hosts 202 und 204 können über verschiedene Arten von drahtgebundenen oder drahtlosen Verbindungen mit dem Switch 208 verbunden sein. In ähnlicher Weise kann das Speicher-Array 206 über verschiedene Arten von drahtgebundenen oder drahtlosen Verbindungen mit dem Switch 208 verbunden werden. Die Hosts 202 und 204 können über den Schalter 208 auf das Speicher-Array 206 zugreifen. Das Controller-Modul 210 kann sowohl mit dem Switch 208 als auch mit dem Speicher-Array 206 kommunizieren. In einigen Ausführungsformen können die Speicher-Arrays (z. B. das Speicher-Array 206), der Switch 208 und das Controller-Modul 210 in einem physischen Gehäuse 212 untergebracht werden. Das physische Gehäuse 212 kann einem vorgegebenen Formfaktor entsprechen (z. B. in einen Steckplatz eines Standardgehäuses passen). Alternativ kann jedes der Speicher-Arrays, der Switch 208 und das Controller-Modul 210 ein eigenständiges Hardware-Modul sein. Die verschiedenen Hardwaremodule können sich an unterschiedlichen physikalischen Orten befinden und über drahtgebundene oder drahtlose Kopplungen miteinander verbunden sein.
  • In einigen Ausführungsformen kann der Switch 208 einen mit dem Ethernet-Protokoll kompatiblen Switch umfassen. Je nach Anwendung ist es auch möglich, dass der Switch mit anderen Arten von Kommunikationsprotokollen kompatibel ist (z. B. ein Fibre Channel- oder InfiniBand® -Protokoll). In einigen Ausführungsformen kann das Speicher-Array 206 eine Reihe von physischen Laufwerken umfassen, z. B. SSDs und Festplattenlaufwerke (HDDs). In einigen Ausführungsformen kann die Hardware der Netzwerkschnittstelle (z. B. ein Netzwerkschnittstellen-Controller (NIC)) des Speicherarrays 206 einen Satz von Warteschlangen von Arbeitsanforderungen (z. B. Datenübertragungsanforderungen) verwalten, eine Warteschlange pro Host, wobei jede Arbeitsanforderung die Speicherbereiche beschreibt, die Daten enthalten, die über die Verbindung an einen entsprechenden Host gesendet werden sollen. Diese Warteschlangen können als Work-Request-Warteschlangen charakterisiert werden. Außerdem kann jede Warteschlange eine Verbindungsrate und einen Countdown-Timer verwalten, der die Zeit bis zum Senden eines nächsten Frames verfolgt. Genauer gesagt kann die Verbindungsrate während des anfänglichen Handshake-Prozesses bestimmt werden, wenn das Speicherarray 206 die Kommunikation mit dem entsprechenden Host herstellt. Alternativ kann das System, anstatt dass das Speicher-Array 206 die Verbindungsrate mit einem Host aushandelt, auf das Controller-Modul 210 zurückgreifen, um die Verbindungsrate zu bestimmen. Das Controllermodul 210 kommuniziert sowohl mit dem Storage Array 206 als auch mit dem Switch 208 und kann die Verbindungsraten auf beiden Seiten des Switches 208 kennen. Daher kann es eine Rate bestimmen, die von der Speicheranordnung 206 zur Kommunikation mit einem bestimmten Host verwendet werden sollte. Das Controller-Modul 210 kann dann solche Rateninformationen an das Speicher-Array 206 senden.
  • In dem in 2 gezeigten Beispiel beträgt die Verbindungsrate des Storage Array 206 100 Gbit/s, die Verbindungsrate des Host 202 100 Gbit/s und die Verbindungsrate des Host 204 25 Gbit/s. Während des anfänglichen Handshakes können das Speicherarray 206 und der Host 202 ihre Kommunikationsverbindungsrate als 100 Gbit/s aushandeln, was bedeutet, dass das Speicherarray 206 bei der Bereitstellung von Daten an den Host 202 die Daten mit einer Rate von 100 Gbit/s übertragen kann. In ähnlicher Weise können das Speicherarray 206 und der Host 204 während des anfänglichen Handshakes eine Kommunikationsverbindungsrate von 25 Gbit/s aushandeln. Die vom Speicher-Array 206 geführte Arbeitsanforderungs-Warteschlange für den Host 202 kann ausstehende Anforderungen für die Übertragung von Daten an den Host 202 enthalten und einen Datensatz führen, der die ausgehandelte Verbindungsrate von 100 Gbit/s angibt, während die Arbeitsanforderungs-Warteschlange für den Host 204 ausstehende Anforderungen für die Übertragung von Daten an den Host 204 enthalten kann und einen Datensatz führen kann, der die ausgehandelte Verbindungsrate von 25 Gbit/s angibt. Jede Arbeitsanforderung kann den Speicherplatz eines zu übertragenden Frames und dessen Länge angeben.
  • Die Arbeitsanforderungs-Warteschlange für den Host 202 kann auch einen Countdown-Timer verwalten, der verwendet werden kann, um einen Zeitpunkt für die Übertragung eines nächsten Frames zu bestimmen. Der Startwert des Timers kann auf der Grundlage der Länge eines zu übertragenden Frames (d. h. eines unmittelbar zu übertragenden Frames) und der ausgehandelten Verbindungsrate bestimmt werden. In dem in 2 gezeigten Beispiel kann die Netzwerkschnittstellen-Hardware des Speicherarrays 206 auf der Grundlage der in der Arbeitsanforderungs-Warteschlange für Host 204 gespeicherten Datensätze feststellen, dass die ausgehandelte Verbindungsrate für Host 204 25 Gbit/s beträgt. Wenn das Speicher-Array 206 im Begriff ist, einen Frame mit einer Länge von 2500 Byte an den Host 204 zu senden, kann es feststellen, dass die für die Übertragung dieses Frames benötigte Zeit 2500 Byte * 8 Bit/Byte / 25 Gbit/s = 800 ns beträgt. Folglich kann die Arbeitsanforderungs-Warteschlange für Host 202 ihren Timer-Startwert auf 800 ns setzen. Die Netzwerkschnittstelle des Speicherarrays 206 ist so konfiguriert, dass kein Frame übertragen wird, bis der Countdown-Timer Null erreicht. Mit anderen Worten: Nach dem Start der Frame-Übertragung und dem Einstellen des Startwerts des Countdown-Timers wartet die Netzwerkschnittstelle des Speicher-Arrays 206, bis der Countdown-Timer Null erreicht hat, bevor sie mit der Übertragung eines nächsten Frames beginnt. Da die Verbindungsrate des Speicherarrays 206 100 Gbit/s beträgt, ist die Zeit, die das Speicherarray 206 benötigt, um die Übertragung des 2500-Byte-Frames zu beenden, 2500 Byte * 8 Bits/Byte / 100 Gbit/s = 200 ns. Das bedeutet, dass das Speicher-Array 206 nach Abschluss der Übertragung des 2500-Byte-Frames weitere 600 ns warten muss, bevor es mit der Übertragung eines nächsten Frames in seiner Ausgangswarteschlange zum Host 202 beginnen kann. Da andererseits die Verbindungsraten von Speicher-Array 206 und Host 202 aufeinander abgestimmt sind, ist keine zusätzliche Wartezeit zwischen den Frames erforderlich, wenn das Speicher-Array 206 an den Host 202 sendet.
  • 3 zeigt ein Flussdiagramm, das einen beispielhaften Frame-Übertragungsprozess eines Speicherarrays gemäß einer Ausführungsform illustriert. Während einer anfänglichen Phase zur Herstellung der Kommunikation kann das Speicher-Array mit einem Host, der auf das Speicher-Array zugreift, eine Rate für die Kommunikation miteinander aushandeln (Vorgang 302). Wenn das Speicherarray mit der Switched Fabric über eine Verbindung gekoppelt ist, die eine niedrigere Verbindungsrate hat als die Verbindung zwischen der Switched Fabric und dem Host, ist die ausgehandelte Verbindungsrate die niedrigere Verbindungsrate des Hosts. Im Allgemeinen kann die ausgehandelte Kommunikationsrate die niedrigere Verbindungsrate sein, wenn der Host und das Speicher-Array nicht übereinstimmende Verbindungsraten haben. In einigen Ausführungsformen kann der Ratenverhandlungsprozess eine Erweiterung des bestehenden Verbindungsaufbauverfahrens sein, das durch das NVMe-oF-Protokoll definiert ist. Genauer gesagt kann der NVMe-oF-Handshake für den Verbindungsaufbau um den Austausch der Verbindungsraten der Endpunkte erweitert werden.
  • Nach der Aushandlung der Verbindungsrate kann das Speicher-Array bereit sein, die vom Host angeforderten Daten über die Switched Fabric an den Host zu übertragen. Zu Beginn bereitet das Speicher-Array eine Anzahl von Frames vor, die an den Host übertragen werden sollen (Vorgang 304). Die Größe der einzelnen Frames und die Anzahl der Frames kann durch eine Reihe von Faktoren bestimmt werden, z. B. durch die vom Host angeforderte Datenmenge und das vom Switched Fabric implementierte Kommunikationsprotokoll. Die Position und Größe jedes Frames kann in der Arbeitsanforderungs-Warteschlange gespeichert werden, die von der Netzwerkschnittstelle des Speicher-Arrays verwaltet wird. Das Speicher-Array setzt den Anfangswert eines Countdown-Timers basierend auf der ausgehandelten Verbindungsrate und der Größe eines unmittelbar zu übertragenden Frames (Vorgang 306). Zu Beginn der Übertragung kann der unmittelbar zu übertragende Frame der erste Frame einer Reihe von Frames sein, die an den Host übertragen werden sollen, wie durch den Kopfeintrag der Arbeitsanforderungs-Warteschlange angegeben. Wenn eine Reihe von Frames übertragen wurde, kann der sofort zu übertragende Frame der Frame sein, der als nächstes an der Reihe ist. Der Anfangswert des Countdown-Timers wird auf einen Zeitwert gesetzt, der der Zeit entspricht, die benötigt wird, um die Übertragung des Frames mit der ausgehandelten Rate abzuschließen. Wenn die ausgehandelte Rate z. B. 25 Gbit/s beträgt und die Größe des ersten Frames 2500 Byte ist, kann der Anfangswert des Countdown-Timers auf die Zeit eingestellt werden, die für die Übertragung von 2500 Byte bei einer Geschwindigkeit von 25 Gbit/s benötigt wird, also 800 ns.
  • Das Speicherarray beginnt mit der Übertragung des Frames und startet auch den Countdown-Timer (Vorgang 308). Die Übertragung des Frames und der Countdown-Timer können im Wesentlichen zur gleichen Zeit gestartet werden. Beachten Sie, dass das Speicher-Array in einigen Beispielen den Frame aus dem Speicher-Array mit der Verbindungsrate des Speicher-Arrays übertragen kann, die höher sein kann als die ausgehandelte Rate. In einem solchen Szenario kann der Frame in der Switched Fabric gepuffert werden, bevor er an den Host gesendet wird. Während Sie warten, dass der Countdown-Timer abläuft, kann das Speicher-Array Daten an andere Hosts übertragen.
  • Nach der Übertragung des Frames kann das Speicherarray feststellen, ob es sich um den letzten Frame handelt (Vorgang 310). Wenn ja, wird die Übertragung beendet. Wenn nicht, bestimmt das Speicherarray, ob der Countdown-Timer abläuft (Vorgang 312). Wenn nicht, wartet das Speicherarray auf den Ablauf des Countdown-Timers. Wenn der Countdown-Timer abläuft, setzt das Speicher-Array den Countdown-Timer basierend auf dem nächsten Frame zurück (Vorgang 306) und startet anschließend die Frame-Übertragung und den Countdown-Timer (Vorgang 308).
  • In dem in 3 gezeigten Beispiel wird für jeden sofort zu übertragenden Frame ein Countdown-Timer gesetzt. Diese spezielle Implementierung wird zu Beschreibungszwecken verwendet. In einigen Ausführungsformen kann die Berechnung der Flussrate (z. B. die Rate zum Senden von Frames vom Speicher-Array an die Switched Fabric), sobald die Verbindungsrate a priori festgelegt ist (z. B. durch Aushandlung der Verbindungsrate), auf einer aggregierten Ebene erfolgen, anstatt Frame für Frame. Beispielsweise kann die Durchflussrate berechnet werden, indem die Gesamtzahl der gesendeten Bytes über ein programmierbares Zeitintervall geteilt wird, das mit einem Countdown-Timer programmiert werden kann. Das Speicherarray kann dann so konfiguriert werden, dass es nur dann zusätzliche Frames sendet, wenn das Senden der zusätzlichen Frames die ausgehandelte Flussrate für das letzte programmierte Zeitintervall nicht überschreitet (z. B. werden die zusätzlichen Frames nach Ablauf des Countdown-Timers gesendet). Mit anderen Worten: Anstelle des in 3 gezeigten Beispiels einer Frame-by-Frame-Übertragung kann das System die Übertragung von Datenblöcken beliebiger Größe steuern, solange die Gesamtübertragungsrate die ausgehandelte Verbindungsrate nicht überschreitet. In diesen Beispielen kann ein einziger Countdown-Timer zur Steuerung der Übertragung einer Vielzahl von Frames verwendet werden, nicht nur eines einzelnen Frames.
  • Durch die Implementierung der Countdown-Timer im Speicherarray für jede Frame-Übertragung stellen die beschriebenen Ausführungsformen sicher, dass die Übertragungsrate des Speicherarrays so reguliert wird, dass eine langsamere Verbindung auf der Host-Seite nicht durch die Übertragung mit höherer Geschwindigkeit durch das Speicherarray überlastet wird. Die Regulierung der Übertragungsrate des Speicherarrays allein kann jedoch nicht alle Überlastungen auflösen. Insbesondere kann ein Host mit einer langsameren Verbindung eine übermäßige Anzahl von Befehlsanforderungen (z. B. Leseanforderungen) an das Speicher-Array stellen, wodurch der Speicher des Speicher-Arrays erschöpft wird und das Speicher-Array die Bedienung von Befehlsanforderungen anderer Hosts verzögert. Dies kann auch zu einer Unterauslastung der Link-Rate des Speicher-Arrays führen. Um zu verhindern, dass ein langsamerer Host die Speicherressourcen auf dem Speicherarray erschöpft, kann das System in einigen Ausführungsformen auch das Eintreffen der Befehlsanforderungen von den verschiedenen Hosts am Controller des Speicherarrays regulieren, um die Kapazität des Speicherarrays für die Bedienung von Befehlsanforderungen gerecht auf die Hosts mit verschiedenen Verbindungsraten zu verteilen.
  • In einigen Ausführungsformen kann die Switched Fabric zur Regulierung der Befehlsanforderungen vom Host einen Satz von Befehlswarteschlangen unterhalten, eine pro Host, wobei jede Befehlswarteschlange Befehlsanforderungen speichert, die von einem bestimmten Host an der Switched Fabric ankommen. Mit anderen Worten, die Befehlsanforderungen von einem bestimmten Host werden in einer entsprechenden Befehlswarteschlange eingereiht, bevor sie an den Speicher-Controller weitergeleitet werden. Jede Befehlswarteschlange verwaltet einen Datensatz, der die Datenmenge (z. B. in Bytes) anzeigt, die für den entsprechenden Host zur Übertragung ansteht. Die Daten stehen zur Übertragung an, wenn der Speicher-Array-Controller im Speicher des Speicher-Arrays Platz für die Daten zuweist.
  • 4 zeigt ein Diagramm, das den Mechanismus zur Regulierung der Befehlsanforderungen gemäß einer Ausführungsform veranschaulicht. In dem in 4 dargestellten Beispiel kann eine Anzahl von Hosts (in 4 nicht dargestellt) über einen Switch 404 Befehlsanforderungen an ein Speicher-Array 402 senden. Das Speicher-Array 402 kann einen Speicher-Array-Controller 410 und eine Anzahl von physischen Laufwerken (z. B. Laufwerke 412, 414 und 416) umfassen. Ein Switch/Speicherverwaltungsmodul 406 kann sowohl mit dem Switch 404 als auch mit dem Storage-Array-Controller 410 gekoppelt sein.
  • Der Schalter 404 kann eine Reihe von Befehlswarteschlangen (z. B. die Warteschlangen 422, 424 und 426) verwalten, die für die vorübergehende Speicherung von Befehlsanforderungen verwendet werden können, die von den Hosts empfangen werden. In einigen Ausführungsformen werden diese Befehlswarteschlangen von der Hardware (z. B. einem anwendungsspezifischen integrierten Schaltkreismodul (ASIC)) auf dem Schalter 404 verwaltet. Eine Befehlsanforderung kann eine Lese- oder Schreibanforderung sein. Die Anzahl der Befehlswarteschlangen entspricht der Anzahl der an den Switch 404 gekoppelten Hosts, wobei jedem Host eine Warteschlange zugewiesen ist. Abhängig von der Identität des Hosts, der den am Switch 404 ankommenden Anforderungsbefehl ausgibt, stellt der Switch 404 den Anforderungsbefehl in eine entsprechende Warteschlange. Diese vom Switch 404 verwalteten Befehlswarteschlangen können manchmal als „Schatten“-Warteschlangen bezeichnet werden, da die Hosts diese Warteschlangen nicht kennen.
  • Jede Befehlswarteschlange am Switch 404 kann eine Aufzeichnung über die Datenmenge führen, die zur Übertragung an den Switch ansteht. Eine solche Aufzeichnung kann vom Switch/Speicherverwaltungsmodul 406 bereitgestellt werden, das ständig die Menge der zur Übertragung anstehenden Daten in einer entsprechenden Arbeitsanforderungswarteschlange überprüft. Ein Eintrag in der Arbeitsanforderungs-Warteschlange zeigt den Speicherplatz und die Länge eines zu übertragenden Datenrahmens an. Die Arbeitsanforderungs-Warteschlangen (z. B. die Arbeitsanforderungs-Warteschlangen 432, 434 und 436) können vom Storage-Array-Controller 410 verwaltet werden, eine Warteschlange pro Host. Beispielsweise kann die Arbeitsanforderungs-Warteschlange 432 einem bestimmten Host zugewiesen werden, was bedeutet, dass jeder Eintrag in der Arbeitsanforderungs-Warteschlange 432 eine Position und Länge eines zur Übertragung anstehenden Frames identifiziert.
  • Wenn eine Befehlsanforderung von einem Host für den Zugriff auf Daten, die im Speicherarray 402 gespeichert sind, am Schalter 404 ankommt, speichert der Schalter 404 die Befehlsanforderung in einer Befehlswarteschlange (z. B. Befehlswarteschlange 422), die dem Host entspricht, der die Befehlsanforderung sendet, anstatt die Befehlsanforderung direkt an das Speicherarray 402 weiterzuleiten. Die Befehlswarteschlange 422 verwaltet einen Datensatz, der die Datenmenge anzeigt, die zur Übertragung vom Speicherarray 402 an diesen bestimmten Host ansteht. Beachten Sie, dass die Datenmenge der Gesamtgröße der Frames entsprechen kann, die durch alle Einträge in der Arbeitsanforderungs-Warteschlange 432 identifiziert werden, die demselben bestimmten Host entspricht. Diese Datenmenge spiegelt auch die Gesamtmenge der Speicherressourcen wider, die der Storage-Array-Controller 410 für diesen bestimmten Host bereitgestellt hat. In einigen Ausführungsformen überwacht das Switch/Speicherverwaltungsmodul 406 den Status jeder Arbeitsanforderungs-Warteschlange und liefert Informationen über die Gesamtdatenmenge in jeder Arbeitswarteschlange, die auf die Übertragung an die entsprechende Befehlswarteschlange wartet. Beispielsweise kann das Switch/Speicher-Verwaltungsmodul 406 den Status der Arbeitsanforderungs-Warteschlange 432 überwachen und Informationen bezüglich der Einträge in der Arbeitsanforderungs-Warteschlange 432 an die Befehlswarteschlange 422 liefern. Solche Informationen können die Gesamtmenge der Daten umfassen, die zur Übertragung durch das Speicher-Array 402 an den Host anstehen, der der Arbeitsanforderungs-Warteschlange 432 zur Befehlswarteschlange 422 entspricht.
  • Die Befehlswarteschlange 422 kann dann feststellen, ob die Gesamtmenge der zur Übertragung anstehenden Daten (d. h. die Datenmenge, die den Einträgen in der Arbeitsanforderungs-Warteschlange 432 entspricht) für den Host einen vorgegebenen Schwellenwert überschreitet. Wenn die anstehenden Daten für einen bestimmten Host den Schwellenwert überschreiten, kann man davon ausgehen, dass der Storage-Array-Controller 410 diesem bestimmten Host einen angemessenen Anteil an Speicherressourcen zur Verfügung gestellt hat. Infolgedessen kann der Switch 404 vorübergehend aufhören, Befehlsanforderungen von diesem bestimmten Host an den Storage-Array-Controller 410 weiterzuleiten, um zu verhindern, dass der Storage-Array-Controller 410 zusätzliche Speicherressourcen für diesen bestimmten Host bereitstellt. Andererseits kann der Schalter 404, wenn die anstehenden Daten für einen bestimmten Host unter dem Schwellenwert liegen, damit beginnen, eine oder mehrere empfangene Befehlsanforderungen an den Storage-Array-Controller 410 weiterzuleiten, damit der Storage-Array-Controller 410 Speicherressourcen auf dem Storage-Array 402 zum Puffern von Daten zuweisen kann. Wenn eine Befehlsanforderung beispielsweise eine Leseanforderung ist, kann der Storage-Array-Controller 410 die zu lesenden Daten in den Laufwerken des Storage-Arrays 402 identifizieren und eine Kopie dieser Daten in seinem Speicher erstellen. Die Speicherarray-Steuerung 410 kann einen oder mehrere Einträge in der Arbeitsanforderungs-Warteschlange für die zu lesenden Daten erstellen, wobei ein Eintrag in der Arbeitsanforderungs-Warteschlange die Position und Größe eines Speicherblocks beschreibt, der die zu lesenden Daten enthält.
  • In bestimmten Szenarien kann die von einem Lesebefehl angeforderte Datenmenge den Speicherplatz übersteigen, der für die Bereitstellung an den jeweiligen Host verfügbar ist. Beispielsweise kann ein Host eine Leseanforderung an den Schalter 404 senden und eine große Menge (z. B. 32 Megabyte) an Daten anfordern, die auf dem Speicherarray 402 gespeichert sind. Die Menge an Speicherplatz, die diesem Host zur Verfügung gestellt werden kann, kann jedoch geringer sein als die angeforderte Menge (z. B. ist die Differenz zwischen dem vorbestimmten Schwellenwert und dem aktuell dem Host zur Verfügung gestellten Speicherplatz geringer als 32 Megabyte). In einem solchen Szenario kann der Schalter 404 einen einzelnen großen Lesebefehl in mehrere (z. B. mindestens zwei) kleinere Lesebefehle unterteilen und die kleineren Lesebefehle nacheinander an das Speicherarray 402 senden, wenn Speicherplatz verfügbar wird. Auf diese Weise kann der Schalter 404, anstatt darauf zu warten, dass ein großer Block von Speicherplatz für diesen Host freigegeben wird, um eine große Befehlsanforderung zu liefern, damit beginnen, Teile der großen Befehlsanforderung als kleinere Befehlsanforderungen weiterzuleiten, wenn kleinere Blöcke des Speicherplatzes verfügbar werden, was effizienter sein kann. In einem Beispiel kann der Switch 404 eine Befehlsanforderung in mehrere (z. B. mindestens zwei) kleinere Befehlsanforderungen aufteilen, wenn die Größe der Befehlsanforderung einen vorgegebenen Schwellenwert überschreitet, unabhängig von der Größe des verfügbaren Speicherplatzes. In einem solchen Szenario kann eine große Befehlsanforderung in mehrere (z. B. mindestens zwei) kleinere Befehlsanforderungen unterteilt werden, bevor sie in die entsprechende Befehlswarteschlange eingereiht wird. Mit anderen Worten: Der Schalter 404 kann einen großen Befehl in mehrere kleinere Befehle unterteilen und die kleineren Befehle dann in die entsprechende Befehlswarteschlange stellen.
  • Während die Befehlsanforderungen in den Befehlswarteschlangen reguliert oder in eine Warteschlange gestellt werden, überträgt das Speicher-Array 402 Daten, die durch Einträge in Arbeitsanforderungs-Warteschlangen beschrieben werden, über den Schalter 404 an einen Zielhost. Ein Standard-Arbitrierungsmechanismus (z. B. Round-Robin) kann von der Speicherarray-Steuerung 410 verwendet werden, um aus der Vielzahl von Arbeitsanforderungs-Warteschlangen eine Arbeitsanforderungs-Warteschlange für die Übertragung auszuwählen. Jedes Mal, wenn ein Datenframe übertragen wird, verringert sich die Gesamtmenge der zur Übertragung anstehenden Daten für den entsprechenden Host.
  • Wie bereits erwähnt, können die verschiedenen in 4 dargestellten Module, wie z. B. die Speicheranordnung 402, der Switch 404 und der Switch/Speicher-Controller 406, in einem einzigen Gehäuse untergebracht werden, um ein integriertes Modul zu bilden. In einem solchen Szenario können verschiedene Arten von Verbindungen (z. B. optische oder elektrische Kabel, Übertragungsleitungen auf einer Leiterplatte (PCB) usw.) verwendet werden, um die Hochgeschwindigkeitsverbindung zwischen der Speicheranordnung 402 und dem Schalter 404 herzustellen. Alternativ können das Speicherarray 402 und der Schalter 404 jeweils ein eigenständiges Modul sein. Der Schalter/Speicher-Controller 406 kann ein eigenständiges Modul sein oder entweder in die Speicheranordnung 402 oder den Schalter 404 integriert werden. In Ausführungsformen, in denen das Storage Array 402 und der Switch 404 zwei separate Module sind, können ein oder mehrere elektrische oder optische Kabel entsprechende Anschlüsse an jedem Modul verbinden.
  • 5 zeigt ein Flussdiagramm, das einen beispielhaften Prozess zur Regelung der Zustellung von Befehlsanforderungen gemäß einer Ausführungsform veranschaulicht. Während des Betriebs empfängt ein Schalter, der mit einem Speichermodul gekoppelt ist, von einem Host einen Datenzugriffsbefehl für den Zugriff auf Daten im Speichermodul (Vorgang 502). Der Schalter ist ein beliebiger Schaltertyp, der einem Host-Gerät den Zugriff auf das Speichermodul ermöglicht. Zusätzlich zu einem einzelnen Schalter kann der Schalter auch eine Anzahl von miteinander verbundenen Schaltern umfassen. Das Speichermodul kann jede Art von Speichermedium enthalten (z. B. SSD oder HDD). Der Switch bestimmt die Identität des Hosts (Vorgang 504) und stellt den empfangenen Datenzugriffsbefehl in eine Befehlswarteschlange, die auf der Identität des Hosts basiert (Vorgang 506). Beachten Sie, dass der Switch eine solche Befehlswarteschlange für jeden Host unterhält. In einigen Ausführungsformen kann die Befehlswarteschlange eine FIFO-Warteschlange (first in, first out) sein, bei der frühere Einträge vor späteren Einträgen aus der Warteschlange entfernt werden.
  • Der Switch kann dann feststellen, ob die Gesamtmenge der Daten, die zur Übertragung an den identifizierten Host vom Speichermodul anstehen, einen vorgegebenen Schwellenwert überschreitet (Vorgang 508). In einigen Ausführungsformen kann die Befehlswarteschlange eine Aufzeichnung der gesamten Datenmenge führen, die zur Übertragung an den entsprechenden Host ansteht. Solche Informationen können von einem Controller-Modul bereitgestellt werden, das sowohl mit dem Switch als auch mit dem Speichermodul kommuniziert. In einigen Ausführungsformen kann die Befehlswarteschlange einen Komparator enthalten, der die Gesamtmenge der zur Übertragung anstehenden Daten und den Schwellenwert vergleicht. Der Schwellenwert kann auf der Grundlage einer Reihe von Faktoren bestimmt werden, wie z. B. der Größe des Speichers des Switch-Moduls, der Anzahl der Hosts, der Verbindungsrate der einzelnen Hosts usw. Wenn z. B. die Größe des Speichers des Speichermoduls 100 GB beträgt, kann die Menge des Datenpuffers, die von allen Hosts gemeinsam genutzt werden kann, etwas größer als 100 GB sein (z. B. 110 GB). In diesen Beispielen ist eine Überbelegung der Speicherressourcen aufgrund der flüchtigen Daten zulässig. Diese begrenzten Speicherressourcen können auf der Grundlage der Verbindungsgeschwindigkeit der einzelnen Hosts unter den mehreren Hosts aufgeteilt werden. In einigen Ausführungsformen kann ein Host mit einer schnelleren Verbindung mit einer größeren Speicherbereitstellung ausgestattet werden als ein Host mit einer langsameren Verbindung. Beispielsweise kann die Speicherbereitstellung unter den Hosts proportional zu deren Verbindungsgeschwindigkeiten sein. Alternativ kann die Beziehung zwischen der Speicherbereitstellung und der Verbindungsgeschwindigkeit nicht-linear sein.
  • Wenn die Gesamtmenge der zur Übertragung anstehenden Daten den Schwellenwert überschreitet, wartet der Switch auf die Freigabe des Speicherplatzes durch das Speicherarray (Vorgang 508). Während die Datenzugriffsbefehle in den Befehlswarteschlangen des Switches gehalten werden, überträgt das Speichermodul die anstehenden Daten, die den Einträgen in den Arbeitsanforderungs-Warteschlangen entsprechen, mit einem Verfahren, das dem in gezeigten ähnelt. Mit anderen Worten, die Netzwerkschnittstelle des Speichermoduls implementiert die Flusskontrolle mit Hilfe eines Countdown-Timers. Im Anschluss an die Übertragung eines Datenrahmens kann der entsprechende Speicherplatz zur Pufferung anderer Daten verwendet werden, sei es vom gleichen oder von einem anderen Host.
  • Wenn die Gesamtmenge der zur Übertragung anstehenden Daten den Schwellenwert nicht überschreitet, kann der Switch bestimmen, ob der verbleibende Speicherplatz, der dem Host zur Verfügung gestellt werden kann, für die Bedienung des Kopfeintrags in der Befehlswarteschlange ausreicht (Vorgang 510). Zum Beispiel kann die Switch-Logik die angeforderte Speichergröße des Kopfeintrags mit dem verfügbaren Speicherplatz vergleichen. In Situationen, in denen die Gesamtmenge der zur Übertragung anstehenden Daten den Schwellenwert nicht überschreitet, stellt die Differenz zwischen dem Schwellenwert und der Gesamtmenge der zur Übertragung anstehenden Daten den verbleibenden Speicherplatz dar, der für diesen bestimmten Host bereitgestellt werden kann. Wenn der verbleibende Speicherplatz, der dem Host zur Verfügung gestellt werden kann, ausreicht, um den Haupteintrag zu bedienen, kann der Switch den Haupteintrag der Befehlswarteschlange an das Speichermodul weiterleiten, damit das Speichermodul die Datenübertragung vorbereiten kann, was die Bereitstellung von Speicherplatz für die erforderlichen Daten und das Erzeugen eines Arbeitsanforderungseintrags in der Arbeitsanforderungswarteschlange umfassen kann (Vorgang 512). Wenn der verbleibende Speicherplatz, der dem Host zur Verfügung gestellt werden kann, nicht ausreicht, um den Kopfeintrag zu bedienen, kann der Schalter die Befehlsanforderung in mehrere kleinere Befehlsanforderungen aufteilen, so dass der verbleibende Speicherplatz den Speicherbedarf von mindestens einer kleineren Befehlsanforderung decken kann (Vorgang 514). Der Switch kann auch eine große Befehlsanforderung in mehrere kleinere Befehlsanforderungen aufteilen, wenn die Größe der großen Befehlsanforderung (z. B. die Größe der angeforderten Daten) einen vorgegebenen Schwellenwert überschreitet, unabhängig davon, ob der verbleibende Speicherplatz, der dem Host zur Verfügung gestellt werden kann, ausreicht, um die große Befehlsanforderung zu bedienen. Anschließend kann der Switch mindestens einen Befehl an das Speichermodul weiterleiten (Vorgang 512).
  • Der Switch kann feststellen, ob es zusätzliche Einträge in der Befehlswarteschlange für diesen Host gibt (Vorgang 516). Wenn ja, kann der Switch feststellen, ob für diesen Host Speicherplatz verfügbar ist (Vorgang 508). Wenn nicht, wird der Vorgang beendet.
  • 6 zeigt eine beispielhafte Vorrichtung, die die Flusssteuerung in einem System mit NVMe-oF-angeschlossenen Geräten erleichtert, gemäß einer Ausführungsform. Vorrichtung 600 kann eine Vielzahl von Einheiten oder Geräten umfassen, die über einen verdrahteten, drahtlosen, Quantenlicht- oder elektrischen Kommunikationskanal miteinander kommunizieren können. Die Vorrichtung 600 kann unter Verwendung einer oder mehrerer integrierter Schaltungen realisiert werden und kann weniger oder mehr Einheiten oder Vorrichtungen als die in 6 gezeigten umfassen. Ferner kann die Vorrichtung 600 in ein Computersystem integriert oder als separate(s) Gerät(e) realisiert sein, das/die in der Lage ist/sind, mit anderen Computersystemen und/oder Geräten zu kommunizieren.
  • Das Gerät 600 kann eine Host-Schnittstelle 602 zur Verbindung mit einer Vielzahl von Hosts enthalten. Ein Host kann Befehle senden, um über die Host-Schnittstelle 602 auf Daten zuzugreifen, die auf einem Speichermodul gespeichert sind. Darüber hinaus kann ein Host eine Kommunikation mit dem Speichermodul herstellen, indem er über die Host-Schnittstelle 602 Nachrichten mit einem Controller des Speichergeräts (z. B. dem Speicher-Controller 610) austauscht. In einigen Ausführungsformen können die Nachrichten Informationen über die Verbindungsraten des Hosts und des Speichergeräts enthalten.
  • Das Gerät 600 kann eine Anzahl von Befehlswarteschlangen 604 für die Einreihung von Befehlen enthalten, die von Hosts über die Host-Schnittstelle 602 empfangen werden. Die Anzahl der Befehlswarteschlangen entspricht der Anzahl der mit der Host-Schnittstelle 602 gekoppelten Hosts, wobei jede Befehlswarteschlange so konfiguriert ist, dass sie von einem bestimmten Host empfangene Befehlsanforderungen speichert.
  • Das Gerät 600 kann eine Anzahl von Komparatormodulen 606 enthalten. Jedes Komparatormodul kann mit einer Befehlswarteschlange gekoppelt sein. Genauer gesagt kann jedes Komparatormodul so konfiguriert werden, dass es die Menge der Daten, die zur Übertragung durch das Speichermodul an einen entsprechenden Host anstehen, mit einem vorgegebenen Schwellenwert vergleicht. Die Ausgabe der Komparatormodule 606 kann verwendet werden, um entsprechende Befehlswarteschlangen 604 zu steuern, so dass eine entsprechende Befehlswarteschlange eine Befehlsanforderung an den Kopf der entsprechenden Befehlswarteschlange an das Speichermodul weiterleiten kann.
  • Die Vorrichtung 600 kann ein Schaltmodul 608 enthalten, das in der Lage ist, Befehle und Daten zwischen Hosts und Speichermodulen weiterzuleiten. Die Vorrichtung 600 kann auch einen Speicher-Controller 610 zur Steuerung von Operationen (z. B. Datenpufferung und -übertragung) eines mit dem Switch-Modul 608 gekoppelten Speichergeräts enthalten. Die Vorrichtung 600 kann eine Anzahl von Arbeitsanforderungs-Warteschlangen 612 zum Einreihen der zu verarbeitenden Arbeitsanforderungen enthalten. Jeder Eintrag in der Arbeitsanforderungs-Warteschlange beschreibt den Ort im Speicher und die Größe eines zu übertragenden Datenrahmens. Das Gerät 600 kann eine Anzahl von Countdown-Timern 614 enthalten, wobei jeder Countdown-Timer mit einer entsprechenden Arbeitsanforderungs-Warteschlange gekoppelt ist. Nach der Übertragung von Daten, die einem Eintrag in der Arbeitsanforderungs-Warteschlange entsprechen, können nachfolgende Datenübertragungen für die Arbeitsanforderungs-Warteschlange erst beginnen, wenn der Countdown-Timer auf Null zurückgeht. Der Anfangswert des Countdown-Timers wird auf der Grundlage der ausgehandelten Verbindungsrate zwischen dem Speichermodul und dem Host, die der Arbeitsanforderungs-Warteschlange entspricht, und der Größe des aktuell übertragenen Frames festgelegt. Dadurch kann sichergestellt werden, dass das Speichermodul den nachfolgenden Frame erst dann an den Host überträgt, wenn das Schaltmodul 608 die Übertragung des vorherigen Datenframes abgeschlossen hat.
  • Die Vorrichtung 600 kann ein Arbeitsanforderungs-Verarbeitungsmodul 616 enthalten, das zur Verarbeitung von Arbeitsanforderungen in Arbeitsanforderungs-Warteschlangen 612 konfiguriert ist. Das Arbeitsanforderungs-Verarbeitungsmodul 616 kann einen Standard-Arbitrierungsmechanismus implementieren, um aus den Arbeitsanforderungs-Warteschlangen 612 eine Arbeitsanforderungs-Warteschlange zur Verarbeitung von Arbeitsanforderungen auszuwählen. Bei der Verarbeitung einer Arbeitsanforderung kann das Arbeitsanforderungs-Verarbeitungsmodul 616 auf den von der Arbeitsanforderung angegebenen Speicherplatz zugreifen, um Daten für die Übertragung an einen entsprechenden Host zu erhalten. Die Vorrichtung 600 kann auch ein Datenübertragungsmodul 618 enthalten, das so konfiguriert ist, dass es die vom Speichermodul erhaltenen Daten an den Host überträgt.
  • Die Vorrichtung 600 kann ein Switch/Speicher-Controller-Modul 620 enthalten, das in der Lage ist, den Betrieb sowohl des Switch-Moduls 608 als auch des Speicher-Controllers 610 zu steuern. Insbesondere kann das Switch/Speicher-Controller-Modul 620 die Ratenaushandlung zwischen einem mit dem Switch-Modul 608 gekoppelten Host und dem vom Speicher-Controller 610 gesteuerten Speichermodul erleichtern. Das Switch/Speicher-Controller-Modul 620 kann die Weiterleitung einer Befehlsanforderung von der Befehlswarteschlange 604 an den Speicher-Controller 610 erleichtern.
  • 7 zeigt ein beispielhaftes Computersystem, das die Flusssteuerung in einem Netzwerk gemäß einer Ausführungsform erleichtert. Das Computersystem 700 umfasst einen Prozessor 702, einen Speicher 704 und eine Speichereinrichtung 706. Das Computersystem 700 kann mit einer Anzeigevorrichtung 710, einer Tastatur 712 und einem Zeigegerät 714 gekoppelt sein und kann auch über eine oder mehrere Netzwerkschnittstellen mit dem Netzwerk 708 gekoppelt sein. Das Speichergerät 706 kann ein Betriebssystem 718, ein Flusskontrollsystem 720 und Daten 742 speichern.
  • Das Flusssteuerungssystem 720 kann Anweisungen enthalten, die, wenn sie vom Computersystem 700 ausgeführt werden, das Computersystem 700 veranlassen können, die in dieser Offenbarung beschriebenen Verfahren und/oder Prozesse durchzuführen. Das Flusssteuerungssystem 720 kann Anweisungen zur Schnittstellenbildung mit Hosts (Host-Schnittstellenmodul 722), Anweisungen zur Aufrechterhaltung einer Anzahl von Befehlswarteschlangen (Befehlswarteschlangenmodul 724), Anweisungen zur Aufrechterhaltung einer Anzahl von Komparatoren (Komparatormodul 726), Anweisungen zur Durchführung von Verkehrsvermittlungsfunktionen (Vermittlungsmodul 728), Anweisungen zur Steuerung von Operationen eines Speichermoduls (Speichersteuerungsmodul 730) enthalten, Anweisungen zum Unterhalten einer Anzahl von Arbeitsanforderungs-Warteschlangen (Arbeitsanforderungs-Warteschlangenmodul 732), Anweisungen zum Unterhalten einer Anzahl von Countdown-Timern (Countdown-Timer-Modul 734), Anweisungen zum Verarbeiten von Arbeitsanforderungen (Arbeitsanforderungs-Verarbeitungsmodul 736), Anweisungen zum Übertragen von Daten an Hosts (Datenübertragungsmodul 738) und Anweisungen zum Verbinden und Steuern von Operationen eines Schalters und eines Speicher-Controllers (Schalter/Speicher-Controller-Modul 740).
  • Im Allgemeinen bietet das offengelegte System einen Ende-zu-Ende-Flusskontrollmechanismus in einem System, das vernetzte Geräte mit nicht übereinstimmenden Verbindungsraten umfasst. Genauer gesagt können zwei Endgeräte, die über Verbindungen mit unterschiedlichen Raten an eine Switched Fabric gekoppelt sind, während eines anfänglichen Kommunikationsaufbauprozesses eine Rate aushandeln. Wenn ein Endgerät einen Frame an das andere Endgerät sendet, kann der Controller des sendenden Endgeräts einen Countdown-Timer einstellen, wobei der Anfangswert des Countdown-Timers als die Zeit eingestellt ist, die für die Übertragung des Frames mit der ausgehandelten Rate benötigt wird. Die Übertragung des Frames und der Countdown-Timer können gleichzeitig starten. Das sendende Endgerät ist so konfiguriert, dass es die Übertragung eines nachfolgenden Frames verzögert, bis der Countdown-Timer abgelaufen ist. Dadurch kann verhindert werden, dass das sendende Endgerät Daten mit einer schnelleren Rate als der ausgehandelten Rate überträgt. Zusätzlich zur Regulierung der Frame-Übertragungsrate implementieren die offenbarten Ausführungsformen auch einen Mechanismus zur Verzögerung der Übermittlung eines Datenzugriffsbefehls von einem Endgerät an das andere Endgerät, um zu verhindern, dass das anfordernde Endgerät die Speicherressourcen des antwortenden Endgeräts erschöpft. Genauer gesagt, wenn das anfordernde Endgerät einen Datenanforderungsbefehl über die Switched Fabric an das antwortende Endgerät sendet, hält die Switched Fabric den Datenanforderungsbefehl vorübergehend in einer für das anfordernde Endgerät zugewiesenen Warteschlange. Bevor der Kopf der Warteschlange entfernt und an das antwortende Endgerät weitergeleitet wird, kann die Switched Fabric feststellen, ob die zur Übertragung anstehende Datenmenge vom antwortenden Gerät zum anfordernden Gerät einen vorgegebenen Schwellenwert überschreitet. Der Schwellenwert kann der maximale Speicherplatz auf dem antwortenden Endgerät sein, der zum Puffern der an das anfordernde Endgerät zu übertragenden Daten zugewiesen werden kann. Der Kopf der Warteschlange kann nur dann an das antwortende Gerät weitergeleitet werden, wenn die Menge der anstehenden Daten kleiner als der Schwellenwert ist. Dadurch kann sichergestellt werden, dass die volle Bandbreite des antwortenden Endgeräts von verschiedenen anfordernden Endgeräten genutzt werden kann, ohne dass ein anforderndes Endgerät die Speicherressourcen erschöpft und damit andere Endgeräte am Zugriff auf Daten des antwortenden Endgeräts hindert. Dieser neuartige Flusssteuerungsmechanismus kann die Nutzung der Verbindungsrate der vernetzten Geräte erhöhen und gleichzeitig Rahmenverluste verhindern und für Fairness zwischen mehreren Endgeräten sorgen, die auf Daten auf einem einzigen Endgerät zugreifen.
  • In den verschiedenen Beispielen in 1-7 können die Endgeräte NVMe-oF-fähig sein und Hosts und Speichergeräte umfassen. In der Praxis können auch andere Netzwerkprotokolle implementiert werden, und die Switched Fabric kann jede Art von Switch umfassen, der zur Verkehrsvermittlung in der Lage ist. Außerdem können die Endgeräte andere Arten von Endgeräten umfassen, die in der Lage sind, miteinander zu kommunizieren, indem sie Anfragen und Antworten austauschen.
  • Die im Abschnitt „Detaillierte Beschreibung“ beschriebenen Methoden und Prozesse können als Code und/oder Daten verkörpert werden, die wie oben beschrieben in einem computerlesbaren Speichermedium gespeichert werden können. Wenn ein Computersystem den auf dem computerlesbaren Speichermedium gespeicherten Code und/oder die Daten liest und ausführt, führt das Computersystem die Methoden und Prozesse aus, die als Datenstrukturen und Code verkörpert und in dem computerlesbaren Speichermedium gespeichert sind.
  • Darüber hinaus können die oben beschriebenen Methoden und Prozesse in Hardwaremodulen oder -geräten enthalten sein. Zu den HardwareModulen oder -Vorrichtungen können unter anderem anwendungsspezifische integrierte Schaltungen (ASIC-Chips), feldprogrammierbare Gate-Arrays (FPGAs), dedizierte oder gemeinsam genutzte Prozessoren, die ein bestimmtes Softwaremodul oder ein Stück Code zu einem bestimmten Zeitpunkt ausführen, sowie andere heute bekannte oder später entwickelte programmierbare Logikgeräte gehören. Wenn die Hardware-Module oder -Geräte aktiviert werden, führen sie die darin enthaltenen Methoden und Prozesse aus.
  • Die vorstehenden Beschreibungen von Ausführungsformen wurden nur zum Zweck der Veranschaulichung und Beschreibung dargestellt. Sie sollen nicht erschöpfend sein oder den Umfang dieser Offenbarung auf die offengelegten Formen beschränken. Dementsprechend werden viele Modifikationen und Variationen für Fachleute auf dem Gebiet der Technik offensichtlich sein.

Claims (20)

  1. Ein Verfahren, umfassend: Identifizieren, durch einen Switch, eines Befehls von einem Host, um auf ein mit dem Switch gekoppeltes Speichergerät zuzugreifen; Einreihen des Befehls in eine dem Host entsprechende Befehlswarteschlange; Entfernen eines Befehls aus der Befehlswarteschlange als Reaktion auf die Feststellung, dass eine Menge von Daten, die zur Übertragung an den Host von der Speichervorrichtung anstehen, unter einem vorgegebenen Schwellenwert liegt; und Weiterleitung des entfernten Befehls an das Speichergerät.
  2. Verfahren nach Anspruch 1, umfassend das Führen einer Vielzahl von Befehlswarteschlangen, wobei jede Befehlswarteschlange in der Vielzahl von Befehlswarteschlangen einem anderen mit dem Switch gekoppelten Host entspricht.
  3. Verfahren nach Anspruch 1, wobei der vorbestimmte Schwellenwert auf der Grundlage einer Größe des Speicherplatzes bestimmt wird, der dem Host von der Speichervorrichtung zugewiesen wird.
  4. Verfahren nach Anspruch 1, umfassend: Aufteilen eines Befehls in mehrere kleinere Befehle; und Platzieren der mehreren kleineren Befehle in der Befehlswarteschlange.
  5. Verfahren nach Anspruch 1, umfassend: Erzeugen eines Eintrags in einer Arbeitsanforderungs-Warteschlange, die dem Host entspricht, durch einen Controller der Speichervorrichtung auf der Grundlage des Befehls, wobei der Eintrag eine Größe eines Datenrahmens spezifiziert, der mit dem Befehl verbunden ist.
  6. Verfahren nach Anspruch 5, umfassend: Bestimmen einer Verbindungsrate zwischen dem Host und der Speichervorrichtung, wobei der Host über eine erste Kommunikationsverbindung mit dem Switch gekoppelt ist, wobei die Speichervorrichtung über eine zweite Kommunikationsverbindung mit dem Switch gekoppelt ist, und wobei die erste und die zweite Kommunikationsverbindung unterschiedliche Verbindungsraten haben; und Einstellen eines Startwertes eines Countdown-Timers auf der Grundlage der bestimmten Verbindungsrate und der Größe des Datenrahmens.
  7. Verfahren nach Anspruch 6, wobei der Host und die Speichervorrichtung unter Verwendung einer NVMe-oF-Technik (non-volatile memory express over fabric) miteinander kommunizieren und wobei das Bestimmen der Verbindungsrate zwischen dem Host und der Speichervorrichtung das Austauschen von Informationen umfasst, die mit den verschiedenen Verbindungsraten verbunden sind, während der NVMe-oF-Verbindungsaufbau durchgeführt wird.
  8. Verfahren nach Anspruch 6, wobei das Aushandeln der Verbindungsrate Folgendes umfasst: Bestimmen einer Verbindungsrate der ersten Kommunikationsverbindung durch ein mit dem Switch gekoppeltes Steuermodul; Bestimmen einer Verbindungsrate der zweiten Kommunikationsverbindung durch das Steuermodul; und Bestimmen der Verbindungsrate zwischen dem Host und der Speichervorrichtung basierend auf den bestimmten Verbindungsraten der ersten und zweiten Kommunikationsverbindung.
  9. Verfahren nach Anspruch 6, wobei der Startwert des Countdown-Timers gleich einer Dauer ist, die für die Übertragung des Datenframes unter Verwendung der ausgehandelten Verbindungsrate benötigt wird.
  10. Verfahren nach Anspruch 6, umfassend: Ausführen des Countdown-Timers, während der Datenrahmen an den Host übertragen wird; und Warten auf das Ablaufen des Countdown-Timers, bevor ein nachfolgender Datenrahmen übertragen wird, der einem nächsten Eintrag in der Arbeitsanforderungs-Warteschlange entspricht.
  11. Eine Vorrichtung, umfassend: einen Schalter; und ein mit dem Schalter gekoppeltes Speichermodul; wobei der Schalter konfiguriert ist, um: einen Befehl von einem Host zu identifizieren, um auf das Speichermodul zuzugreifen; den Befehl in eine dem Host entsprechende Befehlswarteschlange einreihen; als Reaktion auf die Feststellung, dass eine Menge von Daten, die zur Übertragung an den Host vom Speichermodul anstehen, unter einem vorgegebenen Schwellenwert liegt, einen Befehl aus der Befehlswarteschlange entfernen; und den entfernten Befehl an das Speichermodul weiterleiten.
  12. Vorrichtung nach Anspruch 11, wobei der Switch eine Vielzahl von Befehlswarteschlangen unterhält, und wobei jede Befehlswarteschlange in der Vielzahl von Befehlswarteschlangen einem anderen, mit dem Switch gekoppelten Host entspricht.
  13. Vorrichtung nach Anspruch 11, wobei der vorbestimmte Schwellenwert auf der Grundlage einer Größe des dem Host durch das Speichermodul zugewiesenen Speicherplatzes bestimmt wird.
  14. Vorrichtung nach Anspruch 11, wobei der Schalter so konfiguriert ist, dass er: einen Befehl in mehrere kleinere Befehle aufteilt; und die mehreren kleineren Befehle in die Befehlswarteschlange stellt.
  15. Vorrichtung nach Anspruch 11, wobei das Speichermodul so konfiguriert ist, dass es: eine Anzahl von Arbeitsanforderungs-Warteschlangen unterhält; und einen Eintrag in einer Arbeitsanforderungs-Warteschlange, die dem Host entspricht, basierend auf dem Befehl erzeugt, wobei der Eintrag eine Größe eines Datenrahmens spezifiziert, der dem Befehl zugeordnet ist.
  16. Vorrichtung nach Anspruch 15, wobei das Speichermodul konfiguriert ist, um: Bestimmen einer Verbindungsrate zwischen dem Speichermodul und dem Host, wobei der Host über eine erste Kommunikationsverbindung mit dem Switch gekoppelt ist, wobei das Speichermodul über eine zweite Kommunikationsverbindung mit dem Switch gekoppelt ist, und wobei die erste und die zweite Kommunikationsverbindung unterschiedliche Verbindungsraten haben; und Einstellen eines Startwerts eines Countdown-Timers basierend auf der bestimmten Verbindungsrate und der Größe des Datenrahmens.
  17. Vorrichtung nach Anspruch 16, wobei das Speichermodul so konfiguriert ist, dass es mit dem Host unter Verwendung einer nichtflüchtigen Speicher-Express-over-Fabric-Technik (NVMe-oF) kommuniziert, und wobei das Speichermodul die Verbindungsrate zwischen dem Host und dem Speichermodul bestimmt, indem es mit dem Host Informationen austauscht, die den verschiedenen Verbindungsraten zugeordnet sind, während es einen NVMe-oF-Verbindungsaufbau durchführt.
  18. Vorrichtung nach Anspruch 16, umfassend ein mit dem Schalter gekoppeltes Steuermodul, wobei das Steuermodul konfiguriert ist, um: eine Verbindungsrate der ersten Kommunikationsverbindung zu bestimmen; eine Verbindungsrate der zweiten Kommunikationsverbindung zu bestimmen; und die Verbindungsrate zwischen dem Speichermodul und dem Host basierend auf den bestimmten ersten und zweiten Kommunikationsverbindungsraten zu bestimmen.
  19. Vorrichtung nach Anspruch 16, wobei der Startwert des Countdown-Timers gleich einer Dauer ist, die für die Übertragung des Datenrahmens unter Verwendung der ausgehandelten Verbindungsrate benötigt wird.
  20. Vorrichtung nach Anspruch 16, wobei das Schaltmodul so konfiguriert ist, dass es: den Countdown-Timer laufen zu lassen, während der Datenrahmen an den Host übertragen wird; und zu warten, bis der Countdown-Timer abgelaufen ist, bevor ein nachfolgender Datenrahmen übertragen wird, der einem nächsten Eintrag in der Arbeitsanforderungs-Warteschlange entspricht.
DE102021109482.8A 2020-05-19 2021-04-15 SYSTEM UND VERFAHREN ZUR REGELUNG VON NVMe-oF-BEFEHLSANFRAGEN UND DATENFLUSS ÜBER EIN NETZWERK MIT UNGLEICHMÄßIGER GESCHWINDIGKEIT Pending DE102021109482A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/878,444 2020-05-19
US16/878,444 US11372586B2 (en) 2020-05-19 2020-05-19 System and method for regulating NVMe-oF command requests and data flow across a network with mismatched rates

Publications (1)

Publication Number Publication Date
DE102021109482A1 true DE102021109482A1 (de) 2021-11-25

Family

ID=78408724

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021109482.8A Pending DE102021109482A1 (de) 2020-05-19 2021-04-15 SYSTEM UND VERFAHREN ZUR REGELUNG VON NVMe-oF-BEFEHLSANFRAGEN UND DATENFLUSS ÜBER EIN NETZWERK MIT UNGLEICHMÄßIGER GESCHWINDIGKEIT

Country Status (3)

Country Link
US (1) US11372586B2 (de)
CN (1) CN113687770B (de)
DE (1) DE102021109482A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) * 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11698734B2 (en) * 2020-07-22 2023-07-11 Seagate Technology Llc Collision reduction through just-in-time resource allocation
US20230325075A1 (en) * 2022-04-07 2023-10-12 Mellanox Technologies, Ltd. Methods and systems for managing memory buffer usage while processing computer system operations

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6473441B1 (en) * 1998-12-18 2002-10-29 Escient Convergence Corp Multi-channel video pump
US6341315B1 (en) * 1999-02-26 2002-01-22 Crossroads Systems, Inc. Streaming method and system for fiber channel network devices
JP4555029B2 (ja) * 2004-09-01 2010-09-29 株式会社日立製作所 ディスクアレイ装置
US10157023B2 (en) * 2016-02-25 2018-12-18 SK Hynix Inc. Memory controller and request scheduling method using request queues and first and second tokens
US10481821B2 (en) * 2016-06-28 2019-11-19 Vmware, Inc. Replication protocol with consensus for a decentralized control plane in a computer system
WO2018102967A1 (zh) * 2016-12-05 2018-06-14 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统
KR20180069960A (ko) * 2016-12-15 2018-06-26 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
TWI601060B (zh) * 2017-01-17 2017-10-01 群聯電子股份有限公司 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元
KR102429904B1 (ko) * 2017-09-08 2022-08-05 삼성전자주식회사 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
KR20190112446A (ko) * 2018-03-26 2019-10-07 삼성전자주식회사 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법
US11544000B2 (en) * 2018-08-08 2023-01-03 Marvell Asia Pte Ltd. Managed switching between one or more hosts and solid state drives (SSDs) based on the NVMe protocol to provide host storage services
KR20200019431A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US10545697B1 (en) * 2018-08-29 2020-01-28 Red Hat, Inc. Reverse order request queueing by para-virtual device drivers
US10901658B2 (en) * 2018-12-28 2021-01-26 Micron Technology, Inc. Host adaptive memory device optimization
KR20200085967A (ko) * 2019-01-07 2020-07-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US10938730B2 (en) * 2019-01-29 2021-03-02 EMC IP Holding Company LLC Data transmission techniques between systems having different communication speeds

Also Published As

Publication number Publication date
CN113687770A (zh) 2021-11-23
CN113687770B (zh) 2023-03-24
US11372586B2 (en) 2022-06-28
US20210365209A1 (en) 2021-11-25

Similar Documents

Publication Publication Date Title
DE102021109482A1 (de) SYSTEM UND VERFAHREN ZUR REGELUNG VON NVMe-oF-BEFEHLSANFRAGEN UND DATENFLUSS ÜBER EIN NETZWERK MIT UNGLEICHMÄßIGER GESCHWINDIGKEIT
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE60114097T2 (de) Verfahren und System zur Verbesserung der Netzleistungsfähigkeit unter Verwendung eines leistungssteigernden Proxies
DE60203221T2 (de) Verwendung von mehreren virtuellen Kanälen in Netzwerkgeräten
DE19929516B4 (de) Hochgeschwindigkeits-Netzwerkschalter
DE602004002522T2 (de) Dienstgüte-Verfahren basierend auf einer Durchflussregelung in einem verteilten Switch Fabric-Netzwerk
DE102015119893B4 (de) Multiplexen von vielen Client-Datenströmen über eine einzige Verbindung
DE60002446T2 (de) Verfahren und vorrichtung zur erweiterung des usb-protokollbereichs
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE60035882T2 (de) Protokoll einer zerteilten transaktion für ein bussystem
DE112014000322B4 (de) Skalierbare Fluss- und Überlastungssteuerung in einem Netzwerk
DE112020002498T5 (de) System und verfahren zur erleichterung einer effizienten paketweiterleitung in einer netzwerkschnittstellensteuerung (nic)
DE69826680T2 (de) Hochintegrierte mehrschichtige Vermittlungsstellenelementarchitektur
DE60213974T2 (de) Verfahren und vorrichtung zur prioritäts-basierten flusskontrolle in einer ethernet-architektur
DE69836812T2 (de) Verfahren und gerät zum dynamischen warteschlange-abschätzen
DE60024228T2 (de) Dynamische zuweisung verkehrsklassen an einer prioritätswarteschlange in einer paketbeförderungsvorrichtung
DE69735936T2 (de) Seriendatenschnittstellenverfahren und vorrichtung #
DE69929142T2 (de) Verfahren zur Bilddatenübertragung unter Verwendung von einem IEEE 1394 Bus
DE112016001663T5 (de) Empfangen von Pufferkrediten durch eine Vielzahl von Kanälen von einer oder mehreren Host-Recheneinheiten, um Daten an eine Steuereinheit zu übertragen
DE69628798T2 (de) Verfahren zur Übertragung von Multimediadaten
DE112011106016T5 (de) Gemeinsame Sendeschlange
DE60125678T2 (de) Vermittlungstelle mit Flusssteurungverwaltung
DE102020105776A1 (de) Kostengünstige Überlastungsisolierung für verlustfreies Ethernet
EP2137626B1 (de) Verfahren und vorrichtung zur zugriffssteuerung mehrerer applikationen
DE112019007502T5 (de) Zuordnen von nvme-over-fabric-paketen mithilfe von virtuellen ausgangswarteschlangen

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012801000

Ipc: H04L0047100000

R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TX, US

R082 Change of representative

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB - PATENT- , DE

Representative=s name: FLEUCHAUS & GALLO PARTNERSCHAFT MBB PATENTANWA, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0047100000

Ipc: H04L0047300000

R016 Response to examination communication