DE3525898C2 - - Google Patents

Info

Publication number
DE3525898C2
DE3525898C2 DE3525898A DE3525898A DE3525898C2 DE 3525898 C2 DE3525898 C2 DE 3525898C2 DE 3525898 A DE3525898 A DE 3525898A DE 3525898 A DE3525898 A DE 3525898A DE 3525898 C2 DE3525898 C2 DE 3525898C2
Authority
DE
Germany
Prior art keywords
data
memory
column
code
address
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
Application number
DE3525898A
Other languages
English (en)
Other versions
DE3525898A1 (de
Inventor
Reinhard Dipl.-Ing. 6000 Frankfurt De Lidzba
Heinz-Ulrich Dipl.-Ing. 6382 Friedrichsdorf De Wiebach
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WIEBACH, HEINZ-ULRICH, DIPL.-MATH., 6382 FRIEDRICH
Original Assignee
Wiebach Heinz-Ulrich Dipl-Math 6382 Friedrichsdorf De
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wiebach Heinz-Ulrich Dipl-Math 6382 Friedrichsdorf De filed Critical Wiebach Heinz-Ulrich Dipl-Math 6382 Friedrichsdorf De
Priority to DE19853525898 priority Critical patent/DE3525898A1/de
Priority to US07/040,772 priority patent/US4903018A/en
Priority to PCT/DE1986/000289 priority patent/WO1987000714A1/de
Priority to EP86904098A priority patent/EP0230437B1/de
Priority to DE8686904098T priority patent/DE3682182D1/de
Publication of DE3525898A1 publication Critical patent/DE3525898A1/de
Application granted granted Critical
Publication of DE3525898C2 publication Critical patent/DE3525898C2/de
Granted legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/417Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Description

Die Erfindung betrifft ein Verfahren zum Komprimieren und Dekomprimieren strukturverwandter Datenfolgen, insbesondere Datensätze, bei dem die zu komprimierenden Datenfolgen in einer Speichermatrix unter Berücksichtigung ihrer Strukturverwandtschaft parallel gespeichert werden, zur Gewinnung einer eine Anzahl von Datenelementen der Datenfolgen verbindenden Charakteristik für mehrere Datenfolgen eine Strukturanalyse von Datenelementen übereinstimmender Ordnungszahl vorgenommen wird, anstelle dieser Datenelemente ein Code verwendet wird und beim Dekomprimieren die durch Decodieren des Codes gewonnenen Datenelemente in Datenfolgen unter Berücksichtigung der jeweils betreffenden Datenelement-Ordnungszahl geordnet werden. Ferner betrifft die Erfindung Datenverarbeitungseinrichtungen zur Durchführung des Verfahrens.
Datenfolgen sind häufig in hohem Maße redundant, d. h. sie enthalten eine wesentlich größere Zahl von Datenelementen oder Zeichen, als sie zur Darstellung der jeweils enthaltenen Information erforderlich wäre. Ein Beispiel hierfür sind die regelmäßig aufgebauten Datensätze von Dateien aus Wirtschaft und Verwaltung. Ein weiteres Beispiel hierfür ist die Übertragung von Fernsehbildern, bei denen die nacheinander aufgenommenen und dann als Datenfolgen gespeicherten oder übertragenen Teilbilder bezüglich einzelner Bereiche einer Szene identisch sind, weil sie dort keine Änderung hinsichtlich der Lage, Helligkeit oder Farbe der Bildpunkte erfahren haben. Das ist ohne Szenenwechsel für die meisten Bildpunkte der Fall. Um die Übertragung von Datenfolgen wirtschaftlich vornehmen zu können, ist es erforderlich, diese zu komprimieren und am Ende der Übertragungsstrecke wieder zu dekomprimieren.
Es sind bereits Verfahren bekannt, bei denen die Verdichtung der Datenfolgen über eine Codierung veränderlicher Länge vorgenommen wird. Ein Codierschema dieses Typs bewirkt, daß Bitreihen fest vorgegebener Länge in Bitreihen veränderlicher Länge umcodiert werden, wobei die häufiger vorkommenden Codeworte von Bitreihen dargestellt werden, die kürzer sind als die der Codeworte fest vorgegebener Länge. Diese Umwandlung von Codeworten fester Länge in Codeworte veränderlicher Länge ist als Huffman- Codierung bekannt. Bei sinnvoller Zuordnung von Codeworten veränderlicher Länge ergibt sich bei gegebenen Daten dann eine wesentlich geringere Länge derartiger Codeworte gegenüber den entsprechenden Codeworten fest vorgegebener Länge, obwohl viele Codeworte veränderlicher Länge wesentlich länger als die entsprechenden Codeworte fester Länge sind.
Es sind ferner Verfahren zum Komprimieren und Dekomprimieren von Datenfolgen bekannt, bei denen eine Strukturanalyse vorgenommen wird, um bei einer vorgegebenen Zahl von Datenelementen der Datenfolgen eine diese verbindende Charakteristik zu erkennen. Eine solche Charakteristik kann beispielsweise im mehrmaligen Auftreten desselben Zeichens liegen oder auch bei einer aufsteigenden numerischen Ziffernfolge der Art 1, 2 . . . n gegeben sein. Die vorgegebene Zahl von Datenelementen wird dann in einen Code umgesetzt. Bei einer Zeichenkette von n gleichen Zeichen müßte ein solcher Code mindestens ein Trennzeichen, das betreffende Zeichen und die Anzahl seines Auftretens enthalten, um beim Dekomprimieren die ursprüngliche Zeichenkette durch Decodieren des Codes wieder herstellen zu können.
Es ist ferner ein Verfahren zum Komprimieren und Dekomprimieren von Datenfolgen bekannt, bei dem zwei logisch verwandte Datenfolgen vor dem eigentlichen Komprimieren herkömmlicher Art EXKLUSIV-ODER-verknüpft werden. Diese logische Verknüpfung bewirkt, daß an den Stellen, an denen gleiche Zeichen vorhanden sind, Nullen erzeugt werden. Da die Datenfolgen, wie vorausgesetzt, logisch verwandt sind, wird durch die EXKLUSIV-ODER-Verknüpfung eine Datenfolge erzeugt, die als Datenelemente häufig Nullen enthält. Die mit Nullen stark durchsetzte Datenfolge wird dann nach herkömmlicher Art komprimiert.
Bei diesem Verfahren wird die Strukturverwandtschaft, insbesondere die logische Verwandtschaft, zumindest zweier Datenfolgen zum Zwecke des Komprimierens genützt, um das Komprimierungsergebnis zu verbessern, aber auch bei diesem Verfahren ist das Komprimierungsergebnis noch stark redundant. Außerdem benötigt man zur Durchführung einen hohen schaltungstechnischen Aufwand, da Universalrechner hoher Leistung erforderlich sind.
Gleiches gilt für ein Verfahren der eingangs genannten Art, das aus dem Aufsatz "Data Compaction for Improved Transmission Efficiency" von Dirk R. Klose in IEEE National Telecommunications Conference, 26.-28. November 1973, Seiten 35C-1 bis 35C-6, bekannt ist. Bei diesem Verfahren werden mehrere Datenfolgen vorbestimmter Länge, die zusammen einen Datensatz bilden, zeilenweise in einer Matrix angeordnet und durch spaltenweises Umschlüsseln in weniger redundante Codefolgen komprimiert, indem ihre Strukturverwandtschaft in Spaltenrichtung festgestellt und ausgewertet wird. Hierdurch läßt sich zwar das Komprimierungsergebnis verbessern, jedoch bleibt der schaltungstechnische Aufwand insbesondere für die spaltenweise Betrachtung der matrixartig angeordneten Datenfolgen hoch.
Es ist daher Aufgabe der Erfindung, eine Möglichkeit des Einwirkens auf die Datenfolgen anzugeben, durch die das Komprimieren und Dekomprimieren mehrerer strukturverwandter Datenfolgen, insbesondere Datensätze, auch im Ergebnis gegenüber bisherigen Verfahren so deutlich verbessert wird, daß es durch einen weit geringeren schaltungstechnischen Aufwand realisiert werden kann als es bisher unumgänglich war.
Diese Aufgabe wird ausgehend von einem Verfahren eingangs genannter Art erfindungsgemäß dadurch gelöst, daß vor der Strukturanalyse die gespeicherten Datenfolgen auf ihre Länge untersucht, mit Datenfolgen gleicher Länge Datenfolgengruppen gebildet und die Datenfolgengruppen nach zunehmender oder abnehmender Länge geordnet werden.
Durch den gemäß der Erfindung vor der Strukturanalyse durchgeführten besonderen Verfahrensschritt wird es möglich, bei der spaltenweise durchzuführenden Strukturanalyse und Komprimierung der Datenelemente nur denjenigen Teil der jeweiligen Matrixspalte zu berücksichtigen, in dem infolge der vorgesehenen Ordnung der Datenfolgengruppen Informationen vorhanden sind. Dadurch läßt sich der Aufwand an Verarbeitungszeit und damit Schaltungstechnik wesentlich verringern, und gleichzeitig wird das Komprimierungsergebnis weiter verbessert, weil die vor der Strukturanalyse durchgeführte Ordnung der Datenfolgengruppen nach ihrer Länge ein zusammenfassendes Betrachten benachbarter Matrixspalten gleicher oder auch nahezu gleicher Länge ermöglicht, wodurch einzelne Matrixspalten einer derartigen Gruppe kennzeichnende Codezeichen beim Komprimieren eingespart werden. Es hat sich gezeigt, daß bei einer derartigen Ordnung der Datenfolgengruppen auch andere gemeinsame Merkmale einander benachbarter Matrixspalten leichter auswertbar sind und zu einer Verkürzung der Codeworte im Komprimierungsergebnis führen können.
Werden geordnete Datenfolgen gleicher effektiver Länge auf übereinstimmende Datenfolgecharakteristik, beispielsweise Satzart, letztes Zeichen einer Datenfolge oder Anzahl der Datenelemente einer Datenfolge untersucht, und entsprechend geordnet, so werden Datenfolgen mit gleicher oder auch ähnlicher Charakteristik und damit großer Strukturähnlichkeit näher zusammengebracht, wodurch das Komprimierungsergebnis weiter verbessert werden kann.
Werden geordnete Datenfolgen gleicher effektiver Länge und gleicher Charakteristik noch nach zunehmender oder abnehmender Speichermatrix-Zeilennummer geordnet, um die Strukturverwandschaft der nacheinander zeilenweise in die Speichermatrix eingelesenen Datenfolgen möglichst zu erhalten, so kann das Komprimierungsergebnis dadurch weiter verbessert werden.
Vorteilhaft können dabei die effektive Datenfolgelänge, mindestens eine Datenfolgecharakteristik und die Speichermatrix- Zeilennummer durch ein Attributfeld gekennzeichnet werden, das jede Datenfolge ergänzt. Es kann dann auf diese Ordnungskriterien leicht zugegriffen werden.
In einer weiteren Ausbildung des erfindungsgemäßen Verfahrens werden die einzelnen Datenfolgen seriell vorkomprimiert, um die bei serieller Betrachtung gegebene Strukturverwandtschaft der Datenelemente der einzelnen Datenfolgen zu nützen. Dabei sollten die strukturellen Bezugspunkte für die eigentliche spaltenweise Komprimierung möglichst nicht zerstört werden. Dies wird dadurch erreicht, daß die verdichteten Zeichenketten in der Datenfolge durch Füllzeichen ersetzt werden, die bei der eigentlichen spaltenweisen Komprimierung nicht beachtet werden. Auf diese Weise bleibt die Struktur der einzelnen Datenfolgen erhalten.
Als eine Möglichkeit der seriellen Vorkomprimierung wird das jeweils letzte Datenelement mindestens einer Datenfolge sowie ggf. die Zahl solcher Datenelemente, also ihr Wiederholungsfaktor, in das Attributfeld übernommen. Ferner werden das letzte Datenelement sowie seine mit ihm übereinstimmenden unmittelbaren Vorgänger in der Datenfolge zur Verkürzung eliminiert. Diese Art der seriellen Vorkomprimierung erweist sich als besonders vorteilhaft, da die letzten Datenelemente einer Datenfolge häufig übereinstimmen. Man denke dabei z. B. an Leerzeichen, sogenannte Blanks, am Ende der Datenfolgen.
Wenn die Art einer Datenfolge nicht explizit angegeben ist, so hat es sich als vorteilhaft erwiesen, das letzte und das vorletzte Datenelement der unverkürzten Datenfolge als Datenfolgecharakteristik in das Attributfeld zu übernehmen und in der Datenfolge zu eliminieren. Dies beruht vor allem auf der Erkenntnis, daß strukturähnliche Datenfolgen häufig in ihren Datenelementen am Datenfolgeende übereinstimmen.
Das Komprimierungsergebnis kann weiter verbessert werden, wenn im Rahmen der seriellen Vorkomprimierung der Datenfolgen mindestens die längste aus gleichen Datenelementen bestehende Zeichenkette einer Datenfolge eliminiert und durch Füllzeichen ersetzt wird und wenn diese Zeichenkette in einem für jede Datenfolge separat vorgesehenen Deskriptorfeld durch einen den Zeichenkettenanfang markierenden Zeiger, durch die Zeichenkettenlänge und durch das ersetzte Zeichen beschrieben wird. Mit dieser Maßnahme können lange Zeichenketten übereinstimmender Datenelemente höchst effektiv komprimiert werden, ohne daß dadurch die Struktur der einzelnen Datensätze zerstört wird, da die eliminierten Zeichenketten durch Füllzeichen ersetzt werden, die bei der eigentlichen spaltenweisen Komprimierung nicht berücksichtigt werden.
Da sich die Flatterung (fließsatzartige Anordnung) von beispielsweise Leerzeichen oder Nullzeichen auf das Komprimierungsergebnis bei der spaltenweisen Komprimierung negativ auswirkt, wird im Rahmen der seriellen Vorkomprimierung mindestens die größte Flatterung solcher Störzeichen bei den zu komprimierenden Datenfolgen festgestellt, werden die Störzeichen durch Füllzeichen ersetzt und wird das Störzeichen selbst durch einen den Störzeichenfeldanfang markierenden Flatterungszeiger, durch die Feldlänge und durch das ersetzte Störzeichen beschrieben.
Da sämtliche im Rahmen der seriellen Vorkomprimierung beschriebenen Maßnahmen ebenso wie die Sortierung der Datenfolgen aufgrund verschiedener Kriterien eindeutige Vorgänge sind, können sie im Rahmen der Dekomprimierung wieder rückgängig gemacht werden.
In einer weiteren Ausbildung des erfindungsgemäßen Verfahrens wird für jede Datenelementspalte jeweils mindestens ein Spaltendeskriptorfeld vorgesehen, das die Datenelementspalte zumindest teilweise beschreibt. Es ist dadurch gemäß einer Weiterbildung der Erfindung beispielsweise möglich, daß aus gleichen Zeichen bestehende Datenelementspalten eliminiert, durch Füllzeichen ersetzt und in den betreffenden Deskriptorfeldern durch Angabe des jeweils ersetzten Zeichens beschrieben werden. Durch das Einfügen der Füllzeichen anstelle der eliminierten Datenspalte bleibt die Struktur der einzelnen Datenfolgen erhalten, weil die Füllzeichen bei der eigentlichen spaltenweisen Komprimierung übergangen werden.
Gemäß einer anderen Weiterbildung der Erfindung wird zumindest die längste aus gleichen Datenelementen bestehende Zeichenkette einer Datenelementspalte eliminiert und durch Füllzeichen ersetzt. Ferner wird diese Zeichenkette im jeweiligen Spaltendeskriptorfeld durch einen den Zeichenkettenanfang markierenden Zeiger, durch die Zeichenkettenlänge und durch das ersetzte Zeichen beschrieben. Durch diese Beschreibung der Zeichenkette ist es möglich, sie im Rahmen der Dekomprimierung wiederherzustellen und an richtiger Stelle in der Datenelementspalte anzuordnen.
Bei einer anderen Weiterbildung des erfindungsgemäßen Verfahrens wird zumindest die längste aus gleichen Datenelementen bestehende Zeichenkette einer Datenelementspalte in ein im Vergleich zur betreffenden Zeichenkette kürzeres Codewort umcodiert und durch dieses ersetzt und werden die dabei freiwerdenden Datenelementplätze mit Füllzeichen aufgefüllt.
In einer weiteren vorteilhaften Ausbildung des erfindungsgemäßen Verfahrens werden zwei benachbarte Zeichenketten einer Datenelementspalte vertauscht und werden ein die Berührungsstelle der Zeichenketten in ihrer ursprünglichen Lage markierender Zeiger und die Längen der Zeichenketten im Deskriptorfeld der betreffenden Datenelementspalte gespeichert. Diese Vertauschung zweier benachbarter Zeichenketten bewirkt eine Homogenisierung der Daten der betreffenden Datenelementspalte.
In einer Weiterbildung des erfindungsgemäßen Verfahrens werden die Datenelemente mindestens eines Teils einer Datenelementspalte in einen für diese betreffende Spalte spezifischen, weniger redundanten Code umgeschlüsselt, wodurch das Komprimierungsergebnis weiter verbessert werden kann.
Als weitere Maßnahme zur Verbesserung des Komprimierungsergebnisses dient die Verknüpfung der einzelnen Datenelemente einer Datenelementspalte durch die logische Funktion mit der Wahrheitstabelle "A verknüpft mit B = W", falls A = B und "A verknüpft mit B = B", falls AB unter der Bedingung BW, wobei W ein beliebiges Wiederholungszeichen, z. B. das Nullzeichen, ist. Die Anwendung dieser logischen Funktion auf die Datenelemente einer Datenelementspalte dient der Homogenisierung dieser Datenelemente. Wird bei einem Vergleich des Datenelements B mit dem Datenelement A die Gleichheit von B und A festgestellt, so wird das Datenelement B durch das Wiederholungszeichen W ersetzt. Wird dagegen bei einem Vergleich des Datenelements B mit dem Datenelement A die Ungleichheit von B und A festgestellt, so bleibt das Datenelement B unverändert. Wenn man diese logische Funktion auf die Datenelemente nacheinander, beispielsweise in der Datenelementspalte von unten nach oben angewendet hat, so kann wegen der Eindeutigkeit der logischen Funktion, die für die Bedingungen BW gilt, beim Dekomprimieren die Datenelementspalte mit den ursprünglichen Datenelementen wiederhergestellt werden. Nach Anwendung dieser logischen Funktion auf die Datenelemente aller Datenelementspalten können die Verknüpfungsergebnisse zweier Datenfolgen jeweils erneut seriell vorkomprimiert werden.
In einer weiteren Ausgestaltung des erfindungsgemäßen Verfahrens wird jedes Datenelement einer Datenelementspalte in ein Bewertungs- oder Indikatorcodewort umgeschlüsselt, werden die Indikatorcodeworte der einzelnen Datenelemente einer Datenelementspalte bitweise addiert, unmittelbar benachbarte Indikatorcodeworte bitweise EXKLUSIV-ODER-verknüpft, die Verknüpfungsergebnisse ebenfalls addiert und die beiden Additionsergebnisse zur Klassifikation der Datenstruktur ausgewertet. Dabei haben die einzelnen Bitpositionen der Bewertungs- oder Indikatorcodeworte Aussagekraft über den Typ des jeweiligen Datenelementes. So kann beispielsweise eine 1 an der fünften Bitposition eines Bewertungs- oder Indikatorcodewortes bedeuten, daß das erste Halbzeichen des betreffenden Datenelements 0 ist. Durch die bitweise Addition der Indikatorcodeworte der einzelnen Datenelemente einer Datenelementspalte erhält man die Aussage, wie viele Datenelemente in der Datenelementspalte vorhanden sind, deren erstes Halbzeichen 0 ist. Durch die bitweise EXKLUSIV-ODER-Verknüpfung unmittelbar benachbarter Indikatorcodeworte und durch die Addition der Verknüpfungsergebnisse erhält man eine Aussage über die Häufigkeit der Zeichenwechsel zwischen benachbarten Datenelementen. Da die beiden Additionsergebnisse sowohl ein Maß für die Häufigkeit des Auftretens der einzelnen Datenelementtypen als auch ein Maß für die Häufigkeit der Datenelementtypwechsel sind, sind sie als Grundlage für die Auswertung zur Klassifikation der Datenstruktur besonders gut geeignet.
Da die Wahrscheinlichkeit eines halbzeichenweisen Übereinstimmens oder zumindest einer gemeinsamen Charakteristik der Halbzeichen der Datenelemente einer Datenelementspalte größer ist als bei den vollständigen Datenelementen, kann das Komprimierungsergebnis verbessert werden, wenn jede Datenelementspalte halbzeichenweise in eine durch das Klassifikationsergebnis festgelegte Art von Codeworten umgesetzt wird.
Dies geschieht in einfacher Weise dadurch, daß das Klassifikationsergebnis durch m Bits ausgedrückt wird, daß aus dem m Bit-Klassifikationsergebnis zusammen mit einem n Bit-Halbzeichen eine (m+n) Bit-Adresse zur Adressierung eines die Codeworte enthaltenden Codespeichers gebildet wird und daß die adressierten Codeworte nacheinander aus dem Codespeicher ausgelesen werden. Dabei wird durch das m Bit-Klassifikationsergebnis, das den höherwertigen Adreßteil bildet, ein Speicherbereich des Codespeichers ausgewählt, der für die betreffende, durch das Klassifikationsergebnis ausgedrückte Datenstruktur der Datenelementspalte günstige Codeworte für die auftretenden Halbzeichen enthält.
In einer Weiterbildung des Verfahrens werden jeweils die beiden zuletzt aus dem Codespeicher ausgelesenen Codeworte nach jedem Lesezyklus des Codespeichers auf Gleichheit überprüft. Es besteht dadurch die Möglichkeit, aufeinanderfolgende gleiche Codeworte in einem weiteren Verfahrensschritt zusammenzufassen und somit zu komprimieren.
Dies geschieht in einer Weiterbildung der Erfindung dadurch, daß die Anzahl der unmittelbar aufeinanderfolgenden Lesezyklen des Codespeichers, nach denen jeweils die beiden zuletzt aus dem Codespeicher ausgelesenen Codeworte übereinstimmen, gezählt wird. Das Zählergebnis gibt dann an, wie oft der Typ des zuletzt aus dem Codespeicher ausgelesenen Codewortes hintereinander aufgetreten ist.
Eine Weiterbildung des erfindungsgemäßen Verfahrens zeichnet sich dadurch aus, daß das Zählergebnis in Abhängigkeit von der Art der Codeworte derart verschlüsselt wird, daß das verschlüsselte Zählergebnis von den betreffenden Codeworten unterscheidbar ist. Diese Verschlüsselung dient zur sicheren Unterscheidung des Zählergebnisses von den im Codespeicher auftretenden Codeworten.
Bei einer Weiterbildung des erfindungsgemäßen Verfahrens werden das in einer Datenelementspalte überwiegend auftretende Halbzeichen ein einziges Mal und jedes der verbleibenden Halbzeichen sowie ein die jeweilige Stelle dieser verbleibenden Halbzeichen anzeigender Zeiger separat im Komprimierungscode dargestellt. Diese Art der Komprimierung eignet sich besonders gut für weitgehend homogene Datenelementspalten, die nur mit wenigen Störzeichen durchsetzt sind.
Eine Datenverarbeitungseinrichtung zur Durchführung des Verfahrens ist in weiterer Ausbildung des Erfindungsgedankens derart aufgebaut, daß eine Speichermatrix an ihren Adreßeingängen mit einer ersten Umschalteinrichtung versehen ist, mit der in Abhängigkeit von einem ersten Umschaltsignal die Zeilen- und Spaltenadressen der Datenelementspeicherplätze vertauschbar sind. Durch diese Vertauschbarkeit von Zeilen- und Spaltenadressen wird es erst möglich, daß die Speichermatrix sowohl zeilenweise als auch spaltenweise ausgelesen bzw. neu beschrieben werden kann, ohne daß dazu aufwendige Adreßumrechnungen erforderlich sind, die einer hohen Rechnerleistung bedürfen. Da bei den Befehlssätzen üblicher Datenverarbeitungsanlagen die Adressierung einer Speichermatrix nur zeilenweise vorgesehen ist, mußte bisher bei einer spaltenweisen Bearbeitung der Speichermatrix immer zuerst die Adresse des nächstfolgenden Datenelementes in der Datenelementspalte berechnet werden, bevor die gewünschte Rechenoperation ausgeführt werden konnte.
Wenn ferner ein Indexspeicher vorgesehen ist, dessen Zeilenanzahl mit derjenigen der Speichermatrix übereinstimmt und der die Zeilenadressen der Speichermatrix in sortierter Reihenfolge enthält, ist es möglich, auf die Datenelementspeicherplätze einer Datenelementspalte der Speichermatrix entsprechend der Reihenfolge der im Indexspeicher enthaltenen Zeilenadressen sortiert zuzugreifen, ohne daß dazu eine vorangehende aufwendige Umsortierung der Datenelementzeilen der Speichermatrix erforderlich ist. Die Beaufschlagung der Zeilenadreßeingänge der Speichermatrix mit den Ausgangssignalen des Indexspeichers erfolgt vorteilhaft durch eine zweite Umschalteinrichtung, die von einem zweiten Umschaltsignal gesteuert wird.
In einer weiteren Ausbildung ist ein Attribut- und Deskriptorspeicher mit einer dritten Umschalteinrichtung an dessen Adreßeingängen vorgesehen, mit der in Abhängigkeit von einem dritten Umschaltsignal die Zeilen- und Spaltenadressen der Speicherplätze vertauschbar sind. Ein separater Attribut- und Deskriptorspeicher neben der Speichermatrix für die eigentlichen Datenelemente hat den Vorteil, daß bei den Weiterbildungen des erfindungsgemäßen Verfahrens, bei denen eine Sortierung der Datenfolgen vorgenommen wird, diese nicht in ihrer Gesamtheit, sondern lediglich die Inhalte der Zeilen des Attribut- und Deskriptorspeichers in Abhängigkeit von den Sortierkriterien umsortiert werden müssen. In Abhängigkeit von der im Attribut- und Deskriptorspeicher vorgenommenen Umsortierung wird dann der Indexspeicher geladen, so daß die eigentliche Speichermatrix über diesen sortiert adressiert werden kann. Um die Speicherplätze des Attribut- und Deskriptorspeichers sowohl zeilenweise als auch spaltenweise adressieren zu können, ohne rechenzeitaufwendige Adreßumrechnungen vornehmen zu müssen, ist an den Adreßeingängen des Attribut- und Deskriptorspeichers eine dritte Umschalteinrichtung zum Vertauschen der Zeilen- und Spaltenadressen vorgesehen.
Zur Gewinnung des jeweiligen Umschaltsignals aus der Speicheradresse ist vorteilhaft mindestens ein Decoder vorgesehen, der beispielsweise aus der oder den höherwertigen Adreßbits durch Decodierung das jeweilige Umschaltsignal erzeugt.
Gemäß einer Weiterbildung der Erfindung ist als Umschalteinrichtung jeweils ein handelsüblicher Multiplexer vorgesehen.
Die Datenverarbeitungseinrichtung zur Durchführung des Verfahrens kann auch derart aufgebaut sein, daß ein die Indikatorcodeworte enthaltender Lesespeicher vorgesehen ist, der durch die Datenelemente adressierbar ist. Auf diese Weise kann jedem Datenelementtyp ein bestimmtes Indikator- oder Bewertungscodewort auf einfache Weise zugeordnet werden.
In einer Weiterbildung ist dann eine Zähleranordnung mit gegenüber der Bit-Zahl der Indikatorcodeworte doppelter Zahl von Einzelzählern mit dem Datenausgang des Lesespeichers verbunden und sind der Hälfte der Einzelzähler EXKLUSIV-ODER-Glieder vorgeschaltet, deren Eingängen jeweils eine Bitposition von im Lesespeicher unmittelbar benachbarten Indikatorcodeworten zugeführt wird. Durch ein derartiges Indikatorsystem ist es möglich festzustellen, wie oft die Datenelemente einer Datenelementspalte in einer Bitposition übereinstimmen und wie viele Bitwechsel zwischen benachbarten Datenelementen einer Datenelementspalte bei jeder einzelnen Bitposition zu verzeichnen sind. Zur Feststellung der Wechsel bei den einzelnen Bitpositionen sind vorteilhaft zwischen dem Datenausgang des Lesespeichers und den Eingängen der EXKLUSIV-ODER-Glieder zwei Register vorgesehen, welche zur Zwischenspeicherung des jeweils zuletzt bzw. des unmittelbar davor aus dem Lesespeicher ausgelesenen Indikatorcodewortes dienen. Stimmen die Inhalte der beiden Register überein, so bedeutet dies, daß das jeweils letzte und das jeweils vorletzte aus dem Lesespeicher ausgelesene Indikatorcodewort übereinstimmen. An den Ausgängen der EXKLUSIV-ODER-Glieder für die einzelnen Bitpositionen erscheint dann jeweils der Wert 0. Stimmen die Inhalte der beiden Register jedoch in einzelnen Bitpositionen nicht überein, so bedeutet dies, daß bei diesen Bitpositionen zwischen dem jeweils zuletzt und dem unmittelbar davor aus dem Lesespeicher ausgelesenen Indikatorcodewort ein Wechsel stattgefunden hat. An den Ausgängen der EXKLUSIV-ODER-Glieder dieser Bitpositionen erscheint dann jeweils der Wert 1.
Die Datenverarbeitungseinrichtung kann auch derart aufgebaut sein, daß ein Festwertspeicher als Codespeicher vorgesehen ist, der vom Datenstruktur-Klassifikationsergebnis der zu komprimierenden Datenspalte und vom jeweiligen Halbzeichen der betreffenden Datenspalte adressierbar ist, wobei das Datenstruktur-Klassifikationsergebnis den höherwertigen Adreßteil und das jeweilige Halbzeichen den niederwertigen Adreßteil bildet. Auf diese Weise wird durch das Datenstruktur-Klassifikationsergebnis der für die betreffende Datenstruktur relevante Speicherbereich des Codespeichers adressiert, in dem die für die betreffende Datenstruktur günstigen Codeworte für die zu komprimierenden Halbzeichen enthalten sind.
In einer Weiterbildung sind dem Codespeicher ein erstes und ein zweites Register nachgeschaltet, wobei das erste Register das jeweils zuletzt ausgelesene Codewort und das zweite Register das unmittelbar davor ausgelesene Codewort zwischenspeichert. Auf diese Weise kann auf die beiden jeweils zuletzt aus dem Codespeicher ausgelesenen Codeworte jederzeit in einfacher Weise zugegriffen werden.
Vorteilhaft ist in einer weiteren Ausbildung der Datenverarbeitungseinrichtung eine mit den Ausgängen des ersten und des zweiten Registers verbundene Vergleichsschaltung vorgesehen, um mit ihr die Übereinstimmung der beiden jeweils zuletzt aus dem Codespeicher ausgelesenen Codeworte feststellen zu können. Ferner ist ein von der Vergleichsschaltung gesteuerter Zähler vorgesehen, mit dem die Anzahl der unmittelbar aufeinanderfolgenden aus dem Codespeicher ausgelesenen übereinstimmenden Codeworte gezählt werden kann.
Um den auszugebenden Zählerstand des Zählers in Abhängigkeit von der Art der Codeworte in einfacher Weise verschlüsseln zu können, ist vorteilhaft eine die Verschlüsselungscodeworte enthaltende Multiplexerschaltung vorgesehen.
Zur vorstehend beschriebenen logischen Verknüpfung von Datenelementen ist die Datenverarbeitungseinrichtung derart aufgebaut, daß ein A-Register und ein B-Register vorgesehen sind, das auch als Ergebnisregister dient, daß die Ausgänge der beiden Register bitweise mit den Eingängen von EXKLUSIV-ODER- Gliedern verbunden sind und daß die Ausgänge der EXKLUSIV- ODER-Glieder mit den Eingängen eines disjunktiven Verknüpfungsgliedes verbunden sind, dessen Ausgangssignal den Rücksetzeingang des B-Registers steuert. Diese Schaltungsanordnung zeichnet sich durch ihren einfachen Aufbau aus.
Die Erfindung wird im folgenden anhand eines Beispiels einer typischen Datendatei und anhand von Ausführungsbeispielen eines Speichersystems, eines Indikatorsystems, einer Halbzeichenkomprimiereinrichtung und einer Schaltungsanordnung zur logischen Verknüpfung von Datenelementen in einer Datenverarbeitungseinrichtung näher erläutert.
Es zeigt
Fig. 1 eine aus 37 Datensätzen bestehende Datei,
Fig. 2 ein Prinzipschaubild zur Ansteuerung einer Speichermatrix über einen Indexspeicher,
Fig. 3 eine schematische Darstellung einer Speichermatrix mit zwei in einer Matrixzeile angeordneten Datenelementen,
Fig. 4 die Speichermatrix von Fig. 3 mit zwei in einer Matrixspalte angeordneten Datenelementen,
Fig. 5 den Schaltplan eines Speichersystems,
Fig. 6 das Adressierschema des Speichersystems von Fig. 5,
Fig. 7 ein Indikatorsystem zur Klassifikation der Datenstruktur einer Datenelementfolge,
Fig. 8 einen Detailausschnitt der in Fig. 7 als Blockschaltbild gezeigten Zähleranordnung,
Fig. 9 eine Halbzeichenkomprimiereinrichtung und
Fig. 10 eine Schaltungsanordnung zur logischen Verknüpfung von Datenelementen.
In Fig. 1 ist eine typische, aus hexadezimal dargestellten Datenelementen bestehende Datei gezeigt. Die in ihr enthaltenen 37 Datensätze sind der Länge nach sortiert angeordnet. Anhand dieser Datendatei soll gezeigt werden, daß die einzelnen Datenelemente bei spaltenweiser Betrachtung der Datensätze aufgrund deren Strukturverwandtschaft größere Gemeinsamkeiten untereinander aufweisen, als wenn man sie datensatz- oder zeilenweise betrachtet.
Es sei ferner erwähnt, daß beispielsweise ein Komprimieren von gleichen Zeichen nur dann sinnvoll ist, wenn diese mindestens viermal hintereinander auftreten, da der Komprimierungscode ein eine komprimierte Zeichenfolge anzeigendes Trennzeichen, das komprimierte Zeichen und die Anzahl seines Auftretens enthalten muß.
Betrachtet man beispielsweise in Fig. 1 die zweite Datenzeile, so kann man erkennen, daß das Datenelement F 0 als einziges Datenelement einerseits viermal und andererseits fünfmal hintereinander auftritt. Bei einer Komprimierung gleicher Zeichen könnten daher bei dieser Datenzeile lediglich drei Datenelemente eingespart werden, da lediglich die Vierer- und die Fünferdatenelementkette beim Komprimieren jeweils durch drei Zeichen dargestellt werden kann. Betrachtet man dagegen beispielsweise die zweite Datenspalte dieser Datendatei, so kann man erkennen, daß das Datenelement 1C zwanzigmal und das Datenelement 1B achtmal hintereinander auftritt. Bei der spaltenweisen datenelementweisen Komprimierung gleicher Zeichen können hier somit zweiundzwanzig (= 29+8-2×3) Datenelemente eingespart werden. Wenn man sich weitere Datenzeilen bzw. Datenspalten heraussucht und deren Komprimierungsergebnis vergleicht, so zeigt sich, daß eine spaltenweise datenelementweise Komprimierung gegenüber einer zeilenweisen datenelementweisen Komprimierung in der Regel zu einem deutlich besseren Ergebnis führt. Wenn man die spaltenweise Komprimierung der Datenelemente gar halbzeichenweise vornimmt, so kann das Komprimierungsergebnis weiter verbessert werden. Betrachtet man wieder die zweite Datenspalte, so zeigt sich, daß das Halbzeichen oder Halb-Byte "1" insgesamt sechsundreißigmal hintereinander auftritt. Ein mit einer derartigen Häufigkeit hintereinander auftretendes Halbzeichen kann höchst effektiv komprimiert werden.
Da die Datensätze einer Datei in dieser in der Regel nicht der Länge nach sortiert angeordnet sind und da es für das spaltenweise Komprimieren der Datenelemente zweckmäßig ist, wenn die einzelnen Datensätze zur Vermeidung von Datenelementlücken mit absteigender Länge von oben nach unten in der Speichermatrix angeordnet sind, ist es erforderlich, entweder die einzelnen die Datensätze enthaltenden Datenzeilen der Speichermatrix umzuordnen oder aber, um Verarbeitungszeit zu sparen, die Speichermatrix sortiert zu adressieren. Dies ist, wie in Fig. 2 schematisch gezeigt, durch eine Zeilenadressierung mittels eines Indexspeichers 20 möglich. Dazu müssen lediglich die im Indexspeicher 20 enthaltenen Zeilenadressen der die einzelnen Datenelemente enthaltenden Speichermatrix 22 so umsortiert werden, daß die Zeile 0 des Indexspeichers 22 die Adresse der Zeile der Speichermatrix 22 enthält, die die größte Anzahl von Datenelementen umfaßt. Die Zeile 1 des Indexspeichers 20 muß dann die Adresse der Zeile der Speichermatrix 22 enthalten, die die zweitgrößte Anzahl von Datenelementen enthält usw. Wird nun der Indexspeicher 20 nacheinander von Zeile 0 bis Zeile 9 sukzessive angesteuert und ausgelesen, so werden über die im Indexspeicher 20 enthaltenen Zeilenadressen der Speichermatrix 22 die einzelnen, die Datensätze enthaltenden Zeilen der Speichermatrix 22 in Abhängigkeit von der Länge der Datensätze sortiert adressiert.
In Fig. 3 ist eine aus 10 Zeilen und 16 Spalten bestehende, mit dezimalen Adressen adressierbare Speichermatrix sowie ihr Adressierschema gezeigt. Wie aus der Fig. 3 zu entnehmen ist, wird das Datenelement X durch die Adresse 509 adressiert, wobei der höherwertige Adreßteil, also die Ziffer 5, die Zeilenadresse ist und der niederwertige Adreßteil, also die Ziffernfolge 09, die Spaltenadresse ist. Die der Adresse 509 vorangestellte Ziffer 0 dient lediglich als Umschalter und wird zur eigentlichen Adressierung des Datenelements X nicht benötigt. Da bei der üblichen sukzessiven Speicheradressierung die Adresse des nächsten Datenelementes lediglich durch Hochzählen der Speicheradresse um 1 erfolgt, wird als nächstes Datenelement das Datenelement Y adressiert, das dieselbe Zeilenadresse hat wie das Datenelement X und dessen Spaltenadresse im Vergleich zur Spaltenadresse des Datenelements X einen um 1 höheren Wert hat. Die Tatsache, daß bei der sukzessiven Speicheradressierung nach dem Datenelement X das Datenelement Y in der gleichen Zeile und nicht das Datenelement Z in der gleichen Spalte adressiert wird, ist darauf zurückzuführen, daß üblicherweise die Zeilenadresse den höherwertigen Adreßteil und die Spaltenadresse den niederwertigen Adreßteil bildet, der zunächst hochgezählt wird.
Will man dagegen bei der sukzessiven Speicheradressierung nach dem Datenelement X als nächstes Datenelement Z, also zunächst die Datenelemente einer Spalte adressieren, so ist es erforderlich, daß die Speichermatrix mit einer Adresse adressiert wird, bei der, wie in Fig. 4 gezeigt ist, die Zeilenadresse mit der Spaltenadresse vertauscht ist. Wenn die Spaltenadresse 09 den höherwertigen Adreßteil und die Zeilenadresse 5 den niederwertigen Adreßteil bildet, dann wird beim Hochzählen der Adresse um 1 die Zeilenadresse vom Wert 5 auf den Wert 6 bei gleichbleibender Spaltenadresse hochgezählt, so daß nach dem Datenelement X das Datenelement Z als nächstes Zeichen adressiert wird. Diese Vertauschung der Zeilenadresse mit der Spaltenadresse kann durch eine weitere, für die Adressierung unmittelbar nicht benötigte Adreßstelle, den sogenannten Umschalter, erfolgen. Hat der Umschalter, wie in Fig. 3 gezeigt, beispielsweise den Wert 0, so bedeutet dies, daß die Zeilenadresse mit der Spaltenadresse nicht vertauscht werden soll, mit der Folge, daß beim sukzessiven Speicheradressieren die Speichermatrix zeilenweise adressiert wird. Hat dagegen der Umschalter den Wert 1, wie in Fig. 4 gezeigt, so bedeutet dies, daß die Zeilenadresse mit der Spaltenadresse zur Adressierung der Speichermatrix vertauscht werden soll, mit der Folge, daß beim sukzessiven Adressieren der Speichermatrix diese spaltenweise adressiert wird.
In Fig. 5 ist ein Blockschaltbild eines Speichersystems dargestellt, das sich vorzüglich zur Durchführung des erfindungsgemäßen Verfahrens eignet. Dieses Speichersystem enthält im wesentlichen einen Matrixspeicher 24, eine Speichermatrix 26, einen Indexspeicher 28, verbunden mit einem Datenpuffer 30, einen Programmspeicher 32, einen 1 aus 16 Decoder 34, einen ersten Multiplexer 36, einen zweiten Multiplexer 38 und einen dritten Multiplexer 40. Um den Aufbau und die Funktionsweise dieses Speichersystems verstehen zu können, ist es zunächst erforderlich, die Speicherbelegung dieses Speichersystems anzugeben. Sie soll im folgenden anhand von Fig. 6 in Verbindung mit Fig. 5 erläutert werden.
Der Adressenbereich 00000 bis 0FFFF ist dem 64-kByte-Programmspeicher 32 zugeordnet. Der Adreßbereich 10000 bis 100FF dient zur Adressierung der 256 Bytes des Indexspeichers 28. Die Adressen 10100 bis 1FFFF werden bei diesem Speichersystem nicht benutzt. Der Adreßbereich 20000 bis 3FFFF dient zur Adressierung des 64 kBytes umfassenden Matrixspeichers 24, wobei dieser über den Adreßbereich 20000 bis 2FFFF zeilenweise und über den Adreßbereich 30000 bis 3FFFF spaltenweise adressierbar ist. Der Speicherbereich 40000 bis FFFFF schließlich ist der Speichermatrix 26 zugeordnet. Die 256 kBytes dieser Speichermatrix 26 sind über die Adressen 40000 bis 7FFFF zeilenweise adressierbar. Ferner sind sie über den Adreßbereich 80000 bis BFFFF spaltenweise adressierbar. Über den Adreßbereich C0000 bis FFFFF sind sie darüber hinaus noch spaltenweise indiziert, also sortiert adressierbar. Da bei diesem Speichersystem der Matrixspeicher 24 und die Speichermatrix 26 mehrfach, auf verschiedene Weise adressierbar sind, ist der virtuelle Speicherbereich des Speichersystems deutlich größer als der körperlich vorhandene Speicherbereich. Während letzterer in Fig. 6 unschraffiert dargestellt ist, ist der nur virtuelle Speicherbereich einfach schraffiert gezeigt. Der kreuzweise schraffierte Speicherbereich wird bei diesem Speichersystem nicht benutzt.
Das in Fig. 5 gezeigte Speichersystem hat also einschließlich der Umschalter für die verschiedenen Adressierungsarten einen Adreßbereich von 1 MByte. Dazu sind 20 Bits, also 20 Adreßleitungen A 0 bis A 19 für die Adreßauswahl erforderlich, um mit einem Schreib- oder Lesezugriff ein Byte als kleinste Speichereinheit adressieren zu können. Die Datenleitungen sind sogenannte bidirektionale Leitungen, d. h. die Information kommt bei Leseoperationen vom Speichersystem, bei Schreiboperationen dagegen wird sie dem Speichersystem auf diesen Leitungen zugeführt. Das Signal steuert die Speicheroperationen LESEN und SCHREIBEN. Während dieses Signal logisch 0 ist, wenn die Operation SCHREIBEN durchgeführt werden soll, sind die Signale ohne Querstrich logisch 1, wenn sie aktiv sind. Zum Aufbau dieses Speichersystems können handelsübliche Speicherbausteine verwendet werden.
Im folgenden soll die Funktion dieses Speichersystems näher erläutert werden. Die Auswahl des Programmspeichers 32 erfolgt, wenn die Adressen A 16 bis A 19 logisch 0 sind. Dies wird durch den 1 aus 16 Decoder 34 festgestellt. Seine Ausgänge sind im inaktiven Zustand logisch 1, während sie im aktiven Zustand logisch 0 sind. Wenn also die Adreßbits A 16 bis A 19, die am Eingang des Decoders 34 anliegen, logisch 0 sind, so erscheint am Ausgang "0" des Decoders 34 das Signal logisch 0, das den -Eingang 44 des Programmspeichers 32 steuert. Da der -Eingang 44 ein negativer Eingang ist, wird der Programmspeicher 32 ausgewählt, wenn dieses Signal logisch 0 ist. Wie bereits vorstehend erwähnt, gilt für den Eingang 46 das gleiche, d. h. wenn das Signal logisch 0 ist, wird in diesen Speicherbereich geschrieben. Wenn dieses Signal dagegen logisch 1 ist, wird aus diesem Speicherbereich gelesen und die Informationen auf den Datenbus geschaltet. Da die Speichermatrix 26 (Adreßbereich 40000 bis FFFFF) mit den Adreßbits A 18 und A 19 eindeutig ausgewählt werden kann, werden beim Decoder 34 die Ausgänge 4 bis 15 nicht genutzt.
Der Indexspeicher 28 wird im Adreßbereich 10000 bis 100FF sowohl im Lese- als auch im Schreibbetrieb, sowie für die indizierte Adressierung der Speichermatrix 26 im Adreßbereich C0000 bis FFFFF nur im Lesebetrieb ausgewählt. Bei letzterem Adreßbereich wird ein Einschreiben in den Indexspeicher 28 durch die logische Verknüpfung des Signals mit den Adreßsignalen A 18 und A 19 durch ein UND-Glied 48, einen Invertierer 50 und ein NAND-Glied 52 verhindert. Zur Auswahl des Indexspeichers 28 wird das Signal des Ausgangs "1" des Decoders 34 über einen Invertierer 54 einem NOR-Glied 56 zugeführt, dessen Ausgangssignal den -Eingang 58 des Indexspeichers 28 steuert. Die Auswahl dieses Indexspeichers 28 erfolgt für den Adreßbereich C0000 bis FFFFF nicht durch den Decoder 34, sondern durch die Adreßsignale A 18 und A 19 unmittelbar.
Diese beiden Signale werden durch das UND-Glied 48 verknüpft, dessen Ausgang mit dem Eingang 60 des NOR-Gliedes 56 verbunden ist. Der Indexspeicher 28 muß eine sehr kurze Zugriffszeit haben, daß die Daten dieses Speichers innerhalb eines Speicherzyklus für die Adresse der Speichermatrix 26 benötigt werden.
Da der Indexspeicher 28 nur im Adreßbereich 10000 bis 100FF und nicht auch im Adreßbereich C0000 bis FFFFF beschrieben werden darf, ist der Datenpuffer 30 vorgesehen, der den Informationsfluß von den Datenleitungen 42 zum Indexspeicher 28 nur im Adreßbereich 10000 bis 100FF erlaubt. Die Steuerung dieses Datenpuffers 30 erfolgt durch das am Ausgang 1 des Decoders 34 erscheinende Signal sowie durch das Signal .
Die Speichermatrix 26 besteht aus 256 Zeilen à 1024 Bytes, was einen Speicherbereich von 256 kByte ergibt. Zur Adressierung der 256 Zeilen ist eine Zeilenadresse von 8 Bit Länge und zur Adressierung der 1024 Spalten eine Spaltenadresse von 10 Bit Länge erforderlich. Das ergibt für diese Speichermatrix 26 eine 18 Bit-Adresse. Da diese Speichermatrix 26 für den Adreßbereich 40000 bis 7FFFF zeilenweise und für den Adreßbereich 80000 bis FFFFF spaltenweise bzw. spaltenweise indiziert adressiert wird, kann das höchstwertige Adreßsignal A 19 zur Steuerung des ersten Multiplexers 36 verwendet werden. Wenn das Adreßsignal A 19 Null ist, so werden die 0-Eingänge des Multiplexers 36 benutzt. In diesem Falle findet keine Vertauschung von Zeilen- und Spaltenadressen statt, so daß der Speicherbereich zeilenweise adressiert wird. Ist das Adreßsignal A 19 dagegen 1, so werden die 1-Eingänge des Multiplexers 36 an die Adreßeingänge der Speichermatrix 26 geschaltet, mit der Folge, daß eine Vertauschung von Zeilen- und Spaltenadressen stattfindet. Die Adreßsignale A 8 bis A 17 werden dann zur Spaltenadresse und die Signale X 0 bis X 7 zur Zeilenadresse. Die Auswahl dieser Speichermatrix 26 erfolgt, wenn zumindest eines der beiden Adreßsignale A 18 und A 19 aktiv ist. Sie werden daher durch ein OR-Glied 60, dessen Ausgangssignal den -Eingang 62 der Speichermatrix 26 steuert, disjunktiv verknüpft.
Die Signale X 0 bis X 7 stammen vom zweiten Multiplexer 38. Mit diesem kann eine Umschaltung von den Adreßsignalen A 0 bis A 7 auf die Ausgangssignale I 0 bis I 7 des Indexspeichers 28 erfolgen. Diese Umschaltung ist erforderlich, wenn die Speichermatrix 26 spaltenweise indiziert adressiert werden soll. Da dies für den Speicherbereich C0000 bis FFFFF erfolgen soll, muß die Umschaltung erfolgen, wenn die beiden höchstwertigen Adreßsignale A 19 und A 19 gleichzeitig 1 sind, d. h. wenn das Signal SE am Ausgang des UND-Gliedes 48 1 ist.
Da dem Matrixspeicher 24 der Speicherbereich 20000 bis 3FFFF zugeordnet ist, erfolgt die Auswahl dieses Matrixspeichers 24 mit den Signalen und des Decoders 34. Diese Signale werden durch Invertierer 64 bzw. 66 invertiert und anschließend durch ein NOR-Glied 68 verknüpft, dessen Ausgang 70 mit dem -Eingang 72 des Matrixspeichers 24 verbunden ist. Dieser umfaßt einen Speicherbereich von 256×256 Byte = 64 kByte. Zu seiner Adressierung ist daher nur eine 16 Bit-Adresse, bestehend aus einer 8 Bit-Zeilen- und einer 8 Bit-Spaltenadresse, erforderlich. Diese 16 Bit-Adresse wird dem Matrixspeicher 24 vom dritten Multiplexer 40 zugeführt. Die Steuerung dieses Multiplexers 40 erfolgt durch das Signal vom Decoder 34. Ist dieses Signal logisch 0, so werden die 0-Eingänge des Multiplexers 40 für die Bildung der 16 Bit-Adresse des Matrixspeichers 24 verwendet. Diese 0-Eingänge sind mit den Adreßbits A 0 bis A 15 in aufsteigender normaler Adreßreihenfolge beaufschlagt. Bei den 1-Eingängen des Multiplexers 40 sind die Spalten- und Zeilenadreßbits des Matrixspeichers 24 vertauscht angeordnet. Die Adresse A 8 bis A 15 ist in diesem Falle die Spaltenadresse, während die Adresse A 0 bis A 7 die Zeilenadresse darstellt. Durch diese Adreßumschaltung durch den Multiplexer 40 kann der Matrixspeicher 24, der bei der Durchführung des vorstehend beschriebenen Verfahrens als Attribut- und Deskriptorspeicher dient, sowohl zeilenweise als auch spaltenweise adressiert werden.
Fig. 7 zeigt ein Indikatorsystem zur Klassifikation der Datenstruktur einer Datenelementreihe. Es besteht aus einer Schnittstellenkontrollschaltung 74, die den bidirektionalen Datenverkehr regelt, einem NUR-Lesespeicher 76, dem ein Register E und ein Register F nachgeschaltet sind, einer mit den Ausgängen dieser Register verbundenen Zähleranordnung 78, welche (8×2) 8 Bit-Einzelzähler umfaßt, einer von einem weiteren Zähler 80 mit 4 Bit-Ausgang gesteuerten 1 aus 16 Auswahlschaltung 82 und einer Steuereinheit 84 zur Steuerung dieser Komponenten.
Nachdem vorstehend der Aufbau dieses Indikatorsystems beschrieben wurde, wird im folgenden seine Funktionsweise anhand von Fig. 7 in Verbindung mit Fig. 8 erläutert. Zunächst werden die Datenelemente z. B. einer Datenelementspalte der Schnittstellenkontrollschaltung 74 zugeführt. Die durch das Signal RD aktivierte Steuereinheit 84 gibt ein Übernahmesignal R an die Schnittstellenkontrollschaltung 74 ab, wodurch die Übernahme der Datenelemente bewirkt wird. Diese dienen zur Adressierung des einspaltigen, aus 256 Zeilen bestehenden, die Indikatorcodeworte enthaltenden NUR-Lesespeichers 76. Zu Beginn des ersten Zyklus zur Übernahme des ersten Indikatorcodewortes in die Register E bzw. F werden sämtliche Zähler durch das Signal NORM rückgesetzt. Während jeweils eines Zyklus wird ein einem Datenelement entsprechendes Indikatorcodewort zunächst mit dem Takt T 1 in das Register E übernommen. Mit dem Takt T 3, der mit zeitlichem Abstand auf den Takt T 1 folgt, wird dasselbe Indikatorcodewort in das Register F übernommen. Wie aus Fig. 8 zu entnehmen ist, die eine 2×8 Bit-Zählerkombination der Zähleranordnung 78 von Fig. 7 im Detail zeigt, sind für jedes Bit der Register E und F zwei 8 Bit- Zähler vorgesehen. Dabei zählt beispielsweise der Zähler 86 wie oft das Bit 0 des Registers E logisch 1 ist und der Zähler 88 zählt die Wechsel von 0 nach 1 oder umgekehrt. Beim Zähler 86 wird dies dadurch realisiert, daß dem Zählereingang ein UND-Glied 90 vorgeschaltet ist, an dessen Eingängen das Signal E 0 des Registers E und der Takt T 2, der zeitlich zwischen dem Takt T 1 und dem Takt T 3 liegt, anliegen. Hat also das Bit E 0 des Registers E den Wert 1, so wird der Zähler 86 mit dem Takt T 2 um 1 erhöht.
Die Wechsel von 0 nach 1 oder umgekehrt werden beispielsweise bei der Bitposition 0 dadurch festgestellt, daß die Signale E 0 und F 0 der Register E und F einem EXKLUSIV- ODER-Glied 94 zugeführt werden, dessen Ausgang mit dem einen Eingang 96 eines UND-Gliedes 98 verbunden ist. Das Ausgangssignal dieses UND-Gliedes 98 steuert den Zähler 88. Stimmen die Signale E 0 und F 0 nicht überein, so ist das Ausgangssignal des EXKLUSIV-ODER-Gliedes 94 logisch 1. In diesem Falle wird bei Auftreten des Taktes T 2 A der Zähler 88 um 1 erhöht. Da ein am Ausgang des NUR-Lesespeichers 76 vorliegendes Indikatorcodewort beim Takt T 1 in das Register E und erst beim Auftreten des Taktes T 3 in das Register F übernommen wird, ist zum Zeitpunkt T 2 A, der zwischen dem Zeitpunkt T 1 und T 3 liegt, das am Ausgang des NUR-Lesespeichers 76 vorhandene Indikatorcodewort nur im Register E gespeichert, während im Register F noch das Indikatorcodewort enthalten ist, das beim unmittelbar vorausgehenden Zyklus aus dem NUR-Lesespeicher 76 ausgelesen wurde. Auf diese Weise kann mit dem Zähler 88 festgestellt werden, wie oft benachbarte Indikatorcodeworte einer Datenfolge bei der Bitposition 0 voneinander abweichen. Wichtig ist bei dieser Zähleranordnung, daß der Takt T 2 A im ersten Taktzyklus unterdrückt wird, da sonst die Anzahl der Bitwechsel falsch gezählt wird.
Nach der Übernahme sämtlicher Datenlemente einer Datenelementreihe durch die Schnittstellenkontrollschaltung 74 werden von der 1 aus 16-Auswahlschaltung 82 nacheinander die Signale AUSWAHL bis AUSWAHL 16 erzeugt, wobei die Signale AUSWAHL und Auswahl 1 die beiden Leitungstreiber 92 und 100 steuern. Zuerst wird der Zählerstand des Zählers 86 über den Leitungstreiber 92 und über die Schnittstellenkontrollschaltung 74 auf den Datenbus gegeben. Nach jeder Zählerstandausgabe wird der Zähler 80 durch ein von der Steuereinheit 84 erzeugtes Signal C um 1 hochgezählt. Der um 1 erhöhte Zählerstand des Zählers 80 dient zur Auswahl des nächsten Einzelzählers der Zähleranordnung 78.
Da für jedes Bit der Indikatorcodeworte zwei in Fig. 8 gezeigte Einzelzähler vorhanden sind, kann für jede Bitposition der Indikatorcodeworte einer Datenfolge festgestellt werden, wie oft die entsprechende Bitposition 1 ist bzw. wie oft Wechsel von 0 nach 1 oder umgekehrt stattfinden. Insgesamt sind also 8×2 = 16 8 Bit-Einzelzähler vorgesehen. Die Auswertung der Zählergebnisse kann beispielsweise per Software erfolgen.
In Fig. 9 ist das Blockschaltbild einer Halbzeichenkomprimiereinrichtung für Datenworte von 8 Bit Länge gezeigt. Sie umfaßt eine Schnittstellenschaltung 102, durch die der Datentransfer und die Datenkontrolle vorgenommen wird. Ihr sind ein MODUS-Register 104 einerseits und ein Multiplexer 106 mit nachfolgendem Zeichenregister 108 andererseits nachgeschaltet. Die Ausgänge des Zeichenregisters 108 sind mit den Eingängen einer Erkennungsschaltung 110 für ein Füllzeichen, beispielsweise X′F′, verbunden. Sie sind ferner mit dem niederwertigen Teil der Adreßeingänge eines Festwertspeichers 112, kurz ROM genannt, verbunden. Die höherwertigen Adreßeingänge dieses ROM 112 sind mit den vier niederwertigen Ausgängen des MODUS-Registers 104 verbunden. Insgesamt ist der ROM 112 mit einer 8 Bit-Adresse adressierbar und umfaßt daher maximal 256 Zeilen. Für jede Adresse sind 14 Bits im ROM 112 gespeichert. Während maximal 9 Bits für die Darstellung des Zeichens selbst vorgesehen sind, ist in weiteren 4 Bits die Anzahl der gültigen linksbündigen Zeichenbits codiert. Ein Bit ist für den Fehlerfall vorgesehen. Es setzt dann das Bit M 6 des MODUS-Registers 104. Die übrigen Ausgänge des ROM 112, die 13 Bits umfassen, sind mit einem G-Register 114 die gerade am Ausgang des ROM 112 vorliegenden Daten und das H-Register 116 die Daten enthält, die zuletzt aus dem ROM 112 ausgelesen wurden. Die Ausgänge beider Register 114 und 116 sind mit einem 13 Bit-Vergleicher 118 verbunden. Es ist ferner ein Zähler 120 vorgesehen, der in Abhängigkeit vom Vergleichsergebnis des Vergleichers 118 hochgezählt wird. Die Ausgänge dieses Zählers 120 sind ebenso wie die Ausgänge des H-Register 116 mit den Eingängen einer 13 Bit- Multiplexerschaltung 122 verbunden. Dieser sind ein 9 Bit- Schieberegister 124 sowie ein Schiebezähler 126 nachgeschaltet. Der serielle Ausgang des Schieberegisters 124 ist mit dem Eingang eines Pufferspeichers 127 verbunden. Es ist ferner ein Zeichenzähler 128 vorgesehen, der bei der Übernahme von jeweils 8 Bits vom Schieberegister 124 in den Pufferspeicher 127 um 1 hochgezählt wird. Das funktionsgerechte Zusammenwirken der vorstehend genannten Komponenten der Halbzeichenkomprimiereinrichtung wird durch einen Mikroprozessor 130 gesteuert.
Im folgenden soll die Funktionsweise dieser Halbzeichenkomprimiereinrichtung näher erläutert werden. Soll eine Folge von 8 Bit-Datenworten, beispielsweise eine Datenelementspalte einer Speichermatrix komprimiert werden, so wird zunächst das vom vorstehend beschriebenen Indikatorsystem für die betreffende Datenspalte erzeugte Klassifikationsergebnis von der Schnittstellenschaltung 102 übernommen, und in das MODUS-Register 104 eingeschrieben. Dieses MODUS-Register 104 umfaßt 8 Bits, wovon 6 Bits durch die Signale D 0 bis D 5 geladen werden. Die restlichen Bits sind Fehleranzeigen. Dabei dienen die Bits M 0 bis M 3 zur Speicherung des vom Indikatorsystem erhaltenen Klassifikationsergebnisses, durch das die Art des Komprimierens festgelegt wird. Das Bit M 4 gibt an, ob ein Füllzeichen, in diesem Falle das Halbzeichen X′F′ unterdrückt werden soll. Das Bit M 5 dient zur Umschaltung der Datenauswahl, d. h. durch das Bit M 5 wird festgelegt, ob bei den anschließend zu übernehmenden Datenworten die Bits D 0 bis D 3 oder D 4 bis D 7 als zu komprimierende Halbzeichen herangezogen werden sollen. Das Bit M 6 dient zur Fehleranzeige und wird vom ROM 112 übernommen. Es zeigt an, wenn Daten nicht korrekt komprimiert werden konnten. Das Bit M 7 bleibt frei.
Nach dem Laden des MODUS-Registers werden die Datenworte der zu komprimierenden Datenelementspalte nacheinander von der Schnittstellenschaltung 102 übernommen und dem Multiplexer 106 zugeführt. Von diesem werden in Abhängigkeit vom MODUS-Register-Bit M 5 entweder die Datenbits D 0 bis D 3 oder die Datenbits D 4 bis D 7 ausgewählt und dem Zeichenregister 108 zugeführt. Anschließend werden die vom Zeichenregister 108 übernommenen Datenbits durch die Erkennungsschaltung 110 für das Füllzeichen, in diesem Falle für das Halbzeichen X′F′, überprüft. In Abhängigkeit vom MODUS-Register-Bit M 4 wird dann das übernommene 4 Bit-Halbzeichen unterdrückt, wenn es mit dem Halbzeichen X′F′ übereinstimmt. Anschließend wird der ROM 112 durch die Bits M 0 bis M 3 des MODUS-Registers 104 als höherwertiger Adreßteil und mit dem übernommenen Halbzeichen als niederwertiger Adreßteil vom Zeichenregister 108 adressiert. Dabei geben die 4 Bits M 0 bis M 3 an, auf welche Weise das jeweilige Halbzeichen konvertiert werden soll. Da aufgrund der 4 Bit-Länge der Halbzeichen nur Maximal 16 verschiedene Halbzeichen auftreten können, sind für jede durch die höherwertigen 4 Bits der ROM-Adresse festgelegte Komprimierungsart 16 Zeilen im ROM 112 vorgesehen, in denen die Komprimierungscodeworte der Halbzeichen für die betreffende Komprimierungsart enthalten sind. Neben den maximal 9 Bits für die Darstellung der Halbzeichen sind im ROM 112 in jeder Zeile jeweils weitere 4 Bits vorgesehen, die die Anzahl der gültigen linksbündigen Codewortbits wiedergeben. Das 14. Bit ist, wie bereits vorstehend erwähnt, für den Fehlerfall vorgesehen und setzt das MODUS-Register- Bit M 6. Das G-Register 114 und das H-Register 116 werden vom ROM 112 derart geladen, daß das G-Register 114 und das H-Register 116 den unmittelbar davor ausgelesenen Wert enthält. Durch den Vergleicher 118 werden die beiden Register 114 und 116 nach jeder Codewortübernahme miteinander verglichen. Mit dem Zähler 120 wird gezählt, wie oft die beiden Register 114 und 116 nach Übernahme eines neuen Codewortes unmittelbar hintereinander übereinstimmen. Mit Hilfe der Multiplexerschaltung 122 wird entweder der Inhalt des H-Registers 116 oder der Zählerstand des Zählers 120 an das Schieberegister 124 und an den Schiebezähler 126 ausgegeben. Die Steuerung der Multiplexerschaltung 122 wird dabei durch den Mikroprozessor 130 vorgenommen. Stimmen die Register 114 und 116 mehrfach hintereinander nicht überein, so wird der Inhalt des H-Registers 116 jeweils dem Schieberegister 124 und dem Schiebezähler 126 zugeführt. Dabei erhält das Schieberegister 124 die maximal 9 Bits des Komprimierungscodewortes und der Schiebezähler 126 das Codewort für die Anzahl der gültigen linksbündigen Codewortbits des Schieberegisters 124. Stimmen dagegen die Register 114 und 116 beispielsweise n mal hintereinander überein, so wird zunächst der Inhalt des H-Registers 116 mit Hilfe der Multiplexerschaltung 122 an das Schieberegister 124 bzw. an den Schiebezähler 126 ausgegeben. Anschließend wird, gesteuert durch den Mikroprozessor 130, das Zählergebnis des Zählers 120 der Multiplexerschaltung 122 zugeführt und durch diese in Abhängigkeit von der durch das Klassifikationsergebnis des Indikatorsystems festgelegten Art der Komprimierung umcodiert und in dieser Form an das Schieberegister 124 und an den Schiebezähler 126 ausgegeben. Auch in diesem Falle enthält der Schiebezähler 126 die Anzahl der gültigen linksbündigen Bits des Schieberegisters 124. Diese werden, gesteuert durch den Schiebezähler 126, an den Pufferspeicher 127 ausgegeben. Die von diesem übernommenen Bits werden gezählt. Bei der Übernahme von je 8 Bits wird der Zeichenzähler 128 jeweils um 1 erhöht. Nach der Komprimierung sämtlicher Datenelemente der Datenelementspalte wird der Pufferspeicher 127 so lange mit Nullen aufgefüllt, bis die gespeicherte Bitanzahl ein ganzzahliges Vielfaches von 8 Bits ist. Anschließend wird der Inhalt des Pufferspeichers 127, der nun die Datenelemente der Datenelementspalte als Komprimierungscodewort enthält, der Schnittstellenschaltung 102 zugeführt und dann ausgegeben.
Die Auswahlsignale des gesamten aus zwei Halbzeichenkomprimierungseinrichtungen bestehenden Komprimierers sind derart festgelegt, daß die beiden Halbzeichenkomprimiereinrichtungen 4-bitweise parallel arbeiten können, die Moduseinstellung und das Auslesen der Ergebnisse jedoch getrennt erfolgen kann.
In Fig. 10 ist eine Schaltungsanordnung zur logischen Verknüpfung von Datenelementen gemäß folgender Wahrheitstabelle gezeigt:
A × B = 0, falls A = B
A × B = B, falls AB
unter der Bedingung B ≠ 0, mit 0 als Wiederholungszeichen.
Diese Schaltungsanordnung besteht aus einem A-Register 132, aus einem B-Register 134, aus 8 EXKLUSIV-ODER-Gliedern 136, durch die das A-Register 132 und das B-Register 134 bitweise miteinander verknüpft werden, aus einem ODER-Glied 138, das die Ausgänge der 8 EXKLUSIV-ODER-Glieder 136 disjunktiv verknüpft, und aus einem Invertierer 140, über den das Ausgangssignal des ODER-Gliedes 138 einem Eingang eines UND-Gliedes 142 zugeführt wird. Der zweite Eingang des UND-Gliedes 142 wird mit dem Takt T 2 beaufschlagt. Durch das Ausgangssignal RES B des UND-Gliedes 142 kann das B- Register 134 rückgesetzt werden.
Sollen zwei 8 Bit-Datenelemente A und B gemäß obiger Funktion logisch verknüpft werden, so werden sie mit dem Takt T 1 in das A-Register 132 bzw. in das B-Register 134 geladen. Durch die bitweise EXKLUSIV-ODER-Verknüpfung der Inhalte der beiden Register 132 und 134 erhält man an den Ausgängen derjenigen EXKLUSIV-ODER-Glieder 136 ein Signal logisch 0, deren Eingänge übereinstimmen. Stimmen die Inhalte der beiden Register 132 und 134 in allen Bitpositionen überein, so erscheint an sämtlichen Ausgängen der EXKLUSIV-ODER-Glieder 136 das Signal logisch 0, so daß am Ausgang des ODER-Gliedes 138 ebenfalls das Signal logisch 0 und am Ausgang des Invertierers 140 folglich das Signal logisch 1 anliegt. Die UND-Verknüpfung des logisch 1 Signales am Ausgang des Invertierers 140 mit dem Taktsignal T 2 durch das UND-Glied 142 bewirkt, daß an dessen Ausgang bei einem Takt T 2 = logisch 1 das Signal RES B = logisch 1 auftritt, das das B-Register 134 rücksetzt, so daß dieses an allen Bitpositionen Nullen enthält.
Ist dagegen das Ausgangssignal wenigstens eines der 8 EXKLUSIV-ODER-Glieder 136 logisch 1, was dann der Fall ist, wenn die Inhalte der beiden Register 132 und 134 zumindest an einer Bitposition nicht übereinstimmen, so erscheint am Ausgang des ODER-Gliedes 138 das Signal logisch 1, welches nach Invertierung durch den Invertierer 140 dem UND-Glied 142 zugeführt wird. In diesem Falle bleibt der Signalpegel logisch 0 am Ausgang des UND-Gliedes 142 bei Auftreten des Taktsignals T 2 = logisch 1 erhalten, mit der Folge, daß das B-Register 134 nicht rückgesetzt wird und seinen Inhalt beibehält.

Claims (37)

1. Verfahren zum Komprimieren und Dekomprimieren mehrerer strukturverwandter Datenfolgen, insbesondere Datensätze, in einer Datenverarbeitungseinrichtung bei dem die zu komprimierenden Datenfolgen in einer Speichermatrix unter Berücksichtigung ihrer Strukturverwandtschaft parallel gespeichert werden, zur Gewinnung einer eine Anzahl von Datenelementen der Datenfolgen verbindenden Charakteristik für mehrere Datenfolgen eine Strukturanalyse von Datenelementen übereinstimmender Ordnungszahl vorgenommen wird, anstelle dieser Datenelemente ein Code verwendet wird und beim Dekomprimieren die durch Decodieren des Codes gewonnenen Datenelemente in Datenfolgen unter Berücksichtigung der jeweils betreffenden Datenelement- Ordnungszahl geordnet werden, dadurch gekennzeichnet, daß vor der Strukturanalyse die gespeicherten Datenfolgen auf ihre Länge untersucht, mit Datenfolgen gleicher Länge Datenfolgengruppen gebildet und die Datenfolgengruppen nach zunehmender oder abnehmender Länge geordnet werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß geordnete Datenfolgen gleicher effektiver Länge auf übereinstimmende Datenfolgecharakteristik untersucht und entsprechend geordnet werden.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß bei geordneten Datenfolgen gleicher effektiver Länge und gleicher Charakteristik die Speichermatrix-Zeilennummer festgestellt wird und daß diese Datenfolgen nach zunehmender oder abnehmender Speichermatrix-Zeilennummer geordnet werden.
4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß jede Datenfolge durch ein mindestens die effektive Datenfolgenlänge, mindestens eine Datenfolgecharakteristik und die Speichermatrix- Zeilennummer enthaltendes Attributfeld ergänzt wird.
5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die einzelnen Datenfolgen seriell vorkomprimiert werden.
6. Verfahren nach Anspruch 4 und 5, dadurch gekennzeichnet, daß das jeweils letzte Datenelement mindestens einer Datenfolge sowie ggf. die Zahl solcher Datenelemente (Wiederholungsfaktor) in das Attributfeld übernommen wird und daß dieses letzte Datenelement sowie seine mit ihm übereinstimmenden unmittelbaren Vorgänger zur Verkürzung in der Datenfolge eliminiert werden.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß das letzte und das vorletzte Datenelement der unverkürzten Datenfolge als Datenfolgecharakteristik in das Attributfeld übernommen und in der Datenfolge eliminiert werden.
8. Verfahren nach einem der Ansprüche 5 bis 7, dadurch gekennzeichnet, daß mindestens die längste aus gleichen Datenelementen bestehende Zeichenkette einer Datenfolge eliminiert und durch Füllzeichen ersetzt wird und daß diese Zeichenkette in einem für jede Datenfolge separat vorgesehenen Deskriptorfeld durch einen den Zeichenkettenanfang markierenden Zeiger, durch die Zeichenkettenlänge und durch das ersetzte Zeichen beschrieben wird.
9. Verfahren nach einem der Ansprüche 5 bis 8, dadurch gekennzeichnet, daß zumindest die größte Flatterung von Störzeichen, beispielsweise von Leerzeichen, Nullzeichen und dgl. bei den zu komprimierenden Datenfolgen festgestellt wird, daß die Störzeichen durch Füllzeichen ersetzt werden und daß das Störzeichenfeld durch einen den Störzeichenfeldanfang markierenden Flatterungszeiger, durch die Feldlänge und durch das ersetzte Störzeichen beschrieben wird.
10. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß für jede Datenelementspalte jeweils mindestens ein Spaltendeskriptorfeld vorgesehen wird, das die Datenelementspalte zumindest teilweise beschreibt.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß aus gleichen Zeichen bestehende Datenelementspalten eliminiert, durch Füllzeichen ersetzt und in den betreffenden Deskriptorfeldern durch Angabe des jeweils ersetzten Zeichens beschrieben werden.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß zumindest die längste aus gleichen Datenelementen bestehende Zeichenkette einer Datenelementspalte eliminiert und durch Füllzeichen ersetzt wird und daß diese Zeichenkette im jeweiligen Spaltendeskriptor durch einen den Zeichenkettenanfang markierenden Zeiger, durch die Zeichenkettenlänge und durch das ersetzte Zeichen beschrieben wird.
13. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß zumindest die längste aus gleichen Datenelementen bestehende Zeichenkette einer Datenelementspalte in ein im Vergleich zur betreffenden Zeichenkette kürzeres Codewort umcodiert und durch dieses ersetzt wird und daß die dabei freiwerdenden Datenelementplätze mit Füllzeichen aufgefüllt werden.
14. Verfahren nach Anspruch 10, 12 oder 13, dadurch gekennzeichnet, daß zwei benachbarte Zeichenketten einer Datenelementspalte vertauscht werden und daß ein die Berührungsstelle der Zeichenkette in ihrer ursprünglichen Lage markierender Zeiger und die Längen der Zeichenketten im Deskriptorfeld der betreffenden Datenelementspalte gespeichert werden.
15. Verfahren nach Anspruch 10, 12, 13 oder 14, dadurch gekennzeichnet, daß die Datenelemente mindestens eines Teiles einer Datenelementspalte in einen für diese spezifischen, weniger redundanten Code umgeschlüsselt werden.
16. Verfahren nach Anspruch 10, 12, 13, 14 oder 15, dadurch gekennzeichnet, daß die Datenelemente einer Datenelementspalte durch die logische Funktion mit der Wahrheitstabelle A × B = W, falls A = B und
A × B = B, falls ABunter der Bedingung BW, wobei W ein beliebiges Wiederholungszeichen ist, verknüpft werden.
17. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß jedes Datenelement einer Datenelementspalte in ein Bewertungs- oder Indikatorcodewort umgeschlüsselt wird, daß die Indikatorcodeworte der einzelnen Datenelemente einer Datenelementspalte bitweise addiert werden, daß unmittelbar benachbarte Indikatorcodeworte bitweise EXKLUSIV-ODER- verknüpft werden, daß die Verknüpfungsergebnisse addiert werden und daß die beiden Additionsergebnisse zur Klassifikation der Datenstruktur ausgewertet werden.
18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß jede Datenelementspalte halbzeichenweise in eine durch das Klassifikationsergebnis festgelegte Art von Codeworten umgesetzt wird.
19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß das Klassifikationsergebnis durch m Bits ausgedrückt wird, daß aus dem m Bit- Klassifikationsergebnis zusammen mit einem n Bit- Halbzeichen eine (m+n) Bit-Adresse zur Adressierung eines die Codeworte enthaltenden Codespeichers (112) gebildet wird und daß die adressierten Codeworte nacheinander aus dem Codespeicher (112) ausgelesen werden.
20. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß jeweils die beiden zuletzt aus dem Codespeicher (112) ausgelesenen Codeworte nach jedem Lesezyklus des Codespeichers (112) auf Gleichheit überprüft werden.
21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß die Anzahl der unmittelbar aufeinanderfolgenden Lesezyklen des Codespeichers (112), nach denen jeweils die beiden zuletzt aus dem Codespeicher (112) ausgelesenen Codeworte übereinstimmen, gezählt wird.
22. Verfahren nach Anspruch 21, dadurch gekennzeichnet, daß das Zählergebnis in Abhängigkeit von der Art der Codeworte derart verschlüsselt wird, daß das verschlüsselte Zählergebnis von den betreffenden Codeworten unterscheidbar ist.
23. Verfahren nach einem der Ansprüche 18 bis 22, dadurch gekennzeichnet, daß das in einer Datenelementspalte überwiegend auftretende Halbzeichen ein einziges Mal und jedes der verbleibenden Halbzeichen sowie ein die jeweilige Stelle dieser verbleibenden Halbzeichen anzeigender Zeiger separat im Komprimierungscode dargestellt werden.
24. Datenverarbeitungseinrichtung zur Durchführung des Verfahrens nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß eine Speichermatrix (26) an ihren Adreßeingängen mit einer ersten Umschalteinrichtung (36) versehen ist, mit der in Abhängigkeit von einem ersten Umschaltsignal die Zeilen- und Spaltenadressen der Datenelementspeicherplätze vertauschbar sind.
25. Datenverarbeitungseinrichtung nach Anspruch 24, dadurch gekennzeichnet, daß ein Indexspeicher (28) vorgesehen ist, dessen Zeilenanzahl mit derjenigen der Speichermatrix (26) übereinstimmt und der die Zeilenadressen der Speichermatrix (26) in sortierter Reihenfolge enthält.
26. Datenverarbeitungseinrichtung nach Anspruch 25, dadurch gekennzeichnet, daß eine zweite Umschalteinrichtung (38) vorgesehen ist, mit der die Zeilenadreßeingänge der Speichermatrix (26) in Abhängigkeit von einem zweiten Umschaltsignal mit den Ausgängen des Indexspeichers (28) beaufschlagbar sind.
27. Datenverarbeitungseinrichtung nach einem der Ansprüche 24 bis 26, dadurch gekennzeichnet, daß ein Attribut- und Deskriptorspeicher (24) an seinen Adreßeingängen mit einer dritten Umschalteinrichtung (40) verbunden ist, mit der in Abhängigkeit von einem dritten Umschaltsignal die Zeilen- und Spaltenadressen der Speicherplätze vertauschbar sind.
28. Datenverarbeitungseinrichtung nach einem der Ansprüche 24 bis 27, dadurch gekennzeichnet, daß mindestens ein Decoder (34) zur Gewinnung des jeweiligen Umschaltsignals aus der Speicheradresse vorgesehen ist.
29. Datenverarbeitungseinrichtung nach einem der Ansprüche 24 bis 28, dadurch gekennzeichnet, daß die jeweilige Umschalteinrichtung (36, 38, 40) ein Multiplexer ist.
30. Datenverarbeitungseinrichtung zur Durchführung des Verfahrens nach einem der Ansprüche 17 bis 23, dadurch gekennzeichnet, daß ein die Indikatorcodeworte enthaltender Lesespeicher (76) vorgesehen ist, der durch die Datenelemente adressierbar ist.
31. Datenverarbeitungseinrichtung nach Anspruch 30, dadurch gekennzeichnet, daß eine Zähleranordnung (78) mit gegenüber der Bit-Zahl der Indikatorcodeworte doppelten Zahl von Einzelzählern (86, 88) mit dem Datenausgang des Lesespeichers (76) verbunden ist und daß der Hälfte der Einzelzähler (86, 88) EXKLUSIV-ODER-Glieder (94) vorgeschaltet sind, deren Eingängen jeweils eine Bitposition von im Lesespeicher (76) unmittelbar benachbarten Indikatorcodeworten zugeführt ist.
32. Datenverarbeitungseinrichtung nach Anspruch 31, dadurch gekennzeichnet, daß zwischen dem Datenausgang des Lesespeichers (76) und den Eingängen der EXKLUSIV-ODER- Glieder (94) zwei Register (E, F) vorgesehen sind, welche zur Zwischenspeicherung des jeweils zuletzt bzw. des unmittelbar davor aus dem Lesespeicher (76) ausgelesenen Inikatorcodewortes dienen.
33. Datenverarbeitungseinrichtung zur Durchführung des Verfahrens nach einem der Ansprüche 18 bis 23, dadurch gekennzeichnet, daß ein Festwertspeicher (112) als Codespeicher vorgesehen ist, der vom Datenstruktur-Klassifikationsergebnis der zu komprimierenden Datenspalte und vom jeweiligen Halbzeichen der betreffenden Datenspalte adressierbar ist, wobei das Datenstrukturklassifikationsergebnis den höherwertigen Adreßteil und das jeweilige Halbzeichen den niederwertigen Adreßteil bildet.
34. Datenverarbeitungseinrichtung nach Anspruch 33, dadurch gekennzeichnet, daß dem Codespeicher (112) ein erstes und ein zweites Register (114, 116) zur Zwischenspeicherung des jeweils zuletzt und des unmittelbar davor ausgelesenen Codewortes nachgeschaltet sind.
35. Datenverarbeitungseinrichtung nach Anspruch 34, dadurch gekennzeichnet, daß eine Vergleichsschaltung (118) mit den Ausgängen des ersten (114) und des zweiten Registers (116) verbunden ist, die einen Zähler (120) steuert.
36. Datenverarbeitungseinrichtung nach Anspruch 35, dadurch gekennzeichnet, daß zum von der Art der Codeworte abhängigen Verschlüsseln des auszugebenden Zählerstandes des Zählers (120) eine die Verschlüsselungscodeworte enthaltende Multiplexerschaltung (122) vorgesehen ist.
37. Datenverarbeitungseinrichtung zur Durchführung des Verfahrens nach einem der Ansprüche 16 bis 23, dadurch gekennzeichnet, daß ein A-Register (132) und ein B-Register (134) vorgesehen sind, das auch als Ergebnisregister dient, daß die Ausgänge der beiden Register (132, 134) bitweise mit den Eingängen von EXKLUSIV-ODER-Gliedern (136) verbunden sind und daß die Ausgänge der EXKLUSIV-ODER-Glieder (136) mit den Eingängen eines disjunktiven Verknüpfungsgliedes (138) verbunden sind, dessen Ausgangssignal den Rücksetzeingang des B-Registers (134) steuert.
DE19853525898 1985-07-19 1985-07-19 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchfuehrung des verfahrens Granted DE3525898A1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE19853525898 DE3525898A1 (de) 1985-07-19 1985-07-19 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchfuehrung des verfahrens
US07/040,772 US4903018A (en) 1985-07-19 1986-07-16 Process for compressing and expanding structurally associated multiple-data sequences, and arrangements for implementing the process
PCT/DE1986/000289 WO1987000714A1 (en) 1985-07-19 1986-07-16 Process for compressing and expanding structurally associated multiple-data sequences, and arrangements for implementing the process
EP86904098A EP0230437B1 (de) 1985-07-19 1986-07-16 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchführung des verfahrens
DE8686904098T DE3682182D1 (de) 1985-07-19 1986-07-16 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchfuehrung des verfahrens.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19853525898 DE3525898A1 (de) 1985-07-19 1985-07-19 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchfuehrung des verfahrens

Publications (2)

Publication Number Publication Date
DE3525898A1 DE3525898A1 (de) 1987-01-29
DE3525898C2 true DE3525898C2 (de) 1988-11-24

Family

ID=6276250

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19853525898 Granted DE3525898A1 (de) 1985-07-19 1985-07-19 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchfuehrung des verfahrens
DE8686904098T Expired - Fee Related DE3682182D1 (de) 1985-07-19 1986-07-16 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchfuehrung des verfahrens.

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE8686904098T Expired - Fee Related DE3682182D1 (de) 1985-07-19 1986-07-16 Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchfuehrung des verfahrens.

Country Status (4)

Country Link
US (1) US4903018A (de)
EP (1) EP0230437B1 (de)
DE (2) DE3525898A1 (de)
WO (1) WO1987000714A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0497083A1 (de) * 1991-01-31 1992-08-05 Telefonaktiebolaget L M Ericsson Transcoder und verbessertes Ladsystem für ein Mobilfunkkommunikationssystem

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9405914D0 (en) * 1994-03-24 1994-05-11 Discovision Ass Video decompression
EP0576749B1 (de) * 1992-06-30 1999-06-02 Discovision Associates Datenpipelinesystem
JP2527458B2 (ja) * 1988-03-04 1996-08-21 富士通株式会社 デ―タ転送制御装置
WO1991004527A1 (en) * 1989-09-14 1991-04-04 Megaword International Pty. Ltd. A search method and circuit
US5426779A (en) * 1991-09-13 1995-06-20 Salient Software, Inc. Method and apparatus for locating longest prior target string matching current string in buffer
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
US5842033A (en) * 1992-06-30 1998-11-24 Discovision Associates Padding apparatus for passing an arbitrary number of bits through a buffer in a pipeline system
US6435737B1 (en) 1992-06-30 2002-08-20 Discovision Associates Data pipeline system and data encoding method
US6047112A (en) * 1992-06-30 2000-04-04 Discovision Associates Technique for initiating processing of a data stream of encoded video information
US6112017A (en) * 1992-06-30 2000-08-29 Discovision Associates Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus
US5768561A (en) * 1992-06-30 1998-06-16 Discovision Associates Tokens-based adaptive video processing arrangement
US6330665B1 (en) 1992-06-30 2001-12-11 Discovision Associates Video parser
US6417859B1 (en) 1992-06-30 2002-07-09 Discovision Associates Method and apparatus for displaying video data
US6034674A (en) * 1992-06-30 2000-03-07 Discovision Associates Buffer manager
US7095783B1 (en) 1992-06-30 2006-08-22 Discovision Associates Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto
US5809270A (en) * 1992-06-30 1998-09-15 Discovision Associates Inverse quantizer
US6067417A (en) * 1992-06-30 2000-05-23 Discovision Associates Picture start token
US6079009A (en) * 1992-06-30 2000-06-20 Discovision Associates Coding standard token in a system compromising a plurality of pipeline stages
US6009200A (en) * 1992-12-17 1999-12-28 Sony Corporation Dynamic image processing apparatus and method
US5805914A (en) * 1993-06-24 1998-09-08 Discovision Associates Data pipeline system and data encoding method
US5828836A (en) * 1993-10-08 1998-10-27 International Business Machines Corporation Networked information communication system
CA2145379C (en) * 1994-03-24 1999-06-08 William P. Robbins Method and apparatus for addressing memory
CA2145363C (en) * 1994-03-24 1999-07-13 Anthony Mark Jones Ram interface
CA2145365C (en) * 1994-03-24 1999-04-27 Anthony M. Jones Method for accessing banks of dram
US6217234B1 (en) * 1994-07-29 2001-04-17 Discovision Associates Apparatus and method for processing data with an arithmetic unit
GB9417138D0 (en) * 1994-08-23 1994-10-12 Discovision Ass Data rate conversion
CA2460349A1 (en) * 2001-07-11 2003-02-06 Daniel Kilbank System and method for compressing data
US7365661B2 (en) * 2002-11-14 2008-04-29 Fyre Storm, Inc. Power converter circuitry and method
US7202872B2 (en) * 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3394354A (en) * 1965-11-30 1968-07-23 Ibm Multiple word random access memory
US3504112A (en) * 1966-01-20 1970-03-31 Ibm Two-dimensional image data encoding and decoding
US3521241A (en) * 1967-01-03 1970-07-21 Ibm Two-dimensional data compression
US4319225A (en) * 1974-05-17 1982-03-09 The United States Of America As Represented By The Secretary Of The Army Methods and apparatus for compacting digital data
US4077034A (en) * 1974-11-04 1978-02-28 Dell Harold R Data compression
DE2503185A1 (de) * 1975-01-27 1976-07-29 Ibm Deutschland Verfahren und anordnung zur speicherplatzminimierung von computercodierten fuer den halbtonbilddruck bestimmten daten

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0497083A1 (de) * 1991-01-31 1992-08-05 Telefonaktiebolaget L M Ericsson Transcoder und verbessertes Ladsystem für ein Mobilfunkkommunikationssystem
WO1992014344A1 (en) * 1991-01-31 1992-08-20 Telefonaktiebolaget Lm Ericsson Transcoder and improved land system for a mobile radio communication system

Also Published As

Publication number Publication date
EP0230437B1 (de) 1991-10-23
US4903018A (en) 1990-02-20
WO1987000714A1 (en) 1987-01-29
EP0230437A1 (de) 1987-08-05
DE3682182D1 (de) 1991-11-28
DE3525898A1 (de) 1987-01-29

Similar Documents

Publication Publication Date Title
DE3525898C2 (de)
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE3545125C2 (de)
DE2723523A1 (de) Kompression und dekompression von gespeicherten digitaldaten
DE2264090A1 (de) Datenverdichtungssystem
DE2751097A1 (de) Triggerschaltungseinheit
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE2744109C2 (de)
DE2703559A1 (de) Rechnersystem
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE3742142A1 (de) Verfahren und vorrichtung zur kompression und rekonstruktion von datenfolgen
EP1145113B1 (de) Verfahren und anordnung zur erzeugung und ausführung von komprimierten programmen eines vliw-prozessors
DE2454745A1 (de) Binaerzaehler mit fehlererkennung und korrektur voruebergehender fehler
DE10012127B4 (de) Dekodiervorrichtung und Dekodierverfahren zum Entschachteln von Daten
EP0427884B1 (de) Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten
DE2233164B2 (de) Schaltungsanordnung zur uebertragung von aufeinanderfolgenden bitstellen zwischen zwei registern
DE3105503A1 (de) Assoziativer zugriffsspeicher
DE3633227A1 (de) Anordnung zur umwandlung einer virtuellen adresse in eine physikalische adresse fuer einen in seiten organisierten arbeitsspeicher einer datenverarbeitungsanlage
DE1808159A1 (de) Einrichtung zur Umwandlung von Dualzahlen in binaer codierte Dezimalzahlen in paralleler Darstellung
EP1186175B1 (de) Verfahren und vorrichtung zur komprimierung und dekomprimierung von daten
DE3009317A1 (de) Hybrid-assoziativspeicher
DE3432837A1 (de) Datenkompressions- und datenexpandiereinrichtung zum uebertragen bzw. speichern von daten
DE2042596A1 (de) Schaltungsanordnung zur Umsetzung eines einzigen kodierten Eingangszeichens in eine Mehrzahl kodierter Ausgangszei chen
DE2136536B2 (de) Verfahren und Anordnung zur Korn pnmierung und Dekompnmierung binarer Daten
DE4204113C1 (en) Measurement data compression method for communication and control processes on distribution line - defining identification classes for data sets, and protocolling repeated sets

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: WIEBACH, HEINZ-ULRICH, DIPL.-MATH., 6382 FRIEDRICH

8181 Inventor (new situation)

Free format text: LIDZBA, REINHARD, DIPL.-ING., 6000 FRANKFURT, DE WIEBACH, HEINZ-ULRICH, DIPL.-MATH., 6382 FRIEDRICHSDORF, DE

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee