情報処理装置、プログラム、情報処理方法及びデータ構造

申请号 JP2017083747 申请日 2017-04-20 公开(公告)号 JP2018181196A 公开(公告)日 2018-11-15
申请人 富士通株式会社; 发明人 松村 秀敏;
摘要 【課題】回路規模の増大を防止することが可能な情報処理装置等を提供することを目的とする。 【解決手段】情報処理装置1は、圧縮対象の対象データを所定の演算処理により第1データへ変換する変換部と、変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成する生成部と、生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する記憶処理部とを備える。また前記生成部は、前記第1データと前記識別情報とを加算して第2データを生成する。 【選択図】図1
权利要求

対象データを所定の演算処理により第1データへ変換する変換部と、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成する生成部と、 生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する記憶処理部と、 を備える情報処理装置。前記生成部は、 前記第1データと前記識別情報とを加算して第2データを生成する 請求項1に記載の情報処理装置。前記生成部は、 前記第1データと前記識別情報とを加算した加算値が閾値以上である場合、前記加算値から前記閾値を減じて前記第2データを生成する 請求項1に記載の情報処理装置。前記アドレスに他の対象データが記憶されているか否かを判断する判断部を備え、 前記記憶処理部は、 前記他の対象データが記憶されていないと判断した場合、前記対象データ及び前記対象データの前記ファイルにおける位置を特定する位置情報を前記アドレスに記憶する 請求項1から3のいずれか一つに記載の情報処理装置。対象データを所定の演算処理により第1データへ変換し、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成し、 生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する、 処理をコンピュータに実行させるプログラム。対象データを所定の演算処理により第1データへ変換し、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成し、 生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する、 処理をコンピュータに実行させる情報処理方法。メモリのアドレスに対応した第1領域に対象データを記憶したデータ構造であり、 前記対象データを所定の演算処理により第1データへ変換し、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成する 処理により、前記第2データに対応するアドレスの前記第1領域に前記対象データが記憶されているデータ構造。

说明书全文

本発明は、情報処理装置、プログラム、情報処理方法及びデータ構造に関する。

従来、辞書ベースのデータ圧縮エンジンの辞書のリセット動作速度を高めることで、平均データ・スループットを向上させるシステム等が知られている(例えば特許文献1及び2参照)。

特開平7−288476号公報

特開平9−36747号公報

しかしながら、従来の技術では、回路規模が増大するという問題がある。

一つの側面では、回路規模の増大を防止することが可能な情報処理装置等を提供することを目的とする。

一つの案では、対象データを所定の演算処理により第1データへ変換する変換部と、変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成する生成部と、生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する記憶処理部と、を備える。

一つの側面では、回路規模の増大を防止することが可能となる。

情報処理システムの概要を示す説明図である。

コンピュータのハードウェア群を示すブロック図である。

アドレスの生成方法を示す説明図である。

ファイルIDが0の場合のメモリのデータ構造を示す説明図である。

ファイルIDが1の場合のメモリのデータ構造を示す説明図である。

記憶処理の手順を示すフローチャートである。

記憶処理の手順を示すフローチャートである。

実施の形態2に係る情報処理装置のハードウェア群を示すブロック図である。

比較例の記憶方式を示す説明図である。

実施の形態3に係るコンピュータのハードウェア群を示すブロック図である。

実施の形態1 以下実施の形態を、図面を参照して説明する。図1は情報処理システムの概要を示す説明図である。情報処理システムはインターネット、LAN(Local Area Network)、公衆回線網等の通信網Nに接続された情報処理装置1等を含む。情報処理装置1は、圧縮対象となる対象データを圧縮する装置である。情報処理装置1は例えば、サーバコンピュータ、パーソナルコンピュータ、または、ASIC(application specific integrated circuit)若しくはFPGA(field-programmable gate array)のLSI(Large-Scale Integration)等である。以下では情報処理装置1をコンピュータ1と読み替えて説明する。また以下で述べる処理はソフトウェアまたはハードウェアのいずれでも実装が可能であり、本実施形態ではソフトウェアで実装する例を示し、他の実施形態ではハードウェアで実装する例を示す。

図1に圧縮対象となるファイル内のデータの一例を示す。データはa,b,c,d,e,f,g,h,d,e,f,g,・・・などの文字列であり、各データに付された0、1、2、・・・の番号は、データの先頭から1バイトずつ順に付されたものであり、ファイルにおけるデータの位置を特定するための位置情報(以下、出現位置という)である。ファイルにはファイルを特定するための識別情報(以下、ファイルIDという)が付与されている。図1の例ではファイルIDは1である。ここで、出現位置3〜6の文字列defgを圧縮対象の対象データとして、メモリに記憶する場合、所定の演算処理により第1データ「5」を演算する。

次いで、第1データにファイルID「1」に基づく値を加算し第2データ「6」を求める。そして第2データ「6」に対応するメモリのアドレス「6」に文字列defg及び出現位置3を記憶する。また出現位置8〜11の文字列defgを対象データとして記憶する場合も同様に、上述した所定の演算処理により、第1データ「5」を演算する。次いで、第1データにファイルID「1」に基づく値を加算し第2データ「6」を求める。第2データ「6」に対応するメモリには、すでに文字列defgが記憶されているため、出現位置3に代えて出現位置8を上書きする。以下、詳細を説明する。

図2は、コンピュータ1のハードウェア群を示すブロック図である。コンピュータ1は制御部としてのCPU(Central Processing Unit)11、メモリ12、入部13、表示部14、記憶部15、時計部18、及び、通信部16等を含む。CPU11は、バス17を介してハードウェア各部と接続されている。CPU11は記憶部15に記憶された制御プログラム15Pに従いハードウェア各部を制御する。なお、CPU11は複数のプロセッサコアを搭載したマルチコアプロセッサであっても良い。メモリ12は例えばSRAM(Static Random Access Memory)、DRAM(Dynamic RAM)、フラッシュメモリ等である。メモリ12は、CPU11による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。

入力部13はマウス、キーボード、タッチパネル、ボタン等の入力デバイスであり、受け付けた操作情報をCPU11へ出力する。表示部14は液晶ディスプレイまたは有機EL(electroluminescence)ディスプレイ等であり、CPU11の指示に従い各種情報を表示する。通信部16は通信モジュールであり、他のコンピュータ(図示せず)等との間で情報の送受信を行う。時計部18は日時情報をCPU11へ出力する。記憶部15は大容量メモリまたはハードディスクであり、制御プログラム15P等を記憶している。

図3はアドレスの生成方法を示す説明図である。CPU11は、所定の演算規則に従い第1データを求める。所定の演算規則は例えばハッシュ関数に基づくハッシュ値の演算規則である。以下では第1データをハッシュ値という。なお、本実施形態ではハッシュ関数を用いた例を示すがこれに限るものではない。その他の関数を用いた演算により第1データを求めるようにしても良い。図3の例ではハッシュ演算により、文字列に対するハッシュ値0、1、2、3が算出されている例を示している。文字列欄は文字列X−Yの形式で示しており、Xはハッシュ値を示し、Yは同一ハッシュ値となる文字列の集合の要素IDを示している。例えば文字列1−0は、文字列のうち、ハッシュ値が1となり、ハッシュ値が1となる文字列群のうち、ID=0で特定される文字列を示す。

CPU11は、文字列のハッシュ値にファイルIDを加算した値をアドレスとして生成する。なお、ファイルIDは、例えば最大でアドレスの総数個用意され、ファイルが圧縮処理の対象となる毎にそのうちのいずれかがファイルに割り当てられるようにすればよい。用意したファイルIDを使い切ると、辞書がリセットされると同時に全てのファイルIDが使用可能に戻る。すなわち、CPU11は、圧縮処理の対象となるファイルに総数個用意されたアドレスの中から、一のアドレスを割り当てる。CPU11は、全てのアドレスを複数のファイルに割り当てて処理を行った後、辞書(メモリ12)をリセットする。CPU11は、再び、圧縮処理の対象となるファイルに総数個用意されたアドレスの中から、一のアドレスを割り当てる。また、CPU11は、合計値が、ファイルID総数(閾値)以上である場合、合計値からファイルID総数を減じた値をアドレスとして生成する。その他、以下のコードによりアドレスを生成するようにしても良い。「アドレス=(ハッシュ値+ファイルID)%(ファイルID総数)」。図3の例ではハッシュ値が0、ファイルIDが2の場合、書き込むべきアドレスは2となる。またハッシュ値が3、ファイルIDが2の場合、合計値が5となるためファイルID総数4を減じて、書き込むべきアドレスは1となる。すなわち、ハッシュ値と、ファイルIDとの二つの引数からアドレスを算出する処理を行う。ここで、ファイルIDをある値に固定した場合、ハッシュ値の集合からアドレスの集合への全単射となる。また、ハッシュ値をある値に固定した場合、ファイルIDの集合からアドレスの集合への全単射となる。

図4はファイルIDが0の場合のメモリ12のデータ構造を示す説明図である。図1に示す文字列のうち、出現位置8〜12のdefgをメモリ12に記憶する場合、CPU11は、ハッシュ関数を用いてハッシュ値5を算出する。次いで、CPU11は、ハッシュ値にファイルID0を加算して5を求める。ここで、5はファイルID総数8以上ではないため、アドレス5の位置に、先頭文字列の出現位置8を上書きする。

図5はファイルIDが1の場合のメモリ12のデータ構造を示す説明図である。図1に示す文字列のうち、出現位置8〜12のdefgをメモリ12に記憶する場合、CPU11は、ハッシュ関数を用いてハッシュ値5を算出する。次いで、CPU11は、ハッシュ値にファイルID1を加算して6を求める。ここで、6はファイルID総数8以上ではないため、アドレス6の位置に、出現位置8を上書きする。また例えば文字列bcdeのハッシュ値が7である場合、ファイルID1を加算して8となるが、ファイルID総数以上となるため、CPU11は、ファイルID総数を減じてアドレス0を求める。この場合、データがいまだ書き込まれていないアドレス0に文字列bcdfを記憶し、出現位置1を記憶する。

図6及び図7は記憶処理の手順を示すフローチャートである。CPU11は、データのnバイト(図5の例では4バイト)をハッシュ値算出用のデータkとして抽出する(ステップS61)。すなわち、圧縮対象データの先頭nバイトをハッシュ値算出用のデータkとする。図5の例では対象データとしてのデータkはdefgとなる。CPU11は、データkの出現位置を抽出する(ステップS62)。なお、出現位置はファイルのデータの先頭から順に各データに付された番号である。CPU11は、ファイルID及びファイルID総数を読み出す(ステップS63)。なお、図5の例では出現位置は8、ファイルIDは1、ファイルID総数は8とし、既知であるものとする。CPU11は、データkのハッシュ値を算出する(ステップS64)。

CPU11は、ハッシュ値及びファイルIDの合計値を算出する(ステップS65)。図5の例ではハッシュ値は5、ファイルIDは1であり合計値は6となる。CPU11は、合計値がファイルID総数以上か否かを判断する(ステップS66)。CPU11は、ファイルID総数以上でないと判断した場合(ステップS66でNO)、処理をステップS67に移行させる。CPU11は、合計値をアドレスに決定する(ステップS67)。CPU11は、ファイルID総数以上であると判断した場合(ステップS66でYES)、処理をステップS68へ移行させる。

CPU11は、合計値からファイルID総数を減じた値をアドレスに決定する(ステップS68)。CPU11は、すでに記憶済みのメモリ12の当該アドレスのデータを読み出す(ステップS69)。CPU11は、当該アドレスにすでに他のデータが記憶されているか否かを判断する(ステップS71)。CPU11は、記憶されていないと判断した場合(ステップS71でNO)、メモリ12のリセット後にデータがいまだ記憶されていないものとして処理をステップS72に移行させる。

CPU11は、メモリ12の当該アドレスの文字列記憶領域にデータkを記憶し、出現位置記憶領域に出現位置を記憶する(ステップS72)。CPU11は、アドレスにすでに他のデータが記憶されていると判断した場合(ステップS71でYES)、処理をステップS73へ移行させる。CPU11は、他のデータとデータkとが一致するか否かを判断する(ステップS73)。CPU11は、一致しないと判断した場合(ステップS73でNO)、処理をステップS74へ移行させる。CPU11は、メモリ12の当該アドレス上の文字列記憶領域の他のデータに代えて、データkを上書きする(ステップS74)。CPU11は、メモリ12の当該アドレスの出現位置記憶領域における他のデータの出現位置に代えてデータkの出現位置を上書きする(ステップS75)。

一致すると判断した場合(ステップS73でYES)、CPU11は、処理をステップS76へ移行させる。CPU11は、メモリ12の当該アドレスの出現位置記憶領域における他のデータの出現位置に代えて、データkの出現位置を上書きする(ステップS76)。なお実施形態では、ステップS76の処理において、文字列記憶領域における一致したデータkの上書きを行わない処理を行っているが、ステップS74と同じくデータkを上書きするようにしても良い。

以上述べた処理により、回路規模の増大を防止することが可能となる。またファイルとハッシュ値とが同じである場合、アドレスが同一となり、圧縮処理での文字列比較判定処理を行うことが可能となる。またファイルが同じであるがハッシュ値が相違する場合、アドレスが異なるため文字列比較判定処理に移行しないこととなる。またファイルが相違するがハッシュ値が同じ場合も、アドレスが異なるため文字列比較処理に移行しないこととなる。さらに、ファイル及びハッシュ値ともに相違する場合、ハッシュ値算出に用いる文字列長までの一致結果が相違していれば異なるファイルであると判断することが可能となる。またファイルID総数以上の場合にファイルID総数を減算してアドレスを求めることから、メモリ量を低減することが可能となる。

実施の形態2 実施の形態2はハードウェアにより実装する形態に関する。図8は実施の形態2に係る情報処理装置1のハードウェア群を示すブロック図である。実施の形態2では一例として実施の形態1で述べた機能をFPGAに実装する例を挙げて説明する。情報処理装置1は、論理回路等のデータ取得部81、変換部82、生成部83、記憶処理部84、判断部85、判定部86及びメモリ87を含む。FPGA等の情報処理装置1は例えば大量のデータを処理するデータセンタのサーバコンピュータ3内のデータ圧縮用デバイスとして実装することが可能である。その他、多くの情報量を送受信する通信装置4内のデータ圧縮用デバイスとして実装、または、通信装置4に接続される機器として利用することも可能である。以下、各回路の処理内容を詳述する。

データ取得部81はファイルIDに係る圧縮対象となるデータのnバイトをハッシュ値算出用のデータkとして取得する。変換部82はデータkのハッシュ値を求めデータkをハッシュ値に変換する。生成部83は変換部82で算出したハッシュ値及びファイルIDの合計値を算出する。また生成部83は合計値がファイルID総数以上であるか否かを判断する。生成部83は、合計値がファイルID総数以上でないと判断した場合、合計値をアドレスとして生成する。一方、生成部83は、合計値がファイルID総数以上と判断した場合、合計値からファイルID総数を減じた値をアドレスとして生成する。

判断部85はメモリ87の生成したアドレスのデータを読み出す。判断部85は、アドレスにすでに他のデータが記憶されているか否かを判断する。記憶処理部84は、判断部85により他のデータが記憶されていない旨の信号を受け付けた場合、データk及びデータkの出現位置をメモリ87の当該アドレスの文字列記憶領域及び出現位置記憶領域に記憶する。判定部86は、判断部85によりアドレスにすでに他のデータが記憶されている旨の信号を受け付けた場合、他のデータとデータkとが一致するか否かを判断する。記憶処理部84は、判定部86により一致しない旨の信号を受け付けた場合、メモリ87のアドレスに他のデータに代えてデータkを上書きする。

また記憶処理部84は、メモリ87のアドレスに他のデータの出現位置に代えてデータkの出現位置を上書きする。記憶処理部84は、判定部86により一致する旨の信号を受け付けた場合、メモリ87のアドレスに他のデータの出現位置に代えてデータkの出現位置を上書きする。以上述べたメモリ87のデータ構造は以下のとおりである。メモリ87のアドレスに対応した文字列記憶領域(第1領域)には、対象データが記憶されている。またメモリ87のアドレスに対応した出現位置記憶領域(第2領域)には、対象データの出現位置が記憶されている。これにより、ファイルごとにメモリ87を増設する方式と比較して回路規模を低減することが可能となる。またファイルIDに対応する領域をメモリ87に新たに設ける方式とも比較して回路規模の増大を低減することが可能となる。

図9は比較例の記憶方式を示す説明図である。比較例の方式はファイルIDを記憶するための領域をメモリ87に増設するものである。図9では、ファイルIDがXの文字列defgを圧縮する例を示している。最初にハッシュ関数5が算出される。次いでハッシュ値5に対応するアドレス5に、出現位置及びファイルIDが上書きされる。この場合メモリ87のファイルIDのレコードYがXに上書きされることとなる。これに対し、実施形態では比較例のようにメモリ87のファイルIDに対応するbit幅を増加させることなく圧縮を行うことが可能となる。また情報記憶のための回路を追加することなく、メモリ12のリセット間隔を拡大することが可能となる。

本実施の形態2は以上の如きであり、その他は実施の形態1と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。

実施の形態3 図10は実施の形態3に係るコンピュータ1のハードウェア群を示すブロック図である。コンピュータ1を動作させるためのプログラムは、ディスクドライブ、メモリーカードスロット等の読み取り部10AにCD−ROM、DVDディスク、メモリーカード、またはUSBメモリ等の可搬型記録媒体1Aを読み取らせて記憶部15に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ1Bをコンピュータ1内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Nを介して接続される他のサーバコンピュータ(図示せず)からダウンロードすることも可能である。以下に、その内容を説明する。

図10に示すコンピュータ1は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体1Aまたは半導体メモリ1Bから読み取り、或いは、通信網Nを介して他のサーバコンピュータ(図示せず)からダウンロードする。当該プログラムは、制御プログラム15Pとしてインストールされ、メモリ12にロードして実行される。これにより、上述したコンピュータ1として機能する。

本実施の形態3は以上の如きであり、その他は実施の形態1及び2と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。なお、以上述べた各実施形態は相互に組み合わせることが可能である。

以上の実施の形態1から3を含む実施形態に関し、さらに以下の付記を開示する。

(付記1) 対象データを所定の演算処理により第1データへ変換する変換部と、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成する生成部と、 生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する記憶処理部と、 を備える情報処理装置。 (付記2) 前記生成部は、 前記第1データと前記識別情報とを加算して第2データを生成する 付記1に記載の情報処理装置。 (付記3) 前記生成部は、 前記第1データと前記識別情報とを加算した加算値が閾値以上である場合、前記加算値から前記閾値を減じて前記第2データを生成する 付記1に記載の情報処理装置。 (付記4) 前記アドレスに他の対象データが記憶されているか否かを判断する判断部を備え、 前記記憶処理部は、 前記他の対象データが記憶されていないと判断した場合、前記対象データ及び前記対象データの前記ファイルにおける位置を特定する位置情報を前記アドレスに記憶する 付記1から3のいずれか一つに記載の情報処理装置。 (付記5) 前記判断部により前記他の対象データが記憶されていると判断した場合に、前記対象データと前記他の対象データとが一致するか否かを判定する判定部を備え、 前記記憶処理部は、 一致しないと判断した場合、前記アドレスに前記他の対象データに代えて前記対象データを上書きし、前記他の対象データの位置情報に代えて前記対象データの位置情報を上書きする 付記4に記載の情報処理装置。 (付記6) 前記記憶処理部は、 前記判定部により一致すると判断した場合、前記アドレスに前記他の対象データの位置情報に代えて前記対象データの位置情報を上書きする 付記5に記載の情報処理装置。 (付記7) 対象データを所定の演算処理により第1データへ変換し、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成し、 生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する、 処理をコンピュータに実行させるプログラム。 (付記8) 対象データを所定の演算処理により第1データへ変換し、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成し、 生成した前記第2データに対応するメモリのアドレスに前記対象データを記憶する、 処理をコンピュータに実行させる情報処理方法。 (付記9) メモリのアドレスに対応した第1領域に対象データを記憶したデータ構造であり、 前記対象データを所定の演算処理により第1データへ変換し、 変換した前記第1データ及び前記対象データのファイルを特定するための識別情報に基づき第2データを生成する 処理により、前記第2データに対応するアドレスの前記第1領域に前記対象データが記憶されているデータ構造。 (付記10) 前記アドレスに対応した第2領域に前記対象データのファイルにおける位置を特定する位置情報をさらに記憶しており、 前記アドレスに他の対象データが記憶されているか否かを判断し、 前記他の対象データが記憶されていないと判断した場合、前記対象データを前記第1領域に記憶し、前記位置情報を前記第2領域に記憶する 付記9に記載のデータ構造。

1 情報処理装置、コンピュータ 1A 可搬型記録媒体 1B 半導体メモリ 3 サーバコンピュータ 4 通信装置 10A 読み取り部 11 CPU 12 メモリ 13 入力部 14 表示部 15 記憶部 15P 制御プログラム 16 通信部 18 時計部 81 データ取得部 82 変換部 83 生成部 84 記憶処理部 85 判断部 86 判定部 87 メモリ N 通信網

QQ群二维码
意见反馈