(57)【特許請求の範囲】
【請求項１】
メモリシステムと通信する情報処理装置であって、
前記メモリシステムは、複数の第１の消去単位エリアを含む第１のスペースと、複数の第２の消去単位エリアを含む第２のスペースとを具備する不揮発性メモリと、前記不揮発性メモリを制御するコントローラとを具備し、
前記情報処理装置は、前記メモリシステムの外部にプロセッサを具備し、
前記プロセッサは、
第１のオブジェクトに対応する第１の論理アドレス空間に対する第１の書き込み頻度と、第２のオブジェクトに対応する第２の論理アドレス空間に対する第２の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第１及び第２の論理アドレス空間を前記第１のスペースに割り当て、第３のオブジェクトに対応する第３の論理アドレス空間に対する第３の書き込み頻度と、第４のオブジェクトに対応する第４の論理アドレス空間に対する第４の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第３及び第４の論理アドレス空間を前記第２のスペースに割り当て、
書き込みコマンド、前記書き込みコマンドに対応する論理アドレス空間に割り当てられたスペースの識別データ、書き込みデータ、前記書き込みデータの論理アドレスを前記コントローラへ送信し、
読み出しコマンド、前記識別データ、読み出しデータの論理アドレスを前記コントローラへ送信し、前記コントローラから前記読み出しデータを受信する、
情報処理装置。
【請求項２】
前記プロセッサは、前記第１乃至第４の論理アドレス空間ごとに前記第１乃至第４の書き込み頻度を算出し、
前記第１乃至第４の論理アドレス空間ごとの前記第１乃至第４の書き込み頻度に基づいて、前記第１及び第２の論理アドレス空間を前記第１のスペースに割り当て、前記第３及び第４の論理アドレス空間を前記第２のスペースに割り当てる、
請求項１の情報処理装置。
【請求項３】
前記プロセッサは、前記第１のオブジェクトを示す第１のオブジェクト識別データ及び前記第１の書き込み頻度に基づいて、前記第１のオブジェクトに対応する前記第１の論理アドレス空間を前記第１のスペースに割り当て、前記第２のオブジェクトを示す第２のオブジェクト識別データ及び前記第２の書き込み頻度に基づいて、前記第２のオブジェクトに対応する前記第２の論理アドレス空間を前記第１のスペースに割り当て、前記第３のオブジェクトを示す第３のオブジェクト識別データ及び前記第３の書き込み頻度に基づいて、前記第３のオブジェクトに対応する前記第３の論理アドレス空間を前記第２のスペースに割り当て、前記第４のオブジェクトを示す第４のオブジェクト識別データ及び前記第４の書き込み頻度に基づいて、前記第４のオブジェクトに対応する前記第４の論理アドレス空間を前記第２のスペースに割り当てる、
請求項１の情報処理装置。
【請求項４】
前記スペースの前記識別データは、オブジェクトに対応する論理アドレス空間に割り当てられたスペースを示し、
前記プロセッサは、前記書き込みコマンド、前記スペースの前記識別データ、前記書き込みデータ、前記書き込みデータの前記論理アドレスに加えて、前記書き込みデータのサイズを送信する、
請求項１乃至請求項３のうちのいずれか１項の情報処理装置。
【請求項５】
コンピュータを、
割り当て部と発送部として機能させ、
前記コンピュータは、メモリシステムと通信するプロセッサを具備し、
前記メモリシステムは、複数の第１の消去単位エリアを含む第１のスペースと、複数の第２の消去単位エリアを含む第２のスペースとを具備する不揮発性メモリと、前記不揮発性メモリを制御するコントローラとを具備し、
前記割り当て部は、前記メモリシステムの外部にあり、
前記割り当て部は、第１のオブジェクトに対応する第１の論理アドレス空間に対する第１の書き込み頻度と、第２のオブジェクトに対応する第２の論理アドレス空間に対する第２の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第１及び第２の論理アドレス空間を前記第１のスペースに割り当て、
前記割り当て部は、第３のオブジェクトに対応する第３の論理アドレス空間に対する第３の書き込み頻度と、第４のオブジェクトに対応する第４の論理アドレス空間に対する第４の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第３及び第４の論理アドレス空間を前記第２のスペースに割り当て、
前記発送部は、書き込みコマンド、前記書き込みコマンドに対応する論理アドレス空間に割り当てられたスペースの識別データ、書き込みデータ、前記書き込みデータの論理アドレスを前記コントローラへ送信し、
前記発送部は、読み出しコマンド、前記識別データ、読み出しデータの論理アドレスを前記コントローラへ送信し、前記コントローラから前記読み出しデータを受信する、
プログラム。
【請求項６】
前記コンピュータを、さらに、算出部として機能させ、
前記算出部は、前記第１乃至第４の論理アドレス空間ごとに前記第１乃至第４の書き込み頻度を算出し、
前記割り当て部は、前記第１乃至第４の論理アドレス空間ごとの前記第１乃至第４の書き込み頻度に基づいて、前記第１及び第２の論理アドレス空間を前記第１のスペースに割り当て、前記第３及び第４の論理アドレス空間を前記第２のスペースに割り当てる、
請求項５のプログラム。
【請求項７】
前記割り当て部は、前記第１のオブジェクトを示す第１のオブジェクト識別データ及び前記第１の書き込み頻度に基づいて、前記第１のオブジェクトに対応する前記第１の論理アドレス空間を前記第１のスペースに割り当て、前記第２のオブジェクトを示す第２のオブジェクト識別データ及び前記第２の書き込み頻度に基づいて、前記第２のオブジェクトに対応する前記第２の論理アドレス空間を前記第１のスペースに割り当て、前記第３のオブジェクトを示す第３のオブジェクト識別データ及び前記第３の書き込み頻度に基づいて、前記第３のオブジェクトに対応する前記第３の論理アドレス空間を前記第２のスペースに割り当て、前記第４のオブジェクトを示す第４のオブジェクト識別データ及び前記第４の書き込み頻度に基づいて、前記第４のオブジェクトに対応する前記第４の論理アドレス空間を前記第２のスペースに割り当てる、
請求項５のプログラム。
【請求項８】
前記スペースの前記識別データは、オブジェクトに対応する論理アドレス空間に割り当てられたスペースを示し、
前記発送部は、前記書き込みコマンド、前記スペースの前記識別データ、前記書き込みデータ、前記書き込みデータの前記論理アドレスに加えて、前記書き込みデータのサイズを送信する、
請求項５乃至請求項７のうちのいずれか１項のプログラム。
【請求項９】
請求項１乃至請求項４のいずれか１項の前記情報処理装置と前記メモリシステムとを具備する情報処理システムであって、
前記コントローラは、
前記複数の第１の消去単位エリアを前記第１のスペースに割り当て、前記複数の第２の消去単位エリアを前記第２のスペースに割り当て、
前記書き込みコマンド、前記識別データ、前記書き込みデータ、前記論理アドレスを、前記情報処理装置から受信し、
前記論理アドレス及び前記識別データと、前記識別データによって示される前記スペースに対応する物理アドレスとを関連付け、
前記物理アドレスによって示される位置に、前記書き込みデータを書き込む、
情報処理システム。
【請求項１０】
請求項１乃至請求項４のいずれか１項の前記情報処理装置と前記メモリシステムとを具備する情報処理システムであって、
前記コントローラは、
前記読み出しコマンド、前記識別データ、前記論理アドレスを、前記情報処理装置から受信し、
前記論理アドレ及び前記識別データと、前記識別データによって示される前記スペースに対応する物理アドレスとの関連付けに基づいて、前記論理アドレスを前記物理アドレスへ変換し、
前記読み出しデータを、前記物理アドレスによって示される位置から読み出し、
前記読み出しデータを、前記情報処理装置へ送信する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、情報処理装置、プログラム、及び、情報処理システムに関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、不揮発性半導体メモリを備え、ハードディスクドライブ（ＨＤＤ）と同様のインタフェースを持つ。例えば、ＳＳＤは、データ書き込み時に、書き込みコマンド、書き込み先のLogical Block Addressing（ＬＢＡ）、書き込みデータを情報処理装置から受け、Look Up Table（ＬＵＴ）に基づいて、ＬＢＡをPhysical Block Addressing（ＰＢＡ）に変換し、ＰＢＡの示す位置に書き込みデータを書き込む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７７３９４４４号明細書
【特許文献２】米国特許出願公開第２０１３／０１３８８６７号明細書
【特許文献３】米国特許出願公開第２０１４／０１９５７２５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、不揮発性メモリへコマンドを送る情報処理装置、プログラム、及び、情報処理システムを提供する。
【課題を解決するための手段】
【０００５】
本実施形態によれば、情報処理装置は、メモリシステムと通信する。メモリシステムは、複数の第１の消去単位エリアを含む第１のスペースと、複数の第２の消去単位エリアを含む第２のスペースとを具備する不揮発性メモリと、不揮発性メモリを制御するコントローラとを含む。情報処理装置は、メモリシステムの外部にプロセッサを含む。プロセッサは、第１のオブジェクトに対応する第１の論理アドレス空間に対する第１の書き込み頻度と、第２のオブジェクトに対応する第２の論理アドレス空間に対する第２の書き込み頻度とが異なる書き込み頻度グループに属する場合に、第１及び第２の論理アドレス空間を第１のスペースに割り当て、第３のオブジェクトに対応する第３の論理アドレス空間に対する第３の書き込み頻度と、第４のオブジェクトに対応する第４の論理アドレス空間に対する第４の書き込み頻度とが異なる書き込み頻度グループに属する場合に、第３及び第４の論理アドレス空間を第２のスペースに割り当て、書き込みコマンド、書き込みコマンドに対応する論理アドレス空間に割り当てられたスペースの識別データ、書き込みデータ、書き込みデータの論理アドレスをコントローラへ送信し、読み出しコマンド、識別データ、読み出しデータの論理アドレスをコントローラへ送信し、コントローラから読み出しデータを受信する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る情報処理システムの構成の一例を示すブロック図。
【図２】ＬＢＡ空間と、ネームスペースと、アドレス変換テーブルと、ガベージコレクション部と、管理データとの関係の一例を示すブロック図。
【図３】第１の実施形態に係る受付部及び設定部の処理の一例を示すフローチャート。
【図４】第１の実施形態に係るガベージコレクション部及びアドレス変換部の処理の一例を示すフローチャート。
【図５】第１の実施形態に係るネームスペースの割り当て状態を例示するブロック図。
【図６】第１の実施形態に係る情報処理装置の処理の一例を示すフローチャート。
【図７】第２の実施形態に係る情報処理システムの構成の一例を示すブロック図。
【図８】第２の実施形態に係る変換テーブルの一例を示すデータ構造図。
【図９】第２の実施形態に係るメモリシステムの書き込み処理の一例を示すフローチャート。
【図１０】第２の実施形態に係るメモリシステムの読み出し処理の一例を示すフローチャート。
【図１１】第３の実施形態に係る情報処理システムの構成の一例を示すブロック図。
【図１２】第３の実施形態に係るストレージシステムを示す斜視図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。以下の実施形態において、アクセスとは、データの読み出し及びデータの書き込みの双方を意味する。
【０００８】
［第１の実施形態］
図１は、本実施形態に係る情報処理システムの構成の一例を示すブロック図である。
【０００９】
情報処理システム１は、情報処理装置２と、メモリシステム３とを含む。情報処理システム１は、複数の情報処理装置２を含むとしてもよい。情報処理システム１が複数の情報処理装置を備える場合については、後述の第２の実施形態で説明する。
【００１０】
（メモリシステム３の説明）
メモリシステム３は、例えばＳＳＤであり、コントローラ４と不揮発性メモリ５とを含む。メモリシステム３は、情報処理装置２に内蔵されてもよく、情報処理装置２とメモリシステム３とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。
【００１１】
本実施形態において、不揮発性メモリ５としては、例えば、少なくとも１つのＮＡＮＤ型フラッシュメモリが用いられる。しかしながら、本実施形態は、例えば、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase change Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）、又は、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などのような各種の不揮発性メモリが複数の書き込み管理エリアを含む場合に、適用可能である。ここで、書き込み管理エリアは、書き込み回数を管理する単位のエリアとする。不揮発性メモリ５は、３次元構造のフラッシュメモリを含むとしてもよい。
【００１２】
例えば、不揮発性メモリ５は、複数のブロック（物理ブロック）を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。不揮発性メモリ５では、ブロック単位にデータが一括して消去される。すなわち、ブロックは、データ消去単位の領域である。データ書き込み及びデータ読み出しは、各ブロックにおけるページ（ワード線）単位で行う。すなわち、ページは、データの書き込み単位又はデータの読み出し単位の領域である。
【００１３】
本実施形態では、書き込み回数がブロック単位で管理されるとする。
【００１４】
情報処理装置２は、メモリシステム３のホスト装置である。情報処理装置２は、メモリシステム３へ、不揮発性メモリ５のブロックと、少なくとも１つのブロックを含むスペースとを関係付けるための設定コマンドＣ１を送る。
【００１５】
以下の説明では、スペースは、ネームスペースであるとして説明する。
【００１６】
また、情報処理装置２は、書き込みコマンドＣ２とともに、ネームスペースの識別データ（ＮＳＩＤ）６、書き込み先を示すＬＢＡ７、書き込みデータのデータサイズ８、及び、書き込みデータ９を、メモリシステム３へ送る。
【００１７】
本実施形態において、複数のネームスペースＮＳ0〜ＮＳM（Ｍは１以上の整数）のそれぞれは、不揮発性メモリ５に含まれる複数のブロックＢ0〜ＢN（ＮはＭ以上の整数）を区分けすることによって得られるスペースである。本実施形態では、ネームスペースＮＳ0がブロックＢ0〜Ｂ2を含み、ネームスペースＮＳMがブロックＢN-2〜ＢNを含む。他のネームスペースＮＳ1〜ＮＳM-1もネームスペースＮＳ0，ＮＳMと同様であるとする。なお、本実施形態におけるネームスペースＮＳ0〜ＮＳMとブロックＢ0〜ＢNとの間の割り当て関係は一例であり、１つのネームスペースに割り当てられるブロックの個数などは適宜変更可能である。複数のネームスペースの間でブロックの個数は異なってもよい。
【００１８】
コントローラ４は、記憶部１０、バッファメモリＦ0〜ＦM、プロセッサ１１を含む。
【００１９】
記憶部１０は、各ネームスペースＮＳ0〜ＮＳMに対応するアドレス変換テーブルＴ0〜ＴMを格納する。例えば、記憶部１０は、作業用メモリとして使用されてもよい。記憶部１０は、例えばＤＲＡＭ（Dynamic Random Access Memory）又はＳＲＡＭ（Static Random Access Memory）などのような揮発性メモリでもよく、又は、不揮発性メモリでもよい。記憶部１０は、不揮発性メモリと揮発性メモリとの組み合わせでもよい。
【００２０】
アドレス変換テーブルＴ0〜ＴMは、それぞれ、ネームスペースＮＳ0〜ＮＳMに対するデータ書き込みにおいて、ＬＢＡとＰＢＡとを関係付けたデータであり、例えばＬＵＴである。なお、アドレス変換テーブルＴ0〜ＴMの一部又は全部は、メモリ１２などのような他のメモリに格納されてもよい。
【００２１】
バッファメモリＦ0〜ＦMは、それぞれ、ネームスペースＮＳ0〜ＮＳMに対するデータ書き込みにおいて、書き込みデータを書き込みに適したデータ量になるまで格納する。
【００２２】
プロセッサ１１は、メモリ１２、受付部１３、設定部１４、アドレス変換部１５、書き込み部１６、ガベージコレクション部Ｇ0〜ＧMを含む。
【００２３】
メモリ１２は、プログラム１７及び管理データ１８を格納する。本実施形態において、メモリ１２は、プロセッサ１１に含まれているが、プロセッサ１１の外部に備えられてもよい。メモリ１２は、例えば不揮発性のメモリとする。
【００２４】
プログラム１７は、例えばファームウェアである。プロセッサ１１は、プログラム１７を実行することにより、受付部１３、設定部１４、アドレス変換部１５、書き込み部１６、ガベージコレクション部Ｇ0〜ＧMとして機能する。なお、プログラム１７及び管理データ１８の一部又は全部は、記憶部１０などのような他のメモリに格納されてもよい。
【００２５】
管理データ１８は、ネームスペースＮＳ0〜ＮＳMとブロックＢ0〜ＢNとの関係を示すデータである。管理データ１８を参照することにより、どのブロックがどのネームスペースに所属しているか判断可能である。
【００２６】
受付部１３は、情報処理装置２から、不揮発性メモリ５の各ブロックと、各ネームスペースとを関係付けるための設定コマンドＣ１を受け付ける。また、受付部１３は、情報処理装置２から、書き込みコマンドＣ２、ＮＳＩＤ６、ＬＢＡ７、データサイズ８、データ９を受け付ける。
【００２７】
以下の説明では、説明を簡略化するため、書き込みコマンドＣ２に、ネームスペースＮＳ0を示すＮＳＩＤ６が付されている場合について説明する。しかしながら、書き込みコマンドＣ２に、他のネームスペースＮＳ1〜ＮＳMを示すＮＳＩＤを付すことも可能である。
【００２８】
設定部１４は、受付部１３によってネームスペースの設定コマンドＣ１が受け付けられた場合に、設定コマンドＣ１に基づいて、ネームスペースＮＳ0〜ＮＳMに、ブロックＢ0〜ＢNを割り当てて管理データ１８を生成し、管理データ１８をメモリ１２に格納する。ネームスペースＮＳ0〜ＮＳMとブロックＢ0〜ＢNとの間の割り当ては、設定部１４がネームスペースＮＳ0〜ＮＳMのデータ格納状態を監視し、各ネームスペースＮＳ0〜ＮＳMで、データ容量、アクセス頻度、書き込み頻度、アクセス回数、書き込み回数、又は、データ格納率が同レベルとなるように行われてもよく、情報処理装置２からの指示に応じて行われてもよく、メモリシステム３の管理者の指示に応じて行われてもよい。
【００２９】
ここで、データ容量とは書き込み可能なデータサイズであり、アクセス頻度又は書き込み頻度とは単位時間当たりのアクセス回数又は書き込み回数であり、データ格納率とは、ある領域サイズに対するデータ格納済みの領域サイズの割合を示す値とする。
【００３０】
また、設定部１４は、ネームスペースＮＳ0〜ＮＳMごとに実行されたガベージコレクションの結果に基づいて、データを格納していない空ブロックを、ガベージコレクション前に属するネームスペースから他のネームスペースに変更し、管理データ１８を更新する。これにより、ネームスペースＮＳ0〜ＮＳM間でウェアレベリング（Wear Leveling）を実行することができる。ネームスペースＮＳ0〜ＮＳMとブロックＢ0〜ＢNとの間の割り当て変更は、設定部１４がネームスペースＮＳ0〜ＮＳMのデータ格納状態を監視し、上記の管理データ１８の生成時と同様に監視結果に応じて行われてもよく、情報処理装置２からの指示に応じて行われてもよく、メモリシステム３の管理者の指示に応じて行われてもよい。例えば、ネームスペースＮＳ0〜ＮＳMの変更は、データ容量の少ない、アクセス頻度の低い、アクセス回数の少ない、又は、データ格納率の低いネームスペースの空ブロックを、データ容量の多い、アクセス頻度の高い、アクセス回数の多い、又は、データ格納率の高いネームスペースに変換する。
【００３１】
さらに、設定部１４は、オーバープロビジョニング（Over Provisioning）のために、設定コマンドＣ１に基づいて、ネームスペースＮＳ0〜ＮＳMごとに、不揮発性メモリ５に、普段使用されない予備領域Ｐ0〜ＰMを設定する。予備領域Ｐ0〜ＰMの設定は、設定部１４がネームスペースＮＳ0〜ＮＳMの各データ容量などに応じて行うとしてもよく、情報処理装置２からの指示に応じて行われてもよく、メモリシステム３の管理者の指示に応じて行われてもよい。
【００３２】
本実施形態において、予備領域Ｐ0〜ＰMは、不揮発性メモリ５に確保されているが、不揮発性メモリ５ではないメモリシステム３内の他のメモリに確保されていてもよい。例えば、予備領域Ｐ0〜ＰMは、ＤＲＡＭ、ＳＲＡＭなどのメモリに確保されてもよい。
【００３３】
アドレス変換部１５は、受付部１３によって書き込みコマンドＣ２が受け付けられた場合に、書き込みコマンドＣ２に付されていたＮＳＩＤ６の示すネームスペースＮＳ0に対応するアドレス変換テーブルＴ0に対して、書き込みコマンドＣ２に付されていたＬＢＡ７をＰＢＡに変換するための関係付けを行う。
【００３４】
本実施形態において、アドレス変換部１５は、プロセッサ１１によって実現されるとしている。しかしながら、アドレス変換部１５は、プロセッサ１１と別の構成としてもよい。
【００３５】
また、アドレス変換部１５は、アドレス変換テーブルＴ0〜ＴMに基づいてアドレス変換を行うが、これに代えてキーバリュー型検索によりアドレス変換を行ってもよい。例えば、ＬＢＡをキーとし、ＰＢＡをバリューとすることで、キーバリュー型検索によるアドレス変換は実現可能である。
【００３６】
書き込み部１６は、アドレス変換部１５によって得られたＰＢＡの示す位置に、書き込みデータ９を書き込む。本実施形態において、書き込み部１６は、書き込みコマンドＣ２に付されていたＮＳＩＤ６の示すネームスペースＮＳ0に対応するバッファメモリＦ0に、書き込みデータ９を格納する。そして、書き込み部１６は、バッファメモリＦ0がネームスペースＮＳ0に適したデータ量になった場合に、ＰＢＡの示す位置に、バッファメモリＦ0のデータを書き込む。
【００３７】
ガベージコレクション部Ｇ0〜ＧMは、ネームスペースＮＳ0〜ＮＳMに対応しており、ネームスペースＮＳ0〜ＮＳMごとにガベージコレクションを実行する。ガベージコレクションとは、不要になったメモリ領域を解放する処理、又は、隙間のあるメモリ領域に書き込まれているデータを集めて連続した利用可能なメモリ領域を確保する処理である。ガベージコレクション部Ｇ0〜ＧMは、並列にガベージコレクションを実行可能としてもよく、順にガベージコレクション部Ｇ0〜ＧMを実行してもよい。
【００３８】
ガベージコレクション部Ｇ0〜ＧMのうちガベージコレクション部Ｇ0を用いて具体的に説明する。ガベージコレクション部Ｇ0は、まず、管理データ１８に基づいて、ネームスペースＮＳ0に対応するブロックＢ0〜Ｂ2を選択する。次に、ガベージコレクション部Ｇ0は、選択されたブロックＢ0〜Ｂ2に対するガベージコレクションを実行する。そして、ガベージコレクション部Ｇ0によるガベージコレクション結果に基づいて、アドレス変換部１５は、アドレス変換テーブルＴ0を更新する。
【００３９】
なお、本実施形態においては、ＬＢＡとＰＢＡとがアドレス変換テーブルＴ0〜ＴMで関係付けられており、ＰＢＡで特定可能なブロックとＮＳＩＤとが管理データ１８で関係付けられている。したがって、ＬＢＡが重複しないユニークなアドレスであり管理データ１８が生成されれば、プロセッサ１１側で、書き込みコマンドＣ２に付されているＬＢＡ７から書き込み先のネームスペースＮＳ0を特定可能である。したがって、ＬＢＡ７が重複せず管理データ１８が生成された後には、書き込みコマンドＣ２にＮＳＩＤ６が付されることを省略し、ＬＢＡ７とアドレス変換テーブルＴ0〜ＴMと管理データ１８に基づいて、プロセッサ１１側でＮＳＩＤ６が求められるとしてもよい。
【００４０】
図２は、ＬＢＡ空間と、ネームスペースＮＳ0〜ＮＳMと、アドレス変換テーブルＴ0〜ＴMと、ガベージコレクション部Ｇ0〜ＧMと、管理データ１８との関係の一例を示すブロック図である。
【００４１】
情報処理装置２のＬＢＡ空間Ａ0〜ＡMは、それぞれネームスペースＮＳ0〜ＮＳMに割り当てられている。
【００４２】
ＬＢＡ空間Ａ0は論理アドレス０〜Ｅ0を含む。ＬＢＡ空間Ａ1は論理アドレス０〜Ｅ1を含む。ＬＢＡ空間ＡMは論理アドレス０〜ＥMを含む。他のＬＢＡ空間Ａ2〜ＡM-1も同様に複数の論理アドレスを含む。
【００４３】
以下の説明では、説明を簡略化するために、ＬＢＡ空間Ａ0とこのＬＢＡ空間Ａ0に対して割り当てられているネームスペースＮＳ0とを代表して説明する。しかしながら、他のＬＢＡ空間Ａ1〜ＡM及びネームスペースＮＳ1〜ＮＳMについても同様である。
【００４４】
情報処理装置２は、ＬＢＡ空間Ａ0のデータを不揮発性メモリ５に書き込む場合に、書き込みコマンドＣ２、ＬＢＡ空間Ａ0に対応するネームスペースＮＳ0を示すＮＳＩＤ６、ＬＢＡ空間Ａ0内のＬＢＡ７、データサイズ８、ＬＢＡ７に対応する書き込みデータ９をメモリシステム３に送る。
【００４５】
管理データ１８は、ネームスペースＮＳ0とブロックＢ0〜Ｂ2と関係付けている。
【００４６】
ガベージコレクション部Ｇ0は、管理データ１８に基づいて、ガベージコレクション部Ｇ0に対応するネームスペースＮＳ0に含まれているブロックＢ0〜Ｂ2に対して、ガベージコレクションを実行する。
【００４７】
ガベージコレクションの結果、ブロックＢ0〜Ｂ2内でデータの配置が変化する。このため、ガベージコレクション部Ｇ0は、図２において省略されているアドレス変換部１５にアドレス変換テーブルＴ0の更新を指示し、アドレス変換部１５は、ガベージコレクション後のデータ配置と整合するように、ネームスペースＮＳ0に対応するアドレス変換テーブルＴ0を更新する。
【００４８】
図３は、本実施形態に係る受付部１３及び設定部１４の処理の一例を示すフローチャートである。
【００４９】
ステップＳ３０１において、受付部１３は、ネームスペースＮＳ0〜ＮＳMの設定コマンドＣ１を受け付ける。
【００５０】
ステップＳ３０２において、設定部１４は、ネームスペースＮＳ0〜ＮＳMに、不揮発性メモリ５のブロックＢ0〜ＢNを割り当て、管理データ１８を生成する。
【００５１】
ステップＳ３０３において、設定部１４は、管理データ１８をメモリ１２に格納する。
【００５２】
図４は、本実施形態に係るガベージコレクション部Ｇ0及びアドレス変換部１５の処理の一例を示すフローチャートである。なお、他のガベージコレクション部Ｇ1〜ＧMでも同様の処理が実行される。この図４の処理は、例えば、情報処理装置２からの指示に応じて行われてもよく、メモリシステム３の管理者の指示に応じて行われてもよい。また、ガベージコレクション部Ｇ0は、例えば、ガベージコレクション対象のネームスペースＮＳ0のデータ格納状態を監視し、ガベージコレクションの開始を判断するなどのように、自発的に図４の処理を実行してもよい。より具体的に説明すると、例えば、ガベージコレクション部Ｇ0は、ネームスペースＮＳ0内の空きブロックが所定数以下、又は、ネームスペースＮＳ0内の全ブロックに対する空きブロックの割合が所定値以下、の場合に、ネームスペースＮＳ0に対するガベージコレクションを実行する。
【００５３】
ステップＳ４０１において、ガベージコレクション部Ｇ0は、管理データ１８に基づいて、ガベージコレクション対象のネームスペースＮＳ0に対応するブロックＢ0〜Ｂ2を選択する。
【００５４】
ステップＳ４０２において、ガベージコレクション部Ｇ0は、選択されたネームスペースＮＳ0内のブロックＢ0〜Ｂ2に対するガベージコレクションを実行する。
【００５５】
ステップＳ４０３において、アドレス変換部１５は、ガベージコレクション対象のネームスペースＮＳ0に対応するアドレス変換テーブルＴ0を、ガベージコレクション後のブロックＢ0〜Ｂ2の状態にそって更新する。
【００５６】
以上説明した本実施形態においては、ネームスペースＮＳ0〜ＮＳMごとに、予め定められた又は情報処理装置２から設定されたブロック量を割り当てることができ、ネームスペースＮＳ0〜ＮＳMに対応するデータを、そのネームスペースＮＳ0〜ＮＳMに割り当てられたブロックＢ0〜ＢMに書き込むことができ、ネームスペースＮＳ0〜ＮＳMごとに異なるデータ量を設定することができる。
【００５７】
本実施形態においては、ガベージコレクションを、ネームスペースＮＳ0〜ＮＳMごとに独立して、効率的に、実行することができる。
【００５８】
本実施形態においては、ガベージコレクションの結果、データを格納していない空ブロックを、ガベージコレクション前のネームスペースから他のネームスペースに変更することができ、他のネームスペース内で空ブロックを確保することができる。これにより、ブロックに割り当てられるネームスペースを変更することができ、ネームスペースＮＳ0〜ＮＳM間でウェアレベリングを実行することができ、不揮発性メモリ５を長寿命化することができる。
【００５９】
本実施形態では、ネームスペースＮＳ0〜ＮＳMごとに異なるデータ量の予備領域Ｐ0〜ＰMを設定することができ、ネームスペースＮＳ0〜ＮＳMごとにオーバープロビジョニングを実現することができる。これにより、書き込み速度の高速化及び性能維持を実現し、信頼性を向上させることができる。
【００６０】
本実施形態においては、ネームスペースＮＳ0〜ＮＳMごとにアドレス変換テーブルＴ0〜ＴMが管理されており、ネームスペースＮＳ0〜ＮＳMごとに、アドレス変換及びＬＢＡとＰＢＡとの関係の変更を効率的に行うことができる。
【００６１】
本実施形態において、アドレス変換をキーバリュー型検索によって行う場合には、不揮発性メモリ５のデータ容量が大きくても、効率的にアドレス変換を行うことができる。
【００６２】
本実施形態においては、ネームスペースＮＳ0〜ＮＳMごとに高度なメモリ管理を実現することができ、不揮発性メモリ５を長寿命化することができ、コストを削減することができ、ネームスペースＮＳ0〜ＮＳMで区分けされている不揮発性メモリ５に対する書き込み及び読み出しを高速化することができる。
【００６３】
（情報処理装置２の説明）
情報処理装置２は、メモリ２１とプロセッサ２２とを含む。
【００６４】
情報処理装置２では、アプリケーションプログラム、オペレーティングシステムなどの各種のプログラム及び各種のデータ（以下、オブジェクトと記す）が、オブジェクト識別データ（以下、オブジェクトＩＤと記す）により識別可能である。
【００６５】
情報処理装置２は、オブジェクトに対してＬＢＡ空間Ａ0〜ＡMを割り当て、オブジェクトＩＤごとに、当該オブジェクトＩＤの示すオブジェクトに割り当てられたＬＢＡ空間Ａ0〜ＡMを管理する。
【００６６】
メモリ２１は、プログラム２３を格納する例えば不揮発性のメモリである。
【００６７】
プロセッサ２２は、メモリ２１に格納されているプログラム２３を実行することにより、頻度算出部２４、割り当て部２５、発信部２６として機能する。
【００６８】
頻度算出部２４は、各オブジェクトのＬＢＡ空間に対応する書き込み頻度を算出する。
【００６９】
割り当て部２５は、各オブジェクトのＬＢＡ空間に対応する書き込み頻度に基づいて、複数のＬＢＡ空間Ａ0〜ＡMを、複数のネームスペースＮＳ0〜ＮＳMに割り当てる。
【００７０】
発信部２６は、割り当て部２５の割り当て結果に基づいて、設定コマンドＣ１を生成し、設定コマンドＣ１をメモリシステム３へ送る。
【００７１】
また、発信部２６は、割り当て部２５の割り当て結果に基づいて、書き込みコマンドＣ２を生成し、書き込みコマンドＣ２、書き込みコマンドＣ２を発信するオブジェクトのＬＢＡ空間に割り当てられたネームスペースＮＳ0を示すＮＳＩＤ６、データサイズ８、及び、書き込みデータ９を、メモリシステム３へ送る。
【００７２】
図５は、本実施形態に係るネームスペースの割り当て状態を例示するブロック図である。
【００７３】
この図５では、オブジェクトのＬＢＡ空間を４つのネームスペースＮＳ0〜ＮＳ4に割り当てる状態を例示しているが、ネームスペースの数は２以上でよい。
【００７４】
オブジェクトのＬＢＡ空間に対応する書き込み頻度は、複数の書き込み頻度グループのいずれかに割り当てられる。図５では、６つの書き込み頻度グループＬ0〜Ｌ5が用いられる場合が例示されている。書き込み頻度グループＬ0〜Ｌ5は、書き込み頻度の高い方から低い方へ、順に、書き込み頻度グループＬ0（Extremely Hot）、Ｌ1（Hot）、Ｌ2（Warm）、Ｌ3（Cool）、Ｌ4（Cold）、Ｌ5（Extremely cold）とする。
【００７５】
書き込み頻度グループＬ0〜Ｌ5は、それぞれの性質及びオブジェクトＩＤに基づいて、ネームスペースＮＳ0〜ＮＳ4に割り当てられる。
【００７６】
例えば、同一のネームスペース内に異なる性質の書き込み頻度グループが含まれるように、ネームスペースＮＳ0〜ＮＳ4に対して書き込み頻度グループＬ0〜Ｌ5の割り当てが行われる。
【００７７】
例えば、書き込み頻度の極めて大きい書き込み頻度グループＬ0は、予備領域を潤沢に確保する必要があるため、複数のネームスペースＮＳ0〜ＮＳ4に割り当てられる。これにより、効率的に予備領域を用いることができる。
【００７８】
例えば、書き込み頻度の極めて小さい書き込み頻度グループＬ5は、複数のネームスペースＮＳ2，ＮＳ3に分割される。このように、書き込み頻度グループＬ5が複数のネームスペースＮＳ2，ＮＳ3に割り当てられることにより、ガベージコレクションを効率化することができる。
【００７９】
例えば、書き込み頻度の大きい書き込み頻度グループＬ1は、ユーザアプリケーションなどのようなオブジェクトに依存して、独立に、ガベージコレクションが実行されるように、オブジェクトごとにネームスペースＮＳ0，ＮＳ3が割り当てられられ、同じオブジェクトのＬＢＡ空間は、同じネームスペースＮＳ0，ＮＳ3に割り当てられる。これにより、あるユーザアプリケーションに対するガベージコレクションが実行された場合に、他のユーザアプリケーションの性能が低下することを防止することができる。
【００８０】
図６は、本実施形態に係る情報処理装置２の処理の一例を示すフローチャートである。
【００８１】
ステップＳ６０１において、頻度算出部２４は、各オブジェクトのＬＢＡ空間に対応する書き込み頻度を算出する。
【００８２】
ステップＳ６０２において、割り当て部２５は、各オブジェクトのＬＢＡ空間に対応する書き込み頻度に基づいて、各オブジェクトのＬＢＡ空間を書き込み頻度グループＬ0〜Ｌ5のいずれかに割り当てる。
【００８３】
ステップＳ６０３において、割り当て部２５は、各オブジェクトＩＤ及び書き込み頻度グループＬ0〜Ｌ5に基づいて、各オブジェクトのＬＢＡ空間を、ネームスペースＮＳ0〜ＮＳMのうちの少なくとも１つに割り当てる。
【００８４】
ステップＳ６０４において、発信部２６は、書き込みコマンドＣ２と、ネームスペースＮＳ0〜ＮＳMの割り当て結果を示すＮＳＩＤ６と、ＬＢＡ７と、データサイズ８と、書き込みデータ９とを、メモリシステム３に送る。
【００８５】
以上説明した本実施形態においては、各オブジェクトのＬＢＡ空間Ａ0〜ＡMに対応する書き込み頻度に基づいて、各オブジェクトのＬＢＡ空間Ａ0〜ＡMを、ネームスペースＮＳ0〜ＮＳMに割り当てることができ、メモリシステム３のサービス品質及び装置性能を向上させることができ、装置寿命を長くすることができ、メモリシステム３の設定を適切化することができる。
【００８６】
例えば、本実施形態においては、同一のネームスペース内に異なる性質のＬＢＡ空間を割り当てることにより、ネームスペースＮＳ0〜ＮＳ4に対する書き込み頻度及び書き込み回数を調整することができる。
【００８７】
例えば、本実施形態においては、書き込み頻度の極めて大きいＬＢＡ空間を、複数のネームスペースに割り当てることができ、これにより予備領域を潤沢に確保することができる。
【００８８】
例えば、本実施形態においては、書き込み頻度の極めて小さいＬＢＡ空間を、複数のネームスペースに割り当て、これによりガベージコレクションを効率化することができる。
【００８９】
例えば、本実施形態においては、書き込み頻度の大きいオブジェクトのＬＢＡ空間を、同じネームスペースに割り当てる。これにより、あるユーザアプリケーションに対するガベージコレクションが実行された場合に、他のユーザアプリケーションの性能が低下することを防止することができる。
【００９０】
本実施形態においては、情報処理装置２において、情報処理装置２側のＬＢＡ空間Ａ0〜ＡMとメモリシステム３側のネームスペースＮＳ0〜ＮＳMとの割り当てを決定することができる。
【００９１】
本実施形態においては、書き込み頻度に基づいて、ＬＢＡ空間Ａ0〜ＡMとネームスペースＮＳ0〜ＮＳMとの割り当てが行われている。しかしながら、これに代えて、書き込み回数、書き込み頻度及び読み出し頻度の組み合わせなど、他の情報に基づいてＬＢＡ空間Ａ0〜ＡMとネームスペースＮＳ0〜ＮＳMとの割り当てが行われてもよい。
【００９２】
また、割り当て部２５は、ユーザ設定に基づいて、複数のＬＢＡ空間Ａ0〜ＡMを、複数のネームスペースＮＳ0〜ＮＳMに割り当てるとしてもよい。
【００９３】
本実施形態においては、ガベージコレクション部Ｇ0〜ＧMに代えて、又は、ガベージコレクション部Ｇ0〜ＧMとともに、ネームスペースＮＳ0〜ＮＳMごとのコンパクション部を備えるとしてもよい。ネームスペースＮＳ0〜ＮＳMのそれぞれに対応するコンパクション部は、管理データ１８に基づいて、ネームスペースＮＳ0〜ＮＳMのそれぞれに対してコンパクションを実行する。
【００９４】
本実施形態において、例えば、情報処理装置２とメモリシステム３との間の設定コマンドＣ１の通信は、省略されてもよい。例えば、アドレス変換部１５は、設定部１４の一部又は全部の機能を備えるとしてもよい。例えば、アドレス変換部１５は、書き込みコマンドＣ２に付されているＮＳＩＤ６及びＬＢＡ７と、ＬＢＡ７に対応するＰＢＡとを関係付けることで、管理データ１８及びネームスペースＮＳ0〜ＮＳMごとのアドレス変換テーブルＴ0〜ＴMを生成するとしてもよい。管理データ１８とアドレス変換テーブルＴ0〜ＴMとは、適宜組み合わせることができ、又は、分割することができる。このように設定コマンドＣ１の通信が省略され、設定部１４の一部又は全部の機能がアドレス変換部１５に備えられる構成は、後述の第２の実施形態で説明する。
【００９５】
［第２の実施形態］
本実施形態においては、メモリシステムが複数の情報処理装置からの書き込みデータを書き込み、メモリシステムが読み出しデータを複数の情報処理装置へ送る情報処理システムについて説明する。
【００９６】
図７は、本実施形態に係る情報処理システムの構成の一例を示すブロック図である。
【００９７】
情報処理システム１Ａは、複数の情報処理装置Ｄ0〜ＤMとメモリシステム３Ａとを含む。複数の情報処理装置Ｄ0〜ＤMのそれぞれは、上記の情報処理装置２と同様の機能を備える。メモリシステム３Ａは、主に、アドレス変換テーブルＴ0〜ＴM及び管理データ１８に代えて変換テーブル（変換データ）２０を備える点、複数の情報処理装置Ｄ0〜ＤMとの間でデータ、情報、信号、コマンドなどの送信及び受信を行う点、設定部１４の機能がアドレス変換部１５に備えられる点で、上記のメモリシステム３と相違している。本実施形態においては、上記第１の実施形態と異なる点を説明し、同じ部分又は実質的に同じ部分については説明を省略するか又は簡単に説明する。
【００９８】
メモリシステム３Ａは、例えばクラウドコンピューティングシステムに備えられる。メモリシステム３Ａは、複数の情報処理装置Ｄ0〜ＤMによってシェアされる場合を例として説明するが、例えば複数のユーザによってシェアされてもよい。複数の情報処理装置Ｄ0〜ＤMの少なくとも１つは、仮想マシンでもよい。
【００９９】
本実施形態において、コマンドに付されるＮＳＩＤは、ネームスペースのアクセス鍵として用いられる。
【０１００】
本実施形態においては、複数の情報処理装置Ｄ0〜ＤMは、自己に対応するネームスペースＮＳ0〜ＮＳMに対してアクセス権限を持つとする。しかしながら、１つの情報処理装置が１以上のネームスペースに対してアクセス権限を持つとしてもよく、複数の情報処理装置が共通のネームスペースに対してアクセス権限を持つとしてもよい。
【０１０１】
情報処理装置Ｄ0〜ＤMのそれぞれは、書き込みコマンドＣ２とともに、例えば自己に対応する書き込み先スペースを示すＮＳＩＤ６Ｗ、書き込み先を示すＬＢＡ７Ｗ、データサイズ８、及び、書き込みデータ９Ｗを、メモリシステム３Ａへ送る。
【０１０２】
情報処理装置Ｄ0〜ＤMのそれぞれは、読み出しコマンドＣ３とともに、例えば自己に対応する読み出し先スペースを示すＮＳＩＤ６Ｒ、読み出し先を示すＬＢＡ７Ｒを、メモリシステム３Ａへ送る。
【０１０３】
情報処理装置Ｄ0〜ＤMのそれぞれは、読み出しコマンドＣ３に対応する読み出しデータ９Ｒ、又は、読み出し不可であったことを示す情報を、メモリシステム３Ａから受ける。
【０１０４】
メモリシステム３Ａは、コントローラ４Ａと不揮発性メモリ５とを含む。
【０１０５】
コントローラ４Ａは、インタフェース部１９、記憶部１０、バッファメモリＦ0〜ＦM、プロセッサ１１を含む。本実施形態においては、コントローラ４Ａに備えられるプロセッサの数は１以上で自由に変更可能である。
【０１０６】
インタフェース部１９は、例えば情報処理装置Ｄ0〜ＤMなどのような外部装置との間で、データ、情報、信号、コマンドなどの送信及び受信を行う。
【０１０７】
記憶部１０は、変換テーブル２０を格納する。なお、変換テーブル２０の一部又は全部は、メモリ１２などのような他のメモリに格納されてもよい。
【０１０８】
変換テーブル２０は、ＬＢＡ、ＰＢＡ、ＮＳＩＤを互いに関係付けたデータである。この変換テーブル２０については、図８を用いて後で説明する。
【０１０９】
バッファメモリＦ0〜ＦMは、それぞれ、ネームスペースＮＳ0〜ＮＳMに対する書き込みバッファメモリ及び読み出しバッファメモリとして使用される。
【０１１０】
プロセッサ１１は、プログラム１７を格納するメモリ１２、受付部１３、アドレス変換部１５、書き込み部１６、読み出し部２１、ガベージコレクション部Ｇ0〜ＧMを含む。プロセッサ１１は、プログラム１７を実行することにより、受付部１３、アドレス変換部１５、書き込み部１６、読み出し部２１、ガベージコレクション部Ｇ0〜ＧMとして機能する。
【０１１１】
受付部１３は、データ書き込み時に、情報処理装置Ｄ0〜ＤMからインタフェース部１９経由で書き込みコマンドＣ２、ＮＳＩＤ６Ｗ、ＬＢＡ７Ｗ、データサイズ８、書き込みデータ９Ｗを受け付ける。
【０１１２】
受付部１３は、データ読み出し時に、情報処理装置Ｄ0〜ＤMからインタフェース部１９経由で読み出しコマンドＣ３、ＮＳＩＤ６Ｒ、ＬＢＡ７Ｒを受け付ける。
【０１１３】
アドレス変換部１５は、受付部１３によって書き込みコマンドＣ２が受け付けられた場合に、書き込みコマンドＣ２に付されていたＬＢＡ７ＷとＮＳＩＤ６Ｗに基づいて、ＮＳＩＤ６Ｗの示すネームスペースにおける書き込み先のＰＢＡを決定し、ＬＢＡ７ＷとＮＳＩＤ６Ｗと決定されたＰＢＡとを関係付けた状態で変換テーブル２０を更新する。
【０１１４】
アドレス変換部１５は、受付部１３によって読み出しコマンドＣ３が受け付けられた場合に、読み出しコマンドＣ３に付されていたＬＢＡ７ＲとＮＳＩＤ６Ｒと変換テーブル２０とに基づいて、ＮＳＩＤ６Ｒの示すネームスペースにおける読み出し先のＰＢＡを決定する。
【０１１５】
書き込み部１６は、ＮＳＩＤ６Ｗの示すネームスペースに対応するバッファメモリを経由して、ＮＳＩＤ６Ｗの示すネームスペースに対応するＰＢＡの示す位置に、書き込みデータ９Ｗを書き込む。
【０１１６】
読み出し部２１は、ＮＳＩＤ６Ｒの示すネームスペースに対応するバッファメモリを経由して、ＮＳＩＤ６Ｒの示すネームスペースに対応するＰＢＡの示す位置から、読み出しデータ９Ｒを読み出す。そして、読み出し部２１は、インタフェース部１９経由で、読み出しコマンドＣ３を発行した情報処理装置に、読み出しデータ９Ｒを送る。
【０１１７】
本実施形態において、ガベージコレクション部Ｇ0〜ＧMは、変換テーブル２０に基づいて、ネームスペースＮＳ0〜ＮＳMごとにガベージコレクションを実行する。
【０１１８】
図８は、本実施形態に係る変換テーブル２０の一例を示すデータ構造図である。
【０１１９】
変換テーブル２０は、ＬＢＡ、ＰＢＡ、ＮＳＩＤを関係付けて管理する。例えば、変換テーブル２０は、ＬＢＡ２００とＰＢＡ３００とＮＳ0とを関係付けており、ＬＢＡ２０１とＰＢＡ３０１とＮＳ0とを関係付けており、ＬＢＡ２００とＰＢＡ３９９とＮＳMとを関係付けている。
【０１２０】
アドレス変換部１５は、例えば、ＬＢＡ２００とネームスペースＮＳ0を示すＮＳＩＤとに関係するＰＢＡ３００と、ＬＢＡ２００とネームスペースＮＳMを示すＮＳＩＤとに関係するＰＢＡ３９９とが互いに異なるように、ＰＢＡの決定を行う。
【０１２１】
これにより、アドレス変換部１５は、ＬＢＡ２００とともに受け付けられたＮＳＩＤがネームスペースＮＳ0を示す場合にはＰＢＡ３００を選択することができ、ＬＢＡ２００とともに受け付けられたＮＳＩＤがネームスペースＮＳMを示す場合にはＰＢＡ３９９を選択することができる。
【０１２２】
したがって、複数の情報処理装置Ｄ0〜ＤMの間で同じ論理アドレスが使用される場合であっても、メモリシステム３Ａを複数の情報処理装置Ｄ0〜ＤMでシェアすることができる。
【０１２３】
図９は、本実施形態に係るメモリシステム３Ａの書き込み処理の一例を示すフローチャートである。
【０１２４】
この図９の説明では、複数の情報処理装置Ｄ0〜ＤMのうちの情報処理装置Ｄ0から書き込みコマンドＣ２が発行され、書き込みコマンドＣ２にはネームスペースＮＳ0を示すＮＳＩＤ６Ｗが付されている場合を例として説明する。しかしながら、情報処理装置Ｄ1〜ＤMから書き込みコマンドＣ２が発行された場合も同様である。また、書き込みコマンドＣ２に他のネームスペースＮＳ1〜ＮＳMのいずれかを示すＮＳＩＤ６Ｗが付されている場合も同様である。
【０１２５】
ステップＳ９０１において、受付部１３は、情報処理装置Ｄ0からインタフェース部１９経由で書き込みコマンドＣ２、ＮＳＩＤ６Ｗ、ＬＢＡ７Ｗ、データサイズ８、書き込みデータ９Ｗを受け付ける。
【０１２６】
ステップＳ９０２において、アドレス変換部１５は、受付部１３によって書き込みコマンドＣ２が受け付けられた場合に、書き込みコマンドＣ２に付されていたＬＢＡ７ＷとＮＳＩＤ６Ｗに基づいて、ＮＳＩＤ６Ｗの示すネームスペースＮＳ0における書き込み先のＰＢＡを決定する。
【０１２７】
ステップＳ９０３において、アドレス変換部１５は、ＬＢＡ７ＷとＮＳＩＤ６Ｗと決定されたＰＢＡとを関係付けた状態で変換テーブル２０を更新する。
【０１２８】
ステップＳ９０４において、書き込み部１６は、ＮＳＩＤ６Ｗの示すネームスペースＮＳ0に対応するバッファメモリＦ0を経由して、ＮＳＩＤ６Ｗの示すネームスペースＮＳ0に対応するＰＢＡの示す位置に、書き込みデータ９Ｗを書き込む。
【０１２９】
図１０は、本実施形態に係るメモリシステム３Ａの読み出し処理の一例を示すフローチャートである。
【０１３０】
この図１０の説明では、複数の情報処理装置Ｄ0〜ＤMのうちの情報処理装置ＤMから読み出しコマンドＣ３が発行され、読み出しコマンドＣ３にはネームスペースＮＳMを示すＮＳＩＤ６Ｒが付されている場合を例として説明する。しかしながら、情報処理装置Ｄ0〜ＤM-1から読み出しコマンドＣ３が発行された場合も同様である。また、読み出しコマンドＣ３に他のネームスペースＮＳ0〜ＮＳM-1のいずれかを示すＮＳＩＤ６Ｒが付されている場合も同様である。
【０１３１】
ステップＳ１００１において、受付部１３は、情報処理装置ＤMからインタフェース部１９経由で読み出しコマンドＣ３、ＮＳＩＤ６Ｒ、ＬＢＡ７Ｒを受け付ける。
【０１３２】
ステップＳ１００２において、アドレス変換部１５は、受付部１３によって読み出しコマンドＣ３が受け付けられた場合に、読み出しコマンドＣ３に付されていたＬＢＡ７ＲとＮＳＩＤ６Ｒと変換テーブル２０とに基づいて、読み出し先のＰＢＡを決定する。
【０１３３】
ステップＳ１００３において、読み出し部２１は、ＮＳＩＤ６Ｒの示すネームスペースＮＳMに対応するバッファメモリＦMを経由して、ＮＳＩＤ６Ｒの示すネームスペースＮＳMに対応するＰＢＡの示す位置から、読み出しデータ９Ｒを読み出し、インタフェース部１９経由で、読み出しコマンドＣ３を発行した情報処理装置ＤMに、読み出しデータ９Ｒを送る。
【０１３４】
以上説明した本実施形態においては、不揮発性メモリ５が複数のネームスペースＮＳ0〜ＮＳMに区切られる。情報処理装置Ｄ0〜ＤMは、複数のネームスペースＮＳ0〜ＮＳMのうち自己がアクセス権限を持つネームスペースをアクセス可能である。これにより、データセキュリティを向上させることができる。
【０１３５】
メモリシステム３Ａのコントローラ４Ａは、ネームスペースＮＳ0〜ＮＳMごとに、独立の制御を行う。これにより、ネームスペースＮＳ0〜ＮＳMごとに使用条件を切り替えることができる。
【０１３６】
メモリシステム３Ａは、ＬＢＡとＰＢＡとＮＳＩＤとを関係付けているため、例えば互いに独立の複数の情報処理装置から同じＬＢＡを受信した場合であっても、ＮＳＩＤによりデータを区別することができる。
【０１３７】
上記各実施形態において、テーブル形式のデータは、例えばリスト形式などの他のデータ構造で実装されてもよい。
【０１３８】
［第３の実施形態］
本実施形態においては、上記第１及び第２の実施形態で説明した情報処理システム１，１Ａの詳細構成について説明する。
【０１３９】
図１１は、本実施形態に係る情報処理システムの詳細構成の一例を示すブロック図である。
【０１４０】
この図１１において、情報処理システム１Ｂは、情報処理装置２Ｂとメモリシステム３Ｂとを含む。情報処理システム１Ｂは、上記第２の実施形態と同様に、複数の情報処理装置を備えるとしてもよい。すなわち、上記第１及び第２の実施形態の情報処理装置２、Ｄ0〜ＤMのいずれかは、情報処理装置２Ｂに対応する。
【０１４１】
上記第１及び第２の実施形態のメモリシステム３，３Ａは、メモリシステム３Ｂに対応する。
【０１４２】
上記第１及び第２の実施形態のプロセッサ１１は、ＣＰＵ４３Ｆ，４３Ｂに対応する。
【０１４３】
上記第１の実施形態のアドレス変換テーブルＴ0〜ＴM、及び、上記第２の実施形態の変換テーブル２０は、ＬＵＴ４５に対応する。
【０１４４】
上記第１及び第２の実施形態の記憶部１０は、ＤＲＡＭ４７に対応する。
【０１４５】
上記第２の実施形態のインタフェース部１９は、ホストインタフェース４１及びホストインタフェースコントローラ４２に対応する。
【０１４６】
上記第１及び第２の実施形態のバッファメモリＦ0〜ＦMは、ライトバッファＷＢ及びリードバッファＲＢに対応する。
【０１４７】
情報処理装置２Ｂは、ホスト装置として機能する。
【０１４８】
コントローラ４は、フロントエンド４Ｆと、バックエンド４Ｂとを備える。
【０１４９】
フロントエンド（ホスト通信部）４Ｆは、ホストインタフェース４１、ホストインタフェースコントローラ４２、暗号化／復号化部４４、及びＣＰＵ４３Ｆを備える。
【０１５０】
ホストインタフェース４１は、情報処理装置２Ｂとの間で、要求（書き込みコマンド、読み出しコマンド、消去コマンドなど）、ＬＢＡ及びデータなどを通信する。
【０１５１】
ホストインタフェースコントローラ（制御部）４２は、ＣＰＵ４３Ｆの制御に基づいて、上記ホストインタフェース４１の通信を制御する。
【０１５２】
暗号化／復号化部（Advanced Encryption Standard (AES)）４４は、データ書き込み動作において、ホストインタフェースコントローラ４２から送信される書き込みデータ（平文）を暗号化する。暗号化／復号化部４４は、データ読み出し動作において、バックエンド４ＢのリードバッファＲＢから送信される暗号化された読み出しデータを復号化する。なお、この暗号化／復号化部４４を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
【０１５３】
ＣＰＵ４３Ｆは、フロントエンド４Ｆの上記各構成４１，４２，４４を制御し、フロントエンド４Ｆの全体の動作を制御する。
【０１５４】
バックエンド（メモリ通信部）４Ｂは、ライトバッファＷＢ、リードバッファＲＢ、ＬＵＴ部４５、ＤＤＲＣ４６、ＤＲＡＭ４７、ＤＭＡＣ４８、ＥＣＣ４９、ランダマイザＲＺ、ＮＡＮＤＣ５０、及びＣＰＵ４３Ｂを備える。
【０１５５】
ライトバッファ（ライトデータ転送部）ＷＢは、情報処理装置２Ｂから送信された書き込みデータを一時的に格納する。具体的には、ライトバッファＷＢは、当該書き込みデータが不揮発性メモリ５に適した所定のデータサイズになるまで、一時的にデータを格納する。
【０１５６】
リードバッファ（リードデータ転送部）ＲＢは、不揮発性メモリ５から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファＲＢにおいて、読み出しデータは、情報処理装置２Ｂに適した順序（情報処理装置２Ｂが指定した論理アドレスＬＢＡの順序）になるように並び替えられる。
【０１５７】
ＬＵＴ４５は、論理アドレスＬＢＡを所定の物理アドレスＰＢＡに変換するためのデータである。
【０１５８】
ＤＤＲＣ４６は、ＤＲＡＭ４７におけるＤＤＲ（Double Data Rate）を制御する。
【０１５９】
ＤＲＡＭ４７は、例えば、ＬＵＴ４５を格納する揮発性のメモリである。
【０１６０】
ＤＭＡＣ（Direct Memory Access Controller）４８は、内部バスＩＢを介して、書き込みデータや読み出しデータなどを転送する。図１１においては１つのＤＭＡＣ１２８が図示されているが、コントローラ４は、２以上のＤＭＡＣ１２８を備えるとしてもよい。ＤＭＡＣ４８は、必要に応じて、コントローラ４内の様々な位置に設定される。
【０１６１】
ＥＣＣ（誤り訂正部）４９は、ライトバッファＷＢから送信される書き込みデータにＥＣＣ（Error Correcting Code）を付加する。ＥＣＣ４９は、リードバッファＲＢに送信する際に、付加したＥＣＣを用いて、不揮発性メモリ５から読み出した読み出しデータを必要に応じて訂正する。
【０１６２】
ランダマイザＲＺ（又はスクランブラ）は、データ書き込み動作の際に、書き込みデータが不揮発性メモリ５の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる。このように、書き込みデータを分散させることで、書き込み回数を平準化でき、不揮発性メモリ５のメモリセルＭＣのセル寿命を長期化できる。そのため、不揮発性メモリ５の信頼性を向上できる。また、データ読み出し動作の際に、不揮発性メモリ５から読み出された読み出しデータはランダマイザＲＺを通過する。
【０１６３】
ＮＡＮＤＣ（NAND Controller）５０は、所定の速度の要求を満たすため、複数のチャンネル（ここでは、４つのチャンネルＣＨ０〜ＣＨ３）を用いて、並列に不揮発性メモリ５にアクセスする。
【０１６４】
ＣＰＵ４３Ｂは、バックエンド４Ｂの上記各構成（４５〜５０，ＲＺ）を制御し、バックエンド４Ｂの全体の動作を制御する。
【０１６５】
なお、図１１に示したコントローラ４の構成は例示であり、この構成に限定されることはない。
【０１６６】
図１２は、本実施形態に係るストレージシステムを示す斜視図である。
【０１６７】
ストレージシステム１００は、ＳＳＤとしてのメモリシステム３Ｂを備える。
【０１６８】
メモリシステム３Ｂは、例えば比較的小型のモジュールであり、その外形寸法の一例は、２０ｍｍ×３０ｍｍ程度である。なお、メモリシステム３Ｂの大きさ及び寸法は、これに限られるものではなく、種々の大きさのものに適宜変更可能である。
【０１６９】
また、メモリシステム３Ｂは、例えば、企業（エンタープライズ）で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置２Ｂに装着されて使用可能である。そのため、メモリシステム３Ｂは、エンタープライズ用ＳＳＤ（ｅＳＳＤ）であってもよい。
【０１７０】
メモリシステム３Ｂは、例えば上方に開口した複数のコネクタ（例えばスロット）３０を備える。各コネクタ３０は、例えばＳＡＳ（Serial Attached SCSI）コネクタ等である。このＳＡＳコネクタによれば、6GbpsのDual Portにより、情報処理装置３Ｂと各メモリシステム３Ｂとが互いに高速通信を行うことが可能である。なお、これに限られず、各コネクタ３０は、例えば、ＰＣＩｅ（PCI Express）又はＮＶＭｅ（NVM Express）等であってもよい。
【０１７１】
複数のメモリシステム３Ｂは、情報処理装置２Ｂのコネクタ３０にそれぞれ装着され、略鉛直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム３Ｂをコンパクトに纏めて実装可能であり、メモリシステム３Ｂの小型化を図ることができる。さらに、本実施形態に係るメモリシステム３Ｂの各形状は、２．５型のＳＦＦ（Small Form Factor)である。このような形状により、メモリシステム３Ｂは、エンタープライズ用ＨＤＤ（ｅＨＤＤ）と互換形状（コンパチ形状）を図ることができ、ｅＨＤＤとの容易なシステム互換性を実現することができる。
【０１７２】
なお、メモリシステム３Ｂは、エンタープライズ用に限られない。例えば、メモリシステム３Ｂは、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。
【０１７３】
以上説明したように、本実施形態で説明した構成を持つ情報処理システム１Ｂ及びストレージシステム１００においては、大容量の記憶に、上記第１及び第２の実施形態と同様の効果を得ることができる。
【０１７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１７５】
２，Ｄ0〜ＤM……情報処理装置、２１…メモリ、２２…プロセッサ、２３…プログラム、２４…頻度算出部、２５…割り当て部、２６…発信部、３…メモリシステム、４…コントローラ、５…不揮発性メモリ、Ｃ２…書き込みコマンド、６…ＮＳＩＤ、７…ＬＢＡ、８…データサイズ、９…データ、１０…記憶部、１２…メモリ、１３…受付部、１４…設定部、１５…アドレス変換部、１６…書き込み部、１７…プログラム、１８…管理データ、Ｇ0〜ＧM…ガベージコレクション部、Ｔ0〜ＴM…アドレス変換テーブル、Ｆ0〜ＦM…バッファメモリ、ＮＳ0〜ＮＳM…ネームスペース、Ｂ0〜ＢN…ブロック、Ｐ0〜ＰM…予備領域、Ａ0〜ＡM…ＬＢＡ空間、Ｌ0〜Ｌ5…書き込み頻度グループ、２０…変換テーブル。
【図１】
0006479639.tif 000002
【図２】
0006479639.tif 000003
【図３】
0006479639.tif 000004
【図４】
0006479639.tif 000005
【図５】
0006479639.tif 000006
【図６】
0006479639.tif 000007
【図７】
0006479639.tif 000008
【図８】
0006479639.tif 000009
【図９】
0006479639.tif 000010
【図１０】
0006479639.tif 000011
【図１１】
0006479639.tif 000012
【図１２】
0006479639.tif 000013