DE60211653T2 - Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher - Google Patents

Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher Download PDF

Info

Publication number
DE60211653T2
DE60211653T2 DE60211653T DE60211653T DE60211653T2 DE 60211653 T2 DE60211653 T2 DE 60211653T2 DE 60211653 T DE60211653 T DE 60211653T DE 60211653 T DE60211653 T DE 60211653T DE 60211653 T2 DE60211653 T2 DE 60211653T2
Authority
DE
Germany
Prior art keywords
pages
data
block
blocks
updated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60211653T
Other languages
English (en)
Other versions
DE60211653D1 (de
Inventor
M. Kevin San Jose CONLEY
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.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25076410&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60211653(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by SanDisk Corp filed Critical SanDisk Corp
Application granted granted Critical
Publication of DE60211653D1 publication Critical patent/DE60211653D1/de
Publication of DE60211653T2 publication Critical patent/DE60211653T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • 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/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7202Allocation control and policies
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/16Flash programming of all the cells in an array, sector or block simultaneously

Description

  • Diese Erfindung gehört zum Gebiet nichtflüchtiger Halbleiter-Datenspeicher-Systemarchitekturen sowie deren Verfahren zum Betrieb und hat Anwendung in Datenspeichersystemen, welche auf elektrisch löschbaren, programmierbaren Flash Nur-Lese-Speichern (EEPROMs) basieren.
  • Eine weit verbreitete Anwendung von Flash EEPROM Bausteinen sind Massendatenspeichersubsysteme für elektronische Vorrichtungen. Solche Subsysteme sind häufig entweder als auswechselbare Speicherkarten in Multi-Hostsystemen oder als nichtauswechselbar eingebettete Speicher innerhalb des Host-Systems implementiert. In beiden Implementierungen umfasst das Teilsystem einen oder mehrere Flash Bausteine und häufig einen Subsystemcontroller.
  • Flash EEPROM Bausteine bestehen aus einem oder mehreren Arrays aus Transistorzellen, wobei jede Zelle von nichtflüchtigen Speichern imstande ist, ein oder mehrere Bit Daten zu speichern. Auf diese Weise benötigt ein Flash Speicher keine Leistung, um die darin programmierten Daten zu speichern. Eine einmal programmierte Zelle muss jedoch gelöscht werden, bevor diese mit neuen Datenwerten programmiert werden kann. Diese Arrays aus Zellen sind in Gruppen partitioniert, um effiziente Implementierungen von Lese-, Programmier- und Lösch-Funktionen zur Verfügung zu stellen. Eine typische Flash Speicherarchitektur für Messenspeicher ordnet große Gruppen von Zellen in löschbaren Blöcken an, wobei ein Block die kleinste Anzahl von Zellen (Löscheinheit) enthält, welche zu gleichen Zeit löschbar sind.
  • In einer kommerziellen Form enthält jeder Block genügend Zellen, um einen Sektor Nutzdaten zuzüglich einiger Overhead-Daten in Bezug auf die Nutzdaten und/oder auf den Block, in welchem diese gespeichert sind, zu speichern. Der Standard der in einem Sektor einer Klasse solcher Speichersysteme enthaltenen Nutzdaten beträgt 512 Byte, kann aber auch eine andere Größe haben. Da die Trennung individueller Blöcke von Zellen voneinander, welche benötigt werden, um diese individuell löschbar zu machen, Platz auf dem integrierten Schaltkreis erfordert, macht eine andere Klasse von Flash Speichern diese Blöcke signifikant größer, so dass weniger Platz für solch eine Trennung erforderlich ist. Da es aber auch erwünscht ist, Nutzdaten in viel kleineren Sektoren zu handhaben, ist jeder große Block oft in individuell adressierbare Seiten partitioniert, welche die Basiseinheit zum Lesen und Programmieren von Nutzdaten sind (Programmier- und/oder Lese-Einheit). Jede Seite speichert gewöhnlich einen Sektor Nutzdaten, aber eine Seite kann einen partiellen Sektor oder Multi-Sektoren speichern. Ein "Sektor" bezieht sich ist hierbei auf eine Menge von Nutzdaten, welche zu und vom Host als eine Einheit transferiert werden.
  • Der Subsystemcontroller in einem großen Blocksystem verrichtet eine Anzahl von Funktionen, einschließlich die Übersetzung zwischen logischen Adressen (LBAs), welche vom Speichersubsystem von einem Host empfangen werden sowie physikalischen Blocknummern (PBNs) und Seitenadressen innerhalb des Speicherzellenarrays. Diese Übersetzung bezieht oft die Verwendung von zwischenliegenden Termen für eine logische Blocknummer (LBN) und logische Seiten mit ein. Der Controller verwaltet ebenso die Low Level Flash Schaltungsoperationen durch eine Reihe von Kommandos, welche zum Flash Speichersystem über eine Busschnittstelle ausgegeben werden. Eine weitere Funktion, welche der Controller durchführt, besteht darin, die Integrität der im Subsystem gespeicherten Daten mit verschiedenen Mitteln aufrecht zu erhalten, so wie durch Verwendung eines Fehlerkorrekturcodes (ECC).
  • In einem idealen Fall werden die Daten in allen Seiten eines Blockes zusammen durch Schreiben der aktualisierten Daten in die Seiten innerhalb eines unbelegten, gelöschten Blocks aktualisiert und eine logische-zu-physikalische Blocknummerntabelle wird mit der neuen Adresse aktualisiert. Der ursprüngliche Block steht dann zum Löschen zur Verfügung. Allerdings ist es typischer, dass die in einer Anzahl von Seiten gespeicherten Daten, welche aktualisiert werden müssen, kleiner als alle Seiten innerhalb eines gegebenen Blocks ist. Die in den restlichen Seiten des vorgegebenen Blocks gespeicherten Daten bleiben unverändert. Die Wahrscheinlichkeit, dass dies auftritt ist in Systemen höher, bei denen die Anzahl der pro Block gespeicherten Daten höher ist. Eine derzeit verwendete Technik, um eine solche partielle Blockaktualisierung durchzuführen, besteht darin, die zu aktualisierenden Daten der Seiten in eine korrespondierende Anzahl von Seiten eines ungenutzten gelöschten Blocks zu schreiben und dann die unveränderten Seiten des ursprünglichen Blocks in Seiten des neuen Blocks zu schreiben. Der ursprüngliche Block kann dann gelöscht und zu einem Inventar von unbenutzten Blöcken hinzugefügt werden, in welchen Daten später programmiert werden können. Eine andere Technik schreibt in gleicher Weise die aktualisierten Seiten in einen neuen Block, schließt jedoch die Notwendigkeit aus, die anderen Seiten von Daten in den neuen Block zu kopieren durch Ändern der Flags von den Seiten im ursprünglichen Block, welche aktualisiert werden, um zu kennzeichnen, dass diese veraltete Daten enthalten. Wenn dann die Daten gelesen werden, werden die aktualisierten Daten aus Seiten des neuen Blocks mit den unveränderten Daten kombiniert, welche aus Seiten des ursprünglichen Blocks gelesen werden, welche nicht als veraltet markiert sind.
  • Es wird auf US Patent 5,598,370 Bezug genommen, in welchem ein nichtflüchtiger Speicher mit Cluster-Lösch Flash Fähigkeit offenbart wird. Dies kann zum gleichzeitigen Speichern von Ursprungsdaten und Austauschdaten durch Identifizieren beider Daten durch die selbe logische Adresse sowie Unterscheiden zwischen Austauschdaten und Ursprungsdaten unter Bezugnahme auf die dazu zugeordneten Laufnummern verwendet werden. Der Oberbegriff von Anspruch 1 beruht auf diesem Dokument.
  • Die vorliegende Erfindung richtet sich auf ein Verfahren zum Ersetzen ersetzter Daten durch neue Daten in einem nichtflüchtigen Speichersystem, welches ein Array aus nichtflüchtigen Speicherelementen, welches in Blöcken organisiert ist, wobei diese Blöcke in Seiten organisiert sind und jeder Block die kleinste Anzahl von löschbaren Speicher-Elementen enthält. Das Verfahren umfasst das Schreiben neuer Daten als aktualisierte Seiten in Seiten eines anderen Blocks, wobei diese neuen Daten weniger als alle der ursprünglichen Seiten dieses anderen Blocks umfassen, das Adressieren sowohl der ursprünglichen Seiten als auch der aktualisierten Seiten mit derselben logischen Adresse sowie das Lesen und Unterscheiden der aktualisierten Seiten von den ursprünglichen Seiten. Gemäß der Erfindung erfolgt das Lesen in Bezug auf die relative Zeit des Schreibens in Seiten dieser Blöcke durch Lesen der Seiten aus diesem Block und danach aus diesem anderen Block, beides in umgekehrter Reihenfolge als diejenige, in der die Seiten geschrieben wurden und wobei alle Seiten ignoriert werden, welche die gleiche logische Adresse haben wie Seiten, die bereits gelesen wurden.
  • Ein nichtflüchtiges Speichersystem gemäß der Erfindung umfasst Array aus nichtflüchtigen Speicherelementen, welches in Blöcken organisiert ist, wobei diese Blöcke in Seiten organisiert sind und jeder Block die kleinste Anzahl von löschbaren Speicher-Elementen enthält, einen Programmier-Mechanismus, der in Seiten dieses Blocks eine aktualisierte Version mit weniger als alle der ursprünglichen Seiten dieses anderen Blocks schreibt, einen Adressierungs-Mechanismus, der sowohl die ursprünglichen Seiten als auch die aktualisierten Seiten mit derselben logischen Adresse adressiert und einen Lese-Mechanismus, der zwischen den aktualisierten Seiten und den ursprünglichen Seiten unterscheidet. Der Lesemechanismus liest in Bezug auf die relative Zeit zum Schreiben in Seiten dieses Blocks durch Lesen der Seiten von diesem Block und dann von diesem anderen Block in einer umgekehrten Reihenfolge von der, in welcher die Seiten geschrieben wurden und ignoriert jede Seite, welche die selbe logische Adresse wie die Seiten haben, welche bereits gelesen wurden.
  • Bei Verwendung der vorliegenden Erfindung kann sowohl das Kopieren unveränderter Daten aus dem ursprünglichen Block in den neuen Block sowie die Notwendigkeit vermieden werden, die Flags innerhalb des ursprünglichen Blocks zu aktualisieren, wenn die Daten von weniger als aller Seiten innerhalb eines Blockes aktualisiert werden. Dies wird durch Beibehalten sowohl der ersetzten Datenseiten als auch der aktualisierten Seiten von Daten mit einer gemeinsamen logischen Adresse durchgeführt. Die ursprünglichen und aktualisierten Seiten von Daten werden dann durch die relative Reihenfolge, in welcher diese programmiert wurden, unterschieden. Während des Lesens werden die letzten Daten, welche in den Seiten mit der selben logischen Adresse gespeichert sind, mit den unveränderten Seiten von Daten kombiniert, während die Daten in der ursprünglichen Version der aktualisierten Seiten ignoriert werden. Die aktualisierten Daten können sowohl in Seiten innerhalb eines anderen Blocks als die ursprünglichen Daten, als auch in verfügbare unbenutzte Seiten innerhalb des selben Blocks geschrieben werden. In einer spezifischen Ausführung wird eine Art Zeitstempel mit jeder Seite der Daten gespeichert, welcher es erlaubt, die relative Reihenfolge zu bestimmen, in welcher Seiten mit der selben logischen Adresse geschrieben wurden. In einer anderen spezifischen Ausführung in einem System, bei dem Seiten in einer bestimmten Reihenfolge innerhalb der Blöcke programmiert werden, wird eine Art Zeitstempel mit jedem Block Daten gespeichert und die letzten Kopien einer Seite innerhalb eines Blocks werden durch seine physikalische Position innerhalb des Blocks festgelegt.
  • Diese beiden Techniken vermeiden die Notwendigkeit des Kopierens unveränderter Daten vom ursprünglichen Block zum neuen Block sowie ein Flag oder die Daten in den Seiten des ursprünglichen Blocks, dessen Daten aktualisiert wurden, zu verändern. Ohne ein Flag oder andere Daten in den veränderten Seiten verändern zu müssen, wird ein potentielles Stören der zuvor in angrenzende Seiten des selben Blocks geschriebenen Daten, was durch solch ein Schreiben auftreten kann, beseitigt. Außerdem wird eine Performance-Penalty der zusätzlichen Programmieroperationen vermieden.
  • Ein weiteres Betriebsmerkmal, welches in Verbindung mit den oben zusammengefassten Techniken verwendet werden kann, behält über die logischen Offsets von individuellen Seiten innerhalb individueller Speicherzellenblöcken Übersicht, so dass die aktualisierten Daten nicht mit dem selben physikalischen Seiten-Offset wie die ersetzten Daten gespeichert werden müssen. Dies erlaubt eine effizientere Verwendung der Seiten von neuen Blöcken und erlaubt sogar, die aktualisierten Daten in jeder gelöschten Seite des selben Blocks wie die ersetzen Daten zu speichern.
  • Zwei oder mehrere Blöcke, welche in separaten Einheiten des Speicher-Arrays (auch als "Sub-Array" bezeichnet) angeordnet sind, können zum Programmieren und Lesen als Teil einer einzelnen Operation zusammen gruppiert werden. Solch eine multiple Blockgruppe wird hierbei als ein "Metablock" bezeichnet. Seine Blockkomponenten können sich entweder alle auf einem einzelnen integrierten Speicherschaltungschip oder sich in Systemen befinden, welche mehr als einen solchen Chip verwenden, welche sich auf zwei oder mehreren verschiedenen Chips befinden. Wenn Daten in weniger als aller Seiten eines dieser Blöcke aktualisiert werden, ist die Verwendung eines anderen Blocks in dieser selben Einheit normalerweise erforderlich. Allerdings können die oben beschriebenen Techniken mit jedem Block des Metablocks separat verwendet werden. Wenn Daten innerhalb von Seiten von mehr als einem Block des Metablocks aktualisiert werden, ist es daher erforderlich, dass mehrere Seiten innerhalb eines zusätzlichen Blocks zu verwenden. Wenn beispielsweise vier Blöcke von vier unterschiedlichen Speichereinheiten vorhanden sind, welche den Metablock bilden, besteht eine Wahrscheinlichkeit, dass bis zu vier zusätzliche Blöcke mit einem in jeder Einheit dazu verwendet werden, aktualisierte Seiten der ursprünglichen Blöcke zu Speichern. Ein aktualisierter Block wird potentiell in jeder Einheit für jeden Block der ursprünglichen Metablöcke benötigt. Aktualisierte Daten von Seiten von mehr als einem der Blöcke in dem Metablock können in Seiten eines gemeinsamen Blocks in nur einer der Einheiten gespeichert werden. Dies reduziert signifikant die Anzahl unbenutzter gelöschter Blöcke, welche zum Speichern von aktualisierten Daten erforderlich sind, wodurch eine effizientere Verwendung der verfügbaren Speicherzellenblöcke um Daten zu Speichern, durchgeführt wird. Diese Technik ist insbesondere nützlich, wenn das Speichersystem häufig einzelne Seiten eines Metablocks aktualisiert.
  • Die Aspekte, Merkmale und Vorteile der vorliegenden Erfindung sind in der folgenden Beschreibung exemplarischer Ausgestaltungen einbezogen, wobei die Beschreibungen in Verbindung mit den beiliegenden Figuren gelesen werden sollte.
  • 1 ist ein Blockdiagramm eines typischen Flash EEPROM Speicherarrays mit Speichersteuerlogik, Daten- und Adressregistern gemäß dem Stand der Technik,
  • 2 veranschaulicht eine Architektur, welche Speicher aus 1 mit einem Systemcontroller verwendet,
  • 3 ist ein Zeitdiagramm einer typischen Kopieroperation des Speichersystems aus 2,
  • 4 stellt einen bestehenden Aktualisierungsprozess von Daten in weniger als aller Seiten eines Multi-Seiten Blocks dar,
  • 5A und 5B sind Tabellen korrespondierender logischer und physikalischer Blockadressen für jeden der ursprünglichen, beziehungsweise der neuen Blöcke aus 4,
  • 6 stellt ein weiteren bestehenden Aktualisierungsprozess von Daten in weniger als aller Seiten eines Multi-Seiten Blocks dar,
  • 7A und 7B sind Tabellen korrespondierender logischer und physikalischer Seitenadressen für jeden der ursprünglichen beziehungsweise neuen Blöcke aus 6,
  • 8 stellt ein Beispiel eines verbesserten Aktualisierungsprozesses von Daten in weniger als aller Seiten eines Multi-Seiten Blocks dar,
  • 9 ist eine Tabelle korrespondierender logischer und physikalischer Seitennummern für den neuen Block aus 8,
  • 10 stellt ein Beispiel eines Layouts der Daten in einer Seite zur Verfügung, welche in 8 gezeigt sind,
  • 11 stellt eine weitere Entwicklung des Beispiels aus 8 dar,
  • 12 ist eine Tabelle korrespondierender logischer und physikalischer Seitennummern für den neuen Block aus 11,
  • 13 stellt eine Art des Lesens der aktualisierten Daten in den Blöcken aus 11 dar,
  • 14 ist ein Flussdiagramm eines Programmierprozesses von Daten in ein Speichersystem, welches wie in 8 und 9 dargestellt, organisiert ist,
  • 15 stellt ein bestehendes Multi-Einheit-Speichersystem mit Blöcken der individuellen Einheiten dar, welche zu einem Metablock verbunden sind, und
  • 16 stellt eine verbesserte Methode zum Aktualisieren von Daten eines Metablocks in dem Multi-Einheit-Speichersystem aus 12 dar, wenn die Menge der aktualisierten Daten viel kleiner als die Speicherkapazität des Metablocks ist.
  • BESCHREIBUNG BESTEHENDER LARGE BLOCK MANAGEMENT TECHNIKEN
  • 1 zeigt eine typische interne Architektur eines Flash Speicherbausteins. Die primären Merkmale umfassen einen Eingabe/Ausgabe (I/O) Bus 411 sowie Kontrollsignale 412 zum Koppeln an einem externen Controller, eine Speichersteuerschaltung 450, um interne Speicheroperationen mit Registern für Steuer-, Adressierungs- und Statussignalen zu steuern. Ein oder mehrere Arrays 400 von EEPROM Flash Zellen sind darin enthalten, wobei jedes Array seinen eigenen Reihendecoder (XDEC) 401 und Spaltendecoder (Y-DEC), eine Gruppe Leseverstärker und Programmiersteuerschaltkreise (SA/PROG) 454 sowie ein Datenregister 404 hat. Derzeit enthalten die Speicherzellen üblicherweise ein oder mehrere leitende Floating Gates als Speicherelement, aber dafür können andere Langzeit-Elektronenspeicherelemente verwendet werden. Das Speicherzellenarray kann mit zwei festgelegten Ladungsniveaus für jedes Speicherelement betrieben werden, um ein Bit Daten in jedem Element speichern zu können. Alternativ können mehr als zwei Speicherzustände für jedes Speicherelement festgelegt werden, wobei in diesem Fall mehr als ein Bit Daten in jedem Element gespeichert werden können.
  • Falls gewünscht, werden eine Vielzahl von Arrays 400 zusammen mit zugehörigen X Decodern, Y Decodern, Programmier/Prüf Schaltkreisen, Datenregistern und dergleichen bereitgestellt, wie beispielsweise in U.S. Patent 5,890,192 gelehrt, erteilt am 30.03.1999, übertragen auf Sandisk Corporation, Inhaberin der vorliegenden Anmeldung, dessen Inhalt durch Bezugnahme in die vorliegende Anmeldung aufgenommen wird. In Beziehung stehende Speichersystemmerkmale werden in der gleichzeitig anhängigen Patentanmeldung Nummer 09/505,555, von Kevin Conley et al. am 17.02.2000 angemeldet, beschrieben, wobei diese Anmeldung hierin durch Bezugnahme ausdrücklich eingebunden wird.
  • Der externe Interface I/O Bus 411 und Kontrollsignale 412 können das Folgende enthalten:
    CS – Chip Select wird zum Aktivieren des Flash Speicherinterfaces verwendet.
    RS – Read Strobe kennzeichnet, dass der I/O Bus zum Transferieren von Daten vom Speicherarray verwendet wird.
    WS – Write Strobe kennzeichnet, dass der I/O Bus zum Transferieren von Daten in das Speicherarray verwendet wird.
    AS – Address Strobe kennzeichnet, dass der I/O Bus zum Transferieren von Adressinformationen verwendet wird.
    AD[7:O] – Address/Data Bus Dieser I/O Bus wird zum Transferieren von Daten zwischen Controller und dem Flash Speicher Kommando-, Adress- und Datenregistern der Speichersteuerung 450 verwendet.
  • Dieses Interface wird nur als ein Beispiel aufgeführt. Ebenso können für die selbe Funktionalität andere Signalkonfigurationen verwendet werden. 1 zeigt nur ein Flash Speicherarray 400 mit seinen zugehörigen Komponenten. Jedoch kann eine Vielzahl von solchen Arrays auf einem einzelnen Flash Speicherchip vorhanden sein, welche ein gemeinsames Interface und Speichersteuerschaltung gemeinsam benutzen, aber separate XDEC, YDEC, SA/PROG und DATA REG Schaltungen haben, um parallele Lese- und Programmieroperationen zu ermöglichen.
  • Daten werden vom Speicherarray durch das Datenregister 404 zu einem externen Controller über die Kopplung des Datenregisters zum I/O Bus AD[7:0] 411 transferiert. Das Datenregister 404 ist auch mit dem Leseverstärker/Programmierschaltkreis 454 gekoppelt. Die Anzahl der Elemente des Datenregisters, welche mit jedem Leseverstärker/Programmierschaltkreiselement gekoppelt sind, kann von der Anzahl der gespeicherten Bit in jedem Speicherelement der Speicherzellen abhängen, wobei jede Flash EEPROM Zelle ein oder mehrere Floating Gates als Speicherelemente enthält. Jedes Speicherelement kann eine Vielzahl von Bit speichern, wie zum Beispiel 2 oder 4, wenn die Speicherzellen in einem Multi-State Modus betrieben werden. Alternativ können die Speicherzellen in einem binären Modus betrieben werden, um ein Bit Daten pro Speicherelement zu speichern.
  • Der Reihendecoder 401 decodiert Reihenadressen für das Array 400, um die zu adressierende physikalische Seite auszuwählen. Der Reihendecoder 401 empfängt Reihenadressen über die interne Reihenadressleitung 419 von der Speicherkontrollogik 450. Ein Spaltendecoder 402 empfängt Spaltenadressen über die interne Spaltenadressleitung 429 von der Speicherkontrollogik 450.
  • 2 zeigt eine Architektur eines typischen nichtflüchtigen Datenspeichersystems, wobei in diesem Fall Flash Speicherzellen als Speichermedium verwendet werden. In einer Ausgestaltung ist dieses System in einer herausnehmbaren Karte gekapselt, welche eine elektrische Verbindung aufweist, welche sich an einer Seite erstreckt, um dem Hostsystem zur Verfügung zu stehen, wenn diese in einen Anschluss des Hostes eingesetzt wird. Alternativ kann das System aus 2 in einem Hostsystem in Form einer fest eingebauten Schaltung oder anders eingebettet sein. Das System benutzt einen einzelnen Controller 301, welcher High Level Host und Speicherkontrollfunktionen durchführt. Das Flash Speichermedium besteht aus einem oder mehreren Flash Speicherelementen, wobei jedes solcher Elemente seinen eigenen integrierten Schaltkreis bildet. Der Systemcontroller und der Flashspeicher sind mit einem Bus 302 verbunden, welcher dem Controller 301 ermöglicht, Kommandos und Adressen zu laden sowie Daten zu und vom Flash Speicherarray zu transferieren. Der Controller 301 ist mit einem Hostsystem (nicht gezeigt) gekoppelt, mit welchem Nutzdaten zu und vom Flash Speicherarray transferiert werden. In dem Fall, wenn das System aus 2 in einer Karte eingeschlossen ist, umfasst das Hostsystem einen Gegenstecker und eine Anschlussverbindung (nicht gezeigt) auf der Karte und dem Host Equipment.
  • Der Controller 301 empfängt ein Kommando vom Host, einen oder mehrere Sektoren Nutzdaten zu Lesen oder zu Schreiben, welche an einer bestimmten logischen Adresse beginnen. Diese Adresse kann oder kann nicht mit einer Grenze eines physikalischen Blocks von Speicherzellen übereinstimmen.
  • In einigen Systemen gemäß dem Stand der Technik, welche eine große Speicherzellenblockkapazität aufweisen, welche wie oben besprochen in mehrere Seiten unterteilt sind, müssen die Daten von einem Block, welcher nicht aktualisiert wird, vom ursprünglichen Block in einen neuen Block kopiert werden, welcher auch die neuen, aktualisierten Daten enthält, welche vom Host geschrieben werden. Diese Technik ist in 4 dargestellt, worin zwei von einer großen Anzahl von Speicherblöcken enthalten sind. Es ist ein in 8 Seiten unterteilter Block 11 (PBN0) zum Speichern eines Sektors Nutzdaten in jeder seiner Seiten dargestellt. Overhead-Datenfelder, welche innerhalb jeder Seite enthalten sind, umfassen ein Feld 13, welches den LBN von Block 11 enthält. Die Reihenfolge der logischen Seiten innerhalb eines logischen Blocks ist in Bezug auf die korrespondierenden physikalischen Seiten innerhalb eines physikalischen Blocks festgelegt. Ein zweiter, ähnlich konfigurierter Block 15 (PBN1) wird aus einem Inventar von unbenutzten gelöschten Blöcken ausgewählt. Die Daten innerhalb der Seiten 3-5 des ursprünglichen Blocks 11 werden durch drei Seiten neuer Daten 17 aktualisiert. Die neuen Daten werden in die korrespondierenden Seiten 3-5 des neuen Blocks 15 geschrieben und die Nutzdaten von Seiten 0-2, 6 und 7 vom Block 11 werden in korrespondierende Seiten des neuen Blocks 15 kopiert. Alle Seiten des neuen Blocks 15 werden vorzugsweise in einer einzelnen Sequenz von Programmieroperationen programmiert. Nachdem der Block 15 programmiert ist, kann der ursprüngliche Block 11 gelöscht und in einem Inventar zur späteren Verwendung untergebracht werden. Das Kopieren von Daten zwischen den Blöcken 11 und 15, was das Lesen der Daten von einer oder mehreren Seiten im ursprünglichen Block einbezieht und das anschließende Programmieren der selben Daten in einen neu zugewiesenen Block reduziert außerordentlich die Schreibleistung und nutzbare Lebensdauer des Speichersystems.
  • 5A und 5B zeigen unvollständige Tabellen des Mappings der logischen Blöcke in die ursprünglichen und neuen physikalischen Blöcke 11 und 15 vor (5A) und nach (5B) dem Aktualisieren von Daten mit Bezug auf 4. In diesem Beispiel speichert der ursprüngliche Block 11 vor dem Aktualisieren der Daten Seiten 0-7 von LBN0 in korrespondierende Seiten 0-7 von PBN0. Nach dem Aktualisieren der Daten speichert der neue Block 15 die Seiten 0-7 von LBN0 in korrespondierende Seiten 0-7 von PBN1. Der Empfang einer Anfrage, Daten von LBN0 zu Lesen wird zum physikalischen Block 15 anstelle zum physikalischen Blocks 11 gelenkt. In einer typischen Controlleroperation wird eine in der Form wie in 5A und 5B gezeigte Tabelle vom LBN Feld 13 angelegt, welches aus einer physikalischen Seite gelesen wird und mit Kenntnis der adressierten PBN, wenn das Datenfeld 13 gelesen wird. Zur Erleichterung des Zugriffs wird üblicherweise die Tabelle in einem flüchtigen Speicher des Controllers gespeichert, obwohl typischerweise nur ein Teil einer vollständigen Tabelle für das gesamte System jeweils gespeichert wird. Ein Teil der Tabelle wird typischerweise unverzüglich vorab einer Lese- oder Programmieroperation aufgebaut, was die in dem Teil der Tabelle enthaltenden Blöcke involviert.
  • In anderen Systemen gemäß dem Stand der Technik werden Flags mit den Nutzdaten in Seiten aufgezeichnet und werden zum Anzeigen verwendet, dass Seiten mit Daten im ursprünglichen Block, welche durch die neu geschriebenen Daten ersetzt werden, ungültig sind. Nur die neuen Daten werden in den neu zugewiesenen Block geschrieben.
  • Dadurch werden die Daten in Seiten der neuen Blöcke nicht in die Schreiboperation involviert, aber sind in dem selben Block wie die ersetzten Daten enthalten und brauchen nicht in die neuen Blöcke kopiert werden. Diese Operation ist in 6 dargestellt, wobei Seiten 3-5 von Daten innerhalb eines ursprünglichen Blocks 21 (PBN0) wieder aktualisiert werden. Die aktualisierten Seiten 3-5 von Daten 23 werden in korrespondierende Seiten eines neuen Blocks 25 geschrieben. Als Teil der selben Operation wird ein alt/neu Flag 27 in jede der Seiten 3-5 geschrieben, um zu kennzeichnen, dass die Daten von diesen Seiten alt sind, während das Flag 27 für die verbleibenden Seiten 0-6 und 7 auf „neu" gesetzt bleiben. Gleichermaßen wird der neue PNB1 in ein anderes Overhead Datenfeld von jeder der Seiten 3-5 in Block 21 geschrieben, um zu kennzeichnen, wo die aktualisierten Seiten lokalisiert sind. Die LBN und Seiten werden in einem Feld 31 innerhalb jeder der physikalischen Seiten gespeichert.
  • 7A und 7B sind Tabellen der Beziehung zwischen den Daten LBN/Seite und den PBN/Seite bevor (7A) und nachdem (7B) die Datenaktualisierung abgeschlossen ist. Die unveränderten Seiten 0-2, 6 und 7 der LBN bleiben in PBN0 gemappt, während die aktualisierten Seiten 3-5 wie gezeigt in PBN1 bleiben. Die Tabelle aus 7B wird durch den Speichercontroller durch Lesen der Overhead Datenfelder 27, 29 und 31 der Seiten innerhalb des Blocks PBN0 nach der Datenaktualisierung gebildet. Da das Flag 27 in jeder der Seiten 3-5 des aktualisierten Blocks PBN0 auf "alt" gesetzt ist, wird dieser Block nicht mehr in der Tabelle für diese Seiten auftreten. Stattdessen erscheint die neue PBN1, welche aus dem Overhead Datenfeld 29' der aktualisierten Seiten gelesen wurde und dann werden Daten von LBN0 gelesen. Die Nutzdaten, welche in den in der rechten Spalte in 7B eingetragenen Seiten gespeichert sind, werden gelesen und dann in der gezeigten Reihenfolge zum Transfer zum Host aufgestellt.
  • Verschiedene Flags sind typischerweise in der selben physikalischen Seite wie die anderen zugehörigen Overhead Daten wie die LBN und ein ECC angeordnet. Um die alt/neu Flags 27 und andere in Seiten, in denen die Daten ersetzt wurden, zu Programmieren erfordert daher, dass eine Seite Multi-Programmierzyklen unterstützt. Das heißt, das Speicherarray muss die Fähigkeit haben, dass seine Seiten in mindestens zwei Stufen zwischen Löschen programmiert werden können. Darüber hinaus muss der Block die Fähigkeit unterstützen, eine Seite zu programmieren, wenn andere Seiten im Block mit höheren Offsets oder Adressen bereits programmiert wurden. Eine Einschränkung von einigen Flash Speichern verhindert allerdings die Verwendung solcher Flags durch die Spezifikation, dass die Seiten in einem Block nur in einer physikalisch sequenziellen Weise programmiert werden können. Darüber hinaus unterstützen die Seiten eine begrenzte Anzahl von Programmierzyklen und in einigen Fällen ist ein nachträgliches Programmieren von programmierten Seiten nicht zulässig.
  • Was benötigt wird, ist ein Mechanismus, mit dem Daten, welche in einem bestehenden Block gespeicherte Daten teilweise ersetzen, geschrieben werden können, ohne entweder unveränderte Daten von den bestehenden Blöcken zu kopieren oder Flags in Seiten zu Programmieren, welche vorher programmiert worden sind.
  • BESCHREIBUNG EXEMPLARISCHER AUSFÜHRUNGEN DER ERFINDUNG
  • Es gibt viele unterschiedliche Arten von Flash EEPROMs, wobei jede seine eigenen Beschränkungen aufzeigt, welche umgangen werden müssen, um ein Hochleistungsspeichersystem auf einem kleinen Teil der Fläche des integrierten Schaltkreises zu bilden. Einige sind nicht dafür vorgesehen, beliebige Daten in eine Seite zu schreiben, welche bereits programmiert wurde, so dass das Aktualisieren von Flags in einer Seite, welche ersetzte Daten enthält, wie oben beschrieben, nicht möglich ist. Andere gestatten es, solche Flags zu schreiben, aber auf diese Weise können Seiten, deren Daten ersetzt werden, Daten in anderen Seiten des gleichen Blocks, welcher aktuell bleibt, durcheinander bringen.
  • Ein beispielhaftes Speichersystem, bei dem sich dies als ein Problem herausgestellt hat, ist ein NAND Typ, wobei eine Spalte von Speicherzellen als ein Reihenschaltungsstrang zwischen einer Bitleitung und einem gemeinsamen Potential gebildet wird. Jede Wortleitung erstreckt sich über eine Reihe von Speicherzellen, welche aus einer Zelle in jedem solcher Stränge gebildet wird. Solch ein Speicher ist besonders anfällig für solche Speicherzustandsstörungen, wenn diese in einem Multi-State Modus betrieben werden, um mehr als ein Bit Daten in jeder solcher Zellen zu speichern. Solche Operationen teilen ein zur Verfügung stehendes Fenster eines Schwellwertspannungsbereichs eines Speicherzellentransistors in schmale nicht überlappende Spannungspegelbereiche auf, wobei jeder Bereich schmaler wird, wenn die Anzahl der Pegel und somit die Anzahl von Bits, welche in jeder Zelle gespeichert werden, erhöht werden. Wenn beispielsweise vier Schwellwertbereiche verwendet werden, werden zwei Bit Daten in jedem Speicherelement der Zelle gespeichert. Und da jeder der vier Schwellwertspannungsbereiche notwendigerweise schmal ist, erhöht sich die Wahrscheinlichkeit, dass eine Zelle durch Programmieren anderer Zellen in dem selben Block bei Multi-State Operationen gestört wird.
  • In diesem Fall kann das Schreiben der alt/neu oder anderer Flags, wie in 6, 7A und 7B beschrieben, nicht toleriert werden.
  • Ein gemeinsames Merkmal jeder der bestehenden Speichermanagementtechniken, welche in 4-7B beschrieben werden, besteht darin, dass eine logische Blocknummer (LBN) und ein Seiten-Offset innerhalb des Systems in höchstens zwei physikalische Blocknummern (PBNs) gemappt werden. Ein Block ist der ursprüngliche Block und der andere enthält die aktualisierten Seiten Daten. Daten werden in die Speicherstelle der Seite im Block entsprechend dem niederwertigsten Bit von seiner logischen Adresse (LBA) geschrieben. In verschiedenen Arten von Speichersystemen ist dieses Mapping typisch. In der unten beschriebenen Technik werden Seiten, welche aktualisierte Daten enthalten, auch die selben LBN und Seiten-Offsets wie den Seite zugewiesen, deren Daten ersetzt wurden. Eher als die Seiten, welche ursprüngliche Daten enthalten als ersetzt zu kennzeichnen, unterscheidet der Speichercontroller zwischen den Seiten, welche die ersetzten Daten enthalten und denen, welche die neue, aktualisierte Version enthalten entweder (1) durch Verfolgen der Reihenfolge, in welcher die Seiten mit der selben logischen Adresse geschrieben wurden, so wie beispielsweise durch Verwendung eines Zählers, und/oder (2) durch individuelle logische Seitennummern, wobei es nicht notwendig ist, dass die aktualisierten Daten im selben Seiten-Offset des neuen Blocks gespeichert werden wie das des alten Blocks, in dem ersetzte Daten enthalten sind. Wenn die Daten zum Lesen angesteuert werden, werden diese daher in den aktuellsten Seiten in den Fällen verwendet, wenn es Seiten gibt, welche ersetzte Daten enthalten, welche die selben logischen Adressen haben, während die ersetzten Daten ignoriert werden.
  • Eine erste spezifische Implementierung dieser Technik wird mit Bezug auf 8 und 9 beschrieben. In diesem Beispiel ist die Situation die selbe wie in den Techniken gemäß dem Stand der Technik, welche mit Bezug auf 4-7B beschrieben werden, und zwar das teilweise nochmalige Schreiben von Daten innerhalb eines Blocks 35, obwohl jeder Block, wie nun gezeigt, 16 Seiten enthält. Neue Daten 37 für jede der Seiten 3-5 vom Block 35 (PBN 35) werden in drei Seiten eines neuen Blocks 39 (PBN1) geschrieben, welcher dem zuvor beschriebenen ähnlich ist, welcher zuvor gelöscht wurde. Ein LBN und Seiten-Offset Overhead Datenfeld 41 wird in die Seiten von Block PBN1 geschrieben, welche die aktualisierten Daten enthalten, welche die selben sind, wie die in den Seiten der ersetzten Daten in dem initialen Block PBN0. Die Tabelle in 9, welche von den Daten innerhalb der Felder 41 und 41' gebildet wird, zeigt dies. Die logische LBN und Seiten-Offsets in der ersten Spalte werden beide in den ersten physikalischen Block (PNB0), in die zweite Spalte und für die Seiten, welche aktualisiert wurden, auch in den zweiten physikalischen Block (PBN1) in die dritte Spalte gemappt. Die LBN und logischen Seiten-Offsets 41', welche in jede der drei Seiten der aktualisierten Daten innerhalb des neuen Blocks PBN1 geschrieben wurden, sind die selben wie die 41, welche in jede korrespondierende logische Seite des ursprünglichen Blocks PBN0 geschrieben wurden.
  • Um zu Bestimmen, welche der zwei Seiten, welche die selbe LBN und Seiten-Offset haben, welche aktualisierten Daten enthalten, enthält jede Seite ein anderes Overhead Feld 43, welches einen Anhaltspunkt für seine Programmierzeit, zumindest relativ zu der Zeit, in der andere Seiten mit der selben logischen Adresse programmiert wurden, zur Verfügung stellt. Dies ermöglicht dem Controller, das relative Alter der Seiten zu bestimmen, welche der selben logischen Adresse zugeordnet sind, wenn die Daten aus dem Speicher gelesen werden.
  • Es gibt verschiedene Wege, das Feld 43, welches eine Art Zeitstempel enthält, zu schreiben. Der geradlinigste Weg besteht darin, in dem Feld die Ausgabe einer Echtzeit-Uhr im System aufzuzeichnen, wenn die Daten von deren zugehörigen Seiten programmiert werden. Später programmierte Seiten mit der selben logischen Adresse haben dann eine spätere Uhrzeit, welche im Feld 43 gespeichert ist. Aber wenn solch eine Echtzeit-Uhr im System nicht zur Verfügung steht, können andere Techniken verwendet werden. Eine spezifische Technik besteht darin, die Ausgabe eines Modulo-N Zählers als Wert im Feld 43 zu speichern. Der Bereich des Zählers sollte um eins größer sein als die Anzahl der Seiten, welche zum Speichern mit der selben logischen Seitennummer betrachtet werden. Wenn die Daten einer bestimmten Seite in dem ursprünglichen Block, zum Beispiel PBN0, aktualisiert werden, liest der Zähler zuerst die in dem Feld 43 gespeicherte Zahl der Seite, deren Daten aktualisiert werden, inkrementiert die Zahl um einen Betrag, wie zum Beispiel um eins, und schreibt dann die inkrementierte Zahl in den neuen Block PBN1 des Feldes 43'. Beim Erreichen einer Zahl N + 1 springt der Zähler auf 0. Da die Anzahl von Blöcken mit der selben LBN geringer als N ist, gibt es immer eine Unstetigkeitsstelle in den Werten der gespeicherten Zahlen. Es ist dann einfach, den Überlauf mit Normalisieren am Punkt der Unstetigkeitsstelle zu handhaben.
  • Bei einer Aufforderung zum Lesen der Daten unterscheidet der Controller einfach zwischen den neuen und ersetzten Seiten Daten durch Vergleichen der Zahlen in den Feldern 43 und 43' von Seiten, welche die selbe LBA und Offset-Seite haben. Als Antwort auf eine Notwendigkeit, die letzte Version einer Datei zu lesen, werden Daten der als neu identifizierten Seiten zusammen mit den ursprünglichen Seiten in die aktuellste Version der Datei zusammengestellt, welche noch nicht aktualisiert wurde.
  • Es wird angemerkt, dass in dem Beispiel in 8 die neuen Datenseiten 37 eher in den ersten drei Seiten 0-2 des neuen Blocks PBN1 gespeichert werden, als in den selben Seiten 3-5, welche diese im ursprünglichen Block PBN0 ersetzen. Durch Verfolgen der individuellen logischen Seitennummern brauchen die aktualisierten Daten nicht notwendigerweise im selben Seiten-Offset des neuen Blocks gespeichert zu werden wie das des alten Blocks, in welchem ersetzte Daten enthalten sind. Seite(n) von aktualisierten Daten können auch in gelöschte Seiten des selben Blocks geschrieben werden wie die Seiten von Daten, welche ersetzt werden.
  • Demzufolge besteht durch die beschriebene Technik keine Einschränkung, in welche physikalische Seite neue Daten geschrieben werden können. Aber die Speichersysteme, in welchen diese Techniken implementiert werden, können einige Einschränkungen aufzeigen. Beispielsweise erfordert ein NAND System, dass die Seiten innerhalb der Blöcke in einer sequentiellen Reihenfolge programmiert werden. Dies bedeutet, dass das Programmieren der mittleren Seiten 3-5, wie im neuen Block 25 (6) geschehen, die Seiten 0-2 verschwendet, welche später nicht programmiert werden können. Durch Speichern der neuen Daten 37 in den ersten verfügbaren Seiten vom neuen Block 39 (8) bleiben in solch einem restriktiven System die verbleibenden Seiten 3-7 zur späteren Verwendung, um Daten zu Speichern, zur Verfügung. Wenn der Block 39 zu der Zeit, in der die drei Seiten mit neuen Daten 37 gespeichert wurden, in seinen Seiten 0-4 andere Daten gespeichert hätte, könnten die Daten in den verbleibenden unbenutzten Seiten 5-7 gespeichert werden. Dies nutzt die verfügbare Speicherkapazität für solch ein System maximal.
  • Ein Beispiel der Datenstruktur, welche in einer einzelnen Seite der Blöcke in 8 gespeichert wird, ist in 10 gezeigt. Der größte Teil sind Nutzdaten 45. Ein aus den Nutzdaten berechneter Fehlerkorrekturcode (EEC) 47 ist ebenfalls in der Seite gespeichert. Overhead-Daten 49 einschließlich der LBN und Seitenkennzeichnung 41 (logischer Seiten-Offset), der Zeitstempel 43 und ein aus den Overhead-Daten berechneter ECC 51 sind ebenfalls in der Seite gespeichert. Durch einen ECC 50, welcher die Overhead-Daten abdeckt, welcher von den Nutzdaten ECC 47 getrennt ist, kann der Overhead 49 separat von den Nutzdaten gelesen werden und als gültig bewertet werden, ohne die Notwendigkeit, alle der in einer Seite gespeicherten Daten zu transferieren. Alternativ, wo jedoch das separate Lesen der Overhead-Daten 49 kein häufiger Vorgang ist, können alle Daten in der Seite mit einem einzelnen ECC abgedeckt werden, um die gesamte Bitanzahl vom ECC in einer Seite zu reduzieren.
  • Eine zweite spezifische Implementierung der erfinderischen Technik kann auch mit Bezug auf 8 beschrieben werden. In diesem Beispiel wird der Zeitstempel nur dazu verwendet, das relative Alter der in Blöcken gespeicherten Daten zu bestimmen, während die letzten Seiten unter denen, welche die selbe LBN und Seitennummer tragen, durch ihre relative physikalische Position bestimmt werden. Der Zeitstempel 43 braucht dann nicht als ein Teil jeder Seite gespeichert werden. Stattdessen kann ein einzelner Zeitstempel für jeden Block aufgezeichnet werden, entweder als Teil des Blocks oder an einer anderen Stelle innerhalb des nichtflüchtigen Speichers und wird jedes Mal aktualisiert, wenn eine Seite Daten in den Block geschrieben wird. Daten werden dann aus Seiten in einer Reihenfolge von absteigenden physikalischen Adressen gelesen, beginnend bei der letzten Seite des zuletzt aktualisierten Blocks, welcher Datenseiten mit der selben LBN hat.
  • In 8 werden zum Beispiel zuerst die Seiten im neuen Block PBN1 von der letzten (Seite 15) bis zur ersten (Seite 0) gelesen, gefolgt vom Lesen der Seiten des ursprünglichen Blocks PBN0 in der gleichen umgekehrten Reihenfolge. Sobald die logischen Seiten 3, 4 und 5 vom neuen Block PBN1 gelesen wurden, können die ersetzten Daten in diesen Seiten vom ursprünglichen Block PBN0, welche durch die selben logischen Seitennummern identifiziert werden, während des Leseprozesses übersprungen werden. In diesem Beispiel werden speziell die physikalischen Seiten 3, 4 und 5 vom alten Block PBN0 während des Lesens übersprungen, sobald der Controller feststellt, dass deren LBN/Seiten 41 die selben wie diese aus den Seiten sind, welche bereits von dem neuen Block PBN1 gelesen wurden. Dies kann die Lesegeschwindigkeit erhöhen und die Anzahl der Overhead-Bits 49 reduzieren, welche in jeder Seite gespeichert werden müssen. Wenn diese Seitenlesetechnik in umgekehrter Reihenfolge verwendet wird, kann ferner die durch den Controller während einer Leseoperation verwendete Tabelle aus 9 zu einer Form in 5A und 5B vereinfacht werden. Nur eine Identität von diesen physikalischen Blöcken, welche Daten eines gemeinsamen logischen Blocks enthalten und die relative Zeit, in der die physikalischen Blöcke programmiert wurden, müssen bekannt sein, um diesen effizienten Leseprozess auszuführen.
  • 11 stellt eine Erweiterung des Beispiels aus 8 durch Einfügen einer zweiten Aktualisierung zu den ursprünglich in den Block PBN0 geschriebenen Daten dar. Neue Daten 51 für die logischen Seiten 5, 6, 7 und 8 werden in die entsprechenden physikalischen Seiten 3, 4, 5 und 6 des neuen Blocks PBN1 zusammen mit deren LBN und Seitennummern geschrieben. In diesem Beispiel ist zu beachten, dass die Daten der logi schen Seite 5 zum zweiten Mal aktualisiert werden. Während einer Leseoperation, welche bei der letzten Seite des neuen Blocks PBN1 beginnt, werden die zuletzt geschriebenen logischen Seiten 8, 7, 6 und 5 der Daten von Interesse zuerst in dieser Reihenfolge gelesen. Danach wird man feststellen, dass das LBN/Seiten Overhead-Feld in der physikalischer Seite 2 von PBN1 das selbe wie das von der physikalischen Seite 3 gelesene ist, so dass die Nutzdaten von Seite 2 nicht gelesen werden. Die physikalischen Seiten 1 und 0 werden dann gelesen. Als nächstes werden die Seiten des ursprünglichen Blocks PBN0 beginnend mit der physikalischen Seite 15 gelesen. Nach dem Lesen der physikalischen Seiten 15-9 wird der Controller bemerken, dass die LBN/Seiten-Felder von jeder der Seiten 8-3 mit den Seiten übereinstimmen, deren Daten bereits gelesen wurden, so dass die alten Daten von diesen Seiten nicht gelesen werden müssen. Die Effizienz des Leseprozesses wird auf diese Weise verbessert. Am Ende werden die ursprünglichen Daten der physikalischen Seiten 2-0 gelesen, da diese Daten nicht aktualisiert wurden.
  • Man wird feststellen, dass dieses Beispiel zum Lesen von Seiten in einer umgekehrten Reihenfolge die neuen Datenseiten von den ersetzten Datenseiten effizient aussortiert, da die Daten in physikalischen Seitenpositionen eines gelöschten Blocks in Reihenfolge von Seite 0 an geschrieben werden. Diese Technik ist jedoch nicht darauf beschränkt, mit einem Speichersystem verwendet zu werden, welches solch eine spezifische Programmierrandbedingung hat. Solange die Reihenfolge bekannt ist, in welcher die Seiten innerhalb eines gegebenen Blocks programmiert worden sind, können die Daten von diesen Seiten in der umgekehrten Reihenfolge von der, in der sie geschrieben wurden, gelesen werden. Was gewünscht wird ist, dass die zuletzt programmierten Seiten, welche mit anderen eine gemeinsame LBN haben, welche früher programmiert worden sind, zuerst gelesen werden und dass diese die zuletzt programmierten Seiten sind. Die letzten Versionen von aktualisierten Seiten werden zuerst gelesen, so dass die ersetzten Versionen danach einfacher identifiziert werden können.
  • Eine Tabelle, welche die Beziehung zwischen den logischen Daten und physikalischen Seitenadressen für das Beispiel aus 11 zeigt, ist in 12 dargestellt. Obwohl dort zwei Datenaktualisierungen erfolgt sind, werden beide durch die einzige Spalte für den zweiten Block PBN1 repräsentiert. Die in PBN1 notierte physikalische Seite für die logische Seite 5 wird einfach nach der zweiten Aktualisierung, welche für diese Seite auftritt, verändert. Wenn die Aktualisierung einen dritten Block involviert, wird eine weitere Spalte für diesen anderen Block hinzugefügt. Die Tabelle aus 12, welche durch Lesen der Overhead-Daten aus jeder der Seiten in Blöcken, zu denen Daten von einer gemeinsamen LBN geschrieben wurden, erstellt wird, kann durch die erste Implementierung ver wendet werden, wenn die umgekehrte Seitenlesetechnik nicht verwendet wird. Wenn die oben beschriebene umgekehrte Seitenlesetechnik verwendet wird, muss die Tabelle in 12 nur zum Identifizieren einer Beziehung zwischen einer LBN und allen PBNs, welche die Daten von dieser LBN enthalten, erstellt werden.
  • Ein effizienter Weg, um Seiten von Daten zu organisieren, welche von einem physikalischem Block gelesen werden, wobei eine oder mehrere der Seiten aktualisiert worden sind, ist in 13 dargestellt. In einem flüchtigen Speicher des Controllers wird genügend Speicher zur Verfügung gestellt, um zumindest mehrere Seiten von Daten und vorzugsweise einen vollen Block Daten zu einer Zeit zu puffern. Dies ist in 13 gezeigt. Sechzehn Seiten Daten, entsprechend der in einem nichtflüchtigen Speicherblock gespeicherten Anzahl, werden im Controllerspeicher gespeichert. Da die Seiten am häufigsten ungeordnet gelesen werden, wird jede Seite Daten in ihrer richtigen Position in Bezug auf die anderen Seiten gespeichert. Beispielsweise wird in der umgekehrten Seitenleseoperation in 11, falls die logische Seite 8 zuerst zu lesen ist, so wird diese in Position 8 des Controllerspeichers gespeichert, was mit "1" im Kreis angedeutet wird. Die Nächste ist die logische Seite 7 und so weiter, bis alle vom Host verlangten Seiten Daten gelesen und im Controllerspeicher gespeichert sind. Der gesamte Satz von Seiten Daten wird dann ohne die Reihenfolge der Daten manipulieren zu müssen in den Speicherpuffer zum Host transferiert. Die Seiten Daten wurden bereits durch Schreiben in die richtige Position im Controllerspeicher organisiert.
  • Ein Verfahren zum Programmieren eines nichtflüchtige Speichersystems, welches die mit Bezug auf die 8 und 9 beschriebenen Techniken verwendet, ist im Flussdiagramm in 14 dargestellt. Daten für Seiten einer vorhandenen, zu aktualisierenden Datei werden, wie durch Block 52 angedeutet, vom Hostsystem empfangen. Mit einem Schritt 53 wird zuerst ermittelt, ob die Anzahl der zu speichernden Seiten aktualisierter Daten gleich oder größer als die Speicherkapazität eines Blocks des Systems ist. Zur Einfachheit werden 16 Seiten als Blockkapazität im oben beschriebenen Beispiel gezeigt. Wenn ja, werden in einem Schritt 55 ein oder mehrere unbenutzte, gelöschte Blöcke adressiert und die neuen Seiten werden in einem Schritt 57 in die adressierten Blöcke geschrieben. Typischerweise wird das Aktualisieren eines oder mehrerer Blöcke Daten darin resultieren, dass in einem oder mehreren Blöcken, in denen die Daten gespeichert werden, die Daten durch die neuen Daten ersetzt werden. Wenn ja, wie durch Schritt 59 angedeutet, werden diese Blöcke mit ersetzten Daten zum Löschen gekennzeichnet. Um die Leistung zu steigern, finden Löschoperationen vorzugsweise im Hintergrund statt, oder wenn vom Host angeforderte Programmier- oder Leseoperationen nicht erfolgen. Nach dem die Blöcke gelöscht wurden, kommen diese zur weiteren Verwendung zum Bestand nicht verwendeter gelöschter Blöcke. Alternativ kann das Löschen der Blöcke verzögert werden, bis diese für Programmieroperationen benötigt werden.
  • Falls andererseits im Schritt 53 festgestellt wird, dass weniger Seiten neuer Daten vorhanden sind, um die volle Speicherkapazität eines Blockes zu nutzen, bestimmt ein nächster Schritt 61, ob genügend unbenutzte Seiten in einem Block vorhanden sind, welche mit anderen Daten programmiert sind. Falls ja, wird solch ein Block in einem Schritt 63 adressiert. Falls nein, wird in einem Schritt 65 ein vollkommen ungenutzter, gelöschter Block adressiert. In beiden Fällen werden in einem Schritt 67 die neuen Daten in unbenutzte Seiten des adressierten Blocks programmiert. Als ein Teil dieses Programmierprozesses wird der LBN und Seiten-Offset in die Felder 41 geschrieben und der Zeitstempel wird in die Felder 43 von jeder der Seiten (8) der aktualisierten Daten wie in der oben beschriebenen Weise geschrieben.
  • Ein wünschenswertes Merkmal des Programmierprozesses ist, für zukünftiges Programmieren jeden der Blöcke, welche nur ersetzte Daten speichern, zur Verfügung zu stellen. So wird in einem Schritt 69 geprüft, ob der Aktualisierungsprozess zu einem verbleibenden ganzen Block mit nur ersetzten Daten geführt hat. Wenn ja, wird solch ein Block in einem Schritt 71 zum Löschen eingereiht und der Prozess ist dann abgeschlossen. Falls nein, wird der Schritt 71 ausgelassen und die Datenaktualisierung ist abgeschlossen.
  • METABLOCK OPERATIONEN
  • Um die Leistung durch Reduzieren der Programmierzeit zu erhöhen, ist ein Ziel, so viele Zellen wie möglich in einem vernünftigen Maße parallel zu Programmieren, ohne sich andere Nachteile zuzuziehen. Eine Implementierung unterteilt das Speicherarray in größtenteils unabhängige Sub-Arrays oder Einheiten, wie zum Beispiel die in 15 gezeigten Einheiten 80-83, wobei jede Einheit wiederum in eine große Anzahl von Blöcken unterteilt ist. Seiten von Daten werden dann zur gleichen Zeit in mehr als einer der Einheiten programmiert. Eine weitere Konfiguration kombiniert darüber hinaus eine oder mehrere dieser Einheiten von mehreren Speicherchips. Diese Multi-Chips können mit einem einzelnen Bus (wie in 2 gezeigt) oder mehreren unabhängigen Bussen für einen höheren Datendurchsatz verbunden werden. Eine Erweiterung davon besteht darin, Blöcke von unterschiedlichen Einheiten zum gemeinsamen Programmieren, Lesen und Löschen zu verbinden. Ein Beispiel ist in 15 gezeigt. Beispielsweise können die Blöcke 85-88 mit entsprechenden von den Einheiten 80-83 zusammen als ein Metablock betrieben werden. Mit den oben beschriebenen Speicherausführungen ist jeder Block die kleinste löschbare Gruppe des Speicherarrays, welche typischerweise in mehrere Seiten unterteilt sind, wobei eine Seite die kleinste Anzahl von Zellen enthält, welche zusammen innerhalb des Blocks programmiert werden können. Deshalb wird eine Programmieroperation des in 15 gezeigten Metablocks typischerweise das simultane Programmieren von Daten in zumindest eine Seite von jedem der den Metablock bildenden Blöcke 85-88 enthalten. Dies wird solange wiederholt, bis der Metablock gefüllt ist oder alle eingehenden Daten programmiert sind. Andere Metablöcke werden von unterschiedlichen Blöcken der Arrayeinheiten mit einem Block von jeder Einheit gebildet.
  • Im Ablauf solch einen Speicher ebenso mit anderen zu betreiben, müssen weniger Seiten Daten als in einem gesamten Block häufig aktualisiert werden. Dies kann in der gleichen Art und Weise wie oben beschrieben, mit Bezug auf entweder 4 oder 6, für individuelle Blöcke eines Metablocks durchgeführt werden, jedoch vorzugsweise durch Verwendung der mit Bezug auf 8 beschriebenen, verbesserten Technik. Wenn eine dieser drei Techniken zum Aktualisieren von Daten von einem Block der Metablöcke verwendet wird, wird auch ein zusätzlicher Speicherblock innerhalb der gleichen Einheit verwendet. Darüber hinaus kann eine Datenaktualisierung das Schreiben neuer Daten für eine oder mehrere Seiten von zwei oder mehreren Blöcken eines Metablocks erfordern. Dies kann dann die Verwendung von bis zu vier zusätzlichen Blöcken 90-93 mit einem in jeder der vier Einheiten erfordern, um eine in dem Metablock gespeicherte Datei zu aktualisieren, obwohl nur die Daten in wenigen Seiten aktualisiert werden.
  • Um die Anzahl von Blöcken zu reduzieren, welche für solche partielle Blockaktualisierungen benötigt werden, werden gemäß einem anderen Gedanken der Erfindung Aktualisierungen in Seiten von Daten innerhalb eines der Blöcke des gezeigten Metablocks zu einem einzelnen zusätzlichen Block 90 in der Speichereinheit 80 durchgeführt, solange unbenutzte Seiten im Block 80 verbleiben, wie in 16 gezeigt. Wenn beispielsweise Daten in drei Seiten des Blocks 86 und in zwei Seiten des Blocks 88 aktualisiert werden, werden alle fünf Seiten der neuen Daten in den Block 90 geschrieben. Dies kann die Verwendung eines Speicherblocks einsparen und dadurch effektiv die Anzahl von verfügbaren gelöschten Blöcken um einen Block erhöhen. Dies hilft zu verhindern oder zumindest hinauszuzögern, dass ein Vorrat gelöschter Blöcke ausgeschöpft wird. Wenn eine oder mehrere Seiten von jedem der vier Blöcke 85-88 aktualisiert werden, werden alle der neuen Datenseiten in den einzelnen Block 90 programmiert. Dadurch wird verhindert, drei zusätzliche Speicherblöcke zu Binden, um die Aktualisierung durchzuführen. Wenn die Anzahl von Seiten neuer Daten die Kapazität eines unbenutzten Blocks übersteigt, werden Seiten, welche der Block 90 nicht aufnehmen kann, in einen anderen unbenutzten Block geschrieben, welcher sich in der selben Einheit 80 oder in einer der anderen Einheiten 81-83 befinden kann.

Claims (6)

  1. Verfahren zum Ersetzen von Daten durch neue Daten in einem nichtflüchtigen Speichersystem mit einem Array aus nichtflüchtigen Speicherelementen (400), welches in Blöcken (35, 39) organisiert ist, wobei diese Blöcke in Seiten organisiert sind und jeder Block die kleinste Anzahl von löschbaren Speicher-Elementen enthält; umfassend Schreiben neuer Daten als aktualisierte Seiten in Seiten eines anderen Blocks, wobei diese neuen Daten weniger als alle der ursprünglichen Seiten dieses anderen Blocks umfassen; Adressierung sowohl der ursprünglichen Seiten als auch der aktualisierten Seiten mit derselben logischen Adresse; und Lesen und Unterscheiden der aktualisierten Seiten von den ursprünglichen Seiten, dadurch gekennzeichnet, dass das Lesen, in Bezug auf die relative Zeit des Schreibens in Seiten dieser Blöcke, erfolgt durch Lesen der Seiten aus diesem Block und danach aus diesem anderen Block, beides in umgekehrter Reihenfolge als diejenige, in der die Seiten geschrieben wurden und alle Seiten ignoriert werden, die die gleiche logische Adresse haben wie Seiten, die bereits gelesen wurden.
  2. Verfahren gemäß Anspruch 1, worin die Seiten innerhalb der einzelnen Blöcke des Speichersystems in einer bestimmten Reihenfolge programmiert werden.
  3. Verfahren gemäß Anspruch 1 oder Anspruch 2, einschließend den Schritt, die einzelnen Speicherelemente (400), die mehr als zwei Speicherzustände aufweisen, anzusteuern und dabei mehr als ein Bit Daten in jedem Speicherelement zu speichern, wobei Lesen von Seiten mit Daten das Lesen von mehr als zwei Speicherzuständen der einzelnen Speicherelemente umfasst.
  4. Nichtflüchtiges Speichersystem, umfassend ein Array aus nichtflüchtigen Speicherelementen (400), welches in Blöcken (35, 39) organisiert ist, wobei diese Blöcke in Seiten organisiert sind und jeder Block die kleinste Anzahl von löschbaren Speicher-Elementen enthält; einen Programmier-Mechanismus, der in Seiten dieses Blocks eine aktualisierte Version mit weniger als alle der ursprünglichen Seiten dieses anderen Blocks schreibt; einen Adressierungs-Mechanismus (401, 402, 450), der sowohl die ursprünglichen Seiten als auch die aktualisierten Seiten mit derselben logischen Adresse adressiert; und einen Lese-Mechanismus (404, 450, 454), der zwischen den aktualisierten Seiten und den ursprünglichen Seiten unterscheidet, dadurch gekennzeichnet, dass der Lese-Mechanismus, in Bezug auf die relative Zeit des Schreibens in Seiten dieser Blöcke, erfolgt durch Lesen der Seiten aus diesem Block und danach aus diesem anderen Block, beides in umgekehrter Reihenfolge als diejenige, in der die Seiten geschrieben wurden und alle Seiten ignoriert werden, die die gleiche logische Adresse haben wie Seiten, die bereits gelesen wurden.
  5. Speichersystem gemäß Anspruch 4, in dem die Datenspeicherelemente einzelne Floating Gates umfassen.
  6. Speichersystem gemäß Anspruch 4 oder Anspruch 5, das sich in einer geschlossenen Karte befindet, die elektrische Kontakte zum Verbinden mit einem Host-System aufweist.
DE60211653T 2001-01-19 2002-01-07 Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher Expired - Lifetime DE60211653T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/766,436 US6763424B2 (en) 2001-01-19 2001-01-19 Partial block data programming and reading operations in a non-volatile memory
US766436 2001-01-19
PCT/US2002/000366 WO2002058074A2 (en) 2001-01-19 2002-01-07 Partial block data programming and reading operations in a non-volatile memory

Publications (2)

Publication Number Publication Date
DE60211653D1 DE60211653D1 (de) 2006-06-29
DE60211653T2 true DE60211653T2 (de) 2007-04-12

Family

ID=25076410

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60211653T Expired - Lifetime DE60211653T2 (de) 2001-01-19 2002-01-07 Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher

Country Status (11)

Country Link
US (6) US6763424B2 (de)
EP (4) EP2953030A1 (de)
JP (3) JP4155824B2 (de)
KR (2) KR100944996B1 (de)
CN (3) CN1290021C (de)
AT (1) ATE327556T1 (de)
AU (1) AU2002236723A1 (de)
DE (1) DE60211653T2 (de)
ES (1) ES2262782T3 (de)
TW (1) TWI221217B (de)
WO (1) WO2002058074A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012022728A1 (de) * 2012-11-21 2014-05-22 Unify Gmbh & Co. Kg Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens

Families Citing this family (451)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5657332A (en) * 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
JP3215237B2 (ja) * 1993-10-01 2001-10-02 富士通株式会社 記憶装置および記憶装置の書き込み/消去方法
KR100544175B1 (ko) * 1999-05-08 2006-01-23 삼성전자주식회사 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
WO2003005203A2 (en) * 2001-07-03 2003-01-16 Research In Motion Limited System and method of object-oriented persistence
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
KR100449708B1 (ko) * 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
JP2004062554A (ja) * 2002-07-30 2004-02-26 Oki Electric Ind Co Ltd フラッシュメモリの管理方法
KR100944054B1 (ko) * 2002-08-29 2010-02-24 파나소닉 주식회사 반도체메모리장치 및 플래시메모리에의 데이터기입방법
US7234036B1 (en) 2002-10-28 2007-06-19 Sandisk Corporation Method and apparatus for resolving physical blocks associated with a common logical block
US7039788B1 (en) 2002-10-28 2006-05-02 Sandisk Corporation Method and apparatus for splitting a logical block
AU2003282544A1 (en) * 2002-10-28 2004-05-25 Sandisk Corporation Automated wear leveling in non-volatile storage systems
US7254668B1 (en) 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
DE10252059B3 (de) * 2002-11-08 2004-04-15 Infineon Technologies Ag Verfahren zum Betreiben einer Speicheranordnung
US7478248B2 (en) * 2002-11-27 2009-01-13 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for securing data on a portable storage device
EP1435576B1 (de) * 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Verfahren und Vorrichtung zur blockorientierten Speicherverwaltung in Smartcard-Steuerungen
US6944063B2 (en) 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
JP2004265162A (ja) * 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
KR100526178B1 (ko) * 2003-03-31 2005-11-03 삼성전자주식회사 플래시 메모리 액세스 장치 및 방법
US20040228411A1 (en) * 2003-05-12 2004-11-18 Sony Corporation Method and system for decoder clock control in presence of jitter
US7117326B2 (en) * 2003-06-26 2006-10-03 Intel Corporation Tracking modifications to a memory
US6891740B2 (en) * 2003-08-29 2005-05-10 Hitachi Global Storage Technologies Netherlands B.V. Method for speculative streaming data from a disk drive
US7188228B1 (en) 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
JP2005128771A (ja) * 2003-10-23 2005-05-19 Fujitsu Ltd データファイルシステム、データアクセスサーバ、およびデータアクセスプログラム
DE10349595B3 (de) * 2003-10-24 2004-12-09 Hyperstone Ag Verfahren zum Schreiben von Speichersektoren in einem blockweise löschbaren Speicher
KR100608602B1 (ko) * 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
JP2005190288A (ja) * 2003-12-26 2005-07-14 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
WO2005066792A2 (en) * 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with memory planes alignment
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7383375B2 (en) * 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
DE102004005290B3 (de) * 2004-02-03 2005-07-21 Giesecke & Devrient Gmbh Verfahren und Vorrichtung zur Absicherung von Daten in einem nichtflüchtigen Datenspeicher
US7127549B2 (en) 2004-02-04 2006-10-24 Sandisk Corporation Disk acceleration using first and second storage devices
US7136973B2 (en) 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
US7529904B2 (en) * 2004-03-31 2009-05-05 International Business Machines Corporation Storing location identifier in array and array pointer in data structure for write process management
US7325090B2 (en) 2004-04-29 2008-01-29 Sandisk Il Ltd. Refreshing data stored in a flash memory
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
JP4253272B2 (ja) * 2004-05-27 2009-04-08 株式会社東芝 メモリカード、半導体装置、及び半導体メモリの制御方法
US8429313B2 (en) * 2004-05-27 2013-04-23 Sandisk Technologies Inc. Configurable ready/busy control
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US8375146B2 (en) 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
JP3942612B2 (ja) * 2004-09-10 2007-07-11 東京エレクトロンデバイス株式会社 記憶装置、メモリ管理方法及びプログラム
JP4586469B2 (ja) * 2004-09-15 2010-11-24 ソニー株式会社 メモリ制御装置、メモリ制御方法、プログラム
KR100624960B1 (ko) * 2004-10-05 2006-09-15 에스티마이크로일렉트로닉스 엔.브이. 반도체 메모리 장치 및 이의 패키지 및 이를 이용한메모리 카드
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7395404B2 (en) * 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7386655B2 (en) * 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
KR100669342B1 (ko) * 2004-12-21 2007-01-16 삼성전자주식회사 낸드 플래시 메모리 장치의 프로그램 방법
KR100684887B1 (ko) * 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7212440B2 (en) 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
KR100698655B1 (ko) * 2005-01-04 2007-03-23 주식회사 팬택앤큐리텔 이동통신 단말기의 파일 업데이트 시스템과, efs 영역헤더 손실로 인한 치명적인 에러를 방지하는 이동통신단말기의 부팅 관리 시스템과, 이동통신 단말기의 파일업데이트 방법 및 efs 영역 헤더 손실로 인한 치명적인에러를 방지하는 이동통신 단말기의 부팅 방법
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US7206230B2 (en) 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
EP1712984A1 (de) * 2005-04-15 2006-10-18 Deutsche Thomson-Brandt Gmbh Verfahren und System zum Zugriff auf logische Datenblöcke in einem Speichersystem mit mehreren Speichereinheiten, die an mindestens einen gemeinsamen Datenbus angeschlossen sind
EP2378432A1 (de) 2005-04-21 2011-10-19 Violin Memory, Inc. Verbindungssystem
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
JP5130646B2 (ja) 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
US7797479B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7627733B2 (en) 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
KR100714873B1 (ko) * 2005-09-06 2007-05-07 삼성전자주식회사 비휘발성 메모리에서 데이터 갱신 방법 및 이를 위한 장치
US8429326B2 (en) 2005-09-12 2013-04-23 Mediatek Inc. Method and system for NAND-flash identification without reading device ID table
CN100375026C (zh) * 2005-09-13 2008-03-12 联想(北京)有限公司 快速存储设备软件的安装/更新方法
US20070089023A1 (en) * 2005-09-30 2007-04-19 Sigmatel, Inc. System and method for system resource access
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) * 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US20070106842A1 (en) * 2005-11-04 2007-05-10 Conley Kevin M Enhanced first level storage caching methods using nonvolatile memory
US7634585B2 (en) * 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US7447066B2 (en) * 2005-11-08 2008-11-04 Sandisk Corporation Memory with retargetable memory cell redundancy
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7730453B2 (en) * 2005-12-13 2010-06-01 Microsoft Corporation Runtime detection for invalid use of zero-length memory allocations
JP2009521049A (ja) * 2005-12-21 2009-05-28 エヌエックスピー ビー ヴィ ブロック消去可能な記憶場所を有するメモリ
US20070143567A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US9213627B2 (en) 2005-12-21 2015-12-15 Nxp B.V. Non-volatile memory with block erasable locations
US20070143378A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with adaptive file handling in a directly mapped file storage system
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143561A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7546515B2 (en) * 2005-12-27 2009-06-09 Sandisk Corporation Method of storing downloadable firmware on bulk media
US7536627B2 (en) * 2005-12-27 2009-05-19 Sandisk Corporation Storing downloadable firmware on bulk media
KR100772863B1 (ko) 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
US7793059B2 (en) * 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
US7609561B2 (en) * 2006-01-18 2009-10-27 Apple Inc. Disabling faulty flash memory dies
US7752391B2 (en) * 2006-01-20 2010-07-06 Apple Inc. Variable caching policy system and method
US7702935B2 (en) * 2006-01-25 2010-04-20 Apple Inc. Reporting flash memory operating voltages
US20070174641A1 (en) * 2006-01-25 2007-07-26 Cornwell Michael J Adjusting power supplies for data storage devices
TWI311327B (en) * 2006-01-26 2009-06-21 Nuvoton Technology Corporatio Method for page random write and read in the block of flash memory
US7861122B2 (en) * 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US7912994B2 (en) * 2006-01-27 2011-03-22 Apple Inc. Reducing connection time for mass storage class peripheral by internally prefetching file data into local cache in response to connection to host
US7594043B2 (en) * 2006-01-27 2009-09-22 Apple Inc. Reducing dismount time for mass storage class devices
JP2007280108A (ja) * 2006-04-07 2007-10-25 Sony Corp 記憶媒体制御装置、記憶媒体制御方法、プログラム
US7849302B2 (en) * 2006-04-10 2010-12-07 Apple Inc. Direct boot arrangement using a NAND flash memory
US7451264B2 (en) * 2006-04-13 2008-11-11 Sandisk Corporation Cycle count storage methods
US7467253B2 (en) * 2006-04-13 2008-12-16 Sandisk Corporation Cycle count storage systems
US7511646B2 (en) * 2006-05-15 2009-03-31 Apple Inc. Use of 8-bit or higher A/D for NAND cell value
US7639542B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Maintenance operations for multi-level data storage cells
US7911834B2 (en) * 2006-05-15 2011-03-22 Apple Inc. Analog interface for a flash memory die
US7701797B2 (en) * 2006-05-15 2010-04-20 Apple Inc. Two levels of voltage regulation supplied for logic and data programming voltage of a memory device
US8000134B2 (en) 2006-05-15 2011-08-16 Apple Inc. Off-die charge pump that supplies multiple flash devices
US7613043B2 (en) * 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US7568135B2 (en) 2006-05-15 2009-07-28 Apple Inc. Use of alternative value in cell detection
US7639531B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Dynamic cell bit resolution
US7852690B2 (en) * 2006-05-15 2010-12-14 Apple Inc. Multi-chip package for a flash memory
US7551486B2 (en) * 2006-05-15 2009-06-23 Apple Inc. Iterative memory cell charging based on reference cell value
JP4153535B2 (ja) * 2006-05-30 2008-09-24 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
US7567461B2 (en) * 2006-08-18 2009-07-28 Micron Technology, Inc. Method and system for minimizing number of programming pulses used to program rows of non-volatile memory cells
US8001314B2 (en) 2006-09-12 2011-08-16 Apple Inc. Storing a driver for controlling a memory
US7593259B2 (en) 2006-09-13 2009-09-22 Mosaid Technologies Incorporated Flash multi-level threshold distribution scheme
US7646054B2 (en) * 2006-09-19 2010-01-12 Sandisk Corporation Array of non-volatile memory cells with floating gates formed of spacers in substrate trenches
US7696044B2 (en) * 2006-09-19 2010-04-13 Sandisk Corporation Method of making an array of non-volatile memory cells with floating gates formed of spacers in substrate trenches
US7716538B2 (en) * 2006-09-27 2010-05-11 Sandisk Corporation Memory with cell population distribution assisted read margining
US7886204B2 (en) * 2006-09-27 2011-02-08 Sandisk Corporation Methods of cell population distribution assisted read margining
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
US8151060B2 (en) * 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
WO2008070191A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
KR101354152B1 (ko) * 2006-12-18 2014-01-27 삼성전자주식회사 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치
US7554855B2 (en) * 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
US7642160B2 (en) * 2006-12-21 2010-01-05 Sandisk Corporation Method of forming a flash NAND memory cell array with charge storage elements positioned in trenches
US7800161B2 (en) * 2006-12-21 2010-09-21 Sandisk Corporation Flash NAND memory cell array with charge storage elements positioned in trenches
US8370561B2 (en) * 2006-12-24 2013-02-05 Sandisk Il Ltd. Randomizing for suppressing errors in a flash memory
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7917686B2 (en) * 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
KR100825802B1 (ko) * 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
US7577059B2 (en) * 2007-02-27 2009-08-18 Mosaid Technologies Incorporated Decoding control with address transition detection in page erase function
US20090088088A1 (en) * 2007-02-28 2009-04-02 Crick Information Technologies Personal Information Communication Device and Method
WO2008106269A1 (en) * 2007-02-28 2008-09-04 Ty Joseph Caswell Personal information communication device and method
US7804718B2 (en) * 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
US7814304B2 (en) * 2007-03-14 2010-10-12 Apple Inc. Switching drivers between processors
US7613051B2 (en) 2007-03-14 2009-11-03 Apple Inc. Interleaving charge pumps for programmable memories
US7573773B2 (en) * 2007-03-28 2009-08-11 Sandisk Corporation Flash memory with data refresh triggered by controlled scrub data reads
US7477547B2 (en) * 2007-03-28 2009-01-13 Sandisk Corporation Flash memory refresh techniques triggered by controlled scrub data reads
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US7869277B1 (en) 2007-04-25 2011-01-11 Apple Inc. Managing data writing to memories
US7870327B1 (en) 2007-04-25 2011-01-11 Apple Inc. Controlling memory operations using a driver and flash memory type tables
US7996599B2 (en) 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US7913032B1 (en) 2007-04-25 2011-03-22 Apple Inc. Initiating memory wear leveling
US20080288712A1 (en) 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
JP4702703B2 (ja) * 2007-04-26 2011-06-15 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8332574B2 (en) * 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
US7577029B2 (en) * 2007-05-04 2009-08-18 Mosaid Technologies Incorporated Multi-level cell access buffer with dual function
US8073648B2 (en) * 2007-05-14 2011-12-06 Sandisk Il Ltd. Measuring threshold voltage distribution in memory using an aggregate characteristic
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
JP5216003B2 (ja) 2007-06-01 2013-06-19 パナソニック株式会社 記録装置
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8566504B2 (en) * 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
JP4535117B2 (ja) 2007-11-06 2010-09-01 ソニー株式会社 メモリ装置、メモリ管理方法、およびプログラム
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
US7613045B2 (en) * 2007-11-26 2009-11-03 Sandisk Il, Ltd. Operation sequence and commands for measuring threshold voltage distribution in memory
US8751726B2 (en) 2007-12-05 2014-06-10 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US20090164745A1 (en) * 2007-12-21 2009-06-25 Alan Sinclair System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
TW200931425A (en) * 2008-01-11 2009-07-16 Phison Electronics Corp Method for managing flash memory blocks and controller using the same
US8068365B2 (en) 2008-02-04 2011-11-29 Mosaid Technologies Incorporated Non-volatile memory device having configurable page size
WO2009097681A1 (en) 2008-02-04 2009-08-13 Mosaid Technologies Incorporated Flexible memory operations in nand flash devices
JP2009199211A (ja) * 2008-02-20 2009-09-03 Sony Computer Entertainment Inc メモリ制御方法及び装置、コンピュータプログラム
CN101978361B (zh) 2008-02-20 2013-06-05 索尼电脑娱乐公司 存储器控制方法以及装置、存储器访问控制方法
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8695087B2 (en) * 2008-04-04 2014-04-08 Sandisk Il Ltd. Access control for a memory device
US20100017558A1 (en) 2008-04-11 2010-01-21 Richard Matthew Fruin Memory device operable in read-only and re-writable modes of operation
KR100982440B1 (ko) 2008-06-12 2010-09-15 (주)명정보기술 단일 플래시 메모리의 데이터 관리시스템
US7848144B2 (en) * 2008-06-16 2010-12-07 Sandisk Corporation Reverse order page writing in flash memories
JP5180726B2 (ja) * 2008-07-31 2013-04-10 株式会社日立製作所 記憶装置およびデータ書き込み制御方法
US20100037102A1 (en) * 2008-08-08 2010-02-11 Seagate Technology Llc Fault-tolerant non-volatile buddy memory structure
US8438325B2 (en) * 2008-10-09 2013-05-07 Cadence Design Systems, Inc. Method and apparatus for improving small write performance in a non-volatile memory
US8650355B2 (en) * 2008-10-15 2014-02-11 Seagate Technology Llc Non-volatile resistive sense memory on-chip cache
US7830700B2 (en) * 2008-11-12 2010-11-09 Seagate Technology Llc Resistive sense memory array with partial block update capability
JP5193822B2 (ja) * 2008-11-19 2013-05-08 株式会社東芝 追記型メモリデバイス
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US8205063B2 (en) * 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
JP4666081B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4844639B2 (ja) * 2009-02-19 2011-12-28 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8489801B2 (en) * 2009-03-04 2013-07-16 Henry F. Huang Non-volatile memory with hybrid index tag array
JP5341584B2 (ja) * 2009-03-17 2013-11-13 株式会社東芝 コントローラ、及びメモリシステム
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8832353B2 (en) * 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
KR101556779B1 (ko) * 2009-04-17 2015-10-02 삼성전자주식회사 저장 장치의 액세스 방법
US8296503B2 (en) * 2009-05-26 2012-10-23 Mediatek Inc. Data updating and recovering methods for a non-volatile memory array
CN102576330B (zh) * 2009-06-12 2015-01-28 提琴存储器公司 具有持久化无用单元收集机制的存储系统
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
TWI425513B (zh) * 2009-08-13 2014-02-01 Silicon Motion Inc 識別快閃記憶體中區塊之資料頁的方法以及相關之記憶裝置
US8130543B2 (en) * 2009-08-13 2012-03-06 Macronix International Co., Ltd. Method and apparatus for increasing memory programming efficiency through dynamic switching of sense amplifiers
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법
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
JP5377175B2 (ja) * 2009-09-08 2013-12-25 株式会社東芝 コントローラ、及びデータ記憶装置
US8255655B2 (en) 2009-10-02 2012-08-28 Sandisk Technologies Inc. Authentication and securing of write-once, read-many (WORM) memory devices
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
US8364929B2 (en) * 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device
US8745353B2 (en) * 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes
WO2011058700A1 (ja) 2009-11-11 2011-05-19 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム
EP2507710B1 (de) * 2009-11-30 2018-10-31 Hewlett-Packard Enterprise Development LP Remapping für speicherabnutzungsausgleich
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
TWI446349B (zh) * 2010-03-04 2014-07-21 Phison Electronics Corp 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器
CN102193871B (zh) * 2010-03-12 2014-08-20 群联电子股份有限公司 非挥发性存储器存取方法、系统及非挥发性存储器控制器
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8886664B2 (en) 2010-05-13 2014-11-11 Microsoft Corporation Decreasing duplicates and loops in an activity record
US8381018B2 (en) 2010-05-21 2013-02-19 Mediatek Inc. Method for data recovery for flash devices
US8838878B2 (en) * 2010-06-01 2014-09-16 Greenliant Llc Method of writing to a NAND memory block based file system with log based buffering
KR20110138076A (ko) * 2010-06-18 2011-12-26 삼성전자주식회사 데이터 저장 장치 및 그것의 쓰기 방법
US8626986B2 (en) * 2010-06-30 2014-01-07 Sandisk Technologies Inc. Pre-emptive garbage collection of memory blocks
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
JP4818453B1 (ja) * 2010-07-30 2011-11-16 株式会社東芝 電子機器およびデータ読み出し方法
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8850161B2 (en) * 2010-10-13 2014-09-30 Riverbed Technology, Inc. Method of improving performance of a data storage device
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US9003153B2 (en) 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
US20120117305A1 (en) * 2010-11-08 2012-05-10 Greenliant Llc Method Of Storing Blocks Of Data In A Plurality Of Memory Devices For High Speed Sequential Read, A Memory Controller And A Memory System
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
US8472280B2 (en) 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
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
US9324433B2 (en) * 2011-04-25 2016-04-26 Microsoft Technology Licensing, Llc Intelligent flash reprogramming
TWI442230B (zh) * 2011-04-28 2014-06-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) 2011-05-12 2016-07-19 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
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
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
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache
US8719648B2 (en) 2011-07-27 2014-05-06 International Business Machines Corporation Interleaving of memory repair data compression and fuse programming operations in single fusebay architecture
US8467260B2 (en) 2011-08-05 2013-06-18 International Business Machines Corporation Structure and method for storing multiple repair pass data into a fusebay
US8484543B2 (en) 2011-08-08 2013-07-09 International Business Machines Corporation Fusebay controller structure, system, and method
JP2014522066A (ja) 2011-08-09 2014-08-28 エルエスアイ コーポレーション 入出力デバイスとコンピューティングホストとの相互運用
US20130042051A1 (en) * 2011-08-10 2013-02-14 Skymedi Corporation Program method for a non-volatile memory
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US8537627B2 (en) 2011-09-01 2013-09-17 International Business Machines Corporation Determining fusebay storage element usage
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9477590B2 (en) * 2011-09-16 2016-10-25 Apple Inc. Weave sequence counter for non-volatile memory systems
US9588883B2 (en) 2011-09-23 2017-03-07 Conversant Intellectual Property Management Inc. Flash memory system
US8949517B2 (en) 2011-10-05 2015-02-03 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
TWI454911B (zh) * 2011-10-12 2014-10-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US8687421B2 (en) 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
KR101893145B1 (ko) 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US8843711B1 (en) * 2011-12-28 2014-09-23 Netapp, Inc. Partial write without read-modify
US8775722B2 (en) 2011-12-30 2014-07-08 Sandisk Technologies Inc. Storing data in parallel in a flash storage device using on chip page shifting between planes
US9329989B2 (en) * 2011-12-30 2016-05-03 SanDisk Technologies, Inc. System and method for pre-interleaving sequential data
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
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
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
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
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9122581B2 (en) 2012-06-12 2015-09-01 International Business Machines Corporation Data versioning in solid state memory
US9135161B2 (en) 2012-06-12 2015-09-15 International Business Machines Corporation Flash translation layer system for maintaining data versions in solid state memory
US9116793B2 (en) 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US9122582B2 (en) 2012-06-12 2015-09-01 International Business Machines Corporation File system for maintaining data versions in solid state memory
WO2014002160A1 (ja) * 2012-06-25 2014-01-03 富士通株式会社 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
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
CN103001863B (zh) * 2012-11-27 2015-09-09 中国科学院声学研究所 数据包快速复制方法、数据包读取方法
US9047172B2 (en) 2012-11-29 2015-06-02 Intel Corporation Adaptive power control of memory map storage devices
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9195584B2 (en) 2012-12-10 2015-11-24 Sandisk Technologies Inc. Dynamic block linking with individually configured plane parameters
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
TWI497292B (zh) * 2013-01-09 2015-08-21 Memoright Corp A Method of Finding System Data Based on Index Block
US9076545B2 (en) 2013-01-17 2015-07-07 Sandisk Tecnologies Inc. Dynamic adjustment of read voltage levels based on memory cell threshold voltage distribution
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8913428B2 (en) 2013-01-25 2014-12-16 Sandisk Technologies Inc. Programming non-volatile storage system with multiple memory die
US9026757B2 (en) * 2013-01-25 2015-05-05 Sandisk Technologies Inc. Non-volatile memory programming data preservation
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8972776B2 (en) 2013-03-06 2015-03-03 Seagate Technology, Llc Partial R-block recycling
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US9465732B2 (en) 2013-03-15 2016-10-11 Sandisk Technologies Llc Binning of blocks for dynamic linking
US9037902B2 (en) 2013-03-15 2015-05-19 Sandisk Technologies Inc. Flash memory techniques for recovering from write interrupt resulting from voltage fault
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
CN104103309B (zh) * 2013-04-15 2017-11-17 旺宏电子股份有限公司 Nand阵列的操作方法及计算机可读取的非暂时性储存媒体
US9213633B2 (en) 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
WO2015008358A1 (ja) * 2013-07-18 2015-01-22 株式会社日立製作所 情報処理装置
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
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
US9786388B1 (en) 2013-10-09 2017-10-10 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
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9329992B2 (en) * 2013-12-04 2016-05-03 Silicon Motion, Inc. Data storage device and flash memory control method
US9236133B2 (en) * 2013-12-13 2016-01-12 Micron Technology, Inc. Adjusted read for partially programmed block
KR102116258B1 (ko) * 2013-12-24 2020-06-05 삼성전자주식회사 메모리 시스템 및 그것을 포함하는 유저 장치
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
KR102195298B1 (ko) 2014-02-13 2020-12-24 삼성전자주식회사 비휘발성 메모리 장치의 부분 페이지 프로그램 방법
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9230689B2 (en) 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
JP6260395B2 (ja) * 2014-03-27 2018-01-17 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
KR102292172B1 (ko) * 2014-06-23 2021-08-25 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법
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
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9552171B2 (en) 2014-10-29 2017-01-24 Sandisk Technologies Llc Read scrub with adaptive counter management
US9978456B2 (en) 2014-11-17 2018-05-22 Sandisk Technologies Llc Techniques for reducing read disturb in partially written blocks of non-volatile memory
US9349479B1 (en) 2014-11-18 2016-05-24 Sandisk Technologies Inc. Boundary word line operation in nonvolatile memory
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US9563504B2 (en) 2014-12-05 2017-02-07 Sandisk Technologies Llc Partial block erase for data refreshing and open-block programming
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
US9449700B2 (en) 2015-02-13 2016-09-20 Sandisk Technologies Llc Boundary word line search and open block read methods with reduced read disturb
US9594623B2 (en) 2015-03-24 2017-03-14 Nxp Usa, Inc. System on chip and method of updating program code on a system on chip
KR102291806B1 (ko) 2015-04-20 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
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
KR20170011645A (ko) * 2015-07-23 2017-02-02 에스케이하이닉스 주식회사 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
KR102491624B1 (ko) * 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
TWI601141B (zh) * 2015-08-21 2017-10-01 晨星半導體股份有限公司 快閃記憶體的存取方法及相關的記憶體控制器與電子裝置
CN106484630A (zh) * 2015-08-31 2017-03-08 晨星半导体股份有限公司 快闪存储器的存取方法及相关的存储器控制器与电子装置
US9653154B2 (en) 2015-09-21 2017-05-16 Sandisk Technologies Llc Write abort detection for multi-state memories
US10532481B2 (en) * 2015-11-25 2020-01-14 Ridge Tool Company Punch tool system
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
TWI599880B (zh) 2016-03-22 2017-09-21 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
TWI631463B (zh) 2016-03-22 2018-08-01 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
US10031845B2 (en) 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US10019198B2 (en) 2016-04-01 2018-07-10 Intel Corporation Method and apparatus for processing sequential writes to portions of an addressable unit
TWI604455B (zh) * 2016-05-13 2017-11-01 Silicon Motion Inc 資料儲存裝置、記憶體控制器及其資料管理方法與資料區塊管理方法
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US9881682B1 (en) 2016-11-23 2018-01-30 Seagate Technology Llc Fine grained data retention monitoring in solid state drives
FR3065303B1 (fr) * 2017-04-12 2019-06-07 Stmicroelectronics (Rousset) Sas Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
US10115472B1 (en) 2017-08-02 2018-10-30 International Business Machines Corporation Reducing read disturb effect on partially programmed blocks of non-volatile memory
CN109407963A (zh) * 2017-08-15 2019-03-01 深圳市中兴微电子技术有限公司 一种实现存储管理的方法及装置
CN107919110A (zh) * 2017-11-27 2018-04-17 哈尔滨理工大学 一种针对乐谱的译码方式
US10529435B2 (en) * 2018-01-05 2020-01-07 Sandisk Technologies Llc Fast detection of defective memory block to prevent neighbor plane disturb
EP3685271A4 (de) * 2018-01-29 2021-05-12 Hewlett-Packard Development Company, L.P. Gültigkeit von in einem speicher gespeicherten datensätzen
KR20190120966A (ko) * 2018-04-17 2019-10-25 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN110489052B (zh) * 2018-05-14 2022-11-25 慧荣科技股份有限公司 数据储存装置
KR102530327B1 (ko) 2018-06-01 2023-05-08 삼성전자주식회사 비휘발성 메모리 장치 및 그 동작 방법
US11055226B2 (en) * 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks
US10733027B2 (en) * 2018-10-07 2020-08-04 Hewlett Packard Enterprise Development Lp Memory allocator
KR20210014337A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11347404B2 (en) * 2019-08-01 2022-05-31 EMC IP Holding Company, LLC System and method for sharing spare storage capacity between a log structured file system and RAID
US11287989B2 (en) 2020-03-24 2022-03-29 Western Digital Technologies, Inc. Dynamic allocation of sub blocks
US11721397B2 (en) 2020-12-28 2023-08-08 Sandisk Technologies Llc Power saving and fast read sequence for non-volatile memory
JP2022147448A (ja) * 2021-03-23 2022-10-06 キオクシア株式会社 メモリシステム及びデータ管理方法

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4833603A (en) 1986-05-30 1989-05-23 Bull Hn Information Systems Inc. Apparatus and method for implementation of a page frame replacement algorithm in a data processing system having virtual memory addressing
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5012132A (en) 1989-10-05 1991-04-30 Xicor, Inc. Dual mode high voltage coupler
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
JP2618149B2 (ja) * 1991-04-22 1997-06-11 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ内のデータ記憶スペースを管理する方法及びキャッシュ内でページ置換を行う装置
US6347051B2 (en) * 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
JPH05233426A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US5375222A (en) 1992-03-31 1994-12-20 Intel Corporation Flash memory card with a ready/busy mask register
US5822781A (en) 1992-10-30 1998-10-13 Intel Corporation Sector-based storage device emulator having variable-sized sector
US5341330A (en) 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5649200A (en) * 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
EP0612039B1 (de) * 1993-02-15 1999-10-27 Babcock-Hitachi Kabushiki Kaisha Verfahren und Vorrichtung zur präventiven Wartung von Anlagenbauteilen
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5519843A (en) 1993-03-15 1996-05-21 M-Systems Flash memory system providing both BIOS and user storage capability
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US6078520A (en) * 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
JP3215237B2 (ja) 1993-10-01 2001-10-02 富士通株式会社 記憶装置および記憶装置の書き込み/消去方法
JPH08212019A (ja) 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JP3706167B2 (ja) 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
JPH08263361A (ja) 1995-03-23 1996-10-11 Mitsubishi Electric Corp フラッシュメモリカード
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
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
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5860090A (en) * 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
FR2742893B1 (fr) 1995-12-20 1998-01-16 Schlumberger Ind Sa Procede d'inscription d'une donnee dans une memoire reinscriptible
GB9609833D0 (en) 1996-05-10 1996-07-17 Memory Corp Plc Memory device
US5896393A (en) 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
JP4462646B2 (ja) 1996-06-28 2010-05-12 ソニー株式会社 情報処理装置および情報処理方法、リーダ/ライタおよびアクセス方法、並びに記録媒体
JPH1091490A (ja) 1996-09-12 1998-04-10 Sanyo Electric Co Ltd フラッシュメモリを利用した記憶装置
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
JPH10177797A (ja) 1996-12-17 1998-06-30 Toshiba Corp 半導体記憶装置
JP3895816B2 (ja) 1996-12-25 2007-03-22 株式会社東芝 不揮発性半導体記憶装置とその制御方法、メモリカード、及び記憶システム
US5924092A (en) 1997-02-07 1999-07-13 International Business Machines Corporation Computer system and method which sort array elements to optimize array modifications
US6034897A (en) 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6122195A (en) 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US5999947A (en) * 1997-05-27 1999-12-07 Arkona, Llc Distributing database differences corresponding to database change events made to a database table located on a server computer
JP3721725B2 (ja) 1997-07-09 2005-11-30 ソニー株式会社 情報処理方法および情報処理装置
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
JP4079506B2 (ja) 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
JPH1153235A (ja) 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
JP3119214B2 (ja) * 1997-09-30 2000-12-18 ソニー株式会社 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
JP3640154B2 (ja) 1997-09-30 2005-04-20 ソニー株式会社 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム
JP3070539B2 (ja) 1997-09-30 2000-07-31 ソニー株式会社 外部記憶装置、データ処理装置及びデータ処理方法
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6040997A (en) 1998-03-25 2000-03-21 Lexar Media, Inc. Flash memory leveling architecture having no external latch
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
JP4085478B2 (ja) 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6715068B1 (en) * 1999-03-31 2004-03-30 Fuji Photo Optical Co., Ltd. Multi-microcomputer system
DE60030876T2 (de) 1999-04-01 2007-05-03 Lexar Media, Inc., Fremont Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
US6449625B1 (en) * 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
US6288862B1 (en) 1999-07-30 2001-09-11 Storage Technology Corporation Method and mechanism to distinguish valid from outdated recording blocks in a tape drive
FR2803080A1 (fr) 1999-12-22 2001-06-29 St Microelectronics Sa Memoire flash programmable page par page
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
JP3992960B2 (ja) * 2000-10-26 2007-10-17 松下電器産業株式会社 記録装置及びプログラム
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US6529416B2 (en) * 2000-11-30 2003-03-04 Bitmicro Networks, Inc. Parallel erase operations in memory systems
US7020739B2 (en) * 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
IT1315566B1 (it) 2000-12-12 2003-02-18 Federico Renier Metodo per la certificazione dell'invio,della ricezione edell'autenticita' di documenti elettronici ed unita' di rete
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6835311B2 (en) 2002-01-31 2004-12-28 Koslow Technologies Corporation Microporous filter media, filtration systems containing same, and methods of making and using

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012022728A1 (de) * 2012-11-21 2014-05-22 Unify Gmbh & Co. Kg Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens
US10509570B2 (en) 2012-11-21 2019-12-17 Unify Gmbh & Co. Kg Method, device, and program for managing a flash memory for mass storage

Also Published As

Publication number Publication date
JP2008004117A (ja) 2008-01-10
US20090150601A1 (en) 2009-06-11
KR20090006217A (ko) 2009-01-14
US20020099904A1 (en) 2002-07-25
EP1653323A2 (de) 2006-05-03
US6763424B2 (en) 2004-07-13
EP1352394A2 (de) 2003-10-15
KR100944996B1 (ko) 2010-03-05
AU2002236723A1 (en) 2002-07-30
EP1653323A3 (de) 2011-01-26
US7818490B2 (en) 2010-10-19
JP4155824B2 (ja) 2008-09-24
CN100485641C (zh) 2009-05-06
JP2008226254A (ja) 2008-09-25
CN1514971A (zh) 2004-07-21
TWI221217B (en) 2004-09-21
US7657702B2 (en) 2010-02-02
EP2953030A1 (de) 2015-12-09
KR20030070119A (ko) 2003-08-27
US20110258386A1 (en) 2011-10-20
CN1290021C (zh) 2006-12-13
WO2002058074A3 (en) 2003-07-10
US6968421B2 (en) 2005-11-22
EP1645964A3 (de) 2011-01-26
US20110029724A1 (en) 2011-02-03
US7970987B2 (en) 2011-06-28
EP1645964A2 (de) 2006-04-12
JP4750766B2 (ja) 2011-08-17
KR101076830B1 (ko) 2011-10-25
CN1924830A (zh) 2007-03-07
DE60211653D1 (de) 2006-06-29
JP2004533029A (ja) 2004-10-28
US20060031627A1 (en) 2006-02-09
EP1352394B1 (de) 2006-05-24
WO2002058074A2 (en) 2002-07-25
US20040210708A1 (en) 2004-10-21
CN100485642C (zh) 2009-05-06
ES2262782T3 (es) 2006-12-01
JP4768771B2 (ja) 2011-09-07
CN1924831A (zh) 2007-03-07
WO2002058074A9 (en) 2002-10-03
ATE327556T1 (de) 2006-06-15
EP1653323B1 (de) 2015-05-06
US8316177B2 (en) 2012-11-20

Similar Documents

Publication Publication Date Title
DE60211653T2 (de) Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher
DE69034227T2 (de) EEprom-System mit Blocklöschung
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE69630624T2 (de) EEPROM-Matrix mit einem, dem "Flash"-Speicher ähnlichen Kern
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE60019903T2 (de) Speichersystem
DE69433320T2 (de) Ferngesteuerter rreprogrammierbarer programmspeicher fuer einen mikrokontroller
DE102005045031B4 (de) Programmierverfahren und Programmierwiederaufnahmeverfahren für ein nichtflüchtiges Speicherbauelement
DE60319563T2 (de) Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
EP2923261B1 (de) VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE602004005939T2 (de) Vorrichtung und Verfahren zur Datenverwaltung nichtflüchtiger Speicher
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
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
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE10192507B4 (de) Verfahren und Vorrichtung für die Vorhersage von Lösch- und Schreibzeiten von Flash-Speichern
DE112018000247T5 (de) System und verfahren zur lokalitätserkennung zum identifizieren von lese- oderschreibströmen in einer speichervorrichtung
DE102004013493B4 (de) Zugriffs-Verfahren für einen NAND-Flash-Speicherbaustein und ein entsprechender NAND-Flash-Speicherbaustein
DE112019007368T5 (de) Speichergerät und verfahren zur überwachung der leistungen eines speichergeräts
DE10321104B4 (de) Verfahren zur Ablage von veränderlichen Daten
EP1559111B1 (de) Verfahren zum betreiben einer speicheranordnung
DE10227256C1 (de) Verfahren zum Adressieren von blockweise löschbaren Speichern
DE102006013759B4 (de) Verfahren und Recheneinheit zum Betreiben einer Speichereinrichtung

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: SANDISK CORP., MILPITAS, CALIF., US

8363 Opposition against the patent