(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-17
(45)【発行日】2022-05-25
(54)【発明の名称】データ圧縮器、データ圧縮方法、データ圧縮プログラム、データ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮解凍システム
(51)【国際特許分類】
H03M 7/42 20060101AFI20220518BHJP
【FI】
H03M7/42
(21)【出願番号】P 2018163608
(22)【出願日】2018-08-31
【審査請求日】2021-07-21
(73)【特許権者】
【識別番号】504171134
【氏名又は名称】国立大学法人 筑波大学
(74)【代理人】
【識別番号】100113608
【氏名又は名称】平川 明
(74)【代理人】
【識別番号】100123098
【氏名又は名称】今堀 克彦
(74)【代理人】
【識別番号】100105407
【氏名又は名称】高田 大輔
(72)【発明者】
【氏名】山際 伸一
(72)【発明者】
【氏名】丸茂 孝一
(72)【発明者】
【氏名】森田 隆太
【審査官】阿部 弘
(56)【参考文献】
【文献】特開2016-184830(JP,A)
【文献】国際公開第2016/140071(WO,A1)
【文献】特開2000-201080(JP,A)
【文献】Koichi Marumo et al.,Time-Sharing Multithreading on Stream-Based Lossless Data Compression[online],2017 Fifth International Symposium on Computing and Networking (CANDAR),IEEE,2017年11月19日,pp. 305-310,URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8345448
(58)【調査した分野】(Int.Cl.,DB名)
H03M 7/42
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
複数の第1のデータを含む第1のデータ列を前記第1のデータ列のサイズより小さいサイズの第2のデータ列に圧縮するデータ圧縮器であって、
前記第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルと、
前記複数の第1のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、
前記複数の第1のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータが記憶されている場合には、この記憶された前記第2のデータを出力し、前記第1のデータに対応する第2のデータが記憶されていない場合には、前記第1のデータに対応する第2のデータを取得し、取得した第2のデータを、他の第2のデータを記憶していないエントリ領域に登録するとともに、前記第1のデータを出力する処理部と、を備える、
データ圧縮器。
【請求項2】
前記バンク領域毎に、前記バンク領域を検索した回数に対する前記第1のデータに対応する前記第2のデータが記憶されていた回数の割合であるヒット率および前記バンク領域に登録可能な最大エントリ数に対する登録済みのエントリ数の割合である占有率を算出する算出部をさらに備え、
前記決定部は、前記ヒット率と前記占有率とが所定の変更条件を満たす場合に、前記決定部によって決定された対応するバンク領域を他のバンク領域に変更する、
請求項1に記載のデータ圧縮器。
【請求項3】
前記所定の変更条件を満たす場合は、前記決定部によって決定された対応するバンク領域のヒット率が所定の第1ヒット率閾値より低く、前記決定部によって決定された対応するバンク領域の占有率が所定の第1占有率閾値より低い場合を含み、
前記他のバンク領域は、複数の前記バンク領域のうち占有率の最も低いバンク領域である、
請求項2に記載のデータ圧縮器。
【請求項4】
前記バンク領域毎に、前記バンク領域を検索した回数に対する前記第1のデータに対応する前記第2のデータが記憶されていた回数の割合であるヒット率および前記バンク領域に登録可能な最大エントリ数に対する登録済みのエントリ数の割合である占有率を算出する算出部をさらに備え、
前記決定部によって決定された対応するバンク領域について算出したヒット率と占有率とが所定の分割条件を満たす場合に、当該バンク領域を2つの領域に分割する、
請求項1から3のいずれか一項に記載のデータ圧縮器。
【請求項5】
前記所定の分割条件は、前記ヒット率が所定の第2ヒット率閾値以上であり、前記占有率が所定の第2占有率閾値以上である場合を含む、
請求項4に記載のデータ圧縮器。
【請求項6】
前記バンク領域毎に、前記バンク領域を検索した回数に対する前記第1のデータに対応する前記第2のデータが記憶されていた回数の割合であるヒット率および前記バンク領域に登録可能な最大エントリ数に対する登録済みのエントリ数の割合である占有率を算出する算出部をさらに備え、
前記決定部によって決定された対応するバンク領域について算出したヒット率と占有率とが所定の統合条件を満たす場合に、当該バンク領域と他のバンク領域とを1つの領域に統合する、
請求項1から5のいずれか一項に記載のデータ圧縮器。
【請求項7】
前記所定の統合条件を満たす場合は、前記決定部によって決定された対応するバンク領域について算出した占有率が所定の第3占有率閾値以上であり、かつ、前記他のバンク領域について算出した占有率が前記第3占有率閾値よりも低く設定された所定の第4占有率閾値以下である場合を含む、
請求項6に記載のデータ圧縮器。
【請求項8】
複数の第1のデータを含む第1のデータ列を前記第1のデータ列のサイズより小さいサイズの第2のデータ列に圧縮するデータ圧縮方法であって、前記第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルを有するコンピュータが、
前記複数の第1のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定ステップと、
前記複数の第1のデータの夫々について、前記決定ステップによって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータが記憶されている場合には、この記憶された前記第2のデータを出力し、前記第1のデータに対応する第2のデータが記憶されていない場合には、前記第1のデータに対応する第2のデータを取得し、取得した第2のデータを、他の第2のデータを記憶していないエントリ領域に登録するとともに、前記第1のデータを出力する処理ステップと、を実行する、
データ圧縮方法。
【請求項9】
複数の第1のデータを含む第1のデータ列を前記第1のデータ列のサイズより小さいサイズの第2のデータ列に圧縮するデータ圧縮プログラムであって、前記第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルを有するコンピュータに、
前記複数の第1のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定させる決定ステップと、
前記複数の第1のデータの夫々について、前記決定ステップによって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータが記憶されている場合には、この記憶された前記第2のデータを出力し、前記第1のデータに対応する第2のデータが記憶されていない場合には、前記第1のデータに対応する第2のデータを取得し、取得した第2のデータを、他の第2のデータを記憶していないエントリ領域に登録するとともに、前記第1のデータを出力する処理ステップと、を実行させる
データ圧縮プログラム。
【請求項10】
変換テーブルのエントリ領域に第1のデータが登録されている場合には第1のデータに対応する前記第1のデータよりサイズの小さい第2のデータを出力し、前記変換テーブルのエントリ領域に第1のデータが登録されていない場合には前記第1のデータに対応する第2のデータを取得し、取得した第2のデータをエントリ領域に登録するとともに前記第1のデータを出力するデータ圧縮器から受信するデータを解凍するデータ解凍器であって
、
前記第2のデータと前記第1のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルと、
前記第1のデータおよび前記第2のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定部と、
前記第1のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータを出力し、前記第2のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第2のデータに対応する第1のデータを取得し、取得した第1のデータを、他の第1のデータを記憶していない解凍エントリ領域に登録するとともに、前記第1のデータを出力する処理部と、を備える、
データ解凍器。
【請求項11】
第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルを有するコンピュータが、変換テーブルのエントリ領域に第1のデータが登録されている場合には第1のデータに対応する第2のデータを出力し、前記変換テーブルのエントリ領域に第1のデータが登録されていない場合には前記第1のデータに対応する第2のデータを取得し、取得した第2のデータをエントリ領域に登録するとともに前記第1のデータを出力するデータ圧縮器から受信するデータを解凍するデータ解凍方法であって、
前記コンピュータが、
前記第1のデータおよび前記第2のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定ステップと、
前記第1のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータを出力し、前記第2のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第2のデータに対応する第1のデータを取得し、取得した第1のデータを、他の第1のデータを記憶していない解凍エントリ領域に登録するとともに、前記第1のデータを出力する処理ステップと、を実行する、
データ解凍方法。
【請求項12】
第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルを有するコンピュータに、変換テーブルのエントリ領域に第1のデータが登録されている場合には第1のデータに対応する第2のデータを出力し、前記変換テーブルのエントリ領域に第1のデータが登録されていない場合には前記第1のデータに対応する第2のデータを取得し、取得した第2のデータをエントリ領域に登録するとともに前記第1のデータを出力するデータ圧縮器から受信するデータを解凍させるデータ解凍プログラムであって、
前記コンピュータに、
前記第1のデータおよび前記第2のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定ステップと、
前記第1のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータを出力し、前記第2のデータを受信すると、前記決定ステップによって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第2のデータに対応する第1のデータを取得し、取得した第1のデータを、他の第1のデータを記憶していない解凍エントリ領域に登録するとともに、前記第1のデータを出力する処理ステップと、を実行させる、
データ解凍プログラム。
【請求項13】
複数の第1のデータを含む第1のデータ列を前記第1のデータ列のサイズより小さいサイズの第2のデータ列に圧縮するデータ圧縮器と、前記データ圧縮器によって圧縮されたデータ列を解凍するデータ解凍器を含むデータ圧縮解凍システムであって、
前記データ圧縮器は、
前記第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルと、
前記複数の第1のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、
前記複数の第1のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータが記憶されている場合には、この記憶された前記第2のデータを出力し、前記第1のデータに対応する第2のデータが記憶されていない場合には、前記第1のデータに対応する第2のデータを取得し、取得した第2のデータを、他の第2のデータを記憶していないエントリ領域に登録するとともに、前記第1のデータを出力する処理部と、を備え、
前記データ解凍器は、
前記第2のデータと前記第1のデータとの対応関係を記憶可能な所定数の解凍エントリ領域を有し、前記所定数の解凍エントリ領域が複数の解凍バンク領域に区分けされており、前記複数の解凍バンク領域の夫々は、前記所定数より少ない数の解凍エントリ領域によって形成されている解凍変換テーブルと、
前記第1のデータおよび前記第2のデータの夫々の値に対応する解凍バンク領域を前記複数の解凍バンク領域の中から一意に決定する決定部と、
前記第1のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記解凍エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータを出力し、前記第2のデータを受信すると、前記決定部によって決定された対応する解凍バンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第2のデータに対応する第1のデータを取得し、取得した第1のデータを、他の第1のデータを記憶していない解凍エントリ領域に登録するとともに、前記第1のデータを出力する処理部と、を備える、
データ圧縮解凍システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ圧縮器、データ圧縮方法、データ圧縮プログラム、データ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮解凍システムに関する。
【背景技術】
【0002】
近年、送信側装置と受信側装置との間でストリームデータを伝送する場合に、送信側装置でストリームデータの圧縮を行う技術が提案されている。例えば、連続する2以上のシンボルが入力データとして入力された場合に、この入力データを1つのシンボルに変換する変換規則が辞書に登録されている場合、上記2以上のシンボルを1つのシンボルに変換する変換部と、変換部で上記2以上のシンボルが1つのシンボルに変換された場合は、当該1つのシンボルを出力し、そうでない場合は、2以上のシンボルを出力する出力部とを含むデータ圧縮器が提案されている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2014-236449号公報
【文献】特開2016-184830号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記した1シンボルへの変換、すなわち圧縮は、入力データが辞書に登録されている場合に行われる。入力データに対応するデータを辞書から検索する処理は、当該処理をハードウェアにより実装する場合では、辞書に登録された複数のエントリ領域の夫々と入力データとの照合を並列に実行することで、検索時間の短縮化が図られる。これに対し、上記検索処理をソフトウェアで実装する場合、辞書に登録された複数のエントリ領域と入力データとの照合が各エントリ領域をひとつずつ探索していく逐次処理となる。そのため、検索処理がボトルネックとなって遅延が生じ、ストリームデータの伝送が適正に行われなくなるおそれがあった。また、ハードウェア回路で実現する場合には各エントリ領域をまとめて探索することが可能であるが、エントリ領域の数が増加すると回路構成が複雑化し、圧縮処理の高速化が困難となることがあった。
【0005】
開示の技術の1つの側面は、変換規則の検索処理の所要時間が長時間化するのを回避し得る技術を提供することを課題とする。
【課題を解決するための手段】
【0006】
開示の技術の1つの側面は、次のようなデータ圧縮器によって例示される。本データ圧縮器は、複数の第1のデータを含む第1のデータ列を前記第1のデータ列のサイズより小さいサイズの第2のデータ列に圧縮するデータ圧縮器であって、前記第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数のエントリ領域によって形成されている変換テーブルと、前記複数の第1のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、前記複数の第1のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記エントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータが記憶されている場合には、この記憶された前記第2のデータを出力し、前記
第1のデータに対応する第2のデータが記憶されていない場合には、前記第1のデータに対応する第2のデータを取得し、取得した第2のデータを、他の第2のデータを記憶していないエントリ領域に登録するとともに、前記第1のデータを出力する処理部と、を備える。
【発明の効果】
【0007】
開示の技術によれば、変換規則の検索処理の所要時間が長時間化するのを回避し得る。
【図面の簡単な説明】
【0008】
【
図1】
図1は、第1実施形態に係るデータ圧縮器と受信側装置の構成を例示する図である。
【
図2】
図2は、第1実施形態に係るデータ圧縮器の論理ブロックの一例を示す図である。
【
図3】
図3は、第1実施形態に係る変換テーブルの一例を示す図である。
【
図5】
図5は、データ圧縮器のハッシュ関数による入力シンボルとバンク領域との対応付けを模式的に示す図である。
【
図6】
図6は、第1実施形態に係るデータ圧縮器が実行する圧縮処理の工程を模式的に示す処理フロー図である。
【
図7】
図7は、変換テーブルへレコードを追加する具体例を説明するための第1の図である。
【
図8】
図8は、変換テーブルへレコードを追加する具体例を説明するための第2の図である。
【
図9】
図9は、変換テーブルへレコードを追加する具体例を説明するための第3の図である。
【
図10】
図10は、変換テーブルへレコードを追加する具体例を説明するための第4の図である。
【
図11】
図11は、ストリームデータの圧縮を完了したときの変換テーブルの一例を示す図である。
【
図12】
図12は、データ解凍器の一例を示す論理ブロック図である。
【
図13】
図13は、データ解凍器の変換テーブルの一例を示す図である。
【
図15】
図15は、データ解凍器のハッシュ関数による入力シンボルと解凍バンク領域との対応付けを模式的に示す図である。
【
図16】
図16は、第1実施形態に係る解凍処理の工程を模式的に示す処理フロー図である。
【
図17】
図17は、変換テーブルの生成および更新を説明するための第1の図である。
【
図18】
図18は、変換テーブルの生成および更新を説明するための第2の図である。
【
図19】
図19は、変換テーブルの生成および更新を説明するための第3の図である。
【
図20】
図20は、第1実施形態に係るデータ圧縮器を4段連結した構成の一例を示す図である。
【
図21】
図21は、変換テーブルを分割するバンクの数と圧縮に係る処理時間との関係を示す図である。
【
図22】
図22は、変換テーブルを分割するバンク領域の数と圧縮率の関係を示す図である。
【
図23】
図23は、データ圧縮器がDNA構造データを圧縮した場合における、各バンク領域のヒット率を示す図である。
【
図24】
図24は、データ圧縮器がDNA構造データを圧縮した場合における、各バンクの占有数を示す図である。
【
図25】
図25は、第2実施形態に係るデータ圧縮器の一例を示す図である。
【
図26】
図26は、ヒット状況記録テーブルの一例を示す図である。
【
図27】
図27は、第2実施形態にヒット状況記録テーブルの更新処理を組み込んだ圧縮処理を模式的に示した図である。
【
図28】
図28は、第2実施形態における、バンク領域の変更処理を模式的に示した図である。
【
図29】
図29は、第2実施形態に係るデータ圧縮器を2段連結した構成の一例を示す図である。
【
図30】
図30は、ヒット率閾値および占有数閾値を変化させながら、第2実施形態に係るデータ圧縮器による圧縮率を検証した図である。
【
図31】
図31は、第3実施形態に係るデータ圧縮器の一例を示す図である。
【
図32】
図32は、第3実施形態に係る状態管理テーブルの一例を示す図である。
【
図33】
図33は、第3実施形態におけるバンク領域の分割を模式的に示す図である。
【
図34】
図34は、第3実施形態におけるバンク領域の統合を模式的に示す図である。
【
図36】
図36は、ヒット率の変化とバンク領域の分割および統合の流れの一例を示す図である。
【
図37】
図37は、第3実施形態におけるバンク領域の分割および統合を模式的に示す第1の図である。
【
図38】
図38は、第3実施形態におけるバンク領域の分割および統合を模式的に示す第2の図である。
【
図39】
図39は、第3実施形態の処理フローを模式的に示す第1の図である。
【
図40】
図40は、第3実施形態の処理フローを模式的に示す第2の図である。
【
図41】
図41は、第3実施形態に係るデータ圧縮器の処理速度を検証した図である。
【
図42】
図42は、第3実施形態に係るデータ圧縮器の圧縮率を検証した図である。
【
図43】
図43は、第3実施形態に係るデータ圧縮器が、画像A、画像Bおよび画像Cの3種類の4K画像を圧縮した場合の処理速度を検証した図である。
【
図44】
図44は、第3実施形態に係るデータ圧縮器が、画像A、画像Bおよび画像Cの3種類の4K画像を圧縮した場合の圧縮率を検証した図である。
【
図45】
図45は、第4実施形態に係るデータ圧縮器のエントリ領域探索回路を模式的に示す図である。
【
図46】
図46は、第4実施形態において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。
【
図47】
図47は、比較例に係るエントリ領域探索回路を模式的に示す図である。
【
図48】
図48は、比較例において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。
【
図49】
図49は、第5実施形態に係るデータ解凍器のエントリ領域探索回路を模式的に示す図である。
【
図50】
図50は、第1変形例に係るエントリ領域探索回路を模式的に示す図である。
【
図51】
図51は、第2変形例に係るエントリ領域探索回路を模式的に示す図である。
【
図52】
図52は、第2変形例における、決定部からの選択信号、圧縮シンボルおよびインデックスの対応の一例を示す図である。
【発明を実施するための形態】
【0009】
開示の技術に係るデータ圧縮器は、例えば、以下の構成を有する。
複数の第1のデータを含む第1のデータ列を前記第1のデータ列のサイズより小さいサイズの第2のデータ列に圧縮するデータ圧縮器であって、
前記第1のデータと前記第1のデータよりサイズの小さい第2のデータとの対応関係を記憶可能な所定数のエントリ領域を有し、前記所定数のエントリ領域が複数のバンク領域に区分けされており、前記複数のバンク領域の夫々は、前記所定数より少ない数の連続したエントリ領域によって形成されている変換テーブルと、
前記複数の第1のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定する決定部と、
前記複数の第1のデータの夫々について、前記決定部によって決定された対応するバンク領域を形成する前記連続したエントリ領域を前記所定数または前記所定数より少ない数ずつ探索し、前記第1のデータに対応する前記第2のデータが記憶されている場合には、この記憶された前記第2のデータを出力し、前記第1のデータに対応する第2のデータが記憶されていない場合には、前記第1のデータに対応する第2のデータを取得し、取得した第2のデータを、他の第2のデータを記憶していないエントリ領域に登録するとともに、前記第1のデータを出力する処理部と、を備える、
データ圧縮器。
【0010】
開示の技術に係るデータ圧縮器において、第1のデータは、第1のデータ列に含まれるシンボルのうち所定数の連続するシンボルである。第2のデータは第1のデータよりもサイズが小さい。換言すれば、第1のデータが含むシンボル数の方が、第2のデータが含むシンボル数よりも多いということができる。複数のバンク領域は、複数の記憶装置を集めることで形成されてもよく、1つの記憶装置のアドレスを論理的に分割して形成されてもよい。連続したエントリ領域とは、エントリ領域夫々の物理アドレスが連続していてもよいし、論理アドレスが連続していてもよい。
【0011】
一意に決定とは、同じデータが入力されれば同じバンク領域が決定されることをいい、異なるデータに対して同じバンク領域が決定されることを妨げない。一意に決定とは、例えば、ハッシュ関数を用いて、第1のデータ(または、第1のデータが含む一部のデータ)に対するハッシュ値とバンク領域とを対応付け、同じ値を持つ第1のデータについて同じバンク領域が決定されればよい。なお、同じ値を持つ第1のデータについて同じバンク領域が決定されればハッシュ関数以外の手段を用いてもよい。
【0012】
エントリ領域を前記所定数または前記所定数より少ない数ずつ探索とは、決定されたバンク内の各エントリ領域をひとつずつ探索して、第1のデータに対応する第2のデータが記憶されているエントリ領域を検索することを含む。エントリ領域を探索する順番には限定は無く、バンクの先頭のエントリ領域から最後尾のエントリ領域へ向けて探索を行ってもよいし、バンクの最後尾のエントリ領域から先頭のエントリ領域へ向けて探索を行ってもよい。また、入力されるデータとエントリ領域とを対応付けておき、当該対応に基づいてエントリ領域を探索してもよい。入力されるデータとエントリ領域との対応付けにはハッシュ関数を用いてもよい。
【0013】
上記したデータ圧縮器では、所定数のエントリ領域を有する変換テーブルが、所定数より少ない数の連続したエントリ領域によって形成される複数のバンク領域に区分けされる。データ圧縮器は、複数の第1のデータの夫々の値に対応するバンク領域を前記複数のバンク領域の中から一意に決定し、決定したバンク領域内のエントリ領域を所定数または所定数より少ない数ずつ探索して第1のデータの圧縮処理を実行する。そのため、このようなデータ圧縮器によれば、探索する範囲を変換テーブル全体よりも狭めることができ、変
換テーブルに登録される変換規則の検索処理の所要時間が長時間化するのを回避し得る。
【0014】
開示の技術は、さらに、データ圧縮方法、データ圧縮プログラムおよび上記したデータ圧縮器によって圧縮されたデータを解凍するデータ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮器とデータ解凍器とを含むデータ圧縮解凍システムの側面から把握することも可能である。
【0015】
上記したデータ圧縮器、データ圧縮方法、データ圧縮プログラム、データ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮解凍システムの実施形態について、以下、図面を参照して、説明する。実施形態に係るデータ圧縮器は、受信側装置へ送信するデータ(例えば、ストリームデータ)に対する圧縮処理を行い、圧縮データを伝送路を介して受信側装置に送出する。以下に説明する実施形態の構成は例示であり、開示の技術は実施形態の構成に限定されない。
【0016】
<第1実施形態>
図1は、第1実施形態に係るデータ圧縮器と受信側装置の構成を例示する図である。データ圧縮器10と受信側装置20とは、伝送路800を介して通信可能に接続される。
図1に例示するデータ圧縮器10は、Central Processing Unit(CPU)701、主記憶
部702、補助記憶部703、通信部704および接続バスB1を含む情報処理装置である。CPU701、主記憶部702、補助記憶部703および通信部704は、接続バスB1によって相互に接続されている。
【0017】
CPU701は、マイクロプロセッサユニット(MPU)、プロセッサとも呼ばれる。CPU701は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のCPU701がマルチコア構成を有していても良い。CPU701が実行する処理のうち少なくとも一部は、CPU701以外のプロセッサ、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit(GPU)、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、CPU701が実行する処理のうち少なくとも一部は、集積回路(IC)、その他のディジタル回路によって実行されてもよい。また、CPU701の少なくとも一部にアナログ回路が含まれても良い。集積回路は、Large Scale Integrated circuit(LSI)、Application Specific Integrated Circuit(AS
IC)、プログラマブルロジックデバイス(PLD)を含む。PLDは、例えば、Field-Programmable Gate Array(FPGA)を含む。CPU701は、プロセッサと集積回路
との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラユニット(MCU)、System-on-a-chip(SoC)、システムLSI、チップセットなどと呼ばれる。情報処理装置700では、CPU701が補助記憶部703に記憶されたプログラムを主記憶部702の作業領域に展開し、プログラムの実行を通じて周辺装置の制御を行う。これにより、情報処理装置700は、所定の目的に合致した処理を実行することができる。主記憶部702および補助記憶部703は、情報処理装置700が読み取り可能な記録媒体である。
【0018】
主記憶部702は、CPU701から直接アクセスされる記憶部として例示される。主記憶部702は、Random Access Memory(RAM)およびRead Only Memory(ROM)を含む。
【0019】
補助記憶部703は、各種のプログラムおよび各種のデータを読み書き自在に記録媒体に格納する。補助記憶部703には、第1実施形態に係るデータ圧縮プログラムPも格納される。補助記憶部703は外部記憶装置とも呼ばれる。補助記憶部703には、オペレーティングシステム(Operating System、OS)、各種プログラム、各種テーブル等が格
納される。OSは、通信部704を介して接続される外部装置等とのデータの受け渡しを行う通信インターフェースプログラムを含む。外部装置等には、例えば、コンピュータネットワーク等で接続された、他の情報処理装置および外部記憶装置が含まれる。
【0020】
補助記憶部703は、例えば、Erasable Programmable ROM(EPROM)、ソリッド
ステートドライブ(Solid State Drive、SSD)、ハードディスクドライブ(Hard Disk
Drive、HDD)等である。また、補助記憶部703は、例えば、Compact Disc(CD)ドライブ装置、Digital Versatile Disc(DVD)ドライブ装置、Blu-ray(登録商標)Disc(BD)ドライブ装置等である。
【0021】
通信部704は、例えば、伝送路800とのインターフェースである。通信部704は、伝送路800を介して受信側装置20と通信を行う。
【0022】
受信側装置20は、上記で説明したデータ圧縮器10と同様のハードウェア構成を有する情報処理装置である。
【0023】
図2は、第1実施形態に係るデータ圧縮器の論理ブロックの一例を示す図である。データ圧縮器10は、上記の通り、ストリームデータに対する圧縮処理(可逆圧縮処理または非可逆圧縮処理)を行い、少なくとも一部が圧縮されたストリームデータを出力する。なお、ストリームデータは、テキストデータであってもバイナリデータであってもよい。また、データ圧縮器10は、固定長の処理単位であるシンボルの列としてストリームデータを扱う。1シンボルのサイズは任意に決定でき、例えば、ストリームデータがテキストデータである場合、2文字とすることができる。
【0024】
データ圧縮器10は、変換テーブル101、決定部102および処理部103を含む。データ圧縮器10は、CPU701が補助記憶部703に記憶されたデータ圧縮プログラムPを主記憶部702に読み出して実行することで、変換テーブル101、決定部102および処理部103を実現する。
【0025】
変換テーブル101は、圧縮前のデータと圧縮後のデータの対応関係を記憶可能なエントリ領域を複数有する。変換テーブル101は、例えば、補助記憶部703に記憶される。
図3は、第1実施形態に係る変換テーブルの一例を示す図である。
図3に例示される変換テーブル101は、圧縮前のデータと圧縮前のデータよりもデータサイズの小さい圧縮後のデータとの対応関係を記憶可能なエントリ領域1011を16個有する。エントリ領域1011は、論理アドレスまたは物理アドレス(以下、論理アドレスと物理アドレスを特に区別しない場合「アドレス」と称する)にしたがった順に連続して並んでいる。変換テーブル101が有する16個のエントリ領域1011は、4個のバンク領域1012に区分けされる。バンク領域1012の夫々は、4個のエントリ領域1011を有する。以下、本明細書において、バンク領域1012の夫々を区別する場合には、アドレス順にしたがって、バンク領域1、バンク領域2、バンク領域3、バンク領域4とも称する。
【0026】
図4は、バンク領域の一例を示す図である。バンク領域は、変換の対象となる2つのシンボル「被圧縮シンボル列」(すなわち、変換前のシンボル列)と、圧縮処理によって変換される1つのシンボル「圧縮シンボル」(すなわち、変換後のシンボル)と、当該圧縮シンボルへのアクセス回数を表す「参照頻度」とを各エントリ領域1011において対応付けて管理するテーブルである。エントリ領域1011に登録される情報をレコードとも称する。なお、入力シンボル列に含まれる2つのシンボルを、便宜上、「シンボル0」、「シンボル1」と称する。第1実施形態において、エントリ領域1011のレコードは動的に追加および削除されるが、処理の開始時においてあらかじめ何らかのレコードがエントリ領域1011に登録されていてもよい。第1実施形態では、
図4に示す1つの英字が
1つのシンボルを表すものとする。
【0027】
決定部102は、データ圧縮器10に圧縮対象となるストリームデータが入力されると、入力されたストリームデータに含まれる連続するシンボル列(例えば、2文字のシンボルであり、「シンボルペア」とも称する)の圧縮処理に使用するバンク領域1012を決定する。バンク領域1012の決定では、決定部102は、ハッシュ関数1021を用いる。ハッシュ関数1021は、演算結果がバンク領域の何れかに対応付けられており、同一の入力値に対して一意に定まる演算結果を出力する。決定部102は、入力されたシンボルペアの一部のデータに対してこのようなハッシュ関数1021による演算を行って演算結果を取得し、取得した演算結果に対応するバンク領域1012を当該シンボルペアの圧縮処理に使用するバンク領域1012として決定する。なお、シンボルペアの一部のデータとは、例えば、シンボルペアの下位2ビットである。
【0028】
処理部103は、決定部102が決定したバンク領域1012を用いて、シンボルペアの圧縮処理を行う。処理部103は、バンク領域1012の各エントリ領域1011をひとつずつ探索し、決定したバンク領域1012のいずれかのエントリ領域1011において、シンボルペアを圧縮前のデータとするレコードが登録されている場合、すなわち、シンボルペアに対応する圧縮後のシンボルが登録されている場合には、シンボルペアを圧縮後のシンボルに変換して出力する。また、検索の結果、決定したバンク領域1012のいずれのエントリ領域1011にもシンボルペアを圧縮前のデータとするレコードが登録されていない場合、すなわち、シンボルペアに対応する圧縮後のシンボルが登録されていない場合には、シンボルペアを圧縮せずにそのまま出力し、当該シンボルペアを圧縮前のシンボルとするレコードを、レコードが登録済みのエントリ領域1011と連続するエントリ領域1011に登録する。
【0029】
さらに、処理部103は、ストリームデータに含まれるシンボルの出現頻度に応じて、バンク領域1012に対してエントリ領域1011に登録されるレコードの追加および削除を実行する。
【0030】
<データ圧縮器のハッシュ関数>
図5は、データ圧縮器のハッシュ関数による入力シンボルとバンク領域との対応付けを模式的に示す図である。ハッシュ関数1021は、
図3に例示されるように、入力シンボルとバンク領域とを対応付ける。
図5に模式的に示されるハッシュ関数1021では、例えば、シンボル「AA」は「バンク領域1」に対応付けられる。
【0031】
<圧縮処理>
図6は、第1実施形態に係るデータ圧縮器が実行する圧縮処理の工程を模式的に示す処理フロー図である。ステップS1では、データ圧縮器10の処理部103は、変換テーブル101の各バンク領域(バンク領域1~バンク領域4)のエントリを初期化する。ステップS1では、例えば、各バンクのエントリを全て削除してもよいし、所定のエントリをあらかじめ登録してもよい。
【0032】
ステップS2では、データ圧縮器10の決定部102は、ストリームデータからシンボルペアを抽出する。ステップS3では、決定部102は、ステップS2で抽出したシンボルペアに対応付けられたバンク領域1012を、ハッシュ関数1021を用いて決定する。ステップS3の処理は、「決定ステップ」の一例である。
【0033】
ステップS4では、データ圧縮器10の処理部103は、シンボルペアが非圧縮シンボル列として登録されているか、ステップS2において決定されたバンク領域1012を検索する。
【0034】
シンボルペアを非圧縮シンボル列として保持するエントリ領域1011がバンク領域1012に登録されている場合(ステップS5において、YES)、処理部103は当該エントリに登録されている圧縮シンボルを出力する(ステップS6)。
【0035】
一方、シンボルペアを非圧縮シンボル列として保持するエントリ領域1011がバンク領域1012に登録されていない場合(ステップS5において、NO)、処理部103は、ステップS2で抽出されたシンボルペアを順に出力する(ステップS6)。また、処理部103は、当該シンボルペアを非圧縮シンボル列とするエントリを、ステップS3で選定したバンクに登録する(ステップS8)。ステップS4からS8の処理は、「処理ステップ」の一例である。
【0036】
そして、ステップS6またはS8の後、ストリームデータに後続のシンボルペアが存在する場合(ステップS9において、YES)、ステップS2に戻って処理を繰り返す。一方、ストリームデータに後続のシンボルペアが存在しない場合(ステップS9において、NO)、圧縮処理を終了する。なお、ストリームデータの最後がシンボルペアを構成しない1つのシンボルである場合には、当該シンボルをそのまま出力すればよい。なお、上述のフローは一例であり、一部の処理の順番を入れ替えたり並列に行ったりしてもよい。例えば、ステップS7とステップS8の順序を逆にしてもよい。
【0037】
<変換テーブルの生成および更新>
次に、
図5に模式的に対応関係を示したハッシュ関数1021と
図7~
図11とを用い
て、変換テーブル101へレコードを追加する具体例を説明する。
図7~
図11は、変換
テーブル101の生成および更新を説明するための図である。この例では、「AABBAAABADACBB」というストリームデータ(「入力データ」と称する)をデータ圧縮器10が圧縮し、圧縮したデータを送信するものとする。また、データ圧縮器10は、入力データを2シンボルずつ処理する。すなわち、「AA」、「BB」、「AA」・・・という単位で処理をする。
【0038】
まず、
図7に示すように、処理開始前の初期的な変換テーブル101では、バンク領域1~バンク領域4のいずれのエントリにもレコードが登録されていないものとする。また、変換テーブル101の各バンク領域1012の最大エントリ数(量)は、それぞれ2とする。そして、
図8に示すように、入力データのうち先頭のシンボルペア「AA」が入力されると、決定部102は、ハッシュ関数1021を用いて、シンボルペア「AA」の圧縮処理に用いるバンク領域としてバンク領域を決定する。
【0039】
処理部103は、決定したバンク領域1の各エントリ領域1011をアドレス順に検索する。
図7に示すように、決定したバンク領域1には、被圧縮シンボル列として「AA」が登録されたエントリ領域1011が存在しない(すなわち、バンク領域1のエントリにヒットしない)。そのため、処理部103は、シンボルペア「AA」を変換せずに出力する。併せて、処理部103は、変換テーブル101のバンク領域1に、シンボルペア「AA」を被圧縮シンボル列とするエントリを追加する。なお、当該エントリ領域1011のレコードには、圧縮シンボルとして、他の圧縮シンボルと重複しない値が割り当てられる。圧縮シンボルは、例えば、エントリに付される添数(インデックス)であってもよい。
図8の例では、圧縮シンボルとして「0」が登録されている。また、当該エントリの参照頻度として、当該シンボルペアの出現回数を示す「1」が登録される。
【0040】
このように決定部102が入力ストリームの各シンボルペアに対して圧縮に使用するバンク領域1012を決定し、処理部103が決定したバンク領域1012をアドレス順に検索する。処理部103は、決定したバンク領域1012においてシンボルペアが登録さ
れたエントリ領域1011が存在しない場合には、上記の通り、シンボルペアを変換せずに出力する。併せて、処理部103は、変換テーブル101のバンク領域1に、シンボルペア「AA」を被圧縮シンボル列とするレコードを追加する。
【0041】
また、処理部103は、決定したバンク領域1012においてシンボルペアが登録されたエントリ領域1011が存在する場合には、当該エントリ領域1011においてシンボルペアに対応付けられる圧縮シンボルを出力するとともに、当該エントリ領域1011の参照頻度に「1」を加算する。
【0042】
バンク領域1012が有するエントリ領域1011の数は有限であるため、このような処理を継続すると、いずれかのバンク領域1012において空いているエントリ領域1011が枯渇することがある。
図9は、バンク領域1において空いているエントリ領域1011が枯渇した状態の一例を示す図である。この状態において、シンボルペア「AC」の圧縮処理を行う場合を考える。シンボルペア「AC」はハッシュ関数1021によってバンク領域1に対応付けられており、かつ、シンボルペア「AC」はバンク領域1のいずれのエントリ領域1011にも登録されていない。そのため、処理部103は、シンボルペア「AC」を変換せずに出力するとともに、シンボルペア「AC」をバンク領域1に登録しようとする。しかしながら、バンク領域1には、空いているエントリ領域1011が無いため、このままではシンボルペア「AC」を登録することはできない。
【0043】
このような場合、処理部103は、バンク領域1の各エントリ領域1011の参照頻度を「1」減算する。処理部103は、参照頻度の減算結果が「0」になったレコードを削除することで、空いているエントリ領域1011を確保する。ここでは、参照頻度を「1」減算すると、被圧縮シンボル列としてシンボルペア「AB」のレコードにおいて参照頻度が0になる。そのため、被圧縮シンボル列としてシンボルペア「AB」のレコードが削除されて、当該レコードを記憶していたエントリ領域1011が空き領域となる。
【0044】
このような処理を行うことで、処理部103は、空き領域となったエントリ領域1011にシンボルペア「AC」を被圧縮シンボルとするレコードを空き領域となったエントリ領域1011に記憶させることができる。
図10は、シンボルペア「AC」を被圧縮シンボルとするレコードを空き領域となったエントリ領域に記憶させた状態の一例を示す図である。
【0045】
図11は、ストリームデータの圧縮を完了したときの変換テーブルの一例を示す図である。以上説明した処理を継続することで、データ圧縮器10は、ストリームデータ、「AABBAAABADACBB」を圧縮したストリームデータ「AABB0ABADAC4」を出力することができる。
【0046】
以上のようなデータ圧縮器10によれば、シンボルペアを1つの圧縮シンボルに置き換えた分だけ、伝送路800を流れるデータ量を削減することができる。また、処理単位を固定長のシンボルとすること等により、処理に要する時間を一定以下に抑えることができる。また、入力データに含まれるシンボルの出現傾向に基づいて変換テーブルにエントリを追加するため、事前に変換テーブルを用意しなくともよい。このように、ストリームデータをリアルタイムに圧縮する場合において、ストリームデータの傾向に沿った変換規則を生成および適用できるようになる。
【0047】
さらに、データ圧縮器10は、所定数のエントリ領域1011を有する変換テーブル101を、当該所定数よりも少ないエントリ数の複数のバンク領域に分割することで、変換テーブル101を検索する検索範囲を狭めることができる。そのため、被圧縮シンボルに対応する圧縮シンボルをひとつずつ探索して検索する検索時間を短縮できる。
【0048】
データ圧縮器10が可逆圧縮を行う場合、被圧縮シンボルを圧縮シンボルに圧縮して出力したか否かを示す付加ビットを出力してもよい。付加ビットは、例えば、出力されるシンボルが変換後のシンボルである場合には「1」、変換後のシンボルでない場合には「0」である。すなわち、データ圧縮器は、被圧縮シンボルを圧縮シンボルに圧縮して出力する際には当該圧縮シンボルに付加ビットとして「1」を付加し、被圧縮シンボルを圧縮せずに出力する場合には付加ビットとして「0」を付加すればよい。
【0049】
<データ解凍器>
データ圧縮器10が可逆圧縮したストリームデータを出力する場合、
図1に示した受信側装置20は、受信したストリームデータを解凍するデータ解凍器20として機能すればよい。データ解凍器20は、例えば、
図1に例示したデータ圧縮器10と同様のハードウェア構成を有する情報処理装置である。
図12は、データ解凍器の一例を示す論理ブロック図である。データ解凍器20は、変換テーブル201、決定部202および処理部203を含む。データ解凍器20は、データ圧縮器10が可逆圧縮したストリームデータを解凍する。
【0050】
データ解凍器20は、変換テーブル201、決定部202および処理部203を含む。データ解凍器20は、データ解凍器20のCPU701が補助記憶部703に記憶されたデータ解凍プログラムを主記憶部702に読み出して実行することで、変換テーブル201、決定部202および処理部203を実現する。
【0051】
変換テーブル201は、解凍前のデータとの解凍後データの対応関係を記憶可能なエントリ領域を複数有する。変換テーブル201は、例えば、補助記憶部703に記憶される。
図13は、データ解凍器の変換テーブルの一例を示す図である。
図13に例示される変換テーブル201は、解凍前のデータと解凍後のデータとの対応関係を記憶可能なエントリ領域2011を16個有する。エントリ領域2011は、アドレスにしたがった順に連続して並んでいる。変換テーブル201が有する16個のエントリ領域2011は、4個のバンク領域2012に区分けされる。バンク領域2012の夫々は、4個のエントリ領域2011を有する。以下、本明細書において、バンク領域2012の夫々を区別する場合には、アドレス順にしたがって、解凍バンク領域1、解凍バンク領域2、解凍バンク領域3、解凍バンク領域4とも称する。変換テーブル201は、「解凍変換テーブル」の一例である。エントリ領域2011は、「解凍エントリ領域」の一例である。
【0052】
図14は、解凍バンク領域の一例を示す図である。解凍バンク領域は、解凍の対象となる1つのシンボル「被解凍シンボル列」(すなわち、解凍前のシンボル列)と、解凍処理によって変換される2つのシンボル「解凍シンボル」(すなわち、解凍後のシンボル)と、当該被解凍シンボルへのアクセス回数を表す「参照頻度」とを各エントリ領域2011において対応付けて管理するテーブルである。エントリ領域2011に登録される情報をレコードとも称する。なお、入力シンボル列に含まれる2つのシンボルを、便宜上、「シンボル0」、「シンボル1」と称する。第1実施形態において、エントリ領域2011のレコードは動的に追加および削除されるが、処理の開始時においてあらかじめ何らかのレコードがエントリ領域1011に登録されていてもよい。第1実施形態では、
図14に示す1つの英字が1つのシンボルを表すものとする。
【0053】
決定部202は、データ解凍器20に解凍対象となるストリームデータが入力されると、シンボルを抽出し、当該シンボルに付加されている付加ビットを確認する。付加ビットとして「0」が付加されている場合、すなわち、抽出したシンボルが圧縮されていない場合には、決定部102は、抽出したシンボルと当該シンボルの次のシンボルとを併せて2つのシンボルペアの解凍処理に使用するバンク領域2012を決定する。付加ビットとし
て「1」が付加されている場合、すなわち、抽出したシンボルが圧縮されている場合には、決定部202は、抽出したシンボルの解凍処理に使用するバンク領域2012を決定する。
【0054】
バンク領域2012の決定では、決定部202は、ハッシュ関数2021を用いる。ハッシュ関数2021は、演算結果が解凍バンク領域の何れかに対応付けられており、同一の入力値に対して一意に定まる演算結果を出力する。決定部202は、抽出したシンボルが圧縮されている場合、抽出したシンボルの一部のデータに対してハッシュ関数2021による演算を行って演算結果を取得する。また、決定部202は、抽出したシンボルが圧縮されていない場合、抽出したシンボルと当該シンボルの次のシンボルとを併せたシンボルペアの一部のデータに対してハッシュ関数2021による演算を行って演算結果を取得する。取得した演算結果に対応するバンク領域2012を当該シンボルの解凍処理に使用するバンク領域2012として決定する。
【0055】
処理部203は、決定部202が決定したバンク領域2012を用いて、解凍処理を行う。解凍処理では、処理部203は、バンク領域2012の各エントリ領域2011をひとつずつ探索する。処理部203は、付加ビットとして「0」が付加されている場合には、当該シンボルペアを解凍後のシンボルペアとするレコードを決定したバンク領域2012において、レコードが登録済みのエントリ領域2011と連続するエントリ領域2011に登録するとともに、当該シンボルペアを出力する。
【0056】
処理部203は、付加ビットとして「1」が付加されている場合には、決定したバンク領域2012のエントリ領域2011をアドレス順に検索する。処理部203は、当該シンボルを解凍前のシンボルとしたレコードが登録されている場合、当該レコードにおいて当該シンボルに対応付けられた解凍後のシンボルペアを出力する。
【0057】
さらに、処理部203は、ストリームデータに含まれるシンボルの出現頻度に応じて、バンク領域2012に対してエントリ領域2011に登録されるレコードの追加および削除を実行する。
【0058】
<データ解凍器のハッシュ関数>
図15は、データ解凍器のハッシュ関数による入力シンボルと解凍バンク領域との対応付けを模式的に示す図である。ハッシュ関数2021は、
図15に例示されるように、入力シンボルと解凍バンク領域とを対応付ける。
図15に模式的に示されるハッシュ関数2021では、例えば、シンボル「0」は「バンク領域1」に対応付けられる。データ解凍器20のハッシュ関数2021は、入力シンボルとして圧縮前のシンボルペアと圧縮後のシンボルのいずれもが入力され得る点で、データ圧縮器10のハッシュ関数1021とは異なる。
【0059】
<解凍処理>
図16は、第1実施形態に係る解凍処理の工程を模式的に示す処理フロー図である。
図16に例示される処理フローは、「データ解凍方法」の一例である。ステップS11では、データ解凍器20の決定部202は、変換テーブル201の各バンク領域2012(解凍バンク領域1~解凍バンク領域4)のエントリを初期化する。本ステップでは、例えば、各バンク領域2012のレコードを全て削除してもよいし、所定のレコードをあらかじめ登録してもよい。
【0060】
ステップS12では、データ解凍器20の決定部202は、ストリームデータからシンボルおよび付加ビットを抽出する。ステップ12で抽出したシンボルが圧縮シンボルである場合、すなわち、付加ビットが1である場合(ステップS13においてYES)、決定
部202は、ハッシュ関数2021を用いて圧縮シンボルに対応するバンクを選定し、(ステップS14)。選定したバンクから復号シンボル列を出力させる(ステップS15)。
【0061】
一方、ステップ12で抽出したシンボルが圧縮シンボルではない場合、すなわち、付加ビットが0である場合(ステップS13においてNO)、決定部202は、抽出したシンボルを処理部203に渡すとともに、当該シンボルが圧縮シンボルではない旨を処理部203に通知する。処理部203は、決定部202から受け取ったシンボルと、当該シンボルの次のシンボルとを併せて2つのシンボル(シンボルペア)を出力する(ステップS16)。また、ステップS17において、決定部202は、ハッシュ関数2021を用いて、ステップS16のシンボルペアに対応するバンクを選定する。また、処理部203は、当該シンボルペアを復号シンボル列とするエントリを、ステップS17で選定したバンクに登録する(ステップS18)。なお、ステップS16、S17およびS18の処理を実行する順序は、並列であってもよいし、入れ替えてもよい。
【0062】
ステップS15またはS18の後、ストリームデータに後続のシンボルが存在する場合(ステップS19において、YES)、ステップS12に戻って処理を繰り返す。一方、ストリームデータに後続のシンボルが存在しない場合(ステップS19において、NO)、解凍処理を終了する。
【0063】
<変換テーブルの生成および更新>
次に、
図15に模式的に示したハッシュ関数2021と
図17~
図19を用いて、変換テーブル201へエントリを追加する具体例を説明する。
図17~
図19は、変換テーブルの生成および更新を説明するための図である。この例では、「AABB0ABADAC4」というストリームデータ(「入力データ」と称する)が伝送路800を介してデータ解凍器20へ送られてきたものとする。
【0064】
まず、
図17に示すように、処理開始前の初期的な変換テーブル201では、解凍バンク領域1~解凍バンク領域4のいずれにもレコードが登録されていないものとする。また、変換テーブル201の各解凍バンク領域の最大エントリ数(量)は、それぞれ2とする。また、入力データのうち先頭のシンボル「A」が入力されるとともに、付加ビットとして「0」が入力されるものとする。すなわち、シンボル「A」は圧縮シンボルではないため、
図18に示すように、次のシンボルと併せたシンボルペア「AA」を読み出す。
【0065】
決定部202は、ハッシュ関数2021を用いて、シンボルペア「AA」に対応付けられたバンク領域2012として解凍バンク領域1を選定する。決定部202は、決定した解凍バンク領域1に対しシンボルペア「AA」を解凍前のシンボル列とし、解凍後のシンボルとして「0」を登録する。ここで、解凍後のシンボルとして登録される「0」は、データ圧縮器10と同様に、変換テーブル201のインデックスを利用している。また、当該レコードの参照頻度として、当該シンボルの出現回数を示す「1」が登録される。処理部203は、決定部202が読み出したシンボルペア「AA」を出力する。
【0066】
次に、入力データのうちの次のシンボル「B」も圧縮シンボルではないと判定され、シンボルペア「BB」が読み出され、読み出されたシンボルペア「BB」が出力される。さらに、決定部202は、ハッシュ関数2021を用いて、シンボルペア「BB」に対応付けられたバンク領域をバンク領域3に決定する。処理部203は、決定したバンク領域3に対しシンボルペア「BB」を復号シンボル列とし、圧縮シンボルとして上記したように変換テーブル201のインデックスである「4」を登録する。また、当該エントリの参照頻度として、当該シンボルの出現回数を示す「1」が登録される。
【0067】
その後、決定部202が次のシンボル「0」を抽出すると、付加ビットとして「1」が入力される。決定部202は、ハッシュ関数2021を用いて、シンボル「0」の解凍処理に用いるバンク領域2012として解凍バンク領域1を決定する。処理部203は、決定した解凍バンク領域1において、解凍前のシンボル「0」に対応付けられる解凍後のシンボルペアを出力し、当該レコードの参照頻度に「1」を加算する。
【0068】
このような処理を繰り返しながら解凍処理を継続すると、いずれかのバンク領域2012において空いているエントリ領域2011が枯渇することがある。このような場合、処理部203は、データ圧縮器10の処理部103と同様に、ハッシュ関数2021によって決定したバンク領域2012に登録されている各レコードの参照頻度を「1」減算し、参照頻度が「0」になったレコードをバンク領域2012から削除することで、空いているエントリ領域2011を確保し、確保したエントリ領域2011に新たなレコードを追加すればよい。
【0069】
以上のような解凍処理を実行することで、データ解凍器20は、
図19に例示されるように、入力ストリーム「AABB0ABADAC4」を解凍したストリーム「AABBAAABADACBB」を出力する。
【0070】
以上のようなデータ解凍器20によれば、データ圧縮器10が可逆圧縮したストリームデータを復号することができる。また、処理単位を固定長のシンボルとすること等により、処理に要する時間を一定以下に抑えることができる。また、ストリームデータに含まれるシンボルの出現傾向に基づいてデータ圧縮器10側と同様のルールで変換テーブルにエントリを追加するため、事前に変換テーブルを用意しなくともよい。このように、ストリームデータをリアルタイムに解凍する場合において、ストリームデータの傾向に沿った変換規則を生成および適用できるようになる。
【0071】
さらに、データ解凍器20は、所定数のエントリ領域2011を有する変換テーブル201を、当該所定数よりも少ないエントリ数の複数のバンク領域に分割することで、変換テーブル201を検索する検索範囲を狭めることができる。そのため、データ解凍器20は、変換テーブルを検索する処理時間を短縮でき、ひいてはデータ解凍にかかる処理時間を短縮できる。
【0072】
<検証>
上記したデータ圧縮器10について、変換テーブルを分割するバンクの数を変化させたときの処理時間および圧縮率について検証を実施したので、図面を参照して説明する。本検証では、エントリ数が256である変換テーブル101を有するデータ圧縮器10を4段連結し、バンク数を1、2、4、8、16のそれぞれの場合における、圧縮処理の処理時間および圧縮率を計測した。
【0073】
図20は、第1実施形態に係るデータ圧縮器を4段連結した構成の一例を示す図である。
図20に例示されるように、1段目のデータ圧縮器10に入力ストリームデータが入力されると、1段目のデータ圧縮器10は、当該入力ストリームデータに対する圧縮処理を行った圧縮データを2段目のデータ圧縮器10に出力する。2段目のデータ圧縮器10は、1段目のデータ圧縮器10が圧縮した圧縮データに対する圧縮処理を行った圧縮データを3段目のデータ圧縮器10に出力する。このような処理を4段目のデータ圧縮器10まで継続して実行する。
【0074】
第1実施形態に係るデータ圧縮器10は、シンボルペアを一つのシンボルに変換するため、圧縮前のデータサイズに対する圧縮後のデータサイズの割合である圧縮率は最大でも50%である。
図20に例示するように、データ圧縮器10を複数連結することで圧縮デ
ータに対する圧縮処理をさらに実行することができるため、圧縮率を高めることができる。
【0075】
図21は、変換テーブルを分割するバンクの数と圧縮に係る処理時間との関係を示す図である。
図21では、縦軸に処理時間、横軸にバンクの数が示される。また、
図21に示す検証では、ファイルサイズ10MBのテキストデータを用い、データの内容は6種類(Deoxyribonucleic Acid(DNA)構造データ、eXtensible Markup Language(XML)
データ、Musical Instrument Digital Interface(MIDI)データ、タンパク質構造のデータ、プログラムのソースコードおよび英文のテキストデータ)用意し、これらのデータについて、それぞれ検証を行った。
図21において、バンク領域の数が「1」とは、変換テーブルを複数のバンク領域に分割せずに圧縮処理を行った場合を示す。
【0076】
図21を参照すると、変換テーブルを分割するバンク領域の数を増加させると、処理時間を短縮できることが理解できる。これは、バンク領域の数が増加する毎に、被圧縮シンボルを検索する範囲が狭くなる(すなわち、検索対象とするエントリ領域の数が減少する)ため、被圧縮シンボルに対応する圧縮シンボルを検索する処理が高速化されるためであると考えられる。
【0077】
図22は、変換テーブルを分割するバンク領域の数と圧縮率の関係を示す図である。
図22では、縦軸に圧縮率、横軸にバンクの数が示される。
図22に示す検証では、
図21に示す検証と同様のテキストデータを用いた。
図22において、バンク領域の数が「1」とは、
図21の場合と同様に、変換テーブルを複数のバンク領域に分割せずに圧縮処理を行った場合を示す。
【0078】
図22を参照すると理解できるように、DNA構造データを除く5種類のデータにおいて、圧縮率の悪化は見られなかった。また、DNA構造データについては、バンク領域の数が4までであれば、圧縮率の低下は見られない。
図21および
図22が示す検証結果により、変換テーブルを複数のバンク領域に分割することで、圧縮の処理速度を向上させることができることがわかる。圧縮されたデータの解凍についても、同様である。
【0079】
<第1実施形態の検討>
上記の通り、第1実施形態によれば圧縮の処理速度を向上させることができる。一方で、データの種類によっては圧縮率が低下することがある。そこで、圧縮率が若干悪化することのあるDNA構造データと、圧縮率の悪化がほぼ見られないタンパク質構造のデータを比較し、どのような違いがみられるかを検討する。
【0080】
図23は、データ圧縮器がDNA構造データを圧縮した場合における、各バンク領域のヒット率を示す図である。
図23において、縦軸はヒット率を示し、横軸は時間を示す。
図23では、変換テーブルを8つのバンク領域に分割した場合の検証結果を示す。ヒット率は、シンボル列をキーとしてバンクを検索した回数に対する、シンボル列が非圧縮シンボル列として登録されていた回数の割合である。
【0081】
図23を参照すると、DNA構造データを圧縮する場合、バンク領域によってヒット率が大きく異なることがわかる。特に、バンク領域1、バンク領域2、バンク領域5では、他のバンク領域よりも低いヒット率で推移していることがわかる。そのため、DNA構造データを圧縮する場合、圧縮されずにそのまま出力されるデータが多いことがわかる。
【0082】
図24は、データ圧縮器がDNA構造データを圧縮した場合における、各バンクの占有数を示す図である。占有数は、各バンク領域のエントリ領域のうち、レコードが登録されているエントリ領域の数である。
図24において、縦軸は占有数を示し、横軸は時間を示
す。
図24では、
図23の場合と同様に、変換テーブルを8つのバンク領域に分割した場合の検証結果を示す。
【0083】
図24を参照すると、DNA構造データを圧縮する場合、バンク領域によって占有数が大きく異なることがわかる。特にバンク領域7の占有数は、他のバンク領域よりも低い占有数で推移していることがわかる。すなわち、DNA構造データを圧縮する場合、有効に利用されないバンクが多いことがわかる。
【0084】
DNA構造は、アデニン(A)、チミン(T)、グアニン(G)、シトシン(C)の4種類の文字によって表現されるため、他の種類のデータと比較して、データのパターンが少なくなる。そのため、使用頻度の低いバンクが出現しやすくなる。そのため、変換テーブル101に登録可能なレコード数が実質的に減少するおそれがある。また、使用されるバンクが一部のバンク領域1012に偏るため、一度登録されたエントリがバンク領域1012のレコード数の最大に達したことにより削除されやすくなるため、ヒット率も低くなりやすい。
【0085】
<第2実施形態>
第1実施形態では、変換テーブルを複数のバンクに分割することで、圧縮に係る処理速度を向上させた。しかしながら、上記検討により、データの種類によっては、圧縮率が悪化する場合がある。そこで、第2実施形態では、複数のバンク領域に分割した変換テーブルを用いて処理速度を向上させつつ、圧縮率の悪化を抑制する構成について説明する。
【0086】
第2実施形態では、圧縮を行った後のヒット率と占有数を制御部にフィードバックし、制御部はフィードバックされたヒット率と占有数に基づいて、より均等に各バンク領域が使用できるように、バンク領域を決定する。
【0087】
図25は、第2実施形態に係るデータ圧縮器の一例を示す図である。
図25において、第1実施形態と同一の構成については同一の符号を付し、その説明を省略する。第2実施形態に係るデータ圧縮器10aは、決定部102a、処理部103a、ヒット状況記録テーブル104、ヒット率算出部105、占有数算出部106を備える点で、第1実施形態に係るデータ圧縮器10とは異なる。
【0088】
ヒット状況記録テーブル104は、
図26に例示されるように、バンク領域1012と、当該バンク領域1012を検索した検索回数およびヒットした回数とを対応付けて管理するテーブルである。ヒット状況記録テーブル104は、例えば、補助記憶部703に記憶される。
図26に例示されるヒット状況記録テーブル104では、例えば、「バンク領域4」は「3回」検索され、「3回」ヒットしていることがわかる。
【0089】
処理部103aは、バンク領域1012の検索を実行する毎にヒット状況記録テーブル104に検索を行ったバンク領域1012の検索回数に「1」加算し、検索がヒットすると当該バンク領域1012のヒット回数に「1」加算する点で、第1実施形態に係る処理部103とは異なる。また、処理部103aは、決定部102aからヒット状況記録テーブル104のリセットを要求されると、ヒット状況記録テーブル104の検索回数およびヒット回数を「0」にリセットする。
【0090】
決定部102aは、所定回数(例えば、100回)の検索毎に、ヒット率および占有数の夫々についてヒット率閾値、占有数閾値と比較した結果に基づいて圧縮に使用するバンク領域を変更する点で第1実施形態に係る決定部102とは異なる。ヒット率閾値および占有数閾値はユーザによって実験等によって好適な値が定められ、補助記憶部703に記憶される。また、決定部102aは、ヒット率算出部105に対して、ハッシュ関数10
21を用いて決定したバンク領域1012のヒット率の算出を依頼したり、占有数算出部106に対して、変換テーブル101が有する各バンク領域1012夫々の占有数の算出を依頼したりする。決定部102aは、ヒット率および占有数の算出後、ヒット状況記録テーブル104のリセットを処理部103aに依頼する。ヒット率閾値は、「第1ヒット率閾値」の一例である。
【0091】
ヒット率算出部105は、決定部102aからの要請に応じて、ヒット状況記録テーブル104を参照して、バンク領域1012のヒット率を算出する。ヒット率算出部105は、決定部102aからバンク領域1012を指定されると、指定されたバンク領域1012のヒット率を算出する。ヒット率は、ヒット状況記録テーブル104に記録されたヒット回数を検索回数で除算することで算出できる。
【0092】
占有数算出部106は、決定部102aからの要請に応じて、各バンク領域1012の占有数を算出する。占有数とは、バンク領域1012のうち、レコードが格納されたエントリ領域1011の数である。占有数算出部は、決定部102aから占有数の算出を依頼されると、変換テーブル101にアクセスして、バンク領域1012毎に、レコードが格納されたエントリ領域1011の数を算出する。
【0093】
<ヒット状況記録テーブルの更新>
図27は、第2実施形態にヒット状況記録テーブルの更新処理を組み込んだ圧縮処理を模式的に示した図である。第1実施形態と同一の処理は同一の符号を付しその説明を省略する。以下、
図27を参照して、第2実施形態にヒット状況記録テーブルの更新処理を組み込んだ圧縮処理について説明する。
【0094】
ステップS1aでは、変換テーブル101とともに、ヒット状況記録テーブル104の初期化が行われる。ヒット状況記録テーブル104の初期化では、例えば、ヒット状況記録テーブル104の検索回数およびヒット回数が「0」にされる。
【0095】
ステップS1aを終えると、
図6のステップS2からステップS8までの処理が行われる。その後、ステップS21において、処理部103は、ヒット状況記録テーブル104において、ステップS3で決定したバンク領域の検索回数に「1」を加算する。ステップS22では、処理部103は、ヒットした場合、すなわち、ステップS5において「YES」に分岐していた場合、ヒット状況記録テーブル104において、ステップS3で決定したバンク領域のヒット回数に「1」を加算する。
【0096】
ステップS24では、処理部103は、ヒット状況記録テーブル104に記録された各バンク領域における検索回数の合計が所定回数(本実施形態では100回)であるか否かを判定する。検索回数の合計が所定回数である場合、処理はS25に進められ、バンク領域変更処理(
図28を参照して後述)が実行される。ステップS26では、バンク領域変更処理実行後の決定部102aからの依頼にしたがって、処理部103aは、ヒット状況記録テーブル104の初期化を実行する。その後、処理はS2に戻される。検索回数の合計が所定回数ではない場合、ステップS9の処理が実行される。
【0097】
図27の処理が実行されることで、シンボルペアの圧縮処理が実行されるたびに、ヒット状況記録テーブル104において、バンク領域1012の検索回数およびヒット回数が更新される。
【0098】
決定部102aは、ヒット状況記録テーブル104に記録された各バンク領域における検索回数の合計が所定回数(例えば、100回)になると、ハッシュ関数1021を用いて決定するバンク領域1012の変更処理を実行する。
図28は、第2実施形態における
、バンク領域の変更処理を模式的に示した図である。すなわち、
図28は、
図27におけるステップS25の詳細な処理の一例を示す。以下、
図28を参照して、バンク領域の変更処理について説明する。
【0099】
ステップS31では、決定部102aは、ヒット率算出部105に対して、ステップS3で決定したバンク領域1012のヒット率算出を依頼する。ヒット率算出部105は、ヒット状況記録テーブル104を参照して、ステップS3で決定したバンク領域1012の検索回数とヒット回数とを取得する。ヒット率算出部105は、取得した検索回数でヒット回数を除算することで、当該バンク領域1012のヒット率を算出する。
【0100】
続いて、ステップS32では、決定部102aは、占有数算出部106に対して、ステップS3で決定したバンク領域1012を含む変換テーブル101上の各バンク領域1012の占有数の算出を依頼する。占有数算出部106は、変換テーブル101を参照して、各バンク領域1012について、レコードが記録されているエントリ領域1011の数を、当該バンク領域1012の占有数として算出する。
【0101】
ステップS33では、決定部102aは、ステップS31で算出したヒット率と、ヒット率閾値とを比較する。算出したヒット率がヒット率閾値よりも高い場合(ステップS33でYES)、処理はS21に進められる。算出したヒット率がヒット率閾値よりも低い場合(ステップS33でNO)、処理はS34に進められる。なお、ヒット率閾値は、例えば、データ圧縮器10のユーザによって指定され、補助記憶部703に記憶される。
【0102】
ステップS34では、決定部102aは、ステップS32で算出した占有数と、占有数閾値とを比較する。算出した占有数が占有数閾値よりも高い場合(ステップS34でYES)、処理はS21に進められる。算出した占有数が占有数閾値よりも低い場合(ステップS34でNO)、処理はS35に進められる。なお、ステップS33とステップS34の処理の順番は入れ替えてもよい。ステップS33とステップS34の双方で「NO」に分岐する場合は、「所定の変更条件を満たす場合」の一例である。
【0103】
ステップS35では、決定部102aは、ステップS32で算出した占有数が最も少ないバンク領域1012を、ステップS3で決定したバンク領域1012に代えて、圧縮処理に使用するバンク領域1012として決定する。さらに、決定部102aは、今後も同じデータを圧縮したときに同じバンク領域1012が選択されるように、ハッシュ関数1021の演算結果とバンク領域1012との対応関係を更新する。すなわち、ステップS35でバンク領域1012が変更されたシンボルペアが入力されたハッシュ関数1021の演算結果が、ステップS35で変更したバンク領域1012を示すように変更される。その後、S21からS23の処理が実行される。ステップS36では、決定部102aは、ヒット状況記録テーブル104の初期化を処理部103aに依頼する。その後、処理は、上述の
図27におけるステップS26に進められる。
【0104】
<第2実施形態の作用効果>
第2実施形態によれば、使用頻度の低いバンク領域も選択されるようになるため、変換テーブル101の使用効率を高めることができる。変換テーブル101に登録可能なレコード数の実質的な低下を抑制できる。そのため、第2実施形態によれば、複数のバンク領域に分割した変換テーブル101を用いた上で、圧縮率の悪化を抑制することができる。
【0105】
<検証>
第2実施形態の効果について検証したので、図面を参照して説明する。本検証では、変換テーブルのエントリ数が256、バンク数が16(すなわち、各バンクのエントリ数は16)である変換テーブル101を有するデータ圧縮器10aを、
図29に例示するよう
に、2段連結して圧縮処理を行った。
【0106】
図30は、ヒット率閾値および占有数閾値を変化させながら、第2実施形態に係るデータ圧縮器による圧縮率を検証した図である。
図30において、縦軸は占有数閾値を示し、横軸はヒット率閾値を示す。
図30は、第1実施形態において圧縮率が低下したDNA構造データをデータ圧縮器10aで圧縮した場合の圧縮率を示す。
【0107】
図30において、ヒット率閾値および占有数閾値が適切に選択されるとDNA構造データの圧縮率は約34%となり、第1実施形態におけるDNA構造データの圧縮率約47%(
図22参照)から向上していることがわかる。すなわち、第2実施形態によれば、ヒット率閾値と占有数閾値とを適切な値に設定することで、第1実施形態において圧縮率の低かった種類のデータの圧縮率を高めることができる。
【0108】
第2実施形態では、占有数算出部106が各バンク領域1012の占有数を算出したが、占有数算出部106は、占有数の代わりに、バンク領域1012が有するエントリ領域1011の数に対するレコードが格納されたエントリ領域1011の数の割合である、占有率を算出してもよい。占有率であれば、バンク領域1012が有するエントリ領域が夫々異なる場合でも、バンク領域1012間でどの程度エントリ領域1011が使用されているかを比較することが容易である。占有率を算出する場合、占有数閾値に代えて、占有率閾値を採用すればよい。占有数閾値および占有率閾値は、「第1占有率閾値」の一例である。
【0109】
<第3実施形態>
第1実施形態および第2実施形態では、変換テーブルの各バンクに登録可能な最大エントリ数は変更されない。第3実施形態では、第2実施形態でも用いたヒット率および最大エントリ数に対する実際に使用されているエントリ数の割合である占有率を基に、バンク領域の最大エントリ数を変更させる構成について説明する。
【0110】
図31は、第3実施形態に係るデータ圧縮器の一例を示す図である。第3実施形態に係るデータ圧縮器10bは、決定部102bおよび状態管理テーブル107を有する点で、第2実施形態に係るデータ圧縮器10aとは異なる。
【0111】
状態管理テーブル107は、
図32に例示されるように、決定部102bがバンク領域1012の分割を行う状態か、統合を行う状態かを示す情報を記憶する。状態管理テーブル107は、さらに、分割を行う状態と統合を行う状態とを遷移する閾値である、分割・統合閾値を記憶する。分割・統合閾値は、例えば、ユーザがキーボード等によって入力することで指定可能である。状態管理テーブル107は、例えば、補助記憶部703上に設けられる。
【0112】
決定部102bは、詳細は後述するが、バンク領域1012のヒット率および占有率、さらに、状態管理テーブル107に記憶される「状態」が分割であるか統合であるかに基づいて、1つのバンク領域1012を2つに分割することでバンク領域1012の最大エントリ数を縮小したり、2つのバンク領域1012を1つに統合することでバンク領域1012の最大エントリ数を拡大したりする処理をさらに実行する。
【0113】
図33は、第3実施形態におけるバンク領域の分割を模式的に示す図である。
図33では、エントリ領域1011に登録されるレコードを、「AA」、「BB」と模式的に示している。
図33では、6個のエントリ領域1011を有するバンク領域1012が、それぞれ3個のエントリ領域1011を有するバンク領域1012に分割されている。分割前に登録されていたレコード「AA」、「BB」の夫々は、例えば、分割後の各バンク領域
1012において、先頭のエントリ領域1011に登録される。
【0114】
一方、
図34は、第3実施形態におけるバンク領域の統合を模式的に示す図である。
図34では、エントリ領域1011に登録されるレコードを、「AA」、「BB」、「CC」、「DD」と模式的に示している。
図34では、3個のエントリ領域1011を有する2つのバンク領域1012が、6個のエントリ領域1011を有するひとつのバンク領域1012に統合されている。統合前に登録されていた各レコードは、統合後のバンク領域1012の先頭から連続するエントリ領域1011に登録される。
【0115】
バンク領域1012を分割してバンク領域1012の最大エントリ数を縮小すると、当該バンク領域1012をひとつずつ探索する時間を短縮できるため、検索処理の長時間化が抑制される。また、2つのバンク領域1012を統合することでバンク領域1012の最大エントリ数を拡大すると、当該バンク領域1012に登録可能なエントリ数が増大してヒットする確率が高まるため、圧縮率を高めることができる。すなわち、このようなバンク領域1012の分割および統合において、処理速度を向上させたい場合にはバンク領域1012の分割が進みやすい条件を設定すればよく、圧縮率を高めたい場合にはバンク領域1012の統合が進みやすい条件を設定すればよい。このような条件を制御するため、決定部102bは、後述する状態遷移モデルにしたがって、バンク領域1012の分割および統合を行う。
【0116】
図35は、状態遷移モデルを模式的に示す図である。
図35に例示される状態遷移モデルは、「分割」の状態と「統合」の状態を有する。決定部102bは、ヒット率の変化量に基づいて、「分割」か「統合」のいずれかの状態に遷移し、現在の状態を状態管理テーブル107に記憶させる。決定部102bは、現在の状態が「分割」であり、かつ、バンク領域1012を分割する条件を満たす場合にはバンク領域1012の分割を実行し、現在の状態が「統合」であり、かつ、バンク領域1012を統合する条件を満たす場合にはバンク領域1012の統合を実行する。
【0117】
詳細には、決定部102bは、ヒット率の変化量が、状態管理テーブル107が記憶する分割・統合閾値以上である場合には「分割」の状態に遷移し、ヒット率の変化量が分割・統合閾値未満である場合には「統合」の状態に遷移する。
図36は、ヒット率の変化とバンク領域の分割および統合の流れの一例を示す図である。
図36では、例えば、バンク領域1について、ヒット率の変遷とバンク領域1012の統合、分割の状態が例示される。
図36では、分割・統合閾値として「1.0」が与えられたものとする。
図36を参照すると、まず、バンク領域1のヒット率は「0.8」から「0.4」に変化している。ヒット率の変化量は「0.5」倍であるため、ヒット率の変化量は分割・統合閾値未満である。そこで、決定部102bは状態を「統合」に遷移するとともに、現在の状態が「統合」であることを状態管理テーブル107に記憶させる。続いて、バンク領域1のヒット率は「0.4」から「0.6」に変化している。ヒット率の変化量は「1.5」倍であるため、ヒット率の変化量は分割・統合閾値以上である。そこで、決定部102bは状態を「分割」に遷移するとともに、現在の状態が「分割」であることを状態管理テーブル107に記憶させる。最後に、バンク領域1のヒット率は「0.6」から「0.3」に変化している。ヒット率の変化量は「0.5」倍であるため、ヒット率の変化量は分割・統合閾値未満である。そこで、決定部102bは状態を「統合」に遷移するとともに、現在の状態が「統合」であることを状態管理テーブル107に記憶させる。
【0118】
以上で説明した状態遷移モデルを採用してバンク領域1012の分割や統合を行う処理について、さらに説明する。
図37および
図38は、第3実施形態におけるバンク領域1012の分割および統合を模式的に示す図である。
図37および
図38において、バンク領域1012を分割する分割条件は、ヒット率が「0.4」以上であり、占有率が「0.
6」以上とする。バンク領域1012を統合する統合条件は、占有率が「1.0」であり、隣に配置されたバンクの占有率が「0.6」以下であるものとする。分割条件における、ヒット率「0.4」は、第2ヒット率閾値の一例であり、占有率「0.6」は、第2占有率閾値の一例である。統合条件における、占有率「1.0」は第3占有率閾値の一例であり、占有率「0.6」は第4占有率閾値の一例である。
【0119】
図37は、状態が「分割」である場合において、決定部がバンク領域を分割する処理の一例を示す図である。
図37の(a)はバンク領域1012を分割する前の状態を例示し、
図37の(b)はバンク領域1012を分割した後の状態を例示する。状態が「分割」であるため、決定部102bは、上記した分割条件が満たされると、バンク領域1012の分割を行う。
図37の(a)では、バンク領域2のヒット率が「0.8」、占有率が「0.2」であり、上記した分割条件を満たす。そのため、圧縮処理において決定部102bがハッシュ関数1021を用いてバンク領域2を選定すると、決定部102bはバンク領域2の分割を実行し、変換テーブル101は
図37の(b)の状態となる。
図37の(b)では、バンク領域2がバンク領域2aとバンク領域2bに分割されている。バンク領域2が分割されたバンク領域2aおよびバンク領域2bは、いずれもエントリが登録されていない状態とし、バンク領域2aおよびバンク領域3bのヒット率および占有率は「0」に初期化されてもよい。
【0120】
図38は、状態が「統合」である場合において、決定部がバンク領域を統合する処理の一例を示す図である。
図38の(a)はバンク領域1012を統合する前の状態を例示し、
図38の(b)はバンク領域1012を統合した後の状態を例示する。状態が「統合」であるため、決定部102bは、上記した統合条件が満たされると、バンクの統合を行う。
図38の(a)では、バンク領域3の占有率が「1.0」であり、バンク領域3の隣のバンク領域であるバンク領域4の占有率が「0.3」であるため、上記した統合条件を満たす。そのため、圧縮処理において決定部102bがハッシュ関数1021を用いてバンク領域3を選定すると、決定部102bはバンク領域3とバンク領域4の統合を実行し、変換テーブル101は
図38の(b)の状態となる。
図38の(b)では、バンク領域3とバンク領域4が統合されバンク領域3aとなっている。バンク領域3とバンク領域4の統合によって生成されたバンク領域3aは、エントリが登録されていない状態となり、バンク領域3aのヒット率および占有率は「0」に初期化されてもよい。
【0121】
図39および
図40は、第3実施形態の処理フローを模式的に示す図である。
図39の「A」は
図40の「A」に接続し、
図40の「B」は
図39の「B」に接続する。第1実施形態および第2実施形態と同一の処理については同一の符号を付し、その説明を省略する。以下、
図39および
図40を参照して、第3実施形態の処理フローについて説明する。
【0122】
ステップS41では、決定部102bは、ステップS31で算出したヒット率が分割・統合閾値以上である場合(ステップS41においてYES)、処理はステップS42に進められる。一方、算出したヒット率が分割・統合閾値未満である場合(ステップS41においてNO)、処理はステップS47に進められる。
【0123】
ステップS42では、決定部102bは、状態を「分割」に遷移するとともに、現在の状態が「分割」であることを状態管理テーブル107に記憶させる。ステップS3で決定したバンク領域1012が分割条件を満たす場合(ステップS43でYES)、処理はステップS44に進められてバンク領域1012の分割が実行される。一方、ステップS3で決定したバンク領域1012が分割条件を満たさない場合(ステップS43でNO)、処理はステップS46に進められる。ステップ42では、状態管理テーブル107に記憶された状態が「分割」であるため、ステップS3で決定したバンク領域1012が統合条
件を満たす場合であってもバンク領域1012の統合は実行されない。
【0124】
ステップS44では、決定部102bは、
図33で例示したように、ステップS3で決定したバンク領域1012の分割を行う。ステップS45では、決定部102bは、分割して生成したバンク領域1012のいずれかとステップS3で入力されたデータの一部とをハッシュ関数1021において対応付ける。決定部102bは、対応付けたバンク領域1012を使用して圧縮処理を実行する。
【0125】
ステップS46では、決定部102bは、ステップS3で決定したバンクを用いて圧縮処理を実行する。
【0126】
ステップS47では、決定部102bは、状態を「統合」に遷移するとともに、現在の状態が「統合」であることを状態管理テーブル107に記憶させる。ステップS48では、決定部102bは、ステップS3で決定したバンク領域1012が統合条件を満たすか否かを判定する。統合条件を満たす場合(ステップS48でYES)、処理はS49に進められてバンク領域1012の統合が実行される。一方、統合条件を満たさない場合(ステップS48でNO)、処理はS34に進められる。ステップS48では、状態管理テーブル107に記憶された状態が「統合」であるため、ステップS3で決定したバンク領域1012が分割条件を満たす場合であってもバンク領域1012の分割は実行されない。
【0127】
ステップS49では、決定部102bは、統合要件を満たすバンク領域1012の統合を行う。ステップS4Aでは、決定部102bは、統合して生成したバンク領域1012とステップS3で入力されたデータの一部とをハッシュ関数1021において対応付ける。決定部102bは、対応付けたバンク領域1012を使用して圧縮処理を実行する。
【0128】
第3実施形態の効果について検証したので、図面を参照して説明する。本検証では、変換テーブルのエントリ数が256である変換テーブル101を有するデータ圧縮器10bを、
図29に例示するように2段連結し、データ圧縮器10bに与える分割・統合閾値を「1.5」から「0.5」まで変化させて圧縮処理の処理速度および圧縮率について検証した。また、本検証では、第1実施形態における検証と同様に、DNA構造データ、XMLデータ、MIDIデータ、タンパク質構造のデータ、ソースコードおよび英文のテキストデータの6種類のデータについて検証を行った。
【0129】
図41は、第3実施形態に係るデータ圧縮器の処理速度を検証した図である。
図41では、縦軸が処理速度(スループット)、横軸が分割・統合閾値を示す。横軸において左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を16で固定した場合の検証結果を比較用に用意した。
図41を参照すると、分割・統合閾値を小さい値とすることで処理速度が向上することが理解できる。これは、分割・統合閾値を小さい値とすると、状態が「分割」に遷移しやすくなるために各バンクの分割が進むためと考えられる。
【0130】
図42は、第3実施形態に係るデータ圧縮器の圧縮率を検証した図である。
図42では、縦軸が圧縮率、横軸が分割・統合閾値を示す。横軸の左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を16で固定した場合の検証結果を比較用に用意した。
図42を参照すると、分割・統合閾値を大きい値とすることで圧縮率が向上することが理解できる。これは、分割・統合閾値を大きい値とすると、状態が「統合」に遷移しやすくなるために各バンクの統合が進むためと考えられる。また、
図42を参照すると、第1実施形態では圧縮率が悪化したDNA構造データについても圧縮率が悪化していないことが理解できる。すなわち、第3実施形態によれば、分割・統合閾値を指定することで、圧縮率の悪化を抑制しつつ、処理速度と圧縮率のいずれを優先するかをユーザが選択することが可能となる。
【0131】
さらに、第3実施形態において、マルチメディアデータを圧縮した場合について検証する。
図43は、第3実施形態に係るデータ圧縮器が、画像A、画像Bおよび画像Cの3種類の4K画像(縦約4000ピクセル、横約2000ピクセル)を圧縮した場合の処理速度を検証した図である。
図43の縦軸が処理速度(スループット)、横軸が分割・統合閾値を示す。横軸において左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を16で固定した場合の検証結果を比較用に用意した。
図43を参照すると、4K画像データに対して圧縮処理を行う場合であっても、上記で検証した他の6種類のデータと同様に、分割・統合閾値を小さい値とすることで処理速度が向上することが理解できる。
【0132】
図44は、第3実施形態に係るデータ圧縮器が、画像A、画像Bおよび画像Cの3種類の4K画像(縦約4000ピクセル、横約2000ピクセル)を圧縮した場合の圧縮率を検証した図である。
図44の縦軸が圧縮率、横軸が分割・統合閾値を示す。横軸において左端には変換テーブルを分割しない場合の検証結果、右端にはバンク数を16で固定した場合の検証結果を比較用に用意した。
図44を参照すると、4K画像データに対して圧縮処理を行う場合であっても、上記で検証した他の6種類のデータと同様に、分割・統合閾値を大きい値とすることで処理速度が向上することが理解できる。
【0133】
<第3実施形態の作用効果>
第3実施形態では、ヒット率および占有率に基づいて、バンク領域1012の分割を行った。バンク領域1012が分割されることで、
図33に例示されるように、分割後のバンク領域1012が有するエントリ領域1011の数は減少する。すなわち、処理部103aがエントリ領域をひとつずつ探索する範囲を狭めることができる。そのため、第3実施形態によれば、圧縮処理における変換テーブル101のエントリ領域をひとつずつ探索する検索処理の所要時間が長時間化するのを回避し得る。
【0134】
第3実施形態では、バンク領域1012を分割すると、
図33に例示されるように、分割前に登録されていたレコードは、分割後のバンク領域1012の先頭側から順に登録される。そのため、例えば、
図33の例によれば、分割前には2番目のエントリ領域1011に登録されていた「BB」は、分割後のバンク領域1012では、先頭のエントリ領域1011に登録される。そのため、この「BB」については、分割前よりも短時間で検索可能となる。
【0135】
第3実施形態では、2つのバンク領域1012を統合する際には、一方のバンク領域1012の後ろに他方のバンク領域1012が並べられる形で統合される。これは、上記の通り、バンク領域1012はアドレス順に並んでいるため、隣り合うバンク領域1012はアドレスが連続しているからである。このように統合されるため、当該一方のバンク領域1012に登録されているレコード(
図34の例では、「AA」、「BB」、「CC」)については、その前にレコードが登録されないため、統合後でも、統合前よりも検索に要する時間が長時間化することが抑制される。
【0136】
<第4実施形態>
第1実施形態から第3実施形態においては、データ圧縮器10における変換テーブルの探索処理をソフトウェアで実装することで、バンク領域1012内のエントリ領域1011をひとつずつ探索する例について説明した。しかしながら、データ圧縮器10における変換テーブル101の探索処理をハードウェアで実装することで、エントリ領域1011を所定個数ずつまとめて探索することも可能となる。第4実施形態では、データ圧縮器10における変換テーブル101の探索処理をハードウェアで実装することで、バンク領域1012内のエントリ領域1011を所定個数ずつまとめて探索する構成について説明す
る。
【0137】
図45は、第4実施形態に係るデータ圧縮器のエントリ領域探索回路を模式的に示す図である。第4実施形態に係るデータ圧縮器のエントリ領域探索回路は、変換テーブル101a、マッチング回路301、マッチエンコーダ302およびマルチプレクサ303(図中ではMUXと記載)を含む。
図45では、決定部102も例示されている。
【0138】
変換テーブル101aはハードウェア回路で実現された変換テーブルである。
図45の例では、変換テーブル101aは、2つのバンク領域1012aを含む。バンク領域1012の夫々を区別する場合には、アドレス順にしたがって、バンク領域1a、バンク領域2aとも称する。バンク領域1012aの夫々は、4つのエントリ領域1011aを有する。
【0139】
マッチング回路301(301a、301b)は、各バンク領域1012aに対応付けて設けられる回路である。
図45では、バンク領域1aに対してマッチング回路301aが対応付けられ、バンク領域2aに対してマッチング回路301bが対応付けられる。マッチング回路301は、入力されたシンボルペアがマッチしたエントリ領域1011aについては1を示す信号を出力し、マッチしないエントリ領域1011aについては0を示す信号を出力する。
【0140】
マッチエンコーダ302(302a、302b)は、マッチング回路301に対応付けて設けられる回路である。
図45では、マッチング回路301aに対してマッチエンコーダ302aが対応付けられ、マッチング回路301bに対してマッチエンコーダ302bが対応付けられる。マッチエンコーダ302は、マッチング回路301から入力される信号列を2進数で示される出力値にエンコードして出力する。第4実施形態では、バンク領域1012aは4つのエントリ領域1011aを含む。そのため、マッチング回路301から出力される信号列は、「0001」、「0010」、「0100」、「1000」の4パターンとなる。4パターンの信号列を2進数で表現するには、2桁の2進数があればよい。そのため、第4実施形態に係るマッチエンコーダ302は、4入力2出力の回路を有する。
【0141】
図46は、第4実施形態において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。
図46を参照すると、例えば、マッチング回路301から信号列「0100」が入力されると、マッチエンコーダ302は、出力値「10」に変換して出力することがわかる。
【0142】
マルチプレクサ303は、決定部102から入力される圧縮に用いるバンク領域を示す選択信号を基に、マッチエンコーダ302a、302bからの入力信号のいずれかを選択して出力する回路である。第4実施形態では、マルチプレクサ303の出力信号が、圧縮シンボルとなる。マルチプレクサ303は、例えば、バンク領域1aを示す選択信号が決定部102から入力されると、マッチエンコーダ302aからの入力信号を選択して出力する。第4実施形態では、マルチプレクサ303の出力が圧縮シンボルとなる。
【0143】
以上で構成を説明した第4実施形態では、シンボルペアが決定部102、マッチング回路301a、301bに入力される。決定部102は、入力されたシンボルペアを基に圧縮に用いるバンク領域1012aを決定し、決定したバンク領域1012aを示す選択信号をマルチプレクサ303に出力する。マッチング回路301a、301bは、シンボルペアとマッチしたエントリ領域1011aについては1を示す信号を出力し、マッチしないエントリ領域1011aについては0を示す信号をマッチエンコーダ302a、302bに出力する。マッチエンコーダ302a、302bは、入力された信号を2進数にエン
コードし、マルチプレクサ303に出力する。マルチプレクサ303は、決定部102から入力された選択信号を基に、マッチエンコーダ302a、302bからの入力信号のいずれかを選択して出力することで、シンボルペアの圧縮処理が行われる。
【0144】
なお、
図45では、決定部102がバンク領域1012aを決定しているが、第4実施形態におけるバンク領域1012aを選定する処理は、決定部102が実行する形態に限定されない。第4実施形態におけるバンク領域1012aを選定する処理は、第1実施形態から第3実施形態に開示するいずれの形態を採用してもよい。
【0145】
<比較例>
図47は、比較例に係るエントリ領域探索回路を模式的に示す図である。比較例に係るエントリ領域探索回路は、変換テーブル101z、マッチング回路301zおよびマッチエンコーダ302zを含む。
【0146】
変換テーブル101zはハードウェア回路で実現された変換テーブルである。
図46の例では、変換テーブル101zは8つのエントリ領域1011aを有しており、バンク領域には分割されていない。
【0147】
マッチング回路301zは、変換テーブル101zに対応付けて設けられる回路である。マッチング回路301zは、入力されたシンボルペアがマッチしたエントリ領域1011aについては1を示す信号を出力し、マッチしないエントリ領域1011aについては0を示す信号を出力する。
【0148】
マッチエンコーダ302zは、マッチング回路301zに対応付けて設けられる回路である。マッチエンコーダ302zは、マッチング回路301zから入力される信号列を2進数ので示される出力値にエンコードして出力する。比較例では、変換テーブル101zは8つのエントリ領域1011aを含む。そのため、マッチング回路301zから出力される信号列は、「00000001」、「00000010」、「00000100」、「00001000」、「00010000」、「00100000」、「01000000」、「10000000」の8パターンとなる。8パターンの信号列を2進数で表現するには、3桁の2進数があればよい。そのため、比較例に係るマッチエンコーダ302zは、8入力3出力の回路を有する。比較例では、第4実施形態と同様に、マッチエンコーダ302zの出力が、圧縮シンボルとなる。
【0149】
図48は、比較例において、マッチング回路から入力される入力信号列とマッチエンコーダが出力する出力値との対応の一例を示す図である。
図48を参照すると、例えば、マッチング回路301aから信号列「00000100」が入力されると、マッチエンコーダ302aは、出力値「010」に変換して出力することがわかる。
【0150】
<第4実施形態と比較例との比較>
第4実施形態では、変換テーブル101aが複数のバンク領域1012aに区分けされる。マッチング回路301は、区分けされた複数のバンク領域1012a夫々に対応付けて設けられる。第4実施形態では、変換テーブル101zをバンク領域に区分けしない比較例と比較して、マッチング回路301の回路規模を縮小することができ、マッチング回路301による処理の高速化が容易になる。そのため、第4実施形態によれば、比較例よりも高速な圧縮処理を実現できる。なお、第4実施形態では、比較例と比較してマルチプレクサ303が追加されるが、マルチプレクサ303の回路構成はバンク領域1012aの数だけ入力を選択する程度の簡易な回路である。そのため、マルチプレクサ303が追加されていても、第4実施形態の回路規模は比較例よりも小さいものとなる。
【0151】
<第4実施形態の変形>
第4実施形態では、マッチング回路301は、バンク領域1012aが有するエントリ領域1011aと同数の入力を受け付けたが、マッチング回路301はこのような構成に限定されない。マッチング回路301は、例えば、バンク領域1012aが有するエントリ領域1011aの数よりも少ない入力を受け付ける回路であってもよい。このような場合、複数のマッチング回路301をバンク領域1012aに対応付ければよい。
【0152】
変換テーブル101aとマッチング回路301は、例えば、連想メモリ(Content Addressable Memory、CAM)によって実装されてもよい。連想メモリは、例えば、指定されたデータに対して、当該データに対応するインデックスを出力するメモリである。この場合、バンク領域1aとマッチング回路301aの組み合わせをひとつの連想メモリで実装し、バンク領域2aとマッチング回路301bとの組み合わせを他の連想メモリで実装すればよい。連想メモリによる実装をバンク領域1012a毎に行うことで、変換テーブル101a全体をひとつの連想メモリで実装する場合と比較して、連想メモリの回路規模を縮小することができる。
【0153】
<第5実施形態>
第4実施形態では、ハードウェアで実装したデータ圧縮器10について説明した。第5実施形態では、ハードウェアで実装したデータ解凍器20について説明する。
【0154】
図49は、第5実施形態に係るデータ解凍器のエントリ領域探索回路を模式的に示す図である。第5実施形態に係るデータ解凍器のエントリ領域探索回路は、変換テーブル201a、マルチプレクサ401、402(図中ではMUXと記載)を含む。
図49では、さらに、決定部202も例示されている。
【0155】
変換テーブル201aはハードウェア回路で実現された変換テーブルである。
図49の例では、変換テーブル201aは、2つのバンク領域2012aを含む。バンク領域2012の夫々を区別する場合には、アドレス順にしたがって、解凍バンク領域1a、解凍バンク領域2aとも称する。バンク領域2012aの夫々は4つのエントリ領域2011aを有する。変換テーブル201aは、エントリ領域2011aの夫々に格納されたデータをマルチプレクサ401に出力する。なお、
図49では、バンク領域2012aの夫々においてエントリ領域2011aの夫々に割り当てられるインデックスが「0」、「1」、「2」、「3」として例示される。
【0156】
マルチプレクサ401(401a、401b)は、バンク領域2012aに対応付けて設けられる回路である。
図49では、マルチプレクサ401aは、解凍バンク領域1aに対応付けられ、マルチプレクサ401bは、解凍バンク領域2aに対応付けられる。マルチプレクサ401には、圧縮シンボルが選択信号として入力される。第5実施形態における圧縮シンボルは、第1実施形態と同様に、エントリに付されるインデックスが採用される。すなわち、マルチプレクサ401は、変換テーブル201aから入力される信号のうち、選択信号として入力された圧縮シンボルが示すインデックスに対応するエントリ領域2011aからの信号をマルチプレクサ402に出力する。
【0157】
マルチプレクサ402は、決定部202から入力される解凍に用いる解凍バンク領域を示す選択信号を基に、マルチプレクサ401a、401bからの入力信号のいずれかを選択して出力する回路である。第5実施形態では、マルチプレクサ402の出力信号が、解凍後のデータとなる。マルチプレクサ402は、例えば、解凍バンク領域1aを示す選択信号が決定部202から入力されると、解凍バンク領域1aに対応するマルチプレクサ401aからの入力信号を選択して出力する。
【0158】
第5実施形態では、変換テーブル201aが複数のバンク領域2012aに区分けされる。マルチプレクサ401は、区分けされた複数のバンク領域2012a夫々に対応付けて設けられる。そのため、変換テーブル201aを複数のバンク領域に区分けせずに、変換テーブル201a全体に対応付けたマルチプレクサを一つ設ける場合と比較して、マルチプレクサ401の回路規模の拡大を抑制することができ、マルチプレクサ401による入力信号選択の高速化が容易になる。
【0159】
<第1変形例>
第5実施形態における変換テーブル201aは、メモリ素子上に構築されてもよい。第1変形例では、バンク領域の夫々を互いに異なるメモリ素子上に構築する構成について説明する。
図50は、第1変形例に係るエントリ領域探索回路を模式的に示す図である。
図50では、バンク領域2012bの夫々が、互いに異なるメモリ素子501上に構築される。
【0160】
メモリ素子501(501a、501b)は、例えば、メモリである。メモリ素子501は、メモリ上のインデックスが指定されると、指定されたインデックスに対応するデータを出力する。メモリ素子501aとメモリ素子501bとは互いに物理的に異なるメモリ素子である。
【0161】
変換テーブル201bは、互いに異なるメモリ素子501上に構築された複数のバンク領域2012bを含む回路である。
図50の例では、変換テーブル201bは、メモリ素子501aおよびメモリ素子501bの夫々に構築された2つのバンク領域2012bを含む。バンク領域2012bの夫々を区別する場合には、一方を解凍バンク領域1b、他方を解凍バンク領域2bとも称する。
図50の例では、解凍バンク領域1aはメモリ素子501a上に構築され、解凍バンク領域2bはメモリ素子501b上に構築される。バンク領域2012bの夫々は4つのエントリ領域2011bを有する。なお、
図50では、バンク領域2012bの夫々においてエントリ領域2011bの夫々に割り当てられるインデックスが「0」、「1」、「2」、「3」として例示される。変換テーブル201bは、エントリ領域2011bのインデックスを用いた圧縮シンボルが入力されると、入力される圧縮シンボルによって示されるエントリ領域2011bに格納されたデータをマルチプレクサ502に出力する。
【0162】
マルチプレクサ502は、決定部202から入力される解凍に用いる解凍バンク領域を示す選択信号を基に、解凍バンク領域1b、解凍バンク領域2bからの入力信号のいずれかを選択して出力する回路である。第1変形例では、マルチプレクサ502の出力信号が解凍後のデータとなる。マルチプレクサ502は、例えば、解凍バンク領域1bを示す選択信号が決定部202から入力されると、解凍バンク領域1bからの入力信号を選択して出力する。
【0163】
第1変形例では、バンク領域毎に異なるメモリ素子501を用いる。そのため、第1変形例によれば、変換テーブル201bの全体がひとつのメモリ素子501上に構築される場合よりも少ない数のエントリ領域2011bがメモリ素子501上に構築される。そのため、第1変形例によれば、メモリ素子501の回路規模の拡大を抑制でき、解凍に係る処理速度の高速化が容易になる。
【0164】
<第2変形例>
第1変形例では、解凍バンク領域の夫々が互いに異なるメモリ素子上に構築された。第2変形例では、複数の解凍バンク領域が同じメモリ素子上に構築される構成について説明する。
図51は、第2変形例に係るエントリ領域探索回路を模式的に示す図である。なお、第2変形例においても、圧縮シンボルとしてバンク領域のインデックスが用いられるも
のとして説明する。
【0165】
変換テーブル201cは、メモリ素子601上に構築された複数のバンク領域2012cを含む回路である。メモリ素子601は、例えば、メモリである。
図51の例では、変換テーブル201cは、2つのバンク領域2012cを含む。バンク領域2012cの夫々を区別する場合には、一方を解凍バンク領域1c、他方を解凍バンク領域2cとも称する。バンク領域2012cの夫々は4つのエントリ領域2011cを有する。なお、
図51の例では、変換テーブル201cにおいてエントリ領域2011cの夫々に割り当てられるインデックスが「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」として例示される。また、
図51の例では、インデックス「0」、「1」、「2」、「3」の夫々に対応するエントリ領域2011cが解凍バンク領域1cに含まれ、インデックス「4」、「5」、「6」、「7」の夫々に対応するエントリ領域2011cが解凍バンク領域2cに含まれる。
【0166】
変換テーブル201cには、決定部202からの解凍に用いるバンク領域を示す選択信号と圧縮シンボルとが入力されると、選択信号を上位ビット、圧縮シンボルを下位ビットとする2進数の数列に変換する。変換テーブル201cは、変換した2進数の数列が示すインデックスに対応するエントリ領域2011cに格納されたデータを解凍後のデータとして出力する。
【0167】
図52は、第2変形例における、決定部からの選択信号、圧縮シンボルおよびインデックスの対応の一例を示す図である。
図52では、「決定部からの選択信号」、「圧縮シンボル」、「2進数」および「インデックス」の各項目が例示される。
図52では、決定部202からの信号および圧縮シンボルと、2進数の数列との対応が示される。
図52に例示される2進数の数列では、上位1ビットが決定部202からの信号を示し、下位2ビットが圧縮シンボルを示す。インデックスは、2進数の数列を10進数に変換したものである。例えば、解凍に用いるバンク領域2012cを示す信号として決定部202から「1」が入力され、圧縮シンボルとして「2」が入力されると、インデックスは「6」となる。そのため、この場合、変換テーブル201cは、インデックス「6」に対応するエントリ領域2011cに格納されたデータを解凍後のデータとして出力する。変換テーブル201cは、このように、決定部202からの選択信号および圧縮シンボルに基づいてエントリ領域2011cを一意に決定できればよい。
【0168】
第2変形例によれば、解凍に使用するバンク領域2012が決定部202によって決定されることで、圧縮シンボルに対応するエントリ領域2011cを探索する範囲を狭めることができる。そのため、第2変形例によれば、解凍処理の所要時間が長時間化することを抑制できる。
【0169】
以上で説明した各実施形態および各変形例は適宜組み合わせることができる。
【0170】
<<コンピュータが読み取り可能な記録媒体>>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させる情報処理プログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【0171】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、Compac
t Disc Read Only Memory(CD-ROM)、Compact Disc - Recordable(CD-R)、Compact Disc - ReWriterable(CD-RW)、Digital Versatile Disc(DVD)、ブ
ルーレイディスク(BD)、Digital Audio Tape(DAT)、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM等がある。
【符号の説明】
【0172】
10、10a、10b・・・データ圧縮器
20・・・受信側装置、データ解凍器
101、101a、101z、201、201a、201b、201c・・・変換テーブル
102、102a、102b、202・・・決定部
103、103a、203・・・処理部
104・・・ヒット状況記録テーブル
105・・・ヒット率算出部
106・・・占有数算出部
107・・・状態管理テーブル
1011、1011a、2011、2011b、2011c・・・エントリ領域
1012、1012a、2012、2012a、2012b、2012c・・・バンク領域
1021、2021・・・ハッシュ関数
301、301a、301b、301z・・・マッチング回路
302、302a、302b、302z・・・マッチエンコーダ
303、401、401a、401b、402、502・・・マルチプレクサ
501、501a、501b、601・・・メモリ素子
700・・・情報処理装置
701・・・CPU
702・・・主記憶部
703・・・補助記憶部
704・・・通信部
B1・・・接続バス
800・・・伝送路
P・・・データ圧縮プログラム