首页 / 专利库 / 电脑编程 / 文本编辑器 / Suchverfahren für Speicheradressen und Adressvergleichsschaltung

Suchverfahren für Speicheradressen und Adressvergleichsschaltung

阅读:610发布:2020-12-29

专利汇可以提供Suchverfahren für Speicheradressen und Adressvergleichsschaltung专利检索,专利查询,专利分析的服务。并且Auf dem Gebiet der Informationsverarbeitung, z.B. bei Datenaustauschverfahren mit Quellenadressierung und bei Text-Editoren mit Zeilensuche mittels eines Identifiers, ist die Wiedergewinnung von gespeicherten Daten anhand eines Suchbegriffes bzw. Suchschlüssels (w) über diese Daten eine wichtige Aufgabenstellung. Um eine schnellere Entscheidung darüber herbeizuführen, ob ein dem zu prüfenden Suchschlüssel gleiches Datum in einem Speicher (7) vorhanden ist, wird ein Hasch-Verfahren angewendet. Dazu wird der Suchschlüssel in ein Polynom der Form
zerlegt, i = Laufvariable, k deren Grösstwert, w i = Polynomkoeffizient, p eine Potenz von 2, m = Anzahl Suchschlüssel in einer im Speicher (7) gespeicherten Adresstabelle. Der Suchvorgang erfolgt mittels einer rekursiven Hasch-Funktion der Form
unter Verwendung von im Speicher (7) gespeicherten Hasch-Funktionstabellen und Adress-Teiltabellen. Die Adressenvergleichsschaltung mit 3 Zwischenspeichern (1, 2, 3) für die Polynomkoeffizienten w i , einem Multiplexor 5, dem Speicher (7), einem Addierglied (13), 2 Registern (9, 15), einem Vergleicher (17), einem flankengetriggerten JK-Flip-Ffop (19) mit ausgangsseitig angeschlossenem UND-Glied (20) und einem Steuerwerk (22) ermöglicht eine preisgünstige Realisierung des Suchverfahrens in Hardware.,下面是Suchverfahren für Speicheradressen und Adressvergleichsschaltung专利的具体信息内容。

1. Suchverfahren für in einer Adresstabelle (T) abgelegte Werte bzw. Schlüssel, die sich vollständig in einem Speicher (7) befinden,a) bei welchem Suchverfahren ein auf Vorhandensein in der Adresstabelle zu prüfender, eingebbarer Suchschlüssel (w) unter Verwendung einer perfekten Hasch-Funktion zum Vergleich mit einem Schlüssel der Adresstabelle herangezogen wird undb) in Abhängigkeit vom Ergebnis des Vergleichs ein Gültigsignal (21 = "1") bzw. ein Ungültigsignal (21 = "0") erzeugt wird mit der Information, dass der Suchschlüssel (w) in der Adresstabelle (T) vorhanden bzw. nicht vorhanden ist,
dadurch gekennzeichnet,c) dass jeder Suchschlüssel (w) in ein Polynom der Form
zerlegt wird, i = Laufvariable, k deren Grösstwert, wi = Polynomkoeffizient, p = freie Variable, m = Anzahl der Suchschlüssel in der Adresstabelle,
d) dass die Adresstabelle (T) Teiltabellen (T0, T1, T2) aufweist, wobei jede Teiltabelle gemäss
gebildete Polynomkoeffizienten (Ti) mit gleicher Laufvariablen (i) enthält,
e) dass eine Hasch-Funktionstabelle (h) mit Teilfunktionen (hij) einer rekursiven Hasch-Funktion der Form
in einem Speicher (7) abgespeichert ist,
f) dass die Hasch-Funktion (h(w)) für jeden Suchschlüssel (w) unter Verwendung der Hasch-Funktionstabelle gemäss
berechnet wird und
g) dass anschliessend der Suchschlüssel (w) mit demjenigen Datum der Adresstabelle (T) verglichen wird, welches den Tabellenindex h(w) aufweist.
2. Suchverfahren nach Anspruch 1, dadurch gekennzeichnet, dass die freie Variable p eine Potenz von 2 ist.3. Suchverfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Vergleich des Suchschlüssels (w) mit dem Schlüssel der Adresstabelle (T) an der Stelle h(w) gemäss
durchgeführt wird, mit der Bedeutung, dass der Wert w an der Stelle h in der Adresstabelle (T) enthalten ist, wenn nach der Durchführung r den logischen wert "ja" aufweist, und dass der Wert w andernfalls nicht in der Adresstabelle enthalten ist.
4. Suchverfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die Adresstabelle (T) und die Hasch-Funktionstabelle (h10, h11, h21' h20) in demselben Speicher (7) abgelegt sind.5. Adressenvergleichsschaltung, gekennzeichnet durcha) einen Speicher (7),b) der eingangsseitig mit einem Steuerwerk (22),c) ferner mit dem Ausgang eines Summenregisters (15) sowied) mit dem Ausgang mindestens eines Zwischenspeichers (1 bis 3) für einen Suchschlüssel (w) unde) ausgangsseitig einerseits über ein Addendenregister (9) sowie andererseits direkt mit je einem Eingang eines Addiergliedes (13) undf) mit einem Eingang (12') eines Vergleichers (17) in Wirkverbindung steht,g) wobei der Vergleicher (17) über einen weiteren Eingang (12) mit dem Ausgang des mindestens einen Zwischenspeichers (1 bis 3) undh) ausgangsseitig mit einem Eingang eines bistabilen Speichergliedes (19) in Wirkverbindung steht undi) das Addierglied (13) ausgangsseitig mit einem Eingang des Summenregisters (15) in Wirkverbindung steht.6. Adressenvergleichsschaltung nach Anspruch 5, dadurch gekennzeichnet, dass der Speicher (7) eingangsseitig über einen Multiplexor (5) einerseits mit dem Summenregister (15) und andererseits mit mindestens einem Zwischenspeicher (1 bis 3) in Wirkverbindung steht.7. Adressenvergleichsschaltung nach Anspruch 5 oder 6, dadurch gekennzeichnet, dass das bistabile Speicherglied (19) ein flankengetriggertes JK-Flip-Flop mit Löscheingang ist, dessen J-Eingang mit dem Ausgang des Vergleichers (17) in Wirkverbindung steht.8. Adressenvergleichsschaltung nach einem der Ansprüche 5 bis 7, dadurch gekennzeichnet, dass ein UND-Glied (20) vorgesehen ist, das eingangsseitig einerseits mit einem Ausgang des bistabilen Speichergliedes (19) und andererseits mit einem Endesignal-Ausgang (E) des Steuerwerkes (22) in Wirkverbindung steht und an dem ausgangsseitig in Abhängigkeit von den Eingangssignalen ein Gültigsignal (21 = "l") oder ein Ungültigsignal (21 = "0") abgreifbar ist, mit der Bedeutung, dass der Suchschlüssel (w) in einer im assoziativen Speicher (7) gespeicherten Adresstabelle (T) vorhanden bzw. nicht vorhanden ist.9. Adressenvergleichsschaltung nach Anspruch 8, dadurch gekennzeichnet,a) dass der mindestens eine Zwischenspeicher (1 bis 3), das Addendenregister (9), das Summenregister (15), das bistabile Speicherglied (19) und der Multiplexor (22) von dem Steuerglied (22) in Abhängigkeit von vorgebbaren Steuerschritten (Tabelle 1) gesteuert sind undb) dass am Ausgang (6) des Multiplexors (5) ein Tabellenindexsignal (h(w)) abgreifbar ist, das angibt, an welcher Stelle der Adresstabelle (T) ein dem Suchschlüssel (w) gleiches Datum gespeichert ist.10. Adressenvergleichsschaltung nach einem der Ansprüche 5 bis 9, dadurch gekennzeichnet,a) dass ein Speicher (7) mit einer Zugriffszeit von ≦ 50 ns verwendet wird undb) dass die Adressenvergleichsschaltung schnelle AS-TTL-Bauelemente aufweist.
说明书全文

Bei der Erfindung wird ausgegangen von einem Suchverfahren für in einer Adresstabelle abgelegte Werte bzw. Schlüssel oder Speicheradressen nach dem Oberbegriff des Patentanspruchs 1. Die Erfindung betrifft auch eine Adressenvergleichsschaltung zur Durchführung des Suchverfahrens.

Eine wichtige Aufgabenstellung der Informationsverarbeitung ist die Wiedergewinnung von gespeicherten Daten anhand eines Suchbegriffes über diese Daten. Ein System, das solche inhaltsbezogene Zugriffe ermöglicht, wird als assoziativer oder inhaltsadressierbarer Speicher (content addressable memory oder CAM) bezeichnet.

Bei konventionellen (Halbleiter-) Speichern erfolgt der Zugriff aufgrund einer Adressangabe, d.h. durch Angabe der Position des gewünschten Datums im Speicher. Auf dem Markt sind bisher nur wenige assoziative Speicher (CAM) als Bauelemente erhältlich. Ihr Speicherinhalt ist recht klein, so dass ihr Einsatz auf Spezialgebiete beschränkt bleibt.

Grössere assoziative Speicher werden mittels konventionellen Speicherelementen und einer zusätzlichen Wiedergewinnungseinheit, die die assoziative Zugriffsfunktion realisiert, aufgebaut. Die Wiedergewinnungseinheit durchsucht den Inhalt des Speichers nach dem vorgegebenen Schlüssel (Suchbegriff). Dabei sind vielfältige Suchstrategien denkbar, die sich in Implementierungsaufwand und Zugriffszeit unterscheiden. Als Wiedergewinnungseinheit kann eine spezialisierte Hardware oder ein entsprechend programmierter Rechner verwendet werden.

Die am weitesten verbreiteten Suchstrategien für Wiedergewinnungseinheiten nach dem Schlüssel-TransformationsVerfahren sind die sogenannten Streu- oder Hasch-Verfahren. Die Hasch-Verfahren bieten bei geringem Implementierungsaufwand eine sehr gute Effizienz. Die gewöhnlichen Hasch-Verfahren haben die Eigenschaft, dass der durchschnittliche Suchaufwand gering ist, dass aber im schlechtesten Fall die Suchzeit um ein Vielfaches über dem Durchschnitt liegt. Dieser Effekt erschwert die Anwendung von Hasch-Verfahren in Echtzeitsystemen erheblich, da in derartigen Systemen die strikte Einhaltung von Zeitbedingungen sichergestellt sein muss.

Es existiert aber eine Klasse von Hasch-Funktionen, die die oben angeführten Nachteile nicht aufweisen, nämlich die sogenannten perfekten Hasch-Funktionen, die für alle Fälle einen gleichbleibenden, sehr geringen Zugriffsaufwand garantieren, vgl. Communications of the ACM, Vol. 24, Dez. 1981, S. 829 - 833. Perfekte Hasch-Funktionen gewährleisten ein Wiederauffinden eines Schlüssels mit einer einzigen Sondierung, d.h. mit einem einzigen Zugriff.

Ist W eine Menge von Elementen aus dem Intervall X = [O...n], n grösstes Element von X, so bildet eine perfekte Schlüssel-Transformationsfunktion bzw. Hasch-Funktion h die Menge W eindeutig in ein Abbildintervall I = [O...m] von ganzen Zahlen ab, m grösstes Element von I. Die Elemente w von W werden unter Verwendung von h als Elementzu-Adresstransformation in einer Adresstabelle T mit fest vorgegebener Elementeanzahl m gespeichert. Für alle w aus W gilt:

D.h., w ist genau dann in W enthalten, wenn an der Stelle bzw. an dem Tabellenindex h(w) der Adresstabelle T der Wert w gefunden wird. Das Suchen eines Elementes w in der Adresstabelle T erfordert somit eine Berechnung der Funktion h und eine Vergleichsoperation.

Die Berechnung der Hasch-Funktion h(w) erfolgt mittels Hasch-Funktionstabellen. Mit einer unzerlegten, direkten Anordnung der Funktion h (w) in einem Speicher als Hasch-Funktionstabelle ist bei binärer Codierung ein Speicher der Grösse

Bit notwendig. ┌log2m┐ bedeutet die kleinste ganze Zahl grösser oder gleich log2 m. Diese direkte Anordnung bedingt bei heutiger Technologie für n > 105 sehr aufwendige Speicher. Zudem ist die Speicherausnutzung gering, da in typischen Anwendungen von assoziativen Speichern davon ausgegangen wird, dass n » m ist.

Mit dem Oberbegriff nimmt die Erfindung auf einen Stand der Technik von Suchverfahren Be-zug, wie er in Communications of the ACM, Vol. 24 (1981) S. 829 - 833 beschrieben ist. Dort werden 2 Algorithmen zur Berechnung perfekter Hasch-Funktionen angegeben, die primär für die Implementierung in Software auf einem leistungsfähigen Rechner entworfen sind. Für eine Implementierung in Hardware sind diese Funktionen nur bedingt geeignet, da deren Berechnung u.a. Multiplikationen und Divisionen erfordert.

Die Implementierung von diskreten Funktionen (Hasch-Funktionen gehören in diese Klasse) in Hardware kann einfach und effizient mittels Funktionstabellen erfolgen, vgl. IEEE Transactions on Computers, Vol. 27 (1980) S. 931 - 934. Diese Tabellen können in hochintegrierten preisgünstigen Halbleiterspeichern abgelegt werden.

Derartige Suchverfahren für Speicheradressen und Adressenvergleichsschaltungen können z.B. bei einem Text-Editor Anwendung finden, wo eine Zeile mit einem bestimmten Identifier gesucht wird, wo also nicht nur das Vorkommen eines Elementes, sondern auch noch dessen Stelle interessant ist. In verteilten Steuer- und Regel- bzw. Leittechniksystemen, die nach dem Prinzip der Quellenadressierung arbeiten, werden ebenfalls assoziative Empfängerschaltungen benötigt, vgl. z.B. die CH-PS 632 365. Dort ist ein Datenaustauschverfahren zwischen mehreren Teilnehmern bzw. Partnern und deren Prozessoren angegeben, bei denen für zu übertragende Nutz-Nachrichten ausser diesen eine Absenderadresse, aber keine Empfängeradresse übertragen wird. Alle aktiven Teilnehmer entscheiden anhand der Absenderadresse und des Datentyps, ob die Nutz-Nachricht für sie von Interesse ist. Dazu müssen sie diese Absenderadresse mit mindestens einer in einer Tabelle gespeicherten Adresse vergleichen.

In künftigen sehr schnellen Uebertragungssystemen müssen entsprechend leistungsfähige assoziative Empfängerschaltungen eingesetzt werden. Bei Uebertragungsraten von 10 MHz - 100 MHz werden in den Empfängern assoziative Speicher der Grössenordnung 100 . 24 bit ... 5000. 24 bit mit einer Zugriffszeit im Bereich von 1 us ... 10 µs benötigt.

Die Erfindung, wie sie in den Patentansprüchen 1 und 5 definiert ist, löst die Aufgabe, ein Suchverfahren für Speicheradressen und eine Adressenvergleichsschaltung anzugeben, die ein schnelleres Ergebnis liefern und eine preisgünstigere Realisierung in Hardware ermöglichen.

Ein Vorteil der Erfindung besteht darin, dass die Arbeitsgeschwindigkeit eines quellenadressierten Systems um einen Faktor 20 ... 100 angehoben werden kann. Die Adressenvergleichsschaltung lässt sich mit wenigen im Handel erhältlichen Bauelementen realisieren. Durch eine Zerlegung der Hasch-Funktionstabelle h in mehrere Teilfunktionen hij lässt sich deren Grösse reduzieren, so dass weniger Speicherplatz benötigt wird.

Die Erfindung wird nachstehend anhand eines Ausführungsbeispiels erläutert. Es zeigen:

  • Fig. 1 eine Adressenvergleichsschaltung mit einem assoziativen Speicher,
  • Fig. 2 eine Belegung des assoziativen Speichers gemäss Fig. 1,
  • Fig. 3 eine Bit-Darstellung einer Adresse im assoziativen Speicher gemäss Fig. 1 und
  • Fig. 4 bis 7 ein Flussdiagramm eines Algorithmus zur Bestimmung einer Hasch-Funktionstabelle und der Adresstabelle, die zusammen mit der Hasch-Funktionstabelle in dem assoziativen Speicher gemäss Fig. 1 gespeichert sind.

Bei dem erfindungsgemässen Suchverfahren wird ein auf Vorhandensein in einer Adresstabelle T zu prüfendes Schlüsselelement bzw. ein Suchschlüssel w in ein Polynom der Form

zerlegt, i = Laufvariable, k = grösster Wert von i, wi = Polynomkoeffizient, p = freie Variable. Die Zerlegung von w kann in digitalen Schaltungen sehr einfach realisiert werden, wenn p als eine Potenz von 2 gewählt wird.

Die in Teilfunktionen hij zerlegte Funktion h ist definiert durch die Rekursion

Für diese neuformulierte Definition von h muss zusätzlich die Bedingung p ≧ m erfüllt sein.

Jede Teilfunktion hij kann mittels einer Hasch-Funktionstabelle der Grösse

berechnet werden. Der Umfang aller Tabellen hij zusammen ist somit

Verglichen mit dem Speicherbedarf Cd für die direkte Implementierung ist der Aufwand CZ nach der Zerlegung von h erheblich geringer. Für k = 2, n = 16777215 = 224-1 und p = 256 = 28 ist beispielsweise

und

Die Berechnung der rekursiv definierten Funktion h erfolgt durch den iterativen Algorithmus

In einem zweiten Schritt wird der Vergleich w = T(h(w)) durchgeführt. Um den Realisierungsaufwand zu vermindern, erfolgt der Vergleich sequentiell nach dem Algorithmus

Ist der Wert r nach der Ausführung true, so ist w an der Stelle h in der Adresstabelle T enthalten. Ist r = false, so ist w nicht in T enthalten.

In Fig. 1 ist ein Schaltschema für eine Hardwarerealisierung dieser Algorithmen angegeben. Für diese Schaltung sind die Parameter p = 2 = 256, n = 2 = 2563 und m ≤ 256 gewählt worden. Alle Schaltungselemente (inklusive der Signalleitungen bzw. Busse) haben mit diesen Parametern die Breite 8 bit. Bei einer anderen Wahl der Parameter kann die Schaltung problemlos angepasst werden.

Der Suchschlüssel w mit einer Länge von 24 bit wird gemäss Fig. 2 in drei gleichlange Teile w0, w1 und w2 zerlegt. Die Bitstellen 0 bis 7 von w werden als Polynomkoeffizienten-Signal w0 eingangsseitig einem Zwischenspeicher oder Latch 1 zugeführt. Die Bitstellen 8 bis 15 von w werden als Polynomkoeffizienten-Signal w1 eingangsseitig einem Zwischenspeicher oder Latch 2 zugeführt. Die Bitstellen 16 bis 23 von w werden als Polynomkoeffizienten-Signal w2 eingangsseitig einem Zwischenspeicher oder Latch 3 zugeführt. Die Zwischenspeicher 1 bis 3 stehen ausgangsseitig über einem Polynomkoeffizienten-Bus 4 einerseits mit einem "0"-Eingang eines Multiplexors 5 und andererseits mit einem ersten Eingang 12 eines Vergleichers 17 in Verbindung. Die Zwischenspeicher 1 bis 3 werden durch Ausgabefreigabe-Signale WsO, Wsl, Ws2 gesteuert, welche von einem Steuerwerk 22 geliefert werden. Ein "l"-Eingang des Multiplexors 5 ist über einen Bus 16 mit dem Ausgang eines Summenregisters 15 verbunden.

