-
Die Erfindung betrifft einen Datenspeicher zur Speicherung von Elementen, wobei in dem
Datenspeicher die Daten der Elemente und wenigstens eine verkette Liste gespeichert sind,
welche für jedes gespeicherte Element wenigstens dessen Elementadresse, dessen
Elementnummer und einen Zeiger auf die Adresse des gespeicherten Elementes mit der
nächsthöheren Elementnummer enthält.
-
Datenspeicher mit einer derartigen Art der Speicherung von Elementen sowie einer
verketteten Liste sind bekannt und bieten vor allem dann Vorteile, wenn die gespeicherten
Elemente in einer bestimmten, geordneten Weise wieder aus dem Datenspeicher ausgelesen
werden sollen. Aufgrund der abgespeicherten Daten in der verketteten Liste, insbesondere
aufgrund der Zeiger, können die Elemente in der Reihenfolge ihrer Nummer relativ leicht
aufgefunden und ausgelesen werden.
-
Ein wesentlicher Nachteil eines derartigen Datenspeichers und einer derartigen Art der
Datenspeicherung der Elemente in dem Datenspeicher besteht allerdings darin, dass sich
das Suchen und Auffinden einzelner Datenelemente als schwierig erweist. Dieser Nachteil
tritt insbesondere dann auf, wenn neue Elemente eingefügt werden sollen, die eine
Elementnummer aufweisen, die in den Bereich der bereits abgespeicherten Elemente fällt.
Je nach Anzahl der Elemente, die sich bereits in der Liste befinden, ist eine große Anzahl
von Vergleichen und Speicherzugriffen notwendig, die für viele Applikationen nicht
akzeptabel ist.
-
Neben der oben erläuterten, einfach verketteten Liste sind auch sogenannte doppelt
verkettete Listen bekannt, in denen neben dem Nachfolger-Element auch das Vorgänger-
Element abgespeichert wird. Derartige doppelt verkettete Listen bieten zwar eine
Verbesserung der Suchgeschwindigkeit, erfordern aber ab einer bestimmten Länge immer
noch einen erheblichen Suchaufwand. Ferner erfordern sie zusätzlichen Speicherbedarf.
-
Es ist Aufgabe der Erfindung, den eingangs genannten Datenspeicher zur Speicherung von
Elementen sowie wenigstens einer verketteten Listen dahingehend weiterzuentwickeln,
dass das Auffinden bestimmter Elemente in dem Datenspeicher bzw. der verketteten Liste
erleichtert wird und somit mit möglichst geringem Aufwand neue Elemente in den
Datenspeicher und die verkette Liste eingefügt werden können.
-
Diese Aufgabe ist erfindungsgemäß durch die Merkmale des Patenanspruchs 1 gelöst:
Datenspeicher zur Speicherung von Elementen, wobei in dem Datenspeicher die Daten der
Elemente und wenigstens eine verkette Liste gespeichert sind, welche für jedes
gespeicherte Element wenigstens dessen Elementadresse, dessen Elementnummer und
einen Zeiger auf die Adresse des gespeicherten Elementes mit der nächsthöheren
Elementnummer enthält, und wobei ferner eine Element-Statustabelle, in der die
Elementnummern der in dem Datenspeicher vorhandenen Elemente eingetragen sind, und
eine Adressen-Referenztabelle, in der für alle Elementnummern deren Elementadressen
eingetragen sind, vorgesehen sind.
-
Die Elemente, die jeweils eine Elementnummer tragen, werden grundsätzlich an einem
beliebigen Ort in dem Datenspeicher gespeichert. Beispielsweise können sie in der
Reihenfolge ihres Eintreffens und des Speicherns mit steigenden Adressen des
Datenspeichers gespeichert werden. Um die Elemente wieder auffinden zu können, ist eine
verkettete Liste vorgesehen, welche für jedes Element dessen Nummer, dessen
Elementadresse in dem Datenspeicher sowie einen Zeiger auf die Adresse in dem
Datenspeicher des gespeicherten Elementes mit der nächsthöheren Elementnummer enthält.
Die Daten der Elemente und die verkettete Liste können gemeinsam oder auch an
getrennten Orten in dem Datenspeicher gespeichert werden.
-
Durch die Zeiger, die für jedes Element auf das Element mit der nächsthöheren
Elementadresse zeigen, ergibt sich eine Art Verkettung der Elemente. Die Kette führt
nämlich von dem Element mit der niedrigsten Nummer bis zu dem Element mit der
höchsten Nummer in der Reihenfolge der Elementnummern. In dieser Verkettung befinden
sich also alle in dem Datenspeicher gespeicherten Elemente in der Reihenfolge ihrer
Elementnummer. Dies hat wie gesagt nichts mit dem Ort der Speicherung in dem
Datenspeicher zu tun, der im Prinzip für jedes Element beliebig sein kann.
-
Diese verkettete Liste hat Vorteil beim Auffinden eines Elementes und insbesondere dann,
wenn die Elemente in der Reihenfolge ihrer Elementnummer ausgelesen werden sollen, wie
dies bei bestimmten Anwendungen gewünscht ist.
-
In der Praxis sind zu einem beliebigen Zeitpunkt nur bestimmte Elemente mit bestimmten
Elementnummern gespeichert. Später eintreffende Elemente, die gespeichert werden sollen,
weisen gegebenenfalls Elementnummern auf, die in den Bereich der bereits gespeicherten
Elemente bzw. deren Nummern fallen. Somit muss beim Speichern eines neuen Elementes
mit einer neuen Nummer dieses Element in die verkettete Liste eingefügt werden und
insbesondere müssen die Zeiger der betroffenen Elemente in der verketteten Liste neu
gesetzt werden. Wird in der verketteten Liste gesucht, wie dies nach dem Stande der
Technik vorgesehen ist, so ist eine Fülle von Vergleichen und Speicherzugriffen
erforderlich, die für viele Applikationen nicht akzeptabel sind.
-
Erfindungsgemäß sind daher zwei weitere Tabellen vorgesehen, die das Auffinden eines
bestimmten erleichtern.
-
Es ist zusätzlich zu der verketteten Liste eine Element-Statustabelle vorgesehen, in der die
Elementnummern der in dem Datenspeicher vorhandenen Elemente eingetragen sind.
-
Diese Element-Statustabelle erlaubt es also festzustellen, welche Elemente bzw.
Elementnummern bereits in dem Datenspeicher gespeichert sind. Somit kann zum Beispiel
für ein neu einzufügendes Element festgestellt werden, welche Elemente mit der
nächstniedrigeren bzw. nächsthöheren Elementnummer bereits in dem Datenspeicher
vorhanden sind. Dies erleichtert das Einfügen eines neuen Elementes in die verkettete
Liste.
-
Erfindungsgemäß ist ferner eine Adressen-Referenztabelle vorgesehen, in der für alle
bereits gespeicherten Elemente bzw. Elementnummern deren Elementadresse in dem
Datenspeicher eingetragen ist.
-
Diese Adressen-Referenztabelle erleichtert das Auffinden eines bestimmten Elementes mit
einer bestimmten Elementnummer in dem Datenspeicher, da aufgrund dieser Tabelle der
Speicherort des Elementes leicht ermittelt werden kann.
-
Die Element-Statustabelle sowie die Adressen-Referenztabelle erlauben es also, auf relativ
einfache Weise ohne unnötige Speicherzugriffe auf die verkettete Liste festzustellen,
welche Elemente mit welchen Elementnummern bereits gespeichert sind und wo in dem
Datenspeicher diese abgelegt sind.
-
Auf diese Weise ist ein relativ einfaches Auffinden eines bestimmten Elementes mit einer
bestimmten Elementnummer möglich. Ferner erleichtern diese Tabellen das Einfügen eines
neuen Elementes in die verkettete Liste und das neue Setzen der Zeiger, da bekannt ist,
welches nächsthöhere bzw. nächstniedrigere Element vorhanden ist und wo im Speicher
dieses abgelegt ist.
-
Durch den erfindungsgemäßen Datenspeicher entfallen, abgesehen vom Zugriff auf die
beiden Tabellen, Suchvorgänge in dem Datenspeicher und in der verketteten Liste.
-
Eine vorteilhafte Art und Weise der Einfügung eines neuen zu speichernden Elementes in
den Datenspeicher und die verkettete Liste ist gemäß einer Ausgestaltung der Erfindung in
Anspruch 2 angegeben. Dabei wird vor Speicherung eines neuen Elementes in der Element-
Statustabelle nach demjenigen bereits gespeicherten Element gesucht, das die
nächstniedrigere Elementnummer hat. Aus der Element-Statustabelle ist dann das Element
mit der nächstniedrigeren Nummer bekannt, dessen Speicheradresse in dem Datenspeicher
anhand der Adressen-Referenztabelle ebenfalls leicht aufzufinden ist. Nach Speicherung
des neuen Elementes in der verketteten Liste kann aufgrund dieser Kenntnisse sowohl der
Zeiger des neu gespeicherten Elementes wie auch derjenige des Elementes mit der
nächstniedrigeren Elementnummer richtig gesetzt werden, ohne dass weitere
Speicherzugriffe erforderlich sind.
-
Der Zugriff auf die Element-Statustabelle kann entsprechend einer weiteren Ausgestaltung
der Erfindung nach Anspruch 3 dadurch erleichtert werden, dass in dieser Tabelle jedem
Element bzw. jeder Elementnummer genau ein Bit zugeordnet ist. Somit kann durch
einfaches Überprüfen der gesetzten Bits in der Element-Statustabelle die Existenz der
bereits gespeicherten Elementnummern festgestellt werden.
-
Gemäß einer weiteren Ausgestaltung der Erfindung nach Anspruch 4 handelt es sich bei der
verketteten Liste um eine einfach verkettete Liste, in die nur die Zeiger eingetragen sind,
die auf die Adresse des Elementes mit der nächsthöheren Elementnummer zeigen.
-
Aufgrund der erfindungsgemäßen, einfachen Auffindung von Elementen ist eine doppelt
verkettete Liste erforderlich und bietet gegenüber einer einfach verketteten Liste, die einen
geringeren Speicheraufwand hat, keine Vorteile mehr.
-
Der erfindungsgemäße Datenspeicher kann, wie gemäß einer weiteren Ausgestaltung der
Erfindung nach Anspruch 5 vorgesehen ist, vorteilhaft für sogenannte Datenbus-Gateways
eingesetzt werden. Diese Gateways speichern Meldungen, die dann den Elementen
entsprechen, zwischen und geben diese in geordneter Weise wieder an Datenbus-
Teilnehmer weiter. Der erfindungsgemäße Datenspeicher mit seiner Speicherstruktur und
der Möglichkeit des geordneten Auslesens von Elementen nach ihrer Elementnummer
bietet hier besondere Vorteile.
-
Nachfolgend wird ein Ausführungsbeispiel der Erfindung anhand der Zeichnung näher
erläutert. Es zeigen:
-
Fig. 1 eine schematische Darstellung eines Speicherbereichs des erfindungsgemäßen
Datenspeichers mit Speicherung der Daten der Elemente sowie der verketteten Liste,
-
Fig. 2 eine Element-Statustabelle für den Datenspeicher gemäß Fig. 1,
-
Fig. 3 eine Adressen-Referenztabelle für den Datenspeicher gemäß Fig. 1 und
-
Fig. 4 eine Darstellung entsprechend Fig. 1, jedoch mit einem neuen zusätzlich
gespeicherten und in die verkettete Liste eingeführten Element.
-
In Fig. 1 ist in schematischer Form in Art einer Tabelle dargestellt, wie bestimmte
Elemente mit bestimmten Elementnummern in einem Datenspeicher, der im übrigen in der
Zeichnung nicht angedeutet ist, gespeichert sind.
-
Die Tabelle in Fig. 1 zeigt in ihrer ersten Spalte A die Speicheradressen in dem
Datenspeicher. Die Darstellung gemäß Fig. 1 zeigt, dass jedes Element 4
Speicheradressen in dem Datenspeicher belegt.
-
Die 2. Spalte N in der Tabelle gemäß Fig. 1 listet die Nummern N der bereits in dem
Datenspeicher gespeicherten Elemente auf. In dem Beispiel gemäß der Fig. 1 sind
bereits Elemente mit den Nummern 8, 10, 12, 15, 18 und 20 in dem Datenspeicher
gespeichert.
-
Die 3. Spalte deutet an, dass für jedes Element dessen Daten D in dem Datenspeicher
gespeichert sind. Die Daten sind in der Fig. 1 nicht näher angedeutet.
-
Die 4. Spalte der Fig. 1 zeigt Zeiger P, die für jedes Element, das bereits in dem
Datenspeicher abgespeichert ist, auf die Adresse desjenigen Elementes zeigen, das die
nächsthöhere Elementnummer aufweist. Beispielsweise zeigt der Eintrag in der 1. Zeile
der Tabelle gemäß Fig. 1, dass für das Element mit der Nummer 10 der Zeiger P
gleich 8 eingetragen ist. Das Element mit der nächsthöheren Elementnummer ist
nämlich das Element 12, das in der Speicheradresse 8 des Datenspeichers gespeichert ist
(dies zeigt die Zeile 3 der Tabelle).
-
Die in der Fig. 1 angedeuteten Daten sind in dem Datenspeicher abgelegt. Dies kann
entweder getrennt in der Weise geschehen, dass die Daten D getrennt von den Adressen
A in den Elementnummern N und den Zeigern P gespeichert sind. Diese Daten können
aber auch gemeinsam gespeichert sein. Die Daten der Adressen A, der
Elementnummern N und der Zeiger P werden auch als verkettete Liste bezeichnet, da
sich aufgrund dieser Daten eine Verkettung der Elemente geordnet nach ihrer
Elementnummer ergibt.
-
Eine Speicherung von Elementen entsprechend der Darstellung gemäß Fig. 1 in einem
Datenspeicher ist grundsätzlich bekannt. Es ergibt sich hierbei jedoch das Problem, dass
beim Einfügen neuer Elemente vorhandene Elemente gesucht werden müssen. Es muss
nämlich beim Einfügen eines Elementes mit einer bestimmten Elementnummer unter
den bereits gespeicherten Elementen dasjenige Element mit der nächstniedrigeren
Elementnummer ausgesucht werden, da dessen Zeiger aufgrund des neu einzufügenden
Elementes und seiner Elementnummer verändert werden muss. Dafür sind in der
verketteten Liste Suchvorgänge erforderlich, die eine entsprechende Anzahl von
Lesezugriffen auf den Datenspeicher erfordern. Dies ist aber für bestimmte
Anwendungen nicht erwünscht.
-
Erfindungsgemäß sind daher in dem Datenspeicher zusätzlich eine in Fig. 2
dargestellte Element-Statustabelle sowie eine in Fig. 3 dargestellte Adressen-
Referenztabelle vorgesehen.
-
Die in Fig. 2 angedeutete Element-Statustabelle weist jeder möglichen
Elementnummer, die gegebenenfalls in dem Datenspeicher abzuspeichern ist, ein
einzelnes Bit auf. Ist also ein Bit für eine bestimmte Elementnummer in der Element-
Statustabelle gemäß Fig. 2 gesetzt, so ist in dem Datenspeicher das Element mit dieser
Nummer bereits gespeichert. Umgekehrt bedeutet dies, dass Elementnummern, für die
das entsprechende Bit in der Element-Statustabelle gemäß Fig. 2 nicht gesetzt ist, noch
nicht in dem Datenspeicher gespeichert sind.
-
Somit kann durch Auslesen der Element-Statustabelle gemäß Fig. 2 auf einfache
Weise festgestellt werden, welche Elemente in dem Datenspeicher bereits gespeichert
sind.
-
Dies ist wichtig, da wie oben bereits erläutert für das Abspeichern jedes neuen
Elementes mit einer neuen Elementnummer ermittelt werden muss, welches Element
mit der jeweils niedrigeren Elementnummer bereits gespeichert ist. Dies kann also
mittels der Element-Statustabelle entsprechend Fig. 2 auf einfache Weise geschehen.
-
Ist dasjenige Element ermittelt, das gegenüber dem neu zu speichernden Element bereits
gespeichert ist und die nächstniedrigere Elementnummer aufweist, kann mittels der in
Fig. 3 dargestellten Adressen-Referenztabelle auf einfache Weise ermittelt werden,
welche Adresse dieses Element aufweist.
-
In der Adressen-Referenztabelle gemäß Fig. 3 ist nämlich für jede Elementnummer N
Index R deren Speicheradresse A Index R in dem Datenspeicher abgelegt. Die
Darstellung gemäß Fig. 3 zeigt für die in der Darstellung gemäß Fig. 1 angedeuteten,
bereits gespeicherten Elemente, jeweils die Speicheradresse A Index R an, in der das
jeweilige Element in dem Datenspeicher gespeichert ist. Die Darstellung gemäß Fig. 3
zeigt für diejenigen Elemente bzw. Elementnummern, die noch nicht gespeichert sind,
ein XX, das andeutet, dass hier gegebenenfalls noch ältere Adressen eingetragen sind,
die nicht mehr gültig sind. Dies stört jedoch nicht, da aufgrund der Daten aus der
Element-Statustabelle gemäß Fig. 2 bekannt ist, welche Elemente tatsächlich
gespeichert sind. Für diese tatsächlich gespeicherte Elemente gibt die Adressen-
Referenztabelle gemäß Fig. 3 den jeweiligen Speicherort an.
-
Die Adressen-Referenztabelle gemäß Fig. 3 gestattet es also, für ein aufgrund der
Element-Statustabelle aufgefundenes Element dessen Speicherort aufzufinden.
-
Die Element-Statustabelle sowie die Adressen-Referenztabelle sind insbesondere dann
vorteilhaft, wenn ein zusätzliches Element in dem Datenspeicher abzuspeichern ist und
die Zeiger dieses Elementes und desjenigen bereits gespeicherten Elementes mit der
nächstniedrigeren Elementnummer neu zu setzen sind. Dies soll im folgenden anhand
der Darstellung gemäß Fig. 4 erläutert werden.
-
Die Darstellung gemäß Fig. 4 zeigt entsprechend der Darstellung gemäß Fig. 1 in
dem Datenspeicher gespeicherte Elemente sowie die Daten der verketteten Liste.
-
In der Darstellung gemäß Fig. 4 ist jedoch ein weiteres Element mit der
Elementnummer 9 in der Adresse 24 des Datenspeichers gespeichert worden. Der
Zeiger P des Elementes 9 zeigt auf die Adresse 0, da das Element mit der nächsthöheren
Elementnummer, nämlich das Element mit der Nummer 10, an der Adresse 0 des
Datenspeichers gespeichert ist. Gegenüber der Darstellung gemäß Fig. 1 wurde ferner
der Zeiger des Elementes 8, nämlich des Elementes mit der nächstniedrigeren
Elementnummer, verändert. Dieser Zeiger muss nun auf das neu gespeicherte Element 9
bzw. dessen Speicheradresse 24 zeigen.
-
Für ein Einfügen eines derartigen Elementes wären nach dem Stande der Technik
diverse Speicherzugriffe erforderlich, da sowohl festgestellt werden müsste, welches
Element mit der nächstniedrigeren Elementnummer vorhanden ist und wo dieses
abgespeichert ist, wie auch welches Element mit der nächsthöheren Elementnummer
gespeichert ist und wo dieses gespeichert ist.
-
Erfindungsgemäß wird dies durch die Element-Statustabelle gemäß Fig. 2 und die
Adressen-Referenztabelle gemäß Fig. 3 wesentlich erleichtert.
-
Soll, wie in dem Beispiel gemäß Fig. 4 angedeutet, beispielsweise das Element mit der
Nummer 9 neu gespeichert werden, so wird zunächst in der Element-Statustabelle
gemäß Fig. 2 überprüft, welches Element mit der nächstniedrigeren Elementnummer
gespeichert ist. In dem Beispiel gemäß Fig. 2 ist dies das Element Nummer 8, dessen
Bit gesetzt ist. Dies bedeutet, dass in dem Datenspeicher bereits ein Element mit der
Nummer 8 gespeichert ist.
-
Aufgrund der Daten der Adressen-Referenztabelle entsprechend Fig. 2 kann nun auf
einfache Weise festgestellt werden, wo dieses Element abgespeichert ist. Die Adressen-
Referenztabelle gemäß Fig. 3 gibt nämlich für das Element mit der Nummer 8 die
Adressenspeichernummer 16 an. Wie die Darstellungen gemäß Fig. 1 und Fig. 4
zeigen, ist das Element mit der Nummer 8 tatsächlich an der Adresse 16 gespeichert.
-
Für dieses Element muss nun die Eintragung des Zeigers P in der verketteten Liste
entsprechend geändert werden, denn dessen Zeiger muss nun auf die Adresse 24 zeigen,
in der nämlich das neu gespeicherte Element mit der Elementnummer 9 abgelegt wurde.
-
Der Zeiger P für das neu gespeicherte Element 9 zeigt auf die Adresse 0, da an der
Adresse 0 das Element mit der nächsthöheren Elementnummer, nämlich hier der
Nummer 10, gespeichert ist. Auch für das Auffinden dieses Elementes mit der
nächsthöheren Nummer, das für das Setzen des Zeigers des neu zu speichernden
Elementes bekannt sein muss, sind die Element-Statustabelle sowie die Adressen-
Referenztabelle vorteilhaft einsetzbar.
-
Zusammenfassend kann durch die Existenz dieser beiden Tabellen die Zahl der
Suchvorgänge gegenüber Datenspeichern nach dem Stande der Technik deutlich
reduziert werden. Insbesondere ist ein Suchen in der verketteten Liste nicht erforderlich,
da durch einfachen Zugriff auf diese beiden Tabellen die erforderlichen Daten
unmittelbar ermittelbar sind.