DE69710665T2 - Methode und Apparat zur Speicherverwaltung - Google Patents
Methode und Apparat zur SpeicherverwaltungInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User 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.
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)
| 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)
| 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 |
-
1996
- 1996-09-30 GB GB9620375A patent/GB2317722B/en not_active Expired - Fee Related
-
1997
- 1997-09-15 DE DE69710665T patent/DE69710665T2/de not_active Expired - Lifetime
- 1997-09-15 EP EP97307125A patent/EP0834882B1/de not_active Expired - Lifetime
- 1997-09-26 US US08/937,986 patent/US6301635B2/en not_active Expired - Lifetime
- 1997-09-29 JP JP26433497A patent/JPH10133940A/ja not_active Withdrawn
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 |