DE19810843B4 - 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 Speichereinrichtung Download PDF

Info

Publication number
DE19810843B4
DE19810843B4 DE19810843A DE19810843A DE19810843B4 DE 19810843 B4 DE19810843 B4 DE 19810843B4 DE 19810843 A DE19810843 A DE 19810843A DE 19810843 A DE19810843 A DE 19810843A DE 19810843 B4 DE19810843 B4 DE 19810843B4
Authority
DE
Germany
Prior art keywords
data value
address
subtree
row
column address
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.)
Expired - Fee Related
Application number
DE19810843A
Other languages
English (en)
Other versions
DE19810843A1 (de
Inventor
Bengt Erik Ingemar Gard
Sten Edvard Johnsson
Lars-Örjan KLING
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to DE19810843A priority Critical patent/DE19810843B4/de
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Priority to CN998039187A priority patent/CN1292903A/zh
Priority to JP2000536013A priority patent/JP4807686B2/ja
Priority to EP99907624A priority patent/EP1062597B1/de
Priority to BR9908733-2A priority patent/BR9908733A/pt
Priority to US09/265,952 priority patent/US6415279B1/en
Priority to CA002323098A priority patent/CA2323098C/en
Priority to PCT/EP1999/001588 priority patent/WO1999046696A1/en
Priority to KR1020007010078A priority patent/KR20010041803A/ko
Priority to AU27292/99A priority patent/AU2729299A/en
Publication of DE19810843A1 publication Critical patent/DE19810843A1/de
Application granted granted Critical
Publication of DE19810843B4 publication Critical patent/DE19810843B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access 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

Verfahren zum Bestimmen der Zeilen/Spaltenadresse (B(X), A(X)) eines vorgegebenen Datenwerts (I) in einer Speichereinrichtung (DRAM), in deren Speicherstellen Datenwerte (D) gemäß einer Binärbaum-Datenstruktur von Knoten (X), Zweigen, Unterbäumen und Blättern mit einer vorgegebenen Anzahl K von Ebenen in jedem Unterbaum gespeichert sind, wobei
– die Knoten (X) und Blätter (LM) den Speicherstellen entsprechen;
– jeder Zweig eine Beziehung von einer Speicherstelle zu einer anderen Speicherstelle, in der ein nächstkleinerer bzw. nächstgrößerer Datenwert gespeichert ist, darstellt; und
– die Speicherstellen einer jeweiligen Zeile den Knoten eines Unterbaums entsprechen;
wobei die Datenwerte (D) in einem Bereich zwischen einem niedrigsten Datenwert und einem höchsten Datenwert liegen und ein Mittendatenwert, der dem Mittenwert des Bereichs entspricht, an einer vorgegebenen Wurzel-Zeilen/Spaltenadresse (B(0), A(0)) gespeichert ist, die einem Wurzelknoten der Binärbaumdatenstruktur entspricht; umfassend die folgenden Schritte:
a) Auslesen eines Datenwerts (D) an einer gegenwärtigen Zeilen/Spaltenadresse (B(X), A(X)) aus der Speichereinrichtung, wobei...

