DE10310858A1 - Verfahren und Vorrichtung zur Kompression einer Zeichenkette - Google Patents

Verfahren und Vorrichtung zur Kompression einer Zeichenkette Download PDF

Info

Publication number
DE10310858A1
DE10310858A1 DE2003110858 DE10310858A DE10310858A1 DE 10310858 A1 DE10310858 A1 DE 10310858A1 DE 2003110858 DE2003110858 DE 2003110858 DE 10310858 A DE10310858 A DE 10310858A DE 10310858 A1 DE10310858 A1 DE 10310858A1
Authority
DE
Germany
Prior art keywords
characters
data
match
search window
memory
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.)
Withdrawn
Application number
DE2003110858
Other languages
English (en)
Inventor
Yuri Dr. Klimets
Peter Dipl.-Ing. Rauschert
Anton Prof. Dr.-Ing. Kummert
Jörg Dr.-Ing. Velten
Mirco Dipl.-Ing. Pieper
Constantin Rack
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.)
Bergische Universitaet Wuppertal
Original Assignee
Bergische Universitaet Wuppertal
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
Application filed by Bergische Universitaet Wuppertal filed Critical Bergische Universitaet Wuppertal
Priority to DE2003110858 priority Critical patent/DE10310858A1/de
Publication of DE10310858A1 publication Critical patent/DE10310858A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur Kompression einer Zeichenkette aus aufeinanderfolgenden Zeichen, insbesondere gemäß dem LZ77-Standard, bei dem eine längste Übereinstimmung zu kodierender Zeichen mit dem Dateninhalt eines inhaltsadressierbaren Speicherbausteines gesucht wird, und im Fall der Übereinstimmung die übereinstimmenden Zeichen wenigstens in Abhängigkeit ihrer Adresse im Speicherbaustein und der Länge der Übereinstimmung kodiert werden, wobei an einen Datenbus eines maskierbaren inhaltsadressierbaren Speicherbausteins mehrere zu komprimierende Zeichen als wenigstens ein Datenwort angelegt werden und wenigstens eine Übereinstimmung wenigstens einer Teilmenge dieser Zeichen mit dem Dateninhalt des Speicherbausteins durch eine Maskierung des Datenbusses gesucht wird. Die Erfindung betrifft weiterhin eine Vorrichtung, umfassend einen inhaltsadressierbaren Speicherbaustein und eine Kontrollelektronik zur Durchführung des Verfahrens.

Description

  • Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Kompression einer Zeichenkette aus aufeinanderfolgenden Zeichen, insbesondere gemäß dem LZ77-Standard bzw. dem GZIP-Standard, bei dem eine längste Übereinstimmung zu kodierender Zeichen mit dem Dateninhalt eines inhaltsadressierbaren Speicherbausteines gesucht wird und im Fall der Übereinstimmung die übereinstimmenden Zeichen wenigstens in Abhängigkeit ihrer Adresse im Speicherbaustein und der Länge der Übereinstimmung kodiert werden.
  • Zur Komprimierung von Daten z.B. aus einer Zeichenkette kommen oftmals unterschiedliche Verfahren zum Einsatz, die sowohl einzeln als auch in Kombination miteinander genutzt werden können. Zu nennen sind hierbei beispielsweise die Huffman-Kodierung und eine wörterbuchbasierte Kompression, die in ihrer Grundidee der LZ77-Kompression folgt.
  • Der kombinierte Einsatz solcher Verfahren ist durch die im Internet verbreitete Kompression nach dem GZIP-Standard bekannt, der eine Realisierung in Software vorsieht. Hierbei wird zunächst eine wörterbuchbasierte Kompression gemäß dem LZ77-Standard durchgeführt, wonach anschließend die kodierten Daten weiterhin einer Huffman-Kodierung unterzogen werden.
  • Hierbei fällt bei einer Lösung auf üblichen Rechnersystemen der sehr hohe Rechenbedarf und der damit einhergehende große Zeitbedarf als nachteilig auf.
  • Neben der bereits genannten Kompression nach dem LZ77-Standard sind auch weitere Verfahren gemäß dem LZ78-Standard sowie Weiterentwicklungen bekannt, wie beispielsweise die LZW-Kompression, wobei diese Verfahren auf Ideen von Lempel und Ziv bzw. Welch basieren. Bei diesen Arten der Kodierung wird auf Wörterbücher zurückgegriffen, die aus den zu komprimierenden Daten selbst gebildet werden. Im Zusammenhang mit der vorliegenden Erfindung werden unter Worten bzw. Datenworten sequentielle Kombinationen beliebiger Zeichen, z.B. Bytes, verstanden. Die Datenworte können somit beliebige Länge aufweisen.
  • Grundlegender Gedanke der genannten Kompressionsstandards ist es, ein zu komprimierendes Datenwort innerhalb des Wörterbuches zu suchen und bei einer gefundenen Übereinstimmung das zu komprimierende Wort durch seine Adresse, d.h. im Wesentlichen seine Position im Wörterbuch zu ersetzen, wodurch sich eine Kompression erreichen lässt, wenn sich die Adresse eines zu komprimierenden Wortes im Wörterbuch mit weniger Zeichen darstellen lässt, als zur Darstellung des Datenwortes selbst erforderlich wären.
  • Bei einer Kompression nach dem LZ78-Standard wird dazu das Wörterbuch aus einem zu komprimierenden, insbesondere sequentiellen Datenstrom selbst gebildet. Den Ausgangspunkt bildet ein Wörterbuch, in dem zunächst nur alle möglichen Einzelzeichen als Wörter verzeichnet sind. Anschließend werden dann im Datenstrom sequentiell auftretende Kombinationen von bereits im Wörterbuch verzeichneten Wörtern und Einzelzeichen als neu gefundene längere Wörter in das Wörterbuch aufgenommen. Auf diese Weise werden zunächst zwei Zeichen umfassende Wörter aufgenommen. Die Länge der als Wörter aufzunehmenden Zeichenketten nimmt dabei immer mehr zu, so dass nach und nach auch längere Wörter und Wortketten in das Wörterbuch aufgenommen werden. Somit können insbesondere komplexe lange Wortketten nach einem Auffinden im Wörterbuch durch eine deutlich kürzere Adressierung ersetzt und damit komprimiert werden.
  • Bei dem LZ77-Standard besteht demgegenüber das Wörterbuch aus bereits verarbeiteten Daten. Trat eine Zeichenkombination mit einer Länge von drei oder mehr Zeichen in zurückliegenden, bereits verarbeiteten Daten schon einmal auf, so wird durch ein Abspeichern der Länge und der Position der Zeichenkette relativ zum aktuell zu verarbeitenden Zeichen eine Datenreduktion erreicht. Das Wörterbuch hat bei dem LZ77-Standard eine konstante Größe und besteht üblicherweise aus einem über die zu kodierenden Zeichen bzw. Daten zu verschiebenden Suchfenster, welches bezogen auf die aktuelle Position eine konstante Anzahl zurückliegender Zeichen umfasst. Ein solches Suchfenster kann dementsprechend beispielsweise 32.768 zurückliegende Zeichen umfassen.
  • Der LZ78- und der LZ77-Standard unterscheiden sich mithin als signifikant dadurch, dass beim LZ78-Standard neu aufzunehmende Wörter lediglich kontinuierlich angefügt werden, wobei alle bestehenden Einträge inklusive ihrer Adressen bestehen bleiben, während der LZ77-Standard auf einem sich dynamisch ändernden Wörterbuch konstanter Größe aufbaut, bei dem sich die Adressen der Wörter durch das verschiebende Fenster permanent ändern.
  • Die genannten verschiedenen Kompressionsstandards und auch die Huffman-Kodierung sind dem einschlägigen Fachmann hinlänglich bekannt, so dass eine nähere Erörterung hier entbehrlich ist.
  • Die Datenkompression insbesondere nach dem LZ77-Standard wird bislang vorwiegend in Software auf Mikroprozessoren durchgeführt, wobei die größte Zeit bei der Suche nach möglichst langen Übereinstimmungen der nächsten zu verarbeitenden Zeichen mit den im Suchfenster enthaltenen Zeichenfolgen benötigt wird. Gerade diese Suche lässt sich durch eine spezielle Form eines Speicherbausteines, nämlich eines inhaltsadressierbaren Speichers realisieren. Ein solcher Speicherbaustein wird auch als CAM bezeichnet (content addressable memory). Häufig wird ein derartiger Speicher auch als assoziativer Speicher benannt. Diese Art von Speicher kann benutzt werden, um zu einer gegebenen Zeichenkette, die an den Datenbus dieses Speichers angelegt wird, deren Position im Speicher zu erhalten, d.h. ein CAM-Speicherbaustein besitzt eine zu einem üblichen RAM (random access memory) umgekehrte Kausalitätsfolge. Während an den Adressbus eines RAM-Speichers eine Adresse angelegt wird, um diese auszulesen, wird an dem CAM-Speicher ein Inhalt angelegt, um die zugehörige Adresse, sofern diese existent ist, zu erhalten. Das Beschreiben eines CAM-Speichers mit Dateninhalten geschieht jedoch prinzipiell auf die gleiche Weise wie bei üblichen bekannten RAM-Speicherbausteinen.
  • Ein hardwarebasiertes Kompressionsverfahren nach dem LZW-Standard ist beispielsweise aus der Patentschrift US 5,838,264 bekannt. Bei dem dort bekannten Verfahren werden einzelne Daten, insbesondere Zeichen, von der Größe eines Bytes an den Datenbus eines oben genannten inhaltsadressierbaren CAM-Speicherbausteines angelegt, um sodann durch die hardwareseitige Überprüfung innerhalb des CAM-Bausteines eine eventuelle Adresse innerhalb des Speichers zu erhalten. Um eine auch bei dem LZW-Verfahren längste Übereinstimmung von Zeichenketten mit dem Inhalt des im CAM-Baustein abgelegten Wörterbuchs zu erhalten, ist es in dem bekannten Verfahren vorgesehen, solange nacheinander immer weitere einzelne Zeichen an den Datenbus des CAM-Bausteines anzulegen, bis dass keine Übereinstimmung mehr mit dem Inhalt des Speicherbausteines festgestellt werden kann. So kann durch die jeweils nach einem angelegten Zeichen erhaltenen Adressen und die Anzahl der angelegten Zeichen, bis dass keine Übereinstimmung mehr gefunden wurde, eine Kompression nach dem LZW-Standard erfolgen.
  • Bei dem bekannten Verfahren wird es als störend und nachteilig empfunden, dass sukzessive an den CAM-Speicherbaustein jeweils einzelne Zeichen angelegt werden müssen, um nacheinander die Übereinstimmungen zu prüfen, bis keine weitere Übereinstimmung mehr auftritt. Dies erfordert trotz einer Hardwarerealisierung der Adresssuche eines einzelnen Zeichens einen erheblichen Softwareaufwand, da nacheinander von einem Eingangsdatenstrom jeweils einzelne Zeichen an das Datenregister des CAMs angelegt und überprüft werden müssen.
  • Aufgabe der Erfindung ist es ein Verfahren und eine Vorrichtung bereitzustellen, mit denen auf einfache Art und Weise mehrere zu komprimierende Zeichen (also Datenworte) auf eine eventuelle vollständige oder teilweise Übereinstimmung mit dem Inhalt eines in einem CAM-Baustein abgelegten Wörterbuches überprüft werden kann, insbesondere wobei auch die Ermittlung von Übereinstimmungen einer Länge größer als 1 hardwarebasiert erfolgt.
  • Diese Aufgabe wird erfindungsgemäß dadurch gelöst, dass an einen Datenbus eines maskierbaren inhaltsadressierbaren Speicherbausteines mehrere zu komprimierende Zeichen gleichzeitig als wenigstens ein Datenwort angelegt werden und Übereinstimmungen wenigstens einer Teilmenge oder aller dieser Zeichen mit dem Dateninhalt dieses Speicherbausteins durch eine Maskierung des Datenbusses gesucht werden.
  • Eine Vorrichtung mit einem inhaltsadressierbaren Speicherbaustein und einer Kontrollelektronik zur entsprechenden Ansteuerung und Durchführung des Verfahrens weist dementsprechend erfindungsgemäß einen inhaltsadressierbaren Speicherbaustein bekannter Art auf, der erfindungsgemäß maskierbar ist, d.h. eine Maskierung des Datenbusses zulässt, was im Rahmen dieser Erfindung bedeutet, dass durch eine Maskierung die Stellen eines den Datenbus angelegten Datenwortes ausgesucht werden können, deren Übereinstimmung mit den Daten innerhalb des Speicherbausteines geprüft werden soll. Bei einem Datenwort aus mehreren Zeichen kann also eine Signifikanz der bei der Suche zu berücksichtigenden Zeichen bestimmt werden.
  • Eine Maskierung des Datenbusses kann hierbei beispielsweise über einen separat vorgesehenen Maskierungsbus, ein Maskierungsregister oder andere Maskierungseinrichtungn an dem erfindungsgemäßen CAM-Speicherbaustein vorgesehen sein. Eine Maskierungseinrichtung gibt dementsprechend an, welche der für eine Suche an den Datenbus angelegten Zeichen eine zu berücksichtigende Signifikanz besitzen sollen und kann hardwaremäßig durch eine Steuerlogik oder eine Software programmiert werden.
  • Gegenüber dem oben genannten Stand der Technik, bei dem lediglich die Übereinstimmung eines einzelnen Zeichens oder bei Anlage eines längeren Datenwortes nur eine vollständige Übereinstimmung des Datenwortes mit dem Speicherinhalt festgestellt werden kann, bietet die erfindungsgemäße Lösung den besonderen Vorteil, dass durch eine reduzierte Signifikanz, d.h. eine Reduzierung von allen zu suchenden Zeichen innerhalb eines Datenwortes auf nur einen Teil von Zeichen innerhalb des Datenwortes auch nur das Auftreten einer Teilzeichenkette im Speicherbaustein festgestellt werden kann.
  • Mit einer derartigen erfindungsgemäßen Vorrichtung und dem erfindungsgemäßen Verfahren besteht daher eine besonders einfache Möglichkeit eine längste Übereinstimmung der an den Datenbus angelegten Zeichen mit denen innerhalb des Speicherbaussteins aufzufinden.
  • Neben der Adresse, die ein inhaltsadressierbarer CAM-Speicherbaustein nach der Anlage eines Datenwortes zur Verfügung stellt, können auch weitere, insbesondere binäre Signale ausgegeben werden, bei denen es sich z.B. um ein sogenanntes „Match Flag" und ein „Multiple Match Flag" handelt. Während das Match Flag die Existenz irgendeiner Übereinstimmung anzeigt, informiert das Multiple Match Flag darüber, ob Übereinstimmungen an mehreren Speicheradressen auftreten.
  • Mit dem Verfahren und der Vorrichtung können hardwaremäßig alle Kompressionsstandards durchgeführt werden, bei denen eine längste Übereinstimmung gefunden werden muss.
  • Um mit dem erfindungsgemäßen Verfahren und der erfindungsgemäßen Vorrichtung beispielsweise eine Komprimierung nach dem LZ77-Standard zu realisieren, kann es vorgesehen sein, dass zur Komprimierung in einer dem Fachmann bekannten Weise ein Suchfenster vorgegebener Datenwortbreite sukzessive über die zu verarbeitende Zeichenkette verschoben wird, wobei jedoch nunmehr erfindungsgemäß in Abkehr von einer reinen softwareseitigen Lösung hardwarebasiert die Zeichen innerhalb des Suchfensters in den Speicherbaustein abgelegt werden und eine wenigstens teilweise Übereinstimmung einer Anzahl von vor dem Suchfenster angeordneten Zeichen mit den im Speicherbaustein abgelegten Zeichen gesucht wird.
  • Die Ausführung einer Kompression nach dem LZ77-Standard kann dementsprechend mit dem erfindungsgemäßen Verfahren und der Vorrichtung hardwarebasiert durchgeführt werden, da sämtliche Daten bzw. Zeichen innerhalb des Suchfensters, die als variables Wörterbuch dienen, in den inhaltsadressierbaren Speicherbaustein eingeschrieben werden und dort für einen hardwareseitigen Vergleich mit Zeichen, die vor dem Suchfenster angeordnet sind, zur Verfügung stehen. Hierbei wird bevorzugt für einen Vergleichsschritt die Anzahl von Zeichen aus vor dem Suchfenster angeordneten Zeichen derart gewählt, dass sie der Datenwortbreite des inhaltsadressierbaren Speicherbausteines entspricht.
  • Wird ein solches Datenwort an den Datenbus des Speicherbausteins angelegt kann keine, eine vollständige und alle dazwischen liegenden Übereinstimmungen gemäß der gewählten Maskierung gefunden werden.
  • In diesem Fall ist es besonders vorteilhaft, wenn jedes im Suchfenster befindliche Zeichen zusammen mit N-1 nachfolgenden Zeichen in je einer Speicherstelle, insbesondere in aufeinanderfolgenden Speicherstellen des Speicherbausteines abgelegt wird, wobei der Speicherbaustein eine Datenwortbreite von N aufweist. Insofern kann bei der Auswahl von beispielsweise N zu komprimierenden Zeichen eine teilweise Übereinstimmung bei einer entsprechenden Maskierung bis zu einer vollständigen Übereinstimmung an einer einzigen Adresse des Speicherbausteines aufgefunden werden.
  • Um nun hardwaremäßig eine Komprimierung eines oder mehrerer Zeichen zu erreichen, können dementsprechend eines oder mehrere Zeichen als ein Datenwort aus einer der Datenwortlänge des Speicherbausteines entsprechenden Anzahl von Zeichen aus der Zeichenkette vor dem Suchfenster an den Datenbus des Speicherbausteines zur Prüfung wenigstens einer Teilübereinstimmung mittels einer entsprechenden Maskierung angelegt werden.
  • So kann beispielsweise bei einem Datenwort aus insgesamt N Zeichen zunächst eine Teilübereinstimmung in lediglich einem, nämlich z.B. dem ersten Zeichen, dadurch geprüft werden, dass eine Maskierung des Maskierungsbusses bzw. des Maskierungsregisters derart gewählt wird, dass lediglich dieses erste Zeichen als signifikant gewählt wird und die N-1 verbleibenden Zeichen als nicht signifikant gewählt werden.
  • Wird schon bei dieser Prüfung mit der geringsten Signifikanz keine Übereinstimmung dieses einzelnen Zeichens mit einem Zeichen an der ersten Stelle irgendeiner Adresse des Speicherbausteines gefunden, so muss dieses erste Zeichen als Zeichen selbst kodiert werden und eine Kompression ist nicht möglich. In diesem Fall wird, insbesondere nach der Prüfung das Zeichen zusammen mit N-1 nachfolgenden Zeichen in eine Speicherstelle des Speicherbausteines abgelegt und das Suchfenster um eine Position weiter verschoben. Somit steht erneut der gesamte jetzt verschobene Inhalt des Suchfensters im Speicherbaustein zur Verfügung.
  • Wird eine Übereinstimmung in den signifikanten Stellen gefunden, so wird nach weiteren längeren Übereinstimmungen dadurch gesucht, dass die Signifikanz durch eine ausgewählte Maskierung erhöht wird, beispielsweise dadurch, dass auch das zweite Zeichen am Datenbus auf Signifikanz geschaltet wird, wohingegen N-2 weitere folgende Zeichen als nicht signifikant gewählt bleiben. Auf diese Art und Weise kann durch sukzessives Erhöhen der Signifikanz nach einer längsten Übereinstimmung wenigstens einer Teilzeichenkette aus den angelegten Zeichen an dem Datenbus festgestellt werden.
  • Bei der gefundenen Übereinstimmung zumindest einer Teilzeichenkette der an den Datenbus angelegten N Zeichen kann so hardwaremäßig durch den CAM-Speicherbaustein die Adresse dieser Teilzeichenkette innerhalb des Speicherbausteines ermittelt werden, wobei die Länge der Übereinstimmung automatisch implizit durch die gewählte Maskierung bekannt ist.
  • Gemäß dem erfindungsgemäßen Verfahren wird aus der ermittelten Adresse die Position der Teilzeichenkette relativ zum Suchfenster ermittelt, um eine Konformität mit dem LZ77-Standard zu erreichen. Die in dem Speicherbaustein aufgefundene Teilzeichenkette kann somit gemäß den Regeln des LZ77-Standards kodiert werden, d.h. wenigstens durch die Position innerhalb des Suchfensters und die Länge der Übereinstimmung.
  • Nach der Feststellung der längsten Übereinstimmung wird erfindungsgemäß das Suchfenster um die Länge der Übereinstimmung auf der zu kodierenden Zeichenkette weiter verschoben, wobei in einer Schreiboperation jedes der einzelnen Zeichen aus der übereinstimmenden Teilzeichenkette zusammen mit N-1 nachfolgenden Zeichen wiederum in aufeinanderfolgende Adressen des Speicherbausteines abgelegt wird, wobei die bisherigen Zeicheninhalte an diesen Adressen überschrieben werden.
  • Innerhalb des CAM-Speicherbausteines wird dementsprechend wiederum vollständig der Inhalt des Suchfensters abgebildet, wobei jedoch das Suchfenster jeweils bei einer Verschiebung gemäß dem LZ77-Standard an unterschiedlichen Adressen innerhalb des CAM-Bausteines beginnt. Da der Beginn des Suchfensters innerhalb des CAM-Bausteines durch eine Elektronik oder Software kontrolliert wird, besteht ohne weiteres die Möglichkeit aus der ermittelten Adresse einer Zeichenkette innerhalb des CAM-Bausteines auf die Position innerhalb des Suchfensters zurückzuschließen.
  • Da der Speicherbaustein üblicherweise nur eine begrenzte Anzahl von Speicherstellen hat, wobei diese Anzahl bevorzugt mindestens der Länge insbesondere genau der Länge des Suchfensters entspricht, ist es vorgesehen, dass beim Einschreiben eines neuen Datenwortes in den Speicherbaustein ein altes Datenwort aus dem Speicherbaustein überschrieben wird. Hierzu wird bevorzugt der Speicherbaustein im Sinne eines Ringspeichers beschrieben.
  • Wird mit dem erfindungsgemäßen Verfahren eine Übereinstimmung aller Zeichen aus dem an den Datenbus angelegten Datenwort festgestellt, so wird aus der ermittelten Adresse der Zeichen im Speicherbaustein wiederum die Position der Zeichen im Suchfenster ermittelt und die Zeichen wenigstens durch diese Position und die Datenwortbreite (=Länge der vollständigen Übereinstimmung) kodiert, wonach das Suchfenster um die Datenwortbreite weiter verschoben wird und wobei jedes der einzelnen Zeichen aus dem Datenwort zusammen mit N-1 nachfolgenden Zeichen in aufeinanderfolgenden Adressen des Speicherbausteines abgelegt wird. Es werden dementsprechend N neue Datenworte in den Speicherbaustein eingeschrieben, wobei N alte Datenworte im Sinne des Ringspeicheraufbaus aus dem Speicherbaustein entfallen.
  • Bei einer aufgefundenen Übereinstimmung aller Zeichen besteht weiterhin eine Wahrscheinlichkeit, dass bei dem folgenden Datenwort innerhalb der Zeichenkette ebenfalls eine Teil- oder vollständige Übereinstimmung besteht, so dass in diesem Fall bei einer festgestellten Übereinstimmung wenigstens einer Teilzeichenkette im Anschluss an eine vollständige Übereinstimmung die Länge der vorherigen vollständigen Übereinstimmung um die Länge der aktuell festgestellten Übereinstimmung inkrementiert wird und die festgestellte aktuelle Adresse z.B. verworfen wird.
  • Weiterhin wird das Suchfenster wiederum um die Länge der Übereinstimmung weiterverschoben und jedes einzelne der übereinstimmenden Zeichen zusammen mit N-1 nachfolgenden Zeichen in einer Adresse des Speicherbausteines abgelegt.
  • Sofern aufeinanderfolgend mehrfach vollständige Übereinstimmungen des gesamten an den Datenbus angelegten Datenwortes mit dem Inhalt des Speicherbausteines festgestellt wird, wird der Verfahrensschritt der Inkrementierung der jeweils festgestellten Länge mehrfach nacheinander wiederholt, wobei zur Kodierung die Position relativ zum Suchfenster bei der erstmaligen vollständigen Übereinstimmung erhalten bleibt.
  • Werden mit dem erfindungsgemäßen Verfahren und der Vorrichtung mehrere längste Übereinstimmungen an verschiedenen Adressen festgestellt, was beispielsweise durch das Multiple Match Flag des CAM-Speicherbausteines angezeigt werden kann, so ist es bevorzugt vorgesehen, dass eine Übereinstimmung mit der geringsten Position innerhalb des Suchfensters zur Kodierung ausgewählt wird. Dies begründet sich darin, dass bei einer späteren, eventuell weiteren folgenden Huffman-Kodierung eine bessere ergänzende Kompression erreicht werden kann.
  • Gemäß dem erfindungsgemäßen Verfahren und der Vorrichtung kann es auch vorgesehen sein, dass die Zeichen innerhalb des Suchfensters lediglich unter einer einzigen Adresse innerhalb des CAM-Speicherbausteines abgelegt wird, wobei dieser eine Datenwortbreite aufweist, die der Suchfensterbreite entspricht. In diesem Fall kann eine Kodierung nicht durch eine Adresse und eine Länge im eigentlichen, oben genannten Sinn festgestellt werden, jedoch besteht weiterhin die Möglichkeit durch eine ausgewählte spezielle Maskierung des Datenbusses eine Prüfung auf zumindest Teilübereinstimmungen durchzuführen. Hierbei kann eine Maskierung beginnend mit jeder einzelnen Stelle innerhalb eines Datenwortes programmiert werden. Hierdurch ergibt sich auch ein besonderer Geschwindigkeitsvorteil, da der CAM-Baustein nur einmal beschrieben werden muss und anschließend mehrere Prüfungen durchführbar sind.
  • Beispielsweise kann zunächst die erste Stelle innerhalb des Datenwortes als signifikant maskiert werden, woraufhin bei einer gefundenen Übereinstimmung sukzessive auch die weiteren Stellen auf eine hohe Signifikanz geschaltet werden, bis dass keine weitere Übereinstimmung festgestellt wird. Da an der ersten Stelle des Datenwortes mit der Programmierung einer hohen Signifikanz begonnen wurde, kann bei einer aufgefundenen Teilübereinstimmung die aufgefundene Teilzeichenkette vor dem Suchfenster kodiert werden unter der Adresse 1 und der Länge der programmierten Signifikanzmaskierung. Weiterhin muss dann gemäß dem erfindungsgemäßen Verfahren gesucht werden, ob beispielsweise auch Übereinstimmungen beginnend ab der zweiten und auch weiterer folgender Stellen innerhalb des Suchfensters bzw. der Adresse des Speicherbausteines vorliegen und ob die Übereinstimmung größer ist als die zuvor ermittelte.
  • Hierzu wird, wenn beispielsweise ab der zweiten Stelle innerhalb des Suchfensters die Suche beginnen soll, zunächst die erste Stelle ausmaskiert, d.h. auf keine Signifikanz geschaltet, wohin die zweite Stelle einmaskiert bzw. auf hohe Signifikanz geschaltet wird. Bei einer gefundenen Übereinstimmung setzt sich das Verfahren der sukkessiven Erhöhung der Signifikanz ab der zweiten Stelle weiter fort, bis dass die längste Übereinstimmung ab der zweiten Stelle gefunden wurde. Dementsprechend wird dann eine aufgefundene Teilzeichenkette durch die Adresse 2 und die Länge der Signifikanzprogrammierung kodiert. Dieses Verfahren kann dementsprechend weiter geführt werden für alle weiteren Stellen innerhalb des Suchfensters. Aus allen gefundenen Übereinstimmungen bezüglich jeder Stelle wird die mit der größten Länge zur Kodierung ausgewählt.
  • Zu einer Optimierung der erfindungsgemäßen hardwaremäßigen Komprimierung kann es vorgesehen sein, die Maskierung in Abhängigkeit von statistischen Eigenschaften der Zeichenkette durchzuführen. Beispielsweise kann es vorgesehen sein, dass häufiger vorkommende Zeichenlängen bei der Programmierung der Maskierung eher geprüft werden, als beispielsweise nicht so häufig vorkommende Zeichenlängen.
  • Ein Geschwindigkeitsvorteil kann auch dadurch erreicht werden, dass eine Schreiboperation, bei der wenigstens ein Zeichen zusammen mit N-1 nachfolgenden Zeichen in einer Adresse des Speicherbausteines abgelegt wird, schon vor Abschluss einer Suche nach Übereinstimmungen in der Art begonnen wird, dass die in den Speicherbaustein geschriebenen Zeichen bereits direkt nach Abschluss der Suche für die nächste Suche zur Verfügung stehen.
  • Dieser Optimierung liegt zugrunde, dass üblicherweise erst nach einer abgeschlossenen Prüfung auf maximale Übereinstimmungen die übereinstimmende Zeichenkette in den Speicherbaustein eingeschrieben wird, was jedoch mehrere Taktzyklen der steuernden Elektronik benötigt, so dass vor Beginn einer neuen Suche normalerweise diese Anzahl von Taktzyklen abgewartet werden muss, da erst dann das neu eingeschriebene Datenwort bzw. das verschobene Suchfenster im Speicher zur Verfügung steht für die nächste Suche nach Übereinstimmungen. Um dies zu optimieren, ist es gemäß dem erfindungsgemäßen Verfahren weiterhin vorgesehen diese Schreiboperation schon eine entsprechende Anzahl von Taktzyklen vor Abschluss der Suche zu beginnen, so dass das neu in den Speicherbaustein eingeschriebene Wort am Ende der durchgeführten Suche sofortig zur Verfügung steht, ohne dass hier eine bestimmte Anzahl von Taktzyklen abgewartet werden muss.
  • Zwar kann hierdurch der Fehlerfall auftreten, dass vor dem eigentlichen Abschluss der Suche nach Übereinstimmung ein Datenwort aus dem Speicher herausfällt, welches eine Übereinstimmung gezeigt hätte, jedoch ergeben sich trotz dieses eventuellen dadurch hervorgerufenen Kompressionsverlustes erhebliche Zeitvorteile bei der Suche.
  • Das erfindungsgemäße Verfahren kann vorteilhaft mit einer Vorrichtung durchgeführt werden, die einen bereits beschriebenen inhaltsadressierbaren Speicherbaustein und eine Kontrollelektronik zur Ansteuerung des Speicherbausteines zur Verfügung stellt. Eine derartige Vorrichtung kann beispielsweise eine Schnittstelle zur Datenkommunikation mit einer Datenverarbeitungsanlage aufweisen, die die zu komprimierenden Daten an die Vorrichtung zur Verfügung stellt und gemäß dem Verfahren anschließend als komprimierte Daten zurück erhält.
  • Auf diese Art und Weise kann z.B. eine Steckkarte für übliche Computersysteme realisiert werden, so dass eine LZ77-Kompression innerhalb eines Computersystems hardwareseitig realisiert werden kann. Eine GZIP-Komprimierung kann dementsprechend dadurch realisiert werden, dass zunächst hardwareseitig die LZ77-Kompression durchgeführt wird und anschließend entweder softwarebasiert oder ebenfalls hardwarebasiert die Huffman-Kodierung erfolgt. Es ergeben sich dementsprechend aufgrund der hardwarebasierten Realisierung der Kompression erhebliche Geschwindigkeitsvorteile, die gerade bei der Versendung von Daten über Telekommunikationsnetzwerke, wie beispielsweise dem Internet vorteilhaft sind.
  • In einer Anwendung kann beispielsweise ein Hostcomputer, wie z.B. ein Webserver, zu komprimierende Daten bereitstellen. Der Datenstrom kann über den PCI-Bus dieses Computers zu einer erfindungsgemäßen Vorrichtung transportiert und in dieser komprimiert werden. Hierzu können von einer jeglichen Software die zu komprimierenden Daten über die Schnittstelle in die erfindungsgemäße Vorrichtung transferiert werden, wonach die Software die komprimierten Daten zurück erhält. Der Ablauf des Schreibens und des Lesens der Daten zu und von der erfindungsgemäßen Vorrichtung kann auf übliche Arten und Weisen realisiert werden, die dem Fachmann der Elektrotechnik und der Computertechnik bekannt sind.
  • Wie erwähnt, ist es gemäß dem erfindungsgemäßen Verfahren und gemäß der erfindungsgemäßen Vorrichtung vorgesehen nach einer durchgeführten LZ77-Kompression eventuelle weitere Kompressionsverfahren auf den Ausgangsdatenstrom anzuwenden. Durch eine anschließend erfolgte Huffman-Kodierung kann dementsprechend eine Kompression gemäß des GZIP-Standards erreicht werden.
  • Ausführungsbeispiele der Erfindung sind in den nachfolgenden Abbildungen dargestellt. Es zeigen:
  • 1: eine schematische Darstellung eines CAM-Speicherbausteines mit verschiedenen Eingangsdaten zur Prüfung auf Übereinstimmung;
  • 2: eine schematische Darstellung eines CAM-Speicherbausteines mit Maskierungsmöglichkeit mit verschiedenen Eingangsdaten zur Prüfung auf Teil-Übereinstimmung durch Auswahl der Signifikanzstelle im angelegten Datenwort;
  • 3: ein Beispiel einer Kodierung durch Suche nach eine längsten Übereinstimmung;
  • 4: ein Beispiel einer fortgesetzten Kodierung nach einer vorherigen vollständigen Übereinstimmung;
  • 5: ein Beipiel eines Verfahrens zur Einsparung von Speicheradressen im CAM-Speicherbaustein und zur Geschwindigkeitserhöhung Die Datenkompression nach dem LZ77-Standard wird bisher vorwiegend in Software auf Mikroprozessoren durchgeführt, wobei die größte Zeit bei der Suche nach möglichst langen Übereinstimmungen der nächsten zu verarbeitenden Zeichen mit den im Suchfenster enthaltenen Zeichenfolgen benötigt wird.
  • Für diese Suche nach einem Datenwort kann gemäß der Erfindung an einen inhaltsadressierbaren Speicherbaustein ein Datenwort an den Datenbus angelegt werden. Neben der gefundenen Adresse können wenigstens zwei weitere binäre Signale ausgegeben werden, das „Match Flag" und das „Multiple Match Flag". Ein derartiger CAM-Baustein ist vereinfacht in der 1 skizziert.
  • In der 1 links oben sind die Speicheradressen mit deren Inhalt markiert. Darunter sind zeilenweise die Reaktionen des CAM-Speicherbausteins auf z.B. drei unterschiedliche Eingangsdaten angegeben. Die binären Signalzustände „Wahr" und „Falsch" sind entsprechend durch „+", bzw. „–" markiert.
  • Die üblichen CAM-Speicherbausteine besitzen dabei nur die Möglichkeit eine einzige Match-Adresse auszugeben. Stimmen mehrere Speicherinhalte mit dem angelegten Datenwort überein, kann folglich auch nur eine Adresse direkt ausgegeben werden. Die Adressen der verbleibenden übereinstimmenden Speicherzellen müssen dann durch gesonderte Verfahren ermittelt werden. Im einfachsten Fall kann das beispielsweise durch sukzessives Löschen von Speicherstellen erfolgen, deren Adressen bereits ermittelt wurden. Um den Ausgangszustand später wiederherzustellen müssten dazu abschließend die zuvor überschriebenen Speicherstellen wieder hergestellt werden. Teilweise kann eine solche Funktionalität zum Auffinden mehrfacher Adressen auch im CAM-Baustein selbst implementiert sein.
  • Ein CAM-Speicherbaustein gemäß der Erfindung besitzt z.B. einen zusätzlichen Mask-Bus, der erlaubt, die eingegebenen Daten des Datenbus zu „maskieren". Der Mask-Bus gibt dabei an, welche der für eine Suche an den Datenbus angelegten Zeichen Signifikanz hinsichtlich einer Suche nach Übereinstimmung besitzen sollen. Die Vorgehensweise ist in der 2 verdeutlicht. Wieder sind zeilenweise die Reaktionen des CAM auf die links unten angegebenen Eingangssignale dargestellt.
  • Teilweise wird der Mask-Bus seitens eines CAM-Speicherbausteins auch als Register zur Verfügung gestellt, d.h. innerhalb des CAM-Speicherbausteines existiert ein Satz programmierbarer Register, die zur Maskierung genutzt werden und die auf verschiedene Arten ausgewählt werden können. So können die Register einmal programmiert und anschließend der gewünschten Maskierung entsprechend ausgewählt werden. Ebenso können andere Realisierungsmöglichkeiten zur Maskierung vorgesehen sein.
  • Durch die Möglichkeit der Maskierung kann erfindungsgemäß auch das Auftreten von Teil-Zeichenketten, wie hier im Beispiel „abcd" in der zweiten Zeile der angelegten Daten gemäß 2 detektiert werden. Hier ist das letzte Zeichen „c" des Gesamtdatenwortes „abcdc" als nicht signifikant ausmaskiert. Die Übereinstimmung kann jedoch nur gefunden werden, wenn diese Zeichenkette an der ersten Position des Datenwortes auftritt. Die Teilzeichenkette „acde" des letzten Suchbeispiels wird ausschließlich an erster Position beginnend gesucht, das Vorkommen bei Speicherstelle/Adresse 3 mit zweiter Position beginnend wird hingegen nicht gefunden.
  • Um diesem Problem zu begegnen wird bei dem erfindungsgemäßen Verfahren jedes im Suchfenster befindliche Zeichen, zusammen mit den nachfolgenden Zeichen in einer Speicherstelle des CAM-Speicherbausteins abgelegt, d.h. das gesamte Suchfenster selbst ist in der ersten Spalte S1 der CAM-Speicherstellen enthalten. In den weiteren Spalten befinden sich die jeweils nachfolgenden Zeichen, um auch längere Zeichenketten-Übereinstimmungen detektieren zu können. Der Ablauf wird im Folgenden anhand des Beispiels in der 3 erläutert:
    Zu Codieren ist beispielsweise der Text „ABCDEFGHIJKGHIABCDE", in dem die Zeichenfolge GHI an 7. und an 12. Stelle auftaucht. Das Suchfenster umfasst hier beispielsweise 10 Zeichen, jede Speicherstelle des CAM umfasst in Beispiel 4 Zeichen. Der Text wird bevorzugt von links nach rechts vom Suchfenster durchlaufen.
  • In diesem Beispiel hat der CAM-Speicherbaustein eine Adressierungsbreite von 10, d.h. die Adressbreite entspricht der Datenbreite des Suchfensters. Dabei wurden die 10 Speicherstellen des CAM wie in der 3 oben links dargestellt befüllt. Das folgende zu codierende Zeichen in das „K". Die Arbeitsweise zur Detektion von zumindest teilweise Zeichen-Übereinstimmungen ist in der gleichen 3 darunter skizziert.
  • Links (Spalten SchreibAdresse und Inhalt) ist die Veränderung der CAM-Daten, daneben (Spalten MatchData und MaskReg) die Steuerung der Vergleichs-Funktionalität des CAM angegeben. Die Spalten Match, MultMatch und MatchAddr geben die CAM-Reaktionen (-Ausgaben) wieder. Die Spalte Length zeigt die implizit aus der gewählten Maskierung vorhandene Information über die Länge der gefundenen Übereinstimmung.
  • Im mit 1. bezeichneten Schritt wird eine der Datenwortlänge (hier 4) des CAM entsprechende Zeichenanzahl aus dem Text gelesen, d.h. an der bezeichneten Position die Zeichen „KGHI". Diese werden dem CAM als Vergleichsdaten zur Verfügung gestellt, indem diese Zeichen als Datenwort an den Datenbus des CAM angelegt werden. Das Mask-Register, wird in diesem Beispiel zur Erkennung zweier übereinstimmender Zeichen, hier also der Zeichen „KG" programmiert, indem die ersten beiden Stellen (++––) auf Signifikanz gesetzt werden.
  • Da die Zeichenfolge im CAM bisher nicht an erster Stelle beginnend enthalten ist, wird also keine Übereinstimmung gefunden. Folglich muss das „K" an der aktuellen Position als Zeichen und nicht als Kombination von Adresse und Länge codiert werden.
  • Außerdem wird im 2. Schritt das Zeichen „K" mit N-1 nachfolgenden Zeichen „GHI", also die Zeichenkette „KGHI" in den CAM aufgenommen. Wobei hier N=4 der Datenwortbreite des CAM entspricht. Im vorliegenden Fall wird dazu die Speicherstelle 0 benutzt, wodurch einerseits das nun nicht mehr relevante Zeichen A aus dem Suchfenster entfernt und andererseits die erforderliche Anzahl an Speicherstellen im CAM minimal, nämlich gerade der Größe des Suchfenster entspricht. Der CAM-Speicherbaustein wird somit als eine Art Ringspeicher eingesetzt der von vorne neu beschrieben wird, wenn das Adressende erreicht ist.
  • Das Suchfenster wird um die eine Position des nicht kodierten „K" verschoben und für die Codierung des nächsten Zeichens „G" wird nun im ordnungsgemäß verschobenen Suchfenster beginnend mit „B" und endend mit dem zuletzt geschriebenen „K" nach einer Übereinstimmung gesucht. Die Daten im Suchfenster befinden weiterhin vollständig im CAM, jedoch nun beginnend mit der Speicherposition 1 und endend mit der Speicherposition 0, d.h. es muss bei einer evtl. gefundenen Übereinstimmung immer die ermittelte Adresse des CAM in eine Position im Suchfenster umgesetzt werden, was sich jedoch z.B. durch einen einfachen Adresszähler realisieren lässt.
  • Für den mit 3. bezeichneten Schritt werden dem CAM wiederum die nächsten uncodierten Zeichen „GHIA" zum Vergleich zur Verfügung gestellt und es wird durch Maskierung nach der Zeichenfolge „GH" an erster Stelle beginnend gesucht.
  • Die mit Speicherstelle 6 vorliegende Übereinstimmung wird vom CAM erkannt und als solche ausgegeben (Match und MatchAddr). Die Länge der Übereinstimmung ist wieder durch die gewählte Maskierung bekannt.
  • Nachfolgend wird durch Veränderung der Maskierung (MaskReg) mittels einer Erhöhung der Signifikanzstellen die genaue maximale Länge der Übereinstimmung gesucht. Im vorliegenden Beispiel werden dazu sukzessiv von links nach rechts mit Signifikanzen „+" aufgefüllte Mask-Register ausgewählt oder eingesetzt, wodurch nach und nach immer längere Übereinstimmungen jeweils beginnend an der ersten Stelle gefunden werden. Andere Reihenfolgen beim Auswählen der Mask-Register sind dabei ebenfalls denkbar, um beispielsweise die Suchzeit bzw. den Suchaufwand nach der längsten Übereinstimmung zu minimieren.
  • Die gefundene Speicherstelle (hier 6) muss in Abhängigkeit der Positionierung des Suchfenster im CAM in eine Adresse bzw. Position des Suchfenster umgewandelt werden, hier 5, da das Suchfenster im betrachteten Zeitpunkt an Speicherstelle 1 des CAM beginnt und an Speicherstelle 0 endet. Die Zeichenfolge „GHI" würde im vorliegenden Fall also durch die Zahlenkombination [5,3] ( [Position,Länge]) kodiert.
  • Außerdem müssen in den Schritten 6-8 die zu den nun codierten Zeichen gehörenden Zeichenketten in den CAM aufgenommen werden, was für eine exakte Suche nach der längsten Übereinstimmung erst nach Abschluss dieser Suche durchgeführt werden darf. Zum Zwecke der Optimierung des erreichbaren Datendurchsatzes kann es jedoch sinnvoll sein von der exakten Suche abzusehen und diese Zeichenketten (Schritte 6-8) bereits vor Abschluss der Suche (Schritte 3-5) in den CAM aufzunehmen um so eine geringe Schwankungsbreite der Datenrate für die in den CAM aufzunehmenden Daten zu erreichen.
  • Das Suchfenster wird auf die beschriebene Weise (Schritte 6-8) um 3 Positionen weiterbewegt. Es beginnt nun bei CAM-Adresse 4 und endet bei 3.
  • Zum Vergleich werden anschließend vier weitere Zeichen „ABCD", beginnend mit dem ersten uncodierten Zeichen herangezogen und der Vorgang beginnt von vorn mit den Schritten 9 und 10.
  • Im hier vorgestellten Beispiel wird zur besseren Übersichtlichkeit die Datenwortbreite des CAM mit 4 Zeichen angenommen und mit der Suche nach übereinstimmenden Zeichenketten der Länge 2 begonnen. Beides sind variierbare Parameter. Bevorzugt kann eine Hardware zur Realisierung einer Daten-Kompression mit Datenwortbreiten von 18 Byte (Zeichen) eingesetzt werden, wobei gemäß GZIP- Standard mit der Suche nach übereinstimmenden Zeichenketten der Länge drei begonnen wird. Dies ist sinnvoll, da erst bei einer Übereinstimmung von 3 Zeichen die Speicherung von Adresse und Länge weniger Speicherplatz in Anspruch nimmt als die Speicherung der Zeichen selbst.
  • Zeichenketten, deren Länge die der Datenwortbreite des CAM überschreiten werden z.B. auf die im Folgenden beschriebene Weise detektiert.
  • Der im obigen Beispiel zur Kodierung eingesetzte Text wird im Beispiel der 4 zu „ABCDEFGHIJKGHIJKGHABCD" abgewandelt. Die zu detektierende Zeichenkette ist nun beispielsweise „GHIJKGH". Nach der Detektion der Übereinstimmung des gesamten an den CAM zum Vergleich angelegten Datenwortes „GHIJ" im mit 5. bezeichneten Schritt wird zunächst die erkannte CAM-Adresse „6" wie oben beschrieben in die Suchfenster-Adresse „5" überführt und zusammen mit der Längeninformation für die spätere Ausgabe z.B. zwischengespeichert.
  • Die entsprechenden Zeichenketten werden anschließend gemäß obiger Darstellung in den CAM aufgenommen, wodurch virtuell auch die Grenzen des Suchfensters innerhalb des CAM ordnungsgemäß verschoben werden. Die Verarbeitung beginnt auf die bekannte Weise von vorn, wobei diesmal auch Übereinstimmungen die lediglich ein einzelnes Zeichen umfassen erkannt werden müssen, weshalb im vorliegenden Beispiel die weitere Verarbeitung mit der Maskierung eines einzelnen Zeichens in Schritt 10 begonnen wird. Übereinstimmungen, die nach der Verschiebung des Suchfenster an gleicher Adresse des vorherigen unverschobenen Suchfensters (im vorliegenden Beispiel also 5) beginnen, können durch Addition der dabei gefundenen Längeninformation zu der zuvor abgespeicherten berücksichtigt werden.
  • Im vorliegenden Beispiel wird die Zeichenkette „GHIJKGH" folglich durch die Zahlenkombination [5,7] kodiert, wobei sich die Positionsangabe auf das noch unverschobene Suchfenster (wie bei Schritt 3 bestehend) bezieht. Auf diese Weise lassen sich übereinstimmende Zeichenketten beliebiger Länge detektieren, indem lediglich die Position der Speicherstelle überwacht und die Längeninformation zur bestehenden hinzuaddiert wird. Die Überwachung der Verschiebung des Suchfenster innerhalb des CAM wird dabei von zusätzlichen Verarbeitungseinheiten gewährleistet. Dieser Verfahrensschritt kann sich bei einer erneut gefundenen vollständigen Übereinstimmung wiederholen.
  • Die bisher gezeigten Beispiele haben sich ausschließlich mit einfach vorkommenden Übereinstimmungen beschäftigt. Beim Auftreten von Übereinstimmungen an mehreren Speicherstellen (MultMatch=+) im CAM kann durch eine zusätzliche Kontrolllogik die entsprechend günstigste Alternative ausgewählt werden. Da z.B. die Grundform der hier genannten CAM-Bausteine lediglich über die Möglichkeit verfügt genau eine Adresse (MatchAddress) auszugeben, müssen dazu zunächst nacheinander alle möglichen Adressen aus dem CAM ausgelesen werden um anschließend die Entscheidung über die Auswahl der geeigneten Alternative durchzuführen. Dies kann dadurch geschehen, dass nach der Feststellung einer Übereinstimmung die Daten an dieser Adresse gelöscht und mit der Adressinformation zwischengespeichert werden, um dann eine nächste Überprüfung auf Übereinstimmung vorzunehmen. Nachdem alle Mehrfachübereinstimmungen z.B. so ermittelt wurden können die Daten wieder an ihre ursprünglichen Adressen zurückgeschrieben werden. Teilweise kann eine solche Funktionalität zum Auffinden mehrfacher Adressen auch im CAM-Baustein selbst implementiert sein. Nach Auffinden aller Mehrfachübereinstimmungen wird nach weiteren Kriterien die günstigste Auswahl aus allen Übereinstimmungen getroffen.
  • Bei der Suche nach der längsten Übereinstimmung innerhalb eines CAM-Datenwortes spielt die Untersuchung der Mehrfachübereinstimmungen zunächst keine Rolle. Erst wenn mehrere längste Übereinstimmungen bestehen, wird sinnvollerweise diejenige ausgewählt, die die geringste Position (Adresse) innerhalb des Suchfenster besitzt, da so z.B. eine vorteilhaftere Möglichkeit zu einer späteren Kodierung mittels Huffmann-Kodierung gegeben ist.
  • Falls die Übereinstimmungen über die Länge eines CAM-Datenwortes hinausgehen, müssen zusätzlich, gemäß dem oben beschriebenen Verfahren zur Detektion längerer Übereinstimmungen, mehrere Positionen innerhalb des Suchfenster bezüglich einer Verlängerung der bereits gefundenen Übereinstimmung überwacht werden. Die gesamte hierzu notwendige Verarbeitungsfunktionalität kann von zusätzlicher Kontrolllogik in der Hardware gewährleistet werden.
  • Neben der bisher beschriebenen exakten Durchführung des Verfahrens ergeben sich durch das Zulassen nicht 100%ig optimierter Kompression verschiedene Möglichkeiten den Ablauf zu vereinfachen. So wird beispielsweise, wie bereits weiter oben erwähnt, zur Erlangung einer möglichst konstanten Schreibgeschwindigkeit in CAM-Speicherstellen die gezeigte Reihenfolge nicht exakt eingehalten. Die mit 3., 4. und 5. bezeichneten Schritte werden mit den mit 6., 7. und 8. bezeichneten verschachtelt, so dass möglicherweise noch benötigte Speicherstellen am Ende des Suchfenster bereits zu früh überschrieben werden.
  • Das kann dazu führen, dass in diesen ungünstigen Konstellationen nicht die größtmögliche Übereinstimmung gefunden wird, d.h. es wird eine kürzere Zeichenfolge durch die zu erzeugende Zahlenkombination [Position,Länge] beschrieben, als im Optimalfall möglich gewesen wäre. Da dieser Fall, insbesondere bei großem Suchfenster (bei GZIP 32768 Zeichen) jedoch äußerst selten auftritt, kann durch eine Vernachlässigung derartiger Fehler eine erhebliche Steigerung der Verarbeitungsgeschwindigkeit erreicht werden.
  • Ähnliches gilt für eine unzulängliche Behandlung beim Auftreten mehrfacher Übereinstimmungen. Wird hier lediglich die einzige direkt vom CAM ausgegebene Adresse genutzt, so kann es vorkommen, dass nicht die längste im Suchfenster vorkommende Übereinstimmung gefunden wird, oder dass die Adresse innerhalb des Suchfenster zu groß gewählt wird, also günstigere Position-Längen-Paare existieren.
  • Der Einfluss dieser Unzulänglichkeit hängt dabei von der Datenwortbreite des gewählten CAM-Bausteines ab. Je größer die Datenwortbreite ist, desto geringer ist die Wahrscheinlichkeit des Auftretens von Mehrfachübereinstimmungen. Bei ausreichend großer Datenwortbreite kann der Einfluss dieser Unzulänglichkeiten vernachlässigt werden. Insbesondere in Anbetracht der dabei einzusparenden Hardware-Ressourcen werden so günstige Realisierungen ermöglicht.
  • Die oben genannten Datenwortbreiten von z.B. 4 beim CAM und 10 im Suchfenster sind lediglich exemplarisch angegeben. Die beispielhaft beschriebenen Ausführungen gelten ebenso für beliebige andere Datenwortbreiten des CAM bzw. des Suchfensters.
  • In einer vorteilhaften Weiterentwicklung können CAM-Adressen durch eine gezieltere spezielle Mask-Programmierung eingespart werden wodurch ebenfalls ein Geschwindigkeitsvorteil erreicht wird.
  • Die bisherige Beschreibung der Erfindung geht von der Bereitstellung einer Speicheradresse für jedes Zeichen des Suchfenster aus, wodurch letzteres in der ersten Spalte der CAM-Speicherstellen auftritt und die Anzahl benötigter Speicherstellen der Größe des Suchfenster entspricht.
  • Werden die ersten beiden Spalten auf diese Weise zur Speicherung des Suchfensters genutzt, so reduziert sich diese Anzahl der benötigten Adressen auf die Hälfte. In der ersten Spalte finden sich demnach die geraden und in der zweiten Spalte die ungeraden Zeichen-Positionen innerhalb des Suchfenster. Zur Detektion von Übereinstimmungen muss dazu allerdings eine komplexere Maskierung vorgenommen werden. Die 5 zeigt die Vorgehensweise anhand des zuerst vorgestellten Beispiels.
  • Diesmal wird nur jede zweite auftretende Kombination von vier-elementigen Zeichenketten im CAM abgespeichert. Dies läßt sich verallgemeinern auf jede m-te Kombination von k-elementigen Zeichenketten. Folglich ist das Suchfenster nun in diesem Beispiel in den ersten beiden Spalten der CAM-Speicherstellen enthalten. Zur Detektion muss das Mask-Register einmal an erster und einmal an zweiter (m-te) Stelle beginnend programmiert werden. Die Reihenfolge der Überprüfung, d.h. die Programmierung des Mask-Registers geschieht dabei so, dass unter Berücksichtigung der bereits überprüften Übereinstimmungen ausschließlich überhaupt noch mögliche Positionen überprüft werden.
  • Im angegebenen Beispiel kann in dem mit 3. bezeichneten Schritt direkt die Maskierung „–+++" gewählt werden, ohne „+++–" testen zu müssen, da das Ergebnis des letzteren nach der Überprüfung von „++––„ im mit 1. bezeichneten Schritt bereits bekannt ist.
  • Diese Vorgehensweise zur Reduktion des CAM-Speicherbedarfs lässt sich beliebig fortsetzen, bis nur noch eine einzelne Speicherzelle im CAM genutzt wird, die das gesamte Suchfenster als ein langes Datenwort aufnimmt, wobei die Maskierung zur Überprüfung von Übereinstimmungen mit jeder Stelle im langen Datenwort beginnend programmiert werden muss.
  • In einer weiteren bevorzugten Ausbildung kann es vorgesehen sein die aufwendige Programmierung der Maskierung zur Detektion der längsten Übereinstimmung entfallen zu lassen, wenn ein CAM benutzt wird, der die Funktionalität einer Detektion der längsten Übereinstimmung hardwareseitig besitzt, d.h. wenn der CAM angewiesen werden kann direkt die Speicherstelle mit der längsten Übereinstimmung auszugeben.
  • Weiterhin kann die Suchreihenfolge auf Basis statistischer Eigenschaften des zu komprimierenden Textes optimiert werden.
  • Durch Berücksichtigung der statistischen Eigenschaften des Textes, ob dieser beispielsweise vorwiegend längere oder kürzere übereinstimmende Zeichenketten besitzt, kann eine weitere Optimierung erreicht werden. Die im ersten Beispiel vorgestellte sukzessive Auffüllung der Maskierung von links nach rechts könnte beispielsweise dahingehend abgewandelt werden, dass häufig vorkommende Längen schneller überprüft werden als seltener vorkommende. Die Reihenfolge der Überprüfung wird dabei durch Anpassung an die gegebenen oder ermittelten statistischen Zusammenhänge festgelegt.
  • In einer anderen Weiterbildung ist es vorgesehen die Datenübertragungsrate in den CAM zu maximieren.
  • Durch den speziellen Aufbau eines CAM vergehen üblicherweise von der Eingabe von Daten zur Speicherung (Anlegen der Information an den Dateneingang) bis zur Möglichkeit, diese Daten bei der Suche zu berücksichtigen mehrere Taktperioden, wobei in aufeinander folgenden Takten eingegebene Daten auch in aufeinander folgenden Takten zur Suche zur Verfügung stehen. Suchoperationen können gleichzeitig dazu durchgeführt werden.
  • Für eine bestmögliche Erkennung von Zeichenübereinstimmungen, wie sie im ersten Beispiel durchgeführt wurde, muss dabei eine Speicherung von Daten (Schritte 6-8) so vorgenommen werden, dass die laufende Suche (Schritte 3-5) ordnungsgemäß abgeschlossen wird, bevor relevante CAM-Speicherstellen durch die Schreiboperation überschrieben werden.
  • Für eine optimierte Verarbeitungsgeschwindigkeit muss die durch die Schreiboperation verursachte Verzögerung möglichst durch antizipierte Initiierung der Schreiboperation kompensiert werden, d.h die Schreiboperation wird um so viele Takte im Voraus initiiert, dass die Wirksamkeit der geschriebenen Daten direkt nach Abschluss der Suche sichergestellt wird. Letzteres ist nur möglich, wenn der Zeitpunkt für den Abschluss der Suche a priori bekannt ist, was dem Ziel der Verkürzung der zur Suche benötigten Zeit widerspricht.
  • Wird vom Erfordernis der korrekten Suche abgegangen, so kann die zeitliche Abfolge durch frühzeitige Initiierung des Schreibvorgangs optimiert werden, wodurch dann allerdings teilweise CAM-Speicherstellen zu früh überschrieben werden können, so dass sich ein kleineres effektives Suchfenster ergibt. Diese fehlerhafte Behandlung tritt allerdings nur dann in Erscheinung, wenn eine im Suchfenster weit zurück, genauer am Ende des Suchfenster liegende Zeichenkette im aktuellen Text auftaucht. Da dieser Fall in der Realität nur sehr selten auftaucht können entsprechende Fehler, insbesondere im Hinblick auf die gesteigerte Verarbeitungsgeschwindigkeit toleriert werden.
  • Die Anwendung des GZIP-Algorithmus geschieht softwaremäßig sehr häufig auf Basis der so genannten zlib-Library, d.h. zur Nutzung GZIP-basierter Datenkompression muss der Kompressionsalgorithmus selbst nicht in einer Software implementiert werden, sondern es kann auf eine bestehende Realisierung der benötigten Algorithmen in dieser Library zurückgegriffen werden.
  • Viele bekannte Softwareprodukte bedienen sich entsprechend der zlib-Library. Durch eine Modifikation dieser Library, so dass die Datenkompression in Hardstatt in Software durchgeführt wird falls GZIP-Accelerator Hardware zur Verfügung steht profitiert jegliche auf der zlib-Basierende Software ohne Modifikation vom Einsatz der GZIP-Hardwarebeschleunigung. Da sich in Multitasking-Umgebungen die Hardware nicht wie Software beliebig duplizieren lässt, wird dazu eine Kontrollinstanz eingeführt, die die Reihenfolge verschiedener Kompressionsaufträge durch die zlib-Library festlegt.

Claims (16)

  1. Verfahren zur Kompression einer Zeichenkette aus aufeinanderfolgenden Zeichen, insbesondere gemäß dem LZ77-Standard, bei dem eine längste Übereinstimmung zu kodierender Zeichen mit dem Dateninhalt eines inhaltsadressierbaren Speicherbausteines gesucht wird, und im Fall der Übereinstimmung die übereinstimmenden Zeichen wenigstens in Abhängigkeit ihrer Adresse im Speicherbaustein und der Länge der Übereinstimmung kodiert werden, dadurch gekennzeichnet, dass an einen Datenbus eines maskierbaren inhaltsadressierbaren Speicherbausteins mehrere zu komprimierende Zeichen als wenigstens ein Datenwort angelegt werden und wenigstens eine Übereinstimmungen wenigstens einer Teilmenge dieser Zeichen mit dem Dateninhalt des Speicherbausteins durch eine Maskierung des Datenbusses gesucht wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass zur Komprimierung ein Suchfenster vorgegebener Datenwortbreite sukzessive über die zu verarbeitende Zeichenkette verschoben wird und die Zeichen im Suchfenster in den Speicherbaustein abgelegt werden und eine Übereinstimmung einer Anzahl von vor dem Suchfenster angeordneten Zeichen mit in dem Speicherbaustein abgelegten Zeichen gesucht wird.
  3. Verfahren nach Anspruch 2 dadurch gekennzeichnet, dass jedes im Suchfenster befindliche Zeichen zusammen mit (N-1) nachfolgenden Zeichen in einer Speicherstelle des Speicherbaussteines abgelegt wird, wobei der Speicherbaustein eine Datenwortbreite von N ausweist.
  4. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass zur Komprimierung eines oder mehrerer Zeichen ein Datenwort aus einer der Datenwortlänge des Speicherbausteines entsprechenden Anzahl von Zeichen aus der Zeichenkette vor dem Suchfenster an den Datenbus des Speicherbausteines zur Prüfung wenigstens einer Teilübereinstimmung angelegt wird.
  5. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass insbesondere nach der Prüfung einer Übereinstimmung eine Schreiboperation initiiert wird, bei der bei einer gefundenen (Teil-)Übereinstimmung jedes der einzelnen Zeichen aus einer übereinstimmenden (Teil-)Zeichenkette zusammen mit N-1 nachfolgenden Zeichen in einer Adresse des Speicherbausteines abgelegt wird.
  6. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass bei einer nicht festgestellten Übereinstimmung das vor dem Suchfenster erste Zeichen als Zeichen selbst kodiert wird, zusammen mit (N-1) nachfolgenden Zeichen in einer Speicherstelle des Speicherbaussteines abgelegt wird und das Suchfenster um eine Position weiter verschoben wird.
  7. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass bei einer Übereinstimmung zumindest einer Teilzeichenkette der N Zeichen aus der ermittelten Adresse der Teilzeichenkette im Speicherbaustein die Position der Teilzeichenkette im Suchfenster ermittelt wird und die Teilzeichenkette kodiert wird wenigstens durch die Position und die Länge der Übereinstimmung, wonach das Suchfenster um die Länge der Übereinstimmung weiterverschoben wird und wobei jedes der einzelnen Zeichen aus der übereinstimmenden Teilzeichenkette zusammen mit N-1 nachfolgenden Zeichen in einer Adresse des Speicherbausteines abgelegt wird.
  8. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass bei einer Übereinstimmung aller Zeichen aus der ermittelten Adresse der Zeichen im Speicherbaustein die Position der Zeichen im Suchfenster ermittelt wird und die Zeichen kodiert werden wenigstens durch die Position und die Datenwortbreite, wonach das Suchfenster um die Datenwortbreite weiterverschoben wird und wobei jedes der einzelnen Zeichen aus dem Datenwort zusammen mit N-1 nachfolgenden Zeichen in einer Adresse des Speicherbausteines abgelegt wird.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass bei einer festgestellten Übereinstimmung wenigstens einer Teilzeichenkette im Anschluß an eine vollständige Übereinstimmung, die Länge der vorherigen vollständigen Übereinstimmung um die Länge der festgestellten Übereinstimmung inkrementiert wird und das Suchfenster um die Länge der Übereinstimmung weiterverschoben wird und jedes einzelne der übereinstimmenden Zeichen zusammen mit N-1 nachfolgenden Zeichen in einer Adresse des Speicherbausteines abgelegt wird.
  10. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass bei festgestellten mehreren längsten Übereinstimmungen an mehreren Speicherstellen die Übereinstimmung mit der geringsten Position innerhalb des Suchfensters zur Kodierung ausgewählt wird.
  11. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass die Zeichen innerhalb des Suchfensters unter einer einzigen Adresse in einen Speicherbaustein mit einer Datenwortbreite abgelegt wird, die der Suchfensterbreite entspricht.
  12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass die Maskierung des Datenbusses derart erfolgt, dass die Prüfung auf (Teil-)Übereinstimmungen beginnend mit jeder Stelle im Datenwort programmiert wird.
  13. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass Maskierung in Abhänggkeit von statistischen Eigenschaften der Zeichenkette erfolgt, insbesondere dass häufiger vorkommende Zeichenlängen eher geprüft werden.
  14. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass eine Schreiboperation, bei der wenigstens ein Zeichen zusammen mit N-1 nachfolgenden Zeichen in einer Adresse des Speicherbausteines abgelegt wird vor Abschluß einer Suche nach Übereinstimmungen derart begonnen wird, dass die in den Speicherbaustein geschriebenen Zeichen bereits direkt nach Abschluß der Suche für die nächste Suche zur Verfügung stehen.
  15. Vorrichtung umfassend einen inhaltsadressierbaren Speicherbaustein und eine Kontrollelektronik zur Durchführung eines Verfahrens nach einem der vorherigen Ansprüche.
  16. Vorrichtung nach Anspruch 15, dadurch gekennzeichnet, dass sie eine Schnittstelle zur Datenkommunikation mit einer Datenverarbeitungsanlage aufweist, die zu komprimierende Daten an die Vorrichtung zur Verfügung stellt und gemäß dem Verfahren nach einem der vorherigen Ansprüche komprimierte Daten zurückerhält.
DE2003110858 2003-03-11 2003-03-11 Verfahren und Vorrichtung zur Kompression einer Zeichenkette Withdrawn DE10310858A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE2003110858 DE10310858A1 (de) 2003-03-11 2003-03-11 Verfahren und Vorrichtung zur Kompression einer Zeichenkette

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2003110858 DE10310858A1 (de) 2003-03-11 2003-03-11 Verfahren und Vorrichtung zur Kompression einer Zeichenkette

Publications (1)

Publication Number Publication Date
DE10310858A1 true DE10310858A1 (de) 2004-09-23

Family

ID=32892101

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2003110858 Withdrawn DE10310858A1 (de) 2003-03-11 2003-03-11 Verfahren und Vorrichtung zur Kompression einer Zeichenkette

Country Status (1)

Country Link
DE (1) DE10310858A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117273764A (zh) * 2023-11-21 2023-12-22 威泰普科技(深圳)有限公司 一种电子雾化器防伪管理方法及***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5771011A (en) * 1996-07-15 1998-06-23 International Business Machines Corporation Match detect logic for multi-byte per cycle hardware data compression
US5838264A (en) * 1994-12-29 1998-11-17 Unisys Corporation Method and apparatus for performing LZW data compression utilizing an associative memory
US6154384A (en) * 1999-11-12 2000-11-28 Netlogic Microsystems, Inc. Ternary content addressable memory cell
WO2001056169A1 (en) * 2000-01-25 2001-08-02 Btg International Limited Data compression having improved compression speed

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838264A (en) * 1994-12-29 1998-11-17 Unisys Corporation Method and apparatus for performing LZW data compression utilizing an associative memory
US5771011A (en) * 1996-07-15 1998-06-23 International Business Machines Corporation Match detect logic for multi-byte per cycle hardware data compression
US5929791A (en) * 1996-07-15 1999-07-27 International Business Machines Corporation Match detect logic for multi-byte per cycle hardware data compression
US6154384A (en) * 1999-11-12 2000-11-28 Netlogic Microsystems, Inc. Ternary content addressable memory cell
WO2001056169A1 (en) * 2000-01-25 2001-08-02 Btg International Limited Data compression having improved compression speed

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
BENSCHOP,L.C.: Lossless Data Compression in VLSI. TU Eindhoven NL 1997, ISBN 90-286-0400-9, http://www.xs4all.nl/-len-nartb/ thesis.ps.gz) (rec.H.24.4.2003 *
BENSCHOP,L.C.: Lossless Data Compression in VLSI. TU Eindhoven NL 1997, ISBN 90-286-0400-9, http://www.xs4all.nl/-len-nartb/ thesis.ps.gz) (rec.H.24.4.2003;
KJELSO,M.,et.al.: Design and Performance of a Main Memory Hardware Data Compressor. In: Euromicro 1996, Beyond 2000: Hardware and Software Design Strategies. Proceedings of the 22nd EUROMICRO Con- ferenc, 2-5 Sep. 1996,S.423-430, *
NUNEZ,JosÑ Luis, et.al.: The X-MatchLITE FPGA-Based Data Compressor. In: Euromicro Conference, 1999, Proceedings 25th,Vol.1,S.126-132 *
NUNEZ,Josñ Luis, et.al.: The X-MatchLITE FPGA-Based Data Compressor. In: Euromicro Conference, 1999, Proceedings 25th,Vol.1,S.126-132;

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117273764A (zh) * 2023-11-21 2023-12-22 威泰普科技(深圳)有限公司 一种电子雾化器防伪管理方法及***
CN117273764B (zh) * 2023-11-21 2024-03-08 威泰普科技(深圳)有限公司 一种电子雾化器防伪管理方法及***

Similar Documents

Publication Publication Date Title
DE2210044C2 (de) Verfahren zum Umsetzen von Codewörtern
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE3038639C2 (de) Anordnung zur Datenübertragung zwischen einer Zentraleinheit und n E/A-Einheiten
EP0230437B1 (de) Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchführung des verfahrens
DE69722085T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Botschaften
DE2801611A1 (de) Verfahren und anordnung zum adressieren und speichern von daten in speichern mit wahlfreiem zugriff
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE2524046A1 (de) Elektronische datenverarbeitungsanlage
DE2432608A1 (de) Speicheranordnung fuer datenverarbeitungseinrichtungen
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE2926322A1 (de) Speicher-subsystem
DE3742142C2 (de)
DE3333366A1 (de) Aufloesungsnetzwerk fuer zuletzt erfolgte benutzungen
EP1139603A1 (de) Verfahren und Vorrichtung zur Analyse von Daten
DE19645057C2 (de) Vorrichtung zur Selektion von Adressenwörtern mittels Demultiplex-Decodierung
DE10310858A1 (de) Verfahren und Vorrichtung zur Kompression einer Zeichenkette
EP0453609B1 (de) Verfahren zum Testen einer kleinsten adressierbaren Einheit eines RAM's auf über einer bestimmten Zahl liegende Bitfehler
DE2702586C3 (de) Schaltungsanordnung zum Steuern des Speicherzugriffs bei einem Rechner
DE4435457C2 (de) Verfahren zum Archivieren von Prozeßdaten
DE4342521C1 (de) Verfahren und Anordnung zur Expansion komprimierter Daten
EP0427884A1 (de) Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten
EP0108261B1 (de) Logikanalysator
EP1091290B1 (de) Prozessorsystem mit Speicher- oder Ladebebefehl mit Trenninformation
DE1474041C3 (de) Anordnung zum Sortieren von in zufälliger Reihenfolge aufgenommener Informationsbit Gruppen

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
8139 Disposal/non-payment of the annual fee