-
Die
Erfindung betrifft ein Verfahren zur Durchführung eines sequentiellen Datenzugriffes
auf einen Speicher mittels eines maschinenlesbaren Programms gemäß dem Anspruch
1.
-
Aus
dem Stand der Technik sind sogenannte Flash-Speicherbausteine bekannt.
Flash-Speicherbausteine sind digitale Speicherchips, die auch als
Flash-EEPROM bekannt sind. Im Gegensatz zu gewöhnlichen EEPROM-Speichern lassen
sich aber bei einem Flash-EEPROM die kleinsten adressierbaren Speichereinheiten,
nicht einzeln löschen,
denn ein Flash-Speicher ist mittels feingranularer Speicherstrukturen
(z. B. Flash-Pages) realisiert, welche als Ganzes gelöscht werden
müssen,
sofern man ihren Dateninhalt ersetzten will. Für den Zugriff auf den Speicher
umfassen diese Speicherbausteine in der Regel ein paralleles oder
ein serielles Kommunikationsinterfaceinterface. Insbesondere Bausteine
mit seriellem Kommunikationsinterfaceinterface (SPI) werden nachfolgend
betrachtet, weil diese sehr kompakt realisiert und für die geplanten
Anwendungen optimal geeignet sind. Unter Verwendung einer externen
Datenverarbeitungseinheit ist ein Speicherzugriff auf den Flash-Speicher
mittels des seriellen Interfaces jederzeit möglich. Für den Zugriff hält der Flash-Speicher
einen Befehlssatz bereit, mittels dessen interne Speicheroperationen
des Flash-Bausteins ausführbar
sind.
-
Die
Verwendung des seriellen Kommunikationsinterfaces bringt jedoch
den Nachteil mit sich, dass beim Zugriff auf den Flash-Speicher
im Falle der Aktualisierung z. B. einer Flash-Page die komplette
Datenlast mittels der seriellen Schnittstelle zu bewältigen ist.
Die externe Datenverarbeitungseinheit muss beispielsweise zur Änderung
eines Datums in einer Page die komplette Page auslesen, das Datum
modifizieren und anschließend
zurück
schreiben. Während
dieses gesamten Zeitraumes ist zumindest diejenige Task, welche
die Kommunikation übernimmt,
aktiv und damit blockiert. Je nach Anwendungsfall sind sehr häufig Aktualisierungen von
Pages erforderlich. Dementsprechend hoch ist der Kommunikationsaufwand.
-
Die
Erfindung verwendet einen Flash-Speicher, welcher eine Schnittstelle
zur Realisierung eines sequentiellen Zugriffes auf den Speicher,
eine integrierte Datenverarbeitungseinheit, eine Vielzahl von voneinander
unabhängigen
und mittels Adressierung einzeln zugänglichen und bezüglich der
Daten nichtflüchtigen Speicherabschnitten
umfasst. Zusätzlich
ist ein von den Speicherabschnitten separat ausgebildeter und separat
adressierbarer integrierter flüchtiger
zweiter Speicher als Datenpuffer umfasst.
-
Der
integrierte flüchtige
zweite Speicher (Datenpuffer) befindet sich zwischen dem seriellen
Kommunikationsinterface (SPI) und dem eigentlichen nichtflüchtigen
Flash-Speicher. Es handelt sich um einen SRAM-Puffer mit der Größe zum Beispiel
einer Flash-Page.
-
Eine Änderung
von in einem nichtflüchtigen
Speicherabschnitt abgelegten Daten erfolgt erfindungsgemäß unter
Verwendung des Datenpuffers mittels eines von dem Datenverarbeitungsmittel
verarbeitbaren und für
den Speicher spezifischen Befehlessatzes. Der Datenpuffer kann mittels
des speichereigenen Befehlssatzes unter Verwendung des seriellen
Kommunikationsinterfaces gelesen und beschrieben werden. Komplette Pages
werden aus dem Flash-Speicher in den der Datenpuffer zwecks Änderung
einzelner Bytes übertragen und
anschließend
zurück
geschrieben. Diese Vorgänge
laufen speicherintern ab, ohne dass die externe Datenverarbeitungseinheit
nennenswerte Rechenleistung aufbringen müsste oder eine Task übermäßig lange
aktiv sein müsste.
-
Dies
reduziert die erforderliche Kommunikation zwischen einer externen
Datenverarbeitungseinheit und dem Flash-Speicher erheblich und begrenzt
diese lediglich auf die Übertragung
der speicherspezifischen Befehle.
-
Eine Übertragung
des gesamtes Speicherinhaltes der Pages an die Datenverarbeitungseinheit
ist nun nicht mehr erforderlich. Dementsprechend weniger Rechenkapazität benötigen die
auf der Datenverarbeitungseinheit ablaufenden Tasks, so dass die
Rechenkapazität
anderen Aufgaben zur Verfügung
steht. Auch das serielle Kommunikationsinterface wird dabei nicht
für die
gesamte Dauer des Datenzugriffs blockiert.
-
Vorzugsweise
werden im Rahmen des erfindungsgemäßen Verfahrens in einem ersten
Schritt Daten von einem Speicherabschnitt ausgelesen und in den
Datenpuffer geschrieben, wobei in einem zweiten Schritt die Daten
im Datenpuffer modifiziert werden, und wobei in einem dritten Schritt
die modifizierten Daten aus dem Datenpuffer ausgelesen und in einen
Speicherabschnitt zurückgeschrieben
werden. Dieser Speicherabschnitt kann identisch mit dem zuvor ausgelesenen
Speicherabschnitt sein, es kann sich aber auch um einen anderen
Speicherabschnitt handeln. Gegebenenfalls wird es erforderlich den
Speicherabschnitt vor dem erneuten Beschreiben zu löschen.
-
Die
Vorteile dieser Lösungen
kommen beispielsweise zum Tragen bei der Regelung von elektrischen Antrieben,
da hierbei mittels der externen Datenverarbeitungseinheit permanent
Regelparameter verarbeitet und im Flash-Speicher abgelegt werden
müssen.
Stünde
der Datenverarbeitungseinheit wegen der permanenten Speicherzugriffe
nicht genügend
Rechenleistung zur Verfügung,
so könnte
die Datenverarbeitungseinheit die Regelungsaufgaben gegebenenfalls
nicht mehr mit der erforderlichen Geschwindigkeit abarbeiten. Trotz Verwendung
einer seriellen Datenübertragung
kann nun insbesondere auch bei häufig
wiederkehrenden Speicher- und Aktualisierungsanforderungen ein sehr
zeiteffizienter Speicherzugriff erfolgen und gleichzeitig können Soll-
und Istwerte beispielsweise zu Regelzwecken verarbeitet werden.
-
Bei
Flash-Speichern können,
wie zuvor schon angedeutet, Daten nur in zuvor gelöschte Speicherzellen
geschrieben werden. Ein Löschen
kann häufig
nur sektorweise, also über
größere Bereiche
hinweg erfolgen.
-
Aus
diesem Grunde muss von der externen Datenverarbeitungseinheit, welche
den Flash-Speicher ansteuert, in der Regel ein Reorganisationsverfahren
ausgeführt
werden, welches den kompletten löschbaren Bereich
im Flash umkopiert und dabei partiell aktualisiert. Besonders bevorzugt
wird daher eine Mehrzahl von Speicherabschnitten zu einem Speicherbereich
zusammengefasst und die Adressen der Speicherabschnitte werden zusammenhängend in
einem vom nichtflüchtigen
Speicher oder vom Datenpuffer separaten externen Datenspeicher (z.
B. Arbeitsspeicher) der Datenverarbeitungseinheit (z. B. Mikrocontroller)
abgespeichert. Dies ermöglicht
eine einfache Verwaltung der Flash-Speicherabschnitte mittels der
externen Datenverarbeitungseinheit.
-
Vorteilhafterweise
ist zumindest einem Speicherabschnitt eine erste Zählvariable
zur Zählung
von Speicherzugriffen zugeordnet, welche während eines Speicherabschnittzugriffes
verändert
wird. Der Inhalt der Zählvariable
wird in dem der jeweiligen Zählvariable
zugeordneten Speicherabschnitt (z. B. Flash-Page) abgespeichert.
Für jeden
Speicherabschnitt wird somit ein sogenannter „Alterungszähler” realisiert
(z. B. 32-Bit-Wert), welcher zusätzlich
zu den eigentlichen Daten im Speicherabschnitt abgespeichert wird.
Mittels des „Alterungszählers” ist eine
Aussage bezüglich
der bisher erfolgten Anzahl der Zuggriffe (z. B. Schreibzugriffe)
auf den Speicherabschnitt möglich,
da ein Flash ja bekanntlich mit jedem Schreibzugriff altert und
mit der Zeit seine Fähigkeit
verliert, Daten nichtflüchtig
zu speichern.
-
Bevorzugt
wird jedem Speicherabschnitt eine zweite Zählvariable zur Zählung von
Speicherzugriffen zugeordnet. Diese wird jedoch im Gegensatz zur
ersten Zählvariablen
nicht während
des Speicherzugriffes, sondern erst nach Abschluss eines Speicherabschnittzugriffes
verändert.
Der Inhalt dieser Zählvariablen
kann in einem, ggf. vom Flash-Speicher separaten, nichtflüchtigen
Speicher, welcher für
die Datenverarbeitungseinrichtung zugänglich ist, gespeichert werden.
Stimmen die erste und die zweite Zählvariable nicht überein,
so können
hieraus Rückschlüsse bezüglich der
Gültigkeit
des aus der ersten Zählvariablen
abgeleiteten Alters einer Page gezogen werden. Die zweite Zählvariable
wird von einem auf der Datenverarbeitungseinrichtung ablaufenden
Speichererwaltungssystem remanent gesichert, so dass sie auch nach
einem Abschalten des Systems wieder zur Verfügung steht.
-
Eine
sogenannte Adressenzuordnungstabelle ist vorgesehen, mittels welcher
die physikalischen ersten Adressen von Speicherabschnitten logischen
zweiten Adressen der Speicherabschnitte zugeordnet werden. Somit
kann ein mittelbarer Datenzugriff über logische Adressen mittels
der Adressenzuordnungstabelle auf die Speicherabschnitte realisiert
werden. Die logische Adresse wird in dem der logischen Adresse zugeordneten
Speicherabschnitt zusätzlich
als Datum mit abgespeichert, wodurch dieser Speicherabschnitt eindeutig
identifiziert werden kann. Exemplarisch sei P = {P1,
..., Px} die Menge der im Flash zu sichernden
Daten. Zur Sicherung der Daten werden im Flash zum Beispiel eine
Menge zusammenhängender
Pages reserviert. Diese Menge wird als Daten-Sicherungsbereich (DSB)
bezeichnet. Zu jedem Datum Pk mit k = 1
... x werden zwei 16-Bit-Werte vorgehalten: Der Pagelist-Index Ik und der Page-Offset Ok.
Diese Werte sind konstant und werden während der Betriebszeit eines
auf der Datenverarbeitungseinheit ablaufenden Daten-Verwaltungssystems
nie geändert.
-
Die
Adressenzuordnungstabelle enthält
bei Position Ik die physikalische Adresse
der Page im Flash, in welcher das Datum Pk beginnt.
Falls das Datum sich über
mehrere Flash-Pages erstreckt, ist bei Position „Ik +
d” der
Adressenzuordnungstabelle die Adresse der d-ten Fortsetzungs-Page im Flash vorgesehen.
Beginnen zwei Daten Pi und Pk in
derselben Page m, so ist der Pagelist-Index Ii identisch
mit Ik. Der Page-Offset Ok gibt
an, ab welchem Byte-Offset in der Page mit dem Index Ik das
Datum Pk beginnt.
-
Der
weiter oben erwähnte
Datensicherungsbereich (DSB) ist vorzugsweise dadurch gekennzeichnet, dass
in der Adressenzuordnungstabelle logische erste und physikalische
zweite Adressen von diesem Bereich zugeordneten Speicherabschnitten
abgelegt werden. Dieser Datensicherungsbereich kann für einen
aktuell laufenden Datenverarbeitungsprozess reserviert werden.
-
Vorzugsweise
wird die Adresszuordnungstabelle automatisch erzeugt, wobei die
Zuordnung einer physikalischen Adresse zu einer logischen Adresse
unter Verwendung der logischen Adresse und unter Verwendung der
ersten Zählvariablen
derart erfolgt, dass nur diejenigen physikalischen Adressen einer
logischen Adresse zugeordnet werden, deren Speicherabschnitte die
höchsten
Zählerstände für den Alterungszähler aufweisen.
Hierdurch kann beispielsweise nach einem Neustart des auf der Datenverarbeitungseinheit
ablaufenden Speicherverwaltungssystems die Adressenzuordnungstabelle
eindeutig und vollautomatisch rekonstruiert werden. Eine remanente
Sicherung von Daten ist nicht erforderlich. Bei der Rekonstruktion
der Adressenzuordnungstabelle wird unter mehreren Pages, welche
im Flash ggf. die gleiche logische Adresse beinhalten, die Adresse
jener Page als physikalische Page-Adresse für die Adresszuordnungstabelle
ausgewählt,
deren Alterungsdatum (erste Zählervariable)
am jüngsten
(höchster
Zählerstand)
ist. Der Zählerstand
darf jedoch nicht jünger
sein als der des separat remanent gesicherten Alterungszählers, welcher
mittels der zweiten Zählervariable
realisiert ist.
-
Die
letzte Bedingung ist notwendig, damit bei Sicherung eines sich über mehrere
Pages erstreckenden Datums keine Inkonsistenzen entstehen können, wenn
nicht alle zu aktualisierenden Pages gesichert werden konnten (z.
B. wegen eines Stromausfalles). Die Inkonsistenzen werden vermieden,
wenn der aktuelle Alterungszähler
(zweite Zählvariable),
der vor jedem Abschalten des Speicherverwaltungssystems remanent
gesichert wird, erst nach dem vollständigem Sichern der Pages weitergezählt wird.
Vorzugsweise wird die logische Adresse eines Speicherabschnittes
im Rahmen der Erstellung der Adresszuordnungstabelle verworfen, sofern
sich die erste dem Speicherabschnitt zugeordnete Zählvariable
und die zweite remanent gespeicherte Zählvariable voneinander derart
unterscheiden, dass die erste Zählvariable
eine höhere
Speicherzugriffsanzahl impliziert als die zweite Zählvariable.
-
Um
unabhängig
von der Speicherhardware oder einem Speicherhersteller zu bleiben,
erfolgt der Zugriff auf die in den Speicherabschnitten abgelegten
Daten vorzugsweise ausschließlich
unter Verwendung ihrer logischen Adresse. Daten werden in einen
Speicherabschnitt vorzugsweise beginnend ab einer Versatzadresse
geschrieben, wobei jedem Datum der zuvor schon erwähnter Page-Offset (Versatzadresse)
und ein Page-Index (logische Adresse) zugeordnet wird.
-
Mittels
des aktuell laufenden Datenverarbeitungsprozess, welcher auf den
nichtflüchtigen
Speicher zugreift, werden unbenutzte logische Adressen von Speicherabschnitten
in eine Listenstruktur übertragen
und mittels der Listenstruktur (sogenannte Freiliste) verwaltet.
-
Diese
Liste wird im Arbeitsspeicher (RAM) des auf einer Datenverarbeitungseinrichtung
ablaufenden Speicherverwaltungssystems vorzugsweise in Form einer
Warteschlangenstruktur (FIFO) für
alle aktuell unbenutzten Speicherbereiche (z. B. Flash-Pages) des
Datensicherungsbereiches vorgehalten. Mittels des Alterungszählers kann
auch die sogenannte Freiliste nach einem Neustart des Speicherverwaltungssystems
leicht rekonstruiert werden. Für
jeden Speicherabschnitt (z. B. Page) des Datensicherungsbereiches
wird zur Realisierung einer solchen Rekonstruktion die Adressenzuordnungstabelle
durchlaufen. Falls eine Page des Datensicherungsbereiches nicht
in der Adressenzuordnungstabelle vorhanden ist, wird sie in die
Freiliste aufgenommen. Die Abfolge der Pages in der Freiliste wird
anhand der in der Page abgelegten Alterungsinformation derart bestimmt,
daß die
Pages mit steigendem Alter näher
am Ausgang der der FIFO liegen.
-
Die
erfindungsgemäßen Vorteile
ergeben sich insbesondere in Verbindung mit einer parametrierbaren Einrichtung
zum Betrieb eines Servomotors, umfassend einen Speicher, insbesondere
einen Flash-Speicher, in
dem Parameter der Einrichtung abgelegt sind, sowie umfassend ein
Mittel zur Verarbeitung der in dem Speicher abgelegten Parameter,
wobei das Mittel derart realisiert ist, dass ein Datenzugriff auf
die Parameter gemäß einem
der vorhergehenden Verfahrensansprüche mittels eines maschinenlesbaren
Programms erfolgt. Gleiches gilt auch für ein Antriebssystem umfassend
eine erfindungsgemäße Einrichtung
und einen Servomotor, welcher mittels der Einrichtung regelbar ist.
-
Zusammenfassend
werden hier noch einmal die wesentlichen Vorteile des erfindungsgemäßen Verfahrens
bzw. der erfindungsgemäßen Einrichtungen
aufgeführt:
Auch
bei nichtdeterministisch auftretenden Speicheranforderungen wird
die Alterung aller Flash-Pages überwacht
und der Datenzugriff kann dementsprechend koordiniert werden.
-
Direkte
Verwaltung von Flash-Pages: Nur sich ändernde Pages eines über mehrere
Pages sich erstreckenden Datums sind zu schreiben.
-
Die
Kommunikation zwischen der externen Datenverarbeitungseinrichtung
und dem Flash-Speicher beschränkt
sich auf die tatsächlich
zu ändernden
Daten. Die übrigen
Daten einer zu aktualisierenden Page müssen nicht aus dem Flash ausgelesen
werden. Es wird keine Reorganisation der Daten-Pages erforderlich.
-
Fast
alle Verwaltungsdaten (z. B. Adressenzuordnungstabelle, Freiliste)
können
bei einem Neustart des Verwaltungssystems rekonstruiert werden und
müssen
nicht remanent gesichert werden.
-
Beispielhaft
wird nachfolgend eine Datenaktualisierung für einen Datensatz erläutert, welcher
sich über
mehrere Pages eines Flash-Speicherbausteines
mit seriellem (SPI) Kommunikationsinterface erstreckt.
-
Es
sei Pi ein zu aktualisierendes Datum, und
Sk die d-te Fortsetzungs-Page, in welcher die zu aktualisierende
Stelle des Datums liegt. Mit Ii + d kann
somit die Page Sk unter Verwendung der Adressenzuordnungstabelle
adressiert werden. Es sei weiter Su das
oberste Element der im RAM gebildeten Freiliste F für Flash-Pages.
- 1. Pageadresse Su wird
aus F entfernt.
- 2. Page Sk wird in den internen SRAM-Puffer
des Flash geladen.
- 3. Datum und Alterungsinformation von Sk wird
im Puffer aktualisiert.
- 4. Su mit dem Pufferinhalt beschrieben
(zuvor Löschen
von Su).
- 5. Die Adresse Ii + d wird durch die
Adresse von Su ersetzt. (siehe Tabelle 1
und 2).
- 6. Pageadresse Sk wird ungelöscht an
die Freiliste F angehängt.
Adressenzuordnungstabelle |
Position | Inhalt |
Ii | v |
Ii + 1 | ... |
... | ... |
Ii + d | k u |
Tab
1: Adressenzuordnungstabelle
-
Adresse
k wurde durch Adresse u der Page S
u in der
Adressenzuordnungstabelle ersetzt.
Flash |
Page | Offset | Page-Inhalt |
Sv | 0 | ... |
| Oi | Beginn
des Datums Pi |
... | | |
Sk | 0 | d-te
Fortsetzung des Datums Pi (vor Update) |
... | | |
Su | 0 | d-te
Fortsetzung des Datums Pi (nach Update) |
Tab
2: Inhalt des Flash
- FIFO-Freiliste vor Update: F = {TOP: Su, ...}
- FIFO-Freiliste nach Update: F = {TOP: ..., Sk}
-
Ein
Problem kann noch entstehen, wenn zuletzt nur eine partielle Sicherung
durchgeführt
wurde, d. h. im Flash bereits Pages existieren mit einem höheren Alterungsindex,
als dies der wiederhergestellte aktuelle Alterungszähler angibt.
Wird der Zähler
nun im Zuge folgender Updates weitergezählt, kann es zu Dateninkonsistenzen
kommen, wenn zufällig
eine erneute Aktualisierung des Datums, dessen Aktualisierung nur
partiell durchgeführt
werden konnte, ansteht.
-
Das
Problem kann mit folgender Vorgehensweise vermieden werden: Die
logische Page-Adresse mit dem Wert 0 (Null) wird als „ungültig” definiert
und nicht als Adresse den zu sichernden Daten zugeordnet. Die logische
Page-Adresse von Pages, die bei einem Neustart jünger sind, als der remanent
gesicherte aktuelle Alterungszähler,
wird durch einfaches Überschreiben
(d. h. ohne voriges Löschen
der Page) auf Null gesetzt. Die so ungültig gemachten Pages können somit
bei einem späteren
Neustart nicht in die Adressenzuordnungstabelle aufgenommen werden,
da sie keine gültige
logische Page-Adresse beinhalten, andererseits werden sie – aufgrund
des noch immer vorhandenen Alterungsdatums – stets zeitlich korrekt in
die Freiliste eingefügt. Damit
kann der Alterungszähler
beim nächsten
Daten-Sicherungsvorgang
ohne weitere Betrachtung wie gewohnt weitergezählt werden.
-
Nachdem
bei einem Neustart des Verwaltungssystems – wie oben beschrieben – die Adressenzuordnungstabelle
rekonstruiert wurde, kann auch die Freiliste rekonstruiert werden.
-
Erreicht
der Alterungswert einer Page einen bestimmten Zählerstand kann diese durch
Pages aus der Freiliste ersetzt werden.