DE102009034836A1 - Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher - Google Patents

Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher Download PDF

Info

Publication number
DE102009034836A1
DE102009034836A1 DE200910034836 DE102009034836A DE102009034836A1 DE 102009034836 A1 DE102009034836 A1 DE 102009034836A1 DE 200910034836 DE200910034836 DE 200910034836 DE 102009034836 A DE102009034836 A DE 102009034836A DE 102009034836 A1 DE102009034836 A1 DE 102009034836A1
Authority
DE
Germany
Prior art keywords
flash
memory
data
flash memory
cache
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
DE200910034836
Other languages
English (en)
Inventor
Torsten Hinz
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102009034836A1 publication Critical patent/DE102009034836A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2236Copy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

Die vorliegende Erfindung betrifft ein Verfahren und eine Speichervorrichtung zum Speichern von Daten in einem Flash-Speicherlaufwerk. Um den Datendurchsatz zu steigern, umfasst das Laufwerk einen Cache-Speicher, der einen Tag-Speicher umfasst, und eine Vielzahl von Flash-Vorrichtungen, die über eine Vielzahl von Kanälen mit dem Cache-Speicher gekoppelt sind.

Description

  • Die Erfindung betrifft das Gebiet des Speicherns von Daten in einem Festkörperspeicher. Es werden insbesondere ein Festkörperlaufwerk und ein entsprechendes Verfahren zum Speichern von Daten darin beschrieben werden.
  • Festkörperplatten (Solid State Disks), die auch als Festkörperlaufwerke (Solid State Drives) bekannt sind (beide kurz SSD genannt), und Speichermedien wie zum Beispiel USB-Speicher-Sticks oder Flash-Speicherkarten, z. B. CF (Compact Flash) oder SD (Secure Digital), sind Speichermedien, die in der Lage sind, große Mengen an Daten zu speichern. Die Laufwerke können zum Beispiel dafür verwendet werden, Daten in Computern oder in irgendeiner anderen Digitalsignal-Verarbeitungsvorrichtung ähnlich wie herkömmliche Festplattenlaufwerke zu speichern. Anders als herkömmliche Festplattenlaufwerke, die eine sich mechanisch drehende Platte verwenden, die eine magnetische Beschichtung aufweist, verwenden die Festkörperlaufwerke (SSDs) keine mechanisch bewegten Teile. Statt dessen umfassen Festkörperlaufwerke integrierte Schaltkreise für das Speichern der Daten, wobei die integrierten Schaltkreise Anordnungen von Speicherzellen umfassen. Es sind mehrere Arten von nichtflüchtigen Speicherzellen bekannt. In einem Beispiel sind Speicherzellen im Wesentlichen aus Doppel-Gate-Transistoren aufgebaut, die zwei Gates statt nur eines aufweisen. Ein erstes Gate ist das Steuer-Gate für das Steuern des Transistors, wie dies von herkömmlichen Transistoren bekannt ist. Ein Floating Gate (frei schwebendes Gate) ist zwischen dem Steuer-Gate und dem MOSFET-Kanalbereich angeordnet. Dieses Floating Gate ist von einem Isoliermaterial umgeben. Somit werden jegliche Ladungsträger, d. h., Elektronen, die auf das Floating Gate gebracht werden, eingefangen und werden unter normalen Betriebsbedingungen nicht entladen. Dementsprechend behalten die Speicherzellen ihren Status selbst dann bei, wenn der Strom abgeschaltet wird, so dass der Speicher nichtflüchtig ist.
  • Ladungsträger können zum Beispiel auf das Floating Gate gebracht werden, indem eine hohe Spannung an das Steuer-Gate angelegt wird, so dass der Transistor eingeschaltet wird und es ermöglicht wird, dass ein starker Strom von der Source zu dem Drain fließen kann. Die starken Ströme bewirken, dass einige Elektronen auf das Floating Gate springen, was Hot Electron Injection (Heißelektroneninjektion bzw. Injektion von spannungsführenden Elektronen) genannt wird. Zum Entfernen der Elektronen wird eine hohe Spannung mit einer entgegengesetzten Polarität zwischen dem Steuer-Gate und dem Drain angelegt, um die Elektronen durch einen sogenannten Quanten-Tunneleffekt auszutreiben. Dieser Prozess der Heißelektroneninjektion und des Quanten-Tunneleffekts wird vor allem in NOR-Speicherzellen verwendet. Alternativ dazu und insbesondere in NAND-Speicherzellen kann ein Prozess verwendet werden, der Tunnelinjektion (Tunnel Injection) genannt wird, um Elektronen auf das Floating Gate zu injizieren, d. h. er kann also für einen Schreibvorgang verwendet werden, und ein Prozess, der Tunnelentladung (Tunnel Release) genannt wird, kann dafür verwendet werden, die Elektronen aus dem Floating Gate zu entfernen, d. h. er kann also für das Löschen von Speicherzellen verwendet werden.
  • Die Speicherzellen können zum Beispiel in einer NOR- oder in einer NAND-Architektur miteinander verbunden sein. Bei der NOR-Architektur sind die Speicherzellen parallel geschaltet. Auf die Speicherzellen kann einzeln zugegriffen werden. NAND-Speicherzellen sind in Reihe geschaltet, so dass sich eine Vielzahl von Speicherzellen eine Datenleitung teilt. Auf die Zellen kann somit nur in Reihe zugegriffen werden, so dass auf die Zellen für das Lesen und Schreiben nacheinander zugegriffen wird. In Folge dieser Architektur kann auf die Zellen nicht einzeln zugegriffen werden. Somit wird für einen Lesevorgang oder für das Programmieren, d. h., das Schreiben, auf alle Zellen einer Speicherseite zugegriffen.
  • In dem hier beschriebenen Beispiel ist der Transistor das Speicherelement, das die Informationen speichert. Es sei angemerkt, dass aber auch Speicherzellen, die andere Speicherelemente umfassen, verwendet werden können, zum Beispiel Speicherzellen, die Datenträger aus Phasenumwandlungsmaterial umfassen, d. h., PCRAM, oder die andere resistiv schaltende Materialien umfassen, zum Beispiel einen magnetresistiven RAM (MRAM).
  • In Einfachzustands-Speicherzellen (Speicherzellen mit nur einem Zustand) wird eine Zelle abgefühlt, um ein Bit zu reflektieren, d. h., der Transistor ist entweder leitend oder nichtleitend. In Mehrfachzustands-Speicherzellen (Speicherzellen mit mehreren Zuständen) kann eine einzige Zelle mehr als zwei Zustände annehmen. Wenn der Zustand der Speicherzelle abgefühlt wird, wird der Betrag an Strom, der durch den Transistor fließt, gemessen. Eine Zelle kann dementsprechend einen von einer Multiplizität von Leitungswiderstandspegeln (Resistivity Levels) annehmen und kann somit mehr als ein Bit reflektieren, so dass die Zelle eine Mehr-Pegel-Zelle ist.
  • Anders als herkömmliche Speichervorrichtungen, die Magnetplatten zum Speichern von Daten umfassen, zeigt der oben beschriebene Flash-Speicher in NAND-Architektur andere Eigenschaften in Bezug auf das Lesen, das Programmieren und das Löschen von Daten. Dementsprechend können die Prinzipien, die für herkömmliche Speichermedien entwickelt worden sind, nicht auf diese Art von Flash-Speicher angewendet werden. Folglich besteht ein Bedarf daran, schnelle und zuverlässige Flash-Speichervorrichtungen zu entwickeln.
  • Die Erfindung erreicht dieses bzw. weitere Ziele durch die Gegenstände der Ansprüche 1 und 11. Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt eine schematische Speicheranordnung in Übereinstimmung mit einem Ausführungsbeispiel;
  • 2 zeigt ein Zeitdiagramm, das die Verarbeitung und den Ablauf von Schreibzugriffen veranschaulicht;
  • 3 zeigt ein Blockschaltbild einer Speichervorrichtungsstruktur.
  • BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung wird nun unter Bezugnahme auf ein paar bevorzugte Ausführungsbeispiele davon beschrieben werden, wie diese in den beigefügten Zeichnungen veranschaulicht sind. In der nachfolgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, um ein vollständiges Verständnis der vorliegenden Erfindung bereitzustellen. Es wird einem Fachmann auf dem Gebiet aber offensichtlich sein, dass die vorliegende Erfindung ohne einige oder alle dieser spezifischen Einzelheiten praktiziert werden kann. In anderen Beispielen sind allgemein bekannte Prozesse und Schritte nicht im Einzelnen beschrieben worden, um die vorliegende Erfindung nicht unnötigerweise unklar zu machen.
  • Obwohl die Erfindung auf andere Speichervorrichtungen angewendet werden kann, bezieht sich die nachfolgende Beschreibung vor allem auf einen Speicher in NAND-Architektur, in dem auf Speicherzellen nur gruppenweise zugegriffen werden kann.
  • 1 zeigt schematisch eine schematische Anordnung eines Speicherlaufwerks 100 eines Flash-Speichers in Übereinstimmung mit einem Ausführungsbeispiel.
  • Das Flash-Speicherlaufwerk 100 kann eine Vielzahl von Flash-Vorrichtungen 110 bis 117 umfassen, wobei eine Flash-Vorrichtung dadurch gekennzeichnet ist, dass sie so ausgelegt und konfiguriert ist, dass sie nur eine Operation gleichzeitig ausführen kann, d. h., die Flash-Vorrichtung kann entweder Daten aus Flash-Speicherzellen heraus in einen vorrichtungsinternen Seitenpufferspeicher (Seitenpuffer) lesen oder empfängt Daten von einem Kanal oder programmiert die Inhalte des Seitenpufferspeichers in eine Flash-Speicherseite oder löscht Flash-Speicherseiten. Somit kann eine Flash-Vorrichtung also als eine Einheit betrachtet werden, die in der Lage ist, eine Datenmenge autonom zu verarbeiten, wenn sie einmal von einem geeigneten Befehl aktiviert worden ist. In der Tat werden Flash-Vorrichtungen von Befehlen gesteuert, die von einem Controller gesendet werden, um eine dieser Operationen durchzuführen. Physisch kann eine Vielzahl von Flash-Vorrichtungen auf einem einzigen Siliziumchip realisiert werden, oder eine Flash-Vorrichtung kann quer über einen oder mehrere Siliziumchips verteilt werden.
  • Die Flash-Speicherzellen innerhalb jeder Flash-Vorrichtung sind zu Flash-Speicherseiten 120, 121 gruppiert, wobei die Flash-Speicherseiten die gleiche Größe aufweisen. In dem vorliegenden Ausführungsbeispiel beträgt die Größe einer Flash-Speicherseite 2 kB plus zusätzlichen Speicherraum zum Speichern von Metadaten wie etwa Fehlerkorrekturcode-(ECC; Error Correction Code)-Werte.
  • Im Hinblick auf die heutige Organisation der Datenspeicherung umfasst eine Seite auf diese Weise 4 Sektoren mit jeweils einer Größe von 512 Byte. Die Zahlen, die innerhalb der dargestellten Flash-Speicherseiten stehen, geben die Startsektornummer einer Flash-Speicherseite innerhalb der Flash-Speichervorrichtung 100 beginnend bei 0 an. Folglich gibt die 0, die in der Flash-Speicherseite 120 angegeben ist, die Anfangsadresse einer ersten Seite des Flash-Speichers an, die zweite Flash-Speicherseite umfasst die Sektoren 4–7, so dass die Sektoradresse der zweiten Flash-Speicherseite somit bei 4 anfängt, usw..
  • Eine Vielzahl von Flash-Speicherseiten 120, 121 in einer Flash-Vorrichtung ist zu einem Speicherverwaltungsblock 130 gruppiert, wobei die Seiten eines Speicherverwaltungsblocks 130 in zwei Ebenen 140, 141 angeordnet sind, die die linke und die rechte Spalte des schematisch dargestellten Verwaltungsblocks 130 sind. Der Speicherverwaltungsblock 130 umfasst in dem vorliegenden Ausführungsbeispiel acht Flash-Speicherseiten, die in zwei Ebenen angeordnet sind, wobei die Flash-Speicherseiten, die mit den Sektoren 0, 64, 128, 192 anfangen, in der Ebene 140 angeordnet sind und die Flash-Speicherseiten, die mit den Sektoren 4, 68, 132 und 196 anfangen, in der Ebene 141 angeordnet sind. Jede der Flash-Vorrichtungen 110 bis 117 umfasst auf diese Weise eine Vielzahl von Speicherverwaltungsblöcken, die jeweils eine Vielzahl von Flash-Speicherseiten umfassen, die in zwei Ebenen angeordnet sind. Die Flash-Speicherseiten in den beiden Ebenen eines Speicherverwaltungsblocks können zur gleichen Zeit betrieben werden, so dass zum Beispiel eine Seite in der Ebene 140 parallel dazu, d. h. zur gleichen Zeit, wenn eine Seite der Ebene 141 programmiert wird, gelesen oder programmiert werden kann.
  • Zum Empfangen von Daten von und zum Übertragen von Daten zu einem Host ist jede Flash-Vorrichtung mit einem Kanal gekoppelt, wobei in dem vorliegenden Ausführungsbeispiel jeweils die Flash-Vorrichtungen 110, 112, 114 und 116 operativ mit dem Kanal 150 gekoppelt sind und die Flash-Vor richtungen 111, 113, 115 und 117 mit dem Kanal 151 gekoppelt sind. Auf diese Weise ist ein Kanal mit wenigstens zwei Flash-Vorrichtungen gekoppelt.
  • Ein Kanal kann auf einmal jeweils nur mit einer seiner gekoppelten Flash-Vorrichtungen beschäftigt sein. Folglich können in Situationen, in denen ein Kanal mit mehr als einer Flash-Vorrichtung gekoppelt ist und Daten für die Übertragung zu oder für den Empfang von mehr als einer Flash-Vorrichtung bereit sind, die Sendeoperationen nicht zur gleichen Zeit durchgeführt werden, sondern nur sequentiell eine nach der anderen. Aber wenn die Daten einmal zu einer bestimmten Flash-Vorrichtung übertragen worden sind, dann kann diese Vorrichtung zu gesteuert werden, dass sie weitere Operationen autonom durchführt, so dass die weitere Operation, d. h., die Verarbeitung der Daten, den Kanal nicht beeinträchtigt.
  • Jede Flash-Vorrichtung umfasst des Weiteren einen Seitenpufferspeicher (Seitenpuffer) 160 161 für das Zwischenspeichern von Daten. Somit werden die Daten dann, wenn die Daten aus einer Flash-Speicherseite ausgelesen werden, in dem Seitenpufferspeicher zwischengespeichert, bevor sie über den Kanal übertragen werden. In ähnlicher Weise werden die Daten dann, wenn Daten zu einer Flash-Vorrichtung für das Speichern der Daten in dem Flash-Speicher signalisiert bzw. übertragen werden, in dem Seitenpufferspeicher zwischengespeichert, bevor die Daten in eine Flash-Speicherseite programmiert, d. h., geschrieben werden. Der Seitenpufferspeicher jeder Flash-Vorrichtung weist die Speichergröße von zwei Flash-Speicherseiten einschließlich ihrer Metadaten auf, so dass die Inhalte von zwei Seiten in dem Seitenpufferspeicher jeder Flash-Vorrichtung zwischengespeichert werden können. Auf diese Weise wird auf Flash-Speicherseiten in einer Flash-Vorrichtung nicht direkt über den Kanal zugegriffen, sondern Daten, die aus den Flash-Speicherseiten einer Flash-Vorrichtung ausgelesen werden sollen oder in diese geschrieben werden sollen, werden in dem Seitenpufferspeicher zwischengespeichert.
  • Der Seitenpufferspeicher kann schneller betrieben werden als die Seiten des Flash-Speichers und kann flüchtig sein, d. h., der Pufferspeicher kann die Daten ohne Stromzufuhr nicht speichern, da der Pufferspeicher als ein Zwischenspeicher dient. Folglich kann der Seitenpufferspeicher nicht von der Art eines Flash-Speichers sein, sondern kann von einer anderen Art sein, zum Beispiel ein herkömmlicher DRAM oder SDRAM.
  • Für das Adressieren einer Seite in einem Verwaltungsblock wird eine logische Blockadresse (LBA) in einer Übersetzungstabelle 170 gespeichert, die eine empfangene logische Blockadresse der tatsächlichen, physischen Adresse der Seite zuordnet. Folglich halten die Strukturen 170, 171 Adressen 180..., von denen jede auf einen einzigen Verwaltungsblock einer anderen Flash-Vorrichtung zeigt.
  • In Folge der NAND-Architektur der Flash-Vorrichtungen kann für das Schreiben oder Lesen auf Speicherzellen oder Fragmente einer Seite nicht einzeln zugegriffen werden, sondern es kann dafür nur auf eine Seite als Ganzes zugegriffen werden. Somit muss für das Lesen eines Fragments einer Seite die gesamte Seite gelesen werden und nur das angeforderte Fragment wird an einen anfordernden Host weitergeleitet. In ähnlicher Weise muss dann, wenn ein Sektor einer Flash-Speicherseite aktualisiert werden soll, die gesamte Seite geschrieben werden.
  • Des Weiteren können Flash-Speicherzellen nur einmal programmiert werden. Das heißt, ausgehend von einem Anfangszustand, in dem alle Speicherzellen einer Seite einen Anfangszustand von zum Beispiel einer logischen 1 aufweisen, kann eine Zelle nur einmal auf einen logischen Zustand von 0 programmiert, d. h., geschrieben werden. Um eine Zelle auf eine logische 1 zurückzusetzen, muss sie gelöscht werden, wobei die Zelle nicht einzeln, sondern nur in einem Löschblock gelöscht werden kann. Im Allgemeinen kann ein Löschblock jede Anzahl von Flash-Speicherseiten innerhalb einer einzigen Flash-Vorrichtung umfassen. Insbesondere umfasst ein Löschblock Flash-Speicherseiten von einigen Speicherverwaltungsblöcken, so dass ein Löschblock die Speichergröße von einigen dieser Blöcke aufweist.
  • Eine andere Charakteristik ist, dass Seiten eines Löschblocks sequentiell geschrieben werden müssen. Das heißt, Flash-Speicherseiten können nicht willkürlich innerhalb eines Löschblocks geschrieben werden, sondern nur in sequentieller Reihenfolge.
  • Demgemäß müssen für willkürliche Schreibvorgänge, d. h., für die Aktualisierung einiger, aber nicht aller Speicherzellen eines Sektors in einer Seite, die neuen Daten mit den Daten gemischt werden, die beibehalten werden sollen. Es sei angemerkt, dass Sektoren normalerweise die kleinste Dateneinheit sind, die zu einer Speicherungsvorrichtung ausgehend von einem Host übertragen werden. Das heißt, für das Vermitteln von wenigstens einem Bit, das in einem Sektor einer Seite gespeichert ist, wird der Sektor, der das wenigstens eine Bit enthält, zu dem Speicher transferiert. Die Inhalte einer Seite, die unmodifiziert beibehalten werden sollen, werden folglich aus der Seite ausgelesen, d. h., drei der vier Sektoren der betroffenen Seite, und werden in einer anderen Seite gespeichert, wobei der transferierte Sektor einen Sektor innerhalb dieser Seite ersetzt. Die entsprechende Aufzeichnung in der Adressenübersetzungstabelle wird entsprechend aktualisiert, so dass die logische Adresse auf die neu geschriebene Flash-Speicherseite abbildet. Oftmals wird ein sogenannter Log Block für die Speicherung von Sektoren, die Änderungen enthalten, verwendet, so dass nur der abgeänderte Sektor in dem Log Block gespeichert wird, und die Zuordnung (Mapping) der LBA des ursprünglichen Sektors zu dem entsprechenden Sektor in dem Log Block umgeleitet wird.
  • Aber das Speichern von Sektoren in dem Log Block geht unvermeidlich zu Ende, wenn alle Sektoren in dem Log Block gefüllt sind. Wenn dem so ist, dann muss der Speichercontroller oder die Speicherverwaltungseinheit (MMU; Memory Management Unit) einen ganzen Löschblock freigeben. Bevor ein Löschblock zurückgesetzt werden kann, müssen die Inhalte dieses Blocks gesichert werden. Das heißt, der Controller kopiert die Daten der Sektoren in dem Log Block zusammen mit den restlichen Daten des ursprünglichen Seiten-Mapping in eine andere Stelle in dem Speicher und modifiziert entsprechend die Adresstabelle. Nachdem die Daten aller Sektoren in dem Löschblock des Log Blocks mit den ursprünglichen Daten gemischt worden sind, kann der Löschblock gelöscht werden.
  • Das Lesen einer Flash-Speicherseite dauert etwa 25 μs, das Programmieren einer Seite, d. h., das Schreiben einer Seite, dauert etwa 200 μs und das Löschen eines Löschblocks dauert etwa 1,5 ms. Diese Zeitspannen können sich zum Beispiel summieren, wenn ein Löschblock gelöscht wird.
  • Zum Speichern einer Datei in dem Flash-Speicherlaufwerk werden die Daten zum Beispiel von einem Host zu dem Laufwerk signalisiert. Angenommen, dass die Daten, die gespeichert werden sollen, ein Speichervolumen von zwei Seiten übersteigen, dann wird ein erster Abschnitt der Daten über den Kanal 150 zu dem Seitenpufferspeicher 160 signalisiert, wobei der Datenabschnitt die Größe von zwei Seiten aufweist und folglich in dem Seitenpufferspeicher 160 der Flash-Vorrichtung 110 gespeichert wird. Sofort nach der Operation des Zwischenspeichers des ersten Datenabschnitts in dem Seitenpufferspeicher 160) wird die Flash-Vorrichtung so gesteuert, dass der Datenabschnitt aus dem Seitenpufferspeicher 160 in zwei Flash-Speicherseiten programmiert, d. h., kopiert wird, wobei die Flash-Speicherseiten jeweils in einer ersten und in einer zweiten Ebene 140 und 141 angeordnet sind, so dass die Flash-Speicherseiten zur gleichen Zeit programmiert werden können. Die beiden Flash-Seiten können zum Beispiel diejenigen sein, die die Sektoren 0 bis 7 umfassen, so dass der erste Datenabschnitt in den Flash-Speicherseiten gespeichert wird, die in der Zeichnung mit 0 und 4 gekennzeichnet sind.
  • Die Operation des Kanals 150 und der Flash-Vorrichtung 110 beeinflusst nicht den Kanal 151 oder irgendeine der Flash-Vorrichtungen, die damit gekoppelt sind. Folglich kann ein zweiter Abschnitt der Daten über den Kanal 151 zu der Flash-Vorrichtung 111 zur gleichen Zeit signalisiert werden, wenn der erste Datenabschnitt zu der Flash-Vorrichtung 110 signalisiert wird. Ähnlich wie dies oben für die Flash-Vorrichtung 110 beschrieben worden ist, wird der Datenabschnitt in dem Seitenpufferspeicher 161 der Flash-Vorrichtung 111 zwischengespeichert und wird dann in die Seiten des Flash-Speichers programmiert, sobald die Operation des Zwischenspeichers des Datenabschnitts in dem Pufferspeicher 161 abgeschlossen ist. Der zweite Datenabschnitt der Datei, die gespeichert werden soll, wird somit in Flash-Seiten eines anderen Speicherverwaltungsblocks in einer anderen Flash-Vorrichtung gespeichert. Der zweite Datenabschnitt kann zum Beispiel in Flash-Speicherseiten gespeichert werden, die in der Flash-Vorrichtung 111 mit 8 und 12 gekennzeichnet sind.
  • Das Programmieren des ersten Datenabschnitts aus dem Seitenpufferspeicher 160 in Seiten des Flash-Speichers ist ein Prozess, der im Innern der Flash-Vorrichtung 110 abläuft und die Operation des Kanals 150 nicht beein trächtigt. Der Kanal 150 kann folglich wieder verwendet werden, um Daten zu übertragen, sobald die Signalisierung des ersten Datenabschnitts zum Pufferspeicher 160 abgeschlossen ist. Ein dritter Datenabschnitt der Datei kann somit zu dem Seitenpufferspeicher 162, der sich in der Flash-Vorrichtung 112 befindet, signalisiert werden, sofort nachdem die Signalisierung des ersten Datenabschnitts beendet ist, d. h., während die Inhalte des Seitenpufferspeichers 160 in Flash-Speicherseiten in der Flash-Vorrichtung 110 programmiert werden. Wiederum können, sobald die Signalisierung des dritten Datenabschnitts zu dem Seitenpufferspeicher 162 abgeschlossen worden ist, diese Daten in Flash-Speicherseiten in der Flash-Vorrichtung 112 programmiert werden, zum Beispiel in diejenigen, die mit 16 und 20 markiert sind.
  • In ähnlicher Weise, wie dies oben für den dritten Datenabschnitt beschrieben worden ist, kann ein vierter Datenabschnitt über den Kanal 151 zu einer damit gekoppelten Flash-Vorrichtung zur gleichen Zeit signalisiert werden, wenn der dritte Datenabschnitt über den Kanal 150 signalisiert wird, so dass der vierte Datenabschnitt zum Beispiel in den Flash-Speicherseiten der Flash-Vorrichtung 113 gespeichert werden kann, die mit 24 und 28 gekennzeichnet sind.
  • Des Weiteren, d. h., sobald der Transfer des dritten und des vierten Datenabschnitts über die Kanäle 150 und 151 jeweils zu den Seitenpufferspeichern 162 und 163 abgeschlossen ist, können weitere Datenabschnitte der Datei zu Flash-Vorrichtungen, die mit einem Kanal gekoppelt sind, zum Speichern der Datenabschnitte in den jeweiligen Flash-Vorrichtungen signalisiert werden.
  • Auf diese Weise kann jeder Kanal einen Datenabschnitt zu einer damit gekoppelten Flash-Vorrichtung signalisieren, während zur gleichen Zeit eine andere der gekoppelten Flash-Vorrichtungen mit dem Programmieren von Daten beschäftigt ist, die vorher zu der anderen gekoppelten Flash-Vorrichtung signalisiert worden sind. So kann jeder Kanal dazu verwendet werden, nahtlos Datenabschnitte, die gespeichert werden sollen, zu damit gekoppelten Flash-Vorrichtungen zu signalisieren, wodurch die Signalisierungskapazität des Kanals voll ausgeschöpft wird.
  • Als ein Ergebnis der oben beschriebenen Prozedur wird die Datei, die in dem Flash-Laufwerk gespeichert werden soll, in Datenabschnitte zerlegt, die die Größe eines Seitenpufferspeichers in einer Flash-Vorrichtung aufweisen. Die Datenabschnitte können quer durch eine Vielzahl von Speicherverwaltungsblöcken verteilt werden, die sich in einer Vielzahl von Flash-Vorrichtungen befinden, die mit einer Vielzahl von Kanälen gekoppelt sein können. Die Speicherblöcke, die die Flash-Speicherseiten umfassen, die die Datenabschnitte der Datei speichern, können auch irgendwo in einer Flash-Vorrichtung angeordnet sein, d. h., sie können, müssen aber nicht notwendigerweise in einer sequentiellen Reihenfolge innerhalb einer Flash-Vorrichtung vorliegen.
  • Die Verwendung einer Vielzahl von Kanälen für die Signalisierung der Abschnitte einer einzigen Datei zur gleichen Zeit und wobei die Datenabschnitte quer durch die Kanäle und quer durch eine Vielzahl von Flash-Vorrichtungen verteilt werden, die mit einem Kanal gekoppelt sind, erlaubt die Speicherung der Datenabschnitte derart, dass sie in der korrekten Reihenfolge unter Verwendung der Vielzahl von Kanälen gelesen werden können.
  • 2 zeigt ein schematisches Zeitdiagramm 200 der Operation des Kanals 150 und der Flash-Vorrichtungen 110, 112, 114 und 116, die mit dem Kanal gekoppelt sind, wobei die Operation des Kanals 150 repräsentativ für jeden der Kanäle in dem Flash-Laufwerk ist. Es wird angenommen, dass die Flash-Vorrichtung 110 bei t = 0 bereit für das Empfangen von Daten in dem Seitenpufferspeicher 160 ist. Beginnend bei t = 0 wird der erste Datenabschnitt zu der Flash-Vorrichtung 110 signalisiert. Daten in der Größe von zwei Seiten werden somit in dem Seitenpufferspeicher (Seitenpuffer) 160 zwischengespeichert, wobei die Operation 210 des Schreibens der Daten in den Seitenpufferspeicher 160 100 μs dauert, so dass in dem Zeitintervall von t = 0 bis t = 100 μs der Kanal mit der Signalisierung eines ersten Datenabschnitts zu dem Seitenpufferspeicher 160 beschäftigt ist, wie dies durch 210 angegeben ist. Nach der Beendigung, d. h., bei t = 100 μs, wird die Flash-Vorrichtung 110 so angesteuert, dass sie das Programmieren 220 startet, d. h., das Kopieren einer ersten Menge der Daten aus dem Seitenpufferspeicher 160 in eine einzige Flash-Speicherseite in der Ebene 140 des Speicherverwaltungsblocks 130 und zur gleichen Zeit einer zweiten Menge der Daten in eine Seite in der Ebene 141, wodurch die Flash-Speicherseiten in den beiden Ebenen des Blocks 130 zur gleichen Zeit programmiert werden. Der Prozess des Programmierens der Seiten, d. h., des Kopierens der Inhalte aus dem Seitenpufferspeicher 160 in die Flash-Speicherseiten, dauert 200 μs, so dass das Programmieren 220 der Inhalte des Seitenpufferspeichers 160 von t = 100 μs bis t = 300 μs dauert.
  • Zur gleichen Zeit, während die Inhalte des Seitenpufferspeichers 160 in die Flash-Speicherseiten programmiert werden, d. h., beginnend bei t = 100 μs, signalisiert der Kanal 150 in einer Schreiboperation 211 den dritten Datenabschnitt zu dem Seitenpufferspeicher 162 der Flash-Vorrichtung 112, was von t = 100 μs bis 1 = 200 μs dauert. Nach Beendigung dieser Signalisierungsoperation wird die Flash-Vorrichtung 112 so angesteuert, dass sie damit beginnt, die Inhalte des Puffers 162 in eine Flash-Seite in einer ersten Ebene zu kopieren und zur gleichen Zeit in eine Flash-Seite in der zweiten Ebene in der Flash-Vorrichtung 112 zu kopieren, was von t = 200 μs bis t = 400 μs dauern wird.
  • Bei t = 200 startet der Kanal 150 eine Schreiboperation 212 für das Schreiben eines fünften Datenabschnitts in den Seitenpufferspeicher 164 in der Flash-Vorrichtung 114, wobei die Operation 212 bis t = 300 μs andauert. Ähnlich wie dies oben beschrieben worden ist, wird die Flash-Vorrichtung 114 so gesteuert, dass sie die Kopieroperation 222 für das Kopieren der Inhalte des Puffers 164 in zwei Flash-Speicherseiten nach dem Beenden der Schreiboperation 212, d. h., bei t = 300 μs startet.
  • Bei t = 300 μs ist auch die Kopieroperation 220 beendet. Da die Inhalte des Seitenpufferspeichers 160 in Flash-Speicherseiten programmiert worden sind, kann er gelöscht oder mit anderen Daten überschrieben werden. Das heißt, der Seitenpufferspeicher 160 ist bereit für das Empfangen eines anderen Datenabschnitts. Folglich kann der Kanal 150 eine Schreiboperation 213 starten, um einen siebten Datenabschnitt in den Seitenpufferspeicher 160 in der Flash-Vorrichtung 110 zu schreiben. Sobald die Schreiboperation 213 zu Ende geht, wird die Flash-Vorrichtung 110 so gesteuert, dass sie eine Datenkopieroperation 223 für das Programmieren des siebten Datenabschnitts aus dem Seitenpufferspeicher 160 in die Flash-Speicherseiten in der Flash-Vorrichtung 110 startet.
  • Auf diese Weise können Daten, die in einem Flash-Speicher gespeichert werden sollen, zu einem Seitenpufferspeicher in einer Flash-Vorrichtung signalisiert werden, sobald dessen Inhalte in Flash-Speicherseiten innerhalb dieser Flash-Vorrichtung programmiert worden sind. Folglich erlauben es die Seitenpufferspeicher in den drei Flash-Vorrichtungen, die mit dem Kanal 150 gekoppelt sind, dass Daten nahtlos über einen einzigen Kanal signalisiert werden können. Der Kanal 150 signalisiert somit Daten zu den damit gekoppelten Flash-Vorrichtungen nahtlos, so dass der Kanal Daten übertragen kann, ohne dass darauf gewartet werden muss, dass Flash-Vorrichtung für das Empfangen von Daten verfügbar werden. Das heißt, auf diese Weise ist der begrenzende Faktor der Datenübertragung, die einen einzigen Kanal verwendet, die Geschwindigkeit des Schreibens in einen Seitenpufferspeicher, aber nicht die Geschwindigkeit des Programmierens irgendwelcher Daten in eine Seite eines Flash-Speichers.
  • Im Allgemeinen kann ein Kanal frei irgendeine seiner damit gekoppelten Flash-Vorrichtungen benutzen, die gleichzeitig bereit sind, dass Daten zu ihnen signalisiert werden. Das heißt, der Kanal kann bewusst zu irgendeiner Flash-Vorrichtung springen, die bereit ist, Daten in ihrem Seitenpufferspeicher zu empfangen. So ist zum Beispiel bei t = 400 μs die Kopieroperation 221 beendet, so dass ein anderer Datenabschnitt zu dem Seitenpufferspeicher 162 in der Flash-Vorrichtung 112 oder zu dem Seitenpufferspeicher 164 in der Flash-Vorrichtung 114 signalisiert werden kann. Im vorliegenden Fall wird der Datenabschnitt in einer Schreiboperation 214 zu dem Seitenpufferspeicher 166 signalisiert, um die Daten gleichmäßig quer durch alle gekoppelten Flash-Vorrichtungen zu verteilen, wodurch die Verwendung jeder Flash-Vorrichtung und jeder Flash-Seite gleichmäßig verteilt wird.
  • In dem vorliegenden Ausführungsbeispiel sind mindestens drei Flash-Vorrichtungen mit einem einzigen Kanal gekoppelt, so dass es wenigstens einen Seitenpufferspeicher in einer Flash-Vorrichtung gibt, der für das Empfangen eines Datenabschnitts von dem Kanal bereit ist. Es ist offensichtlich, dass in Abhängigkeit von der Zeit, die für das Programmieren der Inhalte des Seitenpufferspeichers in die Flash-Speicherseiten benötigt wird, weitere Flash-Vorrichtungen mit einem Kanal gekoppelt werden müssen, um für eine nahtlose Operation des Kanals zu sorgen.
  • Die Gesamtgeschwindigkeit einer Speichervorrichtung, die mehr als einen Kanal umfasst, wobei jeder Kanal unabhängig betrieben werden kann, kann berechnet werden, indem die Anzahl an Kanälen mit jeder spezifischen Kanalgeschwindigkeit multipliziert wird. Die Gesamtgeschwindigkeit eines Flash-Laufwerks kann somit erhöht werden, indem eine Vielzahl von unabhängigen Kanälen verwendet wird, wobei jeder Kanal mit einer Vielzahl von Flash-Vorrichtungen gekoppelt ist.
  • 3 zeigt schematisch ein Flash-Laufwerk 300, das mit einem Host 310 gekoppelt ist, wobei der Host jedes digitale Verarbeitungssystem sein kann, das das Flash-Laufwerk für die Speicherung von Daten verwendet.
  • Das Flash-Laufwerk ist über den Bus 320 mit dem Host gekoppelt und umfasst einen Cache-Speicher 330, einen Flash-Speicher 340, einen Tag-Speicher 350 und eine Speicherverwaltungseinheit 360, die den Betrieb der Teilschaltungen steuert. Es sei angemerkt, dass, obwohl der Cache-Speicher 330, der Flash-Speicher 340, der Tag-Speicher 350 und die Speicherverwaltungseinheit 360 (MMU) als separate Blöcke gezeichnet sind, diese auch auf einem einzigen Chip integriert sein können, so dass diese Funktionsblöcke Teil eines integrierten Schaltkreises (IC; Integrated Circuit) sind. Alternativ dazu kann jeder dieser Funktionsblöcke auf einem selbständigen IC implementiert werden oder kann mit anderen Funktionsblöcken gruppiert werden. In einem Ausführungsbeispiel können alle Funktionsgruppen, die einen Controller für einen Flash-Speicher bilden, in einem einzigen IC gruppiert und implementiert werden, wodurch ein Controller-IC zur Steuerung eines Flash-Speicher-IC gebildet wird.
  • Der Cache-Speicher 330 ist von irgendeiner schnellen Speicherart, zum Beispiel ein flüchtiger SRAM oder DRAM, um schnelle Operationen zu erlauben. Der Cache 330 kann 1 k (1 k = 1024) Rahmen (Frames) 331 aufweisen, wobei jeder Rahmen auf 8 Seiten 332 organisiert ist und jede Seite 332 eine Speicherkapazität von 4 kB aufweist, so dass jede Seite 332 in dem Cache-Speicher die Inhalte von zwei Flash-Speicherseiten speichern kann, d. h., die Speichergröße einer Cache Line entspricht der Speichergröße von zwei Flash-Speicherseiten.
  • In einem Ausführungsbeispiel ist der Cache-Speicher 330 als N-fach satzassoziativ organisiert, d. h., in einem bestimmten Beispiel ist der Cache-Speicher ein 8-fach satzassoziativer Speicher. Dementsprechend können die Inhalte einer Seite des Flash-Speichers 340 als eine Kopie in eine von acht zulässigen Speicherplätzen innerhalb des Cache-Speichers 330 gecachet werden. Es sei angemerkt, dass in anderen Ausführungsbeispielen der Cache-Speicher 330 anders organisiert sein kann, zum Beispiel als 4-fach satzassoziativ.
  • Auch der Tag-Speicher 350 ist von irgendeiner schnellen Speicherart, zum Beispiel ein flüchtiger SRAM, um Operationen so schnell wie Operationen zu dem Cache-Speicher 330 zu erlauben. Vorzugsweise ist der Tag-Speicher 350 von der gleichen Speicherart wie der Cache-Speicher 330. Die Speichergröße des Tag-Speichers 350 ist so ausgelegt, dass die Tags für die Seiten, die in dem Cache-Speicher 330 gespeichert werden, in dem Tag-Speicher 350 gespeichert werden können. So ist für jede Seite von Daten ein Tag in dem Tag-Speicher 350 gespeichert, wobei ein Tag einer Datenseite ein Adressen-Tag und gültige Informationen, ,verschmutzte' (veränderte) Informationen (Dirty Information) und Altersinformationen und/oder ein Tag umfassen kann, das die Relevanz der Datenseite anzeigt. Der Tag-Speicher 350 kann somit eine Speicherkapazität für die 1 k Cache-Rahmen des Cache-Speichers 330 bereitstellen, d. h., 1 k Tag-Einträge, die jeweils eine Speicherkapazität für 8 Tags besitzen. Der Tag-Speicher 350 ist über das Bussystem 370 mit dem Cache-Speicher 330 gekoppelt und ist außerdem mit der Speicherverwaltungseinheit 350 bezüglich Steuerinformationen gekoppelt.
  • Der Flash-Speicher 340 ist der Speicher für die endgültige Speicherung der Daten und kann zum Beispiel 64 M (M = Mega = 220) Seiten an nichtflüchtigem Flash-Speicher umfassen, wobei jede Seite eine Speicherkapazität von 2 kB aufweist, so dass der Flash-Speicher 340 insgesamt eine Speicherkapazität von 128 GB aufweist. Die Flash-Speicherzellen sind so organisiert, wie dies oben in 1 beschrieben worden ist, und die Flash-Vorrichtungen sind operativ mit dem Flash-Speicher 330 über die Kanäle 150, 151 gekoppelt.
  • Der Flash-Speicher 340 ist operativ mit dem Cache-Speicher 330 über den Bus 320 gekoppelt. Der Bus 320 umfasst dementsprechend wenigstens einen Kanal 150, der wiederum mit Flash-Vorrichtungen gekoppelt ist, wie dies unter Bezugnahme auf 1 beschrieben worden ist. Es sei angemerkt, dass der Bus 320 auch andere Entitäten für das Koppeln mit dem Host 310 aufweisen kann, d. h., der Bus 320 kann einen Kanal 150 für das Koppeln des Flash-Speichers 340 mit dem Cache-Speicher 330 umfassen und kann eine andere physische Entität für das Signalisieren von Daten zu und von dem Host 310 umfassen.
  • Die Interaktion zwischen dem Cache-Speicher 330, dem Tag-Speicher 350 und dem Flash-Speicher 340 wird von einer Speicherverwaltungseinheit 360 gesteuert, die dementsprechend die Verarbeitung von Lese- und Schreibaktionen in dem Flash-Laufwerk steuert, wie diese von dem Host 310 angefordert werden.
  • Zum Lesen von Daten aus dem Flash-Laufwerk 300 signalisiert der Host 310 eine entsprechende Leseanforderung an das Flash-Laufwerk 300 über den Bus 320. Dementsprechend liest das Laufwerk die angeforderten Daten und leitet die angeforderten Daten über den Bus 320 an den Host weiter. Wenn die angeforderten Daten in dem Cache-Speicher 330 zwischengespeichert sind, dann wird auf den Cache-Speicher zugegriffen und die angeforderten Daten werden aus dem Cache-Speicher 330 ausgelesen und über den Bus 320 dem Host signalisiert. Das heißt, für jede Leseanforderung, die ausgehend von dem Host 310 empfangen wird, prüft das Flash-Laufwerk, ob die angeforderten Daten in dem Cache-Speicher 330 zwischengespeichert sind, d. h., als eine Kopie gespeichert sind. Wenn die angeforderten Daten in dem Cache-Speicher nicht gefunden werden können, dann werden die Daten aus dem Flash-Speicher 340 ausgelesen und über den Bus 320 dem anfordernden Host weitergeleitet. Die Daten, die in einer Leseanforderung angefordert werden, dürfen nicht in dem Cache-Speicher 340 zwischengespeichert werden, da es unwahrscheinlich sein kann, dass die gleichen Daten bald erneut angefordert werden.
  • Wenn Daten in dem Flash-Laufwerk gespeichert werden, dann überträgt der Host die Daten über den Bus 320. Wenn die Daten, die in dem Flash-Laufwerk gespeichert werden sollen, eine große Datei darstellen, d. h., wenn die Schreibaktion ein sequentieller Schreibvorgang ist, und sich das Flash-Laufwerk bewusst ist, dass die Aktion ein sequentieller Schreibvorgang ist, dann können die Daten direkt in dem Flash-Speicher 340 gespeichert werden, ohne dass sie in dem Cache-Speicher zwischengespeichert werden. Aber es kann Situationen geben, in denen es für das Flash-Laufwerk keinen Hinweis darauf gibt, ob die Schreibaktion ein sequentieller Schreibvorgang einer großen Datei ist oder nicht.
  • Da die meisten der Schreiboperationen Direktzugriffs-Schreiboperationen sind, d. h., Schreiboperationen, bei denen Daten, die geschrieben werden sollen, nicht sequentiell organisiert sind, sondern willkürlich verteilt sind, werden die Daten zwischengespeichert, d. h., in dem Cache-Speicher 330 gespeichert. Wann auch immer also eine Seite von Daten wieder aktualisiert wird, d. h., wenn auf diese in einer anderen Schreibaktion zugegriffen wird, wird die Seite in dem Cache-Speicher 330 aktualisiert, ohne dass die entsprechenden Daten in dem Flash-Speicher 340 sofort aktualisiert werden. Aber da die Größe des Cache-Speichers 330 es nicht erlaubt, eine Kopie jeder Seite des Flash-Speichers 340 zu halten, sondern nur einige der Seiten, werden nur die plausibelsten Seiten als eine Kopie in dem Cache-Speicher gehalten. Folglich umfasst der Tag-Speicher 350 einen Eintrag, der reflektiert, welche Daten des Flash-Speichers 340 tatsächlich als Kopie in dem Cache 330 gespeichert werden.
  • Wenn man berücksichtigt, dass mit einer hohen Wahrscheinlichkeit auf diejenigen Seiten, auf die zuletzt zugegriffen worden ist, in der nahen Zukunft wieder zugegriffen werden wird, dann dürfen nur die zu allerletzt benutzten (LRU; last recently used) Seiten in den Cache-Speicher gecached werden. Dies kann durch die Implementierung des LRU Paging-Algorithmus erzielt werden. In einem Ausführungsbeispiel kann einer Seite eine fortlaufende Nummer zugewiesen werden und in dem entsprechenden Tag der im Cache-Speicher zwischengespeicherten Seite bewahrt werden, so dass kleinere Nummern ältere Seiten anzeigen. Folglich werden dann, wenn einem Rahmen freie Speicherseiten ausgehen, d. h., zum Beispiel 6 der 8 Seiten eines Rahmens sind von Rahmen belegt, ältere Seiten, d. h., diejenigen, die kleinere Nummern aufweisen, zurück in den Flash-Speicher 340 kopiert werden, wodurch Seiten in dem Cache-Speicher 330 freigegeben werden. Seiten, auf die häufig zugegriffen wird und die häufig im Cache-Speicher zwischengespeichert werden, und denen eine neue fortlaufende Nummer zugewiesen wird, um ihre Relevanz anzuzeigen, werden verhältnismäßig selten in den Flash-Speicher 340 zurückkopiert.
  • Ein Effekt des Zwischenspeicherns im Cache von häufig aktualisierten Seiten ist die Erhöhung des Durchsatzes von Schreiboperationen, da die Seiten in dem Cache-Speicher schneller aktualisiert werden können. Folglich kann der Durchsatz insbesondere für Direktzugriffs-Schreiboperationen erhöht werden, wodurch die Gesamtleistung des Flash-Laufwerks 300 gesteigert wird.
  • Auch die Anzahl an Schreiboperationen in dem Flash-Speicher 340 wird reduziert, da Seiten, auf die häufig zugegriffen wird, in dem Cache-Speicher mehr als einmal aktualisiert werden können, bevor sie zurück in den Flash-Speicher kopiert werden. Folglich wird die gesamte Anzahl an Schreiboperationen und insbesondere an Kopier- und Mischoperationen in dem Flash-Speicher reduziert. Jede Flash-Speicherzelle wird weniger häufig geschrieben, wodurch ihre Lebensdauer und die Gesamtleistung des Laufwerks in Folge von weniger Kopier- und Mischoperationen verbessert wird.
  • Außerdem ist das Flash-Laufwerk 300 in einem Ausführungsbeispiel so konfiguriert und ausgelegt, dass es die Seiten, die geschrieben werden sollen, quer durch alle damit gekoppelten Flash-Vorrichtungen einheitlich verteilt. Auch die Flash-Vorrichtungen können so konfiguriert und ausgelegt sein, dass sie Schreiboperationen quer durch die Flash-Speicherseiten innerhalb einer Flash-Vorrichtung einheitlich verteilen, so dass alle Flash-Speicherzellen in einer Flash-Vorrichtung gleichmäßig oft verwendet werden. Auf diese Weise wird die Abnutzung gleichmäßig quer durch die Speicherzellen verteilt, wodurch die Gesamtlebensdauer der Flash-Vorrichtung gesteigert wird.
  • Obwohl die vorliegende Erfindung unter Bezugnahme auf bestimmte Ausführungsbeispiele beschrieben worden ist, wird es den Fachleuten auf diesem Gebiet klar sein, dass verschiedene Änderungen durchgeführt werden können und Äquivalente ersetzt werden können, ohne dass von dem Schutzumfang der Erfindung abgewichen wird. Außerdem können viele Modifikationen durchgeführt werden, um eine Anpassung einer bestimmten Situation oder eines bestimmte Materials an die Lehren der Erfindung vorzunehmen, ohne dass von deren Schutzumfang abgewichen wird. Deshalb soll die Erfindung nicht auf die speziellen, offenbarten Ausführungsbeispiele beschränkt sein.

Claims (15)

  1. Flash-Speicherlaufwerk, das Folgendes umfasst: – eine Vielzahl von Flash-Vorrichtungen, die jeweils eine Vielzahl von Flash-Speicherzellen bereitstellen, und – einen Cache-Speicher zum Zwischenspeichern von Daten, wobei der Cache-Speicher einen Tag-Speicher zum Speichern von Tag-Informationen von im Cache-Speicher zwischengespeicherten Daten umfasst.
  2. Flash-Speicherlaufwerk nach Anspruch 1, wobei der Cache-Speicher von einer flüchtigen Speicherart ist.
  3. Flash-Speicherlaufwerk nach Anspruch 1 oder 2, wobei jede Flash-Vorrichtung eine Vielzahl von Flash-Speicherseiten und einen Pufferspeicher zum Zwischenspeichern von Daten umfasst, die zu und von der Flash-Vorrichtung übertragen werden sollen.
  4. Flash-Speicherlaufwerk nach einem der vorhergehenden Ansprüche, wobei eine Vielzahl von Flash-Vorrichtungen mit einem einzigen Kanal zum Übertragen von Daten gekoppelt ist.
  5. Flash-Speicherlaufwerk nach einem der vorhergehenden Ansprüche, wobei das Laufwerk so konfiguriert und ausgelegt ist, dass es Daten zu einer Flash-Vorrichtung überträgt, während zur gleichen Zeit eine andere Flash-Vorrichtung, die mit dem Kanal gekoppelt ist, vorher übertragene Daten in den Flash-Speicher programmiert.
  6. Flash-Speicherlaufwerk nach einem der vorhergehenden Ansprüche, wobei die Vielzahl von Flash-Vorrichtungen über eine Vielzahl von Kanälen mit dem Cache-Speicher gekoppelt ist.
  7. Flash-Speicherlaufwerk nach einem der vorhergehenden Ansprüche, wobei das Laufwerk so konfiguriert und ausgelegt ist, dass es wenigstens zwei Kanäle zur gleichen Zeit betreibt.
  8. Flash-Speicherlaufwerk nach einem der vorhergehenden Ansprüche, wobei die Flash-Speicherseiten in zwei Ebenen organisiert sind, wobei jeweils auf eine Seite jeder Ebene zur gleichen Zeit zugegriffen werden kann, und wobei die Speichergröße des Pufferspeichers gleich der Speichergröße von zwei Seiten ist.
  9. Flash-Speicherlaufwerk nach einem der vorhergehenden Ansprüche, wobei der Pufferspeicher einer Flash-Vorrichtung von einer flüchtigen Speicherart ist.
  10. Flash-Speicherlaufwerk nach einem der vorhergehenden Ansprüche, wobei der Pufferspeicher einer Flash-Vorrichtung mit der gleichen Geschwindigkeit wie der Cache-Speicher betreibbar ist.
  11. Verfahren zum Betreiben eines Flash-Speicherlaufwerks, das eine Vielzahl von Flash-Vorrichtungen, wobei jede eine Vielzahl von Flash-Speicherzellen bereitstellt, und einen Cache-Speicher zum Zwischenspeichern von Daten umfasst, wobei der Cache-Speicher einen Tag-Speicher zum Speichern von Tag-Informationen von im Cache-Speicher zwischengespeicherten Daten umfasst, wobei das Verfahren Folgendes umfasst: – Empfangen von Daten, die in dem Laufwerk gespeichert werden sollen, von einem Host, und – Zwischenspeichern der empfangenen Daten in dem Cache-Speicher und Speichern von Tag-Informationen über die empfangenen Daten in dem Tag-Speicher, und – Speichern der in dem Cache zwischengespeicherten Daten in einer Flash-Vorrichtung.
  12. Verfahren nach Anspruch 11, wobei der Cache-Speicher als ein N-fach assoziativer Cache organisiert ist, wobei N eine ganze Zahl ist.
  13. Verfahren nach Anspruch 11 oder 12, wobei jede Flash-Vorrichtung eine Vielzahl von Flash-Speicherseiten und einen Pufferspeicher für das Zwischenspeichern von Daten, die zu und von der Flash-Vorrichtung übertragen werden sollen, umfasst.
  14. Verfahren nach einem der vorhergehenden Ansprüche 11 bis 13, wobei eine Vielzahl von Flash-Vorrichtungen über eine Vielzahl von Kanälen mit dem Cache-Speicher gekoppelt ist, und wobei das Verfahren für das Speichern einer Vielzahl von Datenseiten des Weiteren Folgendes umfasst: – Signalisieren eines ersten Datenabschnitts zu einer ersten Flash-Vorrichtung über einen ersten Kanal, und – Signalisieren zur gleichen Zeit eines zweiten Datenabschnitts zu einer zweiten Flash-Vorrichtung über einen zweiten Kanal.
  15. Verfahren nach einem der vorhergehenden Ansprüche 11 bis 14, das des Weiteren Folgendes umfasst: – Signalisieren eines dritten Datenabschnitts zu einer dritten Flash-Vorrichtung über den ersten Kanal, und – Signalisieren zur gleichen Zeit eines vierten Datenabschnitts zu einer vierten Flash-Vorrichtung über den zweiten Kanal.
DE200910034836 2008-07-30 2009-07-27 Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher Ceased DE102009034836A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/182,826 US8904083B2 (en) 2008-07-30 2008-07-30 Method and apparatus for storing data in solid state memory
US12/182,826 2008-07-30

Publications (1)

Publication Number Publication Date
DE102009034836A1 true DE102009034836A1 (de) 2010-02-11

Family

ID=41501544

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200910034836 Ceased DE102009034836A1 (de) 2008-07-30 2009-07-27 Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher

Country Status (2)

Country Link
US (1) US8904083B2 (de)
DE (1) DE102009034836A1 (de)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8453022B2 (en) 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
KR101515525B1 (ko) * 2008-10-02 2015-04-28 삼성전자주식회사 메모리 장치 및 메모리 장치의 동작 방법
KR20100082185A (ko) * 2009-01-08 2010-07-16 삼성전자주식회사 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8566510B2 (en) * 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8327076B2 (en) * 2009-05-13 2012-12-04 Seagate Technology Llc Systems and methods of tiered caching
KR20100130007A (ko) * 2009-06-02 2010-12-10 삼성전자주식회사 데이터 저장 장치
US8456926B2 (en) * 2010-11-18 2013-06-04 Grandis, Inc. Memory write error correction circuit
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
TWI486764B (zh) * 2009-10-30 2015-06-01 Silicon Motion Inc 資料儲存裝置,控制器,以及於次等級記憶體存取資料之方法
US9037777B2 (en) * 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8510639B2 (en) 2010-07-01 2013-08-13 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
KR101942272B1 (ko) * 2011-12-27 2019-01-28 삼성전자주식회사 비휘발성 메모리의 제어방법, 이를 구현한 비휘발성 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
JP2019194780A (ja) * 2018-05-01 2019-11-07 富士通株式会社 情報処理装置、データ管理プログラム及びデータ管理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US6081878A (en) * 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
KR100277902B1 (ko) * 1998-08-18 2001-01-15 김영환 마이크로 프로세서
US6493250B2 (en) * 2000-12-28 2002-12-10 Intel Corporation Multi-tier point-to-point buffered memory interface
US6768358B2 (en) * 2001-08-29 2004-07-27 Analog Devices, Inc. Phase locked loop fast power up methods and apparatus
US7127564B2 (en) * 2003-02-28 2006-10-24 Standard Microsystems Corporation Double buffered flash programming
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
KR100660546B1 (ko) * 2005-11-10 2006-12-22 삼성전자주식회사 반도체 디스크 제어 장치
KR100890016B1 (ko) * 2007-05-10 2009-03-25 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템 및그것의 프로그램 방법
KR101399549B1 (ko) * 2007-09-04 2014-05-28 삼성전자주식회사 반도체 메모리 장치 및 그것의 블록 관리 방법

Also Published As

Publication number Publication date
US8904083B2 (en) 2014-12-02
US20100030944A1 (en) 2010-02-04

Similar Documents

Publication Publication Date Title
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE69034191T2 (de) EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
DE602005004226T2 (de) Speichervorrichtung und Informationsverarbeitungssystem
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102019123709A1 (de) Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102018115163A1 (de) Routing von datenblöcken während einer thermodrosselung
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE102017104158A1 (de) Gültigkeitsverfolgung für garbage collection
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren
DE102020119190A1 (de) Speichervorrichtung und Betriebsverfahren derselben
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE112020000159T5 (de) Systeme und verfahren zum definieren von speicher-unterblöcken

Legal Events

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