Der Ausgang des Multiplexors 5 ist über einen Multiplexor-Ausgangsbus 6, an dem am Ende des Suchverfahrens die Hasch-Funktion h(w) abgreifbar ist, mit Adresseingängen AO ... A7 eines Speichers 7 verbunden. Ueber einen Auswahleingang M, der mit dem Steuerwerk 22 in Verbindung steht, ist der Multiplexor 5 eingangsseitig umschaltbar.

Der assoziative Speicher 7 ist über Steuereingänge A8, A9 und A10 durch das Steuerwerk 22 steuerbar. Ueber Adressausgänge DO ... D7 und einen Speicherausgangsbus 8 steht der Speicher 7 mit dem Eingang eines Addendenregisters 9, einem ersten Eingang 10 eines Addiergliedes 13 und einem zweiten Eingang 12' des Vergleichers 17 in Verbindung. Als Speicher 7 kann ein Speicher in NMOS-Technologie verwendet werden, wie er in: Component Data Catalog der USA-Firma Intel, 1982, S. 2-1 bis 2-8 beschrieben ist.

Der Ausgang des Addendenregisters 9 ist mit einem 2. Eingang 11 des Addiergliedes 13 verbunden. Der Ausgang des Addiergliedes 13 steht über einen Addiergliedausgangsbus 14 mit dem Eingang des Summenregisters 15 in Verbindung. Das Addendenregister 9 ist über einen Takteingang Rl und das Summenregister 15 über einen Takteingang R2 durch das Steuerwerk 22 steuerbar. Bei Eintreffen eines Taktimpulses am Takteingang Rl bzw. R2 wird das eingangsseitig am Addendenregister 9 bzw. am Summenregister 15 anstehende Signal im jeweiligen Register gespeichert, gleichzeitig steht es ausgangsseitig am jeweiligen Register zum Abgriff zur Verfügung.

Der Vergleicher 17 ist ausgangsseitig mit einem J-Eingang eines flankengetriggerten JK-Flip-Flops 19 mit negiertem Löscheingang Cl verbunden. Der Löscheingang Cl und ein Taktsignaleingang C des JK-Flip-Flops 19 sind mit dem Steuerwerk 22 verbunden. Ein geeignetes JK-Flip-Flop der TTL-Bausteinfamilie ist unter der Typenbezeichnung 74 LS 109 aus dem Buch "The TTL Data Book for Design Engineers", 1976, S. 5 - 33 der Firma Texas Instruments bekannt, wobei nur die Hälfte des bekannten Bausteins benötigt wird und der nicht benötigte Preset-Eingang PR auf logisch "1" gesetzt werden muss, um das gewünschte

Verhalten zu erreichen. Ein UND-Glied 20 ist eingangsseitig einerseits an den Q-Ausgang des JK-Flip-Flops 19 und andererseits an einen Endesignal-Ausgang E des Steuerwerks 22 angeschlossen. Am UND-Glied-Ausgang 21 liegt nur dann ein "l"-Signal an, wenn der Vergleicher 17 am Ende des Vergleichsvorganges Gleichheit seiner Eingangssignale feststellt, d.h., wenn der Suchschlüssel w im Speicher 7 gespeichert ist.

Die Funktion des Steuerwerks ist in Tabelle 1 spezifiziert. Die Implementierung ist unkritisch und kann beispielsweise mit einem binären Zähler und einem nachgeschalteten Dekodierer für die Erzeugung der einzelnen Steuersignale erfolgen. St bezeichnet einen Startsignaleingang des Steuerwerks 22.

In der Tabelle 1 bedeuten: X einen irrelevanten Zustand, FF-Clear das Löscheingangssignal Cl von 22, Clock das Taktsignal C von 22 und Ende das Endesignal E von 22. Der Einfachheit halber werden für Signal und Signaleingang bzw. -ausgang dieselben Bezeichnungen verwendet.

Die Pfeile in der Clock-Spalte zeigen an, dass das Taktsignal C unmittelbar zu Beginn des jeweiligen Schrittes von 0 auf 1 wechselt. Die Werte 000 bis 110 in der Spalte A10..A8 adressieren nacheinander im Speicher 7 die Spei- cherbereiche, in denen die Hasch-Teilfunktionen h10, h11' h21' h20 und die Adress-Teiltabellen T0, T1 und T2 gespeichert sind.

