-
HINTERGRUND
-
Bereich:
-
Der hierin offenbarte Gegenstand bezieht sich auf eine Speichervorrichtung und auf ein Verfahren zum Betreiben derselben.
-
Information:
-
Speichervorrichtungen werden in vielen Typen von elektronischen Vorrichtungen verwendet, wie Computern, Mobiltelefonen, PDAs, Datenschreibern und Navigationsequipment, um nur einige Beispiele zu nennen. Unter solchen elektronischen Vorrichtungen können verschiedene Typen von nicht volatilen Speichervorrichtungen verwendet werden wie NAND oder NOR Flash Speicher, SRAM, DRAM und Phasenübergangsspeicher, um nur einige Beispiel zu nennen. Im Allgemeinen kann ein Schreib- oder Programmierprozess verwendet werden, um Information in solchen Speichervorrichtungen zu speichern, während ein Leseprozess verwendet werden kann, um gespeicherte Informationen abzurufen.
-
Gelegentlich, während des Betriebs einer Speichervorrichtung, kann ein Prozess des Schreibens in und/oder Lesens von Information aus einem Speicherfeld fehlschlagen. Solch ein Fehler muss nicht notwendigerweise zu einem schwerwiegenden Betriebsfehler führen, wenn eine Speichervorrichtung Sicherheitsmaßnahmen beinhaltet, wie eine Fehlerkorrektur und/oder eine Fähigkeit, einen Lese- und/oder Schreibprozess zu wiederholen, zum Beispiel. Das Besitzen solcher Sicherheitsmaßnahmen kann jedoch in Zusatzkosten resultieren, wie eine Verwendung von einem Speichervorrichtungsbereich, der ansonsten für andere Zwecke verwendet werden könnte und/oder dem Hinzufügen von Schritten zu einem Prozess des Herstellens einer Speichervorrichtung, zum Beispiel.
-
US 6 788 609 B2 offenbart ein Flash-Speichersystem, in welchem ein Speicherpuffer
6 verwendet wird, um Daten („file data”) in einen Block #1 eines Datenspeichers
8 oder in einen Block #2 des Datenspeichers
8 zu schreiben, basierend auf der Fehlerinformation des Blocks, in welchen die Daten zu schreiben sind.
-
US 2009/0040836 A1 offenbart ein Flash-Speichersystem, in welchem Daten einer ersten Seite an ein Register A und Daten einer zweiten Seite an ein Register B bereitgestellt werden, wobei jedes der Register A und B seine jeweiligen Seitendaten an einen Seitenpuffer bereitstellt.
-
DE 10 2007 051 061 A1 offenbart eine Speichersteuerung, die einen Rücksicherungsspeicher enthält, der dazu eingerichtet ist, eine Rücksicherungskopie von vorher programmierten Daten aus mehrschichtigen Flash-Speicherzellen zu speichern, wenn eine weitere Programmierung der mehrschichtigen Flash-Speicherzellen scheitert. Die Rücksicherungskopie der vorher programmierten Daten wird verwendet, um Fehler in den vorher programmierten Daten zu erfassen und zu korrigieren, bevor eine erneute Programmierung der vorher programmierten Daten in unterschiedliche mehrschichtige Flash-Speicherzellen des nicht flüchtigen Speichersystems vorgenommen wird.
-
DE 10 2004 025 977 A1 offenbart einen Flashspeicherbaustein mit einer Mehrzahl von Hauptbitleitungen, einer Mehrzahl von redundanten Bitleitungen, einer Mehrzahl von ersten Seitenpuffern, welche jeweils als eine Mehrzahl von ersten Seitenpuffergruppen organisiert sind, die mit den Hauptbitleitungen verbunden sind, einer Mehrzahl von zweiten Seitenpuffern, welche jeweils als eine Mehrzahl von zweiten Seitenpuffergruppen organisiert sind, die mit den redundanten Bitleitungen verbunden sind.
-
KURZE BESCHREIBUNG DER FIGUREN
-
Nicht begrenzende und nicht erschöpfende Ausführungsformen werden mit Bezug auf die folgenden Figuren beschrieben, worin sich ähnliche Bezugszeichen auf ähnliche Teile über die verschiedenen Figuren hinweg beziehen, wenn nicht anders spezifiziert.
-
1 ist ein schematisches Blockdiagramm einer Speichervorrichtung gemäß einer Ausführungsform.
-
2 ist ein schematisches Blockdiagramm einer Speichervorrichtung gemäß einer anderen Ausführungsform.
-
3 ist ein Flussdiagramm eines Prozesses zum Beschreiben einer Speichervorrichtung, gemäß einer Ausführungsform.
-
4 ist ein Flussdiagramm eines Prozesses zum Beschreiben einer Speichervorrichtung, gemäß einer anderen Ausführungsform.
-
5 ist ein schematisches Blockdiagramm eines Computersystems und einer Speichervorrichtung gemäß einer Ausführungsform.
-
DETAILLIERTE BESCHREIBUNG
-
Die Erfindung wird durch ein Verfahren nach Anspruch 1, eine Speichervorrichtung nach Anspruch 3 und ein System nach Anspruch 7 definiert. Vorteilhafte Ausführungsformen sind Gegenstand der abhängigen Ansprüche.
-
Ein Bezug innerhalb dieser Beschreibung auf ”eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform des beanspruchten Gegenstandes enthalten ist. Damit bezieht sich das Auftreten des Ausdrucks ”in einer Ausführungsform” oder ”einer Ausführungsform” an verschiedenen Stellen dieser Beschreibung nicht notwendigerweise auf dieselbe Ausführungsform. Weiterhin können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen kombiniert werden.
-
In einer Ausführungsform kann eine Speichervorrichtung eine Speichersteuerung umfassen zum Initiieren eines Schreibvorgangs, um bestimmte Information in ein Speicherfeld zu schreiben. Solch eine Speichervorrichtung kann auch einen Speicherpuffer umfassen, um die bestimmte Information von der Speichersteuerung zu empfangen, um die bestimmte Information während des Schreibvorgangs zu speichern und die bestimmte Information nachfolgend auf ein Schreibfehlerereignis zu speichern. Solch ein Schreibfehlerereignis kann aus irgendeiner von einer Anzahl an Situationen resultieren, wie Defekte von einer oder mehreren Speicherzellen, Speicherblöcken oder anderen Abschnitten eines Speicherfeldes, zum Beispiel. Solche Defekte können von einem Herstellungsprozess herrühren oder können nach der Herstellung einer Speichervorrichtung resultieren. Zum Beispiel können eine oder mehrere defekte Speicherzellen in einem Speicherblock darin resultieren, dass der gesamte Speicherblock defekt ist. Solch ein fehlerhafter Speicherblock kann zu einem Fehler führen, von dem fehlerhaften Speicherblock zu lesen oder darein zu schreiben. Demgemäß kann ein Speicherpuffer, der bestimmte Information nach solch einem Schreibfehler beibehält, solche bestimmte Information für einen nachfolgenden erneuten Schreibprozess verfügbar haben. Natürlich sind solche Gründe für Schreibfehlerereignisse nur Beispiele und der beanspruchte Gegenstand ist nicht darauf begrenzt.
-
Mit anderen Worten, solch ein Speicherpuffer kann gespeicherte Information beibehalten und nach dem Fehlschlagen solche Information erfolgreich von dem Speicherpuffer in ein Speicherfeld schreiben. In einer bestimmten Implementierung zum Beispiel kann solch ein Speicherpuffer einen NAND Seitenpuffer umfassen, obwohl andere bestimmte Speichertypen in anderen Implementierungen verwendet werden können. Als ein Ergebnis des Beibehaltens von Information oder Daten während eines Schreibfehlerereignisses kann zum Beispiel eine Datenseite weiterhin für einen NAND Benutzer (zum Beispiel eine Speicherkartensteuerung) verfügbar sein nach einem Fehler, solch eine Datenseite in einen Block eines NAND Speicherfeldes zu schreiben. Demgemäß kann solch eine Datenseite, die weiterhin in einem NAND Seitenpuffer vorhanden ist, zum Lesen, Modifizieren und/oder erneuten Schreiben in einen anderen Block des Speicherfeldes zugänglich sein.
-
In einer Ausführungsform kann Information, die geschrieben wird, in einem NAND Seitenpuffer vorhanden sein, während eines mit Schreiben beschäftigten Abschnitts eines Schreibvorgangs. Solche Information kann zusätzlich für weiteres Lesen und/oder Modifizieren oder erneutem Schreiben verfügbar sein mit Hilfe eines ”Lese-von-Puffer” Befehls und/oder eines ”Schreibe-von-Puffer” Befehls, wenn ein Schreibfehlerereignis ein Seitenschreiben beeinflusst, zum Beispiel wegen eines fehlerhaften Speicherblocks. Eine Ausführungsform von solch einer Speichervorrichtung wie oben beschrieben kann zum Beispiel eine Anzahl von Vorteilen bereitstellen, darunter eine Speicherarchitektur, die es vermeidet, Speicherchipbereich für einen zusätzlichen Steuerungs-RAM-Puffer zu verwenden, um Information zu halten, für den Fall, dass das erfolgreiche Schreiben von solcher Information in ein Speicherfeld fehlschlägt. In einer Implementierung kann zum Beispiel ein NAND Seitenspeicher verwendet werden als zusätzlicher volatiler Speicher in einem bestimmten Vorgang, der keinen nicht volatilen Datenspeicher verwenden muss. Natürlich sind solche Vorteile von Ausführungsformen, die hierin beschrieben sind, nur Beispiele, und der beanspruchte Gegenstand ist nicht darauf beschränkt.
-
Ausführungsformen wie solche, die oben beschrieben sind, können die Implementierung einer relativ robusten Verwaltung fehlerhafter Blöcke ermöglichen, die interne fehlerhafte Speicherblöcke vor einem externen Host verbirgt. Solch eine Verwaltung fehlerhafter Blöcke kann mit Hilfe von Reservespeicherblöcken oder anderen Speicherabschnitten zum Ersetzen von fehlerhaften Blöcken arbeiten. In einer Implementierung kann ein Prozess des Verbergens von fehlerhaften Speicherblöcken bedeuten, dass keine Fehlerinformation an einen Host zurückgegeben würde, als zum Beispiel eine ”Vorgang abgeschlossen” Mitteilung, nachdem aufeinander bezogene Vorgänge abgeschlossen sind. Zum Beispiel kann eine Speichervorrichtung einen Schreib- und/oder Löschbefehl von einem Host empfangen. Wenn solch ein Schreib- und/oder Löschvorgang zu einer internen fehlerhaften Blockerzeugung führt, dann kann eine Speichersteuerung der Speichervorrichtung intern erneute Zugordnungsänderungsprozesse/erneute Kopierprozesse verwalten, um den Schreib- und/oder Löschvorgang auszuführen. Diese Verwaltung kann dem Host transparent sein, welcher nur einen Hinweis empfangen mag, dass ein Schreib- und/oder Löschvorgang abgeschlossen ist. In einer Implementierung kann solch eine Verwaltung das Halten einer unerledigten Schreibseite in einem extra Steuerungsspeicher mit wahlfreiem Zugriff (RAM) beinhalten, um ein neues Seitenschreiben auf einen anderen ”frischen” Block zu wiederholen, wenn ein Fehler eines ersten Blocks auftritt. Jedoch kann solch ein Zusatz RAM wertvollen Bereich auf einem Speicherchip belegen, der ansonsten für andere Zwecke verwendet werden könnte. Zum Beispiel kann ein zusätzlicher Steuerungs-RAM ungefähr einen Quadratmillimeter bei 0,11 Mikrometer Technologie verwenden. In einer Implementierung kann solche eine Verwaltung einen Fehlerkorrekturkode (error-correcting code ECC) Maschine umfassen und einen Prozess des Auslesens (zum erneuten Kopieren) einer gerade fehlgeschlagenen Seite direkt von einem NAND Block, anstelle des Haltens von ursprünglicher Information in einem zusätzlichen RAM Puffer. Der Erfolg einer solchen Implementierung kann von der Leichtigkeit abhängen, mit der ein Schaden, der während einer Schreibphase aufgetreten ist, mit Hilfe von ECC korrigiert werden kann. Jedoch kann es wahrscheinlicher sein, dass ein solcher Schaden, der nach einem Seitenschreibfehler auftritt, nicht durch ECC korrigierbar ist aufgrund der Leistungsbegrenzungen des ECC. Natürlich ist solche eine Implementierung eines ECC nur ein Beispiel und der beanspruchte Gegenstand nicht darauf beschränkt.
-
1 ist ein schematisches Blockdiagramm einer Speichervorrichtung 110 gemäß einer Ausführungsform. Solch eine Speichervorrichtung 110 kann Information und/oder Anweisungen 115 von einem externen Host (nicht gezeigt) empfangen. Nach einem Schreibfehlerereignis kann die Speichervorrichtung 110 in der Lage sein, Versuche zu wiederholen, Information wieder in nicht volatilen Speicher zu schreiben, wie im Detail unten beschrieben. Jedoch kann solch eine Fähigkeit den Nachteil des Aufweisens von zusätzlichem Steuerungs-RAM Puffer umfassen zum Beibehalten von Information für solche erneuten Schreibversuche wie ebenfalls unten beschrieben. Pfeile in den 1 bis 3 haben nur ein Ende, um der Beschreibung von bestimmten Ausführungsformen und Implementierungen zu entsprechen, die folgen. Jedoch kann irgendeiner oder alle solcher Pfeile mit zwei Enden versehen sein, um einen Fluss in einer oder beiden Richtungen anzuzeigen, und der beanspruchte Gegenstand ist diesbezüglich nicht beschränkt. Zum Beispiel kann der Pfeil 115 Information repräsentieren, die an die Speichervorrichtung 110 bereitgestellt wird und/oder Information, die von der Speichervorrichtung 110 an eine externe Einheit bereitgestellt wird.
-
In einer bestimmten Implementierung kann die Speichervorrichtung 110 eine NAND Flash-Speicherkarte umfassen, die von einer Anzahl von Typen an Hosts verwendet werden kann, um Information zu speichern. Zum Beispiel kann die Speichervorrichtung 110 eine Speicherkarte umfassen, die für eine digitale Kamera (der Host), ein ”Miniatur-Laufwerk” (thumbdrive) usw. verwendet werden kann. In einer Ausführungsform kann die Speichervorrichtung 110 eine Steuerung 150 und einen Speicherabschnitt 160 umfassen. Weiterhin kann die Steuerung 150 eine Steuerungs-RAM Pufferschnittstelle 120 und einen Prozessor 130 umfassen, der eine ECC Maschine 135 umfassen kann. Der Speicherabschnitt 160 kann eine oder mehrere Speicherpartitionen 155 und 165, zum Beispiel, umfassen. Solche Speicherpartitionen können auf demselben Chip oder auf einem separaten Chip sein, und der beanspruchte Gegenstand ist nicht darauf beschränkt. Individuelle Speicherpartitionen 155 können einen internen RAM Puffer 185 und ein Speicherfeld 195 umfassen. Die individuelle Speicherpartition 165 kann den internen RAM Puffer 170 und das Speicherfeld 180 umfassen. Obwohl nicht gezeigt, kann der Speicherabschnitt 160 zusätzliche Speicherpartitionen umfassen. In einer Implementierung kann solch ein interner RAM Puffer einen NAND Seitenpuffer umfassen. Zum Beispiel könne die RAM Puffer 185 und 170 einen volatilen Speicher umfassen, um eine Seite von Information, die in das Speicherfeld 196 beziehungsweise das Speicherfeld 180 geschrieben werden soll, zu hosten. Das Speicherfeld 195 und das Speicherfeld 180 kann nicht volatilen Speicher umfassen.
-
Mit Bezug auf die Speichervorrichtung 110 kann Information, in Antwort auf ein Schreibfehlerereignis (zum Beispiel das Auftreten eines fehlerhaften Blocks) während einer Schreiboperation, die vorher in einem fehlerhaften Speicherblock geschrieben wurde, zu einem neuen Speicherblock kopiert werden. Information kann, in Antwort auf das Schreibfehlerereignis, auch zu dem neuen Speicherblock kopiert werden. In einer Implementierung kann die Speichervorrichtung 110 einem Host ein ”Schreibvorgang abgeschlossen” Signal bereitstellen, wodurch das Schreibfehlerereignis vor dem Host verborgen wird. Solch ein Schreibvorgang wird nun im Detail beschrieben. Ein Host (nicht gezeigt) kann Information 115 an die Speichervorrichtung 110 zum Schreiben in einen nicht volatilen Abschnitt eines Speicherfeldes 180 zum Beispiel bereitstellen. Solche Information 115 kann temporär in einer Steuerungs-RAM Pufferschnittstelle 120 gespeichert werden und danach zum Prozessor 130 über die Leitung 125 transferiert werden. Der Prozessor 130 kann als nächstes die Information 115 in den RAM Puffer 170 über die Leitung 140 transferieren. In der Zwischenzeit braucht die Information 115 nicht in der Steuerungs-RAM Pufferschnittstelle 120 gehalten zu werden. Der RAM Puffer 170 kann die Information 150 an das Speicherfeld 180 transferieren, über die Leitung 178. Wenn ein Schreibfehlerereignis während eines solchen Transfers von Information an das Speicherfeld 180 auftritt, dann kann ein Prozess des erneuten Versuchens des Schreibens wie folgt vorgehen. Die Information 115, die nicht voll in das Speicherfeld 180 geschrieben wurde, kann zumindest teilweise von dem Speicherfeld abgerufen werden und in den RAM Puffer 170 abgelegt werden mithilfe einer Leseoperation über die Leitung 175, zum Beispiel. Die Information 115 kann von dem RAM Puffer über die Leitung 145 gelesen werden, um durch die ECC Maschine 135 verarbeitet zu werden, um einen oder mehrere Fehler zu korrigieren, die aus dem Schreibfehlerereignis resultieren. Wenn die ECC Maschine 135 solche Fehler erfolgreich korrigiert, kann die Information 115 zu einem anderen Speicherfeld 195 über die Leitung 135, den RAM Puffer 185 und die Leitung 190 kopiert werden, zum Beispiel. Demgemäß kann solch ein Prozess des erneuten Versuchens des Schreibens auf den Erfolg der ECC Maschine 135 angewiesen sein. Selbstverständlich sind solche Details eines Schreibprozesses lediglich Beispiele und der beanspruchte Gegenstand ist nicht darauf beschränkt.
-
2 ist ein schematisches Blockdiagramm einer Speichervorrichtung 210 gemäß einer Ausführungsform. Ähnlich der Speichervorrichtung 110, die in 1 gezeigt ist, kann die Speichervorrichtung 210 zum Beispiel Information und/oder Anweisungen 215 von einem externen Host (nicht gezeigt) empfangen. In einer bestimmten Implementierung kann die Speichervorrichtung 210 eine NAND Flashspeicherkarte umfassen, die durch eine Anzahl von Typen von Hosts verwendbar sein kann, um Information zu speichern. Zum Beispiel kann die Speichervorrichtung 210 eine Speicherkarte umfassen, die für eine digitale Kamera (den Host), ein ”Miniatur-Laufwerk”, usw. verwendet wird. Wie für die Speichervorrichtung 110, kann die Speichervorrichtung 210 in der Lage sein, Versuche, Information zu nicht volatilem Speicher erneut zu schreiben, zu wiederholen nach einem Schreibfehlerereignis. Im Gegensatz zu der Speichervorrichtung 110 kann solch eine Fähigkeit der Speichersteuerung 210 durch einen RAM Puffer bereitgestellt werden, der zwischen einer Speichersteuerung und einem Speicherfeld angeordnet ist, wohin solche Information geschrieben werden soll, wie auch unten beschrieben. Zum Beispiel beinhaltet die Speichervorrichtung 110 einen Steuerungs-RAM Puffer, um Information für solche erneuten Schreibversuche zu halten, wohingegen die Speichervorrichtung 210 nicht auf solch einen Steuerungs-RAM Puffer zum erneuten Schreiben angewiesen ist.
-
In einer Implementierung kann die Speichervorrichtung 210, ähnlich der Speichervorrichtung 110 eine Steuerung 250 und einen Speicherabschnitt 260 umfassen. Weiterhin kann die Steuerung 250 eine Steuerungs-RAM Pufferschnittstelle 220 und einen Prozessor 230 umfassen, der eine ECC Maschine 235 umfasst. Der Speicherabschnitt 260 kann eine oder mehrere Speicherpartitionen 255 und 265 zum Beispiel umfassen. Solche Speicherpartitionen können auf demselben Chip oder auf verschiedenen Chips sein, und der beanspruchte Gegenstand ist nicht in dieser Weise beschränkt. Die individuelle Speicherpartition 255 kann den internen RAM Puffer 285 und das Speicherfeld 295 umfassen. Die individuelle Speicherpartition 265 kann einen internen RAM Puffer 270 und das Speicherfeld 280 umfassen. Obwohl nicht gezeigt, kann der Speicherabschnitt 260 zusätzliche Speicherpartitionen umfassen. In einer Implementierung kann solch ein interner RAM Puffer einen NAND Seitenpuffer umfassen. Zum Beispiel können die RAM Puffer 285 und 270 einen volatilen Speicher umfassen, um eine Seite von Information beherbergen, die in das Speicherfeld 295 beziehungsweise das Speicherfeld 280 geschrieben werden soll. Das Speicherfeld 295 und das Speicherfeld 280 kann nicht volatilen Speicher umfassen.
-
Bezogen auf die Speichervorrichtung 210 kann Information in Antwort auf ein Schreibfehlerereignis (zum Beispiel das Auftreten eines fehlerhaften Blocks) während eines Schreibvorgangs, die vorher in einen fehlerhaften Speicherblock geschrieben wurde, zu einem neuen Speicherblock kopiert werden. Aktuelle Information kann, in Antwort auf das Schreibfehlerereignis, auch zu dem neuen Speicherblock kopiert werden. In einer Implementierung kann die Speichervorrichtung 210 einem Host ein ”Schreibvorgang abgeschlossen” Signal ausgeben, wodurch das Schreibfehlerereignis dem Host verborgen bleibt. Solch ein Schreibvorgang wird nun im Detail beschrieben. Ein Host (nicht gezeigt) kann die Information 215 der Speichervorrichtung 210 bereitstellen zum Schreiben in ein Speicherfeld 280, zum Beispiel. Solche Information 215 kann temporär in der Steuerungs-RAM Pufferschnittstelle 220 gespeichert werden und nachfolgend zu dem Prozessor 230 über die Leitung 225 transferiert werden. Der Prozessor 230 kann als nächstes die Information 215 in den RAM Puffer 270 über die Leitung 240 transferieren. In einer Implementierung kann, ähnlich der Speichervorrichtung 110, die Steuerungs-RAM Pufferschnittstelle 220 von der Information 215 frei gemacht werden nachfolgend auf den Transfer der Information 215 zum RAM Puffer 270. Der RAM Puffer 270 kann, über die Leitung 278, die Information 215 zu dem Speicherfeld 280 transferieren. Wenn ein Schreibfehlerereignis während eines solchen Transfers von Information zu dem Speicherfeld 280 auftritt, dann kann ein Prozess des Wiederversuchens des Schreibens wie folgt vorgehen. Die Information 215, die nicht in das Speicherfeld 280 geschrieben wurde, kann weiterhin im RAM Puffer 270 gehalten werden. Demgemäß kann solche gehaltene Information für andere Schreibvorgänge zu anderen Abschnitten des Speichers in dem Speicherfeld 280 über die Leitung 275 verfügbar sein, zum Beispiel. Solch ein zusätzlicher Schreibvorgang, mit Hilfe von Information, die in dem RAM Puffer gehalten wird, kann in Antwort auf einen ”Schreibe-von-Puffer” Befehl geschehen, der durch den Prozessor 230 initiiert wird.
-
In einer anderen Ausführungsform kann die Information, die in dem RAM Puffer 270 gehalten wird, nach einem Schreibfehlerereignis für einen anderen Schreibvorgang zu einem anderen Speicherfeld 295 verfügbar sein. Solch ein zusätzlicher Schreibvorgang, mit Hilfe von Information, die in dem RAM Puffer 270 gehalten wird, kann in Antwort auf einen Lese-von-Puffer Befehl geschehen, der durch den Prozessor 230 initiiert wird. Im Detail kann die Information 215, die nicht in das Speicherfeld 280 geschrieben werden konnte, von dem RAM Puffer 270 abgerufen werden nach solch einem Fehlschlagen eines Schreibvorgangs mit Hilfe des ”Lese-von-Puffer” Befehlsvorganges. In einer Implementierung kann die Information 215 von dem RAM Puffer 270 über die Leitung 245 gelesen werden. Die Information 215 kann zu einem anderen Speicherfeld 295 über die Leitung 253, den RAM Puffer 285 und die Leitung 290 geschrieben werden, zum Beispiel. In einer anderen Implementierung kann die Information 215 von dem RAM Puffer 270 über die Leitung 245 zum Prozessor 230 gelesen werden, der einen anderen Speicherbereich bestimmen kann, in den die Information 215 während eines erneuten Schreibprozesses geschrieben werden soll. Zum Beispiel kann solch ein Speicherort das Speicherfeld 295 umfassen, welches auf einem selben oder unterschiedlichen Chip angeordnet sein kann, wie jener des Speicherfeldes 280, bei dem der Schreibfehler auftrat.
-
3 ist ein Flussdiagramm eines Prozesses 300 zum Schreiben in eine Speichervorrichtung gemäß einer Ausführungsform. Bei Block 310 kann ein Host einer Speichervorrichtung wie eine Kamera, ein Mobiltelefon oder eine andere elektronische Vorrichtung, die Information zu speichern hat, solche Information an eine Speichersteuerung der Speichervorrichtung bereitstellen. Bei Block 320 kann solche Information zu einem Speicherpuffer geschrieben werden. In einer Implementierung kann ein Speicherpuffer einen RAM Seitenpuffer umfassen, zum Beispiel. Bei Block 330 kann der Speicherpuffer, während eines Schreibvorgangs, der Information von dem Speicherpuffer zu einem Speicherfeld schreibt, ein Signal an die Speichersteuerung bereitstellen, um anzuzeigen, dass der Speicherpuffer belegt ist. Bei Block 340 kann Information, die in dem Speicherpuffer während des Schreibvorgangs gespeichert ist, der Information zu dem Speicherfeld schreibt, nachfolgend auf den Schreibvorgang gehalten werden. Solch ein Schreibvorgang kann entweder erfolgreich sein oder fehlschlagen und eine Bestimmung einer der Möglichkeiten kann bei Block 350 ausgeführt werden. In einer Implementierung kann solch ein Bestimmen, ob ein Schreibfehlerereignis aufgetreten ist, durch die Speichersteuerung ausgeführt werden nach der Rücknahme eines NAND ”mit Schreiben beschäftigt” Signals. Zu dieser Zeit kann die Speichersteuerung ein NAND Statusregister überprüfen, das ein Resultat (zum Beispiel Erfolg oder Fehler) des Vorgangs umfasst. Bei Block 360 kann, im Fall eines erfolgreichen Schreibvorgangs die Speichervorrichtung dem Host der Speichervorrichtung ein Signal bereitstellen, das anzeigt, dass der Schreibvorgang erfolgreich war und/oder abgeschlossen ist. Ansonsten kann eine Speichersteuerung bei Block 370, in dem Fall eines Schreibfehlerereignisses, einen ”Schreibe-von-Puffer” Befehl an den Speicherpuffer ausgeben. Demgemäß kann Information, bei Block 380, nach einem fehlgeschlagenen Schreibvorgang, die von einem Speicherpuffer gehalten wird, zu einem Speicherfeld geschrieben werden. Solch ein Speicherfeld kann dasselbe Speicherfeld umfassen, das in den früheren fehlgeschlagenen Schreibvorgang eingebunden war. Optional kann die Information, die durch einen Speicherpuffer gehalten wird, in ein anderes Speicherfeld geschrieben werden. Wenn das Speicherfeld dasselbe ist wie jenes, das in den fehlgeschlagenen Schreibvorgang einbezogen war, dann kann ein anderer Abschnitt des Speicherfeldes verwendet werden in dem Prozess von Block 380. Zum Beispiel kann solch ein anderer Abschnitt des Speicherfeldes einen anderen Block des Speicherfeldes umfassen. In einer Implementierung kann die Speichersteuerung der Speichervorrichtung solche Speicherorte bestimmen, um Information während eines erneuten Schreibprozesses zu schreiben. Wie oben bemerkt, kann die Information zu einem Speicherbereich eines Speicherfeldes geschrieben werden, der auf einem Chip angeordnet ist, der sich von jenem des Speicherfeldes, das in das Schreibfehlerereignis eingebunden war, unterscheidet. Schließlich kann der Prozess 300 zu Block 360 fortschreiten, wo die Speichervorrichtung ein Signal an den Host der Speichervorrichtung bereitstellen kann, das anzeigt, dass der Schreibvorgang erfolgreich war und/oder abgeschlossen ist. In solch einem Fall kann das Auftreten eines Schreibfehlerereignisses von dem Host wie oben beschreiben verborgen werden.
-
4 ist ein Flussdiagramm eines Prozesses 400 zum Beschreiben einer Speichervorrichtung, gemäß einer Ausführungsform. Bei Block 410 kann ein Host einer Speichervorrichtung, der Informationen zum Speichern aufweist, solche Information einer Speichersteuerung der Speichervorrichtung bereitstellen. Bei Block 420 kann die Information zu einem Speicherpuffer geschrieben werden. In einer Implementierung kann solch ein Speicherpuffer einen RAM-Seitenpuffer zum Beispiel umfassen. Bei Block 430 kann der Speicherpuffer irgendeines Schreibvorgangs zum Schreiben von Information von dem Speicherpuffer zu dem Speicherfeld ein Signal an die Speichersteuerung bereitstellen, das anzeigt, dass der Speicherpuffer belegt ist. Bei Block 440 kann Information in einem Speicherpuffer während eines Schreibvorgangs zum Schreiben von solcher Information zu einem Speicherfeld gespeichert werden. Zusätzlich kann solche Information in einem Speicherpuffer behalten werden nach einem Schreibvorgang. Solch ein Schreibvorgang kann entweder erfolgreich sein oder fehlschlagen und eine Bestimmung des einen oder anderen Ereignisses kann bei Block 450 ausgeführt werden. Bei Block 460 kann, im Fall eines erfolgreichen Schreibvorgangs, eine Speichervorrichtung ein Signal an den Host der Speichervorrichtung bereitstellen, um anzuzeigen, dass der Schreibvorgang erfolgreich war und/oder abgeschlossen ist. Ansonsten kann, bei Block 470 im Fall eines Schreibfehlerereignisses, die Speichersteuerung einen Lese-von-Puffer Befehl an den Speicherpuffer ausgeben. Demgemäß kann die Information, die von dem Speicherpuffer gehalten wird, nach dem versuchten und fehlgeschlagenen Schreibvorgang von dem Speicherpuffer gelesen werden. In einer Implementierung kann jedoch solche Leseinformation an die Speichersteuerung bereitgestellt werden, die einen Abschnitt des Speichers bestimmen kann, der sich von dem Abschnitt des Speichers unterscheidet, der in das Schreibfehlerereignis einbezogen war, in dem die Information gespeichert werden soll, die von dem Speicherpuffer abgefragt wurde. Ähnlich kann bei Block 480 die Information, die von dem Speicherpuffer gelesen wird, zu einem Abschnitt des Speicher geschrieben werden, der vorhergehend nicht zu dem Schreibfehlerereignis geführt hat. Zum Beispiel kann solch ein Abschnitt des Speichers einen Block und/oder eine Seite von Speicher umfassen, die sich von einem Block und/oder einer Seite des Speichers unterscheidet, die zu einem vorhergehenden Schreibfehlerereignis geführt hat. Wie oben bemerkt, kann die Information an einen Speicherort eines Speicherfeldes geschrieben werden, der auf einem Chip ist, der sich von jenem des Speicherfeldes unterscheidet, das in das Schreibfehlerereignis eingebunden war. Schließlich kann der Prozess 400 zu Block 460 fortschreiten, wo die Speichervorrichtung ein Signal an den Host der Speichervorrichtung bereitstellen kann, das anzeigt, dass der Schreibvorgang erfolgreich war und/oder abgeschlossen ist. In solch einem Fall kann das Auftreten eines Schreibfehlerereignisses vor dem Host verborgen bleiben, wie oben diskutiert.
-
5 ist eine schematische Ansicht eines Rechensystems 500 und einer Speichervorrichtung gemäß einer Ausführungsform. Solch eine Rechenvorrichtung kann einen oder mehrere Prozessoren, zum Beispiel zum Ausführen einer Anwendung und/oder eines anderen Codes umfassen. Zum Beispiel kann die Speichervorrichtung 510 ein Speicherfeld 280 enthalten, das in 2 gezeigt ist. Eine Rechenvorrichtung 504 kann repräsentativ sein für irgendeine Vorrichtung, Anwendung oder Maschine, die konfigurierbar sein kann, um die Speichervorrichtung 510 zu verwalten. Die Speichervorrichtung 510 kann eine Speichersteuerung 515 und einen Speicher 522 umfassen. In einer Implementierung kann solch eine Speichervorrichtung die Speichervorrichtung 210, die Steuerung 250, und den Speicher 280 umfassen, die in 2 gezeigt sind, zum Beispiel. Beispielsweise, aber nicht begrenzend, kann die Rechenvorrichtung 504 umfassen: eine oder mehrere Rechenvorrichtungen und/oder Plattformen, wie zum Beispiel einen Desktopcomputer, einen Laptopcomputer, eine Workstation, eine Servervorrichtung und ähnliches; eine oder mehrere persönliche Rechen- oder Kommunikationsvorrichtungen oder Anwendungen, wie zum Beispiel ein persönlicher digitaler Assistent, Mobilkommunikationsvorrichtung, oder ähnliches; ein Rechensystem und/oder assoziierte Dienstbereitstellertätigkeit, wie zum Beispiel eine Datenbank oder Datenspeicherdienstbereitsteller/-system; und/oder irgendeine Kombination davon.
-
Es ist anerkannt, dass alle oder ein Teil der verschiedenen Vorrichtungen, die in dem System 500 gezeigt sind, und die Prozesse und Verfahren wie hierin weiter beschrieben, implementiert werden können mit Hilfe oder ansonsten umfassend Hardware, Firmware, Software, oder irgendeine Kombination davon. Damit kann als, beispielsweise aber nicht begrenzend, die Rechenvorrichtung 504 zumindest eine Verarbeitungseinrichtung 520 umfassen, die operativ mit dem Speicher 522 über einen Bus 540 und eine Host- oder Speichersteuerung 515 verbunden ist. Die Verarbeitungseinheit 510 ist repräsentativ für einen oder mehrere Schaltkreise, die konfigurierbar sind, zumindest einen Abschnitt einer Datenverarbeitungsprozedur oder -prozesses auszuführen. Beispielsweise aber nicht begrenzend kann die Verarbeitungseinheit 520 einen oder mehrere Prozessoren, Controller, Mikroprozessoren, Mikrocontroller, anwendungsspezifische integrierte Schaltkreise, digitale Signalprozessoren, programmierbare logische Vorrichtungen, feldprogrammierbare Gatearrays, und ähnliches, oder irgendeine Kombination davon umfassen. Die Verarbeitungseinheit 520 kann ein Betriebssystem umfassen, das dazu konfiguriert ist, mit der Speichersteuerung 515 zu kommunizieren. Solch ein Betriebssystem kann, zum Beispiel, Befehle erzeugen, die an die Speichersteuerung 515 über den Bus 540 zu senden sind. Solche Befehle können Lese- und/oder Schreibbefehle umfassen. In Antwort auf einen Schreibbefehl kann die Speichersteuerung 515 zum Beispiel ein Vorspannungssignal, wie einen Setz- oder Rücksetzimpuls, um Informationen zu einer Speicherpartition zu schreiben, die mit dem Schreibbefehl assoziiert sind, zum Beispiel.
-
Der Speicher 522 ist repräsentativ für jeglichen Datenspeichermechanismus. Der Speicher 522 kann Informationen empfangen, die über den RAM-Puffer 570 gespeichert werden sollen, der ähnlich dem RAM-Puffer 270 sein kann, der in 2 gezeigt ist, zum Beispiel. Der Speicher 522 kann zum Beispiel einen Primärspeicher 524 und/oder einen Sekundärspeicher 526 umfassen, von denen jeder in eine oder mehrere Partitionen partitioniert sein kann, wie oben diskutiert, zum Beispiel. Der Primärspeicher 524 kann zum Beispiel einen wahlfreien Zugriffsspeicher, Nur-Lese-Speicher, etc. umfassen. Obwohl in diesem Beispiel als separat von der Verarbeitungseinheit 520 dargestellt, sollte es verstanden werden, dass alles oder ein Teil des Primärspeichers 524 innerhalb oder anderweitig nah angeordnet/gekoppelt mit der Verarbeitungseinheit 520 bereitgestellt sein kann.
-
Der Sekundärspeicher 526 kann zum Beispiel denselben oder einen ähnlichen Typ an Speicher umfassen wie der Primärspeicher und/oder eine oder mehrere Datenspeichervorrichtungen oder -systeme, wie zum Beispiel ein Festplattenlaufwerk, ein optisches Laufwerk, ein Bandlaufwerk, ein Festkörperspeicherlaufwerk, etc. In verschiedenen Implementierungen kann der Sekundärspeicher 526 operativ empfänglich sein für oder anderweitig konfiguriert sein zum Koppeln mit einem computerlesbaren Medium 528. Das computerlesbare Speichermedium 528 kann zum Beispiel jedes Medium umfassen, das Daten, Codes und/oder Anweisungen für eine oder mehrere der Vorrichtungen in dem System 500 tragen kann und/oder zugänglich machen kann.
-
In einer Ausführungsform kann das System 500 eine Speichervorrichtung umfassen, wie die Speichervorrichtung 200, die in 2 zum Beispiel gezeigt ist. Solch eine Speichervorrichtung kann eine Speichersteuerung 515 umfassen, zum Initiieren eines Schreibvorgangs, um bestimmte Informationen zu einem Speicherfeld zu schreiben. Die Speichervorrichtung kann auch einen Speicherpuffer 570 umfassen, um die bestimmte Information von der Speichersteuerung zu empfangen, die bestimmte Information während des Schreibvorgangs auszuführen und die bestimmte Information nach einem Schreibfehlerereignis zu speichern. Das System 500 kann weiter einen Prozessor 520 umfassen, um eine oder mehrere Anwendungen zu bedienen, und Schreibbefehle zu der Speichersteuerung zu initiieren, um Zugriff auf das Speicherfeld bereitzustellen. In einer Implementierung kann der Speicherpuffer einen NAND Seitenpuffer umfassen, der intern zu einem NAND Speicher ist, der das Speicherfeld umfasst.
-
Die Rechenvorrichtung 504 kann zum Beispiel eine Eingabe/Ausgabe 532 umfassen. Die Eingabe/Ausgabe 532 ist repräsentativ für eine oder mehrere Vorrichtungen oder Einrichtungen, die konfigurierbar sein können, menschliche und/oder Maschineneingaben zu akzeptieren oder anderweitig einzuführen, und/oder eine oder mehrere Vorrichtungen oder Einrichtungen, die konfigurierbar sein können, Ausgaben für Menschen und/oder Maschinen auszugeben oder anderweitig bereitzustellen. Beispielsweise aber nicht begrenzend kann die Eingabe/Ausgabe 532 eine operativ konfigurierte Anzeige, Lautsprecher, Tastatur, Maus, Trackball, Touchscreen, Datenanschluss, etc. umfassen.