(57)【要約】【課題】一定化された処理遅延での圧縮及び解凍処理を用いた送受信間における効率的なデータ伝送を行う。【解決手段】本発明の一側面に係るデータ圧縮器は、複数の固定長のシンボルからなる入力データ列に含まれた、連続する２以上のシンボルが登録されている場合、２以上のシンボルを１つのシンボルに変換する変換部と、変換部で２以上のシンボルが１つのシンボルに変換された場合は、当該１つのシンボルを出力し、そうでない場合は、２以上のシンボルを出力する出力部とを含む。【選択図】図６
2014236449.tif 000002
【特許請求の範囲】
【請求項１】
複数の固定長のシンボルからなる入力データ列に含まれた、連続する２以上のシンボルが登録されている場合、前記２以上のシンボルを１つのシンボルに変換する変換部と、
前記変換部で前記２以上のシンボルが１つのシンボルに変換された場合は、当該１つのシンボルを出力し、そうでない場合は、前記２以上のシンボルを出力する出力部と、
を含むデータ圧縮器。
【請求項２】
前記出力部の、前記２以上のシンボルが１つのシンボルに変換された場合の出力は、そうでない場合の出力が取り得ない値となる
請求項１に記載のデータ圧縮器。
【請求項３】
前記変換部は、前記２以上のシンボルが１つのシンボルに変換された場合、当該１つのシンボルに変換したことを示すフラグを出力し、そうでない場合、前記２以上のシンボルの各々に変換していないことを示すフラグを出力する
請求項１又は２に記載のデータ圧縮器。
【請求項４】
前記変換部は、ＣＡＭ（Content Addressable Memory）である
請求項１から３のいずれか一項に記載のデータ圧縮器。
【請求項５】
所定のルールに基づいて、前記入力データ列に含まれる前記シンボル間の区切位置を決定する区切位置決定部
をさらに含み、
前記変換部は、前記区切位置を基準として、前記連続する２以上のシンボルが登録されているか判断する
請求項１から４のいずれか一項に記載のデータ圧縮器。
【請求項６】
前記区切位置決定部は、前記シンボルに対して予め定められた優先度を用いて、連続する２つの前記シンボルが示す値の優先度に基づいて、前記区切位置を決定する
請求項５に記載のデータ圧縮器。
【請求項７】
請求項１から６のいずれか一項に記載のデータ圧縮器を複数直列に接続し、
前段のデータ圧縮器の出力を後段のデータ圧縮器に入力する
データ圧縮装置。
【請求項８】
入力データ列に含まれる固定長のシンボルが、圧縮処理において２以上のシンボルから変換されたシンボルとして登録されている場合、当該シンボルを前記２以上のシンボルに変換する変換部と、
前記変換部で前記シンボルが前記２以上のシンボルに変換された場合は、前記２以上のシンボルを出力し、そうでない場合は、前記入力データ列に含まれるシンボルを出力する出力部と、
を含むデータ解凍器。
【請求項９】
前記圧縮処理において２以上のシンボルから変換されたシンボルは、アドレスとして登録されており、前記変換部は、前記アドレスに対応付けて保持する２以上のシンボルを出力するメモリである
請求項８記載のデータ解凍器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮器及びデータ解凍器に関する。
【背景技術】
【０００２】
近年における、データストリームがネットワーク上を流れる環境下では、データストリームを形成するストリームデータに対するリアルタイム処理を行うため、ストリームデータを送受信する様々なエンティティ間におけるデータ伝送時間の短縮化が求められている。エンティティは、例えば、ネットワークに接続された様々な通信機器（端末装置，中継装置）である。また、データストリームは、通信機器内に搭載されたプロセッサ，ＬＳＩ（Large Scale Integrated Circuit），ＦＰＧＡ（Field Programmable Gate Array）の
ような様々なストリームデータに対する処理を行う電子回路チップ間を流れる。電子回路チップもエンティティの１つであり、エンティティ間の通信は、通信機器間の通信だけでなく、通信機器内部の電子回路チップ間の通信（いわゆる内部通信）を含む。
【０００３】
近年では、ストリームデータ量が増大する傾向にある。或る量のストリームデータを送信側から受信側へ効率的に伝送する手法として、エンティティ間を結ぶ伝送路の周波数を上げる（伝送帯域を広げる）ことや、エンティティ間を複数の伝送路で結び、ストリームデータを並列に送信することが考えられる。しかしながら、これらの手法は、物理的、周波数的な限界がいずれ来ると考えられている。
【０００４】
そこで、送信側エンティティでストリームデータの圧縮を行うことで、送信データ量の減少に伴うデータ伝送時間の短縮化を以て、データ伝送の効率化を図ることが考えられている。例えば、通信機器において、送信データを圧縮装置（ＬＺＷやＲＬＥなど複数の圧縮アルゴリズムを含む）に接続し、元の送信データと、複数の圧縮アルゴリズムのそれぞれによる処理を経たデータとのそれぞれのデータサイズを比較し、最も小さいサイズのデータを通信機器から送出する技術がある（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−６５８２８号公報
【特許文献２】特許第３７４８００３号公報
【非特許文献】
【０００６】
【非特許文献１】J. Ziv and A. Lempel, "A universal algorithm for sequential data compression." IEEE Transactions on Information Theory, Vol. IT-23, No.3, May 1977, p.337-343
【非特許文献２】T. Welch, "A technique for high-performance data compression." IEEE Computer. 1984, p. 8-19
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、例えば、上記した特許文献１における技術（従来技術）では、ソフトウェア処理による既存の可逆圧縮アルゴリズムの適用を前提としている。このため、以下のような問題があった。
【０００８】
既存の圧縮アルゴリズムでは、例えば、“ａｂｃｄ・・・”というデータシンボル（以下、単に「シンボル」と表記）列に対して圧縮処理が実行される場合、最初に、 シンボ
ル“ａ”についてルックアップテーブルが検索される。“ａ”がヒットした場合には、次に、“ａｂ”についてルックアップテーブルが検索される。“ａｂ”がヒットしなかった場合に、データ列“ａ”が所定の圧縮データ（例えば“ｘ”）に変換される一方で、“ａｂ”に対する変換用のエントリ（例えば“ａｂ”→“ｙ”）が新たにルックアップテーブルに登録される。
【０００９】
上記手法では、検索対象がヒットしなくなるまでルックアップテーブルの検索が繰り返される。従って、ルックアップテーブルの検索回数に応じて、１回の圧縮処理に係る処理ステップが可変となる。また、ストリームデータにおいて、データ列の傾向（或る変換可能なシンボル列の出現頻度）によって、処理ステップ数が左右される。このため、１回の圧縮処理に要する時間が一定とならない。これが第１の問題である。
【００１０】
また、上記手法では、ルックアップテーブルの更新によって、圧縮可能なシンボル列が増加する一方で、解凍側に解凍処理用のテーブルエントリ（“ｙ”→“ａｂ”）を送らなければ、解凍側で解凍を行うことができない。このとき、圧縮されたデータと解凍処理用データの合計サイズが元のデータのサイズと同等、或いは元のデータのサイズを上回る場合には、伝送路上のデータ量減少に貢献しない。これが、第２の問題である。
【００１１】
さらに、上記手法では、ルックアップテーブルにおいて、圧縮されるシンボル列をなすシンボル数は、一定ではなく、どのような長さ（個数）のシンボル列でも登録可能となっている。これが第３の問題である。
【００１２】
圧縮処理は、送信側エンティティがストリームデータを受信側エンティティで送信する前に実行される複数の工程（ステップ）の一つとして挿入される。このとき、圧縮処理がボトルネックとなることは回避されるべきである。また、圧縮処理において揺らぎ（ジッタ）を生じさせることも、後段に位置する工程への影響に鑑み回避されるべきである。これらの観点からは、処理ステップ数（処理遅延）が一定とならない第１の問題及び第３の問題を含む従来技術は採用し得ず、また、第２の問題に鑑みても従来技術は採用し得ない。
【００１３】
さらに、圧縮処理は、処理速度の観点から、ソフトウェア処理ではなくハードウェア処理にて行われることが好ましいと考えられる。このとき、従来技術で行われる圧縮処理（アルゴリズム）を行うディジタル回路を形成しようとすると、処理が複雑なために、回路内にタイミング調整のための様々な遅延を挿入が求められ、結果として回路が複雑化し、回路規模が増大する虞があった。
【００１４】
圧縮データを解凍するには、解凍処理として圧縮処理と逆の処理が受信側で実行される。このため、圧縮処理に係る上記の問題点は、そのまま解凍処理に係る問題として提起される。
【００１５】
本発明は、上記の事情に鑑みなされたものであり、一定化された処理遅延での圧縮及び解凍処理を用いた送受信間における効率的なデータ伝送を行うことを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の一側面に係るデータ圧縮器は、複数の固定長のシンボルからなる入力データ列に含まれた、連続する２以上のシンボルが登録されている場合、２以上のシンボルを１つのシンボルに変換する変換部と、変換部で２以上のシンボルが１つのシンボルに変換された場合は、当該１つのシンボルを出力し、そうでない場合は、２以上のシンボルを出力する出力部とを含む。
【００１７】
また、本発明の他の側面に係るデータ解凍器は、入力データ列に含まれる固定長のシンボルが、圧縮処理において２以上のシンボルから変換されたシンボルとして登録されている場合、当該シンボルを２以上のシンボルに変換する変換部と、変換部でシンボルが２以上のシンボルに変換された場合は、２以上のシンボルを出力し、そうでない場合は、入力データ列に含まれるシンボルを出力する出力部とを含む。
【発明の効果】
【００１８】
本発明によれば、一定化された処理遅延での圧縮及び解凍処理を用いた送受信間における効率的なデータ伝送を行うことを可能とする技術を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】圧縮・解凍器の構成を示す図である。
【図２】データ圧縮器の一例を示す機能ブロック図である。
【図３】ルックアップテーブルに登録されるエントリの一例を示す図である。
【図４】データ圧縮器の一例を示す回路構成図である。
【図５】データ解凍器の一例を示す回路構成図である。
【図６】圧縮処理及び解凍処理の具体例を説明するための図である。
【図７】実施形態２に係るデータ圧縮器の一例を示す機能ブロック図である。
【図８】実施形態２に係るデータ圧縮器の一例を示す回路構成図である。
【図９】実施形態２に係るデータ解凍器の一例を示す回路構成図である。
【図１０】実施形態３に係るデータ圧縮装置の処理を説明するための図である。
【図１１】実施形態３に係るデータ圧縮器の一例を示す機能ブロック図である。
【図１２】実施形態３に係るデータ解凍装置の処理を説明するための図である。
【図１３】実施形態３に係るデータ解凍器の一例を示す回路構成図である。
【図１４】実施形態４に係るデータ圧縮器の一例を示す機能ブロック図である。
【図１５】実施形態４に係る区切位置決定部の一例を示す回路構成図である。
【図１６】エンコーダの入出力を説明するための図である。
【図１７】区切位置を決定する処理を説明する図である。
【図１８】実施形態４に係る圧縮部の一例を示す回路構成図である。
【図１９】データ圧縮器及びデータ解凍器の間で送受信されるデータのフォーマットの一例を説明するための図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、図面に基づいて説明する。なお、実施の形態は本発明の一例であり、本発明の構成は以下の例には限られない。
【００２１】
〔実施形態１〕
図１は、データ圧縮／解凍システムを模式的に示す図である。図１において、データ圧縮／解凍システムは、データ圧縮器１０と、データ解凍器２０とを含む。
【００２２】
データ圧縮器１０は、図示しない送信側エンティティが図示しない受信側エンティティへ送信すべきデータ（例えば、ストリームデータ）に対する圧縮処理を行い、圧縮データを出力する。圧縮データは、伝送路３を通ってデータ解凍器２０に到達する。データ解凍器２０は、解凍処理によって、圧縮データを元のデータに戻す。そして、元のデータが受信側エンティティに供給される。圧縮処理によって、伝送路３へ送出されるデータ量が減少することで、或るサイズを有するデータが送信側エンティティから受信側エンティティに受信される迄の時間を、圧縮処理が行われない場合に比べて短縮することができる。
【００２３】
データ圧縮／解凍システムは、通信機器間の通信に適用されても良く、通信機器内の構
成要素（電子回路チップ）間通信（いわゆる内部通信）に適用されても良い。通信機器間の通信のために、データ圧縮器１０は、送信側の通信機器に搭載され、データ解凍器２０は、受信側の通信機器に搭載されることができる。内部通信のために、データ圧縮器１０及びデータ解凍器２０は、通信機器や各種の情報処理装置（コンピュータ）内に構成要素の一つとして搭載されることができる。
【００２４】
なお、通信機器が双方向通信を行う場合には、送信側及び受信側の通信機器のそれぞれにデータ圧縮器１０及びデータ解凍器２０が搭載され、上り通信と下り通信とのそれぞれにおいてデータの圧縮／解凍が行われる構成を適用可能である。
【００２５】
＜データ圧縮器＞
図２は、図１に示したデータ圧縮器１０の一例を示すブロック図である。データ圧縮器１０は、例えば、送信側エンティティ（送信側装置）から入力されるストリームデータに対する可逆圧縮処理（符号化処理とも呼ばれる）を行い、可逆圧縮処理が施されたストリームデータを出力する。データ圧縮器１０は、可逆圧縮の手法として、いわゆる文法圧縮を用いた静的符号化を行う。具体的には、データ圧縮器１０は、ストリームデータに含まれる所定のシンボル列に対する変換ルールを規定したルックアップテーブルを有し、ルックアップテーブルに従って、所定のデータシンボル列を、当該シンボル列よりサイズの小さい１つのシンボル（圧縮シンボルとも呼ぶ）に圧縮（符号化）する。
【００２６】
＜＜ルックアップテーブル＞＞
図３は、データ圧縮器１０が備えるルックアップテーブルの一例を示す。ルックアップテーブルは、「入力（圧縮前）」の２つのシンボル（シンボルペアと称する）と圧縮（符号化）処理によって変換される「出力（圧縮後）」の１つのシンボルとの対応関係が登録された複数のエントリを含む。エントリ数は、ルックアップテーブルを記憶するメモリ１０１の記憶容量に応じた有限値である。
【００２７】
図３において、１つの英文字は、１つのデータシンボルを意味する。１シンボルのサイズは固定サイズ（固定長）であり、例えば、１シンボルのサイズは１バイト（８ビット）である。ただし、シンボルのサイズは１バイトには限定されず、所定のサイズを採用することができる。
【００２８】
また、図３に示すルックアップテーブルでは、圧縮後のシンボルを便宜的に英字で表しているが、実施形態１では、圧縮後のシンボルの値として、圧縮前のシンボルには存在し得ない値が登録される。換言すれば、圧縮後のシンボルは、圧縮前のシンボルが取り得る値の集合に属さない値である。これによって、データ解凍器２０において、圧縮されたシンボルと圧縮されていないシンボルとを区別した解凍処理を行うことができる。
【００２９】
例えば、ストリームデータが所定の文字コードが直列に並べられたテキストデータである場合には、圧縮前のシンボルとして２文字のペアが登録され、圧縮後のシンボルとしては当該文字コードにおいて未使用のビット列が登録される。また、例えば、ストリームデータが遺伝子データ（「Ａ」、「Ｇ」、「Ｔ」及び「Ｃ」の核酸コード配列）である場合には、ルックアップテーブルの圧縮前の２シンボルとして、「Ａ」、「Ｇ」、「Ｔ」及び「Ｃ」から２文字を取り出した順列が登録され、圧縮後の１シンボルとして、「Ａ」、「Ｇ」、「Ｔ」及び「Ｃ」以外の値が登録される。
【００３０】
実施形態に係るデータ圧縮器１０及びデータ解凍器２０には、静的に作成された同内容のエントリ群（シンボルペアリスト）を記憶したルックアップテーブルが備えられる。「静的に」とは、ルックアップテーブルの登録内容が、検索結果に応じて動的に変更（更新）されないことを意味する。但し、ルックアップテーブルの登録内容は、例えば随時の保
守作業や、周期的な更新作業によって変更され得る。また、シンボルペアは、ストリームデータにおける出現率が高い順（いわゆる尤度が高い順）で登録される。
【００３１】
＜＜データ圧縮器の構成＞＞
図２に戻ってデータ圧縮器１０は、上記したルックアップテーブル（以下、単に「テーブル」と表記することもある）の構成を前提として、テーブルでの検索対象となるシンボルペアを特定するための構成と、シンボルペアがテーブルに登録されているときに、シンボルペアを対応する１シンボル（「圧縮シンボル」と称する）に変換するための構成と、テーブルにおけるシンボルペアがヒットしたか否かに応じて元のシンボルペアと圧縮シンボルとの一方を出力する構成とを備える。
【００３２】
具体的には、データ圧縮器１０は、ストリームデータのような入力データを保持するラッチ１１０と、ルックアップテーブルが記憶された変換部に相当するメモリ１０１（読み書き回路含む）と、入力順にシンボルを出力するシリアライザ（マルチプレクサ：ＭＵＸ）１０２と、圧縮シンボル又は元のシンボルペアを出力するための出力部に相当するセレクタ（マルチプレクサ）１０３と、出力データを保持するラッチ１２０とを含み、これらが信号線で接続されている。
【００３３】
ラッチ１１０は、入力されたストリームデータを一時的に保持するバッファ機能を有する。ストリームデータは有限長のビット列であり、データ圧縮器１０において、固定サイズ（１バイト）のシンボル単位で扱われる。ラッチ１１０は、ストリームデータの先頭から順に、所定タイミングで、シンボルペアを形成する、隣接した２つのシンボル（シンボル１，シンボル２）を並列に出力する。シンボルペアは、メモリ１０１とシリアライザ１０２とに入力される。
【００３４】
メモリ１０１では、入力されたシンボルペアがテーブルから検索される。検索は、テーブル（図３）の各エントリに登録された“入力（圧縮前）”のシンボルペアと入力されたシンボルペアとのマッチングにより実行される。入力されたシンボルペアと一致する（マッチする）エントリが見つかった（ヒットした）場合）には、当該エントリに登録されている“出力（圧縮後）”のシンボル（圧縮シンボル）と、検索がヒットしたことを示すマッチ信号が出力される。圧縮シンボルは、セレクタ１２へ入力され、マッチ信号はセレクタ１０３の制御信号としてセレクタ１０３に入力される。
【００３５】
メモリ１０１として、例えば連想メモリ（ＣＡＭ（Content Addressable Memory）を適用することができる。ＣＡＭは、入力されたデータワード（データ語）に対応するアドレスを出力することのできる高速検索用のコンピュータメモリである。ＣＡＭが適用される場合には、データワードとしてのシンボルペアがＣＡＭに入力され、ＣＡＭはエントリがヒットしたときに、データワードに対応するアドレスとして圧縮シンボルを出力するとともに、真（True）信号（“１”信号）を出力する。True信号は、上記したマッチ信号として使用される。一方、エントリがヒットしなかった場合には、ＣＡＭからのアドレス（圧縮シンボル）の出力は行われず、偽（False）信号（“０”信号）の出力が行われる。
【００３６】
シリアライザ（マルチプレクサ）１０２は、入力されたシンボルペアを、所定順序（シンボル１，シンボル２）でセレクタ１０３に出力することができる。セレクタ１０３は、マッチ信号が入力されたとき（True入力）に、元のシンボルペアと圧縮シンボルとのうち、圧縮シンボルを出力する。これに対し、マッチ信号が入力されないとき(False入力)に
は、シリアライザ１０２から出力された元のシンボルペアを出力する。セレクタ１０３の出力は、ラッチ１２０にて一時的に保持される。このような処理が、ストリームデータの先頭から順に繰り返されることで、ラッチ１２０には、元のストリームデータに対して圧縮処理が施された圧縮データが蓄積される。圧縮データは適宜のタイミングでラッチ１２
０から出力され、伝送路３を介してデータ解凍器２０へ送られる。
【００３７】
なお、メモリ１０１は、ＣＡＭとＲＡＭ（Random Access Memory）との組合せであってもよい。この場合、ＣＡＭが出力するＲＡＭのアドレスに圧縮シンボルが記憶され、当該アドレスの圧縮シンボルがセレクタ１２に供給される。ＲＡＭはＤＲＡＭでもＳＲＡＭでも良いが、ＣＡＭとの連動に鑑み、高速動作が可能なものを選択するのが好ましい。
【００３８】
図２に示したデータ圧縮器１０において、メモリ１０１における動作は、「テーブル検索→ヒット判定→圧縮シンボル出力→True/False信号出力」のシーケンシャルな処理である。そして、テーブル検索は、シンボルペアと各エントリに格納されたシンボルペアとの１回のマッチングであり、従来技術のような、検索対象（入力シンボル列）を変更しての再度の検索処理は行われない。換言すれば、１回目の検索でエントリがヒットしたときに、ラッチ１１０から次のシンボルを得て再度の検索を行うことがない。従って、テーブル検索の所要時間（処理遅延）は、最長でも、シンボルペアと全エントリのシンボルペアとのマッチングを行う時間内に収まる。
【００３９】
ヒット判定、圧縮シンボル出力、及びTrue/False信号出力の処理遅延はほぼ固定である。従ってメモリ１０１（ＣＡＭ）における処理遅延が固定的になる。従って、メモリ１０１からの圧縮シンボル及びTrue/False信号の出力タイミングを固定化することができる。また、シリアライザ１０２及びセレクタ１０３での処理開始タイミングは、メモリ１０１からの圧縮シンボル及びTrue/False信号の出力タイミングに依存する。
【００４０】
圧縮シンボル及びTrue/False信号の出力タイミングが固定されることで、シリアライザ１０２及びセレクタ１０３の処理開始タイミングも固定化できる。そして、シリアライザ１０２及びセレクタ１０３の処理遅延はほぼ一定である。従って、或るシンボルペアがラッチ１１０から出力されてから、圧縮シンボル又は元のシンボルペアがラッチ１２０に入力されるまでの所要時間（処理遅延）を固定化することができる。
【００４１】
これによって、図２に示したデータ圧縮器１０をハードウェア（ディジタル回路）で実現する（実装する）場合におけるタイミング調整が容易となり、ディジタル回路の簡易化を図ることができる。
【００４２】
図４は、図２に示したデータ圧縮器１０のディジタル回路で構成する場合の一例を示す。データ圧縮器１０は、ルックアップテーブルを記憶するＣＡＭ１０１と、ストリームデータをシンボル単位で保持し、クロック信号に従って伝送するＤ−ＦＦ（Ｄ型フリップフロップ）１１１〜Ｄ−ＦＦ１１３と、セレクタ１０３と、セレクタ１０３に出力されたシンボルを保持するＤ−ＦＦ１２１とを備えている。これらの各構成要素には、共通のクロック信号が供給され、クロック信号に従ったタイミングで同期した動作を行う。
【００４３】
ストリームデータは、シンボル単位で、Ｄ−ＦＦ１１１に入力される。次のシンボルがＤ−ＦＦ１１１に入力される毎に、先に入力されたシンボルは、次段のＤ−ＦＦ１１２やＤ−ＦＦ１１３へ進んでいく。
【００４４】
一方、ＣＡＭ１０１には、イネーブル（有効化）信号又はディスエイブル（無効化）信号が交互に規則的に入力される。例えば、Ｄ−ＦＦ１１２から１番目のシンボルが出力され、Ｄ−ＦＦ１１１から２番目のシンボルが出力されるタイミングで、ＣＡＭ１０１へイネーブル信号が入力される。イネーブル信号に基づき、ＣＡＭ１０１は、１番目と２番目のシンボルペアを用いてルックアップテーブルを検索する（すなわち、圧縮を試みる）。
【００４５】
次に、Ｄ−ＦＦ１１２から２番目のシンボルが出力され、Ｄ−ＦＦ１１１から３番目の
シンボルが出力されるタイミングでは、ＣＡＭ１０１へディスエイブル信号が入力される。ＣＡＭ１０１は２番目と３番目のシンボルペアについては圧縮を試みない。さらに、Ｄ−ＦＦ１１２から３番目のシンボルが出力され、Ｄ−ＦＦ１１１から４番目のシンボルが出力されるタイミングでは、ＣＡＭ１０１へイネーブル信号が入力され、３番目と４番目のシンボルペアを用いて圧縮を試みる。実施形態１では、ストリームデータの先頭から順にシンボルを２つずつペアにして、圧縮を試みる。
【００４６】
セレクタ１０３では、１番目のシンボルがＤ−ＦＦ１１３に保持されている間に、圧縮シンボルの入力（ヒットした場合）と、マッチ信号の入力とが行われる。マッチ信号の入力時には、Ｄ−ＦＦ１２１に対する圧縮シンボルがセレクタ１０３からＤ−ＦＦ１２１に入力される。一方、マッチ信号が入力されない場合には、セレクタ１０３は、１番目のシンボルと２番目のシンボルとを所定タイミングでＤ−ＦＦ１２１に入力する。
【００４７】
その後、３番目と４番目、５番目と６番目のようなシンボルペアに関して、上記した１番目及び２番目のシンボルに対して説明した動作が繰り返し行われる。このように、直列接続された複数のＤ−ＦＦ上を、各シンボルが進んでいく間に、ＣＡＭによる圧縮処理（圧縮シンボルへの変換）が行われる簡易な回路構成を採用することができる。
【００４８】
なお、図２に図示した、隣接するシンボル（シンボルペア）を伝送する並列な経路及びシリアライザ１０２を例示したが、図４に示すような、シンボルペアを直列に伝送するＤ−ＦＦの多段回路を採用することで、並列な経路及びシリアライザ１０２を備えた場合と同様の（等価な）構成を採ることができる。
【００４９】
以上のようなデータ圧縮器１０によれば、シンボルペアを１つの圧縮シンボルに置き換えた分だけ、伝送路３を流れるデータ量を削減することができる。また、シンボル（すなわち、処理単位のデータサイズ）を固定長とすること等によって、データ圧縮器１０における圧縮処理が簡素化され、且つ処理遅延が固定化されることで、大幅な遅延や揺らぎが生じるのを回避できる。このようにして、効率的なデータ伝送を行うことが可能になる。さらに、例えば、図４に示したようなパイプライン処理を行うハードウェアを容易に形成できる。
【００５０】
＜データ解凍器＞
次に、図１に示したデータ解凍器２０について説明する。図５は、データ解凍器２０の一例を示すブロック図である。データ解凍器２０は、圧縮シンボルと圧縮前の（元の）シンボルペアとを対応付けて記憶するメモリ２０１（読み書き回路含む）と、圧縮前のシンボルペアを２つのシンボルに分離する分離器（デマルチプレクサ：ＤＭＵＸ）２０２と、２つのシンボルを元のストリームデータの順に出力するシリアライザ２０３と、シリアライザ２０３を制御する信号を出力する１ビットカウンタ２０４と、当該データ解凍器２０に入力されたシンボル又は復号されたシンボルペアを選択的に出力するセレクタ２０５とを有し、これらが信号線で接続されている。データ解凍器２０は、所定のクロックに従って同期した動作を行う。
【００５１】
まず、伝送路３からデータ解凍器２０に入力されるストリームデータ（シンボル列）は、ラッチ２００にて一時的に保持され、所定のタイミングでシンボル毎に出力される。出力されたシンボルは、データ解凍器２０のメモリ２０１とセレクタ２０５とに入力される。
【００５２】
メモリ２０１は、例えばＲＡＭのような記憶装置である。メモリ２０１には、データ圧縮器１０のメモリ１０１と対応するシンボルの組み合わせを登録しておく。すなわち、メモリ２０１は、図３に示したようなルックアップテーブルを記憶する。但し、メモリ２０
１に記憶されるルックアップテーブルには、メモリ１０１に記憶されるルックアップテーブルの入力の値及び出力の値を入れ替えたエントリが登録される。例えば、メモリ２０１に記憶されるルックアップテーブルの入力の値には、データ圧縮機１０のＣＡＭが出力するアドレスが登録される。
【００５３】
また、メモリ２０１は、テーブルの入力フィールドに入力されたシンボルを含むエントリが登録されている場合（すなわち、入力されたシンボルが圧縮シンボルである場合）には、当該エントリに登録された元の（圧縮前の）シンボルペアに置換して分離器２０２に出力する。
【００５４】
分離器２０２は、シンボルペアを２つのシンボルに分割し、シリアライザ２０３に供給する。シリアライザ２０３は、シンボルペアをなす２つのシンボル（シンボル１，シンボル２）を、本来の並び順でセレクタ２０５へ出力する。データ解凍器２０は、所定のタイミングで“１”又は“０”を出力する１ビットカウンタ２０４を有している。例えば、１ビットカウンタ２０４が“１”を出力しているときに、シリアライザ２０３からシンボル１が出力される。これに対し、１ビットカウンタ２０４が“０”を出力しているときに、シリアライザ２０３からシンボル２が出力される。カウンタ値とシンボルとの対応関係は逆でも良い。なお、メモリ２０１と２０５との経路は、図４に示したようなＤ−ＦＦの直列回路に置換することができる。
【００５５】
セレクタ２０５は、メモリ２０１から入力されたシンボルペア、又はラッチから出力されたシンボルとの一方を出力する。図５に示す例では、データ解凍器２０は、メモリ２０１から分離器２０２へのデータ出力を検知する検知回路２０５Ａを備えている。検知回路２０５Ａは、メモリ２０１から読み出されるデータの信号線を監視しており、所定の監視タイミングにおいて、データの読み出しを検知した場合に、セレクタ２０５がシリアライザ２０３からのシンボルペアを出力するための制御信号（True信号に相当）をセレクタ２０５に供給する。これに対し、所定の監視タイミングでデータ出力が検知されないときには、セレクタ２０５がラッチ２００からのシンボルを出力するための制御信号（False信
号に相当）をセレクタ２０５に与える。
【００５６】
以上の構成によって、データ解凍器２０は、ルックアップテーブルを用いて、圧縮シンボルを、元のシンボルペアに変換（復元）することができる。そして、解凍処理の処理遅延を固定的にすることができる。
【００５７】
＜データ圧縮／解凍システムの動作＞
図６を用いて圧縮処理及び解凍処理の全体を説明する。図６において、データ圧縮／解凍システムは、送信側エンティティとしての送信側装置１と、データ圧縮器１０と、受信側エンティティとしての受信側装置２と、データ解凍器２０とを含む。送信側装置１及び受信側装置２のそれぞれは、例えば、通信機能を有する通信機器（端末装置、中継装置）であり、データ圧縮／解凍システムは、通信機器間の通信（「機器間通信」と称する）で転送されるデータを圧縮及び解凍する。
【００５８】
また、送信側装置１及び受信側装置２は、例えば、通信機器に搭載されたプロセッサやＬＳＩ，ＡＳＩＣ，プログラマブルロジックデバイス（ＰＬＤ（例えばＦＰＧＡ））のような電子回路チップであり、データ圧縮／解凍システムは、チップ間の通信（いわゆる内部通信）で伝送されるデータを圧縮及び解凍する。伝送路３は、機器間通信の場合、機器間を有線又は無線で接続する通信回線であり、内部通信では、チップ間を接続する信号線である。
【００５９】
メモリ１０１には、図３に示したようなルックアップテーブルが登録され、メモリ２０
１には入出力の値が逆のテーブルが登録されている。最初に、送信側装置１からデータ圧縮器１０へ、送信対象のストリームデータが出力される。ここで、ストリームデータが「ａｂｄａａｂａａ」（右側が先頭）のようなシンボル列を含む場合を仮定する。
【００６０】
データ圧縮器１０は、メモリ１０１に登録されている圧縮前のシンボルペアを圧縮シンボルに置換して伝送路３へ出力する。ストリームデータ中の上記シンボル列は、ルックアップテーブルに基づいて、圧縮データ「ＴｄａＴＳ」に変換される。一方、データ解凍器２０は、伝送路３を介して到着したストリームデータの中の圧縮シンボルを、圧縮前のシンボルペアに変換する。図６の例では、メモリ２０１が図示のようなテーブルを記憶しており、データ解凍器２０での解凍処理によって、ストリーム中の圧縮データ「ＴｄａＴＳ」は、元の「ａｂｄａａｂａａ」と変換（復元）される。
【００６１】
〔実施形態２〕
以下、本発明の実施形態２について説明する。実施形態２は実施形態１と共通する構成を含むので、共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。
【００６２】
実施形態１では、変換後のシンボルとして、変換前のシンボルが取り得る値の集合に属さない値をルックアップテーブルに登録していた。しかしながら、ストリームデータがバイナリデータである場合のように、変換前のシンボルがあらゆるビット列を取り得る場合では、圧縮シンボルとして変換されるシンボルの値が、ストリームデータに含まれないことは保証できない。すなわち、ストリームデータに含まれるシンボル値と、圧縮シンボルの値とが同じになることが起こり得る。
【００６３】
実施形態２では、各シンボルに対し、シンボルが圧縮シンボルか否かを示すフラグ（識別子）を設定する。データ圧縮器は、シンボルと当該シンボルに対応するフラグとを出力し、データ解凍器は、フラグが対応シンボルが圧縮シンボルであることを示す場合に、対応シンボルを変換前のシンボルに置換する。フラグは、例えば１ビットのデータ（シンボルに付加される識別子ビットとの意で「付加ビット」とも呼ぶ）であり、例えば、ビット値“１”のときに圧縮シンボルであることを示し、ビット値“０”のときに非圧縮シンボルであることを示す。
【００６４】
なお、シンボル及びフラグのそれぞれは、ストリームデータ中の順序を保つことにより、先頭から処理すれば自ずと対応付けられる。このようにすれば、データ解凍器において圧縮されたシンボルと圧縮されていないシンボルとを区別して解凍処理を行うことができる。
【００６５】
図７は、実施形態２に係るデータ圧縮器の一例（データ圧縮器１０ａ）を示すブロック図である。図２に示したデータ圧縮器１０との相違は、メモリ１０１ａから出力されるマッチ信号が、フラグとして扱われる点にある。すなわち、メモリ１０１ａは、シンボルペアがテーブルにてヒットしたときに、フラグ“１”を出力し、ヒットしなかったときにフラグ“０”を出力する。フラグ“１”を示す信号は、実施形態１におけるマッチ信号としてセレクタ１０３の動作制御に使用される。
【００６６】
図８は、データ圧縮器１０ａの機能を実現するディジタル回路構成の一例を示す。図４に示したデータ圧縮器１０との相違点は、ＣＡＭ１０１ａから出力されるTrue／False信
号をラッチするＤ−ＦＦ１２２を備え、Ｄ−ＦＦ１２２からの出力値が、フラグ（付加ビット）として出力される。
【００６７】
図９は、実施形態２に係るデータ解凍器（データ解凍器２０ａ）の一例を示すブロック
図である。図５に示すデータ解凍器２０との相違点は、データ圧縮器１０ａ側から受信されたフラグ（付加ビット）がセレクタ２０５の制御信号として使用される点にある。データ圧縮器２０ａで生成される各付加ビット（フラグ）は、シンボル数に応じたビット数のビット列として、データ解凍器２０ａに伝達される。データ解凍器２０ａでは、ラッチ２００からのシンボルの出力に応じて、対応するフラグ（付加ビット）がセレクタ２０５に入力される。これによって、フラグ値“１”の場合に、メモリ２０１から出力された復元後のシンボルペアをセレクタ２０５から出力することができる。逆に、フラグ値“０”の時に、ラッチ２００から出力されたシンボルをセレクタ２０５から出力することができる。
【００６８】
以上のように、実施形態２では、データ圧縮器１０ａにて、シンボル毎に圧縮／非圧縮を示すビット（フラグ）が生成され、データ解凍器２０ａへ送信される。これによって、データ解凍器２０ａは、フラグ値に応じた解凍処理を実行することが可能となる。したがって、例えばバイナリデータが圧縮される場合であっても、データ解凍器２０ａは、圧縮シンボルと非圧縮シンボルとを区別した解凍処理を実行できる。実施形態２に係る圧縮・解凍処理では、圧縮対象のデータの属性を問わない点で、実施形態１よりも汎用的である。
【００６９】
〔実施形態３〕
以下、本発明の実施形態３について説明する。実施形態３は実施形態１及び２と共通する構成を含むので、共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。
【００７０】
実施形態３では、実施形態２で説明したデータ圧縮器１０ａ及びデータ解凍器２０ａをそれぞれ複数段直列に接続することで圧縮率を高めるようにした例を示す。図１０は、データ圧縮器１０ｂを多段接続した装置（データ圧縮装置とも呼ぶ）の一例を示す。図１０に示すデータ圧縮装置は、直列に接続された４つのデータ圧縮器１０ｂから形成される。但し、データ圧縮装置を形成するデータ圧縮器の数は適宜選択可能である。
【００７１】
データ圧縮装置に含まれる複数のデータ圧縮器１０ｂ１〜データ圧縮器１０ｂ４を、伝送路３から遠い順に１段目、２段目、・・・４段目と呼ぶ。１段目のデータ圧縮器１０ｂ１は、圧縮処理の結果として得られた圧縮シンボルを含むデータ列（圧縮データ（１））と、圧縮データ（１）を形成する各シンボルに対応するフラグ（付加ビット）が、シンボル順と一致する順序で並べられたビット列（第１フラグ列と称する）とが出力される。
【００７２】
２段目のデータ圧縮器１０ｂ２では、データ圧縮器１０ｂ１からの圧縮データ（１）に対する圧縮処理によって得られた圧縮データ（圧縮データ（２））と、圧縮データ（２）に対応するフラグ群で形成されたビット列（第２フラグ列と称する）と、第１フラグ列とが出力される。
【００７３】
３段目のデータ圧縮器１０ｂ３では、データ圧縮器１０ｂ２からの圧縮データ（２）に対する圧縮処理によって得られた圧縮データ（圧縮データ（３））と、圧縮データ（３）に対応するフラグ群で形成されたビット列（第３フラグ列と称する）と、第１フラグ列と、第２フラグ列とが出力される。
【００７４】
４段目（図１０の例における最終段）のデータ圧縮器１０ｂ４では、データ圧縮器１０ｂ３からの圧縮データ（３）に対する圧縮処理によって得られた圧縮データ（圧縮データ（４））と、圧縮データ（４）に対応するフラグ群で形成されたビット列（第４フラグ列と称する）と、第１〜第３フラグ列とが出力される。これらの圧縮データ（４）及び第１〜第４フラグ列が、伝送路を介してデータ解凍器側へ送信される。
【００７５】
図１１は、図１０に示したデータ圧縮器１０ｂ２〜１０ｂ４の構成例の説明図である。データ圧縮器１０ｂ１は、実施形態２で説明したデータ圧縮器１０ａ（図７）と同じ構成を有するので説明を省略する。図１１に図示された構成は、最終段（４段目）のデータ圧縮器１０ｂ４が備える構成を示す。
【００７６】
図１１において、データ圧縮器１０ｂ４は、データ圧縮器１０ａが備える構成に加えて、データ圧縮器１０ｂ４の入力ポートと出力ポートとを結ぶ３つの信号線１３１〜１３３を含んでいる。信号線１３１は、上記した第１フラグ列の伝送用に使用され、信号線１３２は、第２フラグ列の伝送用に使用され、信号線１３３は、第３フラグ列の伝送用に使用される。信号線１３４には、第４フラグ列が出力される。
【００７７】
３段目のデータ圧縮器１０ｂ３は、図１１の構成を以下のように変形した構成を持つ。すなわち、図１１に図示した信号線１３３が省略される。図１１に図示した信号線１３４が信号線１３３として機能する。また、２段目のデータ圧縮器１０ｂ２では、図１１に図示した信号線１３３及び１３２が省略される。そして、信号線１３４が信号線１３２として扱われる。なお、データ圧縮器１０ｂ１に関しては、図７に示した付加ビットを出力する信号線が、信号線１３１に相当する。
【００７８】
図１２は、データ解凍器２０ｂを複数接続したデータ解凍装置の一例を示す。図１２に示すデータ解凍装置は、図１０に示したデータ圧縮装置に対応するものであり、４段のデータ解凍器２０ｂから形成されている。伝送路３から遠い順に１段目、２段目、・・・ｎ（ｎ＝４、ｎは自然数）段目と呼ぶ。
【００７９】
４段目のデータ解凍器２０ｂ４は、伝送路３を介して、圧縮データ（４）及び第１〜第４フラグ列を受信する。図１２の例でも、シンボルの経路を太い矢印で示し、付加ビット（フラグ列）を細い矢印で示している。データ解凍器２０ｂ４は、第４フラグ列に基づいて圧縮データ（４）の解凍処理を実行し、圧縮データ（３）と第１〜第３フラグ列を出力する。データ解凍器２０ｂ３は、第３フラグ列に基づいて圧縮データ（３）の解凍処理を実行し、圧縮データ（２）と第１及び第２フラグ列を出力する。データ解凍器２０ｂ２は、第２フラグ列に基づいて圧縮データ（２）の解凍処理を実行し、圧縮データ（１）と第１フラグ列とを出力する。最後に、データ解凍器２０ｂ１が、第１フラグ列に基づいて圧縮データ（２）の解凍処理を実行する。これによって、データ解凍器２０ｂ１（データ解凍装置）から元のストリームデータが出力される。
【００８０】
図１３は、実施形態３に係るデータ解凍器２０ｂ（２０ｂ２〜２０ｂ４）の構成例を説明するブロック図である。図１３に示すデータ解凍器２０ｂの構成は、図１２に示したデータ解凍装置の１段目に位置するデータ解凍器２０ｂ４の構成を示す。データ解凍器２０ｂ４は、データ解凍器２０ｂの構成（図９）に加えて、データ圧縮器１０ｂ１〜データ圧縮器１０ｂ３が出力した第１〜第３フラグ列をデータ解凍器２０ｂ１〜データ解凍器２０ｂ３へ伝送するための信号線２１１〜２１３を有する。なお、ラッチ２００には、圧縮データ（４）が入力され、信号線２１４には第４フラグ列が入力される。
【００８１】
データ解凍器２０ｂ３は、図１３に図示する構成から、信号線２１３を省略し、信号線２１４が２１３とされた構成を備える。データ解凍器２０ｂ２は、図１３に図示する構成から、信号線２１３及び２１２を省略し、信号線２１４が２１２とされた構成を備える。そして、データ解凍器２０ｂ１は、図９と同じ構成を有し、付加ビットとして第１フラグ列が入力される。このように、ある段のデータ圧縮器によって圧縮された圧縮シンボルを、対応する段のデータ解凍器によって解凍するため、伝送路へ送信されるデータ量を削減しつつ、オリジナルデータに復号することができる。
【００８２】
また、前段のデータ圧縮器の出力を、後段のデータ圧縮器がさらに圧縮するため、複数段のデータ圧縮器を経て伝送路３へ出力される転送データは、１段のデータ圧縮器を用いた場合よりも圧縮率が高くなる。例えば、実施形態２の場合、仮にすべてのシンボルペアを圧縮シンボルに置き換えたとしても、付加ビット（フラグ）の分だけデータは増加するため、圧縮率は５０％以下にはなり得ない。複数段のデータ圧縮器を用いる場合、データサイズの観点では、１段増加するごとに圧縮率が向上し得る。また、複数段のデータ圧縮器又はデータ解凍器にわたってパイプライン処理を行うことができるため、処理速度の点でも有利である。
【００８３】
なお、実施形態３では、実施形態２のデータ圧縮器１０ａ及びデータ解凍器２０ａをそれぞれ複数段に接続したが、実施形態１に示したデータ圧縮器１０及びデータ解凍器２０をそれぞれ複数段接続するようにしてもよい。
【００８４】
〔実施形態４〕
以下、本発明の実施形態４について説明する。実施形態４は実施形態１〜３と共通する構成を含むので、共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。
【００８５】
実施形態１〜３では、ストリームデータの先頭から順に、２つのシンボルをペアにして圧縮するか否かを判断した。ここで、データストリームを２シンボルより長い或る長さの単位で見た場合、仮にデータストリームの異なる位置に同一の或る長さのシンボル列が出現する場合であっても、シンボルペアの区切り目が前後にずれた場合は、別のシンボルペアの列として処理される。
【００８６】
ここで、例えばＣＡＭに記憶されるルックアップテーブルに登録できるエントリの数には限界があるところ、何らかのルールに基づいて、同一のシンボル列は同一のシンボルペアに区切ることができれば、より少ないエントリで同一の或る長さのシンボル列を圧縮できる。すなわち、全体として圧縮率の向上が期待できる。実施形態４では、シンボル間の区切位置を決定する回路を含むデータ圧縮器を用いて、決定された各区切位置の先頭から２つずつのシンボルを組み合わせてシンボルペアにする。
【００８７】
図１４に、本実施の形態に係るデータ圧縮器１０ｃのブロック図を示す。図１４のデータ圧縮器１０ｃは、入力データとしてのストリームデータを一時的に記憶するラッチ１０５と、メモリ１０１ａと、シリアライザ１０２と、セレクタ１０３と、区切位置決定回路１０４とを有し、これらが信号線で接続されている。データ圧縮器１０ｃは、図１１に示したデータ圧縮器１０ｂに、区切位置決定回路１０４を加えた構成になっている。ここでは、図１１に示したデータ圧縮器１０ｂとの差異を中心に説明する。
【００８８】
区切位置決定回路１０４は、シンボル列の入力を受け、所定の条件に基づいてシンボル間の区切位置を決定する。実施形態４では、予め定められた優先度に基づいて隣接する４つのシンボルを比較し、区切位置を決定する。また、区切位置決定回路１０４は、入力されたシンボル列の順にシンボルを出力するとともに、区切位置を示す信号を出力する。また、シリアライザ１３は、シンボルペアを、入力されたシンボル列と同じ順序で出力する。なお、実施形態４では、便宜的に、区切位置決定回路１０４までの部分を区切位置決定部と呼び、これ以降の部分を圧縮部と呼ぶ。圧縮部は、データ圧縮器１０ｂと同様の構成を備える。
【００８９】
実施形態４では、区切位置決定回路１０４は、例えば、シンボルが示す値の大小関係を用いて、予め定められた、連結する２シンボルの大小関係の優先度に基づき、シンボル間
の区切位置を決定する。具体的には、区切位置決定回路１０４は、シンボルが示すビット列を数値として扱い、隣接する２つのシンボルの大小を比較する。そして、数値が増加し続けている単調増加区間（「増加列」とも呼ぶ）、数値が減少し続けている単調減少区間（「減少列」とも呼ぶ）、又は数値が等しい区間（「等価列」とも呼ぶ）に分割し、区間の境界を区切位置とする。このとき、例えば「等価列」、「増加列」、「減少列」の順に優先順位を定め、区間の境界に位置するシンボルを優先順位の高い区間に組み入れるようにしてもよい。なお、区間に１つのシンボルしか含まれない場合は、例えば同様の優先順位に基づいて前後の区間に組み入れるようにしてもよい。
【００９０】
以上をまとめると、本実施の形態では、次の２点のルールが予め定められている。
（１）文字の大小関係：ａ＜ｂ＜ｃ＜ｄ・・・
（２）区切目の優先順位：等価列＞増加列＞減少列
【００９１】
このようなルールによれば、隣接する４つのシンボルを比較することによって区切位置を決定することができる。換言すれば、前後のシンボルを４つ保持するだけで当該区切位置決定処理を実行することができる。このため、回路構成の増大を抑えることができる。
【００９２】
次に、区切位置決定回路１０４を含むデータ圧縮器およびこれに対応するデータ解凍器の実装例を説明する。図１５は、図１４に示した区切位置決定回路１０４の一例を示す回路構成図である。図１５に示す区切位置決定回路１０４は、ストリームデータをシンボル単位で保持し、クロック信号に従って伝送するＤ−ＦＦ１４１ａ〜１４１ｃと、２シンボルの大小関係を比較する比較器１４２ａ〜１４２ｃと、比較結果を保持するＱ−ＦＦ１４３ａ〜１４３ｄと、比較結果に基づいて圧縮部のＣＡＭ１０１を有効化するタイミング（すなわち、ルックアップテーブルを検索するタイミング）を示す信号を出力するエンコーダ１４４とを有する。
【００９３】
Ｄ−ＦＦ１４１ａ、Ｄ−ＦＦ１４１ｂ、及びＤ−ＦＦ１４１ｃは、直列に圧縮部と送信側装置１との間を接続し、送信側装置１が出力したストリームデータをシンボル単位で圧縮部へ伝送する。比較器１４２ａは、Ｄ−ＦＦ１４１ａの出力とＤ−ＦＦ１４１ｂの出力と（すなわち、ある時点における、ストリームデータ中の隣接する１番目及び２番目のシンボル）を受け取り、シンボルの示す数値の関係を「増加（＜）」、「等価（＝）」又は「減少（＞）」のいずれかで出力する。なお、「増加」、「等価」又は「減少」を示す信号として、例えばそれぞれ「１」、「２」又は「３」のような識別子を出力する。同様に、比較器１４２ｂは、Ｄ−ＦＦ１４１ｂの出力とＤ−ＦＦ１４１ｃの出力と（同様に、隣接する２番目及び３番目のシンボル）を受け取り、「増加」、「等価」又は「減少」のいずれかを出力する。また、比較器１４２ｃは、Ｄ−ＦＦ１４１ｃの出力と、区切位置決定部への新たな入力と（同様に、隣接する３番目及び４番目のシンボル）を受け取り、「増加」、「等価」又は「減少」のいずれかを出力する。なお、長さが１シンボルの区間を前後いずれかの区間に組み入れるようにしてもよい。
【００９４】
比較器１４２ａ〜比較器１４２ｃの出力は、それぞれＱ−ＦＦ１４３ａ〜Ｑ−ＦＦ１４３ｃに保持される。さらに、Ｑ−ＦＦ１４３ａ〜Ｑ−ＦＦ１４３ｃに保持された値および後述するＱ−ＦＦ１４３ｄに保持される値は、エンコーダ１４４に入力される。Ｑ−ＦＦ１４３ｄの入力はエンコーダ１４４の出力と接続され、１クロック前にエンコーダ１４４が出力した信号が保持されている。なお、エンコーダ１４４の出力が「ＴＲＵＥ」のタイミングで、後述する圧縮部ではシンボルペアをメモリから検索し、圧縮を試みる。
【００９５】
図１６に、エンコーダ１４４の入力と出力との組合せを示す。図１６の表は、「入力」の列（「１・２番目」、「２・３番目」、「３・４番目」及び「前回の出力」）と、「出力」の列を有している。入力の各列は、対応するシンボルを比較する比較器における大小
関係を示している。「１・２番目」の列は、Ｑ−ＦＦ１４３ａに保持される大小関係に相当する。「２・３番目」の列は、Ｑ−ＦＦ１４３ｂに保持される大小関係に相当する。「３・４番目」の列は、Ｑ−ＦＦ１４３ｃに保持される大小関係に相当する。そして、エンコーダ１４４は、各比較器における大小関係が一致するレコードの「出力」列に記載された信号を出力する。
【００９６】
１行目は、比較器１４２ｂに入力される２シンボルが等しく、エンコーダ１４４からの１クロック前の出力がＦＡＬＳＥの場合、前後のシンボルにかかわらず、当該クロックでのエンコーダ１４４からの出力がＴＲＵＥになることを表す。なお、入力列の「１・２番目」及び「３・４番目」に記載された「ＡＮＹ」は、「＜」、「＞」及び「＝」のいずれでもよいことを示している。２行目、３行目は、それぞれ、単調増加区間、単調減少区間であって、エンコーダ１４４からの１クロック前の出力がＦＡＬＳＥの場合に、当該クロックでのエンコーダ１４４からの出力がＴＲＵＥになることを表す。すなわち、等価区間、単調増加区間、単調減少区間においては、エンコーダ１４４の出力は１シンボルごとにＴＲＵＥとＦＡＬＳＥを繰り返し、区切位置決定部における２番目及び３番目のシンボルを、圧縮部においてシンボルペアとしてルックアップテーブルを検索して変換を試みる。また、４行目は、比較器１４２ｂに入力される２シンボルが単調増加区間の終わりに相当し、エンコーダ１４４からの１クロック前の出力がＦＡＬＳＥの場合、当該クロックでのエンコーダ１４４からの出力がＴＲＵＥになることを表す。５行目は、比較器１４２ｂに入力される２シンボルが単調増加区間の始まりに相当し、エンコーダ１４４からの１クロック前の出力がＦＡＬＳＥの場合、当該クロックでのエンコーダ１４４からの出力がＴＲＵＥになることを表す。６行目は、比較器１４２ｂに入力される２シンボルが、２つの単調減少区間の境界に位置する、長さが２シンボルの単調増加区間に相当し、エンコーダ１４４からの１クロック前の出力がＦＡＬＳＥの場合、当該クロックでのエンコーダ１４４からの出力がＴＲＵＥになることを表す。
【００９７】
図１６の例では、区切り目に当たるシンボルを組み入れる先を、「等価列＞増加列＞減少列」の優先順位に基づいて決定している。すなわち、１行目からわかるように、前後のシンボルとの大小に関係なく、等価列が最も優先的に連結され、区間を形成する。また、４〜６行目からわかるように、減少列よりも増加列が優先して連結され、区間を形成する。このようなルールは一例であり、所定のルールに従って区切位置を決定すれば、同一のシンボル列を同一のシンボルペアに区切ることができる。
【００９８】
図１７を用いて、区切位置を決定する処理を説明する。例えば、図３に示したルックアップテーブルを用いて、図１７のシンボル列１を圧縮する場合を説明する。
【００９９】
シンボル列１には「ｂｃｄｅａｃｂｄｄｄａｂｃｄａａａｄｃ」という長いシンボル列が２つ含まれている（図１７：シンボル列１の下線部）。実施形態４では、まずシンボル列の先頭を最初の区切位置として、シンボル列の先頭から２シンボルをシンボルペアにしてルックアップテーブルを検索する（図１７：ステップＳ１）。ここで、Ｓ１に示すように、ルックアップテーブルにシンボルペアが登録されていなければ、変換はされない。また、区間の境界となる区切位置があれば、区切位置の次から２シンボルをシンボルペアとしてルックアップテーブルを検索する（図１７：Ｓ２）。ここで、Ｓ２に示すように、ルックアップテーブルにシンボルペアが登録されていれば、変換シンボルに置換される。なお、図１７の「ｃｃ」は等価区間、「ｂｃｄｅ」は増加区間であり、これらの境界が区切位置となる。以降も同様にして、区切位置を検出しつつ、各区間の先頭からシンボルペアの変換を行う（図１７：Ｓ３）。なお、図１７では、これ以降の処理の説明は省略する。
【０１００】
シンボル列１は、Ｓ１〜Ｓ３の処理によって、図１７のシンボル列２に示すような区切りが挿入された状態になる。シンボル列２が図３に示した内容のルックアップテーブルに
基づいて変換されると、図１７のシンボル列３で示すような圧縮データになる。なお、図１７では便宜的に区切り記号を記載しているが、ストリームデータに区切り記号を示すシンボルやビットが追加されるわけではない。
【０１０１】
シンボル列３で、シンボル列１に含まれていた２つの「ｂｃｄｅａｃｂｄｄｄａｂｃｄａａａｄｃ」は、それぞれ「ＶＺ｜Ｕ｜ｂ｜Ｙｄ｜ＴＷ｜Ｓａ｜Ｘ」及び「ＴＷｅ｜Ｕｂ｜Ｙｄ｜ＴＷ｜Ｓａ｜Ｘ」に変換されている。このように、複数の区間にわたってシンボル列が一致する場合、シンボル列が一致する複数の区間のうち、両端の区間以外は同じシンボルペアが生成される。図１７の例では、シンボル列２中の２つのシンボル列において、最初の区間のシンボル列のそれぞれは、「ｃｃ」と「ａｂｃｄｅ」であり、両者は異なっている。同様に、最後の区間のシンボル列のそれぞれは、「ｄｃａ」と「ｄｃｃ」とであり、両者は異なっている。これに対し、これらの最初及び最後のシンボル列で挟まれた区間のシンボル列（シンボル２の斜体参照）は一致する。よって、当該挟まれた区間は、同一のロジックで変換されることになる（シンボル３の斜体参照）。
【０１０２】
一方、図３に示したルックアップテーブルを用いて、シンボル列１を先頭から２シンボルずつシンボルペアにして圧縮した場合（すなわち、実施形態１〜３の場合）、図１７のシンボル列４になる。
【０１０３】
シンボル列４は、シンボル列３よりも３シンボル分だけデータ量が多く、すなわち、圧縮率が悪い。換言すれば、同程度の圧縮率を達成するためには、ルックアップテーブルにより多くのエントリが必要になる。このように、実施形態４によれば、より少ないエントリ数で同一の長いシンボル列を圧縮できるため、全体として圧縮率を向上させることができる。
【０１０４】
実施形態４における圧縮部の回路構成は、図４、図８に示したものをそれぞれ採用することができる。より詳細には、図１８に示すようにエンコーダの出力（ＣＡＭを有効化するための信号）は、タイミング合わせのディレイ回路（Ｄ−ＦＦ１１４〜Ｄ−ＦＦ１１６）を経由してＣＡＭへ入力される。また、実施形態４においては、例えば、図５、図９、図１３と同様のデータ解凍器を採用することができる。
【０１０５】
実施形態４に示したデータ圧縮器及びデータ解凍器は、実施形態１〜３の少なくとも一部と組み合わせることもできる。すなわち、付加ビット（フラグ）を用いずに、ルックアップテーブルには圧縮後のシンボルとして圧縮前のシンボルが取り得ない値を登録しておいてもよい。また、実施形態４に示すデータ圧縮器及びデータ解凍器をそれぞれ複数段接続するようにしてもよい。
【０１０６】
また、区切位置の決め方は上記の方法には限定されない。例えば、ＬＣＡ（Lowest Common Ancestor：最少共通祖先）と呼ばれるアルゴリズムを用いて、効率のよいシンボルペアを特定して区切位置を決定してもよいし、その他の方法を用いてもよい。
【０１０７】
＜変形例＞
上記の実施形態では、２つのシンボルを１つのシンボルに圧縮したが、圧縮前のシンボルの組合せは２つには限られない。複数のシンボルを、それ未満の数のシンボルに置き換えるという構成であれば、データ圧縮器として機能する。ただし、ルックアップテーブルのエントリとストリームデータのシンボルペアとの一致率を向上させるという観点や、データの記憶容量を抑えるといった観点からは、２つのシンボルを１つのシンボルに圧縮するという態様が好ましいといえる。
【０１０８】
また、上記の実施形態では、１番目のシンボル及び２番目のシンボルのシンボルペアが
ルックアップテーブルに登録されていない場合、次の処理対象は３番目のシンボル及び４番目のシンボルとし、これらのシンボルペアがルックアップテーブルに登録されているか判断していた。ここで、１番目のシンボル及び２番目のシンボルのシンボルペアがルックアップテーブルに登録されていない場合、次の処理対象を２番目のシンボル及び３番目のシンボルのシンボルペアとしてもよい。このようにすれば、圧縮率の向上が期待できる。
【０１０９】
ルックアップテーブルのエントリは、圧縮対象のデータにおけるシンボルの出現尤度に基づいて変更するようにしてもよい。例えば、メモリがシンボルペアとエントリとの一致率を算出し、一致率が所定の閾値以下に下がった場合、ルックアップテーブルのエントリを更新するようにしてもよい。このとき、ルックアップテーブルのエントリは、送信側装置１及び受信側装置２に接続された管理装置が配布するようにしてもよい。例えば、圧縮対象のデータが、いわゆるミニブログのタイムラインである場合、時間の経過と共に投稿される話題が変化し、これに伴い圧縮対象として好ましいシンボルペアも変化する。シンボルペアとエントリとの一致率が所定の閾値以下になった場合、ルックアップテーブルのエントリを更新することで、圧縮率の低下を避けることができる。
【０１１０】
本発明に係るデータ圧縮器及びデータ解凍器は、例えば、ネットワークに接続されたコンピュータのネットワークインターフェイス（ネットワークカード）に設けてもよいし、複数のプロセッサを接続するバスの２点間に設けてもよい。ネットワークインターフェイスに設ける場合は、例えばイーサネット（登録商標）においてフレーム（ＭＴＵ：Max Transmission Unit，パケットとも呼ぶ）に分割（フラグメント）する前の段階に設ける。
なお、フレーム内に、例えばシンボル列（圧縮データ）及び各段の付加ビット列（フラグ列）のそれぞれを識別可能な識別子を追加してもよい。識別子は、例えば、圧縮データ及び各フラグ列がフレーム上にマッピングされた際の位置情報のような、受信側で、多重された圧縮データ及びフラグ列を切り分け可能とする情報を含む。
【０１１１】
また、本発明に係るデータ圧縮器及びデータ解凍器は、いわゆるビッグデータの転送に適用してもよいし、特定の装置間でのデータのバックアップに適用してもよい。また、例えば、コンピュータウィルスのパターンデータとネットワークを流れるデータとをそれぞれ圧縮した状態で比較するような場合も、処理速度の向上が期待できる。
【０１１２】
ところで、上述した実施形態２では、データ圧縮器からは、シンボル列（圧縮データ）とフラグ列との２つのデータ系列が出力される。また、実施形態３では、シンボル列（圧縮データ）に加え、データ圧縮器の段数に応じた２以上のフラグ列が出力される。データ圧縮器から出力される圧縮データは、上記したように、伝送路３を介してデータ解凍器へ伝送される。このとき、データ圧縮器とデータ解凍器との間が並列な専用回線で接続される構成が採られる場合には、データ圧縮器が備える各出力ポートからの出力（各データ系列）をデータ解凍器に備えられた、各データ系列に対応する入力ポートに接続することができる。
【０１１３】
これに対し、データ圧縮器からの出力が、所定の伝送媒体（例えばＭＡＣフレーム）にマッピングされて伝送路３上を伝送される場合がある。このとき、圧縮データ及びフラグ列の伝送媒体へのマッピングは、データ圧縮器よりも下位に位置するレイヤのプロトコルに従う。この結果、データ解凍器側の下位レイヤが、圧縮データとフラグ列とが直列に接続されたデータ列を、データ解凍器の位置するレイヤ（「解凍レイヤ」と称する）に引き渡すことが起こり得る。この場合、解凍レイヤにおいて、圧縮データ及びフラグ列を適正なデータ解凍器の入力ポートに接続するために、圧縮データとフラグ列とを切り分ける（分離する）ことが要求される。このため、例えば以下のような構成が採られる。
【０１１４】
図１９に、圧縮データとフラグ列とが直列に接続されたデータ列（ビット列）を、デー
タ解凍器においてデータ系列ごとに分離可能なデータフォーマットの一例を示す。図１１及び図１３に示したデータ圧縮器１０ｂ，データ解凍器２０ｂを例に説明すると、データ圧縮器１０ｄから出力される圧縮データ（４）及び第１〜第４フラグ列の５つのデータ系列は、例えば、図示しないパラレル／シリアル変換器で、所定順序（例えば、圧縮データ，第１フラグ列，第２フラグ列，第３フラグ列，第４フラグ列）を有する１つのシリアルなデータ列に変換される。データ列は、１つのデータブロックとして扱われる。さらに、各データ系列のビット数が図示しないカウンタで計数され、計数結果に基づくヘッダが生成される。ヘッダは、例えばヘッダサイズと、データブロック中における各データ系列のサイズとを少なくとも含む。ヘッダ中のヘッダサイズ及びデータ系列のサイズは、例えば、固定長ビットで表現される（これにより、ヘッダサイズは固定長となる。なお、ヘッダサイズが固定長（解凍側にて既知）のとき、ヘッダにヘッダサイズを含めるのを省略できる）。このようなヘッダが、データブロックの前段にセットされて、下位レイヤに渡される。なお、ヘッダには、データサイズの代わりにオフセット（各データ系列の開始位置）及びデータブロックのサイズを記憶させるようにしてもよい。
【０１１５】
データ解凍器２０ｂ（図１４）側では、データ解凍器の前段に、図示しないヘッダ解析回路が置かれる。ヘッダ解析回路は、下位レイヤからヘッダ及びデータブロックからなるデータ列（図１９）を受け取り、ヘッダに格納された情報（ヘッダサイズ、各データ系列のサイズ）を参照して、データブロックを５つのデータ系列に分離する。図１９の例では、ヘッダは固定長であり、ヘッダに後続するデータブロックの開始位置は決まっている。また、第１フラグ列の開始位置は、データブロックの先頭から圧縮データのサイズだけ後方になる。同様に、第２〜第４フラグ列の開始位置も、圧縮データのサイズ及び第１〜第３フラグ列のサイズを用いて求めることができる。また、データブロック全体のサイズは、圧縮データのサイズ及び第１〜第４フラグ列のサイズの合計になる。このように、データ解凍器側は、各データ系列のオフセット及びサイズを求めることができ、データブロックを各データ系列に分離することができる。分離されたデータ系列の一つ（圧縮データ（４））は、ラッチ２００へ入力（接続）される。また、第４フラグ列は、セレクタ２０５ａに適宜のタイミングでフラグ値を供給するためのバッファ（図示せず）に蓄積される。第１〜第３フラグ列は、後段に位置する他のデータ解凍器へ送られる。以上のように、解凍側で複数のデータ系列を分離するためのプロトコルが、圧縮側と解凍側との間で決められる。
【０１１６】
以上説明した実施形態１〜４の構成は、適宜組み合わせることができる。
【符号の説明】
【０１１７】
１０，１０ａ，１０ｂ      データ圧縮器
１０１，１０１ａ      メモリ（ＣＡＭ）
１０２      シリアライザ（マルチプレクサ）
１０３      セレクタ（マルチプレクサ）
１０４      区切位置決定回路
２０，２０ａ，２０ｂ      データ解凍器
２０１      メモリ
２０２      分離器（デマルチプレクサ）
２０３，２０５      セレクタ
２０４      １ビットカウンタ
３      伝送路
【図１】
2014236449.tif 000003
【図２】
2014236449.tif 000004
【図３】
2014236449.tif 000005
【図４】
2014236449.tif 000006
【図５】
2014236449.tif 000007
【図６】
2014236449.tif 000008
【図７】
2014236449.tif 000009
【図８】
2014236449.tif 000010
【図９】
2014236449.tif 000011
【図１０】
2014236449.tif 000012
【図１１】
2014236449.tif 000013
【図１２】
2014236449.tif 000014
【図１３】
2014236449.tif 000015
【図１４】
2014236449.tif 000016
【図１５】
2014236449.tif 000017
【図１６】
2014236449.tif 000018
【図１７】
2014236449.tif 000019
【図１８】
2014236449.tif 000020
【図１９】
2014236449.tif 000021