-
Stand der Technik
-
Die
Erfindung betrifft ein Verfahren zum Auslesen von Daten aus einem
Speichermedium nach Anspruch 1 und ein Speichermedium nach Anspruch
11.
-
Auf
Hardware-Speicherbausteinen, wie beispielsweise EEPROM- oder Flash-Speichern,
werden z. B. nicht-flüchtige
Steuergerätedaten
abgelegt. Hierzu werden unterschiedliche Dateisysteme, d. h. Speicherlayout-Strategien
verwendet.
-
Eine
typische Layout-Strategie besteht darin, den Speicher in Blöcke gleicher
Größe zu unterteilen und
in diesen Blöcken
die eigentlichen Daten abzulegen. Zusätzlich zu diesen Daten wird
für jeden
Block eine Verwaltungsinformation benötigt. Die Verwaltungsinformation
für einen
Block kann unter anderem darüber
Aufschluss geben, ob ein Block frei oder belegt ist, welche Länge die
im Block gespeicherten Daten haben, welche Checksumme/CRC (Cyclic
Redundancy Check) die Daten haben, und so weiter.
-
Bei
einigen Steuergeräten
wird ein derartiges blockorientiertes EEPROM-Dateisystem eingesetzt.
Diese Art der Layout-Strategie findet sich beispielsweise auch beim
FAT(File Allocation Table)-Dateisystem für Festplatten wieder. Die Anwendung
von blockorientierten Dateisystemen ist demnach nicht auf EEPROM-Speicher
begrenzt.
-
Eine
weitere Layout-Strategie besteht darin, den Speicher in zwei Segmente
zu unterteilen, wobei ein Segment das jeweils aktive Segment ist.
Neue Daten werden im aktiven Segment jeweils an die bereits geschriebenen
Daten angefügt.
Sobald das aktive Segment gefüllt
ist, werden die aktuellen Daten in das passive Segment gerettet.
Nun tauschen das aktive und das passive Segment ihre Rollen aus,
und das – nun
passive – gefüllte Segment
kann gelöscht
werden. Es steht damit wieder zur Speicherung zur Verfügung, sobald
das nun aktive Segment gefüllt
ist. Ein derartiges System mit eventuell auch mehr als zwei Segmenten
wird in zukünftigen
Steuergeräten
mit Flash-Speichern zum Einsatz kommen.
-
Eine
besondere Eigenschaft derartiger Dateisysteme besteht darin, dass
es keine fixe Zuordnung von einem Bereich des Speichermediums zu
den dort abgelegten Daten gibt. In demselben Bereich auf dem Speichermedium
können
zu unterschiedlichen Zeiten jeweils unterschiedliche Daten abgelegt
werden. Dies bedeutet, dass für
das Lesen eines konkreten Datums von dem Speichermedium ein Mechanismus
erforderlich ist, um das Datum auf dem Speichermedium auffinden
zu können,
d. h. die Bereiche zu identifizieren, in denen sich das Datum zu
dem gegebenen Zeitpunkt befindet.
-
Als
Mechanismus zum Auffinden von Daten werden bei Festplatten typischerweise
sogenannte Verzeichnisse (directories) verwendet. Diese Verzeichnisse
enthalten eine Zuordnung von einer Kennung des Datums, typischerweise
einen Dateinamen, zu der Liste der Blöcke, in denen sich das Datum
befindet.
-
In
einigen Steuergeräten
mit EEPROM-Speichern wird dagegen ein anderer Mechanismus verwendet, bei
welchem jeder Block eine Information darüber enthält ob er frei ist, oder gegebenenfalls
die Kennung des im Block abgelegten Datums (eine Nummer). Es gibt
auch Daten, die so umfangreich sind, dass sie nicht in einem einzelnen
Block unterzubringen sind. Solche Daten werden auf mehrere Blöcke verteilt,
wobei die betroffenen Blöcke
zu einer Sequenz, d. h. einer verketteten Liste, verbunden werden.
Daher enthält
ein Block zudem noch die Information darüber, ob er der erste Block
der Sequenz ist, und ggf welcher Block der Nachfolger ist.
-
Das
Suchen nach einem konkreten Datum stellt sich bei dem blockorientierten
Dateisystem nach dem Stand der Technik wie folgt dar. Es werden
alle Blöcke
des Speichermediums in einer bestimmten Reihenfolge, z. B. vom ersten
bis zum letzten Block untersucht, bis ein Block gefunden wird, der
die folgenden Kriterien erfüllt:
Der Block ist belegt, es ist der erste Block in der Sequenz, und
die Kennung des im Block befindlichen Datums entspricht der Kennung
des gesuchten Datums.
-
Dabei
ergeben sich zwei Möglichkeiten:
a) Sofern ein solcher Block gefunden wird, kann das gesuchte Datum
gelesen werden. Über
die Verkettung der Blöcke
vom Vorgänger
zum Nachfolger werden alle zu dem Datum gehörenden weiteren Blöcke gefunden.
b) Sofern kein solcher Block gefunden wird, ist das gesuchte Datum
auf dem Speichermedium nicht vorhanden.
-
Ein
Problem dieses Verfahrens nach dem Stand der Technik ist die potentiell
lange Dauer, die zum Einlesen mehrerer Daten benötigt wird. Wird jedes Datum
individuell angefordert, dann ist jedes Mal die Suche über alle
Blöcke
des Speichermediums durchzuführen.
Wird beispielsweise die Verteilung der Daten über das Speichermedium als
zufällig
angenommen, dann sind bei der Suche nach einem Datum auf einem blockorientierten
Dateisystem mit b Blöcken
erwartungsgemäß (b + 1)/2
Blöcke
zu untersuchen bis das gewünschte
Datum gefunden wird. Bei d zu suchenden Daten ergibt sich eine Zahl
von d·(b
+ 1)/2 zu untersuchenden Blöcken. Im
schlechtesten Fall kann die Zahl jedoch noch höher liegen.
-
Problematisch
an dieser Zahl zu untersuchender Blöcke – und der damit verbundenen
Rechenzeit – ist
die Tatsache, dass bei Steuergeräten
typischerweise die meisten Daten des Systems in der Startphase eingelesen
werden müssen.
Die für
diese Startphase verfügbare
Rechenzeit ist dagegen zumeist sehr kurz.
-
Offenbarung der Erfindung
-
Es
ist Aufgabe der vorliegenden Erfindung, Daten aus einem Speichermedium
schneller auszulesen.
-
Diese
Aufgabe wird durch ein Verfahren zum Auslesen von Daten aus einem
Speichermedium, welches die Daten in Bereichen verteilt speichert,
gelöst,
wobei jedem Bereich eine Bereichskennung in Abhängigkeit des jeweils im Bereich
gespeicherten Datums zugeordnet wird, wobei das Verfahren die Schritte
enthält:
a) Zuordnen von jeweils einer Datumskennung entsprechend einem auszulesenden
Datum; b) Gruppieren der Datumskennungen in zumindest eine Gruppe;
c) Durchführen
eines Suchalgorithmus, bei welchem bereichsweise und gruppenweise
die Bereichskennung im jeweiligen Bereich mit den in der Gruppe
enthaltenen Datumskennungen verglichen wird, und, wenn eine der
Datumskennungen einer Bereichskennung entspricht, das jeweilige
Datum aus dem Bereich ausgelesen wird.
-
Ein
wesentlicher Punkt der vorliegenden Erfindung besteht dabei darin,
dass ein Lesen mehrerer Daten dadurch beschleunigt wird, indem nicht
jedes Datum einzeln angefordert wird, sondern indem beim Durchsuchen
des Speichermediums zugleich nach Gruppen von zu lesenden Daten
Ausschau gehalten wird. Genauer gesagt, anstatt beispielsweise das
Speichermedium nacheinander nach den Daten A, B, C und D zu durchsuchen,
wird das Speichermedium nur einmal durchsucht. Dabei wird jeder
Bereich des Speichermediums darauf überprüft, ob er eines der Daten A,
B, C oder D enthält.
Wird ein Datum der gesuchten Daten gefunden, wird es eingelesen,
die Suche nach weiteren Daten danach aber fortgesetzt. So können sämtliche
Daten in einem einzigen Durchgang durch das Speichermedium ausgelesen
werden.
-
Es
kann Situationen geben, bei denen Daten in mehreren Schritten gelesen
werden müssen.
Zum Beispiel kann es nötig
sein, dass ein Teil eines Systems sehr schnell nach dem Start des
Systems verfügbar
sein muss, z. B. ein Gateway im Fahrzeug. In so einem Fall würden auch
die Daten dieses Systemteils sehr schnell benötigt. Das Verfahren erlaubt
in so einem Fall, die Daten entsprechend zu gruppieren. Die Daten
A, B, C und D werden beispielsweise in zwei Gruppen, z. B. Gruppen
(A, B) und (C, D), unterteilt. Dann wird das oben beschriebene Verfahren
einmal für
die Gruppe A, B und ein weiteres Mal für die Gruppe C, D durchgeführt. Die Daten
(A, B) sind somit schneller verfügbar.
Das Verfahren ist auch bei diesem Beispiel noch vorteilhaft, da das
Speichermedium statt viermal nur zweimal durchsucht werden muss.
Somit kann sowohl die Dauer des Einlesens als auch die Vorhersagbarkeit
des Zeitbedarfs durch das erfinderische Verfahren wesentlich verbessert
werden.
-
Das
erfindungsgemäße Verfahren
ist insbesondere bei einem Speichermedium vorteilhaft, bei welchem
die Daten im Lauf der Zeit ihren Speicherort (Bereich) ändern. Daher
kann das Verfahren insbesondere bei einem Speichermedium angewendet
werden, welches keinerlei Verzeichnisse mit Verweisen über den Speicherort
der einzelnen Daten enthält.
Das Verfahren kann bei einem blockorientierten Speichermedium als auch
einem nicht-blockorientierten Speichermedium angewendet werden.
Die Bereiche können
Speicherbereiche innerhalb des Speichermediums mit einer einheitlich
festgelegten Datengröße (Blöcke) als
auch Speicherbereiche innerhalb des Speichermediums mit variabler
Datengröße sein.
Optional kann eine Lookup-Tabelle in einem RAM bereitgestellt sein,
welche Verweise über
den Speicherort von Daten enthält. Dadurch
wird ein Durchsuchen des Speichermediums vermieden, allerdings wird
dieser Vorteil durch eine Bereitstellung eines zusätzlichen
Speicherbereichs erkauft.
-
Vorzugsweise
enthält
der Suchalgorithmus-Schritt c) die Schritte: c1) Setzen eines Bereichszählers m und
eines Gruppenzählers
i; c2) Vergleichen der Bereichskennung im Bereich Bem mit den in
der Gruppe Gi enthaltenen Datumskennungen; c3) Auslesen des Datums
aus dem Bereich Bem, wenn eine der Datumskennungen einer Bereichskennung
entspricht; c4) Ändern
des Bereichszählers
m auf einen neuen Wert, und Wiederholen der Schritte c2) bis c3),
wenn der letzte Bereich nicht erreicht ist, oder Fortfahren mit
Schritt c5), wenn der letzte Bereich erreicht ist; c5) Ändern des
Gruppenzählers
i auf einen neuen Wert, und Wiederholen der Schritte c2) bis c4),
bis die letzte Gruppe erreicht ist.
-
Das
Verfahren bietet zahlreiche Vorteile an. Für ein blockorientiertes Dateisystem
gilt beispielhaft: d sei die Zahl der zu lesenden Daten, g die Zahl
der Gruppen und b die Zahl der Blöcke auf dem Speichermedium.
-
Ein
erster Vorteil ist, dass die mittlere Zahl zu untersuchender Blöcke kleiner
ist. Anstatt wie beim Stand der Technik im Mittel d·(b + 1)/2
Blöcke
zu untersuchen, werden bei dem vorgestellten Verfahren nur g·b Blöcke untersucht,
wobei g typischerweise gleich 1 oder zumindest deutlich kleiner
als d ist. Somit ergibt sich eine kürzere Dauer für das Einlesen
der Daten.
-
Ein
weiterer Vorteil ist, dass es keine Schwankungen bei der Zahl der
zu untersuchenden Blöcke
gibt. Im Falle des Standes der Technik ist die maximale Zahl zu
untersuchender Blöcke
gleich d·b,
wenn nämlich kein
Datum auf dem Speichermedium gefunden wird.
-
Die
minimale Zahl zu untersuchender Blöcke berechnet sich aus 1 +
2 + 3 + ... + d und kann somit aus der Gleichung (1 + d)·d/2 berechnet
werden, wenn nämlich
die ersten d Blöcke
bereits die gesuchten Blöcke sind.
-
Bei
dem erfindungsgemäßen Verfahren
dagegen werden genau g·b
Blöcke
untersucht. Folglich ist die Dauer für das Einlesen der Daten konstant
und zur Entwicklungszeit bekannt. Daher ergibt sich eine bessere Vorhersagbarkeit
des Systemverhaltens bezüglich
der Laufzeit.
-
Bei
einem Steuergerät
werden folgende beispielhafte Kennzahlen herangezogen:
– Anzahl
zu lesender Daten: | d = 15, |
– Anzahl
der Gruppen: | g = 1, und |
– Anzahl
der Blöcke
auf dem Speichermedium: | b = 50. |
-
Danach
sind nach dem Stand der Technik bestenfalls (1 + d)·d/2 =
120 Blöcke
zu untersuchen. Im Mittel sind d·(b/2) = 375 Blöcke zu untersuchen.
Im schlechtesten Fall sind d·b
= 750 Blöcke
zu untersuchen.
-
Hingegen
sind bei Anwendung des erfinderischen Verfahrens in jedem Fall lediglich
genau g·b
= 50 Blöcke
zu untersuchen.
-
In
einer vorteilhaften Ausgestaltung wird der Suchalgorithmus nacheinanderfolgend
vom ersten Bereich zum letzten Bereich durchgeführt.
-
Es
kann sich auch für
andere Dateisysteme ein Vorteil ergeben. Ein Vorteil ergibt sich,
sofern es keine feste Zuordnung von Bereichen des Speichermediums
zu den zu suchenden Daten gibt, und für das Einlesen eines bestimmten
einzelnen Datums eine Suche erforderlich ist. Somit würde bei
mehreren einzeln eingelesenen Daten das Speichermedium auch mehrfach
durchsucht. In solchen Fällen
kann sowohl die Dauer des Einlesens als auch die Vorhersagbarkeit
des Zeitbedarfs durch das hier beschriebene Verfahren verbessert
werden.
-
Im
Folgenden werden beispielhafte Konstellationen für ein nicht-blockorientiertes
Dateisystem dargestellt, bei welchem Daten in Bereichen abgelegt
sind. Allerdings können
auch hier die Daten in Blöcken
abgelegt sein. Der Inhalt eines Speichermediums wird dabei in folgender
Notation dargestellt:
[--, A1, B1, --, B2].
-
In
diesem Beispiel ist ein Speichermedium mit fünf Bereichen dargestellt, von
denen der erste und der vierte Bereich leer sind ('--'). Es gibt zwei Daten
A und B. Das Datum A ist in einem einzelnen Bereich unterzubringen,
der mit A1 gekennzeichnet ist. Dagegen ist das Datum B so umfangreich,
dass der Inhalt in zwei Bereichen untergebracht werden muss. B1
kennzeichnet den Bereich mit dem ersten Teil von Datum B, während B2
den Bereich mit dem zweiten Teil von Datum B darstellt.
-
Weiterhin
wird in den folgenden Beispielen davon ausgegangen, dass, wie oben
erwähnt,
die Untersuchung der Bereiche immer vom ersten zum letzten Bereich
erfolgt. Dies ist allerdings keine zwingende Eigenschaft des Verfahrens,
jede andere Reihenfolge ist gleichwertig, sofern sie zur vollständigen Durchsuchung der
Bereiche führt.
-
In
einem ersten Beispiel sei der Inhalt des Speichermediums wie folgt:
[--,
B1, A1, --, B2].
-
Angenommen
sei weiterhin, dass die Daten A, B und C gemeinsam gelesen werden
sollen.
-
Bei
Anwendung des Verfahrens würde
zuerst Bereich 1 untersucht und als leer erkannt. Als nächstes würde Bereich
2 untersucht. Hier würde
erkannt werden, dass Bereich 2 den ersten Teil von Datum B enthält. Da das
Datum B gelesen werden soll, werden die Daten aus Bereich 2 (B1)
und Bereich 5 (B2) gelesen, indem einer Verkettung von Bereich 2
nach Bereich 5 gefolgt wird. Anschließend wird die Suche hinter
Bereich 2 fortgesetzt. Bei Bereich 3 wird erkannt, dass er das Datum
A enthält,
und demnach wird Datum A gelesen.
-
Fortgesetzt
wird bei Bereich 4. Da dieser leer ist, wird zuletzt Bereich 5 untersucht.
Dieser enthält
zwar einen Teil von Datum B, da es jedoch nicht der erste Bereich
mit Daten von B ist, kommt es zu keinem weiteren Lesevorgang. Da
alle Bereiche betrachtet wurden, ist diese Suche hier beendet.
-
Anhand
dieses Beispiels lässt
sich zusammenfassen:
Datum B wird zuerst vom Speichermedium
gelesen,
Datum A wird als zweites gelesen, und
Datum C
wird nicht gefunden.
-
In
einer weiteren vorteilhaften Ausgestaltung wird, wenn ein Datum
sich über
mehr als einen Bereich erstreckt, der Suchalgorithmus ferner nach
einem Auffinden eines ersten Teils des Datums eine Nachverfolgung
zumindest eines weiteren Teils des Datums in einem weiteren Bereich
durchführen,
auf den durch ein Verkettungskennzeichens verwiesen wird.
-
Durch
diese Ausgestaltung wird ein beschleunigtes Auslese-Verfahren bereitgestellt,
indem einer Verkettung von einem Bereich zu einem verketteten weiteren
Bereich gefolgt wird.
-
In
einem zweiten Beispiel sei der Inhalt des Speichermediums wie folgt:
[--,
A1, B1, --, B2].
-
Auch
in diesem Beispiel sollen die Daten A, B und C gemeinsam gelesen
werden. Im Unterschied zum ersten Beispiel, wird hier Datum A als
erstes gelesen.
-
Anhand
dieses Beispiels lässt
sich zusammenfassen:
Datum A wird zuerst vom Speichermedium
gelesen,
Datum B wird als zweites gelesen, und
Datum C
wird nicht gefunden.
-
Der
Vergleich zwischen dem ersten Beispiel und dem zweiten Beispiel
zeigt eine Besonderheit des Verfahrens an. Es ergibt sich nämlich, unabhängig vom
Inhalt der Daten A und B, allein durch die Anordnung der Daten auf
dem Speichermedium eine unterschiedliche Lesereihenfolge. Wenn sich,
wie bei nicht-blockorientierten
Dateisystemen üblich,
die Anordnung der Daten auf dem Speichermedium ändern kann, ändert sich damit
auch die Lesereihenfolge. Bei einem System, bei welchem das erfinderische
Verfahren eingesetzt wird, ist dieser Sachverhalt entsprechend zu
berücksichtigen.
-
In
einer bevorzugten Ausführungsform
der Erfindung wird das Gruppieren der Datumskennungen in zumindest
eine Gruppe derart durchgeführt,
dass eine vorbestimmte Auslese-Reihenfolge
erzwungen wird.
-
Durch
diese Ausgestaltung werden für
Daten mit hoher Priorität,
d. h. für
Daten in Gruppen, welche zuerst eingelesen werden, ein besonders
schneller Zugriff und ein bevorzugtes Auslesen ermöglicht.
Dies wird durch eine relative Verlangsamung des Zugriffs auf die übrigen Daten
erkauft.
-
In
einem dritten Beispiel wird angezeigt, wie bestimmte Reihenfolgen
durch eine bestimmte Gruppierung erzwungen werden können.
-
Der
Inhalt des Speichermediums sei folgender:
[C1, A1, B1, --,
B2 ].
-
In
diesem Fall sollen wieder Daten A, B und C gelesen werden, es sei
aber aus Systemsicht notwendig, dass Datum B vor Datum A ausgelesen
wird, während
es bezüglich
des Datums C keine Einschränkungen gibt.
-
Dieses
Ziel wird dadurch erreicht, indem Daten A und B in unterschiedliche
Gruppen eingeteilt werden, und die Gruppe mit Datum B zuerst gelesen
wird. Ob Datum C der Gruppe von Datum A oder der Gruppe von Datum
B zugeteilt wird, ist unwesentlich. Es sei angenommen, dass das
Datum C der Gruppe von Datum B zugeordnet ist.
-
Zuerst
werden die Daten der Gruppe (B, C) gelesen. Dabei wird zuerst Datum
C entdeckt und gelesen, da Datum C zur Gruppe (B, C) gehört. Sobald
die Suche den Bereich 2 erreicht, wird dort Datum A entdeckt. Da
Datum A nicht in die Gruppe (B, C) der zu suchenden Daten gehört, wird
Datum A übersprungen,
und es wird mit Bereich 3 fortgefahren. Nun wird Datum B gelesen,
weil es zur Gruppe (B, C) gehört.
Bereich 4 ist leer und wird übersprungen,
Bereich 5 enthält
keinen Anfangsbereich. Damit ist der Lesevorgang für die Gruppe (B,
C) abgeschlossen.
-
Im
zweiten Schritt werden die Daten der Gruppe (A) gelesen. Dabei wird
Datum C übersprungen,
weil es nicht zur Gruppe (A) gehört,
Datum A gehört
zur Gruppe (A) und wird gelesen und schließlich wird Datum B übersprungen,
weil es nicht zur Gruppe (A) gehört.
-
Anhand
dieses Beispiels lässt
sich zusammenfassen:
Datum B wird zuerst vom Speichermedium
gelesen,
Datum C wird als zweites gelesen, und
Datum A
wird als drittes gelesen, also nach Datum B, wie gefordert.
-
In
einer bevorzugten Ausführungsform
wird das Gruppieren derart durchgeführt, dass Datumskennungen zu
Daten einer aufeinanderfolgenden Auslese-Reihenfolgen-Priorität in einer
jeweils unterschiedlichen aufeinanderfolgenden Gruppe gruppiert
werden.
-
Durch
die Einteilung in Gruppen kann eine notwendige Lesereihenfolge zwischen
Daten erzwungen werden, wie es im dritten Beispiel demonstriert
wurde. Ferner kann verhindert werden, dass einzelne Daten überhaupt
gelesen werden. Das entsprechende Datum wird in diesem Fall keiner
der Gruppen zugeordnet. Ein typisches Szenario in Steuergeräten sind
Fertigungsinformationen, wie beispielsweise Seriennummer und Fertigungsdatum.
Diese Daten werden für
den Betrieb des Gerätes
nicht benötigt
und müssen
daher nicht vom Speichermedium gelesen werden.
-
Darüber hinaus
kann die Zahl der Datensätze,
die in einem Durchlauf gelesen werden, begrenzt werden. Dies ist
erforderlich, wenn das Einlesen sämtlicher Daten in einem Schritt
zu zeitlichen Problemen führt, beispielsweise
weil zwischendurch ein Watchdog bedient werden muss. Die Lösung kann
darin bestehen, die Daten so in Gruppen zu unterteilen, dass das
Lesen der Daten jeder einzelnen Gruppe kein zeitliches Problem mehr
darstellt.
-
In
einer bevorzugten Ausführungsform
der Erfindung wird protokolliert, welche Daten bereits ausgelesen
worden sind, und eine Protokollkennung in Ansprechen auf diese Daten
in einem Protokollfeld gespeichert.
-
In
einer weiteren Ausführungsform
wird in Ansprechen auf die Protokollkennung ein Auslesen eines zumindest
zweifach vorhandenen Datums verhindert.
-
Durch
diese Ausgestaltung wird eine verkürzte Auslesezeit der Daten
ermöglicht.
-
In
einem weiteren Beispiel sei der Inhalt des Speichermediums folgender:
[A1,
B1, --, B2, A1'].
-
Diese
Ausführungsform
trägt der
Besonderheit Rechnung, dass das Datum A zweifach vorhanden ist (A1
und A1'). Diese
Konstellation ist denkbar, sofern bestimmte Daten mehrfach abgelegt
werden, um den Verlust des Datums (beispielsweise durch Verfälschung
bei elektromagnetischer Einstrahlung oder Alterung, bzw Defekten
des Speichermediums) unwahrscheinlicher zu machen.
-
Ein
anderes Szenario, welches zu einer solchen Konstellation führen kann,
ist, dass bei einem Speichervorgang eine Aktualisierung von Datum
A vorgenommen wurde, aber die ältere
Version nicht ordnungsgemäß entfernt
wurde, beispielsweise weil in dem entsprechenden Moment ein Stromausfall
erfolgt ist. In diesem Beispiel sollen Datum A und Datum B als eine
Gruppe ausgelesen werden.
-
Zunächst wird
bei Bereich 1 eine Instanz des Datums A entdeckt und gelesen. Danach
wird bei Bereich 2 der Start von Datum B entdeckt, und folglich
Datum B gelesen. Bereich 3 ist leer und wird übergangen, ebenso wie Bereich
4, da er kein Startbereich ist. Zuletzt wird bei Bereich 5 wiederum
Datum A entdeckt, diesmal die zweite Instanz. Hier bietet das Verfahren
zwei Möglichkeiten
an, um zu reagieren. Entweder wird Datum A ein zweites Mal gelesen,
oder aber die zweite Instanz wird ignoriert.
-
Eine
Variante, bei welcher Daten mehr als einmal gelesen werden, muss
im Systemkontext bekannt sein. Die Empfänger der Daten müssen auf
die Situation vorbereitet sein, dass sie das gleiche Datum mehrmals
erhalten. Ein Nachteil dieser Variante besteht darin, dass sich
die Dauer des Lesevorgangs abhängig
vom Inhalt des Speichermediums verändern kann. Dagegen besteht
ein Vorteil dieser Variante darin, dass die Einrichtung eines Gedächtnisses überflüssig ist.
Da das mehrmalige Lesen des gleichen Datums nicht verhindert werden muss,
ist es nicht notwendig zu protokollieren, welche Daten bereits gelesen
worden sind.
-
Denkbar
sind auch komplexere Regeln, bei denen nur für bestimmte Daten ein mehrfaches
Lesen verhindert werden soll.
-
In
einer weiteren Ausführungsform
wird der Suchalgorithmus beendet, wenn alle auszulesenden Daten
ausgelesen sind.
-
Durch
diese Ausgestaltung wird durch die Möglichkeit, in einem Gedächtnis zu
protokollieren, welche Daten bereits gelesen worden sind, eine weitere
Variante des Verfahrens genutzt, welche darin besteht, die Suche
zu beenden, sobald bekannt ist, dass sämtliche zu suchenden Daten
bereits gefunden worden sind. Die noch verbleibenden Bereiche müssten dann
nicht mehr untersucht werden, wodurch wiederum die zum Auslesen
der Daten notwendige Zeit verkürzt
wird.
-
In
einer bevorzugten Ausführungsform
wird das Verfahren in einem nicht-flüchtigen Speichermedium, insbesondere
einem EEPROM oder einem Flash, durchgeführt.
-
Das
Verfahren kann auch bei Bodycomputern mit einem EEPROM oder Flash
zur Abspeicherung nicht-flüchtiger
Daten eingesetzt werden. Weiterhin kann das Verfahren bei einem
Flash-Dateisystem zum Einsatz kommen.
-
Die
eingangs genannte Aufgabe wird auch durch ein Speichermedium gelöst, welches
auszulesende Daten in Bereichen verteilt gespeichert hält, wobei
jedem Bereich eine Bereichskennung in Abhängigkeit von dem jeweils im
Bereich gespeicherten Datum zugeordnet ist, wobei das Speichermedium
enthält:
ein Zuordnungsmittel, welches dazu angepasst ist, jeweils eine Datumskennung
entsprechend einem auszulesenden Datum zuzuordnen; ein Gruppierungsmittel,
welches dazu angepasst ist, die Datumskennungen in zumindest eine
Gruppe zu gruppieren; ein Suchalgorithmusmittel, welches dazu angepasst
ist, bereichsweise und gruppenweise die Bereichskennung im jeweiligen
Bereich mit den in der Gruppe enthaltenen Datumskennungen zu vergleichen,
und das jeweilige Datum aus dem Bereich auszulesen, wenn eine der
Datumskennungen einer Bereichskennung entspricht.
-
Ein
wesentlicher Punkt des erfindungsgemäßen Speichermediums besteht
darin, dass es die schon in Zusammenhang mit dem Verfahren beschriebenen
Vorteile bewirkt. Dabei ist das erfindungsgemäße Speichermedium insbesondere
bei einem Speichermedium vorteilhaft, bei welchem die Daten im Lauf
der Zeit ihren Speicherort, das heißt Bereich, ändern. Dabei
braucht das Speichermedium keinerlei Verzeichnisse mit Verweisen über den
Speicherort der einzelnen Daten enthalten.
-
Kurze Beschreibung der Zeichnungen
-
Das
erfindungsgemäße Verfahren
zum Auslesen von Daten aus einem Speichermedium wird im folgenden
anhand eines Ausführungsbeispiels
näher erläutert. Es
zeigen:
-
1 ein
Ablaufdiagramm zur Erläuterung
des erfindungsgemäßen Verfahrens
zum Auslesen von Daten aus einem Speichermedium;
-
2 ein
beispielhaftes Speichermedium, welches acht Bereiche enthält; und
-
3 eine
Gruppenmatrix, welche zwei Gruppen enthält.
-
Ausführungsformen der Erfindung
-
1 zeigt
ein Ablaufdiagramm zur Erläuterung
des erfindungsgemäßen Verfahrens
zum Auslesen von Daten A bis D aus einem Speichermedium. Hierbei
können
einzelne Daten, welche einen Speicherbereich benötigen, welcher den Speicherbereich
eines einzelnen Bereichs übersteigt,
auf mehrere Bereiche verteilt gespeichert werden.
-
In
einem Schritt S2 wird jeweils eine Datumskennung ADk,
BDk, CDk, DDk entsprechend einem auszulesenden Datum
A, B, C, D zugeordnet. In einem Schritt S4 werden die Datumskennungen
ADk, BDk, CDk, DDk in zumindest
eine Gruppe G1, G2, ... Gi gruppiert. Beginnend ab Schritt S6 wird
ein Suchalgorithmus durchgeführt.
Hierzu werden in Schritt S6 ein Bereichszähler m und ein Gruppenzähler i gesetzt.
In diesem Anwendungsbeispiel werden der Bereichszähler und
der Gruppenzähler
jeweils auf +1 gesetzt. Es sind jedoch auch andere Werte möglich.
-
In
einem Schritt S8 wird die Bereichskennung im Bereich Bem mit den
in der Gruppe Gi enthaltenen Datumskennungen ADk,
BDk, CDk, DDk verglichen. In einem Schritt S10 wird
das Datum A, B, C oder D aus dem Bereich Bem ausgelesen, wenn eine
der Datumskennungen ADk, BDk,
CDk oder DDk einer
Bereichskennung entspricht.
-
In
einem Schritt S12 wird überprüft, ob der
letzte Bereich erreicht ist. Wenn bei Schritt S12 bestimmt wird,
dass der letzte Bereich nicht erreicht ist, wird in einem Schritt
S14 der Bereichszähler
m auf einen neuen Wert geändert.
In diesem Ausführungsbeispiel
wird der Bereichszähler
um +1 erhöht,
d. h. m = m + 1. Anschließend
wird auf Schritt S8 zurück
verzweigt. Wenn andererseits bei Schritt S12 bestimmt wird, dass
der letzte Bereich erreicht ist, wird mit Schritt S16 fortgefahren.
-
In
Schritt S16 wird überprüft, ob die
letzte Gruppe erreicht ist. Wenn bei Schritt S16 bestimmt wird, dass
die letzte Gruppe nicht erreicht ist, wird in einem Schritt S18
der Gruppenzähler
i auf einen neuen Wert geändert.
In diesem Ausführungsbeispiel
wird der Gruppenzähler
um +1 erhöht,
d. h. i = i + 1. Anschließend wird
auf Schritt S8 zurück
verzweigt.
-
Wenn
andererseits bei Schritt S16 bestimmt wird, dass die letzte Gruppe
erreicht ist, wird das Verfahren beendet.
-
Durch
das beispielhafte Verfahren werden Daten einer hohen Priorität sehr viel
schneller aus dem Speichermedium ausgelesen.
-
2 zeigt
ein Speichermedium, beispielsweise einen EEPROM-Speicher oder einen
Flash-Speicher. Das Speichermedium hält die Daten A, B und C in
acht Bereichen Be1–Be8
verteilt gespeichert.
-
In
diesem Beispiel ist das Datum B so umfangreich, dass es nicht in
einem einzelnen Bereich Be1–Be8 unterzubringen
ist. Deshalb ist dieses Datum auf mehrere Bereiche verteilt gespeichert,
wobei die betroffenen Bereiche zu einer Sequenz, d. h. einer verketteten
Liste, verbunden sind. Jeder Bereich Be1–Be8 enthält zudem jeweils noch eine
Bereichskennung A1, B1, B2 und C1 in Ansprechen auf das jeweils
im Bereich Be1–Be8 gespeicherte
Datum oder eine Kennzeichnung '--', welche darauf hinweist,
dass der Bereich leer ist. Bei dem in 2 gezeigten
Speichermedium ist das Datum A in Bereich Be2 gespeichert, welches
durch Bereichskennung A1 in diesem Bereich Be2 angezeigt ist. Das
Datum B ist in Bereichen Bei und Be8 gespeichert, welches durch
Bereichskennungen B1 und B2 in diesen Bereichen angezeigt ist. Das
Datum C ist vollständig
in Bereich Be1 gespeichert. Die Bereiche Be4 bis Be7 halten keine
Daten gespeichert, welches durch '--' angezeigt
ist.
-
3 zeigt
eine Gruppenmatrix GM, welche Gruppen G1 und G2 enthält. Es sind
hierbei Datumskennungen ADk, BDk,
CDk in Gruppenfeldern G1 und G2 gruppiert,
wobei jede Datumskennung ADk, BDk,
CDk entsprechend einem auszulesenden Datum
A bis C des in 2 angezeigten Speichermediums
zugeordnet ist.
-
Es
wird beispielsweise gefordert, dass Daten A, B und C gelesen werden
sollen, wobei Datum B vor Datum A gelesen werden soll, während es
bezüglich
des Datums C keine Einschränkungen
gibt.
-
Diese
Anforderung wird dadurch erreicht, indem ADk und
BDk in unterschiedliche Gruppen eingeteilt werden,
und die Gruppe mit BDk zuerst gelesen wird.
Ob CDk der Gruppe von ADk oder
der Gruppe von BDk zugeordnet wird, ist
unwesentlich. Es sei angenommen, dass CDk der
Gruppe von BDk zugeordnet ist. Somit enthält die erste
Gruppe G1 die Datumskennungen (BDk, CDk), und die zweite Gruppe G2 enthält die Datumskennung
(ADk).
-
Mit
Hilfe der gruppierten Gruppen G1 und G2 wird ein Suchalgorithmus
auf die Bereiche Be1–Be8
des in 2 gezeigten Speichermediums durchgeführt. Der
Suchalgorithmus vergleicht bereichsweise und gruppenweise die Bereichskennungen
im jeweiligen Bereich mit den in der Gruppe enthaltenen Datumskennungen. Wenn
eine der Datumskennungen einer Bereichskennung entspricht, wird
das jeweilige Datum aus dem Bereich ausgelesen.
-
Hierzu
werden zuerst die Daten bezüglich
der Gruppe G1 (BDk, CDk)
gelesen. Dabei wird zuerst Datum C entdeckt und gelesen, da die
Datumskennung C1 (siehe 2) der Gruppe (BDk,
CDk) (siehe 3) entspricht
(d. h. C1 ≡ BDk, CDk). Sobald
die Suche den Bereich Be2 erreicht, wird dort Datum A entdeckt.
Da Datum A nicht der Gruppe (BDk, CDk) der zu suchenden Daten entspricht (d.
h. A1 ≠ BDk, CDk), wird Datum
A übersprungen
und mit Bereich Be3 fortgefahren. Nun wird Datum B gelesen, weil
es der Gruppe (BDk, CDk)
entspricht (d. h. B1 ≡ BDk, CDk) Bereiche
Be4–Be7
sind leer und werden übersprungen.
Bereich Be8 enthält
keinen Anfangsbereich. Damit ist der Lesevorgang für die Gruppe
(BDk, CDk) abgeschlossen.
-
Im
zweiten Schritt werden die Daten entsprechend der Gruppe (ADk) gelesen. Dabei wird Datum C übersprungen,
weil es nicht der Gruppe (ADk) entspricht,
Datum A entspricht der Gruppe (ADk) und
wird gelesen und schließlich
wird Datum B übersprungen,
weil es nicht der Gruppe (ADk) entspricht.
-
Dieses
Verfahren ermöglicht
es, dass das Datum B zuerst vom Speichermedium gelesen wird, das
Datum C als zweites gelesen wird und das Datum A als drittes, also
nach Datum B, gelesen wird, wie gefordert. Indem das Speichermedium
zugleich nach Gruppen G1, G2 von auszulesenden Daten durchsucht
wird, können
die Daten sehr viel schneller ausgelesen werden.