DE69118250T2 - Zugriff für komprimierte daten - Google Patents
Zugriff für komprimierte datenInfo
- Publication number
- DE69118250T2 DE69118250T2 DE69118250T DE69118250T DE69118250T2 DE 69118250 T2 DE69118250 T2 DE 69118250T2 DE 69118250 T DE69118250 T DE 69118250T DE 69118250 T DE69118250 T DE 69118250T DE 69118250 T2 DE69118250 T2 DE 69118250T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- user data
- dictionary
- group
- record
- 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
- 238000007906 compression Methods 0.000 claims description 97
- 230000006835 compression Effects 0.000 claims description 94
- 238000000034 method Methods 0.000 claims description 61
- 230000000694 effects Effects 0.000 claims description 10
- 238000011010 flushing procedure Methods 0.000 claims description 4
- 238000009795 derivation Methods 0.000 claims description 2
- 230000006837 decompression Effects 0.000 description 53
- 238000000926 separation method Methods 0.000 description 32
- 238000013144 data compression Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 26
- 238000012546 transfer Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 19
- 230000008901 benefit Effects 0.000 description 14
- 230000008520 organization Effects 0.000 description 11
- 238000013459 approach Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 9
- 230000015654 memory Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 5
- 238000012856 packing Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000005204 segregation Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100208571 Xenopus laevis ube2c gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00007—Time or data compression or expansion
-
- 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/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf ein Verfahren des Komprimierens von Benutzerdaten zur Speicherung auf einem Band auf eine Art und Weise, die den Zugriff auf die komprimierten Daten verbessert.
- Es ist bekannt, ein Bandlaufwerk mit einer Datenkomprimierungsfähigkeit (ein DC-Laufwerk; DC = data compression) bereitzustellen, derart, daß, wenn Daten von einem Hauptcomputer ankommen, dieselben komprimiert werden, bevor sie auf das Band geschrieben werden, wodurch die Speicherkapazität des Bands erhöht wird. DC-Laufwerke sind ferner in der Lage, komprimierte Daten von einem Band zu lesen und die Daten zu dekomprimieren, bevor dieselben zu einem Hauptcomputer gesendet werden. Es ist ferner möglich, daß ein Hauptcomputer eine Software-Komprimierung und/oder -Dekomprimierung der Benutzerdaten durchführt.
- Es gibt mehr als einen Datenkomprimierungstyp. Beispielsweise komprimiert das Entfernen von Trennungsmarken, beispielsweise Beschriftungsaufzeichnungen, Dateien, usw., aus dem Datenstrom und das Speichern der Informationen, die die Positionen dieser Marken betreffen, in einem Index die Benutzerdaten wirksam. Ein weiterer, völlig unterschiedlicher Lösungsansatz besteht darin, Benutzerdaten durch das Entfernen einer Redundanz in den Daten zu komprimieren, indem beispielsweise Benutzerdatenworte durch Codeworte oder Symbole ersetzt werden, aus denen die ursprünglichen Daten wiedergewonnen werden können. Auf den letztgenannten Typ wird in dieser Beschreibung Bezug genommen, wenn das Wort "Datenkomprimierung" oder die Abkürzung DC verwendet ist.
- Mehrere unterschiedliche Algorithmen sind zum Komprimieren von Daten bekannt. Ein Lösungsansatz besteht darin, die Benutzerdaten unter Verwendung eines Wörterbuchs, das dynamisch erzeugt wird, wenn die Daten komprimiert werden, in Codeworte umzuwandeln. Das Wörterbuch wird während der Dekomprimierung wiederum dynamisch zurückgewonnen. Ein Algorithmus, der diesen Lösungsansatz aufnimmt, ist der LEMPEL- ZIV-WELCH-Algorithmus oder der LZW-Algorithmus.
- Während einer Datenkomprimierung fügt ein DC-Laufwerk, das gemäß dem LZW-Algorithmus arbeitet, Codeworte in den Datenstrom ein, die anzeigen, wann ein neues Wörterbuch begonnen wird (das RÜCKSETZ-Codewort) und wann Daten geräumt werden, d.h. die kleine Datenmenge, die wartend auf eine Komprimierung in einem Puffer gehalten ist, durchgeleitet wird, bevor weitere ankommende Daten zu dem Puffer gesendet werden (das RÄUM-Codewort).
- Um eine Dekomprimierung eines Teils der komprimierten Daten auf einem Band zu erreichen, ist es unter Verwendung des LZW-Algorithmus notwendig, die Dekomprimierung ausgehend von einem RÜCKSETZ-Codewort zu beginnen, um in der Lage zu sein, das relevante Wörterbuch zurückzugewinnen. Normalerweise wird eine RÄUM-Operation vor dem Beginn eines neuen Wörterbuchs durchgeführt, derart, daß das neue Wörterbuch an einem geeigneten Punkt in den Daten, beispielsweise am Beginn der Aufzeichnung, beginnen kann.
- Ein weiterer Lösungsansatz für eine Datenkomprimierung besteht darin, auf eine gewählte Menge des jüngsten unkomprimierten Datenstroms zu verweisen (bezeichnet als 'Geschichtspuffer' oder 'Schiebefenster' oder 'Schiebewörterbuch') und die Posten in dem ankommenden Datenstrom, die in dem Geschichtspuffer erscheinen, durch Codeworte/Token zu ersetzen, die anzeigen, wo sich dieselben in dem Geschichtspuffer befinden. Dieser Lösungsansatz ist als der erste Lempel-Ziv-Algorithmus oder LZ1 bekannt. Während einer Dekomprimierung wird ebenfalls auf einen Geschichtspuffer verwiesen und wenn Codeworte/Token angetroffen werden, werden die relevanten Zeichenfolgen aus dem Geschichtspuffer ersetzt, um den ursprünglichen Datenstrom wieder aufzubauen.
- Bei diesem Lösungsansatz besitzt ein RÜCKSETZ-Befehl die Wirkung des Löschens des Geschichtspuffers, während ein RÄUM-Befehl die Wirkung eines Löschens des Vorausschaupuffers besitzt.
- Eine Räum-Operation kann daher im allgemeinen als das Durchleiten einer relativ kleinen Menge von unbearbeiteten Daten oder das Abschließen einer Komprimierungsoperation auf Daten, die eine Komprimierung erwarten, vor dem Wiederaufnehmen einer Datenkomprimierung an einem geeigneten Punkt in dem Datenstrom betrachtet werden. Dies ist anwendbar, ungeachtet dessen, ob eine Komprimierung Software- oder Hardware-mäßig durchgeführt wird.
- Der Artikel Data Compression in a Half-Inch Reel-to-Reel Tape Drive von M.J. Bianchi, J.J. Kato und D.J. Van Maren, Hewlett-Packard Journal, Bd. 40, Nr. 3 (Juni 1989), Seiten 26 - 31, beschreibt auch ein Verfahren zur Datenkomprimierung, bei der eine RÜCKSETZ-Operation verwendet wird, um den Aufbau eines neuen Wörterbuchs zu beginnen. Dieses Dokument ist in den Oberbegriff von Anspruch 1 aufgenommen.
- Jedoch weisen die Techniken, die bisher beschrieben wurden, den Nachteil auf, daß die ursprüngliche Struktur der Benutzerdaten (beispielsweise die Segmentierung in Datensätze) die zwischen RÜCKSETZ-Operationen komprimiert werden, nicht inhärent in der komprimierten Ausgabe ist, so daß eine bestimmte andere Einrichtung zum Aufzeichnen dieser Informationen erforderlich ist.
- Gemäß der vorliegenden Erfindung wird ein Verfahren zum Komprimieren von Benutzerdaten geschaffen, das folgende Schritte aufweist: Empfangen eines Stroms von Benutzerdaten, die in eine Mehrzahl von Datensätzen organisiert sind; Komprimieren der Benutzerdaten gemäß einem Komprimierungsalgorithmus, der das Umwandeln ausgewählter Benutzerdaten in Codeworte unter Verwendung einer ersten Speichereinrichtung, die ein Wörterbuch enthält, das aus den empfangenen Benutzerdaten kompiliert ist, und einer zweiten Speichereinrichtung, die Benutzerdaten empfängt und speichert, bis die Benutzerdaten, die in der zweiten Speichereinrichtung akkumuliert sind, nicht länger mit irgendeinem Eintrag des Wörterbuchs übereinstimmen, einschließt, wobei die Benutzerdaten, die derart komprimiert sind, komprimierte Daten definieren, und wobei der Algorithmus einen Rücksetzschritt einschließt, der die erste Speichereinrichtung löscht und eine Herleitung eines neuen Wörterbuchs aus den verbleibenden Benutzerdaten beginnt; gekennzeichnet durch eine Räumoperation, um ein oder mehrere Codeworte, die mit akkumulierten Benutzerdaten, die in der zweiten Speichereinrichtung gespeichert sind, übereinstimmen, auszugeben und die zweite Speichereinrichtung zu löschen, ungeachtet dessen, ob die akkumulierten Benutzerdaten mit irgendeinem Eintrag des Wörterbuchs übereinstimmen; und Ausführen einer Mehrzahl der Räumoperationen zwischen dem Beginnen aufeinanderfolgender Wörterbücher.
- In dieser Beschreibung ist der Ausdruck 'Codewort' umfassend in Verbindung mit dem LZW-Algorithmus verwendet. Im allgemeinen ist der Ausdruck dazu bestimmt, ein beliebiges Symbol oder ein Token oder eine andere Darstellung, die verwendet ist, um Teile der Benutzerdaten während einer Datenkomprimierung zu ersetzen, zu beinhalten. Der Ausdruck 'Wörterbuch' ist dazu bestimmt, eine Ansammlung von Byte-Zeichenfolgen und entsprechenden Codeworten zur Verwendung beim Umwandeln komprimierter Daten in unkompromierte Daten zu beinhalten. In beiden vorher genannten Datenkomprimierungsalgorithmen wird das Wörterbuch während einer Datenkomprimierung erzeugt und ist in den komprimierten Daten selbst enthalten.
- Ein Vorteil der vorliegenden Erfindung besteht darin, daß ein Datensegment, das kleiner ist als die Menge, die verwendet ist, um ein Wörterbuch aufzubauen, selektiv in seiner komprimierten Form zurückgewonnen werden kann. In anderen Worten heißt das, daß die RÄUM-Codeworte in einem Wörterbuch eine "Löschunterbrechung" zwischen Datensegmenten, die zur Kompilierung verwendet wurden, oder die dieses Wörterbuch verwendeten, liefern. Beispielsweise kann ein RÄUM-Codewort am Ende jedes Datensatzes in den Datenstrom eingefügt werden.
- Das Verfahren kann das Ausgeben von Informationen aufweisen, die Positionen anzeigen, an denen Räumoperationen auftreten, wodurch es möglich ist, daß diese Positionen in den komprimierten Daten identifiziert sind, beispielsweise durch das Speichern der komprimierten Byte-Zahl (CBC; CBC = compressed byte count) für jeden Datensatz oder anderes Datensegment, das zwischen einem Paar von RÄUM-Operationen definiert ist.
- Das Verfahren kann das Ausgeben von Informationen aufweisen, die Positionen des Beginns neuer Wörterbücher anzeigen, wodurch es möglich ist, daß diese Positionen in den komprimierten Daten identifiziert sind, beispielsweise durch das Speichern von Informationen über den speziellen Komprimierungsalgorithmus, der am Beginn jedes neuen Wörterbuchs verwendet ist.
- Bei einem Ausführungsbeispiel, das beschrieben werden soll, weist das Verfahren das Ausgeben der komprimierten Daten in Gruppen auf, unabhängig von der Datensatzstruktur der Benutzerdaten; und das Beginnen eines neuen Wörterbuchs am oder in der Nähe des Beginns jeder Gruppe. Vorzugsweise weist das Verfahren das Beginnen eines neuen Wörterbuchs am Beginn des ersten neuen Datensatzes in jeder Gruppe auf.
- Dieses Merkmal ist vorteilhaft dahingehend, daß es das Reduzieren der Menge des Pufferraums unterstützt, die in der Vorrichtungssteuerung erforderlich ist, indem die Verknüpfung zwischen Gruppen von Daten reduziert wird, d.h., es reduziert die Wahrscheinlichkeit, daß es notwendig ist, mehr als eine Gruppe in dem Puffer zu speichern. Außerdem ist es vorteilhaft, nicht aus einer speziellen Gruppe herausschauen zu müssen, um ein Datensegment in dieser Gruppe zu dekomprimieren.
- Die vorliegende Erfindung schafft ferner eine Vorrichtung zum Komprimieren von Benutzerdaten mit folgenden Merkmalen: einer Schnittstelleneinrichtung zum Empfangen eines Stroms von Benutzerdaten, die in eine Mehrzahl von Datensätzen organisiert sind; einer Komprimierungseinrichtung zum Komprimieren der Benutzerdaten gemäß einem Komprimierungsalgorithmus, der das Umwandeln ausgewählter Benutzerdaten in Codeworte einschließt, die eine erste Speichereinrichtung zum Enthalten eines Wörterbuchs, das aus den empfangenen Benutzerdaten kompiliert ist, und eine zweite Speichereinrichtung zum Empfangen und Speichern von Benutzerdaten, bis die Benutzerdaten, die in der zweiten Speichereinrichtung akkumuliert sind, nicht länger mit einem beliebigen Eintrag des Wörterbuchs übereinstimmen, und eine Einrichtung zum Löschen der ersten Speichereinrichtung und zum Beginnen einer Herleitung eines neuen Wörterbuchs aus den verbleibenden Benutzerdaten aufweist, dadurch gekennzeichnet, daß die Komprimierungseinrichtung eine Räumeinrichtung zum Bewirken einer Räumoperation aufweist, um ein oder mehrere Codeworte, die mit den akkumulierten Benutzerdaten, die in der zweiten Speichereinrichtung gespeichert sind, übereinstimmen, auszugeben, und um die zweite Speichereinrichtung zu löschen, ungeachtet dessen, ob die akkumulierten Benutzerdaten mit einem beliebigen Eintrag des Wörterbuchs übereinstimmen; wobei die Räumeinrichtung angeordnet ist, um eine Mehrzahl der Räumoperationen zwischen dem Beginn aufeinanderfolgender Wörterbücher zu bewirken.
- Mittels Beispielen werden nachfolgend spezielle Ausführungsbeispiele der vorliegenden Erfindung bezugnehmend auf die beiliegenden Zeichnungen beschrieben. Es zeigen:
- Fig. A und B Diagramme, die sich auf den LZW-Datenkomprimierungsalgorithmus beziehen;
- Fig. C eine Diagrammdarstellung eines Puffers, der gemäß dem LZ1-Algorithmus verwendet ist;
- Fig. D eine Tabelle, die zeigt, wie RINTINTIN entsprechend dem LZ1-Algorithmus komprimiert wird.
- Fig. 1 ein mehrteiliges Diagramm, das ein Schema zum Speichern von Computerdaten darstellt, wobei:
- (a) ein Diagramm ist, das eine Sequenz von Datenaufzeichnungen und logischen Trennungsmarken darstellt, die von einem Benutzer (Hauptcomputer) zu einer Datenspeichervorrichtung gesendet werden;
- (b) und (c) Diagramme sind, die zwei unterschiedliche Anordnungen zum Speichern der Sequenz von Fig. 1 (a) auf einem Band zeigen;
- Fig. 2 ein Diagramm eines Gruppenindex;
- Fig. 3 und 3A Diagramme von allgemeinen Blockzugriffstabellen;
- Fig. 4 und 4A Diagramme spezifischer Blockzugriffstabellen;
- Fig. 5 bis 7 Diagramme weiterer Schemata zum Speichern von Computerdaten;
- Fig. 8 ein Diagramm, das mögliche gültige Einträge für die Blockzugriffstabelle einer Gruppe zeigt;
- Fig. 9 und 10 weitere Diagramme von Schemata zum Speichern von Computerdaten;
- Fig. 11 ein Diagramm, das die physikalischen Hauptkomponenten eines Bandgeräts zeigt, welches eine Schraubenlinienabtastung verwendet, und welches einen Teil der Datenspeichervorrichtung bildet, die die Erfindung verkörpert;
- Fig. 12 eine Diagrammdarstellung zweier Datenspuren, die unter Verwendung einer Schraubenlinienabtastung auf einem Band aufgezeichnet sind;
- Fig. 13 eine Diagrammdarstellung des Formats eines Hauptdatenbereichs einer Datenspur, die gemäß dem vorliegenden Datenspeicherverfahren aufgezeichnet ist;
- Fig. 14 eine Diagrammdarstellung des Formats eines Unterdatenbereichs einer Datenspur, die gemäß dem vorliegenden Datenspeicherverfahren aufgezeichnet ist;
- Fig. 15 ein Diagramm, das für das vorliegende Verfahren sowohl die Anordnung von Datenrahmen in Gruppen in einem Datenbereich eines Bands als auch die Einzelheiten eines Indexes, der in jeder Gruppe von Rahmen aufgezeichnet ist, zeigt;
- Fig. 16 ein Blockdiagramm der Hauptkomponenten der Datenspeichervorrichtung, die die Erfindung verkörpert;
- Fig. 17 und 18 Blockdiagramme, die sich auf den Datenkomprimierungsprozessor beziehen;
- Fig. 19 ein detaillierteres Funktionsblockdiagramm eines Gruppenprozessors der Datenspeichervorrichtung;
- Fig. 20A und 20B sind Flußdiagramme von Algorithmen, die durch die Laufwerkvorrichtung beim Suchen nach einem speziellen Datensatz auf einem Band implementiert sind.
- Weitere Informationen, die die Datenkomprimierung betreffen, einschließlich von Einzelheiten eines spezifischen DC-Algorithmus, werden zuerst angegeben.
- Das Ziel des Datenkomprimierungsverfahrens ist es, eine Redundanz aus Daten zu entfernen. Ein Maß für den Komprimierungswirkungsgrad wird "Komprimierungsverhältnis" genannt und ist wie folgt definiert: Länge der unkomprimierten Eingabe/Länge der komprimierten Ausgabe
- Dies ist ein Maß für den Erfolg eines Datenkomprimierungsverfahrens. Je größer das Komprimierungsverhältnis ist, desto größer ist der Komprimierungswirkungsgrad.
- Eine Art des Durchführens einer Datenkomprimierung besteht darin, Muster von Eingabezeichen zu erkennen und zu codieren, d.h. ein Substitutionsverfahren.
- Gemäß dem LZW-Algorithmus werden, wenn eindeutige Zeichenfolgen von Eingabezeichen gefunden werden, dieselben in ein Wörterbuch eingegeben, wobei ihnen numerische Werte zugewiesen werden. Das Wörterbuch wird dynamisch gebildet, während die Daten komprimiert werden, und wird während einer Dekomprimierung aus den Daten rekonstruiert. Sobald ein Wörterbucheintrag existiert, können nachfolgende Auftritte dieses Eintrags in dem Datenstrom durch den numerischen Wert oder das Codewort ersetzt werden. Es sollte bemerkt werden, daß dieser Algorithmus nicht auf das Komprimieren von ASCII- Textdaten begrenzt ist. Seine Grundsätze gelten genausogut für binäre Daten, Datenbanken, Bilderzeugungsdaten, usw..
- Jeder Wörtebucheintrag besteht aus zwei Posten: (1) einer eindeutigen Zeichenfolgen von Datenbytes, die der Algorithmus in den Daten gefunden hat, und (2) einem Codewort, das diese Kombination von Bytes darstellt. Das Wörterbuch kann bis zu 4.096 Einträge enthalten. Die ersten acht Einträge sind reservierte Codeworte, die verwendet werden, um spezifische Bedingungen zu markieren und zu kontrollieren. Die nächsten 256 Einträge enthalten die Bytewerte 0 bis 255. Einige dieser 256 Einträge sind daher Codeworte für die ASCII-Textzeichen. Die verbleibenden Positionen sind Einträge einer verknüpften Liste, die auf weitere Wörterbuchpositionen zeigen und schließlich durch das Zeigen auf einen der Bytewerte 0 bis 255 enden. Unter Verwendung dieser Datenstruktur einer verknüpften Liste, können die möglichen Byte-Kombinationen eine beliebige Länge von 2 Byte bis 128 Byte aufweisen, ohne ein übermäßig breites Speicherarray, um dieselben zu speichern, zu erfordern.
- Bei einer Hardware-Implementierung des Schemas, die später ausführlicher beschrieben wird, wird das Wörterbuch in einer Bank eines Direktzugriffsspeichers (RAM; RAM = random-access memory) aufgebaut und gespeichert, die 23 Bit breit ist. Jede Speicheradresse kann einen Bytewert in den unteren 8 Bits enthalten, einen Codewort oder einen Zeiger, die einen Eintrag darstellen, in den nächsten 12 Bits, und drei Zustands-Flags in den oberen 3 Bits. Die Anzahl der Bits in dem Ausgabe-Bytestrom, der verwendet ist, um ein Codewort darzustellen, liegt in einem Bereich von 9 Bits bis 12 Bits und entspricht den Wörterbucheinträgen, die in einem Bereich von 0 bis 4095 liegen. Während der Aufbauphase des Wörterbuchs werden bis 512 Einträge, die in das Wörterbuch gemacht sind, 9 Bits für jedes Codewort verwendet, nachdem 512ten Eintrag sind 10 Bits für die Codeworte erforderlich, nachdem 1.024sten Eintrag sind 11 Bits für die Codeworte erforderlich, und für die letzten 2.048 Einträge sind 12 Bits für die Codeworte erforderlich. Sobald das Wörterbuch voll ist, werden keine weiteren Einträge gemacht und alle nachfolgenden Codeworte weisen eine Länge von 12 Bits auf. Die Speicheradresse für einen gegebenen Wörterbucheintrag ist durch eine komplexe Operation, die auf dem Eintragswert durchgeführt wird, bestimmt. Da das Wörterbuch 4.096 Einträge enthalten kann, scheint es, daß 4 Kbyte RAM ausreichen, um ein vollständiges Wörterbuch zu unterstützen. Dies ist während einer Dekomprimierung tatsächlich der Fall. Während einer Komprimierung werden jedoch aufgrund von Wörterbuch-"Kollisionen", die während der Aufbauphase des Wörterbuchs auftreten, mehr als 4 Kbyte RAM benötigt. Dies ist der Fall, wenn zwei verschiedene Zeichenfolgen-Zeichenkombinationen auf dieselbe Position in dem Wörterbuch-RAM abbilden, und ist eine Folge der begrenzten Betriebsmittel in dem Wörterbuch- RAM und des komplexen Verfahrens des Aufbaus des Wörterbuchs während einer Komprimierung. Wenn eine Wörterbuchkollision auftritt, werden die zwei kollidierenden Werte zu zwei neuen Positionen neu berechnet, wobei die ursprüngliche Position als eine Kollisionsstelle markiert wird.
- Eine wichtige Eigenschaft des Algorithmus ist das Koppeln zwischen einer Komprimierung und einer Dekomprimierung. Diese zwei Operationen sind sowohl bei Komprimierungs- und Dekomprimierungs-Verfahren als auch beim Packen und Entpacken von Codeworten in einen Bytestrom miteinander verbunden. Die Beschaffenheit des Komprimierungsalgorithmus erfordert es, daß das Komprimierungsverfahren und das Dekomprimierungsverfahren synchronisiert sind. Anders ausgedrückt heißt das, daß eine Dekomprimierung nicht an einem willkürlichen Punkt in den komprimierten Daten beginnen kann. Sie beginnt an dem Punkt, an dem bekannt ist, daß das Wörterbuch leer oder rückgesetzt ist. Diese Kopplung liefert einen der fundamentalen Vorteile des Algorithmus, nämlich den, daß das Wörterbuch in die Codeworte eingebettet ist, und nicht mit den komprimierten Daten übertragen werden muß. In gleicher Weise muß das Packungs- und Entpackungs-Verfahren synchronisiert sein. Es sei bemerkt, daß komprimierte Daten der Dekomprimierungshardware in der richtigen Reihenfolge präsentiert werden müssen.
- Fig. A ist eine vereinfachte grafische Darstellung des Komprimierungsalgorithmus, auf den oben verwiesen ist. Dieses Beispiel zeigt einen Eingabedatenstrom, der aus folgenden Zeichen zusammengesetzt ist: R I N T I N T I N. Um dem Fluß des Komprimierungsverfahrens zu folgen, sollte Fig. A von oben nach unten, links beginnend und nach rechts fortschreitend betrachtet werden. Es ist angenommen, daß das Wörterbuch rückgesetzt und initialisiert wurde, um die acht reservierten Codeworte und die ersten 256 Einträge von 0 bis 255 einschließlich der Codeworte für alle ASCII-Zeichen zu enthalten.
- Der Komprimierungsalgorithmus führt mit jedem Byte in dem Datenstrom das folgende Verfahren durch:
- 1. Erhalte das Eingabebyte.
- 2. Suche das Wörterbuch mit der gegenwärtigen Eingabesequenz und, wenn es eine Übereinstimmung gibt, erhalte ein weiteres Eingabebyte und addiere es zu der gegenwärtigen Sequenz, wobei die größte Sequenz, die übereinstimmte, in Erinnerung bleibt.
- 3. Wiederhole Schritt 2, bis keine Übereinstimmung gefunden wird.
- 4. Erzeuge einen neuen Wörterbucheintrag der gegenwärtigen "Nicht-Übereinstimmungs"-Sequenz.
- 5. Gib das Codewort für die größte Sequenz, die übereinstimmte, aus.
- Bei diesem Beispiel beginnt der Komprimierungsalgorithmus nach dem ersten R, das durch den Komprimierungsprozessor aufgenommen wurde. Das Eingabezeichen R stimmt mit dem Zeichen R überein, das während seiner Initialisierung in dem Wörterbuch plaziert wurde. Da es eine übereinstimmung gab, nimmt der DC-Prozessor ein weiteres Byte an, wobei dies das Zeichen I ist. Die Sequenz RI wird nun in dem Wörterbuch gesucht, wobei jedoch keine übereinstimmung gefunden wird. Folglich wird ein neuer Wörterbucheintrag RI erzeugt und das Codewort für die größte übereinstimmende Sequenz (d.h. das Codewort für das Zeichen R) wird ausgegeben. Der Prozessor sucht nun I in dem Wörterbuch und findet genau wie bei R eine Übereinstimmung. Ein weiteres Zeichen wird eingegeben (N) und für die Sequenz IN beginnt eine Suche. Da IN nicht mit irgendeinem Eintrag übereinstimmt, wird ein neuer erzeugt, und das Codewort für die größte übereinstimmende Sequenz (d.h. das Codewort für das Zeichen 1) wird ausgegeben. Dieses Verfahren setzt sich mit einer Suche nach dem Buchstaben N fort. Nachdem N gefunden ist, wird das nächste Zeichen eingegeben und das Wörterbuch nach NT abgesucht. Da dies nicht gefunden wird, wird ein Wörterbucheintrag für NT erzeugt und das Codewort für N wird ausgegeben. Die gleiche Sequenz findet für die Zeichen T und I statt. Ein Codewort für T wird ausgegeben und ein Wörterbucheintrag wird für TI erzeugt.
- Bis zu diesem Punkt fand keine Komprimierung statt, da nicht mehrere Zeichen übereinstimmten. Tatsächlich hat sich der Ausgabestrom leicht ausgedehnt, da vier 8-Bit-Zeichen durch vier 9-Bit-Codeworte ersetzt wurden. (Dies stellt eine 32- Bit- auf 36-Bit-Ausdehnung, oder ein Komprimierungsverhältnis von 1,125:1 dar). Nachdem das nächste Zeichen eingegeben wurde, beginnt jedoch eine Komprimierung der Daten. An diesem Punkt sucht der Prozessor nach der Sequenz IN. Da er eine Übereinstimmung findet, nimmt er ein weiteres Zeichen an und beginnt die Suche nach INT. Wenn er keine Übereinstimmung findet, bildet er einen Wörterbucheintrag für INT und gibt das vorher erzeugte Codewort für die Sequenz IN aus. Zwei 8-Bit-Zeichen wurden nun durch ein 9-Bit-Codewort für ein Komprimierungsverhältnis von 16/9 oder 1,778:1 ersetzt.
- Dieses Verfahren setzt sich fort, wobei wiederum zwei Zeichen durch ein einzelnes Codewort ersetzt werden. Der Prozessor beginnt mit einem T von der vorherigen Sequenz und nimmt dann das nächste Zeichen, das ein I ist, an. Er sucht nach der Sequenz TI und findet eine Übereinstimmung, so daß ein weiteres Byte eingegeben wird. Nun sucht der Chip nach der Sequenz TIN. Keine Übereinstimmung wird gefunden, so daß ein Eintrag TIN gebildet wird und das Codewort für TI ausgegeben wird. Diese Sequenz zeigt ebenfalls das Komprimierungsverhältnis von 1,778:1, das die Sequenz IN zeigte. Das Netzkomprimierungsverhältnis für diese Zeichenfolge von 9 Byte ist 1,143:1. Dies ist kein besonders großes Komprimierungsverhältnis, da das Beispiel aus einer sehr kleinen Anzahl von Byte besteht. Bei einer größeren Datenprobe werden mehr Datensequenzen gespeichert und größere Byte sequenzen durch ein einzelnes Codewort ersetzt. Es ist möglich, Komprimierungsverhältnisse in einem Bereich von 1:1 bis zu 110:1 zu erhalten.
- Ein vereinfachtes Diagramm des Dekomprimierungsverfahrens ist in Fig. B gezeigt. Dieses Beispiel verwendet die Ausgabe des vorhergehenden Komprimierungsbeispiels als Eingabe. Das Dekomprimierungsverfahren sieht dem Komprimierungsverfahren sehr ähnlich, wobei der Algorithmus zur Dekomprimierung jedoch weniger kompliziert als der zur Komprimierung ist, da er nicht nach der Präsenz eines gegebenen Wörterbucheintrags suchen muß. Die Kopplung der zwei Verfahren garantiert die Existenz der geeigneten Wörterbucheinträge während der Dekomprimierung. Der Algorithmus verwendet einfach die Eingabecodeworte, um die Bytesequenz in dem Wörterbuch nachzuschlagen und erzeugt dann unter Verwendung der gleichen Regeln, die der Komprimierungsalgorithmus verwendet, neue Einträge. Auf diese Weise kann der Dekomprimierungsalgorithmus die komprimierten Daten zurückgewinnen, ohne daß ein spezielles Wörterbuch mit den Datenpaketen gesendet wird.
- Wie bei dem Komprimierungsbeispiel wird angenommen, daß das Wörterbuch rückgesetzt und initialisiert wurde, um die ersten 256 Einträge von 0 bis 255 zu enthalten. Der Dekomprimierungsprozessor beginnt durch das Annehmen des Codeworts für R. Er verwendet dieses Codewort, um den Bytewert R nachzuschlagen. Dieser Wert ist in dem ersten LIFO-Stapel (LIFO = last-in, first-out = zuletzt hinein, zuerst heraus), der wartet, um von dem Chip ausgegeben zu werden. Da R eines der Wurzel-Codeworte (einer der ersten 256 Einträge) ist, wurde für dieses Codewort das Ende der Liste erreicht. Der Ausgabestapel wird dann von dem Chip ausgegeben. Der Prozessor gibt dann das Codewort für I ein und verwendet dasselbe, um den Bytewert I nachzuschlagen. Dieser Wert ist wiederum ein Wurzel-Codewort, so daß die Ausgabesequenz für dieses Codewort abgeschlossen ist und der Bytewert für I aus dem Ausgabestapel abgestreift wird. An diesem Punkt wird unter Verwendung des letzten Bytewerts, der auf den Ausgabestapel geschoben wurde (I) und des vorherigen Codeworts (das Codewort für R) ein neuer Wörterbucheintrag erzeugt. Jeder Eintrag wird auf diese Art und Weise erzeugt und enthält einen Bytewert und einen Zeiger auf das nächste Byte in der Sequenz (das vorherige Codewort). Eine verknüpfte Liste wird auf diese Art und Weise für jeden Wörterbucheintrag erzeugt.
- Das nächste Codewort wird eingegeben (das Codewort für N) und das Verfahren wird wiederholt. Dieses Mal wird ein N ausgegeben und ein neuer Wörterbucheintrag wird erzeugt, der den Bytewert N und das Codewort für I enthält. Das Codewort für T wird eingegeben, was bewirkt, daß ein T ausgegeben wird und ein weiterer Wörterbucheintrag erzeugt wird. Das nächste Codewort, das eingegeben wird, stellt die Bytesequenz IN dar. Der Dekomprimierungsprozessor verwendet dieses Codewort, um auf den zweiten Wörterbucheintrag zu verweisen, der früher in diesem Beispiel erzeugt wurde. Dieser Eintrag enthält den Bytewert N, der auf dem Ausgabestapel plaziert ist, und den Zeiger auf das Codewort für I, welches das gegenwärtige Codewort wird. Dieses neue Codewort wird verwendet, um das nächste Byte (I) zu finden, das auf dem Ausgabestapel plaziert ist. Da dieses ein Wurzel-Codewort ist, ist das Nachschlagverfahren abgeschlossen und der Ausgabestapel wird in umgekehrter Reihenfolge ausgegeben, d.h., daß I zuerst ausgegeben wird, gefolgt von N. Das gleiche Verfahren wird mit den zwei nächsten Codeworten wiederholt, was die Rückgewinnung der ursprünglichen Bytesequenz R I N T I N T I N zur Folge hat.
- Zwei der reservierten Codeworte, die oben genannt wurden, die während der Datenkomprimierung in den Datenstrom eingefügt werden, sind Codeworte für RÜCKSETZ- und RÄUM-Bedingungen. Das RÜCKSETZ-Codewort bedeutet den Beginn eines neuen Wörterbuchs. Das RÄUM-Codewort bedeutet, daß der DC-Chip seinen Puffer ausgeräumt hat, d.h., daß er Codeworte für die Daten, die gegenwärtig in dem Puffer gehalten sind (welche die gegenwärtige längste Übereinstimmung darstellen) vor dem erneuten Füllen des Puffers mit nachfolgenden Daten ausgibt. Der DC-Chip gibt RÜCKSETZ- und RÄUM-Codeworte auf eine Algorithmus-abhängige Art und Weise in den Datenstrom ein. Jedoch plaziert das Bandformat Beschränkungen darauf, wann bestimmte RÜCKSETZ und RÄUM-Codeworte auftreten müssen und stellt ferner das Schreiben bestimmter Informationen sicher, um die Benutzung bestimmter der RÜCKSETZ- und RÄUM-Codeworte zu ermöglichen, um den Zugriff auf die komprimierten Daten zu verbessern.
- Da die Codewortausgabe durch einen LZW-Algorithmus-Prozessor eine andere als jeweils 8 oder 16 Bit sein kann, ist üblicherweise eine "Packvorrichtung" in dem System eingeschlossen, die Codeworte annimmt und Bytes gepackter Codeworte ausgibt. Dieses Packverfahren hält notwendigerweise partielle Bytes von deren Ausgabe zurück, wobei auf das nächste Codewort, das durch den Komprimierungsalgorithmus erzeugt werden soll, gewartet wird. Dieses partielle Codewort stellt zusätzliche Daten dar, die in das Komprimierungssystem genommen wurden, ist jedoch in der Ausgabe desselben noch nicht wiedergespiegelt.
- An einem bestimmten Punkt wird das System, das den Komprimierungsprozessor verkörpert, erfordern, daß alle Bytes, die in die Komprimierungsvorrichtung laufen, in der Ausgabe desselben dargestellt wurden. Dies bedeutet, daß der Komprimierungsvorrichtung mitgeteilt werden muß, daß die gegenwärtige Übereinstimmung die längste ist, die sie finden wird, und daß sie deshalb ihr gegenwärtiges übereinstimmendes Codewort ausgeben soll. Es bedeutet ferner, daß alle partiellen Codeworte von dem Komprimierungssystem ausgegeben werden. Dies ist die RÄUM-Operation, bei der die Komprimierungsvorrichtung "geräumt" wird, wenn jedes Byte, das dieselbe empfangen hat, in ihrer Ausgabe dargestellt wurde. Sie hält keine Daten von ihrer Ausgabe zurück.
- Eine Dekomprimierung kann nur ausgehend von einem RÜCKSETZ- Codewort beginnen, da das Wörterbuch aus den Daten neu erzeugt werden muß. Jedoch kann eine Dekomprimierung dann an einem beliebigen nachfolgenden RÄUM-Codewort enden, selbst wenn dies nicht am Ende dieses speziellen Wörterbuchs ist. Dies ist der Grund dafür, warum es vorteilhaft ist, RÄUM- Codeworte an das Ende jedes Datensatzes zu setzen, um eine selektive Dekomprimierung von Datensegmenten zu ermöglichen, die kleiner sind als die, die verwendet sind, um ein Wörterbuch aufzubauen.
- Dekomprimierungssysteme weisen einen Entpackungsabschnitt auf, der Codeworte zu einer Dekomprimierungsvorrichtung liefert. Obwohl die Dekomprimierungsvorrichtung nicht die Aufgabe besitzt, längste Übereinstimmungen zu finden, und deshalb keinerlei intrinsische Pufferung einschließt, kann die Entpackungsvorrichtung Daten von der Außenwelt nur Bit für Bit annehmen, und wird daher typischerweise partielle Codeworte von der Dekomprimierungseinrichtung zurückhalten.
- Sobald der Dekomprimierungsvorrichtung das letzte Codewort, das der "geräumten" Bedingung während der Komprimierung vorhergeht, geliefert wurde, muß die Entpackungsvorrichtung alle Bits, die übrig sind, entfernen. Diese Bits sind kein Teil des nächsten Codeworts, sondern sind vielmehr während der Komprimierung durch die Räumoperation als Füllung eingeführt. Daher muß die Entpackungsvorrichtung wissen, wo diese Räumungen während der Komprimierung auftraten.
- Am Beginn eines Wörterbuchs wird die Mehrheit der Daten ohne eine Komprimierung durch den DC-Chip geleitet, da die meisten Daten vorher nicht gesehen worden sind. In dieser Phase ist das Komprimierungsverhältnis relativ gering. Es ist daher nicht erwünscht, ein Wörterbuch derart häufig neu beginnen zu müssen, daß der Komprimierungswirkungsgrad reduziert wird.
- Wenn das Komprimierungsverhältnis ungeachtet dessen, daß das gegenwärtige Wörterbuch voll ist, hoch ist, kann das Wörterbuch in seinem statischen Zustand gehalten werden, d.h., daß. keine weiteren Einträge hinzugefügt werden können, bis das Komprimierungsverhältnis abfällt und es effizienter ist, ein neues Wörterbuch zu beginnen.
- Gemäß dem LZ1-Algorithmus besteht die elementare Idee darin, eine gemeinsame Zeichenfolge des Texts durch ein spezielles Symbol zu ersetzen. Dieses Symbol sagt der Dekomprimierungsvorrichtung, daß die Zeichenfolge früher übertragen und gespeichert wurde, und daß die Dekomprimierungsvorrichtung nur das vorherige Auftreten für das spezielle Symbol substituieren muß. Formeller heißt das, daß die Ausgabe der Komprimierungsvorrichtung durch Abwechseln von Verweisen auf vorherige Auftritte von Zeichenfolgen, die Zitate genannt werden, und unkomprimierte Zeichen, die Neuerungen genannt werden, erhalten wird. Neuerungen sind Zeichen, die in der komprimierten Ausgabe unverändert erscheinen, wobei dieselben enthalten sind, um es der Dekomprimierungsvorrichtung zu ermöglichen, die Verwendung eines neuen, vorher ungesehenen Zeichens zu erkennen.
- Der Algorithmus erfordert einen Puffer (bekannt als das 'Fenster'), der in zwei Teile geteilt ist. Die Mehrheit des Puffers enthält die vergangene Geschichte der Eingabe; dies sind die Zeichen, die bereits komprimiert wurden. Ein kleiner Teil am Ende des Fensters wird der Vorausschaupuffer genannt und enthält die zukünftigen zu komprimierenden Zeichen. Um diese Struktur zu verwenden, wird der Vorausschau- Puffer mit dem Rest des Fensters verglichen.
- In Fig. C ist ein Puffer B gezeigt, der in einen Fensterpuffer W und einen Vorausschaupuffer L geteilt ist. Ankommende Daten, die komprimiert werden sollen, werden in dem Vorausschaupuffer L gespeichert, der eine Kapazität von mehreren Zeichen, beispielsweise 20 Zeichen, aufweist. Der Fensterpuffer W enthält eine Geschichte der jüngsten vergangenen Daten und besitzt eine Kapazität einiger Tausend Zeichen, beispielsweise 4.096 Zeichen. Unbearbeitete Daten betreten den Fensterpuffer W von dem Vorausschaupuffer L, wobei die ältesten Daten in dem Fensterpuffer W entfernt werden (sobald der Fensterpuffer W voll ist). Aus diesem Grund wird der Fensterpuffer W manchmal als 'Schiebefenster' bezeichnet.
- Gemäß einer Implementierung des LZ1-Algorithmus wird, während Daten den Vorausschaupuffer L betreten, jedes Zeichen mit dem Inhalt des Fensterpuffers W verglichen. Wenn für ein Zeichen keine Übereinstimmung gefunden wird, wird dieses Zeichen in seinem unbearbeiteten Zustand ausgegeben, d.h. als eine Neuerung. Dieses Zeichen betritt dann ebenfalls den Fensterpuffer W.
- Sobald für ein Zeichen in dem Vorausschaupuffer L eine Übereinstimmung gefunden wird, wird auch das nächste Zeichen in Verbindung mit dem übereinstimmenden Zeichen betrachtet, um zu sehen, ob eine längere Übereinstimmung gefunden werden kann. Dieses Verfahren wird wiederholt, bis das Hinzufügen eines weiteren Zeichens bedeutet, daß es nicht länger eine Übereinstimmung in dem Fensterpuffer W gibt. Ein Codewort/Symbol, das die Länge der Anpassung und die Position derselben in dem Fensterpuffer W anzeigt, wird dann ausgegeben, und die relevante Zeichenfolge wird zu dem Fensterpuffer W hinzugefügt.
- Es ist möglich, daß sich ein Codewort/Symbol auf eine Zeichenfolge bezieht, die sich in den Vorausschaupuffer erstreckt, solange das erste Zeichen des Verweises vor dem Puffer auftritt. Wenn sich die Übereinstimmung in den Vorausschaupuffer erstreckt, führt die LZ1-Komprimierungsvorrichtung eine Art einer Lauf-Längen-Codierung. Wenn die Übereinstimmung bei dem Zeichen vor dem Puffer beginnt, komprimiert die Komprimierungsvorrichtung einen Lauf, beispielsweise "aaaaaa...". Genauso komprimiert die Komprimierungsvorrichtung einen Lauf, beispielsweise "ababab..." oder "abcabcabc...", wenn das erste Zeichen einer Anpassung mehrere Zeichen vor dem Puffer beginnt.
- Das RINTINTIN-Beispiel wird gemäß diesem Lösungsansatz komprimiert, wie in Fig. D gezeigt ist, unter der Annahme, daß dies der erste Datenteil ist, der komprimiert werden soll, d.h., daß der Fensterpuffer B leer ist, um mit demselben zu starten. Die ersten vier Zeichen werden als Neuerungen ausgegeben. Das fünfte Zeichen, I, befindet sich in dem Fensterpuffer W, so daß das nächste Zeichen N betrachtet wird, um zu überprüfen, ob sich IN bereits in dem Fensterpuffer W befindet. Ist dies der Fall, wird die Zeichenfolge INT betrachtet - die sich ebenfalls in dem Fensterpuffer befindet. Jedoch erzeugt das Hinzufügen des nächsten Zeichens I eine Zeichenfolge INTI, die sich nicht in dem Fensterpuffer W befindet. Daher wird ein Codewort ausgegeben, das die Position von INT in dem Fensterpuffer W anzeigt, und das die Länge 3 aufweist. Die Position wird durch einen 'Versatz' angezeigt, d.h., wie weit zurück von dem gegenwärtigen Zeichen die Übereinstimmung in dem Fensterpuffer W beginnt.
- Das nächste Zeichen, 1, stimmt mit dem vorherigen 1 in dem Fensterpuffer überein, und die letzte Zeichenfolge, IN, stimmt mit dem Fall dieser Zeichenfolge drei Zeichen zurück in dem Fensterpuffer überein, daher ein Ausgabecodewort < 3,2> .
- Während der Dekomprimierung wird ebenfalls ein Fensterpuffer gehalten, wobei, wenn in den ankommenden Daten ein Codewort gefunden wird, das dekomprimiert werden soll, die Dekomprimierung das Nachschlagen der geeigneten Zeichenfolge in dem Fensterpuffer gemäß dessen Versatz und dessen Länge und das Ausgeben der Zeichenfolge einschließt. Daher wird bei dem RINTINTIN-Beispiel eine Zeichenfolge der Länge 3, die drei Charaktere zurück beginnt, d.h. INT, ausgegeben, wenn das erste Codewort, < 3,3> , angetroffen wird. Wenn das nächste Codewort < 3,2> angetroffen wird, wird eine Zeichenfolge der Länge 2, die drei Charaktere zurück beginnt, d.h. IN, ausgegeben.
- Gemäß dem LZI-Lösungsansatz, besitzt ein RÜCKSETZ-Befehl die Wirkung des Löschens des Fensterpuffers. Ein RÄUM-Befehl besitzt die Wirkung des Löschens des Vorausschaupuffers. Demgemäß ist ein 'Wörterbuch' in dem LZ1-Lösungsansatz durch die Datenmenge dargestellt, die zwischen zwei aufeinanderfolgenden RÜCKSETZ-Befehlen durch den Fensterpuffer 'geschoben' wurde. Wie beim LZW-Algorithmus muß die Dekomprimierung ausgehend vom letzten RÜCKSETZEN beginnen.
- Es gibt einen Vorteil beim gemeinsamen Verwenden eines Wörterbuchs über eine Mehrzahl von Datensätzen, d.h. den Fensterpuffer nicht am Ende jedes Datensatzes zurückzusetzen, dahingehend, daß dasselbe ermöglicht, daß das Komprimierungsverhältnis für Sequenzen relativ kurzer Datensätze verbessert wird.
- Die Wirkung eines RÄUM-Befehls besteht darin, zu bewirken, daß der gesamte Inhalt des Vorausschaupuffers übereinstimmt, wie vorher beschrieben wurde, und ausgegeben wird, bevor beliebige weitere Daten in den Vorausschaupuffer gelassen werden. Ein Vorteil des Räumens des Vorausschaupuffers auf diese Weise zwischen aufeinanderfolgenden RÜCKSETZ-Befehlen besteht darin, daß dasselbe eine selektive Dekomprimierung von Datensegmenten ermöglicht, die kleiner sind als die, die verwendet sind, um ein Wörterbuch aufzubauen. Dies ist besonders nützlich, wenn es erwünscht ist, Datenaufzeichnungen an komprimierte Daten, die auf einem Band gespeichert sind, anzuhängen. Wenn der Vorausschaupuffer nach jeder Datenaufzeichnung geräumt wird, ist es möglich, das Ende jedes komprimierten Datensatzes auf einem Band zu finden, derart, daß weitere Datensätze deutlich nach dem Ende der exisitierenden Datensätze angehängt werden können.
- Es ist offensichtlich, daß Fig. C rein schematisch zu Zwecken der Erklärung dient. Der Fensterpuffer kann in der Form zweier Zeiger implementiert sein, die ein Segment vergangener Daten definieren. Alternativ können tatsächlich beliebige andere geeignete Anordnungen verwendet werden.
- Verfahren zum Speichern von Daten, komprimiert oder unkomprimiert, auf einem Band werden nun beschrieben.
- Die Lieferung von Daten von einem Benutzer (Hauptcomputer) zu einer Bandspeichervorrichtung wird im allgemeinen von einer Benutzertrennung der Daten begleitet, egal, ob diese Trennung die physikalische Trennung der Daten in diskrete Pakete (Datensätze), die in die Speichervorrichtung geleitet werden, ist, oder eine konzeptmäßige Organisierung einer höheren Ebene der Datensätze, die der Speichervorrichtung mittels des Hauptcomputers in Form von spezifischen Signalen ausgedrückt wird. Diese Benutzertrennung der Daten hat eine bestimmte spezielle Bedeutung für den Hauptcomputer (obwohl diese Bedeutung im allgemeinen der Bandspeichervorrichtung unbekannt sein wird). Es ist daher geeignet, die Benutzertrennung als eine logische Segmentierung zu betrachten, selbst wenn die Präsenz derselben der Speichervorrichtung durch die physikalische Trennung der ankommenden Daten ausgedrückt werden kann.
- Fig. 1 (a) zeigt eine Sequenz von Benutzerdaten und spezielle Trennungssignale, die ein existierender Hauptcomputertyp einer Bandspeichervorrichtung liefern könnte. Bei diesem Beispiel werden die Daten in Datensätzen variabler Länge R1 bis R9 geliefert; die logische Bedeutung dieser physikalischen Trennung ist dem Hauptcomputer, jedoch nicht der Speichervorrichtung, bekannt. Zusätzlich zu der physikalischen Trennung werden Benutzertrennungs-Informationen in der Form spezieller "Dateimarken"-Signale FM (FM = File Mark) geliefert. Die Dateimarken FM werden der Speichervorrichtung zwischen Datensätzen geliefert; wiederum ist die Bedeutung dieser Trennung der Speichervorrichtung nicht bekannt. Die physikalische Trennung in Datensätze liefert eine erste Trennungsebene, während die Dateimarken eine zweite Ebene liefern, die mit der ersten Ebene eine Hierarchie bildet.
- Fig. 1 (b) zeigt eine mögliche physikalische Organisation zum Speichern der Benutzerdaten und der Benutzertrennungs-Informationen von Fig. 1 (a) auf einem Band 10, wobei diese Organisation mit einem bekannten Datenspeicherverfahren übereinstimmt. Die Abbildung zwischen Fig. 1 (a) und 1 (b) ist einfach - Dateimarken FM werden als Festfrequenzbündel 1 aufgezeichnet, werden jedoch sonst als Datensätze behandelt, wobei die Datensätze R1 bis R9 und die Dateimarken FM untereinander durch Zwischenblocklücken 2 getrennt sind, in denen kein Signal aufgezeichnet ist. Die Zwischenblocklücken 2 dienen wirksam als Trennungsmarken einer ersten Ebene, die die Trennung der gespeicherten Daten in die Benutzer-verständliche, logische Einheit eines Datensatzes ermöglichen; die Dateimarken FM (Festfrequenzbündel 1) bilden Trennungsmarken einer zweiten Ebene, die die Datensätze in logische Ansammlungen von Datensätzen teilen.
- Fig. 1 (c) zeigt eine zweite mögliche Organisation, die bekannt ist, um die Benutzerdaten und Benutzertrennungs-Informationen von Fig. 1 (a) auf dem Band 10 zu speichern. In diesem Fall sind die Benutzerdaten in Gruppen fester Größe 3 organisiert, von denen jede einen Index 4 zum Enthalten von Informationen über den Inhalt der Gruppe einschließen. Die Grenze zwischen zwei Gruppen 3 kann durch ein Festfrequenzbündel 5 angezeigt werden. Die Einteilung der Daten in Gruppen dient nur zur Bequemlichkeit der betroffenen Speichervorrichtung und sollte für den Hauptcomputer transparent sein. Die Benutzerdaten in einer Gruppe sind nicht auf irgendeine Weise physikalisch getrennt, wobei jeder Datensatz sich einfach direkt ausgehend vom Ende des Vorhergehenden fortsetzt; alle Informationen, die die Trennung der Daten in einer Gruppe sowohl in Datensätze als auch in die Ansammlung von Datensätzen, die durch Dateimarken begrenzt ist, beziehen, sind in dem Index der Gruppe enthalten. Bei dem vorliegenden Beispiel sind die Datensätze R1 bis R8 und der erste Teil von R9 in der dargestellten Gruppe 3 gehalten.
- Die Länge des Index 4 wird sich im allgemeinen entsprechend der Anzahl der vorliegenden Trennungsmarken und der Anzahl der Datensätze in der Gruppe ändern; jedoch kann durch das Aufzeichnen der Indexlänge an einer vorbestimmten Position in dem Index bezüglich der Gruppenenden die Grenze zwischen dem Index und dem letzten Byte identifiziert werden. Ein Raum mit undef inierten Inhalt, beispielsweise eine Auffüllung, kann zwischen dem Ende des Datenbereichs und dem ersten Byte des Index existieren.
- Der Inhalt des Index 4 ist in Fig. 2 gezeigt, wobei zu sehen ist, daß der Index zwei Hauptdatenstrukturen aufweist, nämlich eine Gruppeninformationstabelle 6 und eine Blockzugriffstabelle 7. Die Anzahl der Einträge in die Blockzugriffstabelle 7 ist in einem Blockzugriffs-Tabelleneintrag(BAT-Eintrag; BAT = block access table) Zählfeld in der Gruppeninformationstabelle 6 gespeichert. Die Gruppeninformationstabelle 6 enthält ferner verschiedene Zahlen, beispielsweise eine Dateimarkenzahl FMZ (FMZ = file mark count) (die Anzahl von Dateimarken, die seit der BOR-Marke (BOR = beginning of recording = Aufzeichnungsbeginn) geschrieben wurden, einschließlich aller in der gegenwärtigen Gruppe enthaltenen) und Datensatzzahlen RC (RC = record counts) (die definiert werden sollen).
- Die Blockzugriffstabelle 7 beschreibt mittels einer Reihe von Zugriffseinträgen den Inhalt einer Gruppe und speziell die logische Segmentierung der Benutzerdaten, die in der Gruppe gehalten sind (d.h. sie hält Einträge, die jede Datensatzgrenze und Trennungsmarke in der Gruppe anzeigen). Die Zugriffseinträge fahren in der Reihenfolge des Inhalts der Gruppe fort.
- Wie in Fig. 3 gezeigt ist, weisen die Einträge in der Blockzugriffstabelle jeweils einen FLAG-Eintrag, der den Typ des Eintrags anzeigt, und einen ZAHL-Eintrag, der seinen Wert anzeigt, auf. Das FLAG-Feld besitzt 8 Bit, während das ZAHL-Feld 24 Bit besitzt. Die Bits in dem FLAG-Feld haben die folgende Bedeutung:
- SKP - ein SPRUNG-Bit, das, wenn es gesetzt ist, einen "Sprungeintrag" anzeigt. Ein Sprungeintrag ergibt die Anzahl von Byte in der Gruppe, die nicht durch Benutzerdaten besetzt sind, d.h. die Größe der Gruppe minus die Größe des Benutzerdatenbereichs.
- XFR - ein DATENÜBERTRAGUNGS-Bit, das, wenn es gesetzt ist, das Schreiben von Benutzerdaten auf ein Band anzeigt.
- EOX - ein DATENÜBERTRAGUNGSENDE-Bit, das, wenn es gesetzt ist, das Ende des Schreibens eines Benutzerdatensatzes auf ein Band anzeigt.
- CMP - ein KOMPRIMIERUNGS-Bit, das, wenn es gesetzt ist, anzeigt, daß sich der Eintrag auf komprimierte Daten bezieht.
- EOT - der Wert dieses Bits hat für den Zweck dieser Beschreibung keine Bedeutung.
- MRK - ein TRENNUNGSMARKEN-Bit, das, wenn es gesetzt ist, anzeigt, daß sich der Eintrag auf eine Trennungsmarke und nicht auf einen Datensatz bezieht.
- BOR - ein DATENSATZBEGINN-Bit, das, wenn es gesetzt ist, die Position des Beginns eines Datensatzes anzeigt.
- EOR - ein DATENSATZENDE-Bit, das, wenn es gesetzt ist, die Position des Endes eines Datensatzes auf einem Band anzeigt.
- Fig. 3 zeigt die sieben Eintragstypen, die in der Blockzugriffstabelle durchgeführt werden können. Bei dem Eintrag TRENNUNGSMARKE sind die Bits BOR und EOR gesetzt, da derselbe durch das Laufwerk als ein Datensatz behandelt wird. Bei den nächsten vier Einträgen ist jeweils das Bit XFR gesetzt, da dieselben Informationen über Datenübertragungen darstellen. Der Eintrag TEILDATENSATZBEGINN bezieht sich auf einen Fall, bei dem nur der Beginn eines Datensatzes in die Gruppe paßt, während der nächste Teil des Datensatzes in die folgende Gruppe überläuft. Das einzige Bit, das in der Eintrags-Flag DATENSATZMITTELTEIL gesetzt ist, ist das Datenübertragungsbit, da es in dieser Gruppe weder einen Beginn noch ein Ende eines Datensatzes geben wird. Bei dem Eintrag DATENSATZENDTEIL ist das Bit EOR in dem Flag-Feld nicht gesetzt; stattdessen ist das Bit EOR in dem Eintrag GESAMTZAHL gesetzt, der die Datensatz-Gesamtbytezahl angibt. Der letzte Eintrag in der Blockzugriffstabelle für eine Gruppe ist stets ein Eintrag SPRUNG, der den Raumbetrag in der Gruppe angibt, der nicht durch Benutzerdaten besetzt ist, d.h. der Eintrag in dem Zahlfeld für den Eintrag SPRUNG gleicht der Gruppengröße (beispielsweise 126.632 Byte) minus der Datenbereichsgröße.
- Ein Beispiel einer Blockzugriffstabelle für die Gruppe 3 von Datensätzen, die in Fig. 1 (c) gezeigt ist, ist in Fig. 4 gezeigt. Die Zahl-Einträge für die Datensätze R1 bis 8 sind die vollen Bytezahlen für diese Datensätze, wohingegen der Zahl-Eintrag für den Datensatz R9 die Bytezahl des Teils von R9 ist, der sich in der Gruppe 3 befindet. Die Zahl-Einträge für die Dateimarken FM werden gemäß dem Format 0 oder 1 sein. Der Zahl-Eintrag für den SPRUNG-Eintrag ist 126.632 minus die Summe der Bytezahlen, die vorher in der Tabelle erscheinen (ohne die Gesamtzahl-Einträge).
- Bei einem weiteren Ausführungsbeispiel gibt es einen weiteren möglichen Eintrag in der Blockzugriffstabelle, der den Algorithmus anzeigt, der verwendet ist, um die Daten in der Gruppe zu komprimieren, wie in Fig. 3A gezeigt ist. Die Algorithmusnummer, die in dem ZAHL-Feld eingegeben ist, ist vorzugsweise eine solche, die mit einem Standard für DC-Algorithmusnummern übereinstimmt. Bei Datenübertragungs- und Gesamtzahl-FLAG-Einträgen für komprimierte Datensätze in der Gruppe ist das Bit CMP gesetzt. Folglich können komprimierte und unkomprimierte Datensätze in einer Gruppe auf der Basis des CMP-Bits durch ein Laufwerk unterschieden werden. Wenn wir beispielsweise annehmen, daß in Fig. 1 (c) die geradzahligen Datensätze komprimierte Datensätze sind, während die ungeradzahligen Datensätze unkomprimiert sind, hätten die Blockzugriffstabellen-Einträge die in Fig. 4A gezeigte Form. In Fig. 4A zeigt UBCX eine unkomprimierte Bytezahl für einen Datensatz X an, während CBCX eine komprimierte Bytezahl für einen Datensatz X anzeigt.
- Fig. 5 zeigt eine weitere mögliche Organisation zum Speichern von Benutzerdaten und zu denselben gehörenden Informationen auf einem Band. Wiederum sind die Benutzerdaten in Gruppen fester Größe organisiert, wobei jede Gruppe einen Index einschließt, der unkomprimiert ist, selbst wenn die Gruppe komprimierte Daten enthält, welcher eine Blockzugriffstabelle aufweist, um Informationen über den Inhalt der Gruppe zu enthalten. Die Grenzen zwischen Gruppen können durch Festfrequenzbündel angezeigt sein.
- Statt dem Speichern von Informationen in dem Gruppenindex nur bezüglich von Datensätzen, schließt jedoch dieses Ausführungsbeispiel das Speichern der Informationen über den Inhalt der Gruppe hinsichtlich "Entitäten" ein, wobei eine Entität einen oder mehrere Datensätze aufweist. Bei diesem Ausführungsbeispiel kann eine Entität n komprimierte Datensätze enthalten, von denen jeder die gleiche unkomprimierte Länge aufweist, wobei n gleich oder größer als 1 ist.
- In Fig. 5 weist eine Gruppe G eine einzelne Entität ENTITÄT 1 (oder E&sub1;) auf, die vier vollständige Datensätze CR&sub1; bis CR&sub4; von komprimierten Daten und einen Kopfabschnitt H von 8 Byte aufweist. Die Datensätze CR&sub1; bis CR&sub4; weisen die gleiche unkomprimierte Länge auf, können jedoch ohne weiteres von unterschiedlicher Länge sein, nachdem die Daten einer Komprimierung unterzogen wurden.
- Der Kopfabschnitt H in dem Datenstrom, der unkomprimiert bleibt, enthält folgende Informationen:
- HL - die Anfangsblocklänge (4 Bit). "Die nächsten 12 Bits sind reserviert).
- ALG# - eine erkannte Nummer, die den Komprimierungsalgorithmus bezeichnet, der verwendet ist, um Daten zu komprimieren (1 Byte).
- UBC - die unkomprimierte Bytezahl für die Datensätze in der Entität (2 Byte).
- #RECS - die Zahl von Datensätzen in der Entität (3 Byte).
- Optional kann eine Entität Endabschnitte an dem Ende jedes Datensatzes in der Entität einschließen, wobei die Endabschnitte die komprimierte Bytezahl jedes Datensatzes enthalten. Folglich würde der Endblock unmittelbar nach einem "Datensatzend"-Codewort (EOR-Codewort) auftreten. Wenn dieses Merkmal vorliegt, könnte die Länge des Endblocks (beispielsweise 3 Byte) ebenfalls in dem Anfangsabschnitt angezeigt werden, in den 12 Bit, die nach der Anfangsblock-Länge HL reserviert sind.
- Ein Beispiel eines Ausführungsbeispiels, bei dem jeder Datensatz in einer Entität einen Endabschnitt aufweist, ist in Fig. 5A gezeigt. Der Endabschnitt ist unkomprimiert am Ende jedes komprimierten Datensatzes in den Datenstrom eingefügt. Folglich weist die Entität in Fig. 5A einen Anfangsabschnitt H und vier komprimierte Datensätze CR&sub1; bis CR&sub4; gleicher Länge, wenn dieselben unkomprimiert sind, von denen jeder einen unkomprimierten Endabschnitt T besitzt, auf.
- Der Endabschnitt TR jedes Datensatzes enthält die komprimierte Bytezahl (CBC; CBC = compressed byte count) des Datensatzes und eine zyklische Redundanzüberprüfung (CRC; CRC - cyclic redundancy check). Der Endblock besetzt bei diesem Beispiel 6 Bits am Ende jedes Datensatzes. Die Länge (TL) des Endblocks ist in dem Anfangsabschnitt H enthalten und besetzt die letzten 4 Bits des ersten Byte des Anfangsabschnitts H.
- Der Einschluß der Endabschnitte ändert die Beschaffenheit der Entität in der Blockzugriffstabelle T nicht, obwohl der SPRUNG-Zahleintrag entsprechend kleiner sein wird.
- Das Einfügen der komprimierten Bytezahlen in den Datenstrom besitzt den Vorteil, daß ein DC-Laufwerk oder ein geeignet konf iguriertes Nicht-DC-Laufwerk dieselben als Zeiger in einer verknüpften Liste verwenden kann, um abzuleiten, wo jeder komprimierte Datensatz beginnt und endet.
- Der Vorteil des Enthaltens der Länge des Anfangsabschnitts (und des Endabschnitts, wenn geeignet) in dem Anfangsblock besteht darin, daß dasselbe es ermöglicht, diese Länge zu ändern, während es noch möglich ist, daß ein Laufwerk über den Anfangsblock springt, wenn es erwünscht ist.
- Informationen werden in einer Blockzugriffstabelle T in dem Index jeder Gruppe bezüglich Entitäten und nicht bezüglich Datensätzen aufgezeichnet, jedoch sonst wie bezugnehmend auf die Fig. 2 bis 4 vorher beschrieben wurde. Die Einträge in der Blockzugriffstabelle für die Entität E&sub1; sind ebenfalls in Fig. 5 gezeigt.
- Die Arten von Einträgen, die in der Blockzugriffstabelle T durchgeführt werden, sind ähnlich denen, die bezugnehmend auf die Fig. 2 bis 4 beschrieben wurden. Der Unterschied besteht darin, daß nun das Setzen des Bits CMP in dem FLAG- Feld anzeigt, daß sich der Eintrag auf eine Bytezahl für eine Entität und nicht für einen Datensatz bezieht.
- Eine Möglichkeit ist, zu ermöglichen, daß Entitäten nur komprimierte Datensätze enthalten, wobei diese bevorzugt ist. Dies bedeutet dann, daß das Setzen des Bits CMP in dem FLAG-Feld noch anzeigt, daß der ZAHL-Eintrag eine komprimierte Bytezahl ist. Jedoch ist eine andere Möglichkeit, zu ermöglichen, daß Entitäten entweder komprimierte Daten oder unkomprimierte Daten enthalten, und eine spezielle Algorithmusnummer zu reservieren, beispielsweise nur Nullen, um anzuzeigen, daß die Daten in einer Entität unkomprimiert sind.
- Das Speichern von Informationen in der Blockzugriffstabelle T bezüglich Entitäten und nicht Datensätzen reduziert die zusätzliche Speicherverwaltung, die zum Schreiben und Lesen der Datensätze auf und von einem Band gehört. Während unter Verwendung des Schemas, das in den Fig. 2 bis 4 gezeigt ist, fünf Einträge in der Blockzugriffstabelle für die Gruppe G erforderlich wären, werden nun nur zwei Einträge benötigt.
- Die Organisation der Datensätze in Entitäten erleichtert die Übertragung mehrerer Datensätze identischer unkomprimierter Größe, da dieselbe das Maß einer Prozessor-Eingriffnahme, die während des Lesens und Schreibens erforderlich ist, reduziert. Um eine Sequenz von Datensätzen, die in einer Entität enthalten sind, zu schreiben, ist nur eine Prozessor- Eingriffnahme erforderlich, um den Anfangsabschnitt zu bilden und den geeigneten Eintrag in der Blockzugriffstabelle durchzuführen. Im Gegensatz dazu erfordert die Verwendung des bekannten Schemas, das bezugnehmend auf die Fig. 1 bis 4 beschrieben ist, eine Prozessor-Eingriffnahme auf einer Pro-Datensatz-Basis. Dies ist bei einer Datenkomprimierung besonders wichtig, da die komprimierte Bytezahl unbekannt ist, bis das Komprimierungsverfahren abgeschlossen wurde. Folglich ist bei einem Versuch, eine Gruppe mit Daten aufzufüllen, die Anzahl der Datensätze (und der entsprechenden Blockzugriffstabellen-Einträge), die hineinpassen wird, unbekannt. Durch das Festlegen der Blockzugriffstabellen-Anforderungen auf einen Eintrag kann die gesamte Gruppe ungeachtet dessen, wieviele Datensätze von Daten in die Gruppe passen, mit einer einzigen Prozessor-Eingriffnahme aufgefüllt werden. Ähnliche Vorteile werden beim Lesen von Daten erreicht.
- Wie in Fig. 6 gezeigt ist, kann eine Entität (En) über mehr als eine Gruppe verteilt sein, beispielsweise füllt eine Entität E&sub1;, die einen einzelnen, relativ langen Datensatz CR&sub1; enthält, eine Gruppe G&sub1; und läuft in eine Gruppe G&sub2; über. Die Einträge in den Blockzugriffstabellen T&sub1;, T&sub2; der Gruppen G&sub1;, G&sub2; sind ebenfalls in Fig. 6 gezeigt. Um den Grad einer Verknüpfung zwischen Gruppen zu reduzieren, wird sobald wie möglich eine neue Entität in einer Gruppe begonnen, d.h. am Beginn der Gruppe oder am Beginn des ersten komprimierten Datensatzes in der Gruppe, wenn der vorherige Datensatz unkomprimiert ist, oder am Beginn des ersten neuen komprimierten Datensatzes, wenn der vorherige Datensatz komprimiert ist und von der vorherigen Gruppe übergelaufen ist. Daher beginnt am Ende des komprimierten Datensatzes CR&sub1; die nächste Entität E&sub2;. Die Entität E&sub2; enthält vier komprimierte Datensätze CR&sub2; bis CR&sub4; einer gleichen unkomprimierten Länge.
- Es ist zu verstehen, daß Gruppen ein Gemisch von Entitäten enthalten können, die komprimierte Daten und "nackte Datensätze", die unkomprimierte Daten enthalten, enthalten können. Ein Beispiel dieser Anordnung ist in Fig. 7 gezeigt, die ferner die entsprechenden Einträge in der Blockzugriffstabelle zeigt.
- Eine Gruppe G enthält eine Entität, die einen Anfangsabschnitt H und drei komprimierte Datensätze CR&sub1;, CR&sub2; und CR&sub3; aufweist. Die Gruppe G weist ferner einen unkomprimierten Datensatz R&sub4; auf (der keinen Anfangsabschnitt besitzt). Die Blockzugriffstabelle der Gruppe G enthält vier Einträge:
- der erste Eintrag ist die vollständige Bytezahl der Entität in der Gruppe;
- der zweite Eintrag ist ein Dateimarken-Eintrag (der das Vorliegen einer Dateimarke in den ankommenden Daten vor dem Beginn des Datensatzes R&sub4; anzeigt);
- der dritte Eintrag ist die vollständige Bytezahl des unkomprimierten Datensatzes R&sub4;;
- der letzte Eintrag ist eine SPRUNG-Eintrag.
- Aus Fig. 7 ist zu erkennen, daß das Bit CMP (das vierte Bit des FLAG-Felds) für den Entitätbytezahl-Eintrag gesetzt ist, jedoch nicht für den Bytezahl-Eintrag des nackten Datensatzes. Ein geeignet konfiguriertes Nicht-DC-Laufwerk kann komprimierte und unkomprimierte Daten auf einem Band, das ein Gemisch derartiger Daten aufweist, identifizieren, indem überprüft wird, ob das Bit CMP in den relevanten Blockzugriffstabellen-Einträgen gesetzt ist.
- Bei diesem Schema sind in einer Entität keine Trennungsmarken erlaubt. Wenn beispielsweise ein Hauptcomputer eine Sequenz von Datensätzen gleicher Länge zu einem DC-Bandlaufwerk sendet und eine Dateimarke oder eine andere Trennungsmarke in der Sequenz vorliegt, wird der erste Satz von Datensätzen vor der Trennungsmarke in einer Entität plaziert, die Trennungsmarke wird auf das Band geschrieben und der Satz von Datensätzen in der Sequenz, der der Dateimarke folgt, wird in einer zweiten Entität plaziert. Die entsprechenden Einträge für die zwei Entitäten und die Trennungsmarke werden selbstverständlich in der Blockzugriffstabelle der relevanten Gruppe durchgeführt (unter der Annahme, daß bei diesem Beispiel nur eine Gruppe eingeschlossen ist).
- Die möglichen gültigen Sequenzen von Eintragen in der Blockzugriffstabelle einer Gruppe sind in Fig. 8 dargestellt. In Fig. 8 sind Zustände und Aktionen durch Rechtecke bezeichnet, während Blockzugriffstabellen-Einträge durch Ellipsen bezeichnet sind. Ein berbrückender' Datensatz/Entitrzt ist ein solcher, der sich von einer Gruppe in eine andere erstreckt.
- Um die Existenz von Entitäten und die erlaubte Existenz mehrerer komprimierter Datensätze in einer Entität zu berücksichtigen, sind bestimmte Felder in der Gruppeninformationstabelle in dem Index jeder Gruppe wie folgt definiert:
- Datensatzzahl - dieses Feld ist ein Vier-Byte-Feld, das die Summe der Werte des Anzahl-von-Datensätzen-in-gegenwärtiger-Gruppe-Eintrags (siehe unten) der Gruppeninformationstabelle aller Gruppen, die seit BOR bis zu und einschließlich der gegenwärtigen Gruppe geschrieben wurden, spezifiziert.
- Anzahl-von-Datensätzen-in-gegenwärtiger-Gruppe - dieses Feld ist ein Zwei-Byte-Feld, das die Summe der folgenden Terme spezifiziert:
- i) die Anzahl der Trennungsmarken-Einträge in der Blockzugriffstabelle der gegenwärtigen Gruppe.
- ii) die Anzahl der Gesamtzahl-unkomprimierter-Datensätze-Einträge in der Blockzugriffstabelle der gegenwärtigen Gruppe.
- iii) die Anzahl der Vollzahl-unkomprimierter-Datensatz- Einträge in der Blockzugriffstabelle der gegenwärtigen Gruppe.
- iv) die Summe der Anzahlen der komprimierten Datensätze in allen Entitäten, für die es einen Entitätgesamtzahl-Eintrag oder einen Entitätvollzahl-Eintrag in der Blockzugriffstabelle der gegenwärtigen Gruppe gibt.
- v) die Anzahl von komprimierten Datensätzen in der Entität, für die es einen Teilentitätbeginn-Eintrag in der Blockzugriffstabelle der gegenwärtigen Gruppe gibt, wenn ein solcher Eintrag existiert, minus 1.
- vi) die Anzahl der Entitätgesamtzahl-Einträge in der Blockzugriffstabelle der gegenwärtigen Gruppe.
- Gruppennummer-der-vorherigen-Aufzeichnung - dieses Feld ist ein Zwei-Byte-Feld, das die laufende Nummer der höchstzahligen vorherigen Gruppe spezifiziert, in der eine Trennungsmarke, ein Zugriffspunkt oder der Beginn eines unkomprimierten Datensatzes auftrat. Es sollte nur NULL-Bits enthalten, wenn keine solche vorherige Gruppe existiert.
- Bezüglich der Organisation der Datensätze in Gruppen fester Größe, wie bezugnehmend auf die Fig. 1 bis 8 beschrieben wurde, ist es allgemein erwünscht, die Gruppen zu Dekomprimierungszwecken unabhängig voneinander zu halten, d.h., daß es allgemein erwünscht ist, das Wörterbuch am oder in der Nähe des Beginns jeder Gruppe RÜCKZUSETZEN. Zwei Hauptgründe dafür liegen darin, die Pufferraummenge, die in der Steuerung erforderlich ist, durch das Verringern der Verknüpfungen zwischen Gruppen zu unterstützen, d.h. die Wahrscheinlichkeit zu verringern, zu jeder Zeit mehr als eine Gruppe in dem Puffer speichern zu müssen. Ein weiterer Grund für ein Wörterbuch-RÜCKSETZEN am Beginn einer Gruppe besteht darin, daß, wenn es erwünscht ist, einen Datensatz in der Mitte einer Gruppe selektiv zu dekomprimieren, es nicht notwendig ist, die Gruppe zu verlassen, um das relevante Wörterbuch zu beginnen.
- Es ist vorteilhaft, eine RÄUM-Bedingung nach jedem Datensatz zu besitzen - das RÄUM-Codewort wird auch als "Datensatzende"-Codewort (EOR-Codewort) bezeichnet, um den Zugriff auf komprimierte Daten zu verbessern. Dieses Merkmal ermöglicht es, daß Datensätze individuell dekomprimiert werden, vorbehaltlich der Notwendigkeit, ausgehend von dem RÜCKSETZ- Punkt, der dem Datensatz vorhergeht, zu dekomprimieren. Das Vorliegen einer RÄUM-Bedingung am Ende jedes Datensatzes bedeutet, daß die Daten für jeden Datensatz dekomprimiert werden können, ohne in die Daten von dem nächsten Datensatz zu laufen. Dieses Merkmal ist auch nützlich, wenn es erwünscht ist, neue Datensätze an einem Punkt in der Mitte existierender Datensätze anzuhängen.
- Die Menge komprimierter Daten, die ein Datenwörterbuch bildet, wird als "Komprimierungsobjekt" bezeichnet. Ein Komprimierungsobjekt kann mehr als eine Gruppe von Daten enthalten, wie in Fig. 9 dargestellt ist. Wenn ein. Datensatz von einer Gruppe in die nächste überlappt, wird ein RÜCK- SETZ-Codewort am Beginn des unmittelbar nächsten komprimierten Datensatzes in dem Datenstrom plaziert.
- In Fig. 9 weist eine Gruppe G&sub1; drei vollständige komprimierte Datensätze CR&sub1;, CR&sub2;, CR&sub3; und den ersten Teil eines vierten komprimierten Datensatzes CR&sub4; auf. Der letzte Teil des Datensatzes CR&sub4; erstreckt sich in die nächste Gruppe G&sub2;. Die Datensätze sind bei diesem Beispiel nicht in Entitäten organisiert.
- Während einer Datenkomprimierung wird das Wörterbuch (das in Fig. 9 durch R angezeigt ist) am Beginn der Gruppe G&sub1; rückgesetzt. RÄUM-Codeworte (durch F angezeigt) sind am Ende jedes Datensatzes in den Datenstrom eingefügt. Das gegenwärtige Wörterbuch setzt sich fort, bis der Datensatz CR&sub4; endet, wobei zu dieser Zeit das Wörterbuch rückgesetzt wird. Folglich weist das gegenwärtige Komprimierungsobjekt die Datensätze CR&sub1; bis CR&sub4; auf. Die Vorteile des Ermöglichens, daß sich ein Wörterbuch über mehr als einen Datensatz einer ungleichen unkomprimierten Länge erstreckt, in Form eines erhöhten Wirkungsgrades der Datenkomprimierung werden daher erhalten.
- Wenn es später erwünscht ist, selektiv zu dekomprimieren, angenommen den Datensatz CR&sub3;, kann dies durch das Beginnen der Dekomprimierung am Beginn des Datensatzes CR&sub1;, d.h. dem Beginn des Komprimierungsobjekts, das den Datensatz CR&sub3; enthält, und das Dekomprimieren der Daten bis zum Ende des Datensatzes CR&sub3; erreicht werden. Eine 'Löschunterbrechung' am Ende des Datensatzes CR&sub3; kann aufgrund des RÄUM-Codeworts am Ende des Datensatzes CR&sub3; erhalten werden, d.h. ohne in den Beginn des Datensatzes CR&sub4; überzulaufen.
- Folglich ermöglicht das Vorsehen von RÄUM-Codeworten, die zugreifbar durch das Format zwischen 'Zugriffspunkten' (RÜCKSETZ-Codeworten, die durch das Format zugreifbar sind) eingestreut sind, eine selektive Dekomprimierung von Datensegmenten, die kleiner als die Datenmenge sind, die verwendet ist, um während einer Datenkomprimierung ein Wörterbuch aufzubauen. Die RÄUM-Codeworte am Ende der Datensätze sind zugreifbar, da die komprimierten Bytezahlen für jeden Datensatz in der Blockzugriffstabelle gespeichert sind.
- Bei dem Format kann der Beginn eines Komprimierungsobjekts, das einen 'Zugriffspunkt' bildet, d.h. einen Punkt, an dem das Laufwerk eine Dekomprimierungsoperation beginnen kann, auf eine von mehreren Arten bemerkt werden. Zugriffspunkte können explizit in der Blockzugriffstabelle jeder Gruppe notiert sein. Alternativ kann das Vorliegen eines Zugriffspunkts durch einen anderen Eintrag in der Blockzugriffstabelle impliziert sein, beispielsweise kann das pure Vorliegen eines Algorithmusnummer-Eintrags einen Zugriffspunkt am Beginn des ersten neuen Datensatzes in dieser Gruppe implizieren. Alternativ kann ein Bit in der Algorithmusnummer reserviert sein, um anzuzeigen, daß ein neues Wörterbuch am Beginn des ersten neuen Datensatzes in dieser Gruppe beginnt.
- Wenn Datensätze in Entitäten organisiert sind und Entitäten in Gruppen organisiert sind, wie bezugnehmend auf die Fig. 5 bis 7 beschrieben wurde, kann ein Komprimierungsobjekt mehr als eine Entität einschließen, wie in Fig. 10 dargestellt ist, um den Vorteil des gemeinsamen Benutzens eines Wörterbuchs über Entitäten zu erhalten, die relativ kleine Datenmengen enthalten.
- Fig. 10 zeigt drei Gruppen fester Größe G&sub1;, G&sub2;, G&sub3; von komprimierten Daten. Die Gruppe G&sub1; enthält den vollständigen Datensatz CR&sub1; und den ersten Teil des nächsten Datensatzes CR&sub2;. Der Datensatz CR&sub1; ist der einzige Datensatz in der Entität E&sub1;. Die Gruppe G&sub2; enthält den mittleren Teil des Datensatzes CR&sub2;. Die Gruppe G&sub3; enthält den Endteil des Datensatzes CR&sub2; und enthält ferner Datensätze CR&sub3; usw.. Die Entität E&sub2; enthält einen einzelnen, relativ langen Datensatz CR&sub2;.
- Während der Komprimierung wird das Wörterbuch (mit R bezeichnet) am Beginn der Gruppe G&sub1; rückgesetzt, da jedoch der Datensatz CR&sub1; relativ klein ist, setzt sich das Komprimierungsobjekt über den Datensatz CR&sub1; und die Entität E&sub1; hinaus fort und schließt den Datensatz CR&sub2; und die Entität E&sub2; ein. Ein Komprimierungsobjekt endet an dem Ende des Datensatzes CR&sub2; und ein Neues beginnt am Beginn des Datensatzes CR&sub3;.
- Eine weitere Möglichkeit ist, daß das Vorliegen einer Nicht-Null-Algorithmusnummer eines Entitätanfangsblocks den Beginn eines neuen Wörterbuchs anzeigt, während andernfalls der Algorithmusnummeranfangsblock-Eintrag einen vorbestimmten Wert, beispielsweise Null, annimmt.
- Das Vorliegen eines RÄUM-Codeworts am Ende jeder Entität, die wegen dem Schreiben der komprimierten Bytezahl der Entität in der Blockzugriffstabelle zugreifbar ist, ermöglicht eine selektive Dekomprimierung von Datensätzen auf einer Pro-Entität-Basis. Wie in Fig. 10 gezeigt ist, könnte beispielsweise der Inhalt der Entität E&sub2; (der bei diesem Beispiel zufällig ein einzelner Datensatz CR&sub2; ist) ohne ein Erhalten von Daten von dem Beginn des Datensatzes CR&sub3; dekomprimiert werden. Jedoch muß die Dekomprimierung ausgehend von dem RÜCKSETZ-Codewort am Beginn der Entität E&sub1; beginnen, welcher der naheste vorherige Wörterbuch-Startpunkt ist, der in dem Bandformat zugreifbar ist. Es ist ferner möglich, Daten unter Verwendung von Informationen in dem Entitätanfangsblock auf einer Pro-Datensatz-Basis zu dekomprimieren, wie bezugnehmend auf die Fig. 20A und 20B beschrieben wird.
- Wenn jeder Datensatz in einer Entität einen Endblock (wie vorher bezugnehmend auf Fig. 5A erwähnt wurde) aufweist, der die komprimierte Bytezahl des Datensatzes enthält, und RÄUM-Codeworte am Ende jedes Datensatzes existieren, kann dieses Merkmal verwendet werden, um eine Dekomprimierung auf einer Pro-Datensatz-Basis zu erreichen.
- Es wäre möglich, daß ein ganzes Band derart beschrieben wird, daß jeder komprimierte Datensatz seine eigene Entität hätte. Dies würde den Zugriff auf Datensätze für eine selektive Dekomprimierung verbessern, würde jedoch den zusätzlichen Aufwand eines Acht-Byte-Anfangsblocks pro Datensatz und eines Vier-Byte-Indexeintrags pro Datensatz einschließen. Ferner wären dann mehrere Datensatzübertragungen langsamer, da eine Prozessor-Eingriffnahme erforderlich ist, um (zumindest) über die Anfangsblöcke jeder Entität zu springen.
- Es sollte offensichtlich sein, daß der DC-Chip RÜCKSETZ- Codeworte auf eine Algorithmus-abhängige Art und Weise in den Datenstrom einfügt - selbst in der Mitte von Datensätzen. Die obige Beschreibung bezieht sich auf die RÜCKSETZ- Codeworte, die durch das Bandformat erzwungen, erkannt und verwendet werden.
- Zur Klarstellung ist zu sagen, daß in den Fig. 5 bis 10 die Entitäten und die Komprimierungsobjekte nicht die Indizes beliebiger relevanter Gruppen einschließen.
- Ein Bandformat für eine Schraubenlinien-Abtastungs-Implementierung der vorliegenden Erfindung wird nun beschrieben.
- Das Speicherverfahren und die -Vorrichtung, die nachfolgend hierin beschrieben werden, verwenden eine Schraubenlinien- Abtastungstechnik zum Speichern von Daten in einem Format, das ähnlich dem ist, das zur Speicherung von PCM-Audiodaten gemäß dem DAT Conference Standard (März 1988, Electronic Industries Association of Japan, Tokio, Japan) verwendet wird. Das vorliegende Verfahren und die Vorrichtung sind jedoch angepaßt, um Computerdaten und nicht digitalisierte Audiomformationen zu speichern.
- Fig. 11 zeigt den elementaren Entwurf eines Schraubenlinien-Abtastungs-Bandgeräts 11, bei dem ein Band 10 von einer Bandkassette 17 in einem vorbestimmten Winkel über eine Rotationskopf-Trommel 12 mit einem Krümmungswinkel von 90º läuft. Im Betrieb wird das Band 10 durch die Drehung einer Bandantriebsrolle 15, gegen die das Band mittels einer Klemmrolle 16 gedrückt ist, in der Richtung, die durch einen Pfeil T angezeigt ist, von einer Zuführungsrolle 13 zu einer Aufwickelrolle 14 bewegt; zur gleichen Zeit wird die Kopftrommel in dem Sinn, der durch einen Pfeil R angezeigt ist, gedreht. Die Kopftrommel 12 häust zwei Lese/Schreib-Köpfe HA, HB, die winkelmäßig um 180º beabstandet sind. Auf eine bekannte Art und Weise sind diese Köpfe HA, HB angeordnet, um sich überlappende, schräge Spuren 20 bzw. 21 über das Band 10 zu schreiben, wie in Fig. 12 gezeigt ist. Die Spur, die mittels des Kopfs HA geschrieben wird, besitzt einen positiven Azimuth, während die, die mittels des Kopfs HB geschrieben wird, einen negativen Azimuth besitzt. Jedes Paar von Spuren eines positiven und eines negativen Azimuths 20, 21 bildet einen Rahmen.
- Das elementare Format jeder Spur, wie es angeordnet ist, um durch die vorliegende Vorrichtung beschrieben zu werden, ist in Fig. 12 dargestellt. Jede Spur weist zwei Randbereiche 22, zwei Unterbereiche 23, zwei ATF-Bereiche 24 (ATF = automatic track following = automatische Spurverfolgung) und einen Hauptbereich 25 auf. Die ATF-Bereiche 24 liefern Signale, die es ermöglichen, daß die Köpfe HA, HB den Spuren auf eine bekannte Art und Weise genau folgen. Der Hauptbereich 25 ist primär verwendet, um die Daten, die der Vorrichtung geliefert werden (Benutzerdaten) zu speichern, obwohl bestimmte Hilfsinformationen ebenfalls in diesem Bereich gespeichert werden; die Teilbereiche 23 sind primär verwendet, um weitere Hilfsinformationen zu speichern. Die Posten der Hilfsinformationen, die in den Haupt- und Teilbereichen gespeichert sind, sind als Untercodes bekannt und beziehen sich beispielsweise auf die logische Organisation der Benutzerdaten, deren Abbildung auf das Band, bestimmte Aufzeichnungsparameter (beispielsweise Formatidentität, Bandparameter usw.) und die Bandbenutzungsgeschichte.
- Eine detailliertere Beschreibung des Hauptbereichs 25 und der Teilbereiche 23 wird nun durchgeführt, einschließlich Einzelheiten bezüglich der Blockgrößen, die mit dem vorher genannten DAT Conference Standard kompatibel sind.
- Das Datenformat des Hauptbereichs 25 einer Spur ist in Fig. 13 dargestellt. Der Hauptbereich ist aus 130 Blöcken zusammengesetzt, die jeweils 36 Byte lang sind. Die ersten zwei Blöcke 26 sind Vorspanne, die Zeitgebungs-Datenmuster enthalten, um eine zeitliche Synchronisation bei der Wiedergabe zu erleichtern. Die verbleibenden 128 Blöcke 27 bilden den 'Hauptdatenbereich'. Jeder Block 27 des Hauptdatenbereichs weist eine 'Haupt-ID'-Region 28 (ID = identity Identität) von vier Byte und eine 'Hauptdaten'-Region 29 von 32 Byte auf, wobei die Zusammensetzungen derselben in dem unteren Teil von Fig. 13 gezeigt sind.
- Die Haupt-ID-Region 28 ist aus einem Sync-Byte (Synchronisations-Byte), zwei Informations-enthaltenden Bytes W1, W2 und einem Paritätsbyte zusammengesetzt. Das Byte W2 ist verwendet, um Informationen bezüglich dem Block als ein Ganzes (Typ und Adresse) zu speichern, während das Byte W1 verwendet ist, um Untercodes zu speichern.
- Die Hauptdatenregion 29 jedes Blocks 27 besteht aus 32 Bytes, die im allgemeinen durch Benutzerdaten und/oder eine Benutzerdaten-Parität gebildet sind. Es ist jedoch auch möglich, Untercodes in der Hauptdatenregion zu speichern, wenn es erwünscht ist.
- Das Datenformat jedes Unterbereichs 23 einer Spur ist in Fig. 14 dargestellt. Der Unterbereich besteht aus elf Blöcken, die jeweils 36 Byte lang sind. Die ersten zwei Blöcke 30 sind Vorspanne, während der letzte Block 31 ein Nachspann ist. Die verbleibenden acht Blöcke 32 bilden den "Unterdatenbereich". Jeder Block 32 weist eine 'Unter-ID'- Region 33 von vier Byte und eine 'Unterdaten'-Region 34 von 32 Byte auf, wobei die Zusammensetzungen derselben in dem unteren Teil von Fig. 14 gezeigt sind.
- Die Unter-ID-Region 33 besteht aus einem Sync-Byte, zwei Informations-enthaltenden Bytes SW1, SW2 und einem Paritätsbyte. Das Byte SW2 ist verwendet, um Informationen zu speichern, die sich auf den Block als ein Ganzes (Typ und Adresse) und die Anordnung der Unterdatenregion 34 beziehen. Das Byte SWL ist zum Speichern von Untercodes verwendet.
- Die Unterdatenregion 34 jedes Blockes 32 besteht aus 32 Bytes, die in vier Acht-Byte-"Paketen" 35 angeordnet sind. Diese Pakete 35 sind zum Speichern von Untercodes verwendet, wobei die Typen der gespeicherten Untercodes durch eine Paket-Typ-Bezeichnung angezeigt sind, die das erste halbe Byte jedes Pakets besetzt. Das vierte Paket 35 jedes geraden Blocks kann auf Null gesetzt sein oder ist andernfalls das gleiche wie das dritte Paket, während das vierte Paket jedes ungeraden Blocks verwendet ist, um Paritäts-Überprüfungsdaten für die ersten drei Pakete sowohl dieses Blocks als auch des vorhergehenden Blocks zu speichern.
- Kurz gesagt sind Benutzerdaten in den Hauptdatenregionen 29 der Hauptdatenbereichs-Blöcke 27 jeder Spur gespeichert, während Untercodes sowohl in den Unter-ID- und Unterdaten- Regionen 33, 34 der Unterdatenbereichs-Blöcke 32 als auch in den Haupt-ID- und den Hauptdaten-Regionen 28, 29 der Hauptdatenbereichs-Blöcke 27 gespeichert sein können.
- Zu Zwecken der vorliegenden Erfindung sind die interessierenden Untercodes ein Bereichs-ID-Untercode, der verwendet ist, um den Bandbereich zu kennzeichnen, zu dem spezielle Spuren gehören, und eine Anzahl von Untercodes, die verwendet sind, um Zahlen von Datensätzen und Trennungsmarken zu speichern. Der Bereichs-ID-Untercode ist ein Vier-Bit-Code, der an drei Positionen gespeichert ist. Erstens ist er in den dritten und fünften Paketen 35 der Unterdaten-Region 34 jedes Blocks in den Unterdaten-Bereichen einer Spur gespeichert. Zweitens ist er in dem Byte SWL der Unter-ID-Region 33 jedes geraden Unterdatenbereichs-Blocks 32 in einer Spur, beginnend mit dem ersten Block, gespeichert. Die Bandbereiche, die durch diesen Untercode gekennzeichnet sind, werden später bezugnehmend auf Fig. 15 beschrieben.
- Die Untercodes, die verwendet sind, um Datensatz- und Trennungsmarken-Zahlen zu speichern, sind in den ersten zwei Paketen 35 der Unterdaten-Region 34 jedes Blocks in den Unterdaten-Bereichen jeder Spur in dem Datenbereich des Bands gespeichert (siehe spätere Beschreibung bezugnehmend auf Fig. 15). Diese Zahlen sind kumulative Zahlen, die die gleichen sind, wie die Zahlen in der Gruppeninformationstabelle, wie sie vorher beschrieben wurde. Diese Zahlen werden verwendet, um das Band schnell abzusuchen, und sind, um dieses Verfahren zu erleichtern, über einen Satz von Rahmen, der eine Gruppe bildet, konstant, wobei die Zahlen, die in den Spuren einer Gruppe von Rahmen aufgezeichnet sind, die Zahlen sind, die am Ende der Gruppe anwendbar sind.
- Die allgemeine Organisation von Rahmen entlang des Bands gemäß der Implementierung durch das vorliegende Speicher-Verfahren und die -Vorrichtung wird als nächstes betrachtet. Folglich ist bezugnehmend auf Fig. 15 zu sehen, daß das Band in drei Hauptbereiche organisiert ist, nämlich einen Einführungsbereich 36, einen Datenbereich 37 und einen Datenende- Bereich 38 (EOD-Bereich). Die Enden des Bands werden als BOM (Beginn des Mediums; BOM = beginning of media) und EOM (Ende des Mediums; EOM = end of media) bezeichnet. Benutzerdaten sind in den Rahmen des Datenbereichs 37 aufgezeichnet. Der Einführungsbereich 36 weist einen Bereich zwischen einer Aufzeichnungsbeginn-Marke (BOR-Marke) und dem Datenbereich 37 auf, in dem Systeminformationen gespeichert sind. Der Bereichs-ID-Untercode ermöglicht es, daß der Systembereich, der Datenbereich 37 und der EOD-Bereich 38 voneinander unterschieden werden.
- Die Rahmen 48 des Datenbereichs sind in Gruppen 39 jeweils einer festen Anzahl von Rahmen angeordnet (beispielsweise 22); optional sind diese Gruppen durch einen oder mehrere Leerlauf-Rahmen (Amble Frames) eines vorbestimmten Inhalts getrennt. Hinsichtlich der Organisation der Benutzerdaten- Datensätze entsprechen diese Gruppen 39 der Gruppe 3, die bezugnehmend auf Fig. 1(c) beschrieben wurde. Folglich weist die Plazierung der Benutzerdaten in derartige Gruppen 39 keine Beziehung zu der logischen Segmentierung der Benutzerdaten auf, wobei Informationen, die sich auf diese Segmentierung (Datensatzmarken, Trennungsmarken) beziehen, in einem Index 40 gespeichert sind, der die Benutzerdaten in einer Gruppe abschließt (der Index besetzt tatsächlich Benutzerdatenraum in der Gruppe). Es sei bemerkt, daß, obwohl der Index in Fig. 15 als den letzten Abschnitt des letzten Rahmens der Gruppe besetzend gezeigt ist, dies nur bezüglich der Anordnung der Daten vor einer Byte-Verschachtelungsoperation korrekt ist, die normalerweise bewirkt wird, bevor Daten auf einem Band aufgezeichnet werden; jedoch kann zu dem vorliegenden Zweck die Verschachtelungsoperation außer Acht gelassen werden.
- In der Praxis sind die Informationen in dem Index physikalisch in den Hauptdatenbereichen der Spuren in der Gruppe verstreut.
- Der Inhalt des Index 4 ist in Fig. 2 gezeigt, wobei, wie vorher beschrieben wurde, der Index zwei Hauptdatenstrukturen aufweist, nämlich eine Gruppeninformationstabelle und eine Blockzugriffstabelle. Die Gruppeninformationstabelle ist an einer festen Position am Ende der Gruppe gespeichert und weist unabhängig vom Inhalt der Gruppe die gleiche Größe auf. Im Gegensatz dazu variiert die Größe der Blockzugriffstabelle abhängig vom Inhalt der Gruppe und erstreckt sich von der Gruppeninformationstabelle rückwärts in den Rest des Benutzerdatenbereichs der Rahmen der Gruppe. Einträge werden in der Blockzugriffstabelle von der Gruppeninformationstabelle rückwärts zu der Grenze mit den tatsächlichen Benutzerdaten oder dem 'Füllzeichen' ('pad') durchgeführt.
- Ferner ist in Fig. 15 der Inhalt eines Unterdatenbereich- Blocks 32 einer Spur in einer Datenbereichsgruppe 39 gezeigt. Wie vorher bemerkt wurde, enthalten die ersten zwei Pakete eine Trennmarkenzahl, das zweite Paket 35 enthält ferner Datensatzzahlen RC (wie oben definiert wurde), und das dritte Paket 35 enthält die Bereichs-ID und eine absolute Rahmenzahl AFC (AFC = absolute frame count). Für alle Spuren in einer Gruppe sind die Zahlen FMC und RC, die in den Unterdatenbereich-Blöcken gehalten sind, die gleichen wie die, die in der Gruppeninformationstabelle 41 des Gruppenindex 40 gehalten sind.
- Fig. 16 ist ein Blockdiagramm der Speichervorrichtung zum Komprimieren und Aufzeichnen von Benutzerdaten gemäß dem oben beschriebenen Bandformat. Die Vorrichtung weist das Bandgerät 11 auf, das bereits teilweise bezugnehmend auf Fig. 11 beschrieben wurde. Zusätzlich zu dem Bandgerät weist die Vorrichtung folgende Merkmale auf: eine Schnittstelleneinheit 50, um eine Schnittstelle der Vorrichtung mit einem Hauptcomputer (nicht gezeigt) über einen Bus 55 zu bilden; einen Gruppenprozessor 51, der einen Datenkomprimierungsprozessor (DCP) und einen Rahmendatenprozessor 52 zum Verarbeiten von Benutzeraufzeichnungsdaten und Trennungsdaten in und aus den Hauptdatenbereich- und Teildatenbereich-Blöcken 27 und 32 aufweist; eine Signal-Organisierungsvorrichtung 53 zum Zusammensetzen/Zerlegen der Signale zum Schreiben/Lesen einer Spur und zum geeigneten Schalten der zwei Köpfe HA, HB; und eine Systemsteuerung 54 zum Steuern des Betriebs der Vorrichtung als Reaktion auf Befehle, die über die Schnittstelleneinheit 50 von einem Computer empfangen werden. Jede der Hauptkomponenteneinheiten der Vorrichtung wird nachfolgend weiter beschrieben.
- Zuerst wird die Struktur und die Operation des Datenkomprimierungsprozessors (DCP) oder der Datenkomprimierungsmaschine beschrieben.
- Wie in Fig. 17 zu sehen ist, ist das Herz der Maschine ein VLSI-Datenkomprimierungschip (DC-Chip), der auf den Daten, die demselben geliefert werden, sowohl eine Komprimierung als auch eine Dekomprimierung gemäß dem LZW-Algorithmus durchführen kann. Jedoch kann jeweils nur einer der zwei Prozesse (Komprimierung oder Dekomprimierung) zu einer Zeit durchgeführt werden. Zwei FIFO-Speicher (FIFO = first-in, first-out = zuerst hinein, zuerst heraus) sind an dem Eingang und dem Ausgang des DC-Chips positioniert, um die Rate des Datenflusses durch den Chip herauszuglätten. Die Datenrate durch den Chip ist nicht konstant, da einige Datenmuster mehr Taktzyklen pro Byte für den Prozess benötigen als andere Muster. Die augenblickliche Datenrate hängt von dem gegenwärtigen Komprimierungsverhältnis und der Frequenz von Wörterbucheintrags-Kollisionen ab, wobei dieselben beide von den gegenwärtigen Daten und der Gesamtsequenz von Daten seit dem letzten Wörterbuch-RÜCKSETZEN abhängen. Der dritte Abschnitt des Untersystems ist eine Bank von statischen RAM's, die einen externen Wörterbuchspeicher (EDM; EDM = external dictionary memory> bilden, der zur lokalen Speicherung der gegenwärtigen Wörterbucheinträge verwendet wird. Diese Einträge enthalten Zeichen, Codewort-Zeiger und Steuer-Flags.
- Fig. 18 zeigt ein Blockdiagramm der integrierten DC-Schaltung. Der DC-Chip ist in drei Blöcke geteilt; den Eingabe/Ausgabe-Wandler (IOC; IOC = input/output converter), den Komprimierungs- und Dekomprimierungs-Wandler (CDC; CDC = compression and decompression converter) und die Mikroprozessorschnittstelle (MPI; MPI = microprocessor interface).
- Der MPI-Abschnitt liefert Erleichterungen zum Steuern und Beobachten des DC-Chips. Er enthält sechs Steuerregister, acht Statusregister, zwei 20-Bit-Eingabe- und -Ausgabe-Bytezähler und eine programmierbare automatische Wörterbuchrücksetzschaltung. Auf die Steuer- und Status-Register wird durch einen Universal-8-Bit-Mikroprozessor-Schnittstellenbus zugegriffen. Die Steuerregister sind verwendet, um verschiedene Chipmerkmale freizugeben und zu sperren, und um den Chip in verschiedene Betriebsmodi zu setzen (Komprimierung, Dekomprimierung, Durchgang oder Überwachung). Die Statusregister greifen auf die 20-Bit-Zähler und verschiedene Status-Flags in dem Chip zu.
- Es wurde herausgefunden, daß die Komprimierungsverhältnisse durch ein ziemlich häufiges Rücksetzen des Wörterbuchs verbessert werden können. Dies gilt insbesondere, wenn der Datenstrom, der komprimiert wird, sehr wenig ähnliche Byte- Zeichenfolgen enthält. Häufige Wörterbuchrücksetzungen liefern zwei wichtige Vorteile. Erstens erzwingt das Rücksetzen des Wrterbuchs, daß die Codewort-L:nge auf neun Bit zurückkehrt. Zweitens können neue Wörterbucheinträge durchgeführt werden, die den vorliegenden Datenstrom wiederspiegeln (eine Form einer Anpassung). Der Schnittstellenabschnitt des DC- Chips enthält einen Schaltungsaufbau, der das Komprimierungsverhältnis dynamisch überwacht und das Wörterbuch automatisch rücksetzt, wenn es geeignet ist. Die meisten Datenkomprimierungs-Algorithmen werden ihre Ausgabe ausdehnen, wenn es wenig oder keine Redundanz in den Daten gibt.
- Der IOC-Abschnitt verwaltet das Verfahren der Umwandlung zwischen einem Bytestrom und einem Strom von Codeworten variabler Länge (in einem Bereich von 9 Bit bis 12 Bit). Zwei der acht reservierten Codeworte werden ausschließlich durch den IOC verwendet. Eines dieser Codeworte ist verwendet, um dem IOC zu sagen, daß die Länge der Codeworte um Eins inkrementiert werden muß. Folglich ist der Prozeß des Inkrementierens der Codewortgröße von dem CDC-Abschnitt entkoppelt -der IOC arbeitet als ein unabhängiger Pipeline-Prozeß, wodurch ermöglicht ist, daß der CDC eine Komprimierung oder eine Dekomprimierung durchführt, ohne durch den IOC verlangsamt zu sein.
- Das zweite reservierte Codewort, welches das RÄUM-Codewort (oder das 'Datensatzende'-Codewort (EOR-Codewort)) ist, alarmiert den IOC, daß das nächste Codewort das letzte ist, das zu dem gegenwärtigen Paket von Daten gehört, d.h., daß das RÄUM-Codewort tatsächlich das Vorletzte eines komprimierten Datensatzes ist. Aus dieser Information erlangt der IOC die Erkenntnis, seine Packungs-Routine abzuschließen und auf einer Bytegrenze zu beenden. Dieses Merkmal ermöglicht eine Komprimierung mehrerer Eingabe-Pakete in ein zusammenhängendes Ausgabe-Paket, während die Fähigkeit beibehalten wird, dieses Paket in seine die Bestandteile bildenden Pakete zu dekomprimieren. Der IOC ist ferner in der Lage, zu ermöglichen, daß Daten einfach vom Eingang zum Ausgang durchgeleitet werden, ohne dieselben zu ändern, und zu ermöglichen, daß Daten durchgeleitet werden, während das mögliche Komprimierungsverhältnis der Daten überwacht wird. Diese Merkmale können als eine weitere Ebene des Ausdehnungsschutzes verwendet werden.
- Der CDC-Abschnitt ist die Maschine, die die Transformation von unkomprimierten Daten in komprimierte Daten und umgekehrt durchführt. Dieser Abschnitt besteht aus Steuerungs-, Datenweg- und Speicher-Elementen, die für einen maximalen Datendurchsatz eingestellt sind. Der CDC steht über zwei Zwölf-Bit-Busse mit dem IOC in Verbindung. Während einer Komprimierung leitet der IOC die Eingabe-Bytes zu dem CDC- Abschnitt, wo dieselben in Codeworte transformiert werden. Diese Codeworte werden zu dem IOC gesendet, wo dieselben in Bytes gepackt werden und aus dem Chip gesendet werden. Umgekehrt wandelt der IOC den Eingabe-Bytestrom während einer Dekomprimierung in einen Strom von Codeworten um, leitet diese Codeworte zu dem CDC-Abschnitt, wo dieselben in einen Strom von Bytes transformiert werden, und sendet sie zu dem IOC. Der CDC-Abschnitt bildet ferner eine direkte Schnittstelle zu dem externen RAM, das verwendet ist, um die Wörterbucheinträge zu speichern.
- Der CDC verwendet zwei reservierte Codeworte. Das erste wird jedesmal verwendet, wenn ein Wörterbuchrücksetzen stattgefunden hat. Das Auftreten dieses Codeworts bewirkt zwei Aktionen: Der IOC kehrt zu dem Zustand zurück, in dem er Neun-Bit-Codeworte packt oder entpackt, wobei der CDC das gegenwärtige Wörterbuch rücksetzt und beginnt, ein neues zu erzeugen. Wörterbuchrücksetzungen werden über die Mikroprozessorsteuerung oder den automatischen Rücksetz-Schaltungsaufbau abgerufen. Das zweite reservierte Codewort wird jedesmal während einer Komprimierung erzeugt, wenn der CDC aus dem nutzbaren externen RAM läuft, während er versucht, einen neuen Wörterbucheintrag zu erzeugen. Dieses Ereignis tritt sehr selten auf, vorausgesetzt eines ausreichenden externen RAM's. Wenn jedoch die Speichermenge abnimmt, ist es wahrscheinlicher, daß der CDC zu viele Wörterbuch-Kollisionen antrifft und nicht in der Lage sein wird, neue Wörterbucheinträge zu erzeugen. Mit der Reduzierung des externen Speichers und der unvermeidlichen Zunahme von Wörterbuch-Kollisionen werden der Datendurchsatz und das Komprimierungsverhalten leicht verschlechtert. Dieses Wörterbuch-Voll-Codewort wird ebenfalls während einer Dekomprimierung von dem CDC verwendet, um sicherzustellen, daß das Dekomprimierungsverf ahren das Erzeugen von Wörterbucheinträgen an dem gleichen Punkt beendet wie das Komprimierungsverfahren.
- Wie zurückkehrend zu Fig. 16 zu sehen ist, ist die Datenspeichervorrichtung angeordnet, um auf Befehle von einem Computer anzusprechen, um ein Band zu laden/entladen, einen Datensatz oder eine Trennmarkierung zu speichern, eine Komprimierung von Daten zu ermöglichen, ausgewählte Trennungsmarken oder Datensätze zu suchen und den nächsten Datensatz zurückzulesen.
- Die Schnittstelleneinheit 50 ist angeordnet, um die Befehle von dem Computer zu empfangen und die Übertragung der Datensätze und Trennungsmarken zwischen der Vorrichtung und dem Computer zu verwalten. Beim Empfangen eines Befehls von dem Computer leitet die Einheit 50 denselben zu der Systemsteuerung 54 weiter, die rechtzeitig eine Antwort über die Einheit 50 zu dem Computer zurücksenden wird, welche die Befolgung oder sonstiges des ursprünglichen Befehls anzeigt. Sobald die Vorrichtung durch die Systemsteuerung 54 als Reaktion auf einen Befehl von dem Computer eingestellt wurde, um Daten zu speichern oder zu lesen, steuert die Schnittstelleneinheit 50 ferner den Durchgang der Datensätze und Trennungsmarken zwischen dem Computer und dem Gruppenprozessor 51.
- Während einer Datenspeicherung ist der Gruppenprozessor 51 angeordnet, um die Benutzerdaten, wenn erforderlich, zu komprimieren und die Benutzerdaten, die demselben in der Form von Datensätzen geliefert werden, in Datenpakete zu organisieren, von denen jedes einer Gruppe von Daten entspricht. Der Prozessor 51 ist ferner angeordnet, um den Index für jede Gruppe und die entsprechenden Untercodes aufzubauen. Während eines Lesens bewirkt der Gruppenprozessor ein umgekehrtes Verfahren, das es ermöglicht, Datensätze und Trennungsmarken aus einer Gruppe, die von einem Band gelesen wird, vor einer Dekomprimierung zurückzugewinnen.
- Die Form des Gruppenprozessors 51 ist in Fig. 19 gezeigt. Im Herz des Gruppenprozessors 51 befindet sich ein Puffer 56, der angeordnet ist, um mehr als eine (beispielsweise zwei) Datengruppe zu halten. Die Zuweisung von Pufferraum zu ankommenden und abgehenden Daten wird durch eine Pufferraum- Verwaltungseinrichtung 57 gesteuert. Der Prozessor 51 kommuniziert mit der Schnittstelle 50 über eine erste Schnittstellen-Verwaltungseinrichtung 58 und mit dem Rahmendatenprozessor 52 über eine zweite Schnittstellen-Verwaltungseinrichtung 59. Die Gesamtsteuerung des Gruppierungsverfahrens wird durch eine Gruppierungs-Verwaltungseinrichtung 60 bewirkt, die ferner während der Aufzeichnung (Funktionsblock 61) die Gruppenindizes und dazugehörige Codes erzeugt und diese Indizes und Untercodes während eines Lesens interpretiert (Funktionsblock 62). Die Gruppierungs-Verwaltungseinrichtung 60 ist angeordnet, um Koordinationssignale mit der Systemsteuerung 54 auszutauschen.
- Der DC-Prozessor DCP ist wirksam, um Daten zur Speicherung auf einem Band zu komprimieren oder Daten, die von einem Hauptcomputer gelesen werden sollen, zu dekomprimieren. Es gibt Verbindungen zwischen dem DC-Prozessor DCP und der Schnittstellen-Verwaltungseinrichtung 58, dem Puffer 56, der Pufferraum-Verwaltungseinrichtung 57 und der Gruppierungs- Verwaltungseinrichtung 60 für den Austausch von Steuersignalen.
- Die Gruppierungs-Verwaltungseinrichtung 60 weist ferner eine Entität-Verwaltungseinrichtung (EM; EM = entity manager), die komprimierte Daten in Entitäten organisiert und Kopfabschnitte für die Entitäten erzeugt. Die Gruppierungs-Verwaltungseinrichtung 60 und die Pufferraum-Verwaltungseinrichtung 57 sind Steuerkomponenten, wobei Daten zum Schreiben auf ein Band dieselben nicht durchlaufen, sondern vielmehr direkt von dem Puffer 56 zu der Schnittstellen-Verwaltungseinrichtung 59 geleitet werden.
- Wenn der Hauptcomputer während einer Aufzeichnung bereit ist, einen Datensatz durchzulassen, fragt die Schnittstelle die Pufferraum-Verwaltungseinrichtung 57 (über die Schnittstellen-Verwaltungseinrichtung 58), ob der Prozessor 51 bereit ist, den Datensatz zu empfangen. Die Pufferraum- Verwaltungseinrichtung 57 kann anfänglich eine 'Warte'-Antwort senden, ermöglicht jedoch zur rechten Zeit die Übertragung des Datensatzes von dem Hauptcomputer zu dem Puffer 56.
- Wenn die Daten komprimiert werden sollen (gemäß den Steuersignalen von der Systemsteuerung 54), ersetzt der DC-Prozessor DCP einen Betrag der Daten in dem Datensatz gemäß einem Datenkomprimierungsalgorithmus, wie er vorher beschrieben wurde, durch Codeworte.
- Die Einfügung von zugreifbaren RÜCKSETZ- und RÄUM-Codeworten an speziellen Punkten in dem Datenstrom kann in den DC-Prozessor DCP programmiert werden, wenn diese auf eine einfache Art und Weise spezifiziert werden können, beispielsweise ein Rücksetzen nach jedem Datensatz. Alternativ oder ebensogut kann die Einfügung von RÜCKSETZ- und RÄUM-Codeworten gemäß dem Format durch die Systemsteuerung 54 gesteuert werden, beispielsweise können RÄUM-Codeworte automatisch an dem Ende jedes Datensatzes eingefügt werden, während RÜCKSETZ-Codeworte gemäß den Signalen von der Systemsteuerung 54 eingefügt werden.
- Fig. 19 kann als ein "Inline"-System bezeichnet werden, d.h. ein solches, bei dem der DC-Prozessor DCP zwischen einer Schnittstellen-Verwaltungseinrichtung 58 und einem Puffer 56 plaziert ist. Während einer Komprimierung fließen Daten von der Schnittstellen-Verwaltungseinrichtung 58 durch den DC- Prozessor in den Puffer 56. Während einer Dekomprimierung fließen Daten von dem Puffer 56 durch den DC-Prozessor zu der Schnittstellen-Verwaltungseinrichtung 56. Es gibt keine wesentliche Pufferung zwischen der Schnittstellen-Verwaltungseinrichtung 56 und dem DC-Prozessor DCP.
- Aus einer Systemperspektive ist es zweckmäßig, während einer Komprimierung einen "geräumten" Zustand zu besitzen. X Bytes hinein => Y Bytes heraus.
- Es ist genauso zweckmäßig, während einer Dekomprimierung den gleichen geräumten Zustand zu besitzen. Y Bytes hinein => x Bytes heraus. Die Grenze, an der diese auftreten können und sollten ist die gleiche wie während einer Komprimierung. Durch das Ausgeben eines speziellen RÄUM-Codeworts während einer Komprimierung und eines Räumens, wann immer dasselbe während einer Dekomprimierung erfaßt wird, erhält ein Komprimierungs/Dekomprimierungs-System mehrere Vorteile.
- Ein Schreiben in einen Puffer ohne ein DC-System würde das Initialisieren und Abschließen einer Übertragung von N Bytes von der Schnittstellenverwaltungseinrichtung in den Puffer einschließen. Mit einer Datenkomprimierung werden dies zwei Übertragungen, N Bytes zu dem DC-Prozessor und M Bytes von demselben zu dem Puffer. Wenn die Übertragung abgeschlossen ist, ist es erwünscht, daß alle Daten sich entsprechend der Übertragung in dem Puffer befinden. Daher sollte das DC-System geräumt werden.
- Ein Lesen von dem Puffer würde das Initialisieren einer Übertragung von N Bytes von dem Puffer zu der Schnittstellen-Verwaltungseinrichtung einschließen. Bei einem DC-System wird dies zu einer Übertragung von M Bytes von dem Puffer 56 zu dem DC-Prozessor und einer Übertragung von demselben zu der Schnittstellen-Verwaltungseinrichtunq 58. Wenn die Übertragung abgeschlossen ist, ist es erneut erwünscht, daß der DC-Prozessor geräumt wird.
- Typischerweise überträgt ein Hauptcomputer Datensätze einzeln, obwohl Übertragungen mehrerer Datensätze für kürzere Datensätze sinnvoll ist.
- Bei der vorliegenden Erfindung gibt es eine Trennung der RÜCKSETZ- und der RÄUM-Funktionen. Es sei bemerkt, daß keine der obigen irgendetwas über das Rücksetzen des Wörterbuchs impliziert. Die RÄUM-Funktion ist wirklich von der des RÜCKSETZENS getrennt. Indem dieselben getrennt sind, können die Grenzen zwischen Übertragungen in die Daten eingefügt werden, ohne das Wörterbuch zu beeinflussen und die folgenden Wirkungen auf die Komprimierungs-Verhältnisse und den -Durchsatz aufzuweisen. Das DC-System kann geräumt werden, bevor ein Wörterbuch vollständig aufgebaut ist, derart, daß selbst Kurz-Datensatz-Systeme die Vorteile eines vollen Wörterbuchs aufweisen können. Wenn ein "gutes" Wörterbuch erzeugt wird, das sehr gute Komprimierungsverhältnisse ergibt, muß es während nachfolgender Datensätze nicht neu erzeugt werden. Wenn RÜCKSETZEN mit RÄUMEN verknüpft ist, sind diese Vorteile verloren.
- Die Gruppierungs-Verwaltungseinrichtung 60 ist mit der Pufferraum-Verwaltungseinrichtung 57 verbunden und teilt der Pufferraum-Verwaltungseinrichtung 57 mit, wieviel weitere Daten die Gruppe aufnehmen kann, bevor dieselbe in den Indexbereich der Gruppe läuft. Die Pufferraum-Verwaltungseinrichtung 57 benachrichtigt die Gruppierungs-Verwaltungseinrichtung 60, wann immer die maximale Anzahl von Bytes in die gegenwärtige Gruppe übertragen wurde oder das letzte Byte von dem Hauptcomputer empfangen wurde.
- Wenn eine Übertragung von dem Hauptcomputer nicht ganz in eine Gruppe passen kann, wird dieselbe als die Gruppengrenze "überbrückend" bezeichnet. Der erste Teil der Übertragung läuft in eine Gruppe und der Rest in nachfolgende Gruppen. Die Pufferraum-Verwaltungseinrichtung 57 benachrichtigt die Gruppierungs-Verwaltungseinrichtung 60, wenn der Hauptcomputer versucht, mehr Daten zu liefern, als in die gegenwärtige Gruppe, die erzeugt wird, passen werden. Wenn keine Überbrückung auftritt, wird der Gruppenindex aktualisiert, und die Gruppierungs-Verwaltungseinrichtung 60 wartet auf einen weiteren Schreibbefehl. Wenn eine Überbrückung auftritt, wird der Index der gegenwärtigen Gruppe aktualisiert, und diese Gruppe ist für das Schreiben auf ein Band verfügbar. Die nächste Gruppe wird begonnen, wobei die Daten von dem Hauptcomputer direkt in den Beginn dieser neuen Gruppe bewegt werden.
- Der Datensatz wird zu einer Pufferposition übertragen, die der schließlichen Positionierung der Datensatz-Daten in der Gruppe entspricht, von welcher ein Teil gebildet werden soll. Informationen über die Größe des Datensatzes werden zu der Gruppierungs-Verwaltungseinrichtung 60 geleitet. Wenn der Hauptcomputer eine Trennungsanzeige sendet, wird diese ebenfalls zu der Gruppierungs-Verwaltungseinrichtung 60 geleitet. Die Gruppierungs-Verwaltungseinrichtung verfolgt die Trennungsmarke und die Datensatzzahlen ab BOR und verwendet diese Informationen beim Bilden der Index- und Trennungszahl- und Datensatzzahl-Untercodes einer Gruppe. Der Index wird an einer Position in dem Puffer erzeugt, die zu seiner Position am Ende einer Gruppe paßt.
- Parallel erzeugt die Entität-Verwaltungseinrichtung EM einen Entität-Anfangsabschnitt für die gegenwärtige Entität, welche die komprimierten Datensatz-Daten enthalten wird. Der Anfangsabschnitt ist nicht komprimiert. Die Entität-Verwaltungseinrichtung EM ist für das Sicherstellen verantwortlich, daß die Regeln, die die Entitätbildung steuern, beachtet werden. Diese sind:
- a) Beginn einer neuen Entität:
- i) sobald wie möglich nach dem Beginn einer Gruppe;
- ii) wenn sich die unkomprimierte Größe von Datensätzen, die von dem Hauptcomputer gesendet werden, ändert;
- iii) wenn sich der Komprimierungsalgorithmus ändert.
- (Unter Berücksichtigung von i) und iii) (siehe oben) erfordert der Bedarf nach einem Zugriffspunkt das Beginnen einer neuen Entität, wobei ein geeignetes Signal von der Gruppierungs-Verwaltungseinrichtung 60 zu dem Datenkomprimierungsprozessor DCP gesendet wird).
- b) Ende einer Entität:
- i) wenn ein unkomprimierter Datensatz gespeichert werden muß;
- ii) wenn eine Trennungsmarke gespeichert werden muß.
- Die Bildung jeder Entität löst einen BAT-Eintrag aus.
- Wenn eine Gruppe voll wird, stoppen die Prozesse der Datenkomprimierung und des Entität-Aufbaus, bis eine neue Gruppe initialisiert wird.
- Wenn ankommende Daten nicht komprimiert werden sollen, laufen die Daten unverändert durch den DC-Prozessor DCP, wobei die Entität-Verwaltungseinrichtung EM inaktiv ist. Unkomprimierte Datensätze werden direkt in Gruppen organisiert, ohne den Teil einer Entität zu bilden, wobei Informationen, die die Datensätze betreffen, in den Gruppenindex gesetzt werden. Unkomprimierte Datensätze besitzen keinen Anfangsabschnitt, der für dieselben erzeugt wurde.
- Sobald eine Gruppe (einschließlich ihres Indexes und ihrer Untercodes> zusammengesetzt wurde, wird dieselbe für eine Organisation in die Blöcke, die die Hauptdatenbereiche und die Unterdatenbereiche von zweiundzwanzig aufeinanderfolgenden Rahmen bilden, zu dem Rahmendatenprozessor 52 übertragen. Informationen über die Rahmen-ID befinden sich in dem Datenstrom. Es existiert ein durchgehender Strom von Daten zwischen dem Gruppenprozessor 52 zu einem kleinen Puffer in dem Rahmendatenprozessor 52, der in der Lage ist, drei Datenrahmen zu speichern.
- Wie vorher erwähnt wurde, kann es erwünscht sein, einen oder mehrere Leerlauf-Rahmen zwischen Gruppen von Rahmen, die auf dem Band aufgezeichnet sind, einzufügen. Dies kann durchgeführt werden, indem der Datenprozessor 52 angeordnet wird, um derartige Leerlauf-Rahmen entweder auf Befehl von dem Gruppenprozessor 51 oder automatisch am Ende einer Gruppe zu erzeugen, wenn der Prozessor 52 Kenntnis von der Gruppenstruktur besitzt.
- Durch das größenmäßige Dimensionieren des Puffers 56 derart, daß derselbe zwei Datengruppen halten kann, kann die allgemeine Operation des Prozessors 51 so einfach wie möglich gehalten werden, wobei eine Gruppe eingelesen wird, und eine Gruppe verarbeitet und ausgegeben wird. Während eines Schreibens wird eine Gruppe mit Daten von einem Hauptcomputer gebildet und eine wird auf das Band geschrieben.
- Wenn Daten von dem Band gelesen werden, ist der Gruppenprozessor 51 angeordnet, um Benutzerdaten und Untercodes auf einer Rahmen-um-Rahmen-Basis von dem Rahmendatenprozessor 52 zu empfangen, wobei die Daten derart in den Puffer 56 geschrieben werden, daß sie eine Gruppe aufbauen. Der Gruppenprozessor 51 kann dann auf den Gruppenindex zugreifen, um Informationen über die logische Organisation (Datensatz/Entität-Struktur, Trennungsmarken) der Benutzerdaten in der Gruppe und eine Anzeige dessen, ob die Daten komprimiert sind, zurückzugewinnen.
- Wenn die Daten unkomprimiert sind, oder die Daten komprimiert sind, jedoch für eine Software-Dekomprimierung in ihrer komprimierten Form zu dem Hauptcomputer zurückgelesen werden sollen, kann der Gruppenprozessor 51 einen abgerufenen Datensatz oder eine Trennungsmarke über die Schnittstelle 50 zu dem Hauptcomputer leiten, wobei in diesem Fall die Daten unverändert durch den DC-Prozessor DCP laufen. Die Entität-Anfangsabschnitte in komprimierten Daten werden mittels eines Nicht-DC-Laufwerks zur Verwendung durch einen Hauptcomputer zurück zu dem Hauptcomputer geleitet.
- Wenn die Daten komprimiert sind und dekomprimiert werden sollen, werden die Daten durch den DC-Prozessor DCP auf die Art und Weise dekomprimiert, die oben beschrieben wurde, bevor sie zu dem Hauptcomputer geleitet werden.
- Die Anfangsabschnitte jeder Entität werden von einem DC- Laufwerk benutzt, werden jedoch nicht zu dem DC-Prozessor DCP geleitet. Die Algorithmusnummer in dem Anfangsabschnitt wird auf eine Übereinstimmung mit dem Algorithmus, der durch den DC-Prozessor DCP verwendet wird, überprüft. Ferner wird die Anzahl der komprimierten Datensätze in der Entität aus dem Anfangsabschnitt erhalten, wodurch es möglich wird, daß ein Datensatz-Herunterzählen durchgeführt wird, während die Entitätdaten zu dem DC-Prozessor DCP geleitet werden.
- Um die Anordnung der Rahmendaten zurück in eine Datengruppe zu erleichtern, kann jeder Rahmen mit einer In-Gruppe-Sequenznummer markiert werden, wenn der Rahmen auf Band geschrieben wird. Diese In-Gruppen-Nummer kann als ein Untercode vorgesehen werden, der beispielsweise am Kopf der Hauptdatenregion des ersten Blocks in dem Hauptdatenbereich jeder Spur eines Rahmens enthalten ist. Der Untercode wird beim Lesen verwendet, um zu bestimmen, wo die dazugehörigen Rahmendaten in dem Puffer 56 plaziert sind, wenn sie zu dem Gruppenprozessor 51 geleitet werden.
- Der Rahmendatenprozessor 52 weist funktionell einen Hauptdatenbereich-Prozessor 65 (MDA-Prozessor; MDA = Main-Data- Area), einen Unterdatenbereich-Prozessor 66 (SDA-Prozessor; SDA Sub-Data-Area) und eine Untercodeeinheit 67 auf (in der Praxis können diese funktionellen Elemente durch einen einzelnen Mikroprozessor gebildet sein, der geeignete Prozesse ausführt).
- Die Untercodeeinheit 67 ist angeordnet, um Untercodes zu den Prozessoren 65 und 66 zu liefern, wie es während eines Schreibens erforderlich ist, und um Untercodes während eines Lesens von den Prozessoren 65, 66 zu empfangen und zu verteilen. Abhängig von ihrem Informationsinhalt können Untercodes von dem Gruppenprozessor 51 oder der Systemsteuerung 54 erzeugt/gefordert werden; die Trennungsmarkenzahl-Untercodes werden beispielsweise durch den Gruppenprozessor 51 bestimmt/verwendet, während die Bereichs-ID-Untercodes durch die Steuerung 54 bestimmt/verwendet werden. In dem Fall von nicht-veränderlichen Untercodes, beispielsweise bestimmten Schreibparametern, können die Untercodes permanent in der Einheit 67 gespeichert werden. Außerdem können alle Rahmenabhängigen Untercodes zweckmäßigerweise durch die Untercodeeinheit 67 selbst erzeugt werden.
- Der MDA-Prozessor 65 ist angeordnet, um einen Benutzerdatenrahmen zu einer Zeit zusammen mit allen relevanten Untercodes zu verarbeiten. Folglich empfängt der Prozessor 65 während einer Aufzeichnung einen Benutzerdatenrahmen von dem Gruppenprozessor 51 zusammen mit Untercodes von der Einheit 67. Beim Empfangen der Benutzerdaten verschachtelt der Prozessor 65 die Daten und berechnet Fehlerkorrekturcodes, bevor er die resultierenden Daten und Untercodes zusammensetzt, um die Hauptdatenbereich-Blöcke für die zwei Spuren, die einen Rahmen bilden, auszugeben. Tatsächlich kann vor dem Zusammensetzen der Benutzerdaten mit den Untercodes eine Verwürfelung (Umrechnung in Zufallszahlen) der Daten bewirkt werden, um eine folgerichtige HF-Hülle unabhängig von dem Dateninhalt eines Spursignals sicherzustellen.
- Während eines Lesens bewirkt der Prozessor 65 einen umgekehrten Prozeß auf den zwei Sätzen der Hauptdatenbereich- Blöcke, die zu dem gleichen Rahmen gehören. Wiederhergestellte, Fehler-korrigierte und entschachtelte Benutzerdaten werden zu dem Gruppenprozessor 51 geleitet und Untercodes werden herausgetrennt und mittels der Einheit 67 wie erforderlich zu dem Prozessor 51 oder der Systemsteuerung 54 verteilt.
- Der Betrieb des SDA-Prozessors 66 ist ähnlich dem des Prozessors 65 mit der Ausnahme, daß derselbe für Untercodes wirksam ist, die zu Unterdatenbereichen einer Spur gehören, wobei er diese Untercodes in die und von Unterdatenbereich- Blöcken zusammensetzt und zerlegt.
- Die Signal-Organisiervorrichtung 53 weist eine Formatier/Trenn-Einheit 70 auf, die während einer Aufzeichnung (eines Schreibens von Daten) angeordnet ist, um Hauptdatenbereich-Blöcke und Unterdatenbereich-Blöcke, die vom Rahmendatenprozessor 52 geliefert werden, zusammen mit ATF-Signalen von einer ATF-Schaltung 80 anzuordnen, um das Signal zu bilden, das auf jeder aufeinanderfolgenden Spur aufgezeichnet werden soll. Die notwendigen Vorspann- und Nachspann-Muster werden ebenfalls durch die Einheit 70 in die Spursignale eingefügt, wo es notwendig ist. Zeitgebungssignale zum Koordinieren des Betriebs der Einheit 70 mit einer Drehung der Köpfe HA, HB werden durch einen Zeitgebungsgenerator 71 geliefert, der mit der Ausgabe eines Pulsgenerators 81, der auf die Kopftrommeldrehung anspricht, gespeist wird. Die Spursignale, die auf einer Leitung 72 von der Einheit 70 ausgegeben werden, werden abwechselnd über einen Kopfschalter 73, jeweilige Kopftreiberverstärker 74 und Aufzeichnungs/Wiedergabe-Schalter 75, die in ihre Aufzeichnungsstellungen eingestellt sind, abwechselnd zu dem Kopf HA und dem Kopf HB geleitet. Der Kopfschalter 73 wird mittels geeignet zeitlich gesteuerter Signale von dem Zeitgebungsgenerator 71 betrieben.
- Während einer Wiedergabe (eines Lesens von Daten) werden die Spursignale, die abwechselnd durch die Köpfe HA und HB erzeugt werden, über die Aufzeichnungs/Wiedergabe-Schalter 75 (die nun in ihre Wiedergabestellungen eingestellt sind), jeweilige Leseverstärker 76, einen zweiten Kopfschalter 77 und eine Taktwiedergewinnungsschaltung 78 zu dem Eingang der Formatier/Trenn-Einheit 70 geleitet. Der Betrieb des Kopfschalters 77 wird auf die gleiche Weise gesteuert wie der des Kopfschalters 73. Die Einheit 70 dient nun dazu, die ATF-Signale herauszutrennen und dieselben zu der Schaltung 80 zu führen, ebenso wie die Hauptdatenbereich-Blcke und Unterdatenbereich-Blöcke zu dem Rahmendatenprozessor 52 zu leiten. Taktsignale werden ebenfalls von der Taktwiedergewinnungsschaltung 78 zu dem Prozessor 52 geleitet.
- Die Schalter 75 werden durch die Systemsteuerung 54 gesteuert.
- Das Bandgerät 11 weist vier Servoeinrichtungen auf, nämlich eine Antriebsrollen-Servoeinrichtung 82 zum Steuern der Drehung der Antriebsrolle 15, eine erste und eine zweite Rollen-Servoeinrichtung 83, 84 zum Steuern der Drehung der Rollen 14 bzw. 15 und eine Trommel-Servoeinrichtung 85 zum Steuern der Drehung der Kopftrommel 12. Jede Servoeinrichtung weist einen Motor M und einen Rotationsdetektor D auf, die beide mit dem Element gekoppelt sind, das durch die Servoeinrichtung gesteuert wird. Zu den Rollen-Servoeinrichtungen 83, 84 gehört eine Einrichtung 86 zum Erfassen des Medienbeginns (BOM) und des Medienendes (EOM); diese Einrichtung 86 kann beispielsweise auf einer Motorstromerfassung basieren, da der Motorstrom einer beliebigen Rolle, die angetrieben wird, um das Band auf zuwickeln (abhängig von der Richtung der Bandbewegung), beim Blockieren des Motors am BOM/EOM wesentlich zunehmen wird.
- Das Bandgerät 11 weist ferner die Schaltung 80 zur automatischen Spurverfolgung auf, um ATF-Signale zur Aufzeichnung auf dem Band während der Aufzeichnung von Daten zu erzeugen. Während eines Lesens, spricht die ATF-Schaltung 80 auf das ATF-Spursignal, das vom Band gelesen wird, an, um ein Einstellungssignal zu der Antriebsrollen-Servoeinrichtung 82 zu liefern, derart, daß die Köpfe HA, HB ordnungsgemäß mit den Spuren, die auf dem Band aufgezeichnet sind, ausgerichtet werden. Das Bandgerät 11 weist ferner den Pulsgenerator 81 zum Erzeugen von Zeitgebungspulsen, die mit der Drehung der Köpfe HA, HB synchronisiert sind, auf.
- Der Betrieb des Bandgeräts 11 wird durch eine Gerätesteuerung 87 gesteuert, die mit den Servoeinrichtungen 82 bis 85 und mit der BOM/EOM-Erfassungseinrichtung 86 verbunden ist, gesteuert. Die Steuerung 87 ist wirksam, um die Servoeinrichtungen zu veranlassen, das Band um eine beliebige erforderliche Entfernung weiterzubewegen (entweder mit einer normalen Geschwindigkeit oder mit einer hohen Geschwindigkeit). Diese Steuerung wird entweder durch Anregen der Servoeinrichtungen für ein Zeitintervall, das für die Bandgeschwindigkeitseinstellung geeignet ist, oder durch eine Rückkopplung der Bandverschiebungsinformationen von einem oder mehreren der Rotationsdetektoren D, die zu den Servoeinrichtungen gehören, bewirkt.
- Die Gerätesteuerung 87 wird selbst durch Steuersignale gesteuert, die von der Systemsteuerung 54 ausgegeben werden. Die Gerätesteuerung 87 ist angeordnet, um der Steuerung 54 Signale auszugeben, die anzeigen, daß BOM und EOM erreicht sind.
- Die Systemsteuerung 54 dient sowohl dazu, eine Wechselwirkung auf hoher Ebene zwischen dem Computer und der Speichervorrichtung zu verwalten, als auch dazu, das Funktionieren der anderen Einheiten der Speichervorrichtung beim Durchführen der elementaren Operationen von Laden/Schreiben/Komprimieren/Dekomprimieren/Suchen/Lesen/Entladen, die von dem Computer abgerufen werden, zu koordinieren. Gemäß dem letzten Gesichtspunkt dient die Steuerung 54 dazu, den Betrieb des Geräts 11 mit dem Datenverarbeitungsabschnitt der Vorrichtung zu koordinieren.
- Beim Steuern des Bandgeräts 11 kann die Systemsteuerung die Gerätesteuerung 87 auffordern, das Band mit der normalen Lese/Schreib-Geschwindigkeit (normal) zu bewegen, oder das Band mit einer hohen Geschwindigkeit vorwärts oder rückwärts zu bewegen, d.h. schnell vorwärts (F.FWD; F.FWD = Fast Forward) oder schnell zurück (F.RWD; F.RWD Fast Rewind). Die Gerätesteuerung 87 ist angeordnet, um das Antreffen von BOM oder EOM der Systemsteuerung 54 zurückzuberichten.
- Eine Operation, um einen Datensatz zur Dekomprimierung zu lokalisieren, wird nun bezugnehmend auf die Fig. 20A und 20B beschrieben.
- Wenn der Hauptcomputer einen Befehl erteilt, um einen Datensatz zu dekomprimieren, erzeugt die Steuerung 54 einen Suchschlüssel mit einem Wert, der gleich der Datensatzzahl des Datensatzes ist, der dekomprimiert werden soll. Die gegenwärtige Datensatzzahl ist in der Gruppierungs-Verwaltungseinrichtung 60 des Gruppenprozessors 51 gehalten. Als nächstes wird das Band mit einer hohen Geschwindigkeit (viele Male schneller als normal) weiterbewegt (oder wenn geeignet zurückgespult), während die Kopftrommel mit einer Geschwindigkeit gedreht wird, um die relative Geschwindigkeit der Köpfe HA, HB über das Band auf einem konstanten Wert zu halten; in diesem Modus ist es möglich, den Unterbereich von etwa einer Spur pro dreihundert zu lesen (Schritte 91a und 91b). Das schnelle Lesen von Spur-Unterbereichen ist eine bekannte Technik und wird daher nicht detailliert beschrieben.
- Eine schnelle Vorwärtssuche ist in Fig. 20A dargestellt und eine schnelle Rückwärtssuche ist in Fig. 20B dargestellt.
- Während einer schnellen Vorwärtssuche (Fig. 20A) wird für jeden Unterbereich, der aufeinanderfolgend gelesen wird, die Datensatzzahl, die in dem zweiten Paket jedes Unterdatenbereich-Blocks gehalten ist, durch die Steuerung 54 mit dem Suchschlüssel (Schritt 92a) verglichen. Wenn die Datensatzzahl kleiner als der Suchschlüssel ist, wird die Suche fortgesetzt; wenn die Datensatzzahl jedoch gleich oder größer als der Suchschlüssel ist, wird die schnelle Vorwärtssuche beendet und das Band wird um eine Entfernung zurückgespult, die im wesentlichen gleich der Entfernung zwischen einem schnellen Vorwärtslesen ist (Schritt 93). Dies stellt sicher, daß die Datensatzzahl, die in den Unterbereichen der Spur nun gegenüber der Kopftrommel gehalten ist, kleiner als der Suchschlüssel sein wird.
- Während einer schnellen Rückwärtssuche (Fig. 20B) wird für jeden Unterbereich, der aufeinanderfolgend gelesen wird, die Datensatzzahl, die in dem zweiten Paket jedes Unterdatenblocks gehalten ist, durch die Steuerung 54 mit dem Suchschlüssel verglichen (Schritt 92b). Wenn die Datensatzzahl größer als der Suchschlüssel ist, wird die Suche fortgesetzt; wenn die Datensatzzahl jedoch gleich oder kleiner als der Suchschlüssel ist, wird das schnelle Zurückspulen beendet.
- Als nächstes wird sowohl für die schnelle Vorwärts- als auch für die schnelle Rückwärts-Suche das Band mit seiner normalen Lesegeschwindigkeit weiterbewegt (Schritt 94). Jede aufeinanderfolgende Gruppe wird der Reihe nach von dem Band gelesen und temporär in dem Puffer 56 des Gruppenprozessors 51 gespeichert. Die Datensatzzahl, die in dem Index jeder Gruppe gehalten ist, wird mit dem Suchschlüssel verglichen (Schritt 95), bis die Zahl erstmals dem Suchschlüssel gleicht oder denselben überschreitet. An diesem Punkt wird das Lesen beendet, da der Datensatz, nach dem gesucht wird, in der Gruppe in dem Puffer 56, dessen Datensatzzahl gerade überprüft wurde, vorliegt. Wenn Einträge in die Blockzugriffstabelle auf einer Pro-Datensatz-Basis durchgeführt sind, wird die Blockzugriffstabelle des Index dieser Gruppe nun untersucht, um den interessierenden Datensatz zu identifizieren (Schritt 96). Die Adresse in dem Puffer des ersten Datensatzbytes wird berechnet (Schritt 97). Danach teilt der Gruppenprozessor 51 der Systemsteuerung mit, daß er die gesuchte Aufzeichnung gefunden hat und bereit ist, die nächste Datenaufzeichnung zu dekomprimieren und zu lesen; dies wird durch die Steuerung zu dem Hauptcomputer zurückberichtet (Schritt 98). Die Suchoperation ist nun beendet.
- Es ist selbstverständlich offensichtlich, daß andere Suchverfahren implementiert sein könnten.
- Um zu erfassen, wann die Grenzen des Datenbereichs des Bands während einer schnellen Suche überschritten wurden, wird, wann immer ein Unterbereich gelesen wird, der Bereichs-ID- Untercode durch die Systemsteuerung 54 überprüft. Wenn dieser Untercode anzeigt, daß die Suche den Datenbereich des Bands verlassen hat, wird die Bandrichtung umgekehrt und die Suche wiederaufgenommen, im allgemeinen mit einer geringeren Geschwindigkeit. Der Klarheit halber wurde diese Bereichs- ID-Überprüfung in den Fig. 20A und 20B weggelassen.
- Der nächste Schritt nachdem der interessierende Datensatz lokalisiert wurde, besteht darin, die Algorithmusnummer zu überprüfen, die anzeigt, welcher Algorithmus verwendet wurde, um die Daten in dem Datensatz zu komprimieren. Dies geschieht durch die überprüfung der Blockzugriffstabelle der relevanten Gruppe, wenn die Algorithmusnummer in dieser Tabelle gespeichert ist.
- Wenn die Algorithmusnummer dem Algorithmus entspricht, der durch den DC-Chip in dem Bandlaufwerk verwendet wird (oder einem der DC-Chips, wenn mehrere existieren), besteht der nächste Schritt darin, den Beginn des Komprimierungsobjekts, das den interessierenden Datensatz enthält, zu lokalisieren.
- Dies kann auf eine Vielzahl von Arten geschehen, abhängig von dem speziellen Aufzeichnungsformat.
- Sobald der Beginn des Komprimierungsobjekts, das den interessierenden Datensatz enthält, gefunden ist, beginnt eine Dekomprimierung ab diesem Punkt und setzt sich fort, bis das RÄUM-Codewort (oder EOR-Codewort) am Ende des Datensatzes erreicht ist. Der dekomprimierte Datensatz kann dann zu dem Hauptcomputer geleitet werden. Das Vorliegen eines RÄUM-Codeworts am Ende des Datensatzes bedeutet, daß der Datensatz völlig dekomprimiert werden kann, ohne Daten vom Beginn des nächsten Datensatzes zu erhalten.
- Wenn komprimierte Datensätze in Entitäten organisiert sind, wird die interessierende Gruppe gemäß der vorher bezugnehmend auf die Fig. 20A und 20B durchgeführten Beschreibung lokalisiert.
- Die relevante Entität kann dann unter Verwendung der #RECS- Einträge in den Entität-Anfangsblöcken in der Gruppe lokalisiert werden. Eine Dekomprimierung wird von dem nahesten vorherigen Zugriffspunkt begonnen, der durch das Prüfen des Algorithmus-ID-Eintrags in der relevanten Entität gefunden werden kann. Wenn derselbe anzeigt, daß die komprimierten Daten in dieser Entität eine Fortsetzung eines früher gestarteten Wörterbuchs sind, wird zu dem vorherigen Entität- Anfangsblock zurückgesprungen, usw., bis ein Zugriffspunkt gefunden ist. Nur dekomprimierte Daten, die von dem relevanten Datensatz oder den Datensätzen erhalten werden, werden zurückgewonnen. Die Existenz von Daten in den Entität-Anfangsblöcken weist daher den Vorteil des Erleichterns auf, relevante Datensätze und Zugriffspunkte zu finden, und ermöglicht es, daß das Verfahren der Datenverwaltung von dem der Dekomprimierung entkoppelt ist. Wenn nach jedem komprimierten Datensatz Endblöcke in einer Entität vorgesehen sind, welche die komprimierte Bytezahl des Datensatzes enthalten, können diese CBCs verwendet werden, um die Feststellung zu begünstigen, wann das Zurückgewinnen dekomprimierter Daten zu beginnen ist, und nicht (oder ebenso wie) das Zählen von RÄUM-Codeworten während einer Dekomprimierung.
- Folglich kann das Vorliegen von Hilfsinformationen in dem Datenstrom verwendet werden, um das Finden ausgewählter Datensätze, des nahesten vorherigen Zugriffspunkts und das Feststellen des Punkts, an dem dekomprimierte Daten gehalten werden sollen, zu begünstigen.
- Das oben genannte Suchverfahren könnte genauso verwendet werden, um einen Punkt zu finden, an dem neue Datensätze angehängt werden sollen, um bestimmte bestehende Datensätze zu überschreiben.
- Es sollte offensichtlich sein, daß die vorliegende Erfindung nicht auf die Schraubenlinien-Abtastungs-Datenaufzeichnung begrenzt ist. Die Komprimierungsalgorithmen, die beschrieben wurden, dienen als Beispiele, wobei die vorliegende Erfindung ebenfalls auf die Speicherung von Daten anwendbar ist, die gemäß einem anderen Algorithmus komprimiert sind, der ein Wörterbuch einschließt, das aus den Benutzerdaten hergeleitet ist.
Claims (10)
1. Ein Verfahren zum Komprimieren von Benutzerdaten mit
folgenden Schritten:
Empfangen eines Stroms von Benutzerdaten, die in eine
Mehrzahl von Datensätzen (CRn) organisiert sind;
Komprimieren der Benutzerdaten gemäß einem
Komprimierungsalgorithmus, der das Umwandeln ausgewählter
Benutzerdaten in Codeworte unter Verwendung einer ersten
Speichereinrichtung (W), die ein Wörterbuch enthält,
das aus den empfangenen Benutzerdaten kompiliert ist,
und einer zweiten Speichereinrichtung (L), die
Benutzerdaten empfängt und speichert, bis die Benutzerdaten,
die in der zweiten Speichereinrichtung akkumuliert
sind, nicht länger mit irgendeinem Eintrag des
Wörterbuchs übereinstimmen, einschließt, wobei die
Benutzerdaten, die derart komprimiert sind, komprimierte Daten
definieren, und wobei der Algorithmus einen
Rücksetzschritt (R), der die erste Speichereinrichtung löscht,
und das Beginnen der Herleitung eines neuen Wörterbuchs
aus den restlichen Benutzerdaten einschließt;
gekennzeichnet durch
eine Räumoperation (F), um ein oder mehrere Codeworte
auszugeben, die mit den akkumulierten Benutzerdaten,
die in der zweiten Speichereinrichtung gespeichert
sind, übereinstimmen, und um die zweite
Speichereinrichtung zu löschen, ungeachtet dessen, ob die
akkumulierten Benutzerdaten mit irgendeinem Eintrag des
Wörterbuchs übereinstimmen; und
Ausführen einer Mehrzahl der Räumoperationen (F)
zwischen
dem Beginnen aufeinanderfolgender Wörterbücher
(R).
2. Ein Verfahren gemäß Anspruch 1, das den Schritt des
Ausführens der Räumoperation (F) am Ende jedes
Datensatzes (CRn) aufweist.
3. Ein Verfahren gemäß Anspruch 1 oder Anspruch 2, das den
Schritt des Ausgebens von Informationen aufweist, die
Positionen anzeigen, an denen die Räumoperationen (F)
auftreten, wodurch ermöglicht wird, daß diese
Positionen in den komprimierten Daten identifiziert werden.
4. Ein Verfahren gemäß einem beliebigen der vorhergehenden
Ansprüche, das den Schritt des Ausgebens von
Informationen aufweist, die Positionen des Beginnens eines
neuen Wörterbuchs (R) anzeigen, wodurch ermöglicht
wird, daß diese Positionen in den komprimierten Daten
identifiziert werden.
5. Ein Verfahren gemäß einem beliebigen der vorhergehenden
Ansprüche mit folgenden Schritten:
Ausgeben der komprimierten Daten in Gruppen (Gn)
unabhängig von der Datensatzstruktur der Benutzerdaten; und
Beginnen eines neuen Wörterbuchs (R) am oder in der
Nähe des Beginns jeder Gruppe (Gn).
6. Ein Verfahren gemäß Anspruch 5, das den Schritt des
Beginnens eines neuen Wörterbuchs (R) am Beginn eines
ersten neuen Datensatzes (CRn) in jeder Gruppe (Gn)
aufweist.
7. Ein Verfahren gemäß Anspruch 5, das folgende Schritte
aufweist:
Organisieren der Benutzerdatensätze in Entitäten (En),
wobei jede Entität einen oder mehrere Datensätze (CRn)
aufweist; und
Ausführen der Räumoperation (F) am Ende jeder Entität
(En).
8. Ein Verfahren gemäß Anspruch 5, das folgende Schritte
aufweist:
Organisieren der Benutzerdatensätze in Entitäten (En),
wobei jede Entität einen oder mehrere Datensätze (CRn)
aufweist; und
Beginnen eines neuen Wörterbuchs (R) am Beginn einer
ersten neuen Entität (En) in jeder Gruppe (Gn).
9. Eine Vorrichtung zum Komprimieren von Benutzerdaten mit
folgenden Merkmalen:
einer Schnittstelleneinrichtung zum Empfangen eines
Stroms von Benutzerdaten, die in eine Mehrzahl von
Datensätzen (CRn) organisiert sind;
einer Komprimierungseinrichtung zum Komprimieren der
Benutzerdaten gemäß einem Komprimierungsalgorithmus,
der das Umwandeln ausgewählter Benutzerdaten in
Codeworte einschließt, welche eine erste
Speichereinrichtung (W) zum Enthalten eines Wörterbuchs, das aus den
empfangenen Benutzerdaten kompiliert ist, eine zweite
Speichereinrichtung (L) zum Empfangen und Speichern von
Benutzerdaten, bis die Benutzerdaten, die in der
zweiten Speichereinrichtung akkumuliert sind, nicht länger
mit einem beliebigen Eintrag des Wörterbuchs
übereinstimmen, und eine Einrichtung (R) zum Löschen der
ersten Speichereinrichtung und zum Beginnen einer
Herleitung eines neuen Wörterbuchs aus den verbleibenden
Benutzerdaten aufweist, dadurch gekennzeichnet,
daß die Komprimierungseinrichtung eine Räumeinrichtung
zum Bewirken einer Räumoperation (F) aufweist, um ein
oder mehrere Codeworte, die mit den akkumulierten
Benutzerdaten, die in der zweiten Speichereinrichtung
gespeichert sind, übereinstimmen, auszugeben, und um die
zweite Speichereinrichtung zu löschen, ungeachtet
dessen, ob die akkumulierten Benutzerdaten mit einem
beliebigen Eintrag des Wörterbuchs übereinstimmen; und
daß die Räumeinrichtung angeordnet ist, um eine
Mehrzahl der Räumoperationen (F) zwischen dem Beginn (R)
aufeinanderfolgender Wörterbücher zu bewirken.
10. Die Vorrichtung gemäß Anspruch 9, bei der die
Räumeinrichtung die Räumoperation (F) am Ende jedes
Datensatzes (CRn) durchführt.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB909001315A GB9001315D0 (en) | 1990-01-19 | 1990-01-19 | Compressed data access |
GB909002882A GB9002882D0 (en) | 1990-01-19 | 1990-02-08 | Compressed data access |
PCT/GB1991/000084 WO1991010999A1 (en) | 1990-01-19 | 1991-01-18 | Compressed data access |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69118250D1 DE69118250D1 (de) | 1996-05-02 |
DE69118250T2 true DE69118250T2 (de) | 1996-10-17 |
Family
ID=26296532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69118250T Expired - Fee Related DE69118250T2 (de) | 1990-01-19 | 1991-01-18 | Zugriff für komprimierte daten |
Country Status (5)
Country | Link |
---|---|
US (1) | US5298895A (de) |
EP (1) | EP0464191B1 (de) |
JP (1) | JP3224813B2 (de) |
DE (1) | DE69118250T2 (de) |
WO (1) | WO1991010999A1 (de) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69031031T2 (de) * | 1990-05-29 | 1997-10-30 | Hewlett Packard Ltd | Bandspeicherung |
US5455943A (en) * | 1992-10-08 | 1995-10-03 | Salient Software, Inc. | Method and apparatus for finding longest and closest matching string in history buffer prior to current string |
US5590317A (en) * | 1992-05-27 | 1996-12-31 | Hitachi, Ltd. | Document information compression and retrieval system and document information registration and retrieval method |
US5530645A (en) * | 1993-06-30 | 1996-06-25 | Apple Computer, Inc. | Composite dictionary compression system |
US6076084A (en) * | 1994-01-03 | 2000-06-13 | Norton-Lambert Corp. | File transfer method and apparatus utilizing delimiters |
US5488365A (en) * | 1994-03-01 | 1996-01-30 | Hewlett-Packard Company | Method and apparatus for compressing and decompressing short blocks of data |
US5502439A (en) * | 1994-05-16 | 1996-03-26 | The United States Of America As Represented By The United States Department Of Energy | Method for compression of binary data |
US5592512A (en) * | 1994-06-24 | 1997-01-07 | Norand Corporation | Adaptive display refresh and data compression in a radio frequency environment |
US5915129A (en) * | 1994-06-27 | 1999-06-22 | Microsoft Corporation | Method and system for storing uncompressed data in a memory cache that is destined for a compressed file system |
US5561421A (en) * | 1994-07-28 | 1996-10-01 | International Business Machines Corporation | Access method data compression with system-built generic dictionaries |
WO1998039723A2 (en) * | 1994-12-20 | 1998-09-11 | Rodney John Smith | Improvements relating to data compression |
US5627534A (en) * | 1995-03-23 | 1997-05-06 | International Business Machines Corporation | Dual stage compression of bit mapped image data using refined run length and LZ compression |
US5619199A (en) * | 1995-05-04 | 1997-04-08 | International Business Machines Corporation | Order preserving run length encoding with compression codeword extraction for comparisons |
GB2310055A (en) * | 1996-02-08 | 1997-08-13 | Ibm | Compression of structured data |
US6094453A (en) * | 1996-10-11 | 2000-07-25 | Digital Accelerator Corporation | Digital data compression with quad-tree coding of header file |
US6996096B2 (en) * | 1997-02-14 | 2006-02-07 | Canon Kabushiki Kaisha | Communication apparatus and a method of controlling a communication apparatus |
US6414610B1 (en) | 1997-02-24 | 2002-07-02 | Rodney J Smith | Data compression |
US7898442B1 (en) * | 1997-05-30 | 2011-03-01 | International Business Machines Corporation | On-line data compression analysis and regulation |
US6067381A (en) * | 1997-06-13 | 2000-05-23 | International Business Machines Corporation | Method of reinitializing dictionaries in a data transmission system using data compression |
EP0913761A1 (de) * | 1997-10-31 | 1999-05-06 | Hewlett-Packard Company | Datenkodierung |
EP0913824B1 (de) | 1997-10-31 | 2013-08-14 | Hewlett-Packard Development Company, L.P. | Erzeugung von Anhängungspunkten in kodierten Daten |
EP0913823B1 (de) * | 1997-10-31 | 2013-05-22 | Hewlett-Packard Development Company, L.P. | Datenkodierungsverfahren und -gerät |
US6757659B1 (en) * | 1998-11-16 | 2004-06-29 | Victor Company Of Japan, Ltd. | Audio signal processing apparatus |
AU3274301A (en) * | 2000-01-05 | 2001-07-16 | Realnetworks, Inc. | Systems and methods for multiple-file data compression |
US6606040B2 (en) * | 2001-02-13 | 2003-08-12 | Mosaid Technologies, Inc. | Method and apparatus for adaptive data compression |
JP3913004B2 (ja) * | 2001-05-28 | 2007-05-09 | キヤノン株式会社 | データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体 |
JP4785320B2 (ja) * | 2002-01-31 | 2011-10-05 | キヤノン株式会社 | 記憶装置 |
US6657565B2 (en) | 2002-03-21 | 2003-12-02 | International Business Machines Corporation | Method and system for improving lossless compression efficiency |
US7269548B2 (en) * | 2002-07-03 | 2007-09-11 | Research In Motion Ltd | System and method of creating and using compact linguistic data |
US20070174362A1 (en) * | 2006-01-18 | 2007-07-26 | Duc Pham | System and methods for secure digital data archiving and access auditing |
US8391148B1 (en) * | 2007-07-30 | 2013-03-05 | Rockstar Consortion USLP | Method and apparatus for Ethernet data compression |
US7444596B1 (en) | 2007-11-29 | 2008-10-28 | International Business Machines Corporation | Use of template messages to optimize a software messaging system |
US8554745B2 (en) | 2009-04-27 | 2013-10-08 | Netapp, Inc. | Nearstore compression of data in a storage system |
WO2013076523A1 (en) * | 2011-11-24 | 2013-05-30 | Freescale Semiconductor, Inc. | Memory access controller, data processing system, and method for managing data flow between a memory unit and a processing unit |
US20140149605A1 (en) * | 2012-11-26 | 2014-05-29 | Saravana Annamalaisami | Systems and methods for dictionary based compression |
US9928128B2 (en) | 2016-04-01 | 2018-03-27 | International Business Machines Corporation | In-pipe error scrubbing within a processor core |
US10790044B2 (en) * | 2016-05-19 | 2020-09-29 | Seven Bridges Genomics Inc. | Systems and methods for sequence encoding, storage, and compression |
US11677416B2 (en) * | 2021-05-17 | 2023-06-13 | Radu Mircea Secareanu | Hardware implementable data compression/decompression algorithm |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847619A (en) * | 1987-10-19 | 1989-07-11 | Hewlett-Packard Company | Performance-based reset of data compression dictionary |
US4891784A (en) * | 1988-01-08 | 1990-01-02 | Hewlett-Packard Company | High capacity tape drive transparently writes and reads large packets of blocked data between interblock gaps |
US5151697A (en) * | 1990-10-15 | 1992-09-29 | Board Of Regents Of The University Of Washington | Data structure management tagging system |
-
1991
- 1991-01-18 JP JP50345391A patent/JP3224813B2/ja not_active Expired - Lifetime
- 1991-01-18 DE DE69118250T patent/DE69118250T2/de not_active Expired - Fee Related
- 1991-01-18 WO PCT/GB1991/000084 patent/WO1991010999A1/en active IP Right Grant
- 1991-01-18 EP EP91903657A patent/EP0464191B1/de not_active Expired - Lifetime
- 1991-11-19 US US07/761,783 patent/US5298895A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0464191B1 (de) | 1996-03-27 |
WO1991010999A1 (en) | 1991-07-25 |
US5298895A (en) | 1994-03-29 |
DE69118250D1 (de) | 1996-05-02 |
EP0464191A1 (de) | 1992-01-08 |
JP3224813B2 (ja) | 2001-11-05 |
JPH04505979A (ja) | 1992-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69118250T2 (de) | Zugriff für komprimierte daten | |
DE69117592T2 (de) | Datenspeicherung auf magnetband | |
DE69031031T2 (de) | Bandspeicherung | |
DE69023329T2 (de) | Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem. | |
DE68921994T2 (de) | Gerät zur Zusammenstellung und Abtrennung von zwischen einem Rechner und einem Hochkapazität-Bandspeicher übertragenen Datenpaketen. | |
DE69712663T2 (de) | Komprimier- und Pufferungssystem für Datenstrom | |
DE69625524T2 (de) | Informationsaufzeichnungsmedium und Wiedergabegerät | |
DE3606869C2 (de) | Vorrichtung zur Datenkompression | |
US5280600A (en) | Storage of compressed data with algorithm | |
DE68924138T2 (de) | Daten-kompressions/dekompressionsanordnung. | |
DE69026652T2 (de) | Zusammenfügung kurzer Aufzeichnungen in einem einzelnen Datenblock zur Aufzeichnung auf einem Aufzeichnungsmedium | |
DE3850035T2 (de) | Datenkomprimierungssystem mit Expandierungsschutz. | |
DE68907812T2 (de) | Verfahren und Vorrichtung zur Kodierung, Dekodierung und Übertragung von Daten in komprimierter Form. | |
DE68909250T2 (de) | Datenspeicherverfahren. | |
DE69528260T2 (de) | Anordnung von sätzen variabler länge in festen blöcken | |
DE60000380T2 (de) | Verfahren und Vorrichtung zur Datenkompression | |
DE112011100199B4 (de) | Integrierter Daten- und Kopfdatenschutz für Bandlaufwerke | |
DE69318970T2 (de) | Inhaltverzeichnisformat eines datenaufzeichnungssystem | |
DE1499225B2 (de) | Schaltungsanordnung zur reduzierung von datenwortlaengen | |
DE69415756T2 (de) | Fehlerkorrektur für digitale Videodaten | |
DE69324800T2 (de) | Digitales servospurfomat | |
DE69318967T2 (de) | Aufzeichnungssystem für daten mit verbesserten eigenschaften der longitudinal- und schraegspursuche | |
DE69328298T2 (de) | Datenaufzeichnungssystem mit einem einzigen ende-der-aufzeichnung und anfang-der-aufzeichnung formatanzeiger | |
DE69409399T2 (de) | Lesen von mit unterschiedlichen schreibdichten gespeicherten daten | |
DE68927939T2 (de) | Monadische Kodierung vom Start-Schritt-Stop-Typ für die Datenkomprimierung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |