-
HINTERGRUND
-
Die vorliegende Offenbarung bezieht sich auf Speichersysteme. In einem spezielleren Beispiel bezieht sich die vorliegende Offenbarung auf Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem), um eine speicherzentrische Aufgabe durchzuführen.
-
Speichersysteme mit einer Vielzahl von Speichervorrichtungen verwenden üblicherweise Datenredundanztechniken (z. B. Spiegelung oder Parität für Redundant Array of Independent Disks (RAID), Löschcodierung) um ein Rekonstruieren von Daten und ein Wiederherstellen einer ausgefallenen Speichervorrichtung zu ermöglichen. Wenn zum Beispiel eine Speichervorrichtung in einem RAID-Array ausgefallen ist, wird bei herkömmlichen Systemen die ausgefallene Speichervorrichtung nicht mehr verwendet, und die verbleibenden funktionierenden Speichervorrichtungen werden verwendet, um die verlorenen Daten der ausgefallenen Speichervorrichtung zu rekonstruieren.
-
Während dieser Zeit wechselt das Speichersystem in einen verminderten Betriebsmodus, in dem das Speichersystem ein reduziertes Leistungsniveau und/oder Lastausgleichsprobleme (z. B. aufgrund einer erhöhten Last, die den verbleibenden funktionierenden Speichervorrichtungen auferlegt wird) erfahren kann, bis die ausgefallene Speichervorrichtung repariert oder ersetzt ist.
-
KURZDARSTELLUNG
-
Die vorliegende Offenbarung bezieht sich auf Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen.
-
Eine oder mehrere Ausführungsformen der vorliegenden Offenbarung, wie hierin offenbart, können eine Anzahl technischer Merkmale und Vorteile bereitstellen, einschließlich, ohne darauf beschränkt zu sein, Folgendes:
- (1) Verbesserte Systemleistung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemleistung durch Zuweisen von speicherzentrischen Aufgaben zu der ausgefallenen Speichervorrichtung, anstatt von dieser weg (wie bei herkömmlichen Systemen), nachdem der Ausfall detektiert wurde. Die ausgefallene Speichervorrichtung kann Aufgaben effizienter durchführen als eine andere, noch funktionierende Speichervorrichtung in dem Speichersystem, weil die ausgefallene Speichervorrichtung aufgrund des Ausfalls ihres Speichermediums keine regelmäßige Eingabe/Ausgabe-Last (E/A-Last) (z. B. Komprimierung/Dekomprimierung oder Verschlüsselung/Entschlüsselung, die sehr rechenintensiv sind) mehr aufweist.
- (2) Verbesserte Systemressourcennutzung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemressourcennutzung durch die fortgesetzte Verwendung der ausgefallenen Speichervorrichtung nach dem Ausfall der Vorrichtung, indem die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen. Die vorliegende Offenbarung nutzt die Tatsache, dass trotz eines Ausfalls in ihrem Speichermedium andere Rechen-, Speicher- und/oder E/A-Ressourcen der ausgefallenen Speichervorrichtung weiterhin betriebsfähig sein können.
-
Die vorliegende Offenbarung schließt, ohne darauf beschränkt zu sein, die folgenden Gesichtspunkte ein:
-
Gemäß einem innovativen Gesichtspunkt ein Verfahren, einschließlich, als Reaktion auf eine Detektion einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem), eines Bestimmens, durch die ausgefallene Speichervorrichtung, dass der ausgefallenen Speichervorrichtung eine speicherzentrische Aufgabe zugewiesen ist; und eines Durchführens, durch die ausgefallene Speichervorrichtung, der speicherzentrischen Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem.
-
Gemäß einem weiteren innovativen Gesichtspunkt eine Einrichtung, einschließlich eines oder mehrerer Prozessoren; und Logik, die durch den einen oder die mehreren Prozessoren ausführbar ist, die eingerichtet sind, um Vorgänge durchzuführen, aufweisend: als Reaktion auf eine Detektion einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem): Bestimmen, durch die ausgefallene Speichervorrichtung, dass der ausgefallenen Speichervorrichtung eine speicherzentrische Aufgabe zugewiesen ist; und Durchführen, durch die ausgefallene Speichervorrichtung, der speicherzentrischen Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem.
-
Gemäß noch einem weiteren innovativen Gesichtspunkt ein computerimplementiertes Verfahren, das ein Detektieren einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem) aufweist; als Reaktion auf das Erfassen der ausgefallenen Speichervorrichtung, Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung, wobei die speicherzentrische Aufgabe als Reaktion auf P2P-Kommunikationen mit einer funktionierenden Speichervorrichtung in dem P2P-Speichersystem durch die ausgefallene Speichervorrichtung durchzuführen ist; und Detektieren einer Beendigung der speicherzentrischen Aufgabe durch die ausgefallene Speichervorrichtung.
-
Gemäß einem weiteren innovativen Gesichtspunkt ein System, das ein Mittel zum Detektieren einer ausgefallenen Speichervorrichtung in einer Vielzahl von Speichervorrichtungen; ein Mittel zum Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung als Reaktion auf das Detektieren der ausgefallenen Speichervorrichtung; und ein Mittel zum Durchführen der speicherzentrischen Aufgabe als Reaktion auf Peer-to-Peer-Kommunikationen (P2P-Kommunikationen) mit einer funktionierenden Speichervorrichtung in der Vielzahl von Speichervorrichtungen aufweist.
-
Diese und andere Implementierungen können optional jeweils eines oder mehrere der folgenden Merkmale einschließen: dass das Durchführen der speicherzentrischen Aufgabe ein Empfangen von Eingabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, über die P2P-Kommunikationen von der funktionierenden Speichervorrichtung und ein Durchführen der speicherzentrischen Aufgabe unter Verwendung der Eingabedaten, die von der funktionierenden Speichervorrichtung empfangen werden, einschließt; dass das Durchführen der speicherzentrischen Aufgabe ein Erzeugen von Ausgabedaten und ein Senden der Ausgabedaten über die P2P-Kommunikationen an die funktionierende Speichervorrichtung einschließt; dass eine funktionierende Rechenressource in der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe durchführt; dass die P2P-Kommunikationen mindestens eines von einem P2P-Lesebefehl und einem P2P-Schreibbefehl einschließen, die durch die ausgefallene Speichervorrichtung an die funktionierende Speichervorrichtung ausgegeben werden; dass das P2P-Speichersystem eine Steuerung einschließt und die Steuerung der ausgefallenen Speichervorrichtung die speicherzentrische Aufgabe basierend auf einer Lastausgleichsrichtlinie für das P2P-Speichersystem zuweist; dass die Detektion der ausgefallenen Speichervorrichtung eine Änderung in einer Gewichtung der Lastausgleichsrichtlinie bewirkt und dass die speicherzentrische Aufgabe eine Musterabgleichsaufgabe aufweist und die ausgefallene Speichervorrichtung die Musterabgleichsaufgabe an einem Datensatz durchführt, der auf der funktionierenden Speichervorrichtung gespeichert ist.
-
Andere Implementierungen eines oder mehrerer dieser Gesichtspunkte schließen entsprechende Systeme, Einrichtungen und Computerprogramme ein, die eingerichtet sind, um die Aktionen der Verfahren durchzuführen, die auf Computerspeichervorrichtungen codiert sind. Es sei klargestellt, dass die in der vorliegenden Offenbarung verwendete Ausdrucksweise hauptsächlich für Lesbarkeits- und Anweisungszwecke gewählt wurde und den Schutzumfang des hierin offenbarten Gegenstands nicht beschränken soll.
-
Figurenliste
-
Die hierin eingeführten Techniken sind beispielhaft und nicht einschränkend in den Figuren der beigefügten Zeichnungen veranschaulicht, in denen gleiche Bezugszeichen verwendet werden, um auf ähnliche Elemente Bezug zu nehmen.
- 1 stellt ein Blockdiagramm eines beispielhaften Rechensystems, einschließlich eines Hosts und eines Peer-to-Peer-Speichersystems (P2P-Speichersystems), gemäß einer Ausführungsform dar.
- 2 stellt ein Blockdiagramm einer beispielhaften Systemsteuerung für das in 1 gezeigte P2P-Speichersystem gemäß einer Ausführungsform dar.
- 3 stellt ein Blockdiagramm einer beispielhaften Vorrichtungssteuerung für das in 1 gezeigte P2P-Speichersystem gemäß einer Ausführungsform dar.
- 4 veranschaulicht verschiedene Host- und P2P-Datenübertragungen, die in Verbindung mit einem Verfahren zum Verwenden einer ausgefallenen Speichervorrichtung in dem in 1 gezeigten P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, gemäß einer Ausführungsform erfolgen können.
- 5A und 5B stellen ein Flussdiagramm eines beispielhaften Verfahrens zum Verwenden einer ausgefallenen Speichervorrichtung in dem in 1 und 4 gezeigten P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, gemäß einer Ausführungsform dar.
- 6A und 6B stellen ein Flussdiagramm eines beispielhaften Verfahrens zum Verwenden einer ausgefallenen Speichervorrichtung in dem in 1 und 4 gezeigten P2P-Speichersystem, um eine beispielhafte speicherzentrische Aufgabe (insbesondere eine Musterabgleichsaufgabe) durchzuführen, gemäß einer Ausführungsform dar.
- 7 stellt ein Flussdiagramm eines beispielhaften Verfahrens zum Durchführen einer Datenverwaltungsanforderung (z. B. einer Datenübertragungsanforderung) gemäß einem Datenverwaltungsschema einer verteilten globalen Flash-Translationsschicht (Flash Translation Layer, FTL) für das in 1 und 4 gezeigte Rechensystem gemäß einer Ausführungsform dar.
-
DETAILLIERTE BESCHREIBUNG
-
Es wird eine neuartige Datenverarbeitungstechnologie, wie, ohne darauf beschränkt zu sein, Systeme, Vorrichtungen und Verfahren zum Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem (P2P-Speichersystem), um eine speicherzentrische Aufgabe durchzuführen, offenbart. Während diese Technologie nachfolgend im Zusammenhang mit einer bestimmten Systemarchitektur in verschiedenen Fällen beschrieben wird, versteht es sich, dass die Systeme und Verfahren auf andere Hardware-Architekturen und -Organisationen angewendet werden können. Genauer sei angemerkt, dass, während die folgende Beschreibung in Bezug auf bestimmte Ausführungsformen erfolgt, die vorliegende Offenbarung auf jedes Speichersystem angewendet werden kann, das eine bekannte oder in Betracht gezogene Datenredundanz implementiert.
-
1 stellt ein Blockdiagramm eines beispielhaften Rechensystems 100, einschließlich eines Hosts 101 und eines P2P-Speichersystems 110, gemäß einer Ausführungsform dar. Wie unten unter Bezugnahme auf 5-6 ausführlich beschrieben, kann das Rechensystem 100 in Verbindung mit einem Verfahren zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, verwendet werden.
-
In der vorliegenden Offenbarung kann eine „speicherzentrische Aufgabe“ auf jede Sequenz von Vorgängen (z. B. einen „Job“, einen „Prozess“ usw.), die die Übertragung und/oder Verarbeitung von in Speichervorrichtungen oder -systemen gespeicherten Daten beinhalten, Bezug nehmen. Beispiele von speicherzentrischen Aufgaben schließen Musterabgleich, Abbildung/Reduzierung, Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Wiederherstellung einer ausgefallenen Speichervorrichtung usw. ein.
-
Der Host 101 kann eines oder mehrere von beliebigen geeigneten Computervorrichtungen oder -systemen sein, wie ein Servercomputer, ein Desktop-Computer, ein Laptop-Computer, ein Tablet-Computer, ein Mobiltelefon oder eine beliebige andere elektronische Vorrichtung, die dazu in der Lage ist, Anforderungen an das P2P-Speichersystem vorzunehmen. In einigen Ausführungsformen kann der Host 101 einen oder mehrere Prozessoren, eine oder mehrere Speichervorrichtungen und beliebige andere geeignete Komponenten einschließen, um dem Host 101 Funktionalität hinzuzufügen.
-
Der Host 101 kann durch ein Netzwerk, wie ein lokales Netzwerk (Local-Area Network, LAN), ein Weitverkehrsnetzwerk (Wide-Area Network, WAN), eine geschaltete Fabric, ein drahtverbundenes oder drahtloses Netzwerk, ein privates oder öffentliches Netzwerk usw., kommunikativ mit dem P2P-Speichersystem 110 gekoppelt sein.
-
Der Host 101 kann eine oder mehrere Anwendungen ausführen, die Speicheranforderungen (z. B. Lesen, Schreiben usw.) an das P2P-Speichersystem vornehmen. In einigen Ausführungsformen können die eine oder die mehreren Anwendungen dedizierte Softwareanwendungen sein, die auf dem Host 101 ausgeführt werden, oder können sich alternativ auf anderen geeigneten Rechenvorrichtungen befinden und können entfernt durch den Host 101 ausgeführt werden.
-
Das P2P-Speichersystem 110 kann eine Systemsteuerung 120 und eine Vielzahl von Speichervorrichtungen 140a, 140b und 140c aufweisen, die durch ein Transportmittel, wie eine auf Ethernet basierende interne Fabric, InfiniBand, Peripheral Component Interconnect Express (PCle), Non-Volatile Memory Express Over Fabric (NVMeOF) usw., gekoppelt sind. Wenngleich das P2P-Speichersystem 110 in 1 zur einfacheren Veranschaulichung mit drei Speichervorrichtungen gezeigt ist, sei angemerkt, dass andere Ausführungsformen des P2P-Speichersystems eine beliebige geeignete Anzahl von Speichervorrichtungen einsetzen können.
-
Wie unten unter Bezugnahme auf 2 ausführlicher beschrieben, kann die Systemsteuerung 120 eine oder mehrere Rechenvorrichtungen und/oder Software (in der vorliegenden Offenbarung zusammen als „Logik“ bezeichnet) aufweisen, die eingerichtet sind, um den Betrieb der Speichervorrichtungen 140a, 140b und 140c zu verwalten und eine externe Schnittstelle zu diesen (z. B. zur Kommunikation mit dem Host 101) bereitzustellen. Zum Beispiel kann die Systemsteuerung 120 verschiedene Vorgänge der Speichervorrichtungen 140a, 140b und 140c, einschließlich Datenredundanz und/oder -wiederherstellung, Speichervorrichtungswiederherstellung und/oder automatischer Speicherbereinigung, koordinieren und durchführen. Außerdem kann die Systemsteuerung 120 in einigen Ausführungsformen Kommunikationen zwischen dem Host 101 und den Speichervorrichtungen 140a, 140b und 140c, einschließlich eines Weiterleitens von Lese- oder Schreibanforderungen, die von dem Host 101 empfangen werden, an die entsprechende Speichervorrichtung (einschließlich eines Durchführens einer erforderlichen Adressübersetzung, wie weiter unten beschrieben) und eines Abrufens von Daten von den Speichervorrichtungen auf eine logische Weise (z. B. können Blöcke in einen Streifen assembliert werden) koordinieren, bevor sie an den Host 101 zurückgegeben werden. In einigen Ausführungsformen kann die Systemsteuerung 120 eine Non-Volatile Memory Express-Steuerung (NVMe-Steuerung) sein.
-
In einigen Ausführungsformen kann die Systemsteuerung 120 ihre Aktionen mit den Aktionen der anderen Komponenten in dem Computersystem 100, wie dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c, beim Durchführen der verschiedenen speicherzentrischen Aufgaben, wie unten beschrieben, unter Verwendung zum Beispiel des verteilten globalen FTL-Datenverwaltungsschemas, wie unten unter Bezugnahme auf 7 beschrieben, koordinieren. In einigen Ausführungsformen kann die Systemsteuerung 120 keine separate Komponente, wie in 1 gezeigt, sein, sondern kann stattdessen in den Host 101 oder in eine oder mehrere der Speichervorrichtungen 140a, 140b und 140c integriert sein.
-
Jede der Vielzahl von Speichervorrichtungen 140a, 140b und 140c (im Folgenden allgemein einzeln als Speichervorrichtung 140 bezeichnet) kann eine flüchtige oder nicht-flüchtige nicht-transitorische Speichervorrichtung mit geeigneten Eigenschaften sein, wie ein Flash-Speicher (z. B. Festkörperlaufwerk (Solid-State Drive, SSD)), persistenter Speicher (Persistent Memory, PM) und/oder Festplattenmedien, einschließlich Shingled Magnetic Recording-Platten (SMR-Platten), hybrider Speichervorrichtungen usw. Die Speichervorrichtungen 140a, 140b und 140c können durch ein Transportmedium, wie eine auf Ethernet basierende interne Fabric, InfiniBand, PCIe, NVMeOF usw., kommunikativ miteinander und an die Systemsteuerung 120 gekoppelt sein.
-
Jede Speichervorrichtung 140 schließt eine Vorrichtungssteuerung 142 und ein Speichermedium 143 ein. Wie unten unter Bezugnahme auf 3 ausführlicher beschrieben, kann die Vorrichtungssteuerung 142 eine oder mehrere Rechenvorrichtungen und/oder Software (in der vorliegenden Offenbarung zusammen als „Logik“ bezeichnet) aufweisen, die eingerichtet sind, um den Betrieb des Speichermediums 143 zu verwalten und eine externe Schnittstelle zu der jeweiligen Speichervorrichtung 140 bereitzustellen. In einigen Ausführungsformen, wie unten unter Bezugnahme auf 4 beschrieben, können diese Vorgänge ein Durchführen von Peer-to-Peer-Kommunikationen (P2P-Kommunikationen) (z. B. P2P-Datenübertragungen) mit anderen Speichervorrichtungen in dem P2P-Speichersystem einschließen.
-
Das Speichermedium 143 kann ein oder mehrere flüchtige oder nicht-flüchtige Speichermedien mit physischen oder logischen Abschnitten zum Speichern von Daten, wie Dies, Platten, Speicherzellen, Sektoren und/oder Seiten, aufweisen. In einigen Ausführungsformen können Daten in dem Speichermedium 143 jeder Speichervorrichtung 140 in Form von einem oder mehreren Blöcken 144 organisiert sein. Ferner können die Blöcke 144 in Form von Streifen unter Verwendung einer geeigneten Datenstrukturierungsmethodik, wie einer Protokollstrukturierung, in die Speichervorrichtungen in dem P2P-Speichersystem 110 geschrieben werden.
-
Das P2P-Speichersystem 110 kann unter Verwendung eines geeigneten Redundanzschemas, wie RAID oder einer Löschcodierung, eingerichtet werden, so dass im Falle eines Ausfalls von einer oder mehreren Speichervorrichtungen in dem P2P-Speichersystem 110 ein Datenrekonstruktions- und/oder -wiederherstellungsprozess durchgeführt werden kann, um die Daten von der/den ausgefallenen Speichervorrichtung(en) wiederherzustellen.
-
In der vorliegenden Offenbarung kann eine „ausgefallene Speichervorrichtung“ auf jede Speichervorrichtung in dem P2P-Speichersystem, die in irgendeiner Hinsicht nicht richtig funktioniert, Bezug nehmen, einschließlich: (1) einer Speichervorrichtung, die weiterhin betriebsfähig ist, aber basierend auf einem Frühwarnhinweis als „ausgefallen“ betrachtet werden kann, und (2) einer Speichervorrichtung, die nur teilweise ausgefallen ist. Zum Beispiel kann die ausgefallene Speichervorrichtung in einigen Ausführungsformen eine oder mehrere Speicherressourcen (z. B. das Speichermedium 143), die teilweise oder vollständig ausgefallen sind, und eine oder mehrere Rechenressourcen (z. B. die Vorrichtungssteuerung 142), die mindestens teilweise weiterhin funktionieren (z. B. in der Lage sind, mindestens einige ihrer vorgesehenen Funktionen durchzuführen), einschließen. Die eine oder die mehreren Speichervorrichtungen in dem P2P-Speichersystem, außer der ausgefallenen Speichervorrichtung, können als „funktionierende Speichervorrichtungen“ bezeichnet werden.
-
In dem in 1 und 4 gezeigten P2P-Speichersystem 110 entspricht die Speichervorrichtung 140b der ausgefallenen Speichervorrichtung (im Folgenden als ausgefallene Speichervorrichtung 140' bezeichnet) und entsprechen eine oder mehrere der Speichervorrichtungen 140a und 140c der/den funktionierenden Speichervorrichtung(en) (im Folgenden als funktionierende Speichervorrichtung 140" bezeichnet). Es sei jedoch angemerkt, dass in anderen Ausführungsformen des P2P-Speichersystems andere Speichervorrichtungen der ausgefallenen Speichervorrichtung und der/den funktionierenden Speichervorrichtung(en) entsprechen können.
-
In Ausführungsformen, in denen die Speicherressourcen (z. B. das Speichermedium 143) der ausgefallenen Speichervorrichtung ausgefallen sind (z. B. nicht mehr funktionieren), können die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen, wie unten unter Bezugnahme auf 5-6 beschrieben. Wie bereits erwähnt, steht dies im Gegensatz zu herkömmlichen Systemen, bei denen die ausgefallene Speichervorrichtung nicht mehr verwendet wird, nachdem ein Ausfall detektiert wird.
-
2 stellt ein Blockdiagramm einer beispielhaften Systemsteuerung 120 für das in 1 gezeigte P2P-Speichersystem 110 gemäß einer Ausführungsform dar. Die Systemsteuerung 120 kann verwendet werden, um den Betrieb der Speichervorrichtungen 140a, 140b und 140c zu verwalten und eine externe Schnittstelle zu diesen (z. B. zur Kommunikation mit dem Host 101) bereitzustellen. Wie bereits erwähnt, kann die Systemsteuerung 120 in einigen Ausführungsformen ihre Aktionen mit den Aktionen der anderen Komponenten in dem Computersystem 100, wie dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c, beim Durchführen der verschiedenen speicherzentrischen Aufgaben, wie unten beschrieben, unter Verwendung zum Beispiel des verteilten globalen FTL-Datenverwaltungsschemas, wie unten unter Bezugnahme auf 7 beschrieben, koordinieren.
-
Wie in 2 gezeigt, kann die Systemsteuerung 120 neben anderen Komponenten eine oder mehrere Schnittstelle(n) 205, einen Prozessor 210, einen Speicher 220 mit Software, Firmware und/oder Daten, einschließlich, ohne darauf beschränkt zu sein, einer Speicherverwaltungs-Engine 222, aufweisen. Ein Bus 250 kann verwendet werden, um die verschiedenen Komponenten der Systemsteuerung 120 kommunikativ zu koppeln. Es versteht sich, dass die Systemsteuerung 120 je nach der Konfiguration, wie Konfigurationen, die Elemente kombinieren, die Elemente in Hardware im Gegensatz zu Software implementieren usw., alternative, zusätzliche und/oder weniger Komponenten einschließen kann.
-
Die eine oder die mehreren Schnittstelle(n) 205 können die Systemsteuerung 120 mit dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c kommunikativ koppeln. Die eine oder die mehreren Schnittstelle(n) 205 können, ohne darauf beschränkt zu sein, eine Eingabe/Ausgabe-Schnittstellenschaltung (E/A-Schnittstellenschaltung) einschließen, die (ein) geeignete(s) Kommunikationsprotokoll(e) zum Kommunizieren mit dem Host 101 und/oder den Speichervorrichtungen 140a, 140b und 140c verwendet.
-
Der Prozessor 210, der eine oder mehrere Verarbeitungseinheiten einschließen kann, kann verwendet werden, um die Anweisungen verschiedener Softwareprogramme auszuführen, die in dem Speicher 220 enthalten sind. Der Prozessor 210 kann eine oder mehrere Verarbeitungseinheiten und/oder Kerne, programmierbare integrierte Schaltungen, wie anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs) oder feldprogrammierbare Gatteranordnungen (Field-Programmable Gate Arrays, FPGAs), oder eine Kombination davon einschließen. Der Prozessor 210 kann auf verschiedenen Rechenarchitekturen basieren, einschließlich einer Architektur für Computer mit komplexem Anweisungssatz (Complex Instruction Set Computer, CISC), einer Architektur für Computer mit reduziertem Anweisungssatz (Reduced Instruction Set Computer, RISC) oder einer Architektur, die eine Kombination von Anweisungssätzen implementiert. Es versteht sich, dass andere Konfigurationen des Prozessors 210 möglich sind.
-
Der Speicher 220, der eine oder mehrere nicht-transitorische Speichervorrichtungen einschließen kann, kann Softwareprogramme, Firmware und/oder Daten speichern, die durch den Prozessor 210 ausgeführt oder auf sonstige Weise verarbeitet werden. Der Speicher 220 kann zum Beispiel flüchtigen Speicher, wie (eine) Vorrichtung(en) mit dynamischem Speicher mit wahlfreiem Zugriff (Dynamic Random-Access Memory, DRAM), (eine) Vorrichtung(en) mit statischem Speicher mit wahlfreiem Zugriff (Static Random-Access Memory, SRAM), nicht-flüchtigen Speicher, wie Vorrichtungen mit elektrisch löschbarem programmierbarem Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM) oder Flash-Speicher, eine Kombination des Vorgenannten und/oder einen anderen geeigneten Typ von Datenspeichermedium aufweisen.
-
Die in dem Speicher 220 enthaltene Speicherverwaltungs-Engine 222 kann Routinen und/oder Anweisungen einschließen, die bei Ausführung durch den Prozessor 210 eine oder mehrere der verschiedenen Speicherverwaltungsvorgänge für die Speichervorrichtungen 140a, 140b und 140c, einschließlich Vorgängen in Bezug auf Adressübersetzung, Datenwiederherstellung und -rekonstruktion, automatische Speicherbereinigung und/oder Lastausgleich, durchführen können.
-
In einigen Ausführungsformen kann die Speicherverwaltungs-Engine 222 eine Adresskarte 225 und ein Lastausgleichsmodul 226 einschließen. Die Adresskarte 225 kann Adressinformationen enthalten, die durch die Speicherverwaltungs-Engine 222 verwendet werden, um logische Adressen oder Namensräume, die in Verbindung mit Lese- oder Schreibanforderungen empfangen werden, die von dem Host 101 empfangen werden, in physische Adressen zum Zugreifen auf Speichervorrichtungen in dem P2P-Speichersystem 110 zu übersetzen.
-
Das Lastausgleichsmodul 226 kann eine Lastausgleichsrichtlinie für das P2P-Speichersystem 110 implementieren. In einigen Ausführungsformen kann das Lastausgleichsmodul 226 Funktionen durchführen, einschließlich eines Überwachens der Last der Speichervorrichtungen in dem P2P-Speichersystem und eines Zuweisens und Verwaltens von Aufgaben, die von dem Host 101 empfangen werden und durch eine oder mehrere der Speichervorrichtungen in dem P2P-Speichersystem 110 durchgeführt werden sollen, basierend auf den gemessenen Lasten. Diese Lastausgleichsfunktionen werden unten unter Bezugnahme auf 5-6 ausführlicher beschrieben.
-
In einigen Ausführungsformen können ein oder mehrere Hardwarelogikmodul(e) 230, wie ASICs, FPGAs usw., anstelle oder ergänzend zu der Software und/oder Firmware in dem Speicher 220 eingesetzt werden, um eine oder mehrere der zuvor erwähnten Funktionen durchzuführen, die durch die Speicherverwaltungs-Engine 222 bereitgestellt werden.
-
3 stellt ein Blockdiagramm einer beispielhaften Vorrichtungssteuerung 142 für das in 1 gezeigte P2P-Speichersystem 110 gemäß einer Ausführungsform dar. Wie bereits erwähnt, kann die Vorrichtungssteuerung 142 verwendet werden, um den Betrieb der jeweiligen Speichervorrichtung 140 zu verwalten und eine externe Schnittstelle zu dieser bereitzustellen.
-
Wie in 3 gezeigt, kann die Vorrichtungssteuerung 142 neben anderen Komponenten eine oder mehrere Schnittstelle(n) 305, einen Prozessor 310, einen Steuerungsspeicherpuffer (Controller Memory Buffer, CMB) 315, einen Speicher 320 mit Software, Firmware und/oder Daten, einschließlich einer Medienverwaltungs-Engine 322, und eine P2P-Datenübertragungs-Engine 324 aufweisen. Ein Bus 350 kann verwendet werden, um die verschiedenen Komponenten der Vorrichtungssteuerung 142 kommunikativ zu koppeln. Es versteht sich, dass die Vorrichtungssteuerung 142 je nach der Konfiguration, wie Konfigurationen, die Elemente kombinieren, die Elemente in Hardware im Gegensatz zu Software implementieren usw., alternative, zusätzliche und/oder weniger Komponenten einschließen kann.
-
Die eine oder die mehreren Schnittstelle(n) 305 können die Vorrichtungssteuerung 142 mit der Systemsteuerung 120 und/oder den Speichervorrichtungen in dem P2P-Speichersystem 110 kommunikativ koppeln. Die eine oder die mehreren Schnittstelle(n) 305 können, ohne darauf beschränkt zu sein, eine E/A-Schnittstellenschaltung einschließen, die (ein) geeignete(s) Kommunikationsprotokoll(e) (z. B. Ethernet, InfiniBand, PCle usw.) zum Kommunizieren mit der Systemsteuerung 120 und/oder den anderen Speichervorrichtungen verwendet.
-
Der Prozessor 310, der eine oder mehrere Verarbeitungseinheiten einschließen kann, kann verwendet werden, um die Anweisungen verschiedener Softwareprogramme auszuführen, die in dem Speicher 320 enthalten sind. Der Prozessor 310 kann eine oder mehrere Verarbeitungseinheiten und/oder Kerne, programmierbare integrierte Schaltungen, wie anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs) oder feldprogrammierbare Gatteranordnungen (Field-Programmable Gate Arrays, FPGAs), oder eine Kombination davon einschließen. Der Prozessor 310 kann auf verschiedenen Rechenarchitekturen basieren, einschließlich einer Architektur für Computer mit komplexem Anweisungssatz (Complex Instruction Set Computer, CISC), einer Architektur für Computer mit reduziertem Anweisungssatz (Reduced Instruction Set Computer, RISC) oder einer Architektur, die eine Kombination von Anweisungssätzen implementiert. Es versteht sich, dass andere Konfigurationen des Prozessors 310 möglich sind.
-
Der CMB 315 kann einen oder mehrere Speicherpuffer einschließen, die verwendet werden, um Quell- oder Zieldaten, die an P2P-Lese- oder -Schreibdatenübertragungen beteiligt sind, temporär zu speichern. In einigen Ausführungsformen kann der CMB 315 direkt von außerhalb der Speichervorrichtung zugänglich sein, um Vorgänge eines direkten Speicherzugriffs (Direct Memory Access, DMA) mit einer anderen Speichervorrichtung in dem P2P-Speichersystem 110 durchzuführen.
-
Der Speicher 320, der eine oder mehrere nicht-transitorische Speichervorrichtungen einschließen kann, kann Softwareprogramme, Firmware und/oder Daten speichern, die durch den Prozessor 310 ausgeführt oder auf sonstige Weise verarbeitet werden. Der Speicher 320 kann zum Beispiel flüchtigen Speicher, wie (eine) Vorrichtung(en) mit dynamischem Speicher mit wahlfreiem Zugriff (Dynamic Random-Access Memory, DRAM), (eine) Vorrichtung(en) mit statischem Speicher mit wahlfreiem Zugriff (Static Random-Access Memory, SRAM), nicht-flüchtigen Speicher, wie Vorrichtungen mit elektrisch löschbarem programmierbarem Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM) oder Flash-Speicher, eine Kombination des Vorgenannten und/oder einen anderen geeigneten Typ von Datenspeichermedium aufweisen.
-
Die in dem Speicher 320 enthaltene Medienverwaltungs-Engine 322 kann Routinen und/oder Anweisungen einschließen, die bei Ausführung durch den Prozessor 310 eine oder mehrere der verschiedenen Speicherverwaltungsvorgänge für das Speichermedium 143, einschließlich Vorgängen in Bezug auf Datenwiederherstellung und -rekonstruktion und automatische Speicherbereinigung auf Vorrichtungsebene, durchführen können.
-
Die in dem Speicher 320 enthaltene P2P-Datenübertragungs-Engine 324 kann Routinen und/oder Anweisungen einschließen, die bei Ausführung durch den Prozessor 310 eine oder mehrere Aktionen zum Durchführen von P2P-Kommunikationen (z. B. P2P-Datenübertragungen) mit anderen Speichervorrichtungen in dem P2P-Speichersystem 110 durchführen, wie ein Übersetzen von logischen Adressen, die P2P-Befehlen zugeordnet sind, ein Ausgeben und Ausführen von P2P-Befehlen und Datenübertragungen, wie unten unter Bezugnahme auf 4 beschrieben. Die P2P-Datenübertragungs-Engine 324 kann die P2P-Datenübertragungen in verschiedenen Weisen durchführen. Zum Beispiel kann die P2P-Datenübertragungs-Engine 324 in einigen Ausführungsformen im Vollinitiatormodus arbeiten, was es einer Speichervorrichtung ermöglicht, eine Verbindung herzustellen, Befehle zu erzeugen und die Befehle an andere Speichervorrichtungen zu senden. In einigen anderen Ausführungsformen kann der Host 101 gemeinsame Speicherbereiche in jeder Speichervorrichtung 140 einrichten, einen oder mehrere Befehle an eine Quellspeichervorrichtung senden, um Daten in der Quellspeichervorrichtung in einen gemeinsamen Speicherbereich zu lesen, und dann das Senden von Daten von dem gemeinsamen Speicherbereich an eine Zielspeichervorrichtung unter Verwendung von DMA initiieren.
-
In einigen Ausführungsformen können ein oder mehrere Hardwarelogikmodul(e) 330, wie ASICs, FPGAs usw., anstelle oder ergänzend zu der Software und/oder Firmware in dem Speicher 320 eingesetzt werden, um eine oder mehrere der zuvor erwähnten Funktionen durchzuführen, die durch die Medienverwaltungs-Engine 322 und/oder P2P-Datenübertragungs-Engine 324 bereitgestellt werden.
-
4 veranschaulicht verschiedene Host- und P2P-Datenübertragungen, die in Verbindung mit dem Verfahren zum Verwenden der ausgefallenen Speichervorrichtung 140' (z. B. die Speichervorrichtung 140b) in dem in 1 gezeigten P2P-Speichersystem 110, um eine speicherzentrische Aufgabe (wie unten unter Bezugnahme auf 5-6 beschrieben) durchzuführen, gemäß einer Ausführungsform erfolgen können. Wie bereits erwähnt, entspricht in dem in 1 und 4 gezeigten P2P-Speichersystem 110 die Speichervorrichtung 140b der ausgefallenen Speichervorrichtung 140' und entsprechen eine oder mehrere der Speichervorrichtungen 140a und 140c der funktionierenden Speichervorrichtung 140". Es sei jedoch angemerkt, dass in anderen Ausführungsformen des P2P-Speichersystems andere Speichervorrichtungen der ausgefallenen Speichervorrichtung und der/den funktionierenden Speichervorrichtung(en) entsprechen können.
-
Wie in 4 gezeigt, schließen in einigen Ausführungsformen die Typen von Datenübertragungen, die zwischen dem Host 101 und den Speichervorrichtungen 140a, 140b und 140c in dem P2P-Speichersystem 110 (beschrieben aus der Perspektive des Hosts 101) erfolgen können, ein: (1) eine Lesedatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „R“) und (2) eine Schreibdatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „W“). In einigen Ausführungsformen können diese Datenübertragungen, wie geeignet, durch die Ausgabe von einem oder mehreren NVMe-Lesebefehlen oder -Schreibbefehlen durch die Systemsteuerung 120 initiiert werden. In einigen Ausführungsformen können diese Datenübertragungen durch den Host 101 in Koordination mit der Speicherverwaltungs-Engine 222 in der Systemsteuerung 120 durchgeführt werden.
-
Wie in 4 gezeigt, schließen in einigen Ausführungsformen die Typen von P2P-Datenübertragungen, die zwischen Speichervorrichtungen in dem P2P-Speichersystem 110 (beschrieben aus der Perspektive der ausgefallenen Speichervorrichtung 140') erfolgen können, ein: (1) eine Lesedatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „R“), (2) eine Schreibdatenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „W“) und (3) eine Lese/Schreib-Datenübertragung (angegeben durch den gestrichelten Pfeil mit der Bezeichnung „R/W“). In dem veranschaulichten Beispiel sind die P2P-Datenübertragungen so gezeigt, dass sie zwischen Speichervorrichtungen 140a und 140b erfolgen, aber allgemeiner können die P2P-Datenübertragungen zwischen beliebigen zwei Speichervorrichtungen in dem P2P-Speichersystem 110 erfolgen. In einigen Ausführungsformen können diese P2P-Datenübertragungen, wie geeignet, durch die Ausgabe von einem oder mehreren P2P-Lesebefehlen oder -Schreibbefehlen durch die Initiatorvorrichtung an die Zielvorrichtung initiiert werden. In einigen Ausführungsformen können diese P2P-Datenübertragungen durch die P2P-Datenübertragungs-Engine 324 in Koordination mit dem CMB 315 der Vorrichtungssteuerung 142 der entsprechenden Speichervorrichtungen in dem P2P-Speichersystem 110 durchgeführt werden.
-
Für die in dem Beispiel von 4 gezeigten P2P-Datenübertragungen entspricht die ausgefallene Speichervorrichtung 140' der Initiatorvorrichtung und entspricht die funktionierende Speichervorrichtung 140" der Zielvorrichtung. Jedoch können die Initiatorvorrichtung und die Zielvorrichtung in anderen Fällen in Abhängigkeit von der jeweiligen Transaktion, die durchgeführt wird, verschieden sein.
-
5A und 5B stellen ein Flussdiagramm eines beispielhaften Verfahrens 500 zum Verwenden der ausgefallenen Speichervorrichtung 140' in dem in 1 und 4 gezeigten P2P-Speichersystem 110, um eine speicherzentrische Aufgabe durchzuführen, gemäß einer Ausführungsform dar. In einigen Ausführungsformen können einer oder mehrere der Blöcke in dem Verfahren 500 gemäß dem verteilten globalen FTL-Datenverwaltungsschema durchgeführt werden, wie unten unter Bezugnahme auf 7 beschrieben.
-
Wie bereits erwähnt, kann in der vorliegenden Offenbarung eine „speicherzentrische Aufgabe“ auf jede Sequenz von Vorgängen (z. B. einen „Job“, einen „Prozess“ usw.), die die Übertragung und/oder Verarbeitung von in Speichervorrichtungen oder -systemen (z. B. dem P2P-Speichersystem 110) gespeicherten Daten beinhalten, Bezug nehmen. Die speicherzentrische Aufgabe kann von dem Host 101 (in Verbindung mit der Ausführung einer Anwendung durch den Host) stammen oder in einigen Fällen von einer funktionierenden Speichervorrichtung 140" in dem P2P-Speichersystem 110 übertragen werden. Beispiele von speicherzentrischen Aufgaben schließen Musterabgleich, Abbildung/Reduzierung, Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Wiederherstellung einer ausgefallenen Speichervorrichtung usw. ein. In einigen Ausführungsformen kann die speicherzentrische Aufgabe eine „neue“ Aufgabe sein, die vor dem Ausfall der ausgefallenen Speichervorrichtung nicht bereits durch die ausgefallene Speichervorrichtung 140' durchgeführt wurde. In einigen Ausführungsformen kann die speicherzentrische Aufgabe durch eine Reihe von computerausführbaren Anweisungen und Adressen von Eingabedaten und/oder Ausgabedaten definiert werden. In einigen Ausführungsformen können die computerausführbaren Anweisungen Programmcode aufweisen, der durch die funktionierende Rechenressource (z. B. die Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' ausführbar ist.
-
In Block 510 kann sich das P2P-Speichersystem 110 in einem normalen Betriebszustand befinden, in dem die Speichervorrichtungen in dem P2P-Speichersystem 110 ordnungsgemäß funktionieren und Aufgaben gemäß einer Lastausgleichsrichtlinie einer oder mehreren der Speichervorrichtungen zugewiesen und von diesen durchgeführt werden können. Die durch das P2P-Speichersystem 110 verwendete Lastausgleichsrichtlinie kann statisch oder dynamisch sein und kann auf einem oder mehreren Lastausgleichsschemata, wie Rundlauf-Verfahren, „ausgeglichene Last“ usw., basieren. In einigen Ausführungsformen kann die Richtlinie der „ausgeglichenen Last“ einfach versuchen, die Verarbeitung und/oder E/A-Last zwischen den Speichervorrichtungen in dem P2P-Speichersystem 110 basierend auf Faktoren, wie der Anzahl durchgeführter Aufgaben, der Latenz und/oder dem Durchsatz jeder Speichervorrichtung, auszugleichen. Abhängig von der Ausführungsform kann die Lastausgleichsrichtlinie, die während des normalen Betriebszustands des P2P-Speichersystems 110 in Block 510 verwendet wird, identisch mit oder verschieden von der Lastausgleichsrichtlinie sein, die verwendet wird, um die speicherzentrische Aufgabe auszuwählen und zuzuweisen, wie unten in Block 531 erörtert.
-
In Block 520 detektiert die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110. In einigen Ausführungsformen kann die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' in Koordination mit der ausgefallenen Speichervorrichtung durch die Verwendung von einem oder mehreren NVMe-Befehlen detektieren. Wie zuvor beschrieben, kann die ausgefallene Speichervorrichtung 140' auf jede Speichervorrichtung in dem P2P-Speichersystem Bezug nehmen, die in irgendeiner Hinsicht nicht richtig funktioniert, einschließlich einer Speichervorrichtung, die weiterhin betriebsfähig ist, aber basierend auf einem Frühwarnhinweis als „ausgefallen“ betrachtet werden kann. In einigen Ausführungsformen kann die ausgefallene Speichervorrichtung 140' eine oder mehrere Rechenressourcen (z. B. die Vorrichtungssteuerung 142) und/oder Speicherressourcen (z. B. das Speichermedium 143), die mindestens teilweise weiterhin funktionieren, z. B. in der Lage sind, mindestens einige ihrer vorgesehenen Funktion(en) durchzuführen, einschließen.
-
In Block 530 weist die Systemsteuerung 120 der ausgefallenen Speichervorrichtung 140' eine speicherzentrische Aufgabe zu. In einigen Ausführungsformen kann der Block 530 durch das Lastausgleichsmodul 226 in der Systemsteuerung 120 durchgeführt werden. Block 530 schließt Blöcke 531-532 ein, die als Nächstes beschrieben werden.
-
In Block 531 wählt die Systemsteuerung 120 eine speicherzentrische Aufgabe zur Zuweisung zu der ausgefallenen Speichervorrichtung 140' basierend auf der Lastausgleichsrichtlinie für das P2P-Speichersystem 110 aus. Abhängig von der Ausführungsform kann die Lastausgleichsrichtlinie, die zum Auswählen und Zuweisen der speicherzentrischen Aufgabe (in Block 531) verwendet wird, identisch mit oder verschieden von der Lastausgleichsrichtlinie sein, die während des normalen Betriebszustands des P2P-Speichersystems 110 (in Block 510) verwendet wird. In einigen Ausführungsformen kann die Detektion der ausgefallenen Speichervorrichtung eine Änderung (z. B. eine Erhöhung) einer Gewichtung oder eines Trends der Lastausgleichsrichtlinie zum Zuweisen einer speicherzentrischen Aufgabe zu der ausgefallenen Speichervorrichtung 140' im Vergleich zu dem normalen Betriebszustand des P2P-Speichersystems 110 bewirken. Wie bereits erwähnt, kann dieses Merkmal zu einer verbesserten Systemleistung und/oder Systemressourcennutzung durch die fortgesetzte Verwendung der ausgefallenen Speichervorrichtung 140' nach dem Ausfall der Vorrichtung führen, indem die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen.
-
In Block 532 sendet die Systemsteuerung 120 Informationen (z. B. eine oder mehrere Anweisungen und Eingabe- und/oder Ausgabedatenadressen), die der speicherzentrischen Aufgabe zugeordnet sind, zu der ausgefallenen Speichervorrichtung 140'. In einigen Ausführungsformen kann die Speicherverwaltungs-Engine 222 in der Systemsteuerung 120 die Informationen, die der speicherzentrischen Aufgabe zugeordnet sind, durch Ausgeben einer Reihe von NVMe-Schreibbefehlen (wie oben unter Bezugnahme auf 4 beschrieben), die die Informationen enthalten, die der speicherzentrischen Aufgabe zugeordnet sind, an die ausgefallene Speichervorrichtung 140' senden. Auf diese Weise werden der ausgefallenen Speichervorrichtung 140' die Informationen bereitgestellt, die erforderlich sind, um die speicherzentrische Aufgabe in Block 540 durchzuführen.
-
In Block 540, nach dem Bestimmen, dass die speicherzentrische Aufgabe der ausgefallenen Speichervorrichtung 140' zugewiesen wurde, führt die ausgefallene Speichervorrichtung die speicherzentrische Aufgabe als Reaktion auf P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140" durch. In einigen Ausführungsformen kann die speicherzentrische Aufgabe durch eine funktionierende Rechenressource (z. B. die Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' durchgeführt werden. Block 540 schließt Blöcke 541-545 ein, die als Nächstes beschrieben werden.
-
In der Ausführungsform von 5A und 5B befinden sich die Eingabedaten und Ausgabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, beide auf der funktionierenden Speichervorrichtung 140". Jedoch können sich die Eingabedaten und Ausgabedaten in anderen Ausführungsformen auf verschiedenen funktionierenden Speichervorrichtungen in dem P2P-Speichersystem 110, wie den Speichervorrichtungen 140a bzw. 140c, befinden. In den P2P-Kommunikationen, die für die veranschaulichte Ausführungsform beschrieben sind, entspricht die ausgefallene Speichervorrichtung 140' der Initiatorvorrichtung und entspricht die funktionierende Speichervorrichtung 140" der Zielvorrichtung.
-
In Block 541 bestimmt die ausgefallene Speichervorrichtung 140' einen Ort (z. B. in der funktionierende Speichervorrichtung 140") in dem P2P-Speichersystem 110 der Eingabedaten mit der speicherzentrischen Aufgabe. In einigen Ausführungsformen kann der Ort der Eingabedaten aus der/den Eingabedatenadresse(n) bestimmt werden, die der speicherzentrischen Aufgabe zugeordnet ist/sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 532). In einigen Ausführungsformen kann der Ort der Eingabedaten durch Durchführen eines Adressübersetzungsvorgangs unter Verwendung der P2P-Datenübertragungs-Engine 324 in der ausgefallenen Speichervorrichtung 140' bestimmt werden.
-
In Block 542 empfängt die ausgefallene Speichervorrichtung 140' die Eingabedaten, die der speicherzentrischen Aufgabe zugeordnet sind, über P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140". In einigen Ausführungsformen können die P2P-Kommunikationen eine Reihe von einem oder mehreren P2P-Lesebefehlen (wie oben unter Bezugnahme auf 4 beschrieben) aufweisen, die durch die ausgefallene Speichervorrichtung 140' an die funktionierende Speichervorrichtung 140" ausgegeben werden. In einigen Ausführungsformen können die P2P-Lesebefehle durch die P2P-Datenübertragungs-Engine 324 in Koordination mit dem CMB 315 der Vorrichtungssteuerung 142 der entsprechenden Speichervorrichtungen durchgeführt werden.
-
In Block 543 führt die ausgefallene Speichervorrichtung 140' die speicherzentrische Aufgabe unter Verwendung der Eingabedaten durch, die von der funktionierenden Speichervorrichtung 140" empfangen werden, wodurch Ausgabedaten basierend auf dem Durchführen der speicherzentrischen Aufgabe erzeugt werden. In einigen Ausführungsformen kann die speicherzentrische Aufgabe unter Verwendung der funktionierenden Rechenressource (z. B. der Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' basierend auf der einen oder den mehreren Anweisungen durchgeführt werden, die der speicherzentrischen Aufgabe zugeordnet sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 532). Die ausgefallene Speichervorrichtung 140' kann die speicherzentrische Aufgabe bei den Blöcken 144 der Eingabedaten einzeln, wenn sie empfangen werden, oder bei dem gesamten Satz der Eingabedaten auf einmal (z. B. unter Verwendung von DMA) durchführen. In einigen Ausführungsformen können die Ausgabedaten temporär in einem Puffer (z. B. CMB 315) in der ausgefallenen Speichervorrichtung 140' gespeichert werden.
-
Wenngleich Blöcke 542 und 543 in der Figur separat gezeigt sind, sei angemerkt, dass in einigen Ausführungsformen mindestens einige der Vorgänge in diesen Blöcken gleichzeitig durch die ausgefallene Speichervorrichtung 140' beim Durchführen der speicherzentrischen Aufgabe durchgeführt werden können.
-
In Block 544 sendet die ausgefallene Speichervorrichtung 140' die Ausgabedaten, die durch die speicherzentrische Aufgabe erzeugt werden, über P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140". In einigen Ausführungsformen können die P2P-Kommunikationen eine Reihe von einem oder mehreren P2P-Schreibbefehlen (wie oben unter Bezugnahme auf 4 beschrieben) aufweisen, die durch die ausgefallene Speichervorrichtung 140' an die funktionierende Speichervorrichtung 140" ausgegeben werden. In einigen Ausführungsformen können die P2P-Schreibbefehle durch die P2P-Datenübertragungs-Engine 324 in Koordination mit dem CMB 315 der Vorrichtungssteuerung 142 der entsprechenden Speichervorrichtungen durchgeführt werden. In einigen Ausführungsformen kann ein Ort der Ausgabedaten in der funktionierenden Speichervorrichtung 140" aus der/den Ausgabedatenadresse(n) bestimmt werden, die der speicherzentrischen Aufgabe zugeordnet ist/sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 532). In einigen Ausführungsformen kann der Ort der Ausgabedaten durch Durchführen eines Adressübersetzungsvorgangs unter Verwendung der P2P-Datenübertragungs-Engine 324 in der ausgefallenen Speichervorrichtung 140' bestimmt werden (wie oben in Block 541 beschrieben).
-
In Block 545 sendet die funktionierende Speichervorrichtung 140" die Ausgabedaten, die durch die speicherzentrische Aufgabe erzeugt werden, an den Host 101, von dem die Aufgabe stammt. In einigen Ausführungsformen kann Block 545 durch die funktionierende Speichervorrichtung 140" in Koordination mit der Systemsteuerung 120 durch die Verwendung von einem oder mehreren NVMe-Befehlen durchgeführt werden.
-
In Block 550 detektiert die Systemsteuerung 120 eine Beendigung der speicherzentrischen Aufgabe durch die ausgefallene Speichervorrichtung 140'. In einigen Ausführungsformen kann die Systemsteuerung 120 die Beendigung der speicherzentrischen Aufgabe durch Ausgeben von einem oder mehreren NVMe-Befehlen an die ausgefallene Speichervorrichtung 140' detektieren.
-
In Block 560 bestimmt die Systemsteuerung 120, ob die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110 repariert oder ersetzt wurde. Wenn dies der Fall ist, gibt die Systemsteuerung 120 die Steuerung an Block 510 zurück (z. B. normaler Betrieb des P2P-Speichersystems 110). Wenn dies jedoch nicht der Fall ist, gibt die Systemsteuerung die Steuerung an Block 530 zurück, in dem die Systemsteuerung der ausgefallenen Speichervorrichtung 140' eine andere speicherzentrische Aufgabe zuweist.
-
6A und 6B stellen ein Flussdiagramm eines beispielhaften Verfahrens 600 zum Verwenden der ausgefallenen Speichervorrichtung 140' in dem in 1 und 4 gezeigten P2P-Speichersystem 110, um eine beispielhafte speicherzentrische Aufgabe (insbesondere eine Musterabgleichsaufgabe) durchzuführen, gemäß einer Ausführungsform dar. Die Musterabgleichsaufgabe kann eine Sequenz von Vorgängen aufweisen, die von dem Host 101 stammen, die alle Vorkommnisse des Worts „Katze“ in einem verschlüsselten komprimierten Datensatz zählt, der auf der funktionierenden Speichervorrichtung 140" gespeichert ist. In einigen Ausführungsformen können einer oder mehrere der Blöcke in dem Verfahren 600 gemäß dem verteilten globalen FTL-Datenverwaltungsschema durchgeführt werden, wie unten unter Bezugnahme auf 7 beschrieben. Es sei angemerkt, dass das Verfahren 600 eine Ausführungsform des Verfahrens 500 ist, das oben unter Bezugnahme auf 5A und 5B beschrieben ist, wie es insbesondere auf die Musterabgleichsaufgabe angewendet wird.
-
In Block 610 kann sich das P2P-Speichersystem 110 in einem normalen Betriebszustand befinden, in dem die Speichervorrichtungen in dem P2P-Speichersystem 110 ordnungsgemäß funktionieren und Aufgaben gemäß einer Lastausgleichsrichtlinie einer oder mehreren der Speichervorrichtungen zugewiesen und von diesen durchgeführt werden können. In einigen Ausführungsformen kann die Lastausgleichsrichtlinie wie oben unter Bezugnahme auf Blöcke 510 und 531 in 5A und 5B beschrieben sein.
-
In Block 620 detektiert die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110. In einigen Ausführungsformen kann die Systemsteuerung 120 die ausgefallene Speichervorrichtung 140' detektieren, wie oben unter Bezugnahme auf Block 520 in 5A und 5B beschrieben.
-
In Block 630 weist die Systemsteuerung 120 der ausgefallenen Speichervorrichtung 140' die Musterabgleichsaufgabe zu. Block 630 schließt Blöcke 631-632 ein, die als Nächstes beschrieben werden.
-
In Block 631 wählt die Systemsteuerung 120 die Musterabgleichsaufgabe zur Zuweisung zu der ausgefallenen Speichervorrichtung 140' basierend auf der in Block 610 beschriebenen Lastausgleichsrichtlinie für das P2P-Speichersystem 110 aus. Normalerweise würde die Systemsteuerung 120 die Musterabgleichsaufgabe der funktionierenden Speichervorrichtung 140" zuweisen, weil dort der Datensatz gespeichert ist, der der Musterabgleichsaufgabe zugeordnet ist. Stattdessen weist jedoch die Systemsteuerung 120 die Musterabgleichsaufgabe der ausgefallenen Speichervorrichtung 140' zu, weil sie bestimmt, dass die funktionierende Speichervorrichtung 140" ausreichend damit beschäftigt ist, andere Aufgaben durchzuführen, und die funktionierende Rechenressource in der ausgefallenen Speichervorrichtung 140' ungenutzt ist, und somit würde die Datenentschlüsselung/-dekomprimierung, die der Musterabgleichsaufgabe zugeordnet ist, schneller durch die ausgefallene Speichervorrichtung 140' durchgeführt werden.
-
In Block 632 gibt die Systemsteuerung 120 eine Reihe von NVMe-Schreibbefehlen (wie oben unter Bezugnahme auf 4 beschrieben), die Informationen (z. B. eine oder mehrere Anweisungen und Eingabe- und/oder Ausgabedatenadressen) enthalten, die der Musterabgleichsaufgabe zugeordnet sind, an die ausgefallene Speichervorrichtung 140' aus. Auf diese Weise werden der ausgefallenen Speichervorrichtung 140' die Informationen bereitgestellt, die erforderlich sind, um die speicherzentrische Aufgabe in Block 640 durchzuführen.
-
In Block 640 führt die ausgefallene Speichervorrichtung 140' die Musterabgleichsaufgabe als Reaktion auf P2P-Kommunikationen mit der funktionierenden Speichervorrichtung 140" durch, in der der Datensatz, der der Musterabgleichsaufgabe zugeordnet ist, gespeichert ist. Block 640 schließt Blöcke 641-645 ein, die als Nächstes beschrieben werden.
-
In Block 641 bestimmt die ausgefallenen Speichervorrichtung 140' einen Ort in der funktionierenden Speichervorrichtung 140" des Datensatzes, der der Musterabgleichsaufgabe zugeordnet ist.
-
In Block 642 gibt die ausgefallene Speichervorrichtung 140' eine Reihe von einem oder mehreren P2P-Lesebefehlen (wie oben unter Bezugnahme auf 4 beschrieben) an die funktionierende Speichervorrichtung 140" aus, um einen oder mehrere Blöcke 144 in dem Datensatz von der funktionierenden Speichervorrichtung zu empfangen.
-
In Block 643(1) beginnt die ausgefallene Speichervorrichtung 140' damit, die Musterabgleichsaufgabe durchzuführen, indem sie eine Suche nach dem Wort „Katze“ auf dem einen oder den mehreren Blöcken 144 in dem Datensatz durchführt, der von der funktionierenden Speichervorrichtung 140" empfangen wird. In einigen Ausführungsformen kann Block 643(1) zunächst ein Entschlüsseln und/oder Dekomprimieren der Blöcke in dem Datensatz beinhalten. In einigen Ausführungsformen kann die Musterabgleichsaufgabe unter Verwendung der funktionierenden Rechenressource (z. B. der Vorrichtungssteuerung 142) in der ausgefallenen Speichervorrichtung 140' basierend auf der einen oder den mehreren Anweisungen durchgeführt werden, die der Musterabgleichsaufgabe zugeordnet sind, die von der Systemsteuerung 120 empfangen wird (z. B. in Block 632). Die ausgefallene Speichervorrichtung 140' kann die Musterabgleichsaufgabe bei den Blöcken des Datensatzes einzeln, wenn sie empfangen werden, oder bei dem gesamten Satz von Blöcken auf einmal (z. B. unter Verwendung von DMA) durchführen. In einigen Ausführungsformen können die Ausgabedaten temporär in einem Puffer (z. B. CMB 315) in der ausgefallenen Speichervorrichtung 140' gespeichert werden.
-
In Block 643(2) bereitet die ausgefallene Speichervorrichtung 140' eine Liste von Blöcken in dem Datensatz vor, von dem festgestellt wird, dass er das Wort „Katze“ enthält.
-
Wenngleich Blöcke 642, 643(1) und 643(2) in der Figur separat gezeigt sind, sei angemerkt, dass in einigen Ausführungsformen mindestens einige der Vorgänge in diesen Blöcken gleichzeitig durch die ausgefallene Speichervorrichtung 140' beim Durchführen der Musterabgleichsaufgabe durchgeführt werden können.
-
In Block 644 gibt die ausgefallene Speichervorrichtung 140' eine Reihe von einem oder mehreren P2P-Schreibbefehlen an die funktionierende Speichervorrichtung 140" aus, um die Liste von Blöcken 144 in dem Datensatz, von denen festgestellt wurde, dass sie das Wort „Katze“ enthalten, an die funktionierende Speichervorrichtung zu senden.
-
In Block 645 sendet die funktionierende Speichervorrichtung 140" die Liste von Blöcken 144 in dem Datensatz, von denen festgestellt wurde, dass sie das Wort „Katze“ enthalten, an den Host 101, von dem die Aufgabe stammt. In einigen Ausführungsformen kann Block 645 durch die funktionierende Speichervorrichtung 140" in Koordination mit der Systemsteuerung 120 unter Verwendung von einem oder mehreren NVMe-Befehlen durchgeführt werden.
-
In Block 650 detektiert die Systemsteuerung 120 eine Beendigung der Musterabgleichsaufgabe durch die ausgefallene Speichervorrichtung 140'. In einigen Ausführungsformen kann die Systemsteuerung 120 die Beendigung der speicherzentrischen Aufgabe durch Ausgeben von einem oder mehreren NVMe-Befehlen an die ausgefallene Speichervorrichtung 140' detektieren.
-
In Block 660 bestimmt die Systemsteuerung 120, ob die ausgefallene Speichervorrichtung 140' in dem P2P-Speichersystem 110 repariert oder ersetzt wurde. Wenn dies der Fall ist, gibt die Systemsteuerung 120 die Steuerung an Block 510 zurück (z. B. normaler Betrieb des P2P-Speichersystems 110). Wenn dies jedoch nicht der Fall ist, gibt die Systemsteuerung die Steuerung an Block 530 zurück, in dem die Systemsteuerung 120 der ausgefallenen Speichervorrichtung 140' eine andere speicherzentrische Aufgabe zuweist.
-
7 stellt ein Flussdiagramm eines beispielhaften Verfahrens 700 zum Durchführen einer Datenverwaltungsanforderung (z. B. einer Datenübertragungsanforderung) gemäß einem Datenverwaltungsschema einer verteilten globalen Flash-Translationsschicht (Flash Translation Layer, FTL) für das in 1 gezeigte Rechensystem 100 gemäß einer Ausführungsform dar. In dem in 7 gezeigten Beispiel werden die meisten der Blöcke in dem Verfahren 700 durch die Systemsteuerung 120 durchgeführt, wenngleich in anderen Ausführungsformen einer oder mehrere der Blöcke in dem Verfahren durch andere Vorrichtungen (z. B. den Host 101 oder die Speichervorrichtung 140) in dem Speichersystem 110 durchgeführt werden können.
-
In Block 710 kann die Systemsteuerung 120 eine Datenverwaltungsanforderung (z. B. Leseanforderung) von dem Host 101 empfangen.
-
In Block 720 kann die Systemsteuerung 120 (z. B. unter Verwendung der Speicherverwaltungs-Engine 222) basierend auf der Datenverwaltungsanforderung eine oder mehrere Speichervorrichtungen 140 in dem Speichersystem 110 und einen oder mehrere Datenverwaltungsvorgänge, die durch die eine oder die mehreren Speichervorrichtungen 140 durchgeführt werden sollen, bestimmen. In einigen Ausführungsformen, um die eine oder die mehreren Speichervorrichtungen 140 zu bestimmen, empfängt die Systemsteuerung 120 eine logische Eingabeadresse von dem Host 101 und indiziert die Adresskarte 225, die logische Adressen auf Speichervorrichtungen abbildet, unter Verwendung der logischen Eingabeadresse, um die eine oder die mehreren Speichervorrichtungen 140 zu identifizieren. In einigen solchen Ausführungsformen verwendet die Systemsteuerung 120 mindestens einen Abschnitt der logischen Eingabeadresse, um die eine oder die mehreren Speichervorrichtungen 140 zu identifizieren.
-
In Block 730 kann die Systemsteuerung 120 eine Durchführung eines Datenverwaltungsvorgangs/von Datenverwaltungsvorgängen entsprechend der Datenverwaltungsanforderung initiieren. In einigen Ausführungsformen schließt Block 730 ein Senden von einem oder mehreren Datenverwaltungsbefehlen an die eine oder die mehreren Speichervorrichtungen 140 und ein Initiieren von einer oder mehreren Datenübertragungen (entweder vor oder nach dem Senden der einen oder mehreren Datenverwaltungsbefehle) ein. Die eine oder die mehreren Datenübertragungen können einen oder mehrere Vorgänge, wie einen Vorgang eines direkten Speicherzugriffs (Direct Memory Access, DMA), um Daten zwischen einem Speicherpuffer einer jeweiligen Speichervorrichtung 140 in dem Speichersystem 110 und einem Speicherpuffer des Hosts 101 zu übertragen, und/oder eine interne Datenübertragung zwischen zwei oder mehreren der Speichervorrichtungen 140 in dem Speichersystem 110 einschließen. In einigen Ausführungsformen schließen die eine oder die mehreren Datenübertragungen einen DMA-Vorgang, um Daten zwischen einem Speicherpuffer einer jeweiligen Speichervorrichtung 140 in dem Speichersystem 110 und einem Speicherpuffer des Hosts 101 zu übertragen, und/oder eine interne Datenübertragung zwischen zwei oder mehreren der Speichervorrichtungen 140 in dem Speichersystem 110 ein.
-
In Block 740 bestimmt die Systemsteuerung 120 im Fall einer Leseanforderung basierend auf der Adresskarte 225 einen Satz von Blöcken, die sich in einer jeweiligen Speichervorrichtung 140 in dem Speichersystem 110, das die angeforderten Daten enthält, befinden. In einigen Ausführungsformen bildet die Adresskarte 225 eine oder mehrere globale logische Adressen, die durch die Leseanforderung (empfangen von dem Host 101) identifiziert werden, auf eine oder mehrere Speichervorrichtungen 140 in dem P2P-Speichersystem 110 und optional auf eine oder mehrere lokale logische Adressen in jeder solchen Speichervorrichtung ab. Die lokalen logischen Adressen werden durch die jeweilige Speichervorrichtung 140 unter Verwendung von Mechanismen für eine logisch-zu-physisch-Abbildung in der Speichervorrichtung auf physische Adressen in der Speichervorrichtung abgebildet. In einigen Ausführungsformen initiiert die Systemsteuerung 120 die Berechnung der Adresskarte 225. In einigen Ausführungsformen wird die Adresskarte durch eine oder mehrere Vorrichtungen außerhalb der Systemsteuerung 120 berechnet. In einigen Ausführungsformen wird die Adresskarte 225 in der jeweiligen Speichervorrichtung 140 gespeichert/befindet sich in dieser.
-
In Block 750 sendet die Systemsteuerung 120 einen oder mehrere Lesebefehle an die jeweilige Speichervorrichtung 140, um den Lesevorgang bei dem Satz von Blöcken durchzuführen. In einigen Ausführungsformen übersetzt die Systemsteuerung 120 die von dem Host 101 empfangene Leseanforderung unter Verwendung eines vordefinierten Befehlsübersetzungsprozesses in den einen oder die mehreren Lesebefehle.
-
In Block 760 antwortet die Vorrichtungssteuerung 142 der jeweiligen Speichervorrichtung 140 auf den einen oder die mehreren Lesebefehle, indem sie die entsprechenden Daten aus dem Satz von Blöcken in der jeweiligen Speichervorrichtung liest.
-
In Block 770 empfängt die Systemsteuerung 120 eine Fertigstellungsbenachrichtigung von der jeweiligen Speichervorrichtung 140, die angibt, dass die Ausführung des an die jeweilige Speichervorrichtung gesendeten Lesebefehls abgeschlossen ist und dass die resultierenden Lesedaten in einem Speicherpuffer der Vorrichtungssteuerung 142 der jeweiligen Speichervorrichtung gespeichert werden.
-
In Block 780 initiiert die Systemsteuerung 120 nach dem Empfangen der Fertigstellungsbenachrichtigung eine Datenübertragung unter Verwendung eines DMA-Vorgangs, um die Lesedaten an den Host 101, der die Leseanforderung gesendet hat, zu übertragen (z. B. zu senden). In einigen Ausführungsformen schließt Block 780 ein, dass die Systemsteuerung 120 einen Datenübertragungsbefehl an eine jeweilige Netzwerkschnittstellensteuerung (nicht gezeigt) in dem Speichersystem 110 sendet, um die Lesedaten aus einem Speicherpuffer der Systemsteuerung 120 an einen Speicherpuffer des Hosts 101 zu übertragen, wobei DMA oder ein entfernter direkter Speicherzugriff (Remote Direct Memory Access, RDMA) verwendet wird, um die Lesedaten zu übertragen.
-
Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, sind oben beschrieben. Technische Merkmale und Vorteile von einer oder mehreren Ausführungsformen der vorliegenden Offenbarung, wie oben beschrieben, können, ohne darauf beschränkt zu sein, eines oder mehrere von Folgendem einschließen:
- (1) Verbesserte Systemleistung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemleistung durch Zuweisen von speicherzentrischen Aufgaben zu der ausgefallenen Speichervorrichtung, anstatt von dieser weg (wie bei herkömmlichen Systemen), nachdem der Ausfall detektiert wurde. Die ausgefallene Speichervorrichtung kann Aufgaben effizienter durchführen als eine andere, noch funktionierende Speichervorrichtung in dem Speichersystem, weil die ausgefallene Speichervorrichtung aufgrund des Ausfalls ihres Speichermediums keine regelmäßige Eingabe/Ausgabe-Last (E/A-Last) (z. B. Komprimierung/Dekomprimierung oder Verschlüsselung/Entschlüsselung, die sehr rechenintensiv sind) mehr aufweist.
- (2) Verbesserte Systemressourcennutzung im Falle eines Ausfalls einer Speichervorrichtung in dem Speichersystem. Die vorliegende Offenbarung verbessert die Systemressourcennutzung durch die fortgesetzte Verwendung der ausgefallenen Speichervorrichtung nach dem Ausfall der Vorrichtung, indem die ansonsten ungenutzten Rechenressourcen der ausgefallenen Speichervorrichtung verwendet werden, um speicherzentrische Aufgaben durchzuführen. Die vorliegende Offenbarung nutzt die Tatsache, dass trotz eines Ausfalls in ihrem Speichermedium andere Rechen-, Speicher- und/oder E/A-Ressourcen der ausgefallenen Speichervorrichtung weiterhin betriebsfähig sein können.
-
Verfahren und Systeme zum Verwenden einer ausgefallenen Speichervorrichtung in einem P2P-Speichersystem, um eine speicherzentrische Aufgabe durchzuführen, sind oben beschrieben. In der obigen Beschreibung wurden zu Erläuterungszwecken zahlreiche spezifische Details dargelegt. Es ist jedoch offensichtlich, dass die offenbarten Technologien ohne irgendeine gegebene Untermenge dieser spezifischen Details praktiziert werden können. In anderen Fällen sind Strukturen und Vorrichtungen in Blockdiagrammform gezeigt. Zum Beispiel werden die offenbarten Technologien in einigen Implementierungen oben unter Bezugnahme auf Benutzerschnittstellen und bestimmte Hardware beschrieben.
-
Eine Bezugnahme in der Patentschrift auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform oder Implementierung der offenbarten Technologien eingeschlossen ist. Fälle des Auftretens des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in der Patentschrift nehmen nicht notwendigerweise alle auf dieselbe Ausführungsform oder Implementierung Bezug.
-
Einige Abschnitte der obigen ausführlichen Beschreibungen können in Form von Prozessen und symbolischen Darstellungen von Operationen mit Datenbits innerhalb eines Computerspeichers dargestellt werden. Ein Prozess kann im Allgemeinen als eine eigenständige Abfolge von Operationen, die zu einem Ergebnis führen, betrachtet werden. Die Operationen können physische Manipulationen physikalischer Größen einschließen. Diese Größen nehmen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Diese Signale können als in der Form von Bits, Werten, Elementen, Symbolen, Zeichen, Begriffen, Zahlen oder dergleichen befindlich bezeichnet werden.
-
Diese und ähnliche Ausdrücke können mit den geeigneten physikalischen Größen assoziiert werden und können als Markierungen betrachtet werden, die auf diese Größen angewendet werden. Sofern aus der vorherigen Erörterung nicht ausdrücklich etwas anderes hervorgeht, versteht es sich, dass sich in der gesamten Beschreibung Erörterungen, die Begriffe wie „Verarbeiten“ oder „Errechnen“ oder „Berechnen“ oder „Bestimmen“ oder „Anzeigen“ oder dergleichen verwenden, auf die Aktion und die Prozesse eines Computersystems oder einer ähnlichen elektronischen Datenverarbeitungsvorrichtung beziehen können, die Daten, die als physikalische (elektronische) Größen innerhalb der Register und Speicher des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die gleichermaßen als physikalische Größen innerhalb der Computersystemspeicher oder -register oder anderer derartiger Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen dargestellt werden.
-
Die offenbarten Technologien können sich auch auf eine Einrichtung zum Durchführen der Operationen hierin beziehen. Diese Einrichtung kann speziell für die erforderlichen Zwecke konstruiert sein, oder sie kann einen Universalcomputer einschließen, der selektiv durch ein Computerprogramm aktiviert oder umkonfiguriert wird, das in dem Computer gespeichert ist. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert sein, zum Beispiel, ohne darauf beschränkt zu sein, einem beliebigen Typ von Festplatte, einschließlich Disketten, optischer Platten, CD-ROMs und Magnetplatten, Festwertspeicher (Read-Only Memories, ROMs), Speicher mit wahlfreiem Zugriff (Random Access Memories, RAMs), löschbarer programmierbarer Festwertspeicher (Erasable Programmable Read-Only Memory, EPROM), elektrisch löschbarer programmierbarer Festwertspeicher (Electrically Erasable Programmable Read-Only Memories, EEPROMs), magnetischer oder optischer Karten, Flash-Speichern, einschließlich USB-Sticks mit nicht-flüchtigem Speicher, oder eines beliebigen Typs von Medien, die zum Speichern elektronischer Anweisungen geeignet sind, jeweils gekoppelt an einen Computersystembus.
-
Die offenbarten Technologien können die Form einer vollständigen Hardware-Implementierung, einer vollständigen Software-Implementierung oder einer Implementierung annehmen, die sowohl Hardware- als auch Software-Elemente enthält. In einigen Implementierungen ist die Technologie in Software implementiert, die Firmware, residente Software, Mikrocode usw. einschließt, aber nicht darauf beschränkt ist.
-
Darüber hinaus können die offenbarten Technologien in Form eines Computerprogrammprodukts vorliegen, das von einem nicht vorübergehenden computerverwendbaren oder computerlesbaren Medium aus zugänglich ist und Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen Anweisungsausführungssystem bereitstellt. Für die Zwecke dieser Beschreibung kann ein computerverwendbares oder computerlesbares Medium jede Einrichtung sein, welche das Programm zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem, der Einrichtung oder der Vorrichtung enthalten, speichern, kommunizieren, verbreiten oder transportieren kann.
-
Ein Computersystem oder Datenverarbeitungssystem, das zum Speichern und/oder Ausführen des Programmcodes geeignet ist, schließt mindestens einen Prozessor ein (z. B. einen Hardwareprozessor), der über einen Systembus direkt oder indirekt mit Speicherelementen gekoppelt ist. Die Speicherelemente können einen lokalen Speicher einschließen, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cache-Speicher, die eine vorübergehende Speicherung mindestens eines Programmcodes bereitstellen, um die Häufigkeit zu reduzieren, mit der der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
-
Ein-/Ausgabe- oder E/A-Vorrichtungen (einschließlich, aber nicht beschränkt auf Tastaturen, Anzeigen, Zeigevorrichtungen usw.) können entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten mit dem System gekoppelt werden.
-
Netzwerkadapter können auch mit dem System gekoppelt sein, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernten Druckern oder Speichervorrichtungen über dazwischen liegende private oder öffentliche Netzwerke gekoppelt wird. Modems, Kabelmodems und Ethernet-Karten sind nur einige der gegenwärtig verfügbaren Arten von Netzwerkadaptern.
-
Die Begriffe Speichermedien, Speichervorrichtung und Datenblöcke werden in der vorliegenden Offenbarung austauschbar verwendet, um auf die physischen Medien Bezug zu nehmen, auf denen die Daten gespeichert sind.
-
Schließlich brauchen die hierin dargestellten Prozesse und Anzeigen nicht von Natur aus auf einen bestimmten Computer oder eine andere Einrichtung bezogen sein. Verschiedene Universalsysteme können mit Programmen gemäß den Lehren hierin verwendet werden, oder es kann sich als zweckmäßig erweisen, Spezialeinrichtungen zu konstruieren, um die erforderlichen Verfahrensoperationen durchzuführen. Die für eine Vielzahl dieser Systeme erforderliche Struktur wird aus der obigen Beschreibung ersichtlich. Außerdem wurden die offenbarten Technologien nicht mit Bezug auf irgendeine bestimmte Programmiersprache beschrieben. Es versteht sich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der hierin beschriebenen Technologien zu implementieren.
-
Die vorstehende Beschreibung der Implementierungen der vorliegenden Techniken und Technologien wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Es ist nicht beabsichtigt, umfassend zu sein oder die vorliegenden Techniken und Technologien auf die genau offenbarte Form zu beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Es ist beabsichtigt, dass der Schutzumfang der vorliegenden Techniken und Technologien nicht durch diese ausführliche Beschreibung beschränkt wird. Die vorliegenden Techniken und Technologien können in anderen spezifischen Formen implementiert werden, ohne von ihrem Wesen oder ihren wesentlichen Eigenschaften abzuweichen. Gleichermaßen sind die spezielle Benennung und Aufteilung der Module, Routinen, Merkmale, Attribute, Methodologien und anderer Gesichtspunkte nicht zwingend oder signifikant, und die Mechanismen, die die vorliegenden Techniken und Technologien oder ihre Merkmale implementieren, können unterschiedliche Namen, Unterteilungen und/oder Formate aufweisen. Darüber hinaus können die Module, Routinen, Merkmale, Attribute, Methodologien und andere Gesichtspunkte der vorliegenden Technologie als Software, Hardware, Firmware oder irgendeine Kombination der drei implementiert werden. Ebenso kann die Komponente überall dort, wo eine Komponente, beispielsweise ein Modul, als Software implementiert ist, als eigenständiges Programm, als Teil eines größeren Programms, als eine Vielzahl separater Programme, als eine statisch oder dynamisch verknüpfte Bibliothek, als ein kernladbares Modul, als ein Vorrichtungstreiber und/oder zukünftig in der Computerprogrammierung implementiert sein. Zusätzlich sind die vorliegenden Techniken und Technologien in keiner Weise auf die Implementierung in irgendeiner spezifischen Programmiersprache oder für irgendein spezielles Betriebssystem oder eine bestimmte Umgebung beschränkt. Dementsprechend soll die Offenbarung der vorliegenden Techniken und Technologien veranschaulichend, aber nicht einschränkend sein.