Description

  • Gebiet der Erfindung
  • 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.
  • Hintergrund der Erfindung
  • 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 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 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. Vikas O. und Rajaraman, V.: "Searching in a Dynamic Memory with Fast Sequentional Access", Communications of the ACU, Vol. 25, No. 7, 1 July 1982, Seiten 479-484 beschreibt ebenfalls die Verwendung eines derartigen Binärbaums bei der Suche nach Datenwerten in einem sogennanten Aho-Ullman Speicher.
  • Wie in 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) – Information 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 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; ISBNO-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 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-O-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) + 0wohingegen 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.
  • Darstellung der Erfindung
  • Wie voranstehend erwähnt wurde, verwenden einige herkömmliche 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 gemäß Anspruch 1.
  • Ferner wird diese Aufgabe gelöst durch eine Zugriffseinrichtung gemäß Anspruch 4.
  • 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.
  • Kurzbeschreibung der Zeichnungen
  • In den Zeichnungen zeigen:
  • 1a ein allgemeines Prinzip einer Binärbaumstruktur unter Verwendung von Unterbäumen gemäß der Erfindung;
  • 1b eine Speichereinrichtung, bei der jede Zeile auf einen Unterbaum von 1a abgebildet ist;
  • 1c die Abbildung von Knoten in einem Unterbaum auf die Speicherstellen entlang einer Zeile;
  • 2 ein Flußdiagramm, das das Suchverfahren gemäß der Erfindung darstellt;
  • 3a ein Beispiel von Datenwerten, die in einem Speicher gemäß einer Binärbaumstruktur gespeichert sind;
  • 3b den Binärbaum und die jeweilige Stelle von Knoten entsprechend dem Beispiel in 3a;
  • 4 eine Ausführungsform der Zugriffseinrichtung gemäß der Erfindung zum Zugreifen auf Datenwerte, die in einem DRAM-Speicher gespeichert sind;
  • 5 eine Speichereinrichtung, in der Datenwerte zufällig an spezifischen Adressenpositionen gemäß dem Stand der Technik gespeichert sind; und
  • 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.
  • Prinzip der Erfindung
  • 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 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.
  • Knoten-Abbildung gemäß der Erfindung
  • 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 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 "Tiefe" 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 1a somit K Ebenen, was insgesamt pro Unterbaum 2K – 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 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 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 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 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 1a gezeigt. Somit definiert 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 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 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 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 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 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äß 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 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 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 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 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.
  • Erste Ausführungsform (Suchstrategie)
  • 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.
  • 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. 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 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 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 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:
    Figure 00200001
  • 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:
    Figure 00200002
  • 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 1c ist deutlich, daß die Endknoten LN in dem Adressenraum der Speichereinrichtung in 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:
    Figure 00210001
  • Aus den Gleichungen (3), (4) kann ersehen werden, daß im Fall des Auftretens eines Endknotens die Spaltenadresse A – unabhä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 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 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 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 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.
  • Beispiel für K = 3
  • Die 3a, 3b zeigen den allgemeinen Algorithmus in der 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 2 zum erstenmal ausgeführt wird, immer die am weitesten links liegende Speicherstelle in dem Speicher in 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 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 3a wird gemäß 3b durchgeführt, wie allgemein unter Bezugnahme auf 1 erläutert wurde. In dem Beispiel in 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 werden. 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 3b3a 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 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. 3b zeigt die Datenwerte 56, 57, 82, ... an den jeweiligen Zwischenknoten und Endknoten, so wie dies unter Bezugnahme auf 1b diskutiert wurde.
  • Offensichtlich berechnet der Algorithmus in 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 1a und 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 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 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 3b angedeutet, entspricht dies tatsächlich dem Wurzelknoten des Unterbaums 2, der sich in der zweiten Zeile befindet. Wie sich aus 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 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 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 13 erläutert wurde, unter Bezugnahme auf 4 erläutert.
  • Zweite Ausführungsform (Hardware-Implementierung)
  • In 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 Berechungsschaltung 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 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:
    Figure 00310001
    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):
    Figure 00310002
    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):
    Figure 00320001
    wobei eine Zustandsbestimmungseinrichtung STDM der Zustandsmaschine SEQ einen internen Zustand STATEt (d.h. den Wert k in 2) der Zustandsmaschine SEQ gemäß der folgenden Gleichung (9) berechnet:
    Figure 00320002
    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.
  • Gewerbliche Anwendbarkeit
  • 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 (7)

  1. Verfahren zum Bestimmen der Zeilen/Spaltenadresse (B(X), A(X)) eines vorgegebenen Datenwerts (I) in einer Speichereinrichtung (DRAM), in deren Speicherstellen Datenwerte (D) gemäß einer Binärbaum-Datenstruktur von Knoten (X), Zweigen, Unterbäumen und Blättern mit einer vorgegebenen Anzahl K von Ebenen in jedem Unterbaum gespeichert sind, wobei – die Knoten (X) und Blätter (LM) den Speicherstellen entsprechen; – jeder Zweig eine Beziehung von einer Speicherstelle zu einer anderen Speicherstelle, in der ein nächstkleinerer bzw. nächstgrößerer Datenwert gespeichert ist, darstellt; und – die Speicherstellen einer jeweiligen Zeile den Knoten eines Unterbaums entsprechen; wobei die Datenwerte (D) in einem Bereich zwischen einem niedrigsten Datenwert und einem höchsten Datenwert liegen und ein Mittendatenwert, der dem Mittenwert des Bereichs entspricht, an einer vorgegebenen Wurzel-Zeilen/Spaltenadresse (B(0), A(0)) gespeichert ist, die einem Wurzelknoten der Binärbaumdatenstruktur entspricht; umfassend die folgenden Schritte: a) Auslesen eines Datenwerts (D) an einer gegenwärtigen Zeilen/Spaltenadresse (B(X), A(X)) aus der Speichereinrichtung, wobei dann, wenn der Schritt a) zum ersten Mal ausgeführt wird, die Wurzel-Zeilen/Spaltenadresse als die gegenwärtige Adresse verwendet wird; 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; c) Bestimmen einer vollständigen nächsten Zeilen/Spaltenadresse (B(L(X)); B(R(X)); A(L(X)), A(R(X))), die nach dem Datenwert durchsucht werden soll, auf Grundlage des Vergleichsergebnisses (C), der gegenwärtigen Zeilen/Spaltenadresse (B(X), A(X)), der vorgegebenen Anzahl von Ebenen K in jedem Unterbaum und der Anzahl von in dem Schritt b) durchgeführten Vergleichen; 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; wobei c1) wenn das Vergleichsergebnis (C) im Schritt b) anzeigt, daß der ausgelesene Datenwert größer ("linker Zweig") bzw. kleiner ("rechter Zweig") als der zu suchende Datenwert (I) ist und die Anzahl von Vergleichen, die im Schritt b) durchgeführt worden sind, nicht einem Vielfachen der Anzahl K von Ebenen in einem Unterbaum gleicht, die nächste Spalten/Zeilenadresse im Schritt c) durch die folgende Gleichung (1) bzw. Gleichung (2) berechnet wird:
    Figure 00370001
    wenn das Vergleichsergebnis im Schritt b) anzeigt, daß der ausgelesene Datenwert größer ("Endpunkt links") bzw. kleiner ("Endpunkt rechts") als der zu suchende Datenwert (I) ist und die Anzahl von Vergleichen, die im Schritt b) durchgeführt worden sind, einem Vielfachen der Anzahl K von Ebenen in einem Unterbaum gleicht, die nächste Spalten/Zeilenadresse im Schritt c) von der folgenden Gleichung (3) bzw. der Gleichung (4) berechnet wird:
    Figure 00380001
    wobei X den gegenwärtigen Knoten bezeichnet, der mit der gegenwärtigen Zeilen-Spaltenadresse (B(X), A(X)) definiert wird, B(X) und A(X) die Spalten/Zeilenadresse des gegenwärtigen Knotens X bezeichnen, L(X) bzw. R(X) den nächsten Knoten bezeichnet, an dem ein Datenwert gespeichert ist, der kleiner bzw. größer als der an dem gegenwärtigen Knoten X gespeicherte Datenwert ist, B(L(X)) und A(L(X)) bzw. B(R(X)) und A(R(X)) die Spalten/Zeilenadresse des nächsten Knotens bezeichnen, und 2K die Anzahl von Spalten in der Speichereinrichtung ist.
  2. 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.
  3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Speichereinrichtung ein DRAM oder eine Cache-Speicher ist.
  4. Zugriffseinrichtung für eine Speichereinrichtung zum Ausführen des Verfahrens nach Anspruch 1, umfassend a) eine Ausleseeinrichtung (R) zum Auslesen eines Datenwerts an der vorgegebenen gegenwärtigen Spalten/Zeilenadresse (B(X), A(X)) der Speichereinrichtung; b) eine Vergleichseinrichtung (MC) zum Vergleichen des ausgelesenen Datenwerts (D) mit dem zu suchenden Datenwert (I), um ein Vergleichsergebnis zu bestimmen, das anzeigt, 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 der vollständigen nächsten Zeilen/Spaltenadresse (A, B), die nach dem Datenwert durchsucht werden soll, wobei c1) die Bestimmungseinrichtung umfaßt: – ein erstes und ein zweites Register (RB; RA) zum Halten der nächsten Zeilen/Spaltenadresse (B', A'); – eine erste und eine zweite Berechnungsschaltung (SMB, SMA) zum Berechnen der nächsten Spalten/Zeilenadresse (B', A'), die durchsucht werden soll, 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), 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; b1) wobei das Vergleichsergebnis (C) von der Vergleichseinrichtung (MC) gemäß der folgenden Gleichung (5) berechnet wird:
    Figure 00400001
    wobei C das Vergleichsergebnis bezeichnet, I den zu suchenden Datenwert bezeichnet; c2) wobei die erste Berechnungsschaltung (SMB) die nächste Zeilenadresse (B') gemäß der folgenden Gleichung (6) berechnet:
    Figure 00400002
    wobei C das Vergleichsergebnis bezeichnet, B und B' die gegenwärtige und die nächste Zeilenadresse bezeichnet, S das Steuersignal bezeichnet, K die vorgebene Anzahl von Ebenen in einem Unterbaum (Bits in der Spaltenadresse) bezeichnet, und A die gegenwärtige Spaltenadresse bezeichnet; c3) wobei die zweite Berechnungsschaltung (SMA) die nächste Spaltenadresse (A') gemäß der folgenden Gleichung (7) berechnet:
    Figure 00410001
    wobei C das Vergleichsergebnis bezeichnet, A und A' die gegenwärtige und die nächste Spaltenadresse bezeichnen und S das Steuersignal bezeichnet; und c4) wobei die Zustandsmaschine (SEQ) das Steuersignal (S) auf der Grundlage der folgenden Gleichung (8) berechnet:
    Figure 00410002
    wobei eine Zustandsbestimmungseinrichtung (STDM) der Zustandsmaschine (SEQ) einen internen Zustand STATEt der Zustandsmaschine (SEQ) gemäß der folgenden Gleichung (9) berechnet:
    Figure 00410003
    wobei STATEt und STATEt+1 den Zustand zu den Zeiten t und t + 1 bezeichnet und die Anzahl von Vergleichen bezeichnet, die von dem Zähler (CNT) gezählt werden und wobei 0 < t < K·N gilt und N die Anzahl von Unterbaum-Ebenen des vollständigen Binärbaums darstellt, wobei STATEt = 0 den Zustand bezeichnet, wenn der erste Vergleich an der Speicherstelle entsprechend dem Wurzelknoten der Binärbaum-Datenstruktur ausgeführt wird.
  5. Zugriffseinrichtung nach Anspruch 4, dadurch gekennzeichnet, daß die Ausleseeinrichtung (R) Information ausliest, die in der Speichereinrichtung (DRAM) im Zusammenhang mit dem übereinstimmenden Datenwert gespeichert ist.
  6. Zugriffseinrichtung nach Anspruch 4, dadurch gekennzeichnet, daß die Speichereinrichtung ein DRAM oder ein Cache-Speicher ist.
  7. Zugriffseinrichtung nach Anspruch 6, 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.
