DE2208664A1 - Method for decoding a prefix-free compression code of variable length - Google Patents
Method for decoding a prefix-free compression code of variable lengthInfo
- Publication number
- DE2208664A1 DE2208664A1 DE19722208664 DE2208664A DE2208664A1 DE 2208664 A1 DE2208664 A1 DE 2208664A1 DE 19722208664 DE19722208664 DE 19722208664 DE 2208664 A DE2208664 A DE 2208664A DE 2208664 A1 DE2208664 A1 DE 2208664A1
- Authority
- DE
- Germany
- Prior art keywords
- decoding
- address
- character
- decoding table
- decoded
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
- H03M7/425—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4025—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code constant length to or from Morse code conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Böblingen, den 15. Februar 1972 ne-skBoeblingen, February 15, 1972 ne-sk
Anmelderin: International Business MachinesApplicant: International Business Machines
Corporation, Armonk, N.Y. 10 504Corporation, Armonk, N.Y. 10 504
Amt!.Aktenzeichen: Neuanmeldung Aktenz.d.Anmelderin: Docket YO 970 070Office!. File number: New registration File number of the applicant: Docket YO 970 070
Verfahren zur Decodierung eines Vorsatzfreien Verdichtungscödes veränderlicher LangeMethod for decoding a prefix-free compression code of variable length
Die Erfindung bezieht sich auf das Gebiet der Datenverdichtung und insbesondere auf ein Verfahren zur Decodierung von Daten, die unter Verwendung eines vorsatzfreien Codes veränderlicher Länge codiert wurden.The invention relates to the field of data compression and in particular to a method for decoding data using an unprecedented code variable length were coded.
In modernen elektronischen Datenverarbeitungsanlagen werden die Daten oder Zeichen gewöhnlich durch Codeworte oder eine Reihe von binären Bits dargestellt. Bei Codes fester Länge wird jedes Zeichen durch die gleiche Anzahl von Bits dargestellt, die unterschiedliche erkennbare Muster bilden= Wenn beispielsweise Bytes aus acht binären Bits zur Darstellung der Zeichen in einer Rechenanlage verwendet werden, können bis zu 256 verschiedene Worte gebildet werden. Seit langem hat man erkannt, daß, wenn in einem Datensatz bestimmte Zeichen häufiger, vorkommen als andere, Codes veränderlicher Länge benutzt werden können,, wobei den häufiger auftretenden Zeichen die kürzeren Codeworte zugeordnet werdenIn modern electronic data processing systems, the data or characters are usually represented by code words or a Series of binary bits represented. For codes of fixed length each character is represented by the same number of bits forming different recognizable patterns = For example, if bytes are made up of eight binary bits to represent of the characters are used in a computer system, up to 256 different words can be formed. Since It has long been recognized that if certain characters occur more frequently than others in a data record, codes variable length can be used, whereby the more frequently occurring characters are assigned the shorter code words
"0 070 209836/11 U"0 070 209836/11 U
und den weniger häufigen Zeichen die längeren Codeworte. Der Morse-Code und der Huffman-Code sind Beispiele für Codes veränderlicher Länge. Wenn ein Code veränderlicher Länge benutzt wird, der streng auf der Wahrscheinlichkeit des Auftretens eines Zeichens zu einem gegebenen Zeitpunkt in einem Datensatz aufgebaut ist, so handelt es sich um ein Codierverfahren, das allgemein als unabhängiges Codierverfahren bezeichnet wird. Ein abhängiger Code ist einer, in dem die Wahrscheinlichkeit des Auftretens eines Zeichens abhängig ist von der Identität eines voraufgehenden Zeichens,and the less frequent characters the longer code words. The Morse Code and the Huffman Code are examples of Variable length codes. If a variable length code is used, it is strictly based on probability of the occurrence of a character at a given point in time in a data record, it is a coding method commonly referred to as an independent coding method. A dependent code is one in which the probability of a character appearing depends on the identity of a preceding character,
Das Codieren von Daten für ein Datenverdichtungssystem erfolgt verhältnismäßig direkt, da die Codiertabelle lediglich so anzuordnen ist, daß die Codewörter veränderlicher Länge sich an solchen Adressen befinden, die direkt dem zu codierenden Zeichen zugeordnet sind. In diesem Falle haben alle die ursprünglichen Codewörter eine feste Länge und für jedes Codewort ist eine Adresse vorhanden, zu der ein direkter Zugriff erfolgen kann und es ist nur notwendig, die Codeworte veränderlicher Länge für jedes Zeichen in dem entsprechenden Speicherplatz zu speichern. Dies gilt sowohl für ein unabhängiges als auch ein abhängiges Codiersystem. Für das Decodieren von Daten, die unter Verwendung von Codewörtern veränderlicher Länge codiert wurden, ist jedoch der Speieherzugriff komplizierter.The coding of data for a data compression system is relatively straightforward, since the coding table is only is to be arranged in such a way that the code words of variable length are located at those addresses which correspond directly to the Characters are assigned. In this case, all of the original code words have a fixed length and for each Codeword is an address that can be accessed directly and it is only necessary to enter the codewords variable length for each character in the corresponding memory location. This is true of both for an independent as well as a dependent coding system. For decoding data using code words variable length coded, however, memory access is more complicated.
Es sei angenommen, daß das längste Codewort eines Codes veränderlicher Länge aus 9 Bits besteht. Dann beträgt der notwendige Speicherplatz zur Speicherung einer Tabelle zur De-It is assumed that the longest code word of a code is variable Length consists of 9 bits. Then the space required to store a table for de-
9 codierung eines solchen Codes in einem Schritt 2 oder 512 Speicherzellen. In einem praktischen Beispiel wäre wahrscheinlich eine wesentlich größere maximale Länge eines Satzes von z.B. 256 Zeichen erforderlich. Es sei bemerkt, daß bei abhängiger Codierung die oben genannten Speicheranforderungen mit der Anzahl der verwendeten Codesätze9 encoding of such a code in one step 2 or 512 memory cells. In a practical example it would be likely a significantly larger maximum length of a record of e.g. 256 characters is required. It should be noted that with dependent coding the memory requirements mentioned above with the number of code sets used
209836/1 1 1 4209836/1 1 1 4
YO 9 70 070YO 9 70 070
zu multiplizieren sind. Die Bedeutung dieser Tatsache besteht darin, daß,wenn man wie vorher als maximale Länge eines Codewortes 9 Bits annimmt, sehr viel Speicherplatz verschwendet wird. Wenn z.B. ein aus drei Bits bestehendes Codewort veränderlicher Länge in einem Schritt durch eine Tabellensuchoperatxon decodiert wird, müssen diese drei Bits und die unmittelbar darauffolgenden sechs Bits analysiert und als Adresse für den Speicher verwendet werden. Daher würden diese drei Bits bei einem gegebenen zu decodierenden Zeichen stets die gleichen sein, jedoch die sechs anderen können variieren. Daher müssten für jedes aus drei Bits bestehendes zu decodierendes Codewort 2 Speicherzellen vorhanden sein, in denen die gleichen drei Anfangsbits stets das richtige Codewort fester Länge oder Zeichen als Ausgangsinformation erzeugen. Bei abhängiger Codierung wird diese Verschwendung von Speicherplatz äußerst groß. Es wird daher ein wirksameres Verfahren zur Analyse eines Eingangsstromes von Daten, die aus Codewörtern veränderlicher Länge bestehen, und ein Verfahren zur Organisation der DecodiertabeIlen benötigt, um den verfügbaren Speicherplatz wirksamer auszunutzen.are to be multiplied. The importance of this fact is that if one as before as maximum length of a code word assumes 9 bits, a lot of memory space is wasted. For example, if a three-bit Code word of variable length is decoded in one step by a table search operation, these three bits and the immediately following six bits are analyzed and used as the address for the memory. Therefore these three bits would always be the same for a given character to be decoded, but the six others can vary. Therefore, 2 memory cells would have to be used for each code word to be decoded consisting of three bits exist in which the same three initial bits are always the correct fixed-length codeword or characters as Generate output information. With dependent coding, this waste of space becomes extremely large. It therefore becomes a more effective method of analyzing an input stream of data composed of variable code words Length exist, and a method of organizing the decoding tables needed to make up the available space to use more effectively.
Der Erfindung liegt daher die Aufgabe zugrunde, ein solches wirksameres Verfahren anzugeben.The invention is therefore based on the object of specifying such a more effective method.
Das Verfahren zur Decodierung vorsatzfreier Codewörter veränderlicher Länge in Codewörter fester Länge, das unter Benutzung einer elektronischen Datenverarbeitungsanlage durchgeführt wird, deren Eingangsregister die codierten Daten als kontinuierliche Folge binärer Bits ohne Anzeige für Beginn oder Ende der einzelnen Zeichen zugeführt werden und deren Speicher eine Decodiertabelle enthält, ist dadurch gekennzeichnet, daß entsprechend dem verwendeten vorsatzfreien Code veränderlicher Länge eine Anzahl von aufeinanderfolgenden Bitspeicherstellen des Eingangsregisters aus-The method of decoding unprecedented variable codewords Length in codewords of fixed length, which is carried out using an electronic data processing system whose input register contains the encoded data as a continuous sequence of binary bits without any indication for Beginning or end of the individual characters are supplied and their memory contains a decoding table, is thereby characterized in that, according to the variable length code used, a number of consecutive Bit storage locations of the input register
Docket YO 970 070Docket YO 970 070
209836/11U209836 / 11U
gewählt wird, daß deren Inhalt geprüft wird und daß jede der aufeinanderfolgenden, geprüften Bitgruppen des Eingangsdatensatzes dazu verwendet wird, um nacheinander verschiedene Abschnitte der Decodiertabelle zu adressieren.it is selected that their content is checked and that each of the successive, checked bit groups of the input data set is used to successively address different sections of the decoding table.
Nach einem weiteren Merkmal der Erfindung werden die aufeinanderfolgenden Bitgruppen als Adreßerhöhungsangaben benutzt, um aufeinanderfolgende Adressen der Decodiertabelle zu adressieren, und wird die Adreßerhöhungsangabe mit einer aus der Decodiertabelle erhaltenen weiteren Adreßerhöhungsangabe kombiniert, wenn der unmittelbar vorhergehende Zugriff zur Decodiertabelle für die unmittelbar voraufgehende Bitgruppe des Eingangsdatensatzes zu keiner erfolgreichen Decodierung führte.According to a further feature of the invention, the successive Bit groups used as address increment specifications in order to address successive addresses in the decoding table, and the increase in address information is combined with a further increase in address information obtained from the decoding table, if the immediately preceding access to the decoding table for the immediately preceding bit group of the input data record did not lead to a successful decoding.
209836/111*209836/111 *
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es zeigen:An embodiment of the invention is shown in the drawings and will be described in more detail below. Show it:
Fig.1 in einem allgemeinen Ablaufdiagramm die wesentlichen Merkmale des vorliegenden Decodierverfahrens, 1 shows the essentials in a general flow chart Features of the present decoding method,
Fig.2 ein etwas genaueres Ablaufdiagramm als Fig.l,FIG. 2 is a somewhat more precise flow chart than FIG.
Fig.3 die Darstellung der wesentlichen Merkmale des Verfahrens für den Speicherzugriff,3 shows the main features of the method for memory access,
Fig. 4 eine ZuOrdnungstabe-lle für den im Beispiel verwendeten Codesatz,4 shows an allocation table for the in the example code set used,
Fig.5 eine Referenztabelle mit den ursprünglichenFig.5 is a reference table with the original
Zeichenlagen in den verschiedenen Gruppen· vor der endgültigen Zusammenfassung zu einem Codesatz, Character positions in the various groups the final summary of a code set,
Fig.6A eine GruppenmitgliedschafttabelIe, die dieFigure 6A is a group membership table showing the
Gruppe angibt, zu welcher jeder Zustand gehört,Group indicates to which each state belongs,
Fig.6B eine, von der Mitgliedschafttabelle der Fig.6A her adressierbare Decodiertabelle,Figure 6B is one of the membership table of Figure 6A addressable decoding table,
Fig.6C eine weitere Decodiertabelle, die auf die primäre Decodiertabelle DT für den jeweiligen Codesatz hinweist und außerdem die Fensteradressierung der Eingabedatenfolge steuert,6C shows a further decoding table which refers to the primary decoding table DT for the respective Code set and also controls the window addressing of the input data sequence,
Fig.7 eine aufgrund der ZuordnungstabeHe aufgebaute Decodiertabelle und7 shows a built up on the basis of the assignment table Decoding table and
YO 970 070YO 970 070
209836/1 1 1 4209836/1 1 1 4
Fig.8 in einem Diagramm die Verwendung des vorliegenden Fensterkonzeptes in einem Beispiel zur Decodierung eines kontinuierlichen Stromes vorsatzfreier Codes mit veränderlicher Länge.Fig. 8 in a diagram the use of the present Window concept in an example for decoding a continuous stream unprecedented codes with variable length.
Für das Verfahren zur Decodierung von Daten, die in vorsatzfreie Codewörter veränderlicher Länge codiert wurden, ist charakteristisch, daß die codierten Daten als eine kontinuierliche Folge binärer Bits empfangen werden, die keine Anzeige für das Ende eines Zeichens oder den Anfang eines anderen aufweisen. Ein erstes Fenster in dem Eingangsregister wird geprüft und die Bits, die in diesem Fenster erscheinen, werden dazu benutzt, um direkt eine Adresse für eine Decodiertabelle zu erhalten. Wenn die im ersten Fenster erscheinenden Daten direkt decodierbar sind, liefert die Decodiertabelle ein Ausgangssignal, das direkt einem Ausgangszeichen zugeordnet ist, das dann dem Ausgang des Systems zugeführt wird. Wenn die erste Reihe von Bits nicht direkt decodierbar ist, wird ein zusätzliches Fenster im Eingangsregister geprüft und eine weitere Adresse für die Decodiertabelle wird davon abgeleitet, indem ein an der ersten Adresse gespeichertes Indexwort benutzt wird. Wenn aufgrund der Bits des zusätzlichen Fensters eine Decodierung möglich ist, wird die Zeichendarstellung wieder dazu benutzt, um ein Ausgangssignal abzuleiten oder es werden weitere Fenster des Eingangsregisters geprüft. Sobald als eine erfolgreiche Decodierung möglich ist, wird eine Anzeige der Anzahl der Bits des Eingangsregisters, die für die Decodierung verwendet wurde, der Steuerschaltung für das Eingangsregister zugeführt, worauf die decodierten Bits aus diesem Register herausgeschoben werden.For the method of decoding data that has been encoded in unprecedented code words of variable length, It is characteristic that the encoded data is received as a continuous sequence of binary bits which have no indication of the end of one character or the beginning of another. A first window in the input register is checked and the bits that are in this window are used to get an address for a decoding table directly. If the in the first window appearing data are directly decodable, the decoding table supplies an output signal which is directly an output character is assigned, which is then fed to the output of the system. If the first set of bits is not direct is decodable, an additional window is checked in the input register and another address for the decoding table is derived from this by using an index word stored at the first address. If due the bits of the additional window can be decoded, the character representation is used again to to derive an output signal or further windows of the input register are checked. As soon as a successful one When decoding is possible, there will be an indication of the number of bits of the input register used for decoding was fed to the control circuit for the input register, whereupon the decoded bits from this register be pushed out.
YO97007° 209836/11 U YO97007 ° 209836/11 U
Wenn eine abhängige Codierung benutzt wurde, ist es notwendig, eine Referenz-Tabelle zu benutzen, In diesem Fall muß das System mit einer Anzeige für eine Gruppe und einem Codesatz versehen werden, bevor irgendein Zeichen codiert werden kann. Die Anfangsbedingungen werden durch den Bediener vorgegeben und nachfolgend wird während der Decodieroperation die Information bezüglich der Gruppe und des Codesatzes von dem vorher decodierten Byte geliefert. Der Bediener startet lediglich die Decodieroperation, da zu Beginn kein vorhergehendes Zeichen vorhanden ist.If dependent coding has been used, it is necessary to use a reference table, in this case the system must be provided with an indication of a group and a code set before any character is encoded can be. The initial conditions are set by the operator and subsequently is made during the decoding operation the group and code set information is provided by the previously decoded byte. The operator only starts the decoding operation because at the beginning there is no preceding character.
Der verwendete Ausdruck Fenster besagt, daß nur ein Zugriff auf bestimmte gewünschte Teile eines Registers erfolgt. Die übliche Art, dies zu erreichen, ist alle Bits außer den gewünschten zu maskieren.The expression window used means that only certain desired parts of a register are accessed. the common way of doing this is to use all but the desired bits to mask.
Wenn eine erfolgreiche Decodierung möglich ist, wird unter Benutzung der Decodiertabelle ein Ausgangssignal erzeugt. Dieses Ausgangssignal wird kombiniert mit einem Hinweis der Gruppenanzeige, die richtige Adresse in der Referenztabelle wird erhalten, das Zeichen wird aus ihr ausgelesen und in das Ausgangsregister übertragen.If successful decoding is possible, an output signal is generated using the decoding table. This output signal is combined with an indication of the group display, the correct address in the reference table is received, the character is read from it and transferred to the output register.
Die Grundgedanken des vorliegenden Decodierverfahrens können bei unabhängiger oder abhängiger Codierung angewandt werden. Bei unabhängiger Codierung sind bedeutend kleinere Decodiertabellen erforderlich und es sind keine Referenz-tabellen oder Gruppenmitgliedschaft-Tabellen erforderlich.The basic ideas of the present decoding method can be applied to independent or dependent coding. With independent coding, significantly smaller decoding tables are required and there are no reference tables or Group membership tables required.
Die Decodiertabellen müssen so aufgestellt und im Speicher gespeichert werden, daß, wenn ein Codewort veränderlicher Länge den Speicheradressierschaltungen zugeleitet wird, diese eine Adresse ansteuern, die ein Hineingehen in die Decodier-Tabelle an dem Punkt ermöglicht, wo sich die identifizierende Information für das Zeichen, das zu decodieren ist, befindet.The decoding tables must be drawn up and stored in memory in this way that when a variable length code word is supplied to the memory addressing circuits, this one Address the address that allows entry into the decoding table at the point where the identifying information for the character to be decoded is.
YO97OO7° 209836/11U YO97OO7 ° 209836 / 11U
Sowohl bei unabhängiger als auch bei abhängiger Codierung müssen die in der Decodier-Tabelle gespeicherten Größen eine Anzeige der Länge des Codewortes veränderlicher Länge, das gerade decodiert wird, einschließen, so daß nur das Codewort aufgegeben wird und bei unabhängiger Codierung die Bitkonfiguration des Zeichens fester Länge für das Auslesen verfügbar ist. Im Falle abhängiger Codierung gibt, wie aus der nachfolgenden Beschreibung hervorgeht, das in der primären Decodiertabelle gespeicherte Zeichen oder Element nur einen Hinweis auf das Zeichen fester Länge anstatt dieses selbst. Dieses Hinweissignal wird der geeigneten Referenz-Tabelle zugeführt, die zusammen mit der Gruppeninformation benutzt wird, um das Zeichen fester Länge auszulesen.Both in the case of independent and dependent coding, the values stored in the decoding table must include an indication of the length of the variable length codeword being decoded, so that only the codeword and with independent coding the bit configuration of the character of fixed length for reading out is available. In the case of dependent coding, as can be seen from the following description, there is the one in the primary Decoding table stored character or element only indicates the fixed length character instead of this itself. This notification signal is fed to the appropriate reference table, which together with the group information is used to read the fixed-length character.
Die eine wesentliche Bedingung des vorliegenden Decodierverfahrens besteht darin, daß das Codewort veränderlicher Länge vorsatzfrei sein muß. D.h. irgendein gegebenes Codewort darf nicht das gleiche Bitmuster aufweisen wie man es in der gleichen Zahl von Bits am Anfang eines längeren Codewortes antrifft. Dies gilt unabhängig von der Länge des gerade betrachteten Codewortes veränderlicher Länge. Der Huffman-Code ist ein Code veränderlicher Länge, der diese Eigenschaften besitzt. Für eine vollständige Beschreibung der im Zusammenhang mit der Erfindung erwähnten Codierverfahren sei verwiesen auf die Bücher "Information Theory and Coding" von Norman Abramson, McGraw-Hill und "Information Theory and Reliable Communication" von Robert G. Gallager, John Wiley and Sons,Inc.The one essential condition of the present decoding method consists in the fact that the variable length code word must have no prefix. I.e. any given code word is allowed do not have the same bit pattern as one would have in the same number of bits at the beginning of a longer code word encountered. This applies regardless of the length of the code word of variable length under consideration. The Huffman Code is a variable length code that has these properties. For a full description of the related Coding method mentioned with the invention is referred to the books "Information Theory and Coding" by Norman Abramson, McGraw-Hill and "Information Theory and Reliable Communication" by Robert G. Gallager, John Wiley and Sons, Inc.
Das Decodierverfahren der vorliegenden Erfindung umfaßt die folgenden allgemeinen Schritte. Unter der Annahme, daß der Anfangsabschnitt eines Eingangsstromes von binären zu decodierenden Daten sich in dem Eingangsregister befindet, besteht der erste Schritt darin, die ersten m-Bits durch ein erstes Fenster zu betrachten. Diese m-binären Bits können entweder direkt oder zusammen mit einem Index benutzt werden, um eineThe decoding method of the present invention comprises the following general steps. Assuming that the The initial portion of an input stream of binary data to be decoded is located in the input register the first step is to look at the first m-bits through a first window. These m-binary bits can be either can be used directly or in conjunction with an index to create a
YO 9 70 070 · 209 83B / 1 1 1YO 9 70 070 209 83B / 1 1 1
erste Eingangsstelle für die .decodierte Welle zu erhalten. Sodann wird die Decodiertabelle an der angegebenen Adresse adressiert und der Inhalt der adressierten Speicherzelle geprüft. An diesem Punkt wird eine Feststellung gemacht. Entweder ist es möglich, die ersten m-Bits direkt zu decodieren (was aus dem Inhalt der Tabelle feststellbar ist) oder eine Adresserhöhung oder ein Hinweissignal wird der Decodiertabelle entnommen, um eine zweite Eingangsstelle für die Decodiertabelle zu bekommen. Um jedoch die vollständige Adresse für die zweite Eingangsstelle zu erhalten, muß das nächste Fenster im Eingangsregister geprüft werden und das binäre Muster, das in diesem Fenster erscheint, wird zusammen mit dem eben erhaltenen Hinweissignal benutzt, um an einer anderen Stelle in die Tabelle zu gehen. Wenn festgestellt wird, daß ein erfolgreiches Decodieren möglich ist, werden zwei Informationen der Decodiertabelle entnommen. Die erste ist eine Anzeige der Anzahl von Bits, die das Zeichen bilden, das gerade im Eingangsregister sich befindet, und die es erlaubt, den Inhalt des Eingangsregisters so" zu verschieben, daß das nächste Zeichen decodiert werden kann. Die zweite Information ist ein Binärzeichen, das der Decodiertabelle entnommen wird und das decodierte Zeichen angibt. Bei einem unabhängigen Decodierverfahren kann die Zeichendarstellung das decodierte Zeichen fester Länge sein oder es kann dazu benutzt werden, das tatsähliche Zeichen einer weiteren Tabelle zu entnehmen. Bei einem abhängigen Decodierverfahren muß das der Decodiertabelle entnommene Zeichen dazu verwendet werden, um das richtige Zeichen aus einer Referenz-Tabelle zu gewinnen. Die richtige Adresse in der Referenz-Tabelle kann in üblicher Weise dadurch erzeugt werden, daß das in der Decodier-Tabelle gespeicherte Binärmuster zusammen mit einer Information über die Gruppe und den Codesatz benutzt wird, die aufgrund der Decodierung des unmittelbar vorhergehenden Zeichens gewonnen wird.first entry point for the decoded wave. Then the decoding table is addressed at the specified address and the content of the addressed memory cell checked. At this point a determination is made. It is either possible to decode the first m-bits directly (which can be determined from the content of the table) or an increase in the address or a notification signal is the Decoding table taken to a second entry point for getting the decoding table. However, to get the full To get the address for the second entry point, the next window in the entry register must be checked and the binary pattern that appears in this window is used together with the hint signal just received to to go to another place in the table. If found If it becomes that successful decoding is possible, two pieces of information are taken from the decoding table. The first is an indication of the number of bits that the Form characters that are currently in the input register and that allow the content of the input register to be "closed" shift so that the next character can be decoded. The second piece of information is a binary character which is taken from the decoding table and which indicates the character being decoded. at an independent decoding method, the character representation can be the decoded fixed length character or it can be used to take the actual character from another table. With a dependent decoding method the character taken from the decoding table must be used to find the correct character from a reference table to win. The correct address in the reference table can be generated in the usual way by that the binary pattern stored in the decoding table together with information about the group and the code set obtained from the decoding of the immediately preceding character.
YO 970 070YO 970 070
209836/11U209836 / 11U
Das Verfahren zur Decodierung arbeitet in der Weise, daß jeder Abschnitt eines Eingangscodewortes durch aufeinander folgende Fenster betrachtet wird und unter Benutzung einer Decodiertabelle der Abschnitt entweder ein Ausgangscodewort erzeugt oder auf eine nachfolgende Stelle in der Decodier-Tabelle hinweist, deren Indexangabe mit dem nachfolgenden durch das nächste Fenster betrachteten Codeabschnitt kombiniert wird, um einen weiteren Eingang in die Tabelle zu liefern. Dieser weitere Eingang in die Tabelle liefert wieder entweder ein ausgelesenes Zeichen oder ein Hinweisoder Indexsignal, das auf eine andere Stelle in der Tabelle hinweist, deren Inhalt wieder zu dem Eingangsdatenfeld addiert wird, das sich im nächsten Fensterabschnitt befindet. Dieses Verfahren wird solange fortgesetzt, bis ein erfolgreiches Decodieren stattfindet. Es ist angenommen, daß richtige oder fehlerfreie Eingangsdaten angeliefert werden, so daß ein erfolgreiches Decodieren stattfindet.The method for decoding works in such a way that each section of an input code word passes through one another The following window is considered and, using a decoding table, the section is either an output code word or points to a subsequent position in the decoding table, the index of which corresponds to the following code section viewed through the next window is combined to form a further entry in the table deliver. This further entry in the table again delivers either a read-out character or a note or Index signal that points to another position in the table, the content of which is added back to the input data field located in the next section of the window. This process continues until a successful Decoding takes place. It is assumed that correct or error-free input data are supplied, so that a successful decoding takes place.
Das Verfahren nach der Erfindung erfordert, daß wenn ein erster Abschnitt der Eingangsdaten nicht zur Decodierung führt, Zugriff auf eine genau angegebene Stelle in der Decodiertabelle erfolgt und die dort gespeicherten Daten wiederum auf eine nachfolgende Stelle in der Decodiertabelle hinweisen, die genau durch den nächsten Teil der Eingangsdaten bezeichnet ist, die durch das nächste Fenster betrachtet werden.The method according to the invention requires that if a first section of the input data is not for decoding leads, access to a precisely specified place in the decoding table takes place and the data stored there again point to a subsequent position in the decoding table, which is exactly through the next part of the input data which are viewed through the next window.
Es sei bemerkt, daß die Fensterlängen entsprechend dem verwendeten besonderen Codesatz ändern und längere Fenster, die etwas mehr Speicherplatz erfordern können trotzdem in bestinniten Fällen vorzuziehen sein, wenn die Zeit, die bei Benutzung vieler aufeinanderfolgender Fenster erforderlich ist, eine geringe Verschwendung von Speicherplatz ausgleicht. Die Anzahl und Größe der Fenster kann so bestimmt werden,It should be noted that the window lengths according to the one used Change special code sets and longer windows that require a little more memory can still be used Should be preferable in cases where the time required when using many consecutive windows is, offsets a small waste of space. The number and size of the windows can be determined
970 070 209 8 3 ß/ 1 1 U970 070 209 8 3 ß / 1 1 U
daß eine Abwägung von Speicherplatz gegenüber Decodiergeschwindigkeit erfolgt.that a trade-off of storage space versus decoding speed he follows.
Das Diagramm in Fig.l zeigt in sehr allgemeiner Form die Grundoperationen des vorliegenden Verfahrens. Der mit "Ingangbringen des Systems" bezeichnete Schritt 1 besagt, daß die zu decodierenden Daten in die richtigen SpeichersteIlen für die angeforderte Zuführung zu den Systemeingangsregistern gesetzt und das erforderliche Decodierprogramm im System richtig bezeichnet ist.The diagram in Fig.l shows in a very general form the Basic operations of the present method. The one with "getting started of the system "Step 1 means that the data to be decoded is in the correct memory locations for the requested feed to the system input registers and the required decoding program in the system is correctly designated.
Der mit "Finden der Gruppe und des Codesatzes" bezeichnete Schritt 2 gilt nur für ein abhängiges Decodierschema und beim Ingangbringen des Systems sollten eine erste Gruppenzahl und eine erste Codesatzzahl geliefert werden.The one labeled "Finding the group and code set" Step 2 only applies to a dependent decoding scheme and when starting the system should be an initial group number and a first code set number are provided.
Die Bezeichnung "Sind die Daten des 1.Fensters decodierbar?" des Schrittes 3 besagt, daß ein erstes Fenster oder eine kleine Anzahl von Bits des laufenden Inhaltes des Eingangsdatenregisters beginnend mit den ersten Bits des Eingabedatensatzes untersucht wird und entschieden wird, ob eine direkte Decodierung aus der Decodiertabelle möglich ist oder nicht. Ist sie möglich, wird das Zeichen oder eine geeignete Kennzeichnung einfach ausgelesen und ein Bitlängenanzeiger in der Decodiertabelle abgefragt und der Inhalt des Eingaberegisters um eine entsprechende Bitzahl verschoben. Bei einem abhängigen Decodierschema kann jetzt zum Schritt 6 übergegangen und die Ausgabe des Decodierers dann in eine Referenz-Tabelle eingegeben werden, um das echte Zeichen für den Ausgabedatensatz zu erhalten.The designation "Can the data of the 1st window be decodable?" of step 3 means that a first window or a small number of bits of the current contents of the input data register starting with the first bits of the input data record is examined and a decision is made whether a direct decoding from the decoding table is possible or not. If it is possible, the sign or a suitable one will be used Identification is simply read out and a bit length indicator is queried in the decoding table and the content of the input register shifted by a corresponding number of bits. In the case of a dependent decoding scheme, you can now move on to step 6 and the output of the decoder is then entered into a reference table to provide the real character for the output record to obtain.
Wenn angenommen wird, daß die Daten des ersten Fensters nicht decodierbar sind, führt das System danach die Schritte 4 und 5 aus, in denen weitere Fenster betrachtet und die Eingabecodebits darin analysiert werden, um festzustellen, ob eineIf it is assumed that the data of the first window cannot be decoded, the system then carries out steps 4 and 5, in which other windows are viewed and the input code bits in them are analyzed to determine whether a
YO 970 070YO 970 070
20983 5/11U20983 5 / 11U
Decodierung möglich ist, basierend auf der in diesenBits gespeicherten Information. Dieser wiederholte Zugriff auf zusätzliche Fenster erfolgt so lange, bis eine erfolgreiche Decodierung möglich ist. Die Decodiertabelle muß natürlich entsprechend aufgebaut und die Fenster richtig gewählt werden, so daß eine erfolgreiche Decodierung immer möglich ist. Die "Ja"-Ausgangssignale in den Schritten 4 und 5 führen natürlich auch zum Schritt 6, der natürlich nur bei der abhängigen Codiertechnik benötigt wird. Sonst kann das tatsächliche Zeichen aus der Decodiertabelle ausgelesen und dem Ausgabedatensatz zugeführt werden.Decoding is possible based on the information stored in these bits. This repeated access to additional windows are made until successful decoding is possible. The decoding table must of course constructed accordingly and the windows correctly selected, so that successful decoding is always possible. The "yes" outputs in steps 4 and 5 lead of course also to step 6, which is of course only required for the dependent coding technology. Otherwise the actual character may read out from the decoding table and fed to the output data set.
Aus dieser sehr allgemeinen Beschreibung des vorliegenden Systems nach dem Ablaufdiagramm der Fig.1 geht hervor, daß gegebene Segmente des Eingangsdatenstromes analysiert oder mit aufeinanderfolgenden Fenstern ausgewertet werden können. Es wurde festgestellt, daß dieses Fensterkonzept eine große Menge Speicherplatz einspart, indem die unnötige Speicherung von Decodierinformation vermieden wird, während gleichzeitig die Decodierzeit in vernünftigen Grenzen gehalten wird. Die Reduzierung der Speicheranforderungen gestattet die Anwendung des vorliegenden Verfahrens auf Systemen mit begrenztem Speicherplatz, die sonst die-geforderten Decodiertabellen nicht speichern können.From this very general description of the present system according to the flow chart of FIG. 1 it can be seen that given segments of the input data stream can be analyzed or evaluated with successive windows. It has been found that this window concept saves a large amount of storage space by eliminating unnecessary storage of decoding information is avoided while simultaneously the decoding time is kept within reasonable limits. The reduction in memory requirements allows the application of the present method on systems with limited storage space, which otherwise do not have the required decoding tables can save.
Die tatsächlichen Anforderungen an die Maschinenausrüstung des Systems, welches das vorliegende Decodierschema nutzt, sind auch bei der abhängigen Decodierung relativ klein. Natürlich muß ein hinreichend großer Kernspeicher vorhanden sein. Es müssen jedoch nur minimale Verknüpfungsfunktionen durchgeführt werden, wie z.B. Erkennung auf· Vorliegen einer O oder einer 1 im ersten Feld des in der Decodiertabelle gespeicherten Speicherwortes. Durch Untersuchung dieses Feldes erkennt das System, ob ein auf das Wort in der Decodiertabelle verweisendes gegebenes Fenster ein decodierbares Ausgangssignal liefert.The actual machine equipment requirements of the system using the present decoding scheme are relatively small even with dependent decoding. Of course, a sufficiently large core memory must be available. It however, only minimal linkage functions need to be performed such as detection of the presence of an O or a 1 in the first field of the memory word stored in the decoding table. By examining this field, the system recognizes whether there is a reference to the word in the decoding table given window provides a decodable output signal.
YO 970 070 „ Λ , YO 970 070 " Λ ,
209836/11U209836 / 11U
Für die verschiedenen SpeieherZugriffsschritte sind auch nur minimale Adreß-Addiereinrichtungen oder Indexeinrichtungen erforderlich. Somit sind die geforderten Systemfunktionen in erster Linie Speicherzugriffe unter Verwendung verschiedener durch das Programm gelieferter Hinweise und Indizes. Dieses Verfahren wird anschließend genauer beschrieben.For the various Speieher access steps are also only minimal address adders or indexers required. Thus, the required system functions primarily memory accesses using various Notes and indices supplied by the program. This procedure is described in more detail below.
Die beschriebene Decodiertechnik kann sowohl bei unabhängiger als auch bei abhängiger Codierung benutzt werden. Die Speicheranforderungen ändern sich dabei stark in Abhängigkeit vonder Anzahl der. verwendeten Gruppen und Codesätze. Allgemein ist die Verdichtung umgekehrt proportional zu den Speicheranforderungen. The decoding technique described can be used with independent as well as with dependent coding. The storage requirements vary greatly depending on the number of. groups and code sets used. Generally the compression is inversely proportional to the storage requirements.
Das Ab lauf diagramm der Fig. 2. zeigt das. erfindungsgemäße Verfahren etwas genauer, für das die Verwendung eines abhängigen Cadierschemas angenommen wird. Oben in Fig.2 wird angenommen, daß eine Anfangsgruppe, und ein erster Codesatz dem System zugeführt werden.The flow diagram of FIG. 2 shows the method according to the invention something more specific, for which the use of a dependent Cadier schemes is adopted. Above in Fig. 2 it is assumed that an initial group and a first code set add to the system are fed.
Der Schritt 1 ist bezeichnet als "Finden der Gruppe". Die Gruppe erhält man entweder aus den Anfangsbedingungen oder sie wird durch das gerade vorher decodierte Zeichen bzw. Byte vorgeschrieben. Im vorliegenden Ausführungsbeispiel wird dazu die Gruppenmitgliedschaftstabelle der Fig.6A verwendet. In diesem Beispiel wurde nur ein Codesatz benutzt/ so daß der Hinweis auf die spezifische Decodiertabelle an der Adresse DQ derselbe für alle Gruppen ist. In der Referenz-Tabelle wird jedoch für verschiedene Gruppen jeweils eine andere Adresse angegeben. Schritt 2 ist bezeichnet mit "Finden des Codesatzes" und diese Operation wurde gerade beschrieben. In diesem Beispiel werden Gruppe und Codesatz in einer einzigen Operation bestimmt.Step 1 is called "Finding the Group". The group is obtained either from the initial conditions or it is prescribed by the character or byte that has just been decoded. In the present exemplary embodiment, the group membership table in FIG. 6A is used for this purpose. In this example only one code set was used / so that the reference to the specific decoding table at address D Q is the same for all groups. In the reference table, however, a different address is given for different groups. Step 2 is labeled "Finding the Code Set" and this operation has just been described. In this example, the group and code set are determined in a single operation.
YO 970 070YO 970 070
2Q9836/1 1 U2Q9836 / 1 1 U
Wenn nur ein Codesatz vorhanden ist, gibt es auch nur eine Decodiertabelle und einen Satz von Fensterlängen. Wenn mehrere Codesätze vorhanden sind/ muß der richtige Codesatz ermittelt werden, da jeder Codesatz seine eigene Decodiertabelle und seinen eigenen Satz Fensterlängen hat. Zwei Gruppen können zum selben Codesatz führen. Wenn also die Gruppe bestimmt ist, werden dadurch zwei Informationen geliefert:If there is only one code set, there is only one Decoding table and a set of window lengths. If several Code sets are available / the correct code set must be determined, since each code set has its own decoding table and has its own set of window lengths. Two groups can lead to the same code set. So if the group decides is, it provides two pieces of information:
a) die Adresse einer Referenz-Tabellea) the address of a reference table
b) die Adresse eines "Kennsatzes", wobei man unter "Kennsatz" die Angabe des Codesatzes versteht.b) the address of a "label", where "label" is understood to mean the specification of the code set.
Bei nur einem Codesatz wie im vorliegenden Beispiel weist jede Gruppe auf dieselbe Kennsatztabelle hin.If there is only one set of codes, as in this example, each group points to the same label table.
Von den Blocks 1 und 2 erhält das System einen Hinweis auf die erste Stelle einer Referenz-Tabelle (aus der Gruppenbezeichnung) und auf die zutreffende Kennsatztabelle, aus welcher die tatsächliche Adresse D_ der entsprechenden Decodiertabelle für den spezifischen Decodiersatz abgeleitet ist, sowie eine Steuerinformation, aus welcher die Länge der für den Codesatz zu verwendenden Fenster abgeleitet werden kann.The system receives a message from blocks 1 and 2 the first position of a reference table (from the group name) and the relevant label table which is the actual address D_ of the corresponding decoding table for the specific decoding set is derived, as well as control information from which the length the window to be used for the code set can be derived.
Der Schritt 3 ist bezeichnet mit "Erhalten der Adresse aus de^i 1. Fenster des Eingangs regis ters" und bedeutet, daß der Inhalt des Fiiigaberegisters durch das erste Fenster betrachtet (die Anzahl der Bits wird durch die Größe des Fensters bestimmt) zusammen mit der Hinweisadresse D_ auf die Decodiertabelle (gefunden in der Kennsatztabelle) dazu benutzt wird, eine Eingangsadresse für die Decodiertabelle zu erzeugen. Schritt 4 besagt, daß die Adresse in der Decodiertabelle, die in den Schritten 3 (oder 7) erhalten wurde, tatsächlich adressiert wird. Bei Adressierung des dort gespeichertenStep 3 is labeled "Obtaining the address from de ^ i 1st window of the input register "and means that the Contents of the input register viewed through the first window (the number of bits is determined by the size of the window) together with the reference address D_ to the decoding table (found in the label table) is used to generate an input address for the decode table. Step 4 says that the address in the decoding table obtained in steps 3 (or 7) is actually is addressed. When addressing the stored there
YO 970 070YO 970 070
209836/1114209836/1114
Wortes wird festgestellt, ob eine direkte Decodierung möglich ist» oder mit anderen Worten, ob ein echtes Zeichen (unabhängige Codierung) oder ein Referenzanzeiger (abhängige Decodierung) dort gespeichert ist. Ist das der Fall, wird die Operation mit Schritt 8 fortgesetzt. Es wird jedoch zuerst angenommen, daß eine Decodierung nicht erfolgt. Das System verzweigt dann zum Schritt 7, welcher besagt, daß eine Adresse gefunden wurde, die auf eine andere Stelle in der Decodiertabelle (oder die erste Stelle einer Untertabelle) verweist. Auf diese Adresse erfolgt ein Zugriff, sie wird gespeichert und der Schritt 6 "Aufgaben des Fensters, nächstes Fenster benutzen" wird angefangen. Dadurch werden die Bits des Eingaberegisters, betrachtet durch das nächste Fenster, adressiert. Diese Bits werden zusammen mit der im Schritt 6 aus der Decodiertabelle erhaltenen Adresse benutzt, um eine neue Adresse in der Decodiertabelle zu erzeugen. Das System kehrt zum Schritt 4 zurück und stellt im Schritt 5 wieder fest, ob die auf der laufenden Adresse in der Decodiertabelle gespeicherte Information eine erfolgreiche Decodierung ermöglicht. Dieser Prozeß umfaßt die Schritte 4, 5, 6 und 7 und wird wiederholt, bis eine erfolgreiche Decodierung stattfindet. Zu diesem Zeitpunkt wird der Schritt angefangen, in dem die genaue Länge des Codewortes und eine Adresse in der Referenz-Tabelle bekannt sind. Diese Information wird der Decodiertabelle entnommen und die Längenanzeige des Codewortes den Steuerschaltungen des Eingaberegisters zugeleitet, welche die genaue Anzahl der decodierten Bits aus dem Eingaberegister entnehmen und so dort nur nichtdecodierte Bits hinterlassen. Die aus der Decodiertabelle erhaltene Adresse wird dann mit der Adresse der richtigen Referenz-Tabelle kombiniert, die man in den Schritten 1 und 2 erhielt. Diese Adresse liefert den Zugriff zu der bestimmten Stelle in der Referenz-Tabelle, wo das binäre Bitmuster fester Länge des Zeichens steht. Das Zeichen mit fester Länge wird dem Ausgabedatensatz im Schritt 9 zugeleitet. Dann wird imWord it is determined whether direct decoding is possible »or in other words whether a real character (independent Coding) or a reference indicator (dependent decoding) is stored there. If that is the case, will the operation continues with step 8. However, it is first assumed that decoding does not occur. The system then branches to step 7 which states that an address has been found which points to a different location in the decoding table (or the first digit of a subtable). This address is accessed it is saved and step 6 "Tasks of the window, use next window" is started. This will be the bits of the input register, viewed through the next window, are addressed. These bits are used together with the im Step 6 uses the address obtained from the decoding table to generate a new address in the decoding table. That The system returns to step 4 and again determines in step 5 whether the current address in the decoding table stored information enables successful decoding. This process includes steps 4, 5, 6 and 7 and is repeated until successful decoding takes place. At this point the step will be started, in which the exact length of the code word and an address in the reference table are known. This information is taken from the decoding table and the length display of the code word is sent to the control circuits of the input register, which take the exact number of decoded bits from the input register and so only non-decoded ones there Leaving bits behind. The address obtained from the decoding table is then matched with the address of the correct reference table combined that were obtained in steps 1 and 2. This address provides access to the specific Place in the reference table where the binary bit pattern of fixed length of the character is located. The fixed length character becomes forwarded to the output data record in step 9. Then im
YO 970 070 209 836/1114YO 970 070 209 836/1114
Schritt 10 die Entscheidung getroffen, ob ein weiteres Zeichen zu decodieren ist. Wenn die Antwort nein lautet, ist die Decodierung damit beendet. Lautet die Antwort ja, folgt Schritt 11, welcher angibt, daß die "Byte-Identitätsinformation" auf den Eingang des Blockes 1 rückgekoppelt und so ein Decodierzyklus nach dem vorliegenden Verfahren abgeschlossen wird.Step 10 made the decision as to whether another character is to be decoded. If the answer is no, it is this ends the decoding. If the answer is yes, step 11 follows which indicates that the "byte identity information" fed back to the input of block 1, thus completing a decoding cycle according to the present method will.
Das Diagramm in Fig.3 zeigt die von der vorliegenden Erfindung geforderten Speicherzugriffsoperationen. Daraus ist zu ersehen, wie die verschiedenen Segmente der Decodiertabellen nach dem Prinzip der vorliegenden Erfindung adressiert werden. Alle in Fig.3 gezeigten Tabellen und Datensätze stehen an verschiedenen Stellen im Hauptspeicher und die entsprechenden Hinweissignale können dem Programm zur Verfügung gestellt werden. Daher wird in der nachfolgenden Beschreibung angenommen, daß die Speicher-Grundhinweise geliefert wurden und die notierten Adressen größtenteils im wesentlichen relative Adressen sind.The diagram in Figure 3 shows that of the present invention required memory access operations. This shows how the various segments of the decoding tables can be addressed according to the principle of the present invention. All tables and data records shown in Fig. 3 are pending various locations in the main memory and the corresponding information signals can be made available to the program will. Therefore, in the following description it is assumed that the basic memory instructions have been provided and the addresses noted are for the most part essentially relative addresses.
Beginnt man die Betrachtung oben in Fig.3, so stellt man fest, daß ein Eingang zur Tabelle D1 entweder von der Anfangsbedingung oder von dem Ausgabedatensatz möglich ist, in welcher das Zeichen B1 das vorher decodierte Byte bezeichnet. Diese Bytekonfiguration liefert eine Adresse für die Tabelle D1, die ein Teil der obenerwähnten Mitgliedschaftstabelle ist, welche wiederum eine Gruppenbezeichnung liefert. Diese Bezeichnung g liefert eine relative Adresse für die zweite Hälfte der Mitgliedschaftstabelle D-. An dieser Adresse (D_ + g) gespeicherte Wörter enthalten zwei Informationsteile. Der erste Teil ist die Adresse des Kennsatzes des richtigen Codesatzes. Der Kennsatz besteht aus der Adresse der ersten Stelle DQ der Decodiertabelle zusammen mit den Längenangaben L , L_, ... der aufeinanderfolgenden zu verwendenden Fenster. Die andere Hälfte der Tabelle D~ enthält die Adresse D3 und weist aufIf one begins the consideration above in FIG. 3, one finds that an entry to table D 1 is possible either from the initial condition or from the output data record in which the character B 1 designates the previously decoded byte. This byte configuration provides an address for table D 1 , which is part of the above-mentioned membership table, which in turn provides a group designation. This designation g provides a relative address for the second half of the membership table D-. Words stored at this address (D_ + g) contain two pieces of information. The first part is the address of the label of the correct code set. The label consists of the address of the first digit D Q of the decoding table together with the length specifications L, L_, ... of the successive windows to be used. The other half of the table D ~ contains the address D 3 and has
YO97OO7° . '209836/111* YO97OO7 °. '209836/111 *
die Basisadresse in der Referenz-Tabelle für die Gruppe hin, zu welcher B1 gehört. Der Inhalt von L. gibt die Länge des ersten Fensters im Eingangsregister an, welches zu betrachten ist. Dieser Inhalt des ersten Fensters "a" liefert einen Eingangspunkt für die Decadiertabelle, der zur Adresse DQ zu addieren ist/ die man aus der Kennsatz-Tabelle erhält. Wenn angenommen wird, daß das erste Fenster keine Decodierung liefert, dann gibt das an der Stelle DQ + a gespeicherte Wort eine Adresse D '. Zu dieser Adresse wird der Adressenzuwachs a1 addiert, den man aus dem Fenster L2 im Eingabedatensatz erhält. Es wird angenommen, daß dies zu einem Speicherwort führt, welches an der Stelle D0 1 + (a1) gespeichert ist und zu einer erfolgreichen Decodierung führt. Der Inhalt eines erfolgreich decodierten Wortes wird unten in der Figur gezeigt. the base address in the reference table for the group to which B 1 belongs. The content of L. specifies the length of the first window in the input register which is to be viewed. This content of the first window "a" provides an entry point for the decoding table which is to be added to the address D Q / which is obtained from the label table. If it is assumed that the first window does not provide any decoding, then the word stored at location D Q + a gives an address D '. The address increment a 1 obtained from window L 2 in the input data record is added to this address. It is assumed that this leads to a memory word which is stored at location D 0 1 + (a 1 ) and leads to successful decoding. The content of a successfully decoded word is shown in the figure below.
Der Inhalt eines' Speicherwortes, welches das Ergebnis einer erfolgreichen Decodierung ist, umfaßt vier Felder. Der .Inhalt dieser Felder ist in der Decodiertabelle des in Fig.7 gezeigten Beispiels bezeichnet mit j, i, sh und-B. Das j-Feld gibt an, ob das Speicherwort ein echtea Zeichen (unabhängig) enthält oder einen Zeichenanzeiger oder eine Adresse (im Falle der abhängigen Codierung). Eine "1" in dieser Bitstelle besagt, daß ein Zeichen, vorhanden ist und 11O", daß ein weiterer Fensterzugriff notwendig ist.The content of a memory word, which is the result of a successful decoding, comprises four fields. The content of these fields is denoted by j, i, sh and -B in the decoding table of the example shown in FIG. The j field indicates whether the memory word contains a real character (independent) or a character indicator or an address (in the case of dependent coding). A "1" in this bit position means that a character is present and 11 O "means that a further window access is necessary.
Das i-Feld hat für die vorliegende Erfindung wenig Bedeutung. In ihm wird angegeben, ob ein Wort, welches decodierbar ist, eine Zeichenangabe, eine Folgeangabe oder eine Kopierangabe enthält. Eine "0" bezeichnet ein Zeichen, eine "1" eine Reihenfolge und eine "2" eine Kopie. Für die vorliegende Erfindung ist die 0 das einzig wichtige Zeichen.The i-field is of little importance to the present invention. It specifies whether a word that can be decoded, a character specification, a subsequent specification or a copy specification contains. A "0" denotes a character, a "1" a sequence and a "2" is a copy. For the present invention the 0 is the only important character.
Das sh Feld gibt die Anzahl von Bits des Ei.ngabedatensatzes an, die für die erfolgreiche Decodieroperation benötigt wur-The sh field gives the number of bits of the input data record required for the successful decoding operation.
10970070 209836/111* 10970070 209836/111 *
den. Wenn also ein Codewort aus sechs Bits soeben erfolgreich decodiert wurde, enthält das sh Feld eine 6. Das bedeutet, daß sechs Bits aus dem Eingaberegister entfernt wurden. Das ist auch der Fall, wenn sieben Bits durch eine Folge von mehreren FensterZugriffen betrachtet wurden. Somit ist jedes überflüssige oder zusätzliche Bit des vorhergehenden Eingabedatenäatzes, welches vorher zwar untersucht wurde, jedoch nicht wirklich ein Teil des vorhergehenden Codewortes war, jetzt das erste Bit des nächsten Teiles des zu untersuchenden Eingabedatensatzes. Anders ausgedrückt liefert das Feld sh die Information, die notwendig ist, um den Anfang des nächsten Codewortes im Eingabestrom genau festzulegen.the. So if a six-bit code word just succeeded has been decoded, the sh field contains a 6. This means that six bits have been removed from the input register became. This is also the case when seven bits have been viewed through a sequence of multiple window accesses. Consequently is every superfluous or additional bit of the previous input data record that was previously examined, but was not actually part of the previous code word, now the first bit of the next part of the one to be examined Input data set. In other words, the sh field provides the information necessary to start the the next code word in the input stream.
Im Zusammenhang mit der Beschreibung der Fig.3 ist noch festzustellen, daß der Zeichenanzeiger B aus der Decodiertabelle DQ entfernt wird und zum zweiten Hinweis auf die Referenztabelle D3 wird. Die spezifische Adresse D3 + (B) in der Referenz-Tabelle wird bestimmt aus der aus dem Register D, erhaltenen Adresse und dem aus dem Register D0 erhaltenen Zeichenanzeiger B. An der Stelle D3 + B in der Referenz-Tabelle wird die echte binäre Zeichendarstellung (Code fester Länge) gespeichert, die in den Ausgabedatensatz zu setzen ist. Beim nächsten Zyklus wird dieses neue Zeichen abgefragt, um Gruppe und Codesatzbezeichnung des nächstfolgenden Eingabezeichens veränderlicher Länge festzustellen.In connection with the description of FIG. 3, it should also be noted that the character indicator B is removed from the decoding table D Q and becomes the second reference to the reference table D 3 . The specific address D 3 + (B) in the reference table is determined from the address obtained from register D 1 and the character indicator B obtained from register D 0. At position D 3 + B in the reference table, the real binary character representation (fixed-length code) to be set in the output data record. In the next cycle, this new character is queried in order to determine the group and code set name of the next input character of variable length.
Die Fign, 2 und 3 zeigen ein Verfahren, welches bei einem abhängigen Codiersenema erforderlich ist. Bei unabhängiger Codierung vereinfacht sich die obige Reihenfolge stark. Vorzugsweise in der Decodiertabelle wird im Feld B das echte binäre Zeichenmuster und nicht ein Codesatzanzeiger gespeichert, der auf das Zeichen in der Referenz-Tabelle hinweist. Außerdem brauchen weder Referenz-noch,Mitgliedschaftstabellen aufgestellt zu werden. Daher sind weder die in Fig.3 (DwD3 FIGS. 2 and 3 show a method which is required in a dependent coding system. With independent coding, the above sequence is greatly simplified. The real binary character pattern and not a code set indicator which points to the character in the reference table is preferably stored in field B in the decoding table. In addition, there is no need to set up reference or membership tables. Therefore, neither those in Fig. 3 (DwD 3
970 070 209836/1114970 070 209836/1114
und D,) gezeigten Tabellen erforderlich, noch braucht die Ausgabe von dem Ausgabe-Datensatz zum System rückgekoppelt zu werden.and D,) required tables shown, nor needs the Output to be fed back to the system from the output data record.
Für das unabhängige Schema erfordert die Decodierung also nur die folgenden Schritte. Eine einzige Kennsatztabelle wird adressiert, um die Anfangsadresse der Decodiertabelle und die Fensterlängenanzeiger zu erhalten. Wenn man diese Anfangsadresse DQ der Decodiertabelle und die Fensterlängeninformation hat, dann ist die Decodxeroperatxon mit der aufeinanderfolgenden Untersuchung des Eingabedatensatzes und den Zugriffen zur Decodiertabelle dieselbe wie bei der oben beschriebenen abhängigen Codierung. Die einzige Ausnahme besteht nach obiger Feststellung darin, daß das Feld B der Decodiertabelle wahrscheinlich so angelegt ist, daß es das echte binäre Zeichen (mit fester Länge) enthält.So for the independent scheme, the decoding only requires the following steps. A single label table is addressed to obtain the starting address of the decoding table and the window length indicators. If one has this start address D Q of the decoding table and the window length information, then the decoder operation with the successive examination of the input data set and the accesses to the decoding table is the same as in the case of the dependent coding described above. The only exception to the above is that field B of the decode table is likely to be designed to contain the true binary character (of fixed length).
Anschließend wird ein spezifisches Beispiel beschrieben, für welches eine typische Zuordnungstabelle in Fig.4 gezeigt und ein Codesatz mit 16 Mitgliedern angenommen wird. Diese Zuordnungstabelle soll nur typisch sein und wird durch die bekannte Huffman-Codiertechnik gewonnen. Die linke Spalte enthält die Codesatzanzeiger. Diese geben die relative Lage eines bestimmten Zeichens im Codesatz an. Die mittlere Spalte mit der Beschriftung "Codewort veränderlicher Länge" gibt das spezielle binäre Bitmuster an, welches einen vorbestimmten Codesatz-oder Zeichenanzeiger erzeugt. Dieser Anzeiger kann dann zusammen mit einer Referenz-Tabelle dazu benutzt werden, das tatsächliche Zeichen mit fester Länge zu liefern, welches durch das verarbeitete Zeichen mit veränderlicher Länge angegeben wird. Die letzte Spalte "Codelänge11 gibt die Anzahl von Bits im Codewort an. Die Decodiertabelle der Fig.7 erzeugt eine Decodierung für alle in Fig.4 angegebenen Zeichen. Während beide Tabellen nur als Beispiel dienen, müssen natürlich dieA specific example is then described, for which a typical assignment table is shown in FIG. 4 and a code set with 16 members is assumed. This allocation table is only intended to be typical and is obtained using the well-known Huffman coding technique. The left column contains the code set indicators. These indicate the relative position of a certain character in the code set. The middle column labeled "Code word of variable length" indicates the special binary bit pattern which generates a predetermined code set or character indicator. This indicator, along with a reference table, can then be used to provide the actual fixed-length character indicated by the variable-length character being processed. The last column "Code length 11" specifies the number of bits in the code word. The decoding table of FIG. 7 generates a decoding for all characters indicated in FIG. 4. While both tables only serve as an example, the
YO 970 070YO 970 070
209836/1114209836/1114
Zuordnungstabelie und die Decodiertabelle für einen gegebenen Codesatz einander entsprechen. So muß also die Decodiertabelle mit Hilfe der Zuordnungstabelle erzeugt werden.Allocation table and the decoding table for a given Code sets correspond to each other. So the decoding table must be generated with the aid of the assignment table.
Fig.5 zeigt eine Referenz-Tabelle für ein abhängiges Codierschema. Die Mitglieder der verschiedenen Gruppen, d.h., MPl, MP2 und MP3 sind weder dieselben noch müssen es unbedingt dieselben Zeichen sein. Im Codesatz MP3 gibt es z.B. kein T. Dieser Umstand ist darauf zurückzuführen, daß bei der Analyse des als Beispeil verwendeten Datensatzes das T nur nach dem Buchstaben A und F und nie nach den Buchstaben H, K oder E auftrat. Wie bereits gesagt, dient das jedoch nur als Beispiel mit einer hypothetischen Datenbasis und einem hypothetischen Codesatz und bei jedem gegebenen Decodiersystem ändern sich Referenz-Tabellen, Codesatzbezeichnungen usw. beträchtlich entsprechend dem jeweiligen Inhalt. Fig.6A zeigt die Mitgliedsschaftstabelle D-, welche die Gruppen angibt, zu denen jedes der Zeichen gehört. Die Situation "Beginn eines Datensatzes" ist nicht gezeigt, es wird jedoch angenommen, daß diese im vorliegenden Beispiel zur Gruppe 1 gehört.5 shows a reference table for a dependent coding scheme. The members of the various groups, i.e., MPl, MP2 and MP3 are not the same, nor do they necessarily have to be the same characters. For example, there is no T. This fact is due to the fact that in the analysis of the data set used as an example, the T is only after the Letters A and F and never after the letters H, K or E occurred. As I said, this is just an example with a hypothetical database and code set and in any given decoding system will change Reference tables, code set names, etc. considerably according to the respective content. Figure 6A shows the membership table D- indicating the groups to which each of the characters belongs. The situation "beginning of a data record" is not shown, but it is assumed that this belongs to group 1 in the present example.
Fig.6B zeigt die Decodiertabelle D2 und die Tatsache, daß für jede der drei Gruppen dieselbe Kennsatzadresse "ADR VON L" jedesmal benutzt wird, obwohl eine andere Referenztabellenadresse geliefert wird. Wenn mehr als ein Codesatz vorhanden ist, ist natürlich für bestimmte Gruppen in dieser Tabelle, die direkt aus dem Inhalt der Mitgliedschaftstabelle D. adressierbar sind, eine andere Kennsatzadresse und eine Referenz-Tabellenadresse vorhanden.Fig. 6B shows the decoding table D 2 and the fact that the same label address "ADR FROM L" is used for each of the three groups each time, although a different reference table address is supplied. If there is more than one code set, there is of course a different label address and a reference table address for certain groups in this table which can be addressed directly from the contents of the membership table D.
Fig.6C zeigt die Kennsatζ-Tabelle L, die die Adresse der Decodiertabelle DQ angibt, welche auf den Anfang der Deeodiertabelle hinweist und außerdem die Zahlen 3,2,2 und 2 enthält, welche die Größe der nachfolgenden Fenster angeben,6C shows the Kennsatζ table L, which indicates the address of the decoding table D Q , which points to the beginning of the decoding table and also contains the numbers 3, 2, 2 and 2, which indicate the size of the subsequent windows,
YO 970 070 209836/11 UYO 970 070 209836/11 U
die bei aufeinanderfolgenden Wiederholungen der Decodierroutine im Beispiel verwendet werden. Sowohl die Größe als auch die Anzahl der Fenster ändern sich natürlich in Abhängigkeit von dem verwendeten Code mit veränderlicher Länge.those for successive repetitions of the decoding routine can be used in the example. Both the size and the number of windows naturally change as a function of the variable length code used.
Fig.7 zeigt die eigentliche Decodiertabelle DQ mit einer Anfangsadresse ADR DQ, die man aus der Kennsatztabelle erhält. Die linke Spalte gibt die relativen Adressen der verschiedenen 28 Eintragungen in der Decodiertabelle an. Diese Adressen werden benutzt, sobald eine Eintragung in die Decodiertabelle vorgenommen wird. Wenn z.B. eine Null im Feld j auftritt und eine Adresserhöhung oder ein Index im selben Wort im Feld Bauftritt, dann heißt das, daß ein weiteres Fenster untersucht werden muß. Das Ergebnis der zweiten Operation ist die Erzeugung einer neuen Adresse in der Decodiertabelle, die mit Q bezeichnet wird, wobei Q = DQ + ^Inhalt des ersten Fensters (a)j + B + Tlnhalt des zweiten Fensters (a')Jist. Der Inhalt der Spalten i, j, sh und B des Speicherwortes wurde oben in Zusammenhang mit Fig.3 beschrieben und als Decodiereinheit dargestellt. Da in diesem Beispiel nur einzelne Zeichen codiert werden, wird keine weitere Angabe benötigt und der Inhalt des Feldes ist ist immer O. Der Inhalt der Speicherwörter in der Decodiertabelle ist im Dezimalformat gezeigt, der tatsächliche Inhalt liegt aber natürlich im binären Format, vor.7 shows the actual decoding table D Q with a start address ADR D Q , which is obtained from the label table. The left column gives the relative addresses of the various 28 entries in the decoding table. These addresses are used as soon as an entry is made in the decoding table. For example, if a zero occurs in field j and an address increment or an index occurs in the same word in field B, this means that another window must be examined. The result of the second operation is the creation of a new address in the decoding table which is denoted by Q, where Q = D Q + ^ contents of the first window (a) j + B + contents of the second window (a ') J. The content of the columns i, j, sh and B of the memory word was described above in connection with FIG. 3 and represented as a decoding unit. Since only individual characters are encoded in this example, no further information is required and the content of the field is is always O. The content of the storage words in the decoding table is shown in decimal format, but the actual content is of course in binary format.
Die Eintragungen in der rechten Spalte sind mit "Adressen vom Eingangsregister" bezeichnet und geben den Inhalt des Eingangsregisters an, betrachtet durch die verschiedenen Fenster, die das Decodierverfahren an der jeweiligen Stelle in der Decodiertabelle fortfahren lassen. Sieht man z.B. auf die relative Adresse Nr. 20, so veranlaßt das in dem Eingabe-Datensatz erscheinende Muster 000 OQO 000 die Adressierung der Adresse 20 der Decodiertabelle und die Abgabe des Codesatzzeichen-An-The entries in the right column are labeled "Addresses from the input register" and indicate the content of the input register, viewed through the various windows that the decoding method at the respective position in the decoding table let go. For example, if you look at the relative address no.20, this will appear in the input data record Sample 000 OQO 000 the addressing of address 20 of the decoding table and the delivery of the code set characters
970 070 209 836/1 1 U970 070 209 836/1 1 U
zeigers 15 an die Referenz-Tabelle. Die rechten und linken Spalten der Fig.7 dienen also lediglich der Erklärung und die'angegebenen Zahlen oder binären Muster existieren in der Decodiertabelle nicht tatsächlich.pointer 15 to the reference table. The right and left Columns in FIG. 7 are therefore only used for explanation and the numbers or binary patterns given exist in the Decoding table not actually.
Nach dieser Beschreibung der allgemeinen Arbeitsweise des Systems der Fig.l und der spezifischen Anwendung der Prinzipien der vorliegenden Erfindung auf abhängig codierte Daten wird jetzt die Arbeitsweise des Systems bei der Decodierung eines spezifischen Beispieles, nämlich der in Fig.8 gezeigten Bitfolge erklärt.Having thus described the general operation of the system of FIG. 1 and the specific application of the principles The present invention based on dependently encoded data now describes the operation of the system in decoding a specific example, namely the bit sequence shown in Figure 8.
Es wird zuerst angenommen/ daß der anfängliche Systemstart, der Anfang eines Datensatzes, das System in die Gruppe 1 und die Tabelle D1 führt. Die Tabelle D2 liefert die Adresse der Kennsatztabelle und eine Basisadresse für die Referenz-Tabelle bei MPl. Die Kennsatztabelle gibt die Adresse DQ der in Fig.7 gezeigten Decodiertabelle. Das Wort L1 in der Kennsatz-Tabelle bezeichnet die ersten drei Bits der Eingabeaufzeichnung als abzusuchende Bits. Im Beispiel sind die ersten drei Bits 100, die binäre Darstellung einer 4, und führen uns zur relativen Adresse 4 in der Decodiertabelle (d.h. DQ + 4). Eine binäre 1 im Feld j besagt, daß dieser 3 Bit große Eingabecode decodiert werden kann. Das Feld sh gibt an, daß die Bitlänge des veränderlichen Codewortes 1 Bit beträgt. Eine im Feld B erscheinende dezimale 1 besagt, daß das echte Zeichen mit fester Länge in der Referenz-Tabelle als erstes Objekt in besagter Tabelle steht (auf der Adresse D_ + B). Aus Fig.5 ist zu ersehen, daß daraus ein A decodiert wird, da MPl vorher angezeigt wurde. Dieses erste Bit im Eingabedatensatz wird jetzt nicht mehr beachtet. An diesem Punkt wird festgestellt, daß das Zeichen A in der Gruppe 1 und im Codesatz 1 (dem einzigen Codesatz) aus der Mitgliedschaftstabelle D (Fig.6A) liegt. Somit finden wir wieder die richtige Basisadresse für die Tabelle D2. DieseIt is first assumed that the initial system start-up, the beginning of a record, leads the system into group 1 and table D 1 . Table D 2 supplies the address of the label table and a base address for the reference table in MP1. The label table gives the address D Q of the decoding table shown in FIG. The word L 1 in the Label Table identifies the first three bits of the input record as bits to be searched. In the example, the first three bits are 100, the binary representation of a 4, and lead us to the relative address 4 in the decoding table (i.e. D Q + 4). A binary 1 in field j means that this 3-bit input code can be decoded. The field sh indicates that the bit length of the variable code word is 1 bit. A decimal 1 appearing in field B means that the real character with a fixed length in the reference table is the first object in said table (at address D_ + B). It can be seen from FIG. 5 that an A is decoded therefrom, since MP1 was displayed beforehand. This first bit in the input data record is no longer taken into account. At this point it is determined that character A is in Group 1 and Code Set 1 (the only code set) from Membership Table D (Figure 6A). Thus we find the correct base address for table D 2 again . These
YO 970 070 209836/1 1 UYO 970 070 209836/1 1 U
liefert wiederum eine Adresse für die Referenz-Tabelle und für die Kennsatz-Tabelle, wodurch die nächsten drei Bits des Eingabedatensatzes abgefragt werden (nachdem das eine nicht mehr beachtete Bit zu einem A decodiert wurde). Dieses Mal erscheint als Bitmuster im ersten Fenster OOO und wird zu D_ + O oder zur relativen Adresse O in der Decodiertabelle decodiert. Eine Null im Feld j besagt, daß die Decodierung noch nicht abgeschlossen ist. Daher wird die im Feld B gespeicherte Zahl, nämlich eine 12, als eine Adresserhöhung für die nächste Fensteroperation festgehalten. Das zweite Fenster (Größe 2 Bits) enthält 00. An der Stelle (DQ +0) +12+0 findet sich wieder eine Null im Feld j und besagt, daß die Decodierung noch nicht abgeschlossen ist. Die vorherige Adresse 12 muß aufgrund der im Feld B gespeicherten 4 um weitere 4 erhöht werden. Jetzt wird das dritte Fenster (2 Bits) adressiert, welches binär 10 oder dezimal 2 enthält. Daher wird die Zahl 2 zu (12 + 4) addiert und führt uns zur relativen Adresse 18 in der Decodiertabelle, wo das Speicherwort zuerst einmal angibt durch eine 1 im Feld j, daß dieses Wort eine erfolgreiche Decodierung bringt; dann, daß das nächste Wort mit veränderlichem Längencode, welches uns zu diesem Punkt in der Decodiertabelle führte, 7 Bits enthielt (Feld sh = 7) und schließlich, daß der Code mit veränderlicher Länge das zehnte Objekt in der Gruppe 1 (gerechnet von dem vorhergehenden A ab) bezeichnet, welches zu einem K in der Referenz-Tabelle decodiert wird. An diesem Punkt wird der Inhalt des Eingaberegisters erhöht und die 7 decodierten Bits entfernt.in turn provides an address for the reference table and for the label table, whereby the next three bits of the input data record are queried (after the one bit that was no longer considered has been decoded to an A). This time, OOO appears as a bit pattern in the first window and is decoded to D_ + O or to the relative address O in the decoding table. A zero in field j indicates that decoding has not yet been completed. Therefore, the number stored in field B, namely a 12, is recorded as an address increment for the next window operation. The second window (size 2 bits) contains 00. At the position (D Q +0) + 12 + 0 there is again a zero in field j and indicates that the decoding has not yet been completed. The previous address 12 must be increased by another 4 based on the 4 stored in field B. Now the third window (2 bits) is addressed, which contains 10 binary or 2 decimal. Therefore the number 2 is added to (12 + 4) and leads us to the relative address 18 in the decoding table, where the memory word first indicates by a 1 in field j that this word brings a successful decoding; then that the next word with variable length code, which led us to this point in the decoding table, contained 7 bits (field sh = 7) and finally that the code with variable length was the tenth object in group 1 (counted from the previous A ab) denotes which is decoded to a K in the reference table. At this point the contents of the input register are incremented and the 7 decoded bits are removed.
Um die Operation noch einmal zu durchlaufen, wird in D festgestellt, daß das gerade decodierte K in der Gruppe 3 liegt und wieder im Codesatz 1 (dem einzig vorhandenen), der das System wieder an den Anfang der Decodiertabelle zur Basisadresse D0 bringt und nach den nächsten 3 Bits des Eingangsstromes suchen läßt. Wieder tritt das Bitmuster 000 auf und führt uns zur relativen Adresse 0 in der Decodiertabelle,In order to run through the operation again, it is determined in D that the K that has just been decoded lies in group 3 and again in code set 1 (the only one available), which brings the system back to the beginning of the decoding table at base address D 0 and after search for the next 3 bits of the input stream. The bit pattern 000 appears again and leads us to the relative address 0 in the decoding table,
10970 07° 209836/1114 10970 07 ° 209836/1114
die wiederum aufgrund der Speicherung der 12 im vierten Feld eine Erhöhung oder einen Index von 12 liefert. Das zweite Fenster hat ein Bitmuster 11, welches eine binäre 3 ist, und wiederum eine Adresse von DQ + 12 + 3 = 15 in der Decodiertabelle liefert, die basierend auf dem Inhalt des Speicherwortes 1, O, 5, 7 anzeigt, daß ein Wort erfolgreich decodiert wurde, daß ein decodiertes Codewort mit veränderlicher Länge 5Bits enthält; weiter, daß es zu einem Codesatz-Anzeiger von führt, der seinerseits wieder auf das 7.Objekt bei MP3 in der Referenz-Tabelle verweist (da das vorhergehende K zur Gruppe 3 gehört). Dieses 7.Objekt in der Gruppe 3 liefert decodiert das Zeichen 7. Auf diese Weise läuft das System weiter, bis die ganze Eingabeaufzeichnung decodiert wurde.which in turn provides an increment or an index of 12 due to the storage of 12 in the fourth field. The second window has a bit pattern 11, which is a binary 3, and in turn supplies an address of D Q + 12 + 3 = 15 in the decoding table which, based on the content of the memory word 1, 0, 5, 7, indicates that a Word has been successfully decoded that a decoded codeword of variable length contains 5 bits; further that it leads to a code set indicator of, which in turn refers to the 7th object in MP3 in the reference table (since the preceding K belongs to group 3). This 7th object in group 3 returns the decoded character 7. The system continues in this way until the entire input record has been decoded.
Ein Beispiel des Effektes der Speicherduplizierung ist in Fig.7 an den relativen Adressen 4-7 zu sehen, wo der Codesatzanzeiger 1 im Feld B des Speicherwortes an allen 4 Stellen gespeichert ist. Somit muß jedesmal dieselbe Anzeige erzeugt werden, wenn eine 1 im ersten Bit des ersten 3 Bit großen Fensters erscheint, ungeachtet der Bits, die nach dieser 1 kommen. Auch hier werden effektiv 3 SpeichersteIlen vergeudet. Wenn also maximal 8 Bits in dem Code mit veränderlicher Länge für die Situation verwendet werden, wo das tatsächliche decodierte Zeichen ein 1-Bit war, dann werden 2 - 1 Speicherstellen dupliziert. Für ein 2 Bitzeichen werden 2-1 Stellen dupliziert usw.An example of the effect of memory duplication can be seen in Fig. 7 at relative addresses 4-7, where the code set indicator 1 is stored in field B of the memory word in all 4 places. Thus, the same display must be generated each time if a 1 appears in the first bit of the first 3-bit window, regardless of the bits that follow this 1 come. Here, too, 3 storage locations are effectively wasted. So if a maximum of 8 bits are used in the variable length code for the situation where the actual decoded Character was a 1-bit, then 2 - 1 memory locations are duplicated. 2-1 digits are required for a 2-bit character duplicated etc.
Für einen gegebenen Code ist also eine bestimmte Fensterlängenkonfiguration optimal. Für einen einzelnen Code sind die besten Fensterlängen relativ leicht zu bestimmen. Wenn mehr als ein Codesatz vorhanden ist, sind die Codes aller Wahrscheinlichkeit nach unterschiedlich, und deswegen ist jede Eintragung in der Kennsatz-Tabelle mit ihrem eigenen Satz von Fensterlängen ausgerüstet. So können die Fensterlängen für den jeweiligen Code optimiert werden.So for a given code there is a certain window length configuration optimal. For a single code, the best window lengths are relatively easy to determine. If more than If a code set is present, the codes are in all likelihood different, and therefore each entry is in the label table with their own set of window lengths. So the window lengths for the respective code can be optimized.
10970070 209836/1 IH 10970070 209836/1 IH
Bei der Beschreibung des. Verfahrens der Decodierung eines Eingabedatensatzes, der aus einem Strom von abhängig codierten vorsatzfreien Codewörtern veränderlicher Länge besteht, dienten die angegebenen Codebeispiele und Anordnungen der Codetabellen einschließlich der anzutreffenden maximalen Codelänge lediglich als Beispiele. Der wesentliche Fortschritt des aufgezeigten Verfahrens liegt in der Untersuchung des Eingabecodes mit mehreren aufeinanderfolgenden Fenstern, veränderlicher Länge.When describing the. Method of decoding a Input data set, which consists of a stream of dependent coded unprecedented code words of variable length, were used the code examples and code table arrangements provided including the maximum code length that may be encountered, only as examples. The main progress of the indicated The procedure lies in the examination of the input code with several consecutive windows, more changeable Length.
209836/1 1 U209836/1 1 U
Claims (10)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11927571A | 1971-02-26 | 1971-02-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE2208664A1 true DE2208664A1 (en) | 1972-08-31 |
Family
ID=22383502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19722208664 Pending DE2208664A1 (en) | 1971-02-26 | 1972-02-24 | Method for decoding a prefix-free compression code of variable length |
Country Status (3)
Country | Link |
---|---|
DE (1) | DE2208664A1 (en) |
GB (1) | GB1332631A (en) |
IT (1) | IT946993B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2490899A1 (en) * | 1980-09-22 | 1982-03-26 | Nippon Telegraph & Telephone | DECODING APPARATUS FOR CODES REPRESENTED BY A CODE TREE |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1228925A (en) * | 1983-02-25 | 1987-11-03 | Yoshikazu Yokomizo | Data decoding apparatus |
WO2013086380A1 (en) | 2011-12-08 | 2013-06-13 | Oracle International Corporation | Techniques for more efficient usage of memory - to - cpu bandwidth |
US10152500B2 (en) | 2013-03-14 | 2018-12-11 | Oracle International Corporation | Read mostly instances |
US10642837B2 (en) | 2013-03-15 | 2020-05-05 | Oracle International Corporation | Relocating derived cache during data rebalance to maintain application performance |
US9292564B2 (en) | 2013-09-21 | 2016-03-22 | Oracle International Corporation | Mirroring, in memory, data from disk to improve query performance |
US9430390B2 (en) | 2013-09-21 | 2016-08-30 | Oracle International Corporation | Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications |
US10303682B2 (en) | 2013-09-21 | 2019-05-28 | Oracle International Corporation | Automatic verification and triage of query results |
US9767178B2 (en) | 2013-10-30 | 2017-09-19 | Oracle International Corporation | Multi-instance redo apply |
US9697221B2 (en) | 2014-03-19 | 2017-07-04 | Oracle International Corporation | OZIP compression and decompression |
US10275184B2 (en) | 2014-07-22 | 2019-04-30 | Oracle International Corporation | Framework for volatile memory query execution in a multi node cluster |
US10067974B2 (en) | 2015-05-29 | 2018-09-04 | Oracle International Corporation | Loading and reloading an in-memory copy of a database object without blocking concurrent updates to the database object |
US10216781B2 (en) | 2015-05-29 | 2019-02-26 | Oracle International Corporation | Maintaining cross-node coherence of an in-memory database object in a multi-node database cluster |
US10025823B2 (en) | 2015-05-29 | 2018-07-17 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US10984043B2 (en) | 2015-10-02 | 2021-04-20 | Oracle International Corporation | Method for faceted visualization of a SPARQL query result set |
US10678788B2 (en) | 2015-10-22 | 2020-06-09 | Oracle International Corporation | Columnar caching in tiered storage |
US10747752B2 (en) | 2015-10-23 | 2020-08-18 | Oracle International Corporation | Space management for transactional consistency of in-memory objects on a standby database |
US11657037B2 (en) | 2015-10-23 | 2023-05-23 | Oracle International Corporation | Query execution against an in-memory standby database |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10102046B2 (en) | 2016-03-24 | 2018-10-16 | Oracle International Corporation | In-memory data analytic system that provides an integrated tracking mechanism for explicit memory resources |
US10572469B2 (en) | 2016-05-31 | 2020-02-25 | Oracle International Corporation | Versioning and non-disruptive servicing of in-memory units in a database |
US10698771B2 (en) | 2016-09-15 | 2020-06-30 | Oracle International Corporation | Zero-data-loss with asynchronous redo shipping to a standby database |
US10891291B2 (en) | 2016-10-31 | 2021-01-12 | Oracle International Corporation | Facilitating operations on pluggable databases using separate logical timestamp services |
US11475006B2 (en) | 2016-12-02 | 2022-10-18 | Oracle International Corporation | Query and change propagation scheduling for heterogeneous database systems |
US10691722B2 (en) | 2017-05-31 | 2020-06-23 | Oracle International Corporation | Consistent query execution for big data analytics in a hybrid database |
US11514055B2 (en) | 2019-09-13 | 2022-11-29 | Oracle International Corporation | Querying on hybrid formats and storages |
-
1972
- 1972-01-13 GB GB156172A patent/GB1332631A/en not_active Expired
- 1972-01-28 IT IT1989672A patent/IT946993B/en active
- 1972-02-24 DE DE19722208664 patent/DE2208664A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2490899A1 (en) * | 1980-09-22 | 1982-03-26 | Nippon Telegraph & Telephone | DECODING APPARATUS FOR CODES REPRESENTED BY A CODE TREE |
NL8104352A (en) * | 1980-09-22 | 1982-04-16 | Nippon Telegraph & Telephone | DECODER FOR CODES PROPOSED BY A CODE TREE. |
Also Published As
Publication number | Publication date |
---|---|
GB1332631A (en) | 1973-10-03 |
IT946993B (en) | 1973-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2208664A1 (en) | Method for decoding a prefix-free compression code of variable length | |
EP0230437B1 (en) | Process for compressing and expanding structurally associated multiple-data sequences, and arrangements for implementing the process | |
DE69532775T2 (en) | Data compression and decompression method and associated data compression and decompression device | |
DE3852341T2 (en) | Character processing system with spell check function. | |
DE602004010922T2 (en) | STORAGE AND STROMEFFICIENT MECHANISM FOR FAST TABLE HUNTING | |
DE2139731A1 (en) | Arrangement and procedure for code implementation with an associative memory | |
DE2264090C3 (en) | Data compression | |
DE2210044A1 (en) | Method for converting code words | |
DE2712575C2 (en) | Associative storage system in highly integrated semiconductor technology | |
DE2551239C3 (en) | Data processing system | |
DE3030255A1 (en) | METHOD FOR TRANSMITTING WORDS AND MESSAGE TRANSMISSION SYSTEM FOR ITS IMPLEMENTATION | |
DE2758829C2 (en) | Data processing system with several processors | |
DE3330845C2 (en) | ||
DE10196847B4 (en) | A method for generating Huffman code length information | |
DE60302203T2 (en) | Arrangement for compressing a data table | |
DE2939411A1 (en) | DATA PROCESSING SYSTEM WITH VIRTUAL STORAGE ADDRESSING | |
DE1449544A1 (en) | Data processing machine with overlapping retrievable storage unit | |
DE2900586C2 (en) | Arrangement for decoding code words of variable length | |
DE3137704C2 (en) | Device for decoding a tree-shaped code of variable length | |
DE2244163A1 (en) | PROCESS FOR COMPACTION OR EXTENSION OF DATA INFORMATION CHARACTERS IN A DATA PROCESSING SYSTEM | |
DE69133377T2 (en) | Method and device for compressing and decompressing data | |
DE69309465T2 (en) | Word / number and number / word illustration | |
DE3930889A1 (en) | METHOD FOR DETECTING N DIFFERENT WORD CHAINS IN A VOICE SIGNAL | |
DE3633227A1 (en) | Arrangement for conversion of a virtual address into a physical address for a working memory organised in pages in a data processing system | |
DE3407831C2 (en) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OHJ | Non-payment of the annual fee |