JPH07297728A - パターン一致を探索するための方法およびシステム - Google Patents
パターン一致を探索するための方法およびシステムInfo
- Publication number
- JPH07297728A JPH07297728A JP7050774A JP5077495A JPH07297728A JP H07297728 A JPH07297728 A JP H07297728A JP 7050774 A JP7050774 A JP 7050774A JP 5077495 A JP5077495 A JP 5077495A JP H07297728 A JPH07297728 A JP H07297728A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- character
- match
- characters
- pattern
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【目的】 新キャラクタの列と最近の過去に処理された
列内のキャラクタとの間の最長パターン一致を確認する
際の1サイクルあたりのキャラクタ数を増加する。 【構成】 本発明によれば、パイプライン式並行データ
フロー・モデルを使用し、短縮された時間でキャラクタ
列の間のKキャラクタ毎サイクルの最大長パターン一致
を確認するための手段および方法が提供される。このデ
ータフロー・モデルでは、一貫した方向での列間の再帰
的な網羅的貪欲比較照合によって、最長一致の解析がも
たらされる。この再帰は、固定長K、一致長Lおよび追
跡変数Jの間の関係によって制約され、この制約は、あ
る列から別の列への接頭部拡張と列内パターン一致を確
認するそれ以降の再帰を支配する。1時に1キャラク
タ、2キャラクタまたは3キャラクタに等しいKを処理
する実施例が可能である。
列内のキャラクタとの間の最長パターン一致を確認する
際の1サイクルあたりのキャラクタ数を増加する。 【構成】 本発明によれば、パイプライン式並行データ
フロー・モデルを使用し、短縮された時間でキャラクタ
列の間のKキャラクタ毎サイクルの最大長パターン一致
を確認するための手段および方法が提供される。このデ
ータフロー・モデルでは、一貫した方向での列間の再帰
的な網羅的貪欲比較照合によって、最長一致の解析がも
たらされる。この再帰は、固定長K、一致長Lおよび追
跡変数Jの間の関係によって制約され、この制約は、あ
る列から別の列への接頭部拡張と列内パターン一致を確
認するそれ以降の再帰を支配する。1時に1キャラク
タ、2キャラクタまたは3キャラクタに等しいKを処理
する実施例が可能である。
Description
【0001】
【産業上の利用分野】本発明は、適応辞書キャラクタ列
(ストリング)圧縮または、たとえばZiv-Lempel(L
Z)1977タイプの圧縮コーダによって表現される圧
縮などで使用するための1対のキャラクタ列の間の最長
パターン一致を確認するための時間の最小化に関する。
(ストリング)圧縮または、たとえばZiv-Lempel(L
Z)1977タイプの圧縮コーダによって表現される圧
縮などで使用するための1対のキャラクタ列の間の最長
パターン一致を確認するための時間の最小化に関する。
【0002】
【従来の技術】この節では、辞書ベース圧縮のパターン
照合態様に重点を置いて、圧縮方法を簡単に要約する。
従来技術では、部分列(サブストリング)の照合をデー
タフロー分析における問題として見ることを含めて、パ
ターン照合の高速化が試みられてきた。
照合態様に重点を置いて、圧縮方法を簡単に要約する。
従来技術では、部分列(サブストリング)の照合をデー
タフロー分析における問題として見ることを含めて、パ
ターン照合の高速化が試みられてきた。
【0003】本発明の目的に関して、用語「キャラク
タ」は、コードブック内の情報の標準単位または「バイ
ト」、「ニブル」、「ワード」などと同じ意味で使用さ
れる。
タ」は、コードブック内の情報の標準単位または「バイ
ト」、「ニブル」、「ワード」などと同じ意味で使用さ
れる。
【0004】<統計的圧縮方法および辞書圧縮方法>圧
縮とは、データの表現を最小にするためのデータの符号
化である。無損失(Lossless)圧縮とは、原テキストまた
は原キャラクタ列が圧縮された列から得られ、逆も同様
であるような完全に可逆的な機能である。当技術分野で
は、統計的方法、辞書方法または混合方法のいずれかが
使用される。
縮とは、データの表現を最小にするためのデータの符号
化である。無損失(Lossless)圧縮とは、原テキストまた
は原キャラクタ列が圧縮された列から得られ、逆も同様
であるような完全に可逆的な機能である。当技術分野で
は、統計的方法、辞書方法または混合方法のいずれかが
使用される。
【0005】統計的圧縮方法では、キャラクタ単位で、
長いデータ列をより短い列に置換する。この圧縮プロセ
スでは、キャラクタの列が、識別可能な順序のマルコフ
(確率的)ソースによって生成されることと、そのソー
スを正確にモデル化でき、コード化できることを前提と
している。「マルコフ・ソース」とは、記号またはキャ
ラクタの出現確率とその条件確率(記号間影響(inters
ymbol influence)と称する場合もある)をなんらかの
信頼性のある一貫した形でソースから計算できるか推論
できる、キャラクタ列生成機構を指す。これに関して、
モデルとは、テキストを生成する過程の近似である。統
計的圧縮では、モデルを使用して、テキスト列内のキャ
ラクタの出現の予測を形成する。テキストは、入力キャ
ラクタに対するコードの置換の結果として圧縮される。
これに関連して、コードの長さは、そのキャラクタの出
現の推定確率の逆関数として決定される。
長いデータ列をより短い列に置換する。この圧縮プロセ
スでは、キャラクタの列が、識別可能な順序のマルコフ
(確率的)ソースによって生成されることと、そのソー
スを正確にモデル化でき、コード化できることを前提と
している。「マルコフ・ソース」とは、記号またはキャ
ラクタの出現確率とその条件確率(記号間影響(inters
ymbol influence)と称する場合もある)をなんらかの
信頼性のある一貫した形でソースから計算できるか推論
できる、キャラクタ列生成機構を指す。これに関して、
モデルとは、テキストを生成する過程の近似である。統
計的圧縮では、モデルを使用して、テキスト列内のキャ
ラクタの出現の予測を形成する。テキストは、入力キャ
ラクタに対するコードの置換の結果として圧縮される。
これに関連して、コードの長さは、そのキャラクタの出
現の推定確率の逆関数として決定される。
【0006】辞書方法では、連続するキャラクタのグル
ープ(句)を、ある辞書への指標と置換することによっ
て圧縮を達成する。これに関して、キャラクタは、アル
ファベットのメンバであり、アルファベットとは、テキ
スト内で出現する可能性がある全ての可能なキャラクタ
の集合である。圧縮は、辞書にトークンのリストが含ま
れ、このトークンが、平均するとそれによってコード化
されるキャラクタ列(句)より少ない空間を占めるよう
に選択されているという事実によって達成される。
ープ(句)を、ある辞書への指標と置換することによっ
て圧縮を達成する。これに関して、キャラクタは、アル
ファベットのメンバであり、アルファベットとは、テキ
スト内で出現する可能性がある全ての可能なキャラクタ
の集合である。圧縮は、辞書にトークンのリストが含ま
れ、このトークンが、平均するとそれによってコード化
されるキャラクタ列(句)より少ない空間を占めるよう
に選択されているという事実によって達成される。
【0007】<適応辞書ポインタ・ベース符号化、Ziv-
Lempelコードの諸態様および設計トレードオフ>適応符
号化とは、圧縮方法のうち、辞書(符号化に使用される
モデル)が、既にコード化されているテキストに基づく
種類のものを指す。これは、「動的符号化」とも称す
る。適応符号化の原理は、Ziv-Lempel(LZ1977)
適応辞書符号化に見られる。
Lempelコードの諸態様および設計トレードオフ>適応符
号化とは、圧縮方法のうち、辞書(符号化に使用される
モデル)が、既にコード化されているテキストに基づく
種類のものを指す。これは、「動的符号化」とも称す
る。適応符号化の原理は、Ziv-Lempel(LZ1977)
適応辞書符号化に見られる。
【0008】LZ1977符号化においては、句または
キャラクタのサブシーケンスが、そのテキスト列内の前
の出現(occurrence)に対するポインタとして符号化さ
れる。この方法で圧縮されたテキストの復号には、ポイ
ンタを、そのポインタが参照する復号済みのテキストに
単純に置換することだけが必要である。
キャラクタのサブシーケンスが、そのテキスト列内の前
の出現(occurrence)に対するポインタとして符号化さ
れる。この方法で圧縮されたテキストの復号には、ポイ
ンタを、そのポインタが参照する復号済みのテキストに
単純に置換することだけが必要である。
【0009】現キャラクタがある列に前に出現したかど
うかを確認するためには、近い過去のキャラクタの一部
と現キャラクタを比較するか、テーブル内でキャラクタ
を表引きするかのいずれかが必要である。単一のポイン
タによって参照できる近い過去の列との一致を見出すこ
とのできる現キャラクタの列が長ければ長いほど、圧縮
率が高くなる。比較の数は、比較される列の長さが増え
るにつれて増加する。
うかを確認するためには、近い過去のキャラクタの一部
と現キャラクタを比較するか、テーブル内でキャラクタ
を表引きするかのいずれかが必要である。単一のポイン
タによって参照できる近い過去の列との一致を見出すこ
とのできる現キャラクタの列が長ければ長いほど、圧縮
率が高くなる。比較の数は、比較される列の長さが増え
るにつれて増加する。
【0010】適応辞書圧縮は、ポインタによって後ろ向
きに参照できる長さの限界と、この限界内で部分列のど
れかがポインタの目標になりうるかとのトレードオフを
表す。ポインタの到達範囲は、無制限に増大するウィン
ドウとするか、固定サイズのウィンドウとすることがで
きる。固定サイズ・ウィンドウの場合、ポインタは、所
定の数の前キャラクタに制限される。ウィンドウが大き
ければ大きいほど、比較の数が多くなり、パターン一致
が見つかる確度が高くなる。しかし、ウィンドウ・サイ
ズが増大するにつれて、コード化が遅くなり、ポインタ
が大きくなるので圧縮率が低下する可能性がある。
きに参照できる長さの限界と、この限界内で部分列のど
れかがポインタの目標になりうるかとのトレードオフを
表す。ポインタの到達範囲は、無制限に増大するウィン
ドウとするか、固定サイズのウィンドウとすることがで
きる。固定サイズ・ウィンドウの場合、ポインタは、所
定の数の前キャラクタに制限される。ウィンドウが大き
ければ大きいほど、比較の数が多くなり、パターン一致
が見つかる確度が高くなる。しかし、ウィンドウ・サイ
ズが増大するにつれて、コード化が遅くなり、ポインタ
が大きくなるので圧縮率が低下する可能性がある。
【0011】テキスト列内の最近の過去のキャラクタを
記憶するための固定サイズ・ウィンドウの利点の1つ
が、ポインタ・サイズが制限されることである。また、
比較の数が制限されるので、パターン一致長が制限さ
れ、コード化速度が高まる。
記憶するための固定サイズ・ウィンドウの利点の1つ
が、ポインタ・サイズが制限されることである。また、
比較の数が制限されるので、パターン一致長が制限さ
れ、コード化速度が高まる。
【0012】<ジャクソン(Jackson)特許>ジャクソ
ン他の米国特許第4054951号明細書(以下、ジャ
クソン特許と呼称する)には、前に出現したデータ列の
それぞれの出現が、出力ストリームに4次式<i,j,
k,l>として付加される、データ・ストリームの辞書
復元方法が開示されている。このiはフラグまたはトー
クンであり、jは部分列の記憶域アドレス、kはセクシ
ョンの長さ、lは繰り返しの回数である。圧縮されたデ
ータは、ビーム制御装置を駆動するバッファに記憶され
る。原理的に、ジャクソン特許は、ポインタのコード化
と使用されるフィールドに詳細な相違を有するLZ19
77タイプ辞書圧縮を記載したものである。
ン他の米国特許第4054951号明細書(以下、ジャ
クソン特許と呼称する)には、前に出現したデータ列の
それぞれの出現が、出力ストリームに4次式<i,j,
k,l>として付加される、データ・ストリームの辞書
復元方法が開示されている。このiはフラグまたはトー
クンであり、jは部分列の記憶域アドレス、kはセクシ
ョンの長さ、lは繰り返しの回数である。圧縮されたデ
ータは、ビーム制御装置を駆動するバッファに記憶され
る。原理的に、ジャクソン特許は、ポインタのコード化
と使用されるフィールドに詳細な相違を有するLZ19
77タイプ辞書圧縮を記載したものである。
【0013】<Ziv-Lempelの1977と1978のコー
ド>LZ1977辞書圧縮コードは、ジブおよびレンペ
ル(Ziv and Lempel)著、"A Universal Algorithm For
Sequential Data Compression", IEEE Trans. Informa
tion Theory, IT-24(3), pages 337-343、1977年5
月に記載された。ジブ他による第2の論文、"Compressi
on Of Individual Sequences Via VariableRate Codin
g", IEEE Trans. Information Theory, IT-24 (5), pag
es 530-536、1978年9月には、多少異なる辞書圧縮
方法(LZ1978コード)が記載されている。
ド>LZ1977辞書圧縮コードは、ジブおよびレンペ
ル(Ziv and Lempel)著、"A Universal Algorithm For
Sequential Data Compression", IEEE Trans. Informa
tion Theory, IT-24(3), pages 337-343、1977年5
月に記載された。ジブ他による第2の論文、"Compressi
on Of Individual Sequences Via VariableRate Codin
g", IEEE Trans. Information Theory, IT-24 (5), pag
es 530-536、1978年9月には、多少異なる辞書圧縮
方法(LZ1978コード)が記載されている。
【0014】LZ1978コードでは、最近の過去のテ
キスト列が句(phrase)に解析される。この各句は、前
に見られた最長の一致句に1キャラクタを加えたもので
ある。その後、各句は、その接頭部(prefix)への指標
+余分のキャラクタとしてコード化される。その後、句
は、たとえばメモリ内でハッシュ化されたアドレスとし
てアドレッシングできる句のリストに追加される。これ
は、前に現れたすべての列の参照にポインタを使用する
LZ1977圧縮符号化の代替案である。
キスト列が句(phrase)に解析される。この各句は、前
に見られた最長の一致句に1キャラクタを加えたもので
ある。その後、各句は、その接頭部(prefix)への指標
+余分のキャラクタとしてコード化される。その後、句
は、たとえばメモリ内でハッシュ化されたアドレスとし
てアドレッシングできる句のリストに追加される。これ
は、前に現れたすべての列の参照にポインタを使用する
LZ1977圧縮符号化の代替案である。
【0015】<ホワイティング(Whiting)特許とパタ
ーン照合のバック・トゥ・バック問題>ホワイティング
他の米国特許第5003307号明細書(以下、ホワイ
ティング特許と呼称する)では、修正LZ1977圧縮
符号化方法が開示されている。ホワイティング特許で
は、入力キャラクタのそれぞれが、最近の過去のキャラ
クタを含むスライディング・ウィンドウ・タイプのシフ
ト・レジスタ内の各項目に同報通信され、同時に比較さ
れる。一致または不一致は、1キャラクタ位置のシフト
をもたらし、次の入力の同報通信が、レジスタ内容の全
てと比較される。
ーン照合のバック・トゥ・バック問題>ホワイティング
他の米国特許第5003307号明細書(以下、ホワイ
ティング特許と呼称する)では、修正LZ1977圧縮
符号化方法が開示されている。ホワイティング特許で
は、入力キャラクタのそれぞれが、最近の過去のキャラ
クタを含むスライディング・ウィンドウ・タイプのシフ
ト・レジスタ内の各項目に同報通信され、同時に比較さ
れる。一致または不一致は、1キャラクタ位置のシフト
をもたらし、次の入力の同報通信が、レジスタ内容の全
てと比較される。
【0016】一致する列がシフト・レジスタ内で見つか
った場合、タグ、パターン一致の長さおよび一致する列
のシフト・レジスタ内の位置を差すポインタからなる3
つ組が、圧縮出力列に付加される。一致する列が見つか
らない場合、生データ・タグとそのキャラクタが、出力
列に付加される。
った場合、タグ、パターン一致の長さおよび一致する列
のシフト・レジスタ内の位置を差すポインタからなる3
つ組が、圧縮出力列に付加される。一致する列が見つか
らない場合、生データ・タグとそのキャラクタが、出力
列に付加される。
【0017】ホワイティング特許の1実施例では、探索
を1時に所定の数の入力データ・キャラクタに制限する
ことでポインタが短くなり、もって高速コード化を達成
し、一致したパターンの全てに関して圧縮を保証する。
これは、2キャラクタのパターン一致の確度が、3つ以
上のキャラクタのパターン一致の確度より高いことに基
づいている。
を1時に所定の数の入力データ・キャラクタに制限する
ことでポインタが短くなり、もって高速コード化を達成
し、一致したパターンの全てに関して圧縮を保証する。
これは、2キャラクタのパターン一致の確度が、3つ以
上のキャラクタのパターン一致の確度より高いことに基
づいている。
【0018】ホワイティング特許に関する問題点の1つ
は、パターンが終了し、新しいパターンが始まる時のパ
ターン照合処理にある。すなわち、現一致パターン
(「接頭部(prefix)」とも称する)をさらに拡張する
ことが不可能であり、圧縮エンコーダが、新しい一致パ
ターンまたは接頭部を別の位置から開始させなければな
らない時に、余分な検査とサイクルが必要になる。これ
は、入力キャラクタ・シーケンスが、記憶された記録と
連続的に一致しなくなった時に、一致長を追跡する回路
をリセットして、新しいパターンを追跡できるようにす
る必要があるという事実から派生する。この遅延を、
「バック・トゥ・バック」問題と称する。
は、パターンが終了し、新しいパターンが始まる時のパ
ターン照合処理にある。すなわち、現一致パターン
(「接頭部(prefix)」とも称する)をさらに拡張する
ことが不可能であり、圧縮エンコーダが、新しい一致パ
ターンまたは接頭部を別の位置から開始させなければな
らない時に、余分な検査とサイクルが必要になる。これ
は、入力キャラクタ・シーケンスが、記憶された記録と
連続的に一致しなくなった時に、一致長を追跡する回路
をリセットして、新しいパターンを追跡できるようにす
る必要があるという事実から派生する。この遅延を、
「バック・トゥ・バック」問題と称する。
【0019】<最長パターン一致(「接頭部拡張」とも
称する)の解析と発見>本明細書の目的に関して、「貪
欲な(greedy)」アルゴリズムとは、大域的な最適とは
異なるという予想が正当な場合であっても、アルゴリズ
ムの繰り返しまたは段のそれぞれで局所的な最適を解と
して選択する、最適化に関する戦略である。貪欲な解析
では、エンコーダが、1つまたは複数の入力キャラクタ
の次の列と一致する、ヒストリ・バッファ、シフト・レ
ジスタなどにある最長の列を探索する。コード化は、パ
ターン比較において最初の不一致が検出された時点で行
われる。
称する)の解析と発見>本明細書の目的に関して、「貪
欲な(greedy)」アルゴリズムとは、大域的な最適とは
異なるという予想が正当な場合であっても、アルゴリズ
ムの繰り返しまたは段のそれぞれで局所的な最適を解と
して選択する、最適化に関する戦略である。貪欲な解析
では、エンコーダが、1つまたは複数の入力キャラクタ
の次の列と一致する、ヒストリ・バッファ、シフト・レ
ジスタなどにある最長の列を探索する。コード化は、パ
ターン比較において最初の不一致が検出された時点で行
われる。
【0020】下記は、LZ1977圧縮方法に見られる
貪欲な解析を示す例である。
貪欲な解析を示す例である。
【0021】この方法では、左シフト・レジスタ内のN
個のキャラクタの「スライディング・ウィンドウ」を使
用すると仮定する。もちろん、最初の(N−F)個のキ
ャラクタが、コード化されており、最後のF個のキャラ
クタが、「ルックアヘッド・バッファ」を構成する。
個のキャラクタの「スライディング・ウィンドウ」を使
用すると仮定する。もちろん、最初の(N−F)個のキ
ャラクタが、コード化されており、最後のF個のキャラ
クタが、「ルックアヘッド・バッファ」を構成する。
【0022】実例として、列"abcabcbacbababcab..."
が、N=11およびF=4というパラメータの下でLZ
1977によってコード化される場合、位置12のキャ
ラクタが、次にコード化されるキャラクタになる。
が、N=11およびF=4というパラメータの下でLZ
1977によってコード化される場合、位置12のキャ
ラクタが、次にコード化されるキャラクタになる。
【表1】
【0023】(a)次キャラクタをコード化するには、
表1に示されたウィンドウの最初の(N−F)個のキャ
ラクタを探索して、ルックアヘッド・バッファとの最長
の一致部分(最長一致)を見つける。この一致は、バッ
ファとオーバーラップしてよいが、バッファ自体になる
ことはできない。 (b)次に、最長一致を3つ組<i,j,a>に符号化
する。ここで、iは、ルックアヘッド・バッファからの
最長一致のオフセット、jは、一致の長さ、aは、ウィ
ンドウ内の部分列に一致しなかった最初のキャラクタで
ある。 (c)次に、ウィンドウを右にj+1位置またはキャラ
クタだけシフトして、次の符号化ステップに備える。各
ポインタに明示的な最初の非一致キャラクタを付加する
ことによって、ルックアヘッド・バッファ内の最初のキ
ャラクタに関して一致が存在しない場合であっても、コ
ード化を進行できることが保証される。
表1に示されたウィンドウの最初の(N−F)個のキャ
ラクタを探索して、ルックアヘッド・バッファとの最長
の一致部分(最長一致)を見つける。この一致は、バッ
ファとオーバーラップしてよいが、バッファ自体になる
ことはできない。 (b)次に、最長一致を3つ組<i,j,a>に符号化
する。ここで、iは、ルックアヘッド・バッファからの
最長一致のオフセット、jは、一致の長さ、aは、ウィ
ンドウ内の部分列に一致しなかった最初のキャラクタで
ある。 (c)次に、ウィンドウを右にj+1位置またはキャラ
クタだけシフトして、次の符号化ステップに備える。各
ポインタに明示的な最初の非一致キャラクタを付加する
ことによって、ルックアヘッド・バッファ内の最初のキ
ャラクタに関して一致が存在しない場合であっても、コ
ード化を進行できることが保証される。
【0024】この例では、「ルックアヘッド」・バッフ
ァ内容"babc"に対する「ヒストリ・バッファ」内の最長
一致が、"bab"である。これは、列の位置10から始ま
る。3つ組<i,j,a>は、<2,3,c>になるは
ずであり、この場合、オフセットは2単位であり、ルッ
クアヘッド・バッファから除去される(一致は位置10
から始まる)。一致の長さは、3キャラクタを含み(オ
ーバーラップが許される)、ルックアヘッド・バッファ
内の最初の非一致キャラクタは、"c"である。
ァ内容"babc"に対する「ヒストリ・バッファ」内の最長
一致が、"bab"である。これは、列の位置10から始ま
る。3つ組<i,j,a>は、<2,3,c>になるは
ずであり、この場合、オフセットは2単位であり、ルッ
クアヘッド・バッファから除去される(一致は位置10
から始まる)。一致の長さは、3キャラクタを含み(オ
ーバーラップが許される)、ルックアヘッド・バッファ
内の最初の非一致キャラクタは、"c"である。
【0025】<パターン照合を拡張するためのデータ・
フロー・モデルと並列性>計算(すなわちパターン照
合)の並行データ・フロー・モデルで、制御ではなくデ
ータが処置を駆動するという概念が使用されることは既
知である。データ・フロー・モデルとは、データの到着
の際またはデータが使用可能になった際の、値の連続的
な変換を写像したモデルである。したがって、実行の順
序は、データの使用可能性によって記述され、同時使用
可能性が並行実行をもたらすという事実が含まれる。し
たがって、ある計算を、有向非循環グラフ(データ依存
性グラフと称する)に射影して、同時に使用可能なデー
タ要素を識別することができる。
フロー・モデルと並列性>計算(すなわちパターン照
合)の並行データ・フロー・モデルで、制御ではなくデ
ータが処置を駆動するという概念が使用されることは既
知である。データ・フロー・モデルとは、データの到着
の際またはデータが使用可能になった際の、値の連続的
な変換を写像したモデルである。したがって、実行の順
序は、データの使用可能性によって記述され、同時使用
可能性が並行実行をもたらすという事実が含まれる。し
たがって、ある計算を、有向非循環グラフ(データ依存
性グラフと称する)に射影して、同時に使用可能なデー
タ要素を識別することができる。
【0026】また、従来技術では、有限状態機械によっ
て規定される並行データ・フロー・モデルを、LZ19
77辞書エンコーダに適用できることが既知である。こ
れによって、前に処理された入力列キャラクタを記憶す
るためのスライディング・ウィンドウとして、内容アド
レス可能メモリ(CAM:content addressable memor
y)を使用できるようになる。複数のレジスタと状態制
御式論理機構とCAMを組み合わせる時、入力キャラク
タとスライディング・ウィンドウ内のすべてのキャラク
タの並列の比較照合が容易になる。このような比較は、
キャラクタの一致する列の接頭部拡張または終了のいず
れかを示す。短所は、コード化サイクルあたりに照合す
ることのできるキャラクタの数が限られていることと、
あるパターンが終了し、別のパターン一致が始まる時の
システムのリセットに固有の遅延があることにある。後
者を、「バック・トゥ・バック」問題と称する。
て規定される並行データ・フロー・モデルを、LZ19
77辞書エンコーダに適用できることが既知である。こ
れによって、前に処理された入力列キャラクタを記憶す
るためのスライディング・ウィンドウとして、内容アド
レス可能メモリ(CAM:content addressable memor
y)を使用できるようになる。複数のレジスタと状態制
御式論理機構とCAMを組み合わせる時、入力キャラク
タとスライディング・ウィンドウ内のすべてのキャラク
タの並列の比較照合が容易になる。このような比較は、
キャラクタの一致する列の接頭部拡張または終了のいず
れかを示す。短所は、コード化サイクルあたりに照合す
ることのできるキャラクタの数が限られていることと、
あるパターンが終了し、別のパターン一致が始まる時の
システムのリセットに固有の遅延があることにある。後
者を、「バック・トゥ・バック」問題と称する。
【0027】
【発明が解決しようとする課題】本発明の目的は、新キ
ャラクタの列と最近の過去に処理された列内のキャラク
タとの間の最長パターン一致を確認する際の1サイクル
あたりのキャラクタ数を増加するための方法および手段
を考案することである。
ャラクタの列と最近の過去に処理された列内のキャラク
タとの間の最長パターン一致を確認する際の1サイクル
あたりのキャラクタ数を増加するための方法および手段
を考案することである。
【0028】関連目的は、上記の方法および手段を、順
方向また逆方向の再帰的な網羅的貪欲探索(exhaustive
greedy searching)または照合の下で動作可能にする
ことである。ここで「網羅的」とは、組合せ的に全ての
比較対の照合を行う(使い果たす)再帰的あるいは入れ
子式の比較動作をいい、また「貪欲」とは、上述のよう
に、大域的な最適解より局所的な最適解を選択すること
をいう。比較照合を「貪欲」アルゴリズムで行う場合、
最初のもしくは最も近い不一致の時点で2つの列間の最
大長が決定される。
方向また逆方向の再帰的な網羅的貪欲探索(exhaustive
greedy searching)または照合の下で動作可能にする
ことである。ここで「網羅的」とは、組合せ的に全ての
比較対の照合を行う(使い果たす)再帰的あるいは入れ
子式の比較動作をいい、また「貪欲」とは、上述のよう
に、大域的な最適解より局所的な最適解を選択すること
をいう。比較照合を「貪欲」アルゴリズムで行う場合、
最初のもしくは最も近い不一致の時点で2つの列間の最
大長が決定される。
【0029】もう1つの関連目的は、上記の手段および
方法が、パイプライン・ストールなしにパターン照合の
パイプライン処理と並列組合せ演算子を使用することで
ある。
方法が、パイプライン・ストールなしにパターン照合の
パイプライン処理と並列組合せ演算子を使用することで
ある。
【0030】もう1つの関連目的は、上記の手段および
方法を、Ziv-Lempel(LZ1977)タイプの連続する
多相(multi-phase)の辞書圧縮および復元方法および
手段の1相として使用することである。
方法を、Ziv-Lempel(LZ1977)タイプの連続する
多相(multi-phase)の辞書圧縮および復元方法および
手段の1相として使用することである。
【0031】
【課題を解決するための手段】原形のLZ1977符号
化規範(パラダイム)には、下記が含まれる。 (1)照合アルゴリズムを使用して、2つの部分列の最
長一致を見つけるステップ。このアルゴリズムは、部分
列の一方がヒストリ・バッファ内の接頭部(prefix:そ
の時点で処理されている部分列に付加される部分列)を
有し、部分列の他方が、ルックアヘッド・バッファ内で
部分的に順序付けられた列の次キャラクタとして接頭部
拡張(prefix extention)を有する場合に動作可能であ
る(この場合、処理の方向自体はルックアヘッド・バッ
ファからヒストリ・バッファである点に注意された
い)。 (2)ヒストリ・バッファなどに含まれる列の最近の過
去の部分での相対アドレスなど、より少ないビット数を
用いて一致した最長部分列をコード化するステップ。
化規範(パラダイム)には、下記が含まれる。 (1)照合アルゴリズムを使用して、2つの部分列の最
長一致を見つけるステップ。このアルゴリズムは、部分
列の一方がヒストリ・バッファ内の接頭部(prefix:そ
の時点で処理されている部分列に付加される部分列)を
有し、部分列の他方が、ルックアヘッド・バッファ内で
部分的に順序付けられた列の次キャラクタとして接頭部
拡張(prefix extention)を有する場合に動作可能であ
る(この場合、処理の方向自体はルックアヘッド・バッ
ファからヒストリ・バッファである点に注意された
い)。 (2)ヒストリ・バッファなどに含まれる列の最近の過
去の部分での相対アドレスなど、より少ないビット数を
用いて一致した最長部分列をコード化するステップ。
【0032】対照的に、本発明のパラダイムには、
(a)複数の最長部分列を解析し、必要な場合にはそれ
らをコード化するステップと、(b)前の列の接頭部を
継続するか打ち切るステップと、(c)次のサイクルの
ための新しい接頭部を決定するステップとが含まれる。
(a)複数の最長部分列を解析し、必要な場合にはそれ
らをコード化するステップと、(b)前の列の接頭部を
継続するか打ち切るステップと、(c)次のサイクルの
ための新しい接頭部を決定するステップとが含まれる。
【0033】本発明では、単一の符号化サイクル中に、
スライディング・ウィンドウ・ヒストリ・バッファに記
憶された第1キャラクタ列のキャラクタが、ルックアヘ
ッド・バッファに記憶された第2キャラクタ列のNのキ
ャラクタとパターン照合される。しかし、長さKのキャ
ラクタのパターン照合は、1符号化サイクル中に、下記
によって達成される。 (a)前記第2列と第1列の間でのキャラクタの部分列
に対する逆方向または順方向の網羅的貪欲比較照合を再
帰的に実行するステップ。この再帰には、第1列から第
2列への接頭部拡張のすべてと、第1列内のすべての部
分列が含まれる。 (b)確認されたすべての最大部分列パターン一致のル
ックアヘッド・バッファおよびヒストリ・バッファにお
ける位置を指示し、ルックアヘッド・バッファからヒス
トリ・バッファへNキャラクタを転送するステップ。
スライディング・ウィンドウ・ヒストリ・バッファに記
憶された第1キャラクタ列のキャラクタが、ルックアヘ
ッド・バッファに記憶された第2キャラクタ列のNのキ
ャラクタとパターン照合される。しかし、長さKのキャ
ラクタのパターン照合は、1符号化サイクル中に、下記
によって達成される。 (a)前記第2列と第1列の間でのキャラクタの部分列
に対する逆方向または順方向の網羅的貪欲比較照合を再
帰的に実行するステップ。この再帰には、第1列から第
2列への接頭部拡張のすべてと、第1列内のすべての部
分列が含まれる。 (b)確認されたすべての最大部分列パターン一致のル
ックアヘッド・バッファおよびヒストリ・バッファにお
ける位置を指示し、ルックアヘッド・バッファからヒス
トリ・バッファへNキャラクタを転送するステップ。
【0034】再帰的な逆方向または順方向の網羅的貪欲
パターン照合には、関連する2組の制約が使用される。
これらを、パート1制約およびパート2制約と表す。パ
ート2制約では、順方向照合制約に、逆方向照合制約に
対するわずかな相違が含まれる。
パターン照合には、関連する2組の制約が使用される。
これらを、パート1制約およびパート2制約と表す。パ
ート2制約では、順方向照合制約に、逆方向照合制約に
対するわずかな相違が含まれる。
【0035】パート1制約では、逆方向または順方向の
貪欲比較照合が、一致長L=K+1をもたらす場合に、
接頭部レジスタをK+1の拡張によって更新することが
指定されている。一致長がL<K+1であり、最長一致
L=1の場合、見つかった最長一致を用いて接頭部レジ
スタを更新し、追跡変数JにJ=(K−L)を割り当
て、パート2制約に従って逆方向または順方向の貪欲パ
ターン照合の処理を継続する。
貪欲比較照合が、一致長L=K+1をもたらす場合に、
接頭部レジスタをK+1の拡張によって更新することが
指定されている。一致長がL<K+1であり、最長一致
L=1の場合、見つかった最長一致を用いて接頭部レジ
スタを更新し、追跡変数JにJ=(K−L)を割り当
て、パート2制約に従って逆方向または順方向の貪欲パ
ターン照合の処理を継続する。
【0036】パート2制約では、先行条件として、パー
ト1制約が部分的に処理されたか、逆方向の場合にJ>
0、順方向の場合にJ<Kであることのいずれかが必要
である。パート2には、第1列と第2列の間の最長パタ
ーン一致長L'を識別するための逆方向または順方向の
貪欲な再帰の実行が含まれる。L'=J+1の場合、パ
ターン一致が終了する。そうでない場合、追跡変数J'
を、J−L>0にセットし、パート2に基づいてパター
ン照合を再帰実行する
ト1制約が部分的に処理されたか、逆方向の場合にJ>
0、順方向の場合にJ<Kであることのいずれかが必要
である。パート2には、第1列と第2列の間の最長パタ
ーン一致長L'を識別するための逆方向または順方向の
貪欲な再帰の実行が含まれる。L'=J+1の場合、パ
ターン一致が終了する。そうでない場合、追跡変数J'
を、J−L>0にセットし、パート2に基づいてパター
ン照合を再帰実行する
【0037】逆方向および順方向の網羅的貪欲パターン
照合ステップは、対象のキャラクタ列の順序が対称であ
る場合を除いて「可換ではない」。したがって、"a,a,
a,a,a,a,..a"や"able was i ere i saw elba"は、同一
の照合結果をもたらすはずである。しかし、順方向再帰
と逆方向再帰の間に大きな圧縮の差が存在することを示
す証拠はない。
照合ステップは、対象のキャラクタ列の順序が対称であ
る場合を除いて「可換ではない」。したがって、"a,a,
a,a,a,a,..a"や"able was i ere i saw elba"は、同一
の照合結果をもたらすはずである。しかし、順方向再帰
と逆方向再帰の間に大きな圧縮の差が存在することを示
す証拠はない。
【0038】重要なことは、パート1制約に従って制限
された再帰は、次の符号化サイクルのための列の接頭部
をもたらし、パート2によって支配された再帰は、さま
ざまな長さの部分列の仮の一致のすべての終了を生成す
る。
された再帰は、次の符号化サイクルのための列の接頭部
をもたらし、パート2によって支配された再帰は、さま
ざまな長さの部分列の仮の一致のすべての終了を生成す
る。
【0039】あるパターン一致が終わり別のパターン一
致が始まる場合に従来技術の方法によって引き起こされ
る遅延(バック・トゥ・バック)は、本発明の方法およ
び手段の変形において回避される。この変形では、1対
のシフト・レジスタ内でマークされ、適当なAND/O
R論理回路を介して表現される継続的な一致終了状況表
示が生成される。
致が始まる場合に従来技術の方法によって引き起こされ
る遅延(バック・トゥ・バック)は、本発明の方法およ
び手段の変形において回避される。この変形では、1対
のシフト・レジスタ内でマークされ、適当なAND/O
R論理回路を介して表現される継続的な一致終了状況表
示が生成される。
【0040】例として、1キャラクタ毎コード化サイク
ルの変形では、(a)ルックアヘッド・バッファに記憶
されたNキャラクタの列a=a1、a2、…、aiの部分
列と、接頭部拡張を含むスライディング・ウィンドウ・
ヒストリ・バッファに記憶された列b=b1、b2、…の
キャラクタの部分列との逆方向または順方向の網羅的貪
欲比較照合を再帰的に実行する。これは、(b)ルック
アヘッド・バッファ内の各キャラクタai+1を、複数の
サブステップを同時に利用して処理する点が異なる。こ
の並行サブステップは、(1)スライディング・ウィン
ドウ・ヒストリ・バッファ内の対応位置でのai+1との
一致であるブール値mi+1を第1シフト・レジスタに書
き込むサブステップと、(2)第1シフト・レジスタの
各段から、所定の段数だけオフセットされた第2シフト
・レジスタの対応段へ、第1レジスタに書き込まれたヒ
ストリ・バッファの対応位置でのaiとの一致であるブ
ール値miを、同時に書き込むステップと、(3)第1
の種類のブール値がパターン一致継続を表し、第2の種
類のブール値がパターン一致終了を表すように、第1お
よび第2のレジスタの段の各対に対して合計される離接
(mi AND mi+1)として、ブール値信号(一致ル
ックアヘッド:MLA信号)を形成するステップとから
なる。
ルの変形では、(a)ルックアヘッド・バッファに記憶
されたNキャラクタの列a=a1、a2、…、aiの部分
列と、接頭部拡張を含むスライディング・ウィンドウ・
ヒストリ・バッファに記憶された列b=b1、b2、…の
キャラクタの部分列との逆方向または順方向の網羅的貪
欲比較照合を再帰的に実行する。これは、(b)ルック
アヘッド・バッファ内の各キャラクタai+1を、複数の
サブステップを同時に利用して処理する点が異なる。こ
の並行サブステップは、(1)スライディング・ウィン
ドウ・ヒストリ・バッファ内の対応位置でのai+1との
一致であるブール値mi+1を第1シフト・レジスタに書
き込むサブステップと、(2)第1シフト・レジスタの
各段から、所定の段数だけオフセットされた第2シフト
・レジスタの対応段へ、第1レジスタに書き込まれたヒ
ストリ・バッファの対応位置でのaiとの一致であるブ
ール値miを、同時に書き込むステップと、(3)第1
の種類のブール値がパターン一致継続を表し、第2の種
類のブール値がパターン一致終了を表すように、第1お
よび第2のレジスタの段の各対に対して合計される離接
(mi AND mi+1)として、ブール値信号(一致ル
ックアヘッド:MLA信号)を形成するステップとから
なる。
【0041】この変形は、パート1およびパート2の制
約に従う順方向または逆方向の探索を使用して、1符号
化サイクルあたり1時に2つ以上のキャラクタの照合に
拡張することができる。
約に従う順方向または逆方向の探索を使用して、1符号
化サイクルあたり1時に2つ以上のキャラクタの照合に
拡張することができる。
【0042】
【実施例】ここで図1を参照すると、従来技術による内
容アドレス可能メモリ(CAM)型LZ 1977圧縮
エンコーダのパターン照合論理機構が示されている。パ
ターン照合論理機構には、キャラクタ列内の最近の過去
のキャラクタを記憶するためのスライディング・ウィン
ドウ・ヒストリ・バッファとして動作可能なCAMアレ
イ、入力キャラクタをCAM内のシフト位置に入力する
ための書込選択(WS)シフト・チェーン、および、対
応する一致出力とさまざまなカウンタおよびバッファに
よってリセットされる際に非同期にセットされる回転可
能な(PS)シフト・チェーンおよびレジスタが含まれ
る。以下にその主処理ループの擬似コードを示す。
容アドレス可能メモリ(CAM)型LZ 1977圧縮
エンコーダのパターン照合論理機構が示されている。パ
ターン照合論理機構には、キャラクタ列内の最近の過去
のキャラクタを記憶するためのスライディング・ウィン
ドウ・ヒストリ・バッファとして動作可能なCAMアレ
イ、入力キャラクタをCAM内のシフト位置に入力する
ための書込選択(WS)シフト・チェーン、および、対
応する一致出力とさまざまなカウンタおよびバッファに
よってリセットされる際に非同期にセットされる回転可
能な(PS)シフト・チェーンおよびレジスタが含まれ
る。以下にその主処理ループの擬似コードを示す。
【0043】
【表2】
【0044】図1に示された論理機構と上記の制御の擬
似コード・フローを参照すると、これは、照合動作の開
始時に、第1のリエントラント・シフト・レジスタ(P
S)に、第1の種類(論理1)のブール値を供給して、
CAM内で可能な列一致が発生するすべての場所をマー
クする場合である。状態標識(PS_SET信号)を、
論理1にセットする。この標識は、第1レジスタ(P
S)内で少なくとも1つの論理1がセットされている限
り、維持される。後続バイトを処理する際に、一致が発
生しても、第1レジスタPSに新しいマーカ(論理1)
はセットされない。その代わりに、不一致が発生する
と、対応する第1レジスタ(PS)のマーカ・ビットが
リセット(破壊)される。これが、状態標識(PS_S
ET)を論理1から論理0にリセットさせる。これは、
列パターン一致が終了したことを意味する。それと同時
に、一致列の末尾が第2シフト・レジスタ(SS)内で
論理1によってマークされる。
似コード・フローを参照すると、これは、照合動作の開
始時に、第1のリエントラント・シフト・レジスタ(P
S)に、第1の種類(論理1)のブール値を供給して、
CAM内で可能な列一致が発生するすべての場所をマー
クする場合である。状態標識(PS_SET信号)を、
論理1にセットする。この標識は、第1レジスタ(P
S)内で少なくとも1つの論理1がセットされている限
り、維持される。後続バイトを処理する際に、一致が発
生しても、第1レジスタPSに新しいマーカ(論理1)
はセットされない。その代わりに、不一致が発生する
と、対応する第1レジスタ(PS)のマーカ・ビットが
リセット(破壊)される。これが、状態標識(PS_S
ET)を論理1から論理0にリセットさせる。これは、
列パターン一致が終了したことを意味する。それと同時
に、一致列の末尾が第2シフト・レジスタ(SS)内で
論理1によってマークされる。
【0045】一致長が2以上であったならば、圧縮され
たトークンを生成する。圧縮されたトークンは、接頭部
「1」、オフセット・アドレス、ポインタ長コードから
なる。オフセットは、第2レジスタ(SS)に記憶され
た第1レジスタ(PS)最後の活動マーカのうちの1つ
のアドレスから列長を減じたアドレスの剰余減算として
計算される(1未満)。
たトークンを生成する。圧縮されたトークンは、接頭部
「1」、オフセット・アドレス、ポインタ長コードから
なる。オフセットは、第2レジスタ(SS)に記憶され
た第1レジスタ(PS)最後の活動マーカのうちの1つ
のアドレスから列長を減じたアドレスの剰余減算として
計算される(1未満)。
【0046】もう一度図1を参照し、かつ上記の擬似コ
ード・ステートメント5ないし7を参照されたい。ステ
ートメント5ないし7は、クリティカルなバック・トゥ
・バック一致動作と呼ばれる。これは、第1レジスタ
(PS)が、対応する一致によって非同期にリセットさ
れることを必要とする。状態標識(PS_SET)は0
であるから、第1レジスタ(PS)の全ビットが0であ
る。この時、新しい一致がCAM内の異なる位置で始ま
る可能性があるので、第1レジスタを再ロードしなけれ
ばならない。これは、第1レジスタ(PS)が、次のコ
ード化サイクルの前にシフト(回転)を必要とすること
を意味する。このような再ロードとシフトが、バック・
トゥ・バック照合での遅延を構成する。
ード・ステートメント5ないし7を参照されたい。ステ
ートメント5ないし7は、クリティカルなバック・トゥ
・バック一致動作と呼ばれる。これは、第1レジスタ
(PS)が、対応する一致によって非同期にリセットさ
れることを必要とする。状態標識(PS_SET)は0
であるから、第1レジスタ(PS)の全ビットが0であ
る。この時、新しい一致がCAM内の異なる位置で始ま
る可能性があるので、第1レジスタを再ロードしなけれ
ばならない。これは、第1レジスタ(PS)が、次のコ
ード化サイクルの前にシフト(回転)を必要とすること
を意味する。このような再ロードとシフトが、バック・
トゥ・バック照合での遅延を構成する。
【0047】<本発明によるパターン照合論理機構>こ
こで図2を参照すると、本発明の方法および手段によ
る、パターン照合用の論理配置が示されている。この配
置では、ルックアヘッド・バッファ(図示せず)からの
各キャラクタが、比較論理ゲート5、7および9の組と
一致ルックアサイド論理およびバッファ・ユニット11
への1入力として、経路1に並列に印加される。スライ
ディング・ウィンドウ・ヒストリ・バッファ3は、それ
に対応する段のそれぞれから比較論理ゲートと一致ルッ
クアサイド論理およびバッファ・ユニット11へ、経路
17を介してキャラクタ出力を供給する。
こで図2を参照すると、本発明の方法および手段によ
る、パターン照合用の論理配置が示されている。この配
置では、ルックアヘッド・バッファ(図示せず)からの
各キャラクタが、比較論理ゲート5、7および9の組と
一致ルックアサイド論理およびバッファ・ユニット11
への1入力として、経路1に並列に印加される。スライ
ディング・ウィンドウ・ヒストリ・バッファ3は、それ
に対応する段のそれぞれから比較論理ゲートと一致ルッ
クアサイド論理およびバッファ・ユニット11へ、経路
17を介してキャラクタ出力を供給する。
【0048】比較論理ゲートの出力によって、ヒストリ
・バッファ内の一致位置が識別される。これらの一致表
示は、経路23を介して一致拡張論理機構13に印加さ
れる一致ルックアサイド論理およびバッファ・ユニット
11の状態によって制御される一致拡張論理機構13内
の位置に、経路29、31および33を介して適用され
る。一致拡張論理機構13の状態によって、パターン照
合列終了情報が提供される。さらに、一致拡張論理機構
13は、拡張される接頭部の接頭部レジスタ15の記憶
を制御するとともに、終了時に経路19を介して1つま
たは複数の一致列を他所へ転送することを制御する。
・バッファ内の一致位置が識別される。これらの一致表
示は、経路23を介して一致拡張論理機構13に印加さ
れる一致ルックアサイド論理およびバッファ・ユニット
11の状態によって制御される一致拡張論理機構13内
の位置に、経路29、31および33を介して適用され
る。一致拡張論理機構13の状態によって、パターン照
合列終了情報が提供される。さらに、一致拡張論理機構
13は、拡張される接頭部の接頭部レジスタ15の記憶
を制御するとともに、終了時に経路19を介して1つま
たは複数の一致列を他所へ転送することを制御する。
【0049】<パターン照合論理機構のデータフロー特
性>図1に関して説明した従来技術は、コード化または
圧縮されるキャラクタごとに複数のマイナー・サイクル
を制御するために有限状態機械を必要とする。対照的
に、本発明の方法および手段では、並行データ・フロー
(CDF)の可変マイナー・サイクルが、固定サイクル
のパイプライン式並行データ・フロー(PCDF)に変
換される。具体的な論理実施態様および制御/データ・
フローに関して後で説明するように、PCDFは、圧縮
効率の維持する一方でシステム・オーバーヘッドをなく
し、複雑さも適度であるといったCDFに対して複数の
利点を提供する。
性>図1に関して説明した従来技術は、コード化または
圧縮されるキャラクタごとに複数のマイナー・サイクル
を制御するために有限状態機械を必要とする。対照的
に、本発明の方法および手段では、並行データ・フロー
(CDF)の可変マイナー・サイクルが、固定サイクル
のパイプライン式並行データ・フロー(PCDF)に変
換される。具体的な論理実施態様および制御/データ・
フローに関して後で説明するように、PCDFは、圧縮
効率の維持する一方でシステム・オーバーヘッドをなく
し、複雑さも適度であるといったCDFに対して複数の
利点を提供する。
【0050】ここで図3を参照すると、LZ1977圧
縮用のパイプライン式並行データフロー(PCDF)高
水準パターン照合論理機構として表現された、図2に示
された配置が示されている。
縮用のパイプライン式並行データフロー(PCDF)高
水準パターン照合論理機構として表現された、図2に示
された配置が示されている。
【0051】PCDFは、機能的には、(1)入力キャ
ラクタのヒストリバッファでの位置を識別する一致レジ
スタ(M)を形成するヒストリ・バッファ203および
比較器205と、(2)Mに応答し再入経路215を有
する主選択(PS)レジスタ207と、(3)Mおよび
PSレジスタ207からの信号に応答する一致ルックア
ヘッド(MLA)ユニット217と、(4)一致長カウ
ンタ211と、(5)一致長カウンタ211と、MLA
ユニット217からの経路219上のMLA信号とに応
答するオフセット・アドレス計算ユニット209とに区
分することができる。
ラクタのヒストリバッファでの位置を識別する一致レジ
スタ(M)を形成するヒストリ・バッファ203および
比較器205と、(2)Mに応答し再入経路215を有
する主選択(PS)レジスタ207と、(3)Mおよび
PSレジスタ207からの信号に応答する一致ルックア
ヘッド(MLA)ユニット217と、(4)一致長カウ
ンタ211と、(5)一致長カウンタ211と、MLA
ユニット217からの経路219上のMLA信号とに応
答するオフセット・アドレス計算ユニット209とに区
分することができる。
【0052】PSレジスタ207は、シフトおよび並列
ロード(shift-and-parallel-load)のレジスタであ
り、下記の条件実行を行う。IF MLA = 0 T
HEN MをPSに並列ロードする、ELSEPS内容
をシフトし回転し、シフトされた入力をMLによってゲ
ーティングする。
ロード(shift-and-parallel-load)のレジスタであ
り、下記の条件実行を行う。IF MLA = 0 T
HEN MをPSに並列ロードする、ELSEPS内容
をシフトし回転し、シフトされた入力をMLによってゲ
ーティングする。
【0053】MLAユニット217は、PSレジスタ2
07に対する並列ロードまたは循環シフトを含むフロー
決定をもたらす。これによって、PSが、CDF構成で
必要な動作である2つまたは3つの動作を行う必要が1
つに減る。MLAのフロー決定によって、バック・トゥ
・バック一致の場合であってもパイプライン化されたフ
ローのギャップがなくなる。MLAには、多入力ORゲ
ート225が含まれる。各OR入力は、ヒストリ・バッ
ファ203の位置iでの一致のANDゲート221およ
び223などの2入力ANDゲートであり、入力キャラ
クタが、そのPSレジスタ出力とANDされる。
07に対する並列ロードまたは循環シフトを含むフロー
決定をもたらす。これによって、PSが、CDF構成で
必要な動作である2つまたは3つの動作を行う必要が1
つに減る。MLAのフロー決定によって、バック・トゥ
・バック一致の場合であってもパイプライン化されたフ
ローのギャップがなくなる。MLAには、多入力ORゲ
ート225が含まれる。各OR入力は、ヒストリ・バッ
ファ203の位置iでの一致のANDゲート221およ
び223などの2入力ANDゲートであり、入力キャラ
クタが、そのPSレジスタ出力とANDされる。
【0054】オフセット・アドレス計算ユニット209
は、PSレジスタ207内の最後に残っているマーカの
うちの1つのアドレスを解決する。その後、一致長から
1を減じた値(L−1)をアドレスから減算して、オフ
セット・アドレスとも称する一致開始位置を得る。最後
に、エッジ検出回路(図示せず)が、経路219上のM
LA信号から列一致の終りを導出する。
は、PSレジスタ207内の最後に残っているマーカの
うちの1つのアドレスを解決する。その後、一致長から
1を減じた値(L−1)をアドレスから減算して、オフ
セット・アドレスとも称する一致開始位置を得る。最後
に、エッジ検出回路(図示せず)が、経路219上のM
LA信号から列一致の終りを導出する。
【0055】<新しいパラダイムを使用するパターン照
合と例>このパラダイムには、スライディング・ウィン
ドウ・ヒストリ・バッファと固定長Kのルックアヘッド
・バッファに区分されたシフト・レジスタが包摂され
る。この方法および手段では、(1)必要であれば、キ
ャラクタ列を1つまたは複数の最長部分列に解析して、
複数の最長部分列を見つけ、(2)前の列の接頭部を継
続するか打ち切り、(3)次のコード化サイクルのため
の新しい接頭部を決定する。
合と例>このパラダイムには、スライディング・ウィン
ドウ・ヒストリ・バッファと固定長Kのルックアヘッド
・バッファに区分されたシフト・レジスタが包摂され
る。この方法および手段では、(1)必要であれば、キ
ャラクタ列を1つまたは複数の最長部分列に解析して、
複数の最長部分列を見つけ、(2)前の列の接頭部を継
続するか打ち切り、(3)次のコード化サイクルのため
の新しい接頭部を決定する。
【0056】下記の最大パターン照合の3つの例では、
K=5のキャラクタ・ルックアヘッド・バッファと、逆
方向網羅的貪欲パターン照合アルゴリズムを仮定する。
K=5のキャラクタ・ルックアヘッド・バッファと、逆
方向網羅的貪欲パターン照合アルゴリズムを仮定する。
【0057】
【表3】<例1>
【0058】表3は、本発明のパート1制約に従う接頭
部拡張(一致長)に関する逆方向貪欲探索を示す表であ
る。
部拡張(一致長)に関する逆方向貪欲探索を示す表であ
る。
【0059】パート1制約では、下記が提示される。 (a)逆方向または順方向の貪欲比較照合が、一致長L
=K+1をもたらす場合、そのK+1拡張で接頭部レジ
スタを更新する。 (b)一致長L<K+1であり、最長一致L=1の場
合、見つかった最長一致で接頭部レジスタを更新し、追
跡変数J=(K−L)を割り当て、パート2に従う逆方
向または順方向の貪欲パターン照合の処理を継続する。
=K+1をもたらす場合、そのK+1拡張で接頭部レジ
スタを更新する。 (b)一致長L<K+1であり、最長一致L=1の場
合、見つかった最長一致で接頭部レジスタを更新し、追
跡変数J=(K−L)を割り当て、パート2に従う逆方
向または順方向の貪欲パターン照合の処理を継続する。
【0060】この制約を表3に適用すると、逆方向探索
での最長部分列は、"ab"である。L=2であるから、L
<K+1である。この"ab"と一致したルックアヘッドバ
ッファまたはヒストリ・バッファ内の位置は、図2の接
頭部レジスタ15に記憶される。J=K−L=5−2=
3>0であるから、逆方向再帰は、パート2制約に従っ
て継続される。
での最長部分列は、"ab"である。L=2であるから、L
<K+1である。この"ab"と一致したルックアヘッドバ
ッファまたはヒストリ・バッファ内の位置は、図2の接
頭部レジスタ15に記憶される。J=K−L=5−2=
3>0であるから、逆方向再帰は、パート2制約に従っ
て継続される。
【0061】
【表4】
【0062】表4は、本発明のパート2制約に従う接頭
部拡張(一致長)に関する逆方向貪欲探索を示す表であ
る。
部拡張(一致長)に関する逆方向貪欲探索を示す表であ
る。
【0063】パート2制約では、先行条件として、パー
ト1が部分的に処理されたか、逆方向の場合にJ>0、
順方向の場合にJ<Kであることのいずれかが必要であ
る。パート2には、第1列と第2列の間の最長パターン
一致長L'を識別するための逆方向または順方向の貪欲
な再帰の実行が含まれる。L'=L+1の場合、パター
ン一致が終了する。そうでない場合、追跡変数J'を、
J'−L>0にセットし、パート2に基づいてパターン
照合を再帰実行する
ト1が部分的に処理されたか、逆方向の場合にJ>0、
順方向の場合にJ<Kであることのいずれかが必要であ
る。パート2には、第1列と第2列の間の最長パターン
一致長L'を識別するための逆方向または順方向の貪欲
な再帰の実行が含まれる。L'=L+1の場合、パター
ン一致が終了する。そうでない場合、追跡変数J'を、
J'−L>0にセットし、パート2に基づいてパターン
照合を再帰実行する
【0064】想起されるとおり、追跡変数J=K−L=
5−2=3である。表4では、逆方向再帰が、ルックア
ヘッド・バッファ内で左にL=2キャラクタだけシフト
された点から始まる。したがって、この場合にはK=3
である。この再帰では、逆方向探索の最長部分列が"b"
になる。これは、L=1であり、J=K−L=3−1=
2であることを意味する。J>0であるから、パート2
制約の下でのもう1つの再帰が呼び出される。
5−2=3である。表4では、逆方向再帰が、ルックア
ヘッド・バッファ内で左にL=2キャラクタだけシフト
された点から始まる。したがって、この場合にはK=3
である。この再帰では、逆方向探索の最長部分列が"b"
になる。これは、L=1であり、J=K−L=3−1=
2であることを意味する。J>0であるから、パート2
制約の下でのもう1つの再帰が呼び出される。
【0065】
【表5】
【0066】表5では、再帰が、最後の位置から左に1
位置だけシフトされた点すなわち、K=2から始まる。
逆方向探索の最長部分列は、"a"である。L=1である
から、J=K−L=2−1=1である。これは、パート
2制約によれば、J>0を意味する。したがって、この
制約の下で、もう1つの再帰が行われる。
位置だけシフトされた点すなわち、K=2から始まる。
逆方向探索の最長部分列は、"a"である。L=1である
から、J=K−L=2−1=1である。これは、パート
2制約によれば、J>0を意味する。したがって、この
制約の下で、もう1つの再帰が行われる。
【0067】
【表6】
【0068】この再帰は、最後の位置から左に1位置シ
フトされた点またはK=1から始まる。この再帰の間に
識別される部分列は、"x"である。この部分列は、前の
列の接頭部"xxx"の拡張である。なぜならば、J=K−
L=1−1=0だからである。パート2制約の下でのこ
れ以上の再帰は必要ない。
フトされた点またはK=1から始まる。この再帰の間に
識別される部分列は、"x"である。この部分列は、前の
列の接頭部"xxx"の拡張である。なぜならば、J=K−
L=1−1=0だからである。パート2制約の下でのこ
れ以上の再帰は必要ない。
【0069】逆方向網羅的貪欲パターン照合アルゴリズ
ムに従って決定される部分列は、"ab"、"b"、"a"およ
び"x"である。これに関して、"ab"は、次のエンコーダ
・サイクルの列接頭部拡張であり、その結果、これはエ
ンコーダに解放されなくなる。しかし、部分列"b"およ
び"a"はエンコーダに解放することができ、その後、"xx
xx"の拡張としての"x"が解放される。
ムに従って決定される部分列は、"ab"、"b"、"a"およ
び"x"である。これに関して、"ab"は、次のエンコーダ
・サイクルの列接頭部拡張であり、その結果、これはエ
ンコーダに解放されなくなる。しかし、部分列"b"およ
び"a"はエンコーダに解放することができ、その後、"xx
xx"の拡張としての"x"が解放される。
【0070】パート1に従って制約される再帰は、次の
符号化サイクルのための列接頭部をもたらし、パート2
によって支配される再帰は、さまざまな長さの部分列の
仮の一致のすべての終了を生成することを想起された
い。
符号化サイクルのための列接頭部をもたらし、パート2
によって支配される再帰は、さまざまな長さの部分列の
仮の一致のすべての終了を生成することを想起された
い。
【0071】
【表7】<例2>
【0072】この例では、表7のルックアヘッド・バッ
ファが、K−1キャラクタ一致で満たされている。具体
的に言うと、逆方向貪欲照合再帰の実行時の最長部分列
が"aaaa"である。"aaaa"と一致する位置は、図2の接頭
部レジスタ15に記憶される。L=4であるから、パー
ト1制約によればJ=K−L=5−4=1であり、J>
0という事実に鑑みて、パート2制約に従って再帰が継
続される。
ファが、K−1キャラクタ一致で満たされている。具体
的に言うと、逆方向貪欲照合再帰の実行時の最長部分列
が"aaaa"である。"aaaa"と一致する位置は、図2の接頭
部レジスタ15に記憶される。L=4であるから、パー
ト1制約によればJ=K−L=5−4=1であり、J>
0という事実に鑑みて、パート2制約に従って再帰が継
続される。
【0073】
【表8】
【0074】表8によれば、再帰は左に4位置シフトし
た点から始まる。したがって、K=1である。逆方向探
索での最長部分列は、"a"である。したがって、J=K
−L=1−1=0になる。J=0であるから、再帰が打
ち切られ、パート2が終了し、ヒストリ・バッファ内の
接頭部"xxx"は拡張できない。
た点から始まる。したがって、K=1である。逆方向探
索での最長部分列は、"a"である。したがって、J=K
−L=1−1=0になる。J=0であるから、再帰が打
ち切られ、パート2が終了し、ヒストリ・バッファ内の
接頭部"xxx"は拡張できない。
【0075】逆方向貪欲アルゴリズムによって照合され
た部分列は、"aaaa"、"a"および"xxx"である。これらの
うちで、部分列"aaaa"は、次の符号化サイクルの接頭部
拡張になり、コーダに解放されない。対照的に、部分
列"a"および"xxx"は、コーダに解放される。
た部分列は、"aaaa"、"a"および"xxx"である。これらの
うちで、部分列"aaaa"は、次の符号化サイクルの接頭部
拡張になり、コーダに解放されない。対照的に、部分
列"a"および"xxx"は、コーダに解放される。
【0076】
【表9】<例3>
【0077】表9では、逆方向再帰貪欲パターン照合か
ら、最大長部分列として一致"aaaaaaaa"またはL=8が
導出される。パート1制約によれば、J=K−L≦0の
場合に、最長部分列が、前の列接頭部"aaa"の拡張とし
て処理される。これは、再帰の終りであり、列接頭部
は、"aaaaaaaa"に拡張される。
ら、最大長部分列として一致"aaaaaaaa"またはL=8が
導出される。パート1制約によれば、J=K−L≦0の
場合に、最長部分列が、前の列接頭部"aaa"の拡張とし
て処理される。これは、再帰の終りであり、列接頭部
は、"aaaaaaaa"に拡張される。
【0078】<1コード化サイクルあたり1キャラクタ
のパターン照合論理機構>ここで図4を参照すると、1
キャラクタ毎サイクルのLZ1977圧縮コード化を実
現するための、本発明による最大長パターン照合論理配
置が示されている。この構成には、ヒストリ・バッファ
505とANDゲート509への入力キャラクタ・アク
セスをゲーティングする書込み選択(WS)レジスタ5
03が含まれる。WSには、「0」が1つだけ含まれ、
それ以外のビットは全て「1」である。この単一の
「0」は、キャラクタが書き込まれつつあるヒストリ・
バッファ505内の現在位置を表す。各サイクルの後
に、WSレジスタを1位置だけ回転する。WSレジスタ
503とヒストリ・バッファ505の組合せが、スライ
ディング・ウィンドウに影響を与える。すなわち、ヒス
トリ・バッファは、入力キャラクタ列の最近の過去の部
分から連続して処理された固定された個数のキャラクタ
だけを保持する。新キャラクタがバッファに書き込まれ
るごとに、最も古いキャラクタがバッファから削除され
る。
のパターン照合論理機構>ここで図4を参照すると、1
キャラクタ毎サイクルのLZ1977圧縮コード化を実
現するための、本発明による最大長パターン照合論理配
置が示されている。この構成には、ヒストリ・バッファ
505とANDゲート509への入力キャラクタ・アク
セスをゲーティングする書込み選択(WS)レジスタ5
03が含まれる。WSには、「0」が1つだけ含まれ、
それ以外のビットは全て「1」である。この単一の
「0」は、キャラクタが書き込まれつつあるヒストリ・
バッファ505内の現在位置を表す。各サイクルの後
に、WSレジスタを1位置だけ回転する。WSレジスタ
503とヒストリ・バッファ505の組合せが、スライ
ディング・ウィンドウに影響を与える。すなわち、ヒス
トリ・バッファは、入力キャラクタ列の最近の過去の部
分から連続して処理された固定された個数のキャラクタ
だけを保持する。新キャラクタがバッファに書き込まれ
るごとに、最も古いキャラクタがバッファから削除され
る。
【0079】新入力キャラクタが、WSレジスタの
「0」位置によって指定されるヒストリ・バッファ50
5の位置に書き込まれる時に、その入力キャラクタは、
バッファの全ての位置に記憶されている現キャラクタと
比較される。バッファ内の各段は、比較回路507の対
応する1つを駆動する出力を有することに留意された
い。比較回路への入力キャラクタは、経路501を介し
て供給される。対応する比較回路507に結合されたA
NDゲート509は、ヒストリ・バッファ505内の書
き込まれつつある位置をゲート・アウトする。これによ
って、その位置との比較が強制的に「0」にされる。そ
の後、一致状態を一致レジスタ511に記憶する。
「0」位置によって指定されるヒストリ・バッファ50
5の位置に書き込まれる時に、その入力キャラクタは、
バッファの全ての位置に記憶されている現キャラクタと
比較される。バッファ内の各段は、比較回路507の対
応する1つを駆動する出力を有することに留意された
い。比較回路への入力キャラクタは、経路501を介し
て供給される。対応する比較回路507に結合されたA
NDゲート509は、ヒストリ・バッファ505内の書
き込まれつつある位置をゲート・アウトする。これによ
って、その位置との比較が強制的に「0」にされる。そ
の後、一致状態を一致レジスタ511に記憶する。
【0080】一致レジスタ511は、ANDゲート51
3とORゲート521によって形成される一致ルックア
ヘッド回路を駆動する。ANDゲート513は、主選択
(PS)レジスタ527の対応位置への負荷経路(経路
531、経路533ないし545とゲート525)も駆
動する。PSレジスタ527は、MLA信号が「0」の
場合には一致レジスタ511の内容、MLA信号が
「1」の場合には一致ルックアヘッド状態のいずれかを
ロードされる。
3とORゲート521によって形成される一致ルックア
ヘッド回路を駆動する。ANDゲート513は、主選択
(PS)レジスタ527の対応位置への負荷経路(経路
531、経路533ないし545とゲート525)も駆
動する。PSレジスタ527は、MLA信号が「0」の
場合には一致レジスタ511の内容、MLA信号が
「1」の場合には一致ルックアヘッド状態のいずれかを
ロードされる。
【0081】<本発明の図4の実施態様による1サイク
ルあたり1キャラクタのパターン照合の例>もう一度図
4を参照すると、このエンコーダのパターン照合部分に
は、32キャラクタ項目のCAM(WSレジスタ50
3、ヒストリ・バッファ505、比較回路507および
ANDゲート509)と、対応する32ビットMR(一
致レジスタ511)と、32ビットPS(PSレジスタ
527)が含まれる。このCAMには、左から右へ、位
置0が左端位置の状態で符号が付されている。位置0
は、最初に書き込まれる位置であり、その後、1、2、
…、31、0、1、…の順で書き込まれる。入力ストリ
ームは下記のとおりであると仮定する。 "abcdefgabcdewxyzabcdxyzabcda..."
ルあたり1キャラクタのパターン照合の例>もう一度図
4を参照すると、このエンコーダのパターン照合部分に
は、32キャラクタ項目のCAM(WSレジスタ50
3、ヒストリ・バッファ505、比較回路507および
ANDゲート509)と、対応する32ビットMR(一
致レジスタ511)と、32ビットPS(PSレジスタ
527)が含まれる。このCAMには、左から右へ、位
置0が左端位置の状態で符号が付されている。位置0
は、最初に書き込まれる位置であり、その後、1、2、
…、31、0、1、…の順で書き込まれる。入力ストリ
ームは下記のとおりであると仮定する。 "abcdefgabcdewxyzabcdxyzabcda..."
【0082】第1サイクルの後には、レジスタ状態は次
のようになる。 CAM: a_______________________________ MR: 00000000000000000000000000000000 テ゛ータ: a PS: 00000000000000000000000000000000 テ゛ータ: _
のようになる。 CAM: a_______________________________ MR: 00000000000000000000000000000000 テ゛ータ: a PS: 00000000000000000000000000000000 テ゛ータ: _
【0083】サイクル2の後には、レジスタ状態は次の
ようになる。 CAM: ab______________________________ MR: 00000000000000000000000000000000 テ゛ータ: b PS: 00000000000000000000000000000000 テ゛ータ: a
ようになる。 CAM: ab______________________________ MR: 00000000000000000000000000000000 テ゛ータ: b PS: 00000000000000000000000000000000 テ゛ータ: a
【0084】MRとPSに連続する'1'が存在しないの
で、最初の'a'は、符号化ユニットに送られ、そこで生
バイトとして符号化される。サイクル3の後には、レジ
スタ状態は次のようになる。 CAM: abc_____________________________ MR: 00000000000000000000000000000000 テ゛ータ: c PS: 00000000000000000000000000000000 テ゛ータ: b
で、最初の'a'は、符号化ユニットに送られ、そこで生
バイトとして符号化される。サイクル3の後には、レジ
スタ状態は次のようになる。 CAM: abc_____________________________ MR: 00000000000000000000000000000000 テ゛ータ: c PS: 00000000000000000000000000000000 テ゛ータ: b
【0085】やはり、最初の'b'が符号化ユニットに送
られ、生バイトとして符号化される。この処理は、サイ
クル7の後まで継続し、その時点で、レジスタ状態は次
のようになる。 CAM: abcdefg_________________________ MR: 00000000000000000000000000000000 テ゛ータ: g PS: 00000000000000000000000000000000 テ゛ータ: f
られ、生バイトとして符号化される。この処理は、サイ
クル7の後まで継続し、その時点で、レジスタ状態は次
のようになる。 CAM: abcdefg_________________________ MR: 00000000000000000000000000000000 テ゛ータ: g PS: 00000000000000000000000000000000 テ゛ータ: f
【0086】サイクル8の後には、レジスタ状態は次の
ようになる。 CAM: abcdefga________________________ MR: 10000000000000000000000000000000 テ゛ータ: a PS: 00000000000000000000000000000000 テ゛ータ: g
ようになる。 CAM: abcdefga________________________ MR: 10000000000000000000000000000000 テ゛ータ: a PS: 00000000000000000000000000000000 テ゛ータ: g
【0087】この時、MRには、既にCAM内にある最
初の'a'と一致する第2の'a'の位置が格納される。バイ
ト'g'は、符号化ユニットに送られ、生バイトとして符
号化される。サイクル9の後には、レジスタ状態は次の
ようになる。 CAM: abcdefgab_______________________ MR: 01000000000000000000000000000000 テ゛ータ: b PS: 10000000000000000000000000000000 テ゛ータ: a
初の'a'と一致する第2の'a'の位置が格納される。バイ
ト'g'は、符号化ユニットに送られ、生バイトとして符
号化される。サイクル9の後には、レジスタ状態は次の
ようになる。 CAM: abcdefgab_______________________ MR: 01000000000000000000000000000000 テ゛ータ: b PS: 10000000000000000000000000000000 テ゛ータ: a
【0088】この時、MRには、位置1に'1'が格納さ
れ、PSには、位置0に'1'が格納される。これらの位
置は1つだけオフセットしているので、これは一致する
列が見つかった場合である。
れ、PSには、位置0に'1'が格納される。これらの位
置は1つだけオフセットしているので、これは一致する
列が見つかった場合である。
【0089】一致が継続するか終了するかを判定するた
めには、まずMR(i)とPS(i−1)のANDをと
る必要がある。すなわち、(Match_Load(0) = MR(0) AND
PS(31), Match_Load(1) = MR(1) AND PS(0), Match_Lo
ad(2) = MR(2) AND PS(1), ..., Match_Load(31) = MR
(31) AND PS(30))を行い、その後、これらのORをと
る。
めには、まずMR(i)とPS(i−1)のANDをと
る必要がある。すなわち、(Match_Load(0) = MR(0) AND
PS(31), Match_Load(1) = MR(1) AND PS(0), Match_Lo
ad(2) = MR(2) AND PS(1), ..., Match_Load(31) = MR
(31) AND PS(30))を行い、その後、これらのORをと
る。
【0090】このORゲートの出力を、MLA(一致ル
ックアヘッド)と称する。 MLA = Match_Load(0) OR Match_Load(1) OR ... OR Mat
ch_Load(31)
ックアヘッド)と称する。 MLA = Match_Load(0) OR Match_Load(1) OR ... OR Mat
ch_Load(31)
【0091】MLAが'1'の場合、列一致が継続する。
この場合、Match_Load(一致ロード)ビット
がPSにロードされる。
この場合、Match_Load(一致ロード)ビット
がPSにロードされる。
【0092】その一方で、MLAが'0'の場合、一致が
終了しており、次サイクルで列照合処理を開始するため
にMRの内容をPSにロードしなければならない。上の
例では、MLAが'1'であり、したがって、PSにはM
atch_Loadがロードされる。それと同時に、C
AMの内容が、次の入力バイトと比較される。
終了しており、次サイクルで列照合処理を開始するため
にMRの内容をPSにロードしなければならない。上の
例では、MLAが'1'であり、したがって、PSにはM
atch_Loadがロードされる。それと同時に、C
AMの内容が、次の入力バイトと比較される。
【0093】最後に、一致の長さを追跡する必要があ
る。これを行うために、一致長カウンタを当初は1にセ
ットする。このカウンタは、MLAが1になるたびに1
つ増分され、MLAが0になるたびに1にリセットされ
る。サイクル10の後に、レジスタ状態は次のようにな
る。 CAM: abcdefgabc______________________ MR: 00100000000000000000000000000000 テ゛ータ: c PS: 01000000000000000000000000000000 テ゛ータ: b
る。これを行うために、一致長カウンタを当初は1にセ
ットする。このカウンタは、MLAが1になるたびに1
つ増分され、MLAが0になるたびに1にリセットされ
る。サイクル10の後に、レジスタ状態は次のようにな
る。 CAM: abcdefgabc______________________ MR: 00100000000000000000000000000000 テ゛ータ: c PS: 01000000000000000000000000000000 テ゛ータ: b
【0094】やはりMLAは1であり、一致長カウンタ
が1つ増分され、PSにMatch_Loadビットが
ロードされる。サイクル11の後に、レジスタ状態は次
のようになる。 CAM: abcdefgabcd_____________________ MR: 00010000000000000000000000000000 テ゛ータ: d PS: 00100000000000000000000000000000 テ゛ータ: c
が1つ増分され、PSにMatch_Loadビットが
ロードされる。サイクル11の後に、レジスタ状態は次
のようになる。 CAM: abcdefgabcd_____________________ MR: 00010000000000000000000000000000 テ゛ータ: d PS: 00100000000000000000000000000000 テ゛ータ: c
【0095】やはりMLAは1であり、一致長カウンタ
が1つ増分され、PSにMatch_Loadビットが
ロードされる。サイクル12の後に、レジスタ状態は次
のようになる。 CAM: abcdefgabcde____________________ MR: 00001000000000000000000000000000 テ゛ータ: e PS: 00010000000000000000000000000000 テ゛ータ: d
が1つ増分され、PSにMatch_Loadビットが
ロードされる。サイクル12の後に、レジスタ状態は次
のようになる。 CAM: abcdefgabcde____________________ MR: 00001000000000000000000000000000 テ゛ータ: e PS: 00010000000000000000000000000000 テ゛ータ: d
【0096】サイクル13の後に、レジスタ状態は次の
ようになる。 CAM: abcdefgabcdew___________________ MR: 00000000000000000000000000000000 テ゛ータ: w PS: 00001000000000000000000000000000 テ゛ータ: e
ようになる。 CAM: abcdefgabcdew___________________ MR: 00000000000000000000000000000000 テ゛ータ: w PS: 00001000000000000000000000000000 テ゛ータ: e
【0097】この時点で、MLAが'0'になる。MLA
が'0'であるから、PSに、最長列の最後の一致位置が
格納され、MRに、新列の一致状態が格納される。した
がって、この場合、PSの内容と一致長カウンタの内容
(この場合では5)が符号化ユニットに送られ、圧縮さ
れたトークンが生成される。また、一致長カウンタを1
にリセットする必要があり、MRの内容をPSに転送す
る必要がある。これが行われた後に、照合処理の次のサ
イクルを再開することができる。したがって、サイクル
14の後には、レジスタ状態は次のようになる。 CAM: abcdefgabcdewx__________________ MR: 00000000000000000000000000000000 テ゛ータ: x PS: 00000000000000000000000000000000 テ゛ータ: w
が'0'であるから、PSに、最長列の最後の一致位置が
格納され、MRに、新列の一致状態が格納される。した
がって、この場合、PSの内容と一致長カウンタの内容
(この場合では5)が符号化ユニットに送られ、圧縮さ
れたトークンが生成される。また、一致長カウンタを1
にリセットする必要があり、MRの内容をPSに転送す
る必要がある。これが行われた後に、照合処理の次のサ
イクルを再開することができる。したがって、サイクル
14の後には、レジスタ状態は次のようになる。 CAM: abcdefgabcdewx__________________ MR: 00000000000000000000000000000000 テ゛ータ: x PS: 00000000000000000000000000000000 テ゛ータ: w
【0098】この処理は、サイクル17の後まで継続す
る。 CAM: abcdefgabcdewxyza_______________ MR: 10000001000000000000000000000000 テ゛ータ: a PS: 00000000000000000000000000000000 テ゛ータ: z
る。 CAM: abcdefgabcdewxyza_______________ MR: 10000001000000000000000000000000 テ゛ータ: a PS: 00000000000000000000000000000000 テ゛ータ: z
【0099】サイクル18の後に、レジスタ状態は次の
ようになる。 CAM: abcdefgabcdewxyzab______________ MR: 01000000100000000000000000000000 テ゛ータ: b PS: 10001001000000000000000000000000 テ゛ータ: a
ようになる。 CAM: abcdefgabcdewxyzab______________ MR: 01000000100000000000000000000000 テ゛ータ: b PS: 10001001000000000000000000000000 テ゛ータ: a
【0100】ここでもMLAは1であるから、PSにM
atch_Loadビットがロードされ、一致長カウン
タが1つ増分される。この処理は、サイクル21の後ま
で継続する。 CAM: abcdefgabcdewxyzabcdx___________ MR: 00000000000001000000000000000000 テ゛ータ: x PS: 00010000001000000000000000000000 テ゛ータ: d
atch_Loadビットがロードされ、一致長カウン
タが1つ増分される。この処理は、サイクル21の後ま
で継続する。 CAM: abcdefgabcdewxyzabcdx___________ MR: 00000000000001000000000000000000 テ゛ータ: x PS: 00010000001000000000000000000000 テ゛ータ: d
【0101】ここでMLAが0になる。そこで、PSと
一致長カウンタが符号化ユニットに送られる。2つの等
しい列(位置0と位置7から始まる列"abcd")があるの
で、符号化ユニットは、そのうちの1つを選択して、圧
縮されたトークンを生成する。それと同時に、PSにM
Rの内容がロードされ、一致長カウンタは1にリセット
される。サイクル22の後には、レジスタ状態は次のよ
うになる。 CAM: abcdefgabcdewxyzabcdxy__________ MR: 00000000000000100000000000000000 テ゛ータ: y PS: 00000000000001000000000000000000 テ゛ータ: x
一致長カウンタが符号化ユニットに送られる。2つの等
しい列(位置0と位置7から始まる列"abcd")があるの
で、符号化ユニットは、そのうちの1つを選択して、圧
縮されたトークンを生成する。それと同時に、PSにM
Rの内容がロードされ、一致長カウンタは1にリセット
される。サイクル22の後には、レジスタ状態は次のよ
うになる。 CAM: abcdefgabcdewxyzabcdxy__________ MR: 00000000000000100000000000000000 テ゛ータ: y PS: 00000000000001000000000000000000 テ゛ータ: x
【0102】MLAは1であるから、もう1つの一致す
る列が見つかっている。この列は、サイクル28の後ま
で継続する(MLAが1になる)。 CAM: abcdefgabcdewxyzabcdxyzabcda____ MR: 10000001000000001000000100000000 テ゛ータ: a PS: 00000000000000000001000000000000 テ゛ータ: d
る列が見つかっている。この列は、サイクル28の後ま
で継続する(MLAが1になる)。 CAM: abcdefgabcdewxyzabcdxyzabcda____ MR: 10000001000000001000000100000000 テ゛ータ: a PS: 00000000000000000001000000000000 テ゛ータ: d
【0103】現在MLAは0であるから、PSと一致長
カウンタの内容が、符号化ユニットに送られ、そこで、
圧縮されたトークンが生成される。次のサイクルでは、
CAM用の制御論理機構が、End_Of_File
(ファイルの終り)信号を生成して、これ以上データ・
バイトが存在せず、列照合処理を終了しなければならな
いことをMLA回路に伝える。したがって、サイクル2
9の後には、レジスタ状態は次のようになる。 CAM: abcdefgabcdewxyzabcdxyzabcda____ MR: 00000000000000000000000000000000 テ゛ータ: _ PS: 10010001001000001000000000000000 テ゛ータ: a
カウンタの内容が、符号化ユニットに送られ、そこで、
圧縮されたトークンが生成される。次のサイクルでは、
CAM用の制御論理機構が、End_Of_File
(ファイルの終り)信号を生成して、これ以上データ・
バイトが存在せず、列照合処理を終了しなければならな
いことをMLA回路に伝える。したがって、サイクル2
9の後には、レジスタ状態は次のようになる。 CAM: abcdefgabcdewxyzabcdxyzabcda____ MR: 00000000000000000000000000000000 テ゛ータ: _ PS: 10010001001000001000000000000000 テ゛ータ: a
【0104】この時点で、最後の'a'が符号化ユニット
に送られ、生バイトとして符号化される。サイクル30
の後には、符号化ユニットがEnd_Of_File信
号を受け取り、End_Of_Fileマーカーの生成
に進み、そのマーカーを出力データ・ストリームの末尾
に付加する。
に送られ、生バイトとして符号化される。サイクル30
の後には、符号化ユニットがEnd_Of_File信
号を受け取り、End_Of_Fileマーカーの生成
に進み、そのマーカーを出力データ・ストリームの末尾
に付加する。
【0105】この1バイト毎サイクル・コード化処理を
一般化して、2バイト毎サイクル、3バイト毎サイクル
などを扱うことができる。
一般化して、2バイト毎サイクル、3バイト毎サイクル
などを扱うことができる。
【0106】<新パラダイムの変形を使用する2キャラ
クタ毎コード化サイクル>ここで図5ないし図7を参照
すると、2キャラクタ毎サイクルのLZ1977圧縮コ
ード化を実現する、もう1つの最大長パターン照合論理
配置が示されている。2キャラクタ毎サイクルの圧縮で
は、1キャラクタ毎コード化サイクルで説明した逆方向
探索の代わりに、順方向網羅的貪欲パターン照合再帰を
使用して列拡張を行うことができる。重要なことに、こ
の順方向探索は、逆方向探索に適用されたものと実質的
に同一のパート1制約とパート2制約の対象となる。
クタ毎コード化サイクル>ここで図5ないし図7を参照
すると、2キャラクタ毎サイクルのLZ1977圧縮コ
ード化を実現する、もう1つの最大長パターン照合論理
配置が示されている。2キャラクタ毎サイクルの圧縮で
は、1キャラクタ毎コード化サイクルで説明した逆方向
探索の代わりに、順方向網羅的貪欲パターン照合再帰を
使用して列拡張を行うことができる。重要なことに、こ
の順方向探索は、逆方向探索に適用されたものと実質的
に同一のパート1制約とパート2制約の対象となる。
【0107】パターン照合論理機構に、K=3キャラク
タ・バイトのルックアヘッド・バッファが含まれると仮
定する。この機構では、下記の順方向制約付き探索が使
用されるはずである。
タ・バイトのルックアヘッド・バッファが含まれると仮
定する。この機構では、下記の順方向制約付き探索が使
用されるはずである。
【0108】
【表10】
【0109】表10では、順方向探索が、パート1制約
の下で2つの処置をもたらす。ヒストリ・バッファ内の
接頭部"xxx"は、第1の再帰の間にルックアヘッド・バ
ッファから"x"を付加することによって打ち切られる。
L=1であり、L<K+1であるから、パート2制約に
従う順方向探索の処理を継続する。
の下で2つの処置をもたらす。ヒストリ・バッファ内の
接頭部"xxx"は、第1の再帰の間にルックアヘッド・バ
ッファから"x"を付加することによって打ち切られる。
L=1であり、L<K+1であるから、パート2制約に
従う順方向探索の処理を継続する。
【0110】
【表11】
【0111】表11では、右に1位置シフトした位置か
ら再帰を開始する。最初の最長の一致は、"yz"である。
したがって、K=2、L=2であり、J=K−(−L)
=K+L=2−(−2)=4である。JはK未満ではな
いので、パート2再帰はこれ以上必要ない。部分列"yz"
は、さらに拡張可能な接頭部であることに留意された
い。
ら再帰を開始する。最初の最長の一致は、"yz"である。
したがって、K=2、L=2であり、J=K−(−L)
=K+L=2−(−2)=4である。JはK未満ではな
いので、パート2再帰はこれ以上必要ない。部分列"yz"
は、さらに拡張可能な接頭部であることに留意された
い。
【0112】
【表12】
【0113】表12から、逆方向探索が、"xxx"の終了
と新接頭部"xyz"をもたらすことは明らかである。対照
的に、順方向探索は、"xxxx"の終了と新接頭部"yz"をも
たらす。
と新接頭部"xyz"をもたらすことは明らかである。対照
的に、順方向探索は、"xxxx"の終了と新接頭部"yz"をも
たらす。
【0114】<1コード化サイクルあたり2キャラクタ
のパターン照合論理機構>もう一度図5ないし図7を参
照すると、CAMは、ヒストリ・バッファを構成する。
また、用語「ルックアサイド」と「ルックアヘッド」
は、交換可能に使用される。
のパターン照合論理機構>もう一度図5ないし図7を参
照すると、CAMは、ヒストリ・バッファを構成する。
また、用語「ルックアサイド」と「ルックアヘッド」
は、交換可能に使用される。
【0115】図5の実施例には、スライディング・ウィ
ンドウ・ヒストリ・バッファ(以下、バッファと呼称す
る)605と比較論理機構607が含まれる。複数の要
素が、図2に示された一致ルックアサイド論理およびバ
ッファ・ユニット11に関与する。図5からわかるよう
に、これには、書込み選択(WS)レジスタ603と、
バッファ605と、ゲート・レジスタ604と、図7
の、一致結果を生成する比較回路AND/OR論理機構
677、679および681が含まれる。この回路に
は、T1 BYTE(t1バイト)およびT2 BYT
E(t2バイト)と記された2つの入力がある。単一バ
イト圧縮ハードウェアを使用してこれら2バイトを処理
する場合、t1バイトが第1サイクルで処理され、t2
バイトが第2サイクルで処理される。
ンドウ・ヒストリ・バッファ(以下、バッファと呼称す
る)605と比較論理機構607が含まれる。複数の要
素が、図2に示された一致ルックアサイド論理およびバ
ッファ・ユニット11に関与する。図5からわかるよう
に、これには、書込み選択(WS)レジスタ603と、
バッファ605と、ゲート・レジスタ604と、図7
の、一致結果を生成する比較回路AND/OR論理機構
677、679および681が含まれる。この回路に
は、T1 BYTE(t1バイト)およびT2 BYT
E(t2バイト)と記された2つの入力がある。単一バ
イト圧縮ハードウェアを使用してこれら2バイトを処理
する場合、t1バイトが第1サイクルで処理され、t2
バイトが第2サイクルで処理される。
【0116】当初は、WSレジスタ603のWS(0)
だけに1つの'0'が格納され、WSアドレスの残りに
は、'1'が格納される。この'0'の位置は、2バイトが
書き込まれる記憶レジスタ内の2つの現在位置を表す。
WS(i)が0の場合、CAM(2×i)にt1バイト
が書き込まれ、CAM(2×i+1)にt2バイトが書
き込まれる。したがって、WS内のビット数は、CAM
内の位置の数の1/2である。各サイクルの後に、WS
が1つだけ回転される。
だけに1つの'0'が格納され、WSアドレスの残りに
は、'1'が格納される。この'0'の位置は、2バイトが
書き込まれる記憶レジスタ内の2つの現在位置を表す。
WS(i)が0の場合、CAM(2×i)にt1バイト
が書き込まれ、CAM(2×i+1)にt2バイトが書
き込まれる。したがって、WS内のビット数は、CAM
内の位置の数の1/2である。各サイクルの後に、WS
が1つだけ回転される。
【0117】本発明の目的のために、CAMは、バッフ
ァ605、比較論理機構607、ゲート・レジスタ60
4および付随するWSレジスタ603を含むものとみな
される。
ァ605、比較論理機構607、ゲート・レジスタ60
4および付随するWSレジスタ603を含むものとみな
される。
【0118】ゲート・レジスタ(G)は、CAMのどの
位置に有効なデータが格納されるかを追跡するのに使用
される。当初、Gは0にセットされ、各サイクルの後
に、Gに「1」がシフトされる。また、各サイクルに2
バイトが書き込まれるので、Gのビット数は、CAMの
位置の数の1/2である。G(i)が'0'の場合、CA
M(2×i)とCAM(2×i+1)にはまだ有効なデ
ータが格納されておらず、これら2つの位置の一致結果
をマスクする必要がある。
位置に有効なデータが格納されるかを追跡するのに使用
される。当初、Gは0にセットされ、各サイクルの後
に、Gに「1」がシフトされる。また、各サイクルに2
バイトが書き込まれるので、Gのビット数は、CAMの
位置の数の1/2である。G(i)が'0'の場合、CA
M(2×i)とCAM(2×i+1)にはまだ有効なデ
ータが格納されておらず、これら2つの位置の一致結果
をマスクする必要がある。
【0119】t1バイトは、必ずCAMの偶数位置に書
き込まれ、t1バイトは、書き込まれている間に、CA
M内のすべての位置と比較され、一致状態が生成され
る。CAMのすぐ右にある比較器の組が、t1バイトと
CAMの比較に使用される。しかし、この比較結果は、
マスクする必要がある場合があり、比較器の後のAND
ゲートの組が、t1比較結果のゲーティングを表す。し
かし、偶数一致と奇数一致のゲーティングは、わずかに
異なる。 t1_match(2×i+1) <= compare(CAM(2×i+1), t1_byte)
AND G(i); t1_match(2×i) <= compare(CAM(2×i), t1_byte)
AND WS(i) AND G(i);
き込まれ、t1バイトは、書き込まれている間に、CA
M内のすべての位置と比較され、一致状態が生成され
る。CAMのすぐ右にある比較器の組が、t1バイトと
CAMの比較に使用される。しかし、この比較結果は、
マスクする必要がある場合があり、比較器の後のAND
ゲートの組が、t1比較結果のゲーティングを表す。し
かし、偶数一致と奇数一致のゲーティングは、わずかに
異なる。 t1_match(2×i+1) <= compare(CAM(2×i+1), t1_byte)
AND G(i); t1_match(2×i) <= compare(CAM(2×i), t1_byte)
AND WS(i) AND G(i);
【0120】t1バイトは、CAM内の奇数位置には絶
対に書き込まれないので、比較結果は、これらの位置に
前に書き込まれたデータが格納されている(G='1')
場合に有効になる。しかし、偶数位置に関しては、これ
らの位置に前に書き込まれたデータが格納されており
(G='1')、現在の比較位置が書き込まれていない
(WS='1')場合に限って有効である。
対に書き込まれないので、比較結果は、これらの位置に
前に書き込まれたデータが格納されている(G='1')
場合に有効になる。しかし、偶数位置に関しては、これ
らの位置に前に書き込まれたデータが格納されており
(G='1')、現在の比較位置が書き込まれていない
(WS='1')場合に限って有効である。
【0121】t2バイトは、必ずCAMの奇数位置に書
き込まれ、t2バイトも、CAM内の全ての位置と比較
する必要がある。しかし、t2バイトについては、わず
かな変更がある。単一バイトCAMの場合、t2バイト
が位置2×i+1に書き込まれる時までに、2×i番目
の位置に既にt1バイトが格納されている。したがっ
て、t2バイトは、t2バイトが書き込まれつつある位
置の真下の位置を除く(この場合、t2バイトは、t1
バイトと比較する必要がある)、CAM内の全ての位置
と比較する必要がある。
き込まれ、t2バイトも、CAM内の全ての位置と比較
する必要がある。しかし、t2バイトについては、わず
かな変更がある。単一バイトCAMの場合、t2バイト
が位置2×i+1に書き込まれる時までに、2×i番目
の位置に既にt1バイトが格納されている。したがっ
て、t2バイトは、t2バイトが書き込まれつつある位
置の真下の位置を除く(この場合、t2バイトは、t1
バイトと比較する必要がある)、CAM内の全ての位置
と比較する必要がある。
【0122】下記を仮定する。
【0123】これが必要な理由を知るためには、t1バ
イトがサイクル1で処理され、t2バイトがサイクル2
で処理される単一バイト/サイクルCAMを検討された
い。t2バイトが処理される時までに、CAMにa a b
c a e f gが格納される。
イトがサイクル1で処理され、t2バイトがサイクル2
で処理される単一バイト/サイクルCAMを検討された
い。t2バイトが処理される時までに、CAMにa a b
c a e f gが格納される。
【0124】t1バイトはCAMの奇数位置に絶対に書
き込まれないので、t2バイトは、変更なしでCAMの
奇数位置と比較することができる。偶数CAM位置の場
合、MUX(マルチプレクサ)を使用して、t2バイト
をCAMの内容と比較するのか、t1バイトと比較する
のかを選択する。WS(i)='1'の場合、t2バイト
はCAM(2×i)と比較され、WS(i)='0'の場
合、t2バイトはt1バイトと比較される。 location(2×i) <= CAM(2×i) when (WS(i) = '1') e
lse t1_byte; location(2×i+1) <= CAM(2×i+1);
き込まれないので、t2バイトは、変更なしでCAMの
奇数位置と比較することができる。偶数CAM位置の場
合、MUX(マルチプレクサ)を使用して、t2バイト
をCAMの内容と比較するのか、t1バイトと比較する
のかを選択する。WS(i)='1'の場合、t2バイト
はCAM(2×i)と比較され、WS(i)='0'の場
合、t2バイトはt1バイトと比較される。 location(2×i) <= CAM(2×i) when (WS(i) = '1') e
lse t1_byte; location(2×i+1) <= CAM(2×i+1);
【0125】最後に、t2バイト一致結果も、マスクす
る必要がある可能性がある。
る必要がある可能性がある。
【0126】奇数位置の場合、比較結果は、その位置に
前に書き込まれたデータが格納され(G='1')、現在
位置が書込み中でない(WS='1')場合に有効にな
る。偶数位置の場合、比較結果は、CAMの前の偶数位
置に有効なデータが格納されている場合に有効である。
G(i)=0の時には、CAM(2×i)とCAM(2
×i+1)がまだ書き込まれていないのでこうなる可能
性があり、さもなければ、現在CAM(2×i)にt1
バイトを書込み中で、CAM(2×i+1)にt2バイ
トを書込み中である可能性がある。第1の場合では、t
2 match(2×i+1)をマスクしなければなら
ないが、第2の場合には、t2 match(2×i+
1)をマスクしてはならない。しかし、前のGビットを
調べることによって、どちらの場合であるかを判定する
ことができる。前のGビットが'0'の場合、CAM位置
2×iと2×i+1に有効なデータが格納されている可
能性はなく、比較結果をマスクしなければならない。
前に書き込まれたデータが格納され(G='1')、現在
位置が書込み中でない(WS='1')場合に有効にな
る。偶数位置の場合、比較結果は、CAMの前の偶数位
置に有効なデータが格納されている場合に有効である。
G(i)=0の時には、CAM(2×i)とCAM(2
×i+1)がまだ書き込まれていないのでこうなる可能
性があり、さもなければ、現在CAM(2×i)にt1
バイトを書込み中で、CAM(2×i+1)にt2バイ
トを書込み中である可能性がある。第1の場合では、t
2 match(2×i+1)をマスクしなければなら
ないが、第2の場合には、t2 match(2×i+
1)をマスクしてはならない。しかし、前のGビットを
調べることによって、どちらの場合であるかを判定する
ことができる。前のGビットが'0'の場合、CAM位置
2×iと2×i+1に有効なデータが格納されている可
能性はなく、比較結果をマスクしなければならない。
【0127】しかし、前のGビットが'1'の場合、これ
は、CAM位置2×iと2×i+1に有効なデータが格
納されているか、これらが現在書込み中であるかのいず
れかであることを意味し、このt2_match(2×
i)とt2_match(2×i+1)の両方をマスク
しなければならない。必要なもう1つの変更は、t2_
match(0)の場合である。この位置の場合、ゲー
ティングは必要ない。 t2_match(2×i) <= compare(location(2×i), t2_byt
e) AND G (i-1); t2_match(2×i+1) <= compare(location(2×i+1), t2_b
yte) AND G (i) ANDWS (i); t2_match(0) <= compare(location(0), t2_byte);
は、CAM位置2×iと2×i+1に有効なデータが格
納されているか、これらが現在書込み中であるかのいず
れかであることを意味し、このt2_match(2×
i)とt2_match(2×i+1)の両方をマスク
しなければならない。必要なもう1つの変更は、t2_
match(0)の場合である。この位置の場合、ゲー
ティングは必要ない。 t2_match(2×i) <= compare(location(2×i), t2_byt
e) AND G (i-1); t2_match(2×i+1) <= compare(location(2×i+1), t2_b
yte) AND G (i) ANDWS (i); t2_match(0) <= compare(location(0), t2_byte);
【0128】<1サイクルあたり2キャラクタの例1>
16バイトのCAMが存在し、左が位置0、右が位置1
5であると仮定する。このCAMは、ラップ・アラウン
ドを使用して左から右に書き込まれる。したがって、最
初のサイクルでは位置0および位置1が書き込まれ、次
のサイクルでは位置2および位置3、その次は位置4お
よび位置5、…、位置14および15、その次には再び
位置0および位置1が書き込まれる。また、入力ストリ
ームは、"therefore the theme then"であると仮定す
る。t1 MRegとt2 MRegは、一致条件にあ
るラッチされたバージョンである(すなわちレジスタの
出力である)。
16バイトのCAMが存在し、左が位置0、右が位置1
5であると仮定する。このCAMは、ラップ・アラウン
ドを使用して左から右に書き込まれる。したがって、最
初のサイクルでは位置0および位置1が書き込まれ、次
のサイクルでは位置2および位置3、その次は位置4お
よび位置5、…、位置14および15、その次には再び
位置0および位置1が書き込まれる。また、入力ストリ
ームは、"therefore the theme then"であると仮定す
る。t1 MRegとt2 MRegは、一致条件にあ
るラッチされたバージョンである(すなわちレジスタの
出力である)。
【0129】サイクル1の後には CAM: th______________ er t2 MReg: 0000000000000000 t1 MReg: 0000000000000000
【0130】サイクル2の後には CAM: ther____________ ef t2 MReg: 0000000000000000 t1 MReg: 0000000000000000
【0131】サイクル3の後には CAM: theref__________ or t2 MReg: 0000000000000000 t1 MReg: 0010000000000000
【0132】サイクル4の後には CAM: therefor________ e t2 MReg: 0000000000000000 t1 MReg: 0000000000000000
【0133】サイクル5の後には CAM: therefore ______ th t2 MReg: 0000000000000000 t1 MReg: 0010100000000000
【0134】サイクル6の後には CAM: therefore th____ e t2 MReg: 0100000000000000 t1 MReg: 1000000000000000
【0135】サイクル7の後には CAM: therefore the __ th t2 MReg: 0000000001000000 t1 MReg: 0010100010000000
【0136】サイクル8の後には CAM: therefore the th em t2 MReg: 0100000000010000 t1 MReg: 1000000000100000
【0137】サイクル9の後には CAM: emerefore the th e t2 MReg: 0000000000000000 t1 MReg: 0010100010001000
【0138】サイクル10の後には CAM: eme efore the th th t2 MReg: 0000000001000100 t1 MReg: 0000100010001000
【0139】サイクル11の後には CAM: eme thore the th en t2 MReg: 0000000000010001 t1 MReg: 0000000000100010
【0140】サイクル12の後には CAM: eme thene the th __ t2 MReg: 0000000000000000 t1 MReg: 1010000010001000 となる。
【0141】<1サイクルあたり2キャラクタの例2>
16キャラクタCAMが入力列"abaaaaaa"と共に使用さ
れると仮定する。
16キャラクタCAMが入力列"abaaaaaa"と共に使用さ
れると仮定する。
【0142】サイクル1の後には CAM: ab______________ aa t2 MReg: 0000000000000000 t1 MReg: 0000000000000000
【0143】この場合、t1バイトから見たCAM
は、"ab______________"を含むように見える。
は、"ab______________"を含むように見える。
【0144】t2バイトからは、実際には"aba________
_____"を含むCAMが見えなければならない。
_____"を含むCAMが見えなければならない。
【0145】この2番目の'a'は、t1バイトに起因す
るものである。図5の比較器617に供給するマルチプ
レクサ615の組は、この目的のためにある。このマル
チプレクサの組と、それに対応するゲーティング論理機
構610が、ルックアヘッド論理機構またはルックアサ
イド論理機構を形成する。ルックアヘッド・バッファ
は、入力バイトを参照するが、ルックアヘッド論理機構
は、t2バイトのために正しい一致状態を生成する論理
機構を指すことに留意されたい。
るものである。図5の比較器617に供給するマルチプ
レクサ615の組は、この目的のためにある。このマル
チプレクサの組と、それに対応するゲーティング論理機
構610が、ルックアヘッド論理機構またはルックアサ
イド論理機構を形成する。ルックアヘッド・バッファ
は、入力バイトを参照するが、ルックアヘッド論理機構
は、t2バイトのために正しい一致状態を生成する論理
機構を指すことに留意されたい。
【0146】サイクル2の後には CAM: abaa____________ aa t2 MReg: 1010000000000000 t1 MReg: 1000000000000000
【0147】サイクル3の後には CAM: abaaaa__________ aa t2 MReg: 1011100000000000 t1 MReg: 1011000000000000
【0148】サイクル4の後には CAM: abaaaaaa________ __ t2 MReg: 1011111000000000 t1 MReg: 1011110000000000 になる。
【0149】<1サイクルあたり2キャラクタのパター
ン照合ルックアヘッド>第1段の出力(t1_matc
hとt2_match)は、ラッチされ、次の段の論理
機構に供給され、そこで、一致ルックアヘッド(ML
A)状態が生成される。MLA信号の生成を、図7に示
す。これらは、単一バイトの場合のMLAの単純な拡張
であり、3MLAの場合の式は、下記のとおりである
(8バイトCAMの場合)。
ン照合ルックアヘッド>第1段の出力(t1_matc
hとt2_match)は、ラッチされ、次の段の論理
機構に供給され、そこで、一致ルックアヘッド(ML
A)状態が生成される。MLA信号の生成を、図7に示
す。これらは、単一バイトの場合のMLAの単純な拡張
であり、3MLAの場合の式は、下記のとおりである
(8バイトCAMの場合)。
【0150】 M3Load(0) <= PS(6) AND t1MReg(7) AND t2MReg(0); M3Load(1) <= PS(7) AND t1MReg(0) AND t2MReg(1); M3Load(2) <= PS(0) AND t1MReg(1) AND t2MReg(2); M3Load(3) <= PS(1) AND t1MReg(2) AND t2MReg(3); M3Load(4) <= PS(2) AND t1MReg(3) AND t2MReg(4); M3Load(5) <= PS(3) AND t1MReg(4) AND t2MReg(5); M3Load(6) <= PS(4) AND t1MReg(5) AND t2MReg(6); M3Load(7) <= PS(5) AND t1MReg(6) AND t2MReg(7); MLA3 <= M3Load(0) OR M3Load(1) OR M3Load(2) OR M3L
oad(3) ORM3Load(4) OR M3Load(5) OR M3Load(6) OR M3
Load(7); M2Load(0) <= t1Mreg(7) AND t2MReg(0); M2Load(1) <= t1Mreg(0) AND t2MReg(1); M2Load(2) <= t1Mreg(1) AND t2MReg(2); M2Load(3) <= t1Mreg(2) AND t2MReg(3); M2Load(4) <= t1Mreg(3) AND t2MReg(4); M2Load(5) <= tlMreg(4) AND t2MReg(5); M2Load(6) <= tlMreg(5) AND t2MReg(6); M2Load(7) <= tlMreg(6) AND t2MReg(7); MLA2 <= M2Load(0) OR M2Load(1) OR M2Load(2) OR M2L
oad(3) ORM2Load(4) OR M2Load(5) OR M2Load(6) OR M2
Load(7); M1Load(0) <= PS(7) AND t1MReg(0); M1Load(1) <= PS(0) AND tlMReg(1); M1Load(2) <= PS(1) AND t1MReg(2); M1Load(3) <= PS(2) AND t1MReg(3); M1Load(4) <= PS(3) AND t1MReg(4); M1Load(5) <= PS(4) AND t1MReg(5); M1Load(6) <= PS(5) AND t1MReg(6); MlLoad(7) <= PS(6) AND t1MReg(7); MLA1 <= M1Load(0) OR M1Load(1) OR M1Load(2) OR M1L
oad(3) ORM1Load(4) OR M1Load(5) OR M1Load(6) OR M1
Load(7); MLA3 = MLA(0, 2), MLA2 = MLA(1, 2), MLA1 = MLA(0,
1)
oad(3) ORM3Load(4) OR M3Load(5) OR M3Load(6) OR M3
Load(7); M2Load(0) <= t1Mreg(7) AND t2MReg(0); M2Load(1) <= t1Mreg(0) AND t2MReg(1); M2Load(2) <= t1Mreg(1) AND t2MReg(2); M2Load(3) <= t1Mreg(2) AND t2MReg(3); M2Load(4) <= t1Mreg(3) AND t2MReg(4); M2Load(5) <= tlMreg(4) AND t2MReg(5); M2Load(6) <= tlMreg(5) AND t2MReg(6); M2Load(7) <= tlMreg(6) AND t2MReg(7); MLA2 <= M2Load(0) OR M2Load(1) OR M2Load(2) OR M2L
oad(3) ORM2Load(4) OR M2Load(5) OR M2Load(6) OR M2
Load(7); M1Load(0) <= PS(7) AND t1MReg(0); M1Load(1) <= PS(0) AND tlMReg(1); M1Load(2) <= PS(1) AND t1MReg(2); M1Load(3) <= PS(2) AND t1MReg(3); M1Load(4) <= PS(3) AND t1MReg(4); M1Load(5) <= PS(4) AND t1MReg(5); M1Load(6) <= PS(5) AND t1MReg(6); MlLoad(7) <= PS(6) AND t1MReg(7); MLA1 <= M1Load(0) OR M1Load(1) OR M1Load(2) OR M1L
oad(3) ORM1Load(4) OR M1Load(5) OR M1Load(6) OR M1
Load(7); MLA3 = MLA(0, 2), MLA2 = MLA(1, 2), MLA1 = MLA(0,
1)
【0151】PSは、接頭部拡張または主選択レジスタ
であり、t1MRegおよびt2MRegは、t1一致
状態とt2一致状態の格納に使用されるレジスタであ
る。MLAは、どのサイズのCAMについても生成可能
である。下の例では、列照合処理が、順方向で行われ
る。
であり、t1MRegおよびt2MRegは、t1一致
状態とt2一致状態の格納に使用されるレジスタであ
る。MLAは、どのサイズのCAMについても生成可能
である。下の例では、列照合処理が、順方向で行われ
る。
【0152】<1サイクルあたり2キャラクタの例3>
CAMが16キャラクタ・バイトを記憶し、入力列が"x
yzxxxxxxxyz"であると仮定する。
CAMが16キャラクタ・バイトを記憶し、入力列が"x
yzxxxxxxxyz"であると仮定する。
【0153】一致長が1にプリセットされ、t1バイト
がt1 BRegレジスタに格納され、t2バイトがt
2 BRegレジスタに格納されることに留意された
い。
がt1 BRegレジスタに格納され、t2バイトがt
2 BRegレジスタに格納されることに留意された
い。
【0154】サイクル1の後には CAM: xy______________ zx t2 MReg: 0000000000000000 t2 BReg: y t1 MReg: 0000000000000000 t1 BReg: x PS: 0000000000000000 PS Byte: _ Length: 1 になる。
【0155】この場合、MLA3−1は、全ビット0で
あり、したがって、PSに記憶される列は、これまでに
見つかった最長の列であり、t1 BRegは生バイト
である。PS Byteには、有効なデータが格納され
ていないので、これをコード化する必要はない。また、
t1 BRegは、生バイトとして符号化ユニットに送
られたばかりである。次に、t2 BregをPS B
yteへ、t2 MRegをPSへコピーする。という
のは、'y'が新列の始まりを表すからである。
あり、したがって、PSに記憶される列は、これまでに
見つかった最長の列であり、t1 BRegは生バイト
である。PS Byteには、有効なデータが格納され
ていないので、これをコード化する必要はない。また、
t1 BRegは、生バイトとして符号化ユニットに送
られたばかりである。次に、t2 BregをPS B
yteへ、t2 MRegをPSへコピーする。という
のは、'y'が新列の始まりを表すからである。
【0156】サイクル2の後には CAM: xyzx____________ xx t2 MReg: 1000000000000000 t2 BReg: x t1 MReg: 0000000000000000 t1 BReg: z PS: 0000000000000000 PS Byte: y Length: 1 になる。
【0157】この場合、MLA3−1は全ビット0であ
り、したがって、PS、PS ByteおよびLeng
thが符号化ユニットに送られ、符号化ユニットでは、
Lengthが1であるから、PS Byteが生バイ
トとして符号化される。また、t1 BRegは、生キ
ャラクタまたは生バイトとして符号化ユニットに送られ
る。ここで、t2 MRegがPSにコピーされ、t2
BRegがPS Byteにコピーされるように、レ
ジスタ内容をコピーする。
り、したがって、PS、PS ByteおよびLeng
thが符号化ユニットに送られ、符号化ユニットでは、
Lengthが1であるから、PS Byteが生バイ
トとして符号化される。また、t1 BRegは、生キ
ャラクタまたは生バイトとして符号化ユニットに送られ
る。ここで、t2 MRegがPSにコピーされ、t2
BRegがPS Byteにコピーされるように、レ
ジスタ内容をコピーする。
【0158】サイクル3の後には CAM: xyzxxx__________ xx t2 MReg: 1001100000000000 t2 BReg: x t1 MReg: 1001000000000000 t1 BReg: x PS: 1000000000000000 PS Byte: x Length: 1 になる。
【0159】この場合、MLA3=0であるから、t1
BRegとt2 Bregは、どちらも現在PSに記
憶されている列の一部ではない。探索は順方向で実行さ
れているので、t1 BRegがPSに記憶された列の
一部であるかどうかを判定することが望ましい。しか
し、MLA1は0であるから、t1 BRegはPSに
ある列の一部ではない。したがって、PSに記憶された
列が終了したことがわかり、PS、PS Byteおよ
びLengthが符号化ユニットに送られ、その結果、
PS Byteを正しく符号化できるようになる。ここ
で、MLA2に対する検査を実行するが、MLA2は1
である。これによって、t1 BRegとt2 BRe
gが、少なくとも2キャラクタ長の列を形成することが
明らかになる。この列は拡張される可能性があるので、
Lengthを2にセットし、t2BRegをPS B
yteにコピーし、M2LoadをPSにコピーする。
BRegとt2 Bregは、どちらも現在PSに記
憶されている列の一部ではない。探索は順方向で実行さ
れているので、t1 BRegがPSに記憶された列の
一部であるかどうかを判定することが望ましい。しか
し、MLA1は0であるから、t1 BRegはPSに
ある列の一部ではない。したがって、PSに記憶された
列が終了したことがわかり、PS、PS Byteおよ
びLengthが符号化ユニットに送られ、その結果、
PS Byteを正しく符号化できるようになる。ここ
で、MLA2に対する検査を実行するが、MLA2は1
である。これによって、t1 BRegとt2 BRe
gが、少なくとも2キャラクタ長の列を形成することが
明らかになる。この列は拡張される可能性があるので、
Lengthを2にセットし、t2BRegをPS B
yteにコピーし、M2LoadをPSにコピーする。
【0160】サイクル4の後には CAM: xyzxxxxx________ xx t2 MReg: 1001111000000000 t2 BReg: x t1 MReg: 1001110000000000 t1 BReg: x PS: 0000100000000000 PS Byte: x Length: 2 になる。
【0161】この場合、MLA3=1であり、これは、
t1 BRegとt2 BRegがPSに記憶された列
の一部であることを意味する。Lengthを2つ増分
し、t2 BRegをPS Byteにコピーし、M3
LoadをPSにコピーする。列の終りがまだ見つかっ
ていないので、符号化ユニットにはキャラクタを送らな
い。また、この場合、MLA1とMLA2も1である
が、最長一致を探しているので、MLA3がMLA1や
MLA2より高い優先順位を有する。
t1 BRegとt2 BRegがPSに記憶された列
の一部であることを意味する。Lengthを2つ増分
し、t2 BRegをPS Byteにコピーし、M3
LoadをPSにコピーする。列の終りがまだ見つかっ
ていないので、符号化ユニットにはキャラクタを送らな
い。また、この場合、MLA1とMLA2も1である
が、最長一致を探しているので、MLA3がMLA1や
MLA2より高い優先順位を有する。
【0162】サイクル5の後には CAM: xyzxxxxxxx______ yz t2 MReg: 1001111110000000 t2 BReg: x t1 MReg: 1001111100000000 t1 BReg: x PS: 0000001000000000 PS Byte: x Length: 4 になる
【0163】この場合、MLA3がやはり1であるか
ら、Lengthを2つ増分し、t2BRegをPS
Byteにコピーし、M3LoadをPSにコピーす
る。
ら、Lengthを2つ増分し、t2BRegをPS
Byteにコピーし、M3LoadをPSにコピーす
る。
【0164】サイクル6の後には CAM: xyzxxxxxxxyz____ __ t2 MReg: 0010000000000000 t2 BReg: z t1 MReg: 0100000000000000 t1 BReg: y PS 0000000010000000 PS Byte: x Length: 6 になる。
【0165】この時、MLA3とMLA1の両方が0で
あるから、PSに記憶された列が終了した。ここで、P
S、PS ByteおよびLengthを、符号化ユニ
ットに送る。MLA2は1であるから、この列は、少な
くとも2の長さを有する。したがって、Lengthは
2になり、t2 BRegがPS Byteへ、M2L
oadがPSへコピーされる。
あるから、PSに記憶された列が終了した。ここで、P
S、PS ByteおよびLengthを、符号化ユニ
ットに送る。MLA2は1であるから、この列は、少な
くとも2の長さを有する。したがって、Lengthは
2になり、t2 BRegがPS Byteへ、M2L
oadがPSへコピーされる。
【0166】サイクル7の後には CAM: xyzxxxxxxxyz____ __ t2 MReg: 0000000000000000 t2 BReg: _ t1 MReg: 0000000000000000 t1 BReg: _ PS: 0010000000000000 PS Byte: z Length: 2 になる。
【0167】ここでMLA3−1は0であるから、PS
に記憶された列が終了した。ここで、PS、PS By
teおよびLengthを符号化ユニットに送る。入力
キャラクタ/バイトの列を使い果たしたので、ここで処
理を終了する。
に記憶された列が終了した。ここで、PS、PS By
teおよびLengthを符号化ユニットに送る。入力
キャラクタ/バイトの列を使い果たしたので、ここで処
理を終了する。
【0168】1バイトCAMでのように2バイトにまた
がって探すのではなく、2バイトCAMの場合、一致ル
ックアヘッドは、3バイトにまたがって行わなければな
らない。MLAが生成された後に、PSレジスタのロー
ドを下記に従って制御することができる。MLAと制御
信号の生成は、図4に示された一致拡張論理機構に対応
する。
がって探すのではなく、2バイトCAMの場合、一致ル
ックアヘッドは、3バイトにまたがって行わなければな
らない。MLAが生成された後に、PSレジスタのロー
ドを下記に従って制御することができる。MLAと制御
信号の生成は、図4に示された一致拡張論理機構に対応
する。
【0169】ここで図7を参照すると、PSラッチと一
致長カウンタのロードに必要なデータ経路と処理論理機
構が示されている。図5ないし図7に示された論理配置
は、図4の一致拡張論理機構および接頭部レジスタのデ
ータ・フロー論理の回路論理実施態様である。
致長カウンタのロードに必要なデータ経路と処理論理機
構が示されている。図5ないし図7に示された論理配置
は、図4の一致拡張論理機構および接頭部レジスタのデ
ータ・フロー論理の回路論理実施態様である。
【0170】ここで図8および図9を参照すると、1サ
イクルあたり2キャラクタのパターン照合の実施例で一
致ルックアヘッド(MLA)信号の形成に含まれる制御
の流れと選択されたレジスタの状態が示されている。こ
れらの図には、2キャラクタ処理の場合に使用されるス
テップが示され、MLA信号の状態が示されている。
イクルあたり2キャラクタのパターン照合の実施例で一
致ルックアヘッド(MLA)信号の形成に含まれる制御
の流れと選択されたレジスタの状態が示されている。こ
れらの図には、2キャラクタ処理の場合に使用されるス
テップが示され、MLA信号の状態が示されている。
【0171】<順方向または逆方向の網羅的貪欲再帰探
索>1サイクルあたり複数バイトを処理するためには、
MLA信号の完全な組を生成しなければならない。ML
A信号の完全な組が使用可能であるから、MLA信号を
テストする順序を変更することによって、順方向または
逆方向のいずれかで探索を行うことができる。
索>1サイクルあたり複数バイトを処理するためには、
MLA信号の完全な組を生成しなければならない。ML
A信号の完全な組が使用可能であるから、MLA信号を
テストする順序を変更することによって、順方向または
逆方向のいずれかで探索を行うことができる。
【0172】たとえば、1サイクルあたり2キャラクタ
を処理する場合、3つのMLA信号すなわち、MLA
3、MLA2およびMLA1が存在する。まず、MLA
3が1であるかどうかを調べるためにテストを行う必要
がある。MLA3が1であるならば、最長一致が見つか
っており、MLA1やMLA2をテストする必要はな
い。MLA3が0であるならば、MLA1とMLA2を
テストする必要がある。
を処理する場合、3つのMLA信号すなわち、MLA
3、MLA2およびMLA1が存在する。まず、MLA
3が1であるかどうかを調べるためにテストを行う必要
がある。MLA3が1であるならば、最長一致が見つか
っており、MLA1やMLA2をテストする必要はな
い。MLA3が0であるならば、MLA1とMLA2を
テストする必要がある。
【0173】MLA2を先にテストする場合、逆方向探
索が行われている。逆に、MLA1を先にテストする場
合、順方向探索が行われている。
索が行われている。逆に、MLA1を先にテストする場
合、順方向探索が行われている。
【0174】<拡張>本発明の方法および手段に対する
拡張の1つが、1サイクルあたりに処理されるキャラク
タの数であるキャラクタ容量Kを3以上にセットするこ
とである。また、順方向探索を拡張して、この範囲を含
めることができる。これに関しては、図10を参照され
たい。この図には、1コード化サイクルあたり3キャラ
クタの実施態様での制御の流れと選択されたMLA信号
の状態が示されている。
拡張の1つが、1サイクルあたりに処理されるキャラク
タの数であるキャラクタ容量Kを3以上にセットするこ
とである。また、順方向探索を拡張して、この範囲を含
めることができる。これに関しては、図10を参照され
たい。この図には、1コード化サイクルあたり3キャラ
クタの実施態様での制御の流れと選択されたMLA信号
の状態が示されている。
【0175】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0176】(1)ヒストリ・バッファに記憶された第
1キャラクタ列の部分列とルックアヘッド・バッファに
記憶された第2キャラクタ列の部分列との間のパターン
一致を探索するための方法であって、(a)順序付けら
れた1組の再帰間隔に沿って順方向または逆方向のいず
れか1つの方向で一貫してバッファ内の第1および第2
のキャラクタ列に対して再帰的比較照合を実行すること
によって、第1キャラクタ列から第2キャラクタ列へ拡
張される部分列接頭部を含む1つまたは複数の最長部分
列を解析するステップと、(b)キャラクタが上記組の
次の再帰間隔にわたって一致を継続するかどうかに従っ
て、ステップ(a)の間に解析された前の列の接頭部を
継続するかまたは打ち切るステップと、(c)解析され
た部分列から次サイクル用の新しい接頭部を決定するス
テップとを各サイクル中に含む探索方法。 (2)ステップ(a)で、再帰的比較照合が、逆方向で
あることを特徴とし、さらに、ルックアヘッド・バッフ
ァ内のすべての部分列を解析するステップを含む、上記
(1)に記載の方法。 (3)ヒストリ・バッファに記憶された第1キャラクタ
列の部分列とルックアヘッド・バッファに記憶された第
2キャラクタ列の部分列との間でのパターン一致を探索
するための方法であって、(a)第1キャラクタ列と第
2キャラクタ列に対してこれらの間でのキャラクタの部
分列に対して同一の再帰方向で一貫して比較照合を再帰
的に実行することによって、第1キャラクタ列から第2
キャラクタ列に拡張されるどんな接頭部をも含む、第2
列のキャラクタと第1列のキャラクタとの間の最大部分
列パターン一致をすべて確認するステップと、(b)確
認された全ての最大部分列パターン一致のルックアヘッ
ド・バッファおよびヒストリ・バッファでの位置を指示
し、そのサイクル中にルックアヘッド・バッファからヒ
ストリ・バッファへの接頭部拡張を終了するキャラクタ
を転送するステップと、(c)第2キャラクタ列が使い
果たされるまで、ステップ(a)およびステップ(b)
を繰り返すステップとを各サイクル中に含む、探索方
法。 (4)ステップ(a)で、再帰方向が逆方向であり、ヒ
ストリ・バッファ内の第1列のキャラクタを含みこれを
通って延びるキャラクタの数が増加する入れ子式順序で
ルックアヘッド・バッファ内の第2列のキャラクタを出
す、上記(3)に記載の方法。 (5)ステップ(a)で、再帰方向が逆方向であり、ル
ックアヘッド・バッファ内の第2列のキャラクタを含み
これを通って延びるキャラクタの数が増加する入れ子式
順序でヒストリ・バッファ内の第1列のキャラクタを出
す、上記(3)に記載の方法。 (6)第1キャラクタ列と第2キャラクタ列との間のパ
ターン一致を探索するための方法であって、 (a)各サイクル中に、(1)ヒストリ・バッファ(C
AM)に記憶される前記第1キャラクタ列とルックアヘ
ッド・バッファに記憶される前記第2キャラクタ列に対
してこれらの間でキャラクタの部分列に対して逆方向の
網羅的貪欲比較照合を再帰的に実行することによって、
第1キャラクタ列から第2キャラクタ列へ拡張されるど
んな接頭部をも含む、第2列のキャラクタと第1列のキ
ャラクタとの間の最大部分列パターン一致をすべて確認
するステップと、(2)確認された全ての最大部分列パ
ターン一致のルックアヘッド・バッファおよびヒストリ
・バッファでの位置を指示し、そのサイクル中にルック
アヘッド・バッファからヒストリ・バッファへ処理され
たキャラクタを転送するステップと、 (b)第2列が使い果たされるまで、ステップ(a)を
繰り返すステップとを含む方法。 (7)前記方法のステップ(a)が、さらに、(3)最
大パターン一致の終了位置を示す信号に応答して、ヒス
トリ・バッファ内での以前に出現した一致したパターン
を示すポインタを出力列に付加し、空のパターン列一致
をトークンおよび生キャラクタとして出力列に付加する
ステップを含む、上記(3)または上記(6)のいずれ
かに記載の方法。 (8)ステップ(a)の(1)が、さらに、逆方向の網
羅的貪欲探索を再帰的に実行することによって、ルック
アヘッド・バッファ内の第2列のキャラクタの間の最大
部分列パターン一致を確認するステップを含む、上記
(6)に記載の方法。 (9)ヒストリ・バッファ(CAM)に記憶された第1
キャラクタ列b=b1、b2、…、bkと、入力列a=
a1、a2、…、ai、ai+1、…との間のパターン一致を
探索するための方法であって、前記方法が、1再帰処理
ごとに1キャラクタの速度で動作可能であり、(a)第
i回目の再帰処理中に、ヒストリ・バッファの内容bと
入力列からのaiを並列に比較照合し、第1シフト・レ
ジスタの各対応段にキャラクタの一致または不一致を示
すブール値miを書き込み、前記ヒストリ・バッファに
aiを書き込むステップと、(b)第(i+1)回目の
再帰処理中に、ai+1を次の入力列キャラクタとして、
ステップ(a)を繰り返し、所定の段数だけオフセット
された第2シフト・レジスタの対応段に、第1シフト・
レジスタの各段からのブール値miを同時に書き込み、
第1シフト・レジスタにブール値mi+1を書き込み、第
1の種類のブール値がパターン一致の継続を表し、第2
の種類のブール値がパターン一致の終了を表すように、
第1および第2のシフト・レジスタの段の対のそれぞれ
に対して加算される離接(mi AND mi+1)として
ブール信号を形成するステップと、(c)入力キャラク
タ列が終了するまで、ステップ(a)およびステップ
(b)を繰り返すステップとを含む方法。 (10)コード化サイクルごとに1キャラクタの速度
で、部分的に順序付けられた出力列に入力列a=a1、
a2、…、ai、ai+1、…を圧縮するための方法であっ
て、(a)第i回目の再帰処理中に、ヒストリ・バッフ
ァ(CAM)の内容b=b1、b2、…、bkと入力列か
らのaiを並列に比較照合し、第1シフト・レジスタの
対応段のそれぞれに一致または不一致を示すブール値m
iを書き込み、ヒストリ・バッファ中にaiをシフトする
ステップと、(b)第(i+1)回目の再帰処理中に、
次の入力キャラクタai+1に関してステップ(a)を繰
り返し、それと同時に、所定の段数だけオフセットされ
た第2シフト・レジスタの対応段に第1シフト・レジス
タから内容miを書き込み、第1レジスタにブール値m
i+1を書き込み、第1の種類のブール値がパターン一致
の継続を表し、第2の種類のブール値がパターン一致の
終了を表すように、第1および第2のレジスタの段のそ
れぞれに対して加算される離接(mi ANDmi+1)と
してブール信号を形成するステップと、(c)パターン
一致終了を示す信号に応答して、ヒストリ・バッファ内
で一致したパターンが以前に出現したことを示すポイン
タを出力列に付加し、空長のパターン列一致をトークン
および生キャラクタとして出力列に付加するステップ
と、(d)入力キャラクタ列を使い果たすまで、ステッ
プ(a)ないしステップ(c)を繰り返すステップとを
含む方法。 (11)キャラクタの入力列の現部分が、ルックアヘッ
ド・バッファ内に置かれており、さらに、ステップ
(a)およびステップ(b)が、それぞれの再帰処理を
逆方向で実行するサブステップと、ヒストリ・バッファ
に置かれる列のキャラクタを含みこれを通って延びるキ
ャラクタの数が増加する入れ子式順序でルックアヘッド
・バッファ内の入力列のキャラクタを出すサブステップ
とを含む、上記(10)に記載の方法。 (12)ヒストリ・バッファに記憶された第1キャラク
タ列の部分列と、ルックアヘッド・バッファに記憶され
た第2キャラクタ列の部分列との間の長さKのキャラク
タ・パターンの一致を探索するための方法であって、各
サイクル中に、 (a)順序付けられた1組の再帰間隔に沿って順方向ま
たは逆方向のうち選択されたいずれか1つの方向で一貫
してバッファ内の第1および第2のキャラクタ列に対し
て再帰的に比較照合を実行することによって、第1キャ
ラクタ列から第2キャラクタ列へ拡張される部分列接頭
部を含む1つまたは複数の最長部分列を解析するステッ
プであって、さらに(1)逆方向または順方向の比較照
合が一致長L=K+1をもたらす場合に、K+1のキャ
ラクタ接頭部拡張を用いて接頭部レジスタを更新するサ
ブステップと、(2)一致長L<K+1であり、最長一
致L=1である場合に、見つかった最長の一致を用いて
接頭部レジスタを更新し、追跡変数J=(K−L)を割
り当てるサブステップと、(3)逆方向の再帰的比較照
合に関してJ>0の場合、または順方向の比較照合に関
してJ<Kの場合に、第1および第2の列の間の最長パ
ターン一致長L'がL'=J+1となって、パターン一致
が終了するか、あるいはこのサブステップでパターン照
合を再帰呼出しするまで、元々実行されたのと同じ方向
でバッファ内の第1および第2の列に対して再帰的比較
照合を再実行することによって、L'を識別するサブス
テップとを含む前記解析ステップと (b)確認された全ての最大部分列パターン一致のルッ
クアヘッド・バッファおよびヒストリ・バッファでの位
置を指示し、そのサイクル中にルックアヘッド・バッフ
ァからヒストリ・バッファへ延びる接頭部で終了するキ
ャラクタを転送し、接頭部レジスタ内容をこの方法の外
部での処理のために使用可能にするステップと、 (c)第2キャラクタ列を使い果たすまでステップ
(a)およびステップ(b)を繰り返すステップとを含
む方法。 (13)前記Kが、第2キャラクタ列の長さ未満の任意
の正の整数のキャラクタ数を構成する、上記(12)に
記載の方法。 (14)前記方法がさらに、(d)接頭部レジスタに常
駐する最大パターン一致終了の位置を示す信号に応答し
て、ヒストリ・バッファ内での一致したパターンが前に
出現したことを示すポインタを出力列に付加し、空長の
パターン列一致をトークンおよび生キャラクタとして出
力列に付加するステップを含む、上記(12)に記載の
方法。 (15)ヒストリ・バッファに記憶された第1キャラク
タ列の部分列とルックアヘッド・バッファに記憶された
第2キャラクタ列の部分列との間のパターン一致を探索
するためのシステムであって、ルックアヘッド・バッフ
ァから所定の数のキャラクタを転送し、ヒストリ・バッ
ファ内で最も古い同数のキャラクタを排除する手段を含
み、さらに、順序付けられた1組の再帰間隔に沿って順
方向または逆方向のいずれか1つの方向で一貫してバッ
ファ内の第1および第2のキャラクタ列に対して再帰的
比較照合を実行することによって、第1キャラクタ列か
ら第2キャラクタ列へ拡張される部分列接頭部を含む1
つまたは複数の最長部分列を解析する手段と、キャラク
タが上記組の次の再帰間隔にわたって一致を継続するか
どうかに従って、前記解析手段によって解析された前の
列の接頭部を継続するかまたは打ち切り、また、ルック
アヘッド・バッファ内の第2のキャラクタ列の接頭部拡
張で終了する複数のキャラクタをヒストリ・バッファに
転送する手段を含む手段と、解析された部分列から次サ
イクルのための新しい接頭部を決定する手段とを含むシ
ステム。 (16)列内の最近の過去のキャラクタを記憶するため
の記憶装置(CAM)と、現在処理中のキャラクタを記
憶するためのルックアヘッド・バッファと、ルックアヘ
ッド・バッファ内のキャラクタのパターンに一致する最
近の過去のキャラクタのパターンを有するCAM内の位
置を確認するための手段とを有するパターン一致の探索
システムにおいて、(a)ルックアヘッド・バッファ内
に置かれたキャラクタ列とCAMに置かれたキャラクタ
列とに対して再帰的に逆方向の比較照合を実行すること
によって、ルックアヘッド・バッファ内のどんな部分列
をもまたルックアヘッド・バッファからCAMに延びる
キャラクタのどんな部分列接頭部をも含む1つまたは複
数の最大長部分列を解析するためのパターン照合手段を
含む手段と、(b)確認された全ての最大部分列パター
ン一致のルックアヘッド・バッファおよびCAMでの位
置を指示し、そのサイクル中にルックアヘッド・バッフ
ァからCAMへ延びる接頭部で終了するキャラクタを転
送し、接頭部レジスタ内容をこのシステムの外部での処
理のために使用可能にする手段と、(c)第2キャラク
タ列を使い果たすまで、解析手段と位置指示手段を呼び
出す手段とを含むシステム。
1キャラクタ列の部分列とルックアヘッド・バッファに
記憶された第2キャラクタ列の部分列との間のパターン
一致を探索するための方法であって、(a)順序付けら
れた1組の再帰間隔に沿って順方向または逆方向のいず
れか1つの方向で一貫してバッファ内の第1および第2
のキャラクタ列に対して再帰的比較照合を実行すること
によって、第1キャラクタ列から第2キャラクタ列へ拡
張される部分列接頭部を含む1つまたは複数の最長部分
列を解析するステップと、(b)キャラクタが上記組の
次の再帰間隔にわたって一致を継続するかどうかに従っ
て、ステップ(a)の間に解析された前の列の接頭部を
継続するかまたは打ち切るステップと、(c)解析され
た部分列から次サイクル用の新しい接頭部を決定するス
テップとを各サイクル中に含む探索方法。 (2)ステップ(a)で、再帰的比較照合が、逆方向で
あることを特徴とし、さらに、ルックアヘッド・バッフ
ァ内のすべての部分列を解析するステップを含む、上記
(1)に記載の方法。 (3)ヒストリ・バッファに記憶された第1キャラクタ
列の部分列とルックアヘッド・バッファに記憶された第
2キャラクタ列の部分列との間でのパターン一致を探索
するための方法であって、(a)第1キャラクタ列と第
2キャラクタ列に対してこれらの間でのキャラクタの部
分列に対して同一の再帰方向で一貫して比較照合を再帰
的に実行することによって、第1キャラクタ列から第2
キャラクタ列に拡張されるどんな接頭部をも含む、第2
列のキャラクタと第1列のキャラクタとの間の最大部分
列パターン一致をすべて確認するステップと、(b)確
認された全ての最大部分列パターン一致のルックアヘッ
ド・バッファおよびヒストリ・バッファでの位置を指示
し、そのサイクル中にルックアヘッド・バッファからヒ
ストリ・バッファへの接頭部拡張を終了するキャラクタ
を転送するステップと、(c)第2キャラクタ列が使い
果たされるまで、ステップ(a)およびステップ(b)
を繰り返すステップとを各サイクル中に含む、探索方
法。 (4)ステップ(a)で、再帰方向が逆方向であり、ヒ
ストリ・バッファ内の第1列のキャラクタを含みこれを
通って延びるキャラクタの数が増加する入れ子式順序で
ルックアヘッド・バッファ内の第2列のキャラクタを出
す、上記(3)に記載の方法。 (5)ステップ(a)で、再帰方向が逆方向であり、ル
ックアヘッド・バッファ内の第2列のキャラクタを含み
これを通って延びるキャラクタの数が増加する入れ子式
順序でヒストリ・バッファ内の第1列のキャラクタを出
す、上記(3)に記載の方法。 (6)第1キャラクタ列と第2キャラクタ列との間のパ
ターン一致を探索するための方法であって、 (a)各サイクル中に、(1)ヒストリ・バッファ(C
AM)に記憶される前記第1キャラクタ列とルックアヘ
ッド・バッファに記憶される前記第2キャラクタ列に対
してこれらの間でキャラクタの部分列に対して逆方向の
網羅的貪欲比較照合を再帰的に実行することによって、
第1キャラクタ列から第2キャラクタ列へ拡張されるど
んな接頭部をも含む、第2列のキャラクタと第1列のキ
ャラクタとの間の最大部分列パターン一致をすべて確認
するステップと、(2)確認された全ての最大部分列パ
ターン一致のルックアヘッド・バッファおよびヒストリ
・バッファでの位置を指示し、そのサイクル中にルック
アヘッド・バッファからヒストリ・バッファへ処理され
たキャラクタを転送するステップと、 (b)第2列が使い果たされるまで、ステップ(a)を
繰り返すステップとを含む方法。 (7)前記方法のステップ(a)が、さらに、(3)最
大パターン一致の終了位置を示す信号に応答して、ヒス
トリ・バッファ内での以前に出現した一致したパターン
を示すポインタを出力列に付加し、空のパターン列一致
をトークンおよび生キャラクタとして出力列に付加する
ステップを含む、上記(3)または上記(6)のいずれ
かに記載の方法。 (8)ステップ(a)の(1)が、さらに、逆方向の網
羅的貪欲探索を再帰的に実行することによって、ルック
アヘッド・バッファ内の第2列のキャラクタの間の最大
部分列パターン一致を確認するステップを含む、上記
(6)に記載の方法。 (9)ヒストリ・バッファ(CAM)に記憶された第1
キャラクタ列b=b1、b2、…、bkと、入力列a=
a1、a2、…、ai、ai+1、…との間のパターン一致を
探索するための方法であって、前記方法が、1再帰処理
ごとに1キャラクタの速度で動作可能であり、(a)第
i回目の再帰処理中に、ヒストリ・バッファの内容bと
入力列からのaiを並列に比較照合し、第1シフト・レ
ジスタの各対応段にキャラクタの一致または不一致を示
すブール値miを書き込み、前記ヒストリ・バッファに
aiを書き込むステップと、(b)第(i+1)回目の
再帰処理中に、ai+1を次の入力列キャラクタとして、
ステップ(a)を繰り返し、所定の段数だけオフセット
された第2シフト・レジスタの対応段に、第1シフト・
レジスタの各段からのブール値miを同時に書き込み、
第1シフト・レジスタにブール値mi+1を書き込み、第
1の種類のブール値がパターン一致の継続を表し、第2
の種類のブール値がパターン一致の終了を表すように、
第1および第2のシフト・レジスタの段の対のそれぞれ
に対して加算される離接(mi AND mi+1)として
ブール信号を形成するステップと、(c)入力キャラク
タ列が終了するまで、ステップ(a)およびステップ
(b)を繰り返すステップとを含む方法。 (10)コード化サイクルごとに1キャラクタの速度
で、部分的に順序付けられた出力列に入力列a=a1、
a2、…、ai、ai+1、…を圧縮するための方法であっ
て、(a)第i回目の再帰処理中に、ヒストリ・バッフ
ァ(CAM)の内容b=b1、b2、…、bkと入力列か
らのaiを並列に比較照合し、第1シフト・レジスタの
対応段のそれぞれに一致または不一致を示すブール値m
iを書き込み、ヒストリ・バッファ中にaiをシフトする
ステップと、(b)第(i+1)回目の再帰処理中に、
次の入力キャラクタai+1に関してステップ(a)を繰
り返し、それと同時に、所定の段数だけオフセットされ
た第2シフト・レジスタの対応段に第1シフト・レジス
タから内容miを書き込み、第1レジスタにブール値m
i+1を書き込み、第1の種類のブール値がパターン一致
の継続を表し、第2の種類のブール値がパターン一致の
終了を表すように、第1および第2のレジスタの段のそ
れぞれに対して加算される離接(mi ANDmi+1)と
してブール信号を形成するステップと、(c)パターン
一致終了を示す信号に応答して、ヒストリ・バッファ内
で一致したパターンが以前に出現したことを示すポイン
タを出力列に付加し、空長のパターン列一致をトークン
および生キャラクタとして出力列に付加するステップ
と、(d)入力キャラクタ列を使い果たすまで、ステッ
プ(a)ないしステップ(c)を繰り返すステップとを
含む方法。 (11)キャラクタの入力列の現部分が、ルックアヘッ
ド・バッファ内に置かれており、さらに、ステップ
(a)およびステップ(b)が、それぞれの再帰処理を
逆方向で実行するサブステップと、ヒストリ・バッファ
に置かれる列のキャラクタを含みこれを通って延びるキ
ャラクタの数が増加する入れ子式順序でルックアヘッド
・バッファ内の入力列のキャラクタを出すサブステップ
とを含む、上記(10)に記載の方法。 (12)ヒストリ・バッファに記憶された第1キャラク
タ列の部分列と、ルックアヘッド・バッファに記憶され
た第2キャラクタ列の部分列との間の長さKのキャラク
タ・パターンの一致を探索するための方法であって、各
サイクル中に、 (a)順序付けられた1組の再帰間隔に沿って順方向ま
たは逆方向のうち選択されたいずれか1つの方向で一貫
してバッファ内の第1および第2のキャラクタ列に対し
て再帰的に比較照合を実行することによって、第1キャ
ラクタ列から第2キャラクタ列へ拡張される部分列接頭
部を含む1つまたは複数の最長部分列を解析するステッ
プであって、さらに(1)逆方向または順方向の比較照
合が一致長L=K+1をもたらす場合に、K+1のキャ
ラクタ接頭部拡張を用いて接頭部レジスタを更新するサ
ブステップと、(2)一致長L<K+1であり、最長一
致L=1である場合に、見つかった最長の一致を用いて
接頭部レジスタを更新し、追跡変数J=(K−L)を割
り当てるサブステップと、(3)逆方向の再帰的比較照
合に関してJ>0の場合、または順方向の比較照合に関
してJ<Kの場合に、第1および第2の列の間の最長パ
ターン一致長L'がL'=J+1となって、パターン一致
が終了するか、あるいはこのサブステップでパターン照
合を再帰呼出しするまで、元々実行されたのと同じ方向
でバッファ内の第1および第2の列に対して再帰的比較
照合を再実行することによって、L'を識別するサブス
テップとを含む前記解析ステップと (b)確認された全ての最大部分列パターン一致のルッ
クアヘッド・バッファおよびヒストリ・バッファでの位
置を指示し、そのサイクル中にルックアヘッド・バッフ
ァからヒストリ・バッファへ延びる接頭部で終了するキ
ャラクタを転送し、接頭部レジスタ内容をこの方法の外
部での処理のために使用可能にするステップと、 (c)第2キャラクタ列を使い果たすまでステップ
(a)およびステップ(b)を繰り返すステップとを含
む方法。 (13)前記Kが、第2キャラクタ列の長さ未満の任意
の正の整数のキャラクタ数を構成する、上記(12)に
記載の方法。 (14)前記方法がさらに、(d)接頭部レジスタに常
駐する最大パターン一致終了の位置を示す信号に応答し
て、ヒストリ・バッファ内での一致したパターンが前に
出現したことを示すポインタを出力列に付加し、空長の
パターン列一致をトークンおよび生キャラクタとして出
力列に付加するステップを含む、上記(12)に記載の
方法。 (15)ヒストリ・バッファに記憶された第1キャラク
タ列の部分列とルックアヘッド・バッファに記憶された
第2キャラクタ列の部分列との間のパターン一致を探索
するためのシステムであって、ルックアヘッド・バッフ
ァから所定の数のキャラクタを転送し、ヒストリ・バッ
ファ内で最も古い同数のキャラクタを排除する手段を含
み、さらに、順序付けられた1組の再帰間隔に沿って順
方向または逆方向のいずれか1つの方向で一貫してバッ
ファ内の第1および第2のキャラクタ列に対して再帰的
比較照合を実行することによって、第1キャラクタ列か
ら第2キャラクタ列へ拡張される部分列接頭部を含む1
つまたは複数の最長部分列を解析する手段と、キャラク
タが上記組の次の再帰間隔にわたって一致を継続するか
どうかに従って、前記解析手段によって解析された前の
列の接頭部を継続するかまたは打ち切り、また、ルック
アヘッド・バッファ内の第2のキャラクタ列の接頭部拡
張で終了する複数のキャラクタをヒストリ・バッファに
転送する手段を含む手段と、解析された部分列から次サ
イクルのための新しい接頭部を決定する手段とを含むシ
ステム。 (16)列内の最近の過去のキャラクタを記憶するため
の記憶装置(CAM)と、現在処理中のキャラクタを記
憶するためのルックアヘッド・バッファと、ルックアヘ
ッド・バッファ内のキャラクタのパターンに一致する最
近の過去のキャラクタのパターンを有するCAM内の位
置を確認するための手段とを有するパターン一致の探索
システムにおいて、(a)ルックアヘッド・バッファ内
に置かれたキャラクタ列とCAMに置かれたキャラクタ
列とに対して再帰的に逆方向の比較照合を実行すること
によって、ルックアヘッド・バッファ内のどんな部分列
をもまたルックアヘッド・バッファからCAMに延びる
キャラクタのどんな部分列接頭部をも含む1つまたは複
数の最大長部分列を解析するためのパターン照合手段を
含む手段と、(b)確認された全ての最大部分列パター
ン一致のルックアヘッド・バッファおよびCAMでの位
置を指示し、そのサイクル中にルックアヘッド・バッフ
ァからCAMへ延びる接頭部で終了するキャラクタを転
送し、接頭部レジスタ内容をこのシステムの外部での処
理のために使用可能にする手段と、(c)第2キャラク
タ列を使い果たすまで、解析手段と位置指示手段を呼び
出す手段とを含むシステム。
【0177】
【発明の効果】本発明は、新キャラクタの列と最近の過
去に処理された列内のキャラクタとの間の最長パターン
一致を確認する際の1サイクルあたりのキャラクタ数を
増加する。本発明によれば、パイプライン式並行データ
フロー・モデルを使用し、短縮された時間でキャラクタ
列の間のKキャラクタ毎サイクルの最大長パターン一致
を確認するための手段および方法が提供される。このデ
ータフロー・モデルでは、一貫した方向での列間の再帰
的な網羅的貪欲比較照合によって、最長一致の解析がも
たらされる。この再帰は、固定長K、一致長Lおよび追
跡変数Jの間の関係によって制約され、この制約は、あ
る列から別の列への接頭部拡張と列内パターン一致を確
認するそれ以降の再帰を支配する。1時に1キャラク
タ、2キャラクタまたは3キャラクタに等しいKを処理
する実施例が可能である。
去に処理された列内のキャラクタとの間の最長パターン
一致を確認する際の1サイクルあたりのキャラクタ数を
増加する。本発明によれば、パイプライン式並行データ
フロー・モデルを使用し、短縮された時間でキャラクタ
列の間のKキャラクタ毎サイクルの最大長パターン一致
を確認するための手段および方法が提供される。このデ
ータフロー・モデルでは、一貫した方向での列間の再帰
的な網羅的貪欲比較照合によって、最長一致の解析がも
たらされる。この再帰は、固定長K、一致長Lおよび追
跡変数Jの間の関係によって制約され、この制約は、あ
る列から別の列への接頭部拡張と列内パターン一致を確
認するそれ以降の再帰を支配する。1時に1キャラク
タ、2キャラクタまたは3キャラクタに等しいKを処理
する実施例が可能である。
【図1】従来技術によるCAM型LZ1977圧縮エン
コーダのパターン照合論理機構と主処理ループを示す図
である。
コーダのパターン照合論理機構と主処理ループを示す図
である。
【図2】複数キャラクタ毎サイクルLZ1977圧縮コ
ード化を実行するための一致ルックアサイド論理を含む
最大長パターン照合ネットワークに関する、本発明によ
る全般的な論理配置を示す図である。
ード化を実行するための一致ルックアサイド論理を含む
最大長パターン照合ネットワークに関する、本発明によ
る全般的な論理配置を示す図である。
【図3】LZ1977圧縮用のパイプライン式並行デー
タフロー(PCDF)高水準パターン照合論理機構とし
ての図2に示された配置を示す図である。
タフロー(PCDF)高水準パターン照合論理機構とし
ての図2に示された配置を示す図である。
【図4】1サイクルあたり1キャラクタのLZ1977
圧縮コード化を実現するための、本発明による最大長パ
ターン照合論理配置を示す図である。
圧縮コード化を実現するための、本発明による最大長パ
ターン照合論理配置を示す図である。
【図5】1サイクルあたり2キャラクタのLZ1977
圧縮コード化を実現するための、もう1つの最大長パタ
ーン照合論理配置を示す図である。
圧縮コード化を実現するための、もう1つの最大長パタ
ーン照合論理配置を示す図である。
【図6】1サイクルあたり2キャラクタのLZ1977
圧縮コード化を実現するための、もう1つの最大長パタ
ーン照合論理配置を示す図である。
圧縮コード化を実現するための、もう1つの最大長パタ
ーン照合論理配置を示す図である。
【図7】1サイクルあたり2キャラクタのLZ1977
圧縮コード化を実現するための、もう1つの最大長パタ
ーン照合論理配置を示す図である。
圧縮コード化を実現するための、もう1つの最大長パタ
ーン照合論理配置を示す図である。
【図8】1サイクルあたり2キャラクタのパターン照合
実施例で一致ルックアヘッド(MLA)信号の形成に含
まれる制御の流れと選択されたレジスタの状態を示す図
である。
実施例で一致ルックアヘッド(MLA)信号の形成に含
まれる制御の流れと選択されたレジスタの状態を示す図
である。
【図9】1サイクルあたり2キャラクタのパターン照合
実施例で一致ルックアヘッド(MLA)信号の形成に含
まれる制御の流れと選択されたレジスタの状態を示す図
である。
実施例で一致ルックアヘッド(MLA)信号の形成に含
まれる制御の流れと選択されたレジスタの状態を示す図
である。
【図10】1サイクルあたり3キャラクタのLZ197
7圧縮コード化を処理するために拡張された順方向網羅
的貪欲パターン照合から一致ルックアヘッド信号を形成
する際の制御の流れと選択されたレジスタの状態を示す
図である。
7圧縮コード化を処理するために拡張された順方向網羅
的貪欲パターン照合から一致ルックアヘッド信号を形成
する際の制御の流れと選択されたレジスタの状態を示す
図である。
203 ヒストリ・バッファ 205 比較器 207 主選択(PS)レジスタ 209 オフセット・アドレス計算ユニット 211 一致長カウンタ 217 一致ルックアヘッド(MLA)ユニット 221 ANDゲート 223 ANDゲート 225 多入力ORゲート
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ヤンシー・チェン アメリカ合衆国95120 カリフォルニア州 サンノゼ マウント・パクロン・ドライブ 6654
Claims (16)
- 【請求項1】ヒストリ・バッファに記憶された第1キャ
ラクタ列の部分列とルックアヘッド・バッファに記憶さ
れた第2キャラクタ列の部分列との間のパターン一致を
探索するための方法であって、 (a)順序付けられた1組の再帰間隔に沿って順方向ま
たは逆方向のいずれか1つの方向で一貫してバッファ内
の第1および第2のキャラクタ列に対して再帰的比較照
合を実行することによって、第1キャラクタ列から第2
キャラクタ列へ拡張される部分列接頭部を含む1つまた
は複数の最長部分列を解析するステップと、 (b)キャラクタが上記組の次の再帰間隔にわたって一
致を継続するかどうかに従って、ステップ(a)の間に
解析された前の列の接頭部を継続するかまたは打ち切る
ステップと、 (c)解析された部分列から次サイクル用の新しい接頭
部を決定するステップとを各サイクル中に含む探索方
法。 - 【請求項2】ステップ(a)で、再帰的比較照合が、逆
方向であることを特徴とし、さらに、ルックアヘッド・
バッファ内のすべての部分列を解析するステップを含
む、請求項1に記載の方法。 - 【請求項3】ヒストリ・バッファに記憶された第1キャ
ラクタ列の部分列とルックアヘッド・バッファに記憶さ
れた第2キャラクタ列の部分列との間でのパターン一致
を探索するための方法であって、 (a)第1キャラクタ列と第2キャラクタ列に対してこ
れらの間でのキャラクタの部分列に対して同一の再帰方
向で一貫して比較照合を再帰的に実行することによっ
て、第1キャラクタ列から第2キャラクタ列に拡張され
るどんな接頭部をも含む、第2列のキャラクタと第1列
のキャラクタとの間の最大部分列パターン一致をすべて
確認するステップと、 (b)確認された全ての最大部分列パターン一致のルッ
クアヘッド・バッファおよびヒストリ・バッファでの位
置を指示し、そのサイクル中にルックアヘッド・バッフ
ァからヒストリ・バッファへの接頭部拡張を終了するキ
ャラクタを転送するステップと、 (c)第2キャラクタ列が使い果たされるまで、ステッ
プ(a)およびステップ(b)を繰り返すステップとを
各サイクル中に含む、探索方法。 - 【請求項4】ステップ(a)で、再帰方向が逆方向であ
り、ヒストリ・バッファ内の第1列のキャラクタを含み
これを通って延びるキャラクタの数が増加する入れ子式
順序でルックアヘッド・バッファ内の第2列のキャラク
タを出す、請求項3に記載の方法。 - 【請求項5】ステップ(a)で、再帰方向が逆方向であ
り、ルックアヘッド・バッファ内の第2列のキャラクタ
を含みこれを通って延びるキャラクタの数が増加する入
れ子式順序でヒストリ・バッファ内の第1列のキャラク
タを出す、請求項3に記載の方法。 - 【請求項6】第1キャラクタ列と第2キャラクタ列との
間のパターン一致を探索するための方法であって、 (a)各サイクル中に、(1)ヒストリ・バッファ(C
AM)に記憶される前記第1キャラクタ列とルックアヘ
ッド・バッファに記憶される前記第2キャラクタ列に対
してこれらの間でキャラクタの部分列に対して逆方向の
網羅的貪欲比較照合を再帰的に実行することによって、
第1キャラクタ列から第2キャラクタ列へ拡張されるど
んな接頭部をも含む、第2列のキャラクタと第1列のキ
ャラクタとの間の最大部分列パターン一致をすべて確認
するステップと、(2)確認された全ての最大部分列パ
ターン一致のルックアヘッド・バッファおよびヒストリ
・バッファでの位置を指示し、そのサイクル中にルック
アヘッド・バッファからヒストリ・バッファへ処理され
たキャラクタを転送するステップと、 (b)第2列が使い果たされるまで、ステップ(a)を
繰り返すステップとを含む方法。 - 【請求項7】前記方法のステップ(a)が、さらに、
(3)最大パターン一致の終了位置を示す信号に応答し
て、ヒストリ・バッファ内での以前に出現した一致した
パターンを示すポインタを出力列に付加し、空のパター
ン列一致をトークンおよび生キャラクタとして出力列に
付加するステップを含む、請求項3または請求項6のい
ずれかに記載の方法。 - 【請求項8】ステップ(a)の(1)が、さらに、逆方
向の網羅的貪欲探索を再帰的に実行することによって、
ルックアヘッド・バッファ内の第2列のキャラクタの間
の最大部分列パターン一致を確認するステップを含む、
請求項6に記載の方法。 - 【請求項9】ヒストリ・バッファ(CAM)に記憶され
た第1キャラクタ列b=b1、b2、…、bkと、入力列
a=a1、a2、…、ai、ai+1、…との間のパターン一
致を探索するための方法であって、前記方法が、1再帰
処理ごとに1キャラクタの速度で動作可能であり、 (a)第i回目の再帰処理中に、 ヒストリ・バッファの内容bと入力列からのaiを並列
に比較照合し、 第1シフト・レジスタの各対応段にキャラクタの一致ま
たは不一致を示すブール値miを書き込み、前記ヒスト
リ・バッファにaiを書き込むステップと、 (b)第(i+1)回目の再帰処理中に、 ai+1を次の入力列キャラクタとして、ステップ(a)
を繰り返し、 所定の段数だけオフセットされた第2シフト・レジスタ
の対応段に、第1シフト・レジスタの各段からのブール
値miを同時に書き込み、 第1シフト・レジスタにブール値mi+1を書き込み、 第1の種類のブール値がパターン一致の継続を表し、第
2の種類のブール値がパターン一致の終了を表すよう
に、第1および第2のシフト・レジスタの段の対のそれ
ぞれに対して加算される離接(mi AND mi+1)と
してブール信号を形成するステップと、 (c)入力キャラクタ列が終了するまで、ステップ
(a)およびステップ(b)を繰り返すステップとを含
む方法。 - 【請求項10】コード化サイクルごとに1キャラクタの
速度で、部分的に順序付けられた出力列に入力列a=a
1、a2、…、ai、ai+1、…を圧縮するための方法であ
って、 (a)第i回目の再帰処理中に、ヒストリ・バッファ
(CAM)の内容b=b1、b2、…、bkと入力列から
のaiを並列に比較照合し、第1シフト・レジスタの対
応段のそれぞれに一致または不一致を示すブール値mi
を書き込み、ヒストリ・バッファ中にaiをシフトする
ステップと、 (b)第(i+1)回目の再帰処理中に、次の入力キャ
ラクタai+1に関してステップ(a)を繰り返し、それ
と同時に、所定の段数だけオフセットされた第2シフト
・レジスタの対応段に第1シフト・レジスタから内容m
iを書き込み、第1レジスタにブール値mi+1を書き込
み、第1の種類のブール値がパターン一致の継続を表
し、第2の種類のブール値がパターン一致の終了を表す
ように、第1および第2のレジスタの段のそれぞれに対
して加算される離接(mi ANDmi+1)としてブール
信号を形成するステップと、 (c)パターン一致終了を示す信号に応答して、ヒスト
リ・バッファ内で一致したパターンが以前に出現したこ
とを示すポインタを出力列に付加し、空長のパターン列
一致をトークンおよび生キャラクタとして出力列に付加
するステップと、 (d)入力キャラクタ列を使い果たすまで、ステップ
(a)ないしステップ(c)を繰り返すステップとを含
む方法。 - 【請求項11】キャラクタの入力列の現部分が、ルック
アヘッド・バッファ内に置かれており、さらに、ステッ
プ(a)およびステップ(b)が、それぞれの再帰処理
を逆方向で実行するサブステップと、ヒストリ・バッフ
ァに置かれる列のキャラクタを含みこれを通って延びる
キャラクタの数が増加する入れ子式順序でルックアヘッ
ド・バッファ内の入力列のキャラクタを出すサブステッ
プとを含む、請求項10に記載の方法。 - 【請求項12】ヒストリ・バッファに記憶された第1キ
ャラクタ列の部分列と、ルックアヘッド・バッファに記
憶された第2キャラクタ列の部分列との間の長さKのキ
ャラクタ・パターンの一致を探索するための方法であっ
て、各サイクル中に、 (a)順序付けられた1組の再帰間隔に沿って順方向ま
たは逆方向のうち選択されたいずれか1つの方向で一貫
してバッファ内の第1および第2のキャラクタ列に対し
て再帰的に比較照合を実行することによって、第1キャ
ラクタ列から第2キャラクタ列へ拡張される部分列接頭
部を含む1つまたは複数の最長部分列を解析するステッ
プであって、さらに(1)逆方向または順方向の比較照
合が一致長L=K+1をもたらす場合に、K+1のキャ
ラクタ接頭部拡張を用いて接頭部レジスタを更新するサ
ブステップと、(2)一致長L<K+1であり、最長一
致L=1である場合に、見つかった最長の一致を用いて
接頭部レジスタを更新し、追跡変数J=(K−L)を割
り当てるサブステップと、(3)逆方向の再帰的比較照
合に関してJ>0の場合、または順方向の比較照合に関
してJ<Kの場合に、第1および第2の列の間の最長パ
ターン一致長L'がL'=J+1となって、パターン一致
が終了するか、あるいはこのサブステップでパターン照
合を再帰呼出しするまで、元々実行されたのと同じ方向
でバッファ内の第1および第2の列に対して再帰的比較
照合を再実行することによって、L'を識別するサブス
テップとを含む前記解析ステップと (b)確認された全ての最大部分列パターン一致のルッ
クアヘッド・バッファおよびヒストリ・バッファでの位
置を指示し、そのサイクル中にルックアヘッド・バッフ
ァからヒストリ・バッファへ延びる接頭部で終了するキ
ャラクタを転送し、接頭部レジスタ内容をこの方法の外
部での処理のために使用可能にするステップと、 (c)第2キャラクタ列を使い果たすまでステップ
(a)およびステップ(b)を繰り返すステップとを含
む方法。 - 【請求項13】前記Kが、第2キャラクタ列の長さ未満
の任意の正の整数のキャラクタ数を構成する、請求項1
2に記載の方法。 - 【請求項14】前記方法がさらに、 (d)接頭部レジスタに常駐する最大パターン一致終了
の位置を示す信号に応答して、ヒストリ・バッファ内で
の一致したパターンが前に出現したことを示すポインタ
を出力列に付加し、空長のパターン列一致をトークンお
よび生キャラクタとして出力列に付加するステップを含
む、請求項12に記載の方法。 - 【請求項15】ヒストリ・バッファに記憶された第1キ
ャラクタ列の部分列とルックアヘッド・バッファに記憶
された第2キャラクタ列の部分列との間のパターン一致
を探索するためのシステムであって、ルックアヘッド・
バッファから所定の数のキャラクタを転送し、ヒストリ
・バッファ内で最も古い同数のキャラクタを排除する手
段を含み、さらに、 順序付けられた1組の再帰間隔に沿って順方向または逆
方向のいずれか1つの方向で一貫してバッファ内の第1
および第2のキャラクタ列に対して再帰的比較照合を実
行することによって、第1キャラクタ列から第2キャラ
クタ列へ拡張される部分列接頭部を含む1つまたは複数
の最長部分列を解析する手段と、 キャラクタが上記組の次の再帰間隔にわたって一致を継
続するかどうかに従って、前記解析手段によって解析さ
れた前の列の接頭部を継続するかまたは打ち切り、ま
た、ルックアヘッド・バッファ内の第2のキャラクタ列
の接頭部拡張で終了する複数のキャラクタをヒストリ・
バッファに転送する手段を含む手段と、 解析された部分列から次サイクルのための新しい接頭部
を決定する手段とを含むシステム。 - 【請求項16】列内の最近の過去のキャラクタを記憶す
るための記憶装置(CAM)と、現在処理中のキャラク
タを記憶するためのルックアヘッド・バッファと、ルッ
クアヘッド・バッファ内のキャラクタのパターンに一致
する最近の過去のキャラクタのパターンを有するCAM
内の位置を確認するための手段とを有するパターン一致
の探索システムにおいて、 (a)ルックアヘッド・バッファ内に置かれたキャラク
タ列とCAMに置かれたキャラクタ列とに対して再帰的
に逆方向の比較照合を実行することによって、ルックア
ヘッド・バッファ内のどんな部分列をもまたルックアヘ
ッド・バッファからCAMに延びるキャラクタのどんな
部分列接頭部をも含む1つまたは複数の最大長部分列を
解析するためのパターン照合手段を含む手段と、 (b)確認された全ての最大部分列パターン一致のルッ
クアヘッド・バッファおよびCAMでの位置を指示し、
そのサイクル中にルックアヘッド・バッファからCAM
へ延びる接頭部で終了するキャラクタを転送し、接頭部
レジスタ内容をこのシステムの外部での処理のために使
用可能にする手段と、 (c)第2キャラクタ列を使い果たすまで、解析手段と
位置指示手段を呼び出す手段とを含むシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US228321 | 1994-04-15 | ||
| US08/228,321 US5525982A (en) | 1994-04-15 | 1994-04-15 | Method and means for character string pattern matching for compression and the like using minimal cycles per character |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH07297728A true JPH07297728A (ja) | 1995-11-10 |
| JP3084201B2 JP3084201B2 (ja) | 2000-09-04 |
Family
ID=22856700
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP07050774A Expired - Fee Related JP3084201B2 (ja) | 1994-04-15 | 1995-03-10 | パターン一致を探索するための方法およびシステム |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5525982A (ja) |
| EP (1) | EP0677927A3 (ja) |
| JP (1) | JP3084201B2 (ja) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08116269A (ja) * | 1994-10-17 | 1996-05-07 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
| JPH08274649A (ja) * | 1995-03-22 | 1996-10-18 | Internatl Business Mach Corp <Ibm> | Lempel−Zivタイプ・アルゴリズムを用いたデータ圧縮装置 |
| KR970066851A (ko) * | 1996-03-19 | 1997-10-13 | 에스. 알. 바쏠로뮤 | 시켄셜 패턴 메모리 탐색 및 저장 관리 기술 |
| JPH1188192A (ja) * | 1997-05-12 | 1999-03-30 | Lexmark Internatl Inc | データ圧縮方法及び装置 |
| JP2000059226A (ja) * | 1998-07-28 | 2000-02-25 | Xerox Corp | 最小マッチ長が3のプリマッチストリングマッチアレイ |
| JP2014182810A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置 |
Families Citing this family (61)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5585793A (en) * | 1994-06-10 | 1996-12-17 | Digital Equipment Corporation | Order preserving data translation |
| US5883588A (en) * | 1994-10-04 | 1999-03-16 | Nec Corporation | Data compression system and data compression device for improving data compression rate and coding speed |
| US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
| US5778255A (en) * | 1995-10-10 | 1998-07-07 | International Business Machines Corporation | Method and system in a data processing system for decompressing multiple compressed bytes in a single machine cycle |
| GB2310055A (en) * | 1996-02-08 | 1997-08-13 | Ibm | Compression of structured data |
| US5771011A (en) * | 1996-07-15 | 1998-06-23 | International Business Machines Corporation | Match detect logic for multi-byte per cycle hardware data compression |
| US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
| KR100269808B1 (ko) * | 1997-12-20 | 2000-10-16 | 전주범 | 압축률 편차를 보상하는 데이터 압축 시스템 |
| US6052683A (en) * | 1998-02-24 | 2000-04-18 | Nortel Networks Corporation | Address lookup in packet data communication networks |
| JP3541930B2 (ja) * | 1998-08-13 | 2004-07-14 | 富士通株式会社 | 符号化装置及び復号化装置 |
| US6393149B2 (en) | 1998-09-17 | 2002-05-21 | Navigation Technologies Corp. | Method and system for compressing data and a geographic database formed therewith and methods for use thereof in a navigation application program |
| US7129860B2 (en) * | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
| US6822589B1 (en) | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
| US6208273B1 (en) * | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
| US6401088B1 (en) * | 1999-02-09 | 2002-06-04 | At&T Corp. | Method and apparatus for substring selectivity estimation |
| US6320523B1 (en) * | 1999-07-30 | 2001-11-20 | Unisys Corporation | Method and apparatus for reducing the time required for compressing data |
| US6188333B1 (en) * | 1999-08-12 | 2001-02-13 | Unisys Corporation | LZW data compression apparatus and method using look-ahead mathematical run processing |
| US6404362B1 (en) * | 1999-09-21 | 2002-06-11 | Unisys Corporation | Method and apparatus for reducing the time required for decompressing compressed data |
| US6470345B1 (en) | 2000-01-04 | 2002-10-22 | International Business Machines Corporation | Replacement of substrings in file/directory pathnames with numeric tokens |
| US6516305B1 (en) * | 2000-01-14 | 2003-02-04 | Microsoft Corporation | Automatic inference of models for statistical code compression |
| US20010047359A1 (en) * | 2000-04-17 | 2001-11-29 | Peter Videcrantz | Method and apparatus for data compression |
| US6591317B1 (en) * | 2000-05-12 | 2003-07-08 | 3Com Corporation | Queue incorporating a duplicate counter per entry |
| WO2002027664A1 (en) * | 2000-09-28 | 2002-04-04 | Roke Manor Research Limited | Improved huffman data compression method |
| US6959297B2 (en) * | 2002-04-25 | 2005-10-25 | Winnow Technology, Llc | System and process for searching within a data stream using a pointer matrix and a trap matrix |
| US7099884B2 (en) * | 2002-12-06 | 2006-08-29 | Innopath Software | System and method for data compression and decompression |
| US7797348B2 (en) * | 2003-05-01 | 2010-09-14 | The Hong Kong Polytechnic University | Data structure and system for IP address lookup and IP address lookup system |
| US7634500B1 (en) * | 2003-11-03 | 2009-12-15 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
| US7308561B2 (en) * | 2003-12-12 | 2007-12-11 | Alcatel Lucent | Fast, scalable pattern-matching engine |
| US20050261788A1 (en) * | 2004-05-21 | 2005-11-24 | Singman-Aste Michael K | System and method for programmatically searching backwards in a string |
| CN100493060C (zh) * | 2004-07-27 | 2009-05-27 | 华为技术有限公司 | 一种通信系统时频资源的分配方法 |
| US7937510B1 (en) | 2005-02-01 | 2011-05-03 | Altera Corporation | Lempel Ziv compression architecture |
| US7109895B1 (en) * | 2005-02-01 | 2006-09-19 | Altera Corporation | High performance Lempel Ziv compression architecture |
| US7486673B2 (en) | 2005-08-29 | 2009-02-03 | Connect Technologies Corporation | Method and system for reassembling packets prior to searching |
| US7353332B2 (en) | 2005-10-11 | 2008-04-01 | Integrated Device Technology, Inc. | Switching circuit implementing variable string matching |
| US8050181B2 (en) * | 2006-02-14 | 2011-11-01 | Jds Uniphase Corporation | Sliding frame comparator in a network diagnostic device |
| US7783654B1 (en) | 2006-09-19 | 2010-08-24 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
| US7849399B2 (en) * | 2007-06-29 | 2010-12-07 | Walter Hoffmann | Method and system for tracking authorship of content in data |
| KR101503829B1 (ko) * | 2007-09-07 | 2015-03-18 | 삼성전자주식회사 | 데이터 압축 장치 및 방법 |
| KR101454167B1 (ko) * | 2007-09-07 | 2014-10-27 | 삼성전자주식회사 | 데이터 압축 및 복원 장치 및 방법 |
| US20100211591A1 (en) * | 2009-02-16 | 2010-08-19 | Chuan-Hua Chang | Apparatus for processing strings simultaneously |
| US8149145B2 (en) * | 2010-08-05 | 2012-04-03 | Hewlett-Packard Development Company, L.P. | Method and apparatus for adaptive lossless data compression |
| US8674856B2 (en) * | 2012-08-16 | 2014-03-18 | International Business Machines Corporation | Data compression utilizing longest common subsequence template |
| DE112014000245A5 (de) * | 2013-01-22 | 2015-10-01 | Jacobs University Bremen Ggmbh | Verfahren zur Kompression von Quelldaten unter Nutzung von Symmetrien und Einrichtung zur Durchführung des Verfahrens |
| CN104252469B (zh) | 2013-06-27 | 2017-10-20 | 国际商业机器公司 | 用于模式匹配的方法、设备和电路 |
| GB2524516A (en) | 2014-03-25 | 2015-09-30 | Ibm | Hardware compression method finding backward references with multi-level hashes |
| GB2524515A (en) | 2014-03-25 | 2015-09-30 | Ibm | Method to improve compression ratio for a compression engine |
| US10824952B2 (en) * | 2014-09-22 | 2020-11-03 | International Business Machines Corporation | Reconfigurable array processor for pattern matching |
| US9891912B2 (en) | 2014-10-31 | 2018-02-13 | International Business Machines Corporation | Comparison-based sort in a reconfigurable array processor having multiple processing elements for sorting array elements |
| US9287893B1 (en) * | 2015-05-01 | 2016-03-15 | Google Inc. | ASIC block for high bandwidth LZ77 decompression |
| US9450606B1 (en) | 2015-10-01 | 2016-09-20 | Seagate Technology Llc | Data matching for hardware data compression |
| US10483981B2 (en) | 2016-12-30 | 2019-11-19 | Microsoft Technology Licensing, Llc | Highspeed/low power symbol compare |
| CN107220028B (zh) * | 2017-05-24 | 2020-05-29 | 上海兆芯集成电路有限公司 | 加速压缩方法以及使用此方法的装置 |
| US10727865B2 (en) | 2018-11-19 | 2020-07-28 | Fungible, Inc. | Data striping for matching techniques in data compression accelerator of a data processing unit |
| WO2020106626A1 (en) * | 2018-11-19 | 2020-05-28 | Fungible, Inc. | History-based compression pipeline for data compression accelerator of a data processing unit |
| US10997123B2 (en) | 2018-11-19 | 2021-05-04 | Fungible, Inc. | Matching techniques in data compression accelerator of a data processing unit |
| US10812630B2 (en) | 2018-11-19 | 2020-10-20 | Fungible, Inc. | Merging techniques in data compression accelerator of a data processing unit |
| US11309908B2 (en) | 2018-11-26 | 2022-04-19 | Fungible, Inc. | Static dictionary-based compression hardware pipeline for data compression accelerator of a data processing unit |
| CN109857463B (zh) * | 2019-01-30 | 2020-12-01 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
| CN111159490B (zh) * | 2019-12-13 | 2023-05-26 | 杭州迪普科技股份有限公司 | 一种模式字符串的处理方法、装置及设备 |
| US11630729B2 (en) | 2020-04-27 | 2023-04-18 | Fungible, Inc. | Reliability coding with reduced network traffic |
| US11652495B2 (en) * | 2021-09-14 | 2023-05-16 | Mastercard International Incorporated | Pattern-based string compression |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4054951A (en) * | 1976-06-30 | 1977-10-18 | International Business Machines Corporation | Data expansion apparatus |
| US5003307A (en) * | 1989-01-13 | 1991-03-26 | Stac, Inc. | Data compression apparatus with shift register search means |
| AU624205B2 (en) * | 1989-01-23 | 1992-06-04 | General Electric Capital Corporation | Variable length string matcher |
| US5150430A (en) * | 1991-03-15 | 1992-09-22 | The Board Of Trustees Of The Leland Stanford Junior University | Lossless data compression circuit and method |
| US5179378A (en) * | 1991-07-30 | 1993-01-12 | University Of South Florida | Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques |
| US5455943A (en) * | 1992-10-08 | 1995-10-03 | Salient Software, Inc. | Method and apparatus for finding longest and closest matching string in history buffer prior to current string |
| US5373290A (en) * | 1991-09-25 | 1994-12-13 | Hewlett-Packard Corporation | Apparatus and method for managing multiple dictionaries in content addressable memory based data compression |
| CA2077271C (en) * | 1991-12-13 | 1998-07-28 | David J. Craft | Method and apparatus for compressing data |
| US5339076A (en) * | 1992-04-27 | 1994-08-16 | Integrated Information Technology | Data compression using content addressable memory |
| US5369605A (en) * | 1993-07-07 | 1994-11-29 | Dell Usa, L.P. | Incremental search content addressable memory for increased data compression efficiency |
| US5384568A (en) * | 1993-12-02 | 1995-01-24 | Bell Communications Research, Inc. | Data compression |
-
1994
- 1994-04-15 US US08/228,321 patent/US5525982A/en not_active Expired - Fee Related
-
1995
- 1995-03-10 JP JP07050774A patent/JP3084201B2/ja not_active Expired - Fee Related
- 1995-04-07 EP EP95302343A patent/EP0677927A3/en not_active Withdrawn
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08116269A (ja) * | 1994-10-17 | 1996-05-07 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
| JPH08274649A (ja) * | 1995-03-22 | 1996-10-18 | Internatl Business Mach Corp <Ibm> | Lempel−Zivタイプ・アルゴリズムを用いたデータ圧縮装置 |
| KR970066851A (ko) * | 1996-03-19 | 1997-10-13 | 에스. 알. 바쏠로뮤 | 시켄셜 패턴 메모리 탐색 및 저장 관리 기술 |
| JPH1075180A (ja) * | 1996-03-19 | 1998-03-17 | Lucent Technol Inc | ディジタル符号化記号列の記憶方法および記憶装置 |
| JPH1188192A (ja) * | 1997-05-12 | 1999-03-30 | Lexmark Internatl Inc | データ圧縮方法及び装置 |
| JP2000059226A (ja) * | 1998-07-28 | 2000-02-25 | Xerox Corp | 最小マッチ長が3のプリマッチストリングマッチアレイ |
| JP2014182810A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3084201B2 (ja) | 2000-09-04 |
| US5525982A (en) | 1996-06-11 |
| EP0677927A3 (en) | 1997-06-11 |
| EP0677927A2 (en) | 1995-10-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3084201B2 (ja) | パターン一致を探索するための方法およびシステム | |
| US5612693A (en) | Sliding window data compression using a toroidal bit shift register | |
| RU2629440C2 (ru) | Устройство и способ для ускорения операций сжатия и распаковки | |
| US9647684B2 (en) | Memory-based history search | |
| US5151697A (en) | Data structure management tagging system | |
| US5150430A (en) | Lossless data compression circuit and method | |
| US6005503A (en) | Method for encoding and decoding a list of variable size integers to reduce branch mispredicts | |
| US7661102B2 (en) | Method for reducing binary image update package sizes | |
| JPH04247571A (ja) | データベースレコード処理装置 | |
| KR20120115244A (ko) | 데이터 압축 동안의 대안적 인코딩 솔루션들 평가 | |
| JP2009512099A (ja) | トライでの再始動可能なハッシュの方法及び装置 | |
| US10931301B2 (en) | Decompression engine for executable microcontroller code | |
| JP6613019B2 (ja) | パターンを探索する装置 | |
| US11593311B2 (en) | Compression system with longest match processing for generating compressed data | |
| US7109895B1 (en) | High performance Lempel Ziv compression architecture | |
| JP2604951B2 (ja) | 並列動作の複数の処理要素を使用した数値問題の解決方法および装置 | |
| JP3241787B2 (ja) | データ圧縮方式 | |
| RU2473960C2 (ru) | Способ нахождения максимальных повторяющихся участков последовательности символов конечного алфавита и способ вычисления вспомогательного массива | |
| US12298952B1 (en) | Multiple pass sort with subset splitting | |
| JP3062119B2 (ja) | 文字列探索用テーブル、その作成方法及び文字列探索方法 | |
| JPH05241775A (ja) | データ圧縮方式 | |
| US12530334B1 (en) | Multiple pass sort | |
| JP2005242668A (ja) | パターンマッチング装置および方法ならびにプログラム | |
| JPH09101965A (ja) | 情報登録方法および情報検索方法 | |
| JPH0573618A (ja) | 構造体の検索方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |