DE60217883T2 - Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher - Google Patents

Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher Download PDF

Info

Publication number
DE60217883T2
DE60217883T2 DE60217883T DE60217883T DE60217883T2 DE 60217883 T2 DE60217883 T2 DE 60217883T2 DE 60217883 T DE60217883 T DE 60217883T DE 60217883 T DE60217883 T DE 60217883T DE 60217883 T2 DE60217883 T2 DE 60217883T2
Authority
DE
Germany
Prior art keywords
sector
volatile memory
block
sectors
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60217883T
Other languages
English (en)
Other versions
DE60217883D1 (de
Inventor
Sergey Anatolievich Gorobets
David Alan BENNETT
Welsh Alan SINCLAIR
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Lexar Media Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lexar Media Inc filed Critical Lexar Media Inc
Application granted granted Critical
Publication of DE60217883D1 publication Critical patent/DE60217883D1/de
Publication of DE60217883T2 publication Critical patent/DE60217883T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Schreiben von Daten in einen nicht-flüchtigen Speicher und insbesondere auf ein Verfahren zum Schreiben von Daten in einen Flash-Speicher, um die gleichmäßige Verteilung der Nutzung über einen längeren Betriebszeitraum zu gewährleisten.
  • In bekannten Speichersystemen ist es üblich, dass ein nicht-flüchtiger Speicher wie zum Beispiel der Flash-Speicher der Speichersysteme Verschleißmechanismen innerhalb seiner physikalischen Strukturen aufweist, was bedeutet, dass ein Block in dem Flash-Speicher nach einer kumulierten Anzahl von Operationen ausfallen kann. Bekannte Datenverwaltungsverfahren führen jedoch im Allgemeinen kein Blocklöschen im Flash-Speicher in Echtzeit durch, was zur Ansammlung von Blöcken in dem Flash-Speicher führen kann, die überholte Versionen der Sektoren enthalten. Es ist auch der Fall, dass in bekannten Systemen die physikalische Adresse zum Schreiben eines Sektors von der logischen Adresse des Sektors abhängig ist, so dass logisch nicht zusammenhängende Sektoren in eine nicht zusammenhängende physikalische Adresse und logische auf physikalische Adressen geschrieben werden.
  • Ein besonderes Ziel der vorliegenden Erfindung ist die Verringerung der Anzahl von Lese- und Schreibzugriffen auf den nicht-flüchtigen Speicher für Steuerdatenstrukturen, um die Schreibgeschwindigkeit des Speichersystems für Host-Daten zu erhöhen.
  • Ein zweites Ziel der Erfindung ist die Erzielung einer gleichmäßigen Nutzung der Blöcke in dem nicht-flüchtigen Speicher zum Speichern von Daten über eine längere Betriebszeit und die Vermeidung von „Hot Spots" bei der Nutzung des nicht-flüchtigen Speichers, um die Zuverlässigkeit des Speichersystems zu erhöhen.
  • Aus EP-A-0522780 ist die Bereitstellung eines nicht-flüchtigen Speichersystems bekannt, bei dem die ersten Sektoren jedes Blocks im Flash-Speicher als eine Sektorverwaltungstabelle verwendet werden und eine Steuerung mit dem Flash-Speicher gekoppelt ist, um im RAM Listen von Blöcken in dem der Speicherung logischer Sektordaten zugeordneten Flash-Speicher sowie von in dem Flash-Speicher kürzlich gelöschten Blöcken zu halten.
  • Aspekte der vorliegenden Erfindung sind in den anliegenden unabhängigen Ansprüchen festgelegt.
  • Nach einer Ausführungsform der Erfindung ist eine mit einem nicht-flüchtigen Speicher verbundene Steuerung mit einem flüchtigen Speicher vorgesehen, wobei
    die Steuerung in dem flüchtigen Speicher Listen von Blöcken in dem der Speicherung logischer Sektordaten zugeordneten nicht-flüchtigen Speicher sowie von in dem nicht-flüchtigen Speicher kürzlich gelöschten Blöcken hält und
    die Steuerung Informationen aus den Listen in dem flüchtigen Speicher in die Steuerdatenstrukturen in dem nicht-flüchtigen Speicher weniger häufig überträgt, als die Inhalte der Listen in dem flüchtigen Speicher geändert werden, so dass die Listen in dem flüchtigen Speicher jederzeit aus existierenden Informationen in dem nicht-flüchtigen Speicher rekonstruiert werden können.
  • Vorzugsweise werden die Informationen aus den Listen in dem flüchtigen Speicher gleichzeitig mit Informationen für ein logisch/physikalisches Mapping für Sektoren aus anderen Listen in dem flüchtigen Speicher in die Steuerdatenstrukturen in dem nicht-flüchtigen Speicher übertragen.
  • Diese und andere Aspekte der Erfindung werden aus der nachstehenden Beschreibung in Verbindung mit den folgenden Zeichnungen ersichtlich.
  • 1 zeigt ein Host-System und ein Flash-Speichersystem nach der vorliegenden Erfindung.
  • 2 zeigt die Hardware-Architektur der Steuerung für das System in 1 nach der vorliegenden Erfindung.
  • 3 zeigt den Schichtaufbau der Firmware, die die Medienmanagement-Operationen nach einer Ausführungsform ausführt.
  • 4a zeigt eine schematische Darstellung der Schreiboperation nach der Ausführungsform.
  • 4B zeigt eine schematische Darstellung der Schreib- und Verschiebeoperationen.
  • 5 zeigt eine schematische Darstellung der dreistufigen Hierarchie der Zuordnungsstrukturen für den Adressübersetzungsprozess.
  • 6 zeigt eine schematische Darstellung der Datenstrukturen in dem Speichersystem nach der vorliegenden Erfindung.
  • 7 zeigt eine schematische Darstellung der Steueroperationen für das Speichersystem.
  • 8 zeigt eine schematische Darstellung des Operationsablaufs für die Adressübersetzungsoperation.
  • 9 zeigt eine schematische Darstellung der Steuer-Schreiboperation für das Speichersystem.
  • 10 zeigt eine schematische Darstellung der EBM-Sektor-Schreibfunktionsoperation für das Speichersystem.
  • 11 zeigt eine schematische Darstellung des Status der Datenstrukturen zu Beginn einer Map-Schreiboperation.
  • 12 zeigt eine schematische Darstellung des Status der Datenstrukturen nach der CBL-Map-Operation.
  • 13 zeigt eine schematische Darstellung des Status der Datenstrukturen nach der ABL- und CBL-Konsolidierungsoperation.
  • 14 zeigt eine schematische Darstellung des Status der Datenstrukturen nach der Map-to-CBL-Operation.
  • 15 zeigt eine schematische Darstellung des Status der Datenstrukturen nach der CBL-to-EBL-Operation.
  • 16 zeigt eine schematische Darstellung des Status der Datenstrukturen nach der EBL-to-ABL-Operation.
  • 17 zeigt eine schematische Darstellung eines alternativen Host-Systems und Flash-Systems nach der vorliegenden Erfindung.
  • Eine Flash-Disk-Vorrichtung wie die in 1 ist ein Speichersystem, das die logischen Merkmale eines Plattenlaufwerks für ein Host-System 12 repräsentiert und das Flash-Halbleiterspeicher 20 als sein physikalisches Datenspeichermedium verwendet. Ein Flash-Disk-Speichersystem 10 erfordert eine Steuerung 12 zur Verwaltung des physikalischen Speichermediums des Systems 10 nach Algorithmen, die die logischen Merkmale einer Festplatte schaffen, und in diesem Fall sind es der Flash-Speicher 20 und die Steuerung 16, die durch die physikalische Schnittstelle 18 verbunden sind, die das Speichersystem 10 bilden. Die Steuerung 16 des Speichersystems 10 verbindet das System 10 über die logische Schnittstelle 14 mit dem Host 12.
  • In diesem Fall weist der Flash-Speicher 20 mehrere Flash-Chips auf, die aus mehreren Flash-Blöcken bestehen. Über die logische Schnittstelle 14 zum Speichersystem 10 können Daten in Einheiten mit fester Größe, so genannte Sektoren, die jeweils 512 Datenbytes enthalten und auf die ein direkter Zugriff möglich ist, in das System 10 geschrieben bzw. aus diesem gelesen werden. Jeder Sektor ist durch eine logische Adresse identifiziert, die in diesem Fall eine fortlaufende logische Blockadresse (LBA) ist.
  • In der vorliegenden Anordnung können Daten in einen Sektor geschrieben werden, auch wenn der Sektor bereits Daten enthält. Die Protokolle in der logischen Schnittstelle 14 können in diesem Fall den Lese- oder Schreibzugriff auf das System 10 in Blöcken von mehreren Sektoren mit logisch zusammenhängenden Sektoradressen unterstützen, wobei diese Protokolle Industriestandards wie ATA, CompactFlash oder MultiMediaCard entsprechen, so dass das Speichersystem 10 zwischen verschiedenen Host-Systemen austauschbar und nicht auf die Verwendung mit dem Host 12 beschränkt ist.
  • Über die physikalische Schnittstelle 18 von der Steuerung 16 zum Flash-Speicher 20 können Daten in den Flash-Speicher 20 geschrieben und aus diesem gelesen werden, und zwar in Einheiten mit fester Größe, die in diesem Fall als physikalische Sektoren bezeichnet werden, auf die direkt zugegriffen werden kann und die im Allgemeinen jeweils eine ausreichende Kapazität für 512 Datenbytes von dem Host-System plus 16 Bytes Overhead-Daten haben, die von der Steuerung 16 angehängt werden. Jeder physikalische Sektor ist durch eine physikalische Sektoradresse identifiziert, die normalerweise getrennte Komponenten aufweist, die jeweils den Flash-Chip innerhalb des Speicherteilsystems, den Flash-Block innerhalb des Flash-Chips und den physikalischen Sektor innerhalb des Flash-Blocks des Speichers 20 identifizieren, in den der physikalische Sektor geschrieben wird.
  • In dem gezeigten System 10 können Daten nur in einen physikalischen Sektor geschrieben werden, wenn der Sektor zuvor gelöscht worden ist. Der Flash-Speicher 20 wird als Reaktion auf einen Befehl in der physikalischen Schnittstelle in Einheiten eines Flash-Blocks gelöscht, der typischerweise 32 physikalische Sektoren enthält. Die relativen Zeiten für die Ausführung von Operationen im Flash-System 10 zum Lesen eines physikalischen Sektors, Programmieren eines physikalischen Sektors und Löschen eines Flash-Blocks liegen typischerweise im Verhältnis von 1:20:200.
  • In der Anordnung in 1 ist die Steuerung 16 eine zyklische Speichersteuerung, das heißt eine Flash-Medienmanagementsteuerung, in der ein Verfahren zur Sicherstellung der gleichmäßigen Verteilung der Nutzung implementiert ist, bei dem die Medienmanagement-Algorithmen zur Implementierung dieses Verfahrens als Firmware durch einen Prozessor in der Steuerung realisiert sind.
  • In 2 ist eine optimierte Hardware-Architektur für die zyklische Speichersteuerung 16 gezeigt. In diesem Fall ist die Steuer-Hardware eine spezielle Architektur in einer getrennten integrierten Schaltung.
  • Die Steuerung 16 umfasst einen Host-Schnittstellen-Steuerabschnitt 22, einen Mikroprozessor 24, einen Flash-Schnittstellen-Steuerabschnitt 26, einen ROM 28, einen SRAM 30 und einen Erweiterungsanschluss 32, die jeweils durch den Speicherzugriffs-Steuerbus 34 miteinander verbunden sind.
  • Die Flash-Medienmanagement-Algorithmen für die zyklische Speicherung sind durch Firmware implementiert, die auf dem Mikroprozessor 24 läuft, und die Steuerung 16 ist verantwortlich für alle Flash-Medienmanagementfunktionen und für die Merkmale der logischen Schnittstelle 14 gegenüber dem Host 12.
  • Der Host-Schnittstellen-Steuerabschnitt 22 stellt den Pfad für den Datenstrom zum und vom Host-System 12 über die logische Schnittstelle 14 bereit.
  • Da in diesem Fall die Steuerung 16 die Form einer dedizierten integrierten Schaltung aufweist, stellt der Host-Schnittstellen-Steuerabschnitt 22 die logische Schnittstelle 14 bereit, die einem Industrie-Standardprotokoll entspricht, sowie ein Befehlsregister und eine Gruppe von Funktionsdateiregistern, die die Route für den Mikroprozessor 24 zur Steuerung der logischen Merkmale der Schnittstelle 14 bereitstellen.
  • Der Host-Schnittstellen-Steuerabschnitt 22 ermöglicht auch die Übertragung eines Sektors mit Daten in beiden Richtungen über die logische Schnittstelle 14 zwischen dem Host-System 12 und dem SRAM 30 der Steuerung durch eine Direktzugriffsoperation (DMA) ohne Eingreifen seitens des Mikroprozessors 24.
  • Der Flash-Schnittstellen-Steuerabschnitt 26 stellt den Pfad für den Datenstrom zum und vom Flash-Speicher 20 bereit und steuert alle Operationen, die im Flash-Speicher 20 erfolgen. Die Operationen, die im Flash-Speicher 20 erfolgen, werden durch den Mikroprozessor 24 festgelegt und eingeleitet, der Parameter- und Adressinformationen in den Flash-Schnittstellen-Steuerabschnitt 26 lädt.
  • Die Gruppe von Operationen, die im Allgemeinen erfolgen, sind die Übertragung eines physikalischen Sektors an den Flash-Speicher 20, die Übertragung eines physikalischen Sektors aus dem Flash-Speicher 20, das Einschreiben eines physikalischen Sektors in den Flash-Speicher 20, das Löschen eines Flash-Blocks und das Lesen des Status des Flash-Speichers 20.
  • In gleicher Weise kann ein physikalischer Datensektor in beiden Richtungen über die physikalische Schnittstelle 18 zwischen dem Flash-Speicher 20 und dem SRAM 30 der Steuerung durch DMA-Operationen ohne Eingreifen seitens des Mikroprozessors 24 übertragen werden. Die Organisation der 512 Bytes Host-Daten und 16 Bytes Overhead-Daten in einem physikalischen Sektor, der in den Flash-Speicher 20 übertragen wird, wird im Flash-Schnittstellen-Steuerabschnitt 26 unter der Steuerung der durch den Mikroprozessor 24 geladenen Parameter bestimmt.
  • Der Flash-Schnittstellen-Steuerabschnitt 26 erzeugt auch einen Fehlerkorrekturcode (ECC) mit 12 Bytes, der in den Flash-Speicher 20 übertragen wird und als Overhead-Daten in jeden physikalischen Sektor geschrieben wird; er wird außerdem verifiziert, wenn ein physikalischer Sektor aus dem Flash-Speicher 20 übertragen wird.
  • Der Mikroprozessor 24 steuert den Strom der Datensektoren durch den Speicherzugriffs-Steuerbus 34 oder Datenpfad oder der Steuerung 16, implementiert die Flash-Medienmanagement-Algorithmen, die die Sektor- und Steuerdaten-Speicherorganisation im Flash-Speicher 20 definieren, und definiert die Merkmale der logischen Schnittstelle 14 zum Host-System 12. In diesem Fall ist der Mikroprozessor 24 ein 32-Bit-RISC-Prozessor.
  • Der Speicherzugriffs-Steuerbus 34 ermöglicht die Übertragung von Informationen zwischen dem Mikroprozessor 24, dem Host-Schnittstellen-Steuerabschnitt 22 und dem Flash-Schnittstellen-Steuerabschnitt 26 sowie zwischen dem Host-Schnittstellen-Steuerabschnitt 22, dem Flash-Schnittstellen-Steuerabschnitt 26 und einem Speicherblock 30.
  • Der Mikroprozessor 24, der Host-Schnittstellen-Steuerabschnitt 22 und der Flash-Schnittstellen-Steuerabschnitt 26 können jeweils der Master für eine Transaktion auf dem Speicherzugriffs-Steuerbus 34 sein. Der Buszugriff wird den anfordernden Master-Systemen zyklusweise gewährt.
  • Der SRAM-Block 30 speichert alle vorläufigen Informationen in der Steuerung 16, wobei diese Speicherfunktion das Puffern der Sektordaten und das Speichern der Steuerdatenstrukturen und Variablen sowie des Firmware-Codes umfasst.
  • Der ROM 28 ist in der Steuerung 16 enthalten, um Code für die Ausführung durch den Mikroprozessor 24 oder von anderen Hardware-Blöcken in der Steuerung benötigte Informationen zu speichern.
  • Die Einbeziehung eines Erweiterungsanschlusses 32 in die Steuerarchitektur ermöglicht den Zugriff auf externe Hardware-Funktionen, RAM- oder ROM-Speicher von dem Speichersystem 10.
  • Beim Betrieb der Steuerung werden alle zwischen der logischen Schnittstelle 14 zum Host-System 12 und der physikalischen Schnittstelle 18 zum Flash-Speicher 20 übertragenen Sektordaten im SRAM 30 zwischengespeichert. Ausreichend Kapazität ist im SRAM 30 zur Zwischenspeicherung von zwei Datensektoren zugewiesen, um die gleichzeitige Übertragung von aufeinander folgenden Sektoren in den Host- und Flash-Schnittstellen zu ermöglichen. Die Datenübertragung zwischen der logischen Host-Schnittstelle 14 und dem SRAM 30 erfolgt durch DMA, wobei der Host-Schnittstellen-Steuerabschnitt 22 als Bus-Master fungiert. Die Datenübertragung zwischen der physikalischen Flash-Schnittstelle 18 und dem SRAM 30 erfolgt durch DMA, wobei der Flash-Schnittstellen-Steuerabschnitt 26 als Bus-Master fungiert.
  • Da die Steuerung 16 die Form einer dedizierten integrierten Schaltung aufweist, stellt der Host-Schnittstellen-Steuerabschnitt 22 eine logische Schnittstelle bereit, die einem Industrie-Standardprotokoll entspricht, und ein Befehlsregister und eine Gruppe von Funktionsdateiregistern stellen die Route für den Mikroprozessor 24 zur Steuerung der logischen Merkmale der Schnittstelle 14 bereit. Befehls-, Adress- und Parameterinformationen werden vom Host 12 in diese Funktionsdateiregister geschrieben und vom Mikroprozessor 24 zur Ausführung des Befehls gelesen. Informationen werden außerdem vom Mikroprozessor 24 in die Register geschrieben, um sie an den Host 12 zu übermitteln.
  • In 3 ist der Schichtaufbau der Firmware gezeigt, die die Flash-Medienmanagement-Operationen für die zyklische Speicherung ausführt. Die Firmware weist drei Schichten auf, wobei die erste die Host-Schnittstellenschicht 40 ist, die zweite Schicht 42 die Sektorübertragungs-Ablaufsteuerung 42a und die Medienmanagementschicht 42b umfasst und die dritte die Flash-Steuerschicht 44 ist.
  • Diese drei Firmware-Schichten 40, 42 und 44 steuern die Übertragung der Datensektoren zwischen der logischen Schnittstelle 14 zum Host 12 und der physikalischen Schnittstelle 18 zum Flash-Speicher 20. Die Firmware-Schichten geben die Daten jedoch nicht direkt weiter; stattdessen werden Datensektoren durch die Hardware-Blöcke der Steuerung 16 übertragen und gehen daher nicht durch den Mikroprozessor 24.
  • Die Host-Schnittstellenschicht 40 unterstützt den vollen Befehlssatz für das Host-Protokoll. Sie interpretiert die Befehle in der Host-Schnittstelle 14, steuert das logische Verhalten der Schnittstelle 14 entsprechend den Host-Protokollen, führt die Host-Befehle aus, die nichts mit der Übertragung von Daten zu tun haben, und gibt die Host-Befehle weiter, die sich auf die Daten im Flash-Speicher beziehen, die in den Schichten darunter aufgerufen werden sollen. Beispiele für diese Befehle sind:
    Logischen Sektor (einen oder mehrere) lesen,
    logischen Sektor (einen oder mehrere) schreiben,
    logischen Sektor (einen oder mehrere) löschen sowie sonstige Befehle zum Formatieren der Platte und zur Identifizierung.
  • Die Sektorübertragungs-Ablaufsteuerung 42a empfängt interpretierte Befehle für logische Datensektoren von der Host-Schnittstellenschicht 40 und ruft damit die Flash-Medienmanagementschicht 42b für logisch/physikalische Transformationsoperationen auf sowie die Flash-Steuerschicht für physikalische Sektorübertragungen zum oder vom Flash-Speicher. Die Sektorübertragungs-Ablaufsteuerung 42a führt auch die Sektor-Pufferspeicherverwaltung durch. Eine weitere Funktion der Ablaufsteuerung 42a ist die Einrichtung einer Reihe von Sektorübertragungen in der Host-Schnittstelle 14 und der Flash-Speicher-Schnittstelle 18 sowie einer Reihe von Operationen in der Medienmanagementschicht 42b entsprechend dem vom Host 12 erhaltenen Befehl und der für den Flash-Speicher 20 konfigurierten Stufe der parallelen Operationen.
  • Die Medienmanagementschicht 42b führt die logisch/physikalischen Transformationsoperationen aus, die zur Unterstützung des Schreibens, Lesens oder Löschens eines einzelnen logischen Sektors erforderlich sind.
  • Diese Schicht ist verantwortlich für die Implementierung der Medienmanagement-Algorithmen für die zyklische Speicherung.
  • Die Flash-Steuerschicht 44 konfiguriert die Hardware des Flash-Schnittstellen-Steuerabschnitts 26 zur Ausführung von Operationen entsprechend den Aufrufen von der Sektorübertragungs-Ablaufsteuerung 42a oder der Medienmanagementschicht 42b.
  • Die Medienmanagementfunktionen, die in der Medienmanagementschicht 42b der Steuer-Firmware implementiert sind, erzeugen die logischen Merkmale eines Plattenlaufwerks in dem Speichersystem 10, das den Flash-Halbleiterspeicher 20 als physikalisches Datenspeichermedium verwendet.
  • Die Effektivität des von den Medienmanagementfunktionen der Medienmanagementschicht 42b durchgeführten Medienmanagements wird anhand ihrer Geschwindigkeit für die Durchführung eines kontinuierlichen Schreibens von Daten in das Speichersystem 10, ihrer Effizienz bei der Aufrechterhaltung ihres Leistungsniveaus beim Betrieb mit verschiedenen Dateisystemen und in diesem Fall im Host 12 sowie der Langzeitzuverlässigkeit des Flash-Speichers 20 gemessen.
  • Die Datenschreibgeschwindigkeit ist definiert als die Geschwindigkeit, die beim Schreiben einer großen Menge zusammenhängender Daten in das Speichersystem 10 aufrechterhalten werden kann. In einigen Fällen, wenn die kontinuierliche Datenschreibgeschwindigkeit eines Speichersystems getestet wird, kann das Volumen der zu schreibenden Daten die Kapazität des Speichersystems 10 überschreiten, und daher können logische Adressen wiederholt werden.
  • Die kontinuierliche Schreibgeschwindigkeit wird durch die Sektordatenübertragungsgeschwindigkeit an der logischen Schnittstelle 14 zum Host 12 und der physikalischen Schnittstelle 18 zum Flash-Speicher 20 bestimmt sowie durch den Overhead-Anteil der Zugriffe auf den Flash-Speicher 20 an der physikalischen Schnittstelle 18 für Flash-Seitenlese- und -schreiboperationen und für Flash-Blocklöschoperationen, die nicht direkt mit der Speicherung der vom Host 12 geschriebenen Datensektoren in der logischen Schnittstelle 14 verbunden sind. In diesem Fall sollten die verwendeten Steuerdatenstrukturen und Algorithmen sicherstellen, dass der Zugriff auf den Flash-Speicher 20 für Steuerfunktionen mit einer deutlich niedrigeren Frequenz als für das Schreiben von Host-Sektoren erforderlich ist. Die kontinuierliche Schreibgeschwindigkeit wird auch durch die Verarbeitungszeit in der Steuerung 16 für Medienmanagement-Operationen, die Seitenlese- und -schreibzeiten und die Blocklöschzeiten im Flash-Speicher 20 bestimmt.
  • Damit das Speichersystem mit Dateisystemen mit unterschiedlichen Merkmalen effizient arbeiten kann, werden die Medienmanagement-Algorith men für die Organisation der Host-Daten- und Steuerdatenstrukturen im Flash-Speicher 20 entsprechend definiert, und die Datenschreibleistung wird in jeder Umgebung aufrechterhalten.
  • Bei einer ersten Ausführungsform sind die Dateisysteme, die den MS-DOS-Standard implementieren, mit mindestens einem der folgenden Merkmale versehen: Der Host 12 schreibt Datensektoren in Clustern mit mehreren Sektorschreibbefehlen, der Host 12 schreibt Datensektoren mit einzelnen Sektorschreibbefehlen, der Host 12 schreibt einige Sektoren mit einzelnen Sektorschreibbefehlen in einen Adressbereich, der gemeinsam mit Cluster-Dateidaten genutzt wird, der Host 12 schreibt nicht zusammenhängende Sektoren für MS-DOS-Verzeichnis- und FAT-Einträge mit einzelnen Sektorschreibbefehlen, der Host 12 schreibt nicht zusammenhängende Sektoren für MS-DOS-Verzeichnis- und FAT-Einträge durchsetzt mit zusammenhängenden Sektoren für Dateidaten und/oder der Host kann Sektoren für MS-DOS-Verzeichnis- und FAT-Einträge häufig neu schreiben.
  • Es ist ein Merkmal des Flash-Speichers, und in diesem Fall des Flash-Speichers 20 des Speichersystems 10, dass er einen Verschleißmechanismus innerhalb der physikalischen Struktur seiner Zellen aufweist, wodurch ein Block des Flash-Speichers nach einer kumulierten Anzahl von Operationen ausfallen kann. Im Allgemeinen liegt dies im Bereich von 100.000 bis 1.000.000 Schreib/Löschzyklen. In Anbetracht dessen implementiert die zyklische Speichersteuerung 16 in der vorliegenden Anordnung einen Prozess des Verschleißausgleichs, um sicherzustellen, dass im physikalischen Adressbereich des Flash-Speichers 20 keine „Hot Spots" auftreten und dass die Nutzung der Flash-Blöcke über eine längere Betriebszeit gleichmäßig verteilt ist.
  • Die Medienmanagement-Algorithmen für die zyklische Speicherung sind in dem Speichersystem 10 implementiert und führen die Medienmanagement-Operation für den physikalischen Flash-Speicher 20 im System 10 durch. Die Medienmanagement-Algorithmen für die zyklische Speicherung umfassen vier separate Algorithmen, nämlich den Datenschreibalgorithmus, der die Position zum Einschreiben von Host-Informationen steuert, den Blocklöschalgorithmus, der das Löschen von Bereichen im Flash-Speicher 20 steuert, die überholte Informationen enthalten, den Blocksequenzalgorithmus, der die Reihenfolge der Benutzung von Flash-Blöcken zum Speichern von Informationen steuert, und den Adressübersetzungsalgorithmus, der das Mapping der logischen Host-Adressen auf die physikalischen Speicheradressen steuert.
  • Das mit diesen Algorithmen implementierte Verfahren des Medienmanagements für die zyklische Speicherung arbeitet nach dem Prinzip, dass Daten an physikalischen Sektorpositionen in den Flash-Speicher 20 geschrieben werden, die derselben Reihenfolge folgen, in der die Daten geschrieben wer den. Dies wird erreicht, indem jeder logische Datensektor an einer physikalischen Sektorposition geschrieben wird, die durch einen zyklischen Schreibzeiger festgelegt ist.
  • Eine schematische Darstellung der Schreiboperation des Medienmanagementverfahrens für die zyklische Speicherung ist in 4A gezeigt. Der Schreibzeiger, in diesem Fall der Datenschreibzeiger (DWP) 46, bewegt sich sequenziell durch die Sektorpositionen von Flash-Block X in Flash-Speicher 20 und weiter durch die Kette der Blöcke Y und Z in einer Weise, die durch den Blocksequenzalgorithmus festgelegt ist. Jeder Block X, Y und Z ist eine physikalische Struktur im Flash-Speicher 20, der in diesem Fall 32 Sektorpositionen aufweist, die in einer einzelnen Operation gelöscht werden können.
  • Logische Datensektoren werden im Allgemeinen durch ein Dateisystem im Host 12 in Dateien geschrieben, und der Datenschreibalgorithmus für die zyklische Speicherung lokalisiert den ersten Sektor einer Datei an der nächsten freien physikalischen Sektorposition nach dem letzten Sektor der vorhergehenden Datei. Wenn eine Datei vom Host 12 mit logischen Sektoren geschrieben wird, für die bereits gültige Daten in der Vorrichtung existieren, werden die vorherigen Versionen der Sektoren überholt, und die sie enthaltenden Blöcke werden entsprechend dem Blocklöschalgorithmus gelöscht. Um einen Block mit überholten Dateisektoren zu löschen, ist es in bestimmten Fällen nötig, einige gültige Sektoren in eine andere Datei zu verschieben. Dies geschieht im Allgemeinen, wenn ein Block Sektoren des Anfangs einer Datei enthält sowie Sektoren mit nicht verbundenen logischen Adressen vom Ende einer anderen Datei.
  • Ein zweiter Schreibzeiger, in diesem Fall der Datenverschiebezeiger DRP 47, wird zum Schreiben verlagerter Sektoren verwendet, um zu verhindern, dass Sektoren einer Datei einen Block mit Sektoren einer anderen Datei fragmentieren. Die Verwendung eines getrennten Verschiebezeigers verringert die Fragmentierung von Blöcken, die eine Datei enthalten, erheblich, was zu einem minimalen Bedarf hinsichtlich der Verschiebung von Sektoren und folglich einer maximalen Dateischreibleistung führt.
  • Ein Host-Dateisystem wird verwendet, das ebenfalls Sektoren mit Systeminformationen schreibt, zum Beispiel Verzeichnis- oder FAT-Sektoren im DOS-Dateisystem, und diese werden im Allgemeinen unmittelbar vor und nach einer Gruppe von Sektoren geschrieben, die eine Datei bilden. Ein getrennter Systemzeiger, der Systemschreibzeiger SWP 48, wird für dieses Host-Dateisystem verwendet, um die physikalische Schreibposition für die Systemsektoren festzulegen, die durch ihre logische Adresse identifiziert sind, um die Systemsektoren von Datei-Datensektoren zu trennen und zu verhindern, dass sie auf dieselbe Weise behandelt werden. Dadurch wird vermieden, dass eine kleine Gruppe von Systemsektoren zwischen dem Ende einer Datei und dem Anfang einer anderen im Sandwich eingeschlossen wird. Diese Systemsektoren enthalten Informationen über viele Dateien und werden im Allgemeinen viel häufiger neu geschrieben als die Daten für eine Datei. Im Sandwich eingeschlossene Systemsektoren würden ein häufiges Verschieben von Datei-Datensektoren verursachen, weshalb die Verwendung des Systemzeigers SWP 48 den Bedarf hinsichtlich der Verschiebung von Datensektoren minimiert und die Dateischreibleistung maximiert.
  • Ein vierter Zeiger, der Systemverschiebezeiger SRP 49, wird zum Verschieben von Systemsektoren verwendet, analog zu dem Verschiebezeiger DRP 47 für Datei-Datensektoren.
  • Die vier Schreibzeiger lassen sich wie folgt zusammenfassen:
    Der Datenschreibzeiger DWP 46 wird verwendet, um die physikalische Position zum Schreiben der von einem Host-System übermittelten Datei-Datensektoren festzulegen.
  • Der Systemschreibzeiger SWP 48 wird verwendet, um die physikalische Position zum Schreiben der von einem Host-System übermittelten Systemsektoren festzulegen, wobei die Systemsektoren durch ihre logische Adresse identifiziert sind, entsprechend den Merkmalen des verwendeten Host-Dateisystems.
  • Der Datenverschiebezeiger DRP 47 wird verwendet, um die physikalische Position zum Schreiben von Datei-Datensektoren festzulegen, die gelegentlich vor einem Blocklöschen verschoben werden müssen, um die von überholten Datei-Datensektoren belegte Kapazität wieder verfügbar zu machen.
  • Der Systemverschiebezeiger SRP 49 wird verwendet, um die physikalische Position zum Schreiben von Systemsektoren festzulegen, die vor einem Blocklöschen verschoben werden, um die von überholten Systemsektoren belegte Kapazität wieder verfügbar zu machen.
  • Ein Block darf nur Daten enthalten, die mit einem einzigen Schreibzeiger verbunden sind, und daher gibt es vier getrennte Ketten von Blöcken, eine für jeden Schreibzeiger, wie in 4B gezeigt. Für jeden Schreibzeiger 46, 47, 48 und 49 gelten jedoch dieselben Schreib- und Verschiebealgorithmen der zyklischen Speicheralgorithmen.
  • Dieses Verfahren zum Positionieren eines zu schreibenden Sektors an der ersten freien Position nach dem vorhergehenden Sektor, verbunden mit der Verwendung von mehreren Schreibzeigern, ist sehr flexibel und bietet eine hohe Leistung und umfassende Kompatibilität für alle Host-Schreibkonfigurationen, einschließlich einzelner Sektordaten und Daten in Clustern beliebiger Größe.
  • Das Medienmanagementverfahren für die zyklische Speicherung ist jedoch so definiert, dass es das Vorhandensein einer großen Anzahl von überholten Datensektoren nicht zulässt und dass keine Hintergrundoperationen für Funktionen wie die Speicherbereinigung implementiert sind. Im Allgemeinen sind nur zwei Blöcke mit überholten Sektoren für jeden der Datenschreibzeiger DWP 46 und Systemschreibzeiger SWP 48 erlaubt, und das Blocklöschen wird als Vordergrundoperation während der Sektorschreibsequenzen ausgeführt.
  • Dieses Managementverfahren bedeutet, dass die logische Kapazität des Flash-Speichers nicht verringert werden muss, um das Vorhandensein einer größeren Menge überholter Daten zu ermöglichen, dass die Datenintegrität durch das Fehlen von Hintergrundoperationen, die anfällig für Unterbrechungen durch vom Host ausgehende Abschaltvorgänge sind, wesentlich verbessert ist und dass die Pausen in Datenschreibsequenzen kurz sind, weil Löschoperationen jeweils nur für einen einzelnen Block erforderlich sind.
  • Wenn ein überholter Datensektor in einem neuen Block angelegt wird, der mit einem der Schreibzeiger verbunden ist, wird der vorhandene „überholte Block" durch Löschen beseitigt, gefolgt von einem Verschieben des Sektors innerhalb der Blöcke, falls erforderlich.
  • Von einem Host 12 gesendete Sektorlöschbefehle werden unterstützt, indem der Zielsektor als überholt markiert wird und indem sein Löschen entsprechend dem Blocklöschalgorithmus zugelassen wird.
  • Der Blocksequenzalgorithmus für die zyklische Speicherung bestimmt die Reihenfolge, in der Blöcke in dem Flash-Speicher 20 zum Schreiben neuer oder verschobener Daten verwendet werden, und ist daher verantwortlich dafür, sicherzustellen, dass kein Block einer Anzahl von Schreib/Löschzyklen ausgesetzt wird, die den für das verwendete Flash-Speichersystem 20 festgelegten Haltbarkeitsgrenzwert überschreitet.
  • Wenn ein logischer Sektor vom Host geschrieben wird, wird eine frühere Version, die in dem Speichersystem vorhanden ist, als überholte Daten behandelt. Der Blocklöschalgorithmus sorgt dafür, dass Blöcke mit überholten Datensektoren sofort gelöscht werden, um die von diesen Sektoren belegte Kapazität wieder verfügbar zu machen. Die physikalische Speicherkapazität des Systems 10 ist daher von gültigen Daten für vom Host geschriebene logische Sektoren belegt, plus einer geringen Anzahl von proprietären Steuerdatenstrukturen für die zyklische Speicherung und einer Reihe von gelöschten Blöcken. Unmittelbar nach der Initialformatierung des Flash-Speichers 10 besteht die Kapazität des Speichers 10 fast ausschließlich aus gelöschten Blöcken. Wenn der Host 12 mindestens einmal in alle Sektoren in seinem logischen Adressbereich geschrieben hat, wird die Vorrichtung als logisch voll angesehen, und ihre physikalische Kapazität ist fast vollständig durch gültige Datensektoren belegt, mit einer geringen Anzahl von gelöschten Blöcken, die für den einwandfreien Betrieb der Vorrichtung geführt werden. Eine größere Anzahl von gelöschten Blöcken wird nur erzeugt, wenn der Host 12 Befehle zum Löschen von logischen Sektoren ausführt.
  • Gelöschte Blöcke, die zur Verwendung durch einen der Schreibzeiger oder zur Speicherung von Steuerdatenstrukturen zugeordnet sind, werden aus einem Pool freier gelöschter Blöcke entnommen. Ein Block wird nie als Reaktion auf einen Wunsch zur Ausführung einer Schreiboperation in den betreffenden Block gelöscht, denn der Blocksequenzalgorithmus bestimmt die Reihenfolge der Zuordnung für Datenschreiboperationen für Blöcke in dem gelöschten Pool. Der nächste freie Block entsprechend dem Algorithmus wird zugewiesen, unabhängig davon, ob die Anforderung für die Verwendung durch einen der Schreibzeiger oder für eine Steuerdatenstruktur gilt.
  • Die Implementierung dieser Algorithmen, die das Medienmanagement für die zyklische Speicherung ausführen, erlaubt eine höhere Systemflexibilität durch die Bearbeitung einzelner Sektoren des Flash-Speichers 20 und die getrennte Verfolgung des logisch/physikalischen Adress-Mappings jedes Sektors in seinem logischen Adressbereich. Im Flash-Speicher 20 wird eine Sektoradressentabelle geführt, die die physikalische Adresse für jeden logischen Sektor enthält. Darüber hinaus wird jeder Sektor mit einem Header geschrieben, der seine logische Adresse enthält und ein Mittel zur Verifizierung der Identität des Sektors und Gewährleistung einer maximalen Datenintegrität darstellt.
  • Der Datenschreibalgorithmus, mit seiner Verwendung der zyklischen Schreibzeiger, bietet die Möglichkeit zur Kontrolle der Reihenfolge des Schreibens der Sektoren mit den logischen Adressen in den Headern der Sektoren in aufeinander folgenden physikalischen Positionen. Dieses Merkmal bietet eine totale Datensicherheit, auch wenn die Datensätze für das logisch/physikalische Adress-Mapping für kürzlich geschriebene Sektoren vorübergehend im flüchtigen Speicher SRAM 30 der Steuerung und nicht im Flash-Speicher enthalten sind. Solche vorübergehenden Datensätze können aus den Datensektoren im Flash-Speicher 20 rekonstruiert werden, wenn ein System 10, in dem die zyklischen Speicheralgorithmen implementiert sind, initialisiert wird. Daher ist es möglich, die Sektoradressentabelle im Flash-Speicher 20 weniger häufig zu aktualisieren, was zu einem niedrigen Anteil an Overhead-Schreiboperationen für Steuerdaten und einer hohen kontinuierlichen Datenschreibgeschwindigkeit führt.
  • In 5 ist eine schematische Darstellung des Adressübersetzungsprozesses gezeigt, der eine dreistufige Hierarchie von Zuordnungsstrukturen 50 verwendet und im Speichersystem 10 ausgeführt wird.
  • Die drei Hierarchiestufen sind die Sektoradressentabelle 52, die temporäre Sektoradressentabelle 54 und der Sektoradressdatensatz 56.
  • Die oberste Hierarchiestufe der Zuordnungsstrukturen ist die Sektoradressentabelle 52, das heißt eine Master-Tabelle mit einer physikalischen Adresse für jeden logischen Sektor im System 10, die im Flash-Speicher 20 gespeichert ist. Strukturen in den beiden unteren Hierarchiestufen 54 und 56 bilden die Einrichtungen zur Verringerung der Häufigkeit, mit der Schreiboperationen in der Sektoradressentabelle ausgeführt werden müssen.
  • Der Sektoradressdatensatz 56 ist eine im flüchtigen Speicher SRAM 30 der Steuerung gespeicherte Liste von logisch zusammenhängenden Sektoren, die in das System 10 geschrieben worden sind. Diese Liste ermöglicht die Bestimmung der physikalischen Adresse jedes logischen Sektors, den sie enthält, ohne dass ein Zugriff auf den Flash-Speicher 20 nötig ist. Bei der Initialisierung der Vorrichtung kann sie auch aus der Sequenz der kürzlich geschriebenen Sektoren, die im Flash-Speicher 20 verfolgbar sind, rekonstruiert werden. Die temporäre Sektoradressentabelle 54 ist im Flash-Speicher 20 enthalten und wird mit dem Inhalt des Sektoradressdatensatzes 56 aktualisiert, wenn die Liste voll wird. Die temporäre Sektoradressentabelle 54 hat dasselbe Format wie die Sektoradressentabelle 52 und erlaubt das Sammeln von physikalischen Adressdaten-Aktualisierungen für bestimmte Blöcke in der Sektoradressentabelle 52, um ein effizienteres Schreiben der Tabelle zu ermöglichen. Die temporäre Tabelle 54 ermöglicht die Bestimmung der physikalischen Adresse jedes logischen Sektors, den sie enthält, ohne dass ein Zugriff auf die Sektoradressentabelle 52 nötig ist.
  • Diese Hierarchie von Zuordnungsstrukturen 50 wird verwaltet, wobei sie nur selten Schreiboperationen in den Flash-Speicher erfordert und effizient die logisch/physikalische Adressübersetzung so unterstützt, dass eine totale Sicherheit der Sektoradressinformationen gegeben ist, auch wenn die Stromversorgung unerwartet von dem System 10 abgetrennt wird.
  • Die erforderlichen Datenstrukturen zur Unterstützung der Medienmanagement-Algorithmen für die zyklische Speicherung sind hauptsächlich im Flash-Speicher 20 gespeichert, zusammen mit den Host-Datensektoren, wobei nur eine sehr begrenzte Menge Steuerdaten vorübergehend im flüchtigen RAM 30 des Steuerprozessors enthalten ist. Die Informationen im flüchtigen Speicher 30 sind nicht kritisch und können bei einer Unterbrechung der Stromversorgung aus dem Flash-Speicher 20 rekonstruiert werden.
  • Alle Host-Daten und Steuerdatenstrukturen im Flash-Speicher 20 werden als physikalische Sektoren mit identischem logischen Format geschrieben und gelesen, das 512 Informations-Bytes plus einen 4-Byte-Header umfasst, der den Sektortyp definiert, plus andere typabhängige Informationen, geschützt durch 12 Bytes ECC.
  • In dieser Beschreibung bedeutet ein physikalischer Sektor eine Datenstruktur mit 528 Bytes, die von der Steuerung in den Flash-Speicher geschrieben wird. Der Begriff bezeichnet keine Gruppe von Speicherzellenpositionen in dem Flash-Speicher.
  • Physikalische Sektoren des gleichen Typs sind in dedizierten Blöcken zusammengefasst, wobei ein Block eine grundlegende physikalische Struktur im Flash-Speicher 20 ist, die in diesem Fall 16 physikalische Sektorpositionen umfasst, die mit einer einzigen Operation gelöscht werden können. Sektoren unterschiedlicher Typen können nicht im selben Block enthalten sein.
  • Die Medienmanagement-Algorithmen für die zyklische Speicherung arbeiten mit virtuellen Blöcken, wobei ein virtueller Block eine Gruppe von einem oder mehreren Flash-Blöcken im Flash-Speicher 20 ist. Die zyklischen Speicheralgorithmen behandeln einen virtuellen Block so, als sei er ein einzelner Flash-Block.
  • In Tabelle 1 ist eine Auswahl von Blocktypen im Flash-System 10 gezeigt. Der erste davon ist der Datenblock 60, der Host-Datensektoren enthält, die ausschließlich einem einzigen Schreibzeiger (DWP 46, DRP 47, SWP 48 oder SRP 49) zugeordnet sind, wobei jeder physikalische Datensektor ursprünglich vom Host-System eingeschriebene Informationen enthält.
  • Die Sektoradressentabelle 52 ist eine Liste von Adressen von physikalischen Sektoren im Flash-Speicher, die allen Sektoren im System 10 entsprechen, die über mehrere SAT-Blöcke 62 verteilt ist. Die SAT 52 enthält einen Eintrag für jeden Sektor, fortlaufend geordnet nach den logischen Adressen. Der n-te Eintrag in der SAT 52 enthält die physikalische Adresse für den Sektor mit der logischen Adresse n. Ein SAT-Block 62 enthält Einträge für eine logisch zusammenhängende Gruppe von Sektoren in einem Bereich des logischen Adressbereichs.
  • Jeder SAT-Block 62 ist in zwei gleiche Partitionen unterteilt, von denen eine für SAT-Einträge und die andere für temporäre SAT-Einträge (TSAT) reserviert ist. Die TSAT-Partition des Blocks ist ein Bereich, in dem TSAT-Sektoren, die bei einer Steuer-Schreiboperation geschrieben werden, vorübergehend gespeichert werden, ehe sie in die SAT-Partition des Blocks 62 geschrieben werden. Ein Index der gültigen TSAT-Sektoren und ihrer Position in der TSAT-Partition wird im Feld TSAT-Index (TSATI) in dem zuletzt geschriebenen TSAT-Sektor geführt.
  • Wenn ein TSAT-Sektor geschrieben wird, wird er an der ersten freien Sektorposition in der TSAT-Partition des SAT-Blocks 62 angeordnet, zu dem der Sektor gehört. Ein SAT-Block 62 wird neu geschrieben, wenn seine TSAT- Partition voll ist. Gültige TSAT-Sektoren in der vorherigen TSAT-Partition ersetzen die entsprechenden SAT-Sektoren in der SAT-Partition, und die TSAT-Partition wird leer gelassen.
  • Jeder SAT-Sektor enthält SAT-Einträge für eine logisch zusammenhängende Gruppe von Sektoren und umfasst 128 Einträge von je 3 Bytes.
  • Jeder TSAT-Sektor ist ein Sektor in der TSAT-Partition eines SAT-Blocks 62 und weist dasselbe Format wie ein SAT-Sektor auf. Der TSAT-Sektor enthält SAT-Einträge für eine logisch zusammenhängende Gruppe von Sektoren und umfasst 128 Einträge von je 3 Bytes.
  • Der TSATI jeder TSAT enthält einen Index auf die Adressen aller gültigen TSAT-Sektoren in dem SAT-Block 62, in dem er sich befindet. Ein TSATI wird bei jeder TSAT-Schreiboperation in jeden TSAT-Sektor geschrieben, aber nur der zuletzt geschriebene TSATI in einem SAT-Block ist gültig.
  • Der Map-Block 64 enthält Map-Sektoren, die die gelöschten Blöcke im System 10 definieren, sowie in diesem Fall gelöschte Blockmanagement-Sektoren (EBM). Nur der zuletzt geschriebene EBM-Sektor ist gültig.
  • In dieser Anordnung ist der Map-Block 64 eine Bitmap-Struktur mit einem Bit für jeden Block im System 10. Diese Bits werden verwendet, um den Löschstatus jedes Blocks anzugeben. Jedes Bit im Map-Block 64 ist auf logisch „0" gesetzt, wenn der entsprechende Block im gelöschten Zustand ist. Die Bits, die den Blöcken in der Zuordnungsblockliste oder der Liste der gelöschten Blöcke entsprechen, sind im Map-Block 64 immer auf logisch „1" gesetzt. Der Map-Block 64 für das System 10 kann mehr als einen Map-Sektor belegen, je nach Größe des Systems 10. In diesem Fall enthält jeder Map-Sektor den Löschstatus von 4.096 Blöcken innerhalb eines bestimmten physikalischen Adressbereichs. Die Bitmap in einem Map-Sektor 646 ist in 16 Zonen unterteilt, und Flags werden verwaltet, um das Vorhandensein von gelöschten Blöcken in jeder Zone anzugeben.
  • Jeder Block, der keine gültigen Datenstrukturen enthält und nicht in einem Map-Sektor, der Zuordnungsblockliste oder der Liste der gelöschten Blöcke enthalten ist, wird nie von dem Blockzuordnungsalgorithmus verwendet und ist daher nicht zugreifbar für die Speicherung von Host- oder Steuerdatenstrukturen. Dies bietet einen einfachen Mechanismus, um Blöcke mit defekten Positionen aus dem zugreifbaren Flash-Speicher-Adressbereich auszuschließen.
  • Das Feld Map-Zonen-Flag (MZF) des Map-Blocks 64 ist eine Bitmap, die das Vorhandensein von gelöschten Blöcken in jeder Zone einer Map-Sektorbitmap definiert, und befindet sich im Header des Map-Sektors, dem es entspricht.
  • Der Sektor Management der gelöschten Blöcke (EBM) des Map-Blocks 64 enthält Informationsfelder, die für die Verwaltung der gelöschten Blöcke benö tigt werden. Nur der zuletzt geschriebene EBM-Sektor in dem Map-Block ist gültig.
  • Das Feld Liste der gelöschten Blöcke (EBL) des EBM-Sektors ist eine Liste von gelöschten Blockadressen, die festlegt, welche Blöcke zur Zuordnung für die Benutzung verfügbar sind. Das Feld EBL ist eine zyklische Liste innerhalb eines festen Bereichs des EBM-Sektors 64a, und seine Grenzen sind durch die Felder EBL-Start (EBLS) und EBL-Länge (EBLL) des EBM-Sektors festgelegt.
  • Das Feld EBLS ist ein Zeiger, der die Adresse innerhalb des EBM-Sektors des ersten Eintrags in der EBL definiert. Das Feld EBLL definiert die Länge der EBL. Das Feld Anzahl der gelöschten Blöcke (EBC) definiert die Gesamtzahl der gelöschten Blöcke im Speichersystem 10 zu dem Zeitpunkt, an dem der EBM-Sektor geschrieben wird.
  • Das Feld Map-Anzahl des Map-Blocks 64 definiert die Anzahl der gelöschten Blöcke, die in jedem Map-Sektor identifiziert sind. Das Feld Map-Index enthält einen Index auf die Adressen aller gültigen Map-Sektoren im Map-Block 64. In dieser Anordnung wird der aktuelle MAP-Index mit jedem EBM-Sektor geschrieben.
  • Das Feld Map-Austausch-Quellzeiger (MSP) ist ein Zeiger auf einen Map-Sektor, der in der nächsten Map-Austauschoperation als Quellsektor verwendet werden soll.
  • Das Feld Map-Austausch-Zielzeiger (MDP) ist ein Zeiger auf einen Map-Sektor, der in der nächsten Map-Austauschoperation als Zielsektor verwendet werden soll.
  • Jede der Datenstrukturen (DCOB1, DCOB2, SCOB1 und SCOB2) für momentan überholte Blöcke (COB) im Feld COB des Map-Blocks definiert die Adresse eines von vier Blöcken, die überholte Datensektoren enthalten dürfen, zusammen mit einer Bitmap für den Map-Block, die die überholten Sektoren darin identifiziert. Maximal je zwei Blöcke dürfen überholte Sektoren enthalten, die durch Schreiboperationen am DWP 46 bzw. Schreiboperationen am SWP 48 erzeugt wurden. Überholte Sektoren werden nie durch Schreiboperationen an Verschiebezeigern erzeugt. Die COB-Datenstrukturen im EBM-Sektor sind eine Kopie der COBs im SRAM 30.
  • Das Feld Schreibzeiger des EBM-Sektors im Map-Block enthält die physikalischen Adressen, die jeweils einem der Schreibzeiger DWP, DRP, SWP und SRP unmittelbar nach dem Ende des letzten Datensatzes für den betreffenden Schreibzeiger entsprechen. Das Feld Schreibzeiger enthält auch die Blockverknüpfungen für jeden Schreibzeiger DWP, DRP, SWP und SRP seit dem Ende seines letzten Datensatzes. Diese Informationen sind nötig, um eine Rekon struktion der Datenstrukturen DWSL, SWSL, ABL, CBL und COB im SRAM 30 bei der Initialisierung des Speichersystems 10 zu ermöglichen.
  • Das Feld letzte TSAT definiert die vollständige physikalische Adresse des zuletzt geschriebenen TSAT-Sektors.
  • Das Feld SATA-Adresse definiert die Adresse des SATA-Blocks im Speicher 20.
  • Das Feld Sektoradressentabelle-Adressindex (SATAI) ist ein Index auf die Adressen aller gültigen SATA-Sektoren im SATA-Block.
  • Der SAT-Adressblock (SATA) 66 enthält SATA-Sektoren, die die Adressen aller SAT-Blöcke im Speicher 20 definieren.
  • Der SATA-Sektor 66a enthält die physikalischen Adressen der Blöcke im Speicher 20, die die SAT 52 enthält. Bei einer Vorrichtung mit hoher Kapazität kann es mehr als einen gültigen SATA-Sektor 66a geben, die sich jeweils auf einen logisch zusammenhängenden Bereich von SAT-Blöcken 62 beziehen. Der Bereich ist im Header des SATA-Sektors angegeben. Nur das letzte Auftreten eines SATA-Sektors für einen bestimmten Bereich ist gültig.
  • Der Block MAP-Adresse (MA) 68 enthält MAP-Adresssektoren, wobei der MA-Sektor die Adresse jedes der Map-Blöcke 64 enthält. Der Block Liste der defekten Blöcke (BBL) 70 enthält BBL-Sektoren 70a, wobei der BBL-Sektor 70a eine Bitmap aller virtuellen Blöcke im Flash-Speicher 20 enthält, um diejenigen zu identifizieren, die defekte Positionen aufweisen und daher unbrauchbar sind. Diese Informationen werden nur von einem externen Formatierprogramm verwendet, wenn die Vorrichtung neu formiert wird. Die BBL wird aktualisiert, wenn während der Betriebslebensdauer des Systems 10 ein Blockfehler auftritt.
  • Der Boot-Block (BB) 72 ist ein spezieller Block, der im Header seines ersten Sektors, der von der Steuerung 16 mit einem Suchverfahren bei der Initialisierung des Systems 10 im Speicher 20 lokalisiert wird, einen eindeutigen Identifizierungscode enthält. Der Boot-Block 72 enthält die nötigen Informationen über die Systemkonfiguration und Zeiger auf den MAP-Adressblock 68 im Flash-Speicher 20, um eine Initialisierung des Systems zu ermöglichen. Außerdem enthält er Informationen, die als Antwort auf eine Anfrage in den Host-Schnittstellenprotokollen an ein Host-System 12 zurückgegeben werden. Informationen sind in verschiedenen Sektortypen im Boot-Block 72 enthalten, wobei nur das letzte Auftreten eines bestimmten Sektortyps gültig ist. Zur Sicherheit sind nahe dem Anfang des Adressbereichs der physikalischen Blöcke zwei identische Kopien des Boot-Blocks 72 vorgesehen, wobei jedoch nur eine der Kopien mit geänderten MAP-Adresszeigern aktualisiert wird.
  • Der Boot-Blockparametersektor (BBP) 72b des Boot-Blocks 72 ist eine Liste von festen Parametern, die die Gerätekonfiguration definieren.
  • Der Informationsstruktursektor des Boot-Blocks 72 enthält Informationen, die für den Zugriff durch ein Host-System 12 in einen flüchtigen Speicher in der Steuerung 16 geladen werden. Dies kann die Karteninformationsstruktur (CIS) in den PC Card- oder CompactFlash-Protokollen sein.
  • Der Identifikationssektor des Boot-Blocks 72 enthält Informationen, die als Antwort auf einen Befehl zur Anforderung von Identifikationsinformationen an das Host-System 12 gegeben werden. Dieser Befehl kann der Befehl „Laufwerk identifizieren" nach dem ATA-Protokoll sein.
  • Der MA-Addresssektor (MAA) 72a des Boot-Blocks 72 enthält die physikalische Adresse des MA-Blocks 68, der bei der Initialisierung der Vorrichtung und dem Boot-Vorgang angeordnet werden muss. Wird der MA-Block 68 verschoben, so wird eine neue Kopie des MAA-Sektors 72a geschrieben.
  • Der Firmware-Block 67 enthält Firmware-Sektoren, die jeweils eine Firmware-Codeseite enthalten. An den niedrigsten fehlerfreien virtuellen Blockadressen im Flash-Speicher 20 können mehrere Firmware-Blöcke vorhanden sein.
  • Der Prozessor 24 der Steuerung 16 ist mit einem flüchtigen RAM-Speicher ausgerüstet, und in Tabelle 2 sind die Datenstrukturen in dem flüchtigen RAM des Prozessors gezeigt.
  • Die Datenschreibsektorliste (DWSL) und die Datenverschiebesektorliste (DRSL) sind Listen von Sektoren, die an den Schreibzeigern DWP und DRP geschrieben worden sind, mit denen die virtuellen Adressen für jeden darin enthaltenen Sektor berechnet werden können. Die DWSL und die DRSL können bei der Systeminitialisierung aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert werden. Die DWSL und die DRSL bestehen aus jeweils einem Datensatz, und dies sind Datensätze von geschriebenen logisch zusammenhängenden Datensektoren. Jeder Datensatz enthält die folgenden Felder:
    LBA: Logische Adresse des ersten Sektors in dem Datensatz.
    Datensatzlänge: Länge des Datensatzes in Sektoren.
    Sektoradresse: Virtuelle Adresse des ersten Sektors in dem Datensatz.
    Blockadresse: Liste der virtuellen Blockadressen, die die Sektoren des Datensatzes enthalten.
  • Beim Schreiben jedes Sektors innerhalb eines Datensatzes wird das Feld Datensatzlänge um eins erhöht, und wenn sich ein zugehöriger Schreibzeiger auf einen neuen zugeordneten Block bewegt, wird die Blockadresse zum Blockadressenfeld hinzugefügt. Ein DWSL- oder DRSL-Datensatz endet bei Vorliegen einer der folgenden Bedingungen.
  • Ein zu schreibender Sektor ist nicht logisch zusammenhängend mit dem vorherigen Sektor, der am gleichen Schreibzeiger geschrieben worden ist.
  • Die logische Adresse eines zu schreibenden Sektors ist so, dass SAT-Einträge für Sektoren in dem Datensatz in mehr als vier SAT-Sektoren enthalten wären. Dadurch ist sichergestellt, dass bei langen Sequenzen von zusammenhängenden Sektorschreiboperationen der letzte Sektor eines Datensatzes dem letzten Eintrag in einer SAT-Seite entspricht. Dies minimiert die Anzahl der TSAT-Sektor-Schreiboperationen.
  • Die logische Adresse eines zu schreibenden Sektors entspricht einem anderen SAT-Block aus den anderen Sektoren in dem Datensatz. Dadurch ist sichergestellt, dass bei einer Steuer-Schreiboperation nur eine einzelne SAT-Block-Schreiboperation angefordert werden kann.
  • Die logische Adresse eines zu dem DWSL-Datensatz hinzuzufügenden Sektors ist bereits in dem DRSL-Datensatz enthalten oder umgekehrt.
  • Die DWSL- und DRSL-Datensätze werden normalerweise zusammen beendet, und die Beendigung der Datensätze löst eine Steuer-Schreiboperation aus, die an Sektoren in beiden Datensätzen ausgeführt wird, woraufhin die DWSL- und DRSL-Datensätze gelöscht werden.
  • Die Systemschreibsektorliste (SWSL) und die Systemverschiebesektorliste (SRSL) sind Listen von Sektoren, die an den Schreibzeigern SWP und SRP geschrieben worden sind, mit denen die virtuellen Adressen für jeden darin enthaltenen Sektor berechnet werden können. Die SWSL und die SRSL können bei der Systeminitialisierung aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert werden. Die SWSL und die SRSL bestehen jeweils aus einer Reihe von Datensätzen, meist vier, die mit den entsprechenden Schreibzeigern verbunden sind, und jeder dieser Datensätze ist ein Datensatz von geschriebenen logisch zusammenhängenden Datensektoren, und sie weisen dasselbe Format wie die Datensätze für die DWSL und DRSL auf. Jeder Datensatz enthält die folgenden Felder:
    LBA: Logische Adresse des ersten Sektors in dem Datensatz.
    Datensatzlänge: Länge des Datensatzes in Sektoren.
    Sektoradresse: Virtuelle Adresse des ersten Sektors in dem Datensatz.
    Blockadresse: Liste der virtuellen Blockadressen, die die Sektoren des Datensatzes enthalten.
  • Beim Schreiben jedes Sektors innerhalb des Datensatzes wird das Feld Datensatzlänge um eins erhöht.
  • Bei Vorliegen einer der folgenden Bedingungen wird ein SWSL- oder SRSL-Datensatz eingefroren und ein neuer erzeugt. Ein zu schreibender Sektor ist nicht logisch zusammenhängend mit dem vorherigen Sektor, der am gleichen Schreibzeiger geschrieben worden ist.
  • Die logische Adresse eines zu dem SWSL-Datensatz hinzuzufügenden Sektors ist bereits in dem SRSL-Datensatz enthalten oder umgekehrt.
  • Wenn die maximale Anzahl von SWSL- oder SRSL-Datensätzen überschritten ist, wird eine Steuer-Schreiboperation ausgelöst. Eine Steuer-Schreiboperation wird gleichzeitig an allen Datensätze in der SWSL und SRSL ausgeführt, woraufhin die beendeten Datensätze gelöscht werden.
  • Jede COB-Datenstruktur (DCOB1, DCOB2, SCOB1 und SCOB2) definiert die Adresse eines von vier Blöcken, die überholte Datensektoren enthalten dürfen, zusammen mit einer Bitmap für den Block, die die überholten Sektoren darin identifiziert. Maximal je zwei Blöcke dürfen überholte Sektoren enthalten, die durch Schreiboperationen am Schreibzeiger DWP bzw. Schreiboperationen am Schreibzeiger SWP erzeugt wurden. Überholte Sektoren werden nie durch Schreiboperationen an Verschiebezeigern erzeugt. Die COB-Datenstrukturen im SRAM 30 werden in den EBM-Sektor kopiert, wenn der EBM-Sektor geschrieben wird.
  • Das Schreibzeiger-Feld enthält die virtuellen Adressen, die jeweils den Schreibzeigern DWP, DRP, SWP und SRP entsprechen.
  • Die Zuordnungsblockliste (ABL) ist eine Liste von Adressen von gelöschten Blöcken, die derzeit für die Zuordnung zu einem Schreibzeiger oder für das Neuschreiben einer Steuerstruktur verfügbar sind. Die ABL enthält keinen Datensatz aller gelöschten Blöcke in der Vorrichtung. In diesem System kann die ABL zum Beispiel die Kapazität für bis zu 16 Blöcke aufweisen. Die Reihenfolge der Zuordnung der Blöcke aus der ABL entspricht ihrer Reihenfolge in der ABL. Die ABL kann bei der Systeminitialisierung aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert werden.
  • Die Liste der gelöschten Blöcke (CBL) ist eine Liste von Adressen von gelöschten Blöcken, die durch eine Blocklöschoperation bei der letzten Operation der Vorrichtung erzeugt worden sind. Die CBL kann die Kapazität für bis zu 16 Blöcke aufweisen. Die Reihenfolge der Blöcke in der CBL entspricht der Reihenfolge, in der sie gelöscht werden. Die Blocklöschrate und die Rate der Einbeziehung in die CBL müssen nicht der Blockzuordnungsrate aus der ABL entsprechen. Die CBL kann bei der Systeminitialisierung aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert werden.
  • Der SAT-Cache im Prozessor-RAM ist ein temporärer Datensatz der nächsten Gruppe von Einträgen in der SAT nach dem letzten Eintrag für einen Datensektor, der aus einem SAT-Sektor oder einem TSAT-Sektor im Flash-Speicher gelesen wurde. Er kann zum Beispiel 16 Einträge enthalten. Er dient dazu, die Anforderungen für einen Zugriff auf den Flash-Speicher bei der Adressübersetzungsoperation zu verringern. Der SAT-Cache wird nicht gefüllt, wenn ein Eintrag für einen Systemsektor aus einem TSAT- oder SAT-Sektor gelesen wird.
  • Datenstrukturpositionen im Flash-Speicher 20 sind durch Einträge und Felder in anderen Datenstrukturen definiert, und eine schematische Darstellung derselben ist in dem Referenzbaum in 6 gezeigt, der die Datenblöcke illustriert, die jenen entsprechen, die anhand von Tabelle 1 beschrieben worden sind.
  • Der Boot-Block 72 kann bei der Systeminitialisierung durch ein Verfahren zur Suche seiner eindeutigen Signatur im Header seines ersten MAA-Sektors 72a identifiziert werden.
  • Die Steueroperationen, die die Durchführung der zyklischen Speicherung von Daten ermöglichen, werden nachstehend beschrieben. In 7 sind der Ablauf von Operationen, die aus einem Sektorschreibbefehl resultieren, und ihre relative Häufigkeit der Ausführung gezeigt, wobei N die physikalische Blockgröße des Flash-Speichers in Sektoren und F die Größe einer geschriebenen Datei in Sektoren ist.
  • In diesem Ablauf ist kein Schreiben von Steuerdatenstrukturen in den Flash-Speicher 20 erforderlich, was ein wesentlicher Faktor ist, der zu einer hohen Datenschreibleistung beiträgt. Wenn Steuerstrukturen im Flash-Speicher 20 geändert werden müssen, wird eine Steuer-Schreiboperation durchgeführt.
  • Die Adressübersetzungsoperation 76 implementiert eine logisch/physikalische Adressübersetzung und wird vor jeder Sektorschreiboperation durchgeführt, um die bestehende physikalische Position des logischen Sektors, der geschrieben werden soll, festzulegen oder um den Sektor für eine Leseoperation zu lokalisieren. In allen Fällen, in denen eine gültige Version des Sektors im Flash-Speicher 20 vorhanden ist, kann die logische Zieladresse optional im Header des Sektors durch eine Sektorleseoperation verifiziert werden. Die Adressübersetzung ist getrennt ausführlich beschrieben.
  • Die Blockzuordnungsoperation erfolgt, wenn eine Sektorschreiboperation bewirkt, dass einer der Schreibzeiger auf einen neuen Block springt, oder wenn ein neuer Block für eine Steuerstruktur bereitgestellt werden muss. Die Operation 78 ermöglicht die Zuordnung des neuen Blocks mit dem obersten Eintrag in der Zuordnungsblockliste (ABL).
  • Nur zwei Blöcke mit überholten Sektordaten dürfen mit jedem der Schreibzeiger DWP und SWP verbunden sein. Wenn ein Datensektor geschrieben werden soll, der überholte Daten in einem dritten Block erzeugen würde, wird eine COB-Änderungsoperation 77 ausgeführt, um diesen dritten Block als einen der beiden zulässigen COB-Blöcke zuzuweisen und eine Blocklöschoperation an dem einen der beiden momentanen COB-Blöcke durchzuführen. Der ausgewählte COB-Block, der geändert wird, ist im Allgemeinen der Block mit der kleineren Anzahl gültiger Sektoren, die verschoben werden müssen, kann aber auch der ältere der beiden COB-Blöcke sein. Enthält der ausgewählte COB-Block einen Schreibzeiger, wird alternativ der andere COB-Block für die Blocklöschoperation ausgewählt. Die entsprechende COB-Datenstruktur im Prozessor-RAM wird aktualisiert.
  • Eine Datenblocklöschoperation 79 bewirkt, dass ein einzelner Block im physikalischen Speicher des Flash-Speichers 20 gelöscht wird. COB-Datenstrukturen im Prozessor-RAM werden verwendet, um festzustellen, ob der Block gültige Datensektoren enthält, die zuerst verschoben werden müssen. Die Sektoren werden verschoben, indem sie an den Zeigern DRP bzw. SRP geschrieben werden.
  • Wenn ein überholter Block infolge einer COB-Änderungsoperation 78 gelöscht werden soll, muss eine Sektorverschiebeoperation durchgeführt werden, wenn der Block gültige Sektoren enthält. Die gültigen Sektoren müssen aus dem überholten Block gelesen und an der entsprechenden DRP- oder SRP-Schreibzeigeradresse geschrieben werden, bevor der überholte Block gelöscht wird.
  • Wenn die Sektorlisten-Aktualisieroperation 80 ausgeführt wird, wird ein Datensatz in der DWSL, SWSL, DRSL oder SRSL, soweit zutreffend, geändert oder erzeugt, um den Sektor aufzunehmen, der geschrieben oder verschoben wird. Wird die maximale Anzahl von Datensätzen in der Sektorliste überschritten, wird eine Steuer-Schreiboperation 84 ausgelöst.
  • Bei der ABL-Aktualisieroperation 82 wird die ABL modifiziert, um die Adresse eines gelöschten Blocks, der zur Verwendung zugeordnet worden ist, zu entfernen. Wird die ABL leer, wird eine Steuer-Schreiboperation 84 ausgelöst.
  • Bei der CBL-Aktualisieroperation 81 wird die CBL modifiziert, um die Adresse eines Blocks, der während des Betriebs der Vorrichtung gelöscht worden ist, hinzuzufügen. Wird die CBL voll, wird eine Steuer-Schreiboperation 84 ausgelöst.
  • In 8 ist die Adressübersetzungsoperation 76 ausführlich gezeigt und insbesondere der Ablauf der erforderlichen Operationen zur Durchführung der Funktion zur Sektor-Adressübersetzung.
  • Die Merkmale der einzelnen Operationen, die bei der Adressübersetzungsoperation 76 ausgeführt werden müssen, werden nachstehend ausführlich beschrieben.
  • Ein Sektor wird identifiziert, so dass er sich entweder auf Benutzerdaten oder auf Systemdaten bezieht, und eine Sektorschreiblisten-Suche (WSL) 86 nach Datensätzen wird entsprechend entweder in der DWSL und DRSL oder in der SWSL und SRSL durchgeführt. Eine Datensatzsuche erfordert eine Kon trolle, ob die Zieladresse innerhalb des Adressbereichs für den Datensatz liegt, der durch die Datensatzstartadresse und die Datensatzlänge bestimmt wird.
  • Eine SAT-Cache-Suchoperation 87 wird nur für Datensektoren durchgeführt. Sie erfordert eine Kontrolle, ob die Zieladresse innerhalb des Adressbereichs für den SAT-Cache liegt, der durch die Cache-Startadresse und die Cache-Länge von 16 Sektoren bestimmt wird. Für Operationen an einer logisch zusammenhängenden Datei resultieren 15 von 16 Sektoren in einem SAT-Cache-Treffer. Wird kein Treffer erzielt, wird der Cache mit den folgenden 16 Sektoradressen neu gefüllt, wenn die TSAT- oder SAT-Seite anschließend gelesen wird.
  • Eine TSATI-Leseoperation 89 erfordert ein Lesen des TSATI-Feldes aus dem zuletzt geschriebenen TSAT-Sektor im SAT-Zielblock und eine Suche in seinen Indexeinträgen für die SAT-Sektorzieladresse. Ein Lesen und Suchen des TSATI kann nur nach einem Fehlschlag bei einer SAT-Cache-Suche 87 erforderlich sein, das heißt für einen von 16 Sektoren für eine sequenzielle Datei. Der Prozessor hält im Prozessor-RAM jedoch die logische Adresse des zuletzt aufgerufenen SAT-Sektors 62c und die physikalische Position des entsprechenden TSAT-Sektors 62a oder SAT-Sektors 62c, und wenn diese dem SAT-Zielsektor entspricht, ist eine TSATI-Suche nicht nötig. Daher ist ein Lesen des TSATI nur einmal pro 128 Sektoren für eine sequenzielle Datei erforderlich, weil ein SAT-Sektor Adressen für 128 Datensektoren aufweist.
  • Die SAT-Lese/SAT-Cache-Fülloperation 91 und die TSAT-Lese/SAT-Cache-Fülloperation 90 sind identisch und erfordern das Lesen eines SAT-Sektors 62c oder eines TSAT-Sektors 62a oder 62b sowie das Laden von 16 SAT-Einträgen in den SAT-Cache im Prozessor-RAM. Der Prozessor hält im Prozessor-RAM die Adresse des zuletzt aufgerufenen SAT-Blocks. Daher ist ein Lesen eines SATA-Sektors 66a oder eines EBM-Sektors 64a zum Bestimmen der physikalischen Adresse eines SAT-Blocks 62 nur nötig, wenn sich der SAT-Block 62 gegenüber dem geändert hat, der bei der vorherigen Adressübersetzungsoperation verwendet wurde.
  • Die Berechnung 88 der physikalischen Adresse wird durchgeführt, wenn für eine Sektorzieladresse festgestellt wird, dass sie in einem Sektorlistendatensatz liegt, und die Berechnung 92 ermöglicht die Bestimmung ihrer Position relativ zu der logischen Startadresse sowie die Berechnung ihrer virtuellen Adresse aus den Sektoradressen- und Blockadressenfeldern des Datensatzes.
  • Die typischen Abläufe für die Adressübersetzung für logisch aufeinanderfolgende Datensektoren sind wie folgt:
    15 von jeweils 16 Sektoren für die Sektorlisten-Suchoperation 86, gefolgt von der SAT-Cache-Suchoperation 87,
    1 von jeweils 16 Sektoren für die Sektorlisten-Suchoperation 86, gefolgt von der SAT-Cache-Suchoperation 87 und der TSAT- oder SAT-Lese/SAT-Cache-Fülloperation 90 oder 91.
    1 von jeweils 128 Sektoren für die Sektorlisten-Suchoperation 86, gefolgt von der SAT-Cache-Suchoperation 87, der TSATI-Leseoperation 89 und der TSAT- oder SAT-Lese/SAT-Cache-Fülloperation 90 oder 91.
  • Der Ablauf für die Adressübersetzung für Systemsektoren in einem typischen Fall ist die Sektorlisten-Suchoperation 86, gefolgt von der physikalischen Adress-Berechnungsoperation 88 bei Erkennen einer Sektorzieladresse in einem Sektorlistendatensatz.
  • In einem Worst-Case-Szenario besteht der Ablauf jedoch aus der Sektorlisten-Suchoperation 86, gefolgt von der TSATI-Leseoperation 89 und der TSAT- oder SAT-Lese/SAT-Cache-Fülloperation 90 oder 91.
  • Die Steuer-Schreiboperation 84 implementiert eine Steuer-Schreiboperation, die die Steuerdatenstrukturen im Flash-Speicher 20 aktualisiert. Die Abläufe bei der Steuer-Schreiboperation 84 sind in 9 gezeigt.
  • Jede der Operationen, die ein Schreiben von Steuerdaten darstellen, besteht aus zwei Komponenten. Die erste Komponente bezieht sich auf Datenstrukturen, die ein logisch/physikalisches Adress-Mapping für die von einem Host-System 12 gelieferten Datensektoren ermöglichen, und die zweite Komponente bezieht sich auf Datenstrukturen, die gelöschte Blöcke im Flash-Speicher 20 und deren Planung für die Benutzung beim Schreiben von Daten- oder Steuerstrukturen verwalten.
  • Die Sektorlisten-Freigabeoperation 94 wird an der DWSL und DRSL zusammen oder der SWSL und SRSL zusammen durchgeführt, wenn die momentane Steuer-Schreiboperation durch Beendigung eines Datensatzes in einer Sektorliste ausgelöst wurde. Wurde die Steuer-Schreiboperation durch eine CBL- oder ABL-Aktualisieroperation ausgelöst, werden alle Sektorlisten beendet. Eine Sektorlistenfreigabe bewirkt, dass alle erforderlichen Informationen im Hinblick auf Sektoren und Blöcke in der Liste in Datenstrukturen im Flash-Speicher 20 übertragen werden und die Sektorlisten-Datenstruktur im flüchtigen Prozessor-RAM gelöscht wird.
  • Die TSAT-Schreiboperation 96 wird bei einer Sektorlistenfreigabe durchgeführt, um im Flash-Speicher 20 die virtuellen Adressen für Sektoren in den Datensätzen in der DWSL und DRSL oder in den Datensätzen in der SWSL und SRSL zu speichern. Wenn ein TSAT-Sektor 62a oder 62b geschrieben wird, wird er an der ersten freien Sektorposition in der TSAT-Partition des SAT-Blocks angeordnet, auf die sich der Sektor bezieht. Ist die TSAT-Partition voll, muss eine SAT-Block-Schreiboperation durchgeführt werden.
  • Die SAT-Schreiboperation 98 erfordert die Änderung eines oder mehrerer Sektoren eines einzelnen SAT-Blocks 62, um neue Einträge für alle Sektoren einzuarbeiten, die durch gültige TSAT-Sektoren 62c in dem SAT-Block 62 angesprochen werden. Sie wird durchgeführt, wenn die TSAT-Partition in einem SAT-Block voll wird. Alle Sektoren des SAT-Blocks werden mit oder ohne Änderung in einen neu zugeordneten SAT-Block neu eingeschrieben. Die vorherige Position des SAT-Blocks wird gelöscht, und ein geänderter SATA-Sektor wird geschrieben.
  • Die SATA-Schreiboperation 100 erfordert das Schreiben eines aktualisierten SATA-Sektors 66a, um eine geänderte Adresse für einen SAT-Block 62 festzuhalten. Der EBM-Sektor 64a wird mit aktualisierten SATA-Indexinformationen geschrieben.
  • Wenn ein SATA-Sektor 66a geschrieben werden muss und kein gelöschter Sektor im SATA-Block 66 vorhanden ist, wird eine Blockzuordnungsoperation durchgeführt, und der SATA-Sektor wird mit einer SATA-Block-Verschiebeoperation 102 in seinen ersten Sektor geschrieben. Der EBM-Sektor 64a wird mit einer aktualisierten SATA-Adresse und SATA-Indexinformationen geschrieben. Die vorherige Position des SATA-Blocks 66 wird gelöscht, und seine Adresse wird zur CBL hinzugefügt.
  • Die EBM-Sektor-Schreiboperation 95 aktualisiert die Datenstrukturen für das Management der gelöschten Blöcke im Flash-Speicher 20 und die ABL und CBL im Prozessor-RAM.
  • Wenn der Map-Block 64 gefüllt ist, werden alle gültigen Map-Sektoren gemäß Angabe im Map-Index in dem EBM-Sektor mit einer Map-Block-Verschiebeoperation 97 in einen neu zugeordneten Block neu eingeschrieben, zusammen mit einem EBM-Sektor. Die vorherige Position des Map-Blocks 64 wird gelöscht, und ein geänderter MA-Sektor 68a wird geschrieben.
  • Die MA-Schreiboperation 99 stellt sicher, dass dieser modifizierte MA-Sektor 68a geschrieben wird, wenn der neue Map-Block geschrieben wird.
  • Wenn ein MA-Sektor 68a geschrieben werden muss und kein gelöschter Sektor im MA-Block 64 vorhanden ist, wird eine Blockzuordnungsoperation durchgeführt, und der MA-Sektor 68a wird mit einer MA-Block-Verschiebeoperation 101 in den ersten Sektor 64b des MA-Blocks 64 geschrieben. Die vorherige Position des MA-Blocks 64 wird gelöscht, und seine Adresse wird zum MAA-Sektor 72a im Boot-Block 72 hinzugefügt.
  • Ändert sich die Adresse des MA-Blocks 68 als Ergebnis einer MA-Block-Verschiebeoperation 101, wird mit einer MAA-Schreiboperation 103 ein aktualisierter MAA-Sektor 72a in den Boot-Block 72 geschrieben.
  • Wenn ein MAA-Sektor geschrieben werden muss und kein gelöschter Sektor im Boot-Block 72 vorhanden ist, wird eine Boot-Block-Neuschreibopera tion 104 durchgeführt. Eine zweite Kopie des Boot-Blocks existiert und enthält nur die BBP-, Informationsstruktur- und Identifikationssektoren. Der momentane MAA-Sektor 72a wird in diese zweite Boot-Blockkopie geschrieben, und die erste Boot-Blockkopie wird gelöscht. Danach werden die BBP-, Informationsstruktur- und Identifikationssektoren aus der zweiten Kopie in die erste Kopie zurückgeschrieben. Die zweite Kopie wird dann zur aktiven Kopie, und die erste Kopie wird als Sicherheitskopie gehalten. Später folgende MAA-Sektoren werden nur in die erste Kopie geschrieben.
  • Die EBM-Sektor-Schreiboperation 95 wird nachstehend ausführlich anhand von 10 beschrieben, die die erforderlichen Abläufe zur Durchführung der EBM-Sektor-Schreibfunktion zeigt.
  • Das Ablaufdiagramm in 10 definiert den Blocksequenzalgorithmus 115 für die Zuordnung gelöschter Blöcke zur Verwendung beim Schreiben von Daten- oder Steuerstrukturen. Ist das Speichersystem 10 nicht voll, das heißt es gibt gelöschte Blöcke, die in Bitmaps in einem oder mehreren Map-Sektoren 64b markiert sind, beziehen sich die Datenblöcke, die am Ende der Datenstruktur für die Liste der gelöschten Blöcke, die nur Blöcke für die Zuordnung und Verwendung definiert, hinzugefügt werden, auf eine Kombination von Blöcken aus Map-Sektoren und Blöcken aus der CBL, die kürzlich gelöscht worden sind. Ist das Speichersystem voll, das heißt es gibt keine gelöschten Blöcke, die in Map-Sektoren markiert sind, beziehen sich die am Ende der Liste der gelöschten Blöcke hinzugefügten Blockadressen nur auf Blöcke aus der EBL, die kürzlich gelöscht worden sind. In diesem Fall werden die gelöschten Blöcke in exakt der Reihenfolge wiederverwendet, in der sie gelöscht wurden.
  • Vor einer Map-Schreiboperation wird die EBL im EBM-Sektor 64a durch die Zeiger EBLS und EBLL definiert. Die ersten 16 Einträge in der EBL sind Adressen von Blöcken in der ABL im SRAM 30 unmittelbar nach der vorherigen Map-Schreiboperation. Die Adressen in der ABL im SRAM 30 können sich auf Blöcke beziehen, die seit der vorherigen Map-Schreiboperation zur Verwendung zugeordnet worden sind, oder auf gelöschte Blöcke, die zur Zuordnung verfügbar sind. Die ABL und CBL können zu Beginn einer Map-Schreiboperation beide voll, teilweise gefüllt oder leer sein. Eine schematische Darstellung dieser Operation ist in 11 gezeigt.
  • Die Map-Quellsektor-Wahloperation 105 wählt einen Quellsektor in der Map zum Lesen von gelöschten Blockadressen durch eine Vorwärtssuche ab der Position des Zeigers MSP bei Abschluss der vorherigen Map-Schreiboperation. Der MSP verhält sich wie ein zyklischer Zeiger, der durch den physikalischen Adressbereich wandert. Werden keine gelöschten Blöcke in einem Map-Sektor angezeigt, wie anhand des Parameters Map-Anzahl bestimmt, entfallen die Austauschoperationen mit Map-Sektoren.
  • Die Map-Zielsektor-Wahloperation 106 findet einen Zielsektor in der Map zum Schreiben gelöschter Blockadressen durch Prüfung der Blockadressen in der CBL. Nur ein Zielsektor wird ausgewählt.
  • Die CBL2Map-Operation 107 sorgt dafür, dass alle Blockadressen in der CBL, die sich auf den ausgewählten Map-Zielsektor beziehen, gelöscht werden, und die entsprechenden Bits im Map-Zielsektor werden auf den gelöschten Status gesetzt. Der Map-Sektor wird neu in den Flash-Speicher geschrieben, sofern derselbe Sektor nicht auch der Map-Quellsektor ist. Die CBL muss durch diese Operation 107 nicht geleert werden und kann restliche gelöschte Blöcke enthalten, die nicht in den Map-Zielsektor geschrieben werden konnten. Der Status der Datenstrukturen nach dieser Operation ist in 12 gezeigt.
  • Die ABL- und CBL-Konsolidierung 108 sorgt dafür, dass die CBL komprimiert wird, indem die Einträge für restliche gelöschte Blöcke an den Anfang der CBL verschoben werden, und dass die ABL komprimiert wird, indem die Einträge für zugeordnete Blöcke, die mit der während derselben Steuer-Schreiboperation durchgeführten Sektorlistenfreigabe verbunden sind, gelöscht werden und verbleibende Einträge an den Anfang der ABL verschoben werden. Der Status der Datenstrukturen nach dieser Operation ist in 13 gezeigt.
  • Die Map2CBL-Operation 110 sorgt dafür, dass die Blockadressen, entsprechend den Bits im Map-Quellsektor zwischen dem Zeiger MSP und dem Ende des Sektors, die im gelöschten Status sind, in die CBL geschrieben werden und dass die Bits im Map-Quellsektor auf den nicht gelöschten Status geändert werden. Bei dieser Operation werden möglichst viele Blöcke geschrieben, die die CBL nach Möglichkeit füllen, wobei die CBL bei dieser Operation als Schreibpuffer verwendet wird. Der Map-Sektor wird neu in den Flash-Speicher 20 geschrieben, und der Zeiger MSP wird geändert, um auf den letzten in die CBL geschriebenen Block zu verweisen. Der Status der Datenstrukturen nach dieser Operation ist in 14 gezeigt.
  • Die CBL2EBL-Operation 111 sorgt dafür, dass die in der CBL 117 gepufferten Blockadressen am Ende der EBL hinzugefügt werden und die CBL gelöscht wird. Die in der EBL hinzugefügten Blöcke sind eine Kombination von recycelten Blöcken aus der CBL, bei denen es sich um nach der CBL2Map-Operation verbleibende restliche Blöcke handelt, und von durch den zyklischen Zeiger MSP definierten Blöcken, die bei der Map2CBL-Operation 110 geladen wurden. Der Status der Datenstrukturen nach dieser Operation ist in 15 gezeigt.
  • Die EBL2ABL-Operation 112 sorgt dafür, dass die ABL gefüllt wird, indem so viele Blockadressen wie nötig ab dem Anfang der EBL 118 oder ab Positionen 118a in der EBL 118 unmittelbar nach freien Blöcken geschrieben werden, die bereits in der ABL 116 enthalten sind. Die Adressen der nicht freigegebe nen zugeordneten Blöcke am Anfang der ABL werden an den Anfang der EBL kopiert. Der Zeiger EBLS wird aktualisiert, damit die ersten Blockadressen in der ABL und EBL übereinstimmen, und die EBLL wird modifiziert. Der Status der Datenstrukturen nach dieser Operation ist in 16 gezeigt.
  • Die EBM-Schreiboperation 113 sorgt dafür, dass alle erforderlichen Felder im EBM-Sektor, der in der Steuerung 16 zwischengespeichert ist, aktualisiert werden und der Sektor in den Map-Block 64 geschrieben wird.
  • Die zyklische Speicheroperation erreicht ihre hohe Leistung zum Teil durch Nutzung der einzigartigen kontrollierbaren Eigenschaften der im Flash-Speicher 20 gespeicherten Datenstrukturen, damit der flüchtige SRAM 30 in der Steuerung 16 für die Kurzzeitspeicherung von Steuerdatenstrukturen verwendet werden kann. Dies kann ohne die Gefahr eines Verlusts von Informationen beim Ausschalten der Steuerung erfolgen.
  • Ein entscheidender Schritt bei der Initialisierung des Systems 10 nach dem Einschalten durch einen Host 12 ist die Rekonstruktion der Datenstrukturen im SRAM 30 aus denen im Flash-Speicher 20. Alle Steuerdatenstrukturen im Flash-Speicher müssen gefunden werden, und danach müssen die zuletzt geschriebenen Host-Datenstrukturen abgesucht werden, um die Datenstrukturen im SRAM 30 zu rekonstruieren.
  • Die Datenstrukturen im Flash-Speicher 20 werden mit dem folgenden Prozess rekonstruiert, der nach dem in 6 gezeigten Referenzbaum für Datenstrukturen abläuft.
  • Der Boot-Block 72 wird durch Absuchen von Sektoren ab der niedrigsten physikalischen Adresse im Flash-Speicher 20 gefunden. Der BBP-Sektor 72b ist immer der erste Sektor des Boot-Blocks 72 und enthält eine eindeutig identifizierbare Signatur in seinem Header, die seine Identifizierung ermöglicht. Nur Sektoren, die der erste Sektor von Blöcken mit der kleinsten unterstützten Blockgröße sein können, müssen gelesen werden. Blöcke an den niedrigsten Adressen im Flash-Speicher 20, die so definiert sein können, dass sie immer Firmware-Code enthalten, müssen nicht abgesucht werden. Der Scan-Prozess zur Identifizierung des Boot-Blocks ist sehr kurz, da der Boot-Block im ersten freien Block am Anfang des Flash-Speichers angeordnet ist, hinter eventuellen Blöcken für die Speicherung von Firmware.
  • Der BBP-Sektor 72b und der gültige MAA-Sektor 72a im Boot-Block 72 werden gefunden, gelesen und verifiziert.
  • Die zweite Kopie des Boot-Blocks wird gefunden und verifiziert, und zwar an der im BBP-Sektor 72b definierten Adresse.
  • Der Map-Adressblock 68 wird gefunden, wie im MAA-Sektor 72a definiert, und sein gültiger MA-Sektor 68a wird gefunden und verifiziert.
  • Der Map-Block 64 wird gefunden und verifiziert, wie im MA-Sektor 68a definiert.
  • Der gültige EBM-Sektor 64a im Map-Block 64 wird gefunden und verifiziert.
  • Die ABL, Schreibzeiger, Sektorlisten und COBs werden initialisiert, entsprechend den Feldern im EBM-Sektor 64a.
  • Der SATA-Block 66 und der gültige SATA-Sektor 66a werden gefunden und verifiziert, wie im EBM-Sektor 64a definiert.
  • Die Datenstrukturen im flüchtigen RAM werden danach mit dem folgenden Prozess rekonstruiert. Die ersten 16 Einträge in der EBL im EBM-Sektor 64a werden gelesen, um den ABL-Inhalt nach der unmittelbar vorhergehenden Steuer-Schreiboperation zu ermitteln.
  • Das Feld Schreibzeiger im EBL-Sektor 64a wird gelesen. Dies definiert die Position der Zeiger DWP, DRP, SWP und SRP unmittelbar nach der letzten Steuer-Schreiboperation, bei der Sektorlistendatensätze beendet wurden, und definiert außerdem die Reihenfolge der Blöcke, sofern zutreffend, die durch jeden Zeiger zwischen dieser Steuer-Schreiboperation und der unmittelbar vorhergehenden Steuer-Schreiboperation geschrieben wurden.
  • Die Sektoren werden aus allen so identifizierten Blöcken gelesen, um eine Kette von verknüpften logischen Sektoren am DWP festzulegen. Diese Informationen werden verwendet, um den DWSL-Datensatz zu erzeugen.
  • Die ersten Sektoren in Blöcken in der rekonstruierten ABL werden nacheinander gelesen, um die mit dem DWP verbundenen Blöcke aus den in den Blöcken enthaltenen Sektor-Headern zu identifizieren. Wenn ein solcher Block identifiziert wird, werden alle seine Sektoren gelesen, und die Erzeugung des DWSL-Datensatzes, wie in Schritt 3, ist abgeschlossen.
  • Mit dem DWP verbundene Blöcke, identifiziert in Schritt 4, werden in der ABL als zugeordnet markiert, um die momentane Version der ABL zu erzeugen, wie sie vor dem vorherigen Abschalten der Stromversorgung existiert hat.
  • Diese Schritte werden für den DRP, SWP und SRP wiederholt, um die DRSL, SWSL und SRSL zu rekonstruieren. Damit ist auch die Rekonstruktion der ABL abgeschlossen.
  • Die Datenstrukturen DCOB1, DCOB2, SCOB1 und SCOB2, so wie sie nach dem unmittelbar vorhergehenden Schreiben von Steuerdaten existiert haben, werden aus dem EBM-Sektor gelesen.
  • Die Adressübersetzung erfolgt nacheinander für die Sektoren in den DWSL-, DRSL-, SWSL- und SRSL-Datensätzen, die bereits rekonstruiert worden sind, um die Folge von Sektoren und Blöcken zu identifizieren, die seit dem unmittelbar vorhergehenden Schreiben von Steuerdaten überholt worden sind. Dies erlaubt die Rekonstruktion der Entwicklung der COBs und die Er zeugung der CBL. Alle so identifizierten überholten Sektoren, die in rekonstruierten SWSL-Datensätzen auftreten, werden aus diesen Datensätzen entfernt. Durch Schreiboperationen am DRP und SRP werden keine überholten Sektoren erzeugt, und mit ihnen verbundene Datensätze können in diesem Schritt vernachlässigt werden.
  • Diese rekonstruierten Versionen der DWSL, DRSL, SWSL, SRSL, ABL, CBL, DCOB1, DCOB2, SCOB1 und SCOB2 werden für die anschließenden Geräteoperationen verwendet.
  • Eine Reihe von Stromausfall-Wiederherstellfunktionen kann verwendet werden, um Datenstrukturen zu reparieren, wenn diese entweder beschädigt sind oder aufgrund eines Stromausfalls während des Normalbetriebs nicht miteinander übereinstimmen.
  • Diese Funktionen nutzen dieselben Merkmale der Rückverfolgbarkeit in Medienmanagement-Operationen für die zyklische Speicherung, die die Rekonstruktion der Datenstrukturen im flüchtigen RAM bei der Initialisierung ermöglichen, wie vorstehend beschrieben.
  • Verschiedene Modifikationen können an der vorstehend beschriebenen Anordnung vorgenommen werden, ohne vom Umfang der Erfindung abzuweichen. Zum Beispiel kann ein System mit einer Flash-Disk-Vorrichtung physikalisch auf verschiedene Weise partitioniert sein, entsprechend der Systemarchitektur, wobei jedoch alle Systeme allgemein der vorstehend beschriebenen Struktur entsprechen. Der Flash-Speicher 20 ist zum Beispiel in 1 als Teil eines Speichersystems 10 gezeigt, aber er kann sich alternativ auf einer herausnehmbaren Karte befinden und über eine logische Schnittstelle 14, die wie vorstehend beschrieben Industrie-Standardprotokollen entspricht, mit einem Host-System verbunden werden. Beispiele für solche Industriestandards sind unter anderem PCMCIA ATA, CompactFlash und MultiMediaCard. Bei einer solchen Anordnung kann sich die Steuerung auf einer herausnehmbaren Karte befinden, wobei die Steuerung typischerweise eine einzelne integrierte Schaltung ist. Der Flash-Speicher 10 kann aus einer oder mehreren integrierten Schaltungen bestehen, und die Steuerung kann auf derselben integrierten Schaltung wie der Flash-Speicher vorgesehen sein.
  • Es könnte auch sein, dass der Host und das Flash-System physikalisch so partitioniert sind, dass sich nur der Flash-Speicher auf einer herausnehmbaren Karte befindet, die eine physikalische Schnittstelle zum Host-System aufweist. Eine Hierarchie dieser Anordnung ist in 17 gezeigt. Ein Beispiel für eine solche herausnehmbare Flash-Speicherkarte ist eine SmartMedia-Karte. Die Steuerung ist innerhalb des Host-Systems 11 angeordnet und kann die Form einer integrierten Schaltung oder von Firmware annehmen, die von einem Prozessor im Host-System ausgeführt wird.
  • Alternativ kann das Verfahren nach der vorliegenden Erfindung in einem eingebetteten Speichersystem implementiert werden, dass nicht physikalisch aus einem Host-System entnommen werden kann. Ein solches System kann dieselbe Partitionierung wie ein Speichersystem auf einer herausnehmbaren Karte aufweisen, wobei die Steuerung die Form einer integrierten Schaltung aufweist und eine logische Schnittstelle nach Industrie-Standardprotokollen umfasst. Die Steuerung kann jedoch auch mit anderen Funktionen im Host-System integriert sein.
  • Bei der beschriebenen Anordnung ist jeder Sektor durch eine LBA identifiziert, kann jedoch auch durch eine Adresse im Zylinder/Kopf/Sektor-Format (CHS) identifiziert werden, das ursprünglich für Magnetplattenvorrichtungen verwendet wird. Außerdem weist die Steuer-Hardware bei der beschriebenen Anordnung eine dedizierte Architektur in einer getrennten integrierten Schaltung auf, aber Elemente der Steuer-Hardware, zum Beispiel der Mikroprozessor, können auch gemeinsam mit anderen Funktionen im Host-System genutzt werden. Darüber hinaus können die Management-Algorithmen für die zyklische Speicherung in einem Mikroprozessor im Host-System implementiert sein oder der Prozess kann über die Ein/Ausgangsanschlüsse eines normalen Mikroprozessors ohne spezielle Steuer-Hardware ausgeführt werden. Ist die Steuerung Teil eines eingebetteten Speichersystems und teilt sie sich die Nutzung des Mikroprozessor mit anderen Funktionen eines Host-Systems, kann die logische Schnittstelle für die Steuerung des Speichersystems direkt in der von dem Prozessor ausgeführten Firmware implementiert werden, was bedeutet, dass Hardware-Register entfallen können und Variablen direkt an eine Steuerfunktion weitergegeben werden können, die durch eine Host-Funktionen im Firmware-Code aufgerufen werden kann.
  • In dem vorstehend beschriebenen Flash-Speichersystem erfolgt die Datenübertragung zwischen den Host- oder Flash-Schnittstellen und dem SRAM durch DMA, aber in einer alternativen Ausführungsform könnte ein separater Speicherblock exklusiv für die Pufferung von Sektordaten verwendet werden. Typischerweise könnte dieser Speicherblock ein Dual-Port-RAM sein, wobei die Anschlüsse den unabhängigen Zugriff durch den Host-Schnittstellen-Steuerabschnitt und den Flash-Schnittstellen-Steuerabschnitt ermöglichen.
  • Bei der beschriebenen Anordnung wurden die Speicherblöcke, in denen die Speichersektoren angeordnet sind, als eine physikalische Struktur im Flash-Speicher mit 32 Sektorpositionen beschrieben, aber es ist auch möglich, dass diese Speicherblöcke 16 Sektorpositionen aufweisen. Außerdem können die Speicherblöcke alternativ virtuelle Blöcke mit physikalischen Blöcken sein, die über mehrere Flash-Chips oder mehrere unabhängige Anordnungen im selben Chip verteilt sind, die mit einer einzigen Operation durch die Steuerung gelöscht werden. Umfasst ein virtueller Block M physikalische Blöcke, jeweils mit einer Kapazität für N Sektoren, hat der virtuelle Block eine Kapazität für M × N Sektoren. Ein virtueller Block wird von den Medienmanagement-Algorithmen für die zyklische Speicherung in genau der gleichen Weise behandelt wie ein physikalischer Block.
  • Zu beachten ist, dass der ROM und der Erweiterungsanschluss der Steuerung lediglich optionale Merkmale sind und zur Durchführung der Operationen für die zyklische Speicherverwaltung nicht in der Steuerung enthalten sein müssen.
  • Die vorliegende Erfindung kann mit einem Computerprogramm realisiert werden, das auf einem Mikroprozessor läuft. Ein Aspekt der vorliegenden Erfindung stellt damit ein Speichermedium mit prozessor-implantierbaren Instruktionen zur Steuerung eines Prozessors bereit, um das vorstehend beschrieben Verfahren durchzuführen.
    Figure 00340001
    Tabelle 1
    Figure 00350001
    Tabelle 2

Claims (9)

  1. Nicht-flüchtiges Speichersystem (10) mit einem flüchtigen Speicher (30), einem Steuerdatenstrukturen (118) enthaltenden nicht-flüchtigen Speicher (20) und einer mit dem nicht-flüchtigen Speicher gekoppelten Steuerung (16) mit einer Einrichtung, die dazu dient, in dem flüchtigen Speicher Listen (116, 117) von Blöcken in dem der Speicherung logischer Sektordaten zugeordneten nichtflüchtigen Speicher sowie von in dem nicht-flüchtigen Speicher kürzlich gelöschten Blöcken zu halten, dadurch gekennzeichnet, dass die Steuerung eine Übertragungseinrichtung (24, 26) aufweist, um Informationen aus den Listen in dem flüchtigen Speicher in die Steuerdatenstrukturen in dem nicht-flüchtigen Speicher weniger häufig zu übertragen, als es der Frequenz entspricht, mit der die Inhalte der Listen in dem flüchtigen Speicher geändert werden, so dass die Listen in dem flüchtigen Speicher jederzeit aus existierenden Informationen innerhalb des nicht-flüchtigen Speichers rekonstruiert werden können, wobei die Anzahl von Lese- und Schreibzugriffen auf den nicht-flüchtigen Speicher für Steuerdatenstrukturen reduziert ist, um die Schreibgeschwindigkeit des Speichersystems für Host-Daten zu erhöhen.
  2. Nicht-flüchtiges Speichersystem nach Anspruch 1, wobei die Übertragungseinrichtung so betreibbar ist, dass sie die Informationen aus den Listen in dem flüchtigen Speicher in die Steuerdatenstrukturen in dem nicht-flüchtigen Speicher gleichzeitig mit Informationen für logisch/physikalisches Mapping für Sektoren aus anderen Listen in dem flüchtigen Speicher überträgt.
  3. Nicht-flüchtiges Speichersystem nach Anspruch 1 oder 2 mit einer Einrichtung, die in jeden Sektor beim Einschreiben in den nicht-flüchtigen Speicher einen Header einfügt, der seine logische Adresse wiedergebende logische Adressinformationen enthält.
  4. Nicht-flüchtiges Speichersystem nach Anspruch 3 mit einer Einrichtung zum Rekonstruieren der Listen in dem flüchtigen Speicher aus existierenden Informationen innerhalb des nicht-flüchtigen Speichers, wobei die existierenden Informationen die logischen Adressinformationen in den Headern kürzlich eingeschriebener Sektoren enthalten.
  5. Verfahren zum Betreiben eines nicht-flüchtigen Speichersystems (10), der aufweist: einen flüchtigen Speicher (30), einen Steuerdatenstrukturen (118) enthaltenden nicht-flüchtigen Speicher (20) und eine mit dem nicht-flüchtigen Speicher gekoppelte Steuerung (16), wobei die Steuerung in dem flüchtigen Speicher Listen (116, 117) von Blöcken in dem der Speicherung logischer Sektordaten zugeordneten nicht-flüchtigen Speicher sowie von in dem nicht-flüchtigen Speicher kürzlich gelöschten Blöcken hält, dadurch gekennzeichnet, dass die Steuerung Informationen aus den Listen in dem flüchtigen Speicher in die Steuerdatenstrukturen in dem nichtflüchtigen Speicher weniger häufig zu überträgt, als es der Frequenz entspricht, mit der die Inhalte der Listen in dem flüchtigen Speicher geändert werden, so dass die Listen in dem flüchtigen Speicher jederzeit aus existierenden Informationen innerhalb des nicht-flüchtigen Speichers rekonstruiert werden können, wobei die Anzahl von Lese- und Schreibzugriffen auf den nicht-flüchtigen Speicher für Steuerdatenstrukturen reduziert ist, um die Schreibgeschwindigkeit des Speichersystems für Host-Daten zu erhöhen.
  6. Verfahren nach Anspruch 5, wobei Informationen aus den Listen in dem flüchtigen Speicher in Steuerdatenstrukturen in dem nicht-flüchtigen Speicher gleichzeitig mit Informationen für logisch/physikalisches Mapping für Sektoren aus anderen Listen in dem flüchtigen Speicher übertragen werden.
  7. Verfahren nach Anspruch 5 oder 6, wobei in jeden Sektor beim Einschreiben in den nicht-flüchtigen Speicher ein Header eingefügt wird, der seine logische Adresse wiedergebende logische Adressinformationen enthält.
  8. Verfahren nach Anspruch 7, wobei die Listen in dem flüchtigen Speicher aus existierenden Informationen innerhalb des nicht-flüchtigen Speichers rekonstruiert werden, wobei die existierenden Informationen die logischen Adressinformationen in den Headern kürzlich eingeschriebener Sektoren enthalten.
  9. Speichermedium, das Prozessor-implementierbare Instruktionen zur Steuerung eines Prozessors enthält, um das Verfahren nach einem der Ansprüche 5 bis 8 durchzuführen.
DE60217883T 2001-09-28 2002-09-27 Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher Expired - Lifetime DE60217883T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0123415.2A GB0123415D0 (en) 2001-09-28 2001-09-28 Method of writing data to non-volatile memory
GB0123415 2001-09-28
PCT/GB2002/004381 WO2003027828A1 (en) 2001-09-28 2002-09-27 Method of writing data to non-volatile memory

Publications (2)

Publication Number Publication Date
DE60217883D1 DE60217883D1 (de) 2007-03-15
DE60217883T2 true DE60217883T2 (de) 2007-11-08

Family

ID=9922930

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60229010T Expired - Lifetime DE60229010D1 (de) 2001-09-28 2002-09-27 Verfahren zum Schreiben von Daten in einen nicht flüchtigen Speicher
DE60217883T Expired - Lifetime DE60217883T2 (de) 2001-09-28 2002-09-27 Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE60229010T Expired - Lifetime DE60229010D1 (de) 2001-09-28 2002-09-27 Verfahren zum Schreiben von Daten in einen nicht flüchtigen Speicher

Country Status (6)

Country Link
US (4) US7340581B2 (de)
EP (2) EP1693739B1 (de)
AT (2) ATE408861T1 (de)
DE (2) DE60229010D1 (de)
GB (2) GB0123415D0 (de)
WO (1) WO2003027828A1 (de)

Families Citing this family (190)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US20050257827A1 (en) * 2000-04-27 2005-11-24 Russell Gaudiana Rotational photovoltaic cells, systems and methods
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
KR20040022451A (ko) * 2001-07-16 2004-03-12 유킹 렌 임베디드 소프트웨어 업데이트 시스템
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123421D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US20050050108A1 (en) * 2003-08-21 2005-03-03 Texas Instruments Incorporated File system for digital processing systems with limited resources
JP4404625B2 (ja) * 2003-12-25 2010-01-27 パナソニック株式会社 情報処理装置および該装置用のromイメージ生成装置
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
KR20070007265A (ko) 2003-12-30 2007-01-15 쌘디스크 코포레이션 제어 데이터 관리를 구비한 비휘발성 메모리 및 방법
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US8082382B2 (en) * 2004-06-04 2011-12-20 Micron Technology, Inc. Memory device with user configurable density/performance
US7177782B2 (en) * 2004-06-18 2007-02-13 Lenovo (Singapore) Pte. Ltd. Methods and arrangements for capturing runtime information
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
JP2006085596A (ja) * 2004-09-17 2006-03-30 Mitsubishi Electric Corp 情報記録読出装置
DE102004063757A1 (de) 2004-12-29 2006-07-13 Francotyp-Postalia Ag & Co. Kg Verfahren und Anordnung zum Manipulieren des Inhalts eines Datenspeichers
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7849253B2 (en) * 2005-04-04 2010-12-07 Standard Microsystems Corporation Method for fast access to flash-memory media
US8521752B2 (en) * 2005-06-03 2013-08-27 Osr Open Systems Resources, Inc. Systems and methods for arbitrary data transformations
US7509474B2 (en) 2005-06-08 2009-03-24 Micron Technology, Inc. Robust index storage for non-volatile memory
US8819088B2 (en) * 2005-07-14 2014-08-26 International Business Machines Corporation Implementing storage management functions using a data store system
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7631245B2 (en) * 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
KR101274181B1 (ko) * 2006-02-13 2013-06-14 삼성전자주식회사 플래시 메모리를 관리하는 장치 및 방법
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
JP2008033412A (ja) * 2006-07-26 2008-02-14 Hitachi Ltd 計算機システムの性能管理方法、管理計算機、及びストレージ装置
US7711889B2 (en) * 2006-07-31 2010-05-04 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
US7512748B1 (en) 2006-08-17 2009-03-31 Osr Open Systems Resources, Inc. Managing lock rankings
US8539228B1 (en) 2006-08-24 2013-09-17 Osr Open Systems Resources, Inc. Managing access to a resource
US7774392B2 (en) 2006-09-15 2010-08-10 Sandisk Corporation Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order
US7779056B2 (en) 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
KR100843133B1 (ko) * 2006-09-20 2008-07-02 삼성전자주식회사 플래시 메모리에서 매핑 정보 재구성을 위한 장치 및 방법
KR100845137B1 (ko) * 2006-10-02 2008-07-09 삼성전자주식회사 메모리 장치의 배드 블록 주소를 번역하는 방법, 메모리장치의 배드 블록 주소를 번역하는 장치 및 이를 포함하는메모리 장치 컨트롤러
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
CN101622594B (zh) 2006-12-06 2013-03-13 弗森-艾奥公司 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
KR100869675B1 (ko) * 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
WO2008106686A1 (en) * 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
KR20080085574A (ko) * 2007-03-20 2008-09-24 삼성전자주식회사 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
US8024433B2 (en) * 2007-04-24 2011-09-20 Osr Open Systems Resources, Inc. Managing application resources
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US8041883B2 (en) * 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US7991942B2 (en) * 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7949693B1 (en) 2007-08-23 2011-05-24 Osr Open Systems Resources, Inc. Log-structured host data storage
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8073884B2 (en) * 2007-12-20 2011-12-06 Hewlett-Packard Development Company, L.P. System and method to derive high level file system information by passively monitoring low level operations on a FAT file system
EP2077559B1 (de) * 2007-12-27 2012-11-07 Hagiwara Solutions Co., Ltd. Aktualisierungsverfahren für einen Flash-Speicher
TW200931425A (en) * 2008-01-11 2009-07-16 Phison Electronics Corp Method for managing flash memory blocks and controller using the same
KR20110050404A (ko) 2008-05-16 2011-05-13 퓨전-아이오, 인크. 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
CN101645309B (zh) * 2008-08-05 2013-05-22 威刚科技(苏州)有限公司 非挥发性存储装置及其控制方法
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
WO2010043245A1 (de) * 2008-10-13 2010-04-22 Hyperstone Gmbh Verfahren zur sicherung eines ankerblocks in flashspeichern
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
CN101526921B (zh) * 2008-12-31 2014-07-30 飞天诚信科技股份有限公司 写入数据的方法及装置
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
WO2010078222A1 (en) 2009-01-05 2010-07-08 Sandisk Corporation Non-volatile memory and method with write cache partitioning
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
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
US20100185843A1 (en) * 2009-01-20 2010-07-22 Microsoft Corporation Hardware encrypting storage device with physically separable key storage device
US8312204B2 (en) * 2009-01-23 2012-11-13 Seagate Technology Llc System and method for wear leveling in a data storage device
US7944729B2 (en) * 2009-01-28 2011-05-17 Seagate Technology Llc Simultaneously writing multiple addressable blocks of user data to a resistive sense memory cell array
US9092649B2 (en) * 2009-03-02 2015-07-28 Macronix International Co., Ltd. Data protecting method capable of effectively recording protection information and memory using thereof
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US9330282B2 (en) * 2009-06-10 2016-05-03 Microsoft Technology Licensing, Llc Instruction cards for storage devices
US8321956B2 (en) 2009-06-17 2012-11-27 Microsoft Corporation Remote access control of storage devices
US20110040924A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US9021158B2 (en) 2009-09-09 2015-04-28 SanDisk Technologies, Inc. Program suspend/resume for memory
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
CN102597910B (zh) 2009-09-09 2015-03-25 弗森-艾奥公司 存储设备中用于功率减小管理的装置、系统及方法
US8176234B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US8176235B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
US8489803B2 (en) * 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
US8468294B2 (en) 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8144512B2 (en) 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8335907B2 (en) * 2009-12-30 2012-12-18 Sandisk Technologies Inc. Micro-update architecture for address tables
US8417904B2 (en) * 2010-03-17 2013-04-09 Seagate Technology Llc Garbage collection management in a data storage device
KR20110119408A (ko) * 2010-04-27 2011-11-02 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US8417876B2 (en) 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US8543757B2 (en) 2010-06-23 2013-09-24 Sandisk Technologies Inc. Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
EP2652623B1 (de) 2010-12-13 2018-08-01 SanDisk Technologies LLC Vorrichtung, system, und verfahren für einen auto-commit-speicher
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
WO2012109677A2 (en) 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8621328B2 (en) 2011-03-04 2013-12-31 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8595426B2 (en) * 2011-04-11 2013-11-26 Sandisk Il Ltd. Handling commands within a write-once read-many storage device configuration
US20120303878A1 (en) * 2011-05-26 2012-11-29 International Business Machines Corporation Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to
CN102214145B (zh) * 2011-07-14 2013-07-17 李佰战 一种闪存数据更新方法及系统
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8903874B2 (en) 2011-11-03 2014-12-02 Osr Open Systems Resources, Inc. File system directory attribute correction
KR20130075018A (ko) * 2011-12-27 2013-07-05 한국전자통신연구원 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US8868978B2 (en) 2012-02-14 2014-10-21 International Business Machines Corporation Reclaiming discarded solid state devices
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9846641B2 (en) 2012-06-18 2017-12-19 International Business Machines Corporation Variability aware wear leveling
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9026720B2 (en) * 2013-02-07 2015-05-05 Apple Inc. Non-volatile memory monitoring
KR102106959B1 (ko) * 2013-02-21 2020-05-07 에프아이오 세미컨덕터 테크놀로지스, 엘엘씨 멀티 레벨 셀 비휘발성 메모리 시스템
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9256371B2 (en) 2013-05-28 2016-02-09 Globalfoundries Inc. Implementing reinforcement learning based flash control
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
KR102252419B1 (ko) * 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US9830329B2 (en) 2014-01-15 2017-11-28 W. Anthony Mason Methods and systems for data storage
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
US11537290B2 (en) 2014-03-20 2022-12-27 International Business Machines Corporation Managing high performance storage systems with hybrid storage technologies
TWI522804B (zh) * 2014-04-23 2016-02-21 威盛電子股份有限公司 快閃記憶體控制器以及資料儲存裝置以及快閃記憶體控制方法
TWI502345B (zh) * 2014-05-12 2015-10-01 Via Tech Inc 快閃記憶體控制晶片以及資料儲存裝置以及快閃記憶體控制方法
US20160062911A1 (en) 2014-08-27 2016-03-03 Advanced Micro Devices, Inc. Routing direct memory access requests in a virtualized computing environment
US9423961B2 (en) * 2014-09-08 2016-08-23 Apple Inc. Method to enhance programming performance in multilevel NVM devices
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) * 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9418699B1 (en) * 2014-10-09 2016-08-16 Western Digital Technologies, Inc. Management of sequentially written data
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
EP3385846B1 (de) 2015-12-30 2020-02-12 Huawei Technologies Co., Ltd. Verfahren und vorrichtung zur verarbeitung von zugriffsanfragen und computersystem
EP3376394B1 (de) 2015-12-30 2022-09-28 Huawei Technologies Co., Ltd. Verfahren und vorrichtung zur verarbeitung von zugriffsanfragen und computersystem
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US20180239532A1 (en) * 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
GB2563473B (en) * 2017-06-15 2019-10-02 Accelercomm Ltd Polar coder with logical three-dimensional memory, communication unit, integrated circuit and method therefor
US11221958B2 (en) 2017-08-29 2022-01-11 Samsung Electronics Co., Ltd. System and method for LBA-based RAID
US10970204B2 (en) * 2017-08-29 2021-04-06 Samsung Electronics Co., Ltd. Reducing read-write interference by adaptive scheduling in NAND flash SSDs
CN108073363B (zh) * 2017-12-28 2021-10-01 深圳市得一微电子有限责任公司 数据存储方法、存储设备及计算机可读存储介质
US10410732B1 (en) * 2018-05-21 2019-09-10 Western Digital Technologies, Inc. Failure prediction by cell probing
KR102605205B1 (ko) * 2018-07-25 2023-11-24 에스케이하이닉스 주식회사 메모리 장치 및 프로세싱 시스템
US10679708B2 (en) * 2018-09-17 2020-06-09 Western Digital Technologies, Inc. Pre-program read to counter wordline failures
US11442867B2 (en) * 2018-12-20 2022-09-13 Micron Technology, Inc. Using a second content-addressable memory to manage memory burst accesses in memory sub-systems
US11132303B2 (en) * 2020-02-04 2021-09-28 Micron Technology, Inc. Memory sub-system management of firmware block record and device block record
US11500769B2 (en) * 2020-12-21 2022-11-15 Micron Technology, Inc. Valid data identification for garbage collection
CN112711378B (zh) * 2020-12-22 2022-08-05 四川九洲电器集团有限责任公司 数据储存方法及读写设备
WO2023287407A1 (en) * 2021-07-14 2023-01-19 Hewlett-Packard Development Company, L.P. Hardware component initialization
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
JP2023112368A (ja) * 2022-02-01 2023-08-14 キオクシア株式会社 メモリシステム

Family Cites Families (300)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US596473A (en) * 1898-01-04 Theodore brand
US540117A (en) * 1895-05-28 Conductor-distributing frame
US697666A (en) * 1901-02-09 1902-04-15 Frederick Sargent Condenser.
US691008A (en) * 1901-04-25 1902-01-14 William E Schilling Device for operating street-railway switches.
US722585A (en) * 1902-12-06 1903-03-10 Robert W Jemison Bookkeepers's stool.
US852766A (en) * 1904-07-21 1907-05-07 Rudolf Brebach Automatic electrical cut-out device.
US852765A (en) * 1905-10-05 1907-05-07 Arthur L Brannock Grain-drier.
US910826A (en) * 1908-03-27 1909-01-26 William A Kirkpatrick Dispensing-container.
CH236066A (de) * 1940-04-18 1945-01-15 Mueller & Cie Maschinenfabrik Leimauftragvorrichtung an einer Leimmaschine.
US2822245A (en) * 1954-11-26 1958-02-04 Kimberly Clark Co Process for manufacturing sulfur dioxide by burning sulfur
CH325501A (de) * 1954-11-26 1957-11-15 Ruf Walter Minenwerfer
US3034897A (en) * 1960-12-09 1962-05-15 Eastman Kodak Co Method for preparing bakery products using mixed partial ester compositions
CA1030686A (en) 1973-06-20 1978-05-02 James R. Gross Absorbent articles and methods for their preparation
JPS52130536A (en) 1976-04-26 1977-11-01 Toshiba Corp Semiconductor memory unit
US4099069A (en) 1976-10-08 1978-07-04 Westinghouse Electric Corp. Circuit producing a common clear signal for erasing selected arrays in a mnos memory system
US4398248A (en) 1980-10-20 1983-08-09 Mcdonnell Douglas Corporation Adaptive WSI/MNOS solid state memory system
JPS5821595Y2 (ja) 1977-10-18 1983-05-07 株式会社鶴見製作所 脱着式曝気装置における脱着構造
GB2020437B (en) 1978-04-14 1982-08-04 Seiko Instr & Electronics Voltage detecting circuit
US4210959A (en) 1978-05-10 1980-07-01 Apple Computer, Inc. Controller for magnetic disc, recorder, or the like
FR2426938A1 (fr) 1978-05-26 1979-12-21 Cii Honeywell Bull Dispositif de detection de secteurs defectueux et d'allocation de secteurs de remplacement dans une memoire a disques
JPS559260A (en) 1978-07-03 1980-01-23 Nec Corp Information processing system
JPS5821594Y2 (ja) 1979-12-27 1983-05-07 株式会社 西原環境衛生研究所 エアレ−シヨン装置
US4532590A (en) 1980-04-25 1985-07-30 Data General Corporation Data processing system having a unique address translation unit
US4355376A (en) 1980-09-30 1982-10-19 Burroughs Corporation Apparatus and method for utilizing partially defective memory devices
JPS5764383A (en) 1980-10-03 1982-04-19 Toshiba Corp Address converting method and its device
JPS57132256A (en) 1981-02-09 1982-08-16 Sony Corp Memory device
JPS5877034A (ja) 1981-10-30 1983-05-10 Hitachi Ltd 記録方法
US4473878A (en) 1981-11-23 1984-09-25 Motorola, Inc. Memory management unit
US4468730A (en) 1981-11-27 1984-08-28 Storage Technology Corporation Detection of sequential data stream for improvements in cache data storage
US4476526A (en) 1981-11-27 1984-10-09 Storage Technology Corporation Cache buffered memory subsystem
US4450559A (en) 1981-12-24 1984-05-22 International Business Machines Corporation Memory system with selective assignment of spare locations
US4498146A (en) 1982-07-30 1985-02-05 At&T Bell Laboratories Management of defects in storage media
JPS5945695U (ja) 1982-09-14 1984-03-26 ニツタン株式会社 火災警報設備
US4710871A (en) 1982-11-01 1987-12-01 Ncr Corporation Data transmitting and receiving apparatus
JPS59162695A (ja) 1983-03-07 1984-09-13 Nec Corp 記憶装置
US4609833A (en) 1983-08-12 1986-09-02 Thomson Components-Mostek Corporation Simple NMOS voltage reference circuit
US4896262A (en) 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
JPS60212900A (ja) 1984-04-09 1985-10-25 Nec Corp 半導体固定記憶装置
JPS618798A (ja) 1984-06-21 1986-01-16 Nec Corp 不揮発性記憶装置
JPS6180597A (ja) 1984-09-26 1986-04-24 Hitachi Ltd 半導体記憶装置
JPS6196598U (de) 1984-11-30 1986-06-21
US4654847A (en) 1984-12-28 1987-03-31 International Business Machines Apparatus for automatically correcting erroneous data and for storing the corrected data in a common pool alternate memory array
JPS61208673A (ja) 1985-03-12 1986-09-17 Matsushita Electric Ind Co Ltd 情報記録再生装置
US4744062A (en) 1985-04-23 1988-05-10 Hitachi, Ltd. Semiconductor integrated circuit with nonvolatile memory
US4829169A (en) 1985-07-01 1989-05-09 Toppan Moore Company, Inc. IC card having state marker for record access
JPH0635227B2 (ja) 1985-07-31 1994-05-11 トツパン・ム−ア株式会社 更新情報と履歴情報の読出し手段を有するicカ−ド
JPS62102482A (ja) 1985-10-28 1987-05-12 Matsushita Electric Ind Co Ltd 情報記録再生装置
JP2664137B2 (ja) 1985-10-29 1997-10-15 凸版印刷株式会社 Icカード
US4800520A (en) 1985-10-29 1989-01-24 Kabushiki Kaisha Toshiba Portable electronic device with garbage collection function
US4752893A (en) 1985-11-06 1988-06-21 Texas Instruments Incorporated Graphics data processing apparatus having image operations with transparent color having a selectable number of bits
US4746998A (en) 1985-11-20 1988-05-24 Seagate Technology, Inc. Method for mapping around defective sectors in a disc drive
US4924331A (en) 1985-11-20 1990-05-08 Seagate Technology, Inc. Method for mapping around defective sectors in a disc drive
DE3640238A1 (de) 1985-11-30 1987-06-25 Toshiba Kawasaki Kk Tragbare elektronische vorrichtung
US4757474A (en) 1986-01-28 1988-07-12 Fujitsu Limited Semiconductor memory device having redundancy circuit portion
JPH07114499B2 (ja) 1986-12-24 1995-12-06 株式会社日立製作所 データ符号化方法
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
SU1388877A1 (ru) 1986-09-16 1988-04-15 Таганрогский радиотехнический институт им.В.Д.Калмыкова Устройство дл адресации блоков пам ти
SU1408439A1 (ru) 1986-10-20 1988-07-07 Предприятие П/Я В-2129 Устройство адресации дл автоматической конфигурации пам ти ЭВМ
US4953122A (en) 1986-10-31 1990-08-28 Laserdrive Ltd. Pseudo-erasable and rewritable write-once optical disk memory system
JPS63183700A (ja) 1987-01-26 1988-07-29 Mitsubishi Electric Corp Eepromアクセス方法
JPH0636578Y2 (ja) 1987-04-10 1994-09-21 日本電気株式会社 半導体集積回路
JPS63183700U (de) 1987-05-19 1988-11-25
JPS63198567U (de) 1987-06-12 1988-12-21
JPS6473430A (en) 1987-09-14 1989-03-17 Hudson Soft Co Ltd Memory access control device
JPH081760B2 (ja) 1987-11-17 1996-01-10 三菱電機株式会社 半導体記憶装置
JP2696864B2 (ja) 1987-11-25 1998-01-14 日本電気株式会社 メモリ装置
JPH01137817A (ja) 1987-11-25 1989-05-30 Toshiba Corp 遅延回路
SU1515164A1 (ru) 1988-01-12 1989-10-15 Предприятие П/Я Г-4493 Устройство дл адресации к пам ти
SU1541619A1 (ru) 1988-05-30 1990-02-07 Предприятие П/Я Г-4173 Устройство дл формировани адреса
US5293560A (en) 1988-06-08 1994-03-08 Eliyahou Harari Multi-state flash EEPROM system using incremental programing and erasing methods
US5268318A (en) 1988-06-08 1993-12-07 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5268319A (en) 1988-06-08 1993-12-07 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US5168465A (en) 1988-06-08 1992-12-01 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US5198380A (en) 1988-06-08 1993-03-30 Sundisk Corporation Method of highly compact EPROM and flash EEPROM devices
US4914529A (en) 1988-07-18 1990-04-03 Western Digital Corp. Data disk defect handling using relocation ID fields
US5070474A (en) 1988-07-26 1991-12-03 Disk Emulation Systems, Inc. Disk emulation system
JPH064399Y2 (ja) 1988-08-10 1994-02-02 株式会社セガ・エンタープライゼス 音発生装置
US5253351A (en) 1988-08-11 1993-10-12 Hitachi, Ltd. Memory controller with a cache memory and control method of cache memory including steps of determining memory access threshold values
SU1573458A2 (ru) 1988-09-26 1990-06-23 Войсковая Часть 32103 Устройство дл адресации
JPH0793499B2 (ja) 1989-01-10 1995-10-09 キヤノン株式会社 レーザーを用いた孔加工方法
DE69034191T2 (de) * 1989-04-13 2005-11-24 Sandisk Corp., Sunnyvale EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
US5535328A (en) 1989-04-13 1996-07-09 Sandisk Corporation Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells
US5226168A (en) 1989-04-25 1993-07-06 Seiko Epson Corporation Semiconductor memory configured to emulate floppy and hard disk magnetic storage based upon a determined storage capacity of the semiconductor memory
JPH02308738A (ja) 1989-05-22 1990-12-21 Masao Shiotani イセエビ用魚礁
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
SU1686449A2 (ru) 1989-10-23 1991-10-23 Войсковая Часть 32103 Устройство дл адресации
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
JPH03228377A (ja) 1990-02-02 1991-10-09 Toshiba Corp 半導体装置
US5218695A (en) 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5220518A (en) 1990-06-07 1993-06-15 Vlsi Technology, Inc. Integrated circuit memory with non-binary array configuration
JPH0451917Y2 (de) 1990-09-20 1992-12-07
US5303198A (en) 1990-09-28 1994-04-12 Fuji Photo Film Co., Ltd. Method of recording data in memory card having EEPROM and memory card system using the same
EP0489204B1 (de) 1990-12-04 1995-08-16 Hewlett-Packard Limited Wiederprogrammierbare Datenspeicherungsanlage
JPH04216392A (ja) 1990-12-18 1992-08-06 Mitsubishi Electric Corp ブロックライト機能を備える半導体記憶装置
GB2251323B (en) 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
JPH04268284A (ja) 1991-02-22 1992-09-24 Fuji Photo Film Co Ltd メモリカード
JP3126396B2 (ja) 1991-02-06 2001-01-22 株式会社東芝 不揮発性半導体記憶装置
JPH04278297A (ja) 1991-03-07 1992-10-02 Toshiba Corp 不揮発性半導体記憶装置
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5396468A (en) 1991-03-15 1995-03-07 Sundisk Corporation Streamlined write operation for EEPROM system
US5504760A (en) 1991-03-15 1996-04-02 Sandisk Corporation Mixed data encoding EEPROM system
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
US5430859A (en) 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
EP0772358A1 (de) 1991-08-09 1997-05-07 Kabushiki Kaisha Toshiba Aufzeichnungsgerät für eine Speicherkarte
JP3229345B2 (ja) 1991-09-11 2001-11-19 ローム株式会社 不揮発性icメモリ
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5357462A (en) 1991-09-24 1994-10-18 Kabushiki Kaisha Toshiba Electrically erasable and programmable non-volatile semiconductor memory with automatic write-verify controller
US5778418A (en) 1991-09-27 1998-07-07 Sandisk Corporation Mass computer storage system having both solid state and rotating disk types of memory
US5227714A (en) 1991-10-07 1993-07-13 Brooktree Corporation Voltage regulator
US5640528A (en) 1991-10-24 1997-06-17 Intel Corporation Method and apparatus for translating addresses using mask and replacement value registers
US5315558A (en) 1991-10-25 1994-05-24 Vlsi Technology, Inc. Integrated circuit memory with non-binary array configuration
US5359569A (en) 1991-10-29 1994-10-25 Hitachi Ltd. Semiconductor memory
JPH05128877A (ja) 1991-11-07 1993-05-25 Mitsubishi Electric Corp 不揮発性半導体記憶装置
JPH05151097A (ja) 1991-11-28 1993-06-18 Fujitsu Ltd 書換回数制限型メモリのデータ管理方式
JP3171901B2 (ja) 1992-02-05 2001-06-04 セイコーインスツルメンツ株式会社 不揮発性メモリカードの書換え方法
JPH05233426A (ja) 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
DE69326370T2 (de) 1992-03-05 2000-01-20 Toshiba Kawasaki Kk Nichtflüchtige Halbleiterspeicheranordnung
FR2688333B1 (fr) 1992-03-06 1994-04-29 Sgc Thomson Microelectronics S Dispositif et procede d'effacement par secteurs d'une memoire flash eprom.
TW231343B (de) * 1992-03-17 1994-10-01 Hitachi Seisakusyo Kk
JP2830594B2 (ja) 1992-03-26 1998-12-02 日本電気株式会社 半導体メモリ装置
US5267218A (en) 1992-03-31 1993-11-30 Intel Corporation Nonvolatile memory card with a single power supply input
JP3323869B2 (ja) 1992-03-31 2002-09-09 株式会社東芝 不揮発性半導体メモリ装置
JP3485938B2 (ja) * 1992-03-31 2004-01-13 株式会社東芝 不揮発性半導体メモリ装置
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5381539A (en) 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
DE4219145C1 (de) 1992-06-11 1994-03-17 Emitec Emissionstechnologie Verfahren und Vorrichtung zum Beloten eines metallischen Wabenkörpers
JP3328321B2 (ja) 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
JPH0612863A (ja) 1992-06-26 1994-01-21 Toshiba Corp デュアルポートdram
US5592415A (en) * 1992-07-06 1997-01-07 Hitachi, Ltd. Non-volatile semiconductor memory
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JP2768618B2 (ja) 1992-08-28 1998-06-25 シャープ株式会社 半導体ディスク装置
JPH06103748A (ja) 1992-09-16 1994-04-15 Mitsubishi Electric Corp Icメモリカードの電源制御回路
US5428621A (en) 1992-09-21 1995-06-27 Sundisk Corporation Latent defect handling in EEPROM devices
JP3105092B2 (ja) 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
JP3177015B2 (ja) 1992-10-14 2001-06-18 株式会社東芝 半導体メモリ装置の制御方法
JPH06131889A (ja) 1992-10-14 1994-05-13 Toshiba Corp 半導体ファイル装置
JPH06132747A (ja) 1992-10-20 1994-05-13 Fujitsu Ltd 半導体装置
US5337275A (en) 1992-10-30 1994-08-09 Intel Corporation Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5341330A (en) 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
JP3641280B2 (ja) 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5357475A (en) 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
US5822781A (en) 1992-10-30 1998-10-13 Intel Corporation Sector-based storage device emulator having variable-sized sector
US5734567A (en) * 1992-11-06 1998-03-31 Siemens Aktiengesellschaft Diagnosis system for a plant
JPH06149395A (ja) 1992-11-12 1994-05-27 Nec Corp 半導体装置
JPH06236686A (ja) 1993-01-22 1994-08-23 Nec Corp 半導体装置
US5581723A (en) 1993-02-19 1996-12-03 Intel Corporation Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5812814A (en) 1993-02-26 1998-09-22 Kabushiki Kaisha Toshiba Alternative flash EEPROM semiconductor memory system
JP3594626B2 (ja) 1993-03-04 2004-12-02 株式会社ルネサステクノロジ 不揮発性メモリ装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH06266596A (ja) 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
JP3477781B2 (ja) 1993-03-23 2003-12-10 セイコーエプソン株式会社 Icカード
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
JP3330187B2 (ja) 1993-05-13 2002-09-30 株式会社リコー メモリカード
US5329491A (en) 1993-06-30 1994-07-12 Intel Corporation Nonvolatile memory card with automatic power supply configuration
US5519847A (en) 1993-06-30 1996-05-21 Intel Corporation Method of pipelining sequential writes in a flash memory
US5353256A (en) 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device
US5422842A (en) 1993-07-08 1995-06-06 Sundisk Corporation Method and circuit for simultaneously programming and verifying the programming of selected EEPROM cells
JP3228377B2 (ja) 1993-07-19 2001-11-12 東京電力株式会社 溶融炭酸塩型燃料電池カソードとその溶解抑制方法
US5465338A (en) 1993-08-24 1995-11-07 Conner Peripherals, Inc. Disk drive system interface architecture employing state machines
US5566314A (en) 1993-08-30 1996-10-15 Lucent Technologies Inc. Flash memory device employing unused cell arrays to update files
JP2922116B2 (ja) 1993-09-02 1999-07-19 株式会社東芝 半導体記憶装置
JP3683915B2 (ja) 1993-09-24 2005-08-17 株式会社東芝 半導体記憶装置
JP3215237B2 (ja) 1993-10-01 2001-10-02 富士通株式会社 記憶装置および記憶装置の書き込み/消去方法
US5365127A (en) 1993-10-18 1994-11-15 Hewlett-Packard Company Circuit for conversion from CMOS voltage levels to shifted ECL voltage levels with process compensation
JPH0818018B2 (ja) 1993-11-29 1996-02-28 英和 室谷 薬品注入による下水の硫化水素の制御方法と装置
JPH07235193A (ja) 1993-12-28 1995-09-05 Toshiba Corp 半導体記憶装置
EP0663636B1 (de) 1994-01-12 2001-10-31 Sun Microsystems, Inc. Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt
US5473765A (en) 1994-01-24 1995-12-05 3Com Corporation Apparatus for using flash memory as a floppy disk emulator in a computer system
US6026027A (en) * 1994-01-31 2000-02-15 Norand Corporation Flash memory system having memory cache
US5482595A (en) * 1994-03-22 1996-01-09 Betz Paperchem, Inc. Method for improving retention and drainage characteristics in alkaline papermaking
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JPH07311708A (ja) 1994-05-18 1995-11-28 Fuji Film Micro Device Kk メモリカード
JP3307777B2 (ja) * 1994-07-07 2002-07-24 栄修 永田 ハンダ付け方法および装置
JPH0869696A (ja) 1994-08-31 1996-03-12 Toshiba Corp 半導体記憶装置
US5809558A (en) 1994-09-29 1998-09-15 Intel Corporation Method and data storage system for storing data in blocks without file reallocation before erasure
US5508971A (en) 1994-10-17 1996-04-16 Sandisk Corporation Programmable power generation circuit for flash EEPROM memory systems
US5606660A (en) * 1994-10-21 1997-02-25 Lexar Microsystems, Inc. Method and apparatus for combining controller firmware storage and controller logic in a mass storage system
JP2669365B2 (ja) 1994-11-24 1997-10-27 日本電気株式会社 書換え可能なromファイル装置
US5537077A (en) 1994-12-23 1996-07-16 Advanced Micro Devices, Inc. Power supply dependent method of controlling a charge pump
US5847552A (en) 1995-01-24 1998-12-08 Dell Usa, L.P. Integrated circuit with determinate power source control
JPH08212019A (ja) 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JPH08263361A (ja) 1995-03-23 1996-10-11 Mitsubishi Electric Corp フラッシュメモリカード
US5818350A (en) 1995-04-11 1998-10-06 Lexar Microsystems Inc. High performance method of and system for selecting one of a plurality of IC chip while requiring minimal select lines
JP4254994B2 (ja) 1995-05-29 2009-04-15 株式会社日立製作所 デイスポーザブルな反応容器を用いる分析装置
US6072796A (en) 1995-06-14 2000-06-06 Avid Technology, Inc. Apparatus and method for accessing memory in a TDM network
US5723990A (en) * 1995-06-21 1998-03-03 Micron Quantum Devices, Inc. Integrated circuit having high voltage detection circuit
US5552698A (en) 1995-06-29 1996-09-03 United Microelectronics Corp. Voltage supply system for IC chips
US5627416A (en) 1995-07-21 1997-05-06 Itt Corporation Multi-voltage IC card host
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
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
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
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
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5596526A (en) * 1995-08-15 1997-01-21 Lexar Microsystems, Inc. Non-volatile memory system of multi-level transistor cells and methods using same
JPH0954726A (ja) 1995-08-18 1997-02-25 Mitsubishi Electric Corp 記憶装置
JPH0969295A (ja) 1995-08-31 1997-03-11 Sanyo Electric Co Ltd 不揮発性多値メモリ装置
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
GB2291991A (en) 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
GB2291990A (en) 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
US5809560A (en) 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive read-ahead disk cache
DE69627176T2 (de) 1995-11-13 2004-02-05 Lexar Media, Inc., Fremont Aut0matische spannungsdetektion in anwendungen mit mehreren spannungen
KR100253868B1 (ko) 1995-11-13 2000-05-01 니시무로 타이죠 불휘발성 반도체기억장치
JPH09147581A (ja) 1995-11-21 1997-06-06 Hitachi Ltd 半導体記憶装置、及びデータ処理装置
US5799168A (en) 1996-01-05 1998-08-25 M-Systems Flash Disk Pioneers Ltd. Standardized flash controller
JPH09212411A (ja) 1996-02-06 1997-08-15 Tokyo Electron Ltd メモリシステム
US5724303A (en) * 1996-02-15 1998-03-03 Nexcom Technology, Inc. Non-volatile programmable memory having an SRAM capability
US5787445A (en) 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
US5822252A (en) 1996-03-29 1998-10-13 Aplus Integrated Circuits, Inc. Flash memory wordline decoder with overerase repair
GB9606927D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
GB9606928D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Memory devices
US5991849A (en) 1996-04-10 1999-11-23 Sanyo Electric Co., Ltd Rewriting protection of a size varying first region of a reprogrammable non-volatile memory
GB9609833D0 (en) 1996-05-10 1996-07-17 Memory Corp Plc Memory device
JP3493096B2 (ja) * 1996-06-07 2004-02-03 株式会社東芝 半導体集積回路、icカード、及びicカードシステム
US5959926A (en) 1996-06-07 1999-09-28 Dallas Semiconductor Corp. Programmable power supply systems and methods providing a write protected memory having multiple interface capability
GB9613088D0 (en) 1996-06-21 1996-08-28 Memory Corp Plc Memory device
US5758100A (en) * 1996-07-01 1998-05-26 Sun Microsystems, Inc. Dual voltage module interconnect
GB9614551D0 (en) * 1996-07-11 1996-09-04 Memory Corp Plc Memory system
US5757712A (en) * 1996-07-12 1998-05-26 International Business Machines Corporation Memory modules with voltage regulation and level translation
JP3761635B2 (ja) 1996-07-12 2006-03-29 株式会社ダックス メモリボード、メモリアクセス方法及びメモリアクセス装置
US5787484A (en) 1996-08-08 1998-07-28 Micron Technology, Inc. System and method which compares data preread from memory cells to data to be written to the cells
US6021408A (en) * 1996-09-12 2000-02-01 Veritas Software Corp. Methods for operating a log device
US5920884A (en) 1996-09-24 1999-07-06 Hyundai Electronics America, Inc. Nonvolatile memory interface protocol which selects a memory device, transmits an address, deselects the device, subsequently reselects the device and accesses data
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
GB2317722B (en) * 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
US6047352A (en) * 1996-10-29 2000-04-04 Micron Technology, Inc. Memory system, method and predecoding circuit operable in different modes for selectively accessing multiple blocks of memory cells for simultaneous writing or erasure
US5890192A (en) * 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5909586A (en) 1996-11-06 1999-06-01 The Foxboro Company Methods and systems for interfacing with an interface powered I/O device
US5956473A (en) 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5745418A (en) 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH10177797A (ja) 1996-12-17 1998-06-30 Toshiba Corp 半導体記憶装置
JPH10187505A (ja) * 1996-12-24 1998-07-21 Toshiba Corp 情報記憶システム及び同システムに適用するデータ配置方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5901086A (en) * 1996-12-26 1999-05-04 Motorola, Inc. Pipelined fast-access floating gate memory architecture and method of operation
US5928370A (en) 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
US5822245A (en) 1997-03-26 1998-10-13 Atmel Corporation Dual buffer flash memory architecture with multiple operating modes
US5953737A (en) 1997-03-31 1999-09-14 Lexar Media, Inc. Method and apparatus for performing erase operations transparent to a solid state storage system
US6034897A (en) * 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6122195A (en) 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US6411546B1 (en) 1997-03-31 2002-06-25 Lexar Media, Inc. Nonvolatile memory using flexible erasing methods and method and system for using same
US5831929A (en) 1997-04-04 1998-11-03 Micron Technology, Inc. Memory device with staggered data paths
JP3592887B2 (ja) * 1997-04-30 2004-11-24 株式会社東芝 不揮発性半導体記憶装置
US6011322A (en) * 1997-07-28 2000-01-04 Sony Corporation Apparatus and method for providing power to circuitry implementing two different power sources
US6226708B1 (en) * 1997-08-18 2001-05-01 Texas Instruments Incorporated Method and system for efficiently programming non-volatile memory
US6011323A (en) * 1997-09-30 2000-01-04 International Business Machines Corporation Apparatus, method and article of manufacture providing for auxiliary battery conservation in adapters
DE69823875T2 (de) 1997-10-08 2005-04-21 Hewlett Packard Co Orientierungsverfahren für flüssigkristallvorrichtung und verfahren zur herstellung dieser vorrichtung
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JPH11224492A (ja) 1997-11-06 1999-08-17 Toshiba Corp 半導体記憶装置、不揮発性半導体記憶装置及びフラッシュメモリ
US6018265A (en) * 1997-12-10 2000-01-25 Lexar Media, Inc. Internal CMOS reference generator and voltage regulator
US6076137A (en) 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
GB9801373D0 (en) 1998-01-22 1998-03-18 Memory Corp Plc Memory system
US5969986A (en) 1998-06-23 1999-10-19 Invox Technology High-bandwidth read and write architectures for non-volatile memories
GB2339044B (en) * 1998-03-02 2003-06-04 Lexar Media Inc Flash memory card with enhanced operating mode detection and user-friendly interfacing system
US6182162B1 (en) * 1998-03-02 2001-01-30 Lexar Media, Inc. Externally coupled compact flash memory card that configures itself one of a plurality of appropriate operating protocol modes of a host computer
US6040997A (en) * 1998-03-25 2000-03-21 Lexar Media, Inc. Flash memory leveling architecture having no external latch
GB9806687D0 (en) 1998-03-27 1998-05-27 Memory Corp Plc Memory system
US6055184A (en) * 1998-09-02 2000-04-25 Texas Instruments Incorporated Semiconductor memory device having programmable parallel erase operation
US6279114B1 (en) 1998-11-04 2001-08-21 Sandisk Corporation Voltage negotiation in a single host multiple cards system
US6490649B2 (en) 1998-11-10 2002-12-03 Lexar Media, Inc. Memory device
AU1729100A (en) * 1998-11-17 2000-06-05 Lexar Media, Inc. Method and apparatus for memory control circuit
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
US6104638A (en) * 1999-02-26 2000-08-15 Hewlett-Packard Company Use of erasable non-volatile memory for storage of changing information
US6084483A (en) 1999-03-10 2000-07-04 Lexar Media, Inc. Internal oscillator circuit including a ring oscillator controlled by a voltage regulator circuit
EP1228510B1 (de) 1999-04-01 2006-09-20 Lexar Media, Inc. Raumverwaltung in einem nichtflüchtigen speicher mit hoher kapazität
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6181118B1 (en) * 1999-06-24 2001-01-30 Analog Devices, Inc. Control circuit for controlling a semi-conductor switch for selectively outputting an output voltage at two voltage levels
JP4268284B2 (ja) 1999-09-20 2009-05-27 積水化学工業株式会社 光硬化性樹脂組成物、液晶注入口封止剤及び液晶表示セル
US6721843B1 (en) * 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
US6567307B1 (en) * 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US6772274B1 (en) 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
TW539946B (en) * 2001-08-07 2003-07-01 Solid State System Company Ltd Window-based flash memory storage system, and the management method and the access method thereof
EP1286267B1 (de) * 2001-08-17 2017-08-16 Sony Deutschland GmbH Mobiles Kommuikationsgerät und Speicherverwaltungsverfahren
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB2411499B (en) 2001-09-28 2006-02-08 Lexar Media Inc Method of writing data to non-volatile memory
GB0123419D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Data handling system
GB0123422D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
US6950918B1 (en) 2002-01-18 2005-09-27 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6957295B1 (en) 2002-01-18 2005-10-18 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6973519B1 (en) 2003-06-03 2005-12-06 Lexar Media, Inc. Card identification compatibility
JP5128877B2 (ja) 2007-08-28 2013-01-23 三協立山株式会社 開口部装置

Also Published As

Publication number Publication date
GB0123415D0 (en) 2001-11-21
ATE408861T1 (de) 2008-10-15
GB2384072A (en) 2003-07-16
DE60229010D1 (de) 2008-10-30
US20130138873A1 (en) 2013-05-30
EP1693739B1 (de) 2008-09-17
US8694722B2 (en) 2014-04-08
WO2003027828A1 (en) 2003-04-03
US8386695B2 (en) 2013-02-26
US20030165076A1 (en) 2003-09-04
US7340581B2 (en) 2008-03-04
US20080155184A1 (en) 2008-06-26
ATE352810T1 (de) 2007-02-15
GB2384072B (en) 2005-12-07
EP1430386B1 (de) 2007-01-24
DE60217883D1 (de) 2007-03-15
US20140244913A1 (en) 2014-08-28
GB0222503D0 (en) 2002-11-06
EP1430386A1 (de) 2004-06-23
US9489301B2 (en) 2016-11-08
EP1693739A1 (de) 2006-08-23

Similar Documents

Publication Publication Date Title
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE60211653T2 (de) Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE69034191T2 (de) EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
DE69630624T2 (de) EEPROM-Matrix mit einem, dem "Flash"-Speicher ähnlichen Kern
DE69635962T2 (de) Flash-Speicher-Massenspeichersystem und Verfahren dafür
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE69726304T2 (de) Nichtflüchtiger schreibbarer speicher mit programmierungsaufhebungsbefehl
DE60316171T2 (de) Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE60030872T2 (de) Verfahren und anordnung um atomische aktualisierungen durchzuführen durch verwendung eines logischen flaschspeichergerätes
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102007006307A1 (de) Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE112010004667T5 (de) Speichervorrichtung und Speichersteuerung
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
EP1676203B1 (de) Verfahren zum schreiben von speichersektoren in einem blockweise löschbaren speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition