DE102005019842B4 - System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher - Google Patents

System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher Download PDF

Info

Publication number
DE102005019842B4
DE102005019842B4 DE102005019842.2A DE102005019842A DE102005019842B4 DE 102005019842 B4 DE102005019842 B4 DE 102005019842B4 DE 102005019842 A DE102005019842 A DE 102005019842A DE 102005019842 B4 DE102005019842 B4 DE 102005019842B4
Authority
DE
Germany
Prior art keywords
block
physical
virtual
page
active
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.)
Active
Application number
DE102005019842.2A
Other languages
English (en)
Other versions
DE102005019842A1 (de
Inventor
Hung-Shiun Fu
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.)
MediaTek Inc
Original Assignee
MediaTek Inc
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 MediaTek Inc filed Critical MediaTek Inc
Publication of DE102005019842A1 publication Critical patent/DE102005019842A1/de
Application granted granted Critical
Publication of DE102005019842B4 publication Critical patent/DE102005019842B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Abstract

System (200), das imstande ist, Daten sequentiell in einen Flash-Speicher (30) zu schreiben, wobei das System (200) aufweist: mindestens einen virtuellen Block, wobei jeder virtuelle Block eine Mehrzahl von virtuellen Seiten und eine virtuelle Blockadresse aufweist, wobei jede virtuelle Seite einen virtuellen Seiten-Offsetwert besitzt; mindestens einen physikalischen Block im Flash-Speicher (30), wobei jeder physikalische Block eine Mehrzahl von physikalischen Seiten und eine physikalische Blockadresse aufweist, wobei jede physikalische Seite im physikalischen Block einen physikalischen Seiten-Offsetwert besitzt; wobei jeder virtuelle Block auf einen physikalischen Block abgebildet ist und in den virtuellen Blocks jede virtuelle Seite auf eine physikalische Seite in dem entsprechenden physikalischen Block abgebildet ist und der virtuelle Seiten-Offsetwert gleich dem physikalischen Seiten-Offsetwert ist; wobei das System ferner aufweist: eine erste Abbildungstabelle (40), die eine Mehrzahl von ersten Abbildungsdaten aufweist, wobei jede der ersten Abbildungsdaten eine virtuelle Blockadresse und eine physikalische Blockadresse speichert, um einen spezifischen virtuellen Block auf einen spezifischen physikalischen Block abzubilden; und gekennzeichnet ist durch: mindestens einen aktiven Block im Flash-Speicher (30), wobei jeder aktive Block eine Mehrzahl von physikalischen Seiten und eine aktive Blockadresse aufweist, jede physikalische Seite im aktiven Block einen physikalischen Seiten-Offsetwert besitzt, wobei jeder aktive Block auf einen physikalischen Block abgebildet ist; wobei das System ferner aufweist: eine zweite Abbildungstabelle (50), die eine Mehrzahl von zweiten Abbildungsdaten aufweist, wobei jede der zweiten Abbildungsdaten eine physikalische Blockadresse und eine aktive Blockadresse aufweist, um einen spezifischen aktiven Block auf einen spezifischen physikalischen Block abzubilden; und eine dritte Abbildungstabelle (60), die eine Mehrzahl von dritten Abbildungsdaten aufweist, wobei jede der dritten Abbildungsdaten einen virtuellen Seiten-Offsetwert und einen physikalischen Seiten-Offsetwert aufweist, um eine spezifische virtuelle Seite auf eine spezifische physikalische Seite eines spezifischen aktiven Blocks abzubilden.