DE19810843A 1998-03-12 1998-03-12 Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung Expired - Fee Related DE19810843B4 (de)

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 DE19810843A1 (de) 1999-09-30
DE19810843B4 true 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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
VICAS O et al: "Searching in a dynamic memory with fast sequential access" Communications of the as- sociation for Computing Machinery, vol.25, no.7, 1 July 1982, S.479-484
VICAS O et al: "Searching in a dynamic memory withfast sequential access" Communications of the as- sociation for Computing Machinery, vol.25, no.7, 1 July 1982, S.479-484 *

Also Published As

Publication number Publication date
KR20010041803A (ko) 2001-05-25
EP1062597B1 (de) 2002-06-05
WO1999046696A1 (en) 1999-09-16
CN1292903A (zh) 2001-04-25
JP2002507026A (ja) 2002-03-05
JP4807686B2 (ja) 2011-11-02
DE19810843A1 (de) 1999-09-30
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
DE69831246T2 (de) Verfahren zur einrichtung eines assoziativen speichers mit digitaler trie struktur
DE69333422T2 (de) Auffindung von Zeichenketten in einer Datenbank von Zeichenketten
EP0703534B1 (de) Speicherverwaltungssystem eines Rechnersystems
DE69926305T2 (de) Rechnerlesbarer Speicher zum Speichern einer Datenbank und Indizes
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE2310631C3 (de) Speicherhierarchie für ein Datenverarbeitungssystem
DE112005003265T5 (de) Registerdateibereiche für ein Verarbeitungssystem
DE19835216A1 (de) Verfahren und Prozessoranordnung zur parallelen Datenverarbeitung
WO1999017226A1 (de) Verfahren zum hinzufügen bzw. entfernen einer adresse in einem teilbesetzten, nicht-balancierten binären baum
DE69629540T2 (de) Verfahren und Gerät zum Sortieren von Elementen
DE2221442A1 (de) Assoziativspeicher
DE3736455A1 (de) Hierarchisches ablagesystem
EP1744257B1 (de) Vorrichtung und Verfahren zum Abrufen/Speichern von elektronischen Daten in einem System mit mehreren Datenverarbeitungseinheiten
DE19810784B4 (de) Rechnersystem
DE60102230T2 (de) Mehrfacheintragsvergleich in einem inhaltsadressierbaren speicher
EP0912952B1 (de) Datenbanksystem und verfahren zum verwalten eines n-dimensionalen datenbestands
DE19906868C1 (de) Verfahren und Vorrichtung zum Berechnen einer diskreten orthogonalen Transformation wie FFT oder IFFT
DE1499282A1 (de) Anordnung zum Erzeugen von Permutationen
DE10307831B4 (de) Verfahren zum Zugriff auf Suchelemente in einer Zugriffsliste
DE112022001875T5 (de) Beschleunigen von entscheidungsbauminferenzen
EP0978089B1 (de) Verfahren und anordnung zur transformation einer eingangsvariablen
DE1774886A1 (de) Verfahren zum Verarbeiten und Suchen von Eigenschaftssaetzen
DE102006008287A1 (de) Verfahren zum Modifizieren einer hierarchischen Klassifikationsbaumstruktur sowie Verfahren zum redundanzfreien Suchen von Informationselementen

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