-
Die
vorliegende Erfindung betrifft ein Verfahren zum Aktualisieren von
Daten für
einen nichtflüchtigen
Speicher vom Typ EEPROM oder Flash-EEPROM.
-
Derartige
nichtflüchtige
Speicher sind aus Speicherzellen aufgebaut, die im Allgemeinen aus
einem sogenannten Transistor mit schwebendem Gate (Floating-Gate-Transistor)
gebildet sind, der eine Binärinformation
enthalten kann. Die Binärinformation einer
derartigen Speicherzelle kann einen ersten bestimmten Wert, beispielsweise
0, durch Einfangen eines angeregten Elektrons in der Oxidschicht,
die das Gate des Transistors von der Zelle isoliert ("Stacked Gate"-Technologie oder
Transistor mit überlagertem Gate),
oder im Floating-Gate des Transistors ("Split-Gate"-Technologie oder Transistor mit geteiltem
Gate) annehmen. Diese verhältnismäßig schnelle "Schreib-" oder "Programmier"-Operation erfordert,
je nach verwendeter Technologie, beispielsweise nur einige Mikrosekunden.
Die Binärinformation kann
einen zweiten bestimmten Wert, beispielsweise 1, durch den Fowler-Nordheim-Tunneleffekt
annehmen, der den Durchgang, ohne Ionisation, eines eingefangenen
Elektrons durch die das Gate des Transistors isolierende Oxidschicht
("Stacked-Gate"-Technologie) hindurch
oder aus dem Floating Gate heraus ("Split-Gate"-Technologie) ermöglicht. Diese "Lösch"-Operation dauert deutlich länger als
die jene, die zuvor erwähnt
wurde; sie kann, bei Betrachtung derselben Technologie, beispielsweise
mehrere Millisekunden dauern.
-
Je
nach den Anwendungen, bei denen der Speicher genutzt wird, kann
dieser Letztere in mehrere ähnliche
und unabhängig
voneinander löschbare
Speicherabschnitte zerlegt werden. Diese Speicherabschnitte haben
eine Größe, die
von einer Speicherzelle bis zu einer Speicherseite von mehreren
Kilobytes variieren kann. Es muss unbedingt hervorgehoben werden,
dass in dem besonderen Fall eines Flash-Speichers die Programmieroperationen
byteweise ausgeführt
werden können,
wie bei einem EEPROM, dagegen die Löschoperationen blockweise ausgeführt werden
müssen,
was erfordert, dass bei jedem Aktualisieren eines einzigen Bytes
eines Blocks ein Löschen
des gesamten Blocks ausgeführt wird.
-
Ein
herkömmliches
Verfahren zum Aktualisieren von Daten bei diesem Speichertyp umfasst
im Allgemeinen die folgenden Schritte:
- – Löschen eines
für die
Datensicherung reservierten Speicherabschnitts;
- – Sichern
der Daten aus einem zu aktualisierenden nicht reservierten Speicherabschnitt
in dem vorher gelöschten
reservierten Speicherabschnitt;
- – Löschen des
zu aktualisierenden nicht reservierten Speicherabschnitts;
- – Aktualisieren
der Daten in dem im vorhergehenden Schritt gelöschten Speicherabschnitt;
- – Wiederholen
der vorhergehenden Schritte bei jeder neuen Aktualisierung, die
erforderlich ist.
-
Vorab
sei angemerkt, dass der Ausdruck "Löschen
eines Speicherabschnitts" eine
sprachliche Abkürzung
darstellt, die häufig
verwendet wird, um "Löschen der
Daten, die in einem Speicherabschnitt enthalten sind" mitzuteilen.
-
Die
Verwendung eines nichtflüchtigen
reservierten Speicherabschnitts für die Sicherung von zu aktualisierenden
Daten ist erforderlich, um zu gewährleisten, dass im Fall einer
plötzlichen
Unterbrechung des Aktualisierungsprozesses, beispielsweise durch
einen Stromausfall, kein Datenverlust eintreten kann. Außerdem ist
die Verwendung desselben Speicherabschnitts, um die aktualisierten
Daten aufzunehmen, auch erforderlich, um einen einfachen und schnellen
Zugriff auf die Daten durch das Speicherverwaltungssystem sicherzustellen.
Dann ist keine Nachverfolgung, beispielsweise mittels Zeiger, erforderlich.
-
Der
Hauptnachteil, den die Verwendung eines solchen reservierten Speicherabschnitts
nach sich zieht, ist die Verlängerung
der Ausführungsdauer
des Prozesses bei nacheinander durchgeführten Aktualisierungen. Wie
in der Einleitung deutlich geworden ist, dauern nämlich die
sogenannten "Löschoperationen" oder Operationen,
um die Speicherzellen, die den Speicherabschnitt bilden, auf "1" zu setzen, ungefähr 1000-mal länger als
eine Schreiboperation. Nun erfordert aber das weiter oben beschriebene
Verfahren, für
jede Aktualisierung zwei Löschzyklen
auszuführen,
einen ersten Löschzyklus,
um einen Speicherplatz für
die Sicherung der Daten zu reservieren, was ermöglicht, einer Funktionsstörung des
das Verfahren ausführenden
Systems vorzubeugen, und einen zweiten, um das Aktualisieren in
dem Abschnitt, der die Daten vor dem Aktualisieren enthielt, durchführen zu
können.
Folglich wird die Ausführungszeit
dieses Verfahrenstyps schnell kritisch, insbesondere insofern, als
er während
seiner Ausführung
die Systembetriebsmittel für
sich allein beansprucht.
-
Das
Aktualisierungsverfahren gemäß einer Ausführungsform
der Erfindung ermöglicht
nicht nur, sich vor Datenverlusten im Fall einer Funktionsstörung bei
der Aktualisierung zu schützen
und einen einfachen und schnellen Datenzugriff sicherzustellen,
sondern auch, seine Ausführungszeit
zu optimieren.
-
Deswegen
wird das Verfahren für
einen nichtflüchtigen
Speicher ausgeführt,
der in mehrere ähnliche
und unabhängig
voneinander löschbare Speicherabschnitte
zerlegt ist, wovon wenigstens zwei Speicherabschnitte für die Aktualisierung
der in jedem dieser Abschnitte enthaltenen Daten reserviert sind,
wobei das Verfahren dadurch gekennzeichnet ist, dass es die folgenden
Schritte umfasst:
- a) Löschen eines ersten reservierten
Speicherabschnitts, falls vorher keiner der reservierten Speicherabschnitte
gelöscht
worden ist;
- b) Sichern der Daten eines zu aktualisierenden nicht reservierten
Speicherabschnitts in dem gelöschten
ersten reservierten Speicherabschnitt oder in einem vorher gelöschten reservierten Speicherabschnitt;
- c) gleichzeitiges Löschen
des nicht reservierten Speicherabschnitts und eines zweiten reservierten
Speicherabschnitts;
- d) Aktualisieren der Daten des nicht reservierten Speicherabschnitts;
- e) Wiederholen der Schritte b) bis d) für alle anderen zu aktualisierenden
nicht reservierten Speicherabschnitte.
-
Die
Verwendung von wenigstens zwei Speicherabschnitten, die für die Sicherung
von Daten reserviert sind, ermöglicht
vorteilhaft, einen ersten Abschnitt zum Speichern der zu aktualisierenden
Daten und wenigstens einen zweiten Abschnitt, der gleichzeitig mit
dem zu aktualisierenden Abschnitt gelöscht wird, zu nutzen. Somit
steht für
alle später
ausgeführten
Aktualisierungen immer ein reservierter Speicherabschnitt zur Verfügung, was
ermöglicht,
den Schritt a), das Löschen
eines vom Verfahren reservierten Speicherabschnitts, auszulassen.
Dazu sei angemerkt, dass die zwei Speicherabschnitte, die für die Datensicherung
re serviert sind, auf äquivalente Weise
durch nichtflüchtige
Pufferspeicher außerhalb des
die Daten enthaltenden nichtflüchtigen
Speichers ersetzt werden können.
-
Wie
vorher verdeutlicht worden ist, weist die Tatsache, dass die Aktualisierung
der Daten eines Abschnitts in demselben Abschnitt verwirklicht wird, den
Vorteil auf, dass der Speicherort dieser Daten im Voraus bekannt
ist und folglich kein komplexes System zur Datennachverfolgung wie
beispielsweise eine nicht flüchtige
Zeigertabelle erfordert. Der Zugriff auf Daten ist folglich einfach
und schnell.
-
Dennoch
ist es im Fall einer unerwarteten Unterbrechung des Verfahrens während seiner
Ausführung
vorteilhaft, den Speicherort der gesicherten Daten zu kennen, um
die Daten eines in der Aktualisierung begriffenen Abschnitts, so
wie sie vorher waren, ohne weiteres wieder herstellen zu können. Im Rahmen
des Standes der Technik lag die Lösung auf Grund der Verwendung
eines einzigen reservierten Abschnitts klar auf der Hand. Nun ist
es aber im Rahmen des Verfahrens gemäß der Ausführungsform, die zuvor dargelegt
worden ist, zwingend erforderlich, von wenigstens zwei Abschnitten
Gebrauch zu machen, um den angestrebten Zeitgewinn zu erzielen.
Deshalb ist vorteilhaft vorgesehen, diesen reservierten Abschnitten
einen nichtflüchtigen
Steuersektor zuordnen zu können,
der ermöglicht,
direkt zu bestimmen, welchem in der Aktualisierung befindlichen Abschnitt
die in einem reservierten Abschnitt enthaltenen Daten entsprechen.
-
Um
das Verfahren zum Wiederherstellen im Fall einer Unterbrechung zu
optimieren, ist es vorteilhaft, Mittel zum Prüfen der korrekten Ausführung des Verfahrens
bei seiner Anwendung zu gebrauchen, und zwar vom Typ CRC ("Cyclic Redundancy Check"), um Haltepunkte
zu definieren, die ermöglichen,
den Zeitpunkt der Unterbrechung des Verfahrens genau zu kennen.
-
Weitere
Ausführungsformen
des Aktualisierungsverfahrens sowie vorteilhafte Varianten sind
in den abhängigen
Ansprüchen
dargelegt.
-
Weitere
Merkmale und Vorteile der Erfindung gehen deutlicher aus der folgenden
Beschreibung hervor, die lediglich als Beispiel gegeben ist und
sich auf die beigefügte
Zeichnung bezieht, worin:
-
1 ein
Schema der Schritte des Aktualisierungsverfahrens gemäß einer
ersten Ausführungsform
der Erfindung zeigt;
-
1A ein
Detailbeispiel des Schritts b) des Verfahrens gemäß der ersten
Ausführungsform
zeigt;
-
1B ein
Detailbeispiel des Schritts d) des Verfahrens gemäß der ersten
Ausführungsform
zeigt; und
-
2 ein
Schema der Schritte des Verfahrens gemäß einer zweiten Ausführungsform
der Erfindung zeigt.
-
In
der folgenden Beschreibung bezieht sich das Verfahren zum Aktualisieren
von Daten gemäß den verschiedenen
Ausführungsformen
der Erfindung auf einen nichtflüchtigen
Speicher, vorzugsweise vom Typ Flash-EEPROM, der in mehrere ähnliche und
unabhängig
voneinander löschbare
Speicherabschnitte (SM) zerlegt ist. Wenigstens zwei Speicherabschnitte
(SRA, SRB) werden für
die Datensicherung reserviert. Es ist jedoch denkbar vorzusehen, diese
wenigstens zwei innerhalb des Speichers reservierten Speicherabschnitte
durch wenigstens zwei nichtflüchtige
externe Pufferspeicher, deren Größe jener
der Speicherabschnitte ähnlich
ist, zu ersetzen.
-
Gemäß einer
ersten Ausführungsform
des Verfahrens zum Aktualisieren von Daten, in 1 dargestellt,
ist während
eines ersten Schritts a) der Initialisierung vorgesehen, wenigstens
einen der reservierten Speicherabschnitte (SRA) zu löschen, falls vorher
keiner davon gelöscht
worden ist. Wenn dieser Initialisierungsschritt erst einmal ausgeführt ist, ermöglicht das
Verfahren, bei jedem Aktualisieren eines Speicherabschnitts eine
Löschzeit
einzusparen.
-
Während des
zweiten Schritts b) wird einer der nicht reservierten Speicherabschnitte
(SM), dessen Daten aktualisiert werden müssen, in dem im vorhergehenden
Schritt gelöschten
reservierten Speicherabschnitt oder in einem der vorher gelöschten Speicherabschnitte,
d. h. in einem verfügbaren reservierten
Speicherabschnitt (SRD), gesichert. Ein Ausführungsbeispiel für einen
solchen Sicherungsschritt kann wie in 1A dargestellt
verwirklicht sein. In diesem Fall lässt sich der Sicherungsschritt
in einen ersten Unterschritt b1), der darin besteht, die zu aktualisierenden
Daten aus dem Speicherabschnitt (SM) in ein oder mehrere Register
(REG), je nach Größe des Abschnitts,
oder in den gesamten flüchtigen
Speicherraum, auf den schnell zugegriffen werden kann, zu kopieren,
und in einen zweiten Unterschritt b2), während dessen der Inhalt der
zugehörigen
Register in den verfügbaren
reservierten Speicherabschnitt (SRD) übertragen wird, zerlegen.
-
Wenn
der zweite Schritt b) erst einmal ausgeführt ist, ist sichergestellt,
dass der anfängliche
Inhalt, wie vor dem Aktualisieren, auch im Fall einer plötzli chen
Unterbrechung des Verfahrens zurückgewinnbar
ist, da dieser anfängliche
Inhalt in einem nichtflüchtigen
reservierten Speicherabschnitt gespeichert ist. Deshalb kann der
Schritt, der darin besteht, den zu aktualisierenden nicht reservierten Speicherabschnitt
(SM) zu löschen,
in völliger
Sicherheit ausgeführt
werden.
-
Im
Rahmen der Umsetzung des erfindungsgemäßen Verfahrens ist bei dem
dritten Schritt c) vorgesehen, das Löschen des zu aktualisierenden
nicht reservierten Abschnitts (SM) bzw. eines reservierten Speicherabschnitts
(SRB), der von jenem, der die zu aktualisierenden Daten enthält, verschieden
ist, gleichzeitig auszuführen.
Da die zwei Löschoperationen
gleichzeitig ausgeführt
werden, ist die Gesamtzeit der beiden Operationen gleich der Ausführungszeit
nur einer Löschoperation.
-
Es
sei angemerkt, dass auf diese Weise der im Schritt c) gelöschte reservierte
Speicherabschnitt (SRB) bei der nächsten Aktualisierung als verfügbarer reservierter
Speicherabschnitt (SRD) dienen wird.
-
Sobald
der Schritt c), in dem der zu aktualisierende Speicherabschnitt
(SM) gelöscht
wird, erst einmal ausgeführt
ist, können
die aktualisierten Daten dorthin kopiert werden. Der Schritt d)
des Aktualisierens der Daten dieses zu aktualisierenden Speicherabschnitts
kann in zwei Unterschritte d1) und d2) zerlegt werden, wie in 1B gezeigt
ist. Der erste Unterschritt d1) besteht darin, die in den Registern (REG)
enthaltenen Daten, die im Schritt b) verwendet werden und den Daten
entsprechen, die vorher in dem zu aktualisierenden nicht reservierten
Abschnitt enthalten waren, zu aktualisieren.
-
Dazu
sei angemerkt, dass dieser Schritt d1) der Aktualisierung der in
den Registern (REG) enthaltenen Daten ausgeführt werden kann, sobald der Schritt
b2) der Übertragung
dieser Daten in den verfügbaren
reservierten Speicherabschnitt (SRD) beendet ist, und spätestens
vor dem Schritt d2), der darin besteht, die in den Registern aktualisierten
Daten aus diesen Letzteren in den zu aktualisierenden Speicherabschnitt
(SM) zu übertragen.
Es muss unbedingt angemerkt werden, dass vorteilhaft derselbe Speicherabschnitt
für das
Aktualisieren verwendet wird, der im Schritt c) gelöscht worden
ist. Dies ermöglicht,
schnell und einfach auf aktualisierte Daten zuzugreifen – ohne Notwendigkeit
der Verwendung eines Mechanismus zum Nachverfolgen der Daten.
-
Schließlich wird
bei allen weiteren Aktualisierungen der Schritt a) nicht mehr ausgeführt, da
wenigstens ein reservierter Speicherabschnitt schon während des
Schritts c) der vorhergehenden Aktualisierung gelöscht worden
ist. Folglich werden bei weiteren Aktualisierungen, Schritt e),
nur die Schritte b) bis d) nochmals ausgeführt, d. h. ein einziger Löschschritt,
Schritt d), was einen Nettogewinn an Zeit bei der Ausführung zur
Folge hat.
-
Gemäß einer
zweiten Ausführungsform
des Verfahrens, in 2 dargestellt, ist vorgesehen,
jedem der reservierten Speicherabschnitte einen Steuersektor (SCSR)
zuzuordnen. Dieser Steuersektor ermöglicht insbesondere zu bestimmen,
ob der zugeordnete reservierte Speicherabschnitt (SRD) insofern verwendet
wird, als er Daten enthält,
oder ob der betreffende reservierte Speicherabschnitt (SRD) insofern
verfügbar
ist, als er zuvor gelöscht
worden ist.
-
Vorteilhaft
hängt die
Größe dieses
Steuersektors von der Anzahl der nicht reservierten Speicherabschnitte
(SM), die aktualisiert werden können, ab.
So sollte beispielsweise für
einen Speicher, der 62 nicht reservierte Speicherabschnitte enthält, ein Steuersektor
von wenigstens 6 Bit vorgesehen werden, um die Nummer des zu aktualisierenden
Abschnitts angeben zu können,
die seiner Adresse im Speicher entspricht. Folglich ermöglicht das
Lesen dieses Steuersektors, nicht nur zu wissen, ob in dem zugeordneten
reservierten Speicherabschnitt Daten enthalten sind, sondern auch,
welchem zu aktualisierenden nicht reservierten Speicherabschnitt
diese Daten entsprechen.
-
Gemäß dieser
zweiten Ausführungsform
unterscheidet sich der erste Schritt a) der Initialisierung von
jenem, der im Rahmen der ersten Ausführungsform ausgeführt wird,
dadurch, dass er darin besteht, nicht nur einen reservierten Speicherabschnitt
(SRA) zu löschen,
wenn zuvor keiner gelöscht
worden ist, sondern auch gleichzeitig den diesem reservierten Speicherabschnitt
zugeordneten Steuersektor (SCSRA) zu löschen. Da diese Löschoperationen
zeitgleich ausgeführt
werden, resultiert daraus kein Zeitverlust im Vergleich zum Schritt
a) der ersten Ausführungsform.
Außerdem
weist diese Operation den Vorteil auf, dass schnell und einfach
bestimmt werden kann, welcher reservierte Speicherabschnitt (SRD)
verfügbar
ist, indem ein Lesen nur der Steuersektoren (SCSR) der reservierten
Speicherabschnitte durchgeführt
wird.
-
Der
Schritt b) ist jenem ähnlich,
der im Rahmen der ersten Ausführungsform
des Verfahrens beschrieben wurde, und wird deshalb hier nicht noch einmal
aufgegriffen.
-
Wenn
der Schritt b) erst einmal ausgeführt ist, wird ein zusätzlicher
Schritt f) ausgeführt.
Dieser Schritt f) besteht darin, eine Information in den Steuersektor
(SCSRU) des vorher bei dem Schritt b) verwendeten reservierten Speicherabschnitts
einzuschreiben, die die Verwendung dieses Letzteren angibt. In dem
vorteilhaften Fall, in dem die Größe des Steuersektors an die
Anzahl der nicht reservierten Speicherabschnitte angepasst ist,
entspricht die eingeschriebene Information der Nummer oder der Adresse
des zu aktualisierenden nicht reservierten Abschnitts (SM).
-
Folglich
genügt
es im Fall einer plötzlichen Unterbrechung
des Verfahrens, einfach den Inhalt der verschiedenen Steuersektoren
der reservierten Speicherabschnitte (SCSR) zu lesen, um erstens
jenen zu bestimmen, der Daten enthält, die eventuell nicht gültig aktualisiert
werden konnten, und zweitens den nicht reservierten Speicherabschnitt
zu bestimmen, dem die gültigen
Daten des reservierten Speicherabschnitts entsprechen.
-
Der
Schritt c) unterscheidet sich von jenem, der im Rahmen der ersten
Ausführungsform
ausgeführt
wird, dadurch, dass er darin besteht, nicht nur einen reservierten
Speicherabschnitt (SRB), der von jenem, der zum Sichern des zu aktualisierenden
nicht reservierten Speicherabschnitts verwendet wurde sowie von
diesem Letzteren verschieden ist, sondern gleichzeitig auch den
Steuersektor (SCSRB), der diesem weiteren reservierten Speicherabschnitt
(SRB) zugeordnet ist, zu löschen.
Daraus resultiert kein Zeitverlust im Vergleich zum Schritt c) der
ersten Ausführungsform.
Außerdem
weist diese Operation den Vorteil auf, dass schnell und einfach
bestimmt werden kann, welcher reservierte Speicherabschnitt (SRD)
im Hinblick auf die nächste
Aktualisierung und insbesondere während des Schritts b) dieser
weiteren Aktualisierung verfügbar
ist.
-
Der
Schritt d) ist jenem ähnlich,
der im Rahmen der ersten Ausführungsform
des Verfahrens beschrieben wurde, und wird deshalb hier nicht noch einmal
aufgegriffen.
-
Der
Schritt e) besteht darin, alle Schritte vom Schritt b) bis zum Schritt
d), selbstverständlich
einschließlich
des zusätzlichen
Schritts f), für
jede weitere Aktualisierung zu wiederholen.
-
Gemäß einer
Variante der zweiten Ausführungsform
des Verfahrens ist vorgesehen, alle Steuersektoren (SC) der reservierten
Speicherabschnitte in ein und derselben Speicherzone zusammenzufassen,
um ihre Abfrage zu erleichtern.
-
Selbstverständlich sind
weitere Ausführungsformen
des Aktualisierungsverfahrens denkbar, vorausgesetzt, dass die Daten
auch im Fall einer Unterbrechung des Verfahrens immer noch zurückgewinnbar
sind, dass der Speicherort dieser Daten immer noch einfach bestimmbar
ist und dass die Dauer einer Aktualisierung insofern minimal ist,
als das Löschen
der reservierten und nicht reservierten Abschnitte gleichzeitig
ausgeführt
wird.
-
Außerdem sei
angemerkt, dass es möglich ist,
einen zusätzlichen
Schritt vorzusehen, der darin besteht, den gesamten Steuersektor
mit 0 zu programmieren, um anzugeben, dass das Programmieren oder
Schreiben, das für
die Aktualisierung ausgeführt
wurde, fehlerfrei ausgeführt
worden ist.
-
Schließlich sei
angemerkt, dass es erforderlich ist, einen guten Kompromiss zwischen
der Anzahl der reservierten und nicht reservierten Speicherabschnitte
zu finden. Es ist nämlich
vorteilhaft, die Mindestanzahl reservierter Speicherabschnitte,
d. h. wenigstens 2, zu haben, um einen größtmöglichen Nutzspeicherraum zu
haben. Dagegen ist es ebenfalls vorteilhaft, eine große Anzahl
reservierter Speicherabschnitte zu haben, um die Lebensdauer des Speichers
zu verlängern,
da die Anzahl der Löschzyklen
für jeden
Teilabschnitt beschränkt
ist. Ein effizienter Kompromiss läuft darauf hinaus, 1/8 des
Speicherraums für
die reservierten Speicherabschnitte zu verwenden.