【文献】
NVM Express Revision 1.1b,NVM Express.Inc,2014年 7月 2日,第8-10,48-50,118,135-137ページ,<URL:http://nvmexpress.org/wp-content/uploads/NVM-Express-1_0e.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。以下の実施形態において、アクセスとは、データの読み出し及びデータの書き込みの双方を意味する。
【0008】
[第1の実施形態]
図1は、本実施形態に係る情報処理システムの構成の一例を示すブロック図である。
【0009】
情報処理システム1は、情報処理装置2と、メモリシステム3とを含む。情報処理システム1は、複数の情報処理装置2を含むとしてもよい。情報処理システム1が複数の情報処理装置を備える場合については、後述の第2の実施形態で説明する。
【0010】
(メモリシステム3の説明)
メモリシステム3は、例えばSSDであり、コントローラ4と不揮発性メモリ5とを含む。メモリシステム3は、情報処理装置2に内蔵されてもよく、情報処理装置2とメモリシステム3とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。
【0011】
本実施形態において、不揮発性メモリ5としては、例えば、少なくとも1つのNAND型フラッシュメモリが用いられる。しかしながら、本実施形態は、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)などのような各種の不揮発性メモリが複数の書き込み管理エリアを含む場合に、適用可能である。ここで、書き込み管理エリアは、書き込み回数を管理する単位のエリアとする。不揮発性メモリ5は、3次元構造のフラッシュメモリを含むとしてもよい。
【0012】
例えば、不揮発性メモリ5は、複数のブロック(物理ブロック)を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。不揮発性メモリ5では、ブロック単位にデータが一括して消去される。すなわち、ブロックは、データ消去単位の領域である。データ書き込み及びデータ読み出しは、各ブロックにおけるページ(ワード線)単位で行う。すなわち、ページは、データの書き込み単位又はデータの読み出し単位の領域である。
【0013】
本実施形態では、書き込み回数がブロック単位で管理されるとする。
【0014】
情報処理装置2は、メモリシステム3のホスト装置である。情報処理装置2は、メモリシステム3へ、不揮発性メモリ5のブロックと、少なくとも1つのブロックを含むスペースとを関係付けるための設定コマンドC1を送る。
【0015】
以下の説明では、スペースは、ネームスペースであるとして説明する。
【0016】
また、情報処理装置2は、書き込みコマンドC2とともに、ネームスペースの識別データ(NSID)6、書き込み先を示すLBA7、書き込みデータのデータサイズ8、及び、書き込みデータ9を、メモリシステム3へ送る。
【0017】
本実施形態において、複数のネームスペースNS
0〜NS
M(Mは1以上の整数)のそれぞれは、不揮発性メモリ5に含まれる複数のブロックB
0〜B
N(NはM以上の整数)を区分けすることによって得られるスペースである。本実施形態では、ネームスペースNS
0がブロックB
0〜B
2を含み、ネームスペースNS
MがブロックB
N-2〜B
Nを含む。他のネームスペースNS
1〜NS
M-1もネームスペースNS
0,NS
Mと同様であるとする。なお、本実施形態におけるネームスペースNS
0〜NS
MとブロックB
0〜B
Nとの間の割り当て関係は一例であり、1つのネームスペースに割り当てられるブロックの個数などは適宜変更可能である。複数のネームスペースの間でブロックの個数は異なってもよい。
【0018】
コントローラ4は、記憶部10、バッファメモリF
0〜F
M、プロセッサ11を含む。
【0019】
記憶部10は、各ネームスペースNS
0〜NS
Mに対応するアドレス変換テーブルT
0〜T
Mを格納する。例えば、記憶部10は、作業用メモリとして使用されてもよい。記憶部10は、例えばDRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)などのような揮発性メモリでもよく、又は、不揮発性メモリでもよい。記憶部10は、不揮発性メモリと揮発性メモリとの組み合わせでもよい。
【0020】
アドレス変換テーブルT
0〜T
Mは、それぞれ、ネームスペースNS
0〜NS
Mに対するデータ書き込みにおいて、LBAとPBAとを関係付けたデータであり、例えばLUTである。なお、アドレス変換テーブルT
0〜T
Mの一部又は全部は、メモリ12などのような他のメモリに格納されてもよい。
【0021】
バッファメモリF
0〜F
Mは、それぞれ、ネームスペースNS
0〜NS
Mに対するデータ書き込みにおいて、書き込みデータを書き込みに適したデータ量になるまで格納する。
【0022】
プロセッサ11は、メモリ12、受付部13、設定部14、アドレス変換部15、書き込み部16、ガベージコレクション部G
0〜G
Mを含む。
【0023】
メモリ12は、プログラム17及び管理データ18を格納する。本実施形態において、メモリ12は、プロセッサ11に含まれているが、プロセッサ11の外部に備えられてもよい。メモリ12は、例えば不揮発性のメモリとする。
【0024】
プログラム17は、例えばファームウェアである。プロセッサ11は、プログラム17を実行することにより、受付部13、設定部14、アドレス変換部15、書き込み部16、ガベージコレクション部G
0〜G
Mとして機能する。なお、プログラム17及び管理データ18の一部又は全部は、記憶部10などのような他のメモリに格納されてもよい。
【0025】
管理データ18は、ネームスペースNS
0〜NS
MとブロックB
0〜B
Nとの関係を示すデータである。管理データ18を参照することにより、どのブロックがどのネームスペースに所属しているか判断可能である。
【0026】
受付部13は、情報処理装置2から、不揮発性メモリ5の各ブロックと、各ネームスペースとを関係付けるための設定コマンドC1を受け付ける。また、受付部13は、情報処理装置2から、書き込みコマンドC2、NSID6、LBA7、データサイズ8、データ9を受け付ける。
【0027】
以下の説明では、説明を簡略化するため、書き込みコマンドC2に、ネームスペースNS
0を示すNSID6が付されている場合について説明する。しかしながら、書き込みコマンドC2に、他のネームスペースNS
1〜NS
Mを示すNSIDを付すことも可能である。
【0028】
設定部14は、受付部13によってネームスペースの設定コマンドC1が受け付けられた場合に、設定コマンドC1に基づいて、ネームスペースNS
0〜NS
Mに、ブロックB
0〜B
Nを割り当てて管理データ18を生成し、管理データ18をメモリ12に格納する。ネームスペースNS
0〜NS
MとブロックB
0〜B
Nとの間の割り当ては、設定部14がネームスペースNS
0〜NS
Mのデータ格納状態を監視し、各ネームスペースNS
0〜NS
Mで、データ容量、アクセス頻度、書き込み頻度、アクセス回数、書き込み回数、又は、データ格納率が同レベルとなるように行われてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。
【0029】
ここで、データ容量とは書き込み可能なデータサイズであり、アクセス頻度又は書き込み頻度とは単位時間当たりのアクセス回数又は書き込み回数であり、データ格納率とは、ある領域サイズに対するデータ格納済みの領域サイズの割合を示す値とする。
【0030】
また、設定部14は、ネームスペースNS
0〜NS
Mごとに実行されたガベージコレクションの結果に基づいて、データを格納していない空ブロックを、ガベージコレクション前に属するネームスペースから他のネームスペースに変更し、管理データ18を更新する。これにより、ネームスペースNS
0〜NS
M間でウェアレベリング(Wear Leveling)を実行することができる。ネームスペースNS
0〜NS
MとブロックB
0〜B
Nとの間の割り当て変更は、設定部14がネームスペースNS
0〜NS
Mのデータ格納状態を監視し、上記の管理データ18の生成時と同様に監視結果に応じて行われてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。例えば、ネームスペースNS
0〜NS
Mの変更は、データ容量の少ない、アクセス頻度の低い、アクセス回数の少ない、又は、データ格納率の低いネームスペースの空ブロックを、データ容量の多い、アクセス頻度の高い、アクセス回数の多い、又は、データ格納率の高いネームスペースに変換する。
【0031】
さらに、設定部14は、オーバープロビジョニング(Over Provisioning)のために、設定コマンドC1に基づいて、ネームスペースNS
0〜NS
Mごとに、不揮発性メモリ5に、普段使用されない予備領域P
0〜P
Mを設定する。予備領域P
0〜P
Mの設定は、設定部14がネームスペースNS
0〜NS
Mの各データ容量などに応じて行うとしてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。
【0032】
本実施形態において、予備領域P0〜PMは、不揮発性メモリ5に確保されているが、不揮発性メモリ5ではないメモリシステム3内の他のメモリに確保されていてもよい。例えば、予備領域P
0〜P
Mは、DRAM、SRAMなどのメモリに確保されてもよい。
【0033】
アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたNSID6の示すネームスペースNS
0に対応するアドレス変換テーブルT
0に対して、書き込みコマンドC2に付されていたLBA7をPBAに変換するための関係付けを行う。
【0034】
本実施形態において、アドレス変換部15は、プロセッサ11によって実現されるとしている。しかしながら、アドレス変換部15は、プロセッサ11と別の構成としてもよい。
【0035】
また、アドレス変換部15は、アドレス変換テーブルT
0〜T
Mに基づいてアドレス変換を行うが、これに代えてキーバリュー型検索によりアドレス変換を行ってもよい。例えば、LBAをキーとし、PBAをバリューとすることで、キーバリュー型検索によるアドレス変換は実現可能である。
【0036】
書き込み部16は、アドレス変換部15によって得られたPBAの示す位置に、書き込みデータ9を書き込む。本実施形態において、書き込み部16は、書き込みコマンドC2に付されていたNSID6の示すネームスペースNS
0に対応するバッファメモリF
0に、書き込みデータ9を格納する。そして、書き込み部16は、バッファメモリF
0がネームスペースNS
0に適したデータ量になった場合に、PBAの示す位置に、バッファメモリF
0のデータを書き込む。
【0037】
ガベージコレクション部G
0〜G
Mは、ネームスペースNS
0〜NS
Mに対応しており、ネームスペースNS
0〜NS
Mごとにガベージコレクションを実行する。ガベージコレクションとは、不要になったメモリ領域を解放する処理、又は、隙間のあるメモリ領域に書き込まれているデータを集めて連続した利用可能なメモリ領域を確保する処理である。ガベージコレクション部G
0〜G
Mは、並列にガベージコレクションを実行可能としてもよく、順にガベージコレクション部G
0〜G
Mを実行してもよい。
【0038】
ガベージコレクション部G
0〜G
Mのうちガベージコレクション部G
0を用いて具体的に説明する。ガベージコレクション部G
0は、まず、管理データ18に基づいて、ネームスペースNS
0に対応するブロックB
0〜B
2を選択する。次に、ガベージコレクション部G
0は、選択されたブロックB
0〜B
2に対するガベージコレクションを実行する。そして、ガベージコレクション部G
0によるガベージコレクション結果に基づいて、アドレス変換部15は、アドレス変換テーブルT
0を更新する。
【0039】
なお、本実施形態においては、LBAとPBAとがアドレス変換テーブルT
0〜T
Mで関係付けられており、PBAで特定可能なブロックとNSIDとが管理データ18で関係付けられている。したがって、LBAが重複しないユニークなアドレスであり管理データ18が生成されれば、プロセッサ11側で、書き込みコマンドC2に付されているLBA7から書き込み先のネームスペースNS
0を特定可能である。したがって、LBA7が重複せず管理データ18が生成された後には、書き込みコマンドC2にNSID6が付されることを省略し、LBA7とアドレス変換テーブルT
0〜T
Mと管理データ18に基づいて、プロセッサ11側でNSID6が求められるとしてもよい。
【0040】
図2は、LBA空間と、ネームスペースNS
0〜NS
Mと、アドレス変換テーブルT
0〜T
Mと、ガベージコレクション部G
0〜G
Mと、管理データ18との関係の一例を示すブロック図である。
【0041】
情報処理装置2のLBA空間A
0〜A
Mは、それぞれネームスペースNS
0〜NS
Mに割り当てられている。
【0042】
LBA空間A
0は論理アドレス0〜E
0を含む。LBA空間A
1は論理アドレス0〜E
1を含む。LBA空間A
Mは論理アドレス0〜E
Mを含む。他のLBA空間A
2〜A
M-1も同様に複数の論理アドレスを含む。
【0043】
以下の説明では、説明を簡略化するために、LBA空間A
0とこのLBA空間A
0に対して割り当てられているネームスペースNS
0とを代表して説明する。しかしながら、他のLBA空間A
1〜A
M及びネームスペースNS
1〜NS
Mについても同様である。
【0044】
情報処理装置2は、LBA空間A
0のデータを不揮発性メモリ5に書き込む場合に、書き込みコマンドC2、LBA空間A
0に対応するネームスペースNS
0を示すNSID6、LBA空間A
0内のLBA7、データサイズ8、LBA7に対応する書き込みデータ9をメモリシステム3に送る。
【0045】
管理データ18は、ネームスペースNS
0とブロックB
0〜B
2と関係付けている。
【0046】
ガベージコレクション部G
0は、管理データ18に基づいて、ガベージコレクション部G
0に対応するネームスペースNS
0に含まれているブロックB
0〜B
2に対して、ガベージコレクションを実行する。
【0047】
ガベージコレクションの結果、ブロックB
0〜B
2内でデータの配置が変化する。このため、ガベージコレクション部G
0は、
図2において省略されているアドレス変換部15にアドレス変換テーブルT
0の更新を指示し、アドレス変換部15は、ガベージコレクション後のデータ配置と整合するように、ネームスペースNS
0に対応するアドレス変換テーブルT
0を更新する。
【0048】
図3は、本実施形態に係る受付部13及び設定部14の処理の一例を示すフローチャートである。
【0049】
ステップS301において、受付部13は、ネームスペースNS
0〜NS
Mの設定コマンドC1を受け付ける。
【0050】
ステップS302において、設定部14は、ネームスペースNS
0〜NS
Mに、不揮発性メモリ5のブロックB
0〜B
Nを割り当て、管理データ18を生成する。
【0051】
ステップS303において、設定部14は、管理データ18をメモリ12に格納する。
【0052】
図4は、本実施形態に係るガベージコレクション部G
0及びアドレス変換部15の処理の一例を示すフローチャートである。なお、他のガベージコレクション部G
1〜G
Mでも同様の処理が実行される。この
図4の処理は、例えば、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。また、ガベージコレクション部G
0は、例えば、ガベージコレクション対象のネームスペースNS
0のデータ格納状態を監視し、ガベージコレクションの開始を判断するなどのように、自発的に
図4の処理を実行してもよい。より具体的に説明すると、例えば、ガベージコレクション部G
0は、ネームスペースNS
0内の空きブロックが所定数以下、又は、ネームスペースNS
0内の全ブロックに対する空きブロックの割合が所定値以下、の場合に、ネームスペースNS
0に対するガベージコレクションを実行する。
【0053】
ステップS401において、ガベージコレクション部G
0は、管理データ18に基づいて、ガベージコレクション対象のネームスペースNS
0に対応するブロックB
0〜B
2を選択する。
【0054】
ステップS402において、ガベージコレクション部G
0は、選択されたネームスペースNS
0内のブロックB
0〜B
2に対するガベージコレクションを実行する。
【0055】
ステップS403において、アドレス変換部15は、ガベージコレクション対象のネームスペースNS
0に対応するアドレス変換テーブルT
0を、ガベージコレクション後のブロックB
0〜B
2の状態にそって更新する。
【0056】
以上説明した本実施形態においては、ネームスペースNS
0〜NS
Mごとに、予め定められた又は情報処理装置2から設定されたブロック量を割り当てることができ、ネームスペースNS
0〜NS
Mに対応するデータを、そのネームスペースNS
0〜NS
Mに割り当てられたブロックB
0〜B
Mに書き込むことができ、ネームスペースNS
0〜NS
Mごとに異なるデータ量を設定することができる。
【0057】
本実施形態においては、ガベージコレクションを、ネームスペースNS
0〜NS
Mごとに独立して、効率的に、実行することができる。
【0058】
本実施形態においては、ガベージコレクションの結果、データを格納していない空ブロックを、ガベージコレクション前のネームスペースから他のネームスペースに変更することができ、他のネームスペース内で空ブロックを確保することができる。これにより、ブロックに割り当てられるネームスペースを変更することができ、ネームスペースNS
0〜NS
M間でウェアレベリングを実行することができ、不揮発性メモリ5を長寿命化することができる。
【0059】
本実施形態では、ネームスペースNS
0〜NS
Mごとに異なるデータ量の予備領域P
0〜P
Mを設定することができ、ネームスペースNS
0〜NS
Mごとにオーバープロビジョニングを実現することができる。これにより、書き込み速度の高速化及び性能維持を実現し、信頼性を向上させることができる。
【0060】
本実施形態においては、ネームスペースNS
0〜NS
Mごとにアドレス変換テーブルT
0〜T
Mが管理されており、ネームスペースNS
0〜NS
Mごとに、アドレス変換及びLBAとPBAとの関係の変更を効率的に行うことができる。
【0061】
本実施形態において、アドレス変換をキーバリュー型検索によって行う場合には、不揮発性メモリ5のデータ容量が大きくても、効率的にアドレス変換を行うことができる。
【0062】
本実施形態においては、ネームスペースNS
0〜NS
Mごとに高度なメモリ管理を実現することができ、不揮発性メモリ5を長寿命化することができ、コストを削減することができ、ネームスペースNS
0〜NS
Mで区分けされている不揮発性メモリ5に対する書き込み及び読み出しを高速化することができる。
【0063】
(情報処理装置2の説明)
情報処理装置2は、メモリ21とプロセッサ22とを含む。
【0064】
情報処理装置2では、アプリケーションプログラム、オペレーティングシステムなどの各種のプログラム及び各種のデータ(以下、オブジェクトと記す)が、オブジェクト識別データ(以下、オブジェクトIDと記す)により識別可能である。
【0065】
情報処理装置2は、オブジェクトに対してLBA空間A
0〜A
Mを割り当て、オブジェクトIDごとに、当該オブジェクトIDの示すオブジェクトに割り当てられたLBA空間A
0〜A
Mを管理する。
【0066】
メモリ21は、プログラム23を格納する例えば不揮発性のメモリである。
【0067】
プロセッサ22は、メモリ21に格納されているプログラム23を実行することにより、頻度算出部24、割り当て部25、発信部26として機能する。
【0068】
頻度算出部24は、各オブジェクトのLBA空間に対応する書き込み頻度を算出する。
【0069】
割り当て部25は、各オブジェクトのLBA空間に対応する書き込み頻度に基づいて、複数のLBA空間A
0〜A
Mを、複数のネームスペースNS
0〜NS
Mに割り当てる。
【0070】
発信部26は、割り当て部25の割り当て結果に基づいて、設定コマンドC1を生成し、設定コマンドC1をメモリシステム3へ送る。
【0071】
また、発信部26は、割り当て部25の割り当て結果に基づいて、書き込みコマンドC2を生成し、書き込みコマンドC2、書き込みコマンドC2を発信するオブジェクトのLBA空間に割り当てられたネームスペースNS
0を示すNSID6、データサイズ8、及び、書き込みデータ9を、メモリシステム3へ送る。
【0072】
図5は、本実施形態に係るネームスペースの割り当て状態を例示するブロック図である。
【0073】
この
図5では、オブジェクトのLBA空間を4つのネームスペースNS
0〜NS
4に割り当てる状態を例示しているが、ネームスペースの数は2以上でよい。
【0074】
オブジェクトのLBA空間に対応する書き込み頻度は、複数の書き込み頻度グループのいずれかに割り当てられる。
図5では、6つの書き込み頻度グループL
0〜L
5が用いられる場合が例示されている。書き込み頻度グループL
0〜L
5は、書き込み頻度の高い方から低い方へ、順に、書き込み頻度グループL
0(Extremely Hot)、L
1(Hot)、L
2(Warm)、L
3(Cool)、L
4(Cold)、L
5(Extremely cold)とする。
【0075】
書き込み頻度グループL
0〜L
5は、それぞれの性質及びオブジェクトIDに基づいて、ネームスペースNS
0〜NS
4に割り当てられる。
【0076】
例えば、同一のネームスペース内に異なる性質の書き込み頻度グループが含まれるように、ネームスペースNS
0〜NS
4に対して書き込み頻度グループL
0〜L
5の割り当てが行われる。
【0077】
例えば、書き込み頻度の極めて大きい書き込み頻度グループL
0は、予備領域を潤沢に確保する必要があるため、複数のネームスペースNS
0〜NS
4に割り当てられる。これにより、効率的に予備領域を用いることができる。
【0078】
例えば、書き込み頻度の極めて小さい書き込み頻度グループL
5は、複数のネームスペースNS
2,NS
3に分割される。このように、書き込み頻度グループL
5が複数のネームスペースNS
2,NS
3に割り当てられることにより、ガベージコレクションを効率化することができる。
【0079】
例えば、書き込み頻度の大きい書き込み頻度グループL
1は、ユーザアプリケーションなどのようなオブジェクトに依存して、独立に、ガベージコレクションが実行されるように、オブジェクトごとにネームスペースNS
0,NS
3が割り当てられられ、同じオブジェクトのLBA空間は、同じネームスペースNS
0,NS
3に割り当てられる。これにより、あるユーザアプリケーションに対するガベージコレクションが実行された場合に、他のユーザアプリケーションの性能が低下することを防止することができる。
【0080】
図6は、本実施形態に係る情報処理装置2の処理の一例を示すフローチャートである。
【0081】
ステップS601において、頻度算出部24は、各オブジェクトのLBA空間に対応する書き込み頻度を算出する。
【0082】
ステップS602において、割り当て部25は、各オブジェクトのLBA空間に対応する書き込み頻度に基づいて、各オブジェクトのLBA空間を書き込み頻度グループL
0〜L
5のいずれかに割り当てる。
【0083】
ステップS603において、割り当て部25は、各オブジェクトID及び書き込み頻度グループL
0〜L
5に基づいて、各オブジェクトのLBA空間を、ネームスペースNS
0〜NS
Mのうちの少なくとも1つに割り当てる。
【0084】
ステップS604において、発信部26は、書き込みコマンドC2と、ネームスペースNS
0〜NS
Mの割り当て結果を示すNSID6と、LBA7と、データサイズ8と、書き込みデータ9とを、メモリシステム3に送る。
【0085】
以上説明した本実施形態においては、各オブジェクトのLBA空間A
0〜A
Mに対応する書き込み頻度に基づいて、各オブジェクトのLBA空間A
0〜A
Mを、ネームスペースNS
0〜NS
Mに割り当てることができ、メモリシステム3のサービス品質及び装置性能を向上させることができ、装置寿命を長くすることができ、メモリシステム3の設定を適切化することができる。
【0086】
例えば、本実施形態においては、同一のネームスペース内に異なる性質のLBA空間を割り当てることにより、ネームスペースNS
0〜NS
4に対する書き込み頻度及び書き込み回数を調整することができる。
【0087】
例えば、本実施形態においては、書き込み頻度の極めて大きいLBA空間を、複数のネームスペースに割り当てることができ、これにより予備領域を潤沢に確保することができる。
【0088】
例えば、本実施形態においては、書き込み頻度の極めて小さいLBA空間を、複数のネームスペースに割り当て、これによりガベージコレクションを効率化することができる。
【0089】
例えば、本実施形態においては、書き込み頻度の大きいオブジェクトのLBA空間を、同じネームスペースに割り当てる。これにより、あるユーザアプリケーションに対するガベージコレクションが実行された場合に、他のユーザアプリケーションの性能が低下することを防止することができる。
【0090】
本実施形態においては、情報処理装置2において、情報処理装置2側のLBA空間A
0〜A
Mとメモリシステム3側のネームスペースNS
0〜NS
Mとの割り当てを決定することができる。
【0091】
本実施形態においては、書き込み頻度に基づいて、LBA空間A
0〜A
MとネームスペースNS
0〜NS
Mとの割り当てが行われている。しかしながら、これに代えて、書き込み回数、書き込み頻度及び読み出し頻度の組み合わせなど、他の情報に基づいてLBA空間A
0〜A
MとネームスペースNS
0〜NS
Mとの割り当てが行われてもよい。
【0092】
また、割り当て部25は、ユーザ設定に基づいて、複数のLBA空間A
0〜A
Mを、複数のネームスペースNS
0〜NS
Mに割り当てるとしてもよい。
【0093】
本実施形態においては、ガベージコレクション部G
0〜G
Mに代えて、又は、ガベージコレクション部G
0〜G
Mとともに、ネームスペースNS
0〜NS
Mごとのコンパクション部を備えるとしてもよい。ネームスペースNS
0〜NS
Mのそれぞれに対応するコンパクション部は、管理データ18に基づいて、ネームスペースNS
0〜NS
Mのそれぞれに対してコンパクションを実行する。
【0094】
本実施形態において、例えば、情報処理装置2とメモリシステム3との間の設定コマンドC1の通信は、省略されてもよい。例えば、アドレス変換部15は、設定部14の一部又は全部の機能を備えるとしてもよい。例えば、アドレス変換部15は、書き込みコマンドC2に付されているNSID6及びLBA7と、LBA7に対応するPBAとを関係付けることで、管理データ18及びネームスペースNS
0〜NS
Mごとのアドレス変換テーブルT
0〜T
Mを生成するとしてもよい。管理データ18とアドレス変換テーブルT
0〜T
Mとは、適宜組み合わせることができ、又は、分割することができる。このように設定コマンドC1の通信が省略され、設定部14の一部又は全部の機能がアドレス変換部15に備えられる構成は、後述の第2の実施形態で説明する。
【0095】
[第2の実施形態]
本実施形態においては、メモリシステムが複数の情報処理装置からの書き込みデータを書き込み、メモリシステムが読み出しデータを複数の情報処理装置へ送る情報処理システムについて説明する。
【0096】
図7は、本実施形態に係る情報処理システムの構成の一例を示すブロック図である。
【0097】
情報処理システム1Aは、複数の情報処理装置D
0〜D
Mとメモリシステム3Aとを含む。複数の情報処理装置D
0〜D
Mのそれぞれは、上記の情報処理装置2と同様の機能を備える。メモリシステム3Aは、主に、アドレス変換テーブルT
0〜T
M及び管理データ18に代えて変換テーブル(変換データ)20を備える点、複数の情報処理装置D
0〜D
Mとの間でデータ、情報、信号、コマンドなどの送信及び受信を行う点、設定部14の機能がアドレス変換部15に備えられる点で、上記のメモリシステム3と相違している。本実施形態においては、上記第1の実施形態と異なる点を説明し、同じ部分又は実質的に同じ部分については説明を省略するか又は簡単に説明する。
【0098】
メモリシステム3Aは、例えばクラウドコンピューティングシステムに備えられる。メモリシステム3Aは、複数の情報処理装置D
0〜D
Mによってシェアされる場合を例として説明するが、例えば複数のユーザによってシェアされてもよい。複数の情報処理装置D
0〜D
Mの少なくとも1つは、仮想マシンでもよい。
【0099】
本実施形態において、コマンドに付されるNSIDは、ネームスペースのアクセス鍵として用いられる。
【0100】
本実施形態においては、複数の情報処理装置D
0〜D
Mは、自己に対応するネームスペースNS
0〜NS
Mに対してアクセス権限を持つとする。しかしながら、1つの情報処理装置が1以上のネームスペースに対してアクセス権限を持つとしてもよく、複数の情報処理装置が共通のネームスペースに対してアクセス権限を持つとしてもよい。
【0101】
情報処理装置D
0〜D
Mのそれぞれは、書き込みコマンドC2とともに、例えば自己に対応する書き込み先スペースを示すNSID6W、書き込み先を示すLBA7W、データサイズ8、及び、書き込みデータ9Wを、メモリシステム3Aへ送る。
【0102】
情報処理装置D
0〜D
Mのそれぞれは、読み出しコマンドC3とともに、例えば自己に対応する読み出し先スペースを示すNSID6R、読み出し先を示すLBA7Rを、メモリシステム3Aへ送る。
【0103】
情報処理装置D
0〜D
Mのそれぞれは、読み出しコマンドC3に対応する読み出しデータ9R、又は、読み出し不可であったことを示す情報を、メモリシステム3Aから受ける。
【0104】
メモリシステム3Aは、コントローラ4Aと不揮発性メモリ5とを含む。
【0105】
コントローラ4Aは、インタフェース部19、記憶部10、バッファメモリF
0〜F
M、プロセッサ11を含む。本実施形態においては、コントローラ4Aに備えられるプロセッサの数は1以上で自由に変更可能である。
【0106】
インタフェース部19は、例えば情報処理装置D
0〜D
Mなどのような外部装置との間で、データ、情報、信号、コマンドなどの送信及び受信を行う。
【0107】
記憶部10は、変換テーブル20を格納する。なお、変換テーブル20の一部又は全部は、メモリ12などのような他のメモリに格納されてもよい。
【0108】
変換テーブル20は、LBA、PBA、NSIDを互いに関係付けたデータである。この変換テーブル20については、
図8を用いて後で説明する。
【0109】
バッファメモリF
0〜F
Mは、それぞれ、ネームスペースNS
0〜NS
Mに対する書き込みバッファメモリ及び読み出しバッファメモリとして使用される。
【0110】
プロセッサ11は、プログラム17を格納するメモリ12、受付部13、アドレス変換部15、書き込み部16、読み出し部21、ガベージコレクション部G
0〜G
Mを含む。プロセッサ11は、プログラム17を実行することにより、受付部13、アドレス変換部15、書き込み部16、読み出し部21、ガベージコレクション部G
0〜G
Mとして機能する。
【0111】
受付部13は、データ書き込み時に、情報処理装置D
0〜D
Mからインタフェース部19経由で書き込みコマンドC2、NSID6W、LBA7W、データサイズ8、書き込みデータ9Wを受け付ける。
【0112】
受付部13は、データ読み出し時に、情報処理装置D
0〜D
Mからインタフェース部19経由で読み出しコマンドC3、NSID6R、LBA7Rを受け付ける。
【0113】
アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたLBA7WとNSID6Wに基づいて、NSID6Wの示すネームスペースにおける書き込み先のPBAを決定し、LBA7WとNSID6Wと決定されたPBAとを関係付けた状態で変換テーブル20を更新する。
【0114】
アドレス変換部15は、受付部13によって読み出しコマンドC3が受け付けられた場合に、読み出しコマンドC3に付されていたLBA7RとNSID6Rと変換テーブル20とに基づいて、NSID6Rの示すネームスペースにおける読み出し先のPBAを決定する。
【0115】
書き込み部16は、NSID6Wの示すネームスペースに対応するバッファメモリを経由して、NSID6Wの示すネームスペースに対応するPBAの示す位置に、書き込みデータ9Wを書き込む。
【0116】
読み出し部21は、NSID6Rの示すネームスペースに対応するバッファメモリを経由して、NSID6Rの示すネームスペースに対応するPBAの示す位置から、読み出しデータ9Rを読み出す。そして、読み出し部21は、インタフェース部19経由で、読み出しコマンドC3を発行した情報処理装置に、読み出しデータ9Rを送る。
【0117】
本実施形態において、ガベージコレクション部G
0〜G
Mは、変換テーブル20に基づいて、ネームスペースNS
0〜NS
Mごとにガベージコレクションを実行する。
【0118】
図8は、本実施形態に係る変換テーブル20の一例を示すデータ構造図である。
【0119】
変換テーブル20は、LBA、PBA、NSIDを関係付けて管理する。例えば、変換テーブル20は、LBA200とPBA300とNS
0とを関係付けており、LBA201とPBA301とNS
0とを関係付けており、LBA200とPBA399とNS
Mとを関係付けている。
【0120】
アドレス変換部15は、例えば、LBA200とネームスペースNS
0を示すNSIDとに関係するPBA300と、LBA200とネームスペースNS
Mを示すNSIDとに関係するPBA399とが互いに異なるように、PBAの決定を行う。
【0121】
これにより、アドレス変換部15は、LBA200とともに受け付けられたNSIDがネームスペースNS
0を示す場合にはPBA300を選択することができ、LBA200とともに受け付けられたNSIDがネームスペースNS
Mを示す場合にはPBA399を選択することができる。
【0122】
したがって、複数の情報処理装置D
0〜D
Mの間で同じ論理アドレスが使用される場合であっても、メモリシステム3Aを複数の情報処理装置D
0〜D
Mでシェアすることができる。
【0123】
図9は、本実施形態に係るメモリシステム3Aの書き込み処理の一例を示すフローチャートである。
【0124】
この
図9の説明では、複数の情報処理装置D
0〜D
Mのうちの情報処理装置D
0から書き込みコマンドC2が発行され、書き込みコマンドC2にはネームスペースNS
0を示すNSID6Wが付されている場合を例として説明する。しかしながら、情報処理装置D
1〜D
Mから書き込みコマンドC2が発行された場合も同様である。また、書き込みコマンドC2に他のネームスペースNS
1〜NS
Mのいずれかを示すNSID6Wが付されている場合も同様である。
【0125】
ステップS901において、受付部13は、情報処理装置D
0からインタフェース部19経由で書き込みコマンドC2、NSID6W、LBA7W、データサイズ8、書き込みデータ9Wを受け付ける。
【0126】
ステップS902において、アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたLBA7WとNSID6Wに基づいて、NSID6Wの示すネームスペースNS
0における書き込み先のPBAを決定する。
【0127】
ステップS903において、アドレス変換部15は、LBA7WとNSID6Wと決定されたPBAとを関係付けた状態で変換テーブル20を更新する。
【0128】
ステップS904において、書き込み部16は、NSID6Wの示すネームスペースNS
0に対応するバッファメモリF
0を経由して、NSID6Wの示すネームスペースNS
0に対応するPBAの示す位置に、書き込みデータ9Wを書き込む。
【0129】
図10は、本実施形態に係るメモリシステム3Aの読み出し処理の一例を示すフローチャートである。
【0130】
この
図10の説明では、複数の情報処理装置D
0〜D
Mのうちの情報処理装置D
Mから読み出しコマンドC3が発行され、読み出しコマンドC3にはネームスペースNS
Mを示すNSID6Rが付されている場合を例として説明する。しかしながら、情報処理装置D
0〜D
M-1から読み出しコマンドC3が発行された場合も同様である。また、読み出しコマンドC3に他のネームスペースNS
0〜NS
M-1のいずれかを示すNSID6Rが付されている場合も同様である。
【0131】
ステップS1001において、受付部13は、情報処理装置D
Mからインタフェース部19経由で読み出しコマンドC3、NSID6R、LBA7Rを受け付ける。
【0132】
ステップS1002において、アドレス変換部15は、受付部13によって読み出しコマンドC3が受け付けられた場合に、読み出しコマンドC3に付されていたLBA7RとNSID6Rと変換テーブル20とに基づいて、読み出し先のPBAを決定する。
【0133】
ステップS1003において、読み出し部21は、NSID6Rの示すネームスペースNS
Mに対応するバッファメモリF
Mを経由して、NSID6Rの示すネームスペースNS
Mに対応するPBAの示す位置から、読み出しデータ9Rを読み出し、インタフェース部19経由で、読み出しコマンドC3を発行した情報処理装置D
Mに、読み出しデータ9Rを送る。
【0134】
以上説明した本実施形態においては、不揮発性メモリ5が複数のネームスペースNS
0〜NS
Mに区切られる。情報処理装置D
0〜D
Mは、複数のネームスペースNS
0〜NS
Mのうち自己がアクセス権限を持つネームスペースをアクセス可能である。これにより、データセキュリティを向上させることができる。
【0135】
メモリシステム3Aのコントローラ4Aは、ネームスペースNS
0〜NS
Mごとに、独立の制御を行う。これにより、ネームスペースNS
0〜NS
Mごとに使用条件を切り替えることができる。
【0136】
メモリシステム3Aは、LBAとPBAとNSIDとを関係付けているため、例えば互いに独立の複数の情報処理装置から同じLBAを受信した場合であっても、NSIDによりデータを区別することができる。
【0137】
上記各実施形態において、テーブル形式のデータは、例えばリスト形式などの他のデータ構造で実装されてもよい。
【0138】
[第3の実施形態]
本実施形態においては、上記第1及び第2の実施形態で説明した情報処理システム1,1Aの詳細構成について説明する。
【0139】
図11は、本実施形態に係る情報処理システムの詳細構成の一例を示すブロック図である。
【0140】
この
図11において、情報処理システム1Bは、情報処理装置2Bとメモリシステム3Bとを含む。情報処理システム1Bは、上記第2の実施形態と同様に、複数の情報処理装置を備えるとしてもよい。すなわち、上記第1及び第2の実施形態の情報処理装置2、D
0〜D
Mのいずれかは、情報処理装置2Bに対応する。
【0141】
上記第1及び第2の実施形態のメモリシステム3,3Aは、メモリシステム3Bに対応する。
【0142】
上記第1及び第2の実施形態のプロセッサ11は、CPU43F,43Bに対応する。
【0143】
上記第1の実施形態のアドレス変換テーブルT
0〜T
M、及び、上記第2の実施形態の変換テーブル20は、LUT45に対応する。
【0144】
上記第1及び第2の実施形態の記憶部10は、DRAM47に対応する。
【0145】
上記第2の実施形態のインタフェース部19は、ホストインタフェース41及びホストインタフェースコントローラ42に対応する。
【0146】
上記第1及び第2の実施形態のバッファメモリF
0〜F
Mは、ライトバッファWB及びリードバッファRBに対応する。
【0147】
情報処理装置2Bは、ホスト装置として機能する。
【0148】
コントローラ4は、フロントエンド4Fと、バックエンド4Bとを備える。
【0149】
フロントエンド(ホスト通信部)4Fは、ホストインタフェース41、ホストインタフェースコントローラ42、暗号化/復号化部44、及びCPU43Fを備える。
【0150】
ホストインタフェース41は、情報処理装置2Bとの間で、要求(書き込みコマンド、読み出しコマンド、消去コマンドなど)、LBA及びデータなどを通信する。
【0151】
ホストインタフェースコントローラ(制御部)42は、CPU43Fの制御に基づいて、上記ホストインタフェース41の通信を制御する。
【0152】
暗号化/復号化部(Advanced Encryption Standard (AES))44は、データ書き込み動作において、ホストインタフェースコントローラ42から送信される書き込みデータ(平文)を暗号化する。暗号化/復号化部44は、データ読み出し動作において、バックエンド4BのリードバッファRBから送信される暗号化された読み出しデータを復号化する。なお、この暗号化/復号化部44を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
【0153】
CPU43Fは、フロントエンド4Fの上記各構成41,42,44を制御し、フロントエンド4Fの全体の動作を制御する。
【0154】
バックエンド(メモリ通信部)4Bは、ライトバッファWB、リードバッファRB、LUT部45、DDRC46、DRAM47、DMAC48、ECC49、ランダマイザRZ、NANDC50、及びCPU43Bを備える。
【0155】
ライトバッファ(ライトデータ転送部)WBは、情報処理装置2Bから送信された書き込みデータを一時的に格納する。具体的には、ライトバッファWBは、当該書き込みデータが不揮発性メモリ5に適した所定のデータサイズになるまで、一時的にデータを格納する。
【0156】
リードバッファ(リードデータ転送部)RBは、不揮発性メモリ5から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファRBにおいて、読み出しデータは、情報処理装置2Bに適した順序(情報処理装置2Bが指定した論理アドレスLBAの順序)になるように並び替えられる。
【0157】
LUT45は、論理アドレスLBAを所定の物理アドレスPBAに変換するためのデータである。
【0158】
DDRC46は、DRAM47におけるDDR(Double Data Rate)を制御する。
【0159】
DRAM47は、例えば、LUT45を格納する揮発性のメモリである。
【0160】
DMAC(Direct Memory Access Controller)48は、内部バスIBを介して、書き込みデータや読み出しデータなどを転送する。
図11においては1つのDMAC128が図示されているが、コントローラ4は、2以上のDMAC128を備えるとしてもよい。DMAC48は、必要に応じて、コントローラ4内の様々な位置に設定される。
【0161】
ECC(誤り訂正部)49は、ライトバッファWBから送信される書き込みデータにECC(Error Correcting Code)を付加する。ECC49は、リードバッファRBに送信する際に、付加したECCを用いて、不揮発性メモリ5から読み出した読み出しデータを必要に応じて訂正する。
【0162】
ランダマイザRZ(又はスクランブラ)は、データ書き込み動作の際に、書き込みデータが不揮発性メモリ5の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる。このように、書き込みデータを分散させることで、書き込み回数を平準化でき、不揮発性メモリ5のメモリセルMCのセル寿命を長期化できる。そのため、不揮発性メモリ5の信頼性を向上できる。また、データ読み出し動作の際に、不揮発性メモリ5から読み出された読み出しデータはランダマイザRZを通過する。
【0163】
NANDC(NAND Controller)50は、所定の速度の要求を満たすため、複数のチャンネル(ここでは、4つのチャンネルCH0〜CH3)を用いて、並列に不揮発性メモリ5にアクセスする。
【0164】
CPU43Bは、バックエンド4Bの上記各構成(45〜50,RZ)を制御し、バックエンド4Bの全体の動作を制御する。
【0165】
なお、
図11に示したコントローラ4の構成は例示であり、この構成に限定されることはない。
【0166】
図12は、本実施形態に係るストレージシステムを示す斜視図である。
【0167】
ストレージシステム100は、SSDとしてのメモリシステム3Bを備える。
【0168】
メモリシステム3Bは、例えば比較的小型のモジュールであり、その外形寸法の一例は、20mm×30mm程度である。なお、メモリシステム3Bの大きさ及び寸法は、これに限られるものではなく、種々の大きさのものに適宜変更可能である。
【0169】
また、メモリシステム3Bは、例えば、企業(エンタープライズ)で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置2Bに装着されて使用可能である。そのため、メモリシステム3Bは、エンタープライズ用SSD(eSSD)であってもよい。
【0170】
メモリシステム3Bは、例えば上方に開口した複数のコネクタ(例えばスロット)30を備える。各コネクタ30は、例えばSAS(Serial Attached SCSI)コネクタ等である。このSASコネクタによれば、6GbpsのDual Portにより、情報処理装置3Bと各メモリシステム3Bとが互いに高速通信を行うことが可能である。なお、これに限られず、各コネクタ30は、例えば、PCIe(PCI Express)又はNVMe(NVM Express)等であってもよい。
【0171】
複数のメモリシステム3Bは、情報処理装置2Bのコネクタ30にそれぞれ装着され、略鉛直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム3Bをコンパクトに纏めて実装可能であり、メモリシステム3Bの小型化を図ることができる。さらに、本実施形態に係るメモリシステム3Bの各形状は、2.5型のSFF(Small Form Factor)である。このような形状により、メモリシステム3Bは、エンタープライズ用HDD(eHDD)と互換形状(コンパチ形状)を図ることができ、eHDDとの容易なシステム互換性を実現することができる。
【0172】
なお、メモリシステム3Bは、エンタープライズ用に限られない。例えば、メモリシステム3Bは、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。
【0173】
以上説明したように、本実施形態で説明した構成を持つ情報処理システム1B及びストレージシステム100においては、大容量の記憶に、上記第1及び第2の実施形態と同様の効果を得ることができる。
【0174】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。