特許第6479639号(P6479639)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

特許6479639情報処理装置、プログラム、及び、情報処理システム
<>
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000002
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000003
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000004
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000005
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000006
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000007
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000008
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000009
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000010
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000011
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000012
  • 特許6479639-情報処理装置、プログラム、及び、情報処理システム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6479639
(24)【登録日】2019年2月15日
(45)【発行日】2019年3月6日
(54)【発明の名称】情報処理装置、プログラム、及び、情報処理システム
(51)【国際特許分類】
   G06F 12/02 20060101AFI20190225BHJP
   G06F 12/00 20060101ALI20190225BHJP
【FI】
   G06F12/02 510A
   G06F12/00 597U
【請求項の数】10
【全頁数】23
(21)【出願番号】特願2015-242243(P2015-242243)
(22)【出願日】2015年12月11日
(65)【公開番号】特開2016-115355(P2016-115355A)
(43)【公開日】2016年6月23日
【審査請求日】2017年8月4日
(31)【優先権主張番号】62/090,690
(32)【優先日】2014年12月11日
(33)【優先権主張国】US
(31)【優先権主張番号】14/656,413
(32)【優先日】2015年3月12日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】東芝メモリ株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】菅野 伸一
(72)【発明者】
【氏名】橋本 大輔
【審査官】 滝谷 亮一
(56)【参考文献】
【文献】 特表2009−503629(JP,A)
【文献】 特開2013−161222(JP,A)
【文献】 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名)
G06F 12/02
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
メモリシステムと通信する情報処理装置であって、
前記メモリシステムは、複数の第1の消去単位エリアを含む第1のスペースと、複数の第2の消去単位エリアを含む第2のスペースとを具備する不揮発性メモリと、前記不揮発性メモリを制御するコントローラとを具備し、
前記情報処理装置は、前記メモリシステムの外部プロセッサを具備し、
前記プロセッサは、
第1オブジェクトに対応する第1の論理アドレス空間に対する第1の書き込み頻度と、第2オブジェクトに対応する第2の論理アドレス空間に対する第2の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第1及び第2の論理アドレス空間を前記第1のスペースに割り当て、第3オブジェクトに対応する第3の論理アドレス空間に対する第3の書き込み頻度と、第4オブジェクトに対応する第4の論理アドレス空間に対する第4の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第3及び第4の論理アドレス空間を前記第2のスペースに割り当て、
書き込みコマンド、前記書き込みコマンドに対応する論理アドレス空間に割り当てられたスペースの識別データ、書き込みデータ、前記書き込みデータの論理アドレスを前記コントローラへ送信し、
読み出しコマンド、前記識別データ、読み出しデータの論理アドレスを前記コントローラへ送信し、前記コントローラから前記読み出しデータを受信する、
情報処理装置。
【請求項2】
前記プロセッサは、前記第1乃至第4の論理アドレス空間ごとに前記第1乃至第4の書き込み頻度を算出し、
前記第1乃至第4の論理アドレス空間ごとの前記第1乃至第4の書き込み頻度に基づいて、前記第1及び第2の論理アドレス空間を前記第1のスペースに割り当て、前記第3及び第4の論理アドレス空間を前記第2のスペースに割り当てる、
請求項1の情報処理装置。
【請求項3】
前記プロセッサは、前記第1のオブジェクトを示す第1のオブジェクト識別データ及び前記第1の書き込み頻度に基づいて、前記第1のオブジェクトに対応する前記第1の論理アドレス空間を前記第1のスペースに割り当て、前記第2のオブジェクトを示す第2のオブジェクト識別データ及び前記第2の書き込み頻度に基づいて、前記第2のオブジェクトに対応する前記第2の論理アドレス空間を前記第1のスペースに割り当て、前記第3のオブジェクトを示す第3のオブジェクト識別データ及び前記第3の書き込み頻度に基づいて、前記第3のオブジェクトに対応する前記第3の論理アドレス空間を前記第2のスペースに割り当て、前記第4のオブジェクトを示す第4のオブジェクト識別データ及び前記第4の書き込み頻度に基づいて、前記第4のオブジェクトに対応する前記第4の論理アドレス空間を前記第2のスペースに割り当てる、
請求項1の情報処理装置。
【請求項4】
前記スペースの前記識別データは、オブジェクトに対応する論理アドレス空間に割り当てられたスペースを示し、
前記プロセッサは、前記書き込みコマンド前記スペースの前記識別データ、前記書き込みデータ、前記書き込みデータの前記論理アドレスに加えて、前記書き込みデータのサイズを送信する、
請求項1乃至請求項3のうちのいずれか1項の情報処理装置。
【請求項5】
コンピュータを、
割り当て部と発送部として機能させ、
前記コンピュータは、メモリシステムと通信するプロセッサを具備し、
前記メモリシステムは、複数の第1の消去単位エリアを含む第1のスペースと、複数の第2の消去単位エリアを含む第2のスペースとを具備する不揮発性メモリと、前記不揮発性メモリを制御するコントローラとを具備し、
前記割り当て部は、前記メモリシステムの外部あり、
前記割り当て部は、第1オブジェクトに対応する第1の論理アドレス空間に対する第1の書き込み頻度と、第2オブジェクトに対応する第2の論理アドレス空間に対する第2の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第1及び第2の論理アドレス空間を前記第1のスペースに割り当て、
前記割り当て部は、第3オブジェクトに対応する第3の論理アドレス空間に対する第3の書き込み頻度と、第4オブジェクトに対応する第4の論理アドレス空間に対する第4の書き込み頻度とが異なる書き込み頻度グループに属する場合に、前記第3及び第4の論理アドレス空間を前記第2のスペースに割り当て、
前記発送部は、書き込みコマンド、前記書き込みコマンドに対応する論理アドレス空間に割り当てられたスペースの識別データ、書き込みデータ、前記書き込みデータの論理アドレスを前記コントローラへ送信し、
前記発送部は、読み出しコマンド、前記識別データ、読み出しデータの論理アドレスを前記コントローラへ送信し、前記コントローラから前記読み出しデータを受信する、
プログラム。
【請求項6】
前記コンピュータを、さらに、算出部として機能させ、
前記算出部は、前記第1乃至第4の論理アドレス空間ごとに前記第1乃至第4の書き込み頻度を算出し、
前記割り当て部は、前記第1乃至第4の論理アドレス空間ごとの前記第1乃至第4の書き込み頻度に基づいて、前記第1及び第2の論理アドレス空間を前記第1のスペースに割り当て、前記第3及び第4の論理アドレス空間を前記第2のスペースに割り当てる、
請求項5のプログラム。
【請求項7】
前記割り当て部は、前記第1のオブジェクトを示す第1のオブジェクト識別データ及び前記第1の書き込み頻度に基づいて、前記第1のオブジェクトに対応する前記第1の論理アドレス空間を前記第1のスペースに割り当て、前記第2のオブジェクトを示す第2のオブジェクト識別データ及び前記第2の書き込み頻度に基づいて、前記第2のオブジェクトに対応する前記第2の論理アドレス空間を前記第1のスペースに割り当て、前記第3のオブジェクトを示す第3のオブジェクト識別データ及び前記第3の書き込み頻度に基づいて、前記第3のオブジェクトに対応する前記第3の論理アドレス空間を前記第2のスペースに割り当て、前記第4のオブジェクトを示す第4のオブジェクト識別データ及び前記第4の書き込み頻度に基づいて、前記第4のオブジェクトに対応する前記第4の論理アドレス空間を前記第2のスペースに割り当てる、
請求項5のプログラム。
【請求項8】
前記スペースの前記識別データは、オブジェクトに対応する論理アドレス空間に割り当てられたスペースを示し、
前記発送部は、前記書き込みコマンド前記スペースの前記識別データ、前記書き込みデータ、前記書き込みデータの前記論理アドレスに加えて、前記書き込みデータのサイズを送信する、
請求項5乃至請求項7のうちのいずれか1項のプログラム。
【請求項9】
請求項1乃至請求項4のいずれか1項の前記情報処理装置と前記メモリシステムとを具備する情報処理システムであって、
前記コントローラは、
前記複数の第1の消去単位エリアを前記第1のスペースに割り当て、前記複数の第2の消去単位エリアを前記第2のスペースに割り当て、
前記書き込みコマンド、前記識別データ、前記書き込みデータ、前記論理アドレスを、前記情報処理装置から受信し、
前記論理アドレス及び前記識別データと、前記識別データによって示される前記スペースに対応する物理アドレスとを関連付け、
前記物理アドレスによって示される位置に、前記書き込みデータを書き込む、
情報処理システム。
【請求項10】
請求項1乃至請求項4のいずれか1項の前記情報処理装置と前記メモリシステムとを具備する情報処理システムであって、
前記コントローラは、
前記読み出しコマンド、前記識別データ、前記論理アドレスを、前記情報処理装置から受信し、
前記論理アドレ及び前記識別データと、前記識別データによって示される前記スペースに対応する物理アドレスとの関連付けに基づいて、前記論理アドレスを前記物理アドレスへ変換し、
前記読み出しデータを、前記物理アドレスによって示される位置から読み出し、
前記読み出しデータを、前記情報処理装置へ送信する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、情報処理装置、プログラム、及び、情報処理システムに関する。
【背景技術】
【0002】
ソリッドステートドライブ(SSD)は、不揮発性半導体メモリを備え、ハードディスクドライブ(HDD)と同様のインタフェースを持つ。例えば、SSDは、データ書き込み時に、書き込みコマンド、書き込み先のLogical Block Addressing(LBA)、書き込みデータを情報処理装置から受け、Look Up Table(LUT)に基づいて、LBAをPhysical Block Addressing(PBA)に変換し、PBAの示す位置に書き込みデータを書き込む。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第7739444号明細書
【特許文献2】米国特許出願公開第2013/0138867号明細書
【特許文献3】米国特許出願公開第2014/0195725号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本実施形態は、不揮発性メモリへコマンドを送る情報処理装置、プログラム、及び、情報処理システムを提供する。
【課題を解決するための手段】
【0005】
本実施形態によれば、情報処理装置は、メモリシステムと通信する。メモリシステムは、複数の第1の消去単位エリアを含む第1のスペースと、複数の第2の消去単位エリアを含む第2のスペースとを具備する不揮発性メモリと、不揮発性メモリを制御するコントローラとを含む。情報処理装置は、メモリシステムの外部プロセッサを含む。プロセッサは、第1のオブジェクトに対応する第1の論理アドレス空間に対する第1の書き込み頻度と、第2のオブジェクトに対応する第2の論理アドレス空間に対する第2の書き込み頻度とが異なる書き込み頻度グループに属する場合に、第1及び第2の論理アドレス空間を第1のスペースに割り当て、第3のオブジェクトに対応する第3の論理アドレス空間に対する第3の書き込み頻度と、第4のオブジェクトに対応する第4の論理アドレス空間に対する第4の書き込み頻度とが異なる書き込み頻度グループに属する場合に、第3及び第4の論理アドレス空間を第2のスペースに割り当て、書き込みコマンド、書き込みコマンドに対応する論理アドレス空間に割り当てられたスペースの識別データ、書き込みデータ、書き込みデータの論理アドレスをコントローラへ送信し、読み出しコマンド、識別データ、読み出しデータの論理アドレスをコントローラへ送信し、コントローラから読み出しデータを受信する。
【図面の簡単な説明】
【0006】
図1】第1の実施形態に係る情報処理システムの構成の一例を示すブロック図。
図2】LBA空間と、ネームスペースと、アドレス変換テーブルと、ガベージコレクション部と、管理データとの関係の一例を示すブロック図。
図3】第1の実施形態に係る受付部及び設定部の処理の一例を示すフローチャート。
図4】第1の実施形態に係るガベージコレクション部及びアドレス変換部の処理の一例を示すフローチャート。
図5】第1の実施形態に係るネームスペースの割り当て状態を例示するブロック図。
図6】第1の実施形態に係る情報処理装置の処理の一例を示すフローチャート。
図7】第2の実施形態に係る情報処理システムの構成の一例を示すブロック図。
図8】第2の実施形態に係る変換テーブルの一例を示すデータ構造図。
図9】第2の実施形態に係るメモリシステムの書き込み処理の一例を示すフローチャート。
図10】第2の実施形態に係るメモリシステムの読み出し処理の一例を示すフローチャート。
図11】第3の実施形態に係る情報処理システムの構成の一例を示すブロック図。
図12】第3の実施形態に係るストレージシステムを示す斜視図。
【発明を実施するための形態】
【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】
本実施形態において、複数のネームスペースNS0〜NSM(Mは1以上の整数)のそれぞれは、不揮発性メモリ5に含まれる複数のブロックB0〜BN(NはM以上の整数)を区分けすることによって得られるスペースである。本実施形態では、ネームスペースNS0がブロックB0〜B2を含み、ネームスペースNSMがブロックBN-2〜BNを含む。他のネームスペースNS1〜NSM-1もネームスペースNS0,NSMと同様であるとする。なお、本実施形態におけるネームスペースNS0〜NSMとブロックB0〜BNとの間の割り当て関係は一例であり、1つのネームスペースに割り当てられるブロックの個数などは適宜変更可能である。複数のネームスペースの間でブロックの個数は異なってもよい。
【0018】
コントローラ4は、記憶部10、バッファメモリF0〜FM、プロセッサ11を含む。
【0019】
記憶部10は、各ネームスペースNS0〜NSMに対応するアドレス変換テーブルT0〜TMを格納する。例えば、記憶部10は、作業用メモリとして使用されてもよい。記憶部10は、例えばDRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)などのような揮発性メモリでもよく、又は、不揮発性メモリでもよい。記憶部10は、不揮発性メモリと揮発性メモリとの組み合わせでもよい。
【0020】
アドレス変換テーブルT0〜TMは、それぞれ、ネームスペースNS0〜NSMに対するデータ書き込みにおいて、LBAとPBAとを関係付けたデータであり、例えばLUTである。なお、アドレス変換テーブルT0〜TMの一部又は全部は、メモリ12などのような他のメモリに格納されてもよい。
【0021】
バッファメモリF0〜FMは、それぞれ、ネームスペースNS0〜NSMに対するデータ書き込みにおいて、書き込みデータを書き込みに適したデータ量になるまで格納する。
【0022】
プロセッサ11は、メモリ12、受付部13、設定部14、アドレス変換部15、書き込み部16、ガベージコレクション部G0〜GMを含む。
【0023】
メモリ12は、プログラム17及び管理データ18を格納する。本実施形態において、メモリ12は、プロセッサ11に含まれているが、プロセッサ11の外部に備えられてもよい。メモリ12は、例えば不揮発性のメモリとする。
【0024】
プログラム17は、例えばファームウェアである。プロセッサ11は、プログラム17を実行することにより、受付部13、設定部14、アドレス変換部15、書き込み部16、ガベージコレクション部G0〜GMとして機能する。なお、プログラム17及び管理データ18の一部又は全部は、記憶部10などのような他のメモリに格納されてもよい。
【0025】
管理データ18は、ネームスペースNS0〜NSMとブロックB0〜BNとの関係を示すデータである。管理データ18を参照することにより、どのブロックがどのネームスペースに所属しているか判断可能である。
【0026】
受付部13は、情報処理装置2から、不揮発性メモリ5の各ブロックと、各ネームスペースとを関係付けるための設定コマンドC1を受け付ける。また、受付部13は、情報処理装置2から、書き込みコマンドC2、NSID6、LBA7、データサイズ8、データ9を受け付ける。
【0027】
以下の説明では、説明を簡略化するため、書き込みコマンドC2に、ネームスペースNS0を示すNSID6が付されている場合について説明する。しかしながら、書き込みコマンドC2に、他のネームスペースNS1〜NSMを示すNSIDを付すことも可能である。
【0028】
設定部14は、受付部13によってネームスペースの設定コマンドC1が受け付けられた場合に、設定コマンドC1に基づいて、ネームスペースNS0〜NSMに、ブロックB0〜BNを割り当てて管理データ18を生成し、管理データ18をメモリ12に格納する。ネームスペースNS0〜NSMとブロックB0〜BNとの間の割り当ては、設定部14がネームスペースNS0〜NSMのデータ格納状態を監視し、各ネームスペースNS0〜NSMで、データ容量、アクセス頻度、書き込み頻度、アクセス回数、書き込み回数、又は、データ格納率が同レベルとなるように行われてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。
【0029】
ここで、データ容量とは書き込み可能なデータサイズであり、アクセス頻度又は書き込み頻度とは単位時間当たりのアクセス回数又は書き込み回数であり、データ格納率とは、ある領域サイズに対するデータ格納済みの領域サイズの割合を示す値とする。
【0030】
また、設定部14は、ネームスペースNS0〜NSMごとに実行されたガベージコレクションの結果に基づいて、データを格納していない空ブロックを、ガベージコレクション前に属するネームスペースから他のネームスペースに変更し、管理データ18を更新する。これにより、ネームスペースNS0〜NSM間でウェアレベリング(Wear Leveling)を実行することができる。ネームスペースNS0〜NSMとブロックB0〜BNとの間の割り当て変更は、設定部14がネームスペースNS0〜NSMのデータ格納状態を監視し、上記の管理データ18の生成時と同様に監視結果に応じて行われてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。例えば、ネームスペースNS0〜NSMの変更は、データ容量の少ない、アクセス頻度の低い、アクセス回数の少ない、又は、データ格納率の低いネームスペースの空ブロックを、データ容量の多い、アクセス頻度の高い、アクセス回数の多い、又は、データ格納率の高いネームスペースに変換する。
【0031】
さらに、設定部14は、オーバープロビジョニング(Over Provisioning)のために、設定コマンドC1に基づいて、ネームスペースNS0〜NSMごとに、不揮発性メモリ5に、普段使用されない予備領域P0〜PMを設定する。予備領域P0〜PMの設定は、設定部14がネームスペースNS0〜NSMの各データ容量などに応じて行うとしてもよく、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。
【0032】
本実施形態において、予備領域P0〜PMは、不揮発性メモリ5に確保されているが、不揮発性メモリ5ではないメモリシステム3内の他のメモリに確保されていてもよい。例えば、予備領域P0〜PMは、DRAM、SRAMなどのメモリに確保されてもよい。
【0033】
アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたNSID6の示すネームスペースNS0に対応するアドレス変換テーブルT0に対して、書き込みコマンドC2に付されていたLBA7をPBAに変換するための関係付けを行う。
【0034】
本実施形態において、アドレス変換部15は、プロセッサ11によって実現されるとしている。しかしながら、アドレス変換部15は、プロセッサ11と別の構成としてもよい。
【0035】
また、アドレス変換部15は、アドレス変換テーブルT0〜TMに基づいてアドレス変換を行うが、これに代えてキーバリュー型検索によりアドレス変換を行ってもよい。例えば、LBAをキーとし、PBAをバリューとすることで、キーバリュー型検索によるアドレス変換は実現可能である。
【0036】
書き込み部16は、アドレス変換部15によって得られたPBAの示す位置に、書き込みデータ9を書き込む。本実施形態において、書き込み部16は、書き込みコマンドC2に付されていたNSID6の示すネームスペースNS0に対応するバッファメモリF0に、書き込みデータ9を格納する。そして、書き込み部16は、バッファメモリF0がネームスペースNS0に適したデータ量になった場合に、PBAの示す位置に、バッファメモリF0のデータを書き込む。
【0037】
ガベージコレクション部G0〜GMは、ネームスペースNS0〜NSMに対応しており、ネームスペースNS0〜NSMごとにガベージコレクションを実行する。ガベージコレクションとは、不要になったメモリ領域を解放する処理、又は、隙間のあるメモリ領域に書き込まれているデータを集めて連続した利用可能なメモリ領域を確保する処理である。ガベージコレクション部G0〜GMは、並列にガベージコレクションを実行可能としてもよく、順にガベージコレクション部G0〜GMを実行してもよい。
【0038】
ガベージコレクション部G0〜GMのうちガベージコレクション部G0を用いて具体的に説明する。ガベージコレクション部G0は、まず、管理データ18に基づいて、ネームスペースNS0に対応するブロックB0〜B2を選択する。次に、ガベージコレクション部G0は、選択されたブロックB0〜B2に対するガベージコレクションを実行する。そして、ガベージコレクション部G0によるガベージコレクション結果に基づいて、アドレス変換部15は、アドレス変換テーブルT0を更新する。
【0039】
なお、本実施形態においては、LBAとPBAとがアドレス変換テーブルT0〜TMで関係付けられており、PBAで特定可能なブロックとNSIDとが管理データ18で関係付けられている。したがって、LBAが重複しないユニークなアドレスであり管理データ18が生成されれば、プロセッサ11側で、書き込みコマンドC2に付されているLBA7から書き込み先のネームスペースNS0を特定可能である。したがって、LBA7が重複せず管理データ18が生成された後には、書き込みコマンドC2にNSID6が付されることを省略し、LBA7とアドレス変換テーブルT0〜TMと管理データ18に基づいて、プロセッサ11側でNSID6が求められるとしてもよい。
【0040】
図2は、LBA空間と、ネームスペースNS0〜NSMと、アドレス変換テーブルT0〜TMと、ガベージコレクション部G0〜GMと、管理データ18との関係の一例を示すブロック図である。
【0041】
情報処理装置2のLBA空間A0〜AMは、それぞれネームスペースNS0〜NSMに割り当てられている。
【0042】
LBA空間A0は論理アドレス0〜E0を含む。LBA空間A1は論理アドレス0〜E1を含む。LBA空間AMは論理アドレス0〜EMを含む。他のLBA空間A2〜AM-1も同様に複数の論理アドレスを含む。
【0043】
以下の説明では、説明を簡略化するために、LBA空間A0とこのLBA空間A0に対して割り当てられているネームスペースNS0とを代表して説明する。しかしながら、他のLBA空間A1〜AM及びネームスペースNS1〜NSMについても同様である。
【0044】
情報処理装置2は、LBA空間A0のデータを不揮発性メモリ5に書き込む場合に、書き込みコマンドC2、LBA空間A0に対応するネームスペースNS0を示すNSID6、LBA空間A0内のLBA7、データサイズ8、LBA7に対応する書き込みデータ9をメモリシステム3に送る。
【0045】
管理データ18は、ネームスペースNS0とブロックB0〜B2と関係付けている。
【0046】
ガベージコレクション部G0は、管理データ18に基づいて、ガベージコレクション部G0に対応するネームスペースNS0に含まれているブロックB0〜B2に対して、ガベージコレクションを実行する。
【0047】
ガベージコレクションの結果、ブロックB0〜B2内でデータの配置が変化する。このため、ガベージコレクション部G0は、図2において省略されているアドレス変換部15にアドレス変換テーブルT0の更新を指示し、アドレス変換部15は、ガベージコレクション後のデータ配置と整合するように、ネームスペースNS0に対応するアドレス変換テーブルT0を更新する。
【0048】
図3は、本実施形態に係る受付部13及び設定部14の処理の一例を示すフローチャートである。
【0049】
ステップS301において、受付部13は、ネームスペースNS0〜NSMの設定コマンドC1を受け付ける。
【0050】
ステップS302において、設定部14は、ネームスペースNS0〜NSMに、不揮発性メモリ5のブロックB0〜BNを割り当て、管理データ18を生成する。
【0051】
ステップS303において、設定部14は、管理データ18をメモリ12に格納する。
【0052】
図4は、本実施形態に係るガベージコレクション部G0及びアドレス変換部15の処理の一例を示すフローチャートである。なお、他のガベージコレクション部G1〜GMでも同様の処理が実行される。この図4の処理は、例えば、情報処理装置2からの指示に応じて行われてもよく、メモリシステム3の管理者の指示に応じて行われてもよい。また、ガベージコレクション部G0は、例えば、ガベージコレクション対象のネームスペースNS0のデータ格納状態を監視し、ガベージコレクションの開始を判断するなどのように、自発的に図4の処理を実行してもよい。より具体的に説明すると、例えば、ガベージコレクション部G0は、ネームスペースNS0内の空きブロックが所定数以下、又は、ネームスペースNS0内の全ブロックに対する空きブロックの割合が所定値以下、の場合に、ネームスペースNS0に対するガベージコレクションを実行する。
【0053】
ステップS401において、ガベージコレクション部G0は、管理データ18に基づいて、ガベージコレクション対象のネームスペースNS0に対応するブロックB0〜B2を選択する。
【0054】
ステップS402において、ガベージコレクション部G0は、選択されたネームスペースNS0内のブロックB0〜B2に対するガベージコレクションを実行する。
【0055】
ステップS403において、アドレス変換部15は、ガベージコレクション対象のネームスペースNS0に対応するアドレス変換テーブルT0を、ガベージコレクション後のブロックB0〜B2の状態にそって更新する。
【0056】
以上説明した本実施形態においては、ネームスペースNS0〜NSMごとに、予め定められた又は情報処理装置2から設定されたブロック量を割り当てることができ、ネームスペースNS0〜NSMに対応するデータを、そのネームスペースNS0〜NSMに割り当てられたブロックB0〜BMに書き込むことができ、ネームスペースNS0〜NSMごとに異なるデータ量を設定することができる。
【0057】
本実施形態においては、ガベージコレクションを、ネームスペースNS0〜NSMごとに独立して、効率的に、実行することができる。
【0058】
本実施形態においては、ガベージコレクションの結果、データを格納していない空ブロックを、ガベージコレクション前のネームスペースから他のネームスペースに変更することができ、他のネームスペース内で空ブロックを確保することができる。これにより、ブロックに割り当てられるネームスペースを変更することができ、ネームスペースNS0〜NSM間でウェアレベリングを実行することができ、不揮発性メモリ5を長寿命化することができる。
【0059】
本実施形態では、ネームスペースNS0〜NSMごとに異なるデータ量の予備領域P0〜PMを設定することができ、ネームスペースNS0〜NSMごとにオーバープロビジョニングを実現することができる。これにより、書き込み速度の高速化及び性能維持を実現し、信頼性を向上させることができる。
【0060】
本実施形態においては、ネームスペースNS0〜NSMごとにアドレス変換テーブルT0〜TMが管理されており、ネームスペースNS0〜NSMごとに、アドレス変換及びLBAとPBAとの関係の変更を効率的に行うことができる。
【0061】
本実施形態において、アドレス変換をキーバリュー型検索によって行う場合には、不揮発性メモリ5のデータ容量が大きくても、効率的にアドレス変換を行うことができる。
【0062】
本実施形態においては、ネームスペースNS0〜NSMごとに高度なメモリ管理を実現することができ、不揮発性メモリ5を長寿命化することができ、コストを削減することができ、ネームスペースNS0〜NSMで区分けされている不揮発性メモリ5に対する書き込み及び読み出しを高速化することができる。
【0063】
(情報処理装置2の説明)
情報処理装置2は、メモリ21とプロセッサ22とを含む。
【0064】
情報処理装置2では、アプリケーションプログラム、オペレーティングシステムなどの各種のプログラム及び各種のデータ(以下、オブジェクトと記す)が、オブジェクト識別データ(以下、オブジェクトIDと記す)により識別可能である。
【0065】
情報処理装置2は、オブジェクトに対してLBA空間A0〜AMを割り当て、オブジェクトIDごとに、当該オブジェクトIDの示すオブジェクトに割り当てられたLBA空間A0〜AMを管理する。
【0066】
メモリ21は、プログラム23を格納する例えば不揮発性のメモリである。
【0067】
プロセッサ22は、メモリ21に格納されているプログラム23を実行することにより、頻度算出部24、割り当て部25、発信部26として機能する。
【0068】
頻度算出部24は、各オブジェクトのLBA空間に対応する書き込み頻度を算出する。
【0069】
割り当て部25は、各オブジェクトのLBA空間に対応する書き込み頻度に基づいて、複数のLBA空間A0〜AMを、複数のネームスペースNS0〜NSMに割り当てる。
【0070】
発信部26は、割り当て部25の割り当て結果に基づいて、設定コマンドC1を生成し、設定コマンドC1をメモリシステム3へ送る。
【0071】
また、発信部26は、割り当て部25の割り当て結果に基づいて、書き込みコマンドC2を生成し、書き込みコマンドC2、書き込みコマンドC2を発信するオブジェクトのLBA空間に割り当てられたネームスペースNS0を示すNSID6、データサイズ8、及び、書き込みデータ9を、メモリシステム3へ送る。
【0072】
図5は、本実施形態に係るネームスペースの割り当て状態を例示するブロック図である。
【0073】
この図5では、オブジェクトのLBA空間を4つのネームスペースNS0〜NS4に割り当てる状態を例示しているが、ネームスペースの数は2以上でよい。
【0074】
オブジェクトのLBA空間に対応する書き込み頻度は、複数の書き込み頻度グループのいずれかに割り当てられる。図5では、6つの書き込み頻度グループL0〜L5が用いられる場合が例示されている。書き込み頻度グループL0〜L5は、書き込み頻度の高い方から低い方へ、順に、書き込み頻度グループL0(Extremely Hot)、L1(Hot)、L2(Warm)、L3(Cool)、L4(Cold)、L5(Extremely cold)とする。
【0075】
書き込み頻度グループL0〜L5は、それぞれの性質及びオブジェクトIDに基づいて、ネームスペースNS0〜NS4に割り当てられる。
【0076】
例えば、同一のネームスペース内に異なる性質の書き込み頻度グループが含まれるように、ネームスペースNS0〜NS4に対して書き込み頻度グループL0〜L5の割り当てが行われる。
【0077】
例えば、書き込み頻度の極めて大きい書き込み頻度グループL0は、予備領域を潤沢に確保する必要があるため、複数のネームスペースNS0〜NS4に割り当てられる。これにより、効率的に予備領域を用いることができる。
【0078】
例えば、書き込み頻度の極めて小さい書き込み頻度グループL5は、複数のネームスペースNS2,NS3に分割される。このように、書き込み頻度グループL5が複数のネームスペースNS2,NS3に割り当てられることにより、ガベージコレクションを効率化することができる。
【0079】
例えば、書き込み頻度の大きい書き込み頻度グループL1は、ユーザアプリケーションなどのようなオブジェクトに依存して、独立に、ガベージコレクションが実行されるように、オブジェクトごとにネームスペースNS0,NS3が割り当てられられ、同じオブジェクトのLBA空間は、同じネームスペースNS0,NS3に割り当てられる。これにより、あるユーザアプリケーションに対するガベージコレクションが実行された場合に、他のユーザアプリケーションの性能が低下することを防止することができる。
【0080】
図6は、本実施形態に係る情報処理装置2の処理の一例を示すフローチャートである。
【0081】
ステップS601において、頻度算出部24は、各オブジェクトのLBA空間に対応する書き込み頻度を算出する。
【0082】
ステップS602において、割り当て部25は、各オブジェクトのLBA空間に対応する書き込み頻度に基づいて、各オブジェクトのLBA空間を書き込み頻度グループL0〜L5のいずれかに割り当てる。
【0083】
ステップS603において、割り当て部25は、各オブジェクトID及び書き込み頻度グループL0〜L5に基づいて、各オブジェクトのLBA空間を、ネームスペースNS0〜NSMのうちの少なくとも1つに割り当てる。
【0084】
ステップS604において、発信部26は、書き込みコマンドC2と、ネームスペースNS0〜NSMの割り当て結果を示すNSID6と、LBA7と、データサイズ8と、書き込みデータ9とを、メモリシステム3に送る。
【0085】
以上説明した本実施形態においては、各オブジェクトのLBA空間A0〜AMに対応する書き込み頻度に基づいて、各オブジェクトのLBA空間A0〜AMを、ネームスペースNS0〜NSMに割り当てることができ、メモリシステム3のサービス品質及び装置性能を向上させることができ、装置寿命を長くすることができ、メモリシステム3の設定を適切化することができる。
【0086】
例えば、本実施形態においては、同一のネームスペース内に異なる性質のLBA空間を割り当てることにより、ネームスペースNS0〜NS4に対する書き込み頻度及び書き込み回数を調整することができる。
【0087】
例えば、本実施形態においては、書き込み頻度の極めて大きいLBA空間を、複数のネームスペースに割り当てることができ、これにより予備領域を潤沢に確保することができる。
【0088】
例えば、本実施形態においては、書き込み頻度の極めて小さいLBA空間を、複数のネームスペースに割り当て、これによりガベージコレクションを効率化することができる。
【0089】
例えば、本実施形態においては、書き込み頻度の大きいオブジェクトのLBA空間を、同じネームスペースに割り当てる。これにより、あるユーザアプリケーションに対するガベージコレクションが実行された場合に、他のユーザアプリケーションの性能が低下することを防止することができる。
【0090】
本実施形態においては、情報処理装置2において、情報処理装置2側のLBA空間A0〜AMとメモリシステム3側のネームスペースNS0〜NSMとの割り当てを決定することができる。
【0091】
本実施形態においては、書き込み頻度に基づいて、LBA空間A0〜AMとネームスペースNS0〜NSMとの割り当てが行われている。しかしながら、これに代えて、書き込み回数、書き込み頻度及び読み出し頻度の組み合わせなど、他の情報に基づいてLBA空間A0〜AMとネームスペースNS0〜NSMとの割り当てが行われてもよい。
【0092】
また、割り当て部25は、ユーザ設定に基づいて、複数のLBA空間A0〜AMを、複数のネームスペースNS0〜NSMに割り当てるとしてもよい。
【0093】
本実施形態においては、ガベージコレクション部G0〜GMに代えて、又は、ガベージコレクション部G0〜GMとともに、ネームスペースNS0〜NSMごとのコンパクション部を備えるとしてもよい。ネームスペースNS0〜NSMのそれぞれに対応するコンパクション部は、管理データ18に基づいて、ネームスペースNS0〜NSMのそれぞれに対してコンパクションを実行する。
【0094】
本実施形態において、例えば、情報処理装置2とメモリシステム3との間の設定コマンドC1の通信は、省略されてもよい。例えば、アドレス変換部15は、設定部14の一部又は全部の機能を備えるとしてもよい。例えば、アドレス変換部15は、書き込みコマンドC2に付されているNSID6及びLBA7と、LBA7に対応するPBAとを関係付けることで、管理データ18及びネームスペースNS0〜NSMごとのアドレス変換テーブルT0〜TMを生成するとしてもよい。管理データ18とアドレス変換テーブルT0〜TMとは、適宜組み合わせることができ、又は、分割することができる。このように設定コマンドC1の通信が省略され、設定部14の一部又は全部の機能がアドレス変換部15に備えられる構成は、後述の第2の実施形態で説明する。
【0095】
[第2の実施形態]
本実施形態においては、メモリシステムが複数の情報処理装置からの書き込みデータを書き込み、メモリシステムが読み出しデータを複数の情報処理装置へ送る情報処理システムについて説明する。
【0096】
図7は、本実施形態に係る情報処理システムの構成の一例を示すブロック図である。
【0097】
情報処理システム1Aは、複数の情報処理装置D0〜DMとメモリシステム3Aとを含む。複数の情報処理装置D0〜DMのそれぞれは、上記の情報処理装置2と同様の機能を備える。メモリシステム3Aは、主に、アドレス変換テーブルT0〜TM及び管理データ18に代えて変換テーブル(変換データ)20を備える点、複数の情報処理装置D0〜DMとの間でデータ、情報、信号、コマンドなどの送信及び受信を行う点、設定部14の機能がアドレス変換部15に備えられる点で、上記のメモリシステム3と相違している。本実施形態においては、上記第1の実施形態と異なる点を説明し、同じ部分又は実質的に同じ部分については説明を省略するか又は簡単に説明する。
【0098】
メモリシステム3Aは、例えばクラウドコンピューティングシステムに備えられる。メモリシステム3Aは、複数の情報処理装置D0〜DMによってシェアされる場合を例として説明するが、例えば複数のユーザによってシェアされてもよい。複数の情報処理装置D0〜DMの少なくとも1つは、仮想マシンでもよい。
【0099】
本実施形態において、コマンドに付されるNSIDは、ネームスペースのアクセス鍵として用いられる。
【0100】
本実施形態においては、複数の情報処理装置D0〜DMは、自己に対応するネームスペースNS0〜NSMに対してアクセス権限を持つとする。しかしながら、1つの情報処理装置が1以上のネームスペースに対してアクセス権限を持つとしてもよく、複数の情報処理装置が共通のネームスペースに対してアクセス権限を持つとしてもよい。
【0101】
情報処理装置D0〜DMのそれぞれは、書き込みコマンドC2とともに、例えば自己に対応する書き込み先スペースを示すNSID6W、書き込み先を示すLBA7W、データサイズ8、及び、書き込みデータ9Wを、メモリシステム3Aへ送る。
【0102】
情報処理装置D0〜DMのそれぞれは、読み出しコマンドC3とともに、例えば自己に対応する読み出し先スペースを示すNSID6R、読み出し先を示すLBA7Rを、メモリシステム3Aへ送る。
【0103】
情報処理装置D0〜DMのそれぞれは、読み出しコマンドC3に対応する読み出しデータ9R、又は、読み出し不可であったことを示す情報を、メモリシステム3Aから受ける。
【0104】
メモリシステム3Aは、コントローラ4Aと不揮発性メモリ5とを含む。
【0105】
コントローラ4Aは、インタフェース部19、記憶部10、バッファメモリF0〜FM、プロセッサ11を含む。本実施形態においては、コントローラ4Aに備えられるプロセッサの数は1以上で自由に変更可能である。
【0106】
インタフェース部19は、例えば情報処理装置D0〜DMなどのような外部装置との間で、データ、情報、信号、コマンドなどの送信及び受信を行う。
【0107】
記憶部10は、変換テーブル20を格納する。なお、変換テーブル20の一部又は全部は、メモリ12などのような他のメモリに格納されてもよい。
【0108】
変換テーブル20は、LBA、PBA、NSIDを互いに関係付けたデータである。この変換テーブル20については、図8を用いて後で説明する。
【0109】
バッファメモリF0〜FMは、それぞれ、ネームスペースNS0〜NSMに対する書き込みバッファメモリ及び読み出しバッファメモリとして使用される。
【0110】
プロセッサ11は、プログラム17を格納するメモリ12、受付部13、アドレス変換部15、書き込み部16、読み出し部21、ガベージコレクション部G0〜GMを含む。プロセッサ11は、プログラム17を実行することにより、受付部13、アドレス変換部15、書き込み部16、読み出し部21、ガベージコレクション部G0〜GMとして機能する。
【0111】
受付部13は、データ書き込み時に、情報処理装置D0〜DMからインタフェース部19経由で書き込みコマンドC2、NSID6W、LBA7W、データサイズ8、書き込みデータ9Wを受け付ける。
【0112】
受付部13は、データ読み出し時に、情報処理装置D0〜DMからインタフェース部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】
本実施形態において、ガベージコレクション部G0〜GMは、変換テーブル20に基づいて、ネームスペースNS0〜NSMごとにガベージコレクションを実行する。
【0118】
図8は、本実施形態に係る変換テーブル20の一例を示すデータ構造図である。
【0119】
変換テーブル20は、LBA、PBA、NSIDを関係付けて管理する。例えば、変換テーブル20は、LBA200とPBA300とNS0とを関係付けており、LBA201とPBA301とNS0とを関係付けており、LBA200とPBA399とNSMとを関係付けている。
【0120】
アドレス変換部15は、例えば、LBA200とネームスペースNS0を示すNSIDとに関係するPBA300と、LBA200とネームスペースNSMを示すNSIDとに関係するPBA399とが互いに異なるように、PBAの決定を行う。
【0121】
これにより、アドレス変換部15は、LBA200とともに受け付けられたNSIDがネームスペースNS0を示す場合にはPBA300を選択することができ、LBA200とともに受け付けられたNSIDがネームスペースNSMを示す場合にはPBA399を選択することができる。
【0122】
したがって、複数の情報処理装置D0〜DMの間で同じ論理アドレスが使用される場合であっても、メモリシステム3Aを複数の情報処理装置D0〜DMでシェアすることができる。
【0123】
図9は、本実施形態に係るメモリシステム3Aの書き込み処理の一例を示すフローチャートである。
【0124】
この図9の説明では、複数の情報処理装置D0〜DMのうちの情報処理装置D0から書き込みコマンドC2が発行され、書き込みコマンドC2にはネームスペースNS0を示すNSID6Wが付されている場合を例として説明する。しかしながら、情報処理装置D1〜DMから書き込みコマンドC2が発行された場合も同様である。また、書き込みコマンドC2に他のネームスペースNS1〜NSMのいずれかを示すNSID6Wが付されている場合も同様である。
【0125】
ステップS901において、受付部13は、情報処理装置D0からインタフェース部19経由で書き込みコマンドC2、NSID6W、LBA7W、データサイズ8、書き込みデータ9Wを受け付ける。
【0126】
ステップS902において、アドレス変換部15は、受付部13によって書き込みコマンドC2が受け付けられた場合に、書き込みコマンドC2に付されていたLBA7WとNSID6Wに基づいて、NSID6Wの示すネームスペースNS0における書き込み先のPBAを決定する。
【0127】
ステップS903において、アドレス変換部15は、LBA7WとNSID6Wと決定されたPBAとを関係付けた状態で変換テーブル20を更新する。
【0128】
ステップS904において、書き込み部16は、NSID6Wの示すネームスペースNS0に対応するバッファメモリF0を経由して、NSID6Wの示すネームスペースNS0に対応するPBAの示す位置に、書き込みデータ9Wを書き込む。
【0129】
図10は、本実施形態に係るメモリシステム3Aの読み出し処理の一例を示すフローチャートである。
【0130】
この図10の説明では、複数の情報処理装置D0〜DMのうちの情報処理装置DMから読み出しコマンドC3が発行され、読み出しコマンドC3にはネームスペースNSMを示すNSID6Rが付されている場合を例として説明する。しかしながら、情報処理装置D0〜DM-1から読み出しコマンドC3が発行された場合も同様である。また、読み出しコマンドC3に他のネームスペースNS0〜NSM-1のいずれかを示すNSID6Rが付されている場合も同様である。
【0131】
ステップS1001において、受付部13は、情報処理装置DMからインタフェース部19経由で読み出しコマンドC3、NSID6R、LBA7Rを受け付ける。
【0132】
ステップS1002において、アドレス変換部15は、受付部13によって読み出しコマンドC3が受け付けられた場合に、読み出しコマンドC3に付されていたLBA7RとNSID6Rと変換テーブル20とに基づいて、読み出し先のPBAを決定する。
【0133】
ステップS1003において、読み出し部21は、NSID6Rの示すネームスペースNSMに対応するバッファメモリFMを経由して、NSID6Rの示すネームスペースNSMに対応するPBAの示す位置から、読み出しデータ9Rを読み出し、インタフェース部19経由で、読み出しコマンドC3を発行した情報処理装置DMに、読み出しデータ9Rを送る。
【0134】
以上説明した本実施形態においては、不揮発性メモリ5が複数のネームスペースNS0〜NSMに区切られる。情報処理装置D0〜DMは、複数のネームスペースNS0〜NSMのうち自己がアクセス権限を持つネームスペースをアクセス可能である。これにより、データセキュリティを向上させることができる。
【0135】
メモリシステム3Aのコントローラ4Aは、ネームスペースNS0〜NSMごとに、独立の制御を行う。これにより、ネームスペースNS0〜NSMごとに使用条件を切り替えることができる。
【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、D0〜DMのいずれかは、情報処理装置2Bに対応する。
【0141】
上記第1及び第2の実施形態のメモリシステム3,3Aは、メモリシステム3Bに対応する。
【0142】
上記第1及び第2の実施形態のプロセッサ11は、CPU43F,43Bに対応する。
【0143】
上記第1の実施形態のアドレス変換テーブルT0〜TM、及び、上記第2の実施形態の変換テーブル20は、LUT45に対応する。
【0144】
上記第1及び第2の実施形態の記憶部10は、DRAM47に対応する。
【0145】
上記第2の実施形態のインタフェース部19は、ホストインタフェース41及びホストインタフェースコントローラ42に対応する。
【0146】
上記第1及び第2の実施形態のバッファメモリF0〜FMは、ライトバッファ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】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0175】
2,D0〜DM……情報処理装置、21…メモリ、22…プロセッサ、23…プログラム、24…頻度算出部、25…割り当て部、26…発信部、3…メモリシステム、4…コントローラ、5…不揮発性メモリ、C2…書き込みコマンド、6…NSID、7…LBA、8…データサイズ、9…データ、10…記憶部、12…メモリ、13…受付部、14…設定部、15…アドレス変換部、16…書き込み部、17…プログラム、18…管理データ、G0〜GM…ガベージコレクション部、T0〜TM…アドレス変換テーブル、F0〜FM…バッファメモリ、NS0〜NSM…ネームスペース、B0〜BN…ブロック、P0〜PM…予備領域、A0〜AM…LBA空間、L0〜L5…書き込み頻度グループ、20…変換テーブル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12