-
TECHNISCHES GEBIET
-
Diese Offenbarung betrifft Speichergeräte wie Halbleiterlaufwerke.
-
STAND DER TECHNIK
-
Halbleiterlaufwerke (SSDs, Solid-State-Drives) können in Computer in Anwendungen verwendet werden, bei denen relativ geringe Latenz und Speicherung mit hoher Kapazität gewünscht werden. SSDs können zum Beispiel geringere Latenz als Festplatten (HDDs) zeigen, insbesondere für zufällige Lese- und Schreibvorgänge. Dies kann größeren Durchsatz für zufällige Lesevorgänge aus einem und für zufällige Schreibvorgänge in ein SSD im Vergleich zu einer Festplatte erlauben. Zusätzlich können SSDs mehrere parallele Datenkanäle zum Lesen von und zum Schreiben auf Speichereinheiten benutzen, was in hohen sequenziellen Lese- und Schreibgeschwindigkeiten resultieren kann.
-
SSDs können nichtflüchtige Speichereinheiten benutzen, wie Flash-Speichereinheiten, die weiter Daten speichern, ohne eine dauernde oder periodische Stromversorgung zu benötigen. Flash-Speichereinheiten werden durch Anlegen einer Spannung an die Speicherzelle beschrieben und gelöscht. Die zum Löschen der Flash-Speichereinheiten verwendete Spannung kann relativ hoch sein und kann über viele Löschoperationen physische Änderungen an der Flash-Speicherzelle verursachen. Aus diesem Grund können sich Flash-Speicherzellen nach vielen Löschoperationen abnutzen, was ihre Fähigkeit zum Speichern von Ladung reduziert und die Fähigkeit zum Schreiben neuer Daten in die Flash-Speicherzellen reduziert oder eliminiert.
-
KURZFASSUNG
-
In manchen Beispielen beschreibt die Offenbarung ein Speichergerät, das eine Vielzahl von Speichereinheiten, die logisch in eine Vielzahl von Blöcken aufgeteilt sind, und einen Controller umfasst. In manchen Beispielen kann der Controller konfiguriert sein, einen jeweiligen Füllprozentsatz für jeden jeweiligen Block der Vielzahl von Blöcken zu ermitteln; den kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, eine mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.
-
In manchen Beispielen beschreibt die Offenbarung ein Verfahren, das Ermitteln eines jeweiligen Füllprozentsatzes für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts durch einen Controller eines Speichergeräts; Ermitteln des kleinsten Füllprozentsatzes für die Vielzahl der jeweiligen Füllprozentsätze durch den Controller; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, Durchführen einer mit der Integrität des Speichergeräts verknüpften Maßnahme durch den Controller umfasst.
-
In manchen Beispielen beschreibt die Offenbarung ein computerlesbares Speichermedium, das Anweisungen umfasst, die, wenn sie ausgeführt werden, einen oder mehrere Prozessoren eines Speichergeräts konfigurieren, einen jeweiligen Füllprozentsatz für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts zu ermitteln; den kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln; und als Reaktion auf ein Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, eine mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.
-
In manchen Beispielen beschreibt die Offenbarung ein System, das Mittel zum Ermitteln eines jeweiligen Füllprozentsatzes für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts umfasst. Das System kann auch Mittel zum Ermitteln des kleinsten Füllprozentsatzes für die Vielzahl der jeweiligen Füllprozentsätze umfassen. Gemäß diesen Beispielen kann das System auch Mittel zum Durchführen einer mit einer Integrität des Speichergeräts verknüpften Maßnahme umfassen, als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet.
-
Die Details eines oder mehrerer Beispiele werden in den beigefügten Zeichnungen und der Beschreibung unten dargelegt. Andere Eigenschaften, Aufgaben und Vorteile werden aus der Beschreibung und den Zeichnungen und aus den Ansprüchen ersichtlich.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein konzeptuelles und schematisches Blockdiagramm, das ein Beispielsystem illustriert, das ein mit einem Hostgerät verbundenes Speichergerät enthält.
-
2 ist ein konzeptuelles Blockdiagramm, das eine Beispielspeichereinheit 12AA illustriert, das eine Vielzahl von Blöcken enthält, wobei jeder Block eine Vielzahl von Seiten enthält.
-
3 ist ein konzeptuelles und schematisches Blockdiagramm, das einen Beispielcontroller illustriert.
-
4 ist eine grafische Beispieldarstellung, die eine Verteilung von Blöcken als Funktion eines Füllprozentsatzes während des stationären Betriebs eines Speichergeräts illustriert.
-
5 ist eine grafische Darstellung des Schreibverstärkungsfaktors als Verhältnis des Überversorgungsverhältnisses p für ein Beispielspeichergerät.
-
6 ist eine grafische Darstellung des schlechtesten Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät.
-
7 ist ein Flussdiagramm, das eine Beispielmethode zum Abschätzen einer Integrität eines Speichergeräts auf der Basis eines kleinsten Füllprozentsatzwerts illustriert.
-
8 ist eine grafische Darstellung des mittleren Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Offenbarung beschreibt eine Methode zur Integritätsverfolgung eines Speichergeräts, wie eines Halbleiterlaufwerks (SSD). In manchen Beispielen kann die Methode einen oder mehr Parameter benutzen, der bzw. die von einem Controller des Speichergeräts als Teil von automatischen Speicherbereinigungsoperationen (Garbage Collection) des Speichergeräts verfolgt wird bzw. werden. Ein Speichergerät kann Speichereinheiten enthalten, die jede eine Vielzahl von Blöcken enthalten, wobei jeder Block Speicherzellen enthält, die Daten speichern. Ein Controller eines Speichergeräts kann einen Füllprozentsatz für jeden Block des Speichergeräts ermitteln, während er eine automatische Speicherbereinigung durchführt. Der Füllprozentsatz bezieht sich auf ein Verhältnis der gültigen Daten, die in einem Block gespeichert sind, im Vergleich zur Gesamtkapazität des Blocks. Der Controller kann dann den kleinsten Füllprozentsatz über die Blöcke hinweg ermitteln. Der Controller kann diesen kleinsten Füllprozentsatz mit einem vorbestimmten Schwellenwert vergleichen. Falls der kleinste Füllprozentsatz größer als der Schwellenwert ist, kann dies anzeigen, dass sich die Integrität des Speichergeräts verschlechtert. Die Integrität des Speichergeräts kann mit einer Anzahl von freien Blöcken im Speichergerät verknüpft sein. Falls die Anzahl von freien Blöcken gering wird, kann der Controller keinen ausreichenden Abnutzungsausgleich und keine ausreichende automatische Speicherbereinigung durchführen, um die Leistung des Speichergeräts aufrechtzuerhalten. Falls die Anzahl der freien Blöcke zu gering ist, kann der Controller nicht fähig sein, die verlorene Leistung wiederherzustellen, oder neue Daten können nicht in das Speichergerät geschrieben werden. Deshalb ist ein Ermitteln, warm sich die Integrität des Speichergeräts verschlechtert, bevor sich die Integrität so weit verschlechtert, dass sie nicht wiederherstellbar ist, für einen fortgesetzten Betrieb des Speichergeräts wichtig.
-
In manchen Beispielen kann der Controller für jede automatische Speicherbereinigungsoperation den kleinsten Füllprozentsatz ermitteln. Der Controller kann dann einen mittleren kleinsten Füllprozentsatz für eine vorbestimmte Anzahl von jüngsten kleinsten Füllprozentsätzen ermitteln. Durch Mitteln der kleinsten Füllprozentsätze für jeden von einer Vielzahl von jüngsten automatischen Speicherbereinigungsoperationen kann der Controller den Wert des kleinsten Füllprozentsatzes über die Vielzahl von jüngsten automatischen Speicherbereinigungsoperationen glätten. Der Controller kann dann diesen mittleren kleinsten Füllprozentsatz mit dem Schwellenwert vergleichen.
-
Der Controller kann als Reaktion auf ein Ermitteln, dass der mittlere kleinste Füllprozentsatz größer als der Schwellenwert ist, eine oder mehrere vorbestimmte Operationen durchführen. Der Controller kann zum Beispiel einen Betriebsparameter modifizieren oder eine Angabe der Speichergeräteintegrität an ein Hostgerät des Speichergeräts ausgeben.
-
Auf diese Weise kann der Controller des Speichergeräts die Integrität des Speichergeräts während der Laufzeit durch Verwendung eines einzelnen Werts oder eines Mittelwerts eines einzelnen Werts über eine Vielzahl von Operationen überwachen. Dieser einzelne Wert oder Mittelwert eines einzelnen Werts wird dann mit einem Schwellenwert verglichen, um eine Ermittlung der Speichergeräteintegrität zu machen. Deshalb kann die Speichergeräteintegritätsüberwachung relativ leicht und mit geringem Overhead sein. Zusätzlich setzen die hier beschriebenen Methoden einen während der automatischen Speicherbereinigung verfolgten Parameter ein.
-
Im Vergleich werden manche Methoden zum Abschätzen der Speichergeräteintegrität durch ein Hostgerät implementiert und erfordern, dass das Hostgerät einen Schreibverstärkungsfaktor auf der Basis roher Speichergerätstatistiken berechnet (wie der Datenmenge, die das Hostgerät das Speichergerät angewiesen hat zu schreiben, und der Datenmenge, die das Speichergerät tatsächlich geschrieben hat, einschließlich der während Schreibvorgängen, automatischer Speicherbereinigung, Abnutzungsausgleich und Ähnlichem geschriebenen Daten). Das Hostgerät schätzt dann die Speichergeräteintegrität auf der Basis des berechneten Schreibverstärkungsfaktors ab. Das Sammeln der rohen Speichergerätstatistiken und die Berechnung des Schreibverstärkungsfaktors kann eine Verzögerung beim Ermitteln der Speichergeräteintegrität einführen, die ein Eingreifen, falls sich die Speichergeräteintegrität verschlechtert hat, verzögern kann. In manchen Beispielen kann die Verzögerung so schwerwiegend sein, dass das Speichergerät einen Zustand annimmt, von dem sich das Speichergerät nicht erholen kann. Im Gegensatz zu diesen Methoden können die hier beschriebenen Methoden keine Ermittlung eines Schreibverstärkungsfaktors auf der Basis von tatsächlichen Schreibstatistiken erfordern und/oder können vom Speichergerät-Controller anstatt vom Hostgerät implementiert werden. Dementsprechend können die hier beschriebenen Methoden eine frühere Erfassung oder Vorhersage einer Verschlechterung der Speichergeräteintegrität erlauben und können die Wahrscheinlichkeit reduzieren oder eliminieren, dass das Speichergerät einen Zustand annimmt, von dem sich das Speichergerät nicht erholen kann.
-
1 ist ein konzeptuelles und schematisches Blockdiagramm, das ein Beispielsystem illustriert, das ein mit einem Hostgerät 15 verbundenes Speichergerät 2 umfasst. Das Hostgerät 15 kann nichtflüchtige, im Speichergerät 2 enthaltene Speichereinheiten benutzen, um Daten zu speichern und abzurufen. Das Hostgerät 15 kann irgendein Rechengerät umfassen, zum Beispiel einschließlich eines Computerservers, einer NAS-Einheit (Network Attached Storage), eines Desktop-Computers, eines Notebook-Computers (z. B. eines Laptops), eines Tablet-Computers, einer Set-Top-Box, eines mobilen Rechengeräts wie eines „Smartphones”, eines Fernsehers, einer Kamera, eines Anzeigegeräts, eines digitalen Medienplayers, einer Videospielkonsole, eines Videostreaminggeräts oder Ähnlichem.
-
Wie in 1 illustriert, kann das Speichergerät 2 einen Controller 4, ein nichtflüchtiges Speicherarray 6, einen Cache 8 und eine Schnittstelle 10 enthalten. In manchen Beispielen kann das Speichergerät 2 zusätzliche Komponenten enthalten, die in 1 der Klarheit halber nicht gezeigt sind. Zum Beispiel kann das Speichergerät 2 Stromversorgungskomponenten enthalten, zum Beispiel einschließlich eines Kondensators, eines Superkondensators oder einer Batterie; eine Leiterplatte, an der Komponenten des Speichergeräts 2 mechanisch angebracht sind und die elektrisch leitende Bahnen enthält, die Komponenten des Speichergeräts 2 elektrisch miteinander verbinden; oder Ähnliches enthalten. In manchen Beispielen enthält das Speichergerät 2 ein Solid-State-Drive (SSD).
-
Das Speichergerät 2 kann die Schnittstelle 10 zu einem Ankoppeln mit dem Hostgerät 15 enthalten. Die Schnittstelle 10 kann eine mechanische Verbindung und eine elektrische Verbindung mit dem Hostgerät 15 oder beides bereitstellen. Die Schnittstelle 10 kann einen der folgenden Busse oder beide umfassen: einen Datenbus zum Austauschen von Daten mit dem Hostgerät 15 und einen Steuerbus zum Austauschen von Befehlen mit dem Hostgerät 15. Die Schnittstelle 10 kann in Übereinstimmung mit irgendeinem geeigneten Protokoll arbeiten. Die Schnittstelle 10 kann zum Beispiel in Übereinstimmung mit einem der oder mehrere der folgenden Protokolle arbeiten: ATA (Advanced Technology Attachment) (z. B. Serial ATA (SATA) und Parallel ATA (PATA)), Fibre Channel, SCSI (Small Computer System Interface), SAS (Serially Attached SCSI), PCI (Peripheral Component Interconnect) und PCI-Express. Die elektrische Verbindung der Schnittstelle 10 (z. B. der Datenbus, der Steuerbus oder beide) ist elektrisch mit dem Controller 4 verbunden und stellt eine elektrische Verbindung zwischen dem Hostgerät 15 und dem Controller bereit, was erlaubt, dass Daten zwischen dem Hostgerät 15 und dem Controller 4 ausgetauscht werden.
-
Das Speichergerät 2 kann das NVMA 6 enthalten, das eine Vielzahl von Speichereinheiten 12AA–12NN umfassen kann (kollektiv „Speichereinheiten 12”), die jeweils konfiguriert sein können, Daten zu speichern und/oder abzurufen. Eine Speichereinheit der Speichereinheiten 12 kann zum Beispiel Daten und eine Nachricht vom Controller 4 erhalten, die die Speichereinheit anweist, die Daten zu speichern. Gleichermaßen kann die Speichereinheit der Speichereinheiten 12 eine Nachricht vom Controller 4 erhalten, die die Speichereinheit anweist, Daten abzurufen. In manchen Beispielen kann jede der Speichereinheiten 12 konfiguriert sein, relativ große Datenmengen zu speichern (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB usw.).
-
In manchen Beispielen können die Speichereinheiten 12 Flash-Speichereinheiten umfassen. Flash-Speichereinheiten können auf NAND oder NOR basierende Flash-Speichereinheiten enthalten und können Daten auf der Basis einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle beinhaltet ist. In NAND-Flash-Speichereinheiten kann die Flash-Speichereinheit in eine Vielzahl von Blöcken aufgeteilt sein. 2 ist ein konzeptuelles Blockdiagramm, das eine Beispielspeichereinheit 12AA illustriert, die eine Vielzahl von Blöcken 16A–16N (kollektiv „Blöcke 16”) enthält, wobei jeder Block eine Vielzahl von Seiten 18AA–18NM (kollektiv „Seiten 18”) enthält. Jeder Block der Blöcke 16 kann eine Vielzahl von NAND-Zellen enthalten. Zeilen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch in Reihe geschaltet sein, um eine Seite zu definieren (eine Seite der Seiten 18). Die jeweiligen Zellen in jeder der Vielzahl der Seiten 18 können elektrisch mit den jeweiligen Bitleitungen verbunden sein. Der Controller 4 kann auf Seitenebene Daten in die NAND-Flash-Speichereinheiten schreiben und daraus lesen und Daten aus den NAND-Flash-Speichereinheiten auf der Blockebene löschen.
-
In manchen Beispielen kann es für den Controller 4 nicht praktikabel sein, separat mit jeder Speichereinheit der Speichereinheiten 12 verbunden zu sein. Dementsprechend können die Verbindungen zwischen den Speichereinheiten 12 und dem Controller 4 gebündelt sein. Als ein Beispiel können die Speichereinheiten 12 in Kanäle 14A–14N (kollektiv „Kanäle 14”) gruppiert sein. Zum Beispiel, wie in 1 illustriert, können die Speichereinheiten 12AA–12AN in einen ersten Kanal 14A gruppiert sein, und die Speichereinheiten 12NA–12NN können in einen N-ten Kanal 14N gruppiert sein. Die in jeden der Kanäle 14 gruppierten Speichereinheiten 12 können sich eine oder mehrere Verbindungen mit dem Controller 4 teilen. Die jeweils in den ersten Kanal 14A gruppierten Speichereinheiten 12 können zum Beispiel an einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus angeschlossen sein. Das Speichergerät 2 kann einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus jeweils für einen Kanal der Kanäle 14 enthalten. In manchen Beispielen kann jeder der Kanäle 14 einen Satz Chipfreigabe- bzw. CE-Leitungen enthalten, die zur Bündelung von Speichereinheiten auf jedem Kanal verwendet werden können. Jede CE-Leitung kann zum Beispiel mit einer entsprechenden Speichereinheit der Speichereinheiten 12 verbunden sein. Auf diese Weise kann die Anzahl der separaten Verbindungen zwischen den Speichereinheiten 12 reduziert werden. Zusätzlich kann, da jeder Kanal einen unabhängigen Satz von Verbindungen mit dem Controller 4 aufweist, die Reduktion von Verbindungen die Datendurchsatzrate nicht wesentlich beeinflussen, da der Controller 4 gleichzeitig unterschiedliche Befehle an jeden Kanal erteilen kann.
-
In manchen Beispielen kann das Speichergerät 2 eine Anzahl von Speichereinheiten 12 enthalten, die ausgewählt wurde, um eine Gesamtkapazität bereitzustellen, die größer als die für das Hostgerät 15 zugängliche Kapazität ist. Dies wird als Überversorgung bezeichnet. Falls das Speichergerät 2 zum Beispiel angekündigt wird, 240 GB an für Benutzer zugänglicher Speicherkapazität zu enthalten, kann das Speichergerät 2 ausreichende Speichereinheiten 12 enthalten, um eine Gesamtspeicherkapazität von 256 GB zu ergeben. Die 16 GB der Speichergeräte 12 können für das Hostgerät 15 oder einen Benutzer des Hostgeräts 15 nicht zugänglich sein. Stattdessen können die zusätzlichen Speichergeräte 12 zusätzliche Blöcke 16 bereitstellen, um Schreibvorgänge, automatische Speicherbereinigung, Abnutzungsausgleich und Ähnliches zu erleichtern. Ferner können die zusätzlichen Speichergeräte 12 zusätzliche Blöcke 16 bereitstellen, die verwendet werden können, falls sich manche Blöcke abnutzen, um unverwendbar zu werden, und aus der Verwendung ausgeschieden werden. Das Vorhandensein der zusätzlichen Blöcke 16 kann ein Ausscheiden der abgenutzten Blöcke erlauben, ohne eine Änderung in der für das Hostgerät 15 verfügbaren Speicherkapazität zu verursachen. In manchen Beispielen kann das Ausmaß an Überversorgung als p = (T – D)/D definiert werden, wobei p das Überversorgungsverhältnis, T die Gesamtanzahl der Blöcke des Speichergeräts 2 und D die Anzahl der Blöcke des Speichergeräts 2 ist, die für das Hostgerät 15 zugänglich sind.
-
Das Speichergerät 2 umfasst den Controller 4, der eine oder mehr Operationen des Speichergeräts 2 verwalten kann. 3 ist ein konzeptuelles und schematisches Blockdiagramm, das einen Beispielcontroller 20 illustriert, der ein Beispiel für den Controller 4 in 1 sein kann. In manchen Beispielen kann der Controller 20 ein Schreibmodul 22, ein Wartungsmodul 24, ein Lesemodul 26, eine Vielzahl von Kanalcontrollern 28A–28N (kollektiv „Kanalcontroller 28”) und ein Adressübersetzungsmodul 20 umfassen. In anderen Beispielen kann der Controller 20 zusätzliche Module oder Hardwareeinheiten umfassen oder kann weniger Module oder Hardwareeinheiten umfassen. Der Controller 20 kann einen Mikroprozessor, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA) oder andere digitale Logikschaltkreise umfassen.
-
Der Controller 20 kann über die Schnittstelle 10 an das Hostgerät 15 ankoppeln und die Speicherung von Daten in den und den Abruf von Daten aus den Speichereinheiten 12 verwalten. Das Schreibmodul 22 des Controllers 20 kann zum Beispiel Schreibvorgänge in die Speichereinheiten 12 verwalten. Das Schreibmodul 22 kann zum Beispiel über die Schnittstelle 10 eine Nachricht vom Hostgerät 15 erhalten, die das Speichergerät 2 anweist, zu einer logischen Adresse gehörige Daten und die Daten zu speichern. Das Schreibmodul 22 kann das Schreiben der Daten in die Speichereinheiten 12 verwalten.
-
Das Schreibmodul 22 kann zum Beispiel mit dem Adressübersetzungsmodul 20 kommunizieren, das die Übersetzung zwischen logischen Adressen, die vom Hostgerät 15 zur Verwaltung von Speicherpositionen von Daten verwendet werden, und physikalischen Blockadressen verwaltet, die vom Schreibmodul 22 zur Lenkung des Schreibens der Daten in Speichereinheiten verwendet werden. Das Adressübersetzungsmodul 30 von Controller 20 kann eine Flash-Übersetzungsschicht oder -tabelle benutzen, die logische Adressen (oder logische Blockadressen) der von den Speichereinheiten 12 gespeicherten Daten in physikalische Blockadressen der von den Speichereinheiten 12 gespeicherten Daten übersetzt. Das Hostgerät 15 kann zum Beispiel die logischen Blockadressen der von den Speichereinheiten 12 gespeicherten Daten in Anweisungen oder Nachrichten an das Speichergerät 2 benutzen, während das Schreibmodul 22 physikalische Blockadressen der Daten einsetzt, um das Schreiben der Daten in die Speichereinheiten 12 zu steuern. (Gleichermaßen kann das Lesemodul 26 physikalische Blockadressen zu einer Steuerung des Lesens von Daten aus den Speichereinheiten 12 benutzen.) Die physikalischen Blockadressen entsprechen tatsächlichen physikalischen Blöcken (z. B. den Blöcken 16 von 2) der Speichereinheiten 12.
-
Auf diese Weise kann es dem Hostgerät 15 erlaubt sein, eine statische logische Blockadresse für einen bestimmten Satz von Daten zu verwenden, während sich die physikalische Blockadresse, an der die Daten tatsächlich gespeichert sind, ändern kann. Das Adressübersetzungsmodul 20 kann die Flash-Übersetzungsschicht oder -tabelle unterhalten, um die logischen Blockadressen physikalischen Blockadressen zuzuordnen, um die Verwendung der statischen logischen Blockadresse durch das Hostgerät 15 zu erlauben, während sich die physikalische Blockadresse der Daten ändern kann, wie zum Beispiel aufgrund von Abnutzungsausgleich, automatischer Speicherbereinigung oder Ähnlichem.
-
Wie oben besprochen, kann das Schreibmodul 24 von Controller 20 eine oder mehrere Operationen zum Verwalten des Schreibens von Daten in die Speichereinheiten 16 zu ausführen. Das Schreibmodul 24 kann zum Beispiel das Schreiben von Daten in die Speichereinheiten 16 verwalten, indem es einen oder mehrere Blöcke innerhalb der Speichereinheiten 16 auswählt, um die Daten zu speichern, und verursacht, dass die Speichereinheiten der Speichereinheiten 16, die die ausgewählten Blocks enthalten, die Daten tatsächlich speichern. Wie oben besprochen, kann das Schreibmodul 24 verursachen, dass das Adressübersetzungsmodul 30 die Flash-Übersetzungsschicht oder -tabelle auf der Basis der ausgewählten Blöcke aktualisiert. Das Schreibmodul 24 kann zum Beispiel eine Nachricht vom Hostgerät 4 erhalten, die eine Dateneinheit und eine logische Blockadresse enthält, einen Block innerhalb einer bestimmten Speichereinheit der Speichereinheiten 16 auswählen, um die Daten zu speichern, verursachen, dass die bestimmte Speichereinheit der Speichereinheiten 16 die Daten tatsächlich speichert (z. B. über einen Kanalcontroller der Kanalcontroller 28A–28N, der der bestimmten Speichereinheit entspricht), und verursachen, dass das Adressübersetzungsmodul 30 die Flash-Übersetzungsschicht oder -tabelle aktualisiert, um anzuzeigen, dass die logische Blockadresse dem ausgewählten Block in der bestimmten Speichereinheit entspricht.
-
Die Flash-Übersetzungsschicht oder -tabelle kann auch eine Aufteilung von vom Hostgerät 15 erhaltenen Daten über eine Vielzahl von physikalischen Blockadressen erleichtern. In manchen Fällen können die vom Hostgerät 15 erhaltenen Daten zum Beispiel in Einheiten sein, die größer als ein einzelner Block sind. Dementsprechend kann der Controller 20 mehrere Blöcke auswählen, um jeweils einen Teil der Dateneinheit zu speichern. Im Gegensatz zu einem Auswählen von mehreren Blöcken innerhalb einer einzelnen Speichereinheit der Speichereinheiten 12, um die Teile der Dateneinheit zu speichern, kann der Controller 20 Blöcke aus einer Vielzahl von Speichereinheiten 12 auswählen, um die Teile der Dateneinheit zu speichern. Der Controller 20 kann dann verursachen, dass die Vielzahl der Speichereinheiten 12 die Teile der Dateneinheiten parallel speichern. Auf diese Weise kann der Controller 20 die Rate erhöhen, mit der die Daten in die Speichereinheiten 12 gespeichert werden, indem Teile der Daten in unterschiedliche Speichereinheiten 12 geschrieben werden, die zum Beispiel mit unterschiedlichen Kanälen 14 verbunden sind.
-
Um ein Bit mit einem logischen Wert von 0 (Ladung) in ein Bit mit einem vorhergehenden logischen Wert von 1 (ungeladen) zu schreiben, wird ein hoher Strom verwendet. Dieser Strom kann hinreichend hoch sein, sodass er unbeabsichtigte Änderungen an der Ladung von benachbarten Flash-Speicherzellen verursacht. Um vor unbeabsichtigten Änderungen zu schützen, kann ein gesamter Block von Flash-Speicherzellen vor dem Schreiben irgendwelcher Daten in die Zellen in dem Blocks auf einen logischen Wert von 1 (ungeladen) gelöscht werden. Aus diesem Grund können Flash-Speicherzellen auf Blockebene gelöscht und auf Seitenebene beschrieben werden.
-
Um sogar eine Datenmenge zu schreiben, die weniger als eine Seite verbrauchen würde, kann der Controller 20 somit verursachen, dass ein gesamter Block gelöscht wird. Dies kann zu Schreibverstärkung führen, was sich auf das Verhältnis zwischen der vom Hostgerät 14 erhaltenen Datenmenge, die in die Speichereinheiten 12 zu schreiben ist, und der tatsächlich in die Speichereinheiten 12 geschriebenen Datenmenge bezieht. Die Schreibverstärkung trägt zu einer schnelleren Abnutzung der Flash-Speicherzellen bei, als ohne Schreibverstärkung auftreten würde. Wenn Flash-Speicherzellen gelöscht werden, kann eine Abnutzung der Flash-Speicherzellen aufgrund der relativ hohen Spannungen auftreten, die zum Löschen verwendet werden. Über eine Vielzahl von Löschzyklen können die relativ hohen Spannungen physische Änderungen an den Flash-Speicherzellen zur Folge haben. Irgendwann können sich die Flash-Speicherzellen abnutzen, sodass keine Daten mehr in die Zellen geschrieben werden können.
-
Eine Methode, die der Controller 20 implementieren kann, um die Schreibverstärkung und Abnutzung von Flash-Speicherzellen zu reduzieren, umfasst ein Schreiben von vom Hostgerät 14 erhaltenen Daten in unbenutzte (oder freie) Blöcke (z. B. die Blöcke 16 von 2) oder teilweise benutzte Blöcke. Falls zum Beispiel Hostgerät 14 Daten an das Speichergerät 2 sendet, die nur eine kleine Änderung von bereits vom Speichergerät 2 gespeicherten Daten enthält, kann der Controller 20 die alten Daten als veraltet oder ungültig markieren und die neuen Daten in einen nicht verwendeten Block bzw. in nicht verwendete Blöcke schreiben. Mit der Zeit kann dies eine Anzahl von Löschoperationen reduzieren, denen Blöcke ausgesetzt sind, verglichen mit einem Löschen des die alten Daten haltenden Blocks und Schreiben der aktualisierten Daten in den gleichen Block.
-
Da leere (oder freie) Blöcke keine bestehenden Daten beinhalten, können freie Blöcke beschrieben werden, ohne zuerst vom Block gespeicherte Daten zu löschen. Deshalb kann Schreiben in freie Blöcke schneller als Schreiben in vorher volle oder teilweise volle Blöcke sein. Ein Schreiben in freie Blöcke kann auch die Abnutzung der Speichereinheiten 12 aufgrund des Fehlens einer Löschoperation vor der Schreiboperation reduzieren. In manchen Beispielen kann das Speichergerät 2 genug Speichereinheiten 12 enthalten, um einen Pool an freien Blöcken F aufrechtzuerhalten, um Schreibgeschwindigkeiten aufrechtzuerhalten und die Abnutzung der Speichereinheiten 12 zu reduzieren. Die Anzahl der freien Blöcke F ist mit dem Überversorgungsverhältnis p verknüpft, da die Anzahl der freien Blöcke F gleich der Anzahl der benutzerzugänglichen Blöcke D subtrahiert von der Gesamtanzahl der Blöcke T (F = T – D) ist.
-
Als Reaktion auf ein Empfangen eines Schreibbefehls vom Hostgerät 15 kann das Schreibmodul 22 ermitteln, an welche physikalischen Speicherstellen (Blöcke 16) der Speichereinheiten 12 es die Daten schreibt. Das Schreibmodul 22 kann zum Beispiel eine oder mehrere physikalische Blockadressen, die leer (z. B. keine Daten speichern), teilweise leer (z. B. nur manche Seiten des Blocks speichern Daten) sind oder zumindest einige ungültige (oder veraltete) Daten speichern, vom Adressübersetzungsmodul 30 oder Wartungsmodul 24 anfordern. Nach Erhalten der einen oder mehreren physikalischen Blockadressen kann das Schreibmodul 22 eine Nachricht an einen oder mehrere der Kanalcontroller 28A–28N (kollektiv „Kanalcontroller 28”) kommunizieren, die verursacht, dass die Kanalcontroller 28 die Daten in die ausgewählten Blöcke schreiben.
-
Das Lesemodul 26 kann gleichermaßen das Lesen von Daten aus den Speichereinheiten 12 steuern. Das Lesemodul 26 kann zum Beispiel eine Nachricht vom Hostgerät 15 erhalten, die Daten mit einer zugehörigen logischen Blockadresse anfordert. Das Adressübersetzungsmodul 30 kann die logische Blockadresse unter Verwendung der Flash-Übersetzungsschicht oder -tabelle in eine physikalische Blockadresse umwandeln. Das Lesemodul 26 kann dann einen oder mehrere der Kanalcontroller 28 steuern, um die Daten von den physikalischen Blockadressen abzurufen.
-
Jeder Kanalcontroller der Kanalcontroller 28 kann mit einem entsprechenden Kanal der Kanäle 14 verbunden sein. In manchen Beispielen kann der Controller 20 die gleiche Anzahl von Kanalcontrollern 28 wie die Anzahl der Kanäle 14 des Speichergeräts 2 enthalten. Die Kanalcontroller 28 können die enge Steuerung des Adressierens, Programmierens (oder Schreibens), Löschens und Lesens der Speichereinheiten 12 durchführen, die mit den entsprechenden Kanälen verbunden sind, z. B. unter Kontrolle des Schreibmoduls 22, des Lesemoduls 26 und/oder des Wartungsmoduls 24.
-
Das Wartungsmodul 24 kann konfiguriert sein, Operationen durchzuführen, die mit einer Aufrechterhaltung der Leistung und einer Verlängerung der nutzbaren Lebensdauer des Speichergeräts 2 (z. B. Speichereinheiten 12) verknüpft sind. Das Wartungsmodul 24 kann zum Beispiel mindestens eines von Folgendem implementieren: Abnutzungsausgleich oder automatische Speicherbereinigung.
-
Wie oben beschrieben kann ein Löschen von Flash-Speicherzellen relativ hohe Spannungen verwenden, die über eine Vielzahl von Löschoperationen Änderungen an den Flash-Speicherzellen verursachen können. Nach einer gewissen Anzahl von Löschoperationen können sich Flash-Speicherzellen so weit verschlechtern, dass Daten nicht mehr in die Flash-Speicherzellen geschrieben werden können, und ein Block (z. B. Block 16 von 2), der diese Zellen enthält, kann ausgeschieden (nicht mehr vom Controller 20 zum Speichern von Daten verwendet) werden. Um die Datenmenge, die in die Speichereinheiten 12 geschrieben werden können, zu erhöhen, bevor die Blöcke abgenutzt und ausgeschieden werden, kann das Wartungsmodul 24 Abnutzungsausgleich implementieren.
-
Beim Abnutzungsausgleich kann das Wartungsmodul 24 für jeden Block oder jede Blockgruppe eine Anzahl von Löschvorgängen an oder Schreibvorgängen in einen Block oder eine Blockgruppe verfolgen. Das Wartungsmodul 24 kann verursachen, dass eingehende Daten vom Hostgerät 15 in einen Block oder eine Blockgruppe geschrieben werden, der bzw. die relativ weniger Schreib- oder Löschvorgänge durchlaufen hat, um zu versuchen, eine ungefähr gleiche Anzahl von Schreib- oder Löschvorgängen für jeden Block oder jede Blockgruppe aufrechtzuerhalten. Dies kann verursachen, dass sich jeder Block der Speichereinheiten 12 mit ungefähr der gleichen Rate abnutzt, und kann die nutzbare Lebensdauer des Speichergeräts 2 erhöhen.
-
Obwohl dies die Schreibverstärkung und Abnutzung der Flash-Speicherzellen durch Reduzieren einer Anzahl von Löschvorgängen und Schreiben von Daten in unterschiedliche Blöcke reduzieren kann, kann dies auch zu Blöcken führen, die einige gültige (frische) Daten und einige ungültige (veraltete) Daten enthalten. Um dies zu bekämpfen, kann der Controller 20 eine automatische Speicherbereinigung implementieren. In einer automatischen Speicherbereinigungsoperation kann der Controller 20 den Inhalt der Blöcke der Speichereinheiten 12 analysieren, um einen Block zu ermitteln, der einen hohen Prozentsatz an ungültigen (veralteten) Daten beinhaltet. Der Controller 20 kann dann die gültigen Daten aus dem Block in einen anderen Block neu schreiben und danach den Block löschen. Dies kann eine ungültige (veraltete) Datenmenge reduzieren, die von den Speichereinheiten 12 gespeichert wird, und eine Anzahl von freien Blöcken erhöhen, kann aber auch die Schreibverstärkung und Abnutzung der Speichereinheiten 12 erhöhen.
-
In Übereinstimmung mit einem oder mehr Beispielen dieser Offenbarung kann das Speichergerät 2 (z. B. das Wartungsmodul 24) eine Integrität des Speichergeräts 2 unter Verwendung mindestens eines während der automatischen Speicherbereinigungsoperationen ermittelten Parameters überwachen. Das Wartungsmodul 24 kann zum Beispiel für jede automatische Speicherbereinigungsoperation einen Füllprozentsatz für jeden Block der Speichergeräte 12 ermitteln. Der Füllprozentsatz bezieht sich auf das Verhältnis der vom Block gespeicherten gültigen Datenmenge zur Gesamtkapazität des Blocks. Ein niedrigerer Füllprozentsatz zeigt an, dass der Block einen geringeren Prozentsatz an gültigen Daten speichert. Zum Beispiel zeigt ein Füllprozentsatz von 0% an, dass der Block keine gültigen Daten speichert, und ein Füllprozentsatz von 100% zeigt an, dass alle vom Block gespeicherten Daten gültig sind. Das Wartungsmodul 24 kann die Füllprozentsätze während der automatischen Speicherbereinigung verwenden, um zu ermitteln, welche Blöcke einige gültige Daten und einige ungültige Daten beinhalten, und kann die Daten innerhalb der Speichergeräte umverteilen, um Daten von teilweise gefüllten Blöcken zusammenzufassen, um leere Blöcke freizumachen. Der kleinste Füllprozentsatz wird hier als „C” bezeichnet.
-
4 ist eine grafische Beispieldarstellung, die eine Verteilung von Blöcken als Funktion eines Füllprozentsatzes während des stationären Betriebs eines Speichergeräts illustriert. Wie in 4 gezeigt kann die Anzahl der Blöcke mit einem vorgegebenen Füllprozentsatz einem unimodalen Verteilungsprofil folgen, mit einem relativ längeren Ausläufer zu niedrigeren Füllprozentsätzen. Der ganz linke Punkt auf der Kurve, der 0 am nächsten ist, definiert den kleinsten Füllprozentsatz „C”. Während des stationären Betriebs kann der Wert von C von einer automatischen Speicherbereinigungsoperation zur nächsten relativ konstant bleiben. Dies kann vorhergesagt werden, indem angenommen wird, dass die Gesamtkapazität eines einzigen logischen Blocks N ist und dass der kleinste Füllprozentsatz, der aus dem vorangegangenen Sampling der Füllprozentsätze beobachtet wurde, C ist. Mit diesen Annahmen kann der ungünstigste Abfall einer Füllung eines Blocks als (N/(T – F))/N = 1/(T – F) ≈ 0 ausgedrückt werden, was anzeigt, dass erwartet werden kann, dass der Wert von C von einem Sampling zum nächsten wesentlich gleich bleibt. Der Wert von C kann sich jedoch mit der Zeit mit dem Abnehmen einer Anzahl von freien Blöcken des Speichergeräts 2 langsam erhöhen.
-
Wie oben beschrieben werden, während sich Blöcke abnutzen, Ersatzblöcke aus dem Pool der freien Blöcke herausgezogen, um die abgenutzten Blöcke zu ersetzen. Dies reduziert die Anzahl der freien Blöcke. Deshalb nimmt mit der Erhöhung der Anzahl von abgenutzten Blöcken die Anzahl der freien Blöcke proportional ab. 5 ist eine grafische Darstellung des Schreibverstärkungsfaktors als Verhältnis des Überversorgungsverhältnisses p für ein Beispielspeichergerät. Wie in 5 gezeigt erhöht sich der Schreibverstärkungsfaktor mit dem Abnehmen des Überversorgungsverhältnisses (das weniger verfügbare Blöcke insgesamt und weniger freie Blöcke anzeigt). Falls das Überversorgungsverhältnis (und die Anzahl der freien Blöcke) zu gering wird, können Abnutzungsausgleich und automatische Speicherbereinigung die Leistung des Speichergeräts 2 nicht aufrechterhalten und die Leistung kann sich nicht erholen. Deshalb ist ein Ermitteln, wann sich die Integrität des Speichergeräts 2 verschlechtert, bevor sich die Integrität so weit verschlechtert, dass sie nicht wiederherstellbar ist, für einen fortgesetzten Betrieb des Speichergeräts 2 wichtig. Die Beziehung des Schreibverstärkungsfaktors im ungünstigsten Fall W verglichen mit dem Überversorgungsverhältnis kann als W = (1 + p)/(2·p) angenähert werden.
-
6 ist eine grafische Darstellung des schlechtesten Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät. Wie in 6 gezeigt erhöht sich der schlechteste Beginn der automatischen Speicherbereinigung mit dem Abnehmen des Überversorgungsverhältnisses und korreliert im Allgemeinen mit dem Schreibverstärkungsfaktor (in 5 gezeigt). Der in 6 gezeigte schlechteste Beginn der automatischen Speicherbereinigung korreliert mit dem kleinsten Füllprozentsatz C. Der Wert C ist zum Beispiel gleich dem Wert des schlechtesten Beginns der automatischen Speicherbereinigung dividiert durch die Gesamtanzahl von Blöcken. Im Beispiel von 6 war die Gesamtanzahl von Blöcken 16.384 und deshalb ist der Wert C der in 6 gezeigte y-Achsen-Wert dividiert durch 16.384.
-
Das Wartungsmodul 24 kann den kleinsten Füllprozentsatz C benutzen, um die Integrität des Speichergeräts 2 (z. B. der Speichereinheiten 12) abzuschätzen. Das Wartungsmodul 24 kann den kleinsten Füllprozentsatz C mit einem Schwellenwert vergleichen, um zu ermitteln, ob sich die Integrität des Speichergeräts 2 (z. B. der Speichereinheiten 12) verschlechtert. Falls zum Beispiel der kleinste Füllprozentsatz C größer als der Schwellenwert ist, kann das Wartungsmodul 24 ermitteln, dass sich die Integrität des Speichergeräts 2 (z. B. der Speichereinheiten 12) verschlechtert.
-
Der Schwellenwert kann vorbestimmt sein und kann auf der Basis einer Ermittlung oder Abschätzung, wann sich die Integrität des Speichergeräts 2 so weit verschlechtert, dass eine vorbestimmte Maßnahme getroffen werden sollte, bevor die Verschlechterung so schlimm wird, dass die Leistung des Speichergeräts nicht wiederherstellbar ist, ausgewählt werden. Der Schwellenwert TV kann zum Beispiel als TV = (W – 1)/W gesetzt werden, wobei W der Schreibverstärkungsfaktor im ungünstigsten Fall ist. Als Reaktion auf ein Ermitteln, dass C TV übersteigt, kann das Wartungsmodul 24 mindestens eine vorbestimmte Funktion durchführen, wie ein Modifizieren eines Betriebsparameters des Controllers 20 oder ein Ausgeben einer Nachricht oder einer Angabe an das Hostgerät 15.
-
Das Wartungsmodul 24 kann zum Beispiel einen Betriebsparameter des Controllers 20 modifizieren, wie etwa ein Aussetzen aller weiteren Schreibvorgänge in das Speichergerät 2. Das Wartungsmodul 24 kann auch eine Angabe an das Hostgerät 15 ausgeben, dass das Speichergerät 2 ein schreibgeschütztes Speichergerät ist, sodass das Hostgerät 15 nicht mehr Schreibbefehle an das Speichergerät 2 ausgibt. Durch ein Umwandeln in ein schreibgeschütztes Gerät kann ein Verlust der auf dem Speichergerät 2 gespeicherten Daten vermieden werden. Als ein weiteres Beispiel kann der Controller 20 die Schreibgeschwindigkeiten zu den Speichereinheiten 12 des Speichergeräts 2 drosseln (verlangsamen), was dem Controller 20 mehr Zeit gibt, eine automatische Speicherbereinigung durchzuführen.
-
In manchen Beispielen kann die vorbestimmte Operation ein Ausgeben eines Anzeichens der Integrität des Speichergeräts 2 an das Hostgerät 12 durch das Wartungsmodul 24 umfassen. Das Hostgerät 15 kann dann optional eine oder mehrere vorbestimmte Maßnahmen als Reaktion auf ein Erhalten des Anzeichens durchführen. Das Hostgerät 15 kann zum Beispiel konfiguriert werden, Schreibanweisungen an das Speichergerät 2 zu drosseln (reduzieren), um dem Controller 20 des Speichergeräts 2 mehr Zeit zu geben, automatische Speicherbereinigungsoperationen durchzuführen. Als ein weiteres Beispiel kann das Hostgerät 15 konfiguriert sein, eine Identifikation des Speichergeräts 2 schreibgeschützt zu ändern, dass es zu, sodass das Hostgerät 15 nicht länger Schreibanweisungen an das Speichergerät 2 sendet. Als ein zusätzliches Beispiel kann Hostgerät 15 konfiguriert sein, eine dem Hostgerät 15 zugängliche Kapazität des Speichergeräts 2 zu ändern, wobei effektiv die Anzahl von für den Controller 20 verfügbaren freien Blöcken des Speichergeräts 2 erhöht wird, um damit Abnutzungsausgleich und automatische Speicherbereinigung durchzuführen.
-
In manchen Beispielen kann das Wartungsmodul 24 eine Vielzahl von kleinsten Füllprozentsatzwerten benutzen, einen für jeden aus einer Vielzahl von automatischen Speicherbereinigungsoperationen, um einen mittleren kleinsten Füllprozentsatzwert zu ermitteln. 7 ist ein Flussdiagramm, das eine Beispielmethode zum Abschätzen einer Integrität eines Speichergeräts auf der Basis eines kleinsten Füllprozentsatzwerts illustriert. Die Methode von 7 wird mit gleichzeitigem Bezug auf das Speichergerät 2 und den Controller 20 von 1 und 3 zur leichteren Beschreibung beschrieben. In anderen Beispielen kann jedoch ein unterschiedliches Speichergerät oder ein unterschiedlicher Controller die Methode von 7 implementieren, das Speichergerät 2 und der Controller 20 von 1 und 2 können eine unterschiedliche Methode zum Abschätzen einer Integrität des Speichergeräts 2 implementieren oder beides.
-
Die Methode von 7 kann Ermitteln des kleinsten Füllprozentsatzes C über alle Blöcke hinweg (42) durch das Wartungsmodul 24 umfassen. Wie oben beschrieben kann das Wartungsmodul 24 einen jeweiligen Füllprozentsatz für jeden Block der Speichereinheiten 12 als Teil einer automatischen Speicherbereinigungsoperation ermitteln.
-
Die Methode von 7 umfasst auch Ermitteln eines mittleren kleinsten Füllprozentsatzwerts, eines mittleren C, für eine Vielzahl von automatischen Speicherbereinigungsoperationen (44) durch das Wartungsmodul 24. Das Wartungsmodul 24 kann einen Wert C für jede automatische Speicherbereinigungsoperation ermitteln. Das Wartungsmodul 24 kann verursachen, dass der C-Wert gespeichert wird, z. B. in einem C-Wertepuffer oder einer anderen Datenstruktur. In manchen Beispielen kann der C-Wertepuffer oder die andere Datenstruktur N Einträge enthalten, einen C-Wert für jede der letzten N automatischen Speicherbereinigungsoperationen (einschließlich der aktuellen automatischen Speicherbereinigungsoperation). Wenn das Wartungsmodul 24 eine automatische Speicherbereinigungsoperation durchführt und einen C-Wert für die automatische Speicherbereinigungsoperation ermittelt, kann der neueste Wert C in Eintrag 0 des C-Wertepuffers oder der anderen Datenstruktur platziert werden, und jeder vorher im C-Wertepuffer oder in der anderen Datenstruktur gespeicherte Wert kann um einen Wert nach oben erhöht werden (z. B. ein vorangegangener Eintrag 0 wird zu Eintrag 1, ein vorangegangener Eintrag N – m wird zu Eintrag N – m + 1). Eintrag N – 1, der letzte Eintrag im C-Wertepuffer oder in der anderen Datenstruktur, wird verworfen. Auf diese Weise speichert der C-Wertepuffer oder die andere Datenstruktur die C-Werte für die letzten N automatischen Speicherbereinigungsoperationen.
-
N, die Größe des C-Wertepuffers oder der anderen Datenstruktur, kann so ausgewählt werden, dass ein Mitteln der N C-Werte die C-Werte glättet, was das Störsignal im C-Wertesignal reduziert. Zusätzlich kann N so ausgewählt werden, dass der mittlere C-Wert nur relativ neue C-Werte miteinbezieht. In manchen Beispielen kann N 1024 sein. Das Wartungsmodul 24 ermittelt den mittleren kleinsten Füllprozentsatzwert (den mittleren C-Wert) (44) unter Verwendung der N C-Werte, die im C-Wertepuffer oder in der anderen Datenstruktur gespeichert sind. Auf diese Weise kann der mittlere C-Wert ein gleitender Mittelwert der C-Werte für die letzten N automatischen Speicherbereinigungsoperationen sein.
-
8 ist eine grafische Darstellung des mittleren Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät. Wie in 8 gezeigt, erhöht sich der mittlere Beginn der automatischen Speicherbereinigung mit Abnehmen des Überversorgungsverhältnisses und korreliert im Allgemeinen mit dem Schreibverstärkungsfaktor (in 5 gezeigt). Der in 8 gezeigte mittlere Beginn der automatischen Speicherbereinigung korreliert mit dem mittleren kleinsten Füllprozentsatz, dem mittleren C. Der mittlere C-Wert ist zum Beispiel gleich dem Wert des schlechtesten Beginns der automatischen Speicherbereinigung dividiert durch die GesamtAnzahl von Blöcken. Im Beispiel von 8 war die GesamtAnzahl von Blöcken 16.384, deshalb ist der mittlere C-Wert der in 8 gezeigte y-Achsen-Wert dividiert durch 16.384.
-
Das Wartungsmodul 24 vergleicht dann den mittleren C-Wert mit einem vorbestimmten Schwellenwert (46). Der Schwellenwert kann vorbestimmt sein und kann auf der Basis einer Ermittlung oder Abschätzung, warm sich die Integrität des Speichergeräts 2 verschlechtert, ausgewählt werden, sodass eine vorbestimmte Maßnahme getroffen werden sollte, bevor die Verschlechterung so schlimm wird, dass die Leistung des Speichergeräts nicht wiederherstellbar ist. Der Schwellenwert, TV, kann zum Beispiel als TV = (W – 1)/W gesetzt sein.
-
Als Reaktion auf Ermitteln, dass der mittlere C-Wert TV überschreitet (der „JA”-Zweig des Entscheidungsblocks 48), kann das Wartungsmodul 24 mindestens eine vorbestimmte Funktion durchführen (50). Die vorbestimmte Funktion kann mit der Integrität des Speichergeräts 2 (z. B. den Speichereinheiten 12) verknüpft sein, da ein Überschreiten von TV durch den mittleren C-Wert anzeigt, dass sich die Integrität der Speichereinheiten 12 verschlechtert. Das Wartungsmodul 24 kann zum Beispiel eine Nachricht ausgeben, die verursacht, dass der Controller 20 einen Betriebsparameter modifiziert oder eine Nachricht oder eine Anweisung ausgibt, die an das Hostgerät 15 kommuniziert wird. Der Controller 20 kann zum Beispiel einen Betriebsparameter modifizieren, indem er eine Antwort auf eine vom Hostgerät 15 erhaltene Schreibanforderung verlangsamt, um dem Speichergerät 2 (z. B. dem Controller 20) zu erlauben, Schreib- und automatische Speicherbereinigungsoperationen angesichts des aktuellen (niedrigeren) Überversorgungsverhältnisses aufrechtzuerhalten, oder indem er das Speichergerät 2 in ein schreibgeschütztes Gerät umwandelt, um Datenverlust zu verhindern. Als ein weiteres Beispiel kann das Hostgerät 15 seinen Betrieb durch Reduzieren eines Schreibdurchsatzes (z. B. Schreibanweisungen) an das Speichergerät 2 modifizieren.
-
Jedoch als Reaktion auf ein Ermitteln, dass der mittlere C-Wert TV nicht überschreitet (der „NEIN”-Zweig des Entscheidungsblocks 48), kann das Wartungsmodul 24 die Methode von 7 nochmals beginnen und kann einen C-Wert bei Durchführung der nächsten automatischen Speicherbereinigungsoperation ermitteln (42). Das Wartungsmodul 24 kann diesen neuen C-Wert zum C-Wertepuffer oder zur anderen Datenstruktur hinzufügen und den ältesten C-Wert aus dem C-Wertepuffer oder der anderen Datenstruktur verwerfen. Das Wartungsmodul 24 kann den mittleren C-Wert (44) unter Verwendung der N C-Werte ermitteln, die im C-Wertepuffer oder der anderen Datenstruktur gespeichert sind, und den mittleren C-Wert mit dem TV vergleichen (46).
-
In manchen Beispielen kann das Wartungsmodul 24 diese Methode jedes Mal Wiederholen, wenn eine automatische Speicherbereinigungsoperation durchgeführt wird, bis der mittlere C-Wert den TV überschreitet, zu welchem Zeitpunkt das Wartungsmodul 24 die vorbestimmte, mit der Integrität des Speichergeräts 2 (z. B. Speichereinheiten 12) verknüpfte Maßnahme durchführt (50). In anderen Beispielen kann das Wartungsmodul 24 diese Methode periodisch wiederholen, z. B. nach einer vorbestimmten Anzahl von automatischen Speicherbereinigungsoperationen, anstatt nach jeder automatischen Speicherbereinigungsoperation.
-
Auf diese Weise kann der Controller des Speichergeräts die Integrität des Speichergeräts während der Laufzeit durch Verwendung eines einzelnen C-Werts oder eines mittleren C-Werts über eine Vielzahl von automatischen Speicherbereinigungsoperationen überwachen. Dieser einzelne C-Wert oder mittlere C-Wert wird dann mit einem Schwellenwert (TV) verglichen, um eine Ermittlung der Integrität des Speichergeräts 2 (z. B. Speichereinheiten 12) zu treffen. Deshalb kann die Speichergeräteintegritätsüberwachungsmethode relativ leichtgewichtig und mit geringem Overhead sein. Zusätzlich setzen die hier beschriebenen Speichergeräteintegritätsüberwachungsmethoden einen während der automatischen Speicherbereinigung verfolgten Parameter ein. Die hier beschriebenen Methoden können keine Ermittlung eines Schreibverstärkungsfaktors auf der Basis tatsächlicher Schreibstatistiken erfordern, können eine frühere Erfassung oder Vorhersage einer Verschlechterung der Speichergeräteintegrität erlauben und/oder vom Speichergerät-Controller anstatt vom Hostgerät implementiert werden.
-
Die in dieser Offenbarung beschriebenen Methoden können zumindest teilweise in Hardware, Software, Firmware oder einer beliebigen Kombination dieser implementiert werden. Verschiedene Aspekte der hier beschriebenen Methoden können zum Beispiel in einem oder mehreren Prozessoren implementiert werden, einschließlich eines oder mehrerer Mikroprozessoren, digitalen Signalprozessoren (DSPs), anwendungsspezifischer integrierter Schaltungen (ASIC), Field Programmable Gate Arrays (FPGA) oder eines anderen gleichwertigen integrierten oder diskreten Logikschaltkreises sowie beliebigen Kombinationen solcher Komponenten. Der Begriff „Prozessor” oder „verarbeitender Schaltkreis” kann sich allgemein auf irgendeinen der vorangehenden Logikschaltkreise, alleine oder in Kombination mit anderen Logikschaltkreisen oder irgendeinen anderen gleichwertigen Schaltkreis beziehen. Eine Steuereinheit, die Hardware enthält, kann auch eine oder mehrere der Methoden dieser Offenbarung durchführen.
-
Diese Hardware, Software oder Firmware kann innerhalb des gleichen Geräts oder innerhalb separater Geräte implementiert werden, um die verschiedenen, in dieser Offenbarung beschriebenen Methoden zu unterstützen. Zusätzlich können beliebige der beschriebenen Einheiten, Module oder Komponenten zusammen oder separat als diskrete, jedoch interoperable Logikgeräte implementiert werden. Die Darstellung unterschiedlicher Merkmale als Module oder Einheiten soll unterschiedliche funktionale Aspekte hervorheben und deutet nicht unbedingt an, dass solche Module oder Einheiten von separaten Hardware-, Firmware- oder Softwarekomponenten realisiert werden müssen. Vielmehr kann die zu einem oder mehr Modulen oder Einheiten gehörige Funktionalität von separaten Hardware-, Firmware- oder Softwarekomponenten durchgeführt oder innerhalb gemeinsamer oder separater Hardware-, Firmware- oder Softwarekomponenten integriert werden.
-
Die in dieser Offenbarung beschriebenen Methoden können auch in einem Fabrikat einschließlich eines computerlesbaren Speichermediums, das mit Anweisungen codiert ist, ausgeformt oder codiert sein. In einem Fabrikat eingebettete oder codierte Anweisungen, einschließlich der in einem computerlesbaren Speichermedium codierten, können verursachen, dass ein oder mehrere programmierbare Prozessoren oder andere Prozessoren eine oder mehrere der hier beschriebenen Methoden implementieren, wie wenn Anweisungen, die im computerlesbaren Speichermedium enthaltenen oder codiert sind, von dem einen Prozessor oder den mehreren Prozessoren ausgeführt werden. Computerlesbare Speichermedien können Random-Access Memory (RAM), Read-Only Memory (ROM), Programmable Read-Only Memory (PROM), Erasable Programmable Read-Only Memory (EPROM), Electronically Erasable Programmable Read-Only Memories (EEPROM), Flash-Speicher, eine Festplatte, ein Compact Disc Read-Only Memory (CD-ROM), eine Diskette, eine Kassette, magnetische Medien, optische Medien oder andere computerlesbare Medien enthalten. In manchen Beispielen kann ein Fabrikat ein oder mehrere computerlesbare Speichermedien enthalten.
-
In manchen Beispielen kann ein computerlesbares Speichermedium ein nicht-transitorisches Medium enthalten. Der Begriff „nicht-transitorisch” kann anzeigen, dass das Speichermedium nicht in einer Trägerwelle oder einem verbreiteten Signal ausgeformt ist. In bestimmten Beispielen kann ein nicht-transitorisches Speichermedium Daten speichern, die sich mit der Zeit ändern können (z. B. in einem RAM oder Zwischenspeicher).
-
Verschiedene Beispiele sind beschrieben worden. Diese und andere Beispiele fallen in den Schutzbereich der folgenden Ansprüche.