[go: up one dir, main page]

DE69710665T2 - Methode und Apparat zur Speicherverwaltung - Google Patents

Methode und Apparat zur Speicherverwaltung

Info

Publication number
DE69710665T2
DE69710665T2 DE69710665T DE69710665T DE69710665T2 DE 69710665 T2 DE69710665 T2 DE 69710665T2 DE 69710665 T DE69710665 T DE 69710665T DE 69710665 T DE69710665 T DE 69710665T DE 69710665 T2 DE69710665 T2 DE 69710665T2
Authority
DE
Germany
Prior art keywords
volatile storage
storage means
electronic signals
parameter data
block
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
DE69710665T
Other languages
English (en)
Other versions
DE69710665D1 (de
Inventor
Andrew Blake
Leslie Innes Bothwell
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
Nokia Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Oyj, Nokia Inc filed Critical Nokia Oyj
Publication of DE69710665D1 publication Critical patent/DE69710665D1/de
Application granted granted Critical
Publication of DE69710665T2 publication Critical patent/DE69710665T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/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
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Die vorliegende Erfindung betrifft eine Speichervorrichtung sowie ein Verfahren für ihren Betrieb. Sie betrifft insbesondere, jedoch nicht ausschließlich, eine als Flash-Speicher bekannte Speichervorrichtung.
  • Halbleiter- oder Festkörper-Speichervorrichtungen enthalten elektrische Signale oder Ladungen, die so angeordnet sind, daß sie eine Darstellung der Daten sind, die in der Speichervorrichtung gespeichert werden sollen. Speichervorrichtungen, die eine Leistung benötigen, die ihnen zugeführt werden muß, damit die elektrischen Signale aufrechterhalten werden können, was manchmal als Auffrischen bezeichnet wird, sind als flüchtige Speicher bekannt. Speichervorrichtungen, die keine Leistung benötigen, um die elektrischen Signale aufrechtzuerhalten, sind als nichtflüchtige Speicher bekannt. Ein früher Typ des nichtflüchtigen Speichers ist als Nur- Lese-Speicher (ROM) bekannt, bei dem die elektrischen Signale oder Ladungen, die eine Darstellung der Daten sind, zum Zeitpunkt der Herstellung des ROM erzeugt werden, wobei die Daten, die durch die elektrischen Signale dargestellt werden, später wieder gelesen werden, wenn die Vorrichtung in Betrieb ist. Die Möglichkeit für einen Benutzer, einen ROM zu programmieren und Daten, die in der Vorrichtung gespeichert sind, elektrisch zu löschen und durch andere Daten zu ersetzen, ist bei elektrisch löschbaren programmierbaren Nur-Lese-Speichern (EEPROMs) gegeben.
  • Das Programmieren von EEPROMs ist relativ langsam, da die Eingabe/Ausgabe von Daten und die Adressierung in einem seriellen Format erfolgt. Außerdem werden beim Programmieren des EEPROM spezielle "hohe" Spannungen benötigt. EEPROMs sind jedoch in tragbaren elektronischen Geräten besonders nützlich, wenn Benutzer- oder Systemparameter während des Gebrauchs des tragbaren Geräts geändert werden und dann, wenn das Gerät abgeschaltet wird, für eine zukünftige Verwendung beim nächsten Betreiben des Geräts gespeichert werden müssen. Ein solches tragbares Gerät kann beispielsweise ein Funktelephon sein, bei dem die Parameter z. B. den Anruf-Zähler/Taktgeber, die Tabelle der letzen Anrufe, Benutzereinstellungen für die Benutzerschnittstelle sowie Benutzername und Nummernspeicher enthalten. Diese Verwendung kann als Anwendungstyp "einmaliges Schreiben/mehrmaliges Lesen" bezeichnet werden, wobei die relative Trägheit während des Gebrauchs und der hohe Energieverbrauch beim Neuprogrammieren nicht gegen die Verwendung der EEPROMs für tragbare batteriebetriebene Geräte spricht.
  • EEPROMs stehen jedoch typischerweise lediglich mit relativ kleinen Speichergrößen, wie etwa 8 KByte oder 16 KByte zur Verfügung, bevor sie unerschwinglich teuer werden. Da immer mehr nichtflüchtige Speicherplätze bei einem geringeren Energieverbrauch für tragbare elektronische Geräte benötigt werden, sind Alternativen für EEPROMs notwendig. Eine solche Alternative ist der sogenannte Flash-Speicher, der mit großen Speicherdichten verfügbar ist, z. B. stehen 16 und 32 MBit- Vorrichtungen kommerziell zur Verfügung. Der Flash-Speicher ist schneller als der EEPROM, da er ein paralleles Adressierungs- und Datenformat verwendet. Der Flash-Speicher löscht in Blöcken, die Bytegruppen darstellen, die gewöhnlich das Vielfache von 4K, 8K, 16K usw. sind. Das gleichzeitige Löschen eines Blocks macht das Neuprogrammieren des Flash- Speichers schneller als das Neuprogrammieren des EEPROMs, wobei daher der Term "Flash" (Blitz) stammt. Trotzdem dauert das Blocklöschen eine relativ lange Zeitdauer, typischerweise 0,5 Sekunden für einen 8 KByte- Block.
  • Das Merkmal, daß lediglich blockweises Löschen möglich ist, hat zum Ergebnis, daß Flash-Speicher verwendet werden, um Datenstrukturen mit "verbundener Liste" gespeichert werden. Eine solche Struktur ist in der Anwendungsanmerkung AP-604 von Intel Corporation für deren Smart Voltage Boot Block Flash-Speicher-Familie beschrieben. Bei diesen Flash- Speicher-Vorrichtungen sind zwei sogenannte Parameterblöcke zum Speichern von veränderlichen Daten vorgesehen. Lediglich einer der Datenblöcke ist zu einem Zeitpunkt in Verwendung. Jeder Dateneintrag umfaßt einen Parameterwert und einen Zeiger zum nächsten Eintrag für diesen Parameter. Wenn der Parameterwert für einen Eintrag der aktuelle Wert ist, ist der Zeiger "leer" oder liefert einen Wert wie FFH, der anzeigt, daß es für diesen Parameter keinen weiteren Eintrag gibt. Wenn ein Parameterwert aktualisiert wird, wird er Zeiger für den vorherigen aktuellen Wert von "leer" auf die Adresse des Eintrags geändert, auf welcher der neue Parameterwert gespeichert werden soll. Der neue Eintrag besitzt den neuen Wert, der darin gespeichert wurde, und einen "leeren" Zeiger.
  • Parameterwerte werden in der Struktur mit verbundener Liste gespeichert, bis der Aktuelle Parameterblock voll ist. Wenn dieser Punkt erreicht ist, wird der letzte Wert für jeden Parameter im zweiten Parameterblock, der nun der aktuelle Speicherblock ist, gespeichert und die Struktur mit verbundener Liste setzt sich im neuen aktuellen Block fort. Der ursprüngliche aktuelle Parameterblock wird dann gelöscht.
  • Obwohl sich Flash-Speicher einigen Problemen und Nachteilen widmen, die EEPROMs und dergleichen zugehörig sind, weisen Flash-Speicher eigene Nachteile auf. Während eines Löschzyklus ist es nicht möglich, aus einem Block zu lesen, unabhängig davon, ob dieser Block gelöscht wird, was einen bedeutenden Nachteil gegenüber einem EEPROM darstellt, bei dem Daten in einem einzelnen Byte gelesen oder geschrieben werden können. Außerdem ist die Anzahl der Löschzyklen, denen ein Flash- Speicher unterzogen werden kann, bevor eine Verschlechterung der Leistungsfähigkeit eintritt, auf etwa 100000 Löschzyklen begrenzt, was bedeutend weniger ist als die Begrenzung bei EEPROMs. Ein bekanntes Flash-EEPROM-System ist in EP 392 895 A beschrieben.
  • Die vorliegende Erfindung zielt darauf, wenigstens ein Problem oder einen Nachteil, der bei Flash-Speicher-Vorrichtungen auftritt, zu verbessern.
  • Gemäß einer Ausführungsform eines ersten Aspekts der vorliegenden Erfindung wird ein Verfahren der Speicherverwaltung geschaffen, das das Speichern von elektronischen Signalen, die eine Darstellung von Parameterdaten sind, in einem flüchtigen Speichermittel, und das Speichern von elektronischen Signalen, die den elektronischen Signalen entsprechen, die eine Darstellung der im flüchtigen Speichermittel gespeicherten Parameterdaten sind, in einem nichtflüchtigen Speichermittel umfaßt, wobei das Verfahren dadurch gekennzeichnet ist, daß es die folgenden Schritte umfaßt: Bestimmen eines Prioritätspegels für Parameterdaten, die durch die im flüchtigen Speichermittel gespeicherten elektronischen Signale dargestellt werden, und Auslösen der Speicherung der elektronischen Signale, die den elektronischen Signalen entsprechen, die eine Darstellung der im flüchtigen Speichermittel gespeicherten Parameterdaten sind, gemäß einem Prioritätspegel für die Parameterdaten.
  • Eine Ausführungsform der vorliegenden Erfindung besitzt den Vorteil, daß immer dann, wenn ein Parameter oder eine Variable aktualisiert wird, nicht der nichtflüchtige Speicher verwendet wird. Statt dessen wird der flüchtige Speicher verwendet. Dies reduziert den Verschleiß des nichtflüchtigen Speichers. Da außerdem beim nichtflüchtigen Speicher weniger Aktualisierungen der Parameter oder der variablen Werte erforderlich sind als andernfalls notwendig wären, wird die Leistungsfähigkeit beispielsweise eines Mikroprozessors verbessert, da das Lesen/Schreiben bei einem flüchtigen Speicher typischerweise schneller erfolgt als bei einem nichtflüchtigen Speicher. Da nichtflüchtige Speicher zum Beschreiben des Speichers typischerweise höhere Spannungen erfordern als flüchtige Speicher, könnte eine erfindungsgemäße Ausführungsform weniger Leistung verbrauchen als herkömmliche Speichersysteme.
  • In einer bevorzugten Ausführungsform der vorliegenden Erfindung werden die elektronischen Signale, die den elektronischen Signalen entsprechen, die eine Darstellung von in den flüchtigen Speichermitteln gespeicherten Parameterdaten sind, in den nichtflüchtigen Speichermitteln gespeichert in Abhängigkeit von der Speicherung der elektronischen Signale in den nichtflüchtigen Speichermitteln, die zuvor gleichzeitig mit der Speicherung der elektronischen Signale, die eine Darstellung von Parameterdaten sind, in den flüchtigen Speichermitteln erfolgte. Dies löst das Problem, daß dann, wenn Daten während des Schreibens von Daten in den nichtflüchtigen Speicher in den flüchtigen Speicher geschrieben wurden, die Inhalte der flüchtigen und nichtflüchtigen Speicher verschieden sein können. Gemäß der bevorzugten Ausführungsform kann jede Inkonsistenz infolge einer solchen Überlappung beseitigt werden, indem der Inhalt des flüchtigen Speichers in den nichtflüchtigen Speicher fortgeschrieben wird.
  • Das Verfahren umfaßt weiter in geeigneter Weise das Bestimmen des Ablaufens einer vorgegebenen Zeitperiode seit dem Speichern der elektronischen Signale, die eine Darstellung von Parameterdaten sind, in den flüchtigen Speichermitteln und das Auslösen der Speicherung der elektronischen Signale, die den elektronischen Signalen entsprechen, die eine Darstellung von in den flüchtigen Speichermitteln gespeicherten Parameterdaten sind, in nichtflüchtigen Speichermitteln. Die vorgegebene Zeitperiode ist typischerweise kürzer für Parameterdaten, die die erste hohe Priorität aufweisen, als für Parameterdaten, die die zweite niedrige Priorität aufweisen.
  • Das Verfahren umfaßt ferner wahlweise das Zählen der Häufigkeit der Speicherung der elektronischen Signale, die eine Darstellung der Parameterdaten sind, in den flüchtigen Speichermitteln, das Bestimmen, ob diese Anzahl einen vorgegebenen Schwellenwert überschreitet, und das Auslösen der Speicherung der elektronischen Signale, die den in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, in den nichtflüchtigen Speichermitteln. Der vorgegebene Schwellenwert enthält typischerweise eine geringere Häufigkeit für Parameterdaten, die die erste hohe Priorität aufweisen, als für Parameterdaten, die die zweite niedrige Priorität aufweisen.
  • Gemäß einem zweiten Aspekt der vorliegenden Erfindung wird eine elektronische Vorrichtung geschaffen, die
  • flüchtige Speichermittel,
  • nichtflüchtige Speichermittel und
  • eine Steuerschaltlogik umfaßt, wobei die Steuerschaltlogik so angepaßt werden kann, daß sie elektronische Signale, die eine Darstellung von Parameterdaten sind, in den flüchtigen Speichermitteln speichert und elektronische Signale, die in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, in den nichtflüchtigen Speichermitteln speichert, wobei die elektronische Vorrichtung dadurch gekennzeichnet ist, daß die Steuerschaltlogik so angepaßt werden kann, daß sie einen Prioritätspegel für Parameterdaten bestimmt, die durch die in den flüchtigen Speichermitteln gespeicherten elektronischen Signale dargestellt werden, und das Speichern der elektronischen Signale, die den in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, gemäß einem Prioritätspegel für die Parameterdaten in den nichtflüchtigen Speichermitteln auslöst.
  • Gemäß einem dritten Aspekt der Erfindung wird eine elektronische Vorrichtung geschaffen für die Steuerung des Speicherns von elektronischen Signalen in flüchtigen Speichermitteln und in nichtflüchtigen Speichermitteln durch einen Computerprozessor, der gemäß den zuvor beschriebenen Verfahren programmiert ist.
  • Gemäß einem vierten Aspekt der Erfindung wird ein Speichermedium geschaffen zum Speichern maschinenlesbarer Befehle für die Steuerung des Speicherns elektronischer Signale in flüchtigen Speichermitteln und in nichtflüchtigen Speichermitteln gemäß den zuvor beschriebenen Verfahren.
  • Es werden nun Ausführungsformen der vorliegenden Erfindung lediglich beispielhaft und mit Bezug auf die beigefügte Zeichnung beschrieben, in der:
  • Fig. 1 eine typische Abbildung eines Flash-Speichers zeigt;
  • Fig. 2 einen Blockschaltplan einer VLSI-Mikrosteuereinheit zeigt;
  • Fig. 3 einen Ablaufplan für eine RAM-Cache-Routine der Flash-Speicher- Verwaltung gemäß einer bevorzugten Ausführungsform der Erfindung zeigt;
  • Fig. 4 einen Ablaufplan für eine Unterbrechungs-Steuerprogrammroutine der Flash-Speicher-Verwaltung zeigt; und
  • Fig. 5 eine schematische Darstellung einer Blockkopier-Richtlinie der Flash-Speicher-Verwaltung ist.
  • Der 4-MBit Smart Voltage Block Boot Flash-Speicher der Intel Corporation ist in der im November 1995 veröffentlichten Anmeldungsanmerkung AP-604 beschrieben. Eine Speicherabbildung für den 4-MBit Flash-Speicher ist in Fig. 1 gezeigt. Der 4-MBit Flash-Speicher 100 von Intel ist in Blöcke unterteilt, wobei jeder Block einen festen Adreßbereich besitzt. Die Blöcke 102, 104 und 106 sind 128 KByte-Blöcke, die zwischen den Adressen 00000H und 30000H liegen. Außerdem gibt es einen 96 KByte-Block 108, der zwischen den Adressen 30000H und 3BFFFH liegt. Die Flash-Speicher- Blöcke 102, 104, 106 und 108 sind Hauptspeicherblöcke und werden typischerweise verwendet, um Daten oder Informationen zu speichern, die während der Verwendung des Flash-Speichers 100 nicht geändert werden oder deren Änderung unwahrscheinlich ist. Solche Daten oder Informationen können eine Anwendungssoftware oder ein Programm zum Betreiben einer Vorrichtung sein, bei der nur gelegentlich Verbesserungen oder Aktualisierungen der Software erforderlich sind. Der 4-MBit Flash- Speicher von Intel umfaßt außerdem zwei 8 KByte-Parameterblöcke 110 und 112. Der Parameterblock I 110 liegt zwischen den Adressen 3C000H und 3CFFFH und der Parameterblock II 112 liegt zwischen den Adressen 3D000H und 3DFFFH. Die Parameterblöcke I und II 110 bzw. 112 sind Blöcke des Flash-Speichers, die zum Speichern von Daten reserviert sind, die typischerweise während des Betriebs des Flash-Speichers 100 aktualisiert werden. Die Daten können z. B. Parameter sein, die den Betrieb der elektronischen Vorrichtung betreffen, in der sich der Flash-Speicher 100 befindet. Wenn es sich z. B. um ein tragbares Funktelephon handelt, können solche Informationen die Einrichtung der Benutzerschnittstelle, das persönliche Telephonverzeichnis des Benutzers oder weitere Parameter des Funktelephons betreffen, die sich während der Benutzung ändern und während des Abschaltens des Funktelephons erhalten werden müssen. Der letzte Speicherblock, der Block 114, ist ein Codeblock und ist für die Speicherung von Software geeignet, die notwendig ist, um beispielsweise das Betriebssystem einer elektronischen Vorrichtung zu initialisieren und die Wiederherstellung eines Systems bei einem sprunghaften Vollausfall des Anwendungscodes zu gewährleisten. Außerdem speichert der Codeblock 114 typischerweise den Code, der erforderlich ist, um den Flash-Speicher zu programmieren und zu löschen. Der Codeblock 114 wird oft als Bootblock bezeichnet und belegt den höchsten Bereich des Speichers, die Adressen 3E000H bis 3FFFFH.
  • Wie andere Halbleiterspeicher speichert der Flash-Speicher Daten als elektronische Signale. Die Daten werden als binäre Informationen gespeichert, d. h. die Informationen oder die gespeicherten Daten repräsentieren entweder eine "1" oder eine "0". Es ist ein Kennzeichen des Flash-Speichers, daß es nur möglich ist, Informationen in den Flash- Speicher zu schreiben (ihn zu programmieren), indem die "1"-Werte in "0"- Werte geändert werden. Deswegen wird ein Flash-Speicher initialisiert, damit er zum Schreiben (oder Programmieren) bereit ist, indem jede Speicherstelle mit einem "1"-Wert gefüllt wird. Um einen Flash-Speicher zu löschen, werden "0"-Werte in "1"-Werte geändert. Es ist außerdem für einen Flash-Speicher kennzeichnend, daß Löschvorgänge blockweise ausgeführt werden. In Fig. 1 müßte ein Löschvorgang oder Löschzyklus in einem der Blöcke 102 bis 114 stattfinden. Es ist nicht möglich, wahlweise Informationen innerhalb eines Blocks zu löschen; es müssen alle Informationen in diesem Block gelöscht werden. Ein Blocklöschen löscht lediglich Informationen in dem einen Block, alle anderen Blöcke werden nicht beeinflußt. Ein Löschzyklus ist typischerweise als eine Löschoperation definiert, der eine Schreib- oder Programmieroperation folgt, oder umgekehrt. Das Lesen vom Flash-Speicher wird in einer relativ herkömmlichen Weise ausgeführt, indem zuerst der Speicherplatz adressiert wird, von dem Daten gelesen werden sollen, und anschließend diese Daten gelesen werden. Es ist ein. Merkmal des 4-MBit Smart Voltage Boot Block Flash-Speicher von Intel, daß er nur für 100000 Löschzyklen ausgelegt ist, wenn er bei einer 5 Volt-Spannungsversorgung in einem Staüdard-Temperaturbereich betrieben wird, und bei einem erweiterten Temperaturbereich lediglich für 10000 Löschzyklen ausgelegt ist. Diese obere Begrenzung der festgelegten Anzahl von Löschzyklen kann eine Einschränkung der Verwendung solcher Flash-Speicher-Vorrichtungen in einigen Typen von elektronischen Geräten darstellen.
  • In Fig. 2 ist ein Blockschaltplan einer Mikrosteuereinheit 200 mit einer Vielzahl von integrierten leiterplatteninternen Funktionseinheiten. Die Mikrosteuereinheit 200 umfaßt eine CPU 202, einen Flash-Speicher 204, einen Schreib/Lese-Speicher (RAM) 206, Eingabe/Ausgabetreiber 208 und einen digitalen Signalprozessor (DSP) 210. Die CPU 202 kann eine herkömmliche Prozessoreinheit sein, die die normalen Funktionen besitzt, die solchen Prozessoren zugehörig sind, und mit anderen Funktionseinheiten in der Mikrosteuereinheit 200 zusammenwirkt und auf Signale reagiert, die an die Mikrosteuereinheit 200 von elektronischen Vorrichtungen geliefert werden, die mit der Mikrosteuereinheit verbunden sind. Der Eingabe/Ausgabetreiber 208 bewältigt die Übertragung von Daten zwischen einzelnen Funktionseinheiten auf der Leiterplatte der Mikrosteuereinheit 200 sowie den Datenfluß zwischen den Einheiten der Mikrosteuereinheit 200 und externen elektronischen Vorrichtungen. Wenn die Integration immer stärker wird, ist es nicht ungewöhnlich, daß sich hochentwickelte Funktionseinheiten auf der Leiterplatte einer Mikrosteuereinheit befinden, wie etwa ein DSP 210, der in geeigneter Weise programmiert ist, um beispielsweise in einem Funktelephon Sprachcodierfunktionen auszuführen. Außerdem enthält die Mikrosteuereinheit 200 typischerweise auf der Leiterplatte verschiedene Speichertypen. Der Flash-Speicher 204 stellt nichtflüchtige Speichermittel dar und wird oft als Ersatz für einen EEPROM verwendet und emuliert diesen, und der RAM 206 stellt flüchtige Speichermittel dar und wird gewöhnlich vorgesehen, um in seiner normalen Funktion zu arbeiten, wie etwa als schneller Hilfsspeicher oder zur Verwendung in Verbindung mit der Software, die in der CPU läuft.
  • Der Flash-Speicher 204 speichert typischerweise im Speicherblock 114 Befehle für die CPU 202, um das Schreiben und Lesen des Flash-Speichers 204 auszuführen. Da jedoch der Flash-Speicher nicht in der Lage ist, von einer Adreßstelle zu lesen, während in derselben Vorrichtung auf eine andere Adreßstelle geschrieben wird, muß jeder Befehl, der das Schreiben auf einen Speicherplatz des Flash-Speichers beinhaltet, zunächst vorübergehend im RAM 206 gespeichert werden, damit der Code ausgeführt werden kann, um den Schreibvorgang durchzuführen. Da der Löschvorgang ein Vorgang des Wechsels von "0"-Werten zu "1"-Werten, d. h. eine Form des "Schreibens" ist, müssen Löschzyklusbefehle ebenfalls vorübergehend in den RAM heruntergeladen werden, bevor der Löschzyklus beginnt.
  • Gemäß einer bevorzugten Ausführungsform der Erfindung umfaßt der RAM 206 einen 8 KByte-Block, der hier nachfolgend als 8K RAM-Cache bezeichnet wird, für die Zwischenspeicherung von Parametern oder Variablen, die in einem der Parameterblöcke 110, 112 des Flash-Speichers gespeichert werden sollen. Die CPU 202 ist gemäß eines Satzes maschinenlesbarer Befehle, der als Flash-Speicher-Manager (FMM) bekannt ist, eingerichtet, damit sie ein Mittel darstellt, um die effektive Verwendung des Flash-Speichers zu bewerkstelligen. Ein Satz maschinenlesbarer Befehle, der als FMM-RAM-Cache-Routine bekannt ist, ist vorgesehen, um die Speicherung von Parametern im RAM-Cache 212 und in den Parameterblöcken 110, 112 sowie zwischen diesen zu steuern. Typischerweise werden die FMM-Befehle, wie etwa die Befehle der FMM-RAM-Cache- Routine, in den Hauptspeicherblöcken 102 bis 108 des Flash-Speichers 200 gespeichert und können in den RAM 206 heruntergeladen werden, wenn die FMM-Befehle das Beschreiben oder das Löschen eines Blocks des Flash- Speichers, insbesondere eines der Parameterblöcke 110, 112, enthalten.
  • In Fig. 3 ist ein Ablaufplan 300 gemäß einer bevorzugten Ausführungsform der Erfindung für den Betrieb der CPU 202 gezeigt, die gemäß den Befehlen der FMM-RAM-Cache-Routine eingerichtet ist. Wenn ein Parameter, der in dem momentan aktiven Flash-Parameterblock, z. B. im Block 110, des Flash- Speichers 100 ersetzt, geändert oder aktualisiert wird, geht der FMM 300 in den Zustand 302, in dem ein entsprechender Parameter, der im RAM-Cache 212 gespeichert ist, mit dem neuen Parameterwert aktualisiert wird. Der FMM 300 geht dann zum Zustand 304, in dem bestimmt wird, ob während des Schreibens in den momentan aktiven Flash-Parameterblock 110 eine Aktualisierung des RAM-Cache 212 erfolgt ist. Wenn eine Aktualisierung des RAM-Cache während eines Flash-Schreibens aufgetreten ist, geht der FMM 300 zum Zustand 306, in dem der momentan aktive Flash- Parameterblock 110 den Inhalt des RAM-Cache 212 enthält, der in diesen eingeschrieben wurde, um den RAM-Cache 212 mit dem momentan aktiven Flash-Parameterblock 110 zu aktualisieren. Dies berücksichtigt mögliche Inkonsistenzen zwischen Parameterwerten, die im RAM-Cache 212 und im momentan aktiven Flash-Parameterblock 110 gespeichert sind, infolge der Tatsache, daß während eines Flash-Schreibens ein Schreiben zum RAM- Cache 212 erfolgte, was bewirkt haben könnte, daß im momentan aktiven Parameterblock 110 teilweise alte Daten und teilweise neue Daten gespeichert sind. Wenn der Zustand 304 NEIN ist, geht der FMM 300 zum Zustand 308, in dem die Priorität des Parameters, der gerade im RAM aktualisiert wird, bestimmt wird. Es sollte angemerkt werden, daß gemäß der Erfindung die Parameter in Abhängigkeit von ihrer Wichtigkeit beim Betrieb des elektronischen Vorrichtung, in der sich der Flash-Speicher oder die Mikrosteuereinheit befindet, entweder als "dringende" oder als "träge" Parameter bezeichnet werden. Welche Parameter "dringend" sind und welche "träge" sind und wie diese Prioritäten unter den verschiedenen Parametern für die elektronische Vorrichtung verteilt werden, ist für die vorliegende Erfindung nicht relevant. Es ist lediglich notwendig, anzumerken, daß Parameter mit den entsprechenden beiden Prioritätspegeln im System vorhanden sind und daß sie als Parameter mit diesen Prioritäten identifiziert werden können. Logischerweise kann es in einem System mehr als zwei Prioritätspegel geben und der FMM 300 kann in geeigneter Weise geändert sein, um weitere Prioritätspegel zu bearbeiten. Wenn der aktuelle Parameter eine Priorität "träge" besitzt, geht der FMM 300 zum Zustand 310, und wenn der aktuelle Parameter eine Priorität "dringend" besitzt, geht der FMM 300 zum Zustand 312. Wenn während des Zustands 310 seit der letzten Flash-Sicherung mehr als fünf Parameter "träge" in den RAM-Cache 212 geschrieben wurden oder es ist mehr als eine Minute vergangen, seit der letzte Parameter "träge" in den RAM-Cache 212 geschrieben wurde, und es sind keine zwischenzeitlichen Flash- Sicherungen aufgetreten, geht der FMM 300 zum Zustand 306, in dem der gegenwärtig aktive Flash-Parameterblock 110 den Inhalt des RAM-Cache 212 aufweist, der in diesen eingeschrieben wurde, um den RAM-Cache 212 zu sichern. Wenn der Zustand 310 NEIN ist, geht der FMM 300 zum Zustand 302 und wartet auf den nächsten Parameter, der auf den RAM- Cache 212 aktualisiert werden soll. Wenn im Zustand 312 mehr seit der letzten Flash-Sicherung als ein dringender Parameter in den RAM-Cache 212 geschrieben wurde oder wenn mehr als zwei Sekunden vergangen sind, seit der letzte dringende Parameter in den RAM-Cache 212 geschrieben wurde und keine zwischenzeitliche Sicherung zum Flash-Speicher erfolgte, geht der FMM 300 zum Zustand 306, in dem der Inhalt des RAM-Cache 212 im momentan aktiven Parameterblock 110 gesichert wird. Wenn der Zustand 312 NEIN ist, geht der FMM 300 zum Zustand 302, in dem der Vorgang auf den nächsten Parameter wartet, der im RAM-Cache 212 aktualisiert werden soll.
  • Es ist für einen Fachmann selbstverständlich, daß die Kriterien in den Zuständen 310 bzw. 312 nicht jene sein müssen, die speziell beschrieben wurden, sondern geändert sein können, um die Eigenheiten und die Priorität der Parameter für eine beliebige elektronische Vorrichtung zu berücksichtigen.
  • Wie aus dem Ablaufplan von Fig. 3 deutlich ist, besitzt der FMM 300 Zustände, die ein Schreiben im aktiven Parameterblock 110 des Flash- Speichers erfordert, sowie Zustände, die kein solches Schreiben erfordern. Es ist demzufolge möglich, daß nicht alle Befehle, die den FMM 300 betreffen, vom Flash-Speicher zum RAM 206 heruntergeladen werden müssen, wenn die CPU 202 eingerichtet werden soll, um gemäß dem FMM 300 betrieben zu werden, sondern lediglich der Teil der FMM-Befehle, die ein "Schreiben" zum Parameterblock 110 des Flash-Speichers auslösen.
  • Da der Flash-Speicher nicht einzeln gelöscht werden kann, wird jede folgende Sicherung mit dem Inhalt des RAM-Cache 212 auf die nächste verfügbare Adresse im aktiven Parameterblock 110 des Flash-Speichers geschrieben. Eine Datenstruktur mit verbundener Liste, die zuvor beschrieben wurde, ist für diesen Zweck besonders geeignet. Schließlich wird der momentan aktive Parameterblock 110 des Flash-Speichers voll.
  • Dann werden die aktuellsten Werte für die Parameter, die im momentan aktiven Parameterblock 110 des Flash-Speichers gespeichert sind, im zweiten Parameterspeicherblock 112 des Flash-Speichers gespeichert. Der zweite Parameterblock des Flash-Speichers wird nun der momentan aktive Parameterblock und der Inhalt des RAM-Cache 212 wird nun unter der Steuerung des FMM 300 im neuen momentan aktiven Parameterblock 112 aktualisiert. Zu einem geeigneten Zeitpunkt im Betrieb der elektronischen Vorrichtung wird der ursprüngliche aktive Parameterblock 110 gelöscht, d. h. alle Speicherstellen werden mit "1"-Werten gefüllt und vorbereitet, aktualisierte Parameterwerte zu empfangen, wenn der momentan aktive Parameterblock 212 voll wird.
  • Der Flash-Speicher, der durch die FMM-RAM-Cache-Routine gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung verwaltet wird, kann eine effektiv längere Benutzungsdauer aufweisen, da er nicht notwendigerweise bei jeder Änderung des Parameterwerts aktualisiert wird, sondern nur dann, wenn es eine bestimmte Anzahl von Parameteraktualisierungen gegeben hat, oder wenn der Parameter ausreichend wichtig ist, damit er sofort im Flash-Speicher gesichert wird. Somit stehen mehr Parameteraktualisierungen zur Verfügung als dies bei einem in herkömmlicher Weise verwalteten Flash-Speicher der Fall sein würde.
  • Während des Betriebs der elektronischen Vorrichtung, die durch einen Zentralprozessor wie die CPU 202 gesteuert wird, müssen Informationen von Speichervorrichtungen wie der Flash-Speicher 204 und der RAM gelesen werden. Wie oben beschrieben wurde, ist es jedoch nicht möglich, vom Flash-Speicher 204 zu lesen, während im Flash-Speicher geschrieben oder ein Block gelöscht wird. Deswegen wird dann, wenn durch die CPU eine Anforderung zum Lesen von Daten vom Flash-Speicher 204 erfolgt, während geschrieben oder gelöscht wird, diese Anforderung ignoriert. Solche Anforderungen werden nachfolgend als Unterbrechungen bezeichnet.
  • In Abhängigkeit vom Typ der elektronischen Vorrichtung und ihres Zustands wird die Vorrichtung aufhören, in korrekter Weise zu funktionieren, wenn Unterbrechungen oder wenigstens bestimmte Unterbrechungstypen nicht sofort bedient werden. Für einen Löschvorgang kann die Verzögerung für einen 8 K-Block bis zu zwei Sekunden betragen, wobei dies typischerweise eine viel zu lange Verzögerung ist, bevor eine Unterbrechung bedient wird.
  • In Fig. 4 ist ein Ablaufplan für eine Flash-Datei-Manager- (FMM) Unterbrechungs-Steuerprogrammroutine 400 gezeigt. Die CPU 202 kann so eingerichtet sein, daß sie gemäß der FMM-Unterbrechungs- Steuerprogrammroutine 400 arbeitet. Wenn eine Unterbrechung auftritt, die einen Zugriff auf den Flash-Speicher 204 erfordert, wird die FMM- Unterbrechungs-Steuerprogrammroutine 400 aufgerufen. Das FMM- Unterbrechungs-Steuerprogramm bestimmt im Zustand 402, ob der Flash- Speicher 204 gegenwärtig einer Schreib- oder Löschoperation unterzogen wird. Wenn keine derartige Operation in Gange ist, wird der Zustand 404 begonnen, in dem die Standard-Unterbrechungs-Steuerprogrammroutine ausgelöst wird. Standard-Unterbrechungs-Steuerprogrammroutinen sind Fachmännern wohlbekannt und deren genaue Beschreibung ist nicht erforderlich. Das Standard-Unterbrechungs-Steuerprogramm bedient die Unterbrechung in herkömmlicher Weise, indem Daten von den erforderlichen Speicherstellen gelesen werden. Wenn ein Schreiben oder ein Löschen im Gange ist, tritt dann, wenn ein "kurzes" Schreiben zum Flash-Speicher 204 im Gange ist, das FMM-Unterbrechungs-Steuerprogramm 400 in den Zustand 406 ein, wenn ein "langes" Schreiben, d. h. ein Wortschreiben im Gange ist, wird der Zustand 408 begonnen, und wenn ein Löschen im Gange ist, wird der Zustand 410 begonnen.
  • Bei einem kurzen Schreiben zum Flash-Speicher 204, Zustand 406, geht das Unterbrechungs-Steuerprogramm 400 zum Zustand 412, in dem die Unterbrechung gesperrt wird. Wenn das "kurze" Schreiben beendet ist, geht das Unterbrechungs-Steuerprogramm zum Zustand 414, in dem der Blocklesemodus des Flash-Speichers 204 freigegeben wird. Das Unterbrechungs-Steuerprogramm geht dann zum Zustand 404, in dem das Standard-Unterbrechungs-Steuerprogramm aufgerufen wird. Die maximale Dauer für einen Schreibvorgang, um diesen als "kurzen" Schreibvorgang zu kennzeichnen, ist typischerweise von den Gegebenheiten der elektronischen Vorrichtung abhängig, die durch die CPU 202 und die auf dieser ablaufenden Befehle gesteuert wird, und kann durch einen Fachmann in geeigneter Weise bestimmt werden. Im allgemeinen kann ein Schreibvorgang mit einer Dauer von weniger als sechs Maschinenzyklen oder einem Befehl als ein "kurzer" Schreibvorgang betrachtet werden.
  • Wenn ein "langer" Schreibvorgang, d. h., der viele "Worte" umfaßt, im Gange ist, geht das Unterbrechungs-Steuerprogramm 400 zum Zustand 408 und bestimmt, ob momentan ein Wort (typischerweise 8 oder 16 Bits) zum Flash- Speicher 204 geschrieben wird. Wenn nicht, geht das Unterbrechungs- Steuerprogramm 400 zum Zustand 414, in dem für den Flash-Speicher 204 der Blocklesemodus begonnen wird, und anschließend zum Zustand 404, in dem das Standard-Unterbrechungs-Steuerprogramm aufgerufen wird. Wenn momentan ein Wort zum Flash-Speicher 204 geschrieben wird, wird der Zustand 412 begonnen und die Unterbrechung wird bis zu dem Zeitpunkt gesperrt, an dem der Wortschreibvorgang endet. Dann wird der Zustand 414 begonnen und der Blocklesemodus wird freigegeben und das Standard- Unterbrechungs-Steuerprogramm wird im Zustand 404 aufgerufen. Wahlweise können Unterbrechungen zwischen Wortschreibvorgängen freigegeben werden, da zwischen den Wortschreibvorgängen typischerweise eine Pause vorhanden ist, damit das neue Wort in einen Datenpuffer gelegt oder eine neue Adresse zum Schreiben des Worts geladen werden kann. Wenn während einer solchen freigegebenen Periode eine Unterbrechung auftritt, kann somit das FMM-Unterbrechungs-Steuerprogranxm den Flash- Speicher 204 in den Lesemodus versetzen, damit die Unterbrechung bedient werden kann. Das FMM-Unterbrechungs-Steuerprogramm kann bestimmen, wann sich der "lange" Schreibvorgang zwischen Wortschreibvorgängen befindet und dann den Flash-Speicher 204 in den Lesemodus versetzen; oder kann feststellen, wann sich der "lange" Schreibvorgang wahrscheinlich zwischen Wortschreibvorgängen befindet.
  • Wenn das FMM-Unterbrechungs-Steuerprogramm 400 den Zustand 410 beginnt, in dem ein im Gang befindlicher Löschvorgang erfaßt wurde, wird der Löschvorgang angehalten und der Blocklesemodus freigegeben, Zustand 414. Das Standard-Unterbrechungs-Steuerprogramm wird im Zustand 404 aufgerufen.
  • Vom Zustand 404 geht das FMM-Unterbrechungs-Steuerprogramm 400 zum Zustand 416, der eine Fortsetzung der Operation ist, die vor dem Aufrufen des Unterbrechungs-Steuerprogramms durchgeführt wurde. Wenn z. B. ein Löschen im Gange war, setzt sich im Zustand 416 das Löschen an dem Punkt fort, an dem es angehalten wurde, um die Unterbrechung zu bedienen. Wenn in ähnlicher Weise ein "langer" Schreibvorgang im Gange war und eine Unterbrechung erfolgte, wird im Zustand 416 der nächste Wortschreibvorgang ausgeführt.
  • Das FMM-Unterbrechungs-Steuerprogramm 400 kann im Flash-Speicher 204 gespeichert werden, wenn jedoch eine Lösch- oder Schreiboperation ausgeführt werden soll, wird es vorübergehend zum RAM 206 übertragen. Wahlweise kann das Unterbrechungs-Steuerprogramm 400 bevorzugt im RAM 206 gespeichert werden. Unabhängig davon, ob die Speicherung vorübergehend oder bevorzugt im RAM erfolgt, müssen Unterbrechungsanforderungen durch einen Vektor an die RAM-Adresse verwiesen werden, die das FMM-Unterbrechungs-Steuerprogramm 400 enthält.
  • Wie früher beschrieben wurde, besitzt der Flash-Speicher 204 eine endliche Anzahl von Löschzyklen, die ausgeführt werden können, bevor eine Verschlechterung der Leistungsfähigkeit des Flash-Speichers eintritt. Der Flash-Speicher-Manager liefert einen Satz maschinenlesbarer Befehle, der als FMM-Blockwiederverwendungsschema bekannt ist, an die CPU 202, um ein Mittel für die gleichmäßige Wiederverwendung der Blöcke des Flash- Speichers zu schaffen, damit alle Blöcke etwa die gleiche Benutzung erfahren.
  • In Fig. 5 ist eine schematische Darstellung eines FMM-Blockwiederverwendungsschemas. Die CPU 202 kann so beschaffen sein, daß sie gemäß dem FMM-Blockwiederverwendungsschema arbeitet. Das Blockwiederverwendungsschema umfaßt einen Satz Unterroutinen, die mit erase_count (Löschen zählen) 502, earse_initiate (Löschen auslösen) 504, copy_initiate (Kopieren auslösen) 606, copy_from (Kopieren von) 508, copy_to (Kopieren nach) 510 und copy_for_wear_levelling (Kopieren zum Ausgleichen der Benutzung) 512 bezeichnet sind.
  • Die Unterroutine 502 "erase_count" verfolgt, wie oft ein Block gelöscht wurde. Die Anzahl, wie oft ein Block gelöscht wurde, ist als Blockbenutzungszählerstand bekannt. Der Blockbenutzungszählerstand wird auf null initialisiert, wenn der Flash-Speicher das erste Mal verwendet wird, d. h. das erste Mal, wenn der Flash-Speicher-Manager in der elektronischen Vorrichtung, in der sich der Flash-Speicher 204 befindet, betrieben wird. Es gibt für jeden Block des Flash-Speichers einen Blockbenutzungszählerstand und der Blockbenutzungszählerstand wird jedesmal erhöht, wenn ein entsprechender Block gelöscht wird. Im allgemeinen wird ein Block gelöscht, damit ein anderer Block in diesen kopiert werden kann. Somit kann der Blockbenutzungszählerstand für den Block, der gelöscht wird, in dem Block gespeichert werden, von dem die Kopie erfolgt, während der Block, in den die Kopie erfolgt, gelöscht wird.
  • Die Unterroutine 504 "erase_initiate" steuert die Operation des Löschvorgangs im Flash-Speicher 204. Typischerweise werden Blöcke, die gelöscht werden können, auch gelöscht, wobei das Löschen lediglich dann unterbrochen wird, wenn der Flash-Speicher-Manager infolge der Notwendigkeit, Unterbrechungsgesuche von der CPU 202 zu bedienen, eine solche Unterbrechung fordert.
  • Das Auslösen eines Kopiervorgangs wird durch maschinenlesbare Befehle gemäß der Unterroutine 506 "copy_initiate" gesteuert. Das Kriterium zum Auslösen eines Blockkopiervorgangs von einem fast vollen Block zu einem unbenutzten Block lautet:
  • wenigstens ein Block ist zu mehr als 80% gefüllt und besitzt wenigstens 20% Leerraum
  • UND
  • ein freier Block derselben Größe ist verfügbar.
  • Weitere Bedingungen oder Kriterien können durch einen Fachmann bestimmt werden, um die Unterroutine 506 "copy_initiate" an eine spezielle elektronische Vorrichtung oder an eine Architektur aus Mikrosteuereinheit/Befehlssatz anzupassen.
  • Wenn die Bedingungen zur Erfüllung der Kriterien der Unterroutine 506 "copy_initiate" eingehalten sind, werden die Unterroutine 508 "copy_from" und die Unterroutine 510 "copy_to" aufgerufen. Die Unterroutine 508 "copyfrom" bewirkt, daß der Inhalt des Blocks mit dem größten Leerraum aus diesem kopiert wird. Es gibt typischerweise dann, wenn die Unterroutine 508 "copy_from" aufgerufen wird, normalerweise mehrere mögliche Blöcke, von denen kopiert werden kann. Wenn z. B. acht 8 KByte- Blöcke vorhanden sind, von denen sechs Blöcke voll sind:
  • besitzt ein Block 90% Leerraum bei einem Benutzungszählerstand von dreißig,
  • besitzt ein Block 80% Leerraum bei einem Benutzungszählerstand von zwanzig,
  • besitzt ein Block 50% Leerraum bei einem Benutzungszählerstand von neun,
  • besitzt ein Block 45% Leerraum bei einem Benutzungszählerstand von drei,
  • besitzt ein Block 30% Leerraum bei einem Benutzungszählerstand von zwei
  • und der letzte Block besitzt 10% Leerraum. Einer dieser Blöcke wird gelöscht und der letzte Block ist gelöscht worden.
  • Gemäß der Kriterien der Unterroutine 508 "copy_from" ist der Kandidat, für den Kopiervorgänge durchgeführt werden sollen, derjenige mit 90% Leerraum. Dieser Block besitzt jedoch den höchsten Benutzungszählerstand. Es ist eine Option, daß ein Kompromiß zwischen dem Benutungszählerstand und dem prozentualen Leerraum geschlossen wird. Je höher z. B. der prozentuale Leerraum ist, desto besser ist die Verwendung der Speicherressourcen und desto größer ist infolge des größten Raums, der geleert wird, die Zeitdauer bis zum nächsten Blockkopiervorgang. Wenn der Block mit dem größten Leerraum nicht gewählt wird, wird impliziert, daß der nächste Kopiervorgang eher erfolgen wird und daß somit eine Blockkopieranforderung eher erzeugt wird und deswegen eher die Benutzung eingeführt wird. Es sollte angemerkt werden, daß sich der Term "freier Raum" auf Speicherstellen bezieht, die Parameterwerte speichern, die aktualisiert wurden, so daß sich der aktualisierte Wert an einer anderen Speicherstelle befindet.
  • Da jeder Flash-Block 100000 Mal gelöscht und neu beschrieben werden kann, ist der Benutzungszählerstand ein unwesentlicher Faktor bei der Entscheidung, zu welchem Block eine Kopie erfolgen sollte. Deswegen ignoriert in einer speziellen Ausführungsform die Unterroutine 508 "copy_from" den Benutzungszählerstand und verwendet das einfache Kriterium, daß der zu kopierende Block derjenige mit dem größten Leerraum ist. Das heißt, ein Fachmann würde es nicht wünschen, einen Kompromiß zwischen Benutzungszählerstand und prozentualem Leerraum zu schließen, um die Verwendung einer Flash-Speichervorrichtung in einer bestimmten Umgebung zu verwenden.
  • Wenn das Schema 510 "copy_to" aufgerufen wird, gibt es typischerweise mehr als einen möglichen Speicherblock, in den kopiert werden kann. Nimmt man z. B. acht 8 KByte-Blöcke, von denen vier voll sind, wobei einer von diesen Daten aufweist, die bereit zu einem anderen Block kopiert wurden, einer gelöscht wird und zwei bereits gelöscht wurden, stehen lediglich zwei Blöcke unmittelbar zur Verfügung, d. h. die beiden Speicherblöcke, die bereits gelöscht wurden. Jeder dieser beiden Blöcke wird einen Blockbenutzungszählerstand aufweisen. Das Kriterium für die Unterroutine 510 "copy_to" besteht darin, daß der erste Block, in den kopiert wird, der Block mit dem niedrigsten Blockbenutzungszählerstand sein wird.
  • Bei bestimmten Anwendungstypen ist es möglich, daß einige Blöcke des Flash-Speichers niemals oder selten gelöscht werden. Eine Anwendung kann z. B. zwei große Einträge in einem Speicherblock speichern und sie niemals entfernen oder beschreiben. In einer solchen Situation würde dieser spezielle Block niemals verschleißen, wohingegen andere Blöcke im Flash-Speicher verschleißen würden. Die Unterroutine 512 "copy_for_wear_levelling_only" ist so beschaffen, daß sie jede Hauptdiskrepanz zwischen den Benutzungswerten von Blöcken im Flash- Speicher kennzeichnet und eine Blockkopie von einem relativ unbenutzten Block zu dem am meisten benutzten Block und umgekehrt erzwingt. Auf diese Weise wird der wenig benutzte Block stark benutzt und die Abnutzung am stark benutzten Block wird reduziert. Der erzwungene Kopiervorgang erfolgt, wenn die Differenz zwischen dem Benutzungspegel bei dem am wenigsten benutzten Block und dem Benutzungspegel bei dem am häufigsten benutzten Block einen vorgegebenen Wert übersteigt. Dieser Wert ist von den Anwendungen abhängig, die den Flash-Speicher verwenden, würde aber typischerweise im Bereich von 1 bis 40% liegen. Modifikationen an diesem Bereich können in Abhängigkeit von der Schreib/Lese-Frequenz für den Flash-Speicher erfolgen, so daß eine hohe Schreib/Lese-Benutzung bewirken würde, daß der erzwungene Kopiervorgang häufiger erfolgen würde. Da sich außerdem der Benutzungszählerstand für Blöcke erhöht, würde dann der erzwungene Kopiervorgang häufiger erfolgen. Der erzwungene Kopiervorgang kann einstellbar erfolgen, um die vorherigen Kriterien auch blockweise zu berücksichtigen.
  • Aus der Sicht der vorherigen Beschreibung ist es für einen Fachmann selbstverständlich, daß im Umfang der Erfindung einige Modifikationen erfolgen können, z. B. kann es, wie zuvor erwähnt wurde, für Parameter mehr als zwei Prioritätspegel geben und das Kriterium zum Bestimmen, ob der RAM-Cache 212 in den Flash-Speicher 100 gesichert wird, kann so angepaßt sein, daß es für die elektronische Vorrichtung geeignet ist, in der sich die Mikrosteuereinheit 200 und der Flash-Speicher 100 befindet. Es kann z. B. im FMM 300 ein weiterer Zustand vorhanden sein, der das Auslösen des Abschaltens der tragbaren elektronischen Vorrichtung erfaßt und vor dem Abschalten den RAM-Cache 212 in den momentan aktiven Parameterblock des Flash-Speichers sichert.

Claims (10)

1. Verfahren zur Speicherverwaltung, das umfaßt: Speichern elektronischer Signale, die eine Darstellung von Parameterdaten sind, in einem flüchtigen Speichermittel und Speichern elektronischer Signale, die den elektronischen Signalen entsprechen, die eine Darstellung der in den flüchtigen Speichermitteln gespeicherten Parameterdaten sind, in einem nichtflüchtigen Speichermittel, wobei das Verfahren dadurch gekennzeichnet ist, daß es die folgenden Schritte umfaßt: Bestimmen eines Prioritätspegels für Parameterdaten, die durch die in den flüchtigen Speichermitteln gespeicherten elektronischen Signale dargestellt werden, und Auslösen der Speicherung der elektronischen Signale, die den elektronischen Signalen entsprechen, die eine Darstellung von in den flüchtigen Speichermitteln gespeicherten Parameterdaten sind, gemäß einem Prioritätspegel für die Parameterdaten in den nichtflüchtigen Speichermitteln.
2. Verfahren nach Anspruch 1, bei dem die elektronischen Signale, die den in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, in den nichtflüchtigen Speichermitteln gespeichert werden in Abhängigkeit von der Speicherung der elektronischen Signale in den nichtflüchtigen Speichermitteln, die zuvor gleichzeitig mit der Speicherung der elektronischen Signale, die eine Darstellung von Parameterdaten sind, in den flüchtigen Speichermitteln erfolgte.
3. Verfahren nach Anspruch 1 oder 2, bei dem die Parameterdaten kategorisiert werden, ob sie eine erste hohe Priorität oder eine zweite niedrige Priorität aufweisen.
4. Verfahren nach Anspruch 1, 2 oder 3, das ferner umfaßt: Bestimmen des Ablaufens einer vorgegebenen Zeitperiode seit der Speicherung der elektronischen Signale, die eine Darstellung von Parameterdaten sind, in flüchtigen Speichermitteln und Auslösen der Speicherung der elektronischen Signale, die den in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, in nichtflüchtigen Speichermitteln.
5. Verfahren nach Anspruch 4, bei dem die vorgegebene Zeitperiode für Parameterdaten, die die erste hohe Priorität besitzen, kürzer ist als für die Parameterdaten, die die zweite niedrige Priorität besitzen.
6. Verfahren nach Anspruch 3, das ferner umfaßt: Zählen der Häufigkeit der Speicherung der elektronischen Signale, die eine Darstellung der Parameterdaten sind, in den flüchtigen Speichermitteln, Bestimmen, ob diese Anzahl einen vorgegebenen Schwellenwert übersteigt, und Auslösen der Speicherung der elektronischen Signale, die den in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, in den nichtflüchtigen Speichermitteln.
7. Verfahren nach Anspruch 6, bei dem der vorgegebene Schwellenwert eine geringere Häufigkeit für Parameterdaten, die die erste hohe Priorität aufweisen, enthält als für Parameterdaten, die die zweite niedrige Priorität aufweisen.
8. Elektronische Vorrichtung, die umfaßt:
flüchtige Speichermittel,
nichtflüchtige Speichermittel und
eine Steuerschaltlogik, die angepaßt werden kann, um elektronische Signale, die eine Darstellung von Parameterdaten sind, in den flüchtigen Speichermitteln zu speichern, und um elektronische Signale, die in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, in den nichtflüchtigen Speichermitteln zu speichern, wobei die elektronische Vorrichtung dadurch gekennzeichnet ist, daß die Steuerschaltlogik angepaßt werden kann, um einen Prioritätspegel für Parameterdaten zu bestimmen, die durch in den flüchtigen Speichermitteln gespeicherte elektronische Signale dargestellt werden, und um die Speicherung der elektronischen Signale, die den in den flüchtigen Speichermitteln gespeicherten elektronischen Signalen entsprechen, die eine Darstellung von Parameterdaten sind, in den nichtflüchtigen Speichermitteln gemäß einem Prioritätspegel für die Parameterdaten auszulösen.
9. Elektronische Vorrichtung zum Steuern der Speicherung elektronischer Signale in flüchtigen Speichermitteln und nichtflüchtigen Speichermitteln, die einen Computerprozessor enthält, der gemäß dem Verfahren nach einem der Ansprüche 1 bis 7 programmiert ist.
10. Speichermedium zum Speichern maschinenlesbarer Befehle zum Steuern der Speicherung elektronischer Signale in flüchtigen Speichermitteln und in nichtflüchtigen Speichermitteln gemäß dem Verfahren nach einem der Ansprüche 1 bis 7.
DE69710665T 1996-09-30 1997-09-15 Methode und Apparat zur Speicherverwaltung Expired - Lifetime DE69710665T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB9620375A GB2317722B (en) 1996-09-30 1996-09-30 Memory device

Publications (2)

Publication Number Publication Date
DE69710665D1 DE69710665D1 (de) 2002-04-04
DE69710665T2 true DE69710665T2 (de) 2002-11-21

Family

ID=10800724

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US6301635B2 (de)
EP (1) EP0834882B1 (de)
JP (1) JPH10133940A (de)
DE (1) DE69710665T2 (de)
GB (1) GB2317722B (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3718578B2 (ja) * 1997-06-25 2005-11-24 ソニー株式会社 メモリ管理方法及びメモリ管理装置
JP2000172549A (ja) * 1998-12-04 2000-06-23 Mitsubishi Electric Corp Eprom併用情報処理装置
US6104638A (en) * 1999-02-26 2000-08-15 Hewlett-Packard Company Use of erasable non-volatile memory for storage of changing information
JP2001014870A (ja) * 1999-06-29 2001-01-19 Nec Corp フラッシュメモリ搭載マイクロコンピュータ及び書き換え回数管理方法
JP2001056760A (ja) * 1999-08-19 2001-02-27 Murata Mfg Co Ltd データ処理装置
KR100631770B1 (ko) * 1999-09-07 2006-10-09 삼성전자주식회사 플래시 메모리의 실시간 처리방법
JP3578265B2 (ja) * 1999-11-19 2004-10-20 日本電気株式会社 不揮発性メモリへのデータ書き込み方法および情報処理装置ならびに記録媒体
DE10040267A1 (de) * 2000-08-17 2002-02-28 Philips Corp Intellectual Pty Prozessor-Speicher-System
US6704835B1 (en) * 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
TWI240864B (en) * 2001-06-13 2005-10-01 Hitachi Ltd Memory device
EP1286267B1 (de) * 2001-08-17 2017-08-16 Sony Deutschland GmbH Mobiles Kommuikationsgerät und Speicherverwaltungsverfahren
US7487316B1 (en) * 2001-09-17 2009-02-03 Rockwell Automation Technologies, Inc. Archive and restore system and methodology for on-line edits utilizing non-volatile buffering
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB2393273A (en) 2002-09-20 2004-03-24 Sharp Kk Method and apparatus for detecting an error in writing to persistent memory
EP1570330A2 (de) 2002-11-27 2005-09-07 Koninklijke Philips Electronics N.V. Schutzmittel in einer integrierten schaltung
US20050055495A1 (en) * 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
US7139863B1 (en) 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7603511B2 (en) 2004-12-27 2009-10-13 Research In Motion Limited Cyclic buffer mechanism for receiving wireless data under varying data traffic conditions
US8914557B2 (en) * 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
WO2008029389A1 (en) * 2006-09-04 2008-03-13 Sandisk Il Ltd. Device and method for prioritized erasure of flash memory
US8117414B2 (en) 2006-09-04 2012-02-14 Sandisk Il Ltd. Method for prioritized erasure of flash memory
US7975119B2 (en) 2006-09-04 2011-07-05 Sandisk Il Ltd Device for prioritized erasure of flash memory
KR101469512B1 (ko) 2007-01-10 2014-12-05 모바일 세미컨덕터 코오포레이션 외부 컴퓨팅 디바이스의 성능 향상을 위한 어댑티브 메모리 시스템
WO2009026946A1 (en) * 2007-08-29 2009-03-05 Lifescan Scotland Limited A data management system and method
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
KR20100013485A (ko) * 2008-07-31 2010-02-10 삼성전자주식회사 메모리 장치 및 웨어 레벨링 방법
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
EP2273373A1 (de) 2009-07-02 2011-01-12 Vodafone Holding GmbH Speichern von häufig geänderten Daten auf einer IC-Karte
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
US20180239532A1 (en) * 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10956090B2 (en) 2017-06-20 2021-03-23 Kyocera Document Solutions Inc. Memory system and electronic apparatus
US11914893B2 (en) * 2020-11-18 2024-02-27 Micron Technology, Inc. Managed memory systems with multiple priority queues
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4523206A (en) * 1982-03-03 1985-06-11 Sperry Corporation Cache/disk system with writeback regulation relative to use of cache memory
US4916605A (en) * 1984-03-27 1990-04-10 International Business Machines Corporation Fast write operations
US5175842A (en) * 1988-05-31 1992-12-29 Kabushiki Kaisha Toshiba Data storage control system capable of reading data immediately after powered on
EP0391871A3 (de) * 1989-04-03 1992-05-27 International Business Machines Corporation Verfahren zur Verwaltung eines prioritisierten Cache-Speichers
DE69033262T2 (de) * 1989-04-13 2000-02-24 Sandisk Corp., Santa Clara EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
JPH0373496A (ja) * 1989-05-16 1991-03-28 Seiko Epson Corp Eeprom書込装置
JPH0816886B2 (ja) * 1990-12-21 1996-02-21 富士通株式会社 高速書き込み方法
FI89993C (fi) 1991-05-31 1993-12-10 Nokia Mobile Phones Ltd Programmering av installationsdata i en mobiltelefon
US5469555A (en) * 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
JPH0797352B2 (ja) * 1992-07-02 1995-10-18 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システム及び入出力コントローラ
US5416915A (en) * 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5542066A (en) * 1993-12-23 1996-07-30 International Business Machines Corporation Destaging modified data blocks from cache memory
US5606529A (en) * 1994-12-20 1997-02-25 Hitachi, Ltd. Semiconductor disk storage
JPH08314794A (ja) * 1995-02-28 1996-11-29 Matsushita Electric Ind Co Ltd 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム
US5696929A (en) * 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
US5778070A (en) 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory

Also Published As

Publication number Publication date
EP0834882B1 (de) 2002-02-27
GB2317722B (en) 2001-07-18
EP0834882A2 (de) 1998-04-08
GB2317722A (en) 1998-04-01
US6301635B2 (en) 2001-10-09
DE69710665D1 (de) 2002-04-04
EP0834882A3 (de) 1999-08-04
GB9620375D0 (en) 1996-11-13
US20010002475A1 (en) 2001-05-31
JPH10133940A (ja) 1998-05-22

Similar Documents

Publication Publication Date Title
DE69710665T2 (de) Methode und Apparat zur Speicherverwaltung
DE69717229T2 (de) Methode zur Speicherverwaltung
DE69726088T2 (de) Methode und Apparat zur Speicherverwaltung
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE69034227T2 (de) EEprom-System mit Blocklöschung
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
DE69527594T2 (de) Flashspeicherkarte
DE69229976T2 (de) Gerät und Verfahren zum Unterbrechen und Wiederaufnehmen von Softwareanwendungen auf einem Rechner
DE69635962T2 (de) Flash-Speicher-Massenspeichersystem und Verfahren dafür
DE60317551T2 (de) Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem
DE69622238T2 (de) Verfahren und Vorrichtung zur Sicherungsablaufplanung mit verstellbarem Niveau
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
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102009048179A1 (de) Prozess und Verfahren für eine Löschstrategie in Festkörperplatten
DE112008000180T5 (de) Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE102009060746A1 (de) Speichersicherung
DE19960258A1 (de) Flash-Speicher-Einheit und Verfahren zur Steuerung des Flash-Speichers
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
EP1314135B1 (de) Verfahren zur virtuellen vergrösserung des stacks eines tragbaren datenträgers
EP1744236A1 (de) Konfiguration von Bauelementen bei einem Übergang von einem Niedrigleistungs-Betriebsmodus in einen Normalleistungs-Betriebsmodus
DE3789912T2 (de) System und Verfahren zur Bildverarbeitung.

Legal Events

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

Owner name: NOKIA CORP., ESPOO, FI

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