-
Die
vorliegende Erfindung betrifft ein Verfahren des Schreibens/Lesens
von Daten in einen/aus einem Flash-Speicher in Blöcken und
insbesondere ein Verfahren zum Ansteuern von Remapping logische
Adresse zu physikalische Adresse bei dem Lesen/Schreiben von Daten
aus einem/in einen Flash-Speicher, das eine Begrenzung der Anzahl
der Teilschreibzyklen und eine dafür geeignete Flash-Speicher-Architektur
aufweist.
-
Wie
andere Speicher, wie zum Beispiel herkömmliche Direktzugriffsspeicher
(RAM-Speicher), nichtflüchtige
Speicher und Magnetplatten, können Flash-Speicher
willkürlich
auf Daten zugreifen, die an bestimmten Positionen gespeichert sind.
Der grundsätzliche
Unterschied besteht darin, wie die Daten überschrieben und gelöscht werden
können.
Das heißt,
wenn Daten überschrieben
oder gelöscht
werden sollen, nachdem sie in einen Block eines Flash-Speichers,
der in Blöcke
von vorgegebener Größe für blockbasierten
Zugang unterteilt ist, geschrieben worden sind, muss eine Einheit,
die den Block enthält, überschrieben
oder gelöscht
werden. Ein Block in dem Flash-Speicher besteht aus Bytes, die zusammenhängende physikalische
Adressen aufweisen. Dieser Block ist eine Grundeinheit einer Operation
für einen
Flash-Speicher. Eine Einheit besteht aus einer Vielzahl von Blöcken und
ist eine Grundeinheit, in der Daten gleichzeitig physisch gelöscht und überschrieben
werden können.
-
Aufgrund
der Überschreibungs-
oder Löschmerkmale
des Flash-Speichers verschlechtert sich die Schreib- und Aktualisierungsleistung
der Daten mit steigender Anzahl der Löschzyklen. Weiterhin können Daten
beim Durchführen
von Überschreib-/Lösch-Operationen
in dem Flash-Speicher durch einen Fehler beschädigt werden. Um Beschädigung von
Daten zu verhindern, wurde ein Block-Remapping-Verfahren (oder Sektor-Remapping-Verfahren)
angewendet.
-
Dieses
Remapping-Verfahren soll Mappinginformationen zwischen einer logischen
Blocknummer (mit „LBN" abgekürzt) und
einer physikalischen Blocknummer (mit "PBN" abgekürzt) für in einen Flash-Speicher
geschriebene Daten verwalten, so dass, wenn die entsprechenden Daten überschrieben
oder gelöscht
werden, mit der gleichen LBN auf die Daten zugegriffen werden kann,
selbst wenn die PBN der Daten geändert
ist.
-
Wenn
gemäß herkömmlichen
Remapping-Verfahren Daten überschrieben
werden sollen, wird zuerst eine Einheit, die die PBN der Daten in
einem Flash-Speicher enthält,
nach einem physikalischen Block durchsucht, in den keine Daten geschrieben
sind, und danach werden die Daten in den physikalischen Block geschrieben.
Die Mappinginformationen zwischen der LBN und der PBN der Daten werden
aktualisiert. Somit kann ein Benutzer unter Verwendung der gleichen
LBN auf die entsprechenden Daten zugreifen, selbst wenn die PBN
der Daten geändert
ist. In diesem Fall wird Löschen
in der Statusinformation angezeigt, die sich auf den vorhergehenden
physikalischen Block für
die Daten bezieht.
-
Wenn
zum Beispiel Daten auf Einheiten überschrieben werden, die wie
in 1 gezeigt die physikalische Einheitsnummer (PUN)
1 und PUN2 in einem Flash-Speicher haben und wenn der Benutzer Daten überschreiben
möchte,
die in einen Block geschrieben sind, dessen LBN ,3' ist, wird PUN 1
wie in 2 gezeigt geändert.
Das heißt,
unter Bezugnahme auf eine Mappingtabelle LBN zu logische Einheitsnummer
(LUN) entspricht die LBN ,3' der
LUN ,2'. Unter Bezugnahme
auf eine Mappingtabelle LUN-zu-PUN entspricht LUN ,2' danach PUN ,1'. Somit wird PUN
1, die eine Einheit ist, deren PUN „1" ist, nach einem leeren physikalischen
Block durchsucht. Wie in 1 zu sehen ist, wird der physikalische Block
Nr. 4 (PBN 4) als der leere Block gefunden. Die Daten in Bezug auf
LBN ,3' werden auf
die PBN 4 geschrieben, und danach werden Mappinginformationen einer
Blockzuordnungs-Map (BAM) für
PUN 1 aktualisiert. Danach wird Löschen in der Statusinformation
zu PBN 1 in der BAM für
PUN 1 angezeigt. Wenn in diesem Fall jedoch die Anzahl der ungenutzten
physikalischen Blöcke
in einer physikalischen Einheit zunimmt, nimmt der Nutzungswirkungsgrad eines
Flash-Speichers
ab.
-
Um
dieses Problem zu lösen,
werden gemäß herkömmlichen
Remapping-Verfahren,
wie in 3 gezeigt, zunächst
nur genutzte Blöcke
in PUN1 zu einer PUN2 einer anderen Einheit übertragen. Danach wird die
entsprechende PUN in die PUN der anderen Einheit umgewandelt, das
heißt
von PUN1 in PUN2. Im Ergebnis dessen kann unter Verwendung der gleichen
LUN auch dann auf die Daten zugegriffen werden, wenn die Daten zu
der anderen Einheit übertragen
werden.
-
Das
herkömmliche
Remapping-Verfahren erlaubt keine eigentliche Lösch-Operation, solange ein leerer Block
oder eine leere Einheit in einer Einheit beziehungsweise in einem
Flash-Speicher vorliegt. Da jedoch eine erhöhte Anzahl gelöschter Blöcke den
unbrauchbaren Bereich in einem Flash-Speicher erhöht, kann
ein Verfahren der Wiederverwendung von Abschnitten, in denen gelöschte Blöcke vorliegen,
erforderlich sein.
-
Bei
einem Systemausfall, wie zum Beispiel einem Stromausfall während der
Schreib-Operation oder der Einheits-Wiederverwendungs-Operation können weiterhin
Benutzerdaten oder Daten, die für Remapping
genutzt werden, durch diesen Ausfall beschädigt werden. Um somit die Daten
gegen einen solchen Ausfall zu schützen, umfasst ein herkömmliches
Verfahren das Schreiben von Statusinformationen in einen entsprechenden
Block oder eine entsprechende Einheit und geeignetes Ändern der
während
einer Operation geschriebenen Statusinformationen, wodurch eine
Wiedergewinnungsoperation durchgeführt wird.
-
US-A-5627783
beschreibt eine Halbleiterscheiben-Vorrichtung, die einen Flash-Speicher mit einer
Vielzahl von Blöcken
und eine Zentraleinheit (CPU) zum Umwandeln der logischen Sektoradresse in
eine physikalisch-logische Blocknummer und ihren Offsetwert, zum
Suchen nach einem Block und einem Datenspeicherbereich in dem Flash-Speicher auf der
Grundlage der physikalisch-logischen Blocknummer und des Offsetwertes
und zum Lesen des Inhalts des Datenspeicherbereiches, wenn keine Kettendaten
in einem Aktualisierungsdatenketteninformations-Speicherbereich
gespeichert sind, umfasst. Der Takt umfasst einen physikalisch-logischen Blockspeicherbereich,
eine Vielzahl von Datenspeicherbereichen zum Speichern von Daten,
Datenstatuskennzeichen-Speicherbereiche, von denen einer entsprechend
einem jeden der Datenspeicherbereiche abgegeben wird, zum Speichern
des Datenstatuskennzeichens, das anzeigt, ob der Datenspeicherbereich
Daten speichert, und Aktualisierungsdatenketteninformations-Speicherbereiche, von
denen einer entsprechend einem jeden Datenspeicherbereich abgegeben
wird, um Ketteninformationen zu speichern, die den Zielort der Daten
angeben. Dieses Dokument bildet den Vorspruch des unabhängigen Anspruchs
1 bezüglich
des Verfahrens sowie des anhängenden
unabhängigen
Anspruchs bezüglich
der Vorrichtung.
-
US-A-5485595
beschreibt eine weitere herkömmliche
Flash-Speicher-Architektur, die ausgelegt ist, um eine geänderte Datei
in einen leeren Massenspeicherblock zu programmieren.
-
Wie
weiter oben beschrieben wurde, umfasst das herkömmliche Remapping-Verfahren die Durchführung einer
Teilschreiboperation zahlreiche Male, um Mappinginformationen und
Daten zu speichern und zu verwalten. Somit ist es schwierig, das
herkömmliche
Remapping-Verfahren auf einen Flash-Speicher, wie zum Beispiel einen NAND-Flash-Speicher
im Istzustand anzuwenden. Dies ist darauf zurückzuführen, dass die Anzahl von Teilschreibzyklen
beziehungsweise die Anzahl von Programmzyklen auf der gleichen Seite
auf fünf
beziehungsweise in dem Fall eines NAND-Flash-Speichers auf drei
begrenzt ist. Somit können
in einen Block oder in eine Einheit geschriebene Informationen nicht
zahlreiche Male überarbeitet
werden. In dem Fall eines Systemausfalls zum Beispiel kann eine
Wiedergewinnungsoperation normalerweise nicht durchgeführt werden,
da der Umfang der Überarbeitung
der in einen entsprechenden Block oder in eine entsprechende Einheit
geschriebenen Statusinformationen wie oben beschrieben begrenzt
ist.
-
Um
weiterhin den Status eines vorgegebenen Blockes in einem Vorgang
als frei (FF) → zugeordnet
(8F) → geschrieben
werdend (4F) → geschrieben
(2F) → gelöscht werdend
(0F) → gelöscht (00)
anzuzeigen oder um den Status einer vorgegebenen Einheit in einem
Vorgang als frei (FF) → kopiert
werdend (8F) → gültig (4F) → übertragen
werdend (2F) anzuzeigen, wird eine Schreiboperation an der gleichen
physikalischen Position wenigstens drei oder fünf Mal ausgeführt. Zusätzlich und
unter Berücksichti gung
des Umstandes, dass ein Pfad von Benutzerdaten oder Fehlerkorrekturcode
(ECC) in eine Einheit oder einen Block geschrieben wird, ist es
schwierig, herkömmliches
Remapping auf einen Flash-Speicher anzuwenden, bei dem die Anzahl
der Teilschreibzyklen auf drei beziehungsweise fünf begrenzt ist.
-
In
Bezug auf die Lösung
beziehungsweise die Milderung der oben genannten Probleme besteht ein
Ziel der vorliegenden Erfindung darin, ein Verfahren des Ansteuerns
von Remapping in einem Flash-Speicher bereitzustellen, durch das
der Status eines Blockes und einer Einheit überschrieben und bearbeitet
werden kann, während
gleichzeitig die Anzahl von Teilschreibzyklen auf einem Minimum
gehalten werden, sowie eine darauf angepasste Flash-Speicher-Architektur
bereitzustellen.
-
Ein
weiteres Ziel von Ausführungsbeispielen der
vorliegenden Erfindung ist die Bereitstellung eines Verfahrens des
Ansteuerns von Remapping in einem Flash-Speicher, der Statusinformationen in
Bezug auf einen Block und eine Einheit mit einer kleineren Anzahl
von Teilschreibzyklen unter Verwendung von Wrapcount anzeigt, sowie
einer darauf angepassten Flash-Speicher-Architektur.
-
Ein
weiteres Ziel der Ausführungsbeispiele der
vorliegenden Erfindung ist die Bereitstellung eines Verfahrens des
Ansteuerns von Remapping, das für
einen NAND-Flash-Speicher
geeignet ist, sowie einer darauf angepassten Flash-Speicher-Architektur.
-
Gemäß einem
ersten Aspekt der vorliegenden Erfindung wird ein Verfahren des
Ansteuerns von Remapping logische Adresse zu physikalische Adresse
beim Schreiben von Daten in einen Flash-Speicher bereitgestellt,
welcher in eine Vielzahl von Einheiten unterteilt ist, wobei eine
jede Einheit einen Block oder mehrere Blöcke aufweist, wobei eine jede
Einheit Statusinformationen für
einen jeden Block enthält,
die andeuten, ob der Status des Blockes frei, gültig oder gelöscht ist,
wobei das Verfahren umfasst: Suchen nach einer vorgegebenen physikalischen
Einheit auf der Grundlage von Mappinginformationen zu einem vorgegebenen
Block; wenn der vorgegebene Block in der gefundenen physikalischen
Einheit vorliegt, Überprüfen des
Status des vorgegebenen Blockes; und wenn der vorgegebene Block
in der gefundenen physikalischen Einheit in einem gültigen Status
vorliegt, dann: Durchsuchen der gefundenen physikalischen Einheit nach
einem anderen Block, dessen Status frei ist; Ändern des Status des anderen
Blockes in einen gültigen
Status; Schreiben neuer Daten und zusätzlicher Informationen, einschließlich einer
neuen logischen Blocknummer, in den anderen Block; und Ändern des
Status des vorgegebenen Blockes in einen gelöschten Status. Die Statusinformation
der Blöcke,
deren Status gültig
ist, wird weiter in eine Vielzahl gültiger Zustände unterteilt; und Ändern des
Status des anderen Blockes umfasst weiterhin Setzen seines gültigen Zustandes
unter Verwendung eines Wrapcounts in Abhängigkeit von dem gültigen Zustand
des vorgegebenen Blockes.
-
Vorzugsweise
umfasst das Ändern
des Status des anderen Blockes: Setzen des Status des anderen Blockes
auf den zweiten gültigen
Zustand, wenn sich der vorgegebene Block in dem ersten gültigen Zustand
befindet; Setzen des Status des anderen Blockes auf den dritten
gültigen
Zustand, wenn sich der andere Block in dem zweiten gültigen Zustand
befindet; und Setzen des Status des anderen Blockes auf den ersten
gültigen
Zustand, wenn sich der vorgegebene Block in dem dritten gültigen Zustand
befindet.
-
Das
Verfahren kann weiterhin umfassen: wenn der vorgegebene Block in
einem gelöschten Zustand
vorhanden ist, Suchen nach einem anderen Block, dessen Zustand frei
ist.
-
Das
Verfahren kann weiterhin umfassen: Durchführen einer Wiedergewinnungsoperation
an der physikalischen Einheit, wobei die physikalische Einheit die
Quelleneinheit ist, wenn der andere Block nicht vorliegt; Suchen
nach einem anderen Block in einer Übertragungseinheit, deren Status
frei ist; Zurückkehren
zu dem Ändern
des Status des anderen Blockes, wenn der andere Block gefunden wird;
und Bearbeiten dieser Situation als Fehler, wenn der andere Block
nicht gefunden wird.
-
Vorzugsweise
umfasst das Durchführen
der Wiedergewinnungsoperation: Setzen des Status der Quelleneinheit
und der Übertragungseinheit
auf übertragen
werdend beziehungsweise auf kopiert werdend; Kopieren der gültigen Blöcke und
der zugehörigen
Metainformationen und der Header-Informationen von der Quelleneinheit
in die Übertragungseinheit;
Setzen der Übertragungseinheit,
deren Status auf kopiert werdend gesetzt worden ist, auf einen gültigen Zustand
und gleichzeitig Erhöhen
der Anzahl der Lösch zyklen
(Verschleißniveau)
der Quelleneinheit; Löschen
der Quelleneinheit und gleichzeitig Schreiben der Anzahl der Löschzyklen
der Quelleneinheit; Aktualisieren der Informationen zu dem Flash-Speicher
nach dem Löschen
der Quelleneinheit und Schreiben der neuen Anzahl von Löschzyklen
in die Quelleneinheit, wobei die neue Anzahl von Löschzyklen
der Wert gleich der vorgehenden Anzahl von Löschzyklen plus 1 ist; Überprüfen, ob
eine wiederherzustellende Quelleneinheit weiter existiert; und Zurückkehren
zum Ermitteln einer Quelleneinheit, wenn die wiederherzustellende
Quelleneinheit weiter existiert.
-
Vorzugsweise
umfasst das Durchführen
einer Wiedergewinnungsoperation weiterhin: Überprüfen, ob die Anzahl von Löschzyklen
für die Übertragungseinheit
einen Schwellenwert überschreitet;
Zurückkehren
zum Setzen des Status der Quelleneinheit und der Übertragungseinheit
auf übertragen
werdend beziehungsweise auf kopiert werdend, wenn die Anzahl der
Löschzyklen
den Schwellenwert nicht überschreitet;
Speichern einer Quelleneinheits-Nummer der Quelleneinheit, wenn
die Anzahl der Löschzyklen
den Schwellenwert überschreitet;
und Auswählen
einer geänderten Übertragungseinheit
mit der kleinsten Anzahl von Löschzyklen
sowie danach Zurückkehren
zum Setzen des Status der Quelleneinheit und der Übertragungseinheit.
-
Vorzugsweise
umfasst das Durchführen
einer Wiedergewinnungsoperation weiterhin: Überprüfen, ob im Fehlerfalle zwei
Einheiten vorliegen, die die gleiche logische Einheitsnummer aufweisen;
und wenn zwei Einheiten, die die gleiche logische Einheitsnummer
aufweisen, vorliegen, von denen eine übertragen wird und von denen
die andere kopiert wird, Löschen
der kopiert werdenden Einheit und Schreiben der Anzahl von Löschzyklen
in die übertragen
werdende Einheit.
-
Vorzugsweise
wird Schreiben der Anzahl von Löschzyklen
in die zu übertragende
Einheit durchgeführt,
wenn die Anzahl von Löschzyklen
nicht in die übertragen
werdende Einheit geschrieben wird.
-
Das
Verfahren kann weiterhin umfassen: Überprüfen, ob im Fehlerfalle zwei
gültige
Blöcke
vorliegen, die die gleiche logische Blocknummer haben; Beenden des
Vorganges des Schreibens des Status eines Blockes, wenn nur ein
gültiger
Block vorliegt; Überprüfen des
Status der beiden Blöcke
und Unterscheiden zwischen dem vorgegebe nen Block (dem vorhergehenden
Block) und einem nächsten
Block (einem neuen Block), wenn die beiden gültigen Blöcke vorliegen; und Löschen entweder
des vorgegebenen Blockes oder des nächsten Blockes.
-
Gemäß einem
zweiten Aspekt der Erfindung wird ein Flash-Speicher bereitgestellt,
der in eine Vielzahl von Einheiten unterteilt ist, wobei eine jede Einheit
einen Block oder mehrere Blöcke
aufweist, wobei eine jede Einheit Statusinformationen für jeden Block
enthält,
die andeuten, ob der Status des Blockes entweder frei, gültig oder
gelöscht
ist, wobei der Flash-Speicher angeordnet ist, um auf der Grundlage von
Mappinginformationen zu einem vorgegebenen Block nach einer vorgegebenen
physikalischen Einheit zu suchen; wenn der vorgegebene Block in
der gefundenen physikalischen Einheit vorliegt, den Status des vorgegebenen
Blockes zu prüfen;
und wenn der vorgegebene Block in der gefundenen physikalischen
Einheit in einem gültigen
Status vorliegt, die gefundene physikalische Einheit nach einem
anderen Block zu durchsuchen, dessen Status frei ist; neue Daten
und zusätzliche
Informationen, einschließlich
einer logischen Blocknummer, in den anderen Block zu schreiben;
und den Status des vorgegebenen Blockes in einen gelöschten Status
zu ändern.
Die Statusinformationen von Blöcken,
deren Status gültig
ist, wird weiter in eine Vielzahl von gültigen Zuständen unterteilt, und der Status
des anderen Blockes wird geändert,
indem sein gültiger
Zustand unter Verwendung eines Wrapcounts in Abhängigkeit von dem gültigen Zustand
des vorgegebenen Blockes gesetzt wird.
-
Vorzugsweise
wird ein erster Block einer jeden Einheit so zugeordnet, dass Informationen,
einschließlich
einer logischen Einheitsnummer, der Gültigkeit eines Status und der
Anzahl von Löschzyklen für eine vorhergehende
Einheit, geschrieben werden, wird ein zweiter Block so zugeordnet,
dass Informationen, einschließlich
des Status Kopieren/Übertragen und
der Anzahl von Löschzyklen
(Verschleißniveau), geschrieben
werden, und wird die Information, die den Status eines Blockes andeutet,
auf der Grundlage eines Wrapcounts ermittelt und in einen vorgegebenen
Bereich eines Reservefeldes in einem Block, in den die Daten der
Einheit geschrieben werden, geschrieben.
-
Zum
besseren Verständnis
der Erfindung und um zu zeigen, wie Ausführungsbeispiele derselben ausgeführt werden
können,
wird nunmehr beispielhaft auf die anhängenden Schemata Bezug genommen.
-
Kurze Beschreibung der
Zeichnungen:
-
1 zeigt
ein Beispiel der Beziehung zwischen einem Block und einer Einheit
in einem Flash-Speicher und einem herkömmlichen Remapping-Ansteuerungsverfahren.
-
2 zeigt
ein Beispiel der Beziehung zwischen einem Block und einer Einheit
in dem Flash-Speicher und dem herkömmlichen Remapping-Ansteuerungsverfahren,
wenn ein Block des Flash-Speichers gelöscht wird, in den Daten wie
in 1 gezeigt geschrieben worden sind, gelöscht wird.
-
3 zeigt
ein Beispiel der Beziehung zwischen einem Block und einer Einheit
in dem Flash-Speicher und dem herkömmlichen Remapping-Ansteuerungsverfahren,
wenn eine Einheit des Flash-Speichers, in die Daten wie in 2 gezeigt geschrieben
worden sind, gelöscht
wird.
-
4 zeigt
ein Beispiel der Beziehung zwischen Blöcken zum Erläutern von
Schreib- und Überschreiboperationen,
die durch ein Remapping-Ansteuerungsverfahren für einen Flash-Speicher gemäß den Ausführungsbeispielen
der vorliegenden Erfindung durchgeführt werden.
-
5 zeigt
ein Format einer physikalischen Einheit (PU) eines NAND-Flash-Speichers.
-
6 zeigt
ein Fließbild
eines Verfahrens des Schreibens eines Blockes durch ein Remapping-Ansteuerungsverfahren
für einen
Flash-Speicher gemäß den Ausführungsbeispielen
der vorliegenden Erfindung.
-
7 zeigt
ein Format einer Löscheinheit
eines Flash-Speichers gemäß den Ausführungsbeispielen
der vorliegenden Erfindung.
-
8 zeigt
ein Beispiel der Beziehung zwischen Einheiten zum Erläutern eines
Verfahrens des Durchführens
einer Wiedergewinnungsoperation durch ein Remapping-Ansteuerungsverfahren
für einen
Flash-Speicher; und
-
9 zeigt
ein Fließbild
eines Verfahrens einer Wiedergewinnungsoperation in dem Remapping-Ansteuerungsverfahren
für einen
Flash-Speicher gemäß den Ausführungsbeispielen
der vorliegenden Erfindung.
-
Zuerst
wird eine Löscheinheit
als Grundeinheit von Löschen
in einem Remapping-Verfahren für einen
Flash-Speicher verwendet. Die Löscheinheit kann
die gleiche sein wie ein physikalischer Löschblock eines Flash-Speichers,
wie zum Beispiel die physikalische Einheitsnummer (PUN) 1 oder PUN
2, die in den 1 bis 3 gezeigt
wird, oder sie kann aus einer Vielzahl von Löschblocks bestehen. Eine PUN
und eine logische Einheitsnummer (LUN) werden einer jeden Löscheinheit
zugeordnet. Eine PUN wird auf der Grundlage der physikalischen Ordnung einer
Löscheinheit
zugeordnet, wohingegen eine LUN die logische Ordnung einer Einheit
andeutet. Wenn anfangs ein Flash-Speicher verwendet wird, wird eine
Tabelle, die ein LUN-zu-PUN-Mapping anzeigt, wie in den 1 bis 3 gezeigt,
in dem Flash-Speicher oder in einem separaten Speicher bereitgestellt.
Diese Tabelle ändert
sich jedes Mal, wenn sich die Mapping-Beziehung des Flash-Speichers aufgrund
von Operationen, wie zum Beispiel Löschen, Überschreiben und Wiedergeben, ändert.
-
Die
Löscheinheit
ist in Blöcke
(oder Sektoren) aufgeteilt, wie in der PUN 1 und der PUN 2 aus den 1 bis 3 gezeigt
wird. Diese Blöcke
von gleicher Größe sind
die Grundeinheiten einer Operation für einen Flash-Speicher. Weiterhin
umfasst die Löscheinheit
einen Löscheinheit-Header
(EUH) und eine Blockzuordnungs-Map.
-
Informationen über den
gesamten Flash-Speicher und Informationen, die für die Verwaltung einer entsprechenden
Löscheinheit
benötigt werden,
werden in den EUH der Löscheinheit
geschrieben. Die Informationen über
den gesamten Flash-Speicher können
Anzeigen der Größe der Blöcke in der
Löscheinheit
sowie eine Map für
fehlerhafte Blöcke
umfassen. Die für
die Einheitsverwaltung benötigten
Informationen können
eine LUN und ein Verschleißniveau
umfassen. Der Löscheinheit-Header
kann von einem Block oder von mehreren Blöcken eingenommen werden.
-
Auf
den EUH folgend werden Benutzerdaten und die BAM geschrieben, wie
in der PUN1 und der PUN2 aus den 1 bis 3 gezeigt
wird. Die BAM kann gemein sam in einen Block oder in mehrere Blöcke geschrieben
werden, oder sie kann in einen besonderen Raum geschrieben werden,
wie zum Beispiel blockweise in ein Reservefeld eines NAND-Flash-Speichers.
-
Informationen über die
Blöcke
in der Löscheinheit,
wie zum Beispiel die logische Blocknummer (LBN) und ein Blockstatus,
werden in die BAM geschrieben. Eine LBN ist die Adresse eines Blockes
von dem Gesichtspunkt des Benutzers. Somit stellt die BAM Mapping
zwischen einer LBN und einer physikalischen Speicherzelle dar, an
der der entsprechende Block tatsächlich
geschrieben wird. Wenn in einen Block geschriebene Daten geändert werden,
wird auch der Inhalt der BAM, wie zum Beispiel LBN-zu-PBN-Mappinginformationen
und Statusinformationen, geändert.
-
Wenn
sich die Anzahl der Blöcke,
deren Status geändert
wird, erhöht,
nehmen unbrauchbare Abschnitte in dem Flash-Speicher zu. Somit wird
eine Wiedergewinnungsoperation in geeigneter Weise durchgeführt, um
von einem Löschblock
eingenommene Räume
wieder zu nutzen. Ein herkömmliches Remapping-Ansteuerungsverfahren
berücksichtigt diesen
Punkt zwar, gibt jedoch nicht vor, wie die Wiedergewinnungsoperation
für einen
Flash-Speicher, wie zum Beispiel einen NAND-Flash-Speicher mit einer Begrenzung
der Anzahl von Teilschreibzyklen, durchgeführt wird.
-
Somit
schlägt
die vorliegende Erfindung ein Verfahren des Anzeigens von Statusinformationen
zu einem jeweiligen Block unter Verwendung eines Wrapcounts vor.
Dieses Verfahren ermöglicht
es, den Status des jeweiligen Blockes mit einer kleineren Anzahl
von Teilschreiboperationen zu ändern
und Daten des jeweiligen Blockes im Falle eines Systemausfalls wiederzugewinnen.
Da weiterhin die vorhergehenden Daten und neue Daten voneinander
unterschieden werden können,
indem die sich ändernde
Ordnung eines Wrapcounts verwendet wird, können verschiedene Wiedergewinnungsverfahren,
wie zum Beispiel Forward Recovery oder Backward Recovery, verwendet
werden. Mit der Backward Recovery sollen Daten mit neuen Daten wiedergewonnen
werden, während
die Forward Recovery Daten mit vorhergehenden Daten wiedergewinnen
soll. Wie weiter oben beschrieben worden ist, ist eine Remapping-Ansteuerungsoperation
des Flash-Speichers in drei wichtige Operationen unterteilt: Schreiben
des Blockes, Suchen nach einem leeren Block und Wiedergewinnen aus
dem Ausfall.
-
Der
Status eines jeden Blockes in der BAM wird als ,frei', ,gültig' oder ,gelöscht' angezeigt. Der Status
,gültig' kann in drei Zustände unterteilt
werden, wie zum Beispiel in s0, s1 und s2. Es gibt eine kreisförmige Beziehung
zwischen drei Zuständen
in einem gültigen
Zustand. Zum Beispiel s0 < s1,
s1 < s2 und s2 < s0. Der gültige Status
wird in dieser Reihenfolge geändert,
was als Wrapcount bezeichnet wird. Das heißt, ein jeweiliger Block befindet
sich anfangs in einem freien Zustand und wenn zuerst Daten aufgezeichnet
werden, ist der Status des jeweiligen Blockes s0. Wenn erneut Daten
aufgezeichnet werden, wird der Status des Blockes in der Reigenfolge s1,
s2, s0 geändert.
-
4 zeigt
ein Verfahren des Schreibens von Daten in einem vorgegebenen Block
unter der oben genannten Statusinformation. 4 ist ein
Beispiel, bei dem ,frei',
,s0', ,s1', ,2' und ,gelöscht' als ,1111', ,1110', ,1100', ,1000' und ,0000' gesetzt werden.
Somit wird der Status des Blockes mit den fünf umlaufenden Werten gesetzt. 4 ist
ein Beispiel, bei dem ein aus physikalischen Einheiten (PUs) bestehender
NAND-Flash-Speicher
wie in 5 gezeigt verwendet wird.
-
Wie
in 5 gezeigt wird, besteht ein Block in einer PU
für einen
NAND-Flash-Speicher
aus einem Hauptfeld und einem Reservefeld. Ist-Daten werden in das
Hauptfeld geschrieben. Informationen, wie zum Beispiel die logische
Sektornummer 1sn, ein Wrapcount cnt, ein Fehlerkorrekturcode für den cnt und
lsn ecc_lsn, und ein Fehlerkorrekturcode für Daten ecc_data, werden in
das Reservefeld geschrieben. In diesem Fall wird der Block auch
eine Seite genannt.
-
Ein
in dem Datenblatt eines NAND-Flash-Speichers häufig verwendeter „Block" ist eine PU, die
in der Lage ist, Daten zu einer Zeit zu löschen. Dieser Block kann der
gleiche sein wie die Einheit",
die in diesem Ausführungsbeispiel
genannt wird. Bei der eigentlichen Implementierung kann die Einheit
jedoch aus einer Vielzahl von Blöcken
bestehen.
-
Zuerst
werden eine LUN und eine PUN einer Einheit, die zu einem entsprechenden
Block gehört, unter
Verwendung von Mappinginformationen ermittelt. Eine Überprü fung des
Status des entsprechenden Blockes in der BMA der ermittelten PUN
wird durchgeführt.
Wenn der Status des Blockes ,frei' (1111) ist, wird der Status des Blockes
als ,s0' (1110) angezeigt.
Danach werden Informationen, wie zum Beispiel Daten und die logische
Sektornummer lsn, in den Block geschrieben. Der Block in einem ,freien' Zustand hat auch
eine ungültige
logische Sektornummer lsn.
-
Wenn
der Status des entsprechenden Blockes ,gültig' ist, wird die entsprechende PU nach
einem typischen Mappingverfahren nach einem Block durchsucht, dessen
Status ,frei' (1111)
ist. Danach wird der Status des gefundenen Blockes in den Status
geändert,
der dem Status des vorhergehenden Blockes folgt. Wenn zum Beispiel
der Status des vorherigen Blockes mit ,s0' (1110) bezeichnet wird, wird der Status
eines neuen Blockes in ,s1' (1100)
geändert.
Eine Blockdurchsuchung wird auf die gleiche Art und Weise wie bei
dem herkömmlichen
Remapping-Ansteuerungsverfahren durchgeführt. Danach werden die neuen
Daten und eine neue logische Sektornummer lsn in den neuen Block
geschrieben, dessen Status auf ,s1' (1100) gesetzt ist. Der Status des vorhergehenden
Blockes wird in ,gelöscht' (0000) geändert.
-
Wenn
der Status des entsprechenden Blockes ,s1' (1100) ist und ein auf ,frei' (1111) gesetzter Block
in der entsprechenden Einheit vorliegt, wird der Status des Blockes
in einem ,freien' Zustand
auf ,s2' (1000)
gesetzt. Danach werden Informationen, wie zum Beispiel Daten und
eine logische Sektornummer lsn, in den entsprechenden Block geschrieben,
dessen Status auf ,s2' gesetzt
ist. Der Status des vorhergehenden Blockes wird in ,gelöscht' (0000) geändert.
-
Wenn
der Status des entsprechenden Blockes ,s2' (1000) ist und ein auf ,frei' (1111) gesetzter Block
in der entsprechenden Einheit vorliegt, wird der Status des Blockes
in einem ,freien' Zustand
auf ,s0' (1110)
gesetzt. Danach werden Daten und eine logische Sektornummer lsn
in den entsprechenden Block geschrieben, dessen Status auf ,s0' gesetzt ist. Der
Status des vorhergehenden Blockes wird in ,gelöscht' (0000) geändert.
-
Die
in 4 gezeigte mit Pfeilen angedeutete Statusänderung
eines jeden Blockes wird vollständig
erläutert.
-
Wenn
Schreiben und Überschreiben
für einen
jeden Block auf diese Weise durchgeführt werden, können Daten
auf einen Block geschrieben werden, indem eine Teilschreiboperation
drei Mal durchgeführt
wird (prof). Wenn sich ein Block in einem ,gelöschten' Zustand befindet, wobei davon ausgegangen
wird, dass andere Daten als Statusinformationen, wie zum Beispiel
Daten und eine logische Sektornummer lsn, uneingeschränkt gültig sind,
können die
Daten effektiv geschrieben werden, indem eine Teilschreiboperation
zwei Mal durchgeführt
wird. Wenn ein Systemausfall aufgrund eines Stromausfalls oder aufgrund
anderer Gründe
in 401 bis 407 auftritt, wird eine Wiedergewinnungsoperation
durchgeführt,
während
derer der Status eines Blockes, in den Daten geschrieben werden,
auf ,gelöscht' gesetzt wird. Während des
verbleibenden Verfahrens in dem Fall eines Systemsausfalls, wie
zum Beispiel Stromausfall, ist es nicht notwendig, irgendwelche besonderen
Wiedergewinnungsoperationen durchzuführen.
-
Das
heißt,
wenn ein Fehler auftritt, wenn Daten in einen bestimmten Block geschrieben
werden, muss an einem ,freien' oder
einem ,gelöschten' Block keine Wiedergewinnungsoperation
durchgeführt
werden. Dies ist der Fall, wenn nur ein Block in Bezug auf eine
logische Blocknummer gültig
ist.
-
Eine
Wiedergewinnungsoperation ist erforderlich, wenn zwei gültige Blöcke, die
die gleiche logische Blocknummer haben, vorliegen. Nach dem Stand
der Technik ist es nicht möglich,
wenn zwei gültige
Blöcke
vorliegen, die die gleiche logische Blocknummer haben, einen vorhergehenden
Block von einem neuen Block zu unterscheiden, wodurch es schwierig
wird, zu bestimmen, welcher Block bei einer Wiedergewinnungsoperation
gelöscht
werden wird. Bei Verwendung eines Wrapcounts andererseits ist es
möglich,
zwischen einem vorhergehenden Block und einem neuen Block zu unterscheiden,
wodurch es problemlos möglich
wird, zu bestimmen, welcher Block gelöscht werden wird. Ob bei einer Wiedergewinnungsoperation
ein vorhergehender Block oder ein neuer Block gelöscht werden
wird, kann in Abhängigkeit
von der Art der Anwendung bestimmt werden.
-
Das
heißt,
wenn ein Systemausfall auftritt, wenn Blockdaten geschrieben werden,
wird eine Prüfung
durchgeführt,
ob zwei gültige
Blöcke
vorliegen, die die gleiche logische Blocknummer haben. Wenn nur
ein Block mit einem ,gültigen' Status vorliegt,
ist keine Wiedergewinnungsoperation erforderlich, und eine Schreiboperation
wird ab gebrochen. Wenn jedoch zwei Blöcke in einem ,gültigen' Zustand vorliegen,
werden ein vorhergehender Block und ein neuer Block auf der Grundlage
eines jedem Block zugeordneten Wrapcount unterschieden. Danach wird
entweder ein vorhergehender Block oder ein neuer Block gelöscht. 4 ist
ein Beispiel, bei dem ein neuer Block gelöscht wird. Jedoch kann ein
vorhergehender Block gelöscht
werden.
-
6 ist
ein Fließbild
einer Schreib-/Überschreib-Operation
nach einem Remapping-Ansteuerungsverfahren gemäß der vorliegenden Erfindung.
-
In
dem Schritt 601 wird eine Prüfung durchgeführt, ob
ein entsprechender Block in einer entsprechenden Einheit vorliegt.
Wenn der entsprechende Block vorliegt, wird eine Prüfung durchgeführt, ob der
entsprechende Block in einem ,gültigen' Zustand vorliegt.
Wenn der Block gültig
ist, wird der Status des entsprechenden Blockes in dem Schritt 603 überprüft. Danach
wird in dem Schritt 605 eine Prüfung durchgeführt, ob
in der entsprechenden Einheit ein leerer Block vorliegt. Die Prüfung wird
so durchgeführt,
dass die entsprechende Einheit nach einem Block durchsucht wird,
der als ,frei' gesetzt
ist. Wenn ein leerer Block in der entsprechenden Einheit vorliegt,
wird der Statuswert eines neuen Blockes in dem Schritt 607 ermittelt.
-
Der
Statuswert des neuen Blockes wird in Abhängigkeit von dem Statuswert
des entsprechenden in dem Schritt 603 überprüften Blockes ermittelt. Wie
oben unter Bezugnahme auf 4 beschrieben wurde,
wird der Statuswert es neuen Blockes auf ,s1' gesetzt, wenn der Status des vorhergehenden
Blockes auf ,s0' gesetzt
ist. Wenn der Status des vorhergehenden Blockes auf ,s1' gesetzt wird, wird
der Statuswert des neuen Blockes auf ,s2' gesetzt, und wenn der Status des vorhergehenden
Blockes auf ,s2' gesetzt
wird, wird der Statuswert des neuen Blockes auf ,s0' gesetzt. Wenn der
Status des vorhergehenden Blockes auf ,fei' gesetzt ist, wird der Statuswert des
neuen Blockes auf ,s0' gesetzt.
-
Danach
wird in dem Schritt 609 der Statuswert des neuen Blockes,
der in dem Schritt 607 ermitelt wird, auf den in dem Schritt 605 gefundenen
leeren Block geschrieben. In dem Schritt 611 werden Daten,
die dem neuen Block entsprechen, dessen Statuswert geschrieben worden
ist, auf den neuen Block geschrieben. In dem Schritt 613 wird
der Status des vorhergehenden Blockes in ,gelöscht' geändert, und
der Vorgang wird beendet. In diesem Fall ist der vorhergehende Block
der Block, dessen Status in dem Schritt 603 überprüft wurde.
-
Inzwischen
kann der entsprechende Block anders als gültig angezeigt werden (das
heißt,
der Status des entsprechenden Blockes ist ,gelöscht'), und zwar im Ergebnis der in dem Schritt 601 durchgeführten Prüfung. Wenn
der entsprechende Block nicht vorliegt, wird ein Bereich für den entsprechenden
Block zugeordnet, und der Status des entsprechenden Blockes wird
mit ,frei' bezeichnet.
-
Wenn
sodann ein leerer Block in der entsprechenden Einheit als Ergebnis
der in dem Schritt 605 durchgeführten Prüfung vorliegt, wird der Statuswert eines
neuen leeren Blockes wie in dem Schritt 607 beschrieben
bestimmt. Wenn im umgekehrten Fall kein leerer Block vorliegt, wird
in dem Schritt 617 eine Wiedergewinnungsoperation durchgeführt. Die
Wiedergewinnungsoperation wird an späterer Stelle unter Bezugnahme
auf die 7 bis 9 beschrieben werden.
-
Nachdem
die Wiedergewinnungsoperation durchgeführt worden ist, wird eine Prüfung durchgeführt, ob
ein leerer Block in der entsprechenden Einheit in dem Schritt 619 vorliegt.
Wenn der leere Block im Ergebnis der Prüfung in der entsprechenden
Einheit vorliegt, kehrt der Bearbeitungsfluss zu dem Schritt 607 zurück, um den
Statuswert des neuen Blockes zu ermitteln. Wenn jedoch kein leerer
Block vorliegt, wird Fehlerbehandlung durchgeführt, und der Vorgang wird in
dem Schritt 621 beendet.
-
Um
Daten aus einem bestimmten Block auszulesen, werden zuerst die entsprechende
LUN und PUN unter Verwendung von Mappinginformationen ermittelt.
Der physikalische Speicherort des bestimmten Blockes wird durch
die BAM für
eine bestimmte Einheit ermittelt, und danach werden Daten daraus
ausgelesen. Daten können
nur ausgelesen werden, wenn der Block gültig ist. Wenn kein gültiger Bock
vorliegt, bedeutet dies somit, dass der Block in der entsprechenden
Einheit niemals beschrieben worden ist oder dass er gelöscht worden
ist, um unbrauchbar zu sein. Der Block wird auf einen Anfangswert
0xFF gesetzt. Eine Blocksuche wird auf die gleiche Art und Weise
wie bei dem herkömmlichen
Remapping-Ansteuerungsverfahren durchgeführt.
-
Inzwischen
wird in dem Fall einer Einheit, die eine Anzahl gelöschter Blöcke aufweist,
eine Wiedergewinnungsoperation durchgeführt. Auch in diesem Fall muss
der Status der Einheit nicht geändert
werden. 7 ist ein Beispiel eines Formats
einer Löscheinheit
für einen
Flash-Speicher gemäß der vorliegenden
Erfindung. Unter Bezugnahme auf 7 werden
die physikalische Einheitsnummer einer vorhergehenden Einheit xpun,
ein Verschleißniveau
einer wiedergewonnenen (vorhergehenden) Einheit xcnt, eine logische
Einheitsnummer lun, ein gültiges
Kennzeichen v, eine Tabelle für
fehlerhafte Blöcke
bb tbl, ein Verschleißniveau
cnt, Kopieren/Übertragen
cp/xf und Daten in die Löscheinheit geschrieben.
-
Die
Statusänderung
einer Einheit wird in Abhängigkeit
von der Anzahl der Teilschreiboperationen begrenzt. Ein Wrapcount-Verfahren
für einen
Block kann auf die Einheit anwendbar sein. Statusinformationen können jedoch
in geeigneter Weise über
einen jeden Block verteilt werden, während der EUH in eine Vielzahl
von Blöcken
geschrieben wird.
-
Wenn
zum Beispiel der Status der Einheit in frei, gültig, kopiert werdend und übertragen
werdend unterteilt wird, wird der EUH wie in 8 gezeigt
in zwei Blöcke
geschrieben. ,Frei' und
,gültig' werden in einen
ersten Block geschrieben, wohingegen ,kopiert werdend' und ,übertragen
werdend' in einen
zweiten Block geschrieben werden. In diesem Fall muss ein Zähler für Verschleißausgleich
geschrieben werden, auch wenn die Einheit ,frei' ist.
-
Eine
freie Löscheinheit
ist frei und normale Einheiten mit Ausnahme der freien Löscheinheit
sind gültig.
Die Einheit, die Daten aus wiedergewonnenen Blöcken kopiert, welche ehemals
die Löscheinheit war,
wird als kopiert werdend ,cp' angezeigt.
Bevor eine Wiedergewinnungsoperation durchgeführt wird, wird der Status der
vorhergehenden Einheit als übertragen
werdend ,xf' angezeigt.
Gültige
Blöcke
werden von der übertragen
werdenden Einheit auf die kopiert werdende Einheit kopiert, und
danach werden ein Verschleißniveau
cnt und eine logische Blocknummer lun der übertragen werdenden Einheit
kopiert. Der Status der kopiert werdenden Einheit wird als gültig v angezeigt.
Danach wird die übertragen
werdende Einheit gelöscht.
Ein Verschleißniveau
cnt" gleich dem
Verschleißniveau
cnt, das auf die neue Einheit kopiert wird, plus 1 wird auf die
Header der neuen Einheit beziehungsweise der vorhergehenden Einheit
geschrieben. Wenn während
der Wiedergewinnungsoperation ein Fehler auftritt, wird die Operation
an Abschnitten eingeleitet, die in 8 als erneut
durchführen
(redo) bezeichnet wer den, und danach wird ein Wiedergewinnungsverfahren
in geeigneter Weise durchgeführt.
Das heißt,
in dem Fall von ,übertragen
werdend' und ,kopiert
werdend', welches zeitweilige
Zustände
während
der Wiedergewinnungsoperation sind, wird die Operation erneut ausgeführt. Jedoch
wird die Wiedergewinnungsoperation nur an den als ,erneut durchführen' angezeigten Abschnitten
durchgeführt.
-
Ein
Wiedergewinnungsverfahren für
einen Ausfall während
der Wiedergewinnungsoperation ist ähnlich dem für einen
Ausfall während
der Block-Schreib-/Überschreib-Operation.
Das heißt, eine
Wiedergewinnungsoperation wird erneut gemäß den Verfahren der Operation,
die durchgeführt
wird, in geeigneter Weise durchgeführt. Wenn zum Beispiel zwei
Einheiten, die die gleiche LUN haben, vorliegen, von denen eine
kopiert und die andere übertragen
wird, wird die Einheit, die kopiert wird, gelöscht. Wenn das Verschleißniveau
der Einheit, die übertragen
wird, noch nicht auf die Einheit, die kopiert wird, geschrieben
wird, wird das Verschleißniveau
der Einheit, die übertragen
wird, auf die Einheit, die übertragen
wird, kopiert, und danach wird der nächste Schritt durchgeführt.
-
Der
Status der Löscheinheit
kann angezeigt werden, indem verschiedene Werfe an den festen Speicherplätzen wie
in dem herkömmlichen
Remapping-Ansteuerungsverfahren
geändert
werden. Alternativ dazu kann der Einheits-Header in eine Vielzahl von
Blöcken
in der entsprechenden Einheit geschrieben werden, ein unterschiedlicher
Speicherplatz kann für
einen jeden Status der Einheit benannt werden, und der Wert des
Speicherplatzes wird in 0 und 1 geteilt, um zu ermitteln, ob der
Statuswert zugeordnet ist.
-
Zum
Beispiel können
Informationen, wie zum Beispiel eine logische Einheitsnummer lun,
die Gültigkeit
eines Einheitsstatus und ein Verschleißniveau eines vorhergehenden
Blockes in einen ersten Block geschrieben werden, Informationen,
wie zum Beispiel der Status Kopieren/Übertragen cp/xf, und ein Verschleißniveau,
können
in einen zweiten Block geschrieben werden. Unter dieser Bedingung
ist es möglich,
eine Wiedergewinnungsoperation gemäß der in 8 gezeigten
Ablauffolge durch drei Teilschreiboperationen durchzuführen. Wenn
die Statusinformationen über
mehr Blöcke
verteilt sind oder wenn die Anordnung der Statusinformationen entsprechend
angepasst wird, ist es weiterhin möglich, die Anzahl der Teilschreiboperationen
weiter zu reduzieren.
-
9 ist
ein Fließbild
eines Vorganges der Wiedergewinnung eines Blockes durch ein Remapping-Ansteuerungsverfahren
gemäß der vorliegenden
Erfindung. In dem Schritt 901 werden eine Löscheinheit
(Quelleneinheit), die wiederzugewinnen ist, und eine Übertragungseinheit
(freie Löscheinheit) ermittelt.
In dem Schritt 902 wird eine Prüfung durchgeführt, ob
die Anzahl der Löschzyklen
für die Übertragungseinheit
einen Schwellenwert überschreitet. Der
Schwellenwert kann auf der Grundlage der vorstehenden Beschreibung
auf 3 gesetzt werden. Wenn die Anzahl von Löschzyklen nicht größer als der
Schwellenwert 3 ist, wird der Status der Quelleneinheit in dem Schritt 903 auf
,übertragen
werdend' geändert, wohingegen
der Status der Übertragungseinheit
in dem Schritt 904 auf ,kopiert werdend' geändert
wird.
-
Danach
werden gültige
Blöcke
und zugehörige
Metadaten, wie zum Beispiel LBN, ECC und eine Map für fehlerhafte
Blöcke
von der Quelleneinheit nach der Übertragungseinheit
kopiert. Danach werden in dem Schritt 906 die verbleibenden
Header-Informationen
in der Übertragungseinheit,
wie zum Beispiel PUN, die Anzahl der Löschzyklen und LUN, geschrieben,
und danach wird der Status der Übertragungseinheit
in gültig
geändert.
In dem Schritt 907 wird die Quelleneinheit gelöscht, und
eine neue Anzahl von Löschzyklen
wird in die Quelleneinheit geschrieben. Die neue Anzahl von Löschzyklen
ist der gleiche Wert wie die vorhergehende Anzahl von Löschzyklen
plus 1. In dem Schritt 909 wird die Struktur von Daten,
wie zum Beispiel Mappinginformationen, in einem Speicher geändert. In
diesem Fall wird diese Änderung
aufgrund von Aktualisierungen durchgeführt. Danach wird in dem Schritt 910 eine Prüfung durchgeführt, ob
eine Quelleneinheitsnummer gespeichert ist. Wenn die gespeicherte
Quelleneinheitsnummer existiert, kehrt der Bearbeitungsfluss zu
dem Schritt 901 zurück.
Wenn die gespeicherte Quelleneinheitsnummer jedoch nicht existiert, wird
der Vorgang beendet.
-
Wenn
inzwischen die Anzahl von Löschzyklen
der Übertragungseinheit
den Schwellenwert infolge der in dem Schritt 902 durchgeführten Prüfung überschreitet,
wird eine aktuelle Quelleneinheitsnummer in dem Schritt 911 gespeichert.
Dies ist darauf zurückzuführen, dass
sie nicht geeignet ist, um Daten der Quelleneinheit in die entsprechende Übertragungseinheit
zu übertragen.
Somit wird die aktuelle Quelleneinheits nummer für Verwendung reserviert, wenn
eine Wiedergewinnungsoperation unter Verwendung einer ausgewählten Quelleneinheit (Löscheinheit)
durchgeführt
wird, und danach wird die Quelleneinheit, die nicht vorher wiedergewonnen wurde,
unter Verwendung einer geänderten Übertragungseinheit
in dem Schritt 912 wiedergewonnen. Das heißt, eine
Löscheinheit
mit der kleinsten Anzahl von Löschzyklen
wird in dem Schritt 912 ausgewählt und danach kehrt der Bearbeitungsfluss
zu dem Schritt 903 zurück,
wodurch eine Wiedergewinnungsoperation wie oben beschrieben durchgeführt wird.
-
Wie
weiter oben beschrieben wurde, ist die vorliegende Erfindung vorteilhaft
bei der Verwaltung des Schreibstatus eines Blockes oder einer Einheit
in einem Flash-Speicher,
wie zum Beispiel einem NAND-Flash-Speicher, in dem die Anzahl der
Teilschreibzyklen begrenzt ist, durch gesetzte Statusinformationen
unter Verwendung eines Wrapcounts. Zum Beispiel wird der Status
des Blockes oder der Einheit durch einen Vorgang, wie zum Beispiel
frei (1111) → gültig (s0
(1110) → s1
(1100) → s2
(1000) → s0
(1110) → ...) → gelöscht (0000),
geändert.
Wenn dieser Vorgang somit auf einen NAND-Flash-Speicher angewendet
wird, können
Daten geschrieben werden, indem eine Teilschreiboperation drei Mal durchgeführt wird.
Wenn der jeweilige Block gelöscht wird,
wobei angenommen wird, dass andere Daten als Ist-Daten und Statusinformationen,
wie zum Beispiel die LBN-Nummer, uneingeschränkt gültig sind, können die
Daten effektiv durch die beiden Teilschreiboperationen geschrieben
werden.
-
In
dem Fall der Löscheinheit
und wenn Informationen, wie zum Beispiel eine entsprechende LUN,
und die Gültigkeit
des Status sowie das Verschleißniveau
(die Anzahl von Löschzyklen)
der vorhergehenden Einheit in einen ersten Block geschrieben werden,
und wenn Informationen zum Kopieren/Übertragen und ein Verschleißniveau
in einen zweiten Block geschrieben werden, ist es möglich, eine
Wiedergewinnungsoperation durch drei Teilprogrammoperationen durchzuführen. Wenn
die Statusinformationen über
mehrere Blöcke
verteilt werden oder wenn die Anordnung der Statusinformationen geeignet
angepasst wird, kann die Anzahl der Teilprogrammzyklen weiter reduziert
werden.
-
Die
Aufmerksamkeit des Lesers wird auf alle Unterlagen und Dokumente
gerichtet, die gleichzeitig mit dieser Beschreibung oder vor dieser
Patentschrift in Verbindung mit dieser Anmeldung eingereicht werden
oder eingereicht worden sind und die zusammen mit der hier vorliegenden
Schrift zur öffentlichen
Prüfung
vorgelegt werden.
-
Alle
in dieser Patentschrift offengelegten Merkmale (einschließlich der
anhängenden
Patentansprüche,
der Zusammenfassung und der Zeichnungen) und/oder alle Schritte
aller offengelegten Verfahren oder Vorgänge können in beliebiger Kombination
kombiniert werden, mit Ausnahme von Kombinationen, bei denen sich
wenigstens einige der genannten Merkmale und/oder Schritte gegenseitig ausschließen.
-
Alle
in der vorliegenden Patentschrift offengelegten Merkmale (einschließlich aller
anhängenden
Patentansprüche,
der Zusammenfassung und der Zeichnungen) können durch alternative Merkmale
ersetzt werden, die jeweils dem gleichen, einem gleichwertigen oder
einem ähnlichen
Zweck dienen, insofern keine ausdrückliche anderslautende Aussage
getroffen wird. In Ermangelung ausdrücklicher anderslautender Aussagen
ist jedes offengelegte Merkmal somit lediglich ein Beispiel einer
generischen Reihe von gleichwertigen oder ähnlichen Merkmalen.
-
Die
Erfindung ist nicht auf die Details des (der) vorstehenden Ausführungsbeispiele(s)
beschränkt.
Die Erfindung erstreckt sich auf alle Ausführungsbeispiele, die innerhalb
des Erfindungsgedankens der Ansprüche liegen.