JPH07288475A - Device for managing a plurality of dictionaries in data compression based on associative memory - Google Patents

Device for managing a plurality of dictionaries in data compression based on associative memory

Info

Publication number
JPH07288475A
JPH07288475A JP5154439A JP15443993A JPH07288475A JP H07288475 A JPH07288475 A JP H07288475A JP 5154439 A JP5154439 A JP 5154439A JP 15443993 A JP15443993 A JP 15443993A JP H07288475 A JPH07288475 A JP H07288475A
Authority
JP
Japan
Prior art keywords
dictionary
data
character
compression
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP5154439A
Other languages
Japanese (ja)
Other versions
JP3171510B2 (en
Inventor
Abraham Lempel
アブラハム・レムペル
Gadiel Seroussi
ガディエル・セルーシ
Jeffrey P Tobin
ジェフリー・ピー・トビン
Carl B Lantz
カール・ビー・ランツ
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Priority to JP15443993A priority Critical patent/JP3171510B2/en
Publication of JPH07288475A publication Critical patent/JPH07288475A/en
Application granted granted Critical
Publication of JP3171510B2 publication Critical patent/JP3171510B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

PURPOSE: To suppress the loss of data compression, which is generated when the dictionary of data compression system is reset in a dictionary base, to a minimum by efficiently switching an active dictionary and a reserve dictionary. CONSTITUTION: A data compressor/decompressor circuit 50 enables data transfer between one of dictionaries and a data compression engine 52 during ordinary operation. Besides, the reserve dictionary directly receives data from the data compression engine 52 or from the active dictionary, and a partial data entry cluster can be prepared. While the circuit 50 is operated, a switch controller 76 selects a dictionary 1 or 2 as the active dictionary. When the dictionary 1 is selected, next, the compression engine starts the compression of data and the read/write of encoded data to a data entry field 94 in the dictionary 1. Based on this compression algorithm, a certain encoded data string is discriminated as a candidate to be written in the reserve dictionary 2.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】この発明は広義にはデータの圧縮
と圧縮解除の方法と装置に関し、より詳細には、圧縮情
報と圧縮解除情報を格納するための辞書を用いる損失の
ないデータ圧縮アルゴリズムの実施に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates generally to data compression and decompression methods and apparatus, and more particularly to lossless data compression algorithms using dictionaries for storing compression and decompression information. Concerning the implementation of.

【0002】[0002]

【従来の技術】圧縮法の主要なものにおいては、二進シ
ーケンスあるいは“コードワード”を用いて複数文字ス
トリングを符号化する。二進シーケンスあるいはコード
ワードは個々の文字の符号化には用いられない。各スト
リングは、“アルファベット”あるいは単一文字ストリ
ングからなる。このアルファベットは圧縮器の処理する
最小の固有の情報を表わす。したがって、その文字を表
わすのに8ビットを用いるアルゴリズムはそのアルファ
ベットに256の固有の文字を有する。圧縮は符号化法
で表現された複数文字ストリングがデータストリームの
あるファイルに見られる程度に有効である。人間の言語
の翻訳に用いられる二か国語の辞書との類比で、非圧縮
コードと圧縮コードの間のマッピングを行う装置は通常
“辞書”と呼ばれる。
BACKGROUND OF THE INVENTION In most compression methods, binary sequences or "codewords" are used to encode multiple character strings. Binary sequences or codewords are not used to encode individual characters. Each string consists of an "alphabet" or a single character string. This alphabet represents the smallest unique information processed by the compressor. Therefore, an algorithm that uses 8 bits to represent that character has 256 unique characters in the alphabet. The compression is so effective that a multi-character string represented by an encoding method can be seen in a file with a data stream. In analogy with the bilingual dictionaries used for translating human languages, the device that performs the mapping between uncompressed code and compressed code is commonly called a "dictionary".

【0003】一般に、辞書ベースの圧縮法の有効性は、
複数文字ストリング用の辞書のエントリの使用頻度によ
って決まる。固定の辞書を一つのファイル型に最適化す
ると、他のファイル型には最適となりにくい。たとえ
ば、新聞テキストファイルに見られるような文字の組み
合わせを多数有する辞書は、データベースファイル、ス
プレッドシートファイル、ビットマップされたグラフィ
ックスファイル、コンピュータ支援設計ファイルその他
を効率的に圧縮する可能性は低い。
In general, the effectiveness of dictionary-based compression methods is
Depends on the frequency of use of dictionary entries for multi-character strings. Optimizing a fixed dictionary for one file type is less likely to be optimal for other file types. For example, dictionaries that have many combinations of characters, such as those found in newspaper text files, are less likely to efficiently compress database files, spreadsheet files, bitmapped graphics files, computer aided design files, etc.

【0004】適応型圧縮法は周知であり、この方法では
入力データを圧縮しながら入力データの圧縮に用いられ
る辞書が展開される。圧縮されていない入力データ中に
存在しうる単一文字のそれぞれを表現するコードワード
がこの辞書に入れられる。そのファイルの中で複数文字
ストリングが現われると、辞書に追加のエントリが加え
られる。この追加の辞書エントリは、かかる複数文字ス
トリングがそれ以後に発生したときこれを符号化するの
に用いられる。たとえば、現在の入力パターンの整合は
現在辞書に存在するフレーズに対してのみ行われる。整
合が失敗する度に、新しいフレーズが辞書に加えられ
る。この新しいフレーズは整合されたフレーズを一つの
記号分だけ拡大することによって形成される(たとえ
ば、整合を“破る”入力記号)。圧縮はこのファイル中
で最も頻繁に発生する複数文字ストリングが辞書の展開
中に現われる範囲で行われる。
The adaptive compression method is well known. In this method, the dictionary used for compressing the input data is expanded while compressing the input data. Codewords are placed in this dictionary to represent each single character that may be present in the uncompressed input data. When a multi-character string appears in that file, an additional entry is added to the dictionary. This additional dictionary entry is used to encode such a multi-character string when it occurs subsequently. For example, the matching of the current input pattern is done only for the phrases currently in the dictionary. Each time a match fails, a new phrase is added to the dictionary. This new phrase is formed by expanding the matched phrase by one symbol (e.g., an input symbol that "breaks" the match). Compression is done to the extent that the most frequently occurring multi-character strings in this file appear during dictionary expansion.

【0005】圧縮解除においては、辞書は同様に構成さ
れる。したがって、圧縮されたファイル中にある文字ス
トリングのコードワードが現われるとき、辞書は対応す
る文字ストリングの再構成に必要な情報を有する。圧縮
情報と圧縮解除情報を格納するための辞書を用いる広く
使用されている圧縮アルゴリズムは、それぞれLZ1、
LZ2と呼ばれるレンペル(Lempel)とジブ(Z
iv)の第1および第2の方法である。これらの方法
は、イーストマン(Eastman)その他の米国特許
第4,464,650号に開示されており、これらのア
ルゴリズムに対する様々な改良がウェルチ(Welc
h)の米国特許第4,558,302号、ミラー(Mi
ller)その他の米国特許第4,814,746号に
開示されている。これらの参考資料には、辞書の使用に
ついてさらに詳しく説明されている。
In decompression, the dictionary is similarly constructed. Thus, when a codeword of a character string present in the compressed file appears, the dictionary has the information necessary to reconstruct the corresponding character string. Widely used compression algorithms that use dictionaries to store compression and decompression information are LZ1, respectively.
Lempel and Jib (Z) called LZ2
iv) first and second methods. These methods are disclosed in US Pat. No. 4,464,650 to Eastman et al., And various improvements to these algorithms have been made by Welc.
h) U.S. Pat. No. 4,558,302, Mirror (Mi
Ller) et al., U.S. Pat. No. 4,814,746. These references further describe the use of dictionaries.

【0006】実施にあたっては、圧縮/圧縮解除に使用
できるメモリの量は有限である。したがって、辞書のエ
ントリの数は有限であり、各エントリの符号化に用いら
れるコードワードの長さは限られている。典型的には、
この長さは12ビットから16ビットの間である。入力
データシーケンスが長い場合、辞書は最後には“満杯に
なってしまう”。このとき、いくつかの方法で対処する
ことができる。たとえば、辞書をその現在の状態に凍結
し、入力シーケンスの残りの部分に用いることができ
る。第2の方法では、辞書をリセットし、新しい辞書が
最初から作成される。第3の方法では、辞書を圧縮比が
下がるまで一時凍結し、その後リセットする。
In practice, the amount of memory available for compression / decompression is finite. Therefore, the number of entries in the dictionary is finite, and the length of the codeword used to encode each entry is limited. Typically,
This length is between 12 and 16 bits. If the input data sequence is long, the dictionary will eventually “fill”. At this time, it can be dealt with in several ways. For example, the dictionary can be frozen in its current state and used for the rest of the input sequence. In the second method, the dictionary is reset and a new dictionary is created from scratch. In the third method, the dictionary is temporarily frozen until the compression ratio drops, and then reset.

【0007】第1の方法には、基本圧縮アルゴリズムの
学習能力が失われるという欠点がある。入力データの統
計が変化するとき、辞書はかかる変化についていけず、
圧縮比の急速な低下が発生する。辞書リセット法は、ア
ルゴリズムの学習能力を維持するが、空の辞書に切り換
わったとき圧縮比の一時的な低下が発生する(たとえ
ば、それまでに蓄積されたすべてのソースの知識が失わ
れる)。
The first method has the disadvantage that the learning ability of the basic compression algorithm is lost. When the statistics of the input data change, the dictionary cannot keep up with such changes,
A rapid reduction in compression ratio occurs. The dictionary reset method preserves the learning ability of the algorithm, but causes a temporary loss of compression ratio when switching to an empty dictionary (eg, loses knowledge of all sources accumulated so far). .

【0008】必要な辞書のリセット回数を少なくするた
めの方法の一つに、辞書のメモリサイズを大きくするこ
とがある。しかし、メモリサイズを大きくすると、コス
トが上がり、また辞書のデータエントリの検索に要する
時間を増大することがある。逐次にアクセスすることの
できるメモリでデータを迅速に発見するハッシングアル
ゴリズムについて多くの研究がなされている。たとえ
ば、ウェルチ(Welch)の米国特許第4,558,
302号などである。
One of the methods for reducing the number of times the dictionary is reset is to increase the memory size of the dictionary. However, increasing the memory size increases the cost and may increase the time required to search the dictionary data entry. Much research has been done on hashing algorithms that quickly discover data in memory that can be accessed sequentially. For example, Welch, US Pat. No. 4,558,
No. 302, etc.

【0009】圧縮/圧縮解除性能に対するもう一つの障
害は、前に現われた文字ストリングを辞書で探索するの
に要する時間の量である。通常、ハッシングアルゴリズ
ムは前に格納された辞書エントリの探索と新しい文字ス
トリングに使用できる記憶場所の発見に用いられる。典
型的な構成には、ウェルチ(Welch)(LZW)の
米国特許第4,558,302号に開示するように各辞
書エントリに対して二つないし四つの記憶場所を有する
ランダムアクセスメモリ(RAM)が用いられる。
Another obstacle to compression / decompression performance is the amount of time it takes to search the dictionary for a previously appearing character string. Hashing algorithms are commonly used to search previously stored dictionary entries and to find storage locations available for new character strings. A typical configuration is a Random Access Memory (RAM) having two to four memory locations for each dictionary entry, as disclosed in US Pat. No. 4,558,302 to Welch (LZW). Is used.

【0010】ハッシングアルゴリズムはそれぞれの固有
の辞書エントリをデータワードの内容の簡単な算術関数
に基づくアドレスのRAMランダムアクセスメモリスペ
ースにマップする。かかるアルゴリズムでは、ワード内
の全ワードあるいはフィールドを用いてマッピングアド
レスを計算するため、二つ以上のデータワードがメモリ
中の同じ場所にマップされ、ハッシングの衝突が起こる
可能性がある。この場合、このデータについては代わり
の場所を見つけなければならない。必然的に、RAMが
いっぱいになると、第2の辞書エントリは前に用いられ
た場所に混入することになる。圧縮を続けるためにはか
かる状況を解決しなければならない。ハッシング回路、
特にハッシングの衝突は圧縮/圧縮解除システム論理を
かなり複雑にし、システムのスループットを低下させ
る。
The hashing algorithm maps each unique dictionary entry into a RAM random access memory space at an address based on a simple arithmetic function of the contents of a data word. Since such algorithms use all words or fields within a word to calculate the mapping address, two or more data words may be mapped to the same location in memory, resulting in hashing collisions. In this case, you have to find an alternative location for this data. Inevitably, when the RAM fills up, the second dictionary entry will mix in with the previously used location. This situation must be resolved in order to continue compression. Hashing circuit,
Hashing collisions in particular significantly complicate the compression / decompression system logic and reduce system throughput.

【0011】通常、圧縮されるデータに基づく辞書は、
考えられるすべてのデータエントリの小さな部分集合と
なる。したがって、ハッシングの衝突を減少させる方法
の一つは、辞書の記憶場所の数を増やすことである。し
かし、この方法ではシステムの複雑性とコストが増し、
メモリと圧縮/圧縮解除制御論理の統合ができなくな
る。さらに、メモリが大きくなることによって、ある文
字ストリングが前にメモリにロードされているかどうか
の判定に要する探索時間が増すことになる。
Usually, a dictionary based on compressed data is
It is a small subset of all possible data entries. Therefore, one way to reduce hashing collisions is to increase the number of dictionary locations. However, this approach increases system complexity and cost,
The memory and compression / decompression control logic cannot be integrated. In addition, the increased memory will increase the search time required to determine if a character string has been previously loaded into memory.

【0012】データの圧縮/圧縮解除に対するもう一つ
の障害は、データ文字ストリングの符号化と復号に要す
る時間量と回路の複雑性である。たとえば、データの圧
縮の際には、ある文字ストリングがそれ以前にメモリに
格納されたデータフレーズのどれにも一致しないことが
わかると、それは未使用のデータ記憶場所に格納されね
ばならない。格納された文字ストリングと前に辞書デー
タエントリに一致した文字ストリング内のサブフレーズ
を同定するコードワードを生成しなければならない。こ
のコードワードは以後のデータ圧縮動作中に追加の文字
と組み合わせることができるように格納しなければなら
ない。
Another obstacle to data compression / decompression is the amount of time and circuit complexity required to encode and decode data character strings. For example, when compressing data, if one finds that a character string does not match any of the data phrases previously stored in memory, it must be stored in an unused data storage location. A codeword must be generated that identifies the stored character string and the subphrase in the character string that previously matched the dictionary data entry. This codeword must be stored so that it can be combined with additional characters during subsequent data compression operations.

【0013】データの圧縮解除中には、圧縮されたデー
タコードワードは圧縮されていないデータ文字と、たと
えばヒューレット・パッカード・ジャーナル(Hewl
ett−Packard Journal)、1989
年6月号、27−31ページに説明するような圧縮され
ていないデータストリングの残りの部分へのリンクとい
った追加のコードワードを表わす場合がある。そこに説
明するHP−DC法では、コードワードを順次符号化
し、圧縮されたコードによって決定される辞書アドレス
位置にある次のバイト(K)と結び付いたコードワード
(OMEGA)を格納する。したがって、この辞書は実
際の圧縮解除されたデータストリングが生成される前に
何度か読まれねばならない。この圧縮および圧縮解除法
は反復式であるため、辞書のアクセスに用いられるクロ
ックサイクル以外の追加のクロックサイクルによって全
体の圧縮時間および圧縮解除時間が大幅に増大する。し
かし、この符号化、復号および辞書探索法は、各入力文
字の圧縮あるいは圧縮解除に二つ以上のクロックサイク
ルを要する。さらに、これらの符号化アルゴリズムおよ
び復号アルゴリズムは複雑な圧縮および圧縮解除ハード
ウエアを必要とする。したがって、辞書ベースのデータ
圧縮システムの性能の向上と辞書ベースのデータ圧縮/
圧縮解除システム中の符号化と復号の改良が必要とされ
ている。
During decompression of data, the compressed data codewords are converted to uncompressed data characters, such as the Hewlett-Packard Journal (Hewl).
ett-Packard Journal), 1989.
It may represent an additional codeword, such as a link to the rest of the uncompressed data string as described in the June issue, pages 27-31. The HP-DC method described therein sequentially encodes codewords and stores the codeword (OMEGA) associated with the next byte (K) at the dictionary address location determined by the compressed code. Therefore, this dictionary must be read several times before the actual decompressed data string is generated. Because this compression and decompression method is iterative, additional clock cycles other than the clock cycles used to access the dictionary significantly increase the overall compression and decompression times. However, this encoding, decoding and dictionary search method requires two or more clock cycles to compress or decompress each input character. Moreover, these encoding and decoding algorithms require complex compression and decompression hardware. Therefore, the performance improvement of the dictionary-based data compression system and the dictionary-based data compression /
There is a need for improved encoding and decoding in decompression systems.

【0014】[0014]

【発明が解決しようとする課題】したがって、この発明
の目的は辞書ベースのデータ圧縮システムの辞書がリセ
ットされているとき発生するデータ圧縮における損失を
最小限にすることである。
SUMMARY OF THE INVENTION It is therefore an object of the present invention to minimize the loss in data compression that occurs when the dictionary of a dictionary-based data compression system is reset.

【0015】この発明の第2の目的は、統計的特性の変
化する入力データシーケンスのデータ圧縮システムの適
応性を増すことである。
A second object of the invention is to increase the adaptability of a data compression system for input data sequences with varying statistical properties.

【0016】この発明の他の目的は、辞書ベースのデー
タ圧縮/圧縮解除システムにおける文字ストリングの符
号化と復号に要する時間を低減することである。
Another object of the present invention is to reduce the time required to encode and decode character strings in a dictionary-based data compression / decompression system.

【0017】この発明のまた別の目的は、前に現われた
文字ストリングのためのデータ圧縮/圧縮解除辞書の探
索を簡単にし、ハッシングの衝突を防止することであ
る。
Another object of the present invention is to simplify the search of the data compression / decompression dictionary for previously appearing character strings and prevent hashing collisions.

【0018】この発明のまた別の目的は、最小限のメモ
リ量で辞書ベースのデータ圧縮/圧縮解除システムのデ
ータ圧縮能力を最大限にすることである。
Yet another object of the present invention is to maximize the data compression capability of a dictionary-based data compression / decompression system with a minimum amount of memory.

【0019】この発明のさらに別の目的は、辞書ベース
のデータ圧縮/圧縮解除システムにおいて複数の辞書の
間での切り換えを効率的に行うことである。
Yet another object of the present invention is to efficiently switch between multiple dictionaries in a dictionary-based data compression / decompression system.

【0020】[0020]

【課題を解決するための手段】この発明の特徴の一つ
は、現行の辞書と待機辞書を同時に構築するデータ圧縮
/圧縮解除システムであることである。現行辞書は標準
のデータ圧縮エンジンにおける辞書と同じ目的をはたす
ものである。待機辞書は現行辞書のフレーズの部分集合
を有するように現行辞書と平行して構築される。この部
分集合は、ソースデータ中に発生するパターンを最もよ
く記述するように選択される。現行辞書がいっぱいにな
ると、これは待機辞書に置き換えられ、新しい現行辞書
の構築と圧縮への使用が続行する間に新しい待機辞書が
“最初から”構築される。したがって、この圧縮器は空
の辞書に切り換わることは決してなく、辞書のメモリサ
イズが限られているために発生するデータ圧縮の劣化が
低減される。
One of the features of the present invention is a data compression / decompression system for simultaneously constructing a current dictionary and a standby dictionary. Current dictionaries serve the same purpose as dictionaries in standard data compression engines. The standby dictionary is constructed in parallel with the current dictionary to have a subset of the phrases in the current dictionary. This subset is chosen to best describe the patterns that occur in the source data. When the current dictionary is full, it is replaced by the standby dictionary, and a new standby dictionary is built "from scratch" while continuing to build and use the new current dictionary. Therefore, the compressor will never switch to an empty dictionary, reducing the degradation of data compression that occurs due to the limited memory size of the dictionary.

【0021】現行辞書は初めに新しいデータエントリを
追加すべき十分な空スペースを有し、それによってソー
スデータに連続的に適応することが可能である。この機
能は統計量の変動するソースデータ圧縮の際に特に重要
である。待機辞書中のより少数のデータエントリへの切
り換えの際にいくぶんかの情報が失われるが、この辞書
を最大限の効率で再構築するための時間は依然として辞
書を完全にリセットする場合の時間より短い。したがっ
て、データ圧縮比に対する悪影響がより少ないかたちで
より小さい辞書メモリを用いることができる。
The current dictionary initially has enough empty space to add new data entries, so that it is possible to adapt continuously to the source data. This feature is especially important for source data compression with varying statistics. Some information is lost when switching to a smaller number of data entries in the standby dictionary, but the time to rebuild this dictionary with maximum efficiency is still better than the time to completely reset the dictionary. short. Therefore, a smaller dictionary memory can be used with less adverse effect on the data compression ratio.

【0022】待機辞書に入る現行辞書の部分集合の選択
の基準は、アプリケーションによって異なる場合があ
る。たとえば、符号化されたデータストリングはそれが
現行辞書のデータエントリに少なくとも一度は一致した
ことがある場合に複写される。また、待機辞書中のエン
トリはストリングの長さ、データエントリとの最も新し
い一致、あるいはある与えられたアプリケーションにお
ける圧縮を最大限にするエントリを同定する基準にした
がって選択することができる。
The criteria for selecting a subset of the current dictionary to enter the standby dictionary may vary from application to application. For example, an encoded data string is duplicated if it has matched a data entry in the current dictionary at least once. Also, the entries in the wait dictionary can be selected according to the length of the string, the most recent match with the data entry, or a criterion that identifies the entry that maximizes compression in a given application.

【0023】さらに、現行辞書から待機辞書への切り換
え(リセット)の基準は、データの種類あるいはアプリ
ケーションによって変更することができる。たとえば、
現行辞書は有効データエントリがいっぱいになったとき
リセットすることができる。あるいはまた、現行辞書は
カトー(Kato)その他の米国特許第4,847,6
19号に説明するように、それを圧縮に使用する際に所
定の性能しきい値を下回る場合にリセットすることがで
きる。
Further, the criteria for switching (resetting) from the current dictionary to the standby dictionary can be changed depending on the type of data or the application. For example,
The current dictionary can be reset when the valid data entries are full. Alternatively, the current dictionary is Kato et al., U.S. Pat. No. 4,847,6.
As described in No. 19, it can be reset if it falls below a certain performance threshold when used for compression.

【0024】待機辞書の第2のアプリケーションにおい
ては、主としてデータ特性が不変である状況で、この圧
縮器はデータに2回のパスを行う。第1のパスでは、圧
縮器は大きなデータサンプルを走査する。このサンプル
は現行辞書を何回もいっぱいにし、それによってそれに
対応する回数だけ待機辞書による現行辞書の置き換えを
発生させるような大きさである。辞書の切り換えが起こ
る度に、現行辞書は数回の反復の後にアルゴリズムがこ
のデータサンプルに強くカスタマイズされた辞書を構築
するまで“洗練”される。このカスタマイズされた辞書
は、次にこの圧縮エンジンが入力データを圧縮する第2
のパスの間に用いる唯一の辞書としてセットされる。こ
のカスタマイズされた辞書は、それによって同じデータ
に対する単一のダイナミックな辞書よりはるかに良好に
機能する。
In the second application of the standby dictionary, this compressor makes two passes through the data, primarily in situations where the data characteristics are unchanged. In the first pass, the compressor scans large data samples. This sample is sized to fill the current dictionary multiple times, thereby causing the standby dictionary to replace the current dictionary a corresponding number of times. Each time a dictionary switch occurs, the current dictionary is "refined" after a few iterations until the algorithm builds a strongly customized dictionary for this data sample. This customized dictionary is then used by the second compression engine to compress the input data.
Set as the only dictionary to use during the pass. This customized dictionary thereby works much better than a single dynamic dictionary for the same data.

【0025】この発明の第2の特徴は、圧縮/圧縮解除
システムの辞書の格納されたデータエントリのアドレス
値を用いて符号化回路および復号回路を簡略化する辞書
ベースの圧縮/圧縮解除システムアーキテクチャとその
方法であることである。このシステムは好適にはメモリ
へのアクセスを高速化し、外部圧縮/圧縮解除論理を簡
略化する特殊機能を提供するためのローカルフィードバ
ック回路を含む追加の論理回路を有する連想メモリ(C
AM)を用いている。このメモリ構造はハッシングある
いはハッシングの衝突を起こすことなく、クロックサイ
クルあたり1文字の一定の速度で損失のないデータの圧
縮あるいは圧縮解除を提供することのできる特有の機能
を有する。
A second feature of the present invention is a dictionary-based compression / decompression system architecture that simplifies encoding and decoding circuits using address values of stored data entries in the compression / decompression system dictionary. And that way. The system preferably has associative memory (C) with additional logic including local feedback circuitry to speed up access to the memory and provide special features to simplify external compression / decompression logic.
AM) is used. This memory structure has the unique ability to provide lossless data compression or decompression at a constant rate of one character per clock cycle without hashing or hashing collisions.

【0026】すなわち、このシステムは好適にはメモリ
に保有されたデータエントリのアドレス位置にしたがっ
て文字ストリングを符号化する連想メモリからなる。入
力データストリング中で前に発生したことのない入力文
字ストリングの組み合わせは新しいデータエントリとし
て辞書に格納される。CAM(連想メモリ)はそれぞれ
が固有の文字ストリングデータエントリを格納する“ワ
ード”に構成される。このメモリはそれまでに辞書に格
納されたすべてのワードについて“ワード”中の選択さ
れたビットを有する入力文字ストリングを用いて連想並
行探索を行う。一致があった場合、そのデータエントリ
に関係する突合せラインが起動される。次にすべての突
合せラインが文字ストリングを表わす単一のコードワー
ドに符号化される。このコードワードは次の入力文字と
組み合わせられ、再び前にメモリに格納されたデータエ
ントリと比較される。このようにして、文字ストリング
にメモリ中のそれらのアドレスにしたがったコードワー
ドが割り当てられる。探索が失敗すると、最後に一致し
た文字ストリングを表わすコードワード(OMEGA)
(たとえばそのアドレス)が出力され、突き合わせの失
敗の元となった文字(K)から始まる新しい文字ストリ
ングから再び探索が開始される。この圧縮されたデータ
文字(コードワード)は辞書のデータエントリへのポイ
ンタである。したがって、文字ストリングはこの圧縮さ
れたデータ文字を圧縮解除辞書へのアドレスとして用い
ることによって符号化される。たとえば、初めは外部の
圧縮文字がこの辞書へのアドレスとして用いられる。つ
ぎに、符号化されたアドレス位置のデータエントリが読
み出される。メモリからのデータエントリの出力がさら
に圧縮解除を必要とするものではない場合(たとえば、
メモリ出力がリンクされたリストの“ルート”である場
合)、このデータエントリが出力される。このデータエ
ントリが別のコードワード(たとえば、別の辞書アドレ
ス位置への符号化されたリンク)を含む場合、このコー
ドワードは次の辞書アドレスとしてメモリにフィードバ
ックされる。
That is, the system preferably comprises an associative memory which encodes a character string according to the address location of the data entry held in the memory. A combination of input character strings that has never occurred before in the input data string is stored in the dictionary as a new data entry. The CAM (Associative Memory) is organized into "words" that each store a unique character string data entry. This memory performs an associative parallel search with an input character string having selected bits in a "word" for every word previously stored in the dictionary. If there is a match, the match line associated with that data entry is activated. All matching lines are then encoded into a single codeword representing a character string. This codeword is combined with the next input character and again compared with the data entry previously stored in memory. In this way, character strings are assigned codewords according to their addresses in memory. If the search fails, a codeword (OMEGA) that represents the last matching character string.
The (e.g. its address) is output and the search begins again with a new character string starting with the character (K) that caused the match failure. This compressed data character (codeword) is a pointer to a data entry in the dictionary. Therefore, the character string is encoded by using this compressed data character as an address to the decompression dictionary. For example, initially an external compressed character is used as the address to this dictionary. Next, the data entry at the encoded address position is read. If the output of the data entry from memory does not require further decompression (for example,
If the memory output is the "root" of the linked list) then this data entry is output. If this data entry contains another codeword (eg, an encoded link to another dictionary address location), this codeword is fed back to memory as the next dictionary address.

【0027】内部アドレスジェネレータが圧縮と圧縮解
除の両方に用いられ、メモリのリセットと同時にリセッ
トする。メモリになんらかの書き込み(明示的な書き込
みあるいは突き合わせの失敗)を行うと、アドレスが次
のアドレスにインクリメントされる。インクリメントは
順次に行われる必要はなく、圧縮器アドレスジェネレー
タと圧縮解除器アドレスジェネレータの両方が同じ状態
になり同様にインクリメントし、その結果圧縮辞書と圧
縮解除辞書が同一となる限り、たとえば疑似ランダム的
であってもよい。この論理は、外部制御論理中のアドレ
スの生成/格納を不要とし、圧縮/圧縮解除性能を向上
させることができる(たとえば、クロックサイクルが少
なくなり、データの圧縮がより高速になる)。
An internal address generator is used for both compression and decompression and resets at the same time the memory is reset. Any write to memory (either an explicit write or a failed match) will cause the address to be incremented to the next address. The increment need not be sequential, as long as both the compressor address generator and the decompressor address generator are in the same state and increment in the same way, so that the compression and decompression dictionaries are identical, for example pseudo-random. May be This logic eliminates the need for address generation / storage in external control logic and can improve compression / decompression performance (eg, fewer clock cycles and faster data compression).

【0028】データの圧縮に要する時間をさらに短縮す
るために、特殊な更新回路で同じクロックサイクル中に
メモリの探索とデータの書き込みを行うことを可能にす
る。文字ストリングがメモリ内のデータエントリと比較
されるとき、探索が失敗した場合にはこのストリングは
新しいデータエントリとして格納しなければならない。
次の使用可能なアドレス位置はアドレスジェネレータか
らすでにわかっており、この文字ストリングはメモリデ
ータ入力にすでに存在している。したがって、制御論理
は、探索中に一致が発生しない場合この文字ストリング
をメモリに自動的に書き込むのに用いることができる。
したがって、メモリはメモリ探索クロックサイクル中に
自動的に更新される。探索動作中に一致が発見された場
合、この更新回路はこの文字ストリングが有効データと
してメモリにロードされることを防止する。
To further reduce the time required to compress the data, a special update circuit allows the memory to be searched and the data to be written during the same clock cycle. When a character string is compared with a data entry in memory, if the search fails, this string must be stored as a new data entry.
The next available address location is already known from the address generator and this character string already exists in the memory data input. Therefore, the control logic can be used to automatically write this character string to memory if no match occurs during the search.
Therefore, the memory is automatically updated during the memory search clock cycle. If a match is found during the search operation, this update circuit prevents this character string from being loaded into memory as valid data.

【0029】以上概括したシステムと方法は、簡単で安
価で汎用性のある高速データ圧縮/圧縮解除システムを
提供する。このシステムと方法は汎用コンピュータのソ
フトウエアあるいはカスタムあるいはセミカスタム集積
回路を用いたハードウエアに実施することができる。こ
のシステムと方法は、リンクされたリストのデータ構造
の格納/検索の実施に用いることができる。そして、さ
まざまな適応型の辞書ベースエンコーダに容易に適用す
ることができる。
The system and method summarized above provide a simple, inexpensive and versatile high speed data compression / decompression system. The system and method may be implemented in software on a general purpose computer or hardware using custom or semi-custom integrated circuits. The system and method can be used to perform storage / retrieval of linked list data structures. And, it can be easily applied to various adaptive dictionary-based encoders.

【0030】この発明の第3の特徴は待機辞書方式の最
小限メモリ/高圧縮能力とCAM(連想メモリ)回路の
高速の文字あたり1サイクル符号化/復号能力とを組み
合わせたことである。この回路はCAM回路の記憶場所
中の複数の辞書を用いる。このCAM回路は圧縮された
文字ストリングと圧縮されていない文字ストリングを受
け取り、それらを辞書の一つへのデータエントリとして
格納する。それぞれのデータ文字ストリングを表わすコ
ードワードが次にこの文字ストリングに一致する辞書デ
ータエントリのアドレスにしたがって生成される。
The third feature of the present invention is that the minimum memory / high compression capacity of the standby dictionary system is combined with the high-speed 1-cycle encoding / decoding per character of the CAM (associative memory) circuit. This circuit uses multiple dictionaries in the memory locations of the CAM circuit. The CAM circuit receives the compressed and uncompressed character strings and stores them as data entries into one of the dictionaries. A codeword representing each data character string is then generated according to the address of the dictionary data entry that matches this character string.

【0031】複数の辞書を支援するために、CAMのそ
れぞれの記憶場所は状態フィールドとデータフィールド
を含む。データフィールドはデータエントリを格納し、
状態フィールドはそのデータエントリにどの辞書が割り
当てられているかを示す。探索動作中、この回路は状態
フィールドとデータフィールドの両方のある特定のビッ
トをマスクすることができる。これによって、システム
はあるデータエントリにどの辞書が割り当てられている
かを判定し、ある特定の記憶場所が現在辞書に割り当て
られていないかどうかを判定することができる。
To support multiple dictionaries, each memory location in the CAM includes a status field and a data field. The data field stores the data entry,
The status field indicates which dictionary is assigned to that data entry. During a search operation, this circuit can mask certain bits in both the status and data fields. This allows the system to determine which dictionary is assigned to a data entry and whether a particular storage location is not currently assigned to the dictionary.

【0032】各データエントリへの辞書の割り当ては圧
縮/圧縮解除回路の状態を変化させることによって簡単
に切り換えることができる。回路の状態を変化させるこ
とによって、少なくとも一つの辞書がリセットされる。
これによって、その辞書に前に割り当てられた記憶場所
はどの辞書にも割り当てられていない空いた記憶場所と
なる。この空いた記憶場所には新しい文字ストリングを
格納することができる。かかる状態の変化は異なる事象
によってトリガーし、圧縮比と異なる種類のデータに対
するこのシステムの適応性を最大限にすることができ
る。たとえば、この圧縮/圧縮解除回路は辞書の一つが
いっぱいになったとき自動的に状態が変化する、あるい
は圧縮比が所定の性能レベル以下に落ちたとき状態が変
化する。単一クロックサイクル探索能力を提供するため
に、この圧縮/圧縮解除回路は現行辞書と平行して待機
辞書を構築し、複数の辞書を同時に探索する。この発明
の以上の目的、特徴および利点、またその他の目的、特
徴および利点は、図面を参照して行う以下の実施例の詳
細な説明からより明確になるであろう。
The assignment of the dictionary to each data entry can be easily switched by changing the state of the compression / decompression circuit. At least one dictionary is reset by changing the state of the circuit.
This causes the memory location previously assigned to that dictionary to be an empty memory location not assigned to any dictionary. A new character string can be stored in this empty storage location. Such state changes can be triggered by different events, maximizing the compression ratio and the adaptability of the system to different types of data. For example, the compression / decompression circuit changes state automatically when one of the dictionaries is full, or when the compression ratio drops below a predetermined performance level. To provide single clock cycle search capability, this compression / decompression circuit builds a standby dictionary in parallel with the current dictionary and searches multiple dictionaries simultaneously. The above objects, features and advantages of the present invention, as well as other objects, features and advantages, will be more apparent from the following detailed description of the embodiments with reference to the drawings.

【0033】[0033]

【実施例】【Example】

I.待機辞書を用いたデータ圧縮/圧縮解除システム 図1は現行辞書と待機辞書を有するデータ圧縮/圧縮解
除システムのデータフロー図である。図1に示す方法は
ブロック8における現行辞書(CD)と待機辞書(S
D)の初期設定から始まる。たとえば、圧縮されていな
い入力データ中に存在しうるそれぞれの単一文字を表わ
すコードワードが辞書に入れられる。あるいは初期の辞
書は空にしておくこともできる。データシーケンスから
の文字ストリングの符号化は任意の所望の符号化方式で
実施される。
I. Data compression / decompression system using standby dictionary FIG. 1 is a data flow diagram of a data compression / decompression system having a current dictionary and a standby dictionary. The method shown in FIG. 1 uses the current dictionary (CD) and the standby dictionary (S) in block 8.
It starts from the initial setting of D). For example, a codeword is entered into the dictionary to represent each single character that may be present in the uncompressed input data. Alternatively, the initial dictionary can be left empty. The encoding of the character string from the data sequence is performed in any desired encoding scheme.

【0034】ブロック10において、入力データが現行
辞書の前に符号化されたデータエントリと比較され、こ
の文字ストリングが辞書のデータエントリのいずれかに
一致するかどうかが判定される。ブロック12で一致の
なかった文字ストリングが現行辞書の新しい符号化され
たデータエントリとして格納される。一致をそれ以上拡
大することができないとき、一致した最長のストリング
のコードがブロック13で出力される。
In block 10, the input data is compared to the previously encoded data entry of the current dictionary to determine if this character string matches any of the dictionary's data entries. At block 12, the unmatched character string is stored as a new encoded data entry in the current dictionary. When the match cannot be expanded further, the code of the longest matched string is output at block 13.

【0035】ブロック14では現行辞書(CD)の前に
符号化されたデータエントリの部分集合が待機辞書(S
D)に格納される。ブロック14における部分集合選択
処理は、上述したように、入力データに応じて変更し
て、待機辞書中のある与えられた数のデータエントリを
用いて最も高い圧縮比を得るようにすることができる。
たとえば、待機辞書のデータエントリはある入力文字ス
トリングがその辞書内のあるデータエントリに一致する
回数に基づいて選択することができる。あるいは、待機
辞書部分集合は、符号化された文字ストリングによって
表わされる入力文字の数にしたがって選択することがで
きる。一般に、この段階では任意の方法を用いることが
できる。
In block 14, a subset of the data entries encoded before the current dictionary (CD) is stored in the standby dictionary (S
It is stored in D). The subset selection process in block 14 can be modified depending on the input data to obtain the highest compression ratio using a given number of data entries in the standby dictionary, as described above. .
For example, a data entry in the standby dictionary can be selected based on the number of times an input character string matches a data entry in the dictionary. Alternatively, the standby dictionary subset can be selected according to the number of input characters represented by the encoded character string. In general, any method can be used at this stage.

【0036】判断ブロック16では辞書リセットが必要
であるかどうかが判定される。たとえば、現行辞書が所
定数の符号化文字ストリングエントリに達したとき、あ
るいは圧縮比がある性能しきい値以下に落ちたときリセ
ットが必要である。現行辞書がリセットを必要としない
とき、圧縮エンジンは新しい文字ストリングを読み出
し、ブロック10に戻る。現行辞書がリセットされる
と、ブロック18で現行辞書を待機辞書中にエントリに
置き換え、新しい待機辞書を初期設定し、新しい文字ス
トリングを読み出し、その後ブロック10に戻る。
Decision block 16 determines if a dictionary reset is needed. For example, a reset is needed when the current dictionary reaches a predetermined number of encoded character string entries, or when the compression ratio falls below a certain performance threshold. When the current dictionary does not require a reset, the compression engine reads the new character string and returns to block 10. When the current dictionary is reset, block 18 replaces the current dictionary with entries in the standby dictionary, initializes a new standby dictionary, reads a new character string, and then returns to block 10.

【0037】図1の辞書ベースの圧縮/圧縮解除法はデ
ータの圧縮に用いる静的なカスタマイズされた現行辞書
の生成に用いることができる。たとえば、入力データシ
ーケンスのデータサンプルが選択される。現行辞書は次
に現行辞書を待機辞書に繰り返し置き換えることによっ
てカスタマイズされる。カスタマイズされた現行辞書は
読み出し専用機能にロックされ、圧縮エンジンによって
このデータシーケンスの圧縮あるいは圧縮解除に専用に
用いられる。
The dictionary-based compression / decompression method of FIG. 1 can be used to generate a static, customized current dictionary used to compress data. For example, a data sample of the input data sequence is selected. The current dictionary is then customized by repeatedly replacing the current dictionary with the standby dictionary. The customized current dictionary is locked to a read-only function and is used exclusively by the compression engine to compress or decompress this data sequence.

【0038】図2は現行辞書と待機辞書を用いるデータ
圧縮アルゴリズムの一例を示す詳細なデータフロー図で
ある。図2は入力データストリングが現行辞書中のエン
トリに一致するときデータストリングが待機辞書に複写
される方法を示す。この方法によれば、このデータスト
リングが入力中に少なくとも二度“見られた”ことが確
実になる。現行辞書と待機辞書は現行辞書がいっぱいに
なったとき(たとえば、所定数の有効データエントリに
達したとき)切り換えられる。上述したように、辞書切
り換えの基準と待機辞書データエントリ選択基準は具体
的なアプリケーション条件にしたがって簡単に実施する
ことができる。
FIG. 2 is a detailed data flow diagram showing an example of a data compression algorithm using the current dictionary and the standby dictionary. FIG. 2 illustrates how the data string is copied to the standby dictionary when the input data string matches an entry in the current dictionary. This method ensures that this data string is "seen" at least twice during input. The current and standby dictionaries are switched when the current dictionary is full (eg, when a predetermined number of valid data entries has been reached). As described above, the dictionary switching criteria and the standby dictionary data entry selection criteria can be easily implemented according to specific application conditions.

【0039】入力データストリングはブロック20で現
行辞書のデータエントリと比較される。判断ブロック2
2は入力データと現行辞書のエントリとの間に一致がな
い場合ブロック23とブロック24に分かれる。一致し
た最も長いデータストリングが次にブロック23で符号
化され、出力される。
The input data string is compared at block 20 with the data entry in the current dictionary. Decision block 2
2 is divided into block 23 and block 24 when there is no match between the input data and the entry of the current dictionary. The longest matched data string is then encoded in block 23 and output.

【0040】判断ブロック24では現行辞書がいっぱい
であるかどうかを判定する。現行辞書がいっぱいでなけ
れば、ブロック28でデータストリングを現行辞書中の
データエントリとして格納する。あるいは、ブロック2
2を除くいずれの場合にもフラグをセットすることがで
きる。現行辞書がいっぱいである場合、ブロック26で
現行辞書を待機辞書に切り換える。次に、データストリ
ングはこの新しい現行辞書に格納される。現行辞書がデ
ータエントリのより小さい部分集合に置き換わっている
(たとえば、待機辞書のデータエントリ)ため、新しい
データストリングを格納するスペースができている。ブ
ロック30で現行辞書のアドレスカウンタがインクリメ
ントされる。ブロック34で新しい入力文字が入力デー
タから読み出され、ブロック20の比較処理が繰り返さ
れる。
Decision block 24 determines if the current dictionary is full. If the current dictionary is not full, block 28 stores the data string as a data entry in the current dictionary. Alternatively, block 2
In any case except 2, the flag can be set. If the current dictionary is full, block 26 switches the current dictionary to the standby dictionary. The data string is then stored in this new current dictionary. The current dictionary has been replaced by a smaller subset of data entries (eg, the data entry of the standby dictionary), thus providing space to store the new data string. At block 30, the address counter of the current dictionary is incremented. At block 34, the new input character is read from the input data and the comparison process of block 20 is repeated.

【0041】判断ブロック22で入力データと現行辞書
中のあるエントリとの一致が判定されると、判断ブロッ
ク36でチェックが行われ、このデータストリングがそ
れ以前に待機辞書に格納されているかどうかが判定され
る。このデータストリングが前に待機辞書に複写されて
いない場合、現行辞書内の状態フィールドにフラグがセ
ットされる。あるいは、このフラグはブロック22を除
くいかなる場合にもセットすることができる。このフラ
グはデータストリングと一致した現行辞書データエント
リに結合されている。このフラグは圧縮エンジンに対し
このデータエントリが前に待機辞書に複写されたことが
あることを表示する。これによって、同じデータエント
リが待機辞書に複数回複写されるのを防止する。ブロッ
ク40はデータストリングの待機辞書への書き込みを行
い、ブロック42は待機辞書アドレスカウンタをインク
リメントする。このデータストリングは現行辞書のデー
タエントリと一致したため、ブロック44は次の入力文
字を現在のデータストリングに加え、ブロック20に戻
る。判断ブロック36がこのデータストリングが前に待
機辞書に格納されていると判断すると、この処理は直接
ブロック44に入り、上述したように続いていく。
When decision block 22 determines that the input data matches an entry in the current dictionary, a check is made at decision block 36 to determine if this data string was previously stored in the standby dictionary. To be judged. If this data string has not been previously copied to the standby dictionary, a flag is set in the status field in the current dictionary. Alternatively, this flag can be set at any time except block 22. This flag is bound to the current dictionary data entry that matched the data string. This flag indicates to the compression engine that this data entry has been previously copied to the standby dictionary. This prevents the same data entry from being copied multiple times into the standby dictionary. Block 40 writes the data string to the standby dictionary and block 42 increments the standby dictionary address counter. Since this data string matched a data entry in the current dictionary, block 44 adds the next input character to the current data string and returns to block 20. If decision block 36 determines that this data string was previously stored in the standby dictionary, the process directly enters block 44 and continues as described above.

【0042】図3はデータ圧縮/圧縮解除集積回路(I
C)50においてこの発明を実施した例を示し、これが
現在の好適な実施例である。データ圧縮器/圧縮解除器
(DCD)集積回路(IC)50はデータ圧縮器インタ
ーフェース回路54と組み合わせられたデータ圧縮/圧
縮解除エンジン52を含む。データ圧縮器/圧縮解除器
(DCD)集積回路(IC)50はランダムアクセスメ
モリ(RAM)88内に構成された辞書1(D1)とR
AM90内に構成された辞書2(D2)と組み合わせて
用いられる。ここに示す回路は単一の集積回路(IC)
中に、あるいは別々の集積回路(IC)50、88、9
0として実施するのが好適である。辞書1(D1)およ
び辞書2(D2)はRAMとして図示しているが、連想
メモリあるいは他の任意のメモリ構造中にも公的に実施
することができる。このRAMは従来型のものである。
辞書1(D1)および辞書2(D2)のそれぞれのRA
M辞書記憶場所は、データエントリフィールド(dat
a_entry)94および98と待機状態フィールド
(stdby_stat)92および96を含む。
FIG. 3 shows a data compression / decompression integrated circuit (I
C) An example of carrying out the invention in 50 is shown, which is the presently preferred embodiment. The data compressor / decompressor (DCD) integrated circuit (IC) 50 includes a data compression / decompression engine 52 in combination with a data compressor interface circuit 54. A data compressor / decompressor (DCD) integrated circuit (IC) 50 includes a dictionary 1 (D1) and R arranged in a random access memory (RAM) 88.
It is used in combination with the dictionary 2 (D2) configured in the AM 90. The circuit shown here is a single integrated circuit (IC).
Integrated circuits (ICs) 50, 88, 9 in or in separate
It is preferable to implement it as 0. Although dictionary 1 (D1) and dictionary 2 (D2) are shown as RAM, they can be implemented publicly in an associative memory or any other memory structure. This RAM is conventional.
RA of each of the dictionary 1 (D1) and the dictionary 2 (D2)
The M dictionary storage location is stored in the data entry field (dat
a_entry) 94 and 98 and wait state fields (stdby_stat) 92 and 96.

【0043】データエントリフィールドには入力データ
シーケンス中に発生する特有のデータストリングが格納
される。待機状態フィールドは現行辞書中のデータエン
トリが前に待機辞書に格納されているかどうかを示す待
機辞書状態フラグを含む。待機状態フィールドに有効デ
ータエントリを同定するdict validフィール
ドを含めることができる。データ圧縮システムにおける
複数ビットdict validフィールドの使用につい
ては1991年9月25日出願の「ディクショナリー・
リセット・パフォーマンス・エンハンスメント・フォー
・データ・コンプレッション・アプリケーション(DI
CTIONARY RESET PERFORMANC
E ENHANCEMENT FOR DATA CO
MPRESSION APPLICATION)」と題
する共通譲渡された米国特許出願第07/776,47
5号に説明されており、ここに参照している。
Input data in the data entry field
Contains the unique data string that occurs during the sequence
To be done. The wait state field is the data entry in the current dictionary.
A wait indicating whether the bird was previously stored in the wait dictionary
Contains the machine dictionary status flag. Valid data in the waiting status field
Dict identifying the data entry valid feel
Can be included. In data compression system
Multi-bit dict About using the valid field
“Dictionary,” filed on September 25, 1991
Reset Performance Enhancement For
・ Data compression application (DI
CTIONARY RESET PERFORMANCE
E ENHANCEMENT FOR DATA CO
MPRESSION APPLICATION) "
Commonly assigned US patent application Ser. No. 07 / 776,47
No. 5, which is incorporated herein by reference.

【0044】データ圧縮エンジン52は好適にはLZ2
あるいはLZ1圧縮アルゴリズムを実施するように設計
されているが、任意の適当な辞書ベースの圧縮方式を実
施するように設計することができる。また、必要であれ
ばこの圧縮エンジンは米国特許第4,847,619号
に説明するような辞書リセットを制御する自動的な手段
を内蔵するか、あるいはそれと連動させて使用すること
ができる。その他の点については従来と同じであるた
め、このデータ圧縮エンジンのアルゴリズムおよびアー
キテクチャについてはさらに説明する必要はない。
The data compression engine 52 is preferably LZ2.
Alternatively, it is designed to implement the LZ1 compression algorithm, but can be designed to implement any suitable dictionary-based compression scheme. Also, if desired, the compression engine may incorporate or be used in conjunction with automatic means for controlling dictionary reset as described in US Pat. No. 4,847,619. Otherwise, the data compression engine algorithm and architecture need not be described further, as it is conventional.

【0045】データ圧縮器インターフェース回路54は
二つの主サブ回路からなる。スイッチコントローラサブ
回路76はデータ圧縮エンジン52あるいはデータ圧縮
器/圧縮解除器集積回路(IC)に結合された他の回路
から出力される辞書リセット要求信号72とデータスト
リング一致信号70をモニターする。サブ回路76はど
のRAMが現行辞書および待機辞書として動作するかを
制御する。このサブ回路は現行辞書から待機状態(st
dby_stat)フィールドを読み出して現在の符号
化されたデータ信号が前に待機辞書に複写されたことが
あるかどうかを判定する。
The data compressor interface circuit 54 consists of two main sub-circuits. Switch controller subcircuit 76 monitors dictionary reset request signal 72 and data string match signal 70 output from data compression engine 52 or other circuitry coupled to the data compressor / decompressor integrated circuit (IC). Sub-circuit 76 controls which RAM acts as the current dictionary and the standby dictionary. This subcircuit is in the standby state (st
Read the dby_stat) field to determine if the current encoded data signal has been previously copied to the standby dictionary.

【0046】アドレスジェネレータ回路68は待機モー
ドで動作中の辞書のデータエントリ(data_ent
ry)フィールドの二進値を通して順番付を行う。この
サブ回路の代表的な実施態様は二進カウンタであるが、
他の形態のシーケンサを用いることもできる。このサブ
回路にはマルチプレクサ56および58とトランシーバ
84および86が結合されている。マルチプレクサ56
はデータ圧縮エンジン52とスイッチコントローラ回路
76からの読み出し/書き込み信号60および62の選
択を行う。マルチプレクサ58はデータ圧縮エンジン5
2とアドレスジェネレータ68からのアドレス信号64
および66の選択を行う。トランシーバ86はデータエ
ントリ(data_entry)フィールド94または
98のいずれかを選択してデータ圧縮エンジン52に接
続されたデータバス87への接続を行うバスコントロー
ラとして動作する。トランシーバ84は待機状態(st
dby_stat)フィールド92または96を選択し
てスイッチコントローラ76への接続を行う。これらの
マルチプレクサおよびトランシーバは制御信号78によ
って制御され、アドレスジェネレータ68は制御信号8
2によって制御される。これらの制御信号はいずれもス
イッチコントローラ回路76から来る。
The address generator circuit 68 uses the data entry (data_ent) of the dictionary operating in the standby mode.
ry) The ordering is done through the binary value of the field. A typical implementation of this subcircuit is a binary counter,
Other forms of sequencer can also be used. Multiplexers 56 and 58 and transceivers 84 and 86 are coupled to this subcircuit. Multiplexer 56
Selects the read / write signals 60 and 62 from the data compression engine 52 and the switch controller circuit 76. The multiplexer 58 is the data compression engine 5
2 and the address signal 64 from the address generator 68
And 66 are selected. The transceiver 86 operates as a bus controller that selects either the data entry (data_entry) field 94 or 98 to make a connection to the data bus 87 connected to the data compression engine 52. The transceiver 84 is in a standby state (st
Select the dby_stat) field 92 or 96 to connect to the switch controller 76. These multiplexers and transceivers are controlled by control signal 78 and address generator 68 controls signal 8
Controlled by two. Both of these control signals come from the switch controller circuit 76.

【0047】データ圧縮器/圧縮解除器(DCD)回路
50は通常の圧縮/圧縮解除動作中、辞書のうちの一つ
(現行辞書)とデータ圧縮エンジン52との間の従来と
同様のデータ転送を可能にする。また、このシステムは
待機辞書がデータ圧縮エンジン52から、あるいは現行
辞書から直接データを受け取ってこの発明によるデータ
エントリ部分集合を作成することを可能にする。
The data compressor / decompressor (DCD) circuit 50 transfers conventional data between one of the dictionaries (the current dictionary) and the data compression engine 52 during normal compression / decompression operations. To enable. The system also allows the standby dictionary to receive data from the data compression engine 52 or directly from the current dictionary to create a data entry subset according to the present invention.

【0048】回路50の動作中、スイッチコントローラ
76は現行辞書として辞書1(D1)か辞書2(D2)
を選択する。たとえば辞書1(D1)を選択する。圧縮
エンジンが次にデータの圧縮、辞書1(D1)のデータ
エントリ(data_entry)フィールド94への
符号化されたデータの読み出しと書き込みを開始する。
この圧縮アルゴリズムがある符号化されたデータストリ
ングを待機辞書辞書2(D2)に書き込むべき候補であ
ると判定する、たとえば、ある符号化されたデータスト
リングが現行辞書辞書1(D1)中のあるデータエント
リに一致すると、一致信号70が発生する。それによっ
て、スイッチコントローラ76は現行辞書からの待機状
態(stdby_stat)フィールド92をチェック
してこのデータエントリが前に待機辞書に複写されたこ
とがあるかどうかを判定する。複写されたことがなけれ
ば、このデータストリングは辞書2(D2)のdict
_entryフィールド98中のアドレスジェネレータ
68によって提供された場所に書き込まれる。さらに、
現行辞書の待機状態(stdby_stat)フィール
ド92はスイッチコントローラ76によってセットさ
れ、同じ符号化されたデータストリングが待機辞書に二
度複写されるのを防止する。データ圧縮エンジン52が
リセット信号72を発生すると、スイッチコントローラ
76は制御信号78の値を変化させる。この新しい制御
信号はマルチプレクサとトランシーバへの接続を、辞書
2(D2)が現行辞書として、辞書1(D1)が待機辞
書として動作するように変化させる。辞書2(D2)に
ロードされたデータエントリの部分集合は、圧縮エンジ
ン52の初期データエントリ集合として用いられる。し
たがって、図3に示すデータ圧縮エンジンがリセットさ
れるとき、新しい辞書のdict_entryフィール
ドは前に符号化された入力データの高圧縮比部分集合を
含む。
During operation of the circuit 50, the switch controller 76 uses the dictionary 1 (D1) or the dictionary 2 (D2) as the current dictionary.
Select. For example, the dictionary 1 (D1) is selected. The compression engine then begins compressing the data, reading and writing the encoded data into the data entry (data_entry) field 94 of dictionary 1 (D1).
This compression algorithm determines that some encoded data string is a candidate for writing to the standby dictionary dictionary 2 (D2), for example, some encoded data string is some data in the current dictionary dictionary 1 (D1). When the entry matches, the match signal 70 is generated. The switch controller 76 thereby checks the wait state (stdby_stat) field 92 from the current dictionary to determine if this data entry has been previously copied to the wait dictionary. If not copied, this data string is dict of dictionary 2 (D2).
Written in the location provided by the address generator 68 in the _entry field 98. further,
The standby state (stdby_stat) field 92 of the current dictionary is set by the switch controller 76 to prevent the same encoded data string from being duplicated in the standby dictionary. When the data compression engine 52 generates the reset signal 72, the switch controller 76 changes the value of the control signal 78. This new control signal changes the connection to the multiplexer and transceiver so that Dictionary 2 (D2) acts as the current dictionary and Dictionary 1 (D1) acts as the standby dictionary. The subset of data entries loaded into dictionary 2 (D2) is used as the initial data entry set for compression engine 52. Thus, when the data compression engine shown in FIG. 3 is reset, the dict_entry field of the new dictionary contains the high compression ratio subset of the previously encoded input data.

【0049】スイッチコントローラ76はデータ圧縮エ
ンジンが一致信号70とリセット信号72のある特定の
組み合わせを発生することによって停止することができ
る。これによって、データ圧縮エンジンは一つの辞書と
の間においてのみ符号化されたデータの読み出し/書き
込みを行うことができる。これは、上述したカスタマイ
ズされたデータ辞書の動作に用いられ、また単一辞書方
式とのコンパチビリティを得るためにも用いられる。上
述の方法は有効であることが実証されている。たとえ
ば、ユーザー操作マニュアルを含む550のファイル
は、標準のユニックス(UNIX)“compres
s”コマンド(LZ2の従来の実施態様)を用いて圧縮
された。その後、カスタマイズされた辞書が上述の現行
/待機辞書法を用いて構築され、ファイルはデータサン
プルから作成されたカスタマイズされた辞書を用いて圧
縮された。その結果をまとめると次のようになる。
The switch controller 76 can be stopped by the data compression engine generating a particular combination of the match signal 70 and the reset signal 72. This allows the data compression engine to read / write the encoded data with respect to only one dictionary. It is used for the operation of the customized data dictionary described above and also for compatibility with the single dictionary scheme. The method described above has proven effective. For example, the 550 file containing the user manual is a standard UNIX "compres"
Compressed using the s "command (conventional implementation of LZ2). The customized dictionary was then constructed using the current / standby dictionary method described above, and the file was created from the data sample. It was compressed using. The result is summarized as follows.

【0050】もとのファイルサイズ:6,602,30
0バイト ユニックス(UNIX)compress:2,78
1,686バイト カスタマイズされた辞書:2,025,742バイト 圧縮の向上:37%
Original file size: 6,602,30
0 byte Unix (UNIX) compress: 2,78
1,686 bytes Customized dictionary: 2,025,742 bytes Compression improvement: 37%

【0051】したがって、このカスタマイズされた辞書
は従来の圧縮法に比べてかなりの圧縮の向上を提供す
る。
Thus, this customized dictionary offers significant compression improvements over conventional compression methods.

【0052】この発明のこの側面はその基本的原理から
逸脱することなくその構成や細部に変更を加えることが
できる。たとえば、エントリが待機辞書にあるか否かを
示すフィールドを設けることによって現行辞書と待機辞
書の両方を同じRAMに実施することができる。リセッ
トが発生すると、すべての非待機辞書エントリはクリア
される。アドレス発生回路はより複雑である。それは、
リセット後に各エントリが連続する場所にないためであ
る。この方法は、次に説明するような連想メモリ(CA
M)を用いた実施態様に好適である。
This aspect of the invention may be modified in structure and detail without departing from its basic principles. For example, both the current dictionary and the standby dictionary can be implemented in the same RAM by providing a field that indicates whether the entry is in the standby dictionary. When a reset occurs, all non-waiting dictionary entries are cleared. The address generation circuit is more complicated. that is,
This is because each entry is not in a continuous position after reset. This method is based on the associative memory (CA
It is suitable for the embodiment using M).

【0053】II.損失のないデータ圧縮/圧縮解除辞
書格納のためのメモリ回路 図4はこの発明の第2の特徴にしたがったCAM(連想
メモリ)圧縮/圧縮解除システム用の回路136の全体
的構成を示すブロック図である。この回路136はデー
タ圧縮/圧縮解除(CD)エンジン142、未圧縮デー
タインターフェース138、圧縮データインターフェー
ス148、およびプロセッサインターフェース152を
有する。CDエンジン142はストリングテーブルメモ
リ144と制御論理146からなる。未圧縮データイン
ターフェース138は圧縮されていないデータ(RAW
DATA)をデータバス154上で転送し、圧縮データ
インターフェース148は圧縮されたデータ(COMP
DATA)をデータバス158上で転送する。インター
フェース138および148のための外部制御信号が制
御バス156および160を介して受け取られる。各イ
ンターフェースは先入れ先出しデータバッファ(FIF
O)140、150および別の従来のインターフェース
回路(図示せず)を含む。
II. Memory Circuit for Lossless Data Compression / Decompression Dictionary Storage FIG. 4 is a block diagram showing the overall configuration of a circuit 136 for a CAM (associative memory) compression / decompression system according to the second aspect of the invention. Is. The circuit 136 has a data compression / decompression (CD) engine 142, an uncompressed data interface 138, a compressed data interface 148, and a processor interface 152. The CD engine 142 comprises a string table memory 144 and control logic 146. The uncompressed data interface 138 stores uncompressed data (RAW
DATA) on the data bus 154, and the compressed data interface 148 transmits compressed data (COMP).
DATA) on the data bus 158. External control signals for interfaces 138 and 148 are received via control buses 156 and 160. Each interface has a first-in first-out data buffer (FIF
O) 140, 150 and another conventional interface circuit (not shown).

【0054】回路136は圧縮あるいは圧縮解除のモー
ドあるいは状態のいずれかで使用することができ、また
双方向通信を行うためのモード切り換えが可能である。
あるいは、回路136は図5のRAM置き換えブロック
182、184、192を有する簡単な専用圧縮解除回
路を有する専用の圧縮器として用いることができる。以
下の説明は回路136が圧縮と圧縮解除の両方に用いら
れることを前提としている。
The circuit 136 can be used in either a compression or decompression mode or state, and is mode switchable for bidirectional communication.
Alternatively, the circuit 136 could be used as a dedicated compressor with a simple dedicated decompression circuit having the RAM replacement blocks 182, 184, 192 of FIG. The following description assumes that circuit 136 is used for both compression and decompression.

【0055】圧縮モードでは、未圧縮データインターフ
ェース138は未圧縮データ文字をデータバス154か
ら受け取り、それらをデータバッファ140を介して圧
縮/圧縮解除エンジン142に供給する。データ圧縮/
圧縮解除(CD)エンジン142中のストリングテーブ
ルメモリ144と制御論理146はこれらの文字をコー
ドワードに圧縮し、それがデータバッファ150を介し
てデータバス158に出力される。圧縮解除モードで
は、圧縮データインターフェース148は圧縮データコ
ードワードをデータバス158から受け取り、それらを
データバッファ150を介してCDエンジン142に提
供する。ストリングテーブル144は制御論理146と
連動してこのデータコードワードを文字ストリングに圧
縮解除し、その結果をデータバッファ140を介してデ
ータバス154上に出力する。マイクロプロセッサ(図
示せず)がデータフローの方向と圧縮/圧縮解除モード
を設定するためのレジスタを制御し、またプロセッサイ
ンターフェース152を介して他のさまざまな機能を制
御する。
In the compressed mode, the uncompressed data interface 138 receives uncompressed data characters from the data bus 154 and supplies them to the compression / decompression engine 142 via the data buffer 140. Data compression /
The string table memory 144 and control logic 146 in the decompression (CD) engine 142 compresses these characters into codewords which are output to the data bus 158 via the data buffer 150. In the decompressed mode, the compressed data interface 148 receives compressed data codewords from the data bus 158 and provides them via the data buffer 150 to the CD engine 142. The string table 144 works in conjunction with the control logic 146 to decompress this data codeword into a character string and output the result on the data bus 154 via the data buffer 140. A microprocessor (not shown) controls the registers for setting the direction of data flow and the compression / decompression mode, as well as various other functions via the processor interface 152.

【0056】図5は図4のストリングテーブルメモリ1
44と制御論理146の詳細なブロック図である。この
ストリングテーブルメモリは圧縮/圧縮解除処理時間を
短縮する追加の内部論理を有するCAM(連想RAM)
188からなる。CAM 188は“ワード”(たとえ
ば3832×20ビット)に構成され、それによって各
ワードは別々の文字ストリングエントリを格納する。デ
ータはデータバス190(DATA_IN)上でメモリ
188に書き込まれる。データバス190はバス180
上で入力される外部文字ストリング(K)を受け取り、
マルチプレクサ192(MUX3)を介してデータバス
202上で符号化された文字ストリング(OMEGA)
を受け取る。バス180上の外部文字は圧縮されていな
い(RAWDATA)バス154(図4)上の未圧縮の
データストリームから来るものであり、コードワードは
エンコーダ194の出力から来る。データ入力選択論理
回路182は、マルチプレクサ192を介してデータバ
ス190(DATA_IN)のどのビットがバス180
上の外部文字ストリングとバス202上のコードワード
から来るかを制御する。データ入力選択論理回路182
は、制御論理146(図4)からの探索信号入力17
8、読み出し/書き込み信号入力164およびエンコー
ダ194からの一致信号入力168によって駆動され
る。
FIG. 5 shows the string table memory 1 of FIG.
4 is a detailed block diagram of 44 and control logic 146. FIG. This string table memory is a CAM (associative RAM) with additional internal logic to reduce compression / decompression processing time.
It consists of 188. The CAM 188 is organized into "words" (eg 3832 x 20 bits), whereby each word stores a separate character string entry. Data is written to the memory 188 on the data bus 190 (DATA_IN). The data bus 190 is the bus 180
Receives the external character string (K) entered above,
Character string (OMEGA) encoded on data bus 202 through multiplexer 192 (MUX3)
To receive. External characters on bus 180 come from the uncompressed data stream on uncompressed (RAWDATA) bus 154 (FIG. 4), and codewords come from the output of encoder 194. The data input selection logic circuit 182 determines which bit of the data bus 190 (DATA_IN) is on the bus 180 via the multiplexer 192.
Controls whether it comes from the external character string above and the codeword on bus 202. Data input selection logic circuit 182
Is the search signal input 17 from the control logic 146 (FIG. 4).
8, driven by the read / write signal input 164 and the match signal input 168 from the encoder 194.

【0057】CAM188は突合せライン206(たと
えば264から4095)を介して一組の一致信号を提
供する。一つの一致信号がCAM188中のそれぞれの
ワードに関係付けられている。バス190上の文字スト
リングがCAM188中のデータエントリの一つに一致
するとき、その記憶場所に関係付けられた一致信号が活
動状態になる。エンコーダ194はCAM188からの
すべての一致信号を符号化して、バス202上に提供さ
れるコードワードを生成する。このコードワードはCA
M188中の一致したデータエントリのアドレス位置に
等しい。エンコーダ194はまたCAM188中のいず
れかのデータエントリがデータバス190上の文字スト
リングと一致するとき活動状態とされる。
The CAM 188 provides a set of coincidence signals via the match line 206 (eg, 264 to 4095). A match signal is associated with each word in CAM 188. When a character string on bus 190 matches one of the data entries in CAM 188, the match signal associated with that location is activated. Encoder 194 encodes all match signals from CAM 188 to produce the codeword provided on bus 202. This codeword is CA
Equal to the address location of the matched data entry in M188. Encoder 194 is also activated when any data entry in CAM 188 matches a character string on data bus 190.

【0058】アドレス復号器184が外部アドレスバス
177上の外部圧縮文字、データバス186上のCAM
188から出力される内部文字ストリング、あるいはア
ドレスジェネレータ170からの内部アドレスのいずれ
かを選択的に受け取り、ワード選択ライン204(たと
えば264から4095)を介して連想アレーにアクセ
スする。バス177上の外部圧縮文字は圧縮されたデー
タ(COMPDATA)バス158(図4)上の圧縮デ
ータストリームから来る。内部アドレスジェネレータ1
70はエンコーダ194からの一致信号168、探索信
号178、読み出し/書き込み信号164、およびリセ
ット信号162によって制御される。読み出し/書き込
み信号およびリセット信号は、制御論理146(図4)
から来る。アドレスジェネレータは初期設定後(たとえ
ば264に)リセットされ、続いて辞書が構築されると
ともにインクリメントされる。
Address decoder 184 uses external compressed characters on external address bus 177, CAM on data bus 186.
Either the internal character string output from 188 or the internal address from address generator 170 is selectively received and the associative array is accessed via word select lines 204 (eg, 264 to 4095). Externally compressed characters on bus 177 come from the compressed data stream on compressed data (COMPDATA) bus 158 (FIG. 4). Internal address generator 1
70 is controlled by the match signal 168, the search signal 178, the read / write signal 164, and the reset signal 162 from the encoder 194. Read / write and reset signals are control logic 146 (FIG. 4).
come from. The address generator is reset (eg, to 264) after initialization, and then the dictionary is built and incremented.

【0059】アドレス復号器184に供給されるアドレ
スのソースは、マルチプレクサ176および176を介
して読み出し選択論理172および読み出し/書き込み
信号164によって制御される。読み出し選択論理17
2はリセット信号162とメモリ188からのデータエ
ントリ出力162の圧縮状態によって制御される。デー
タエントリ圧縮状態はデータエントリ文字の値によって
判定することができる。たとえば、256より大きい値
を符号化された文字ストリングに割り当てることがで
き、256より小さい値は単一データ文字で構成するこ
とができる。マルチプレクサ176(MUX1)はバス
177とバス186のいずれかからの入力を選択し、マ
ルチプレクサ174(MUX2)はマルチプレクサ(M
UX)176の出力とアドレスジェネレータ170から
の出力の間の選択を行う。復号器184はまた、データ
の探索とメモリの更新を同じメモリアクセスサイクル中
に行うことを可能にするつぎに説明の自動更新機能を有
する。
The source of the address supplied to address decoder 184 is controlled by read select logic 172 and read / write signal 164 via multiplexers 176 and 176. Read selection logic 17
2 is controlled by the reset signal 162 and the compressed state of the data entry output 162 from the memory 188. The data entry compression state can be determined by the value of the data entry character. For example, values greater than 256 can be assigned to encoded character strings and values less than 256 can consist of a single data character. The multiplexer 176 (MUX1) selects an input from either the bus 177 or the bus 186, and the multiplexer 174 (MUX2) selects the multiplexer (MUX1).
UX) 176 output and address generator 170 output. Decoder 184 also has an automatic update function, described below, that allows searching for data and updating memory to occur during the same memory access cycle.

【0060】図6は図5のアドレス復号器184の自動
更新機能の好適な実施態様の論理図である。マルチプレ
クサ174(MUX2)からアドレス復号器184に入
力される各アドレス(ADDRN[19:0])は二つ
のANDゲートに供給される。ANDゲート208およ
び214は単一アドレスラインを示す。またANDゲー
ト208には探索信号178(図5)と一致信号168
(図5)の反転した値(NOMATCH)が供給され
る。この探索信号もまた反転され、“修飾された”書き
込み信号とともにANDゲート214に供給される。O
Rゲート212はこれら二つのANDゲートの出力を受
け取り、ワード選択信号(WORDN)を生成する。マ
ルチプレクサあるいは他の組み合わせ論理によって等価
関数を提供することができる。
FIG. 6 is a logic diagram of the preferred embodiment of the automatic update function of the address decoder 184 of FIG. Each address (ADDRN [19: 0]) input from the multiplexer 174 (MUX2) to the address decoder 184 is supplied to two AND gates. AND gates 208 and 214 represent a single address line. Further, the AND gate 208 has a search signal 178 (FIG. 5) and a coincidence signal 168.
The inverted value (NOMATCH) of (FIG. 5) is supplied. This search signal is also inverted and provided to AND gate 214 with the "qualified" write signal. O
The R gate 212 receives the outputs of these two AND gates and generates a word selection signal (WORDN). Equivalent functions can be provided by multiplexers or other combinational logic.

【0061】この更新回路はデータ圧縮動作中にデータ
探索が行われる間に起動される。データ圧縮中の探索が
失敗した場合、その文字ストリングはメモリ中の次の使
用可能なアドレスに入れねばならない。データ探索の後
にメモリにデータワードを書き込むのに要する余分なク
ロックサイクルをなくすために、ゲート208は一致が
発生しない場合ハイになる。この文字ストリングはすで
にデータバス190上にあり、次の使用可能なアドレス
はアドレスジェネレータ170によってすでにセットさ
れているため、一致の表示が発生すると直ちに書き込み
を行うことができる。したがって、反転した一致信号
(NOMATCH)はゲート208を起動し、次の使用
可能なメモリ位置に結合されたワードライン(WORD
N)を起動する。
This update circuit is activated during the data search during the data compression operation. If the search during data compression fails, the character string must be placed at the next available address in memory. To eliminate the extra clock cycle required to write a data word to memory after a data search, gate 208 goes high when no match occurs. This character string is already on the data bus 190 and the next available address has already been set by the address generator 170 so that it can be written to as soon as a match indication occurs. Therefore, the inverted match signal (NOMATCH) activates the gate 208 and causes the word line (WORD) coupled to the next available memory location.
N) is started.

【0062】探索動作中に一致が発見されると、ワード
選択ラインは不能にされ、書き込み動作は発生しない。
修飾された書き込み信号は、たとえば外部マイクロプロ
セッサ書き込み動作中に、メモリに一致が発生しないと
きにもデータの書き込みを強制的に行うのに用いられ
る。この更新機能は真のバイトあたり1サイクル性能を
提供する。なぜなら、辞書の書き込みは“透明”であ
り、余分なメモリアクセスを必要としない。
If a match is found during the search operation, the word select line is disabled and the write operation does not occur.
The modified write signal is used, for example, during an external microprocessor write operation to force a write of data even when no match occurs in memory. This update function provides true 1 cycle per byte performance. Because the writing of the dictionary is "transparent" and does not require extra memory access.

【0063】また、図6の回路はメモリ中に“data
_valid”フィールドをセットするのに用いること
ができる。たとえば、図5のシステムはメモリ中の一致
のチェックに先立ってそれぞれの新しい文字ストリング
をメモリに複写することができる。一致が発生する場
合、ワードライン(WORDN)信号はこの新しく格納
されたデーたすとリングに関係づけられた“data_
valid”フィールドを起動するのに用いられる。
Further, the circuit of FIG. 6 has "data" in the memory.
The "_valid" field can be set. For example, the system of Figure 5 can copy each new character string into memory prior to checking for a match in memory. If a match occurs, the word The line (WORDN) signal is associated with this newly stored date and ring "data--
Used to activate the "valid" field.

【0064】データの圧縮 回路144の動作において、圧縮についてはマイクロプ
ロセッサ(図示せず)がシステムを圧縮のために初期設
定し、CAM188をリセットする。このマイクロプロ
セッサは制御論理146(図4)を介して未圧縮データ
インターフェース152から来る信号(探索信号17
8、読み出し/書き込み信号164、リセット信号16
2)を制御する。リセットラインはさまざまな初期設定
動作に使用することができる。たとえば、リセットライ
ンはCAM188に結合されて、各メモリ位置に関係す
る“data_valid”をリセットする。さらに、
リセットラインはアドレスジェネレータを文字ストリン
グ格納のための開始メモリ位置に初期設定する。
In the operation of data compression circuit 144, for compression, a microprocessor (not shown) initializes the system for compression and resets CAM 188. This microprocessor receives signals (search signal 17) coming from the uncompressed data interface 152 via control logic 146 (FIG. 4).
8, read / write signal 164, reset signal 16
2) is controlled. The reset line can be used for various initialization operations. For example, the reset line is coupled to the CAM 188 to reset the "data_valid" associated with each memory location. further,
The reset line initializes the address generator to the starting memory location for character string storage.

【0065】単一入力文字の初期設定にはいくつかの技
術を用いることができる。たとえば、単一入力文字は圧
縮されたデータストリームの一部としてアルゴリズム的
に符号化することができる。あるいは、それぞれか任意
の単一入力データ文字を表わす一組の符号化された値を
メモリにロードすることができる。
Several techniques can be used to initialize a single input character. For example, a single input character can be algorithmically encoded as part of a compressed data stream. Alternatively, a set of encoded values, each representing any single input data character, can be loaded into memory.

【0066】読み出し/書き込みライン164はマルチ
プレクサ174にアドレスジェネレータ174によって
提供されたアドレスをアドレス復号器184に接続する
ように命令する。未圧縮データインターフェース138
(図4)からの外部文字ストリングはバス190のバイ
トフィールド(DATA_IN[7:0])とコードワ
ードフィールド(DATA_IN[19:8])に供給
される。探索信号178が次に活動状態とされ、CAM
188がコードワード/バイトストリングをCAM18
8中の各場所と比較する。初めは一致は発生しない。な
ぜなら、CAM188にはそれ以前に何も書き込まれて
いないためである。したがって、バス190上のコード
ワード/バイトストリングがCAM188中の最初の使
用可能なアドレス位置(たとえば、アドレスジェネレー
タ170によって生成された初期設定されたアドレス)
に書き込まれる。次に、アドレスジェネレータ170が
インクリメントされ、バス180からの新しい入力文字
がメモリのデータ入力のバイトフィールドに読み込まれ
る。この処理が繰り返されて、一致しないコードワード
/バイトストリングのCAM188への書き込みが続け
られる。
Read / write line 164 directs multiplexer 174 to connect the address provided by address generator 174 to address decoder 184. Uncompressed data interface 138
The external character string from (FIG. 4) is provided to the byte field (DATA_IN [7: 0]) and codeword field (DATA_IN [19: 8]) of bus 190. The search signal 178 is then activated and the CAM
188 CAM18 codeword / byte string
Compare with each place in 8. Initially no match occurs. This is because nothing has been written in the CAM 188 before that. Therefore, the codeword / byte string on bus 190 is the first available address location in CAM 188 (eg, the initialized address generated by address generator 170).
Written in. The address generator 170 is then incremented and the new input character from bus 180 is read into the byte field of the data input of memory. This process is repeated to continue writing unmatched codeword / byte strings to CAM 188.

【0067】一致があると、入力データ選択論理182
がマルチプレクサ192にエンコーダ194から生成さ
れたコードワードをデータバス190のコードワードフ
ィールドに入れるように命令する(DATA_IN[1
9:8])。次に、バス180からの新しい外部文字が
データバス190のバイトフィールドに供給される。こ
れによってこのコードワードは前に一致した文字ストリ
ングを表わす。この文字ストリングに割り当てられたコ
ードワードは一致したデータエントリアドレスから直接
得られるため、入力文字の符号化に要する制御論理を大
幅に少なくすることができる。さらに、コードワードを
マルチプレクサ192(MUX3)にフィードバック
し、このコードワードを次の入力文字と組み合わせるこ
とによって、入力文字を各クロックサイクル毎に処理す
ることができる。
If there is a match, the input data selection logic 182
Instruct the multiplexer 192 to put the codeword generated from the encoder 194 into the codeword field of the data bus 190 (DATA_IN [1
9: 8]). The new external character from bus 180 is then provided to the byte field of data bus 190. This codeword thus represents the previously matched character string. Since the codeword assigned to this character string is obtained directly from the matching data entry address, the control logic required to encode the input character can be significantly reduced. Further, by feeding back the codeword to the multiplexer 192 (MUX3) and combining this codeword with the next input character, the input character can be processed every clock cycle.

【0068】この新しいコードワード/バイトストリン
グは次にCAM188内のデータエントリと比較され
る。この処理は一致が発見されなくなるまで繰り返され
る。このとき、圧縮器は最後の一致からのコードワード
を出力し、新しいコードワード/バイトストリングをC
AM188に書き込む。バイトフィールドに供給される
最後の入力文字(K)は、空白コードワードと対になっ
たバイトKのメモリを探索することによって更新された
辞書と比較され(“ルート”コードワードを含むように
初期設定された辞書の場合)、それによって新しいスト
リングを開始するためのルートが生成される。次に、バ
ス180からの新しい外部文字(K)がバイトフィール
ドに供給され、突合せ処理が繰り返されて新しいストリ
ング(LZWによる)が構築される。あるいは、最後の
文字(K)は(LZ2の場合のように)符号化された文
字ストリング(OMEGA)に続いて出力することがで
きる。あるいは、KのアドレスはOMEGAに続くKの
コードワードとして出力することができる。辞書がいっ
ぱいになると、アドレスジェネレータ170は圧縮シス
テムの他の部分に(図4)にメモリにこれ以上文字スト
リングを書き込むことができないことを示すテーブルフ
ル信号196を発する。追加のいかなる入力データもC
AM188に格納された現在のエントリにしたがって圧
縮される。
This new codeword / byte string is then compared to the data entry in CAM 188. This process is repeated until no match is found. At this time, the compressor outputs the codeword from the last match, and the new codeword / byte string is C
Write to AM188. The last input character (K) supplied to the byte field is compared to the dictionary updated by searching the memory of byte K paired with the blank codeword (initially to contain the "root" codeword. (For configured dictionaries), it creates a route to start a new string. The new external character (K) from bus 180 is then supplied to the byte field and the matching process is repeated to build a new string (by LZW). Alternatively, the last character (K) can be output following the encoded character string (OMEGA) (as in the case of LZ2). Alternatively, the K address can be output as the K codeword following the OMEGA. When the dictionary is full, the address generator 170 issues a table full signal 196 to the rest of the compression system (FIG. 4) indicating that no more character strings can be written to memory. Any additional input data is C
Compressed according to the current entry stored in AM 188.

【0069】データの圧縮解除 データの圧縮解除については、回路144において、C
AM188をリセットし、この回路を入力データの圧縮
用に初期設定することによってこの動作が開始される。
圧縮解除ではリンクされたリストの圧縮解除検討が行わ
れる。たとえば、圧縮データアドレスは反にメモリ中の
圧縮解除されたデータストリング(たとえば、リンクさ
れたリストの“ルート”コードワード)があるアドレス
をさす場合がある。しかし、このアドレスは“非ルー
ト”コードワード(たとえば、このコードワードは符号
化された文字ストリングをさらに圧縮解除するのに必要
な次のアドレスへのリンクである)を有する場合があ
る。上述したように、“ルート”コードワードと“非ル
ート”コードワードは、さまざまな方法で判定すること
ができる。たとえば、コードワードの値によって、ある
いはメモリ中の識別子ビットを用いて判定することがで
きる。
Decompression of Data Regarding the decompression of data, in the circuit 144, C
This operation is initiated by resetting the AM 188 and initializing this circuit for compression of input data.
Decompression considers the decompression of linked lists. For example, a compressed data address may, on the contrary, refer to an address where there is an uncompressed data string in memory (eg, the "root" codeword of a linked list). However, this address may have a "non-root" codeword (eg, this codeword is a link to the next address needed to further decompress the encoded character string). As mentioned above, "root" and "non-root" codewords can be determined in various ways. For example, it can be determined by the value of the codeword or by using the identifier bit in memory.

【0070】圧縮データインターフェース148(図
4)に圧縮データがあるとき、これは外部アドレスバス
177上の復号器184に書き込まれる。“非ルート”
コードワードを受け取った後、メモリが読み出され、
(有効な場所を仮定すると)バス186のバイトフィー
ルド(DATA_OUT[7:0])が制御論理146
(図4)内のLIFOスタックに押し出される。バス186
のコードワードフィールド(DATA_OUT[19:
8])は、非ルートコードワードである場合、マルチプ
レクサ(MUX1)およびマルチプレクサ(MUX2)
を会してアドレス復号器184にフィードバックされ、
別のメモリ読み出しが行われる。非ルートコードワード
のフィードバックの前に、メモリから読み出されたデー
タエントリの最終バイトがFIFO 140に入れられ
る。この処理はメモリから“ルート”コードワードが読
み出されたとき終了し、このとき新しいコードワードが
外部アドレスバス177から読み出される。
When the compressed data interface 148 (FIG. 4) has compressed data, it is written to the decoder 184 on the external address bus 177. “Non-root”
After receiving the codeword, the memory is read,
The byte field (DATA_OUT [7: 0]) of bus 186 (assuming a valid location) is the control logic 146.
It is extruded to the LIFO stack inside (Fig. 4). Bus 186
Codeword field (DATA_OUT [19:
8]) is a non-root codeword, multiplexer (MUX1) and multiplexer (MUX2).
To be fed back to the address decoder 184,
Another memory read is performed. Prior to the feedback of the non-root codeword, the last byte of the data entry read from memory is put into FIFO 140. This process ends when the "root" codeword is read from memory, at which time a new codeword is read from external address bus 177.

【0071】ルートコードワードが同定された後、最後
に符号化された文字出力が前の外部符号化文字と結び付
けられ、CAM188中の次の使用可能なアドレスに読
み込まれる。読み出し選択論理172が“ルート”コー
ドワードをチェックし、マルチプレクサ176に命令し
て、外部アドレスバス177あるいはデータバス(DA
TA_BUS)186をアドレス復号器184に接続さ
せる。また、読み出し選択論理172はコード化された
要素信号198を制御論理146に供給して、完全に圧
縮解除されたコードワードを示す。FIFO 140は
この圧縮解除された復号化文字をバス154にダンプす
る。
After the root codeword is identified, the last encoded character output is combined with the previous outer encoded character and read into the next available address in CAM 188. Read select logic 172 checks the "root" codeword and directs multiplexer 176 to read external address bus 177 or data bus (DA
TA_BUS) 186 to the address decoder 184. Read select logic 172 also provides encoded element signal 198 to control logic 146 to indicate a fully decompressed codeword. FIFO 140 dumps this decompressed decoded character onto bus 154.

【0072】図5のシステムは圧縮解除動作を簡略化す
る。圧縮解除ではリンクされたリストの検討が行われる
ため、組み込み論理は外部圧縮解除論理(図4)との追
加の対話を行うことなく、このメモリ出力データのアド
レス復号器圧縮解除論理へのフィードバックを提供す
る。したがって、各圧縮解除サイクルはより短い時間で
よく、圧縮解除論理が簡略化される。CAM188中の
有効ワードおよびコードワードの“確認”には多くの実
施態様がある。その方法の一つとして、コンパレータの
使用があり、またもう一つの方法としては各ワードに対
して追加のリセット可能なビットを用いる方法がある。
どの技術を用いるかはアプリケーション条件によって決
まる。一方向システム(たとえばCDROM)において
は、圧縮解除回路はリンクされたリストを検討するため
の上述したようなフィードバック回路を有する従来のR
AMを用いてさらに簡略化することができる。
The system of FIG. 5 simplifies the decompression operation. Since decompression considers the linked list, the embedded logic provides feedback of this memory output data to the address decoder decompression logic without additional interaction with the external decompression logic (FIG. 4). provide. Therefore, each decompression cycle may be of shorter duration, simplifying the decompression logic. There are many implementations for "validating" valid words and codewords in the CAM 188. One method is to use a comparator, and another method is to use an additional resettable bit for each word.
Which technology to use depends on the application requirements. In a one-way system (eg CDROM), the decompression circuit has a conventional R with a feedback circuit as described above for considering the linked list.
Further simplification is possible using AM.

【0073】図7は、この発明の上記の特徴にしたがっ
たシステムにおけるデータ圧縮/圧縮解除あるいはリン
クされたリストの格納/検索の一般的な方法を示すデー
タフロー図である。次に説明する方法は、辞書がコード
ワードに埋め込まれ、したがって圧縮されたデータとと
もに別途転送する必要のないような適応的なものであ
る。その他の、たとえば辞書が圧縮されたデータととも
に転送される方法もこのシステムを用いて実施すること
ができる。
FIG. 7 is a dataflow diagram illustrating a general method of data compression / decompression or linked list storage / retrieval in a system in accordance with the above-described features of the present invention. The method described below is adaptive such that the dictionary is embedded in the codeword and therefore does not need to be transferred separately with the compressed data. Other methods, such as a dictionary being transferred with compressed data, can also be implemented with this system.

【0074】波線ブロック232はこのシステムの圧縮
処理であり、波線ブロック234は圧縮解除処理であ
る。入力224の未圧縮のデータ(K)はブロック22
8から出力される符号化された文字ストリング(OME
GA)とともに判断ブロック226に供給される。上述
したように、符号化された文字ストリング(OMEG
A)はある文字ストリングを符号化するデータエントリ
のアドレスを表わす。符号化された文字ストリング(O
MEGA)と未圧縮のデータ(K)は結合され、判断ブ
ロック226において辞書中のエントリと比較される。
OMEGA−K入力がメモリ中のあるエントリと一致す
るとき、ブロック228でこの入力を一致したデータエ
ントリのアドレスで符号化する。この符号化された値
(新しいOMEGA)はフィードバックされ、次の外部
文字Kと結合され、判断ブロック226に入力される。
この処理はOMEGA−Kストリングがメモリ中のいか
なるエントリにも一致しなくなるまで繰り返される。次
に、ブロック230がストリングテーブルメモリをこの
OMEGA−Kストリングで更新し、OMEGAを出力
し、文字Kを符号化ブロック228に供給する。Kはブ
ロック228で符号化され、判断ブロック226にフィ
ードバックされる前につぎの外部データ文字Kと結合さ
れる。
The broken line block 232 is the compression process of this system, and the broken line block 234 is the decompression process. The uncompressed data (K) at input 224 is block 22
Coded character string (OME
GA) to decision block 226. As described above, the encoded character string (OMEG
A) represents the address of a data entry that encodes a character string. Encoded character string (O
MEGA) and the uncompressed data (K) are combined and compared at decision block 226 with the entries in the dictionary.
When the OMEGA-K input matches an entry in memory, block 228 encodes this input with the address of the matched data entry. This encoded value (new OMEGA) is fed back, combined with the next external character K and input to decision block 226.
This process is repeated until the OMEGA-K string no longer matches any entry in memory. Block 230 then updates the string table memory with this OMEGA-K string, outputs OMEGA, and supplies the letter K to encoding block 228. K is encoded in block 228 and combined with the next external data character K before being fed back to decision block 226.

【0075】この符号化されたデータOMEGAは圧縮
解除を行うためにブロック236に送られる。ある符号
化された入力文字(OMEGA(i))がストリングテ
ーブルメモリにアクセスするためのアドレスとして用い
られる。判断ブロック238でアドレスOMEGA
(i)のデータエントリがルート文字であるかどうかが
判定される。ルート文字である場合、メモリから出力さ
れるデータエントリのなかにはもう符号化された文字は
ない(たとえば、OMEGA(j)は存在しない)。K
のメモリデータエントリが次にライン246上に圧縮解
除された出力文字として出力される。判断ブロック23
8はブロック240にジャンプし、そこで前の符号化さ
れたデータ文字(OMEGA(i−1))がKと結合さ
れ、次の使用可能なアドレス位置に書き込まれる。次
に、ブロック242がブロック236に入力ストリーム
中の次の符号化された文字(OMEGA(i+1))を
メモリから読み出される次のデータエントリのアドレス
位置として用いるように命令する。
This encoded data OMEGA is sent to block 236 for decompression. An encoded input character (OMEGA (i)) is used as an address to access the string table memory. Address OMEGA in decision block 238
It is determined whether the data entry of (i) is a root character. If it is a root character, there are no more encoded characters in the data entry output from memory (eg, OMEGA (j) no longer exists). K
Of the memory data entry is then output on line 246 as the decompressed output character. Decision block 23
8 jumps to block 240, where the previous encoded data character (OMEGA (i-1)) is combined with K and written to the next available address location. Next, block 242 commands block 236 to use the next encoded character (OMEGA (i + 1)) in the input stream as the address location of the next data entry read from memory.

【0076】ストリングテーブルメモリからの出力がル
ートでない場合(たとえば、この出力が符号化された文
字OMEGA(j)と復号された文字Kからなる場
合)、Kはライン246上に出力され、判断ブロック2
38はブロック244にジャンプする。ブロック244
はこの符号化された文字OMEGA(j)をメモリから
出力される次のデータエントリのアドレスとして用い
る。記憶場所OMEGA(j)のデータエントリが次に
上述したように処理される。この処理はすべての符号化
された入力文字が圧縮解除されるまで繰り返される。
If the output from the string table memory is not root (eg, if this output consists of the encoded character OMEGA (j) and the decoded character K), then K is output on line 246 and the decision block Two
38 jumps to block 244. Block 244
Uses this encoded character OMEGA (j) as the address of the next data entry output from the memory. The data entry in storage location OMEGA (j) is then processed as described above. This process is repeated until all encoded input characters have been decompressed.

【0077】図8は、図7の波線ブロック232の詳細
なデータフロー図である。このデータ圧縮解除処理は、
ブロック248で開始信号あるいはリセット信号が発生
したとき開始される。(次に説明する)メモリ回路はブ
ロック250で初期設定され、たとえば圧縮モードある
いは圧縮解除モードで動作し、辞書をリセットする。い
かなる辞書有効ビットも好適には並行して初期設定され
ねばならない。辞書は単一文字コードワードあるいはウ
ェルチ(Welch)の米国特許第4,558,302
号に開示するLZWやエントリを単一文字、あるいは
“ルート”コードワードとして同定するための空白コー
ドワードと対になったECMA−151規格に開示する
DCLZ等の選択された符号化アルゴリズムにしたがっ
て外部生成される一組のコードワードを用いて初期設定
することができる。あるいは、一組のコードワードをあ
らかじめ格納する代わりに、それらをたとえば共通譲渡
された米国特許第5,142,282号「データ・コン
プレッション・ディクショナリー・アクセス・ミニマイ
ゼイション(Data Compression Di
ctionary Access Minimizat
ion)」に開示するように、突合せが失敗する度に実
時間で生成することもできる。空辞書を含むその他の初
期設定法を用いることもできる。
FIG. 8 is a detailed data flow diagram of the dashed line block 232 of FIG. This data decompression process
It is started when a start signal or a reset signal is generated in block 248. The memory circuit (discussed next) is initialized at block 250 and operates, for example, in compressed or decompressed mode to reset the dictionary. Any dictionary valid bits should preferably be initialized in parallel. The dictionary is a single letter codeword or Welch U.S. Pat. No. 4,558,302.
Externally generated according to a selected encoding algorithm such as DCLZ disclosed in the ECMA-151 standard paired with a blank codeword for identifying the LZW or entry disclosed as a single character or a "root" codeword. Can be initialized with a set of codewords. Alternatively, instead of pre-storing a set of codewords, they may be shared, for example, in commonly assigned US Pat. No. 5,142,282, "Data Compression Dictionary Access Minimization (Data Compression Di
motionary Access Minimizat
Ion) ”, it can also be generated in real time each time a match fails. Other initialization methods can be used, including empty dictionaries.

【0078】ある入力データストリーム中の最初の文字
は、ブロック252で読み出され、OMEGAフィール
ドに直接格納されるか、あるいは符号化され(たとえ
ば、CODE(CHAR))た後にOMEGAフィール
ドに格納される。次に、入力データストリームの次の入
力文字(K)がブロック256で読み出される。ブロッ
ク258はOMEGAとKを文字ストリングとして組み
合わせ(すなわちOMEGAとKを結合する)、辞書を
探索してこのOMEGA−Kストリングと一致するデー
タエントリを探す。辞書にはまだ何のデータストリング
も格納されていないため、判断ブロック260は一致が
ないことを示す。OMEGA−Kストリングは現在表現
されていないため、判断ブロック266が使用可能な格
納スペースがあると判定した場合にメモリに格納され
る。メモリがいっぱいでない場合、ブロック268の動
作は自動的にOMEGA−Kストリングを次の使用可能
なメモリ格納場所(ADDR(N))にロードする。次
に、クロック270がアドレスカウンタをインクリメン
トして、メモリ中の次の使用可能な格納場所(ADDR
(N+1))を同定する。最初の入力文字の符号化され
た値OMEGA(アドレス)は、もし使用可能であれば
ブロック272においてこの符号化されたデータストリ
ングの最初の文字として出力される。
The first character in an input data stream is read at block 252 and either stored directly in the OMEGA field or encoded (eg, CODE (CHAR)) and then stored in the OMEGA field. . Next, the next input character (K) of the input data stream is read at block 256. Block 258 combines OMEGA and K as a character string (ie, combines OMEGA and K) and searches the dictionary for a data entry that matches this OMEGA-K string. Decision block 260 indicates that there is no match because no data string has been stored in the dictionary yet. The OMEGA-K string is not currently represented and is stored in memory if decision block 266 determines that there is storage space available. If the memory is not full, the operation of block 268 automatically loads the OMEGA-K string into the next available memory storage location (ADDR (N)). Clock 270 then increments the address counter to the next available storage location (ADDR) in memory.
(N + 1)) is identified. The encoded value OMEGA (address) of the first input character is output as the first character of this encoded data string at block 272, if available.

【0079】メモリがいっぱいのとき、この圧縮システ
ムは簡単にこのシステムにそれ以上文字ストリングを書
き込まないようにすることができる。たとえば、判断ブ
ロック266がメモリがいっぱいであると判定したと
き、ブロック268の文字ストリングをロードするステ
ップとブロック270のアドレスカウンタをインクリメ
ントするステップはスキップされ、処理は次に説明する
ブロック272の符号化および出力処理にジャンプす
る。
When the memory is full, the compression system can simply prevent writing further character strings to the system. For example, when decision block 266 determines that the memory is full, the steps of loading the character string in block 268 and incrementing the address counter in block 270 are skipped, and the process is encoded in block 272 described below. And jump to output processing.

【0080】OMEGAが出力された後、ブロック27
4のステップは第1の入力文字(OMEGA)を第2の
入力文字(K)あるいはコード(K)に置き換える。入
力データストリームからの次の入力文字が読み出され
(K)、それによって次のOMEGA−Kストリングが
提供される。次に、この処理はブロック258にループ
し、ブロック258ではメモリがこの新しいOMEGA
−Kストリングを用いて探索される。
After OMEGA is output, block 27
The step 4 replaces the first input character (OMEGA) with the second input character (K) or code (K). The next input character from the input data stream is read (K), thereby providing the next OMEGA-K string. The process then loops to block 258 where the memory is allocated to this new OMEGA.
-Search using K string.

【0081】判断ブロック260で一致が示されると、
この処理はブロック164にジャンプし、そこでOME
GAフィールドが一致アドレスに等しいOMEGA−K
ストリングを表わす符号化された値に置き換えられる。
データストリームからの次の入力文字がKフィールドに
複写される。OMEGAフィールドとKフィールドが組
み合わせられ、三つの入力文字を表わす新しいOMEG
A−Kストリングが形成される。処理はここでブロック
258に戻り、ブロック258で辞書データエントリが
この新しい文字ストリングと比較される。前の文字スト
リングがメモリ中のあるデータエントリに位置する限
り、さらに入力文字が文字ストリングに加えられる。新
しい文字ストリングがデータエントリに一致しないと
き、判断ブロック260はブロック266にジャンプ
し、ブロック266で上述したようなブロック266、
268および270のメモリ更新手順が実行される。ブ
ロック272は値OMEGA(たとえば、最後の入力文
字ストリングとデータエントリの一致からの符号化され
た文字ストリング)を出力する。ブロック274は文字
ストリングの最後の文字(たとえば、、この文字ストリ
ングがストリングテーブル中の以下なるデータエントリ
にも一致しなくなった原因となった文字)を取り、それ
をOMEGAフィールドに複写する。次に、ブロック2
74で入力データストリームからの次の入力文字をKフ
ィールドに複写し、処理はブロック258にループす
る。この文字ストリングはこれによって圧縮される。こ
れはこの圧縮処理からのOMEGA出力の単一の符号化
された値は、複数の入力文字を表わすためである。
If a decision block 260 indicates a match,
The process jumps to block 164, where OME
OMEGA-K with GA field equal to match address
Replaced with an encoded value that represents the string.
The next input character from the data stream is copied into the K field. A new OMEG that combines the OMEGA and K fields to represent three input characters
An AK string is formed. Processing then returns to block 258 where the dictionary data entry is compared to this new character string. More input characters are added to the character string as long as the previous character string is located at some data entry in memory. If the new character string does not match the data entry, decision block 260 jumps to block 266, where block 266 as described above in block 266,
The 268 and 270 memory update procedure is performed. Block 272 outputs the value OMEGA (eg, the encoded character string from the last input character string and the data entry match). Block 274 takes the last character of the character string (eg, the character that caused this character string to no longer match the following data entry in the string table) and copies it to the OMEGA field. Next, block 2
At 74, copy the next input character from the input data stream into the K field and the process loops to block 258. This character string is compressed by this. This is because the single encoded value of the OMEGA output from this compression process represents multiple input characters.

【0082】図9は図7の圧縮解除回路246の詳細な
フロー図である。ブロック276は圧縮解除を行うため
にストリングテーブルメモリを初期設定する。ブロック
278は第1の符号化されたワード(OLDWORD)
を得る。この入力読み出しステップあるいはそれに続く
任意の入力読み出しステップ中にそれ以上データがなく
なると、この処理を出る。第1の符号化されたワードは
ブロック280でアルゴリズム的に、あるいはストリン
グテーブルメモリ中のあらかじめロードされたエントリ
を読み出すことによって復号される。この第1の符号化
されたワードはルート文字であり、したがって復号さ
れ、出力される。
FIG. 9 is a detailed flow chart of the decompression circuit 246 of FIG. Block 276 initializes the string table memory to perform decompression. Block 278 is the first encoded word (OLDWORD)
To get The process exits when there is no more data during this input read step or any subsequent input read step. The first encoded word is decoded at block 280 algorithmically or by reading a preloaded entry in the string table memory. This first encoded word is the root character and is therefore decoded and output.

【0083】ブロック282は次の符号化されたワード
(INCODE)を得て、ブロック284はINCOD
Eをストリングテーブルによって出力されるデータエン
トリのアドレスとして用いる。初めに、一実施例におい
て、ストリングテーブルは単一文字バイトのみからな
り、したがってブロック284はバイトKを出力する。
次に、バイトKはブロック286で出力される。後のサ
イクルにおいて、ブロック284は次に説明するように
OMEGA−Kを返す。
Block 282 gets the next encoded word (INCODE) and block 284 INCODE
Use E as the address of the data entry output by the string table. First, in one embodiment, the string table consists of only single character bytes, so block 284 outputs byte K.
Byte K is then output at block 286. In a later cycle, block 284 returns OMEGA-K as described next.

【0084】判断ブロック288ではこのバイトがスト
リングの終り(たとえばルート文字)であるかどうかが
判定され、そうであればブロック292にジャンプす
る。ブロック292はストリングテーブル中の次の使用
可能なアドレスに新しいデータエントリを構築する。こ
れは第1の符号化された入力ワード(OLDCODE)
と最後のバイト出力(K)の結合から構成される。ブロ
ック294が未使用のアドレス位置を指示し、ブロック
296が第1の符号化されたワード(OLDWORD)
を最後の符号化された入力ワード(INCODE)に置
き換え、ブロック282に戻る。
Decision block 288 determines if this byte is the end of the string (eg, the root character), and if so, jumps to block 292. Block 292 builds a new data entry at the next available address in the string table. This is the first encoded input word (OLDCODE)
And the last byte output (K) combined. Block 294 points to an unused address location and block 296 the first encoded word (OLDWORD).
Is replaced with the last encoded input word (INCODE) and processing returns to block 282.

【0085】ブロック282で次の符号化された入力ワ
ード(INCODE)を読み出し、ブロック284でア
ドレスINCODEのデータエントリを出力する。アド
レスINCODEのデータエントリ出力がルートではな
い場合、これは復号されたバイトKとさらに復号すべき
次のアドレスを指示するコードワードフィールド(OM
EGA)を含む。ブロック286でKを出力し、判断ブ
ロック288はブロック290にジャンプする。ブロッ
ク290はコードワードフィールド(OMEGA)をス
トリングテーブルから出力される次のデータエントリの
アドレスとして用い、次にブロック284にループす
る。この処理はストリングテーブルからルート文字を有
するデータエントリが出力される(すなわち、ストリン
グの終り)まで繰り返される。判断ブロック288はブ
ロック292に進み、ここで前に読み出された符号化さ
れたワード(OLDCODE)が最後の出力バイト
(K)と結合される。ブロック294とブロック296
の機能が次に実行され、処理はブロック282に戻る。
したがって、この圧縮解除処理は図8の圧縮処理で圧縮
されたもとのデータストリームを再生する。
The block 282 reads the next encoded input word (INCODE), and the block 284 outputs the data entry of the address INCODE. If the data entry output at address INCODE is not root, this is the decoded byte K and a codeword field (OM) indicating the next address to be further decoded.
EGA) is included. Output K at block 286 and decision block 288 jumps to block 290. Block 290 uses the codeword field (OMEGA) as the address of the next data entry output from the string table and then loops to block 284. This process is repeated until the data entry with the root character is output from the string table (ie, the end of the string). Decision block 288 proceeds to block 292 where the previously read encoded word (OLDCODE) is combined with the last output byte (K). Block 294 and Block 296
Function is then performed and processing returns to block 282.
Therefore, this decompression process reproduces the original data stream compressed by the compression process of FIG.

【0086】図10は図8および図9の圧縮および圧縮
解除アルゴリズムを図示したものである。生データスト
リーム300は図7に示すデータ圧縮/圧縮解除処理に
入力される圧縮されていない文字ストリングからなる。
この例では、単一文字R、I、NおよびTが初期設定中
にメモリ302Aの位置ADDR0、ADDR1、AD
DR2およびADDR3にロードされている。入力文字
はそれぞれの文字にそのアドレス位置の値を割り当てる
ことによって符号化されるが、圧縮速度を上げるため
に、単一入力文字を次に説明する処理を開始する前にア
ルゴリズム的に符号化することができる。メモリ302
Aは初期設定の直後の状態における辞書を示し、メモリ
302Bは圧縮が完了したあとの辞書を示す。
FIG. 10 illustrates the compression and decompression algorithms of FIGS. 8 and 9. Raw data stream 300 consists of uncompressed character strings input to the data compression / decompression process shown in FIG.
In this example, the single letters R, I, N, and T are stored at locations ADDR0, ADDR1, AD in memory 302A during initialization.
Loaded into DR2 and ADDR3. Input characters are encoded by assigning each character a value at its address location, but to speed up compression, a single input character is encoded algorithmically before starting the process described below. be able to. Memory 302
A indicates the dictionary immediately after the initial setting, and the memory 302B indicates the dictionary after the compression is completed.

【0087】データストリーム300からの第1の入力
文字Rはアドレス位置ADDR1のデータエントリに一
致する。一致があったために、この圧縮システムはRの
符号化された値(Addr0=0)を次の入力文字
“I”と結合し、メモリ302Aに対して“0I”との
一致が探索される。メモリ中には“0I”との一致がな
いため、“0I”はメモリ302Bに示すように次の使
用可能な記憶場所(ADDR4)に書き込まれる。最大
の一致したシーケンスのコードワード(すなわち、
“R”=0のコードワード)が圧縮文字ストリーム30
4中に第1の符号化された文字として出力される。圧縮
システムはここでメモリ302Bを探索して、次の入力
文字“N”と結合した“I”の符号化された値(すなわ
ち、ADDR1=1)からなるストリングを探す。スト
リング“1N”は辞書にないため、これは302Bに示
すように次の使用可能な記憶場所(ADDR5)に書き
込まれる。値1(たとえば、最後の一致した文字ストリ
ング=“I”)が圧縮文字ストリーム304の第2の符
号化された文字として出力される。
The first input character R from the data stream 300 matches the data entry at address location ADDR1. Because of the match, the compression system combines the encoded value of R (Addr0 = 0) with the next input character "I" and searches memory 302A for a match with "0I". Since there is no match with "0I" in the memory, "0I" is written to the next available storage location (ADDR4) as shown in memory 302B. Codeword of the largest matched sequence (ie,
“R” = 0 codeword) is the compressed character stream 30
4 is output as the first encoded character. The compression system now searches memory 302B for a string of encoded values of "I" (ie, ADDR1 = 1) combined with the next input character "N". Since the string "1N" is not in the dictionary, it is written to the next available storage location (ADDR5) as shown at 302B. The value 1 (eg, the last matched character string = “I”) is output as the second encoded character of compressed character stream 304.

【0088】未圧縮の文字ストリーム300中の第2の
“I”が処理される(たとえば、文字306)までメモ
リ302Bの構築と同様な方法での入力文字の符号化の
処理が継続される。この圧縮システムは“I”を値1で
符号化する。これは“I”がアドレス位置ADDR1に
あるためである。この符号化された値1は次の入力文字
Nと結合され、このストリング1Nはメモリ302B中
のデータエントリと比較される。シーケンス“1N”は
文字ストリーム300中で前に発生しているため、スト
リング“1N”はメモリ中のあるエントリ(たとえば、
Addr5のデータエントリ)に一致する。したがっ
て、ストリング“1N”は“5”として符号化され、次
の入力文字“T”と結合される。ストリング“5T”は
メモリ302B中のどのエントリとも一致しないため、
“5T”は次の使用可能なアドレス位置(ADDR8)
に書き込まれ、最後の一致した文字ストリング“5”の
コードワードが、文字ストリーム304中に出力され
る。次に、入力文字“T”の符号化された値(ADDR
3=3)が次の入力文字“I”と結合され、この処理が
繰り返される。メモリ302Aは文字ストリーム300
から辞書用に構築されたすべての文字を示す。文字スト
リーム304は生データストリーム300の完全に圧縮
された文字ストリームである。文字ストリーム300中
の9つの文字を表現するには6つの符号化された文字し
か必要としないことに注意しなければならない。
The process of encoding the input characters in a manner similar to the construction of memory 302B continues until the second "I" in uncompressed character stream 300 is processed (eg, character 306). This compression system encodes "I" with the value 1. This is because "I" is in the address position ADDR1. This encoded value 1 is combined with the next input character N and this string 1N is compared with the data entry in memory 302B. Since the sequence "1N" has occurred earlier in the character stream 300, the string "1N" will have an entry in memory (eg,
Data entry of Addr5). Therefore, the string "1N" is encoded as "5" and combined with the next input character "T". The string "5T" does not match any entry in memory 302B, so
"5T" is the next usable address position (ADDR8)
, And the codeword of the last matched character string “5” is output in the character stream 304. Then, the encoded value of the input character "T" (ADDR
3 = 3) is combined with the next input character "I" and the process is repeated. Memory 302A is a character stream 300
Shows all the characters built for the dictionary from. Character stream 304 is a fully compressed character stream of raw data stream 300. Note that only 6 encoded characters are needed to represent the 9 characters in character stream 300.

【0089】圧縮解除辞書は図302Cに示すような圧
縮解除を行うために再度初期設定される。したがって、
最初の4つのアドレス位置は単一入力文字R、I、Nお
よびTの復号された値を有する。この場合も、単一文字
の復号はアルゴリズム的に実行することができる。第1
の符号化入力文字“0”がメモリ302Cへのアドレス
として用いられる。圧縮解除システムは、たとえばこの
値が4より小さいかどうかをチェックすることによっ
て、この値“0”がルートコードワードであることを判
定する。それによって、ADDR0のデータエントリ
(たとえば、“R”)が圧縮解除されたデータストリー
ム308中の第1の文字として出力される。次に、圧縮
解除システムは次の符号化された入力文字“1”を読み
出す。この値もまたルートコードワードであり、したが
ってADDR1のデータエントリが圧縮解除されたデー
タストリーム308中の第2の文字“I”として出力さ
れる。
The decompression dictionary is reinitialized to perform decompression as shown in FIG. 302C. Therefore,
The first four address locations have the decoded values of the single input characters R, I, N and T. Again, single character decoding can be performed algorithmically. First
The encoded input character "0" of is used as an address to the memory 302C. The decompression system determines that this value "0" is the root codeword, for example by checking if this value is less than 4. Thereby, the data entry for ADDR0 (eg, "R") is output as the first character in the decompressed data stream 308. The decompression system then reads the next encoded input character "1". This value is also the root codeword, so the data entry for ADDR1 is output as the second character "I" in the decompressed data stream 308.

【0090】このとき、前のコードワード“0”と結合
された最後の圧縮解除された文字“I”を用いて新しい
辞書エントリが構築される。このストリング“0I”が
次にメモリ302Dに示すように次の使用可能なアドレ
ス位置(ADDR4)に書き込まれる。次のコードワー
ド“2”が入力され、この処理が繰り返される。このと
き、アドレス位置ADDR2のデータエントリ(たとえ
ばN)が出力され、ストリング“1N”がメモリのアド
レス位置ADDR5に書き込まれる。
At this time, a new dictionary entry is constructed using the last decompressed character "I" combined with the previous codeword "0". This string "0I" is then written to the next available address location (ADDR4) as shown in memory 302D. The next codeword "2" is input and the process is repeated. At this time, the data entry (for example, N) at the address position ADDR2 is output, and the string "1N" is written at the address position ADDR5 of the memory.

【0091】この処理は、入力文字“5”が圧縮解除シ
ステムによって読み出されるまで同様に繰り返される。
この圧縮解除エンジンはこのコードワードを用いてAD
DR5のデータエントリを参照する。符号化された文字
“5”は3より大きいためルートではなく、したがって
圧縮解除システムはアドレス位置ADDR5のデータエ
ントリの最後のバイト(たとえばN)を出力する。この
データエントリの残り(たとえば1)は次のアドレスと
して用いられる。コードワード“1”はルートであるた
め、ADDR1のデータエントリ(たとえば“I”)が
出力され、それ以上の圧縮解除は不要となる。圧縮解除
された文字“IN”が次に文字ストリーム308に入れ
られる。メモリ中の新しいデータエントリが最後の圧縮
解除された出力文字“I”と前の符号化された入力文字
“3”を用いてアドレス位置ADDR7に書き込まれ
る。この処理は文字ストリーム304中のすべての文字
が圧縮解除されるまで繰り返される。ハッシングを用い
たHP−DC方式で構築された辞書は互いに異なってい
ることに注意しなければならない。それに対して、この
システムと方法を用いて構築された圧縮辞書302Bと
圧縮解除辞書302Dは同じアドレス/エントリを有す
る。
This process is similarly repeated until the input character "5" is read by the decompression system.
The decompression engine uses this codeword for AD
Refer to the DR5 data entry. The encoded character "5" is not root because it is greater than 3, so the decompression system outputs the last byte (eg, N) of the data entry at address location ADDR5. The rest (eg 1) of this data entry is used as the next address. Since the code word "1" is the root, the data entry of ADDR1 (for example, "I") is output, and further decompression is unnecessary. The decompressed character "IN" is then placed in the character stream 308. A new data entry in memory is written to address location ADDR7 with the last decompressed output character "I" and the previous encoded input character "3". This process is repeated until all the characters in character stream 304 have been decompressed. It should be noted that the dictionaries constructed by the HP-DC method using hashing are different from each other. In contrast, compression dictionary 302B and decompression dictionary 302D built using this system and method have the same address / entry.

【0092】III.CAM圧縮/圧縮解除システムに
おける複数辞書の使用 CAMを用いてデータを圧縮するのに要するメモリの量
をさらに低減するために、先に図5に示したCAMデー
タ圧縮システムが待機辞書(図3参照)と連動させて用
いられる。CAMはクロックサイクル毎に1文字を処理
する能力を有するが、これは最小限のメモリを用いてデ
ータを圧縮することができる。さらに、データ圧縮比は
リセット後に現行辞書中に有用な文字セットを維持する
ことによって上げることができる。次に説明する方法
は、適応的であり、それによって辞書がコードワードに
埋め込まれ、各圧縮解除処理の前に別の辞書を転送する
必要がないようになっている。
III. Use of Multiple Dictionaries in a CAM Compression / Decompression System In order to further reduce the amount of memory required to compress data using CAM, the CAM data compression system previously shown in FIG. 5 uses a standby dictionary (see FIG. 3). ) Is used in conjunction with. The CAM has the ability to process one character per clock cycle, but it can compress the data with minimal memory. In addition, the data compression ratio can be increased by maintaining a useful character set in the current dictionary after reset. The method described next is adaptive so that the dictionary is embedded in the codeword so that there is no need to transfer another dictionary before each decompression process.

【0093】図11はCAM複数辞書圧縮/圧縮解除組
合せシステムの高レベルブロック図である。説明の目的
上、このシステムは図5に示すものと同様の2b ×(b
+m+2)CAM 312を用いて実施される。CAM
312は制御プロセッサ(図示せず)に結合された制
御バス314からなる。アドレスバス316(b−ビッ
ト幅)とデータバス(n−ビット幅)がCAM 312
に結合されている。n−ビット幅のDATA_MASK
バス320のゼロビットは、CAM探索中対応するビッ
トを不能にする。たとえば、第1のマスクビット(DA
TA_MASK[0])上の“0”信号はCAM 31
2に供給される第1のDATA_INビット(DATA
_IN[0])を不能にする。不能とされたDATA_
INビットはCAM 312中でライン318上の信号
に一致するデータエントリを探索するときには考慮に入
れない。データマスキング回路は当該技術分野において
周知である。したがって、CAM 312に用いられる
マスキング回路の詳細についてはここでは示さない。突
合せ成功ライン322はバス318上のデータがCAM
312中の前に格納されたエントリと一致するとき活
動状態になる。MATCH_ADDRESSバス326
は一致した得Aやエントリのアドレスを含み、DATA
_OUTライン324はCAM 312に前に格納され
たデータエントリを出力するのに用いられる。
FIG. 11 is a high level block diagram of a combined CAM multiple dictionary compression / decompression system. For purposes of description, like 2 b × and the system as shown in FIG. 5 (b
+ M + 2) implemented with CAM 312. CAM
312 comprises a control bus 314 coupled to a control processor (not shown). The address bus 316 (b-bit width) and the data bus (n-bit width) are CAM 312.
Is bound to. DATA_MASK of n-bit width
A zero bit on bus 320 disables the corresponding bit during the CAM search. For example, the first mask bit (DA
"0" signal on TA_MASK [0]) is CAM 31
The first DATA_IN bit (DATA
_IN [0]) is disabled. DATA_ was made impossible
The IN bit is not taken into account when searching for a data entry in CAM 312 that matches the signal on line 318. Data masking circuits are well known in the art. Therefore, details of the masking circuitry used in CAM 312 are not shown here. The data on the bus 318 is CAM in the successful match line 322.
Activated when it matches a previously stored entry in 312. MATCH_ADDRESS bus 326
Contains the value of the matching profit A or the address of the entry, and DATA
The _OUT line 324 is used to output the data entry previously stored in the CAM 312.

【0094】図12はCAMの各辞書エントリに含まれ
る異なるエントリを示す。各CAMデータエントリは、
3つのフィールドを有する。すなわち、接尾語Kを格納
するためのmビット幅の文字フィールド(CHAR)符
号化された文字の値OMEGAを格納するためのbビッ
ト幅のコードフィールド(CODE)、および関連する
CODEフィールドとCHARフィールドの辞書状態ビ
ットを格納するための2ビット幅の状態フィールド(S
T)である。状態フィールド(ST)は次の4つの可能
な値のうちの1つを取る。
FIG. 12 shows different entries contained in each dictionary entry of the CAM. Each CAM data entry is
It has three fields. An m-bit wide character field (CHAR) for storing the suffix K, a b-bit wide code field (CODE) for storing the encoded character value OMEGA, and the associated CODE and CHAR fields. 2-bit wide status field (S
T). The status field (ST) takes one of four possible values:

【0095】FREE:CAM記憶場所は現行辞書では
現在未使用である。 CD:CAM位置は現行辞書に属し、待機辞書には属さ
ないデータエントリを含む。 SD:CAM位置は現行辞書と待機辞書の両方に属する
データエントリを含む。 INV:無効値。通上動作では発生しない。
FREE: The CAM memory location is currently unused in the current dictionary. The CD: CAM location contains data entries that belong to the current dictionary and not the standby dictionary. The SD: CAM location contains data entries that belong to both the current dictionary and the standby dictionary. INV: Invalid value. It does not occur in normal operation.

【0096】FREE、CD、SDおよびINVに対応
する2進値は固定されていない。圧縮器と圧縮解除器は
4つの可能な状態(S)(0≦S≦3)のいずれか1つ
をとることのできる状態機械として動作する。状態フィ
ールド(ST)の特定の2進値は状態(S)の関数FR
EE(S)、CD(S)、SD(S)およびINV
(S)であり、図13に定義される。たとえば、状態S
=0において、CAMデータエントリの状態フィールド
にビット[0:0]が存在する場合、記憶場所はFRE
Eであり、現行辞書においては現在使用されていないも
のとみなされる。しかし、圧縮器/圧縮解除器システム
が状態S=2にある場合、その状態フィールドのビット
値[0:0]を有するCAM位置が待機辞書に割り当て
られているデータエントリであるとみなされる。
The binary values corresponding to FREE, CD, SD and INV are not fixed. The compressor and decompressor operate as a state machine that can be in one of four possible states (S) (0≤S≤3). The particular binary value of the state field (ST) is the function FR of the state (S)
EE (S), CD (S), SD (S) and INV
(S), which is defined in FIG. For example, state S
= 0, if bits [0: 0] are present in the status field of the CAM data entry, the storage location is FRE.
E, which is considered to be currently unused in the current dictionary. However, if the compressor / decompressor system is in state S = 2, the CAM location with the bit value [0: 0] of its state field is considered to be the data entry assigned to the standby dictionary.

【0097】初めに、このシステムは状態S=0にあ
り、すべてのSTフィールドは[0:0](たとえば、
ST=FREE(S))にセットされている。このとき
にだけ、次に説明するような、辞書リセット中に発生す
る初期設定時間遅延を最小限にする大域初期設定が必要
である。圧縮器は初めは状態S=0であるが、入力文字
の読み出し、入力ストリングの圧縮を開始し、また現行
辞書(CD)と待機辞書(SD)の構築を並行して開始
する。CDがいっぱいになると、辞書切り換えが発生
し、それによってSD中のデータエントリがCD中の新
しいデータエントリになる。SDは基本的には空にさ
れ、すべての有効データエントリが除去される。
Initially, the system is in state S = 0 and all ST fields are [0: 0] (eg
ST = FREE (S)) is set. Only then is global initialization necessary to minimize initialization time delays that occur during dictionary reset, as described next. The compressor is initially in state S = 0, but begins reading input characters, compressing the input string, and building the current dictionary (CD) and the standby dictionary (SD) in parallel. When the CD is full, a dictionary switch occurs which causes the data entry in SD to become a new data entry in the CD. SD is basically emptied and all valid data entries are removed.

【0098】この辞書切り換えはシステムがS=0から
S=1への状態遷移を起こすときに発生する。図13に
おいて、状態S=1では、空エントリはST=[1:
0]のものであり、これは状態S=0におけるCD値と
同じである。状態S=1においては、CDエントリはS
T=[1:1]のものであり、これは状態S=0におけ
るSD値と同じである。状態遷移はCDがいっぱいにな
るときにのみ発生し、したがって、CAMのすべてのエ
ントリはCDあるいはSDとマークされる(すなわち、
状態フィールドにはFREEの値を有するエントリがな
く、値INVは決して書き込まれない。)したがって、
S=0からS=1への状態遷移の直後には。すべてのエ
ントリはFREEあるいはCDの値を有する(ただし、
次に説明するように辞書メモリに実際には保持されない
初期単一文字ストリングを除く。)値SDを有するエン
トリはないため、新しいSDは空の状態から始まる。同
じ状況がS=1からS=2、S=2からS=3、S=3
からS=0への状態遷移にも起こる。図14は上述した
圧縮/圧縮解除システムの状態遷移を示す。
This dictionary switching occurs when the system undergoes a state transition from S = 0 to S = 1. In FIG. 13, in the state S = 1, the empty entry is ST = [1:
0], which is the same as the CD value in state S = 0. In state S = 1, the CD entry is S
T = [1: 1], which is the same as the SD value in state S = 0. State transitions only occur when the CD is full, so all entries in the CAM are marked as CD or SD (ie,
There is no entry in the status field with a value of FREE and the value INV is never written. ) Therefore,
Immediately after the state transition from S = 0 to S = 1. All entries have a value of FREE or CD (but
Excludes initial single character strings that are not actually held in dictionary memory as described below. The new SD starts with an empty state, since no entry has the value SD. The same situation applies for S = 1 to S = 2, S = 2 to S = 3, S = 3
To state transition from S to S = 0. FIG. 14 shows the state transition of the compression / decompression system described above.

【0099】図15は圧縮器/圧縮解除器の状態を変化
させるための簡単なハードウエアによる実施態様を示
す。状態レジスタ28の初期ビット値は状態S=0で示
されている。各状態遷移について、状態レジスタのビッ
トはFREE→INV→SD→CD→FREEというよ
うに循環的にシフトする。したがって、状態制御は8ビ
ット循環シフトレジスタを用い、レジスタ328を各状
態変化について2ビット左にシフトすることによって簡
単に実施することができる。
FIG. 15 shows a simple hardware implementation for changing the state of the compressor / decompressor. The initial bit value of the state register 28 is shown as state S = 0. For each state transition, the bits of the state register are cyclically shifted as FREE->INV->SD->CD-> FREE. Therefore, state control can be easily implemented using an 8-bit circular shift register and shifting register 328 two bits to the left for each state change.

【0100】CAMベースの待機辞書圧縮器を説明する
と、CAM記憶場所の内容は3ビットバイト(ST、C
ODE、CHAR)によって示され、コード(A)は単
一文字ストリング“A”の符号化された値を表わす。説
明の目的上、コードワードにはメモリアドレス位置に対
応する値が割り当てられる。しかし、コードワード値は
またメモリアドレス位置の単純な関数として簡単に得る
ことができ、当該技術に精通する者には簡単に実施する
ことができる。所定のアドレススペース(たとえば、ア
ドレス0から2m −1)内のコード(コード(A))は
辞書にアクセスすることなく直ちに利用することができ
ると仮定する。前述したように(図5参照)、これらの
コードに対応する記憶場所はCAM内に物理的に存在す
る必要はない。したがって、すべてのCAM探索はこれ
らの場所を除くものと仮定する。説明を簡単にするため
に、“ファイルの終り”条件もまた無視される。
To describe a CAM-based standby dictionary compressor, the contents of the CAM memory location are 3 bit bytes (ST, C
ODE, CHAR), code (A) represents the encoded value of the single character string "A". For purposes of explanation, codewords are assigned values corresponding to memory address locations. However, the codeword value can also be easily obtained as a simple function of memory address location and can be easily implemented by those skilled in the art. It is assumed that the code (code (A)) in a given address space (eg, addresses 0 to 2 m -1) is available immediately without accessing the dictionary. As mentioned above (see Figure 5), the storage locations corresponding to these codes need not be physically present in the CAM. Therefore, we assume that all CAM searches exclude these locations. For simplicity of explanation, the "end of file" condition is also ignored.

【0101】CAMベース複数辞書システムの実施 図16はCAMベース複数辞書圧縮/圧縮解除システム
の詳細な回路図である。図16の回路図は、複数辞書圧
縮/圧縮解除の提供に必要な追加の機能的構成要素を示
す。CAM圧縮/圧縮解除回路312は図11に示すも
のと同じであり、状態レジスタ328は前に図15に示
したものと同じである。DATA_INレジスタ342
とMASKレジスタ350はST、CODEおよびCH
ARフィールドをCAM 312のDATA_INポー
トとMASKポートを介して供給する。CAM中の各デ
ータエントリのSTフィールドは状態レジスタを介して
直接的に、あるいはSTパターンジェネレータ338を
介して間接的に制御される。STパターンジェネレータ
は図17に詳細に示す。
Implementation of a CAM-based Multiple Dictionary System FIG. 16 is a detailed circuit diagram of a CAM-based multiple dictionary compression / decompression system. The circuit diagram of FIG. 16 illustrates the additional functional components required to provide multiple dictionary compression / decompression. The CAM compression / decompression circuit 312 is the same as that shown in FIG. 11, and the status register 328 is the same as that shown previously in FIG. DATA_IN register 342
And MASK register 350 for ST, CODE and CH
The AR field is provided via the CAM 312 DATA_IN and MASK ports. The ST field of each data entry in the CAM is controlled directly via the status register or indirectly via the ST pattern generator 338. The ST pattern generator is shown in detail in FIG.

【0102】DATA_INポートを供給するCDライ
ンおよびSDラインはマルチプレクサ340(MUX
M1)を介して制御バス314を操作することによって
制御される。制御バス314上の信号はシステムプロセ
ッサ(図示せず)とCAM312内の制御圧縮/圧縮解
除関数から来る。制御バス314は前に図5に示したも
のと同じ読み出し信号、書き込み信号、探索信号および
リセット信号を含む。CAM 312内の内部圧縮器/
圧縮解除器制御論理もまた図5に示すものと同様であ
る。次に説明する機能のいくつかを実行するために、こ
の論理に対する小規模な変更が必要となる可能性があ
る。これらの回路変更は当該技術に精通する者には簡単
に実施することができ、したがって詳細には説明しな
い。
The CD and SD lines supplying the DATA_IN port are connected to the multiplexer 340 (MUX).
It is controlled by operating the control bus 314 via M1). The signals on control bus 314 come from the system processor (not shown) and the control compression / decompression functions in CAM 312. Control bus 314 contains the same read, write, search and reset signals as previously shown in FIG. Internal compressor in CAM 312 /
The decompressor control logic is also similar to that shown in FIG. Minor changes to this logic may be required to perform some of the functions described below. These circuit modifications can be easily carried out by those skilled in the art and will therefore not be described in detail.

【0103】ライン326がCAM 312のMATC
H_ADDRESSポートをCAM312のDATA_
INポートに結合する。外部データバス344がADD
RESS_INポートに直接結合され、レジスタ342
を介してDATA_INポートに結合されている。ST
パターンジェネレータライン336とデータ入力ライン
348が、マルチプレクサ346(MUX M2)を介
してMASKレジスタ350のSTフィールドへの供給
を行う。ライン349上の探索型信号および制御生成回
路352からの他の各種の制御信号はライン322上の
MATCH_SUCCESS信号によって制御される。
ライン324上のDATA_OUT信号は、圧縮された
データあるいは圧縮解除されたデータを図4に示すデー
タインターフェースに出力する。内部アドレスポインタ
354(NEXT_CODE)は、第2のアドレスポイ
ンタ356(SAVE_CODE)へのデータの書き込
みあるいは、CAM DATA_INポートからのデー
タの受信を行うことができる。
Line 326 is the CAM 312 MATC
H_ADDRESS port to DATA_ of CAM312
Connect to IN port. External data bus 344 is ADD
Directly coupled to the RESS_IN port, register 342
To the DATA_IN port via. ST
A pattern generator line 336 and a data input line 348 supply to the ST field of MASK register 350 via multiplexer 346 (MUX M2). The search-type signal on line 349 and various other control signals from control generation circuit 352 are controlled by the MATCH_SUCCESS signal on line 322.
The DATA_OUT signal on line 324 outputs the compressed or decompressed data to the data interface shown in FIG. The internal address pointer 354 (NEXT_CODE) can write data to the second address pointer 356 (SAVE_CODE) or receive data from the CAM DATA_IN port.

【0104】図17は図16のSTパターンジェネレー
タ338の詳細回路図である。状態レジスタ328(図
16)のCDフィールドおよびSDフィールドからの第
1ビットは、ANDゲート358およびEXCLUSI
VE−NORゲート362に入力される。CDフィール
ドおよびSDフィールドからの第2ビットは、ANDゲ
ート360およびEXCLUSIVE−NORゲート3
64に結合される。ANDゲートはCAM DATA_
INポートのSTフィールドへの供給を行い、EXCL
USIVE−NORゲートはCAM MASK ポート
(図16)のSTフィールドへの供給を行う。
FIG. 17 is a detailed circuit diagram of the ST pattern generator 338 of FIG. The first bit from the CD and SD fields of status register 328 (FIG. 16) is AND gate 358 and EXCLUSI.
It is input to the VE-NOR gate 362. The second bit from the CD and SD fields is AND gate 360 and EXCLUSIVE-NOR gate 3
64. AND gate is CAM DATA_
Supply to ST field of IN port, EXCL
The USIVE-NOR gate feeds the ST field of the CAM MASK port (FIG. 16).

【0105】この圧縮/圧縮解除システムは(次に詳細
に説明するように)CD辞書エントリとSD辞書エント
リの両方を同時に探索することができなければならな
い。これは状態レジスタ328(図16)中のビットを
操作することによって行われる。CDおよびSD中のビ
ットのうちの1つは常に一致し、第2のビットは常に異
なる(図13参照)。したがって、突合せビットは有効
なSDあるいはCD辞書エントリの探索に用いられ、第
2のビットはマスクされる。たとえば、状態S=0で
は、現行辞書CDのビット値は[1:0]および待機辞
書のビット値は[1:1]である。これによって、AN
Dゲート358とEXCLUSIVE−NORゲート3
62の出力がハイになり、ANDゲート360とEXC
LUSIVE−NORゲート364の出力がローにな
る。したがって、その第1ビット位置に“1”があるC
AM辞書中の任意のSTフィールド(たとえば、CD
(S)SD(S))は、CDあるいはSDのいずれかの
有効辞書エントリとして同定される。
The compression / decompression system must be able to search both CD and SD dictionary entries at the same time (as described in detail below). This is done by manipulating the bits in the status register 328 (FIG. 16). One of the bits in the CD and SD is always the same and the second bit is always different (see Figure 13). Therefore, the match bit is used to search for a valid SD or CD dictionary entry and the second bit is masked. For example, in state S = 0, the bit value of the current dictionary CD is [1: 0] and the bit value of the standby dictionary is [1: 1]. This allows AN
D gate 358 and EXCLUSIVE-NOR gate 3
62 output goes high, AND gate 360 and EXC
The output of LUIVE-NOR gate 364 goes low. Therefore, a C having a "1" at its first bit position
Any ST field in the AM dictionary (eg CD
(S) SD (S)) is identified as a valid dictionary entry for either CD or SD.

【0106】データ圧縮図16のシステムは次のように
データを圧縮する。このシステムは状態レジスタ328
に図15に示すようなビット値をロードすることによっ
て状態S=0にセットされる。CAM辞書中のすべての
STフィールドはST=FREE(S)(すなわち、
[0:0])にセットされ、アドレスポインタNEXT
_CODEはCAM中の第1の使用可能なアドレスにセ
ットされる。図5に示すCAMについて前述したよう
に、単一入力文字はデータ圧縮中にアルゴリズム的に符
号化することができ、この場合、すべてのCAMアドレ
スを文字ストリングの格納に使用可能である。しかし、
単一データ文字がCAMに格納されると、符号文字スト
リングの書き込みに使用可能な第1のアドレスは通常最
後の単一文字の後のアドレス位置である。
Data Compression The system of FIG. 16 compresses data as follows. This system has a status register 328.
The state S = 0 is set by loading the bit value as shown in FIG. All ST fields in the CAM dictionary are ST = FREE (S) (ie
[0: 0]) and address pointer NEXT
_CODE is set to the first available address in the CAM. As described above for the CAM shown in FIG. 5, a single input character can be algorithmically encoded during data compression, in which case all CAM addresses can be used to store a character string. But,
When a single data character is stored in the CAM, the first address available for writing the code character string is usually the address location after the last single character.

【0107】必要であれば、第1の入力文字を入力デー
タライン344からの第1のデータ文字を読み、ライン
326上に入力文字/データエントリの一致のためのア
ドレスを生成することによって符号化される。この符号
化された第1の文字(OMEGA)は次にレジスタ34
2内で入力データライン344からの第2の入力文字
(K)と結合され、OMEGA,K文字ストリングが生
成される。CAMに対してOMEGA,Kストリングに
一致するデータエントリの探索が行われる。同時に、S
Tフィールドに対してSTパターンジェネレータによっ
て生成される値と一致するCD値あるいはSD値(たと
えば、CDあるいはSDエントリとしてすでに格納され
ているOMEGA,Kストリング)が探索される。SE
ARCH_TYPE信号349のすべてのビットは一致
の探索中“1”の値を取り、これによってCAMマスク
のCODEフィールドとCHARフィールドがイネーブ
ルされる。MUX M1とMUX M2が前に図17に
示したSTパターンジェネレータ338からMASKポ
ートとDATA_INポートのSTフィールドを選択す
る。
If necessary, the first input character is encoded by reading the first data character from input data line 344 and generating an address on line 326 for the input character / data entry match. To be done. This encoded first character (OMEGA) is then transferred to register 34
In 2, it is combined with the second input character (K) from the input data line 344 to produce the OMEGA, K character string. The CAM is searched for a data entry that matches the OMEGA, K string. At the same time, S
A CD or SD value (eg, OMEGA, K string already stored as a CD or SD entry) that matches the value generated by the ST pattern generator for the T field is searched for. SE
All bits of the ARCH_TYPE signal 349 have a value of "1" during a match search, which enables the CODE and CHAR fields of the CAM mask. MUX M1 and MUX M2 select the ST fields of the MASK and DATA_IN ports from the ST pattern generator 338 previously shown in FIG.

【0108】これはCAMに供給される第1のOMEG
A,Kストリングであるため、ライン322上のMAT
CH_SUCCESS信号は一致がないことを示す。次
に、OMEGAがライン324上に出力され、文字スト
リングCD(S)、OMEGA、KがCAM辞書位置N
EXT_CODEにおいてSTフィールド、CODEフ
ィールドおよびCHARフィールドに書き込まれる。O
MEGA,Kストリングの文字Kが次に符号化され(C
ODE(K))、OMEGAの新しい値として用いられ
る。STフィールドに書き込まれたCD(S)値は、レ
ジスタ342のSTフィールドに供給されるMUX 3
40の入力を変更することによってレジスタ328から
直接供給される。
This is the first OMEG supplied to the CAM
MAT on line 322 because it is an A, K string
The CH_SUCCESS signal indicates that there is no match. OMEGA is then output on line 324 and the character strings CD (S), OMEGA, K are in CAM dictionary position N.
It is written in the ST field, CODE field and CHAR field in EXT_CODE. O
The letter K of the MEGA, K string is then encoded (C
ODE (K)), used as a new value of OMEGA. The CD (S) value written in the ST field is supplied to the ST field of the register 342 by MUX 3
Sourced directly from register 328 by changing 40 inputs.

【0109】次に、このシステムは次の使用可能なCA
M辞書エントリ(たとえば、ST=FREE(S))を
探索する。したがって、SEARCH_TYPE信号3
49は“0”の値を取り、CODEフィールドとCHA
Rフィールドをマスクし、ライン348上の[1:1]
ビット値を介してSTフィールドをイネーブルする。同
時に、MUX 340に結合された制御ライン314が
レジスタ328から値FREEをSTフィールドで探索
された値として選択する。ライン326からの一致アド
レスは次のOMEGA,Kストリングを格納するための
NEXT_CODEとして用いられる。この処理はライ
ン344上の入力データストリングから次の文字を抽出
し、それをOMEGAと結合して、次の探索のためのO
MEGA,Kを生成する。次の探索で一致が発見された
場合、その一致のアドレス位置が次の突合せのためにM
ATCH_ADDRESSライン326上のDATA_
INポートにフィードバックされる。このアドレスは前
のOMEGA,Kストリングを表わす新しいOMEGA
値として用いられる。同時に、レジスタ328からのS
D(S)値がこの一致アドレスでSTフィールドに書き
込まれる。
Next, the system is ready for the next available CA.
Search for M dictionary entries (eg, ST = FREE (S)). Therefore, SEARCH_TYPE signal 3
49 takes the value of "0", and the CODE field and CHA
Mask R field, [1: 1] on line 348
Enable the ST field via the bit value. At the same time, control line 314 coupled to MUX 340 selects the value FREE from register 328 as the value searched for in the ST field. The match address from line 326 is used as NEXT_CODE to store the next OMEGA, K string. This process extracts the next character from the input data string on line 344 and combines it with OMEGA to generate an O for the next search.
Generate MEGA, K. If the next search finds a match, the address location of that match is M for the next match.
DATA_ on ATCH_ADDRESS line 326
It is fed back to the IN port. This address is a new OMEGA representing the previous OMEGA, K string
Used as a value. At the same time, S from register 328
The D (S) value is written in the ST field at this match address.

【0110】上述したように、新しいOMEGA,Kス
トリングがCAM位置に書き込まれた後、状態フィール
ドのつぎのFREE値を発見するための探索が行われ
る。探索が失敗すると、これは現行辞書がいっぱいであ
ることを示し、システムに状態S=1への切り換えを発
生させる。これはレジスタ328の内容を左に2ビット
位置だけ回転させることによって行われる。前にSD
(S)値を有していた状態フィールド位置は現在はCD
(S)値を有する。CAMのすべての状態フィールドは
状態S=0においてCD(S)あるいはSD(S)にセ
ットされていた(たとえば、状態変化の直前にはFRE
E状態フィールド値は存在しなかった)ため、状態S=
1のすべてのFREE記憶場所は状態S=0からの前の
CD(S)エントリとなる。さらに、待機辞書は状態S
=1の初期単一文字ストリングを除いて空である。これ
は、INV値は状態S=0では決して書き込まれないた
めである。圧縮はシステム状態S=1で上述したように
続いていく。この処理は入力データがすべて圧縮される
まで圧縮データ文字の生成と状態の切り換えを続ける。
As described above, after the new OMEGA, K string is written to the CAM location, a search is made to find the next FREE value in the status field. If the search fails, this indicates that the current dictionary is full, causing the system to switch to state S = 1. This is done by rotating the contents of register 328 left by two bit positions. SD before
The status field position that had the (S) value is now CD
(S) value. All state fields in the CAM were set to CD (S) or SD (S) at state S = 0 (eg, FRE just before state change).
Since there was no E state field value), state S =
All FREE storage locations of 1 become the previous CD (S) entries from state S = 0. Furthermore, the standby dictionary is in state S
Empty except for the initial single character string of = 1. This is because the INV value is never written in state S = 0. Compression continues as above with system state S = 1. This process continues to generate compressed data characters and switch states until all the input data is compressed.

【0111】データの圧縮解除 図16のシステムを用いたデータの圧縮解除は次のよう
に行われる。CAMはレジスタ328中のビットを状態
S=0にリセットすることによって初期設定される。F
REEビット値がそれぞれの使用可能なメモリ辞書位置
の状態フィールドに書き込まれる。内部アドレスポイン
タ354(NEXT_CODE)がCAMの第1の使用
可能な記憶場所(たとえば、NEXT_CODE=
m )にセットされ、内部アドレスポインタ356(S
AVE_CODE)がゼロにセットされる。
Decompression of Data Decompression of data using the system of FIG. 16 is performed as follows. The CAM is initialized by resetting the bits in register 328 to state S = 0. F
The REE bit value is written into the status field of each available memory dictionary location. Internal address pointer 354 (NEXT_CODE) is the first available storage location of the CAM (eg, NEXT_CODE =
2 m ) and the internal address pointer 356 (S
AVE_CODE) is set to zero.

【0112】圧縮解除は図5に示したのと同じ方法で行
われる。たとえば、符号化された文字ストリングからの
第1の符号化された文字(OMEGA)がライン344
上で読み出される。OMEGAは次にCAM ADDR
ESS_INポートに供給されるアドレスとして用いら
れる。ライン324上に出力されるCODEフィールド
の値が“ルート”でない場合、CHARフィールドがラ
イン324上に出力され、CODEフィールドが次のア
ドレス位置としてCAMにフィードバックされる。この
処理は“ルート”CODEフィールドがCAMから読み
出されるまで繰り返される。圧縮された入力文字(OM
EGA)が圧縮解除され、この圧縮解除された文字スト
リングがライン324上に出力された後、アドレス位置
OMEGAのSTフィールドがSD(S)にセットされ
る。これは、レジスタ328からのSD(S)値をレジ
スタ342のSTフィールドに書き込むことによって行
われる。次に、圧縮解除されたデータストリングからの
第1の文字(K)をレジスタ342のアドレス位置SA
VE_CODEにフィードバックすることによって辞書
が構築される。状態レジスタ328からのCD(S)
値、ライン344を介して初めに読み出されたOMEG
A値、および圧縮解除されたOMEGA出力ストリング
(K)からの第1の文字がCAM辞書のSTフィール
ド、CODEフィールド、およびCHARフィールドの
アドレス位置NEXT_CODEに書き込まれる。
Decompression is done in the same way as shown in FIG. For example, the first encoded character (OMEGA) from the encoded character string is line 344.
Read on. OMEGA is next CAM ADDR
Used as an address supplied to the ESS_IN port. If the value of the CODE field output on line 324 is not "root", the CHAR field is output on line 324 and the CODE field is fed back to the CAM as the next address location. This process is repeated until the "root" CODE field is read from the CAM. Compressed input characters (OM
EGA) is decompressed and the decompressed character string is output on line 324, after which the ST field at address location OMEGA is set to SD (S). This is done by writing the SD (S) value from register 328 into the ST field of register 342. The first character (K) from the decompressed data string is then placed in the address location SA of register 342.
The dictionary is built by feeding back to VE_CODE. CD (S) from status register 328
Value, the OMEG initially read via line 344
The A value and the first character from the decompressed OMEGA output string (K) are written to the CAM dictionary at ST, CODE, and CHAR field address locations NEXT_CODE.

【0113】アドレスポインタNEXT_CODEの値
が次にアドレスポインタSAVE_CODEに書き込ま
れる。“0”の値がライン349上に置かれ、ライン3
48上の[1:1]ビット値によって“状態フィールド
のみ”の探索が可能になる。FREE状態フィールドを
有するCAM中の次の辞書エントリがFREE値を有す
るSTフィールドを探索することによって発見される。
このFREE状態フィールドのアドレス値がライン32
6を介してアドレスポインタNEXT_CODEに書き
込まれる。そして、次の符号化文字OMEGAがライン
344から読み出される。
The value of the address pointer NEXT_CODE is then written to the address pointer SAVE_CODE. A value of "0" is placed on line 349, line 3
The [1: 1] bit value on 48 allows for "state field only" searches. The next dictionary entry in the CAM with the FREE state field is found by searching the ST field with the FREE value.
The address value of this FREE status field is line 32.
It is written to the address pointer NEXT_CODE via 6. Then, the next encoded character OMEGA is read from line 344.

【0114】現行辞書がいっぱいのとき(たとえば、F
REE状態フィールド値が存在しないとき)、システム
は上述したようにレジスタ328のビットをシフトする
ことによって状態S=1に切り換わり、アドレスポイン
タNEXT_CODEの値がリセットされる。したがっ
て、現行辞書は前の待機辞書からのエントリのみを含
む。次に、システムはライン344からの次の符号化さ
れた文字(OMEGA)を読み出し、このデータ圧縮解
除処理が続行される。
When the current dictionary is full (eg F
When the REE state field value is not present), the system switches to state S = 1 by shifting the bits in register 328 as described above, resetting the value of address pointer NEXT_CODE. Therefore, the current dictionary contains only entries from the previous standby dictionary. The system then reads the next encoded character (OMEGA) from line 344 and the data decompression process continues.

【0115】図18は待機辞書を有するCAMを用いた
データ圧縮の一般的な方法を示すデータフロー図であ
る。ブロック376はシステムの状態と状態条件をセッ
トする初期設定処理である。すなわち、システムが状態
S=0にセットされ、CAM辞書のすべての状態レジス
タがST=FREE(S)にセットされ、アドレスポイ
ンタはCAM中の次の使用可能なアドレス(たとえば、
m →NEXT CODE)にセットされる。
FIG. 18 is a data flow diagram showing a general method of data compression using a CAM having a standby dictionary. Block 376 is an initialization process that sets the system state and state conditions. That is, the system is set to state S = 0, all state registers in the CAM dictionary are set to ST = FREE (S), and the address pointer is set to the next available address in the CAM (eg,
2 m → NEXT CODE).

【0116】入力データストリームからの第1の文字
(CHAR−K)はブロック378で読み出され、符号
化(たとえば、コード(K))されて値OMEGAが提
供される。この入力データストリームの次の入力文字
(K)はブロック380で読み出される。ブロック38
2はOMEGAとKを文字ストリングとして組み合わせ
る(たとえば、OMEGA,Kのように結合する)。次
に探索が行われる。これはOMEGA,Kストリングに
一致するデータエントリを探すだけではなく、2つの交
互の状態レジスタパターン(ST=CD(S)あるいは
ST=SD(S))のうちの1つを突合せる。この探索
は現行値と待機値の両方に対して行われなければならな
い。それは、いずれかの値が有効文字ストリング(たと
えばOMEGA,K)がCAMに書き込まれたことを示
すためである。たとえば、状態レジスタ値ST=CD
(S)は関連するCODEフィールドとCHARフィー
ルドに現在の処理状態中にOMEGA,K文字ストリン
グがロードされたことを示す。状態レジスタ値ST=S
D(S)は関連するCODEフィールドとCHARフィ
ールドにOMEGA,K文字ストリングがロードされて
おり、第2のOMEGA,K文字ストリングと現在のプ
ロセッサ状態において少なくとも一度一致したことを示
す。したがって、両方の状態レジスタ値(CD(S)お
よびSD(S))は重ね書きしてはならない有効CAM
データエントリを示す。
The first character (CHAR-K) from the input data stream is read at block 378 and encoded (eg, code (K)) to provide the value OMEGA. The next input character (K) of this input data stream is read at block 380. Block 38
2 combines OMEGA and K as a character string (eg, joins like OMEGA, K). Then a search is performed. It not only looks for a data entry that matches the OMEGA, K string, but also matches one of the two alternate status register patterns (ST = CD (S) or ST = SD (S)). This search must be done for both current and wait values. That is because either value indicates that a valid character string (eg, OMEGA, K) was written to the CAM. For example, the status register value ST = CD
(S) indicates that the associated CODE and CHAR fields were loaded with the OMEGA, K character string during the current processing state. Status register value ST = S
D (S) indicates that the associated CODE and CHAR fields are loaded with the OMEGA, K character string and have matched the second OMEGA, K character string at least once in the current processor state. Therefore, both status register values (CD (S) and SD (S)) must not be overwritten by a valid CAM.
Indicates a data entry.

【0117】CAMにまだデータストリングが格納され
ていない場合、判断ブロック384は一致がないことを
示す。符号化された値OMEGAはブロック388にお
いて符号化されたデータストリング中の第1の文字とし
て出力される。このOMEGA,Kストリングは第1の
使用可能なCAMアドレス位置(NEXT_CODE)
に書き込まれる。アドレス位置NEXT_CODEの状
態フィールド(ST)にはCAM中の有効データエント
リを示す値CD(S)が書き込まれる。次に、ブロック
388がOMEGAを第2の入力文字の符号化された値
に置き換える(コード(K)→OMEGA)。
If the CAM does not yet contain the data string, decision block 384 indicates that there is no match. The encoded value OMEGA is output as the first character in the encoded data string at block 388. This OMEGA, K string is the first available CAM address location (NEXT_CODE)
Written in. A value CD (S) indicating a valid data entry in the CAM is written in the status field (ST) of the address position NEXT_CODE. Next, block 388 replaces OMEGA with the encoded value of the second input character (code (K) → OMEGA).

【0118】ブロック390がCAMに対してST=F
REE(S)である次の使用可能なアドレス位置の探索
を行う。FREE(S)を有する状態レジスタが発見さ
れない場合、CAM中の現行辞書がいっぱいである。判
断ブロック392はCAMをその次の状態S=S+1
mod 4に変えることによって現行辞書(CD)を待
機辞書(SD)に置き換える。状態変化の間、各状態レ
ジスタの値は前に説明したように再割り当てされる(図
13参照)。STフィールド値はFREE→INV→S
D→CD→FREEと再割り当てされる。処理はブロッ
ク380に戻り、そこで次の入力文字(K)が読み出さ
れる。この突合せ処理は上述したように繰り返される。
現行辞書がいっぱいでない場合、判断ブロック390は
ブロック394にジャンプする。
Block 390 indicates ST = F for CAM.
Search for the next available address location which is REE (S). If no status register with FREE (S) is found, the current dictionary in the CAM is full. Decision block 392 sends the CAM to the next state S = S + 1.
Replace the current dictionary (CD) with the standby dictionary (SD) by changing to mod 4. During a state change, the value of each state register is reallocated as previously described (see Figure 13). ST field value is FREE → INV → S
It is reassigned as D → CD → FREE. Processing returns to block 380, where the next input character (K) is read. This matching process is repeated as described above.
If the current dictionary is not full, decision block 390 jumps to block 394.

【0119】ブロック394はFREE状態レジスタ値
を有するCAM中の次のアドレスを判定し、そのアドレ
スをNEXT_CODEに割り当てる(たとえば、ma
tch address→NEXT CODE)。処理
はブロック380に戻り、そこで次の入力文字(K)が
読み出される。
Block 394 determines the next address in the CAM with the FREE status register value and assigns that address to NEXT_CODE (eg, ma.
tch address → NEXT CODE). Processing returns to block 380, where the next input character (K) is read.

【0120】判断ブロック384によって一致が示され
ると、処理はブロック386にジャンプし、そこでOM
EGAフィールドがOMEGA,Kストリングに一致し
た辞書項目のアドレスに置き換えられる。(一致アドレ
スのCODEフィールドとCHARフィールドで表わさ
れる)一致した文字ストリングは、一致アドレスの状態
フィールドSTをSD(S)にセットすることによって
待機辞書に自動的に割り当てられる。次に処理はブロッ
ク380に戻り、そこでデータストリームから次の入力
文字(K)が読み出される。一致アドレス(OMEG
A)とKが結合されて新しいOMEGA,Kストリング
が形成され、これが3つの入力文字を表わす。ブロック
382が次に現行辞書と待機辞書に対して文字ストリン
グの一致を探索する。
If a match is indicated by decision block 384, processing jumps to block 386, where OM occurs.
The EGA field is replaced with the address of the dictionary entry that matched the OMEGA, K string. The matched character string (represented by the CODE and CHAR fields of the match address) is automatically assigned to the standby dictionary by setting the match address status field ST to SD (S). The process then returns to block 380, where the next input character (K) is read from the data stream. Matching address (OMEG
A) and K are combined to form a new OMEGA, K string, which represents the three input characters. Block 382 then searches the current dictionary and the standby dictionary for a character string match.

【0121】待機辞書の実際の構築は、OMEGA,K
文字ストリングの一致のアドレスにおけるSTフィール
ドがSD(S)にセットされているときにブロック38
6で行われる。しかし、STフィールドをチェックする
必要がないため、より簡略なハードウエアによる実施が
可能である。
The actual construction of the standby dictionary is OMEGA, K
Block 38 when the ST field at the address of the character string match is set to SD (S).
Done at 6. However, since it is not necessary to check the ST field, it is possible to implement by simpler hardware.

【0122】図19は待機辞書を有するCAMを用いた
データの圧縮解除の一般的方法を示すデータフロー図で
ある。ブロック398はこのシステムを状態(S=0)
に初期設定し、すべての使用可能な辞書エントリのST
フィールドを値ST=FREE(0)に初期設定する。
アドレスポインタNEXT_CODEが第1の空アドレ
ス位置(NEXT_CODE=2m +1)にセットさ
れ、第2のアドレスポインタSAVE_CODEはゼロ
にセットされる。圧縮されたデータストリングからの第
1の符号化された文字(OMEGA)がブロック400
で読み出される。
FIG. 19 is a data flow diagram showing a general method for decompressing data using a CAM with a standby dictionary. Block 398 puts this system into a state (S = 0)
Default to ST for all available dictionary entries
Initialize the field to the value ST = FREE (0).
The address pointer NEXT_CODE is set to the first empty address position (NEXT_CODE = 2 m +1) and the second address pointer SAVE_CODE is set to zero. The first encoded character (OMEGA) from the compressed data string is block 400.
Is read by.

【0123】ブロック401はOMEGAを図16で説
明したように圧縮解除された文字ストリングWに圧縮解
除する。たとえば、OMEGAをアドレスとして用いる
ことによって、記憶場所OMEGAにあるCHARフィ
ールドがCAMによって出力される。アドレスOMEG
AからのCODEフィールドが“ルート”でない場合、
それはCAMに供給される次のアドレスとして用いられ
る。次のアドレスのCHARフィールドが次の圧縮解除
された文字Kとして出力される。アドレスOMEGAの
CODEフィールドが“ルート”である場合、アドレス
OMEGAのCHARフィールドが出力され、アドレス
OMEGAのCODEフィールド、CHARフィールド
は待機辞書に割り当てられる(たとえば、SD(S)→
ST)。ブロック402は文字ストリングWの第1の文
字をレジスタCに割り当てる。
Block 401 decompresses OMEGA into a decompressed character string W as described in FIG. For example, by using OMEGA as the address, the CHAR field at storage location OMEGA is output by the CAM. Address OMEG
If the CODE field from A is not "root",
It is used as the next address supplied to the CAM. The CHAR field at the next address is output as the next decompressed character K. When the CODE field of the address OMEGA is “root”, the CHAR field of the address OMEGA is output, and the CODE field and the CHAR field of the address OMEGA are assigned to the standby dictionary (for example, SD (S) →
ST). Block 402 assigns the first character of character string W to register C.

【0124】アドレスポインタSAVE_CODEがゼ
ロでない場合、判断ブロック403はブロック404に
ジャンプし、ブロック404で文字ストリングCD
(S)、SAVE_CODE、CをCAM辞書のアドレ
ス位置(NEXT_CODE)に書き込むことによって
辞書が構築される。SAVE_CODEがゼロに等しい
か、あるいはブロック404で文字ストリングが書き込
まれたあと、ブロック405でアドレス位置OMEGA
の状態フィールドを待機辞書に割り当て(SD(S)→
(OMEGA))、現在のSAVE_CODE値をOM
EGAの値に置き換える。ブロック406で値ST=F
REE(S)を有する次の状態フィールドが探索され
る。FREE STフィールドが発見されると、ブロッ
ク408はブロック410にジャンプし、ブロック41
0では一致アドレスがアドレスポインタNEXT_CO
DEに割り当てられる(たとえば、MATCH ADD
→NEXT CODE)。次に、処理はブロック400
に戻り、圧縮されたデータストリーム(OMEGA)か
らの次の符号化された文字が読み出され、圧縮解除され
る。
If the address pointer SAVE_CODE is non-zero, decision block 403 jumps to block 404 where the character string CD
The dictionary is constructed by writing (S), SAVE_CODE, C to the address location (NEXT_CODE) of the CAM dictionary. If SAVE_CODE is equal to zero or the character string is written at block 404, then at block 405 the address location OMEGA
State field of is assigned to the standby dictionary (SD (S) →
(OMEGA)), OM the current SAVE_CODE value
Replace with the value of EGA. The value ST = F in block 406
The next state field with REE (S) is searched. If the FREE ST field is found, block 408 jumps to block 410 and block 41
In 0, the matching address is the address pointer NEXT_CO.
Assigned to DE (eg MATCH ADD
→ NEXT CODE). Next, processing continues at block 400.
Returning to, the next encoded character from the compressed data stream (OMEGA) is read and decompressed.

【0125】FREE(S)の値を有するSTフィール
ドがない場合、判断ブロック408はブロック412に
ジャンプする。この処理はここで現行辞書が待機辞書に
切り換えられる次の状態(すなわち、S=S+1 mo
d)に変化する。また、これによって現行辞書の項目は
前の状態からFREE位置に変わる。ブロック413で
ST=FREE(S)である次の空位置が探索され、ア
ドレスポインタSAVE_CODEがゼロにリセットさ
れ、そしてブロック410にジャンプする。ブロック4
10ではブロック413で発見されたFREE位置のア
ドレス値をアドレスポインタNEXT_CODEに割り
当てる。ブロック410は次にブロック400に戻り、
そこで処理は圧縮されたデータストリームからのデータ
がすべて圧縮解除されるまで継続される。
If no ST field has a value of FREE (S), decision block 408 jumps to block 412. This process is now the next state where the current dictionary is switched to the standby dictionary (ie, S = S + 1 mo).
Change to d). This also changes the entry in the current dictionary from its previous state to the FREE position. At block 413, the next empty position with ST = FREE (S) is searched, the address pointer SAVE_CODE is reset to zero, and jumps to block 410. Block 4
At 10, the address value of the FREE position found at block 413 is assigned to the address pointer NEXT_CODE. Block 410 then returns to block 400,
Processing then continues until all data from the compressed data stream is decompressed.

【0126】図20は図18および図19の圧縮および
圧縮解除アルゴリズムを図示するものである。生データ
ストリーム414は図18に示すCAM圧縮処理に入力
される未圧縮の文字ストリングからなる。この例では、
単一文字R、I、NおよびTが初期設定中にメモリ41
6の位置ADDR0、ADDR1、ADDR2およびA
DDR3にロードされている。単一文字入力は各文字に
そのアドレス位置の値を割り当てることによって符号化
されるが、圧縮速度を上げるために単一入力文字は次に
説明する処理を開始する前にアルゴリズム的に符号化す
ることができる。メモリ416は初期設定直後の状態S
=0の辞書を示し、メモリ418は現行辞書の待機辞書
への置き換え(たとえば、状態S=0からS=1への変
化)の直前のS=0の状態の辞書を示す。メモリ420
は生データストリーム414の圧縮後のS=2の状態の
辞書を示す。
FIG. 20 illustrates the compression and decompression algorithms of FIGS. 18 and 19. Raw data stream 414 consists of an uncompressed character string input to the CAM compression process shown in FIG. In this example,
The single letters R, I, N and T are stored in memory 41 during initialization.
6 positions ADDR0, ADDR1, ADDR2 and A
It is loaded into DDR3. Single-character input is encoded by assigning each address a value at its address location, but for faster compression, single-input characters should be encoded algorithmically before starting the process described below. You can The memory 416 is in the state S immediately after the initial setting.
= 0, and memory 418 shows the dictionary in the S = 0 state immediately before the replacement of the current dictionary with the standby dictionary (eg, change from state S = 0 to S = 1). Memory 420
Indicates a dictionary in the state of S = 2 after compression of the raw data stream 414.

【0127】辞書中の各記憶場所は状態フィールド(S
T)、コードフィールド(CODE)、および文字フィ
ールド(CHAR)に分割される。説明の目的上、CA
Mには文字ストリングの格納に使用可能な辞書位置は5
つしかない(たとえば、ADDR4−ADDR8)もの
と仮定する。アドレス位置ADDR0−ADDR3は単
一文字に割り当てられ、使用可能な辞書位置としては探
索されない。各状態フィールドのビットは値FREE=
[0:0](たとえば、FREE(S)=0)に初期設
定され、アドレスポインタNEXT_CODEは第1の
使用可能なCAM記憶場所(NEXT_CODE=AD
DR4)に初期設定される。
Each memory location in the dictionary has a status field (S
T), code field (CODE), and character field (CHAR). For purposes of explanation, CA
There are 5 dictionary positions available in M for storing character strings.
Assume that there is only one (eg, ADDR4-ADDR8). Address locations ADDR0-ADDR3 are assigned to a single character and are not searched for available dictionary locations. The bits in each status field have the value FREE =
Initialized to [0: 0] (eg, FREE (S) = 0), the address pointer NEXT_CODE is the first available CAM memory location (NEXT_CODE = AD).
Initially set to DR4).

【0128】生データストリーム414からの第1の入
力文字“R”は、アドレス位置ADDR0のデータエン
トリに一致し、OMEGAの第1の値(たとえば、OM
EGA=0)として用いられる。この圧縮システムはO
MEGAを次の入力文字“I”と結合し(OMEGA,
K)、メモリ416中のCODEフィールドおよびCH
ARフィールド中で“0I”との一致を探索する。同時
に、メモリ416中の対応するSTフィールドは探索し
て“1:0”あるいは“1:1”のビットの組合せ(た
とえば、状態S=0のCD(S)あるいはSD(S))
を求める。すべての記憶場所がFREEであり、前にメ
モリに書き込まれた“0I”ストリングはなかった。し
たがって、一致は発見されない。したがって、OMEG
Aの値(“0”)は圧縮されたストリーム422の第1
の文字として出力され、文字ストリング(CD(S)、
OMEGA、K)が第1のFREE記憶場所(ADDR
4)に書き込まれる。次に、文字“I”が符号化され、
OMEGAの次の値(たとえば、OMEGA=1)が生
成される。
The first input character "R" from the raw data stream 414 matches the data entry at address location ADDR0 and has a first value in OMEGA (eg, OM).
It is used as EGA = 0). This compression system is O
Combine MEGA with the next input character "I" (OMEGA,
K), CODE field and CH in memory 416
Search for a match with "0I" in the AR field. At the same time, the corresponding ST field in memory 416 is searched for a bit combination of "1: 0" or "1: 1" (eg CD (S) or SD (S) in state S = 0).
Ask for. All memory locations were FREE and there was no "0I" string previously written to memory. Therefore, no match is found. Therefore, OMEG
The value of A (“0”) is the first of the compressed stream 422.
Character string (CD (S),
OMEGA, K) is the first FREE memory location (ADDR
4) is written. Then the letter "I" is encoded,
The next value of OMEGA (eg, OMEGA = 1) is generated.

【0129】CAM辞書が探索され、FREE値を有す
る次のSTフィールドが求められ、そのアドレス位置が
アドレスポインタNEXT_CODE(たとえば、NE
XT_CODE=5)に割り当てられる。生データスト
リームからの次の文字(K=“N”)が次にOMEGA
と結合され(OMEGA=“1”)、CAMが探索され
“1N”文字ストリングが求められる。ここでもCAM
中に一致は発生せず、文字ストリング(CD(S)、
1、N)がアドレス位置ADDR5に書き込まれる。こ
の処理が同様に繰り返され、ある文字ストリングが前の
エントリのどれにも一致しないとわかった後次の使用可
能なアドレスのSTフィールド、CODEフィールドお
よびCHARフィールドへの書き込みが行われる。
The CAM dictionary is searched for the next ST field with the FREE value, and its address location is the address pointer NEXT_CODE (eg NE
XT_CODE = 5). The next character (K = "N") from the raw data stream is then OMEGA
Is combined with (OMEGA = "1"), the CAM is searched for a "1N" character string. CAM here too
No match occurs in the character string (CD (S),
1, N) is written to address location ADDR5. This process is repeated in the same way, after writing a character string that does not match any of the previous entries, the next available address is written to the ST, CODE and CHAR fields.

【0130】最初の文字ストリング/データエントリの
一致は生データストリームからの文字424(“I
N”)の組合せから発生する。文字“IN”は符号化さ
れたOMEGA,K文字ストリング(“IN”)からな
る。アドレス位置ADDR5のCODEフィールドとC
HARフィールドはそれぞれ“I”と“N”であり、状
態フィールドは前にST=CD(S)にセットされてい
るため、文字ストリングの一致が発生する。一致アドレ
スは新しいOMEGA値(OMEGA=5)として用い
られ、ADDR5のデータエントリは待機辞書に割り当
てられる(S=0のとき、ST=SD(S)=[1:
1])。次の文字Tが生データストリーム414から読
み出され、OMEGAと結合される。この新しいOME
GA,Kストリング(“5T”)は3つの文字を表わ
し、これが前述したように探索される。CAMには値
“5T”を有するOMEGA,Kストリングは存在しな
い。したがって、これは次の使用可能なアドレス位置
(ADDR8)に書き込まれる。符号化された文字
“5”は圧縮文字ストリーム422に出力され、“T”
の符号化された値は次のOMEGA値(OMEGA=
3)として用いられる。
The first character string / data entry match is the character 424 ("I") from the raw data stream.
N "). The character" IN "consists of the encoded OMEGA, K character string (" IN "). The CODE field at address location ADDR5 and C
Since the HAR fields are "I" and "N" respectively, and the status field was previously set to ST = CD (S), a character string match occurs. The matching address is used as a new OMEGA value (OMEGA = 5) and the data entry in ADDR5 is assigned to the standby dictionary (when S = 0, ST = SD (S) = [1:
1]). The next letter T is read from the raw data stream 414 and combined with OMEGA. This new OME
The GA, K string ("5T") represents three characters, which are searched for as described above. There is no OMEGA, K string with the value "5T" in the CAM. Therefore, it is written to the next available address location (ADDR8). The encoded character "5" is output to the compressed character stream 422 and is "T".
The encoded value of is the next OMEGA value (OMEGA =
Used as 3).

【0131】メモリ418は文字ストリング“5T”の
アドレス位置ADDR8への書き込み直後のCAMの状
態を示す。この処理はメモリ418を探索して次のFR
EE状態フィールドを求める。ADDR8がCAM現行
辞書の最後の使用可能な場所であると仮定すると、FR
EE状態フィールドは発見されない。これは、現行辞書
がいっぱいであり、システムがそれに応じて状態S=1
に変更されることを意味する。状態S=1では、状態フ
ィールドビット値[1:0]はFREE記憶場所を構成
し、ビット値[1:1]は現行辞書エントリ(図13参
照)を構成する。したがって、S=1の状態にある現行
辞書のすべての辞書位置は、アドレスADDR5の文字
ストリングを除いて、文字ストリングの格納に使用する
ことができる。状態が変化すると、アドレスポインタN
EXT_CODEは第1のFREE記憶場所にリセット
される(NEXT_CODE=4)。
The memory 418 shows the state of the CAM immediately after the writing of the character string "5T" to the address position ADDR8. This process searches the memory 418 and searches for the next FR.
Find the EE state field. Assuming ADDR8 is the last available location in the CAM current dictionary, FR
No EE status field is found. This is because the current dictionary is full and the system will accordingly state S = 1.
Means to be changed to. In state S = 1, the state field bit value [1: 0] constitutes a FREE memory location and the bit value [1: 1] constitutes the current dictionary entry (see FIG. 13). Therefore, all dictionary positions in the current dictionary in the S = 1 state can be used to store character strings except the character string at address ADDR5. When the status changes, the address pointer N
EXT_CODE is reset to the first FREE memory location (NEXT_CODE = 4).

【0132】S=1の状態にあるメモリ420について
説明すると、次の入力文字426(“I”)が生文字ス
トリーム414から抜き出され、次のOMEGA,K探
索のためにOMEGAと結合される(“3I”)。スト
リング“3I”は記憶場所ADDR7にあるが、この場
所の状態フィールドは現在FREEである。したがっ
て、一致は発見されず、符号化された値“3”が圧縮文
字ストリーム422中に文字438として出力される。
この文字ストリング(CD(S)、3、I)は記憶場所
ADDR4に書き込まれ、文字“I”は次のOMEGA
値(OMEGA=1)として符号化される。次のFRE
E状態フィールドのアドレス位置がアドレスポインタに
割り当てられる(NEXT_CODE=6)。アドレス
位置ADDR5は、その状態フィールドが状態S=0か
ら状態S=1への切り換え後の現行辞書エントリを表わ
すためスキップされることに注意しなければならない。
Explaining the memory 420 in the S = 1 state, the next input character 426 ("I") is extracted from the raw character stream 414 and combined with OMEGA for the next OMEGA, K search. ("3I"). The string "3I" is in storage location ADDR7, but the status field for this location is now FREE. Therefore, no match is found and the encoded value "3" is output in the compressed character stream 422 as character 438.
This character string (CD (S), 3, I) is written to memory location ADDR4 and the character "I" is the next OMEGA.
It is encoded as a value (OMEGA = 1). Next FRE
The address location of the E state field is assigned to the address pointer (NEXT_CODE = 6). Note that address location ADDR5 is skipped because its state field represents the current dictionary entry after switching from state S = 0 to state S = 1.

【0133】生データストリーム414からの次の入力
文字428は、新しい文字ストリング(“IN”)から
なるOMEGAと結合される。アドレス位置ADDR5
で一致が発生し、したがってOMEGAには一致アドレ
ス値が割り当てられ、アドレス位置ADDR5の状態フ
ィールドは待機辞書に割り当てられる。S=1の状態に
ある待機辞書のビットの割り当ては[0:1]である
(図13参照)。生データストリーム414からの次の
入力文字はOMEGAと結合され、探索処理が繰り返さ
れる。この処理は、生データストリーム414からのす
べての文字が圧縮されるまで現行辞書が“いっぱいにな
る”度にシステムの状態を変更し続ける。
The next input character 428 from the raw data stream 414 is combined with OMEGA consisting of a new character string ("IN"). Address location ADDR5
A match occurs, so OMEGA is assigned the match address value and the status field at address location ADDR5 is assigned to the standby dictionary. The bit allocation of the standby dictionary in the state of S = 1 is [0: 1] (see FIG. 13). The next input character from raw data stream 414 is combined with OMEGA and the search process is repeated. This process keeps changing the state of the system each time the current dictionary is "filled" until all characters from the raw data stream 414 have been compressed.

【0134】メモリ432は圧縮解除のための初期設定
の直後の圧縮解除の準備のできたメモリを示す。メモリ
434は状態S=0から状態S=1への変化の直前のS
=0の状態にあるシステムを示す。メモリ436は圧縮
文字ストリーム422の圧縮解除後のS=1の状態にあ
るデータエントリを示す。メモリ432中の辞書は、最
初の4つのアドレス位置がそれぞれ単一入力文字R、
I、NおよびTの符号化された値を有するように初期設
定される。ここでも、単一文字の復号はアルゴリズム的
に行うことができる。システムは状態S=0にセットさ
れ、すべての辞書状態レジスタはFREE(S)にセッ
トされる。アドレスポインタNEXT_CODEは第1
の使用可能な辞書位置(ADDR4)にセットされ、ア
ドレスポインタSAVE_CODEはゼロにセットされ
る。
Memory 432 represents memory ready for decompression immediately after initialization for decompression. The memory 434 stores S immediately before the change from the state S = 0 to the state S = 1.
Shows the system in the = 0 state. Memory 436 shows the data entry in the S = 1 state after decompression of the compressed character stream 422. The dictionary in memory 432 has a single input character R for the first four address positions,
Initialized to have I, N and T encoded values. Again, single character decoding can be done algorithmically. The system is set to state S = 0 and all dictionary state registers are set to FREE (S). The address pointer NEXT_CODE is the first
Address dictionary SAVE_CODE is set to zero, and the address pointer SAVE_CODE is set to zero.

【0135】圧縮解除が前述したように行われ、OME
GAはメモリ432へのアドレスポインタとして用いら
れる。圧縮文字ストリーム422からの第1の入力コー
ドはOMEGA値(OMEGA=0)を有する。この圧
縮解除システムは、値“0”を、たとえばその値が4よ
り小さいことをチェックすることによってルートコード
ワードと判定する。ADDR0のデータエントリ(たと
えば、“R”)はそれによって圧縮解除文字ストリーム
430中の第1の文字として出力される。アドレス位置
OMEGAの状態フィールドはSD(S)にセットされ
る。
Decompression is performed as described above and OME
GA is used as an address pointer to the memory 432. The first input code from the compressed character stream 422 has an OMEGA value (OMEGA = 0). The decompression system determines the value "0" as the root codeword, for example by checking that the value is less than 4. The ADDR0 data entry (eg, "R") is thereby output as the first character in the decompressed character stream 430. The status field at address location OMEGA is set to SD (S).

【0136】辞書は、圧縮解除されたコードワードから
の第1の文字K(たとえば、“R”)をアドレス位置S
AVE_CODEのCHARフィールドに書き戻すこと
によって再構築される。この場合“R”はADDR0の
CHARフィールドに書き直される。次に、文字ストリ
ング(CD(S)、0、R)がアドレス位置NEXT_
CODE(たとえば、ADDR4)に書き込まれ、SA
VE_CODEがNEXT_CODE(たとえば、NE
XT_CODE=5)の値にセットされる。次に、アド
レスポインタNEXT_CODEにメモリ434中の次
の空アドレスの値(たとえば、NEXT_CODE=
5)が割り当てられる。
The dictionary stores the first character K (eg, "R") from the decompressed codeword at address location S.
It is reconstructed by writing back to the CHAR_field of AVE_CODE. In this case, "R" is rewritten in the CHAR field of ADDR0. Next, the character string (CD (S), 0, R) is assigned to the address location NEXT_
Written to CODE (eg, ADDR4), SA
If VE_CODE is NEXT_CODE (for example, NE
XT_CODE = 5). Next, the address pointer NEXT_CODE is set to the value of the next empty address in the memory 434 (for example, NEXT_CODE =
5) is assigned.

【0137】文字“1”が圧縮文字ストリーム422か
ら読み出され、OMEGAの次の値としてはたらく。O
MEGAが圧縮解除され、復号された文字“I”は圧縮
解除文字ストリーム430に次の文字として出力され
る。アドレスADDR1のSTフィールドはSD(S)
にセットされ(たとえば、[1:1])、圧縮解除され
たOMEGA値からの第1の文字(“I”)がCHAR
フィールドのアドレス位置SAVE_CODE(ADD
R4)に書き込まれる。次に、文字ストリング(CD
(S)、1、I)がメモリ434のSTフィールド、C
ODEフィールド、CHARフィールドのアドレスNE
XT_CODE(たとえば、ADDR5)に書き込まれ
る。NEXT_CODEの値はSAVE_CODEの新
しい値として用いられる。次のFREE状態レジスタが
発見され、NEXT_CODEがそのアドレスにセット
される(NEXT_CODE=5)。
The character "1" is read from the compressed character stream 422 and serves as the next value for OMEGA. O
The MEGA is decompressed and the decoded character "I" is output to the decompressed character stream 430 as the next character. The ST field of the address ADDR1 is SD (S)
Is set to (eg, [1: 1]) and the first character (“I”) from the decompressed OMEGA value is CHAR.
Field address position SAVE_CODE (ADD
It is written in R4). Then the character string (CD
(S), 1, I are ST fields of the memory 434, C
Address NE of ODE field and CHAR field
Written to XT_CODE (eg, ADDR5). The value of NEXT_CODE is used as the new value of SAVE_CODE. The next FREE status register is found and NEXT_CODE is set to that address (NEXT_CODE = 5).

【0138】処理は圧縮文字ストリーム422からの符
号化された文字“2”および“3”に対して同様に続行
される。圧縮文字ストリーム422からの第1の“5”
は第1の非ルートコードワードであり、アドレスADD
R5のデータエントリは文字ストリング“IN”であ
る。したがって、ADDR5のCODEフィールド
(“1”)がCAMによって読み出される次の記憶場所
としてフィードバックされる。ADDR1の出力
(“I”)が前のCHARフィールド“N”とともにC
AMによって出力され、ADDR5のSTフィールドが
SD(0)にセットされる。圧縮されたコードワードか
らの第1の文字(“I”)は、メモリ位置ADDR7の
CHARフィールド(たとえば、SAVE_CODE=
7)に書き込まれる、文字ストリング(CD(S)、
5、I)がCAM位置NEXT_CODE(たとえば、
ADDR8)に書き込まれ、SAVE_CODEの値は
NEXT_CODEの値(たとえば、SAVE_COD
E=8)にセットされる。メモリ434はこの文字スト
リングのメモリへの書き込みの直後の現行辞書の状態を
示す。
Processing continues similarly for encoded characters "2" and "3" from compressed character stream 422. First "5" from compressed character stream 422
Is the first non-root codeword and has the address ADD
The data entry for R5 is the character string "IN". Therefore, the CODE field ("1") of ADDR5 is fed back as the next storage location read by the CAM. The output of ADDR1 (“I”) is C along with the previous CHAR field “N”.
Output by AM, ST field of ADDR5 is set to SD (0). The first character ("I") from the compressed codeword is the CHAR field at memory location ADDR7 (eg, SAVE_CODE =
7) written in the character string (CD (S),
5, I) is the CAM position NEXT_CODE (eg,
ADDR8) and the value of SAVE_CODE is the value of NEXT_CODE (eg, SAVE_CODE
E = 8) is set. Memory 434 shows the state of the current dictionary immediately after writing this character string to memory.

【0139】次の探索は、FREE値を有する状態フィ
ールドがないことを示す。したがって、システムは状態
S=1に切り換わり、状態レジスタ値は図13に示すよ
うに再割り当てされる。メモリ436ついて説明する
と、アドレスポインタNEXT_CODEには第1のF
REE記憶場所(ADDR4)が割り当てられる。アド
レス位置ADDR0−ADDR3およびADDR5は現
在は現行辞書のエントリであり、アドレス位置ADDR
4およびADDR6−ADDR8はS=1の状態にある
FREE位置を構成する。圧縮文字ストリーム422か
らの文字438はOMEGAにセットされ(OMEGA
=3)、新しい圧縮解除状態S=1において圧縮解除さ
れる。復号された文字“T”は圧縮解除文字ストリーム
430に出力され、ADDR3のSTフィールドには状
態S=1に対する値SD(S)(たとえば、[1:
0])が割り当てられる。SAVE_CODEはADD
R8を指示し、文字“T”がメモリ436中のADDR
8のCHARフィールドに書き込まれる。文字ストリン
グ(CD(S)、3、T)がアドレス位置ADDR4に
書き込まれ、SAVE_CODEには値NEXT_CO
DEが割り当てられる。次のFREE辞書位置はADD
R6であり、したがってアドレスポインタNEXT_C
ODEに割り当てられる。この処理は、圧縮文字ストリ
ーム422中のすべての文字が圧縮解除されるまで同様
に継続する。
The next search shows that there is no status field with a FREE value. Therefore, the system switches to state S = 1 and the state register values are reallocated as shown in FIG. To explain the memory 436, the first F is stored in the address pointer NEXT_CODE.
The REE storage location (ADDR4) is allocated. Address locations ADDR0-ADDR3 and ADDR5 are currently entries in the current dictionary and address locations ADDR
4 and ADDR6-ADDR8 constitute the FREE position in the S = 1 state. Character 438 from compressed character stream 422 is set to OMEGA (OMEGA
= 3), it is decompressed in the new decompression state S = 1. The decoded character "T" is output to the decompressed character stream 430, and the ST field of ADDR3 has the value SD (S) for the state S = 1 (eg, [1:
0]) is assigned. SAVE_CODE is ADD
R8 is designated, and the character "T" is ADDR in the memory 436.
8 CHAR fields. The character string (CD (S), 3, T) is written to address location ADDR4 and SAVE_CODE has the value NEXT_CO
DE is assigned. Next FREE dictionary position is ADD
R6 and therefore address pointer NEXT_C
Assigned to ODE. This process continues similarly until all the characters in the compressed character stream 422 have been decompressed.

【0140】従来のLZ2の実施態様では、コードは順
次割り当てられ、単一文字ストリングにはC0 、C0
1、C0 +2、…、C0 +(2m −1)の順でコードが
割り当てられ、C0 はある小さな定数(たとえば、C0
=0である)。この新しい複数文字ストリングにはコー
ドC0 +2m 、C0 +(2m +1)、…、2b −2、2
b −1がこの順で割り当てられており、それぞれの文字
ストリングはCAM中の順次のアドレス値を有する。し
たがって、ストリングへのコードの割り当ては、カウン
タをC0 +2m に初期設定し、それを新しい辞書ストリ
ングが作成される度にインクリメントすることによって
簡単に行うことができる。これによって、この圧縮器
は、辞書リセットの後に長さm+1のコードを用い、続
いてこの出力コードの長さを辞書のエントリ数が次の2
の累乗に達する度に1ビットだけ長くすることによって
可変長の出力コードを用いることができる。したがっ
て、出力コードの長さは(m+1)とbの間で変動し、
ここで2b は辞書の最大サイズである。これによって圧
縮比を多少改善することができる。これは、圧縮器が辞
書アドレスコードが短ければより短い出力コードを用い
るためである。この圧縮解除器は、その辞書を圧縮器と
同期したステップで構築し、圧縮コードの予想される長
さを追跡することができる。
In the conventional LZ2 implementation, the codes are assigned sequentially, C 0 , C 0 + for a single character string.
Codes are assigned in the order of 1, C 0 +2, ..., C 0 + (2 m −1), where C 0 is a small constant (eg, C 0
= 0). This new for multiple character strings codes C 0 +2 m, C 0 + (2 m +1), ..., 2 b -2,2
b- 1 are assigned in this order, and each character string has a sequential address value in the CAM. Therefore, assigning a code to a string can be done simply by initializing the counter to C 0 +2 m and incrementing it each time a new dictionary string is created. This causes the compressor to use a code of length m + 1 after the dictionary reset, and then the length of this output code to be the next 2 entries in the dictionary.
A variable length output code can be used by lengthening it by one bit each time the power of is reached. Therefore, the length of the output code varies between (m + 1) and b,
Here, 2 b is the maximum size of the dictionary. This can slightly improve the compression ratio. This is because the compressor uses a shorter output code if the dictionary address code is shorter. The decompressor can build its dictionary in steps synchronized with the compressor to track the expected length of the compressed code.

【0141】図16に示す処理において、新しい文字ス
トリングの符号化された値は第1のFREE辞書位置の
アドレスである。辞書切り換えの直後に、CDは必ずし
も連続的ではないCAM中の位置を有する前の待機辞書
からの文字ストリングからなる。これらのストリング
は、切り換え後、その古いアドレスしたがってコードを
保存する。したがって、FREEの探索によって返され
たアドレス(コード)は連続するシーケンスを形成しな
い。また、0≦C≦2b −1の範囲のそれぞれの符号化
された文字ストリングCは潜在的には辞書リセット後直
ちに使用可能である。
In the process shown in FIG. 16, the encoded value of the new character string is the address of the first FREE dictionary location. Immediately after the dictionary switch, the CD consists of a character string from the previous standby dictionary with positions in the CAM that are not necessarily contiguous. These strings retain their old address and hence code after switching. Therefore, the addresses (codes) returned by the FREE search do not form a continuous sequence. Also, each encoded character string C in the range 0 ≦ C ≦ 2 b −1 is potentially available immediately after dictionary reset.

【0142】その結果、出力ストリームは固定長のコー
ドを用いなければならない。しかし、これが圧縮比に与
える悪影響はさほど大きくない。CDは辞書リセットの
後部分的に満たされた状態で始動するため、CD中のコ
ードの順序が変わっても、コードを表現するのに要する
ビット数は最大ビット(b)とさほど違わない。たとえ
ば、実験によれば、現行辞書は通常最大容量の1/4か
ら1/2の間で始動することがわかった。これは、コー
ドが連続する順序に配列されていても切り換えの後には
b−1ビットが必要であることを意味する。しかし、第
1の現行辞書/待機辞書(CD、SD)の構築中に可変
長のコードを用いることができる。あるいは、現行辞書
を各リセットの後に順序換えすることができる。
As a result, the output stream must use a fixed length code. However, the adverse effect of this on the compression ratio is not so great. Since the CD starts in a partially full state after a dictionary reset, the number of bits required to represent the code is not much different from the maximum bit (b), even if the order of the codes in the CD changes. For example, experiments have shown that current dictionaries typically start at between 1/4 and 1/2 of maximum capacity. This means that even if the codes are arranged in consecutive order, b-1 bits are required after switching. However, variable length codes can be used during construction of the first current / standby dictionary (CD, SD). Alternatively, the current dictionary can be reordered after each reset.

【0143】圧縮結果 CAM複数辞書システムの圧縮および圧縮解除処理は、
ソースコード、実行可能なオブジェクトコード、ASC
IIデータファイル、テストファイル、ビットマップ画
像ファイル等を含むさまざまな種類のデータに適用され
た。同じファイルが可変長出力コードを用いた従来のL
ZW方式で圧縮された。この圧縮の全体的な結果を図2
1に示す。線440はこのCAM複数辞書システムの圧
縮比の図形的表現であり、線442は標準LZWアルゴ
リズムの圧縮比を示す。線440および442は圧縮比
(元のファイルサイズ/圧縮されたファイルサイズ)
を、b、すなわち出力コード中の最大ビット数の関数
(すなわち、辞書サイズのlog2 )として示す。
Compression Results The compression and decompression process of the CAM multiple dictionary system is
Source code, executable object code, ASC
II has been applied to various types of data including data files, test files, bitmap image files, etc. The same file is a conventional L using a variable length output code
Compressed by ZW method. Figure 2 shows the overall result of this compression.
Shown in 1. Line 440 is a graphical representation of the compression ratio for this CAM multiple dictionary system and line 442 shows the compression ratio for the standard LZW algorithm. Lines 440 and 442 are compression ratios (original file size / compressed file size)
As b, a function of the maximum number of bits in the output code (ie, dictionary size log 2 ).

【0144】このCAM/待機辞書法の利点を強調する
ために、図中の破線444は12ビットLZW圧縮器に
よって達成される圧縮比を示す。同じ圧縮比を達成する
CAM複数辞書処理のbの値を次に示す。図21に示す
ように、このCAM複数辞書システムは、標準LZW圧
縮器の辞書エントリ数の1/2から1/4で同じ圧縮比
を提供する(たとえば、1ビット少なくなると必要なメ
モリスペースは1/2となる)。この圧縮比は、従来の
LZW圧縮器データエントリよりわずか1あるいは2ビ
ット長いだけのCAM辞書エントリを用いて達成され
る。
To emphasize the advantages of this CAM / standby dictionary, dashed line 444 in the figure shows the compression ratio achieved by the 12-bit LZW compressor. The value of b for CAM multiple dictionary processing that achieves the same compression ratio is shown below. As shown in FIG. 21, this CAM multiple dictionary system provides the same compression ratio at 1/2 to 1/4 the number of dictionary entries in a standard LZW compressor (eg, 1 bit less requires less memory space than 1). / 2). This compression ratio is achieved using CAM dictionary entries that are only 1 or 2 bits longer than conventional LZW compressor data entries.

【0145】わかりやすく言えば、待機辞書法の最小限
の実施態様を説明した。圧縮比を上げるために、多くの
変更を加えることができる。たとえば、図18および図
19に示す圧縮/圧縮解除処理は、入力アルファベット
中の1組の全単一文字ストリングによる辞書の初期設定
を前提としている。これに代わって、前述したように、
空白あるいは中間的初期設定を用いることもできる。中
間的初期設定と待機辞書の組み合わせに基づく処理で
も、非常に小さな辞書を用いて高い圧縮比を得ることが
できる。このシステムの別の実施法では、現行辞書がい
っぱいになった直後の辞書の切り換えを行わない。その
代わりに、現行辞書が凍結され、辞書切り換えは圧縮比
に基づく(すなわち、圧縮比はあるレベルを下回る)。
現行辞書を凍結しながら、待機辞書を凍結することもで
きる。あるいは、次の辞書切り換えまで構築し続けるこ
とができる。
For simplicity, a minimal implementation of the standby dictionary has been described. Many changes can be made to increase the compression ratio. For example, the compression / decompression process shown in FIGS. 18 and 19 is premised on initializing the dictionary with a set of all single character strings in the input alphabet. Instead of this, as mentioned above,
Blanks or intermediate defaults can also be used. Even in processing based on a combination of intermediate initialization and standby dictionary, a high compression ratio can be obtained using a very small dictionary. Another implementation of this system does not switch dictionaries immediately after the current dictionary is full. Instead, the current dictionary is frozen and dictionary switching is based on compression ratio (ie, compression ratio is below a certain level).
It is also possible to freeze the standby dictionary while freezing the current dictionary. Alternatively, it can continue building until the next dictionary switch.

【0146】待機辞書法に特有の他の変更態様は、図1
3に示す状態フィールド値INVを利用する。現在は、
INVは辞書エントリには用いられない。INVを用い
てSD2で表わす第2レベルの待機辞書を定義すること
ができる。すでにSDとラベルの付けられたエントリ
は、2回以上参照されたとき、SD2(現在のINV値
の新しい名称)に変更される。辞書切り換え時に、CD
エントリはFREEになり、SDエントリはCDエント
リになり、SD2エントリはSDエントリになる。第1
の待機辞書(SD)はSD2中の文字ストリングのセッ
トから始動し、新しいSD2は何もない状態から始動す
る。この変更は当該技術に精通する者には、図16に示
すシステムに簡単に実施することができる。
Another modification specific to the standby dictionary method is shown in FIG.
The state field value INV shown in 3 is used. Currently,
INV is not used for dictionary entries. INV can be used to define a second level standby dictionary denoted SD2. Entries already labeled SD are renamed to SD2 (new name of the current INV value) when referenced more than once. CD when switching dictionaries
The entry becomes FREE, the SD entry becomes a CD entry, and the SD2 entry becomes an SD entry. First
The standby dictionary (SD) of the SD2 starts from the set of character strings in SD2 and the new SD2 starts from the empty state. This modification can be easily implemented in the system shown in FIG. 16 by those skilled in the art.

【0147】[0147]

【発明の効果】以上、現行圧縮辞書と並行して待機辞書
を構築するレンペル−ジブ(Lempel−Ziv)デ
ータ圧縮アルゴリズムの変更態様について説明した。現
行辞書がいっぱいになったとき、待機辞書がそれに置き
換わり、新しい待機辞書が始動する。待機辞書は主辞書
の文字ストリングの選択された部分集合を含み、これに
よって両方の辞書を同じメモリバッファ上で実施しうる
ようにしている。このシステムの好適な実施態様では、
連想メモリモジュールが用いられる。処理時間と回路の
複雑性を少なくするために、辞書切り換えは電源投入後
の辞書の初期設定を不要にする簡単な状態遷移方式に基
づく。したがって、このCAM複数辞書圧縮器/圧縮解
除器システムは、少ないメモリを用い、制御回路の複雑
性の増大を少なくしながら、従来のデータ圧縮法と同等
の圧縮比を達成する。
As described above, the modification of the Lempel-Ziv data compression algorithm for constructing the standby dictionary in parallel with the current compression dictionary has been described. When the current dictionary is full, the standby dictionary replaces it and a new standby dictionary is started. The standby dictionary contains a selected subset of the character strings of the main dictionary, allowing both dictionaries to be implemented on the same memory buffer. In a preferred embodiment of this system,
An associative memory module is used. To reduce processing time and circuit complexity, dictionary switching is based on a simple state transition scheme that eliminates the need for dictionary initialization after power up. Therefore, the CAM multiple dictionary compressor / decompressor system uses less memory and achieves a compression ratio comparable to conventional data compression methods while reducing the increase in control circuit complexity.

【0148】以上、この発明の原理を実施例を用いて説
明し、図示したが、この発明はかかる原理から逸脱する
ことなく、その構成や細部に変更を加えうることは明ら
かである。クレームの精神と範囲に包含されるかかる変
更態様のすべてを特許請求するものである。
Although the principle of the present invention has been described and illustrated with the embodiments, it is obvious that the present invention can be modified in its configuration and details without departing from the principle. We claim all such modifications that fall within the spirit and scope of the claims.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明による現行辞書と待機辞書を有するデー
タ圧縮システムのデターフロー図である。
FIG. 1 is a data flow diagram of a data compression system having a current dictionary and a standby dictionary according to the present invention.

【図2】図1の待機辞書を用いるデータ圧縮アルゴリズ
ムの一例を示す詳細なデータフロー図である。
FIG. 2 is a detailed data flow diagram showing an example of a data compression algorithm using the standby dictionary of FIG.

【図3】本発明のデータ圧縮/圧縮解除システムの一つ
の実施例におけるブロック図である。
FIG. 3 is a block diagram of one embodiment of a data compression / decompression system of the present invention.

【図4】本発明のデータ圧縮/圧縮解除システムの連想
メモリを用いた実施例のブロック図である。
FIG. 4 is a block diagram of an embodiment using an associative memory of the data compression / decompression system of the present invention.

【図5】図4に示したメモリと論理回路の詳細なブロッ
ク図である。
5 is a detailed block diagram of the memory and logic circuit shown in FIG. 4. FIG.

【図6】図5に示したアドレス復合器の自動更新回路の
論理図である。
6 is a logic diagram of an automatic update circuit of the address decompressor shown in FIG. 5. FIG.

【図7】本発明の連想メモリを用いたデータ圧縮/圧縮
解除の格納/検索の一般的方法を示すデータフロー図で
ある。
FIG. 7 is a data flow diagram illustrating a general method of data compression / decompression storage / retrieval using the associative memory of the present invention.

【図8】図7の波線ブロックの詳細なデータフロー図で
ある。
8 is a detailed data flow diagram of the broken line block of FIG. 7. FIG.

【図9】図7の圧縮解除回路の詳細なフロー図である。9 is a detailed flow diagram of the decompression circuit of FIG. 7.

【図10】図8および図9の圧縮および圧縮解除アルゴ
リズムを図示したものである。
FIG. 10 illustrates the compression and decompression algorithms of FIGS. 8 and 9.

【図11】本発明の連想メモリ複数辞書圧縮/圧縮解除
システムのブロック図である。
FIG. 11 is a block diagram of an associative memory multiple dictionary compression / decompression system of the present invention.

【図12】図11に示す連想メモリの各辞書エントリに
含まれる異なるエントリを示す図である。
FIG. 12 is a diagram showing different entries included in each dictionary entry of the associative memory shown in FIG. 11.

【図13】図11に示すSTフィールドの各圧縮/圧縮
解除の状態を示す図である。
FIG. 13 is a diagram showing each compressed / decompressed state of the ST field shown in FIG. 11.

【図14】連想メモリ複数辞書圧縮/圧縮解除システム
の変更状態を示す図である。
FIG. 14 is a diagram showing a modified state of the associative memory multiple dictionary compression / decompression system.

【図15】圧縮器/圧縮解除器の状態を変化させるため
の簡単なハードウエアによる論理図である。
FIG. 15 is a simple hardware logic diagram for changing the state of the compressor / decompressor.

【図16】図11に示す連想メモリ複数辞書圧縮/圧縮
解除システムの詳細な回路図である。
16 is a detailed circuit diagram of the associative memory multiple dictionary compression / decompression system shown in FIG. 11. FIG.

【図17】図16に示すSTパターンジェネレータ33
8の詳細な回路図である。
17 is an ST pattern generator 33 shown in FIG.
9 is a detailed circuit diagram of FIG.

【図18】待機辞書を有する連想メモリを用いたデータ
圧縮の一般的方法を示すデータフロー図である。
FIG. 18 is a data flow diagram showing a general method of data compression using an associative memory having a standby dictionary.

【図19】待機辞書を有する連想メモリを用いたデータ
の圧縮解除の一般的方法を示すデータフロー図である。
FIG. 19 is a data flow diagram showing a general method for decompressing data using an associative memory with a standby dictionary.

【図20】図18および図19の圧縮および圧縮解除ア
ルゴリズムを示す図である。
FIG. 20 is a diagram showing the compression and decompression algorithms of FIGS. 18 and 19;

【図21】連想メモリ複数辞書システムおよび標準LZ
W圧縮システムの圧縮結果を示すグラフ図である。
FIG. 21: Associative memory multiple dictionary system and standard LZ
It is a graph figure which shows the compression result of a W compression system.

【符号の説明】[Explanation of symbols]

50 データ圧縮/圧縮解除集積回路 52 データ圧縮/圧縮解除エンジン 54 インタフェース回路 56,58 マルチプレクサ 68 アドレスジェネレータ 76 スイッチコントローラ 84,86 トランシーバ 88,90 メモリ 92,96 待機状態フィールド 94,98 データエントリフィールド 136 連想メモリ圧縮/圧縮解除回路 138,148 インタフェース 142 圧縮/圧縮解除エンジン 144 ストリングテーブルメモリ 146 制御論理 150,140 データバッファ 152 プロセッサインタフェース 50 data compression / decompression integrated circuit 52 data compression / decompression engine 54 interface circuit 56,58 multiplexer 68 address generator 76 switch controller 84,86 transceiver 88,90 memory 92,96 standby state field 94,98 data entry field 136 associative Memory compression / decompression circuit 138, 148 interface 142 Compression / decompression engine 144 String table memory 146 Control logic 150, 140 Data buffer 152 Processor interface

───────────────────────────────────────────────────── フロントページの続き (72)発明者 カール・ビー・ランツ アメリカ合衆国オレゴン州コーヴァリス ノース・イースト・サーティーフォース・ ストリート 640 ─────────────────────────────────────────────────── ———————————————————————————————————————— Inventor Karl Bee Lantz Corvallis, Oregon, USA North East Thirty Force Street 640

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】 データシーケンスからデータを蓄積する
ための有限数の記憶場所(94,98)を各々に有する
第1と第2の辞書を含むメモリ装置(88,90)と予
め決定された圧縮アルゴリズムに従って第1の辞書への
書き込みおよび読み出しを行なうデータ圧縮エンジン
(50)と該データ圧縮エンジンは、符号化されたデー
タストリングを作成するために入力データを圧縮/圧縮
解除するための手段と第1の辞書中の記憶場所のデータ
エントリを読み出し・書き込むための手段(52)とを
含み、データ圧縮・圧縮解除エンジンにより第1の辞書
へ書き込まれたデータエントリの部分集合を第2の辞書
へ書き込む論理手段(54)とからなる辞書ベース圧縮
/圧縮解除装置。
1. A memory device (88,90) including first and second dictionaries each having a finite number of memory locations (94,98) for storing data from a data sequence and a predetermined compression. A data compression engine (50) for writing to and reading from the first dictionary according to an algorithm and means for compressing / decompressing the input data to create an encoded data string and a first. Means (52) for reading and writing the data entry of the memory location in one dictionary to the second dictionary by a subset of the data entries written to the first dictionary by the data compression and decompression engine. A dictionary-based compression / decompression device comprising writing logic means (54).
JP15443993A 1993-06-01 1993-06-01 Method for compressing and decompressing data in dictionary-based memory Expired - Fee Related JP3171510B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15443993A JP3171510B2 (en) 1993-06-01 1993-06-01 Method for compressing and decompressing data in dictionary-based memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15443993A JP3171510B2 (en) 1993-06-01 1993-06-01 Method for compressing and decompressing data in dictionary-based memory

Publications (2)

Publication Number Publication Date
JPH07288475A true JPH07288475A (en) 1995-10-31
JP3171510B2 JP3171510B2 (en) 2001-05-28

Family

ID=15584224

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15443993A Expired - Fee Related JP3171510B2 (en) 1993-06-01 1993-06-01 Method for compressing and decompressing data in dictionary-based memory

Country Status (1)

Country Link
JP (1) JP3171510B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782018B2 (en) 2011-06-03 2014-07-15 Samsung Electronics Co., Ltd. Storage device and data processing device utilizing determined dictionary compression
US11222068B2 (en) 2017-04-20 2022-01-11 Fujitsu Limited Information processing device, information processing method, and data structure

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782018B2 (en) 2011-06-03 2014-07-15 Samsung Electronics Co., Ltd. Storage device and data processing device utilizing determined dictionary compression
US11222068B2 (en) 2017-04-20 2022-01-11 Fujitsu Limited Information processing device, information processing method, and data structure

Also Published As

Publication number Publication date
JP3171510B2 (en) 2001-05-28

Similar Documents

Publication Publication Date Title
US5373290A (en) Apparatus and method for managing multiple dictionaries in content addressable memory based data compression
US5455576A (en) Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5485526A (en) Memory circuit for lossless data compression/decompression dictionary storage
US5243341A (en) Lempel-Ziv compression scheme with enhanced adapation
US5175543A (en) Dictionary reset performance enhancement for data compression applications
JP3367832B2 (en) Compression device, compression method, and context providing device
CA1223965A (en) High speed data compression and decompression apparatus and method
JP2713369B2 (en) Data compression apparatus and method
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US5179378A (en) Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US5281967A (en) Data compression/decompression method and apparatus
US4906991A (en) Textual substitution data compression with finite length search windows
US5058144A (en) Search tree data structure encoding for textual substitution data compression systems
US6614368B1 (en) Data compression method and apparatus utilizing cascaded character tables
EP0729237A2 (en) Adaptive multiple dictionary data compression
US6906645B2 (en) Data compression having more effective compression
JPH0879092A (en) Mevhod for compressing and compression-releasing data and device therefor
US5686912A (en) Data compression method and apparatus with optimized transitions between compressed and uncompressed modes
CA2446952C (en) Character table implemented data compression method and apparatus
KR20020070504A (en) Data compression having improved compression speed
JP3171510B2 (en) Method for compressing and decompressing data in dictionary-based memory
JPH01314430A (en) Single item encoding of start, step and stop for compacting data
US6788226B1 (en) Data compressor with string code reassignment utilizing switched input coincidence elements
US6756923B1 (en) Data compressor utilizing switched input coincidence elements arranged in virtual levels

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090323

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100323

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100323

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110323

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees