(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022086403
(43)【公開日】2022-06-09
(54)【発明の名称】メモリシステム及び情報処理システム
(51)【国際特許分類】
G06F 12/04 20060101AFI20220602BHJP
H03M 7/42 20060101ALI20220602BHJP
【FI】
G06F12/04 530
H03M7/42
【審査請求】未請求
【請求項の数】23
【出願形態】OL
(21)【出願番号】P 2020198376
(22)【出願日】2020-11-30
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】中西 圭里
(72)【発明者】
【氏名】檜田 和浩
(72)【発明者】
【氏名】深澤 洋平
【テーマコード(参考)】
5B160
5J064
【Fターム(参考)】
5B160CB03
5B160MM20
5J064BA09
5J064BB13
5J064BC01
5J064BD03
(57)【要約】
【課題】システム全体としての性能を向上させることが可能なメモリシステム及び情報処理システムを提供することにある。
【解決手段】実施形態によれば、ホストに接続可能なメモリシステムが提供される。第1圧縮部は、ホストにおいて指定された第1データを第1圧縮方式で圧縮した第2データを出力する。第2圧縮部は、第1圧縮部から出力された第2データを第1圧縮方式とは異なる第2圧縮方式で圧縮した第3データを出力する。不揮発性メモリは、第2圧縮部から出力された第3データに基づく第4データが書き込まれる。第1復号部は、不揮発性メモリに書き込まれた第4データに基づく第3データを第2データに復号する。変換部は、第1復号部によって復号された第2データのフォーマットを変換することによって第5データを取得する。出力部は、第5データを前記ホストに出力する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムにおいて、
前記ホストにおいて指定された第1データを第1圧縮方式で圧縮した第2データを出力する第1圧縮部と、
前記第1圧縮部から出力された第2データを前記第1圧縮方式とは異なる第2圧縮方式で圧縮した第3データを出力する第2圧縮部と、
前記第2圧縮部から出力された第3データに基づく第4データが書き込まれる不揮発性メモリと、
前記不揮発性メモリに書き込まれた第4データに基づく前記第3データを前記第2データに復号する第1復号部と、
前記第1復号部によって復号された第2データのフォーマットを変換することによって第5データを取得する変換部と、
前記第5データを前記ホストに出力する出力部と
を具備するメモリシステム。
【請求項2】
前記第2圧縮方式は、前記第2データの出現頻度に応じた符号を前記第2データに割り当てるエントロピー符号化を含む請求項1記載のメモリシステム。
【請求項3】
前記第1圧縮方式は、過去に前記第1圧縮方式による圧縮の対象とされた第6データが格納される第1バッファから前記第1データと少なくとも一部が一致する第6データを探索し、前記第6データが探索された場合には前記第1バッファ内の前記第6データの位置を示す一致位置及び前記第1データと前記第6データとの一致した長さを示す一致長を含む一致情報を前記第2データとして出力し、前記第6データが探索されない場合には前記第1データを含む不一致情報を前記第2データとして出力する辞書式符号化を含む請求項1または2記載のメモリシステム。
【請求項4】
前記変換部は、前記第2データに前記一致情報及び前記不一致情報に関する付加情報が付加された第5データを取得する請求項3記載のメモリシステム。
【請求項5】
前記付加情報は、前記第2データに含まれる一致情報の長さに関する情報を含む請求項4記載のメモリシステム。
【請求項6】
前記第5データは、前記一致情報の長さに関する情報の後に前記一致情報が続くストリームから構成される請求項5記載のメモリシステム。
【請求項7】
前記変換部は、第2バッファを有し、
前記付加情報は、前記第2データに含まれる連続する不一致情報の数に関する情報を含み、
前記連続する不一致情報の数に関する情報は、連続する不一致情報を前記第2バッファに格納することによって取得される
請求項4~6のいずれか一項に記載のメモリシステム。
【請求項8】
前記第5データは、前記連続する不一致情報の数の後に前記連続する不一致情報が続くストリームから構成される請求項7記載のメモリシステム。
【請求項9】
前記第1復号部によって復号された第2データを前記第1データに復号する第2復号部と、
前記メモリシステムからの出力形式を指示する出力形式情報を格納するレジスタと、
前記レジスタに格納されている出力形式情報に基づいて前記第2復号部によって復号された第1データ及び前記第5データのうちの一方を選択するセレクタと
を更に具備し、
前記出力部は、前記セレクタによって選択された第1データまたは第5データを前記ホストに出力する
請求項1~8のいずれか一項に記載のメモリシステム。
【請求項10】
前記レジスタに格納される出力形式情報は、前記メモリシステムの起動時に指定されるまたは前記ホストから発行される読み出しコマンド毎に指定される請求項9記載のメモリシステム。
【請求項11】
前記第2復号部は、前記第2データを前記第1データに復号するために用いられる第3バッファを有し、
前記変換部は、前記第2データに含まれる不一致情報を前記第3バッファに格納することによって連続する不一致情報の数に関する情報を取得する
請求項9または10記載のメモリシステム。
【請求項12】
請求項1~11のいずれか一項に記載のメモリシステムと、
前記ホストと
を具備し、
前記ホストは、前記出力部によって前記第5データが出力された場合に前記第5データを前記第1データに復号する第3復号部を含む
情報処理システム。
【請求項13】
前記ホストは、
前記情報処理システムの動作状態を監視する監視部と、
前記動作状態に基づいて前記メモリシステムからの出力形式を指示する出力形式情報を決定する決定部と
を含み、
前記決定された出力形式情報は、前記メモリシステムに備えられるレジスタに格納され、
前記出力部は、前記レジスタに格納された出力形式情報に基づいて前記メモリシステムに備えられるセレクタによって選択された前記第1データ及び前記第5データのうちの一方を出力する
請求項12記載の情報処理システム。
【請求項14】
前記情報処理システムの動作状態は、前記ホストが備えるCPUの使用率と、前記メモリシステムと前記ホストとの間の通信に用いられるバスの帯域使用率とを含む請求項13記載の情報処理システム。
【請求項15】
前記決定部は、前記CPUの使用率が予め定められている値以上である場合に前記メモリシステムから前記第1データを出力することを指示する第1出力形式情報を決定し、前記バスの帯域の使用率が予め定められている値以上である場合に前記メモリシステムから前記第5データを出力することを指示する第2出力形式情報を決定する請求項14記載の情報処理システム。
【請求項16】
前記決定部は、前記ホストから発行される読み出しコマンド毎に前記第1または第2出力形式情報を決定する請求項15記載の情報処理システム。
【請求項17】
前記ホストは、
前記第1または第2出力形式情報が決定された読み出しコマンドを順次格納する第1キューと、
前記第1キューに格納された読み出しコマンドの実行が完了したことを示す完了通知を順次格納する第2キューと
を更に含み、
前記第3復号部は、前記第2出力形式情報が決定された読み出しコマンドの実行が完了したことを示す完了通知が前記第2キューから取り出された場合、前記読み出しコマンドが実行されることによって前記メモリシステムから出力された第5データを前記第1データに復号する
請求項16記載の情報処理システム。
【請求項18】
前記ホストは、
前記第1出力形式情報が決定された読み出しコマンドを順次格納する第1キューと、
前記第2出力形式情報が決定された読み出しコマンドを順次格納する第2キューと、
前記第1キューに格納された読み出しコマンドの実行が完了したことを示す完了通知を順次格納する第3キューと、
前記第2キューに格納された読み出しコマンドの実行が完了したことを示す完了通知を順次格納する第4キューと
を更に含み、
前記第3復号部は、前記第2キューに格納された読み出しコマンドの実行が完了したことを示す完了キューが前記第4キューから取り出された場合、前記読み出しコマンドが実行されることによって前記メモリシステムから出力された第5データを前記第1データに復号する
請求項16記載の情報処理システム。
【請求項19】
前記第1及び第2キューの優先度は、前記情報処理システムの動作状態に基づいて制御され、
前記決定部は、前記第1及び第2キューの優先度に基づいて、前記ホストから発行される読み出しコマンド毎に前記第1または第2出力形式情報を決定し、
前記第1及び第2キューに格納された読み出しコマンドは、前記第1及び第2キューの優先度に基づいて順次実行される
請求項18記載の情報処理システム。
【請求項20】
前記第1キューの優先度は、前記情報処理システムの動作状態に含まれる前記ホストが備えるCPUの使用率が予め定められている値以上である場合に、前記第2キューの優先度より高くなるように制御され、
前記第2キューの優先度は、前記メモリシステムと前記ホストとの間に配置されているバスの帯域使用率が予め定められている値以上である場合に、前記第1キューの優先度より高くなるように制御される
請求項19記載の情報処理システム。
【請求項21】
前記第3及び第4キューの優先度は、前記情報処理システムの動作状態に基づいて制御され、
前記第3及び第4キューに格納された完了通知は、前記第3及び第4キューの優先度に基づいて順次取り出される
請求項18~20のいずれか一項に記載の情報処理システム。
【請求項22】
前記第3キューの優先度は、前記情報処理システムの動作状態に含まれる前記ホストが備えるCPUの使用率が予め定められている値以上である場合に、前記第4キューの優先度より高くなるように制御され、
前記第4キューの優先度は、前記メモリシステムと前記ホストとの間に配置されているバスの帯域使用率が予め定められている値以上である場合に、前記第3キューの優先度より高くなるように制御される
請求項21記載の情報処理システム。
【請求項23】
前記第1~第4キューのうちの少なくとも1つは、複数用意されている請求項18~22のいずれか一項に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム及び情報処理システムに関する。
【背景技術】
【0002】
近年では、記憶領域を有効に活用するために、データを圧縮及び伸張する機能を有するメモリシステムが知られている。このようなメモリシステムにおいて、当該メモリシステムと接続されるホストから書き込みコマンドが発行された場合には、データを圧縮して不揮発性メモリに書き込むことができる。一方、ホストから読み出しコマンドが発行された場合には、不揮発性メモリから読み出されたデータ(圧縮されたデータ)を伸張してホストに出力することができる。
【0003】
しかしながら、上記したメモリシステムを読み出しコマンドの頻度が高いデータベース等に用いると、伸張されたデータをホストに出力するためのバスの帯域使用率が高くなる(つまり、バス帯域がボトルネックとなる)。このため、メモリシステム及びホストを備える情報処理システム全体の性能が向上しない場合がある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
そこで、本発明が解決しようとする課題は、システム全体としての性能を向上させることが可能なメモリシステム及び情報処理システムを提供することにある。
【課題を解決するための手段】
【0006】
実施形態によれば、ホストに接続可能なメモリシステムが提供される。前記メモリシステムは、第1圧縮部と、第2圧縮部と、不揮発性メモリと、第1復号部と、変換部と、出力部とを具備する。前記第1圧縮部は、前記ホストにおいて指定された第1データを第1圧縮方式で圧縮した第2データを出力する。前記第2圧縮部は、前記第1圧縮部から出力された第2データを前記第1圧縮方式とは異なる第2圧縮方式で圧縮した第3データを出力する。前記不揮発性メモリは、前記第2圧縮部から出力された第3データに基づく第4データが書き込まれる。前記第1復号部は、前記不揮発性メモリに書き込まれた第4データに基づく前記第3データを前記第2データに復号する。前記変換部は、前記第1復号部によって復号された第2データのフォーマットを変換することによって第5データを取得する。前記出力部は、前記第5データを前記ホストに出力する。
【図面の簡単な説明】
【0007】
【
図1】第1実施形態に係る情報処理システムのハードウェア構成の一例を概略的に示すブロック図。
【
図2】第1実施形態における辞書式符号化の概略について説明するための図。
【
図3】第1実施形態に係る情報処理システムの機能構成の一例を示す図ブロック図。
【
図4】第1実施形態に係る情報処理システムの処理手順の一例を示すフローチャート。
【
図5】第1実施形態における一致情報変換処理の処理手順の一例を示すフローチャート。
【
図6】第1実施形態における不一致情報変換処理の処理手順の一例を示すフローチャート。
【
図7】第1実施形態における辞書式圧縮データ及びフォーマット変換データの概要について説明するための図。
【
図8A】第1実施形態におけるsnappyに基づく辞書式圧縮データのデータ構造について説明するための図。
【
図8B】第1実施形態におけるsnappyに基づく辞書式圧縮データのデータ構造について説明するための図。
【
図9】第2実施形態に係る情報処理システムの機能構成の一例を示すブロック図。
【
図10】第2実施形態に係る情報処理システムの処理手順の一例を示すフローチャート。
【
図11】第3実施形態に係る情報処理システムの機能構成の一例を示すブロック図。
【
図12】第4実施形態に係る情報処理システムの機能構成の一例を示すブロック図。
【
図13】第4実施形態に係る情報処理システムの処理手順の一例を示すフローチャート。
【
図14】第5実施形態に係る情報処理システムの機能構成の一例を示すブロック図。
【
図15】第5実施形態における投入キュー及び完了キューを用いた情報処理システムの動作について説明するための図。
【
図16】第5実施形態の変形例について説明するための図。
【
図17】第5実施形態の変形例について説明するための図。
【発明を実施するための形態】
【0008】
以下、図面を参照して、各実施形態について説明する。
(第1実施形態)
図1は、第1実施形態に係る情報処理システムのハードウェア構成の一例を概略的に示すブロック図である。
図1に示すように情報処理システム1は、ホスト2及びメモリシステム3を備える。
【0009】
ホスト2は、メモリシステム3に対してホスト装置として動作する情報処理装置であり、例えばパーソナルコンピュータ及びサーバ装置等として実現されるが、他の情報処理装置であってもよい。ホスト2は、例えばCPU及びメモリ等を備えている。
【0010】
メモリシステム3は、不揮発性メモリにデータ(ユーザデータ)を書き込み、当該不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えばソリッドステートドライブ(SSD:Solid State Drive)として実現されることができる。
【0011】
メモリシステム3は、例えばPCI Expressバスのようなシステムバスを介してホスト2に接続可能に構成されており、コントローラ4、NAND型フラッシュメモリ5及びDRAM(Dynamic Random Access Memory)6等を備える。
【0012】
コントローラ4は、メモリシステム3の動作を司る機能を有する。コントローラ4は、ホストインタフェース(I/F)4a、CPU4b、NANDインタフェース(I/F)4c及びDRAMインタフェース(I/F)4d等を含む。なお、ホストインタフェース4a、CPU4b、NANDインタフェース4c及びDRAMインタフェース4dは、例えばバスを介して互いに接続されている。
【0013】
ホストインタフェース4aは、ホスト2との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース4aは、例えばPCI Expressコントローラ等であってもよい。ホストインタフェース4aは、ホスト2から発行される様々なコマンド(要求)を受信する。
【0014】
CPU4bは、ホストインタフェース4a、NANDインタフェース4c及びDRAMインタフェース4dを制御するように構成されたプロセッサである。CPU4bは、メモリシステム3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROM(Read Only Memory)から制御プログラム(ファームウェア)をDRAM6にロードし、当該制御プログラムを実行することによって様々な処理を行う。具体的には、CPU4bは、ホスト2から発行される様々なコマンドに対する処理を実行する。なお、ホスト2から発行されるコマンドに対する処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行されてもよい。
【0015】
NANDインタフェース4cは、CPU4bの制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。
【0016】
更に、コントローラ4は、圧縮装置(圧縮器)10及び伸張装置(伸張器)20を備える。
【0017】
圧縮装置10は、例えばホスト2から書き込みコマンドが発行された場合に、当該書き込みコマンドにおいて指定されているデータを圧縮する。圧縮装置10において圧縮されたデータ(以下、圧縮データと表記)は、例えばNAND型フラッシュメモリ5に書き込まれる。
【0018】
伸張装置20は、例えばホスト2から読み出しコマンドが発行された場合に、当該読み出しコマンドに基づく圧縮データをNAND型フラッシュメモリ5から読み出し、当該圧縮データを伸張する。
【0019】
なお、本実施形態における圧縮装置10及び伸張装置20の構成及び動作の詳細については後述する。
【0020】
NAND型フラッシュメモリ5は、不揮発性メモリであり、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを有する。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
【0021】
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKm-1を含む。ブロックBLK0~BLKm-1の各々は多数のページ(ここでは、ページP0~Pn-1)によって編成される。ブロックBLK0~BLKm-1は、消去単位として機能する。ページP0~Pn-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、データ書き込み動作及びデータ読み出し動作の単位である。
【0022】
ここでは、メモリシステム3がNAND型フラッシュメモリ5を備えるものとして説明したが、当該メモリシステム3は、不揮発性メモリとして例えばPCM(Phase Change Memory)またはMRAM(Magnetoresistive Random Access Memory)等を備える構成であってもよい。
【0023】
DRAM6は、揮発性メモリであり、例えばコントローラ4(CPU4b)において実行されるソフトウェアの一時的なバッファまたはNAND型フラッシュメモリ5に対する一時的なバッファ等として機能する。
【0024】
ここでは、メモリシステム3がDRAM6を備えるものとして説明したが、当該メモリシステム3は、揮発性メモリとして例えばSRAM(Static Random Access Memory)等を備える構成であってもよい。
【0025】
なお、
図1においては圧縮装置10及び伸張装置20がコントローラ4に組み込まれているものとして説明したが、当該圧縮装置10及び伸張装置20のうちの一方または両方はコントローラ4の外部に設けられていてもよい。
【0026】
ここで、上記したSSDのような汎用データが書き込まれるメモリシステム3では、書き込まれるデータの種別を事前に把握することが困難であるため、汎用的な圧縮方式で当該データを圧縮する場合が多い。なお、汎用的な圧縮方式としては、例えば辞書式符号化とエントロピー符号化とを組み合わせた圧縮方式がある。
【0027】
以下、
図2を参照して、辞書式符号化の概略について説明する。ここでは、辞書式符号化の対象として入力されるデータ(入力値)を対象データと称し、当該対象データが例えばテキスト(文字列)データであるものとして説明する。
【0028】
ここで、辞書式符号化は、対象データを、当該対象データよりも前に辞書式符号化の対象として入力されたデータ(つまり、過去に入力されたデータ)の相対参照に変換する符号化手法である。
【0029】
このため、辞書式符号化においては、過去に入力されたデータが辞書と称されるバッファ(以下、ヒストリバッファと表記)に格納されており、対象データの全部または一部と一致するデータ(前方データ)が当該ヒストリバッファ中に存在するか否かを探索する。対象データと全部または一部と一致するデータがヒストリバッファ中に存在する場合、当該データの位置を示す一致位置(対象データからの相対的な距離を示す一致相対距離)及び対象データとヒストリバッファから探索されたデータとの一致した長さを示す一致長が出力される。
【0030】
ここで、
図2においては、現在の対象データが「caba」であり、ヒストリバッファには過去に入力されたデータとして「…cacabc」が格納されていることが示されている。この
図2に示す例によれば、対象データ「caba」(の一部)はヒストリバッファ内の「ca」の2文字及び「cab」の3文字と一致する。対象データのうちのより長い部分を相対参照に置き換えることができれば符号化効率が高くなるため、ここではヒストリバッファ内の「cab」が対象データと少なくとも一部が一致するデータ(以下、バッファデータと表記)として探索される。
【0031】
このように探索されたバッファデータ(「cab」)の位置は対象データから4文字前であるので、上記した一致位置(符号化対象データから一致箇所までの一致相対距離)は4となる。また、対象データとバッファデータとは「cab」が一致しているため、上記した一致長は3(文字)となる。
【0032】
すなわち、
図2に示す例では、対象データ「caba」に対する辞書式符号化の結果として一致位置及び一致長の組(4,3)が後段に出力される。
【0033】
なお、上記した対象データは例えばホスト2から発行される書き込みコマンドにおいて指定されているデータ(以下、書き込みデータと表記)を構成する一部のデータ(所定のサイズのデータ)に相当し、辞書式符号化においては、当該書き込みデータを構成する対象データの各々が当該書き込みデータの先頭から連続的に入力され、当該入力された対象データが順次符号化されるような処理が実行される。
【0034】
この場合、上記した
図2に示す対象データ「caba」のうちのバッファデータと一致していない末尾の「a」については、後続のデータとともに次の対象データとして扱われ、処理が繰り返される。
【0035】
図2においては対象データと少なくとも一部が一致するバッファデータがヒストリバッファ内に存在する場合について説明したが、当該バッファデータが存在しない場合には、当該対象データ(ローデータ)が辞書式符号化の結果として後段に出力される。
【0036】
以下の説明においては、辞書式符号化の結果として出力される一致位置及び一致長の組を一致情報、当該辞書式符号化の結果として出力されるローデータを不一致情報と称する。
【0037】
ここでは辞書式符号化について説明したが、上記した汎用的な圧縮方式として当該辞書式符号化と組み合わされるエントロピー符号化においては、例えば辞書式符号化の結果として出力される一致情報及び不一致情報の出現頻度に応じた符号を当該一致情報及び不一致情報に割り当てる処理(符号化処理)が実行される。このエントロピー符号化においては、例えば出現頻度の高い一致情報及び不一致情報に対して短い符号が割り当てられ、当該出現頻度の低い一致情報及び不一致情報に対して長い符号が割り当てられる。
【0038】
なお、エントロピー符号化には例えばハフマン符号化が含まれるが、当該ハフマン符号化は、予め構築された符号木を用いて符号化を行う静的ハフマン符号化であってもよいし、ハフマンン符号化の対象として入力される一致情報及び不一致情報により符号木を変更する動的ハフマン符号化であってもよい。本実施形態におけるエントロピー符号化としては、例えば算術符号化等が行われても構わない。
【0039】
ここで、上記した辞書式符号化とエントロピー符号化とを組み合わせた圧縮方式により圧縮されたデータ(圧縮データ)はNAND型フラッシュメモリ5(不揮発性メモリ)に書き込まれるが、読み出しコマンドがホスト2から発行された場合には、当該読み出しコマンドに基づいて当該圧縮データがNAND型フラッシュメモリ5から読み出される。
【0040】
一般に、このような読み出しコマンドに対する応答としては、NAND型フラッシュメモリ5から読み出された圧縮データに対してエントロピー復号及び辞書式復号を順次行うことによって伸張されたデータ(以下、伸張データと表記)がホスト2に出力される。なお、本実施形態において伸張データとは、上記した辞書式符号化及びエントロピー符号化が行われていないデータ(ローデータ)をいう。
【0041】
しかしながら、例えばメモリシステム3を読み出しコマンドの頻度が高いデータベース等に用いた場合、上記した伸張データ(つまり、伸張後の元のサイズのデータ)が頻繁にシステムバスを介してメモリシステム3からホスト2に出力(送信)されることになり、当該システムバスの帯域使用率が高くなる。この場合、ホスト2及びメモリシステム3間のバス帯域(リードデータ帯域)がボトルネックとなり、情報処理システム1(ホスト2及びメモリシステム3)全体の性能が向上しない場合がある。
【0042】
これに対しては、例えばNAND型フラッシュメモリ5に書き込まれている圧縮データをメモリシステム3からホスト2に出力する構成が考えられるが、このような構成の場合には、ホスト2側でエントロピー復号及び辞書式復号の両方(つまり、伸張処理の全て)を行う必要があり、ホスト2が備えるCPUの負荷が高くなる。
【0043】
更に、上記したエントロピー符号化の結果には出現頻度に応じて符号長が変わる可変長符号(シンボル)が含まれており、エントロピー復号においては、当該シンボルを1つずつ処理していく必要がある。このため、ホスト2が備えるCPU(つまり、ソフトウェア処理)では、エントロピー復号を効率的に行うことが困難である(すなわち、ソフトウェアによるエントロピー復号は性能が低い)。一方、辞書式復号処理は、ソフトウェア処理でも低負荷で高速処理できる場合がある。
【0044】
そこで、本実施形態においては、NAND型フラッシュメモリ5に書き込まれている圧縮データに対してエントロピー復号が行われた後のデータ(つまり、辞書式符号化で圧縮された圧縮データ)をメモリシステム3からホスト2に出力する構成を採用する。
【0045】
図3は、本実施形態に係る情報処理システム1の機能構成の一例を示すブロック図である。ここでは、データの圧縮及び伸張に関する機能構成について主に説明する。なお、
図3においては、圧縮装置10及び伸張装置20とNAND型フラッシュメモリ5との間に配置されているNANDインタフェース4c等を省略している。
【0046】
まず、圧縮装置10は、辞書式符号化部11、エントロピー符号化部12及びECCエンコーダ13を含む。
【0047】
辞書式符号化部11は、ホストインタフェース4aを介してホスト2と接続されており、当該ホスト2から発行される書き込みコマンドを取得(入力)する。辞書式符号化部11は、上記したヒストリバッファ111を有し、取得された書き込みコマンドに基づく書き込みデータ(つまり、ホスト2において指定されたデータ)に対して辞書式符号化を行うことによって、当該書き込みデータを圧縮する。
【0048】
なお、書き込みデータを辞書式符号化により圧縮する際には、上記したように当該書き込みデータの一部のデータを対象データとし、当該書き込みデータの先頭から連続的に入力される対象データの各々が順次符号化される。
【0049】
なお、以下の説明においては、辞書式符号化部11によって出力される一致情報及び不一致情報(つまり、辞書式符号化部11によって圧縮された書き込みデータ)を、便宜的に、辞書式圧縮データと称する。この辞書式圧縮データは、上記したように連続的に入力される対象データの各々に対して辞書式符号化が行われた結果(一致情報及び不一致情報)が先頭から順次配置されたデータ構造を有する。
【0050】
エントロピー符号化部12は、辞書式符号化部11によって出力された辞書式圧縮データ(一致情報及び不一致情報)に対してエントロピー符号化を行うことによって、当該辞書式圧縮データを更に圧縮する。エントロピー符号化部12は、エントロピー符号化が行われた辞書式圧縮データ(以下、エントロピー圧縮データと表記)を出力する。
【0051】
ECCエンコーダ13は、NAND型フラッシュメモリ5にエントロピー圧縮データが書き込まれる前に、当該エントロピー圧縮データに対して誤り訂正用のパリティ(ECCパリティ)を生成し、当該生成したECCパリティを当該エントロピー圧縮データに付与する処理(以下、ECCエンコード処理と表記)を実行する。
【0052】
ECCエンコード処理が実行されたエントロピー圧縮データは、圧縮装置10によって圧縮された圧縮データとしてNAND型フラッシュメモリ5に書き込まれる。すなわち、エントロピー符号化部12から出力されたエントロピー圧縮データに基づくデータがNAND型フラッシュメモリ5に書き込まれる。
【0053】
次に、伸張装置20は、ECCデコーダ21、エントロピー復号部22及びフォーマット変換部23を含む。
【0054】
ECCデコーダ21は、例えばホスト2から発行される読み出しコマンドに基づいてNAND型フラッシュメモリ5から圧縮データ(エントロピー圧縮データ)が読み出される際に、当該圧縮データに対して生成されたパリティに基づいて当該圧縮データに含まれるエラーを検出し、当該検出されたエラーを訂正する処理(以下、ECCデコード処理)を実行する。
【0055】
エントロピー復号部22は、ECCデコード処理が実行された圧縮データ(エントロピー圧縮データ)に対してエントロピー復号を行うことによって、当該エントロピー圧縮データを辞書式圧縮データに復号する。すなわち、エントロピー復号部22は、NAND型フラッシュメモリ5から読み出されたデータに基づくエントロピー圧縮データに対してエントロピー復号を行い、辞書式圧縮データを生成する。
【0056】
ここで、本実施形態においてはエントロピー復号が行われた後の辞書式圧縮データがメモリシステム3からホスト2に出力されるが、この辞書式圧縮データは、上記した一致情報及び不一致情報の各々をシンボルとして含む。この一致情報及び不一致情報(つまり、1シンボル)は長さが不定であるため、辞書式圧縮データから切り出してみないと当該シンボルの切れ目(境目)が不明である。このような辞書式圧縮データに対する辞書式復号をソフトウェア処理により行うものとすると、当該辞書式圧縮データに含まれる一致情報及び不一致情報を順次切り出してシンボルの境界かどうかを判定する処理を行う必要があり、高速化が困難である。
【0057】
このため、本実施形態において、フォーマット変換部23は、エントロピー復号部22によって復号された辞書式圧縮データのフォーマットを変換し、当該辞書式圧縮データを所定のフォーマットを有する辞書式圧縮データ(以下、フォーマット変換データと表記)に変換する。このフォーマット変換データが有する所定のフォーマットとは、上記したソフトウェア処理での辞書式復号を軽減化(効率化)するためのフォーマットに相当する。
【0058】
フォーマット変換部23は、辞書式圧縮データに含まれる一致情報及び不一致情報を当該辞書式圧縮データの先頭から順次切り出す。なお、辞書式圧縮データに含まれる一致情報及び不一致情報には、それぞれ当該一致情報及び不一致情報であることを識別するための識別情報(例えば、フラグ等)が付されているものとする。フォーマット変換部23は、この識別情報により、辞書式圧縮データから切り出された情報(一致情報または不一致情報)が一致情報であるか不一致情報であるかを把握することができる。
【0059】
図3に示すように、フォーマット変換部23は、一致情報処理部231及び不一致情報処理部232を含む。
【0060】
一致情報処理部231は、フォーマット変換部23によって一致情報が辞書式圧縮データから切り出された場合に、当該一致情報に関する付加情報を付加する処理を実行する。なお、一致情報に付加される付加情報には、例えば当該一致情報の長さが含まれる。
【0061】
不一致情報処理部232は、フォーマット変換部23によって不一致情報(不一致文字)が辞書式圧縮データから切り出された場合に、当該不一致情報に関する付加情報を付加する処理を実行する。なお、不一致情報に付加される付加情報には、例えば辞書式圧縮データにおいて当該不一致情報が他の不一致情報と連続して配置されている場合の当該連続する不一致情報の数が含まれる。この連続する不一致情報の数は、不一致情報処理部232に含まれる不一致情報バッファ232a及び不一致情報カウンタ232bを用いて取得される。なお、不一致情報バッファ232a及び不一致情報カウンタ232bの動作については後述する。
【0062】
フォーマット変換部23は、一致情報及び不一致情報に付加情報が付加されたフォーマット変換データを取得する。
【0063】
上記したように辞書式圧縮データのフォーマットを変換することによって取得されたフォーマット変換データ(つまり、フォーマット変換後の辞書式圧縮データ)は、ホストインタフェース4aを介してホスト2に出力(送信)される。
【0064】
なお、ホスト2は、辞書式復号部2aを含む。この辞書式復号部2aは、例えばホスト2が備えるCPUが所定のプログラムを実行すること(つまり、ソフトウェア)によって実現される機能部である。
【0065】
辞書式復号部2aは、上記したようにメモリシステム3(フォーマット変換部23)から出力されたフォーマット変換データに対して辞書式復号を行うことによって、当該フォーマット変換データを読み出しコマンドにおいて指定されているデータ(以下、読み出しデータと表記)に復号する。この辞書式復号部2aによる辞書式復号は、フォーマット変換データにおいて一致情報及び不一致情報に付加されている付加情報を利用して行われる。
【0066】
次に、
図4のフローチャートを参照して、本実施形態に係る情報処理システム1の処理手順の一例について説明する。ここでは、ホスト2から読み出しコマンドが発行された際のメモリシステム3(伸張装置20)の処理について主に説明する。
【0067】
なお、NAND型フラッシュメモリ5には、ホスト2から発行された書き込みコマンドにおいて指定されている書き込みデータに対して辞書式符号化及びエントロピー符号化が行われた圧縮データがNAND型フラッシュメモリ5に書き込まれているものとする。
【0068】
ここで、上記した読み出しコマンドがホスト2から発行された場合を想定する。この場合、ホスト2から発行された読み出しコマンドに基づいて、NAND型フラッシュメモリ5から圧縮データ(読み出しデータの圧縮データ)が読み出される(ステップS1)。この場合、上記したECCデコード処理が圧縮データに対して実行されてもよい。
【0069】
上記したステップS1において読み出された圧縮データはエントロピー符号化が行われたエントロピー圧縮データであるため、エントロピー復号部22は、当該圧縮データに対してエントロピー復号を行う(ステップS2)。エントロピー復号が行われた後のデータ(つまり、辞書式圧縮データ)は、エントロピー復号部22からフォーマット変換部23に出力される。
【0070】
次に、フォーマット変換部23は、エントロピー復号部22から出力された辞書式圧縮データに対する切り出し処理を実行する(ステップS3)。上記したように辞書式圧縮データは一致情報及び不一致情報が先頭から順次配置されたデータ構造を有するが、ステップS3においては、当該辞書式圧縮データの先頭に配置されている一致情報または不一致情報が切り出される。
【0071】
ステップS3の処理が実行されると、フォーマット変換部23は、上記した一致情報及び不一致情報に付されている識別情報に基づいて、当該ステップS3において一致情報が切り出されたか否かを判定する(ステップS4)。
【0072】
一致情報が切り出されたと判定された場合(ステップS4のYES)、一致情報処理部231は、一致情報変換処理を実行する(ステップS5)。なお、一致情報変換処理は、ステップS3において切り出された一致情報に当該一致情報に関する付加情報(当該一致情報の長さ)を付加するための処理である。一致情報変換処理の詳細については後述する。
【0073】
一方、不一致情報が切り出されたと判定された場合(ステップS4のNO)、不一致情報処理部232は、不一致情報変換処理を実行する(ステップS6)。なお、不一致情報変換処理は、ステップS3において切り出された不一致情報に当該不一致情報に関する付加情報(連続する不一致情報の数)を付加するための処理である。不一致情報変換処理の詳細については後述する。
【0074】
ステップS5またはS6の処理が実行された場合、フォーマット変換部23は、当該ステップS5またはS6の処理の結果に基づいて、フォーマット変換データを取得(生成)する(ステップS7)。
【0075】
このステップS8において取得されたフォーマット変換データは、上記したようにホストインタフェース4aを介してホスト2に出力される(ステップS8)。
【0076】
ステップS8の処理が実行された場合、読み出しデータの圧縮データの全てについて上記したステップS1~S8の処理が実行されたか否かが判定される(ステップS9)。
【0077】
読み出しデータの圧縮データの全てについて処理が実行されていないと判定された場合(ステップS9のNO)、ステップS1に戻って処理が繰り返される。この場合、ステップS1~S8の処理が実行されていない読み出しデータの圧縮データを対象として処理が実行される。
【0078】
一方、読み出しデータの圧縮データの全てについて処理が実行されたと判定された場合(ステップS9のYES)、
図4の処理は終了される。
【0079】
次に、
図5のフローチャートを参照して、上記した一致情報変換処理(
図4に示すステップS5の処理)の処理手順の一例について説明する。
【0080】
一致情報変換処理において、一致情報処理部231は、上記した
図4に示すステップS3において切り出された一致情報を取得する(ステップS11)。
【0081】
ステップS11の処理が実行されると、一致情報処理部231は、当該ステップS11において取得された一致情報の長さを算出する(ステップS12)。
【0082】
ここで、一致情報の長さとは、当該一致情報に含まれる一致位置及び一致距離のデータ長の合計値に相当する。このため、ステップS12においては、一致位置のデータ長及び一致距離のデータ長を加算することによって、一致情報の長さが算出される。
【0083】
ステップS12の処理が実行されると、一致情報処理部231は、ステップS11において取得された一致情報に対してステップS12において算出された一致情報の長さを付加することにより、例えば一致情報の長さの後に当該一致情報が続くストリームを生成する(ステップS13)。ステップS13の処理が実行されると、一致情報変換処理は終了される。
【0084】
次に、
図6のフローチャートを参照して、上記した不一致情報変換処理(
図4に示すステップS6の処理)の処理手順の一例について説明する。
【0085】
不一致情報変換処理において、不一致情報処理部232は、上記した
図4に示すステップS3において切り出された不一致情報を取得する(ステップS21)。
【0086】
ステップS21の処理が実行されると、不一致情報処理部232は、当該ステップS21において取得された不一致情報を、当該不一致情報処理部232に含まれる不一致情報バッファ232aに格納する(ステップS22)。
【0087】
次に、不一致情報処理部232は、辞書式圧縮データにおいて、上記したステップS21において取得された不一致情報(つまり、
図4に示すステップS3において切り出された不一致情報)の次に一致情報が配置されているか否かを判定する(ステップS23)。
【0088】
ここで、不一致情報の次に一致情報が配置されていないと判定された場合を想定する(ステップS23のNO)。この場合、辞書式圧縮データにおいて、ステップS21において取得された不一致情報の次には不一致情報が配置されている。よって、不一致情報処理部232は、ステップS21において取得された不一致情報の次に配置されている不一致情報を切り出す(ステップS24)。
【0089】
ステップS24の処理が実行されると、ステップS22の処理が実行される。具体的には、ステップS24において切り出された不一致情報が不一致情報バッファ232aに格納される。
【0090】
このように不一致情報変換処理においては、不一致情報の次に一致情報が配置されていると判定される(つまり、一致情報が出現する)までステップS24及びS22の処理が繰り返されることにより、辞書式圧縮データに含まれる連続する不一致情報を順次不一致情報バッファ232aに格納することができる。
【0091】
一方、不一致情報の次に一致情報が配置されていると判定された場合(ステップS23のYES)、不一致情報処理部232に含まれる不一致情報カウンタ232bは、不一致情報バッファ232aに格納されている不一致情報の数をカウントする(ステップS25)。
【0092】
ステップS25の処理が実行されると、不一致情報処理部232は、不一致情報バッファ232aに格納されている連続する不一致情報(順次格納された複数の不一致情報)を当該不一致情報バッファ232aから読み出し、当該不一致情報に対してステップS25においてカウントされた連続する不一致情報の数を付加する。これにより、不一致情報処理部232は、例えば連続する不一致情報の数の後に当該連続する不一致情報が続くストリームを生成する(ステップS26)。ステップS26の処理が実行されると、不一致情報変換処理は終了される。
【0093】
なお、上記した不一致情報バッファ232aには連続する不一致情報が順次格納されるが、当該連続する不一致情報は例えば不一致情報バッファ232aの例えば連続する記憶領域に格納されるものとする。
【0094】
この場合、不一致情報バッファ232aに格納される連続する不一致情報は、ライトポインタ及びリードポインタを用いて管理される。ライトポインタは、例えばステップS22において不一致情報が書き込まれる不一致情報バッファ232a内の位置(つまり、次に不一致情報を書き込む位置)を示す。一方、リードポインタは、ステップS26においてストリームを生成するために用いられる連続する不一致情報の先頭となる不一致情報が格納されている位置(つまり、読み出しを開始する位置)を示す。
【0095】
以下、
図7を参照して、上記した辞書式圧縮データ及び当該辞書式圧縮データのフォーマットを変換した後のフォーマット変換データの概要について説明する。
図7の上段は辞書式圧縮データの一例を示しており、当該
図7の下段はフォーマット変換データの一例を示している。
【0096】
なお、
図7において、「A」、「B」、「C」、「D」及び「E」は、辞書式圧縮データ(フォーマット変換データ)に含まれる不一致情報(不一致文字)を表している。一方、
図7において、「X」及び「Y」は、辞書式圧縮データ(フォーマット変換データ)に含まれる一致情報(一致位置及び一致長)を表している。
【0097】
本実施形態において、辞書式圧縮データは、例えばLZ77と称される圧縮アルゴリズムに基づいて圧縮されたデータであり、
図7の上段に示すように一致情報及び不一致情報が連続的に配置されるデータ構造を有しているものとする。すなわち、
図7の上段に示す例では、不一致情報「A」、不一致情報「B」、不一致情報「C」、一致情報「X」、一致情報「Y」、不一致情報「D」及び不一致情報「E」が順番に先頭から配置された辞書式圧縮データを示している。
【0098】
ここで、
図7の上段に示す辞書式圧縮データに対して
図4に示す処理(
図5に示す一致情報変換処理及び
図6に示す不一致情報変換処理)が実行される場合を想定する。
【0099】
この場合、辞書式圧縮データの先頭に配置されている不一致情報「A」が当該辞書式圧縮データから切り出され、当該不一致情報「A」が不一致情報バッファ232aに格納される。
【0100】
また、辞書式圧縮データにおいては不一致情報「A」の次に不一致情報「B」が配置されているため、当該不一致情報「B」が辞書式圧縮データから切り出され、当該不一致情報「B」が不一致情報バッファ232aに格納される。
【0101】
更に、辞書式圧縮データにおいては不一致情報「B」の次に不一致情報「C」が配置されているため、当該不一致情報「C」が辞書式圧縮データから切り出され、当該不一致情報「C」が不一致情報バッファ232aに格納される。
【0102】
ここで、辞書式圧縮データにおいては不一致情報「C」の次に一致情報「X」が配置されている。この場合、上記したように不一致情報バッファ232aに格納された不一致情報「A」、「B」及び「C」の数である「3」が連続する不一致情報の数としてカウントされる。
【0103】
これにより、連続する不一致情報の数「3」の後に連続する不一致情報「A」、「B」及び「C」が続くストリーム「3ABC」が生成される。
【0104】
次に、上記した辞書式圧縮データにおいて不一致情報「C」の次に配置されている一致情報「X」が当該辞書式圧縮データから切り出される。
【0105】
この場合、辞書式圧縮データから切り出された一致情報「X」の長さ(当該一致情報「X」に含まれる一致位置及び一致長のデータ長)が算出される。
【0106】
ここで算出された一致情報「X」の長さを「X長」と表すものとすると、当該一致情報の長さ「X長」の後に当該一致情報「X」が続くストリーム「X長X」が生成される。
【0107】
更に、上記した辞書式圧縮データにおいて一致情報「X」の次に配置されている一致情報「Y」が当該辞書式圧縮データから切り出される。
【0108】
この場合、辞書式圧縮データから切り出された一致情報「Y」の長さ(当該一致情報「Y」に含まれる一致位置及び一致長のデータ長)が算出される。
【0109】
ここで算出された一致情報「Y」の長さを「Y長」と表すものとすると、当該一致情報の長さ「Y長」の後に当該一致情報「Y」が続くストリーム「Y長Y」が生成される。
【0110】
次に、辞書式圧縮データにおいては一致情報「Y」の次に不一致情報「D」が配置されているため、当該不一致情報「D」が辞書式圧縮データから切り出され、当該不一致情報「D」が不一致情報バッファ232aに格納される。
【0111】
また、辞書式圧縮データにおいては不一致情報「D」の次に不一致情報「E」が配置されているため、当該不一致情報「E」が辞書式圧縮データから切り出され、当該不一致情報「E」が不一致情報バッファ232aに格納される。
【0112】
ここで、
図7においては示されていないが、辞書式圧縮データにおいて不一致情報「E」の次に一致情報が配置されているまたは当該不一致情報「E」が辞書式圧縮データに含まれる最後のシンボルである(つまり、不一致情報「E」の次に一致情報及び不一致情報が配置されていない)場合を想定する。
【0113】
この場合、上記したように不一致情報バッファ232aに格納された不一致情報「D」及び「E」の数である「2」が連続する不一致情報の数としてカウントされる。
【0114】
これにより、連続する不一致情報の数「2」の後に連続する不一致情報「D」及び「E」が続くストリーム「2DE」が生成される。
【0115】
上記したように
図7の上段に示す辞書式圧縮データに含まれる一致情報及び不一致情報の全てにおいて処理が実行された場合、ストリーム「3ABC」、「X長X」、「Y長Y」及び「2DE」が連結されたフォーマット変換データが取得(生成)される。
【0116】
すなわち、
図7に示す例においては、辞書式圧縮データ「ABCXYDE」を、フォーマット変換データ「3ABCX長XY長Y2DE」に変換することができる。
【0117】
なお、
図7にフォーマット変換データにおいては連続する不一致情報の数として「3」及び「2」のような当該数を直接的に表す値が用いられているが、当該連続する不一致情報の数は、このような直接的な数値でなくてもよい。すなわち、フォーマット変換データにおいては、連続する不一致情報の数を特定可能な情報(つまり、連続する不一致情報の数に関する情報)が当該連続する不一致情報の数として用いられていてもよい。フォーマット変換データにおける一致情報の長さについても同様に、例えば一致情報の長さを特定可能な情報(一致情報の長さに関する情報)を用いてもよい。
【0118】
ここで、
図7の上段に示す辞書式圧縮データが例えばLZ77と称される圧縮アルゴリズムに基づいて圧縮されたデータであるものとして説明したが、例えばCPU(つまり、ソフトウェア処理)で低負荷及び高速に辞書式復号を行うことができる圧縮アルゴリズムとしてsnappyやLZ4があり、このsnappyやLZ4に基づく辞書式圧縮データは、不一致情報の数の後に当該不一致情報が配置され、一致情報の長さの後に当該一致情報が配置されるデータ構造を有している。
【0119】
このため、本実施形態において、フォーマット変換部23は、上記したLZ77に基づく辞書式圧縮データをsnappyやLZ4に基づく辞書式圧縮データ(圧縮ストリーム)に変換するように構成されていてもよい。
【0120】
ここで、
図8A及び
図8Bを参照して、snappyに基づく辞書式圧縮データのデータ構造(フォーマット)の一例について説明する。
【0121】
snappyの圧縮データは、不一致情報(Literal)と一致情報(copy)の2つの要素から構成され、各要素の先頭に配置される「tag byte」の下位2ビットで不一致情報と一致情報とを判別する。なお、不一致情報は「tag byte」の下位2ビットが「00」で表現され、一致情報は「tag byte」の下位2ビットが「01」、「10」及び「11」のいずれかで表現される。
【0122】
まず、
図8Aを用いて、不一致情報について説明する。不一致情報の場合、「tag byte」の上位6ビットが不一致情報の長さ(のビット幅)を表し、当該「tag byte」の上位6ビットは当該不一致情報の長さに応じて「0~59」「60」、「61」、「62」及び「63」の5つの値を取り得る。
【0123】
具体的には、「tag byte」の上位6ビットが「0~59」である場合、この上位6ビットは、「不一致情報の長さ-1」を表す。不一致情報の長さは1~60の範囲となり、「tag byte」の後ろに不一致情報が続く。
【0124】
また、「tag byte」の上位6ビットが「60」である場合、この上位6ビットは不一致情報の長さが61~256バイトであることを表しており、「tag byte」の後ろの1バイト中に「不一致情報の長さ-1」の値が格納される。なお、この場合における「不一致情報の長さ-1」はリトルエンディアン形式で表され、当該「不一致情報の長さ-1」の値の後ろに不一致情報が続く。
【0125】
また、「tag byte」の上位6ビットが「61」である場合、この上位6ビットは不一致情報の長さが257~65536バイトであることを表しており、「tag byte」の後ろの2バイト中に「不一致情報の長さ-1」の値が格納される。なお、この場合における「不一致情報の長さ-1」はリトルエンディアン形式で表され、当該「不一致情報の長さ-1」の値の後ろに不一致情報が続く。
【0126】
図8Aにおいては示されていないが、「tag byte」の上位6ビットが「62」である場合には「tag byte」の後ろの3バイト中に「不一致情報の長さ-1」の値が格納され、「tag byte」の上位6ビットが「63」である場合には「tag byte」の後ろの4バイト中に「不一致情報の長さ-1」の値が格納される。なお、この場合における「不一致情報の長さ-1」もリトルエンディアン形式で表され、当該「不一致情報の長さ-1」の値の後ろに不一致情報が続く。
【0127】
このようにsnappyの圧縮データによれば、「tag byte」と後続の0~4バイトを参照することで不一致情報の長さ(連続する不一致情報の数)を得ることができる。
【0128】
次に、
図8Bを用いて、一致情報について説明する。一致情報の場合、「tag byte」の下位2ビットで一致情報の長さが決定される。
【0129】
具体的には、「tag byte」の下位2ビットが「01」の場合は、「tag byte」を含めて2バイトが一致情報となる。この場合、「tag byte」の下位2ビットの前に配置される3ビットが「一致長-4(一致長=4~11)」を表し、「tag byte」の上位3ビットと「tag byte」の後ろの8ビットが一致位置(一致距離)を表す。
【0130】
また、「tag byte」の下位2ビットが「10」の場合は、「tag byte」を含めて3バイトが一致情報となる。この場合、「tag byte」の上位6ビットが「一致長-1(一致長=1~64)」を表し、「tag byte」の後ろの16ビットが一致位置(一致距離)を表す。
【0131】
更に、「tag byte」の下位2ビットが「11」の場合は、「tag byte」を含めて5バイトが一致情報となる。この場合、「tag byte」の上位6ビットが「一致長-1(一致長=1~64)」を表し、「tag byte」の後ろの32ビットが一致位置(一致距離)を表す。
図8A及び
図8Bにおいて説明したデータ構造は一例であり、本実施形態においてメモリシステム3(フォーマット変換部23)からホスト2に出力されるフォーマット変換データ(のフォーマット)は、
図8A及び
図8Bと異なるものであってもよい。
【0132】
ここで、上記したようにメモリシステム3から出力されたフォーマット変換データはホスト2に含まれる辞書式復号部2a(ホスト2に備えられるCPU)によって復号されるが、当該フォーマット変換データには、一致情報の長さの後に続く当該一致情報(一致位置及び一致長)及び連続する不一致情報の数の後に続く当該連続する不一致情報が含まれる。
【0133】
この場合、フォーマット変換データに対する辞書式復号において、辞書式復号部2aは、当該フォーマット変換データに含まれる一致情報の長さ及び連続する不一致情報の数に基づいて、一致情報(一致位置及び一致長)及び不一致情報(ローデータ)を当該フォーマット変換データからそれぞれ高速に切り出すことができる。
【0134】
具体的には、辞書式復号部2aはヒストリバッファを有し、当該ヒストリバッファには、過去にフォーマット変換データから切り出された一致情報(一致位置及び一致長)から復号されたデータ及び過去にフォーマット変換データから切り出されたローデータ(不一致情報)が順次格納される。
【0135】
辞書式復号部2aは、フォーマット変換データから一致情報が切り出された場合、当該一致情報に含まれる一致位置(アドレス)及び一致長に基づいて、ヒストリバッファからバッファデータを読み出す。この場合、辞書式復号部2aは、一致情報に含まれる一致位置に格納されているバッファデータであって、当該一致情報に含まれる一致長(文字数)のバッファデータを読み出す。このように読み出されたバッファデータは、一致情報(一致位置及び一致長)から復号されたデータに相当する。
【0136】
一方、フォーマット変換データから不一致情報が切り出された場合、当該不一致情報はローデータ(つまり、符号化されていないデータ)であるため、当該ローデータは伸張データにおいてそのまま利用することができる。
【0137】
すなわち、辞書式復号部2aは、上記したようにフォーマット変換データから切り出される一致情報に含まれる一致位置及び一致長に基づいて復号されたデータ及び不一致情報であるローデータを含む伸張データ(テキスト)を取得することができる。
【0138】
上記したように本実施形態においては、ホスト2において指定された書き込みデータ(第1データ)を辞書式符号化(第1圧縮方式)で圧縮した辞書式圧縮データ(第2データ)を出力し、当該辞書式圧縮データをエントロピー符号化(第2圧縮方式)で圧縮したエントロピー圧縮データ(第3データ)を出力し、当該エントロピー圧縮データに基づくデータ(第4データ)がNAND型フラッシュメモリ5(不揮発性メモリ)に書き込まれる。
【0139】
また、本実施形態においては、ホスト2から読み出しコマンドが発行された場合、NAND型フラッシュメモリ5に書き込まれたエントロピー圧縮データを辞書式圧縮データに復号し、当該辞書式圧縮データのフォーマットを変換することによってフォーマット変換データ(第5データ)を取得し、当該フォーマット変換データをホスト2に出力する。
【0140】
このようにメモリシステム3から出力されたフォーマット変換データは、ホスト2が備える辞書式復号部2aによって読み出しデータ(第1データ)に復号される。
【0141】
本実施形態においては、上記した構成により、例えばメモリシステム3(伸張装置20)側で圧縮データに対する全ての伸張処理(エントロピー復号及び辞書式復号)が実行された伸張データ(非圧縮データ)をホスト2に出力する構成と比較して、当該伸張データよりもデータ量が少ないフォーマット変換データ(辞書式圧縮データ)がホスト2に出力されるため、ホスト2及びメモリシステム3間に配置されているシステムバスの帯域使用率を低減することができる。
【0142】
また、本実施形態においては、ホスト2に備えられるCPUが低負荷及び高速に辞書式復号を行うことが可能なように辞書式圧縮データのフォーマットを変換したフォーマット変換データがホスト2に出力される。具体的には、辞書式圧縮データには一致情報及び不一致情報が含まれるが、一致情報及び不一致情報に関する付加情報として、一致情報の長さに関する情報及び連続する不一致情報の数に関する情報が付加されたフォーマット変換データがホスト2に出力される。なお、本実施形態においては、一致情報の長さに関する情報及び連続する不一致情報の数に関する情報の両方が付加されるものとして説明したが、一致情報の長さに関する情報及び連続する不一致情報の数に関する情報の一方のみが付加される構成であってもよい。
【0143】
このような構成によれば、ホスト2側で行われる辞書式復号においては、上記した一致情報の長さ及び連続する不一致情報の数に基づいてフォーマット変換データから一致情報及び不一致情報を容易に切り出すことができるため、当該ホスト2が備えるCPUの処理負荷を抑制する(つまり、ホスト2側で行われる辞書式復号にかかる時間を低減する)ことが可能となる。
【0144】
よって、本実施形態においては、メモリシステム3が例えばデータベースのような読み出しコマンドの頻度が高い情報処理システム1に用いられる場合であっても、ホスト2(CPU)の負荷を抑制しつつ、バスの使用帯域を削減することができるため、当該情報システム1全体としての性能を向上させることが可能となる。
【0145】
なお、本実施形態においては、一致情報及び不一致情報に付加される付加情報が一致情報の長さ及び連続する不一致情報の数であるものとして説明したが、上記したホスト2側の処理負荷を低減することが可能であれば、本実施形態において説明した以外の付加情報が付加される構成であってもよい。
【0146】
更に、本実施形態においては辞書式符号化及びエントロピー符号化を組み合わせた圧縮手法によりデータが圧縮(符号化)される構成について主に説明したが、当該データを圧縮する圧縮手法として採用する符号化の種類は辞書式符号化及びエントロピー符号化以外であってもよく、本実施形態は、上記したようにホスト2(CPU)の処理負荷を低減するようにフォーマットが変換された圧縮データ(少なくとも1つの符号化手法により圧縮されたデータ)を当該ホスト2に出力する構成であれば適用可能である。
【0147】
(第2実施形態)
次に、第2実施形態について説明する。なお、本実施形態においては、前述した第1実施形態と同様の部分についての詳しい説明を省略し、当該第1実施形態とは異なる部分について主に説明する。また、本実施形態に係る情報処理システムのハードウェア構成については前述した第1実施形態と同様であるため、適宜、
図1を用いて説明する。
【0148】
図9は、本実施形態に係る情報処理システム1の機能構成の一例を示すブロック図である。
【0149】
図9に示すように、本実施形態における伸張装置20は、前述した第1実施形態において説明したECCデコーダ21、エントロピー復号部22及びフォーマット変換部23に加えて、辞書式復号部24を更に含む。なお、本実施形態において、ホスト2から読み出しコマンドが発行された際にエントロピー復号部22において復号された辞書式圧縮データは、フォーマット変換部23及び辞書式復号部24に出力される。
【0150】
辞書式復号部24は、例えばヒストリバッファ241を有し、当該ヒストリバッファ241を用いてエントロピー復号部22から出力された辞書式圧縮データを復号する(つまり、当該辞書式圧縮データに対して辞書式復号を行う)。
【0151】
なお、前述した第1実施形態においては、ホスト2に含まれる辞書式復号部2aが一致情報の長さ及び連続する不一致情報の数に基づいて一致情報及び不一致情報をフォーマット変換データから切り出して辞書式復号を行うものとして説明したが、本実施形態においてエントロピー復号部22から辞書式復号部24に出力される辞書式圧縮データには、一致情報の長さ及び連続する不一致情報の数が付加されていない。このため、辞書式復号部24は、辞書式圧縮データに含まれる一致情報及び不一致情報を当該辞書式圧縮データの先頭から順次切り出しながら辞書式復号を行うものとする。
【0152】
辞書式復号部24による辞書式復号の結果(つまり、伸張データ)は、ホスト2から発行された読み出しコマンドにおいて指定されているデータ(読み出しデータ)として当該辞書式復号部24から出力される。
【0153】
ここで、本実施形態においてホスト2から読み出しコマンドが発行された場合には、上記した辞書式復号部24から伸張データが出力されるとともに、フォーマット変換部23からフォーマット変換データが出力される。
【0154】
このため、本実施形態に係るメモリシステム3は、このような伸張データ及びフォーマット変換データを選択的にホスト2に出力するための構成として、出力形式レジスタ30及びセレクタ40を更に備える。
【0155】
出力形式レジスタ30には、メモリシステム3からホスト2に対するデータの出力形式を指示する情報(以下、出力形式情報と表記)が格納(設定)される。
【0156】
セレクタ40は、出力形式レジスタ30に格納されている出力形式情報に基づいて、伸張データ及びフォーマット変換データの一方を選択する。この場合、セレクタ40は、例えば辞書式復号部24及びフォーマット変換部23との物理的な接続を切り替えることによって、伸張データ及びフォーマット変換データの一方を選択するようにしてもよい。
【0157】
次に、
図10のフローチャートを参照して、本実施形態に係る情報処理システム1の処理手順の一例について説明する。ここでは、ホスト2から読み出しコマンドが発行された際のメモリシステム3の処理について主に説明する。
【0158】
まず、前述した
図4に示すステップS1及びS2の処理に相当するステップS31及びS32の処理が実行される。なお、ステップS32においてエントロピー復号が行われた後の辞書式圧縮データは、辞書式復号部24及びフォーマット変換部23に出力される。
【0159】
ステップS32の処理が実行されると、辞書式復号部24は、エントロピー復号部22から出力された辞書式圧縮データ対して辞書式復号を行う(ステップS33)。これにより、辞書式復号部24は、辞書式圧縮データが伸張(復号)された伸張データを取得する。
【0160】
同様に、ステップS32の処理が実行されると、フォーマット変換部23は、エントロピー復号部22から出力された辞書式圧縮データに対してフォーマット変換を行う(ステップS34)。なお、ステップS34において行われるフォーマット変換は前述した
図4に示すステップS3~S7の処理に相当する処理であるため、ここではその詳しい説明を省略する。
【0161】
なお、上記したステップS33の処理及びステップS34の処理は並列に実行され、ステップS33の処理が実行された場合には辞書式復号部24からは伸張データが出力され、ステップS34の処理が実行された場合にはフォーマット変換部23からはフォーマット変換データが出力される。
【0162】
ここで、本実施形態においては出力形式レジスタ30に出力形式情報が格納されているが、当該出力形式情報には、例えば伸張データ(ローデータ)の形式で出力することを指示する第1出力形式情報及びフォーマット変換データの形式で出力することを指示する第2出力形式情報が含まれる。
【0163】
この場合、セレクタ40は、出力形式レジスタ30に第1出力形式情報が格納されているか否かを判定する(ステップS35)。
【0164】
出力形式レジスタ30に第1出力形式情報が格納されていると判定された場合(ステップS35のYES)、セレクタ40は、辞書式復号部24から出力された伸張データ及びフォーマット変換部23から出力されたフォーマット変換データのうちの伸張データを選択し、ホスト2に出力する(ステップS36)。この場合、ホスト2側では辞書式復号を行う必要はない。
【0165】
一方、出力形式レジスタ30に第1出力形式情報が格納されていない(つまり、第2出力形式情報が格納されている)と判定された場合(ステップS35のNO)、セレクタ40は、辞書式復号部24から出力された伸張データ及びフォーマット変換部23から出力されたフォーマット変換データのうちのフォーマット変換データを選択し、ホスト2に出力する(ステップS37)。この場合、ホスト2側では辞書式復号部2aによってフォーマット変換データに対する辞書式復号が行われる。
【0166】
ステップS36またはS37の処理が実行された場合、
図4に示すステップS9の処理に相当するステップS38の処理が実行される。なお、ステップS38において読み出しデータの圧縮データの全てについて処理が実行されていないと判定された場合、ステップS31に戻って処理が繰り返される。一方、読み出しデータの圧縮データの全てについて処理が実行されたと判定された場合、
図10の処理は終了される。
【0167】
上記したように本実施形態においては、出力形式レジスタ30に格納されている出力形式情報(第1出力形式情報または第2出力形式情報)に基づいて伸張データ及びフォーマット変換データの一方がホスト2に出力される。
【0168】
このような構成によれば、例えば出力形式レジスタ30に第1出力形式情報が格納されていることにより伸張データがホスト2に出力された場合には、辞書式復号をホスト2側で行う必要がないため、ホスト2(CPU)の負荷を抑制することができる。一方、例えば出力形式レジスタ30に第2出力形式情報が格納されていることによりフォーマット変換データがホスト2に出力された場合には、前述した第1実施形態において説明したようにシステムバスの帯域使用率を低減することができる。
【0169】
なお、出力形式レジスタ30に格納される出力形式情報(第1出力形式情報または第2出力形式情報)は、例えば情報処理システム1の動作状態等に基づいてホスト2(CPU)によって指定される。また、この出力形式情報は、例えば情報処理システム1の起動(ブート)時に指定されてもよいし、当該ホスト2から発行される読み出しコマンド毎に指定されてもよい。
【0170】
情報処理システム1の起動時に出力形式情報が指定される構成であれば、出力形式レジスタ30には1つの出力形式情報が格納されていればよく、当該情報処理システム1が動作している間にホスト2から発行される読み出しコマンドの全てに対して当該出力形式情報に応じた同一の形式のデータ(伸張データまたはフォーマット変換データ)がメモリシステム3から出力されるような動作が可能となる。
【0171】
一方、読み出しコマンド毎に出力形式情報が指定される構成であれば、出力形式レジスタ30には当該読み出しコマンド毎の出力形式情報が格納され、読み出しコマンド毎に当該出力形式情報に応じた異なる形式のデータ(伸張データまたはフォーマット変換データ)がメモリシステム3から出力されるような動作が可能となる。
【0172】
なお、上記したように読み出しコマンド毎に出力形式情報を指定する構成の場合には、ホスト2(CPU)とメモリシステム3との間のホストインタフェース4aとして例えばNVMe規格のインタフェースを用いてもよい。
【0173】
また、本実施形態においては、辞書式復号部24から出力される伸張データ及びフォーマット変換部23から出力されるフォーマット変換データの一方をセレクタ40が選択するものとして説明したが、セレクタ40は、出力形式レジスタ30に格納されている出力形式情報に基づいて辞書式復号部24及びフォーマット変換部23の一方のみを選択的に動作させる(制御する)構成であっても構わない。
【0174】
具体的には、出力形式レジスタ30に第1出力形式情報が格納されている場合、セレクタ40は、辞書式復号部24及びフォーマット変換部23のうちの辞書式復号部24を動作させ、当該辞書式復号部24から出力された伸張データをホスト2に出力してもよい。一方、出力形式レジスタ30に第2出力形式情報が格納されている場合、セレクタ40は、辞書式復号部24及びフォーマット変換部23のうちのフォーマット変換部23を動作させ、当該フォーマット変換部23から出力されたフォーマット変換データをホスト2に出力してもよい。
【0175】
(第3実施形態)
次に、第3実施形態について説明する。なお、本実施形態においては、前述した第1及び第2実施形態と同様の部分についての詳しい説明を省略し、当該第1及び第2実施形態とは異なる部分について主に説明する。また、本実施形態に係る情報処理システムのハードウェア構成については前述した第1実施形態と同様であるため、適宜、
図1を用いて説明する。
【0176】
図11は、本実施形態に係る情報処理システム1の機能構成の一例を示すブロック図である。
【0177】
前述した第1及び第2実施形態における伸張装置20においては、フォーマット変換部23の不一致情報処理部232が不一致情報バッファ232aを含むものとして説明したが、本実施形態における伸張装置20においては、当該不一致情報処理部232が当該不一致情報バッファ232aの代わりにバッファ制御部232cを含む。
【0178】
本実施形態においては、前述した第2実施形態において説明した辞書式復号部24が有するヒストリバッファ241をフォーマット変換部23(不一致情報処理部232)及び辞書式復号部24で共有する点で、前述した第2実施形態とは異なる。
【0179】
すなわち、バッファ制御部232cは、不一致情報に付加情報(連続する不一致情報の数)を付加する際に、前述した第1実施形態において説明した不一致情報バッファ232aと同様にヒストリバッファ241を用いる(つまり、当該ヒストリバッファ241に不一致情報を格納し、当該ヒストリバッファ241から不一致情報を読み出す)ように当該ヒストリバッファ241を制御する。
【0180】
ここで、前述した第2実施形態においては
図10に示すステップS33の処理(辞書式復号部24による辞書式復号)とステップS34の処理(フォーマット変換部23によるフォーマット変換)とが並列に実行されるものとして説明したが、本実施形態においては、上記したように辞書式復号部24が有するヒストリバッファ241を辞書式復号部24及びフォーマット変換部23が共有する構成であるため、辞書式復号部24とフォーマット変換部23とは同時に動作する(つまり、同時にヒストリバッファ241を用いる)ことができない。
【0181】
よって、本実施形態において出力形式レジスタ30に第1出力形式情報が格納されている場合、セレクタ40は、当該第1出力形式情報に基づいて辞書式復号部24のみを動作させるものとする。この場合、辞書式復号部24は、ヒストリバッファ241を用いて辞書式圧縮データに対する辞書式復号を行うことができる。
【0182】
一方、出力形式レジスタ30に第2出力形式情報が格納されている場合、セレクタ40は、当該第2出力形式情報に基づいてフォーマット変換部23のみを動作させるものとする。この場合、フォーマット変換部23は、辞書式復号部24が有するヒストリバッファ241を用いて辞書式圧縮データのフォーマットを変換し、フォーマット変換データを取得することができる。
【0183】
なお、フォーマット変換部23がヒストリバッファ241を用いる場合、当該ヒストリバッファ241には不一致情報が格納されるが、当該不一致情報は前述した第1実施形態において説明したライトポインタ及びリードポインタを用いて管理されればよい。
【0184】
上記したように本実施形態においては、辞書式復号部24が有するヒストリバッファ241を用いてフォーマット変換部23がフォーマット変換データを取得する(つまり、辞書式圧縮データに含まれる不一致情報をヒストリバッファ241に格納することによって連続する不一致情報の数をカウントする)ような構成であっても、前述した第2実施形態において説明した効果を実現することが可能である。
【0185】
また、本実施形態においては、フォーマット変換部23(不一致情報処理部232)が不一致情報バッファ232aを有する必要がないため、当該不一致情報バッファ232aを実現するための記憶領域を削減することができる。
【0186】
なお、本実施形態においては辞書式復号部24が有するヒストリバッファ241をフォーマット変換部23に含まれる不一致情報処理部232が用いるものとして説明したが、メモリシステム3(圧縮装置10及び伸張装置20)は、ヒストリバッファ241に格納される不一致情報(連続する複数の不一致情報)が当該ヒストリバッファ241から溢れない範囲(つまり、辞書式符号化における圧縮単位≦ヒストリバッファ241のサイズの範囲)で運用されるものとする。
【0187】
(第4実施形態)
次に、第4実施形態について説明する。なお、本実施形態においては、前述した第1~第3実施形態と同様の部分についての詳しい説明を省略し、当該第1~第3実施形態とは異なる部分について主に説明する。また、本実施形態に係る情報処理システムのハードウェア構成については前述した第1実施形態と同様であるため、適宜、
図1を用いて説明する。
【0188】
図12は、本実施形態に係る情報処理システム1の機能構成の一例を示すブロック図である。
【0189】
本実施形態においては、ホスト2が監視部2b及び決定部2cを含む点で、前述した第2実施形態とは異なる。なお、本実施形態において、監視部2b及び決定部2cは、ホスト2が備えるCPUが所定のプログラムを実行すること(つまり、ソフトウェア)によって実現されてもよいし、ハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
【0190】
監視部2bは、情報処理システムの動作状態を監視し、当該動作状態を示す情報(以下、動作状態情報と表記)を決定部2cに出力する。
【0191】
決定部2cは、監視部2bによって出力された動作状態情報によって示される動作状態に基づいて、出力形式レジスタ30に格納される出力形式情報を決定する。
【0192】
このように決定部2cによって決定された出力形式情報は、ホスト2からメモリシステム3に出力され、出力形式レジスタ30に格納される。
【0193】
次に、
図13のフローチャートを参照して、本実施形態に係る情報処理システム1の処理手順の一例について説明する。ここでは、ホスト2の処理について主に説明する。なお、
図13に示す処理は、予め定められたタイミングで実行されてもよいし、例えば管理者等による指示に基づいて実行されても構わない。
【0194】
まず、監視部2bは、情報処理システム1の動作状態(パフォーマンス)を監視する。なお、本実施形態において、監視部2bによって監視される情報処理システム1の動作状態には、例えばホスト2とメモリシステム3との間に配置されるシステムバスの帯域使用率(以下、単にバス帯域使用率と表記)及び当該ホスト2に備えられるCPUの使用率(以下、単にCPU使用率と表記)等が含まれる。この場合、監視部2bは、情報処理システム1の動作状態を示す動作状態情報として、バス帯域使用率及びCPU使用率を取得する(ステップS41)。
【0195】
次に、決定部2cは、ステップS41において動作状態情報として取得されたバス帯域使用率が予め定められた値(以下、第1閾値と表記)以上であるか否かを判定する(ステップS42)。
【0196】
バス帯域使用率が第1閾値以上でない(つまり、バス帯域使用率が第1閾値未満である)と判定された場合(ステップS42のNO)、決定部2cは、ステップS41において動作状態情報として取得されたCPU使用率が予め定められた値(以下、第2閾値と表記)以上であるか否かを判定する(ステップS43)。
【0197】
CPU使用率が第2閾値以上であると判定された場合(ステップS43のYES)、決定部2cは、出力形式レジスタ30に格納される出力形式情報として第1出力形式情報を決定する(ステップS44)。
【0198】
すなわち、
図13に示す処理によれば、バス帯域使用率が第1閾値未満であり、かつ、CPU使用率が第2閾値以上である場合には、伸張データの形式で出力することを指示する第1出力形式情報が決定される。
【0199】
一方、バス帯域使用率が第1閾値以上であると判定された場合(ステップS42のYES)、決定部2cは、出力形式レジスタ30に格納される出力形式情報として第2出力形式情報を決定する(ステップS45)。
【0200】
すなわち、
図13に示す処理によれば、バス帯域使用率が第1閾値以上である場合には、フォーマット変換データの形式で出力することを指示する第2出力形式情報が決定される。
【0201】
なお、
図13においては、CPU使用率が第2閾値以上でない(CPU使用率が第2閾値未満である)と判定された場合(ステップS43のNO)、ステップS45の処理が実行されるものとして示しているが、この場合(つまり、バス帯域使用率が第1閾値未満であり、かつ、CPU使用率が第2閾値未満である場合)には、第1出力形式情報が決定されるようにしてもよい。
【0202】
上記したステップS44の処理が実行された場合には、当該ステップS44において決定された第1出力形式情報がメモリシステム3に備えられる出力形式レジスタ30に格納される。一方、上記したステップS45の処理が実行された場合には、当該ステップS45において決定された第2出力形式情報がメモリシステム3に備えられる出力形式レジスタ30に格納される。
【0203】
このような
図13の処理が実行された後に、ホスト2から読み出しコマンドが発行された場合には、例えば前述した
図10に示す処理が実行されればよい。
【0204】
なお、
図13に示す処理はホスト2から発行される読み出しコマンド毎に実行されても構わない。この場合、出力形式レジスタ30には、読み出しコマンド毎に決定された出力形式情報が格納されるものとする。このように読み出しコマンド毎に出力形式情報を決定する構成の場合、前述した第2実施形態において説明したように、ホスト2(CPU)とメモリシステム3との間のホストインタフェース4aとして例えばNVMe規格のインタフェースを用いてもよい。
【0205】
上記したように本実施形態においては、情報処理システム1の動作状態を監視し、当該動作状態に基づいて出力形式情報(第1出力形式情報または第2出力形式情報)を決定する。このような構成によれば、情報処理システム1の動作状態(バス帯域使用率及びCPU使用率)に応じて動的に出力形式レジスタ30に格納される出力形式情報を変更することができるため、情報処理システム1全体の性能を効率的に向上させることが可能となる。
【0206】
なお、本実施形態においては
図13の処理が実行された後にホスト2から読み出しコマンドが発行された場合に
図10に示す処理が実行される(つまり、本実施形態が第2実施形態に適用される)ものとして説明したが、本実施形態は、第3実施形態(つまり、辞書式復号部24が有するヒストリバッファ241を当該辞書式復号部24とフォーマット変換部23とで共有する構成)に適用されても構わない。
【0207】
(第5実施形態)
次に、第5実施形態について説明する。なお、本実施形態においては、前述した第1~第4実施形態と同様の部分についての詳しい説明を省略し、当該第1~第4実施形態とは異なる部分について主に説明する。また、本実施形態に係る情報処理システムのハードウェア構成については前述した第1実施形態と同様であるため、適宜、
図1を用いて説明する。
【0208】
ここで、本実施形態においてはホスト2とメモリシステム3との間のホストインタフェース4aとして前述したNVMe規格のインタフェースが採用されている場合を想定しており、本実施形態は、当該NVMe規格のインタフェースを介したホスト2とメモリシステム3との間での読み出しコマンドの扱いについての具体例に相当する。
【0209】
図14は、本実施形態に係る情報処理システム1の機能構成の一例を示すブロック図である。
【0210】
本実施形態において、ホスト2は、メモリシステム3との間で読み出しコマンドを含む各種コマンドを扱うための投入キュー(SQ:Submission Queue)2d及び完了キュー(CQ:Completion Queue)2eを含む。
【0211】
投入キュー2dは、ホスト2から発行された例えば読み出しコマンドが格納(投入)されるキューである。
【0212】
完了キュー2eは、ホスト2から発行された例えば読み出しコマンドに対する応答(当該コマンドの実行が完了したことを示す完了応答)が格納されるキューである。
【0213】
なお、本実施形態においては、例えばホスト2が備えるメモリ等に投入キュー2d及び完了キュー2eを実現するための記憶領域が確保されているものとする。また、以下の説明においては、投入キュー2dに読み出しコマンドが格納されるものとして説明するが、投入キュー2dには当該読み出しコマンドが格納されているメモリ(DRAM)のアドレス等が格納されており、当該読み出しコマンドは投入キュー2dとは別の記憶領域に格納される構成であってもよい。
【0214】
また、詳しい説明については後述するが、本実施形態においては決定部2cによって読み出しコマンド毎に出力形式情報が決定され、投入キュー2dに格納された読み出しコマンドに対して決定された出力形式情報は、当該投入キュー2dから読み出しコマンドを取り出すホストインタフェース4aによって出力形式レジスタ30に格納されるものとする。
【0215】
以下、
図15を参照して、上記した投入キュー2d及び完了キュー2eを用いた情報処理システム1(ホスト2及びメモリシステム3)の動作について説明する。本実施形態において、投入キュー2d及び完了キュー2eは、例えばFIFO方式のリングバッファとして実現されているものとする。
【0216】
ここで、ホスト2から例えば読み出しコマンド301が発行された場合、ホスト2(CPU)は、当該読み出しコマンド301を投入キュー2dに格納する(ステップS51)。この場合、ホスト2は、既に投入キュー2dに格納されている他のコマンドの最後(つまり、tail)に読み出しコマンド301を追加する。
【0217】
なお、上記したようにホスト2から発行される読み出しコマンド301毎に出力形式情報が決定されるものとすると、前述した
図13に示す処理は、読み出しコマンド301が投入キュー2dに格納される前に実行される。この場合、ホスト2から発行された読み出しコマンド301に対して決定された出力形式情報は、当該投入キュー2dに格納される読み出しコマンド301に付加される。
【0218】
上記したように読み出しコマンドが投入キュー2dに格納された場合、当該読み出しコマンド301が投入キュー2dに格納されたことがメモリシステム3に通知される。これにより、ホストインタフェース4aは、投入キュー2dに格納されている読み出しコマンド301を当該投入キュー2dから取り出すことができる(ステップS52)。この場合、ホストインタフェース4aは、投入キュー2dに格納されている複数の読み出しコマンド301のうちの先頭(つまり、head)の読み出しコマンドを取り出す。
【0219】
ここで、上記したように投入キュー2dから取り出された読み出しコマンド301には出力形式情報が付されており、ホストインタフェース4aは、当該出力形式情報を出力形式レジスタ30に格納する。このように出力形式情報が出力形式レジスタ30に格納されると、メモリシステム3においては、前述した
図10に示す処理が実行される。
【0220】
メモリシステム3から伸張データまたはフォーマット変換データが出力された場合、ホストインタフェース4aは、上記した投入キュー2dから取り出された読み出しコマンド301の実行が完了したことを示す完了通知302を完了キュー2eに格納する(ステップS53)。この場合、ホストインタフェース4aは、既に完了キュー2eに格納されている他の完了通知302の最後(tail)に完了通知302を追加する。
【0221】
完了キュー2eに格納された完了通知302は、ホスト2によって取り出される(ステップS54)。この場合、ホスト2は、完了キュー2eに格納されている複数の完了通知302のうちの先頭(head)の完了通知302を取り出す。
【0222】
ここで、投入キュー2dから取り出された読み出しコマンド301に応じてメモリシステム3から出力されたデータ(伸張データまたはフォーマット変換データ)は、例えばホスト2が備えるメモリ(すなわち、完了キュー2eとは別の記憶領域)に格納されるものとする。この場合、完了キュー2eに格納された読み出しコマンド301の実行が完了したことを示す完了通知302には、例えば当該読み出しコマンド301に基づいてメモリシステム3から出力されたデータが格納されているメモリ内のアドレス(ポインタ)及び当該読み出しコマンドに付されていた出力形式情報(つまり、当該データに関する情報)が含まれる。
【0223】
このような完了通知302がホスト2によって完了キュー2eから取り出された場合、当該ホスト2は、当該完了通知302に含まれるアドレスに基づいてメモリシステム3から出力されたデータを取得することができる。
【0224】
なお、完了通知302に含まれている出力形式情報が第1出力形式情報である(つまり、第1出力形式情報が決定された読み出しコマンド301の実行が完了したことを示す完了通知302が完了キュー2eから取り出された)場合は伸張データが取得されるため、ホスト2は辞書式復号を行わない。一方、完了通知302に含まれている出力形式情報が第2出力形式情報である(つまり、第2出力形式情報が決定された読み出しコマンド301の実行が完了したことを示す完了通知302が完了キュー2eから取り出された)場合はフォーマット変換データが取得されるため、ホスト2は当該フォーマット変換データに対する辞書式復号を行う。
【0225】
なお、本実施形態においては読み出しコマンド301が投入キュー2dに格納される際に当該読み出しコマンド301に対する出力形式情報が情報処理システム1の動作状態に基づいて決定されるものとして説明したが、本実施形態においては、当該投入キュー2dに読み出しコマンド301が格納された後に当該動作状態(バス帯域使用率及びCPU使用率)が変化したとしても、当該読み出しコマンド301を削除して発行(生成)し直すような処理は実行しないものとする。
【0226】
上記したように本実施形態においては、ホスト2から発行される読み出しコマンド毎に出力形式情報を決定し、当該読み出しコマンドを投入キュー2d(第1キュー)に順次格納し、当該読み出しコマンドの実行が完了したことを示す完了通知を完了キュー2e(第2キュー)に順次格納する。なお、本実施形態において、ホスト2側でのフォーマット変換データに対する辞書式復号は、第2出力形式情報が決定された読み出しコマンドの実行が完了したことを示す完了通知が完了キュー2eから取り出された場合に行われる。
【0227】
上記した構成によれば、ホスト2とメモリシステム3との間のインタフェースとしてNVMe規格のインタフェースが採用されているような場合には、投入キュー2d及び完了キュー2eを用いて読み出しコマンドのやり取りを適切に行いながら、前述した第4実施形態等において説明した効果を実現することが可能となる。
【0228】
ここで、本実施形態においては、例えば1つの投入キュー2dを用意し、第1出力形式情報が決定された読み出しコマンド(以下、第1出力形式の読み出しコマンドと表記)及び第2出力形式情報が決定された読み出しコマンド(以下、第2出力形式の読み出しコマンドと表記)を混在させて当該投入キュー2dに格納するものとして説明したが、投入キュー2dを複数用意する構成としてもよい。同様に、完了キュー2eを複数用意する構成としてもよい。
【0229】
以下、投入キュー2d及び完了キュー2eがそれぞれ2つ用意されている場合の情報処理システム1を本実施形態の変形例として説明する。以下の説明においては、2つの投入キュー2dのうちの一方を第1投入キュー2d、他方を第2投入キュー2dと称する。また、2つの完了キュー2eのうちの一方を第1完了キュー2e、他方を第2完了キュー2eと称する。
【0230】
なお、投入キュー2d及び完了キュー2eが1つずつ用意されている本実施形態においては、読み出しコマンドが当該投入キュー2dに格納される際に情報処理システム1の動作状態に基づいて当該読み出しコマンドに対する出力形式情報が決定されるものとして説明したが、本実施形態の変形例においては、当該動作状態に基づいて第1及び第2投入キュー2dの各々と第1及び第2完了キュー2eの各々との優先度を制御し、当該制御される優先度に基づいて読み出しコマンド毎の出力形式情報が決定される構成とする。
【0231】
この場合、本実施形態の変形例においては、上記した優先度に基づいて、WRR(weighted round robin)制御が行われるものとする。
【0232】
ここで、例えばバス帯域使用率が上記した第1閾値未満であり、CPU使用率が上記した第2閾値未満である場合を想定する。この場合における第2投入キュー2dの優先度は、例えば第1投入キュー2dの優先度と同じになるように制御される。同様に、第2完了キュー2eの優先度は、例えば第2完了キュー2eの優先度と同じになるように制御される。
【0233】
図16を参照して、上記したように第1投入キュー2dの優先度と第2投入キュー2dの優先度とが同一、かつ、第1完了キュー2eの優先度と第2完了キュー2eの優先度とが同一である場合の情報処理システム1の動作の概要について説明する。
【0234】
まず、1つ目の読み出しコマンドがホスト2から発行された場合を想定する。この場合、ホスト2に含まれる決定部2cは、第1投入キュー2dの優先度と第2投入キュー2dの優先度とが同一であるため、1つ目の読み出しコマンドに対して第1出力形式情報を決定する。このように第1出力形式情報が決定された読み出しコマンド(第1出力形式の読み出しコマンド)301aは、第1投入キュー2dに格納される。すなわち、本実施形態の変形例において、第1投入キュー2dは、第1出力形式の読み出しコマンド301aが格納される投入キューとして用いられる。
【0235】
次に、2つ目の読み出しコマンドがホスト2から発行された場合を想定する。この場合、決定部2cは、第1投入キュー2dの優先度と第2投入キュー2dの優先度とが同一であり、1つ目の読み出しコマンドが第1投入キュー2dに格納されたため、2つ目の読み出しコマンドに対して第2出力形式情報を決定する。このように第2出力形式情報が決定された読み出しコマンド(第2出力形式の読み出しコマンド)301bは、第2投入キュー2dに格納される。すなわち、本実施形態の変形例において、第2投入キュー2dは第2出力形式の読み出しコマンド301bが格納される投入キューとして用いられる。
【0236】
なお、詳しい説明は省略するが、3つ目の読み出しコマンドに対しては第1出力形式情報が決定され、当該3つ目の読み出しコマンドは、第1出力形式の読み出しコマンド301aとして第1投入キュー2dに格納される。一方、4つの目の読み出しコマンドに対しては第2出力形式情報が決定され、当該4つ目の読み出しコマンドは、第2出力形式の読み出しコマンド301bとして第2投入キュー2dに格納される。
【0237】
上記したように第1投入キュー2dの優先度と第2投入キュー2dの優先度とが同一である場合には、第1出力形式の読み出しコマンド301a及び第2出力形式の読み出しコマンド301bが、交互に第1投入キュー2d及び第2投入キュー2dに格納される。
【0238】
ここでは、第1投入キュー2d及び第2投入キュー2dに読み出しコマンドが格納される場合について説明したが、ホストインタフェース4aによって読み出しコマンドが取り出される場合についても同様である。この場合、第1出力形式の読み出しコマンド301a及び第2出力形式の読み出しコマンド301bは、交互に第1投入キュー2d及び第2投入キュー2dから取り出されればよい。
【0239】
なお、第1出力形式の読み出しコマンド301a及び第2出力形式の読み出しコマンド301bが取り出された後のメモリシステム3の動作については本実施形態等において説明した通りであるため、ここではその詳しい説明を省略する。
【0240】
上記したようにホストインタフェース4aによって第1出力形式の読み出しコマンド301aが取り出され、当該第1出力形式の読み出しコマンド301aに対する処理がメモリシステム3において実行された場合、当該第1出力形式の読み出しコマンド301aの実行が完了したことを示す完了通知(以下、第1出力形式の完了通知と表記)302aが第1完了キュー2eに格納される。すなわち、本実施形態の変形例において、第1完了キュー2eは、第1出力形式の完了通知302aが格納される完了キューとして用いられる。
【0241】
一方、ホストインタフェース4aによって第2出力形式の読み出しコマンド301bが取り出され、当該第2出力形式の読み出しコマンド301bに対する処理がメモリシステム3において実行された場合、当該第2出力形式の読み出しコマンド301bの実行が完了したことを示す完了通知(以下、第2出力形式の完了通知と表記)302bが第2完了キュー2eに格納される。すなわち、本実施形態の変形例において、第2完了キュー2eは、第2出力形式の完了通知302bが格納される完了キューとして用いられる。
【0242】
次に、ホスト2は、第1完了キュー2eの優先度及び第2完了キュー2eの優先度に基づいて第1及び第2完了キュー2eから完了通知を取り出す。
【0243】
具体的には、上記したように第1完了キュー2eの優先度と第2完了キュー2eの優先度とが同一である場合、ホスト2は、1つ目の完了通知として第1完了キュー2eから第1出力形式の完了通知302aを取り出し、2つ目の完了通知として第2完了キュー2eから第2出力形式の完了通知302bを取り出す。同様に、ホスト2は、3つ目の完了通知として第1完了キュー2eから第1出力形式の完了通知302aを取り出し、4つ目の完了通知として第2完了キュー2eから第2出力形式の完了通知302bを取り出す。
【0244】
上記したように第1完了キュー2eの優先度と第2完了キュー2eの優先度とが同一である場合には、第1出力形式の完了通知302a及び第2出力形式の完了通知302bが、交互に第1完了キュー2e及び第2完了キュー2eから取り出される。
【0245】
なお、第1出力形式の完了通知302a及び第2出力形式の完了通知302bが取り出された後のホスト2の動作については本実施形態等において説明した通りであるため、ここではその詳しい説明を省略する。
【0246】
ここで、例えばバス帯域使用率が第1閾値以上に変化した場合を想定する。この場合、システムバスの帯域使用率を低減する(つまり、メモリシステム3からホスト2に送信されるデータ量を削減)する必要がある。このため、第2投入キュー2dの優先度は第1投入キュー2dの優先度よりも高くなるように制御され、第2完了キュー2eの優先度は第1完了キュー2eの優先度よりも高くなるように制御される。
【0247】
図17を参照して、上記したように第2投入キュー2dの優先度が第1投入キュー2dの優先度よりも高く、第2完了キュー2eの優先度が第1完了キュー2eの優先度よりも高い場合の情報処理システム1の動作の概要について説明する。
【0248】
まず、1つ目の読み出しコマンドがホスト2から発行された場合を想定する。この場合、ホスト2に含まれる決定部2cは、第2投入キュー2dの優先度が第1投入キュー2dの優先度よりも高いため、1つ目の読み出しコマンドに対して第2出力形式情報を決定する。このように第2出力形式情報が決定された読み出しコマンド(第2出力形式の読み出しコマンド)301bは、第2投入キュー2dに格納される。
【0249】
次に、2つ目の読み出しコマンドがホスト2から発行された場合を想定する。この場合、決定部2cは、第2投入キュー2dの優先度が第1投入キュー2dの優先度よりも高いため、2つ目の読み出しコマンドに対して第2出力形式情報を決定する。このように第2出力形式情報が決定された読み出しコマンド(第2出力形式の読み出しコマンド)301bは、第2投入キュー2dに格納される。
【0250】
更に、3つ目の読み出しコマンドがホスト2から発行された場合を想定する。この場合、決定部2cは、1つ目の読み出しコマンド及び2つ目の読み出しコマンドが第2出力形式の読み出しコマンド301bとして第2投入キュー2dに格納されたため、3つ目の読み出しコマンドに対して第1出力形式情報を決定する。このように第1出力形式情報が決定された読み出しコマンド(第1出力形式の読み出しコマンド)301aは、第1投入キュー2dに格納される。
【0251】
なお、詳しい説明は省略するが、4つ目及び5つ目の読み出しコマンドに対しては第2出力形式情報が決定され、当該4つ目及び5つ目の読み出しコマンドは、第2出力形式の読み出しコマンド301bとして第2投入キュー2dに格納される。一方、6つ目の読み出しコマンドに対しては第1出力形式情報が決定され、当該6つ目の読み出しコマンドは、第1出力形式の読み出しコマンド301aとして第1投入キュー2dに格納される。
【0252】
上記したように第2投入キュー2dの優先度が第1投入キュー2dの優先度よりも高い場合には、第1出力形式の読み出しコマンド301a及び第2出力形式の読み出しコマンド301bが、例えば1対2のような割合で第1投入キュー2d及び第2投入キュー2dに格納される。なお、優先度の低い第1投入キュー2dよりも高い頻度で優先度の高い第2投入キュー2dに読み出しコマンドが格納される構成であれば、第1投入キュー2d及び第2投入キュー2dに格納される読み出しコマンドの数(割合)や順番は適宜変更されても構わない。
【0253】
ここでは、第1投入キュー2d及び第2投入キュー2dに読み出しコマンドが格納される場合について説明したが、ホストインタフェース4aによって読み出しコマンドが取り出される場合についても同様である。この場合、第1出力形式の読み出しコマンド301a及び第2出力形式の読み出しコマンド301bは、例えば1対2のような割合で第1投入キュー2d及び第2投入キュー2dから順次取り出されればよい。
【0254】
なお、第1出力形式の読み出しコマンド301aが取り出された場合に第1出力形式の完了通知302aが第1完了キュー2eに格納され、第2出力形式の読み出しコマンド301bが取り出された場合に第2出力形式の完了通知302bが第2完了キュー2eに格納される点については、上記した
図16において説明した通りである。
【0255】
次に、ホスト2は、第1完了キュー2eの優先度及び第2完了キュー2eの優先度に基づいて第1及び第2完了キュー2eから完了通知を取り出す。
【0256】
具体的には、上記したように第2完了キュー2eの優先度が第1完了キュー2eの優先度よりも高い場合、ホスト2は、1つ目及び2つ目の完了通知として第2完了キュー2eから第2出力形式の完了通知302bを取り出し、3つ目の完了通知として第1完了キュー2eから第1出力形式の完了通知302aを取り出す。同様に、ホスト2は、4つ目及び5つ目の完了通知として第2完了キュー2eから第2出力形式の完了通知302bを取り出し、6つ目の完了通知として第1完了キュー2eから第1出力形式の完了通知302aを取り出す。
【0257】
上記したように第2完了キュー2eの優先度が第1完了キュー2eの優先度よりも高い場合には、第1出力形式の完了通知302a及び第2出力形式の完了通知302bが、例えば1対2のような割合で第1完了キュー2e及び第2完了キュー2eから取り出される。なお、優先度の低い第1完了キュー2eよりも高い頻度で優先度の高い第2完了キュー2eから完了通知が読み出される構成であれば、第1完了キュー2e及び第2完了キュー2eから取り出される完了通知の数(割合)や順番は適宜変更されても構わない。
【0258】
ここでは、バス帯域使用率が第1閾値以上に変化した場合について説明したが、例えばCPU使用率が第2閾値以上に変化した場合には、当該CPU使用率を低減する(つまり、CPUの負荷を抑制する)ために、第1投入キュー2dの優先度を第2投入キュー2dの優先度よりも高くなるように制御し、第1完了キュー2eの優先度を第2完了キュー2eの優先度よりも高くなるように制御してもよい。この場合の情報処理システム1の動作については上記した通りであるため、ここではその詳しい説明を省略する。
【0259】
なお、詳しい説明については省略するが、第1及び第2投入キュー2dの優先度と第1及び第2完了キュー2eの優先度とは、上記したバス帯域使用率及びCPU使用率を総合的に勘案して調整されるようにしてもよい。
【0260】
更に、ここでは第1投入キュー2dの優先度に対する第2投入キュー2dの優先度と、第1完了キュー2eの優先度に対する第2完了キュー2eの優先度とが同一である場合を想定して説明したが、第1投入キュー2dの優先度に対する第2投入キュー2dの優先度と、第1完了キュー2eの優先度に対する第2完了キュー2eの優先度とは異なっていてもよい。具体的には、例えば第1投入キュー2dの優先度と第2投入キュー2dの優先度とは同一であるが、第2完了キュー2eの優先度が第1完了キュー2eの優先度よりも高くなるようにしてもよい。
【0261】
また、ここでは第1及び第2投入キュー2dに対する読み出しコマンドの格納(投入)と、当該第1及び第2投入キュー2dからの読み出しコマンドの取り出しとを同一の優先度に基づいて行うものとして説明したが、当該読み出しコマンドの格納と当該読み出しコマンドの取り出しとは、異なる優先度に基づいて行うようにしてもよい。
【0262】
また、ここでは第1及び第2投入キュー2dの優先度と第1及び第2完了キュー2eの優先度との両方が制御される構成について説明したが、当該第1及び第2投入キュー2dの優先度と第1及び第2完了キュー2eの優先度とのうちの一方のみが制御される構成であってもよい。
【0263】
上記したように本実施形態の変形例においては、ホスト2が第1及び第2投入キュー2d(第1及び第2キュー)と第1及び第2完了キュー2e(第3及び第4キュー)とを含み、第1完了キュー2eから第1出力形式の完了通知が取り出された場合には辞書式復号は行われず、第2完了キュー2eに格納された完了通知が取り出された場合には辞書式復号が行われる。
【0264】
また、本実施形態の変形例においては、第1及び第2投入キュー2dの優先度が情報処理システム1の動作状態に基づいて制御され、当該優先度に基づいて読み出しコマンド毎の出力形式情報が決定される(つまり、当該優先度に基づいて各読み出しコマンドが第1及び第2投入キュー2dに格納される)。また、第1及び第2投入キュー2dに格納された読み出しコマンドは、第1及び第2投入キュー2dの優先度に基づいて順次取り出されて実行される。
【0265】
なお、例えばCPU使用率が第1閾値以上である場合には、第1投入キュー2dの優先度は、第2投入キュー2dの優先度よりも高くなるように制御される。また、例えばバス帯域使用率が第2閾値以上である場合には、第2投入キュー2dの優先度は、第1投入キュー2dの優先度よりも高くなるように制御される。
【0266】
ここでは、第1及び第2投入キュー2dについて説明したが、第1及び第2完了キュー2eについても同様である。
【0267】
本実施形態の変形例においては、このような構成により、例えばバス帯域使用率が高い場合には、第2出力形式の読み出しコマンド301bがメモリシステム3(ホストインタフェース4a)によって取り出される頻度が高くなり、データ量の少ないフォーマット変換データがメモリシステム3から出力されやすくなる。よって、バス帯域使用率を低減することができる。
【0268】
一方、例えばCPU使用率が高い場合には、第1出力形式の読み出しコマンド301bがメモリシステム3(ホストインタフェース4a)によって取り出される頻度が高くなり、辞書式復号を行う必要がない伸張データがメモリシステム3から出力されやすくなる。よって、CPU使用率を低減することができる。
【0269】
ここで、上記した本実施形態(つまり、投入キュー2d及び完了キュー2eを1つずつ用意する構成)においては読み出しコマンドが当該投入キュー2dに格納される際に情報処理システム1の動作状態に基づいて当該読み出しコマンドに対する出力形式情報が決定されるものとして説明したが、このような構成では、既に出力形式情報が決定された読み出しコマンドが投入キュー2dに格納された順に実行されるため、当該読み出しコマンドが投入キュー2dに格納された後の情報処理システム1の動作状態の変化に即座に対応することはできない。
【0270】
これに対して、本実施形態の変形例(つまり、投入キュー2d及び完了キュー2eを2つずつ用意する構成)においては、読み出しコマンドが第1及び第2投入キュー2dに格納された後であっても、当該第1及び第2投入キュー2dまたは第1及び第2完了キュー2eの優先度を制御することによって、優先的に投入キュー2dまたは完了キュー2eから取り出される読み出しコマンドまたは完了通知を変更することができるため、バス帯域使用率及びCPU使用率のような情報処理システム1の動作状態が時々刻々と変化するような場合においても、当該変化に対して少ない処理量で即座に対応することが可能となる。結果として、情報処理システム1全体としての性能をより向上させることができる。
【0271】
また、上記した本実施形態において説明したように投入キュー2d及び完了キュー2eが1つずつ用意されている構成においては例えば読み出しコマンド及び完了通知を取り出す度に出力形式情報を確認して処理を変える必要があるが、本実施形態の変形例のように出力形式情報毎に投入キュー2d及び完了キュー2eを用意する構成によれば、読み出しコマンド及び完了通知を取り出した時点で出力形式情報を把握することができるため、より効率的な動作を実現することができる。
【0272】
一方、上記した本実施形態の構成は、本実施形態の変形例の構成と比較して投入キュー2d及び完了キュー2eを実現するための記憶領域を削減することができるという利点がある。
【0273】
なお、本実施形態の変形例においては、第1投入キュー2d、第2投入キュー2d、第1完了キュー2e及び第2完了キュー2eがそれぞれ1つずつ用意されている構成について説明したが、第1投入キュー2d、第2投入キュー2d、第1完了キュー2e及び第2完了キュー2eのうちの少なくとも1つは、複数用意されていてもよい。また、例えば第1投入キュー2dが複数用意されている場合において、当該複数の第1投入キュー2dの各々の優先度は同一となるように制御されてもよいし、異なるように制御されてもよい。第2投入キュー2d、第1完了キュー2eまたは第2完了キュー2eが複数用意されている場合であっても同様である。このような構成によれば、上記した情報処理システム1の動作状態の変化に対してより柔軟に対応することが可能となる。
【0274】
更に、本実施形態の変形例においては、ホスト2が2つの投入キュー2d(第1及び第2投入キュー2d)と1つの完了キュー2eとを含む構成や、ホスト2が1つの投入キュー2d及び2つの完了キュー2e(第1及び第2完了キュー2e)を含む構成等であっても構わない。
【0275】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0276】
1…情報処理システム、2…ホスト、2a…辞書式復号部(第3復号部)、2b…監視部、2c…決定部、2d…投入キュー、2e…完了キュー、3…メモリシステム、4…コントローラ、4a…ホストインタフェース(出力部)、4b…CPU、4c…NANDインタフェース、4d…DRAMインタフェース5…NAND型フラッシュメモリ(不揮発性メモリ)、6…DRAM、10…圧縮装置、11…辞書式符号化部(第1圧縮部)、12…エントロピー符号化部(第2圧縮部)、13…ECCエンコーダ、20…伸張装置、21…ECCデコーダ、22…エントロピー復号部(第1復号部)、23…フォーマット変換部、24…辞書式復号部(第2復号部)、30…出力形式レジスタ、40…セレクタ、111…ヒストリバッファ(第1バッファ)、231…一致情報処理部、232…不一致情報処理部、232a…不一致情報バッファ(第2バッファ)、232b…不一致情報カウンタ、232c…バッファ制御部、241…ヒストリバッファ(第3バッファ)