-
Gebiet
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Festkörperlaufwerke (SSDs) und insbesondere auf Verfahren und Vorrichtungen zur Detektion und Handhabung von Lesestörungen.
-
Hintergrund
-
In einer Vielfalt von Haushalts- und Unterhaltungselektronik ersetzen oder ergänzen häufig Festkörperlaufwerke (SSDs), die nichtflüchtige Speicher (NVMs) einbeziehen, herkömmliche sich drehende Festplattenlaufwerke zur Massenspeicherung. Diese nichtflüchtigen Speicher können eine oder mehrere Flash-Speichereinrichtungen wie beispielsweise NAND-Flash-Speicher enthalten und die Flash-Speichereinrichtungen können logisch in Blöcke unterteilt sein, wobei jeder der Blöcke logisch in adressierbare Seiten unterteilt ist. Diese adressierbaren Seiten können irgendeine einer Vielzahl von Größen (z. B. 512 Bytes, 1 Kilobyte, 2 Kilobyte, 4 Kilobyte) aufweisen, die möglicherweise mit den logischen Blockadressengrößen übereinstimmen, die von einer Hostrecheneinrichtung verwendet werden.
-
Wenn Zellen oder Seiten in einem Block aus einem NVM gelesen werden, kann der Prozess des Lesens einer Seite eine nachteilige Auswirkung auf andere Seiten in dem Block haben. Das Verfahren, das verwendet wird, um den Flash-Speicher zu lesen, kann dazu führen, dass sich umgebende Seiten in demselben Speicherblock im Laufe der Zeit ändern (d. h. programmiert werden). Die gelesene Seite versagt nicht, stattdessen können aber die umliegenden Seiten bei einem späteren Lesen versagen. Dieses Phänomen wird als Lesehäufungseffekt bezeichnet. Von Lesestörungen induzierte Fehler treten typischerweise auf, wenn eine Wortleitung (WL) eines NVM wesentlich häufiger als andere Wortleitungen auf demselben Block gelesen wird. Insbesondere sind die unmittelbar benachbarten Wortleitungen am meisten für Fehler anfällig und weisen eine große Anzahl von Fehlern auf, nachdem genügend Lesestörungsaktivität stattgefunden hat. Die Lesestörungsfehler können zu möglichem Datenverlust führen, wenn die Fehler zu zahlreich sind, um sie mit Fehlerkorrekturcodes (ECCs) zu korrigieren. Dementsprechend sind dann, wenn ein Lesestörungsproblem auftritt, effektiv eine Lesestörungsquelle oder ein „Angreifer“, der die Lesestörung verursacht, und ein „Opfer“ der Lesestörung, das von der Quelle beeinträchtigt wird, vorhanden.
-
Um Lesestörungsfehler zu handhaben oder zu mildern, umfassen bekannte Verfahren ein direktes Durchführen von Lesezählungen für jeden Block in einem NVM. Wenn beispielsweise eine bestimmte Schwelle für Zugriffszählungen eines Blocks erreicht ist, werden dann die Daten des gesamten Blocks in dem NVM verlagert. Dieses Verfahren ist jedoch ineffizient, da der gesamte Block verlagert wird, wenn die Lesezählungsschwelle erreicht ist, und dies ohne Rücksicht auf die tatsächlichen Fehlerraten durchgeführt wird.
-
Andere bekannte Mechanismen zum Handhaben von Lesestörungen umfassen ein Durchführen einer periodischen Hintergrundmedienabtastung (BGMS) des gesamten NVM, um herauszufinden, welche Blöcke in dem NVM eine höhere Anzahl von ECC-Fehlern aufweisen. Diese Methodik kann jedoch sehr viel Zeit benötigen, bis eine Stelle tatsächlich abgetastet wird. Somit können aufgrund dieser Verzögerung Daten, die von Lesestörungen betroffen sind, unkorrigierbar werden und Wiederherstellungen mit einer redundanten Anordnung unabhängiger Platten (RAID) oder andere Mechanismen erfordern, um die Daten wiederherzustellen. Derartiger Stand der Technik ist beispielsweise aus der
US 9 240 245 B1 , sowie der
US 2017/0 139 761 A1 , der
US 2012/0 030 506 A1 und der
US 2012/0 233 391 A1 bekannt.
-
Aufgabe der Erfindung ist es, Quellen von Lesestörungsfehlern genauer zu identifizieren, um in der Lage zu sein, eine Verlagerung von Daten nur bei Bedarf durchzuführen.
-
Zusammenfassung
-
Gemäß einem Aspekt ist ein Verfahren zum Bestimmen von Lesestörungsfehlern in einem nichtflüchtigen Speicher (NVM) offenbart. Das Verfahren umfasst ein Bestimmen eines ersten Fehlerpegels einer ersten Seite in einem Block des NVM und eines zweiten Fehlerpegels mindestens einer benachbarten Seite, die eine Wortleitung bzw. Wordline aufweist, die zu einer Wortleitung der ersten Seite benachbart ist, die über eine vorbestimmte Anzahl von Lesezugriffen auf die erste Seite auftreten. Zusätzlich umfasst das Verfahren ein Bestimmen, ob der zweite Fehlerpegel der mindestens einen benachbarten Seite über einer ersten vorbestimmten Schwelle liegt, und dann ein Vergleichen des ersten Fehlerpegels mit dem zweiten Fehlerpegel, wenn der zweite Fehlerpegel über der ersten vorbestimmten Schwelle liegt, um zu bestimmen ob der zweite Fehlerpegel um einen vordefinierten Faktor größer als der erste Fehlerpegel ist. Ein Lesestörungsfehler wird dann bestimmt, wenn der zweite Fehlerpegel um den vordefinierten Faktor größer als der erste Fehlerpegel ist.
-
Gemäß einem weiteren Aspekt ist ein Festkörperlaufwerk (SSD) offenbart, das einen nichtflüchtigen Speicher (NVM) und einen Controller, der kommunikationstechnisch mit einer Hosteinrichtung und dem NVM gekoppelt ist, enthält. Der Controller ist dazu ausgelegt, einen Fehlerpegel einer Angreiferseite in dem NVM zu bestimmen. Ferner bestimmt der Controller einen Fehlerpegel einer Opferseite, die innerhalb eines Blocks des NVM zu der Angreiferseite benachbart ist, und bestimmt, ob der Fehlerpegel der Opferseite größer als eine erste vorbestimmte Schwelle ist. Zusätzlich vergleicht der Controller den Fehlerpegel der Angreiferseite mit dem Fehlerpegel der Opferseite, wenn der Fehlerpegel des Opfers größer als die erste vorbestimmte Schwelle ist. Der Controller bestimmt dann einen Lesestörungsfehler der Opferseite, wenn der Vergleich der Fehlerpegel der Angreifer- und der Opferseite angibt, dass der Opferpegelfehler um einen vordefinierten Faktor größer als der erste Fehlerpegel ist.
-
Gemäß einem nochmals weiteren Aspekt ist eine Speichereinrichtung, die eine Vorrichtung zum Handhaben von Lesestörungen und Blockfehler in einem nichtflüchtigen Speicher (NVM) enthält, offenbart. Die Vorrichtung enthält Mittel zum Bestimmen, ob eine Anzahl von Lesezugriffen auf eine Seite in der NVM einen vordefinierten Wert erreicht hat. Ferner enthält die Vorrichtung Mittel zum Erhalten eines Fehlermaßes für die Seite, nachdem die Anzahl von Lesezugriffen den vordefinierten Wert erreicht hat, sowie Mittel zum Erhalten eines Fehlermaßes für mindestens eine benachbarte Seite, die sich auf einer zu der Seite benachbarten Wortleitung innerhalb des NVM befindet. Die Vorrichtung enthält auch Mittel zum Bestimmen, ob das Fehlermaß der mindestens einen benachbarten Seite größer als eine vordefinierte Schwelle ist. Schließlich enthält die Vorrichtung Mittel zum Bestimmen eines Lesestörungsfehlers der mindestens einen benachbarten Seite dann, wenn das Fehlermaß der mindestens einen benachbarten Seite um einen vordefinierten Faktor größer als das Fehlermaß der Seite ist.
-
Kurzbeschreibung der Zeichnungen
-
- 1 ist ein Blockdiagramm einer beispielhaften Festkörpervorrichtung (SSD), bei der eine Detektion von potentiellen Lesestörungsfehlern und ein Auslösen einer Blockverlagerung gemäß Ausführungsformen der vorliegenden Offenbarung durchgeführt werden kann.
- 2 ist eine Darstellung, die eine beispielhafte Organisation einer Flash-Speicheranordnung darstellt.
- 3 zeigt ein Ablaufdiagramm eines beispielhaften Lesestörungsdetektionsverfahrens gemäß der vorliegenden Offenbarung.
- 4 ist eine Darstellung, die eine Entscheidungsmatrix zur Handhabung von Lesestörungen und Blockfehlern gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
- 5 zeigt ein Ablaufdiagramm eines beispielhaften Verfahrens zum Handhaben von Lesestörungen und Blockfehlern gemäß der vorliegenden Offenbarung.
-
Genaue Beschreibung
-
Die vorliegende Offenbarung schafft Verfahren und Vorrichtungen, um genauer zu bestimmen, ob eine Seite oder ein Block eine potentielle Lesestörungsquelle ist, so dass eine Verlagerung von Blöcken mit höherer Wahrscheinlichkeit nur bei Bedarf durchgeführt wird. Basierend auf einer aktiven Detektion von potentiellen Lesestörungsquellen oder Angreiferen kann eine genaue NVM-Adresse bereitgestellt werden. Durch direktes Lesen der umliegenden potentiellen Opfer kann eine ECC-Fehlerzählung für die Opfer erhalten werden. Wenn die ECC-Fehlerzählung hoch genug ist, sorgen die vorliegenden Verfahren und Vorrichtungen für eine Verlagerung nur der betroffenen Seiten (z. B. der Seiten, deren Fehler hoch genug sind). Auf diese Weise muss nur ein Teil des Blocks verlagert werden und die angemessenen Daten werden verlagert. Darüber hinaus besteht keine Notwendigkeit, auf andere Prozesse zu warten, um Daten zu verlagern, was zu einem Datenverlust führen kann, wie er beispielsweise oben in Verbindung mit einer passiven BGMS-Abtastung beschrieben wurde. Der gegenwärtig offenbarte aktive Prozess des Abtastens der umgebenden Seiten kann verwendet werden, um zu verhindern, dass Lesestörungsprobleme außer Kontrolle geraten. Weiterhin stellen die gegenwärtig offenbarten Verfahren und Vorrichtungen ein Lesen der tatsächlichen potentiell betroffenen Seiten und ein Ausführen eines Fehlerhandhabungsprozesses bereit, um den Grad der Schwere der Fehler zu bestimmen. Durch das Bestimmen, wie schlimm der Fehlerpegel für Seiten ist, wird dieser Fehlerpegel dann ferner mit einer vordefinierten Skala verglichen, um zu bestimmen, ob die Seite tatsächlich ein Opfer von Lesestörungsfehlern ist.
-
Unter Bezugnahme auf die Zeichnungen sind Vorrichtungen und Verfahren zum Auslösen eines Lesestörungsprotokolls dargestellt, wobei das Protokoll der Prozess des Bestimmens von potentiellen nachteiligen Lesestörungsfehlern in einem Block ist und eines anschließenden Verlagerns des Blocks in dem NVM ist. Im Gegensatz zu dem Stand der Technik helfen die hier beschriebenen offenbarten Verfahren und Vorrichtungen, die logische Blockadressen (LBAs) berücksichtigen, dabei, sicherzustellen, dass die Lesestörungsdetektion an dem Hostzugriffsmuster durchgeführt wird und dass vorbeugende Maßnahmen ergriffen werden. Weiterhin wird die Schreibverstärkung deutlich reduziert.
-
1 ist ein Blockdiagramm eines Systems 100, das eine beispielhafte Festkörpervorrichtung (SSD) enthält, in der die offenbarte Detektion und Verlagerung von Lesestörungsblöcken gemäß mit Aspekten der Offenbarung implementiert werden kann. Das System 100 enthält einen Host 102 und eine SSD-Speichereinrichtung 104, die mit dem Host 102 gekoppelt ist. Der Host 102 liefert Befehle zum Übertragen von Daten zwischen dem Host 102 und der SSD-Speichereinrichtung 104 an die SSD-Speichereinrichtung 104. Beispielsweise kann der Host 102 einen Schreibbefehl zum Schreiben von Daten auf der SSD-Speichereinrichtung 104 an die SSD-Speichereinrichtung 104 liefern oder einen Lesebefehl zum Lesen von Daten von der SSD-Speichereinrichtung 104 an die SSD-Speichereinrichtung 104 liefern. Der Host 102 kann ein beliebiges System oder eine beliebige Vorrichtung mit einer Notwendigkeit zum Speichern und Abrufen von Daten und einer kompatiblen Schnittstelle zur Kommunikation mit der SSD-Speichereinrichtung 104 sein. Beispielsweise kann der Host 102 eine Recheneinrichtung, ein PC, ein tragbarer Computer, eine Workstation, ein Server, ein persönlicher digitaler Assistent, eine Digitalkamera oder ein digitales Telefon sein, um nur ein paar Beispiele zu nennen.
-
Die SSD-Speichereinrichtung 104 enthält eine Hostschnittstelle 106, einen Controller 108 (der in einigen Ausführungsformen auch einen Cache-Manager (CM) enthalten kann), einen Speicher 110, eine Schnittstelle für nichtflüchtigen Speicher (NVM-Schnittstelle) 112 (die auch als Flash-Speicher-Schnittstelle bezeichnet werden kann) und einen nichtflüchtigen Speicher (NVM) 114 wie beispielsweise einen NAND-Flash-Speicher. Die Hostschnittstelle 106 ist mit dem Controller 108 gekoppelt und ermöglicht eine Kommunikation zwischen dem Host 102 und dem Controller 108. Zusätzlich ist der Controller 108 mit dem Speicher 110 und dem NVM 114 über die NVM-Schnittstelle 112 gekoppelt. Die Hostschnittstelle 106 kann ein beliebiger Typ von Kommunikationsschnittstelle sein, wie etwa eine Schnittstelle mit integrierter Laufwerkelektronik (IDE-Schnittstelle), eine Schnittstelle für einen universellen seriellen Bus (USB-Schnittstelle), eine Serielle Peripherieschnittstelle (SP-Schnittstelle), eine Schnittstelle für eine Anbindung mit fortgeschrittener Technologie (ATA-Schnittstelle), eine Kleincomputersystemschnittstelle (SCSI), eine IEEE-1394-Scnittstelle (Firewire-Schnittstelle) oder dergleichen. In einigen Ausführungsformen enthält der Host 102 die SSD-Speichereinrichtung 104. In anderen Ausführungsformen ist die SSD-Speichereinrichtung 104 in Bezug auf den Host 102 entfernt angeordnet oder in einem entfernten Computersystem enthalten, das kommunikationstechnisch mit dem Host 102 gekoppelt ist. Der Host 102 kann mit der SSD-Speichereinrichtung 104 über eine drahtlose Kommunikationsverbindung kommunizieren.
-
Der Controller 108 steuert den Betrieb der SSD-Speichereinrichtung 104. In verschiedenen Aspekten empfängt der Controller 108 Befehle von dem Host 102 über die Hostschnittstelle 106 und führt die Befehle zum Übertragen von Daten zwischen dem Host 102 und dem NVM 114 aus. Ferner kann der Controller 108 ein Lesen aus und Schreiben in dem Speicher 110 zum Ausführen der verschiedenen Funktionen, die durch den Controller vorgenommen werden, verwalten und zwischengespeicherten Informationen, die in dem Speicher 110 gespeichert sind, verwalten.
-
Der Controller 108 kann jede Art von Verarbeitungseinrichtung wie beispielsweise ein Mikroprozessor, ein Mikrocontroller, ein eingebetteter Controller, eine Logikschaltung, Software, Firmware oder dergleichen enthalten, um den Betrieb der SSD-Speichereinrichtung 104 zu steuern. In einigen Aspekten können einige oder alle der hierin als von dem Controller 108 ausgeführt beschriebenen Funktionen stattdessen von einem anderen Element der SSD-Speichereinrichtung 104 durchgeführt werden. Beispielsweise kann die SSD-Speichereinrichtung 104 einen Mikroprozessor, einen Mikrocontroller, einen eingebetteten Controller, eine Logikschaltung, eine Software, eine Firmware oder irgendeine Art von Verarbeitungseinrichtung zum Ausführen einer oder mehrerer der hierin als von dem Controller 108 ausgeführt beschriebenen Funktionen enthalten. Gemäß anderen Aspekten werden eine oder mehrere der hierin als von dem Controller 108 ausgeführt beschriebenen Funktionen stattdessen von dem Host 102 ausgeführt. In nochmals weiteren Aspekten können einige oder alle der hierin als von dem Controller 108 ausgeführt beschriebenen Funktionen stattdessen von einem anderen Element wie beispielsweise einem Controller in einem Hybridlaufwerk, das sowohl nichtflüchtige Speicherelemente als auch magnetische Speicherelemente enthält, ausgeführt werden.
-
Der Speicher 110 kann ein beliebiger Speicher, eine beliebige Recheneinrichtung oder ein beliebiges System, das in der Lage ist, Daten zu speichern, sein. Beispielsweise kann der Speicher 110 ein Speicher mit wahlfreiem Zugriff (RAM), ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM), ein statischer Speicher mit wahlfreiem Zugriff (SRAM), ein synchroner dynamischer Speicher mit wahlfreiem Zugriff (SDRAM), ein Flash-Speicher, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM), ein elektrisch löschbarer, programmierbarer Nur-Lese-Speicher (EEPROM) oder dergleichen sein. In verschiedenen Ausführungsformen verwendet der Controller 108 den Speicher 110 oder einen Teil davon, um Daten während der Übertragung von Daten zwischen dem Host 102 und dem NVM 114 zu speichern. Zum Beispiel kann der Speicher 110 oder ein Teil des Speichers 110 ein Cache-Speicher sein.
-
Der NVM 114 empfängt Daten von dem Controller 108 über die NVM-Schnittstelle 112 und speichert die Daten. Der NVM 114 kann jede Art von nichtflüchtigem Speicher sein, wie beispielsweise ein Flash-Speichersystem, ein Flash-Speicher vom NAND-Typ, ein Festkörperlaufwerk, eine Flash-Speicherkarte, eine sichere digitale Karte (SD-Karte), eine USB-Speichereinrichtung, eine CompactFlash-Karte, ein SmartMedia-Gerät, eine Flash-Speicheranordnung oder dergleichen.
-
Im Beispiel von 1 umfassen Leseanforderungen im Allgemeinen eine Anforderung von dem Host 102 über die Schnittstelle 106, die Daten innerhalb einer gegebenen logischen Seitenadresse, die dem NVM 114 zugeordnet ist, zu lesen. Jede logische Seitenadresse ist durch die Verwendung einer Tabelle, die von dem Systemcontroller 108 gepflegt wird, einer spezifischen physischen Adresse innerhalb des NVM 114 zugeordnet. Im Allgemeinen ordnet die Tabelle jede logische Seitenadresse einer physischen Seitenadresse innerhalb des NVM 114 zu. Die Verwendung von logischen Seitenadressen und eine Seitenadressenumwandlung von logisch zu physisch ermöglicht es dem Controller, den Speicher innerhalb des NVM 114 effektiv zu verwalten und verschiedene Zuordnungs- und Detektionsmechanismen zu implementieren, die den offenbarten Mechanismus zum Detektieren von Lesestörungsfehlern umfassen.
-
2 ist ein Blockdiagramm, das eine beispielhafte Flash-Speicher-Organisation darstellt. Eine Flash-Speicheranordnungsstruktur 200 kann eine Anzahl von Speicherblöcken 202 (nachfolgend in dieser Offenbarung „Blöcke“) enthalten. Jeder Block 202 kann eine Anzahl von Seiten umfassen. Der Zugriff auf die Seiten kann über eine Anzahl „n“ von Wortleitungen 210 (z. B. WL0 bis WLn) gesteuert werden, obwohl im Beispiel von 2 der Klarheit und Prägnanz der Darstellung halber nur WL4 bis WL11 speziell gezeigt sind. In dem dargestellten Beispiel steuert eine Wortleitung (WL) den Zugriff auf eine einzelne Seite.
-
In einem Aspekt können die Seiten und Wortleitungen in dem Beispiel einer Mehrniveau-Zellen-NAND-Konstruktion (MLC-NAND-Konstruktion, d. h. einer Konstruktion mit 2 Bit pro Zelle, auch bekannt als MSB und LSB) unter Verwendung eines höchstwertigen Bits (MSB) und eines niedrigwertigsten Bits (LSB) adressiert werden. In einem Beispiel können die LSB- und MSB-Adressen für eine Seite basierend auf der Wortleitungsnummer innerhalb eines Blocks (z. B. 8 für WL 8) gemäß den Beziehungen LSB-Adresse = (WL × 2) - 1 und MSB-Adresse = LSB + 3 bestimmt werden. So ist beispielsweise für die Wortleitung WL 8 die LSB-Adresse 15 und die MSB-Adresse 18. Zusätzlich kann für die erste und die letzte Wortleitung in einem Block (z. B. WL 0 und WL n) die Beziehung zum Bestimmen der LSB- und MSB-Adresse LSB-Adresse = (WL × 2) - 1 und MSB-Adresse = LSB + 2 sein. Es ist ferner zu beachten, dass eine derartige Adressierung lediglich beispielhaft ist und auch andere Adressierungsschemata in den gegenwärtig offenbarten Verfahren und Vorrichtungen verwendet werden können. Zum Beispiel können andere Beispiele von Konstruktionen von NVM-Vorrichtungen zur Verwendung mit den offenbarten Verfahren und Vorrichtungen in Betracht gezogen werden, wie etwa Konstruktionen, die 1 Bit pro Zelle, 3 Bit pro Zelle (z. B. Dreiniveau-Zellen (TLC)) und 4 Bits pro Zelle umfassen.
-
Die vorliegenden Verfahren und Vorrichtungen sorgen für eine Detektion einer bestimmten Angreiferseite, wie z. B. Seite 206, die in 2 gezeigt ist. Häufiger Lesezugriff auf jene Seiten, die als Angreiferseiten bestimmt sind, wird mit höherer Wahrscheinlichkeit dazu führen, dass Störungsfehler in anderen Seiten, die von angrenzenden oder benachbarten Wortleitungen gesteuert werden, wie beispielsweise den Opferseiten 208 und 210 auftreten. Obwohl 2 eine beispielhafte Speicherorganisation des Flash-Speichers 200 veranschaulicht, ist die vorliegende Offenbarung nicht auf dieses spezielle Beispiel beschränkt. In anderen Beispielen kann der Flash-Speicher 200 andere Speicherorganisationen aufweisen. Der Flash-Speicher 200 kann in dem NVM 114 der SSD 104 enthalten sein.
-
3 zeigt ein Ablaufdiagramm eines Lesestörungs-Detektionsverfahrens 300. Insbesondere stellte die in 3 offenbarte Methodik ein beispielhaftes Lesestörungs-Detektionsverfahren bereit, das Schutz gegen Fälle umfasst, in denen vielleicht eine bestimmte Seite häufig gelesen oder auf diese Seite häufig zugegriffen wird, die hierin als „Angreifer“-Seite bezeichnet wird, wobei der Angreifer die Lesestörung in Seiten auf benachbarten Wortleitungen herbeiführt, die hier als „Opfer“ bezeichnet werden. Das Verfahren 300 verwendet eine Verfolgung oder eine Akkumulation der Anzahl von Lesevorgängen bei Seiten durch den Host (z. B. Host 102), wie es in Block 302 gezeigt ist.
-
Für jede vorbestimmte Anzahl von Host-Seiten-Lesevorgängen wird der Fehlerpegel eines Angreifers (d. h. der häufig gelesenen Seite) mit dem Fehlerpegel eines Opfers (d. h. einer Seite von einer benachbarten Wortleitung zu der Angreifer-Wortleitung) verglichen, wie es in Entscheidungsblock 304 gezeigt ist. Es ist hier anzumerken, dass im Aspekt eine Bestimmung, welche Seiten Angreifer sind, auf einer A-priori-Kenntnis der vergangenen Lesegeschichte basieren kann. Weiterhin ist zu beachten, dass, während die betroffenen Opferseiten die Seiten an zu der Wortleitung der Angreiferseite benachbarten Wortleitungen sind, die Bedeutung von benachbart zwei Seiten an Wortleitungen auf beiden Seiten der Angreiferseiten-Wortleitung sein können, aber auch mehr als unmittelbar benachbarte Seiten sein können, wie etwa ein Bereich von Seiten. Zum Beispiel können in einigen Aspekten dann, wenn die Angreiferseite „X“ ist, die benachbarten Opferseiten diejenigen innerhalb einer Anzahl „n“ von Seiten umfassen, so dass die benachbarten Opferseiten X+n und X-n Wortleitungen umfassen.
-
Als ein Beispiel kann die vorbestimmte Anzahl, die in Entscheidungsblock 304 gezeigt ist, eine Primzahl sein, wie beispielsweise 4001. Die Verwendung einer Primzahl verhindert, dass die Hostaktivität den Algorithmus absichtlich oder unabsichtlich vermeiden kann. Zum Beispiel verwenden einige bekannte Dateisysteme in der Regel Zweierpotenzen für ihre Basiszuweisungsgrößen für Dateien. Dementsprechend verhindert eine Primzahl, dass der Host wiederholt eine Stelle liest, ohne das Verfahren auszulösen. In einem Aspekt kann diese vorbestimmte Anzahl so gewählt werden, dass sie groß genug ist, um zu häufige Bestimmungen der weiteren Schritte des Verfahrens 300, die nachfolgend erörtert sind, zu vermeiden. Wenn die Anzahl der Host-Lesevorgänge die vorbestimmte Anzahl nicht erreicht hat, kehrt der Ablauf zu Block 302 zurück, um weiterhin die Anzahl von Host-Lesevorgängen zu akkumulieren, bis die Anzahl die vorbestimmte Anzahlbedingung in Block 304 erreicht. Zusätzlich ist zu beachten, dass das Verfahren 300 jeweils nach einer Anzahl von Lesevorgängen (z. B. alle 4001 Host-Seitenlesevorgänge) wiederholt wird. Somit kann ein Beispiel der Codierung des Prozesses von Block 304 eine Modulo-Operation sein, so dass eine bestätigende Erfüllung der Bedingung jeweils nach einer vorbestimmten Anzahl von Lesevorgängen auftritt (z. B. Ist MOD (Anzahl von Lesevorgängen, 4001) = 0?).
-
Wenn die vorbestimmte Anzahl von Lesevorgängen erreicht worden ist, wie es in Block 304 bestimmt ist, geht der Ablauf zu Block 306 über, in dem der Angreifer-Fehlerpegel gespeichert wird und ein Fehlerpegel der Opferseite bestimmt wird. Gemäß einem Beispiel kann der Prozess von 306 ein Speichern von fehlerhaften WL-MSB-Bits der Angreifer-Wortleitung Ea und ein Lesen des WL-MSB des Opfers umfassen, um eine Anzahl von fehlerhaften Bits Ev zu erhalten. Gemäß einem weiteren Beispiel kann der Fehlerpegel auf den Bitfehlerraten (BERs) der Angreifer- und Opfer-Seiten basieren.
-
Der Opfer-Fehlerpegel kann dann mit einer ersten vorbestimmten Schwelle verglichen werden, wie es in Block 308 gezeigt ist. Wenn der Fehlerpegel nicht größer als die vorbestimmte Schwelle ist, kehrt der Ablauf zu Block 302 zurück, um dann die Bestimmung der vordefinierten Anzahl von Host-Lesevorgängen neu zu beginnen. Wenn der Opfer-Fehlerpegel (oder der ECC-Fehlerpegel) über der Schwelle liegt, geht der Ablauf zu Block 310 über. In einem Aspekt ist dann, wenn die Anzahl der Opfer-Bits in Fehler Ev größer als 150 ist, die Wahrscheinlichkeit des Auftretens von Lesestörungsfehlern höher.
-
In Entscheidungsblock 310 wird dann der Angreifer-Fehlerpegel mit dem Fehlerpegel des Opfers verglichen. In einem Beispiel kann dieser Vergleich vorgenommen werden, indem das Verhältnis des Fehlerpegels des Opfers zu dem Fehlerpegel des Angreifers bestimmt wird und das Verhältnis mit einem vorbestimmten Verhältniswert verglichen wird. In einem Beispiel ist dann, wenn die Anzahl der fehlerhaften Bits für das Opfer mehr als die doppelte Anzahl der fehlerhaften Bits des Angreifers ist (z. B. Ev/Ea > 2), die Wahrscheinlichkeit einer Lesestörung hoch und eine Lesestörung kann bestimmt werden. In einem solchen Fall werden sowohl die LSB- als auch die MSB-Seite der Angreifer-WL und die beiden benachbarten Opfer-WL zu einem neuen Block verlagert, wie es durch Block 312 angegeben ist, wonach der Ablauf zu Block 302 zurückkehrt. Es ist jedoch zu beachten, dass die Methodik nicht auf eine Konstruktion mit zwei Bit pro Zelle (z. B. MLC-NAND mit LSB und MSB) beschränkt ist, sondern auch in anderen NVM-Konstruktionen wie 1 Bit pro Zelle, 3 Bit pro Zelle usw. angewendet werden kann. Obwohl der Prozess 312 als eine Verlagerung von benachbarten Opfer-Wortleitungen beinhaltend beschrieben ist, könnte in anderen Aspekten in alternativen Typen von NVMs, wie beispielsweise NVM-Konstruktionen mit 1 Bit pro Zelle, zudem nur eine einzelne Seite auf einer der benachbarten Wortleitungen verschoben werden.
-
Wenn andererseits der Fehlerpegel der Opferseite größer als die erste Schwelle ist, wie es in Block 308 bestimmt wird, aber das Verhältnis des Opfer-Fehlerpegels zu dem Angreifer-Pegel nicht über dem Schwellenverhältnis liegt, wie es in Block 310 bestimmt wird, ist der hohe Fehlerpegel des Opfers wahrscheinlich nicht auf eine Lesestörung zurückzuführen, sondern kann stattdessen auf einen Hochfehlerblock hinweisen. In einem solchen Fall können das LSB und MSB der Opferseite verlagert werden und der gesamte Block kann dann überwacht oder nach einem exzessiven Fehler abgetastet werden, wie es in BGMS durchgeführt wird, wenn eine getestete Seite beispielsweise Fehlergrenzkriterien überschreitet, und dann die Daten entsprechend nach vordefinierten Kriterien verlagert werden, wie es in Block 314 gezeigt ist.
-
Wie zu erkennen ist, werden die Datenrahmen mit dem höchsten Fehlerpegel zur Lesestörungsdetektion verwendet. Gemäß einem Aspekt wird dann, wenn logische Blocknummer (LBN) des Angreifers auf einer MSB-Seite ist, der LBN-Fehlerpegel zur Lesestörungsdetektion verwendet. Alle vier Datenrahmen der Opfer-MSB-Seite können dann gelesen werden und der höchste Fehlerpegel für die Lesestörungsdetektion verwendet werden. Gemäß einem weiteren Aspekt wird in einem speziellen Fall, in dem die WL1 als Opfer verwendet wird, wenn der Angreifer auf WL0 ist, die Lesestörungsprüfung dann übersprungen, wenn der Angreifer eine der 4 letzten Seiten eines teilweise geschriebenen Blocks ist.
-
Gemäß einem weiteren Aspekt können die Kriterien zum Entscheiden, wie Lesestörungen und Blockfehler gehandhabt werden sollen, Pegel oder Stufen der Schwere auf der Basis der für die Angreifer- und Opfer-Seite bestimmten Fehlerpegels zugeordnet. In einem Aspekt können die Kriterien auf Codestufen von Paritätsprüfungen mit niedriger Besetzung (LDPC-Codestufen) von 1 bis 4 verweisen, wobei 1 die am wenigsten schwere Fehlerstufe ist und 4 die schwerste Fehlerstufe ist. In einem weiteren Aspekt stellen die Fehlerstufen Niveaus dar, die den Bitfehlerraten (BERs) der gelesenen Seite entsprechen. Wenn die Bestimmung auf einer LDPC-Engine (d. h. einer weichen Decodierung) und nicht auf einer BCH-Engine (d. h. einer harten Decodierung, obwohl dies kein Ausschluss der BCH-Nutzung mit den vorliegenden Verfahren und Vorrichtungen sein soll) basiert, sind die Fehlerstufen nicht mit einer exakten BER korreliert, sondern sind eine Annäherung oder Schätzung basierend auf dem Schwierigkeitsgrad der Korrektur eines Datenstückes. Je niedriger die Stufenzahl ist, desto leichter ist es, die Daten zu korrigieren. Umgekehrt gilt: je höher die Bühnenzahl ist, desto schwieriger ist es, die Daten zu korrigieren, was in der Regel ein Zeichen für eine hohe Anzahl von Fehlern ist. Die Stufen können auf unterschiedliche Schwellen der Fehlerkorrektur festgelegt werden, wodurch bei kleineren Stufenzahlen sehr kleine Datenmengen verlagert werden und umgekehrt in großen Stufenzahlen große Datenmengen verlagert werden. In einem speziellen Beispiel würde ein Stufe-1-Pegel zu einer Verlagerung eines einzelnen Datenrahmens von Daten (z. B. 4KB) führen, Stufe 2 würde zu einer Verlagerung einer ganzen Seite führen, Stufe 3 würde einen RAID-Streifen (z. B. 32 Seiten von Daten) verlagern, und Stufe 4 würde zu einer Verlagerung eines ganzen Blocks (und aller Blöcke in dem Streifen) führen. Es ist ferner anzumerken, dass die Schwellen zum Festlegen der Stufen abhängig von NAND-Typ, NAND-Reife, Herstellung und LDPC-Engine-Effizienz/Effektivität variieren können.
-
Als Beispiel für die Kriterien, die solche Stufen verwenden, ist in 4 eine beispielhafte Entscheidungsmatrix oder -tabelle 400 dargestellt. Insbesondere zeigt die Tabelle 400, dass die Kriterien, um zu bestimmen, was als Lesestörungsereignis betrachtet wird und welche spezifischen Maßnahmen für die Opfer- und/oder Angreifer-Daten ergriffen werden sollten, auf einer Matrix des Verhältnisses zwischen den Angreifer-Stufen und den Opfer-Stufen basieren.
-
Wie in Tabelle 400 ersichtlich ist, wird dann, wenn die Angreifer-Stufen 2, 3 oder 4 sind, während die Opferstufen 1 oder 2 sind, jeweils in unterschiedlichem Ausmaß entweder die logische Blockadresse (LBA) des Angreifers, der Angreifer-Seiten-Satz (d. h. der Seiten-Satz des ursprünglichen Angreifers (LSB oder MSB)) oder der gesamte Block-Satz verlagert oder in einen anderen Block verschoben. Auf der Opferseite wird in der Opfer-Stufe 3 die ganze WL (d. h. die LSB- und die MSB-Seite) verschoben. Schließlich wird wie in Tabelle 400 gezeigt dann, wenn entweder der Angreifer oder das Opfer auf der schwersten Stufe 4 ist, der ganze Block-Satz in einen anderen Block verschoben oder verlagert.
-
5 veranschaulicht ein weiteres beispielhaftes Verfahren 500 zum Bestimmen von Lesestörungsfehlern in einem NVM gemäß der vorliegenden Offenbarung. Das Verfahren 500 liefert einen Prozess zum Bestimmen einer potentiellen Lesestörungsquelle (d. h. eines Angreifers) durch Bestimmen oder Erhalten des Fehlerpegels mindestens einer zu einer potentiellen Lesestörungsquelle benachbarten Seite. Wie oben erörtert kann durch direktes Lesen der umliegenden „potentiellen Opfer“ eine Fehlerzählung oder ein Fehlerpegel für die Opfer erhalten werden und dann, wenn dieser Fehlerpegel hoch genug ist, kann eine Lesestörung festgestellt werden, so dass eine Verlagerung eingeleitet wird, um die Lesestörungseffekte zu mildern. Weiterhin kann die Verlagerung nur an den betroffenen Seiten durchgeführt werden (d. h. den Seiten mit einem Fehlerpegel, der hoch genug ist, um eine vorbestimmte Fehlerschwelle zu überschreiten, die die Angreiferseite und eine oder mehrere benachbarte Seiten umfassen).
-
Wie in 5 gezeigt umfasst das Verfahren 500 ein Bestimmen eines ersten Fehlerpegels oder Fehlermaßes einer ersten Seite in einem Block des NVM, der bzw. das über eine vorbestimmte Anzahl von Lesezugriffen durch einen Host auftritt, wie es in Block 502 gezeigt ist. In bestimmten Aspekten kann die Bestimmung des Blocks 502 mit dem Controller 108 oder mit dem Controller 108 in Kombination mit dem Host 102 vorgenommen werden, wie es in 2 gezeigt ist. Darüber hinaus kann die erste Seite als potenzieller Angreifer oder potenzielle Quelle für Lesestörungsfehler identifiziert werden. Das Verfahren 500 umfasst ferner ein Bestimmen eines zweiten Fehlermaßes oder eines Fehlerpegels mindestens einer benachbarten Seite, die eine Wortleitung aufweist, die zu einer Wortleitung der ersten Seite benachbart ist, das bzw. der über die vorbestimmte Anzahl von Lesezugriffen auf die erste Seite auftritt, wie es in Block 504 gezeigt ist. In einigen Beispielen kann die Bestimmung von Block 504 durch den Controller 108 oder den Controller 108 in Kombination mit dem Host 102 durchgeführt werden. Die mindestens eine benachbarte Seite kann als Opfer-Seite identifiziert werden. Es ist zu beachten, dass in einem Aspekt die Begriffe „angrenzende Seite“ oder „benachbarte Seite“, wie sie hierin verwendet werden, synonym zu den Begriffen „angrenzende Wortleitung“ oder „benachbarte Wortleitung“ sein können. Wie in 2 gezeigt weist beispielsweise die WL 8 entsprechende Seite 206 angrenzende oder benachbarte Seiten 208 oder 210 auf, die den Wortleitungen WL 7 bzw. WL 9 entsprechen. Somit stellt die benachbarte Seite 208 beispielsweise eine zu Seite 206 und WL 8 physisch benachbarte Wortleitung dar. In anderen Aspekten wird in Betracht gezogen, dass bei bestimmten Typen von NVMs, wie z. B. 3D-NAND-Technologien als Beispiel, Lesestörungseffekte vorliegen können, die sich zwischen bestimmten Blöcken erstrecken können, nicht nur über Wortleitungen in einem einzigen Block. Dementsprechend könnten die Begriffe „benachbarte Seite“ oder „benachbarte Wortleitung“ in solchen NAND-Geometrien auch so betrachtet werden, dass sie eine Bedeutung umfassen, bei der die benachbarte Seite oder Wortleitung, die ein Opfer von Lesestörungseffekten ist, eine Seite oder Wortleitung in einem anderen Block ist, in dem Leseoperationen einer Seite in einem bestimmten Block aufgrund der Nähe in einer vertikalen Dimension beispielsweise Lesestörungseffekte in einer Wortleitung oder Seite in einem anderen Block hervorrufen.
-
Nach der Bestimmung des zweiten Fehlerpegels in Block 504 umfasst das Verfahren 500 ein Bestimmen, ob der zweite Fehlerpegel über einer ersten vorbestimmten Schwelle liegt, wie es in Block 506 angegeben ist. In einem Aspekt kann der Fehlerpegel in Form von Anzahl der fehlerhaften Bits oder der ECC-Fehlerzählung in der mindestens einen benachbarten Seite ausgedrückt sein. In einem solchen Fall ist die vorbestimmte Schwelle eine bestimmte Anzahl von Bitfehlern oder eine ECC-Fehlerzählung. In einem bestimmten Beispiel könnte diese Fehlerzählung auf 150 gesetzt sein, wie es aus empirischen Hinweisen bestimmt ist, um eine Anzahl von Fehlern zu repräsentieren, die eine große Wahrscheinlichkeit für einen Lesestörungsfehler angeben, der in einer Seite auftritt, aber diese Zahl ist nicht darauf beschränkt. Weiterhin kann der Prozess in Block 506 durch den Controller 108 oder durch den Controller 108 in Kombination mit dem Host 102 durchgeführt werden.
-
Das Verfahren 500 umfasst auch ein Vergleichen des ersten Fehlerpegels mit dem zweiten Fehlerpegel dann, wenn der zweite Fehlerpegel über der ersten vorbestimmten Schwelle liegt, um zu bestimmen, ob der zweite Fehlerpegel um einen vordefinierten Faktor größer als der erste Fehlerpegel ist, wie es in Block 508 gezeigt ist. In einem Aspekt ist der Prozess von Block 508 eine Bestimmung, ob die Menge an Fehlern in einer Opferseite im Vergleich zu der benachbarten Angreiferseite ausreichend hoch ist, um eine Bestimmung zu rechtfertigen, dass eine Lesestörungssituation auftritt, wie es in Block 510 gezeigt ist. Das heißt, dass es dann, wenn die Opferseite einen relativ größeren Fehlerpegel im Vergleich mit Fehlern auf der Angreiferseite zeigt, im Gegensatz zu dem Fall, in dem einfach ein hoher Fehlerpegel im Block als Ganzes vorliegt, wahrscheinlicher ist, dass das Lesen der Angreiferseite durch den Lesestörungseffekt den Fehler in der benachbarten Opferseite verursacht. Ein Beispiel des Prozesses von Blocks 508 ist in Block 310 von 3 zu sehen, in dem ein Fehlerverhältnis von Opfer zu Angreifer bestimmt wird, wie beispielsweise der doppelte Fehlerpegel. Die Prozesse in den Blöcken 508 und 510 können durch den Controller 108 oder durch den Controller 108 in Kombination mit dem Host 102 durchgeführt werden.
-
In anderen Aspekten kann das Verfahren 500 ferner ein Verlagern der ersten Seite und der mindestens einen benachbarten Seite innerhalb des NVM nach dem Feststellen des Lesestörungsfehlers umfassen, wie dies in Block 312 des Verfahrens 300 dargestellt ist. Zusätzlich kann die Methodik auch ein Feststellen einer Bestimmung eines Hochfehlerblocks bei dem Block des NVM umfassen, wenn der zweite Fehlerpegel nicht um den vordefinierten Faktor größer als der erste Fehlerpegel ist. Ein Beispiel für diesen Prozess ist in Block 310 des Verfahrens 300 zu sehen. Außerdem kann das Verfahren 500 basierend auf der Bestimmung eines Hochfehlerblocks ein Verlagern der mindestens einen benachbarten Seite innerhalb des NVM nach dem Feststellen eines Hochfehlerblocks umfassen. Ein Beispiel für diesen Prozess ist in Block 314 von 3 zu sehen. Zudem können beim Verlagern von Seiten in dem Verfahren von 5 insbesondere eine Adresse des höchstwertigen Bits (MSB-Adresse) und eine Adresse des niedrigstwertigen Bits (LSB-Adresse) der mindestens einen benachbarten Seite innerhalb des NVM verschoben werden, nachdem entweder die Lesestörungs- oder die Hochfehlerbock-Bestimmung festgestellt worden ist. Beispiele für die MSB- und LSB-Verlagerung sind in Verbindung mit den Blöcken 312 und 314 beschrieben.
-
In nochmals weiteren Aspekten kann das Verfahren 500 ein Bestimmen mehrerer Stufen für die erste Seite und die mindestens eine benachbarte Seite auf der Basis der bestimmten ersten und zweiten Fehler umfassen, wie dies zuvor in Verbindung mit 4 beschrieben worden ist. Insbesondere ist jede der mehreren Stufen ein Schweregrad des Fehlers, der auf einer Seite auftritt, wie etwa die Angreiferstufen 1-4 und die Opferstufen 1-4, die in 4 dargestellt sind. Gemäß der Zuordnung von Stufen zu den Fehlern kann die Verlagerung, die auf den bestimmten Stufen basiert, ein Verlagern einer logischen Blockadresse der ersten Seite (z. B. die Verlagerungen für den Status Angreiferstufe 2), eines physischen Orts der ersten Seite und der mindestens einen benachbarten Seite innerhalb des NVM (z. B. die Verlagerungen für Opferstufe 3 und Angreiferstufen 1-3) und eines ganzen Blocks, in dem die erste Seite und die mindestens eine benachbarte Seite liegen (z. B. Opferstufe 4 und Angreiferstufe 4), umfassen. Weiterhin kann das Verfahren 500 ein Beibehalten der Orte der ersten Seite und der mindestens einen benachbarten Seite umfassen, wenn die Stufenpegel der ersten Seite und der mindestens einen benachbarten Seite Werte aufweisen, die einen niedrigen Schweregrad des Fehlers in den Seiten angeben (z. B. Angreiferstufe 1 und Opferstufen 1 und 2).
-
Gemäß einem weiteren Aspekt wird eine Speichereinrichtung, die eine Vorrichtung zum Handhaben von Lesestörungen und Blockfehlern in einem nichtflüchtigen Speicher (NVM) enthält, in Betracht gezogen, wobei die Vorrichtung Mittel zum Bestimmen, ob eine Anzahl von Lesezugriffen auf eine Seite in der NVM einen vordefinierten Wert erreicht hat, enthält. Als Beispiel können diese Mittel zum Bestimmen, ob der Lesezugriff den vordefinierten Wert erreicht, von einer Struktur wie dem Controller 108 oder dem Controller 108 in Kombination mit dem Speicher 110, dem NVM 114 und/oder dem Host 102 und Äquivalenten davon wie etwa einer Logikschaltung oder einem dedizierten Prozessor implementiert werden. Die Vorrichtung enthält ferner Mittel zum Erhalten eines Fehlermaßes für die Seite, nachdem die Anzahl der Lesezugriffe den vordefinierten Wert erreicht hat. Diese Mittel zum Erhalten des Fehlermaßes für die Seite können von einer Struktur wie dem Controller 108 oder dem Controller 108 in Kombination mit dem Speicher 110, dem NVM 114 und/oder dem Host 102 und Äquivalenten davon wie etwa einer Logikschaltung oder einem dedizierten Prozessor implementiert werden.
-
Die Vorrichtung kann ferner Mittel zum Erhalten eines Fehlermaßes für mindestens eine benachbarte Seite, die sich auf einer zu der Seite benachbarten Wortleitung innerhalb des NVM befindet, enthalten. Diese Mittel zum Erhalten des Fehlermaßes für die mindestens eine benachbarte Seite können von einer Struktur wie dem Controller 108 oder dem Controller 108 in Kombination mit dem Speicher 110, dem NVM 114 und/oder dem Host 102 und Äquivalenten davon wie etwa einer Logikschaltung oder einem dedizierten Prozessor implementiert werden. Weiterhin kann die Vorrichtung Mittel zum Bestimmen, ob das Fehlermaß der mindestens einen benachbarten Seite größer als eine vordefinierte Schwelle ist, enthalten. Diese Mittel zum Bestimmen, ob das Fehlermaß der mindestens einen benachbarten Seite größer als eine vordefinierte Schwelle ist, können von einer Struktur wie dem Controller 108 oder dem Controller 108 in Kombination mit dem Speicher 110, dem NVM 114 und/oder dem Host 102 und Äquivalenten davon wie etwa einer Logikschaltung oder einem dedizierten Prozessor implementiert werden. Schließlich kann die Vorrichtung Mittel zum Bestimmen eines Lesestörungsfehlers der mindestens einen benachbarten Seite, wenn das Fehlermaß der mindestens einen benachbarten Seite um einen vordefinierten Faktor größer als das Fehlermaß der Seite ist, enthalten. Dieses Mittel zum Bestimmen des Lesestörungsfehlers können von einer Struktur wie dem Controller 108 oder dem Controller 108 in Kombination mit dem Speicher 110, dem NVM 114 und/oder dem Host 102 und Äquivalenten davon wie etwa einer Logikschaltung oder einem dedizierten Prozessor implementiert werden.
-
Wie von Fachleuten erkannt werden wird, bieten die gegenwärtig offenbarten Verfahren und Vorrichtungen ein Lesen der tatsächlichen potentiell von einer Lesestörung betroffenen Seiten, indem der gesamte Fehlerhandhabungsprozess durchlaufen wird, um zu bestimmen, wie schwer der Fehler ist, um genauer zu bestimmen, ob die Seite tatsächlich ein Opfer von Lesestörungen ist.
-
Obwohl die obige Beschreibung viele spezifische Ausführungsformen der Erfindung enthält, sollten diese nicht als Einschränkungen des Umfangs der Erfindung, sondern als Beispiele für spezifische Ausführungsformen davon ausgelegt werden. Dementsprechend sollte der Umfang der Erfindung nicht durch die dargestellten Ausführungsformen bestimmt werden, sondern durch die beigefügten Ansprüche und deren Äquivalente.
-
Die verschiedenen oben beschriebenen Merkmale und Prozesse können unabhängig voneinander verwendet werden oder können auf verschiedene Weise kombiniert werden. Alle möglichen Kombinationen und Unterkombinationen sollen unter den Umfang dieser Offenbarung fallen. Zusätzlich können in einigen Implementierungen bestimmte Verfahrens-, Ereignis-, Zustands- oder Prozessblöcke entfallen. Die hierin beschriebenen Verfahren und Prozesse sind auch nicht auf irgendeine bestimmte Reihenfolge beschränkt und die Blöcke oder Zustände, die sich darauf beziehen, können in anderen geeigneten Reihenfolgen durchgeführt werden. Beispielsweise können beschriebene Aufgaben oder Ereignisse in einer anderen Reihenfolge, als in der, in der sie speziell offenbart sind, ausgeführt werden oder mehrere können zu einem einzigen Block oder Zustand kombiniert werden. Die Beispielaufgaben oder -ereignisse können seriell, parallel oder in anderer geeigneter Weise durchgeführt werden. Aufgaben oder Ereignisse können zu den offenbarten beispielhaften Ausführungsformen hinzugefügt oder aus diesen entfernt werden. Die hierin beschriebenen Beispielsysteme und -komponenten können anders ausgebildet sein als beschrieben. Zum Beispiel können Elemente zu den offenbarten beispielhaften Ausführungsformen hinzugefügt, aus diesen entfernt oder umgeordnet werden.