DE112006001636T5 - Technik zum Beschreiben eines nicht-flüchtigen Speichers - Google Patents

Technik zum Beschreiben eines nicht-flüchtigen Speichers Download PDF

Info

Publication number
DE112006001636T5
DE112006001636T5 DE112006001636T DE112006001636T DE112006001636T5 DE 112006001636 T5 DE112006001636 T5 DE 112006001636T5 DE 112006001636 T DE112006001636 T DE 112006001636T DE 112006001636 T DE112006001636 T DE 112006001636T DE 112006001636 T5 DE112006001636 T5 DE 112006001636T5
Authority
DE
Germany
Prior art keywords
physical
logical
physical storage
logical address
locations
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.)
Ceased
Application number
DE112006001636T
Other languages
English (en)
Inventor
Sanjeev Hillsboro Trika
Robert Hillsboro Fabert
Rick Portland Coulson
Jeanna Matthews
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112006001636T5 publication Critical patent/DE112006001636T5/de
Ceased legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Memory System (AREA)

Abstract

Ein Verfahren mit:
Ausführen einer Mehrzahl von Schreiboperationen zum Speichern von Daten an unterschiedlichen physikalischen Speicherorten, wobei jeder der physikalischen Speicherorte einer logischen Adresse zugehörig ist, die den physikalischen Speicherorten gemeinsam ist; und
Speichern einer Sequenzinformation an den physikalischen Speicherorten zum Angeben, welche der Schreiboperationen zuletzt stattgefunden hat.

