DE4342521C1 - Compressed data expansion method - Google Patents

Compressed data expansion method

Info

Publication number
DE4342521C1
DE4342521C1 DE19934342521 DE4342521A DE4342521C1 DE 4342521 C1 DE4342521 C1 DE 4342521C1 DE 19934342521 DE19934342521 DE 19934342521 DE 4342521 A DE4342521 A DE 4342521A DE 4342521 C1 DE4342521 C1 DE 4342521C1
Authority
DE
Germany
Prior art keywords
target
symbol
register
symbols
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19934342521
Other languages
German (de)
Inventor
Thomas Koehler
Klaus Joerg Getzlaff
Ralph Koester
Tilmann Stoehr
Helmut Kohler
Norbert Schumacher
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to DE19934342521 priority Critical patent/DE4342521C1/en
Application granted granted Critical
Publication of DE4342521C1 publication Critical patent/DE4342521C1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

Abstract

The method uses source and target registers (15,16,26 to 29) to alternately receive and take out data blocks of predefined lengths. Index symbols are selected from the contacts of the source register and used as addresses of dictionary memory (14) whose entries contain expanded data in the form of variable length character symbols. Data blocks of predefined lengths are formed from the character symbols and stored in target registers. A divider (22), a multiplexer circuit and control circuit dynamically select the target register to alternately load the target register and transmit complete data blocks to memory.

Description

Die Erfindung betrifft ein Verfahren und eine Anordnung zur Expansion komprimierter Daten, unter Verwendung eines Quellen­ speichers zur Aufnahme von Blöcken komprimierter Daten, die vorzugsweise nach der Lempel-Ziv-Methode erzeugte Indexsymbole enthalten, unter Verwendung eines Wörterbuchspeichers, der Einträge von expandierten Zeichensymbolen enthält, die den Indexsymbolen zugeordnet sind, und eines Zielspeichers zur Aufnahme der expandierten Daten.The invention relates to a method and an arrangement for Expand compressed data using a source memory to hold blocks of compressed data preferably index symbols generated according to the Lempel-Ziv method included, using a dictionary store that Contains entries of expanded character symbols that the Index symbols are assigned, and a target memory for Inclusion of the expanded data.

Bei der Speicherung und Übertragung großer Datenmengen ist es üblich, Verfahren zur Datenkomprimierung anzuwenden. Eine weit verbreitete Methode zur Datenkomprimierung ist das Substitu­ tionsverfahren, wonach häufig wiederkehrende Zeichen oder Zei­ chenketten durch Ziffern oder alphanumerische Symbole ersetzt werden, die erheblich weniger Speicherplatz und weniger Zeit zur Datenspeicherung und Datenübertragung erfordern (US-PS 48 43 389).It is when storing and transferring large amounts of data common to use data compression techniques. A far The most common method for data compression is the substitu tion process, according to which frequently recurring characters or times chain chains replaced by numbers or alphanumeric symbols that require significantly less storage space and less time Require data storage and data transfer (U.S. Patent 4,843,389).

Die ersetzten Zeichen oder Zeichenketten werden in Zuordnung zu den sie ersetzenden Symbolen in ein Wörterbuch eingetragen, wo sie bei der Expansion der verdichteten Daten unter Verwendung der Symbole aufgesucht und entnommen werden zur Wiederherstellung der ursprünglichen Zeichenfolge.The replaced characters or strings are assigned to the symbols to replace them in Dictionary where they entered the expansion of the summarized data using the symbols and be taken to restore the original String.

Ein bevorzugtes Verfahren zur Datenkompression ist die Lempel- Ziv-Methode (IEEE Transactions on Information Theory, Vol. IT- 23, Nr. 3, Mai 1977, Seiten 337-343). Nach dieser Methode wird jedem Eintrag eines Wörterbuches ein Indexsymbol zugeordnet. Die Indexsymbole können untereinander gleichlang sein. Die komprimierten Daten setzen sich aus lückenlosen fetten solcher Indexsymbole zusammen. Die Einträge des Wörterbuchs decken den Zeichensatz der zu komprimierenden Quellendaten ab und enthalten Erweiterungen der Zeichen zu häufig auftretenden Gruppen oder Ketten von Datensymbolen. Zu diesem Zweck werden die Einträge bei der Komprimierung über Hinweisadressen baumartig miteinander verknüpft, wodurch ein Zugriff zum Wörterbuch zur Erweiterung eines Zeichens oder einer Zeichenkette erleichtert wird. Bei der Bildung des Wörterbuchs ist zu berücksichtigen, daß die spätere Expansion der komprimierten Daten umgekehrt zum Vorgang der Komprimierung erfolgt. Dem kann durch Anlegen eines zweiten nur zum Zwecke der Expansion benutzten Wörterbuches Rechnung getragen werden. Die Einträge des Wörterbuchs werden entweder im voraus an die statistischen Eigenschaften eines bestimmten Datenbestandes festgelegt oder während der Verdichtungsoperation dynamisch aus den Quellendaten gewonnen (EP-PS 350 281).A preferred method for data compression is the Lempel Ziv method (IEEE Transactions on Information Theory, Vol. IT- 23, No. 3, May 1977, pages 337-343). According to this method an index symbol is assigned to each entry in a dictionary. The Index symbols can be of equal length to one another. The compressed data are made up of complete bold ones Index symbols together. The entries in the dictionary cover the Character set of the source data to be compressed from and contain Extensions of characters to frequently occurring groups or Chains of data symbols. For this purpose the entries when compressing via pointers like a tree  linked, giving access to the dictionary for extension of a character or a string is facilitated. In the Formation of the dictionary is to be considered that the later Expansion of the compressed data reversed to the process of Compression is done. This can only be done by creating a second one dictionary used for the purpose of expansion be worn. The entries in the dictionary are either in the ahead of the statistical properties of a particular Data set or during the summarization operation obtained dynamically from the source data (EP-PS 350 281).

Insbesondere im Datenbankbetrieb sind Zugriffe zu gespeicherten Daten viel häufiger als die Eingabe von Daten in einen Speicher. Mit jedem Zugriff zu in komprimierter Form gespeicherten Daten ist aber zugleich auch eine Expansion der Daten erforderlich. Damit wird die Expansion komprimierter Daten zu einer oft durchzuführenden und daher besonders zeitkritischen Operation. Wegen der Vielzahl der notwendigen Teiloperationen stößt es auf Schwierigkeiten, die Datenexpansion auf wenige Maschinenzyklen zu beschränken.Accesses to stored data are particularly important in database operation Data much more often than entering data into memory. With every access to data stored in compressed form however, data expansion is also required. This makes the expansion of compressed data one of the many to be performed and therefore particularly time-critical operation. Because of the multitude of necessary partial operations, it comes up short Difficulty expanding data to a few machine cycles to restrict.

Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren und eine Anordnung anzugeben, durch die ein schneller Ablauf der Expansion komprimierter Daten erzielt werden kann und Wartezeiten vermieden werden sowie eine effiziente Ausnutzung der Übertragungs-, Verarbeitungs- und Speicherzyklen erfolgt. Die Merkmale der Erfindung zur Lösung dieser Aufgabe sind den Ansprüchen 1 und 12 gekennzeichnet. Die Ansprüche 2 bis 11 und 13 bis 26 geben vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung an.The invention is based, a method and a task Specify an arrangement through which a rapid expiration of the Expansion of compressed data can be achieved and Waiting times are avoided as well as efficient use the transmission, processing and storage cycles take place. The features of the invention to achieve this object are Claims 1 and 12 marked. Claims 2 to 11 and 13 to 26 give advantageous refinements and developments of the invention.

Das Verfahren nach der Erfindung hat den Vorteil, daß es die Bandbreite des Zugangs zum Hauptspeicher in vollem Unfang ausnutzt. Sowohl der Zugriff auf die komprimierten Daten als auch die Abspeicherung der expandierten Daten erfolgt in Form von Datenblöcken, die der Breite der zum Speicherzugriff verwendeten Datenpfade entsprechen. Speicherzugriffe zum Transport kürzerer Dateneinheiten werden konsequent vermieden.The method according to the invention has the advantage that it Full range of access to main memory exploits. Both access to the compressed data as The expanded data is also saved in the form of data blocks that are the width of the memory access used data paths correspond. Memory access to Transport of shorter data units is consequently avoided.

Die Speicherzugriffe erfolgen dabei weitgehend parallel zur Verarbeitung der Daten. Auf diese Weise wird ein effiziente Datenexpansion mit kurzen Durchsatzzeiten ermöglicht. Nachfolgend ist ein bevorzugtes Ausführungsbeispiel der Erfindung anhand von Zeichnungen beschrieben. Es zeigen:The memory accesses are largely parallel to Processing the data. This way it becomes efficient Data expansion with short throughput times enabled. Below is a preferred embodiment of the Invention described with reference to drawings. Show it:

Fig. 1 ein Blockdiagramm einer Schaltungsanordnung zur Ausführung des erfindungsgemäßen Verfahrens, Fig. 1 is a block diagram of circuitry for implementing the method according to the invention,

Fig. 2 eine schematische Darstellung der Indexsymbole eines komprimierten Datenstroms, wie er nach dem erfindungsgemäßen Verfahren verarbeitet wird, Fig. 2 is a schematic representation of the index symbols of a compressed data stream as it is processed according to the inventive method,

Fig. 3 eine schematische Darstellung einer Kette von Zeichensymbolen in expandierter Darstellung zur Erläuterung des erfindungsgemäßen Verfahrens, Fig. 3 is a schematic representation of a string of character symbols in expanded view for explaining the method of the invention,

Fig. 4 und 5 ein Ausführungsbeispiel eines Symbolselektors zur Verwendung in der Anordnung von Fig. 1, FIGS. 4 and 5 an embodiment of a Symbolselektors for use in the arrangement of Fig. 1,

Fig. 6 bis 10 ein Ausführungsbeispiel eines Verteilers zur Verwendung in der Anordnung von Fig. 1, FIGS. 6 to 10, an embodiment of a distributor for use in the arrangement of Fig. 1,

Fig. 11 ein Blockdiagramm zur Darstellung der Arbeitsschritte eines Ausführungsbeispiels des erfindungsgemäßen Verfahrens, Fig. 11 is a block diagram illustrating the steps of an embodiment of the inventive method,

Fig. 12 ein Blockdiagramm eines Ausführungsbeispiels eines Adressengenerators für Quellen- und Zieloperanden in der Anordnung von Fig. 1, Fig. 12 is a block diagram of an embodiment of an address generator for source and destination operand in the arrangement of Fig. 1,

Fig. 13 eine schematische Darstellung der Adressierung eines aus Teilsymbolen bestehenden Zeichensymbols aus dem Beispiel von Fig. 3, Fig. 13 is a schematic representation of the addressing of a part consisting of symbols character symbol from the example of Fig. 3,

Fig. 14 ein Blockdiagramm einer Prioritätslogik zur Erzeugung von Speicherzugriffsanforderungen und Fig. 14 is a block diagram of a priority logic to generate memory access requests, and

Fig. 15 ein Zeitdiagramm zur Erläuterung der Arbeitsweise der Schaltungseinheiten gemäß Fig. 9 bis 12 und 14. Fig. 15 is a time chart for explaining the operation of the circuit units shown in FIG. 9 to 12 and 14.

Die in Fig. 1 dargestellte Anordnung weist einen Quellenspei­ cher 10 zur Speicherung von Daten auf, die zuvor unter Anwendung der Lempel-Ziv-Methode komprimiert worden sind, sowie einen Ziel­ speicher 12 zur Aufnahme der expandierten Daten. Die komprimierten Daten bestehen aus einer lückenlosen Folge von Indexsymbolen, die für eine bestimmte Anwendung alle die gleiche Länge haben. Es ist üblich, Indexsymbole mit einer Länge im Bereich von 9 bis 13 Bits zu verwenden. Der Speicherplatz der Indexsymbole in einem komprimierten Operanden wird durch die Adresse des Bytes bezeichnet, mit dem das Symbol beginnt, und durch die Bitnummer 0 bis 7 in diesem Byte. Die Fig. 2 zeigt einen Datenstrom mit den Byteadressen und den Positionen für zehn Indexsymbole. Eine Reihe von Blöcken 30 stellen die Indexsymbole 0, 1 bis 10 dar, und die darunter angeordneten Ziffern bezeichnen die Adressen der Bytes und die zugehörigen Bitnummern. Zum Beispiel beginnt das Indexsymbol 1 auf der Byteadresse 1 und der Bitnummer 3. Jedes Indexsymbol entspricht einem Zeichensymbol im expandierten Zieloperanden, das aus einer Vielzahl von Bytes bestehen kann. Die Länge der Zeichensymbole variiert typischerweise im Bereich von 1 bis 260 Bytes.The arrangement shown in Fig. 1 has a Quellenspei cher 10 for storing data that has previously been compressed using the Lempel-Ziv method, and a target memory 12 for receiving the expanded data. The compressed data consists of a complete sequence of index symbols, which are all of the same length for a specific application. It is common to use index symbols with a length in the range of 9 to 13 bits. The storage location of the index symbols in a compressed operand is indicated by the address of the byte with which the symbol begins and by the bit numbers 0 to 7 in this byte. Fig. 2 shows a data stream with the byte address and the positions for ten index symbols. A series of blocks 30 represent the index symbols 0, 1 to 10, and the numbers below them indicate the addresses of the bytes and the associated bit numbers. For example, index symbol 1 begins at byte address 1 and bit number 3. Each index symbol corresponds to a character symbol in the expanded target operand, which can consist of a large number of bytes. The length of the character symbols typically varies in the range from 1 to 260 bytes.

Die Fig. 3 zeigt einen expandierten Datenstrom, bestehend aus 31 Bytes, die 8 Zeichensymbole darstellen. Eine lückenlose Reihe 32 von Blöcken 0, 1 bis 30 stellen die einzelnen Bytes dar, und die Unterteilungen der Linie 33 mit den Ziffern darüber bezeichnen die Zeichensymbole 1 bis 8. Hiervon sind die Zeichensymbole 1 bis 4 und 6 bis 8 selbständige Zeichensymbole, die keinen Vorgänger oder Nachfolger aufweisen, während das Zeichensymbol 5 aus vier Teilsymbolen besteht, die durch die Unterteilungen der Linie 34 und die darunter befindlichen Ziffern 4 bis 1 dargestellt sind. Es ist ersichtlich, daß z. B. das Teilsymbol 2 des Zeichensymbols 5 sechs Bytes aufweist. Im unteren Teil der Fig. 3 ist die zeitliche Folge dargestellt, in der die Zeichensymbole dem expandierten Datenstrom hinzugefügt werden. Die Indexsymbole aus dem komprimierten Datenstrom werden in entsprechende Zeichensymbole übersetzt, die dem expandierten Datenstrom hinzugefügt werden. Zur Expansion eines Indexsymbols wird dieses als Adresse zu einem Eintrag in einer Tabelle benutzt, die als Expansionswörterbuch bezeichnet wird. In der Anordnung von Fig. 1 ist dieses Wörterbuch in einem Wörterbuchspeicher 14 enthalten. Wenn der Eintrag ein vollständiges Zeichensymbol enthält, wird dieses Symbol dem expandierten Datenstrom hinzugefügt. Wenn der Eintrag nur einen Teil eines Zeichensymbols enthält, weist der Eintrag zusätzlich eine Zeigeradresse auf, die auf den Eintrag eines weiteren Teilsymbols des laufenden Zeichensymbols hinweist. In diesem Fall ist das Teilsymbol in dem vom Indexsymbol bezeichneten Eintrag das äußerste rechte Teilsymbol des laufenden Zeichensymbols, wie z. B. das Teilsymbol 1 des Zeichensymbols 5 in Fig. 3. Dieses Teilsymbol und die folgenden Teilsymbole des laufenden Zeichensymbols werden in der Reihenfolge von rechts nach links dem expandierten Datenstrom hinzugefügt. Nachdem das äußerste linke Teilsymbol als letztes des laufenden Zeichensymbols in dieser Weise dem expandierten Datenstrom hinzugefügt wurde, ist die Verarbeitung des laufenden Datensymbols beendet. Die beschriebene Operation wird mit den anderen Indexsymbolen wiederholt, bis alle Indexsymbole des komprimierten Operanden verarbeitet worden sind. FIG. 3 shows an expanded data stream consisting of 31 bytes which represent 8 character symbols. A complete row 32 of blocks 0, 1 to 30 represent the individual bytes, and the subdivisions of line 33 with the digits above denote the character symbols 1 to 8. Of these, the character symbols 1 to 4 and 6 to 8 are independent character symbols that do not Have predecessors or successors, while the symbol 5 consists of four sub-symbols, which are represented by the subdivisions of line 34 and the numbers 4 to 1 below. It can be seen that e.g. B. the partial symbol 2 of the symbol 5 has six bytes. In the lower part of FIG. 3, the chronological sequence is shown in which the character symbols are added to the expanded data stream. The index symbols from the compressed data stream are translated into corresponding character symbols which are added to the expanded data stream. To expand an index symbol, it is used as an address for an entry in a table called an expansion dictionary. In the arrangement of FIG. 1, this dictionary is contained in a dictionary memory 14 . If the entry contains a complete character symbol, this symbol is added to the expanded data stream. If the entry contains only a part of a character symbol, the entry additionally has a pointer address which indicates the entry of a further part symbol of the current character symbol. In this case, the partial symbol in the entry designated by the index symbol is the rightmost partial symbol of the current symbol, such as. B. The partial symbol 1 of the symbol 5 in FIG. 3. This partial symbol and the following partial symbols of the current symbol are added to the expanded data stream in the order from right to left. After the leftmost partial symbol as the last of the current symbol has been added to the expanded data stream in this way, the processing of the current data symbol is ended. The operation described is repeated with the other index symbols until all index symbols of the compressed operand have been processed.

In der Anordnung von Fig. 1 führt eine Datensammelleitung 13 vom Ausgang des Quellenspeichers 10 zu zwei Eingaberegistern 15, 16, nachfolgend auch Quellenregister genannt, die abwechselnd mit 8 Bytes aufweisenden Blöcken der Daten eines komprimierten Operanden geladen werden. Hierzu wird der Quellenspeicher 10 von einer nicht dargestellten Steuereinheit mit der Adresse eines Quellenoperanden aus einem Programmbefehls adressiert, der eine Datenexpansion veranlaßt und der auch eine Adresse des Zielspeichers 12 enthält für die Abspeicherung des expandierten Operanden. Die Breite der Datensammelleitungen und der Register ist abhängig von der gewählten Implementierung. Im dargestellten Beispiel weisen alle Register acht Bytestellen auf, und ebenso sind die Datensammelleitung 13 vom Quellenspeicher 10 sowie eine zum Zielspeicher führende Sammelleitung 30 jeweils zur parallelen Übertragung von acht Bytes ausgebildet. Ein Symbolselektor 18 wählt aus dem Inhalt der Register 15, 16 das zu verarbeitende Indexsymbol aus. Hierzu werden dem Symbolselektor 18 die Byteadresse und die Bitnummer dieses Indexsymbols von einem Adressengenerator 23 zugeführt. Das Indexsymbol kann die Grenze zwischen den beiden Operandenbyteblöcken in den Registern 15 und 16 überschreiten und kann auch vom Register 16 zurück in das Register 15 reichen, wenn in dieses bereits der nächste Byteblock eingegeben worden ist.In the arrangement of FIG. 1, a data bus 13 leads from the output of the source memory 10 to two input registers 15 , 16 , hereinafter also called source registers, which are loaded alternately with 8-byte blocks of the data of a compressed operand. For this, the source memory 10 is addressed by an unillustrated control unit to the address of a source operand of a program instruction that causes a data expansion and also an address of the destination memory 12 includes for storage of the expanded operands. The width of the data collection lines and the registers depends on the chosen implementation. In the example shown, all registers have eight byte locations, and likewise the data bus 13 from the source memory 10 and a bus 30 leading to the destination memory are each designed for the parallel transmission of eight bytes. A symbol selector 18 selects the index symbol to be processed from the content of the registers 15 , 16 . For this purpose, the byte address and the bit number of this index symbol are supplied to the symbol selector 18 by an address generator 23 . The index symbol can exceed the boundary between the two operand byte blocks in registers 15 and 16 and can also extend from register 16 back to register 15 if the next byte block has already been entered into it.

Das vom Symbolselektor 18 ausgewählte Indexsymbol wird über einen Multiplexer 19 dem Wörterbuchspeicher 14 als Adresse eines Eintrags zugeleitet, der die zu diesem Indexsymbol gehörenden expandierten Daten enthält. Sobald auf diese Weise ein Byteblock des Quellenoperanden verarbeitet worden ist, wird der nächste Operandenbyteblock in das Register 16 geladen, wenn zuletzt dem Register 15 komprimierte Quellendaten zugeführt wurden, oder er wird in das Register 15 geladen, wenn zuletzt dem Register 16 solche Daten zugeführt wurden. Die Entnahme von Quellendaten aus dem Speicher 10 erfolgt somit parallel zur Verarbeitung des laufenden Indexsymbols und erfordert daher keinen zusätzlichen Zeitaufwand.The index symbol selected by the symbol selector 18 is fed via a multiplexer 19 to the dictionary memory 14 as the address of an entry which contains the expanded data belonging to this index symbol. Once a byte block of the source operand has been processed in this manner, the next operand byte block is loaded into register 16 if compressed source data was last fed to register 15 , or is loaded into register 15 if such data was last fed into register 16 . The removal of source data from the memory 10 thus takes place in parallel with the processing of the current index symbol and therefore does not require any additional expenditure of time.

Der im Wörterbuchspeicher 14 adressierte Eintrag wird einem Wörterbuch-Eintrag-Register 20 zugeführt. Er enthält ein Zeichensymbol oder ein Teilsymbol und im letzteren Falle auch eine Zeigeradresse, die über den Multiplexer 19 zur Adressierung des nächsten Eintrags im Speicher 14 dient. Die Zeichensymbole oder Teilsymbole eines Wörterbucheintrags werden durch einen Verteiler 22 stellengerecht ausgerichtet und einem von vier Zielregistern 26 bis 29 zugeführt. Wenn eines der Register 26 bis 29 vollständig geladen ist, wird sein Inhalt über die Sammelleitung 30 auf der im Programmbefehl enthaltenen Adresse des Zieloperanden im Zielspeicher 12 abgespeichert. Währenddessen wird bereits ein anderes der Register 26 bis 29 mit einem weiteren dem Wörterbuchspeicher entnommenen Zeichen­ symbol oder mit Teilsymbolen geladen, so daß auch für die Zugriffe zum Zielspeicher 12 zur Abspeicherung der Zieldaten kein zusätzlicher Zeitaufwand notwendig ist. Das Laden der Register 26 bis 29 erfolgt in der Weise, daß sich jedes Zeichensymbol oder Teilsymbol lückenlos an das zuvor geladene Zeichensymbol oder Teilsymbol anschließt. Hierbei kann ein Register durch ein Zeichensymbol nur teilweise gefüllt werden oder es können Überläufe von einem Register zu einem anderen Register auftreten. Die Zuordnung der Register zum Ausgang des Verteilers ist variabel; sie ändert sich je nach Bedarf und Füllzustand der einzelnen Register.The entry addressed in the dictionary memory 14 is fed to a dictionary entry register 20 . It contains a character symbol or a partial symbol and in the latter case also a pointer address which is used via the multiplexer 19 to address the next entry in the memory 14 . The character symbols or partial symbols of a dictionary entry are aligned correctly by a distributor 22 and fed to one of four target registers 26 to 29 . When one of the registers 26 to 29 is completely loaded, its content is stored in the destination memory 12 via the bus 30 at the address of the destination operand contained in the program instruction. In the meantime, another of the registers 26 to 29 is already loaded with a further symbol taken from the dictionary memory or with partial symbols, so that no additional time is required for accessing the target memory 12 for storing the target data. The registers 26 to 29 are loaded in such a way that each character symbol or partial symbol follows the previously loaded character symbol or partial symbol without gaps. Here, a register can only be partially filled with a symbol or overflows from one register to another register can occur. The assignment of the registers to the output of the distributor is variable; it changes depending on the needs and filling status of the individual registers.

Die Verarbeitung der Zeichensymbole erfolgt in aufsteigender Adressenfolge von links nach rechts. An die Bytes eines Zeichensymbols schließen sich die Bytes des als nächstes dem Wörterbuchspeicher entnommenen Zeichensymbols an, so daß eine lückenlose Zeichensymbolfolge als Ergebnis der Datenexpansion erhalten wird. Bei Auftreten von Teilsymbolen wird die Reihen­ folge der Verarbeitung umgekehrt; sie erfolgt dann von rechts nach links. In einem solchen Fall kann ein teilweise gefülltes Zielregister, welches das äußerste rechte Byte des zuvor verarbeiteten Zeichensymbols enthält, nur dann vollständig geladen werden, wenn das letzte Teilsymbol des laufenden Zei­ chensymbols verarbeitet und in dieses Register eingegeben worden ist. Die Abspeicherung des Inhalts dieses Registers muß deshalb verzögert werden. Das gleiche gilt für das Zielregister, in welches das äußerste rechte Teilsymbols des laufenden Zeichensymbols geladen worden ist. Auch dieses Register kann erst mit Verarbeitung des nächsten Zeichensymbols vollständig geladen werden, es sei denn, das äußerste rechte Teilsymbol liegt auf der Speicherblockgrenze. Dies bedeutet, daß beide Register im Normalfall für eine Übertragung ihres Inhalts zum Zielspeicher 12 vorübergehend nicht zur Verfügung stehen, so daß sich die Übertragung von 8-Byte-Datenblöcken zum Speicher 12 auf die restlichen zwei Zielregister beschränkt.The symbols are processed in ascending order from left to right. The bytes of the character symbol next taken from the dictionary memory are connected to the bytes of a character symbol, so that a complete character symbol sequence is obtained as a result of the data expansion. If partial symbols occur, the order of processing is reversed; it then takes place from right to left. In such a case, a partially filled destination register containing the rightmost byte of the previously processed character symbol can only be fully loaded if the last partial symbol of the current character symbol has been processed and entered into this register. The storage of the contents of this register must therefore be delayed. The same applies to the target register into which the rightmost partial symbol of the current symbol has been loaded. This register, too, can only be fully loaded when the next character symbol is processed, unless the rightmost partial symbol lies on the memory block boundary. This means that both registers are normally temporarily not available for a transfer of their content to the target memory 12 , so that the transfer of 8-byte data blocks to the memory 12 is limited to the remaining two target registers.

Nachfolgend werden die Funktionseinheiten der Anordnung von Fig. 1 erläutert. Die Speicher 10, 12 und 14 können Speicher­ bereiche in einem einzelnen Speicher sein. Dabei kann es sich beispielsweise um den Cache-Speicher eines Prozessors handeln, der Steuersignale für die Anordnung von Fig. 1 liefert, das anfängliche Laden der Register veranlaßt und die Operation der Anordnung startet.The functional units of the arrangement of FIG. 1 are explained below. The memories 10 , 12 and 14 can be memory areas in a single memory. For example, this may be the cache memory of a processor that provides control signals for the arrangement of FIG. 1, initiates the initial loading of the registers, and starts the operation of the arrangement.

Die Quellenregister 15, 16 weisen 128 Ausgangsleitungen (2 × 8 Bytes = 128 Bits) auf, die zur gleichen Zeit eine Anzahl von Indexsymbolen darstellen. Der Symbolselektor 18 wählt aus diesen Indexsymbolen jeweils das mit der niedrigsten Adresse aus. Er erhält zu diesem Zweck eine siebenstellige Indexsymbol-Adresse über Leitungen 42 vom Adressengenerator 23 zugeführt, die nach jeder Verarbeitung eines Indexsymbols auf das nächste Indexsymbol erhöht wird. Nachdem die einen Block von 8 Bytes enthaltenen Indexsymbole verarbeitet worden sind, wird über den Adressengenerator ein weiterer Zugriff zum Quellenspeicher ausgelöst, um den Inhalt des betreffenden Registers 15 oder 16 durch einen neuen 8-Byte-Block zu ersetzen. Währenddessen werden die im anderen Register 16 oder 15 enthaltenen Indexsymbole verarbeitet.The source registers 15 , 16 have 128 output lines (2 × 8 bytes = 128 bits), which at the same time represent a number of index symbols. The symbol selector 18 selects the one with the lowest address from these index symbols. For this purpose, it receives a seven-digit index symbol address via lines 42 from the address generator 23 , which is increased to the next index symbol after each processing of an index symbol. After the index symbols containing a block of 8 bytes have been processed, a further access to the source memory is triggered via the address generator in order to replace the contents of the relevant register 15 or 16 with a new 8-byte block. In the meantime, the index symbols contained in the other register 16 or 15 are processed.

Der Symbolselektor 18 enthält für jede Indexsymbol-Bitstelle eine Selektorschaltung 40 (Fig. 4), die nach Art eines Multiplexers aufgebaut ist (Fig. 5). Jede Selektorschaltung 40 erhält die 128 Eingangssignale über Leitungen 41 von den Registern 15 und 16 sowie die siebenstellige Adresse des Quellenoperanden über Leitungen 42 vom Adressengenerator 23 zugeführt. Diese Adresse besteht aus den vier niedrigsten Bitstellen der Adresse des Quellenoperanden zur Adressierung der Bytestelle, in der ein Indexsymbol beginnt, sowie drei Bits zur Adressierung der jeweiligen Bitstelle in diesem Byte. Die der ersten Bitstelle 0 zugeordnete Selektorschaltung 40(0) erhält die Anfangsadresse des Indexsymbols zugeführt, und Selektorschaltung 40(1) der zweiten Bitstelle 1 erhält den um 1 erhöhten Anfangsadressenwert zugeführt, usw., bis zur Selektorschaltung 40(n-1) der höchsten Bitstelle n-1, die den um n-1 erhöhten Adressenwert zugeführt erhält, wobei n die gewählte Stellenzahl der Indexsymbole ist. Die verschiedenen Adreßwerte werden aus der über die Leitung 42 zugeführten Anfangsadresse durch je einen Addierer 44 gebildet. Jede der Selektorschaltungen 40 besteht aus einem Baum von UND/ODER- Schaltungen, wie er in Fig. 5 dargestellt ist. Die Bitleitungen 41 benachbarter Bitstellen, wie z. B. 0 und 1, sind mit je einer UND-Schaltung 45, 46 verbunden, der eine ODER-Schaltung 47 folgt. Die UND-Schaltungen 45, 46 werden von der Bitleitung 42(6) der Symboladresse konditioniert, wobei die UND-Schaltung 45 über eine Inverterschaltung 48 und die andere UND-Schaltung 46 direkt an die Bitleitung 42(6) angeschlossen ist. Bei Fehlen eines Signals auf Leitung 42(6) wird das Signal von der Bitleitung 41(0) durchgeschaltet, und bei Anliegen eines Signale auf Leitung 42(6) wird das Signal von der Bitleitung 41(1) durchgeschaltet. Das Ausgangssignal gelangt zu einer identisch ausgebildeten UND/ODER-Schaltung, die von der benachbarten Adreßleitung 42(5) gesteuert wird. Dies bedeutet eine Stellen­ verschiebung um jeweils eine Bitstelle durch jede der UND/ODER-Schaltungen. In der gleichen Weise sind die übrigen UND/ODER-Schaltungen der Baumschaltung von Fig. 5 ausgebildet und in sieben Stufen hintereinander angeordnet, so daß unter Steuerung der Symboladresse auf den Leitungen 42 jeweils eine Bitstelle des adressierten Indexsymbols aus den 128 Aus­ gangssignalen der Register 15 und 16 ausgewählt werden kann.The symbol selector 18 contains a selector circuit 40 ( FIG. 4) for each index symbol bit position, which is constructed in the manner of a multiplexer ( FIG. 5). Each selector circuit 40 receives the 128 input signals via lines 41 from registers 15 and 16 and the seven-digit address of the source operand via lines 42 from address generator 23 . This address consists of the four lowest bit positions of the address of the source operand for addressing the byte position in which an index symbol begins, and three bits for addressing the respective bit position in this byte. The selector circuit 40 (0) assigned to the first bit position 0 receives the start address of the index symbol, and the selector circuit 40 (1) of the second bit position 1 receives the start address value increased by 1, etc., up to the selector circuit 40 (n-1) of the highest Bit position n-1, which receives the address value increased by n-1, where n is the selected number of positions of the index symbols. The various address values are formed from the starting address supplied via line 42 by an adder 44 in each case. Each of the selector circuits 40 consists of a tree of AND / OR circuits as shown in FIG. 5. The bit lines 41 of adjacent bit positions, such as. B. 0 and 1, are each connected to an AND circuit 45 , 46 , which is followed by an OR circuit 47 . The AND circuits 45 , 46 are conditioned by the bit line 42 (6) of the symbol address, the AND circuit 45 being connected directly to the bit line 42 (6) via an inverter circuit 48 and the other AND circuit 46 . In the absence of a signal on line 42 (6), the signal from bit line 41 (0) is switched through, and when a signal is present on line 42 (6), the signal from bit line 41 (1) is switched through. The output signal arrives at an identical AND / OR circuit which is controlled by the adjacent address line 42 (FIG. 5). This means a digit shift by one bit position by each of the AND / OR circuits. In the same way, the remaining AND / OR circuits of the tree circuit of FIG. 5 are formed and arranged in seven stages one after the other, so that, under control of the symbol address on lines 42 , one bit position of the addressed index symbol from the 128 output signals of register 15 is in each case and 16 can be selected.

Der Ausgang des Symbolselektors 18 wird durch den Multiplexer 19 zum Adressiereingang des Wörterbuchspeichers 14 durchgeschaltet. Hierzu erhält der Multiplexer 19 in noch zu beschreibender Weise Steuersignale ZS1 oder ZS2 zugeführt. Der im Wörterbuchspeicher 14 adressierte Eintrag wird in das Wörterbuch-Eintrag-Register 20 übertragen. Dieses Register weist ein Zeigeradressenfeld 21 und Teilsymbol-Indikatorbit PI auf, dessen Inhalt anzeigt, ob ein vollständiges Zeichensymbol oder ein Teilsymbol in das Regi­ ster 20 geladen wurde. Im ersteren Fall ist das Zeigeradres­ senfeld 21 leer, im anderen Falle enthält es die Adresse zum Wörterbucheintrag mit dem nächsten Teilsymbol, die in diesem Fall anstelle eines Indexsymbols vom Symbolselektor 18 über eine Sammelleitung Leitung 17 und den Multiplexer 19 zur Adressierung des Wörterbuchspeichers 14 benutzt wird, bis das letzte Teilsymbol verarbeitet worden ist. The output of the symbol selector 18 is switched through by the multiplexer 19 to the addressing input of the dictionary memory 14 . For this purpose, the multiplexer 19 receives control signals ZS1 or ZS2 in a manner to be described. The entry addressed in the dictionary memory 14 is transferred to the dictionary entry register 20 . This register has a pointer address field 21 and partial symbol indicator bit PI, the content of which indicates whether a complete symbol or a partial symbol has been loaded into the register 20 . In the former case the pointer address field 21 is empty, in the other case it contains the address for the dictionary entry with the next partial symbol, which in this case is used instead of an index symbol by the symbol selector 18 via a bus line 17 and the multiplexer 19 for addressing the dictionary memory 14 until the last partial symbol has been processed.

Der Inhalt des Zeichensymbol-Feldes im Register 20 gelangt zum Verteiler 22, der eine stellengerechte Übertragung dieses In­ halts zu den Zielregistern 26 bis 29 vornimmt. Dies erfolgt in zwei Stufen. In der ersten Stufe erfolgt eine Bytestellen- Ausrichtung in einem Bytestellenbereich von 16 Bytes, während in der zweiten Stufe diese 16 Bytes stellengerecht zu den Ausgaberegistern übertragen werden. Die in der ersten Stufe wirksamen Schaltungsteile sind in Fig. 6 und 7 dargestellt. Die Fig. 6 zeigt Sammelleitungen 50 und 51, die den Ausgang des Wörterbuchspeichers 14 mit dem Wörterbuch-Eintrag-Register 20 verbinden. Die Sammelleitungen 50 führen zum Zeichensymbol-Feld des Registers 20 und die Sammelleitungen 51 zum Zeiger­ adressenfeld 21. Die Sammelleitungen 50 umfassen sechs Bytes O, 1 bis 5, und entsprechen damit der maximalen Länge der Zeichensymbole und Teilsymbole. Die Sammelleitungen 51 umfassen 2 Bytes. Das Zeichensymbol-Feld des Registers 20 ist über den Sammelleitungen 50 entsprechende Sammelleitungen 53 mit einer Stellenverschiebeschaltung 52 verbunden, die Ausgangssammelleitungen 56 mit einer Breite von 16 Bytestellen aufweist und durch Verschiebesteuersignale auf einer Sammelleitung 54 gesteuert wird. Sie besteht aus einer Anzahl von Multiplexerschaltungen, die durch die niedrigste Bytestelle der Zieloperandenadresse gesteuert werden. Die dekodierten Signale dieser Bytestelle sind am linken Rand der Fig. 6 eingetragen als Signale TGA0, TGA1 bis TGA15. Es handelt sich dabei um die auf der Sammelleitung 54 auftretenden Steuersignale. Die von diesen Steuersignalen bewirkten Stellenverschiebungen zeigen die Einträge B0, B1, B2, B3, B4, B5 in den Ausgangssammelleitungen 56, wobei diese Einträge den Byte­ stellen im Zeichensymbol-Feld des Wörterbuch-Eintrag-Registers 20 entsprechen. Die Stellenverschiebeschaltung 52 weist für jede Bytestelle in den Ausgangssammelleitungen 56 eine Multi­ plexerschaltung auf, von denen eine in Fig. 7 dargestellt ist. Diese Multiplexerschaltung ist der Bytestelle 0 zugeordnet. Ihre Eingänge sind die Sammelleitungen 53 und ihr Ausgang ist eine Sammelleitung 56. Die Steuereingänge werden durch Leitungen 54 gebildet, auf denen Zieladressensignale TGA0, TGA11, TGA12, TGA13, TGA14 und TGA15 auftreten. In Abhängigkeit davon, welches dieser Signale auftritt, wird eines der Bytes B0, B1 bis B5 zur Leitung 56 durchgeschaltet.The content of the character symbol field in the register 20 is sent to the distributor 22 , which carries out a transfer of this content to the target registers 26 to 29 . This is done in two stages. In the first stage, byte location alignment takes place in a byte location range of 16 bytes, while in the second stage these 16 bytes are transferred to the output registers in the correct position. The circuit parts effective in the first stage are shown in FIGS. 6 and 7. Fig. 6 shows manifolds 50 and 51 which connect the output of the dictionary memory 14 with the dictionary entry register 20. The bus lines 50 lead to the symbol field of the register 20 and the bus lines 51 to the pointer address field 21 . The bus lines 50 comprise six bytes O, 1 to 5, and thus correspond to the maximum length of the character symbols and partial symbols. The bus lines 51 comprise 2 bytes. The character symbol field of the register 20 is connected via the bus lines 50 corresponding bus lines 53 to a digit shift circuit 52 which has output bus lines 56 with a width of 16 byte digits and is controlled by shift control signals on a bus line 54 . It consists of a number of multiplexer circuits that are controlled by the lowest byte of the destination operand address. The decoded signals of this byte location are entered on the left edge of FIG. 6 as signals TGA0, TGA1 to TGA15. These are the control signals occurring on the bus 54 . The position shifts caused by these control signals show the entries B0, B1, B2, B3, B4, B5 in the output bus lines 56 , these entries corresponding to the byte digits in the symbol field of the dictionary entry register 20 . The digit shift circuit 52 has a multiplexer circuit for each byte digit in the output bus 56, one of which is shown in FIG. 7. This multiplexer circuit is assigned to byte location 0. Their inputs are the manifolds 53 and their output is a manifold 56 . The control inputs are formed by lines 54 on which destination address signals TGA0, TGA11, TGA12, TGA13, TGA14 and TGA15 occur. Depending on which of these signals occurs, one of the bytes B0, B1 to B5 is switched through to line 56 .

Fig. 8a und 8b zeigt eine Multiplexerschaltung 55 zur Ver­ bindung der Stellenverschiebeschaltung 52 mit den Zielregistern 26 bis 29. Hierzu ist die Ausgangssammelleitungen 56 in zwei Sammelleitungen zu je 8 Bytes aufgeteilt, und zwar in eine niedrigstellige Sammelleitung 57 mit den Bytestellen 0 bis 7 und eine höherstellige Sammelleitung 58 mit den Bytestellen 8 bis 15. Beide Sammelleitungen können über Multiplexer 61 bis 64 mit jedem der Register 26 bis 29 verbunden werden. Fig. 8a and 8b shows a multiplexer circuit 55 for connection of the bodies Ver shift circuit 52 to the destination registers 26 to 29. For this purpose, the output bus lines 56 are divided into two bus lines of 8 bytes each, namely in a low-digit bus line 57 with the byte positions 0 to 7 and a higher-order bus line 58 with the byte positions 8 to 15. Both bus lines can be connected to each of them via multiplexers 61 to 64 Registers 26 to 29 are connected.

Eine Zuordnerschaltung 60 (Fig. 9) bewirkt eine dynamische Zuordnung der Register 26 bis 29 zu den Sammelleitungen 57, 58. Zu diesem Zweck sind vier Funktionsregister 66, 67, 68, 69 vorgesehen, die den Funktionen "SPERREN NIEDRIG" (SN), "GERADE" (GR), "UNGERADE" (UGR) und "SPERREN HOCH" (SH) entsprechen. Jedes dieser Register weist 2 Bitstellen auf und ist daher in der Lage, die Ziffern 0, 1, 2, 3 als Binärwerte zu speichern zur Kennzeichnung der vier Zielregister 26 bis 29. Jede der genannten Funktionen kann daher wahlweise einem jeden dieser Zielregister zugeordnet werden; jedoch kann einem Zielregister gleichzeitig auch mehr als eine dieser Funktionen zugeordnet sein. Dies kann z. B. während der Verarbeitung eines selbständigen Zeichensymbols der Fall sein, wenn die Zuordnung der Funktionen SN und SH irrelevant ist.An assignment circuit 60 ( FIG. 9) effects a dynamic assignment of the registers 26 to 29 to the bus lines 57 , 58 . For this purpose, four function registers 66 , 67 , 68 , 69 are provided which correspond to the functions "LOCK LOW" (SN), "EVEN" (GR), "ODD" (UGR) and "LOCK HIGH" (SH). Each of these registers has 2 bit positions and is therefore able to store the digits 0, 1, 2, 3 as binary values to identify the four target registers 26 to 29 . Each of the functions mentioned can therefore optionally be assigned to each of these target registers; however, more than one of these functions can be assigned to a target register at the same time. This can e.g. B. during the processing of an independent character symbol if the assignment of the functions SN and SH is irrelevant.

Das GR-Register 67 liefert auf einer zweiadrigen Ausgangslei­ tungen 72 Signale an UND-Schaltungen 73 bis 76, die einen Teil der Steuersignale für die Multiplexer 61 bis 64 erzeugen. In beiden Eingängen der UND-Schaltung 73 und in je einem Eingang der UND-Schaltungen 74, 75 befindet sich je ein Inverter 77 oder 78, so daß sich die aus Fig. 9 ersichtlichen Steuersignale GR auf den Leitungen 80 bis 83 ergeben. In der gleichen Weise werden von Ausgangssignalen des UGR-Registers 68 auf der Leitung 85 durch eine entsprechende Dekodierschaltung 87 Steuersignale UGR=0 bis UGR=3 abgeleitet und von Ausgangssignalen des SN- Registers 66 auf Leitung 86 durch eine entsprechende Dekodierschaltung 88 Steuersignale SN=0 bis SN=3 abgeleitet sowie von Ausgangssignalen des SH-Registers 69 auf Leitung 97 durch eine entsprechende Dekodierschaltung 93 Steuersignale SH=0 bis SH=3 abgeleitet. Auch diese Signale dienen zur Steuerung der Multiplexerschaltung 55.The GR register 67 supplies 72 signals to AND circuits 73 to 76 on a two-wire output line, which generate part of the control signals for the multiplexers 61 to 64 . An inverter 77 or 78 is located in each of the two inputs of the AND circuit 73 and in one input of the AND circuits 74 , 75 , so that the control signals GR shown in FIG. 9 result on the lines 80 to 83 . In the same way 87 control signals UGR = are output signals of the UGR-register 68 on the line 85 by an appropriate decoding circuit 0 derived and to UGR = 3 of output signals of the SN register 66 on line 86 by an appropriate decoding circuit 88 control signals SN = 0 to SN = 3 and derived from output signals of the SH register 69 on line 97 through a corresponding decoding circuit 93 control signals SH = 0 to SH = 3. These signals also serve to control the multiplexer circuit 55 .

In Fig. 8A sind die Steuersignale zur Konditionierung der Multiplexer 61 bis 64 mit C1 bis C8 bezeichnet. Diese Steuer­ signale sind paarweise den Multiplexern zugeordnet. Die Fig. 8B zeigt, wie die Steuersignale C1 bis C8 erzeugt werden. Hierin sind GR, UGR, SN und SH die zuvor beschriebenen Steuersignale aus der Zuordnerschaltung 60 (Fig. 9) und EQ ist ein Adressengleich-Anzeigesignal aus dem Adressengenerator 23 (Fig. 12). Das Signal VSH zeigt die Verwendung der Funktion "SPERREN HOCH" an und wird durch eine Verriegelungsschaltung 98 erzeugt, die im Systemzustand 3 aktiviert wird und die zurückgestellt wird, sobald ein Teilsymbol die Speichergrenze des betreffenden Byteblocks vollständig überschritten hat (Fig. 8C). Die logische Verknüpfung dieser Signale zur Bildung der Steuersignale C1 bis C8 ergibt sich aus den dargestellten Booleschen Gleichungen.In Fig. 8A, the control signals to condition the multiplexer 61 to 64 are denoted with C1 to C8. These control signals are assigned to the multiplexers in pairs. Figure 8B shows how control signals C1 through C8 are generated. Herein, GR, UGR, SN, and SH are the above-described control signals from the allocator circuit 60 ( FIG. 9), and EQ is an equal address display signal from the address generator 23 ( FIG. 12). The VSH signal indicates the use of the "LOCK UP" function and is generated by a latch circuit 98 which is activated in system state 3 and which is reset as soon as a partial symbol has completely exceeded the memory limit of the byte block concerned ( FIG. 8C). The logical combination of these signals to form the control signals C1 to C8 results from the Boolean equations shown.

Die Register 67 und 68 werden anfänglich auf die Werte 0 und 1 eingestellt, so daß über den Multiplexer 61 die Sammelleitung 57 mit dem Zielregister 26 und über den Multiplexer 62 die Sammelleitung 58 mit dem Zielregister 27 verbunden ist. Damit ist dem Zielregister 26 die Funktion "GERADE" und dem Zielre­ gister 27 die Funktion "UNGERADE" zugeordnet. Dies bedeutet, daß das Zeichensymbol, das als erstes auf der Sammelleitung 57 auftritt, vom Register 26 aufgenommen wird. Hierbei bestimmt die Zieloperandenadresse durch entsprechende Stellenausrichtung mittels der Schaltung 52, in welchen Bytestellen des Registers 26 Bytes des betreffenden Zeichensymbols gespeichert werden. Wenn das Zeichensymbol eine 8-Byte-Blockgrenze überschreitet, erfolgt eine Einspeicherung der im Bytestellenbereich 8 bis 16 liegenden Bytes über die Sammelleitung 58 in das Register 27, das in diesem Falle als Überlaufregister dient. Anders ausge­ drückt ist in diesem Fall das Register 26 das Aufnahmeregister und das Register 27 das Überlaufregister. Diese Funktion ändert sich mit der Übertragung des Inhalts von Register 26 zum Zielspeicher 12. Damit wird dieses Register frei und übernimmt die Überlauffunktion für das Register 27, das nun als Aufnahmeregister dient.The registers 67 and 68 are initially set to the values 0 and 1, so that the bus 57 is connected to the destination register 26 via the multiplexer 61 and the bus 58 is connected to the destination register 27 via the multiplexer 62 . The target register 26 is thus assigned the function "EVEN" and the target register 27 the function "ODD". This means that the character symbol that appears first on the bus 57 is picked up by the register 26 . In this case, the target operand address determines, by means of appropriate location alignment by means of the circuit 52 , in which byte locations of the register 26 bytes of the relevant character symbol are stored. If the character symbol exceeds an 8-byte block boundary, the bytes in the byte location range 8 to 16 are stored via the bus 58 in the register 27 , which in this case serves as an overflow register. In other words, the register 26 is the recording register and the register 27 is the overflow register. This function changes with the transfer of the content from register 26 to target memory 12 . This register becomes free and takes over the overflow function for register 27 , which now serves as a recording register.

Eine Änderung der Zuordnung findet statt, wenn der im Wörterbuchspeicher 14 adressierte Eintrag ein Teilsymbol enthält. In diesem Fall ist das Aufnahmeregister gegen eine Abspeicherung seines Inhalts zu sperren, da es im Normalfall zunächst nicht vollständig gefüllt werden kann. Statt dessen ist ein anderes Zielregister 28 oder 29 als Aufnahmeregister auszuwählen. Ersteres geschieht durch Einstellung des SN- Registers 66 über einen Multiplexer 89 entsprechend dem Speicherzustand eines der Registers 67 oder 68, je nachdem, welches der Zielregister zuletzt als Aufnahmeregister benutzt wurde. Dies ist gleichbedeutend mit einer Anzeige, ob die diesem Zielregister entsprechende Adresse des Zieloperanden auf einen geraden oder einen ungeraden 8-Byte-Block des Zieloperanden zeigt. Eine solche GERADE/UNGERADE-Anzeige liefert das Signal T28, wie im einzelnen in Verbindung mit Fig. 12 beschrieben wird.A change of assignment takes place when the addressed in the dictionary memory 14 entry includes a part symbol. In this case, the recording register must be locked against saving its content, since it cannot normally be filled completely at first. Instead, another target register 28 or 29 is to be selected as the recording register. The former is done by setting the SN register 66 via a multiplexer 89 according to the memory state of one of the registers 67 or 68 , depending on which of the target registers was last used as the recording register. This is equivalent to an indication of whether the address of the target operand corresponding to this target register points to an even or an odd 8-byte block of the target operand. Such an EVEN / ODD display provides signal T28, as will be described in detail in connection with FIG. 12.

Die Zuordnung noch nicht benutzter oder nicht mehr benutzter Register erfolgt durch eine Auswahllogik 90, die die Ausgangs­ signale der Funktionsregister 67, 68 zugeführt erhält und auf Sammelleitungen 91, 92 Einstellsignale für die Register 67 und 68 sowie für das SH-Register 69 erzeugt. Die Auswahlschaltung enthält eine kombinatorische Logik entsprechend der Wahrheits­ tabelle von Fig. 10, die auf der linken Seite die binären Eingangswerte I0, I1, I2, I3 von den Leitungen 72, 85 und auf der rechten Seite binäre Ausgangswerte O0, O1, O2, O3 angibt. Hierbei entsprechen die Eingangswerte I0, I1 dem Speicher­ zustand des Registers 67 und die Eingangswerte I2, I3 dem Speicherzustand des Registers 68. Die Ausgangswerte O0 und O1 dienen zur Einstellung des SH-Registers 69, und die Ausgangs­ werte O2 und O3 dienen wahlweise zur Einstellung des Registers 67 oder 68. Die Einstellung der letztgenannten Register erfolgt über Multiplexer 94, 95. Mit "X" bezeichnete Einträge sind für die Operation der Anordnung nicht relevant. Die Einstellung der Register 66 bis 69 geschieht nach folgenden Regeln:The assignment of registers that are not yet used or are no longer used is carried out by selection logic 90 , which receives the output signals of function registers 67 , 68 and generates setting signals for registers 67 and 68 and for SH register 69 on common lines 91 , 92 . The selection circuit contains a combinatorial logic according to the truth table of Fig. 10, the binary input values I0, I1, I2, I3 from the lines 72 , 85 on the left side and binary output values O0, O1, O2, O3 on the right side indicates. The input values I0, I1 correspond to the memory state of the register 67 and the input values I2, I3 correspond to the memory state of the register 68 . The output values O0 and O1 are used to set the SH register 69 , and the output values O2 and O3 are used to set the register 67 or 68 . The latter registers are set via multiplexers 94 , 95 . Entries marked with "X" are not relevant for the operation of the arrangement. Registers 66 to 69 are set according to the following rules:

Bei einem Übergang auf die Verarbeitung von Teilsymbolen (Sy­ stemzustand 3 in Fig. 11) wird jeweils ein freies Zielregister zur Aufnahme des ersten Teilsymbols ausgewählt und zugleich gegen eine Übertragung seines Inhalts zum Speicher 12 gesperrt. Die geschieht durch Eingabe eines Zuordnungssteuerwertes in das Register 69 in Abhängigkeit von der bisherigen Zuordnung der Zielregister gemäß der Tabelle von Fig. 10. Wenn z. B. anfänglich Zielregister 0 (26) als GR-Register und Zielregister 1 (27) als UGR-Register zugeordnet waren, wird das Zielregister 2 (28) als SH-Register ausgewählt, indem über den Ausgang 1 (Leitung 91) der Auswahllogik 90 der Binärwert "2" in das Register 69 eingeschrieben wird. Dies ergibt sich aus Zeile 2 der Tabelle von Fig. 10. Zugleich wird über den Multiplexer 94 oder 95 der Binärwert "3" in das Register 67 oder 68 eingegeben, wodurch das Zielregister 3 (29) als neues GR- oder UGR-Register ausgewählt wird. Welcher der Multiplexer 94 oder 95 konditioniert wird, hängt von der GERADE/UNGERADE-Anzeige T28 ab. Wenn T28 den Wert "1" hat (ungerader 8-Byte-Block), wird der Multiplexer 95 wirksam, und die Einstellung erfolgt im Register 68, so daß das Zielregister 3 als UGR-Register ausgewählt wird. Zuvor wurde aber unter Steuerung des gleichen Signals T28 der bisherige Inhalt des Registers, der Binärwert "1", in das Register 66 übernommen. Es liegt damit folgende Zuordnung vor:In the case of a transition to the processing of partial symbols (system state 3 in FIG. 11), a free target register is selected for receiving the first partial symbol and at the same time locked against transmission of its content to the memory 12 . This is done by entering an assignment control value in the register 69 as a function of the previous assignment of the target register according to the table in FIG. 10. For example, if target register 0 ( 26 ) was initially assigned as GR register and target register 1 ( 27 ) as UGR register, target register 2 ( 28 ) is selected as SH register by selecting selection logic 90 via output 1 (line 91 ) the binary value "2" is written into the register 69 . This results from row 2 of the table of FIG. 10. At the same time, the binary value "3" is entered into the register 67 or 68 via the multiplexer 94 or 95 , whereby the target register 3 ( 29 ) is selected as a new GR or UGR register becomes. Which of the multiplexers 94 or 95 is conditioned depends on the EVEN / ODD display T28. When T28 is "1" (odd 8-byte block), the multiplexer 95 becomes effective and the setting is made in the register 68 so that the target register 3 is selected as the UGR register. Before that, however, the previous content of the register, the binary value "1", was transferred to the register 66 under control of the same signal T28. The following assignment is available:

Zielregister 0 (26) - GR-Reg. (Reg. 67=0, Signale GR=0, C1)
Zielregister 1 (27) - SN-Reg. (Reg. 66=1, Signale SN=1, C4)
Zielregister 2 (28) - SH-Reg. (Reg. 69=2, Signale SH=2, C5)
Zielregister 3 (29) - UGR-Reg. (Reg. 68=3, Signale UGR=3, C8).
Target register 0 ( 26 ) - GR reg. (Reg. 67 = 0, signals GR = 0, C1)
Target register 1 ( 27 ) - SN reg. (Reg. 66 = 1, signals SN = 1, C4)
Target register 2 ( 28 ) - SH reg. (Reg. 69 = 2, signals SH = 2, C5)
Target register 3 ( 29 ) - UGR reg. (Reg. 68 = 3, signals UGR = 3, C8).

Das Zielregister 28 dient somit als Aufnahmeregister für die nachfolgend (im Systemzustand 4) zu verarbeitenden Teilsym­ bole, wobei die Zielregister 26 oder 29 als Überlaufregister benutzt werden, je nachdem, ob eine Speichergrenze passiert wurde oder nicht, und das Zielregister 27 ist gegen Entnahme gesperrt und bleibt in Bereitschaft zur Aufnahme des letzten Teilsymbols (der letzten Teilsymbole) des laufenden Zeichen­ symbols, was durch ein Signal EQ angezeigt wird. Bei diesen Operationen wird jeweils die Sammelleitung 57 mit den Zielre­ gistern 26 und 28 und die Sammelleitung 58 mit den Zielregistern 27 und 29 verbunden, wobei die Durchschaltung der Datensignale jeweils dann erfolgt, wenn auch die übrigen Bedingungen gemäß Fig. 8B erfüllt sind.The target register 28 thus serves as a recording register for the sub-symbols to be processed subsequently (in system state 4), the target registers 26 or 29 being used as overflow registers, depending on whether a memory limit has been passed or not, and the target register 27 is locked against removal and remains ready to receive the last sub-symbol (s) of the current character symbol, which is indicated by a signal EQ. In these operations, the bus 57 is connected to the destination registers 26 and 28 and the bus 58 is connected to the destination registers 27 and 29 , the data signals being switched through when the other conditions according to FIG. 8B are also met.

Eine Änderung der Zuordnung findet des weiteren immer dann statt, wenn das letzte oder äußerste linke Teilsymbol des laufenden Zeichensymbols in das mit SN deklarierte Zielre­ gister (im obigen Beispiel Zielregister 1) eingegeben worden ist (Systemzustand 6). In diesem Fall wird das mit SN deklarierte Zielregister (im obigen Beispiel Zielregister 1) freigegeben, und das mit SH deklarierte Zielregister wird als GR- oder UGR- Register zugeordnet, je nachdem, ob das nächste Zeichensymbol in einem geraden oder einem ungeraden Speicherblock beginnt. Eine der bisher als GR- oder UGR-Register benutzten Zielregister (im obigen Beispiel die Zielregister 0 und 3) bleibt ohne Funktion. Dies geschieht unabhängig davon, ob das als nächstes zu verarbeitende Zeichensymbol wiederum aus Teilsymbolen besteht oder nicht. Im ersteren Fall, beginnt eine erneute Zuordnung der Zielregister wie oben beschrieben.The assignment is also changed whenever the last or outermost left part symbol of the current character symbol has been entered in the destination register declared with SN (destination register 1 in the above example) (system status 6). In this case, the target register declared with SN (target register 1 in the above example) is released and the target register declared with SH is assigned as a GR or UGR register, depending on whether the next character symbol begins in an even or an odd memory block. One of the target registers previously used as GR or UGR registers (target registers 0 and 3 in the example above) remains without function. This happens regardless of whether the character symbol to be processed next consists of sub-symbols or not. In the former case, the target registers are reassigned as described above.

Fig. 11 zeigt den Operationsablauf der Anordnung von Fig. 1 anhand von sechs Systemzuständen. Jeder der Systemzustände 1 bis 6 stellt eine spezifische Operation der Anordnung dar, zu dem jeweils eine Gruppe von Teiloperationen gehört. Für jeden Systemzustand werden Bedingungen definiert, die den Übergang vom laufenden Zustand zum nächsten Zustand bestimmen. Die Anordnung hat somit das Verhalten einer Folgeschaltung, die durch ein externes Steuersignal aktiviert wird. Ein solches Steuersignal wird der Anordnung zugeführt, wenn durch einen Programmbefehl eine Datenexpansion aufgerufen wird. Die Anordnung geht daraufhin in den Systemzustand 1, wobei vorausgesetzt wird, daß die beiden Quellenregister 15 und 16 bereits geladen sind und daß die Quellen- und Zieloperandenadreßregister 100, 110 (Fig. 12) auf die Startadressen des Quellenoperanden und des Zieloperanden eingestellt worden sind. In den einzelnen Sy­ stemzuständen werden die nachfolgend beschriebenen Operationen ausgeführt. Hierbei sind die in den Systemzuständen erzeugten Steuersignale mit ZS1 bis ZS6 bezeichnet. FIG. 11 shows the operational sequence of the arrangement from FIG. 1 on the basis of six system states. Each of the system states 1 to 6 represents a specific operation of the arrangement, to which a group of partial operations belongs. For each system state, conditions are defined that determine the transition from the current state to the next state. The arrangement thus has the behavior of a sequential circuit which is activated by an external control signal. Such a control signal is supplied to the arrangement when data expansion is called by a program command. The arrangement then goes to system state 1 , assuming that the two source registers 15 and 16 are already loaded and that the source and destination operand address registers 100 , 110 ( Fig. 12) have been set to the start addresses of the source operand and the destination operand. The operations described below are carried out in the individual system states. The control signals generated in the system states are designated ZS1 to ZS6.

Systemzustand 1System status 1

Im Systemzustand 1 erfolgt die Entnahme eines Eintrags aus dem Wörterbuch. Es wird festgestellt, ob der Eintrag ein selbstän­ diges Zeichensymbol oder ein Teilsymbol eines sich über mehrere Einträge erstreckenden Zeichensymbol enthält. Wenn letzteres der Fall ist, erfolgt ein Übergang zum Systemzustand 3, andernfalls zum Systemzustand 2.In system state 1, an entry is removed from the Dictionary. It is determined whether the entry is self-sufficient sign symbol or a partial symbol of one over several Includes character icon. If the latter is the If so, there is a transition to system state 3, otherwise to system status 2.

Systemzustand 2System status 2

Im Systemzustand 2 wird das dem Wörterbuch entnommene Zeichen­ symbol in das jeweils als Aufnahmeregister GR oder UGR dienende Zielregister geladen. Die Adressen von Quellenoperand und Zieloperand werden fortgeschrieben. Wenn dabei festgestellt wird, daß die Adressen eine 8-Byte-Speichergrenze passieren, wird eine Speicherzugriffsanforderung erzeugt für eine Entnahme eines weiteren 8-Byte-Blocks aus dem Quellenspeicher 10 und für eine Abspeicherung eines 8-Byte-Blocks expandierter Daten in den Zielspeicher 12. Vom Systemzustand 2 erfolgt in jedem Fall ein Übergang zurück zum Systemzustand 1.In system state 2, the symbol symbol taken from the dictionary is loaded into the target register serving as the recording register GR or UGR. The addresses of the source operand and target operand are updated. If it is determined that the addresses cross an 8-byte memory limit, a memory access request is generated for removing another 8-byte block from the source memory 10 and for storing an 8-byte block of expanded data in the target memory 12 . In any case, there is a transition from system state 2 back to system state 1.

Systemzustand 3System status 3

Im Systemzustand 3 erfolgt ein Übergang von der Verarbeitung von Zeichensymbolen zur Verarbeitung von Teilsymbolen. Zu diesem Zweck wird die Zuordnung der Zielregister 26 bis 29 geändert entsprechend den oben beschriebenen Regeln. Die Ziel­ operandenadresse wird inkrementiert, so daß sie auf das als erstes zu verarbeitende Teilsymbol zeigt.In system state 3, there is a transition from the processing of character symbols to the processing of partial symbols. For this purpose, the assignment of the target registers 26 to 29 is changed in accordance with the rules described above. The target operand address is incremented so that it points to the partial symbol to be processed first.

Systemzustand 4System status 4

In dem ohne weitere Bedingungen auf den Systemzustand 3 folgenden Systemzustand 4 wird das zuvor (im Systemzustand 1 oder 5) dem Wörterbuch entnommene Teilsymbol in die Zielregister 26 bis 29 geladen. Wenn der Übergang vom Systemzustand 3 erfolgt, handelt es sich dabei um das erste Teilsymbol eines Zeichensymbols, welches dessen äußerstes rechtes Teilsymbol ist. Dieses Teilsymbol wird in das im Systemzustand 3 zugeordnete SH- Zielregister geladen. Wenn der Übergang vom Systemzustand 5 erfolgt, wird das Teilsymbol entsprechend den angegebenen Regeln in das entsprechende Zielregister eingegeben. Zugleich werden die Adressen des Wörterbuchs und des Zieloperanden fortgeschrieben. Wenn die Zieloperandenadresse eine Speichergrenze passiert, wird eine Speicherzugriffsanforderung erzeugt, um einen 8-Byte-Block aus dem gefüllten Zielregister in den Speicher 12 zu übertragen. Vom Systemzustand 4 erfolgt in jedem Falle ein Übergang zum Systemzustand 5.In system state 4, which follows system state 3 without further conditions, the partial symbol previously extracted (in system state 1 or 5) from the dictionary is loaded into target registers 26 to 29 . When the transition from system state 3 takes place, it is the first partial symbol of a drawing symbol, which is its extreme right partial symbol. This partial symbol is loaded into the SH target register assigned in system state 3. When the transition from system state 5 takes place, the partial symbol is entered into the corresponding target register in accordance with the specified rules. At the same time, the addresses of the dictionary and the target operand are updated. When the target operand address passes a memory boundary, a memory access request is generated to transfer an 8-byte block from the filled target register to memory 12 . In any case, there is a transition from system state 4 to system state 5.

Systemzustand 5System status 5

Im Systemzustand 5 kann eine Änderung der Zielregisterzuord­ nung erfolgen entsprechend den oben angegebenen Regeln. Es wird eine Speicherzugriff zum Wörterbuch ausgeführt, um das nächste Teilsymbol zu holen. Zugleich wird die Adresse des Zieloperanden dekrementiert entsprechend der Zeichenzahl dieses Teilsymbols. Wenn es sich bei diesem Teilsymbol um das letzte des laufenden Zeichensymbols handelt, erfolgt ein Übergang zum Systemzustand 6, andernfalls zurück zum Systemzustand 4.In system state 5, the target register can be changed This is done according to the rules given above. It will one memory access to the dictionary is carried out to the next one Get part symbol. At the same time, the address of the destination operand decrements according to the number of characters of this sub-symbol. If this sub-symbol is the last of the current one Character symbol, there is a transition to the system state 6, otherwise back to system state 4.

Systemzustand 6System status 6

Im Systemzustand 6 wird das letzte Teilsymbol des laufenden Zeichensymbols in das SN-Zielregister geladen und es wird eine Speicherzugriffsanforderung erzeugt, um den Inhalt dieses Registers in den Zielspeicher zu übertragen. Die Kennzeichnung des SH-Zielregisters wird geändert in die Kennzeichnung GR oder UGR entsprechend den angegebenen Regeln. Zugleich wird die Zieloperandenadresse inkrementiert um die Gesamtzahl der Zeichen dieses Zeichensymbols, so daß sie auf den Platz zeigt, auf dem in den Zielregistern das nächste Zeichensymbol zu speichern ist. Des weiteren wird die Adresse des Quellenoperanden fortgeschrieben, so daß sie auf das nächste Indexsymbol zeigt. Wenn dabei eine 8-Byte-Speichergrenze überschritten wird, wird eine Speicherzugriffsanforderung erzeugt, um den nächsten 8- Byte-Block des Quellenoperanden aus dem Speicher 10 zu holen. Vom Systemzustand 6 erfolgt in jedem Falle ein Übergang zurück zum Zustand 1.In system state 6, the last partial symbol of the current character symbol is loaded into the SN target register and a memory access request is generated in order to transfer the content of this register to the target memory. The identification of the SH target register is changed to the identification GR or UGR according to the specified rules. At the same time, the target operand address is incremented by the total number of characters of this character symbol, so that it points to the place where the next character symbol is to be stored in the target registers. The address of the source operand is also updated so that it points to the next index symbol. If an 8-byte memory limit is exceeded, a memory access request is generated to fetch the next 8-byte block of the source operand from memory 10 . In any case, a transition from system state 6 to state 1 takes place.

Die Fig. 12 zeigt den Adressengenerator 23, der zur fortlau­ fenden Bestimmung der Quellenoperandenadresse und der Zielad­ resse dient und Adressierungssignale für den Symbolselektor 18 und den Verteiler 22 sowie adressenabhängige Steuersignale erzeugt. Die Adresse des Quellenoperanden wird im Adreßregister 100 festgehalten. Am Anfang einer Expansionsoperation wird das Register 100 über einen Multiplexer 102 auf die Adresse des Quellenoperanden im Speicher 10 eingestellt. Dabei wird auch ein Bitadressenfeld SBN dieses Registers auf die Startbitnummer des ersten Indexsymbols im Quellenoperanden eingestellt. Die Adresse besteht aus 32 Bits, von denen die Bits 0 bis 28 über eine Sammelleitung 103 zur Adressierung des Quellenspeichers 10 verwendet werden und die Bits 28 bis 31 und zusätzlich auch die Startbitnummer SBN über die Sammelleitung 42 dem Symbolselektor 18 zur Auswahl der Indexsymbole zugeführt werden. Eine Inkrementierschaltung 105 dient zur Fortschreibung des Adressenwertes im Register 100 während der Verarbeitung des laufenden Indexsymbols. Hierzu addiert die Schaltung 105 jeweils die in einem Register 106 voreingestellte und über die gesamte Expansionsoperation gleichbleibende Länge der Indexsymbole zum Inhalt des Registers 100. Der neue Adreßwert wird über den Multiplexer 102 während der Systemzustände 2 und 6 in das Register 100 eingegeben. Eine Exklusiv-Oder-Schaltung 107 erhält jeweils das Adreßbit 28 der laufenden Adresse und der inkrementierten Adresse zugeführt und erzeugt auf Leitung 108 eine Anforderung QA für einen Zugriff zum Quellenspeicher 10, um neue Daten in das Register 15 oder 10 zu laden. Die Adreßbitstelle 28 ist die niedrigste Bitstelle der aktuellen Quellenoperandenadresse im Speicher 10 und unterscheidet zwischen aufeinanderfolgenden Blöcken von je 8 Bytes des Quellenoperanden. Fig. 12 shows the address generator 23 , which is used for the continuous determination of the source operand address and the destination address and generates addressing signals for the symbol selector 18 and the distributor 22 as well as address-dependent control signals. The address of the source operand is recorded in address register 100 . At the beginning of an expansion operation, register 100 is set to the address of the source operand in memory 10 via a multiplexer 102 . A bit address field SBN of this register is also set to the start bit number of the first index symbol in the source operand. The address consists of 32 bits, of which bits 0 to 28 are used via a bus 103 to address the source memory 10 , and bits 28 to 31 and additionally the start bit number SBN are fed via bus 42 to the symbol selector 18 for selecting the index symbols . An incrementing circuit 105 serves to update the address value in the register 100 during the processing of the current index symbol. For this purpose, the circuit 105 adds the length of the index symbols, which is preset in a register 106 and remains constant over the entire expansion operation, to the content of the register 100 . The new address value is entered into register 100 via multiplexer 102 during system states 2 and 6. An exclusive-OR circuit 107 receives the address bit 28 of the current address and the incremented address and generates on line 108 a request QA for access to the source memory 10 in order to load new data into the register 15 or 10 . The address bit position 28 is the lowest bit position of the current source operand address in the memory 10 and distinguishes between successive blocks of 8 bytes each of the source operand.

Die Adresse des Zieloperanden wird im Adreßregister 110 festgehalten. Am Anfang einer Expansionsoperation wird das Register 110 über einen Multiplexer 112 auf die Adresse des Zieloperanden im Speicher 12 eingestellt. Auch diese Adresse besteht aus 31 Bits, von denen die Bits 0 bis 28 über eine Sammelleitung 113 zur Adressierung des Zielspeichers 12 verwendet werden und die Bits 28 bis 31 über die Sammelleitung 54 dem Verteiler 22 zur Steuerung der Stellenausrichtung der Zeichensymbole zugeführt werden. Eine Inkrementierschaltung 115 dient zur Fortschreibung der Adresse während der Verarbeitung des laufenden Zeichensymbols, und eine Dekrementierschaltung 116 dient zur Fortschreibung der Adresse während der Verarbeitung des laufenden Teilsymbols. Die Einträge des Wörterbuchspeichers 14 enthalten in Zuordnung zum jeweiligen Zeichensymbol oder Teilsymbol Steuerfelder, die zur Ermittlung der aktuellen Zieloperandenadresse dienen. So enthält jeder Eintrag einen aus drei Bits bestehenden Wert CT, der die Zahl der Zeichen angibt, die ein Zeichensymbol oder Teilsymbol enthält. Des weiteren weist jeder Eintrag, der ein Teilsymbol enthält, ein Teilsymbol- Indikatorbit PI, eine Zeigeradresse zum Vorgänger-Teilsymbol sowie einen Offset-Wert auf, der den Abstand angibt, der zwischen der laufenden Zieloperandenadresse und dem ersten Teilsymbol eines aus Teilsymbolen bestehenden Zeichensymbols liegt. Bei Auftreten eines Teilsymbols (Systemzustand 3) wird der Offset-Wert über einen Multiplexer 118 der Inkrementierschaltung 115 zugeführt und dort zum laufenden Adreßwert addiert. Die Fig. 13 veranschaulicht diese Operation für das aus vier Teilsymbolen bestehende Zeichensymbol 5 von Fig. 3. Der Offset-Wert wird auch einem Addierer 120 zugeführt, der die Summe aus dem Offset-Wert und der Zeichenzahl CT des ersten Teilsymbols bildet und im Systemzustand 3 einem Register 121 zuführt. Dieser Wert wird am Ende der Verarbeitung eines aus Teilsymbolen bestehenden Zeichensymbols (Systemzustand 6) über den Multiplexer 118 und die Inkrementierschaltung 115 zur Inkrementierung des Inhalts von Register 110 auf die Adresse des als nächstes dem Zieloperanden hinzuzufügenden Zeichensymbols verwendet. Auch dies ist aus Fig. 13 ersichtlich. Während der Verarbeitung von Teilsymbolen wird die Dekrementierschaltung 116 wirksam, die den laufenden Adreßwert jeweils um die Zeichenzahl CT des gerade verarbeiteten Teilsymbols reduziert. Der neue Adreßwert wird über den Multiplexer 112 im Systemzustand ZS5 im Register 110 gespeichert. Von den Ausgängen der Schaltungen 115 oder 116 werden jeweils die Adreßbits 28 über einen Multiplexer 124 zu den Zeiten ZS2, ZS3, ZS5 und ZS6 einer Exklusiv-Oder- Schaltung 125 zugeführt, die als zweites Eingangssignal das Adreßbit 28 der laufenden Zieloperandenadresse erhält und auf Leitung 126 eine Zugriffsanforderung ZA für eine Abspeicherung eines 8-Byte-Blocks expandierter Daten in den Zielspeicher 12 erzeugt. Auch hier wird die Adreßbitstelle 28 als die niedrigste Bitstelle der aktuellen Zieloperandenadresse zur Festellung verwendet, wann ein 8-Byte-Datenblock verarbeitet ist. Zugleich dient auch hier das Adreßbit 28 zur Unterscheidung zwischen aufeinanderfolgenden Blöcken des Zieloperanden. Das Adreßbit 28 der laufenden Adresse liefert über eine Leitung 127 das Signal T28 zur Zuordnerschaltung 60 (Fig. 9) als Anzeige dafür, ob der in Bearbeitung befindliche Byteblock ein Block ist, dessen Adresse einen geradzahligen und einen ungeradzahligen Wert hat, d. h. ob das Adreßbit 28 den Wert "0" hat (= gerade) oder den Wert "1" hat (= ungerade). Dementsprechend werden die so unterschiedenen Blöcke "GERADE" (GR) bzw. "UNGERADE" (UGR) genannt.The address of the target operand is recorded in the address register 110 . At the beginning of an expansion operation, register 110 is set to the address of the target operand in memory 12 via multiplexer 112 . This address also consists of 31 bits, of which bits 0 to 28 are used via a bus 113 to address the target memory 12 and bits 28 to 31 are fed via bus 54 to the distributor 22 for controlling the positional alignment of the character symbols. An incrementing circuit 115 is used to update the address during the processing of the current character symbol, and a decrementing circuit 116 is used to update the address during the processing of the current partial symbol. The entries in the dictionary memory 14 , in association with the respective symbol or partial symbol, contain control fields which are used to determine the current target operand address. Thus, each entry contains a three-bit value CT, which indicates the number of characters that a character symbol or partial symbol contains. Furthermore, each entry that contains a partial symbol, a partial symbol indicator bit PI, a pointer address to the previous partial symbol and an offset value that indicates the distance between the current target operand address and the first partial symbol of a symbol consisting of partial symbols . If a partial symbol (system state 3) occurs, the offset value is fed to the incrementing circuit 115 via a multiplexer 118 and added there to the current address value. FIG. 13 illustrates this operation for the character symbol 5 of FIG. 3 consisting of four partial symbols . The offset value is also fed to an adder 120 , which forms the sum of the offset value and the number of characters CT of the first partial symbol and in the system state 3 feeds a register 121 . This value is used at the end of processing a partial symbol character (system state 6) via multiplexer 118 and incrementing circuit 115 to increment the contents of register 110 to the address of the character symbol to be next added to the target operand. This can also be seen in FIG. 13. During the processing of partial symbols, the decrementing circuit 116 takes effect, which reduces the current address value by the number of characters CT of the currently processed partial symbol. The new address value is stored in the register 110 via the multiplexer 112 in the system state ZS5. From the outputs of the circuits 115 or 116 , the address bits 28 are fed via a multiplexer 124 at times ZS2, ZS3, ZS5 and ZS6 to an exclusive-OR circuit 125 , which receives the address bit 28 of the current destination operand address as a second input signal and on line 126 generates an access request ZA for storing an 8-byte block of expanded data in the target memory 12 . Again, the address bit position 28 is used as the lowest bit position of the current target operand address to determine when an 8-byte data block is processed. At the same time, address bit 28 also serves to differentiate between successive blocks of the target operand. The address bit 28 of the current address supplies the signal T28 to the assigning circuit 60 ( FIG. 9) via a line 127 as an indication of whether the byte block being processed is a block, the address of which has an even and an odd value, ie whether the address bit 28 has the value "0" (= even) or the value "1" (= odd). Accordingly, the blocks differentiated in this way are called "EVEN" (GR) or "ODD" (UGR).

Der Adressengenerator 23 weist auch ein Adressenregister 128 auf, in das die Zieloperandenadresse bei Beginn einer Teilsym­ bolverarbeitung (Systemzustand 3) eingespeichert wird für einen Vergleich mit den Bits 0 bis 28 der laufenden Zielope­ randenadresse zur Feststellung, wann Teilsymbole eines Zeichensymbols dem gleichen 8-Byte-Block hinzuzufügen sind, der am Beginn der Verarbeitung der Teilsymbole dieses Zeichensymbols gegen eine Übertragung zum Zielspeicher 12 gesperrt wurde. Die Gleich-Anzeige EQ wird über eine Leitung 130 der Zuordnerschaltung 60 in Fig. 9 zugeführt. The address generator 23 also has an address register 128 , in which the target operand address is stored at the start of a partial symbol processing (system state 3) for a comparison with bits 0 to 28 of the current target operational address to determine when partial symbols of a character symbol are the same 8-byte -Block are to be added, which was blocked at the start of processing the partial symbols of this symbol against transmission to the target memory 12 . The equal display EQ is supplied to the assigning circuit 60 in FIG. 9 via a line 130 .

Die Fig. 14 zeigt eine Schaltung 140 zur Erzeugung der Speicherzugriffsanforderungen, die während einer Datenexpansion auftreten. Der Schaltung 140 liegt eine Speicherorganisation zugrunde, bei der der Quellenspeicher, der Wörterbuchspeicher und der Zielspeicher in einem gemeinsamen Speicher vereinigt sind und Bereiche dieses Speichers bilden. Es wird ferner von einer Anordnung ausgegangen, die zu einer Zeit jeweils einen Speicherzugriff ausführen kann. Die Schaltung 140 enthält je eine Verriegelungsschaltung 142, 143, 144 für die drei Speicherzugriffsarten. Diese Verriegelungsschaltungen sind mit einer Prioritätslogik 145 verbunden, die festlegt, welcher Speicherzugriff zuerst auszuführen ist, wenn mehrere Speicherzugriffs-Anforderungen gleichzeitig auftreten. Die Prioritätslogik 145 liefert über eine Ausgangsleitung 146 Anforderungssignale zum Speicher für einen Speicherzugriff zur Entnahme von Daten aus dem Speicher oder zur Speicherung von Daten in den Speicher. Jedem Anforderungssignal sind die entsprechenden Speicheradressen zugeordnet, wie sie in Verbin­ dung mit Fig. 1 und 12 beschrieben wurden. Die Prioritätslogik 145 empfängt auf einer Leitung 147 Signale vom Speicher, die anzeigen, daß die angeforderte Operation ausgeführt worden ist. In Abhängigkeit von diesem Signal erzeugt die Prioritätslogik 145 ein Rückstellsignal auf einer der Leitungen 148, 149, 150, durch welches die Verriegelungsschaltung, deren Anforderung bereits erledigt ist, rückgestellt wird. Nach der Rückstellung kann eine Anforderung nächstniedrigerer Priorität ausgeführt werden, bis alle im Wartezustand befindlichen Anforderungen abgearbeitet sind. Figure 14 shows a circuit 140 for generating the memory access requests that occur during data expansion. The circuit 140 is based on a memory organization in which the source memory, the dictionary memory and the target memory are combined in a common memory and form areas of this memory. An arrangement is also assumed which can carry out a memory access at a time. Circuit 140 each includes a latch 142 , 143 , 144 for the three types of memory access. These latches are connected to priority logic 145 which determines which memory access is to be performed first when multiple memory access requests occur at the same time. The priority logic 145 provides, via an output line 146, request signals to the memory for memory access for extracting data from the memory or for storing data in the memory. The corresponding memory addresses are assigned to each request signal, as described in connection with FIGS. 1 and 12. Priority logic 145 receives on line 147 signals from memory indicating that the requested operation has been performed. Depending on this signal, the priority logic 145 generates a reset signal on one of the lines 148 , 149 , 150 , by means of which the locking circuit, the request for which has already been completed, is reset. After the reset, a request with the next lower priority can be carried out until all the requests in the waiting state have been processed.

Die Verriegelungsschaltung 142 markiert eine Holen-Anforderung für einen Wörterbucheintrag und erzeugt ein Anforderungssignal AF1. Diese Anforderung löst einen Speicherzugriff zum Wörter­ buch-Speicherbereich aus und überträgt den entnommenen Eintrag in das Register 20. Die Schaltung 142 erhält ein Einstellsignal, wenn sich die Anordnung im Systemzustand 1 oder 5 befindet. Die Prioritätslogik 145 ordnet ihr die höchste Prioritätsstufe zu. Damit werden Speicherzugriffe zum Wörterbuchspeicherbereich bevorzugt gegenüber allen anderen Speicherzugriffen. Die Verriegelungsschaltung 143 markiert eine Speichern-Anforderung für den Zieloperanden und erzeugt ein Anforderungssignal AF2. Diese Anforderung bewirkt, daß ein 8-Byte-Block expandierter Daten aus einem der Register 26 bis 29 in den Speicher übertragen wird. Sie wird eingestellt, wenn die Anordnung in den Systemzustand 2 übergeht und auf Leitung 126 eine Änderung des Adreßbits 28 in der Zieloperandenadresse angezeigt wird. Sie wird des weiteren eingestellt, wenn die Anordnung aus dem Systemzustand 5 in den Systemzustand 4 übergeht und eine Änderung des Adreßbits 28 in der Zieloperandenadresse angezeigt wird. Die Verriegelungsschaltung 143 wird ferner eingestellt, wenn das letzte Teilsymbol eines Zeichensymbols in das im SN- Zustand befindliche Zielregister 26, 27, 28 oder 29 geladen worden ist. Die Verriegelungsschaltung 144 markiert eine Holen- Anforderung für den Quellenoperanden. Sie erzeugt ein Anforderungssignal AF3, das bewirkt, daß ein 8-Byte-Block komprimierter Daten aus dem Speicher in eines der Register 15, 16 geladen wird. Die Schaltung 144 wird eingestellt, wenn die Anordnung in den Systemzustand 2 oder 6 übergeht und auf Leitung 108 eine Änderung des Adreßbits 28 in der Quellenoperandenadresse angezeigt wird.The latch 142 marks a fetch request for a dictionary entry and generates a request signal AF1. This request triggers a memory access to the dictionary book memory area and transfers the extracted entry into the register 20 . Circuit 142 receives a set signal when the arrangement is in system state 1 or 5. The priority logic 145 assigns it the highest priority level. Memory accesses to the dictionary memory area are thus preferred to all other memory accesses. The latch circuit 143 marks a store request for the target operand and generates a request signal AF2. This request causes an 8-byte block of expanded data to be transferred from one of registers 26 through 29 to memory. It is set when the arrangement changes to system state 2 and a change in the address bit 28 in the target operand address is indicated on line 126 . It is also set when the arrangement changes from system state 5 to system state 4 and a change in the address bit 28 in the target operand address is displayed. The latch circuit 143 is also set when the last sub-symbol of a character symbol has been loaded into the target register 26 , 27 , 28 or 29 in the SN state. Latch circuit 144 marks a fetch request for the source operand. It generates a request signal AF3 which causes an 8-byte block of compressed data to be loaded from the memory into one of the registers 15 , 16 . Circuit 144 is set when the arrangement goes into system state 2 or 6 and line 108 indicates a change in address bit 28 in the source operand address.

Die Anforderungen AF2 und AF3 können gleichzeitig auftreten. Des weiteren kann jede Anforderung auftreten, während noch eine andere Anforderung anhängig ist. Die Prioritätslogik 145 ordnet der Verriegelungsschaltung 142 die höchste Prioritätsstufe zu. Damit werden Speicherzugriffe zum Wörterbuchspeicherbereich unmittelbar ausgeführt, um zu vermeiden, daß in der Expansionsoperation Wartezeiten auftreten. Die über die Ver­ riegelungsschaltungen 143 und 144 angeforderten Speicherzugriffe gestatten ein begrenztes Weiterarbeiten der Anordnung, weshalb Wartezeiten wegen diesen Speicherzugriffen seltener auftreten. Da die Anordnung weniger Quellendaten vom Speicher holt als Zieldaten in den Speicher abgespeichert werden, sind Speicherzugriffe der letzteren Art häufiger und daher Warte­ zeiten wahrscheinlicher. Der Verriegelungsschaltung 143 ist daher eine höhere Priorität zugeordnet als der Verriegelungs­ schaltung 144. Die obige Erläuterung macht deutlich, daß die die Speicheroperationen in einem erheblichen Maße unabhängig von der Operation der Anordnung sind und daß sie parallel zu dieser ausgeführt werden. Es ist daraus auch ersichtlich, daß Speicheroperationen zum Holen komprimierter Daten und zum Abspeichern expandierter Daten jeweils nur dann ausgeführt werden, wenn ein voller Datenblock zu transportieren ist.The requests AF2 and AF3 can occur simultaneously. Furthermore, any request can occur while another request is pending. The priority logic 145 assigns the latch circuit 142 the highest priority level. Memory accesses to the dictionary memory area are thus carried out immediately in order to avoid waiting times occurring in the expansion operation. The memory accesses requested via the locking circuits 143 and 144 allow the arrangement to continue to be operated for a limited time, which is why waiting times occur less frequently because of these memory accesses. Since the arrangement fetches less source data from the memory than target data is stored in the memory, memory accesses of the latter type are more frequent and therefore waiting times are more likely. The latch circuit 143 is therefore assigned a higher priority than the latch circuit 144 . The above explanation makes it clear that the memory operations are to a considerable extent independent of the operation of the arrangement and that they are carried out in parallel with it. It can also be seen from this that storage operations for fetching compressed data and for storing expanded data are only carried out when a full data block is to be transported.

Im Zeitdiagramm von Fig. 15 sind die erläuterten Operationen anhand eines Beispiels noch einmal im Zusammenhang dargestellt. Der obere Teil zeigt die Systemzustände ZS1 bis ZS6 und die Änderungen der Quellenoperandenadresse QA und der Zieloperan­ denadresse ZA. Im mittleren Teil sind Speicherzugriffsanforde­ rungen AF1 bis AF3 gemäß Fig. 14 angegeben. Der untere Teil zeigt die Änderungen der Zielregisterzuordnungen bei Eintritt in die Systemzustände ZS3 und ZS6.In the time diagram of FIG. 15, the explained operations are shown once again in context using an example. The upper part shows the system states ZS1 to ZS6 and the changes in the source operand address QA and the destination operand address ZA. In the middle part, memory access requirements AF1 to AF3 according to FIG. 14 are given. The lower part shows the changes in the target register assignments when the system states ZS3 and ZS6 are entered.

In Abwandlung des dargestellten Ausführungsbeispiels kann es zweckmäßig sein, einen direkten Übertragungspfad vom Symbol­ selektor zum Verteiler 22 vorzusehen, um Teile des Quellenope­ randen, die bei der vorausgegangenen Datenkomprimierung unver­ ändert geblieben sind, unmittelbar in den Zieloperanden zu übertragen. Dabei kann es sich um Einzelzeichen oder um durch ein Sonderzeichen markierte Zeichenfolgen handeln, deren Adressierung in der gleichen Weise erfolgt, wie es in Verbindung mit den Fig. 1 bis 5 und 12 beschrieben wurde. Diese Zeichen können unter Umgehung der Wörterbuches direkt dem Register 20 zugeführt werden und im Verteiler 22 in der gleichen Weise wie Zeichensymbole verarbeitet werden. Eine solche Abwandlung kann zweckmäßig sein, wenn die Expansion auf stark inhomogene Quellendaten angewendet werden soll, für die nur ein verhältnismäßig geringer Komprimierungsgrad erreicht werden konnte.In a modification of the illustrated embodiment, it may be expedient to provide a direct transmission path from the symbol selector to the distributor 22 in order to transfer parts of the source ope that have remained unchanged during the previous data compression to be transmitted directly to the target operand. These can be single characters or character strings marked by a special character, which are addressed in the same way as was described in connection with FIGS. 1 to 5 and 12. Bypassing the dictionary, these characters can be fed directly to the register 20 and processed in the distributor 22 in the same way as character symbols. Such a modification can be expedient if the expansion is to be applied to strongly inhomogeneous source data for which only a relatively low degree of compression could be achieved.

Claims (28)

1. Verfahren zur Expansion komprimierter Daten, unter Verwendung eines Quellenspeichers zur Aufnahme von Blöcken komprimierter Daten, die vorzugsweise nach der Lempel-Ziv- Methode erzeugte Indexsymbole enthalten, unter Verwendung eines Wörterbuchspeichers, der Einträge von expandierten Zeichensymbolen enthält, die den Indexsymbolen zugeordnet sind, und eines Zielspeichers zur Aufnahme der expandierten Daten, gekennzeichnet durch folgende Schritte:
  • a) abwechselndes Laden von zwei Quellenregistern mit jeweils einem Block komprimierter Daten eines adressierten Quellenoperanden und Auswahl eines Indexsymbols als Adresse eines zugehörigen Wörterbucheintrags,
  • b) Entnahme des adressierten Eintrags aus dem Wörterbuch­ speicher und Feststellung, ob der Eintrag ein Zeichensymbol oder eines von mehreren rückwärtsverketteten, ein Zeichensymbol bildenden Teilsymbolen enthält,
1. Method for expanding compressed data, using a source memory for holding blocks of compressed data, which preferably contain index symbols generated according to the Lempel-Ziv method, using a dictionary memory which contains entries of expanded character symbols which are assigned to the index symbols, and a target memory for recording the expanded data, characterized by the following steps:
  • a) alternating loading of two source registers, each with a block of compressed data from an addressed source operand and selection of an index symbol as the address of an associated dictionary entry,
  • b) removing the addressed entry from the dictionary and determining whether the entry contains a symbol or one of several back-linked partial symbols forming a symbol,
bei Feststellung eines Zeichensymbols:
  • c) Auswahl eines Satzes von Zielregistern zur stellengerechten Aufnahme expandierter Zeichensymbole,
  • d) wechselweises Laden expandierter Zeichensymbole in ein Zielregister und Übertragen eines Blockes expandierter Zeichensymbole in den Zielspeicher,
if a symbol is found:
  • c) selection of a set of target registers for the appropriate recording of expanded character symbols,
  • d) alternately loading expanded character symbols into a target register and transferring a block of expanded character symbols into the target memory,
bei Feststellung eines Teilsymbols:
  • e) Auswahl eines weiteren Satzes von Zielregistern zur stellengerechten Aufnahme expandierter Teilsymbole und Sperren des zuletzt zur Aufnahme von Zeichensymbolen benutzten Zielregisters und des als erstes zur Aufnahme von Teilsymbolen benutzten Zielregisters gegen eine Übertragung zum Zielspeicher,
  • f) wechselweises Laden expandierter Teilsymbole in zwei Zielregister und Übertragen eines Blockes expandierter Teilsymbole in den Zielspeicher,
  • g) bei Erreichen des letzten der rückwärtsverketteten Teilsymbole Freigabe der gesperrten Zielregister und Auswahl des zuvor zur Aufnahme des ersten Teilsymbols ausgewählten Zielregisters zur Aufnahme von Zeichensymbolen bis der Füllzustand erreicht ist,
  • h) Wiederholung der Schritte a) bis g) bis alle Indexsymbole des adressierten Quellenoperanden verarbeitet sind.
if a partial symbol is found:
  • e) selection of a further set of target registers for the in-place recording of expanded partial symbols and blocking the target register last used for recording character symbols and the target register first used for recording partial symbols against transmission to the target memory,
  • f) alternately loading expanded partial symbols into two target registers and transferring a block of expanded partial symbols into the target memory,
  • g) upon reaching the last of the backward-linked partial symbols, releasing the locked target register and selecting the target register previously selected for the recording of the first partial symbol for recording character symbols until the filling state is reached,
  • h) repeating steps a) to g) until all index symbols of the addressed source operand have been processed.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Indexsymbole eine lückenlose Zeichenfolge bilden und daß die Auswahl eines Indexsymbols nach Schritt a) bitadressiert erfolgt.2. The method according to claim 1, characterized in that the Index symbols form a complete string and that the Selection of an index symbol after step a) bit-addressed he follows. 3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, daß die Auswahl eines Indexsymbols nach Schritt a) eine Stellenausrichtung der Byte- und Bitstellen beider Quellenregister auf die Bitstellen der Wörterbuchadresse beinhaltet.3. The method according to any one of claims 1 or 2, characterized characterized in that the selection of an index symbol after Step a) position alignment of the byte and bit positions both source registers to the bit positions of the Dictionary address includes. 4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Wörterbucheinträge eine Hinweisadresse enthalten, über die eine Rückwärtsverkettung der Teilsymbole erfolgt, sowie ein Kennzeichenbit enthalten, das zur Feststellung dient, ob einem Wörterbucheintrag ein Zeichensymbol oder einem Teilsymbol zugeordnet ist.4. The method according to any one of claims 1 to 3, characterized characterized in that the dictionary entries a Contain a hint through which a backward chaining of the partial symbols and a flag bit included, which serves to determine whether one Dictionary entry a character symbol or a partial symbol assigned. 5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß bei Festellung eines Teilsymbols gemäß Schritt b) ein dem Eintrag des Teilsymbols entnommener Offset-Wert zur Inkrementierung der Zieloperandenadresse auf die Adresse des ersten Teilsymbols verwendet wird und daß diese Adresse mit jeder Verarbeitung eines Teilsymbols um die in diesem enthaltene Zeichenzahl dekrementiert wird.5. The method according to any one of claims 1 to 4, characterized characterized in that when a sub-symbol according to Step b) a taken from the entry of the partial symbol Offset value for incrementing the target operand address to the address of the first partial symbol is used and  that this address with each processing of a partial symbol is decremented by the number of characters contained in it. 6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die zur Aufnahme von Zeichensymbolen oder Teilsymbolen dienenden Zeichenstellen der Wörterbucheinträge auf die Zeichenstellen zweier in der Speicheradressierung jeweils aufeinanderfolgender Blöcke des Zieloperanden ausgerichtet werden und daß in jedes Zielregister ein Block des Zieloperanden geladen wird.6. The method according to any one of claims 1 to 5, characterized characterized in that the for recording character symbols or partial symbols serving characters of the Dictionary entries on the characters of two in the Memory addressing of successive blocks of the target operand and that in each Target register a block of the target operand is loaded. 7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß zur Verarbeitung von Zeichensymbolen zwei Zielregister ausgewählt werden, daß dem Wörterbuchspeicher entnommene Zeichensymbole nacheinander jeweils in eines dieser Zielregister geladen werden, während der Inhalt des anderen zum Zielspeicher übertragen wird.7. The method according to any one of claims 1 to 6, characterized characterized in that for processing character symbols two target registers are selected that the Character symbols extracted from dictionary memory one after the other are loaded into one of these target registers, while the other's content is being transferred to the destination memory becomes. 8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die Zuordnung der Zielregister zur Aufnahme aufeinanderfolgender Blöcke expandierter Daten von der Geradzahligkeit und Ungeradzahligkeit der Adressen abhängig ist, auf denen die Blöcke im Zielspeicher gespeichert werden.8. The method according to any one of claims 1 to 7, characterized characterized in that the assignment of the target register to Consecutive blocks of expanded data from the even and odd numbers of the addresses depends on which the blocks in the destination memory get saved. 9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß bei Feststellung eines Teilsymbols von den zwei bis dahin zur Aufnahme von Zeichensymbolen verwendeten Zielregistern ein erstes, zuletzt als Aufnahmeregister benutztes gegen Entnahme gesperrt wird, während das zweite, zuletzt als Überlaufregister benutzte seine Funktion behält, daß an Stelle des ersten Zielregisters ein drittes Zielregister ausgewählt wird, daß zur anfänglichen Aufnahme von Teilsymbolen zusätzlich ein viertes Zielregister ausgewählt wird, das ebenfalls gegen Entnahme gesperrt wird, und daß das wechselweise Laden expandierter Teilsymbole und Übertragen eines Blocks expandierter Teilsymbole zum Zielspeicher mit dem zweiten und dem dritten Zielregister erfolgt.9. The method according to any one of claims 1 to 8, characterized characterized in that when a partial symbol of the two hitherto for the reception of drawing symbols target registers used a first, last as Recording register used is locked against removal, while the second one, last used as an overflow register its function retains that in place of the first Target register a third target register is selected that for the initial inclusion of partial symbols fourth target register is selected, which is also against Removal is blocked, and that the alternate loading expanded sub-symbols and transfer of a block  expanded sub-symbols to the destination memory with the second and the third target register. 10. Verfahren nach Anspruche 9, dadurch gekennzeichnet, daß bei der Verarbeitung der Teilsymbole geprüft wird, ob die noch zum laufenden Zeichensymbol gehörenden Teilsymbole in das erste Zielregister zu laden sind, daß in diesem Falle das Register zur Aufnahme der restlichen Teilsymbole ausgewählt wird, und daß nach Laden des letzten Teilsymbols das erste und dritte Zielregister entsperrt werden und das dritte Zielregister zur Aufnahme des folgenden Eintrags aus dem Wörterbuch ausgewählt wird, wenn dieser ein selbständiges Zeichensymbol enthält.10. The method according to claim 9, characterized in that at the processing of the partial symbols is checked whether the still part symbols belonging to the current symbol in the first target registers are to be loaded that in this case the Register selected to hold the remaining partial symbols and that after loading the last sub-symbol the first and third destination registers are unlocked and the third Target register to include the following entry from the Dictionary is selected if this is an independent Contains symbol. 11. Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß jedes Zielregister jedem Schritt c) bis g) zugeordnet werden kann.11. The method according to any one of claims 1 to 10, characterized characterized in that each target register every step c) to g) can be assigned. 12. Anordnung zur Expansion komprimierter Daten, mit einem Quellenspeicher zur Aufnahme komprimierter Daten, die vorzugsweise nach der Lempel-Ziv-Methode erzeugte Indexsymbole enthalten, unter Verwendung eines Wörterbuchspeichers, der Einträge von expandierten Zeichensymbolen enthält, die den Indexsymbolen zugeordnet sind, mit einem Zielspeicher zur Aufnahme der expandierten Daten und mit Operandenregistern zur Speicherung von Daten während ihrer Verarbeitung, dadurch gekennzeichnet, daß zwei Quellenregister (15, 16) vorgesehen sind, die wechselweise zur Aufnahme je eines Blocks komprimierter Daten eines adressierten Quellenoperanden dienen, daß ein Symbolselektor (18) vorgesehen ist, der aus dem Inhalt der Quellenregister jeweils in aufsteigender Adressenfolge ein Indexsymbol auswählt als Adresse für einen Zugriff zum Wörterbuchspeicher (14), daß ein Wörterbuch-Eintrag- Register (20) vorgesehen ist zur Aufnahme des adressierten Eintrags aus dem Wörterbuchspeicher und zur Feststellung, ob der Eintrag ein Zeichensymbol oder eines von mehreren rückwärtsverketteten, ein Zeichensymbol bildenden Teilsymbolen enthält, daß eine Verteilerschaltung (22) vorgesehen ist zur Kopplung des Wörterbuch-Eintrag- Registers (20) mit zwei Sätzen von Zielregistern (26 bis 29), die zur Aufnahme expandierter Zeichensymbole und Teilsymbole dienen, und daß die Verteilerschaltung eine Steuer- und Koppelschaltung (55, 60) enthält zur Auswahl der Zielregister in Abhängigkeit von der Feststellung von Zeichen- oder Teilsymbolen, zum wechselweisen Laden der Zielregister und Abspeichern ihres Inhalts sowie zum Sperren des zuletzt zur Aufnahme von Zeichensymbolen benutzten Zielregisters und des als erstes zur Aufnahme von Teilsymbolen benutzten Zielregisters gegen eine Übertragung zum Zielspeicher. 12. Arrangement for expanding compressed data, with a source memory for receiving compressed data, which preferably contain index symbols generated according to the Lempel-Ziv method, using a dictionary memory which contains entries of expanded character symbols which are assigned to the index symbols, with a target memory for receiving the expanded data and with operand registers for storing data during their processing, characterized in that two source registers ( 15 , 16 ) are provided, which alternately serve to receive one block of compressed data each of an addressed source operand, that a symbol selector ( 18 ) is provided, which selects an index symbol from the content of the source register in ascending address sequence as the address for access to the dictionary memory ( 14 ), that a dictionary entry register ( 20 ) is provided for receiving the addressed entry from the dictionary memory and to determine whether the entry contains a character symbol or one of a plurality of backward-linked partial symbols forming a character symbol, that a distributor circuit ( 22 ) is provided for coupling the dictionary entry register ( 20 ) to two sets of target registers ( 26 to 29 ) , which are used to hold expanded character symbols and partial symbols, and that the distribution circuit contains a control and coupling circuit ( 55 , 60 ) for selecting the target register depending on the detection of character or partial symbols, for alternately loading the target register and storing their content, and to lock the destination register last used to hold character symbols and the destination register used first to hold partial symbols against transmission to the destination memory. 13. Anordnung nach Anspruch 12, dadurch gekennzeichnet, daß der Symbolselektor (18) einen Multiplexer (40) aufweist zur Bitstellenverschiebung eines von der Byte-Bit-Adresse des Quellenoperanden im Bitstellenbereich der Quellenregister (15, 17) bestimmten Indexsymbols auf die Bitstellenzahl der Adresse des Wörterbuchspeichers (14).13. The arrangement according to claim 12, characterized in that the symbol selector ( 18 ) has a multiplexer ( 40 ) for shifting the bit position of an index symbol determined by the byte-bit address of the source operand in the bit position range of the source registers ( 15 , 17 ) to the bit number of the address the dictionary memory ( 14 ). 14. Anordnung nach Anspruch 12 oder 13, gekennzeichnet durch einen Multiplexer (19), der wahlweise den Ausgang des Symbolselektors (18) oder bei der Verarbeitung von aus Teilsymbolen bestehenden Zeichensymbolen das Hinweisadressenfeld des Wörterbuch-Eintrag-Registers (20) mit dem Adresseneingang des Wörterbuchspeichers (14) verbindet.14. Arrangement according to claim 12 or 13, characterized by a multiplexer ( 19 ), either the output of the symbol selector ( 18 ) or the processing of character symbols consisting of partial symbols, the address field of the dictionary entry register ( 20 ) with the address input of Dictionary memory ( 14 ) connects. 15. Anordnung nach einem der Ansprüche 12 bis 14, dadurch gekennzeichnet, daß der Verteiler (22) eine Stellenverschiebeschaltung (52) enthält, die zur Verschiebung der Bytestellen der Zeichensymbole oder Teilsymbole relativ zum gemeinsamen Bitstellenbereich von zwei benachbarten Blöcken des Zieloperanden dient in Abhängigkeit von der laufenden Zieloperandenadresse, und daß die Länge der Blöcke der Größe der Zielregister (26 bis 29) entspricht. 15. Arrangement according to one of claims 12 to 14, characterized in that the distributor ( 22 ) contains a digit shift circuit ( 52 ) which serves to shift the byte digits of the character symbols or partial symbols relative to the common bit position range of two adjacent blocks of the target operand depending on the current destination operand address, and that the length of the blocks corresponds to the size of the destination registers ( 26 to 29 ). 16. Anordnung nach einem der Ansprüche 12 bis 15, dadurch gekennzeichnet, daß der gemeinsame Bytestellenbereich zweier benachbarter Blöcke des Zieloperanden in zwei Teilbereiche (Sammelleitungen 57, 58) unterteilt ist, die über eine Multiplexerschaltung (55) mit unterschiedlichen Zielregistern (26 bis 29) koppelbar sind.16. Arrangement according to one of claims 12 to 15, characterized in that the common byte location area of two adjacent blocks of the destination operand is divided into two sub-areas (bus lines 57, 58 ), which have a multiplexer circuit ( 55 ) with different destination registers ( 26 to 29 ) can be coupled. 17. Anordnung nach Anspruch 16, dadurch gekennzeichnet, daß zur Unterscheidung der Blöcke ein Steuersignal (T28) aus der niedrigsten Stelle der Zieloperandenadresse abgeleitet wird, das die Blöcke als "GERADE" oder "UNGERADE" einordnet.17. The arrangement according to claim 16, characterized in that for Differentiating the blocks a control signal (T28) from the lowest position of the target operand address the blocks are called "EVEN" or "ODD" classifies. 18. Anordnung nach einem der Ansprüche 12 bis 17, dadurch gekennzeichnet, daß eine Zuordnerschaltung (60) zur Auswahl der Zielregister (26 bis 29) Steuerregister (66 bis 69) aufweist, die den Funktionen "GERADE", "UNGERADE", "SPERREN NIEDRIG" und "SPERREN HOCH" entsprechen und Steuerwerte (0, 1, 2 oder 3) speichern, von denen jeder einem der Zielregister (26 bis 29) zugeordnet ist und zur Erzeugung von Steuersignalen für die Multiplexerschaltung (55) dient.18. Arrangement according to one of claims 12 to 17, characterized in that an allocation circuit ( 60 ) for selecting the target register ( 26 to 29 ) has control registers ( 66 to 69 ) which have the functions "EVEN", "ODD", "LOCK." LOW "and" LOCK HIGH "correspond and store control values (0, 1, 2 or 3), each of which is assigned to one of the target registers ( 26 to 29 ) and is used to generate control signals for the multiplexer circuit ( 55 ). 19. Anordnung nach einem der Ansprüche 12 bis 18, dadurch gekennzeichnet, daß an die Ausgänge der Steuerregister (66 bis 69) je eine Dekodierschaltung (73 bis 78, 87, 88, 93) angeschlossen ist, die zur Erzeugung von Steuersignalen für die Multiplexerschaltung (55) zur Auswahl der Zielregister (26 bis 27) dient.19. Arrangement according to one of claims 12 to 18, characterized in that a decoder circuit ( 73 to 78 , 87 , 88 , 93 ) is connected to the outputs of the control registers ( 66 to 69 ), which is used to generate control signals for the multiplexer circuit ( 55 ) serves to select the target register ( 26 to 27 ). 20. Anordnung nach einem der Ansprüche 12 bis 19, dadurch gekennzeichnet, daß den Eingängen der Steuerregister (66 bis 69) Multiplexer (89, 94, 95) zugeordnet sind, über die jeweils am Anfang und am Ende der Verarbeitung der Teilsymbole eines Zeichensymbols eine Änderung der Zielregisterzuordnung in den Steuerregistern eingestellt wird. 20. Arrangement according to one of claims 12 to 19, characterized in that the inputs of the control registers ( 66 to 69 ) are assigned multiplexers ( 89 , 94 , 95 ), via which a at the beginning and at the end of processing the partial symbols of a character symbol Change the target register assignment is set in the control registers. 21. Anordnung nach einem der Ansprüche 12 bis 20, dadurch gekennzeichnet, daß die Ausgänge der den Funktionen "GERADE" und "UNGERADE" entsprechenden Steuerregister (67, 68) über den Multiplexer (89) mit dem der Funktion "SPERREN NIEDRIG" entsprechenden Steuerregister (66) verbunden sind und am Beginn einer Verarbeitung von Teilsymbolen dessen Schaltzustand festlegen und des weiteren mit einer logischen Schaltung (90) verbunden sind, die in Abhängigkeit vom Schaltzustand der Steuerregister (67, 68) das der Funktion "SPERREN HOCH" entsprechende Steuerregister (69) einstellt und über die Multiplexer (94, 95) an die Eingänge der Steuerregister (67, 68) Zustandsänderungssignale zurückführt, die jeweils am Beginn einer Verarbeitung von Teilsymbolen den Schaltzustand dieser Register ändern, während dieser am Ende einer Verarbeitung von Teilsymbolen vom Schaltzustand des der Funktion "SPERREN HOCH" entsprechenden Steuerregisters (69) bestimmt wird.21. Arrangement according to one of claims 12 to 20, characterized in that the outputs of the control registers ( 67 , 68 ) corresponding to the functions "EVEN" and "ODD" via the multiplexer ( 89 ) with the control register corresponding to the "LOCK LOW" function ( 66 ) and at the beginning of processing of partial symbols determine its switching state and are further connected to a logic circuit ( 90 ) which, depending on the switching state of the control registers ( 67 , 68 ), corresponds to the control register corresponding to the "LOCK UP" function ( 69 ) and returns via the multiplexers ( 94, 95 ) to the inputs of the control registers ( 67 , 68 ) state change signals which change the switching state of these registers at the beginning of processing of partial symbols, while this changes at the end of processing of partial symbols from the switching state of the the control register ( 69 ) corresponding to the "LOCK UP" function is determined. 22. Anordnung nach einem der Ansprüche 12 bis 21, dadurch gekennzeichnet, daß die Multiplexer (89, 94, 95) das Adressen-Steuersignal (T28) aus der niedrigsten Stelle der Zieloperandenadresse für die Zuordnung der Funktion "GERADE", "UNGERADE" oder "SPERREN NIEDRIG" zu den Zielregistern (26, 27, 28 oder 29) zugeführt erhalten.22. Arrangement according to one of claims 12 to 21, characterized in that the multiplexers ( 89 , 94 , 95 ) the address control signal (T28) from the lowest digit of the target operand address for the assignment of the function "EVEN", "ODD" or "LOCK LOW" fed to the destination registers ( 26 , 27 , 28 or 29 ). 23. Anordnung nach einem der Ansprüche 12 bis 22, dadurch gekennzeichnet, daß ein Addierer (120) vorgesehen ist, der vom Wörterbuch-Eintrag-Register (20) bei Feststellung eines Teilsymbole enthaltenden Zeichensymbols einen Offset-Wert zugeführt erhält und mit diesem die laufende Zieloperanden­ adresse auf die Adresse des ersten Teilsymbols einstellt.23. Arrangement according to one of claims 12 to 22, characterized in that an adder ( 120 ) is provided which receives an offset value from the dictionary entry register ( 20 ) upon detection of a character symbol containing partial symbols and with it the current value Set the target operand address to the address of the first sub-symbol. 24. Anordnung nach einem der Ansprüche 12 bis 23, dadurch gekennzeichnet, daß eine Dekrementierschaltung (116) vorgesehen ist, die bei jeder Verarbeitung eines Teilsymbols einen Teilsymbol-Längenwert aus dem Wörterbuch- Eintrag-Register (20) zugeführt erhält und die laufenden Zieloperandenadresse auf die Adresse des nächsten Teilsymbols einstellt.24. Arrangement according to one of claims 12 to 23, characterized in that a decrementing circuit ( 116 ) is provided which receives a partial symbol length value from the dictionary entry register ( 20 ) each time a partial symbol is processed and the current target operand address sets the address of the next sub-symbol. 25. Anordnung nach einem der Ansprüche 12 bis 24, dadurch gekennzeichnet, daß eine EXKLUSIV-ODER-Schaltung (125) die laufende Zieloperandenadresse mit einer vorgegebenen Blockgrenzenadresse vergleicht und eine Speicherzugriffs­ anforderung für eine Blockübertragung zum Zielspeicher (12) erzeugt, wenn die Blockgrenze überschritten wird.25. Arrangement according to one of claims 12 to 24, characterized in that an EXCLUSIVE-OR circuit ( 125 ) compares the current target operand address with a predetermined block limit address and generates a memory access request for a block transfer to the target memory ( 12 ) when the block limit is exceeded becomes. 26. Anordnung nach einem der Ansprüche 12 bis 25, dadurch gekennzeichnet, daß zur Festlegung der Reihenfolge gleich­ zeitig auftretender Speicherzugriffe eine Prioritätslogik (145) vorgesehen ist, die für die Speicherzugriffsarten "Holen eines Wörterbucheintrags", "Holen eines Quellenoperandenblockes" und "Abspeichern eines Zieloperandenblockes" je eine Verriegelungsschaltung (142 bis 144) enthält, die eine Speicherzugriffsanforderung bis zu ihrer Ausführung speichert, und daß die Prioritätslogik (145) einem Speicherzugriff zum Holen eines Wörterbucheintrags Vorrang vor anderen Speicherzugriffs­ anforderungen einräumt und einem Speicherzugriff zum Abspeichern eines Zieloperandenblocks Vorrang vor dem Holen eines Quellenoperandenblockes einräumt.26. Arrangement according to one of claims 12 to 25, characterized in that a priority logic ( 145 ) is provided for determining the order of simultaneous memory accesses, which for the memory access types "fetching a dictionary entry", "fetching a source operand block" and "storing a destination operand block "includes one latch circuit (142 to 144) up to its execution stores a memory access request, and that the priority logic (145) admits a memory access for retrieving a dictionary entry requirements priority over other memory access and a memory access for storing a destination operand block precedence over the Get a source operand block.
DE19934342521 1993-12-14 1993-12-14 Compressed data expansion method Expired - Fee Related DE4342521C1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19934342521 DE4342521C1 (en) 1993-12-14 1993-12-14 Compressed data expansion method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19934342521 DE4342521C1 (en) 1993-12-14 1993-12-14 Compressed data expansion method

Publications (1)

Publication Number Publication Date
DE4342521C1 true DE4342521C1 (en) 1995-07-13

Family

ID=6504916

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19934342521 Expired - Fee Related DE4342521C1 (en) 1993-12-14 1993-12-14 Compressed data expansion method

Country Status (1)

Country Link
DE (1) DE4342521C1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19616531A1 (en) * 1996-04-25 1997-11-06 Rolf Nagel Data compression memory storage process for data processing
DE19706268A1 (en) * 1997-02-18 1998-08-20 Christian Wenz Data-format specific compression process for video and sound data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4843389A (en) * 1986-12-04 1989-06-27 International Business Machines Corp. Text compression and expansion method and apparatus
EP0350281B1 (en) * 1988-07-05 1993-07-28 BRITISH TELECOMMUNICATIONS public limited company Method and apparatus for encoding, decoding and transmitting data in compressed form

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4843389A (en) * 1986-12-04 1989-06-27 International Business Machines Corp. Text compression and expansion method and apparatus
EP0350281B1 (en) * 1988-07-05 1993-07-28 BRITISH TELECOMMUNICATIONS public limited company Method and apparatus for encoding, decoding and transmitting data in compressed form

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZIV, J. et al: "A Universal Algorithm for Sequential Data Compression", IN: IEEE Trans- actions on Information Theory, Vol. IT-23, No. 3, May 1977, S. 337-343 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19616531A1 (en) * 1996-04-25 1997-11-06 Rolf Nagel Data compression memory storage process for data processing
DE19706268A1 (en) * 1997-02-18 1998-08-20 Christian Wenz Data-format specific compression process for video and sound data

Similar Documents

Publication Publication Date Title
DE3131341C2 (en)
DE3151745C2 (en)
DE3424962C2 (en)
CH650600A5 (en) CENTRAL PROCESSOR UNIT OF A DATA PROCESSING SYSTEM WITH OPERATION CODE EXTENSION REGISTER.
EP0048767A1 (en) Priority stage controlled interruption device
DE2730328B2 (en) Circuit arrangement for determining the best matching data word of data words stored in a data word memory with a search word
DE2718110A1 (en) DATA PROCESSING UNIT
DE4334294C1 (en) Variable length string processor
DE2054830A1 (en) Information processing system with word-structured memory and method for accessing such a memory
DE2900586C2 (en) Arrangement for decoding code words of variable length
DE2458286A1 (en) DATA PROCESSING SYSTEM FOR MOVING DATA FIELDS WITH DIFFERENT STRUCTURES
DE2221442A1 (en) Associative memory
DE69629540T2 (en) Method and device for sorting elements
DE2739525C2 (en) computer
DE3107568A1 (en) DATA PROCESSING DEVICE
DE2403039C2 (en) Device for executing commands in an address-extended electronic data processing system
DE4342521C1 (en) Compressed data expansion method
DE3000012A1 (en) CIRCUIT ARRANGEMENT FOR EXECUTING A TRANSMISSION COMMAND IN A DATA PROCESSING SYSTEM
EP0265555A1 (en) Method and circuitry for addition of floating point numbers
DE2900460A1 (en) QUEUE STRUCTURE
DE2750126B2 (en)
EP0760502B1 (en) Ranking method for membership function values of linguistic input values in a fuzzy logic processor and device for carrying out the method
DE2816838C2 (en) Method and priority control unit for assigning priorities
DE2846521C2 (en)
DE2234192C2 (en) Data processing system

Legal Events

Date Code Title Description
8100 Publication of the examined application without publication of unexamined application
D1 Grant (no unexamined application published) patent law 81
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee