DE19810843A1 - Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung - Google Patents
Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer SpeichereinrichtungInfo
- Publication number
- DE19810843A1 DE19810843A1 DE19810843A DE19810843A DE19810843A1 DE 19810843 A1 DE19810843 A1 DE 19810843A1 DE 19810843 A DE19810843 A DE 19810843A DE 19810843 A DE19810843 A DE 19810843A DE 19810843 A1 DE19810843 A1 DE 19810843A1
- Authority
- DE
- Germany
- Prior art keywords
- address
- data value
- subtree
- state
- node
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Die Erfindung betrifft ein Verfahren und eine Zugriffseinrichtung zum Bestimmen der Speicheradresse eines vorgegebenen Datenwerts (D¶1¶, D¶2¶, D¶3¶) in einer Speichereinrichtung. Die Datenwerte werden in Zeilen und Spalten gemäß einer Binärbaum-Datenstruktur gespeichert. Die Abbildung zwischen der logischen Binärbaum-Datenstruktur und den Speicherstellen in dem Speicher ist derart, daß die Unterbaum-Knoten auf die Speicherstellen einer Zelle abgebildet werden. Ein neuer Unterbaum-Wurzelknoten ((B(L(X)), B(R(X)), A=1) wird aus der Adresse des vorangehenden Blattknotens (LN) berechnet, wenn der zu suchende Datenwert in dem vorangehenden Unterbaum nicht gefunden wird. Da ein neuer Unterbaum-Wurzelknoten (X¶1¶) immer aus einer vorherigen Blattknoten-Adresse und dem Vergleichsergebnis zwischen dem gesuchten und dem ausgelesenen Datenwert berechnet wird, können die Anzahl von Zeilenadressenänderungen minimal gehalten werden, während eine hohe Geschwindigkeit für die Unterbaum-Durchsuchung aufrechterhalten wird. Das Suchverfahren und die Zugriffseinrichtung ist speicher-effizient, da keine Zeiger verwendet werden, und schnell, da die Adresse einer als nächstes zu untersuchenden Speicherstelle immer aus der vorangehenden Adresse und dem letzten Vergleichsergebnis berechnet werden kann.
Description
Die Erfindung betrifft ein Verfahren zum Bestimmen der
Speicheradresse eines vorgegebenen Datenwerts in einer
Speichereinrichtung, wobei die Datenwerte an vorgegebenen
Speicheradressen gemäß einer Binärbaum-Datenstruktur von
Knoten, Zweigen, Nebenbäumen und Blättern gespeichert sind.
Insbesondere kann die Speichereinrichtung mit einer Adresse
adressiert werden, die aus zwei Teilen besteht, d. h. einem
Spaltenadressenteil und einem Zeilenadressenteil, wobei die
Einträge in der Speichereinrichtung in einem
zweidimensionalen Matrixfeld gespeichert sind.
Oft besteht die Notwendigkeit, eine schnelle Suche nach einem
bestimmten Datenwert in einem Speicher vorzunehmen, der eine
große Anzahl von Einträgen enthält. Beispielsweise sei eine
Situation betrachtet, bei der die persönliche
Identifikationsnummer einer Person in einer
Speichereinrichtung gespeichert ist und dieser Nummer eine
bestimmte Information über das Alter, den Beruf oder die
Fahrzeugregistrierung der Person zugeordnet ist. Diese
Identifikationsnummer kann aus vielen Stellen bestehen, d. h.
in dem Speicher können eine große Anzahl von Werten
gespeichert werden. Ein anderes Beispiel ist eine CD-ROM, in
der Telefonnummern gespeichert sind und jeder Telefonnummer
eine spezifische Information zugeordnet ist, die die
Heimatadresse anzeigt, die zu dieser Telefonnummer gehört.
Um zu vermeiden, daß eine zweite Speichereinrichtung
verwendet werden muß, in der die spezifischen Orte der
einzelnen Einträge gespeichert sind, d. h. in denen die
Speicheradressen gespeichert sind, wird die
Speichereinrichtung, die die Vielzahl von Datenwerten
enthält, nach einem bestimmten Datenwert durchsucht und, wenn
der Datenwert gefunden worden ist, wird die zugehörige
Information ausgelesen. Natürlich können die Datenwerte (die
persönliche Identifikationsnummer oder die Telefonnummer)
zufällig in der Speichereinrichtung gespeichert werden und in
diesem Fall muß der vollständige Speicher Spalten- und
Zeilen-weise durchsucht werden, um den Datenwert zu
lokalisieren, weil überhaupt keine Information verfügbar ist,
wo sich der Datenwert von Interesse möglicherweise befinden
könnte.
Um ein Durchsuchen der Speichereinrichtung von einem Eintrag
zu einem nächsten Eintrag zu vermeiden, was einen fast
unbegrenzten Zeitbetrag in Abhängigkeit von der Größe der
Speichereinrichtung benötigen kann, werden die Datenwerte
(nicht die dazu gehörige Information) in der
Speichereinrichtung gemäß vorgegebener Regeln gespeichert,
die später verwendet werden können, um während der
Suchprozedur den Datenwert wieder zu lokalisieren.
Die Fig. 5 zeigt ein Beispiel eines zweidimensionalen
Speichers, in dem Dateneinträge durch eine Adresse mit einem
Spaltenadressenteil A und einem Zeilenadressenteil B, d. h.
der Adresse S = <B(X), A(X)<, adressiert werden. X kann als
der Knoten in einem Binärbaum angesehen werden, an dem sich
die spezifische Zeilenadresse und Spaltenadresse
überschneiden. Wie sich der Fig. 5 entnehmen läßt, können die
einzelnen Datenwerte D wahlfrei in der Speichereinrichtung
gespeichert werden. Eine andere Möglichkeit würde darin
bestehen, eine Abbildung von Datenwerten auf Speicherstellen
gemäß einer Binärbaum-Datenstruktur zum Darstellen der
sortierten Datenwerte zu verwenden. Beispielsweise ist aus
der WO 96/09580 die Verwendung eines Binärbaums bekannt, um
eine Sortierung von Aufzeichnungen vorzunehmen.
Wie in Fig. 6 gezeigt, ist in der Binärbaum-Datenstruktur
jeder Knoten (der Schnittpunkt X, an dem ein Datenwert
eingegeben werden kann und davon gelesen werden kann) mit
zwei anderen Knoten verbunden. Die Suche durch den Binärbaum
(oder die Speichereinrichtung, die darauf abgebildete
Einträge aufweist) ist wie folgt. Ein Datenwert D1 wird aus
einem Knoten X1 (der sich an einer Zeilenadresse A(X) und
einer Spaltenadresse B(X) befindet) ausgelesen, und der
Datenwert D1 wird mit dem Datenwert I verglichen, dessen
Speicheradresse bestimmt werden soll. Wenn I ≦ D1 ist, dann
wird der linke Zweig L des Baums genommen und wenn D1 < I
ist, dann wird der rechte Zweig R genommen. Die Datenstruktur
(oder die Datenwerte in der Speichereinrichtung)
ist - logisch - in einer Weise organisiert, so daß der Knoten X2
ein Datenwert D2 < D1 aufweisen wird, und, daß der Datenwert
D3 < D1 ist. Wenn man beispielsweise einen Bereich von Daten
[0, Dmax] annimmt, teilt der Datenwert, der an dem
Wurzelknoten DRN gespeichert ist, den Baum tatsächlich in
Datenwerte (0 . . . DRN-1), DRN, (DRN+1 . . . Dmax) auf, wobei
der zuerst erwähnte Datenwert und der zuletzt erwähnte
Datenwert jeweils an Knoten zwischen den linken bzw. rechten
Zweigen gefunden werden kann. Da jedoch die einzelnen
Datenwerte D1, D2, D3 in der Speichereinrichtung zufällig
gespeichert sein können, ist es für die Binärbaumsuche
erforderlich, daß - nach Auslesen von D1 bei A(X1), B(X1) - In
formation bezüglich des Orts oder der Speicheradresse von
D2 oder D3 bereitgestellt wird.
Deshalb besteht herkömmlicherweise eine Lösung darin, daß
jedem Datenwert D1, D2, D3 zwei Zeiger, d. h. zwei weitere
Speicherpositionen einschließlich von Adressen, die den Ort
des Datenwertes anzeigen, der größer (R) oder kleiner (L) als
der ausgelesene Datenwert ist, zugeordnet (mit ihm
gespeichert) wird. Während logisch die Binärbaumstruktur
verwendet wird, wobei in jeder weiteren Unterebene der
gespeicherte Datenwert jeweils größer oder kleiner als in der
vorangehenden Unterebene (Unterbaum) in der
Speichereinrichtung selbst wie in Fig. 5 gezeigt, sein wird,
besteht nur eine logische Abbildung unter Verwendung der
Adressenzeiger, während im Prinzip die Datenwerte zufällig in
der Speichereinrichtung gespeichert sein können.
Die Verwendung der Dateneinträge mit verschiedenen
Adressenzeigern erfordert die vorherige Definition des
Wurzel- oder Ursprungsknotens RN, der der erste Knoten ist,
von dem ein Datenwert ausgelesen werden soll und mit dem zu
suchenden Datenwert verglichen werden soll. Ein derartiger
Suchalgorithmus ist in "Data Structures and Algorithm", Aho
Hopcroft, Ullmann; ISBN-0-201-00023-7 auf den Seiten 155 ff.
beschrieben. Ganz offensichtlich besteht ein Nachteil darin,
daß der Speicherplatz, der zum Speichern einer großen
Vielzahl von Datenwerten benötigt wird, erfordert, daß mit
jedem einzelnen Datenwert zwei weitere Zeigereinträge
gespeichert werden, die die Zweige L, R anzeigen.
Während in der Fig. 5 eine explizite Darstellung des
logischen Binärbaums in der Speichereinrichtung existiert,
besteht eine andere Lösung darin, daß eine Abbildung der
Binärbaum-Datenstruktur auf festgelegte Adressen in der
Speichereinrichtung, d. h. auf die Elemente des Matrixfelds,
verwendet wird. In diesem Fall sind die Verzweigungsadressen
vorher durch die Abbildung der Binärbaumknoten auf
vordefinierte Stellen in der Speichereinrichtung bekannt und
deshalb sind hier Zeiger nicht erforderlich und belegen
keinen Speicherplatz. Da die Zeiger nicht ausgewertet werden
müssen, kann die Suchzeit niedriger sein, wie in "Data
Structures and algorithms"; Aho, Hoppcraft, Ullmann;
ISBN-0-201-00023-7; Seiten 271 ff. offenbart ist. Unter Verwendung
einer derartigen impliziten Abbildung der einzelnen Knoten
X1, X2, X3 auf spezifische Stellen in der Speichereinrichtung
kann die Adresse der jeweiligen "Kinder-" oder
untergeordneten Knoten X2, X3 innerhalb eines Unterbaums
(untergeordneten Baums) (!) berechnet werden. Wenn man den
linken und den rechten Zweig der Spaltenadresse A darstellt,
kann tatsächlich die nächste Knotenadresse in dem linken
Zweig wie folgt berechnet werden:
A(L(X)) = 2A(X) + 0
wohingegen der rechte Zweig folgendermaßen berechnet wird:
A(R(X)) = 2A(X) + 1.
Eine Verwendung einer derartigen Abbildung für die
vollständige Adresse <B, A< würde jedoch bedeuten, daß nach
einer kurzen anfänglichen Durchquerung des Baums der
höchstwertige Teil der Adresse sich bei jedem weiteren
Schritt der Durchquerung ändert. Deshalb kann die Suchzeit
für große Bäume, die in einem dynamischen
Direktzugriffsspeicher gespeichert werden müssen, aufgrund
ihrer Größen beträchtlich sein. Für echte Anwendungen werden
schnellere Verfahren benötigt, die insbesondere die Anzahl
von Änderungen des höchstwertigen Teils der Adresse
verringern.
Wie voranstehend erwähnt wurde, verwenden die herkömmlichen
Verfahren entweder die speicherintensive Zeigertechnik oder
verwenden eine Berechnung der vollständigen Adresse, um eine
Entscheidung der Adresse des nächsten Knotens zu treffen, der
mit einem linken Zweig oder einem rechten Zweig in dem Baum
verbunden ist. Dies ist zeitaufwendig und erfordert, daß sich
der höchstwertige Teil der Adresse (die Zeilenadresse B) in
jedem weiteren Schritt der Durchquerung des Binärbaums
ändert.
Deshalb ist die Aufgabe der vorliegenden Erfindung
- - ein Verfahren und eine Zugriffseinrichtung zum Bestimmen der Speicheradresse eines vorgegebenen Datenwerts in einer Speichereinrichtung vorzusehen, die die Verwendung von Zeigern zum Bestimmen von Speicherstellen während der Binärbaumsuche nicht benötigen und die die Speicheradresse schneller als das voranstehend beschriebene Verfahren, bei dem ein Teil der Speicheradresse anstelle einer Verwendung eines Zeigers berechnet wird, bestimmen kann.
Diese Aufgabe wird gelöst durch ein Verfahren zum Bestimmen
der Speicheradresse eines vorgegebenen Datenwerts in einer
Speichereinrichtung, wobei die Datenwerte an vorgegebenen
Speicheradressen gemäß einer Binärbaum-Datenstruktur von
Knoten, Zweigen, Unterbäumen und Blättern gespeichert werden,
umfassend die folgenden Schritte:
- a) Auslesen eines Datenwerts an einer gegenwärtigen Suchadresse aus der Speichereinrichtung;
- b) Vergleichen des ausgelesenen Datenwerts mit dem zu suchenden Datenwert, um zu bestimmen, ob der ausgelesene Datenwert größer oder kleiner als der zu suchende Datenwert ist; und
- c) Bestimmen einer vollständigen nächsten Suchadresse, die nach dem Datenwert durchsucht werden soll, auf Grundlage des Vergleichsergebnisses und der gegenwärtigen Adresse; wobei
- d) die Schritte a) - c) rekursiv ausgeführt werden, bis der ausgelesene Datenwert mit dem zu suchenden Datenwert innerhalb einer vorgegebenen Toleranz übereinstimmt.
Ferner wird diese Aufgabe gelöst durch eine
Zugriffseinrichtung für eine Speichereinrichtung zum
Bestimmen der Speicheradresse eines vorgegebenen Datenwerts
in einer Speichereinrichtung, wobei die Datenwerte an
vorgegebenen Speicheradressen gemäß einer Binärbaum-
Datenstruktur von Knoten, Zweigen, Unterbäumen und Blättern
gespeichert sind, umfassend:
- a) eine Ausleseeinrichtung zum Auslesen eines Datenwerts an einer vorgegebenen gegenwärtigen Suchadresse der Speichereinrichtung;
- b) eine Vergleichseinrichtung zum Vergleichen des ausgelesenen Datenwerts mit dem zu suchenden Datenwert, um zu bestimmen, ob der ausgelesene Datenwert größer oder kleiner als der zu suchende Datenwert ist; und
- c) eine Bestimmungseinrichtung zum Bestimmen einer vollständigen nächsten Suchadresse, die nach dem Datenwert durchsucht werden soll, auf Grundlage des Vergleichsergebnisses und der gegenwärtigen Suchadresse; wobei
- d) die Ausleseeinrichtung, die Vergleichseinrichtung und die Bestimmungseinrichtung rekursiv das Auslesen, das Vergleichen und das Bestimmen ausführen, bis der ausgelesene Datenwert mit dem zu suchenden Datenwert innerhalb einer vorgegebenen Toleranz einstimmt.
Im wesentlichen wurde gemäß der Erfindung realisiert, daß
keine Notwendigkeit besteht, die häufigen Änderungen in dem
höchstwertigen Teil der Adresse durchzuführen, sondern daß
ein Algorithmus vorgesehen werden kann, bei dem nicht nur der
Spaltenteil der Adresse, sondern auch der Zeilenteil der
Adresse auf Grundlage des Vergleichsergebnisses und der
gegenwärtigen Adresse bestimmt, d. h. berechnet wird. In der
vorliegenden Erfindung entspricht der Spaltenadressteil der
Abbildung, die in dem Stand der Technik beschrieben ist,
wohingegen der Zeilenteil der Abbildung und die wichtige
Kombination der Adresse aus den zwei Teilen die Verringerung
der Suchzeit, bis ein Datenwert in dem Speicher lokalisiert
wird, ermöglicht.
Wenn ein Blatt (d. h. ein Ende) in einem Unterbaum während der
Suche erreicht wird, wird gemäß der Erfindung ein neuer
Ursprungs- oder Wurzelknoten eines anderen Unterbaums
bestimmt. Wenn in diesem Unterbaum (untergeordnetem Baum) der
Datenwert immer noch nicht gefunden wird, geht die
Suchprozedur von dem Blattknoten in dem gegenwärtigen
Unterbaum zu einem anderen Wurzelknoten eines anderes
Unterbaums - bis ein unterstes Blatt (unterster Knoten) des
vollständigen Baums erreicht wird. Da eine Suche immer eine
Durchquerung des Baums von oben nach unten bedeutet, wird die
Suche hauptsächlich zu Durchquerungen innerhalb von
Unterbäumen führen. Nur eine minimale Anzahl von Schritten
wird zu einer Änderung von Unterbäumen führen. Als Folge der
Abbildung gemäß der Erfindung ändert sich nur die
Spaltenadresse während einer Durchquerung innerhalb eines
Unterbaums. Somit wird die Anzahl von Schritten, die zu einer
Änderung der Zeilenadresse führt, minimiert, d. h. die
Änderungen in der Zeilenadresse werden auf einem Minimum
gehalten. Deshalb wird die Zeit für eine Suche beträchtlich
reduziert.
Weitere vorteilhafte Ausführungsformen und Verbesserungen der
Erfindung können den abhängigen Ansprüchen entnommen werden.
Nachstehend wird die Erfindung unter Bezugnahme auf ihre
Ausführungsformen und unter Bezugnahme auf die beiliegenden
Zeichnungen beschrieben.
In den Zeichnungen zeigen
Fig. 1a ein allgemeines Prinzip einer Binärbaumstruktur
unter Verwendung von Unterbäumen gemäß der
Erfindung;
Fig. 1b eine Speichereinrichtung, bei der jede Zeile auf
einen Unterbaum von Fig. 1a ausgebildet ist;
Fig. 1c die Abbildung von Knoten in einem Unterbaum auf die
Speicherzellen entlang einer Zeile;
Fig. 2 ein Flußdiagramm, das das Suchverfahren gemäß der
Erfindung darstellt;
Fig. 3a ein Beispiel von Datenwerten, die in einem Speicher
gemäß einer Binärbaumstruktur gespeichert sind;
Fig. 3b den Binärbaum und die jeweilige Stelle von Knoten
entsprechend dem Beispiel in Fig. 3a;
Fig. 4 eine Ausführungsform der Zugriffseinrichtung gemäß
der Erfindung zum Zugreifen auf Datenwerte, die in
einem DRAM-Speicher gespeichert sind;
Fig. 5 eine Speichereinrichtung, in der Datenwerte
zufällig an spezifischen Adressenpositionen gemäß
dem Stand der Technik gespeichert sind; und
Fig. 6 eine herkömmliche logische Binärbaumstruktur, die
zum Ausführen einer Binärbaumsuche gemäß dem Stand
der Technik verwendet wird.
In den Zeichnungen bezeichnen die gleichen oder ähnliche
Bezugszeichen die gleichen oder ähnliche Teile.
Das Verfahren und die Zugriffseinrichtung der Erfindung
basieren auf einer Abbildung von Knoten in einem Binärbaum
auf die Adressen einer Speichereinrichtung, vorzugsweise auf
eines dynamisches Direktzugriffsspeichers (DRAM). DRAMs
offerieren normalerweise eine sehr dichte Speicherung, jedoch
sind sie gegenüber zufälligen verteilten Zugriffen relativ
langsam. Unter Verwendung eines spezifischen
Adressierungsmodus gemäß der Erfindung können weitaus
geringere Zugriffszeiten erreicht werden. Dafür müssen von
den Adressen einer Abfolge von aufeinanderfolgenden Zugriffen
bestimmte Beschränkungen eingehalten werden. Die Abbildung
gemäß der Erfindung stellt sicher, daß die Suche durch einen
Baum immer zu einer Abfolge von Zugriffen führt, die diese
Beschränkungen erfüllt. Das erreichbare Betriebsverhalten
(die Zeitabnahme) steigt um ungefähr einen Faktor 10 an.
Die Adress-Bits des DRAMs sind allgemein gebräuchlich, wie
voranstehend erwähnt, in zwei Teile unterteilt, die als die
Zeilenadresse B und die Spaltenadresse A bezeichnet werden
(siehe Fig. 5). Normalerweise weisen die Zeilen- und
Spaltenadresse die gleiche Größe auf. Wegen der internen
Implementierung des DRAM ist die Zugriffszeit signifikant
kürzer, wenn aufeinanderfolgende Zugriffsvorgänge lediglich
dadurch ausgeführt werden können, daß die Spaltenadresse
verändert wird, wohingegen die Zeilenadresse so weit wie
möglich unverändert gehalten wird. Somit ermöglicht das
neuartige Verfahren und die Zugriffseinrichtung gemäß der
Erfindung zum Abbilden einen Baumsuchalgorithmus, der die
Kriterien erfüllt, die Zeilenadresse so weit wie möglich
unverändert zu halten.
Fig. 1a zeigt die Unterteilung eines Binärbaums in eine
Anzahl von Unterbäumen gemäß der Erfindung. Der vollständige
Baum umfaßt eine Anzahl von Unterbäumen, von denen fünf
Unterbäume 1, 2, 3, 4, 5 gezeigt sind. In Fig. 1a weist jeder
Unterknoten einen Wurzelknoten auf, der mit "k = 1"
bezeichnet ist. Genauso ist jeder Blatt- oder Endknoten eines
Unterbaums mit "k = K" bezeichnet. K ist die "Tiefen des
Unterbaums, d. h. es gibt eine Anzahl von anderen Knoten, die
innerhalb jedes Unterbaums nur mit gestrichelten Linien
dargestellt sind. Tatsächlich umfaßt jeder dargestellte
Unterbaum in Fig. 1a somit K Ebenen, was insgesamt pro
Unterbaum 2 K-1 Knoten entspricht.
Sobald auf einen Wurzelknoten über seine Spalten- und
Zeilenadresse zugegriffen worden ist, wird eine Suche jeweils
in einem Unterbaum mit einer Anzahl von Ebenen K (tatsächlich
hängt die Anzahl von Ebenen K von der Größe der Zeilen in dem
Speicher ab) ausgeführt. Jeder Unterbaum weist (unterste)
Blatt- oder Endknoten auf, die mit einem jeweiligen
Wurzelknoten des nächsten Unterbaums verbunden sind. Es sei
darauf hingewiesen, daß in Fig. 1a nur diejenigen Knoten
vollständig gezeichnet sind, die entweder Wurzelknoten oder
Endknoten von Unterbäumen sind. Beispielsweise ist der
Endknoten LM des Unterbaums 1 direkt mit dem Wurzelknoten X1
des Unterbaums 3 verbunden. Es existieren eine Anzahl von
Zwischenknoten zwischen dem Wurzelknoten X1 und seinen
Endknoten X2, X3. Der Wurzelknoten befindet sich bei k = 1
und der Endknoten befindet sich bei k = K. Der Endknoten LM
des Unterbaums 5 bildet gleichzeitig auch einen Endknoten des
gesamten Binärbaums. Deshalb ist es wichtig, zwischen Wurzeln
(Anfangspunkten) und Blättern (Endpunkten) des gesamten Baums
und Wurzeln und Blättern der Unterbäume zu unterscheiden. In
jedem Unterbaum geht die Variable k schrittweise von 1 bis K
für jede Durchquerung eines Unterbaums, wiederholt, bis der
Wert, der gesucht wird, gefunden wird oder ein Endknoten des
gesamten Baums erreicht wird.
Die Anzahl von Ebenen in einem Unterbaum hängt von der
tatsächlichen Speicher-Hardware ab. Gemäß der Erfindung wird
die Abbildung der Speicherstellen in einer derartigen Weise
durchgeführt, daß jede Zeile 2K-1 Einträge, d. h. Spalten
enthält. Wie sich nachstehend noch ersehen läßt, entspricht
die Suche innerhalb eines Unterbaums gemäß der Erfindung
einer Suche innerhalb einer einzelnen Zeile. Die
Speicherstellen entlang der Zeile (z. B. entlang des
Unterbaums 1) entsprechen (sequentiell mit zunehmender
Spaltenadresse) dem Wurzelknoten, den Zwischenknoten und den
Endknoten LN des spezifischen Unterbaums. Jeder ausgelesene
Datenwert D1, D2, D3 wird mit dem zu lokalisierenden
Datenwert I verglichen und eine Entscheidung wird getroffen,
ob der linke oder rechte Zweig innerhalb des Unterbaums
genommen werden soll.
Wie in Fig. 6 für einen herkömmlichen Binärbaum gezeigt, ist
ein Baum eine spezielle Art von Graph, der keine Zyklen darin
aufweist; das heißt, nach Durchqueren des Baums mit einem
Schritt besteht der einzige Weg zum Zurückkehren zu dem
vorangehenden Knoten darin, den gleichen Weg zurückzugehen.
Dies ist exakt in Übereinstimmung mit einem natürlichen Baum.
Ferner ist jeder Teil eines Baums, der selbst einen Baum
bildet, ein Unterbaum. Somit enthält ein Baum allgemein viele
Unterbäume.
Der gesamte Baum gemäß der Erfindung, so wie er in Fig. 1
dargestellt ist, ist in Unterbäume in einer speziellen Weise
aufgeteilt, so daß die Unterbäume ausschließlich sind und
nicht mit anderen Unterbäumen verbunden sind; d. h., keiner
der Unterbäume (die jeweils einen Wurzelknoten, Endknoten und
Zwischenknoten, die in der Tat untereinander verbunden sein
können, wie in Fig. 1c gezeigt, enthalten) enthält
irgendeinen Teil der anderen Unterbäume. Natürlich existieren
viele andere Vorgehensweisen zum Bilden von Unterbäumen aus
dem gesamten Baum. Diese Tatsache ist wichtig, da die
Tatsache, daß der Baum in Unterbäume unterteilt ist, nicht
bedeutet, daß dies so durchgeführt wird, wie in Fig. 1a
gezeigt. Somit definiert Fig. 1a den speziellen Typ von
Unterbaum-Aufteilung, die in der Erfindung durchgeführt wird.
Die Organisation der Daten innerhalb einer Zeile (eines
Unterbaums) ist so, wie in Fig. 1c gezeigt. Der Wurzelknoten
RN wird immer auf die erste Spaltenadresse A = 1 abgebildet.
Unter der Annahme eines Datenbereichs zwischen Dmin und Dmax
teilt dann der Datenwert D1, der sich an dem Wurzelknoten RN
befindet, den Unterbaum in Datenwerte D = [Dmin, D1-1], die
sich an Knoten auf der linken Seite befinden, und Datenwerte
D = [D1+1, Dmax], die an Knoten auf der rechten Seite
gespeichert sind, auf. Es ist wichtig darauf hinzuweisen, daß
durch die Unterteilung nur die Bereiche angegeben werden,
nicht die exakten Werte der Daten. Tatsächlich werden die
nächsten Knoten bei k = 2 wiederum eine Unterteilung gemäß
des jeweiligen Datenwerts D2, D3 vornehmen, die an den Knoten
gespeichert sind. Wie sich der Fig. 1c entnehmen läßt,
befindet sich jedoch ein Datenwert D2 < D1 an der
Spaltenadresse A' = 2A, während sich der Datenwert D3 auf dem
rechten Zweig an der neuen Spaltenadresse A = 2A+1
befindet. Wiederum werden die Datenwerte D4, D5 an
Spaltenadressen 2A, 2A+1 jeweils gespeichert. Unter der
Annahme, daß K = 3 ist, bilden offensichtlich die Datenwerte
D4, D5, D6, D7 die Blatt- oder Endknoten des Unterbaums, wie
in Fig. 1c angedeutet ist. Allgemein wird die Adresse eines
neuen Knotens auf einem linken Zweig 2A sein und auf dem
rechten Zweig wird sie 2A+1 sein. Allgemein existieren 2K-1
Endknoten, wohingegen offensichtlich der Datenwert DK an der
Spaltenadresse 2K-1 gespeichert wird. Die Anzahl von
Zwischenknoten IN beträgt 2K-1-2. Dies beschreibt die
Abbildung der Knoten auf die einzelnen Spaltenadressen in
einer Zeile.
Sobald jedoch ein Endknoten (D4, D5, D6, D7 für K = 3 oder DK
für die 2K-1 Knoten an dem rechten Ende der Spalte) in einer
Zeile erreicht wird, ist die Frage, wo sich die nächsten
Wurzelknoten (D4', D4'' . . . für K = 3 und DK', DK'' für
k = K) in dem Matrixspeicher befinden. Wie in Fig. 1c angedeutet,
befinden sie die Wurzelknoten der nächsten Unterbäume immer
an der Position A = 1, jedoch sind die Wurzelknoten und die
nächsten Zwischenknoten notwendigerweise und die Endknoten
nicht notwendigerweise in der nächsten Zeile gespeichert.
Gemäß der Erfindung befindet sich der nächste Wurzelknoten
des nächsten Unterbaums an der Spaltenposition A = 1 und der
Zeilenposition B(L(X)) und B(R(X)). Gemäß der Erfindung
wird der Datenwert D4', DK' für den linken Zweig bei
B(L(X)) = 2K.B(X) + 2.A(X) + 0-2K
gespeichert, wohingegen der nächste Wurzelknoten eines
Unterbaums, der auf einem rechten Zweig verbunden ist, sich
an der Spaltenadresse
B(R(X)) = 2K.B(X) + 2.A(X) + 1-2K
befindet. Wie sich der Fig. 1b ferner entnehmen läßt,
befindet sich der nächste Unterbaum (die zugehörige Zeile)
nicht notwendigerweise benachbart zu dem vorangehenden
Unterbaum.
Die Abbildung der Knoten des Binärbaums auf die
Speicherpositionen in dem Speicher gemäß Fig. 1c bedeutet,
daß D1 < D2 < D3 etc. ist. Dies bedeutet, daß die Einträge an
den Knoten eines Binärbaums gespeichert sind, der gemäß einer
zunehmenden Größe von Werten von links nach rechts in dem
Baum (und somit auch innerhalb des Unterbaums die mit den
Werten in Fig. 1a, 1b, 1c angedeutet ist) sortiert ist.
Natürlich weist die Speicherung der einzelnen Datenwerte in
einer ansteigenden Größe von links nach rechts in dem
Binärbaum (entsprechend einer spezifischen Reihenfolge in der
Speicherzeile, wie in Fig. 1c angedeutet ist) einen Einfluß
auf den Suchalgorithmus auf, der in jedem Unterbaum und von
jedem Unterbaum-Endknoten zu dem nächsten Unterbaum-
Wurzelknoten verwendet wird.
Wie voranstehend erläutert wurde, besteht das Hauptziel
darin, so wenig Zeilenänderungen wie möglich vorzunehmen,
d. h. den höchstwertigen Teil der Adresse S = <B, A< so
selten wie möglich zu ändern, da nur die Suche in der
Spaltenrichtung sehr schnell ist. Das Speichern der
Datenwerte für einen Unterbaum in einer Zeile gemäß einer
spezifischen Reihenfolge in einer Spaltenrichtung führt zu
dem Ergebnis, daß die letzten Einträge in der Spaltenrichtung
die Endknoten LN jedes Unterbaums bilden müssen. Wie viele
Endknoten LN (Endknoten-Speicherpositionen LN in Fig. 1b)
zugewiesen sind, hängt von der Anzahl von Ebenen innerhalb
des Unterbaums ab, d. h. hängt von der Größe des Speichers in
der Spaltenrichtung ab. Beispielsweise umfaßt ein Unterbaum
mit K = 3 Ebenen 4 Endknoten LN an den vier am weitesten
rechts liegenden Positionen in der Spaltenrichtung (siehe
auch das Beispiel Fig. 3a, 3b).
Überall in der Beschreibung sei - in Hinsicht auf die
voranstehend erläuterte Abbildung - erwähnt, daß der
(logische) Ausdruck "Knoten" der (physikalischen)
abgebildeten Speicherstelle in dem Speicher äquivalent ist.
Wie voranstehend erläutert sieht die vorliegende Erfindung
eines Abbildung des Binärbaums in dem zweidimensionalen
Speicherraum derart vor, daß jede Zeile einem Unterbaum
entspricht und eine spezifische Suchstrategie innerhalb jeder
Zeile oder jedes Unterbaums verwendet wird. Die Suche
innerhalb eines Unterbaums wird gestoppt, wenn entweder die
Übereinstimmung zwischen dem ausgelesenen und dem zu
suchenden Wert festgestellt wird oder ein Endknoten LF
angetroffen wird. Während die Suche innerhalb jedes
Unterbaums ausgeführt wird, muß der Suchalgorithmus deshalb
die Ebene verfolgen, wo er sich befindet, da eine Änderung
der Zeilenadresse B nur dann ausgeführt wird, wenn an einem
Endknoten angekommen wird.
In der vorliegenden Erfindung wurde festgestellt, daß
innerhalb jedes Unterbaums nicht nur die Suchadressen
berechnet werden können, sondern es wurde auch festgestellt,
daß die Adresse eines spezifischen neuen Wurzelknotens eines
nächsten Unterbaums nur aus dem Vergleichsergebnis und der
gegenwärtigen Adresse eines Endknotens berechnet werden kann.
D.h. gemäß der Erfindung wird eine neue vollständige Adresse
S = <B, A<, die die Speicheradresse eines Knotens
spezifiziert, an dem ein nächster Datenwert ausgelesen werden
sollte, aus der gegenwärtigen Adresse der gegenwärtig
ausgelesenen Speicherstelle und auf Grundlage des
Vergleichsergebnisses berechnet. Dies trifft für die Adresse
eines nächsten Knotens innerhalb eines Unterbaums zu und gilt
auch zum Auffinden der Speicheradresse des nächsten
Wurzelknotens, des nächsten zu durchsuchenden Unterbaums.
Fig. 2 zeigt ein Flußdiagramm gemäß einer Ausführungsform des
Suchverfahrens gemäß der Erfindung. Es sei darauf
hingewiesen, daß für diesen Algorithmus der vollständige
Binärbaum in Unterbäume gem. Fig. 1a aufgeteilt ist und der
am weitesten links liegende Unterbaum auf der Ebene unterhalb
des Wurzel-Unterbaums abgetrennt ist.
Wenn, wie voranstehend erläutert, der Speicher mit m Spalten
vordefiniert ist, beträgt die Anzahl von Ebenen K = ln(m)/ln2
(oder die nächste kleinere ganze Zahl). Die Anzahl von Bits
in der Spaltenadresse der tatsächlichen Hardware ist gleich
K, wobei K die Anzahl von Ebenen in einem Unterbaum ist. Es
sei darauf hingewiesen, daß in sämtlichen Beispielen in der
Fig. 1a, 1b, 1c die Spaltenadresse 0 aufgrund der
Baumausbildung nicht verwendet wird. Wenn m die Gesamtanzahl
von Spalten und K die Anzahl von Ebenen in einem Unterbaum
spezifiziert, dann werden in der Tat nur m-1, oder 2k-1 wenn
kleiner, Spalten der m Spalten verwendet (siehe Fig. 1a, 1b,
1c).
Nach Starten des Suchverfahrens im Schritt S1 wird die Ebene
des ersten Unterbaums 1 deshalb auf k = 1 gesetzt, d. h. die
Suche wird an dem Wurzelknoten RN des Unterbaums 1 (siehe
Fig. 1a) gestartet. Dann muß im Schritt S3 der zu suchende
Datenwert I, die Anzahl von Ebenen pro Unterbaum K sowie der
Ort oder die Wurzeladresse [<B(0)A(0)< = <0,1< (in einer
Binärnotation)] des Wurzelknotens RN eingegeben werden.
Deshalb ist der Wurzelknoten RN des ersten Unterbaums 1 der
Eintrittspunkt des Suchalgorithmus.
Im Schritt S4 wird der Datenwert D an der gegenwärtigen
Adresse <B(0), A(0)< aus dem Wurzelknoten RN des Unterbaums
1 gelesen. Im Schritt S5 wird der ausgelesene Datenwert D mit
dem zu lokalisierenden Datenwert I verglichen. Wenn eine
Übereinstimmung D = I im Schritt S5 festgestellt wird, dann
wird eine Information, die dem gefundenen Datenwert D
zugeordnet ist, im Schritt S7 ausgelesen, wohingegen die
Suche im Schritt S11 beendet wird.
Wenn im Schritt S5 der ausgelesene Datenwert D größer als der
zu suchende Datenwert I ist, bestimmt der Schritt S6, ob ein
Endknoten LN erreicht ist oder nicht. Dies kann durch
Vergleichen der laufenden Zahl k mit der gegebenen Anzahl von
Ebenen K bestimmt werden. Wenn in dem Schritt S6 festgestellt
wird, daß k < K ist, dann werden Schritt S9, S14 ausgeführt.
Im Schritt S9 wird die folgenden Gleichung zum Berechnen
einer neuen Adresse eines Zwischenknotens und möglicherweise
eines Endknotens innerhalb des Unterbaums 1, der entlang des
linken Zweigs (I < D) liegt, berechnet:
B(L(X)) = B(X)
A(L(X)) = 2.A(X) + 0 (1).
A(L(X)) = 2.A(X) + 0 (1).
Hierbei bezeichnen B(L(X)) und A(L(X)) die neue Zeilenadresse
und die neue Spaltenadresse des-nächsten Unterknotens
innerhalb des Unterbaums 1. Danach wird die laufende Zahl der
Tiefenebene k im Schritt S14 erhöht.
Wenn im Schritt S5 bestimmt wird, daß I < D ist, wird genauso
ein rechter Zweig von dem Wurzelknoten RN genommen und wenn
im Schritt S8 bestimmt wird, daß die vollständige Tiefe des
Unterbaums noch nicht erreicht worden ist, d. h. k < K, dann
werden die Schritte S12, S16 analog zu den Schritten S9, S14
ausgeführt, wobei die Gleichung (2) die Speicheradresse des
nächsten Eintrags oder Unterknotens innerhalb des Unterbaums
1 wie folgt definiert:
B(R(X)) = B(X)
A(R(X)) = 2.A(X) + 1 (2).
A(R(X)) = 2.A(X) + 1 (2).
Wie sich dem Schritt S5, den Schritten S6, S8 und S9, S12
entnehmen läßt, wird innerhalb des Unterbaums nur der
Spaltenadressenteil A modifiziert, d. h. er wird entweder für
den linken Zweig verdoppelt oder für den rechten Zweig
verdoppelt und um eine weitere Spalte nach rechts bewegt. Es
ist wichtig darauf hinzuweisen, daß der Zeilenadressenteil B
unabhängig von der Entscheidung im Schritt S5 beibehalten
wird. Wenn der ausgelesene Datenwert größer ist, dann wird
ein Sprung von zweimal der Spaltenadresse ausgeführt und wenn
der ausgelesene Datenwert kleiner als der zu suchende I ist,
dann ist es zweimal die gegenwärtige Spaltenadresse plus
eins.
Da die Schritte S9, S12 nur für k < K (K = die maximale Tiefe
oder die Anzahl von Ebenen innerhalb eines Unterbaums; wobei
K vordefiniert ist) ausgeführt werden, wird natürlich ein
neuer Datenwert D im Schritt S4 an der neuen Adresse A, B
ausgelesen, die in den Schritten S9, S12 bestimmt wird. Das
Bezugszeichen R bezeichnet diesen rekursiven Durchlauf durch
die einzelnen Schritte S4, S5, S6, S9, S14 bzw. S4, S5, S8,
S12, S16. Wenn während des rekursiven Prozesses innerhalb
eines Unterbaums der Datenwert gefunden wird (I = D) kommt der
Algorithmus im Schritt S11 zum Ende.
Nach k Iterationen bestimmt der Schritt S6 oder der Schritt
S8 jedoch, daß die vollständige Tiefe des zugeordneten
Unterbaums erreicht ist, d. h. k = K, was bedeutet, daß eine
Endknoten-Speicherposition LN erreicht worden sein muß. Unter
Verwendung der Abbildung von Datenwerten, wie in Fig. 1c ist
deutlich, daß die Endknoten LN in dem Adressenraum der
Speichereinrichtung in Fig. 1b wenigstens 2K-1
Speicherpositionen an dem höheren Ende der Spaltenadressen A
(d. h. an dem rechten Ende der Zeile) entsprechen müssen.
Wenn ein derartiger Blatt- oder Endknoten LN in einem
Unterbaum erreicht wird, dann werden die folgenden
Gleichungen (3), (4) im Schritt S10, S13 verwendet, um eine
neue Zeilenadresse und eine neue Spaltenadresse eines
Wurzelknotens eines weiteren Unterbaums zu berechnen:
B(L(X)) = 2K.B(X) + 2.A(X) + 0-2K
A(L(X)) = 1 (3)
B(R(X)) = 2K.B(X) + 2.A(X) + 1-2K
A(R(X)) = 1 (4).
Aus den Gleichungen (3), (4) kann ersehen werden, daß im Fall
des Auftretens eines Endknotens die Spaltenadresse A - un
abhängig von der Entscheidung im Schritt S5 - auf die erste
Spalte, d. h. A(L(X)) = A(R(X)) = 1 gesetzt wird. Unabhängig
von der Entscheidung im Schritt S5 wird jedoch eine neue
Zeilenadresse B gewählt.
Es ist interessant, auf die Fig. 1b und 1c hinzuweisen, in
denen die Pfeile von dem Wurzelknoten LN die Berechnung gemäß
der Gleichungen (3), (4) bezeichnen, daß in der Tat der
nächste Wurzelknoten des nächsten Unterbaums in der Spalte
A = 1 befindet, sich jedoch nicht auf dem nächsten benachbarten
Unterbaum 2 befindet, wie man unter Umständen angenommen
hätte. Im Gegensatz dazu führen die Gleichungen (3), (4) eine
Art von Spalten-Zeilen-Abbildung durch, wobei die nächste
Zeilenadresse des nächsten Wurzelknotens des nächsten zu
durchsuchenden Unterbaums nicht die nächste Zeilenadresse
ist, mit Ausnahme des Endknotens auf der am weitesten links
liegenden Seite in dem Unterbaum (siehe z. B. die Abbildung
von 13 nach 19 in den Beispiel in Fig. 3).
Nachdem der nächste Wurzelknoten des nächsten zu
durchsuchenden Unterbaums im Schritt S13 bestimmt worden ist,
wird k im Schritt S17 auf k = 1 zurückgesetzt, da
offensichtlich die Suche in dem nächsten Unterbaum in der
Ebene 1 beginnt, d. h. an der Wurzelknoten-Adresse. Dann wird
wiederum im Schritt S4 der nächste Datenwert D ausgelesen und
die Schritte S5, S6, S9, S14 oder die Schritte S5, S8, S12,
S16 werden rekursiv für den nächsten Unterbaum (die neue
Zeile) ausgeführt, bis entweder eine Übereinstimmung zwischen
D und I festgestellt wird oder wiederum der Endknoten des
neuen Unterbaums gefunden wird.
Natürlich kann es passieren, daß selbst innerhalb des
nächsten Unterbaums (z. B. 4 oder 5 in Fig. 1b) der Datenwert
nicht angetroffen wird und demzufolge ein Endknoten LN
erreicht wird. Wenn beispielsweise der Endknoten LN in dem
Unterbaum 5 erreicht wird, dann führt weder die Gleichung (3)
noch die Gleichung (4) zu einer Zeilenadresse, die noch
innerhalb des Zeilenadressraums enthalten ist (wenn die
Anzahl von Zeilen und Spalten die gleiche ist). Wenn die
Anzahl von Zeilen größer als die Anzahl von Spalten ist, dann
kann natürlich eine weitere neue Berechnung eines neuen
Unterbaums ausgeführt werden. Dies bedeutet, daß weitere
Unterbäume (Zeilen) verfügbar sind. In der Tat muß bereits
dann, wenn der Algorithmus im Unterbaum 2 oder 3 in Fig. 1a
ankommt, die Anzahl von Bits in der Zeilenadresse zweimal so
groß wie die Anzahl von Bits in der Spaltenadresse sein, da
mit jeder weiteren Ebene in dem Binärbaum sich in
eigentümlicher Weise die Anzahl von Knoten verdoppeln.
Wenn kein weiterer Unterbaum-Wurzelknoten bestimmt werden
kann, wenn ein Endknoten in Unterbaum 4 erreicht wird, zeigt
dies an, daß der Datenwert in der Binärsuche durch den
Unterbaum und somit auch in dem gesamten Binärbaum nicht
gefunden wurde.
Es sei darauf hingewiesen, daß vorzugsweise im Schritt S5
eine gewisse Toleranz zugelassen wird, so daß eine
Übereinstimmung von D und I innerhalb eines gewissen
Toleranzwerts festgestellt wird, d. h. eine Übereinstimmung
wird festgestellt, wenn |D-I| < ΔD ist, wobei ΔD eine
bestimmte Toleranz bezeichnet, die vordesigniert ist.
Die Fig. 3a, 3b zeigen den allgemeinen Algorithmus in der
Fig. 1a, 1b, 2 für ein spezifisches Beispiel, wenn eine
Binärnotation für die Spaltenadresse A und die Zeilenadresse
B verwendet wird. K = 3 bedeutet, daß 8 Spalten und
(wenigstens) 8 Zeilen grundlegend in dem Speicheradressraum
vorgesehen sind. Da die Gleichungen (1), (2) keine Änderung
in der Spaltenadresse ergeben, wenn der allererste
Wurzelknoten RN ganz oben in dem Binärbaum eine Adresse
A(0), B(0) = 000, 000 aufweisen würde, wird die erste
Spaltenadresse A = 000 nicht verwendet. Deshalb wird der
erste Knoten, in dem nachgeschaut wird, wenn der Schritt S4
in Fig. 2 zum erstenmal ausgeführt wird, immer die am
weitesten links liegende Speicherstelle in dem Speicher in
Fig. 3a sein, d. h. B(0) = 0 und A(0) = 1 für den oberen und
ersten Wurzelknoten des ersten Unterbaums (d. h. für den
Wurzelknoten des gesamten Binärbaums).
Unter Verwendung der binären Darstellung für die
Adressennummern der Zeile und Spalte zeigt Fig. 3b den
Unterbaum 1 und den Unterbaum 2, die sich in den ersten zwei
Zeilen mit den Adressen 000, 001 befinden.
Die Zuordnung der Datenwerte D innerhalb der
Speichereinrichtung in Fig. 3a wird gemäß Fig. 3b
durchgeführt, wie allgemein unter Bezugnahme auf Fig. 1
erläutert wurde. In dem Beispiel in Fig. 3 wird angenommen,
daß sämtliche Datenwerte zu einem gegebenen Intervall 0-100
gehören. Beginnend mit dem Wurzelknoten unterteilt der
entsprechende Wert 56 dieses Intervall in zwei neue
Intervalle, nämlich 0-55 (linker Zweig) und 57-100 (rechter
Zweig). Nun werden alle Werte, die zu dem unteren Intervall
0-55 gehören, in dem linken herabhängenden Baum gespeichert,
wohingegen sämtliche Werte, die zu dem höheren Intervall 57-100
gehören, in dem rechten herabhängenden Baum gespeichert
werben. Dieser Prozess wird für sämtliche niedrigeren Ebenen
unter Verwendung eines neuen Intervalls auf jeder Ebene
rekursiv wiederholt. Beispielsweise wird für den linken
Abschnitt von dem Wurzelknoten das Intervall 0-55 verwendet.
Der Wert, der an dem nächsten Knoten gefunden wird ist 27.
Somit ist die nächste Unterteilung in das Intervall 0-26 und
28-55 für die zwei herabhängenden Unterbäume, die von dem
Knoten herabhängen, der den Datenwert 27 enthält. Dies
bedeutet, daß sämtliche Werte, die zu 0-26 gehören, in dem
linken herabhängenden Unterbaum gespeichert werden und
sämtliche Werte, die zu 28-55 gehören, in dem rechten
herabhängenden Baum gespeichert werden.
Es sei darauf hingewiesen, daß diese Art einer Abbildung von
Datenwerten wie in Fig. 3b ↔ 3a gezeigt ist, für den
vollständigen Baum und für einen einzelnen Unterbaum selbst
zutrifft, wobei beachtet wird, daß die Startintervalle gemäß
der Anzahl von Ebenen K unterschiedlich sein können. Was in
Fig. 3b bezüglich der Datenwerte gezeigt ist, ist deshalb ein
Binärbaum, der sich vollständig im Gleichgewicht befindet.
Dies wird genauso mit den Einträgen in jeder Zeile
reflektiert, die jeweils den Knoten eines Unterbaums
entsprechen.
Die wichtigste Schlußfolgerung der Abbildung ist, daß der
Wert in dem Baum überhaupt nicht existieren kann, wenn ein
Blatt- oder Endknoten des gesamten Baums erreicht wird, ohne
daß die Werte, nach denen gesucht wird, gefunden worden sind.
Eine Multiplikation mit zwei für einen linken Zweig L
bedeutet einfach eine Verschiebung des Spaltenadressenteils A
nach links. Ein rechter Zweig R führt dazu, daß der
Spaltenadressenteil A nach links verschoben wird und zu ihm
"1" addiert wird. Somit entsprechen die einzelnen Adressen
und die Zwischenknoten bei k = 2 und bei den Endknoten bei k = 3 = K
der bestimmten Zeile und Spalte, an der sich ein
bestimmter Datenwert D befindet. Fig. 3b zeigt die Datenwerte
56, 57, 82, . . . an den jeweiligen Zwischenknoten und
Endknoten, so wie dies unter Bezugnahme auf Fig. 1b
diskutiert wurde.
Offensichtlich berechnet der Algorithmus in Fig. 2 eine neue
Wurzelknotenadresse eines nächsten Unterbaums immer dann,
wenn er einen der vier Knoten 0,100 oder 0,101 oder 0,110
oder 0,111 erreicht.
Es gibt nur einen Zweig für die Berechnung eines neuen
Wurzelknotens, der nicht zugelassen ist, nämlich die Adresse
0,100 in einer Situation, bei der der ausgelesene Datenwert
D = 13 größer als der zu suchende Wert I ist. In diesem Fall
sollte tatsächlich ein linker Zweig von der Adresse 0,100
genommen werden, d. h. die Gleichung (3) sollte verwendet
werden. Jedoch würde in diesem Fall die Gleichung (3) für einen
linken Zweig B(L(X)) = 2K(000) + 2(100)-2K = 0000-1000-1000 = 0000
ergeben. Deshalb darf der erste linke Zweig, der in
Fig. 1a und Fig. 3b mit "abgeschnitten" angedeutet ist, nicht
genommen werden, da die Suche erneut von der
Wurzelknotenadresse beginnen würde.
In der Tat weist die Suchmaschine selbst keinen Test auf, der
vermeidet, daß die Durchquerung in den verbotenen
(abgeschnitten) Unterbaum läuft. Jedoch kann dies
sichergestellt werden, indem ein spezifischer Datenwert an
dem linken Endknoten des ersten (Wurzel-) Unterbaums
gespeichert wird. Das heißt, der am weitesten links liegende
Knoten in dem Wurzel-Unterbaum enthält einen Teil mit einem
Datenwert, der garantiert, daß der rechte Zweig und somit der
nächste Unterbaum nach rechts (Datenwert 19 in Fig. 3b) immer
durch die Sucheinrichtung gewählt wird. Wenn die Teile in der
Reihenfolge von links nach rechts in dem Baum gespeichert
werden, wie in Fig. 3b gezeigt, wird diese Bedingung
automatisch erfüllt sein. Wenn der Baum abgeschnitten ist,
wird auch der am weitesten links liegende Knoten in dem
Wurzel-Unterbaum der am weitesten links liegende Knoten in
dem gesamten Baum. Somit ist dies der Ort, an dem der Teil
mit dem niedrigsten Wert gespeichert wird. Jeder andere Wert
liegt auf der rechten Seite.
Wenn jedoch ein rechter Zweig genommen wird, bedeutet dies
gemäß Gleichung (2) B(R(X)) = 001, daß der am weitesten links
liegende Endknoten LN mit der Adresse 0,100 zu einer nächsten
Endknoten-Wurzeladresse von 001, 001 führt. Wie in Fig. 3b
angedeutet, entspricht dies tatsächlich dem Wurzelknoten des
Unterbaums 2, der sich in der zweiten Zeile befindet. Wie
sich aus Fig. 3a ersehen läßt, kann jeder der Endknoten
dieses Unterbaums 1 auf neue Wurzelknoten von neuen
Unterbäumen, die sich an der Position A = 1 an einer
spezifischen Zeilenadresse befinden, "abgebildet" werden.
Wenn die Anzahl von Zeilen wenigstens die gleiche Größe wie
die Größe der Spalten ist, kann sichergestellt werden, daß
jeder Endknoten LN des Unterbaums 1 in eine neue
Wurzelknotenadresse in der ersten Spalte "abgebildet" oder
"transponiert" werden kann.
Wie sich ferner den Fig. 3a, 3b entnehmen läßt, wenn die
Datenwerte in den Knoten des Binärbaums gespeichert werden,
stellt der mit den Gleichungen (1), (4) beschriebene
Suchalgorithmus sicher, daß eine minimale Anzahl von
Zeilenadressenänderungen verwendet wird, während die
Speichermatrix zum Auffinden einer Übereinstimmung (innerhalb
einer Toleranz) mit dem Datenwert I in einer minimalen Zeit
durchsucht wird. Wenn keine Übereinstimmung an dem untersten
Endknoten gefunden wird, dann wurde der Datenwert nicht
gefunden.
Wenn bevorzugt eine Binärdarstellung des Spaltenadressenteils
A des Zeilenadressenteils B verwendet wird, kann die Suche
erleichtert werden, da eine Multiplikation mit 2 nur die
Verschiebung der Adresse nach links in einem Schieberegister
bedeutet.
Wie voranstehend erläutert kann die Änderung in der
Zeilenadresse beim Durchqueren von einem Unterbaum zu dem
nächsten Unterbaum durch die folgenden Schritte beschrieben
werden. Zunächst wird die alte Zeilenadresse K-Schritte nach
links verschoben, wobei mit Nullen aufgefüllt wird. Dann wird
der Algorithmus innerhalb des Unterbaums zum Ändern der
Spaltenadresse verwendet (was K + 1 Bits in der neuen
Spaltenadresse impliziert). Dann wird das am weitesten links
stehende Bit dieser Spaltenadresse fallengelassen (was K Bits
in der neuen Spaltenadresse impliziert). Dann wird diese
Spaltenadresse in die K 0 Bits der Zeilenadresse addiert.
Schließlich wird die Spaltenadresse auf 1 gesetzt. Wie
ersehen werden kann, werden bei jeder Änderung des Unterbaums
K mehr Bits benötigt, um die Zeilenadresse zu halten, wie
voranstehend unter Bezugnahme auf die Fig. 1, 3 erläutert
wurde. Somit muß die Anzahl von Bits in der Zeilenadresse ein
Vielfaches der Anzahl von Bits in der Spaltenadresse sein.
Dies ist die bevorzugte Abbildung gemäß der Erfindung.
Jedoch ist eine ähnliche Betrachtung für den Fall erfüllt,
bei dem die Anzahl von Bits in der Zeilenadresse nicht ein
Vielfaches der Anzahl von Bits in der Spaltenadresse ist.
Hierbei wird zunächst der kleinste Baum aufgebaut, der die
voranstehend beschriebene bevorzugte Anzahl von Zeilen und
Spalten erfüllt. Dann werden sämtliche Unterbäume
abgeschnitten, die 1 in dem nicht-existierenden Teil der
Zeilenadresse enthalten. Somit kann auch ein Speicher
verwendet werden, in dem die Anzahl von Zeilen nicht ein
Vielfaches der Anzahl von Spalten ist, wenn ein Abschneiden
von Zweigen verwendet wird und die Zuordnung der Daten
entsprechend durchgeführt wird. Um wiederum zu vermeiden, daß
der Algorithmus in verbotene Unterbäume geht, die
abgeschnitten worden sind (die tatsächlich nicht vorhanden
sind), kann das spezifische Speichern von Datenwerten derart
verwendet werden, daß niemals eine Notwendigkeit besteht,
daß ein Pfad zu dem abgeschnittenen Zweig genommen wird.
Nachstehend wird eine Hardwarerealisation einer
Ausführungsform der Zugriffseinrichtung gemäß der Erfindung
unter Verwendung eines derartigen Suchverfahrens, so wie es
in den Fig. 1-3 erläutert wurde, unter Bezugnahme auf Fig. 4
erläutert.
In Fig. 4 bezeichnet DRAM die Speichereinrichtung und die
Zugriffseinrichtung umfaßt eine Vergleichseinrichtung MC zum
Vergleichen eines ausgelesenen Datenwerts D mit dem zu
suchenden Datenwert I, um zu bestimmen, ob der ausgelesene
Datenwert D größer oder kleiner als der zu suchende Datenwert
I ist. Wenn eine Übereinstimmung (innerhalb einer gegebenen
Toleranz ΔD) zwischen D und I in der Vergleichseinrichtung MC
gefunden wird, wird ein Übereinstimmungssignal M ausgegeben.
Das Vergleichsergebnis C zeigt an, ob der Wert D größer oder
kleiner als der Wert I ist. Eine Ausleseeinrichtung R (die
nicht mit Einzelheiten dargestellt ist) liest einen Datenwert
von einer gegenwärtigen Suchadresse A, B aus, die von den
zwei Registern RA, RB eingegeben wird, die während der
Durchquerung des Baums die Spalten- und Zeilen-
Zwischenadressen halten.
Die Zugriffseinrichtung umfaßt ferner eine
Bestimmungseinrichtung SEQ, SMB, SMA einschließlich der
Register RB, RA zum Bestimmen einer vollständigen
Suchadresse, die als nächstes nach dem Datenwert durchsucht
werden soll, auf Grundlage des Vergleichsergebnisses C und
der gegenwärtigen Suchadresse A, B.
Die Bestimmungseinrichtung umfaßt erste und zweite Register
und eine erste und zweite Brechungsschaltung SMB, SMA zum
Berechnen der nächsten Spalten- und Zeilen-Adressen A', B',
die durchsucht werden sollen, in Abhängigkeit von dem
Vergleichsergebnis C, der gegenwärtigen Adresse B, A und
einem Steuersignal S, das von einer Zustandsmaschine SEQ
ausgegeben wird.
Die Zustandsmaschine SEQ bestimmt den Suchzustand
(tatsächlich überwacht sie k und führt somit eigentlich die
Schritte S6, S8 in Fig. 2 aus) während des Suchvorgangs durch
die Binärbaum-Datenstruktur und bestimmt das Steuersignal S
auf Grundlage des Vergleichsergebnisses. Im wesentlichen
umfaßt die Zustandsmaschine SEQ einen Zähler und eine
Zustands-Bestimmungseinrichtung STDM, um ein Steuersignal S
auf Grundlage des internen Zustands STATEt zu erzeugen. Im
wesentlichen entspricht der interne Zustand der
Zustandsmaschine der gegenwärtigen Ebenennummer k, die immer
dann aktualisiert wird, wenn ein neues Vergleichsergebnis C
(was anzeigt, ob D ≦ I oder D < I ist), von der
Vergleichseinrichtung MC ausgegeben wird. Das heißt, der
Zustand ist für den Wurzelknoten des Baums 0, 1 bis K-1 für
nicht-Endknoten (ausser dem Wurzelknoten) und K für
Endknoten. In ähnlicher Weise ist das Steuersignal S gleich 0
für den Wurzelknoten, 1 für nicht-Endknoten (Unter-Knoten)
und 2 für Endknoten. Beginnend von dem Wurzelknoten (des
vollständigen Baums) mit einem Zustand 0 (für irgendeinen
anderen Unterbaum-Wurzelknoten ist er 1) wird die
Zustandsmaschine SEQ gemäß der Unterteilung des Unterbaums
fortschreiten, wenn sie den Baum von oben nach unten
durchquert. Das Signal S wird den Typ einer
Adressenberechnung in SMB und SMA gemäß der Abbildung wählen.
Insbesondere führen die einzelnen Teile der
Zugriffseinrichtung die folgenden Funktionen aus. Die erste
Berechnungsschaltung SMB führt die folgende Funktion
(angegeben in einer funktionellen Notation) aus, wobei K die
Anzahl von Ebenen in einem Unterbaum ist:
B' = 0, wenn S = 0;
B' = B, wenn S = 1;
B' = 2K.B + 2.A + C-2K, wenn S = 2 (6);
B' = B, wenn S = 1;
B' = 2K.B + 2.A + C-2K, wenn S = 2 (6);
wobei C (0 für D < I und 1 für D < I) das Vergleichsergebnis
bezeichnet, B und B' die gegenwärtige und die nächste
Zeilenadresse bezeichnen, S das Steuersignal bezeichnet, K
die vorgegebene Anzahl von Ebenen in einem Unterbaum
bezeichnet und A die gegenwärtige Spaltenadresse bezeichnet.
Die zweite Berechnungsschaltung SMA führt die folgenden
Funktionen aus (angegeben in einer funktionellen Notation):
A' = 1, wenn S = 0;
A' = 2.A + C, wenn S = 1;
A' = 1, wenn S = 2 (7),
A' = 2.A + C, wenn S = 1;
A' = 1, wenn S = 2 (7),
wobei C das Vergleichsergebnis bezeichnet und A und A' die
gegenwärtige und nächste Spaltenadresse bezeichnen und S das
Steuersignal bezeichnet.
Die Zustandsmaschine SEQ berechnet das Steuersignal auf
Grundlage der folgenden Gleichungen (8) und (9):
S = 0, wenn STATEt = 0;
S = 2, wenn STATEt = K;
S = 1, wenn 0 < STATEt < K (8),
S = 2, wenn STATEt = K;
S = 1, wenn 0 < STATEt < K (8),
wobei eine Zustandsbestimmungseinrichtung STDM der
Zustandsmaschine SEQ einen internen Zustand STATEt (d. h. den
Wert k in Fig. 2) der Zustandsmaschine SEQ gemäß der
folgenden Gleichung (9) berechnet:
STATEt = 0, wenn t = 0;
STATEt+1 = 2, wenn STATEt = 0;
STATEt+1 = 1, wenn STATEt = K;
STATEt+1 = STATEt + 1, wenn 0 < STATEt < K (9)
STATEt+1 = 2, wenn STATEt = 0;
STATEt+1 = 1, wenn STATEt = K;
STATEt+1 = STATEt + 1, wenn 0 < STATEt < K (9)
wobei STATEt und STATEt+1 den Zustand zu den Zeiten t und t+1
bezeichnet und t die Anzahl von Vergleichen bezeichnet, die
von dem Beginn während der Durchquerung des vollständigen
Baums gezählt werden (d. h. t ist eine Notation der Zeit oder
der Zyklen seit dem Start der Suche in Einheiten von
Vergleichsschritten), wobei t von 0 zu der Anzahl von Ebenen
in einem vollständigen Baum geht, was im Prinzip eine
beliebig hohe Zahl sein kann, aber auf Vielfache von K
beschränkt ist, und wobei STATEt = 0 den Zustand bezeichnet,
wenn der erste Vergleich an einer Speicherstelle entsprechend
dem Wurzelknoten RN der Binärbaum-Datenstruktur ausgeführt
wird.
Wie voranstehend erläutert verwenden das Verfahren und die
Zugriffseinrichtung gemäß der Erfindung nur eine minimale
Anzahl von Schritten, bevor eine Änderung in einem Unterbaum
verursacht wird. Als Folge der Abbildung ändert sich nur die
Spaltenadresse während einer Durchquerung innerhalb des
Unterbaums. Wenn dynamische Direktzugriffsspeicher verwendet
werden müssen, aufgrund der Menge der Daten, kann die
Erfindung eine schnelle Suchmaschine nach einem Datenwert
bereitstellen, der gemäß einer Binärbaum-Datenstruktur
sortiert ist. Die Zeitreduktion beträgt eine Größenordnung.
Somit kann die Erfindung in sämtlichen technischen Gebieten
verwendet werden, in denen die Zeit zum Lokalisieren eines
Datenwerts in einem großen Speicher kritisch ist.
Eine andere Anwendung der Erfindung ist die Optimierung der
Suchgeschwindigkeit für Prozessoren mit Cache-Speichern. Ein
Cache wird aus einer Anzahl von Cache-Zeilen gebildet, die
jeweils eine Anzahl von aufeinanderfolgenden (adressierten)
Daten erhalten, die gleichzeitig aus einem Hauptdatenspeicher
geholt werden. D.h. der Prozessor gibt ein Befehlsformat,
bestehend aus einem ersten Abschnitt (LSB-Bits), einem
zweiten Abschnitt (mittleren Bits) und einem dritten
Abschnitt (MSB-Bits) aus. Der erste und der zweite Abschnitt
werden zum Adressieren einer Speicherposition in der Cache-
Zeile verwendet und dann wird der dritte Abschnitt (die MSB-Bits)
mit den Bits verglichen, die an der adressierten
Speicherstelle gespeichert sind. Wenn sie übereinstimmen wird
der Datenwert, der dieser Speicherposition zugeordnet ist,
ausgelesen und wenn sie nicht übereinstimmen, wird der
Datenwert aus dem Hauptdatenspeicher geholt.
Unter der Annahme, daß ein erster Datenwert in einer Cache-
Zeile gelesen worden ist, so werden weitere Lese-Vorgänge auf
Daten in der gleichen Cache-Zeile (d. h. auf Daten, die
unmittelbar sequentiell in dem Adressraum folgen), im
Vergleich mit dem ersten Lesevorgang viel weniger Zeit zur
Ausführung benötigen. Die Differenz ist ein Faktor zwischen
10 und 100 in Abhängigkeit von dem Prozessor- und Cache-Typ.
Die vorliegende Erfindung kann somit verwendet werden, indem
eine Cache-Zeile als eine Spalte angesehen wird und somit die
interne Adresse der Cache-Zeile als die Spaltenadresse A
angesehen wird, wohingegen der Rest der Adresse als die
Zeilenadresse B angesehen wird.
Wenn beispielsweise ein erster Datenwert in der Cache-Zeile
gefunden und ausgelesen worden ist, kann ein weiterer
Datenwert (der sequentiell in dem Adressraum angeordnet ist)
in dieser Cache-Zeile sehr schnell gefunden werden, da der
Suchalgorithmus schnell den Datenwert lokalisieren kann,
indem die schnelle Suche von der gegenwärtig ausgelesenen
Speicherstelle (Baumknoten) zu dem Knoten ausgeführt wird, an
dem sich der Datenwert befindet, indem die Suche durch die
Unterbäume in der Cache-Zeile ausgeführt wird, wenn der
Datenwert darin gemäß der voranstehend erläuterten Adressen-
Abbildung angeordnet worden ist.
Es sei darauf hingewiesen, daß in der obigen Beschreibung die
Zeile durch die Spalte ersetzt werden kann, da es von der
Organisation des Speichers abhängen wird, welche
Speichereinrichtung mit Zeile bzw. Spalte bezeichnet ist.
Ferner sei darauf hingewiesen, daß es nicht erforderlich ist,
den Speicher nach einer exakten Übereinstimmung zu
durchsuchen. Eine andere Möglichkeit besteht darin, einen
Eintrag mit einem Datenwert zu finden, der der höchste Wert
ist, der niedriger oder gleich zu dem zu suchenden Datenwert
I ist. Das heißt, tatsächlich könnte ein Intervall durchsucht
werden, das den zu suchenden Datenwert I enthält.
Wie voranstehend erläutert, kann gemäß der Erfindung eine
schnelle Suche durch den Speicher ohne Zeiger erzielt werden,
wobei die vollständige Speicheradresse, die aus einem
Zeilenteil und einem Spaltenteil besteht, jeweils aus dem
vorangehenden Vergleichsergebnis und aus der vorangehenden
Speicheradresse bestimmt werden kann.
Claims (23)
1. Verfahren zum Bestimmen der Speicheradresse (B(X), A(X))
eines vorgegebenen Datenwerts (I) in einer
Speichereinrichtung (DRAM), in der Datenwerte (D) an
vorgegebenen Speicheradressen (B(X), A(X)) gemäß einer
Binärbaum-Datenstruktur von Knoten (X), Zweigen,
Unterbäumen und Blättern gespeichert sind, umfassend die
folgenden Schritte:
- a) Auslesen eines Datenwerts (D) an einer gegenwärtigen Suchadresse (B(X), A(X)) aus der Speichereinrichtung;
- b) Vergleichen des ausgelesenen Datenwerts (D) mit dem zu suchenden Datenwert (I) um zu bestimmen, ob der ausgelesene Datenwert (D) größer oder kleiner als der zu suchende Datenwert (I) ist; und
- c) Bestimmen einer vollständigen nächsten Suchadresse (B', A'), die nach dem Datenwert durchsucht werden soll, auf Grundlage des Vergleichsergebnisses (C) und der gegenwärtigen Adresse (B(X), A(X)); wobei
- d) die Schritte a) - c) rekursiv ausgeführt werden, bis der ausgelesene Datenwert (D) mit dem zu suchenden Datenwert (I) innerhalb einer vorgegebenen Toleranz (ΔD) übereinstimmt.
2. Verfahren nach Anspruch 1,
dadurch gekennzeichnet, daß
die Datenwerte in einer Binärbaum-Datenstruktur mit
einer vorgegebenen Anzahl K von Ebenen in jedem
Unterbaum gespeichert werden, wobei in dem Schritt c)
die nächste Adresse auf Grundlage des
Vergleichsergebnisses (C), der gegenwärtigen Suchadresse
und auch der vorgegebenen Anzahl von Ebenen (K) in jedem
Unterbaum bestimmt wird.
3. Verfahren nach Anspruch 1,
dadurch gekennzeichnet, daß
die Datenwerte (D) in einem Bereich eines niedrigsten
Datenwerts und eines höchsten Datenwerts sind, wobei ein
Mittendatenwert, der dem Mittenwert des Bereichs
entspricht, an einer vorgegebenen Wurzeladresse (B(0),
A(0) = <0,1<) gespeichert ist, wobei, wenn der Schritt
a) zum erstenmal ausgeführt wird, die Wurzeladresse als
die gegenwärtige Adresse verwendet wird.
4. Verfahren nach Anspruch 1,
dadurch gekennzeichnet, daß
die Datenwerte in der Speichereinrichtung in einer
Matrixanordnung von Zeilen und Spalten gespeichert
werden, wobei jedem Datenwert (D) eine Spaltenadresse
(A) und eine Zeilenadresse (B) zugeordnet wird.
5. Verfahren nach Anspruch 1 und 4,
dadurch gekennzeichnet, daß
wenn das Vergleichsergebnis (C) im Schritt b) anzeigt,
daß der ausgelesene Datenwert größer als der zu suchende
Datenwert (I) ist ("linker Zweig"), die Adresse im
Schritt c) durch die folgende Gleichung (1) berechnet
wird:
B(L(X)) = B(X)
A(L(X)) = 2.A(X) + 0 (1)
wobei X den gegenwärtigen Knoten bezeichnet, der von der gegenwärtigen Adresse (B(X), A(X)) definiert ist, A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, L(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert wird, der kleiner als der an dem gegenwärtigen Endknoten X gespeicherte Datenwert ist, und A(L(X)) und B(L(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens L(X) bezeichnen.
B(L(X)) = B(X)
A(L(X)) = 2.A(X) + 0 (1)
wobei X den gegenwärtigen Knoten bezeichnet, der von der gegenwärtigen Adresse (B(X), A(X)) definiert ist, A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, L(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert wird, der kleiner als der an dem gegenwärtigen Endknoten X gespeicherte Datenwert ist, und A(L(X)) und B(L(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens L(X) bezeichnen.
6. Verfahren nach Anspruch 1 und 4,
dadurch gekennzeichnet, daß
wenn das Vergleichsergebnis im Schritt b) anzeigt, daß
der ausgelesene Datenwert kleiner als der Datenwert (I)
ist, der gesucht werden soll ("rechter Zweig"), die
nächste Adresse im Schritt c) mit der folgenden
Gleichung (2) berechnet wird:
B(R(X)) = B(X)
A(R(X)) = 2.A(X) + 1 (2)
wobei X den gegenwärtigen Knoten definiert, der von der gegenwärtigen Adresse (B(X), A(X)) definiert ist, A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, R(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert ist, der größer als der an dem gegenwärtigen Knoten X gespeicherte Datenwert ist und A(R(X)) und B(R(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens (R(X) bezeichnen.
B(R(X)) = B(X)
A(R(X)) = 2.A(X) + 1 (2)
wobei X den gegenwärtigen Knoten definiert, der von der gegenwärtigen Adresse (B(X), A(X)) definiert ist, A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, R(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert ist, der größer als der an dem gegenwärtigen Knoten X gespeicherte Datenwert ist und A(R(X)) und B(R(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens (R(X) bezeichnen.
7. Verfahren nach Anspruch 1, 2 und 4,
dadurch gekennzeichnet, daß
wenn das Vergleichsergebnis im Schritt b) anzeigt, daß
der ausgelesene Datenwert größer als der Datenwert (I)
ist, der gesucht werden soll ("Endpunkt links"), die
nächste Adresse im Schritt c) von der folgenden
Gleichung (3) berechnet wird:
B(L(X)) = 2K.B(X) + 2.A(X) + 0 - 2K
A(L(X)) = 1 (3)
wobei X den gegenwärtigen Knoten definiert, der von der gegenwärtigen Adresse (B(X), A(X)) definiert ist, A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, L(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert ist, der kleiner als der an dem gegenwärtigen Knoten X gespeicherte Datenwert ist und A(L(X)) und B(L(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens L(X) bezeichnen und 2K die Anzahl von Spalten in der Speichereinrichtung ist.
B(L(X)) = 2K.B(X) + 2.A(X) + 0 - 2K
A(L(X)) = 1 (3)
wobei X den gegenwärtigen Knoten definiert, der von der gegenwärtigen Adresse (B(X), A(X)) definiert ist, A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, L(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert ist, der kleiner als der an dem gegenwärtigen Knoten X gespeicherte Datenwert ist und A(L(X)) und B(L(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens L(X) bezeichnen und 2K die Anzahl von Spalten in der Speichereinrichtung ist.
8. Verfahren nach Anspruch 1, 2 und 4,
dadurch gekennzeichnet, daß
wenn das Vergleichsergebnis im Schritt b) anzeigt, daß
der ausgelesene Datenwert kleiner als der Datenwert (I)
ist, der gesucht werden soll ("rechter Endpunkt"), die
nächste Adresse im Schritt c) mit der folgenden
Gleichung (4) berechnet wird:
B(R(X)) = 2K.B(X) + 2.A(X) + 1 - 2K
A(R(X)) = 1 (4)
wobei X den gegenwärtigen Knoten bezeichnet, der von der gegenwärtigen Adresse (B(X), A(X)), A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, R(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert ist, der größer als der an dem gegenwärtigen Knoten X gespeicherte Datenwert ist, und A(R(X)) und B(R(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens R(X) bezeichnen und 2K die Anzahl von Spalten in der Speichereinrichtung ist.
B(R(X)) = 2K.B(X) + 2.A(X) + 1 - 2K
A(R(X)) = 1 (4)
wobei X den gegenwärtigen Knoten bezeichnet, der von der gegenwärtigen Adresse (B(X), A(X)), A(X) und B(X) die Spaltenadresse und die Zeilenadresse des gegenwärtigen Knotens X bezeichnen, R(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert ist, der größer als der an dem gegenwärtigen Knoten X gespeicherte Datenwert ist, und A(R(X)) und B(R(X)) die Spaltenadresse und die Zeilenadresse des nächsten Knotens R(X) bezeichnen und 2K die Anzahl von Spalten in der Speichereinrichtung ist.
9. Verfahren nach einem der Ansprüche 2 und 7 oder 2 und 8,
dadurch gekennzeichnet, daß
die nächste Adresse gemäß der Gleichung (3) oder (4)
jeweils berechnet wird, wenn die Anzahl von Vergleichen,
die im Schritt b) durchgeführt werden, einem Vielfachen
der Anzahl von Ebenen in einem Unterbaum (K) gleicht.
10. Verfahren nach einem der Ansprüche 2 und 5 oder 2 und 6,
dadurch gekennzeichnet, daß
die nächste Adresse gemäß der Gleichung (1) oder (2)
jeweils berechnet wird, wenn die Anzahl von Vergleichen,
die im Schritt b) ausgeführt werden, nicht der Anzahl
von Ebenen in einem Unterbaum (K) gleicht.
11. Verfahren nach Anspruch 1,
dadurch gekennzeichnet, daß
nach dem Schritt d) Information, die im Zusammenhang mit
dem übereinstimmenden Datenwert gespeichert ist, aus der
Speicherstelle mit der gegenwärtigen Adresse ausgelesen
wird.
12. Verfahren nach Anspruch 1,
dadurch gekennzeichnet, daß
die Speichereinrichtung ein DRAM oder ein Cache-Speicher
ist.
13. Zugriffseinrichtung für eine Speichereinrichtung zum
Bestimmen der Speicheradresse (B(X), A(X)) eines
vorgegebenen Datenwerts (D) in einer Speichereinrichtung
(DRAM), wobei die Datenwerte (D) an vorgegebenen
Speicheradressen (A(X), B(X)) gemäß einer Binärbaum-
Datenstruktur von Knoten, Zweigen, Unterbäumen und
Blättern gespeichert sind, umfassend:
- a) eine Ausleseeinrichtung (R) zum Auslesen eines Datenwerts an einer vorgegebenen gegenwärtigen Suchadresse (B(X), A(X)) der Speichereinrichtung;
- b) eine Vergleichseinrichtung (MC) zum Vergleichen des ausgelesenen Datenwerts (D) mit dem zu suchenden Datenwert (I), um zu bestimmen, ob der ausgelesene Datenwert (D) größer oder kleiner als der zu suchende Datenwert (I) ist; und
- c) eine Bestimmungseinrichtung (SEQ, SMB, SMA, RB, RA) zum Bestimmen einer vollständigen nächsten Suchadresse (A, B), die nach dem Datenwert durchsucht werden soll, auf Grundlage des Vergleichsergebnisses (C) und der gegenwärtigen Suchadresse (B(X), A(X)); wobei
- d) die Ausleseeinrichtung, die Vergleichseinrichtung und die Bestimmungseinrichtung das Auslesen, das Vergleichen und das Bestimmen rekursiv ausführen, bis der ausgelesene Datenwert (D) mit dem zu suchenden Datenwert (I) innerhalb einer vorgegebenen Toleranz übereinstimmt (M).
14. Zugriffseinrichtung nach Anspruch 13,
dadurch gekennzeichnet, daß
die Datenwerte in der Speichereinrichtung (DRAM) in
einer Matrixanordnung von Zeilen und Spalten gespeichert
sind, wobei jedem Datenwert D eine Spaltenadresse (A)
und eine Zeilenadresse (B) zugeordnet ist.
15. Zugriffseinrichtung nach Anspruch 14,
dadurch gekennzeichnet, daß
die Bestimmungseinrichtung umfaßt:
- - ein erstes und ein zweites Register (RB; RA) zum Halten einer nächsten Zeilen- und Spaltenadresse (B', A');
- - eine erste und eine zweite Berechnungsschaltung (SMB, SMA) zum Berechnen der nächsten Spalten- und Zeilenadresse (B', A'), die durchsucht werden sollen, in Abhängigkeit von dem Vergleichsergebnis (C), der gegenwärtigen Adresse (B, A) und einem Steuersignal (S); und
- - eine Zustandsmaschine (SEQ) zum Bestimmen eines Suchzustands (STATEt) während des Durchsuchens der Binärbaumdatenstruktur und zum Bestimmen des Steuersignals auf Grundlage des Vergleichsergebnisses (C)
16. Zuriffseinheit nach Anspruch 14,
dadurch gekennzeichnet, daß
die Datenwerte in der Speichereinrichtung in einer
Binärbaum-Datenstruktur mit einer vorgegebenen Anzahl
von Ebenen K in jedem Unterbaum gespeichert sind, wobei
die Zustandsmaschine (SEQ) einen Zähler (CNT) umfaßt,
der die Anzahl von Vergleichen (C) zählt, die von der
Vergleichseinrichtung (MC) ausgeführt werden.
17. Zugriffseinrichtung nach Anspruch 15,
dadurch gekennzeichnet, daß
das Vergleichsergebnis (C) von der Vergleichseinrichtung
(MC) gemäß der folgenden Gleichung (5) berechnet wird:
C = 0, falls 1 < D;
C = 1, falls 1 < D (5);
wobei C das Vergleichsergebnis bezeichnet, I den zu suchenden Datenwert bezeichnet und D den ausgelesenen Datenwert bezeichnet.
C = 0, falls 1 < D;
C = 1, falls 1 < D (5);
wobei C das Vergleichsergebnis bezeichnet, I den zu suchenden Datenwert bezeichnet und D den ausgelesenen Datenwert bezeichnet.
18. Zugriffseinrichtung nach Anspruch 17,
dadurch gekennzeichnet, daß
die erste Berechnungsschaltung (SMB) die nächste
Spaltenadresse (B') gemäß der folgenden Gleichung (6)
berechnet:
B' = 0, wenn S = 0;
B' = B, wenn S = 1;
B' = 2K.B + 2.A + C - 2K, wenn S = 2 (6);
wobei C das Vergleichsergebnis bezeichnet, B und B' die gegenwärtige und die nächste Zeilenadresse bezeichnet, S das Steuersignal bezeichnet, K die vorgegebene Anzahl von Ebenen in einem Unterbaum (Bits in der Spaltenadresse) bezeichnet, und A die gegenwärtige Spaltenadresse bezeichnet.
B' = 0, wenn S = 0;
B' = B, wenn S = 1;
B' = 2K.B + 2.A + C - 2K, wenn S = 2 (6);
wobei C das Vergleichsergebnis bezeichnet, B und B' die gegenwärtige und die nächste Zeilenadresse bezeichnet, S das Steuersignal bezeichnet, K die vorgegebene Anzahl von Ebenen in einem Unterbaum (Bits in der Spaltenadresse) bezeichnet, und A die gegenwärtige Spaltenadresse bezeichnet.
19. Zugriffseinrichtung nach Anspruch 17,
dadurch gekennzeichnet, daß
die zweite Berechnungsschaltung (SMA) die nächste
Spaltenadresse (A') gemäß der folgenden Gleichung (7)
berechnet:
A' = 1, wenn S = 0;
A' = 2.A + C, wenn S = 1;
A' = 1, wenn S = 2 (7),
wobei C das Vergleichsergebnis bezeichnet, A und A' die gegenwärtige und die nächste Spaltenadresse bezeichnen und S das Steuersignal bezeichnet.
A' = 1, wenn S = 0;
A' = 2.A + C, wenn S = 1;
A' = 1, wenn S = 2 (7),
wobei C das Vergleichsergebnis bezeichnet, A und A' die gegenwärtige und die nächste Spaltenadresse bezeichnen und S das Steuersignal bezeichnet.
20. Zugriffseinrichtung nach Anspruch 15,
dadurch gekennzeichnet, daß
die Zustandsmaschine (SEQ) das Steuersignal (S) auf der
Grundlage der folgenden Gleichung (8) berechnet:
S = 0, wenn STATEt = 0;
S = 2, wenn STATEt = K;
S = 1, wenn 0 < STATEt < K (8);
wobei eine Zustandsbestimmungseinrichtung (STDM) der Zustandsmaschine (SEQ) einen internen Zustand STATEt der Zustandsmaschine (SEQ) gemäß der folgenden Gleichung (9) berechnet:
STATEt = 0, wenn t = 0;
STATEt+1 = 2, wenn STATEt = 0;
STATEt+1 = 1, wenn STATEt = K;
STATEt+1 = STATEt + 1, wenn 0 < STATEt < K (9)
wobei STATEt und STATEt+1 den Zustand zu Zeiten t und t+1 bezeichnet und t die Anzahl von Vergleichen bezeichnet, die von dem Zähler (CNT) gezählt werden, wobei 0 < t < K.N gilt und N die Anzahl von Unterbaum- Ebenen des vollständigen Binärbaums darstellt und wobei STATEt = 0 den Zustand bezeichnet, wenn der erste Vergleich an einer Speicherstelle entsprechend dem Wurzelknoten der Binärbaum-Datenstruktur ausgeführt wird.
S = 0, wenn STATEt = 0;
S = 2, wenn STATEt = K;
S = 1, wenn 0 < STATEt < K (8);
wobei eine Zustandsbestimmungseinrichtung (STDM) der Zustandsmaschine (SEQ) einen internen Zustand STATEt der Zustandsmaschine (SEQ) gemäß der folgenden Gleichung (9) berechnet:
STATEt = 0, wenn t = 0;
STATEt+1 = 2, wenn STATEt = 0;
STATEt+1 = 1, wenn STATEt = K;
STATEt+1 = STATEt + 1, wenn 0 < STATEt < K (9)
wobei STATEt und STATEt+1 den Zustand zu Zeiten t und t+1 bezeichnet und t die Anzahl von Vergleichen bezeichnet, die von dem Zähler (CNT) gezählt werden, wobei 0 < t < K.N gilt und N die Anzahl von Unterbaum- Ebenen des vollständigen Binärbaums darstellt und wobei STATEt = 0 den Zustand bezeichnet, wenn der erste Vergleich an einer Speicherstelle entsprechend dem Wurzelknoten der Binärbaum-Datenstruktur ausgeführt wird.
21. Zugriffseinrichtung nach Anspruch 13,
dadurch gekennzeichnet, daß
die Ausleseeinrichtung (R) Information ausliest, die in
der Speichereinrichtung (DRAM) im Zusammenhang mit dem
übereinstimmenden Datenwert gespeichert ist.
22. Zugriffseinrichtung nach Anspruch 13,
dadurch gekennzeichnet, daß
die Speichereinrichtung ein DRAM oder ein Cache-Speicher
ist.
23. Zugriffseinrichtung nach Anspruch 22,
dadurch gekennzeichnet, daß
die Speichereinrichtung einen Zeilenadressenteil und
einen Spaltenadressenteil aufweist und der
Spaltenadressenteil zum Wählen eines Eintrags der
sequentiellen Dateneinträge innerhalb einer spezifischen
Cache-Zeile verwendet wird und der Zeilenadressenteil
zum Wählen einer spezifischen Cache-Zeile verwendet
wird.
Priority Applications (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19810843A DE19810843B4 (de) | 1998-03-12 | 1998-03-12 | Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung |
KR1020007010078A KR20010041803A (ko) | 1998-03-12 | 1999-03-11 | 메모리 장치에서 데이터값의 기억 어드레스를 결정하는방법 및 액세스 장치 |
EP99907624A EP1062597B1 (de) | 1998-03-12 | 1999-03-11 | Methode zur bestimmung der speicheradresse eines datenwertes in einer speichereinheit und entsprechendes zugriffsverfahren |
BR9908733-2A BR9908733A (pt) | 1998-03-12 | 1999-03-11 | Processo para determinar o endereço de armazenamento de um valor de dados predeterminado em um dispositivo de memória, e, meio de acesso para um dispositivo de memória |
US09/265,952 US6415279B1 (en) | 1998-03-12 | 1999-03-11 | Method and access means for determining the storage address of a data value in a memory device |
CA002323098A CA2323098C (en) | 1998-03-12 | 1999-03-11 | Method and access means for determining the storage address of a data value in a memory device |
CN998039187A CN1292903A (zh) | 1998-03-12 | 1999-03-11 | 用于确定数据值在存储设备中的存储地址的方法和访问装置 |
JP2000536013A JP4807686B2 (ja) | 1998-03-12 | 1999-03-11 | メモリ装置内のデータ値の記憶アドレスを決定するための方法並びにアクセス装置 |
AU27292/99A AU2729299A (en) | 1998-03-12 | 1999-03-11 | Method and access means for determining the storage address of a data value in amemory device |
PCT/EP1999/001588 WO1999046696A1 (en) | 1998-03-12 | 1999-03-11 | Method and access means for determining the storage address of a data value in a memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19810843A DE19810843B4 (de) | 1998-03-12 | 1998-03-12 | Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19810843A1 true DE19810843A1 (de) | 1999-09-30 |
DE19810843B4 DE19810843B4 (de) | 2004-11-25 |
Family
ID=7860713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19810843A Expired - Fee Related DE19810843B4 (de) | 1998-03-12 | 1998-03-12 | Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung |
Country Status (10)
Country | Link |
---|---|
US (1) | US6415279B1 (de) |
EP (1) | EP1062597B1 (de) |
JP (1) | JP4807686B2 (de) |
KR (1) | KR20010041803A (de) |
CN (1) | CN1292903A (de) |
AU (1) | AU2729299A (de) |
BR (1) | BR9908733A (de) |
CA (1) | CA2323098C (de) |
DE (1) | DE19810843B4 (de) |
WO (1) | WO1999046696A1 (de) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6444072B1 (en) * | 1999-08-11 | 2002-09-03 | Southpac Trust International | Process for producing holographic material |
AU2001243459A1 (en) * | 2000-03-09 | 2001-09-17 | The Web Access, Inc. | Method and apparatus for performing a research task by interchangeably utilizinga multitude of search methodologies |
US6567815B1 (en) * | 2000-08-01 | 2003-05-20 | International Business Machines Corporation | Technique of clustering and compaction of binary trees |
GB0100331D0 (en) * | 2001-01-06 | 2001-02-14 | Secr Defence | Method of querying a structure of compressed data |
US6757780B2 (en) * | 2002-01-09 | 2004-06-29 | Hywire Ltd. | Multiple module content addressable memories |
KR100484375B1 (ko) * | 2002-02-05 | 2005-04-20 | 이영섭 | 데이터마이닝의 분류 의사 결정 나무에서 극단값을 가지는 관심 노드 분류를 통한 자료의 통계적 분류 방법 |
US6941314B2 (en) * | 2002-04-15 | 2005-09-06 | Lsi Logic Corporation | User selectable editing protocol for fast flexible search engine |
US6901476B2 (en) * | 2002-05-06 | 2005-05-31 | Hywire Ltd. | Variable key type search engine and method therefor |
US8335779B2 (en) | 2002-08-16 | 2012-12-18 | Gamroe Applications, Llc | Method and apparatus for gathering, categorizing and parameterizing data |
US7017005B2 (en) * | 2002-08-28 | 2006-03-21 | Hywire Ltd. | Implementation of a content addressable memory using a RAM-cell structure |
US7653010B2 (en) * | 2003-06-03 | 2010-01-26 | Casient Limited | System and method for wireless mesh networking |
US7627616B2 (en) * | 2004-08-30 | 2009-12-01 | Hywire Ltb. | Database storage and maintenance using row index ordering |
US9171100B2 (en) * | 2004-09-22 | 2015-10-27 | Primo M. Pettovello | MTree an XPath multi-axis structure threaded index |
EP1811383A1 (de) * | 2004-10-01 | 2007-07-25 | Turbo Data Laboratories, Inc. | Verfahren und programm zur erzeugung von arrangements |
JP4507991B2 (ja) * | 2005-06-09 | 2010-07-21 | ソニー株式会社 | 情報処理装置、情報処理方法、およびプログラム |
US20070174309A1 (en) * | 2006-01-18 | 2007-07-26 | Pettovello Primo M | Mtreeini: intermediate nodes and indexes |
WO2009152499A2 (en) * | 2008-06-13 | 2009-12-17 | Skribel, Inc. | Methods and systems for handling annotations and using calculation of addresses in tree-based structures |
US8631028B1 (en) | 2009-10-29 | 2014-01-14 | Primo M. Pettovello | XPath query processing improvements |
CN102741841A (zh) * | 2009-11-30 | 2012-10-17 | 新叶股份有限公司 | 比特序列检索装置、检索方法以及程序 |
JP5220057B2 (ja) * | 2010-05-27 | 2013-06-26 | 株式会社高速屋 | ビット列検索装置、検索方法及びプログラム |
JP5220047B2 (ja) * | 2009-11-30 | 2013-06-26 | 株式会社高速屋 | ビット列検索装置、検索方法及びプログラム |
US9280575B2 (en) * | 2012-07-20 | 2016-03-08 | Sap Se | Indexing hierarchical data |
CN103984636B (zh) * | 2013-02-08 | 2017-09-29 | 上海芯豪微电子有限公司 | 存储结构及信息存储、读取、寻址方法 |
KR101666307B1 (ko) | 2015-05-14 | 2016-10-13 | 영남대학교 산학협력단 | 메모리 장치 기반의 힙 정렬 방법 및 장치 |
CN108391427B (zh) | 2016-02-05 | 2021-07-02 | 惠普发展公司,有限责任合伙企业 | 打印头 |
US10977106B2 (en) * | 2018-02-09 | 2021-04-13 | Microsoft Technology Licensing, Llc | Tree-based anomaly detection |
CN113570176B (zh) * | 2020-04-28 | 2024-03-26 | 顺丰科技有限公司 | 货物装箱方案输出方法、装置、计算机设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996009580A1 (en) * | 1994-09-19 | 1996-03-28 | Amdahl Corporation | Computer with two-dimensional merge tournament sort using caching |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3611435A (en) | 1969-03-24 | 1971-10-05 | Itt | Satellite communication system |
US5204967A (en) | 1984-05-29 | 1993-04-20 | Armstrong Philip N | Sorting system using cascaded modules with levels of memory cells among which levels data are displaced along ordered path indicated by pointers |
GB8515482D0 (en) * | 1985-06-19 | 1985-07-24 | Int Computers Ltd | Search apparatus |
US5155837A (en) | 1989-03-02 | 1992-10-13 | Bell Communications Research, Inc. | Methods and apparatus for software retrofitting |
US5495610A (en) | 1989-11-30 | 1996-02-27 | Seer Technologies, Inc. | Software distribution system to build and distribute a software release |
US5442783A (en) | 1990-01-22 | 1995-08-15 | Motorola, Inc. | Method and apparatus for transferring data base information |
US5481721A (en) | 1991-07-17 | 1996-01-02 | Next Computer, Inc. | Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects |
US5410703A (en) | 1992-07-01 | 1995-04-25 | Telefonaktiebolaget L M Ericsson | System for changing software during computer operation |
US5418947A (en) * | 1992-12-23 | 1995-05-23 | At&T Corp. | Locating information in an unsorted database utilizing a B-tree |
US5734791A (en) * | 1992-12-31 | 1998-03-31 | Apple Computer, Inc. | Rapid tree-based method for vector quantization |
US5459606A (en) | 1993-05-10 | 1995-10-17 | At&T Ipm Corp. | In-service upgrade for a telecommunication system |
DE4316500C2 (de) | 1993-05-17 | 1995-03-16 | Siemens Ag | Verfahren zum Wechseln einer Anlagensoftware |
JPH09507109A (ja) | 1993-11-02 | 1997-07-15 | パラコム コーポレイション | コンピュータデータベースに関するトランザクションの処理を促進させるための装置 |
JP3177117B2 (ja) | 1994-05-11 | 2001-06-18 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 複数のノード内の制御コードを更新する方法および装置 |
DE4429969A1 (de) | 1994-08-24 | 1996-02-29 | Sel Alcatel Ag | Verfahren für einen Programmpaketeaustausch in einem Mehrrechnersystem und Rechner dafür |
DE4438697A1 (de) | 1994-10-29 | 1996-05-02 | Sel Alcatel Ag | Ladeverfahren für ein Mehrrechnersystem sowie Ladesteuereinrichtung und Programm-Modul dafür und Mehrrechnersystem und Vermittlungssystem damit |
DE19533961A1 (de) | 1995-09-13 | 1997-03-20 | Siemens Ag | Verfahren zum Laden von Software in Kommunikationssystemen mit nichtredundanten, dezentralen Einrichtungen |
US5991541A (en) | 1996-08-12 | 1999-11-23 | Adc Telecommunications, Inc. | Dynamically modifiable call processing methods and apparatus |
-
1998
- 1998-03-12 DE DE19810843A patent/DE19810843B4/de not_active Expired - Fee Related
-
1999
- 1999-03-11 CN CN998039187A patent/CN1292903A/zh active Pending
- 1999-03-11 KR KR1020007010078A patent/KR20010041803A/ko not_active Application Discontinuation
- 1999-03-11 EP EP99907624A patent/EP1062597B1/de not_active Expired - Lifetime
- 1999-03-11 BR BR9908733-2A patent/BR9908733A/pt not_active IP Right Cessation
- 1999-03-11 AU AU27292/99A patent/AU2729299A/en not_active Abandoned
- 1999-03-11 CA CA002323098A patent/CA2323098C/en not_active Expired - Lifetime
- 1999-03-11 JP JP2000536013A patent/JP4807686B2/ja not_active Expired - Lifetime
- 1999-03-11 WO PCT/EP1999/001588 patent/WO1999046696A1/en not_active Application Discontinuation
- 1999-03-11 US US09/265,952 patent/US6415279B1/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996009580A1 (en) * | 1994-09-19 | 1996-03-28 | Amdahl Corporation | Computer with two-dimensional merge tournament sort using caching |
Also Published As
Publication number | Publication date |
---|---|
KR20010041803A (ko) | 2001-05-25 |
EP1062597B1 (de) | 2002-06-05 |
DE19810843B4 (de) | 2004-11-25 |
WO1999046696A1 (en) | 1999-09-16 |
CN1292903A (zh) | 2001-04-25 |
JP2002507026A (ja) | 2002-03-05 |
JP4807686B2 (ja) | 2011-11-02 |
CA2323098C (en) | 2005-12-27 |
AU2729299A (en) | 1999-09-27 |
US6415279B1 (en) | 2002-07-02 |
CA2323098A1 (en) | 1999-09-16 |
EP1062597A1 (de) | 2000-12-27 |
BR9908733A (pt) | 2000-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19810843B4 (de) | Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung | |
DE69636761T2 (de) | Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum | |
DE602004010922T2 (de) | Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen | |
DE69333422T2 (de) | Auffindung von Zeichenketten in einer Datenbank von Zeichenketten | |
DE69831246T2 (de) | Verfahren zur einrichtung eines assoziativen speichers mit digitaler trie struktur | |
DE69912410T2 (de) | Schnelles zeichenkettensuchen und -indizieren | |
DE69926305T2 (de) | Rechnerlesbarer Speicher zum Speichern einer Datenbank und Indizes | |
DE2521436C3 (de) | Informationswiedergewinnungsanordnung | |
DE60118973T2 (de) | Verfahren zum abfragen einer struktur komprimierter daten | |
DE2310631C3 (de) | Speicherhierarchie für ein Datenverarbeitungssystem | |
DE10085387T5 (de) | Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung | |
DE69629540T2 (de) | Verfahren und Gerät zum Sortieren von Elementen | |
DE3736455A1 (de) | Hierarchisches ablagesystem | |
DE2221442A1 (de) | Assoziativspeicher | |
WO2006103177A1 (de) | Verfahren zum anordnen von objektdaten in elektronischen karten | |
DE2506671C3 (de) | Binärdaten-Handhabungsnetzwerk | |
DE19810784B4 (de) | Rechnersystem | |
EP0912952B1 (de) | Datenbanksystem und verfahren zum verwalten eines n-dimensionalen datenbestands | |
DE4342521C1 (de) | Verfahren und Anordnung zur Expansion komprimierter Daten | |
DE1499282A1 (de) | Anordnung zum Erzeugen von Permutationen | |
DE102004006102B4 (de) | Datenverarbeitungseinrichtung zur schnellen Suche von Datenworten | |
DE102005042513A1 (de) | Verfahren zum rechnergestützten Erzeugen einer Datenbasis für Verzeichnisverwaltungssysteme | |
DE60035884T2 (de) | Vergleichauflöseschaltung fur inhaltsadressierbaren speicher | |
DE10307831B4 (de) | Verfahren zum Zugriff auf Suchelemente in einer Zugriffsliste | |
EP1734469A2 (de) | Verfahren zur Auswahl von Datensätzen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |