-
GEBIET DER AUSFÜHRUNGSFORMEN
-
Ausführungsformen der Erfindung können sich allgemein auf Datenspeichersysteme und insbesondere auf Fehlerkorrekturcodierung (ECC) beziehen, die auf Datenintegritätsinformationen von den Systemspeichervorrichtungen basiert.
-
HINTERGRUND
-
Es besteht eine kommerzielle Nachfrage nach digitalen Datenspeichersystemen mit hoher Kapazität, bei denen mehrere Datenspeichervorrichtungen (DSDs) in einem gemeinsamen Gehäuse untergebracht sind. Datenspeichersysteme schließen häufig große Gehäuse ein, in denen mehrere Regale untergebracht sind, in denen Reihen von DSDs montiert sind. In der Vergangenheit weisen Speichersysteme streng autonome, unabhängig gestaltete Fehlerredundanzschemata auf. Dies führt zu Überlappungen und verminderter Effizienz im Gesamtsystem. Beispielsweise kann die Vorrichtung Parität zuweisen, um Fehler vor beliebigen Komponenten für beliebige Daten zu schützen, unabhängig davon, ob dies erforderlich ist oder ob der Host diese Daten möglicherweise benötigt. Somit kann diese Fehlerkorrekturcodierung auf der Vorrichtung den Fehler-Footprint (d. h. das kleinste Fehlerereignis), die aufgerufene Latenz und die Kosten des Systems erhöhen.
-
Alle in diesem Abschnitt beschriebenen Ansätze sind Ansätze, die verfolgt werden könnten, aber nicht notwendigerweise Ansätze, die zuvor konzipiert oder verfolgt wurden. Daher sollte, sofern nicht anders angegeben, nicht angenommen werden, dass jeder der in diesem Abschnitt beschriebenen Ansätze lediglich aufgrund seiner Aufnahme in diesen Abschnitt als Stand der Technik qualifiziert ist.
-
Figurenliste
-
Ausführungsformen werden exemplarisch und nicht beschränkt in den Abbildungen der beigefügten Zeichnungen, in denen gleiche Bezugszeichen verwendet werden, um ähnliche Elemente zu bezeichnen, dargestellt:
- 1A ist eine Draufsicht, die ein Festplattenlaufwerk (HDD) gemäß einer Ausführungsform veranschaulicht;
- 1B ist ein Blockdiagramm, das ein Festkörperlaufwerk (HDD) gemäß einer Ausführungsform veranschaulicht;
- 2 ist eine perspektivische Ansicht, die ein Datenspeichersystem gemäß einer Ausführungsform veranschaulicht;
- 3 ist ein Blockdiagramm, das eine Datenspeichersystemarchitektur gemäß einer Ausführungsform veranschaulicht; und
- 4 ist ein Flussdiagramm, das ein Verfahren zum Zuweisen einer Fehlerkorrekturcodierung (ECC) auf Systemebene basierend auf Informationen zur Vorrichtungsdatenintegrität gemäß einer Ausführungsform veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Es werden Ansätze zur Fehlerkorrekturcodierung (ECC) basierend auf Datenintegritätsinformationen von den Systemspeichervorrichtungen beschrieben. In der folgenden Beschreibung werden zu Zwecken der Erklärung zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der Ausführungsformen der hierin beschriebenen Erfindung bereitzustellen. Es wird jedoch ersichtlich sein, dass die Ausführungsformen der hierin beschriebenen Erfindung ohne diese spezifischen Details praktiziert werden können. In anderen Fällen sind bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, um zu vermeiden, dass die Ausführungsformen der hierin beschriebenen Erfindung unnötig unklar werden.
-
Datenspeichersystem
-
Es besteht eine kommerzielle Nachfrage nach digitalen Datenspeichersystemen mit hoher Kapazität, bei denen mehrere Datenspeichervorrichtungen (DSDs) in einem gemeinsamen Gehäuse untergebracht sind. Datenspeichersysteme schließen häufig große Gehäuse ein, in denen mehrere Regale untergebracht sind, in denen Reihen von DSDs montiert sind. 2 ist eine perspektivische Ansicht, die ein Datenspeichersystem gemäß Ausführungsformen veranschaulicht. Ein Datenspeichersystem 200 weist ein Systemgehäuse 202 (oder ein „Rack 202“) auf, in dem mehrere Datenspeichersystemregale 204 beherbergt sind. Jedes Regal 204 kann in einen entsprechenden Schlitz innerhalb des Racks 202 platziert oder eingeschoben werden. Das Rack 202 bringt weiterhin eine Systemsteuerung unter und kann weiterhin Switches, (einen) Speicherserver, (einen) Anwendungsserver, eine Stromversorgung, Lüfter usw. unterbringen.
-
3 ist ein Blockdiagramm, das eine Datenspeichersystemarchitektur gemäß einer Ausführungsform veranschaulicht. Die beispielhafte Architektur 300 zeigt ein Datenspeichersystem 200, das mehrere Datenspeichervorrichtungen (DSDs) 304a (DSD1), 304b (DSD2) und 304n (DSDn) aufweist, wobei n eine beliebige Anzahl von DSDs darstellt, die von Implementierung zu Implementierung variieren kann. Jede DSD 304a-304n wird von einer Systemsteuerung 312 über eine Kommunikationsschnittstelle 322 gemäß einem entsprechenden Kommunikationsprotokoll 323 gesteuert und kommuniziert mit dieser. Jede DSD 304a, 304b, 304n schließt einen entsprechenden nichtflüchtigen Speicher (NVM) 306 ein, der von einer jeweiligen DSD-Steuerung 308 gesteuert wird, die ein DSD-ECC-Modul 310 einschließt. Jedes DSD-ECC-Modul 310 (das beispielsweise Bestandteil eines entsprechenden System-on-Chip (SoC) sein kann, wie eines Teils des Datenkanals oder der Festplattensteuerung im Kontext einer HDD), ist in der Lage, eine „Track-ECC“-Verarbeitung durchzuführen, d. h. ECC-Codierung/Decodierung auf Datenspurebene, unter Verwendung von Prozeduren, wie sie auf dem Fachgebiet bekannt sind. Die Systemsteuerung 312 schließt Speicher 313, ein System-ECC-Modul 314, das einen ECC-Codierer 316, einen ECC-Decodierer 318 und eine ECC-Regelmaschine 320 einschließt, von denen jedes eine prozedurale Funktionalität darstellt, die eine ECC-Paritätscodierung und -decodierung beinhaltet, ein, wie an anderer Stelle hierin ausführlicher beschrieben.
-
Verarbeitung, Funktionen, Prozeduren, Aktionen, Verfahrensschritte und dergleichen, die hier als von der Systemsteuerung 312 oder von einer DSD 304a-304n ausgeführt oder ausführbar beschrieben werden, können die Inkraftsetzung durch Ausführen einer oder mehrerer Folgen von Anweisungen einschließen, die in einer oder mehreren Speichereinheiten gespeichert sind und die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, eine solche Ausführung bewirken. Die Systemsteuerung 312 kann in jeder beliebigen Form und/oder Kombination von Hardware, Software und Firmware ausgeführt sein. Beispielsweise und gemäß einer Ausführungsform weist die Systemsteuerung 312 eine anwendungsspezifische integrierte Schaltung (ASIC) auf, die mindestens eine Speichereinheit zum Speichern solcher Anweisungen (wie Firmware als ein nicht einschränkendes Beispiel) und mindestens einen Prozessor zum Ausführen solcher Anweisungen, Ermöglichen der ECC-Paritätszuweisung, -codierung, -decodierung und eine Anwendung aufweist, um beschädigte gespeicherte Daten wiederherzustellen, indem beschädigte oder verlorene Daten wie angefordert durch Schreiben in ihre ursprüngliche Form umgewandelt werden.
-
Das Datenspeichersystem 200 kann kommunikativ mit einem Host 350 gekoppelt sein, der in einer Hardwaremaschine, auf der ausführbarer Code ausführbar ist (als nicht einschränkende Beispiele ein Computer oder Hardwareserver und dergleichen), oder als Softwareanweisungen ausgeführt sein kann, die durch einen oder mehrere Prozessoren (als nicht einschränkende Beispiele einen Softwareserver wie einen Datenbankserver, einen Anwendungsserver, einen Medienserver und dergleichen) ausführbar sind. Der Host 350 stellt im Allgemeinen einen Client des Datenspeichersystems 200 dar und hat die Fähigkeit, Lese- und Schreibanforderungen an das Datenspeichersystem 200 zu stellen. Es ist zu beachten, dass die Systemsteuerung 312 auch als „Host“ bezeichnet werden kann, da der Begriff häufig allgemein in Bezug auf jede Vorrichtung verwendet wird, die E/A-Aufrufe an eine Datenspeichervorrichtung oder ein Array von Vorrichtungen tätigt.
-
Einleitung
-
Wenn hierin der Begriff „im Wesentlichen“ verwendet wird, versteht man darunter ein Merkmal, das weitgehend oder nahezu strukturiert, eingerichtet, dimensioniert usw. ist, bei dem aber Fertigungstoleranzen und dergleichen in der Praxis zu einer Situation führen können, in der die Struktur, Konfiguration, Abmessung usw. nicht immer oder notwendigerweise genau wie angegeben ist. Zum Beispiel würde die Beschreibung einer Struktur als „im Wesentlichen vertikal“ diesem Begriff ihre klare Bedeutung zuweisen, sodass die Seitenwand für alle praktischen Zwecke vertikal ist, aber nicht genau bei 90 Grad.
-
Fehlerkorrekturcodierung (ECC) (oder „Fehlerkorrekturcode“, „Fehlerkorrigierungscode“ usw.) bezieht sich im Allgemeinen auf Schemata, Techniken, Prozeduren, Codierung/Decodierung und dergleichen zum Korrigieren (d. h. Rekonstruieren oder „Wiederherstellen“) beschädigter Daten. Beschädigte Daten können das Ergebnis einer fehlerhaften Datenübertragung oder unerwünschter Bitflips (Bitfehler) sein, die auftreten, nachdem Daten in einen nichtflüchtigen Speicher gespeichert (d. h. geschrieben) wurden, oder unerwünschter Bitlöschungen, die auftreten, nachdem Daten in einen nichtflüchtigen Speicher gespeichert wurden, wie NVM 306 der DSDs 304a, 304b, 304n (3). ECC wird in der Regel implementiert, indem zusätzliche codierte Daten (manchmal allgemein als „Parität“, „Paritätsdaten“, „Paritätsinformationen“, „Paritätsbits“ und dergleichen bezeichnet) zu zugeordneten Daten hinzugefügt oder angehängt werden, sodass die Daten dann wiederhergestellt werden können, wenn eine Anzahl von Fehlern (bis zur Fähigkeit der verwendeten Parität) in die Daten eingeführt werden.
-
Beispielsweise kann eine „Schreibüberprüfungs“-Funktion in bestimmten Datenspeicherkontexten verwendet werden, um die Datenzuverlässigkeit (sogenannte „Datenintegrität“) sicherzustellen, kann jedoch die Systemleistung negativ beeinflussen, indem der Schreibbefehlsdurchsatz verringert wird. Die Aufrechterhaltung der Datenintegrität hat daher ihre eigenen Kompromisse und Herausforderungen, und man kann in Betracht ziehen, Ressourcen für erweiterte ECC-Schemata, um beschädigte Daten wiederherzustellen, Vorrang zu geben über die Zuweisung von Ressourcen für die Datenintegrität auf der Speichervorrichtung. Anders ausgedrückt kann man bereit sein, eine geringere Datenintegrität an der Speichervorrichtung zu akzeptieren, z. B. an dem nichtflüchtigen Speicher 306 der DSD 304a-304n (3), um die Ausführung zu erhöhen, während man sich weiterhin auf die Wiederherstellung von beschädigten Daten über unabhängigere, intelligentere und szenariospezifischere ECC-Schemata verlässt.
-
Intelligente Fehlerkorrekturcodierung auf Systemebene
-
Wie bereits erwähnt, verfügen historische Speichersysteme über streng autonome, unabhängig gestaltete Fehlerredundanzschemata, was zu Überlappungen und einer verringerten Effizienz des Gesamtsystems führen kann. Im Gegensatz dazu kann eine erweiterte ganzheitliche Ansicht der Datenintegrität an und unter unterschiedlichen Speichervorrichtungen, wie sie im gesamten Speichersystem verteilt sind, zu einem effizienteren und zuverlässigeren Gesamtspeichersystem führen.
-
Die Datenspeichervorrichtungen, wie die DSDs 304a-304n (3), die Bestandteil eines Datenspeichersystems 200 (2 und 3) sind, können als empfindliche Sensoren von Faktoren angesehen werden, welche die mit jeder DSD verbundene Datenintegrität beeinflussen können, wie Temperatur, Luftstrom, Vibration und dergleichen im Zusammenhang mit HDDs und Alter, Speicherzyklen und dergleichen im Zusammenhang mit SSDs. Darüber hinaus können die DSDs 304a-304n in Form von HDDs Informationsquellen bezüglich Positionsfehlersignalen (PES) und der dazu beitragenden Faktoren sein, die einem bestimmten Kopf oder einer bestimmten Region von Medien entsprechen. Daher können Datenintegritätsinformationen, in die jeder DSD intern offengelegt sein können, und Kombinationen davon, wenn sie mit einer Systemsteuerung wie der Steuerung 312 (3) geteilt werden, eine kostengünstige, aber wertvolle erweiterte Sicht auf die Symptome der Datenverschlechterung auf Vorrichtungsebene zur Verwendung als informierter und effizienter ECC-Kontrollpunkt auf Systemebene bereitstellen. Möglicherweise sind auch zusätzliche Informationen zu den auf Systemebene verfügbaren DSDs verfügbar, z. B. für die Systemsteuerung, die zur intelligenten prädiktiven ECC-Entscheidungsfindung auf Systemebene beitragen und/oder kombiniert werden können. Beispielsweise können im Zusammenhang mit HDDs der Systemsteuerung Informationen wie der Formfaktor der Speichervorrichtung, die Anzahl der Festplatten (und/oder Aktuatoren), die Drehzahl der Festplatten (Umdrehung pro Minute) und andere übliche Informationen und andere übliche Variationen zwischen HDD-Modellen und möglicherweise auch die Position jeder Speichervorrichtung innerhalb eines bestimmten Regals und innerhalb des System-Racks (z. B. Rack 202 von 2), relative Nähe zu Lüftern, Lüfterdrehzahl, relative Nähe zu Wärmequellen und andere Faktoren außerhalb jeder Vorrichtung offengelegt werden. Es ist zu beachten, dass die DSDs 304a-304n sowie die Steuerung 312 so programmiert sein können, dass sie im Laufe der Zeit „lernen“. Daher sind Faktoren, welche die mit jeder DSD verbundene Datenintegrität beeinflussen können, unter Umständen nicht statisch, d. h. solche Faktoren (und darauf basierende ECC-Entscheidungen) können dynamisch sein.
-
4 ist ein Flussdiagramm, das ein Verfahren zum Zuweisen einer Fehlerkorrekturcodierung (ECC) auf Systemebene basierend auf Informationen zur Vorrichtungsdatenintegrität gemäß einer Ausführungsform veranschaulicht.
-
In Block 402 stellt eine Vielzahl von Datenspeichervorrichtungen, die Bestandteil eines Datenspeichersystems sind, der Systemsteuerungsschaltlogik Zugriff auf jeweilige Datenintegritätsinformationen bereit. Beispielsweise und gemäß einer Ausführungsform können die DSDs 304a-304n (3) des Datenspeichersystems 200 (2, 3) ein Nachrichtenprotokoll (das z. B. vorhanden sein kann oder das speziell auf diesen Zweck zugeschnitten und über ein vorhandenes oder anderes Kommunikationsprotokolls überlagert sein kann) an die Systemsteuerung 312 (3) initiieren (oder die Systemsteuerung 312 kann betrieben werden, um das Nachrichtenprotokoll zu initiieren), z. B. über einen gemeinsamen Kommunikationskanal oder Bus und/oder einen dedizierten Kommunikationskanal oder Bus, über den die DSDs 304a-304n (oder zumindest eine Teilmenge der DSDs 304a-304n) über die jeweilige Kommunikationsschnittstelle 322 (3) jeweilige Datenintegrität, Datentauglichkeit und Datenrisikoinformationen an die Steuerung 312 melden. Alternativ können beispielsweise und gemäß einer Ausführungsform die Datenintegritäts-, Datentauglichkeits- und Datenrisikoinformationen auf jeder entsprechenden DSD 304a-304n oder auf einer anderen der nicht entsprechenden DSDs 304a-304n oder anderswo gespeichert werden, woher die Steuerung 312 auf solche Datenintegritätsinformationen zugreifen/diese lesen kann.
-
Im Allgemeinen kennzeichnen die Datenintegritäts-, Tauglichkeits- und Risikoinformationen die Wahrscheinlichkeit oder das Risiko, dass ein Lesefehler (z. B. beschädigte Daten aufgrund von Bitflips, Bitlöschungen und dergleichen) auftritt, wenn die jeweilige DSD einen Lesevorgang durchführt, gemäß einer Ausführungsform. Anders ausgedrückt kann jede DSD 304a-304n der Steuerung 312 einen Satz von Betriebsmetriken bereitstellen, die ihre jeweilige Lesesignalintegrität messen. Darüber hinaus kann die Systemsteuerung 312 zuweilen entscheiden, die Metriken zu ändern, die sie bei der ECC-Entscheidungsfindung verwendet, basierend auf, als nicht einschränkende Beispiele, der Bedeutung der entsprechenden gespeicherten Daten, den Kosten, die mit dem Ersetzen oder Wiederherstellen der gespeicherten Daten von anderen Quellen verbunden sind und dergleichen.
-
Als ein nicht einschränkendes Beispiel kann jede oder eine beliebige DSD 304a-304n eine Rohsignalintegrität bereitstellen, die einem HDD-Sektor entspricht, beispielsweise in Form eines lokalen Iterationszählers, der eine Signalqualitätsmetrik hinsichtlich der Schwierigkeit oder Verarbeitungsintensität des Lesekanals ist, Bits zu decodieren. Als ein anderes nicht einschränkendes Beispiel kann jede oder eine beliebige DSD 304a-304n Datenintegritäts-, Tauglichkeits-, Risikoinformationen bezüglich benachbarter Spurstörungen (ATI) und/oder Fernspurstörungen (FTI) und/oder Track Squeeze und deren Auswirkungen (z. B. Amplitudenänderung, Löschbandbreite, Bytefehlerrate) bereitstellen, um nur einige zu nennen. Andere Datenintegritätsmetriken, die von den DSDs 304a-304n für diesen Zweck mit der Steuerung 312 geteilt werden können, können als nicht einschränkende Beispiele Grenze für Zonensignal-Rausch-Verhältnis (SNR) pro Kopf oder pro Zone, Informationen über Schreibsperrvorschub und intelligente Schreibüberprüfungsoperationen im Zusammenhang mit HDD mit Shingled Magnetic Recording (SMR), Plattenlade-/-entladezonen für HDDs und dergleichen sein.
-
Im Allgemeinen sind die Arten von Datenintegritäts-, Tauglichkeits- und Risikoinformationen, welche die DSDs 304a-304n der Steuerung 312 bereitstellen können, im Kontext des lokalen Wissens, über das die DSD über sich selbst verfügt, und mit dem Ziel, Informationen bereitzustellen, die es der Steuerung 312 ermöglichen, eine relevante Risikobewertung und -vorhersage in Bezug auf die Qualität eines in der DSD erzeugten Lesesignals durchzuführen, relativ unbegrenzt. Dies bedeutet nicht, dass die Informationen, die von den DSDs 304a-304n an die Steuerung 312 geliefert werden, willkürlich sind, vielmehr würde das gesamte Systemdesign, die Entwicklung und Implementierung der hier beschriebenen Techniken von einem integrierten Ansatz profitieren, welche Arten von Informationen für jede DSD verfügbar sind und für die Systemsteuerung für Bewertungs- und Vorhersagezwecke wertvoll sind.
-
Bei Block 404 bestimmt die Steuerungsschaltlogik basierend auf den Datenintegritätsinformationen von mindestens einer Teilmenge der Vielzahl von Datenspeichervorrichtungen einen Typ und/oder einen Betrag einer Fehlerkorrekturcodierung (ECC), die Daten entspricht, die auf einer oder mehreren der Datenspeichervorrichtungen gespeichert werden sollen. Basierend auf den Datenintegritäts-, Tauglichkeits- und Risikoinformationen, welche die Population der DSDs 304a-304n mit der Steuerung 312 in Block 402 (oder mindestens einer Teilmenge solcher geteilten Informationen) geteilt hat, wertet die ECC-Regelmaschine 320 (3) der Steuerung 312 solche Informationen aus, um die Wahrscheinlichkeit oder das Risiko eines Fehlers, der einem Lesevorgang einer gegebenen DSD 304a-304n entspricht, vorherzusagen. Dann kann die Steuerung 312 auf der Grundlage der Ergebnisse ihrer Bewertung (die weiterhin auf anderen Informationen als den in Block 402 gesammelten Informationen basieren können) eine fundierte Entscheidung darüber treffen, welche Art und/oder welcher Betrag, welche Stufe, welcher Grad von ECC (als nicht einschränkende Beispiele Low Density Parity Check-Code (LDPC-Code) auf der niedrigsten Ebene, Code auf Blockebene über N logische Blockadressen (LBAs) auf der nächsten Ebene, Löschcodierung implementiert als verteilter Code über mehrere DSDs auf der nächsten Ebene, ein RAID-Schema und dergleichen) geeignet ist, um das damit verbundene Risiko einer Datenbeschädigung zu handhaben, und die Steuerung 312 kann dann verfolgen, für welche Daten zusätzliche Parität zugewiesen wird. Angenommen beispielsweise, eine Basislinienparität von 1x Bytes codierter Parität für Daten auf einer bestimmten DSD, wenn die von dieser DSD geteilten Datenintegritäts-, Tauglichkeits- und Risikoinformationen zu einer Schlussfolgerung oder Vorhersage der Steuerung 312 führt, dass die Daten auf dieser bestimmten DSD kompromittiert sind oder altern (z. B. durch thermischen Zerfall, Squeeze usw.), kann die Regelmaschine 320 der Steuerung 312 bestimmen, dass beispielsweise 2x Bytes oder sogar 4x Bytes codierter Parität, für zu dieser bestimmten DSD neu geschriebene Daten geeignet sind.
-
Gemäß einer Ausführungsform werden die mehreren DSDs 304a bis 304n logisch in Teilmengen gemäß einer oder mehreren gemeinsamen Eigenschaften (z. B. Vibrationsumgebung, Alter, Laufwerktyp usw.) gruppiert und die in Block 404 durchgeführte Bestimmung für eine bestimmte Teilmenge der DSDs 304a-304n oder für eine bestimmte DSD 304a-304n innerhalb der Teilmenge basiert auf den geteilten Datenintegritätsinformationen von dieser bestimmten Teilmenge. Alternativ basiert gemäß einer Ausführungsform die in Block 404 durchgeführte Bestimmung für eine bestimmte Teilmenge von DSDs 304a-304n oder für eine bestimmte DSD 304a-304n innerhalb der Teilmenge auf den geteilten Datenintegritätsinformationen von dieser bestimmten Teilmenge und von einer oder mehreren zusätzliche Teilmengen der DSDs 304a-304n.
-
Die Systemsteuerung 312 hat wahrscheinlich Wissen, das den DSDs 304a-304n nicht zur Verfügung steht, das sie benutzen kann, um die Bestimmung bei Block 404 vorzunehmen. Als ein nicht einschränkendes Beispiel kann die Steuerung 312 Wissen über die Zeitkritikalität bestimmter Daten haben, beispielsweise basierend auf Informationen in einer Schreibanforderung vom Host 350 (3), auf deren Grundlage die Steuerung 312 die gewünschte ECC bestimmt. Beispielsweise kann Daten, für die Leselatenz unerwünschter ist, wiederum ein maximaler ECC-Schutz zugewiesen werden. Als ein anderes nicht einschränkendes Beispiel hat die Steuerung 312 Kenntnis darüber, ob Redundanz (z. B. ECC-Parität) für bestimmte Daten bereits in einem anderen Kontext vorhanden ist. Beispielsweise kann die Steuerung 312 wissen, dass der Löschcodierungsschutz bereits in größerem Maßstab verfügbar ist, beispielsweise in einem Archivkontext, und dass die Leselatenz nicht von größter Bedeutung ist, basierend darauf, dass die Steuerung 312 auf zusätzlichen ECC-Schutz verzichtet, da die Daten bereits durch diese andere Form des ECC-Schutzes geschützt sind. Gemäß einer Ausführungsform wird die dem Block 404 zugeordnete Verarbeitung als Hintergrundprozess kontinuierlich ausgeführt, oder wenn Bandbreite verfügbar ist. Alternativ wird gemäß einer Ausführungsform die dem Block 404 zugeordnete Verarbeitung als Reaktion auf eine Schreibanforderung vom Host 350 ausgeführt, wobei die Schreibanforderung zum Ausschreiben in das Speichervorrichtungsarray in eine Warteschlange gestellt werden kann, während eine solche Verarbeitung durchgeführt wird.
-
In Block 406 berechnet die Steuerung 312 die in Block 404 bestimmte ECC, und in Block 408 werden Daten auf einer oder mehreren der DSDs 304a-304n gespeichert (geschrieben) und die entsprechende berechnete ECC wird darauf gespeichert (geschrieben). Beispielsweise und gemäß einer Ausführungsform kann die ECC auf der entsprechenden DSD 304a-304n gespeichert werden, auf der die entsprechenden Daten gespeichert werden. Alternativ können beispielsweise und gemäß einer Ausführungsform die Daten auf einer DSD 304a-304n gespeichert werden, während die entsprechende ECC auf einer anderen DSD 304a-304n gespeichert wird, von der die Daten selbst gespeichert werden (oder anderswo für die Steuerung 312 zugänglich sind). Gemäß einer Ausführungsform wird in Block 408 die ECC auf einer virtuellen Spur gespeichert, d. h. einer Spur, die logisch einer bestimmten Anzahl von HDD-Sektoren einer größeren Sektorgruppe zugeordnet ist. Beispielsweise kann die ECC auf einer Spur gespeichert werden, die von der Spur getrennt ist, auf der die entsprechenden Daten gespeichert sind, und für jeweils 100 Sektoren einer 500-Sektor-Gruppe, als ein nicht einschränkendes Beispiel. Somit muss nicht eine gesamte Spur gelesen werden, um zu der Parität zu gelangen, die in der Regel am Ende der Spur gespeichert ist, auf der die entsprechenden Daten gespeichert sind.
-
Als Reaktion auf eine Datenleseanforderung von einem Client, wie beispielsweise dem Host 350, sendet die Steuerung 312 eine Leseanforderung an die eine oder mehreren DSDs 304a-304n, auf denen die Daten gespeichert sind, und die eine oder die mehreren DSDs 304a-304n geben die angeforderten Daten und die entsprechende ECC an die Steuerung 312 zurück, und die Steuerung 312 decodiert die ECC, um die angeforderten Daten zu rekonstruieren oder zu perfektionieren. Gemäß einer Ausführungsform geben die DSDs 304a-304n eine Form der angeforderten Daten zurück, unabhängig davon, ob der Lesevorgang erfolgreich war. Das heißt, im Fall eines teilweise fehlgeschlagenen Lesevorgangs können die DSDs 304a-304n „Dummy“-Daten für die fehlgeschlagenen Sektoren zurückgeben, und die Steuerung 312 erkennt und korrigiert die Datenfehler basierend auf der verfügbaren ECC. Darüber hinaus kann Redundanz oder Parität, die häufig verwendet wird, von der Steuerung 312 (z. B. im Speicher 313) und/oder den DSDs 304a-304n zwischengespeichert werden, um ihre Verfügbarkeit zu verbessern.
-
Der dynamische und skalierbare Ansatz zur Fehlerkorrekturcodierung (ECC) basierend auf Datenintegritätsinformationen von den Systemspeichervorrichtungen, wie hierin beschrieben, stellt im Vergleich zu herkömmlichen Ansätzen ein zuverlässigeres Datenspeichersystem bereit, und daher ein verfügbareres Datenspeichersystem über den beabsichtigten oder spezifizierten oder ausgeschriebenen oder garantierten Betriebslebenszyklus. Dies ist zumindest teilweise darauf zurückzuführen, dass die Systemsteuerung 312 eine ganzheitliche Ansicht der Datensignalintegrität des Arrays von Datenspeichervorrichtungen 304a-304n im Hinblick auf die informative und praktische Rückmeldung der Datenintegrität erhält, welche die Population der Vorrichtungen 304a-304n an die Steuerung 312 meldet oder anderweitig mit dieser teilt. Daher wird innerhalb des Speichersystems ein optimaleres ECC-Schema verwendet, z. B. muss in Szenarien, in denen die Datenintegrität stark ist, nur eine erforderliche Menge an ECC generiert werden, und in Szenarien, in denen die Datenintegrität beeinträchtigt ist, kann so viel ECC wie erforderlich generiert werden, und Lesefehler werden verhindert. Anders ausgedrückt, die Art und Menge der ECC wird genauer an die tatsächlich benötigte Datenredundanz angepasst, da die Art und der Betrag der benötigten ECC auf der Grundlage von „echtem“ Betriebswissen von dem und über das Vorrichtungenarray bestimmt/vorhergesagt wird. Somit bietet dieser flexible und anpassungsfähige Ansatz für ECC weiterhin einen geringeren Rechenaufwand und ein effizienteres ECC-Framework, bei dem die Codierung nur dann generiert wird, wenn und wo dies erforderlich ist. Darüber hinaus bietet die Bestimmung auf Systemebene, wann und wo und wie viel Codierung erforderlich ist, ein leistungsfähigeres Datenspeichersystem, da die ECC-Berechnung und -Verarbeitung nur minimale Auswirkungen auf E/A-Operationen der Vorrichtungen hat.
-
Physische Beschreibung eines illustrativen Betriebskontextes
-
Konfiguration des Festplattenlaufwerks
-
Ausführungsformen können im Kontext eines Datenspeichersystems verwendet werden, in dem mehrere Datenspeichervorrichtungen (DSDs) verwendet werden, wie Festplattenlaufwerke (HDDs) sowie Festkörperspeichervorrichtungen (oder „Festkörperlaufwerke“ (SSDs)) und/oder Hybridlaufwerke. Somit ist gemäß einer Ausführungsform eine Draufsicht, die ein HDD 100 veranschaulicht, in 1A gezeigt, um einen beispielhaften Betriebskontext zu veranschaulichen.
-
1A veranschaulicht die funktionale Anordnung von Komponenten des HDD 100, einschließlich eines Gleiters 110b, der einen magnetischen Lese-Schreibkopf 110a einschließt. Zusammenfassend können der Gleiter 110b und der Kopf 110a als Kopfgleiter bezeichnet werden. Das HDD 100 schließt mindestens eine Kopf-Kardan-Aufhängung (HGA) 110 ein, die den Kopfgleiter, eine an dem Kopfgleiter typischerweise über eine Biegung befestigte Führungsaufhängung 110c und einen Lastbalken 110d, der an der Führungsaufhängung 110c befestigt ist, einschließt. Das HDD 100 schließt auch mindestens ein Aufzeichnungsmedium 120 ein, das drehbar an einer Spindel 124 montiert ist, und einen Antriebsmotor (nicht sichtbar), der an der Spindel 124 befestigt ist, um das Medium 120 zu drehen. Der Lese-Schreibkopf 110a, der auch als ein Wandler bezeichnet werden kann, schließt ein Schreibelement und ein Leseelement zum jeweiligen Schreiben und Lesen von Informationen ein, die auf dem Medium 120 des HDD 100 gespeichert sind. Das Medium 120 oder eine Vielzahl von Plattenmedien kann mit einer Plattenklemme 128 an der Spindel 124 befestigt werden.
-
Das HDD 100 schließt weiterhin einen Arm 132, der an der HGA 110 befestigt ist, einen Schlitten 134, einen Schwingspulenmotor (VCM), der einen Anker 136 einschließlich einer Schwingspule 140, die an dem Schlitten 134 befestigt ist, und einen Stator 144 einschließlich einem Schwingspulenmagneten (nicht sichtbar) ein. Der Anker 136 des VCM ist am Schlitten 134 befestigt und so eingerichtet, dass er den Arm 132 und den HGA 110 bewegt, um auf Abschnitte des Mediums 120 zuzugreifen, die alle gemeinsam auf einem Drehzapfen 148 mit einer dazwischen angeordneten Drehlageranordnung 152 montiert sind. Im Fall eines HDD mit mehreren Festplatten kann der Schlitten 134 als „E-Block“ oder Kamm bezeichnet werden, da der Schlitten so angeordnet ist, dass er eine Reihe von Armen trägt, die ihm das Aussehen eines Kamms verleihen.
-
Eine Anordnung aufweisend eine Kopf-Kardan-Aufhängung (z. B. HGA 110) einschließlich einer Vorrichtung, mit welcher der Kopfgleiter gekoppelt ist, einen Betätigungsarm (z. B. der Arm 132) und/oder Lastbalken, mit dem die Biegung gekoppelt ist, und ein Stellglied (z. B. VCM), mit dem der Betätigungsarm gekoppelt ist, kann zusammenfassend als Kopfstapelbaugruppe (HSA) bezeichnet werden. Eine HSA kann jedoch mehr oder weniger Komponenten als die beschriebenen einschließen. Beispielsweise kann sich eine HSA auf eine Anordnung beziehen, die weiterhin elektrische Verbindungskomponenten einschließt. Im Allgemeinen ist eine HSA die zum Bewegen des Kopfgleiters eingerichtete Anordnung, um auf Teile des Mediums 120 für Lese- und Schreibvorgänge zuzugreifen.
-
Mit weiterer Bezugnahme auf 1A werden elektrische Signale (z. B. Strom zu der Schwingspule 140 des VCM), die ein Schreibsignal zum und ein Lesesignal vom Kopf 110a aufweisen, über eine flexible Kabelanordnung (FCA) 156 (oder „Flexkabel“) übertragen. Die Verbindung zwischen dem flexiblen Kabel 156 und dem Kopf 110a kann ein Arm-Elektronik (AE)-Modul 160 einschließen, das einen integrierten Vorverstärker für das Lesesignal sowie andere elektronische Komponenten des Lese- und Schreibkanals aufweisen kann. Das AE-Modul 160 kann wie gezeigt am Schlitten 134 befestigt sein. Das flexible Kabel 156 kann mit einem elektrischen Verbinderblock 164 gekoppelt sein, der in einigen Konfigurationen eine elektrische Verbindung durch eine elektrische Durchführung bereitstellt, die durch ein HDD-Gehäuse 168 bereitgestellt wird. Das HDD-Gehäuse 168 (oder „Gehäusebasis“ oder „Basisplatte“ oder einfach „Basis“) in Verbindung mit einer HDD-Abdeckung bietet ein halb abgedichtetes (oder in einigen Konfigurationen hermetisch abgedichtetes) Schutzgehäuse für die Informationsspeicherkomponenten des HDD 100.
-
Andere elektronische Komponenten, einschließlich einer Festplattensteuerung und Servoelektronik mit einem digitalen Signalprozessor (DSP), stellen elektrische Signale an den Antriebsmotor, die Schwingspule 140 des VCM und den Kopf 110a der HGA 110 bereit. Das dem Antriebsmotor bereitgestellt elektrische Signal ermöglicht es dem Antriebsmotor, sich zu drehen und ein Drehmoment für die Spindel 124 bereitzustellen, das wiederum auf das Medium 120 übertragen wird, das an der Spindel 124 befestigt ist. Dadurch dreht sich das Medium 120 in eine Richtung 172. Das sich drehende Medium 120 erzeugt ein Luftpolster, das als Luftlager wirkt, auf dem die Luftlagerfläche (ABS) des Gleiters 110b läuft, sodass der Gleiter 110b über der Oberfläche des Mediums 120 fliegt, ohne mit einer dünnen Magnetaufzeichnungsschicht in Kontakt zu kommen, in der Informationen aufgezeichnet werden. In ähnlicher Weise erzeugt bei einem HDD, bei dem ein leichteres Gas als Luft verwendet wird, wie Helium als ein nicht einschränkendes Beispiel, das sich drehende Medium 120 ein Gaskissen, das als Gas- oder Fluidlager wirkt, auf dem der Gleiter 110b läuft.
-
Das elektrische Signal, das an die Schwingspule 140 des VCM bereitgestellt wird, ermöglicht es dem Kopf 110a des HGA 110, auf eine Spur 176 zuzugreifen, auf der Informationen aufgezeichnet werden. Somit schwingt der Anker 136 des VCM durch einen Bogen 180, wodurch der Kopf 110a der HGA 110 auf verschiedene Spuren auf dem Medium 120 zugreifen kann. Informationen werden auf das Medium 120 in einer Vielzahl von radial ineinander geschachtelten Spuren in Sektoren auf dem Medium 120, wie Sektor 184, gespeichert. Entsprechend besteht jede Spur aus einer Vielzahl von sektorierten Spurabschnitten (oder „Spursektor“), wie einem sektorierten Spurabschnitt 188. Jeder sektorierte Spurabschnitt 188 kann aufgezeichnete Informationen beinhalten, und einen Header mit Fehlerkorrekturcode-Informationen und ein Servo-Burst-Signalmuster, wie beispielsweise ein ABCD-Servo-Burst-Signalmuster, das Informationen sind, welche die Spur 176 identifizieren. Beim Zugreifen auf die Spur 176, liest das Leseelement des Kopfes 110a der HGA 110 das Servo-Burst-Signalmuster, das der Servoelektronik ein Positions-Fehlersignal (PES) liefert, welches das der Schwingspule 140 des VCM zugeführte elektrische Signal steuert und somit dem Kopf 110a ermöglicht, der Spur 176 zu folgen. Nach dem Finden der Spur 176 und dem Identifizieren eines bestimmten sektorierten Spurabschnitts 188, liest der Kopf 110a entweder Informationen aus der Spur 176 oder schreibt Informationen auf die Spur 176 in Abhängigkeit von Anweisungen, welche die Plattensteuerung von einem externen Agenten, zum Beispiel einem Mikroprozessor eines Computersystems, erhält.
-
Die elektronische Architektur einer Festplatte weist eine Vielzahl von elektronischen Komponenten zur Durchführung ihrer jeweiligen Funktionen zum Betrieb des HDD auf, wie eine Festplattensteuerung („HDC“), eine Schnittstellensteuerung, ein Arm-Elektronikmodul, einen Datenkanal, einen Motortreiber, einen Servoprozessor, Pufferspeicher, usw. Zwei oder mehr derartiger Komponenten können auf einer einzigen integrierten Leiterplatte kombiniert werden, die als „System auf einem Chip“ („SOC“) bezeichnet wird. Einige, wenn nicht alle solcher elektronischer Komponenten sind typischerweise auf einer Leiterplatte angeordnet, die mit der Unterseite eines HDD, wie zum Beispiel mit dem HDD-Gehäuse 168, gekoppelt ist.
-
Konfiguration des Festkörperlaufwerks
-
1B ist ein Blockdiagramm, das einen beispielhaften Betriebskontext veranschaulicht, mit dem Ausführungsformen der Erfindung implementiert werden können. 1B zeigt eine arttypische SSD-Architektur 150 mit einer SSD 152, die über eine primäre Kommunikationsschnittstelle 156 kommunikativ mit einem Host 154 gekoppelt ist. Ausführungsformen sind nicht auf eine Konfiguration beschränkt, wie sie in 1B dargestellt ist, vielmehr können Ausführungsformen mit anderen SSD-Konfigurationen als den in 1B veranschaulichten implementiert werden. Beispielsweise können Ausführungsformen implementiert werden, um in anderen Umgebungen zu arbeiten, die zum Schreiben und Lesen von Daten auf nichtflüchtigen Speicherkomponenten beruhen.
-
Der Host 154 stellt grob jede Art von Computerhardware, -software oder -firmware (oder eine beliebige Kombination des Vorstehenden) dar, die unter anderem Daten-E/A-Anforderungen oder -Aufrufe an eine oder mehrere Speichervorrichtungen sendet. Beispielsweise kann der Host 154 ein Betriebssystem sein, das auf einem Computer, einem Tablet, einem Mobiltelefon oder allgemein einem beliebigen Rechnertyp ausgeführt wird, der Speicher enthält oder mit diesem zusammenwirkt, wie beispielsweise dem Host 350 (3). Die primäre Schnittstelle 156, die den Host 154 mit der SSD 152 koppelt, kann beispielsweise der interne Bus eines Speichersystems oder ein Kommunikationskabel oder eine drahtlose Kommunikationsverbindung oder dergleichen sein.
-
Die in 1B dargestellte beispielhafte SSD 152 schließt eine Schnittstelle 160, eine Steuerung 162 (z. B. eine Steuerung mit darin enthaltener Firmware-Logik), einen Funktionsblock zur Adressierung 164, einen Datenpuffer-Cache 166, einen Fehlerkorrekturcode (ECC) 168 und eine oder mehrere nichtflüchtige Speicherkomponenten 170a, 170b-170n ein.
-
Die Schnittstelle 160 ist in diesem Zusammenhang ein Interaktionspunkt zwischen Komponenten, nämlich SSD 152 und Host 154, und ist sowohl auf Hardware- als auch auf Softwareebene anwendbar. Dies ermöglicht einer Komponente die Kommunikation mit anderen Komponenten über ein Eingabe-/Ausgabesystem und ein zugehöriges Protokoll. Eine Hardwareschnittstelle wird in der Regel durch die mechanischen, elektrischen und logischen Signale an der Schnittstelle und das Protokoll zu deren Sequenzierung beschrieben. Einige nicht einschränkende Beispiele für übliche und standardmäßige Schnittstellen schließen SCSI (Small Computer System Interface), SAS (Serial Attached SCSI) und SATA (Serial ATA) ein.
-
Eine SSD 152 schließt eine Steuerung 162 ein, welche die Elektronik enthält, welche die nichtflüchtigen Speicherkomponenten (z. B. NAND-Flash) mit dem Host verbrückt, wie den nichtflüchtigen Speicher 170a, 170b, 170n mit dem Host 154. Die Steuerung ist normalerweise ein eingebetteter Prozessor, der Code auf Firmware-Ebene ausführt, und ist ein wichtiger Faktor für die SSD-Ausführung.
-
Die Steuerung 162 ist über einen Funktionsblock zur Adressierung 164 mit dem nichtflüchtigen Speicher 170a, 170b, 170n über eine Schnittstelle verbunden. Die Funktion zur Adressierung 164 wird beispielsweise betrieben, um Zuordnungen zwischen logischen Blockadressen (LBAs) vom Host 154 zu einer entsprechenden physischen Blockadresse auf der SSD 152, nämlich auf dem nichtflüchtigen Speicher 170a, 170b, 170n der SSD 152, zu verwalten. Da die nichtflüchtige Speicherseite und die Hostsektoren unterschiedlich groß sind, muss eine SSD eine Datenstruktur aufbauen und verwalten, die es ihr ermöglicht, zwischen dem Host, der Daten in einen Sektor schreibt oder Daten aus einem Sektor liest, und der physischen nichtflüchtigen Speicherseite, auf der diese Daten tatsächlich platziert sind, zu übersetzen. Diese Tabellenstruktur oder „Zuordnung“ kann für eine Sitzung im flüchtigen Speicher 172 der SSD, wie DRAM oder eine andere lokale flüchtige Speicherkomponente, auf welche die Steuerung 162 und die Adressierung 164 zugreifen können, erstellt und verwaltet werden. Alternativ kann die Tabellenstruktur über Sitzungen im nichtflüchtigen Speicher der SSD, wie dem nichtflüchtigen Speicher 170a, 170b-170n, dauerhafter beibehalten werden.
-
Die Adressierung 164 interagiert zusätzlich zum nichtflüchtigen Speicher 170a, 170b-170n mit dem Datenpuffer-Cache 166 und dem Fehlerkorrekturcode (ECC) 168. Der Datenpuffer-Cache 166 einer SSD 152 verwendet in der Regel DRAM als Cache, ähnlich dem Cache in Festplattenlaufwerken. Der Datenpuffer-Cache 166 dient als Puffer oder Staging-Bereich für die Übertragung von Daten zu und von den nichtflüchtigen Speicherkomponenten sowie als Cache zum Beschleunigen zukünftiger Anforderungen für die zwischengespeicherten Daten. Der Datenpuffer-Cache 166 wird in der Regel mit einem flüchtigen Speicher implementiert, sodass die darin gespeicherten Daten nicht dauerhaft im Cache gespeichert sind, d. h. die Daten sind nicht persistent.
-
ECC 168 ist ein System zum Hinzufügen redundanter Daten oder Paritätsdaten zu einer Nachricht, sodass sie von einem Empfänger selbst dann wiederhergestellt werden kann, wenn entweder während des Übertragungsprozesses oder während der Speicherung eine Reihe von Fehlern aufgetreten sind.
-
Schließlich enthält die SSD 152 eine oder mehrere nichtflüchtige Speicherkomponenten 170a, 170b-170n. Für ein nicht einschränkendes Beispiel können die nichtflüchtigen Speicherkomponenten 170a, 170b-170n als Flash-Speicher (z. B. NAND- oder NOR-Flash) oder andere Arten von Solid-State-Speichern implementiert werden, die jetzt oder in Zukunft verfügbar sind. Die nichtflüchtigen Speicherkomponenten 170a, 170b-170n sind die tatsächlichen elektronischen Speicherkomponenten, auf denen Daten dauerhaft gespeichert sind. Die nichtflüchtigen Speicherkomponenten 170a, 170b-170n der SSD 152 können als analog zu den Festplatten in Festplattenlaufwerkspeichervorrichtungen (HDD-Speichervorrichtungen) angesehen werden.
-
Darüber hinaus können die hierin enthaltenen Verweise auf eine Datenspeichervorrichtung eine Multimedium-Speichervorrichtung (oder eine „Multimedium-Vorrichtung“, die manchmal als „Multi-Tier-Vorrichtung“ oder „Hybrid-Laufwerk“ bezeichnet werden kann) umfassen. Eine Multimedium-Speichervorrichtung bezieht sich allgemein auf eine Speichervorrichtung mit der Funktionalität von sowohl einer herkömmlichen HDD (siehe z. B. HDD 100) kombiniert mit einer SSD (siehe z. B. SSD 150) unter Verwendung eines nichtflüchtigen Speichers, wie Flash oder eines anderen Festkörperspeichers (z. B. integrierte Schaltungen), der elektrisch löschbar und programmierbar ist. Da sich Betrieb, Verwaltung und Steuerung der verschiedenen Arten von Speichermedien in der Regel unterscheiden, kann der Solid-State-Teil eines Hybridantriebs seine eigene entsprechende Steuerungsfunktionalität beinhalten, die zusammen mit der Festplattenfunktionalität in eine einzige Steuerung integriert werden kann. Eine Multimedium-Speichervorrichtung kann so konzipiert und eingerichtet sein, dass sie den Solid-State-Teil auf verschiedene Weise betreibt und nutzt, wie als nicht einschränkende Beispiele, indem sie den Festkörperspeicher als Cache-Speicher verwendet, zum Speichern häufig abgerufener Daten, zum Speichern 1/0-intensiver Daten, zum Speichern von Metadaten, die Nutzlastdaten entsprechen (z. B. zur Unterstützung beim Decodieren der Nutzlastdaten) und dergleichen. Weiterhin kann eine Multimedium-Speichervorrichtung im Wesentlichen als zwei Speichervorrichtungen in einem einzigen Gehäuse konzipiert und konfiguriert werden, d. h. ein traditionelles HDD und ein SSD, mit entweder einer oder mehreren Schnittstellen für die Hostverbindung.
-
Erweiterungen und Alternativen
-
In der vorangehenden Beschreibung wurden Ausführungsformen der Erfindung unter Bezugnahme auf zahlreiche spezifische Details beschrieben, die von Implementierung zu Implementierung variieren können. Daher können verschiedene Modifikationen und Änderungen daran vorgenommen werden, ohne von dem breiteren Geist und Schutzumfang der Ausführungsformen abzuweichen. Somit ist der einzige und ausschließliche Indikator für das, was die Erfindung ist und von den Anmeldern als Erfindung bezeichnet wird, die Reihe der Ansprüche, die sich aus dieser Anmeldung ergeben, in der spezifischen Form, in der diese Ansprüche geltend gemacht werden, einschließlich einer späteren Korrektur. Alle hierin ausdrücklich dargelegten Definitionen für Begriffe, die in solchen Ansprüchen enthalten sind, regeln die Bedeutung der in den Ansprüchen verwendeten Begriffe. Daher sollte keine Einschränkung, kein Element, keine Eigenschaft, kein Merkmal, kein Vorteil oder Attribut, das nicht ausdrücklich in einem Anspruch erwähnt wird, den Schutzumfang eines solchen Anspruchs in irgendeiner Weise einschränken. Die Beschreibung und die Zeichnungen sind demgemäß eher in einem veranschaulichenden als in einem einschränkenden Sinn zu betrachten.
-
Außerdem können in dieser Beschreibung bestimmte Prozessschritte in einer bestimmten Reihenfolge ausgeführt werden und alphabetische und alphanumerische Bezugszeichen können verwendet werden, um bestimmte Schritte zu identifizieren. Sofern in der Beschreibung nicht ausdrücklich angegeben, sind Ausführungsformen nicht unbedingt auf eine bestimmte Reihenfolge der Durchführung solcher Schritte beschränkt. Insbesondere dienen die Bezugszeichen lediglich der bequemen Identifizierung von Schritten und sind nicht dazu bestimmt, eine bestimmte Reihenfolge der Durchführung solcher Schritte festzulegen oder zu verlangen.