-
TECHNISCHES GEBIET
-
Die offenbarten Ausführungsformen betreffen allgemein Speichersysteme und insbesondere das Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen in einer Speicherungsvorrichtung (die z. B. eine oder mehrere Flash-Speichervorrichtungen umfasst).
-
STAND DER TECHNIK
-
Halbleiter-Speichervorrichtungen, darunter Flash-Speicher, benutzen typischerweise Speicherzellen zum Speichern von Daten als einen elektrischen Wert, wie etwa eine elektrische Ladung oder Spannung. Eine Flash-Speicherzelle umfasst z. B. einen einzelnen Transistor mit einem Floating-Gate, das zum Speichern einer Ladung verwendet wird, die einen Datenwert repräsentiert. Flash-Speicher ist eine nichtflüchtige Datenspeicherungsvorrichtung, die elektrisch gelöscht und umprogrammiert werden kann. Allgemeiner behält nichtflüchtiger Speicher (z. B. Flash-Speicher sowie andere Arten von nichtflüchtigem Speicher, die unter Verwendung vielfältiger Technologien implementiert werden) gespeicherte Informationen, selbst wenn er nicht mit Strom versorgt wird, im Gegensatz zu flüchtigem Speicher, der Stromversorgung benötigt, um die gespeicherten Informationen aufrechtzuerhalten.
-
Datenhärtung, das Abspeichern von Daten und missionskritischen Metadaten, die in flüchtiger Speicherung gehalten werden, ist für eine Speicherungsvorrichtung wichtig. Wenn es zu einem Stromausfall kommt, können missionskritische Daten in flüchtigem Speicher in einer Anzahl von Subsystemkomponenten residieren. Das Koordinieren und Verwalten mehrerer Subsystemkomponenten, um sicherzustellen, dass flüchtige Daten erfolgreich abgespeichert werden, ist für den Schutz der Datenintegrität einer Speicherungsvorrichtung wichtig.
-
KURZFASSUNG
-
Verschiedene Ausführungsformen von Systemen, Verfahren und Vorrichtungen im Schutzumfang der angefügten Ansprüche weisen jeweils mehrere Aspekte auf, von denen kein einzelner alleinig für die hier beschriebenen Attribute verantwortlich ist. Ohne Beschränkung des Schutzumfangs der angefügten Ansprüche wird nach Betrachtung der vorliegenden Offenbarung und insbesondere nach Betrachtung des Abschnitts mit dem Titel ”Ausführliche Beschreibung” verständlich werden, wie Aspekte verschiedener Ausführungsformen verwendet werden, um das Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen zu ermöglichen. In einem Aspekt wird beim Herauffahren einer Speicherungsvorrichtung eine Abbildungstabelle in flüchtigem Speicher aus einem abgespeicherten Schnappschuss der Abbildungstabelle in nichtflüchtigem Speicher der Speicherungsvorrichtung und aus einem abgespeicherten Log im nichtflüchtigem Speicher der Speicherungsvorrichtung wieder aufgebaut.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Damit die vorliegende Offenbarung ausführlicher verstanden werden kann, erfolgt eine konkretere Beschreibung anhand der Merkmale verschiedener Ausführungsformen von denen einige in den angefügten Zeichnungen dargestellt sind. Die angefügten Zeichnungen stellen jedoch lediglich sachbezogene Merkmale der vorliegenden Offenbarung dar und sind deshalb nicht als einschränkend zu betrachten, da die Beschreibung andere effektive Merkmale zulassen kann.
-
1 ist eine Blockdarstellung einer Implementierung eines Datenspeicherungssystems gemäß einigen Ausführungsformen.
-
2 ist eine Blockdarstellung einer Implementierung eines Verwaltungsmoduls gemäß einigen Ausführungsformen.
-
3 ist eine Blockdarstellung eines logischen Adressenraums und insbesondere eines Logikblockadressen- bzw. LBA-Raums gemäß einigen Ausführungsformen.
-
4 ist eine Blockdarstellung einer Abbildungstabelle und eines physischen Adressenraums gemäß einigen Ausführungsformen.
-
5A–5B zeigen eine Flussdiagrammdarstellung eines Verfahrens zur Verwaltung eines Speicherungssystems gemäß einigen Ausführungsformen.
-
Gemäß der üblichen Praxis sind die verschiedenen in den Zeichnungen dargestellten Merkmale möglicherweise nicht maßstabsgetreu gezeichnet. Die Abmessungen der verschiedenen Merkmale können dementsprechend der Klarheit halber willkürlich vergrößert oder verkleinert sein. Außerdem können einige der Zeichnungen nicht alle Komponenten eines gegebenen Systems, eines gegebenen Verfahrens oder einer gegebenen Vorrichtung abbilden. Als letztes können in der Beschreibung und in den Fig.en durchweg gleiche Bezugszahlen verwendet werden, um gleiche Merkmale zu bezeichnen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die verschiedenen hier beschriebenen Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen, mit denen das Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen ermöglicht wird. Einige Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen zum Wiederaufbau einer Abbildungstabelle in flüchtigem Speicher aus einem abgespeicherten Schnappschuss der Abbildungstabelle und aus einem abgespeicherten Log beim Herauffahren einer Speicherungsvorrichtung.
- (A1) Genauer gesagt umfassen einige Ausführungsformen ein Verfahren zum Verwalten eines Speicherungssystems. Bei einigen Ausführungsformen umfasst das Verfahren (1) Empfangen mehrerer Befehle in einer Speicherungsvorrichtung des Speicherungssystems von einem Host, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst, (2) Unterhalten eines Schreibbefehlen und Entabbildungsbefehlen vom Host entsprechenden Logs, (3) Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem logischen Adressenraum, der dem Host verfügbar ist, in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird, (4) Abspeichern der Abbildungstabelle auf eingeplante Weise, die von den Entabbildungsbefehlen unabhängig ist, im nichtflüchtigen Speicher der Speicherungsvorrichtung, (5) Abspeichern des Logs im nichtflüchtigen Speicher der Speicherungsvorrichtung und (6) Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung.
- (A2) Bei einigen Ausführungsformen des Verfahrens von A1 umfasst Abspeichern der Abbildungstabelle Speichern eines Positionszeigers auf eine Position im Log in dem nichtflüchtigen Speicher.
- (A3) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A2 umfasst Abspeichern der Abbildungstabelle Speichern mehrerer distinkter Teile der Abbildungstabelle im nichtflüchtigen Speicher zu distinkten eingeplanten Zeiten.
- (A4) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A3 umfasst das Log für Schreibbefehle physische Adressen, an denen Daten gespeichert werden, in Verbindung mit der Ausführung der Schreibbefehle.
- (A5) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A4 umfasst das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl (der manchmal als „erster Entabbildungsbefehl” bezeichnet wird), der Informationen umfasst, die mehrere logische Adressen identifizieren, die gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildet werden.
- (A6) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A4 umfasst das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl, der Informationen umfasst, die einen Bereich von gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildeten logischen Adressen identifizieren.
- (A7) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A6 umfasst Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines Teils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis.
- (A8) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A7 umfasst Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines ersten Teils des Logs im nichtflüchtigen Speicher, wenn das Log vordefinierte Vollheitskriterien erfüllt, und Abspeichern eines Endteils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis.
- (A9) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A8 umfasst die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen.
- (A10) In einem anderen Aspekt umfasst eine Speicherungsvorrichtung (1) nichtflüchtigen Speicher (der z. B. eine oder mehrere nichtflüchtige Speicherungsvorrichtungen, wie etwa Flash-Speichervorrichtungen, umfasst), (2) einen oder mehrere Prozessoren und (3) Controllerspeicher (z. B. nichtflüchtigen Speicher oder flüchtigen Speicher im Controller oder damit gekoppelt), der ein oder mehrere Programme speichert, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, bewirken, dass die Speicherungsvorrichtung Ausführung eines beliebigen der hier beschriebenen Verfahren A1 bis A9 durchführt oder steuert.
- (A12) In einem weiteren Aspekt werden beliebige der oben beschriebenen Verfahren A1 bis A9 durch eine Speicherungsvorrichtung ausgeführt, die Mittel zum Ausführen beliebiger der hier beschriebenen Verfahren umfasst.
- (A14) In einem weiteren Aspekt umfasst ein Speicherungssystem (1) ein Speicherungsmedium (das z. B. eine oder mehrere nichtflüchtige Speicherungsvorrichtungen, wie etwa Flash-Speichervorrichtungen, umfasst) (2) einen oder mehrere Prozessoren und (3) Speicher (z. B. nichtflüchtigen Speicher oder flüchtigen Speicher in dem Speicherungssystem), der ein oder mehrere Programme speichert, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, bewirken, dass das Speicherungssystem Ausführung beliebiger der hier beschriebenen Verfahren A1 bis A9 durchführt oder steuert.
- (A15) In einem weiteren Aspekt umfassen einige Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium, das ein oder mehrere Programme speichert, die für Ausführung durch einen oder mehrere Prozessoren einer Speicherungsvorrichtung ausgelegt sind, wobei das eine oder die mehreren Programme Anweisungen zum Ausführen beliebiger der hier beschriebenen Verfahren umfassen.
-
Es werden hier zahlreiche Einzelheiten beschrieben, um ein umfassendes Verständnis der in den beigefügten Zeichnungen dargestellten Ausführungsbeispiele zu gewährleisten. Einige Ausführungsformen können jedoch ohne viele der spezifischen Einzelheiten praktiziert werden, und der Schutzumfang der Ansprüche wird nur durch die Merkmale und Aspekte beschränkt, die spezifisch in den Ansprüchen angeführt werden. Ferner wurden wohlbekannte Verfahren, Komponenten und Schaltungen nicht in erschöpfendem Detail beschrieben, um so betreffende Aspekte der hier beschriebenen Ausführungsformen nicht unnötigerweise zu verschleiern.
-
1 ist eine Blockdarstellung eines Datenspeicherungssystems 100 gemäß einigen Ausführungsformen. Obwohl einige beispielhafte Merkmale dargestellt sind, wurden der Kürze halber verschiedene andere Merkmale nicht dargestellt, um so betreffende Aspekte der hier offenbarten beispielhaften Ausführungsformen nicht zu verschleiern. Zu diesem Zweck umfasst als nicht einschränkendes Beispiel das Datenspeicherungssystem 100 die Speicherungsvorrichtung 120 (die manchmal auch als Informationsspeicherungsvorrichtung oder Datenspeicherungsvorrichtung oder Speichervorrichtung bezeichnet wird), die einen Speicherungscontroller 124, einen oder mehrere Controller 130 für nichtflüchtigen Speicher (NVM), wie etwa Flash-Controller, und nichtflüchtigen Speicher (z. B. eine oder mehrere NVM-Vorrichtungen 140, 142, wie etwa eine oder mehrere Flash-Speichervorrichtungen) umfasst und in Verbindung mit dem Computersystem 110 verwendet wird. Bei einigen Ausführungsformen umfasst die Speicherungsvorrichtung 120 eine einzige NVM-Vorrichtung, während die Speicherungsvorrichtung 120 bei anderen Ausführungsformen mehrere NVM-Vorrichtungen umfasst. Bei einigen Ausführungsformen umfassen die NVM-Vorrichtungen 140, 142 Flash-Speicher des NAND-Typs oder Flash-Speicher des NOR-Typs. Ferner sind bei einigen Ausführungsformen die NVM-Controller 130 SSD(Solid-State Drive)-Controller. Es können jedoch andere Arten von Speicherungsmedien gemäß Aspekten einer Vielfalt von Ausführungsformen vorgesehen sein (z. B. PCRAM, ReRAM, STT-RAM usw.). Bei einigen Ausführungsformen umfasst eine Flash-Speichervorrichtung einen oder mehrere Flash-Speicherchips, eine oder mehrere Flash-Speicherkapselungen, einen oder mehrere Flash-Speicherkanäle oder dergleichen. Bei einigen Ausführungsformen kann das Datenspeicherungssystem 100 eine oder mehrere Speicherungsvorrichtung 120en enthalten.
-
Das Computersystem 110 ist durch Datenverbindungen 101 mit dem Speicherungscontroller 124 gekoppelt. Bei einigen Ausführungsformen umfasst das Computersystem 110 jedoch den Speicherungscontroller 124 oder einen Teil des Speicherungscontrollers 124 als eine Komponente und/oder ein Subsystem. Zum Beispiel wird bei einigen Ausführungsformen ein Teil der oder die gesamte Funktionalität des Speicherungscontroller 124 durch auf dem Computersystem 110 ausgeführte Software implementiert. Das Computersystem 110 kann eine beliebige geeignete Computervorrichtung sein, wie etwa ein Computer, ein Laptop-Computer, eine Tablet-Vorrichtung, ein Netbook, ein Internetkiosk, ein Personal Digital Assistant, ein Mobiltelefon, ein Smartphone, eine Spielvorrichtung, ein Computerserver oder eine beliebige andere Datenverarbeitungsvorrichtung. Das Computersystem 110 wird manchmal als Host, Hostsystem, Client oder Clientsystem bezeichnet. Bei einigen Ausführungsformen ist das Computersystem 110 ein Serversystem, wie etwa ein Serversystem in einer Datenzentrale. Bei einigen Ausführungsformen umfasst das Computersystem 110 einen oder mehrere Prozessoren, eine oder mehrere Arten von Speicher, eine Anzeige und/oder andere Benutzeroberflächenkomponenten wie eine Tastatur, eine Berührungsschirmanzeige, eine Maus, ein Trackpad, eine Digitalkamera und/oder eine beliebige Anzahl von Ergänzungsvorrichtungen zum Hinzufügen von Funktionalität. Bei einigen Ausführungsformen verfügt das Computersystem 110 nicht über eine Anzeige und andere Benutzeroberflächenkomponenten.
-
Der eine oder die mehreren NVM-Controller 130 sind durch Verbindungen 103 mit dem Speicherungscontroller 124 gekoppelt. Die Verbindungen 103 werden manchmal als Datenverbindungen bezeichnet, übermitteln aber typischerweise Befehle zusätzlich zu Daten und Übermitteln gegebenenfalls Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu Datenwerten, die in den NVM-Vorrichtungen 140, 142 zu speichern sind, und Datenwerten, die aus den NVM-Vorrichtungen 140, 142 gelesen werden. Bei einigen Ausführungsformen sind jedoch der Speicherungscontroller 124, der eine oder die mehreren NVM-Controller 130 und die NVM-Vorrichtungen 140, 142 in derselben Vorrichtung (d. h. einer integrierten Vorrichtung) wie Komponenten enthalten. Ferner sind bei einigen Ausführungsformen der Speicherungscontroller 124, der eine oder die mehreren NVM-Controller 130 und die NVM-Vorrichtungen 140, 142 in einer Hostvorrichtung (z. B. dem Computersystem 110), wie etwa eine mobile Vorrichtung, ein Tablet oder eine andere Computer- oder computergesteuerte Vorrichtung, eingebettet, und die hier beschriebenen Verfahren werden mindestens teilweise durch den eingebetteten Speicherungscontroller ausgeführt.
-
Bei einigen Ausführungsformen umfasst die Speicherungsvorrichtung 120 NVM-Vorrichtungen 140, 142, wie etwa Flash-Speichervorrichtungen (z. B. NVM-Vorrichtungen 140-1 bis 140-n und NVM-Vorrichtungen 142-1 bis 142-k) und NVM-Controller 130 (z. B. NVM-Controller 130-1 bis 130-m). Anders gesehen umfasst die Speicherungsvorrichtung 120m Speicherkanäle, die jeweils einen NVM-Controller 130 und eine Menge von NVM-Vorrichtungen 140 oder 142, die mit dem NVM-Controller 130 gekoppelt sind, aufweisen, wobei m eine ganze Zahl größer als 1 ist. Bei einigen Ausführungsformen teilen sich jedoch zwei oder mehr Speicherkanäle einen NVM-Controller 130. In jedem Beispiel hat jeder Speicherkanal seine eigene distinkte Menge von NVM-Vorrichtungen 140 oder 142. In einem nicht einschränkenden Beispiel beträgt die Anzahl von Speicherkanälen in einer typischen Speicherungsvorrichtung 8, 16 oder 32. In einem anderen nicht einschränkenden Beispiel beträgt die Anzahl der NVM-Vorrichtungen 140 oder 142 pro Speicherkanal typischerweise 8, 16, 32 oder 64. Ferner ist bei einigen Ausführungsformen die Anzahl der NVM-Vorrichtungen 140/142 in verschiedenen Speicherkanälen verschieden.
-
Bei einigen Ausführungsformen umfasst jeder NVM-Controller der NVM-Controller 130 eine oder mehrere Verarbeitungseinheiten (die manchmal auch als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller bezeichnet werden), die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen (z. B. in den NVM-Controllern 130) auszuführen. Bei einigen Ausführungsformen teilen sich den einen oder die mehreren Prozessoren eine oder mehrere Komponenten in der Funktion der NVM-Controller 130 und in einigen Fällen darüber hinaus. Die NVM-Vorrichtungen 140, 142 sind durch Verbindungen mit den NVM-Controllern 130 gekoppelt, die typischerweise Befehle zusätzlich zu Daten und gegebenenfalls Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu Datenwerten, die in den NVM-Vorrichtungen 140, 142 zu speichern sind, und Datenwerten, die aus den NVM-Vorrichtungen 140, 142 gelesen werden, übermitteln. Die NVM-Vorrichtungen 140, 142 können eine beliebige Anzahl (d. h. eine oder mehrere) von Speichervorrichtungen umfassen, darunter, aber ohne Beschränkung, nichtflüchtige Halbleiter-Speichervorrichtungen wie Flash-Speichervorrichtung(en).
-
Die Flash-Speichervorrichtung(en) (z. B. die NVM-Vorrichtungen 140, 142) können zum Beispiel für Unternehmensspeicherung ausgelegt sein, die für Anwendungen wie Cloud-Datenverarbeitung, für Datenbankanwendungen, primäre und/oder sekundäre Speicherung oder zum Cache-Speichern von Daten, die in sekundärer Speicherung wie etwa Festplattenlaufwerken gespeichert werden (oder zu speichern sind), geeignet ist. Zusätzlich und/oder als Alternative können Flash-Speichervorrichtung(en) (z. B. die NVM-Vorrichtungen 140, 142) auch für Anwendungen auf relativ kleinerem Maßstab ausgelegt sein, wie etwa persönliche Flash-Laufwerke oder Festplattenersätze für PCs, Laptop- und Tablet-Computer. Obwohl hier als Beispiel Flash-Speichervorrichtungen und Flash-Controller verwendet werden, umfasst bei einigen Ausführungsformen die Speicherungsvorrichtung 120 andere nichtflüchtige Speicherungsvorrichtung(en) und entsprechende(n) nichtflüchtige(n) Speicherungscontroller.
-
Bei einigen Ausführungsformen werden die NVM-Vorrichtungen 140, 142 in eine Anzahl von adressierbaren und einzeln auswählbaren Blöcken aufgeteilt. Bei einigen Ausführungsformen sind die einzeln auswählbaren Blöcke die löschbaren Einheiten minimaler Größe in einer Flash-Speichervorrichtung. Anders ausgedrückt, enthält jeder Block die Mindestanzahl von Speicherzellen, die gleichzeitig gelöscht werden kann. Jeder Block wird gewöhnlich weiter in mehrere Seiten und/oder Wortleitungen aufgeteilt, wobei jede Seite oder Wortleitung typischerweise eine Instanz des kleinsten einzeln zugänglichen (lesbaren) Teils in einem Block ist. Bei einigen Ausführungsformen (die z. B. einige Arten von Flash-Speicher verwenden) ist die kleinste einzeln zugängliche Einheit eines Datensatzes jedoch ein Sektor, der eine Subeinheit einer Seite ist. Das heißt, ein Block umfasst mehrere Seiten, jede Seite enthält mehrere Sektoren und jeder Sektor ist die Mindesteinheit von Daten zum Lesen von Daten von der Flash-Speichervorrichtung.
-
Obwohl Datenspeicherungsdichten von nichtflüchtigen Halbleiter-Speichervorrichtungen im Allgemeinen zunehmen, ist, wie oben erwähnt, ein Nachteil der Vergrößerung der Speicherungsdichte, dass die gespeicherten Daten anfälliger dafür sind, falsch gespeichert und/oder gelesen zu werden. Bei einigen Ausführungsformen kann Fehlersteuercodierung benutzt werden, um die Anzahl unkorrigierbarer Fehler zu begrenzen, die durch elektrische Fluktuationen, Defekte im Speicherungsmedium, Betriebsbedingungen, Vorrichtungsvorgeschichte, Schreib-Lese-Schaltkreise usw. oder eine Kombination dieser und verschiedener anderer Faktoren eingeführt werden.
-
Bei einigen Ausführungsformen umfasst der Speicherungscontroller 124 ein Verwaltungsmodul 121-1, eine Hostschnittstelle 129, eine Speicherungsmedium-E/A-Schnittstelle 128 und ein zusätzliches Modul bzw. zusätzliche Module 125. Der Speicherungscontroller 124 kann verschiedene zusätzliche Merkmale umfassen, die der Kürze halber, und um die betreffenden Merkmale der hier offenbarten beispielhaften Ausführungsformen nicht zu verschleiern, nicht dargestellt wurden, und es kann eine andere Anordnung von Merkmalen möglich sein.
-
Die Hostschnittstelle 129 stellt durch Datenverbindungen 101 eine Schnittstelle zu dem Computersystem 110 bereit. Ähnlich stellt die Speicherungsmediumschnittstelle 128 durch Verbindungen 103 eine Schnittstelle zu den NVM-Controllern 130 bereit. Bei einigen Ausführungsformen umfasst die Speicherungsmediumschnittstelle 128 Lese- und Schreibschaltkreise, darunter Schaltkreise mit der Fähigkeit, NVM-Controllern 130 Lesesignale zuzuführen (z. B. Leseschwellenspannungen für Flash-Speicher des NAND-Typs). Bei einigen Ausführungsformen werden die Verbindungen 101 und die Verbindungen 103 als Kommunikationsmedien implementiert, über die Befehle und Daten unter Verwendung eines Protokolls wie DDR3, SCSI, SATA, SAS oder dergleichen übermittelt werden. Bei einigen Ausführungsformen umfasst der Speicherungscontroller 124 einen oder mehrere Verarbeitungseinheiten (die manchmal auch als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller bezeichnet werden), die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen (z. B. in dem Speicherungscontroller 124) auszuführen. Bei einigen Ausführungsformen teilen sich den einen oder die mehreren Prozessoren eine oder mehrere Komponenten in der Funktion des Speicherungscontrollers 124 und in einigen Fällen darüber hinaus.
-
Bei einigen Ausführungsformen umfasst das Verwaltungsmodul 121-1 eine oder mehrere Verarbeitungseinheiten (die manchmal auch als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller bezeichnet werden) 122, die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen (z. B. in dem Verwaltungsmodul 121-1) auszuführen. Bei einigen Ausführungsformen teilen sich die eine oder die mehreren CPUs 122 eine oder mehrere Komponenten in der Funktion des Speicherungscontrollers 124 und in einigen Fällen darüber hinaus. Das Verwaltungsmodul 121-1 ist mit der Hostschnittstelle 129, einem zusätzlichen Modul bzw. zusätzlichen Modulen 125 und der Speicherungsmediumschnittstelle 128 gekoppelt, um den Betrieb dieser Komponenten zu koordinieren. Bei einigen Ausführungsformen werden ein oder mehrere Module des Verwaltungsmoduls 121-1 in dem Verwaltungsmodul 121-2 des Computersystems 110 implementiert. Bei einigen Ausführungsformen sind ein oder mehrere Prozessoren des Computersystems 110 (nicht gezeigt) dafür ausgelegt, Anweisungen in einem oder mehreren Programmen (z. B. in dem Verwaltungsmodul 121-2) auszuführen. Das Verwaltungsmodul 121-2 ist mit der Speicherungsvorrichtung 120 gekoppelt, um den Betrieb der Speicherungsvorrichtung 120 zu verwalten.
-
Es sind ein zusätzliches Modul bzw. zusätzliche Module 125 mit der Speicherungsmediumschnittstelle 128, der Hostschnittstelle 129 und dem Verwaltungsmodul 121-1 gekoppelt. Beispielsweise können die zusätzlichen Module 125 ein Fehlerkontrollmodul zur Begrenzung der Anzahl von unkorrigierbaren Fehlern umfassen, die unabsichtlich während Schreibvorgängen in Speicher und/oder Lesevorgängen aus Speicher in Daten eingeführt werden. Bei einigen Ausführungsformen werden die zusätzlichen Module 125 in Software durch eine oder mehrere CPUs 122 des Verwaltungsmoduls 121-1 ausgeführt, und bei anderen Ausführungsformen werden die zusätzlichen Module 125 ganz oder teilweise unter Verwendung von Spezialschaltkreisen (z. B. zum Ausführen von Codierungs- und Decodierungsfunktionen) implementiert. Bei einigen Ausführungsformen werden das zusätzliche Modul bzw. die zusätzlichen Module 125 ganz oder teilweise durch auf dem Computersystem 110 ausgeführte Software implementiert.
-
Bei einigen Ausführungsformen umfasst ein in dem zusätzlichen Modul bzw. den zusätzlichen Modulen 125 enthaltenes Fehlerkontrollmodul einen Codierer und einen Decodierer. Bei einigen Ausführungsformen codiert der Codierer Daten durch Anwendung eines Fehlerkontrollcodes (ECC), um ein Codewort zu produzieren, das danach in den NVM-Vorrichtungen 140, 142 gespeichert wird. Wenn codierte Daten (z. B. ein oder mehrere Codewörter) aus den NVM-Vorrichtungen 140, 142 gelesen werden, wendet der Decodierer einen Decodierungsprozess auf die codierten Daten an, um die Daten wiederzugewinnen und um in den wiedergewonnen Daten innerhalb der Fehlerkorrekturfähigkeit des Fehlerkontrollcodes Fehler zu korrigieren. Für Fachleute ist erkennbar, dass verschiedene Fehlerkontrollcodes verschiedene Fehlerdetektions- und -korrekturkapazitäten aufweisen und dass aus Gründen, die den Rahmen der vorliegenden Offenbarung sprengen, bestimmte Codes für verschiedene Anwendungen ausgewählt werden. Dementsprechend wird hier keine erschöpfende Übersicht über die verschiedenen Arten von Fehlerkontrollcode angegeben. Außerdem ist für Fachleute erkennbar, dass jede Art oder Familie von Fehlerkontrollcodes Codierungs- und Decodierungsalgorithmen aufweisen kann, die dieser Art oder Familie von Fehlerkontrollcodes eigen sind. Andererseits können einige Algorithmen mindestens bis zu einem gewissen Grad bei der Decodierung einer Anzahl verschiedener Arten oder Familien von Fehlerkontrollcodes benutzt werden. Der Kürze halber wird dementsprechend hier keine erschöpfende Beschreibung der verschiedenen Arten von Codierungs- und Decodierungsalgorithmen gegeben, die allgemein verfügbar und Fachleuten bekannt sind.
-
Bei einigen Ausführungsformen empfängt die Hostschnittstelle 129 während einer Schreiboperation in den NVM-Vorrichtungen 140, 142 zu speichernde Daten von dem Computersystem 110. Die durch die Hostschnittstelle 129 empfangenen Daten werden einem Codierer (z. B. in einem zusätzlichen Modul bzw. zusätzlichen Modulen 125) zur Verfügung gestellt, der die Daten codiert, um ein oder mehrere Codewörter zu produzieren. Das eine oder die mehreren Codewörter werden der Speicherungsmediumschnittstelle 128 zur Verfügung gestellt, die das eine oder die mehreren Codewörter zu den NVM-Vorrichtungen 140, 142 (z. B. durch die NVM-Controller 130) auf eine Weise transferiert, die von der Art von benutztem Speicherungsmedium abhängig ist.
-
Bei einigen Ausführungsformen wird eine Leseoperation eingeleitet, wenn das Computersystem (Host) 110 einen oder mehrere Host-Lesebefehle (über die Datenverbindungen 101 oder als Alternative eine getrennte Steuerleitung oder einen getrennten Bus) zu dem Speicherungscontroller 124 sendet, die Daten von den NVM-Vorrichtungen 140, 142 anfordern. Der Speicherungscontroller 124 sendet einen oder mehrere Lesezugriffsbefehle zu den NVM-Vorrichtungen 140, 142 (z. B. durch die NVM-Controller 130) über die Speicherungsmediumschnittstelle 128, um unverarbeitete Lesedaten gemäß Speicherstellen (Adressen) zu erhalten, die durch den einen oder die mehreren Host-Lesebefehle spezifiziert werden. Die Speicherungsmediumschnittstelle 128 führt die unverarbeiteten Lesedaten (die z. B. ein oder mehrere Codewörter umfassen) einem Decodierer (z. B. einem zusätzlichen Modul bzw. zusätzlichen Modulen 125) zu. Wenn die Decodierung erfolgreich ist, werden die decodierten Daten der Hostschnittstelle 129 zugeführt, in der die decodierten Daten dem Computersystem 110 zur Verfügung gestellt werden. Bei einigen Ausführungsformen kann, wenn die Decodierung nicht erfolgreich ist, der Speicherungscontroller 124 auf eine Anzahl von Behebungsaktionen zurückgreifen oder eine Angabe eines unauflösbaren Fehlerzustands bereitstellen.
-
Wie oben erläutert, wird ein Speicherungsmedium (z. B. die NVM-Vorrichtungen 140, 142) in eine Anzahl adressierbarer und einzeln auswählbarer Blöcke aufgeteilt, und jeder Block wird gegebenenfalls (aber typischerweise) weiter in mehrere Seiten und/oder Wortleitungen und/oder Sektoren aufgeteilt. Obwohl Löschung eines Speicherungsmediums blockweise durchgeführt wird, wird bei vielen Ausführungsformen Lesen und Programmieren des Speicherungsmediums an einer kleineren Subeinheit eines Blocks durchgeführt (z. B. seitenweise, wortleitungsweise oder sektorenweise). Bei einigen Ausführungsformen besteht die kleinere Subeinheit eines Blocks aus mehreren Speicherzellen (z. B. Zellen einer einzigen Ebene oder Zellen mehrerer Ebenen). Bei einigen Ausführungsformen wird Programmierung an einer gesamten Seite ausgeführt. Bei einigen Ausführungsformen weist ein NAND-Flash mit Zellen mehrerer Ebenen (MLC) typischerweise vier mögliche Zustände pro Zelle auf, was zwei Bit Informationen pro Zelle ergibt. Ferner weist bei einigen Ausführungsformen ein MLC-NAND zwei Seitentypen auf: (1) eine (manchmal als schnelle Seite bezeichnete) untere Seite und (2) eine (manchmal als langsame Seite bezeichnete) obere Seite. Bei einigen Ausführungsformen weist ein NAND-Flash mit Zellen dreifacher Ebene (TLC) acht mögliche Zustände pro Zelle auf, was drei Bit Informationen pro Zelle ergibt. Obwohl die Beschreibung hier TLC, MLC und SLC als Beispiele verwendet, ist für Fachleute erkennbar, dass die hier beschriebenen Ausführungsformen auf Speicherzellen erweitert werden können, die mehr als acht mögliche Zustände pro Zelle aufweisen, was mehr als drei Bit Informationen pro Zelle ergibt. Bei einigen Ausführungsformen ist das Codierungsformat der Speicherungsmedien (d. h. TLC, MLC oder SLC und/oder ein gewählter Datenredundanzmechanismus) eine Wahl, die getroffen wird, wenn die Daten tatsächlich in die Speicherungsmedien geschrieben werden.
-
Wenn beispielsweise Daten in Seiten in ein Speicherungsmedium geschrieben werden, aber das Speicherungsmedium in Blöcken gelöscht wird, können Seiten in dem Speicherungsmedium ungültige (z. B. abgestandene) Daten enthalten, aber diese Seiten können erst überschrieben werden, wenn der gesamte diese Seiten enthaltende Block gelöscht wird. Um in die Seiten mit ungültigen Daten zu schreiben, werden die (etwaigen) Seiten mit gültigen Daten in diesem Block gelesen und in einen neuen Block umgeschrieben, und der alte Block wird gelöscht (oder in eine Warteschlange für Löschung eingereiht). Dieser Prozess wird als Müllabfuhr bezeichnet. Nach der Müllabfuhr enthält der neue Block die Seiten mit gültigen Daten und kann freie Seiten aufweisen, die für das Schreiben neuer Daten verfügbar sind, und der alte Block kann gelöscht werden, um so für neue zu schreibende Daten verfügbar zu sein. Da Flash-Speicher nur eine begrenzte Anzahl von Malen programmiert und gelöscht werden kann, hat die Effizienz des zum Aussuchen des nächsten Blocks bzw. der nächsten Blöcke, der bzw. die umzuschreiben und zu löschen ist bzw. sind, eine signifikante Auswirkung auf die Lebensdauer und Zuverlässigkeit von auf Flash basierenden Speicherungssystemen.
-
Schreibverstärkung ist ein Phänomen, bei dem die tatsächliche Menge an in ein Speicherungsmedium (z. B. die NVM-Vorrichtungen 140, 142 in der Speicherungsvorrichtung 120) zu schreibenden physischen Daten ein Vielfaches der logischen Menge an durch einen Host (z. B. das Computersystem 110, manchmal als Host bezeichnet) in das Speicherungsmedium zu schreibenden Daten ist. Wie oben besprochen führt, wenn ein Block Speicherungsmedium gelöscht werden muss, bevor er umgeschrieben werden kann, der Müllabfuhrprozess zum Ausführen dieser Operationen zu einem ein- oder mehrmaligen Umschreiben von Daten. Dieser Vervielfachungseffekt vergrößert die Anzahl der über die Lebenszeit eines Speicherungsmediums erforderlichen Schreibvorgänge, wodurch die Zeit verkürzt wird, für die es zuverlässig arbeiten kann. Die Formel zur Berechnung der Schreibverstärkung eines Speicherungssystems wird durch die folgende Gleichung gegeben: Menge an in ein Speicherungsmedium geschriebenen Daten / Menge an durch einen Host geschriebenen Daten
-
Eines der Ziele jeder auf Flash-Speicher basierenden Datenspeicherungssystemarchitektur ist, Schreibverstärkung soweit wie möglich zu verringern, so dass verfügbare Standzeit verwendet wird, um Speicherungsmedium-Zuverlässigkeits- und -Garantiespezifikationen zu erfüllen. Höhere Systemstandzeit führt auch zu geringeren Kosten, da das Speicherungssystem weniger Überprovisionierung benötigen kann. Durch Verringern von Schreibverstärkung wird die Standzeit des Speicherungsmediums vergrößert, und die Gesamtkosten des Speicherungssystems werden verringert. Müllabfuhr wird im Allgemeinen für beste Leistungsfähigkeit und beste Schreibverstärkung an Löschblöcken mit der kleinsten Anzahl gültiger Seiten ausgeführt.
-
Flash-Speichervorrichtungen benutzen Speicherzellen zum Speichern von Daten als elektrische Werte, wie etwa elektrische Ladungen oder Spannungen. Jede Flash-Speicherzelle umfasst typischerweise einen einzelnen Transistor mit einem Floating-Gate, das zum Speichern einer Ladung verwendet wird, wodurch die Schwellenspannung des Transistors (d. h. die zum Einschalten des Transistors benötigte Spannung) modifiziert wird. Der Betrag der Ladung und die entsprechende Schwellenspannung, die die Ladung erzeugt, wird zum Repräsentieren eines oder mehrerer Datenwerte verwendet. Bei einigen Ausführungsformen wird während einer Leseoperation eine Leseschwellenspannung an das Steuergate des Transistors angelegt, und der resultierende erfasste Strom oder die resultierende erfasste Spannung wird auf einen Datenwert abgebildet.
-
Im Kontext von Flash-Speicherzellen bedeuten die Ausdrücke „Zellenspannung” und „Speicherzellenspannung” die Schwellenspannung der Speicherzelle, also die Mindestspannung, die an das Gate des Transistors der Speicherzelle angelegt werden muss, damit der Transistor Strom leitet. Ähnlich sind Leseschwellenspannungen (manchmal auch als Lesesignale und Lesespannungen bezeichnet), die an eine Flash-Speicherzellen angelegt werden, Gate-Spannungen, die an die Gates der Flash-Speicherzellen angelegt werden, um zu bestimmen, ob die Speicherzellen bei dieser Gatespannung Strom leiten. Bei einigen Ausführungsformen ist, wenn der Transistor einer Flash-Speicherzelle bei einer gegebenen Leseschwellenspannung Strom leitet, wodurch angegeben wird, dass die Zellenspannung kleiner als die Leseschwellenspannung ist, der unverarbeitete Datenwert für diese Leseoperation eine „1”, und andernfalls ist der unverarbeitete Datenwert eine „0”.
-
2 ist eine Blockdarstellung eines Verwaltungsmoduls 121-1 gemäß einigen Ausführungsformen, wie in 1 gezeigt. Das Verwaltungsmodul 121-1 umfasst typischerweise eine oder mehrere Verarbeitungseinheiten (die manchmal als CPUs oder Prozessoren bezeichnet werden) 122-1 zum Ausführen von Modulen, Programmen und/oder Anweisungen, die im Speicher 206 gespeichert sind, und um dadurch Verarbeitungsoperationen auszuführen, Speicher 206 (der manchmal als Controllerspeicher bezeichnet wird) und einen oder mehrere Kommunikationsbusse 208 zum Verbinden dieser Komponenten. Der eine oder die mehreren Kommunikationsbusse 208 umfassen gegebenenfalls (manchmal als Chipsatz bezeichnete) Schaltkreise, die Systemkomponenten verbinden und die Kommunikation zwischen ihnen steuern. Das Verwaltungsmodul 121-1 ist durch den einen oder die mehreren Kommunikationsbusse 208 mit der Hostschnittstelle 129, dem zusätzlichen Modul bzw. den zusätzlichen Modulen 125 und der Speicherungsmedium-E/A 128 gekoppelt. Der Speicher 206 umfasst schnellen Direktzugriffsspeicher wie DRAM, SRAM, DDR RAM oder andere Direktzugriffs-Halbleiterspeichervorrichtungen und kann nichtflüchtigen Speicher umfassen, wie etwa eine oder mehrere magnetische Plattenspeicherungsvorrichtungen, optische Plattenspeicherungsvorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Halbleiter-Speicherungsvorrichtungen. Der Speicher 206 umfasst gegebenenfalls eine oder mehrere entfernt von der CPU bzw. den CPUs 122-1 angeordnete Speicherungsvorrichtungen. Der Speicher 206 oder als Alternative die nichtflüchtige(n) Speichervorrichtung(en) in dem Speicher 206 umfasst ein nichttransitorisches computerlesbares Speicherungsmedium. Bei einigen Ausführungsformen speichert der Speicher 206 oder das nichttransitorische computerlesbare Speicherungsmedium des Speichers 206 die folgenden Programme, Module und Datenstrukturen oder eine Teilmenge oder Übermenge davon:
- • eine Übersetzungstabelle 212, die zur Abbildung von logischen Adressen auf physische Adressen verwendet wird (z. B. umfasst bei einigen Ausführungsformen die Übersetzungstabelle 212 die Abbildungstabelle 402, 4);
- • ein Datenlesemodul 214, das zum Lesen von Daten aus einem bzw. einer oder mehreren Codewörtern, Seiten oder Blöcken in einem Speicherungsmedium (z. B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
- • ein Datenschreibmodul 216, das zum Schreiben von Daten auf ein bzw. eine oder mehrere Codewörter, Seiten oder Blöcke in einem Speicherungsmedium (z. B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
- • ein Datenlöschmodul 218, das zum Löschen von Daten aus einem oder mehreren Blöcken in einem Speicherungsmedium (z. B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
- • ein Müllabfuhrmodul 220, das zur Müllabfuhr für einen oder mehrere Blöcke in einem Speicherungsmedium (z. B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
- • ein Befehlsempfangsmodul 222, das zum Empfangen mehrerer Befehle (z. B. Entabbildungsbefehle und E/A-Befehle, wie etwa Schreibanforderungen und/oder Leseanforderungen) von einem Host verwendet wird;
- • ein Log-Modul 224, das zum Unterhalten und/oder Abspeichern eines Logs (z. B. des Logs 226, manchmal als Replay-FIFO bezeichnet) verwendet wird;
- • ein Log 226, das eine Ansammlung von Datenstrukturen entsprechend Schreibbefehlen und Entabbildungsbefehlen von einem Host umfasst; und
- • ein Abbildungsmodul 228, das zum Ausführen einer oder mehrerer Operationen in Bezug auf eine Abbildungstabelle (z. B. die Übersetzungstabelle 212) verwendet wird, das gegebenenfalls Folgendes umfasst:
– ein Wartungsmodul 230, das zum Unterhalten der Abbildungstabelle in flüchtigem Speicher verwendet wird;
– ein Abspeichermodul 232, das zum Abspeichern der Abbildungstabelle in nichtflüchtigem Speicher der Speicherungsvorrichtung verwendet wird; und
– ein Wiederaufbaumodul 234, das zum Wiederaufbauen der Abbildungstabelle verwendet wird.
-
Jedes der oben identifizierten Elemente kann in einer oder mehreren der zuvor erwähnten Speichervorrichtungen gespeichert sein und entspricht einer Menge von Anweisungen zum Ausführen einer oben beschriebenen Funktion. Die obigen identifizierten Module oder Programme (d. h. Mengen von Anweisungen) müssen nicht als getrennte Softwareprogramme, Prozeduren oder Module implementiert werden und somit können verschiedene Teilmengen dieser Module bei verschiedenen Ausführungsformen kombiniert oder anderweitig umgeordnet werden. Bei einigen Ausführungsformen kann der Speicher 206 eine Teilmenge der oben identifizierten Module und Datenstrukturen speichern. Ferner kann der Speicher 206 zusätzliche Module und Datenstrukturen speichern, die oben nicht beschrieben werden. Bei einigen Ausführungsformen stellen die in dem Speicher 206 oder dem nichttransitorischen computerlesbaren Speicherungsmedium des Speichers 206 gespeicherten Programme, Module und Datenstrukturen Anweisungen zur Implementierung einiger der nachfolgend beschriebenen Verfahren bereit. Bei einigen Ausführungsformen können einige oder alle dieser Module mit spezialisierten Hardwareschaltungen implementiert werden, in die die Modulfunktionalität ganz oder teilweise untergeordnet werden kann.
-
Obwohl 2 das Verwaltungsmodul 121-1 gemäß einigen Ausführungsformen zeigt, ist 2 eher als eine funktionale Beschreibung der verschiedenen Merkmale gedacht, die in dem Verwaltungsmodul 121-1 anwesend sein können, statt als Strukturschema der hier beschriebenen Ausführungsformen. In der Praxis und so wie es von Durchschnittsfachleuten anerkannt wird, könnten die getrennt gezeigten Programme, Module und Datenstrukturen kombiniert werden und einige Programme, Module und Datenstrukturen könnten getrennt werden.
-
3 ist eine Blockdarstellung eines LBA(logische Blockadressen)-Raums 320 (der manchmal als LA(logische Adresse)-Raum bezeichnet wird) gemäß einigen Ausführungsformen. Bei einigen Ausführungsformen ist eine logische Adresse die Adresse, an der ein Posten (z. B. eine Datei oder andere Daten) von der Perspektive eines Hosts (z. B. des Computersystems 110, 1) aus gesehen residiert. Bei einigen Ausführungsformen unterscheidet sich eine logische Adresse (z. B. im LBA-Raum 320) aufgrund der Funktionsweise einer Abbildungsfunktion oder eines Adressenübersetzers (z. B. einer Funktion oder eines Moduls mit der Übersetzungstabelle 212, 2, oder der Abbildungstabelle 402, 4) von einer physischen Adresse (z. B. im physischen Raum 318). Bei einigen Ausführungsformen werden logische Adressen als LBA (logische Blockadressen) implementiert, die auf physische Flash-Adressen (z. B. PPN (physische Seitennummern)) abgebildet werden. Physische Adressen umfassen typischerweise Teile wie etwa Bank, Block und Seite, die mehreren Ebenen einer Speicherhierarchie entsprechen.
-
Bei einigen Ausführungsformen wird eine LBA (logische Blockadresse) auf eine physische Flash-Adresse (z. B. eine PPN (physische Seitennummer), darunter eine Bank, ein Block und eine Seite) abgebildet, wie weiter mit Bezug auf 4 beschrieben wird.
-
Bei einigen Ausführungsformen umfasst ein logischer Adressenraum zugeteilten logischen Adressenraum (z. B. zugeteilten LBA-Raum 342) und nichtzugeteilten logischen Adressenraum (z. B. nichtzugeteilten LBA-Raum 340). Bei einigen Ausführungsformen ist ein nichtzugeteilter logischer Adressenraum ein logischer Adressenraum, in dem keine Daten gespeichert werden. Bei einigen Ausführungsformen umfasst ein nichtzugeteilter logischer Adressenraum logischen Adressenraum, in den niemals geschrieben wurde und/oder der verworfen wurde (zuvor geschriebene Daten können durch eine Trimm- oder Entabbildungsoperation verworfen werden und werden manchmal als getrimmter logischer Adressenraum bezeichnet). Zum Beispiel umfasst in 3 der nichtzugeteilte LBA-Raum 340 getrimmten LBA-Raum 330. Bei einigen Ausführungsformen ist zugeteilter logischer Adressenraum ein logischer Adressenraum, in den zuvor ein Host geschrieben hat, wobei die zuvor geschriebenen Daten Daten umfassen, die nicht mehr von einem Host verwendet werden (z. B. keine Live-Daten 332) und Daten, die immer noch vom Host verwendet werden (z. B. Live-Daten 334). Bei einigen Ausführungsformen sind Nicht-Live-Daten Daten in einem Teil des logischen Adressenraums, der in den Metadaten eines Dateisystems als frei, verfügbar oder unbenutzt markiert ist. Gegebenenfalls kann ein Dateisystem wählen, Nicht-Live-Adressenraum durch eine Trimm- oder Entabbildungsoperation in nichtzugeteilten Adressenraum umzuwandeln.
-
In 3 repräsentiert der zugeteilte LBA-Raum 342 eine Menge an zugeteiltem Raum und der nichtzugeteilte LBA-Raum 340 repräsentiert eine Menge an nichtzugeteiltem Raum. Weder der zugeteilte LBA-Raum 342 noch der nichtzugeteilte LBA-Raum 340 ist jedoch notwendigerweise eine einzige zusammenhängende Region des LBA-Raums 320. Ähnlich repräsentieren die Live-Daten 334 und Nicht-Live-Daten 332 in 3 Mengen (z. B. Zählwerte von LBAs) von Live-Daten bzw. Nicht-Live-Daten. Weder die Live-Daten 334 noch die Nicht-Live-Daten 332 sind jedoch notwendigerweise eine einzige zusammenhängende Region des LBA-Raums 320 oder des zugeteilten LBA-Raums 342 und die Positionen der Live-Daten 334 und Nicht-Live-Daten 332, die in 3 dargestellt sind, weisen auch keinerlei Korrelation mit den logischen oder physischen Adressenwerten der Live-Daten und Nicht-Live-Daten auf. Die Live-Daten 334 und/oder Nicht-Live-Daten 332 werden typischerweise in mehreren Regionen des LBA-Raums 320 vorliegen und sind somit nicht zusammenhängend. Gegebenenfalls kann jedoch ein Umabbildungs- oder Vereinigungsprozess ausgeführt werden, der auch als Defragmentierung bezeichnet werden kann, um einige oder alle Live-Daten 334 zu einer zusammenhängenden Region des LBA-Raums 320 zu konsolidieren.
-
Der zugeteilte logische Adressenraum (342) ist Raum, der benutzt wird. Verringern der Größe des zugeteilten logischen Adressenraums erfordert typischerweise Verringerung der Menge an Live-Daten 334 und/oder Nicht-Live-Daten 332, die durch eine Speicherungsvorrichtung oder ein Speicherungssystem gespeichert werden, um dadurch einen Teil des zugeteilten logischen Adressenraums in nichtzugeteilten logischen Adressenraum zu verwandeln. Bei einigen Ausführungsformen werden Teile von Nicht-Live-Daten 332 getrimmt und dadurch mittels Verwendung von Trimm- oder Entabbildungsoperationen in nichtzugeteilten logischen Adressenraum verwandelt.
-
4 ist eine Blockdarstellung einer Abbildungstabelle 402 und eines physischen Adressenraums 410 gemäß einigen Ausführungsformen. Bei einigen Ausführungsformen wird die Abbildungstabelle 402 zum Übersetzen einer logischen Blockadresse (LBA) von der Perspektive eines Hosts (z. B. des Computersystems 110, 1) in eine physische Adresse in einem physischen Adressenraum (z. B. dem physischen Adressenraum 410) von nichtflüchtigem Speicher in einer Speicherungsvorrichtung (z. B. der Speicherungsvorrichtung 120, 1) verwendet. Bei einigen Ausführungsformen ist eine LBA die Adresse der kleinsten Einheit gespeicherter Daten, die durch einen Host adressierbar ist (z. B. 512 B oder 4096 B). Bei einigen Ausführungsformen sind LBA eine Sequenz von ganzen Zahlen, die in numerischer Reihenfolge im logischen Adressenraum organisiert sind. Bei einigen Ausführungsformen sind LBA ganze Zahlen, die aus einem logischen Adressenraum ausgewählt sind, aber nicht zusammenhängend sein müssen. Zum Beispiel wird bei Implementierungen, die einen spärlichen logischen Adressenraum benutzen, die Menge an adressierbarem Raum durch eine Grenze bezüglich der Anzahl logischer Adressen bestimmt, die zugeteilt werden können, aber diese logischen Adressen sind über einen größeren Adressenraum als die Maximalanzahl logischer Adressen, die (z. B. einem Host oder einer Menge von Hosts oder Clients) zugeteilt werden kann, verteilt.
-
Bei einigen Ausführungsformen wird die Abbildungstabelle 402 in Speicher gespeichert, der der Speicherungsvorrichtung zugeordnet ist (z. B. im Speicher 206 als Teil der Übersetzungstabelle 212, 2). Bei einigen Ausführungsformen dient die Abbildungstabelle 402 zum Implementieren der Übersetzungstabelle 212 in dem Verwaltungsmodul 121-1 (2). Bei einigen Ausführungsformen ist eine physische Adresse eine physische Seitennummer (PPN), einschließlich einer Banknummer, einer Blocknummer und einer Seitennummer. In dem in 4 gezeigten Beispiel wird LBA 0 auf Bank 1 (z. B. Bank 420-1), Block 3 (z. B. Block 421-3), Seite 37 (Seiten in Block 421-3 nicht gezeigt) des physischen Adressenraums 410 abgebildet. 4 zeigt, dass der physische Adressenraum 410 mehrere nichtflüchtige Speicherblöcke 421, 422, 423, 424 umfasst. Wie oben beschrieben und wie in der Darstellung des Blocks 424-p gezeigt, umfasst jeder nichtflüchtige Speicherblock im physischen Adressenraum einer Speicherungsvorrichtung typischerweise mehrere Seiten 426, wobei jede Seite typischerweise eine Instanz des kleinsten einzeln zugänglichen (z. B. lesbaren oder beschreibbaren) Teils eines Blocks ist. Obwohl 4 ein Beispiel einer Abbildung einer logischen Adresse auf eine physische Adresse zeigt, können bei anderen Ausführungsformen andere Abbildungen verwendet werden. Zum Beispiel entspricht bei einigen Ausführungsformen jeder der logischen Adresseneinträge mehrfachen (z. B. acht) logischen Adressen (z. B. 8 LBA pro logischem Adresseneintrag). Bei einigen Ausführungsformen muss die Abbildungstabelle 402 nicht zusammenhängende LBA-Adressen enthalten und kann auf eine beliebige Weise organisiert werden, die effiziente Nachschlagoperationen erleichtert, z. B. Hash-Tabelle, Binärbaum, inhaltsadressierbarer Speicher und anderes.
-
Wie oben erwähnt, ist das Abspeichern von Daten und missionskritischen Metadaten, die in flüchtiger Speicherung gehalten werden, für eine nichtflüchtige Datenspeicherungsvorrichtung wichtig. Bei Flash-Speichervorrichtungen müssen Daten über Stromversorgungszyklen geschützt sein, und damit eine Speicherungsvorrichtung (z. B. die Speicherungsvorrichtung 120, 1) gültig ist, ist eine volle Übersetzungstabelle (z. B. die Übersetzungstabelle 212, 2 oder Abbildungstabelle 402, 4) erforderlich. Für Unternehmensprodukte ist die Übersetzungstabelle jedoch typischerweise extrem groß (z. B. mehrere 100 MB), und Abspeichern der vollen Übersetzungstabelle ist in dem durch Batterie-Backups (z. B. Kondensatoren) bereitgestellten Zeitrahmen nicht durchführbar. Bei einigen Ausführungsformen werden inkrementelle Teile der Übersetzungstabelle zu eingeplanten Zeiten abgespeichert, um die Menge an Daten, die im Fall eines Stromausfalls abgespeichert werden muss, zu minimieren. Es wird jedoch erwartet, dass Entabbildungsbefehle, die effektiv einen Teil von Daten (z. B. einen Sektor, eine Einheit, die gesamte Speicherungsvorrichtung usw.) löschen, nahezu augenblicklich antwortet. Diese Ansprechzeit erlaubt nicht das Abspeichern der vollen Übersetzungstabelle. Die hier beschriebenen verschiedenen Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen, mit denen ein schnelles Reagieren auf einen Entabbildungsbefehl ermöglicht und Kohärenz der Übersetzungstabelle sichergestellt wird, indem die Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen über ein Log (das manchmal als Replay-FIFO bezeichnet wird) verfolgt wird.
-
5A–5B zeigen eine Flussdiagrammdarstellung eines Verfahrens 500 zum Verwalten eines Speicherungssystems gemäß einigen Ausführungsformen. Mindestens bei einigen Ausführungsformen wird das Verfahren 500 durch eine Speicherungsvorrichtung (z. B. die Speicherungsvorrichtung 120, 1) oder eine oder mehrere Komponenten der Speicherungsvorrichtung (z. B. den Speicherungscontroller 124, die NVM-Controller 130 und/oder die NVM-Vorrichtungen 140, 142, 1) ausgeführt, wobei die Speicherungsvorrichtung wirksam mit einem Hostsystem (z. B. dem Computersystem 110, 1) gekoppelt ist. Bei einigen Ausführungsformen wird das Verfahren 500 durch Anweisungen bestimmt, die in einem nichttransitorischen computerlesbaren Speicherungsmedium gespeichert sind und die durch einen oder mehrere Prozessoren einer Vorrichtung, wie etwa die eine oder mehreren Verarbeitungseinheiten (CPUs) 122-1 des Verwaltungsmoduls 121-1, die in 1 und 2 gezeigt sind, ausgeführt werden. Bei einigen Ausführungsformen wird das Verfahren 500 durch ein Speicherungssystem (z. B. das Datenspeicherungssystem 100, 1) oder eine oder mehrere Komponenten des Speicherungssystems (z. B. des Computersystems 110 und/oder der Speicherungsvorrichtung 120, 1) ausgeführt. Bei einigen Ausführungsformen werden einige der Operationen des Verfahrens 500 in einem Host (z. B. im Computersystem 110, 1) ausgeführt, und Informationen werden zu einer Speicherungsvorrichtung (z. B. der Speicherungsvorrichtung 120, 1) gesendet. Bei einigen Ausführungsformen wird das Verfahren 500 mindestens teilweise durch Anweisungen bestimmt, die in einem nichttransitorischen computerlesbaren Speicherungsmedium gespeichert sind und die durch einen oder mehrere Prozessoren eines Rosts (in 1 nicht gezeigt) ausgeführt werden. Der leichteren Erläuterung halber beschreibt das Folgende das Verfahren 500 als durch eine Speicherungsvorrichtung (z. B. die Speicherungsvorrichtung 120, 1) ausgeführt. Für Fachleute ist jedoch erkennbar, dass bei anderen Ausführungsformen eine oder mehrere in dem Verfahren 500 beschriebene Operationen durch einen Host (z. B. das Computersystem 110, 1) ausgeführt werden.
-
Eine Speicherungsvorrichtung (z. B. die Speicherungsvorrichtung 120, 1) eines Speicherungssystems (z. B. des Datenspeicherungssystems 100, 1) empfängt (502) mehrere Befehle von einem Host (z. B. dem Computersystem 110, 1), mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher (z. B. die NVM-Vorrichtungen 140, 142, 1) umfasst. Bei einigen Ausführungsformen umfassen die mehreren Befehle Schreibbefehle, Lesebefehle und/oder Entabbildungsbefehle. Bei einigen Ausführungsformen wird ein Befehlsempfangsmodul (z. B. das Befehlsempfangsmodul 222, 2) verwendet, um in einer Speicherungsvorrichtung eines Speicherungssystems mehrere Befehle von einem Host zu empfangen, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst, wie oben mit Bezug auf 2 beschrieben.
-
Bei einigen Ausführungsformen umfasst (504) die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen. Bei einigen Ausführungsformen umfasst die Speicherungsvorrichtung ein Speicherungsmedium (z. B. die NVM-Vorrichtungen 140, 142, 1), und das Speicherungsmedium umfasst eine oder mehrere nichtflüchtige Speicherungsvorrichtungen, wie etwa Flash-Speichervorrichtungen. Bei einigen Ausführungsformen ist das Speicherungsmedium eine einzige Flash-Speichervorrichtung, während das Speicherungsmedium bei anderen Ausführungsformen mehrere Flash-Speichervorrichtungen umfasst. Zum Beispiel umfasst bei einigen Ausführungsformen das Speicherungsmedium dutzende oder hunderte Flash-Speichervorrichtungen, die in parallelen Speicherkanälen organisiert sind, wie etwa 16, 32 oder 64 Flash-Speichervorrichtungen pro Speicherkanal und 8, 16 oder 32 parallele Speicherkanäle. Bei einigen Ausführungsformen umfasst das nichtflüchtige Speicherungsmedium (z. B. die NVM-Vorrichtungen 140, 142, 1) Flash-Speicher des NAND-Typs oder Flash-Speicher des NOR-Typs. Bei anderen Ausführungsformen umfasst das Speicherungsmedium eine oder mehrere andere Arten von nichtflüchtigen Speicherungsvorrichtungen.
-
Die Speicherungsvorrichtung unterhält (506) ein Log (z. B. das Log 226, 2, das manchmal als Replay-FIFO bezeichnet wird) entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host. Bei einigen Ausführungsformen ist das Log eine FIFO(First In First Out)-Warteschlange. Bei einigen Ausführungsformen unterhält die Speicherungsvorrichtung ein einziges Log für die Speicherungsvorrichtung. Bei einigen Ausführungsformen unterhält die Speicherungsvorrichtung für jeden logischen Port (der manchmal als Speicherkanal bezeichnet wird) der Speicherungsvorrichtung ein distinktes Log. Bei einigen Ausführungsformen dient ein Log-Modul (z. B. das Log-Modul 224, 2) zum Unterhalten eines Logs entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host, wie oben mit Bezug auf 2 beschrieben.
-
Bei einigen Ausführungsformen umfasst (508) für Schreibbefehle das Log physische Adressen, in denen Daten in Verbindung mit der Ausführung der Schreibbefehle gespeichert werden. Zum Beispiel umfasst bei einigen Ausführungsformen jeder physische Seiteneintrag im Log eine Die-Nummer, Blocknummer und Seitennummer der Seite, sowie sie physisch geschrieben wird. Bei einigen Ausführungsformen werden die physischen Seiteneinträge in der verschachtelten Reihenfolge, in der sie im Speicherungsmedium (z. B. den NVM-Vorrichtungen 140, 142) geschrieben werden, in dem Log protokolliert.
-
Bei einigen Ausführungsformen umfasst (510) das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl, der Informationen umfasst, die mehrere gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildete logische Adressen identifizieren. Wenn zum Beispiel bei einigen Ausführungsformen ein jeweiliger Entabbildungsbefehl LBA 8, LBA 13 und LBA 63 ent-abbildet, umfasst der Eintrag im Log für den jeweiligen Entabbildungsbefehl Informationen, die LBA 8, LBA 13 und LBA 63 identifizieren. Bei einigen alternativen Ausführungsformen umfasst das Log, wenn die durch den Entabbildungsbefehl ent-abgebildeten logischen Adressen nicht eine einzige Adresse sind und nicht ein einziger Bereich von logischen Adressen sind, mehrere dem Entabbildungsbefehl entsprechende Einträge, wobei jeder Eintrag entweder eine einzelne LBA oder einen Bereich von LBA, die bzw. der durch den Entabbildungsbefehl ent-abgebildet wird bzw. werden, spezifiziert. Zum Beispiel enthält das Log für einen Entabbildungsbefehl, der LBA 8 und die LBA 100–130 ent-abbildet, zwei Einträge, einen für LBA 8 und den anderen für den LBA-Bereich 100–130.
-
Bei einigen Ausführungsformen umfasst (512) das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl, der Informationen enthält, die einen Bereich von gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildeten logischen Adressen identifizieren. Wenn zum Beispiel bei einigen Ausführungsformen ein jeweiliger Entabbildungsbefehl LBA 8 bis LBA 63 ent-abbildet, umfasst der Eintrag im Log für den jeweiligen Entabbildungsbefehl Informationen, die einen Bereich logischer Adressen von LBA 8 bis LBA 63 identifizieren. Bei einigen Ausführungsformen identifiziert der Eintrag im Log den Bereich logischer Adressen durch Identifizierung der ersten ent-abzubildenden LBA und der letzten ent-abzubildenden LBA.
-
Die Speicherungsvorrichtung unterhält (514) eine Abbildungstabelle (z. B. die Übersetzungstabelle 212, 2, und/oder die Abbildungstabelle 402, 4) in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem dem Host verfügbaren logischen Adressenraum in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird. Bei einigen Ausführungsformen dient ein Wartungsmodul (z. B. das Wartungsmodul 230, 2) zum Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem dem Host verfügbaren logischen Adressenraum in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird, wie oben mit Bezug auf 2 beschrieben.
-
Die Speicherungsvorrichtung speichert die Abbildungstabelle auf eingeplante Weise, die von den Entabbildungsbefehlen unabhängig ist (z. B. von Empfangen und/oder Verarbeiten der Entabbildungsbefehle unabhängig ist), in dem nichtflüchtigen Speicher (z. B. der NVM-Vorrichtungen 140, 142, 1) der Speicherungsvorrichtung ab (516). Zum Beispiel speichert bei einigen Ausführungsformen die Speicherungsvorrichtung die Abbildungstabelle (z. B. einen Teil der Abbildungstabelle) periodisch ab (z. B. jede Stunde usw.). Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung die Abbildungstabelle auf eingeplante Weise ab, die nichtperiodisch ist (z. B. um 1:00 Uhr, um 3:30 Uhr und um 6:00 Uhr). Bei einigen Ausführungsformen wird ein Abspeichermodul (z. B. das Abspeichermodul 232, 2) verwendet, um die Abbildungstabelle auf eingeplante Weise, die von den Entabbildungsbefehlen unabhängig ist, in dem nichtflüchtigen Speicher der Speicherungsvorrichtung abzuspeichern, wie oben mit Bezug auf 2 beschrieben.
-
Bei einigen Ausführungsformen umfasst (518) Abspeichern der Abbildungstabelle Speichern eines Positionszeigers auf eine Position im Log im nichtflüchtigen Speicher. Bei einigen Ausführungsformen entspricht eine Position im Log einem Eintrag im Log, der zu verarbeiten ist, wenn die Abbildungstabelle (wie nachfolgend mit Bezug auf Operation 528 beschrieben) wieder aufgebaut wird. Bei einigen Ausführungsformen ist eine Position im Log von einem letzten Eintrag im Log, der einem Teil der Abbildungstabelle entspricht, der vor dem Abspeichern der Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung aktualisiert wird, versetzt. Wenn zum Beispiel Eintrag n der letzte Eintrag im Log war, der in der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher widergespiegelt wird, würde die Position im Log auf Eintrag n + 1 als den nächsten zu verarbeitenden Eintrag zeigen, wenn die Abbildungstabelle wieder aufgebaut wird.
-
Bei einigen Ausführungsformen umfasst (520) Abspeichern der Abbildungstabelle Speichern mehrerer distinkter Teile der Abbildungstabelle in dem nichtflüchtigen Speicher zu distinkten eingeplanten Zeiten. Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung einen Teil (z. B. 10 MB) der Abbildungstabelle periodisch (z. B. jede Stunde usw.). Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung einen Teil der Abbildungstabelle auf eingeplante Weise, die nichtperiodisch ist (z. B. um 1:00 Uhr, um 3:30 Uhr und um 6:00 Uhr). Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung zu einem ersten Zeitpunkt einen ersten Teil der Abbildungstabelle ab, speichert zu einem zweiten Zeitpunkt, der von dem ersten Zeitpunkt distinkt ist (und typischerweise später als dieser ist) einen zweiten Teil der Abbildungstabelle ab, speichert zu einem dritten Zeitpunkt, der von dem ersten Zeitpunkt und dem zweiten Zeitpunkt distinkt ist (und typischerweise später als diese ist) einen dritten Teil der Abbildungstabelle ab usw.
-
Die Speicherungsvorrichtung speichert das Log (z. B. das Log 226, 2) im nichtflüchtigen Speicher (z. B. NVM-Vorrichtungen 140, 142, 1) der Speicherungsvorrichtung ab (522). Bei einigen Ausführungsformen speichert ein Log-Modul (z. B. das Log-Modul 224, 2) das Log im nichtflüchtigen Speicher der Speicherungsvorrichtung ab, wie oben mit Bezug auf 2 beschrieben.
-
Bei einigen Ausführungsformen umfasst (524) Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines Teils des Logs im nichtflüchtigen Speicher (z. B. NVM-Vorrichtungen 140, 142, 1) in Verbindung mit einem Stromversorgungs-Ausfallereignis. Zum Beispiel wird bei einigen Ausführungsformen ein Teil des Logs entsprechend Einträgen, die noch nicht in der abgespeicherten Abbildungstabelle widergespiegelt werden, im nichtflüchtigen Speicher abgespeichert.
-
Bei einigen Ausführungsformen umfasst (526) Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines ersten Teils des Logs im nichtflüchtigen Speicher (z. B. NVM-Vorrichtungen 140, 142, 1), wenn das Log vordefinierte Vollheitskriterien erfüllt, und Abspeichern eines Endteils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis. Zum Beispiel wird bei einigen Ausführungsformen, wenn das Log halbvoll ist, eine erste Hälfte des Logs im nichtflüchtigen Speicher abgespeichert und in Verbindung mit einem Stromversorgungs-Ausfallereignis ein Endteil (z. B. ein Rest des noch nicht abgespeicherten Logs) des Logs im nichtflüchtigen Speicher abgespeichert.
-
Beim Herauffahren der Speicherungsvorrichtung baut die Speicherungsvorrichtung die Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung wieder auf (528). Bei einigen Ausführungsformen baut die Speicherungsvorrichtung die Abbildungstabelle wieder auf, indem die abgespeicherte Abbildungstabelle mit Einträgen aus dem abgespeicherten Log, beginnend an einer abgespeicherten Position im Log (wie oben mit Bezug auf Operation 518 beschrieben), aktualisiert wird und die Abbildungstabelle aktualisiert wird, bis das Ende des Logs erreicht ist. Bei einigen Ausführungsformen umfasst Wiederaufbauen der Abbildungstabelle Erhalten von Block-Metadaten (z. B. um entsprechende logische Adressen für die physischen Adressen im Log zu erhalten). Bei einigen Ausführungsformen dient ein Wiederaufbaumodul (z. B. das Wiederaufbaumodul 234, 2) zum Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung, wie oben mit Bezug auf 2 beschrieben.
-
Obwohl hier die Ausdrücke „erste/r/s”, „zweite/r/s” usw. zur Beschreibung verschiedener Elemente verwendet werden können, versteht sich, dass diese Elemente durch diese Ausdrücke nicht eingeschränkt werden sollten. Die Ausdrücke dienen lediglich zur Unterscheidung eines Elements von einem anderen. Zum Beispiel könnte eine erste Region als eine zweite Region bezeichnet werden und ähnlich eine zweite Region als eine erste Region, ohne die Bedeutung der Beschreibung zu ändern, solange jedes Auftreten der „ersten Region” einheitlich umbenannt wird und jedes Auftreten der „zweiten Region” einheitlich umbenannt wird. Die erste Region und die zweite Region sind beide Regionen, aber sie sind nicht dieselbe Region.
-
Die hier gebrauchte Terminologie dient lediglich zur Beschreibung konkreter Ausführungsformen und soll keine Beschränkung der Ansprüche sein. Wie in der Beschreibung der Ausführungsformen und den angefügten Ansprüchen verwendet, sollen die Singularformen „ein/e” und „der/die/das” auch die Pluralformen umfassen, solange es der Kontext nicht deutlich anders angibt. Außerdem versteht sich, dass der Ausdruck „und/oder”, so wie er hier gebraucht wird, beliebige und alle mögliche(n) Kombinationen eines oder mehrerer der zugeordneten aufgelisteten Posten bedeutet und einschließt. Ferner versteht sich, dass die Ausdrücke „umfasst” und/oder „umfassend”, wenn sie in der vorliegenden Beschreibung verwendet werden, die Anwesenheit angegebener Merkmale, ganzer Zahlen, Schritte, Operationen, Elemente und/oder Komponenten spezifizieren, aber nicht die Anwesenheit oder den Zusatz eines oder mehrerer anderer Merkmale, einer oder mehrerer anderer ganzer Zahlen, eines oder mehrerer anderer Schritte, einer oder mehrerer anderer Operationen, eines oder mehrerer anderer Elemente, einer oder mehrerer anderer Komponenten und/oder Gruppen davon ausschließen.
-
Im vorliegenden Gebrauch ist die Phrase „mindestens eines von A, B und C” als einen oder mehrere der aufgelisteten Posten erfordernd aufzufassen, und diese Phrase lautet auf eine einzige Instanz von A alleine, eine einzige Instanz von B alleine oder eine einzige Instanz von C alleine, schließt aber gleichzeitig Kombinationen der aufgelisteten Posten ein, wie „eines oder mehr von A und eines oder mehr von B ohne irgendwelche von C” und dergleichen.
-
Im vorliegenden Gebrauch kann der Ausdruck „falls” abhängig vom Kontext so aufgefasst werden, dass er „wenn” oder „beim” oder „als Reaktion auf Bestimmen” oder „gemäß einer Bestimmung” oder „als Reaktion auf Detektion”, dass eine angegebene Vorbedingung wahr ist, bedeutet. Ähnlich kann die Phrase „wenn bestimmt wird (dass eine angegebene Vorbedingung wahr ist)” oder „falls (eine angegebene Vorbedingung wahr ist)” oder „wenn (eine angegebene Vorbedingung wahr ist)” abhängig vom Kontext so aufgefasst werden, dass sie „bei Bestimmung” oder „als Reaktion auf Bestimmung” oder „gemäß einer Bestimmung” oder „bei Detektion” oder „als Reaktion auf Detektion”, dass die angegebene Vorbedingung wahr ist, bedeutet.
-
Die obige Beschreibung wurde zur Erläuterung unter Bezugnahme auf spezifische Ausführungsformen beschrieben. Die beispielhaften Besprechungen sollen jedoch nicht erschöpfend sein oder die Ansprüche auf die genaue offenbarte Form beschränken. Im Hinblick auf die obigen Lehren sind viele Modifikationen und Abwandlungen möglich. Die Ausführungsformen wurden gewählt und beschrieben, um Prinzipien des Betriebs und praktischer Anwendungen am besten zu erläutern, um dadurch andere Fachleute zu befähigen.