DE69726088T2 - Methode und Apparat zur Speicherverwaltung - Google Patents

Methode und Apparat zur Speicherverwaltung Download PDF

Info

Publication number
DE69726088T2
DE69726088T2 DE69726088T DE69726088T DE69726088T2 DE 69726088 T2 DE69726088 T2 DE 69726088T2 DE 69726088 T DE69726088 T DE 69726088T DE 69726088 T DE69726088 T DE 69726088T DE 69726088 T2 DE69726088 T2 DE 69726088T2
Authority
DE
Germany
Prior art keywords
memory
block
flash memory
parameter
memory area
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
DE69726088T
Other languages
English (en)
Other versions
DE69726088D1 (de
Inventor
Jonathan Iain Reading Marsters
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.)
Nokia Oyj
Original Assignee
Nokia Oyj
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 Nokia Oyj filed Critical Nokia Oyj
Publication of DE69726088D1 publication Critical patent/DE69726088D1/de
Application granted granted Critical
Publication of DE69726088T2 publication Critical patent/DE69726088T2/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

  • Die Erfindung betrifft einen Speicher und ein Betriebsverfahren für einen solchen. Insbesondere, jedoch nicht ausschließlich, betrifft die Erfindung als Flashspeicher bekannte Speicher.
  • Halbleiter- oder Festkörperspeicher nutzen elektrische Signale oder Ladungen, die so beschaffen sind, dass sie für die Daten repräsentativ sind, die im Speicher abgespeichert werden sollen. Speicher, denen Energie zuzuführen ist, damit die elektrischen Signale aufrecht erhalten werden können, was manchmal als Auffrischung bezeichnet wird, sind als flüchtige Speicher bekannt. Speicher, die keine Energie zum Aufrechterhalten der elektrischen Signale benötigen, sind als nichtflüchtige Speicher bekannt. Ein früher Typ nichtflüchtiger Speicher ist als Festwertspeicher (ROM) bekannt, bei dem die für Daten repräsentativen elektrischen Signale oder Ladungen beim Herstellen des ROM erzeugt wurden und dann die durch die elektrischen Signale repräsentierten Daten im Betrieb des Bauteils wieder ausgelesen wurden. Mit elektrisch löschbaren und programmierbaren Festwertspeichern (EEPROMs) hat der Benutzer die Möglichkeit, einen ROM zu programmieren und im Bauteil abgespeicherte Daten elektrisch zu löschen und sie durch andere Daten zu ersetzen.
  • Die Programmierung eines EEPROM verläuft relativ langsam, da die Eingabe/ Ausgabe von Daten und die Adressierung mit einem seriellen Format erfolgt. Außerdem sind spezielle "hohe" Spannungen erforderlich, wenn ein EEPROM programmiert wird. Jedoch sind EEPROMs bei tragbaren elektronischen Geräten besonders nützlich, bei denen Benutzer- oder Systemparameter während des Gebrauchs des tragbaren Geräts geändert werden und zur zukünftigen Verwendung beim nächsten Mal, wenn das tragbare Gerät betrieben wird, beim Abschalten desselben abgespeichert werden müssen. Ein derartiges tragbares Gerät kann z. B. ein Funktelefon sein, bei dem die Parameter z. B. für Anrufzähler/-timer, die Stapeladresse beim letzten Aufruf, Benutzereinstellungen für die Benutzerschnittstelle sowie den Benutzernamen und einen Nummernspeicher betreffen. Eine derartige Verwendung kann als Anwendungstyp mit "einmal schreiben/häufig lesen" bezeichnet werden, bei dem die relative Langsamkeit während des Gebrauchs und der hohe Energieverbrauch während der Umprogrammierung dem Gebrauch von EEPROMs für tragbare, batteriebetriebene Geräte nicht entgegen stehen.
  • Jedoch sind EEPROMs typischerweise nur mit relativ kleinen Speichergrößen, wie Größen von 8 kByte oder 16 kByte verfügbar, bevor sie abschreckend teuer werden. Da immer mehr nichtflüchtiger Speicherraum bei niedrigem Energieverbrauch für tragbare elektronische Geräte benötigt wird, sind Alternativen zu EEPROMs erforderlich. Eine derartige Alternative ist ein sogenannter Flashspeicher, der mit großen Speicherdichten verfügbar ist, und z. B. sind Bauteile mit 16 und 32 MBit kommerziell verfügbar.
  • Ein Flashspeicher ist schneller als ein EEPROM, da er ein paralleles Adressierungs- und Datenformat verwendet. Außerdem weist er im Bereitschaftsbetrieb einen kleineren Energieverbrauch als ein EEPROM auf. Bei Flashspeichern erfolgt ein Löschen in Blöcken, bei denen es sich um Gruppen von Bytes im Allgemeinen mit einem Mehrfachen von 4 K, 8 K, 16 K usw. handelt. Das blockweise Löschen macht im Allgemeinen die Umprogrammierung eines Flashspeichers schneller als die Umprogrammierung eines EEPROM, was der Ursprung des Begriffs "Flash (= Blitz)" ist. Jedoch benötigt ein Blocklöschvorgang eine relativ lange Zeit, nämlich typischerweise 0,5 Sekunden für einen Block von 8 kByte.
  • Das Merkmal nur blockweisen Löschens hat dazu geführt, dass Flashspeicher dazu verwendet werden, Datenstrukturen in Form einer "verketteten Liste" zu speichern. Eine derartige Struktur ist in der Intel Corporation Application Note AP-604 für die Smart-Voltage-Boot-Block-Flashspeicher-Familie beschrieben. Bei diesen Flashspeicher-Bauteilen sind zwei sogenannte Parameterblöcke zur Speicherung von Daten, die geändert werden, vorhanden. Zu einem jeweiligen Zeitpunkt ist nur einer der Parameterblöcke in Gebrauch. Jeder Datensatz verfügt über einen Parameterwert und einen Zeiger auf den nächsten Datensatz für diesen Parameter. Wenn der Parameterwert für einen Datensatz der aktuelle Wert ist, ist der Zeiger "leer", oder es ist ein Wert wie FFH an ihn vergeben, der anzeigt, dass kein weiterer Datensatz für den Parameter existiert. Wenn ein Parameterwert aktualisiert wird, wird der Zeiger für den vorigen aktuellen Wert von "leer" aus so geändert, dass er die Adresse des Datensatzes einnimmt, an der der neue Parameterwert abzuspeichern ist. In den neuen Datensatz wird der neue Wert und ein "leerer" Zeiger eingespeichert.
  • Parameterwerte werden in der Struktur einer verketteten Liste abgespei chert, bis der aktuelle Parameterblock voll ist. Wenn dieser Punkt erreicht ist, wird der letzte Wert für jeden Parameter im zweiten Parameterblock, nun dem aktuellen Parameterblock, abgespeichert, und die Struktur einer verketteten Liste setzt sich im neuen aktuellen Block fort. Der ursprüngliche aktuelle Parameterblock wird dann gelöscht.
  • Obwohl Flashspeicher einige der Probleme und Nachteile in Zusammenhang mit EEPROMs und dergleichen berücksichtigen, zeigen sie ihre eigenen Nachteile. Während eines Löschzyklus ist kein Lesevorgang aus irgendeinem Block möglich, unabhängig davon, ob der Block gelöscht wird oder nicht, was ein deutlicher Nachteil gegenüber einem EEPROM ist, bei dem Daten mit einzelnen Bytes gelesen oder geschrieben werden können. Außerdem ist die Anzahl von Löschzyklen, denen ein Flashspeicher unterzogen werden kann, bevor eine Beeinträchtigung des Funktionsvermögens auftritt, auf ungefähr 100.000 Löschzyklen begrenzt, was deutlich niedriger als die Grenze für EEPROMs ist.
  • Die Erfindung zielt darauf ab, zumindest einige der Probleme oder Nachteile zu lindern, wie sie sich bei Flashspeicher-Bauteilen zeigen.
  • GB-A-21 91 990 beschreibt ein Flashspeicher-Verfahren zum Aufrechterhalten einer Abbildung zwischen einer Logiksektoradresse und einer entsprechenden physikalischen Adresse unter Verwendung eines Datenspeicherblocks für jeden Logiksektor-Adressenwert sowie mehrere Ersatzdaten-Speicherblöcke. Die Speicherblöcke werden gesäubert, wenn die Anzahl der ungenutzten Blöcke unter einen vorbestimmten Schwellenwert fällt.
  • Gemäß einer ersten Erscheinungsform der Erfindung ist Folgendes geschaffen: ein Speicherverwaltungsverfahren zum Verwalten eines ersten Speichers, der über Bereiche zum Speichern von Parameterdaten und ausführbare Codebefehle dieses ersten Speichers verfügt, gekennzeichnet durch die folgenden Schritte: Übertragen, als Vorläufer eines Löschzyklus für den ersten Speicher, der ausführbaren Codeanweisungen in einen zweiten Speicher, der nicht der erste Speicher ist, um in diesem für die ausführbaren Codeanweisungen zu sorgen; Steuern des Löschzyklus unter Verwendung der übertragenen ausführbaren Codeanweisungen aus dem zweiten Speicher; und Ermitteln einer Anzahl benutzter Speicherstellen für einen ersten Speicherbereich des ersten Speichers über einem vorbestimmten Schwellenwert; Identifizieren eines zweiten Speicherbereichs des ersten Speichers, der zum Speichern elektronischer Signale verfügbar ist; Einspeichern elektronischer Signale in den zweiten Speicherbereich, die elektronischen Signalen entsprechen, die für im ersten Speicher abgespeicherte Parameterdaten repräsentativ sind, und Ausführen eines Löschzyklus für den ersten Speicherbereich, und Bestimmen eines dritten Speicherbereichs, der den größten vergeudeten Raum aufweist, aus mehreren ersten Speicherbereichen; Einspeichern elektronischer Signale in den zweiten Speicherbereich, die im dritten Speicherbereich gespeicherten elektronischen Signalen entsprechen, und Ausführen eines Löschzyklus für den dritten Speicherbereich.
  • Ein Vorteil einer Ausführungsform der Erfindung besteht darin, dass eine ungleichmäßige Speichernutzung vermieden ist. Dies verbessert die effektive Lebensdauer des Speichers.
  • Bei einer bevorzugten Ausführungsform ist der zweite Speicherbereich der am wenigsten gelöschte Speicherbereich unter zum Speichern elektronischer Signale verfügbaren Speicherbereichen.
  • Gemäß einer weiteren Erscheinungsform der Erfindung ist eine elektronische Vorrichtung zur Speicherverwaltung einschließlich eines Computerprozessors geschaffen, der so programmiert ist, dass er gemäß den oben beschriebenen Verfahren arbeitet.
  • Gemäß einer weiteren Erscheinungsform der Erfindung ist ein Medium zum Speichern maschinenlesbarer Anweisungen gemäß den oben beschriebenen Verfahren geschaffen.
  • Nun werden Ausführungsformen der Erfindung, nur beispielhaft, unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • 1 zeigt eine typische Flashspeicherkarte;
  • 2 zeigt ein Blockdiagramm eines VLSI-Mikrocontrollers;
  • 3 zeigt ein Flussdiagramm für eine Flashspeichermanager-RAM-Cache-Routine;
  • 4 zeigt ein Flussdiagramm für eine Flashspeichermanager-Interrupthandlings-Routine; und
  • 5 zeigt eine schematische Darstellung einer Flashspeichermanager- Blockkopie-Vorgehensweise gemäß einer bevorzugten Ausführungsform der Erfindung.
  • In der im November 1995 veröffentlichten Application Note AP-604 ist der 4-MBit-Smart-Voltage-Boot-Block-Flashspeicher von Intel Corporation beschrieben. Eine Speicherkarte für den 4-MBit-Flashspeicher von Intel ist in der 1 dargestellt. Der 4-MBit-Flashspeicher 100 von Intel ist in Blöcke unterteilt, von denen jeder einen festen Adressenbereich aufweist. Blöcke 102, 104 und 106 sind 128 kByte-Blöcke, die sich zwischen den Adressen 00000H und 30000H erstrecken. Außerdem existiert ein 96-kByte-Block 108, der sich zwischen den Adressen 30000H und 3BFFFH erstreckt. Die Flashspeicherblöcke 102, 104, 106 und 108 bilden Hauptspeicherblöcke, und sie werden typischerweise dazu verwendet, Daten und Information zu speichern, die während des Gebrauchs des Flashspeichers 100 nicht geändert werden soll oder deren Änderung unwahrscheinlich ist. Derartige Daten oder Information können Anwendungssoftware oder ein Programm zum Betreiben eines Geräts sein, bei dem nur gelegentliche Softwareverbesserungen oder -aktualisierungen erforderlich sind. Der 4-MByte-Flashspeicher von Intel verfügt auch über zwei 8-kByte-Parameterblöcke 110 und 112. Der Parameterblock I, 110, erstreckt sich zwischen den Adressen 3C000H und 3CFFFH, und der Parameterblock II, 112, erstreckt sich zwischen den Adressen 3D000H und 3DFFFH. Der Parameterblock I und der Parameterblock II, 110 und 112, sind Flashspeicherblöcke, die zum Speichern von Daten verwendet werden, die während des Betriebs des Flashspeichers 100 typischerweise aktualisiert werden. Zum Beispiel können die Daten Parameter betreffend den Betrieb des elektronischen Geräts sein, in dem sich der Flashspeicher 100 befindet. Wenn dies z. B. ein tragbares Funktelefon ist, kann derartige Information die Einstellung der Benutzerschnittstelle, das persönliche Telefonverzeichnis des Benutzers oder irgendeinen anderen Parameter des Funktelefons betreffen, der sich während des Gebrauchs ändert und der bei abgeschalteter Spannung des Funktelefons aufrecht erhalten werden muss. Der letzte Speicherblock, ein Block 114, ist ein Codeblock, und dieser wird geeigneterweise zum Abspeichern von Software verwendet, die zum Initialisieren des Betriebssystems, z. B. eines elektronischen Geräts, benötigt wird, und um für die Erholung eines Systems beim katastrophalen Fehlschlagen eines Anwendungscodes sorgt. Zusätzlich speichert der Codeblock 114 typischerweise den Code, der zum Programmieren und Löschen des Flashspeichers erforderlich ist. Der Codeblock 114 wird häufig als Bootblock bezeichnet, und er belegt den höchsten Speicherbereich, die Adressen 3E000H bis 3FFFFH.
  • Gemeinsam wie andere Halbleiterspeicher speichert auch ein Flashspeicher Daten in Form elektronischer Signale. Die Daten werden als Binärinformation gespeichert, d. h., dass die Information oder die gespeicherten Daten entweder "1" oder "0" repräsentieren. Es ist ein Charakteristikum von Flashspeichern, dass es nur durch Ändern von Werten "1" in Werte in "0" möglich ist, Information in einen Flashspeicher einzuschreiben (oder einzuprogrammieren). Demgemäß wird ein Flashspeicher dadurch zur Schreibbereitschaft (oder Programmierbereitschaft) initialisiert, dass alle Speicherstellen mit Werten "1" gefüllt werden. Um einen Flashspeicher zu löschen, werden Werte "0" auf Werte "1" geändert. Außerdem ist es ein Charakteristikum von Flashspeichern, dass Löschprozesse auf blockweiser Basis ausgeführt werden. Gemäß der 1 soll ein Löschprozess oder -zyklus für einen der Blöcke 102 bis 114 erfolgen. Es ist nicht möglich, Information selektiv innerhalb eines Blocks zu löschen; es muss die gesamte Information in diesem Block gelöscht werden. Durch einen Blocklöschvorgang wird nur Information in dem einen Block gelöscht; alle anderen Blöcke bleiben unbeeinflusst. Ein Löschzyklus ist typischerweise als Löschvorgang gefolgt von einem Schreib- oder Programmiervorgang, oder umgekehrt, definiert. Das Lesen aus einem Flashspeicher erfolgt auf relativ herkömmliche Weise dadurch, dass als Erstes die Stelle adressiert wird, aus der Daten gelesen werden sollen, und dann die Daten gelesen werden. Es handelt sich um ein Merkmal des 4-MByte-Smart-Voltage-Boot-Block-Flashspeichers von Intel, dass er nur für ein Funktionieren über 100.000 Löschzyklen spezifiziert ist, wenn er innerhalb eines Standardtemperaturbereichs mit einer Spannungsversorgung von 5 Volt arbeitet, und nur für 10.000 Zyklen in einem erweiterten Temperaturbereich. Diese Obergrenze der spezifizierten Anzahl von Zyklen kann eine Beschränkung zur Nutzung derartiger Flashspeicher-Bauteile bei einigen Arten elektronischer Geräte sein.
  • Es wird nun auf die 2 Bezug genommen, in der ein Blockdiagramm eines Mikrocontrollers 200 mit einer Anzahl integrierter on-Board-Funktionseinheiten dargestellt ist. Der Mikrocontroller 200 verfügt über eine CPU 202, einen Flashspeicher 204, einen Direktzugriffsspeicher (RAM) 206, Eingangs/ Ausgangs-Treiber 208 und einen digitalen Signalprozessor (DSP) 210. Die CPU 202 kann eine herkömmliche Prozessoreinheit mit normalen Funktionen sein, wie sie derartigen Prozessoren zugewiesen sind, und die mit anderen Funktionseinheiten innerhalb des Mikrocontrollers 200 zusammenarbeitet und mit Signalen arbeitet, wie sie dem Mikrocontroller 200 vom elektronischen Gerät zugeführt werden, dem er zugeordnet ist. Der Eingangs/Ausgangs-Treiber 208 handhabt die Übertragung von Daten zwischen einzelnen Funktionseinheiten auf der Platine des Mikrocontrollers 200, und er handhabt auch den Datenfluss zwischen den Einheiten des Mikrocontrollers 200 und dem externen elektronischen Gerät. Einhergehend mit der immer größeren Integration ist es nicht unüblich, auf der Platine eines Mikrocontrollers ausgeklügelte Funktionseinheiten zu finden, wie den DSP 210, der geeignet dazu programmiert ist, Vocoderfunktionen, z. B. in einem Funktelefon, auszuführen. Typischerweise verfügt der Mikrocontroller 200 auf seiner Platine auch über verschiedene Speichertypen. Der Flashspeicher 204 bildet eine nichtflüchtige Speichereinrichtung, und er wird häufig als Ersatz für einen EEPROM verwendet und emuliert einen solchen, und der RAM 206 bildet eine flüchtige Speichereinrichtung, und er ist im Allgemeinen dazu vorhanden, seine normale Funktion auszuüben wie als Notizblockspeicher oder zur Verwendung in Zusammenhang mit irgendeiner in der CPU laufenden Software.
  • Der Flashspeicher 204 speichert im Speicherblock 114 typischerweise Anweisungen für die CPU 202 zum Ausführen von Schreib- und Löschvorgängen betreffend den Flashspeicher 204. Da jedoch aus dem Flashspeicher nicht von einer Adressenstelle gelesen werden kann, während in eine andere Adressenstelle innerhalb desselben Bauteils geschrieben wird, muss jede Anweisung, die einen Schreibvorgang in eine Flashspeicherstelle beinhaltet, zunächst im RAM 206 zwischengespeichert werden, damit der Code zum Ausführen des Schreibprozesses ausgeführt werden kann. Da der Löschprozess ein Prozess zum Ändern von Werten "0" in Werte "1" ist, d. h. eine Art eines "Schreibvorgangs", müssen auch Anweisungen für den Löschzyklus vorübergehend in den RAM heruntergeladen werden, bevor der Löschzyklus beginnt.
  • Gemäß einer bevorzugten Ausführungsform der Erfindung verfügt der RAM 206 über einen 8-kByte-Block, der nachfolgend als 8 K-RAM-Cache bezeichnet wird, zur Zwischenspeicherung von Parametern oder Variablen, die in einem der Flashspeicher-Parameterblöcke 110, 112 zu speichern sind. Die CPU 202 wird entsprechend einem Satz von maschinenlesbaren Anweisungen, die als Flashspeichermanager (FMM) bekannt sind, in einen gewünschten Zustand gebracht, um eine Maßnahme zur effizienten Nutzung des Flashspeichers zu bilden. Ein Satz maschinenlesbarer Anweisungen, der als FMM-RAM-Cache-Routine bekannt ist, ist vorhanden, um die Einspeicherung von Parametern in und zwischen dem RAM-Cache 121 und den Parameterblöcken 110 und 112 zu steuern. Typischerweise sind FMM-Anweisungen wie Anweisungen der FMM-RAM-Cache-Routine in den Hauptspeicherblöcken 102 bis 108 des Flashspeichers 200 abgespeichert, und sie können in den RAM 206 heruntergeladen werden, wenn diese FMM-Anweisungen das Schreiben oder Löschen eines Flashspeicherblocks bein halten sollen, insbesondere des einen oder anderen der Parameterblöcke 110, 112.
  • Es wird nun auf die 3 Bezug genommen, in der ein Flussdiagramm 300 für den Betrieb einer CPU 202 dargestellt ist, die entsprechend Anweisungen der FMM-RAM-Cache-Routine in einen gewünschten Zustand gebracht ist. Wenn ein im aktuell aktiven Flashparameterblock, z. B. 110, des Flashspeichers 100 abgespeicherter Parameter zu ändern, abzuändern oder zu aktualisieren ist, tritt der FMM 300 in einen Zustand 302 ein, in dem ein im RAM-Cache 212 gespeicherter entsprechender Parameter mit dem neuen Parameterwert aktualisiert wird. Dann geht der FMM 300 in einen Zustand 304 über, in dem ermittelt wird, ob während des Einschreibens in den aktuell aktiven Flashparameterblock 110 eine Aktualisierung des RAM-Caches 212 erfolgte oder nicht. Wenn eine Aktualisierung des RAM-Caches während eines Flash-Schreibvorgangs auftrat, tritt der FMM 300 in einen Zustand 306 ein, in dem der Inhalt des RAM-Caches 212 in den aktuell aktiven Flashparameterblock 110 eingeschrieben wird, um den RAM-Cache 212 in den aktuell aktiven Flashparameterblock 110 zu aktualisieren. Dies erfolgt wegen irgendwelcher Fehlübereinstimmungen zwischen im RAM-Cache 212 und im aktuell aktiven Flashparameterblock 110 abgespeicherten Parameterwerten wegen eines Schreibvorgangs in den RAM-Cache 212 während eines Flash-Schreibvorgangs, was dazu geführt haben kann, dass der aktuell aktive Flashparameterblock 110 dann teilweise alte Daten und teilweise neue Daten enthält, die in ihm abgespeichert sind. Wenn sich im Zustand 304 NEIN ergibt, tritt der FMM 300 in einen Zustand 308 ein, in dem die Priorität der aktuell im RAM aktualisierten Parameter ermittelt wird. Es sei darauf hingewiesen, dass gemäß der Erfindung die Parameter abhängig von ihrer Bedeutung für den Betrieb des elektronischen Geräts, in dem sich der Flashspeicher oder Mikrocontroller befindet, entweder als "dringende" oder "träge" Parameter spezifiziert sind. Welche Parameter "dringend" und welche "träge" sind, und wie derartige Prioritäten unter den verschiedenen Parametern für das elektronische Gerät verteilt sind, ist für die vorliegende Erfindung nicht relevant. Es ist lediglich erforderlich zu beachten, dass Parameter mit diesen jeweiligen zwei Prioritätsniveaus im System existieren und hinsichtlich derartiger Prioritäten erkannt werden können. Selbstverständlich können in jedem beliebigen System mehr als zwei Prioritätsniveaus vorhanden sein, und der FMM 300 kann geeignet abgeändert werden, um anderen Prioritätsniveaus zu genügen. Wenn der aktuelle Parameter über die Priorität "träge" verfügt, gelangt der FMM 300 in einen Zustand 310, und wenn der aktuelle Parameter über die Priorität "dringend" verfügt, gelangt der FMM 300 in einen Zustand 312. Wenn während des Zu stands 310 mehr als fünf "träge" Parameter seit der letzten Flashsicherung in den RAM-Cache 212 eingeschrieben wurden, oder wenn mehr als eine Minute verstrichen ist, seit der letzte "träge" Parameter in den RAM-Cache 212 eingeschrieben wurde und keine dazwischen liegenden Flashsicherungsvorgänge vorlagen, gelangt der FMM 300 in einen Zustand 306, in dem in den aktuell aktiven Flashparameterblock 110 der Inhalt des RAM-Caches 212 eingeschrieben wird, um den RAM-Cache 212 zu sichern. Wenn sich im Zustand 310 NEIN ergibt, gelangt der FMM 300 in einen Zustand 302, in dem er darauf wartet, dass der nächste Parameter für den RAM-Cache 212 zu aktualisieren ist. Wenn im Zustand 312 mehr als ein dringender Parameter seit der letzten Flashsicherung in den RAM-Cache 212 eingeschrieben wurde oder wenn zwei Sekunden verstrichen sind, seit der letzte dringende Parameter in den RAM-Cache 212 eingeschrieben wurde, und wenn dazwischen kein Sicherungsvorgang für den Flash vorliegt, gelangt der FMM 300 in einen Zustand 306, in dem der Inhalt des RAM-Caches 212 in den aktuell aktiven Flashspeicher-Parameterblock 110 gesichert wird. Wenn sich im Zustand 312 NEIN ergibt, gelangt der FMM 300 in den Zustand 302, in dem der Prozess darauf wartet, dass der nächste Parameter für den RAM-Cache 212 zu aktualisieren ist.
  • Der Fachmann erkennt, dass die Kriterien in den jeweiligen Zuständen 310 und 312 nicht so sein müssen, wie es speziell beschrieben wurde, sondern dass sie variiert werden können, um die Art und die Priorität der Parameter für jedes spezielle elektronische Gerät zu berücksichtigen.
  • Wie es aus dem Flussdiagramm der 3 deutlich ist, verfügt der FMM 300 über Zustände, die ein Einschreiben in den aktiven Flashspeicher-Parameterblock 110 erfordern, und Zustände, die kein solches Einschreiben erfordern. Demgemäß ist es möglich, dass nicht alle Anweisungen betreffend den FMM 300 vom Flashspeicher in den RAM 206 heruntergeladen werden müssen, wenn die CPU 202 in einen solchen gewünschten Zustand zu bringen ist, dass sie gemäß dem FMM 300 arbeitet, sondern nur ein Teil der Anweisungen des FMM 300, die einen "Schreibvorgang" in den Flashspeicher-Parameterblock 110 auslösen.
  • Da ein Flashspeicher nicht individuell gelöscht werden kann, wird jede folgende Absicherung mit dem Inhalt des RAM-Caches 212 in die nächste verfügbare Adresse innerhalb des aktiven Flashspeicher-Parameterblocks 110 eingeschrieben. Zu diesem Zweck ist eine Datenstruktur einer verketteten Liste, wie oben beschrieben, besonders geeignet. Schließlich wird der aktuell aktive Flashspeicher-Parameterblock 110 voll. Dann werden die aktuellsten Datenwerte für die im aktuell aktiven Flashspeicher-Parameter block 110 abgespeicherten Parameter in den zweiten Flashspeicher-Parameterspeicherblock 112 eingeschrieben. Nun wird der zweite Flashspeicher-Parameterblock der aktuell aktive Parameterblock, und der Inhalt des RAM-Caches 212 wird nun unter Steuerung durch den FMM 300 in den neuen aktuell aktiven Parameterblock 112 aktualisiert. Zu einem geschickten Zeitpunkt innerhalb des Betriebs des elektronischen Geräts wird der ursprünglich aktive Parameterblock 110 gelöscht, d. h., alle Speicherstellen werden mit dem Wert "1" gefüllt und dazu bereit gemacht, aktualisierte Parameterwerte zu empfangen, wenn der aktuell aktive Parameterblock 212 voll wird.
  • Der durch eine FMM-RAM-Cache-Routine verwaltete Flashspeicher kann effektiv länger genutzt werden, da er nicht notwendigerweise mit jeder Änderung eines Parameterwerts aktualisiert wird, sondern nur dann, wenn eine bestimmte Anzahl von Parameteraktualisierungen vorliegt oder wenn der Parameter ausreichend wichtig ist, um sofort im Flashspeicher gesichert zu werden. So sind mehr Parameteraktualisierungen möglich, als sie bei einem herkömmlich verwalteten Flashspeicher verfügbar wären.
  • Während des Betriebs eines elektronischen Geräts, das durch eine zentrale Prozessoreinheit wie die CPU 202 gesteuert wird, muss Information von Speichern wie dem Flashspeicher 204 und dem RAM 206 gelesen werden. Jedoch ist es, wie oben beschrieben, nicht möglich, während eines Schreibvorgangs aus dem Flashspeicher 204 zu lesen oder einen Block desselben zu löschen. Demgemäß wird, wenn während eines Schreib-oder Löschvorgangs eine Anforderung durch die CPU auftritt, Daten aus dem Flashspeicher 204 zu lesen, diese Anforderung zurückgewiesen. Derartige Anforderungen werden nachfolgend als Interrupts bezeichnet.
  • Abhängig vom Typ des elektronischen Geräts und seinem Zustand arbeitet dasselbe nicht mehr korrekt, wenn Interrupts oder zumindest bestimmte Interrupttypen nicht prompt bedient werden. Bei einem Löschvorgang kann die Verzögerung für einen 8 K-Block bis zu zwei Sekunden betragen, was typischerweise eine viel zu große Verzögerung vor der Bedienung eines Interrupts ist.
  • Es wird nun auf die 4 Bezug genommen, in der ein Flussdiagramm für eine Flashspeichermanager(FMM)-Interrupthandler-Routine 400 dargestellt ist. Wenn ein Interrupt auftritt, der Zugriff auf den Flashspeicher 204 erfordert, wird der FMM-Interrupthandler 400 aufgerufen. Der FMM-Interrupthandler ermittelt in einem Zustand 402, ob der Flashspeicher 204 aktuell einem Schreib- oder Löschvorgang unterliegt. Wenn kein derartiger Vorgang abläuft, wird in einen Zustand 404 eingetreten, in dem die Interrupthandler-Standardroutine des Systems ausgelöst wird. Interrupthandling-Standardroutinen sind dem Fachmann gut bekannt, und es ist keine detaillierte Beschreibung derselben erforderlich. Der Standard-Interrupthandler bedient die Interruptanforderung auf herkömmliche Weise, wobei er Lesevorgänge von allen erforderlichen Datenstellen ausführt. Wenn ein Schreib- oder Löschvorgang abläuft, gelangt der FMM-Interrupthandler 400 in einen Zustand 406, wenn ein "Kurz"-Schreibvorgang in den Flashspeicher 204 abläuft, und es erfolgt ein Eintritt in einen Zustand 408, wenn ein "Lang"-Schreibvorgang, d. h. ein Wortschreibvorgang, abläuft, und es wird in einen Zustand 410 eingetreten, wenn ein Löschvorgang abläuft.
  • Für einen Kurz-Schreibvorgang in den Flashspeicher 204, Zustand 406, tritt der Interrupthandler 400 in einen Zustand 412 ein, in dem der Interrupt deaktiviert wird. Wenn der "Kurz"-Schreibvorgang abgeschlossen wird, tritt der Interrupthandler 400 in einen Zustand 414 ein, in dem der Blocklesemodus für den Flashspeicher 204 aktiviert wird. Dann tritt der Interrupthandler in einen Zustand 404 ein, in dem der Standard-Interrupthandler aufgerufen wird. Die Maximaldauer dafür, dass ein Schreibvorgang als "Kurz"-Schreibvorgang klassifiziert wird, hängt typischerweise von der Art des durch die CPU 202 und die auf ihr laufenden Anweisungen im elektronischen Gerät ab, und sie kann vom Fachmann geeignet bestimmt werden. Im Allgemeinen kann ein Schreibvorgang von weniger als sechs Maschinenzyklen oder von einer Anweisung als "Kurz"-Schreibvorgang angesehen werden.
  • Wenn ein "Lang"-Schreibvorgang, d. h. ein solcher, der viele "Wörter" umfasst, abläuft, gelangt der Interrupthandler 400 in einen Zustand 408, und er ermittelt, ob aktuell ein Wort (typischerweise 8 oder 16 Bits) in den Flashspeicher 204 eingeschrieben wird. Falls nicht, geht der Interrupthandler 400 in einen Zustand 414 über, in dem für den Flashspeicher 204 in den Blocklesemodus eingetreten wird, und dann wird in einen Zustand 404 eingetreten, in dem der Standard-Interrupthandler aufgerufen wird. Wenn aktuell ein Wort in den Flashspeicher 204 eingeschrieben wird, wird in einen Zustand 412 eingetreten, und der Interrupt wird bis zum Zeitpunkt deaktiviert, zu dem der Wortschreibvorgang endet. Dann wird in den Zustand 414 eingetreten, und der Blocklesemodus wird aktiviert, und im Zustand 404 wird der Standard-Interrupthandler aufgerufen. Wahlweise können zwischen Wortschreibvorgängen Interrupts aktiviert werden, da zwischen Wortschreibvorgängen typischerweise eine Pause besteht, um das neue Wort in einem Daten puffer zu platzieren oder die Schreibadresse für das neue Wort zu laden. Demgemäß kann, wenn während einer derartigen Aktivierungsperiode ein Interrupt auftritt, der FMM-Interrupthandler den Flashspeicher 204 in einen Lesemodus versetzen, damit der Interrupt bedient werden kann. Der FMM-Interrupthandler kann ermitteln, wenn ein "Lang"-Schreibvorgang zwischen Wortschreibvorgängen vorliegt und dann den Flashspeicher 204 in den Lesemodus versetzen; oder er kann erkennen, wann wahrscheinlich ein "Lang"-Schreibvorgang zwischen Wortschreibvorgängen auftritt.
  • Wenn der FMM-Interrupthandler 400 in den Zustand 410 eintritt, wobei ein ablaufender Löschvorgang erkannt wurde, wird der Löschprozess angehalten, und es wird der Blocklesemodus aktiviert, Zustand 414. Im Zustand 404 wird der Standard-Interrupthandler aufgerufen.
  • Ausgehend vom Zustand 404 tritt der FMM-Interrupthandler 400 in einen Zustand 416 ein, der eine Fortsetzung des Betriebs ist, der vor dem Aufruf des Interrupthandlers ausgeführt wurde. Wenn z. B. ein Löschvorgang ablief, wird dieser im Zustand 416 ab dort fortgeführt, wo er zum Bedienen des Interrupts angehalten wurde. In ähnlicher Weise wird, wenn ein "Lang"-Schreibvorgang ablief und unterbrochen wurde, der nächste Schreibvorgang im Zustand 416 ausgeführt.
  • Der FMM-Interrupthandler 400 kann im Flashspeicher 204 gespeichert sein, jedoch wird er zeitweilig an den RAM 206 übertragen, wenn ein Lösch- oder Schreibvorgang auszuführen ist. Wahlweise wird der Interrupthandler 400 vorzugsweise im RAM 206 abgespeichert. Unabhängig davon, ob er nur zeitweilig oder vorzugsweise im RAM abgespeichert ist, müssen Interruptanforderungen eine Vektorabbildung auf die RAM-Adresse erfahren, die den FMM-Interrupthandler 400 enthält.
  • Wie bereits beschrieben, verfügt ein Flashspeicher 204 über eine endliche Anzahl von Löschzyklen, die ausgeführt werden können, bevor eine Beeinträchtigung seines Funktionsvermögens auftritt. Der Flashspeichermanager stellt der CPU 202 einen Satz maschinenlesbarer Anweisungen, die als FMM-Blockwiederverwendungs-Vorgehensweise bekannt sind, bereit, um eine Maßnahme zur gleichmäßigen Wiederverwendung von Flashspeicherblöcken zu bilden, so dass alle Blöcke näherungsweise dieselbe Abnutzung für jeden Block erfahren.
  • Es wird nun auf die 5 Bezug genommen, in der schematisch eine Darstel lung einer FMM-Blockwiederverwendungs-Vorgehensweise gemäß einer bevorzugten Ausführungsform der Erfindung dargestellt ist. Die CPU 202 kann in einen derartigen gewünschten Zustand gebracht sein, dass sie gemäß dieser FMM-Blockwiederverwendungs-Vorgehensweise arbeitet. Zur Blockwiederverwendungs-Vorgehensweise gehört ein Satz von Unterroutinen, die als erase_count 502, erase_initiate 504, copy_initiate 506, copy_from 508, copy_to 510 und copy_for_wear_levelling 512 bezeichnet sind.
  • Die Unterroutine erase_count 502 verfolgt, wie oft ein Block gelöscht wurde. Die Anzahl der Blocklöschvorgänge ist als Blockabnutzungs-Zählwert bekannt. Bei der ersten Benutzung des Flashspeichers wird der Blockabnutzungs-Zählwert auf 0 initialisiert. D. h., beim ersten Ablaufen des Flashspeichermanagers im elektronischen Gerät, in dem sich der Flashspeicher 204 befindet. Für jeden Block des Flashspeichers existiert ein Blockabnutzungs-Zählwert, der jedesmal dann inkrementiert wird, wenn der entsprechende Block gelöscht wird. Im Allgemeinen wird ein Block gelöscht, damit ein anderer Block in ihn kopiert werden kann. Demgemäß kann der Blockabnutzungs-Zählwert für den Block, der gelöscht wird, in den Block eingespeichert werden, von dem die Kopie zu erstellen ist, während der Block, in dem die Kopie zu erstellen ist, gelöscht wird.
  • Die Unterroutine erase_initiate 504 steuert die Operation von Löschprozessen innerhalb des Flashspeichers 204. Typischerweise werden löschbare Blöcke gelöscht, so dass der Löschvorgang nur dann einen Interrupt erfährt, wenn der Flashspeichermanager einen derartigen Interrupt benötigt, weil er Interruptanforderungen von der CPU 202 bedienen muss.
  • Die Auslösung eines Kopiervorgangs wird durch maschinenlesbare Anweisungen gemäß der Unterroutine copy_initiate 506 gesteuert. Die Kriterien zum Starten eines Blockkopiervorgangs von einem nahezu vollen Block in einen ungenutzten Block sind die folgenden: – mindestens ein Block ist über 80% gefüllt und enthält mindestens 20% vergeudeten Raum UND – es ist ein freier Block derselben Größe verfügbar.
  • Andere Bedingungen oder Kriterien können vom Fachmann bestimmt werden, um die Unterroutine copy_initiate 506 an ein spezielles elektronisches Gerät oder eine Mikrocontroller/Befehlssatz-Architektur anzupassen.
  • Wenn die Bedingungen zum Erfüllen der Kriterien in der Unterroutine copy_initiate 506 erfüllt sind, werden die Unterroutine copy_from 508 und die Unterroutine copy_to 510 aufgerufen. Die Unterroutine 508 copy_from sorgt dafür, dass der Inhalt des Blocks mit dem größten vergeudeten Raum herauskopiert wird. Typischerweise existiert, wenn die Unterroutine copy_from 508 aufgerufen wird, normalerweise mehr als ein Kandidatenblock, aus dem zu kopieren ist. Wenn z. B. acht 8 K-Byte-Blöcke existieren, von denen sechs Blöcke voll sind, gilt:
    • – einer verfügt über 90% vergeudeten Raum mit einem Blockabnutzungs-Zählwert von dreißig;
    • – einer verfügt über 80% vergeudeten Raum mit einem Blockabnutzungs-Zählwert von zwanzig;
    • – einer verfügt über 50% vergeudeten Raum mit einem Blockabnutzungs-Zählwert von neun;
    • – einer verfügt über 45% vergeudeten Raum mit einem Blockabnutzungs-Zählwert von drei;
    • – und der letzte verfügt über 10% vergeudeten Raum. Einer der Blöcke wird gerade gelöscht und der letzte Block wurde gelöscht.
  • Gemäß den Kriterien in der Unterroutine copy_from 508 ist der Kandidat, für den Kopien zu erstellen sind, derjenige mit einem vergeudeten Raum von 90%. Jedoch weist dieser Block den höchsten Blockabnutzungs-Zählwert auf. Es besteht die Wahlmöglichkeit, zwischen dem Blockabnutzungs-Zählwert und dem Vergeudungsprozentsatz einen Kompromiss zu schließen. Zum Beispiel ergibt sich eine bessere Nutzung von Speicherressourcen und eine verlängerte Zeit bis zum nächsten Blockkopiervorgang, je höher der Vergeudungsprozentsatz ist, und zwar aufgrund des größten freigesetzten Raums. Wenn der Block mit dem größten vergeudeten Raum nicht gewählt wird, ist die Folge diejenige, dass der nächste Kopiervorgang früher auftritt und demgemäß ein Blockkopiererfordernis früher auftritt und es damit zu früherer Abnutzung kommt. Es ist zu beachten, dass der Begriff "vergeudeter Raum" Speicherstellen betrifft, die Parameterwerte speichern, die so aktualisiert wurden, dass sich der aktualisierte Wert an einer anderen Speicherstelle befindet. Da jeder Flashblock 100.000 Mal gelöscht und umgeschrieben werden kann, ist der Blockabnutzungs-Zählwert ein geringer Faktor bei der Entscheidung dahingehend, aus welchem Block kopiert werden sollte. Demgemäß ignoriert die Unterroutine copy_from 508 bei der speziellen Ausführungsform den Blockabnutzungs-Zählwert, und sie nutzt das einfache Kriterium, dass der zu kopierende Block derjenige mit dem größten vergeudeten Raum ist. D. h., dass es der Fachmann nicht wünscht, einen Kompromiss zwischen dem Blockabnutzungs-Zählwert und dem Prozentsatz an vergeudetem Raum zu verwenden, um die Nut zung eines Flashspeichers innerhalb einer speziellen Umgebung zu optimieren.
  • Wenn die Vorgehensweise copy_to 510 aufgerufen wird, existiert typischerweise mehr als ein Kandidatenspeicherblock, in den zu kopieren ist. Wenn z. B. acht 8 K-Byte-Blöcke vorliegen, von denen vier voll sind, von denen einer Daten enthält, die bereits in einen anderen Block kopiert wurden und einer gerade gelöscht ist und zwei gelöscht wurden, stehen nur zwei Blöcke zur unmittelbaren Nutzung zur Verfügung. D. h., die zwei Speicherblöcke, die bereits gelöscht wurden. Jeder dieser zwei Blöcke weist einen Blockabnutzungs-Zählwert auf. Das Kriterium für die Unterroutine copy_to 510 ist dasjenige, dass der erste Block, in den kopiert wird, der Block mit dem niedrigsten Blockabnutzungs-Zählwert ist.
  • Bei bestimmten Anwendungstypen ist es möglich, dass einige Flashspeicherblöcke nie oder selten gelöscht werden. Zum Beispiel kann eine Anwendung zwei lange Datensätze in einen Speicherblock einspeichern und sie nie entfernen oder umschreiben. In einer derartigen Situation würde dieser spezielle Block nie abgenutzt werden, wohingegen die anderen Blöcke im Flashspeicher abgenutzt würden. Die Unterroutine copy_for_wear_levelling_only 512 ist so beschaffen, dass sie alle Hauptdiskrepanzen zwischen den Abnutzungswerten von Blöcken innerhalb des Flashspeichers erkennt und einen Blockkopiervorgang von einem relativ unabgenutzten Block in den am meisten abgenutzten Block und umgekehrt erzwingt. Auf diese Weise wird ein wenig abgenutzter Block stark benutzt, und die Abnutzung des stark abgenutzten Blocks wird wesentlich verringert. Der erzwungene Kopiervorgang tritt dann auf, wenn die Differenz zwischen dem Abnutzungsgrad im am wenigsten genutzten Block und dem Abnutzungsgrad im am stärksten genutzten Block einen vorbestimmten Wert überschreitet. Dieser Wert hängt von den den Flashspeicher nutzenden Anwendungen ab, liegt jedoch typischerweise im Bereich von 1–40%. Modifizierungen an diesem Bereich können abhängig von der Schreib/Lösch-Häufigkeit für den Flashspeicher in solcher Weise erfolgen, dass eine hohe Schreib/Lösch-Nutzung dafür sorgt, dass der erzwungene Kopiervorgang häufiger auftritt. Außerdem tritt der erzwungene Kopiervorgang häufiger auf, wenn der Blockabnutzungs-Zählwert für Blöcke zunimmt. Der erzwungene Kopiervorgang kann einstellbar sein, um die vorstehenden Kriterien zu berücksichtigen, sogar auf Blockbasis.
  • Aus der vorstehenden Beschreibung ist es für den Fachmann erkennbar, dass innerhalb des Schutzumfangs der Erfindung verschiedene Modifizierungen vorgenommen werden können, und z. B. können, wie bereits angegeben, mehr als zwei Prioritätsniveaus für Parameter vorhanden sein, und die Kriterien zum Ermitteln, ob der RAM-Cache 212 in den Flashspeicher 100 zu sichern ist, können so beschaffen werden, dass sie zum elektronischen Gerät passen, in dem sich der Mikrocontroller 200 und der Flashspeicher 100 befinden. Zum Beispiel kann im FMM 300 ein weiterer Zustand vorhanden sein, der das Auslösen des Abschaltens eines tragbaren elektronischen Geräts erfasst und vor dem Abschalten der Spannung den RAM-Cache 212 in den aktuell aktiven Flashspeicher-Parameterblock sichert. Zusätzlich können die in Zusammenhang mit dem Flussdiagramm der 5 beschriebenen Kriterien so angepasst werden, dass sie die Anpassung der Abnutzung im Flashspeicher optimieren. Ferner ist es für den Fachmann ersichtlich, dass dann, wenn Parameterdaten von einem Block in einen anderen Block abgespeichert werden, im anderen Block spätere Aktualisierungen dieser Daten erfolgen.

Claims (5)

  1. Speicherverwaltungsverfahren zum Verwalten eines ersten Speichers, der über Bereiche zum Speichern von Parameterdaten und ausführbare Codebefehle dieses ersten Speichers verfügt, gekennzeichnet durch die folgenden Schritte: – Übertragen, als Vorläufer eines Löschzyklus für den ersten Speicher, der ausführbaren Codeanweisungen in einen zweiten Speicher, der nicht der erste Speicher ist, um in diesem für die ausführbaren Codeanweisungen zu sorgen; – Steuern des Löschzyklus unter Verwendung der übertragenen ausführbaren Codeanweisungen aus dem zweiten Speicher; und – Ermitteln einer Anzahl benutzter Speicherstellen für einen ersten Speicherbereich des ersten Speichers über einem vorbestimmten Schwellenwert; – Identifizieren eines zweiten Speicherbereichs des ersten Speichers, der zum Speichern elektronischer Signale verfügbar ist; – Einspeichern elektronischer Signale in den zweiten Speicherbereich, die elektronischen Signalen entsprechen, die für im ersten Speicher abgespeicherte Parameterdaten repräsentativ sind, und Ausführen eines Löschzyklus für den ersten Speicherbereich, und Bestimmen eines dritten Speicherbereichs, der den größten vergeudeten Raum aufweist, aus mehreren ersten Speicherbereichen; – Einspeichern elektronischer Signale in den zweiten Speicherbereich, die im dritten Speicherbereich gespeicherten elektronischen Signalen entsprechen, und Ausführen eines Löschzyklus für den dritten Speicherbereich.
  2. Verfahren nach Anspruch 1, bei dem der zweite Speicherbereich der am wenigsten gelöschte Speicherbereich von Speicherbereichen ist, die zum Speichern elektronischer Signale verfügbar sind.
  3. Elektronisches Gerät zur Speicherverwaltung, mit einem Computerprozessor, der so programmiert ist, dass er gemäß dem Verfahren nach einem der vorstehenden Ansprüche arbeitet.
  4. Speichermedium zum Speichern maschinenlesbarer Anweisungen zum Ausführen des Verfahrens nach Anspruch 1 oder Anspruch 2 bei Ausführung in einem Computersystem.
  5. Computerprogramm auf einem Träger zum Ausführen des im Anspruch 1 oder Anspruch 2 definierten Verfahrens, wenn es in einem Computersystem ausgeführt wird.
DE69726088T 1996-09-30 1997-09-15 Methode und Apparat zur Speicherverwaltung Expired - Lifetime DE69726088T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9620370A GB2317720A (en) 1996-09-30 1996-09-30 Managing Flash memory
GB9620370 1996-09-30

Publications (2)

Publication Number Publication Date
DE69726088D1 DE69726088D1 (de) 2003-12-18
DE69726088T2 true DE69726088T2 (de) 2004-08-26

Family

ID=10800719

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69726088T Expired - Lifetime DE69726088T2 (de) 1996-09-30 1997-09-15 Methode und Apparat zur Speicherverwaltung

Country Status (5)

Country Link
US (1) US6092160A (de)
EP (1) EP0833251B1 (de)
JP (1) JPH10124401A (de)
DE (1) DE69726088T2 (de)
GB (1) GB2317720A (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69832609D1 (de) * 1998-09-30 2006-01-05 St Microelectronics Srl Emulierte EEPROM Speicheranordnung und entsprechendes Verfahren
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
DE19904573C2 (de) * 1999-02-04 2000-12-28 Siemens Ag Vorrichtung und Verfahren zum Speichern von Telefoneinträgen
JP2001025053A (ja) * 1999-07-09 2001-01-26 Mitsubishi Electric Corp 携帯電話のメモリシステム
US6188602B1 (en) * 2000-01-25 2001-02-13 Dell Usa, L.P. Mechanism to commit data to a memory device with read-only access
EP1281123A1 (de) * 2000-05-04 2003-02-05 Koninklijke Philips Electronics N.V. Verfahren, -system und -computerprogramm zur datenverwaltung auf einem speichermedium
US6704835B1 (en) 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
US6829667B2 (en) * 2001-09-14 2004-12-07 Intel Corporation Method and system for improved processing of CPU intensive communications protocols by disabling per frame interrupts for an interrupt period
EP1313020A1 (de) 2001-11-19 2003-05-21 EM Microelectronic-Marin SA Integrierte Schaltungsarchitektur für smart-card und Speicherzuordnungsverfahren
US7013384B2 (en) * 2002-01-15 2006-03-14 Lenovo (Singapore) Pte. Ltd. Computer system with selectively available immutable boot block code
JP4179945B2 (ja) * 2003-08-08 2008-11-12 サンデン株式会社 自動販売機の端末制御装置
US7089349B2 (en) * 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
US7216244B2 (en) * 2004-02-25 2007-05-08 Hitachi, Ltd. Data storage system with redundant storage media and method therefor
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
DE102004037785A1 (de) * 2004-08-03 2006-03-16 Endress + Hauser Gmbh + Co. Kg Feldgerät für die Automatisierungstechnik
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
DE602005014278D1 (de) 2004-12-27 2009-06-10 Research In Motion Ltd Verfahren und einrichtung zum schreiben von daten in einem drahtlosen kommunikationsendgerät zwischen flüchtigen und nichtflüchtigen speichern
US7363421B2 (en) * 2005-01-13 2008-04-22 Stmicroelectronics S.R.L. Optimizing write/erase operations in memory devices
WO2006110978A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited Method and system for centralized memory management in wireless terminal devices
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
EP1857631A1 (de) 2006-05-19 2007-11-21 Services Pétroliers Schlumberger Vorrichtung zur Richtungskontrolle beim Bohren
JP5134255B2 (ja) * 2007-01-30 2013-01-30 富士通株式会社 データ記録システム
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US10141314B2 (en) * 2011-05-04 2018-11-27 Micron Technology, Inc. Memories and methods to provide configuration information to controllers
US10355001B2 (en) 2012-02-15 2019-07-16 Micron Technology, Inc. Memories and methods to provide configuration information to controllers
US8937845B2 (en) 2012-10-31 2015-01-20 Freescale Semiconductor, Inc. Memory device redundancy management system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
DE69033262T2 (de) * 1989-04-13 2000-02-24 Sandisk Corp EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
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
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
DE4215063C2 (de) * 1991-05-10 1999-11-25 Intel Corp Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher
FI89993C (fi) * 1991-05-31 1993-12-10 Nokia Mobile Phones Ltd Programmering av installationsdata i en mobiltelefon
EP0528280B1 (de) * 1991-08-09 1997-11-12 Kabushiki Kaisha Toshiba Aufzeichnungsgerät für eine Speicherkarte
US5309451A (en) * 1992-08-12 1994-05-03 Digital Equipment Corporation Data and parity prefetching for redundant arrays of disk drives
JP3641280B2 (ja) * 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5740395A (en) * 1992-10-30 1998-04-14 Intel Corporation Method and apparatus for cleaning up a solid state memory disk storing floating sector data
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5471518A (en) * 1993-08-10 1995-11-28 Novatel Communications Ltd. Method and apparatus for non-volatile data storage in radio telephones and the like
US5566314A (en) * 1993-08-30 1996-10-15 Lucent Technologies Inc. Flash memory device employing unused cell arrays to update files
AU1447295A (en) * 1993-12-30 1995-08-01 Connectix Corporation Virtual memory management system and method using data compression
GB2291990A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method

Also Published As

Publication number Publication date
EP0833251A1 (de) 1998-04-01
JPH10124401A (ja) 1998-05-15
GB9620370D0 (en) 1996-11-13
GB2317720A (en) 1998-04-01
US6092160A (en) 2000-07-18
EP0833251B1 (de) 2003-11-12
DE69726088D1 (de) 2003-12-18

Similar Documents

Publication Publication Date Title
DE69726088T2 (de) Methode und Apparat zur Speicherverwaltung
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE60317551T2 (de) Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem
DE69635962T2 (de) Flash-Speicher-Massenspeichersystem und Verfahren dafür
EP2923261B1 (de) VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE602004003583T2 (de) System und Verfahren zum Datensichern bei Stromausfall
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE69233228T2 (de) Datenverwaltungssystem für Halbleiterspeicher mit beschränkter Programmierung und I.C. Speicherkarte mit solchem Datenverwaltungssystem
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren
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
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE102006003261A1 (de) Speichersystem und Verfahren zur Datenzusammenführung
DE112010004667T5 (de) Speichervorrichtung und Speichersteuerung
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE102020102781A1 (de) Auswahl von massenspeicherungsvorrichtungs-streams zur speicherbereinigung auf der basis lokaler sättigung
DE60132229T2 (de) Speichervorrichtung, speichersteuerverfahren und programm
DE102017124188A1 (de) Verfahren und Vorrichtung zum Steuern eines Speichersystems zum Zwecke eines sicheren Herunterfahrens eines flüchtigen Speichers eines Hosts

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BECKER, KURIG, STRAUS, 80336 MUENCHEN