-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung bezieht sich auf nichtflüchtigen Speicher auf Grundlage von Hosts, und im Besonderen bezieht sich diese Erfindung auf ein Gruppieren von nichtflüchtigem Speicher auf Grundlage von Hosts mithilfe von zugeordnetem Netzwerkspeicher.
-
HINTERGRUND
-
Bei einem nichtflüchtigen Speicher (non-volatile memory, NVM) handelt es sich um einen sehr nützlichen Speichertyp, der aufgrund seiner Fähigkeit, Daten ohne Strom aufrechtzuerhalten, in zahlreichen modernen Anwendungen eingesetzt werden kann. Dies ist bei mobilen Einheiten besonders vorteilhaft, die als einzige Stromquelle Batterien nutzen, da jeglicher Stromverbrauch während Ausschaltzeiten die Nutzbarkeit der Einheiten verringern würde. Des Weiteren werden NVMs in sonstigen, weniger augenfälligen Anwendungen wie zum Beispiel Netzwerkspeichern zunehmend stärker genutzt.
-
Es bestehen einige gewünschte Zugriffsspezifikationen für ein Verwenden von NVMs in den heutigen anspruchsvollen Anwendungen: 1) Der NVM sollte in der Lage sein, ähnliche Geschwindigkeiten wie diejenigen zu erreichen, die mithilfe eines synchronen, dynamischen Direktzugriffsspeichers mit doppelter Übertragungsgeschwindigkeit vom Typ Drei (synchronous dynamic random-access memory, DDR3 SDRAM) erzielt werden können. 2) Der NVM sollte in der Lage sein, eine Million Eingabe-/Ausgabe(E/A)-Operationen pro Sekunde (input/output (I/O) operations per second, IOPS) oder mehr zu erzielen, was als Richtwert für die Nutzbarkeit von Speichern in einer Speicherinfrastruktur eines Unternehmensnetzwerks gilt. 3) Der NVM sollte in der Lage sein, eine Verbindungslatenzzeit zwischen 3 µs und 10 µs zu erzielen, was ebenfalls als Richtwert für die Nutzbarkeit von Speichern in einer Speicherinfrastruktur eines Unternehmensnetzwerks gilt. 4) Der NVM sollte in der Lage sein, eine Leistung zu erzielen, die Strecken von Parallel-Seriell- und Seriell-Parallel-Umsetzern (serializer/deserializer, SerDes) nach dem Peripheral Component Interconnect Express (PCIe) ähnelt.
-
Aktuelle Verfahren zum Nutzen von NVMs und im Besonderen von Flash-Speichern sind jedoch nicht in der Lage, sämtliche dieser gewünschten Zugriffsspezifikationen zu erzielen. Zu einigen der Probleme beim Implementieren von NVMs im Zusammenhang mit Unternehmens-Netzwerkspeichern zählen, eine Möglichkeit zu finden, einen nahtlosen Hochleistungstransport von Daten in der Netzwerkinfrastruktur bereitzustellen, wie ein Speichermittel herzustellen ist, das in der Lage ist, Speicher auf Grundlage von NVMs bereitzustellen, wie Halbleiter-Laufwerke (solid state drives, SSDs) auf Grundlage von Hosts, die NVMs nutzen, zu gruppieren sind, wie die SSDs auf Grundlage von Hosts mit zentralen Speichermitteln in der Netzwerkinfrastruktur zu gruppieren sind und wie eine Virtualisierung des NVM-Speichers auf Grundlage von Servern und auf Grundlage eines Netzwerks in dem Netzwerk zu erzielen ist.
-
Aktuelle Implementierungen von NVMs sind nicht in der Lage, mit sonstigen Elementen eines Netzwerks in einer Weise zu interagieren, die ermöglicht, die volle Leistungsfähigkeit der zu verwendenden NVMs in einer Netzwerkinfrastruktur zu nutzen.
-
Die Druckschrift
US 2015/0 006 663 A1 betrifft ein Verfahren und ein System zum Ermöglichen von Non-Volatile Memory Express (NVMe) für den Zugriff auf entfernte Festkörperlaufwerke (SSDs) (oder andere Typen von entfernten nichtflüchtigen Arbeitsspeichern) über das Ethernet oder andere Netzwerke. Eine erweiterte NVMe-Steuereinheit wird bereitgestellt, um der CPU den Zugriff auf entfernte nichtflüchtige Arbeitsspeicher unter Verwendung des NVMe-Protokolls zu ermöglichen. Die erweiterte NVMe-Steuereinheit ist auf einem Server für die Datenübertragung mit anderen Servern oder nichtflüchtigen Arbeitsspeichern über einen Ethernet-Switch umgesetzt. Das NVMe-Protokoll wird über das Ethernet oder ähnliche Netzwerke verwendet, indem es geändert wird, um einen speziellen NVMover-Ethernet-Rahmen bereitzustellen.
-
KURZDARSTELLUNG
-
Bei einer Ausführungsform beinhaltet ein System einen ersten Knoten. Der erste Knoten beinhaltet einen ersten nichtflüchtigen Speicher (NVM), der so gestaltet ist, dass er Daten speichert. Der erste Knoten beinhaltet des Weiteren eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden ist. Der erste Knoten beinhaltet des Weiteren eine erste Netzwerk-Schnittstellenkarte (network interface card, NIC), die mit der ersten Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht. Der erste Knoten beinhaltet des Weiteren einen ersten Prozessor. Der erste Knoten beinhaltet des Weiteren eine erste Logik, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist. Die erste Logik ist so gestaltet, dass sie Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet. Die erste Logik ist des Weiteren so gestaltet, dass sie per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet. Die erste Logik ist des Weiteren so gestaltet, dass sie eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten empfängt. Die erste Logik ist des Weiteren so gestaltet, dass sie von dem zweiten Knoten Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten empfängt, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten. Die erste Logik ist des Weiteren so gestaltet, dass sie die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten sendet, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten. Die erste Logik ist des Weiteren so gestaltet, dass sie Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO, Zuerst-hinein-zuerst-hinaus)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind. Diese Ausführungsform stellt eine Virtualisierung von NVM-Speichern im Netzwerk auf Grundlage von Servern und/oder auf Grundlage eines Netzwerks bereit.
-
Bei dieser Ausführungsform kann das System des Weiteren den zweiten Knoten beinhalten. Der zweite Knoten beinhaltet einen zweiten NVM, der so gestaltet ist, dass er Daten speichert. Der zweite Knoten beinhaltet des Weiteren eine zweite Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem zweiten NVM verbunden ist. Der zweite Knoten beinhaltet des Weiteren eine zweite NIC, die mit der zweiten Speichersteuereinheit verbunden ist, wobei die zweite NIC so gestaltet ist, dass sie Daten über das Netzwerk austauscht. Der zweite Knoten beinhaltet des Weiteren einen zweiten Prozessor. Der zweite Knoten beinhaltet des Weiteren eine zweite Logik, die mit dem zweiten Prozessor integriert und/oder durch diesen ausführbar ist. Die zweite Logik ist so gestaltet, dass sie lokale Verbundparameter von einer lokalen Verbundkonfigurationsdatei empfängt. Die zweite Logik ist des Weiteren so gestaltet, dass sie eine Multicast-Nachricht empfängt, die die Verbundparameter des NVM-Verbunds beinhaltet. Die zweite Logik ist des Weiteren so gestaltet, dass sie in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten die Anforderung von Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den ersten Knoten sendet. Die zweite Logik ist des Weiteren so gestaltet, dass sie dem NVM-Verbund durch Initialisieren der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten beitritt. Die zweite Logik ist des Weiteren so gestaltet, dass sie die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten den sonstigen Knoten in dem NVM-Verbund zuordnet. Darüber hinaus ist die zweite Logik des Weiteren so gestaltet, dass sie Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten an den ersten Knoten sendet. Die zweite Logik ist des Weiteren so gestaltet, dass sie die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten empfängt. Die zweite Logik ist des Weiteren so gestaltet, dass sie die gemeinsam genutzten NVMs auf dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten der zweiten Speichersteuereinheit zuordnet. Diese Ausführungsform stellt einen NVM-Verbund bereit, der den ersten Knoten und den zweiten Knoten beinhaltet, die in der Lage sind, Daten nahtlos in dem Netzwerk zu befördern.
-
In einem Beispiel beinhaltet ein Datenspeichersystem auf Grundlage von Hosts NVMs, die so gestaltet sind, dass sie Daten speichern. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit den NVMs verbunden ist. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren eine NIC, die mit der Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren einen Prozessor. Das Datenspeichersystem auf Grundlage von Hosts beinhaltet des Weiteren eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist. Die Logik ist so gestaltet, dass sie Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet. Die Logik ist des Weiteren so gestaltet, dass sie per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet. Die Logik ist des Weiteren so gestaltet, dass sie Übermittlungs- und Beendigungswarteschlangen von beliebigen gemeinsam genutzten NVMs auf sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit auf Grundlage von Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind. Diese Ausführungsform stellt eine Virtualisierung von NVM-Speichern im Netzwerk auf Grundlage von Servern und/oder auf Grundlage eines Netzwerks bereit.
-
Bei dieser Ausführungsform können Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit mithilfe eines direkten Speicherzugriffs aus der Ferne (remote direct memory access, RDMA) zugeordnet werden. Das Zuordnen von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zu der Speichersteuereinheit mithilfe von RDMA stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die in sonstigen gemeinsam genutzten NVMs in dem Netzwerk gespeichert sind.
-
In einem Beispiel beinhaltet ein Netzwerkspeichermittel eine Mehrzahl von NVM-Speichereinheiten, die so gestaltet sind, dass sie Daten speichern. Das Netzwerkspeichermittel beinhaltet des Weiteren eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit der Mehrzahl von NVM-Speichereinheiten verbunden ist. Das Netzwerkspeichermittel beinhaltet des Weiteren eine NIC, die mit der Speichersteuereinheit verbunden ist. Die NIC ist so gestaltet, dass sie über ein Netzwerk hinweg mit sonstigen Knoten in einem NVM-Verbund über RDMA over converged Ethernet (RoCE) Daten austauscht. Das Netzwerkspeichermittel beinhaltet des Weiteren einen Prozessor. Das Netzwerkspeichermittel beinhaltet des Weiteren eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist. Die Logik ist so gestaltet, dass sie eine Multicast-Nachricht empfängt, die Verbundparameter eines NVM-Verbunds beinhaltet. Der NVM-Verbund beinhaltet einen oder mehrere Knoten, auf denen gemeinsam genutzte NVMs zugreifbar sind. Die Logik ist des Weiteren so gestaltet, dass sie in Reaktion auf das Empfangen der Multicast-Nachricht eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs an beliebige sonstige Knoten in dem NVM-Verbund sendet. Die Logik ist des Weiteren so gestaltet, dass sie dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel beitritt. Die Logik ist des Weiteren so gestaltet, dass sie die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel den sonstigen Knoten in dem NVM-Verbund zuordnet. Die Logik ist des Weiteren so gestaltet, dass sie Einzelangaben der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel den sonstigen Knoten in dem NVM-Verbund sendet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind, Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund empfängt und die gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit zuordnet. Diese Ausführungsform stellt ein Speichermittel bereit, das in der Lage ist, dem Netzwerk Speicher auf Grundlage von NVMs bereitzustellen.
-
Bei dieser Ausführungsform können gemeinsam genutzte NVMs auf dem Netzwerkspeichermittel für die sonstigen Knoten in dem NVM-Verbund über zumindest eines des Folgenden zugreifbar sein: Coherent Accelerator Processor Interface (CAPI) und NVM Express (NVMe). Ein Zugreifen auf gemeinsam genutzte NVMs auf dem Netzwerkspeichermittel über zumindest eines des Folgenden: CAPI und NVMe stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die auf sonstigen gemeinsam genutzten NVMs in dem Netzwerk gespeichert sind.
-
Gemäß einer weiteren Ausführungsform beinhaltet ein Verfahren ein Initiieren von Verbundparametern, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, mithilfe eines ersten Knotens, der einen ersten NVM beinhaltet. Das Verfahren beinhaltet des Weiteren ein Senden per Multicasting von Verbundparametern des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund mithilfe des ersten Knotens. Das Verfahren beinhaltet des Weiteren ein Empfangen einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten an dem ersten Knoten. Das Verfahren beinhaltet des Weiteren ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf einem zweiten Knoten an dem ersten Knoten. Die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten beinhalten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten. Das Verfahren beinhaltet des Weiteren ein Senden der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten. Die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten beinhalten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten. Das Verfahren beinhaltet des Weiteren ein Zuordnen von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten zu dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten mithilfe des ersten Knotens, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind. Dieses Verfahren stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die auf gemeinsam genutzten NVMs in dem NVM-Verbund gespeichert sind.
-
In einem Beispiel beinhaltet das Verfahren ein Empfangen einer Multicast-Nachricht, die Verbundparameter eines NVM-Verbunds beinhaltet. Der NVM-Verbund beinhaltet einen oder mehrere Knoten, auf denen gemeinsam genutzte NVMs zugreifbar sind. Das Verfahren beinhaltet des Weiteren ein Senden einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs an beliebige sonstige Knoten in dem NVM-Verbund in Reaktion auf das Empfangen der Multicast-Nachricht. Das Verfahren beinhaltet des Weiteren ein Beitreten zu dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von lokalen, gemeinsam genutzten NVMs. Das Verfahren beinhaltet des Weiteren ein Zuordnen der Übermittlungs- und Beendigungswarteschlangen der lokalen, gemeinsam genutzten NVMs zu den sonstigen Knoten in dem NVM-Verbund. Das Verfahren beinhaltet des Weiteren ein Senden von Einzelangaben der lokalen, gemeinsam genutzten NVMs an die sonstigen Knoten in dem NVM-Verbund. Das Verfahren beinhaltet des Weiteren ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund. Das Verfahren beinhaltet des Weiteren ein Zuordnen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund. Dieses Verfahren stellt einen nahtlosen und schnellen Zugriff auf die Daten bereit, die auf gemeinsam genutzten NVMs in dem NVM-Verbund gespeichert sind.
-
Sonstige Aspekte und Ausführungsformen der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung ersichtlich, die zusammen mit den Zeichnungen die Grundgedanken der Erfindung beispielhaft veranschaulicht.
-
KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
-
- 1 veranschaulicht eine Netzwerkarchitektur gemäß einer Ausführungsform.
- 2 stellt eine typische Hardware-Umgebung eines Prozessorsystems gemäß einer Ausführungsform dar, die den Servern und/oder Clients von 1 zugehörig sein kann.
- 3 stellt ein Datenspeichersystem auf Grundlage von Hosts bei einer Ausführungsform dar.
- 4 stellt Vorgänge eines Speichersystems mit nichtflüchtigem Speicher (NVM) auf Grundlage von Hosts gemäß einer Ausführungsform dar.
- 5 stellt ein Netzwerkspeichermittel gemäß einer Ausführungsform dar.
- 6 stellt Vorgänge eines Netzwerkspeichermittels gemäß einer Ausführungsform dar.
- 7 stellt eine Gruppierung von NVM-Speicher auf Grundlage von Hosts gemäß einer Ausführungsform dar.
- 8 stellt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform dar.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Gemäß einer Ausführungsform werden Zugriffsverfahren zum Verwenden eines nichtflüchtigen Speichers (NVM) bereitgestellt, die in den heutigen komplizierten und ressourcenintensiven Anwendungen zweckdienlich sind. Bei einem solchen Zugriffsverfahren auf NVMs handelt es sich um einen nahtlosen Hochleistungstransport, der Speichermittelerstellungen bereitstellt, ein Gruppieren von NVM-Speichereinheiten wie zum Beispiel Halbleiter-Laufwerken (SSDs) auf Grundlage von Hosts ermöglicht, ein Gruppieren von NVM-Speichereinheiten auf Grundlage von Hosts und zentraler Speichermittel bereitstellt und eine Virtualisierung von NVMs auf Grundlage von Servern und auf Grundlage eines Netzwerks bereitstellt.
-
Bei einer allgemeinen Ausführungsform beinhaltet ein System einen ersten Knoten, wobei der erste Knoten einen ersten NVM, der so gestaltet ist, dass er Daten speichert, eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden ist, eine erste Netzwerk-Schnittstellenkarte (NIC), die mit der ersten Speichersteuereinheit verbunden ist, wobei die erste NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht, einen ersten Prozessor und eine erste Logik beinhaltet, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist, wobei die erste Logik so gestaltet ist, dass sie: Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet, eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten empfängt, von dem zweiten Knoten Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten empfängt, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten, die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten sendet, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten, und Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
-
Bei einer weiteren allgemeinen Ausführungsform beinhaltet ein Datenspeichersystem auf Grundlage von Hosts NVMs, die so gestaltet sind, dass sie Daten speichern, eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit den NVMs verbunden ist, eine NIC, die mit der Speichersteuereinheit verbunden ist, wobei die NIC so gestaltet ist, dass sie Daten über ein Netzwerk hinweg austauscht, einen Prozessor und eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so gestaltet ist, dass sie: Verbundparameter initiiert, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, per Multicasting Verbundparameter des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund sendet, und Übermittlungs- und Beendigungswarteschlangen von beliebigen gemeinsam genutzten NVMs auf sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit auf Grundlage von Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zuordnet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
-
Gemäß einer weiteren allgemeinen Ausführungsform beinhaltet ein Netzwerkspeichermittel eine Mehrzahl von NVM-Speichereinheiten, die so gestaltet sind, dass sie Daten speichern, eine Speichersteuereinheit, die über eine NVM-Schnittstelle mit der Mehrzahl von NVM-Speichereinheiten verbunden ist, eine NIC, die mit der Speichersteuereinheit verbunden ist, wobei die NIC so gestaltet ist, dass sie über ein Netzwerk hinweg mit sonstigen Knoten in einem NVM-Verbund über Remote Direct Memory Access (RDMA) over converged Ethernet (RoCE) Daten austauscht, einen Prozessor und eine Logik, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so gestaltet ist, dass sie: eine Multicast-Nachricht empfängt, die Verbundparameter eines NVM-Verbunds beinhaltet, wobei der NVM-Verbund einen oder mehrere Knoten beinhaltet, auf denen gemeinsam genutzte NVMs zugreifbar sind, in Reaktion auf das Empfangen der Multicast-Nachricht eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf beliebigen sonstigen Knoten in dem NVM-Verbund sendet, dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel beitritt, die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel den sonstigen Knoten in dem NVM-Verbund zuordnet und Einzelangaben der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel an die sonstigen Knoten in dem NVM-Verbund sendet, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs gemäß einem FIFO-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind, Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund empfängt und die gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit zuordnet.
-
Gemäß einer weiteren allgemeinen Ausführungsform beinhaltet ein Verfahren ein Initiieren von Verbundparametern, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, mithilfe eines ersten Knotens, der erste NVMs beinhaltet, ein Senden per Multicasting von Verbundparametern des NVM-Verbunds in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund mithilfe des ersten Knotens, ein Empfangen einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten an dem ersten Knoten, ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf einem zweiten Knoten an dem ersten Knoten, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten, ein Senden der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten, wobei die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten, und ein Zuordnen von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten zu dem ersten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten mithilfe des ersten Knotens, wobei die Übermittlungswarteschlange so gestaltet ist, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet ist, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
-
Bei einer weiteren allgemeinen Ausführungsform beinhaltet ein Verfahren ein Empfangen einer Multicast-Nachricht, die Verbundparameter eines NVM-Verbunds beinhaltet, wobei der NVM-Verbund einen oder mehrere Knoten beinhaltet, auf denen gemeinsam genutzte NVMs zugreifbar sind, ein Senden einer Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf beliebigen sonstigen Knoten in dem NVM-Verbund in Reaktion auf das Empfangen der Multicast-Nachricht, ein Beitreten zu dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von lokalen, gemeinsam genutzten NVMs, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der lokalen, gemeinsam genutzten NVMs zu den sonstigen Knoten in dem NVM-Verbund und Senden von Einzelangaben der lokalen, gemeinsam genutzten NVMs an die sonstigen Knoten in dem NVM-Verbund, ein Empfangen von Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund und ein Zuordnen der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund.
-
1 veranschaulicht eine Netzwerkarchitektur 100 gemäß einer Ausführungsform. Wie in 1 dargestellt, wird eine Mehrzahl von entfernt angeordneten Netzwerken 102 bereitgestellt, darunter ein erstes entfernt angeordnetes Netzwerk 104 und ein zweites entfernt angeordnetes Netzwerk 106. Ein Gateway 101 kann zwischen den entfernt angeordneten Netzwerken 102 und einem nahegelegenen Netzwerk 108 verbunden sein. Im Rahmen der vorliegenden Netzwerkarchitektur 100 können die Netzwerke 104, 106 jeweils eine beliebige Form annehmen, darunter die eines LAN, eines WAN wie zum Beispiel des Internet, eines öffentlichen Fernsprechnetzes (public switched telephone network, PSTN), eines internen Telefonnetzes usw., ohne auf diese beschränkt zu sein.
-
Im Einsatz dient das Gateway 101 als Eintrittspunkt von den entfernt angeordneten Netzwerken 102 in das nahegelegene Netzwerk 108. Insofern kann das Gateway 101 als Router, der in der Lage ist, ein bestimmtes Paket von Daten weiterzuleiten, das an dem Gateway 101 eintrifft, und als Switch dienen, der für ein bestimmtes Paket den tatsächlichen Pfad in das Gateway 101 und aus diesem heraus bereitstellt.
-
Des Weiteren ist zumindest ein Daten-Server 114 enthalten, der mit dem nahegelegenen Netzwerk 108 verbunden ist und auf den über das Gateway 101 von den entfernt angeordneten Netzwerken 102 zugegriffen werden kann. Es ist zu beachten, dass der/die Daten-Server 114 einen beliebigen Typ einer Datenverarbeitungseinrichtung/Groupware beinhalten kann/können. Mit jedem Daten-Server 114 ist eine Mehrzahl von Benutzereinheiten 116 verbunden. Zu solchen Benutzereinheiten 116 können ein Desktop-Computer, ein Laptop-Computer, ein Hand-Computer, ein Drucker und/oder ein beliebiger sonstiger Typ einer Logik enthaltenden Einheit zählen. Es ist zu beachten, dass eine Benutzereinheit 111 bei einigen Ausführungsformen auch direkt mit einem beliebigen der Netzwerke verbunden sein kann.
-
Eine Peripherieeinheit 120 oder eine Reihe von Peripherieeinheiten 120, z.B. Faxgeräte, Drucker, Scanner, Festplattenlaufwerke, vernetzte und/oder lokale Datenspeichereinheiten oder -systeme usw. können mit einem oder mehreren der Netzwerke 104, 106, 108 verbunden sein. Es ist zu beachten, dass Datenbanken und/oder zusätzliche Komponenten mit einem beliebigen Typ eines mit den Netzwerken 104, 106, 108 verbundenen Netzwerkelements genutzt werden können oder in dieses integriert sein können. Im Rahmen der vorliegenden Beschreibung kann sich ein Netzwerkelement auf eine beliebige Komponente eines Netzwerks beziehen.
-
Gemäß einigen Ansätzen können hierin beschriebene Verfahren und Systeme mit und/oder auf virtuellen Systemen und/oder Systemen implementiert sein, die ein oder mehrere sonstige Systeme emulieren, wie zum Beispiel ein UNIX-System, das eine IBM z/OS-Umgebung emuliert, ein UNIX-System, das eine MICROSOFT-WINDOWS-Umgebung virtuell beherbergt, oder ein MICROSOFT-WINDOWS-System, das eine IBM z/OS-Umgebung emuliert usw. Diese Virtualisierung und/oder Emulation kann bei einigen Ausführungsformen durch die Verwendung von VMWARE-Software erweitert werden.
-
In weiteren Ansätzen können ein oder mehrere Netzwerke 104, 106, 108 einen Verbund von Systemen darstellen, der allgemein als „Cloud“ bezeichnet wird. Beim Cloud-Computing werden gemeinsam genutzte Ressourcen wie zum Beispiel Verarbeitungskapazität, Peripherieeinheiten, Software, Daten, Server usw. jedem System in der Cloud nach Bedarf bereitgestellt und dabei Zugriff und Verteilung von Diensten über zahlreiche Datenverarbeitungssysteme hinweg gewährt. Cloud-Computing geht üblicherweise mit einer Internet-Verbindung zwischen den Systemen einher, die in der Cloud arbeiten, es können jedoch auch andere Techniken zum Verbinden der Systeme nach dem Stand der Technik verwendet werden.
-
2 stellt eine typische Hardware-Umgebung gemäß einer Ausführungsform dar, der eine Benutzereinheit 116 und/oder ein Server 114 von 1 zugehörig sind. 2 veranschaulicht eine typische Hardware-Konfiguration eines Prozessorsystems 200, das eine Zentraleinheit 210 wie zum Beispiel einen Mikroprozessor und eine Anzahl sonstiger Einheiten aufweist, die über einen Systembus 212 verbunden sind, gemäß einer Ausführungsform.
-
Das in 2 dargestellte Prozessorsystem 200 beinhaltet einen Direktzugriffsspeicher (Random Access Memory, RAM) 214, einen Festwertspeicher (Read Only Memory, ROM) 216, einen E/A-Adapter 218, um Peripherieeinheiten wie zum Beispiel ein Speicherteilsystem 220 mit dem Bus 212 zu verbinden, einen Benutzerschnittstellenadapter 222, um eine Tastatur 224, eine Maus 226, einen Lautsprecher 228, ein Mikrophon 232 und/oder sonstige Benutzerschnittstelleneinheiten wie etwa einen Touchscreen, eine (nicht dargestellte) Digitalkamera usw. mit dem Bus 212 zu verbinden, einen Datenübertragungsadapter 234, um das Prozessorsystem 200 mit einem Datenübertragungsnetzwerk 235 (z.B. einem Datenverarbeitungsnetzwerk) zu verbinden, und einen Anzeigeadapter 236, um den Bus 212 mit einer Anzeigeeinheit 238 zu verbinden.
-
Auf dem Prozessorsystem 200 kann sich ein Betriebssystem wie zum Beispiel das Betriebssystem (operating system, OS) MICROSOFT WINDOWS, ein MAC-OS, ein UNIX-OS usw. befinden. Es versteht sich, dass eine bevorzugte Ausführungsform auch auf anderen als den genannten Plattformen und Betriebssystemen implementiert sein kann. Eine bevorzugte Ausführungsform kann mithilfe von JAVA, XML, C und/oder der Sprache C++ oder sonstigen Programmiersprachen wie auch einer objektorientierten Programmiermethodik geschrieben sein. Es kann objektorientierte Programmierung (OOP) verwendet werden, die zunehmend beim Entwickeln komplexer Anwendungen zum Einsatz kommt.
-
Es wird nun auf 3 Bezug genommen, in der ein Datenspeichersystem 300 auf Grundlage von Hosts gemäß einer Ausführungsform dargestellt wird. Das Datenspeichersystem 300 auf Grundlage von Hosts kann ein oder mehrere NVM-Speichereinheiten 302 wie zum Beispiel NVM-Express(NVMe)-Speichereinheiten, SSDs, Flash-Laufwerke usw. aufweisen. Jede NVM-Speichereinheit 302 kann NVMs eines Typs nach dem Stand der Technik wie zum Beispiel einen Flash-Speicher, einen Festwertspeicher (ROM), einen ferroelektrischen Direktzugriffsspeicher (FRAM), einen programmierbaren Festwertspeicher (PROM), einen nichtflüchtigen Direktzugriffsspeicher (nonvolatile random access memory, NVRAM) usw. aufweisen. Bei einer Ausführungsform kann ein Host-Prozessor 304 so gestaltet sein, dass er Daten mit einer Speichersteuereinheit 308 austauscht, die ein Gruppieren der NVMs auf den verschiedenen NVM-Speichereinheiten 302 bereitstellt und unterstützt.
-
Der Host-Prozessor 304 kann so gestaltet sein, dass er mithilfe eines Treibers 306 des Host-Prozessors 304 Daten mit der Speichersteuereinheit 308 über eine Mehrzahl von Peripheral-Component-Interconnect-Express(PCIe)-Strecken 312 wie zum Beispiel über Mehrfache von acht solcher Strecken, z.B. 16 Strecken, 32 Strecken usw. austauscht. Der Host-Prozessor 304 kann eine oder mehrere Zentraleinheiten (central processing units, CPUs) oder einen sonstigen geeigneten Prozessortyp nach dem Stand der Technik aufweisen.
-
Die Speichersteuereinheit 308 kann mit den verschiedenen NVM-Speichereinheiten 302 über eine NVM-Schnittstelle 310 eines Typs nach dem Stand der Technik Daten austauschen. Die Speichersteuereinheit 308 kann als Hardware-Modul, Block und/oder Prozessor wie zum Beispiel als ASIC, FPGA usw. implementiert werden. Darüber hinaus kann die Speichersteuereinheit 308 so gestaltet sein, dass sie über ein oder mehrere Datenübertragungsprotokolle, die zum Speichern und Abrufen von Daten aus den NVM-Speichereinheiten 302 geeignet sind, wie zum Beispiel Remote Direct Memory Access (RDMA) over converged Ethernet (RoCE), Coherent Accelerator Processor Interface (CAPI) over RoCE, CAPI over Ethernet, NVMe over Ethernet usw. Daten austauscht. Bei CAPI handelt es sich um ein Protokoll zum Austauschen von Daten mit lokalen SSDs, und NVMe ist ein Protokoll zum Übertragen von Daten ähnlich wie PCIe für lokalen, verbundenen Speicher.
-
Sonstige Datenübertragungsprotokolle können ebenfalls im Rahmen des Datenspeichersystems 300 eingesetzt werden, wie zum Beispiel Fiber Channel (FC), FC over Ethernet (FCoE), Infiniband, Internet Small Computer System Interface (iSCSI), Transport Control Protocol/Internet Protocol (TCP/IP), PCIe, usw. und/oder eine beliebige Kombination von diesen.
-
Um ein Gruppieren von NVMs (über NVMe, CAPI usw.) bereitzustellen, können Operationswarteschlangen wie zum Beispiel Übermittlungs- und/oder Beendigungswarteschlangen für einen Speicherzugriff aus der Ferne zugeordnet werden. Ein beliebiger Teil des Speicherzugriffsprotokolls kann bei dieser Ausführungsform verwendet werden. Auf diese Weise kann ein Gruppieren verteilten Speichers (oder Platten) in einer direkteren und wirksameren Weise bereitgestellt werden, als aktuell möglich ist.
-
Es wird nun auf 4 Bezug genommen, in der Vorgänge eines NVM-Speichersystems auf Grundlage von Hosts gemäß einer Ausführungsform dargestellt werden. Der Host-Prozessorspeicher 402 kann mit dem Host-Prozessor verbunden werden und kann eine Mehrzahl von Puffern und im Besonderen einen oder mehrere Ringpuffer mit einer Größe aufweisen, die so gestaltet ist, dass sie während einer typischen Ausfallzeit, einer Dienstleistungsunterbrechung, einer Blockübertragung von Befehlen usw. eine Mehrzahl von Befehlen speichert, ohne Befehle mit einer Push-Operation aus dem Puffer zu übertragen. Bei einer Ausführungsform kann der Host-Prozessorspeicher 402 einen oder mehrere Übermittlungswarteschlangen-Ringpuffer 404 (dargestellt werden zwei solcher Ringpuffer, es kann jedoch eine beliebige Anzahl verwendet werden) und einen oder mehrere Beendigungswarteschlangen-Ringpuffer 410 (dargestellt wird ein solcher Ringpuffer, es kann jedoch eine beliebige Anzahl verwendet werden) aufweisen. Sonstige Typen von Puffern können für die Übermittlungswarteschlange und/oder die Beendigungswarteschlange verwendet werden, zum Beispiel ein linearer Puffer und ein sonstiger Puffer nach dem Stand der Technik.
-
Der Übermittlungswarteschlangen-Ringpuffer 404 kann so gestaltet sein, dass er Befehle speichert, die nach einem First-In-First-Out(FIFO)-Schema oder einem sonstigen gewünschten Hinein-/Hinaus-Schema nach dem Stand der Technik ausgeführt werden können. Der Übermittlungswarteschlangen-Ringpuffer 404 kann die Befehle von einem Kopf 406 bis zu einem Nachsatz 408 speichern, wobei zusätzliche Befehle an dem Kopf 406 platziert werden, bis keine weiteren Befehle mehr in die Warteschlagen passen. Bei einer Ausführungsform werden Befehle mit einer Pull-Operation von dem Nachsatz aus dem Übermittlungswarteschlangen-Ringpuffer 404 extrahiert.
-
Der Beendigungswarteschlangen-Ringpuffer 410 kann die beendeten Befehle speichern, nachdem sie durch den Übermittlungswarteschlangen-Ringpuffer 404 verarbeitet worden sind. Der Beendigungswarteschlangen-Ringpuffer 410 kann darüber hinaus Befehle speichern, die nach einem FIFO-Schema oder einem sonstigen gewünschten Hinein-/Hinaus-Schema nach dem Stand der Technik ausgeführt worden sind. Des Weiteren kann der Beendigungswarteschlangen-Ringpuffer 410 die beendeten Befehle von einem Kopf 412 bis zu einem Nachsatz 414 speichern, wobei zusätzliche beendete Befehle vor dem Kopf 412 platziert werden.
-
Die Speichersteuereinheit 308 kann so gestaltet sein, dass sie einen Hinweis empfängt, dass dem Übermittlungswarteschlangen-Ringpuffer 404 ein neuer Befehl hinzugefügt worden ist. Bei einer Ausführungsform kann es sich bei dem Hinweis um einen Doorbell-Message-signaled-Interrupt (MSI) handeln. Anschließend kann die Speichersteuereinheit 308 den Befehl aus dem Übermittlungswarteschlangen-Ringpuffer 404 abrufen, den Befehl bis zum Beenden verarbeiten und einen Hinweis an den Host-Prozessor senden, dass der Befehl beendet worden ist (zum Beispiel über einen Beendigungs-MSI). Anschließend kann die Speichersteuereinheit 308 gemäß einer Ausführungsform einen Hinweis darüber empfangen, dass die Prozessbeendigung bestätigt wird, zum Beispiel über einen Doorbell-MSI (der auf einen neuen Kopf hinweist) in dem Beendigungswarteschlangen-Ringpuffer 410.
-
Ein Netzwerkspeichermittel 500 gemäß einer Ausführungsform wird in 5 dargestellt, das über ein Netzwerk 512 mit einem Host 510 verbunden werden kann. Das Netzwerkspeichermittel 500 kann eine Netzwerk-Schnittstellenkarte (NIC) 502 aufweisen, die so gestaltet sein kann, dass sie Daten über das Netzwerk 512 austauscht. Das Netzwerk 512 kann einen oder mehrere Switches 504 aufweisen. Bei dem einen oder den mehreren Switches 504 kann es sich um eine beliebige Kombination von physischen Switches, virtuellen Switches, verteilten Switches usw. handeln, die so gestaltet sind, dass sie zumindest eines des Folgenden durchführen: eine Vorrangablaufsteuerung (priority flow control, PFC), eine erweiterte Übertragungsauswahl (enhanced transmission selection, ETS), eine quantisierte Überlastungsmeldung (quantized congestion notification, QCN). Bei einer Ausführungsform können der eine oder die mehreren Switches 504 in einem Pfad zwischen dem Netzwerkspeichermittel 500 und dem Host 510 so gestaltet sein, dass sie sämtliche oben aufgeführten Ablaufprotokolle durchführen. Des Weiteren kann jeder der Switches 504 in dem Pfad zwischen dem Netzwerkspeichermittel 500 und dem Host 510 so gestaltet sein, dass er über RoCE und/oder einige oder sämtliche der sonstigen oben aufgeführten Datenübertragungsprotokolle Daten austauscht.
-
Das Netzwerkspeichermittel 500 kann einige oder sämtliche der Komponenten des Datenspeichersystems auf Grundlage von Hosts aufweisen, wie in 3 dargestellt. Wie in 5 dargestellt, kann das Netzwerkspeichermittel 500 eine NIC 502, die so gestaltet sein kann, dass sie über das Netzwerk 512 Daten austauscht, einen Prozessor 508 zum Steuern des Betriebs des Netzwerkspeichermittels 500, die Speichersteuereinheit 308 und eine Mehrzahl von NVM-Speichereinheiten 302 aufweisen, mit denen die Speichersteuereinheit 308 über die NVM-Schnittstelle 310 Daten austauschen kann.
-
Bei einer Ausführungsform kann der Host 510 eine NIC 506 aufweisen, die so gestaltet sein kann, dass sie Daten über das Netzwerk 512 austauscht, und die mit dem Treiber 306 zum Austauschen von Daten über ein oder mehrere der verschiedenen oben aufgeführten Datenübertragungsprotokolle verbunden sein kann. Der Treiber 306 kann durch den Prozessor 304 gesteuert werden.
-
Bei einer Ausführungsform können sowohl die NIC 502 als auch die NIC 506 so gestaltet sein, dass sie Daten über RoCE über das Netzwerk 512 so über den einen oder die mehreren Switches 504 austauschen, dass jeder der Switches 504 in dem Pfad zwischen dem Netzwerkspeichermittel 500 und dem Host 510 so gestaltet sein kann, dass er über RoCE Daten austauscht.
-
Auf diese Weise kann der Host 510 so gestaltet sein, dass er auf die NVMs auf den verschiedenen NVM-Speichereinheiten 302 in dem Netzwerkspeichermittel 500 zugreift. Wenn das Netzwerk 512 Ethernet-Verbindungen nutzt, sind abhängig von der tatsächlichen Gestaltung von 10/40/100 Gbps beliebige mit einer konsistenten, geringen Latenzzeit, Converged-Ethernet-Fähigkeit (für eine Verlustfreiheitsfunktion) und RoCE-Unterstützung möglich. Dies ist eine universelle, schnelle, skalierbare und kostengünstige Lösung für einen direkten Zugriff auf die NVMs auf dem Netzwerkspeichermittel 500.
-
Bei einer Ausführungsform kann ein Netzwerkspeichermittel 500 eine Mehrzahl von NVM-Speichereinheiten 302, die so gestaltet sein können, dass sie Daten speichern, eine Speichersteuereinheit 308, die über eine NVM-Schnittstelle 310 mit der Mehrzahl von NVM-Speichereinheiten 302 verbunden sein kann, eine NIC 502, die mit der Speichersteuereinheit 308 verbunden sein kann und die so gestaltet sein kann, dass sie über ein Netzwerk 512 hinweg mit sonstigen Knoten in einem NVM-Verbund über RoCE oder ein sonstiges geeignetes Protokoll nach dem Stand der Technik Daten austauscht, einen Prozessor 508 und eine Logik aufweisen, die mit dem Prozessor 508 integriert und/oder durch diesen ausführbar ist und die so gestaltet sein kann, dass sie: eine Multicast-Nachricht empfängt, die Verbundparameter eines NVM-Verbunds beinhaltet, wobei der NVM-Verbund einen oder mehrere Knoten beinhaltet, auf denen gemeinsam genutzte NVMs zugreifbar sind; in Reaktion auf das Empfangen der Multicast-Nachricht eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf beliebigen sonstigen Knoten in dem NVM-Verbund sendet; dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen von gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel 500, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel 500 zu den sonstigen Knoten in dem NVM-Verbund, Senden von Einzelangaben der gemeinsam genutzten NVMs auf dem Netzwerkspeichermittel 500 an die sonstigen Knoten in dem NVM-Verbund beitritt; Einzelangaben von gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund empfängt; und die gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund der Speichersteuereinheit 308 auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf den sonstigen Knoten in dem NVM-Verbund zuordnet. Die Übermittlungswarteschlange kann so gestaltet sein, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem sonstigen Knoten gemäß einem First-In-First-Out(FIFO)-Schema speichert, und wobei die Beendigungswarteschlange so gestaltet sein kann, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
-
Vorgänge eines Netzwerkspeichermittels 500 gemäß einer Ausführungsform werden in 6 dargestellt. Wie dargestellt, kann ein Host-Prozessor 304 einen Warteschlangenbefehl ausgeben, der über das Netzwerk über eine NIC 506 ausgetauscht werden kann (wie durch einen Pfeil 608 angegeben) und an dem anderen Ende durch eine NIC 502 empfangen werden kann und anschließend per RDMA in einen Übermittlungswarteschlangen-Ringpuffer 604 übertragen werden kann. Dies ist möglich, weil der Host-Prozessor 304 gemäß einer Ausführungsform dem zugeordneten Speicher 602 des Netzwerkspeichermittels 500 über RDMA so zugeordnet werden kann, dass Warteschlangenbefehle von dem Host-Prozessor 304 per RDMA in den Übermittlungswarteschlangen-Ringpuffer 604 übertragen werden können, ohne dass eine sonstige Verarbeitung erforderlich ist.
-
Damit diese Operation erfolgreich und wiederholbar ist, kann bei einer Ausführungsform die Datenübertragung 608 über das Netzwerk zumindest durch RoCE, PFC und QCN unterstützt werden.
-
Anschließend kann die Speichersteuereinheit 308 einen Hinweis empfangen, dass dem Übermittlungswarteschlangen-Ringpuffer 604 ein neuer Befehl hinzugefügt worden ist. Bei einer Ausführungsform kann es sich bei dem Hinweis um einen Doorbell-MSI handeln. Als Nächstes kann die Speichersteuereinheit 308 den Befehl aus dem Übermittlungswarteschlangen-Ringpuffer 604 abrufen, den Befehl bis zum Beenden verarbeiten und einen Hinweis an den Host-Prozessor 304 senden, dass der Befehl beendet worden ist (zum Beispiel über einen Beendigungs-MSI). Anschließend kann die Speichersteuereinheit 308 gemäß einer Ausführungsform einen Hinweis darüber empfangen, dass die Prozessbeendigung bestätigt wird, zum Beispiel über einen Doorbell-MSI (der einen neuen Kopf angibt) in dem Beendigungswarteschlangen-Ringpuffer 606.
-
Es wird nun auf 7 Bezug genommen, in der ein Gruppieren von NVM-Speicher auf Grundlage von Hosts gemäß einer Ausführungsform dargestellt wird. Wie dargestellt, kann eine Mehrzahl von NVMs auf Grundlage von Hosts in einem NVM-Verbund 700 beinhaltet sein, wobei jeder Host, z.B. ein Host 0 702, ein Host 1 704, ein Host 2 706, ein Host 3 708, ein Host 4 710 usw. seine eigenen lokalen NVMs verwaltet und den sonstigen Mitgliedern des NVM-Verbunds 700 Zugriff auf diese gewährt. In ähnlicher Weise können beliebige Netzwerkspeichermittel 712 so gestaltet sein, dass sie ihre eigenen lokalen NVMs verwalten und den sonstigen Mitgliedern des NVM-Verbunds 700 Zugriff auf diese gewähren. Dieser NVM-Verbund 700 kann eine beliebige Anzahl von Knoten beinhalten. Die Knoten des NVM-Verbunds 700 können ein oder mehrere Netzwerkspeichermittel, einen oder mehrere NVMs auf Grundlage von Hosts und/oder eine beliebige Kombination von diesen beinhalten. Dies hat den Vorteil, dass ein nahtloser und schneller Zugriff auf die Daten, die auf den gemeinsam genutzten NVMs in dem NVM-Verbund 700 gespeichert sind, für sämtliche berechtigten Komponenten in dem Netzwerk bereitgestellt wird.
-
Um diesen NVM-Verbund 700 zu erzielen, können bei einer Ausführungsform die folgenden Operationsschritte durchgeführt werden, um den NVM-Verbund 700 zu starten und in Betrieb zu halten.
- 1) Ein erster Knoten (z.B. der Host 0 702) startet und initiiert Verbundparameter, die regeln, wie der NVM-Verbund 700 funktioniert und arbeitet.
- 2) Der erste Knoten sendet per Multicasting Einzelangaben zu dem Verbund in vorgegebenen Intervallen an einen beliebigen sonstigen Knoten in dem NVM-Verbund 700. Die Einzelangaben zu dem Verbund können Zugriffsrichtlinien beinhalten (zum Beispiel, wie und durch wen auf jegliche Daten zugegriffen werden darf, die in den verschiedenen NVMs des NVM-Verbunds 700 gespeichert sind). Dies bietet eine Möglichkeit, den Zugriff auf bestimmte Daten auf gemeinsam genutzten NVMs zu begrenzen. Dadurch wird der Zugriff auf diese Daten so eingeschränkt, dass unberechtigte Komponenten nicht in der Lage sind, auf diese beschränkten Daten zuzugreifen.
- 3) Ein zweiter Knoten startet (z.B. ein beliebiger der Hosts 1 bis 5), und der zweite Knoten empfängt lokale Verbundparameter von einer Datei auf einer lokalen Festplatte (z.B. von einer Verbundkonfigurationsdatei). Diese lokalen Verbundparameter können beinhalten, woraufhin die Multicast-Nachricht von dem ersten Knoten überwacht werden soll.
- 4) Anschließend fordert der zweite Knoten Daten von sämtlichen Mitgliedsknoten in dem NVM-Verbund 700 an, wobei aktuell der erste Knoten der einzige Mitgliedsknoten ist, der zweite Knoten hat darüber jedoch keine Kenntnis und stellt daher diese Anforderung von Daten. Die Anforderung wird innerhalb des Intervalls gestellt, da der zweite Knoten die Daten von dem ersten Knoten an dem Intervall empfangen würde und diese Anforderung möglicherweise unnötig würde.
- 5) Der zweite Knoten überwacht und empfängt die Multicast-Nachricht von dem erste Knoten.
- 6) Der zweite Knoten fordert in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten Dateispeicherpositionen und Einzelangaben von gemeinsam genutzten Speichern auf dem ersten Knoten an, die bei einem Ansatz in (einem) für Dateien zugänglichen Index/Indizes bereitgestellt werden können.
- 7) Der zweite Knoten tritt dem NVM-Verbund 700 durch Initialisieren seiner eigenen Übermittlungs- und Beendigungswarteschlangen bei, ordnet seinen lokalen NVM-Speicher (die Übermittlungs- und Beendigungswarteschlangen) über RDMA den sonstigen Knoten in dem NVM-Verbund 700 zu und stellt seine eigenen NVM-Einzelangaben wie zum Beispiel eine RoCE-NIC-Adresse zum Zugreifen auf die lokalen NVMs des zweiten Knotens bereit. Dadurch wird ein schneller und zuverlässiger Zugriff auf die gemeinsam genutzten NVMs auf sonstigen Knoten des Verbunds bereitgestellt.
- 8) Der erste Knoten empfängt die NVM-Einzelangaben von dem zweiten Knoten, ordnet die Übermittlungs- und Beendigungswarteschlangen des zweiten Knotens in RDMA zu und stellt NVM-Einzelangaben des ersten Knotens für den zweiten Knoten bereit. Auch sonstige spezifische Operationen sind beim Einrichten eines NVM-Verbunds 700 möglich, der spezifische Beschränkungen einer gemeinsamen Nutzung, Zeiteinschränkungen, Zugriffseinschränkungen usw. nutzt, und diese Daten werden ebenfalls zu diesem Zeitpunkt gemeinsam genutzt.
- 9) Zu diesem Zeitpunkt beinhaltet der NVM-Verbund 700 zwei Knoten, und die NVMs jedes Knotens sind für die anderen Knoten sichtbar.
-
Jetzt ist jeglicher Knoten in dem NVM-Verbund 700 in der Lage, Fernzugriffsanforderungen zum Zugreifen auf die lokalen NVMs des anderen Knotens an sonstige Knoten zu senden. Diese Fernzugriffsanforderungen können in der lokalen Übermittlungswarteschlange des anderen Knotens gespeichert werden, wie zuvor beschrieben verarbeitet werden und anschließend in Reaktion darauf, dass die Operation beendet ist, mit jeglichen Informationen, Daten, Bestätigungen usw., die für die jeweilige Fernzugriffsanforderung angemessen sind, an den initiierenden Knoten zurückgemeldet werden. Dies hat den Vorteil, dass ein nahtloser und schneller Zugriff auf die Daten bereitgestellt wird, die auf sonstigen gemeinsam genutzten NVMs in dem Netzwerk gespeichert sind. Ein lokaler Host weist jedoch keine Sichtbarkeit für Fernzugriffsanforderungen an NVMs des lokalen Hosts auf, und stattdessen wird diese Funktionalität durch die NVM-Steuereinheit bereitgestellt.
-
Bei einer weiteren Ausführungsform kann ein Speicher auf Grundlage von Hosts und/oder ein Netzwerkspeichermittel eine oder mehrere Warteschlangen mit Zugriffsbeschränkung aufweisen, auf die nur durch bestimmte, im Voraus berechtigte Entitäten in dem Netzwerk zugegriffen werden darf. Ein Austausch von Daten kann mit einer entfernt angeordneten Entität erfolgen, die auf die eine oder mehreren Warteschlangen mit Zugriffsbeschränkung zugreifen möchte, um zu ermitteln, ob ein Zugriff zuzulassen ist. Diese eine oder mehreren Warteschlangen mit Zugriffsbeschränkung können bei einem Ansatz über RDMA gemeinsam genutzt werden. Dies hat den Vorteil, dass ein Zugriff auf bestimmte gemeinsam genutzte NVMs in dem Netzwerk beschränkt wird.
-
Unter Bezugnahme auf 8 wird nun ein Verfahren 800 zum Bereitstellen eines Gruppierens von NVMs gemäß einer Ausführungsform dargestellt. In einer Operation 802 werden Verbundparameter, die regeln, wie ein NVM-Verbund funktioniert und arbeitet, mithilfe eines ersten Knotens initiiert.
-
Der erste Knoten kann bei einer Ausführungsform einen ersten NVM, der so gestaltet sein kann, dass er Daten speichert; eine erste Speichersteuereinheit, die über eine NVM-Schnittstelle mit dem ersten NVM verbunden sein kann; eine erste NIC, die mit der ersten Speichersteuereinheit verbunden sein kann und die so gestaltet sein kann, dass sie Daten über ein Netzwerk hinweg austauscht; einen ersten Prozessor; und eine erste Logik beinhalten, die mit dem ersten Prozessor integriert und/oder durch diesen ausführbar ist. Die erste Logik kann bei einer Ausführungsform so gestaltet sein, dass sie das Verfahren 800 ausführt.
-
In einer Operation 804 können Verbundparameter des NVM-Verbunds per Multicasting über das Netzwerk hinweg in vorgegebenen Intervallen so an einen beliebigen sonstigen Knoten in dem NVM-Verbund gesendet werden, dass diese sonstigen Knoten auf das Vorhandensein des NVM-Verbunds hingewiesen werden können.
-
In einer Operation 806 kann eine Anforderung von Einzelangaben von gemeinsam genutzten NVMs auf dem ersten Knoten von einem zweiten Knoten empfangen werden. Nicht sämtliche NVMs des ersten Knotens müssen für eine gemeinsame Nutzung gestaltet sein, und daher kann der erste Knoten so gestaltet sein, dass er ermittelt, welcher Anteil der ersten NVMs gemeinsam zu nutzen ist, was als gemeinsam genutzte NVMs auf dem ersten Knoten bezeichnet wird.
-
In einer Operation 808 können Einzelangaben von gemeinsam genutzten NVMs auf dem zweiten Knoten an dem ersten Knoten von dem zweiten Knoten empfangen werden. Die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten können Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem zweiten Knoten beinhalten, sodass die Dateispeicherpositionen der ersten Speichersteuereinheit des ersten Knotens zugeordnet werden können.
-
In einer Operation 810 können Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten gesendet werden. Die Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten können Dateispeicherpositionen in jedem gemeinsam genutzten NVM auf dem ersten Knoten beinhalten, sodass die Dateispeicherpositionen der zweiten Speichersteuereinheit des zweiten Knotens zugeordnet werden können.
-
In einer Operation 812 können Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit zugeordnet werden. Die Übermittlungswarteschlange kann so gestaltet sein, dass sie Befehle zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten gemäß einem FIFO-Schema speichert, und die Beendigungswarteschlange kann so gestaltet sein, dass sie beendete Befehle speichert, nachdem diese durch die Übermittlungswarteschlange verarbeitet worden sind.
-
Dies ermöglicht über den NVM-Verbund hinweg ein Zugreifen auf die gemeinsam genutzten Speicher sämtlicher Knoten in dem NVM-Verbund.
-
Bei einer weiteren Ausführungsform kann das Verfahren 800 ein Empfangen von lokalen Verbundparametern von einer lokalen Verbundkonfigurationsdatei; ein Empfangen einer Multicast-Nachricht, die die Verbundparameter des NVM-Verbunds beinhaltet; in Reaktion auf das Empfangen der Multicast-Nachricht von dem ersten Knoten ein Senden der Anforderung von Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten an den ersten Knoten; ein Beitreten zu dem NVM-Verbund durch Initialisieren von Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten, Zuordnen der Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten zu den sonstigen Knoten in dem NVM-Verbund, Senden von Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten an den ersten Knoten; ein Empfangen der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten; und ein Zuordnen der gemeinsam genutzten NVMs auf dem ersten Knoten zu der zweiten Speichersteuereinheit auf Grundlage der Einzelangaben der gemeinsam genutzten NVMs auf dem ersten Knoten beinhalten.
-
Bei einer Ausführungsform können die Einzelangaben zu dem Verbund Zugriffsrichtlinien für Daten beinhalten, die in den gemeinsam genutzten NVMs auf dem ersten Knoten gespeichert sind. Auf diese Weise können Dateien mit Zugriffsbeschränkung angegeben werden und sonstige Knoten in den NVMs möglicherweise keinen Zugriff haben oder besondere Berechtigungen benötigen, um auf den beschränkten Inhalt zuzugreifen, wie einem Fachmann verständlich wäre.
-
Bei einer weiteren Ausführungsform kann das Verfahren 800 ein Empfangen einer Anforderung von Einzelangaben zu dem Verbund von dem zweiten Knoten beinhalten, bevor die Einzelangaben zu dem Verbund in den vorgegebenen Intervallen per Multicasting gesendet werden. Dies ermöglicht, dass der erste Knoten auf das Vorhandensein des zweiten Knotens hingewiesen wird, bevor ein Übertragen der Einzelangaben zum Verbund ausgeblendet wird.
-
In einem Ansatz können die Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten der ersten Speichersteuereinheit mithilfe von RDMA zugeordnet werden. Des Weiteren können die Einzelangaben der gemeinsam genutzten NVMs auf dem zweiten Knoten eine RoCE-NIC-Adresse des zweiten Knotens beinhalten, die durch einen beliebigen sonstigen Knoten in dem NVM-Verbund zum Zugreifen auf die gemeinsam genutzten NVMs auf dem zweiten Knoten verwendet wird.
-
Darüber hinaus können die gemeinsam genutzten NVMs auf dem ersten Knoten und die gemeinsam genutzten NVMs auf dem zweiten Knoten für sonstige Knoten in dem NVM-Verbund über zumindest eines des Folgenden zugreifbar sein: CAPI und NVMe.
-
Ein beliebiger geeigneter NVM kann in einem beliebigen der Knoten in dem NVM-Verbund verwendet werden, darunter in denjenigen, die hierin beschrieben werden, und in sonstigen nach dem Stand der Technik.
-
Bei einer weiteren Ausführungsform kann das Verfahren 800 ein Senden von Daten von den gemeinsam genutzten NVMs auf dem ersten Knoten an den zweiten Knoten über RDMA mithilfe von zumindest einem des Folgenden: NVMe over Ethernet und CAPI o-ver Ethernet; und ein Durchführen von Operationen an den Übermittlungs- und Beendigungswarteschlangen der gemeinsam genutzten NVMs auf dem zweiten Knoten über RoCE beinhalten, wobei die Operationen von einem Zugreifen auf Daten, einem Zugreifen auf Anweisungen, einem Einstellen von Daten in eine Warteschlange und einem Einstellen von Anweisungen in eine Warteschlange zumindest eines beinhalten.
-
Der NVM-Verbund kann darüber hinaus ein oder mehrere Netzwerkspeichermittel und/oder sonstige Netzwerkspeichereinheiten beinhalten, die NVMs beinhalten, wie einem Fachmann bekannt wäre.
-
Die hierin dargestellten Zugriffsverfahren von NVMs gemäß verschiedenen Ausführungsformen ermöglichen einen Ethernet-Transport mit geringer und konsistenter Latenzzeit für eine Datenspeicherung auf einem nichtflüchtigen Speicher, verkürzen eine Prozessorwartezeit und verbessern die Leistungsfähigkeit von Anwendungen, können in einem skalierbaren NVM-Speichermittel beinhaltet sein, ermöglichen ein Gruppieren, stellen eine Speichervirtualisierung bereit und senken die Kosten der Implementierung gegenüber aktuellen Zugriffsverfahren.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) beinhalten, auf dem sich computerlesbare Programmanweisungen befinden, die bewirken, dass ein Prozessor Aspekte der vorliegenden Erfindung ausführt.
-
Bei dem computerlesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit aufrechterhalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder um eine beliebige geeignete Kombination aus Obigen handeln, ohne auf diese beschränkt zu sein. Eine nicht erschöpfende Liste konkreterer Beispiele für das computerlesbare Speichermedium beinhaltet folgende: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (random access memory, RAM), einen Festwertspeicher (read-only memory, ROM), einen löschbaren, programmierbaren Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (static random access memory, SRAM), einen tragbaren Compact-Disk-Festwertspeicher (CD-ROM), eine digitale, vielseitige Scheibe (digital versatile disk, DVD), einen Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Nut, auf denen Anweisungen aufgezeichnet sind, oder eine beliebige geeignete Kombination aus Obigen. So, wie dieser Begriff hierin verwendet wird, ist ein computerlesbares Speichermedium nicht als per se transitorische Signale auszulegen, wie zum Beispiel Funkwellen oder sonstige sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder sonstige Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch eine Leitung übertragen werden.
-
Die hierin beschriebenen computerlesbaren Programmanweisungen können von einem computerlesbaren Speichermedium über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrs-Netzwerk und/oder ein drahtloses Netzwerk auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragungssysteme, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zum Speichern in einem computerlesbaren Speichermedium innerhalb der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei computerlesbaren Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, Anweisungen einer Anweisungssatzarchitektur (instruction-set-architecture, ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Microcode, Firmware-Anweisungen, Zustandseinstelldaten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sind, darunter in einer objektorientierten Programmiersprache wie zum Beispiel Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie etwa der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden. Bei einigen Ausführungsformen können elektronische Schaltungen wie zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen durch Einsetzen von Zustandsdaten der computerlesbaren Programmanweisungen zum Anpassen der elektronischen Schaltungen so ausführen, dass Aspekte der vorliegenden Erfindung durchgeführt werden.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen implementiert werden kann/können.
-
Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass das computerlesbare Speichermedium, in dem Anweisungen gespeichert sind, einen Herstellungsgegenstand (article of manufacture) aufweist, der Anweisungen beinhaltet, die Aspekte der Funktion/des Vorgangs implementieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
-
Die computerlesbaren Programmanweisungen können außerdem so auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder eine sonstige Einheit geladen werden, dass sie bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder einer sonstigen Einheit so ausgeführt wird, dass ein computerimplementierter Prozess erzeugt wird, sodass die auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder einer sonstigen Einheit ausgeführten Anweisungen die in dem Block oder den Blöcken des Ablaufplans/der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge implementieren.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren der angegebenen logischen Funktion(en) aufweist. Bei einigen alternativen Implementierungen können die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf Grundlage von Hardware implementiert werden können, die die angegebenen Funktionen oder Vorgänge ausführen oder Kombinationen von Spezial-Hardware und Computeranweisungen ausführen.
-
Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine Logik beinhalten, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so gestaltet ist, dass sie einen oder mehrere der hierin aufgeführten Prozessschritte durchführt. „integriert mit“ bedeutet, dass in den Prozessor eine Logik als Hardware-Logik wie zum Beispiel eine ASIC, ein FPGA usw. eingebettet ist. „Durch den Prozessor ausführbar“ bedeutet, dass es sich bei der Logik um eine Hardware-Logik; eine Software-Logik wie zum Beispiel eine Firmware, einen Teil eines Betriebssystems, einen Teil eines Anwendungsprogramms; usw. oder eine Kombination aus Hardware- und Software-Logik handelt, die durch den Prozessor zugreifbar ist und die so gestaltet ist, dass sie bewirkt, dass der Prozessor bei einer Ausführung durch den Prozessor eine Funktionalität durchführt. Eine Software-Logik kann auf einem lokalen und/oder einem entfernt angeordneten Speicher eines beliebigen Speichertyps nach dem Stand der Technik gespeichert sein. Ein beliebiger Prozessor nach dem Stand der Technik kann verwendet werden, zum Beispiel ein Software-Prozessormodul und/oder ein Hardware-Prozessor wie zum Beispiel eine ASIC, ein FPGA, eine CPU, eine integrierte Schaltung (integrated circuit, IC) eine Grafikverarbeitungseinheit (graphics processing unit, GPU) usw.
-
Es ist ersichtlich, dass die verschiedenen Merkmale der obigen Systeme und/oder Methoden in beliebiger Weise kombiniert werden können, wodurch eine Mehrzahl von Kombinationen aus den oben dargelegten Beschreibungen erzeugt wird.
-
Es ist des Weiteren ersichtlich, dass Ausführungsformen der vorliegenden Erfindung in Form einer im Namen eines Kunden bereitgestellten Dienstleistung bereitgestellt werden können, um eine Dienstleistung auf Anforderung anzubieten.
-
Oben sind zwar verschiedene Ausführungsformen beschrieben worden, es versteht sich jedoch, dass sie lediglich als Beispiel und nicht als Beschränkung dargestellt worden sind. Folglich sollen die Breite und der Umfang einer Ausführungsform der vorliegenden Erfindung nicht durch jegliche der oben beschriebenen beispielhaften Ausführungsformen beschränkt werden, sondern sie sollen nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Entsprechungen definiert werden.