Description

  • HINTERGRUND
  • Die Erfindung betrifft allgemein eine Technik zum Beschreiben eines nicht-flüchtigen Speichers.
  • Nicht-flüchtige Halbleiterspeicher, etwa Flash-Speicher, sind für Anwendungen attraktiv, bei denen Daten bei einem normalen Herunterfahren, bei einem Bringen in den Schlafzustand oder bei einem Spannungsversagen gesichert werden müssen. Ein Speicher, der aus Flash-Speichereinheiten gebildet ist, kann zum Speichern von Daten in einem Diskcache oder einem Festspeicher genutzt werden. Obwohl ein typischer Flash-Speicher eine signifikant schnellere Zugriffszeit als eine magnetische Speichereinheit hat, können die Zellen des Flash-Speichers, anders als die magnetischen Speichereinheiten, typischerweise nicht erneut beschrieben werden, ohne zunächst gelöscht zu werden.
  • Als ein spezifisches Beispiel werden die Zellen zunächst gelöscht, bevor ein Datenbit in einer konventionellen Flash-Speicherzelle gespeichert wird. In dem gelöschten Zustand ergibt die Zelle einen bestimmten logischen Zustand an, beispielsweise den logischen Zustand „Eins". Bei einem nachfolgenden Schreibvorgang in die Flash-Speicherzelle bleibt der Status der Zelle unverändert, wenn eine logische Eins in der Zelle zu speichern ist. Wenn dagegen ein logisches Null in der Zelle zu speichern ist, wird die Zelle programmiert, um die Zelle in den logischen Zustand Null zu ändern. Ein typisches Schreiben in eine Flash-Speicherzelle beinhaltet daher typischerweise zwei Speicheroperationen: eine erste Operation zum Löschen der Speicherzelle und eine zweite Operation zum Programmieren des logischen Zustands der Speicherzelle. Diese mehreren Operationen tragen damit zur Gesamtzeit zum Schreiben des Flash-Speichers bei.
  • Es besteht daher ein anhaltender Bedarf für bessere Wege zum Reduzieren der Gesamtzeit zum Schreiben in einen nicht-flüchtigen Halbleiterspeicher, etwa einen Flash-Speicher.
  • KURZE ERLÄUTERUNG DER ZEICHNUNGEN
  • 1 ist eine Darstellung eines dynamischen Adressschemas, das entsprechend einem Ausführungsbeispiel der Erfindung bei einem nicht-flüchtigen Halbleiterspeicher belegt wird.
  • 2 ist ein Blockdiagramm eines Speichersystems nach einem Ausführungsbeispiel der Erfindung;
  • 3 und 8 sind Flussdiagramme, die Techniken wiedergeben, die in Verbindung mit einem Schreibvorgang in einen nicht-flüchtigen Halbleiterspeicher nach den verschiedenen Ausführungsbeispielen der Erfindung belegt werden.
  • 4 ist eine Darstellung von Daten, die an einem Speicherort des nicht-flüchtigen Speichers nach einem Ausführungsbeispiel der Erfindung gespeichert werden.
  • 5 ist eine Darstellung einer logisch-zu-physikalisch Übersetzungstabelle entsprechend einem Ausführungsbeispiel der Erfindung.
  • 6 ist eine Darstellung einer Freistellen-Pooltabelle nach einem Ausführungsbeispiel der Erfindung.
  • 7 ist eine Darstellung von flüchtigen Meta-Daten entsprechend einem Ausführungsbeispiel der Erfindung.
  • 9 ist eine Darstellung einer Zwischentabelle, die entsprechend einem Ausführungsbeispiel der Erfindung zum Rekonstruieren der logisch-zu-physikalisch Übersetzungstabelle nach einem Spannungsausfall belegt wird.
  • 10 ist ein Flussdiagramm, das eine Technik zum Rekonstruieren der logisch-zu-physikalisch Übersetzungstabelle nach einem Spannungsausfall entsprechend einem Ausführungsbeispiel der Erfindung zeigt.
  • 11 ist ein Blockdiagramm eines Computersystems nach einem Ausführungsbeispiel der Erfindung.
  • EINGEHENDE BESCHREIBUNG
  • In Übereinstimmung mit Ausführungsbeispielen der hier beschriebenen Erfindung wird ein dynamisches Adressieren in Verbindung mit einem nicht-flüchtigen Halbleiterspeicher (hier als „nicht-flüchtiger Speicher" bezeichnet) zum Zweck der Minimierung der Schreiblatenz des Speichers belegt. Insbesondere ist in Übereinstimmung mit Ausführungsbeispielen der Erfindung, die beschrieben werden, der nicht-flüchtige Speicher vom Standpunkt einer Software her unter Verwendung von logischen Adressen adressiert. Unter dem Gesichtspunkt von physikalischen Lese- und Schreiboperationen, die mit dem Speicher ausgeführt werden, übersetzt oder mappiert das dynamische Adressieren die logischen Adressen in physikalische Adressen des Speichers. Das dynamische Adressieren wechselt das Mappieren ständig zwischen den logischen und den physikalischen Adressen um sicherzustellen, dass jede logische Schreiboperation ein Speichern der Daten an einem zuvor gelöschten Ort (das heißt einer unterschiedlichen physikalischen Adresse) des nicht-flüchtigen Speichers verursacht. Mit dem dynamischen Adressieren erzeugt jeder logische Schreibvorgang eine einzige Operation. Dies ist mit einem dynamischen Adressieren zu vergleichen, das zwei Zugriffe auf den nicht-flüchtigen Speicher verursacht (einen zum Löschen/Initalisieren des alten physikalischen Orts und die andere zum Schreiben der Daten an dem eben gelöschten physikalischen Ort).
  • Insbesondere gruppiert, wie in 1 gezeigt, ein dynamisches Adressierschema 10 in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung die physikalischen Adressen eines nicht-flüchtigen Speichers in Freistellenpools 20, geltende Pools 30 und belegte Pools 40. Der Freistellenpool 20 repräsentiert die nicht-zugewiesenen physikalischen Adressen, deren zugehörige Speicherzellen gelöscht sind, die für eine Programmierung vorbereitet sind und daher bereit sind, logischen Adressen zugewiesen zu werden. Der geltende Pool 30 repräsentiert physikalische Adressen, die den Speicherzellen zugehörig sind, die geltende Daten speichern und den logischen Adressen zugeordnet sind. Der belegte Pool 40 repräsentiert die falschen Adressen, die keine geltenden Daten mehr speichern, nicht mehr logischen Adressen zugeordnet sind und zu löschen sind. Die physikalischen Adressen der belegten Pools 40 werden in Freistellenpools 20 zurück gruppiert, wenn Blocklöschoperationen belegt werden, um aufeinanderfolgende Blöcke zu löschen (beispielsweise Seiten) physikalischer Adressen. Es ist zu beachten, dass das Blocklöschen effizienter ist, als das Löschen von physikalischen Adressen einer nach der Anderen in Antwort auf jeden logischen Schreibvorgang, und weiter kann es sein, dass der nicht-flüchtige Speicher (beispielsweise ein NAND Flash-Speicher) nur ein Blocklöschen zulässt.
  • Als ein spezifisches Beispiel kann eine beispielhafte physikalische Adresse 14 (zugehörig zu einem Satz von Speicherzellen oder Speicherorten) des nicht-flüchtigen Speichers zwischen den Freistellenpools 20, den geltenden Pools 30 und den belegten Pools 40 in der folgenden Weise wechseln. Zunächst gehört die physikalische Adresse 14 zu den Freistellenpool 20 als ein Startup des Systems, das den nicht-flüchtigen Halbleiterspeicher beinhaltet oder nachdem er gelöscht worden ist. Mit anderen Worten ist die physikalische Adresse 14 dadurch, dass sie in dem Freistellenpool 20 ist, zur Zuordnung zu einer bestimmten logischen Adresse verfügbar. Wenn sodann Daten in eine bestimmte logische Adresse eingeschrieben werden, wird die physikalische Adresse der logischen Adresse zugeordnet, sodass die Daten an der physikalischen Adresse 14 gespeichert werden; die physikalische Adresse wird dann ein Teil des geltenden Pools 30. Ein anderes Schreiben in die physikalische Adresse 14 kann jedoch nicht erfolgen, ohne dass die Speicherzellen, die der physikalischen Adresse 14 zugehörig sind, gelöscht werden. Wenn das nächste Schreiben in dieselbe logische Adresse erfolgt, wird eine andere physikalische Adresse der logischen Adresse zugeordnet und der Speicherinhalt, der der physikalischen Adresse zugehörig ist, wird ungeltend oder „belegt", da die physikalische Adresse 14 ein Teil des belegten Pools 40 wird.
  • Die Speicherzellen, die der physikalischen Adresse 14 zugehörig ist, wird nicht notwendigerweise nach dessen „Belegung" gelöscht, diese Speicherzellen werden vielmehr in einem Blocklöschvorgang gelöscht. Zu diesem Zeitpunkt werden die physikalischen Adressen 14 wieder Teil des freien Pools 20 und können einer anderen logischen Adresse zugeordnet werden.
  • In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung belegt das Speichersystem 50 das oben beschriebene dynamische Adressierschema 10 und kann in Verbindung mit einem nicht-flüchtigen Halbleitermassenspeicher 54 belegt werden (hier als „nicht-flüchtiger Speicher" 54 bezeichnet), etwa einem NAND Flash-Speicher. Der nicht-flüchtige Speicher 54 beinhaltet ein Feld von physikalischen Speicherzellen 55, die unter Verwendung von physikalischen Adressen adressiert sind. In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung führt ein Kontroller 52 des Speichersystems 50 ein dynamisches Adressieren durch Wechseln zwischen logischen und physikalischen Adressräumen aus. Insbesondere ist in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung der Kontroller 52 mit einem flüchtigen Speicher 60, etwa einem dynamischen Speicher mit wahlfreiem Zugriff (DRAM) gekoppelt. Der flüchtige Speicher 60 speichert eine logisch-zu-physikalisch Übersetzungstabelle (hier als „L2P Tabelle 62" bezeichnet), die der Kontroller 52 für Zecke des Mappierens der logischen Adressen zu den physikalischen Adressen des Speichers 54 belegt. Dieses Mappieren ändert sich kontinuierlich, und der Kontroller 52 frischt die L2P Tabelle 62 kontinuierlich auf, um das Neumappieren jeder logischen Adresse zu unterschiedlichen physikalischen Adressen nach zu verfolgen.
  • In 2 ist angegeben, dass in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung der flüchtige Speicher 60 eine Freistellenpooltabelle 66 speichert, eine Tabelle, die angibt, welche der physikalischen Adressen des Speichers 54 in dem Freistellenpool 20 eingeschlossen sind (siehe 1). Wenn der Kontroller 52 einen Schreibvorgang in eine logische Adresse ausführt, wählt der Kontroller 52 im allgemeinen eine verfügbare physikalische Adresse aus der Freistellenpooltabelle 66 aus, frischt die L2P Tabelle 62 auf, um die logische Adresse zu der ausgewählten physikalischen Adresse neu zu mappieren und führt den entsprechenden Schreibvorgang in den nicht-flüchtigen Speicher 54 an der ausgewählten physikalischen Adresse aus.
  • Unter den anderen Daten, die in dem flüchtigen Speicher 60 gespeichert werden können, kann in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung der flüchtige Speicher 60 Meta-Daten 68, die (neben anderer möglicher Information) eine Information bezüglich des Verbrauchszustands des Speicherinhalts, der an jeder physikalischen Adresse gespeichert ist, beinhaltet, speichern. In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung geben die Meta-Daten 68 für jeden adressierbaren Ort des nicht-flüchtigen Speichers 54 an, ob der Dateninhalt, der an dem Ort gespeichert ist, belegt ist, geltend ist oder frei ist. Zusätzlich zu der Freistellenpooladresse 66, der L2P Tabelle 62 und der Meta-Datei 68 kann der flüchtige Speicher 60 Programmbefehle 70 speichern, die bei ihrer Ausführung den Kontroller dazu veranlassen, einen oder mehreren des physikalischen Schreibens der Adressübersetzung und der Rettungstechniken bei Spannungsausfall ausführen, die hier offenbart sind.
  • Der Kontroller 52 verwendet, um zusammenzufassen, den flüchtigen Speicher 60 zum Speichern von Information, die das Mappieren von logisch-zu-physikalisch-Adressen angibt und die Zustände der adressierbaren Speicherorte, des nicht-flüchtigen Speichers 54 angibt. Es kann vorteilhaft sein, derartige Information in dem flüchtigen Speicher 60 zu speichern, sich mit einem nicht-flüchtigen Speicher (etwa dem Speicher 54) aufgrund der relativ schnellen Zugriffszeit zu dem flüchtigen Speicher 60 gegeben, die hohe Anzahl von Zugriffen, die zum Erhalten dieser Information belegt werden. Die flüchtige Information kann bei einem Schlüsselereignis, beispielsweise einem Herunterfahren, einem Ruhezustand, einem Sperren, dem Erkennen einer geringen Spannung usw. in dem nicht-flüchtigen Speicher gespeichert werden und daraus bei einem nachfolgenden Neustart/Fortsetzen ausgelesen werden.
  • Im Allgemeinen ist es jedoch ein mögliches Problem bei dieser Technik, dass die Information, die in dem flüchtigen Speicher 60 gespeichert ist, in dem Fall eines Spannungsabfalls an dem Speichersystem 50 verloren ist. Obwohl ein periodisches Back-up Inhalte der flüchtigen Speicher 60 sichern kann, können diese Back-ups unzureichend sein, um verlorene Information zurück zu gewinnen. Bei der Wiederherstellung der Spannung würde der Kontroller 52 ohne die Merkmale der Erfindung, die nachfolgend offenbart werden, der Kontroller 52 in Unkenntnis des logisch-zu-physikalisch Mappierens sein, und der Verbrauchszustände der verschiedenen adressierbaren Speicherorte des flüchtigen Speichers 54 und wäre daher nicht dazu in der Lage, die Information zurück zu gewinnen, die in dem flüchtigen Speicher 60 gespeichert war.
  • Eine andere mögliche Technik, die es dem Kontroller 52 erlaubt, die Information zu rekonstruieren oder zurück zu gewinnen, die in dem flüchtigen Speicher 60 vor dem Spannungsausfall gespeichert war, ist eine Technik, in der der Kontroller 52 alle erforderliche Satzinformation in einem nicht-flüchtigen Speicher, etwa dem nicht-flüchtigen Speicher 54, beinhaltet. Als spezifisches Beispiel kann der Kontroller 52, um dieses auszuführen, zwei Schreiboperationen in dem nicht-flüchtigen Speicher 54 für jeden logischen Schreibvorgang ausführen. Insbesondere kann bei dieser Technik der nicht-flüchtige Speicher 54 zum Speichern von gegenwärtiger Meta-Daten-Zustandsinformation belegt werden um anzugeben, ob eine bestimmte physikalische Zelle gegenwärtig geltend oder belegt ist. Bei jedem logischen Schreibvorgang kann der Kontroller 52 daher die neu zugewiesenen physikalische Adresse beschreiben, und die vorangehend zugewiesene physikalische Adresse beschreiben, um die physikalische Adresse als belegt zu markieren. Die mögliche Schwierigkeit dieser Anordnung ist, dass zwei Schreibvorgänge, in den nicht-flüchtigen Speicher für jeden einzelnen logischen Schreibvorgang verwendet werden, wodurch die Schreiblatenz des Speichers 54 erhöht wird.
  • In Übereinstimmung mit Ausführungsbeispielen der hier beschriebenen Erfindung führt der Controller einen einzigen (statt beispielsweise zwei) Schreibvorgänge in den nicht-flüchtigen Speicher 54 für jeden logischen Schreibvorgang aus. Um ein Rückgewinnen der Information zu erlauben (etwa der Information, die in der L2P Tabelle 62 und der Freistellenpooltabelle 66 gespeichert ist), die in dem flüchtigen Speicher 60 nach einem Spannungsausfall gespeichert ist, speichert der Kontroller 52 bei jedem physikalischen Schreibvorgang eine Abfolgeinformation, etwa einen Zeitstempel oder eine Sequenzzahl, in den nicht-flüchtigen Speicher 54. Insbesondere erzeugt der Kontroller 52 in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung eine globale Sequenzzahl für jeden Schreibvorgang in den nicht-flüchtigen Speicher 54. Der Kontroller 52 erhöht die globale Sequenzzahl für jeden Schreibvorgang, so dass die Sequenzzahl einen zunehmenden Wert hat für, zum Beispiel, die Schreibvorgänge. Wie unten beschrieben, werden die Sequenzzahlen von dem Kontroller 52 nach einem Spannungsausfall belegt zum Rekonstruieren der Zeitlinie der vorangehenden Schreibvorgänge (die vor dem Spannungsausfall aufgetreten sind) zum Bestimmen, welche adressierbaren Orte des nicht-flüchtigen Speichers 54 geltende Daten speichern (und damit auch bestimmen, welche Orte belegte Daten speichern).
  • Es wird jetzt auf 3 Bezug genommen. In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung führt der Kontroller 52 allgemein eine Technik 74 in Verbindung mit logischen Schreibvorgängen aus. Entsprechend der Technik 74 ordnet der Kontroller 52 (Block 76) unterschiedlichen physikalischen Speicherorten eine logische Adresse für unterschiedliche Schreibvorgänge zu. Der erste Schreibvorgang in die erste logische Adresse beschreibt der Kontroller 52 eine erste physikalische Adresse des nicht-flüchtigen Speichers 54, und bei dem nächsten Schreibvorgang in diese logische Adresse beschreibt der Kontroller 52 eine zweite physikalische Adresse des nicht-flüchtigen Speichers 54. Entsprechend der Technik 74 speichert der Kontroller 52 (Block 78) Sequenzzahlen und logische Adressen in den physikalischen Speicherorten, die zusammen den letzten physikalischen Speicherort angeben, der der logischen Adresse zugewiesen war. Wie oben beschrieben, erlauben es die Sequenzzahlen dem Kontroller, die Information in dem flüchtigen Speicher nach dem Auftreten eines Spannungsausfalls wiederherzustellen.
  • 4 zeigt beispielhaft Daten 80, die an jedem adressierbaren Speicherort des nicht-flüchtigen Speichers 54 in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung gespeichert werden können. Die Daten 80 weisen Inhaltsdaten 82 auf, was die Daten sind, die Gegenstand des entsprechenden logischen Schreibvorgangs sind. Die Daten 80 weisen weiter Meta-Daten 84 auf, die verschiedene Information bezüglich des Status der Inhaltsdaten 82 einschließen. Datenfelder 86 und 87 geben die logische Adresse der Sequenzzahl an, die jeweils mit dem Schreibvorgang zugehörig sind, um die Inhaltsdaten 82 zu speichern, die Teil der Meta-Daten 84 sein können. Für Anwendungen, bei denen der nicht-flüchtige Speicher 54 als ein Disk-Cache belegt wird, können die Meta-Daten 84 Daten bezüglich des Status der zugehörigen Cachelinie betreffen. Die Meta-Daten 84 können andere und/oder unterschiedliche Daten, als die hier beispielhaft diskutierten Daten speichern.
  • Zusätzlich können die Meta-Daten 84 den Verbrauchszustand der Inhaltsdaten 82 angeben, etwa ob die Inhaltsdaten 82 belegt sind oder geltend sind. Der angegebene Verbrauchszustand muss jedoch nicht der gegenwärtige sein, da der Kontroller 52 nicht für jeden logischen Schreibvorgang den Inhalt der physikalischen Adresse, die zuvor zu der logischen Adresse mappiert war, als belegt markiert. Mehrere Orte des nicht-flüchtigen Speichers 54 können daher Meta-Daten beinhalten, die dieselbe logische Adresse angeben und angeben, dass die zugehörigen Inhaltsdaten 82 geltend sind. Diese Information, die in dem flüchtigen Speicher beinhaltet ist, wird von dem Kontroller 52 belegt, um die geltenden Daten aus den belegten Daten während normaler Operationen auszusortieren, und in dem Fall eines Spannungsausfalls gewinnt der Kontroller 52 das Speichersystem 50 von dem Leistungsausfall durch Lesen der Sequenzzahlen aus dem nicht-flüchtigen Speicher 54 zurück, um die geltenden Daten aus den geltenden Daten auszusortieren, und die Information zu rekonstruieren, die zuvor in dem flüchtigen Speicher 60 gespeichert war.
  • Die Sequenzzahlen sind, wie oben gesagt, global, bei einigen Ausführungsbeispielen der Erfindung, sind die Sequenzzahlen für jedes Schreiben in den nicht-flüchtigen Speicher 54 unterschiedlich, unabhängig von den logischen Adressen. Bei anderen Ausführungsbeispielen der Erfindung muss eine Sequenzzahl jedoch nur einheitlich zu jeder logischen Adresse sein, der Kontroller 52 kann daher Sequenzzahlen (hier als „lokale Sequenzzahlen" bezeichnet) in dem nicht-flüchtigen Speicher 54 zu speichern, die sich über den gesamten Bereich erstrecken, aber unterschieden werden durch die zugehörigen logischen Adressen. Es ist so beispielsweise möglich, dass der nicht-flüchtige Speicher 54 eine logische Sequenzzahl von „5" für die logische Adresse A speichert, und eine logische Sequenzzahl von „5" für die logische Adresse D. Ein möglicher Nachteil der Verwendung lokaler Sequenzzahlen ist, dass mehrere Zähler belegt werden, zum Erzeugen von Sequenzzahlen für verschiedene logische Adressen, statt eines einzigen Zählers (für die globale Sequenzzahl). Ein möglicher Vorteil der Verwendung von lokalen Sequenzzahlen ist, dass die entsprechende Datenfeldgröße in den Meta-Daten 84 kleiner ist.
  • 5 zeigt die L2P Tabelle 62 in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung. Die L2P Tabelle 62 weist ein festes Feld 93 auf, das N-Eingänge 94 (Eingänge 941 , 942 , ... 94N sind als Beispiele gezeigt) hat, von denen jeder einer bestimmten logischen Adresse zugehörig ist und eine Angabe der physikalischen Adresse für die logische Adresse speichert. Die Eingänge 94 des festen Feldes 93 sind von einem logischen Adresszeiger 91 indiziert zum Zwecke des Rückgewinnens einer gegenwärtigen physikalischen Adresse für eine bestimmte logische Adresse.
  • Nachdem Daten in einer bestimmten physikalischen Adresse gespeichert sind, werden, wie oben beschrieben, die Daten, die an dem entsprechenden Speicherort gespeichert sind, belegt, und die entsprechende physikalische Adresse wird für die logische Adresse "ungeltend". In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung kann der Eingang 94 einen vorgegebenen Wert speichern (etwa zum Beispiel alle als ein Wert von "1en"), um eine ungeltende physikalische Adresse anzugeben. Alternativ können in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung die flüchtigen Meta-Daten 68 angeben, welche der physikalischen Adressen und welche belegt sind, bei einer anderen Alternative können bei einigen Ausführungsbeispielen der Erfindung der L2P Tabelle 62 ein Bit einschließen, das jedem Eingang zugehörig ist, um anzugeben, ob die entsprechende physikalische Adresse ungeltend oder geltend ist. Es sind so viele Variationen möglich, sie liegen in dem Schutzbereich der beiliegenden Ansprüche.
  • 6 zeigt die Freistellenpooltabelle 66 in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung. Die Freistellenpooltabelle 66 weist P-Eingänge 100 (Eingänge 1001 , 1002 , ... 100P , dargestellt als Beispiel) auf, von denen jeder eine physikalische Adresse eines Speicherorts angibt, der Teil des Freistellenpools 20 ist (siehe 1). Die P-Zahl von Eingängen der Freistellenpooltabelle 66 variiert kontinuierlich, da die physikalischen Adressen kontinuierlich aus der freien Pooltabelle für neue Schreibvorgänge genommen werden und der Freistellenpooltabelle 66 nach einem Blocklöschvorgang zugefügt werden. In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung kann die Freistellenpooltabelle 66 einen ersten First-in First-out (FIFO) zu Buffer 99 oder eine Schlange (als Beispiel) aufweisen, in dem die Eingänge 100 an dem einen Ende des FIFO-Buffers 99 zugefügt werden, und die Eingänge den logischen Adresse an dem anderen Ende des Buffers zugeordnet werden. Andere Anordnungen sind möglich und liegen in dem Schutzbereich der angefügten Ansprüche.
  • 7 zeigt die volatilen Meta-Daten in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung. Die volatilen Meta-Daten 68 können in der Form eines festen Feldes 109 angeordnet sein, das Q-Eingänge 110 aufweist (Eingänge 1101 , 1102 , ... 1101 , 110Q , als Beispiele gezeigt) von denen jedes mit einem der physikalischen Adresse des nicht-flüchtigen Speichers 54 zugehörig ist. Die Eingänge 110 können so indiziert sein unter Verwendung eines physikalischen Adresszeigers 111. Wie in 7 gezeigt, kann jeder Eingang 110 angeben, ob die zugehörige physikalische Adresse belegte oder geltende Daten beinhaltet. Weiter kann in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung jeder Eingang 110 angeben, ob die zugehörige physikalische Adresse gelöschten oder freien Speicherorten zugehörig ist. Es sind so viele Variationen möglich und liegen innerhalb des Schutzbereichs der angefügten Ansprüche.
  • Es wird auf 8 Bezug genommen. Der Kontroller 52 (siehe 2) kann im wesentlichen eine Technik 150 in Antwort auf einen logischen Schreibvorgang ausführen. Der logische Schreibvorgang zielt auf eine logische Adresse und gibt Daten an, die unter der logischen Adresse zu speichern sind. Nach der Technik 150 gewinnt der Kontroller 52 eine physikalische Adresse für die logische Adresse, etwa durch Verwenden der logischen Adresse zum Nachschlagen der bestimmten physikalischen Adresse aus der L2P Tabelle 62 (siehe 2), wie in Block 152 gezeigt. Der Kontroller 52 bestimmt sodann (Raute 154), ob die physikalische Adresse geltend ist. Dies ist während des normalen Vorgangs sehr häufig der Fall, obwohl eine bestimmte physikalische Adresse nach dem anfänglichen Starten des Speichersystems 50 einem Freistellenpool zugehörig sein kann (siehe 2).
  • Wenn der Kontroller 52 bestimmt (Raute 154), dass die gegenwärtige physikalische Adresse geltend ist, markiert der Kontroller 52 (Block 158) die gegenwärtige physikalische Adresse in der L2P Tabelle 62 als geltend. Wenn die gegenwärtige physikalische Adresse gegenwärtig geltende Daten speichert, entsprechend dem hier diskutierten dynamischen Adressierungsschema, wird eine andere physikalische Adresse verwendet (wie weiter unten beschrieben), um die Daten zu speichern, die Gegenstand des gegenwärtigen logischen Schreibvorgangs sind. Sodann frischt der Kontroller 52 die flüchtigen Meta-Daten 68 auf, um anzugeben, dass die Inhaltsdaten 82 (siehe 2 und 4) an der gegenwärtigen physikalischen Adresse sind.
  • Entweder nach dem Block 162 oder nach dem Bestimmen (Raute 154), dass die gegenwärtige physikalische Adresse ungeltend ist, bestimmt der Kontroller 52 (Raute 160), ob es Zeit ist, den Freistellenpool 20 aufzufüllen. Bei einigen Ausführungsbeispielen der Erfindung kann der Kontroller 52 die Anzahl der physikalischen Adressen beobachten, die den Freistellenpool 20 bilden. Bei Bestimmung, dass die Zahl unter einen vorgegebenen Stellenwert gefallen, kann der Kontroller 52 Aktionen ausführen, um den Freistellenpool 20 aufzufüllen. Beispielsweise können diese Aktionen ein Neuanordnen (Block 164) von verwendeten Zellen in einen benachbarten Block. Diese Relokation kann das Bewegen von adressierbaren Speicherorten des nicht-flüchtigen Speichers 54, die geltend sind und belegt sind mit einem zugehörigen Auffrischen der flüchtigen Daten 60, einschließen. Nachdem dieser benachbarte Block erstellt ist, löscht der Kontroller 52 den Block, wie in dem Block 166 angegeben. Nachfolgend frischt der Kontroller 52 (Block 170) die Freistellenpooltabelle 66 auf.
  • Unabhängig davon, ob der Kontroller 52 den Freistellenpool 20 auffüllt, fragt der Kontroller 50 entsprechend der Technik 150 (Block 174) die nächste physikalische Adresse aus dem Freistellenpool 20 ab (zum Ersetzen der gegenwärtigen physikalischen Adresse), und erhöht (Block 178) einen Sequenzzähler. Es wird für das in Verbindung mit 8 diskutierte Ausführungsbeispiel angenommen, dass ein globaler Sequenzzähler verwendet wird. Es kann jedoch, wie oben diskutiert, ein gesonderter lokaler Sequenzzähler für jede logische Adresse in Übereinstimmung mit anderen Ausführungsbeispielen der Erfindung verwendet werden.
  • Der Kontroller 52 schreibt zusammen (Block 180) die Inhaltsdaten und Meta-Daten (die die Sequenzzahl und die logische Adresse beinhalten) unter die neue physikalische Adresse. Nachfolgend frischt der Kontroller 52 (Block 182) die L2P Tabelle 62 auf, um die neue physikalische Adresse zu der logischen Adresse zu mappieren oder zuzuordnen.
  • Zum Zwecke der Rekonstruktion der L2P Tabelle 62 nach einem Spannungsausfall verwendet der Kontroller 52 eine temporäre Tabelle 190, ein beispielhaftes Ausführungsbeispiel der Tabelle ist in 9 gezeigt. Die Tabelle 190 weist N Zweitupleeingänge 192 auf (Eingänge 1921 , 1922 , ... 192N , dargestellt als Beispiele) wobei jeder einer bestimmten logischen Adresse zugeordnet ist. Der Kontroller 52 kann so einen logischen Adresszeiger 197 zum Zwecke des Nachschlagens eines bestimmten Eingangs 192 verwenden. In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung weist jeder Eingang 192 ein Feld 194 auf, das eine physikalische Adresse als logische Adresse angibt, und ein Feld 196, das die letzte (und größte) Sequenzzahl, die bisher gefunden worden ist, angibt. Der Kontroller 52 frischt so die Eingänge 192 auf, wenn der Kontroller 52 den nicht-flüchtigen Speicher 54 (nach einem Leistungsausfall) abtastet, so dass bei dem Ende der Anfrage jeder Eintrag 192 die zuletzt verwendete physikalische Adresse für jede logische Adresse angibt (d. h. die physikalische Adresse mit der höchsten Sequenzzahl).
  • Bei einem spezifischeren Beispiel der Verwendung der Tabelle 190 führt in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung mit der Kontroller 52 allgemein eine Technik 200 aus, die in 10 gezeigt ist. Nach dieser Technik 200 initialisiert (202) der Kontroller 52 die Tabelle 190. Diese Initialisierung kann, beispielsweise, das Speichern von Werten (wie beispielsweise "–1") in jedem Eingang 192 (der Tabelle 190) einschließen, die nicht einer physikalischen Adresse oder der letzten Sequenznummer entspricht, um den initialisierten Status des Eingangs 192 anzugeben. Der Kontroller 52 liest sodann (Block 204) Meta-Daten aus der nächsten physikalischen Adresse des nicht-flüchtigen Speichers 54. Wenn die Meta-Daten angeben, dass der Speicherinhalt ungeltend ist, bestimmt der Kontroller 52 (Raute 208) ob eine andere physikalische Adresse zu verarbeiten ist und, wenn dem so ist, kehrt er zu dem Block 204 zurück. Eine Rekonstruktion des Freistellenpools und des Belegtpools kann in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung in demselben Durchlauf erfolgen.
  • Wenn der Kontroller 52 bestimmt (Raute 206), dass die Inhaltsdaten geltend sind, gewinnt der Kontroller 52 (Block 210) den letzten Sequenzzahleintrag aus der Tabelle 190 für die bestimmte logische Adresse zurück, die der physikalischen Adresse zugehörig ist. Eine Angabe dieser logischen Adresse wird in dem Speicherort des nicht-flüchtigen Speichers 54 gespeichert. Wenn der Kontroller 52 bestimmt (Raute 214), dass die Sequenzzahl geltend ist (d. h. der Kontroller 52 bestimmt, dass die Sequenzzahl nicht der initialisierte Wert ist), bestimmt der Kontroller 52 (Raute 216), ob die gegenwärtige Sequenzzahl die größte Sequenzzahl für die logische Adresse bisher ist. Falls nicht, kehrt die Steuerung zu der Raute 208 zurück. Ansonsten ist die letzte physikalische Adresse, die für die logische Adresse (wie insoweit angegeben in der Abtastung) lokalisiert, und der Kontroller 52 schreibt (Block 220) zu den Meta-Daten an der vorangehenden physikalischen Adresse um anzugeben, dass die entsprechenden Inhaltsdaten "belegt" sind. Nachfolgend frischt der Kontroller 52 (Block 222) die Felder 194 und 196 (siehe 9) der Tabelle 190 für die entsprechende logische Adresse auf. Die Steuerung schreitet sodann zu der Raute 208 fort, in der der Kontroller 52 bestimmt, ob eine andere physikalische Adresse verarbeitet wird. Falls nicht, hat der Kontroller 52 die Abtastung abgeschlossen, und die Tabelle 190 ist erstellt. Es ist zu beachten, dass neben den Eingängen 196 (siehe 9), die Tabelle 190, die Rekonstruierte L2P Tabelle 62 bildet. Der Kontroller 52 kann hinterher in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung die Daten 194 bei der Beendigung des Abtastens extrahieren, um die L2P Tabelle 62 zu rekonstruieren.
  • Das Speichersystem 50 (siehe 2), kann in einer Vielzahl von unterschiedlichen Anwendungen verwendet werden, es sind so viele unterschiedliche Ausführungsformen der Erfindung möglich und liegen innerhalb des Schutzbereiches der beiliegenden Ansprüche. Beispielsweise kann in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung das Speichersystem eine Festplatte, und bei anderen Ausführungsbeispielen der Erfindung kann das Speichersystem 50 ein Disk-Cache oder ein Cache für mehrere Disks oder RAID Volumen sein. 11 zeigt ein beispielhaftes Ausführungsbeispiel einer Computerarchitektur 250, die das Speichersystem 50 aufnimmt. Diese Speicherarchitektur 250 kam beispielsweise in einem Desktop oder einem Laptop verwendet werden.
  • Das Computersystem 250 weist einen Prozessor 252 auf (beispielsweise einen oder mehrere Mikroprozessoren), der mit einem Systembus 256 gekoppelt ist. Das Computersystem 250 kann weiter eine North Bridge aufweisen oder aber einen Speicherhub 260, der mit dem Systembus 256 gekoppelt ist, zum Zwecke der Erstellung einer Kommunikation zwischen dem Prozessor 252 und dem Systemspeicher, etwa einem dynamischen Speicher mit wahlfreiem Zugriff (DRAM) 60. In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung ist das DRAM ein Ausführungsbeispiel eines flüchtigen Speichers 60, obwohl andere flüchtige Speicher bei anderen Ausführungsbeispielen der Erfindung verwendet werden können. Der DRAM 60 kann mit dem Speicherhub 260 über einen Speicherbus 262 verbunden sein. Der Speicherhub 260 kann in einigen Ausführungsbeispielen der Erfindung aufweisen den Controller 250, obwohl der Controller 250 von dem Speicherhub 260 bei anderen Ausführungsbeispielen der Erfindung gesondert sein kann.
  • In Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung ist, wie in 11 gezeigt, der nicht-flüchtige Speicher ein NAND Flash Speicher, obwohl in Übereinstimmung mit anderen Ausführungsbeispielen der Erfindung andere Arten von nicht-flüchtigen Speichern an dessen Stelle verwendet werden können. Beispielsweise kann bei anderen Ausführungsbeispielen der Erfindung ein ferro-elektrischer Polymerspeicher anstelle des NAND Flash Speichers verwendet werden.
  • Der Speicherhub 260 kann bei einigen Ausführungsbeispielen der Erfindung andere Busse mit dem Systems 256 verbinden, etwa einem Peripheral Component Interconnect (PCI) Bus 272 und einem Accelerated Graphics Port (AGP) Bus 270.
  • Die PCI Spezifikation ist von Special Interest Group, Portland, Oregon 97214 erhältlich. Der AGP ist in ihren Einzelheiten in Accelerated Graphics Port Interface Spezifikation, Refision 1.0, veröffentlicht am 31. Juli 1996 von der Intel Corporation of Santa Clara, Kalifornien, beschrieben. Der PCI Bus 272 kann, beispielsweise, eine Network Interface Card (NIC) 273 mit dem PCI Bus 272 koppeln und der AGP Bus 270 kann, beispielsweise, einen Displaytreiber 275 koppeln, der ein Display an den Systembus 256 treibt.
  • Wie in 11 beschrieben, kann in Übereinstimmung mit einigen Ausführungsbeispielen der Erfindung der Speicherhub 260 mit einer South Bridge gekoppelt sein oder einem Eingangs/Ausgangs I/O Hub 280. Der I/O Hub 280 kann Schnittstellen für einen CD-ROM Treiber 290 und einen Harddisktreiber 292 schaffen. Weiter kann der I/O Hub 280 eine Schnittstelle für einen I/O Expansionsbus 282 bilden. Ein I/O Controller 284 kann mit dem I/O Expansionsbus 282 gekoppelt sein und kann Eingangsdaten von einer Maus 286 und einer Tastatur 290 aufnehmen.
  • Es ist zu beachten, dass die in 11 gezeigte Architektur lediglich beispielhaft ist, andere Variationen sind möglich und liegen im Schutzbereich der beiliegenden Ansprüche.
  • Obwohl die Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsbeispielen offenbart worden ist, wird der Fachmann, der diese Offenbarung gelesen hat, anerkennen, dass viele Modifikationen und Variationen möglich sind. Die beiliegenden Ansprüche sollen derartige Modifikationen und Variationen abdecken, soweit diese in den wahren Grundgedanken und Schutzbereich der Erfindung fallen.
  • ZUSAMMENFASSUNG
  • Eine Technik weist das Ausführen einer Mehrzahl von Schreiboperationen zum Speichern von Daten an unterschiedlichen physikalischen Speicherorten auf. Jede der physikalischen Speicherorte ist einer logischen Adresse zugehörig, die mit einer der physikalischen Adressen geteilt wird. Die Technik weist das Speichern von Sequenzinformation in den physikalischen Speicherorten zum Angeben, welche der Schreiboperationen zuletzt stattgefunden hat, auf.

Claims (29)

  1. Ein Verfahren mit: Ausführen einer Mehrzahl von Schreiboperationen zum Speichern von Daten an unterschiedlichen physikalischen Speicherorten, wobei jeder der physikalischen Speicherorte einer logischen Adresse zugehörig ist, die den physikalischen Speicherorten gemeinsam ist; und Speichern einer Sequenzinformation an den physikalischen Speicherorten zum Angeben, welche der Schreiboperationen zuletzt stattgefunden hat.
  2. Das Verfahren nach Anspruch 1, wobei die Sequenzinformation eine globale Sequenzzahl, eine logische Sequenzzahl oder einen Zeitstempel aufweist.
  3. Das Verfahren nach Anspruch 1, weiter mit: Speichern der logischen Adresse unter den physikalischen Speicherorten um anzugeben, welche der Schreiboperationen zuletzt stattgefunden hat.
  4. Das Verfahren nach Anspruch 1, wobei jeder physikalische Speicherort eine unterschiedliche Version von Daten für die logische Adresse speichert.
  5. Das Verfahren nach Anspruch 1, weiter mit: Speichern einer Angabe der logischen Adresse an jedem physikalischen Speicherort.
  6. Das Verfahren nach Anspruch 1, wobei die physikalischen Speicherorte ein Teil eines nicht-flüchtigen Speichers sind, wobei das Verfahren weiter aufweist: in Antwort auf jede der Schreiboperationen das Auffrischen von Statusinformationen in einem flüchtigen Speicher um anzugeben, welcher der physikalischen Speicherorte geltende Daten speichert.
  7. Das Verfahren nach Anspruch 1, wobei die physikalischen Speicherorte Teil eines nicht-flüchtigen Speichers sind, wobei das Verfahren weiter aufweist: in Antwort auf jede der Schreiboperationen, Auffrischen einer logischen-zu-physikalischen Adressübersetzungstabelle, die ein Mappieren zwischen der logischen Adresse und einer der physikalischen Speicherorte angibt.
  8. Das Verfahren nach Anspruch 7, weiter mit: Löschen des angegebenen physikalischen Speicherorts in einer Blocklöschoperation.
  9. Das Verfahren nach Anspruch 1, weiter mit: in Antwort auf einen Spannungsausfall, Verwenden der Sequenzinformation zum Rekonstruieren einer logisch-zu-physikalisch Übersetzungstabelle, die ein Mappieren zwischen einer logischen Adresse und einer der physikalischen Speicherorte angibt.
  10. Das Verfahren nach Anspruch 1, weiter mit: in Antwort auf ein Spannungsabfall, Verwenden der Sequenzinformation zum Bestimmen, welcher der physikalischen Speicherorte keine gültigen Daten für die logische Adresse speichert.
  11. Das Verfahren nach Anspruch 1, weiter mit: in Antwort auf einen Spannungsabfall, Verwenden der Sequenzinformation zum Bestimmen, welcher der physikalischen Speicherorte in einem Leerzustand ist und welcher der physikalischen Speicherorte belegt sind.
  12. Eine Vorrichtung mit: einem nicht-flüchtigen Speicher; und einem Controller, der mit dem Speicher gekoppelt ist, um: eine Mehrzahl von Schreiboperationen zum Speichern von Daten in unterschiedlichen physikalischen Speicherorten des nicht-flüchtigen Speichers auszuführen, wobei jeder der physikalischen Speicherorte einer logischen Adresse zugehörig ist, die unter den physikalischen Speicherorten gemeinsam geteilt wird; und Speichern von Sequenzinformationen in den physikalischen Speicherorten zum Angeben, welcher der Schreiboperationen zuletzt stattgefunden hat.
  13. Die Vorrichtung nach Anspruch 12, wobei die Sequenzinformation eine globale Sequenzzahl, eine Sequenzzahl oder einen Zeitstempel aufweist.
  14. Die Vorrichtung nach Anspruch 12, wobei der Controller die logische Adresse in den physikalischen Speicherorten speichert.
  15. Die Vorrichtung nach Anspruch 12, wobei jeder physikalische Speicherort eine unterschiedliche Version von Daten für die logische Adresse speichert.
  16. Die Vorrichtung nach Anspruch 12, wobei der Controller eine Angabe der logischen Adresse an jedem physikalischen Speicherort speichert.
  17. Die Vorrichtung nach Anspruch 16, weiter mit: einem flüchtigen Speicher, wobei der Controller in Antwort auf jede der Schreiboperationen die Statusinformation in einem flüchtigen Speicher auffrischt um anzugeben, welche der physikalischen Speicherorte geltende Daten speichern.
  18. Die Vorrichtung nach Anspruch 16, weiter mit: einem flüchtigen Speicher, wobei der Controller in Antwort auf jede der Schreiboperationen eine logisch-zu-physikalisch Adressübersetzungstabelle auffrischt, um ein Mappieren zwischen der logischen Adresse und einer der physikalischen Speicherorte anzugeben.
  19. Die Vorrichtung nach Anspruch 12, wobei der Controller in Antwort auf ein Spannungsausfall die Sequenzinformation verwendet, um die logisch-zu-physikalisch Übersetzungstabelle, die ein Mappieren zwischen der logischen Adresse und einer der physikalischen Speicherorte angibt, zu rekonstruieren.
  20. Ein System mit: einem nicht-flüchtigen Speicher; einem dynamischen Speicher mit wahlfreiem Zugriff; und einem Controller um: eine logisch-zu physikalisch Adressübersetzungstabelle, die in dem Speicher mit wahlfreiem Zugriff gespeichert ist, zu verwenden, um eine Mehrzahl von Schreiboperationen zum Speichern von Daten in unterschiedlichen physikalischen Speicherorten des nicht-flüchtigen Speichers durchzuführen, wobei die physikalischen Speicherorte einer logischen Adresse zugehörig ist, die unter den physikalischen Speicherorten geteilt wird, und Speichern von Sequenzinformationen in den physikalischen Speicherorten um anzugeben, welche der Schreiboperationen zuletzt stattgefunden hat.
  21. Das System nach Anspruch 20, wobei der Controller in Antwort auf einen Leistungsausfall die Sequenzinformationen verwendet, um die logisch-zu-physikalisch Adressübersetzungstabelle zu rekonstruieren.
  22. Das System nach Anspruch 20, wobei der Controller in Antwort auf einen Spannungsausfall die Sequenzinformation verwendet, um zu bestimmen, welche der physikalischen Speicherorte keine gültigen Daten für die logische Adresse speichert.
  23. Ein Artikel mit einem von einem Computer zugänglichen Speichermedium, das Befehle speichert, die über ihre Ausführung den Computer veranlassen zum: Ausführen einer Mehrzahl von Schreiboperationen zum Speichern von Daten an unterschiedlichen physikalischen Speicherorten, wobei jeder physikalische Speicherort einer logischen Adresse zugehörig ist, die unter den physikalischen Speicherorten geteilt wird; und Speichern von Sequenzinformationen in den physikalischen Speicherorten um anzugeben, welche der Schreiboperationen zuletzt stattgefunden hat.
  24. Der Artikel nach Anspruch 23, wobei das Speichermedium Befehle speichert um, bei ihrer Ausführung, den Computer zu veranlassen, eine Angabe der logischen Adresse an jedem physikalischen Speicherort zu speichern.
  25. Der Artikel nach Anspruch 23, wobei das Speichermedium Befehle speichert um den Computer bei ihrer Ausführung zu veranlassen, in Antwort auf jeden der Schreiboperationen Statusinformationen in einem flüchtigen Speicher aufzufrischen, um anzugeben, welche der physikalischen Speicherorte gegenwärtig der logischen Adresse zugeordnet ist.
  26. Der Artikel nach Anspruch 23, wobei die physikalischen Speicherorte Teil eines nicht-flüchtigen Speichers sind, und das Speichermedium, das Befehle speichert, die bei ihrer Ausführung den Computer veranlassen, in Antwort auf jeden der Schreibvorgänge eine logisch-zu-physikalisch Adressspeichertabelle, die ein Mappieren zwischen den logischen Adressen und einem der physikalischen Speicherorte angibt, aufzufrischen.
  27. Der Artikel nach Anspruch 23, wobei das Speichermedium Befehle speichert um, bei der Ausführung, den Computer zu veranlassen, in Antwort auf einen Spannungsausfall die Sequenzzahlen zu verwenden, um die logisch-zu-physikalisch Übersetzungstabelle, die ein Mappieren zwischen der logischen Adresse und einem der physikalischen Speicherorte angibt, zu rekonstruieren.
  28. Der Artikel nach Anspruch 23, wobei das Speichermedium Befehle speichert, um die bei ihrer Ausführung, den Computer veranlassen, in Antwort auf einen Leistungsausfall die Sequenzinformation zu verwenden, um zu bestimmen, welche der physikalischen Speicherorte keine gültigen Daten für die logischen Adressen speichert.
  29. Der Artikel nach Anspruch 23, wobei das Speichermedium Befehle speichert, die bei ihrer Ausführung den Computer veranlassen, in Antwort auf einen Spannungsausfall die Sequenzen zu verwenden, um zu bestimmen, welche der physikalischen Speicherorte gelöscht sind.
DE112006001636T 2005-06-30 2006-06-30 Technik zum Beschreiben eines nicht-flüchtigen Speichers Ceased DE112006001636T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/172,608 2005-06-30
US11/172,608 US7797479B2 (en) 2005-06-30 2005-06-30 Technique to write to a non-volatile memory
PCT/US2006/026025 WO2007005859A1 (en) 2005-06-30 2006-06-30 Technique to write to a non-volatile memory

Publications (1)

Publication Number Publication Date
DE112006001636T5 true DE112006001636T5 (de) 2008-05-08

Family

ID=37081586

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006001636T Ceased DE112006001636T5 (de) 2005-06-30 2006-06-30 Technik zum Beschreiben eines nicht-flüchtigen Speichers

Country Status (5)

Country Link
US (1) US7797479B2 (de)
CN (1) CN101208669B (de)
DE (1) DE112006001636T5 (de)
GB (1) GB2442162B (de)
WO (1) WO2007005859A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013019941A1 (de) * 2013-11-27 2015-05-28 Giesecke & Devrient Gmbh Verfahren zum Betreiben eines Speichersystems sowie ein solches Speichersystem

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286198B2 (en) * 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US7565498B1 (en) * 2005-11-07 2009-07-21 Symantec Operating Corporation System and method for maintaining write order fidelity in a distributed environment
US7644251B2 (en) * 2005-12-19 2010-01-05 Sigmatel, Inc. Non-volatile solid-state memory controller
US7882086B1 (en) * 2005-12-21 2011-02-01 Network Appliance, Inc. Method and system for portset data management
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
WO2008106686A1 (en) * 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
JP4535117B2 (ja) * 2007-11-06 2010-09-01 ソニー株式会社 メモリ装置、メモリ管理方法、およびプログラム
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8180954B2 (en) * 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US8028123B2 (en) * 2008-04-15 2011-09-27 SMART Modular Technologies (AZ) , Inc. Circular wear leveling
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
US8566505B2 (en) * 2008-04-15 2013-10-22 SMART Storage Systems, Inc. Flash management using sequential techniques
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
US8171205B2 (en) * 2008-05-05 2012-05-01 Intel Corporation Wrap-around sequence numbers for recovering from power-fall in non-volatile memory
US8621144B2 (en) * 2008-06-26 2013-12-31 Intel Corporation Accelerated resume from hibernation in a cached disk system
US9141475B2 (en) * 2008-11-23 2015-09-22 Sandisk Technologies Methods for tag-grouping of blocks in storage devices
US8849856B2 (en) * 2008-12-16 2014-09-30 Sandisk Il Ltd. Discardable files
US9020993B2 (en) 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
US9104686B2 (en) 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US9015209B2 (en) 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US7925925B2 (en) 2008-12-30 2011-04-12 Intel Corporation Delta checkpoints for a non-volatile memory indirection table
US20100235329A1 (en) * 2009-03-10 2010-09-16 Sandisk Il Ltd. System and method of embedding second content in first content
US8195891B2 (en) 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
US8612666B2 (en) * 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
TWI433157B (zh) * 2009-09-04 2014-04-01 Silicon Motion Inc 存取快閃記憶體的方法以及相關之記憶裝置
US8296506B2 (en) * 2009-11-09 2012-10-23 Lite-On It Corporation Method for managing a non-violate memory and computer readable medium thereof
US8285918B2 (en) 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US20110302224A1 (en) * 2010-06-08 2011-12-08 Rahav Yairi Data storage device with preloaded content
US8549229B2 (en) 2010-08-19 2013-10-01 Sandisk Il Ltd. Systems and methods for managing an upload of files in a shared cache storage system
US8463802B2 (en) 2010-08-19 2013-06-11 Sandisk Il Ltd. Card-based management of discardable files
WO2012048444A1 (en) * 2010-10-14 2012-04-19 Freescale Semiconductor, Inc. Are Memory controller and method for accessing a plurality of non-volatile memory arrays
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8788849B2 (en) 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
US9361044B2 (en) * 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
CN102736981B (zh) * 2011-04-08 2016-02-03 航天信息股份有限公司 提高nor flash擦写寿命的方法
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
CN103946813B (zh) 2011-09-30 2017-08-25 英特尔公司 基于使用统计量追踪的远存储器访问信号的生成
CN103106143B (zh) * 2011-11-11 2016-01-13 光宝科技股份有限公司 固态储存装置及其逻辑至实体对应表建立方法
WO2013095530A1 (en) 2011-12-22 2013-06-27 Intel Corporation Efficient pcms refresh mechanism background
KR101625777B1 (ko) * 2011-12-28 2016-05-30 인텔 코포레이션 휘발성 메모리 및 비휘발성 메모리 간의 코드 및 데이터 저장소들을 분산하기 위한 방법 및 장치
CN103514104B (zh) * 2012-06-27 2016-08-03 安凯(广州)微电子技术有限公司 读取数据方法以及数据写入方法
US20140052897A1 (en) * 2012-08-17 2014-02-20 Seagate Technology Llc Dynamic formation of garbage collection units in a memory
US9047172B2 (en) 2012-11-29 2015-06-02 Intel Corporation Adaptive power control of memory map storage devices
US9606910B2 (en) * 2013-01-17 2017-03-28 Hitachi, Ltd. Method and apparatus for data reduction
US9122587B2 (en) * 2013-03-06 2015-09-01 Seagate Technology Llc Self recovery in a solid state drive
JP5695112B2 (ja) * 2013-03-18 2015-04-01 富士通テン株式会社 データ記憶装置、データの記憶方法および車載用制御装置
CN103761190B (zh) * 2013-12-19 2017-01-11 华为技术有限公司 数据处理方法及装置
KR20150139718A (ko) * 2014-06-03 2015-12-14 에스케이하이닉스 주식회사 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치
US9613715B2 (en) 2014-06-16 2017-04-04 Sandisk Technologies Llc Low-test memory stack for non-volatile storage
US8976609B1 (en) 2014-06-16 2015-03-10 Sandisk Enterprise Ip Llc Low-test memory stack for non-volatile storage
US9653184B2 (en) 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
KR20160003530A (ko) * 2014-07-01 2016-01-11 삼성전자주식회사 내장 저장 장치, 이와 통신 가능한 외장 저장 장치, 및 이를 포함하는 데이터 처리 시스템
CN105512047B (zh) * 2014-09-26 2018-08-28 上海东软载波微电子有限公司 Flash闪存的写操作、擦除操作方法及装置
US20160162416A1 (en) * 2014-12-08 2016-06-09 Intel Corporation Apparatus and Method for Reducing Latency Between Host and a Storage Device
US9436392B1 (en) 2015-02-17 2016-09-06 Nimble Storage, Inc. Access-based eviction of blocks from solid state drive cache memory
US9817576B2 (en) * 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US9570159B1 (en) 2015-10-15 2017-02-14 Intel Corporation Methods and apparatus to preserve data of a solid state drive during a power loss event
CN105653966A (zh) * 2016-03-03 2016-06-08 山东超越数控电子有限公司 一种自主可信的云数据存储方法
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10642743B2 (en) * 2017-06-28 2020-05-05 Arm Limited Apparatus and method of handling caching of persistent data
CN108108413B (zh) * 2017-12-12 2022-04-26 宁波三星医疗电气股份有限公司 一种基于存储数据自动生成数据指针的方法及系统
US11113007B2 (en) * 2019-05-13 2021-09-07 Micron Technology, Inc. Partial execution of a write command from a host system
CN111176579B (zh) * 2019-12-30 2023-05-30 航天信息股份有限公司 使用norflash模拟eeprom的方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5566314A (en) 1993-08-30 1996-10-15 Lucent Technologies Inc. Flash memory device employing unused cell arrays to update files
WO1998000808A1 (en) * 1996-06-28 1998-01-08 Sony Corporation Method and device for processing information
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3692313B2 (ja) * 2001-06-28 2005-09-07 松下電器産業株式会社 不揮発性メモリの制御方法
KR100449708B1 (ko) 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013019941A1 (de) * 2013-11-27 2015-05-28 Giesecke & Devrient Gmbh Verfahren zum Betreiben eines Speichersystems sowie ein solches Speichersystem

Also Published As

Publication number Publication date
CN101208669B (zh) 2011-11-09
WO2007005859A1 (en) 2007-01-11
US20070005928A1 (en) 2007-01-04
US7797479B2 (en) 2010-09-14
CN101208669A (zh) 2008-06-25
GB0724745D0 (en) 2008-01-30
GB2442162A (en) 2008-03-26
GB2442162B (en) 2010-09-15

Similar Documents

Publication Publication Date Title
DE112006001636T5 (de) Technik zum Beschreiben eines nicht-flüchtigen Speichers
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE69432878T2 (de) Informationsverarbeitungssystem mit Flash-Speicher und Cache-Speicher
DE602004002216T2 (de) Verfahren, system und programm für eine inkrementelle virtuelle kopie
DE69635663T2 (de) vERFAHREN FÜR DAS EINSPEICHERN VON DATEN IN EINEM FLASH-EEPROM-HAUPTSPEICHER IN EINEM RECHNERSYSTEM
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102019117787B4 (de) Speichervorrichtung und Betriebsverfahren derselben
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE102011075814B4 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112005001050T5 (de) Liefern eines alternativen Cachespeicherungsschemas auf der Speicherbereichnetzwerkebene
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102008057219A1 (de) Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE112014003349T5 (de) Verfahren und Gerät zum Ausführen atomarer Schreibvorgänge
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102019128491A1 (de) Betriebsverfahren für Open-Channel-Speichervorrichtung
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20130306