DE10310858A1 - Character string compression method for compressing computer data, whereby data on a data bus to a memory component is compared with data stored in the memory to find the longest possible match - Google Patents

Character string compression method for compressing computer data, whereby data on a data bus to a memory component is compared with data stored in the memory to find the longest possible match 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
German (de)
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/en
Publication of DE10310858A1 publication Critical patent/DE10310858A1/en
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

Abstract

Method for compressing a character string, especially according to the LZ77 standard, whereby on a data bus connecting to a maskable content addressable memory component, a number of compressible characters are configured as at least a data word and at least a matching of at least a partial quantity of these data characters with the data content of the memory by masking of the data bus is searched for. The invention also relates to a corresponding device for implementation of the inventive method.

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.The invention relates to a method and a device for compressing a character string from successive ones Characters, especially according to the LZ77 standard or the GZIP standard, with the longest match Character to be encoded with the data content of a content addressable Memory module is searched for and in the case of a match the matching ones Characters at least depending their address in the memory chip and the length of the match are encoded.

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.For compressing data e.g. Different methods often come from a character string used both individually and in combination with each other can be used. For example, the Huffman coding and a dictionary based Compression, which in its basic idea follows the LZ77 compression.

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.The combined use of such procedures is due to the widespread compression according to the GZIP standard known, which provides for implementation in software. Here will first a dictionary based Compression according to the LZ77 standard carried out, after which the encoded data continue to be subjected to Huffman encoding.

Hierbei fällt bei einer Lösung auf üblichen Rechnersystemen der sehr hohe Rechenbedarf und der damit einhergehende große Zeitbedarf als nachteilig auf.In this case, a solution falls on conventional computer systems the very high computing requirements and the associated large amount of time as a disadvantage.

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.In addition to the compression mentioned above The LZ77 standard also includes other processes in accordance with the LZ78 standard known as well as further developments, such as LZW compression, these methods are based on ideas from Lempel and Ziv or Welch. With these types of encoding, dictionaries are used that come from the compressing data itself are formed. In connection with of the present invention are under words or data words sequential combinations of any characters, e.g. Bytes, understood. The data words can therefore any length exhibit.

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.Basic idea of the compression standards mentioned is a data word to be compressed within the dictionary to search for and, if a match is found, the one to be compressed Word by its address, i.e. essentially its position in Dictionary too replace, which can achieve compression if the address of a word to be compressed in the dictionary with fewer characters, than would be necessary to display the data word itself.

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.With compression according to the LZ78 standard this becomes the dictionary from a data stream to be compressed, in particular sequential self-educated. The starting point is a dictionary in which initially only all sorts Single characters as words are listed. Subsequently then combinations appearing sequentially in the data stream from already in the dictionary listed words and single characters are added to the dictionary as newly found longer words. In this way, two are first Characters encompassing words added. The length the as words character strings to be recorded is increasing so that gradually longer ones words and word strings in the dictionary be included. Thus, in particular complex long word strings after finding them in the dictionary by a much shorter one Addressing replaced and thus compressed.

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.In contrast, with the LZ77 standard dictionary from already processed data. Joined a combination of characters a length of three or more characters in the past, data that has already been processed, is indicated by a Save the length and the position of the string relative to the one currently being processed Characters achieved a data reduction. The dictionary has the LZ77 standard a constant size and usually exists from an over the search windows to be encoded or data to be moved, which is a constant number based on the current position of past Character includes. Accordingly, such a search window can, for example 32,768 characters in the past include.

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.The LZ78 and the LZ77 standard differ is therefore significant in that the LZ78 standard is new words to be recorded just added continuously with all existing entries including their addresses persist while the LZ77 standard is based on a dynamically changing dictionary of constant size, where the addresses of the words go through permanently change the moving window.

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.The various compression standards mentioned and also the Huffman coding are the relevant Adequate specialist known, so a closer discussion is unnecessary here.

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.Data compression, in particular according to the LZ77 standard, has so far been carried out predominantly in software on microprocessors, the greatest time being required in the search for the longest possible matches of the next characters to be processed with the character strings contained in the search window. This search in particular can be implemented using a special form of a memory chip, namely a content-addressable memory. Such a memory module is also called CAM (content addressable memory). Such a memory is often also referred to as associative memory. This type of memory can be used to add a given string to the data bus of that memory is created to maintain its position in the memory, ie a CAM memory module has a causality sequence reversed to a conventional RAM (random access memory). While an address is being applied to the address bus of a RAM memory in order to read it out, a content is being applied to the CAM memory in order to obtain the associated address, if it exists. However, the writing of a CAM memory with data content is principally done in the same way as with the conventional RAM memory modules.

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.A hardware-based compression method according to the LZW standard is, for example, from the patent US 5,838,264 known. In the method known there, individual data, in particular characters, the size of a byte are applied to the data bus of an above-mentioned content-addressable CAM memory module in order to then obtain a possible address within the memory by means of the hardware check within the CAM module. In order to obtain a longest match of character strings with the content of the dictionary stored in the CAM module, even in the LZW method, it is provided in the known method to continue to add more and more individual characters to the data bus of the CAM module until that no more correspondence with the content of the memory chip can be determined. For example, the addresses received after each character created and the number of characters created until no more matches were found can result in compression according to the LZW standard.

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.In the known method it as distracting and disadvantageously felt that successively to the CAM memory chip Individual characters must be created in order to successively match to consider, until no further match more occurs. Despite the hardware being implemented, this requires Address search for a single character requires a considerable amount of software, since one character at a time from an input data stream must be created and checked in the data register of the CAM.

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.The object of the invention is To provide methods and apparatus by means of which simple Way several characters to be compressed (i.e. data words) on a possible complete or partial agreement checked with the content of a dictionary stored in a CAM module can, in particular also the determination of matches a length larger than 1 hardware-based.

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.This object is achieved according to the invention solved, that to a data bus of a maskable content addressable Memory block of several characters to be compressed at the same time are created as at least one data word and matches at least a subset or all of these characters with the data content this memory module is sought by masking the data bus become.

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.A device with a content addressable Memory module and control electronics for the corresponding Control and implementation of the Accordingly, the method according to the invention has a content-addressable Memory block of a known type that can be masked according to the invention is, i.e. allows masking of the data bus, which is within the scope of this invention means that by masking the locations of the data bus created data word can be selected, their correspondence to be checked with the data within the memory chip. In the case of a data word made up of several characters, it can be significant the one to be considered in the search Characters can be determined.

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.The data bus can be masked here for example about a separately provided masking bus, masking register or other masking devices can be provided on the CAM memory module according to the invention. A masking device accordingly indicates which of the for one Search for characters to be considered on the data bus should own and can have hardware through control logic or software can be programmed.

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.Compared to the above status the technology in which only the agreement of one individual Character or when creating a longer one Data word just a complete match the data word with the memory content can be determined, offers the solution of the invention particular advantage that due to a reduced significance, i.e. a reduction of all characters to be found within one Data word on only a part of characters within the data word only the occurrence of a substring in the memory block can be determined.

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.With such a device according to the invention and the method according to the invention there is therefore a particularly simple possibility of a longest match of the characters applied to the data bus with those within the memory chip find.

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.In addition to the address, which is a content addressable Provides CAM memory module after creating a data word, can also others, especially binary ones Signals are output which are e.g. a so-called “match Flag "and a" multiple Match Flag ". While that Match Flag indicates the existence of any match the multiple match flag above whether matches occur at multiple memory addresses.

Mit dem Verfahren und der Vorrichtung können hardwaremäßig alle Kompressionsstandards durchgeführt werden, bei denen eine längste Übereinstimmung gefunden werden muss.With the method and the device, all compression standards can be implemented in terms of hardware, in which a longest over must be found.

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.To with the method and the device according to the invention for example to implement compression according to the LZ77 standard, it can be provided that for compression in a specialist known way a search window of predetermined data word width successively over the character string to be processed is moved, but now according to the invention in return from a pure software-based solution, the characters are hardware-based be stored in the memory module within the search window and an at least partial match of one Number of characters arranged in front of the search window with those in the memory block stored characters is searched.

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.The execution of a compression after the LZ77 standard can accordingly with the inventive method and the device can be carried out hardware-based, since all data or characters within the search window that act as a variable dictionary serve, inscribed in the content-addressable memory chip be and there for a hardware comparison with characters in front of the search window are available stand. It is preferred for a comparison step the number of characters from in front of the search window arranged characters selected such that the data word width of the content-addressable memory chip equivalent.

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.If such a data word is sent to the Data bus of the memory chip cannot be created, a complete and all matches in between according to the masking chosen being found.

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.In this case, it is particularly advantageous if each character in the search window along with N-1 trailing Characters in one memory location, especially in successive ones Storage locations of the memory chip is stored, the Memory chip has a data word width of N. So far when selecting, for example, N characters to be compressed a partial match with appropriate masking until a complete match can be found at a single address of the memory chip.

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.In order to hardware compression of a or several characters can be reached accordingly or several characters as a data word from one of the data word lengths of the memory chip corresponding number of characters from the string in front of the search window to the data bus of the memory module for checking at least one partial match by means of an appropriate masking.

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.For example, with one Data word consisting of a total of N characters initially a partial match in only one, namely e.g. the first character, checked by using a mask the masking bus or masking register is selected in such a way that only this first character is chosen as significant and the N-1 characters remaining are chosen to be insignificant.

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.Already with this test the least significance, no match for this individual Character with a character in the first position of any address of the memory module, this first character must be as Characters are encoded themselves and compression is not possible. In In this case, especially after the test, the symbol is displayed together with N-1 subsequent characters in a memory location of the memory chip filed and the search window moved one position. Thus, the entire content of the search window that has now been moved is displayed again available in the memory block.

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.Will there be a match in the significant If jobs are found, further longer matches are sought by that the significance is increased by a selected masking, for example, that the second character on the data bus is switched to significance, whereas N-2 others follow Characters remain chosen as not significant. In this manner and way can by increasing the significance after a longest match at least a substring from the characters created on the data bus be determined.

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.With the match found at least one partial character string of those applied to the data bus N characters can be hardware by the CAM memory chip the address of this substring within the memory chip be determined, the length of agreement is automatically implicitly known by the masking selected.

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.According to the method according to the invention from the determined address the position of the substring relative to the search window to determine compliance with the LZ77 standard to reach. The substring found in the memory chip can therefore according to the rules of the LZ77 standard, i.e. at least by the position within the search window and the length of the match.

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.After finding the longest match the search window according to the invention the length of agreement shifted further on the character string to be encoded, whereby in a write operation of each of the individual characters from the matching one Substring together with N-1 subsequent characters in turn in successive addresses of the Memory block is stored, the previous character contents overwritten at these addresses become.

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.Accordingly, the content of the search window is again completely mapped within the CAM memory module, but this Search window begins with a shift according to the LZ77 standard to different addresses within the CAM module. Since the start of the search window within the CAM module is controlled by electronics or software, it is easily possible to infer the position within the search window from the determined address of a character string within the CAM module.

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.Because the memory chip is usually has only a limited number of storage locations, this number preferably at least the length in particular exactly the length of the search window, it is provided that when registering a new data word in the memory block an old data word overwritten from the memory block becomes. For this purpose, the memory module in the sense of a Ring memory described.

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.If there is a match with the method according to the invention all characters determined from the data word applied to the data bus, this way, the determined address becomes the characters in the memory block again the position of the characters in the search window and the Characters at least by this position and the data word width (= Length full agreement) encodes, after which the search window is further shifted by the data word width and and each of the individual characters is composed of the data word with N-1 following characters in successive addresses of the memory chip is filed. Accordingly, there are N new data words in the Memory chip written, where N old data words in the sense of the ring memory structure from the memory module are eliminated.

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.If all are found to be the same Sign, there is still a chance that the following data word within the character string also a partial or full match exists, so in this case if a match is found at least one substring following a full match the length the previous full match around the length the currently determined match is incremented and the determined current address e.g. is discarded.

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.Furthermore, the search window turns around the length of agreement moved further and put together each of the matching characters with N-1 following characters in an address of the memory chip stored.

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.If several times in succession full matches of the entire data word applied to the data bus with the content of the Memory module is determined, the process step the incrementing of the determined length is repeated several times in succession, where for coding the position relative to the search window at the first complete agreement preserved.

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.Are with the inventive method and the device has multiple longest matches found at different addresses, for example by the multiple match flag of the CAM memory module can be displayed, it is preferably provided that there is a match with the lowest Position within the search window is selected for coding. This justifies that in a later, possibly further subsequent Huffman coding a better complementary compression can be achieved.

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.According to the method and the device it can also be provided that the characters within of the search window only at a single address within of the CAM memory module is stored, this one data word width that corresponds to the search window width. In this case a coding not by an address and a length in the actual, above sense can be determined, however, persists the possibility by a selected one special masking of the data bus to carry out a check for at least partial matches. in this connection can have a mask beginning with every single digit within of a data word can be programmed. This also results a special speed advantage because the CAM module only must be described once and then several tests can be carried out.

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.For example, the the first position within the data word should be masked as significant, whereupon if a match is found successively the other digits were switched to a high level of significance be until no further match is detected. Because at the first position of the data word with the Programming a high level of significance can start at a partial match found the substring found can be encoded in front of the search window at address 1 and length the programmed significance masking. Furthermore, then according to the inventive method whether, for example, matches begin from the second and subsequent positions within the Search window or the address of the memory chip are available and whether the match is bigger than that previously determined.

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.For this purpose, if, for example, the search is to start from the second position within the search window, the first position is first masked out, ie switched to no significance, where the second position is masked in or switched to high significance. If a match is found, the process of successively increasing the significance continues from the second position, until the longest match was found from the second digit. Accordingly, a partial character string found is then encoded by address 2 and the length of the significance programming. Accordingly, this procedure can be continued for all other positions within the search window. From all the matches found for each position, the one with the greatest length is selected for coding.

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.To optimize the hardware compression according to the invention it can be provided that the masking is dependent on statistical Properties of the string. For example, it can be provided be that more common occurring character lengths be checked when programming the masking rather than, for example not that often occurring character lengths.

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.A speed advantage can can also be achieved in that a write operation in which at least one character along with N-1 subsequent characters in an address of the memory chip is stored before completion a search for matches is started in such a way that the written in the memory block Signs for the next search as soon as the search is completed to disposal stand.

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.This optimization is based on that usually only after a completed check for maximum matches the matching one String is written into the memory chip, but what required several clock cycles of the controlling electronics, so that before the start of one new search normally waits for this number of clock cycles must be done, because only then the newly written data word or the shifted search window in memory is available for the next search according to matches. In order to optimize this, it is according to the method according to the invention furthermore, this write operation already provided a corresponding one Number of clock cycles to start before completing the search so that the new word written into the memory block at the end of the conducted Search immediately available stands without waiting for a certain number of clock cycles must become.

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.This can cause an error that occur before the actual completion of the search for match a data word falls out of memory, which is a match would have shown however, in spite of this eventual result Loss of compression considerable time savings in the search.

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.The method according to the invention can be advantageous performed with a device be a content-addressable memory chip already described and control electronics for controlling the memory module provides. Such a device can, for example, be an interface for data communication with a data processing system, which provides the data to be compressed to the device and according to the procedure then as compressed data back receives.

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 this way, e.g. a plug-in card for common computer systems can be realized so that an LZ77 compression within a Computer system can be implemented on the hardware side. GZIP compression can accordingly can be realized by first hardware performed the LZ77 compression and then Huffman coding is either software-based or also hardware-based he follows. Accordingly, they result from the hardware-based Realization of the compression considerable speed advantages especially when sending data over telecommunication networks, such as the Internet.

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.For example, in an application a host computer, e.g. a web server, data to be compressed provide. The data stream can go through the PCI bus of this computer to a device according to the invention transported and compressed in this. You can do this from any software the data to be compressed via the Interface transferred into the device according to the invention after which the software gets the compressed data back. The Sequence of writing and reading the data to and from the device according to the invention can in the usual ways and ways that are realized by the specialist in electrical engineering and computer technology are known.

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.As mentioned, it is according to the method according to the invention and according to the device according to the invention provided after a done LZ77 compression apply any other compression methods to the output data stream. By one afterwards Huffman coding can accordingly achieve compression according to the GZIP standard become.

Ausführungsbeispiele der Erfindung sind in den nachfolgenden Abbildungen dargestellt. Es zeigen:Embodiments of the invention are shown in the following illustrations. Show it:

1: eine schematische Darstellung eines CAM-Speicherbausteines mit verschiedenen Eingangsdaten zur Prüfung auf Übereinstimmung; 1 : a schematic representation of a CAM memory module with different input data for checking for agreement;

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; 2 a schematic representation of a CAM memory module with the possibility of masking with various input data for checking for partial correspondence by selecting the significance point in the data word created;

3: ein Beispiel einer Kodierung durch Suche nach eine längsten Übereinstimmung; 3 : an example of coding by searching for a longest match;

4: ein Beispiel einer fortgesetzten Kodierung nach einer vorherigen vollständigen Übereinstimmung; 4 : an example of a continued encoding after a previous full match Mood;

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. 5 : An example of a method for saving memory addresses in the CAM memory module and for increasing the speed The data compression according to the LZ77 standard has so far been carried out predominantly in software on microprocessors, the greatest time in the search for the longest possible matches of the next characters to be processed with the strings contained in the search window is required.

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.For this search for a data word, according to the invention, a data word can be applied to the data bus on a content-addressable memory chip. In addition to the address found, at least two further binary signals can be output, the “match flag” and the “multiple match flag”. Such a CAM module is simplified in the 1 outlined.

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.In the 1 The memory addresses are marked with their contents in the top left. Below, the reactions of the CAM memory module to, for example, three different input data are given line by line. The binary signal states "True" and "False" are marked accordingly by "+" or "-".

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.The usual CAM memory modules only have the option issue a single match address. Voices multiple memory contents matches the data word created, consequently, only one address can be output directly. The Addresses of the remaining matching ones Memory cells need then be determined by separate procedures. In the simplest Case, this can be done, for example, by successively deleting memory locations, whose addresses have already been determined. To the initial state later would have to restore finally the previously overwritten Storage locations are restored. Sometimes such functionality implemented for finding multiple addresses in the CAM module itself his.

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.A CAM memory module according to the invention has, for example, an additional mask bus which allows the data entered on the data bus to be "masked". The mask bus specifies which of the characters applied to the data bus for a search are significant with regard to a search according to the agreement. The procedure is in the 2 clarified. Again, the reactions of the CAM to the input signals given below on the left are shown line by line.

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.The mask bus is partly used of a CAM memory module also made available as a register, i.e. There is a programmable set within the CAM memory module Registers that are used for masking and that are based on different Species selected can be. So can programmed the registers once and then the desired one Masking selected accordingly become. You can also other implementation options be provided for masking.

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.Due to the possibility of masking, according to the invention the occurrence of partial character strings, as in the example “abcd” in the second line of the data created, can also occur 2 can be detected. Here the last character "c" of the total data word "abcdc" is masked out as not significant. However, the match can only be found if this character string occurs at the first position of the data word. The substring "acde" of the last search example is only searched for starting at the first position, but the occurrence at memory location / address 3 starting with the second position is not found.

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 order to counter this problem, in the method according to the invention, each character located in the search window is stored together with the subsequent characters in a memory location of the CAM memory module, ie the entire search window itself is contained in the first column S1 of the CAM memory locations. The subsequent columns contain the subsequent characters in order to be able to detect longer character string matches. The process is described below using the example in the 3 explains:
For example, the text "ABCDEFGHIJKGHIABCDE", in which the character string GHI appears at the 7th and 12th place, is to be coded. The search window here comprises 10 characters, for example, each location in the CAM comprises 4 characters. The text is preferably from left to right to the right of the search window.

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.In this example, the CAM memory module has an addressing width of 10, ie the address width corresponds to the data width of the search window. The 10 storage locations of the CAM were as in the 3 shown in the top left. The following character to be encoded into the "K". The procedure for detecting at least partial character matches is the same 3 sketched below.

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.Left (columns write address and Content) is the change the CAM data, next to it (columns MatchData and MaskReg) the control the comparison functionality of the CAM specified. The columns Match, MultMatch and MatchAddr give the CAM reactions (Editions) again. The Length column shows the implicitly from the selected Masking existing information about the length of the match found.

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.In the step labeled 1., a number of characters corresponding to the data word length (here 4) of the CAM is read from the text, ie the characters “KGHI” at the designated position. These are made available to the CAM as comparison data by using these characters as a data word the da tenbus of the CAM. In this example, the mask register is programmed to recognize two matching characters, here the "KG" character, by setting the first two digits (++ ––) to significance.

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.Because the string in CAM so far is not included starting at the first place, so there will be no match found. Consequently, the "K" must be at the current one Position encoded as a character and not as a combination of address and length become.

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.In addition, in step 2 Character "K" followed by N-1 Character "GHI", ie the character string "KGHI" included in the CAM. Here, N = 4 corresponds to the data word width of the CAM. In the present In this case, storage location 0 is used, which on the one hand removed the character A, which is no longer relevant, from the search window and on the other hand the required number of storage locations in the CAM minimal, namely just the size of the search window equivalent. The CAM memory module is thus a kind of ring memory used which is rewritten from the front when the address end is reached.

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.The search window is around one Position of the uncoded "K" shifted and for coding the next The character "G" is now properly moved Search window starting with "B" and ending with the last written "K" after a match searched. The data in the search window is still completely in the CAM, but now starting with memory position 1 and ending with Storage position 0, i.e. if there is a match, it must always the determined address of the CAM is converted into a position in the search window which, however, e.g. with a simple address counter leaves.

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.For the step labeled 3. the CAM is again the next uncoded Sign "GHIA" for comparison to the disposal and it is put in the first place by masking after the string "GH" looking for beginning.

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.The match with storage location 6 is recognized by the CAM and output as such (Match and MatchAddr). The length of agreement is again chosen by the Masking known.

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.The following is through change the masking (MaskReg) by increasing the significance points the exact maximum length of agreement searched. In the present example, this is done successively from the left mask registers filled to the right with significance "+" selected or used, whereby gradually longer and longer matches begin each time be found in the first place. Other orders when selecting the Are mask registers also conceivable, for example, the search time or the Search effort for the longest match to minimize.

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.The location found (here 6) must be dependent the positioning of the search window in the CAM in an address or position of the search window, here 5, because the search window in the considered point in time at storage location 1 of the CAM and on Storage location 0 ends. The string "GHI" would in the present case it is coded by the number combination [5,3] ([position, length]).

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.In addition, in steps 6-8 you have to the characters now encoded Strings are included in the CAM, what an exact Find the longest match may only be carried out after this search has been completed. For the purpose However, it can optimize the achievable data throughput it makes sense to refrain from the exact search and these strings (Steps 6-8) in the CAM before the search is completed (Steps 3-5) such a small fluctuation in the data rate for the in to reach the data to be recorded.

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.The search window is as described (Steps 6-8) moved 3 positions. It starts at now CAM address 4 and ends at 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.Four more will then be used for comparison Character "ABCD", starting with the first uncoded characters are used and the process begins from the front with steps 9 and 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.In the example presented here for better clarity the data word width of the CAM is accepted with 4 characters and with the Find matching Strings of length 2 started. Both are variable parameters. Preferably one Hardware for realizing data compression with data word widths of 18 bytes (characters) are used, according to the GZIP standard with the search for matching strings the length three is started. This makes sense because there is only a match of 3 characters storing address and length less space in Claimed as storing the characters themselves.

Zeichenketten, deren Länge die der Datenwortbreite des CAM überschreiten werden z.B. auf die im Folgenden beschriebene Weise detektiert.Strings, the length of which exceed the data word width of the CAM e.g. detected in the manner described below.

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.The text used for coding in the above example is shown in the example of 4 modified to "ABCDEFGHIJKGHIJKGHABCD". The character string to be detected is now, for example, "GHIJKGH". After the detection of the correspondence of the entire data word "GHIJ" applied to the CAM for comparison in the step labeled 5, the recognized CAM address "6" is first transferred to the search window address "5" as described above and together with the length information cached for later output, for example.

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.The corresponding character strings are then included in the CAM as shown above, which also virtually limits of the search window within the CAM are moved properly. The processing begins in the known manner from the beginning, and this time also matches that only comprise a single character must be recognized, which is why in the present example the further processing is started with the masking of a single character in step 10. Matches that begin after the search window has been shifted to the same address as the previous unshifted search window (5 in the present example) can be taken into account by adding the length information found to the previously stored one.

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.In the present example the String "GHIJKGH" therefore by the Number combination [5,7] encodes, with the position information to the search window that has not yet been moved (as in step 3) refers. In this way, matching strings can be created Detect any length, by merely monitoring the location of the storage location and the length information is added to the existing one. Monitoring the shift the search window within the CAM will be of additional Processing units guaranteed. This process step can change if a complete match is found again to repeat.

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.The examples shown so far have yourself with simple matches employed. When matches occur at several storage locations (MultMatch = +) in the CAM can be done by one additional Control logic is the cheapest Alternative selected become. Because e.g. the basic form of the CAM modules mentioned here is only about possibility has To output exactly one address (MatchAddress), all of them must be in order first potential Addresses are read out of the CAM and then the Decision about carry out the selection of the suitable alternative. This can happen that after finding a match, the data this address deleted and buffered with the address information to then another match check make. After all multiple matches e.g. so determined could have been the data back to its original Written back addresses become. In some cases, such functionality can be used to find multiple Addresses can also be implemented in the CAM module itself. After finding of all multiple matches is the cheapest choice from all matches according to further criteria met.

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.When looking for the longest match within a CAM data word the examination of multiple matches does not initially play Role. Only if there are several longest matches consistently, the one with the lowest position (address) is selected within the search window, e.g. a more advantageous possibility for later coding by means of Huffmann coding.

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.If the matches over the Length of a CAM data word must go out In addition, according to the above described method for the detection of longer matches, multiple positions within the search window regarding an extension the match already found is monitored become. The entire processing functionality required for this can be from additional Control logic in the hardware can be guaranteed.

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.In addition to the exact implementation of the previously described The procedure does not result in 100% optimization Compression different ways to simplify the process. For example, like already mentioned above, to obtain one if possible constant write speed in CAM memory locations the shown Order not followed exactly. Those labeled 3rd, 4th and 5th Steps are nested with those labeled 6th, 7th and 8th, so possibly still needed Storage locations at the end of the search window are overwritten too early.

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.That can result in these being unfavorable Constellations not the greatest possible match is found, i.e. it gets a shorter string through the number combination to be generated [position, length] described as in the optimal case possible would have been. Since this is the case, especially with a large search window (with GZIP 32768 Characters) but extremely rare neglecting such errors can be a significant problem Increase in processing speed can be achieved.

Ä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.something similar applies to an inadequate Treatment when multiple matches occur. Will be here only the only address output directly from the CAM is used, it may happen that not the longest match in the search window is found, or that the address within the search window too is chosen large so cheaper Position Length pairs exist.

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.The influence of this inadequacy depends on it on the data word width of the selected CAM block from. The bigger the Data word width, the lower the probability of Occurrence of multiple matches. With a sufficiently large one Data word width, the influence of these shortcomings can be neglected. Especially considering the hardware resources to be saved become so cheap Realizations possible.

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.The above-mentioned data word widths of, for example, 4 for CAM and 10 in the search window are only given as examples. The exemplary described The above statements also apply to any other data word widths of the CAM or the search window.

In einer vorteilhaften Weiterentwicklung können CAM-Adressen durch eine gezieltere spezielle Mask-Programmierung eingespart werden wodurch ebenfalls ein Geschwindigkeitsvorteil erreicht wird.In an advantageous further development can CAM addresses through a more targeted special mask programming can be saved, which also means a speed advantage is achieved.

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.The previous description of the invention goes by providing a memory address for each character in the search window , making the latter in the first column of CAM locations occurs and the number of required Locations of the size of the search window equivalent.

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.If the first two columns are used in this way to save the search window, this number of required addresses is reduced by half. The first column contains the even and the odd character positions within the search window. To detect matches, however, more complex masking must be carried out. The 5 shows the procedure using the example presented first.

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.This time only every other combination that occurs of four-element strings stored in the CAM. This can be done generalize to every m-th combination of k-element strings. Consequently, the search window is now in the first in this example contain two columns of CAM locations. For detection the mask register must start once at the first and once at the second (mth) position be programmed. The order of the review, i.e. the programming of the mask register is done so that taking into account of the matches already checked exclusively at all possible Positions are checked.

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.In the example given, with step 3 designated, the masking "- +++" can be selected directly, without having to test "+++ -" because that Result of the latter after checking "++ ––" in the 1st designated step is already known.

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.This approach to reduction of the CAM memory requirements continue arbitrarily until only a single memory cell is used in the CAM, which the entire search window as a long Record data word, using the mask to check matches with everyone Must be programmed starting in the long data word.

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.In a further preferred training can the complex programming of the masking should be provided to detect the longest match to be omitted if a CAM is used that has the functionality of a Longest match detection on the hardware side, i.e. if the CAM can be instructed directly the location with the longest match issue.

Weiterhin kann die Suchreihenfolge auf Basis statistischer Eigenschaften des zu komprimierenden Textes optimiert werden.Furthermore, the search order based on statistical properties of the text to be compressed be optimized.

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.By taking into account the statistical Properties of the text, whether it is predominantly longer or longer shorter matching strings further optimization can be achieved. The one in the first Example presented successive filling of the mask from the left could right For example, be modified so that frequently occurring Lengths can be checked faster than less common. The order of the check is adjusted to the given or determined statistical relationships.

In einer anderen Weiterbildung ist es vorgesehen die Datenübertragungsrate in den CAM zu maximieren.In another training course it provided the data transfer rate maximize in the CAM.

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.Due to the special structure of a CAM usually pass from entering data to storing (creating the information to the data input) up to the possibility to take this data into account when searching several clock periods, being entered in successive clocks Data are also available for searching in successive measures. Search operations can performed simultaneously become.

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.For the best possible Recognition of character matches, as it was done in the first example, a Data storage (steps 6-8) should be done so that the ongoing search (steps 3-5) will properly complete before relevant CAM memory locations are overwritten by the write operation become.

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.For an optimized processing speed must be achieved by the Write operation caused delay if possible by anticipated Initiation of the write operation can be compensated, i.e. the write operation is initiated so many bars in advance that the effectiveness the written data is ensured immediately after the search is completed. The latter is only possible if the time for the Completing the search is known a priori, which is the goal of shortening the time to search contradicts.

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.Is from the requirement of correct Search has gone off, the chronological order can be changed by early Initiation of the write process can be optimized, which then, however some CAM locations can be overwritten too early, so that there is a smaller effective search window. This faulty However, treatment only appears if one is in the search window far behind, character string at the end of the search window in the current one Text appears. Because this case occurs very rarely in reality can corresponding errors, especially with regard to the increased Processing speed can be tolerated.

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.The application of the GZIP algorithm happens very much in software frequently based on the so-called zlib library, i.e. to use GZIP-based The compression algorithm itself does not have to include data compression a software can be implemented, but it can be based on an existing implementation the needed Algorithms can be used in this library.

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.Many well-known software products make use of according to the zlib library. By modifying this library, so that data compression in hardware is done in software if GZIP Accelerator hardware is available, everyone benefits on the zlib-based software without modification of the use of GZIP hardware acceleration. Because in multitasking environments Hardware is not duplicated like software a control body has been introduced the order of different compression jobs defines the zlib library.

Claims (16)

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.Method for compressing a character string from successive characters, in particular according to the LZ77 standard, in which a longest match of characters to be encoded is sought with the data content of a content-addressable memory chip, and in the case of a match, the matching characters at least depending on their address in the memory chip and the The length of the match is coded, characterized in that a number of characters to be compressed are applied to a data bus of a maskable content-addressable memory chip as at least one data word and at least one match of at least a subset of these characters with the data content of the memory chip is sought by masking the data bus. 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.A method according to claim 1, characterized in that for the compression a search window of predetermined data word width successively over the character string to be processed is shifted and the characters in the search window in the memory block and a match a number of characters in front of the search window with in characters stored in the memory chip are searched for. 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.A method according to claim 2, characterized in that every character in the search window together with (N-1) following characters in a memory location of the memory chip is stored, the memory chip having a data word width of N indicates. 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.Method according to one of the preceding claims, characterized characterized that to compress one or more characters a data word from one corresponding to the data word length of the memory chip Number of characters from the string in front of the search window to the Data bus of the memory module for checking at least one partial match is created. 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.Method according to one of the preceding claims, characterized characterized in that especially after checking a match a write operation is initiated when a (partial) match is found each of the individual characters from a matching (partial) character string together with N-1 subsequent characters in an address of the memory chip is filed. 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.Method according to one of the preceding claims, characterized characterized that in the event of an undetermined match encodes the first character in front of the search window as a character itself together with (N-1) subsequent characters in a memory location of the memory chip and the search window by one Position is moved further. 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.Method according to one of the preceding claims, characterized characterized that if there is a match at least one substring of the N characters from the determined Address of the substring in the memory block the position of the Substring is determined in the search window and the substring is coded at least by the position and the length of the match, after which the search window by the length postponed the match and where each of the individual characters from the matching Substring together with N-1 subsequent characters in one Address of the memory module is stored. 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.Method according to one of the preceding claims, characterized characterized that if there is a match all characters from the determined address of the characters in the memory block the position of the characters in the search window is determined and the characters are encoded at least by the position and the data word width, after which the search window is moved further by the data word width and wherein each of the individual characters is composed of the data word with N-1 following characters in an address of the memory chip is filed. 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.A method according to claim 8, characterized in that when a match is found at least one substring following a full match, the length of the previous full match is incremented by the length of the match found and the search window by the length of the Match is shifted further and each individual of the matching characters is stored together with N-1 subsequent characters in an address of the memory chip. 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.Method according to one of the preceding claims, characterized marked that if multiple longest matches were found match at multiple locations with the lowest position within the search window for coding selected becomes. 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.Method according to one of the preceding claims, characterized marked that the characters within the search window under a single address in a memory block with a data word width is stored that corresponds to the search window width. 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.A method according to claim 11, characterized in that the data bus is masked in such a way that the check for (Partial) matches is programmed starting with every position in the data word. 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.Method according to one of the preceding claims, characterized characterized that masking depending on statistical properties of the character string, especially that more frequently occurring character lengths tend to be checked become. 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.Method according to one of the preceding claims, characterized characterized in that a write operation in which at least one Characters together with N-1 subsequent characters in an address of the Memory chip is filed before completing a search for matches is started in such a way that the ones written into the memory chip Signs for the next search as soon as the search is completed to disposal stand. Vorrichtung umfassend einen inhaltsadressierbaren Speicherbaustein und eine Kontrollelektronik zur Durchführung eines Verfahrens nach einem der vorherigen Ansprüche.Device comprising a content addressable Memory module and control electronics for performing a Method according to one of the preceding claims. 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.Apparatus according to claim 15, characterized in that it has an interface for data communication with a data processing system, which provides data to be compressed to the device and according to the procedure according to one of the preceding claims gets compressed data back.
DE2003110858 2003-03-11 2003-03-11 Character string compression method for compressing computer data, whereby data on a data bus to a memory component is compared with data stored in the memory to find the longest possible match Withdrawn DE10310858A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE2003110858 DE10310858A1 (en) 2003-03-11 2003-03-11 Character string compression method for compressing computer data, whereby data on a data bus to a memory component is compared with data stored in the memory to find the longest possible match

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2003110858 DE10310858A1 (en) 2003-03-11 2003-03-11 Character string compression method for compressing computer data, whereby data on a data bus to a memory component is compared with data stored in the memory to find the longest possible match

Publications (1)

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

Family

ID=32892101

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2003110858 Withdrawn DE10310858A1 (en) 2003-03-11 2003-03-11 Character string compression method for compressing computer data, whereby data on a data bus to a memory component is compared with data stored in the memory to find the longest possible match

Country Status (1)

Country Link
DE (1) DE10310858A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117273764A (en) * 2023-11-21 2023-12-22 威泰普科技(深圳)有限公司 Anti-counterfeiting management method and system for electronic atomizer

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 (en) * 2023-11-21 2023-12-22 威泰普科技(深圳)有限公司 Anti-counterfeiting management method and system for electronic atomizer
CN117273764B (en) * 2023-11-21 2024-03-08 威泰普科技(深圳)有限公司 Anti-counterfeiting management method and system for electronic atomizer

Similar Documents

Publication Publication Date Title
DE2139731C2 (en) Arrangement for code implementation
DE2210044C2 (en) Procedure for converting code words
DE3606869C2 (en) Data compression device
DE3038639C2 (en) Arrangement for data transmission between a central processing unit and n I / O units
EP0230437B1 (en) Process for compressing and expanding structurally associated multiple-data sequences, and arrangements for implementing the process
DE10301362A1 (en) Block data compression system, consisting of a compression device and a decompression device, and method for fast block data compression with multi-byte search
DE69722085T2 (en) Method and device for compressing and decompressing messages
DE2801611A1 (en) PROCEDURE AND ARRANGEMENT FOR ADDRESSING AND STORING DATA IN MEMORIES WITH OPTIONAL ACCESS
DE2208664A1 (en) Method for decoding a prefix-free compression code of variable length
DE2524046A1 (en) ELECTRONIC DATA PROCESSING SYSTEM
DE3148099C2 (en) Arrangement for recognizing a digital sequence
DE2432608A1 (en) MEMORY ARRANGEMENT FOR DATA PROCESSING DEVICES
DE2900586C2 (en) Arrangement for decoding code words of variable length
DE2926322A1 (en) STORAGE SUBSYSTEM
DE2213953C3 (en) Circuit arrangement for displaying characters on the screen of a display device
DE3742142C2 (en)
DE3333366A1 (en) RESOLUTION NETWORK FOR LAST USES
EP1139603A1 (en) Method and Apparatus for data analysing
DE19645057C2 (en) Device for the selection of address words by means of demultiplex decoding
EP0769853A1 (en) Logic block for a viterbi decoder
DE10310858A1 (en) Character string compression method for compressing computer data, whereby data on a data bus to a memory component is compared with data stored in the memory to find the longest possible match
EP0453609B1 (en) Procedure for testing of a smallest addressable unit of a RAM for bit errors exceeding a fixed number
DE2702586C3 (en) Circuit arrangement for controlling memory access in a computer
DE4342521C1 (en) Compressed data expansion method
EP0427884A1 (en) Method and device for data compression and decompression

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