-
HINTERGRUND
-
Nichtflüchtiger Flash-Speicher hat eine begrenzte Lebensdauer. Die Lebensdauer des Flash-Speichers kann einer Anzahl von Programmier-Lösch-Zyklen (engl. program-erase P/E) entsprechen, die der Flash-Speicher ertragen kann. Um die im Flash-Speicher gespeicherten Benutzerdaten vor Beschädigung zu schützen, können Paritätsdaten generiert und zusammen mit den Benutzerdaten gespeichert werden, um die Fehlererkennung und/oder -korrektur zu erleichtern. Wenn eine höhere Kodier-Rate zur Kodierung von Daten verwendet wird, werden weniger Paritätsdaten erzeugt und gespeichert. Da weniger Paritätsdaten gespeichert werden, wenn die höhere Kodier-Rate verwendet wird, kann die höhere Kodier-Rate eine höhere Speicherkapazität des Flash-Speichers ermöglichen. Wird dagegen eine niedrigere Kodier-Rate verwendet, werden mehr Paritätsdaten erzeugt, um die Benutzerdaten vor Fehlern zu schützen, und somit steht weniger Speicherkapazität des Flash-Speichers zur Verfügung.
-
ZUSAMMENFASSUNG
-
Es werden ein System und ein Verfahren zur Umschaltung der Kodier-Rate bzw. Code-Rate für ein Datenspeichersystem bereitgestellt. Gemäß einigen Ausführungsformen umfasst das Verfahren das Einstellen einer Kodier-Rate in einer Datenspeichervorrichtung bzw. in einem Datenspeichergerät auf eine erste Kodier-Rate zum Kodieren von Daten, die in einen nichtflüchtigen Speicher der Datenspeichervorrichtung geschrieben werden sollen, das Empfangen eines Host-Befehls an der Datenspeichervorrichtung, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt, und das Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate am angegebenen Schaltpunkt.
-
Gemäß einigen Ausführungsformen umfasst eine Datenspeichervorrichtung einen nichtflüchtigen Speicher und eine(n) mit dem nichtflüchtigen Speicher gekoppelte(n) Controller bzw. Steuerung.
-
Der Controller ist so konfiguriert, dass er: eine Kodier-Rate in der Datenspeichervorrichtung auf eine erste Kodier-Rate zum Kodieren von in den nichtflüchtigen Speicher zu schreibenden Daten einstellt, an der Datenspeichervorrichtung einen Host-Befehl empfängt, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt, feststellt, dass der angezeigte Schaltpunkt im nichtflüchtigen Speicher erreicht wurde, und die eingestellte Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate als Reaktion auf die Feststellung, dass der angezeigte Schaltpunkt erreicht wurde, umschaltet.
-
Nach einigen Ausführungsformen umfasst ein dauerhaftes bzw. nichtflüchtiges maschinenlesbares Medium Anweisungen darauf, die bei ihrer Ausführung bewirken, dass ein Kodierungsmodul ein Verfahren durchführt. In diesen Ausführungsformen umfasst das Verfahren das Einstellen einer Kodier-Rate auf eine erste Kodier-Rate zum Kodieren von Daten, die in den nichtflüchtigen Speicher einer Datenspeichervorrichtung geschrieben werden sollen, das Empfangen eines Host-Befehls, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate angibt, das Umschalten der eingestellten Kodier-Rate am angegebenen Schaltpunkt von der ersten Kodier-Rate auf die zweite Kodier-Rate, das Lesen und Dekodieren von mit der ersten Kodier-Rate Kodierten Daten aus dem nichtflüchtigen Speicher als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate, das Kodieren der gelesenen und dekodierten Daten mit der zweiten Kodier-Rate und das Schreiben der mit der zweiten Kodier-Rate kodierten Daten in den nichtflüchtigen Speicher.
-
Gemäß einigen Implementierungen umfasst eine Datenspeichervorrichtung einen nichtflüchtigen Speicher, Mittel zum Einstellen einer Kodier-Rate in der Datenspeichervorrichtung auf eine erste Kodier-Rate zum Kodieren von in den nichtflüchtigen Speicher zu schreibenden Daten, Mittel zum Empfangen eines Host-Befehls, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt, an der Datenspeichervorrichtung, Mittel zum Bestimmen bzw. Feststellen, dass der angezeigte Schaltpunkt im nichtflüchtigen Speicher erreicht wurde, und Mittel zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate als Reaktion auf die Feststellung, dass der angezeigte Schaltpunkt erreicht wurde.
-
Es ist zu verstehen, dass andere Konfigurationen der gegenständlichen Technologie für die Fachperson aus der folgenden ausführlichen Beschreibung, in der verschiedene Konfigurationen der gegenständlichen Technologie zur Veranschaulichung gezeigt und beschrieben werden, leicht ersichtlich sind. Wie sich herausstellen wird, ist die betreffende Technologie zu anderen und unterschiedlichen Konfigurationen fähig bzw. nutzbar und ihre verschiedenen Details können in verschiedenen anderen Aspekten modifiziert werden, ohne den Anwendungsbereich der gegenständlichen Technologie zu verlassen. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als illustrativ und nicht als einschränkend anzusehen.
-
Figurenliste
-
Systeme und Methoden, die die verschiedenen Merkmale des Themas Technik verkörpern, werden anhand der folgenden Zeichnungen beschrieben, in denen:
- 1 ein Beispiel eines nichtflüchtigen Flash-Speichersystems gemäß Aspekten der gegenständlichen Technologie veranschaulicht;
- 2 eine beispielhafte Grafik zeigt, die Schaltpunkte für eine Kodier-Rate für verschiedene Situationen veranschaulicht;
- 3 ein beispielhaftes Diagramm zeigt, das die im Controller des nichtflüchtigen Flash-Speichersystems enthaltenen Komponenten nach Aspekten der gegenständlichen Technologie darstellt;
- 4 ein Flussdiagramm eines Beispielprozesses zur Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach Aspekten der gegenständlichen Technologie zeigt;
- 5 ein Flussdiagramm eines Beispielprozesses zur Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach Aspekten der gegenständlichen Technologie zeigt.
-
DETAILLIERTE BESCHREIBUNG
-
Die nachfolgende detaillierte Beschreibung ist als Beschreibung verschiedener Ausführungsformen der erfindungsgemäßen Technologie gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die betreffende Technologie praktiziert werden kann. Die beigefügten Zeichnungen sind hiervon umfasst und sind Teil der detaillierten Beschreibung. Die detaillierte Beschreibung enthält spezifische Details, um ein gründliches Verständnis der betreffenden Technologie zu ermöglichen. Es wird jedoch für Fachpersonen offensichtlich sein, dass die gegenständliche Technologie auch ohne diese spezifischen Details angewandt bzw. umgesetzt werden kann. In einigen Fällen werden wohlbekannte Strukturen und Komponenten in Form von Blockdiagrammen dargestellt, um die Konzepte der erfindungsgemäßen Technologie nicht zu verdecken. Ähnliche Komponenten werden zum besseren Verständnis mit identischen Bezugszeichen gekennzeichnet.
-
Datenspeichersysteme, wie z.B. Festkörperlaufwerke bzw. Solid-State-Laufwerke, können einen oder mehrere Controller enthalten, die mit einem oder mehreren nichtflüchtigen Flash-Speicher-Arrays gekoppelt sind. Gespeicherte Daten können mit Fehlern behaftet sein, z.B. aufgrund von Lese-/Schreibstörungen, Verlust von Datenwahrung bzw. Datenerhaltung und/oder Verschlechterung der Lebensdauer bzw. Widerstandsfähigkeit. Die Datenwahrung kann z.B. die Fähigkeit des Flash-Speichers sein, gespeicherte Informationen über einen bestimmten Zeitraum hinweg zu bewahren, und kann somit einer Zeitspanne entsprechen, in der gespeicherte Daten zuverlässig aus dem Flash-Speicher abgerufen werden können. Die Lebensdauer kann einer Anzahl von Programmier-Lösch-Zyklen (P/E) entsprechen, die der Flash-Speicher erfahren bzw. ertragen kann, bevor eine Fehlerrate einen Schwellenwert überschreitet oder die Daten nicht mehr lesbar sind. Datenspeichersysteme können einen oder mehrere Fehlerkorrektur- oder Fehler-Kodierungsmechanismen verwenden, um Fehler in den gespeicherten Daten zu erkennen und/oder zu korrigieren. Beispielsweise können beim Schreiben von Benutzerdaten die Benutzerdaten mit Paritätsdaten kodiert und in den Flash-Speicher-Arrays gespeichert werden. Wenn in den Flash-Speicher-Arrays gespeicherte Benutzerdaten abgerufen werden, können Paritätsdaten, die den Benutzerdaten zugeordnet sind, abgerufen und zur Bestimmung der Integrität der abgerufenen Benutzerdaten verwendet werden. Wenn ein oder mehrere Fehler in den abgerufenen Benutzerdaten entdeckt werden, können diese Fehler korrigiert werden.
-
Die Generierung von Paritätsdaten kann mit einem erheblichen System-Overhead bzw. Überbau verbunden sein, z.B. mit einem Overhead an Verarbeitungszeit, Systemressourcen und/oder Systemkomponenten (z.B. die Notwendigkeit, zusätzliche Hardware, Firmware usw. zu verwenden). Darüber hinaus kann die Speicherung von Paritätsdaten (z.B. in einem Flash-Speicher-Array) den für die Speicherung von Benutzerdaten verfügbaren Speicherplatz reduzieren. Dementsprechend kann es für ein Datenspeichersystem vorteilhaft sein, mehrere verschiedene Kodier-Raten, Codelängen und/oder unterschiedliche Kodierungs-Durchsatzgeschwindigkeiten zu unterstützen. So kann ein Datenspeichersystem beispielsweise Daten mit einer höheren Kodier-Rate kodieren, so dass weniger Paritätsdaten erzeugt und gespeichert werden, wenn ein Flash-Speicher zu Beginn des Lebenszyklus steht und somit eine ausreichende Datenwahrung und/oder Ausdauer bietet. Wenn sich der Flash-Speicher mit der Zeit abnutzt, kann das Datenspeichersystem automatisch auf eine niedrigere Kodier-Rate umschalten, so dass mehr Paritätsdaten erzeugt werden, um die Benutzerdaten vor Fehlern zu schützen. Daher kann das Datenspeichersystem so vorkonfiguriert werden, dass es automatisch auf eine niedrigere Kodier-Rate umschaltet, wenn ein vordefinierter Schaltpunkt im Lebenszyklus des Flash-Speichers erreicht wird. In bestimmten Situationen, z.B. wenn an einem bestimmten Punkt im Lebenszyklus des Flash-Speichers die tatsächliche Fehlermenge geringer ist als die erwartete Fehlermenge, ist ein solches Umschalten der Kodier-Rate am vordefinierten Schaltpunkt unter Umständen nicht wünschenswert.
-
In einigen Fällen kann der Flash-Speicher offline genommen (z.B. von einer Stromquelle getrennt) werden. So kann der Flash-Speicher z.B. ausgesteckt und in einem Lagerraum aufbewahrt werden. Die Zeitdauer, während der der Flash-Speicher deaktiviert ist, kann als Offline-Dauer bezeichnet werden. Während der Offline-Dauer kann sich die Integrität der im Flash-Speicher gespeicherten Daten aufgrund von Ladungsverlusten im Laufe der Zeit verschlechtern, was sich negativ auf die Datenwahrung auswirken kann. Wenn also eine lange Offline-Dauer erwartet wird, kann eine umfangreichere Fehlerkorrektur gewünscht werden. Wenn beispielsweise eine lange Offline-Dauer erwartet wird, kann die Verwendung von mehr Paritätsdaten erwünscht sein, um eine höhere Fehlerkorrekturfähigkeit zu erreichen. Daher kann sich eine erwartete Offline-Dauer auch auf einen optimalen Umschaltpunkt auswirken, um auf eine niedrigere Kodier-Rate umzuschalten.
-
Ausführungsbeispiele der erfindungsgemäßen Technologie sind auf ein Datenspeichersystem gerichtet, das dazu eingerichtet ist, eine Kodier-Rate auf der Grundlage eines Host-Befehls von einem Host-System anzupassen. Beispielsweise kann ein Host-Befehl an einen Controller des Datenspeichersystems bereitgestellt werden, so dass der Controller auf der Grundlage des Host-Befehls von einer Kodier-Rate auf eine andere Kodier-Rate umschalten kann. Dementsprechend muss ein Schaltpunkt der Kodier-Rate nicht auf einen vordefinierten Schaltpunkt beschränkt sein, sondern kann durch einen Host-Befehl angezeigt werden, was eine Flexibilität bei der Steuerung des Kodier-Raten-Schalters auf der Grundlage des Host-Befehls bereitstellt.
-
1 zeigt ein Beispiel für ein nichtflüchtiges Flash-Speichersystem 100 gemäß Aspekten der erfindungsgemäßen Technologie. Wie gezeigt, umfasst das Datenspeichersystem 100 (z.B. ein Solid-State-Laufwerk) einen Controller 130 und einen Flash-Speicher 150. Der Flash-Speicher 150 kann einen nichtflüchtigen Speicher umfassen, wie integrierte Flash-Schaltungen, NAND-Flash-Speicher (z.B. Single-Level-Cell (SLC)-Speicher, Multi-Level-Cell (MLC)-Speicher oder eine beliebige Kombination davon), NOR-Flash-Speicher, EEPROM-Flash-Speicher, andere diskrete nichtvolatile Flash-Speicherchips (flash NVM chips) oder eine beliebige Kombination davon. Das Datenspeichersystem 100 kann ferner andere Speichertypen umfassen.
-
Der Controller 130 kann so konfiguriert sein, dass er Daten und/oder Speicherzugriffsbefehle von einer Speicherschnittstelle 112 (z.B. einem Gerätetreiber) eines Host-Systems 110 empfängt. Die von der Speicherschnittstelle 112 übermittelten Speicherzugriffsbefehle können Daten-Schreib- und Daten-Lesebefehle des Host-Systems 110 umfassen. Lese- und Schreibbefehle können eine logische Adresse (z. B. logische Blockadressen oder LBAs) angeben, die für den Zugriff auf das Datenspeichersystem verwendet wird 100. Der Controller 130 kann die empfangenen Befehle im Flash-Speicher 150 ausführen.
-
Das Datenspeichersystem 100 kann die vom Hostsystem 110 übermittelten Daten speichern. Mit anderen Worten, das Datenspeichersystem 100 kann als Speicher für das Hostsystem 110 dienen. Um diese Funktion zu erleichtern, kann der Controller 130 eine logische Schnittstelle implementieren bzw. umsetzen. Die logische Schnittstelle kann dem Hostsystem 110 den Speicher des Datenspeichersystems als einen Satz logischer Adressen (z.B. eine zusammenhängende Adresse) anbieten, in denen Benutzerdaten gespeichert werden können. Intern kann der Controller 130 logische Adressen auf verschiedene physikalische Stellen bzw. Orte oder Adressen im Flash-Speicher 150 und/oder anderen Speichermodulen abbilden, bzw. zuordnen oder mappen. Der Controller 130 umfasst unter anderem einen Speicher 132. Der Speicher 132 kann einen flüchtigen Speicher, wie z.B. einen dynamischen Speicher mit zufälligem Zugriff bzw. dynamic random-access memory(DRAM), einen statischen Speicher mit zufälligem Zugriff bzw. static random-access memory (SRAM) oder eine beliebige Kombination davon umfassen. Der Controller 130 ist so konfiguriert, dass er Daten im Flash-Speicher 150 speichert und aus diesem abruft, die Integrität der aus dem nichtflüchtigen Speicherarray abgerufenen Daten bestimmt, bei Bedarf eine Fehlerkorrektur der abgerufenen Daten vornimmt und eine Übertragung von Daten zwischen dem Datenspeichersystem 100 und dem Host-System 110 durchführt.
-
Da der Flash-Speicher 150 sich abnutzen und somit mit der Zeit fehleranfälliger werden kann, kann, wie oben diskutiert, später im Lebenszyklus des Flash-Speichers 150 eine niedrigere Kodier-Rate bevorzugt werden, um mehr Schutz vor Fehlern zu bieten. Daher kann der Controller 130 so konfiguriert werden, dass er Daten mit einer ersten Kodier-Rate kodiert, wenn sich der Flash-Speicher 150 am Beginn des Lebenszyklus befindet, und er kann auf eine zweite Kodier-Rate umschalten, um Daten zu kodieren, wenn sich der Flash-Speicher 150 später im Lebenszyklus befindet, wobei die zweite Kodier-Rate niedriger als die erste Kodier-Rate sein kann. Der Lebenszyklus des Flash-Speichers 150 kann einer Anzahl von P/E-Zyklen entsprechen. Daher kann der Controller 130 in einem Aspekt so konfiguriert werden, dass die erste Kodier-Rate früh im Lebenszyklus genutzt wird, bevor die Anzahl der P/E-Zyklen einen P/E-Zyklus-Schwellenwert erreicht, und dass auf die zweite Kodier-Rate umgeschaltet wird, wenn die Anzahl der P/E-Zyklen den P/E-Zyklus-Schwellenwert erreicht. Der P/E-Zyklus-Schwellenwert kann einen Umschaltpunkt zum Umschalten von der ersten Kodier-Rate auf die zweite Kodier-Rate anzeigen.
-
Ein optimaler Umschaltpunkt zum Umschalten von der höheren auf die niedrigere Kodier-Rate kann davon abhängen, ob das Datenspeichersystem 100 online ist (z.B. in einem Zyklusmodus) oder offline genommen werden soll (z.B. in einem Retentions- bzw. Wahrungsmodus) sowie von einer erwarteten Offline-Dauer, die eine Zeitdauer angibt, während der das Datenspeichersystem 100 offline geht. Während der Offline-Dauer, wenn das Datenspeichersystem 100 offline ist (z.B. im Retentions-Modus), kann es beim Flash-Speicher 150 zu einem Ladungsleck kommen, das die Integrität der im nichtflüchtigen Flash-Speicher gespeicherten Daten verschlechtern kann. Daher kann ein optimaler Schaltpunkt für eine Situation, in der das Datenspeichersystem 100 für eine gewisse Dauer offline geht, früher im Lebenszyklus liegen als ein optimaler Schaltpunkt für eine Situation, in der das Datenspeichersystem 100 online bleibt.
-
2 zeigt einen beispielhafte Graphen 200, der die Schaltpunkte einer Kodier-Rate für verschiedene Situationen veranschaulicht. Die x-Achse repräsentiert eine Anzahl von P/E-Zyklen und die y-Achse eine Bitfehlerrate (BER). Mit zunehmender Anzahl von P/E-Zyklen steigt die Bitfehlerrate. An einem Punkt, an dem die Bitfehlerrate einen Fehlerschwellenwert überschreitet, wird die Kodier-Rate von einer ersten Kodier-Rate auf eine zweite Kodier-Rate umgeschaltet, wobei die zweite Kodier-Rate niedriger als die erste Kodier-Rate ist. Die durchgezogene Kurve stellt die Bitfehlerrate in einem zyklischen bzw. dauerbetriebenen Fall dar, bei dem das Speichergerät online bleibt, ohne offline zu gehen. Die gepunktete Kurve stellt die Bitfehlerrate in einem Retentions- bzw. Wahrungsfall dar, bei dem das Speichergerät für eine gewisse Offline-Dauer (z.B. 3 Monate) offline genommen werden soll. Die Bitfehlerrate im Retentionsfall wird wahrscheinlich schneller ansteigen als die des Zyklusmodus, wenn die Anzahl der P/E-Zyklen zunimmt (z.B. aufgrund des Ladungslecks, das durch das Abschalten während der Offline-Dauer verursacht wird). Daher wird die Bitfehlerrate im Retentionsfall die Fehlerschwelle schneller erreichen als im Zyklusfall. Daher sollte der Wechsel von der ersten Kodier-Rate zur zweiten Kodier-Rate früher im Lebenszyklus des Speichers erfolgen, wenn das Speichergerät voraussichtlich für eine gewisse Offline-Dauer offline geht. In dem Graphen 200 liegt der Schaltpunkt für den Retentionsfall bei Punkt 1, während der Schaltpunkt für den zyklischen Fall bei Punkt 2 liegt. Wenn die Anzahl der P/E-Zyklen im Retentionsfall den Punkt 1 erreicht, wird die Kodier-Rate auf die zweite Kodier-Rate umgeschaltet, die niedriger ist als die erste Kodier-Rate. Im Zyklusfallwird die Kodier-Rate auf die zweite Kodier-Rate umgeschaltet, die niedriger als die erste Kodier-Rate ist, wenn die Anzahl der P/E-Zyklen den Punkt 2 erreicht.
-
Um die Möglichkeit zu berücksichtigen, dass das Datenspeichersystem 100 offline geht, kann das Datenspeichersystem 100 mit einem P/E-Zyklus-Schwellenwert für einen optimalen Schaltpunkt für eine Situation vorkonfiguriert werden, in der das Datenspeichersystem 100 für eine vordefinierte Offline-Dauer (z.B. 3 Monate) offline geht. Wenn jedoch nicht erwartet wird, dass das Datenspeichersystem 100 offline geht, kann der optimale Schaltpunkt später im Lebenszyklus liegen als der vorkonfigurierte Schaltpunkt und somit einer Anzahl von P/E-Zyklen entsprechen, die größer als der vorkonfigurierte P/E-Zyklus-Schwellenwert ist. Wenn andererseits erwartet wird, dass das Datenspeichersystem 100 für eine längere Dauer als die vordefinierte Offline-Dauer offline geht, kann der optimale Schaltpunkt früher im Lebenszyklus liegen als der vorkonfigurierte Schaltpunkt und somit einer Anzahl von P/E-Zyklen entsprechen, die kleiner als der vorkonfigurierte P/E-Zyklus-Schwellenwert ist. Daher kann der Controller 130 mit dem vorkonfigurierten P/E-Zyklus-Schwellenwert möglicherweise nicht in der Lage sein, den Kodier-Raten-Wechsel bei einem optimalen Schaltpunkt durchzuführen, um von der höheren Kodier-Rate auf die niedrigere Rate umzuschalten, insbesondere wenn das Datenspeichersystem 100 für eine Dauer offline geht, die kürzer oder länger als die vordefinierte Offline-Dauer ist.
-
Die erfindungsgemäße Technologie ermöglicht es dem Controller 130, einen Host-Befehl zu empfangen, der einen Schaltpunkt anzeigt, so dass der Controller 130 die Kodier-Rate an dem vom Host-Befehl angegebenen Schaltpunkt umschalten kann. Wenn ein Benutzer beispielsweise weiß, dass das Datenspeichersystem 100 auf unbestimmte Zeit online bleibt, kann er einen Host-Befehl eingeben, der einen Schaltpunkt anzeigt, der einem späteren Zeitpunkt im Lebenszyklus entspricht als der vorkonfigurierte Schaltpunkt. Wenn der Benutzer andererseits weiß, dass das Datenspeichersystem 100 für einen längeren Zeitraum offline sein wird (z.B. länger als die vordefinierte Offline-Dauer), kann der Benutzer einen Host-Befehl eingeben, der einen Schaltpunkt anzeigt, der einem früheren Zeitpunkt im Lebenszyklus entspricht als der vorkonfigurierte Schaltpunkt. Auf der Grundlage des Host-Befehls kann der Controller 130 den Kodier-Raten-Wechsel an dem vom Host-Befehl angegebenen Schaltpunkt ausführen. Wenn der Host-Befehl empfangen wird, muss der Controller 130 daher nicht den vorkonfigurierten Schaltpunkt nutzen, sondern kann stattdessen den durch den Host-Befehl angegebenen Schaltpunkt verwenden.
-
In einer oder mehreren Ausführungsformen, können mehr als zwei Kodier-Raten und mehr als ein Schaltpunkt verwendet werden. Zum Beispiel kann der Controller 130 die Verwendung von vier bis acht Kodier-Raten während der Lebensdauer des Datenspeichersystems 100 durchlaufen.
-
Wenn jeder einer Folge von Schaltpunkten erreicht wird, kann der Controller 130 schrittweise auf die Nutzung der nächsthöheren der verfügbaren Kodier-Raten für das Datenspeichersystem 100 umschalten. Der Host-Befehl kann mehrere Schaltpunkte zum Umschalten zwischen den Kodier-Raten angeben. Wenn z.B. eine erste, zweite, dritte und vierte Kodier-Rate verfügbar ist, kann der Host-Befehl drei Schaltpunkte angeben. So kann bei Erreichen eines ersten Schaltpunktes von der ersten Kodier-Rate auf die zweite Kodier-Rate, die höher als die erste Kodier-Rate ist, umgeschaltet werden, bei Erreichen eines zweiten Schaltpunktes von der zweiten Kodier-Rate auf die dritte Kodier-Rate, die höher als die zweite Kodier-Rate ist, und bei Erreichen eines dritten Schaltpunktes von der dritten Kodier-Rate auf die vierte Kodier-Rate, die höher als die dritte Kodier-Rate ist, umgeschaltet werden. Der Host-Befehl kann mehrere Kodier-Raten aus einer Gesamtzahl verfügbarer Kodier-Raten und mehrere Schaltpunkte zum Umschalten zwischen den angegebenen Kodier-Raten angeben. Wenn der Host-Befehl beispielsweise drei Kodier-Raten aus fünf verfügbaren Kodier-Raten und zwei Schaltpunkte anzeigt, kann die Kodier-Rate von einer ersten Kodier-Rate auf eine zweite Kodier-Rate umgeschaltet werden, wenn ein erster Schaltpunkt erreicht wird, und von der zweiten Kodier-Rate auf eine dritte Kodier-Rate, wenn ein zweiter Schaltpunkt erreicht wird. Alternativ kann der Host-Befehl nur die nächste Kodier-Rate und den zugehörigen Schaltpunkt in einer Folge von Kodier-Raten und zugehörigen Schaltpunkten angeben.
-
Der Flash-Speicher 150 kann mehrere Flash-Speicherchips oder Würfel enthalten, wobei jeder Chip oder Würfel mehrere Flash-Speicherblöcke umfasst. Die Flash-Speicherchips oder -Würfel können jeweils unterschiedliche Bitfehlerratencharakteristiken bei unterschiedlichen P/E-Zykluszahlen über die Lebensdauer des Flash-Speichers 150 aufweisen. Darüber hinaus können Gruppen von Flash-Speicherblöcken oder einzelne Flash-Speicherblöcke bei unterschiedlichen P/E-Zyklenzahlen ebenfalls unterschiedliche Bitfehlerraten-Charakteristiken aufweisen. Der Controller 130 kann unterschiedliche Kodier-Raten für verschiedene Teile des Flash-Speichers 150 verwenden, wie z.B. verschiedene Chips, Flash-Speicherblöcke oder Gruppen von Flash-Speicherblöcken. Jeder Teil des Flash-Speichers 150 kann eine eigene Sequenz von KodierRaten und/oder Schaltpunkten haben, die die unterschiedlichen Eigenschaften bezüglich der Bitfehlerrate berücksichtigen. Alternativ können alle Teile die gleiche Sequenz von Kodier-Raten und Schaltpunkten verwenden, und der Controller 130 kann zwischen den Kodier-Raten für jeden Teil umschalten, wenn der jeweilige Teil einen Schaltpunkt erreicht. In Implementierungen, in denen verschiedene Teile des Flash-Speichers 150 unterschiedliche Kodier-Raten und/oder Schaltpunkte verwenden können, kann der Host-Befehl außerdem den Teil des Flash-Speichers 150 angeben, für den die angegebene Kodier-Rate oder der Schaltpunkt gilt.
-
3 zeigt ein Beispieldiagramm 300, das im Controller 130 des nichtflüchtigen Flash-Speichersystems 100 enthaltene Komponenten nach Aspekten der erfindungsgemäßen Technologie darstellt. Der Controller 130 kann eine Kodier-Raten-Verwaltungskomponente 302, eine Lese-/Schreib-Verwaltungskomponente 304, einen Decoder bzw. Dekodierer 306 und einen Encoder bzw. Kodierer 308 enthalten. Eine oder mehrere der im Controller 130 enthaltenen Komponenten können mit dem Speicher 132 kommunizieren, um Daten für verschiedene Operationen des Controllers 130 vorübergehend zu speichern. Um unterschiedliche Kodier-Raten zu ermöglichen, können der Kodierer 308 und/oder der Dekodierer 306 einstellbar sein, um unterschiedliche Kodier-Raten einzustellen. Alternativ kann der Kodierer 308 verschiedene Kodierer für unterschiedliche Kodierraten enthalten und/oder der Dekodierer 306 verschiedene Dekodierer für unterschiedliche Kodierraten.
-
Die Kodier-Raten-Verwaltungskomponente 302 kann die Kodier-Rate im Datenspeichersystem 100 zunächst auf eine erste Kodier-Rate für die Kodierung der in den Flash-Speicher zu schreibenden Daten 150 einstellen. So kann der Kodierer 308 zunächst Daten mit der ersten Kodier-Rate kodieren, während die Lese-/Schreib-Verwaltungskomponente 304 die mit der ersten Kodier-Rate kodierten Daten in den Flash-Speicher 150 schreiben kann. Beispielsweise kann die Kodier-Rate zu Beginn des Lebenszyklus auf die höhere Kodier-Rate eingestellt werden, da der Flash-Speicher 150 eine ausreichende Datenwahrung und/oder Widerstandsfähigkeit bieten kann.
-
Die Kodier-Raten-Verwaltungskomponente 302 kann einen Host-Befehl empfangen, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten auf eine zweite Kodier-Rate angibt. Das Host-System 110 kann den Host-Befehl an den Controller 130 senden, so dass die Kodier-Raten-Verwaltungskomponente 302 den Host-Befehl empfangen kann. Der Host-Befehl kann von einem Benutzer eingegeben werden. Wenn der Benutzer beispielsweise Kenntnis von einer erwarteten Offline-Dauer des Datenspeichersystems 100 hat, kann der Benutzer den Host-Befehl auf der Grundlage der erwarteten Offline-Dauer so einstellen, dass er einen Schaltpunkt angibt, der für das Datenspeichersystem 100 mit der erwarteten Offline-Dauer optimal ist. Daher kann der Host-Befehl an das Datenspeichersystem 100 gesendet werden, um den Schaltpunkt auf der Grundlage verschiedener Situationen anzupassen. Wenn die Kodier-Raten-Verwaltungskomponente 302 den Host-Befehl empfängt, verwendet die Kodier-Raten-Verwaltungskomponente 302 möglicherweise nicht den vorkonfigurierten Schaltpunkt, da die Kodier-Raten-Verwaltungskomponente 302 den vom Host-Befehl angegebenen Schaltpunkt verwendet.
-
Die Kodier-Raten-Verwaltungskomponente 302 kann feststellen, ob der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht ist. Wenn die Kodier-Raten-Verwaltungskomponente 302 feststellt, dass der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht wurde, kann die Kodier-Raten-Verwaltungskomponente 302 die eingestellte Kodier-Rate am angezeigten Schaltpunkt von der ersten Kodier-Rate auf die zweite Kodier-Rate umschalten. Die erste Kodier-Rate kann höher als die zweite Kodier-Rate sein, und somit kann die erste Kodier-Rate die höhere Kodier-Rate und die zweite Kodier-Rate die niedrigere Kodier-Rate sein. Durch Umschalten auf die niedrigere Rate am angegebenen Schaltpunkt kann die Kodier-Raten-Verwaltungskomponente 302 möglicherweise Fehler reduzieren und den zeitbedingten Verschleiß des Flash-Speichers 150 ausgleichen bzw. kompensieren.
-
Der Schaltpunkt kann ein P/E-Zyklus-Schwellenwert sein. Die Kodier-Raten-Verwaltungskomponente 302 kann feststellen, dass der angegebene Schaltpunkt erreicht ist, wenn die Kodier-Raten-Verwaltungskomponente 302 feststellt, dass eine P/E-Zykluszahl des Flash-Speichers 150 den P/E-Zyklus-Schwellenwert erfüllt. Der P/E-Zyklus-Schwellenwert kann auf einer Offline-Dauerspezifikation des Datenspeichersystems 100 basieren.
-
In einer oder mehreren Implementierungen kann der angegebene Schaltpunkt der Zeitpunkt sein, zu dem der Host-Befehl empfangen wird. Der Host-Befehl kann beispielsweise anzeigen, dass der Wechsel von der ersten Kodier-Rate zur zweiten Kodier-Rate beim Empfang des Host-Befehls erfolgt. Auf diese Weise kann die Kodier-Raten-Verwaltungskomponente 302 die eingestellte Kodier-Rate unmittelbar nach Empfang des Host-Befehls von der ersten auf die zweite Kodier-Rate umschalten.
-
Wenn die Kodier-Rate von der höheren auf die niedrigere Rate umgeschaltet wird, kann es vorteilhaft sein, die niedrigere Kodier-Rate zu verwenden, um Daten, die in den Flash-Speicher 150 geschrieben wurden, in Erwartung eines bevorstehenden Offline-Zustands des Datenspeichersystems 100 neu zu schreiben. Bevor das Datenspeichersystem 100 beispielsweise abgeschaltet wird, kann es vorteilhaft sein, die niedrigere Kodier-Rate zu verwenden, um in den Flash-Speicher 150 geschriebene Daten neu zu schreiben, da das Schreiben der Daten mit der niedrigeren Kodier-Rate Fehler minimieren kann, die dadurch verursacht werden, dass das Datenspeichersystem 100 offline ist. Wenn also die eingestellte Kodier-Rate am angegebenen Schaltpunkt auf die zweite Kodier-Rate umgeschaltet wird, kann die Lese-/Schreib-Verwaltungskomponente 304 mit der ersten Kodier-Rate kodierte Daten aus dem Flash-Speicher 150 lesen und der Dekoder 306 kann die gelesenen Daten dekodieren. Anschließend kann der Kodierer 308 die dekodierten Daten mit der zweiten Kodier-Rate kodieren. Dann kann die Lese-/Schreib-Verwaltungskomponente 304 die mit der zweiten Kodier-Rate kodierten Daten in den Flash-Speicher 150 schreiben. Durch die Kodierung der Daten mit der zweiten Rate, die niedriger als die erste Rate ist, und durch das erneute Schreiben der kodierten Daten können Fehler, die durch die Offline-Stellung des Datenspeichersystems 100 verursacht werden, reduziert werden, wenn das Datenspeichersystem 100 offline geht.
-
4 zeigt ein Flussdiagramm eines Beispielprozesses bzw. Beispielverfahrens 400 für die Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach verschiedenen Aspekten der erfindungsgemäßen Technologie. Zu Zwecken der Erläuterung werden hier die verschiedenen Blöcke des Beispielprozesses 400 mit Bezug auf die hier beschriebenen Komponenten und/oder Prozesse beschrieben. Der eine oder die mehreren Blöcke des Prozesses bzw. Verfahrens 400 können z.B. von einem oder mehreren Prozessoren implementiert werden, darunter z.B. der Controller 130 aus 1 oder eine oder mehrere Komponenten oder Prozessoren des Controllers 130. In einigen Ausgestaltungen können ein oder mehrere der Blöcke getrennt von anderen Blöcken und von einem oder mehreren verschiedenen Prozessoren oder Controllern implementiert bzw. durchgeführt werden. Ferner werden zur Erläuterung die Blöcke des Beispielprozesses 400 als seriell oder linear auftretend beschrieben. Mehrere Blöcke des Beispielprozesses 400 können jedoch auch parallel auftreten. Darüber hinaus müssen die Blöcke des Beispielprozesses 400 nicht in der gezeigten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des Beispielprozesses 400 müssen nicht ausgeführt werden. Die Blöcke des Prozesses 400 oder eine Teilmenge davon können auch für jedes Speichergerät und/oder zur Unterstützung mehrerer Codelängen ausgeführt werden, je nach den verschiedenen Betriebsbedingungen des/der Speichergeräte(s).
-
In dem abgebildeten Beispiel setzt ein System entsprechend der erfindungsgemäßen Technologie eine Kodier-Rate in einem Datenspeichergerät auf eine erste Kodier-Rate zur Kodierung von Daten, die in den nichtflüchtigen Speicher des Datenspeichers geschrieben werden sollen (402). An der Datenspeichervorrichtung (z.B. Datenspeichersystem 100) wird ein Host-Befehl empfangen, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt (404). In einigen Aspekten bzw. Ausführungsformen kann die erste Kodier-Rate höher sein als die zweite Kodier-Rate.
-
In einer oder mehreren Ausgestaltungen kann der Schaltpunkt der Zeitpunkt sein, zu dem der Host-Befehl empfangen wird. In einer oder mehreren Implementierungen kann der Schaltpunkt ein P/E-Zyklus-Schwellenwert sein, und es kann festgestellt werden, dass der angegebene Schaltpunkt erreicht wurde, indem festgestellt wird, dass eine P/E-Zykluszahl des nichtflüchtigen Flash-Speichers 150 den P/E-Zyklus-Schwellenwert erfüllt. Der P/E-Zyklus-Schwellenwert kann auf einer Spezifikation einer Offline-Dauer des Datenspeichergeräts basieren.
-
Das erfindungsgemäße System stellt fest, ob der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht ist (406). Wird festgestellt, dass der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht ist, wird die eingestellte Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate umgeschaltet (408). Wird festgestellt, dass der angezeigte Schaltpunkt im Flash-Speicher 150 nicht erreicht ist, kann die eingestellte Kodier-Rate bei der ersten Kodier-Rate bleiben.
-
5 zeigt ein Flussdiagramm eines Beispielprozesses bzw. Beispielverfahrens 500 zur Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach verschiedenen Aspekten der erfindungsgemäßen Technologie. Zur Erläuterung werden hier die verschiedenen Blöcke des Beispielprozesses 500 mit Bezug auf die hier beschriebenen Komponenten und/oder Prozesse beschrieben. Der eine oder die mehreren Blöcke des Prozesses bzw. Verfahrens 500 können z.B. von einem oder mehreren Prozessoren implementiert werden, darunter z.B. der Controller 130 aus 1 oder eine oder mehrere Komponenten oder Prozessoren des Controllers 130. In einigen Ausgestaltungen können ein oder mehrere der Blöcke getrennt von anderen Blöcken und von einem oder mehreren verschiedenen Prozessoren oder Controllern ausgeführt werden. Ferner werden die Blöcke des Beispielprozesses 500 zur Erläuterung als seriell oder linear auftretend beschrieben. Einige Blöcke des Beispielprozesses 500 können jedoch auch parallel auftreten. Darüber hinaus müssen die Blöcke des Beispielprozesses 500 nicht in der gezeigten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des Beispielprozesses 500 müssen nicht ausgeführt werden. Die Blöcke des Verfahrens 500 oder eine Teilmenge davon können auch für jedes Speichergerät und/oder zur Unterstützung mehrerer Codelängen ausgeführt werden, je nach den verschiedenen Betriebsbedingungen des/der Speichergeräte(s).
-
Der Beispielprozess 500 kann stattfinden, wenn die eingestellte Kodier-Rate von der ersten auf die zweite Kodier-Rate umgeschaltet wird. Im abgebildeten Beispiel liest und dekodiert das System gemäß der erfindungsgemäßen Technologie die mit der ersten Kodier-Rate kodierten Daten aus dem nichtflüchtigen Speicher als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate (502). Die gelesenen und dekodierten Daten werden mit der zweiten Rate kodiert (504). Die kodierten Daten werden mit der zweiten Rate in den nichtflüchtigen Speicher geschrieben (506).
-
Die erwähnten Schritte der Verfahren 400 und 500 können von dem Controller 130 unter Verwendung der Kodier-Raten-Verwaltungskomponente 302, der Lese-/Schreib-Verwaltungskomponente 304, des Dekodierers 306 und des Kodierers 308 durchgeführt werden. Viele der oben beschriebenen Merkmale der Beispielprozesse 400 und 500 und der damit verbundenen Merkmale und Anwendungen können als Software-Prozesse implementiert werden, die als ein Satz von Befehlen spezifiziert sind, die auf einem computerlesbaren Speichermedium (auch als computerlesbares Medium bezeichnet) aufgezeichnet sind. Wenn diese Befehle von einer oder mehreren Verarbeitungseinheit(en) (z.B. einem oder mehreren Prozessoren, Prozessorkernen oder anderen Verarbeitungseinheiten) ausgeführt werden, veranlassen sie die Verarbeitungseinheit(en), die in den Befehlen angegebenen Aktionen auszuführen. Beispiele für computerlesbare Medien sind unter anderem CD-ROMs, Flash-Laufwerke, RAM-Chips, Festplatten, EPROMs usw. Zu den computerlesbaren Medien gehören nicht Trägerwellen und elektronische Signale, die drahtlos oder über Kabelverbindungen übertragen werden.
-
Die hier offenbarten Systeme und Verfahren können auf Festplattenlaufwerke, hybride Festplattenlaufwerke und ähnliche angewendet werden. Darüber hinaus können zusätzlich oder alternativ andere Formen der Speicherung (z.B. DRAM oder SRAM, batteriegepufferte flüchtige DRAM- oder SRAM-Bausteine, EPROM, EEPROM-Speicher usw.) verwendet werden. Als weiteres Beispiel können die verschiedenen in den Figuren dargestellten Komponenten als Software und/oder Firmware auf einem Prozessor, ASIC/FPGA oder dedizierter Hardware implementiert werden. Auch die Merkmale und Eigenschaften der oben genannten spezifischen Beispielausgestaltungen können auf verschiedene Weise kombiniert werden, um zusätzliche Ausführungsbeispiele zu erhalten, die alle in den Geltungsbereich der vorliegenden Offenbarung fallen. Obwohl die vorliegende Offenbarung bestimmte bevorzugte Beispielimplementierungen und -anwendungen enthält, fallen auch andere Beispielimplementierungen in den Anwendungsbereich dieser Offenbarung, die für Fachpersonen offensichtlich sind, einschließlich Beispielimplementierungen, die nicht alle der hier dargelegten Merkmale und Vorteile bieten. Dementsprechend soll der Umfang der vorliegenden Offenbarung nur durch die beigefügten Ansprüche definiert werden.
-
Implementierungen im Rahmen der vorliegenden Offenbarung können teilweise oder ganz unter Verwendung eines greifbaren computerlesbaren Speichermediums (oder mehrerer greifbarer computerlesbarer Speichermedien eines oder mehrerer Typen), das eine oder mehrere Anweisungen verschlüsselt bzw. kodiert, realisiert werden. Das greifbare computerlesbare Speichermedium kann ebenfalls nichtflüchtiger Art sein.
-
Das computerlesbare Speichermedium kann jedes Speichermedium sein, das von einem Computer für allgemeine oder einer Recheneinheit spezielle Zwecke gelesen, geschrieben oder anderweitig darauf zugegriffen werden kann, einschließlich jeder Verarbeitungselektronik und/oder Verarbeitungsschaltung, die in der Lage ist, Befehle auszuführen. Beispielsweise kann das computerlesbare Medium jeden flüchtigen Halbleiterspeicher wie - nicht abschließend - RAM, DRAM, SRAM, T-RAM, Z-RAM und TTRAM umfassen. Das computerlesbare Medium kann auch jeden nichtflüchtigen Halbleiterspeicher enthalten, wie ROM, PROM, EPROM, EEPROM, NVRAM, Flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, Rennstreckenspeicher bzw. racetrack memory, FJG und Millipede-Speicher.
-
Ferner kann das computerlesbare Speichermedium alle Arten von nicht-Halbleiterspeichern umfassen, wie z.B. optische Plattenspeicher, Magnetplattenspeicher, Magnetband, andere magnetische Speichervorrichtungen oder jedes andere Medium, das in der Lage ist, eine oder mehrere Anweisungen zu speichern. In einigen Ausgestaltungen kann das greifbare computerlesbare Speichermedium direkt an eine Computervorrichtung gekoppelt bzw. angeschlossen werden, während in anderen Implementierungen das greifbare computerlesbare Speichermedium indirekt an eine Computervorrichtung gekoppelt werden kann, z.B. über eine oder mehrere Draht-Verbindungen, eine oder mehrere drahtlose Verbindungen oder eine beliebige Kombination davon.
-
Anweisungen können direkt ausführbar sein oder zur Entwicklung ausführbarer Anweisungen verwendet werden. So können Anweisungen beispielsweise als ausführbarer oder nicht ausführbarer Maschinencode oder als Anweisungen in einer High-Level-Sprache bzw. höheren Programmiersprache realisiert werden, die zur Erzeugung von ausführbarem oder nicht ausführbarem Maschinencode kompiliert werden können. Darüber hinaus können Anweisungen auch als Daten realisiert werden oder sie können Daten enthalten. Computerausführbare Anweisungen können auch in einem beliebigen Format organisiert sein, einschließlich Routinen, Unterprogrammen, Programmen, Datenstrukturen, Objekten, Modulen, Anwendungen, Applets, Funktionen usw. Wie von Fachleuten erkannt werden wird, können Details, einschließlich, aber nicht beschränkt auf Anzahl, Struktur, Reihenfolge und Organisation von Anweisungen, erheblich variieren, ohne dass die zugrunde liegende Logik, Funktion, Verarbeitung und Ausgabe bzw. Ergebnis verändert wird.
-
Während sich die obigen Ausführungen in erster Linie auf Mikroprozessoren oder Mehrkernprozessoren beziehen, die Software ausführen, werden eine oder mehrere Implementierungen durch eine oder mehrere integrierte Schaltungen, wie z.B. anwendungsspezifische integrierte Schaltungen (ASICs) oder Field Programmable Gate Arrays (FPGAs), durchgeführt. In einer oder mehreren Implementierungen führen solche integrierten Schaltungen Befehle aus, die in der Schaltung selbst gespeichert sind.
-
Fachpersonen werden erkennen, dass die verschiedenen veranschaulichenden Blöcke, Module, Elemente, Komponenten, Methoden und Algorithmen, die hier beschrieben werden, als elektronische Hardware, Computersoftware oder als Kombinationen aus beidem umgesetzt werden können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden die verschiedenen beispielhaften Blöcke, Module, Elemente, Komponenten, Methoden und Algorithmen oben allgemein in ihrer Funktionalität beschrieben. Ob eine solche Funktionalität als Hardware oder Software implementiert wird, hängt von den jeweiligen Anwendungs- und Designbeschränkungen ab, die dem Gesamtsystem auferlegt werden. Fachpersonen können die beschriebene Funktionalität für jede einzelne Anwendung auf unterschiedliche Weise umsetzen. Verschiedene Komponenten und Blöcke können unterschiedlich angeordnet werden (z.B. in einer anderen Reihenfolge oder auf eine andere Art und Weise unterteilt), ohne dass dabei der Umfang der hier behandelten Technologie verlassen wird.
-
Es ist zu verstehen, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den offenbarten Prozessen eine Veranschaulichung beispielhafter Ansätze ist. Auf der Grundlage von Design-Präferenzen ist verständlich, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den Prozessen umgeordnet werden kann. Einige der Schritte können gleichzeitig ausgeführt werden. Die angefügten Verfahrensansprüche, stellen Elemente der verschiedenen Schritte in einer Beispielreihenfolge dar, und sollen nicht auf die spezifisch dargestellte Reihenfolge oder Hierarchie beschränkt verstanden werden.
-
Die vorstehende Beschreibung soll es jeder Fachperson ermöglichen, die verschiedenen hier beschriebenen Aspekte anzuwenden. Die vorstehende Beschreibung enthält verschiedene Beispiele für die der Erfindung zugrundeliegende Technologie, und die erfindungsgemäße Technik ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden für die Fachperson leicht erkennbar sein, und die hier definierten allgemeinen Prinzipien können auf andere Aspekte angewandt werden. Daher sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt werden, sondern es soll ihnen der volle Umfang zugestanden werden, der sprachlich mit den Ansprüchen übereinstimmt, wobei der Verweis auf ein Element in der Einzahl nicht „ein und nur ein“ bedeutet, es sei denn, dies wird ausdrücklich so angegeben, sondern „ein oder mehrere“. Wenn nicht ausdrücklich anders angegeben, bezieht sich der Begriff „einige“ auf einen oder mehrere. Pronomen im Männlichen (z.B. sein) schließen das weibliche und das neutrale Geschlecht (z.B. ihr und sein) ein und umgekehrt. Überschriften und Unterüberschriften, falls vorhanden, werden nur der Bequemlichkeit halber verwendet und schränken die gegenständliche Technologie nicht ein.
-
Eine Formulierung wie „Aspekt“ bedeutet nicht, dass dieser Aspekt für die betreffende Technologie wesentlich ist oder dass dieser Aspekt für alle Konfigurationen der gegenständlichen Technologie gilt. Eine Offenbarung in Bezug auf einen Aspekt kann für alle Konfigurationen oder für eine oder mehrere Konfigurationen gelten. Ein Aspekt kann ein oder mehrere Beispiele liefern. Ein Begriff wie ein Aspekt kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Eine Formulierung wie „Verkörperung“, bzw. „Ausgestaltung“ bedeutet nicht, dass eine solche Verkörperung für die betreffende Technologie wesentlich ist oder dass eine solche Ausgestaltung für alle Konfigurationen der betreffenden Technologie gilt. Eine Offenbarung in Bezug auf eine Verkörperung kann sich auf alle Verkörperungen oder auf eine oder mehrere Verkörperungen beziehen. Eine Ausführungsform kann ein oder mehrere Beispiele liefern. Eine Formulierung wie „Verkörperung“ oder „Ausführungsform“ kann sich auf eine oder mehrere Verkörperungen beziehen und umgekehrt. Ein Begriff wie eine „Konfiguration“ bedeutet nicht, dass eine solche Konfiguration für die betreffende Technologie wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der betreffenden Technologie gilt. Eine Offenbarung in Bezug auf eine Konfiguration kann sich auf alle Konfigurationen oder auf eine oder mehrere Konfigurationen beziehen. Eine Konfiguration kann ein oder mehrere Beispiele liefern. Ein Begriff wie „Konfiguration“ kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
-
Das Wort „beispielhaft“ wird hier verwendet, um „als Beispiel oder Veranschaulichung dienend“ zu bedeuten. Jede(r) Aspekt oder Ausführungsform, der bzw. die hier als „beispielhaft“ beschrieben wird, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Ausgestaltungen auszulegen.
-
Alle strukturellen und funktionellen Äquivalente zu den Elementen der verschiedenen in dieser Offenbarung beschriebenen Aspekte, die Fachpersonen bekannt sind oder später bekannt werden, werden hier ausdrücklich durch Verweis aufgenommen und sollen von den Ansprüchen umfasst werden. Darüber hinaus ist nichts, was hier offenbart wird, dazu gedacht, gemeinfrei zu werden, unabhängig davon, ob eine solche Offenbarung in den Ansprüchen ausdrücklich wiedergegeben wird. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C. §112, sechster Absatz, auszulegen, es sei denn, das Element wird ausdrücklich unter Verwendung des Ausdrucks „Mittel für“ oder, im Falle eines Verfahrensanspruchs, unter Verwendung des Ausdrucks „Schritt für“ erwähnt. Soweit der Begriff „einschließen“ bzw. „enthalten“, „haben“ oder ähnliches in der Beschreibung oder in den Ansprüchen verwendet wird, soll dieser Begriff in ähnlicher Weise einschließend sein wie der Begriff „umfassen“, so wie „umfassen“ interpretiert wird, wenn es als Übergangswort in einem Anspruch verwendet wird.