DE60121697T2 - Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur - Google Patents

Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur Download PDF

Info

Publication number
DE60121697T2
DE60121697T2 DE60121697T DE60121697T DE60121697T2 DE 60121697 T2 DE60121697 T2 DE 60121697T2 DE 60121697 T DE60121697 T DE 60121697T DE 60121697 T DE60121697 T DE 60121697T DE 60121697 T2 DE60121697 T2 DE 60121697T2
Authority
DE
Germany
Prior art keywords
block
unit
status
valid
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60121697T
Other languages
English (en)
Other versions
DE60121697D1 (de
Inventor
203-1105 Chowon Maeul Daerim Apt. Bum-soo Anyang-city Kim
Gui-young Nowon-gu Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Application granted granted Critical
Publication of DE60121697D1 publication Critical patent/DE60121697D1/de
Publication of DE60121697T2 publication Critical patent/DE60121697T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • 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.

Claims (12)

  1. Verfahren zum Ansteuern von Remapping logische Adresse zu physikalische Adresse beim Schreiben von Daten in einen Flash-Speicher, 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 anzeigen, ob der Status des Blockes frei, gültig oder gelöscht ist, das Verfahren umfasst: Suchen nach einer vorgegebenen physikalischen Einheit auf der Grundlage der Mappinginformation zu einem vorgegebenen Block; wenn der vorgegebene Block in der gefundenen physikalischen Einheit vorhanden ist, Prüfen des Status des vorgegebenen Blocks (Schritt 601); und wenn der vorgegebene Block in der gefundenen physikalischen Einheit in einem gültigen Status vorliegt (Schritt 603), dann: Durchsuchen der gefundenen physikalischen Einheit nach einem anderen Block, dessen Status frei ist (Schritt 605); Ändern des Status des anderen Blocks in einen gültigen Status (Schritt 607, 609); Schreiben neuer Daten und zusätzlicher Informationen, einschließlich einer logischen Blocknummer, in den anderen Block (Schritt 611); und Ändern des Status des vorgegebenen Blocks in einen gelöschten Status (Schritt 613); dadurch gekennzeichnet, dass die Statusinformation des Blocks, dessen Status gültig ist, weiter in eine Vielzahl von gültigen Zuständen unterteilt wird; und dass Ändern des Status des anderen Blocks weiterhin Setzen seines gültigen Zustands unter Verwendung von Wrapcount in Abhängigkeit von dem gültigen Zustand des vorgegebenen Blocks umfasst.
  2. Verfahren nach Anspruch 1, wobei der gültige Status in drei gültige Zustände unterteilt wird.
  3. Verfahren nach Anspruch 2, wobei Ändern des Status des anderen Blocks umfasst: Setzen des Status des anderen Blocks auf den zweiten gültigen Zustand, wenn der vorgegebene Block in dem ersten gültigen Zustand vorliegt; Setzen des Status des anderen Blocks auf den dritten gültigen Zustand, wenn der vorgegebene Block in dem zweiten gültigen Zustand vorliegt; und Setzen des Status des anderen Blocks auf den ersten gültigen Zustand, wenn der vorgegebene Block in dem dritten gültigen Zustand vorliegt.
  4. Verfahren nach den Ansprüchen 1, 2 oder 3, weiterhin umfassend, wenn der vorgegebene Block in einem gelöschten Zustand vorliegt, Suchen nach einem anderen Block, dessen Zustand frei ist (Schritt 605).
  5. Verfahren nach Anspruch 4, weiterhin umfassend: Durchführen einer Wiedergewinnungsoperation an der physikalischen Einheit, wobei die physikalische Einheit die Quelleneinheit ist, wenn der andere Block nicht vorliegt (Schritt 617); Suchen nach einem anderen Block in einer Übertragungseinheit, dessen Status frei ist (Schritt 619); Zurückkehren zum Ändern des Status des anderen Blocks, wenn der andere Block gefunden wird (Schritt 607, 609); und wenn der andere Block nicht gefunden wird, Behandlung dieser Situation als Fehler (Schritt 621).
  6. Verfahren nach Anspruch 5, wobei Durchführen der Wiedergewinnungsoperation umfasst: Setzen des Status der Quelleneinheit und der Übertragungseinheit auf Übertragen (Schritt 903) beziehungsweise auf Kopieren (Schritt 906): Kopieren gültiger Blöcke und zugehöriger Metainformationen und Anfangsinformationen von der Quelleneinheit zu der Übertragungseinheit (Schritt 905); Setzen der Übertragungseinheit, deren Status auf kopiert gesetzt worden ist, auf einen gültigen Zustand und gleichzeitig Erhöhen der Löschzyklen (Verschleißniveau) der Quelleneinheit (Schritt 906); Löschen der Quelleneinheit und gleichzeitig Schreiben der Anzahl von Löschzyklen in die Quelleneinheit (Schritt 907); Aktualisieren der Struktur der Eigendaten, einschließlich der Mappinginformation zu dem Flash-Speicher nach dem Löschen der Quelleneinheit (Schritt 909) und Schreiben einer neuen Anzahl von Löschzyklen in die Quelleneinheit (Schritt 908), wobei die neue Anzahl von Löschzyklen der Wert gleich der vorherigen Anzahl von Löschzyklen plus 1 ist; Prüfen, ob eine wiederzugewinnende Quelleneinheit weiterhin vorliegt (Schritt 910); und Zurückkehren zur Festlegung einer Quelleneinheit, wenn die wiederzugewinnende Quelleneinheit weiterhin vorliegt.
  7. Verfahren nach Anspruch 6, wobei Durchführen einer Wiedergewinnungsoperation weiterhin umfasst: Prüfen, ob die Anzahl der Löschzyklen für die Übertragungseinheit einen Schwellenwert überschreitet (Schritt 902); Zurückkehren zum Setzen des Status der Quelleneinheit und der Übertragungseinheit auf Übertragung (Schritt 903) beziehungsweise auf Kopieren (Schritt 904), wenn die Anzahl von Löschzyklen den Schwellenwert nicht überschreitet; Speichern einer Quelleneinheits-Nummer der Quelleneinheit (Schritt 911), wenn die Anzahl der Löschzyklen den Schwellenwert übersteigt; und Auswahl einer geänderten Übertragungseinheit mit der kleinsten Anzahl von Löschzyklen (Schritt 912) und danach Rückkehr zum Setzen der Zustände der Quelleneinheit (Schritt 903) und der Übertragungseinheit (Schritt 904).
  8. Verfahren nach Anspruch 6, wobei Durchführen einer Wiedergewinnungsoperation weiterhin umfast: Prüfen, ob zwei Einheiten mit der gleichen logischen Einheits-Nummer in dem Fall eines Fehlers vorliegen; und wenn zwei Einheiten mit der gleichen logischen Einheits-Nummer vorliegen, von denen eine übertragen wird und von denen die andere kopiert wird, Löschen der Einheit, die kopiert wird, und Schreiben der Anzahl von Löschzyklen auf die Einheit, die übertragen wird.
  9. Verfahren nach Anspruch 8, wobei das Schreiben der Anzahl von Löschzyklen auf die Einheit, die übertragen wird, durchgeführt wird, wenn die Anzahl von Löschzyklen nicht in die Einheit geschrieben wird, die übertragen wird.
  10. Verfahren nach Anspruch 1, weiterhin umfassend: Prüfen, ob zwei gültige Blöcke mit der gleichen logischen Blocknummer in dem Fall eines Fehlers vorliegen; Beenden des Prozesses des Schreibens des Status eines Blocks, wenn nur ein gültiger Block vorliegt; Prüfen des Status der beiden Blöcke und Unterscheiden zwischen dem vorgegebenen Block (dem vorherigen Block) und einem nächsten Block (neuen Block), wenn die beiden gültigen Blöcke vorliegen; und Löschen entweder des vorgegebenen Blocks oder des nächsten Blocks.
  11. Flash-Speicher, der in eine Vielzahl von Einheiten unterteilt ist, wobei jede Einheit einen Block oder mehrere Blöcke aufweist, wobei jede Einheit Statusinformationen für jeden Block enthält, die andeuten, ob der Status des Blocks 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 Blocks zu prüfen; und wenn der vorgegebene Block in der gefundenen physikalischen Einheit in einem gültigen Zustand vorliegt, dann: die gefundene physikalische Einheit nach einem anderen Block zu durchsuchen, dessen Status frei ist; den Status des anderen Blocks in einen gültigen Zustand zu ändern; neue Daten und zusätzliche Informationen, einschließlich einer logischen Blocknummer, in den anderen Block zu schreiben; und den Status des vorgegebenen Blocks in einen gelöschten Zustand zu ändern; dadurch gekennzeichnet, dass die Statusinformation von Blöcken, deren Status gültig ist, weiter in eine Vielzahl von gültigen Zuständen unterteilt wird und der Status des anderen Blocks geändert wird, indem sein gültiger Zustand unter Verwendung eines Wrapcount in Abhängigkeit von dem gültigen Zustand des vorgegebenen Blocks gesetzt wird.
  12. Vorrichtung aus Anspruch 11, wobei ein erster Block einer jeden Einheit zugeordnet wird, um Informationen, einschließlich einer logischen Einheits-Nummer, der Gültigkeit eines Status und der Anzahl von Löschzyklen für eine vorherige Einheit zu schreiben, wobei ein zweiter Block der Einheit zugeordnet wird, um Informationen, einschließlich des Status Kopieren/Übertragen und der Anzahl von Löschzyklen (Verschleißniveau), zu schreiben, und wobei die Informationen zur Angabe des Status eines Blocks auf der Grundlage eines Wrapcounts ermittelt und in einen vorgegebenen Bereich eines freien Feldes in einem Block geschrieben werden, in den Daten der Einheit geschrieben werden.
DE60121697T 2000-10-11 2001-04-11 Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur Expired - Lifetime DE60121697T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR2000059731 2000-10-11
KR1020000059731A KR100644602B1 (ko) 2000-10-11 2000-10-11 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조

Publications (2)

Publication Number Publication Date
DE60121697D1 DE60121697D1 (de) 2006-09-07
DE60121697T2 true DE60121697T2 (de) 2007-08-02

Family

ID=36848389

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60121697T Expired - Lifetime DE60121697T2 (de) 2000-10-11 2001-04-11 Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur

Country Status (6)

Country Link
US (1) US6381176B1 (de)
EP (1) EP1197868B1 (de)
JP (1) JP3662510B2 (de)
KR (1) KR100644602B1 (de)
CN (1) CN1300803C (de)
DE (1) DE60121697T2 (de)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702831B2 (en) * 2000-01-06 2010-04-20 Super Talent Electronics, Inc. Flash memory controller for electronic data flash card
US7610438B2 (en) * 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US20060161725A1 (en) * 2005-01-20 2006-07-20 Lee Charles C Multiple function flash memory system
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US7039788B1 (en) 2002-10-28 2006-05-02 Sandisk Corporation Method and apparatus for splitting a logical block
US7171536B2 (en) * 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7103732B1 (en) 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7234036B1 (en) * 2002-10-28 2007-06-19 Sandisk Corporation Method and apparatus for resolving physical blocks associated with a common logical block
WO2004040586A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Automated wear leveling in non-volatile storage systems
DE10252059B3 (de) * 2002-11-08 2004-04-15 Infineon Technologies Ag Verfahren zum Betreiben einer Speicheranordnung
KR100526178B1 (ko) 2003-03-31 2005-11-03 삼성전자주식회사 플래시 메모리 액세스 장치 및 방법
KR100526186B1 (ko) * 2003-04-04 2005-11-03 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
US7139863B1 (en) 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7188228B1 (en) 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US7032087B1 (en) 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
KR100608602B1 (ko) * 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
US7680977B2 (en) * 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
US20080147964A1 (en) * 2004-02-26 2008-06-19 Chow David Q Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function
JP2006003966A (ja) * 2004-06-15 2006-01-05 Oki Electric Ind Co Ltd フラッシュメモリの書込方法
KR100568115B1 (ko) 2004-06-30 2006-04-05 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템
US7130209B2 (en) 2004-10-15 2006-10-31 Atmel Corporation Flexible OTP sector protection architecture for flash memories
KR100631765B1 (ko) * 2004-10-18 2006-10-09 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
US7958430B1 (en) * 2005-06-20 2011-06-07 Cypress Semiconductor Corporation Flash memory device and method
JP4933861B2 (ja) * 2005-09-22 2012-05-16 株式会社日立製作所 ストレージ制御装置、データ管理システムおよびデータ管理方法
US7568075B2 (en) * 2005-09-22 2009-07-28 Hitachi, Ltd. Apparatus, system and method for making endurance of storage media
EP1791055A1 (de) * 2005-11-23 2007-05-30 Incard SA Chipkartendateisystem
US8194880B2 (en) * 2006-01-30 2012-06-05 Audience, Inc. System and method for utilizing omni-directional microphones for speech enhancement
KR100781517B1 (ko) * 2006-02-16 2007-12-03 삼성전자주식회사 비휘발성 메모리의 맵핑 정보 관리 장치 및 방법
US20080077590A1 (en) * 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
KR100849221B1 (ko) 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR100771519B1 (ko) * 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
KR100789406B1 (ko) 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
TWI326028B (en) 2006-11-20 2010-06-11 Silicon Motion Inc Method for flash memory data management
KR100816761B1 (ko) * 2006-12-04 2008-03-25 삼성전자주식회사 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
CN101364438B (zh) * 2007-08-08 2011-04-06 奇岩电子股份有限公司 提高与非门阵列闪存的存取装置与方法
US8151034B2 (en) * 2007-09-12 2012-04-03 Sandisk Technologies Inc. Write abort and erase abort handling
KR101413736B1 (ko) 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
KR101464338B1 (ko) 2007-10-25 2014-11-25 삼성전자주식회사 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템
JP4489127B2 (ja) * 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
US20090313416A1 (en) * 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
KR101497074B1 (ko) * 2008-06-17 2015-03-05 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US8245244B2 (en) * 2008-08-26 2012-08-14 Intel Corporation Device, system, and method of executing a call to a routine within a transaction
TWI364661B (en) * 2008-09-25 2012-05-21 Silicon Motion Inc Access methods for a flash memory and memory devices
US8275933B2 (en) 2008-11-10 2012-09-25 Fusion-10, Inc Apparatus, system, and method for managing physical regions in a solid-state storage device
US8751860B2 (en) 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
JP5269213B2 (ja) * 2010-02-02 2013-08-21 株式会社東芝 ストレージ機能を持つ通信装置
TWI447735B (zh) * 2010-02-05 2014-08-01 Phison Electronics Corp 記憶體管理與寫入方法及其可複寫式非揮發性記憶體控制器與儲存系統
CN102193870B (zh) * 2010-03-09 2014-06-25 群联电子股份有限公司 存储器管理与写入方法、存储器控制器与存储器存储系统
KR101666987B1 (ko) * 2010-04-20 2016-10-17 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
JP2012123499A (ja) 2010-12-07 2012-06-28 Toshiba Corp メモリシステム
GB2506041A (en) * 2011-06-30 2014-03-19 Hewlett Packard Development Co A memory module that includes a memory module copy engine for copying data from an active memory die to a spare memory die
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
CN102789403B (zh) * 2012-07-11 2015-08-12 忆正科技(武汉)有限公司 一种闪存控制器及其控制方法
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
KR102067029B1 (ko) 2012-12-13 2020-01-16 삼성전자주식회사 반도체 메모리 장치 및 메모리 시스템
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
KR102015053B1 (ko) * 2013-02-20 2019-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 처리 방법
KR102101304B1 (ko) 2013-03-15 2020-04-16 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9747157B2 (en) 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
TWI548991B (zh) * 2014-02-14 2016-09-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US9405618B2 (en) * 2014-05-28 2016-08-02 Infineon Technologies Ag Marker programming in non-volatile memories
KR102491624B1 (ko) * 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
FR3051574A1 (fr) * 2016-05-20 2017-11-24 Proton World Int Nv Gestion du stockage dans une memoire flash
TWI661299B (zh) * 2018-04-30 2019-06-01 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
CN113568579B (zh) * 2021-07-28 2022-05-03 深圳市高川自动化技术有限公司 一种存储器、数据存储方法以及数据读取方法
US20230082636A1 (en) * 2021-09-16 2023-03-16 Micron Technology, Inc. Parity data modification for partial stripe data update
TWI804236B (zh) * 2022-03-16 2023-06-01 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6034891A (en) * 1997-12-01 2000-03-07 Micron Technology, Inc. Multi-state flash memory defect management

Also Published As

Publication number Publication date
EP1197868B1 (de) 2006-07-26
US6381176B1 (en) 2002-04-30
CN1348191A (zh) 2002-05-08
CN1300803C (zh) 2007-02-14
US20020041517A1 (en) 2002-04-11
KR100644602B1 (ko) 2006-11-10
EP1197868A3 (de) 2004-01-14
EP1197868A2 (de) 2002-04-17
JP3662510B2 (ja) 2005-06-22
DE60121697D1 (de) 2006-09-07
JP2002123421A (ja) 2002-04-26
KR20020028624A (ko) 2002-04-17

Similar Documents

Publication Publication Date Title
DE60121697T2 (de) Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur
DE60032531T2 (de) Aufzeichnungsverfahren, Verwaltungsverfahren und Aufzeichnungsgerät
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE69034227T2 (de) EEprom-System mit Blocklöschung
DE3784190T2 (de) Eintragung eines datenbasisindex in das journal zur verbesserten rueckstellung.
DE19740525C1 (de) Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug
DE19615948C2 (de) Flash-Festkörper-Plattenspeicher-Karte
DE69333906T2 (de) Verfahren und System für die Dateienverwaltung mit einem schnell löschbaren, programmierbaren ROM
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE60030872T2 (de) Verfahren und anordnung um atomische aktualisierungen durchzuführen durch verwendung eines logischen flaschspeichergerätes
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren
DE102012208141A1 (de) Ausgleich nachlassender Funktionsfähigkeit
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE102009048179A1 (de) Prozess und Verfahren für eine Löschstrategie in Festkörperplatten
DE69921426T2 (de) Aufnahme- und Wiedergabeapparat
DE60003676T2 (de) Rückforderung von speicher aus gelöschten applikationen
EP2215636B1 (de) VERFAHREN ZUR GLEICHMÄßIGEN NUTZUNG MEHRERER FLASHSPEICHERCHIPS
DE102004014227A1 (de) Steuervorrichtung für einen nicht flüchtigen Speicher
EP1514171B1 (de) Verfahren zur wiederherstellung von verwaltungsdatensätzen eines blockweise löschbaren speichers
EP1676203B1 (de) Verfahren zum schreiben von speichersektoren in einem blockweise löschbaren speicher
DE102017104698A1 (de) Elektroniksteuervorrichtung und Informationsspeicherverfahren dafür
DE60210118T2 (de) Sicherheitseinrichtung für eine massenspeicherung
DE10059006A1 (de) Verfahren und System zur sicheren Verwaltung von Dateien in nichtflüchtigen Speichern
DE2801989A1 (de) Verfahren zum steuern der abspeicherung eines textes in einem textverarbeitungssystem
DE10227256C1 (de) Verfahren zum Adressieren von blockweise löschbaren Speichern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition