(57)【要約】【課題】変換規則の検索処理の所要時間が長時間化するのを回避し得る技術を提供する。【解決手段】第１のデータと第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、所定数のエントリ領域が複数のバンク領域に区分けされており、複数のバンク領域の夫々は、所定数より少ない数のエントリ領域によって形成される変換テーブルと、第１のデータに対応するバンク領域を複数のバンク領域の中から一意に決定する決定部と、決定されたバンク領域のエントリ領域を所定数または所定数より少ない数ずつ探索し、第１のデータに対応する第２のデータが記憶されている場合には、第２のデータを出力し、第１のデータに対応する第２のデータが記憶されていない場合には、第１のデータに対応する第２のデータを、他の第２のデータを記憶していないエントリ領域に登録するとともに、第１のデータを出力する処理部と、を備える。【選択図】図２
2020036291.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１のデータを含む第１のデータ列を前記第１のデータ列のサイズより小さいサイズの第２のデータ列に圧縮するデータ圧縮器であって、
前記第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルと、
前記複数の第１のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、
前記複数の第１のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータが記憶されている場合には、この記憶された前記第２のデータを出力し、前記第１のデータに対応する第２のデータが記憶されていない場合には、前記第１のデータに対応する第２のデータを取得し、取得した第２のデータを、他の第２のデータを記憶していないエントリ領域に登録するとともに、前記第１のデータを出力する処理部と、を備える、
データ圧縮器。
【請求項２】
前記バンク領域毎に、前記バンク領域を検索した回数に対する前記第１のデータに対応する前記第２のデータが記憶されていた回数の割合であるヒット率および前記バンク領域に登録可能な最大エントリ数に対する登録済みのエントリ数の割合である占有率を算出する算出部をさらに備え、
前記決定部は、前記ヒット率と前記占有率とが所定の変更条件を満たす場合に、前記決定部によって決定された対応するバンク領域を他のバンク領域に変更する、
請求項１に記載のデータ圧縮器。
【請求項３】
前記所定の変更条件を満たす場合は、前記決定部によって決定された対応するバンク領域のヒット率が所定の第１ヒット率閾値より低く、前記決定部によって決定された対応するバンク領域の占有率が所定の第１占有率閾値より低い場合を含み、
前記他のバンク領域は、複数の前記バンク領域のうち占有率の最も低いバンク領域である、
請求項２に記載のデータ圧縮器。
【請求項４】
前記バンク領域毎に、前記バンク領域を検索した回数に対する前記第１のデータに対応する前記第２のデータが記憶されていた回数の割合であるヒット率および前記バンク領域に登録可能な最大エントリ数に対する登録済みのエントリ数の割合である占有率を算出する算出部をさらに備え、
前記決定部によって決定された対応するバンク領域について算出したヒット率と占有率とが所定の分割条件を満たす場合に、当該バンク領域を２つの領域に分割する、
請求項１から３のいずれか一項に記載のデータ圧縮器。
【請求項５】
前記所定の分割条件は、前記ヒット率が所定の第２ヒット率閾値以上であり、前記占有率が所定の第２占有率閾値以上である場合を含む、
請求項４に記載のデータ圧縮器。
【請求項６】
前記バンク領域毎に、前記バンク領域を検索した回数に対する前記第１のデータに対応する前記第２のデータが記憶されていた回数の割合であるヒット率および前記バンク領域に登録可能な最大エントリ数に対する登録済みのエントリ数の割合である占有率を算出する算出部をさらに備え、
前記決定部によって決定された対応するバンク領域について算出したヒット率と占有率とが所定の統合条件を満たす場合に、当該バンク領域と他のバンク領域とを１つの領域に統合する、
請求項１から５のいずれか一項に記載のデータ圧縮器。
【請求項７】
前記所定の統合条件を満たす場合は、前記決定部によって決定された対応するバンク領域について算出した占有率が所定の第３占有率閾値以上であり、かつ、前記他のバンク領域について算出した占有率が前記第３占有率閾値よりも低く設定された所定の第４占有率閾値以下である場合を含む、
請求項６に記載のデータ圧縮器。
【請求項８】
複数の第１のデータを含む第１のデータ列を前記第１のデータ列のサイズより小さいサイズの第２のデータ列に圧縮するデータ圧縮方法であって、前記第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルを有するコンピュータが、
前記複数の第１のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定ステップと、
前記複数の第１のデータの夫々について、前記決定ステップによって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータが記憶されている場合には、この記憶された前記第２のデータを出力し、前記第１のデータに対応する第２のデータが記憶されていない場合には、前記第１のデータに対応する第２のデータを取得し、取得した第２のデータを、他の第２のデータを記憶していないエントリ領域に登録するとともに、前記第１のデータを出力する処理ステップと、を実行する、
データ圧縮方法。
【請求項９】
複数の第１のデータを含む第１のデータ列を前記第１のデータ列のサイズより小さいサイズの第２のデータ列に圧縮するデータ圧縮プログラムであって、前記第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルを有するコンピュータに、
前記複数の第１のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定させる決定ステップと、
前記複数の第１のデータの夫々について、前記決定ステップによって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータが記憶されている場合には、この記憶された前記第２のデータを出力し、前記第１のデータに対応する第２のデータが記憶されていない場合には、前記第１のデータに対応する第２のデータを取得し、取得した第２のデータを、他の第２のデータを記憶していないエントリ領域に登録するとともに、前記第１のデータを出力する処理ステップと、を実行させる
データ圧縮プログラム。
【請求項１０】
変換テーブルのエントリ領域に第１のデータが登録されている場合には第１のデータに対応する前記第１のデータよりサイズの小さい第２のデータを出力し、前記変換テーブルのエントリ領域に第１のデータが登録されていない場合には前記第１のデータに対応する第２のデータを取得し、取得した第２のデータをエントリ領域に登録するとともに前記第１のデータを出力するデータ圧縮器から受信するデータを解凍するデータ解凍器であって
、
前記第２のデータと前記第１のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルと、
前記第１のデータおよび前記第２のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定部と、
前記第１のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータを出力し、前記第２のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第２のデータに対応する第１のデータを取得し、取得した第１のデータを、他の第１のデータを記憶していない解凍エントリ領域に登録するとともに、前記第１のデータを出力する処理部と、を備える、
データ解凍器。
【請求項１１】
第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルを有するコンピュータが、変換テーブルのエントリ領域に第１のデータが登録されている場合には第１のデータに対応する第２のデータを出力し、前記変換テーブルのエントリ領域に第１のデータが登録されていない場合には前記第１のデータに対応する第２のデータを取得し、取得した第２のデータをエントリ領域に登録するとともに前記第１のデータを出力するデータ圧縮器から受信するデータを解凍するデータ解凍方法であって、
前記コンピュータが、
前記第１のデータおよび前記第２のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定ステップと、
前記第１のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータを出力し、前記第２のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第２のデータに対応する第１のデータを取得し、取得した第１のデータを、他の第１のデータを記憶していない解凍エントリ領域に登録するとともに、前記第１のデータを出力する処理ステップと、を実行する、
データ解凍方法。
【請求項１２】
第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルを有するコンピュータに、変換テーブルのエントリ領域に第１のデータが登録されている場合には第１のデータに対応する第２のデータを出力し、前記変換テーブルのエントリ領域に第１のデータが登録されていない場合には前記第１のデータに対応する第２のデータを取得し、取得した第２のデータをエントリ領域に登録するとともに前記第１のデータを出力するデータ圧縮器から受信するデータを解凍させるデータ解凍プログラムであって、
前記コンピュータに、
前記第１のデータおよび前記第２のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定ステップと、
前記第１のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータを出力し、前記第２のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第２のデータに対応する第１のデータを取得し、取得した第１のデータを、他の第１のデータを記憶していない解凍エントリ領域に登録するとともに、前記第１のデータを出力する処理ステップと、を実行させる、
データ解凍プログラム。
【請求項１３】
複数の第１のデータを含む第１のデータ列を前記第１のデータ列のサイズより小さいサイズの第２のデータ列に圧縮するデータ圧縮器と、前記データ圧縮器によって圧縮されたデータ列を解凍するデータ解凍器を含むデータ圧縮解凍システムであって、
前記データ圧縮器は、
前記第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルと、
前記複数の第１のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、
前記複数の第１のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータが記憶されている場合には、この記憶された前記第２のデータを出力し、前記第１のデータに対応する第２のデータが記憶されていない場合には、前記第１のデータに対応する第２のデータを取得し、取得した第２のデータを、他の第２のデータを記憶していないエントリ領域に登録するとともに、前記第１のデータを出力する処理部と、を備え、
前記データ解凍器は、
前記第２のデータと前記第１のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルと、
前記第１のデータおよび前記第２のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定部と、
前記第１のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータを出力し、前記第２のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第２のデータに対応する第１のデータを取得し、取得した第１のデータを、他の第１のデータを記憶していない解凍エントリ領域に登録するとともに、前記第１のデータを出力する処理部と、を備える、
データ圧縮解凍システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮器、データ圧縮方法、データ圧縮プログラム、データ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮解凍システムに関する。
【背景技術】
【０００２】
近年、送信側装置と受信側装置との間でストリームデータを伝送する場合に、送信側装置でストリームデータの圧縮を行う技術が提案されている。例えば、連続する２以上のシンボルが入力データとして入力された場合に、この入力データを１つのシンボルに変換する変換規則が辞書に登録されている場合、上記２以上のシンボルを１つのシンボルに変換する変換部と、変換部で上記２以上のシンボルが１つのシンボルに変換された場合は、当該１つのシンボルを出力し、そうでない場合は、２以上のシンボルを出力する出力部とを含むデータ圧縮器が提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２３６４４９号公報
【特許文献２】特開２０１６−１８４８３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記した１シンボルへの変換、すなわち圧縮は、入力データが辞書に登録されている場合に行われる。入力データに対応するデータを辞書から検索する処理は、当該処理をハードウェアにより実装する場合では、辞書に登録された複数のエントリ領域の夫々と入力データとの照合を並列に実行することで、検索時間の短縮化が図られる。これに対し、上記検索処理をソフトウェアで実装する場合、辞書に登録された複数のエントリ領域と入力データとの照合が各エントリ領域をひとつずつ探索していく逐次処理となる。そのため、検索処理がボトルネックとなって遅延が生じ、ストリームデータの伝送が適正に行われなくなるおそれがあった。また、ハードウェア回路で実現する場合には各エントリ領域をまとめて探索することが可能であるが、エントリ領域の数が増加すると回路構成が複雑化し、圧縮処理の高速化が困難となることがあった。
【０００５】
開示の技術の１つの側面は、変換規則の検索処理の所要時間が長時間化するのを回避し得る技術を提供することを課題とする。
【課題を解決するための手段】
【０００６】
開示の技術の１つの側面は、次のようなデータ圧縮器によって例示される。本データ圧縮器は、複数の第１のデータを含む第１のデータ列を前記第１のデータ列のサイズより小さいサイズの第２のデータ列に圧縮するデータ圧縮器であって、前記第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルと、前記複数の第１のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、前記複数の第１のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータが記憶されている場合には、この記憶された前記第２のデータを出力し、前記
第１のデータに対応する第２のデータが記憶されていない場合には、前記第１のデータに対応する第２のデータを取得し、取得した第２のデータを、他の第２のデータを記憶していないエントリ領域に登録するとともに、前記第１のデータを出力する処理部と、を備える。
【発明の効果】
【０００７】
開示の技術によれば、変換規則の検索処理の所要時間が長時間化するのを回避し得る。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１実施形態に係るデータ圧縮器と受信側装置の構成を例示する図である。
【図２】図２は、第１実施形態に係るデータ圧縮器の論理ブロックの一例を示す図である。
【図３】図３は、第１実施形態に係る変換テーブルの一例を示す図である。
【図４】図４は、バンク領域の一例を示す図である。
【図５】図５は、データ圧縮器のハッシュ関数による入力シンボルとバンク領域との対応付けを模式的に示す図である。
【図６】図６は、第１実施形態に係るデータ圧縮器が実行する圧縮処理の工程を模式的に示す処理フロー図である。
【図７】図７は、変換テーブルへレコードを追加する具体例を説明するための第１の図である。
【図８】図８は、変換テーブルへレコードを追加する具体例を説明するための第２の図である。
【図９】図９は、変換テーブルへレコードを追加する具体例を説明するための第３の図である。
【図１０】図１０は、変換テーブルへレコードを追加する具体例を説明するための第４の図である。
【図１１】図１１は、ストリームデータの圧縮を完了したときの変換テーブルの一例を示す図である。
【図１２】図１２は、データ解凍器の一例を示す論理ブロック図である。
【図１３】図１３は、データ解凍器の変換テーブルの一例を示す図である。
【図１４】図１４は、解凍バンク領域の一例を示す図である。
【図１５】図１５は、データ解凍器のハッシュ関数による入力シンボルと解凍バンク領域との対応付けを模式的に示す図である。
【図１６】図１６は、第１実施形態に係る解凍処理の工程を模式的に示す処理フロー図である。
【図１７】図１７は、変換テーブルの生成および更新を説明するための第１の図である。
【図１８】図１８は、変換テーブルの生成および更新を説明するための第２の図である。
【図１９】図１９は、変換テーブルの生成および更新を説明するための第３の図である。
【図２０】図２０は、第１実施形態に係るデータ圧縮器を４段連結した構成の一例を示す図である。
【図２１】図２１は、変換テーブルを分割するバンクの数と圧縮に係る処理時間との関係を示す図である。
【図２２】図２２は、変換テーブルを分割するバンク領域の数と圧縮率の関係を示す図である。
【図２３】図２３は、データ圧縮器がＤＮＡ構造データを圧縮した場合における、各バンク領域のヒット率を示す図である。
【図２４】図２４は、データ圧縮器がＤＮＡ構造データを圧縮した場合における、各バンクの占有数を示す図である。
【図２５】図２５は、第２実施形態に係るデータ圧縮器の一例を示す図である。
【図２６】図２６は、ヒット状況記録テーブルの一例を示す図である。
【図２７】図２７は、第２実施形態にヒット状況記録テーブルの更新処理を組み込んだ圧縮処理を模式的に示した図である。
【図２８】図２８は、第２実施形態における、バンク領域の変更処理を模式的に示した図である。
【図２９】図２９は、第２実施形態に係るデータ圧縮器を２段連結した構成の一例を示す図である。
【図３０】図３０は、ヒット率閾値および占有数閾値を変化させながら、第２実施形態に係るデータ圧縮器による圧縮率を検証した図である。
【図３１】図３１は、第３実施形態に係るデータ圧縮器の一例を示す図である。
【図３２】図３２は、第３実施形態に係る状態管理テーブルの一例を示す図である。
【図３３】図３３は、第３実施形態におけるバンク領域の分割を模式的に示す図である。
【図３４】図３４は、第３実施形態におけるバンク領域の統合を模式的に示す図である。
【図３５】図３５は、状態遷移モデルを模式的に示す図である。
【図３６】図３６は、ヒット率の変化とバンク領域の分割および統合の流れの一例を示す図である。
【図３７】図３７は、第３実施形態におけるバンク領域の分割および統合を模式的に示す第１の図である。
【図３８】図３８は、第３実施形態におけるバンク領域の分割および統合を模式的に示す第２の図である。
【図３９】図３９は、第３実施形態の処理フローを模式的に示す第１の図である。
【図４０】図４０は、第３実施形態の処理フローを模式的に示す第２の図である。
【図４１】図４１は、第３実施形態に係るデータ圧縮器の処理速度を検証した図である。
【図４２】図４２は、第３実施形態に係るデータ圧縮器の圧縮率を検証した図である。
【図４３】図４３は、第３実施形態に係るデータ圧縮器が、画像Ａ、画像Ｂおよび画像Ｃの３種類の４Ｋ画像を圧縮した場合の処理速度を検証した図である。
【図４４】図４４は、第３実施形態に係るデータ圧縮器が、画像Ａ、画像Ｂおよび画像Ｃの３種類の４Ｋ画像を圧縮した場合の圧縮率を検証した図である。
【図４５】図４５は、第４実施形態に係るデータ圧縮器のエントリ領域探索回路を模式的に示す図である。
【図４６】図４６は、第４実施形態において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。
【図４７】図４７は、比較例に係るエントリ領域探索回路を模式的に示す図である。
【図４８】図４８は、比較例において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。
【図４９】図４９は、第５実施形態に係るデータ解凍器のエントリ領域探索回路を模式的に示す図である。
【図５０】図５０は、第１変形例に係るエントリ領域探索回路を模式的に示す図である。
【図５１】図５１は、第２変形例に係るエントリ領域探索回路を模式的に示す図である。
【図５２】図５２は、第２変形例における、決定部からの選択信号、圧縮シンボルおよびインデックスの対応の一例を示す図である。
【発明を実施するための形態】
【０００９】
開示の技術に係るデータ圧縮器は、例えば、以下の構成を有する。
複数の第１のデータを含む第１のデータ列を前記第１のデータ列のサイズより小さいサイズの第２のデータ列に圧縮するデータ圧縮器であって、
前記第１のデータと前記第１のデータよりサイズの小さい第２のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数の連続したエントリ領域によって形成されている変換テーブルと、
前記複数の第１のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、
前記複数の第１のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記連続したエントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第１のデータに対応する前記第２のデータが記憶されている場合には、この記憶された前記第２のデータを出力し、前記第１のデータに対応する第２のデータが記憶されていない場合には、前記第１のデータに対応する第２のデータを取得し、取得した第２のデータを、他の第２のデータを記憶していないエントリ領域に登録するとともに、前記第１のデータを出力する処理部と、を備える、
データ圧縮器。
【００１０】
開示の技術に係るデータ圧縮器において、第１のデータは、第１のデータ列に含まれるシンボルのうち所定数の連続するシンボルである。第２のデータは第１のデータよりもサイズが小さい。換言すれば、第１のデータが含むシンボル数の方が、第２のデータが含むシンボル数よりも多いということができる。複数のバンク領域は、複数の記憶装置を集めることで形成されてもよく、１つの記憶装置のアドレスを論理的に分割して形成されてもよい。連続したエントリ領域とは、エントリ領域夫々の物理アドレスが連続していてもよいし、論理アドレスが連続していてもよい。
【００１１】
一意に決定とは、同じデータが入力されれば同じバンク領域が決定されることをいい、異なるデータに対して同じバンク領域が決定されることを妨げない。一意に決定とは、例えば、ハッシュ関数を用いて、第１のデータ（または、第１のデータが含む一部のデータ）に対するハッシュ値とバンク領域とを対応付け、同じ値を持つ第１のデータについて同じバンク領域が決定されればよい。なお、同じ値を持つ第１のデータについて同じバンク領域が決定されればハッシュ関数以外の手段を用いてもよい。
【００１２】
エントリ領域を前記所定数または前記所定数より少ない数ずつ探索とは、決定されたバンク内の各エントリ領域をひとつずつ探索して、第１のデータに対応する第２のデータが記憶されているエントリ領域を検索することを含む。エントリ領域を探索する順番には限定は無く、バンクの先頭のエントリ領域から最後尾のエントリ領域へ向けて探索を行ってもよいし、バンクの最後尾のエントリ領域から先頭のエントリ領域へ向けて探索を行ってもよい。また、入力されるデータとエントリ領域とを対応付けておき、当該対応に基づいてエントリ領域を探索してもよい。入力されるデータとエントリ領域との対応付けにはハッシュ関数を用いてもよい。
【００１３】
上記したデータ圧縮器では、所定数のエントリ領域を有する変換テーブルが、所定数より少ない数の連続したエントリ領域によって形成される複数のバンク領域に区分けされる。データ圧縮器は、複数の第１のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定し、決定したバンク領域内のエントリ領域を所定数または所定数より少ない数ずつ探索して第１のデータの圧縮処理を実行する。そのため、このようなデータ圧縮器によれば、探索する範囲を変換テーブル全体よりも狭めることができ、変
換テーブルに登録される変換規則の検索処理の所要時間が長時間化するのを回避し得る。
【００１４】
開示の技術は、さらに、データ圧縮方法、データ圧縮プログラムおよび上記したデータ圧縮器によって圧縮されたデータを解凍するデータ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮器とデータ解凍器とを含むデータ圧縮解凍システムの側面から把握することも可能である。
【００１５】
上記したデータ圧縮器、データ圧縮方法、データ圧縮プログラム、データ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮解凍システムの実施形態について、以下、図面を参照して、説明する。実施形態に係るデータ圧縮器は、受信側装置へ送信するデータ（例えば、ストリームデータ）に対する圧縮処理を行い、圧縮データを伝送路を介して受信側装置に送出する。以下に説明する実施形態の構成は例示であり、開示の技術は実施形態の構成に限定されない。
【００１６】
＜第１実施形態＞
図１は、第１実施形態に係るデータ圧縮器と受信側装置の構成を例示する図である。データ圧縮器１０と受信側装置２０とは、伝送路８００を介して通信可能に接続される。図１に例示するデータ圧縮器１０は、Central Processing Unit（ＣＰＵ）７０１、主記憶
部７０２、補助記憶部７０３、通信部７０４および接続バスＢ１を含む情報処理装置である。ＣＰＵ７０１、主記憶部７０２、補助記憶部７０３および通信部７０４は、接続バスＢ１によって相互に接続されている。
【００１７】
ＣＰＵ７０１は、マイクロプロセッサユニット（ＭＰＵ）、プロセッサとも呼ばれる。ＣＰＵ７０１は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵ７０１がマルチコア構成を有していても良い。ＣＰＵ７０１が実行する処理のうち少なくとも一部は、ＣＰＵ７０１以外のプロセッサ、例えば、Digital Signal Processor（ＤＳＰ）、Graphics Processing Unit（ＧＰＵ）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、ＣＰＵ７０１が実行する処理のうち少なくとも一部は、集積回路（ＩＣ）、その他のディジタル回路によって実行されてもよい。また、ＣＰＵ７０１の少なくとも一部にアナログ回路が含まれても良い。集積回路は、Large Scale Integrated circuit（ＬＳＩ）、Application Specific Integrated Circuit（ＡＳ
ＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）を含む。ＰＬＤは、例えば、Field-Programmable Gate Array（ＦＰＧＡ）を含む。ＣＰＵ７０１は、プロセッサと集積回路
との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラユニット（ＭＣＵ）、System-on-a-chip（ＳｏＣ）、システムＬＳＩ、チップセットなどと呼ばれる。情報処理装置７００では、ＣＰＵ７０１が補助記憶部７０３に記憶されたプログラムを主記憶部７０２の作業領域に展開し、プログラムの実行を通じて周辺装置の制御を行う。これにより、情報処理装置７００は、所定の目的に合致した処理を実行することができる。主記憶部７０２および補助記憶部７０３は、情報処理装置７００が読み取り可能な記録媒体である。
【００１８】
主記憶部７０２は、ＣＰＵ７０１から直接アクセスされる記憶部として例示される。主記憶部７０２は、Random Access Memory（ＲＡＭ）およびRead Only Memory（ＲＯＭ）を含む。
【００１９】
補助記憶部７０３は、各種のプログラムおよび各種のデータを読み書き自在に記録媒体に格納する。補助記憶部７０３には、第１実施形態に係るデータ圧縮プログラムＰも格納される。補助記憶部７０３は外部記憶装置とも呼ばれる。補助記憶部７０３には、オペレーティングシステム（Operating System、ＯＳ）、各種プログラム、各種テーブル等が格
納される。ＯＳは、通信部７０４を介して接続される外部装置等とのデータの受け渡しを行う通信インターフェースプログラムを含む。外部装置等には、例えば、コンピュータネットワーク等で接続された、他の情報処理装置および外部記憶装置が含まれる。
【００２０】
補助記憶部７０３は、例えば、Erasable Programmable ROM（ＥＰＲＯＭ）、ソリッド
ステートドライブ（Solid State Drive、ＳＳＤ）、ハードディスクドライブ（Hard Disk
Drive、ＨＤＤ）等である。また、補助記憶部７０３は、例えば、Compact Disc（ＣＤ）ドライブ装置、Digital Versatile Disc（ＤＶＤ）ドライブ装置、Blu-ray（登録商標）Disc（ＢＤ）ドライブ装置等である。
【００２１】
通信部７０４は、例えば、伝送路８００とのインターフェースである。通信部７０４は、伝送路８００を介して受信側装置２０と通信を行う。
【００２２】
受信側装置２０は、上記で説明したデータ圧縮器１０と同様のハードウェア構成を有する情報処理装置である。
【００２３】
図２は、第１実施形態に係るデータ圧縮器の論理ブロックの一例を示す図である。データ圧縮器１０は、上記の通り、ストリームデータに対する圧縮処理（可逆圧縮処理または非可逆圧縮処理）を行い、少なくとも一部が圧縮されたストリームデータを出力する。なお、ストリームデータは、テキストデータであってもバイナリデータであってもよい。また、データ圧縮器１０は、固定長の処理単位であるシンボルの列としてストリームデータを扱う。１シンボルのサイズは任意に決定でき、例えば、ストリームデータがテキストデータである場合、２文字とすることができる。
【００２４】
データ圧縮器１０は、変換テーブル１０１、決定部１０２および処理部１０３を含む。データ圧縮器１０は、ＣＰＵ７０１が補助記憶部７０３に記憶されたデータ圧縮プログラムＰを主記憶部７０２に読み出して実行することで、変換テーブル１０１、決定部１０２および処理部１０３を実現する。
【００２５】
変換テーブル１０１は、圧縮前のデータと圧縮後のデータの対応関係を記憶可能なエントリ領域を複数有する。変換テーブル１０１は、例えば、補助記憶部７０３に記憶される。図３は、第１実施形態に係る変換テーブルの一例を示す図である。図３に例示される変換テーブル１０１は、圧縮前のデータと圧縮前のデータよりもデータサイズの小さい圧縮後のデータとの対応関係を記憶可能なエントリ領域１０１１を１６個有する。エントリ領域１０１１は、論理アドレスまたは物理アドレス（以下、論理アドレスと物理アドレスを特に区別しない場合「アドレス」と称する）にしたがった順に連続して並んでいる。変換テーブル１０１が有する１６個のエントリ領域１０１１は、４個のバンク領域１０１２に区分けされる。バンク領域１０１２の夫々は、４個のエントリ領域１０１１を有する。以下、本明細書において、バンク領域１０１２の夫々を区別する場合には、アドレス順にしたがって、バンク領域１、バンク領域２、バンク領域３、バンク領域４とも称する。
【００２６】
図４は、バンク領域の一例を示す図である。バンク領域は、変換の対象となる２つのシンボル「被圧縮シンボル列」（すなわち、変換前のシンボル列）と、圧縮処理によって変換される１つのシンボル「圧縮シンボル」（すなわち、変換後のシンボル）と、当該圧縮シンボルへのアクセス回数を表す「参照頻度」とを各エントリ領域１０１１において対応付けて管理するテーブルである。エントリ領域１０１１に登録される情報をレコードとも称する。なお、入力シンボル列に含まれる２つのシンボルを、便宜上、「シンボル０」、「シンボル１」と称する。第１実施形態において、エントリ領域１０１１のレコードは動的に追加および削除されるが、処理の開始時においてあらかじめ何らかのレコードがエントリ領域１０１１に登録されていてもよい。第１実施形態では、図４に示す１つの英字が
１つのシンボルを表すものとする。
【００２７】
決定部１０２は、データ圧縮器１０に圧縮対象となるストリームデータが入力されると、入力されたストリームデータに含まれる連続するシンボル列（例えば、２文字のシンボルであり、「シンボルペア」とも称する）の圧縮処理に使用するバンク領域１０１２を決定する。バンク領域１０１２の決定では、決定部１０２は、ハッシュ関数１０２１を用いる。ハッシュ関数１０２１は、演算結果がバンク領域の何れかに対応付けられており、同一の入力値に対して一意に定まる演算結果を出力する。決定部１０２は、入力されたシンボルペアの一部のデータに対してこのようなハッシュ関数１０２１による演算を行って演算結果を取得し、取得した演算結果に対応するバンク領域１０１２を当該シンボルペアの圧縮処理に使用するバンク領域１０１２として決定する。なお、シンボルペアの一部のデータとは、例えば、シンボルペアの下位２ビットである。
【００２８】
処理部１０３は、決定部１０２が決定したバンク領域１０１２を用いて、シンボルペアの圧縮処理を行う。処理部１０３は、バンク領域１０１２の各エントリ領域１０１１をひとつずつ探索し、決定したバンク領域１０１２のいずれかのエントリ領域１０１１において、シンボルペアを圧縮前のデータとするレコードが登録されている場合、すなわち、シンボルペアに対応する圧縮後のシンボルが登録されている場合には、シンボルペアを圧縮後のシンボルに変換して出力する。また、検索の結果、決定したバンク領域１０１２のいずれのエントリ領域１０１１にもシンボルペアを圧縮前のデータとするレコードが登録されていない場合、すなわち、シンボルペアに対応する圧縮後のシンボルが登録されていない場合には、シンボルペアを圧縮せずにそのまま出力し、当該シンボルペアを圧縮前のシンボルとするレコードを、レコードが登録済みのエントリ領域１０１１と連続するエントリ領域１０１１に登録する。
【００２９】
さらに、処理部１０３は、ストリームデータに含まれるシンボルの出現頻度に応じて、バンク領域１０１２に対してエントリ領域１０１１に登録されるレコードの追加および削除を実行する。
【００３０】
＜データ圧縮器のハッシュ関数＞
図５は、データ圧縮器のハッシュ関数による入力シンボルとバンク領域との対応付けを模式的に示す図である。ハッシュ関数１０２１は、図３に例示されるように、入力シンボルとバンク領域とを対応付ける。図５に模式的に示されるハッシュ関数１０２１では、例えば、シンボル「ＡＡ」は「バンク領域１」に対応付けられる。
【００３１】
＜圧縮処理＞
図６は、第１実施形態に係るデータ圧縮器が実行する圧縮処理の工程を模式的に示す処理フロー図である。ステップＳ１では、データ圧縮器１０の処理部１０３は、変換テーブル１０１の各バンク領域（バンク領域１〜バンク領域４）のエントリを初期化する。ステップＳ１では、例えば、各バンクのエントリを全て削除してもよいし、所定のエントリをあらかじめ登録してもよい。
【００３２】
ステップＳ２では、データ圧縮器１０の決定部１０２は、ストリームデータからシンボルペアを抽出する。ステップＳ３では、決定部１０２は、ステップＳ２で抽出したシンボルペアに対応付けられたバンク領域１０１２を、ハッシュ関数１０２１を用いて決定する。ステップＳ３の処理は、「決定ステップ」の一例である。
【００３３】
ステップＳ４では、データ圧縮器１０の処理部１０３は、シンボルペアが非圧縮シンボル列として登録されているか、ステップＳ２において決定されたバンク領域１０１２を検索する。
【００３４】
シンボルペアを非圧縮シンボル列として保持するエントリ領域１０１１がバンク領域１０１２に登録されている場合（ステップＳ５において、ＹＥＳ）、処理部１０３は当該エントリに登録されている圧縮シンボルを出力する（ステップＳ６）。
【００３５】
一方、シンボルペアを非圧縮シンボル列として保持するエントリ領域１０１１がバンク領域１０１２に登録されていない場合（ステップＳ５において、ＮＯ）、処理部１０３は、ステップＳ２で抽出されたシンボルペアを順に出力する（ステップＳ６）。また、処理部１０３は、当該シンボルペアを非圧縮シンボル列とするエントリを、ステップＳ３で選定したバンクに登録する（ステップＳ８）。ステップＳ４からＳ８の処理は、「処理ステップ」の一例である。
【００３６】
そして、ステップＳ６またはＳ８の後、ストリームデータに後続のシンボルペアが存在する場合（ステップＳ９において、ＹＥＳ）、ステップＳ２に戻って処理を繰り返す。一方、ストリームデータに後続のシンボルペアが存在しない場合（ステップＳ９において、ＮＯ）、圧縮処理を終了する。なお、ストリームデータの最後がシンボルペアを構成しない１つのシンボルである場合には、当該シンボルをそのまま出力すればよい。なお、上述のフローは一例であり、一部の処理の順番を入れ替えたり並列に行ったりしてもよい。例えば、ステップＳ７とステップＳ８の順序を逆にしてもよい。
【００３７】
＜変換テーブルの生成および更新＞
次に、図５に模式的に対応関係を示したハッシュ関数１０２１と図７~図１１とを用い
て、変換テーブル１０１へレコードを追加する具体例を説明する。図７~図１１は、変換
テーブル１０１の生成および更新を説明するための図である。この例では、「ＡＡＢＢＡＡＡＢＡＤＡＣＢＢ」というストリームデータ（「入力データ」と称する）をデータ圧縮器１０が圧縮し、圧縮したデータを送信するものとする。また、データ圧縮器１０は、入力データを２シンボルずつ処理する。すなわち、「ＡＡ」、「ＢＢ」、「ＡＡ」・・・という単位で処理をする。
【００３８】
まず、図７に示すように、処理開始前の初期的な変換テーブル１０１では、バンク領域１〜バンク領域４のいずれのエントリにもレコードが登録されていないものとする。また、変換テーブル１０１の各バンク領域１０１２の最大エントリ数（量）は、それぞれ２とする。そして、図８に示すように、入力データのうち先頭のシンボルペア「ＡＡ」が入力されると、決定部１０２は、ハッシュ関数１０２１を用いて、シンボルペア「ＡＡ」の圧縮処理に用いるバンク領域としてバンク領域を決定する。
【００３９】
処理部１０３は、決定したバンク領域１の各エントリ領域１０１１をアドレス順に検索する。図７に示すように、決定したバンク領域１には、被圧縮シンボル列として「ＡＡ」が登録されたエントリ領域１０１１が存在しない（すなわち、バンク領域１のエントリにヒットしない）。そのため、処理部１０３は、シンボルペア「ＡＡ」を変換せずに出力する。併せて、処理部１０３は、変換テーブル１０１のバンク領域１に、シンボルペア「ＡＡ」を被圧縮シンボル列とするエントリを追加する。なお、当該エントリ領域１０１１のレコードには、圧縮シンボルとして、他の圧縮シンボルと重複しない値が割り当てられる。圧縮シンボルは、例えば、エントリに付される添数（インデックス）であってもよい。図８の例では、圧縮シンボルとして「０」が登録されている。また、当該エントリの参照頻度として、当該シンボルペアの出現回数を示す「１」が登録される。
【００４０】
このように決定部１０２が入力ストリームの各シンボルペアに対して圧縮に使用するバンク領域１０１２を決定し、処理部１０３が決定したバンク領域１０１２をアドレス順に検索する。処理部１０３は、決定したバンク領域１０１２においてシンボルペアが登録さ
れたエントリ領域１０１１が存在しない場合には、上記の通り、シンボルペアを変換せずに出力する。併せて、処理部１０３は、変換テーブル１０１のバンク領域１に、シンボルペア「ＡＡ」を被圧縮シンボル列とするレコードを追加する。
【００４１】
また、処理部１０３は、決定したバンク領域１０１２においてシンボルペアが登録されたエントリ領域１０１１が存在する場合には、当該エントリ領域１０１１においてシンボルペアに対応付けられる圧縮シンボルを出力するとともに、当該エントリ領域１０１１の参照頻度に「１」を加算する。
【００４２】
バンク領域１０１２が有するエントリ領域１０１１の数は有限であるため、このような処理を継続すると、いずれかのバンク領域１０１２において空いているエントリ領域１０１１が枯渇することがある。図９は、バンク領域１において空いているエントリ領域１０１１が枯渇した状態の一例を示す図である。この状態において、シンボルペア「ＡＣ」の圧縮処理を行う場合を考える。シンボルペア「ＡＣ」はハッシュ関数１０２１によってバンク領域１に対応付けられており、かつ、シンボルペア「ＡＣ」はバンク領域１のいずれのエントリ領域１０１１にも登録されていない。そのため、処理部１０３は、シンボルペア「ＡＣ」を変換せずに出力するとともに、シンボルペア「ＡＣ」をバンク領域１に登録しようとする。しかしながら、バンク領域１には、空いているエントリ領域１０１１が無いため、このままではシンボルペア「ＡＣ」を登録することはできない。
【００４３】
このような場合、処理部１０３は、バンク領域１の各エントリ領域１０１１の参照頻度を「１」減算する。処理部１０３は、参照頻度の減算結果が「０」になったレコードを削除することで、空いているエントリ領域１０１１を確保する。ここでは、参照頻度を「１」減算すると、被圧縮シンボル列としてシンボルペア「ＡＢ」のレコードにおいて参照頻度が０になる。そのため、被圧縮シンボル列としてシンボルペア「ＡＢ」のレコードが削除されて、当該レコードを記憶していたエントリ領域１０１１が空き領域となる。
【００４４】
このような処理を行うことで、処理部１０３は、空き領域となったエントリ領域１０１１にシンボルペア「ＡＣ」を被圧縮シンボルとするレコードを空き領域となったエントリ領域１０１１に記憶させることができる。図１０は、シンボルペア「ＡＣ」を被圧縮シンボルとするレコードを空き領域となったエントリ領域に記憶させた状態の一例を示す図である。
【００４５】
図１１は、ストリームデータの圧縮を完了したときの変換テーブルの一例を示す図である。以上説明した処理を継続することで、データ圧縮器１０は、ストリームデータ、「ＡＡＢＢＡＡＡＢＡＤＡＣＢＢ」を圧縮したストリームデータ「ＡＡＢＢ０ＡＢＡＤＡＣ４」を出力することができる。
【００４６】
以上のようなデータ圧縮器１０によれば、シンボルペアを１つの圧縮シンボルに置き換えた分だけ、伝送路８００を流れるデータ量を削減することができる。また、処理単位を固定長のシンボルとすること等により、処理に要する時間を一定以下に抑えることができる。また、入力データに含まれるシンボルの出現傾向に基づいて変換テーブルにエントリを追加するため、事前に変換テーブルを用意しなくともよい。このように、ストリームデータをリアルタイムに圧縮する場合において、ストリームデータの傾向に沿った変換規則を生成および適用できるようになる。
【００４７】
さらに、データ圧縮器１０は、所定数のエントリ領域１０１１を有する変換テーブル１０１を、当該所定数よりも少ないエントリ数の複数のバンク領域に分割することで、変換テーブル１０１を検索する検索範囲を狭めることができる。そのため、被圧縮シンボルに対応する圧縮シンボルをひとつずつ探索して検索する検索時間を短縮できる。
【００４８】
データ圧縮器１０が可逆圧縮を行う場合、被圧縮シンボルを圧縮シンボルに圧縮して出力したか否かを示す付加ビットを出力してもよい。付加ビットは、例えば、出力されるシンボルが変換後のシンボルである場合には「１」、変換後のシンボルでない場合には「０」である。すなわち、データ圧縮器は、被圧縮シンボルを圧縮シンボルに圧縮して出力する際には当該圧縮シンボルに付加ビットとして「１」を付加し、被圧縮シンボルを圧縮せずに出力する場合には付加ビットとして「０」を付加すればよい。
【００４９】
＜データ解凍器＞
データ圧縮器１０が可逆圧縮したストリームデータを出力する場合、図１に示した受信側装置２０は、受信したストリームデータを解凍するデータ解凍器２０として機能すればよい。データ解凍器２０は、例えば、図１に例示したデータ圧縮器１０と同様のハードウェア構成を有する情報処理装置である。図１２は、データ解凍器の一例を示す論理ブロック図である。データ解凍器２０は、変換テーブル２０１、決定部２０２および処理部２０３を含む。データ解凍器２０は、データ圧縮器１０が可逆圧縮したストリームデータを解凍する。
【００５０】
データ解凍器２０は、変換テーブル２０１、決定部２０２および処理部２０３を含む。データ解凍器２０は、データ解凍器２０のＣＰＵ７０１が補助記憶部７０３に記憶されたデータ解凍プログラムを主記憶部７０２に読み出して実行することで、変換テーブル２０１、決定部２０２および処理部２０３を実現する。
【００５１】
変換テーブル２０１は、解凍前のデータとの解凍後データの対応関係を記憶可能なエントリ領域を複数有する。変換テーブル２０１は、例えば、補助記憶部７０３に記憶される。図１３は、データ解凍器の変換テーブルの一例を示す図である。図１３に例示される変換テーブル２０１は、解凍前のデータと解凍後のデータとの対応関係を記憶可能なエントリ領域２０１１を１６個有する。エントリ領域２０１１は、アドレスにしたがった順に連続して並んでいる。変換テーブル２０１が有する１６個のエントリ領域２０１１は、４個のバンク領域２０１２に区分けされる。バンク領域２０１２の夫々は、４個のエントリ領域２０１１を有する。以下、本明細書において、バンク領域２０１２の夫々を区別する場合には、アドレス順にしたがって、解凍バンク領域１、解凍バンク領域２、解凍バンク領域３、解凍バンク領域４とも称する。変換テーブル２０１は、「解凍変換テーブル」の一例である。エントリ領域２０１１は、「解凍エントリ領域」の一例である。
【００５２】
図１４は、解凍バンク領域の一例を示す図である。解凍バンク領域は、解凍の対象となる１つのシンボル「被解凍シンボル列」（すなわち、解凍前のシンボル列）と、解凍処理によって変換される２つのシンボル「解凍シンボル」（すなわち、解凍後のシンボル）と、当該被解凍シンボルへのアクセス回数を表す「参照頻度」とを各エントリ領域２０１１において対応付けて管理するテーブルである。エントリ領域２０１１に登録される情報をレコードとも称する。なお、入力シンボル列に含まれる２つのシンボルを、便宜上、「シンボル０」、「シンボル１」と称する。第１実施形態において、エントリ領域２０１１のレコードは動的に追加および削除されるが、処理の開始時においてあらかじめ何らかのレコードがエントリ領域１０１１に登録されていてもよい。第１実施形態では、図１４に示す１つの英字が１つのシンボルを表すものとする。
【００５３】
決定部２０２は、データ解凍器２０に解凍対象となるストリームデータが入力されると、シンボルを抽出し、当該シンボルに付加されている付加ビットを確認する。付加ビットとして「０」が付加されている場合、すなわち、抽出したシンボルが圧縮されていない場合には、決定部１０２は、抽出したシンボルと当該シンボルの次のシンボルとを併せて２つのシンボルペアの解凍処理に使用するバンク領域２０１２を決定する。付加ビットとし
て「１」が付加されている場合、すなわち、抽出したシンボルが圧縮されている場合には、決定部２０２は、抽出したシンボルの解凍処理に使用するバンク領域２０１２を決定する。
【００５４】
バンク領域２０１２の決定では、決定部２０２は、ハッシュ関数２０２１を用いる。ハッシュ関数２０２１は、演算結果が解凍バンク領域の何れかに対応付けられており、同一の入力値に対して一意に定まる演算結果を出力する。決定部２０２は、抽出したシンボルが圧縮されている場合、抽出したシンボルの一部のデータに対してハッシュ関数２０２１による演算を行って演算結果を取得する。また、決定部２０２は、抽出したシンボルが圧縮されていない場合、抽出したシンボルと当該シンボルの次のシンボルとを併せたシンボルペアの一部のデータに対してハッシュ関数２０２１による演算を行って演算結果を取得する。取得した演算結果に対応するバンク領域２０１２を当該シンボルの解凍処理に使用するバンク領域２０１２として決定する。
【００５５】
処理部２０３は、決定部２０２が決定したバンク領域２０１２を用いて、解凍処理を行う。解凍処理では、処理部２０３は、バンク領域２０１２の各エントリ領域２０１１をひとつずつ探索する。処理部２０３は、付加ビットとして「０」が付加されている場合には、当該シンボルペアを解凍後のシンボルペアとするレコードを決定したバンク領域２０１２において、レコードが登録済みのエントリ領域２０１１と連続するエントリ領域２０１１に登録するとともに、当該シンボルペアを出力する。
【００５６】
処理部２０３は、付加ビットとして「１」が付加されている場合には、決定したバンク領域２０１２のエントリ領域２０１１をアドレス順に検索する。処理部２０３は、当該シンボルを解凍前のシンボルとしたレコードが登録されている場合、当該レコードにおいて当該シンボルに対応付けられた解凍後のシンボルペアを出力する。
【００５７】
さらに、処理部２０３は、ストリームデータに含まれるシンボルの出現頻度に応じて、バンク領域２０１２に対してエントリ領域２０１１に登録されるレコードの追加および削除を実行する。
【００５８】
＜データ解凍器のハッシュ関数＞
図１５は、データ解凍器のハッシュ関数による入力シンボルと解凍バンク領域との対応付けを模式的に示す図である。ハッシュ関数２０２１は、図１５に例示されるように、入力シンボルと解凍バンク領域とを対応付ける。図１５に模式的に示されるハッシュ関数２０２１では、例えば、シンボル「０」は「バンク領域１」に対応付けられる。データ解凍器２０のハッシュ関数２０２１は、入力シンボルとして圧縮前のシンボルペアと圧縮後のシンボルのいずれもが入力され得る点で、データ圧縮器１０のハッシュ関数１０２１とは異なる。
【００５９】
＜解凍処理＞
図１６は、第１実施形態に係る解凍処理の工程を模式的に示す処理フロー図である。図１６に例示される処理フローは、「データ解凍方法」の一例である。ステップＳ１１では、データ解凍器２０の決定部２０２は、変換テーブル２０１の各バンク領域２０１２（解凍バンク領域１〜解凍バンク領域４）のエントリを初期化する。本ステップでは、例えば、各バンク領域２０１２のレコードを全て削除してもよいし、所定のレコードをあらかじめ登録してもよい。
【００６０】
ステップＳ１２では、データ解凍器２０の決定部２０２は、ストリームデータからシンボルおよび付加ビットを抽出する。ステップ１２で抽出したシンボルが圧縮シンボルである場合、すなわち、付加ビットが１である場合（ステップＳ１３においてＹＥＳ）、決定
部２０２は、ハッシュ関数２０２１を用いて圧縮シンボルに対応するバンクを選定し、（ステップＳ１４）。選定したバンクから復号シンボル列を出力させる（ステップＳ１５）。
【００６１】
一方、ステップ１２で抽出したシンボルが圧縮シンボルではない場合、すなわち、付加ビットが０である場合（ステップＳ１３においてＮＯ）、決定部２０２は、抽出したシンボルを処理部２０３に渡すとともに、当該シンボルが圧縮シンボルではない旨を処理部２０３に通知する。処理部２０３は、決定部２０２から受け取ったシンボルと、当該シンボルの次のシンボルとを併せて２つのシンボル（シンボルペア）を出力する（ステップＳ１６）。また、ステップＳ１７において、決定部２０２は、ハッシュ関数２０２１を用いて、ステップＳ１６のシンボルペアに対応するバンクを選定する。また、処理部２０３は、当該シンボルペアを復号シンボル列とするエントリを、ステップＳ１７で選定したバンクに登録する（ステップＳ１８）。なお、ステップＳ１６、Ｓ１７およびＳ１８の処理を実行する順序は、並列であってもよいし、入れ替えてもよい。
【００６２】
ステップＳ１５またはＳ１８の後、ストリームデータに後続のシンボルが存在する場合（ステップＳ１９において、ＹＥＳ）、ステップＳ１２に戻って処理を繰り返す。一方、ストリームデータに後続のシンボルが存在しない場合（ステップＳ１９において、ＮＯ）、解凍処理を終了する。
【００６３】
＜変換テーブルの生成および更新＞
次に、図１５に模式的に示したハッシュ関数２０２１と図１７〜図１９を用いて、変換テーブル２０１へエントリを追加する具体例を説明する。図１７〜図１９は、変換テーブルの生成および更新を説明するための図である。この例では、「ＡＡＢＢ０ＡＢＡＤＡＣ４」というストリームデータ（「入力データ」と称する）が伝送路８００を介してデータ解凍器２０へ送られてきたものとする。
【００６４】
まず、図１７に示すように、処理開始前の初期的な変換テーブル２０１では、解凍バンク領域１〜解凍バンク領域４のいずれにもレコードが登録されていないものとする。また、変換テーブル２０１の各解凍バンク領域の最大エントリ数（量）は、それぞれ２とする。また、入力データのうち先頭のシンボル「Ａ」が入力されるとともに、付加ビットとして「０」が入力されるものとする。すなわち、シンボル「Ａ」は圧縮シンボルではないため、図１８に示すように、次のシンボルと併せたシンボルペア「ＡＡ」を読み出す。
【００６５】
決定部２０２は、ハッシュ関数２０２１を用いて、シンボルペア「ＡＡ」に対応付けられたバンク領域２０１２として解凍バンク領域１を選定する。決定部２０２は、決定した解凍バンク領域１に対しシンボルペア「ＡＡ」を解凍前のシンボル列とし、解凍後のシンボルとして「０」を登録する。ここで、解凍後のシンボルとして登録される「０」は、データ圧縮器１０と同様に、変換テーブル２０１のインデックスを利用している。また、当該レコードの参照頻度として、当該シンボルの出現回数を示す「１」が登録される。処理部２０３は、決定部２０２が読み出したシンボルペア「ＡＡ」を出力する。
【００６６】
次に、入力データのうちの次のシンボル「Ｂ」も圧縮シンボルではないと判定され、シンボルペア「ＢＢ」が読み出され、読み出されたシンボルペア「ＢＢ」が出力される。さらに、決定部２０２は、ハッシュ関数２０２１を用いて、シンボルペア「ＢＢ」に対応付けられたバンク領域をバンク領域３に決定する。処理部２０３は、決定したバンク領域３に対しシンボルペア「ＢＢ」を復号シンボル列とし、圧縮シンボルとして上記したように変換テーブル２０１のインデックスである「４」を登録する。また、当該エントリの参照頻度として、当該シンボルの出現回数を示す「１」が登録される。
【００６７】
その後、決定部２０２が次のシンボル「０」を抽出すると、付加ビットとして「１」が入力される。決定部２０２は、ハッシュ関数２０２１を用いて、シンボル「０」の解凍処理に用いるバンク領域２０１２として解凍バンク領域１を決定する。処理部２０３は、決定した解凍バンク領域１において、解凍前のシンボル「０」に対応付けられる解凍後のシンボルペアを出力し、当該レコードの参照頻度に「１」を加算する。
【００６８】
このような処理を繰り返しながら解凍処理を継続すると、いずれかのバンク領域２０１２において空いているエントリ領域２０１１が枯渇することがある。このような場合、処理部２０３は、データ圧縮器１０の処理部１０３と同様に、ハッシュ関数２０２１によって決定したバンク領域２０１２に登録されている各レコードの参照頻度を「１」減算し、参照頻度が「０」になったレコードをバンク領域２０１２から削除することで、空いているエントリ領域２０１１を確保し、確保したエントリ領域２０１１に新たなレコードを追加すればよい。
【００６９】
以上のような解凍処理を実行することで、データ解凍器２０は、図１９に例示されるように、入力ストリーム「ＡＡＢＢ０ＡＢＡＤＡＣ４」を解凍したストリーム「ＡＡＢＢＡＡＡＢＡＤＡＣＢＢ」を出力する。
【００７０】
以上のようなデータ解凍器２０によれば、データ圧縮器１０が可逆圧縮したストリームデータを復号することができる。また、処理単位を固定長のシンボルとすること等により、処理に要する時間を一定以下に抑えることができる。また、ストリームデータに含まれるシンボルの出現傾向に基づいてデータ圧縮器１０側と同様のルールで変換テーブルにエントリを追加するため、事前に変換テーブルを用意しなくともよい。このように、ストリームデータをリアルタイムに解凍する場合において、ストリームデータの傾向に沿った変換規則を生成および適用できるようになる。
【００７１】
さらに、データ解凍器２０は、所定数のエントリ領域２０１１を有する変換テーブル２０１を、当該所定数よりも少ないエントリ数の複数のバンク領域に分割することで、変換テーブル２０１を検索する検索範囲を狭めることができる。そのため、データ解凍器２０は、変換テーブルを検索する処理時間を短縮でき、ひいてはデータ解凍にかかる処理時間を短縮できる。
【００７２】
＜検証＞
上記したデータ圧縮器１０について、変換テーブルを分割するバンクの数を変化させたときの処理時間および圧縮率について検証を実施したので、図面を参照して説明する。本検証では、エントリ数が２５６である変換テーブル１０１を有するデータ圧縮器１０を４段連結し、バンク数を１、２、４、８、１６のそれぞれの場合における、圧縮処理の処理時間および圧縮率を計測した。
【００７３】
図２０は、第１実施形態に係るデータ圧縮器を４段連結した構成の一例を示す図である。図２０に例示されるように、１段目のデータ圧縮器１０に入力ストリームデータが入力されると、１段目のデータ圧縮器１０は、当該入力ストリームデータに対する圧縮処理を行った圧縮データを２段目のデータ圧縮器１０に出力する。２段目のデータ圧縮器１０は、１段目のデータ圧縮器１０が圧縮した圧縮データに対する圧縮処理を行った圧縮データを３段目のデータ圧縮器１０に出力する。このような処理を４段目のデータ圧縮器１０まで継続して実行する。
【００７４】
第１実施形態に係るデータ圧縮器１０は、シンボルペアを一つのシンボルに変換するため、圧縮前のデータサイズに対する圧縮後のデータサイズの割合である圧縮率は最大でも５０％である。図２０に例示するように、データ圧縮器１０を複数連結することで圧縮デ
ータに対する圧縮処理をさらに実行することができるため、圧縮率を高めることができる。
【００７５】
図２１は、変換テーブルを分割するバンクの数と圧縮に係る処理時間との関係を示す図である。図２１では、縦軸に処理時間、横軸にバンクの数が示される。また、図２１に示す検証では、ファイルサイズ１０ＭＢのテキストデータを用い、データの内容は６種類（Deoxyribonucleic Acid（ＤＮＡ）構造データ、eXtensible Markup Language（ＸＭＬ）
データ、Musical Instrument Digital Interface（ＭＩＤＩ）データ、タンパク質構造のデータ、プログラムのソースコードおよび英文のテキストデータ）用意し、これらのデータについて、それぞれ検証を行った。図２１において、バンク領域の数が「１」とは、変換テーブルを複数のバンク領域に分割せずに圧縮処理を行った場合を示す。
【００７６】
図２１を参照すると、変換テーブルを分割するバンク領域の数を増加させると、処理時間を短縮できることが理解できる。これは、バンク領域の数が増加する毎に、被圧縮シンボルを検索する範囲が狭くなる（すなわち、検索対象とするエントリ領域の数が減少する）ため、被圧縮シンボルに対応する圧縮シンボルを検索する処理が高速化されるためであると考えられる。
【００７７】
図２２は、変換テーブルを分割するバンク領域の数と圧縮率の関係を示す図である。図２２では、縦軸に圧縮率、横軸にバンクの数が示される。図２２に示す検証では、図２１に示す検証と同様のテキストデータを用いた。図２２において、バンク領域の数が「１」とは、図２１の場合と同様に、変換テーブルを複数のバンク領域に分割せずに圧縮処理を行った場合を示す。
【００７８】
図２２を参照すると理解できるように、ＤＮＡ構造データを除く５種類のデータにおいて、圧縮率の悪化は見られなかった。また、ＤＮＡ構造データについては、バンク領域の数が４までであれば、圧縮率の低下は見られない。図２１および図２２が示す検証結果により、変換テーブルを複数のバンク領域に分割することで、圧縮の処理速度を向上させることができることがわかる。圧縮されたデータの解凍についても、同様である。
【００７９】
＜第１実施形態の検討＞
上記の通り、第１実施形態によれば圧縮の処理速度を向上させることができる。一方で、データの種類によっては圧縮率が低下することがある。そこで、圧縮率が若干悪化することのあるＤＮＡ構造データと、圧縮率の悪化がほぼ見られないタンパク質構造のデータを比較し、どのような違いがみられるかを検討する。
【００８０】
図２３は、データ圧縮器がＤＮＡ構造データを圧縮した場合における、各バンク領域のヒット率を示す図である。図２３において、縦軸はヒット率を示し、横軸は時間を示す。図２３では、変換テーブルを８つのバンク領域に分割した場合の検証結果を示す。ヒット率は、シンボル列をキーとしてバンクを検索した回数に対する、シンボル列が非圧縮シンボル列として登録されていた回数の割合である。
【００８１】
図２３を参照すると、ＤＮＡ構造データを圧縮する場合、バンク領域によってヒット率が大きく異なることがわかる。特に、バンク領域１、バンク領域２、バンク領域５では、他のバンク領域よりも低いヒット率で推移していることがわかる。そのため、ＤＮＡ構造データを圧縮する場合、圧縮されずにそのまま出力されるデータが多いことがわかる。
【００８２】
図２４は、データ圧縮器がＤＮＡ構造データを圧縮した場合における、各バンクの占有数を示す図である。占有数は、各バンク領域のエントリ領域のうち、レコードが登録されているエントリ領域の数である。図２４において、縦軸は占有数を示し、横軸は時間を示
す。図２４では、図２３の場合と同様に、変換テーブルを８つのバンク領域に分割した場合の検証結果を示す。
【００８３】
図２４を参照すると、ＤＮＡ構造データを圧縮する場合、バンク領域によって占有数が大きく異なることがわかる。特にバンク領域７の占有数は、他のバンク領域よりも低い占有数で推移していることがわかる。すなわち、ＤＮＡ構造データを圧縮する場合、有効に利用されないバンクが多いことがわかる。
【００８４】
ＤＮＡ構造は、アデニン（Ａ）、チミン（Ｔ）、グアニン（Ｇ）、シトシン（Ｃ）の４種類の文字によって表現されるため、他の種類のデータと比較して、データのパターンが少なくなる。そのため、使用頻度の低いバンクが出現しやすくなる。そのため、変換テーブル１０１に登録可能なレコード数が実質的に減少するおそれがある。また、使用されるバンクが一部のバンク領域１０１２に偏るため、一度登録されたエントリがバンク領域１０１２のレコード数の最大に達したことにより削除されやすくなるため、ヒット率も低くなりやすい。
【００８５】
＜第２実施形態＞
第１実施形態では、変換テーブルを複数のバンクに分割することで、圧縮に係る処理速度を向上させた。しかしながら、上記検討により、データの種類によっては、圧縮率が悪化する場合がある。そこで、第２実施形態では、複数のバンク領域に分割した変換テーブルを用いて処理速度を向上させつつ、圧縮率の悪化を抑制する構成について説明する。
【００８６】
第２実施形態では、圧縮を行った後のヒット率と占有数を制御部にフィードバックし、制御部はフィードバックされたヒット率と占有数に基づいて、より均等に各バンク領域が使用できるように、バンク領域を決定する。
【００８７】
図２５は、第２実施形態に係るデータ圧縮器の一例を示す図である。図２５において、第１実施形態と同一の構成については同一の符号を付し、その説明を省略する。第２実施形態に係るデータ圧縮器１０ａは、決定部１０２ａ、処理部１０３ａ、ヒット状況記録テーブル１０４、ヒット率算出部１０５、占有数算出部１０６を備える点で、第１実施形態に係るデータ圧縮器１０とは異なる。
【００８８】
ヒット状況記録テーブル１０４は、図２６に例示されるように、バンク領域１０１２と、当該バンク領域１０１２を検索した検索回数およびヒットした回数とを対応付けて管理するテーブルである。ヒット状況記録テーブル１０４は、例えば、補助記憶部７０３に記憶される。図２６に例示されるヒット状況記録テーブル１０４では、例えば、「バンク領域４」は「３回」検索され、「３回」ヒットしていることがわかる。
【００８９】
処理部１０３ａは、バンク領域１０１２の検索を実行する毎にヒット状況記録テーブル１０４に検索を行ったバンク領域１０１２の検索回数に「１」加算し、検索がヒットすると当該バンク領域１０１２のヒット回数に「１」加算する点で、第１実施形態に係る処理部１０３とは異なる。また、処理部１０３ａは、決定部１０２ａからヒット状況記録テーブル１０４のリセットを要求されると、ヒット状況記録テーブル１０４の検索回数およびヒット回数を「０」にリセットする。
【００９０】
決定部１０２ａは、所定回数（例えば、１００回）の検索毎に、ヒット率および占有数の夫々についてヒット率閾値、占有数閾値と比較した結果に基づいて圧縮に使用するバンク領域を変更する点で第１実施形態に係る決定部１０２とは異なる。ヒット率閾値および占有数閾値はユーザによって実験等によって好適な値が定められ、補助記憶部７０３に記憶される。また、決定部１０２ａは、ヒット率算出部１０５に対して、ハッシュ関数１０
２１を用いて決定したバンク領域１０１２のヒット率の算出を依頼したり、占有数算出部１０６に対して、変換テーブル１０１が有する各バンク領域１０１２夫々の占有数の算出を依頼したりする。決定部１０２ａは、ヒット率および占有数の算出後、ヒット状況記録テーブル１０４のリセットを処理部１０３ａに依頼する。ヒット率閾値は、「第１ヒット率閾値」の一例である。
【００９１】
ヒット率算出部１０５は、決定部１０２ａからの要請に応じて、ヒット状況記録テーブル１０４を参照して、バンク領域１０１２のヒット率を算出する。ヒット率算出部１０５は、決定部１０２ａからバンク領域１０１２を指定されると、指定されたバンク領域１０１２のヒット率を算出する。ヒット率は、ヒット状況記録テーブル１０４に記録されたヒット回数を検索回数で除算することで算出できる。
【００９２】
占有数算出部１０６は、決定部１０２ａからの要請に応じて、各バンク領域１０１２の占有数を算出する。占有数とは、バンク領域１０１２のうち、レコードが格納されたエントリ領域１０１１の数である。占有数算出部は、決定部１０２ａから占有数の算出を依頼されると、変換テーブル１０１にアクセスして、バンク領域１０１２毎に、レコードが格納されたエントリ領域１０１１の数を算出する。
【００９３】
＜ヒット状況記録テーブルの更新＞
図２７は、第２実施形態にヒット状況記録テーブルの更新処理を組み込んだ圧縮処理を模式的に示した図である。第１実施形態と同一の処理は同一の符号を付しその説明を省略する。以下、図２７を参照して、第２実施形態にヒット状況記録テーブルの更新処理を組み込んだ圧縮処理について説明する。
【００９４】
ステップＳ１ａでは、変換テーブル１０１とともに、ヒット状況記録テーブル１０４の初期化が行われる。ヒット状況記録テーブル１０４の初期化では、例えば、ヒット状況記録テーブル１０４の検索回数およびヒット回数が「０」にされる。
【００９５】
ステップＳ１ａを終えると、図６のステップＳ２からステップＳ８までの処理が行われる。その後、ステップＳ２１において、処理部１０３は、ヒット状況記録テーブル１０４において、ステップＳ３で決定したバンク領域の検索回数に「１」を加算する。ステップＳ２２では、処理部１０３は、ヒットした場合、すなわち、ステップＳ５において「ＹＥＳ」に分岐していた場合、ヒット状況記録テーブル１０４において、ステップＳ３で決定したバンク領域のヒット回数に「１」を加算する。
【００９６】
ステップＳ２４では、処理部１０３は、ヒット状況記録テーブル１０４に記録された各バンク領域における検索回数の合計が所定回数（本実施形態では１００回）であるか否かを判定する。検索回数の合計が所定回数である場合、処理はＳ２５に進められ、バンク領域変更処理（図２８を参照して後述）が実行される。ステップＳ２６では、バンク領域変更処理実行後の決定部１０２ａからの依頼にしたがって、処理部１０３ａは、ヒット状況記録テーブル１０４の初期化を実行する。その後、処理はＳ２に戻される。検索回数の合計が所定回数ではない場合、ステップＳ９の処理が実行される。
【００９７】
図２７の処理が実行されることで、シンボルペアの圧縮処理が実行されるたびに、ヒット状況記録テーブル１０４において、バンク領域１０１２の検索回数およびヒット回数が更新される。
【００９８】
決定部１０２ａは、ヒット状況記録テーブル１０４に記録された各バンク領域における検索回数の合計が所定回数（例えば、１００回）になると、ハッシュ関数１０２１を用いて決定するバンク領域１０１２の変更処理を実行する。図２８は、第２実施形態における
、バンク領域の変更処理を模式的に示した図である。すなわち、図２８は、図２７におけるステップＳ２５の詳細な処理の一例を示す。以下、図２８を参照して、バンク領域の変更処理について説明する。
【００９９】
ステップＳ３１では、決定部１０２ａは、ヒット率算出部１０５に対して、ステップＳ３で決定したバンク領域１０１２のヒット率算出を依頼する。ヒット率算出部１０５は、ヒット状況記録テーブル１０４を参照して、ステップＳ３で決定したバンク領域１０１２の検索回数とヒット回数とを取得する。ヒット率算出部１０５は、取得した検索回数でヒット回数を除算することで、当該バンク領域１０１２のヒット率を算出する。
【０１００】
続いて、ステップＳ３２では、決定部１０２ａは、占有数算出部１０６に対して、ステップＳ３で決定したバンク領域１０１２を含む変換テーブル１０１上の各バンク領域１０１２の占有数の算出を依頼する。占有数算出部１０６は、変換テーブル１０１を参照して、各バンク領域１０１２について、レコードが記録されているエントリ領域１０１１の数を、当該バンク領域１０１２の占有数として算出する。
【０１０１】
ステップＳ３３では、決定部１０２ａは、ステップＳ３１で算出したヒット率と、ヒット率閾値とを比較する。算出したヒット率がヒット率閾値よりも高い場合（ステップＳ３３でＹＥＳ）、処理はＳ２１に進められる。算出したヒット率がヒット率閾値よりも低い場合（ステップＳ３３でＮＯ）、処理はＳ３４に進められる。なお、ヒット率閾値は、例えば、データ圧縮器１０のユーザによって指定され、補助記憶部７０３に記憶される。
【０１０２】
ステップＳ３４では、決定部１０２ａは、ステップＳ３２で算出した占有数と、占有数閾値とを比較する。算出した占有数が占有数閾値よりも高い場合（ステップＳ３４でＹＥＳ）、処理はＳ２１に進められる。算出した占有数が占有数閾値よりも低い場合（ステップＳ３４でＮＯ）、処理はＳ３５に進められる。なお、ステップＳ３３とステップＳ３４の処理の順番は入れ替えてもよい。ステップＳ３３とステップＳ３４の双方で「ＮＯ」に分岐する場合は、「所定の変更条件を満たす場合」の一例である。
【０１０３】
ステップＳ３５では、決定部１０２ａは、ステップＳ３２で算出した占有数が最も少ないバンク領域１０１２を、ステップＳ３で決定したバンク領域１０１２に代えて、圧縮処理に使用するバンク領域１０１２として決定する。さらに、決定部１０２ａは、今後も同じデータを圧縮したときに同じバンク領域１０１２が選択されるように、ハッシュ関数１０２１の演算結果とバンク領域１０１２との対応関係を更新する。すなわち、ステップＳ３５でバンク領域１０１２が変更されたシンボルペアが入力されたハッシュ関数１０２１の演算結果が、ステップＳ３５で変更したバンク領域１０１２を示すように変更される。その後、Ｓ２１からＳ２３の処理が実行される。ステップＳ３６では、決定部１０２ａは、ヒット状況記録テーブル１０４の初期化を処理部１０３ａに依頼する。その後、処理は、上述の図２７におけるステップＳ２６に進められる。
【０１０４】
＜第２実施形態の作用効果＞
第２実施形態によれば、使用頻度の低いバンク領域も選択されるようになるため、変換テーブル１０１の使用効率を高めることができる。変換テーブル１０１に登録可能なレコード数の実質的な低下を抑制できる。そのため、第２実施形態によれば、複数のバンク領域に分割した変換テーブル１０１を用いた上で、圧縮率の悪化を抑制することができる。
【０１０５】
＜検証＞
第２実施形態の効果について検証したので、図面を参照して説明する。本検証では、変換テーブルのエントリ数が２５６、バンク数が１６（すなわち、各バンクのエントリ数は１６）である変換テーブル１０１を有するデータ圧縮器１０ａを、図２９に例示するよう
に、２段連結して圧縮処理を行った。
【０１０６】
図３０は、ヒット率閾値および占有数閾値を変化させながら、第２実施形態に係るデータ圧縮器による圧縮率を検証した図である。図３０において、縦軸は占有数閾値を示し、横軸はヒット率閾値を示す。図３０は、第１実施形態において圧縮率が低下したＤＮＡ構造データをデータ圧縮器１０ａで圧縮した場合の圧縮率を示す。
【０１０７】
図３０において、ヒット率閾値および占有数閾値が適切に選択されるとＤＮＡ構造データの圧縮率は約３４％となり、第１実施形態におけるＤＮＡ構造データの圧縮率約４７％（図２２参照）から向上していることがわかる。すなわち、第２実施形態によれば、ヒット率閾値と占有数閾値とを適切な値に設定することで、第１実施形態において圧縮率の低かった種類のデータの圧縮率を高めることができる。
【０１０８】
第２実施形態では、占有数算出部１０６が各バンク領域１０１２の占有数を算出したが、占有数算出部１０６は、占有数の代わりに、バンク領域１０１２が有するエントリ領域１０１１の数に対するレコードが格納されたエントリ領域１０１１の数の割合である、占有率を算出してもよい。占有率であれば、バンク領域１０１２が有するエントリ領域が夫々異なる場合でも、バンク領域１０１２間でどの程度エントリ領域１０１１が使用されているかを比較することが容易である。占有率を算出する場合、占有数閾値に代えて、占有率閾値を採用すればよい。占有数閾値および占有率閾値は、「第１占有率閾値」の一例である。
【０１０９】
＜第３実施形態＞
第１実施形態および第２実施形態では、変換テーブルの各バンクに登録可能な最大エントリ数は変更されない。第３実施形態では、第２実施形態でも用いたヒット率および最大エントリ数に対する実際に使用されているエントリ数の割合である占有率を基に、バンク領域の最大エントリ数を変更させる構成について説明する。
【０１１０】
図３１は、第３実施形態に係るデータ圧縮器の一例を示す図である。第３実施形態に係るデータ圧縮器１０ｂは、決定部１０２ｂおよび状態管理テーブル１０７を有する点で、第２実施形態に係るデータ圧縮器１０ａとは異なる。
【０１１１】
状態管理テーブル１０７は、図３２に例示されるように、決定部１０２ｂがバンク領域１０１２の分割を行う状態か、統合を行う状態かを示す情報を記憶する。状態管理テーブル１０７は、さらに、分割を行う状態と統合を行う状態とを遷移する閾値である、分割・統合閾値を記憶する。分割・統合閾値は、例えば、ユーザがキーボード等によって入力することで指定可能である。状態管理テーブル１０７は、例えば、補助記憶部７０３上に設けられる。
【０１１２】
決定部１０２ｂは、詳細は後述するが、バンク領域１０１２のヒット率および占有率、さらに、状態管理テーブル１０７に記憶される「状態」が分割であるか統合であるかに基づいて、１つのバンク領域１０１２を２つに分割することでバンク領域１０１２の最大エントリ数を縮小したり、２つのバンク領域１０１２を１つに統合することでバンク領域１０１２の最大エントリ数を拡大したりする処理をさらに実行する。
【０１１３】
図３３は、第３実施形態におけるバンク領域の分割を模式的に示す図である。図３３では、エントリ領域１０１１に登録されるレコードを、「ＡＡ」、「ＢＢ」と模式的に示している。図３３では、６個のエントリ領域１０１１を有するバンク領域１０１２が、それぞれ３個のエントリ領域１０１１を有するバンク領域１０１２に分割されている。分割前に登録されていたレコード「ＡＡ」、「ＢＢ」の夫々は、例えば、分割後の各バンク領域
１０１２において、先頭のエントリ領域１０１１に登録される。
【０１１４】
一方、図３４は、第３実施形態におけるバンク領域の統合を模式的に示す図である。図３４では、エントリ領域１０１１に登録されるレコードを、「ＡＡ」、「ＢＢ」、「ＣＣ」、「ＤＤ」と模式的に示している。図３４では、３個のエントリ領域１０１１を有する２つのバンク領域１０１２が、６個のエントリ領域１０１１を有するひとつのバンク領域１０１２に統合されている。統合前に登録されていた各レコードは、統合後のバンク領域１０１２の先頭から連続するエントリ領域１０１１に登録される。
【０１１５】
バンク領域１０１２を分割してバンク領域１０１２の最大エントリ数を縮小すると、当該バンク領域１０１２をひとつずつ探索する時間を短縮できるため、検索処理の長時間化が抑制される。また、２つのバンク領域１０１２を統合することでバンク領域１０１２の最大エントリ数を拡大すると、当該バンク領域１０１２に登録可能なエントリ数が増大してヒットする確率が高まるため、圧縮率を高めることができる。すなわち、このようなバンク領域１０１２の分割および統合において、処理速度を向上させたい場合にはバンク領域１０１２の分割が進みやすい条件を設定すればよく、圧縮率を高めたい場合にはバンク領域１０１２の統合が進みやすい条件を設定すればよい。このような条件を制御するため、決定部１０２ｂは、後述する状態遷移モデルにしたがって、バンク領域１０１２の分割および統合を行う。
【０１１６】
図３５は、状態遷移モデルを模式的に示す図である。図３５に例示される状態遷移モデルは、「分割」の状態と「統合」の状態を有する。決定部１０２ｂは、ヒット率の変化量に基づいて、「分割」か「統合」のいずれかの状態に遷移し、現在の状態を状態管理テーブル１０７に記憶させる。決定部１０２ｂは、現在の状態が「分割」であり、かつ、バンク領域１０１２を分割する条件を満たす場合にはバンク領域１０１２の分割を実行し、現在の状態が「統合」であり、かつ、バンク領域１０１２を統合する条件を満たす場合にはバンク領域１０１２の統合を実行する。
【０１１７】
詳細には、決定部１０２ｂは、ヒット率の変化量が、状態管理テーブル１０７が記憶する分割・統合閾値以上である場合には「分割」の状態に遷移し、ヒット率の変化量が分割・統合閾値未満である場合には「統合」の状態に遷移する。図３６は、ヒット率の変化とバンク領域の分割および統合の流れの一例を示す図である。図３６では、例えば、バンク領域１について、ヒット率の変遷とバンク領域１０１２の統合、分割の状態が例示される。図３６では、分割・統合閾値として「１．０」が与えられたものとする。図３６を参照すると、まず、バンク領域１のヒット率は「０．８」から「０．４」に変化している。ヒット率の変化量は「０．５」倍であるため、ヒット率の変化量は分割・統合閾値未満である。そこで、決定部１０２ｂは状態を「統合」に遷移するとともに、現在の状態が「統合」であることを状態管理テーブル１０７に記憶させる。続いて、バンク領域１のヒット率は「０．４」から「０．６」に変化している。ヒット率の変化量は「１．５」倍であるため、ヒット率の変化量は分割・統合閾値以上である。そこで、決定部１０２ｂは状態を「分割」に遷移するとともに、現在の状態が「分割」であることを状態管理テーブル１０７に記憶させる。最後に、バンク領域１のヒット率は「０．６」から「０．３」に変化している。ヒット率の変化量は「０．５」倍であるため、ヒット率の変化量は分割・統合閾値未満である。そこで、決定部１０２ｂは状態を「統合」に遷移するとともに、現在の状態が「統合」であることを状態管理テーブル１０７に記憶させる。
【０１１８】
以上で説明した状態遷移モデルを採用してバンク領域１０１２の分割や統合を行う処理について、さらに説明する。図３７および図３８は、第３実施形態におけるバンク領域１０１２の分割および統合を模式的に示す図である。図３７および図３８において、バンク領域１０１２を分割する分割条件は、ヒット率が「０．４」以上であり、占有率が「０．
６」以上とする。バンク領域１０１２を統合する統合条件は、占有率が「１．０」であり、隣に配置されたバンクの占有率が「０．６」以下であるものとする。分割条件における、ヒット率「０．４」は、第２ヒット率閾値の一例であり、占有率「０．６」は、第２占有率閾値の一例である。統合条件における、占有率「１．０」は第３占有率閾値の一例であり、占有率「０．６」は第４占有率閾値の一例である。
【０１１９】
図３７は、状態が「分割」である場合において、決定部がバンク領域を分割する処理の一例を示す図である。図３７の（ａ）はバンク領域１０１２を分割する前の状態を例示し、図３７の（ｂ）はバンク領域１０１２を分割した後の状態を例示する。状態が「分割」であるため、決定部１０２ｂは、上記した分割条件が満たされると、バンク領域１０１２の分割を行う。図３７の（ａ）では、バンク領域２のヒット率が「０．８」、占有率が「０．２」であり、上記した分割条件を満たす。そのため、圧縮処理において決定部１０２ｂがハッシュ関数１０２１を用いてバンク領域２を選定すると、決定部１０２ｂはバンク領域２の分割を実行し、変換テーブル１０１は図３７の（ｂ）の状態となる。図３７の（ｂ）では、バンク領域２がバンク領域２ａとバンク領域２ｂに分割されている。バンク領域２が分割されたバンク領域２ａおよびバンク領域２ｂは、いずれもエントリが登録されていない状態とし、バンク領域２ａおよびバンク領域３ｂのヒット率および占有率は「０」に初期化されてもよい。
【０１２０】
図３８は、状態が「統合」である場合において、決定部がバンク領域を統合する処理の一例を示す図である。図３８の（ａ）はバンク領域１０１２を統合する前の状態を例示し、図３８の（ｂ）はバンク領域１０１２を統合した後の状態を例示する。状態が「統合」であるため、決定部１０２ｂは、上記した統合条件が満たされると、バンクの統合を行う。図３８の（ａ）では、バンク領域３の占有率が「１．０」であり、バンク領域３の隣のバンク領域であるバンク領域４の占有率が「０．３」であるため、上記した統合条件を満たす。そのため、圧縮処理において決定部１０２ｂがハッシュ関数１０２１を用いてバンク領域３を選定すると、決定部１０２ｂはバンク領域３とバンク領域４の統合を実行し、変換テーブル１０１は図３８の（ｂ）の状態となる。図３８の（ｂ）では、バンク領域３とバンク領域４が統合されバンク領域３ａとなっている。バンク領域３とバンク領域４の統合によって生成されたバンク領域３ａは、エントリが登録されていない状態となり、バンク領域３ａのヒット率および占有率は「０」に初期化されてもよい。
【０１２１】
図３９および図４０は、第３実施形態の処理フローを模式的に示す図である。図３９の「Ａ」は図４０の「Ａ」に接続し、図４０の「Ｂ」は図３９の「Ｂ」に接続する。第１実施形態および第２実施形態と同一の処理については同一の符号を付し、その説明を省略する。以下、図３９および図４０を参照して、第３実施形態の処理フローについて説明する。
【０１２２】
ステップＳ４１では、決定部１０２ｂは、ステップＳ３１で算出したヒット率が分割・統合閾値以上である場合（ステップＳ４１においてＹＥＳ）、処理はステップＳ４２に進められる。一方、算出したヒット率が分割・統合閾値未満である場合（ステップＳ４１においてＮＯ）、処理はステップＳ４７に進められる。
【０１２３】
ステップＳ４２では、決定部１０２ｂは、状態を「分割」に遷移するとともに、現在の状態が「分割」であることを状態管理テーブル１０７に記憶させる。ステップＳ３で決定したバンク領域１０１２が分割条件を満たす場合（ステップＳ４３でＹＥＳ）、処理はステップＳ４４に進められてバンク領域１０１２の分割が実行される。一方、ステップＳ３で決定したバンク領域１０１２が分割条件を満たさない場合（ステップＳ４３でＮＯ）、処理はステップＳ４６に進められる。ステップ４２では、状態管理テーブル１０７に記憶された状態が「分割」であるため、ステップＳ３で決定したバンク領域１０１２が統合条
件を満たす場合であってもバンク領域１０１２の統合は実行されない。
【０１２４】
ステップＳ４４では、決定部１０２ｂは、図３３で例示したように、ステップＳ３で決定したバンク領域１０１２の分割を行う。ステップＳ４５では、決定部１０２ｂは、分割して生成したバンク領域１０１２のいずれかとステップＳ３で入力されたデータの一部とをハッシュ関数１０２１において対応付ける。決定部１０２ｂは、対応付けたバンク領域１０１２を使用して圧縮処理を実行する。
【０１２５】
ステップＳ４６では、決定部１０２ｂは、ステップＳ３で決定したバンクを用いて圧縮処理を実行する。
【０１２６】
ステップＳ４７では、決定部１０２ｂは、状態を「統合」に遷移するとともに、現在の状態が「統合」であることを状態管理テーブル１０７に記憶させる。ステップＳ４８では、決定部１０２ｂは、ステップＳ３で決定したバンク領域１０１２が統合条件を満たすか否かを判定する。統合条件を満たす場合（ステップＳ４８でＹＥＳ）、処理はＳ４９に進められてバンク領域１０１２の統合が実行される。一方、統合条件を満たさない場合（ステップＳ４８でＮＯ）、処理はＳ３４に進められる。ステップＳ４８では、状態管理テーブル１０７に記憶された状態が「統合」であるため、ステップＳ３で決定したバンク領域１０１２が分割条件を満たす場合であってもバンク領域１０１２の分割は実行されない。
【０１２７】
ステップＳ４９では、決定部１０２ｂは、統合要件を満たすバンク領域１０１２の統合を行う。ステップＳ４Ａでは、決定部１０２ｂは、統合して生成したバンク領域１０１２とステップＳ３で入力されたデータの一部とをハッシュ関数１０２１において対応付ける。決定部１０２ｂは、対応付けたバンク領域１０１２を使用して圧縮処理を実行する。
【０１２８】
第３実施形態の効果について検証したので、図面を参照して説明する。本検証では、変換テーブルのエントリ数が２５６である変換テーブル１０１を有するデータ圧縮器１０ｂを、図２９に例示するように２段連結し、データ圧縮器１０ｂに与える分割・統合閾値を「１．５」から「０．５」まで変化させて圧縮処理の処理速度および圧縮率について検証した。また、本検証では、第１実施形態における検証と同様に、ＤＮＡ構造データ、ＸＭＬデータ、ＭＩＤＩデータ、タンパク質構造のデータ、ソースコードおよび英文のテキストデータの６種類のデータについて検証を行った。
【０１２９】
図４１は、第３実施形態に係るデータ圧縮器の処理速度を検証した図である。図４１では、縦軸が処理速度（スループット）、横軸が分割・統合閾値を示す。横軸において左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を１６で固定した場合の検証結果を比較用に用意した。図４１を参照すると、分割・統合閾値を小さい値とすることで処理速度が向上することが理解できる。これは、分割・統合閾値を小さい値とすると、状態が「分割」に遷移しやすくなるために各バンクの分割が進むためと考えられる。
【０１３０】
図４２は、第３実施形態に係るデータ圧縮器の圧縮率を検証した図である。図４２では、縦軸が圧縮率、横軸が分割・統合閾値を示す。横軸の左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を１６で固定した場合の検証結果を比較用に用意した。図４２を参照すると、分割・統合閾値を大きい値とすることで圧縮率が向上することが理解できる。これは、分割・統合閾値を大きい値とすると、状態が「統合」に遷移しやすくなるために各バンクの統合が進むためと考えられる。また、図４２を参照すると、第１実施形態では圧縮率が悪化したＤＮＡ構造データについても圧縮率が悪化していないことが理解できる。すなわち、第３実施形態によれば、分割・統合閾値を指定することで、圧縮率の悪化を抑制しつつ、処理速度と圧縮率のいずれを優先するかをユーザが選択することが可能となる。
【０１３１】
さらに、第３実施形態において、マルチメディアデータを圧縮した場合について検証する。図４３は、第３実施形態に係るデータ圧縮器が、画像Ａ、画像Ｂおよび画像Ｃの３種類の４Ｋ画像（縦約４０００ピクセル、横約２０００ピクセル）を圧縮した場合の処理速度を検証した図である。図４３の縦軸が処理速度（スループット）、横軸が分割・統合閾値を示す。横軸において左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を１６で固定した場合の検証結果を比較用に用意した。図４３を参照すると、４Ｋ画像データに対して圧縮処理を行う場合であっても、上記で検証した他の６種類のデータと同様に、分割・統合閾値を小さい値とすることで処理速度が向上することが理解できる。
【０１３２】
図４４は、第３実施形態に係るデータ圧縮器が、画像Ａ、画像Ｂおよび画像Ｃの３種類の４Ｋ画像（縦約４０００ピクセル、横約２０００ピクセル）を圧縮した場合の圧縮率を検証した図である。図４４の縦軸が圧縮率、横軸が分割・統合閾値を示す。横軸において左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を１６で固定した場合の検証結果を比較用に用意した。図４４を参照すると、４Ｋ画像データに対して圧縮処理を行う場合であっても、上記で検証した他の６種類のデータと同様に、分割・統合閾値を大きい値とすることで処理速度が向上することが理解できる。
【０１３３】
＜第３実施形態の作用効果＞
第３実施形態では、ヒット率および占有率に基づいて、バンク領域１０１２の分割を行った。バンク領域１０１２が分割されることで、図３３に例示されるように、分割後のバンク領域１０１２が有するエントリ領域１０１１の数は減少する。すなわち、処理部１０３ａがエントリ領域をひとつずつ探索する範囲を狭めることができる。そのため、第３実施形態によれば、圧縮処理における変換テーブル１０１のエントリ領域をひとつずつ探索する検索処理の所要時間が長時間化するのを回避し得る。
【０１３４】
第３実施形態では、バンク領域１０１２を分割すると、図３３に例示されるように、分割前に登録されていたレコードは、分割後のバンク領域１０１２の先頭側から順に登録される。そのため、例えば、図３３の例によれば、分割前には２番目のエントリ領域１０１１に登録されていた「ＢＢ」は、分割後のバンク領域１０１２では、先頭のエントリ領域１０１１に登録される。そのため、この「ＢＢ」については、分割前よりも短時間で検索可能となる。
【０１３５】
第３実施形態では、２つのバンク領域１０１２を統合する際には、一方のバンク領域１０１２の後ろに他方のバンク領域１０１２が並べられる形で統合される。これは、上記の通り、バンク領域１０１２はアドレス順に並んでいるため、隣り合うバンク領域１０１２はアドレスが連続しているからである。このように統合されるため、当該一方のバンク領域１０１２に登録されているレコード（図３４の例では、「ＡＡ」、「ＢＢ」、「ＣＣ」）については、その前にレコードが登録されないため、統合後でも、統合前よりも検索に要する時間が長時間化することが抑制される。
【０１３６】
＜第４実施形態＞
第１実施形態から第３実施形態においては、データ圧縮器１０における変換テーブルの探索処理をソフトウェアで実装することで、バンク領域１０１２内のエントリ領域１０１１をひとつずつ探索する例について説明した。しかしながら、データ圧縮器１０における変換テーブル１０１の探索処理をハードウェアで実装することで、エントリ領域１０１１を所定個数ずつまとめて探索することも可能となる。第４実施形態では、データ圧縮器１０における変換テーブル１０１の探索処理をハードウェアで実装することで、バンク領域１０１２内のエントリ領域１０１１を所定個数ずつまとめて探索する構成について説明す
る。
【０１３７】
図４５は、第４実施形態に係るデータ圧縮器のエントリ領域探索回路を模式的に示す図である。第４実施形態に係るデータ圧縮器のエントリ領域探索回路は、変換テーブル１０１ａ、マッチング回路３０１、マッチエンコーダ３０２およびマルチプレクサ３０３（図中ではＭＵＸと記載）を含む。図４５では、決定部１０２も例示されている。
【０１３８】
変換テーブル１０１ａはハードウェア回路で実現された変換テーブルである。図４５の例では、変換テーブル１０１ａは、２つのバンク領域１０１２ａを含む。バンク領域１０１２の夫々を区別する場合には、アドレス順にしたがって、バンク領域１ａ、バンク領域２ａとも称する。バンク領域１０１２ａの夫々は、４つのエントリ領域１０１１ａを有する。
【０１３９】
マッチング回路３０１（３０１ａ、３０１ｂ）は、各バンク領域１０１２ａに対応付けて設けられる回路である。図４５では、バンク領域１ａに対してマッチング回路３０１ａが対応付けられ、バンク領域２ａに対してマッチング回路３０１ｂが対応付けられる。マッチング回路３０１は、入力されたシンボルペアがマッチしたエントリ領域１０１１ａについては１を示す信号を出力し、マッチしないエントリ領域１０１１ａについては０を示す信号を出力する。
【０１４０】
マッチエンコーダ３０２（３０２ａ、３０２ｂ）は、マッチング回路３０１に対応付けて設けられる回路である。図４５では、マッチング回路３０１ａに対してマッチエンコーダ３０２ａが対応付けられ、マッチング回路３０１ｂに対してマッチエンコーダ３０２ｂが対応付けられる。マッチエンコーダ３０２は、マッチング回路３０１から入力される信号列を２進数で示される出力値にエンコードして出力する。第４実施形態では、バンク領域１０１２ａは４つのエントリ領域１０１１ａを含む。そのため、マッチング回路３０１から出力される信号列は、「０００１」、「００１０」、「０１００」、「１０００」の４パターンとなる。４パターンの信号列を２進数で表現するには、２桁の２進数があればよい。そのため、第４実施形態に係るマッチエンコーダ３０２は、４入力２出力の回路を有する。
【０１４１】
図４６は、第４実施形態において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。図４６を参照すると、例えば、マッチング回路３０１から信号列「０１００」が入力されると、マッチエンコーダ３０２は、出力値「１０」に変換して出力することがわかる。
【０１４２】
マルチプレクサ３０３は、決定部１０２から入力される圧縮に用いるバンク領域を示す選択信号を基に、マッチエンコーダ３０２ａ、３０２ｂからの入力信号のいずれかを選択して出力する回路である。第４実施形態では、マルチプレクサ３０３の出力信号が、圧縮シンボルとなる。マルチプレクサ３０３は、例えば、バンク領域１ａを示す選択信号が決定部１０２から入力されると、マッチエンコーダ３０２ａからの入力信号を選択して出力する。第４実施形態では、マルチプレクサ３０３の出力が圧縮シンボルとなる。
【０１４３】
以上で構成を説明した第４実施形態では、シンボルペアが決定部１０２、マッチング回路３０１ａ、３０１ｂに入力される。決定部１０２は、入力されたシンボルペアを基に圧縮に用いるバンク領域１０１２ａを決定し、決定したバンク領域１０１２ａを示す選択信号をマルチプレクサ３０３に出力する。マッチング回路３０１ａ、３０１ｂは、シンボルペアとマッチしたエントリ領域１０１１ａについては１を示す信号を出力し、マッチしないエントリ領域１０１１ａについては０を示す信号をマッチエンコーダ３０２ａ、３０２ｂに出力する。マッチエンコーダ３０２ａ、３０２ｂは、入力された信号を２進数にエン
コードし、マルチプレクサ３０３に出力する。マルチプレクサ３０３は、決定部１０２から入力された選択信号を基に、マッチエンコーダ３０２ａ、３０２ｂからの入力信号のいずれかを選択して出力することで、シンボルペアの圧縮処理が行われる。
【０１４４】
なお、図４５では、決定部１０２がバンク領域１０１２ａを決定しているが、第４実施形態におけるバンク領域１０１２ａを選定する処理は、決定部１０２が実行する形態に限定されない。第４実施形態におけるバンク領域１０１２ａを選定する処理は、第１実施形態から第３実施形態に開示するいずれの形態を採用してもよい。
【０１４５】
＜比較例＞
図４７は、比較例に係るエントリ領域探索回路を模式的に示す図である。比較例に係るエントリ領域探索回路は、変換テーブル１０１ｚ、マッチング回路３０１ｚおよびマッチエンコーダ３０２ｚを含む。
【０１４６】
変換テーブル１０１ｚはハードウェア回路で実現された変換テーブルである。図４６の例では、変換テーブル１０１ｚは８つのエントリ領域１０１１ａを有しており、バンク領域には分割されていない。
【０１４７】
マッチング回路３０１ｚは、変換テーブル１０１ｚに対応付けて設けられる回路である。マッチング回路３０１ｚは、入力されたシンボルペアがマッチしたエントリ領域１０１１ａについては１を示す信号を出力し、マッチしないエントリ領域１０１１ａについては０を示す信号を出力する。
【０１４８】
マッチエンコーダ３０２ｚは、マッチング回路３０１ｚに対応付けて設けられる回路である。マッチエンコーダ３０２ｚは、マッチング回路３０１ｚから入力される信号列を２進数ので示される出力値にエンコードして出力する。比較例では、変換テーブル１０１ｚは８つのエントリ領域１０１１ａを含む。そのため、マッチング回路３０１ｚから出力される信号列は、「０００００００１」、「００００００１０」、「０００００１００」、「００００１０００」、「０００１００００」、「００１０００００」、「０１００００００」、「１０００００００」の８パターンとなる。８パターンの信号列を２進数で表現するには、３桁の２進数があればよい。そのため、比較例に係るマッチエンコーダ３０２ｚは、８入力３出力の回路を有する。比較例では、第４実施形態と同様に、マッチエンコーダ３０２ｚの出力が、圧縮シンボルとなる。
【０１４９】
図４８は、比較例において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。図４８を参照すると、例えば、マッチング回路３０１ａから信号列「０００００１００」が入力されると、マッチエンコーダ３０２ａは、出力値「０１０」に変換して出力することがわかる。
【０１５０】
＜第４実施形態と比較例との比較＞
第４実施形態では、変換テーブル１０１ａが複数のバンク領域１０１２ａに区分けされる。マッチング回路３０１は、区分けされた複数のバンク領域１０１２ａ夫々に対応付けて設けられる。第４実施形態では、変換テーブル１０１ｚをバンク領域に区分けしない比較例と比較して、マッチング回路３０１の回路規模を縮小することができ、マッチング回路３０１による処理の高速化が容易になる。そのため、第４実施形態によれば、比較例よりも高速な圧縮処理を実現できる。なお、第４実施形態では、比較例と比較してマルチプレクサ３０３が追加されるが、マルチプレクサ３０３の回路構成はバンク領域１０１２ａの数だけ入力を選択する程度の簡易な回路である。そのため、マルチプレクサ３０３が追加されていても、第４実施形態の回路規模は比較例よりも小さいものとなる。
【０１５１】
＜第４実施形態の変形＞
第４実施形態では、マッチング回路３０１は、バンク領域１０１２ａが有するエントリ領域１０１１ａと同数の入力を受け付けたが、マッチング回路３０１はこのような構成に限定されない。マッチング回路３０１は、例えば、バンク領域１０１２ａが有するエントリ領域１０１１ａの数よりも少ない入力を受け付ける回路であってもよい。このような場合、複数のマッチング回路３０１をバンク領域１０１２ａに対応付ければよい。
【０１５２】
変換テーブル１０１ａとマッチング回路３０１は、例えば、連想メモリ（Content Addressable Memory、ＣＡＭ）によって実装されてもよい。連想メモリは、例えば、指定されたデータに対して、当該データに対応するインデックスを出力するメモリである。この場合、バンク領域１ａとマッチング回路３０１ａの組み合わせをひとつの連想メモリで実装し、バンク領域２ａとマッチング回路３０１ｂとの組み合わせを他の連想メモリで実装すればよい。連想メモリによる実装をバンク領域１０１２ａ毎に行うことで、変換テーブル１０１ａ全体をひとつの連想メモリで実装する場合と比較して、連想メモリの回路規模を縮小することができる。
【０１５３】
＜第５実施形態＞
第４実施形態では、ハードウェアで実装したデータ圧縮器１０について説明した。第５実施形態では、ハードウェアで実装したデータ解凍器２０について説明する。
【０１５４】
図４９は、第５実施形態に係るデータ解凍器のエントリ領域探索回路を模式的に示す図である。第５実施形態に係るデータ解凍器のエントリ領域探索回路は、変換テーブル２０１ａ、マルチプレクサ４０１、４０２（図中ではＭＵＸと記載）を含む。図４９では、さらに、決定部２０２も例示されている。
【０１５５】
変換テーブル２０１ａはハードウェア回路で実現された変換テーブルである。図４９の例では、変換テーブル２０１ａは、２つのバンク領域２０１２ａを含む。バンク領域２０１２の夫々を区別する場合には、アドレス順にしたがって、解凍バンク領域１ａ、解凍バンク領域２ａとも称する。バンク領域２０１２ａの夫々は４つのエントリ領域２０１１ａを有する。変換テーブル２０１ａは、エントリ領域２０１１ａの夫々に格納されたデータをマルチプレクサ４０１に出力する。なお、図４９では、バンク領域２０１２ａの夫々においてエントリ領域２０１１ａの夫々に割り当てられるインデックスが「０」、「１」、「２」、「３」として例示される。
【０１５６】
マルチプレクサ４０１（４０１ａ、４０１ｂ）は、バンク領域２０１２ａに対応付けて設けられる回路である。図４９では、マルチプレクサ４０１ａは、解凍バンク領域１ａに対応付けられ、マルチプレクサ４０１ｂは、解凍バンク領域２ａに対応付けられる。マルチプレクサ４０１には、圧縮シンボルが選択信号として入力される。第５実施形態における圧縮シンボルは、第１実施形態と同様に、エントリに付されるインデックスが採用される。すなわち、マルチプレクサ４０１は、変換テーブル２０１ａから入力される信号のうち、選択信号として入力された圧縮シンボルが示すインデックスに対応するエントリ領域２０１１ａからの信号をマルチプレクサ４０２に出力する。
【０１５７】
マルチプレクサ４０２は、決定部２０２から入力される解凍に用いる解凍バンク領域を示す選択信号を基に、マルチプレクサ４０１ａ、４０１ｂからの入力信号のいずれかを選択して出力する回路である。第５実施形態では、マルチプレクサ４０２の出力信号が、解凍後のデータとなる。マルチプレクサ４０２は、例えば、解凍バンク領域１ａを示す選択信号が決定部２０２から入力されると、解凍バンク領域１ａに対応するマルチプレクサ４０１ａからの入力信号を選択して出力する。
【０１５８】
第５実施形態では、変換テーブル２０１ａが複数のバンク領域２０１２ａに区分けされる。マルチプレクサ４０１は、区分けされた複数のバンク領域２０１２ａ夫々に対応付けて設けられる。そのため、変換テーブル２０１ａを複数のバンク領域に区分けせずに、変換テーブル２０１ａ全体に対応付けたマルチプレクサを一つ設ける場合と比較して、マルチプレクサ４０１の回路規模の拡大を抑制することができ、マルチプレクサ４０１による入力信号選択の高速化が容易になる。
【０１５９】
＜第１変形例＞
第５実施形態における変換テーブル２０１ａは、メモリ素子上に構築されてもよい。第１変形例では、バンク領域の夫々を互いに異なるメモリ素子上に構築する構成について説明する。図５０は、第１変形例に係るエントリ領域探索回路を模式的に示す図である。図５０では、バンク領域２０１２ｂの夫々が、互いに異なるメモリ素子５０１上に構築される。
【０１６０】
メモリ素子５０１（５０１ａ、５０１ｂ）は、例えば、メモリである。メモリ素子５０１は、メモリ上のインデックスが指定されると、指定されたインデックスに対応するデータを出力する。メモリ素子５０１ａとメモリ素子５０１ｂとは互いに物理的に異なるメモリ素子である。
【０１６１】
変換テーブル２０１ｂは、互いに異なるメモリ素子５０１上に構築された複数のバンク領域２０１２ｂを含む回路である。図５０の例では、変換テーブル２０１ｂは、メモリ素子５０１ａおよびメモリ素子５０１ｂの夫々に構築された２つのバンク領域２０１２ｂを含む。バンク領域２０１２ｂの夫々を区別する場合には、一方を解凍バンク領域１ｂ、他方を解凍バンク領域２ｂとも称する。図５０の例では、解凍バンク領域１ａはメモリ素子５０１ａ上に構築され、解凍バンク領域２ｂはメモリ素子５０１ｂ上に構築される。バンク領域２０１２ｂの夫々は４つのエントリ領域２０１１ｂを有する。なお、図５０では、バンク領域２０１２ｂの夫々においてエントリ領域２０１１ｂの夫々に割り当てられるインデックスが「０」、「１」、「２」、「３」として例示される。変換テーブル２０１ｂは、エントリ領域２０１１ｂのインデックスを用いた圧縮シンボルが入力されると、入力される圧縮シンボルによって示されるエントリ領域２０１１ｂに格納されたデータをマルチプレクサ５０２に出力する。
【０１６２】
マルチプレクサ５０２は、決定部２０２から入力される解凍に用いる解凍バンク領域を示す選択信号を基に、解凍バンク領域１ｂ、解凍バンク領域２ｂからの入力信号のいずれかを選択して出力する回路である。第１変形例では、マルチプレクサ５０２の出力信号が解凍後のデータとなる。マルチプレクサ５０２は、例えば、解凍バンク領域１ｂを示す選択信号が決定部２０２から入力されると、解凍バンク領域１ｂからの入力信号を選択して出力する。
【０１６３】
第１変形例では、バンク領域毎に異なるメモリ素子５０１を用いる。そのため、第１変形例によれば、変換テーブル２０１ｂの全体がひとつのメモリ素子５０１上に構築される場合よりも少ない数のエントリ領域２０１１ｂがメモリ素子５０１上に構築される。そのため、第１変形例によれば、メモリ素子５０１の回路規模の拡大を抑制でき、解凍に係る処理速度の高速化が容易になる。
【０１６４】
＜第２変形例＞
第１変形例では、解凍バンク領域の夫々が互いに異なるメモリ素子上に構築された。第２変形例では、複数の解凍バンク領域が同じメモリ素子上に構築される構成について説明する。図５１は、第２変形例に係るエントリ領域探索回路を模式的に示す図である。なお、第２変形例においても、圧縮シンボルとしてバンク領域のインデックスが用いられるも
のとして説明する。
【０１６５】
変換テーブル２０１ｃは、メモリ素子６０１上に構築された複数のバンク領域２０１２ｃを含む回路である。メモリ素子６０１は、例えば、メモリである。図５１の例では、変換テーブル２０１ｃは、２つのバンク領域２０１２ｃを含む。バンク領域２０１２ｃの夫々を区別する場合には、一方を解凍バンク領域１ｃ、他方を解凍バンク領域２ｃとも称する。バンク領域２０１２ｃの夫々は４つのエントリ領域２０１１ｃを有する。なお、図５１の例では、変換テーブル２０１ｃにおいてエントリ領域２０１１ｃの夫々に割り当てられるインデックスが「０」、「１」、「２」、「３」、「４」、「５」、「６」、「７」として例示される。また、図５１の例では、インデックス「０」、「１」、「２」、「３」の夫々に対応するエントリ領域２０１１ｃが解凍バンク領域１ｃに含まれ、インデックス「４」、「５」、「６」、「７」の夫々に対応するエントリ領域２０１１ｃが解凍バンク領域２ｃに含まれる。
【０１６６】
変換テーブル２０１ｃには、決定部２０２からの解凍に用いるバンク領域を示す選択信号と圧縮シンボルとが入力されると、選択信号を上位ビット、圧縮シンボルを下位ビットとする２進数の数列に変換する。変換テーブル２０１ｃは、変換した２進数の数列が示すインデックスに対応するエントリ領域２０１１ｃに格納されたデータを解凍後のデータとして出力する。
【０１６７】
図５２は、第２変形例における、決定部からの選択信号、圧縮シンボルおよびインデックスの対応の一例を示す図である。図５２では、「決定部からの選択信号」、「圧縮シンボル」、「２進数」および「インデックス」の各項目が例示される。図５２では、決定部２０２からの信号および圧縮シンボルと、２進数の数列との対応が示される。図５２に例示される２進数の数列では、上位１ビットが決定部２０２からの信号を示し、下位２ビットが圧縮シンボルを示す。インデックスは、２進数の数列を１０進数に変換したものである。例えば、解凍に用いるバンク領域２０１２ｃを示す信号として決定部２０２から「１」が入力され、圧縮シンボルとして「２」が入力されると、インデックスは「６」となる。そのため、この場合、変換テーブル２０１ｃは、インデックス「６」に対応するエントリ領域２０１１ｃに格納されたデータを解凍後のデータとして出力する。変換テーブル２０１ｃは、このように、決定部２０２からの選択信号および圧縮シンボルに基づいてエントリ領域２０１１ｃを一意に決定できればよい。
【０１６８】
第２変形例によれば、解凍に使用するバンク領域２０１２が決定部２０２によって決定されることで、圧縮シンボルに対応するエントリ領域２０１１ｃを探索する範囲を狭めることができる。そのため、第２変形例によれば、解凍処理の所要時間が長時間化することを抑制できる。
【０１６９】
以上で説明した各実施形態および各変形例は適宜組み合わせることができる。
【０１７０】
<<コンピュータが読み取り可能な記録媒体>>
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させる情報処理プログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１７１】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、Compac
t Disc Read Only Memory（ＣＤ−ＲＯＭ）、Compact Disc - Recordable（ＣＤ−Ｒ）、Compact Disc - ReWriterable（ＣＤ−ＲＷ）、Digital Versatile Disc（ＤＶＤ）、ブ
ルーレイディスク（ＢＤ）、Digital Audio Tape（ＤＡＴ）、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【符号の説明】
【０１７２】
１０、１０ａ、１０ｂ・・・データ圧縮器
２０・・・受信側装置、データ解凍器
１０１、１０１ａ、１０１ｚ、２０１、２０１ａ、２０１ｂ、２０１ｃ・・・変換テーブル
１０２、１０２ａ、１０２ｂ、２０２・・・決定部
１０３、１０３ａ、２０３・・・処理部
１０４・・・ヒット状況記録テーブル
１０５・・・ヒット率算出部
１０６・・・占有数算出部
１０７・・・状態管理テーブル
１０１１、１０１１ａ、２０１１、２０１１ｂ、２０１１ｃ・・・エントリ領域
１０１２、１０１２ａ、２０１２、２０１２ａ、２０１２ｂ、２０１２ｃ・・・バンク領域
１０２１、２０２１・・・ハッシュ関数
３０１、３０１ａ、３０１ｂ、３０１ｚ・・・マッチング回路
３０２、３０２ａ、３０２ｂ、３０２ｚ・・・マッチエンコーダ
３０３、４０１、４０１ａ、４０１ｂ、４０２、５０２・・・マルチプレクサ
５０１、５０１ａ、５０１ｂ、６０１・・・メモリ素子
７００・・・情報処理装置
７０１・・・ＣＰＵ
７０２・・・主記憶部
７０３・・・補助記憶部
７０４・・・通信部
Ｂ１・・・接続バス
８００・・・伝送路
Ｐ・・・データ圧縮プログラム
【図１】
2020036291.tif 000003
【図２】
2020036291.tif 000004
【図３】
2020036291.tif 000005
【図４】
2020036291.tif 000006
【図５】
2020036291.tif 000007
【図６】
2020036291.tif 000008
【図７】
2020036291.tif 000009
【図８】
2020036291.tif 000010
【図９】
2020036291.tif 000011
【図１０】
2020036291.tif 000012
【図１１】
2020036291.tif 000013
【図１２】
2020036291.tif 000014
【図１３】
2020036291.tif 000015
【図１４】
2020036291.tif 000016
【図１５】
2020036291.tif 000017
【図１６】
2020036291.tif 000018
【図１７】
2020036291.tif 000019
【図１８】
2020036291.tif 000020
【図１９】
2020036291.tif 000021
【図２０】
2020036291.tif 000022
【図２１】
2020036291.tif 000023
【図２２】
2020036291.tif 000024
【図２３】
2020036291.tif 000025
【図２４】
2020036291.tif 000026
【図２５】
2020036291.tif 000027
【図２６】
2020036291.tif 000028
【図２７】
2020036291.tif 000029
【図２８】
2020036291.tif 000030
【図２９】
2020036291.tif 000031
【図３０】
2020036291.tif 000032
【図３１】
2020036291.tif 000033
【図３２】
2020036291.tif 000034
【図３３】
2020036291.tif 000035
【図３４】
2020036291.tif 000036
【図３５】
2020036291.tif 000037
【図３６】
2020036291.tif 000038
【図３７】
2020036291.tif 000039
【図３８】
2020036291.tif 000040
【図３９】
2020036291.tif 000041
【図４０】
2020036291.tif 000042
【図４１】
2020036291.tif 000043
【図４２】
2020036291.tif 000044
【図４３】
2020036291.tif 000045
【図４４】
2020036291.tif 000046
【図４５】
2020036291.tif 000047
【図４６】
2020036291.tif 000048
【図４７】
2020036291.tif 000049
【図４８】
2020036291.tif 000050
【図４９】
2020036291.tif 000051
【図５０】
2020036291.tif 000052
【図５１】
2020036291.tif 000053
【図５２】
2020036291.tif 000054