(57)【特許請求の範囲】
【請求項１】
固定長のデータであるシンボル単位でデータ列を圧縮し、圧縮されたデータ列を受信側の装置へ送信する送信側の装置と、前記圧縮されたデータ列を受信し解凍する前記受信側の装置とを備えるデータ圧縮・解凍システムであって、
前記送信側の装置が、
変換前に係る２以上のシンボルと変換後に係る１つのシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、前記データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして登録されていないと判断された場合、前記連続する２以上のシンボルを変換前に係る２以上のシンボルとするエントリを前記変換テーブルに登録すると共に、前記連続する２以上のシンボルを変換せずに出力し、
前記データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして前記変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている変換後に係る１つのシンボルに、前記連続する２以上のシンボルを変換して出力し、
前記受信側の装置が、
解凍前に係るシンボルと解凍後に係る２以上のシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、前記データ列に含まれるシンボルが、解凍前に係るシンボルとして登録されていないと判断された場合、前記データ列に含まれるシンボル及び後続の所定数のシンボルを解凍後に係る２つ以上のシンボルとするエントリを前記変換テーブルに登録すると共に、前記データ列に含まれるシンボル及び後続する所定数のシンボルを変換せずに出力し、
前記データ列に含まれるシンボルが、解凍前に係るシンボルとして前記変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている解凍後に係る２以上のシンボルに、当該前記データ列に含まれるシンボルを変換して出力し、
前記送信側の装置及び前記受信側の装置は、
前記変換テーブルの空き領域にエントリを登録する際、エントリの格納を開始する位置と、以降のエントリを格納する位置を決定するための規則とに基づいて決定された位置にエントリを登録し、
前記変換テーブルからエントリを削除する際、登録されているエントリを削除するか否か初めに判断する対象となるエントリの登録位置と、以降にエントリを削除するか否か判断する対象となるエントリの登録位置を決定するための規則とに基づいて候補の位置を決定する
データ圧縮・解凍システム。
【請求項２】
コンピュータが、固定長のデータであるシンボル単位でデータ列を処理し、当該データ列を圧縮するデータ圧縮方法であって、
変換前に係る２以上のシンボルと変換後に係る１つのシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、前記データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして登録されていないと判断された場合、前記連続する２以上のシンボルを変換前に係る２以上のシンボルとするエントリを前記変換テーブルに登録すると共に、前記連続する２以上のシンボルを変換せずに出力し、
前記データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして前記変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている変換後に係る１つのシンボルに、前記連続する２以上のシンボルを変換して出力し、
前記変換テーブルの空き領域にエントリを登録する際、エントリの格納を開始する位置と、以降のエントリを格納する位置を決定するための規則とに基づいて決定された位置にエントリを登録し、
前記変換テーブルからエントリを削除する際、登録されているエントリを削除するか否か初めに判断する対象となるエントリの登録位置と、以降にエントリを削除するか否か判断する対象となるエントリの登録位置を決定するための規則とに基づいて候補の位置を決定する
データ圧縮方法。
【請求項３】
前記変換テーブルのエントリごとに、当該エントリが示す変換前に係る２以上のシンボルの、前記データ列における出現回数に応じた値を計数し、
計数された前記出現回数に応じた値が小さいエントリを優先して、前記変換テーブルに登録されたエントリを削除する、
請求項２に記載のデータ圧縮方法。
【請求項４】
前記候補の位置に登録されているエントリに対応付けられている、前記出現回数に応じた値が所定の閾値以下である場合に、当該エントリを削除する
請求項３に記載のデータ圧縮方法。
【請求項５】
請求項２から４のいずれか一項に記載のデータ圧縮方法を繰り返し実施し、
前段のデータ圧縮方法によって出力されたデータを入力として、後段のデータ圧縮方法を実施する
データ圧縮方法。
【請求項６】
変換せずに出力された少なくとも一部の前記シンボル、又は変換して出力された前記シンボルを暗号化する
請求項２から５のいずれか一項に記載のデータ圧縮方法。
【請求項７】
コンピュータが、通信相手の装置から受信するデータ列を、固定長のデータであるシンボル単位で処理し、当該データ列を解凍するデータ解凍方法であって、
解凍前に係るシンボルと解凍後に係る２以上のシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、前記データ列に含まれるシンボルが、解凍前に係るシンボルとして登録されていないと判断された場合、前記データ列に含まれるシンボル及び
後続の所定数のシンボルを解凍後に係る２つ以上のシンボルとするエントリを前記変換テーブルに登録すると共に、前記データ列に含まれるシンボル及び後続する所定数のシンボルを変換せずに出力し、
前記データ列に含まれるシンボルが、解凍前に係るシンボルとして前記変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている解凍後に係る２以上のシンボルに、当該前記データ列に含まれるシンボルを変換して出力し、
前記変換テーブルの空き領域にエントリを登録する際、エントリの格納を開始する位置と、以降のエントリを格納する位置を決定するための規則とに基づいて決定された位置にエントリを登録し、
前記変換テーブルからエントリを削除する際、登録されているエントリを削除するか否か初めに判断する対象となるエントリの登録位置と、以降にエントリを削除するか否か判断する対象となるエントリの登録位置を決定するための規則とに基づいて候補の位置を決定する
データ解凍方法。
【請求項８】
前記通信相手の装置から設定の初期化の指示を受信した場合、前記変換テーブルに予め登録しておくエントリ、前記変換テーブルの空き領域のうちエントリを格納する開始位置、又は前記変換テーブルの領域のうち当該領域のエントリを削除するか否か判断する開始位置を初期化する
請求項７に記載のデータ解凍方法。
【請求項９】
固定長のデータであるシンボル単位でデータ列を処理し、当該データ列を圧縮するデータ圧縮器であって、
変換前に係る２以上のシンボルと変換後に係る１つのシンボルとの対応付けを示すエントリが登録される変換テーブルと、
前記変換テーブルに基づいてデータ列に含まれるシンボルの変換を制御する制御回路と、
を含み、
前記制御回路は、
前記データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして登録されていないと判断された場合、前記連続する２以上のシンボルを変換前に係る２以上のシンボルとするエントリを前記変換テーブルに登録すると共に、前記連続する２以上のシンボルを変換せずに出力し、
前記データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして前記変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている変換後に係る１つのシンボルに、前記連続する２以上のシンボルを変換して出力し、
前記変換テーブルの空き領域にエントリを登録する際、エントリの格納を開始する位置と、以降のエントリを格納する位置を決定するための規則とに基づいて決定された位置にエントリを登録し、
前記変換テーブルからエントリを削除する際、登録されているエントリを削除するか否か初めに判断する対象となるエントリの登録位置と、以降にエントリを削除するか否か判断する対象となるエントリの登録位置を決定するための規則とに基づいて候補の位置を決定する
データ圧縮器。
【請求項１０】
固定長のデータであるシンボル単位でデータ列を処理し、当該データ列を解凍するデータ解凍器であって、
解凍前に係るシンボルと解凍後に係る２以上のシンボルとの対応付けを示すエントリが登録される変換テーブルと、
前記変換テーブルに基づいてデータ列に含まれるシンボルの変換を制御する制御回路と、
を含み、
前記制御回路は、
前記データ列に含まれるシンボルが、解凍前に係るシンボルとして登録されていないと判断された場合、前記データ列に含まれるシンボル及び後続の所定数のシンボルを解凍後に係る２つ以上のシンボルとするエントリを前記変換テーブルに登録すると共に、前記データ列に含まれるシンボル及び後続する所定数のシンボルを変換せずに出力し、
前記データ列に含まれるシンボルが、解凍前に係るシンボルとして前記変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている解凍後に係る２以上のシンボルに、当該前記データ列に含まれるシンボルを変換して出力し、
前記変換テーブルの空き領域にエントリを登録する際、エントリの格納を開始する位置と、以降のエントリを格納する位置を決定するための規則とに基づいて決定された位置にエントリを登録し、
前記変換テーブルからエントリを削除する際、登録されているエントリを削除するか否か初めに判断する対象となるエントリの登録位置と、以降にエントリを削除するか否か判断する対象となるエントリの登録位置を決定するための規則とに基づいて候補の位置を決定する
データ解凍器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮・解凍システム、データ圧縮方法及びデータ解凍方法、並びにデータ圧縮器及びデータ解凍器に関する。
【背景技術】
【０００２】
近年における、データストリームがネットワーク上を流れる環境下では、データストリームを形成するストリームデータに対するリアルタイム処理を行うため、ストリームデータを送受信する様々なエンティティ間におけるデータ伝送時間の短縮化が求められている。エンティティは、例えば、ネットワークに接続された様々な通信機器（端末装置，中継装置）である。また、データストリームは、通信機器内に搭載されたプロセッサ，ＬＳＩ（Large Scale Integrated Circuit），ＦＰＧＡ（Field Programmable Gate Array）の
ような様々なストリームデータに対する処理を行う電子回路チップ間を流れる。電子回路チップもエンティティの１つであり、エンティティ間の通信は、通信機器間の通信だけでなく、通信機器内部の電子回路チップ間の通信（いわゆる内部通信）を含む。
【０００３】
近年では、ストリームデータ量が増大する傾向にある。或る量のストリームデータを送信側から受信側へ効率的に伝送する手法として、エンティティ間を結ぶ伝送路の周波数を上げる（伝送帯域を広げる）ことや、エンティティ間を複数の伝送路で結び、ストリームデータを並列に送信することが考えられる。しかしながら、これらの手法は、物理的、周波数的な限界がいずれ来ると考えられている。
【０００４】
そこで、送信側装置でストリームデータの圧縮を行う技術が提案されている。すなわち、送信データ量の減少に伴うデータ伝送時間の短縮化を以て、データ伝送の効率化を図る。例えば、連続する２以上のシンボルが登録されている場合、２以上のシンボルを１つのシンボルに変換する変換部と、変換部で２以上のシンボルが１つのシンボルに変換された場合は、当該１つのシンボルを出力し、そうでない場合は、２以上のシンボルを出力する出力部とを含むデータ圧縮器が提案されている（例えば、特許文献１）。このようにすれば、一定時間内の処理遅延で圧縮及び解凍処理を行うことができる。
【０００５】
また、入力データをブロック単位で集計処理して符号化対象データ毎の発生度数を計数し、発生度数が０の符号化対象データが存在する場合に１以上の整数を一様に加算し、あるブロックにおける発生度数に基づいて作成した適応ハフマン符号表に基づき、次のブロックに対して可変長符号化を実行するという技術も提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−２３６４４９号公報
【特許文献２】特開平７−７４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば上述の特許文献１に記載された技術では、送信者と受信者との間で予め変換テーブル（ルックアップテーブル）を共有しておかなければならない。また、変換前後のデータシンボル（以下、単に「シンボル」とも呼ぶ）の対応関係として記憶されている情報のうち、変換前のシンボルが、データストリームに多く出現するほど圧縮効率が向上する一
方、特にハードウェアによってデータ圧縮器及びデータ解凍器を実現する場合、変換前後のシンボルの対応関係を記憶しておくことができる容量は制限される。したがって、シンボルの出現傾向が異なるデータストリームに対し、共通に適用できる変換規則を用意しておくのは困難であった。
【０００８】
本発明は、このような問題に鑑みてなされたものであり、転送データをリアルタイムに圧縮する場合において、データの傾向に沿った変換規則を生成及び適用することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面に係るデータ圧縮・解凍システムは、固定長のデータであるシンボル単位でデータ列を処理し、装置間におけるデータ列の転送前後において当該データ列を圧縮及び解凍する。そして、送信側の装置が、変換前に係る２以上のシンボルと変換後に係る１つのシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして登録されていないと判断された場合、連続する２以上のシンボルを変換前に係る２以上のシンボルとするエントリを変換テーブルに登録すると共に、連続する２以上のシンボルを変換せずに出力し、データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている変換後に係る１つのシンボルに、連続する２以上のシンボルを変換して出力する。一方、受信側の装置が、解凍前に係るシンボルと解凍後に係る２以上のシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、データ列に含まれるシンボルが、解凍前に係るシンボルとして登録されていないと判断された場合、データ列に含まれるシンボル及び後続の所定数のシンボルを解凍後に係る２つ以上のシンボルとするエントリを変換テーブルに登録すると共に、データ列に含まれるシンボル及び後続する所定数のシンボルを変換せずに出力し、データ列に含まれるシンボルが、解凍前に係るシンボルとして変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている解凍後に係る２以上のシンボルに、当該データ列に含まれるシンボルを変換して出力する。
【００１０】
本発明の他の側面に係るデータ圧縮方法は、コンピュータが、固定長のデータであるシンボル単位でデータ列を処理し、当該データ列を圧縮する。そして、変換前に係る２以上のシンボルと変換後に係る１つのシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして登録されていないと判断された場合、連続する２以上のシンボルを変換前に係る２以上のシンボルとするエントリを変換テーブルに登録すると共に、連続する２以上のシンボルを変換せずに出力し、データ列において連続する２以上のシンボルが、変換前に係る２以上のシンボルとして変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている変換後に係る１つのシンボルに、連続する２以上のシンボルを変換して出力する。
【００１１】
また、本発明の他の側面に係るデータ解凍方法は、コンピュータが、通信相手の装置から受信するデータ列を、固定長のデータであるシンボル単位で処理し、当該データ列を解凍する。そして、解凍前に係るシンボルと解凍後に係る２以上のシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、データ列に含まれるシンボルが、解凍前に係るシンボルとして登録されていないと判断された場合、データ列に含まれるシンボル及び後続の所定数のシンボルを解凍後に係る２つ以上のシンボルとするエントリを変換テーブルに登録すると共に、データ列に含まれるシンボル及び後続する所定数のシンボルを変換せずに出力し、データ列に含まれるシンボルが、解凍前に係るシンボルとして変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている解
凍後に係る２以上のシンボルに、当該データ列に含まれるシンボルを変換して出力する。
【発明の効果】
【００１２】
本発明によれば、ストリームデータの傾向に沿った変換規則を生成及び適用することができる。
【図面の簡単な説明】
【００１３】
【図１】データ圧縮／解凍システムの構成を示す図である。
【図２】データ圧縮器の一例を示す機能ブロック図である。
【図３】データ圧縮器の変換テーブルに登録されるエントリの一例を示す図である。
【図４】実施形態１に係る圧縮処理の一例を示す処理フロー図である。
【図５Ａ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｂ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｃ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｄ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｅ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｆ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｇ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｈ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図５Ｉ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図６】データ解凍器の一例を示す機能ブロック図である。
【図７】データ解凍器の変換テーブルに登録されるエントリの一例を示す図である。
【図８】実施形態１に係る解凍処理の一例を示す処理フロー図である。
【図９Ａ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｂ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｃ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｄ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｅ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｆ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｇ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｈ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図９Ｉ】変換テーブルへのエントリの登録及び更新を説明するための図である。
【図１０】実施形態１に係る圧縮処理の一例を示す処理フロー図である。
【図１１Ａ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１１Ｂ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１１Ｃ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１１Ｄ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１２】実施形態１に係る解凍処理の一例を示す処理フロー図である。
【図１３Ａ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１３Ｂ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１３Ｃ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１３Ｄ】実施形態２に係る変換テーブルの更新を説明するための図である。
【図１４】実施形態３に係る圧縮処理の一例を示す処理フロー図である。
【図１５Ａ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１５Ｂ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１５Ｃ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１５Ｄ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１６】実施形態３に係る解凍処理の一例を示す処理フロー図である。
【図１７Ａ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１７Ｂ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１７Ｃ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１７Ｄ】実施形態３に係る変換テーブルの更新を説明するための図である。
【図１８】実施形態４に係るデータ圧縮器の一例を示す機能ブロック図である。
【図１９】実施形態４に係るデータ解凍器の一例を示す機能ブロック図である。
【図２０Ａ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｂ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｃ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｄ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｅ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｆ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｇ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｈ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２０Ｉ】実施形態５に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２１】実施形態６に係る、データ圧縮器を多段接続したデータ圧縮装置の一例を示すブロック図である。
【図２２】実施形態６に係る、データ解凍器を多段接続したデータ解凍装置の一例を示すブロック図である。
【図２３】実施形態７に係るデータフォーマットの一例を示す図である。
【図２４】実施形態７に係る通信の一例を示すシーケンス図である。
【図２５】実施形態７に係る通信の一例を示すシーケンス図である。
【図２６】スクランブル回路を含むデータ圧縮／解凍システムの一例を示す図である。
【図２７Ａ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２７Ｂ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２７Ｃ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２７Ｄ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２７Ｅ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２７Ｆ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２８Ａ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２８Ｂ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２８Ｃ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２８Ｄ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２８Ｅ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【図２８Ｆ】実施形態９に係る変換テーブルへのエントリの登録及び更新を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図面に基づいて説明する。なお、実施の形態は本発明の一例であり、本発明の構成は以下の例には限られない。
【００１５】
〔実施形態１〕
図１は、データ圧縮／解凍システムを模式的に示す図である。図１において、データ圧縮／解凍システムは、送信側装置１と、送信側装置１が備え、信号線１１で接続されたデータ圧縮器１０と、受信側装置２と、受信側装置２が備え、信号線２１で接続されたデータ解凍器２０とを含む。また、データ圧縮器１０とデータ解凍器２０とは、伝送路３を介して接続されている。
【００１６】
データ圧縮器１０は、送信側装置１から受信側装置２へ送信するデータ（例えば、ストリームデータ）に対する圧縮処理を行い、圧縮データを出力する。また、圧縮データは、伝送路３を通ってデータ解凍器２０に到達する。データ解凍器２０は、圧縮データを元のデータに戻す解凍処理を行い、元のデータが受信側装置２に供給される。圧縮処理を行うことにより伝送路３へ送出されるデータ量が減少するため、あるサイズのデータを送信側装置１から受信側装置２に伝送するために要する時間は、圧縮処理を行わない場合に比べて短縮される。
【００１７】
データ圧縮／解凍システムは、通信機器間の通信に適用されても良く、通信機器内の構成要素間の通信（いわゆる「内部通信」と呼ばれるような、電子回路チップ間通信）に適用されても良い。通信機器間の通信に適用する場合、例えば、データ圧縮器１０は、送信側の通信機器に搭載され、データ解凍器２０は、受信側の通信機器に搭載される。また、内部通信に適用する場合、例えば、データ圧縮器１０及びデータ解凍器２０は、通信機器や各種の情報処理装置（コンピュータ）内に構成要素の一つとして搭載される。
【００１８】
なお、通信機器が双方向通信を行う場合、送信側及び受信側の通信機器のそれぞれにデータ圧縮器１０及びデータ解凍器２０が搭載され、上り通信と下り通信とのそれぞれにおいてデータの圧縮／解凍が行われる構成としてもよい。
【００１９】
＜データ圧縮器＞
図２は、図１に示したデータ圧縮器１０の一例を示すブロック図である。データ圧縮器１０は、送信側装置１から入力されるストリームデータに対して可逆圧縮処理（「符号化処理」とも呼ぶ）を行い、少なくとも一部が圧縮されたストリームデータを出力する。なお、ストリームデータの形式は、テキストであってもバイナリであってもよい。また、データ圧縮器１０は、ストリームデータを、固定長の処理単位であるシンボルの列として扱う。１シンボルのサイズは任意であり、例えば１バイト（８ビット）とすることができる。
【００２０】
データ圧縮処理は、ストリームデータに含まれる所定のシンボル列に対する変換ルールを規定する変換テーブル（「ルックアップテーブル」とも呼ぶ）に従い、連続するデータシンボル列（例えば２つのシンボルであり、「シンボルペア」とも呼ぶ）を、当該シンボル列よりサイズの小さい圧縮シンボル（例えば１つのシンボル）に変換することにより行われる。また、データ圧縮器１０は、いわゆる動的符号化（「適応型符号化」とも呼ぶ）
を行う。すなわち、データ圧縮器１０は、データ圧縮処理を行うと共に、ストリームデータに含まれるシンボルの出現傾向に基づいて、変換ルールを生成及び変更する。
【００２１】
具体的には、データ圧縮器１０は、データストリーム制御回路１０１と、変換テーブル１０２と、ラッチ１０３〜ラッチ１０６と、マルチプレクサ１０７とを含み、これらが信号線で接続されている。データストリーム制御回路１０１は、他の構成要素にイネーブル信号を出力し、ストリームデータに含まれるシンボルをデータラッチ（単に「ラッチ」とも呼ぶ）に保持させたり、変換テーブル１０２の検索や更新を行わせたりする。なお、データストリーム制御回路１０１は、例えばＬＳＩ（Large Scale Integration）、ＡＳＩ
Ｃ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device，例えばＦＰＧＡ（Field-Programmable Gate Aarray））によって構成するようにしてもよい。また、データストリーム制御回路１０１は、入力イネーブル信号及び出力イネーブル信号をそれぞれ送受信し、他の装置と同期してデータを伝送する。データ圧縮器１０の構成要素は、図示していないクロック信号に基づいて、同期して動作する。
【００２２】
変換テーブル１０２は、圧縮前後のシンボルの対応付けを規定するエントリを保持すると共に、エントリの読み書きを行う回路を含む記憶装置である。すなわち、変換テーブル１０２は、シンボルペアが被圧縮シンボル列として登録されているエントリが変換テーブルに存在する場合（すなわち、シンボルペアが変換テーブルにヒットした場合）、変換後の圧縮シンボルを出力する。このとき、変換テーブル１０２は、ヒットしたか否かを示す信号をデータストリーム制御回路１０１へ出力し、データストリーム制御回路１０１は、マルチプレクサ１０７からの出力を制御したり、出力されるシンボルが変換後のシンボルであるか否かを示すフラグ（「付加ビット」とも呼ぶ）を出力したりする。また、変換テーブル１０２は、ストリームデータに含まれるシンボルの出現頻度に応じて、エントリを追加及び削除する。
【００２３】
変換テーブル１０２には、例えば連想メモリ（ＣＡＭ（Content Addressable Memory））を用いることができる。ＣＡＭは、入力されたデータワード（データ語）に対応するアドレスを出力する高速検索用のコンピュータメモリである。ＣＡＭが適用される場合には、シンボルペアがデータワードとしてＣＡＭに入力され、ＣＡＭはエントリがヒットしたときに、データワードに対応するアドレスとして圧縮シンボルを出力するとともに、真（True）信号を出力する。True信号は、ヒットしたか否かを示す信号としてデータストリーム制御部に出力される。一方、エントリがヒットしなかった場合には、ＣＡＭからのアドレス（圧縮シンボル）の出力は行われず、偽（False）信号が出力される。
【００２４】
なお、変換テーブル１０２は、ＣＡＭとＲＡＭ（Random Access Memory）との組合せであってもよい。この場合、ＣＡＭが出力するＲＡＭのアドレスに圧縮シンボルが記憶され、当該アドレスの圧縮シンボルがラッチ１０６に出力される。ＲＡＭはＤＲＡＭでもＳＲＡＭでも良いが、ＣＡＭとの連動に鑑み、高速動作が可能なものを選択するのが好ましい。
【００２５】
ラッチ１０３〜ラッチ１０６は、例えばＤフリップフロップで構成される回路である。ラッチ１０３〜ラッチ１０５は、ストリームデータを入力された順に固定長のシンボル単位で保持し、データパイプラインを形成する。すなわち、ラッチ１０３〜ラッチ１０５は、ストリームデータからシンボルペアを順に抽出するための構成である。そして、ラッチ１０４に保持されるシンボルとラッチ１０３に保持されるシンボルとの組み合わせをシンボルペアとして、シンボル変換テーブル１０２のエントリにヒットするか否か判断される。ラッチ１０６は、シンボルペアが変換テーブル１０２にヒットした場合に出力される圧縮シンボルを保持する。
【００２６】
マルチプレクサ１０７は、ラッチ１０５及びラッチ１０６と接続され、元のシンボルペア又は圧縮シンボルを出力するセレクタである。すなわち、マルチプレクサ１０７は、シンボルペアがルックアップテーブルのエントリにヒットしたか否かに応じて、元のシンボルペア又は圧縮シンボルを出力する。具体的には、データストリーム制御回路１０１から変換テーブルにヒットした旨の信号（True）が入力された場合、圧縮シンボルを出力する。一方、変換テーブルにヒットした旨の信号が入力されないとき（False）は、ラッチ１
０５から入力される元のシンボルを順に２つ出力する。
【００２７】
＜変換テーブル＞
図３は、データ圧縮器１０が備える変換テーブル１０２の一例を示す。変換テーブル１０２は、変換の対象となる２つのシンボル「被圧縮シンボル列」（すなわち、変換前のシンボル列）と、圧縮処理によって変換される１つのシンボル「圧縮シンボル」（すなわち、変換後のシンボル）と、当該圧縮シンボルへのアクセス回数を表す「参照頻度」とを対応づけて記憶するメモリである。なお、入力シンボル列に含まれる２つのシンボルを、便宜上「シンボル０」及び「シンボル１」と呼ぶ。また、変換テーブル１０２に登録されるエントリ（「レコード」とも呼ぶ）の数は、変換テーブル１０２を構成するハードウェアの容量に応じた有限個である。本実施形態において、エントリは動的に追加及び削除されるが、処理の開始時において予め何らかのエントリを登録しておくようにしてもよい。本実施形態では、図３に示す１つの英字が１つのデータシンボルを表すものとする。
【００２８】
＜圧縮処理＞
図４は、本実施形態に係る圧縮処理の工程を模式的に示す処理フロー図である。まず、データ圧縮器１０のデータストリーム制御回路１０１は、変換テーブル１０２のエントリを初期化する（図４：Ｓ１）。本ステップでは、例えば変換テーブル１０２のエントリをすべて削除してもよいし、所定のエントリを予め登録しておくようにしてもよい。また、本ステップの処理は、例えば送信側装置１における１つのファイルの転送を開始する度に行うようにしてもよい。
【００２９】
また、データ圧縮器１０のラッチ１０３及びラッチ１０４は、ストリームデータからシンボルペアを抽出する（Ｓ２）。そして、データ圧縮器１０の変換テーブル１０２は、シンボルペアが非圧縮シンボル列として登録されているか、エントリを検索する（Ｓ３）。
【００３０】
そして、変換テーブル１０２に、シンボルペアを被圧縮シンボル列として保持するエントリが登録されている場合（Ｓ４：ＹＥＳ）、変換テーブル１０２は当該エントリに登録されている圧縮シンボルをラッチ１０６に出力し、データストリーム制御回路１０１は、マルチプレクサ１０７に、ラッチ１０６が保持する圧縮シンボルを出力させる（Ｓ５）。
【００３１】
一方、変換テーブル１０２に、シンボルペアを被圧縮シンボル列として保持するエントリが登録されていない場合（Ｓ４：ＮＯ）、データストリーム制御回路１０１は、マルチプレクサ１０７に、ラッチ１０５へ伝送されてくる２つのシンボル（すなわち、Ｓ２で抽出されたシンボルペア）を順に出力させる（Ｓ６）。また、変換テーブル１０２は、当該シンボルペアを被圧縮シンボル列とするエントリを登録する（Ｓ７）。
【００３２】
そして、Ｓ５又はＳ７の後、ストリームデータに後続のシンボルペアが存在する場合（Ｓ８：ＹＥＳ）、Ｓ２に戻って処理を繰り返す。一方、ストリームデータに後続のシンボルペアが存在しない場合（Ｓ８：ＮＯ）、圧縮処理を終了する。なお、ストリームデータの最後がシンボルペアを構成しない１つのシンボルである場合は、当該シンボルをそのまま出力するものとする。なお、上述の処理フローは一例であり、一部の処理を入れ替えたり並列に行ったりしてもよい。例えば、Ｓ６及びＳ７の順序を逆にしてもよい。
【００３３】
＜変換テーブルの生成及び更新＞
次に、図５Ａ〜図５Ｉを用いて、変換テーブル１０２へのエントリを追加する具体的例を説明する。図５Ａ〜図５Ｉは、変換テーブルの生成及び更新を説明するための図である。この例では、「ＡＡＢＢＣＣＤＤＣＣＢＢＣＣＡＡ」というストリームデータ（「入力データ」と呼ぶ）を、送信側装置１から受信側装置２へ送るものとする。また、データ圧縮器１０は、入力データを２シンボルずつ処理する。すなわち、「ＡＡ」、「ＢＢ」、「ＣＣ」・・・という単位で処理をする。
【００３４】
まず、図５Ａに示すように、処理開始前の初期的な変換テーブル１０２には、エントリが登録されていないものとする。また、変換テーブル１０２の最大エントリ数（容量）は４とする。そして、図５Ｂに示すように、入力データのうち先頭のシンボルペア「ＡＡ」が入力されると、変換テーブル１０２には被圧縮シンボル列として「ＡＡ」が登録されたエントリが存在しない（すなわち、変換テーブルのエントリにヒットしない）ため、データストリーム制御回路１０１は、シンボルペア「ＡＡ」を変換せず出力させる。併せて、変換テーブル１０２には、シンボルペア「ＡＡ」を被圧縮シンボル列とするエントリを追加する。なお、当該エントリには、圧縮シンボルとして、他のエントリの圧縮シンボルと重複しない値が割り当てられる。圧縮シンボルは、例えば、エントリに付される添数（インデックス）であってもよい。図５Ｂの例では、圧縮シンボルとして「０」が登録されている。また、当該エントリの参照頻度として、当該シンボルペアの出現回数を示す１が登録される。
【００３５】
次に、図５Ｃに示すように、入力データのうち次のシンボルペア「ＢＢ」が入力される。このときも、「ＢＢ」が変換テーブル１０２のエントリにヒットしないため、「ＢＢ」がそのまま出力されると共に、変換テーブル１０２には「ＢＢ」を被圧縮シンボル列とするエントリが追加される。また、追加されるエントリには、圧縮シンボルとして「１」が登録され、参照頻度に１が登録される。
【００３６】
同様に、図５Ｄに示すように、次のシンボルペア「ＣＣ」が入力されると、「ＣＣ」がそのまま出力されると共に、変換テーブル１０２には新たなエントリが追加される。当該エントリには、被圧縮シンボル列として「ＣＣ」が登録され、圧縮シンボルとして「２」が登録され、参照頻度には１が登録されている。また、図５Ｅに示すように、次のシンボルペア「ＤＤ」が入力されると、「ＤＤ」がそのまま出力されると共に、変換テーブル１０２に新たなエントリが登録される。当該エントリには、被圧縮シンボル列として「ＤＤ」が登録され、圧縮シンボルとして「３」が登録され、当該エントリの参照頻度に１が登録されている。
【００３７】
次に、図５Ｆに示すように、次のシンボルペア「ＣＣ」が入力されると、「ＣＣ」は変換テーブル１０２のエントリにヒットし、圧縮シンボル「２」が得られる。この場合、データストリーム制御回路１０１はマルチプレクサ１０７に圧縮シンボル「２」を出力させる。このとき、入力データに含まれる固定長のシンボル２つ（シンボルペア）が１つのシンボル（圧縮シンボル）に変換され、データが圧縮される。また、当該エントリの参照頻度には１が加算される。また、データストリーム制御回路１０１は、マルチプレクサ１０７からの当該出力が圧縮後のシンボルであることを示す付加ビットを伝送路３へ出力する。
【００３８】
同様に、図５Ｇに示すように、次のシンボルペア「ＢＢ」が入力されると、「ＢＢ」が変換テーブル１０２のエントリにヒットし、圧縮シンボル「１」が得られる。よって、シンボルペア「ＢＢ」は圧縮シンボル「１」に変換されて出力されると共に、付加ビットが出力される。また、当該エントリの参照頻度には１が加算される。また、図５Ｈに示すように、次のシンボルペア「ＣＣ」が入力された場合も、「ＣＣ」が変換テーブル１０２の
エントリにヒットし、圧縮シンボル「２」が得られる。よって、シンボルペア「ＣＣ」は圧縮シンボル「２」に変換されて出力されると共に、当該エントリの参照頻度に１が加算される。そして、図５Ｉに示すように、次のシンボルペア「ＡＡ」が入力された場合も、「ＡＡ」が変換テーブル１０２のエントリにヒットし、圧縮シンボル「０」が得られる。よって、シンボルペア「ＡＡ」は圧縮シンボル「０」に変換されて出力されると共に、当該エントリの参照頻度に１が加算される。
【００３９】
以上のようなデータ圧縮器１０によれば、シンボルペアを１つの圧縮シンボルに置き換えた分だけ、伝送路３を流れるデータ量を削減することができる。また、処理単位を固定長のシンボルとすること等により、処理に要する時間を一定以下に抑えることができる。したがって、データ圧縮器１０は例えば図２に示したようなハードウェアで実現できる。また、入力データに含まれるシンボルの出現傾向に基づいて変換テーブルにエントリを追加するため、事前に変換テーブルを用意する必要はない。このように、ストリームデータをリアルタイムに圧縮する場合において、ストリームデータの傾向に沿った変換規則を生成及び適用できるようになる。
【００４０】
＜データ解凍器＞
図６は、図１に示したデータ解凍器２０の一例を示すブロック図である。データ解凍器２０は、データストリーム制御回路２０１と、変換テーブル２０２と、ラッチ２０３〜ラッチ２０５とを含み、これらが信号線で接続されている。データストリーム制御回路２０１は、他の構成要素にイネーブル信号を出力し、ストリームデータに含まれるシンボルを順次ラッチに保持させたり、変換テーブル２０２の検索や更新を行わせたりする制御を行う。そして、データストリーム制御回路２０１は、伝送路３を介して入力された１つのシンボルが圧縮後のシンボルであるか否かを示す付加ビットに基づき、変換テーブル２０２から復号後のシンボル列を出力させたり、伝送路３を介して入力されたシンボルをそのまま出力させたりする。なお、データストリーム制御回路２０１は、例えばＬＳＩ、ＡＳＩＣ、ＰＬＤ（例えばＦＰＧＡ）によって構成するようにしてもよい。また、また、データストリーム制御回路２０１は、他の装置との間で入力イネーブル信号及び出力イネーブル信号をそれぞれ送受信し、他の装置と同期してデータを伝送する。データ圧縮器２０の構成要素も、図示していないクロック信号に基づいて、同期して動作する。また、データ解凍器２０は、データ圧縮器１０側と同様の規則に基づいて、データ圧縮器１０側と対応するエントリを変換テーブル２０２に追加及び更新する。
【００４１】
変換テーブル２０２は、復号前後のシンボルの対応付けを規定するエントリを保持すると共に、エントリの読み書きを行う回路を含む記憶装置である。すなわち、変換テーブル２０２は、圧縮シンボルに対応付けて登録されている復号後のシンボル列を出力する。また、変換テーブル２０２も、ストリームデータに含まれるシンボルの出現頻度に応じて、エントリを追加及び削除する。
【００４２】
なお、変換テーブル２０２は、例えばＲＡＭによって構成することができる。例えば、圧縮シンボルをＲＡＭのアドレスとし、ＲＡＭのデータ部に復号後のシンボル列（「復号シンボル列」とも呼ぶ）を記憶させる。また、参照頻度は、ＲＡＭ又はレジスタによって構成することができる。
【００４３】
ラッチ２０３〜ラッチ２０６は、例えばＤフリップフロップで構成される回路である。伝送路３を介してラッチ２０３に伝送されたシンボルが圧縮シンボルでない場合は、当該シンボルをラッチ２０４、ラッチ２０５へと順次伝送する。一方、ラッチ２０３に伝送されたシンボルが圧縮シンボルである場合は、当該シンボルはラッチ２０４以降へ伝送せず、シンボル変換テーブル２０２から復号シンボル列をラッチ２０４及びラッチ２０５へ出力し、復号シンボル列が順次受信側装置２へ出力される。
【００４４】
また、伝送路３を介してラッチ２０３に伝送されたシンボルが圧縮シンボルでない（すなわち、付加ビットが０である）場合、データストリーム制御回路２０１は、シンボル変換テーブル２０２に、連続して入力される２つのシンボル（シンボルペア）を復号シンボル列とするエントリを追加する。このとき、圧縮シンボルは、データ圧縮器１０側と同様の規則に基づいて割り当てられる。本実施形態では、データ圧縮器１０がシンボルペアを初回は変換せずに出力し、２回目の出現以降で変換して出力するため、データ解凍器２０においても初回の入力時にデータ圧縮器１０と対応するエントリを変換テーブル２０２に登録することができるようになっている。
【００４５】
＜変換テーブル＞
図７は、データ解凍器２０が備える変換テーブル２０２の一例を示す。変換テーブル２０２は、復号後の２つのシンボル「復号シンボル列」（すなわち、解凍処理における変換後のシンボル列）と、復号の対象となる１つのシンボル「圧縮シンボル」（すなわち、解凍処理における変換前のシンボル）と、当該圧縮シンボルへのアクセス回数を表す「参照頻度」とを対応づけて記憶するメモリである。なお、復号シンボル列に含まれる２つのシンボルを、便宜上「シンボル０」及び「シンボル１」と呼ぶ。また、変換テーブル２０２に登録されるエントリ（「レコード」とも呼ぶ）の数は、データ圧縮器１０の変換テーブル１０２と同様とする。データ解凍器２０の変換テーブル２０２も、処理の開始時において予めデータ圧縮器１０の変換テーブル１０２と同一のエントリを登録しておくようにしてもよい。
【００４６】
＜解凍処理＞
図８は、本実施形態に係る解凍処理の工程を模式的に示す処理フロー図である。まず、データ解凍器２０のデータストリーム制御回路２０１は、変換テーブル２０２のエントリを初期化する（図８：Ｓ１１）。本ステップでは、例えば変換テーブル２０２のエントリをすべて削除してもよいし、所定のエントリを予め登録しておくようにしてもよいが、データ圧縮器１０の変換テーブル１０２のエントリと対応させておく。本ステップの処理も、例えば送信側装置１における１つのファイルの転送を開始する度に行うようにしてもよい。このようなタイミングは、例えば所定のプロトコルにおけるヘッダ情報で通知する。
【００４７】
また、データ解凍器２０のラッチ２０３は、ストリームデータからシンボル及び付加ビットを抽出する（Ｓ１２）。そして、抽出されたシンボルが圧縮シンボルである場合（Ｓ１３：ＹＥＳ，すなわち付加ビットが１である場合）、データストリーム制御回路２０１は、変換テーブル２０２から復号シンボル列を出力させる（Ｓ１４）。
【００４８】
一方、抽出されたシンボルが圧縮シンボルでない場合（Ｓ１３：ＮＯ，すなわち付加ビットが０である場合）、データストリーム制御回路２０１は、入力されたシンボルを変換せずに２つ出力させる（Ｓ１５）。また、変換テーブル２０２に、Ｓ１５で出力させた２つのシンボルを復号シンボル列とするエントリが登録される（Ｓ１６）。なお、Ｓ１５及びＳ１６の処理を実行する順序は、並列であってもよいし、逆であってもよい。
【００４９】
そして、Ｓ１４又はＳ１６の後、ストリームデータに後続のシンボルが存在する場合（Ｓ１７：ＹＥＳ）、Ｓ１２に戻って処理を繰り返す。一方、ストリームデータに後続のシンボルペアが存在しない場合（Ｓ１７：ＮＯ）、解凍処理を終了する。
【００５０】
＜変換テーブルの生成及び更新＞
次に、図９Ａ〜図９Ｉを用いて、変換テーブル２０２へのエントリを追加する具体的例を説明する。図９Ａ〜図９Ｉは、データ解凍器２０における変換テーブルの生成及び更新を説明するための図である。この例では、「ＡＡＢＢＣＣＤＤ２１２０」というストリー
ムデータ（「入力データ」と呼ぶ）が、伝送路３を介してデータ解凍器２０へ送られてきたものとする。
【００５１】
まず、図９Ａに示すように、処理開始前の初期的な変換テーブル２０２には、エントリが登録されていないものとする。また、変換テーブル２０２の最大エントリ数（容量）も４とする。また、入力データのうち先頭のシンボル「Ａ」が入力されると共に、付加ビットとして０が入力されるものとする。すなわち、シンボル「Ａ」は圧縮シンボルではないため、図９Ｂに示すように、次のシンボルと併せたシンボルペアを読み出し、変換テーブル２０２にエントリを登録する。エントリは、シンボルペア「ＡＡ」を復号シンボル列とし、圧縮シンボルには「０」が登録される。また、当該エントリの参照頻度として、当該シンボルの出現回数を示す１が登録される。
【００５２】
次に、図９Ｃに示すように、入力データのうち次のシンボル「Ｂ」も圧縮シンボルではないと判断され、シンボルペア「ＢＢ」が変換テーブル２０２に追加される。また、追加されるエントリには、圧縮シンボルとして「１」が登録され、参照頻度に１が登録される。
【００５３】
同様に、図９Ｄに示すように、次のシンボル「Ｃ」も圧縮シンボルではないと判断され、シンボルペア「ＣＣ」が変換テーブル２０２に追加される。当該エントリには、復号シンボル列として「ＣＣ」が登録され、圧縮シンボルとして「２」が登録され、参照頻度には１が登録されている。また、図９Ｅに示すように、次のシンボル「Ｄ」も圧縮シンボルではないため、シンボルペア「ＤＤ」が変換テーブル２０２に登録される。当該エントリには、復号シンボル列として「ＤＤ」が登録され、圧縮シンボルとして「３」が登録され、当該エントリの参照頻度に１が登録されている。
【００５４】
その後、次のシンボル「２」が入力されると、付加ビットとして１が入力される。このとき、図９Ｆに示すように、変換テーブル２０２から圧縮シンボル「２」に対応付けられている復号シンボル列「ＣＣ」が得られる。よって、データストリーム制御回路２０１は、ラッチ２０４及びラッチ２０５に、復号シンボル「ＣＣ」を出力させる。このようにして、圧縮したデータを元のデータに戻すことができる。また、当該エントリの参照頻度には１が加算される。
【００５５】
同様に、図９Ｇに示すように、次のシンボル「１」は、変換テーブル２０２のエントリに基づき、復号シンボル列「ＢＢ」に変換される。また、当該エントリの参照頻度には１が加算される。また、図９Ｈに示すように、次のシンボル「２」は、変換テーブル２０２のエントリに基づき、復号シンボル列「ＣＣ」に変換される。また、当該エントリの参照頻度には１が加算される。そして、図９Ｉに示すように、次のシンボル「０」は、変換テーブル２０２のエントリに基づき、復号シンボル列「ＡＡ」に変換される。また、当該エントリの参照頻度には１が加算される。
【００５６】
以上のようなデータ解凍器２０によれば、データ圧縮器１０が圧縮したストリームデータを復号することができる。また、処理単位を固定長のシンボルとすること等により、処理に要する時間を一定以下に抑えることができる。したがって、データ解凍器２０は、例えば図６に示したようなハードウェアで実現できる。また、ストリームデータに含まれるシンボルの出現傾向に基づいてデータ圧縮器１０側と同様のルールで変換テーブルにエントリを追加するため、事前に変換テーブルを用意する必要はない。このように、ストリームデータをリアルタイムに解凍する場合において、ストリームデータの傾向に沿った変換規則を生成及び適用できるようになる。
【００５７】
〔実施形態２〕
次に、データ圧縮器１０の変換テーブル１０２、及びデータ解凍器２０の変換テーブル２０２からエントリを削除する例を説明する。なお、実施形態２においては、実施形態１と共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。本実施形態では、変換テーブル１０２又は変換テーブル２０２にエントリを追加する際、空きがなければエントリの削除を行う。削除の対象は、ストリームデータにおけるシンボルペアの出現頻度に基づき、出現頻度（すなわち、変換テーブル２０２の「参照頻度」）の低いシンボルペアを被圧縮シンボル列として保持するエントリとする。ここで、参照頻度の値が所定の閾値（「削除閾値」とも呼ぶ）以下のエントリを削除するものとする。本実施形態では、削除閾値が１と定められているものとする。また、変換テーブル１０２からエントリを削除する処理は、例えば図２に示したデータストリーム制御回路１０１が制御する。
【００５８】
＜圧縮処理＞
図１０は、本実施形態に係る圧縮処理の一例を示す処理フロー図である。図１０の処理フローでは、変換テーブルにエントリを追加する処理（Ｓ７）の前に、変換テーブルに空きがなければエントリを削除する処理（Ｓ２１）を行う。本ステップでは、削除するエントリを変換テーブル１０２からシーケンシャルに全検索して決定する。なお、Ｓ６の処理と、Ｓ２１及びＳ７の処理とを実行する順序は、並列であってもよいし、逆であってもよい。
【００５９】
図１１Ａ〜図１１Ｄは、変換テーブル１０２からのエントリの削除を説明するための図である。例えば、図１１Ａに示す状態において、シンボルペア「ＥＥ」が入力されたものとする。このような場合、シンボルペア「ＥＥ」は変換テーブル１０２のエントリにヒットしないため、図１０のＳ６においてそのまま出力される。そして、変換テーブル１０２には新たなエントリを追加する空き容量がないため、図１０のＳ２１においてエントリの削除が行われる。本ステップでは、変換テーブル１０２に登録されているエントリの参照頻度の値をシーケンシャルに全件読み出し、参照頻度の値が削除閾値「１」以下のエントリを削除する。ここで、参照頻度の値が削除閾値以下のエントリが存在しない場合、変換テーブル１０２に登録されているすべてのエントリからシーケンシャルに参照頻度の値を１ずつ減算し、参照頻度の値が削除閾値以下になったエントリをすべて削除する。図１１Ａの例では、参照頻度が１以下のエントリが存在しないため、図１１Ｂに示すように、すべてのエントリから参照頻度を１ずつ減算する。すると、被圧縮シンボル列が「ＡＡ」及び「ＢＢ」のエントリの参照頻度が削除閾値「１」になるため、図１１Ｃに示すように、Ｓ２１においてデータストリーム制御回路１０１は当該エントリを変換テーブル１０２から削除させる。その後、図１１Ｄに示すように、変換テーブル１０２の空き領域をシーケンシャルに検索し、入力されたシンボルペア「ＥＥ」を被圧縮シンボル列とするエントリが変換テーブル１０２に追加される（図１０：Ｓ７）。
【００６０】
このように、ストリームデータにおけるシンボルペアの出現傾向に応じて変換テーブル１０２の内容を変更すれば、利用可能なメモリの容量の範囲で圧縮処理を行うことができる。また、データ解凍器２０側でも同様のルールに基づいて変換テーブル２０２のエントリを削除及び追加すれば、データ解凍器２０は圧縮されたストリームデータを適切に解凍できる。
【００６１】
＜解凍処理＞
図１２は、本実施形態に係る解凍処理の一例を示す処理フロー図である。図１２の処理フローでは、変換テーブルにエントリを追加する処理（Ｓ１６）の前に、変換テーブルに空きがなければエントリを削除する処理（Ｓ３１）を行う。本ステップでは、削除するエントリを変換テーブル２０２からシーケンシャルに全検索して決定する。
【００６２】
図１３Ａ〜図１３Ｄは、変換テーブル２０２からのエントリの削除を説明するための図である。例えば、図１３Ａに示すエントリの状態において、シンボルペア「ＥＥ」が入力されたものとする。このような場合、シンボルペア「ＥＥ」は変換テーブル１０２のエントリにヒットしないため、図１２のＳ１５においてそのまま出力される。そして、変換テーブル１０２には新たなエントリを追加する空き容量がないため、図１２のＳ３１においてエントリの削除が行われる。本ステップでは、変換テーブル１０２に登録されているエントリの参照頻度の値をシーケンシャルに全件読み出し、参照頻度の値が削除閾値「１」以下のエントリを削除する。ここで、図１３Ａのように参照頻度の値が削除閾値以下のエントリが存在しない場合、変換テーブル１０２に登録されているすべてのエントリからシーケンシャルに参照頻度の値を１ずつ減算し、参照頻度の値が削除閾値以下になったエントリをすべて削除する。図１３Ａの例では、参照頻度が１以下のエントリが存在しないため、図１３Ｂに示すように、エントリから順に参照頻度を１ずつ減算する。すると、被圧縮シンボル列が「ＡＡ」及び「ＢＢ」のエントリの参照頻度が削除閾値「１」になるため、図１３Ｃに示すように、データストリーム制御回路２０１は当該エントリを変換テーブル２０２から削除させる。その後、図１３Ｄに示すように、変換テーブル２０２の空き領域をシーケンシャルに検索し、入力されたシンボルペア「ＥＥ」を被圧縮シンボル列とするエントリが変換テーブル２０２に追加される（図１２：Ｓ１６）。
【００６３】
このように、データ解凍器２０は、変換テーブル２０２に空きがない場合、データ圧縮器１０と同様の規則に基づいて変換テーブル２０２からエントリを削除する。すなわち、データ圧縮器１０の変換テーブル１０２のエントリと、データ解凍器２０の変換テーブル２０２のエントリとが同期したタイミングで削除及び追加される。したがって、シンボルの変換規則が変更されてもデータ解凍器２０は圧縮後のストリームデータを適切に解凍できるようになっている。
【００６４】
〔実施形態３〕
次に、データ圧縮器１０の変換テーブル１０２、及びデータ解凍器２０の変換テーブル２０２からエントリを削除する他の例を説明する。なお、実施形態３においては、実施形態２と共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。本実施形態でも、変換テーブル１０２又は変換テーブル２０２にエントリを追加する際、空きがなければエントリの削除を行う。すなわち、削除の対象は、ストリームデータにおけるシンボルペアの出現頻度に基づき、出現頻度の低いシンボルペアを被圧縮シンボル列として保持するエントリとする。ただし、本実施形態では、直近に入力された所定数のシンボルペアを保持するスタック構造のメモリ（単に「スタック」とも呼ぶ）を用いて、変換テーブルに新たに登録されたシンボルペアを優先的に削除する。
【００６５】
＜圧縮処理＞
図１４は、本実施形態に係る圧縮処理の一例を示す処理フロー図である。図１４の処理フローでも、実施形態２と同様に、変換テーブル１０２にエントリを追加する処理（Ｓ７）の前に、変換テーブルに空きがなければエントリを削除する処理（Ｓ２１）を行う。本ステップでは、変換テーブル１０２のエントリを削除すると共にスタックのエントリも削除する。ただし、本ステップでは、スタックに記憶されている直近に登録されたエントリを削除対象とする。また、図１４の処理フローでは、変換テーブルにエントリを追加する処理（Ｓ７）においてスタックにもエントリを追加する。そして、スタックの容量が溢れた場合も、変換テーブルからエントリを削除すると共にスタックを空にする（Ｓ４１）。
【００６６】
図１５Ａ〜図１５Ｄは、変換テーブル１０２からのエントリの削除を説明するための図である。本実施形態では、ストリームデータ「ＡＡＢＢＣＣＤＤＣＣＢＢＣＣＡＡ」が入力され、変換テーブル１０２に１５Ａに示すエントリが保持されている状態において、シンボルペア「ＥＥ」が入力されたものとする。なお、スタックには２つのシンボルペアが
保持され、図１５Ａの例では、シンボルペア「ＥＥ」の前に２つのシンボルペア「ＣＣＡＡ」が入力されたものとする。なお、スタックの容量は、変換テーブルのエントリ数以下の任意の容量であれば好ましいが、本実施例では変換テーブルのエントリ２つ分とする。この場合、図１４のＳ２１において変換テーブル１０２に空きがないためエントリを削除する。すなわち、図１５Ｂに示すように、スタックのエントリに記憶されていたシンボルペアについて、変換テーブル１０２のエントリから参照頻度を１減算すると共にスタックからエントリを削除する。そして、図１５Ｃに示すように、変換テーブル１０２において参照頻度を減算することにより削除閾値以下となったエントリを削除する。また、図１５Ｄに示すように、入力されたシンボルペア「ＥＥ」を被圧縮シンボル列とするエントリが変換テーブル１０２に追加される（図１４：Ｓ７）。なお、本ステップでは、スタックにもシンボルペア「ＥＥ」に係るエントリが追加される。なお、Ｓ６の処理と、Ｓ２１、Ｓ７及びＳ４１の処理とを実行する順序は、並列であってもよいし、逆であってもよい。
【００６７】
このように、スタックに記憶されている直近に登録されたエントリを削除対象とし、ストリームデータにおけるシンボルペアの出現傾向に応じて変換ルールを変更することができる。また、データ解凍器２０側でも同様のルールに基づいて変換テーブル２０２のエントリを削除及び追加すれば、データ解凍器２０は圧縮されたストリームデータを適切に解凍できる。
【００６８】
＜解凍処理＞
図１６は、本実施形態に係る解凍処理の一例を示す処理フロー図である。図１６の処理フローでも、実施形態２と同様に、変換テーブル２０２にエントリを追加する処理（Ｓ１６）の前に、変換テーブルに空きがなければエントリを削除する処理（Ｓ３１）を行う。本ステップでは、変換テーブル１０２のエントリを削除すると共にスタックのエントリも削除する。ただし、本ステップでは、スタックに記憶されている直近に登録されたエントリを削除対象とする。また、図１６の処理フローでは、変換テーブルにエントリを追加する処理（Ｓ１６）においてスタックにもエントリを追加する。そして、スタックの容量が溢れた場合も、変換テーブルからエントリを削除すると共にスタックを空にする（Ｓ５１）。
【００６９】
図１７Ａ〜図１７Ｄは、変換テーブル２０２からのエントリの削除を説明するための図である。本実施形態では、ストリームデータ「ＡＡＢＢＣＣＤＤ２１０」が入力され、変換テーブル１０２に図１７Ａに示すエントリが保持されている状態において、シンボルペア「ＥＥ」が入力されたものとする。なお、シンボルペア「ＥＥ」の前に２つの圧縮シンボル「１」及び「０」が入力され、スタックには復号後のシンボルペアが２つ保持されている。なお、データ解凍器２０のスタックの容量は、データ圧縮器１０のスタックと同一であるものとし、変換テーブルのエントリ２つ分とする。この場合、図１６のＳ３１において変換テーブル２０２に空きがないためエントリを削除する。すなわち、図１７Ｂに示すように、スタックのエントリに記憶されていたシンボルペアについて、変換テーブル１０２のエントリから参照頻度を１減算すると共にスタックからエントリを削除する。そして、図１７Ｃに示すように、変換テーブル２０２において参照頻度を減算することにより削除閾値以下となったエントリを削除する。その後、図１７Ｄに示すように、入力されたシンボルペア「ＥＥ」を被圧縮シンボル列とするエントリが変換テーブル２０２に追加される（図１６：Ｓ１６）。なお、本ステップでは、スタックにもシンボルペア「ＥＥ」に係るエントリが追加される。
【００７０】
このように、スタックに記憶されている直近に登録されたエントリを削除対象とし、ストリームデータにおけるシンボルペアの出現傾向に応じて変換ルールを変更することができる。また、データ圧縮器１０の変換テーブル１０２のエントリと、データ解凍器２０の変換テーブル２０２のエントリとが同期したタイミングで削除及び追加される。したがっ
て、シンボルの変換規則が変更されてもデータ解凍器２０は圧縮後のストリームデータを適切に解凍できるようになっている。
【００７１】
〔実施形態４〕
本実施形態でも、データ圧縮器１０の変換テーブル１０２及びデータ解凍器２０の変換テーブル２０２からエントリを削除する。また、本実施形態においても、上述の実施形態と共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。本実施形態でも、エントリを追加する際、空きがなければ変換テーブルからエントリの削除を行う。具体的には、ストリームデータにおける出現頻度が低いシンボルペアを被圧縮シンボル列として保持するエントリを削除する。ただし、本実施形態では、シーケンシャルに全件のエントリを検索するのではなく、各エントリを並列に処理する。
【００７２】
＜データ圧縮器＞
図１８は、実施形態４に係るデータ圧縮器１０の一例を示すブロック図である。図１８のデータ圧縮器１０は、例えば変換テーブルに登録可能なエントリ数のエントリ削除回路１０８を有する。エントリ削除回路１０８は、それぞれがデータストリーム制御回路１０１から指示を受け、変換テーブルの参照頻度の値を減算すると共に、削除閾値以下となったエントリを削除する処理を並列に実行する。複数のエントリ削除回路を設けることで、回路規模は大きくなる一方、エントリの削除に要する時間は短縮することができる。このようなエントリ削除回路は、ＬＳＩやＦＰＧＡ等によって構成することができる。
【００７３】
＜圧縮処理＞
本実施形態においてエントリの削除を行うタイミングは、例えば上述した実施形態２と同様である。すなわち、データ圧縮器１０は、図１０に示した処理フローに従って動作する。ただし、図１１Ｂに示す参照頻度の減算処理は、並列に実行される。
【００７４】
＜データ解凍器＞
図１９は、実施形態４に係るデータ解凍器２０の一例を示すブロック図である。図１９のデータ解凍器２０も、複数（例えば変換テーブルに登録可能なエントリ数）のエントリ削除回路２０６を有する。複数のエントリ削除回路２０６は、それぞれがデータストリーム制御回路２０１から指示を受け、変換テーブルの参照頻度の値を減算すると共に、削除閾値以下となったエントリを削除する処理を並列に実行する。データ解凍器２０のエントリ削除回路２０６も、複数設けることで回路規模は大きくなる一方、エントリの削除に要する時間は短縮することができる。データ解凍器２０のエントリ削除回路も、ＬＳＩやＦＰＧＡ等によって構成することができる。
【００７５】
＜解凍処理＞
本実施形態においてエントリの削除を行うタイミングも、例えば上述した実施形態２と同様である。すなわち、データ解凍器２０は、図１２に示した処理フローに従って動作する。ただし、図１３Ｂに示す参照頻度の減算処理は、並列に実行される。
【００７６】
〔実施形態５〕
本実施形態でも、データ圧縮器１０の変換テーブル１０２及びデータ解凍器２０の変換テーブル２０２からエントリを削除する。また、本実施形態においても、上述の実施形態と共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。本実施形態では、変換テーブルに空きがない場合に初めてシーケンシャルに全件のエントリを検索するのではなく、例えば、データストリーム制御回路が、変換テーブルからのエントリの削除と変換テーブルへのエントリの追加とを並行して行うものとする。すなわち、図４の圧縮処理におけるＳ７や、図８の解凍処理におけるＳ１６で変換テーブルからエントリの削除も行う。
【００７７】
また、データストリーム制御回路１０１及びデータストリーム制御回路２０１は、変換テーブルにおけるエントリの登録位置を示す情報（「登録インデックス」とも呼ぶ）と、変換テーブルにおけるエントリの削除位置を示す情報（「削除インデックス」とも呼ぶ）とを有するものとする。登録インデックス及び削除インデックスは、それぞれ所定の規則に基づいて変換テーブル上の位置を巡回する。例えば、登録インデックスは、毎回変換テーブルの先頭から順に空き領域を探索して決定するようにしてもよいし、前回エントリを追加した位置から次に表れる空き領域を探索するようにしてもよい。そして、見つかった空き領域にエントリが追加される。また、削除インデックスも、変換テーブルを参照する毎に１つずつエントリの挿入位置を巡回する。そして、変換テーブルにおいて削除インデックスの位置にエントリが挿入されていた場合、当該エントリの参照頻度が削除閾値以下であるときは、当該エントリを削除する。一方、参照頻度が削除閾値以下でないときは、当該エントリの参照頻度を１減算する。
【００７８】
＜変換テーブルの生成及び更新＞
図２０Ａ〜図２０Ｉは、変換テーブルへのエントリの追加及び削除を説明するための図である。ここでは、「ＡＡＢＢＣＣＤＤＣＣＢＢＣＣＡＡＤＤＥＥ」というストリームデータが入力されるものとする。また、登録インデックスは、変換テーブルの先頭から最初に表れる空き領域を探索する。そして、削除インデックスは、変換テーブルの先頭から順にエントリの登録位置を巡回するものとする。
【００７９】
図２０Ａに示すように、初期状態において登録インデックス及び削除インデックスは、先頭のエントリ登録位置を示している。この場合、図２０Ｂに示すように、入力されたシンボルペア「ＡＡ」は変換テーブルの１番目に登録される。また、登録インデックスは変換テーブルを先頭から探索した場合の最初の空き領域である２番目の領域を示す。また、削除インデックスは、次のエントリ登録位置に移動し、変換テーブルの２番目の領域を示す。
【００８０】
そして、次のシンボルペア「ＢＢ」が入力されると、図２０Ｃに示すように、登録インデックスが示す２番目の領域に被圧縮シンボル列「ＢＢ」が登録され、そのまま出力される。また、登録インデックスは、変換テーブルを先頭から探索した場合の最初の空き領域である３番目の領域を示す。削除インデックスは、次のエントリ登録位置に移動し、変換テーブルの３番目の領域を示す。同様に、次のシンボルペア「ＣＣ」が入力されると、図２０Ｄに示すように、登録インデックスが示す３番目の領域に被圧縮シンボル列「ＣＣ」が登録され、そのまま出力される。その後、登録インデックスは、変換テーブルを先頭から探索した場合の最初の空き領域である４番目の領域を示す。削除インデックスは、次のエントリ登録位置に移動し、変換テーブルの４番目の領域を示す。
【００８１】
そして、次のシンボルペア「ＤＤ」が入力されると、図２０Ｅに示すように、登録インデックスが示す４番目の領域に被圧縮シンボル列「ＤＤ」が登録され、そのまま出力される。また、登録インデックスは、変換テーブルに空き領域がないため移動しない。一方、削除インデックスは、次のエントリ登録位置に移動し、変換テーブルの１番目の領域を示す。このとき、１番目に登録されているエントリは参照頻度が１であり、削除閾値以下であると判断され、図２０Ｆに示すように当該エントリは削除される。そして、登録インデックスは、変換テーブルを先頭から探索した場合の最初の空き領域である１番目の領域へ移動する。
【００８２】
そして、次のシンボルペア「ＣＣ」が入力されると、図２０Ｇに示すように、被圧縮シンボルペアが「ＣＣ」である３番目のエントリの参照頻度が１加算され、圧縮シンボル「２」が出力される。また、登録インデックスは、変換テーブルを先頭から探索した場合の
最初の空き領域である１番目の領域をすでに示しているため、移動しない。一方、削除インデックスは、次のエントリ登録位置に移動し、変換テーブルの２番目の領域を示す。このとき、２番目に登録されているエントリは参照頻度が１であり、削除閾値以下であると判断され、当該エントリは削除される。
【００８３】
また、次のシンボルペア「ＢＢ」が入力されると、図２０Ｈに示すように、登録インデックスが示す１番目の領域に被圧縮シンボル列「ＢＢ」が登録され、そのまま出力される。一方、削除インデックスは、次のエントリ登録位置に移動し、変換テーブルの３番目の領域を示す。このとき、３番目に登録されているエントリは参照頻度が削除閾値より大きい２であったため、当該エントリは削除されないが、当該工程において参照頻度は１減算され、「１」になる。
【００８４】
そして、次のシンボルペア「ＣＣ」が入力されると、図２０Ｉに示すように、被圧縮シンボルペアが「ＣＣ」である３番目のエントリの参照頻度が１加算され、圧縮シンボル「２」が出力される。また、登録インデックスは、変換テーブルを先頭から探索した場合の最初の空き領域である２番目の領域をすでに示しているため、移動しない。一方、削除インデックスは、次のエントリ登録位置に移動し、変換テーブルの４番目の領域を示す。このとき、４番目に登録されていたエントリは参照頻度が１であり、削除閾値以下であると判断され、当該エントリは削除される。
【００８５】
以上のように、本実施形態では登録と削除とが並行して行われる。なお、データ解凍器２０においても対応する処理が行われる。このようにすれば、削除のための処理量を抑えることができるため、好ましい時間で処理が完了すると共に、回路規模の増大も抑えることができる。
【００８６】
なお、登録インデックスは、変換テーブルの先頭から最初に表れる空き領域でなく、最後に削除されたエントリの場所を指すようにしてもよい。例えば、図２０Ｆにおいて、１行目のエントリが削除された場合、次に他のエントリが削除されるまで登録インデックスは１行目の位置を指すものとする。このようにすれば、テーブルの空きエントリを探すためのハードウェアを削減することができるとともに、登録処理に必要なクロック数を削減することができる。
【００８７】
また、削除インデックスは、変換テーブルの先頭から順にエントリの登録位置を巡回しつつ、変換テーブルに空きがある場合には参照頻度が１であってもエントリを削除しないようにしてもよい。例えば、図２０Ｆにおいて削除したエントリにその後登録がなされるまで、削除インデックスの巡回は継続するがエントリの削除は行わない。したがって、図２０Ｇにおいては２行目のエントリが削除されない。このようにすれば、変換テーブルにできるだけ多くのエントリを保持しておくことができるため、圧縮処理及び解凍処理においてシンボルペアの変換テーブルへのヒット率が向上する。
【００８８】
〔実施形態６〕
上述のデータ圧縮器１０、データ解凍器２０を、それぞれ複数直列に接続して圧縮率を向上させたデータ圧縮装置、データ解凍装置を示す。実施形態６も、実施形態１〜５と共通する構成を含むので、共通する構成については同一の符号を付して説明を省略し、主として相違点について説明する。
【００８９】
図２１は、データ圧縮器１０を多段接続したデータ圧縮装置の一例を示す。図２１に示すデータ圧縮装置は、直列に接続された４つのデータ圧縮器１０から形成される。但し、データ圧縮装置を形成するデータ圧縮器の数は適宜選択可能である。ここで、データ圧縮装置に含まれる複数のデータ圧縮器１０を、送信側装置１（図示せず）に近い方から順に
（すなわち伝送路３から遠い順に）１段目、２段目、３段目、４段目と呼ぶ。
【００９０】
１段目のデータ圧縮器１０は、圧縮処理の結果として得られた圧縮シンボルを含むシンボル列と、当該シンボル列を形成する各シンボルに対応するフラグ（付加ビット）が、シンボル列に含まれるシンボル順と一致する順序で並べられた付加ビット列とを出力する。
【００９１】
２段目のデータ圧縮器１０は、１段目からのシンボル列及び付加ビットに対する９ビット単位の圧縮処理によって得られたシンボル列と、当該シンボル列に対応するフラグ群で形成された付加ビット列とを出力する。同様に、３段目のデータ圧縮器１０は、２段目からのシンボル列及び付加ビットに対する１０ビット単位の圧縮処理によって得られたシンボル列と、当該シンボル列に対応するフラグ群で形成されたビット列とを出力する。同様に、４段目のデータ圧縮器１０は、３段目からのシンボル列及び付加ビットに対する１１ビット単位の圧縮処理によって得られたシンボル列と、当該シンボル列に対応するフラグ群で形成されたビット列とを出力する。そして、４段目のデータ圧縮器１０の出力は、伝送路３を介してデータ解凍器２０へ送信される。
【００９２】
図２２は、データ解凍器２０を多段接続したデータ解凍装置の一例を示す。図２２に示すデータ解凍装置は、直列に接続された４つのデータ解凍器２０から形成される。但し、データ解凍装置を形成するデータ解凍器の数は、データ圧縮装置を形成するデータ圧縮器の数以上であればよい。ここで、データ解凍装置に含まれる複数のデータ解凍器２０を、受信側装置２（図示せず）に近い方から順に（伝送路３から遠い順に）１段目、２段目、３段目、４段目と呼ぶ。
【００９３】
４段目のデータ解凍器２０には、データ圧縮装置による４段階の圧縮処理の結果として得られた圧縮シンボルを含むシンボル列と、各段階においてシンボルが圧縮されたか否かを示すフラグ（付加ビット）を、シンボル列に含まれるシンボルと一致する順序で並べた、付加ビット列とが入力される。４段目のデータ解凍器２０は、データ圧縮装置の４段目のデータ圧縮器１０が出力した付加ビットに基づいて、１１ビットのシンボル単位で解凍処理を行う。
【００９４】
同様に、３段目のデータ解凍器２０には、４段目のデータ解凍器２０の解凍処理の結果として得られたシンボル列と、データ圧縮装置の３段目においてシンボルが圧縮されたか否かを示すフラグ（付加ビット）を、シンボル列に含まれるシンボルと一致する順序で並べたビット列とが入力される。すなわち、３段目のデータ解凍器２０は、データ圧縮装置の３段目のデータ圧縮器１０が出力した付加ビットに基づいて、１０ビットのシンボル単位で解凍処理を行う。
【００９５】
また、２段目のデータ解凍器２０には、３段目のデータ解凍器２０の解凍処理の結果として得られたシンボル列と、データ圧縮装置の２段階目においてシンボルが圧縮されたか否かを示すフラグ（付加ビット）を、シンボル列に含まれるシンボルと一致する順序で並べたビット列とが入力される。すなわち、２段目のデータ解凍器２０は、データ圧縮装置の２段目のデータ圧縮器１０が出力した付加ビットに基づいて、９ビットのシンボル単位で解凍処理を行う。
【００９６】
そして、１段目のデータ解凍器２０には、２段目のデータ解凍器２０の解凍処理の結果として得られたシンボル列と、データ圧縮装置の１段目においてシンボルが圧縮されたか否かを示すフラグ（付加ビット）を、シンボル列に含まれるシンボルと一致する順序で並べたビット列とが入力される。すなわち、１段目のデータ解凍器２０は、入力された付加ビットに基づいて、８ビットのシンボル単位で解凍処理を行う。
【００９７】
このようにすれば、データ圧縮器１０による圧縮前のストリームデータが復号され、受信側装置２に出力される。また、本実施形態に係る圧縮処理を重畳的に適用することで、圧縮率を向上させることができる。
【００９８】
また、本実施形態では、データ圧縮装置で行われる圧縮処理の段数以上の解凍処理を行うことができれば、それぞれの段数が異なっていても圧縮データを解凍することができる。すなわち、圧縮側の段数の方が復号側の段数より少ない場合でも、シンボルのデータ幅に基づいて圧縮側の段数に対応する段数のデータ解凍器２０が解凍処理を行うようにする。ストリームデータの内容によっては、ある程度の段数以上にデータ圧縮器１０を増やしても圧縮率の改善が頭打ちになる場合もあるところ、図２１に示す圧縮段数制御部１２を追加して圧縮処理の段数を変更できるようにしてもよい。例えば、各段階のデータ圧縮器１０においてシンボルを変換した割合又は圧縮率を算出し、圧縮段数制御部１２は、シンボルを変換した割合又は圧縮率が所定の閾値を下回った場合に、それ以降の段階の圧縮処理を行わないように制御する。なお、このような処理は、各段階のデータ圧縮器１０が自律的に判断するようにしてもよい。上述の通り、データ圧縮装置において行われる圧縮処理の段数を変更しても、図２２に示したデータ解凍装置の構成により対応する段数の解凍処理を行うことができる。
【００９９】
〔実施形態７〕
上記の実施形態に示した技術は、様々な伝送路に適用することができる。例えば、伝送路３は、光ケーブルやＨＤＭＩ（High-Definition Multimedia Interface，登録商標）、ＵＳＢ（Universal Serial Bus）等の有線であってもよいし、Bluetooth（登録商標）等
の無線であってもよい。また、送信側装置１、データ圧縮器１０、データ解凍器２０、及び受信側装置２が同期して、変換テーブル１０２及び変換テーブル２０２のエントリや、実施形態５に示した登録インデックス、削除インデックスの開始位置を予め定められた状態に初期化するようにしてもよい。このような指示は、直接信号線を介して送信されてもよいし、例えばデータ圧縮器が圧縮データを予め定められたフォーマットに基づいてパケット化して送信する場合、例えばヘッダに初期化を指示するフラグを含めるようにしてもよい。なお、圧縮対象のデータはストリームデータに限られず、例えばＵＳＢ等を介して送受信されるデータ列であってもよい。
【０１００】
図２３は、圧縮データを独自のプロトコルでパケット化して送信する場合のフォーマットの一例を示す図である。図２３に示すパケットの例は、伝送路３が１６ビット幅、４チャネル、最大データ長１０２３シンボルであるものとする。ヘッダには、多重化された伝送路のいずれを使用するか特定する「Channel#」（２ビット）、受信できたか否かを応答する「Ack/Nack」（１ビット）、変換テーブル等の初期化を指示する「Flush」（１ビッ
ト）、シンボルの復号を実行せずシンボルをそのまま通過させるバイパスを指示する「Bypass」（１ビット）、「Data」部の長さを示す「Data Length」（１０ビット）の領域を
含む。また、「Data」部の各々には１シンボル、最大で１０２３シンボルを格納することができるものとする。このようにすれば、シンボルの境界が明確になる。さらにフッタには、伝送データの誤り検出及び訂正を行うための「Checksum」の領域を有する。このようなフォーマットを採用し、例えば最終段のデータ圧縮器１０の後でパケット化する。また、ヘッダの「Flush」部に１が入っていれば、変換テーブルのエントリ等を初期化する。
この場合において、「Flush」が１であり且つ「Datalength」が０のときは変換テーブル
を予め定められた値に初期化し、「Flush」が１であり且つ「Datalength」が０でないと
きは「Data」部を利用して変換テーブルの初期値を送信するようにしてもよい。「Flush
」が１であり且つ「Datalength」が０でないとき、例えば、「Data」部の各々にシンボルペアを格納して送信し、受信側は「Data」部に格納された順にシンボルペアを変換テーブルのエントリに登録する。また、パケットの送信前にマンチェスタ符号等によるプリアンブル信号を送信し、同期をとるようにしてもよい。
【０１０１】
図２４は、本実施形態に係る通信の一例を示すシーケンス図である。長方形で囲われた情報は、圧縮側と解凍側とにおいてそれぞれの状態を示しており、各段階において所定の記憶領域に記憶される。このような記憶領域は、上述のチャネル数分設けられるものとする。圧縮側には、パケットの再送に用いられるパケットサイズのバッファ「Ｐｂｕｆ」と、当該プロトコルの制御に用いられる「Ｓｅｑ」レジスタとが設けられている。また、解凍側には、直近の送信内容（前回のＡｃｋ又はＮａｃｋ）を保持しておく「Ａｂｕｆ」と、当該プロトコルの制御に用いられる「Ｓｅｑ」レジスタと、タイムアウト用カウンタが設けられている。また、初期状態では、ＡｂｕｆにＡｃｋがセットされ、圧縮側のＳｅｑが０、解凍側のＳｅｑが１とされる。なお、Ｓｅｑは、送信時に０と１とを切り替え（トグル）し、再送時には切り替えをしない。
【０１０２】
具体的には、エラーなく解凍側からＡｃｋ１が送信された後、圧縮側から送信がなければ復号側からタイムアウトを送信する。その後、圧縮側から新たに通信を開始する場合、変換テーブルのエントリ等を初期化するため、Ｆｌｕｓｈ１を送信する。一方、解凍側で問題なく受信できると、Ａｃｋ２を送信する。その後、エラー無く通信が確立すれば、圧縮側から圧縮データの送信を開始し、Ｄａｔａ１、Ｄａｔａ２、Ｄａｔａ３・・・と送信される。
【０１０３】
図２５は、本実施形態に係る通信の他の例を示すシーケンス図である。図２５に示すように、解凍側は、Ａｃｋ／Ｎａｃｋを送信した後、タイマーを始動させ、タイムアウトの判断を行う。一方、圧縮側でエラーを検出した場合、特に応答せず、解凍側でのタイムアウトを待つ。解凍側でタイムアウトを待ってＡｃｋを送信することにより、圧縮側からの送信を継続させることができる。
【０１０４】
具体的には、圧縮側からＦｌｕｓｈ１が送信され、解凍側でチェックサムエラー等が発生したものとする。この場合、解凍側からはＮａｃｋ１が送信され、解凍側ではタイマーを始動する。一方、Ｎａｃｋ１を受信した圧縮側はＦｌｕｓｈ１を再送する。そして、解凍側でタイムアウト前にＦｌｕｓｈ１を受信した場合、Ａｃｋ２を送信し、タイマーを始動する。一方、圧縮側でＡｃｋ２の受信時にチェックサムエラー等を検出した場合、圧縮側は何も応答しない。その後、解凍側でタイムアウトが発生すると、Ａｃｋ２を再送し、タイマーを始動する。また、圧縮側から送信データがなければ、タイムアウトを繰り返し、Ａｃｋ２を再送する。一方、圧縮側で圧縮データの送信を開始すると、Ｄａｔａ１が送信される。また、解凍側で問題なく受信できれば、Ａｃｋ３を送信する。
【０１０５】
以上のように、解凍側のタイムアウトを利用することで、エラーが発生した場合も適切に通信を継続することができる。
【０１０６】
〔実施形態８〕
上述の圧縮処理及び解凍処理は、転送されるデータ量を削減するだけでなく、転送されるデータの内容をいわゆる換字式暗号によって暗号化するという側面を有している。すなわち、初期の変換テーブルのエントリや、登録インデックスの初期値、削除インデックスの初期値がわからなければ圧縮データを復号できない。ここで、上述の実施形態に係る圧縮処理及び解凍処理は、変換テーブルに登録されていないシンボルペアの出現時にはデータ圧縮器１０はシンボルペアを変換せずに出力するという特徴を有している。このようにすることで、データ解凍器２０が作成する変換テーブルにも対応するエントリを登録することができる一方、変換せずに伝送されるシンボルペアを第三者が盗み見ることで当該暗号が解読されるおそれがある。そこで、本実施形態では、変換せずに出力されるシンボルペアの少なくとも一部についてスクランブルをかけ、暗号強度を向上させる。
【０１０７】
図２６は、スクランブル回路を含むデータ圧縮／解凍システム（データ暗号化／復号化システム）の一例を示す図である。本実施形態に係るデータ圧縮／解凍システムは、データ圧縮器１０の出力に対し、伝送路３へ送出する前にスクランブルをかけるスクランブル回路１３を備えている。また、伝送路３を介して受信した圧縮データに対し、データ解凍器２０が解凍処理を行う前にスクランブルを解除するスクランブル回路２３を備えている。
【０１０８】
このようなデータ圧縮／解凍システムにおいて、スクランブル回路１３及びスクランブル回路２３が、所定の暗号化方式により伝送路３を流れるデータにスクランブルをかける。暗号化方式は特に限定されないが、例えば次のような手法を採用することができる。なお、本実施形態ではシンボルは８ビットであるものとする。
【０１０９】
まず、データ圧縮器１０及びデータ解凍器１０は、あらかじめ変換テーブルの初期状態のデータセット（初期の変換テーブルのエントリ、登録インデックスの初期値、及び削除インデックスの初期値：共通鍵）を保持しているものとする。そして、データ圧縮器１０及びデータ解凍器１０は、変換テーブルの初期状態のデータセットから例えばＭＤ５のチェックサムＡを求める。また、スクランブル回路１３及びスクランブル回路２３は、あらかじめ定められたパスワード（共通鍵）を保持しているものとする。そして、当該パスワードに基づいて例えばＭＤ５のチェックサムＢを求める。そして、圧縮されたシンボルのインデックスを「ｉ」として、下記のＸ（ｉ）を算出する。
Ｘ（ｉ）＝Ａ［ｉ＋８：ｉ］％Ｂ
なお、上記の式はシンボルが８ビットの場合を表し、インデックスｉは１からカウントするものとする。ＭＤ５によれば３２文字の１６進数からなるチェックサムが得られ、Ａ［ｉ＋８：ｉ］は当該チェックサムのビットを巡回させて用いている。そして、下記の式によりＸ（ｉ）と圧縮されたシンボルＳ（ｉ）との排他的論理和をとれば、スクランブルをかけた値Ｓ’（ｉ）を得ることができ、Ｓ’（ｉ）が伝送路３へ送信される。
Ｓ’（ｉ）＝Ｘ（ｉ）ｘｏｒＳ（ｉ）
【０１１０】
本実施形態では、データ解凍器２０及びスクランブル回路２３も、上述の共通鍵を有しているため、データ圧縮器１０及びスクランブル回路１３と同様にＸ（ｉ）を求めることができる。そして、下記の式によりＸ（ｉ）とＳ’（ｉ）との排他的論理和をとれば、スクランブルを解除して圧縮されたシンボルＳ（ｉ）を求めることができる。
Ｓ（ｉ）＝Ｘ（ｉ）ｘｏｒＳ’（ｉ）
【０１１１】
実施形態８によれば、圧縮しつつ暗号化の強度も向上させることができる。
【０１１２】
〔実施形態９〕
ハードウェアによってデータ圧縮器１０及びデータ解凍器２０を形成する場合、変換テーブルへのエントリの登録がボトルネックとなりデータパイプライン全体の流れが遅延する（「ブロック」されるとも呼ぶ）おそれがある。そこで、本実施形態では、変換テーブルへのエントリの追加にかかる時間（処理サイクル）の間、後続のシンボルが変換テーブルのエントリにヒットしない場合であってもシンボルを変換テーブルに追加せずにそのまま出力する。また、解凍側においても変換テーブルへのエントリの追加を行う場合、対応する時間（処理サイクル）だけ後続のシンボルをそのまま出力する。このようにすれば、出力スループットを向上させることができる。また、このような圧縮処理及び解凍処理を、ノンブロック圧縮及びノンブロック復号と呼ぶものとする。ノンブロック圧縮及び復号は、上述した実施形態の各々に適用することができる。
【０１１３】
例えば、１シンボルが８ビットであって、圧縮前の２シンボルを圧縮後において１シンボルに変換する場合において、変換テーブルへのエントリの追加にかかる時間が、無変換
であれば４シンボルを出力できるだけの処理サイクルであるものとする。この場合において、シンボル列「ＡＡＢＢＣＣＤＤＣＣＢＢＡＡＢＢＡＡＣＣ」を処理する例を説明する。なお、図２７Ａに示すように、変換テーブルの初期状態はエントリが登録されていないものとする。
【０１１４】
ノンブロック圧縮を行う場合、図２７Ｂに示すように、最初のシンボルペア「ＡＡ」をそのまま出力すると共に、被圧縮シンボル列を「ＡＡ」とするエントリを変換テーブルに登録する。なお、図２７Ｂの例ではエントリが登録されているが、エントリの追加には４シンボルを処理するだけの時間がかかるため、図２７Ｃに示すように、後続のシンボル列「ＢＢＣＣ」は変換テーブルに登録せずそのまま出力する。
【０１１５】
その後、図２７Ｄに示すように、シンボルペア「ＤＤ」が入力されると、変換テーブルにはヒットせず、且つ変換テーブルへの先のエントリの登録が完了しているため、シンボルペア「ＤＤ」をそのまま出力すると共に、被圧縮シンボル列を「ＤＤ」とするエントリを変換テーブルに登録する。そして、図２７Ｅに示すように、変換テーブルへのエントリの登録にかかる時間は、後続のシンボル列「ＣＣＢＢ」を変換テーブルに登録せずに出力する。
【０１１６】
また、図２７Ｆに示すように、次のシンボルペア「ＡＡ」が入力された場合、シンボルペア「ＡＡ」は変換テーブルのエントリにヒットするため、エントリにおいて対応付けられている圧縮シンボル「０」を出力する。このように、変換テーブルへのエントリ登録にかかる時間に出力をブロックしない分、スループットを向上させることができる。
【０１１７】
同様に、ノンブロック復号を行う場合、図２８Ａに示すように変換テーブルの初期状態は、圧縮側と同様にエントリが登録されていない状態にする。そして、図２８Ｂに示すように、最初のシンボルペア「ＡＡ」が入力されると、変換テーブルにはヒットしないため、シンボル列「ＡＡ」を出力すると共に、変換テーブルの復号シンボル列を「ＡＡ」とするエントリを変換テーブルに追加する。また、図２８Ｃに示すように、後続のシンボル列「ＢＢＣＣ」は、変換テーブルに登録せずにそのまま出力する。
【０１１８】
その後、図２８Ｄに示すように、シンボルペア「ＤＤ」が入力されると、変換テーブルにはヒットせず、且つ変換テーブルへの先のエントリの登録が完了しているため、シンボルペア「ＤＤ」をそのまま出力すると共に、復号シンボル列を「ＤＤ」とするエントリを変換テーブルに登録する。そして、図２８Ｅに示すように、変換テーブルへのエントリの登録にかかる時間は、後続のシンボル列「ＣＣＢＢ」を変換テーブルに登録せずに出力する。
【０１１９】
また、図２８Ｆに示すように、次のシンボル「０」が入力された場合、シンボル「０」は圧縮シンボルとして変換テーブルのエントリに登録されているため、当該エントリにおいて対応付けられている復号シンボル「ＡＡ」に変換して出力する。このように、解凍側においても、変換テーブルへのエントリ登録にかかる時間に出力をブロックしない分、スループットを向上させることができるようになる。
【０１２０】
〔その他の変形例〕
また、圧縮前のストリームデータに含まれるシンボルの種類が予めわかっている場合、変換テーブルにおいて圧縮後のシンボルとして、圧縮前のストリームデータには存在し得ないシンボルを登録しておくようにしてもよい。このようにすれば、付加ビットを参照しなくても圧縮されたシンボルであるか否か判断できるようになる。
【０１２１】
例えば、ストリームデータが所定の文字コードが直列に並べられたテキストデータであ
る場合には、圧縮前のシンボルとして２文字のペアが登録され、圧縮後のシンボルとしては当該文字コードにおいて未使用のビット列が割り当てられる。また、例えば、ストリームデータが遺伝子データ（「Ａ」、「Ｇ」、「Ｔ」及び「Ｃ」の核酸コード配列）である場合には、ルックアップテーブルの圧縮前の２シンボルとして、「Ａ」、「Ｇ」、「Ｔ」及び「Ｃ」から２文字を取り出した順列が登録され、圧縮後の１シンボルとして、「Ａ」、「Ｇ」、「Ｔ」及び「Ｃ」以外の値が割り当てられる
【０１２２】
また、上記の実施形態では２つのシンボルを１つのシンボルに変換したが、圧縮前のシンボルの組合せは２つには限られない。複数のシンボルを、それ未満の数のシンボルに置き換えるという構成であれば、データ圧縮器として機能する。ただし、変換テーブルのエントリとストリームデータのシンボルペアとの一致率を向上させるという観点や、変換テーブルの容量を低減させるといった観点からは、２つのシンボルを１つのシンボルに圧縮する態様が好ましい。
【０１２３】
また、上記の実施形態では、１番目のシンボル及び２番目のシンボルのシンボルペアが変換テーブルに登録されていない場合、次の処理対象は３番目のシンボル及び４番目のシンボルとし、これらのシンボルペアが変換テーブルに登録されているか判断していた。ここで、１番目のシンボル及び２番目のシンボルのシンボルペアが変換テーブルに登録されていない場合、次の処理対象を２番目のシンボル及び３番目のシンボルのシンボルペアとしてもよい。このようにすれば、圧縮率の向上が期待できる。
【０１２４】
以上説明した実施形態及び変形例の構成は、適宜組み合わせることができる。
【符号の説明】
【０１２５】
１      送信側装置
１０      データ圧縮器
１０１      データストリーム制御回路
１０２      変換テーブル
１０３〜１０６      ラッチ
１０７      マルチプレクサ
２      受信側装置
２０      データ解凍器
２０１      データストリーム制御回路
２０２      変換テーブル
２０３〜２０５      ラッチ
３      伝送路
【図１】
0006256883.tif 000002
【図２】
0006256883.tif 000003
【図３】
0006256883.tif 000004
【図４】
0006256883.tif 000005
【図５Ａ】
0006256883.tif 000006
【図５Ｂ】
0006256883.tif 000007
【図５Ｃ】
0006256883.tif 000008
【図５Ｄ】
0006256883.tif 000009
【図５Ｅ】
0006256883.tif 000010
【図５Ｆ】
0006256883.tif 000011
【図５Ｇ】
0006256883.tif 000012
【図５Ｈ】
0006256883.tif 000013
【図５Ｉ】
0006256883.tif 000014
【図６】
0006256883.tif 000015
【図７】
0006256883.tif 000016
【図８】
0006256883.tif 000017
【図９Ａ】
0006256883.tif 000018
【図９Ｂ】
0006256883.tif 000019
【図９Ｃ】
0006256883.tif 000020
【図９Ｄ】
0006256883.tif 000021
【図９Ｅ】
0006256883.tif 000022
【図９Ｆ】
0006256883.tif 000023
【図９Ｇ】
0006256883.tif 000024
【図９Ｈ】
0006256883.tif 000025
【図９Ｉ】
0006256883.tif 000026
【図１０】
0006256883.tif 000027
【図１１Ａ】
0006256883.tif 000028
【図１１Ｂ】
0006256883.tif 000029
【図１１Ｃ】
0006256883.tif 000030
【図１１Ｄ】
0006256883.tif 000031
【図１２】
0006256883.tif 000032
【図１３Ａ】
0006256883.tif 000033
【図１３Ｂ】
0006256883.tif 000034
【図１３Ｃ】
0006256883.tif 000035
【図１３Ｄ】
0006256883.tif 000036
【図１４】
0006256883.tif 000037
【図１５Ａ】
0006256883.tif 000038
【図１５Ｂ】
0006256883.tif 000039
【図１５Ｃ】
0006256883.tif 000040
【図１５Ｄ】
0006256883.tif 000041
【図１６】
0006256883.tif 000042
【図１７Ａ】
0006256883.tif 000043
【図１７Ｂ】
0006256883.tif 000044
【図１７Ｃ】
0006256883.tif 000045
【図１７Ｄ】
0006256883.tif 000046
【図１８】
0006256883.tif 000047
【図１９】
0006256883.tif 000048
【図２０Ａ】
0006256883.tif 000049
【図２０Ｂ】
0006256883.tif 000050
【図２０Ｃ】
0006256883.tif 000051
【図２０Ｄ】
0006256883.tif 000052
【図２０Ｅ】
0006256883.tif 000053
【図２０Ｆ】
0006256883.tif 000054
【図２０Ｇ】
0006256883.tif 000055
【図２０Ｈ】
0006256883.tif 000056
【図２０Ｉ】
0006256883.tif 000057
【図２１】
0006256883.tif 000058
【図２２】
0006256883.tif 000059
【図２３】
0006256883.tif 000060
【図２４】
0006256883.tif 000061
【図２５】
0006256883.tif 000062
【図２６】
0006256883.tif 000063
【図２７Ａ】
0006256883.tif 000064
【図２７Ｂ】
0006256883.tif 000065
【図２７Ｃ】
0006256883.tif 000066
【図２７Ｄ】
0006256883.tif 000067
【図２７Ｅ】
0006256883.tif 000068
【図２７Ｆ】
0006256883.tif 000069
【図２８Ａ】
0006256883.tif 000070
【図２８Ｂ】
0006256883.tif 000071
【図２８Ｃ】
0006256883.tif 000072
【図２８Ｄ】
0006256883.tif 000073
【図２８Ｅ】
0006256883.tif 000074
【図２８Ｆ】
0006256883.tif 000075