Description

  • Die vorliegende Erfindung bezieht sich auf ein System und ein Verfahren, das imstande ist, Daten sequentiell in einen Flash-Speicher, entsprechend den Oberbegriffen von Anspruch 1 und 12, zu schreiben.
  • Verglichen mit herkömmlichen magnetischen Speichervorrichtungen, ist ein Flash-Speicher billiger und besitzt einen niedrigeren Energieverbrauch. Jedoch ist im Flash-Speicher ein direktes Neuschreiben eines Blocks, der darin gespeicherte Daten besitzt, nicht zulässig. Mit anderen Worten müssen, um einen Block, der bereits Daten besitzt, die aktuell gespeicherten Daten zuerst gelöscht werden, bevor der Block mit neuen Daten wieder beschrieben werden kann. Darüberhinaus besitzt ein Flash-Speicher eine Begrenzung der Anzahl von Lösch- und Schreib-Vorgängen. Wenn ein bestimmter Block gelöscht und etliche Male, wie z. B. 100 K mal, überschrieben wurde, wird der bestimmte Block beschädigt und untauglich, um Daten korrekt zu speichern. Darüberhinaus kann ein Flash-Speicher einige schlechte Blocks aufweisen, die während dem Herstellungsprozess im Werk ausgebildet oder durch eine exzessive Benutzung durch den Anwender hervorgerufen wurden. Im Allgemeinen wird ein Zugang zu einem Flash-Speicher durch ein FFS (Flash File System, FFS) verwaltet. Das FFS ist im Stande, die Lösch- und Schreibvorgänge auf unterschiedliche Blocks zu verteilen, um die Wahrscheinlichkeit, dass einige bestimmte Blocks überbeansprucht werden, zu reduzieren und die Verwendung der schlechten Blocks zu verhindern.
  • Entsprechend einer Abbildungstabelle übersetzt dieses Flash File System (FFS) die logische Adresse in eine physikalische Adresse des Flash-Speichers und schreibt dann die Daten in den Block, auf den die physikalische Adresse hindeutet. Das Ober-Datensystem, wie zum Beispiel ein FAT, ruft das Datensystem zufällig, nicht sequentiell auf, was dazu führt, dass Daten zufällig in den Flash-Speicher geschrieben werden. Jedoch haben, um der Bewerbung der Datensicherheit von Flash-Speicher willen, Flash-Speicher-Werke, wie z. B. Toshiba, angekündigt, dass die neue Generation von NAND-Flash-Speicher nur gestattet, dass Daten sequentiell in physikalische Blocks geschrieben werden. Daher kann das erstgenannte Flash-File-System diese Anforderung nicht erfüllen.
  • Wie von M-System INC. im US-Patent Nr. 6,678,785 angekündigt, wurde ein Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher eingeführt, um die Update-Effizienz zu verbessern. Jedoch wird ein großer Speicherplatz von der Abbildungstabelle gemäß dieses Standes der Technik benötigt und die aufgezeichnete Abbildungsbeziehung zwischen physikalischen Seiten und virtuellen Seiten erhöht den Such-Aufwand. Kurz gesagt, beeinträchtigt die Verwendung des von M-System INC. offenbarte Verfahren die Leseeffizienz, wobei ein großer Umfang an Speicherplatz benötigt wird und erhöht den Such-Aufwand.
  • DE 198 45 295 A1 offenbart ein Zugriffsverfahren für einen Flash-Speicher, welches in der Lage ist, eine Suchzeit zwischen einer logischen Adresse von einem Hauptrechner und einer physikalischen Adresse zu verringern und durch Unterteilen eines Speicherfelds in eine Mehrzahl von Operationsblöcken und Ausstatten der jeweiligen Blöcke mit einer Verweistabelle die Zugriffszeit optimiert.
  • US 2003/0101327 A1 offenbart eine Methode zur Steuerung eines Flash-Speichers, wobei eine Adresse gespeicherter Daten in einem separaten Teil des Flash-Speichers gespeichert wird. Zusätzlich wird eine Adresstabelle durch Scannen der Daten in dem separaten Teil erzeugt.
  • EP 1 244 019 A2 offenbart eine Speicheranordnung mit einem nichtflüchtigen Speicherelement. Dabei wird zur Reduzierung des RAM-Volumens eine Tabelle zur Konvertierung einer logischen Adresse in eine physikalische Adresse innerhalb des nichtflüchtigen Speichers des RAM-Speichers gespeichert.
  • Die US 2003/0070035 A1 offenbart eine Methode für Datenzugriff in einem Computer. Dabei kommt ein Computer mit einem flüchtigen sowie mit einem nichtflüchtigen Speicher zum Einsatz, wobei der nichtflüchtige Speicher einen ersten Teil und einen zweiten Teil aufweist. In diesem ersten Teil des nichtflüchtigen Speichers wird das sogenannte Basic Input/Output-System (BIOS) gespeichert.
  • Vor diesem Hintergrund zielt die vorliegende Erfindung darauf ab, ein System und Verfahren vorzusehen, das imstande ist, Daten sequentiell in einen Flash-Speicher zu schreiben, um die Update-Effizienz zu begünstigen. Dies wird durch ein System gemäß Anspruch 1 und ein Verfahren gemäß Anspruch 12 erreicht. Die zugehörigen abhängigen Ansprüche betreffen entsprechende weitere Entwicklungen und Verbesserungen.
  • Die Erfindung wird gelöst durch die Merkmale der unabhängigen Ansprüche. Die jeweiligen abhängigen Ansprüche offenbaren vorteilhafte Weitergestaltungen der Erfindung.
  • Wie aus der detaillierten nachfolgenden Beschreibung noch klarer ersichtlich wird, umfasst das beanspruchte System mindestens einen virtuellen Block, in dem jeder virtuelle Block eine Mehrzahl von virtuellen Seiten aufweist und eine virtuelle Blockadresse besitzt und jede virtuelle Seite einen virtuellen Seiten-Offsetwert besitzt; mindestens einen physikalischen Block, in dem jeder physikalische. Block eine Mehrzahl von physikalischen Seiten aufweist und eine physikalische Blockadresse besitzt und jede physikalische Seite einen physikalischen Seiten-Offsetwert besitzt; und mindestens einen aktiven Block, in dem jeder aktive Block eine Mehrzahl von physikalischen Seiten aufweist und eine aktive Blockadresse besitzt und jede physikalische Seite einen physikalischen Seiten-Offsetwert besitzt. Jeder virtuelle Block wird auf einen physikalischen Block abgebildet und jeder aktive Block wird auf einen physikalischen Block abgebildet. In den entsprechenden virtuellen und physikalischen Blocks wird jede virtuelle Seite auf jede physikalische Seite abgebildet und in den entsprechenden virtuellen und physikalischen Seiten ist der virtuelle Seiten-Offsetwert gleich groß wie der physikalische Seiten-Offsetwert.
  • Entsprechend dem beanspruchten System umfasst das beanspruchte Verfahren darüber hinaus den Empfang einer Zugangsanfrage, die eine virtuelle Seitennummer aufweist, die eine virtuelle Seite repräsentiert, um einen spezifischen physikalischen Block, entsprechend der virtuellen Seitennummer zu finden und zu ermitteln, ob der spezifische physikalische Block in einen aktiven Block abgebildet wurde.
  • Es ist einer der Vorzüge der vorliegenden Erfindung, dass die physikalische Seite und ihre entsprechende virtuelle Seite nach wie vor den gleichen Offsetwert besitzen. Deshalb besitzt das System nicht nur eine größere Update-Effizienz, sondern verhindert auch, dass zuviel Speicherplatz verwendet wird, während der Suchumfang nicht erhöht wird.
  • Nachfolgend wird die Erfindung weitergehend beispielhaft mit Bezug auf die anliegende Zeichnung erläutert. Darin ist
  • 1 eine Zeichnung, die eine Abbildungstabelle darstellt, die eine Mehrzahl von virtuellen Blocks auf eine Mehrzahl von physikalischen Blocks gemäß dem Stand der Technik abbildet;
  • 2 eine Zeichnung der Abbildungstabelle gemäß dem Stand der Technik;
  • 3 eine Zeichnung, die den Vorgang der Block-Abbildung gemäß dem Stand der Technik darstellt;
  • 4 eine Zeichnung, die darstellt, wie eine physikalische Seite gemäß dem Stand der Technik aktualisiert wird;
  • 5 eine Zeichnung, die ein anderes Verfahren des sequentiellen Schreibens von Daten gemäß dem Stand der Technik darstellt;
  • 6 eine Zeichnung, die einen Flash-Speicher gemäß einer exemplarischen Ausführungsform der vorliegenden Erfindung darstellt;
  • 7 eine Zeichnung, die eine erste Abbildungstabelle gemäß einer exemplarischen Ausführungsform der vorliegenden Erfindung darstellt;
  • 8 eine Zeichnung, die eine zweite Abbildungstabelle gemäß einer exemplarischen Ausführungsform der vorliegenden Erfindung darstellt;
  • 9 eine Zeichnung, die eine dritte Abbildungstabelle gemäß einer exemplarischen Ausführungsform der vorliegenden Erfindung darstellt;
  • 10 ein Ablaufdiagramm des sequentiellen Schreibens von Daten in einen Flash-Speicher entsprechend einer exemplarischen Ausführungsform der vorliegenden Erfindung;
  • 11 eine Zeichnung, die darstellt, wie der physikalische Block und der aktive Block gemischt werden;
  • 12 eine weitere Zeichnung, die darstellt, wie der physikalische Block und der aktive Block gemischt werden;
  • 13 ein Ablaufdiagramm des Lesens von Daten entsprechend einer exemplarischen Ausführungsform der vorliegenden Erfindung; und
  • 14 ein Ablaufdiagramm eines Systems entsprechend einer exemplarischen Ausführungsform der vorliegenden Erfindung.
  • 1 zeigt das Abbilden von virtuellen Blocks 12 auf physikalische Blocks 14 unter Verwendung der Abbildungstabelle 10 gemäß dem Stand der Technik. Wie in 1 gezeigt, besitzt ein Flash-Speicher eine Mehrzahl von physikalischen Blocks 14 (Block 0 bis Block n) und jeder der physikalischen Blocks 14 enthält eine Mehrzahl von physikalischen Seiten 16. Die Basis-Löscheinheit in einem Flash-Speicher ist ein physikalischer Block. Wenn mit anderen Worten der Löschvorgang ausgeführt wird, werden alle Daten, die im physikalischen Block gespeichert sind, gelöscht. Darüber hinaus ist die Basis-Schreibeinheit für einen Flash-Speicher eine physikalische Seite. Mit anderen Worten werden Daten in den Flash-Speicher seitenweise geschrieben.
  • Das FFS des Standes der Technik verwendet eine Blockabbildung, um die virtuellen Blocks auf die physikalischen Blocks abzubilden. Mit anderen Worten ist die Basis-Abbildungseinheit ein Block. Wie in 1 gezeigt, ist die Anzahl der virtuellen Blocks 12 gleich der Anzahl der physikalischen Blocks 14. Jeder der virtuellen Blocks 12 besitzt eine virtuelle Blockadresse und jeder der physikalischen Blocks 14 eine physikalische Blockadresse. 2 ist eine detaillierte Zeichnung der in 1 gezeigten Abbildungstabelle 10. Die Abbildungstabelle 10 besitzt eine Mehrzahl von Abbildungsdaten 18. Jede der Abbildungsdaten 18 speichert eine virtuelle Blockadresse und eine physikalische Blockadresse, um eine Abbildungsbeziehung zwischen einem virtuellen Block 12 und einen physikalischen Block 14 einzurichten. Gemäß 2 wird der virtuelle Block mit der zu 1 entsprechenden virtuellen Blockadresse auf den physikalischen Block mit der zu 81 entsprechenden physikalischen Blockadresse abgebildet. Auf Grund von einigen schlechten Blocks im Flash-Speicher kann die Anzahl von verwendbaren physikalischen Blocks kleiner sein als die Anzahl der virtuellen Blocks. Darüber hinaus muss dafür Sorge getragen werden, ein häufiges Beschreiben und Löschen eines bestimmten Blocks zu vermeiden, was zu einer reduzierten Lebensdauer des bestimmten Blocks führen würde. Daher benötigt die Abbildungstabelle 10 eine Veränderung ihrer gespeicherten Abbildungsbeziehungen zwischen virtuellen Blocks und physikalischen Blocks entsprechend unterschiedlichen Gegebenheiten, um das Ziel zu erreichen, dass die schlechten Blocks nicht verwendet werden und einige bestimmte Blocks nicht zu oft verwendet werden.
  • Wie in 1 gezeigt, besitzt jeder physikalische Block 14 eine Mehrzahl von physikalischen Seiten 16. In gleicher Weise besitzt jeder virtuelle Block 12 eine Mehrzahl von virtuellen Seiten 20. Die Anzahl der physikalischen Seiten 16 in einem physikalischen Block 14 ist gleich der Anzahl der virtuellen Seiten 20 in einem virtuellen Block 12. Darüber hinaus besitzt jede physikalische Seite 16 ihren physikalischen Seiten-Offsetwert und jede virtuelle Seite 20 ihren virtuellen Seiten-Offsetwert. Wenn einer der virtuellen Blocks 12 auf einen der physikalischen Blocks 14 abgebildet wurde, wird jede der virtuellen Seiten 20 in den virtuellen Blocks 12 eine nach der andern auf jede der physikalischen Seiten 16 in den physikalischen Blocks 14 abgebildet, wobei eine virtuelle Seite 20 mit einem spezifischen virtuellen Seiten-Offsetwert auf eine physikalische Seite 16 abgebildet wird, deren physikalischer Seiten-Offsetwert gleich dem spezifischen virtuellen Seiten-Offsetwert ist.
  • 3 zeigt einen Vorgang des Blockschreibens des Standes der Technik. Zum Beispiel wird angenommen, dass jeder physikalische Block 14 zweiunddreißig physikalische Seiten 16 und jeder virtuelle Block 12 zweiunddreißig virtuelle Seiten umfasst. Um die physikalische Seite, die auf die virtuelle Seite abgebildet wurde, deren virtuelle Seitennummer gleich 161 ist, aufzufinden, müssen die folgenden Schritte ausgeführt werden. Zuerst dividiert man die virtuelle Seitennummer 161 durch die Anzahl der Seiten pro Block, die 32 ist, um einen Quotienten A, der gleich 5 und einen Rest B, der gleich 1 ist, zu erhalten. Der Quotient A repräsentiert eine virtuelle Blockadresse und der Rest B einen virtuellen Seiten-Offsetwert. In diesem Fall erhält man die Gleichung: 161 = 5·32 + 1. Auf diese Weise wird die Adresse eines virtuellen Blocks, der die gesuchte Seite enthält, zuerst ermittelt. In diesem Fall beträgt die virtuelle Blockadresse gleich 5. Die Abbildungstabelle 10 wird danach verwendet, um den physikalischen Block, dessen physikalische Blockadresse auf den virtuellen Block mit einer virtuellen Blockadresse gleich 5 abgebildet wurde, zu lokalisieren. Folglich wird der physikalische Block mit der physikalischen Blockadresse gleich drei gefunden. Danach verwendet man den virtuellen Seiten-Offsetwert, der in diesem Fall 1 beträgt, um den physikalischen Block für die physikalische Seite zu suchen, die einen physikalischen Seiten-Offsetwert, der ebenfalls gleich eins ist, aufweist.
  • Da die Abbildungstabelle nur die Beziehungen zwischen den virtuellen Blocks und den physikalischen Blocks enthält, benötigt man keinen großen Speicherplatz. Jedoch erfordert die neue Generation von Flash-Speicher ein sequenzielles Schreiben von Daten und an dieser Stelle verursacht die Verwendung des oben genannten Abbildungsverfahrens ein Problem einer niedrigen Aktualisierungseffizienz.
  • Ein sequenzielles Schreiben von Daten bedeutet, dass in einem spezifischen physikalischen Block physikalische Seiten mit einem kleineren physikalischen Seiten-Offsetwert vor denen geschrieben werden müssen, die einen größeren physikalischen Seiten-Offsetwert aufweisen. Mit anderen Worten muss, bevor Daten in den physikalischen Block mit einem Offsetwert gleich n geschrieben werden, zuerst überprüft werden, ob Daten auf irgendeiner der physikalischen Seiten mit einem Offsetwert größer gleich n geschrieben wurden. Wenn es gespeicherte Daten auf irgendeiner der physikalischen Seiten mit Offsetwerten größer als n gibt, bedeutet dies, dass der physikalische Block bereits mit Daten in der/den physikalischen Seite(n) mit Offsetwert(en) größer als n beschrieben wurde. Wenn Daten weiterhin auf die physikalische Seite mit einem Offsetwert gleich n geschrieben werden, wird die Vorschrift für die neue Generation von Flash-Speicher, die Daten sequentiell zu schreiben, verletzt. Dies deshalb, weil ein sequenzielles Schreiben von Daten auf eine nachfolgende physikalische Seite erfordert, dass deren physikalischer Seiten-Offsetwert größer, als der irgendeiner anderen zuvor beschriebenen physikalischen Seite sein muss.
  • Wenn in diesem Szenario, vor dem Schreiben von Daten auf die physikalische Seite mit einem physikalischen Seiten-Offsetwert gleich n, entdeckt wird, dass es schon eine andere physikalische Seite gibt, deren physikalischer Seiten-Offsetwert größer als n ist, die bereits mit Daten beschrieben wurde, muss ein neuer physikalischer Block lokalisiert werden. Nach Lokalisierung des neuen physikalischen Blocks muss das Datensystem Daten sequentiell von den ursprünglichen physikalischen Seiten mit physikalischem Seiten-Offsetwert kleiner als n in diesen physikalischen Block kopieren und dann die Daten auf neue physikalische Seiten mit physikalischen Seiten-Offsetwerten kleiner als n im neuen physikalischen Block schreiben und danach Daten auf die neue physikalische Seite mit einem physikalischen Seiten-Offsetwert gleich n in den neuen physikalischen Block schreiben und schließlich Daten von den ursprünglichen physikalischen Seiten mit einem physikalischen Seiten-Offsetwert größer als n in diesen physikalischen Block sequentiell kopieren und die Daten auf neue physikalische Seiten mit einem physikalischen Seiten-Offsetwert größer als n im neuen physikalischen Block schreiben. Somit wird die Anforderung des sequentiellen Schreibens von Daten erfüllt. Um im genannten Szenario Daten einer physikalischen Seite in einem physikalischen Block zu aktualisieren, muss das System eine große Datenmenge bewegen und ein Löschen von Daten ausführen, was das Problem der niedrigen Aktualisierungseffizienz und einen Anstieg von schlechten Blocks im Flash-Speicher verursacht.
  • 4 zeigt, wie eine physikalische Seite gemäß dem Stand der Technik zu aktualisieren ist. Es wird angenommen, dass das System Daten auf die physikalische Seite, deren physikalischer Seiten-Offsetwert 3 (Seite 3 oder die vierte Seite) beträgt, schreiben will. Selbst wenn die vierte Seite leer ist (niemals zuvor beschrieben wurde), wird ein Schreiben von Daten auf die vierte Seite verhindert, weil die physikalischen Seiten mit höheren physikalischen Seiten-Offsetwerten schon beschrieben wurden. Daher wird ein Schreiben von Daten auf die vierte Seite nicht die Vorschrift des sequentiellen Schreibens von Daten erfüllen. Das System muss das FFS anfragen, um einen neuen physikalischen Block bereitzustellen und dann alle Daten, die auf den Seiten vor der vierten Seite gespeichert sind, in den neuen physikalischen Block (der erste Schritt) kopieren, dann die Daten auf die vierte Seite des neuen Blocks (der zweite Schritt) schreiben, dann alle Daten, die auf den Seiten nach der vierten Seite gespeichert sind, kopieren (dritter Schritt), dann alle Seiten im ursprünglichen physikalischen Block löschen (der vierte Schritt) und schließlich die Abbildungstabelle aktualisieren, um den virtuellen Block in den neuen physikalischen Block abzubilden (der fünfte Schritt). Nach Beendigung der oben genannten fünf Schritte ist der gesamte Aktualisierungsprozess beendet. Demgemäß müssen, um eine physikalische Seite zu aktualisieren, alle auf den Seiten eines physikalischen Blocks gespeicherten Daten auf die Seiten in einem anderen, neuen physikalischen Block kopiert werden. Mit anderen Worten muss, jedesmal wenn die Datenaktualisierung ausgeführt wird, das System den Kopier- und Löschvorgang ausführen, was die Aktualisierungseffizienz vermindert und die Anzahl von schlechten Blocks im Flash-Speicher erhöhen könnte.
  • Um die oben genannten Probleme, wie von M-Systems INC. und anderen im US-Patent Nr. 6,678,785 angezeigt, zu lösen, wird ein Verfahren, Daten sequentiell in einen Flash-Speicher zu schreiben, eingeführt. 5 zeigt ein weiteres Verfahren des Standes der Technik des sequentiellen Schreibens von Daten in einen Flash-Speicher. Wenn das System die physikalische Seite, deren physikalischer Seiten-Offsetwert 3 (die vierte Seite) in einem physikalischen Block ist, aktualisieren will, gleichgültig, ob die vierte Seite leer ist, oder nicht und die physikalischen Seiten, nach der vierten Seite, leer sind, oder nicht, wird das System von der ersten Seite an suchen, um zu beurteilen, ob es irgendeine leere physikalische Seite im physikalischen Block gibt. Wenn es irgendeine leere physikalische Seite im physikalischen Block gibt, schreibt das System Daten in die erste gefundene leere physikalische Seite. Wenn es keine gibt, wird das System das FFS einen neuen physikalischen Block anfragen und Daten in die erste physikalische Seite im neuen physikalischen Block schreiben. Mit anderen Worten besitzt, außer wenn die vierte Seite zufällig die erste gefundene leere physikalische Seite ist, ganz gleich, ob auf die leere Seite des ursprünglichen physikalischen Blocks oder die erste Seite des neuen gefundenen physikalischen Blocks geschrieben wird, der physikalische Seiten-Offsetwert der die Daten speichernden physikalischen Seite nicht den gleichen Wert, wie der virtuelle Seiten-Offsetwert der abgebildeten virtuellen Seite. Das heißt, dass die physikalische Seite und die virtuelle Seite nicht mehr die festgelegte Offsetbeziehung besitzen.
  • Daher wird ein virtueller Block auf mindestens einen physikalischen Block abgebildet, woraus eine Abbildungsbeziehung von einer-auf-mehrere zwischen physikalischen Seiten und virtuellen Seiten entsteht. Diese Abbildungsbeziehung wird bestehen bleiben, bis es keinen leeren physikalischen Block im System mehr gibt, oder wird in eine eins-zu-eins-Beziehung verdichtet, sobald ein virtueller Block auf zu viele physikalische Blocks abgebildet wurde.
  • Da das oben genannte Verfahren des Standes der Technik ein direktes Schreiben von Daten in die leere physikalische Seite bedingt, muss es keine Daten kopieren und löschen, somit werden Daten nicht nur sequentiell geschrieben, sondern auch die Aktualisierungseffizienz verbessert. Darüberhinaus werden die Zeiten des Löschens von Daten in den Blocks des Flash-Speichers entsprechend reduziert. Wenn jedoch das System eine physikalische Seite auffinden will, so verwendet es die Abbildungstabelle, um den abgebildeten physikalischen Block aufzufinden und muss dann alle physikalischen Seiten im physikalischen Block nacheinander durchsuchen, bis es die gewünschte physikalische Seite findet. Dies geschieht deshalb, weil die virtuelle Seite und die physikalische Seite nicht den gleichen Offsetwert aufweisen. Die Leseeffizienz wird in hohem Maße verschlechtert. Um das Suchen einer Seite nach der anderen zu vermeiden, muss ein zusätzlicher Datensatzbereich der Abbildungstabelle erzeugt werden. Mit anderen Worten muss die Beziehung zwischen der physikalischen Seite und virtuellen Seite in der Abbildungstabelle angelegt werden. Da die Anzahl der physikalischen Seiten (oder virtuellen Seiten) viel größer ist, als die Anzahl der physikalischen Blocks (oder virtuellen Blocks), wird ein großer Platz für die Abbildungstabelle benötigt. Zusätzlich erhöht die aufgezeichnete Abbildungsbeziehung zwischen physikalischen Seiten und virtuellen Seiten den Suchaufwand. Mit anderen Worten beeinträchtigt das von M-System INC. offengelegte Verfahren des Standes der Technik die Leseeffizienz, benötigt einen großen Betrag an Speicherplatz und erhöht den Suchaufwand.
  • 6 zeigt einen Flash-Speicher 30 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Der Flash-Speicher 30 besitzt eine Mehrzahl von physikalischen Blocks 32 und eine spezifische Anzahl von aktiven Blocks 34. Jeder aktive Block 34 entspricht einem einzelnen physikalischen Block 32. In dieser Ausführungsform wird jeder virtuelle Block (in 6 nicht gezeigt) nur auf einen physikalischen Block abgebildet. Zusätzlich besitzt in dieser Ausführungsform der Flash-Speicher 30 nur einen aktiven Block 34, sodass der aktive Block 34 auf einen der physikalischen Blocks 32 abgebildet wird.
  • In jedem der physikalischen Blocks 32, muss jede physikalische Seite 36 und ihre abgebildete virtuelle Seite (in 6 nicht gezeigt) den gleichen Offsetwert besitzen. Mit anderen Worten besitzt jede physikalische Seite in irgendeinem physikalischen Block die gleiche Offsetbeziehung mit der virtuellen Seite im abgebildeten virtuellen Block. Jedoch muss die physikalische Seite 38 im aktiven Block 34 nicht den gleichen Offsetwert wie die abgebildete virtuelle Seite aufweisen. Es sei vermerkt, dass beide, der physikalische Block 32 und aktive Block 34, die Vorschrift des sequentiellen Schreibens einhalten. Mit anderen Worten muss der Offsetwert der aktuell geschriebenen physikalischen Seite größer sein, als die Offsetwerte aller zuvor geschriebenen physikalischen Seiten. In dieser Ausführung muss das Schreiben von Daten auf irgendeine physikalische Seite 36 in einem der physikalischen Blocks 32 zwei Vorschriften einhalten: erstens, muss der Offsetwert der für die Datenaufzeichnung verwendeten physikalischen Seite gleich dem Offsetwert der abgebildeten virtuellen Seite sein; zweitens, der Offsetwert der aktuell geschriebenen physikalischen Seite muss größer als die Offsetwerte aller zuvor geschriebenen physikalischen Seiten sein. Das Schreiben von Daten in den aktiven Block 34 muss nur eine Vorschrift (die Vorschrift des sequentiellen Schreibens von Daten) einhalten: der Offsetwert der für die Datenaufzeichnung aktuell geschriebenen physikalischen Seite muss größer als die Offsetwerte aller zuvor geschriebenen physikalischen Seiten sein.
  • 7 zeigt eine erste Abbildungstabelle 40 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Die erste Abbildungstabelle 40 wird verwendet, um die Abbildungsbeziehung zwischen den physikalischen Blocks 32 und den virtuellen Blocks aufzuzeichnen. Wie in 7 gezeigt, besitzt die erste Abbildungstabelle 40 eine Mehrzahl von Abbildungsdaten 42. Jede der Abbildungsdaten 42 speichert eine virtuelle Blockadresse und eine physikalische Blockadresse, um die Abbildungsbeziehung zwischen dem virtuellen Block und dem physikalischen Block darzustellen. Darüber hinaus wird ein virtueller Block höchstens auf einen physikalischen Block abgebildet.
  • 8 zeigt eine zweite Abbildungstabelle 50 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Die zweite Abbildungstabelle 50 wird verwendet, um die Abbildungsbeziehung zwischen den physikalischen Blocks 32 und den virtuellen Blocks aufzuzeichnen. Der zweiten Abbildungstabelle ist gestattet, eine Mehrzahl von Abbildungsdaten 52 zu enthalten. Jede der Abbildungsdaten 52 speichert eine physikalische Blockadresse und eine aktive Blockadresse. In dieser Ausführungsform besitzt der Flash-Speicher lediglich einen aktiven Block, somit besitzt die in 8 gezeigte Abbildungstabelle 50 nur eine der Abbildungsdaten 52, um darzustellen, auf welchen physikalischen Block der aktive Block abgebildet wurde.
  • 9 zeigt eine dritte Abbildungstabelle 60 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Die dritte Abbildungstabelle 60 wird verwendet, um die Abbildungsbeziehung zwischen den virtuellen Seiten und den physikalischen Seiten des aktiven Blocks 34 aufzuzeichnen. Die dritte Abbildungstabelle 60 besitzt eine Mehrzahl von Abbildungsdaten 62. Jede der Abbildungsdaten 62 besitzt einen virtuellen Seiten-Offsetwert und einen physikalischen Seiten-Offsetwert im aktiven Block 34, um die Beziehung zwischen der virtuellen Seite und der physikalischen Seite des aktiven Blocks 34 darzustellen. Wie oben bereits erwähnt, muss jede physikalische Seite 38 im aktiven Block 34 und ihre entsprechende virtuelle Seite nicht den gleichen Offsetwert besitzen. Daher wird die dritte Abbildungstabelle 60 benötigt, um die Abbildungsbeziehung zwischen den virtuellen Seiten und den physikalischen Seiten des aktiven Blocks 34 aufzuzeichnen. Weil die dritte Abbildungstabelle 60 nur die Beziehung zwischen virtuellen und physikalischen Seiten im aktiven Block 34 aufzeichnet, wird der Speicherplatz der dritten Abbildungstabelle 60 durch die Anzahl der aktiven Blocks 34 und die Anzahl von physikalischen Seiten in jedem der aktiven Blocks 34 bestimmt. Je größer die Anzahl der aktiven Blocks ist, desto mehr Speicherplatz wird benötigt. In dieser Ausführungsform wird nur ein aktiver Block 34 verwendet, sodass die dritte Abbildungstabelle 60 keinen großen Speicherplatz belegt.
  • 10 zeigt ein Ablaufdiagramm eines Verfahrens 70 zum sequentiellen Schreiben von Daten in den Flash-Speicher 30, gemäß einer exemplarischen Ausführungsform der vorliegenden Erfindung. Zuerst empfängt das FFS die Schreibanfrage vom Ober-System, wie z. B. dem FAT (Schritt 72). Diese Schreibanfrage besitzt eine virtuelle Seitennummer. Entsprechend der virtuellen Seitennummer ist das FFS in der Lage, den entsprechenden physikalischen Block (Schritt 74) zu finden. Wie oben erwähnt, teilt das FFS die virtuelle Seitennummer durch die Seitenanzahl pro Block, um eine virtuelle Blockadresse zu erhalten und verwendet dann die erste Abbildungstabelle 40, um den entsprechenden physikalischen Block zu identifizieren.
  • Dann verwendet das FFS die zweite Abbildungstabelle 50, um zu urteilen, ob der physikalische Block einem aktiven Block entspricht. Ist dies der Fall, wird Schritt 78 ausgeführt; andernfalls wird Schritt 80 ausgeführt. Im Schritt 78 sucht das FFS Seite für Seite ab der ersten physikalischen Seite, um zu beurteilen, ob der entsprechende aktive Block eine leere physikalische Seite besitzt. Wenn dies der Fall ist, wird Schritt 82 ausgeführt; andernfalls wird Schritt 84 ausgeführt. Im Schritt 82 schreibt das FFS Daten auf die erste gefundene leere physikalische Seite des entsprechenden aktiven Blocks. Da das FFS Seite für Seite, ab der ersten physikalischen Seite sucht, ist der erste gefundene leere physikalische Seiten-Offsetwert sicher größer, als irgendein existierender nicht-leerer physikalischer Seiten-Offsetwert, sodass dies der Vorschrift des sequentiellen Schreibens entspricht.
  • Darüberhinaus kann die vorliegende Erfindung einen Adressenverweis durchführen, um auf eine physikalische Adresse, die der neuen geschriebenen physikalischen Seite folgt, hin zu deuten. Das heißt, dass der Adressenverweis verwendet wird, um auf eine erste gefundene leere physikalische Seite hin zu deuten. So muss das FFS nicht Seite für Seite aus den physikalischen Seiten im aktiven Block durchsuchen und verwendet stattdessen sofort den Adressenverweis, um die erste leere physikalische Seite aufzufinden.
  • Entsprechend dem virtuellen Seiten-Offsetwert, der der Rest der Division der virtuellen Seitennummer durch die Anzahl der Seiten pro Block ist, beurteilt im Schritt 80 das FFS, ob die physikalische Seite, die den gleichen Offsetwert mit der virtuellen Seite aufweist, eine leere physikalische Seite ist und ob der Offsetwert dieser leeren physikalischen Seite größer als der Offsetwert irgend einer anderen nicht-leeren physikalischen Seite ist. Wenn die Ergebnisse der zwei Entscheidungen beide ja lauten, wird Schritt 86 ausgeführt; ansonsten wird Schritt 88 ausgeführt. Im Schritt 86 schreibt das FFS Daten auf die physikalische Seite, die den gleichen Offsetwert wie die virtuelle Seite besitzt.
  • Da im Schritt 84 der entsprechende aktive Block keine leere physikalische Seite besitzt, mischt das FFS den physikalischen Block und seinen entsprechenden aktiven Block zusammen, um einen neuen physikalischen Block zu erzeugen und dann modifiziert das FFS die erste Abbildungstabelle 40, um den neu erzeugten physikalischen Block auf den virtuellen Block abzubilden.
  • Beim Vorgang des Blockmischens kann das FFS gleichzeitig Daten auf die physikalische Seite des neu erzeugten physikalischen Blocks schreiben, wobei diese physikalische Seite auf die virtuelle Seite abgebildet wird. Das FFS kann auch ausgelegt werden, um darüberhinaus einen neuen leeren aktiven Block zu erzeugen und den neuen aktiven Block auf den neuen physikalischen Block abzubilden. Dann schreibt das FFS Daten auf die erste Seite des neuen aktiven Blocks (Schritt 90). Es sei vermerkt, dass, wenn es nach wie vor erwünscht ist, hinterher Daten in den physikalischen Block zu schreiben, wird das FFS Daten in den entsprechenden aktiven Block schreiben, der auf den physikalischen Block abgebildet wurde.
  • Im Schritt 88 weist der physikalische Block (auch der physikalische Ziel-Block genannt) nicht den entsprechenden aktiven Block auf und das FFS kann Daten nicht in diesen physikalischen Ziel-Block schreiben. Um Daten in den physikalischen Ziel-Block zu schreiben, mischt das FFS zuerst den aktiven Block und seinen entsprechenden physikalischen Block (auch abgebildeter physikalische Block genannt) zusammen, um einen neuen physikalischen Block zu erzeugen. Und dann modifiziert das FFS die erste Abbildungstabelle 40, um den neuen physikalischen Block auf den virtuellen Block abzubilden, wobei der virtuelle Block auf diesen abgebildeten physikalischen Block abgebildet wird.
  • Dann erzeugt das FFS einen neuen leeren aktiven Block der auf den physikalischen Ziel-Block abgebildet wird. So kann das FFS Daten in den auf den physikalischen Ziel-Block abgebildeten aktiven Block schreiben, um so den Daten-Schreibvorgang (Schritt 92) abzuschließen. Wenn es nach wie vor erwünscht ist, danach Daten in den physikalischen Ziel-Block zu schreiben, wird das FFS Daten in den entsprechenden aktiven Block schreiben, der auf den physikalischen Ziel-Block abgebildet wurde.
  • Das Verfahren 70 der vorliegenden Erfindung beurteilt zuerst, ob der physikalische Block einen entsprechenden aktiven Block besitzt. Wenn nicht, überprüft das FFS, ob Daten in den physikalischen Block unter den Voraussetzungen, dass dieser eine festgelegte Offset-Beziehung aufweist und die Vorschrift des sequentiellen Schreibens erfüllt, geschrieben werden können. Wenn mit anderen Worten der physikalische Block einen entsprechenden aktiven Block besitzt, schreibt das FFS keine Daten in den physikalischen Block, sondern schreibt Daten in den aktiven Block. Wenn der aktive Block keine leere physikalische Seite besitzt, mischt das FFS den ursprünglichen physikalischen Block und seinen entsprechenden aktiven Block, um einen neuen physikalischen Block zu erzeugen. Dies führt dazu, dass etwas Speicherplatz freigegeben wird und der freigegebene Speicherplatz wird verwendet, um einen neuen aktiven Block zu erstellen. Letztendlich schreibt das FFS Daten in den neuen aktiven Block.
  • Es sei vermerkt, dass das Verfahren 70 von 10 lediglich eine der bevorzugten Ausführungsformen der vorliegenden Erfindung ist. Das FFS kann auch zuerst beurteilen, ob es Daten in den physikalischen Block, unter den Voraussetzungen, dass dieser eine festgelegte Offset-Beziehung aufweist und die Vorschrift des sequentiellen Schreibens erfüllt, schreiben kann. Wenn die Antwort ja ist, dann schreibt das FFS Daten in den physikalischen Block. Wenn die Antwort nein ist, dann beurteilt das FFS, ob der physikalische Block einen entsprechenden aktiven Block aufweist. Wenn der physikalische Block einen entsprechenden aktiven Block aufweist, dann beurteilt das FFS, ob dort irgendeine leere physikalische Seite im aktiven Block existiert. Wenn dort vorhanden, schreibt das FFS Daten in den aktiven Block; ansonsten mischt das FFS den physikalischen Block und den aktiven Block, um einen neuen aktiven Block zu erzeugen. Mit anderen Worten kann das FFS der vorliegenden Erfindung auch ausgelegt werden, um zuerst zu prüfen, ob Daten auf die physikalische Seite geschrieben werden können, ungeachtet ob der physikalische Block einen entsprechenden virtuellen Block besitzt.
  • Weil in dieser Ausführungsform der Flash-Speicher nur einen aktiven Block besitzt, muss das FFS nur die zweite Abbildungstabelle 50 verwenden, um den physikalischen Block zu finden, der diesem aktiven Block entspricht und mischt dann den physikalischen Block und seinen entsprechenden aktiven Block. Es sei vermerkt, dass, wenn der Flash-Speicher mehr als einen aktiven Block besitzt, das FFS einen daraus auswählen muss, um das Blockmischen auszuführen. Das FFS kann einen aktiven Block aus den aktiven Block-Kandidaten gemäß der Anzahl von nicht-leeren physikalischen Seiten, die jeder aktive Block aufweist, auswählen. Zum Beispiel kann das FFS den am meisten gefüllten aktiven Block (mit der größeren Anzahl von nicht-leeren physikalischen Seiten) auswählen, um ihn mit seinem entsprechenden physikalischen Block zu mischen. Alternativ dazu kann das FFS auch einen aktiven Block zufällig auswählen, um ihn mit seinem entsprechenden physikalischen Block zu mischen.
  • Es sei vermerkt, dass zu Beginn der aktive Block im Flash-Speicher so eingestellt werden kann, dass er auf einen spezifischen physikalischen Block (auch der abgebildete physikalische Block genannt) abgebildet wird. Dann verwendet im Schritt 88 das FFS die zweite Abbildungstabelle 50, um den entsprechenden physikalischen Block zum Blockmischen aufzufinden. Natürlich kann der aktive Block im Flash-Speicher auch eingestellt werden, dass er sich zu Beginn in einem leeren Modus befindet, der nicht auf irgendeinen physikalischen Block abgebildet wird. Zusätzlich ist der freie aktive Block ein leerer aktiver Block. So kann im Schritt 88 das FFS überprüfen, ob irgendein freier aktiver Block existiert. Wenn die Antwort nein ist, verwendet das FFS die zweite Abbildungstabelle 50, um den abgebildeten physikalischen Block zu suchen, um das Blockmischen auszuführen; ansonsten bildet das FFS den freien aktiven Block direkt auf den physikalischen Ziel-Block ab.
  • Darüberhinaus ist es für den Flash-Speicher zulässig, mehr als einen aktiven Block zu besitzen und die Beziehung zwischen dem aktiven Block und dem physikalischen Block kann ausgelegt werden, dass ein physikalischer Block auf mehr als einen aktiven Block abgebildet wird. Wenn der Flash-Speicher nur einen aktiven Block besitzt und ein physikalischer Block auf einen entsprechenden aktiven Block abgebildet wird, muss das FFS den physikalischen Block und den aktiven Block mischen, um einen neuen physikalischen Block zu erzeugen, wenn es keine leere physikalische Seite im aktiven Block gibt oder andere physikalische Blocks den aktiven Block benötigen.
  • 11 zeigt eine schematische Darstellung, wie der physikalische Block 32 und der aktive Block 34 gemischt werden. Das in 11 gezeigte Misch-Verfahren ist für eine Situation geeignet, bei der die Offsetwerte der physikalischen Seiten im aktiven Block die gleichen sind, wie die Offsetwerte der virtuellen Seiten. Mit anderen Worten besitzen die physikalischen Seiten im aktiven Block 34 eine festgelegte Offsetbeziehung gegenüber den virtuellen Seiten. In dieser Situation muss das FFS lediglich im alten physikalischen Block (der oben genannte physikalische Ziel-Block) gespeicherte gültige Daten in den aktiven Block kopieren, um den aktiven Block in einen neuen physikalischen Block zu transformieren und dann Daten im alten physikalischen Block löschen. Wenn mit anderen Worten die Datenaktualisierung im aktiven Block 34 die gleiche Offset-Vorschrift (z. B. die physikalische Seite und die virtuelle Seite besitzen den gleichen Offsetwert) befolgt, dann braucht das FFS lediglich alle im alten physikalischen Block gespeicherten Daten in den aktiven Block zu kopieren, um den aktiven Block in den neuen physikalischen Block zu transformieren und alle Daten im alten physikalischen Block zu löschen. Zu diesem Zeitpunkt modifiziert das FFS die erste Abbildungstabelle 40, um den neuen physikalischen Block auf den virtuellen Block abzubilden, auf dem der alte physikalische Block abgebildet wurde.
  • 12 zeigt eine weitere schematische Darstellung, wie der physikalische Block 32 und der aktive Block 34 gemischt werden. Das in 12 gezeigte Misch-Verfahren ist für eine Situation geeignet, bei der die Offsetwerte der physikalischen Seiten im aktiven Block 34 nicht die gleichen sind, wie die Offsetwerte der virtuellen Seiten. Mit anderen Worten besitzen die physikalischen Seiten im aktiven Block 34 keine festgelegte Offsetbeziehung gegenüber den virtuellen Seiten. Bei dieser Gegebenheit des Blockmischens, fordert das FFS zuerst einen neuen physikalischen Block an und schreibt dann im alten physikalischen Block und aktiven Block gespeicherte Daten entsprechend der festgelegten Offsetbeziehung und Vorschriften des sequentiellen Schreibens in den neuen physikalischen Block. Dann löscht das FFS alle Daten im alten physikalischen Block und aktiven Block. Weil die Daten im aktiven Block nicht die festgelegte Offsetvorschrift einhalten, muss das FFS einen neuen physikalischen Block zum Ausführen des Blockmischens anfordern und kopiert dann die Daten eins zu eins vom alten physikalischen Block und dem aktiven Block in den neuen physikalischen Block. Abschließend löscht das FFS alle im alten physikalischen Block und aktiven Block gespeicherten Daten, um das Blockmischen abzuschließen. Dabei modifiziert das FFS die erste Abbildungstabelle 40, um den neuen physikalischen Block auf den virtuellen Block abzubilden, auf den der alte physikalische Block abgebildet wurde.
  • 13 zeigt ein Ablaufdiagramm des Lesens von Daten aus einem Flash-Speicher gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Im Schritt 100 empfängt das FFS eine Leseanfrage vom Ober-System, wie z. B. dem FAT. Diese Leseanfrage besitzt eine virtuelle Seitennummer. Entsprechend der virtuellen Seitennummer ist das FFS in der Lage, den entsprechenden physikalischen Block (Schritt 102) zu lokalisieren. Mit anderen Worten dividiert das FFS die virtuelle Seitennummer durch die Seitenanzahl pro Block, um eine virtuelle Blockadresse zu ermitteln und verwendet dann die erste Abbildungstabelle 40, um den entsprechenden physikalischen Block zu identifizieren.
  • Dann verwendet das FFS die zweite Abbildungstabelle 50, um zu beurteilen, ob der physikalische Block einen entsprechenden aktiven Block (Schritt 104) besitzt. Wenn vorhanden, wird Schritt 106 ausgeführt; ansonsten wird Schritt 108 ausgeführt.
  • Im Schritt 106 sucht das FFS die benötigte physikalische Seite entsprechend der dritten Abbildungstabelle 60. In dieser Ausführungsform besitzt das System die dritte Abbildungstabelle 60, um die Abbildungsbeziehung zwischen virtuellen Seiten und den physikalischen Seiten des aktiven Blocks zu speichern, sodass, wenn Daten gelesen werden, das FFS die benötigte physikalische Seite mithilfe der dritten Abbildungstabelle 60 schnell auffinden kann. Wie jedoch dem Durchschnittsfachmann bekannt, kann das System auch ausgelegt werden, um ohne Anwendung der dritten Abbildungstabelle 60 zu arbeiten. Bei dieser Anordnungsart wird Speicherplatz eingespart, aber die Leseeffizienz reduziert, weil das FFS Seite für Seite, ab der ersten physikalischen Seite finden muss, um die benötigte physikalische Seite zu suchen, wenn die dritte Abbildungstabelle 60 nicht existiert. Wenn das FFS die benötigte physikalische Seite finden kann, führt es den Schritt 110 aus; ansonsten führt es den Schritt 108 aus. Im Schritt 110 findet das FFS die physikalische Seite (im aktiven Block) und liest dann darin Daten, um den Lesevorgang abzuschließen.
  • Im Schritt 108 findet das FFS eine physikalische Seite im physikalischen Block, die den gleichen Offsetwert gegenüber der virtuellen Seite gemäß dem virtuellen Seiten-Offsetwert besitzt. Wenn das FFS die physikalische Seite finden kann, dann führt es den Schritt 112 aus. Im Schritt 112 liest das FFS Daten von der physikalischen Seite im physikalischen Block. Im Schritt 114 schickt das FFS eine Lese-Fehlermeldung an das Ober-System zurück.
  • Das oben genannte Ablaufdiagramm kann auch ausgelegt werden, um zuerst den virtuellen Seiten-Offsetwert zu verwenden, um die physikalische Seite im physikalischen Block zu suchen, die den gleichen Offsetwert wie die virtuelle Seite aufweist, ganz gleich, ob ein physikalischer Block einen entsprechenden aktiven Block aufweist, oder nicht. Wenn das FFS scheitert, eine physikalische Seite zu finden, dann beurteilt das FFS weiter, ob der physikalische Block einem aktiven Block entspricht. Wenn dies der Fall ist, dann sucht das FFS die physikalische Seite im aktiven Block entsprechend der dritten Abbildungstabelle 60 oder dem sequentiellen Such-Verfahren. Wenn es keinen entsprechenden aktiven Block gibt, schickt das FFS ebenfalls einen Lesefehler an das Ober-System zurück.
  • Im Flash-Speicher der vorliegenden Erfindung kann die Anzahl von aktiven Blocks frei festgelegt werden. Um eine bessere Leseeffizienz zu erhalten, kann der Flash-Speicher ausgelegt werden, nur wenige aktive Blocks aufzuweisen. Daher gibt es zumeist physikalische Blocks im Flash-Speicher und Daten werden entsprechend der festgelegten Offset-Vorschrift in physikalischen Blocks gespeichert. Nachdem das FFS den abgebildeten physikalischen Block ermittelt, kann es sofort den physikalischen Block für eine physikalische Seite mit dem gleichen Offsetwert suchen. Das FFS kann Daten von der gefundenen physikalischen Seite abrufen, ohne nach der ersten physikalischen Seite zu suchen. Nicht nur der Leseaufwand wird reduziert, sondern auch der benötigte Speicherplatz. Nur wenn der physikalische Block einen entsprechenden aktiven Block besitzt, muss das FFS Seite für Seite im aktiven Block suchen. Wenn es jedoch nicht viele aktive Blocks gibt, beeinflusst dies die Leseeffizienz nicht außerordentlich. Zusätzlich wird durch die Art und Weise der dritten Abbildungstabelle die Leseeffizienz verbessert. Obwohl die dritte Abbildungstabelle Speicherplatz verbraucht, verbraucht sie nicht zuviel Speicherplatz, da die Anzahl der aktiven Blocks nicht groß ist. Kurz gesagt, je größer die Anzahl der aktiven Blocks ist, desto mehr Speicherplatz wird benötigt, aber eine desto größere Leseeffizienz erhalten. Folglich kann der System-Designer die Anzahl der aktiven Blocks entsprechend unterschiedlichen Systemanforderungen anlegen.
  • 14 ist ein Schaubild, das ein System 200 darstellt, das zur Ausführung des oben genannten Verfahrens verwendet wird. Das Empfangsmodul 202 wird verwendet, um die Schritte 72 und 100 zu verarbeiten. Das Suchmodul für den physikalischen Block 204 wird verwendet, um die Schritte 74 und 102 zu verarbeiten. Das Entscheidungsmodul 206 wird verwendet, um die Schritte 76 und 104 zu verarbeiten. Das Suchmodul 208 wird verwendet, um Schritt 78 zu verarbeiten. Das Suchmodul für die physikalische Seite 209 wird verwendet, um Schritt 106 zu verarbeiten. Der Offsetwert-Suchmodul 210 wird verwendet, um die Schritte 80, 108 und 114 zu verarbeiten. Das Abfragemodul 212 wird verwendet, um abzufragen, ob es einen freien aktiven Block im Flash-Speicher 30 gibt. Das Wahlmodul 214 wird verwendet, um einen aktiven Block aus einer Mehrzahl von aktiven Blocks auszuwählen. Das Abbildungsmodul 215 wird verwendet, um den vom Abfragemodul 215 ermittelten freien aktiven Block auf einen physikalischen Block abzubilden. Das Mischmodul 216 wird verwendet, um die Schritte 84 und 88 zu verarbeiten. Das Erzeugungsmodul für einen aktiven Block 218 wird verwendet, um einen neuen aktiven Block zu erzeugen. Der Lesemodul 220 wird verwendet um die Schritte 110 und 112 zu verarbeiten. Das Schreibmodul 22 wird verwendet, um die Schritte 82, 86, 90 und 92 zu verarbeiten. Da der Arbeitsablauf des Verfahrens der vorliegenden Erfindung oben klar beschrieben wurde, wird der Kürze wegen eine weitere Beschreibung des Arbeitsablaufs der zugehörigen, in 14 gezeigten Systemkomponenten weggelassen.
  • Wie oben erwähnt, muss das FFS bei Verwendung des Verfahrens der vorliegenden Erfindung zum Aktualisieren und Lesen von Daten eines Flash-Speichers nicht viele Daten bewegen und den Löschvorgang mithilfe des aktiven Blocks zu oft ausführen, wenn das System eine physikalische Seite aktualisiert, sodass es eine bessere Aktualisierungseffizienz aufweisen kann. Und da die Anzahl der aktiven Blocks nicht zu groß ist, wird nur ein kleiner Teil des Speicherplatzes verwendet, um die Datenbelegung im aktiven Block aufzuzeichnen. Daher wird nicht nur die Leseeffizienz bedeutend verbessert, sondern auch das Suchen von Daten und das Datenmanagement vereinfacht.
  • Der Systemdesigner kann verschiedene Levels der Daten-Aktualisierungseffizienz durch Einrichten einer unterschiedlichen Anzahl von eingeschlossenen aktiven Blocks konfigurieren. Je mehr aktive Blocks, desto, höher ist die Daten-Aktualisierungseffizienz. Jedoch selbst wenn nur ein aktiver Block existiert, ist die Daten-Aktualisierungseffizienz besser, als beim Stand der Technik.

Claims (20)

  1. System (200), das imstande ist, Daten sequentiell in einen Flash-Speicher (30) zu schreiben, wobei das System (200) aufweist: mindestens einen virtuellen Block, wobei jeder virtuelle Block eine Mehrzahl von virtuellen Seiten und eine virtuelle Blockadresse aufweist, wobei jede virtuelle Seite einen virtuellen Seiten-Offsetwert besitzt; mindestens einen physikalischen Block im Flash-Speicher (30), wobei jeder physikalische Block eine Mehrzahl von physikalischen Seiten und eine physikalische Blockadresse aufweist, wobei jede physikalische Seite im physikalischen Block einen physikalischen Seiten-Offsetwert besitzt; wobei jeder virtuelle Block auf einen physikalischen Block abgebildet ist und in den virtuellen Blocks jede virtuelle Seite auf eine physikalische Seite in dem entsprechenden physikalischen Block abgebildet ist und der virtuelle Seiten-Offsetwert gleich dem physikalischen Seiten-Offsetwert ist; wobei das System ferner aufweist: eine erste Abbildungstabelle (40), die eine Mehrzahl von ersten Abbildungsdaten aufweist, wobei jede der ersten Abbildungsdaten eine virtuelle Blockadresse und eine physikalische Blockadresse speichert, um einen spezifischen virtuellen Block auf einen spezifischen physikalischen Block abzubilden; und gekennzeichnet ist durch: mindestens einen aktiven Block im Flash-Speicher (30), wobei jeder aktive Block eine Mehrzahl von physikalischen Seiten und eine aktive Blockadresse aufweist, jede physikalische Seite im aktiven Block einen physikalischen Seiten-Offsetwert besitzt, wobei jeder aktive Block auf einen physikalischen Block abgebildet ist; wobei das System ferner aufweist: eine zweite Abbildungstabelle (50), die eine Mehrzahl von zweiten Abbildungsdaten aufweist, wobei jede der zweiten Abbildungsdaten eine physikalische Blockadresse und eine aktive Blockadresse aufweist, um einen spezifischen aktiven Block auf einen spezifischen physikalischen Block abzubilden; und eine dritte Abbildungstabelle (60), die eine Mehrzahl von dritten Abbildungsdaten aufweist, wobei jede der dritten Abbildungsdaten einen virtuellen Seiten-Offsetwert und einen physikalischen Seiten-Offsetwert aufweist, um eine spezifische virtuelle Seite auf eine spezifische physikalische Seite eines spezifischen aktiven Blocks abzubilden.
  2. System (200) gemäß Anspruch 1, ferner gekennzeichnet durch: ein Empfangsmodul (202), um eine Zugriffsanfrage zu empfangen, wobei die Zugriffsanfrage eine virtuelle Seitennummer aufweist, die eine virtuelle Seite repräsentiert; ein Suchmodul für einen physikalischen Block (204), um einen spezifischen physikalischen Block entsprechend der virtuellen Seitennummer aufzufinden; und ein Entscheidungsmodul (206), um zu bestimmen, ob der spezifische physikalische Block auf einen aktiven Block abgebildet ist.
  3. System (200) gemäß Anspruch 1, ferner gekennzeichnet durch: ein Empfangsmodul (202) zum Empfang einer Schreibanfrage, wobei die Schreibanfrage eine virtuelle Seitennummer aufweist, die eine virtuelle Seite repräsentiert; ein Suchmodul (204) für einen physikalischen Block, zum Ermitteln einer virtuellen Blockadresse entsprechend der virtuellen Seitennummer, um einen spezifischen physikalischen Block aufzufinden; ein Entscheidungsmodul (206) zum Ermitteln, ob der spezifische physikalische Block auf einen aktiven Block abgebildet wurde; ein Suchmodul (208) zum Suchen des abgebildeten aktiven Blocks, um zu ermitteln, ob der abgebildete aktive Block eine leere physikalische Seite besitzt; ein Offsetwert-Suchmodul (210) zum Ermitteln eines virtuellen Seiten-Offsetwerts entsprechend der virtuellen Seitennummer, um zu erfassen, ob eine physikalische Seite, die den gleichen Offsetwert wie der virtuelle Seiten-Offsetwert aufweist, eine leere physikalische Seite im spezifischen physikalischen Block ist; und ein Schreibmodul (222) zum Schreiben von Daten auf die leere physikalische Seite des abgebildeten aktiven Blocks oder der physikalischen leeren Seite des spezifischen physikalischen Blocks.
  4. System (200) gemäß Anspruch 3, ferner gekennzeichnet durch ein Mischmodul (216), um einen spezifischen aktiven Block und einen entsprechend abgebildeten physikalischen Block zu mischen, um einen neuen physikalischen Block zu erzeugen.
  5. System (200) gemäß Anspruch 4, ferner gekennzeichnet durch ein Erzeugungsmodul (218) für einen aktiven Block, um einen neuen aktiven Block zu erzeugen, wobei der neue aktive Block auf den spezifischen physikalischen Block abgebildet ist und ein leerer aktiver Block ist.
  6. System (200) gemäß Anspruch 4, ferner gekennzeichnet durch ein Wahlmodul (214), um einen spezifischen aktiven Block zum Blockmischen auszuwählen.
  7. System (200) gemäß Anspruch 6, dadurch gekennzeichnet, dass das Wahlmodul (214) den spezifischen aktiven Block zufällig auswählt.
  8. System (200) gemäß Anspruch 6, dadurch gekennzeichnet, dass das Wahlmodul (214) den spezifischen aktiven Block entsprechend der im aktiven Block gespeicherten Datenmenge auswählt.
  9. System (200) gemäß Anspruch 4, ferner gekennzeichnet durch ein Abfragemodul (212), um abzufragen, ob es einen freien aktiven Block im Flash-Speicher (30) gibt.
  10. System (200) gemäß Anspruch 9, ferner gekennzeichnet durch ein Abbildungsmodul (215), um den freien aktiven Block auf den spezifischen physikalischen Block abzubilden.
  11. System (200) gemäß Anspruch 1, ferner gekennzeichnet durch: ein Empfangsmodul (202) zum Empfangen einer Leseanfrage, wobei die Leseanfrage eine virtuelle Seitennummer aufweist; ein Suchmodul (204) für einen physikalischen Block, zum Ermitteln einer virtuellen Blockadresse entsprechend der virtuellen Seitennummer, um einen spezifischen physikalischen Block aufzufinden; ein Entscheidungsmodul (206) zur Ermittlung, ob der spezifische physikalische Block auf einen aktiven Block abgebildet wurde; ein Suchmodul (208) zum Suchen des abgebildeten aktiven Blocks, um eine benötigte physikalische Seite zu ermitteln; ein Offsetwert-Suchmodul (210) zum Ermitteln eines virtuellen Seiten-Offsetwerts entsprechend der virtuellen Seitennummer, um die physikalische Seite aufzufinden, die den gleichen Offsetwert wie der virtuelle Seiten-Offsetwert besitzt; und ein Lesemodul (220) zum Lesen der Daten der physikalischen Seite.
  12. Verfahren zum Datenzugriff in einem Flash-Speicher (30), das in einer elektronischen Vorrichtung verwendet wird, wobei die elektronische Vorrichtung aufweist: mindestens einen virtuellen Block, wobei jeder virtuelle Block eine Mehrzahl von virtuellen Seiten und eine virtuelle Blockadresse aufweist, wobei jede virtuelle Seite einen virtuellen Seiten-Offsetwert besitzt; und mindestens einen physikalischen Block im Flash-Speicher (30), wobei jeder physikalische Block eine Mehrzahl von physikalischen Seiten und eine physikalische Blockadresse aufweist, wobei jede physikalische Seite einen physikalischen Seiten-Offsetwert besitzt; gekennzeichnet durch: mindestens einen aktiven Block im Flash-Speicher (30), wobei jeder aktive Block eine Mehrzahl von physikalischen Seiten und eine aktive Blockadresse aufweist, wobei jede physikalische Seite einen physikalischen Seiten-Offsetwert besitzt, jeder virtuelle Block auf einen physikalischen Block abgebildet wird, jeder aktive Block auf einen physikalischen Block abgebildet wird, jede virtuelle Seite im entsprechenden virtuellen und physikalischen Block auf eine physikalische Seite abgebildet wird, der virtuelle Seiten-Offsetwert in den entsprechenden virtuellen und physikalischen Seiten gleich dem physikalischen Seiten-Offsetwert ist; und das Verfahren aufweist: Empfangen einer Zugriffsanfrage, die eine virtuelle Seitennummer aufweist, die eine virtuelle Seite repräsentiert; Auffinden eines spezifischen physikalischen Blocks gemäß der virtuellen Seitennummer; und Ermitteln, ob der spezifische physikalische Block auf einen aktiven Block abgebildet wurde, wobei, wenn das Verfahren verwendet wird, um Daten in den Flash-Speicher (30) zu schreiben, das Verfahren ferner aufweist: (a) Empfangen einer Schreibanfrage, wobei die Schreibanfrage eine virtuelle Seitennummer aufweist, die eine spezifische virtuelle Seite repräsentiert; (b) Auffinden eines spezifischen physikalischen Blocks entsprechend der virtuellen Seitennummer; (c) Ermitteln, ob der spezifische physikalische Block auf einen aktiven Block abgebildet wurde; falls ja, dann Ausführen von Schritt (d) und falls nein, Ausführen von Schritt (e); (d) Ermitteln, ob der abgebildete aktive Block eine leere physikalische Seite besitzt; falls ja, Ausführen von Schritt (f) und falls nein, Ausführen von Schritt (g); (e) Verwenden der virtuellen Seitennummer, um einen virtuellen Seiten-Offsetwert zu ermitteln und zu ermitteln, ob eine physikalische Seite, die einen gleichen Offsetwert wie der virtuellen Seiten-Offsetwert besitzt, eine leere physikalische Seite im spezifischen physikalischen Block ist; falls ja, Ausführen von Schritt (h) und falls nein, Ausführen von Schritt (i); (f) Schreiben von Daten auf die leere physikalische Seite; (g) Mischen des spezifischen physikalischen Blocks und seinem entsprechenden abgebildeten aktiven Block; (h) Schreiben von Daten auf die physikalische Seite; und (i) Mischen eines physikalischen Blocks und seinem entsprechenden abgebildeten aktiven Block.
  13. Verfahren gemäß Anspruch 12, ferner gekennzeichnet durch: Auswählen eines physikalischen Blocks, der auf einen aktiven Block vor Ausführung von Schritt (i) abgebildet wurde.
  14. Verfahren gemäß Anspruch 12, dadurch gekennzeichnet, dass Schritt (g) ferner aufweist: nach Mischen des spezifischen physikalischen Blocks und seinem entsprechenden abgebildeten aktiven Block, Erzeugen eines neuen physikalischen Blocks und Abbilden des neuen physikalischen Blocks auf einen virtuellen Block, auf den der spezifische physikalische Block abgebildet wurde.
  15. Verfahren gemäß Anspruch 14, dadurch gekennzeichnet, dass das Verfahren nach Schritt (g) ferner die Erzeugung eines neuen aktiven Blocks aufweist, der auf den neuen physikalischen Block abgebildet wurde und ein leerer aktiver Block ist.
  16. Verfahren gemäß Anspruch 12, dadurch gekennzeichnet, dass Schritt (i) ferner aufweist: nach Mischen eines spezifischen physikalischen Blocks und seinem entsprechenden abgebildeten aktiven Block, Erzeugen eines neuen physikalischen Blocks und Abbilden des neuen physikalischen Blocks auf einen virtuellen Block, auf den der spezifische physikalische Block abgebildet wurde.
  17. Verfahren gemäß Anspruch 16, dadurch gekennzeichnet, dass nach Schritt (i) das Verfahren ferner das Erzeugen eines neuen aktiven Blocks aufweist, der auf den spezifischen physikalischen Block abgebildet wurde und ein leerer aktiver Block ist.
  18. Verfahren gemäß Anspruch 12, dadurch gekennzeichnet, dass vor Schritt (i) das Verfahren ferner eine Abfrage aufweist, ob es einen leeren aktiven Block gibt.
  19. Verfahren gemäß Anspruch 18, dadurch gekennzeichnet, dass der leere aktive Block auf den spezifischen physikalischen Block abgebildet wird, wenn der leere aktive Block existiert.
  20. Verfahren gemäß Anspruch 12, dadurch gekennzeichnet, dass das Verfahren verwendet wird, um Daten vom Flash-Speicher zu lesen und ferner aufweist: (a) Empfangen einer Leseanfrage, wobei die Leseanfrage eine virtuelle Seitennummer aufweist, die eine virtuelle Seite repräsentiert; (b) Ermitteln einer virtuellen Blockadresse gemäß der virtuellen Seitennummer, um einen spezifischen physikalischen Block aufzufinden; (c) Ermitteln, ob der spezifische physikalische Block auf einen aktiven Block abgebildet wurde; und falls ja, Ausführen von Schritt (d) und falls nein, Ausführen von Schritt (e); (d) Suchen nach dem abgebildeten aktiven Block, um eine benötigte physikalische Seite aufzufinden; und (e) Ermitteln eines virtuellen Seiten-Offsetwerts gemäß der virtuellen Seitennummer, um den spezifischen physikalischen Block für eine physikalische Seite, die einen physikalischen Seiten-Offsetwert besitzt, der identisch zum virtuellen Seiten-Offsetwert ist, zu suchen.
DE102005019842.2A 2004-04-29 2005-04-28 System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher Active DE102005019842B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW93112065 2004-04-29
TW093112065A TWI249670B (en) 2004-04-29 2004-04-29 System and method capable of sequentially writing a flash memory

Publications (2)

Publication Number Publication Date
DE102005019842A1 DE102005019842A1 (de) 2005-12-22
DE102005019842B4 true DE102005019842B4 (de) 2014-03-06

Family

ID=35188403

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005019842.2A Active DE102005019842B4 (de) 2004-04-29 2005-04-28 System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher

Country Status (3)

Country Link
US (1) US7516266B2 (de)
DE (1) DE102005019842B4 (de)
TW (1) TWI249670B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7188228B1 (en) * 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
KR100666174B1 (ko) 2005-04-27 2007-01-09 삼성전자주식회사 3-레벨 불휘발성 반도체 메모리 장치 및 이에 대한구동방법
TWM317043U (en) 2006-12-27 2007-08-11 Genesys Logic Inc Cache device of the flash memory address transformation layer
WO2008077285A1 (en) * 2006-12-27 2008-07-03 Intel Corporation Method of managing data on a non-volatile memory
TW200832440A (en) 2007-01-25 2008-08-01 Genesys Logic Inc Flash memory translation layer system
KR100825802B1 (ko) * 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
US7856522B2 (en) 2007-05-16 2010-12-21 Oracle International Corporation Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory
KR101391881B1 (ko) * 2007-10-23 2014-05-07 삼성전자주식회사 멀티-비트 플래시 메모리 장치 및 그것의 프로그램 및 읽기방법
CN101727402B (zh) * 2009-10-23 2012-07-04 深圳市江波龙电子有限公司 一种非易失性存储器数据的读写控制方法及系统
US8850161B2 (en) * 2010-10-13 2014-09-30 Riverbed Technology, Inc. Method of improving performance of a data storage device
CN103778964B (zh) * 2013-12-30 2016-08-17 上海晨思电子科技有限公司 一种NAND Flash烧写数据的处理、使用方法及装置、系统
TWI601141B (zh) * 2015-08-21 2017-10-01 晨星半導體股份有限公司 快閃記憶體的存取方法及相關的記憶體控制器與電子裝置
CN106484630A (zh) * 2015-08-31 2017-03-08 晨星半导体股份有限公司 快闪存储器的存取方法及相关的存储器控制器与电子装置
US9996463B2 (en) * 2015-11-10 2018-06-12 International Business Machines Corporation Selection and placement of volumes in a storage system using stripes
WO2018027839A1 (zh) * 2016-08-11 2018-02-15 华为技术有限公司 一种页表缓存tlb中表项的访问方法,及处理芯片
TWI679534B (zh) * 2017-09-18 2019-12-11 慧榮科技股份有限公司 資料儲存裝置以及資料儲存方法
KR20200066882A (ko) * 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19845295A1 (de) * 1998-03-18 1999-09-23 Lg Semicon Co Ltd Zugriffsverfahren und Vorrichtung für Flash-Speicherfeld
EP1244019A2 (de) * 2001-03-22 2002-09-25 Matsushita Electric Industrial Co., Ltd. Speichervorrichtung mit einem nicht-flüchtigen Speicher
US20030070035A1 (en) * 2001-10-04 2003-04-10 Chien-Fa Wang Method for accessing data in a computer and the computer thereof
US20030101327A1 (en) * 2001-11-16 2003-05-29 Samsung Electronics Co., Ltd. Flash memory management method
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6219770B1 (en) * 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US7310721B2 (en) * 2003-10-30 2007-12-18 Microsoft Corporation Shadow page tables for address translation control

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19845295A1 (de) * 1998-03-18 1999-09-23 Lg Semicon Co Ltd Zugriffsverfahren und Vorrichtung für Flash-Speicherfeld
EP1244019A2 (de) * 2001-03-22 2002-09-25 Matsushita Electric Industrial Co., Ltd. Speichervorrichtung mit einem nicht-flüchtigen Speicher
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US20030070035A1 (en) * 2001-10-04 2003-04-10 Chien-Fa Wang Method for accessing data in a computer and the computer thereof
US20030101327A1 (en) * 2001-11-16 2003-05-29 Samsung Electronics Co., Ltd. Flash memory management method

Also Published As

Publication number Publication date
US7516266B2 (en) 2009-04-07
DE102005019842A1 (de) 2005-12-22
TW200535610A (en) 2005-11-01
US20050246480A1 (en) 2005-11-03
TWI249670B (en) 2006-02-21

Similar Documents

Publication Publication Date Title
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE69936246T2 (de) Nichtflüchtiger Speicher, Aufzeichnungsgerät und -verfahren
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
DE60019903T2 (de) Speichersystem
DE19740525C1 (de) Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE60319563T2 (de) Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
DE69726088T2 (de) Methode und Apparat zur Speicherverwaltung
DE102007006307A1 (de) Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement
DE102005022893B3 (de) Verfahren zum Zugreifen auf Speicherbereiche einer Speicherkarte durch eine anfordernde Anwendung und Speicherkarte
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE102006005877A1 (de) Adresszuordnungstabelle und Verfahren zum Erzeugen einer Adresszuordnungstabelle
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE102006003261A1 (de) Speichersystem und Verfahren zur Datenzusammenführung
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE112010004667T5 (de) Speichervorrichtung und Speichersteuerung
DE602004008240T2 (de) Verfahren zum Verwalten von defekten Speicherblöcken in einem nicht-flüchtigen Speicher und nicht-flüchtiger Speicher zur Ausführung des Verfahrens
DE112013006646T5 (de) Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE102004014227A1 (de) Steuervorrichtung für einen nicht flüchtigen Speicher
DE112006004185T5 (de) Verfahren zum Verwalten von Daten in einem nichtflüchtigen Speicher
DE102012101405B4 (de) Steuervorrichtung zum Steuern eines Datenlesens und - schreibens von und zu einem Flash-Speicher
DE102017104698A1 (de) Elektroniksteuervorrichtung und Informationsspeicherverfahren dafür

Legal Events

Date Code Title Description
OR8 Request for search as to paragraph 43 lit. 1 sentence 1 patent law
8125 Change of the main classification

Ipc: G06F 12/00 AFI20051017BHDE

8105 Search report available
8110 Request for examination paragraph 44
R019 Grant decision by federal patent court
R020 Patent grant now final
R020 Patent grant now final

Effective date: 20141209