DE69833094T2 - Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad - Google Patents

Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad Download PDF

Info

Publication number
DE69833094T2
DE69833094T2 DE69833094T DE69833094T DE69833094T2 DE 69833094 T2 DE69833094 T2 DE 69833094T2 DE 69833094 T DE69833094 T DE 69833094T DE 69833094 T DE69833094 T DE 69833094T DE 69833094 T2 DE69833094 T2 DE 69833094T2
Authority
DE
Germany
Prior art keywords
data
byte
uncompressed
counter
incoming
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
DE69833094T
Other languages
English (en)
Other versions
DE69833094D1 (de
Inventor
David John Austin Craft
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69833094D1 publication Critical patent/DE69833094D1/de
Publication of DE69833094T2 publication Critical patent/DE69833094T2/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
    • 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
    • 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur Datenkomprimierung im Allgemeinen und insbesondere ein Verfahren und eine Vorrichtung zur Ausführung einer adaptiven Datenkomprimierung. Insbesondere betrifft die vorliegende Erfindung ein Verfahren und eine Vorrichtung zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für einen adaptiven Datenkomprimierer (adaptive data compressor).
  • Die Art von Daten, die einem Komprimierungsalgorithmus zur Komprimierung vorgelegt werden, kann enorm variieren. Deshalb werden die meisten Komprimierungsalgorithmen von der Art her adaptiv ausgelegt, um eine bessere Komprimierungsleistung über einen weiten Bereich von Datenarten zu erreichen. Sowohl der klassische Lempel-Ziv 1 (LZ_1) als auch der Komprimierungsalgorithmus Lempel-Ziv 2 (LZ_2) verkörpern dieses Konzept zu einem gewissen Grad.
  • Im Falle des LZ_1 wird jedes verarbeitete Byte in einen Ereignis-Puffer (history-buffer) verschoben, der zu Beginn leer ist. Diesen Ereignis-Puffer kann man sich als ein Schieberegister mit einer Breite von einem Byte vorstellen, und sobald der Ereignis-Puffer vollständig gefüllt ist, ersetzt jedes neue eingehende Datenbyte das älteste Datenbyte in dem Ereignis-Puffer. Der aktuelle Inhalt des Ereignis-Puffers wird mit den eingehenden Daten verglichen, um alle Zeichenketten oder Sequenzen eingehender Datenbytes, die mit früher vorhandenen noch immer in dem Ereignis-Puffer verbleibenden übereinstimmen, zu identifizieren. Diese eingehende Datensequenz wird dann in eine kompaktere Form codiert, wodurch der Startpunkt der übereinstimmenden Zeichenkette innerhalb des Ereignis-Puffers und die Länge der übereinstimmenden Zeichenkette definiert werden, und dies bildet die Grundlage des LZ_1 Komprimierungsalgorithmus.
  • Ein LZ_1 Dekomprimierer (decompressor) pflegt einen Ereignis-Puffer mit einer identischen Datenvorgeschichte wie der Ereignis-Puffer innerhalb des LZ_1 Komprimierers und kopiert lediglich solche Zeichenketten als dessen Ausgabe, wenn er einen Verweis decodiert.
  • Im Falle des LZ_2 wird ein Verzeichnis von Datensequenzen gepflegt, und Verweise auf diese Verzeichniseinträge bilden die Grundlage des LZ_2 Komprimierungsalgorithmus. Es ist nicht nötig, eine Länge zu decodieren, wenn die eingehenden Daten mit einem der Verzeichniseinträge übereinstimmen, da die Länge ebenfalls in dem Verzeichnis gespeichert ist. Deshalb besteht eine komprimierte Datenausgabe von einem LZ_2 Komprimierungsalgorithmus normalerweise lediglich aus einer Sequenz von Zahlen, die Verzeichniseinträge darstellen. Adaptive LZ_2-Ausführungen fügen kontinuierlich auf Basis der eingehenden Daten neue Verzeichniseinträge hinzu. Wie im Falle von LZ_1 beginnen sowohl der LZ_2 Komprimierer als auch der LZ_2 Dekomprimierer mit einer identischen Struktur und behalten diese bei, obwohl im Falle von LZ_2 unterschiedliche Verwaltungsstrategien verwendet werden, wenn das Verzeichnis voll wird.
  • Üblicherweise werden in einem zu komprimierenden Datenstrom häufig Sequenzen von identischen Zeichen gefunden, allgemein als „Läufe" (runs) bekannt. Ausführbarer Code enthält zum Beispiel häufig signifikante Läufe von „00" Zeichen. Ebenso erzeugen Code-Kompilierer häufig Leerdaten zur Initialisierung von Datenelementen (arrays) oder Variablen in einen bekannten Zustand. Des Weiteren ordnet eine Datenbanksoftware häufig Datenfelder zu, die entweder vollständig leere oder ausschließlich aus Nullen bestehende Zeichen aufweisen.
  • Außerdem enthalten binäre Bitmapbilderdaten häufig ziemlich viele „Leerstellen" (whitespaces), üblicherweise „00"-Zeichen, die acht Pixel darstellen, die alle leer sind. Im Übrigen können Grauskala- oder Farbbilderdaten, besonders die unter Verwendung eines Bytes pro Pixel codiert sind, ebenfalls lange Läufe identischer Datenbytes enthalten.
  • Diese Arten von Läufen können zu überflüssigen und unproduktiven Anpassungen innerhalb eines Datenkomprimierers führen. Des Weiteren dauert es eine Weile, bis der Datenkomprimierer sein optimales Komprimierungsverhältnis nach dem Lauf wieder aufnimmt, da ein Ereignis-Puff er in LZ_1 oder ein Verzeichnis in LZ_2 leicht mit identischen Datenbytes aus einem Lauf zum Überlaufen gebracht werden kann. Folglich wäre es wünschenswert, ein Verfahren und eine Vorrichtung bereitzustellen, um einem Datenkomprimierer eine bessere Datenkomprimierungsleistung zu bieten, so dass es dem Datenkomprimierer möglich sein kann, seine optimale Komprimierungsleistung nach dem Auftreten eines Laufs schneller wieder aufzunehmen.
  • Abdat M, u.a. offenbaren in „Adaptive limitation of the dictionary size in LZW data compression", Proceedings of 1995 IEEE International Symposium on Information Theory, Seite 18, 1995, eine Lauflängencodierung (run-length encoding) kombiniert mit dem LZW-Algorithmus. Die Lauflängencodierung entfernt die wiederholten Symbole aus den Eingabedaten. Die Zahl N der Wiederholungen muss größer als ein vordefinierter Schwellwert sein, um einen Lauflängencode auszugeben.
  • Angesichts des Vorangehenden ist es deshalb eine Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren und eine verbesserte Vorrichtung zur Komprimierung von Daten bereitzustellen.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren und eine verbesserte Vorrichtung zur Durchführung einer adaptiven Datenkomprimierung bereitzustellen.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren und eine verbesserte Vorrichtung zur Bereitstellung einer besseren Datenkomprimierungsleistung für einen adaptiven Datenkomprimierer bereitzustellen.
  • In Übereinstimmung mit einem Verfahren der vorliegenden Erfindung wird ein unkomprimierter Datenstrom an eine Datenkomprimiereinheit gesendet. Aber bevor der unkomprimierte Datenstrom an die Datenkomprimiereinheit gesendet wird, wird zunächst ein eingehendes Datenbyte aus dem unkomprimierten Datenstrom mit dem vorhergehenden Datenbyte aus dem unkomprimierten Datenstrom verglichen. Ein erster Zählerwert wird als Reaktion auf eine Übereinstimmung zwischen dem eingehenden Datenbyte und dem vorhergehenden Datenbyte erhöht. Ein zweiter Zählerwert wird dann als Reaktion auf nachfolgende Übereinstimmungen zwischen einem eingehenden Datenbyte und dessen vorhergehendem Datenbyte erhöht, nachdem der erste Zählerwert einen voreingestellten Wert erreicht hat. Der zweite Zählerwert wird schließlich nach Beendung eines Laufs des eingehenden Datenbytes als Ersatz für einen Teil des Laufs an die Datenkomprimiereinheit gesendet, so dass die Datenkomprimiereinheit ihr optimales Komprimierungsverhältnis schnell Wiederaufnehmen kann, nachdem der Lauf innerhalb des unkomprimierten Datenstroms aufgetreten ist.
  • Die Erfindung versteht man am Besten unter Bezugnahme auf die folgende ausführliche Beschreibung eines erläuternden Ausführungsbeispiels, wenn diese in Verbindung mit den beigefügten Zeichnungen gelesen wird, in denen:
  • 1a ein Blockschaltbild einer Datenkomprimiereinheit darstellt, in der ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung enthalten sein kann;
  • 1b ein Blockschaltbild einer Datendekomprimiereinheit darstellt, in der ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung enthalten sein kann;
  • 2 ein Blockschaltbild eines Datenvorkomprimierers (data pre-compressor) zur Bereitstellung einer verbesserten Komprimierungsleistung für eine Datenkomprimiereinheit in Übereinstimmung mit einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt;
  • 3 ein Zustandsdiagramm eines Verfahrens zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für einen Datenvorkomprimierer in Übereinstimmung mit einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt; und
  • 4 ein Zustandsdiagramm eines Verfahrens zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für einen Datennachkomprimierer (data post-compressor) in Übereinstimmung mit einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt.
  • Die vorliegende Erfindung kann zusammen mit vielen Arten von adaptiven Datenkomprimierungsalgorithmen umgesetzt werden, zum Beispiel Lempel-Ziv 1, Lempel-Ziv 2 usw. Fachleute werden verstehen, dass die vorliegende Erfindung entweder in Hardware oder in Software ausgeführt werden kann.
  • Unter Bezugnahme auf die Zeichnungen, und insbesondere auf 1a, ist ein Blockschaltbild einer Datenkomprimiereinheit abgebildet, in der eine bevorzugte Ausführungsform der vorliegenden Erfindung enthalten sein kann. Wie gezeigt, ist die Komprimiereinheit (compressor unit) 10 mit einer Steuereinheit (Controller) 11 und einem Direktzugriffsspeicher (RAM) oder einem inhaltsadressierbaren Speicher (contentaddressable memory", CAM) 12 gekoppelt.
  • Jede Art adaptiver Komprimierungsalgorithmen kann innerhalb der Komprimiereinheit 10 realisiert werden. Zu Beispiele für adaptive Komprimierungsalgorithmen gehören klassische Algorithmen wie zum Beispiel Lempel-Ziv 1 und Lempel-Ziv 2, die den Fachleuten bekannt sind, oder ein aktuellerer Algorithmus wie zum Beispiel „Adaptive Lossless Data Compression" (ALDC), beschrieben in „QIC Development Standard QIC-154", Revision A, 10. März 1994, Quarter-Inch Cartridge Drive Standards, Inc. Alle dem gewählten Komprimierungsalgorithmus zugeordnete Datenstrukturen wie zum Beispiel ein Ereignis-Puffer für Lempel-Ziv 1 oder ein Verzeichnis für Lempel-Ziv 2 werden innerhalb des RAM/CAM 12 behalten. Deshalb hängt die optimale Größe des RAM/CAM 12 von der Art des innerhalb der Komprimiereinheit 10 verwendeten Komprimierungsalgorithmus ab. Während des Betriebs empfängt die Komprimiereinheit 10 zunächst einen unkomprimierten Datenstrom von einer Datenquelle 13. Nach der Datencodierung wird ein komprimierter Datenstrom an eine Datensenke 14 übertragen.
  • Unter Bezugnahme auf 1b ist ein Blockschaltbilds einer Datendekomprimiereinheit abgebildet, in der eine bevorzugtes Ausführungsform der vorliegenden Erfindung enthalten sein kann. Wie gezeigt, ist die Dekomprimiereinheit (decompressor unit) 15 mit einer Steuereinheit 16 und einem RAM 17 verbunden. Ähnlich wie bei RAM 12 werden alle Datenstrukturen für die Dekomprimiereinheit 15 innerhalb des RAM 17 behalten, und die Größe des RAM 17 hängt von der Art des innerhalb der Komprimiereinheit 10 verwendeten Komprimierungsalgorithmus ab.
  • Während des Betriebs empfängt die Dekomprimiereinheit 15 zunächst einen komprimierten Datenstrom von der Datenquelle 19. Nach der Datendecodierung wird ein unkomprimierter Datenstrom von der Dekomprimiereinheit 15 an eine Datensenke 18 übertragen.
  • Unter Bezugnahme auf 2 wird ein Blockschaltbild eines Datenvorkomprimierers zur Bereitstellung einer verbesserten Komprimierungsleistung für die Datenkomprimiereinheit 10 aus 1a in Übereinstimmung mit einer bevorzugten Ausführungsform der vorliegenden Erfindung dargestellt. Die Vorkomprimiereinheit 20 ist vorzugsweise zwischen der Datenquelle 13 und der Komprimiereinheit 10 geschaltet. Wie gezeigt enthält die Vorkomprimiereinheit 20 ein erstes Register 22, ein zweites Register 23, einen Komparator 24, einen ersten Zähler 25, einen zweiten Zähler 26 und einen Multiplexer 21.
  • Während des Betriebs wird jedes eingehende Datenbyte von einem unkomprimierten Datenstrom zunächst in dem ersten Register 22 gespeichert.
  • Dieses eingehende Datenbyte wird nach Ankunft eines weiteren eingehenden Datenbyte von dem unkomprimierten Datenstrom an das zweite Register 23 gesendet. Somit hält das zweite Register 23 den Wert eines vorhergehenden (d.h. unmittelbar vorhergehenden) Datenbyte von dem unkomprimierten Datenstrom. Das in dem ersten Register 22 gespeicherte eingehende Datenbyte wird dann unter Verwendung des Komparators 24 mit dem in dem zweiten Register 23 gespeicherten vorhergehenden Datenbyte verglichen. Der erste Zähler 25 wird anfänglich auf Null zurückgestellt, aber der erste Zähler 25 wird jedes Mal dann erhöht, wenn es eine durch Komparator 24 angezeigte Übereinstimmung zwischen dem in dem ersten Register 22 gespeicherten Datenbyte und dem in dem zweiten Register 23 gespeicherten Datenbyte gibt.
  • Sonst wird der erste Zähler 25 wieder zurückgestellt, wenn es keine Übereinstimmung zwischen dem in dem ersten Register 22 gespeicherten Datenbyte und dem in dem zweiten Register 23 gespeicherten Datenbyte gibt. Ebenfalls wird das eingehende Datenbyte von dem unkomprimierten Datenstrom an die Komprimiereinheit 10 über den Multiplexer 21 gesendet, wenn es keine Übereinstimmung zwischen dem in dem ersten Register 22 gespeicherten Datenbyte (d.h. dem eingehenden Datenbyte) und dem in dem zweiten Register 23 gespeicherten Datenbyte gibt.
  • Dem ersten Zähler 25 ist ein voreingestellter Wert zugeordnet, und sobald dieser voreingestellte Wert erreicht wird, wird jedes zusätzliche eingehende Datenbyte von dem unkomprimierten Datenstrom, das immer noch mit dessen vorhergehendem Datenbyte von dem unkomprimierten Datenstrom übereinstimmt, verworfen.
  • Dies bedeutet ein Auftreten eines Laufzustands innerhalb des unkomprimierten Datenstroms. An diesem Punkt wird stattdessen der zweite Zähler 26 für jegliche übereinstimmende Zustände zwischen einem eingehenden Datenbyte und dessen vorhergehendem Datenbyte erhöht. Wenn schließlich zwischen einem eingehenden Datenbyte und dessen vorhergehendem Datenbyte keine Übereinstimmung mehr auftritt, wird der in dem zweiten Zähler 26 gespeicherte Zählerwert an die Komprimiereinheit 10 weitergegeben, gefolgt von dem nicht übereinstimmenden eingehenden Datenbyte.
  • Der voreingestellte Wert für den ersten Zähler 25 sollte ziemlich klein sein, und ein Wert von drei, entsprechend einer Lauflänge von vier, wird als ziemlich optimal für die meisten unkomprimierten Datenströme angesehen. Somit werden alle Datenbytes von einem unkomprimierten Datenstrom, die Läufe mit weniger als dem vorgegebenen Wert von vier enthalten, einfach an die Komprimiereinheit 10 zur weiteren Bearbeitung gemäß dem darin verwendeten Komprimierungsalgorithmus weitergegeben.
  • Da die meisten adaptiven Komprimierungsalgorithmen auf Zeichen beruhen, sollten die Zähler 25, 26 vorzugsweise dieselbe Größe wie ein Zeichen aufweisen, üblicherweise acht Bit. Wenn der Lauf exakt dieselbe Länge wie der vorgegebene Wert hat, wird ein Zählerwert von „00" an die Komprimiereinheit 10 weitergegeben. Wenn der Lauf ein Byte länger als der vorgegebene Wert ist, wird ein Zählerwert von „01" an die Komprimiereinheit 10 weitergegeben usw. Wenn 8-Bit-Zeichen verwendet werden, wird der höchste Wert als Zählfortsetzungszeichen verwendet.
  • Unter Bezugnahme auf 3 ist ein Zustandsdiagramm eines Verfahrens zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für einen Datenvorkomprimierer in Übereinstimmung mit einer bevorzugten Ausführungsform der vorliegenden Erfindung dargestellt. Ausgehend von Zustand (00) werden Verfügbar_Flag (Available_Flag), Erster_Zähler (First_Counter), Zweiter_Zähler (Second_Counter) auf Null zurückgestellt, gehe dann zu Zustand (01). In Zustand (01) wartet der Vorkomprimierer auf eine Daten_Byte (Data_Byte) Eingabeanforderung. In Zustand (02) wird festgestellt, ob Verfügbar_Flag auf 0 gesetzt ist; wenn ja, gehe zu Zustand (04); wenn nein, gehe zu Zustand (03).
  • In Zustand (03) wird ein vorher gespeichertes neues Daten_Byte an den Komprimierer geliefert. In Zustand (04) wird ein Daten_Byte von der Datenquelle abgerufen, gehe dann zu Zustand (05). In Zustand (05) wird festgestellt, ob Erster_Zähler den Voreingestellten_Grenzwert (Preset_Limit) erreicht hat; wenn ja, gehe zu Zustand (08); wenn nein, gehe zu Zustand (07).
  • In Zustand (06) wird festgestellt, ob das neue Daten_Byte identisch mit dem „Vorhergehenden_Byte" (Previous_Byte) ist; wenn ja, gehe zu Zustand (08); wenn nein, gehe zu Zustand (07).
  • In Zustand (07) wird Erster_Zähler auf Null zurückgestellt, gehe dann zu Zustand (09). In Zustand (08) wird Erster_Zähler um 1 erhöht, gehe dann zu Zustand (09). In Zustand (10) wird das neue Daten_Byte an den Komprimierer geliefert, gehe dann zu Zustand (01).
  • In Zustand (10) wird festgestellt, ob das neue Daten_Byte identisch mit dem „Vorhergehenden_Byte" ist; wenn ja, gehe zu Zustand (13); wenn nein, gehe zu Zustand (11). In Zustand (12) wird Verfügbar_Flag auf 1 gesetzt, gehe dann zu Zustand (01).
  • In Zustand (13) wird Zweiter_Zähler um 1 erhöht, gehe dann zu Zustand (14). In Zustand (14) wird festgestellt, ob Zweiter_Zähler seinen Maximalwert erreicht hat; wenn ja, gehe zu Zustand (15); wenn nein, gehe zu Zustand (04).
  • In Zustand (15) wird der Wert von Zweiter_Zähler an den Komprimierer geliefert, gehe dann zu Zustand (16). In Zustand (16) wird der Wert von Zweiter_Zähler auf „01" zurückgestellt, gehe dann zu Zustand (01).
  • Unter Bezugnahme auf 4 ist ein Übersichts-Zustandsdiagramm für den entsprechenden Datennachkomprimierer in Übereinstimmung mit einer bevorzugten Ausführungsform der vorliegenden Erfindung dargestellt. Ausgehend von Zustand (00) werden Erweiterungs_Flag (Extension_Flag), Erster_Zähler, Zweiter_Zähler auf Null zurückgestellt, gehe dann zu Zustand (01).
  • In Zustand (01) wird auf ein Daten_Byte von dem Dekomprimierer gewartet. In Zustand (02) wird festgestellt, ob Erweiterungs_Flag auf 0 gesetzt ist; wenn ja, gehe zu Zustand (13); wenn nein, gehe zu Zustand (03).
  • In Zustand (03) wird ein neuer Daten_Byte Wert in Zweiter_Zähler geladen. In Zustand (04) wird festgestellt, ob Zweiter_Zähler seinen Maximalwert erreicht hat; wenn ja, gehe zu Zustand (09); wenn nein, gehe zu Zustand (05).
  • In Zustand (05) wird das Erweiterungs_Flag auf Null zurückgestellt, gehe dann zu Zustand (06). In Zustand (06) wird festgestellt, ob der Wert von Zweiter_Zähler bei 0 liegt; wenn ja, gehe zu Zustand (00); wenn nein, gehe zu Zustand (07). In Zustand (08) wird das vorhergehende Daten_Byte an die Ausgabe geliefert, gehe dann zu Zustand (08). In Zustand (08) wird Zweiter_Zähler um 1 verringert, gehe dann zu Zustand (06).
  • In Zustand (09) wird Erweiterungs_Flag auf 1 gesetzt, gehe dann zu Zustand (10). In Zustand (10) wird das vorhergehende Daten_Byte an die Ausgabe geliefert, gehe dann zu Zustand (11). In Zustand (11) wird Zweiter_Zähler um 1 verringert, gehe dann zu Zustand (12). In Zustand (12) wird festgestellt, ob der Wert von Zweiter_Zähler größer als 1 ist; wenn ja, gehe zu Zustand (10); wenn nein, gehe zu Zustand (01).
  • In Zustand (13) wird festgestellt, ob Erster_Zähler einen Voreingestellten Grenzwert erreicht hat; wenn ja, gehe zu Zustand (03); wenn nein, gehe zu Zustand (14).
  • In Zustand (14) wird der neue Daten_Byte Wert an die Ausgabe geliefert, gehe dann zu Zustand (15). In Zustand (15) wird festgestellt, ob das neue Daten_Byte identisch mit dem Vorhergehenden_Byte ist; wenn ja, gehe zu Zustand (17); wenn nein, gehe zu Zustand (16). In Zustand (16) wird der Wert von Erster_Zähler auf Null zurückgestellt, gehe dann zu Zustand (01). In Zustand (17) wird Erster_Zähler um 1 erhöht, gehe dann zu Zustand (01).
  • Tabelle I ist ein Beispiel, das die Ergebnisse von der Vorkomprimiereinheit 20 auf der Grundlage des eingehenden Datenstroms in Übereinstimmung mit einer bevorzugten Ausführungsform der Erfindung darstellt. In diesem Beispiel wird der voreingestellte Wert auf drei gesetzt, und ein 8-Bit-Symbol (ein Byte) wird verwendet.
    EINGABEDATENSTROM EINGABE AN KOMPRIMIERER
    C3 02 02 02 A7 C3 02 02 20 A7
    96 FF FF FF FF A2 96 FF FF FF FF 00 A2
    31 30 30 30 30 30 39 31 30 30 30 30 01 39
    OA 40 .. (ein Lauf von 9) .. 40 C3 4A 40 40 40 40 05 C3
    64 00 .. (ein Lauf von 258) .. 00 32 64 00 04 00 00 FE 32
    98 00 .. (ein Lauf von 259) .. 00 8D 9B 00 00 04 00 FF 00 8D
    20 40 .. (ein Lauf von 260) .. 40 20 20 40 44 40 40 FF 01 20
  • Tabelle I
  • Wie beschrieben wurde, stellt die vorliegende Erfindung ein Verfahren und eine Vorrichtung zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für eine Komprimiereinheit bereit.
  • Obwohl der Veranschaulichung halber während der gesamten Beschreibung eine Komprimiereinheit verwendet wird, werden die Fachleute verstehen, dass ein so beschriebener Vorkomprimierer auch einen entsprechenden Nachdekomprimierer verwenden muss. Ein solcher Nachdekomprimierer ist vorzugsweise zwischen der Dekomprimiereinheit 15 und der Datensenke 18 aus 1b geschaltet.
  • Ein Nachdekomprimierer führt die umgekehrte Funktion wie ein Vorkomprimierer aus. Jedes von einer Dekomprimiereinheit ausgegebene Datenbyte wird mit dessen vorhergehendem Datenbyte verglichen, und ein Zähler wird erhöht oder zurückgestellt. Wenn der Zähler den voreingestellten Wert erreicht, wird das nächste Datenbyte als ein Zählerwert betrachtet, der darstellt, wie viele zusätzliche Kopien des letzten ausgegebenen Werts die Fortsetzung eines Laufs darstellen, und er muss herauskopiert werden, bevor jegliche weitere komprimierte Datenbytes decodiert werden.
  • Sowohl für einen Vorkomprimierer als auch für einen Nachdekomprimierer wird der maximale Zählersymbolwert dazu verwendet, einen Zählerwert mit diesem Wert zu kennzeichnen, aber dass dieser Zählerwert für das nächste Symbol fortgesetzt wird, das gemäß derselben Regel zu verarbeiten ist. Die Verwendung von Zählfortsetzungszeichen auf diese Art gestattet die Codierung von Läufen beliebiger Länge, mit einem Abzug von einem Symbol für Läufe mit einer Länge, die exakt mit dem voreingestellten Schwellwert übereinstimmen.
  • Was die Hardware angeht, benötigt die vorliegende Erfindung lediglich ein zusätzliches Register zur Speicherung des vorhergehenden Datensymbols, einen Komparator und einen Zähler zusammen mit einer kleinen Steuerlogik. Tatsächlich ist das Register für einen auf inhaltsadressierbarem Speicher (content-addressable memory, CAM) beruhenden Komprimierer bereits in der Hardware vorhanden, aber auf jeden Fall ist die für die Umsetzung der vorliegenden Erfindung beanspruchte Siliziumfläche vernachlässigbar.
  • Außerdem kann die vorliegende Erfindung für jede Art von Komprimierungsalgorithmen angewendet werden und für lange Läufe von Daten fraglos eine beachtliche Komprimierung bereitstellen (mehr als 250:1 für 8-Bit-Symbole). Im Falle von adaptiven Universalkomprimierungsalgorithmen stellt dies einen erheblichen Vorteil dar, da sich solche Komprimierungsalgorithmen allgemein anpassen, unabhängig davon, ob ein Strom von eingehenden Daten zur Anpassung des Komprimierungsalgorithmus verwendet werden soll oder nicht. Ein Algorithmus Lempel_Ziv 1 kann zum Beispiel lediglich ein maximales Komprimierungsverhältnis von etwa 90:1 für einen langen Lauf von identischen Daten erreichen.
  • Während die Erfindung insbesondere unter Bezugnahme auf eine bevorzugte Ausführungsform gezeigt und beschrieben wurde, werden die Fachleute verstehen, dass verschiedene Änderungen der Form und der Einzelheiten darin vorgenommen werden können, ohne von dem wie in den Ansprüchen definierten Umfang der Erfindung abzuweichen.

Claims (9)

  1. Verfahren zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für eine Datenkomprimiereinheit (10), wobei das Verfahren durch die folgenden Schritte gekennzeichnet ist: Vorverarbeitung eines unkomprimierten Datenstroms durch Vergleich eines eingehenden Datenbyte mit einem vorhergehenden Datenbyte von dem unkomprimierten Datenstrom; Erhöhen eines ersten Zählerwerts als Reaktion auf eine Übereinstimmung zwischen dem eingehenden Datenbyte und dem vorhergehenden Datenbyte, um einen Beginn eines Laufs innerhalb des unkomprimierten Datenstroms anzuzeigen; Erhöhen eines zweiten Zählerwerts als Reaktion auf eine nachfolgende Übereinstimmung zwischen einem eingehenden Datenbyte und einem vorhergehenden Datenbyte, nachdem der erste Zählerwert einen voreingestellten Wert erreicht hat, um einen verbleibenden Teil des Laufs innerhalb des unkomprimierten Datenstroms anzuzeigen; Ersetzen des verbleibenden Teils des Laufs innerhalb des unkomprimierten Datenstroms mit dem zweiten Zählerwert; und Übertragen des unkomprimierten Datenstroms, in den der zweite Zählerwert eingefügt ist, an die Datenkomprimiereinheit, so dass der Datenkomprimierer trotz des Auftretens des Laufs innerhalb des unkomprimierten Datenstroms eine optimale Komprimierungsleistung schnell Wiederaufnehmen kann.
  2. Verfahren zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für eine Datenkomprimiereinheit nach Anspruch 1, bei dem das Verfahren ferner einen Schritt des Zurückstellens des ersten Zählers als Reaktion auf eine Nichtübereinstimmung zwischen dem eingehenden Datenbyte und dem vorhergehenden Datenbyte umfasst.
  3. Verfahren zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für eine Datenkomprimiereinheit nach einem der vorhergehenden Ansprüche, bei dem der Schritt des Erhöhens eines zweiten Zählerwerts ferner einen Schritt des Erhöhens eines zweiten Zählerwerts als Reaktion auf eine nachfolgende Übereinstimmung zwischen einem eingehenden Datenbyte und einem vorhergehenden Datenbyte umfasst.
  4. Verfahren zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für eine Datenkomprimiereinheit gemäß einem der vorhergehenden Ansprüche, bei dem das Verfahren ferner einen Schritt des Verwerfens des eingehenden Datenbytes umfasst.
  5. Verfahren zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für eine Datenkomprimiereinheit nach einem der vorhergehenden Ansprüche, bei dem die Beendung eines Laufs durch eine Nichtübereinstimmung zwischen einem eingehenden Datenbyte und einem vorhergehenden Datenbyte angezeigt wird.
  6. Vorkomprimierer zur Bereitstellung einer verbesserten Datenkomprimierungsleistung für eine Datenkomprimiereinheit (10), gekennzeichnet durch: einen Komparator (24) zur Vorverarbeitung eines unkomprimierten Datenstroms durch Vergleich eines eingehenden Datenbyte mit einem vorhergehenden Datenbyte von dem unkomprimierten Datenstrom; einen ersten Zähler (25) zum Zählen der Anzahl an Übereinstimmungen zwischen dem eingehenden Datenbyte und dem vorhergehenden Datenbyte, um einen Beginn eines Laufs innerhalb des unkomprimierten Datenstroms anzuzeigen; einen zweiten Zähler (26) zum Zählen der Anzahl an Übereinstimmungen zwischen einem eingehenden Datenbyte und einem vorhergehenden Datenbyte, nachdem der erste Zählerwert einen voreingestellten Wert erreicht hat, um einen verbleibenden Teil des Laufs innerhalb des unkomprimierten Datenstroms anzuzeigen; ein Mittel zum Ersetzen des verbleibenden Teils des Laufs innerhalb des unkomprimierten Datenstroms mit dem zweiten Zählerwert; und einen Sender (21) zur Übertragung des unkomprimierten Datenstroms, in den der zweite Zählerwert eingefügt ist, an die Datenkomprimiereinheit, so dass der Datenkomprimierer trotz des Auftretens des Laufs innerhalb des unkomprimierten Datenstroms eine optimale Komprimierungsleistung schnell Wiederaufnehmen kann.
  7. Vorkomprimierer nach Anspruch 6, bei dem der Vorkomprimierer ferner Folgendes enthält: a) einen Rücksteller zum Zurückstellen des ersten Zählers als Reaktion auf eine Nichtübereinstimmung zwischen dem eingehenden Datenbyte und dem vorhergehenden Datenbyte; und/oder b) ein Mittel zum Verwerfen des eingehenden Datenbytes während der Erhöhung des zweiten Zählers.
  8. Vorkomprimierer nach Anspruch 6, bei dem die Beendung eines Laufs durch eine Nichtübereinstimmung zwischen einem eingehenden Datenbyte und einem vorhergehenden Datenbyte angezeigt wird.
  9. Vorkomprimierer nach Anspruch 6, bei dem der Vorkomprimierer ferner ein Mittel zum Ersetzen des Laufs innerhalb des unkomprimierten Datenstroms mit dem zweiten Zählerwert enthält.
DE69833094T 1997-09-19 1998-09-14 Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad Expired - Lifetime DE69833094T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/934,335 US5874907A (en) 1997-09-19 1997-09-19 Method and apparatus for providing improved data compression efficiency for an adaptive data compressor
US934335 1997-09-19

Publications (2)

Publication Number Publication Date
DE69833094D1 DE69833094D1 (de) 2006-03-30
DE69833094T2 true DE69833094T2 (de) 2006-08-31

Family

ID=25465369

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69833094T Expired - Lifetime DE69833094T2 (de) 1997-09-19 1998-09-14 Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad

Country Status (8)

Country Link
US (1) US5874907A (de)
EP (1) EP0903867B1 (de)
JP (1) JP3065585B2 (de)
KR (1) KR100300789B1 (de)
DE (1) DE69833094T2 (de)
MY (1) MY115600A (de)
SG (1) SG66494A1 (de)
TW (1) TW410505B (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0977152A3 (de) * 1998-07-28 2000-12-27 Xerox Corporation Verfahren zur Datenkomprimierung unter Verwendung von Zeichenkettenanpassung
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6604158B1 (en) * 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
DE19962971A1 (de) * 1999-12-24 2001-06-28 Bosch Gmbh Robert Verfahren zur Datenübertragung über ein Bussystem
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US7181608B2 (en) 2000-02-03 2007-02-20 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US7386046B2 (en) * 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
AU2002358953A1 (en) * 2001-12-10 2003-06-23 Virtual Locality Ltd. Apparatus and method for optimized and secured reflection of network services to remote locations
DE10301362B4 (de) * 2003-01-16 2005-06-09 GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
US9614772B1 (en) 2003-10-20 2017-04-04 F5 Networks, Inc. System and method for directing network traffic in tunneling applications
US7103685B1 (en) * 2004-01-16 2006-09-05 Xilinx, Inc. Bitstream compression with don't care values
US8024483B1 (en) 2004-10-01 2011-09-20 F5 Networks, Inc. Selective compression for network connections
US7109895B1 (en) * 2005-02-01 2006-09-19 Altera Corporation High performance Lempel Ziv compression architecture
US7937510B1 (en) 2005-02-01 2011-05-03 Altera Corporation Lempel Ziv compression architecture
US7482954B1 (en) 2005-02-25 2009-01-27 Xilinx, Inc. Bitstream compression for a programmable device
US7783781B1 (en) 2005-08-05 2010-08-24 F5 Networks, Inc. Adaptive compression
US8533308B1 (en) 2005-08-12 2013-09-10 F5 Networks, Inc. Network traffic management through protocol-configurable transaction processing
US8275909B1 (en) * 2005-12-07 2012-09-25 F5 Networks, Inc. Adaptive compression
US7882084B1 (en) 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
US7873065B1 (en) 2006-02-01 2011-01-18 F5 Networks, Inc. Selectively enabling network packet concatenation based on metrics
US8565088B1 (en) 2006-02-01 2013-10-22 F5 Networks, Inc. Selectively enabling packet concatenation based on a transaction boundary
US8417833B1 (en) 2006-11-29 2013-04-09 F5 Networks, Inc. Metacodec for optimizing network data compression based on comparison of write and read rates
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
US8238677B2 (en) * 2008-03-07 2012-08-07 International Business Machines Corporation Adaptive lossless data compression method for compression of color image data
GR1008346B (el) * 2013-11-04 2014-11-03 Νικολαος Χρηστου Πετρελλης Μεθοδος και συσκευη παρεμβολης για πιστοτερη αναπαρασταση και συμπιεση σηματος
US11158373B2 (en) * 2019-06-11 2021-10-26 Micron Technology, Inc. Apparatuses, systems, and methods for determining extremum numerical values
US11863209B2 (en) * 2021-08-18 2024-01-02 Pixart Imaging Inc. Integrated circuit and method capable of minimizing circuit area of non-volatile memory circuit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2396479A1 (fr) * 1977-06-30 1979-01-26 Cit Alcatel Installation de transmission de fac-simile a reduction de redondance
US4679094A (en) * 1986-10-14 1987-07-07 The Associated Press Method for compression and transmission of video information
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
JPH088642B2 (ja) * 1989-07-27 1996-01-29 富士通株式会社 網点画像データ圧縮装置
CA2077271C (en) * 1991-12-13 1998-07-28 David J. Craft Method and apparatus for compressing data
US5486826A (en) * 1994-05-19 1996-01-23 Ps Venture 1 Llc Method and apparatus for iterative compression of digital data
US5612693A (en) * 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
KR100254402B1 (ko) * 1994-12-19 2000-05-01 전주범 줄-길이 부호화방법 및 줄-길이 부호화기
US5608396A (en) * 1995-02-28 1997-03-04 International Business Machines Corporation Efficient Ziv-Lempel LZI data compression system using variable code fields
US5627534A (en) * 1995-03-23 1997-05-06 International Business Machines Corporation Dual stage compression of bit mapped image data using refined run length and LZ compression

Also Published As

Publication number Publication date
US5874907A (en) 1999-02-23
SG66494A1 (en) 1999-07-20
MY115600A (en) 2003-07-31
DE69833094D1 (de) 2006-03-30
TW410505B (en) 2000-11-01
EP0903867B1 (de) 2006-01-04
KR100300789B1 (ko) 2001-09-22
JP3065585B2 (ja) 2000-07-17
EP0903867A1 (de) 1999-03-24
JPH11145848A (ja) 1999-05-28
KR19990029322A (ko) 1999-04-26

Similar Documents

Publication Publication Date Title
DE69833094T2 (de) Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE69725215T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen
EP1487113B1 (de) Kodierung und Dekodierung von Transformationskoeffizienten in Bild- oder Videokodierern
DE69834695T2 (de) Verfahren und Vorrichtung zur Datenkompression
EP0290085B1 (de) System zur Übertragung von Videobildern
DE19506164C2 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
DE19742417B4 (de) Vorrichtung und Verfahren zur Durchführung von M-fachem Maschinenendzustands-Entropiekodieren bzw. Entropiekodieren mit einer Maschine mit finitem Zustand
DE60033184T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
EP0260748B1 (de) Verfahren und Schaltungsanordung zur Bitratenreduktion
EP2068448B1 (de) Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Tabellen
DE10301362A1 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE112012005164T5 (de) Verfahren und Vorrichtung für Context-Adaptive Binäre Arithmetische Codierung von Syntaxelementen
DE4217008C2 (de) HDTV-Dekodierer
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
DE60012717T2 (de) Bildcodierung unter verwendung einer umordnung von wavelet-koeffizienten
DE10049571C1 (de) Verfahren und Anordnung zum Übertragen eines Vektors
EP1286471A2 (de) Verfahren zur Kompression von Daten
EP2823568B1 (de) Verfahren zur codierung eines datenstroms
DE19653133C2 (de) System und Verfahren zur pre-entropischen Codierung
DE69723019T2 (de) Arithmetische Bildkodierung
EP1186175B1 (de) Verfahren und vorrichtung zur komprimierung und dekomprimierung von daten
DE19549491C2 (de) Entropie-Codierer
EP1219106A1 (de) Verfahren zum komprimieren eines digitalen bildes mit mehreren bit-ebenen
DE10131801A1 (de) Verfahren zur Datenkompression und Navigationssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)