以下、図面を参照して実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。以下の実施形態において、アクセスとは、データの読み出し及びデータの書き込みの双方を意味する。
[第1の実施形態]
図1は、本実施形態に係る情報処理システムの構成の一例を示すブロック図である。
情報処理システム1は、情報処理装置2と、メモリシステム3とを含む。情報処理システム1は、複数の情報処理装置2を含むとしてもよい。情報処理システム1が複数の情報処理装置を備える場合については、後述の第2の実施形態で説明する。
メモリシステム3は、例えばSSDであり、コントローラ4と不揮発性メモリ5とを含む。メモリシステム3は、情報処理装置2に内蔵されてもよく、情報処理装置2とメモリシステム3とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。
本実施形態において、不揮発性メモリ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次元メモリを含むとしてもよい。
例えば、不揮発性メモリ5は、複数のブロック(物理ブロック)を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。不揮発性メモリ5では、ブロック単位にデータが一括して消去される。すなわち、ブロックは、データ消去単位の領域である。データ書き込み及びデータ読み出しは、各ブロックにおけるページ(ワード線)単位で行う。すなわち、ページは、データの書き込み単位又はデータの読み出し単位の領域である。
本実施形態では、書き込み回数がブロック単位で管理されるとする。
情報処理装置2は、メモリシステム3のホスト装置である。情報処理装置2は、メモリシステム3へ、不揮発性メモリ5のブロックと、少なくとも1つのブロックを含むスペースとを関係付けるための設定コマンドC1を送る。
以下の説明では、スペースは、ネームスペースであるとして説明する。
また、情報処理装置2は、書き込みコマンドC2とともに、ネームスペースの識別データ(NSID)6、書き込み先を示すLBA7、書き込みデータのデータサイズ8、及び、書き込みデータ9を、メモリシステム3へ送る。
本実施形態において、複数のネームスペースNS0〜NSM(Mは1以上の整数)のそれぞれは、不揮発性メモリ5に含まれる複数のブロックB0〜BN(NはM以上の整数)を区分けすることによって得られるスペースである。本実施形態では、ネームスペースNS0がブロックB0〜B2を含み、ネームスペースNSMがブロックBN-2〜BNを含む。他のネームスペースNS1〜NSM-1もネームスペースNS0,NSMと同様であるとする。
さらに、本実施形態においては、ネームスペースNS0〜NSMを複数のインプットグループIG0〜IGP(Pは1以上の整数)に区分けしている。なお、ネームスペースNS0〜NSMは区分けされることなく、1つのインプットグループとして扱われてもよい。
インプットグループIG0はネームスペースNS0,NS1を含み、インプットグループIGPはネームスペースNSM-1〜NSMを含む。他のインプットグループIG1〜IGP-1もインプットグループIG0,IGPと同様であるとする。
さらに、インプットグループIG0〜IGPは、それぞれ、インプットネームスペースINS0〜INSPを含む。
インプットネームスペースINS0〜INSPは、それぞれ、3つのブロックBを含む。しかしながら、インプットネームスペースINS0に含まれるブロックBの数は、1以上であればよい。
以下で、ネームスペースNS0,NS1を含むインプットグループIG0を用いて、インプットネームスペースINS0について説明する。
インプットネームスペースINS0は、ネームスペースNS0,NS1に対する書き込みデータ9を格納する。本実施形態において、インプットネームスペースINS0は、ネームスペースNS0,NS1からのデータを格納しないとする。インプットネームスペースINS0は、当該インプットネームスペースINS0内のブロック間でデータを移動する場合がある。
インプットネームスペースINS0に格納されているデータは、ネームスペースNS0又はネームスペースNS1に対して独立のガベージコレクションが実行された場合に、ガベージコレクションの実行されたネームスペースNS0又はネームスペースNS1に格納される。
なお、本実施形態におけるネームスペースNS0〜NSMとブロックB0〜BNとの間の割り当て関係、インプットネームスペースINS0〜INSPとブロックBとの間の割り当て関係、ネームスペースNS0〜NSMとインプットネームスペースINS0〜INSPとの割り当て関係は一例であり、1つのネームスペースに割り当てられるブロックの個数、1つのインプットネームスペースに割り当てられるブロックの個数、1つのインプットグループに割り当てられるネームスペースの個数などは適宜変更可能である。例えば、各ネームスペースNS0〜NSMに割り当てられるインプットネームスペースINS0〜INSPは選択可能としてもよい。複数のネームスペースNS0〜NSMの間でブロックの個数は異なっていてもよく、複数のインプットネームスペースINS0〜INSPの間でブロックの個数は異なっていてもよい。
コントローラ4は、記憶部10、バッファメモリF0〜FM、プロセッサ11を含む。
記憶部10は、各ネームスペースNS0〜NSMに対応するアドレス変換テーブル(アドレス変換データ)T0〜TMを格納する。例えば、記憶部10は、作業用メモリとして使用されてもよい。記憶部10は、例えばDRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)などのような揮発性メモリでもよく、又は、不揮発性メモリでもよい。記憶部10は、不揮発性メモリと揮発性メモリとの組み合わせでもよい。
アドレス変換テーブルT0〜TMは、ネームスペースNS0〜NSMに対するデータ書き込みにおいて、LBAとPBAとを関係付けたデータであり、例えばLUTである。なお、アドレス変換テーブルT0〜TMの一部又は全部は、メモリ12などのような他のメモリに格納されてもよい。
バッファメモリF0〜FMは、それぞれ、ネームスペースNS0〜NSMに対するデータ書き込みにおいて、書き込みデータを書き込みに適したデータ量になるまで格納する。本実施形態において、バッファメモリF0〜FMは、それぞれ、ネームスペースNS0〜NSMごとに備えられている。しかしながら、バッファメモリは、インプットネームスペースINS0〜INSPごとに備えられてもよい。この場合、バッファメモリの数を少なくすることができる。
プロセッサ11は、メモリ12、受付部13、設定部14、アドレス変換部15、書き込み部16、ガベージコレクション部G0〜GYを含む。
メモリ12は、プログラム17及び管理データ18を格納する。本実施形態において、メモリ12は、プロセッサ11に含まれているが、プロセッサ11の外部に備えられてもよい。メモリ12は、例えば不揮発性のメモリとする。なお、プログラム17及び管理データ18の一部又は全部は、記憶部10などのような他のメモリに格納されてもよい。
プログラム17は、例えばファームウェアである。プロセッサ11は、プログラム17を実行することにより、受付部13、設定部14、アドレス変換部15、書き込み部16、ガベージコレクション部G0〜GYとして機能する。
管理データ18は、ネームスペースNS0〜NSMとブロックB0〜BNとの関係、インプットネームスペースINS0〜INSPとブロックBとの関係、ネームスペースNS0〜NSMとインプットネームスペースINS0〜INSPとの関係(インプットグループIG0〜IGP)を示すデータである。管理データ18を参照することにより、どのブロックがどのネームスペース又はインプットネームスペースに所属しているか、どのインプットネームスペースがどのネームスペースに割り当てられているか、判断可能である。
さらに、本実施形態では、管理データ18は、インプットネームスペースINS0〜INSPに格納されているデータと当該データに対応するネームスペースNS0〜NSMとの関係、インプットネームスペースINS0〜INSPに格納されているネームスペースNS0〜NSMごとのデータのデータ量、ネームスペースNS0〜NSMごとの書き込み可能データ量、ネームスペースNS0〜NSMごとの書き込み可能な最大データ量、インプットネームスペースINS0〜INSPに含まれるブロックBの書き込み時間データ(書き込みが実行された時間)、インプットネームスペースINS0〜INSPに含まれるブロックBごとの有効データのデータ量など、各種の情報を含む。
本実施形態において、データ量は、例えば、データサイズ又はブロックサイズで表されてもよい。データ量は、例えば、各データのデータサイズが同じ場合には、データの個数又はブロックの個数で表されてもよい。
受付部13は、情報処理装置2から、不揮発性メモリ5の各ブロックと、各ネームスペースとを関係付けるための設定コマンドC1を受け付ける。また、受付部13は、情報処理装置2から、書き込みコマンドC2、NSID6、LBA7、データサイズ8、データ9を受け付ける。
以下の説明では、説明を簡略化するため、書き込みコマンドC2に、ネームスペースNS0を示すNSID6が付されている場合について説明する。しかしながら、書き込みコマンドC2に、他のネームスペースNS1〜NSMを示すNSIDを付すことも可能である。
設定部14は、受付部13によってネームスペースの設定コマンドC1が受け付けられた場合に、設定コマンドC1に基づいて、ネームスペースNS0〜NSMにブロックB0〜BNを割り当て、インプットネームスペースINS0〜INSPにブロックBを割り当て、インプットネームスペースINS0〜INSPにネームスペースNS0〜NSMを割り当て、インプットグループIG0〜IGPを設定する。
ネームスペースNS0〜NSMとブロックB0〜BNとの間の割り当ては、設定部14がネームスペースNS0〜NSMのデータ格納状態を監視し、各ネームスペースNS0〜NSMで、データ容量、アクセス頻度、書き込み頻度、アクセス回数、書き込み回数、又は、データ格納率が同レベルとなるように行われてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。
ここで、データ容量とは書き込み可能なデータサイズであり、アクセス頻度又は書き込み頻度とは単位時間当たりのアクセス回数又は書き込み回数であり、データ格納率とは、ある領域サイズに対するデータ格納済みの領域サイズの割合を示す値とする。
そして、設定部14は、ネームスペースNS0〜NSMにブロックB0〜BNを割り当てた情報、インプットネームスペースINS0〜INSPにブロックBを割り当てた情報、インプットネームスペースINS0〜INSPにネームスペースNS0〜NSMを割り当てた情報、インプットネームスペースINS0〜INSPに格納されているデータと当該データに対応するネームスペースNS0〜NSMとの関係を示す情報、インプットネームスペースINS0〜INSPに格納されており各ネームスペースNS0〜NSMに対応するデータのデータ量、ネームスペースNS0〜NSMごとの書き込み可能データ量、ネームスペースNS0〜NSMごとの書き込み可能な最大データ量、インプットネームスペースINS0〜INSPに含まれるブロックの書き込み時間データ、インプットネームスペースINS0〜INSPのブロックBごとの有効データのデータ量など各種の情報を含む管理データ18を生成し、管理データ18をメモリ12に格納する。
例えば、設定部14は、インプットネームスペースINS0〜INSPにデータが書き込まれるごとに、インプットネームスペースINS0〜INSPに格納されているネームスペースNS0〜NSMごとのデータのデータ量を求める。そして、設定部14は、ネームスペースNS0〜NSMに対応する所定のデータ量から、求められたインプットネームスペースINS0〜INSPに格納されているネームスペースNS0〜NSMごとのデータのデータ量を差し引いた値に相当する数のブロックを、ネームスペースNS0〜NSMに割り当てる。
例えば、設定部14は、ネームスペースNS0〜NSMと、インプットネームスペースINS0〜INSPに格納されているネームスペースNS0〜NSMごとのデータのデータ量との関係を示す情報を、管理データ18で管理する。
例えば、設定部14は、インプットネームスペースINS0〜INSPに含まれているブロックBの中からデータ移動対象のブロックを選択する。設定部14は、データ移動対象のブロックに格納されておりネームスペースNS0〜NSMに対応する有効データが、当該有効データに対応するネームスペースNS0〜NSMのブロックに移動された場合、インプットネームスペースINS0〜INSPに格納されているネームスペースNS0〜NSMごとのデータのデータ量から、ネームスペースNS0〜NSMに移動された有効データのデータ量を差し引く。そして、設定部14は、差し引いた値で、管理データ18を更新する。
ここで、設定部14は、有効データを移動するブロックの選択方法として、インプットネームスペースINS0〜INSPに含まれているブロックBのうち、最も書き込み時間データの古いブロックをデータ移動対象のブロックとして選択してもよい。
設定部14は、有効データを移動するブロックの選択方法として、インプットネームスペースINS0〜INSPに含まれているブロックBのうち、有効データのデータ量の最も少ないブロックをデータ移動対象のブロックとして選択してもよい。また、本実施形態においては、例えば、インプットネームスペースINS0〜INSPに含まれているブロックの中から、有効データのデータ量が第1のしきい値より少ないブロックを、データ移動対象のブロックとして選択してもよい。
設定部14は、有効データを移動するために選択されたデータ移動対象のブロックに格納されている有効データのデータ量が第2のしきい値より少ない場合に、インプットネームスペースINS0〜INSPに割り当てるブロック数を少なくしてもよい。これとは逆に、設定部14は、データ移動対象のブロックに格納されている有効データのデータ量が第3のしきい値より多い場合に、インプットネームスペースINS0〜INSPに割り当てるブロック数を多くしてもよい。
例えば、設定部14は、インプットネームスペースINS0〜INSPに含まれるブロックの数が第4のしきい値より多い場合に、インプットネームスペースINS0〜INSPからデータ移動対象のブロックを選択してもよい。この場合、書き込み部16は、データ移動対象のブロックに格納されている有効データを当該有効データに対応するネームスペースNS0〜NSMに移動する。そして、設定部14は、インプットネームスペースINS0〜INSPに含まれるブロックの数を減らし、ネームスペースNS0〜NSMに含まれるブロック数を増やす。
加えて、設定部14は、ネームスペースNS0〜NSMごとに実行されたガベージコレクションの結果に基づいて、データを格納していない空ブロックを、ガベージコレクション前に属するネームスペースから他のネームスペースに変更し、管理データ18を更新する。これにより、ネームスペースNS0〜NSM間でウェアレベリング(Wear Leveling)を実行することができる。ネームスペースNS0〜NSMとブロックB0〜BNとの間の割り当て変更は、設定部14がネームスペースNS0〜NSMのデータ格納状態を監視し、上記の管理データ18の生成時と同様に監視結果に応じて行われてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。例えば、ネームスペースNS0〜NSMの変更は、データ容量の少ない、アクセス頻度の低い、アクセス回数の少ない、又は、データ格納率の低いネームスペースの空ブロックを、データ容量の多い、アクセス頻度の高い、アクセス回数の多い、又は、データ格納率の高いネームスペースに変換する。
さらに、設定部14は、オーバープロビジョニング(Over Provisioning)のために、設定コマンドC1に基づいて、ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPごとに、不揮発性メモリ5に、普段使用されない予備領域P0〜PYを設定する。予備領域P0〜PYの設定は、設定部14がネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPの各データ容量などに応じて行うとしてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。
本実施形態において、予備領域P0〜PYは、不揮発性メモリ5に確保されているが、不揮発性メモリ5ではないメモリシステム3内の他のメモリに確保されていてもよい。例えば、予備領域P0〜PYは、DRAM、SRAMなどのメモリに確保されてもよい。
アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたNSID6の示すネームスペースNS0に対応するアドレス変換テーブルT0に対して、書き込みコマンドC2に付されていたLBA7をPBAに変換するための関係付けを行う。
例えば、アドレス変換部15は、書き込み時に、LBA7と、インプットネームスペースINS0内のPBAとを関係付けて、アドレス変換テーブルT0を更新する。さらに、アドレス変換部15は、インプットネームスペースINS0からネームスペースNS0へのデータの移動によってLBA7とPBAとの関係が変更された場合に、LBA7とネームスペースNS0のPBAとを関連付けて、アドレス変換テーブルT0を更新する。
本実施形態において、アドレス変換部15は、プロセッサ11によって実現されるとしている。しかしながら、アドレス変換部15は、プロセッサ11と別の構成としてもよい。
また、アドレス変換部15は、アドレス変換テーブルT0〜TMに基づいてアドレス変換を行うが、これに代えてキーバリュー型検索によりアドレス変換を行ってもよい。例えば、LBAをキーとし、PBAをバリューとすることで、キーバリュー型検索によるアドレス変換は実現可能である。
書き込み部16は、アドレス変換部15によって得られたインプットネームスペースINS0〜INSPにおけるPBAの示す位置に書き込みデータ9を書き込み、その後、インプットネームスペースINS0〜INSPからアドレス変換部15によって得られたネームスペースNS0〜NSMにおけるPBAの示す位置に書き込みデータ9を書き込む。
本実施形態において、書き込み部16は、書き込みコマンドC2に付されていたNSID6の示すネームスペースNS0に対応するバッファメモリF0に、書き込みデータ9を格納する。次に、書き込み部16は、バッファメモリF0がインプットネームスペースINS0又はネームスペースNS0に適したデータ量になった場合に、インプットネームスペースINS0に、バッファメモリF0のデータを書き込む。そして、書き込み部16は、例えば、ネームスペースNS0に対するガベージコレクションの実行に基づいて、設定部14によって選択されたデータ移動対象のブロックに格納されておりネームスペースNS0に対応する有効データを、当該有効データに関連付けられているネームスペースNS0のブロックに移動する。例えば、書き込み部16は、ネームスペースNS0に対するガベージコレクションの実行時に併せてインプットネームスペースINS0に格納されておりネームスペースNS0に対応する有効データを、ネームスペースNS0に書き込む。なお、書き込み部16によるインプットネームスペースINS0からネームスペースNS0へのデータの移動は、任意のタイミングで実行されてもよい。
ガベージコレクション部G0〜GYは、ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPに対応しており、ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPごとに独立にガベージコレクションを実行可能である。ガベージコレクションとは、不要になったメモリ領域を解放する処理、又は、隙間のあるメモリ領域に書き込まれているデータを集めて連続した利用可能なメモリ領域を確保する処理である。ガベージコレクション部G0〜GYは、並列にガベージコレクションを実行可能としてもよく、順にガベージコレクション部G0〜GYを実行してもよい。
ガベージコレクション部G0〜GYのうちガベージコレクション部G0を用いて具体的に説明する。ガベージコレクション部G0は、まず、管理データ18に基づいて、ネームスペースNS0に対応するブロックB0〜B2を選択する。次に、ガベージコレクション部G0は、選択されたブロックB0〜B2に対するガベージコレクションを実行する。そして、ガベージコレクション部G0によるガベージコレクション結果に基づいて、アドレス変換部15は、アドレス変換テーブルT0を更新する。
なお、本実施形態においては、LBAとPBAとがアドレス変換テーブルT0〜TMで関係付けられており、PBAで特定可能なブロックとNSIDとが管理データ18で関係付けられている。したがって、LBAが重複しないユニークなアドレスであり管理データ18が生成されれば、プロセッサ11側で、書き込みコマンドC2に付されているLBA7から書き込み先のネームスペースNS0を特定可能である。したがって、LBA7が重複せず管理データ18が生成された後には、書き込みコマンドC2にNSID6が付されることを省略し、LBA7とアドレス変換テーブルT0〜TMと管理データ18に基づいて、プロセッサ11側でNSID6が求められるとしてもよい。
図2は、LBA空間と、ネームスペースNS0〜NSMと、アドレス変換テーブルT0〜TMと、ガベージコレクション部G0〜GMと、管理データ18との関係の一例を示すブロック図である。
情報処理装置2のLBA空間A0〜AMは、それぞれネームスペースNS0〜NSMに割り当てられている。
LBA空間A0は論理アドレス0〜E0を含む。LBA空間A1は論理アドレス0〜E1を含む。LBA空間AMは論理アドレス0〜EMを含む。他のLBA空間A2〜AM-1も同様に複数の論理アドレスを含む。
以下の説明では、説明を簡略化するために、LBA空間A0とこのLBA空間A0に対して割り当てられているネームスペースNS0とを代表して説明する。しかしながら、他のLBA空間A1〜AM及びネームスペースNS1〜NSMについても同様である。
情報処理装置2は、LBA空間A0のデータを不揮発性メモリ5に書き込む場合に、書き込みコマンドC2、LBA空間A0に対応するネームスペースNS0を示すNSID6、LBA空間A0内のLBA7、データサイズ8、LBA7に対応する書き込みデータ9をメモリシステム3に送る。
管理データ18は、ネームスペースNS0とブロックB0〜B2と関係付けている。
ガベージコレクション部G0は、管理データ18に基づいて、ガベージコレクション部G0に対応するネームスペースNS0に含まれているブロックB0〜B2に対して、ガベージコレクションを実行する。
ガベージコレクションの結果、ブロックB0〜B2内でデータの配置が変化する。このため、ガベージコレクション部G0は、図2において省略されているアドレス変換部15にアドレス変換テーブルT0の更新を指示し、アドレス変換部15は、ガベージコレクション後のデータ配置と整合するように、ネームスペースNS0に対応するアドレス変換テーブルT0を更新する。
図3は、本実施形態に係る受付部13及び設定部14の処理の一例を示すフローチャートである。
ステップS301において、受付部13は、ネームスペースNS0〜NSMの設定コマンドC1を受け付ける。
ステップS302において、設定部14は、ネームスペースNS0〜NSMにブロックB0〜BNを割り当てた情報、インプットネームスペースINS0〜INSPにブロックBを割り当てた情報、インプットネームスペースINS0〜INSPにネームスペースNS0〜NSMを割り当てた情報、インプットネームスペースINS0〜INSPに格納されているデータと当該データに対応するネームスペースNS0〜NSMとの関係を示す情報、その他の各種の情報を含む管理データ18を生成する。
ステップS303において、設定部14は、管理データ18をメモリ12に格納する。
ステップS304において、設定部14は、管理データ18を更新するか否か判断する。例えば、設定部14は、ガベージコレクションの実行に基づいて、インプットネームスペースINS0〜INSPからネームスペースNS0〜NSMへデータが移動した場合に、管理データ18を更新すると判断する。
管理データ18を更新しない場合には、処理はステップS307に移動する。
管理データ18を更新する場合には、ステップS305において、設定部14は、管理データ18を更新する。
ステップS306において、設定部14は、更新された管理データ18をメモリ12に格納する。
ステップS307において、設定部14は、処理を継続するか否か判断する。
処理を継続する場合、処理はステップS304に移動する。
処理を継続しない場合、処理は終了する。
図4は、本実施形態に係るガベージコレクション部G0及びアドレス変換部15の処理の一例を示すフローチャートである。なお、他のガベージコレクション部G1〜GMでも同様の処理が実行される。この図4の処理は、例えば、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。また、ガベージコレクション部G0は、例えば、ガベージコレクション対象のネームスペースNS0のデータ格納状態を監視し、ガベージコレクションの開始を判断するなどのように、自発的に図4の処理を実行してもよい。より具体的に説明すると、例えば、ガベージコレクション部G0は、ネームスペースNS0内の空きブロックが所定数以下、又は、ネームスペースNS0内の全ブロックに対する空きブロックの割合が所定値以下、の場合に、ネームスペースNS0に対するガベージコレクションを実行する。
ステップS401において、ガベージコレクション部G0は、管理データ18に基づいて、ガベージコレクション対象のネームスペースNS0に対応するブロックB0〜B2を選択する。
ステップS402において、ガベージコレクション部G0は、選択されたネームスペースNS0内のブロックB0〜B2に対するガベージコレクションを実行する。このガベージコレクションの実行に基づいて、書き込み部16は、インプットネームスペースINS0からネームスペースNS0へデータを移動させてもよい。
ステップS403において、アドレス変換部15は、ガベージコレクション対象のネームスペースNS0に対応するアドレス変換テーブルT0を、ガベージコレクション後のブロックB0〜B2の状態及びインプットネームスペースINS0のブロックBの状態にそって更新する。
以上説明した本実施形態においては、ネームスペースNS0〜NSMごとに、予め定められた又は情報処理装置2から設定されたブロック量を割り当てることができ、ネームスペースNS0〜NSMに対応するデータを、そのネームスペースNS0〜NSMに割り当てられたブロックB0〜BNに書き込むことができ、ネームスペースNS0〜NSMごとに異なるデータ量を設定することができる。
本実施形態においては、例えばガベージコレクション実行などのような任意のタイミングで、インプットネームスペースINS0〜INSPに格納されていたデータを、ネームスペースNS0〜NSMに移動させることができる。
本実施形態においては、管理データ18に基づいて、インプットネームスペースINS0〜INSPに格納されている各データが、どのネームスペースNS0〜NSMに関係するか認識することができる。
本実施形態においては、インプットネームスペースINS0〜INSPにデータが書き込まれた場合に、インプットネームスペースINS0〜INSPに格納されておりネームスペースNS0〜NSMに対応するデータのデータ量を計算する。そして、ネームスペースNS0〜NSMに割り当てるブロックB0〜BNの数を、当該求められたデータ量の分、差し引く。
これにより、インプットネームスペースINS0〜INSPに格納されているデータの分だけ、対応するネームスペースNS0〜NSMに割り当てられるブロックの数を減らすことができ、効率的にネームスペースNS0〜NSMを割り当てることができる。
本実施形態においては、インプットネームスペースINS0〜INSPに含まれているブロックBの中からデータ移動対象のブロックを選択し、データ移動対象のブロックに格納されている有効データを、当該有効データに対応するネームスペースのブロックに移動することができる。この場合に、インプットネームスペースINS0〜INSPに格納されておりネームスペースNS0〜NSMに対応するデータのデータ量から、データ移動対象のブロックに格納されておりネームスペースNS0〜NSMに対応する有効データのデータ量を差し引く。
これにより、インプットネームスペースINS0〜INSPからネームスペースNS0〜NSMへデータが移動された場合であっても、インプットネームスペースINS0〜INSPに格納されておりネームスペースNS0〜NSMに対応するデータのデータ量を認識することができる。
本実施形態においては、インプットネームスペースINS0〜INSPからネームスペースNS0〜NSMへ古いデータを移動させることができる。
本実施形態においては、例えば、インプットネームスペースINS0〜INSPから有効データの少ないブロックを選択し、当該選択されたブロックからネームスペースNS0〜NSMへ有効データを移動させることができる。また、本実施形態においては、例えば、インプットネームスペースINS0〜INSPに含まれているブロックの中から、有効データのデータ量が第1のしきい値より少ないブロックを、データ移動対象のブロックとして選択することができる。
これにより、インプットネームスペースINS0〜INSPからネームスペースNS0〜NSMへ移動されるデータのデータ量を少なくすることができ、メモリシステム3の性能低下を防止することができる。
本実施形態においては、有効データを移動するために選択されたブロックの有効データのデータ量が第2のしきい値より少ない場合に、インプットネームスペースINS0〜INSPに割り当てるブロック数を少なくすることができる。また、本実施形態においては、有効データを移動するために選択されたブロックの有効データのデータ量が第3のしきい値より大きい場合に、インプットネームスペースINS0〜INSPに割り当てるブロック数を多くすることができる。
これにより、インプットネームスペースINS0〜INSPに割り当てられるブロック数を適切化することができる。
本実施形態においては、インプットネームスペースINS0〜INSPに含まれるブロックの数が第4のしきい値より多い場合に、設定部14によってインプットネームスペースINS0〜INSPからブロックが選択され、書き込み部16によって、選択されたブロックに格納されている有効データが当該有効データに対応するネームスペースNS0〜NSMへ移動される。そして、本実施形態においては、設定部14によってインプットネームスペースINS0〜INSPに含まれるブロックの数が減らされ、ネームスペースNS0〜NSMに含まれるブロック数が増加される。
これにより、インプットネームスペースINS0〜INSPのサイズが大きくなることにより、ネームスペースNS0〜NSMが不足することを防止することができる。
本実施形態においては、ネームスペースNS0〜NSMのうちのどの位置にデータを書き込むか指定することができる。
本実施形態においては、ガベージコレクションを、ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPごとに独立して、効率的に、実行することができる。
本実施形態においては、ガベージコレクションの結果、データを格納していない空ブロックを、ガベージコレクション前のネームスペースから他のネームスペースに変更することができ、他のネームスペース内で空ブロックを確保することができる。これにより、ブロックに対して割り当てられるネームスペースを変更することができ、ネームスペースNS0〜NSM間でウェアレベリングを実行することができ、不揮発性メモリ5を長寿命化することができる。
本実施形態では、ネームスペースNS0〜NSMごとに異なるデータ量の予備領域P0〜PMを設定することができ、ネームスペースNS0〜NSMごとにオーバープロビジョニングを実現することができる。これにより、書き込み速度の高速化及び性能維持を実現し、信頼性を向上させることができる。
本実施形態においては、ネームスペースNS0〜NSMごとにアドレス変換テーブルT0〜TMが管理されており、ネームスペースNS0〜NSMごとに、アドレス変換及びLBAとPBAとの関係の変更を効率的に行うことができる。
本実施形態において、アドレス変換をキーバリュー型検索によって行う場合には、不揮発性メモリ5のデータ容量が大きくても、効率的にアドレス変換を行うことができる。
本実施形態においては、ネームスペースNS0〜NSMごとに高度なメモリ管理を実現することができ、不揮発性メモリ5を長寿命化することができ、コストを削減することができ、ネームスペースNS0〜NSMで区分けされている不揮発性メモリ5に対する書き込み及び読み出しを高速化することができる。
本実施形態においては、ガベージコレクション部G0〜GYに代えて、又は、ガベージコレクション部G0〜GYとともに、ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPごとのコンパクション部を備えるとしてもよい。ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPのそれぞれに対応するコンパクション部は、管理データ18に基づいて、ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPのそれぞれに対してコンパクションを実行する。
本実施形態において、例えば、情報処理装置2とメモリシステム3との間の設定コマンドC1の通信は、省略されてもよい。例えば、アドレス変換部15は、設定部14の一部又は全部の機能を備えるとしてもよい。例えば、アドレス変換部15は、書き込みコマンドC2に付されているNSID6及びLBA7と、LBA7に対応するPBAとを関係付けることで、管理データ18及びネームスペースNS0〜NSMごとのアドレス変換テーブルT0〜TMを生成するとしてもよい。管理データ18とアドレス変換テーブルT0〜TMとは、適宜組み合わせることができ、又は、分割することができる。このように設定コマンドC1の通信が省略され、設定部14の一部又は全部の機能がアドレス変換部15に備えられる構成は、後述の第2の実施形態で説明する。
[第2の実施形態]
本実施形態においては、メモリシステムが複数の情報処理装置からの書き込みデータを書き込み、メモリシステムが読み出しデータを複数の情報処理装置へ送る情報処理システムについて説明する。
図5は、本実施形態に係る情報処理システムの構成の一例を示すブロック図である。
情報処理システム1Aは、複数の情報処理装置D0〜DMとメモリシステム3Aとを含む。複数の情報処理装置D0〜DMのそれぞれは、上記の情報処理装置2と同様の機能を備える。メモリシステム3Aは、主に、アドレス変換テーブルT0〜TM及び管理データ18に代えて変換テーブル(変換データ)20を備える点、複数の情報処理装置D0〜DMとの間でデータ、情報、信号、コマンドなどの送信及び受信を行う点、設定部14の機能がアドレス変換部15に備えられる点で、上記のメモリシステム3と相違している。本実施形態においては、上記第1の実施形態と異なる点を説明し、同じ部分又は実質的に同じ部分については説明を省略するか又は簡単に説明する。
メモリシステム3Aは、例えばクラウドコンピューティングシステムに備えられる。メモリシステム3Aは、複数の情報処理装置D0〜DMによってシェアされる場合を例として説明するが、例えば複数のユーザによってシェアされてもよい。複数の情報処理装置D0〜DMの少なくとも1つは、仮想マシンでもよい。
本実施形態において、コマンドに付されるNSIDは、ネームスペースのアクセス鍵として用いられる。
本実施形態においては、複数の情報処理装置D0〜DMは、自己に対応するネームスペースNS0〜NSMに対してアクセス権限を持つとする。しかしながら、1つの情報処理装置が1以上のネームスペースに対してアクセス権限を持つとしてもよく、複数の情報処理装置が共通のネームスペースに対してアクセス権限を持つとしてもよい。
情報処理装置D0〜DMのそれぞれは、書き込みコマンドC2とともに、例えば自己に対応する書き込み先スペースを示すNSID6W、書き込み先を示すLBA7W、データサイズ8、及び、書き込みデータ9Wを、メモリシステム3Aへ送る。
情報処理装置D0〜DMのそれぞれは、読み出しコマンドC3とともに、例えば自己に対応する読み出し先スペースを示すNSID6R、読み出し先を示すLBA7Rを、メモリシステム3Aへ送る。
情報処理装置D0〜DMのそれぞれは、読み出しコマンドC3に対応する読み出しデータ9R、又は、読み出し不可であったことを示す情報を、メモリシステム3Aから受ける。
メモリシステム3Aは、コントローラ4Aと不揮発性メモリ5とを含む。
コントローラ4Aは、インタフェース部19、記憶部10、バッファメモリF0〜FM、プロセッサ11を含む。本実施形態においては、コントローラ4Aに備えられるプロセッサの数は1以上で自由に変更可能である。
インタフェース部19は、例えば情報処理装置D0〜DMなどのような外部装置との間で、データ、情報、信号、コマンドなどの送信及び受信を行う。
記憶部10は、変換テーブル20を格納する。なお、変換テーブル20の一部又は全部は、メモリ12などのような他のメモリに格納されてもよい。
変換テーブル20は、LBA、PBA、NSID、データサイズ、データがインプットネームスペースに格納されているか否かを示す情報(以下、インプットフラグという)を互いに関係付けたデータである。この変換テーブル20については、図6を用いて後で説明する。
バッファメモリF0〜FMは、それぞれ、ネームスペースNS0〜NSMに対する書き込みバッファメモリ及び読み出しバッファメモリとして使用される。
プロセッサ11は、プログラム17を格納するメモリ12、受付部13、アドレス変換部15、書き込み部16、読み出し部21、ガベージコレクション部G0〜GYを含む。プロセッサ11は、プログラム17を実行することにより、受付部13、アドレス変換部15、書き込み部16、読み出し部21、ガベージコレクション部G0〜GYとして機能する。
受付部13は、データ書き込み時に、情報処理装置D0〜DMからインタフェース部19経由で書き込みコマンドC2、NSID6W、LBA7W、データサイズ8、書き込みデータ9Wを受け付ける。
受付部13は、データ読み出し時に、情報処理装置D0〜DMからインタフェース部19経由で読み出しコマンドC3、NSID6R、LBA7Rを受け付ける。
アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたLBA7WとNSID6Wに基づいて、NSID6Wの示すネームスペースに対応するインプットネームスペースにおける書き込み先のPBAを決定し、LBA7W、NSID6W、決定されたインプットネームスペースのPBA、データサイズ、インプットネームスペースにデータが格納されていることを示すインプットフラグYを関係付けた状態で変換テーブル20を更新する。
アドレス変換部15は、インプットネームスペースからネームスペースへデータが移動される場合に、ネームスペースにおける書き込み先のPBAを決定し、LBA7W、NSID6W、決定されたネームスペースのPBA、データサイズ、インプットネームスペースにデータが格納されていないことを示すインプットフラグNを関係付けた状態で変換テーブル20を更新する。
アドレス変換部15は、受付部13によって読み出しコマンドC3が受け付けられた場合に、読み出しコマンドC3に付されていたLBA7RとNSID6Rと変換テーブル20とに基づいて、NSID6Rの示すネームスペース、又は、NSID6Rの示すネームスペースに対応するインプットネームスペースにおける読み出し先のPBAを決定する。
書き込み部16は、NSID6Wの示すネームスペースに対応するバッファメモリを経由して、NSID6Wの示すネームスペースに対応するインプットネームスペースにおけるPBAの示す位置に、書き込みデータ9Wを書き込む。その後、書き込み部16は、インプットネームスペースからアドレス変換部15によって得られたNSID6Wの示すネームスペースにおけるPBAの示す位置に、書き込みデータ9Wを書き込む。
読み出し部21は、NSID6Rの示すネームスペースに対応するバッファメモリを経由して、NSID6Rの示すネームスペース、又は、当該ネームスペースに対応するインプットネームスペースにおけるPBAの示す位置から、読み出しデータ9Rを読み出す。そして、読み出し部21は、インタフェース部19経由で、読み出しコマンドC3を発行した情報処理装置に、読み出しデータ9Rを送る。
本実施形態において、ガベージコレクション部G0〜GYは、変換テーブル20に基づいて、ネームスペースNS0〜NSM及びインプットネームスペースINS0〜INSPごとにガベージコレクションを実行する。
図6は、本実施形態に係る変換テーブル20の一例を示すデータ構造図である。
変換テーブル20は、LBA、PBA、NSID、データサイズ、インプットフラグを関係付けて管理する。例えば、変換テーブル20は、LBA200、PBA300、NS0、データサイズZ、データがインプットネームスペースに格納されていないことを示すインプットフラグNを関係付けている。例えば、変換テーブル20は、LBA201、PBA301、NS0、データサイズZ、データがインプットネームスペースに格納されていることを示すインプットフラグYを関係付けている。例えば、変換テーブル20は、LBA200、PBA399、NSM、データサイズZ、データがインプットネームスペースに格納されていないことを示すインプットフラグNを関係付けている。
本実施形態においては、変換テーブル20でデータサイズが管理されている。しかしながら、データサイズが一定の場合には、変換テーブル20からデータサイズを削除してもよい。データサイズが一定の場合には、データサイズに代えて、インプットネームスペースINS0〜INSPの各ブロックB、ネームスペースNS0〜NSMの各ブロックB0〜BNの有効データの個数に基づいて、各ブロックB,B0〜BNの有効データのデータ量が認識されるとしてもよい。
本実施形態においては、変換テーブル20でインプットフラグが管理されている。しかしながら、PBAに基づいて、データがインプットネームスペースINS0〜INSPとネームスペースNS0〜NSMとのうちのどちらに格納されているか認識できるため、変換テーブル20からインプットフラグが省略されてもよい。
アドレス変換部15は、例えば、LBA200とネームスペースNS0を示すNSIDとに関係するPBA300と、LBA200とネームスペースNSMを示すNSIDとに関係するPBA399とが互いに異なるように、PBAの決定を行う。
これにより、アドレス変換部15は、LBA200とともに受け付けられたNSIDがネームスペースNS0を示す場合にはPBA300を選択することができ、LBA200とともに受け付けられたNSIDがネームスペースNSMを示す場合にはPBA399を選択することができる。
したがって、複数の情報処理装置D0〜DMの間で同じ論理アドレスが使用される場合であっても、メモリシステム3Aを複数の情報処理装置D0〜DMでシェアすることができる。
図7は、本実施形態に係るメモリシステム3Aの第1の書き込み処理の一例を示すフローチャートである。
この図7の説明では、複数の情報処理装置D0〜DMのうちの情報処理装置D0から書き込みコマンドC2が発行され、書き込みコマンドC2にはネームスペースNS0を示すNSID6Wが付されている場合を例として説明する。しかしながら、情報処理装置D1〜DMから書き込みコマンドC2が発行された場合も同様である。また、書き込みコマンドC2に他のネームスペースNS1〜NSMのいずれかを示すNSID6Wが付されている場合も同様である。
ステップS701において、受付部13は、情報処理装置D0からインタフェース部19経由で書き込みコマンドC2、NSID6W、LBA7W、データサイズ8、書き込みデータ9Wを受け付ける。
ステップS702において、アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたLBA7WとNSID6Wに基づいて、NSID6Wの示すネームスペースNS0に対応するインプットネームスペースINS0における書き込み先のPBAを決定する。
ステップS703において、アドレス変換部15は、LBA7W、NSID6W、決定されたPBA、データサイズZ、インプットネームスペースにデータが格納されていることを示すインプットフラグYを関係付けた状態で変換テーブル20を更新する。
ステップS704において、書き込み部16は、NSID6Wの示すネームスペースNS0に対応するバッファメモリF0を経由して、NSID6Wの示すネームスペースNS0に対応するインプットネームスペースINS0におけるPBAの示す位置に、書き込みデータ9Wを書き込む。
図8は、本実施形態に係るメモリシステム3Aの第2の書き込み処理の一例を示すフローチャートである。
この図8の説明では、インプットネームスペースINS0からネームスペースNS0へ有効データが移動される場合を例として説明する。しかしながら、インプットネームスペースINS1〜INSPからネームスペースNS0〜NSMへ有効データが移動される場合も同様である。
ステップS801において、書き込み部16は、例えば、ガベージコレクションが実行されたか否かを判断するなどにより、インプットネームスペースINS0からネームスペースNS0へ有効データを移動させるか判断する。
有効データを移動させると判断されなかった場合、処理は、ステップS805に移る。
有効データを移動させると判断された場合、ステップS802において、アドレス変換部15は、インプットネームスペースINS0に含まれているブロックBの中からデータ移動対象のブロックを選択する。
ステップS803において、書き込み部16は、データ移動対象のブロックに格納されている有効データを当該有効データに対応するネームスペースNS0のブロックに移動する。
ステップS804において、アドレス変換部15は、有効データに対応するLBA、ネームスペースNS0におけるPBA、ネームスペースNS0を示すNSID、データサイズZ、データがインプットネームスペースに格納されていないことを示すインプットフラグNを関係付けるように、変換テーブル20を更新する。
ステップS805において、第2の書き込み処理は継続されるか否か判断する。
第2の書き込み処理が継続される場合、第2の書き込み処理はステップS801に移動する。
第2の書き込み処理が継続されない場合、第2の書き込み処理は終了する。
図9は、本実施形態に係るメモリシステム3Aの読み出し処理の一例を示すフローチャートである。
この図9の説明では、複数の情報処理装置D0〜DMのうちの情報処理装置DMから読み出しコマンドC3が発行され、読み出しコマンドC3にはネームスペースNSMを示すNSID6Rが付されている場合を例として説明する。しかしながら、情報処理装置D0〜DM-1から読み出しコマンドC3が発行された場合も同様である。また、読み出しコマンドC3に他のネームスペースNS0〜NSM-1のいずれかを示すNSID6Rが付されている場合も同様である。
ステップS901において、受付部13は、情報処理装置DMからインタフェース部19経由で読み出しコマンドC3、NSID6R、LBA7Rを受け付ける。
ステップS902において、アドレス変換部15は、受付部13によって読み出しコマンドC3が受け付けられた場合に、読み出しコマンドC3に付されていたLBA7RとNSID6Rと変換テーブル20とに基づいて、インプットネームスペースINSP、又は、ネームスペースNSMにおける読み出し先のPBAを決定する。
ステップS903において、読み出し部21は、NSID6Rの示すネームスペースNSMに対応するバッファメモリFMを経由して、NSID6Rの示すネームスペースNSM、又は、ネームスペースNSMに対応するインプットネームスペースINSPにおけるPBAの示す位置から、読み出しデータ9Rを読み出し、インタフェース部19経由で、読み出しコマンドC3を発行した情報処理装置DMに、読み出しデータ9Rを送る。
以上説明した本実施形態においては、不揮発性メモリ5が複数のインプットネームスペースINS0〜INSP及びネームスペースNS0〜NSMに区切られる。情報処理装置D0〜DMは、複数のインプットネームスペースINS0〜INSP及びネームスペースNS0〜NSMのうち自己がアクセス権限を持つネームスペースをアクセス可能である。これにより、データセキュリティを向上させることができる。
メモリシステム3Aのコントローラ4Aは、インプットネームスペースINS0〜INSP及びネームスペースNS0〜NSMごとに、独立の制御を行う。これにより、インプットネームスペースINS0〜INSP及びネームスペースNS0〜NSMごとに使用条件を切り替えることができる。
メモリシステム3Aは、LBAとPBAとNSIDとを関係付けているため、例えば互いに独立の複数の情報処理装置から同じLBAを受信した場合であっても、NSIDによりデータを区別することができる。
上記各実施形態において、テーブル形式のデータは、例えばリスト形式などの他のデータ構造で実装されてもよい。
[第3の実施形態]
本実施形態においては、上記第1及び第2の実施形態で説明した情報処理システム1,1Aの詳細構成について説明する。
図10は、本実施形態に係る情報処理システムの詳細構成の一例を示すブロック図である。
この図10において、情報処理システム1Bは、情報処理装置2Bとメモリシステム3Bとを含む。情報処理システム1Bは、上記第2の実施形態と同様に、複数の情報処理装置を備えるとしてもよい。すなわち、上記第1及び第2の実施形態の情報処理装置2、D0〜DMのいずれかは、情報処理装置2Bに対応する。
上記第1及び第2の実施形態のメモリシステム3,3Aは、メモリシステム3Bに対応する。
上記第1及び第2の実施形態のプロセッサ11は、CPU43F,43Bに対応する。
上記第1の実施形態のアドレス変換テーブルT0〜TM、及び、上記第2の実施形態の変換テーブル20は、LUT45に対応する。
上記第1及び第2の実施形態の記憶部10は、DRAM47に対応する。
上記第2の実施形態のインタフェース部19は、ホストインタフェース41及びホストインタフェースコントローラ42に対応する。
上記第1及び第2の実施形態のバッファメモリF0〜FMは、ライトバッファWB及びリードバッファRBに対応する。
情報処理装置2Bは、ホスト装置として機能する。
コントローラ4は、フロントエンド4Fと、バックエンド4Bとを備える。
フロントエンド(ホスト通信部)4Fは、ホストインタフェース41、ホストインタフェースコントローラ42、暗号化/復号化部44、及びCPU43Fを備える。
ホストインタフェース41は、情報処理装置2Bとの間で、要求(書き込みコマンド、読み出しコマンド、消去コマンドなど)、LBA及びデータなどを通信する。
ホストインタフェースコントローラ(制御部)42は、CPU43Fの制御に基づいて、上記ホストインタフェース41の通信を制御する。
暗号化/復号化部(Advanced Encryption Standard(AES))44は、データ書き込み動作において、ホストインタフェースコントローラ42から送信される書き込みデータ(平文)を暗号化する。暗号化/復号化部44は、データ読み出し動作において、バックエンド4BのリードバッファRBから送信される暗号化された読み出しデータを復号化する。なお、この暗号化/復号化部44を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
CPU43Fは、フロントエンド4Fの上記各構成41,42,44を制御し、フロントエンド4Fの全体の動作を制御する。
バックエンド(メモリ通信部)4Bは、ライトバッファWB、リードバッファRB、LUT45、DDRC46、DRAM47、DMAC48、ECC49、ランダマイザRZ、NANDC50、及びCPU43Bを備える。
ライトバッファ(ライトデータ転送部)WBは、情報処理装置2Bから送信された書き込みデータを一時的に格納する。具体的には、ライトバッファWBは、当該書き込みデータが不揮発性メモリ5に適した所定のデータサイズになるまで、一時的にデータを格納する。
リードバッファ(リードデータ転送部)RBは、不揮発性メモリ5から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファRBにおいて、読み出しデータは、情報処理装置2Bに適した順序(情報処理装置2Bが指定した論理アドレスLBAの順序)になるように並び替えられる。
LUT45は、論理アドレスLBAを所定の物理アドレスPBAに変換するためのデータである。
DDRC46は、DRAM47におけるDDR(Double Data Rate)を制御する。
DRAM47は、例えば、LUT45を格納する揮発性のメモリである。
DMAC(Direct Memory Access Controller)48は、内部バスIBを介して、書き込みデータや読み出しデータなどを転送する。図10においては1つのDMAC48が図示されているが、コントローラ4は、2以上のDMAC48を備えるとしてもよい。DMAC48は、必要に応じて、コントローラ4内の様々な位置に設定される。
ECC(誤り訂正部)49は、ライトバッファWBから送信される書き込みデータにECC(Error Correcting Code)を付加する。ECC49は、リードバッファRBに送信する際に、付加したECCを用いて、不揮発性メモリ5から読み出した読み出しデータを必要に応じて訂正する。
ランダマイザRZ(又はスクランブラ)は、データ書き込み動作の際に、書き込みデータが不揮発性メモリ5の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる。このように、書き込みデータを分散させることで、書き込み回数を平準化でき、不揮発性メモリ5のメモリセルのセル寿命を長期化できる。そのため、不揮発性メモリ5の信頼性を向上できる。また、データ読み出し動作の際に、不揮発性メモリ5から読み出された読み出しデータはランダマイザRZを通過する。
NANDC(NAND Controller)50は、所定の速度の要求を満たすため、複数のチャンネル(ここでは、4つのチャンネルCH0〜CH3)を用いて、並列に不揮発性メモリ5にアクセスする。
CPU43Bは、バックエンド4Bの上記各構成(45〜50,RZ)を制御し、バックエンド4Bの全体の動作を制御する。
なお、図10に示したコントローラ4の構成は例示であり、この構成に限定されることはない。
図11は、本実施形態に係るストレージシステムを示す斜視図である。
ストレージシステム100は、SSDとしてのメモリシステム3Bを備える。
メモリシステム3Bは、例えば比較的小型のモジュールであり、その外形寸法の一例は、20mm×30mm程度である。なお、メモリシステム3Bの大きさ及び寸法は、これに限られるものではなく、種々の大きさのものに適宜変更可能である。
また、メモリシステム3Bは、例えば、企業(エンタープライズ)で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置2Bに装着されて使用可能である。そのため、メモリシステム3Bは、エンタープライズ用SSD(eSSD)であってもよい。
メモリシステム3Bは、例えば上方に開口した複数のコネクタ(例えばスロット)30を備える。各コネクタ30は、例えばSAS(Serial Attached SCSI)コネクタ等である。このSASコネクタによれば、6GbpsのDual Portにより、情報処理装置2Bと各メモリシステム3Bとが互いに高速通信を行うことが可能である。なお、これに限られず、各コネクタ30は、例えば、PCIe(PCI Express)又はNVMe(NVM Express)等であってもよい。
複数のメモリシステム3Bは、情報処理装置2Bのコネクタ30にそれぞれ装着され、略鉛直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム3Bをコンパクトに纏めて実装可能であり、メモリシステム3Bの小型化を図ることができる。さらに、本実施形態に係るメモリシステム3Bの各形状は、2.5型のSFF(Small Form Factor)である。このような形状により、メモリシステム3Bは、エンタープライズ用HDD(eHDD)と互換形状(コンパチ形状)を図ることができ、eHDDとの容易なシステム互換性を実現することができる。
なお、メモリシステム3Bは、エンタープライズ用に限られない。例えば、メモリシステム3Bは、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。
以上説明したように、本実施形態で説明した構成を持つ情報処理システム1B及びストレージシステム100においては、大容量の記憶に、上記第1及び第2の実施形態と同様の効果を得ることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。