Die Organisation des Speichers ist in Fig. 3 gezeigt. Der Speicher wird gleichzeitig für die Hasch-Funktionstabellen h und die Adresstabelle T benutzt. Mit den xy gewählten Parametern muss dieser mindestens die Grösse 1792 · 8 bit aufweisen; in der Praxis wird ein Speicher von 2048 · 8 bit gewählt.

Nach dem Anlegen des Suchschlüssels w an die Zwischenspeicher 1 bis 3 und dem Befehl "Start-Vergleich" am Startsignaleingang St von 22 führt das Steuerwerk 22 die Schritte 1 bis 8 aus, entsprechend Tabelle 1. Während des Schrittes 8 zeigt ein "l"-Signal am UND-Glied-Ausgang 21 an, dass w in der Adresstabelle T enthalten ist. Am Multiplexor-Ausgangsbus 6 ist das Resultat der Berechnung der Hasch-Funktion h(w) abgreifbar, entsprechend der Speicherstelle der Adresstabelle T, an welcher ein dem Suchschlüssel w gleiches Datum gespeichert ist.

Die maximale Arbeitsgeschwindigkeit der Adressenvergleichs schaltung ist bei Verwendung von Standardbauelementen wesentlich durch die Zugriffszeit des verwendeten Speicher bausteines bestimmt. Bei einem Aufbau des Multiplexors 5, des Addiergliedes 13, der Register 9 und 15, des Vergleichers 17 und des JK-Flip-Flops 19 mit LS-TTL-Bausteinen und bei einem Speicher mit einer Zugriffszeit von 200 ns werden für einen assoziativen Zugriff um die 2 ms benötigt. Bei Verwendung von schnellen Bauelementen (AS-TTL) und einem Speicher mit einer Zugriffszeit von 50 ns kann die für einen assoziativen Zugriff benötigte Zeit auf 600 ns gesenkt werden.

Das Suchverfahren des perfekten Hashing und die Funktionsweise der zugehörigen Adressenvergleichsschaltung soll an dem folgenden Beispiel verdeutlicht werden. In Tabelle 2 ist eine gewählte Schlüsselmenge W angegeben, welche die Ausgangsbasis für die Berechnung der Tabellen h und T ist.

Die der Schlüsselmenge W gemäss Tabelle 2 zugeordnete Hasch-Funktionstabelle h10' hll' h20' h21 ist in Tabelle 3 wiedergegeben und die Adresstabelle T mit Adress-Teiltabellen T0, T1, T2 in Tabelle 4. Der einfacheren Darstellung wegen ist die Zahl der Einträge in der Schlüsseltabelle auf 12 (T(0) bis T(11)) beschränkt worden. Die übrigen Elemente T(12) bis T(255) werden nicht benutzt und sind Null gesetzt. Ebenfalls aus Gründen einer einfachen Darstellung ist die Schlüsselmenge so gewählt, dass nur bei Elementen im Bereich von 0 bis 24 der Tabellen h xy der Eintrag von Null verschieden ist.

Ein Flussdiagramm eines möglichen Algorithmus zur Bestimmung der Tabellen hxy und T ist in den Fig. 4 - 7 dargestellt. Ziel des Algorithmus ist die Bestimmung der Tabelleninhalte von Tx und hxy, so dass für alle m Elemente der vorgegebenen Schlüsselmenge W die Bedingung

erfüllt ist, die das perfekte Hasch-Verfahren charakterisiert.

Fig. 4-gibt den Ueberblick des Ablaufs einer Berechnung an. Die Schlüsselmenge W mit den Abschnitten bzw. Polynomkoeffizienten w0, w1 und w2 gemäss Fig. 2, die Anzahl Elemente m von W, sowie die Parameter p und k der verwendeten Hardware-Schaltung werden vorgegeben. Das Programm berechnet zuerst iterativ die Tabellen hil und hi0 für i von 1 bis k. Für die Berechnung werden die Hilfstabellen whl und wh0 angelegt, die den entsprechenden Ausschnitt von W in einer geeigneten Form enthalten.

In Fig. 5 ist die Berechnung von wh0 und whl dargestellt. Die Werte von wh0 berechnen sich aus dem bereits bestimmten Teil der Hasch-Funktion hi(w); in whl wird wi kopiert. In einem nächsten Schritt werden die Hilfstabellen whl und wh0 sortiert, so dass gilt

Der Sortiervorgang ist nicht im Detail dargestellt; es wird auf die entsprechende Literatur (z.B. N. Wirth, Algorithmen und Datenstrukturen, Teubner 1979) verwiesen.

Die Grössen h0, hl, wh0 und whl werden nur als Hilfsfunktionen bei der Berechnung der Tabellen h xy gebraucht; sie treten an anderen Stellen und insbesondere in der Hardware-Schaltung nicht auf.

In Fig. 6 ist die Berechnung der Tabelle hi0 dargestellt. Zuerst werden alle Tabellenwerte mit p initialisiert. Mit dem ersten Eintrag (Position 0) beginnend werden der Reihe nach die einzelnen Werte bestimmt. Für die Bestimmung jedes Tabellenwertes hi0(j) werden - ausgehend von 0 - die möglichen Werte (der jeweils aktuelle Wert wird durch h0 repräsentiert) der Reihe nach auf Konflikte mit den bisher festgelegten Tabellenwerten (hi0(0...j-1)) untersucht. Ein Konflikt tritt auf, falls die Ungleichung

nicht erfüllt ist. Für den Test auf Konflikte wird die Ordnung der Tabellen whl und wh0 genutzt, indem davon ausgegangen werden kann, dass alle Elemente mit dem gleichen Wert whl(j) unmittelbar hintereinander liegen. Im Falle eines Konflikts wird h0 um eins erhöht und erneut für alle m Einträge von whl und wh0 getestet. Tritt kein Konflikt auf, so wird der gefundene Wert an der Stelle j in der Tabelle hi0 eingetragen.

Die Bestimmung der Tabellen hil erfolgt nach dem Flussdiagramm von Fig. 7. Zuerst wird die Tabelle mit 0 initialisiert. Die einzelnen Werte hil(whl(j)) werden der Reihe nach für die einzelnen Elemente festgelegt. Dafür wird die geordnete Struktur von whl, wh0 ausgenutzt. Für alle whl(x) mit jeweils gleichem Wert, die aufgrund der Ordnung unmittelbar hintereinander folgen, wird das Minimum und Maximum der entsprechenden Werte hi0(wh0(x)) bestimmt (Variablen min bzw. max). Der entsprechende Tabelleneintrag berechnet sich nach

Für j = 0 ist hl = 0, andernfalls wird hl nach der Zuweisung des Tabellenwertes auf

gesetzt.

Die Berechnung der Tabellen Tx erfolgt entsprechend der

Ausgangsgleichung für das perfekte Hasch-Verfahren

Die Bestimmung der einzelnen Teiltabellen Tx erfolgt entsprechend dem hinteren Teil des Flussdiagramms von Figur 4 ab j := 0. Für alle m Elemente wird die Gleichung

für j = O...k ausgewertet.

Beispiel 1

Eingabe Suchschlüssel w: 851977

Zerlegung von w in w0···w2; w0 = 9, w1 = 0, w2 = 13 Berechnung der Hasch-Funktion h(w):

Schritt 1, s. Tabelle 1: Wegen Ws0 = 1 gelangt das Polynomkoeffizienten-Signal w0 = 9 vom Zwischenspeicher 1 über den Polynomkoeffizienten-Bus 4, über den Multiplexor 5 in "0"-Stellung und den Multiplexor-Ausgangsbus 6 an die Adresseingänge AO...A7 des Speichers 7. Aufgrund des Signals 000 an den Steuereingängen A8, A9 und A10 erscheint an den Adressausgängen DO...D7 des Speichers 7 das Signal h10(w0) = h10(9) = 1, s. Tabelle 3.

Schritt 2: Am Takteingang Rl des Addendenregisters 9 liegt ein "1"-Signal an, welches die Speicherung seines eingangsseitig anliegenden Signals h10(9) = 1 bewirkt. h10(9) = 1 liegt nun auch am 2. Eingang 11 von 13 an. Wegen Wsl = 1 gelangt das Polynomkoeffizienten-Signal w1 = 0 vom Zwischenspeicher 2 über den Bus 4, den Multiplexor 5 und den Bus 6 an die Adresseingänge AO...A7 des Speichers 7. Aufgrund des Steuersignals 001 an A8... A10 erscheint an den Adressausgängen DO...D7 von 7 das Signal h11(w1) = h11(0) = 0. Am Ausgang des Addiergliedes 13 erscheint das Signal h1(w) - h11(w1) + h10(w0) = 0 + 1 = 1.

Schritt 3: Am Takteingang R2 des Summenregisters 15 liegt ein "l"-Signal an, welches die Speicherung seines eingangsseitig anliegenden Signals h1(w) - = 1 bewirkt, wodurch dieses Signal ausgangsseitig an 15 zur Verfügung steht. Wegen Ws2 = 1 gelangt das Polynomkoeffizienten-Signal w2 = 13 vom Zwischenspeicher 3 über den Bus 4, den Multiplexor 5 und den Bus 6 an die Adresseingänge AO...A7 des Speichers 7. Auf Grund des Steuersignals 010 an A8, A9, A10 erscheint an den Adressausgängen DO... D7 von 7 das Signal h21(w2) = h21(13) = 4, s. Tabelle 3.

Schritt 4: Wegen Rl = "1" wird h21(w2) = 4 im Addendenregister 9 gespeichert, wodurch dieser Wert am 2. Eingang 11 des Addiergliedes 13 anliegt. Wegen M = "1" gelangt das Ausgangssignal h1 (w) = 1 des Summenregisters 15 über den Bus 16, den Multiplexor 5 und den Bus 6 an die Adresseingänge AO...A7 des Speichers 7. Auf Grund des Steuersignals 011 an A8, A9, A10 erscheint an den Adressausgängen DO...D7 von 7 das Signal h20(h1) = h20(h11 + h10) = h20(1) = 0, s. Tabelle 3. Am Ausgang des Addiergliedes 13 erscheint die Grösse h(w) +h21(w2) + h20 (h1)= 4 + 1= 4.

Vergleich T(h(w)) = w:

Schritt 5: Mit dem Signal Cl = "0" wird das JK-Flip-Flop 19 gelöscht bzw. zurückgesetzt. Wegen R2 = "1" wird h(w) = 4 im Summenregister 15 gespeichert und ausgangsseitig an 15 zur Verfügung gestellt. Wegen M = "1" erscheint h(w) = 4 an den Adresseingängen AO...A7 des Speichers 7. Auf Grund des Steuersignals 100 an A8, A9, A10 steht an den Adressausgängen DO...D7 von 7, am Bus 8 und am 2. Eingang 12' des Vergleichers 17 das Signal TO(4) = 9 an. Infolge Ws0 = "1" liegt über den Zwischenspeicher 1 und den Bus 4 am 1. Eingang 12 des Vergleichers 17 das Polynomkoeffizienten-Signal w0 = 9 an und am negierten Ausgang von 17, an der Vergleicherausgangssignalleitung 18 und am J-Eingang des JK-Flip-Flops 19 ein "0"-Signal, entsprechend "Gleichheit" der zu vergleichenden Signale.

Schritt 6: Mit dem Taktsignal C = "f" am JK-Flip-Flop 19 wird, infolge des Signals "0" an dessen J-Eingang, der Q-Ausgang von 19 auf "1" gesetzt. Wegen R2 = "0" und M = "1" steht am Ausgang des Multiplexors 5 noch das Signal h(w) = 4 an. Auf Grund des Steuersignals 101 an A8...A10 erscheint an den Adressausgängen DO...D7 des Speichers 7 und am 2. Eingang 12' des Vergleichers 17 das Signal T1(4) = 0, s. Tabelle 3. Infolge Wsl = "1" liegt über den Zwischenspeicher 2 und den Bus 4 am 1. Eingang 12 des Vergleichers 17 das Polynomkoeffizienten-Signal w1 = 0 an und am Ausgang von 17 ein "0"-Signal, entsprechend "Gleichheit" der zu vergleichenden Signale.

Schritt 7: Mit Cl = "1" und C = "f" bleibt das Q-Ausgangssignal des JK-Flip-Flops 19 unverändert auf "1". Wegen R2 = "0" und M = "l" steht am Adresseingang AO...A7 des Speichers 7 unverändert das Signal h(w) = 4 an. Auf Grund des Steuersignals 110 an A8...A10 erscheint an den Adressausgängen DO...D7 des Speichers 7 und am 2. Eingang 12' des Vergleichers 17 das Signal T2(4) = 13, s. Tabelle 3. Infolge Ws2 = "1" liegt über den Zwischenspeicher 3 und den Bus 4 am 1. Eingang 12 des Vergleichers 17 das Polynomkoeffizienten-Signal w2 = 13 an, und am Ausgang von 17 ein "0"-Signal, entsprechend "Gleichheit".

Ergebnis:

Schritt 8: Mit Cl = "1" und C = "f" bleibt das Q-Ausgangssignal des JK-Flip-Flops 19 unverändert auf "1". Infolge des Endesignals E = "1" erscheint am Ausgang 21 des UND-Gliedes 20 ein Gültigsignal "1" mit der Bedeutung, dass der Suchschlüssel w in der Adresstabelle T des Speichers 7 vorhanden ist. Wegen R2 = "0" und M = "1" steht am Multiplexor-Ausgangsbus 6 unverändert das Signal h(w) = 4 an, welches die Position in der Adresstabelle T kennzeichnet. Die Adresstabelle T ist durch die Adress-Teiltabellen T0, T1 und T2 im Speicher 7 repräsentiert. T0, T1 und T2 bilden die Adresstabelle T in der gleichen Weise wie w0, w1 und w2 den Suchschlüssel w darstellen, vgl. Fig. 2.

Beispiel 2

Eingabe Suchschlüssel w :398336

Zerlegung von w in w0···w2 : w0 = 0, w1 = 20, w2 = 6 Berechnung der Hasch-Funktion h(w):

Vergleich T(h(w)) = w:

Ergebnis:

==> 398336 ist an Position 2 in der Adresstabelle 4.

Beispiel 3

Eingabe Suchschlüssel w : 398345

Zerlegung von w in w0...w2 : w0 = 9, w1 = 20, w2 = 6

Berechnung der Hasch-Funktion h(w):

Vergleich T(h(w)) = w:

Ergebnis:

==> 398345 ist nicht in der Adresstabelle 4.

高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