-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft im Allgemeinen Datenkompression und
im Besonderen die Verbesserung der Kompression von Daten in Datenpaketnetzwerken.
-
ALLGEMEINER
STAND DER TECHNIK
-
Herkömmliche
Datenkompressionstechniken und -systeme codieren einen Strom digitaler
Daten zu einem komprimierten Codestrom und decodieren den komprimierten
Codestrom wieder zu einem entsprechenden ursprünglichen Datenstrom. Der Codestrom
wird als „komprimiert" bezeichnet, da der
Strom typisch aus einer kleineren Anzahl von Codes besteht als Symbole
in dem ursprünglichen
Datenstrom enthalten sind. Solche kleineren Codes können vorteilhaft
in einer entsprechend kleineren Speichermenge als die ursprünglichen Daten
gespeichert werden. Außerdem
kann der komprimierte Codestrom in einem Kommunikationssystem, z.B.
einem verdrahteten, drahtlosen oder faseroptischen Kommunikationssystem,
in einer entsprechend kürzeren
Zeitspanne übermittelt
werden als die unkomprimierten Originaldaten. Der Bedarf an Datenübermittlung und
Speicherkapazität
in heutigen Kommunikationsnetzwerken erhöht sich ständig. Daher spielt die Datenkompression
eine entscheidende Rolle in den meisten modernen Datenübermittlungsprotokollen
und Kommunikationsnetzwerken.
-
Bekanntermaßen sind
zwei Klassen von Kompressionstechniken, die bei der Kompression
von Daten verwendbar sind, die so genannte Spezialkompression und
die Allgemeinkompression. Spezialkompressionstechniken sind zum
Komprimieren spezieller Arten von Daten gedacht und oft relativ
kostengünstig
zu implementieren. Zum Beispiel umfassen bekannte Spezialkompressionstechniken
die Lauflängencodierung,
die Nullunterdrückungscodierung,
die Nullkompressionscodierung und Pattern Substitution (Musterersetzung). Diese
Techniken weisen im Allgemeinen relativ kleine Kompressionsverhältnisse
auf aufgrund der Tatsache, dass sie Daten komprimieren, die typisch
gemeinsame Merkmale und Redundanzen besitzen. Wie man verstehen
wird, ist ein Kompressionsverhältnis
das Maß der
Länge der
komprimierten Codes im Verhältnis
zur Länge
der Originaldaten. Spezialkompressionstechniken sind jedoch tendenziell
unwirksam bei der Kompression von Daten eher allgemeiner Art, d.h.
Daten, die kein hohes Maß an
gemeinsamen Merkmalen und dergleichen aufweisen.
-
Im
Gegensatz dazu sind Allgemeinkompressionstechniken nicht zum speziellen
Komprimieren einer Art von Daten gedacht und sind oft für verschiedene
Arten von Daten während
des Kompressionsprozesses eingerichtet. Einige der am weitesten
bekannten und verwendeten Allgemeinkompressionstechniken entstammen
einer Familie von Algorithmen, die von J. Ziv und A. Lempel entwickelt
wurden und auf dem Fachgebiet häufig
als Lempel-Ziv-Codierung" bezeichnet werden.
Insbesondere Ziv u.a., „A
Universal Algorithm for Sequential Data Compression", IEEE Transactions
on Information Theory, IT – 23
(3): 337-343, Mai 1977 (das den allgemein als „LZ1" bezeichneten Algorithmus beschreibt)
und Ziv. u.a., „Compression
of Individual Sequences Via Variable-Rate Coding", IEEE Transactions on Information Technology,
IT – 24
(5): 530-536, September 1978 (das den allgemein als „LZ2" bezeichneten Algorithmus
beschreibt). Das LZ1- und das LZ2-Datenkompressionsschema sind auf
dem Fachgebiet bekannt und müssen
im Vorliegenden nicht ausführlich
erläutert
werden.
-
Kurz
gesagt basiert der LZ1-Datenkompressionsprozess (auf dem Fachgebiet
auch als „LZ77" bezeichnet und bekannt)
auf dem Prinzip, dass eine wiederholte Sequenz von Zeichen durch
einen Verweis auf ein früheres
Auftreten der Sequenz, d.h. auf übereinstimmende
Sequenzen, ersetzt werden kann. Der Verweis, z.B. ein Zeiger, umfasst
typisch eine Angabe zur Position des früheren Auftretens, z.B. ausgedrückt als
ein Byte, das vom Beginn der wiederholten Sequenz abgesetzt ist
(offset), und die Anzahl der Zeichen, d.h. die übereinstimmende Länge (Matchlänge), die
wiederholt werden. Typisch werden die Verweise gemäß herkömmlicher
LZ1-Codierung als „<Offset,Länge>"-Paare dargestellt. Im Gegensatz dazu
analysiert die LZ2-Datenkompression (auf dem Fachgebiet auch als „LZ78" bezeichnet und bekannt)
einen Strom von Eingangsdaten in codierte Werte auf der Grundlage
einer adaptiv wachsenden Nachschlagetabelle oder eines Wörterbuchs,
die/das während
der Kompression erstellt wird. Das heißt, LZ2 findet keine Matches
an einer beliebigen Byte-Grenze und mit einer beliebigen Länge wie
bei der LZ1-Codierung, sondern wenn stattdessen ein Wort des Wörterbuches
durch eine Quellfolge gematcht wird, so wird dem Wörterbuch
ein neues Wort hinzugefügt, das
aus dem gematchten Wort plus dem nachfolgenden Quellfolgenbyte besteht.
Gemäß LZ2-Codierung
werden Matches als Zeiger oder Indizes auf die Wörter im Wörterbuch codiert.
-
Wie
oben erwähnt,
ist das Fachgebiet mit Kompressionsschemata angefüllt, die
von den Grundprinzipien abgeleitet sind, die der LZ1- und der LZ2-Algorithmus
verkörpern.
Beispielsweise verfeinerte Terry A. Welch (siehe T.A. Welch, „A Technique
for High Performance Data Compression", IEEE Computer, S. 8-19, Juni 1984
und US-Patentschrift 4,558,302, erteilt für Welch am 10. Dezember 1985)
später
den LZ2-Codierprozess zu dem bekannten „Lempel-Ziv-Welch"-(„LZW-")Kompressionsprozess.
Die LZ2- und die LZW-Kompressionstechnik basieren beide auf der
Erzeugung und Verwendung einer so genannten Stringtabelle, die Folgen
von Eingangszeichen in Codes mit festen Längen aufzeichnet. Genauer komprimieren
diese Kompressionstechniken einen Strom von Datenzeichen in einen
komprimierten Strom von Codes durch das fortlaufende Durchsuchen
des Zeichenstroms und das Erzeugen von Codes auf der Grundlage von
Se quenzen angetroffener Symbole, die mit den entsprechenden längstmöglichen
Strings übereinstimmen,
die vorher in der Tabelle, d.h. in dem Wörterbuch gespeichert wurden.
Während
jedes Match vollzogen wird und ein Codesymbol erzeugt wird, speichert
der Prozess auch einen neuen Stringeintrag in dem Wörterbuch,
der die gematchte Sequenz in dem Datenstrom plus das nächste in
dem Datenstrom angetroffene Zeichensymbol umfasst.
-
Wie
man verstehen wird und wie oben dargelegt, besteht das Wesentliche
der Lempel-Ziv-Codierung darin, Strings und Unterstrings zu finden,
die in dem originalen Datenstrom wiederholt werden, z.B. in einem Dokument,
das übermittelt
werden soll. Die wiederholten Phrasen in dem zu komprimierenden
Dokument werden durch einen Zeiger auf eine Stelle ersetzt, an der
sie in dem originalen Datenstrom, z.B. dem Dokument, früher auftraten.
Daher erfordert das Decodieren von Daten, z.B. Text, die auf diese
Weise codiert sind, einfach das Ersetzen der Zeiger durch den bereits
decodierten Text, auf den sie zeigen. Bekanntermaßen besteht
eine primäre
Designüberlegung
bei der Verwendung der Lempel-Ziv-Codierung darin zu bestimmen, ob eine
Grenze darüber
festgelegt werden soll, wie weit zurück ein Zeiger reichen kann,
und wo diese Grenze liegen soll. Eine weitere Designüberlegung
der Lempel-Ziv-Codierung befasst sich damit, welche Unterstrings
innerhalb der gewünschten
Grenze das Ziel eines Zeigers sein können. Das heißt, die
Reichweite des Zeigers in einen früheren Text kann unbegrenzt
sein, d.h. ein so genanntes wachsendes Fenster, oder sie kann auf
ein Fenster mit fester Größer mit
den vorhergehenden „N" Zeichen begrenzt
sein, wobei N typisch im Bereich mehrerer Tausend Zeichen liegt,
z.B. 3 Kilobyte. Gemäß dieser
Codierung werden Wiederholungen von Strings nur dann entdeckt und
komprimiert, wenn sie beide in dem Fenster erscheinen. Wie man verstehen
wird, stellen die Überlegungen,
die hinsichtlich der Lempel-Ziv-Codierung vorgenommen wurden, einen
Kompromiss zwischen Geschwindigkeit, Speichererfordernissen und
Kompressionsverhältnis
dar.
-
Komprimierung
ist eine bedeutsame Überlegung
bei der Verbesserung der Effizienz von Netzwerken. Wenn beispielsweise
die verfügbaren
Rechenressourcen, d.h. die Datenübermittlungsanforderungen,
im Vergleich zur verfügbaren
Netzwerkbandbreite groß sind,
ist es sehr vorteilhaft, Datenpakete vor der Übermittlung über das
Netzwerk zu komprimieren. Natürlich
muss das tatsächliche
Kompressionsschema hinsichtlich Geschwindigkeit und Gesamtkompression
sorgfältig
gewählt
werden. Das heißt,
ein Kompressionsschema, das zu langsam ist, wird die Netzwerkleistung
vermindern und ein ineffektives Kompressionsschema wird potentielle Übermittlungsgewinne
beschränken.
-
Was
die Netzwerkeffizienz weiter verkompliziert, ist die Tatsache, dass
viele Datenpaketnetzwerke inhärent
unzuverlässig
sind. Das heißt,
derzeit bekannte Datenpaketnetzwerke, z.B. das Internet, verlieren
routinemäßig Datenpakete
oder fordern Datenpakete, die über
das Netzwerk übermittelt
werden, neu an, wodurch Datenübermittlungsfehler
verursacht werden. Wenn beispielsweise das Kompressionsschema bestimmte
Abhängigkeiten
zwischen den Datenpaketen einführt
und das Netzwerk danach solche Datenpakete verliert oder neu anfordert,
ist der Empfänger
wegen der wechselseitigen Abhängigkeiten
zwischen den Datenpaketen möglicherweise
nicht in der Lage, ein bestimmtes Datenpaket zu dekomprimieren,
wenn ein vorheriges Datenpaket verloren gegangen ist. Daher werden
bestimmte bekannte Ansätze
benutzt, um solche Probleme zu mildern: (1) Netzwerkzuverlässigkeit
verbessern, wobei in Bezug auf das Internet ein zuverlässigerer
Ende-zu-Ende-Transportschichtdienst angewendet werden kann, z.B.
das bekannte Transmission Control Protocol („TCP"), um Datenpakete auf der Transportebene
zu komprimieren; (2) es kann statuslose Kompression verwendet werden,
wobei jedes Datenpaket unabhängig
komprimiert wird, womit gewährleistet
wird, dass jedes Datenpaket bei dem Empfänger dekomprimiert werden kann;
und (3) geht Streamingkompression von einer zuverlässigen Zustellung
aus und setzt einen Rücksetzungsmechanismus
ein, wenn diese Annahme verletzt wird. Genauer legt der Empfänger, wenn
ein Datenpaket verloren geht, jedes nachfolgende Datenpaket ab,
bis die Kompression zurückgesetzt
wird. Nach der Rücksetzung
sind zukünftige
Datenpakete nicht von vorherigen Datenpaketen abhängig, und
die Dekompression kann wieder normal einsetzen. Zwei bekannte Kompressionstechniken
des Streaming-Typs umfassen das Compression Control Protocol des
Point-to-Point Protocol („PPP") und das IP-Header-Compression-Protokoll,
das für
Use-Datagram-Protocol-(„UDP"-)Datenpakete verwendet
wird.
-
Die
oben beschriebenen Datenpaketkompressionsschemata sind für die Milderung
der Probleme verwendbar, die aus gegenseitigen Abhängigkeiten
der Datenpakete entstehen, solche Schemata sind jedoch mit bestimmten
anderen Komplikationen behaftet. Beispielsweise erfordert das Komprimieren
von Datenpaketen auf der Transportebene die Verwendung von Ende
zu Ende und erfordert typisch während
des Transports ein bestimmtes Maß an Zusammenarbeit seitens
der Anwendung. Während
in ähnlicher
Weise die statuslose Kompression ein gewisses Maß an Robustheit bietet, reduziert
das Attribut der Datenpaketunabhängigkeit
der statuslosen Kompression das realisierte Kompressionsverhältnis aufgrund
der Tatsache, dass eine solche Kompression die Daten in einem einzelnen
Datenpaket untersucht. So kann beispielsweise dieser Kompressionsansatz
nicht die große
Menge an Redundanz entfernen, die sich typisch in Netzwerkheadern
benachbarter Datenpakete findet. Während außerdem die Streamingkompression
größere Kompressionsverhältnisse bietet,
vervielfachen diese Kompressionsschemata den Effekt des Datenpaketverlustes
dadurch, dass, wenn ein Datenpaket in dem Netzwerk verloren geht,
dies bewirkt, dass der Empfänger
mehrere weitere Datenpakete verliert. Bei Netzwerken mit geringer
Zuverlässigkeit,
z.B. dem Internet, reduziert dieser Effekt der Vervielfachung des
Datenpaketverlustes die Nützlichkeit
des Einsatzes von Streamingkompression.
-
Daher
besteht ein Bedarf an einer Kompressionstechnik, die eine größere Robustheit
und erhöhte Kompressionsverhältnisse
bereitstellt, und zwar ohne die beeinträchtigenden Wirkungen der bisherigen
Kompressionsschemata.
-
US-A-5,831,558
offenbart ein Verfahren zum Übermitteln
einer codierten Datei von einem ersten Computersystem zu einem zweiten
Computersystem. Das Verfahren verwendet ein Datenwörterbuch
mit einer Anzahl von Einträgen.
Jeder dieser Einträge
des Datenwörterbuchs
enthält
ein Eintragszeichenfeld, ein Eintragskompressionsfeld und einen
Eintragszähler.
Datenpakete werden in den Speicher eingelesen und unter Verwendung
des Datenwörterbuchs
zu der codierten Datei codiert. Die codierte Datei wird dann von
dem ersten System zu dem zweiten System übermittelt. Das Verfahren enthält auch
eine Decodierfunktion, wobei codierte Datenpakete, die von dem zweiten
System empfangen werden, mit Hilfe des Datenwörterbuchs decodiert werden.
-
KURZDARSTELLUNG
DER ERFINDUNG
-
Die
Erfindung ist so wie in den unabhängigen Ansprüchen dargelegt,
wobei bevorzugte Formen in den abhängigen Ansprüchen dargelegt
sind.
-
Ein
Aspekt der Erfindung richtet sich auf ein Verfahren und eine Vorrichtung
zum Komprimieren von Datenpaketen, die die paketübergreifende Kompression ermöglicht,
womit eine größere Robustheit
und erhöhte
Kompressionsverhältnisse
ohne die beeinträchtigenden
Wirkungen, z.B. den Effekt der Vervielfachung des Paketverlustes,
bisheriger Kompressionsschemata erzielt werden. Genauer wird gemäß einem
Aspekt der Erfindung eine Codierung variabler Länge zusammen mit der Führung einer
separaten Hash-Tabelle für
jedes Datenpaket verwendet. Gemäß der bevorzugten
Ausführungsform
der Erfindung setzt das Codieren variabler Länge Matchlängen, Offsets und Literale
ein. Daher beginnen alle Phrasen mit einer Matchlänge, wobei
Literale mit einem Match mit Null-Länge
codiert sind, gefolgt von einer Codierung des Literals. Gemäß der bevorzugten
Ausführungsform
beträgt
das kleinste Match mit Nicht-Null-Länge beispielhaft 3 Byte und
das maximale Match ist durch die spezifische Paketlänge begrenzt.
-
Ferner
indiziert gemäß einem
Aspekt der Erfindung die paketweise Hash-Tabelle konkrete Byte-Strings
in dem Paket, indiziert jedoch keine Daten in (einem) anderen Paket(en).
Das heißt,
die vorliegende Erfindung erzeugt und führt eine jeweilige separate
Hash-Tabelle für
jedes Datenpaket, wobei eine solche Hash-Tabelle unabhängig von
jedem anderen Paket erstellt wird. Beispielhaft wird gemäß einer
Ausführungsform
der Erfindung die jeweilige Hash-Tabelle für ein Datenpaket erstellt,
wenn das konkrete Datenpaket komprimiert wird. Gemäß weiteren
Ausführungsformen
der Erfindung wird die jeweilige Hash-Tabelle für das Datenpaket vor der Kompression
oder nach der Kompression aufgebaut. Daher wird die jeweilige Hash-Tabelle
mit dem konkreten Datenpaket codiert. Gemäß einem Aspekt der Erfindung
indiziert die jeweilige Hash-Tabelle für das Datenpaket die Daten
in dem gesamten Datenpaket in Abhängigkeit von einzelnen Unterfolgen. Beispielhaft
beträgt
gemäß der bevorzugten
Ausführungsform
der Erfindung die Länge
solcher Unterfolgen drei Byte. Somit bestimmt die Byte-Größe eines
konkreten Datenpakets die Anzahl von Byte-Strings, die in der jeweiligen Hash-Tabelle
für dieses
Datenpaket angegeben sind. Daher stellt der Einsatz einer paketweisen Hash-Tabelle
eine effiziente und robuste Gesamtkompression der Datenpakete bereit.
-
Das
heißt,
da die Hash-Tabelle jedes Datenpakets nur von den Daten in diesem
konkreten Paket abhängt,
kann mit Hilfe der entsprechenden Hash-Tabellen ein gültiger Index
für eine
beliebige Gruppe von Datenpaketen erstellt werden. Somit erfolgt
gemäß der bevorzugten
Ausführungsform
die Suche nach einem String durch eine Abfrage der Hash-Tabelle
für das
aktuelle Datenpaket, gefolgt von den Hash-Tabellen für jedes
der Datenpakete im variablen Verlaufsstatus, beginnend mit dem zuletzt
gesendeten Paket. Wie man verstehen wird, führen die paketweisen Hash-Tabellen
der bevorzugten Ausführungsform
auch einzeln verlinkte, abgesetzte Ketten, die mit einem ungültigen Eintrag
beendet werden, und Hash-Tabellen
werden überarbeitet, indem
der gültige
Offsetbereich für
die Hash-Tabelle geändert
wird (nicht indem die gesamte Tabelle geleert wird). Wie man verstehen
wird, wird ferner ein Kompressionsgradparameter, z.B. 8 Strings,
verwendet, um die maximale Anzahl von Strings festzulegen, die während der
Suche nach einem Match geprüft
werden.
-
Vorteilhaft
werden gemäß einem
Aspekt der Erfindung mit einer großen Auswahl von Kompressionsverfahren
erhöhte
Robustheit und größere Kompressionsverhältnisse
erzielt.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 zeigt
ein Blockdiagramm eines beispielhaften Systems zum Komprimieren
und Dekomprimieren von Daten;
-
2 zeigt
ein Flussdiagramm beispielhafter Operationen zum Komprimieren von
Daten gemäß einer beispielhaften
Ausführungsform
der Erfindung, die in dem beispielhaften System der 1 verwendbar
sind;
-
3 zeigt
einen beispielhaften Datenpaketstrom, der mit den beispielhaften
Operationen der 2 komprimiert wurde;
-
4 zeigt
ein Flussdiagramm beispielhafter Operationen zum Dekomprimieren
von Daten gemäß einer
Ausführungsform
der Erfindung, die in dem beispielhaften System der 1 verwendbar
sind;
-
5 zeigt
ein Flussdiagramm beispielhafter Operationen zum Komprimieren von
Daten gemäß den Prinzipien
der Erfindung und
-
6 zeigt
Vergleichsergebnisse der Kompression von Textdateien gemäß den verschiedenen
Aspekten der Erfindung.
-
In
der gesamten Beschreibung werden, soweit nicht anders angegeben,
gleiche Elemente, Blöcke, Komponenten
oder Abschnitte in den Figuren mit den gleichen Bezugszeichen bezeichnet.
-
DETAILLIERTE
BESCHREIBUNG
-
Wie
in EP-A-1 134 900 (im Vorliegenden der Bequemlichkeit halber die „Anwendung
mit Bestätigter Kompression" genannt) beschrieben,
wurde festgestellt, dass durch den Einsatz eines Auswahlverlaufsstatus in
Abhängigkeit
von den in einem Netzwerk zu übermittelnden
Datenpaketen die Bereitstellung eines eleganten Kompressionstools
erreicht wird, mit dem eine verbesserte Datenkompression realisiert
werden kann. Gemäß einem
Aspekt der genannten Erfindung wird ein Auswahlverlaufsstatus verwendet,
der in Abhängigkeit von
einem so genannten Bestätigungsvektor
bestimmt wird. Ferner enthält
der Bestätigungsvektor
gemäß einem
Aspekt der genannten Erfindung Informationen bezüglich der Identifizierung von
Datenpaketen, die in einer vorherigen Übermittlung über einen
Kommunikationskanal erfolgreich empfangen wurden. Das heißt, gemäß einem
Aspekt der genannten Erfindung ist der Datenpaketverlaufsstatus
ein Auswahlverlaufsstatus, der zu einem entsprechenden Datenpaket
gehört.
Daher ist eine Seite des Kommunikationskanals, z.B. die Übermittlungs-
oder Senderseite im Besitz und in Kenntnis von bestimmten Informationen
darüber,
welche Datenpakete von der zweiten Seite des Kommunikationskanals,
z.B. der Empfangs- oder Empfängerseite,
erfolgreich empfangen wurden. Der Dekompressor wiederum ist ebenfalls
im Besitz und in Kenntnis eines Auswahlverlaufs, um eine effiziente
Dekompression der übermittelten
komprimierten Datenpakete vom Versender zu ermöglichen. Das heißt, die
Dekompression erfolgt in Abhängigkeit
davon, welche Datenpakete bei der Kompression solcher Pakete als
Verlauf verwendet wurden, d.h. von dem Auswahlverlaufsstatus. Daher
arbeiten durch die Aspekte des Auswahlverlaufsstatus und der Bestätigung der
genannten Erfindung der Kompressor und der Dekompressor (auf jeder
Seite des Kommunikationskanals) zusammen, um eine verbesserte Kompression über einen
Kommunikationskanal zu erzielen.
-
Die
Kompressionsergebnisse, z.B. Bandbreitenverhältnis, die mit dem Einsatz
der verschiedenen Kompressionsaspekte der Erfindung in der Anwendung
mit Bestätigter
Kompression erreicht werden, sind bei kleineren Datenpaketen etwas
eingeschränkt,
insbesondere bei höheren
Bandbreiten. Dies liegt zum Teil an dem tatsächlich verwendeten Kompressionsschema.
Beispielsweise verwendet das bekannte Kompressionsschema Deflate
ein relativ uneffektives Format für kleinere Datenpaketgrößen. Genauer
wird nach dem Kompressionsschema Deflate, jedes Datenpaket mit der
bekannten statischen oder dynamischen Huffman-Codierung komprimiert.
Während
diese Huffman-Codierung für
die Offline-Kompression großer
Dateien gut geeignet ist, ist der damit verbundene Verarbeitungs-Overhead
zum Berechnen und Übermitteln
des erforderlichen Huffman-Wörterbuchs
in jedem Datenpaket viel zu hoch für die Echtzeitkompression kleinerer
Datenpakete, z.B. typischer Datenpakete, die über das Internet übermittelt
werden. Außerdem
erfordert Deflate den zusätzlichen Overhead
von etwa 8 Byte, um ein Datenpaket zu beenden, was seine Verwendbarkeit
in Internet-artigen Kommunikationsanwendungen weiter beeinträchtigt.
Wie man verstehen wird, werden andere Kompressionsschemata, die
solche Huffman-Codes und/oder -Wörterbücher verwenden,
z.B. LZ77, ähnlich
beeinträchtigt.
-
Daher
wurde festgestellt, dass die Aspekte der Erfindung in der Anwendung
mit Bestätigter
Kompression, wie sie nachfolgend sehr viel ausführlicher erläutert werden,
und ihre gesamten Vorteile außerdem
in einem neuartigen Kompressionsformat realisiert werden, das bestimmte
Probleme des Verarbeitungs-Overheads bei herkömmlichen Kompressionsschemata
mildert. Genauer wird gemäß einem
Aspekt der vorliegenden Erfindung eine Codierung mit variabler Länge zusammen
mit dem Führen
einer separaten Hash-Tabelle für
jedes Datenpaket verwendet. Gemäß der bevorzugten
Ausführungsform
der Erfindung setzt die Codierung mit variabler Länge Matchlängen, Offsets
und Literale ein. Vor der ausführlicheren
Erläuterung
der verschiedenen Aspekte der vorliegenden Erfindung und zur Förderung
eines umfassenden Verständnisses
der Erfindung werden im Folgenden bestimmte Aspekte der ebenfalls
anhängigen,
gemeinsam übertragenen
Anwendung mit Bestätigter
Kompression, auf die oben verwiesen wird, dargestellt.
-
Ein
Aspekt der genannten Erfindung stellt ein Verfahren und eine Vorrichtung
zum Komprimieren von Datenpaketen bereit, das/die eine paketübergreifende
Kompression ermöglicht,
womit eine größere Robustheit
und erhöhte
Kompressionsverhältnisse
ohne die beeinträchtigenden
Wirkungen vorheriger Kompressionsschemata, z.B. des Effektes der
Vervielfachung von Datenpaketverlusten, erreicht werden. Genauer
wird ein so genanntes Bestätigungsschema
zusammen mit einem spezifischen Kom pressionsalgorithmus solcherart
eingesetzt, dass der Übermittler,
d.h. der Versender, den von dem Kompressionsalgorithmus verwendeten Verlauf
auf diejenigen Datenpakete beschränken kann, die erfolgreich
empfangen werden. Gemäß der bevorzugten
Ausführungsform
gehört
zu dem komprimierten Datenpaket ein Vektor, der die als Verlauf
verwendeten Datenpakete identifiziert, womit der Empfänger in
die Lage versetzt wird, den Datenpaketverlaufsstatus zu rekonstruieren,
der zum Dekomprimieren des Datenpakets notwendig ist.
-
1 zeigt
ein Blockdiagramm eines beispielhaften Systems 100 zum
Komprimieren und Dekomprimieren von Daten. Das System 100 ist
u.a. zum Übermitteln
und Empfangen von Informationen über
ein Übermittlungsmedium,
z.B. verdrahtet, drahtlos oder faseroptisch, um nur einige zu nennen,
verwendbar. Ferner ist das System 100 alternativ zum Aufzeichnen
von Informationen auf und Auslesen von Informationen aus beispielsweise
einem magnetischen Medium wie etwa Computerlaufwerken oder aus einem
optisch auslesbaren Medium wie etwa CD-ROMs verwendbar. Daher ist
es möglich,
erfindungsgemäß komprimierte
Daten auf ein beschreibbares Medium aufzuzeichnen, u.a. auf ein
magnetisches Medium, z.B. Magnetlaufwerke, und auf ein optisch beschreibbares
Medium, z.B. CD-ROMs, aufzuzeichnen. In 1 wird ein
Eingangsdatenstrom 105, z.B. Text, zum Eingangsdatencodierer 110 geliefert.
Wie nachfolgend ausführlicher
erläutert,
bearbeitet der Eingangsdatencodierer 110 gemäß einem
Aspekt der Erfindung den Eingangsdatenstrom vor und codiert den Eingangsdatenstrom,
indem er eine paketweise Kompression mit variablem Verlaufsstatus
anwendet. Die verschiedenen Aspekte der Erfindung, die sich auf
diesen Codiervorgang richten, sind nachfolgend anhand der in 2 dargestellten
beispielhaften Operationen beschrieben.
-
In
der Erläuterung
des beispielhaften Systems 100 der 1 fortfahrend
wird der codierte Eingangsdatenstrom 115, der gemäß einem
Aspekt der Erfindung erzeugt wurde, zum Kompressor 120 weitergeleitet. Der
Kompressor 120 wendet gemäß der bevorzugten Ausführungsform
der Erfindung ein Kompressionsverfahren an, z.B. Lempel-Ziv-Kompression,
um den codierten Eingangsdatenstrom 115 zu den komprimierten Daten 125 zu
komprimieren. Wie oben erwähnt,
wird erneut angemerkt, dass jede Kompression des Typs Lempel-Ziv
bei der erfindungsgemäßen Kompression
des codierten Eingangsdatenstroms 115 und zur Realisierung
der vorliegend beschriebenen, vorteilhaften Aspekte der Erfindung
wirksam verwendet werden kann. Die komprimierten Daten 125 werden
dann von dem Kanalcodierer 130 codiert, um kanalcodierte
Informationen 135 zu erzeugen. Wie man verstehen wird,
fügt das
Kanalcodieren den komprimierten Informationen Informationen hinzu,
um Fehlererkennung und/oder -korrektur bei dem Datenlesevorgang
zu ermöglichen.
Herkömmliche
Kanalcodierungstechniken umfassen das bekannte Reed-Solomon-Codieren,
das eine Sequenz von Symbolen codiert, wobei jedes Symbol durch
ein oder mehrere Datenbits dargestellt wird. Diese Symbole werden
dann mit dem Modulationscodierer 140 modulationscodiert,
der einen modulierten Datenstrom 145 erzeugt, der eine
Kanalsequenz bestimmt, welche über
einen Kommunikationskanal übermittelt
wird oder auf ein Medium 150 aufgezeichnet wird.
-
Während der Übermittlung
oder Aufzeichnung des Datenstroms gelangen oft Rauschen und Störungen in
den Kanal/das Medium 150. Daher empfangen der Modulationsdecoder 155 und
der Kanaldecoder 160 den modulierten Datenstrom 145 mit
dem Rauschen und kehren in bekannter Weise den Codiervorgang des Kanalcodierers 130 bzw.
des Modulationscodierers 140 um. Der Datenstrom vom Kanaldecoder 160 entspricht den
komprimierten Daten 125, die von dem Kompressor 120 erzeugt
wurden. Dieser Datenstrom wird dann erfindungsgemäß mit dem
Dekompressor 165 dekomprimiert und mit dem Datendecoder 170 decodiert,
wodurch ein Ausgangsdatenstrom 175 wie nach folgend anhand 4 ausführlich beschrieben
erzeugt wird.
-
Die
verschiedenen Aspekte der Erfindung in der Anwendung mit Bestätigter Kompression
sind darauf gerichtet, verbesserte Kompressionsrobustheit und Kompressionsverhältnisse
zu realisieren. 2 zeigt ein Flussdiagramm beispielhafter
Operationen 200 zum Komprimieren von Daten gemäß der genannten
Erfindung, die auch in dem beispielhaften System der 1 wie
oben beschrieben verwendbar sind. Genauer wird ein Eingangsdatenstrom
empfangen und die erfolgreich empfangenen Datenpakete werden geprüft (siehe 2,
Block 210). Die Überprüfung der
erfolgreich empfangenen Datenpakete ermöglicht gemäß diesem Aspekt der Erfindung
die Feststellung eines Datenpaketverlaufsstatus in Abhängigkeit
von dem Bestätigungsvektor
(siehe 2, Block 220). Gemäß den bevorzugten Ausführungsformen
der Erfindung handelt es sich bei dem Datenpaketverlaufsstatus um
eine vorherige Gruppe von Datenpaketen, nach denen die Kompression des
aktuellen Datenpakets bestimmt wird. Beispielsweise ist in Bezug
auf die 77er Lempel-Ziv-Kompression der Verlaufszustand ein direkter
Zusammenhang mit dem so genannten Wörterbuch, das bei dieser Lempel-Ziv-Kompression
verwendet wird. Interessanterweise besteht ein Hauptunterschied
zwischen der oben genannten statuslosen Kompression und der Streamingkompression
von Netzwerkdatenpaketen in dem konkreten Verlaufsstatus, den jedes
Schema verwendet. Das heißt,
die statuslose Kompression verwendet keinen Verlaufsstatus, während die
Streamingkompression jedes vorherige Paket als Verlauf zulässt. Solche
Unterschiede gelten umso mehr in Bezug auf die Prinzipien der Erfindung.
-
Genauer
handelt es sich gemäß der bevorzugten
Ausführungsform
der Erfindung bei dem Datenpaketverlaufsstatus um einen Auswahlverlaufsstatus
in Bezug auf bestimmte Datenpakete, die über den Kommunikationskanal z.B.
von der Empfängerseite
oder vom Empfänger
erfolgreich empfangen wurden. Der Empfänger wiederum ist in Besitz
und Kenntnis des Auswahlverlaufs, um eine erfolgreiche Dekompression
der übermittelten
komprimierten Datenpakete zu ermöglichen.
Vorteilhaft verbessert gemäß diesem
Aspekt der Erfindung die Verwendung des paketübergreifenden Auswahlverlaufsstatus
die Kompressionsrobustheit und das Kompressionsverhältnis gegenüber bisherigen
Streamingkompressionsschemata, die mit den ihnen inhärenten Datenpaketverlusten
behaftet sind.
-
Nach
der Feststellung des Datenpaketauswahlverlaufsstatus wie oben dargelegt
wird dieser Verlaufsstatus verwendet, um bestimmte Informationen
an die Datenpakete, die auf ihre Übermittlung vom Versender warten,
zu codieren. Genauer werden gemäß der bevorzugten
Ausführungsform
der Erfindung die einzelnen Pakete in Abhängigkeit vom jeweiligen dazugehörigen Datenpaketverlaufsstatus
codiert (siehe 2, Block 230). Gemäß einer
Ausführungsform
der Erfindung wird jedem Datenpaket ein Header vorangestellt, der
beispielhaft einen Verlaufsvektor enthält, der den zu diesem Paket
gehörigen
Datenpaketverlauf identifiziert. Wenn wir uns kurz der 3 zuwenden,
ist ein beispielhafter Datenpaketstrom 300 dargestellt,
der gemäß den beispielhaften
Operationen der 2 komprimiert ist. Gemäß der Ausführungsform
der 3 umfasst der Datenpaketheader zusätzliche
Positionen wie etwa eine Sequenzanzahl und den Bestätigungsvektor.
Das heißt, gemäß weiteren
Ausführungsformen
der Erfindung kann der genannte Bestätigungsvektor als Teil des
Datenpaketheaders gesendet werden. Wie der Fachmann verstehen wird,
ist die Entscheidung, ob der Bestätigungsvektor separat von den
codierten Datenpaketen übermittelt
wird (wie oben erläutert)
oder als Teil des Datenpaketheaders, eine Sache der Designfestlegung,
wobei die Prinzipien der Erfindung in jedem Kontext gleichermaßen gelten.
Beispielsweise kann der Bestätigungsvektor
mit Hilfe einer so genannten „Huckepack"-Technik zum Versender übermittelt
werden, bei der es einen Datenstrom in die entgegengesetzte Richtung
vom Empfänger
zum Versender gibt.
-
Beispielsweise
umfasst der Datenpaketstrom 300 eine Serie von Datenpaketen
(z.B. Datenpaket 1 bis Datenpaket n, in 3 als Datenpakete 305-315 dargestellt).
Außerdem
umfasst jedes Datenpaket einen Header (z.B. H1 bis
Hn, in 3 als Header 320-330 dargestellt).
Ferner ist beispielhaft der Header 320 detaillierter dargestellt,
der die Sequenzanzahl 335, den Verlaufsvektor 340 und
den Bestätigungsvektor 345 umfasst.
-
Gemäß der bevorzugten
Ausführungsform
wird die Sequenzanzahl, z.B. die Sequenzanzahl 335, sowohl
vom Versender als auch vom Empfänger
verwendet, um Datenpakete zu identifizieren, die gemäß den Prinzipien
der Erfindung komprimiert wurden. Die Anzahl der Bits, die zum Codieren
der Sequenzanzahl verwendet wird, muss ausreichen, um die bekannten
beeinträchtigenden
Folgen so genannten „Wrappings" während der
maximalen Zeit, die zum Durchqueren des gesamten Netzwerks benötigt wird,
zu vermeiden. Beispielhaft ist die Sequenzanzahl 335 mit
einer Länge
von 24 Bit dargestellt.
-
Außerdem beschreibt
gemäß der bevorzugten
Ausführungsform
der Verlaufsvektor, z.B. der Verlaufsvektor 340, die Gruppe
vorangegangener Datenpakete, die zur Kompression verwendet wurden,
d.h. den Auswahlverlaufsstatus. In Bezug auf die bevorzugte Ausführungsform
der Erfindung, die die Bestätigungsdatenpakete
zur Verlaufsbestimmung verwendet, kann eine Zeitverzögerung auftreten,
die mit der Netzwerkumlaufzeit zwischen der Zeit, zu der ein Datenpaket übermittelt
wird, und der Zeit, zu der das Datenpaket als Verlauf verwendet
wird, zusammenhängt.
Daher wird gemäß der bevorzugten
Ausführungsform
der Erfindung der Verlaufsvektor unter Verwendung eines Offsets
und einer Bit-Maske solcherart codiert, dass der Offset von der Sequenzanzahl
des Datenpakets subtrahiert wird, um die Sequenzanzahl des aktuellsten
Verlaufsdatenpakets zu bestimmen. Die Bit-Maske identifiziert zusätzliche
Verlaufsdatenpakete, die diesem aktuellsten Verlaufsdatenpaket direkt
vorausgehen. Beispielhaft umfasst in Bezug auf den Header 320 der
Verlaufsvektor 340 8 Bit Offset und 8 Bit Maske, womit
der Verlaufsstatus auf höchstens
neun aufeinander folgende Datenpakete innerhalb der letzten 263 beschränkt wird.
-
Wie
oben erwähnt,
umfasst der Datenpaketheader der Ausführungsform der 3 auch
den Bestätigungsvektor,
z.B. den Bestätigungsvektor 345,
der eine Gruppe von kürzlich
empfangenen Datenpaketen beschreibt. Der Bestätigungsvektor umfasst mindestens
die Sequenzanzahl des zuletzt empfangenen Datenpakets und eine Bit-Maske,
die den Status der direkt vorhergehenden Datenpakete beschreibt.
Beispielhaft beträgt
die Länge
des Bestätigungsvektors 345 32
Bit, um 24 Bit für
die Sequenzanzahl und 8 Bit für
die dazugehörige
Maske abzudecken.
-
Wenn
wir uns nun wieder der 2 zuwenden, sind nach dem Codieren
der Datenpakete in Abhängigkeit
von ihrem jeweiligen Datenpaketverlaufsstatus (siehe 2,
Block 230) gemäß den Prinzipien
der Erfindung diese Pakete bereit zur weiteren Kompression. Wie
oben dargelegt, besteht ein Vorteil der vorliegenden Erfindung darin,
dass sie zusammen mit vielen verschiedenen vorhandenen Kompressionstechniken
angewendet werden kann. Zum Beispiel verbessern, wie nachfolgend
ausführlicher
beschrieben, die Prinzipien der Erfindung die Kompression eines
Datenstroms, auf den die bekannte LZ77-Kompression oder das bekannte
Kompressionsschema „Deflate" angewendet wird.
Damit sind nach der Anwendung des ausgewählten Kompressionsschemas auf
die codierten Datenpakete (siehe 2, Block 240)
die komprimierten Datenpakete bereit zur Übermittlung
(siehe 2,
Block 250).
-
Gemäß einem
Aspekt der Erfindung wurde festgestellt, dass mit dem Einsatz eines
Auswahlverlaufsstatus in Abhängigkeit
von den Datenpaketen zur Übermittlung
in einem Netzwerk die Bereitstellung eines eleganten Kompressionstools
erzielt wird, mit dem eine verbesserte Datenkompression realisiert
werden kann. Das heißt,
gemäß einem
Aspekt der Erfindung handelt es sich bei dem Datenpaketverlaufsstatus,
der zu einem jeweiligen Datenpaket gehört, um einen Auswahlverlaufsstatus
insofern, als die Übermittlungsseite,
d.h. der Versender, in Besitz und Kenntnis bestimmter Informationen
darüber
ist, welche Datenpakete von der Empfängerseite, d.h. dem Empfänger, erfolgreich
empfangen wurden. Die Empfängerseite
wiederum ist ebenfalls in Besitz und Kenntnis des Auswahlverlaufsstatus,
der zu solchen Datenpaketen gehört,
um die effiziente Dekompression der komprimierten Datenpakete vom
Versender zu ermöglichen.
Daher arbeiten mittels der Aspekte des Auswahlverlaufsstatus und
der Bestätigung
der Erfindung der Versender und der Empfänger zusammen, um eine verbesserte
Kompression über
den Kommunikationskanal zu erreichen.
-
Genauer
wird gemäß einem
Aspekt der Erfindung der Bestätigungsvektor
zusammen mit einem spezifischen Kompressionsschema solcherart verwendet,
dass der Übermittler,
d.h. der Versender, den von dem Kompressionsalgorithmus verwendeten
Verlauf auf solche Datenpakte beschränken kann, die erfolgreich empfangen
werden. Somit ist gemäß einer
Ausführungsform
der Erfindung der Vektor, der die als Verlauf verwendeten Datenpakete
identifiziert, in dem komprimierten Datenpaket enthalten, womit
der Empfänger
in die Lage versetzt wird, den Datenpaketverlaufsstatus zu rekonstruieren,
der zum Dekomprimieren des Datenpakets erforderlich ist. Gemäß weiteren
Ausführungsformen
der Erfindung wird der Bestätigungsvektor
separat von den komprimierten Datenpakten übermittelt. Außerdem versteht
es sich, dass, während
die vorliegenden beispielhaften Ausführungsformen der Klarheit halber
eine einzige Kommunikationskanalanordnung erläutern, die Prinzipien der Erfindung
gleichermaßen
auf mehrere Kommunikationskanalanordnungen und -konfigurierungen
anwendbar sind. Vorteilhaft verbessert gemäß diesem Aspekt der Erfindung
die Verwendung des Auswahlverlaufsstatus die Kompressionsrobustheit
und das Kompressionsverhältnis
gegenüber
bisherigen Streamingkompressionsschemata, die mit der inhärenten Anhäufung von
Datenpaketverlusten behaftet sind.
-
4 zeigt
ein Flussdiagramm beispielhafter Operationen
400 zum Dekomprimieren
von Daten gemäß einem
weiteren Aspekt der Erfindung der Anwendung mit Bestätigter Kompression.
Genauer wird aus dem empfangenen komprimierten Strom von Datenpaketen
(siehe
4, Block
410) der Verlaufsvektor auf einer
Paketfür-Paket-Basis
extrahiert (siehe
4, Block
420). Daher
wird der jeweilige, zu einem Datenpaket gehörige Datenpaketverlaufsstatus
in Abhängigkeit
von dem Verlaufsvektor bestimmt. Beispielhaft beschreibt der folgende
Pseudocode die Extrahierung dieser Punkte gemäß einer Ausführungsform
der Erfindung:
-
Man
wird verstehen, dass der oben beschriebene Pseudocode vom Fachmann
verwendet werden kann, um verschiedene Programme, z.B. ein Computerprogramm
in der bekannten Programmiersprache C, zur Ausführung in einem Prozessor zur
Umsetzung der Erfindung zu entwickeln. Aus der Extrahierung des
Verlaufsvektors wird der jeweilige Datenpaketverlaufsstatus des
zu dekomprimierenden Datenpakets festgestellt (siehe 4,
Block 430). Gemäß weiteren
Ausführungsformen
der Erfindung kann die Extrahierung auch das Extrahieren des Bestätigungsvektors
und der Sequenzanzahl aus dem Datenpaketheader umfassen. Gemäß der bevorzugten
Ausführungsform
der Erfindung kann die Dekompression des aktuellen Datenpakets in
Abhängigkeit
vom jeweiligen Verlaufsstatus fortgesetzt werden (siehe 4,
Block 440). Daher wird das aktuelle unkomprimierte Datenpaket
dem aktuellen Status der empfangenen Datenpakete des jeweiligen
Dekompressors, z.B. des Dekompressors auf der Empfangsseite des
spezifischen Kommunikationskanals, hinzugefügt (siehe 4,
Block 450), wobei die Gruppe der empfangenen Datenpakete
aktualisiert wird. Schließlich
wird nach der Dekompression des aktuellen Datenpakets der Bestätigungsvektor
erstellt und zum Versender zurück übermittelt
(siehe 4, Block 460). Wie vorangehend dargelegt,
beschreibt der Bestätigungsvektor
die Gruppe kürzlich
empfangener Datenpakete und wird von dem Versender verwendet, um
zukünftige
Datenpakete zusammen mit dem Auswahlverlaufsstatus gemäß einem
Aspekt der Erfindung zu komprimieren.
-
Wie
oben erwähnt,
wurde festgestellt, dass die Aspekte der Erfindung in der Anwendung
mit Bestätigter
Kompression wie oben dargelegt und ihre Vorteile ferner mit einer
neuartigen Codiertechnik und einem neuartigen Kompressionsformat
realisiert werden. Solch ein erfinderisches Kompressionsformat und
die dazugehörige Codierung
sind Gegenstand der vorliegenden Erfindung.
-
Wie
bei bestimmten bekannten Kompressionsschemata besteht ein wichtiges
Umsetzungsmerkmal im Auffinden von Matches. Typisch werden Matches
in einem Abschnitt des aktuellen Datenpakets gefunden, das komprimiert
wurde, oder eines der Datenpakete, aus denen der Verlaufsstatus
zusammengesetzt ist. Beispielsweise verwendet die Zlib-Implementierung
von Deflate (wie oben erläutert)
eine einzige Hash-Tabelle, um nach Matches zu suchen, was zu akzeptablen
Ergebnissen führt,
wenn sie beispielsweise zusammen mit Streamingkompression verwendet
wird. Im Gegensatz dazu und vorteilhaft erzeugt und führt die
jetzige Erfindung eine separate Hash-Tabelle für jedes Datenpaket. Genauer
zeigt 5 ein Flussdiagramm beispielhafter Operationen 500 zum
Komprimieren von Daten gemäß einem
Aspekt der vorliegenden Erfindung. Aus einer Gruppe von Eingangsdaten
(siehe 5, Block 510) wird eine separate Hash-Tabelle für jedes
Datenpaket erzeugt und geführt
(siehe 5, Block 520). Das heißt, die
jetzige Erfindung erzeugt und führt
eine jeweilige separate Hash-Tabelle für jedes Datenpaket, wobei eine
solche Hash-Tabelle unabhängig
vom Inhalt anderer Datenpakete erstellt wird. Gemäß einer
bevorzugten Ausführungsform
der Erfindung wird die konkrete Hash-Tabelle mit ihrem jeweiligen
Paket erstellt, wenn das Paket komprimiert wird. Wie vorhergehend
erwähnt, wird
gemäß einer
weiteren Ausführungsform
der Erfindung die jeweilige Hash-Tabelle
für das
Paket vor der Kompression oder nach der Kompression erstellt.
-
Somit
werden gemäß einer
bevorzugten Ausführungsform
der Erfindung einzelne Datenpakete in Bezug auf die jeweiligen Hash-Tabellen
für die
Datenpakete im Verlaufsstatus eines Datenpakets codiert (siehe 5,
Block 530). Das heißt,
das Codieren eines konkreten Datenpakets „P" verwendet eine dazugehörige Gruppe
von Datenpaketen „S", die einen Datenpaketverlaufsstatus definieren.
Gemäß einem
Aspekt der Erfindung weist jedes Datenpaket in S eine entsprechende
dazugehörige
Hash-Tabelle auf. Somit erfolgt das Codieren des konkreten Datenpakets
P gemäß einem
Aspekt der Erfindung in Bezug auf die jeweiligen Hash-Tabellen für die Datenpakete
in S. Gemäß einem
Aspekt der Erfindung indiziert die jeweilige Hash-Tabelle für das Datenpaket
die Daten in dem gesamten Datenpaket in Abhängigkeit von einzelnen Unterstrings.
Daher umfasst das Codieren von P das Nachschlagen einer Serie von
Unterstrings aus P in der Hash-Tabelle, die zu den Paketen in S
gehört.
Beispielhaft beträgt
gemäß der bevorzugten
Ausführungsform
der Erfindung die Länge
solcher Unterstrings drei Byte. Somit bestimmt die Gesamtbytegröße eines
konkreten Datenpakets die Anzahl der Byte-Folgen, die in der entsprechenden
Hash-Tabelle für
dieses Datenpaket angegeben ist. Daher stellt die Verwendung einer
paketweisen Hash-Tabelle in Kombination mit der paketübergreifenden
Kompression nach variablem Verlaufsstatus eine effiziente und robuste
Gesamtkompression der Pakete bereit.
-
Genauer
wird gemäß einem
Aspekt der vorliegenden Erfindung eine Codierung mit variabler Länge zusammen
mit der Führung
einer separaten Hash-Tabelle für
jedes Datenpaket verwendet. Gemäß der bevorzugten
Ausführungsform
der Erfindung wird die Codierung mit variabler Länge für Matchlängen, Offsets und Literale
verwendet. Die Matchlängen
werden solcherart codiert (siehe 5, Block 540),
dass alle Phrasen mit einer Matchlänge beginnen, wobei die Literale
mit einer Matchlänge
von Null codiert sind, gefolgt von einer Codierung des Literals.
Gemäß der bevorzugten
Ausführungsform
beträgt
die kleinste Matchlänge
von nicht Null beispielhaft drei Byte und das maximale Match ist
durch die spezifische Datenpaketgröße begrenzt. Beispielhaft zeigt
Tabelle 1 unten eine Codierung konkreter Matchlängen gemäß der bevorzugten Ausführungsform:
-
-
Außerdem werden
gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung Literale mit einem Vorhersageschema codiert
(siehe 5, Block 550): (a) es wird eine voreingestellte
8-Bit-Literalcodierung angewendet; es sei denn (2), vier Literale
nacheinander fallen in den Bereich zwischen einschließlich 32 und
127, dann wird eine Codierung mit variabler Länge verwendet, bis ein Lateral
außerhalb
dieses Bereichs codiert wird. Die 7 am wenigsten signifikanten Bits
werden für
Werte innerhalb des angegebenen Bereichs ausgegeben; und (3) andere
Literale werden codiert, indem zur Anzahl 64 Bit addiert werden,
modulo 256. Die sich daraus ergebende Anzahl wird in 9 Bit codiert,
wenn sie kleiner als 96 ist, oder anderenfalls in 10 Bit.
-
Gemäß der bevorzugten
Ausführungsform
der Erfindung werden Matchoffsets als der Abstand zwischen der übereinstimmenden
Phrase und dem zuletzt codierten Eingabe-Byte definiert und codiert (siehe
5,
Block
560). Ein Offset beträgt beispielhaft 14 Bit und
wird in zwei Teilen codiert: (1) ein Bereich; und (2) die Position
in diesem Bereich. Der Bereich bestimmt die Anzahl der Bits, die
zum Codieren der Position verwendet werden, wobei weniger Bits verwendet
werden, um einen nähere
Offset zu codieren. Beispielhaft zeigt Tabelle 2 unten eine Codierung
von Matchoffsets gemäß der bevorzugten
Ausführungsform: Tabelle
2
-
Gemäß der bevorzugten
Ausführungsform
der Erfindung gibt die paketweise Hash-Tabelle die Byte-Folgen in
dem Datenpaket an, aber keine Daten in (einem) beliebigen anderen
Datenpaket(en). Da die Hash-Tabelle jedes Datenpakets nur von den
Daten in dem konkreten Datenpaket abhängt, kann somit mit Hilfe der
entsprechenden Hash-Tabellen ein gültiger Index für eine beliebige
Gruppe von Datenpaketen erstellt werden. Das heißt, gemäß der bevorzugten Ausführungsform
erfolgt die Suche nach einem String mittels einer Abfrage der Hash-Tabelle
für das
aktuelle Datenpaket, gefolgt von den Hash-Tabellen für jedes
der Datenpakete in dem variablen Verlaufsstatus, beginnend mit dem
zuletzt gesendeten Datenpaket. Wie man verstehen wird, führen die
paketweisen Hash-Tabellen der bevorzugten Ausführungsform auch einzeln verlinkte
Offsetketten, die von einem ungültigen
Eintrag beendet werden, und Hash-Tabellen
werden erneuert, indem der gültige
Offsetbereich für
die Hash-Tabelle geändert
wird (nicht indem die gesamte Tabelle geleert wird). Wie man verstehen
wird, wird ferner ein Kompressionsgradparameter, z.B. 8 Strings,
verwendet, um die maximale Anzahl von Strings zu bestimmen, die
während
der Suche nach einem Match geprüft
werden. Wie man verstehen wird, ist der Kompressionsgradparameter
ein Indikator zur Bestimmung des Grades der Gesamtrechenleistung,
der während
der Kompression verwendet wird, je höher der Grad, desto mehr Rechenleistung
wird bei der Kompression der Daten erbracht.
-
Um
die verschiedenen Aspekte der Erfindung und ihre Vorteile weiter
darzustellen, wurden die Prinzipien der Erfindung im Kontext eines
Vergleichs mit der bekannten zlib-Deflate-Kompression wie im Vorangegangen
erläutert
angewendet. Genauer zeigt 6 Ergebnisse
einer Bandbreitenverhältnissimulation 600 und 610 für Datenpaketgrößen von
1600 Byte bzw. 125 Byte. Die Ergebnisse einer Bandbreitenverhältnissimulation 600 und 610 enthalten
Ergebnisse in Bezug auf zwei verschiedene Kompressionsgradeinstellungen.
Das heißt,
die Ergebnisse 620 und 640 vergleichen die beiden
Kompressionsschemata bei einem Kompressionsgradparameter von Sechs
(6), und die Ergebnisse 630 und 650 vergleichen
die beiden Kompressionsschemata bei einer Kompressionseinstellung
von Eins. Wie man aus dem Studium der Ergebnisse der Bandbreitenverhältnissimulation 600 und 610 verstehen
wird, ist die Kompression, die im Großen und Ganzen gemäß den Prinzipien
der Erfindung erzielt wurde (d.h. „thwack-6", siehe Ergebnisse 640; und „thwack-1", siehe Ergebnisse 650)
der Kompression mit Deflate überlegen
(d.h. „zlib-6", siehe Ergebnisse 620; und „zlib-1", siehe Ergebnisse 630)
und hinsichtlich der Kompression kleinerer Datenpaketgrößen deutlich überlegen.
-
Die
verschiedenen Aspekte der vorliegenden Erfindung können in
der Form von Verfahren und Vorrichtungen zur praktischen Umsetzung
dieser Verfahren ausgeführt
sein. Die Erfindung kann auch in Form von Programmcode ausgeführt sein,
der in physischen Medien wie etwa Disketten, CD-ROMs, Festplatten
oder beliebigen anderen maschinenlesbaren Speichermedien ausgeführt ist,
wobei, wenn der Programmcode in eine Maschine wie etwa einen Computer
geladen und dort ausgeführt
wird, die Maschine eine Vorrichtung zur praktischen Umsetzung der
Erfindung wird. Die Erfindung kann auch in Form von Programmcode
beispielsweise in einem Speichermedium ausgeführt sein, der in eine Maschine
geladen und/oder von einer Maschine ausgeführt wird oder über ein Über mittlungsmedium
wie etwa über
elektrische Verdrahtung oder Verkabelung, durch Faseroptik oder über elektromagnetische
Strahlung übermittelt
wird, wobei, wenn der Programmcode in eine Maschine wie etwa einen
Computer geladen und dort ausgeführt
wird, die Maschine eine Vorrichtung zur praktischen Umsetzung der
Erfindung wird. Bei der Implementierung auf einem Allzweckprozessor
schließen sich
die Segmente des Programmcodes mit dem Prozessor solcherart zusammen,
dass sie ein einzigartiges Gerät
bereitstellen, welches analog zu spezifischen logischen Schaltkreisen
operiert.
-
Das
Vorangegangene stellt die Prinzipien der vorliegenden Erfindung
lediglich beispielhaft dar. Man wird daher verstehen, dass der Fachmann
in der Lage sein wird, verschiedene Anordnungen zu gestalten, die, obzwar
im Vorliegenden nicht explizit beschrieben oder dargestellt, die
Erfindung wie in den Ansprüchen
definiert ausführen.
Ferner sind alle im Vorliegenden angeführten Beispiele und Bedingungsbegriffe
prinzipiell und ausdrücklich
nur zu instruktiven Zwecken gedacht, um den Leser in seinem Verständnis der
Prinzipien der Erfindung und der Konzepte zu unterstützen, die
von den Anmeldern zur Weiterentwicklung des Fachgebiets beigetragen
wurden, und sollen so ausgelegt werden, dass sie nicht auf solche
spezifisch angeführten
Beispiele und Bedingungen beschränkt
sind. Außerdem
sollen alle Aussagen im Vorliegenden, die sich auf Prinzipien, Aspekte
und Ausführungsformen
der Erfindung sowie konkrete Beispiele davon beziehen, sowohl strukturelle als
auch funktionelle Äquivalente
davon einschließen.
Zusätzlich
ist beabsichtigt, dass solche Äquivalente
sowohl derzeit bekannte als auch zukünftig entwickelte Äquivalente
umfassen, d.h. alle entwickelten Elemente, die unabhängig von
der Struktur dieselbe Funktion erfüllen.
-
So
wird beispielsweise der Fachmann verstehen, dass die vorliegend
enthaltenen Blockdiagramme konzeptionelle Ansichten beispielhafter
Schaltungen darstellen, die die Prinzipien der Erfindung verkörpern. Ähnlich wird
man verstehen, dass Flussübersichten,
Flussdiagramme, Statusübergangsdiagramme,
Pseudocode, Programmcode und dergleichen verschiedene Vorgänge darstellen,
die im Wesentlichen in einem computerlesbaren Medium ausgeführt sein
können
und so von einem Computer, einer Maschine oder einem Prozessor ausgeführt werden
können,
ob ein solcher Computer, eine solche Maschine oder ein solcher Prozessor explizit
dargestellt ist oder nicht.