(57)【特許請求の範囲】
【請求項１】
データ圧縮システムにおいて、
ａ．入力源からデータシンボルのストリームを順次に受信するための手段を含み、
ｂ．前記順次に受信するための手段と結合された大ギャップを有するスライド窓データ圧縮器を実現するための手段を含み、その際現在の入力シンボルが、シンボルのスライド窓および現在の入力シンボルより予め決められた第１の数のシンボルだけ前に受信された１つまたはそれ以上のシンボルと比較され、その際シンボルのスライド窓は長さＭを有しかつ以前に受信された連続的な複数のシンボルを含み、前記予め決められた第１の数のシンボルは走査線長さＳに等しく、スライド窓と前記１つまたはそれ以上のシンボルとの間に、予め決められた第２の数のシンボルが存在し、この第２の数のシンボルは大ギャップの長さＳ＋１−Ｍに等しく、
ｃ．内容アドレスメモリ（ＣＡＭ）を含み、その際該メモリは複数個の内容アドレスメモリセルを含み、各セルは、シンボルのスライド窓を記憶するため、および現在の入力シンボルをシンボルのスライド窓内の以前に受信された複数個の連続的なシンボルと比較するため、書込み、検索および読出しが可能であり、２つまたはそれ以上の隣接する入力シンボルが隣接する内容アドレスメモリ位置と合致する時に、内容アドレスメモリが内容アドレスメモリ合致信号（ＣＡＭ合致信号）を出力し、
ｄ．ランダムアクセスメモリを含み、該ランダムアクセスメモリは、現在の入力シンボルを記憶するため、および１つまたはそれ以上の以前に受信されたシンボルを出力するため、少なくとも１つの走査線のデータシンボルを記憶可能であり、ランダムアクセスメモリ内の特別な場所に記憶された１つまたはそれ以上の以前に受信されたシンボルを出力可能であり、
ｅ．内容アドレスメモリとランダムアクセスメモリとに接続された合致選択状態機械を含み、該機械は、現在の入力シンボルとＣＡＭ合致信号とを受信してＣＡＭ合致信号と走査線合致信号のいずれかを選択し、この走査線合致信号は現在の入力シンボルと特定の位置に記憶されている１つまたはそれ以上の以前に受信されたシンボルとの間の合致によって活性化され、その際合致選択状態機械は選択された信号を出力するように構成され、
ｆ．前記合致選択状態機械と接続されたエンコーダを含み、該エンコーダは前記合致選択状態機械から選択された信号を受け取り、合致の長さ及び合致の位置を決定し、合致を圧縮して記憶システムへ送ることを特徴とするデータ圧縮システム。
【請求項２】
合致を示す情報が内容アドレスメモリセルの間で転送され、シンボルが内容アドレスメモリセルの間で転送されないことを特徴とする請求項1記載のデータ圧縮システム。
【請求項３】
ＣＡＭ合致信号が能動化されており、かつ現在の入力シンボルも特定の位置に記憶されている１つまたはそれ以上の以前に受信されたシンボルの１つと合致する時に、合致選択状態機械が少なくとも２つのシンボルの内容アドレスメモリのなかの合致に優先性を与えることを特徴とする請求項１記載のデータ圧縮システム。
【請求項４】
さらに、以前に圧縮されたデータを復元するための手段を含んでいることを特徴とする請求項３記載のデータ圧縮システム。
【請求項５】
復元のための手段がランダムアクセスメモリと、以前に圧縮されたデータからデータシンボルのストリームを構築するためランダムアクセスメモリに接続されている制御論理回路とを含んでいることを特徴とする請求項４記載のデータ圧縮システム。
【請求項６】
請求項１記載のデータ圧縮システムにおいて、合致選択状態機械は、ＣＡＭ合致信号が活性化され、かつ走査線合致信号が活性化された際に当該ＣＡＭ合致信号を選択を選択することを特徴とするデータ圧縮システム。
【請求項７】
前記記憶するための手段のなかで合致を示す状態情報がセルの間で転送され、シンボルはセルの間で転送されないことを特徴とする請求項６記載のデータ圧縮システム。
【請求項８】
１つまたはそれ以上の以前に受信されたシンボルと複数個の以前に受信されたシンボルとがすべてデータシンボルのストリームのなかにあることを特徴とする請求項６記載のデータ圧縮システム。
【請求項９】
さらに、１つまたはそれ以上の以前に受信されたシンボルがデータシンボルのストリームのなかの複数個の以前に受信されたシンボルと不連続的であることを特徴とする請求項８記載のデータ圧縮システム。
【請求項１０】
複数個の内容アドレスメモリセルが書込み、探索および読出しのための手段を含んでおり、また全体として内容アドレスメモリセルを形成することを特徴とする請求項９記載のデータ圧縮システム。
【請求項１１】
複数個の内容アドレスメモリセルが１６個の内容アドレスメモリセルを含んでいることを特徴とする請求項１０記載のデータ圧縮システム。
【請求項１２】
さらに、もし１つよりも多い最長合致ストリングが内容アドレスメモリのなかに記憶されているならば、内容アドレスメモリのなかに記憶されているどの最長合致ストリングが内容アドレスメモリのなかに記憶されている最後のバイトの位置に最も近いかを決定するための手段を含んでいることを特徴とする請求項１０記載のデータ圧縮システム。
【請求項１３】
前記記憶のための手段がデータシンボルの少なくとも１つの走査線を記憶し得るメモリバッフアを含んでいることを特徴とする請求項１２記載のデータ圧縮システム。
【請求項１４】
メモリバッフアが２０４８個のデータシンボルを記憶し得ることを特徴とする請求項１３記載のデータ圧縮システム。
【請求項１５】
さらに、複数個のストリング合致状態機械を含んでおり、これらのストリング合致状態機械の各々が内容アドレスメモリのなかのデータの記憶されているバイトに作用的に連結されていることを特徴とする請求項１３記載のデータ圧縮システム。
【請求項１６】
ストリング合致状態機械の各々が、次の３つの状態、
ａ．記憶されているデータが現在の入力ストリングと合致しないことを信号する第１の状態と、
ｂ．記憶されているデータが現在の入力ストリングの最後のキャラクタのみと合致することを信号する第２の状態と、
ｃ．記憶されているデータが少なくとも入力ストリングの最後の２つのキャラクタと合致することを信号する第３の状態、
の３つの状態を含んでいることを特徴とする請求項１５記載のデータ圧縮システム。
【請求項１７】
ストリング合致状態機械の各々が初期化のための第４の状態を含んでおり、リセット信号によりストリング合致状態機械のすべてが第４の状態に強制されることを特徴とする請求項１６記載のデータ圧縮システム。
【請求項１８】
前記同時記憶および比較のための手段がさらに、複数個のストリング合致モジュールのアレイを含んでおり、各ストリング合致モジュールがＣＡＭワード、ストリング合致状態機械およびアドレス論理モジュールを含んでいることを特徴とする請求項１記載のデータ圧縮システム。
【請求項１９】
複数個のストリング合致モジュールのアレイが一次元の環状のキューのなかに配置されていることを特徴とする請求項１８記載のデータ圧縮システム。
【請求項２０】
さらに、以前に圧縮されたデータを復元するための手段を含んでいることを特徴とする請求項１９記載のデータ圧縮システム。
【請求項２１】
データシンボルの到来するストリームを圧縮するための方法において、
ａ．入力源から第１の複数個のデータシンボルを順次に受信する過程と、
ｂ．現在のシンボルを複数個の内容アドレスメモリセルの１つのなかに記憶すると同時に、現在のシンボルが以前に受信されたシンボルと合致するかどうかを決定するべく、現在のシンボルを複数個の以前に受信されたシンボルと比較する過程と、
ｃ．現在のシンボルが内容アドレスメモリセルのなかの以前に受信されたシンボルの１つと合致する時にＣＡＭ合致信号を発生する過程と、
ｄ．ＣＡＭ合致が２つの連続的な入力シンボルに関して信号出力される時に内容アドレスメモリのなかのシンボルの合致するストリングを表すコード対を含んでいるポストコード値を出力する過程と、
ｅ．現在のシンボルを記憶し、かつ現在のシンボルを走査線バッファのなかの特定のプログラム可能な位置に記憶されている１つまたはそれ以上の以前に受信されたシンボルと比較する過程と、
ｆ．現在のシンボルが特定のプログラム可能な位置に記憶されている１つまたはそれ以上の以前に受信されたシンボルの１つと合致する時に走査線合致を信号出力する過程と、
ｇ．走査線合致が信号出力されている時に合致値の長さを含んでいるポストコード値を出力する過程と、
ｈ．ＣＡＭ合致も走査線合致も信号出力されていない時に現在のシンボルを含んでいる生の値を出力する過程と
を含んでいることを特徴とする方法。
【請求項２２】
さらに、ＣＡＭ合致および走査線合致の双方が同時に信号出力される時にＣＡＭ合致を選択する過程を含んでいることを特徴とする請求項２１記載の方法。
【請求項２３】
内容アドレスメモリセルと走査線バッファのなかの特定のプログラム可能な位置とが不連続的であることを特徴とする請求項２1記載の方法。
【請求項２４】
複数個の内容アドレスメモリが１６個の内容アドレスメモリセルを含んでいることを特徴とする請求項２３記載の方法。
【請求項２５】
走査線バッファが２０４８個のデータシンボルを記憶することを特徴とする請求項２４記載の方法。
【請求項２６】
さらに、圧縮されたデータを復元し、複数個のデータシンボルを再構築する過程を含んでいることを特徴とする請求項２３記載の方法。
【請求項２７】
データの到来するストリームを圧縮し、圧縮されたデータを表すポストコード値を出力するためのデータ圧縮システムにおいて、
ａ．現在のシンボルを記憶すると同時に、それを以前に受信されたシンボルと比較するため、一度に１つのシンボルで到来するデータのストリームを受信するべく接続されているスライド窓圧縮器と、
ｂ．現在のシンボルを記憶し、かつ特定のプログラム可能な位置において走査線バッフアのなかに記憶されている１つまたはそれ以上の以前に受信されたシンボルを出力するため、一度に１つのシンボルで到来するデータのストリームを受信するべく接続されている走査線バッフアと、
ｃ．スライド窓圧縮器のなかの合致の間の選択をし、合致位置および合致長さまたは走査線バッフアのなかの合致を表すコード対を出力し、走査線合致の長さの値を出力し、または、もし合致が生起しないならば、現在のシンボルを含んでいる生のバイトを出力するために、スライド窓圧縮器および走査線バッフアに接続されている合致選択モジュールとを含んでいることを特徴とするデータ圧縮システム。
【請求項２８】
さらに、合致選択モジュールからのデータ出力をエンコードし、それをストレージまたは伝送システムに出力するために、合致選択モジュールに接続されているポストコード論理ブロックを含んでいることを特徴とする請求項２７記載のデータ圧縮システム。
【請求項２９】
スライド窓圧縮器が１６個の内容アドレスメモリセルを含んでいることを特徴とする請求項２８記載のデータ圧縮システム。
【請求項３０】
走査線バッフアが２０４８個の記憶位置を含んでいることを特徴とする請求項２９記載のデータ圧縮システム。
【請求項３１】
もしスライド窓圧縮器のなかの合致と走査線バッフアのなかの合致との双方が同時に生起するならば、合致選択モジュールがスライド窓圧縮器のなかの合致を選択することを特徴とする請求項３０記載のデータ圧縮システム。
【請求項３２】
さらに、以前に圧縮されたデータを復元し、到来するデータのストリームを再構築するための復元器論理回路を含んでいることを特徴とする請求項３１記載のデータ圧縮システム。
【請求項３３】
以前に受信された複数個の連続するシンボル内の最後のシンボルが現在の入力シンボルの直前に受信されることを特徴とする請求項１記載のデータ圧縮システム。
【発明の詳細な説明】
発明の分野
本発明はデータ圧縮およびデータ復元の分野に関する。一層詳細には、本発明は、適応性かつ無損失のスキームを使用してデータを圧縮し、またバイレベルのイメージデータで良好に働くデータ圧縮器に関する。
発明の背景
データ圧縮の目的は、圧縮されるデータに対して必要とされる伝送時間および記憶空間を減ずることである。データ圧縮はテキストデータおよびイメージデータを含む種々のデータ形式で有用である。多くの圧縮スキームがテキストデータおよびイメージデータの双方に対して開発されてきた。Ｗｉｔｔｅｎ、ＭｏｆｆａｔおよびＢｅｌｌ著の図書Ｍａｎａｇｉｎｇ  ＧｉｇａｂｙｔｅｓおよびＳｔｏｒｅｒ編の図書Ｉｍａｇｅ  ａｎｄ  ｔｅｘｔ  Ｃｏｍｐｒｅｓｓｉｏｎはこのような圧縮スキームを記述している。
データ圧縮器の効率は、圧縮されないキャラクタの数を圧縮されるキャラクタの数により除算することにより計算される圧縮比と呼ばれる量により測られる。圧縮比が高いほど、圧縮されるデータの密度は大きい。圧縮比が２であるということは圧縮後のキャラクタの数が圧縮前のキャラクタの数の半分であることを意味する。
データ圧縮器の他の重要な特性は、いかに正確復元器（ｄｅｃｏｍｐｒｅｓｓｏｒ）からの出力が元の入力に合致するかである。圧縮方法は２つの分類、無損失および有損失、に分けられ得る。無損失の方法は圧縮されたデータからの元のデータの正確な再構成を許す。無損失の方法はテキスト圧縮への応用またはデータがその元の条件に完全に復元されることが不可欠である他の応用に最も適切である。有損失の方法は圧縮および復元の間に多少の誤りが生起することを許す。圧縮および復元の方法のこれらの形式は、ディジタルにサンプルされるアナログデータのような、良好な近似で十分であるところに使用されている。
辞書ベースの圧縮スキームは、テキスト圧縮に対して広く普及している。これらの無損失の圧縮システムでは、到来するデータが将来のデータを圧縮するのに使用される辞書を作るのに使用される。詳細には、スライド辞書またはスライド窓圧縮器は最後のＮのテキストシンボルを辞書として使用する。これは、新しいシンボルが到来するごとに圧縮辞書を更新するので、適応性のスキームである。データは到来するシンボルと辞書の内容との間の合致を探索することによりコード化される。もし合致が見い出されないならば、到来するシンボルは“生”でまたはそのまま送られる。もし到来するシンボルのストリングと、最初のバイトが入力される時にその最初のバイトを窓のなかに有するストリングとの間に、合致が見い出されるならば、個々のシンボルを送る代わりにコード対が送られる。コード対は到来するデータに対して相対的な合致の窓のなかの位置と、合致するストリングの長さとから成っている。圧縮はこのようなシステムのなかで、コード対を表すのに必要とされるビットの数が個々のシンボルを表すのに必要とされるビットの数よりも小さい時に達成される。スライド窓圧縮器に対する１つの実施例は“シストロリック-ストリング合致論理による適応性データ圧縮システム”という名称の１９９４年６月１３日付けの米国特許出願第０８／２５９，７６０号明細書に開示されており、その内容を参照によりここに組み入れたものとする。
スライド窓テキスト圧縮器は、シンボルのいくつかのストリングは反復的に生起し、またシンボルはそれらの隣のシンボルに似ているという仮定に頼っている。このことはテキストファイルの場合にしばしば真であるので、この形式の圧縮器はこのようなファイルを圧縮するのにかなり有効に使用され得る。他方において、この仮定はグレイスケールまたはカラーイメージのようないくつかのイメージデータに対しては良好な仮定ではない。この形式の応用では、イメージの隣接領域は類似して（たとえばグレイの少し異なる濃淡で）現れるが、正確に同一には現れない。辞書ベースの圧縮器は上記のようにシンボルの間の正確な合致を必要とし、またこのようなイメージでは良好に働かないであろう。この形式のイメージデータに対する一層有効なアプローチは、Ｇｒｅｇｏｒｙ  Ｗａｌｌａｃｅによる論文“ＪＰＥＧ静止画像圧縮標準”、ＡＣＭ通信、１９９１年４月に記載されているＪＰＥＧ標準のような有損失のスキームの部類の１つ、またはＲｉｃｅ、ＹｅｈおよびＭｉｌｌｅｒによる“非常に高い速度の汎用の無損失のコード化モジュールに対するアルゴリズム”、ＪＰＬ出版物９１-１に記載されているＲｉｃｅアルゴリズムのような差動的コード化を行う無損失の圧縮アルゴリズムを使用することである。
ファクシミリまたは計算機プリンタ文書に含まれているバイレベルまたは白黒イメージのようないくつかの形式のイメージデータは、スライド窓または地の辞書ベースの圧縮器を使用して効果的に圧縮される。これらのイメージはたいてい画素あたり１つのビット、たとえば黒もしくは白、を使用して表されるので、単一の画素を表すのに１つよりも多いビットが使用されるグレイスケールまたはカラーイメージの場合にくらべて、ストリングの間の正確な合致がはるかに得られやすい。バイレベルの二次元データの圧縮を最大にするのには、水平方向および垂直方向の双方のデータ相関を考慮に入れる必要がある。両相関はスライド窓を少なくとも１つの走査線を含むのに十分に大きくすることにより検出され得る。しかし、１つの走査線は、もし走査またはプリント密度が非常に高いならば、多数のシンボルを含み得る。この大きい窓サイズはスライド窓圧縮器の実現を複雑にする。
多くのより簡単な圧縮器がバイレベルデータに対して開発されてきた。この応用に対する明白な選択は、ランレングス圧縮コードである。ランレングスコードの基礎となっているアイデアは、一般に可変長さのコードを使用して０および１のランがランの長さによってコード化されていることである。ランはビットごともしくはバイトごとであってよい。たとえば、Ｗｉｔｔｅｎ、ＭｏｆｆａｔおよびＢｅｌｌ著の図書Ｍａｎａｇｉｎｇ  Ｇｉｇａｂｙｔｅｓに記載されているようなファクシミリ伝送用のＣＣＩＴＴグループ３およびグループ４標準は、到来するデータと以前の走査線との比較も組み入れるランレングスコード化スキームを規定している。これらの形式のスキームは一般に最も簡単なデータに非常に良好に適しており、他方においてスライド窓圧縮器は、単なる１および０のランよりも複雑なパターンを考慮に入れるので、一層複雑なバイレベルのデータに一層良好に適している。ランレングスコーダはスライド窓圧縮器のサブセットであるとみなされ得る。なぜならば、スライド窓圧縮器は以前に圧縮されたシンボルとの合致を許すことによりランを考慮に入れるからである。こうして、０および１のランが圧縮されるだけでなく、他のバイトパターンのランも圧縮される。
バイレベルイメージ圧縮に対して、必要とされることは、簡単にインプリメントし得ると共に一層複雑なイメージの場合にも良好な圧縮結果を達成し得る圧縮スキームである。
本発明の概要
大ギャップを有するスライド窓データ圧縮システムはインプリメントが簡単であり、また広範囲なバイレベルイメージにわたって良好な圧縮結果を与える。非常に小さい窓サイズを有するスライド窓圧縮器は、少なくともデータシンボルの１つの走査線を保持するのに十分に大きい記憶バッファと共に利用される。到来するデータシンボルと１つの特定のプログラム可能な位置に記憶されているシンボルとの間の合致をチェックする回路が記憶バッファと結び付けられている。このプログラム可能な位置は、好ましくは、正確に１つの走査線長さだけ離れている。合致位置は小さい窓の範囲内にあるか、もしくは特定のプログラム可能な位置に正確に等しい。圧縮器全体が大ギャップを有するスライド窓（ＳＷＢＧ）として見られ得る。このスライド窓は走査線の長さに相当する長さであり、後続の大ギャップを有する小さい窓と、その後の走査線の端における１つの特定のプログラム可能な位置とから成っている。
【図面の簡単な説明】
図１は本発明による大ギャップを有するスライド窓（ＳＷＢＧ）圧縮器の概要ブロック図を示す。
図２ａは大ギャップを有するスライド窓の概念図を示す。
図２ｂはスライド窓の二次元の解釈を示す。
図３ａは本発明の小さいスライド窓に対して利用されるＭバイトＣＡＭの概要ブロック図を示す。
図３ｂはＭバイトＣＡＭのなかに使用されるストリング合致モジュールの概要ブロック図を示す。
図３ｃはＭバイトＣＡＭのなかのストリング合致モジュールの作動を制御する状態遷移図を示す。
図３ｄはＣＡＭ書込みアドレスおよび書込みイネーブル信号を発生するのに使用される論理回路の概要ブロック図を示す。
図３ｅはＣＡＭ合致アドレスを発生するのに使用される論理回路の概要ブロック図を示す。
図４ａは合致選択モジュールの概要ブロック図を示す。
図４ｂは合致選択状態機械の作動を制御する状態遷移図を示す。
図４ｃはポストコード-エンコーダの論理回路の概要ブロック図を示す。
図５は本発明の復元器の概要ブロック図を示す。
好ましい実施例の詳細な説明
本発明は、大ギャップを有するスライド窓（ＳＷＢＧ）圧縮器として知られているハードウェア適応性データ圧縮システムである。ＳＷＢＧ圧縮器のブロック図が図１に示されている。圧縮されるべき到来するシンボルＣＨＡＲＩＮ１０１を運ぶデータバスは、Ｍバイトの内容アドレスメモリ（ＣＡＭ）スライド窓圧縮器１０３および走査線バッファ１０５に接続されている。プログラム可能走査線値Ｓ信号線１１９も走査線バッファ１０５に入力として接続されている。ＭバイトのＣＡＭベースのスライド窓圧縮器１０３は４つの出力を有する。ＣＡＭ合致信号線ＧＭＡＴ１０７、ＣＡＭ合致アドレスバスＣＡＤＤ１０９、書込みアドレスバスＷＡＤＤ１１１および現在バイトデータバスＢO１１３の４つである。すべての出力１０７、１０９、１１１および１１３は、合致選択モジュール１１５に入力として接続されている。走査線バッファ１０５は２つの出力を有する。すなわち、最後の辞書リセット以後に１つの走査線全体が入力されていたどうかを指示する信号線ＶＡＬＩＤ１２３、および到来するシンボルから正確に１走査線長さだけ離れているメモリ位置において走査線バッファのなかに記憶されているシンボルを伝送するデータバスＢS１２１である。走査線バッファ１０５からの出力１２１および１２３の双方も、合致選択モジュール１１５に入力として接続されている。合致選択モジュール１１５は、走査線およびＣＡＭ合致の双方が生起している時に、走査線を出力するかＣＡＭ合致を出力するかを決定する。合致選択モジュール１１５の出力は、走査線合致信号線ＳＭ４１１、ＣＡＭ合致信号線ＣＭ４０９および生データ信号線ＲＤ４２９を含んでおり、これらの信号線は可変長さのポストコード-エンコーダ１２７に入力として接続されており、このエンコーダ１２７は圧縮されたデータを次々と信号線１２９を経て記憶システムに出力する。
図１中に示されているように、データバス１０１を経て到来する圧縮されるべきシンボルまたはバイトＣＨＡＲＩＮは、２つの並列な経路を通る。第１の経路はＭバイトのＣＡＭベースのスライド窓圧縮器１０３を通る経路であり、そこでスライド窓のなかに含まれている以前のＭ個のシンボルとの比較が行われる。圧縮器１０３は適切な形式のスライド窓圧縮器を使用して実現され得る。好ましくは、圧縮器１０３は前記の米国特許出願第０８／２５９，７６０号明細書に記載されている形式のものである。この圧縮器１０３の作動は後で詳細に説明される。好ましい実施例では、ＣＡＭベースのスライド窓圧縮器の窓サイズＭは１６に等しい。スライド窓圧縮器１０３は、到来するシンボルをＣＡＭ１０３のなかに記憶されているシンボルと比較し、また適切な情報を合致選択モジュール１１５に出力する。
圧縮されるべきシンボルまたはバイトＣＨＡＲＩＮが通る第２の経路は、走査線バッファ１０５を通る経路である。走査線バッファ１０５は先ず到来するシンボルをその後の検索のための次に利用可能なメモリ位置に記憶する。プログラム可能な走査線値Ｓは走査線のバイト長さに等しい。好ましくは、走査線バッファ１０５は２０４８バイトを記憶し得る。この実施例では、走査線長さ値Ｓは１から２０４７までの範囲内の任意の数であり得るので、走査線長さ値Ｓを特定するのに１１ビットが必要とされる。
走査線長さ値Ｓを使用して、走査線バッファ１０５はデータバス１２１上にシンボルＢSを出力する。シンボルＢSは到来するシンボルから正確に走査線長さ値Ｓシンボルだけ離れて走査線バッファのなかに記憶されているシンボルである。走査線バッファ１０５はまた、最後の辞書リセット以後に少なくともＳ値が走査線バッファのなかに入力されていることを合致選択モジュール１１５に報知する信号を信号線ＶＡＬＩＤ１２３上に出力する。従って、信号線ＶＡＬＩＤ１２３上の信号は、データバス１２１上の値ＢSが正当であることを合致選択モジュール１１５に報知する。
ＣＡＭベースのスライド窓圧縮器１０３および走査線バッファ１０５からの情報を使用して、合致選択モジュール１１５は、もし１つよりも多い合致が生起しているならば、どの合致を選ぶかを決定し、または、もし合致が生起していないならば、生バイトを決定する。可変長さのポストコード-エンコード１２７は、合致の長さを決定するのに合致選択モジュール１１５からの信号を使用し、また次いで走査線合致、ＣＡＭ合致または生バイトを可変ビット長さのコード語にエンコードする。可変長さのコーダ語は次いで連結され、バイトに分けられ、また出力信号線１２９を経て記憶または伝送システムに送られる。
ＣＡＭベースのスライド窓圧縮器１０３および走査線バッファ１０５は、概念的に図２ａに示されているような大ギャップを有するスライド窓として考察され得る。図２ａは本発明の概念を示す目的でのみ示されており、本発明の実際的なインプリメントを示すものではない。図２ａに示されているスライド窓はＳ＋１のセル２０１を含んでいる。０ないしＭ−１の番号を付けられている右側のＭのセルは、スライド窓圧縮器１０３のスライド窓を表し、ここに、いま到来中のバイトを含めて、データストリームのなかの到来するシンボルの最後のＭバイトが記憶される。到来しているバイトを記憶するセル０を例外として、これらのセルの各々のなかで、到来しているバイトとこのスライド窓のなかに記憶されているバイトとの間の合致がチェックされる。
ギャップ部分２０３が最初のＭセルに続く。ギャップ部分２０３のなかのセルは記憶のために使用されるが、到来しているバイトとの合致はチェックされない。このギャップのなかにＳ＋１−Ｍのセルが存在する。ギャップ部分２０３は、到来するデータのバイトが記憶される走査線バッフアを表す。最後のセル２０５はシンボルＢSを表し、また正確に１つの走査線長さＳだけ現在到来しているバイトから離れているバイトを含んでいる。合致はこのセルのなかで、以下に説明されるように、合致選択モジュール１１５によりチェックされる。
走査線長さＳの値がプログラム可能であれば、図２ａのスライド窓はギャップを有する可変長さのスライド窓である。図２ａの図示は、新しいバイトが入るたびにセル２０５のなかに記憶されているバイトが窓から外へシフトして、到来するバイトが窓の右側にシフトされ、また先に記憶されたバイトが左にシフトすることを示唆している。本発明の実際の実施例では、スライド窓は固定して保持されているデータと移動している書込みアドレスポインタおよび状態情報を有する循環するキューである。
本発明のスライド窓の第２の概念的な表し方が図２ｂに示されている。この図面も本発明の概念を示す目的でのみ示されており、本発明の実際的な実施を示すものではない。図２ｂには、スライド窓２１１の位置が圧縮されている現在の走査線２１３および以前に圧縮された走査線２１５に関して示されている。到来するデータバイトから正確に走査線長さだけ離れているセル２１７は到来するデータバイトを記憶するセル２１９の上に置かれて示されている。
スライド窓圧縮器１０３は、図３ａ中に示されているように、必要な制御回路を有するストリング合致モジュール（ＳＭＭ）３０１の連鎖から成っている。現在の入力シンボルは、現在のストリング合致モジュールに書かれる。これは、書込みイネーブル信号線ＷＲＥＮ（ｊ）３２１をイネーブルすることにより、ＳＭＭ（ｊ）３０１としてシンボル化されている。後続のクロックサイクルで、次の入力がアレイのなかの次のストリング合致モジュールＳＭＭ（ｊ＋１）に書かれる。
ｊの値は０で開始し、またクロックサイクルごとに最大１回ずつ１だけインクリメントされる。データはアレイのなかで固定されているが、状態情報は状態信号線ＳＴ（ｊ）上の隣接するＳＭＭの間をシフトされている。状態信号線ＳＴ（ｊ）は、合致が生起していないこと、ＳＭＭ３０１が合致の開始点にあることもしくはＳＭＭ３０１が合致の中央にあることを指示する。
単一のグローバル合致（ＧＭＡＴ）信号１０７は、いずれかのＳＭＭ３０１が合致の中央にある時を指示するのに使用される。信号線ＧＭＡＴ１０７はＳＭＭの各々への入力である。信号線ＧＭＡＴ１０７は２つの機能を有する。グローバル合致信号ＧＭＡＴ１０７は、ＣＡＭが少なくとも２つのキャラクタの合致するストリングを検出していることを表示する。第２に、グローバル合致信号ＧＭＡＴ１０７は、最長の合致するストリングのみが報告されることを保証するメカニズムを提供する。グローバル合致信号ＧＭＡＴ１０７は、後で説明されるＳＭＭ３０１モジュールの内側で状態機械３６３を制御することにより第２のメカニズムを提供する。グローバル合致信号ＧＭＡＴ１０７は、ストリング合致信号線ＳＴＲＭＡＴ（ｊ）３０７のいずれかが能動的であり、また信号ＥＮＡＢＬＥ１３０が能動的である時に、ＯＲゲート３０９およびＡＮＤゲート３１０により能動化される。信号線ＥＮＡＢＬＥ１３０は一層良好な圧縮のための好ましい実施例で使用されており、また合致選択モジュール１１５と共に説明されている。
各ＳＭＭ３０１は近似-合致-イネーブル信号ＮＭＥＮ（ｊ）を有する。近-合致-イネーブル信号ＮＭＥＮ（ｊ）は、最も長い現在のストリング合致を報告するＳＭＭのどれがキューのヘッドに最も近いかを決定するべく、ＳＭＭの間に連鎖されている。キューのヘッドは、現在の入力シンボルが書込まれた、書込みイネーブル信号線ＷＥＥＮ３２１が能動的であるアレイのなかのＳＭＭ３０１であるとみなされている。
各ＳＭＭ３０１は最近似-ワード-合致信号ＮＷＭＡＴ（ｊ）３２３をも有する。各クロックサイクルの間にただ１つの最近似-ワード-合致信号ＮＷＭＡＴ（ｊ）３２３が仮定され、能動的な書込みイネーブル信号ＷＲＥＮ（ｊ）に最も近い最長の現在のストリング合致の最後のシンボルを含んでいるＳＭＭ３０１の位置を表示する。
ストリング合致モジュールの構造は図３ｂに示されている。各ＳＭＭ３０１はＣＡＭワード３６１、ストリング合致状態機械３６３およびアドレス論理モジュール３６５から成っている。
各ＣＡＭワード３６１は、そのＳＭＭ３０１に対する書込みイネーブル信号線ＷＲＥＮ３２１が能動的である時に、入力バスＣＨＡＲＩＮ１０１からの１バイトのシンボルを記憶する。書込みイネーブル信号線ＷＲＥＮ３２１が不能動的であり、またＣＡＭワード３６１が書かれていない時には、キューのヘッドに現在書かれている入力シンボルが探索されている。キャラクタ合致信号線ＣＨＭＡＴ３６７は、ＣＡＭワード３６１の内容が入力バスＣＨＡＲＩＮ１０１上のシンボルと合致する時、ＣＡＭワード３６１により仮定されている。このキャラクタ合致信号は次いでストリング合致状態機械（ＳＭＳＭ）３６３に通される。キャラクタ合致信号線ＣＨＭＡＴ３６７は、書込みイネーブル信号線３２１がＳＭＭ３０１のなかで能動的である時、ディスエーブルされている。
ＳＭＳＭ３６３の機能は、最後のシンボルが現在のＳＭＭ３０１の結び付けられているＣＡＭワード３６１のなかに存在しているバッファストリングの状態を追跡することである。各ＳＭＭ３０１は、バッファストリングが現在の入力ストリングと合致しない、合致の開始である、または合致の中央であることを仮定する信号線の対ＳＴＯＵＴ３６９を有する。この信号線の対ＳＴＯＵＴ３６９は、信号線ＳＴＩＮ３７１の対としてアレイのなかの次のＳＭＳＭ３６３に連結されている。この状態情報は、新しいキャラクタが入力バスＣＨＡＲＩＮ１０１から入力されるつど一回、ＳＭＳＭの間をシフトされる。状態情報はイネーブル信号ＷＲＥＮ３２１と同一の方向に通される。
各ＳＭＭ３０１は、ＳＭＳＭ３６３とアドレス論理モジュール３６５との間に連結されているストリング合致信号線ＳＴＲＭＡＴ３０７を含んでいる。信号線ＳＴＲＭＡＴ３０７は、バッフアストリングが少なくとも現在の入力ストリングの最後の２つのキャラクタと合致する、たとえば合致の中央にある時、ＳＭＳＭ３６３により仮定されている。状態情報は、新しい入力シンボルが受け入れられた各クロックサイクルで、能動的な書込みイネーブル信号ＷＲＥＮ３２１の方向に、右にシフトされる。
アドレス論理モジュール（ＡＬＭ）３６５は、近-ワード-合致信号線ＮＷＭＡＴ３２３および近-合致-イネーブル-出力信号線ＮＭＥＮＯＵＴ３７３を出力するモジュールである。ＡＬＭ３６５は、ＳＭＭ３０１のなかの合致が能動的書込みイネーブル信号線ＷＲＥＮ３２１に最も近いか否かを決定する組み合わせ論理ブロックである。これは、多重ストリング合致が生起する時に必要とされる。ＡＬＭ３６５は、ＳＭＭ３０１が本当に最も近い合致である時に、近-ワード-合致信号線ＮＷＭＡＴ３２３を仮定する。信号線ＮＷＭＡＴ３２３は、現在のＳＭＭ３０１のなかの信号線ＳＴＲＭＡＴ３０７と隣のＳＭＭから入力されている信号線ＮＭＥＮＩＮ３７５のなかの近-合致-イネーブルとから導き出される。信号線ＮＭＥＮＩＮ３７５のなかの近-合致-イネーブルが能動的である時、現在のＳＭＭ３０１とキューのヘッドとの間に能動的なＳＴＲＭＡＴ信号を含んでいるＳＭＭは存在しない。従って、近-ワード-合致信号線ＮＷＭＡＴ３２３は、現在のＳＭＭ３０１が、現在の入力ストリングと合致する最も長いバッフアストリングの最も新しい段階の最後のシンボルを含んでいることを仮定する。もし信号線ＮＭＥＮＩＮ３７５が能動的であり、また信号線ＳＴＲＭＡＴ３０７も能動的であれば、現在のＳＭＭ３０１は最も近い合致を含んでいる。もし信号線ＮＭＥＮＩＮ３７５が不能動的であれば、最も近い合致は以前の能動的書込みイネーブル信号線ＷＲＥＮ３２１により近い。ＡＬＭ３６５も隣のＳＭＭに対する信号ＮＭＥＮＩＮ３７５である出力信号ＮＭＥＮＯＵＴ３７３を生ずる。信号線ＮＷＭＡＴ３２３およびＮＭＥＮＯＵＴ３７３の基本的機能は下式により与えられている。
0004057650.tif 000002
近-合致-イネーブル信号ＮＭＥＮＯＵＴ３７３およびＮＭＥＮＮＩＮ３７５は、書込みイネーブル信号ＷＲＥＮ３２１の運動と反対の方向に通される。
ストリング合致状態機械（ＳＭＳＭ）３６３に対する状態遷移図が図３ｃに示されている。ＳＭＳＭ３６３は、その出力、ストリング合致信号線ＳＴＲＭＡＴ３０７、が単に以前のＳＭＭ３０１の現在の状態の関数であり、また以前のＳＭＭ３０１へのどの入力にも複合的に関係しない点で、Ｍｏｏｒｅスタイル状態機械に似ている。このことは本発明のような応用において、より大きいクロック速度を許すという利点を有する。
通常の状態機械と異なり、現在の状態変数が次の状態論理に入力としてフィードバックされず、それらはアレイのなかの隣のＳＭＭ３０１のＳＭＳＭ３６３にシフトされる。従って、ＳＭＳＭモジュール３６３は同期論理アレイ要素として考えられ得る。ここに存在するＳＭＳＭ機能およびグローバル合致プロトコルが、入力データがバッフアのなかで物理的にシフトし、またＳＭＳＭ状態情報が固定にとどまるＷｈｉｔｉｎｇスタイル圧縮アーキテクチュアのクロックレート改善をも可能にすることは特記されるべきである。こうして、Ｗｈｉｔｉｎｇスタイル-アーキテクチュアのなかで、ＳＭＳＭは通常のＭｏｏｒｅスタイル状態機械として現れる。
ＳＭＳＭの速い初期化を容易にするため、辞書のリセット時に、すべてのＳＭＳＭはリセット状態Ｒ３８１に強制的に入れられる。リセット状態Ｒ３８１は、バッフアワードがまだ書かれておらず、従ってまたＳＭＳＭ３６３がグローバル合致信号ＧＭＡＴ１０７を仮定し得ないことを意味する。ＣＡＭワード３６１は空であるとみなされており、また合致はリセット状態Ｒ３８１の間は生起し得ない。ＳＭＳＭ３６３は、ＳＭＭが書かれているＣＡＭワード３６１の後でのみリセット状態Ｒ３８１を去る。書込みイネーブル信号線ＷＲＥＮ３２１が所与のバッフアワードに対して仮定されている時、そのＳＭＳＭ３６３は状態Ｘ３８３に達し、また合致ストリングを捜し始める。最後のモジュール（モジュールｎ−１）のリセット状態が最初のモジュール（モジュール０）に通されるのを阻止するべく、簡単な論理回路が使用されている。この回路は、もしモジュールｎ−１がリセット状態Ｒ３８１にあるならば、Ｘの状態を常に通す。
ＳＭＳＭ３６３は、ＣＡＭワード３６１の内容が現在の入力ストリングと合致しないか、合致の開始にあるか、または少なくとも現在の入力ストリングの最後の２つのキャラクタと合致する合致ストリングのなかにあるかを決定する。ＳＭＳＭ３６３がリセット状態Ｒ３８１から状態Ｘ３８３へ移動し終わっている時、このことは、システムが圧縮すべきデータの受信を開始しているが、ＳＭＭ３０１に対するＣＡＭワード３６１のなかに記憶されているワードがキューのヘッドに記憶されている現在の入力シンボルと合致しないことを意味する。信号線ＣＨＭＡＴ３６７が能動化されて、ＣＡＭワード３６１のなかに記憶されているワードがキューのヘッドに記憶されている現在の入力シンボルと合致しないことを信号する時、ＳＭＳＭ３６３は状態Ｙ３８５に移動して、最後の入力シンボルのみが合致されたことを表示する。
もしＳＭＳＭ３６３が既に状態Ｙ３８５にあるならば、第２の合致キャラクタがＳＭＳＭ３６３を状態Ｙ３８５から状態Ｚ３８７へ移動する。状態Ｚ３８７は、現在のＳＭＭ３０１が最大の知られている長さの圧縮可能な合致ストリングを検出し終わっていることを表す。ここで信号線ＳＴＲＭＡＴ３０７は、そのＳＭＳＭ３６３が、信号線ＧＭＡＴ１０７を能動化する状態Ｚ３８７へ移動し終わっているＳＭＭ３０１に対して能動化されている。最長の合致の１つよりも多い場合が生起し得るので、１つよりも多いＳＭＭ３０１が信号線ＳＴＲＭＡＴ３０７を仮定し、また同一のクロックサイクルのなかで状態Ｚ３８７へ移動し、現在の最長の合致ストリングの多重の場合が検出されていることを表示する。
ストリング合致状態機械ＳＭＳＭ３６３は状態Ｙへ、また次いで状態Ｚへ遷移しなければならないので、グローバル合致信号ＧＭＡＴ１０７は合致の第２のバイトまで能動的にならない。いったん能動状態になると、グローバル合致信号ＧＭＡＴ１０７は、入力バスＣＨＡＲＩＮ１０１上のキャラクタが、隣の状態機械３６３がＺ（合致）状態にあるセル３６１のすべてとの合致に失敗するまで、能動状態にとどまる。異なる置き換えにおけるバック-ツー-バックのＣＡＭ合致が可能である。グローバル合致信号ＧＭＡＴ１０７は第２の合致の第１のバイトに対して簡単にデアサート（ｄｅ-ａｓｓｅｒｔ）する。
ストリング合致がスライド窓圧縮器１０３のなかで生起する時、グローバル合致信号ＧＭＡＴ１０７は能動化されており、また合致選択モジュール１１５が通知されている。合致されたＣＡＭワード３６１のアドレスはアドレスバス１０９を経て合致選択モジュール１１５にも伝送される。
図３ｄは、アドレスバス１１１を経て合致選択モジュール１１５に伝送されるＣＡＭ書込みアドレスＷＡＤＤを計算するのに必要とされるカウンタ３４１を示す。好ましい実施例では、スライド窓圧縮器１０３は１６のセルを含んでおり、またこうして４ビットの書込みアドレスカウンタ３４１で十分である。従って、代替的な実施例で、もしスライド窓圧縮器１０３が追加的なセルを含んでいるならば、書込みアドレスカウンタ３４１は追加的なビットを含んでいるように拡張されなければならない。書込みアドレスカウンタ３４１は、書込みアドレスバスＷＡＤＤ１１１上の書込みアドレスを図３ａ中に示されているようにＳＭＭアレイにより必要とされる書込みイネーブル信号ＷＲＥＮ（ｊ）３２１に対する適切な値に変換するのに使用されている書込みアドレスバスＷＡＤＤ１１１によりアドレスデコーダ３４３に接続されている。
図３ｅは、アドレスバス１０９を経て伝送されるべきＣＡＭ合致アドレスＣＡＤＤを計算するアドレス-エンコーダ３５１を示す。ＡＬＭ３６５の各々からの近-ワード-合致信号ＮＷＭＡＴ（ｊ）３２３は、アドレス-エンコーダ３５１に入力され、またアドレスバス１０９上に出力されるＣＡＭ合致アドレスＣＡＤＤを計算するのに使用される。図３ｄおよび図３ｅの双方に示されているハードウェアはスライド窓圧縮器１０３のなかに含まれている。
ＣＡＭベースのスライド窓圧縮器１０３への並別なデータ経路は、走査線バッフア１０５である。走査線バッフア１０５はデータバスＣＨＡＲＩＮ１０１から到来するシンボルを受け入れ、そのシンボルをバッフアのなかに記憶し、また以前にＳバイト前に記憶されたシンボルＢSをデータバス１２１上に出力する。走査線バッフア１０５はプログラム可能な長さの先入れ-先出し（ＦＩＦＯ）バッフアとして作動する。シンボルＢSを出力することに加えて、走査線バッフア１０５は信号線１２３上に信号ＶＡＬＩＤをも出力する。信号ＶＡＬＩＤは、少なくともＳバイトが最後の辞書リセット以後に走査線バッフア１０５のなかに記憶されている時に、能動的である。辞書リセットの後に、信号ＶＡＬＩＤは、正確にＳバイトの１つの走査線が走査線バッフア１０５のなかに記憶された後に能動化されている。
合致選択モジュール１１５の概要ブロック図が図４ａに示されている。現在の入力バイトＢOと、１つの走査線長さだけ離れている以前の入力バイトＢSとを伝送する信号線１１３および１２１は、それぞれコンパレータ４０１に入力として接続されている。２つのバイトＢOおよびＢSが走査線バッフア１０５のなかで正確にＳバイトの走査線長さだけ離れていることは特記されるべきである。コンパレータ４０１は２つのバイトＢOおよびＢSを比較し、また結果ＣＭＰを信号線４０３上に出力する。信号ＣＭＰは２つのバイトＢOおよびＢSが等しい時のみ能動的である。信号線４０３はＡＮＤゲート４０５に入力として接続されている。信号ＶＡＬＩＤを伝送する信号線１２３はＡＮＤゲート４０５に他の入力として接続されている。論理ゲート４０５は信号ＣＭＰおよび信号ＶＡＬＩＤに論理的ＡＮＤ演算を行い、また結果ＳＭＡＴを信号線４０７上に出力する。
走査線合致信号４０７は合致選択状態機械４０８に入力として接続されている。グローバル合致信号ＧＭＡＴを伝送する信号線１０７も合致選択状態機械４０８に入力として接続されている。後で詳細に説明されるように、合致選択状態機械４０８は、２つの並列な経路上での合致の間のアービトレーションを行い、ＣＡＭ合致が存在し、かつコンパレータ４０１が２つのバイトＢOおよびＢSが等しいことを信号する時に、ＣＡＭ合致に優先を与える。合致状態機械は、ＣＡＭ合致が選択される時、ＣＡＭ合致信号ＣＭを信号線４０９上に出力し、また、走査線合致が選択される時、走査線合致信号ＳＭを信号線４１１上に出力する。
終了論理ブロック４２０は、ＣＡＭ合致長さがプログラム可能な最大長さに制限されている時、合致終了信号ＴＥＲＭを発生する。信号ＴＥＲＭは合致選択状態機械４０８に入力として接続されている信号線４４０上に伝送される。好ましい実施例では信号ＴＥＲＭは、合致値ＣＬＯＭのＣＡＭ長さが２５６に等しい時、能動化される。好ましい実施例では、ポストコーダが走査線合致を最大２５６に制限する。たとえば、長さ２５７の走査線合致は長さ２５６のコード語とそれに続く長さ１の他のコード語とに分けられ得る。しかし、長さ２５７のＣＡＭ合致は同一の仕方で分けられ得ない。なぜならば、長さ１のＣＡＭ合致は許されていないからである。終了論理は後続の単一の生バイトを有する長さ２５６のコード語を強制する。従って、終了論理は２５６よりも長いＣＡＭ合致をより小さいＣＡＭ合致のシリーズに分ける必要がある。
ＣＡＭ合致アドレスＣＡＤＤアドレスバス１０９および書込みアドレスＷＡＤＤアドレスバス１１１は、置換計算回路４２２に入力として接続されている。置換計算回路４２２は、合致が終了した時にＣＡＭのなかに書かれているバイトに関してＣＡＭ合致位置を関連させる置換値ＤＩＳＰを計算する。この合致位置または置換値ＤＩＳＰは信号線４２４上に出力される。
現在入力バイトＢO信号線１１３は、遅延ブロック４５０に接続されており、そこでそれは適切な長さの時間だけ遅延させられる。遅延ブロック４５０の出力４２８はマルチプレクサ４２６に入力として接続されている。マルチプレクサ４２６は、ＣＡＭ合致信号ＣＭ４０９および走査線合致信号ＳＭ４１１が共に不能動的である時には常に、生データ信号線ＲＤ４２７上に生バイト４２８を出力する。マルチプレクサ４２６は、ＣＡＭ合致信号ＣＭ４０９が能動的である時には常に、生データ信号線ＲＤ４２７上にＣＡＭ合致置換ＤＩＳＰ４２４を出力する。好ましい実施例では、マルチプレクサ４２６は、走査線合致信号ＳＭ４１１が能動的である時に、生バイト４２８を出力するが、その値は決して必要とされないし、使用もされない。
合致選択状態機械４０８は、図４ｂに示されている状態遷移図により支配されている。状態Ａ４２１は不合致に相当し、状態Ｂ４２３は少なくとも１つのバイトの走査線合致に相当し、また状態Ｃ４２５は少なくとも２つのバイトのＣＡＭ合致に相当する。本発明の好ましい実施例では、少なくとも２つのバイトのＣＡＭ合致は、合致選択状態機械４０８が状態Ａ４２１にある時、１つのバイトの走査線合致に優先する。従って、合致選択状態機械４０８が状態Ａ４２１にあり、また少なくとも２つのバイトのＣＡＭ合致が存在する時、合致選択状態機械４０８は状態Ｃ４２５に移動し、またＣＡＭ合致信号ＣＭが能動化される。状態Ａ４２１もしくは状態Ｃ４２５から、もしＣＡＭ合致は存在しないが走査線合致は存在するならば、合致選択状態機械４０８は状態Ｂ４２３に移動し、また走査線合致信号ＳＭが能動化される。もしＣＡＭ合致が最大長さに達するならば、信号ＴＥＲＭが能動化され、また合致が終了され、それにより合致選択状態機械は状態Ａ４２１に復帰する。イネーブル信号１３０が、好ましい実施例では、圧縮を改善するのに使用される。ＣＡＭおよび走査線合致回路は、合致選択状態機械４０８にアービトレーションを行わせるべく、完全に並列に作動し得る。しかし圧縮器は以下のシナリオであまり効率的でない：走査線合致ＳＭＡＴ４０７およびＣＡＭ合致信号ＧＭＡＴ１０７が共に現在能動的であり、また合致選択状態機械４０８が走査線合致を出力している。さらに、データストリームがより小さい置換で合致するストリングを含んでおり、合致信号ＧＭＡＴ１０７を最初に仮定したＣＡＭ合致よりも短く、また走査線合致の間に開始する。もし、走査線合致が終了する時に、ＣＡＭ合致信号ＧＭＡＴ１０７がまだ能動的であれば、圧縮器は最適な置換よりも長い置換によりＣＡＭ合致に切換わるであろう。好ましい実施例では、合致選択状態機械が状態Ｃにある時、イネーブル信号ＥＮＡＢＬＥ１３０がデ-アサートされており、グローバル合致信号ＧＭＡＴ１０７を抑制し、またこうしてＣＡＭ合致を阻止する。こうすることにより、走査合致が終了する時に、その後のＣＡＭ合致が最小可能な置換を有することが保証される。
合致選択状態機械の出力、走査線合致信号ＳＭ４１１およびＣＡＭ合致信号ＣＭ４０９、は生データ信号線ＲＤ４２７と一緒にポストコード-モジュールに接続されている。ポストコード-モジュール１２７は、走査線合致信号ＳＭ４１１およびＣＡＭ合致信号ＣＭ４０９が能動的であるクロックの数により合致の長さを決定する。走査線合致に対しては長さは、走査線合致信号ＳＭ４１１が能動的であるクロックの数である。ＣＡＭ合致に対しては長さは、ＣＡＭ合致信号ＣＭ４０９が能動的であるクロックの数よりも１つ多い。なぜならば、ＣＡＭ合致信号ＣＭ４０９はＣＡＭ合致の最初のクロックに対しては不能動的であるからである。走査線合致信号ＳＭおよびＣＡＭ合致信号ＣＭは相互に排他的であるから、単一の合致長さカウンタ４５０が合致の長さを決定し得る。合致長さカウントＬＯＭ４５１はカウンタ４５０からエンコード論理４５４へ出力される。レジスタ出力ＳＭ２、ＣＭ２およびＲＤ２はそれぞれ簡単に走査線合致信号ＳＭ４１１、ＣＡＭ合致信号ＣＭ４０９および生データ信号ＲＤ４２７であり、これらは合致長さカウンタ出力ＬＯＭ４５１の長さに相当するように遅延されている。エンコード論理４５４は、レジスタ出力ＳＭ２  ４６２が不能動状態に遷移する時、走査合致長さＬＯＭに相当するコード語ＣＷ４５５を出力する。エンコード論理４５４は、出力ＣＭ２  ４６１が不能動状態に遷移する時、ＣＡＭ合致長さＬＯＭおよび置換出力ＲＤ２  ４５３に相当するコード語ＣＷ４５５を出力する。エンコード論理４５４は、出力ＳＭ２および出力ＣＭ２が現在および以前のクロックに対して不能動的である時、生バイトＲＤ２  ４５３に相当するコード語ＣＷ４５５を出力する。シフタ４５６はすべてのコード語ＣＷ４５５を受け入れ、またそれらを個々の圧縮されたバイトに分ける。これらのバイトは次いで信号線１２９上に出力される。
表Ｉは１６に等しいスライド窓長さＭ、２から２５６までのＣＡＭ合致長さ範囲および１から２５６までの走査線合致長さ範囲を有する好ましい実施例のポストコードを示す。ポストコードはＢａｃｋｕｓ-Ｎａｕｒフォーマットで示されている。
本発明による復元器の概要ブロック図が図５に示されている。圧縮されたデータは信号線５０１を経て記憶または伝送システムから復元器へ伝送される。信号線５０１はポストコード-デコーダ-論理ブロック５０３に入力として接続されている。ポストコード-デコーダ-論理ブロック５０３は到来する可変長さのコード語を、先に説明されたように、コード語および先行のフラグビットに従って、ＣＡＭ合致コード対（ＤＩＳＰ、ＣＬＯＭ）、走査線合致長さ値ＳＬＯＭもしくは生バイトＲＡＷに変換する。
ポストコード-デコーダ-論理ブロック５０３の出力は信号線５０５上に伝送される。信号線５０５は読出し／書込みランダムアクセスメモリ（ＲＡＭ）制御論理ブロック５０７に入力として接続されている。ＲＡＭ制御論理ブロック５０７は信号線５０９および５１１によりランダムアクセスメモリ（ＲＡＭ）５１３に接続されている。好ましくは、ＲＡＭ５１３は２０４８バイトの記憶能力がある。ポストコード-デコーダ-論理ブロック５０３からの情報を使用して、ＲＡＭ制御論理ブロック５０７は適切なバイトをＲＡＭ５１３に書込み、またそれから読出す。ＲＡＭ制御論理ブロック５０７は次いで復元されたバイトを信号線５１５を経てホストに出力する。詳細には、もしポストコード-デコーダ-論理ブロック５０３が生バイト、ＲＡＷ、を報告しているならば、ＲＡＭ制御論理ブロック５０７は信号線５０９を使用してそのバイトをＲＡＭ５１３に書込み、また生バイト、ＲＡＷ、を出力信号線５１５上に出力する。もしポストコード-デコーダ-論理ブロック５０３が走査線合致長さ値ＳＬＯＭを報告しているならば、ＲＡＭ制御論理ブロック５０７はＲＡＭ５１３のなかの適切なアドレス、たとえば現在のＲＡＭ書込みアドレスに対して１つの走査線長さだけ以前のアドレスを読み、そのバイトを現在の書込みアドレスにおいてＲＡＭ５１３に書込み、またそのバイトを出力信号線５１５上に出力する。これは走査線合致長さ値ＳＬＯＭにより指定される値に等しいいくつかのバイトに対して生起し、各バイトに対するＲＡＭ５１３書込みアドレスをインクリメントする。もしポストコード-デコーダ-論理ブロック５０３がＣＡＭ合致コード対（ＤＩＳＰ、ＣＬＯＭ）を報告しているならば、ＲＡＭ制御論理ブロック５０７は、現在のＲＡＭ書込みアドレスからディスプレイ値ＤＩＳＰを差し引くことにより指定されるＲＡＭ５１３のなかの適切なアドレスからバイトを読み、そのバイトを現在の書込みアドレスにおいてＲＡＭ５１３に書込み、またそのバイトを出力信号線５１５上に出力する。これは合致値ＣＬＯＭのＣＡＭ長さにより指定される値に等しいいくつかのバイトに対して生起し、各バイトに対するＲＡＭ５１３書込みアドレスをインクリメントする。
圧縮および復元プロセスを示すべく、下記の例が示され、また説明される。下記の１６進で表されているバイトのシーケンスを考察する。
0004057650.tif 000003
データのこのストリームはデータバス１０１を経て、１６に等しいＣＡＭスライド窓サイズＭと２０に等しい走査線長さＳとを有する本発明のデータ圧縮器に入力される。もしバイトが左から右へ、また次いでトップからボトムへエンコードされるならば、結果としての圧縮されたデータのシーケンスは本発明のデータ圧縮器から出力され、そこで生バイトは１６進で表されており、またＣＡＭ合致コード対は１０進で（ＤＩＳＰ、ＣＬＯＭ）として表されており、また走査線合致長さは１０進で（ＳＬＯＭ）として表されている。
0004057650.tif 000004
上記の情報がポストコード論理ブロック１２７から出力される時、それは記憶または伝送システムへの伝送のために、上記のように、適切な先行のフラグビットによりエンコードされる。
最初の２０バイトは最初の走査線を形成するので，以前の走査線への合致は、信号ＶＡＬＩＤ１２３が能動化であるために、生起し得ない。最初のバイトは生バイトとして出力される。第２のバイトは１の置換および９の合致長さ（１、９）を有するＣＡＭ合致を開始する。バイト１１は、どの以前のバイトとも合致しないので、生バイトとして出力される。バイト１２は、第１０のバイトと合致するけれども、まだ生バイトとして出力される。なぜならば、２つの連続するバイトが、グローバル合致信号ＧＭＡＴ１０７が能動的になる以前に、合致しなければならないからである。バイト１３は置換３ないし１２においてキャラクタ合致を発生し、対応するストリング合致状態機械３６３を第１の合致状態３８５に入らせる。バイト１４は置換４ないし１２において合致を継続し、すべての９つのストリング合致状態機械３６３を、グローバル合致信号ＧＭＡＴ１０７が仮定されているストリング合致状態３８７に入らせる。バイト１５ないし２２により、漸次により少ないストリング合致状態機械３６３が合致し続ける。このプロセスの間、各々の新しいバイトがデータストリームのなかでより早くストリング合致を生ずるにつれて、ＣＡＭにより表示される置換は４から１２へ増大する。データストリームの開始を通り越す置換は行われ得ないので、バイト２３はＣＡＭ合致を終了する。なお、注意すべきこととして、バイト２１および２２は上の線と合致し、また走査線合致信号ＳＭＡＴ４０７を能動状態にするけれども、合致選択状態機械４０８はＣＡＭ合致を、それが終了するまで、報告し続ける。バイト２３は上の線と合致し（バイト３）、またバイト２９を通じて持続する走査線合致を開始する。バイト３０は全く合致せず、従って生バイトである。バイト３１および３２は上の走査線と合致し、また２バイトの走査合致を形成する。バイト３３は生バイトである。バイト３４（００）は上の線とＣＡＭのなかに記憶されている以前のバイトとの双方と合致する。合致の第２のバイトが走査合致信号ＳＭＡＴ４０７の間に能動的になるまで、グローバル合致信号ＧＭＡＴ１０７が能動的にならないので、合致選択状態機械４０８は走査線合致を選び、それが次いで１０のバイトに対してランする。バイト４４ないし４７はバイト３３ないし３６と合致して、４バイトのＣＡＭ合致（Ｂ、４）を形成する。バイト４８ないし５０は上の線または１５の以前のバイトのどれとも合致せず、従って生バイトとして出力される。バイト５１および５２は上の線と合致して、２バイトの走査線合致（２）を形成する。バイト５３はバイト５２と合致し、またバイト５４はバイト５３と合致して、２の置換を有する２バイトのＣＡＭ合致（２、２）を形成する。バイト５５は上の線または最後の１５バイトと合致せず、従ってそれは生バイトとして出力される。バイト５６はバイト４８と合致し、またバイト５７はバイト４９と合致して、８の置換を有する２バイトのＣＡＭ合致（８、２）を形成する。バイト５８および５９はバイト４８および４９ともバイト５６および５７とも合致する。アドレス論理モジュール３６５は常に最小の置換を有する合致を報告する。従って、バイト５６および５７がより近いので、２の長さを有する置換２のＣＡＭ合致が出力される（２、２）。最後のバイトは上の線と合致し、また１バイトの走査線合致（１）として出力される。ポストコード-エンコーダ１２７による最後のシンボル出力は、データストリームが完了していることを示すレコードマーカーの終了である。
当業者に明らかなように、この圧縮されたデータストリームを復元するためには、図５に示されているように、圧縮された値および生バイトが復元器に入力される。復元器は上記のプロセスを逆に進めて、生バイトを出力し、またコード対および走査線合致長さ値ＳＬＯＭを圧縮復元するのにデータの以前の値を使用する。復元が完了した時、データの元のストリームが復元されている。
さらに当業者に明らかなように、本発明のシステムは、好ましい実施例に含まれている１つの位置に追加して、多重の以前の走査線との合致位置を含んでいてよい。スライド窓圧縮器１０３はより大きいまたはより小さいＣＡＭを含んでいるものとして設計されていてもよい。
請求の範囲により定められている本発明の範囲から離れることなく、好ましい実施例に他の種々の変形が行われ得ることは当業者にとって容易に明らかであろう。
0004057650.tif 000005
0004057650.tif 000006
0004057650.tif 000007
0004057650.tif 000008
0004057650.tif 000009
0004057650.tif 000010
【図１】
0004057650.tif 000011
【図２ａ】
0004057650.tif 000012
【図２ｂ】
0004057650.tif 000013
【図３ａ】
0004057650.tif 000014
【図３ｂ】
0004057650.tif 000015
【図３ｃ】
0004057650.tif 000016
【図３ｄ】
0004057650.tif 000017
【図３ｅ】
0004057650.tif 000018
【図４ａ】
0004057650.tif 000019
【図４ｂ】
0004057650.tif 000020
【図４ｃ】
0004057650.tif 000021
【図５】
0004057650.tif 000022