DE69023329T2 - Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem. - Google Patents

Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem.

Info

Publication number
DE69023329T2
DE69023329T2 DE69023329T DE69023329T DE69023329T2 DE 69023329 T2 DE69023329 T2 DE 69023329T2 DE 69023329 T DE69023329 T DE 69023329T DE 69023329 T DE69023329 T DE 69023329T DE 69023329 T2 DE69023329 T2 DE 69023329T2
Authority
DE
Germany
Prior art keywords
data
byte
user data
segment
compression
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
Application number
DE69023329T
Other languages
English (en)
Other versions
DE69023329D1 (de
Inventor
Tracy Dyer
John O'brien
Neil Thomas
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.)
Storage Technology Corp
Original Assignee
Storage Technology 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 Storage Technology Corp filed Critical Storage Technology Corp
Publication of DE69023329D1 publication Critical patent/DE69023329D1/de
Application granted granted Critical
Publication of DE69023329T2 publication Critical patent/DE69023329T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel or block-wise CRC computation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • 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
    • H03M7/48Conversion 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 alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

    ERFINDUNGSGEBIET
  • Diese Erfindung betrifft Magnetband-Antriebssysteme und Insbesondere eine adaptive Datenkompressionsvorrichtung, die in einer Bandantriebssteuereinheit gelegen ist, die zwischen einen oder mehr Hostrechner und ein oder mehr Bandlaufwerke eingefügt ist, um dazwischen übertragene Daten zu komprimieren und zu dekomprimieren.
  • PROBLEM
  • Auf dem Gebiet der Magnetbandlaufwerke besteht ein Problem, die darin gespeicherten Daten wirkungsvoll zu verdichten. Während der letzten Jahre sind verschiedene Verfahren zur Datenkompresslon entwickelt worden. Wegen der zunehmenden Verwendung von Computersystemen hat der Bedarf an Datenspeicherung beständig zugenommen. Folglich ist es wünschenswert, die Daten zu verdichten, um sowohl ihre Übertragung als auch Ihre Speicherung zu beschleunigen. Die Datenverdichtung reduziert außerdem den physikalischen Raum, der zur Datenspeicherung benötigt wird.
  • Datenkompressionsvorrichtungen des Standes der Technik umfassen eine, die Im U.S. Patent 4,626,829, erteilt am 2. Dezember 1988 an Edward L. Hauck, offenbart wird. Das Patent von Hauck offenbart und beansprucht ein System zur Verdichtung von Daten, das einen Lauflängencodierer umfaßt, der alphanumerische Signale codiert, um lauflängencodierte Daten zu erzeugen. Diese lauflängencodierten Daten besitzen ein Zeichenbyte, das ein wiederholtes Zeichen anzeigt, ein Flagbyte, das das Vorhandensein einer Reihe anzeigt, und ein Lauflängenbyte, das die Zahl der wiederholten Zeichen angibt. Dieses System umfaßt ferner einen statistischen Codierer, der die lauflängencodierten Daten nach Maßgabe einer von mehreren statistischen Codierungstabellen, die durch ein während der statistischen Codierung von vorazigehenden lauflängencodierten Daten erzeugtes Zelgersignal ausgewählt werden, statistisch codlert und ein Zelgersignal erzeugt, um eine statistische Codierungstabelle für nachfolgende lauflängencodierte Daten auszuwählen.
  • Das U.S. Patent 4,568,983, erteilt am 4. Februar 1986 an Thomas W. Bobick, offenbart und beansprucht eine Datenkompressions/-dekompressionsvorrichtung. Dieses System setzt abgetastete Bliddaten zusammen, um abgetastete Streifen eines Dokuments darzustellen, wobei jeder Streifen eine Vielzahl abgetasteter Zeilen umfaßt. Die abgetasteten Zeilen jedes Streifens werden zum Bilden von Datenwörtern parallel gelesen, um Spalten abgetasteter Streifen zu erzeugen. Die Datenwörter werden nach dem Huffman-Verfahren und durch Lauflängencodierung codiert, um Codewörter fester Länge zu erzeugen, die verkettet werden, um das Dokument darzustellen. Jeder Streifen von Datenwörtern wird überprüft, und uncodierte Daten werden an die Stelle von codierten Daten gesetzt, wenn die Bytelänge der codierten Daten die Bytelänge der uncodierten Daten übersteigt. Textdaten und Halbtondaten werden wegen ihrer unterschiedlichen Eigenschaften mit Hilfe von anderen codierungsverfahren codiert. Die Benutzung von Codewörtern fester Länge, die erzwungene Definition von wenistens dem ersten und letzten Datenwort jedes Streifens als Text und Synchronisations-Codewörter, die in den Daten enthalten sind, erlauben ein bidirektionales Codieren/Decodieren von Datenblöcken.
  • Das U.S. Patent 4,729,020, erteilt am 1. März 1988 an R.A. Schaphorst et al., offenbart und beansprucht ein System zum Formatieren von Digitalsignalen, die zu übertragen sind. Dieses System empfängt Analogsignale und setzt sie in Digitalsignale um, die dann in einen Dreibit- Code verdichtet werden. Danach werden die einmal verdichteten Signale entsprechend dem variablen Längencode weiter verdichtet. Die zweimal verdichteten Digitalsignale werden durch eine Formatierungsschaltung geschickt, und ein Kennzeichen wird hinzugefügt, um anzuzeigen, welche Formen der Kompression auf die Digitalsignale angewandt wurden. Außerdem wird ein Puffer benutzt, um eine relativ konstante Zufuhr von Datensignalen für einen Sender aufrechtzuerhalten.
  • Das Problem bei diesen Anordnungen ist, daß jeder Datenverdichtungsalgorithmus für jede einzelne Datenkonfiguration optimiert ist und deshalb eine praktische Grenze in der Geschwindigkeit der Datenkom pression und der Effizienz hat. Die Verwendung von Datenverdichtungscodes fester Länge und die Verwendung eines einzigen Algorithmusses in diesen oben aufgeführten Datenverdichtungsvorrichtungen begrenzt das Vermögen dieser bestehenden Datenverdichtungsvorrichtungen, da sie nicht für verschiedene Arten von Daten adaptierbar sind. Auf dem Gebiet der Magnetbandsysteme hat eine kleine Verbesserung bei der Wirksamkeit der Datenverdichtung oder der Geschwindigkeit einen bedeutsamen Vorteil für den Benutzer zur Folge.
  • Es gibt vier Grundarten von Datenredundanz. Die erste Art von Datenredundanz ist die Zeichenverteilung, wobei in einer typischen Zeichenfolge einige Zeichen häufiger benutzt werden als andere. Eine zweite Art ist die Zeichenwiederholung, wobei eine Folge von Wiederholungen eines einzelnen Zeichens auftritt. In diesem Fall kann die Nachricht kompakter als durch bloßes Wiederholen des Zeichensymbols codlert werden. Ein dritte Art der Datenredundanz sind oft benutzte Muster, wobei bestimmte Folgen von Zeichen mit einer relativ hohen Häufigkeit erscheinen. Diese Sequenzen von Zeichen können mit relativ weniger Bits zugunsten einer Zeit- und Platzersparnis dargestellt werden. Die vierte Art der Datenrundanz ist die Posltionsredundanz, wobei bestimmte Zeichen beständig an einer vorhersagbaren Stelle in jedem Datenblock erscheinen.
  • Diese Arten der Datenredundanz ermöglichen den Datenverdlchtungsalgorlthmen, die Größe der Datendatel für Speicherzwecke zu verringern. Eine Art der Datenverdichtung ist die Huffman-Codierung, die Stücke von Eingabedaten fester Größe In Symbole varlabler Länge übersetzt. Im normalen Betrieb wird die Größe der Eingangssymbole durch die Große der für die Verdichtung benötigten übersetzungstabelle begrenzt. Es wird eine Tabelle benötigt die jedes Eingangssysmbol und seinen entsprechenden Code aufführt. Diese Einzelzeichen-Huffman-Codierung kann die Zelchenverteilungsredundanz bewältigen, nicht aber die anderen Arten der Datenredundanz. Außerdem ist der Decodierungsprozeß komplex, da die Länge jedes zum Zweck der Dekompression zu Interpretierenden Codes erst bekannt ist, wenn die ersten paar Bits Interpretiert sind. Eine andere Art der Datenkompression ist die Lauflängencodierung, bei der Sequenzen von Identischen Zeichen als ein Zählfeld plus einer Identifizierung des wiederholten Zeichens codlert werden können. Dieses Verfahren ist bei grahischen Abbildungen und einigen Daten wirkungsvoll, nicht aber bei Textdateien. Eine dritte Art der Datenkompression ist die programmierte Kompression, die eine Standard-Festcodetabelle benutzt. Ein Nachteil dieser Einrichtung ist, daß für jeden Typ von Datendatei eine Codetabelle programmiert werden muß, um eine größtmögliche Effizienz zu erzielen, eine Anpassungsfähigkeit ist nicht gegeben. Eine letzte Form der Datenkompression ist die adaptive Kompression, die Ketten von Eingangssymbolden variabler Länge in Codes fester Länge umsetzt. Die Symbolketten werden so ausgewählt, daß sie alle fast die gleiche Erscheinungswahrscheinlichkeit aufweisen. Diese Form der Verdichtung ist bei der Zeichenhäufigkeitsund -wiederholungsredundanz wie auch bei der Redundanz der oft benutzten Muster wirkungsvoll.
  • LÖSUNG
  • Durch eine adaptive Datenkompressionsvorrichtung für ein Magnetbandsystem, die die Blöcke einer Benutzerdatei zur Speicherung auf einem Magnetbandspeichermedium wirkungsvoll in ein bitorientiertes verdichtetes Format verdichtet, werden die oben beschriebenen Probleme gelöst und ein technischer Fortschritt auf dem Gebiet erzielt. Die Datenverdichtungsvorrichtung erlangt eine größere Geschwindigkeit und Effizienz, indem jeder Block einer eingehenden Benutzerdatei in Segmente vorbestimmter Größe geteilt wird, von denen jedes unabhängig ohne Bezug auf irgendein anderes Segment in der Benutzerdatei verdichtet wird. Die Datenkompressionsvor richtung benutzt mehrere Datenverdich tungsalgorithmen gleichzeitig, um den Datenkompressionsvorgang an die in der Benutzerdatel gespeicherten einzelnen Daten anzupassen. Eine zyklische Redundanzprüfschaltung wird benutzt, um einen CRC-Code vorbestimmter Länge von allen eingehenden Benutzerdatenbytes zu berechnen, bevor sie verdichtet werden. Der berechnete CRC-Code wird an das Ende des verdichteten Datenblockes angehängt.
  • Die Datenkompressionsvorrichtung arbeitet, Indem sowohl Bytes als auch Folgen von Bytes in Codes kürzerer Bitfolge, genannt Bezugswerte, umgewandelt werden. Die Bezugswertwe ersetzen die Bytes und Bytefolgen, wenn sie auf dem Magnetband aufgezeichnet werden. Die Byteketten haben zwei Formen, eine Lauflängenform für Zeichen, die dreimal oder mehr wiederholt werden, und eine Kettenfom, die Zeichenmuster von zwei oder mehr Zeichen erkennt. Zwei Variablen werden benutzt, um in einem einzelnen Segment maximale und minimale Bytewerte zu bezeichnen. Einzelne Benutzerdatenbytes werden mit Hilfe von Bezugswerten komprimiert, die für den Bereich von Werten definiert werden, der durch die oben erwähnten Variablen für jedes Segmont abgegrenzt wird. Eine BEGIN genannte Varibale enthält den kleinsten Benutzerdaten-Bytewert in dem Segment, während die andere Variable END den größten Benutzerdaten-Bytewert in dem Segment enthält. Allen Bytewerten in dem Bereich zwischen dem Bytewert in der BEGIN-Variablen und dem Bytewert in der END-Variablen werden aufeinanderfolgende Bezugswerte zugewiesen. Der Bezugswert benutzt die minimale Zahl von Bits, die erforderlich ist, um sicherstellen, daß jedem Byte ein einmaliger Wert zugewiesen wird.
  • Ketten von Bytes werden verdichtet, indem jeder definierten Kette ein Bezugswert unter Verwendung eines adaptiven Verdichtungsalgorithmusses zugewiesen wird. Nachfolgende Vorkommen dieser Kette werden durch Ihren Bezugswert ersetzt. Ketten werden ein Zeichen zu einer Zeit konstruiert, wo eine vorangehend definierte Kette plus das nächste Benutzerdatenbyte eine neue Kette definiert und ihr der nächste vorangehend undefinierte Bezugswert zugewiesen wird. Die Ketten werden daher länger und die Datenverdichtung effizienter, sowie mehr Benutzerdatenbytes in dem Segment untersucht werden. Die Kettendefinitlon erfolgt, indem der letzte benutzte Bezugswert mit dem nächsten Benutzerdatenbyte von dem eingegebenen Datenstrom kombiniert wird, dann gesucht wird, um zu sehen, ob diese Kette vorangehend als eine Kette definiert worden ist. Wenn ja, wird das nächste Byte mit diesem neuen Byteketten-Bezugswert verkettet, und es erfolgt eine weitere Suche, um zu sehen, ob diese erweiterte Bytekette vorangehend als eine Kette definiert worden ist. Diese Sequenz wird fortgesetzt, bis eine Kette lokalisiert wird, die vorangehend nicht definiert worden ist. Der zuletzt benutzte Bezugswert wird in den verdichteten Ausgangsdatenstrom gelegt, und der nächste aufeinanderfolgende unbenutzte Bezugswert wird bestimmt, um die letzte Kette, die nicht gefunden wurde, zu definieren. Der Suchvorgang wird beginnend mit dem zuallerletzt benutzten Benutzerdatenbyte erneut eingeleitet.
  • Folgen von drei oder mehr wiederholten Bytes werden mit Hilfe einnes vorbestimmten Satzes von reservierten Bezugawerten codiert, die anzeigen, daß das vorangehende Zeichen die durch den Wiederholungscode spezifizierte Anzahl von Malen wiederholt wurde. Das unmittelbar vorangehende Zeichen wird in die Wiederholungszählung nicht wiedereinbezogen. Die Lauflängencodierung hat Vorrang über die Kettendatenverdichtung. Die Lauflängencodierung, die Einzelbyteverdichtung und die Kettendatenverdichtung werden in jedem verdichteten Segment innerhiab der verdichteten Benutzerdatendatei vermischt.
  • Des weiteren ist eine Vorrichtung zum Dekomprimieren eines verdichteten Segments enthalten, die rückwärts liest. Bandantriebssysteme konnen Dateien rückwärts lesen, und die vorliegende Vorrichtung umfaßt einen Rückwärtslesepuffer und Steuerschaltungen, um die Reihenfolge des rückwärts gelesenen Segments zum Zweck der Dekompression umzukehren. Diese Schaltung umfaßt eine Vorrichtung, die die Länge jedes Segments identifiziert, so daß der Anfang jedes Segments zum Dekomprimieren auf einer Segment-für-Segment-Basis lokalisiert werden kann. Das dekomprimierte Segment wird dann zur Übertragung an die Hostschnittstelle der Steuereinheit wieder umgekehrt. Diese Vorrichtung arbeitet somit bidirektional.
  • Wenn die Größe eines verdichteten Segments in Bytes größer ist als seine Größe vor der Verdichtung, wird das Segment nicht verdichtet und im unververdichteten Format aufgezeichnet. Ein unverdichtetes Segment wird durch die BEGIN-Variable Identifiziert, die einen Wert enthält, der gößer als die END-Variable ist. Die adaptive Datenkompressionsvorrichtung stellt somit eine Mehrzahl von Verdichtungsoperationen gleichzeitig zur Verfügung, um die Verdichtung des einzelnen Daten bytes oder der Kette von Datenbytes, die momentan von einem Hostrechner empfangen werden, zu optimieren.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 zeigt die Datenverdichtungsvorrichtung in Form eines Blockschaltbildes, und
  • Fig. 2-6 zeigen weitere Einzelheiten von verschiedenen Segmenten der der Vorrichtung, die in der Datenverdichtungsvorrichtung enthalten sind.
  • AUSFÜHRLICHE BESGHREIBUNG
  • Die adaptive Datenverdichtungsvorrichtung befindet sich innerhalb einer Bandantriebssteuereinheit, die zwischen einen oder mehr Hostrechner und ein oder mehr Bandlaufwerke eingefügt ist. Die adaptive Datenverdichtungsvorrichtung arbeitet, um Datenblöcke einer vom Hostrechner empfangenen Benutzerdatendatei zur Speicherung auf einem in dem Bandlaufwerk geladenen Magnetband wirksam in ein bitorientiertes verdichtetes Format zu verdichten. Die Datenverdichtungsvorrichtung teilt jeden Block einer eingehenden Benutzerdatendatei in Segmente vorbestimmter Größe, von denen jedes unabhängig ohne Bezug auf irgendein anderes Segment in der Benutzerdatendatei verdichtet wird. Die Datenverdichtungsvorrichtung benutzt mehrere Datenverdichtungsalgorithmen gleichzeitig, um den Datenverdichtungsvorgang an die in der Benutzerdatendatei gespeicherten einzelnen Daten unzupassen. Eine zyklische Redundanzprüfschaltung wird benutzt, um einen CRC-Code vorbestimmter Länge von allen eingehenden Benutzerdatenbytes zu berechnen, bevor sie verdichtet werden. Der berechnete CRC-Code wird an das Ende des verdichteten Datenblockes angehängt.
  • Die Datenkompressionsvorrichtung arbeitet, indem sie Bytes und Ketten von Bytes in kürzere Bitkettencodes, genannt Bezugswerte, umwandelt. Die Bezugswertwe ersetzen die Bytes und Byteketten, wenn sie auf dem Magnetband aufgezeichnet werden. Die Byteketten haben zwei Formen, eine Lauflängenform für Zeichen, die dreimal oder öfter wiederholt werden, und eine Kettenform, die Zeichenmuster von zwei oder mehr Zeichen erkennt. Zwei Variablen werden benutzt, um in einem einzelnen Segment maximale und minimale Bytewerte zu bezeichnen. Einzelne Benutzerdatenbytes werden mit Hilfe von Bezugswerten komprimiert, die für den Bereich von Werten definiert werden, der durch die oben erwähnten Variablen für jedes Segment abgegrenzt wird. Eine BEGIN genannte Varibale enthält den kleinsten Benutzerdaten-Bytewert in dem Segment, während die andere Variable END den größten Benutzerdaten- Bytewert in dem Segment enthält. Allen Bytewerten in dem Bereich zwischen dem Bytewert in der BEGIN-Variablen und dem Bytewert in der END-Variablen werden aufeinanderfolgende Bezugswerte zugewiesen. Der Bezugswert benutzt die minimale Zahl von Bits, die erforderlich ist, um sicherstellen, daß jedem Byte ein einmaliger Wert zugewiesen wird, indem die höchstwertigen, aufeinanderfolgenden nullwertigen Bits, die nicht benötigt werden, um diesen Bezugswert von allen anderen vorher definierten zu unterscheiden, unterdückt werden.
  • Ketten von zwei oder mehr Bytes werden verdichtet, indem jeder definierten Kette unter Verwendung eines adaptiven Verdichtungsalgorithmusses ein Bezugswert zugewiesen wird. Nachfolgende Vorkommen dieser Kette werden durch ihren Bezugswert ersetzt. Ketten werden ein Zeichen zu einer Zeit konstruiert, wo eine vorher definierte Kette plus das nächste Benutzerdatenbyte eine neue Kette definiert und ihr der nächste vorher undefinierte Bezugswert zugewiesen wird. Die Ketten werden daher länger und die Datenverdichtung wird effizienter, sowie mehr Benutzerdatenbytes in dem Segment untersucht werden. Sowie mehr Ketten definiert werden, werden jedoch Bezugswerte größerer Länge benötigt, um eine Kette eindeutig zu identifizieren, was die Wirksamkeit des Verdichtungsvorgangs vermindert. Dieser Faktor macht es wünschenswert, einen Datenblock in Segmente zu teilen, die unabhängig verdichtet werden. Die Kettendefinition findet statt, indem der letzte benutzte Bezugswert mit dem nächsten Benutzerdatenbyte von dem eingegebenen Datenstrom kombiniert wird, dann gesucht wird, um zu sehen, ob diese Kette vorher definiert worden ist. Wenn ja, wird das nächste Byte mit diesem neuen Byteketten-Bezugswert verkettet, und es erfolgt eine weitere Suche, um zu sehen, ob diese erweiterte Bytekette vorher als eine Kette definiert worden ist. Diese Sequenz wird fortgesetzt, bis eine Kette lokalisiert wird, die vorher nicht definiert worden ist. Der zuletzt für eine definierte Kette benutzte Bezugswert wird in den verdichteten Ausgangsdatenstrom gelegt, und der nächste vorher undefinierte Bezugswert wird bestimmt, um die letzte Kette, die nicht gefunden wurde, zu definieren. Der Suchvorgang wird beginnend mit dem zuallerletzt benutzten Benutzerdatenbyte erneut eingeleitet.
  • Folgen von drei oder mehr wiederholten Bytes werden mit Hilfe einnes vorbestimmten Satzes von reservierten Bezugswerten codiert, die anzeigen, daß das vorangehende Zeichen die durch den Wiederholungscode spezifizierte Anzahl von Malen wiederholt wurde. Das unmittelbar vorangehende Zeichen wird in die Wiederholungszählung nicht erneut einbezogen. Die Lauflängencodierung hat Vorrang über die Kettendatenverdichtung. Die Lauflängencodierung, die Einzelbyteverdichtung und die Kettendatenverdichtung werden in jedem verdichteten Segment innerhlab des Benutzerdatenblockes vermischt.
  • Wenn die Größe eines verdichteten Segments in Bytes größer ist als seine Größe vor der Verdichtung, wird das Segment nicht verdichtet und im unververdichteten Format aufgezeichnet. Ein unverdlGhtetes Segment wird durch die BEGIN-Variable identifiziert, die einen Wert enthält, der gößer als die END-Variable ist.
  • ARCHITEKTUR DER DATENKOMPRESSIONSVORRICHTUNG
  • Fig. 1 zeigt die Datenkompressionsvorrlchtung in der Form eines Blockschaltbildes. Die Datenkompresslonsvorrichtung 100 empfängt über den Bus 111 Benutzerdaten von dem Hostrechner (nicht gezeigt) während einer Dateischreiboperation. Die Datenkompressionsvorrichtung 100 wandelt die empfangenen Benutzerdaten in ein neues, bitorientiertes verdichtetes Format um. Die verdichteten Daten werden dann über den Bus 112 an den Datenpuffer einer Bandantriebssteuereinheit (nicht gezeigt) zum Schreiben auf das Magnetband übertragen. Während einer Leseoperation empfängt die Datenkompressionsvorrichtung 100 die verdichteten Daten vom Datenpuffer der Bandantriebssteuereinheit und dekomprimiert diese Daten. Die dekomprimierten Daten stellen jetzt die ursprünglichen Benutzerdaten, wie ursprünglich vom Hostrechner empfangen, dar. Diese rekonstruierten Daten werden dann über den Bus 111 an die Hostschnittstelle der Steuereinheit übertragen. Die Übertragung der Benutzerdaten an die Hostschnittstelle der Steuereinheit kann beginnen, bevor die gesamte Datei dekomprimiert worden ist. Die in der Datenkompressionsvorrichtung 100 enthaltenen Schaltkreise führen die oben beschriebene Zeichen/Ketten-Codierung/Decodierung sowie die Lauflängen-Codierung/Decodierung aus.
  • Die Datenkompressionsvorrichtung 100 in dieser Ausführung wird als in der Bandantriebssteuereinhelt residierend beschrieben. Die Stelle der Datenkompressionsvorrichtung 100 liegt zwischen der Hostschnittstelle der Steuereinheit (die Schaltung, die Daten an/von die Datenkanäle des Hostrechners überträgt) und dem Datenpuffer in der Bandantriebssteuereinheit. Diese Datenkompressionsvorrichtung 100 kann sich zwischen der Bandantriebssteuereinheit und dem Bandlaufwerk befinden, aber diese Stelle macht es schwierig, eine feste Gerätedatenübertragungsrate unter den Bedingungen variierender Datenverdichtungseffizienz aufrechtzuerhalten. Außerdem erlaubt die offenbarte Lage der Datenkompressionsvorrichtung 100, den Raum im Datenpuffer in der Bandantriebssteuereinheit effizienter zu nutzen, indem verdichtete Daten darin gespeichert werden.
  • Die Verbindung der Datenkompressionsvorrichtung 100 mit der Hostschnittstelle der Steuereinheit über den Bus 111 wird über die Datenübertragungs-Steuerschnittstelle 101 zustandegebracht. Die Verbindung der Datenkompressionsvorrichtung 100 mit dem Datenpuffer der Bandantriebssteuereinheit über den Bus 112 erfolgt durch die Datenpufferschnittstelle 102. Diese zwei Schnittstellen 101, 102 dienen dazu, über die zugehörigen Busse 111, 112 empfangene Daten zur Verarbeitung durch die Datenkompressionsvorrichtung 100 zu speichern. Wenn die Schnittstellen 101, 102 diese Verbindungsfunktion ausführen, verbinden sie verschiedene der Signalleitungen 121-123, 125-127 schaltbar mit den in den jeweiligen Schnittstellenschaltungen 101, 102 enthaltenen Puffern, die die Daten enthalten.
  • Die Kanaldatenschaltung 104 enthält alle Logik-, Register- und Speichereinheiten, die benötigt werden, um den Datenfluß der Lese- und Schreiboperationen mit der Datenübertragungs-Steuerschnittstelle 101 zu steuern. Der Datenfluß durch die Datenkompressionsvorrichtung 100 weist sieben verschiedene übertragungsmodi auf. Diese Modi sind:
  • 1. Datenübertragungs-Steuerschnittstelle 101 an Datenpufferschnitt stelle 102.
  • 2. Kanaldatenschaltung 104 an Verdichtungsschaltung 105.
  • 3. Kanaldatenschaltung 104 an Datenpufferschnittstelle 102.
  • 4. Kanaldatenschaltung 104 an Verdichtungsprüfschaltung 107.
  • 5. Dekompressionsschaltung 106 an Verdlchtungsprüfschaltung 101.
  • 6. Kanal datenschaltung 104 an Datenübertragungs-Steuerschnittstelle 101.
  • 7. Dekompressionsschaltung 106 an Kanaldatenschaltung 104. Die gesamte Datenverdichtung wird In der Verdichtungsschaltung 105 durchgeführt. Die Verdichtungsschaltung 105 arbeitet nur während einer Datenschreiboperation von der Hostschnittstelle des Steuereinheit an den Datenpuffer der Bandantriebssteuereinheit. Der für die Datenverdichtung benutzte Algorithmus ist, wie unten beschrieben, eine Kombination aus Lauflängencodierung und einem bitorientierten Codierungsformat.
  • Die Dekompressionsschaltung 106 dekomprimiert (dehnt) die verdichteten Daten, die durch die Datenpufferschnittstelle 102 von dem zugehörigen Datenpuffer der Bandantriebssteuereinheit empfangen werden. Die gesamte Datendekompression wird von der Dekompressionsschaltung 106 ausgeführt. Die Dekompressionsschaltung wird sowohl beim Lesen als auch beim Schreiben eines Bandes benutzt. Während eines Bandlesevorgangs werden die verdichteten Daten durch die Datenpufferschnittstelle 102 von dem zugehörigen Datenpuffer der Bandantriebssteuereinheit über den Bus 112 empfangen. Die verdichteten Daten werden dann in der Dekompressionsschaltung 106 dekomprimiert und an die Kanaldatenschaltung 104 übertragen. Die Kanaldatenschaltung 104 leitet die dekomprimierten Daten an die Datenübertragungs-Steuerschnittstelle 101, die die Daten über den Bus 111 an die Hostschnittstelle der Steuereinheit leitet. Während einer Schreiboperatlon an den Datenpuffer der Bandantriebssteuereinheit empfängt die Dekompressionsschaltung 106 die verdichteten Daten von der Verdichtungsschaltung 105 über die Datenpufferschnittstelle 102. Diese verdichteten Daten werden dann durch die Dekompressionsschaltung 106 dekomprimiert und mit den ursprünglichen unverdichteten Benutzerdaten, die noch In der Kanaldatenschaltung 104 gespeichert sind, verglichen. Dieser Verdichtungsprüfvorgang stellt sicher, daß die Verdichtungsfunktion richtig arbeitet.
  • Die Umgehungsschaltung 103 wirkt, um die gesamte Datenkompressions/- dekompressionsvorrichtung zu überbrücken. Während einer Umgehungsoperation gibt die Kanaldatenschaltung 104 die Umgehungsschaltung 103 über die Leitung 131 frei, um Daten zwischen der Datenübertragungs- Steuerschnittstelle 101 und der Datenpufferschnittstelle 102 direkt zu übertragen.
  • Datenschreiboperation
  • Um die Funktion der in Fig. 1 gezeigen Elemente besser zu veranschaulichen, wird die Verarbeitung einer Datenschreiboperation hierin beschrieben. Die unverdichteten Benutzerdaten werden von der Hostschnittstelle der Steuereinheit über den Bus 111 an die Datenübertragungs-Steuerschnittstelle 101 übertragen. Die empfangenen Benutzerdaten werden segmentweise über ile Leitung 123 an den Puffer 201 der Kanaldatenschaltung 104 geleitet, wie in Fig. 2 gezeigt. Der Puffer 201 wird benutzt, um die Benutzerdatel zu empfangen und zeitliche Abweichungen in den übertragenen Daten zu akkomodieren. Das gepufferte Segment der Benutzerdaten wird vom Puffer 201 über die Leitung 209 sowohl an die Zelchenbereichsprüfschaltung 202 als auch den Kanaldatenpufferbus 203 ausgegeben. Die Zeichenbereichsprüfschaltung 202 ermittelt die kleinsten und größten Zeichenbytewerte in jedem Segment der empfangenen Benutzerdaten. Die Zeichenbereichsprüfschaltung 202 weist den kleinsten Wert der Variablen BEGIN und den größten Wert der Variablen END zu. Diese berechneten Werte werden von der Zeichenbereichsprüfschaltung 202 über die Leitung 124 an die Verdichtungsschaltung 105 gesendet.
  • Das empfangene Segment des Benutzerdatenblockes wird vom Kanaldatenpuffer 203 an eine Mehrzahl von Zielpunkten befördert. Das Segment des Benutzerdatenblockes wird im Speicher 204 gespeichert, während die Datenverdichtungs-CRC-Erzeugungsschaltung 205 und die Steuereinheit- CRC-Schaltung 206 ihre Operationen auf dem Segment ausführen, daß byteweise auf dem Kanaldatenpufferbus 203 erscheint. Die Datenverdichtungs-CRC-Erzeugungsschaltung 205 berechnet einen zyklischen Redundanzprüfwert für den gesamten Benutzerdatenblock, und der berechnete Wert wird an das Ende des Datenblockes, der verdichtet wird, angehängt. Außerdem erzeugt die Steuereinheit-CRC-Schaltung 206 einen zyklischen Redundanzprüfwert für den empfangenen Benutzerdatenblock zum Vergleichen mit dem CRC-Wert, den die Steuereinheit-Hostschnittstelle in der Steuereinheit berechnet hat. Dieser CRC-Wert der Steuereinheit wird nicht auf das Band geschrieben. Der Vergleich wird durch einen Mikroprozessor (nicht gezeigt) in der Bandantriebssteuereinheit ausgeführt, um sicherzustellen, daß bei der Übertragung der Benutzerdaten innerhalb der Bandantriebssteuereinheit keine Fehler aufgetreten sind.
  • Speicherzeiger
  • Die in Fig. 2 gezeigte Kanaldatenschaltung 104 umfaßt auch eine Mehrzahl von Zelgern 215-218, um die im Speicher 204 gespeicherten Daten laufend zu verfolgen. Der Schreibzeiger 215 ist ein Inkrementierer, der auf die monentane Adresse von Daten zeigt, die in den Speicher 204 geschrieben werden. Er wird benutzt, um die Stelle der Daten, die von der Steuereinheit-Hostschnittstelle während des Datenverdichtungsvorgangs empfangen werden, und die Stelle der Daten, die von der Dekompressionsschaltung 106 während eines Datendekompressionsvorgangs in den Speicher 204 eingegeben werden, zu identifizieren. Der Zeiger für verdichtete Daten 216 ist ein Inkrementierer, der auf die momentane Adresse zeigt, um Daten aus dem Speicher 204 in die Verdichtungsschaltung 105 zu lesen. Der Zeiger für unverdichtete Daten 217 ist ein Inkrementierer, der auf die momentane Adresse zeigt, um Daten aus dem Speicher 204 In die Datenpufferschnlttstelle 102 zu lesen, wenn Daten in einer unverdichteten Form über die Leitung 127 in den Datenpuffer der Bandantriebssteuereinhelt geschrieben werden. Der Verdichtungsprüfzeiger 218 ist ein Inkrementierer, der auf die momentane Adresse zeigt, um Daten aus dem Speicher 204 zu lesen, um entweder zu venfizieren, daß die auf das Band geschriebenen Daten bei einer Datenverdichtungsoperation korrekt sind, oder die Daten bei einer Datendekompressionsoperation an die Datenübertragungs-Steuerschnittstelle 101 zu senden. Der Verdichtungsprüfzeiger 218 umfaßt ferner einen Dekrementierer, um die Daten aus dem Speicher 204 rückwärts zu lesen, wenn die Datendekompressionsoperation eine Rückwärtsleseoperation ist.
  • Datenregister
  • Die Adressensteuerschaltung 200 aktiviert den Multiplexer 208, um den Ausgang von einem der Zeiger 215-218 schaltbar mit der Leitung 219 zu verbinden, um dadurch die von einem der Zeiger 215-218 erzeugte Adresse an die Adressenanschlüsse des Speichers 204 anzulegen, um dem Speicher 204 zu ermöglichen, entweder die vom Kanaldatenpufferbus 203 an den Elngangsanschluß D angelegten Daten zu speichern oder Daten von dem Kanaldatenpufferbus 203 über den Anschluß Q an die Leitungen 210 auszugeben. Daten, die aus dem Speicher 204 auf die Leitungen 210 gelesen werden, werden an die Mehrzahl von Registern 211-214 angelegt, die mit dem Bus 210 parallel verbunden sind. Das Register 211 ist ein Datenübertragungs-Steuerschnittstellenregister, das den Speicher 204 über die Leitungen 123 mit der Datenübertragungs-Steuerschnittstelle 101 verbindet. Das Verdichtungsregister 212 verbindet den Speicher 204 über die Leitungen 129 mit der Verdichtungsschaltung 105. Das Datenpuffer-Schnittstellenregister 213 verbindet den Speicher 204 über die Leitungen 127 mit der Datenpufferschnittstelle 102. Das Verdichtungsprüfregister 214 verbindet den Speicher 204 über die Leitungen 130 mit der Verdichtungsprüfschaltung 107. Diese Register 211-214 arbeiten unter Kontrolle der Adressensteuerschaltung 200, um ein Segment des Benutzerdatenblockes, das im Speicher 204 gespeichert worden ist, mit einem der oben aufgezählten vier möglichen Zielpunkte schaltbar zu verbinden.
  • Die Segmente eines Benutzerdatenblockes werden somit von der Steuerelnheit-Hostschnittstelle über den Bus 111 an die Datenübertragungs- Steuerschnittstelle 101 übertragen. Die Segmente des Benutzerdatenblockes werden über die Leitung 123 an die Kanaldatenschaltung 104 geleitet, wo sie unberührt im Speicher 204 gespeichert werden, während der Zeichenbereich durch die Zeichenbereichsprüfschaltung 202 geprüft wird und die zyklischen Redundanzprüfvariablen durch die Steuereinheit-CRC-Schaltung 206 und die Datenverdichtung-CRC-Schaltung 205 berechnet werden. Die Adressensteuerschaltung 200 richtet diese empfangenen Benutzerdaten, die im Speicher 204 gespeichert sind, auf der Grundlage der Operationen, die auf diesen Benutzerdaten auszuführen sind, an den richtigen Zielpunkt. Typischerweise werden die Benutzerdaten vom Speicher 204 an die Verdichtungsschaltung 105 übertragen, wo der Verdichtungalgorithmus diese Daten verdichtet und die verdichteten Daten über die Datenpufferschnittstelle 102 an den Datenpuffer der Bandantriebssteuereinheit leitet. Die Verwendung dieser Schaltkreise für Datelleseoperationen wird unten erörtert.
  • Verdichtungsschaltung
  • Fig. 3 zeigt in der Form eines Blockschaltblldes Einzelheiten der Verdichtungsschaltung 105 der Datenkompressionsvorrichtung 100. Die Verdichtung der Benutzerdatendatei wird während einer Bandschreiboperation in der Verdichtungsschaltung 105 ausgeführt. Der in der Verdichtungsschaltung 105 zur Datenverdichtung benutzte Algorithmus ist eine Kombination von Lauflängencodierung und einem bitorientierten Format.
  • Die Kanaldatenschaltung 104 übertragt jedes Segment der Benutzerdatei über die Leitungen 129 an die Verdichtungsschaltung 105. Dieses empfangene Datenwort wird über die Leitung 129 an ein Halteregister 302 übertragen, das dem Lauflängencodierer 303 erlaubt, drei eingegebene Bytes zu überwachen, um eine Lauflänge von drei Bytes oder mehr zu ermitteln. Dies wird vollbracht, indem der Lauflängencodierer 303 das augenblicklich vom Bezugswertcodierer 304 verarbeitete Datenbyte über die Leitung 313, das nachfolgende im Halteregister 302 zwischengespeicherte Byte über die Leitung 312 und ein drittes folgendes Byte auf dem Pfad 129 überwacht. Der Lauflängencodierer 303 überwacht somit diese drei Eingaben, um eine Lauflänge von drei oder mehr Bytes zu erfassen. Wenn alle dieser Eingaben die gleichen sind, sendet der Lauflängencodierer 303 ein Lauflängenerfassungssignal über die Leitungen 313 an den Bezugswertcodierer 304, der dann das letzte Zeichen, das er empfing, codiert und dann die Steuerung auf den Lauflängencodierer 303 überträgt. Der Lauflängencodierer 303 startet den darin enthaltenen Lauflängenzähler (nicht gezeigt) und fährt fort, die drei Eingaben zu vergleichen, sowie nachfolgende Datenbytes von der Kanaldatenschaltung 104 über die Leitung 129 an den Verdichtungsblock 105 übertragen werden. Der Lauflängencodierer 303 erhöht den Lauflängenzähler jedesmal, wenn ein Eingangsdatenbyte eingegeben und als Teil der Reihe von identischen Datenbytes befunden wird. Wenn die Reihe von identischen Datenbytes zu Ende ist, entfernt der Lauflängencodierer 303 das Lauflängenerfassungssignal, wodurch der Lauflängenzähler angehalten und der darin enthaltene Wert in einen Wiederholungscode codiert wird. Dieser Wiederholungscode wird über die Leitungen 313 an den Bezugswertcodierer 304 ausgegeben, der diesen codierten Wert in den verdichteten Datenstrom einfügt.
  • Datenbytes, die nicht Teil einer Lauflänge sind, werden vom Bezugswertcodierer 304 in einen Codewert codiert, der auf der in der Verdichtungszeichentabelle 306 gespeicherten Suchtabelle beruht. Sowie jedes Datenbyte in ein neues Bitformat verdichtet ist, wird es über die Leitung 314 an die Bytezusammenfügungsschaltung 305 gesendet, die die Bitketten zu Bytes zusammenfügt und ein Paritätsbit für dieses Byte erzeugt. Die verdichteten Daten werden dann über die Leitung 315 in dem verdichteten Datenpuffer 307 gespeichert, bis sie über die Leitung 316 und die Datenpufferschnittstelle 102 an den Datenpuffer der Bandantriebssteuereinheit ausgegeben werden. Die Datenverdichtung-CRC- Erzeugung 205 ist über die Leitung 131 in den verdichteten Datenstrom in der Bytezusammenfügung 305 eingefügt.
  • Wenn die Verdichtungsschaltung 105 feststellt, daß die Zahl der in dem verdichteten Segment ausgegebenen Bytes gößer als die Zahl der Bytes in dem ursprünglichen unverdichteten Segment ist, werden die Bytewerte von BEGIN und END so verändert, daß BEGIN größer als END ist. Die Werte von BEGIN und END werden vom verdichteten Datenpuffer 307 über die Leitung 316 an die Datenpufferschnittstelle 102 ausgegeben. Außerdem gibt die Adressensteuerung 200 in der Kanaldatenschaltung 104 den Zeiger für verdichtete Daten 217 zum Adressieren des Speichers 204 frei, um das ursprüngliche unverdichtete Segment über die Leitungen 210 und das Datenpuffer-Schnittstellenregister 213 auf die Leitungen 127 zu lesen. Das ursprünliche unverdichtete Segment wird dadurch an die Datenpufferschnittstelle 102 übertragen, wo es dann an den Datenpuffer der Bandantriebssteuereinhelt übertragen wird.
  • Bezugswert-Codierungsschaltung
  • Fig. 4 zeigt in der Form eines Blockschaltbildes die Elemente, die die Bezugswert-Codierungsschaltung 304 bilden, die einzelne Datenbytes und Datenbyteketten durch Bitkettencodes, genannt Bezugswerte, ersetzt, die mit wesentlich weniger Bits als die ursprünglichen unverdichteten Daten die Datenbytes und Datenbyteketten darstellen. Ein Datenbyte wird vom Halteregister 302 der Verdichtungsschaltung 105 in die Bezugswert-Codierungsschaltung 304 eingegeben. Dieses Datenbyte wird im aktuellen Zeichenregister 401 7ur Verwendung in dem Verdichtungsprozeß gespeichert. Außerdem gibt die Kanaldatenschaltung 104 die Variablen END und BEGIN von der Zeichenbereichsprüfschaltung 202 über die Leitung 124 aus. Diese Variablen werden in den Registern 405 bzw. 406 gespeichert, um die größten und kleinsten Zeichencodewerte in dem einzelnen Segment der Benutzerdaten zu speichern. Diese Variablen werden benutzt, um den Bereich von Bezugswerten, die einzelne Benutzerdatenbytes codieren, zu definieren. Bezugswerte in diesem Bereich sind als Zeichenbezugswerte bekannt. Bezugswerte, die numerisch größer sind als die Zeichenbezugswerte, codleren Ketten von mehreren Bytes. Diese Bezugswerte sind als Kettenbezugswerte bekannt. Das Verringern der Zahl von Bezugswerten, die zum Codieren einzelner Benutzerdatenbytes reserviert werden, vermindert die mittlere Zahl von Bits, die für jeden Bezugswert in dem verdichteten Datenstrom benötigt wird.
  • Das laufende Datenbyte wird vom aktuellen Zeichenregister 401 sowohl an die oben beschriebene Lauflängencodierungsschaltung 303 als auch an den Multiplexer 407 ausgegeben. Der Multiplexer 407 legt entweder die im Register 405 gespeicherte Variable END oder den laufenden Zeichenwert aus dem aktuellen Zeichenregister 401 an einen Eingang der Zeichenbezugswert-Additionsschaltung 408 an. Der andere Eingang für die Zeichenbezugswert-Additionsschaltung 408 ist die im Register 406 gespeicherte Variable BEGIN. Die Zeichenbezugswert-Additionsschaltung 408 wird benutzt, um den Anfangsbezugswert von Mehrfachdatenbyteketten in einem Segment und die Zeichenbezugswerte zu berechen.
  • Die Zeichenbezugswertaddierer 408 gibt den Zeichenbezugswert an den Multiplexer 403 und an die aktuelle Bezugswertzählerschaltung 409 aus. Die aktuelle Bezugswertzählerschaltung 409 enthält den Bezugswert für später definierte Ketten. Dieser Zähler wird jedesmal er höht, wenn eine neue Kette definiert wird. Der Zähler wird zu Anfang mit dem ersten Bezugswert geladen, der zum Codieren von Ketten bestimmt ist. Der aktuelle Bezugswertzähler 409 gibt den momentanen Bezugswert an die Bezugswertgrößen-Logikschaltung 410 aus, die diesen Wert in eine Variable von 4 Bits codiert, die die Anzahl von Bits bereitstellt, die zum Codieren des größten bis jetzt definierten Bezugswertes benötigt wird. Während der Lauflängencodierung benutzt die Bezugswertgrößen-Logikschaltung 410 den von der Lauflängencodierungsschaltung 303 erhaltenen Lauflängenbezugswert, um die Zahl von Bits zu codieren, die zum Definieren des Wiederholungszählcodes benötigt wird. Die von der Bezugswertgrößen-Logikschaltung 410 ausgegebene Variable wird im Register 412 zwischengespeichert, bevor sie an die Bytezusammenfügungsschaltung 305 übertragen wird, die diese Information benutzt, um die Bezugswerte zu Blöcken von 16 Bits zusammenzufügen.
  • Das vorherige Bezugswertregister 404 enthält den letzten vom Verdichtungsblock 105 erzeugten Kettenbezugswert. Es gibt drei verschiedene Arten von Bezugswerten, die, je nachdem, welchen Eingang der Multiplexer 403 auf das vorherige Bezugswertregister 404 schaltet, in dem Register 404 gespeichert werden können. Diese drei Eingänge des Multiplexers sind: der vom Lauflängencodierer 303 erhaltene Lauflängenbezugswert, ein von der Zeichenbezugswert-Additionsschaltung 408 ausgegebener Zeichenbezugswert oder ein von der Verdichtungskettentabelle 306 erhaltener Bezugswert. Im normalen Betrieb enthält das vorherige Bezugswertregister 404 den Bezugswert der letzten Kette, die in der Verdichtungskettentabelle 306 lokalisiert wurde. Wenn aber die Verdichtungskettentabelle 306 keine Kette definieren konnte, dann enthält das vorherige Bezugswertregister 404 den Zeichenbezugswert des laufenden Zeichens. Während einer Lauflängencodierung wird das vorherige Bezugswertregister 404 benutzt, um den Lauflängenbezugswert und den Wiederholungszählcode, wie von dem Lauflängencodierer 303 empfangen, auszugeben. Das vorherige Bezugswertregister 404 gibt einen Wert an das Ausgangsbezugswertregister 411 aus, das diesen Wert an die Bytezusammenfügungsschaltung 305 nur während der Lauflängencodierung und wenn ein neuer Ketten- oder Zeichenbezugswert codiert wird weiterleitet.
  • Der Codierungsprozeß wird mit Hilfe der Hash-Logikschaltung 402 vollbracht, die den im aktuellen Zeichenregister 401 enthaltenen Wert und den Wert des verherigen Bezugswertregisters 404 in eine Eingangsadresse für die Verdichtungskettentabelle 306 codiert. Diese resultierende Adresse wird zum Adressieren der Verdichtungskettentabelle 306 benutzt, um einen Bezugswert zu erzeugen. Der im aktuellen Zeichenregister 401 gespeicherte Wert und der im vorherigen Bezugswertregister 404 gespeicherte Wert werden mit den Kettendefinitionen für alle Ketten verglichen, die der Bezugswertcodierungsblock 304 für dieses einzelne Segment der Benutzerdatendatei gebildet hat. Die Kettenbezugswertdefinitionen werden durch eine Hash-Funktion der Kombination des vorherigen Bezugswertes und des laufenden Zeichens adressiert und auf der Leitung 413 an das vorherige Bezugswertregister 404 und das Ausgangsbezugswertregister 411 ausgegeben, wenn In der Kettentabelle ein Vergleich gefunden wird. Der von der Bezugswertcodierungsschaltung 304 berechnete Bezugswert wird somit an die Bytezusammenfügungsschaltung 305 ausgegeben, wo Bezugswerte zu Bytes zusammengefaßt werden, die dann in dem verdichteten Datenpuffer 307 zur Übertragung an den Datenpuffer der Bandantriebssteuereinheit gespeichert werden.
  • Datenverdichtungsalgorithmus
  • Die Datenverdichtung wird durch Trasformieren des Benutzerdatenblocks, den der Hostrechner an die Datenverdichtungsschaltung 100 sendet, In ein bitorientiertes Format zustandegebracht. Der verdichtete Datenblock wird in den Benutzerbytes eines aufgezeichneten Datenblocks auf Band aufgezeichnet.
  • Die Benutzerdatenbytes in jedem aufgezeichneten Benutzerdatenblock werden in n Segmente geteilt, wobei jedes Segment eine vorbestimmte gleiche Größe aufweist. Der Datenverdichtungsalgorithmus verarbeitet ein Segment zu einer Zeit, um die darin enthaltenen Daten zu verdichten. Das letzte Segment ist das Restsegment und enthät alle restlichen Benutzerdatenbytes. Ein zyklischer Redundanzprüfwert von 2 Bytes wird dem Restsegment folgend an den verdichteten Datenblock angehängt. Jedes Segment außer dem Restsegment enthält die gleiche Menge von Daten wie alle anderen Segmente in der Datei vor der Verdichtung. Die Menge der auf dem Magnetband pro Segment aufgezeichneten verdichteten Daten ist, abhängig von der Wirksamkeit des Verdichtungsalgo rithmusses bei diesen einzelnen Benutzerdaten, typischerweise viel ge ringer als die ursprünglich in dem Segment enthaltene Datenmenge. Jedes Segment wird unabhängig ohne Bezug auf irgendein anderes Segment verdichtet. Die Datenverdichtung wird durchgeführt, indem Bytes und Ketten von Bytes in kürzere Bitkettencodes, genannt Bezugswerte, umgewandelt werden. Die Bezugswerte ersetzen bei der Aufzeichnung auf Band die Bytes und die Byteketten. Die Byteketten haben zwei Formen, eine Lauflängenform für Zeichen, die dreimal oder öfter wiederholt werden, und eine Kettenform, die Zeichenmuster von einem oder mehr Zeichen erkennt. Einzelne Benutzerdatenbytes werden mit Hilfe von Bezugswerten verdichtet, die für den Bereich von Werten definiert werden, der durch die Variablen BEGIN und END In jedem Block abgegrenzt wird. Das BEGIN-Feld enthält den kleinsten Benutzerdatenbytewert In diesem einzelnen Segment. Das END-Feld enthält den größten Benutzerdatenbytewert in dem Segment. Allen Bytewerten werden in dem Bereich zwischen dem Bytewert In dem BEGIN-Feld und dem Bytewert in dem END Feld aufeinanderfolgende Bezugswerte zugewiesen.
  • Kettenverdichtung
  • Ketten von Bytes werden mit Hilfe eines adaptiven Datenverdichtungsalgorithmusses verdichtet, der jeder definierten Kette einen Bezugswert zuweist. Nachfolgende Vorkommen dieser Kette werden durch ihren Kettenbezugswert ersetzt. Diese Ketten werden Zeichen für Zeichen gebildet, das heißt, eine vorher definierte Kette plus das nächste Benutzerdatenbyte werden eine neue Kette definieren und bekommt den nächsten vorher undefinierten Bezugswert zugewiesen. Die Ketten werden daher länger, sowie mehr Benutzerdatenbytes in dem Segment untersucht werden. Im Betrieb findet die Kettendefinition statt, indem der letzte benutzte Bezugswert mit dem nächsten Benutzerdatenbyte von dem eingegebenen Datenstrom kombiniert wird. Diese resultierende Kette wird dann zum Absuchen der Kettentabelle benutzt, um festzustellen, ob diese Kette vorher definiert worden ist. Wenn ja, wird das nächste folgende Byte mit dem Bezugswert der Kette verkettet, die gerade gefunden wurde, um ein neues Kettentabellen-Suchmuster zu bilden. Die Suche wird wiederholt, um zu sehen, ob diese erweiterte Bytekette vorher als ein Kette definiert worden ist. Dieser Vorgang wird wiederholend fortgesetzt, bis eine Kette gefunden wird, die vorher nicht definiert worden ist. Wenn dies eintritt, wird der zuletzt benutzte definierte Kettenbezugswert in den verdichteten Ausgangsdatenstrom gelegt, und der nächste aufeinanderfolgende unbenutzte Bezugswert wird dieser undefinierten Kette zugewiesen. Der Suchvorgang wird dann beginnend mit dem zuallerletzt empfangenen Benutzerdatenbyte eingeleitet. Adaptive Datenverdichtungsalgorithmen sind bekannt, und genaue Einzelheiten des vorliegenden Algorithmusses sind für ein Verständnis der vorliegenden Vorrichtung ohne Bedeutung. Der adaptive Datenverdichtungsalgorithmus wird daher hier nicht in weiteren Einzelheiten offenbart.
  • Folgen von drei oder mehr wiederholten Bytes werden codiert, indem einem Bezugswert ein Wiederholungscode angefügt wird. Dieser Wiederholungscode spezifiziert die Anzahl von Malen, die des letzte und einzige Zeichen der Kette wiederholt werden sollte. Der Verdichtungsalgorithmus codiert daher das empfangene Byte, und die Lauflängencodierungsschaltung unterhält eine Zählung, wieviele dieser codierten Bytes in der Kette von empfangenen Benutzerdaten nacheinander wiederholt werden.
  • Es werden etliche Bezugswerte benutzt und definiert, so daß die Zahl der Bits in dem Wiederholungszählfeld des verdichteten Datenstromes reduziert wird. Jeder Lauflängenbezugswert definiert einen Bereich von Wiederholungszählungen, so daß nur die geringstwertigen Bits der Wiederholungszählung geschrieben werden müssen. Die Tabelle A zeigt ein Beispiel einer Reihe von Bezugswerten, die benutzt werden würden, wenn die Größe des Verdichtungsegments 2048 Bit wäre. Tabelle A - Spezifikation der Lauflängen-Wiederholungszählung Bezugswert Wiederholungscode #von Bits in Wiederholungszählung Bytewiederholungzählung Anmerkung: Der Wiederholungscode ist in Hexadezimalform ausgedrückt.
  • Datensatz-Lesevorgang
  • Wenn von dem Band ein verdichteter Datensatz zu lesen ist, findet ein Dekompressionsvorgang statt, um die auf dem Band gespeicherte verdichtete Datendatei in die ursprüngliche unverdichtete Benutzerdatei umzuwandeln. Dies erfolgt, Indem die Datenverdichtungsschaltung 100 die verdichtete Datei Segment für Segment von dem Band in die Dekompressionsschaltung 106 liest, wo es im Puffer 501 (gezeigt In Fig. 5) gespeichert wird. Die Bytewerte von BEGIN und END werden gelesen, um vor dem Einleiten des Dekompressionsvorgangs festzustellen, ob dieses Segment verdichtet ist. Wenn es ein verdichtetes Segment ist, werden die verdichteten Datenbytes Byte für Byte aus dem Puffer 501 in das Halteregister 502 gelesen, wo sie von der CRC-Prüfschaltung 504 benutzt werden, um eine zyklische Redundanzprüfung für dieses einzelne Segment zu berechnen. Das gespeicherte Datenbyte wird auch an die Bitzerlegungsschaltung 503 angelegt, die die eingegebenen Datenbytes in die einzelnen Bezugswerte zerlegt. Jeder Bezugswert wird durch die in der Bitzerlegungsschaltung 503 enthaltene Lauflängen-Erfassungslogik auf Lauflängenbezugswerte geprüft. Wenn keine Lauflänge ermittelt wird, sendet die Bitzerlegungsschaltung 503 den Bezugswert an die Bezugswert-Decoderschaltung 505.
  • Bezugswert-Decoderschaltung
  • Die Bezugswert-Decoderschaltung 505 ersetzt Zeichenbezugswerte durch Originaldatenbytes und Kettenbezugswerte durch Originalbyteketten. Die Bezugswert-Decoderschaltung 505 führt daher mit ihrer zugehörigen Dekompressionskettentabelle 506 die Umkehrfunktion des Bezugswertcodierers und der in der Verdichtungsschaltung 105 enthaltenen Verdich tungskettentabelle durch.
  • Die Bezugswert-Decoderschaltung 505 umfaßt zwei Register 601, 602, die jeweils den kleinsten Zeichencodewert BEGIN und den größten Zeichencodewert END in dem Block halten. Diese Werte werden vom Puffer 501 erlangt und werden benutzt, um Bezugswerte, die einzelne Bytes codieren, zu erfassen und die so codierten Zeichen zu erzeugen. Das Coderegister 603 enthält den Bezugswert, der momentan decodiert wird. Die Eingabe in das Coderegister 603 kommt von einem Multiplexer 605, wobei der zu decodierende Anfangsbezugswert von dem Ausgang der Bitzerlegungsschaltung 503 ausgewält wird. Während des Decodierungsvor gangs kann das Coderegister 603 von zwei weiteren Quellen geladen wer den. Wenn der Bezugswert in der Dekompressionskettentabelle 506 noch nicht definiert worden ist, wird das Coderegister 603 von dem alten Coderegister 607 geladen. Wenn der Bezugswert ein Kettenbezugswert ist, wird das Coderegister 603 von der Dekompressionskettentabelle 506 geladen. Das Incode-Register 604 enthält den letzten Bezugswert, den die Bitzerlegungsschaltung 503 in die Bezugswert-Decoderschaltung 505 eingegeben hat. Der Eingang in das Incode-Register 604 wird von einem Multiplexer 606 gesteuert, der entweder den von der Bitzerlegungsschaltung 503 eingegebenen Bezugswert oder einen von der Bezugswert- Flußlogik 608 erhaltenen vordefinierten Bezugswert auswählt. Das alte Coderegister 607 enthält den letzten Bezugswert, den der Dekompressionsblock 106 vollständig decodiert hat. Das Anfangsbezugswertregister 609 enthält den Wert des ersten Kettenbezugswertes in dem Senment. Das Anfangsbezugswertregister 609 wird am Anfang jedes Segments durch die Addiererschaltung 610 geladen. Der hierin gespeicherte Wert wird von der Bezugswert-Flußlogik 608 benutzt, um Kettenbezugswerte von Zeichenbezugswerten zu unterscheiden. Das endgültige Zeichenregister 611 enthält das endgültige Zeichen eines decodierten Bezugswertes, der ein Ketten- oder ein Zeichenbezugswert sein kann. Wenn ein Zeichenbezugswert decodiert wird, kommt der Eingang für das endgültige Zeichenregister 611 vom Addierer 610. Wenn ein Kettenbezugswert decodiert wird, kommt der Eingang für das endgültige Zeichenregister 611 von der Dekompressionskettentabelle 506. Der Ausgang des endgültigen Zeichenregisters 611 geht über Leitung 517 an die Kettenstapelschaltung 517. Der Bezugswertzähler 612 enthält den Wert des größten bis jetzt in diesem Segment decodierten Kettenbezugswertes. Der Bezugswertzähler 612 wird zuerst von der Addiererschaltung 610 mit dem ersten Kettenbezugswert in dem Segment geladen. Der Bezugswertzähler 612 wird dann von der Bezugswert-Flußlogik 608 jedesmal erhöht, wenn eine neue Kette definiert und in der Dekompressionskettentabelle 506 gespeichert wird. Der Bezugswertzähler 612 wird von der Bezugswert-Flußlogik 608 benutzt, um festzustellen, ob der eingegebene Bezugswert in der Dekompressionskettentabelle 506 nicht definiert ist, sowie von der Bitzerlegungsschaltung 503, um die Bezugswertgröße zu berechnen und die Dekompressionskettentabelle 506 während des Neuaufbauens der Dekompressionskettentabel le zu adressieren.
  • Die Addiererschaltung 610 wird benutzt, um Zeichen mit Hilfe von Zei chenbezugswerten zu decodieren und den Anfangskettenbezugswert zu be rechnen. Die Dekompressionskettentabelle 506 befindet sich in einem Speicher, der die Decodierungstabelle von Kettendefinitionen für dieses Segment enthält. Die Dekompressionskettentabelle 506 ist genauso aufgebaut wie die Tabelle, die das Segment verdichtet hat. Auf die In der Dekompressionskettentabelle 506 gespeicherten Definitionen wird mit Hilfe der codierten Bezugswerte verwiesen, und wenn eine Kette gefunden wird, wird das endgültige Zeichen der Kette in den Kettenstapel 507 eingestellt.
  • Kettenstapel
  • Der Kettenstapel stapelt Bytes von jeder Kette, sowie die Kette dekomprimiert wird. Sowie jedes Byte der Kette entnommen wird, wird es auf den Kettenstapel gelegt. Wenn die Kette vollständig dekomprimiert und der Kette das letzte Byte entnommen ist, werden die Bytes aus dem Stapel herausgeholt, um sie in der richtigen Reihenfolge an den Kanaldatenblock zu senden.
  • Prüfung der Dekompression-Kompression beim Schreiben des Bandes Der Dekompressionsblock 106 wird auch beim Schreiben des Bandes benutzt. Während eines Bandschreibvorgangs überträgt die Verdichtungsschaltung 105 die verdichteten Daten an die Datenpuffer-Schnittstellenschaltung 102, wo sie sowohl an den Datenpuffer der Bandantriebssteuereinheit als auch an die Dekompressionsschaltung 106 übertragen werden. Diese verdichteten Daten werden in der Dekompresslonsschaltung 106 dekomprimiert und dann mit den ursprünglichen unverdichteten Daten in der Kanaldatenschaltung 104 verglichen. Dies erfolgt, Indem die dekomprimierten Daten auf der eltung 128 und die ursprünglichen unverdichteten Daten in der Kanaldatenschaltung 104 über die Leitung 130 an die Verdlchtungsprüfschaltung 107 übertragen werden. Die Adressensteuerung 200 gibt den Verdichtungsprüfzeiger 218 und den Multiplexer 208 frei, um eine Stelle im Speicher 204 zu adressieren, worin die ursprünglichen unverdichteten Daten gespeichert sind. Diese Originaldatendatei wird dann vom Sqeicher 204 über den Bus 210 und den Puffer 214 an die Verdichtungsprüfschaltung 101 gesendet, wo sie mit den Daten, die komprimiert und dann dekomprimiert wurden, verglichen werden. Wenn die komprimierten/dekomprimierten Daten mit dem vom Host rechner empfangenen ursprünglichen Benutzerdaten übereinstimmen, dann ist der Verdichtungsvorgang richtig durchgeführt worden. Wenn die zwei Datensegmente nicht übereinstimmen, war der Verdichtungsvorgang fehlerhaft und die Verdichtung wird wiederholt, und der neu verdichtete Datenblock wird über den ursprünglich erzeugten verdichteten Datenblock geschrieben. Auf diese Weise wird die Richtigkeit der Verdichtungsoperation sofort festgestellt, wenn die verdichteten Daten in den Datenpuffer der Bandantriebssteuereinheit geschrieben werden.
  • Rückwärtslesen
  • Eine besondere Funktion von Bandantriebseinheiten ist die Fähigkeit, Dateien rückwärts zu lesen. Um dies zu tun, verfügt die Datenverdichtungsschaltung 100 über einen Puffer 501, der ein ganzes Datensegment speichert. Wenn einmal die Bytes, die ein verdichtetes Segment bilden, im Puffer 501 gespeichert sind, werden die Bytes aus dem Puffer 501 in der entgegengesetzten Reihenfolge Ihres Einschreibens in den Puffer 501 gelesen. Um die Bytes eines Segments umzukehren, muß es dem Puffer 501 möglich sein, die Stelle des Anfangs eines Segments zu identifizieren, wenn das Segment mit dem letzten Byte zuerst empfangen wird. Dies wird möglich gemacht, indem die Verdichtungsschaltung 105 einen Wert an jedes Segment anhängt, der die Länge der verdichteten oder unverdichteten Darstellung des Segments Identifiziert. Dieser Segmentlängenwert trifft am Puffer 501 vor den Bytes des Segments selbst ein, was dem Puffer 501 erlaubt, der Beginn des Segments zu erkennen. Während die verdichteten Daten rückwärts in die adaptive Datenverdichtungsvorrichtung gelesen werder, kann daher der Puffer 501 die Daten in Segmente teilen und den Dekompressionsvorgang segmentweise beginnen, bovor die ganze verdichtete Datendatei gelesen ist.
  • Da beim Rückwärtslesen die Daten in der Rückwärtsrichtung an der Steuereinheit-Hostschnittstelle erscheinen müssen, müssen die Daten erneut umgekehrt werden, wenn sie auf ihren Weg zu der Steuereinheit-Hostschnittstelle aus dem Speicher 204 gelesen werden.
  • Um den Ourchsatz von Daten durch den Puffer 501 nicht zu verlangsamen, wird eine Doppelpufferung verwendet. Das heißt, während ein Segment im Rückwärtsmodus ausgelesen wird, wird das nächste Segment in den Puffer 501 geschrieben.
  • Während eine spezifische Ausführung der vorliegenden Erfindung offen bart worden ist, wird angenommen, daß die Fachleute in der Technik alternative Ausführungen ersinnen können und werden, die in den Umfang der beigefügten Ansprüche fallen.

Claims (17)

1. Datenkompressionsvorrichtung, die einen Benutzerdatenblock in einen bitverdichteten Datenblock zur Speicherung auf einem Datenspelchermedlum verdichtet und die umfaßt:
eine Einrichtung, die den Benutzerdatenblock in eine Mehrzahl von Datensegmenten gleicher Größe teilt;
eine Einrichtung, die jedes der Datensegmente unabhängig von allen anderen Datensegmenten in dem Benutzerdatenblock verdichtet und die umfaßt:
eine Einrichtung, die auf ein empfangenes Benutzerdatenbyte anpricht und bestimmt, ob das empfangene Benutzerdatenbyte mit den n vorangehenden Datenbytes, dem letzten Byte einer Kette oder einem einzelnen Benutzerdatenbyte identisch ist;
eine Einrichtung, die auf die Bestimmungseinrichtung anspricht und einen aus einer Mehrzahl von Lauflängenbezugswerten einem Benutzerdatenbyte zuweist, das mit wenigstens den n vorangehenden Benutzerdatenbytes identisch ist, wo n eine Ganzzahl > 2 ist;
eine Einrichtung, die auf die Bestimmungseinrichtung anspricht und einen aus einer Mehrzahl von Byteverdichtungsbezugswerten einem Benutzerdatenbyte zuweist;
eine Einrichtung, die auf die Bestimmungseinrichtung anspricht und einen aus einer Mehrzahl von Kettenverdichtungsbezugswerten einem Benutzerdatenbyte zuweist, das das letzte Byte einer Datenkette umfaßt, und
eine Einrichtung, die jeden der nacheinander von der Verdichtungseinrichtung empfangenen Bezugswerte auf ein Datenspeichermedium schreibt.
2. Vorrichtung nach Anspruch 1, die weiter umfaßt:
eine Einrichtung, die auf das letzte Benutzerdatenbyte des Benutzerdatenblocks anspricht und einen CRC-Wert, der die CRC des Benutzerdaten blocks darstellt, an den bitverdichteten Datenblock auf dem Datenspei chermedium anhängt.
3. Vorrichtung nach Anspruch 1, die weiter umfaßt:
eine Einrichtung, die jedes empfangene Datenbyte speichert;
eine Einrichtung, die auf das Speichern des letzten Bytes eines Datensegments durch die Speichereinrichtung anspricht und die Bytelänge der auf das Datenspeichermedium geschriebenen Bezugswerte, die das Datensegment darstellen, berechnet, und
eine Einrichtung, die auf die Bytelänge anspricht, die die Bytelänge des Segments überschreitet, um das Datensegment anstelle der auf das Datenspeichermedium geschriebenen Bezugswerte zu schreiben.
4. Vorrichtung nach Anspruch 1, die weiter umfaßt:
eine Einrichtung, die auf das Zuweisen eines Bezugswertes dem letzten Datenbyte des Datensegments durch die Verdichtungseinrichtung anspricht und die den Datenbytes des Datensegments nacheinander zugewiesenen Bezugswerte dekomprimiert, und
eine Einrichtung, die auf die Dekompressionseinrichtung anspricht und den dekomprimierten bitverdichteten Datenblock mit dem Benutzerdatenblock vergleicht, um Fehler ir dem bitverdlchteten Datenblock zu erkennen.
5. Vorrichtung nach Anspruch 1, die weiter umfaßt:
eine Einrichtung zum Umgehen der Verdichtungseinrichtung, um Datensegmente direkt auf das Datenspeichermedium zu schreiben.
6. Vorrichtung nach Anspruch 1, bei der die Kettenbezugswert-Zuweisungseinrichtung umfaßt:
eine Einrichtung, die eine empfangene Kette von Datenbytes mit einer Tabelle vergleicht, die Einträge enthält, die vorher empfangene Ketten von Datenbytes darstellen, denen ein Kettenbezugswert zugewiesen worden ist, und
eine Einrichtung, die auf das Nichtübereinstimmen der empfangenen Kette von Datenbytes mit dem Tabelleneinträgen anspricht und der emp fangenen Kette einen vorher nicht zugewiesenen Kettenbezugswert zu weist.
7. Vorrichtung nach Anspruch 1, die weiter umfaßt:
eine Einrichtung, die die Länge jedes verdichteten Datensegments ermittelt, und
eine Einrichtung, die einen Wert, der die ermittelte Länge angibt, an das verdichtete Datensegment anhängt.
8. Vorrichtung nach Anspruch 7, die weiter umfaßt:
eine Einrichtung, die auf den von dem Datenspeichermedium in Rückwärtsreihenfolge gelesenen verdichteten Datenblock anspricht und den angehängten Wert liest;
eine Einrichtung, die ein Segment, dessen Länge durch den angehängten Wert angegeben wird, von dem gelesenen verdichteten Datenblock absondert, und
eine Einrichtung, die das abgesonderte Segment dekomprimiert.
9. Datenkompressionsvorrichtung, die einen Benutzerdatenblock in einen bitverdichteten Datenblock zur Speicherung auf einem Datenspeichermedium verdichtet und die umfaßt:
eine Einrichtung, die den Benutzerdatenblock in eine Mehrzahl von Datensegmenten gleicher Größe teilt;
eine Einrichtung, die jedes der Datensegmente unabhangig von allen anderen Datensegmenten in dem Benutzerdatenblock verdichtet und die umfaßt:
eine Einrichtung, die auf ein empfangenes Benutzerdatenbyte anpricht und bestimmt, ob das empfangene Benutzerdatenbyte mit den n vorangehenden Datenbytes, dem letzten Byte einer Kette oder einem einzelnen Benutzerdatenbyte identisch ist;
eine Einrichtung, die auf die Bestimmungseinrichtung anspricht und einen aus einer Mehrzahl von Lauflängenbezugswerten einem Benutzerdatenbyte zuweist, das mit wenigstens den n vorangehenden Benutzerdatenbytes identisch ist, wo n eine Ganzzahl > 2 ist;
eine Einrichtung, die auf die Bestimmungseinrichtung anspricht und einen aus einer Mehrzahl von Byteverdichtungsbezugswerten einem Benutzerdatenbyte zuweist;
eine Einrichtung, die auf die Bestimmungseinrichtung anspricht und einen aus einer Mehrzahl von Kettenverdichtungsbezugswerten einem Benutzerdatenbyte zuweist, das das letzte Byte einer Datenkette umfaßt;
eine Einrichtung, die jeden der nacheinander von der Verdichtungseinrichtung empfangenen Bezugswerte auf ein Datenspeichermedium schreibt;
eine Einrichtung, die jedes empfangene Datenbyte speichert;
eine Einrichtung, die auf das Speichern des letzten Bytes eines Datensegments durch die Speichereinrichtung anspricht und die Bytelänge der auf das Datenspeichermedium geschriebenen Bezugswerte, die das Datensegment darstellen, berechnet;
eine Einrichtung, die auf die Bytelänge anspricht, die die Bytelänge des Segments überschreitet, um das Datensegment anstelle der auf das Datenspeichermedium geschriebenen Bezugswerte zu schreiben, und eine Einrichtung zum Umgehen der Verdichtungseinrichtung, um Datensegmente direkt auf das Datenspeichemedium zu schreiben.
10. Verfahren, das einen Benutzerdatenblock in einen bitverdichteten Datenblock zur Speicherung auf einem Datenspeichermedium verdichtet und die folgenden Schritte umfaßt:
Teilen des Benutzerdatenblockes In eine Mehrzahl von Datensegmenten gleicher Größe;
Verdichten jedes der Datensegmente unabhängig von allen anderen Datensegmenten in dem Benutzerdatenblock, umfassend:
Bestimmen, ob das empfangene Benutzerdatenbyte mit den n vorangehenden Datenbytes, dem letzten Byte einer Kette oder einem einzelnen Benutzerdatenbyte identisch ist;
Zuweisen eines aus einer Mehrzahl von Lauflängenbezugswerten einem Benutzerdatenbyte, das mit wenigstens den n vorangehenden Benutzerdatenbytes identisch ist, wo n eine Ganzzahl > 2 ist;
Zuweisen eines aus einer Mehrzahl von Byteverdichtungsbezugswerten einem Benutzerdatenbyte;
Zuweisen eines aus einer Mehrzahl von Kettenverdichtungsbezugswerten einem Benutzerdatenbyte, das das letzte Byte einer Datenkette umfaßt, und
Schreiben jedes der nacheinander von der Verdichtungseinrichtung empfangenen Bezugswerte auf ein Datenspeichermedium.
11. Verfahren nach Anspruch 10 das weiter den Schritt umfaßt:
Anhängen, als Reaktion auf das letzte Benutzerdatenbyte des Benutzerdatenblockes, eines CRC-Wertes, der die CRC des Benutzerdatenblockes darstellt, an den bitverdichteten Datenblock auf dem Datenspeichermedium.
12. Verfahren nach Anspruch 10 das weiter die Schritte umfaßt:
Speichern jedes empfangenen Datenbytes;
Berechnen der Bytelänge der auf das Datenspeichermedium geschriebenen Bezugswerte, die das Datensegment darstellen, und
Schreiben, als Reaktion auf die Bytelänge, die die Bytelänge des Segments überschreitet, des Datensegments anstelle der auf das Datenspeichermedium geschriebenen Bezugswerte.
13. Verfahren nach Anspruch 10 das weiter die Schritte umfaßt:
Dekomprimieren, als Reaktion auf die Zuweisung eines Bezugswertes dem letzten Datenbyte des Datensegments durch die Verdlchtungseinrichtung, der den Datenbytes des Datensegments nacheinander zugewiesenen Bezugswerte, und
Vergleichen des dekomprimierten bitverdichteten Datenblockes mit dem Benutzerdatenblock, um Fehler in dem bitverdichteten Datenblock zu erkennen.
14. Verfahren nach Anspruch 10, bei dem der Schritt des Zuweisens eines Kettenbezugswertes umfaßt:
Vergleichen einer empfangenen Kette von Datenbytes mit einer Tabelle, die Einträge enthält, die vorher empfangene Ketten von Datenbytes darstellen, denen ein Kettenbezugswert zugewiesen worden ist, und Zuweisen, als Reaktion auf das Nichtübereinstimmen der empfangenen Kette von Datenbytes mit den Tabelleneinträgen, eines vorher nicht zugewiesenen Kettenbezugswertes der empfangenen Kette.
15. Verfahren nach Anspruch 10 das weiter die Schritte umfaßt:
Ermitteln der Länge jedes verdichteten Datensegments und
Angängen eines Wertes, der die ermittelte Länge angibt, an das verdichtete Datensegment.
16. Verfahren nach Anspruch 15, das weiter die Schritte umfaßt:
Lesen des angehängten Wertes von dem verdichteten Datenblock, wenn der verdichtete Datenblock in Rückwärtsreihenfolge von dem Datenspeichermedium gelesen wird;
Absondern eines Segments, dessen Länge durch den angehängten Wert angegeben wird, von dem verdichteten Datenblock und
Dekomprimieren des abgesonderten Segments.
17. Verfahren, das einen Benutzerdatenblock in einen bitverdichteten Datenblock zur Speicherung auf einem Datenspeichermedium verdichtet und die folgenden Schritte umfaßt:
Teilen des Benutzerdatenblockes in eine Mehrzahl von Datensegmenten gleicher Größe;
Verdichten jedes der Datensegmente unabhängig von allen anderen Datensegmenten in dem Benutzerdatenblock, umfassend:
Bestimmen, als Reaktion auf ein empfangenes Benutzerdatenbyte, ob das empfangene Benutzerdatenbyte mit den n vorangehenden Datenbytes, dem letzten Byte einer Kette oder einem einzelnen Benutzerdatenbyte identisch ist;
Zuweisen eines aus einer Mehrzahl von Lauflängenbezugswerten einem Benutzerdatenbyte, das mit wenigstens den n vorangehenden Benutzerdatenbytes identisch ist, wo n eine Ganzzahl > 2 ist;
Zuweisen eines aus einer Mehrzahl von Byteverdichtungsbezugswerten einem Benutzerdatenbyte;
Zuweisen eines aus einer Mehrzahl von Kettenverdichtungsbezugswerten einem Benutzerdatenbyte, das das letzte Byte einer Datenkette umfaßt;
Schreiben jedes der nacheinander von der Verdichtungseinrichtung empfangenen Bezugswerte auf ein Datenspeichermedium;
Speichern jedes empfangenen Datenbytes;
Berechnen, als Reaktion auf das Speichern des letzten Bytes eines Datensegments durch die Speichereinrichtung, der Bytelänge der auf das Datenspeichermedium geschriebenen Bezugswerte, die das Datensegment darstellen, und
Schreiben, als Reaktion auf die Bytelänge, die die Bytelänge des Seggments überschreitet, des Datensegments anstelle der auf das Datenspeichermedium geschriebenen Bezugswerte.
DE69023329T 1989-02-09 1990-02-08 Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem. Expired - Fee Related DE69023329T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/308,767 US4929946A (en) 1989-02-09 1989-02-09 Adaptive data compression apparatus including run length encoding for a tape drive system
PCT/US1990/000728 WO1990009705A1 (en) 1989-02-09 1990-02-08 Adaptive data compression apparatus for a tape drive system

Publications (2)

Publication Number Publication Date
DE69023329D1 DE69023329D1 (de) 1995-12-07
DE69023329T2 true DE69023329T2 (de) 1996-05-15

Family

ID=23195314

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69023329T Expired - Fee Related DE69023329T2 (de) 1989-02-09 1990-02-08 Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem.

Country Status (5)

Country Link
US (1) US4929946A (de)
EP (1) EP0457840B1 (de)
JP (1) JP2915568B2 (de)
DE (1) DE69023329T2 (de)
WO (1) WO1990009705A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19859069A1 (de) * 1998-12-22 2000-07-06 Thomson Brandt Gmbh Wiedergabegerät für doppelseitige Aufzeichnungsträger

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247646A (en) * 1986-05-15 1993-09-21 Aquidneck Systems International, Inc. Compressed data optical disk storage system
JP2624299B2 (ja) * 1988-06-09 1997-06-25 株式会社日立製作所 加速演算回路
FR2646575A1 (fr) * 1989-04-26 1990-11-02 Labo Electronique Physique Procede et structure pour la compression de donnees
EP0394976B1 (de) * 1989-04-27 1995-11-29 Matsushita Electric Industrial Co., Ltd. Daten-Kompandierungsverfahren und Daten-Kompressor/Dehner
US5097261A (en) * 1989-11-22 1992-03-17 International Business Machines Corporation Data compression for recording on a record medium
US5045852A (en) * 1990-03-30 1991-09-03 International Business Machines Corporation Dynamic model selection during data compression
US5410671A (en) * 1990-05-01 1995-04-25 Cyrix Corporation Data compression/decompression processor
US5247638A (en) * 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US6915014B1 (en) 1990-07-31 2005-07-05 Canon Kabushiki Kaisha Image processing apparatus and method
DE69130275T2 (de) * 1990-07-31 1999-04-08 Canon Kk Verfahren und Gerät zur Bildverarbeitung
US5142282A (en) * 1990-11-07 1992-08-25 Hewlett-Packard Company Data compression dictionary access minimization
US5313604A (en) * 1990-11-13 1994-05-17 Hewlett-Packard Company Method for locating compressed data in a computed memory back up device including steps of refining estimater location
US5414530A (en) * 1991-03-12 1995-05-09 Canon Kabushiki Kaisha Image recording method and apparatus
AU2177592A (en) * 1991-05-29 1993-01-08 Maxoptix Corporation Optical disk drive assembly having selectable compression and emulation
US5159336A (en) * 1991-08-13 1992-10-27 Iomega Corporation Tape controller with data compression and error correction sharing a common buffer
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5406278A (en) * 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
JP3166291B2 (ja) * 1992-04-03 2001-05-14 ソニー株式会社 量子化コントロール回路
US5353024A (en) * 1992-05-01 1994-10-04 Intersecting Concepts, Inc. Method for data compression having an improved encoding algorithm which utilizes a token stacking technique
ES2278378T3 (es) * 1992-06-09 2007-08-01 Canon Kabushiki Kaisha Aparato de codificacion.
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5452405A (en) * 1993-01-25 1995-09-19 Hewlett-Packard Company Method and apparatus for delta row decompression
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5504929A (en) * 1993-11-17 1996-04-02 Adobe Systems Incorporated Method and apparatus for encoding byte sequence for self-clocked high speed data transfer from a parallel port
US5546080A (en) * 1994-01-03 1996-08-13 International Business Machines Corporation Order-preserving, fast-decoding arithmetic coding arithmetic coding and compression method and apparatus
US6349375B1 (en) * 1994-02-02 2002-02-19 Compaq Computer Corporation Compression of data in read only storage and embedded systems
US5627533A (en) * 1994-08-05 1997-05-06 Hayes Microcomputer Products, Inc. Adjusting encoding table size and memory allocation for data compression in response to input data
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
JP3302229B2 (ja) 1994-09-20 2002-07-15 株式会社リコー 符号化方法、符号化/復号方法及び復号方法
US6873734B1 (en) * 1994-09-21 2005-03-29 Ricoh Company Ltd Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US5881176A (en) 1994-09-21 1999-03-09 Ricoh Corporation Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US6229927B1 (en) 1994-09-21 2001-05-08 Ricoh Company, Ltd. Reversible embedded wavelet system implementation
US6549666B1 (en) 1994-09-21 2003-04-15 Ricoh Company, Ltd Reversible embedded wavelet system implementation
US5561824A (en) * 1994-10-04 1996-10-01 International Business Machines Corporation Storage management of data for ensuring communication of minimal length data
US5630092A (en) * 1994-10-20 1997-05-13 International Business Machines System and method for transferring compressed and uncompressed data between storage systems
US5617432A (en) * 1994-11-09 1997-04-01 International Business Machines Corporation Common error protection code for data stored as a composite of different data formats
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
NL9402103A (nl) * 1994-12-12 1996-07-01 Nederland Ptt Werkwijze en inrichtingen voor het in bewerkte vorm over een communicatiekanaal overdragen van data.
WO1996025801A1 (en) * 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating such subblocks
US5621759A (en) * 1995-05-01 1997-04-15 Motorola, Inc. Method for compressing message checksum and message yearcode information in a messaging system
US5704060A (en) * 1995-05-22 1997-12-30 Del Monte; Michael G. Text storage and retrieval system and method
NL1000669C2 (nl) * 1995-06-26 1996-12-31 Nederland Ptt Werkwijze en inrichtingen voor het overdragen van data met controle op transmissiefouten.
JP3475985B2 (ja) * 1995-11-10 2003-12-10 ソニー株式会社 情報符号化装置および方法、情報復号化装置および方法
JPH10154044A (ja) * 1996-11-22 1998-06-09 Advantest Corp 転送データ圧縮展開方式及び転送データ圧縮展開装置
US5955976A (en) * 1997-12-02 1999-09-21 Hughes Electronics Corporation Data compression for use with a communications channel
JPH11167623A (ja) * 1997-12-03 1999-06-22 Canon Inc 画像処理装置及び画像処理方法
WO1999062189A2 (en) * 1998-05-27 1999-12-02 Microsoft Corporation System and method for masking quantization noise of audio signals
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6195024B1 (en) 1998-12-11 2001-02-27 Realtime Data, Llc Content independent data compression method and system
US6166665A (en) * 1999-03-08 2000-12-26 Unisys Corporation Data compression method and apparatus with embedded run-length encoding
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6604158B1 (en) * 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
FI106758B (fi) 1999-04-16 2001-03-30 Nokia Networks Oy Segmentointimekanismi lohkoenkooderia varten
US6137428A (en) * 1999-04-27 2000-10-24 Unisys Corporation Data compression method and apparatus with embedded run-length encoding using mathematical run processing
US6169499B1 (en) 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
US6320523B1 (en) * 1999-07-30 2001-11-20 Unisys Corporation Method and apparatus for reducing the time required for compressing data
US6188333B1 (en) 1999-08-12 2001-02-13 Unisys Corporation LZW data compression apparatus and method using look-ahead mathematical run processing
US6795583B1 (en) * 1999-11-24 2004-09-21 General Electric Company Image data compression employing embedded compression and decompression codes
US20030191876A1 (en) 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6704730B2 (en) * 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
JP3297668B2 (ja) * 2000-04-26 2002-07-02 松下電器産業株式会社 符号/復号化装置及び符号/復号化方法
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
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6898323B2 (en) * 2001-02-15 2005-05-24 Ricoh Company, Ltd. Memory usage scheme for performing wavelet processing
US6950558B2 (en) * 2001-03-30 2005-09-27 Ricoh Co., Ltd. Method and apparatus for block sequential processing
US7062101B2 (en) 2001-03-30 2006-06-13 Ricoh Co., Ltd. Method and apparatus for storing bitplanes of coefficients in a reduced size memory
US6895120B2 (en) * 2001-03-30 2005-05-17 Ricoh Co., Ltd. 5,3 wavelet filter having three high pair and low pair filter elements with two pairs of cascaded delays
US7006697B1 (en) 2001-03-30 2006-02-28 Ricoh Co., Ltd. Parallel block MQ arithmetic image compression of wavelet transform coefficients
US6859563B2 (en) 2001-03-30 2005-02-22 Ricoh Co., Ltd. Method and apparatus for decoding information using late contexts
US7581027B2 (en) * 2001-06-27 2009-08-25 Ricoh Co., Ltd. JPEG 2000 for efficent imaging in a client/server environment
US7280252B1 (en) 2001-12-19 2007-10-09 Ricoh Co., Ltd. Error diffusion of multiresolutional representations
US7095907B1 (en) 2002-01-10 2006-08-22 Ricoh Co., Ltd. Content and display device dependent creation of smaller representation of images
US7120305B2 (en) * 2002-04-16 2006-10-10 Ricoh, Co., Ltd. Adaptive nonlinear image enlargement using wavelet transform coefficients
US20030229707A1 (en) * 2002-06-06 2003-12-11 Adc Telecommunications Israel Ltd. Method and apparatus for rapid file transfer to embedded system
EP1531395A1 (de) * 2003-11-17 2005-05-18 Infineon Technologies AG Verfahren zum Ermitteln von Informationen über Prozesse bei der Ausführung eines Programms in einer programmgesteuerten Einheit
US6816093B1 (en) * 2003-12-03 2004-11-09 International Business Machines Corporation Apparatus method and system for increased digital media recording throughput
US7231587B2 (en) * 2004-03-29 2007-06-12 Lsi Corporation Embedded picture PSNR/CRC data in compressed video bitstream
US20060195636A1 (en) * 2005-02-28 2006-08-31 Xidong Wu Large volume data management
US7787526B2 (en) * 2005-07-12 2010-08-31 Mcgee James Ridenour Circuits and methods for a multi-differential embedded-clock channel
US7624328B2 (en) * 2005-08-04 2009-11-24 Quantum Corporation Data error detection during media write
US7991758B2 (en) * 2005-09-07 2011-08-02 International Business Machines Corporation System and method for performing a search operation within a sequential access data storage subsystem
US7460032B2 (en) * 2005-10-27 2008-12-02 Evault, Inc. Methods and apparatus for performing adaptive compression
US7577710B2 (en) * 2006-02-07 2009-08-18 Stauffer John E System and method for prioritizing electronic mail and controlling spam
EP2021926A4 (de) 2006-05-05 2009-07-15 Hybir Inc Gruppenbasiertes komplettes und inkrementales computerdateisicherungssystem, verfahren und gerät
US8144037B2 (en) * 2007-07-12 2012-03-27 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
US7990289B2 (en) * 2007-07-12 2011-08-02 Intellectual Ventures Fund 44 Llc Combinatorial coding/decoding for electrical computers and digital data processing systems
US8055085B2 (en) * 2007-07-12 2011-11-08 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
TWI391895B (zh) * 2007-07-16 2013-04-01 Novatek Microelectronics Corp 顯示驅動裝置與其方法
IL205528A (en) * 2009-05-04 2014-02-27 Storwize Ltd A method and system for compressing logical information objects for storage
US8370544B2 (en) 2009-07-23 2013-02-05 Stec, Inc. Data storage system with compression/decompression
TW201218773A (en) * 2010-10-29 2012-05-01 Altek Corp Image compression method
CN102185612A (zh) * 2011-01-28 2011-09-14 张环蚀 游程编解码方法及装置
US8972360B2 (en) 2011-05-23 2015-03-03 International Business Machines Corporation Position invariant compression of files within a multi-level compression scheme
US20130055053A1 (en) * 2011-08-23 2013-02-28 International Business Machines Corporation End-to-end data protection supporting multiple crc algorithms
EP2720376A1 (de) * 2012-10-09 2014-04-16 Alcatel Lucent Sichere und verlustfreie Datenkomprimierung
CN106664101B (zh) 2014-08-12 2020-04-03 美光科技公司 自适应速率压缩散列处理装置
JP6523195B2 (ja) * 2016-03-17 2019-05-29 株式会社東芝 データ圧縮システム及び方法
CN109716660B (zh) * 2017-01-24 2021-08-13 华为技术有限公司 数据压缩装置和方法
CN109309501B (zh) * 2018-09-12 2022-04-29 成都宝通天宇电子科技有限公司 高精度多环数据压缩方法
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
CN115280271A (zh) * 2020-03-13 2022-11-01 富士胶片株式会社 信息处理装置、信息处理方法及信息处理程序
CN115086684B (zh) * 2022-08-22 2022-11-18 中科金勃信(山东)科技有限公司 一种基于crc的图像压缩方法、系统及介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4021782A (en) * 1974-01-07 1977-05-03 Hoerning John S Data compaction system and apparatus
US4494150A (en) * 1982-07-13 1985-01-15 International Business Machines Corporation Word autocorrelation redundancy match facsimile compression for text processing systems
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JPH0828053B2 (ja) * 1983-08-08 1996-03-21 株式会社日立製作所 データ記録方法
US4568983A (en) * 1983-12-07 1986-02-04 The Mead Corporation Image data compression/decompression
US4626824A (en) * 1985-06-11 1986-12-02 International Business Machines Corporation Apparatus and algorithm for compressing and decompressing data
US4626829A (en) * 1985-08-19 1986-12-02 Intelligent Storage Inc. Data compression using run length encoding and statistical encoding
JPH0815263B2 (ja) * 1986-12-12 1996-02-14 株式会社日立製作所 データ圧縮復元方法
US4729020A (en) * 1987-06-01 1988-03-01 Delta Information Systems System for formatting digital signals to be transmitted
US4876541A (en) 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
US4847619A (en) * 1987-10-19 1989-07-11 Hewlett-Packard Company Performance-based reset of data compression dictionary
US4899147A (en) * 1988-06-03 1990-02-06 Unisys Corporation Data compression/decompression apparatus with throttle, start-up and backward read controls

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19859069A1 (de) * 1998-12-22 2000-07-06 Thomson Brandt Gmbh Wiedergabegerät für doppelseitige Aufzeichnungsträger

Also Published As

Publication number Publication date
DE69023329D1 (de) 1995-12-07
EP0457840B1 (de) 1995-11-02
JP2915568B2 (ja) 1999-07-05
JPH04503421A (ja) 1992-06-18
US4929946A (en) 1990-05-29
WO1990009705A1 (en) 1990-08-23
EP0457840A4 (en) 1992-10-21
EP0457840A1 (de) 1991-11-27

Similar Documents

Publication Publication Date Title
DE69023329T2 (de) Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem.
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE69024629T2 (de) Vorrichtung zur kompression von datenlängen und datenfolgen
DE68925798T2 (de) Datenverdichtung
DE68924138T2 (de) Daten-kompressions/dekompressionsanordnung.
DE69118250T2 (de) Zugriff für komprimierte daten
DE3850192T2 (de) Verfahren und Vorrichtung zur Fehlerkorrektur bei gespeicherten Daten.
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE68907812T2 (de) Verfahren und Vorrichtung zur Kodierung, Dekodierung und Übertragung von Daten in komprimierter Form.
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE3850035T2 (de) Datenkomprimierungssystem mit Expandierungsschutz.
EP0230437B1 (de) Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchführung des verfahrens
DE19622045C2 (de) Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist
DE69027606T2 (de) Vorrichtung zur datenkompression
DE69535569T2 (de) Verfahren zur Synchronisationsrückgewinnung und Vorrichtung zur variablen Längendekodierung
DE69117592T2 (de) Datenspeicherung auf magnetband
DE69633730T2 (de) Verfahren zur kompression/dekompression von bilddateien
DE69026320T2 (de) Halbtonbilddatenkomprimierungsverfahren und -vorrichtung
DE69834695T2 (de) Verfahren und Vorrichtung zur Datenkompression
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
DE3485824T2 (de) Verfahren zur datenkompression.
DE102007007546A1 (de) Fehlerkorrekturcode-Striping
DE60011795T2 (de) Vorrichtung und verfahren zur verringerung der zur datendekompression benötigten zeit
DE3742142C2 (de)
EP1286471B1 (de) Verfahren zur Kompression von Daten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee