DE60030876T2 - Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität - Google Patents

Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität Download PDF

Info

Publication number
DE60030876T2
DE60030876T2 DE60030876T DE60030876T DE60030876T2 DE 60030876 T2 DE60030876 T2 DE 60030876T2 DE 60030876 T DE60030876 T DE 60030876T DE 60030876 T DE60030876 T DE 60030876T DE 60030876 T2 DE60030876 T2 DE 60030876T2
Authority
DE
Germany
Prior art keywords
block
blocks
information
volatile memory
hyperblock
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
DE60030876T
Other languages
English (en)
Other versions
DE60030876D1 (de
Inventor
Petro Pleasonton ESTAKHRI
Berhanu Sunnyvale IMAN
Min Fremont GUO
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26962208&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60030876(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Priority claimed from US09/283,728 external-priority patent/US6034897A/en
Application filed by Lexar Media Inc filed Critical Lexar Media Inc
Application granted granted Critical
Publication of DE60030876D1 publication Critical patent/DE60030876D1/de
Publication of DE60030876T2 publication Critical patent/DE60030876T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • 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/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Diese Erfindung betrifft das Gebiet digitaler Systeme, welche einen nichtflüchtigen Speicher und insbesondere einen Flash-Speicher als Massenspeicher für Computer, Digitalkameras und dergleichen einsetzen.
  • Beschreibung des Stands der Technik
  • In der letzten Zeit sind Halbleiterspeicher zum Ersetzen von Massenspeichereinheiten in verschiedenen technologischen Bereichen, wie Computer, Digitalkameras, Modems und dergleichen, beliebt geworden. Beispielsweise ersetzen in Digitalkameras Halbleiterspeicher in der Art eines Flash-Speichers herkömmliche Filme.
  • Flash-Speicher werden im Allgemeinen in Form von Halbleitervorrichtungen (oder Halbleiterchips) bereitgestellt, wobei jede Vorrichtung aus einer großen Anzahl von Transistorspeicherzellen besteht und jede Zelle einzeln programmierbar ist. Das Programmieren (oder Schreiben) und das Löschen einer solchen Speicherzelle sind auf eine begrenzte Anzahl von Lösch-Schreib-Zyklen beschränkt, wodurch die Lebensdauer der Vorrichtung im Wesentlichen festgelegt wird. Weiterhin besteht eine inhärente Eigenschaft von Flash-Speicherzellen darin, dass sie gelöscht und auf ein erfolgreiches Löschen geprüft werden müssen, bevor sie programmiert werden.
  • Bei der Verwendung eines Flash-Speichers muss jedoch zuerst der Speicherbereich, der einmal Informationen enthielt, gelöscht werden, bevor er reprogrammiert wird. Bei einer Flash-Speichervorrichtung sind Schreib- und Löschzyklen im Allgemeinen langsam und können die Leistungsfähigkeit eines Systems, das Flash-Speicher als Massenspeicher verwendet, erheblich verringern.
  • Bei Anwendungen, bei denen Flash-Speichervorrichtungen verwendet werden, wie bei Personalcomputern und Digitalkameras, schreibt und liest ein Host Informationen über eine Steuervorrichtung in die Flash-Speichervorrichtungen, wobei die Steuervorrichtung gewöhnlich in Form einer Halbleitervorrichtung ausgebildet ist. Diese Informationen werden in Sektoren organisiert, wobei jeder Sektor Benutzerdateninformationen und Zusatzinformationen enthält und im Allgemeinen eine Länge von 512 Bytes aufweist. Die Steuerung schreibt nach dem Empfang von Sektorinformationen vom Host während eines vom Host vorgeschriebenen Schreibvorgangs die Informationen entsprechend einer vorgegebenen Sektororganisation in die Flash-Speichervorrichtungen. Während der Host auf mehrere Sektoren zugreifen kann, wird jeder Sektor einzeln in die Flash-Vorrichtungen geschrieben.
  • Gegenwärtig werden in Computern, in denen große Dateien, wie kommerzielle Software und Benutzerprogramme innerhalb des Flash-Speichers gespeichert werden, und in Digitalkameras, in denen große Bilddateien innerhalb von Flash-Vorrichtungen gespeichert werden, die Dateien sektorweise nacheinander innerhalb des Flash-Speichers geschrieben. Infolge der Latenz, die jedem Schreibvorgang zugeordnet ist, ist die Leistungsfähigkeit dieser Systeme begrenzt, wenn große Informationsmengen gespeichert werden.
  • Beim Speichern und/oder Abrufen einer Datendatei (Datendateien können beliebige Computerdateien, einschließlich kommerzieller Software, eines Benutzerprogramms, eines Textverarbeitungssoftware-Dokuments, einer Spread-Sheet-Datei und dergleichen, sein) stellt ein Computersystem (oder ein Host-System) eine so genannte Logikblockadresse bereit, welche die Stelle angibt, an der der Host annimmt, dass die Datendatei innerhalb des Massenspeichers existiert. Die vom Host bereitgestellte Adresse kann in der Form Zylinder, Kopf und Sektor (CHS) vorliegen, und sie wird nach dem Empfang durch die Steuerung in ein Logikblock-Adressformat umgewandelt. Das Gleiche gilt für Digitalkameraanwendungen. Die Steuerung setzt dann die Logikblockadresse (LBA) in eine physikalische Blockadresse (PBA) um und verwendet die Letztgenannte zum Zugreifen auf die Datendatei innerhalb des Flash-Speichers. Jedes Mal dann, wenn eine Datendatei geändert wird, wird die letzte Version der Datei an einer verfügbaren (oder "unbenutzten") Stelle innerhalb des Flash-Speichers, die durch eine neue physikalische Stelle (oder eine neue PBA) identifiziert wird, gespeichert. Nachdem ein großer Teil der freien oder verfügbaren Stellen innerhalb des Flash-Speichers für aktualisierte Dateien verwendet wurde, kann ein Löschvorgang erforderlich sein, um verfügbare "alte" Stellen für das Speichern zusätzlicher Informationen verfügbar zu machen. Weil Löschvorgänge zeitaufwendig sind (ebenso wie Schreibvorgänge), gibt es einen Kompromiss zwischen der Häufigkeit des Ausführens von Löschvorgängen und der für das Suchen freier Stellen innerhalb des Flash-Speichers aufgewendeten Zeit, wenn mehr und mehr Stellen vor dem nächsten Löschvorgang verwendet werden.
  • Es kann eine Vielzahl verschiedener Algorithmen verwendet werden, um zu bestimmen, wann ein Löschvorgang bzw. wann Löschvorgänge stattfinden, und als Funktion davon wo innerhalb des Flash-Speichers (Massenspeichers) sich der nächste verfügbare freie Block zum Speichern der Datendatei befindet. Die Bereichsverwaltungseinheit der Steuervorrichtung führt diese Funktion aus.
  • Informationen in dem nichtflüchtigen Speicher oder Flash-Speicher werden unter der Anleitung der Steuerung gespeichert, und das Speichern erfolgt in Form von Blöcken. Demgemäß werden Informationen, die im nichtflüchtigen Speicher gespeichert werden, in Blöcken organisiert, und jeder Block ist durch die Steuerung eindeutig adressierbar. Jeder Block besteht weiter aus mehreren Sektoren, wobei jeder Sektor 512 Bytes an Speicherplatz definiert. Bei manchen Systemen aus dem Stand der Technik wird während eines Löschvorgangs ein ganzer Block gelöscht, während bei anderen Systemen aus dem Stand der Technik der Sektor gelöscht werden kann. Jeder Block ist zum Lesen von Informationen aus dem nichtflüchtigen Speicher und zum Schreiben von Informationen in diesen eindeutig adressierbar. Jeder Sektor weist Informationen, wie Daten, Flags und Fehlerkorrekturcodes ("Error Correction Codes" – ECC), auf. Die Adresse eines Blocks innerhalb des nichtflüchtigen Speichers wird in dem jeweiligen Block gehalten, um sie beim Rekonstruieren der Adressierungs- oder Zuordnungsinformationen, die dem nichtflüchtigen Speicher zugeordnet sind, nach einem Ausschalten der Leistungszufuhr zu verwenden. Diese Zuordnungsinformationen sind die Inhalte einer im flüchtigen Speicher enthaltenen Nachschlagetabelle, wie nun weiter beschrieben wird.
  • Die Bereichsverwaltungseinheit der Steuervorrichtung unterhält eine Tabelle mit Informationen in Bezug auf die Stelle der neuesten Daten innerhalb des Flash-Speichers zusätzlich zu der Stelle von Informationen, die als "alt" (Informationen, die ersetzt worden sind) angesehen werden und noch nicht gelöscht wurden und/oder als "fehlerhaft" (die Stelle kann infolge irgendeiner Art von Fehlern nicht zum Speichern von Informationen verwendet werden) oder als "verwendet" (enthält gegenwärtig aktuelle Informationen) angesehen werden. Die Informationstabelle wird an einer Stelle eines flüchtigen Speichers in der Art eines RAMs, entweder innerhalb oder außerhalb der Steuervorrichtung, gespeichert und aktualisiert. Jedes Mal dann, wenn durch den Host auf Informationen zugegriffen wird, wird die Bereichsverwaltungstabelle verwendet, um die Stelle der Informationen herauszufinden, die in die Flash-Speichervorrichtungen zu schreiben sind und/oder aus diesen zu lesen sind.
  • Das Problem, das bei Verfahren und Vorrichtungen aus dem Stand der Technik, die nichtflüchtige Speichervorrichtungen verwenden, auftritt, besteht darin, dass, wenn beispielsweise ein Informationsblock in einer bestimmten nichtflüchtigen Speichervorrichtung gelöscht wird, ein anderer Block innerhalb derselben Flash-Vorrichtung nicht gelöscht werden kann. Dies liegt teilweise daran, dass die nichtflüchtigen Speichervorrichtungen damit beschäftigt sind, den vorhergehenden Block zu löschen. Während des Vorgangs des Löschens der bestimmten nichtflüchtigen Speichervorrichtung liegt das Bereit/Belegt*-Signal auf dem Logikzustand "0", wodurch angegeben wird, dass die bestimmte nichtflüchtige Speichervorrichtung belegt ist, dies bedeutet jedoch auch, dass ein anderer Block innerhalb derselben Vorrichtung nicht gelöscht werden kann. Folglich muss jeder Block jeder nichtflüchtigen Speichervorrichtung seriell, d.h. einzeln zur Zeit, gelöscht werden.
  • Löschvorgänge nichtflüchtiger Speichervorrichtungen, wie Flash-Vorrichtungen, sind im Allgemeinen zeitaufwendig, wodurch die Gesamtleistungsfähigkeit eines Systems erheblich beeinträchtigt wird, in dem der nichtflüchtige Speicher verwendet wird. Weiterhin tritt, wenn die Anzahl der Blöcke, auf die zugegriffen wird, zunimmt, infolge des sogar noch länger dauernden Prozesses des Löschens einer großen Anzahl von Blöcken eine weitere Beeinträchtigung des Systems auf. Beispielsweise wird im Allgemeinen nach einer Aktualisierung (oder einem Überschreibungsvorgang) eines Blocks ein Löschvorgang eines "alten" Blocks ausgeführt, und wenn nur ein Block vor dem Ausführen eines Löschens eines anderen Blocks vollständig gelöscht werden muss, wird die Zeit, die für das Ausführen der Löschvorgänge aufgewendet wird, im Allgemeinen übermäßig lang. Das Letztgenannte ist auf die Beschränkung von Systemen aus dem Stand der Technik zurückzuführen, welche Blöcke seriell löschen, wie zuvor erörtert wurde.
  • Daher besteht innerhalb digitaler Systeme ein Bedarf an der Verwendung von Halbleiterspeichern, wie Flash-Vorrichtungen, um den Zeitraum zu verringern, der mit Löschvorgängen verbunden ist, um dadurch die Leistungsfähigkeit des Systems zu erhöhen.
  • In US-A-5 648 929, worauf der Oberbegriff der Ansprüche 1 und 7 beruht, ist eine Flash-Speicherkarte mit mehreren Flash-Speichervorrichtungen mit einer Adressensteuerlogik beschrieben, welche Logikblöcke durch Zuweisen von Adressen zu entsprechenden physikalischen Blockadressen in den Vorrichtungen in die Vorrichtungen dispergiert. Chipfreigabesignale werden zu mindestens zwei der Vorrichtungen, welche zu löschende physikalische Blöcke aufweisen, übertragen, so dass, wenn Blocklöschbefehle eingegeben werden, ein Zeitraum existiert, in dem zwei Vorrichtungen gleichzeitig belegt sind.
  • Aspekte der vorliegenden Erfindung sind in den anliegenden Ansprüchen dargelegt.
  • Kurz gesagt umfasst eine bevorzugte Ausführungsform der vorliegenden Erfindung eine Steuervorrichtung zur Verwendung in einem digitalen System mit einem Host und nichtflüchtigen Speichervorrichtungen. Die Steuervorrichtung ist mit dem Host und mindestens zwei nichtflüchtigen Speichervorrichtungen verbunden. Der Host speichert digitale Informationen in der nichtflüchtigen Speichereinheit und liest die gespeicherten digitalen Informationen, von der Steuerung angeleitet, aus der nichtflüchtigen Speichereinheit aus, wobei die Speichereinheit in Blöcke von Informationssektoren organisiert ist. Die Steuervorrichtung löscht die in den Blöcken der nichtflüchtigen Speichervorrichtungen gespeicherten digitalen Informationen in paralleler Form. Die Steuervorrichtung beinhaltet eine Bereichsverwaltungsschaltung, welche auf Adresseninformationen von dem Host anspricht und dafür eingerichtet ist, auf der Grundlage der Host-Adresseninformationen in der nichtflüchtigen Speichereinheit Informationen zu lesen, zu schreiben oder zu löschen. Die Bereichsverwaltungseinrichtung ordnet eine vorgegebene Anzahl von Blöcken in sequenzieller Reihenfolge jeder der nichtflüchtigen Speichervorrichtungen zu, bildet "Überblöcke", wobei jeder "Überblock" parallel angeordnete Blöcke aufweist, und identifiziert einen bestimmten "Überblock", der mindestens zwei Blöcke aufweist, wobei sich ein erster Block in einer ersten nichtflüchtigen Speichervorrichtung befindet und sich ein zweiter Block in einer zweiten nichtflüchtigen Speichervorrichtung befindet, um den bestimmten "Überblock" zu löschen. Der erste Block innerhalb der ersten nichtflüchtigen Speichervorrichtung wird zuerst für das Löschen ausgewählt, und es wird ein Löschvorgang eingeleitet, der an dem ausgewählten ersten Block auszuführen ist. Anschließend wird ein zweiter Block innerhalb der zweiten nichtflüchtigen Speichervorrichtung für das Löschen ausgewählt, und es wird ein Löschvorgang eingeleitet, der an dem ausgewählten zweiten Block auszuführen ist. Anschließend werden der erste und der zweite Block des bestimmten "Überblocks" gelöscht, so dass das Löschen des zweiten Blocks ausgeführt wird, ohne dass auf den Abschluss des Löschens des ersten Blocks gewartet wird. Der Zustand der ersten und der zweiten nichtflüchtigen Speichervorrichtung wird während des Löschens des ersten und des zweiten Blocks als belegt angegeben, wobei die Geschwindigkeit der Löschvorgänge in dem digitalen System erheblich erhöht ist, weil die Blöcke des "Überblocks" parallel angeordnet sind und sich die Löschvorgänge der Blöcke innerhalb der "Überblöcke" überlappen, wodurch die Gesamtleistungsfähigkeit des digitalen Systems erhöht wird.
  • Die vorstehend erwähnten und andere Aufgaben, Merkmale und Vorteile der Erfindung werden anhand der folgenden detaillierten Beschreibung der bevorzugten Ausführungsformen anhand der mehreren Figuren der Zeichnung verständlich werden.
  • Es zeigen:
  • 1 ein digitales System gemäß einer Ausführungsform der vorliegenden Erfindung,
  • 2 ein Beispiel einer Flash-Speichereinheit, die in dem digitalen System aus 1 verwendet werden kann,
  • 3 ein Zeitablaufdiagramm der Arbeitsweise eines digitalen Systems gemäß einer als Beispiel dienenden Ausführungsform der vorliegenden Erfindung,
  • die 4a und 4b ein Flussdiagramm der Schritte, die von der Mikroprozessorschaltung 24 ausgeführt werden, und
  • 5 ein Beispiel der Inhalte der LUT, die in der Bereichsverwaltungs/Flash-Schnittstelleneinheit 28 aus 1 enthalten ist, in Bezug auf die Blockinformationen, die in der Speichereinheit 16 enthalten sind.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • In 1 ist dargestellt, dass ein digitales System 10, das Teil eines Computers (Personalcomputer (PC)), einer Digitalkamera und dergleichen sein kann, gemäß einer Ausführungsform der Erfindung einen Host 12, eine Steuervorrichtung 14 und eine nichtflüchtige Speichereinheit 16 aufweist. Der Host 12 ist wie dargestellt so geschaltet, dass er, von der Steuervorrichtung 14 gesteuert, Informationen von der Speichereinheit 16 liest und in die Speichereinheit 16 schreibt. Die Speichereinheit 16 besteht, wie dargestellt, aus mindestens zwei nichtflüchtigen Speichervorrichtungen.
  • Jede der nichtflüchtigen Speichervorrichtungen ist eine integrierte Schaltung (oder eine Halbleitervorrichtung, wie sie in der Industrie gemeinhin bezeichnet wird). Die nichtflüchtigen Speichervorrichtungen können ein Flash-Speicher, ein EEPROM (elektronisch löschbarer, programmierbarer Nurlesespeicher – "Electronically Erasable Programmable Read Only Memory") oder ein anderer Typ eines Halbleiterspeichers sein.
  • Der Host 12 kommuniziert wie dargestellt über einen Host-Bus 18 mit der Steuerung 14, und die Steuervorrichtung 14 ist wie dargestellt durch Speichersignale 20 mit der Speichereinheit 16 verbunden.
  • Die Steuervorrichtung 14 ist eine integrierte Schaltung (oder ein Halbleiter), die wie dargestellt eine Host-Schnittstellenschaltung 22, eine Mikroprozessorschaltung 24, eine flüchtige Speichereinheit 26 und eine Bereichsverwaltungs/Flash-Schnittstellenschaltung 28 aufweist. Die Host-Schnittstellenschaltung 22 dient dem Verbinden des Hosts 12 über den Host-Bus 18, der einen Adressbus, einen bidirektionalen Datenbus und Steuersignale (nicht getrennt dargestellt) aufweist. Abhängig von der Architektur des verwendeten Hosts können die Host-Adress- und -Datenbusse aus einem einzigen Bus bestehen, der sowohl Adressen- als auch Dateninformationen durch Multiplexieren von Adress- und Datensignalen auf denselben Bus überträgt. Es sei bemerkt, dass der hier verwendete Begriff Bus mehrere elektrische Leiter oder Signalleitungen aufweist. Der Host-Bus 18 kann eine PCMCIA-Schnittstelle, eine ATA-Schnittstelle oder eine andere Schnittstellenart sein, die in der Industrie verwendet wird.
  • Die Host-Schnittstellenschaltung 22 ist wie dargestellt mit dem Host-Bus 18 verbunden und über einen Mikroprozessorbus 30 mit der Mikroprozessorschaltung 24 verbunden. Die Mikroprozessorschaltung 24 ist weiter über den Mikroprozessorbus 30 mit der Bereichsverwaltungs/Flash-Schnittstellenschaltung 28 verbunden, wodurch die Kommunikation von Adressen- und Dateninformationen und Steuersignalen dazwischen erleichtert ist. Die Mikroprozessorschaltung 24 ist über einen flüchtigen Speicherbus 32 mit Lese- und Schreibinformationen der flüchtigen Speichereinheit 26 verbunden.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung ist die Mikroprozessorschaltung 24 ein 8051-Prozessor von Intel, und die Mikroprozessoreinheit 24 kann alternativ eine beliebige Prozessoreinheit für allgemeine Zwecke sein. Die flüchtige Speichereinheit 26 ist im Allgemeinen ein Direktzugriffsspeicher (RAM) zum Speichern von Firmwarecode, der von der Mikroprozessorschaltung 24 erzeugt wird. Informationen werden zwischen dem Host 12 und der Steuerung 14 über den Host-Bus 18 übertragen, und Informationen zwischen der Steuerung 14 und der Speichereinheit 16 werden über die Speichersignale 20 übermittelt. Die Speichereinheit 16 besteht aus zwei oder mehr nichtflüchtigen Speichervorrichtungen, beispielsweise 34 und 36. Die Größe von jeder der nichtflüchtigen Speichervorrichtungen 34 und 36 kann, abhängig von der Anwendung des digitalen Systems 10, variieren. Dennoch wird diese Größe im Allgemeinen in Bytes angegeben, wobei jedes Byte 8 Bits aufweist. Beispielsweise beträgt bei einer Anwendung die Größe der nichtflüchtigen Speichereinheit 16 insgesamt 160 MB (Megabytes) oder jeweils 80 MB. Die nichtflüchtigen Speichervorrichtungen 34 und 36 sind von dem Speichertyp, der seinen Inhalt selbst während eines Abschaltens der Stromversorgung bewahrt. Typische Beispiele nichtflüchtiger Speichervorrichtungen sind Flash- oder EEPROM-Vorrichtungen, die aus Floating-Gate-Zellen bestehen und von Firmen, wie Toshiba, Hitachi und dergleichen hergestellt werden.
  • Wenngleich dies in 1 nicht dargestellt ist, umfasst die Bereichsverwaltungs/Flash-Schnittstellenschaltung 28 eine Bereichsverwaltungs-Steuereinheit, eine Flash-Schnittstellenschaltung und eine Bereichsverwaltungs-Speichereinheit. Die Bereichsverwaltungseinheit besteht gemäß einer Ausführungsform der vorliegenden Erfindung aus einer Zustandsmaschine zum Steuern der Informationen, die in einer Nachschlagetabelle (LUT) gespeichert sind, welche in der Bereichsverwaltungs-Steuereinheit enthalten ist. Alternativ können die Funktionen der Bereichsverwaltungs-Steuereinheit durch andere Hardware- und/oder Softwaretypen ausgeführt werden, wie Durchschnittsfachleute verstehen werden. Die Bereichsverwaltungs-Speichereinheit ist ein flüchtiger Speichertyp, beispielsweise ein RAM, zum Speichern von Blockadressierungs- und Statusinformationen innerhalb der LUT.
  • Wenngleich dies in 1 nicht dargestellt ist, umfassen die Speichersignale 20 einen Flash-Adressbus, einen bidirektionalen Flash-Datenbus und Flash-Steuersignale. Einige dieser Signale werden mit Bezug auf andere hier enthaltene Figuren weiter beschrieben.
  • Beim Betrieb greift der Host 12 von Zeit zu Zeit und während des Ausführens verschiedener Operationen in der Art des Lesens und Schreibens in die Speichereinheit 16 auf diese zu. Dabei stellt der Host 12 eine Adresse bereit, welche eine Stelle zum Lesen und Schreiben von Daten identifiziert. Die vom Host bereitgestellte Adresse wird auf den Host-Bus 18 gegeben, damit sie von der Steuerung 14 beim Zugreifen auf Informationen aus der Speichereinheit 16 oder beim Lesen von Informationen aus dieser verwendet wird. Gemäß einer Ausführungsform liegt die vom Host bereitgestellte Adresse in der Form CHS (Zylinder, Kopf und Sektor) vor. Dieser Adressierungstyp wird von Systemen verwendet, bei denen Festplatten eingesetzt werden, bei denen ein solches Adressierungsschema verwendet wird, um eine bestimmte Stelle auf der Platte zu identifizieren. Mit dem Aufkommen nichtflüchtiger Speicher zum Speichern von Informationen muss das CHS-Adressenformat jedoch in einen Wert zum Identifizieren einer Stelle innerhalb der nichtflüchtigen Speichereinheit konvertiert werden. Wenn demgemäß eine CHS-Adresse auf den Host-Bus 18 gegeben wird, konvertiert die Steuerung 14 diese in eine Logikblockadresse (LBA). Die LBA wird dann über den Mikroprozessorbus 30 der Bereichsverwaltungs/Flash-Schnittstelleneinheit 28 zugeführt. Alternativ stellt der Host 12 den LBA-Adressentyp der Steuerung 14 bereit, wobei in diesem Fall, wenngleich noch eine Konvertierung ausgeführt wird, es sich dabei nicht um eine CHS-zu-LBA-Konvertierung handelt. Die letztgenannte Konvertierung verschiebt lediglich die LBA, was auch ausgeführt wird, wenn die zuvor genannte Konvertierung, d.h. CHS-zu-LBA, verwendet wird. Der Leser wird bemerken, dass, wie hier zuvor erörtert wurde, ein Block als eine vorbestimmte Anzahl von Sektoren aufweisend definiert ist.
  • Die Manipulation und Konvertierung der Adressierungsinformationen von CHS zu jenen, die schließlich zu einer Adresse werden, die verwendet wird, um Informationen in der Speichereinheit 16 nachzuschlagen oder zu speichern, sind wichtig und werden daher in weiteren Einzelheiten erörtert. In dem Fall, in dem eine CHS-Adresse durch den Host der Steuerung 14 bereitgestellt wird, wandelt die letztgenannte die CHS-Adresse nach der folgenden Gleichung in eine LBA-Adresse um: LBA = [(Zylinder * Köpfe + Köpfe) * Sektoren/Spur] + (Sektor – 1) (Gleichung 1)
  • Der Stern (*) bezeichnet eine Multiplikation (oder eine Verschiebung nach links in binärer Schreibweise), der Schrägstrich (/) bezeichnet eine Division (oder eine Verschiebung nach rechts in binärer Schreibweise), und das Pluszeichen (+) bezeichnet offensichtlich eine Addition. Die Clustergröße bestimmt im Allgemeinen die erforderliche Größe der Speichereinheit 16, weil die Größe der Bereichsverwaltungs-Speichereinheit 42 typischerweise fest ist. Dies wird während einer späteren Erörterung verständlich. Die LBA-Berechnung gemäß der vorstehend dargestellten Gleichung kann durch Hardware oder Firmware ausgeführt werden. In dem Fall, in dem Firmware zum Berechnen der LBA verwendet wird, führt der Mikroprozessor 24 diese Funktion durch Ausführen des in der flüchtigen Speichereinheit 26 gespeicherten Firmwarecodes aus. In dem Fall, in dem Hardware zum Berechnen der LBA verwendet wird, führt ein Zustandsmaschinenblock (in 1 nicht dargestellt) eine solche Berechnung aus.
  • Nach der Berechnung der LBA nach der vorstehend angegebenen Gleichung wird die LBA in einen VLBA-(virtuelle Logikblockadresse – "Virtual Logical Block Address")-Wert umgesetzt, indem bestimmte niedrigstwertige Bits der LBA maskiert werden. In dem Fall, in dem 16 Sektoren je Block verwendet werden, wird die VLBA beispielsweise durch eine logische "UND"-Verknüpfung der LBA mit dem Hexadezimalwert 0x3FFFF0 anhand der LBA berechnet. Dies führt im Wesentlichen dazu, dass die LBA mit Ausnahme ihrer 4 niedrigstwertigen Bits bewahrt bleibt. In dem Fall, in dem 32 Sektoren je Block verwendet werden, wird die VLBA durch eine logische "UND"-Verknüpfung des LBA-Werts mit dem Hexadezimalwert 0x3FFFE0 berechnet, wodurch im Wesentlichen die 5 niedrigstwertigen Bits der LBA maskiert werden und die restlichen Bits bewahrt bleiben usw. Die Umsetzung der LBA in die VLBA wird durch die Bereichsverwaltungs-/Flash-Schnittstelle 28 ausgeführt. Diese Umsetzung kann entweder durch Hardware oder durch Software ausgeführt werden.
  • Die VLBA wird dann vom Mikroprozessor 24 auf den Mikroprozessorbus 30 gegeben und der Bereichsverwaltungs-Steuereinheit der Bereichsverwaltungs/Flash-Schnittstellenschaltung 28 zugeführt, wo sie verwendet wird, um die LUT der Bereichsverwaltungs-Speichereinheit zu adressieren. Tatsächlich wird die VLBA zum Adressieren einer bestimmten Stelle der LUT verwendet, aus der eine VPBA (virtuelle physikalische Blockadresse – "Virtual Physical Block Address") abgerufen wird. Es sei bemerkt, dass ein bestimmter LBA-Wert verwendet werden kann, um auf verschiedene PBA-Werte zu zeigen. Falls der Host beispielsweise an eine Stelle schreiben möchte, die durch einen bestimmten LBA-Wert identifiziert ist, wird der bestimmte LBA-Wert dann verwendet, um einen VPBA-Wert in der LUT aufzusuchen. Dieser VPBA-Wert kann beispielsweise "20" sein, beim nächsten Mal, wenn der Host an dieselbe LBA-identifizierte Stelle schreiben möchte, kann der aus der LUT abgerufene VPBA-Wert jedoch "200" statt "20" sein. Dies geschieht unter Verwendung bestimmter Flag-Informationen, die auch innerhalb der LUT enthalten sind. Kurz gesagt werden beim ersten Mal nach einem Löschvorgang, dass eine bestimmte LBA-Stelle durch den Host adressiert wird, um an diese zu schreiben, die Informationen geschrieben und ein Flag-Feld innerhalb der LUT, das der bestimmten LBA entspricht, als "verwendet" markiert, so dass beim nächsten Mal, dass der Host vor einem Löschvorgang an dieselbe Stelle schreiben möchte, eine andere Stelle innerhalb der Speichereinheit 16 durch eine andere PBA für ein solches Schreiben identifiziert wird. Dementsprechend gibt es eine Eins-eins-Entsprechung zwischen der LBA und der PBA. Für eine weitere Erklärung von Flag-Feldern und der LBA- und PBA-LUT-Adressierung sei der Leser auf US-A-5 907 856 verwiesen.
  • Bei PC-Anwendungen ist ein Informationsblock typischerweise ein Sektor, wie er bei herkömmlichen Festplattenlaufwerken verwendet wird, wobei jeder Sektor typischerweise 512 Datenbytes aufweist, wenngleich auch Sektoren anderer Größe in ähnlicher Weise verwendet werden können.
  • Der Mikroprozessor 24 führt Anweisungen in Form eines Programmcodes von der flüchtigen Speichereinheit 26 (in der Art eines ROM (Nurlesespeicher) oder eines RAM (Direktzugriffsspeicher)), der sich entweder innerhalb oder außerhalb des Mikroprozessors 24 befindet, aus. Der Mikroprozessor 24 weist die Bereichsverwaltungs-Steuereinheit weiter an, die von einem CHS-Wert, der vom Host bereitgestellt wurde, ausgegangene LBA zu verwenden, um die nächste nicht verwendete (oder freie) adressierbare Speicherblockstelle, die innerhalb der Speichereinheit 16 verfügbar ist, zu finden. Während eines Host-Schreibvorgangs wird diese nicht verwendete Blockstelle in der LUT gespeichert, und während eines Host-Lesevorgangs wird diese nicht verwendete Blockstelle aus der LUT gelesen. Der Adresswert, der die Stelle innerhalb der Speichereinheit 16 identifiziert, welcher innerhalb der LUT gespeichert ist, wird als virtuelle physikalische Blockadresse ("Virtual Physical Block Address" – VPBA) bezeichnet. Die Bereichsverwaltungs-Steuereinheit kann einen von einer Vielzahl von Algorithmen verwenden, um den nächsten verfügbaren (oder freien) Block zu finden, der sich innerhalb der Flash-Speichervorrichtungen befindet. Ein Beispiel einer Bereichsverwaltungseinrichtung ist in einem früher erteilten Patent, US-A-5 485 595 mit dem Titel "Flash Memory Mass Storage Architecture Incorporating Wear Level Technique Without Using Cam Cells", erteilt am 16. Januar 1996, offenbart, wobei die Erfinder Mahmud Assar, Petro Estakhri, Siamack Nemazie und Mahmood Mozaffari sind.
  • Der Leser sei insbesondere auf die 1113 und die sich darauf beziehenden Erörterungen verwiesen. Gemäß alternativen Ausführungsformen können jedoch auch andere Bereichsverwaltungsverfahren und -vorrichtungen von der vorliegenden Erfindung verwendet werden.
  • Der VLBA-Wert wird schließlich zum Nachschlagen eines VPBA-Werts aus der LUT verwendet. Die LUT besteht aus Zeilen und Spalten, wobei jede Zeile durch einen VLBA-Wert adressiert wird. Während eines Lesevorgangs wird der VLBA-Wert zum Adressieren einer bestimmten Zeile der LUT verwendet, um daraus die VPBA, die bestimmte Flag-Informationen enthält, abzurufen. Während eines Schreibvorgangs wird die VLBA zum Adressieren einer bestimmten Zeile der LUT verwendet, um einen VPBA-Wert, der bestimmte Flag-Informationen enthält, zu speichern. Die VPBA wird schließlich in eine physikalische Blockadresse ("Physical Block Address" – PBA) umgesetzt, um eine bestimmte Sektorstelle innerhalb der Speichereinheit 16 zu identifizieren.
  • Die Zuordnung von Adresseninformationen lässt sich möglicherweise am besten unter Verwendung eines Beispiels verstehen.
  • Figure 00150001
    Tabelle 1
  • Die vorstehende Tabelle 1 zeigt ein Beispiel einer solchen Adresszuordnung, wobei eine Größe einer Einheit des nichtflüchtigen Speichers von 160 MB verwendet wird und wobei weiter ein "Überblock" 64 Sektoren aufweist. Ein "Überblock" ist ein Block, der mehrere Blöcke aufweist, wobei sich jeder Block an einer Stelle innerhalb einer Flash-Vorrichtung befindet, die die gleiche relative Stelle ist wie jene der restlichen Blöcke in der restlichen Flash-Vorrichtung. Mit anderen Worten werden Blöcke eines Überblocks an gleichen Stellen innerhalb jeder Flash-Vorrichtung angeordnet, und jeder Block eines Überblocks liegt innerhalb einer Flash-Vorrichtung, wodurch die Blöcke eines Überblocks parallel zueinander positioniert werden.
  • Eine LBA, die beispielsweise bei Bedarf von einem durch den Host 12 gesendeten CHS-Wert abgeleitet wird, wird nach der vorstehenden Gleichung berechnet. Der LBA-Wert wird dann durch den Mikroprozessor 24 auf den Mikroprozessorbus 30 gegeben, um ihn von der Bereichsverwaltungs/Flash-Schnittstelle 28 zu verwenden, wo er in eine VLBA-Adresse umgesetzt wird. Der in Tabelle 1 dargestellte LBA-Wert weist 4 Bits an Sektorinformationen, 10 Bits an Blockinformationen und 5 Bits an Chipauswahlinformationen auf. Vier Sektorbits geben die Verwendung von 16 Sektoren je Block an, weil 24 gleich 16 ist. Die VLBA wird durch Maskieren der Sektorbits (die maskierten Sektorbits werden als Sektorversatzwert bezeichnet), welche in diesem Beispiel 4 Bits enthalten, abgeleitet. Die Block- und Chipauswahlinformationen bleiben gleich. Die Chipauswahlbits werden verwendet, um eine bestimmte der mehreren in der Speichereinheit 16 enthaltenen nichtflüchtigen Speichervorrichtungen, beispielsweise eine der Vorrichtungen 34 oder 36, auszuwählen. Die Blockinformationen identifizieren einen bestimmten Block innerhalb der ausgewählten nichtflüchtigen Speichervorrichtung.
  • In Tabelle 1 ist dargestellt, dass der VPBA-Wert 4 niedrigstwertige Bits (LSBs) als "beliebige" Bits enthält, wodurch angegeben wird, dass diese Bits keine bedeutungsvollen Informationen tragen, welchen acht Blockinformationsbits und fünf Chipauswahlbits und drei Flag-Bits folgen. Die drei Flag-Bits sind jeweils als "UOD" dargestellt. Wie in dem Schlüsselabschnitt der Tabelle 1 angegeben ist, gibt "U" ein "Verwendet"-Flag an, steht "O" für ein "Alt"-Flag und steht "D" für ein "Defekt"-Flag. Ähnlich geben "C" Bits an, welche Chipauswahlinformationen übertragen, während "B" Bits angeben, welche Blockinformationen übertragen, und "S" Sektorinformationen übertragen. Wie zuvor bemerkt wurde, werden die Chipauswahlinformationen zum Adressieren einer bestimmten nichtflüchtigen Speichervorrichtung innerhalb der Speichereinheit 16 verwendet, während Blockinformationen zum Identifizieren eines bestimmten Blocks innerhalb der ausgewählten nichtflüchtigen Speichervorrichtung verwendet werden und Sektorinformationen zum Identifizieren eines Sektors verwendet werden, wenngleich die letztgenannten nicht von der LUT verwendet werden, weil die Sektorbits maskiert sind.
  • In Tabelle 1 wird der VPBA-Wert durch Schieben des VPBA-Werts nach links, um Flag-Informationen zu beseitigen, und durch Anhängen des Sektorversatzwerts in einen PBA-Wert umgewandelt. Eine Anzahl von "0"-en wird als LSBs an die PBA angehängt, um die Erhöhung der Größe der Speichereinheit 16 zu berücksichtigen.
  • Die Größe der LUT oder die Größe der Bereichsverwaltungs-Speichereinheit liegen im Allgemeinen fest. Gemäß einer Ausführungsform der vorliegenden Erfindung weist die LUT 5120 Zeilen oder Einträge auf, wobei jede Zeile oder jeder Eintrag 24 Bits breit ist. Weil die Größe der LUT gleich bleibt, schreibt dementsprechend die Größe des Clusters oder die Anzahl der Sektoren je Block die Größe der verwendeten Speichereinheit 16 vor. Die Größe der Speichereinheit 16 wird häufig als Speicherkapazität bezeichnet. Bei Systemen aus dem Stand der Technik bestimmt die Größe jedes Blocks (in Bezug auf die Anzahl der Sektoren oder die Clustergröße) die Größe der erforderlichen Kapazität des nichtflüchtigen Speichers. Es seien beispielsweise die in der folgenden Tabelle 2 bereitgestellten Informationen betrachtet:
  • Figure 00180001
    TABELLE 2
  • Die Clustergröße in Tabelle 2 stellt, wie zuvor erörtert wurde, die Anzahl der Sektoren in einem Block dar. Beispielsweise enthält bei Systemen aus dem Stand der Technik, bei denen ein nichtflüchtiger Speicher mit einer Kapazität von 40 MB verwendet wird, jeder Block 16 Sektoren. Dagegen werden für eine Kapazität von 80 MB 32 Sektoren je Block (oder Clustergröße) verwendet. Dies ist wiederum teilweise darauf zurückzuführen, dass die Anzahl der LUT-Einträge gleich bleibt, d.h. 5120 beträgt. Zusätzlich werden Blöcke in der nichtflüchtigen Speichereinheit 16 sequenziell nummeriert, und Blöcke sequenziell gelöscht, indem eine bestimmte nichtflüchtige Speichervorrichtung unter den Vorrichtungen innerhalb der Speichereinheit 16 ausgewählt wird, ein Löschbefehl nach der Adresse des zu löschenden Blocks ausgegeben wird und anschließend überprüft wird, ob der Löschvorgang erfolgreich war, indem die Inhalte des gelöschten Blocks gelesen werden und sie mit einem Wert verglichen werden, der ausschließlich "1"en aufweist. Wie Fachleuten verständlich sein wird, bringt das erfolgreiche Löschen von Flash-Speicherzellen oder nichtflüchtigen Speicherzellen das Programmieren der Zellen auf einen Logikzustand "1" mit sich. Sobald eine Zelle gelöscht wurde, kann in sie geschrieben werden, jedoch nur einmal, bevor sie gelöscht werden muss, um wieder beschrieben werden zu können.
  • Es war das Ziel der Erfinder, eine größere Kapazität eines nichtflüchtigen Speichers verwenden zu können, während die Zeit, die mit Löschvorgängen verbunden ist, verringert wird. Dementsprechend führt die vorliegende Erfindung die Verwendung von "Überblöcken" zum Adressieren der nichtflüchtigen Speichereinheit 16 ein. In dieser Hinsicht ist ein "Überblock" durch eine Anzahl von Blöcken definiert, die sich an gleichen Stellen der verschiedenen nichtflüchtigen Speichervorrichtungen befinden und parallel zueinander liegen. Gemäß den in der folgenden Tabelle 3 bereitgestellten Informationen
    Figure 00190001
    TABELLE 3 bleiben der SPM-Eintrag oder die LUT-Zeilen gleich, d.h. 5120, die Absicht besteht jedoch darin, eine Kapazität von 320 MBytes des nichtflüchtigen Speichers zu haben, wobei dies die Gesamtgröße der Speichereinheit 16 ist. Die Speichereinheit 16 wird dann als 128 Sektoren/Cluster verwaltet. Falls beispielsweise gemäß dem vorstehend Erwähnten ein Block als 16 Sektoren aufweisend definiert ist, weist ein "Überblock" 8·16 oder 128 Sektoren auf, wobei jeder 16-Sektor-Block in einer nichtflüchtigen Speichervorrichtung gespeichert ist und acht solcher nichtflüchtigen Speichervorrichtungen parallel verwendet werden, um 8 Blöcke zu definieren. Dies lässt sich möglicherweise am besten unter Verwendung eines Beispiels verstehen, um die Verwaltung der Speichereinheit 16 zu zeigen, wenn 32 Sektoren/Block verwendet werden und ein "Überblock" 4 Blöcke aufweist, wie in 2 dargestellt ist. Bevor dies geschieht, sollte jedoch verstanden werden, dass in Tabelle 3 in der Spalte "Clustergröße" die Anzahl der Sektoren einen löschbaren Block definiert. Beispielsweise besteht in der ersten Zeile dieser Spalte ein löschbarer Block aus 16 Sektoren, und in der zweiten Zeile dieser Spalte ist dargestellt, dass ein löschbarer Block aus 32 Sektoren besteht usw. Weiterhin spiegelt die Spalte "Kapazität des nichtflüchtigen Speichers" die Gesamtkapazität der Speichereinheit 16 wider, und die Flash-Vorrichtungen sind die nichtflüchtigen Speichervorrichtungen innerhalb der Speichereinheit 16. Beispielsweise besteht in der ersten Spalte der Tabelle 3 eine Gesamtspeichergröße von 160 MB aus zwanzig 8-MB-Flash-Vorrichtungen.
  • Wie in 2 dargestellt ist, weist eine Flash-Speichereinheit 200 4 Flash-Speichervorrichtungen 202208 auf. Unter Verwendung des Beispiels einer Speicherkapazität von 320 MB und 32 Sektoren je Block weist ein Überblock dann 4 Blöcke auf. Ein Überblock umfasst, wie in 2 dargestellt ist, 4 Flash-Speichervorrichtungen. Die Blöcke sind horizontal über die Flash-Speichervorrichtungen 202208 nummeriert, so dass beispielsweise die innerhalb des ersten Überblocks enthaltenen Blöcke, d.h. die Blöcke 0–3, jeweils innerhalb der ersten Blockzeile von jeder der jeweiligen Flash-Speichervorrichtungen 202208 gespeichert sind. Ähnlich sind die Blöcke 4–7, die zum zweiten Überblock gehören, innerhalb der zweiten Blockzeile der jeweiligen Flash-Vorrichtungen 202208 gespeichert. Jede der Flash-Vorrichtungen 202208 weist wie dargestellt 1024 Blockzeilen auf. Jede Blockzeile ist ein Speicherbereich mit 32 Sektoren·512 Bytes oder 16 KB, weil jeder Sektor 512 Bytes aufweist.
  • Ein ganzer Überblock wird während eines Löschvorgangs als eine Einheit gelöscht. Falls beispielsweise der erste Überblock zu löschen ist, wird die Flash-Vorrichtung 202 zuerst ausgewählt und ein Löschbefehl zusammen mit einer Adresse, die den ersten Block der Flash-Vorrichtung 202 identifiziert, ausgegeben. Als nächstes wird die zweite Flash-Vorrichtung oder die Flash-Vorrichtung 204 ausgewählt, woraufhin ein anderer Löschbefehl und eine den ersten Block der Flash-Vorrichtung 204 identifizierende Adresse ausgegeben werden (dieser Wert gleicht dem Wert, der beim Identifizieren des ersten Blocks der Flash-Vorrichtung 202 verwendet wird). Als nächstes wird eine Flash-Vorrichtung 206 ausgewählt und ein Löschbefehl in der gleichen Weise wie mit Bezug auf die Flash-Vorrichtung 208 ausgegeben. Beim Abschluss dieser Vorgänge wird ein "Lesestatusbefehl" ausgeführt, indem ein Lesestatusbefehl zum Prüfen, ob der Löschvorgang fehlerfrei abgeschlossen wurde, ausgegeben wird, d.h. geprüft wird, ob die Inhalte der gelöschten Blöcke von jeder der Flash-Vorrichtungen 202208 in einem Logikzustand "1" sind, und die gelöschten Blöcke werden, falls dies der Fall ist, verwendet, um weiter darin zu schreiben.
  • Es sei bemerkt, dass ein Löschvorgang unter der Anleitung der Steuerung 14 (in 1) ausgeführt wird. Die zum Übertragen von Informationen zwischen der Steuerung 14 und der Speichereinheit 16 verwendeten Signale, d.h. die Speichersignale 18, umfassen verschiedene Adressen-, Daten- und Steuersignale zum Bewirken nicht nur von Löschvorgängen, sondern auch von Lese- und Schreibvorgängen (die letztgenannten zwei Operationen wurden durch den Host 12 eingeleitet). Auf einige dieser in den Speichersignalen 18 enthaltenen Signale wird in der folgenden Erörterung mit Bezug auf 3 Bezug genommen, und sie sind darin dargestellt.
  • Die Abfolge der Aktivitäten während eines Löschvorgangs ist in 3 in einem Zeitablaufdiagramm beispielhaft dargestellt, wobei zwei Flash-Vorrichtungen verwendet werden. Dies kann der Fall sein, in dem ein Block 64 Sektoren aufweist, um die Kapazität von 160 MB des nichtflüchtigen Speichers zu bilden, wie in der vorstehenden Tabelle 3 dargestellt ist.
  • In 3 ist dargestellt, dass die Signale CLE0 302, CLE1 304, CLE2 301 und CLE3 303, /WE 306, Adresse 308, Fertig/Beschäftigt* bzw. Bereit/Belegt* 310 in den Speichersignalen 18 enthalten sind (in 1). In diesem Beispiel wird angenommen, dass vier Flash-Vorrichtungen in der Speichereinheit 16 enthalten sind (in 1). Die Signale 302, 304, 301 und 303 sind Chipfreigabe- oder Chipauswahlsignale, welche eine der vier Flash-Vorrichtungen auswählen, wenn sie aktiv sind (aktiv bezieht sich in diesem Beispiel auf einen Logikzustand "1"). Das /WE-Signal 306 ist ein Schreibfreigabesignal, das immer dann aktiviert wird, wenn Adressen oder Daten in eine der Flash-Vorrichtungen geschrieben werden. Der aktivierte Zustand des Signals 306 ist ein Logikzustand "0". Die Adressensignale 308 liefern die Befehls- und Adressabschnitte einer Operation. Dabei ist die Adresse die Adresse eines Blocks innerhalb einer Flash-Vorrichtung und schreibt der Befehl entweder einen Lese-, einen Schreib- oder einen Löschvorgang vor. In der Abfolge der Ereignisse wird ein Befehl zuerst von der Steuerung 12 über die Adresssignale 308 an die Speichereinheit 16, gefolgt von der Adresse des Blocks in Byteform, ausgegeben, wobei das hohe Byte zuerst übertragen wird, worauf das niedrige Byte folgt. Das Fertig/Beschäftigt*- bzw. Bereit/Belegt*-Signal 310 gibt an, ob eine entsprechende Flash-Vorrichtung bereit oder belegt ist. Im Logikzustand "1" gibt das Bereit/Belegt*-Signal an, dass die entsprechende Flash-Vorrichtung für das Schreiben in sie, das Lesen aus ihr oder das Löschen von ihr bereit ist, während ein Logikzustand "0" angibt, dass die entsprechende Flash-Vorrichtung belegt ist und daraufhin eine Operation nicht erlaubt ist.
  • Weil es in dem Beispiel aus 3 vier Flash-Vorrichtungen, nämlich eine erste, eine zweite, eine dritte und eine vierte Flash-Vorrichtung, gibt (denen jeweils die Signale 302, 304, 301 bzw. 303 entsprechen), besteht ein Überblock aus vier Blöcken, so dass ein Löschvorgang das Löschen von vier Blöcken beinhaltet, die sich an derselben Position innerhalb der vier Flash-Vorrichtungen befinden.
  • Wenn ein Löschvorgang gemäß der Ausführungsform stattfindet, wird das CLE0-Signal 302 aktiviert, und ein Löschbefehl wird auf die Adresssignale 308 gegeben (dies ist durch den Wert "60" in Hexadezimalschreibweise in 3 angegeben). Wenn dies geschieht, wird das /WE-Signal 306 gesetzt oder aktiviert. Weiterhin wird mit dem Setzen des CLE0-Signals 302 die erste Flash-Vorrichtung freigegeben. Als nächstes wird das CLE1-Signal 304 aktiviert, um die zweite Flash-Vorrichtung freizugeben, und die Adresse des gelöschten Blocks wird auf die Adresssignale 308 gegeben, woraufhin bewirkt wird, dass das Signal 310 einen Logikzustand "0" annimmt, um anzugeben, dass die erste Flash-Vorrichtung nun belegt ist. Als nächstes wird ein weiterer Löschbefehl ausgegeben, welcher wiederum durch den Wert "60" angegeben wird, welcher auf die Adresssignale 308 gegeben wird, woraufhin die Adresse des Blocks innerhalb der zweiten Flash-Vorrichtung folgt, die gelöscht wird. Es sei bemerkt, dass, wie zuvor angegeben wurde, diese Adresse gleich der Adresse ist, die dem vorhergehenden Löschbefehl "60" folgte. Diesem folgt die Aktivierung der Signale CLE2 und CLE3, jeweils in der gleichen Weise wie in Bezug auf die Signale CLE0 und CLE1, und es wird auch ein Löschbefehl in der gleichen Weise ausgegeben. Anschließend wird das Bereit/Belegt*-Signal 310 gesetzt oder aktiviert, um anzugeben, dass die zweite Flash-Vorrichtung belegt ist, und es wird dann ein Lesebefehl, der durch den Wert "70" auf den Adresssignalen 308 dargestellt ist, ausgegeben, um zu verifizieren, dass der Löschvorgang erfolgreich war.
  • Es sei bemerkt, dass gemäß der Ausführungsform ein Überblock während eines Löschvorgangs gelöscht wird, wobei ein Überblock mehrere Blöcke einschließt, wie durch die Sektorgröße eines Blocks festgelegt ist. Es ist die Erfahrung der Erfinder, dass der Zeitrahmen, der durch eine Bezugszahl 314 in 3 angegeben ist, wenn die Flash-Vorrichtungen gelöscht werden, 2,3 Millisekunden beträgt, wenn vier Flash-Vorrichtungen verwendet werden, während derselbe Zeitrahmen für Löschvorgänge aus dem Stand der Technik 8 Millisekunden beträgt. Dies führt zu einer Gesamtverbesserung der Leistungsfähigkeit des Systems um etwa 20%.
  • Wenn zwei Flash-Chips verwendet werden, war es die Erfahrung der Erfinder, dass die Zeit zum Ausführen eines Löschvorgangs, die wie durch 314 angegeben gemessen wurde, jedoch für zwei Vorrichtungen, gemäß der Ausführungsform von 4 auf 2,3 Millisekunden verringert wurde. Tatsächlich wird, je mehr Flash-Vorrichtungen verwendet werden, umso mehr Zeit für das Ausführen eines Löschvorgangs gespart, wenn die Struktur und die Verfahren gemäß der Ausführungsform verwendet werden.
  • Um dem Leser eine gewisse Perspektive in Bezug auf die Beziehung zwischen der PBA (beispielsweise in Tabelle 1) und den in 3 dargestellten Signalen zu geben, sei bemerkt, dass die Chipauswahlsignale und andere Adresseninformationen, wie die Block- und die Sektoradresse, von der PBA abgeleitet werden. Wie zuvor in Bezug auf Tabelle 1 erwähnt wurde, geben "C"s Chipauswahlen an, und falls nur zwei Flash-Vorrichtungen verwendet werden, werden CLE0- und CLE1-Signale von dem Wert der "C"s entwickelt. In diesem Beispiel wären zwei Bits (oder "C"s) erforderlich, und falls diese zwei Bits auf dem Logikzustand "0" liegen, wird das CLE0-Signal aktiviert, und falls sie auf dem Logikzustand "1" liegen, wird das CLE1-Signal aktiviert, und falls sie auf dem Logikzustand "2" liegen, wird das CLE2-Signal aktiviert, und falls sie auf dem Logikzustand "3" liegen, wird das CLE3-Signal aktiviert. Ähnlich bilden die "B"s und "S"s die Adresssignale 308.
  • Die 4a und 4b zeigen ein Flussdiagramm der von der Steuerung 14 (in 1 dargestellt) ausgeführten Schritte, wenn ein Informationssektor in die Speichereinheit 16 (in 1 dargestellt) geschrieben wird. Diese Schritte können durch Hardware oder Software (Firmware) ausgeführt werden. Gemäß einer Ausführungsform der vorliegenden Erfindung werden diese Schritte durch die Mikroprozessorschaltung 24 ausgeführt, indem der in der flüchtigen Speichereinheit 26 gespeicherte Firmwarecode ausgeführt wird.
  • In 4a sendet in Schritt 400 der Host 12 (in 1) eine CHS-Adresse und empfängt die Steuerung 14 eine CHS-Adresse, wenn der Host interessiert ist, Daten innerhalb der Speichereinheit 16 zu schreiben. Die Steuerung 14 prüft die empfangene CHS-Adresse bei 402, um festzustellen, ob die Adresse gültig ist. Beim Hochfahren gibt der Host einen Identifikationsbefehl aus, wobei dieser Befehl Speicherkartenparameter zurückgibt (maximale Zylinder-, Kopf-, Sektor- und Spurinformationen, einschließlich des maximalen LBA-Werts). Falls die empfangene CHS-Adresse keine gültige Adresse ist, gibt die Steuerung 14 eine Fehlermeldung an den Host zurück. Falls andererseits die empfangene Adresse gültig ist, wird der Prozess in Schritt 406 fortgesetzt.
  • In Schritt 406 berechnet die Steuerung 14 eine LBA anhand der CHS-Adresse, die vom Host gesendet wurde. Diese Berechnung erfolgt entsprechend Gleichung 1, wie vorstehend erwähnt wurde. Als nächstes wird in Schritt 408 eine bestimmte Pufferstelle zum Speichern der Daten bewahrt, die später in die Speichereinheit 16 zu programmieren sind. Dieser bestimmte Pufferbereich ist in 1 nicht dargestellt, wenngleich er aus RAM besteht. In Schritt 410 wird die LBA in die VLBA umgesetzt. Dies erfolgt durch logische UND-Verknüpfung der LBA mit einem Hexadezimalwert "0x3FFFF0H". Im Wesentlichen werden hierdurch alle Bits in der LBA mit Ausnahme der vier niedrigstwertigen Bits bewahrt. Dies gilt für den Fall, in dem 16 Sektoren je Block verwendet werden. In dem Fall, in dem 32 Sektoren je Block verwendet werden, wird die VLBA durch logische UND-Verknüpfung der LBA mit dem Hexadezimalwert 0x3FFFE0H berechnet. Hierbei wird die LBA mit Ausnahme der fünf niedrigstwertigen Bits bewahrt, und in dem Fall, in dem es 64 Sektoren je Block gibt, wird die VLBA durch logische UND-Verknüpfung der LBA mit dem Hexadezimalwert 0x3FFFC0H berechnet, wobei alle LBA-Bits mit Ausnahme der sechs niedrigstwertigen Bits davon bewahrt bleiben. In Fällen, in denen andere Sektorgrößen verwendet werden, erfolgt die Berechnung der VLBA in ähnlicher Weise.
  • In Schritt 412 in 4a werden die Daten, die in die Speichereinheit 16 zu schreiben sind, vom Host in einen Puffer geschrieben, der sich innerhalb der Steuerung befindet. Bei 414 wird die VLBA geprüft, um festzustellen, ob an die Adresse, an die der Host gegenwärtig schreiben möchte, zuvor geschrieben wurde. Falls dies der Fall ist, d.h. falls die Adresse eine Adresse ist, an die zuvor geschrieben wurde, wird in Schritt 416 die VPBA anhand der LUT unter Verwendung der VLBA erhalten, wie zuvor erklärt wurde. Der Prozess wird dann in Schritt 420 fortgesetzt, wo der Block, der bei 414 geprüft wurde, als "alt" markiert wird, und der Prozess wird dann in Schritt 418 fortgesetzt.
  • Die Sektorinformationen sind jener Abschnitt der LBA, der zuvor maskiert wurde. Mit anderen Worten werden die vier niedrigstwertigen Bits, die in Schritt 410 maskiert wurden, nun an die VPBA angehängt, um die PBA zu erhalten. Auf 414 zurück verweisend, sei bemerkt, dass, falls die LBA keine solche ist, an die zuvor geschrieben wurde, in Schritt 418, wo der Prozess von Schritt 420 sowie von Schritt 414 fortgesetzt wird, von der Bereichsverwaltungseinrichtung eine Suche ausgeführt wird, um einen freien Block für das Schreiben zu erhalten. In Schritt 422 wird das "Verwendet"-Flag gesetzt, um anzugeben, dass der Block nun verwendet wird und Daten enthält, und es wird dann ein Schreibvorgang ausgeführt, um die Daten in die geeignete VPBA zu schreiben. In Schritt 424 wird die PBA in einen FAP-(Flash-Adresszeiger)-Wert umgewandelt.
  • Der FAP dient als ein Wert, der den bestimmten Chip, die nichtflüchtige Vorrichtung, innerhalb der Speichereinheit 16, worin geschrieben wird, und den bestimmten Sektor darin, in den geschrieben wird, identifiziert. Beispielsweise wird der FAP-Wert so unterteilt, dass die vier höchstwertigen Bits des PBA-Werts die Chipauswahl angeben. Die nächsten neun Bits geben den Sektorauswahlwert an, und die vier niedrigstwertigen Bits der PBA geben den Versatz an. In diesem Beispiel weist der FAP einen 17-Bit-Wert auf.
  • In Schritt 426 werden Daten an den durch den FAP definierten geeigneten Sektor von einer der nichtflüchtigen Speichervorrichtungen der Speichereinheit 16 geschrieben, und in Schritt 428 wird auf Fehler geprüft. Das heißt, dass die Hardware oder Firmware einen Befehl zum Lesen des Flash-Status ausgibt, und falls der Flash-Speicher mitteilt, dass der Schreibvorgang erfolgreich abgeschlossen wurde, wird kein Fehler mitgeteilt, und es wird andernfalls als ein Fehler mitgeteilt, dass es nicht gelungen ist, die Flash-Vorrichtung erfolgreich zu programmieren.
  • Falls das Ergebnis der Fehlerprüfung in Schritt 428 angibt, dass ein Fehler festgestellt wurde, wird der Prozess in Schritt 430 fortgesetzt, wo der Block als fehlerhaft angesehen wird und als nicht mehr verwendet festgelegt wird und ein anderer Block gesucht wird, um in ihn zu schreiben. Falls andererseits festgestellt wird, dass die Fehlerprüfung in Schritt 428 ein Ergebnis ergibt, bei dem keine Fehler festgestellt werden, wird der Prozess in Schritt 432 fortgesetzt, wo der Rest des Clusters oder Blocks zu dem Block bewegt wird, an dem die Host-Daten geschrieben wurden, und es wird in Schritt 434 der alte Cluster oder der alte Block gelöscht.
  • In 4b wird, nachdem der alte Cluster oder der alte Block gelöscht wurde, wie wiederum in Schritt 436 dargestellt ist, der Prozess in Schritt 438 fortgesetzt, wo der parallele Löschchipzähler gesetzt wird. Anschließend wird bei 440 der PBA-Wert in den FAP gewandelt, und es wird in Schritt 442 ein Lösch-Flash-Befehl von der Steuerung 14 ausgegeben. In Schritt 444 wird der PBA-Wert erhöht, um die nächste nichtflüchtige Speichervorrichtung innerhalb der Speichereinheit 16 anzugeben, und es wird in Schritt 446 der Löschzähler, der in Schritt 438 gesetzt wurde, um eins heruntergezählt, und es wird geprüft, ob er gleich null ist, nachdem er heruntergezählt wurde. Falls in Schritt 446 festgestellt wurde, dass der Löschzähler nicht gleich null ist, geht der Prozess zu Schritt 440 zurück und wird mit den Schritten 440 bis 446 fortgesetzt, bis der Löschzähler gleich null ist. Sobald der Löschzähler gleich null ist, wird der Prozess bei 448 fortgesetzt. Es wird das Bereit/Belegt*-Signal 310 geprüft. Falls das Signal angibt, dass die Speichereinheit 16 belegt ist, mit anderen Worten, falls das Bereit/Belegt*-Signal 310 null ist, wird der Prozess zu Schritt 448 zurück gesetzt und in einer Schleife auf sich selbst zurückgeführt, bis das Signal 310 bereit angibt, und er wird dann in Schritt 450 fortgesetzt.
  • Als nächstes wird der Prozess in Schritt 450 fortgesetzt, wo der Löschzähler gesetzt wird. Anschließend wird in Schritt 452 der Lesestatusbefehl ausgegeben, und der Prozess wird bei 454 fortgesetzt, wo auf Fehler geprüft wird. Falls keine Fehler mitgeteilt werden, wird der Prozess in Schritt 458 fortgesetzt. Falls ein Fehler existiert, wird der Prozess in Schritt 456 fortgesetzt, wo eine Fehlermeldung zurückgegeben wird. In Schritt 458 wird der Löschzähler, der in Schritt 450 gesetzt wurde, heruntergezählt und geprüft, ob er null ist. Falls der Löschzähler gleich null ist, wird der Prozess in Schritt 460 fortgesetzt, wo im Wesentlichen der Löschvorgang abgeschlossen wird, und falls der Löschzähler nicht gleich null ist, nachdem er heruntergezählt worden ist, wird der Prozess in Schritt 452 fortgesetzt, wobei die Schritte 452 bis 458 wiederholt werden, bis der Löschzähler gleich null ist. Hierdurch werden die Schritte abgeschlossen, die während eines Schreibvorgangs des Sektors gemäß einer Ausführungsform der vorliegenden Erfindung ausgeführt werden.
  • 5 zeigt ein Beispiel der Inhalte der LUT in Bezug auf die Speichereinheit 16. In diesem Beispiel wird eine Speichereinheit mit 160 MB verwendet, und es ist auf der linken Seite von 5 eine Spalte dargestellt, welche die VLBA ist, deren Werte verwendet werden, um Informationen in der LUT nachzuschlagen. In der LUT werden die VPBA-Informationen gehalten. Jede der VLBAs entspricht einer VPBA. Jeder der VPBA-Werte entspricht vier Blöcken, welche einen Überblock innerhalb der Flash-Vorrichtungen der Speichereinheit 16 bilden, welcher auf der rechten Seite von 5 unter der PBA-Spalte dargestellt ist. Beispielsweise entspricht ein VLBA-Wert von Null einem VPBA-Wert von Null, welcher dann vier Blöcken entspricht, welche BLKO sind. Jeder Block liegt innerhalb einer Flash-Vorrichtung oder einer anderen nichtflüchtigen Speichervorrichtung. Dies ist durch die Pfeile angegeben, die sich vom VPBA-Wert null, der der erste Eintrag in der LUT ist, zu jeder der Flash-Vorrichtungen 0–3 erstrecken. Als ein anderes Beispiel sei bemerkt, dass ein VLBA-Wert 200 in Hexadezimalschreibweise einem VPBA-Wert 20 in Hexadezimalschreibweise entspricht, welcher dann verwendet wird, um auf Block eins von jeder der Flash-Vorrichtungen null bis drei oder jeder der vier Flash-Vorrichtungen zu zeigen. Jede Flash-Vorrichtung weist Blöcke auf. Es sei auch bemerkt, dass, wenngleich dies in 5 nicht dargestellt ist, der FAP-Wert anhand des PBA-Werts berechnet wird und an den LBA-Versatzwert angehängt wird.
  • Wenngleich die vorliegende Erfindung in Bezug auf spezifische Ausführungsformen beschrieben wurde, wird davon ausgegangen, dass Fachleuten ohne Zweifel Abänderungen und Modifikationen davon einfallen werden. Es ist daher vorgesehen, dass die folgenden Ansprüche als all diese Abänderungen und Modifikationen, welche innerhalb des Schutzumfangs der Erfindung liegen, abdeckend interpretiert werden.

Claims (11)

  1. Verfahren zum Betrieb eines digitalen Systems (10) mit einer mit einem Host (12) verbundenen Steuervorrichtung (14) und mindestens zwei nichtflüchtigen Speichervorrichtungen (34, 36; 202, 204, 206, 208), wobei der Host zum Speichern digitaler Informationen in der nichtflüchtigen Speichereinheit und zum Lesen der gespeicherten digitalen Informationen aus der nichtflüchtigen Speichereinheit unter Leitung der Steuerung eingerichtet ist, die Speichereinheit in Blöcke von Sektoren von Informationen organisiert ist und das Verfahren zum parallelen Löschen der in den Blöcken der nichtflüchtigen Speichervorrichtungen gespeicherten digitalen Informationen eingerichtet ist und beinhaltet, daß eine vorbestimmte Anzahl an Blöcken, die jeweils eine vorbestimmte Anzahl an Sektoren aufweisen, in fortlaufender Reihenfolge jeder der nichtflüchtigen Speichervorrichtungen zugeordnet wird, Überblöcke gebildet werden, die jeweils parallel angeordnete Blöcke aufweisen, wobei sich Blöcke gleicher Folgenummer in den jeweiligen nichtflüchtigen Speichervorrichtungen relativ zueinander an entsprechender Stelle befinden, ein bestimmter Überblock mit mindestens zwei Blöcken, von denen sich ein erster Block in einer ersten nichtflüchtigen Speichervorrichtung und ein zweiter Block in einer zweiten nichtflüchtigen Speichervorrichtung befindet, zum Löschen des bestimmten Überblocks durch die Steuerung ausgewählt wird, aus dem bestimmten Überblock zuerst der erste Block innerhalb der ersten nichtflüchtigen Speichervorrichtung ausgewählt wird, um ihn zu löschen, die Ausführung eines Löschvorgangs für den ausgewählten ersten Block eingeleitet wird, aus dem bestimmten Überblock als zweites ein zweiter Block innerhalb der zweiten nichtflüchtigen Speichervorrichtung ausgewählt wird, um ihn zu löschen, die Ausführung eines Löschvorgangs für den ausgewählten zweiten Block eingeleitet wird (442), der erste und der zweite Block des bestimmten Überblocks so gelöscht wird, daß sich die Löschvorgänge überlappen und eine Zeitspanne besteht, in der das Löschen des zweiten Blocks parallel zum Löschen des ersten Blocks ausgeführt wird, und der Status der ersten und der zweiten nichtflüchtigen Speichervorrichtung während des Löschens des ersten und des zweiten Blocks als beschäftigt angegeben wird (448), gekennzeichnet weiterhin durch die Schritte zum Setzen (438) eines Löschzählers auf die Anzahl an Blöcken innerhalb eines Überblocks und zum Herabzählen (446) des Löschzählers nach jedem der Einleitungsschritte.
  2. Verfahren zur Verwendung in einem digitalen System nach Anspruch 1, mit einem Schritt, um dann, wenn der vom Löschzähler angegebene Wert "0" erreicht, die Vollendung des Löschens aller Blöcke innerhalb des bestimmten Überblocks zu prüfen (458).
  3. Verfahren zur Verwendung in einem digitalen System nach Anspruch 1, wobei während des Angabeschritts beim Starten des Löschvorgangs für die erste nichtflüchtige Speichervorrichtung ein Fertig/Beschäftigt*-Signal zur Angabe, daß die nichtflüchtige Speichereinheit beschäftigt ist, gesetzt wird und bei Vollendung des Löschvorgangs für die letzte nichtflüchtige Speichervorrichtung der nichtflüchtigen Speichereinheit das Fertig/Beschäftigt*-Signal zur Angabe, daß die nichtflüchtige Speichereinheit nicht länger beschäftigt ist, zurückgesetzt wird.
  4. Verfahren zur Verwendung in einem digitalen System nach Anspruch 1, wobei das Löschen aller ausgewählten Blöcke innerhalb des bestimmten Überblocks vollendet wird und danach das erfolgreiche Vollenden der ausgewählten Blöcke des bestimmten Überblocks verifiziert wird.
  5. Verfahren zur Verwendung in einem digitalen System nach Anspruch 4, wobei der Verifikationsschritt die Ausgabe (452) eines Lesestatusbefehls beinhaltet.
  6. Verfahren zur Verwendung in einem digitalen System nach Anspruch 1, wobei der bestimmte Überblock mehr als zwei Blöcke beinhaltet und mehr als zwei Blöcke ausgewählt werden, um sie zu löschen, diese gelöscht werden und bei Vollendung des Löschens ihr Löschen verifiziert wird.
  7. Steuervorrichtung (14) zur Verwendung in einem digitalen System (10), die mit einem Host (12) und einer nichtflüchtigen Speichereinheit (16) verbunden ist, die mindestens zwei nichtflüchtige Speichervorrichtungen (34, 36; 202, 204, 206, 208) umfaßt, wobei der Host zum Speichern digitaler Informationen in der nichtflüchtigen Speichereinheit und zum Lesen der gespeicherten digitalen Informationen aus der nichtflüchtigen Speichereinheit unter Leitung der Steuerung betreibbar ist, die Speichereinheit in Blöcke von Sektoren von Informationen eingeteilt ist und die Steuervorrichtung zum parallelen Löschen der in den Blöcken der nichtflüchtigen Speichervorrichtungen gespeicherten Informationen eingerichtet ist und folgendes umfaßt: eine Bereichsverwaltungsschaltung (28), die auf Adresseninformationen vom Host anspricht und aufgrund der Host-Adresseninformationen Informationen in der nichtflüchtigen Speichereinheit lesen, schreiben oder löschen kann und eingerichtet ist, eine vorbestimmte Anzahl an Blöcken in fortlaufender Reihenfolge jeder der nichtflüchtigen Speichervorrichtungen zuzuordnen, Überblöcke zu bilden, die jeweils parallel angeordnete Blöcke aufweisen, wobei sich Blöcke gleicher Folgenummer in den jeweiligen nichtflüchtigen Speichervorrichtungen relativ zueinander an entsprechender Stelle befinden, einen bestimmten Überblock mit mindestens zwei Blöcken, von denen sich ein erster Block in einer ersten nichtflüchtigen Speichervorrichtung und ein zweiter Block in einer zweiten nichtflüchtigen Speichervorrichtung befindet, zum Löschen des bestimmten Überblocks zu bezeichnen, zuerst den ersten Block innerhalb der ersten nichtflüchtigen Speichervorrichtung aus dem bestimmten Überblock auszuwählen, um ihn zu löschen, die Ausführung eines Löschvorgangs für den ausgewählten ersten Block einzuleiten, als zweites einen zweiten Block innerhalb der zweiten nichtflüchtigen Speichervorrichtung aus dem Überblock auszuwählen, um ihn zu löschen, die Ausführung eines Löschvorgangs für den ausgewählten zweiten Block einzuleiten, den ersten und den zweiten Block des bestimmten Überblocks so zu löschen, daß sich die Löschvorgänge überlappen und eine Zeitspanne besteht, in der das Löschen des zweiten Blocks parallel zum Löschen des ersten Blocks durchgeführt wird, und während des Löschens des ersten und des zweiten Blocks den Status der ersten und der zweiten nichtflüchtigen Speichervorrichtung als beschäftigt anzugeben, gekennzeichnet durch einen Löschzähler und dadurch, daß der Löschzähler vor dem Start des Löschvorgangs für den bestimmten Überblock auf die Anzahl der Blöcke innerhalb eines Überblocks gesetzt und nach dem Beginn des Löschens eines jeden der Blöcke des bestimmten Überblocks abwärts gezählt wird.
  8. Steuervorrichtung nach Anspruch 7 mit einem Flag-Feld zur Angabe des Status des bestimmten Überblocks zur Verwendung beim Erkennen des bestimmten Überblocks als alt und bereit, von der Steuervorrichtung gelöscht zu werden.
  9. Vorrichtung nach Anspruch 7, wobei die Steuervorrichtung eingerichtet ist, dann, wenn der vom Löschzähler angegebene Wert "0" erreicht, die Vollendung des Löschens aller Blöcke innerhalb des bestimmten Überblocks zu prüfen.
  10. Vorrichtung nach Anspruch 7, wobei die nichtflüchtigen Speichervorrichtungen Flash-Chips sind.
  11. Programm zur Steuerung einer Speichersteuervorrichtung, das bei Ausführung durch einen Prozessor der Vorrichtung alle Schritte eines Verfahrens nach einem der Ansprüche 1 bis 6 ausführt.
DE60030876T 1999-04-01 2000-03-30 Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität Expired - Lifetime DE60030876T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US283728 1999-04-01
US09/283,728 US6034897A (en) 1999-04-01 1999-04-01 Space management for managing high capacity nonvolatile memory
US09/519,226 US6134151A (en) 1999-04-01 2000-03-06 Space management for managing high capacity nonvolatile memory
US519226 2000-03-06
PCT/US2000/008686 WO2000060605A1 (en) 1999-04-01 2000-03-30 Space management for managing high capacity nonvolatile memory

Publications (2)

Publication Number Publication Date
DE60030876D1 DE60030876D1 (de) 2006-11-02
DE60030876T2 true DE60030876T2 (de) 2007-05-03

Family

ID=26962208

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60030876T Expired - Lifetime DE60030876T2 (de) 1999-04-01 2000-03-30 Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität

Country Status (6)

Country Link
US (1) US6262918B1 (de)
EP (2) EP1228510B1 (de)
AT (1) ATE340405T1 (de)
AU (1) AU4061700A (de)
DE (1) DE60030876T2 (de)
WO (1) WO2000060605A1 (de)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
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
JP3714969B2 (ja) 1998-03-02 2005-11-09 レクサー・メディア・インコーポレイテッド 改良されたオペレーティングモード検出機能を備えたフラッシュメモリーカード及びユーザフレンドリなインターフェーシングシステム
US6442067B1 (en) * 2000-05-23 2002-08-27 Compaq Information Technologies Group, L.P. Recovery ROM for array controllers
US6772273B1 (en) 2000-06-29 2004-08-03 Intel Corporation Block-level read while write method and apparatus
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US7155559B1 (en) 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
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
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
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
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
AU2003211154A1 (en) * 2002-02-22 2003-09-09 Lexar Media, Inc. Removable memory media with integral indicator light
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
DE10256509B4 (de) * 2002-06-19 2008-06-12 Hyperstone Gmbh Verfahren zum Adressieren von blockweise löschbaren Speichern
SG120879A1 (en) * 2002-08-08 2006-04-26 Micron Technology Inc Packaged microelectronic components
US6815308B2 (en) * 2002-08-15 2004-11-09 Micron Technology, Inc. Use of a dual-tone resist to form photomasks including alignment mark protection, intermediate semiconductor device structures and bulk semiconductor device substrates
US6906961B2 (en) 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
JP4567966B2 (ja) * 2003-12-22 2010-10-27 株式会社東芝 エミュレーションシステムおよびエミュレーション方法
US7484070B1 (en) 2004-01-09 2009-01-27 Conexant Systems, Inc. Selective memory block remapping
US7350044B2 (en) * 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
US20050213399A1 (en) * 2004-03-29 2005-09-29 Hoover Patricia J Method and apparatus to write data
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
US7139199B2 (en) * 2004-06-28 2006-11-21 Intel Corporation Flash memory file system with transacted operations
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
US20060069896A1 (en) * 2004-09-27 2006-03-30 Sigmatel, Inc. System and method for storing data
US7644191B2 (en) * 2004-11-12 2010-01-05 Emulex Design & Manufacturing Corporation Legacy-compatible extended command input-output control block
US7721033B2 (en) * 2004-12-03 2010-05-18 Emulex Design & Manufacturing Corporation Interrupt notification block
US7395404B2 (en) * 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
WO2008070814A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
KR100866624B1 (ko) * 2007-02-23 2008-11-03 삼성전자주식회사 둘 이상의 비휘발성 메모리 장치들을 제어하는 방법 및 그장치
US8122322B2 (en) 2007-07-31 2012-02-21 Seagate Technology Llc System and method of storing reliability data
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
CN101354681B (zh) * 2008-09-23 2010-12-01 美商威睿电通公司 存储器系统、非易失性存储器的磨损均衡方法及装置
US8095765B2 (en) 2009-03-04 2012-01-10 Micron Technology, Inc. Memory block management
US8239614B2 (en) 2009-03-04 2012-08-07 Micron Technology, Inc. Memory super block allocation
US8209474B1 (en) * 2009-09-30 2012-06-26 Emc Corporation System and method for superblock data writes
KR101796116B1 (ko) 2010-10-20 2017-11-10 삼성전자 주식회사 반도체 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 그 동작방법
FR2980905B1 (fr) * 2011-09-29 2014-03-14 Continental Automotive France Procede d'effacement d'informations memorisees dans une memoire reinscriptible non volatile, support de memorisation et calculateur de vehicule automobile

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US4353376A (en) * 1981-03-12 1982-10-12 Schuler Murry W Combine having separating and cleaning apparatus
JPS5877034A (ja) 1981-10-30 1983-05-10 Hitachi Ltd 記録方法
US4450559A (en) 1981-12-24 1984-05-22 International Business Machines Corporation Memory system with selective assignment of spare locations
JPS58215794A (ja) 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
JPS58215795A (ja) 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
US4498146A (en) 1982-07-30 1985-02-05 At&T Bell Laboratories Management of defects in storage media
JPS5945695A (ja) 1982-09-07 1984-03-14 Fujitsu Ltd Icメモリ
US4710871A (en) 1982-11-01 1987-12-01 Ncr Corporation Data transmitting and receiving apparatus
AU557723B2 (en) 1982-12-17 1987-01-08 Blue Circle Southern Cement Ltd. Electronic memory system
JPS59162695A (ja) 1983-03-07 1984-09-13 Nec Corp 記憶装置
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 半導体固定記憶装置
JPS6196598A (ja) 1984-10-17 1986-05-15 Fuji Electric Co Ltd 電気的消去可能なp−romのカウントデ−タ記憶方法
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
JPS62102482A (ja) 1985-10-28 1987-05-12 Matsushita Electric Ind Co Ltd 情報記録再生装置
US4800520A (en) 1985-10-29 1989-01-24 Kabushiki Kaisha Toshiba Portable electronic device with garbage collection function
JP2664137B2 (ja) 1985-10-29 1997-10-15 凸版印刷株式会社 Icカード
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
JPS62173496A (ja) 1986-01-28 1987-07-30 日本電気株式会社 標準パタン登録回路
US4757474A (en) 1986-01-28 1988-07-12 Fujitsu Limited Semiconductor memory device having redundancy circuit portion
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
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アクセス方法
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
US5198380A (en) 1988-06-08 1993-03-30 Sundisk Corporation Method of highly compact EPROM and flash EEPROM devices
US5293560A (en) 1988-06-08 1994-03-08 Eliyahou Harari Multi-state flash EEPROM system using incremental programing and erasing methods
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
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
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
EP0618535B1 (de) 1989-04-13 1999-08-25 SanDisk Corporation EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
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
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
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
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
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
JPH04332999A (ja) 1991-05-07 1992-11-19 Hitachi Koki Co Ltd メモリの使用方法
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
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US5778418A (en) 1991-09-27 1998-07-07 Sandisk Corporation Mass computer storage system having both solid state and rotating disk types of memory
US5263003A (en) * 1991-11-12 1993-11-16 Allen-Bradley Company, Inc. Flash memory circuit and method of operation
JPH05151097A (ja) 1991-11-28 1993-06-18 Fujitsu Ltd 書換回数制限型メモリのデータ管理方式
JPH05233426A (ja) 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5428621A (en) 1992-09-21 1995-06-27 Sundisk Corporation Latent defect handling in EEPROM devices
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
US5341339A (en) 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5341330A (en) 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5357475A (en) 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
JP3594626B2 (ja) * 1993-03-04 2004-12-02 株式会社ルネサステクノロジ 不揮発性メモリ装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
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
US5566314A (en) 1993-08-30 1996-10-15 Lucent Technologies Inc. Flash memory device employing unused cell arrays to update files
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
US5508971A (en) 1994-10-17 1996-04-16 Sandisk Corporation Programmable power generation circuit for flash EEPROM memory systems
JPH08263361A (ja) * 1995-03-23 1996-10-11 Mitsubishi Electric Corp フラッシュメモリカード

Also Published As

Publication number Publication date
US6262918B1 (en) 2001-07-17
EP1228510B1 (de) 2006-09-20
ATE340405T1 (de) 2006-10-15
AU4061700A (en) 2000-10-23
EP1228510A4 (de) 2005-01-19
WO2000060605A1 (en) 2000-10-12
DE60030876D1 (de) 2006-11-02
EP1729304A1 (de) 2006-12-06
EP1228510A1 (de) 2002-08-07
EP1729304B1 (de) 2012-10-17

Similar Documents

Publication Publication Date Title
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE69034191T2 (de) EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE69630624T2 (de) EEPROM-Matrix mit einem, dem "Flash"-Speicher ähnlichen Kern
DE60130593T2 (de) Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken
DE4143072C2 (de) Blockweise löschbarer nicht-flüchtiger Halbleiterspeicher
DE60131549T2 (de) Komprimiertes ereigniszählverfahren und seine anwendung an einem flash-speichersystem
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE69635962T2 (de) Flash-Speicher-Massenspeichersystem und Verfahren dafür
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
DE19882933B4 (de) Flash-Speicher-Unterteilung für Lese-während-Schreiboperationen
DE60316171T2 (de) Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
DE102009048179A1 (de) Prozess und Verfahren für eine Löschstrategie in Festkörperplatten
EP2401680B1 (de) Verfahren zur verwaltung von flashspeichern mit gemischten speichertypen
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE19537305A1 (de) Halbleiter-Platteneinrichtung und Speicherverwaltungsmethode
DE19782214B4 (de) Verbesserte Schnittstelle für Flash-Eeprom-Speicher-Arrays
DE60300360T2 (de) Informationsspeichervorrichtung
EP2948894B1 (de) Verfahren zum sicheren löschen eines nichtflüchtigen halbleiter-massenspeichers, computersystem sowie computerprogrammprodukt
EP1559111B1 (de) Verfahren zum betreiben einer speicheranordnung
DE10321104B4 (de) Verfahren zur Ablage von veränderlichen Daten
EP1625592B1 (de) Vorrichtung und verfahren zum behandeln eines zustands eines speichers
DE19837473A1 (de) Speichervorrichtung mit einem Datenpuffer
EP1564754B1 (de) Verfahren und Vorrichtung zur Verwaltung von Daten in einem nichtflüchtigen Datenspeicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition