DE60211653T2 - Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher - Google Patents
Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
- G11C16/105—Circuits 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/12—Reading and writing aspects of erasable programmable read-only memories
- G11C2216/16—Flash 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 aus1 mit einem Systemcontroller verwendet, -
3 ist ein Zeitdiagramm einer typischen Kopieroperation des Speichersystems aus2 , -
4 stellt einen bestehenden Aktualisierungsprozess von Daten in weniger als aller Seiten eines Multi-Seiten Blocks dar, -
5A und5B sind Tabellen korrespondierender logischer und physikalischer Blockadressen für jeden der ursprünglichen, beziehungsweise der neuen Blöcke aus4 , -
6 stellt ein weiteren bestehenden Aktualisierungsprozess von Daten in weniger als aller Seiten eines Multi-Seiten Blocks dar, -
7A und7B sind Tabellen korrespondierender logischer und physikalischer Seitenadressen für jeden der ursprünglichen beziehungsweise neuen Blöcke aus6 , -
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 aus8 , -
10 stellt ein Beispiel eines Layouts der Daten in einer Seite zur Verfügung, welche in8 gezeigt sind, -
11 stellt eine weitere Entwicklung des Beispiels aus8 dar, -
12 ist eine Tabelle korrespondierender logischer und physikalischer Seitennummern für den neuen Block aus11 , -
13 stellt eine Art des Lesens der aktualisierten Daten in den Blöcken aus11 dar, -
14 ist ein Flussdiagramm eines Programmierprozesses von Daten in ein Speichersystem, welches wie in8 und9 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 aus12 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) Bus411 sowie Kontrollsignale412 zum Koppeln an einem externen Controller, eine Speichersteuerschaltung450 , um interne Speicheroperationen mit Registern für Steuer-, Adressierungs- und Statussignalen zu steuern. Ein oder mehrere Arrays400 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 Datenregister404 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 Kontrollsignale412 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 Speicherarray400 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 Datenregister404 ist auch mit dem Leseverstärker/Programmierschaltkreis454 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 Array400 , um die zu adressierende physikalische Seite auszuwählen. Der Reihendecoder401 empfängt Reihenadressen über die interne Reihenadressleitung419 von der Speicherkontrollogik450 . Ein Spaltendecoder402 empfängt Spaltenadressen über die interne Spaltenadressleitung429 von der Speicherkontrollogik450 . -
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 aus2 in einem Hostsystem in Form einer fest eingebauten Schaltung oder anders eingebettet sein. Das System benutzt einen einzelnen Controller301 , 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 Bus302 verbunden, welcher dem Controller301 ermöglicht, Kommandos und Adressen zu laden sowie Daten zu und vom Flash Speicherarray zu transferieren. Der Controller301 ist mit einem Hostsystem (nicht gezeigt) gekoppelt, mit welchem Nutzdaten zu und vom Flash Speicherarray transferiert werden. In dem Fall, wenn das System aus2 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 Block11 (PBN0) zum Speichern eines Sektors Nutzdaten in jeder seiner Seiten dargestellt. Overhead-Datenfelder, welche innerhalb jeder Seite enthalten sind, umfassen ein Feld13 , welches den LBN von Block11 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 Block15 (PBN1) wird aus einem Inventar von unbenutzten gelöschten Blöcken ausgewählt. Die Daten innerhalb der Seiten 3-5 des ursprünglichen Blocks11 werden durch drei Seiten neuer Daten17 aktualisiert. Die neuen Daten werden in die korrespondierenden Seiten 3-5 des neuen Blocks15 geschrieben und die Nutzdaten von Seiten 0-2, 6 und 7 vom Block11 werden in korrespondierende Seiten des neuen Blocks15 kopiert. Alle Seiten des neuen Blocks15 werden vorzugsweise in einer einzelnen Sequenz von Programmieroperationen programmiert. Nachdem der Block15 programmiert ist, kann der ursprüngliche Block11 gelöscht und in einem Inventar zur späteren Verwendung untergebracht werden. Das Kopieren von Daten zwischen den Blöcken11 und15 , 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 und5B zeigen unvollständige Tabellen des Mappings der logischen Blöcke in die ursprünglichen und neuen physikalischen Blöcke11 und15 vor (5A ) und nach (5B ) dem Aktualisieren von Daten mit Bezug auf4 . In diesem Beispiel speichert der ursprüngliche Block11 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 Block15 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 Block15 anstelle zum physikalischen Blocks11 gelenkt. In einer typischen Controlleroperation wird eine in der Form wie in5A und5B gezeigte Tabelle vom LBN Feld13 angelegt, welches aus einer physikalischen Seite gelesen wird und mit Kenntnis der adressierten PBN, wenn das Datenfeld13 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 Blocks21 (PBN0) wieder aktualisiert werden. Die aktualisierten Seiten 3-5 von Daten23 werden in korrespondierende Seiten eines neuen Blocks25 geschrieben. Als Teil der selben Operation wird ein alt/neu Flag27 in jede der Seiten 3-5 geschrieben, um zu kennzeichnen, dass die Daten von diesen Seiten alt sind, während das Flag27 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 Block21 geschrieben, um zu kennzeichnen, wo die aktualisierten Seiten lokalisiert sind. Die LBN und Seiten werden in einem Feld31 innerhalb jeder der physikalischen Seiten gespeichert. -
7A und7B 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 aus7B wird durch den Speichercontroller durch Lesen der Overhead Datenfelder27 ,29 und31 der Seiten innerhalb des Blocks PBN0 nach der Datenaktualisierung gebildet. Da das Flag27 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 Datenfeld29' der aktualisierten Seiten gelesen wurde und dann werden Daten von LBN0 gelesen. Die Nutzdaten, welche in den in der rechten Spalte in7B 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 und7B 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 und9 beschrieben. In diesem Beispiel ist die Situation die selbe wie in den Techniken gemäß dem Stand der Technik, welche mit Bezug auf4 -7B beschrieben werden, und zwar das teilweise nochmalige Schreiben von Daten innerhalb eines Blocks35 , obwohl jeder Block, wie nun gezeigt, 16 Seiten enthält. Neue Daten37 für jede der Seiten 3-5 vom Block35 (PBN35 ) werden in drei Seiten eines neuen Blocks39 (PBN1) geschrieben, welcher dem zuvor beschriebenen ähnlich ist, welcher zuvor gelöscht wurde. Ein LBN und Seiten-Offset Overhead Datenfeld41 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 in9 , welche von den Daten innerhalb der Felder41 und41' 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-Offsets41' , welche in jede der drei Seiten der aktualisierten Daten innerhalb des neuen Blocks PBN1 geschrieben wurden, sind die selben wie die41 , 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 Feld43 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 Feld43 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 Feld43 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 Feldes43' . 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 und43' 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 Datenseiten37 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 Daten37 in den ersten verfügbaren Seiten vom neuen Block39 (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 Block39 zu der Zeit, in der die drei Seiten mit neuen Daten37 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 in10 gezeigt. Der größte Teil sind Nutzdaten45 . Ein aus den Nutzdaten berechneter Fehlerkorrekturcode (EEC)47 ist ebenfalls in der Seite gespeichert. Overhead-Daten49 einschließlich der LBN und Seitenkennzeichnung41 (logischer Seiten-Offset), der Zeitstempel43 und ein aus den Overhead-Daten berechneter ECC51 sind ebenfalls in der Seite gespeichert. Durch einen ECC50 , welcher die Overhead-Daten abdeckt, welcher von den Nutzdaten ECC47 getrennt ist, kann der Overhead49 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-Daten49 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 Zeitstempel43 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/Seiten41 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-Bits49 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 aus9 zu einer Form in5A und5B 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 aus8 durch Einfügen einer zweiten Aktualisierung zu den ursprünglich in den Block PBN0 geschriebenen Daten dar. Neue Daten51 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 in12 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 aus12 , 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 in12 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 in13 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 in11 , falls die logische Seite 8 zuerst zu lesen ist, so wird diese in Position8 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 und9 beschriebenen Techniken verwendet, ist im Flussdiagramm in14 dargestellt. Daten für Seiten einer vorhandenen, zu aktualisierenden Datei werden, wie durch Block52 angedeutet, vom Hostsystem empfangen. Mit einem Schritt53 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 Schritt55 ein oder mehrere unbenutzte, gelöschte Blöcke adressiert und die neuen Seiten werden in einem Schritt57 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 Schritt59 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 Schritt61 , ob genügend unbenutzte Seiten in einem Block vorhanden sind, welche mit anderen Daten programmiert sind. Falls ja, wird solch ein Block in einem Schritt63 adressiert. Falls nein, wird in einem Schritt65 ein vollkommen ungenutzter, gelöschter Block adressiert. In beiden Fällen werden in einem Schritt67 die neuen Daten in unbenutzte Seiten des adressierten Blocks programmiert. Als ein Teil dieses Programmierprozesses wird der LBN und Seiten-Offset in die Felder41 geschrieben und der Zeitstempel wird in die Felder43 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 Schritt71 zum Löschen eingereiht und der Prozess ist dann abgeschlossen. Falls nein, wird der Schritt71 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 Einheiten80 -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 in2 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 in15 gezeigt. Beispielsweise können die Blöcke85 -88 mit entsprechenden von den Einheiten80 -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 in15 gezeigten Metablocks typischerweise das simultane Programmieren von Daten in zumindest eine Seite von jedem der den Metablock bildenden Blöcke85 -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 oder6 , für individuelle Blöcke eines Metablocks durchgeführt werden, jedoch vorzugsweise durch Verwendung der mit Bezug auf8 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öcken90 -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 Speichereinheit80 durchgeführt, solange unbenutzte Seiten im Block80 verbleiben, wie in16 gezeigt. Wenn beispielsweise Daten in drei Seiten des Blocks86 und in zwei Seiten des Blocks88 aktualisiert werden, werden alle fünf Seiten der neuen Daten in den Block90 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öcke85 -88 aktualisiert werden, werden alle der neuen Datenseiten in den einzelnen Block90 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 Block90 nicht aufnehmen kann, in einen anderen unbenutzten Block geschrieben, welcher sich in der selben Einheit80 oder in einer der anderen Einheiten81 -83 befinden kann.
Claims (6)
- 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. - Verfahren gemäß Anspruch 1, worin die Seiten innerhalb der einzelnen Blöcke des Speichersystems in einer bestimmten Reihenfolge programmiert werden.
- 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. - 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. - Speichersystem gemäß Anspruch 4, in dem die Datenspeicherelemente einzelne Floating Gates umfassen.
- Speichersystem gemäß Anspruch 4 oder Anspruch 5, das sich in einer geschlossenen Karte befindet, die elektrische Kontakte zum Verbinden mit einem Host-System aufweist.
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) | EP1352394B1 (de) |
JP (3) | JP4155824B2 (de) |
KR (2) | KR100944996B1 (de) |
CN (3) | CN100485641C (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)
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)
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 |
US8019789B2 (en) * | 2001-07-03 | 2011-09-13 | 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 | フラッシュメモリの管理方法 |
WO2004021191A1 (ja) | 2002-08-29 | 2004-03-11 | Matsushita Electric Industrial Co., Ltd. | 半導体メモリ装置、及び、フラッシュメモリへのデータ書き込み方法 |
US7234036B1 (en) | 2002-10-28 | 2007-06-19 | Sandisk Corporation | Method and apparatus for resolving physical blocks associated with a common logical block |
KR101122511B1 (ko) * | 2002-10-28 | 2012-03-15 | 쌘디스크 코포레이션 | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 |
US7254668B1 (en) * | 2002-10-28 | 2007-08-07 | Sandisk Corporation | Method and apparatus for grouping pages within a block |
US7039788B1 (en) | 2002-10-28 | 2006-05-02 | Sandisk Corporation | Method and apparatus for splitting a logical 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 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
US7383375B2 (en) * | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
US7433993B2 (en) * | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US20050144516A1 (en) * | 2003-12-30 | 2005-06-30 | Gonzalez Carlos J. | Adaptive deterministic grouping of blocks into multi-block units |
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US8504798B2 (en) * | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
EP1704483A2 (de) * | 2003-12-30 | 2006-09-27 | SanDisk Corporation | Nichtflüchtiger speicher und verfahren mit speicherebenen-ausrichtung |
US20050144363A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data boundary management |
KR100526188B1 (ko) * | 2003-12-30 | 2005-11-04 | 삼성전자주식회사 | 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리 |
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 |
US8429313B2 (en) * | 2004-05-27 | 2013-04-23 | Sandisk Technologies Inc. | Configurable ready/busy control |
JP4253272B2 (ja) * | 2004-05-27 | 2009-04-08 | 株式会社東芝 | メモリカード、半導体装置、及び半導体メモリの制御方法 |
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 |
US7386655B2 (en) * | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
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 |
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 |
US8122193B2 (en) | 2004-12-21 | 2012-02-21 | Samsung Electronics Co., Ltd. | Storage device and user device including the same |
KR100669342B1 (ko) * | 2004-12-21 | 2007-01-16 | 삼성전자주식회사 | 낸드 플래시 메모리 장치의 프로그램 방법 |
US7882299B2 (en) * | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US7409473B2 (en) | 2004-12-21 | 2008-08-05 | Sandisk Corporation | Off-chip data relocation |
US7849381B2 (en) * | 2004-12-21 | 2010-12-07 | Sandisk Corporation | Method for copying data in reprogrammable non-volatile memory |
KR100684887B1 (ko) * | 2005-02-04 | 2007-02-20 | 삼성전자주식회사 | 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법 |
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 |
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 |
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 |
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 |
EP2383661A1 (de) | 2005-04-21 | 2011-11-02 | Violin Memory, Inc. | Verbindungssystem |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US9384818B2 (en) | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
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 |
US7669003B2 (en) * | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
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 |
US7949845B2 (en) * | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US7552271B2 (en) | 2005-08-03 | 2009-06-23 | Sandisk Corporation | Nonvolatile memory with block management |
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 |
US7509471B2 (en) * | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
US7634585B2 (en) * | 2005-11-04 | 2009-12-15 | Sandisk Corporation | In-line cache using nonvolatile memory between host and disk device |
US20070106842A1 (en) * | 2005-11-04 | 2007-05-10 | Conley Kevin M | Enhanced first level storage caching methods using nonvolatile memory |
US7447066B2 (en) * | 2005-11-08 | 2008-11-04 | Sandisk Corporation | Memory with retargetable memory cell redundancy |
US7730453B2 (en) * | 2005-12-13 | 2010-06-01 | Microsoft Corporation | Runtime detection for invalid use of zero-length memory allocations |
US7877540B2 (en) * | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
US7793068B2 (en) | 2005-12-21 | 2010-09-07 | Sandisk Corporation | Dual mode access for non-volatile storage devices |
US7747837B2 (en) | 2005-12-21 | 2010-06-29 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
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 |
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 |
US7769978B2 (en) * | 2005-12-21 | 2010-08-03 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
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 |
EP1966701A2 (de) * | 2005-12-21 | 2008-09-10 | Nxp B.V. | Speicher mit blocklöschbaren speicherzellen |
US20070143566A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with data alignment in a directly mapped file storage system |
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 |
JP2009521045A (ja) | 2005-12-21 | 2009-05-28 | エヌエックスピー ビー ヴィ | ブロック消去可能なメモリ場所を有する不揮発性メモリ |
US7536627B2 (en) * | 2005-12-27 | 2009-05-19 | Sandisk Corporation | Storing downloadable firmware on bulk media |
US7546515B2 (en) * | 2005-12-27 | 2009-06-09 | Sandisk Corporation | Method of 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 |
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 |
US7861122B2 (en) * | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
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 |
US7613043B2 (en) * | 2006-05-15 | 2009-11-03 | Apple Inc. | Shifting reference values to account for voltage sag |
US8000134B2 (en) | 2006-05-15 | 2011-08-16 | Apple Inc. | Off-die charge pump that supplies multiple flash devices |
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 |
US7852690B2 (en) * | 2006-05-15 | 2010-12-14 | Apple Inc. | Multi-chip package for a flash memory |
US7639531B2 (en) * | 2006-05-15 | 2009-12-29 | Apple Inc. | Dynamic cell bit resolution |
US7639542B2 (en) * | 2006-05-15 | 2009-12-29 | Apple Inc. | Maintenance operations for multi-level data storage cells |
US7568135B2 (en) | 2006-05-15 | 2009-07-28 | Apple Inc. | Use of alternative value in cell detection |
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 |
US7886204B2 (en) * | 2006-09-27 | 2011-02-08 | Sandisk Corporation | Methods of cell population distribution assisted read margining |
US7716538B2 (en) * | 2006-09-27 | 2010-05-11 | Sandisk Corporation | Memory with 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 |
US8019940B2 (en) | 2006-12-06 | 2011-09-13 | Fusion-Io, Inc. | Apparatus, system, and method for a front-end, distributed raid |
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 |
US7800161B2 (en) * | 2006-12-21 | 2010-09-21 | Sandisk Corporation | Flash NAND memory cell array with charge storage elements positioned in trenches |
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 |
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 |
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 |
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 |
US8166267B2 (en) * | 2006-12-26 | 2012-04-24 | Sandisk Technologies Inc. | Managing a LBA interface in a direct data file memory system |
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 |
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 |
US20080209079A1 (en) * | 2007-02-28 | 2008-08-28 | 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 |
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 |
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 |
US7870327B1 (en) | 2007-04-25 | 2011-01-11 | Apple Inc. | Controlling memory operations using a driver and flash memory type tables |
US7869277B1 (en) | 2007-04-25 | 2011-01-11 | Apple Inc. | Managing data writing to memories |
US7913032B1 (en) | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
US7996599B2 (en) | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
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 |
US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
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 |
WO2009072104A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith |
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 |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
WO2009074978A2 (en) | 2007-12-12 | 2009-06-18 | Densbits Technologies Ltd. | Systems and methods for error correction and decoding on multi-level physical media |
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 |
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 |
US8751755B2 (en) * | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
TW200931425A (en) * | 2008-01-11 | 2009-07-16 | Phison Electronics Corp | Method for managing flash memory blocks and controller using the same |
US8120990B2 (en) * | 2008-02-04 | 2012-02-21 | Mosaid Technologies Incorporated | Flexible memory operations in NAND flash devices |
US8068365B2 (en) | 2008-02-04 | 2011-11-29 | Mosaid Technologies Incorporated | Non-volatile memory device having configurable page size |
JP2009199211A (ja) * | 2008-02-20 | 2009-09-03 | Sony Computer Entertainment Inc | メモリ制御方法及び装置、コンピュータプログラム |
WO2009104330A1 (ja) | 2008-02-20 | 2009-08-27 | 株式会社ソニー・コンピュータエンタテインメント | メモリ制御方法及び装置、メモリアクセス制御方法、コンピュータプログラム、記録媒体 |
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 | 株式会社東芝 | 追記型メモリデバイス |
US8205063B2 (en) * | 2008-12-30 | 2012-06-19 | Sandisk Technologies Inc. | Dynamic mapping of logical ranges to write blocks |
US8452940B2 (en) * | 2008-12-30 | 2013-05-28 | Sandisk Technologies Inc. | Optimized memory management for random and sequential data writing |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
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 |
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 |
WO2010144587A2 (en) * | 2009-06-12 | 2010-12-16 | Violin Memory, Inc. | Memory system having persistent garbage collection |
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 | 삼성전자주식회사 | 플래시 메모리 장치의 액세스 방법 |
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 |
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 |
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 |
US8745353B2 (en) * | 2009-10-23 | 2014-06-03 | Seagate Technology Llc | Block boundary resolution for mismatched logical and physical block sizes |
US8364929B2 (en) * | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
US8977802B2 (en) | 2009-11-11 | 2015-03-10 | Panasonic Intellectual Property Management Co., Ltd. | Access device, information recording device, controller, real time information recording system, access method, and program |
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 | 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器 |
CN103473182B (zh) * | 2010-03-12 | 2016-05-11 | 群联电子股份有限公司 | 非挥发性存储器存取方法及非挥发性存储器控制器 |
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 |
US8468431B2 (en) | 2010-07-01 | 2013-06-18 | 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 |
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 |
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 |
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 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US9372792B1 (en) | 2011-05-12 | 2016-06-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9110785B1 (en) | 2011-05-12 | 2015-08-18 | Densbits Technologies Ltd. | Ordered merge of data sectors that belong to memory space portions |
US9501392B1 (en) | 2011-05-12 | 2016-11-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of a non-volatile memory module |
US8996790B1 (en) | 2011-05-12 | 2015-03-31 | Densbits Technologies Ltd. | System and method for flash memory management |
US9396106B2 (en) | 2011-05-12 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9195592B1 (en) | 2011-05-12 | 2015-11-24 | Densbits Technologies 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 |
EP2742429A4 (de) | 2011-08-09 | 2015-03-25 | Lsi Corp | E/a-vorrichtung und interaktion mit datenverarbeitungshost |
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 |
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 |
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 |
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 |
CN103392207B (zh) * | 2011-10-05 | 2017-08-04 | 希捷科技有限公司 | 非易失性存储的自身日志记录和层级一致性 |
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 |
US8996788B2 (en) | 2012-02-09 | 2015-03-31 | Densbits Technologies Ltd. | Configurable flash interface |
US8947941B2 (en) | 2012-02-09 | 2015-02-03 | Densbits Technologies Ltd. | State responsive operations relating to flash memory cells |
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 |
US9122582B2 (en) | 2012-06-12 | 2015-09-01 | International Business Machines Corporation | File system for maintaining data versions 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 |
US9122581B2 (en) | 2012-06-12 | 2015-09-01 | International Business Machines Corporation | Data versioning 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 |
US9026757B2 (en) * | 2013-01-25 | 2015-05-05 | Sandisk Technologies Inc. | Non-volatile memory programming data preservation |
US8913428B2 (en) | 2013-01-25 | 2014-12-16 | Sandisk Technologies Inc. | Programming non-volatile storage system with multiple memory die |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
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 |
US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
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 |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9543025B2 (en) | 2013-04-11 | 2017-01-10 | Sandisk Technologies Llc | Storage control system with power-off time estimation mechanism and method of operation thereof |
US10546648B2 (en) | 2013-04-12 | 2020-01-28 | Sandisk Technologies Llc | Storage control system with data management mechanism and method of operation thereof |
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 |
US9244519B1 (en) | 2013-06-25 | 2016-01-26 | Smart Storage Systems. Inc. | Storage system with data transfer rate adjustment for power throttling |
US9367353B1 (en) | 2013-06-25 | 2016-06-14 | Sandisk Technologies Inc. | Storage control system with power throttling mechanism and method of operation thereof |
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 |
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 |
US9448946B2 (en) | 2013-08-07 | 2016-09-20 | Sandisk Technologies Llc | Data storage system with stale data 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 |
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 |
US9786388B1 (en) | 2013-10-09 | 2017-10-10 | 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 |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
JP6260395B2 (ja) * | 2014-03-27 | 2018-01-17 | Tdk株式会社 | メモリコントローラ、メモリシステム及びメモリ制御方法 |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
US9972393B1 (en) | 2014-07-03 | 2018-05-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Accelerating programming of a flash memory module |
US9584159B1 (en) | 2014-07-03 | 2017-02-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Interleaved encoding |
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 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其操作方法 |
US10019198B2 (en) | 2016-04-01 | 2018-07-10 | Intel Corporation | Method and apparatus for processing sequential writes to portions of an addressable unit |
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 |
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 |
WO2019147286A1 (en) * | 2018-01-29 | 2019-08-01 | Hewlett-Packard Development Company, L.P. | Validity of data sets stored in memory |
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)
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 |
US5268870A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5043940A (en) | 1988-06-08 | 1991-08-27 | Eliyahou Harari | Flash EEPROM memory systems having multistate storage cells |
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 |
US5341330A (en) | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for writing to a flash memory array during erase suspend intervals |
US5822781A (en) * | 1992-10-30 | 1998-10-13 | Intel Corporation | Sector-based storage device emulator having variable-sized sector |
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 |
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 |
US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
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) |
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 |
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 |
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 |
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 |
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 |
US6122195A (en) | 1997-03-31 | 2000-09-19 | Lexar Media, Inc. | Method and apparatus for decreasing block write operation times performed on nonvolatile memory |
US6034897A (en) * | 1999-04-01 | 2000-03-07 | Lexar Media, Inc. | Space management for managing high capacity 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 |
JPH1153235A (ja) * | 1997-08-08 | 1999-02-26 | Toshiba Corp | ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム |
JP4079506B2 (ja) | 1997-08-08 | 2008-04-23 | 株式会社東芝 | 不揮発性半導体メモリシステムの制御方法 |
JP3640154B2 (ja) | 1997-09-30 | 2005-04-20 | ソニー株式会社 | 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム |
JP2914360B2 (ja) * | 1997-09-30 | 1999-06-28 | ソニー株式会社 | 外部記憶装置及びデータ処理方法 |
JP3070539B2 (ja) | 1997-09-30 | 2000-07-31 | ソニー株式会社 | 外部記憶装置、データ処理装置及びデータ処理方法 |
JP3119214B2 (ja) * | 1997-09-30 | 2000-12-18 | ソニー株式会社 | 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法 |
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 |
WO2000060605A1 (en) * | 1999-04-01 | 2000-10-12 | Lexar Media, Inc. | Space management for managing high capacity nonvolatile memory |
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 |
US7167944B1 (en) * | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
US6567307B1 (en) | 2000-07-21 | 2003-05-20 | 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 |
-
2001
- 2001-01-19 US US09/766,436 patent/US6763424B2/en not_active Expired - Lifetime
-
2002
- 2002-01-07 EP EP02703078A patent/EP1352394B1/de not_active Expired - Lifetime
- 2002-01-07 ES ES02703078T patent/ES2262782T3/es not_active Expired - Lifetime
- 2002-01-07 DE DE60211653T patent/DE60211653T2/de not_active Expired - Lifetime
- 2002-01-07 EP EP05077929A patent/EP1645964A3/de not_active Withdrawn
- 2002-01-07 EP EP20060075106 patent/EP1653323B1/de not_active Expired - Lifetime
- 2002-01-07 EP EP15166112.1A patent/EP2953030A1/de not_active Withdrawn
- 2002-01-07 CN CNB2006101423583A patent/CN100485641C/zh not_active Expired - Fee Related
- 2002-01-07 KR KR1020037009551A patent/KR100944996B1/ko active IP Right Grant
- 2002-01-07 AT AT02703078T patent/ATE327556T1/de not_active IP Right Cessation
- 2002-01-07 AU AU2002236723A patent/AU2002236723A1/en not_active Abandoned
- 2002-01-07 KR KR1020087028861A patent/KR101076830B1/ko not_active IP Right Cessation
- 2002-01-07 CN CNB028038827A patent/CN1290021C/zh not_active Expired - Lifetime
- 2002-01-07 CN CNB2006101423598A patent/CN100485642C/zh not_active Expired - Fee Related
- 2002-01-07 WO PCT/US2002/000366 patent/WO2002058074A2/en active IP Right Grant
- 2002-01-07 JP JP2002558275A patent/JP4155824B2/ja not_active Expired - Fee Related
- 2002-01-08 TW TW091100155A patent/TWI221217B/zh not_active IP Right Cessation
-
2004
- 2004-05-07 US US10/841,388 patent/US6968421B2/en not_active Expired - Lifetime
-
2005
- 2005-10-13 US US11/250,238 patent/US7818490B2/en not_active Expired - Fee Related
-
2007
- 2007-08-06 JP JP2007203823A patent/JP4750766B2/ja not_active Expired - Lifetime
-
2008
- 2008-03-24 JP JP2008075388A patent/JP4768771B2/ja not_active Expired - Lifetime
-
2009
- 2009-02-13 US US12/371,460 patent/US7657702B2/en not_active Expired - Fee Related
-
2010
- 2010-10-07 US US12/900,397 patent/US7970987B2/en not_active Expired - Fee Related
-
2011
- 2011-06-24 US US13/168,756 patent/US8316177B2/en not_active Expired - Lifetime
Cited By (2)
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
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60211653T2 (de) | Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher | |
DE69034191T2 (de) | EEPROM-System mit aus mehreren Chips bestehender 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 | |
DE69635962T2 (de) | Flash-Speicher-Massenspeichersystem und Verfahren dafür | |
DE60030876T2 (de) | Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität | |
DE60019903T2 (de) | Speichersystem | |
DE602004002947T2 (de) | NAND Flash Speicher mit Speicherredundanz | |
DE69433320T2 (de) | Ferngesteuerter rreprogrammierbarer programmspeicher fuer einen mikrokontroller | |
DE102005045031B4 (de) | Programmierverfahren und Programmierwiederaufnahmeverfahren für ein nichtflüchtiges Speicherbauelement | |
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 | |
DE112008002553T5 (de) | Einsatz eines MLC-Flash als SLC durch Schreiben von Dummy-Daten | |
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 |
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 |