DE3689674T2 - Verfahren zur Datenkompression und -dekompression. - Google Patents
Verfahren zur Datenkompression und -dekompression.Info
- Publication number
- DE3689674T2 DE3689674T2 DE3689674T DE3689674T DE3689674T2 DE 3689674 T2 DE3689674 T2 DE 3689674T2 DE 3689674 T DE3689674 T DE 3689674T DE 3689674 T DE3689674 T DE 3689674T DE 3689674 T2 DE3689674 T2 DE 3689674T2
- Authority
- DE
- Germany
- Prior art keywords
- message
- mask
- data set
- character
- new
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 17
- 230000006837 decompression Effects 0.000 title description 15
- 238000013144 data compression Methods 0.000 title description 6
- 238000007906 compression Methods 0.000 claims description 30
- 230000006835 compression Effects 0.000 claims description 27
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
- Der Gegenstand der vorliegenden Erfindung betrifft Rechnersysteme, genauer gesagt, einen Datenkompressions- und -dekompressions-Algorithmus, der im Rechnersystem angewandt wird, um Nachrichtendaten, die über ein Zwischenglied übertragen werden sollen, zu komprimieren, und um Nachrichtendaten zu dekomprimieren, sobald sie von dem Zwischenglied her eingegangen sind.
- Wenn eine Nachricht über einen Nachrichtenkanal übertragen werden muß, ist es häufig erforderlich, diese Nachrichtendaten vor dem Übertragen zu komprimieren. Diese Komprimierung ist wegen der Zeit erforderlich, die zum Übertragen der Nachricht über den Nachrichtenkanal aufgewendet werden muß. Die zu berücksichtigende Zeit ist die Übertragungszeit der komprimierten Nachricht, die direkt mit der Länge der Nachricht in Beziehung steht, plus der Zeit für die Entwicklung der komprimierten Nachricht. Ein typisches Verfahren auf dem Stand der Technik zum Komprimieren von Daten ist die sogenannte "Lemple Ziv" Kompressionsmethode. Die Lemple-Ziv Nachrichtendaten-Kompressionstechnik erforderte den Einsatz eines großen Prozessors. Ferner müssen eine große Anzahl Tabellen zur Benutzung durch den Prozessor zur Durchführung der Lemple Ziv Kompressionstechnik greifbar sein. Die Lemple Ziv Methode ließ sich nicht auf den Prozessor, der in einem Personalcomputer eingesetzt ist, anpassen.
- In IBM Technical Disclosure Bulletin, Bd. 14, Nr. 8, Januar 1971, S. 2438 wird ein Datenkompressions-Algorithmus beschrieben, durch den die am häufigsten auftretenden Hexadezimal-Zahlen eines Datenstroms herausgezogen und ein Bild des Datenflusses gebildet wird unter Benutzen von nur einem oder zwei Bits, um die Position der herausgezogenen Zahlen im Strom anzugeben. Zum Beispiel, wenn nur eine Zahl herausgezogen wird und dann das Bild aufgebaut ist aus den 1en, die die Positionen der ausgezogenen Zahl angeben, und den 0en, die die Positionen der restlichen Zahlen angeben. Dieser Datenfluß nach der Kompression enthält ein Halbbyte zum Identifizieren des Algorithmus, ein herausgezogenes, Zahlidentifizierendes Halbbyte, das Byte für die Länge des Flusses, einen Strombildabschnitt und den Original-Strom minus der herausgezogenen Zahl. Mehrere andere Kompressionstechniken auf dem Stand der Technik, wie z. B. die im US- Patent 4,491,934 an Heinz geoffenbarte Technik unter dem Titel "Data Compression Algorithm" sind nicht in der Lage, zu offenbaren, zu lehren oder anzudeuten, daß eine Nachricht, sobald sie einmal komprimiert ist, auch weiter komprimierbar sein könnte und so eine weiterkomprimierte Nachricht geschaffen wird, die eine Nachrichtdatenlänge aufweist, die sogar noch kleiner ist als die Länge der ursprünglich komprimierten Nachricht.
- Dementsprechend ist es eine Hauptaufgabe der vorliegenden Erfindung, einen Kompressions- und Dekompressionsalgorithmus für ein Rechnersystem zu entwickeln, wobei der Kompressionsalgorithmus im Zusammenwirken mit der Rechnersystem-Hardware in der Lage ist, kontinuierlich und wiederholt Nachrichtendaten zu komprimieren, bis die Daten nicht mehr weiter komprimiert werden können, wobei der Algorithmus diese Funktion unter Verwendung ausschließlich der in der Nachricht vorhandenen Daten ausführt.
- Diese und weitere Aufgaben der vorliegenden Erfindung werden gelöst durch Vorsehen eines Kompressionsalgorithmus, der gemäß Anspruch 1 die Nachricht selbst benutzt, um die Kompressionsfunktion auszuführen. Keine externen Tabellen sind zur Durchführung der Datenkompressionsfunktion der vorliegenden Erfindung erforderlich. Gemäß der vorliegenden Erfindung überwacht der Kompressionsalgorithmus im Zusammenwirken mit der Rechnersystem-Hardware, die zu komprimierende Nachricht, um festzustellen, ob die Länge der Nachricht, angezeigt durch einen Längenanzeiger, länger ist als eine angezogene Modulzahl. Wenn das so ist, identifiziert der Algorithmus ein Maskenzeichen, wobei dieses Maskenzeichen dasjenige Zeichen ist, das in der Nachricht am häufigsten vorkommt. Dann vergleicht der Algorithmus das Maskenzeichen mit jedem Byte der Nachricht, wobei jedes Byte jedes Zeichen der Nachricht darstellt. Wenn das Maskenzeichen genau mit dem ersten Byte der Nachricht übereinstimmt, wird eine "1" an die erste Stelle eines bestimmten Ortes gesetzt, der als Maskenbyte bezeichnet wird. Wenn das Markenzeichen nicht mit dem ersten Byte der Nachricht übereinstimmt, wird eine "0" an die erste Stelle des Maskenbytes gesetzt. Nach Durchführen aller Vergleiche zwischen dem Maskenzeichen und jedem Byte der Nachricht ist ein komplettes Maskenbyte (bestehend aus 1en und 0en) aufgebaut worden. Eine Restnachricht besteht aus den Bytes der Nachricht, die nicht genau mit dem Maskenzeichen übereinstimmen. Die neue, komprimierte Nachricht enthält den Längenindikator, die Modulzahl, das Maskenzeichen, das Maskenbyte und die Restnachricht. Die Restnachricht wird dann dem gleichen Kompressionsprozeß ausgesetzt wie oben beschrieben, wobei der Kompressionsvorgang so lange fortgesetzt wird, bis die Länge einer nachfolgenden, komprimierten Nachricht größer ist als die Länge einer vorherigen komprimierten Nachricht. Die vorherige komprimierte Nachricht wird dann über einen Datenkanal gegeben. Empfängerseitig wird, um die ursprüngliche Nachricht wiederherzustellen, das Maskenzeichen und die Restnachricht mit dem Maskenbyte verglichen. Wenn in der ersten Stellung des Maskenbyte eine "1" erscheint, wird das Maskenzeichen als erstes Zeichen der Originalnachricht benutzt, während das Auftreten einer "0" an der ersten Stellung des Maskenbyte das vom ersten Byte der Restnachricht dargestelltes Zeichnen als erstes Zeichen der Originalnachricht benutzt wird. Der Prozeß des Dekomprimierens der restlichen Stellen des Maskenbytes wird genau so fortgesetzt wie oben beschrieben.
- Die erfindungsgemäße Lösung wird in Anspruch 1 charakterisiert.
- In den Ansprüchen 2 bis 3 sind erfindungsgemäße Verbesserungen definiert.
- Weitere Anwendungsmöglichkeiten der vorliegenden Erfindung werden aus der nachstehenden detaillierten Beschreibung deutlich.
- Ein volles Verständnis der vorliegenden Erfindung geht aus der detaillierten Beschreibung der nachstehend erläuterten, bevorzugten Ausführungsform mit den begleitenden Zeichnungen hervor, die jedoch nur hinweisenden Charakter haben und keinesfalls einschränkend zu werten sind. Diese Zeichnungen sind wie folgt:
- Fig. 1 zeigt ein Blockschaltbild eines typischen Datenverarbeitungssystems unter Anwendung des erfindungsgemäßen Kompressions- und Dekompressionsalgorithmus;
- Fig. 2 zeigt schematisch den Inhalt der einzelnen Speicher, die in Fig. 1 gezeigt sind;
- Fig. 3A bis 3C zeigt den Kompressionsprozeß und den Dekompressionsprozeß gemäß der vorliegenden Erfindung;
- Fig. 4 ist ein Flußdiagramm des erfindungsgemäßen Kompressionsalgorithmus; und
- Fig. 5 ist ein Flußdiagramm des erfindungsgemäßen Dekompressionsalgorithmus.
- Unter Bezugnahme auf Fig. 1 werden typische Datenverarbeitungssysteme gezeigt. In Fig. 1 beinhaltet ein erstes, datenübertragendes System 10 einen Speicher 10a, der an einen Systembus 10b angeschlossen ist, und ein Input/Output (1/0) [Eingabe/Ausgabe (E/A)] Peripheriegerät 10d, das an den Systembus 10b angeschlossen ist. Der Prozessor 10c führt Anweisungen aus, die im Speicher 10a abgespeichert sind, und überträgt die Ergebnisse auf die E/A-Vorrichtung 10d. Ein Telefon 15 ist an die E/A-Vorrichtung 10d angeschlossen und nimmt die übertragenen Ergebnisse von der E/A-Vorrichtung 10d her auf. Das Telefon 15 ist ferner an ein zweites, aufgenommene Daten verarbeitendes System 20 angeschlossen, wobei das Telefon 15 die Ergebnisse, die es von der E/A-Vorrichtung 10d erhält, an das zweite Datenverarbeitungssystem 20 weitergibt. Das zweite Datenverarbeitungssystem 20 beinhaltet eine Input/Output (I/O) [Eingabe/Ausgabe (E/A)] Peripherievorrichtung 20d, die an einen Systembus 20b angeschlossen ist, einen Prozessor 20c, der an den Systembus 20b angeschlossen ist, und einen Speicher 20a, der an den Systembus 20b angeschlossen ist. Der Prozessor 20c führt die im Speicher 20a gespeicherten Anweisungen aus. Wenn die Ergebnisse vom ersten Datenverarbeitungssystem 10 her über das Telefon 15 eingehen, führt der Prozessor 20 die im Speicher 20a gespeicherten Befehle aus mit der Absicht, die vom ersten Datenverarbeitungssystem 10 eingehenden Daten zu interpretieren oder im Hinblick auf diese Ergebnisse andere Funktionen auszuführen.
- Unter Bezugnahme auf Fig. 2 wird eine schematische Darstellung des Inhalts der Speicher 10a und 20a gezeigt. Speicher 10a und Speicher 20a enthalten jeweils einen Kompressionsalgorithmus bzw. einen Dekompressionsalgorithmus, die dort gespeichert sind. Der Kompressionsalgorithmus komprimiert im Zusammenwirken mit der Rechnersystem-Hardware die Nachrichtenblockdaten unter Verwendung ausschließlich der in der Nachricht selbst enthaltenen Daten. Der Dekompressionsalgorithmus extrahiert die ursprünglichen Nachrichtenblockdaten aus den komprimierten Nachrichtenblockdaten.
- Nehmen wir jetzt Bezug auf Fig. 1 zusammen mit Fig. 2; der Prozessor 10c des ersten Datenverarbeitungssystems 10 enthält Nachrichtenblockdaten, die zum Prozessor 20c des zweiten Datenverarbeitungssystems 20 übertragen werden sollen. Prozessor 10c führt die Anweisungen im Zusammenwirken mit dem in Speicher 10a gespeicherten Kompressionsalgorithmus durch Komprimieren der im Cache (Pufferspeicher) des Prozessors 10c gespeicherten Nachrichtenblockdaten aus. Die komprimierten Nachrichtenblockdaten werden über die E/A-Vorrichtung 10d und das Telefon 15 an das zweite Datenverarbeitungssystem 20 übermittelt und gehen bei der E/A-Vorrichtung 20d ein. Der Prozessor 20c führt die mit dem in Speicher 20a gespeicherten Dekompressionsalgorithmus verbundenen Anweisungen durch und dekomprimiert die komprimierten Nachrichtenblockdaten, die vom ersten Datenverarbeitungssystem 10 her eingehen. Als Ergebnis werden die ursprünglichen Nachrichtenblockdaten, die ursprünglich im Cache des Prozessors 10c abgespeichert waren, extrahiert und im Cache des Prozessors 20c gespeichert. Da der Speicher 20a den gleichen Kompressionsalgorithmus enthält wie er auch im Speicher 10a vorhanden ist, lassen sich die Nachrichtenblockdaten, die im Cache des Prozessors 20c vorhanden sind, auf gleiche Weise komprimieren, wie sie auch durch die Anwendung des Prozessors 10c komprimiert wurden. Auf ähnliche Weise kann der Prozessor 10c durch Benutzen des Dekompressionsalgorithmus, der im Speicher 10a gespeichert ist, eine Dekompressionsfunktion durchführen. Bei dem in Fig. 1 gezeigten Datenverarbeitungssystem kann es sich um jedes typische Datenverarbeitungssystem handeln.
- Nehmen wir jetzt Bezug auf Fig. 3a bis 3c; dort wird der erfindungsgemäße Kompressions- und der Dekompressionsprozeß dargestellt. In Fig. 3b ist ein typisches Beispiel für einen Datenblock gezeigt. Dieses Datenblockbeispiel wird nur zum Zweck der Darstellung benutzt und gilt nicht als illustratives Beispiel für einen Teil einer wirklichen Nachricht. Der Nachrichtenblock der Fig. 3b enthält ein Datenbyte, das repräsentativ für ein erstes Zeichen, Char1, ist, gefolgt von einem anderen Datenbyte, Byte1, gefolgt von einem weiteren Datenbyte, Byte 2, gefolgt von dem Datenbyte, das für das erste Zeichen, Char1, repräsentativ ist, gefolgt von dem Datenbyte, das für das erste Zeichen, Char1, repräsentativ ist.
- In Fig. 3b sieht man, daß fünf Datenbytes gezeigt werden: Char1, Byte1, Byte2, Char1, Char1. Bei Untersuchung der ersten fünf Datenbytes sieht man, daß das Byte Char1 am häufigsten vorkommt. Das am häufigsten vorkommende Byte, im vorliegenden Fall "Char1", wird als "Maskenzeichen" bezeichnet.
- Nehmen wir Bezug auf Fig. 3a; dort wird eine komprimierte Nachricht auf der Grundlage der Nachricht in Fig. 3b gezeigt. Im allgemeinen enthält eine komprimierte Nachricht das Maskenzeichen, gefolgt von einem Maskenbyte, gefolgt von der Restnachricht. In unserem Beispiel in Fig. 3a enthält die komprimierte Nachricht 30 das Maskenzeichen "Char1", 30a, gefolgt von dem Maskenbyte 30b, gefolgt von der Restnachricht 30c.
- Die komprimierte Nachricht in Fig. 3a wird auf folgende Weise aus der ursprünglichen Nachricht in Fig. 3b synthetisiert: Das Maskenzeichen 30a wird durch Bestimmen des in allen Bytes der Nachrichtenblockdaten am häufigsten auftretenden Zeichens identifiziert. In unserem Beispiel ist das am häufigsten auftretende Zeichen "Char1". Deshalb ist "Char1" das Maskenzeichen 30a. Das Maskenbyte 30b wird aufgebaut durch Vergleichen des Maskenzeichens 30a mit jedem Byte der Originalnachricht, wie in Fig. 3b gezeigt wird. Wenn das Maskenzeichen 30a das gleiche ist wie das, das durch das erste Nachrichtenbyte dargestellt wird, wird der ersten Stelle des Maskenbytes 30b eine "1" zugeordnet; wenn jedoch das Maskenzeichen nicht das gleiche Zeichen ist, wie es vom ersten Byte der Nachricht dargestellt wird, wird der ersten Stelle des Maskenbytes 30b eine "0" zugewiesen. Der gleiche Vergleich wird zwischen dem Maskenzeichen 30a und jedem anderen Byte der Originalnachricht gemäß Fig. 3b zugewiesen. Unter Benutzung unseres Beispiels wird das Maskenzeichen "Char1" mit dem ersten Byte der Nachricht gemäß Fig. 3b verglichen, das "Char1" ist. Da das das gleiche Zeichen ist, wird der ersten Stelle des Maskenbyte eine "1" zugeordnet. Das Maskenzeichen "Char1" wird mit dem zweiten Byte und mit dem dritten Byte der ursprünglichen Nachricht, "Byte1" und "Byte2" verglichen. Da das Maskenzeichen nicht das gleiche Zeichen ist wie sie von "Byte1" oder "Byte2" dargestellt werden, wird dem Maskenbyte jeweils eine "0" als die nächsten zwei Stellen zugeordnet. Das Maskenzeichen "Char1" wird mit dem vierten und dem fünften Byte der Originalnachricht "Char1" und "Char1" verglichen. Da das Maskenzeichen gleich dem Zeichen ist, das durch das vierte und fünfte Byte dargestellt wird, wird jeweils eine "1" an die letzten zwei Stellen des Maskenbytes gesetzt, wodurch sich "10011" ergibt. Daher ist "10011" das Maskenbyte 30b. Die Restnachricht 30c enthält die ursprüngliche Nachricht, wie in Fig. 3b gezeigt wird, bei der jedoch das Maskenzeichen "Char1" aus der Nachricht entfernt wurde. In unserem Beispiel sind "(Byte1) (Byte2)" die Restnachricht 30c. Daraus ergibt sich, daß die Nachricht in Fig. 3a die komprimierte Form der Nachricht in 3b ist.
- Die Originalnachricht der Fig. 3b wird aus der komprimierten Nachricht der Fig. 3a auf folgende Weise herausgezogen: Wenn beginnend mit der ersten Stelle des Maskenbytes 30b hier eine "1" steht, stellt das Maskenzeichen "Char1" das erste Byte der ursprünglichen Nachricht dar, wenn hier eine "0" steht ist das erste Byte der Restnachricht, "Byte1", das erste Byte der ursprünglichen Nachricht. Wenn auf ähnliche Weise, beginnend mit der zweiten Stelle des Maskenbytes 30b, hier eine "1" steht, ist das Maskenzeichen "Char1" das zweite Byte der ursprünglichen Nachricht, wenn andererseits hier eine "0" steht, wenn das erste Byte der Restnachricht nicht benutzt wird, stellt das erste Byte der Restnachricht das zweite Byte der ursprünglichen Nachricht dar. Wenn das erste Byte der Restnachricht benutzt wurde, stellt das zweite Byte der Restnachricht das zweite Byte der ursprünglichen Nachricht dar.
- Benutzten wir nun unser Beispiel in Fig. 3a; da das Maskenbyte "10011" ist, ist das erste, vierte und fünfte Byte der ursprünglichen Nachricht das Maskenzeichen 30a, d.i. "Char1", aber das zweite und das dritte Byte der ursprünglichen Nachricht sind die restlichen Teile der Restnachricht, d.i. (Byte1) bzw. (Byte2)
- In Fig. 3c wird der Prozeß des kontinuierlichen und wiederholten Komprimierens von Nachrichtenblockdaten dargestellt. Wie bereits bemerkt, ist der Kompressionsalgorithmus der vorliegenden Erfindung in der Lage, Daten kontinuierlich und wiederholt zu komprimieren, bis die Daten nicht mehr weiter komprimiert werden können. Das heißt, wenn die Nachrichtenblöcke beim Komprimieren nicht mehr kleiner werden, sondern an Größe wieder zunehmen, wird zur Übertragung von einem Datenverarbeitungssystem zu einem anderen der kleinstmögliche Nachrichtenblock benutzt.
- Nehmen wir jetzt Bezug auf Fig. 3c (1); eine Nachricht "(Nachricht)" wird zunächst komprimiert auf die Form "(ch1) (mb1) (rm1)" wobei (ch1) das Maskenzeichen, (mb1) das Maskenbyte und (rm1) die Restnachricht ist, wie in Fig. 3c (2) gezeigt wird. Die Restnachricht (rm1) der Fig. 3c (2) wird weiter komprimiert auf die Form "(ch2) (mb2) (rm2)" wobei (ch2) das Maskenzeichen für die Restnachricht (rm1), (mb2) das Maskenbyte für die Restnachricht (rm1), und (rm2) die Restnachricht für die erste Restnachricht (rm1) ist, wie in Fig. 3c (3) gezeigt wird. Die Restnachricht (rm2) der Fig. 3c (3) wird weiter komprimiert zur Form "(ch3) (mb3) (rm3)" wobei (ch3) das Maskenzeichen für die Restnachricht (rm2), (mb3) das Maskenbyte für die Restnachricht (rm2), und (rm3) die Restnachricht für die Restnachricht (rm2) ist, wie in Fig. 3c (4) dargestellt wird. Wenn eine weitere Kompression der Nachricht aus Fig. 3 (4) eine größere anstatt eine kleinere Nachricht ergibt, wird die in Fig. 3c (4) enthaltene Nachricht von einem ersten Datenverarbeitungssystem 10 an ein zweites Datenverarbeitungssystem 20 übertragen, wie in Fig. 1 gezeigt wird.
- Vor der Nachricht "(Nachricht)" in Fig. 3c (1) steht häufig ein Längenindikator "(LL)" und eine Modulnummer "(abcde)". Der Indikator "LL" ist eine Zahl, die die wahre Länge der Nachricht "(Nachricht)" angibt, und die Modulzahl "(abcde)" ist eine Zahl, die eine Bezugslänge angibt. Wenn der Längenindikator "(LL)" größer ist als die Modulzahl "(abcde)", komprimiert der erfindungsgemäße Kompressionsalgorithmus die Nachrichtenblockdaten. Wenn aber der Längenindikator "(LL)" nicht größer ist als die Modulzahl "(abcde)", komprimiert der Kompressionsalgorithmus der vorliegenden Erfindung die Originalnachrichtenblockdaten nicht, sondern die Originalnachrichtenblockdaten werden ohne Komprimieren durch den Datenkanal vom Datenverarbeitungssystem 10 zum Datenverarbeitungssystem 20 übertragen.
- Nehmen wir Bezug auf Fig. 4; hier wird ein Flußdiagramm des Kompressionsalgorithmus gezeigt, der in Speicher 10a und in Speicher 20a gespeichert ist. In Fig. 4 beginnt der Algorithmus in Block 40a mit Nullstellen eines Zählers und Aufzeichnen der Länge der zu komprimierenden Nachricht. Die Zähler werden in Block 40b gelöscht. Ein Zeiger wird auf das erste Zeichen der Nachricht gestellt. Wenn nicht alle Nachrichtenzeichen gezählt sind, wird in Block 40d der Zeichenzähler inkrementiert. Sobald das häufigste Zeichen identifiziert ist, wird in Block 40e das Zeichen gespeichert und in Block 40f zum nächsten Zeichen übergegangen. Wenn das häufigste Zeichen nicht identifiziert wird, wird in Block 40f zum nächsten Zeichen übergegangen. Sobald alle Zeichen gezählt sind, wird in Block 40g die Länge der komprimierten Nachricht berechnet. Wenn die neue Größe nicht kleiner ist, wird in Block 40h die Nachricht übertragen und das Ende erreicht. Wenn die neue Größe kleiner ist, werden in Block 40i Bits = 0 und Maske = 0 gesetzt und die Maske wird zur Ausgangsnachricht addiert. In Block 40j wird der Zeiger auf das erste Zeichen der Nachricht gesetzt. Wenn alle Zeichen geprüft sind, aber die verarbeiteten Zeichen keine Mehrfachen von 8 sind, wird in Block 40k die Maske ausgerichtet und die neue Nachricht in Block 40L als zu komprimierende Nachricht behandelt. Jetzt wird zu Block 40b übergegangen und alle Schritte werden wiederholt. Wenn die verarbeiteten Zeichen ein Mehrfaches von 8 sind, wird die neue Nachricht in Block 40L als zu komprimierende Nachricht betrachtet und zu Block 40b übergegangen. Wenn nicht alle Zeichen untersucht sind und das häufigste Zeichen nicht identifiziert ist, wird in Block 40M das augenblickliche Zeichen zur ausgehenden Nachricht addiert. In Block 40N wird zum nächsten Bit übergegangen. Wenn die verarbeiteten Zeichen Mehrfache von 8 sind, wird in Block 40P ein neues Maskenbyte geklärt und die Frage "sind alle Zeichen untersucht?" wird wiederholt. Wenn nicht alle Zeichen untersucht sind und das häufigste Zeichen identifiziert ist, wird in Block 40Q auf das Bit in der Maske übergegangen und die Frage "sind die verarbeiteten Zeichen Mehrfache von 8?" wird wiederholt.
- Jetzt ein Hinweis auf Fig. 5; diese ist ein Flußdiagramm des Dekompressionsalgorithmus 50, gespeichert in den Speichern 10a und 20a.
- In Fig. 5 entscheidet der Dekompressionsalgorithmus, ob die eingegangene Nachricht komprimiert ist. Wenn sie komprimiert ist, wird in Block 50a die Länge der Nachricht festgestellt. In Block 50b wird das Kompressionszeichen herausgezogen. In Block 50c wird die Anzahl der Bits gleich Null gesetzt. In Block 50d wird die Maske geholt. Wenn das höherwertigste Bit (M.S.) nicht gesetzt ist, wird in Block 50e das Eingangszeichen auf den Ausgang kopiert. Wenn das M.S. Bit gesetzt ist, wird in Block 50f das Kompressionszeichen ausgegeben. Wenn nicht alle Eingangszeichen verarbeitet sind und die Anzahl der zu untersuchenden Bits nicht gleich 8 ist, wird die Frage "ist höherwertigstes Bit gesetzt?" wiederholt und die Schritte 50e bzw. 50f werden wiederholt, in Abhängigkeit davon, ob das M.S. Bit gesetzt ist. Wenn nicht alle Eingangszeichen verarbeitet sind, aber die Anzahl der zu untersuchenden Bits gleich 8 ist, wird zu Block 50c übergegangen und die obige Schrittfolge wird wiederholt. Wenn alle Eingangszeichen verarbeitet sind, werden in Block 50g die Eingangs- und die Ausgangsnachricht vertauscht und zum es wird wieder zum Anfang des Dekompressionsalgorithmus übergegangen unter Wiederholung der Frage "ist die Nachricht komprimiert?".
Claims (3)
1. Verfahren zum Komprimieren eines Datensatzes, in dem ein
Kompressionsalgorithmus benutzt wird, der diesen
Datensatz komprimiert durch:
Identifizieren eines Maskenzeichens im Datensatz, das das
am meisten vorkommende Zeichen im Datensatz
repräsentiert;
Entwickeln eines Maskenbytes im Zusammenwirken mit dem
Maskenzeichen, wobei das Maskenbyte die Stellen des
Maskenzeichens im Datensatz identifiziert, und
Identifizierung der Stellen jedes Teils einer Restnachricht, die
dem Datensatz zugeordnet wird;
Entwickeln der Restnachricht, wobei die Restnachricht der
Datensatz ist, aus dem das Maskenzeichen herausgezogen
ist; und
Verketten des Maskenzeichens, des Maskenbytes und der
Restnachricht und damit Bilden eines weiteren
Datensatzes,
dadurch gekennzeichnet, daß
der Kompressionsalgorithmus den weiteren Datensatz erneut
komprimiert durch:
Entwickeln neuer Maskenzeichen, neuer Maskenbytes und
neuer Restnachrichten aus der Restnachricht und
Verkettung der Maskenzeichen, Maskenbytes und der neuen
Restnachrichten, und
für den Fall, daß der vorher komprimierte Datensatz und
der anschließend komprimierte Datensatz nicht gebildet
wurden, Entwickeln weiterer neuer Maskenzeichen, weiterer
neuer Maskenbytes und weiterer neuer Restnachrichten aus
der neuen Restnachricht und Verkettung der Maskenzeichen,
Maskenbytes und der weiteren neuen Restnachrichten, bis
der vorher komprimierte Datensatz und der anschließend
komprimierte Datensatz gebildet sind.
2. Verfahren gemäß Anspruch 1,
dadurch gekennzeichnet, daß
der komprimierte Datensatz wiederholt neu komprimiert
wird, bis ein vorher komprimierter Datensatz und ein
anschließend komprimierter Datensatz gebildet sind, die
Länge des anschließend komprimierten Datensatzes größer
ist als die Länge des vorher komprimierten Datensatzes,
wobei dann der vorher komprimierte Datensatz der
gewünschte Datensatz ist.
3. Verfahren gemäß Anspruch 2,
dadurch gekennzeichnet, daß
das wiederholte Neukomprimieren des komprimierten
Datensatzes die folgenden Schritte umfaßt:
a) Entwickeln eines neuen Maskenzeichens, eines neuen
Maskenbytes und einer neuen Restnachricht aus dieser
Restnachricht und damit Ausbilden einer neuen
Restnachricht;
b) Verketten der Maskenzeichen, der Maskenbytes und der
komprimierten Restnachrichten;
c) für den Fall, daß Schritt b) nicht zu der Bildung des
vorher komprimierten Datensatzes führt, Wiederholung
der Schritte a) und b) unter Verwendung zuerst der
neuen Restnachricht, bis der vorher komprimierte
Datensatz gebildet ist;
d) Entwickeln eines weiteren neuen Maskenzeichens, eines
weiteren neuen Maskenbytes und einer weiteren neuen
Restnachricht aufgrund der Restnachricht des
vorherigen komprimierten Datensatzes unter Bildung einer
weiteren komprimierten Restnachricht; und
e) Wiederholen von Schritt b) unter Verwendung der
weiteren komprimierten Restnachricht, um den
nachfolgenden komprimierten Datensatz zu bilden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/743,443 US4626824A (en) | 1985-06-11 | 1985-06-11 | Apparatus and algorithm for compressing and decompressing data |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3689674D1 DE3689674D1 (de) | 1994-04-07 |
DE3689674T2 true DE3689674T2 (de) | 1994-09-15 |
Family
ID=24988791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3689674T Expired - Fee Related DE3689674T2 (de) | 1985-06-11 | 1986-05-16 | Verfahren zur Datenkompression und -dekompression. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4626824A (de) |
EP (1) | EP0204992B1 (de) |
JP (1) | JPS61284119A (de) |
BR (1) | BR8602558A (de) |
CA (1) | CA1252896A (de) |
DE (1) | DE3689674T2 (de) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4741047A (en) * | 1986-03-20 | 1988-04-26 | Computer Entry Systems Corporation | Information storage, retrieval and display system |
US5202931A (en) * | 1987-10-06 | 1993-04-13 | Cell Analysis Systems, Inc. | Methods and apparatus for the quantitation of nuclear protein |
US5146221A (en) * | 1989-01-13 | 1992-09-08 | Stac, Inc. | Data compression apparatus and method |
US5532694A (en) * | 1989-01-13 | 1996-07-02 | Stac Electronics, Inc. | Data compression apparatus and method using matching string searching and Huffman encoding |
US4929946A (en) * | 1989-02-09 | 1990-05-29 | Storage Technology Corporation | Adaptive data compression apparatus including run length encoding for a tape drive system |
JP2840320B2 (ja) * | 1989-09-20 | 1998-12-24 | 株式会社日立製作所 | 半導体記憶装置 |
US5179711A (en) * | 1989-12-26 | 1993-01-12 | International Business Machines Corporation | Minimum identical consecutive run length data units compression method by searching consecutive data pair comparison results stored in a string |
US5438671A (en) * | 1991-07-19 | 1995-08-01 | Dell U.S.A., L.P. | Method and system for transferring compressed bytes of information between separate hard disk drive units |
US5450562A (en) * | 1992-10-19 | 1995-09-12 | Hewlett-Packard Company | Cache-based data compression/decompression |
US5291137A (en) * | 1992-11-02 | 1994-03-01 | Schlumberger Technology Corporation | Processing method and apparatus for processing spin echo in-phase and quadrature amplitudes from a pulsed nuclear magnetism tool and producing new output data to be recorded on an output record |
US6523079B2 (en) * | 1993-02-19 | 2003-02-18 | Elonex Ip Holdings Ltd | Micropersonal digital assistant |
US5363098A (en) * | 1993-10-25 | 1994-11-08 | Digital Equipment Corporation | Byte aligned data compression |
US5793980A (en) | 1994-11-30 | 1998-08-11 | Realnetworks, Inc. | Audio-on-demand communication system |
FR2751492B1 (fr) * | 1996-07-16 | 1998-11-13 | Alcatel Mobile Comm France | Procede et dispositif de compression et de decompression de messages |
SE521925C2 (sv) * | 1997-11-21 | 2003-12-16 | Ericsson Telefon Ab L M | Förfarande och anordning vid datakompromering |
US6611211B2 (en) * | 2001-05-04 | 2003-08-26 | International Business Machines Corporation | Data mask coding |
US6907516B2 (en) * | 2002-05-30 | 2005-06-14 | Microsoft Corporation | Compression of program instructions using advanced sequential correlation |
US7908399B2 (en) * | 2003-05-30 | 2011-03-15 | Cisco Technology, Inc. | Compression of repeated patterns in full bandwidth channels over a packet network |
CN101095284B (zh) * | 2004-12-28 | 2012-04-18 | 卡西欧电子工业株式会社 | 用于有选择地压缩和解压缩数据的设备与方法 |
US10042774B2 (en) * | 2016-09-19 | 2018-08-07 | Advanced Micro Devices, Inc. | Method and apparatus for masking and transmitting data |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4117470A (en) * | 1976-10-08 | 1978-09-26 | Data General Corporation | Data bit compression system |
US4192010A (en) * | 1977-11-28 | 1980-03-04 | Kerner William R | Data reduction system |
JPS57101937A (en) * | 1980-12-16 | 1982-06-24 | Nec Corp | Data storage device |
US4420771A (en) * | 1981-02-09 | 1983-12-13 | Bell Telephone Laboratories, Incorporated | Technique for encoding multi-level signals |
US4542515A (en) * | 1983-11-14 | 1985-09-17 | The United States Of America As Represented By The Secretary Of The Army | Multilevel mate pair code compressor for codes expanded by the process of butting |
-
1985
- 1985-06-11 US US06/743,443 patent/US4626824A/en not_active Expired - Fee Related
-
1986
- 1986-04-11 CA CA000506443A patent/CA1252896A/en not_active Expired
- 1986-05-16 EP EP86106712A patent/EP0204992B1/de not_active Expired - Lifetime
- 1986-05-16 DE DE3689674T patent/DE3689674T2/de not_active Expired - Fee Related
- 1986-05-16 JP JP61110984A patent/JPS61284119A/ja active Granted
- 1986-06-03 BR BR8602558A patent/BR8602558A/pt not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US4626824A (en) | 1986-12-02 |
BR8602558A (pt) | 1987-02-03 |
EP0204992B1 (de) | 1994-03-02 |
EP0204992A2 (de) | 1986-12-17 |
DE3689674D1 (de) | 1994-04-07 |
JPS61284119A (ja) | 1986-12-15 |
EP0204992A3 (en) | 1990-02-14 |
JPH0262058B2 (de) | 1990-12-21 |
CA1252896A (en) | 1989-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3689674T2 (de) | Verfahren zur Datenkompression und -dekompression. | |
EP0260748B1 (de) | Verfahren und Schaltungsanordung zur Bitratenreduktion | |
DE3606869C2 (de) | Vorrichtung zur Datenkompression | |
DE69027606T2 (de) | Vorrichtung zur datenkompression | |
DE3852341T2 (de) | Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung. | |
DE3787898T2 (de) | Verfahren und Vorrichtung zur arithmetischen Kodierung von binären Zahlen. | |
DE69224782T2 (de) | Erhöhung der Leistungsfähigkeit beim Rücksetzten von Wörterbüchern für Datenkompressionsanwendungen | |
DE69704362T2 (de) | Datenkompressions-/dekompressionssystem anhand sofortiger zeichenfolgensucheverschachtelter wörterbuchaktualisierung | |
DE69024629T2 (de) | Vorrichtung zur kompression von datenlängen und datenfolgen | |
DE69023329T2 (de) | Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem. | |
DE69413347T2 (de) | Auf die Bytegrenze ausgerichtete Datenkomprimierung | |
DE69027377T2 (de) | Verfahren zur Ausarbeitung einer unregelmässigen Vertauschung von mittels Verschlüsselung geschützten Daten | |
EP0230437B1 (de) | Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchführung des verfahrens | |
DE69802520T2 (de) | Verfahren und vorrichtung zur verlustfreien datenkompression | |
DE3850035T2 (de) | Datenkomprimierungssystem mit Expandierungsschutz. | |
DE69026292T2 (de) | Methode zur Bilddatenkodierung | |
DE3750390T2 (de) | Simultane Fehlererkennung bei der Kodierung durch arithmetische Datenkodierung. | |
DE4340591A1 (de) | Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete | |
DE3688517T2 (de) | Anpassungsfähiges Verfahren zum Komprimieren von Zeichendaten. | |
DE2208664A1 (de) | Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge | |
DE3030255A1 (de) | Verfahren zur uebermittlung von woertern und nachrichtenuebertragungssystem zu seiner durchfuehrung | |
EP2068448A2 (de) | Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Tabellen | |
DE69230609T2 (de) | Vorrichtung zur Datenübertragung und System zur Codeübertragung | |
DE69524999T2 (de) | Verfahren zum Komprimieren und Dekomprimieren von Dateien | |
DE3742142C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |