DE60002340T2 - Verfahren und vorrichtung zur reduzierung der datenkompressionszeit - Google Patents

Verfahren und vorrichtung zur reduzierung der datenkompressionszeit Download PDF

Info

Publication number
DE60002340T2
DE60002340T2 DE60002340T DE60002340T DE60002340T2 DE 60002340 T2 DE60002340 T2 DE 60002340T2 DE 60002340 T DE60002340 T DE 60002340T DE 60002340 T DE60002340 T DE 60002340T DE 60002340 T2 DE60002340 T2 DE 60002340T2
Authority
DE
Germany
Prior art keywords
dictionary
sequence
code
new
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60002340T
Other languages
English (en)
Other versions
DE60002340D1 (de
Inventor
Lindsay Kenneth YORK
Lindsay Thayer YORK
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.)
Unisys Corp
Original Assignee
Unisys Corp
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 Unisys Corp filed Critical Unisys Corp
Publication of DE60002340D1 publication Critical patent/DE60002340D1/de
Application granted granted Critical
Publication of DE60002340T2 publication Critical patent/DE60002340T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Description

  • 1. Erfindungsgebiet
  • Die vorliegende Erfindung betrifft Datenkomprimierungssysteme. Spezieller erläutert, betrifft die vorliegende Erfindung die verlustfreie Datenkomprimierung und ein Verfahren und Mittel zum Erhöhen der Geschwindigkeit zum Komprimieren eines Datenstroms in Systemen, die ein Wörterbuch benutzen, um Folgen-Codes zu speichern.
  • 2. Beschreibung des Standes der Technik
  • Bis dato waren verlustfreie Datenkomprimierungsalgorithmen bekannt. Auf einige der am besten bekannten Datenkomprimierungssysteme und -verfahren wird als Lempel Ziv One (LZ-1), Lempel Ziv Two (LZ-2) und Lempel Ziv Welch (LZW) Bezug genommen. All diese adaptiven verlustfreien Datenkomprimierungssysteme benutzen ein Wörterbuch zum Speichern von Folgen-Codes, die auf Folgen von Daten und Symbolen oder Zeichen hinweisen, auf die man in einem Eingabedatenstrom stößt. Ist eine Folge einmal identifiziert, wird sie als ein Code gespeichert, der weniger Bits hat als die identifizierte Folge von Daten, so dass anschließende Auftritte derselben Folge im Datenstrom vom zuvor gespeicherten Folgen-Code ersetzt werden. Alle drei oben erwähnten Datenkomprimierungssysteme beinhalten die Suche mehrerer Stellen im Wörterbuch, um zu bestimmen, ob ein Folgen-Code zuvor für die zu untersuchende Folge gespeichert wurde. Das Verfahren beinhaltet die Übereinstimmung einer Sequenz eingegebener Datenzeichen mit der bereits in einer Wörterbuchstelle codierten selben Sequenz.
  • Um die Zeit zu verkürzen, die für die Suche mehrerer Stellen im Wörterbuch erforderlich ist, wurde vorgeschlagen, dass ein Hash-Algorithmus verwendet wird, um die Übereinstimmungsfunktion durchzuführen. Hash-Suchen berechnen einen Index in einer Tabelle auf der Grundlage gesuchten Daten. Die Effizienz der Hash-Tabellensuche wird durch die Organisation der Tabelle und dadurch bestimmt, ob mehrere Gegenstrände ohne Konflikt mit demselben Bereich der Tabelle gehastet werden können. Hash-Systeme leiden unter hohen Implementierungskosten und komplexen Berechnungen, die zu einem Leistungs-reduzierenden Verwaltungsaufwand führen. Ein LZW-Hash-Verfahren wird im US Patent Nr. 4.558.302 beschrieben.
  • Es wurde auch vorgeschlagen, dass binäre Suchen verwendet werden könnten, in denen der Speicher und die Abschnitte des Speichers unterteilt und der Reihe nach gesucht werden, bis eine Übereinstimmung oder keine Übereinstimmung gefunden ist. Binäre Suchen erfordern per Definition mehrere Suchen im Wörterbuch und benötigen auch eine Tabellenaufzeichnung, haben aber den Vorteil, dass sie den Verwaltungsaufwand reduzieren, der bei den komplexen Berechnungen auftritt, die mit dem Hashing verknüpft sind.
  • Es wurde auch vorgeschlagen, dass ein inhaltsadressierbarer Speicher (CAM) oder Assoziativspeicher verwendet werden kann, um die Anzahl der Vergleiche von den Inhalten der im Wörterbuch befindlichen mehreren Folgen zu reduzieren. Dieses System ist wirkungsvoll, dennoch komplex, und es kann sehr teuer sein. Ein Beispiel für dieses Verfahren wird im US Patent Nr. 5.838.264 beschrieben.
  • Die gedruckte Veröffentlichung unter dem Titel "Data Compression: The Complete Reference", 1998, Springer-Verlag, von D. Salamon, analysiert Wörterbuchverfahren und klassifiziert sie als statisch oder dynamisch (adaptiv). Dieser Referenz schreibt Storer und Szymenski die Entwicklung des LZSS zu (auch Storer 1982), die sich bis zum LZ77 verbessert. Dieses Wörterbuch-Verfahren hält den Such-Puffer (das Wörterbuch) in einem binären Suchbraum und erzeugt als eine Ausgabe ein "Token mit zwei Feldern". Zwei Formen an binären Suchbäumen werden erörtert, indem nur vierzehn Knoten verwenden werden. Salomon schlussfolgert, dass irgendeiner der vierzehn Knoten in höchstens vier Schritten gefunden werden kann, wenn für das Wörterbuch eine ausgeglichene Baumstruktur verwendet wird; wie auch immer können bis zu vierzehn Schritte erforderlich sein, wenn ein schiefes Baumwörterbuch benutzt wird. Solchermaßen bestimmt die Höhe der Nummer der Elemente "n" in den jeweiligen Bäumen die Höchstzahl an Schritten, die erforderlich sind, um eine Suche in irgendeinem Wörterbuch durchzuführen, das einen binären Suchbaum verwendet.
  • LZ78 (auch ZIV78) ist eine Verbesserung gegenüber dem LZSS und verwendet keine Suchpuffer und/oder Vorgriff-Puffer. Stattdessen gibt es ein Wörterbuch, in dem alle zuvor angetroffenen Folgen als einzelne Zeichen gespeichert werden, und seine Größe wird durch die Größe oder Menge des für das Wörterbuch bestimmten Speichers eingeschränkt, der schnell wächst und leicht aufgefüllt wird. Der Codierer gibt Zwei-Feld-Tokens aus. Das erste Token-Feld ist die Adress-Stelle (Zeiger) im Wörterbuch, der die längste Übereinstimmung zugeordnet wird, die nach einer Suche nach der längsten Übereinstimmungsfolge gefunden wird. Der Codierer verwendet diesen Zeiger, um sein Wörterbuch zu suchen, es wird nur am Decoder verwendet. Das zweite abgelegte Zeichen ist das Erweiterungszeichen aus dem Datenstrom, das die Fehl-Übereinstimmung verursachte, die zu einer neuen Folge führt, die an der nächsten sequentiell verfügbaren Wörterbuchadresse im Wörterbuch gespeichert wird.
  • Salomon beobachtet richtig, dass die Größe des LZ78-Wörterbuchs während der Zeit der Verwendung bestimmt werden kann; jedoch kann ein großes Wörterbuch mehrere Folgen enthalten und längere Übereinstimmungen berücksichtigen, führt aber zu längeren Zeigern und langsameren Wörterbuchesuchen. Salomon schlägt die Verwendung dreier Strukturen vor, die mit der Null-Folge als Ausgang beginnt. Während ein Null-Folge-Baum die Anzahl von erforderlichen Stufen "n" in binären Suchbäumen reduziert, werden mehrere Suchen auf jeder Stufe benötigt, um eine Übereinstimmung zu bestätigen oder um zu schließen, dass keine Übereinstimmung vorliegt. Dann war die an der vorherigen Stufe gefundene Übereinstimmung die längste Übereinstimmung für die gesuchte Folge.
  • Salomon beobachtet richtig, dass Lempel-Ziv-Welch (LZW) eine Verbesserung gegenüber dem LZ78 darstellt und vorzugsweise ähnlich dem LZ78 eine Baumstruktur verwendet. Der Vorteil des LZW gegenüber der LZ78 ist doppelt, und zwar darin, dass nur ein Ein-Feld-Token ausgegeben und die "Baum"-Strukturgröße für das Wörterbuch vorzugsweise uneingeschränkt ist. Wie die LZ78-Wörterbücher benötigt das LZW-Wörterbuch mehrere Suchen im Äquivalent eines Null-Folge-Baums.
  • Salomon erläutert kurz eine einfache schnelle Variante des LZ77 namens "Williams 91" oder das LZRW1 für seinen Entwickler Ross Williams. Das Verfahren verwendet den gesamten verfügbaren Speicher als LZ77-Puffer und codiert den Eingabestrom in "Blöcken". Die Beschreibung deutet an, dass in einem Schritt eine Übereinstimmung gefunden werden kann, dass jedoch ein Schritt die Bewegung des 16-Byte Vorgriff-Puffers über die Länge eines vier Kilobyte Suchpuffers umfasst, um wie im LZ77 gerade den einen Block des Datenstroms zu codieren. Der Suchpuffer macht mehrere LZ77-Suchen im Block; daher gibt es nie eine Ein-Schritt-Suche. Es wird ausgesagt, dass das Verfahren "nicht sehr wirkungsvoll ist, da die gefundene Übereinstimmung nicht immer die längste ist"!
  • Es ist nur Gerecht, die obigen Wörterbuchverfahren von D. Salomon so zusammenfassen, als benötigten sie spezifisch Suchbäume (oder irgendein Äquivalent), die wiederum mehrere Suchen benötigen, um eine längste übereinstimmende Folge: zu finden. Der Nicht-Wörterbuch-Versuch zur Verwendung einer Form von Hashing zum Beschleunigen der Suche in LZ77-Blockpufferspeichern verbraucht den gesamten verfügbaren Speicher und gewährleistet dennoch nicht, dass nach mehreren Suchen eine längste übereinstimmend Folge gefunden wird.
  • Es wäre wünschenswert, ein Verfahren und ein Gerät bereitzustellen, das vollständig mehrere Suchen in Datenkomprimierungssystemen vermeidet, die Folgen-Wörterbücher benutzen. Es ist weiterhin wünschenswert, dass die Ausgabe aus dem neuen Datenkomprimierungssystem formatierbar ist, um mit bestehenden Datenkomprimierungssystemen wie beispielsweise dem LZW kompatibel zu sein, so dass existierende Dekompressoren/Decoder in der Lage wären, ohne irgendeine Modifikation die komprimierten Daten zu empfangen und zu decodieren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Hauptaufgabe der vorliegenden Erfindung, die Geschwindigkeit der Datenkomprimierung, die in Zusammenhang mit der Verwendung eines Folgen-Wörterbuchs implementiert wird, zu optimieren.
  • Es ist eine weitere Hauptaufgabe der vorliegenden Erfindung, die Notwendigkeit der Suche an mehreren Adress-Stellen in einem Folgen-Wörterbuch eines Datenkomprimierers überflüssig zu machen.
  • Es ist eine weitere Hauptaufgabe der vorliegenden Erfindung, ein als Nachschlagtabelle angeordnetes LZW-Folgen-Wörterbuch bereitzustellen, das für jeden möglichen neuartigen Folgen-Code eine eindeutige Adresse hat, so dass eine Suche im Wörterbuch beseitigt wird.
  • Es ist eine weitere Hauptaufgabe der vorliegenden Erfindung, ein neuartiges Datenkomprimierungssystem bereitzustellen, das wirkungsvoll formatiert werden kann, um chinesische, japanische und andere komplexe Folgen-Codes ohne die Strafe einer ausgiebigen Suche in einem Folgen-Wörterbuch zu komprimieren.
  • Es ist eine weitere Hauptaufgabe der vorliegenden Erfindung, ein Datenkomprimierungssystem bereitzustellen, das mittels Verwendung eines Direktzugriffspeichers (RAM) geringen Preises implementiert werden kann, ohne dass dem Rechnersystem eine Last aufgesetzt wird.
  • Es ist eine weitere Hauptaufgabe der vorliegenden Erfindung, ein neuartiges Verfahren zum Durchführen der LZW-Datenkomprimierung bei Geschwindigkeiten bereitzustellen, die höher sind als sie bisher möglich waren; solchermaßen erhöht sich der Echtzeit-Durchsatz für Hochgeschwindigkeits-Netzwerke, für die die Folgen-Daten-Komprimierung wie beispielsweiese die LZW normiert wurde oder die diese benutzen.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein neues und verbessertes Verfahren zum Durchführen einer LZW-Datenkomprimierung bereitzustellen, das das Verfahren zur Komprimierung des Datenstroms beschleunigt und das ein Mittel für höhere Übertragungsraten über bestehende Leitungen und Verbin dungen bereitstellt.
  • Es ist eine Hauptaufgabe der vorliegenden Erfindung, einen neuartigen, erweiterten Zeiger-Adresscode für Folgen von Daten bereitzustellen, auf die man in einem zu komprimierenden Datenstrom stößt.
  • Es ist eine Hauptaufgabe der vorliegenden Erfindung, ein neuartiges Folgen-Wörterbuch bereitzustellen, das über eine größere Anzahl an zugänglichen Adressen verfügt als die maximale Anzahl der in einem vollständigen Wörterbuch verwendeten Folgen-Codes.
  • Es ist eine Hauptaufgabe der vorliegenden Erfindung, einen eindeutigen, einzigen Folgecodewert von wenigeren Bits in einem Wörterbuch zu speichern, der die Folge von Zeichen darstellt, die in dem eindeutigen Zeigeradresscode größerer Bits enthalten ist.
  • Es ist eine Hauptaufgabe der vorliegenden Erfindung, einen komprimierten Datenstrom im LZW-Format ohne den Bedarf an einer Suche nach mehreren Adress-Stellen in einem Folgen-Wörterbuch zu erzeugen.
  • Es ist eine Hauptaufgabe der vorliegenden Erfindung, den Bedarf an der Speicherung von Erweiterungszeichen mit Folgen-Codes in einem LZW-Wörterbuch zu beseitigen.
  • Es ist die allgemeine Aufgabe der vorliegenden Erfindung, mehrmals dasselbe LZW-Folgen-Wörterbuch zu verwenden, ohne dass die Inhalte gestoppt oder gelöscht werden müssen, wenn das Wörterbuch voll ist.
  • Es ist die allgemeine Aufgabe der vorliegenden Erfindung, alle Abschnitte des Folge-Wörterbuchs zu entleeren oder zu löschen, ohne die Inhalte aller Speicherstellen zu überlesen.
  • Es ist die allgemeine Aufgabe der vorliegenden Erfindung, die Adress-Stellen der Folgen-Codes in einer Hilfsnachschlagtabelle zu speichern, um das Löschen zu ermöglichen, indem nur jene Adress-Stellen überschrieben werden, in denen die Code-Daten gespeichert wurden.
  • Gemäß diesen und anderen Aufgaben der vorliegenden Erfindung wird ein Datenkomprimierungssystem und -verfahren bereitgestellt, um Codes für Folgen von Datenzeichen zu ersetzen, auf die man in einem Eingabedatenstrom stößt, der durch die Bereitstellung eines Folgen-Code-Wörterbuchs gekennzeichnet ist, das für jede mögliche Folge, die im Eingabedatenstrom beobachtet werden kann, eine Speicherstelle hat. Wenn der Eingabedatenstrom in das System tritt, werden die Folgen von zu suchenden neuen Zeichen in eindeutige Zeigeradressen konvertiert, die einen bekannten Folgeabschnitt und einen nächsten Zeichenabschnitt umfassen. Jede erzeugte mögliche Zeigeradresse verfügt über eine entsprechende Speicherstelle im Folgen-Code- Wörterbuch. Die Zeigeradresse wird verwendet, um die Inhalte eines neuartigen Folgen-Code-Wörterbuchs zu lesen. Wenn die Inhalte des Wörterbuchs einen Folgen-Code enthalten, dann ist es der Folgen-Code für die gesuchte Folge, und eine Suche im Wörterbuch in einem Schritt ist abgeschlossen. Die nächste Suche für eine längere Folge beginnt mit dem Anhängen des nächsten (Erweiterungs)-Zeichens am zuletzt übereinstimmenden Folgen-Code, der aus dem Wörterbuch gelesen wird, um eine neue eindeutige Zeigeradresse bereitzustellen. Diese Ein-Schritt-Lese-Suchen fahren fort, bis an der Zeigeradresse keine Inhalte im Wörterbuch gelesen werden. Die Zeigeradresse wird gehalten, und ein Folgen-Codegenerator schreibt den nächsten verfügbaren Folgen-Code an der Zeigeradresse in das Wörterbuch. Dies beendet die Ein-Schritt-Lese-Suche, in der eine "Fehl-Übereinstimmung" auftrat. Eine neue zu suchende Folge wird erzeugt, worin der Folgen-Code-Abschnitt der Zeigeradresse das letzte Zeichen aus der vorherigen "Fehl-Übereinstimmung"-Folge und das nächste Erweiterungszeichen aus dem Datenstrom umfasst.
  • Immer dann wenn eine Fehl-Übereinstimmung erfolgt, wird der Code für die letzte zuvor übereinstimmende Folge für die Speicherung oder einen Empfänger-Decoder ausgegeben. Auf diese Art und Weise werden Zeichen aus dem Datenstrom konstant zu bekannten Folgen hinzugefügt oder damit verkettet, damit immer längere zu suchende Folgen zu machen, bis eine Fehl-Übereinstimmung auftritt und eine neue Zwei-Zeichen-Folge und eine Zeigeradresse für die zu suchende Folge erzeugt werden, und es werden Ein-Schritt-Folgen-Suchen im neuartigen Wörterbuch durchgeführt, das Codes für die Folgen und nicht die Folgen selbst enthält.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein schematisches Blockdiagramm des Datenkomprimierungssystem der bevorzugten Ausführungsform zum Erzeugen von Codes, die die Folgen von alphanumerischen Zeichen oder die im Datenstrom gefundenen Symbole anzeigt;
  • 2 ist ein schematisches Blockdiagramm einer modifizierten Ausführungsform des in der 1 gezeigten Datenkomprimierungssystem, das ein Tabellenstufenmerkmal zeigt, das zum/in das Wörterbuch hinzugegeben oder hineingegeben wird;
  • 3 ist ein vereinfachtes Flussdiagramm, das eine Sequenz an Betrieben zeigt, die benutzt werden, um eine Wörterbuchsuche auf eine einzige Wörterbuch-Zeigeradresse im Datenkomprimierungssystem einzuengen;
  • 3A ist eine vereinfachte Flussdiagrammfolge der Betriebe, die eine Modifikation der 3 zeigt, wenn das Wörterbuch nicht initialisiert ist;
  • 4 ist ein vereinfachtes Flussdiagramm, das die Sequenz der Betriebe zeigt, die verwendet werden, wenn die zugegriffene einzige Wörterbuch-Zeigeradresse einen Folgen-Code enthält, der zu einem TREFFER (HIT) führt;
  • 5 ist ein vereinfachtes Flussdiagramm, das die Sequenz der Betriebe zeigt, die benutzt werden, wenn die zugegriffene einzige Wörterbuch-Zeigeradresse keinen Folgen-Code enthält, der zu einer FEHL-ÜBEREINSTIMMUNG (MISS) führt;
  • 6 ist eine schematische Zeichnung eines Blocks oder Moduls des Speichers, der für ein Wörterbuch in der vorliegenden Erfindung verwendet wird;
  • 7 ist eine schematische Zeichnung eines anderen Blocks oder Moduls des Speichers, der anders als der der 6 aufgebaut wird;
  • 8 ist eine schematische Zeichnung von drei Blöcken oder Modulen des Speichers der in den 6 und 7 gezeigten Art;
  • 9 ist eine schematische Zeichnung eines großen Wörterbuchs, das eine Mehrzahl an Blöcken oder Modulen hat, von denen zu einem Zeitpunkt nur ein betrieben werden kann, wobei ein Aufbau zum Löschen der Blöcke zeigt wird, wenn sie voll sind oder sie nicht betrieben werden können; und
  • 10 ist eine schematische Zeichnung eines Wörterbuchs und Aufbaus zum Entleeren oder Löschen der Inhalte des Wörterbuchs, wenn es erwünscht ist, das Wörterbuch schnell zurückzustellen.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Bevor man auf die 1 und das Datenkomprimierungssystem der bevorzugten Ausführungsform Bezug nimmt, sollte es verständlich sein, dass es für die meisten Datenkomprimierungssysteme kein einzelnes Format gibt. Entsprechend müssen sowohl der Kompressor/Sender als auch der Empfänger/Decoder folgendes wissen: 1) das zu verwendende gesetzte Zeichen; 2) die maximale Anzahl an zu verwendenden Bits, um den größten Codewert oder das Feld zu bestimmen; 3) die speziellen Codes wie beispielsweise stoppe, setze zurück, lösche Code usw., und 4) das Codierungsdatenpaket und das Trennschema, die verwendet werden sollen. Wenn der Datenkomprimierer und der Decodier bereits das zu verwendende Protokoll errichtet haben und die oben erwähnten Gegenstände bekannt sind, gibt es keinen Bedarf, eine solche Information in einer Präambel oder einer Kopfzeile zu senden, bevor die Datenkomprimierung gestartet wird. In der bevorzugten Ausführungsform der vorliegenden Erfindung ist es, wenn der Sender und der Empfänger die Protokoll-Gegenstände kennen, möglich, das Komprimierungssystem 10 einschließlich des neuartigen Folgen-Wörterbuchs 11 ohne Initialisierung mit einer Zeichenreihe zu starten. Es ist jedoch möglich, das Wörterbuch mit einer Zeichenreihe zu initialisieren, wie sie in der herkömmlichen LZW-Datenkomprimierung verwendet wird. Das Datenkomprimierungssystem 10 schließt eine Eingangsleitung 12 für den Eingabedatenstrom ein, der in einem Datenstrompuffer 12, gepuffert wird, an dem ein Extraktor 14 hängt, der das nächste Zeichen nimmt und es auf der Leitung 15 ausgibt, wo es in den Erweiterungszeichencode-Abschnitt 17 des Adress-Zeigerregisters 16 gesetzt wird. Im Adress-Zeigerregister 16 liegt bereits ein LZW-Folgen-Code im LZW-Folgen-Code-Abschnitt 18 vor, der den Code für die im Datenstrom auf der Leitung 12 gefundene zuletzt übereinstimmende Folge enthält. Zu Erläuterungszwecken sei angenommen, dass der LZW-Code-Abschnitt 12 Bits enthält und der Erweiterungszeichen-Abschnitt 17 8 Bits enthält; solchermaßen wird die Wörterbuch-Zeigeradresse auf der Leitung 19 20 Bits enthalten. Das neuartige Wörterbuch 11 wird mit mindestens 220 eindeutigen Speicherstellen oder Adressen bereitgestellt, so dass jede mögliche Wörterbuch-Zeigeradresse eine Speicherstelle hat. Wenn das Wörterbuch initialisiert wird, wird jede einzelne Zeichen-Folge eine Übereinstimmung finden, die die Komprimierung der Zwei-Zeichen-Folgen startet.
  • Die Wörterbuch-Zeigeradresse auf der Leitung 19 bewirkt einen Lesebetrieb im Wörterbuch 11, und die Inhalte an der Zeigeradresse erscheinen auf der Leitung 21 und werden in einem TREFFER/KEIN TREFFER-(HIT/NO HIT)-Puffer 22 gespeichert. Es sei angenommen, dass ein Folgen-Code an der Zeigeradresse vorhanden ist, der veranlasst, dass die Logik im Puffer 22 erkennt, dass die gerade untersuchte Folge zuvor gesehen wurde und ein Code die Folge im Wörterbuch 11 ersetzt hatte. Solchermaßen wird auf der Leitung 23 ein TREFFER beobachtet, der veranlasst, dass die TREFFER-Logik 24 eine nächste Zeigeradresse in der Logik 25 erzeugt.
  • Die Zeigerlogik 25 ermöglicht, dass der Puffer 22 auf der Leitung 27 den letzten TREFFER-Code erzeugt, der in den Folgen-Code-Abschnitt 18 des Zeiger-Adressregisters 16 geschrieben wird. Gleichzeitig erzeugt die Zeigerlogik ein Freigabesignal auf der Leitung 29, das veranlasst, dass der Zeichen-Extraktor 14 auf der Leitung 15 den nächsten Folgen-Code erzeugt, der in den Erweiterungseichenabschnitt 17 des Zeiger-Adressregisters 16 geschrieben wird. Das Zeiger-Adressregister 16 enthält jetzt den zuletzt aus dem Wörterbuch 11 gelesenen TREFFERR-Code und das Erweiterungszeichen oder das nächste aus dem Datenstrom genommene Zeichen. Die neue Zeigeradresse auf der Leitung 19 liest wieder die Inhalte des Wörterbuchs an der neuen Zeigeradresse und setzt die gelesenen Inhalte in das TREFFER/KEIN TREFFER-Pufferregister 22. Dieser Ablauf setzt sich fort, bis aus dem Wörterbuch 11 kein TREFFER-Code mehr gelesen wird und die Logik im Pufferregister 22 ein Signal auf der Leitung 28 für die NICHT-TREFFER-Logik 31 erzeugt. Die NICHT-TREFFER-Logik 31 liest über die Leitung 30 den zuletzt übereinstimmenden Code aus dem Pufferregister 22 auf der Leitung 32 und in einen Sender oder Empfänger 33, der von einem Block 33 angezeigt wird; es kann sich jedoch um eine Leitung zum Senden an einen entfernten Empfänger handeln. Die NICHT-TREFFER-Logik 31 veranlasst den Codegenerator 59 über die Leitung 62, an der NICHT-TREFFER-Zeigeradresse den nächsten sequentiellen Code in das Register 11 zu schreiben. Die NICHT-TREFFER-Logik 31 signalisiert dem System 10 über die Leitung 29 auch, um am Logikblock 34 eine neue Zeigeradresse zu erzeugen. Um einen neuen Zeiger zu erzeugen, führt die Logik 34 zwei sequentielle Betriebe durch. Der am Block 35 gezeigte erste Betrieb ist die Bewegung des Erweiterungszeichens im Block 17 des Registers 16 in den Block 18 des Registers 16, wie an der mit dem Abschnitt 17 verbundenen Leitung 36 gezeigt wird. Der nächste sequentielle Betrieb liegt darin, das nächste Zeichen im Datenstrom über die Leitung 15 in den Erweiterungszeichenabschnitt 17 zu laden. Wie am Block 37 gezeigt, erzeugt die Logik ein Freigabesignal auf der Leitung 38. Wenn der Zeichen-Abfrage-Block 14 erfasst hat, dass das letzte Zeichen gelesen wurde, dann teilt der Block 14 der Computer-Controller-Logik am Block 39 mit, dass das letzte Zeichen am Block 14 gelesen ist, und dies vervollständigt das Ende der Suchlogik.
  • Um den Betrieb des Datenkomprimierungssystems 10 in der 1 zusammenzufassen, wird jetzt beobachtet werden, dass der Eingabedatenstrom konstant das nächste oder letzte Zeichen im Datenstrom aus dem Extraktor 14 auf den Folgen-Code-Abschnitt 18 von der letzten im Block 22 gelesenen Übereinstimmung hinzufügt. Der Adresszeiger wird von zwei Abschnitten 17 und 18 auf der Leitung 19 erzeugt, der veranlasst, dass das System die Inhalte des Wörterbuchs 11 an der eindeutigen Zeigeradresse liest. Wenn es an der Adress-Zeigerstelle in dieser Ausführungsform Inhalte gibt, enthalten sie den Code für die Übereinstimmung der vom Adresszeiger angezeigten Folge. Wenn die Folge eine vorherige Übereinstimmung hat, dann muss die Folge um ein Zeichen erwei tert und ein Versuch muss unternommen werden, um eine längere Übereinstimmung zu finden. Um dies zu tun, geht der bereits aus dem Wörterbuch 11 gelesene Code durch den Puffer 22 und wird in den Code-Abschnitt 18 geladen, und der nächste Zeichen-Code aus dem Datenstrom oder das Erweiterungszeichen wird in den Abschnitt 17 geladen, um einen neuen Zeiger zu erzeugen. Diese Sequenz von Betrieben fährt fort, bis es keinen aus dem Wörterbuch 11 gelesenen Code gibt, der eine FEHL-ÜBEREINSTIMMUNG oder einen NICHT-TREFFER anzeigt. Wenn dies geschieht, wird für diese FEHL-ÜBEREINSTIMMUNG an der Zeigeradresse ein neuer Code im Wörterbuch 11 gespeichert, und eine neue Folge muss mit dem jetzt letzten Zeichen nunmehr im Abschnitt 17 gestartet werden. Bevor die neue Folge gestartet wird, wird der vorherige Übereinstimmungscode oder der letzte Übereinstimmungscode, wie als Logikblock 33 gezeigt, an einen Empfänger übertragen. Dann veranlasst die NICHT-TREFFER-Logik 31, dass die Zeigerlogik 34 zwei Dinge tut. Als erstes wird das letzte Zeichen im Erweiterungszeichenabschnitt 17 in den Code-Abschnitt 18 bewegt und das nächste Zeichen, aus dem Extraktor 14 genommen und in den Erweiterungszeichenabschnitt 14 geladen; solchermaßen wird eine neue Folge gestartet, die zwei Ein-Zeichen-Folgen. umfasst. Diese zwei Ein-Zeichen-Folgen umfassen eine Zeigeradresse, die eine bereits beobachtete Mehr-Zeichen-Folge bilden kann, jedoch wird dies bestimmt, indem veranlasst wird, dass die Zeigeradresse die Inhalte des Wörterbuchs liest, und es wird bestimmt, ob, wie zuvor erklärt, ein TREFFER oder ein NICHT-TREFFER erfolgt ist.
  • Wenn das Wörterbuch 11 mit dem verwendeten gesetzten Zeichen-Code initialisiert wird, ist es nicht nötig, die ersten zwei Zeichen im Datenstrom in Abschnitte 18 und 17 zu laden, um die Komprimierung der Mehr-Zeichen-Folgen zu starten. Die Zeigeradressen für die einzelnen Zeichen brauchen nicht verwendet werden, und die Codes für die einzelnen Zeichen werden vorzugsweise im Anschluss an die besonderen Steuerzeichen in die niedrigerwertigeren Adressen gesetzt. Wenn der gesetzte 256 Zeichen-ASCII-Code verwendet wird, werden die Codes für die Zwei-Zeichen-Folge bei 259 starten, wenn drei besondere Codes verwendet und keine Null-Adresse verwendet werden.
  • Wenn das Wörterbuch 11 nicht initialisiert wird und der Empfänger den gesetzten Zeichen-Code und das Protokoll kennt, können die Adressen für die einzelnen Zeichen-Codes im gesetzten Code, wie erwähnt, für die niedrigerwerigeren Adressen besetzt werden. Da die Inhalte der einzelnen Zeichen-Codes nicht vom Register 16 adressierbar sind, wird es jedoch keinen letzten Übereinstimmungscode im Register 16 geben, wenn die Zwei-Zeichen-Adresse eine FEHL-ÜBEREINSTIMMUNG oder einen NICHT-TREFFER bewirkt. In diesem Fall ist der einzelne Zeichen-Code im Folgen-Code-Abschnitt 18 verfügbar und kann vom Controller 39 gelesen werden. Ein weiterer Weg zum Herstellen von Ein-Zeichen-Codes, wenn eine FEHL-ÜBEREINSTIMMUNG erfolgt, ist es zu bestimmen, ob der Ein-Zeichen-Code zuvor im Controller 39 gesehen wurde, und falls nicht, wird er der letzte Übereinstimmungscode sein, wenn eine FEHL-ÜBEREINSTIMMUNG erfolgt.
  • Auf die 2 Bezug nehmend, wird ein schematisches Blockdiagramm einer modifizierten Ausführungsform des Datenkomprimierungssystems, der 1 gezeigt, in dem ein Tabellenstufennmerkmal benutzt wird. Das Datenkomprimierungssystem 50 verwendet ein ähnliches oder erweitertes Wörterbuch 11 und eine mit 11A bezeichnete Tabellenstufe, die ein Teil des Wörterbuchs sein kann, wie hiernach erklärt wird. Man nehme zu Erläuterungszwecken an, dass der Datenstrom auf der Leitung 12 und im Puffer 13 und im Extraktor 14 derselbe wird wie der hier zuvor erläuterte. Dann wird das nächste Zeichen, falls erforderlich; immer auf der Leitung 15 für den Erweiterungszeichenabschnitt 17 verfügbar sein. Auf eine ähnliche Art und Weise ist der letzte Übereinstimmungscode im Puffer 22 auf der Leitung 27 für den Code-Abschnitt 18 des Zeigerregisters 16A verfügbar. In der modifizierten Ausführungsform wird das Zeigerregister 16A einschließlich eines Tabellenstufenblocks 51 gezeigt, der von einem Tabellenzähler 52 indiziert wird, der gezeigt wird, wie er Eingaben und eine Überlaufausgabe 40 rückgesetzt und gesetzt hat. Zusätzlich zum Zugriff auf das Wörterbuch 11 an der Zeigeradresse auf der Leitung 19 wird in Tabelle 11A an derselben Zeigeradresse wie die Wörterbuch-Zeigeradresse ein Tabellenstufenwert bereitgestellt. Wenn beispielsweise die Tabellenstufe in 11A gleichzeitig mit den Inhalten des Wörterbuchs 11 gelesen und im Tabellenstufenblock 53 gespeichert wird, kann sie am Logikblock 54 mit der aktuellen Tabellenebene im Block 51 verglichen werden. Wenn die Tabellenstufen vergleichbar sind, gibt es einen TREFFER, und wenn nicht, gibt es eine FEHL-ÜBEREINSTIMMUNG oder einen NICHT-TREFFER. Wenn der TREFFER auftritt, beginnt ein Signal auf der Leitung 55 die TREFFER-Logik im Block 56 und veranlasst das System 50, eine neue Zeigeradresse zu erzeugen. Die Erzeugung der neuen Zeigeradresse ist dieselbe wie die mit Bezug auf die 1 erläuterte, worin der letzte Übereinstimmungscode im Puffer 22 in den Folgen-Code-Abschnitt 18 des Adresszeigerregisters 16A gesetzt und das Erweiterungszeichen oder das nächste Zeichen im Eingabestrom aus dem Extraktor 14 dem nächsten Zeichen oder Erweiterungszeichenabschnitt 17 des Adresszeigerregisters 16A zugeführt wird.
  • Wenn jedoch in der Tabellenstufenlogik eine FEHLÜBEREINSTIMMUNG erfolgt, obwohl es einen Vergleich oder einen im Wörterbuch 11 vorhandenen Code hätte geben können, gibt es eine FEHL-ÜBEREINSTIMMUNG, und das System 50 führt, wie durch die Linie 57 gezeigt, eine FEHL-ÜBEREINSTIMMUNGS-Logik durch. Die FEHL-ÜBEREINSTIMMUNGS-Logik 58 bewirkt, dass der Code-Generator 59 den nächsten Folgen-Code schreibt und die Tabellenlogik 61 die aktuelle Tabellenstufe am Block 51 in das Wörterbuch 11 und die Tabellenstufe 11A an der Zeigeradresse schreibt.
  • Der in das Wörterbuch 11 zu schreibende neue Folgen-Code wird vom Logikblock 59 gestuft, und der Code ist für das Wörterbuch 11 verfügbar, damit er an der Adresszeigerstelle geschrieben wird. Auf eine ähnliche Art und Weise stellt die Tabellenlogik 61 gleich dem Block 51 die aktuelle Tabellenstufe bereit und wird durch das Schreib-Freigabesignal auf der Leitung 62 in dieselbe Stelle an der Tabellenstufe geschrieben.
  • Es wird verständlich sein, dass es, selbst wenn es an der Zeigeradresse Daten im Wörterbuch 11 gibt, keine Übereinstimmung oder keinen TREFFER gibt, bis nicht die Tabellenstufe 11A mit der aktuellen Tabellenstufe im Block 51 zusammenfällt und gleich dieser ist. Der Zweck für die Erweiterung des Wörterbuchs 11 liegt darin zu erlauben, dass das Wörterbuch völlig mit Folgen-Codes gefüllt wird, bis alle der zugewiesenen Folgen-Codes verwendet werden. Selbst wenn alle Folgen-Codes verwendet werden, werden nicht alle Adress-Stellen im Wörterbuch 11 verwendet. Wenn z. B. das Wörterbuch über 220 zugreifbare Adress-Stellen verfügt, gibt es etwa 1 Millionen mögliche Adressen. Wenn jedoch der LZW-Code nur Codes erzeugt, die 212 Bits verwenden, dann hat die Anzahl der vom Code-Generator 59 erzeugten Codes etwa 4.096 Codes, wobei das Wörterbuch voll ist, wenn die 4.096 Codes erschöpft sind. Durch das Hinzufügen des Tabellenstufenzusatzes zum Wörterbuch 11 ist es möglich, die Tabellenstufe zu ändern, wenn das Wörterbuch voll ist, und eine völlig neue Sequenz derselben Folgen-Codes neu zu starten, die der Code-Generator 59 erzeugt, ohne dass die Adressen im Wörterbuch, in denen die 4.096 Folgen-Codes geschrieben wurden, entleert oder gelöscht werden müssen. Anders dargelegt, wird jedesmal, wenn das Wörterbuch 11 mit der maximalen Anzahl an Folgen-Codes füllt, die Tabellenstufe 11A so implementiert, dass ein TREFFER nicht auftreten wird, sofern sich die Tabellenstufe 51 nicht mit der Tabellenebene an der Zeigeradresse vergleichbar ist. Wenn ein TREFFER erfolgt, wird eine neue Zeigeradresse auf dieselbe Art und Weise wie in Bezug auf die 1 erklärt erzeugt, worin der letzte Übereinstimmungscode auf der Leitung 27 in den Folgen-Code-Abschnitt 19 des Registers 16A gesetzt wird und das nächste Zeichen aus dem Datenstrom in den nächsten Zeichenabschnitt 17 des Registers 16A gesetzt wird. Wenn das Wörterbuch 11 voll ist, wird der Code-Generator 59 zurückgesetzt und dieselbe Sequenz an Folgen-Codes ganz neu gestartet, jedoch jetzt mit einer anderen Tabellenstufe verknüpft, da die Tabellenstufen Logik durch den Tabellenzähler 52 und den aktuellen Tabellenebenenblock 51 auf die nächst höhere Stufe gesetzt hat. Abhängig vom verwendeten Speicherchip sind Hunderte von Tabellenstufen verfügbar und das Wörterbuch 11 muss nicht rückgesetzt werden.
  • Man nehme auf die 3 Bezug, die ein vereinfachtes Diagramm einer Betriebssequenz zeigt, die benutzt wird, um eine Wörterbuchsuche auf eine einzige Adressenstelle im Datenkomprimierungs-Wörterbuch 11 einzuschränken. Der Block 66 zeigt einen Startbetrieb an, der mit der Initialisierung des Wörterbuchs und/oder dem Löschen des Wörterbuchs beginnt, wie hiernach detaillierter am Block 67 erläutert werden wird. Der nächste Betrieb ist die Initialisierung und/oder Löschung der Zeigeradresse und anderer Teile des Systems 10, wie am Block 68 gezeigt wird. Die Betriebe beginnen am Block 69, wo der "X" Bit Folgen-Code in den Folgen-Code-Abschnitt 18 des Zeigeradressregisters 16 gesetzt wird. Jedoch existiert kein Folgen-Code, wenn das erste Zeichen aus dem Datenstrom gelesen wird. Im Block 71 wird ein "Y" Bit Zeichen-Code in den Erweiterungszeichenabschnitt 17 gesetzt. Dies umfasst das zweite Zeichen im Datenstrom beim Starten oder das zweite Zeichen im Datenstrom für den zweiten Lesebetrieb. Eine eindeutige Zeigeradresse, die die zwei Codes verwendet, die in das Adresszeigerregister gesetzt werden, werden verwendet, um eine eindeutiche Zeigeradresse zu erzeugen, die, wie am Block 72 gezeigt, 2x+y Bits hat. Am Block 73 werden die Inhalte des Wörterbuchs 11 an der Zeigeradresse gelesen. Am Block 74 werden die Folgen-Codes-Inhalte des Wörterbuchs 11 in den Ausgabepuffer 22 gelesen, wie am Block 74 gezeigt wird. Wenn jedoch keine Inhalte vorliegen, dann wird die Entsprechung eines Keine-Inhalte-Codes zunächst in den Puffer 22 gelesen. Am Block 75 wird eine Entscheidung darüber gefällt, ob der aus dem Wörterbuch gelesene Folgen-Code ein zuvor gespeicherter Code oder das Nicht-Vorhandensein einer Information ist oder nicht. Für den Fall, dass ein Folgen-Code gelesen wird, gibt es, wie am Block 76 gezeigt, einen TREFFER und ein Vorrücken auf die TREFFER-Logik. Wenn kein TREFFER erfolgt, wird, wie am Block 77 gezeigt, auf die FEHL-ÜBEREINSTIMMUNGS-Logik vorgerückt.
  • Die Erläuterung für die 3 läßt sich direkt in Zusammenhang mit der 1 sowie der 2 lesen. Im Falle, dass man das Wörterbuch 11 nicht zu initiieren wünscht, ist es dennoch möglich, dieselbe Sequenz an Betrieben zu verwenden, vorausgesetzt, dass, wie in der 3A gezeigte, vorbereitende Schritte gemacht werden.
  • Man nehme auf die 3A Bezug, die denselben Start-Block 66 zeigt. Der Block 67A zeigt, dass das Wörterbuch 11 sowie das System solchermaßen gelöscht werden, und solchermaßen gibt es keine Code-Information im Wörterbuch 11, die zuvor aufgezeichnet wurde. Jedoch werden die Code-Werte für die Zeichenreihe von Zahlen reserviert, die sowohl dem Komprimierungssystem 10 als auch dem Decodierungssystem bekannt sind.
  • Am Block 78 wird zum Starten des System 10 das erste Zeichen im Datenstrom in den Folgen-Code-Abschnitt 18 des Registers 16 geladen.
  • Am Block 79 wird das zweite oder das nächste Zeichen im Datenstrom in den Erweiterungszeichen-Code-Abschnitt 17 des Registers 16 geladen.
  • Am Block 80 wird bestimmt, ob das Zeichen im Folgen-Code-Abschnitt 18 eine Ein-Zeichen-Folge ist und zuvor NICHT im Datenstrom aufgetreten ist. Wenn NICHT, wird das Zeichen im Abschnitt 18 als ein zuletzt übereinstimmender Code in das Pufferregister 22 geladen. Dieses Verfahren ist nicht der alleinige Weg zum Starten des Datenkomprimierungssystems 10 ohne die Initialisierung des Wörterbuchs 11, stellt jedoch ein System 10 bereit, das genauso arbeitet, als wäre es, wie mit Bezug auf die Blöcke 72 und 77 erläutert, initialisiert worden, nachdem im Block 80 die Bestimmung gemacht wurde. Obwohl die Ein-Zeichen-Codes im Wörterbuch 11 aufgezeichnet werden könnten, würde der Adresszeiger auf der Leitung 19 nicht auf sie zugreifen.
  • Am Block 78 wird in der 1 zum ersten Mal im System gezeigt, ob das erste Zeichen im Datenstrom in das Register 22 und auch in den Folgen-Code-Abschnitt 18 des Adressregisters 16 geladen wird. Als nächstes wird das Erweiterungszeichen oder das zweite Zeichen im Datenstrom in den Zeichen-Code-Abschnitt 17 des Adressregisters gesetzt, wie am Block 79 gezeigt wird. Wird das System einmal für den Start auf diese Art und Weise initiiert, wird es verständlich sein, dass in das Zeigeradressregister zwei unterschiedliche und unabhängige Zeichen gesetzt werden, und dass das. zuletzt übereinstimmende Zeichen, das das erste Zeichen des Datenstroms anzeigt, im Puffer 22 gesetzt wird. Diese Modifizierung der 3 verwendet die restlichen Blöcke 72–77, die mit den bis dato beschriebenen identisch sind und keine zusätzliche Erklärung benötigen.
  • Man nehme jetzt auf die 4 Bezug, die ein vereinfachtes Flussdiagramm zeigt, das über eine Sequenz an Betrieben verfügt, die verwendet wird, wenn die zugegriffene einzelne Wörterbuchadresse Folgen-Codes enthält, die zu einem TREFFER führen. Block 81 zeigt, dass der aus dem Wörterbuch 11 gelesene Folgen-Code einen Treffer anzeigt. Block 82 zeigt an, dass es wünschenswert ist, einen neuen Zeiger für eine längere Folge zu erzeugen. Block 83 zeigt an, dass der aus dem Wörterbuch gelesene Folgen-Code am Abschnitt 18 im Adressregister 16 gespeichert wird, und Block 84 zeigt, dass der Code für das nächste Zeichen im Eingabedatenstrom im Erweiterungszeichen-Abschnitt 17 des Zeigeradressregisters 16 gespeichert wird. Block 85 zeigt, dass eine neue Zeigeradresse mittels der Verwendung zweier Codes im Zeigeradressregister 16 gespeichert wird. Block. 86 zeigt an, dass die neuen Folgen-Code-Inhalte des Wörterbuchs 11 an der Zeigeradresse gelesen werden. Block 87 zeigt an, dass die Codeinhalte des Wörterbuchs im Pufferregister 22 gespeichert werden. Block 88 zeigt eine Logikbestimmung darüber-an, ob der aus dem Wörterbuch 11 gelesene Informationscode einen zuvor gespeicherten Code umfasst. Wenn ein Code aus dem Wörterbuch gelesen wird, gibt es einen TREFFER auf der Leitung 89, und die in den Blöcken 82 bis 88 gezeigte Betriebssequenz wird wiederholt. Wenn es keinen TREFFER gibt, gibt es eine FEHL-ÜBEREINSTIMMUNG, und die Betriebssequenz macht, wie am Block 91 gezeigt, mit der FEHL-ÜBEREINSTIMMUNGS-Logik weiter.
  • Man nehme auf die 5 Bezug, die ein vereinfachtes Flussdiagramm und die benutzte Betriebssequenz zeigt, wenn eine zugegriffene einzelne Wörterbuchadresse keinen Folgen-Code enthält, der zu einer FEHL-ÜBEREINSTIMMUNG führt, wie am Block 91A gezeigt- wird. Block 91A der 5 folgt der Logik, wenn eine FEHL-ÜBEREINSTIMMUNG auftritt. Zu Informationszwecken wird daran erinnert, dass, wenn eine FEHL-ÜBEREINSTIMMUNGS erfolgt, die Folge von Zeichen bis zu dem Punkt erweitert wurde, wo das letzte zur Folge hinzugefügte zusätzliche Zeichen die neue Folge so lang macht, dass es im Wörterbuch nicht mehr gefunden wird. Wenn dies geschieht, war der vorherige TREFFER die längste im Wörterbuch gefundene Übereinstimmung. Block 92 zeigt, dass dieser letzte übereinstimmende TREFFER-Code an einen Empfänger bzw. Decoder übertragen wird. Die letzte Übereinstimmung wird im Register 22 gehalten, so dass sie auf der Leitung 32 an einen Empfänger oder Decoder 33 ausgegeben werden kann. Block 93 zeigt den Betrieb zum Schreiben oder zum Speichern eines vom Code-Generator 59 erzeugten nächsten sequentiellen Codes an der Zeigeradresse in das Wörterbuch 11. Es wird verständlich sein, dass derselbe Code im Register 18 und der Code im zuletzt übereinstimmenden Puffer 22 identisch sind. Jedoch ist dies nicht der Code, der an der Zeigeradresse in das Wörterbuch geschrieben wird. Block 93 zeigt, dass ein nächster sequentieller Code in das Wörterbuch 11 geschrieben wird. Es ist nötig, eine neue Zeigeradresse mittels Verwendung der in den Blöcken 94 und 95 gezeigten und beschriebenen Logik zu erzeugen, worin der Code für den zuletzt in den Adressregister-Abschnitt 17 eingegebenen Erweiterungszeichencode in den Folgen-Code-Abschnitt 18 des Adresszeigerregisters 16 bewegt oder überführt wird. Ein neues Zeichen oder das nächste Erweiterungszeichen wird, wie jeweils durch die Blöcke 94 und 95 gezeigt, im Registerabschnitt 17 gespeichert. Block 96 zeigt an, dass die Information im Register 16 dann benutzt wird, um eine neue Zeigeradresse zu erzeugen, indem zwei Code-Abschnitte verwendet werden, die in das Register 16 geladen werden, wie in den Blöcken 94 und 95 gezeigt wird. Block 97 zeigt an, dass die Folgen-Code-Inhalte des Wörterbuchs 11 an der neuen Zeigeradresse aus dem Wörterbuch gelesen werden, und Block 98 zeigt, dass die Folgen-Code-Inhalte des Wörterbuchs 11 im Ausgabecodepuffer 22 gespeichert werden. Block 99 zeigt an, dass eine logische Bestimmung darüber gemacht wird, ob die aus dein Wörterbuch 11 gelesene Information einen zuvor gespeicherten Code umfasst, und, wenn dem so ist, macht die Logik am Block 101 weiter und zeigt einen logischen TREFFER an; wenn dem nicht so ist, rückt die Logik auf den Block 102 vor und zeigt eine logische FEHL-ÜBEREINSTIMMUNG. Die TREFFER- und die FEHL-ÜBEREINSTIMMUNGS-Logik werden jeweils an den 4 und 5 gezeigt, und in den Blöcken 101 und 102 wird jeweils darauf hingewiesen.
  • Man nehme jetzt auf die 6 Bezug, die eine schematische Zeichnung eines Blocks oder Moduls des Speichers zeigt, der für ein Wörterbuch 11 verwendet werden kann. Das Modul des Speichers 103 wird als 220 Zeilen tief und 16 Bit breit gezeigt. Die 16 Bits können für 12 Datenkomprimierungs-Codebits verwendet werden und die letzten 4 Bits für einte in einem Wörterbuch 11 eingeschlossene Tabellenstufe reserviert sein. Solchermaßen umfassen zwei Standardblöcke des Speichers, die etwa 1 Million Bits oder Zeilen tief und 16 Bits breit sind, eigentlich ein 2 Megabyte-Modul, das im Handel für etwa 2 Dollar erstanden werden kann. Dies läßt annehmen, dass die Module in 8 Bit Bytes kommen, und wenn miteinander verbunden, eine adressierbare 16 Bit breite Zeile bilden. Wie hiernach erklärt werden wird, kann dieses 2 Megabyte-Modul ohne Modifikation für ein Wörterbuch in der vorliegenden Erfindung verwendet werden, oder es kann für die Erweiterung der Tabelle durch das Hinzufügen zusätzlicher 4- oder 8-Bit Bytes geändert werden. Wenn die LZW-Datenkomprimierung durchgeführt wird, ist es normal, 9 bis 12 Bits im LZW-Code zu benutzen. Selten gibt es eine rechtfertigung für die Erweiterung der Code-Bits über 13 Bits hinaus; falls jedoch gerechtfertigt, können im Wörterbuch durch die Vergrößerung des Wörterbuchs mehr Code-Bits untergebracht werden.
  • Man nehme jetzt auf die 7 Bezug, die dieselbe Speichergröße wie ein Block oder Modul hat, der 221 Bits tief und nur 8 Bits oder 1 Byte breit ist. In dieser Anordnung ist es möglich, zwei Zeilen auf eine Art und Weise zu verwenden, in der zwei 8 Bit Bytes in Reihe geschaltet werden und zu einer äquivalenten Speicherspeicherung wie der in der 6 gezeigten führt. Jedes Modul des Speichers umfasst zwei Megabytes, selbst wenn sie verschieden verbunden werden, und die Kosten sind dieselben. Man nehme jetzt auf die 8 Bezug, die eine schematische Zeichnung dreier Blöcke oder Module des Speichers der in den 6 und 7 gezeigten Art zeigt, die jeweils zwei Megabytes des Speichers umfassen und mit 103A, B und C gekennzeichnet werden, um anzuzeigen, dass sie derselben wie in der 6 gezeigten Art sind. Wenn ein Wörterbuch aufgebaut ist, indem drei identische Module 103A bis 103C verwendet werden, ist es jetzt möglich, in einem einzigen Modul zu arbeiten, das das besetzte Modul darstellt, ein völlig leeres Modul zu haben, das entleert oder zurückgesetzt wurde, und ein weiteres Modul zu haben, das schon bis zur maximalen Anzahl an erlaubten und immer noch nicht entleert Folgen-Codes gefüllt war.
  • In der Erläuterung der 6-8 wurde die Anzahl der für die Komprimierungscodes verwendeten Bits als 12 Bits gezeigt. Mittels der Verwendung von 12 Bits ist es nur möglich, 4.096 eindeutige Folgen-Codes zu erzeugen. Wie mit Bezug auf die 1 und 2 erläutert, ist das Wörterbuch voll, wenn einmal die 4.096 eindeutigen Komprimierungscodes zugeordnet wurden, selbst wenn es etwa 1 Millionen Adressen gibt. Es ist jetzt möglich, bis zu sämtlichen 16 Bits der Module für die Komprimierungscodes zu verwenden, wenn das Bit-Tabellenstufen-11A-System zum Rücksetzen des Wörterbuchs vermieden wird. In der 6 wurden z. B. vier der 16 Bits für die mit Bezug auf die Ziffer 11A in 2 beschriebenen Tabellenstufenbetriebe reserviert. Solchermaßen verbleiben nur 12 Bits zur Bildung der Komprimierungscodes. Wenn jedoch die Tabellenstufe 11A ganz weggelassen ist, sind nun alle 16 Bits für die Komprimierungscodes verfügbar und es ist jetzt möglich, etwa 65.000 unterschiedliche Komprimierungscodes zu erzeugen, die dem System ermöglichen werden, falls erwünscht, längere Folgen zu erzeugen. Da nur 65.000 der möglichen 229 Adressen gefüllt werden, ist es jetzt möglich, ein Wörterbuch der in der 8 gezeigten Art zu konfigurieren, um die Anzahl der Codekomprimierungsbits zwischen 9 und 16 zu optimieren. Wenn das Wörterbuch einmal mit einer maximalen Anzahl an Codes gefüllt wird, die durch die Anzahl an ausgesuchten Code-Bits erlaubt sind, überträgt das Datenkomprimierungssystem einen Rücksetzcode an den Decoder oder Empfänger und fährt sofort zum nächsten Modul 103B vor, um neue Codes zu erzeugen und neue Folgen zu übertragen, ohne auf das Modul, das mit den Komprimierungscodes gefüllt war, zu warten und es aufzufrischen oder zu entleeren. Es kann möglich sein, diesen Betrieb auf alternative Art und Weise durchzuführen, so dass nur zwei Module verwendet werden; jedoch wird sichergestellt, dass ein Modul immer leer sein wird, während ein anderes Modul belegt ist, sofern drei Module bereitgestellt werden, weil man weiß, dass der Auffrischungs- bzw. der Entleerungsbetrieb zuvor im dritten Modul abgeschlossen werden kann, bevor das aktive Modul voll ist.
  • Nachdem eine vereinfachte Version zum Anordnen eines im Handel erhältlichen Speichers zum Vervollständigen eine Wörterbuchs 11 der in der vorliegenden Anmeldung beschriebenen Art erläutert wurde, wird man anerkennen, dass die Kosten der 32 Megabytes des Speichers jetzt etwa 20 Dollar betragen, und die Kosten eines Speichers der hierin beschriebenen Art werden sich in einer sehr kurzen Zeitspanne rentieren, indem die Computerbetriebszeit gesenkt wird. Dies ist speziell für große Computer oder Großrechner wahr.
  • Man nehme jetzt auf die 9 Bezug, die eine schematische Zeichnung zeigt, die über eine große Anzahl an Abschnitten oder Blöcken oder Modulen verfügt, die denen in der 8 gezeigten ähneln. Wenn es erwünscht ist, ein einziges Modul aufzufrischen oder zu entleeren, kann, wie am Block 105 gezeigt, ein Löschadresszähler verwendet werden, der zwei Megabytes Adress-Erzeugungsleistung hat. Es wird bevorzugt, alle Nullen in jede der Adressen und jedes der Module S1 bis S16 zu schreiben, wie an der Ziffer 106 gezeigt wird. Ein Multiplexer 107, der eine Auswahleingabe 108 hat, kann als Mittel zum Zeigen auf die Adresse in einem Abschnitt verwendet werden, die für die Ausschließung anderer Abschnitte gelöscht werden soll. Solchermaßen können zu einem Zeitpunkt ein Abschnitt ausgewählt und Nullen in jede der Adress-Stellen geschrieben werden, während andere Abschnitte des Wörterbuchs für das Datenkomprimierungssystem verwendet werden.
  • Man nehme jetzt auf die 10 Bezug, die eine schematische Zeichnung eines Wörterbuchs 11 und eine damit verknüpfte Struktur zum Löschen der Inhalte des Wörterbuchs zeigt, das es nicht nötig hat, jede mögliche Adresse im Wörterbuch zu überschreiben. Wenn der Adresszeiger auf der Leitung 19 auf eine Adresse im Wörterbuch 11 zugreift, ist es möglich, dieselbe Adresse in einen Hilfsspeicher 110 zu schreiben. Ein UND-Gatter oder eine ähnliche Vorrichtung 111 wird als Sperrvorrichtung arbeitend gezeigt, da es nur erforderlich ist, die Adresse aufzuzeichnen, wenn eine FEHL-ÜBEREINSTIMMUNG auftritt. Solchermaßen werden jedesmal, wenn die FEHL-ÜBEREINSTIMMUNG erfolgt, die Zählungen des Adresszählers 112 im Speicher 110 gestuft, so dass 4.096 Adressen, in denen während eines Datenkomprimierungsbetriebs Information gespeichert wird, in irgendeiner sequentiellen Reihenfolge im Speicher 110 gespeichert enden. Es ist nun möglich, diese Adressen zu verwenden, um einen Adresszeiger in Verbindung mit einem Löschadresszähler zu erzeugen, der alle Nullen erzeugt, damit nur die Adressen gelöscht werden, von denen bekannt ist, dass sie Information gespeichert hatten.
  • Es wird jetzt beobachtet werden, dass des Speicher, der nötig ist, um die Codespeicherung für 4096 Adressen zu implementieren, gut in denselben Speichermodulen wie denen für das Wörterbuch 11 verwendeten dargestellt sein können.
  • Nachdem die fundamentalen Grundsätze zur Durchführung der Datenkomprimierung ohne das Suchen-Müssen eines Wörterbuchs erläutert wurden, wird es verständlich sein, dass es zahlreiche Wege gibt, um das System zu implementieren. Der Speicher ist z. B. gegenwärtig so billig und wird noch billiger, dass ein zweckgebundener Speicher in den meisten Anwendungen gerechtfertigt werden kann, und falls eine zusätzliche Geschwindigkeit von Nöten ist, können einige der gezeigten Schritte und Betriebe von einer billigen zweckgebundenen Hardware-Implementierung ausgeführt werden, die die in den 15 gezeigten Algorithmen und Schritte verkörpert.
  • Nachdem erklärt wurde, wie die Tabelle oder die Tabellenstufe 11A beseitigt werden kann, indem der billige Speicher ersetzt wird, ist es wünschenswert, die Tabellenstufenimplementierung- zu verwenden, wenn das ganze System in der Software ausgeführt ist.
  • Wenn es erwünscht ist, die Datenkomprimierung mittels Verwendung eines Mehrprozessorsystems auf großen Dateien durchzuführen, ist es möglich, die Geschwindigkeit der Datenkomprimierung zu optimieren, indem die vorliegende Erfindung und einer der vielen Prozessoren verwendet wird, um die Datenkomprimierung durchzuführen, bis sein Speicher voll ist, und dann den Daten strom auf einen zweiten Prozessor im Datenkomprimierungsstrom zu schalten und mit der Durchführung der Datenkomprimierung fortzufahren, während der erste Prozessor sein Wörterbuch leert.
  • Führende Hersteller, die Umsätze und das Inventar an. ein Zentralverarbeitungssystem übertragen, werden jetzt in der Lage sein, ihre Daten in Echtzeit zu komprimieren und sie schneller über Verbindungen zu senden, die genug Bandbreite haben. Wenn die Nachrichtenverbindung langsamer als das Datenkomprimierungssystem ist, können die komprimierten Daten schnell in einem Puffersystem gespeichert und so schnell übertragen werden wie es die Verbindung erlaubt, ohne das Computersystem zu beeinträchtigen, das die Datenkomprimierung durchführt.
  • Nachdem ein Wörterbuch und ein Adresszeiger der bevorzugten Ausführungsform erläutert wurden, die in einem einzigen Lesebetrieb bestimmen, ob für die gesuchte Zeichenfolge ein Code oder Wert im Wörterbuch gespeichert wurde oder nicht, wird es verständlich sein, dass die Erfindung in der Software in einem Computer ausgeführt oder mittels Verwendung einer Hardware und einer Software implementiert sein kann. Es gibt Vorteile. zur Initialisierung des Wörterbuchs mit der Code-Reihe von Zeichen sowie zur Nicht-Initialisierung des Wörterbuchs, wenn der Sender und der Empfänger beide von der verwendeten Code-Reihe Kenntnis haben können. Wenn es irgendeinen Zweifel gibt, können die Code-Reihe und das Protokoll vor den komprimierten Daten übertragen werden. Wenn das Wörterbuch nicht mit der Code-Reihe initialisiert wird, kompensiert der Komprimierer anfänglich den Mangel aus, dass einzelne Zeichen-Codes im Wörterbuch gespeichert sind. Wenn jedoch mehrere Zeichen-Folgen-Codes im Wörterbuch gespeichert sind, wird der neuartige Adresszeiger dasselbe neuartige TREFFER- oder FEHL-ÜBEREINSTIMMUNGS-Ergebnis erzeugen. In der modifizierten Tabellenstufen-Ausführungsform ist es möglich, dieselben mehrfachen Folgen-Codes an verschiedenen Tabellenstufen in unterschiedliche Adressen zu schreiben. Da nur eine Tabellenstufe gültig ist, gibt es während der Datenkomprimierungsbetriebe, in denen eine neue Sequenz an Folgen-Codewerten in das Wörterbuch geschrieben werden, keinen Konflikt, solange nicht der richtige zuletzt übereinstimmende Code bekannt und für das Schreiben in das Register 18 an den Puffer 22 gelesen wird, sofern ein TREFFER erfolgt. Anders erläutert, kann die Tabellenstufe allein an der Zeigeradresse verwendet werden, um zu bestimmen, ob ein TREFFER oder eine FEHL-ÜBEREINSTIMMUNG erfolgte. Im Anschluss an jeden TREFFER ist der zuletzt übereinstimmende Code verfügbar, um die nächste Zeigeradresse aufzubauen. Im Anschluss an eine FEHL-ÜBEREINSTIMMUNG umfasst die nächste Zeigeradresse zwei Ein-Zeichen-Codes, die außerhalb vom Wörterbuch zur Verfügung stehen; solchermaßen ist es nur nötig, den letzten übereinstimmenden Code zu haben, wenn ein TREFFER erfolgt, um Tabellenstufen zu verwenden, damit ein TREFFER oder eine FEHL-ÜBEREINSTIMMUNG bestimmt wird.

Claims (18)

  1. Ein Verfahren zur Komprimierung von seriellen Strömen von Daten indem Codewerte für Folgen von Zeichen substituiert werden, die vorher im Datenstrom beobachtet wurden, wobei sukzessiv längere Folgen von Datenzeichen erzeugt werden indem neue Erweitungszeichen vom Datenstrom an Folgen von Zeichen angehängt werden, die gesucht wurden und in einem Zeichenwörterbuch gefunden wurden, und worin die längste übereinstimmende Folge bestimmt wird, wenn das nächste hinzugefügte Erweiterungszeichen eine neue Folge erzeugt, die vorher nicht im Wörterbuch (11) gespeichert wurde, woraufhin die neue Folge im Wörterbuch an einer nächsten sequentiell verfügbaren Adresse im Wörterbuch (11) gespeichert wird und ein Code (@33) für die Adresse, an der die längste übereinstimmende Folge vorher gespeichert wurde, an Speicher ausgegeben wird oder an einen Dekoder mit dem Erweiterungszeichen, das die neue Folge erzeugte, gekennzeichnet durch die folgenden Schritte: Durchführung von Ein-Schritt-Suchvorgängen in einem Wörterbuch (11), das numerische Folgen-Codes enthält, die für Folgen von Zeichen ersetzt wurden, die vorher im Datenstrom beobachtet wurden, Speichern von Folgen-Codes (93) im Wörterbuch, die neue Folgen von Daten darstellen, wenn die Folge zuerst im Datenstrom (12) begegnet wird, anstatt von Speichern von Folgen von Zeichen im Wörterbuch, Konvertierung von Folgen von Zeichen (12), die im Wörterbuch gesucht werden sollen, in eindeutige Zeigeradressen, die die Folgen-Codes (69) umfassen, die vom Wörterbuch (11) an der Zeigeradresse gelesen wurden, die mit dem nächsten Erweiterungszeichen (71) vom Datenstrom, das an den Folgen-Code (69) angehängt wurde, gesucht wird, um eine neue Zeigeradresse (72), die in einem Schritt im Wörterbuch gesucht werden soll, zu erzeugen, Lesen von Folgen-Codes vom Wörterbuch an der neuen Zeigeradresse (73) bis kein Folgen-Code im Wörterbuch an der neuen Zeigeradresse gefunden wird, Speichern des nächsten sequentiellen Folgen-Codes (93) im Wörterbuch an der neuen Zeigeradresse, Ausgeben des letzten Folgen-Codes (92), der vom Wörterbuch an der Zeigeradresse vor der letzten neuen Zeigeradresse gelesen wurde.
  2. Ein Verfahren gemäß Anspruch 1, das weiterhin das Starten von neuen Suchen nach der Ausgabe des letzten Folgen-Codes (92) einschließt, der vom Wörterbuch (11) gelesen wurde, das weiterhin folgendes einschließt: Konvertierung des letzten Erweiterungszeichens, das vom Datenstrom gelesen wurde, und des nächsten Erweiterungszeichens, das vom Datenstrom in eine neue Zeigeradresse: (96) gelesen wurde, um eine neue Suche im Wörterbuch zu starten.
  3. Das Verfahren gemäß Anspruch 1, worin der Schritt der Durchführung von Ein-Schritt-Suchvorgängen folgendes umfasst: die simultane Bestimmung (@22) vom Folgen-Code-Inhalten, die vom Wörterbuch (11) an der Zeigeradresse (19) gelesen wurden (@21), dass die Folge, die gesucht wird, nicht eine neue Folge ist, und dass eine neue Zeigeradresse (34) für eine neue Folge und die neuen Folgen-Suchvorgänge erzeugt werden muss.
  4. Das Verfahren gemäß Anspruch 1, worin der Schritt der Speicherung des nächsten sequentiellen Folgen-Codes (@93) im Wörterbuch (11) die Inkrementierung eines Codezählers (59) umfasst, um den nächsten sequentieller. Folgen-Code bereitzustellen.
  5. Ein Verfahren gemäß Anspruch 3, das weiterhin einen Schritt einschließt: Bestimmung (@54), ob der Folgen-Code, der vom Wörterbuch gelesen wurde, der Folgen-Code mit der höchsten Nummer ist, der verwendet werden soll, um anzuzeigen, dass das Wörterbuch voll ist.
  6. Ein Verfahren gemäß Anspruch 5, das weiterhin folgendes einschließt: Bereitstellung eines Tabellen-Stufen-Speichers (11A), der mit den Inhalten des Wörterbuchs (11) an jeder Adresse im Wörterbuch verknüpft ist, Einstellen eines Stufenwerts (@61) im Tabellen-Stufen-Speicher (11A) zu jedem Zeitpunkt, zu dem ein eindeutiger Folgen-Code im Wörterbuch (11) gespeichert wird, Einstellen eines höheren Stufenwerts im Tabellen-Stufen-Speicher (11A), wenn bestimmt wurde (@54), dass das Wörterbuch voll ist, und wobei der Schritt der Bestimmung von den Inhalten, die vom Wörterbuch gelesen wurden, weiterhin die Bestimmung (@54) umfasst, dass der Tabellen-Stufenwert an einer eindeutigen Zeigeradresse einem vorherbestimmten Tabellen-Stufenwert entspricht, der anzeigt, dass der Code für die Folge, die gesucht wird, im Wörterbuch vorhanden ist.
  7. Das Verfahren gemäß Anspruch 1, worin der Folgen-Code, der vom Wörterbuch an der Zeigeradresse gelesen wird (@22), eine. vorher auftretende Folge darstellt, Fortfahren (@76) mit der Erzeugung von neuen Zeigeradressen (@56) , Fortfahren mit dem Lesen (@86) von vorher gespeicherten Folgen-Codes vom Wörterbuch (11) an der neuen Zeigeradresse (@19) , und Erstrecken der Länge der Folgen, die durch die Adresszeiger dargestellt werden, und zwar zu jedem Zeitpunkt, zu dem eine vorherige Folge gefunden wird.
  8. Das Verfahren gemäß Anspruch 1, worin der Code, der an der neuen Zeigeradresse gelesen wird (@22), keine vorher auftretende Folge darstellt, und Erzeugen einer neuen Zeigeradresse (@56, 96), die den Code für das letzte Zeichen (@18) umfasst, das von der vorher gespeicherten Folge genommen wurde, und das nächste Zeichen (@17) vom eingegebenen Datenstrom, der daran angehängt wurde.
  9. Ein Verfahren gemäß Anspruch 8, das weiterhin das Senden des letzten übereinstimmenden Folgen-Codes (@33, 92) an einen Empfänger oder einen Decoder einschließt, und Speichern von eindeutigen neuen Folgen-Codewerten (93) im Wörterbuch an der Zeigeradresse, wobei der neue eindeutige Folgen-Codewert einen sequentiellen Wert umfasst, der durch einen Codegenerator (59) erzeugt wird.
  10. Ein Datenkomprimierungssystem für die Komprimierung von seriellen Strömen von Daten indem Codewerte für Folgen von Zeichen, die vorher im Datenstrom beobachtet wurden, substituiert werden, und nachfolgend längere Folgen von Zeichen durch das Anhängen von neuen Erstreckungszeichen (17) vom Datenstrom erzeugt werden, wenn die Folge, die gesucht wird, in einem Folgenwörterbuch (11) gefunden wird, wobei das Wörterbuch einen Speicher umfasst, in dem alte Folgen, die vorher beobachtet wurden, gespeichert werden, und wobei Mittel zum Suchen von einer neuen Folgen im Wörterbuch Mittel einschließen, um eine neue Folge mit alten im Wörterbuch gespeicherten Folgen zu vergleichen, und worin neue Folgen, die im Wörterbuch nicht gefunden werden, an der nächsten sequentiellen offenen Adresse im Speicher gespeichert werden, nachdem die Speicherstellen, an denen eine übereinstimmende Folge gefunden werden kann, gesucht werden, das folgendes umfasst: ein Folgen-Code-Wörterbuch (11), das eine Speicheradresse für jede mögliche Folge umfasst, die im seriellen Datenstrom beobachtet werden kann, wobei das Wörterbuch (11) Mittel umfasst, um Folgen-Codewerte für Folgen von Zeichen zu speichern, wenn diese zuerst im Datenstrom (12) im Wörterbuch (11) beobachtet werden, Zeigeradressmittel (17, 18) zur Konvertierung von Folgen von Zeichen, die im Wörterbuch (11) gesucht werden sollen, in eindeutige Zeigeradressen (@19), wobei die Zeigeradressen einen bekannten Folgeabschnitt (18) und einen nächsten Zeichenabschnitt (17) umfassen, worin der nächste Zeichenabschnitt vom eingegebenen Datenstrom (@14) genommen wird und an den Folgen-Code-Abschnitt (18) angehängt wird, der vom Wörterbuch gelesen wurde, um eine eindeutige Zeigeradresse (@19) zu bilden, Mittel zum Lesen (@19, 21) von Inhalten des Wörterbuchs (11) an der eindeutige Zeigeradresse, die eine im Wörterbuch (11) gesuchte Folge darstellt, wobei die Zeigeradressmittel weiterhin Mittel umfassen, um eine neue eindeutige Zeigeradresse (@31, 34) zu erzeugen, die den Codewert (@22) umfasst, der vom Wörterbuch an der letzten Zeigeradresse gelesen wurde (@30), und das nächste Zeichen (14) im eingegebenen Datenstrom (12), und Mittel (22) zur Bestimmung von den Inhalten, die vom Folgen-Code-Wörterbuch in einem einzigen Lese-Suchdurchgang gelesen wurden, ob die Folge, die gerade gelesen wird, die längste übereinstimmende Folge im Wörterbuch ist oder nicht, oder ob ein Erweitungszeichen hinzuzufügen ist, um eine neue längere Folgenzeigeradresse zu erzeugen.
  11. Ein Datenkomprimierungssystem gemäß Anspruch 10, worin die Mittel (22) zur Bestimmung Pufferregistermittel umfassen, um Folgen-Codewerte zu erhalten und zu speichern, die vom Wörterbuch (11) gelesen wurden, die mehrere Zeichenfolgen anzeigen, die vorher im eingegebenen Datenstrom (12) aufgetreten sind, und Mittel (33) zur Übertragung an einen Empfänger des Folgen-Codes für die längste übereinstimmende Folge von Zeichen, die im eingegebenen Datenstrom gefunden wurde.
  12. Ein Datenkomprimierungssystem gemäß Anspruch 10, worin die Mittel (22) zur Bestimmung Pufferregistermittel umfassen, um Werte zu empfangen, die vom Folgen-Code-Wörterbuch (11) gelesen wurden, die anzeigen, dass ein Folgen-Code im Wörterbuch an der Zeigeradresse nicht vorhanden ist, und Folgen-Codeerzeugungsmittel (59) zum Schreiben in das Wörterbuch eines eindeutigen Folgen-Codewerts, der für die Folge von Zeichen im eingegebenen Datenstrom ersetzt werden soll, der durch die Zeigeradresse angezeigt wird.
  13. Ein Datenkomprimierungssystem gemäß Anspruch 12, worin die Zeigeradressmittel ein Register umfassen, um Zeigeradressen zu speichern, die eine Länge von 2n Bits haben, worin "n" 20 bis 23 ist.
  14. Ein Datenkomprimierungsystem gemäß Anspruch 12, worin das Folgen-Code-Wörterbuch einen Speicher umfasst, der mindestens 2n Zeigeradressen hat.
  15. Ein Datenkomprimierungssystem gemäß Anspruch 14, worin die Folgen-Codeerzeugungsmittel Mittel umfassen, um eindeutige Folgen-Codewerte (@59) mit einer veränderlichen Breite an verschiedenen Zeigeradressen zu erzeugen, und worin die Anzahl der möglichen Zeigeradressen die Anzahl der Codewerte übertrifft.
  16. Ein Datenkomprimierungssystem gemäß Anspruch 10, worin das Folgen-Code-Wörterbuch (11) mehrere Speicheradressen-Stellen umfasst als die Anzahl der Folgen-Codewerte, die veränderliche Breiten haben.
  17. Ein Datenkomprimierungssystem gemäß Anspruch 10, worin ein Abschnitt der Speicherstellen (in 11A) eine Tabelle zur Speicherung von Tabellenwerten in nicht verwendeten Bits umfasst.
  18. Ein Datenkomprimierungssystem gemäß Anspruch 10, worin das Folgen-Code-Wörterbuch (11) weiterhin einen verknüpften Tabellen-Stufenwert-Speicher (11A) umfasst, und Mittel zum Zurücksetzen der Tabellen-Stufenwerte (61) auf eine höhere Tabellenstufe, wenn das Wörterbuch voll mit Folgecodewerten an einer niedrigeren Tabellenstufe ist.
DE60002340T 1999-07-30 2000-07-19 Verfahren und vorrichtung zur reduzierung der datenkompressionszeit Expired - Lifetime DE60002340T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US364427 1999-07-30
US09/364,427 US6320523B1 (en) 1999-07-30 1999-07-30 Method and apparatus for reducing the time required for compressing data
PCT/US2000/019871 WO2001010037A1 (en) 1999-07-30 2000-07-19 Method and apparatus for reducing the time required for compressing data

Publications (2)

Publication Number Publication Date
DE60002340D1 DE60002340D1 (de) 2003-05-28
DE60002340T2 true DE60002340T2 (de) 2004-03-04

Family

ID=23434490

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60002340T Expired - Lifetime DE60002340T2 (de) 1999-07-30 2000-07-19 Verfahren und vorrichtung zur reduzierung der datenkompressionszeit

Country Status (5)

Country Link
US (1) US6320523B1 (de)
EP (1) EP1201036B1 (de)
JP (1) JP3611319B2 (de)
DE (1) DE60002340T2 (de)
WO (1) WO2001010037A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1374412A2 (de) * 2001-04-04 2004-01-02 Honeywell International Inc. Kanonische huffmankodierten daten dekomprimierungalgorithmus
US7500017B2 (en) * 2001-04-19 2009-03-03 Microsoft Corporation Method and system for providing an XML binary format
US7064688B2 (en) * 2001-07-09 2006-06-20 Good Technology, Inc. System and method for compressing data on a bandwidth-limited network
US20030009595A1 (en) * 2001-07-09 2003-01-09 Roger Collins System and method for compressing data using field-based code word generation
FR2838842B1 (fr) * 2002-04-22 2004-07-23 Barco View Texen Procede et dispositif de traitement de libelles, et produit programme d'ordinateur
US7173436B2 (en) * 2004-11-24 2007-02-06 Saab Rosemount Tank Radar Ag Antenna device for level gauging
US7167115B1 (en) 2005-08-26 2007-01-23 American Megatrends, Inc. Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
US8081184B1 (en) * 2006-05-05 2011-12-20 Nvidia Corporation Pixel shader program thread assembly
US7453377B2 (en) * 2006-08-09 2008-11-18 Reti Corporation Apparatus and methods for searching a pattern in a compressed data
US8819288B2 (en) * 2007-09-14 2014-08-26 Microsoft Corporation Optimized data stream compression using data-dependent chunking
US9325813B2 (en) * 2013-09-03 2016-04-26 Qualcomm Incorporated Formatting data packets for compression
US9690488B2 (en) * 2015-10-19 2017-06-27 Intel Corporation Data compression using accelerator with multiple search engines
CN108563796A (zh) * 2018-05-04 2018-09-21 蔷薇信息技术有限公司 区块链的数据压缩处理方法、装置及电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4881075A (en) * 1987-10-15 1989-11-14 Digital Equipment Corporation Method and apparatus for adaptive data compression
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US4929946A (en) * 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5151697A (en) * 1990-10-15 1992-09-29 Board Of Regents Of The University Of Washington Data structure management tagging system
US5373290A (en) * 1991-09-25 1994-12-13 Hewlett-Packard Corporation Apparatus and method for managing multiple dictionaries in content addressable memory based data compression
US5229768A (en) 1992-01-29 1993-07-20 Traveling Software, Inc. Adaptive data compression system
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5389922A (en) * 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
KR100260827B1 (ko) * 1994-06-16 2000-07-01 야스카와 히데아키 데이타 압축방법, 데이타 복원방법 및 정보처리 장치
US5642112A (en) * 1994-12-29 1997-06-24 Unisys Corporation Method and apparatus for performing LZW data compression utilizing an associative memory
US5815096A (en) * 1995-09-13 1998-09-29 Bmc Software, Inc. Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
US5798718A (en) * 1997-05-12 1998-08-25 Lexmark International, Inc. Sliding window data compression method and apparatus

Also Published As

Publication number Publication date
WO2001010037A1 (en) 2001-02-08
JP2003521140A (ja) 2003-07-08
DE60002340D1 (de) 2003-05-28
US6320523B1 (en) 2001-11-20
EP1201036A1 (de) 2002-05-02
EP1201036B1 (de) 2003-04-23
JP3611319B2 (ja) 2005-01-19

Similar Documents

Publication Publication Date Title
DE60002340T2 (de) Verfahren und vorrichtung zur reduzierung der datenkompressionszeit
DE69737892T2 (de) Lempel-Ziv Datenkompressionsverfahren unter Verwendung eines Wörterbuches mit häufig auftretenden Buchstabenkombinationen, Wörtern und/oder Sätzen
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE2264090C3 (de) Datenverdichtung
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE69633730T2 (de) Verfahren zur kompression/dekompression von bilddateien
US3694813A (en) Method of achieving data compaction utilizing variable-length dependent coding techniques
US4494108A (en) Adaptive source modeling for data file compression within bounded memory
US5936560A (en) Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed
DE60129643T2 (de) Verfahren und Gerät für die Ermittlung vom längsten Prefixzusammenbringen in einem Kommunikationsnetz
EP0230437B1 (de) Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchführung des verfahrens
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
DE69834695T2 (de) Verfahren und Vorrichtung zur Datenkompression
DE19622045A1 (de) Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
Schuegraf et al. A comparison of algorithms for data base compression by use of fragments as language elements
DE3545125A1 (de) Zeichenfolgen-komparator
JPH08167852A (ja) データ圧縮方法及び装置
DE60120739T2 (de) Datenkomprimierungs/dekomprimierungsverfahren und gerät mit eingebetteter filterung der unhäufigen ketten
DE60008871T2 (de) Datenkomprimierungsverfahren und vorrichtung mit eingebetteter lauflängenkodierung unter benutzung von mathematischer laufverarbeitung
DE69133377T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Daten
DE69723019T2 (de) Arithmetische Bildkodierung
DE4432436C2 (de) Datenkompressionsverfahren und Vorrichtung zum Komprimieren von Daten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition