(57)【要約】【課題】起動時間を短縮することができる情報処理システムを提供する。【解決手段】実施形態の情報処理システムは、ホスト装置と、ホスト装置と接続されている記憶装置とを備える。記憶装置は、ホスト装置から送信されるデータを記憶する不揮発性半導体メモリと、ホスト装置との通信を制御し、不揮発性半導体メモリへのデータの書き込み動作及び読み出し動作を制御するコントローラとを含む。コントローラは、データに対応付けられる論理アドレスの空間を複数の部分空間に分けて管理し、記憶装置の起動に際して必要となる起動情報であって、論理アドレスと不揮発性半導体メモリの物理アドレスとの変換に必要な情報を、部分空間ごとの起動優先順位が識別可能となるように管理する。【選択図】図２０
2020102237.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置と、
前記ホスト装置と接続されている記憶装置と、
を備え、
前記記憶装置は、
前記ホスト装置から送信されるデータを記憶する不揮発性半導体メモリと、
前記ホスト装置との通信を制御し、前記不揮発性半導体メモリへの前記データの書き込み動作及び読み出し動作を制御するコントローラと、
を含み、
前記コントローラは、
前記データに対応付けられる論理アドレスの空間を複数の部分空間に分けて管理し、
前記記憶装置の起動に際して必要となる起動情報であって、前記論理アドレスと前記不揮発性半導体メモリの物理アドレスとの変換に必要な情報を、前記部分空間ごとの起動優先順位が識別可能となるように管理する
情報処理システム。
【請求項２】
前記コントローラは、
前記ホスト装置が前記部分空間のいずれかを指定して送信する第１のコマンドの指定に応じて前記起動優先順位を設定する
請求項１に記載の情報処理システム。
【請求項３】
前記コントローラは、前記起動情報を前記不揮発性半導体メモリに記憶させるように制御する
請求項１に記載の情報処理システム。
【請求項４】
前記不揮発性メモリは複数の領域を有し、
前記複数の領域のうち１つの領域には、１つの前記部分空間に対応する複数の前記起動情報が記憶され、異なる２つ以上の前記部分空間に対応する前記起動情報は記憶されない
請求項３に記載の情報処理システム。
【請求項５】
前記複数の領域はそれぞれが前記不揮発性メモリにおけるデータ消去の単位である
請求項４に記載の情報処理システム。
【請求項６】
前記コントローラは、
前記記憶装置の起動に際して、
前記起動情報を前記起動優先順位の高い順に読み出す
請求項１に記載の情報処理システム。
【請求項７】
前記コントローラは、
前記部分空間の起動が完了したことを前記部分空間ごとに前記ホスト装置に報告する
請求項６に記載の情報処理システム。
【請求項８】
前記部分空間に属する論理アドレスに対応付けられるデータは、前記部分空間の起動が完了することにより、前記ホストからのコマンドに基づいて書き込みおよび読み出しが可能になる
請求項６に記載の情報処理システム。
【請求項９】
前記コントローラは、
前記ホスト装置が前記部分空間のいずれかを指定して送信する第１のコマンドの指定に応じて前記起動優先順位を設定し、
前記複数の部分空間は、
第１の部分空間と第２の部分空間を有し、
前記ホスト装置は、
ユーザデータが対応付けられている論理アドレスが属する前記第１の部分空間よりも、オペレーティングシステムカーネルが対応付けられている論理アドレスが属する前記第２の部分空間の前記起動優先順位を高く指定する
請求項６に記載の情報処理システム。
【請求項１０】
前記コントローラは、
前記ホスト装置が前記部分空間のいずれかを指定して送信する第１のコマンドの指定に応じて前記起動優先順位を設定し、
前記複数の部分空間は、
第３の部分空間と第４の部分空間を有し、
前記ホスト装置は、
第１の優先度の契約をしているユーザより第２の優先度の契約をしているユーザの優先度が高い場合、
前記第１の優先度の契約をしているユーザのユーザデータが対応付けられている論理アドレスが属する前記第３の部分空間よりも、前記第２の優先度の契約をしているユーザのユーザデータが対応付けられている論理アドレスが属する前記第４の部分空間の前記起動優先順位を高く指定する
請求項６に記載の情報処理システム。
【請求項１１】
前記ホスト装置と前記記憶装置はＮＶＭｅ規格に基づいて通信し、前記部分空間はネームスペースである
請求項１に記載の情報処理システム。
【請求項１２】
ホスト装置と、
前記ホスト装置と接続されている記憶装置と、
を備え、
前記記憶装置は、
前記ホスト装置から送信されるデータを記憶する不揮発性半導体メモリと、
前記ホスト装置との通信を制御し、前記不揮発性半導体メモリへの前記データの書き込み動作及び読み出し動作を制御するコントローラと、
を含み、
前記記憶装置は、
複数の部分空間ごとに、論理アドレスと前記不揮発性半導体メモリの物理アドレスとの変換に必要な情報である起動情報によって起動し、
前記複数の部分空間は、前記データに対応付けられる前記論理アドレスの空間から分けられ、前記複数の部分空間のそれぞれに起動優先順位が定義されており、
前記コントローラは、
前記起動優先順位に従って前記部分空間ごとに前記記憶装置が起動可能なように、前記起動情報を管理する
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理システムに関する。
【背景技術】
【０００２】
記憶装置の起動時には単位容量ごとに必要となる初期化処理が存在するが、近年の記憶装置の大容量化によって、記憶装置全体として必要になる初期化処理の量が増大し、起動時間が長くなってきている。また、記憶装置の論理アドレス空間を複数の部分空間に分割して管理する技術が普及している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１７６２００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、起動時間を短縮することができる情報処理システムを提供することである。
【課題を解決するための手段】
【０００５】
上記課題を達成するために、実施形態の情報処理システムは、ホスト装置と、ホスト装置と接続されている記憶装置とを備える。記憶装置は、ホスト装置から送信されるデータを記憶する不揮発性半導体メモリと、ホスト装置との通信を制御し、不揮発性半導体メモリへのデータの書き込み動作及び読み出し動作を制御するコントローラとを含み、コントローラは、データに対応付けられる論理アドレスの空間を複数の部分空間に分けて管理し、記憶装置の起動に際して必要となる起動情報であって、論理アドレスと不揮発性半導体メモリの物理アドレスとの変換に必要な情報を、部分空間ごとの起動優先順位が識別可能となるように管理する。
【図面の簡単な説明】
【０００６】
【図１】実施形態の記憶装置の構成を説明するブロック図である。
【図２】実施形態の物理ページ及び物理ブロックの構成を説明する図である。
【図３】実施形態の論理ページ及び論理ブロックの構成を説明する図である。
【図４】実施形態で部分空間に分割される論理アドレス空間を説明する図である。
【図５】実施形態のメモリ構成を説明する図である。
【図６】実施形態における翻訳情報を使用したユーザデータのリード・ライトの制御を説明する図である。
【図７】実施形態の位置情報のデータ構造の一例を説明する図である。
【図８】実施形態のログの一例を説明する図である。
【図９】実施形態のログ領域の割り当て方法の第１の例を説明する図である。
【図１０】実施形態のログ領域の割り当て方法の第２の例を説明する図である。
【図１１】実施形態のログ領域の割り当て方法の第３の例を説明する図である。
【図１２】実施形態のログ領域の割り当て方法の第４の例を説明する図である。
【図１３】実施形態のＮＳ管理表の構成を説明する図である。
【図１４】実施形態で位置情報を復元する動作を説明する図である。
【図１５】実施形態における翻訳情報のＲＡＭへのキャッシュ動作を説明する図である。
【図１６】実施形態におけるホストへの起動完了報告の一例を説明する図である。
【図１７】実施形態の起動時におけるＦＷの制御を説明するフローチャートである。
【図１８】実施形態における起動優先順位を指定するコマンドの動作の一例を説明する図である。
【図１９】実施形態におけるネームスペースごとの起動優先順位と起動完了報告の一例を説明する図である。
【図２０】実施形態におけるネームスペースごとの起動優先順位と起動完了報告の別の一例を説明する図である。
【図２１】実施形態において指定起動優先順位に重複があった場合の動作の一例を説明する図である。
【図２２】実施形態において指定起動優先順位に重複があった場合の動作の別の一例を説明する図である。
【図２３】実施形態において起動優先順位指定コマンドを受信した時のＦＷの制御を説明するフローチャートである。
【図２４】実施形態における起動優先順位を問い合わせるコマンドの動作の一例を説明する図である。
【発明を実施するための形態】
【０００７】
以下、実施形態の記憶装置を、図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
【０００８】
図１は、実施形態の記憶装置の構成を説明するブロック図である。
【０００９】
記憶装置１は、記憶装置１全体を制御するコントローラ１０と、データを記憶する不揮発性記憶媒体２０と、各種情報群を一時的に格納するとともに、ホスト２と不揮発性記憶媒体２０との間でデータを一時的に格納するバッファとして使用されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０と、ＦＷ（Ｆｉｒｍｗａｒｅ）に基づき記憶装置１全体を制御するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０と、を含む。
【００１０】
本実施形態の説明では、ホスト２はＮＶＭｅ（ＮＶＭ  Ｅｘｐｒｅｓｓ）（登録商標）規格のインターフェースをサポートするコンピュータであるが、その他の規格、例えばＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）規格、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）規格のインターフェースをサポートするコンピュータであってもよい。
コントローラ１０は、例えばＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）として構成される半導体集積回路である。
【００１１】
本実施形態では、不揮発性記憶媒体２０はＮＡＮＤ型フラッシュメモリであり、複数のＮＡＮＤ型フラッシュメモリチップ１００（以下、メモリチップ１００と称する）を含んで構成されるが、磁気ディスクなど他の種類の不揮発性記憶媒体でもよい。以下では不揮発性記憶媒体２０をＮＡＮＤ型フラッシュメモリ２０と称する（以下、単にＮＡＮＤとも称する）。また、本実施形態のＮＡＮＤ型フラッシュメモリ２０は、例えば、１６チャネル（Ｃｈ）のメモリチップ１００を有する。以下では、メモリチップ１００のそれぞれをメモリチップＣｈ０〜メモリチップＣｈ１５と表記する。なお、チャネル数は１６より多くても少なくてもよい。
【００１２】
本実施形態では、ＲＡＭ３０はＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であるが、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など他の種類の揮発性メモリを採用してもよい。
【００１３】
なお、ＲＡＭ３０及びＣＰＵ４０は、別個の半導体集積回路とせずにコントローラ１０に内蔵されていてもよい。また、以下の説明においてＦＷにより実行される機能の一部又は全部は、専用のＨＷ（Ｈａｒｄｗａｒｅ）によっても実行可能であり、ＨＷにより実行される機能の一部又は全部を、ＦＷによって実行することも可能である。
【００１４】
コントローラ１０は、ホスト２との通信制御や複数接続されるホスト２の管理を行うホストインターフェース（ＩＦ）制御部２００と、ＲＡＭ３０のリード・ライトを制御するバッファ制御部２１０と、ＮＡＮＤ型フラッシュメモリ２０のリード・ライトを制御するＮＡＮＤ制御部２２０と、を含む。ホストＩＦ制御部２００は、ＦＷに基づくＣＰＵ４０の指示により、ホスト２から受信した各種コマンドの実行結果をホスト２に報告することができる。
【００１５】
次に、図２ａ及び図２ｂを参照して、メモリチップ１００の物理ページ３００及び物理ブロック３１０の構成を説明する。
【００１６】
図２ａに示すように、メモリチップ１００に対するデータのリード・ライトにおける最小管理単位はクラスタ３２０と呼ばれる。本実施形態ではクラスタ３２０の大きさは４ｋＢである。また、メモリチップ１００の内部で一度にデータのリード・ライトが可能な最小の回路構成の単位は物理ページ３００と呼ばれる。本実施形態では物理ページ３００の大きさは１６クラスタ（４ｋＢ×１６クラスタ＝６４ｋＢ）である。
【００１７】
また、図２ｂに示すように、メモリチップ１００のデータのイレースが可能な最小の回路構成の単位は物理ブロック３１０と呼ばれる。本実施形態では物理ブロック３１０の大きさは２５６クラスタ、すなわち１６物理ページ（６４ｋＢ×１６物理ページ＝１０２４ｋＢ）である。なお、これら各単位のサイズは一例であり、これらの値に限定されるものではない。
【００１８】
次に、図３ａ及び図３ｂを参照して、論理ページ４００及び論理ブロック４１０の構成を説明する。
【００１９】
本実施形態では、図３ａに示すように、メモリチップＣｈ０〜Ｃｈ１５それぞれの１つの物理ページ３００を含む集合を論理ページ４００とする。コントローラ１０は、論理ページ４００を論理的な単位として、ＮＡＮＤ型フラッシュメモリ２０へのデータのリード・ライトを制御する。また、図３ｂに示すように、コントローラ１０は１６個の論理ページ４００分のデータである論理ブロック４１０を論理的な単位として、ＮＡＮＤ型フラッシュメモリ２０のデータのイレースを制御する。すなわち、コントローラ１０はメモリチップ１００のデータのイレースの最小単位である物理ブロック３１０ごとではなく、論理ブロック４１０ごとにイレース処理を行う。
【００２０】
次に、図４を参照して、部分空間について説明する。
【００２１】
記憶装置１がホスト２に提供する論理アドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡ）と、ユーザデータが記憶されるＮＡＮＤ型フラッシュメモリ２０の物理アドレスは、１対１に対応する。ここで、ユーザデータとは、ホスト２からライト要求と共に送信されてくるデータを指す。以下では、物理アドレスと１対１に対応する論理アドレスをドライブＬＢＡと称する。
【００２２】
また、ドライブＬＢＡは複数の部分空間に分割されてホスト２に提供される。ＮＶＭｅ規格においては部分空間はネームスペースと呼ばれ、ＳＣＳＩ規格においては部分空間はＬｏｇｉｃａｌ  Ｕｎｉｔと呼ばれる。以下では、部分空間をネームスペースと称する。ネームスペースのそれぞれはネームスペースＩＤ（ＮＳＩＤ）によって識別される。本実施形態では、ドライブＬＢＡはＮＳＩＤ０〜ＮＳＩＤｎとして識別される（ｎ＋１）個のネームスペースに分割されている。
【００２３】
各ネームスペースは、ホスト２からは独立した記憶領域として扱うことができ、記憶装置１のドライブＬＢＡは、ＮＳＩＤと、ネームスペースごとに０から始まるホストＬＢＡによって指定される。ここで、ホストＬＢＡとは、記憶装置１のデータの記憶先を指定するために、ホスト２がコマンド発行時に指定する論理アドレスである。
【００２４】
コマンドで指定されたホストＬＢＡとドライブＬＢＡとの変換はホストＩＦ制御部２００が行う。例えば図４に示すように、ホスト２がＮＳＩＤ２のホストＬＢＡ＝０をアクセスする場合、ホストＩＦ制御部２００はドライブＬＢＡ＝Ｂがアクセスされたものとして取り扱う。
【００２５】
各ネームスペースはホスト２からのコマンドによって生成される。すなわち、ホスト２は記憶装置１にコマンドを発行し、生成したいネームスペースのＮＳＩＤと、そのネームスペースに割り当てたい記憶容量を指定する。なお、ドライブＬＢＡのすべてにネームスペースを割り当てず、ネームスペースが割り当てられない空き領域があってもよい。
【００２６】
また、記憶装置１が複数のホスト２と接続される場合は、各ホスト２からアクセス可能なネームスペースを制限してもよい。例えば、ホスト＃０はＮＳＩＤ０とＮＳＩＤ２のみをアクセス可能とし、ホスト＃１はＮＳＩＤ３のみをアクセス可能とすることができる。
【００２７】
次に、図５を参照して、本実施形態のメモリ構成を説明する。
【００２８】
ＮＡＮＤ型フラッシュメモリ２０には、ユーザデータ５００、翻訳情報群５２０ａ、ログ５３０、ＮＳ管理表５４０が記憶される。
【００２９】
翻訳情報群５２０ａは翻訳情報５１０ａを含み、各翻訳情報５１０ａはドライブＬＢＡと物理アドレスとの対応関係を示す情報である。ログ５３０は、ドライブＬＢＡと物理アドレスとの対応関係の変更を記録するためのログである。ＮＳ管理表５４０は、ネームスペースごとの起動優先順位などを管理するためのテーブルである。
【００３０】
コントローラ１０は、ユーザデータ５００が記憶される（ｎ＋１）個のユーザデータ領域、翻訳情報群５２０ａが記憶される翻訳情報群領域、ログ５３０が記憶される（ｍ＋１）個のログ領域、及び、ＮＳ管理表５４０が記憶されるＮＳ管理表領域、を含んでＮＡＮＤ型フラッシュメモリ２０を管理している。各ユーザデータ領域は各ネームスペースと１対１に対応している。各ログ領域には１つのネームスペースが対応するが、各ネームスペースが複数のログ領域と対応してもよい。すなわち、例えば、ログ領域０がＮＳＩＤ０とＮＳＩＤ１との両方に対応することはないが、ＮＳＩＤ０がログ領域０とログ領域１とに対応してもよい。
【００３１】
コントローラ１０は、１つの論理ページ４００を、ユーザデータ領域とログ領域の両方を含むものとして管理するが、ユーザデータ領域専用の論理ページ４００や、ログ領域専用の論理ページ４００が存在してもよい。
【００３２】
なお、コントローラ１０が、ホストＬＢＡと、各ネームスペースに対応するドライブＬＢＡとの関係を認識できるのであれば、コントローラ１０は、ネームスペースと１対１に対応させてユーザデータ領域を管理しなくてもよい。例えば、１つのユーザデータ領域に複数のネームスペースのユーザデータ５００を記憶させ、ネームスペースごとに割り当てられたログ領域に当該ネームスペースのログ５３０を記憶させてもよい。
【００３３】
また、コントローラ１０が、ログ領域をネームスペースに対応させて管理するのではなく、ログ領域に記憶されるログ５３０にＮＳＩＤを含ませてもよい。この場合は、以下の説明において、例えばＮＳＩＤ０に対応するログ領域とは、ＮＳＩＤ０を有するログ５３０が記憶されるログ領域の集合を指す。
【００３４】
ＲＡＭ３０には、ＮＡＮＤ型フラッシュメモリ２０の翻訳情報群領域から各翻訳情報５１０ａがコピーされて、翻訳情報（キャッシュ）５１０ｂとして格納される。以下では、ＲＡＭ３０内に格納された翻訳情報（キャッシュ）５１０ｂの集合を翻訳情報群（キャッシュ）５２０ｂと称する。また、ＲＡＭ３０にはネームスペースごとの位置情報群５５０が格納される。詳細については後述するが、位置情報群５５０は位置情報５６０を含み、各位置情報５６０は翻訳情報５１０ａ及び翻訳情報（キャッシュ）５１０ｂの格納先を示す情報を記録する。
【００３５】
次に、図６を参照して、翻訳情報５１０を使用したホストＬＢＡから物理アドレスへの変換について説明する。本実施形態においては、翻訳情報群５２０ａ内の翻訳情報５１０ａと、翻訳情報群（キャッシュ）５２０ｂ内の翻訳情報（キャッシュ）５１０ｂは、同一のデータ構造を有する。なお、翻訳情報５１０ａと翻訳情報（キャッシュ）５１０ｂとが同一の内容を表すのであれば、翻訳情報５１０ａと翻訳情報（キャッシュ）５１０ｂとのデータ構造は異なっていてもよい。例えば、翻訳情報５１０ａには圧縮された翻訳情報データを格納してもよい。
【００３６】
図６及び以下の説明では、翻訳情報群５２０ａと翻訳情報群（キャッシュ）５２０ｂとを総称して翻訳情報群５２０と表記し、翻訳情報５１０ａと翻訳情報（キャッシュ）５１０ｂとを総称して翻訳情報５１０と表記している。
【００３７】
記憶装置１がホスト２よりコマンドを受領すると（Ｓ１００）、ホストＩＦ制御部２００は当該コマンドからＮＳＩＤ及びホストＬＢＡを抽出し（Ｓ１０１）、これらを用いてドライブＬＢＡを算出する（Ｓ１０２）。
【００３８】
本実施形態においては、各翻訳情報５１０には、ＮＡＮＤ型フラッシュメモリ２０の物理アドレスが記録され、各翻訳情報５１０はユーザデータ５００に対応付けられるドライブＬＢＡの順で配列されている。すなわち、ＣＰＵ４０がＦＷに基づいて、ドライブＬＢＡをインデックスとして翻訳情報群５２０を検索することで、各ユーザデータ５００に対応付けられる物理アドレスを取得することができる（Ｓ１０３）。なお、各翻訳情報は、ＣＰＵ４０が各ドライブＬＢＡと各翻訳情報の対応関係を認識できるのであれば、ドライブＬＢＡの順に配列されていなくてもよい。
【００３９】
なお、本実施形態においては、ユーザデータ５００と対応付けられていないドライブＬＢＡに対応する翻訳情報５１０には、“アンマップ（Ｕｎｍａｐｐｅｄ）”を示す情報が記録される。また、１つの翻訳情報５１０に、複数のドライブＬＢＡと複数の物理アドレスとの対応関係を記録してもよい。
【００４０】
各翻訳情報５１０は、記憶装置１が動作するための電力が供給されていない間はＮＡＮＤ型フラッシュメモリ２０内に格納されている。ＮＡＮＤ型フラッシュメモリ２０へのアクセスはＲＡＭ３０へのアクセスに比べて遅いのが一般的であるため、記憶装置１への電力供給後なるべく速やかに各翻訳情報５１０をＲＡＭ３０にコピー（キャッシュ）することが望ましい。なお、電力供給後に直ちにコピーするのではなく、対応するドライブＬＢＡへのアクセスをトリガーとして、翻訳情報５１０をＲＡＭ３０にコピーしてもよい。
【００４１】
次に、図７を参照して、ＲＡＭ３０における位置情報群５５０のデータ構造の一例を説明する。
【００４２】
図７には、ＮＳＩＤ０の位置情報群５５０が示されているが、他のネームスペースの位置情報群５５０も同様の構成である。位置情報群５５０は複数の位置情報５６０を備えている。各位置情報５６０は１つの翻訳情報５１０と１対１で対応し、各翻訳情報５１０が格納されている場所（すなわちキャッシュとして使用されるＲＡＭ３０又はＮＡＮＤ型フラッシュメモリ２０）、及び、その物理アドレスが記録されている。
【００４３】
各位置情報５６０は、対応する翻訳情報５１０と同じ順序、すなわちユーザデータ５００に対応付けられるドライブＬＢＡの順序で配列されている。従って、ＣＰＵ４０がドライブＬＢＡをインデックスとして位置情報群５５０を検索することで、各ユーザデータ５００に対応する翻訳情報５１０が記憶されているＲＡＭ３０又はＮＡＮＤ型フラッシュメモリ２０の物理アドレスを取得することができる。
【００４４】
図７の例では、ＮＳＩＤ０のホストＬＢＡ「Ｌ０」に対応するドライブＬＢＡは「Ｌａ」であり、これに対応する位置情報５６０は、ＮＡＮＤ型フラッシュメモリ２０の物理アドレス「Ｐｂ」である。ＮＡＮＤ型フラッシュメモリ２０の物理アドレス「Ｐｂ」の領域には、翻訳情報５１０ａとしてＮＡＮＤ型フラッシュメモリ２０の「物理アドレス＝Ｐａ」が記憶されている。すなわち、ＮＳＩＤ０のホストＬＢＡ「Ｌ０」に対応するユーザデータ１は、ＮＡＮＤ型フラッシュメモリ２０の物理アドレス「Ｐａ」の領域に記憶されていることになる。
【００４５】
また、ＮＳＩＤ０のホストＬＢＡ「Ｌ１」に対応するドライブＬＢＡは「Ｌｃ」であり、これに対応する位置情報５６０は、ＲＡＭ３０の物理アドレス「Ｐｄ」である。ＲＡＭ３０の物理アドレス「Ｐｄ」の領域には、翻訳情報（キャッシュ）５１０ｂとしてＮＡＮＤ型フラッシュメモリ２０の「物理アドレス＝Ｐｃ」が記憶されている。すなわち、ＮＳＩＤ０のホストＬＢＡ「Ｌ１」に対応するユーザデータ２は、ＮＡＮＤ型フラッシュメモリ２０の物理アドレス「Ｐｃ」の領域に記憶されていることになる。
【００４６】
次に、図８を参照して、ログ５３０の一例を説明する。
【００４７】
図８に示す例では、ＮＳＩＤ０のホストＬＢＡ「Ｌ１」に対応するドライブＬＢＡは「Ｌｃ」であり、図８の初期状態では、ドライブＬＢＡ「Ｌｃ」に対応するユーザデータ２がＮＡＮＤ型フラッシュメモリ２０の物理アドレス「Ｐｃ」の領域に記憶されている。また、ドライブＬＢＡ「Ｌｃ」と物理アドレス「Ｐｃ」との関連を示す翻訳情報（キャッシュ）５１０ｂは、ＲＡＭ３０の物理アドレス「Ｐｄ」に格納されている。
【００４８】
この状態で、ホスト２からＮＳＩＤ０のホストＬＢＡ「Ｌ１」へのライト要求とともに、ユーザデータ３が送られてくる。この時、ＣＰＵ４０は、ユーザデータ３を、ＮＡＮＤ型フラッシュメモリ２０の有効データが記憶されていない物理アドレス「Ｐｅ」の領域に記憶させるようにコントローラ１０を制御する（Ｓ２００）。また、ＣＰＵ４０は、ＲＡＭ３０の物理アドレス「Ｐｆ」に新たな翻訳情報（キャッシュ）５１０ｂ（物理アドレス「Ｐｅ」）を追加する（Ｓ２０１）。ＣＰＵ４０は、ドライブＬＢＡ「Ｌｃ」に対応する位置情報５６０をＲＡＭ３０の物理アドレス「Ｐｄ」から「Ｐｆ」に書き換える（Ｓ２０２）。
【００４９】
追加された翻訳情報（キャッシュ）５１０ｂ（物理アドレス「Ｐｅ」）は、遅くとも記憶装置１への電力供給が断たれるまでに、ＮＡＮＤ型フラッシュメモリ２０の翻訳情報群５２０ａに保存される（Ｓ２０３）。ここでは、ドライブＬＢＡ「Ｌｃ」に対応する翻訳情報（キャッシュ）５１０ｂ（物理アドレス「Ｐｅ」）は、ＮＡＮＤ型フラッシュメモリ２０の物理アドレス「Ｐｋ」に保存されるものとする。
【００５０】
ＣＰＵ４０は、ドライブＬＢＡ「Ｌｃ」に対応する翻訳情報（キャッシュ）５１０ｂが物理アドレス「Ｐｋ」に保存されたことを示すログ５３０を、ログ領域０に記憶させる（Ｓ２０４）。
【００５１】
各ログ領域０〜ｍには、各ネームスペースに対応する翻訳情報（キャッシュ）５１０ｂの保存に伴い、順にログ５３０が記憶される。各ログ領域０〜ｍ内には、ログ５３０が古いものから新しいものへと時系列で格納されている。各ログ領域０〜ｍには、前述したように、１つのネームスペースのログ５３０のみを記憶し、複数のネームスペースのログ５３０が１つのログ領域内に混在することはない。このログ５３０は、後述するように、記憶装置１の起動時に位置情報群５５０の復元に用いられる。
【００５２】
なお、例えば記憶装置１への電力供給が断たれる時に、すべてのログ５３０がログ領域へ一度に記憶されなくともよい。例えば、翻訳情報（キャッシュ）５１０ｂの複数回分の保存に伴うログ５３０の大きさの合計が１論理ページ分になるごとに、ログ５３０が記憶されてもよい。この場合には、ＣＰＵ４０は、ログ５３０に反映されていない翻訳情報（キャッシュ）５１０ｂの保存があることを、例えば翻訳情報（キャッシュ）５１０ｂのそれぞれにフラグを付加して管理する必要がある。
【００５３】
次に、図９ａ及び図９ｂを参照して、１つの論理ブロック４１０を１つのログ領域に割り当てる動作の一例を説明する。図９ａの１つのログ５３０は、１論理ページ分のログ５３０の集合を示している。
【００５４】
ログ５３０は、ネームスペースごとに論理ブロック４１０を単位としてまとめられ、各論理ブロック４１０内の論理ページ４００の番号の順に記憶される。図９ａに示す例では、論理ブロック＃０がログ領域０として割り当てられ、ここにはＮＳＩＤ０のログ５３０が記憶されている。また、論理ブロック＃１はログ領域１として割り当てられ、ここにはＮＳＩＤ２のログ５３０が記憶されている。さらに、論理ブロック＃２にはログ領域２としてＮＳＩＤ１のログ５３０が記憶され、論理ブロック＃３にはログ領域３としてＮＳＩＤ０のログ５３０が記憶され、論理ブロック＃４にはログ領域４としてＮＳＩＤ１のログ５３０が記憶されている。
【００５５】
この結果、図９ｂに示すように、ＮＳＩＤ０のログ５３０を記憶している論理ブロック４１０の番号（ログブロック番号）は＃０と＃３に、ＮＳＩＤ１のログブロック番号は＃２と＃４に、ＮＳＩＤ２のログブロック番号は＃１に、それぞれなっている。
【００５６】
次に、図１０ａ及び図１０ｂを参照して、１つの論理ブロック４１０を複数の領域に分割し、分割された各領域を１つのログ領域に割り当てる動作の一例を説明する。図１０ａにおいても図９ａと同様に、１つのログ５３０は、１論理ページ分のログ５３０の集合を示している。
【００５７】
各論理ブロック４１０は、８つの論理ページ４００ごとに１つのログ領域として割り当てられる。以下、論理ページ＃０〜論理ページ＃７の集合をＬｏｗｅｒ  Ｐａｇｅ、論理ページ＃８〜論理ページ＃１５の集合をＵｐｐｅｒ  Ｐａｇｅと称する。なお、１つのログ領域として割り当て可能な論理ページ４００の数は、８に限られない。
【００５８】
図１０ａに示す例では、論理ブロック＃０のＬｏｗｅｒ  Ｐａｇｅがログ領域０として割り当てられ、ここにはＮＳＩＤ０のログ５３０が記憶されている。論理ブロック＃０のＵｐｐｅｒ  Ｐａｇｅはログ領域１として割り当てられ、ここにはＮＳＩＤ２のログ５３０が記憶されている。論理ブロック＃１のＬｏｗｅｒ  Ｐａｇｅはログ領域２として割り当てられ、ここにはＮＳＩＤ０のログ５３０が記憶されている。論理ブロック＃１のＵｐｐｅｒ  Ｐａｇｅはログ領域３として割り当てられ、ここにはＮＳＩＤ１のログ５３０が記憶されている。
【００５９】
この結果、図１０ｂに示すように、ＮＳＩＤ０のログ５３０を記憶している論理ブロック４１０の番号（ログブロック番号）は＃０（Ｌ）と＃１（Ｌ）に、ＮＳＩＤ１のログブロック番号は＃１（Ｕ）、ＮＳＩＤ２のログブロック番号は＃０（Ｕ）に、それぞれなっている。
【００６０】
次に、図１１ａ及び図１１ｂを参照して、各論理ブロック４１０のうちの１つの論理ページ４００を含む集合を、１つのネームスペースのログ領域として割り当てる動作の一例を説明する。図１１ａにおいても図９ａと同様に、１つのログ５３０は、１論理ページ分のログ５３０の集合を示している。
【００６１】
ログ５３０は、ネームスペースごとに、各論理ブロック４１０内の固定された位置（番号）の論理ページ４００に記憶される。例えば、各論理ブロック４１０の論理ページ＃０を、ログ領域０としてＮＳＩＤ０のログ５３０の記憶用に割り当てる。また、各論理ブロック４１０の論理ページ＃１を、ログ領域１としてＮＳＩＤ１のログ５３０の記憶用に割り当てる。さらに、各論理ブロック４１０の論理ページ＃２を、ログ領域２としてＮＳＩＤ２のログ５３０の記憶用に、各論理ブロック４１０の論理ページ＃３を、ログ領域３としてＮＳＩＤ３のログ５３０の記憶用に、それぞれ割り当てる。
【００６２】
図１１ａに示す例では、ＮＳＩＤ０のログ５３０は論理ブロック＃０〜＃４の論理ページ＃０に、ＮＳＩＤ１のログ５３０は論理ブロック＃０〜＃２の論理ページ＃１に、ＮＳＩＤ２のログ５３０は論理ブロック＃０〜＃２の論理ページ＃２に、ＮＳＩＤ３のログ５３０は論理ブロック＃０〜＃３の論理ページ＃３に、それぞれ記憶されている。
【００６３】
この結果、図１１ｂに示すように、ＮＳＩＤ０のログ５３０を記憶する論理ブロック４１０の番号（ログブロック番号）は＃０〜＃４に、ＮＳＩＤ１のログブロック番号は＃０〜＃２に、ＮＳＩＤ２のログブロック番号は＃０〜＃２に、ＮＳＩＤ３のログブロック番号は＃０〜＃３に、それぞれなっている。
【００６４】
なお、上記では各論理ブロック４１０のうちの１つの論理ページ４００を含む集合を１つのログ領域として割り当てたが、各論理ブロック４１０のうちの複数の論理ページ４００を含む集合を１つのログ領域として割り当てることも可能である。例えば、各論理ブロック４１０の論理ページ＃０と論理ページ＃１をログ領域０としてＮＳＩＤ０のログ５３０の記憶用に割り当て、各論理ブロック４１０の論理ページ＃２と論理ページ＃３をログ領域１としてＮＳＩＤ１のログ５３０の記憶用に割り当て、各論理ブロック４１０の論理ページ＃４と論理ページ＃５をログ領域２としてＮＳＩＤ２のログ５３０の記憶用に割り当て・・・、としてもよい。
【００６５】
次に、図１２ａ及び図１２ｂを参照して、１つの論理ページ４００を複数の領域に分割し、分割された各領域を１つのログ領域に割り当てる動作の一例を説明する。図１２ａにおいては、１つのログ５３０はログ５３０の集合を示すものではない。各論理ページ４００は、最大１６個のログ５３０を記憶できるものとする。
【００６６】
図１２ａに示す例では、論理ページ＃０のアドレスＰａから始まる領域がログ領域０として割り当てられ、ここにはＮＳＩＤ０のログ５３０が８個記憶されている。論理ページ＃０のアドレスＰｂから始まる領域はログ領域１として割り当てられ、ここにはＮＳＩＤ２のログ５３０が２個記憶されている。論理ページ＃０のアドレスＰｃから始まる領域はログ領域２として割り当てられ、ここにはＮＳＩＤ１のログ５３０が４個記憶されている。
【００６７】
また、論理ページ＃１のアドレスＰｄから始まる領域はログ領域０として割り当てられ、ここにはＮＳＩＤ０のログ５３０が４個記憶されている。論理ページ＃１のアドレスＰｅから始まる領域はログ領域３として割り当てられ、ここにはＮＳＩＤ３のログ５３０が７個記憶されている。
【００６８】
この結果、図１２ｂに示すように、ＮＳＩＤ０のログ５３０を記憶している論理ページ４００の番号（ログページ番号）は＃０（開始アドレス＝Ｐａ、長さ＝８）と＃１（開始アドレス＝Ｐｄ、長さ＝４）に、ＮＳＩＤ１のログページ番号は＃０（開始アドレス＝Ｐｃ、長さ＝４）に、ＮＳＩＤ２のログページ番号は＃０（開始アドレス＝Ｐｂ、長さ＝２）に、ＮＳＩＤ３のログページ番号は＃１（開始アドレス＝Ｐｅ、長さ＝７）に、それぞれなっている。図１２ｂに示すような各ログ領域の開始アドレス及び長さの情報は、ヘッダ情報として論理ページ４００内に記憶されてもよい。
【００６９】
なお、上記では各論理ページ４００のログ領域を複数の領域に分け、それぞれにネームスペースごとのログ５３０が記憶される動作を説明した。これに対しユーザデータ５００の記憶では、各論理ページ４００のユーザデータ領域を複数の領域に分け、それぞれにネームスペースごとのユーザデータ５００が記憶されてもよく、論理ページ４００の１つのユーザデータ領域内に複数のネームスペースのユーザデータ５００が記憶されてもよい。
【００７０】
次に、図１３を参照して、ＮＳ管理表５４０の構成を説明する。
【００７１】
ＮＳ管理表５４０には、位置情報群５５０が格納されているＲＡＭ３０の物理アドレス、ログ５３０が記憶されている論理ブロック４１０の番号（ログブロック番号）、及び、後述する起動優先順位が、ネームスペースごとに記録されている。
【００７２】
ＮＳ管理表５４０は、記憶装置１が動作するための電力が供給されていない間はＮＡＮＤ型フラッシュメモリ２０に格納されているが、記憶装置１への電力供給後は、他の情報に先立ってＲＡＭ３０内、又は、ＣＰＵ４０内もしくはコントローラ１０内の図示しないメモリ領域にコピーされる。
【００７３】
なお、図１１ａのように各論理ブロック４１０内の固定された位置（番号）の論理ページ４００をログ領域として割り当てる場合においても、ログ領域として割り当てる論理ページ番号をあらかじめネームスペースごとに固定しておけば、ログ５３０を記憶している論理ページ番号をＮＳ管理表５４０に記録しないでもよい。
【００７４】
また、ログ領域を図１２のように割り当てる場合には、ＮＳ管理表５４０にはログブロック番号ではなくログページ番号が記録される。または、上述したようにヘッダ情報が論理ページ４００内に記憶される場合には、ＮＳ管理表５４０にはログブロック番号が記録されてもよい。この場合には、ＣＰＵ４０は、ログ５３０の読み出し時にヘッダ情報を読み取ることで、各論理ブロック４１０内のどのアドレスに、どのネームスペースのログ５３０が記憶されているのかを判断することができる。
【００７５】
次に、図１４を参照して、記憶装置１の起動時に位置情報群５５０を復元する動作を説明する。
【００７６】
記憶装置１の起動時、ＣＰＵ４０は、ＮＳ管理表５４０から起動優先順位を読み出し、起動優先順位の高いネームスペースから、ログブロック番号に従ってログ５３０を読み出す。前述したように、ログ５３０は翻訳情報（キャッシュ）５１０ｂの保存順に記憶されている。このため、ログ５３０をその記憶順に読み出すことで、一部のドライブＬＢＡに対応する最新の位置情報５６０を復元することができる。
【００７７】
図１４に示す例では、ＣＰＵ４０は、ログ領域０内のログ５３０をその記憶順に読み出し、ドライブＬＢＡ「Ｌａ」に対応するログ５３０Ａより位置情報５６０Ａとして物理アドレス「Ｐｂ」を復元する。また、ドライブＬＢＡ「Ｌｃ」に対応するログ５３０Ｂより位置情報５６０Ｃとして物理アドレス「Ｐｄ」を復元する。なお、この位置情報５６０Ｃは、後述するように後の動作で上書きされる。次に、ドライブＬＢＡ「Ｌｂ」に対応するログ５３０Ｃより位置情報５６０Ｄとして物理アドレス「Ｐｃ」が復元される。次に読み出されるログ５３０Ｄには、ドライブＬＢＡ「Ｌｃ」に対応する物理アドレス「Ｐｆ」が記録されている。この場合、位置情報５６０Ｃは、物理アドレス「Ｐｄ」から物理アドレス「Ｐｆ」に上書きされる。その後に読み出されるログ５３０Ｅには、ドライブＬＢＡ「Ｌｆ」に対応する物理アドレス「Ｐｅ」が記録されており、位置情報５６０Ｄは物理アドレス「Ｐｅ」として復元される。
【００７８】
この時点では、各翻訳情報５１０はＮＡＮＤ型フラッシュメモリ２０からＲＡＭ３０にまだコピーされていないので、復元された各位置情報５６０において各翻訳情報５１０が格納されている場所は、ＮＡＮＤ型フラッシュメモリ２０となる。
【００７９】
なお、ログ５３０を、その記憶順とは逆の順に読み出しても、一部のドライブＬＢＡに対応する最新の位置情報５６０を復元することができる。この場合は、同一のドライブＬＢＡに対応する、後から読み出されるログ５３０に記録されている物理アドレスは、位置情報５６０に反映されない。図１４に示す例では、ドライブＬＢＡ「Ｌｃ」に対応するログ５３０は、ログ５３０Ｄが先に読み出され、ログ５３０Ｂが後から読み出される。位置情報５６０Ｃには、ログ５３０Ｄに記録されている物理アドレス「Ｐｆ」が反映され、ログ５３０Ｂに記録されている物理アドレス「Ｐｄ」は反映されない。
【００８０】
また、ログ領域がネームスペースごとに管理されていない場合には、ＣＰＵ４０は、ログ５３０に含まれるＮＳＩＤによって、いずれのネームスペースに対応するログ５３０であるのかを判断する。この場合、読み出したログ５３０が復元対象のネームスペースに対応するものであれば、ＣＰＵ４０は、そのログ５３０を位置情報群５５０の復元に用いる。一方、読み出したログ５３０が復元対象のネームスペースに対応するものでなければ、ＣＰＵ４０は、そのログ５３０を使用せず、次のログ５３０の読み出しを行う。
【００８１】
本実施形態においては、ＮＳ管理表５４０の起動優先順位に従いネームスペースごとに位置情報群５５０が復元される。すなわち、記憶装置１の起動後、ＣＰＵ４０は起動優先順位が最も高いネームスペースの位置情報群５５０を最初に復元する。これが完了すると、ＣＰＵ４０は起動優先順位が次に高いネームスペースの位置情報群５５０の復元を順次開始する。
【００８２】
あるネームスペースのログ５３０がすべて読み出され、位置情報群５５０の復元が完了すると、そのネームスペースについてはユーザデータ５００のリード・ライトが可能になる。すなわち、本実施形態においては、位置情報群５５０の復元が完了することによりそのネームスペースの起動が完了するので、各ログ５３０が、当該ネームスペースの起動情報であると考えることができる。
【００８３】
なお、翻訳情報５１０をＮＡＮＤ型フラッシュメモリ２０に保存する際に、ネームスペースごとに分けて保存してもよい。この場合は、記憶装置１の起動後、あるネームスペースの位置情報群５５０の復元、及び、当該ネームスペースの翻訳情報５１０のＲＡＭ３０へのコピーの完了により、当該ネームスペースの起動完了となる。
【００８４】
次に、図１５を参照して、翻訳情報５１０のＲＡＭ３０へのキャッシュ動作を説明する。
【００８５】
本実施形態では、すべてのネームスペースについての位置情報群５５０の復元が完了した後、翻訳情報５１０ａがＮＡＮＤ型フラッシュメモリ２０から、翻訳情報（キャッシュ）５１０ｂとしてＲＡＭ３０にコピーされる。翻訳情報５１０のＲＡＭ３０へのコピー完了に伴い、これに対応する位置情報５６０の参照先はＲＡＭ３０となる。
【００８６】
なお、記憶装置全体の位置情報群５５０の復元が完了した後に翻訳情報５１０をＲＡＭ３０がコピーされてもよく、あるネームスペースの位置情報群５５０の復元が完了するごとに、当該ネームスペースの翻訳情報５１０がＲＡＭ３０へコピーされてもよい。
【００８７】
次に、図１６ａ〜図１６ｃを参照して、ホスト２への起動完了報告の一例を説明する。
【００８８】
ＮＳ管理表５４０に記録されている起動優先順位は、図１６ａに示すようにＮＳＩＤ０が第３位、ＮＳＩＤ１が第２位、ＮＳＩＤ２が第１位、ＮＳＩＤ３が第４位である。
【００８９】
図１６ｂに示す例では、記憶装置１への電力が供給されると、起動優先順位が第１位であるＮＳＩＤ２の位置情報群５５０の復元が開始される。そして、ＮＳＩＤ２の位置情報群５５０の復元が完了すると、記憶装置１はホスト２に対してＮＳＩＤ２の起動が完了した旨を報告する。その後、ＮＳ管理表５４０の起動優先順位に従い、ＮＳＩＤ１の位置情報群５５０の復元及びホスト２への起動完了報告、ＮＳＩＤ０の位置情報群５５０の復元及びホスト２への起動完了報告、ＮＳＩＤ３の位置情報群５５０の復元及びホスト２への起動完了報告が行われる。すべてのネームスペースについて位置情報群５５０の復元が完了すると、記憶装置１の起動が完了した旨がホスト２へ報告される。
【００９０】
図１６ｂでは各ネームスペースの位置情報群５５０の復元完了に伴い、記憶装置１が自発的に当該ネームスペースの起動完了をホスト２に報告した。これに対し、図１６ｃではホスト２からの問い合わせコマンドに対する応答として、起動完了したか、未完了であるかを報告する。
【００９１】
すなわち、図１６ｃに例示するように、記憶装置１への電力の供給に伴い、起動優先順位が第１位であるＮＳＩＤ２の位置情報群５５０の復元が開始される。ＮＳＩＤ２の位置情報群５５０の復元完了前に、ホスト２よりＮＳＩＤ２の起動が完了したか否かを問い合わせるコマンドを受信すると、記憶装置１は未完了である旨を報告する。また、ＮＳＩＤ２の位置情報群５５０の復元中に、まだ位置情報群５５０の復元を開始していないＮＳＩＤ０の起動が完了したか否かを問い合わせるコマンドを受信した時も、同様に、記憶装置１は未完了である旨を報告する。そして、ＮＳＩＤ２の位置情報群５５０の復元が完了後、ＮＳＩＤ２の起動が完了したか否かを問い合わせるコマンドを受信すると、記憶装置１は完了している旨を報告する。なお、この例では、記憶装置１は、１つのネームスペースの位置情報群５５０の復元が完了すると、次の起動優先順位のネームスペースの位置情報群５５０の復元を開始する。すべてのネームスペースについて位置情報群５５０の復元が完了すると、記憶装置１の起動が完了した旨がホスト２へ報告される。
【００９２】
次に、図１７を参照して、記憶装置１の起動時のＦＷの制御を説明する。
【００９３】
記憶装置１への電力供給（Ｓ３００）に伴いＣＰＵ４０は、まずＮＳ管理表５４０をＮＡＮＤ型フラッシュメモリ２０から読み出す（Ｓ３０１）。次に、ＣＰＵ４０は起動優先順位を示す変数ｉを１に初期化し（Ｓ３０２）、ＮＳ管理表５４０の起動優先順位に従い、起動優先順位が最も高い（すなわちｉ＝１）ネームスペースのログ領域からログ５３０を読み出し（Ｓ３０３）、ＲＡＭ３０上に位置情報群５５０を復元する（Ｓ３０４）。当該ネームスペースの位置情報群５５０の復元が完了するまで（Ｓ３０５：Ｎｏ）、ＣＰＵ４０は、ログ５３０の読み出し位置を更新し（Ｓ３０６）、ログ５３０の読み出し及びＲＡＭ３０への復元を繰り返す（Ｓ３０３〜Ｓ３０６）。
【００９４】
当該ネームスペースの位置情報群５５０の復元が完了すると（Ｓ３０５：Ｙｅｓ）、ＣＰＵ４０はホストＩＦ制御部２００に指示し、ホスト２に当該ネームスペースの起動完了を報告する（Ｓ３０７）。
【００９５】
すべてのネームスペースの起動が完了していない場合（Ｓ３０８：Ｎｏ）、ＣＰＵ４０は起動優先順位を示す変数ｉをインクリメントさせ（Ｓ３０９）、起動優先順位がｉであるネームスペースのログ領域からログ５３０を読み出し（Ｓ３０３）、ＲＡＭ３０上に位置情報群５５０を復元する（Ｓ３０４）。
【００９６】
すべてのネームスペースの起動が完了すると（Ｓ３０８：Ｙｅｓ）、ＣＰＵ４０はホストＩＦ制御部２００に指示し、ホスト２に記憶装置１の起動完了を報告する（Ｓ３１０）。
【００９７】
その後、翻訳情報５１０をＮＡＮＤ型フラッシュメモリ２０からＲＡＭ３０へキャッシュする（Ｓ３１１）。
【００９８】
次に、図１８ａ及び図１８ｂを参照して、起動優先順位を指定するコマンドの動作の一例を説明する。
【００９９】
図１８ａは、既存のネームスペースに対し起動優先順位を指定するコマンドの動作の一例である。図１８ａに示すように、例えば、ホスト２はＮＳＩＤ２の起動優先順位を第１位に指定する。このコマンドを受領した記憶装置１は、ＮＳ管理表５４０のＮＳＩＤ２の起動優先順位を第１位にした後、ホスト２に対して正常終了を報告する。
【０１００】
図１８ｂは、ネームスペースの生成と同時に起動優先順位を指定するコマンドの動作の一例である。図１８ａに示すように、例えば、ホスト２は起動優先順位が第１位であるＮＳＩＤ２を生成するように要求する。このコマンドを受領した記憶装置１は、論理アドレス空間にＮＳＩＤ２の領域を割り当て、また、ＮＳ管理表５４０のＮＳＩＤ２の起動優先順位を第１位にした後、ホスト２に対して正常終了を報告する。
【０１０１】
なお、上記いずれのコマンドに対しても、ホスト２に要求された動作を行うことができない場合、又は、この動作に失敗した場合、記憶装置１はホスト２にエラーを報告する。
【０１０２】
ここまで説明したように、ホスト２は、記憶装置１に対しネームスペースごとの起動優先順位を指定することにより、記憶装置１の起動時に優先して使用したいネームスペースを指定することができる。
【０１０３】
次に、図１９ａ及び図１９ｂを参照して、ネームスペースごとの起動優先順位とネームスペースごとの用途、及び記憶装置１からの起動完了報告の一例を説明する。
【０１０４】
ホスト２は、ネームスペースごとの用途、及び、起動優先順位をどのように設定するべきか決定する。ホスト２は、例えば各ネームスペースの用途を（ａ）ブートレコード、ＯＳカーネルイメージを記憶するネームスペース、（ｂ）ＯＳの起動に必要なシステムファイルを記憶するネームスペース、（ｃ）アプリケーションプログラムを記憶するネームスペース、（ｄ）ユーザデータを記憶するネームスペース、（ｅ）バックアップデータを記憶するネームスペースと決定する。また、ホスト２は、これらのネームスペースの起動優先順位を、（ａ）（ｂ）（ｃ）（ｄ）（ｅ）の順に高いものと決定する。そしてホスト２は記憶装置１に対し、起動優先順位を指定するコマンドを発行し、ネームスペースごとの起動優先順位を指定する。
【０１０５】
図１９ａに示す例では、ＮＳＩＤ０は起動優先順位が第３位に設定され、アプリケーションプログラムを記憶するために使用されている。ＮＳＩＤ１は起動優先順位が第２位に設定され、システムファイルを記憶するために使用されている。ＮＳＩＤ２は起動優先順位が第１位に設定され、ブートレコード、ＯＳカーネルイメージを記憶するために使用されている。ＮＳＩＤ３は起動優先順位が第４位に設定され、ユーザデータを記憶するために使用されている。ＮＳＩＤ４は起動優先順位が第５位に設定され、バックアップデータを記憶するために使用されている。
【０１０６】
このように各ネームスペースを設定することにより、ホスト２は他のユーザデータに先立ってＯＳの起動処理を行うことが可能となる。すなわち図１９ｂに示すように、ホスト２は起動優先順位が第１位であるＮＳＩＤ２の起動完了報告を受領することにより、ＯＳの起動処理を開始する。ホスト２は起動優先順位が第２位であるＮＳＩＤ１の起動完了報告を受領することにより、システムファイルの使用を開始する。ホスト２は起動優先順位が第３位であるＮＳＩＤ０の起動完了報告を受領することにより、アプリケーションプログラムの使用を開始する。これにより、記憶装置１全体の起動完了を待ってからホスト２がＯＳの起動処理を開始するようなシステムと比較して、システム全体としての起動時間を短縮することができる。
【０１０７】
また、システム起動時に優先的に使用したいユーザデータが記憶されているネームスペースを、優先的に起動させることができる。図１９ｂの例では、ホスト２は起動優先順位が第４位であるＮＳＩＤ３の起動完了報告を受領することにより、ユーザデータの使用を開始する。ホスト２は起動優先順位が第５位であるＮＳＩＤ４の起動完了報告を受領することにより、バックアップデータの使用を開始する。
【０１０８】
次に、図２０ａ及び図２０ｂを参照して、ネームスペースごとの起動優先順位とネームスペースごとの用途、及び記憶装置１からの起動完了報告の別の一例を説明する。
【０１０９】
図２０ａに示す例では、ＮＳＩＤ０は起動優先順位が第３位に設定され、ユーザデータＡを記憶するために使用されている。ＮＳＩＤ１は起動優先順位が第２位に設定され、ユーザデータＢを記憶するために使用されている。ＮＳＩＤ２は起動優先順位が第１位に設定され、オペレーティングシステム（ＯＳ）を記憶するために使用されている。ＮＳＩＤ３は起動優先順位が第４位に設定され、ユーザデータＣを記憶するために使用されている。
【０１１０】
ユーザデータＡ〜ユーザデータＣは、例えば複数のユーザのバーチャルマシンイメージに対応する。ユーザデータＢは、例えばユーザ全員が使用するデータに対応する。ユーザデータＡは、例えば優先度の高いライセンス契約をしているユーザが使用するデータに対応する。ユーザデータＣは、例えば優先度の低いライセンス契約をしているユーザが使用するデータに対応する。
【０１１１】
このように各ネームスペースを設定することにより、ホスト２は、システム起動時に優先的に使用したいユーザデータが記憶されているネームスペースを、優先的に起動させることができる。図２０ｂの例では、ホスト２は起動優先順位が第２位であるＮＳＩＤ１の起動完了報告を受領することにより、ユーザデータＢの使用を開始する。ホスト２は起動優先順位が第３位であるＮＳＩＤ０の起動完了報告を受領することにより、ユーザデータＡの使用を開始する。ホスト２は起動優先順位が第４位であるＮＳＩＤ３の起動完了報告を受領することにより、ユーザデータＣの使用を開始する。
【０１１２】
次に、図２１ａ〜図２１ｃを参照して、コマンドで指定された起動優先順位に重複があった場合の動作の一例を説明する。
【０１１３】
図２１ｂに示すように、例えば、ＮＳ管理表５４０に記録されている起動優先順位は、ＮＳＩＤ０が第３位、ＮＳＩＤ１が第２位、ＮＳＩＤ２が第１位、ＮＳＩＤ３が第４位、ＮＳＩＤ４が第５位である。
【０１１４】
この状態で、既存のネームスペースに対し起動優先順位を指定するコマンド（図１８ａのコマンド）によって、ホスト２がＮＳＩＤ４の起動優先順位を第３位に指定したとする。しかし、この時、起動優先順位の第３位はすでにＮＳＩＤ０に割り当てられている。このような場合、記憶装置１は、まず、コマンド指定の起動優先順位（第３位）をＮＳＩＤ４に設定する。また、既存のネームスペースのうち、コマンド指定のネームスペースではなく、且つ、コマンド指定の起動優先順位（第３位）以下の起動優先順位を有するネームスペースの起動優先順位は１つずつ低く設定される。すなわち、起動優先順位が第３位であったＮＳＩＤ０の起動優先順位は第４位に設定され、起動優先順位が第４位であったＮＳＩＤ３の起動優先順位は第５位に設定される。各ネームスペースの起動優先順位の設定が完了すると、記憶装置１はホスト２に対し、コマンドの正常終了を報告する。
【０１１５】
本コマンドで要求された動作が完了した後のＮＳ管理表５４０は図２１ｃに示すようになり、ＮＳＩＤ０が第４位、ＮＳＩＤ１が第２位、ＮＳＩＤ２が第１位、ＮＳＩＤ３が第５位、ＮＳＩＤ４が第３位となる。
【０１１６】
次に、図２２ａ〜図２２ｃを参照して、コマンドで指定された起動優先順位に重複があった場合の動作の別の一例を説明する。ここではネームスペースの生成と同時に起動優先順位を指定するコマンド（図１８ｂのコマンド）を受信した時の動作を説明する。なお、コマンド受信前のＮＳ管理表５４０の状態を示す図２２ｂは、図２１ｂと等しい。
【０１１７】
ネームスペースの生成と同時に起動優先順位を指定するコマンドによって、ホスト２は起動優先順位が第３位であるＮＳＩＤ５を生成するように要求するが、起動優先順位の第３位はすでにＮＳＩＤ０に割り当てられている。このような場合、記憶装置１は、まずコマンド指定の起動優先順位（第３位）をＮＳＩＤ５に設定する。また、既存のネームスペースのうち、コマンド指定のネームスペースではなく、且つ、コマンド指定の起動優先順位（第３位）以下の起動優先順位を有するネームスペースの起動優先順位は１つずつ低く設定される。すなわち、起動優先順位が第３位であったＮＳＩＤ０の起動優先順位は第４位に設定され、起動優先順位が第４位であったＮＳＩＤ３の起動優先順位は第５位に設定され、起動優先順位が第５位であったＮＳＩＤ４の起動優先順位は第６位に設定される。ＮＳＩＤ５の生成、及び、各ネームスペースの起動優先順位の設定が完了すると、記憶装置１はホスト２に対し、コマンドの正常終了を報告する。
【０１１８】
本コマンドで要求された動作が完了した後のＮＳ管理表５４０は図２２ｃに示すようになり、ＮＳＩＤ０が第４位、ＮＳＩＤ１が第２位、ＮＳＩＤ２が第１位、ＮＳＩＤ３が第５位、ＮＳＩＤ４が第６位、ＮＳＩＤ５が第３位となる。
【０１１９】
図２１ａ〜図２１ｃ、図２２ａ〜図２２ｃのいずれの場合においても、記憶装置１がホスト２に要求された動作を行うことができない場合、又は、この動作に失敗した場合、特に、起動優先順位の重複を許容しない場合は、記憶装置１はホスト２にエラーを報告するようにしてもよい。
【０１２０】
また、コマンド指定の起動優先順位がＮＳ管理表５４０に反映された結果、ＮＳ管理表５４０に記録されている起動優先順位に不連続性が生じた場合には、記憶装置１は、起動優先順位が連続になるように起動優先順位を変更してもよい。例えば、コマンド指定の起動優先順位がＮＳ管理表５４０に反映された結果、ＮＳ管理表５４０に記録されている起動優先順位が第１位、第２位、第４位となった場合に、ＮＳ管理表５４０を書き換え、起動優先順位が第１位、第２位、第３位となるように変更してもよい。
【０１２１】
次に、図２３を参照して、起動優先順位を指定するコマンドを受信した時のＦＷの制御を説明する。
【０１２２】
起動優先順位を指定するコマンドを受信（Ｓ４００）すると、ＣＰＵ４０は、コマンドで指定されたネームスペース（指定ネームスペース）に、コマンドで指定された起動優先順位を設定する（Ｓ４０１）。次に、ＣＰＵ４０は、指定された起動優先順位が既存の起動優先順位と重複していないかをチェックする（Ｓ４０２）。
【０１２３】
コマンドで指定された起動優先順位が既存の起動優先順位のいずれかと重複している場合（Ｓ４０２：Ｙｅｓ）、指定ネームスペース以外のネームスペースであって、コマンドで指定された起動優先順位以下の起動優先順位を有するネームスペースについては、起動優先順位が１ずつ低く設定される（Ｓ４０３）。
【０１２４】
次にＣＰＵ４０は、ＮＳ管理表５４０に記録されている起動優先順位に不連続性がないかをチェックする（Ｓ４０４）。起動優先順位に不連続性がある場合（Ｓ４０４：Ｙｅｓ）、ＣＰＵ４０は、不連続性を解消するように起動優先順位を変更してもよい（Ｓ４０５）。
【０１２５】
（Ｓ４０１）又は（Ｓ４０３）又は（Ｓ４０５）により、すべてのネームスペースについて起動優先順位の設定が完了すると、ＣＰＵ４０はホストＩＦ制御部２００に指示し、ホスト２にコマンドの正常終了を報告する（Ｓ４０６）。
【０１２６】
次に、図２４ａ〜図２４ｃを参照して、起動優先順位を問い合わせるためのコマンドの動作の一例を説明する。
【０１２７】
図２４ａに示すように、例えば、ＮＳ管理表５４０に記録されている起動優先順位は、ＮＳＩＤ０が第３位、ＮＳＩＤ１が第２位、ＮＳＩＤ２が第１位、ＮＳＩＤ３が第４位、ＮＳＩＤ４が第５位である。
【０１２８】
図２４ｂでは、記憶装置１はホスト２からＮＳＩＤ３の起動優先順位を問い合わせるコマンドを受信している。ＣＰＵ４０はＮＳ管理表５４０を検索し、ＮＳＩＤ３の起動優先順位（第４位）を取得した後、ホストＩＦ制御部２００に指示し、ホスト２に対してＮＳＩＤ３の起動優先順位として第４位を報告する。
【０１２９】
図２４ｃでは、記憶装置１はホスト２から起動優先順位が第４位であるネームスペースＩＤを問い合わせるコマンドを受信している。ＣＰＵ４０はＮＳ管理表５４０を検索し、起動優先順位が第４位であるネームスペースＩＤ（ＮＳＩＤ３）を取得した後、ホストＩＦ制御部２００に指示し、ホスト２に対して起動優先順位が第４位であるネームスペースＩＤとしてＮＳＩＤ３を報告する。
【０１３０】
なお、図２４ｂ・図２４ｃのいずれの場合も、ホスト２からの問い合わせに適合するネームスペースＩＤ又は起動優先順位がＮＳ管理表５４０に記録されていない場合には、記憶装置１はホスト２に対してエラーを報告する。
【０１３１】
以上説明した少なくとも１つの実施形態の記憶装置によれば、ホストがネームスペースごとの起動優先順位を指定し、記憶装置は起動優先順位の高いネームスペースから順に起動処理を行うので、システム全体としての起動時間を短縮することができる。
【０１３２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３３】
１…記憶装置、２…ホスト、１０…コントローラ、２０…不揮発性記憶媒体、３０…ＲＡＭ、４０…ＣＰＵ、１００…メモリチップ、２００…ホストＩＦ制御部、２１０…バッファ制御部、２２０…ＮＡＮＤ制御部、３００…物理ページ、３１０…物理ブロック、３２０…クラスタ、４００…論理ページ、４１０…論理ブロック、５００…ユーザデータ、５１０ａ…翻訳情報、５１０ｂ…翻訳情報（キャッシュ）、５２０ａ…翻訳情報群、５２０ｂ…翻訳情報群（キャッシュ）、５３０…ログ、５４０…ＮＳ管理表、５５０…位置情報群、５６０…位置情報
【図１】
2020102237.tif 000003
【図２】
2020102237.tif 000004
【図３】
2020102237.tif 000005
【図４】
2020102237.tif 000006
【図５】
2020102237.tif 000007
【図６】
2020102237.tif 000008
【図７】
2020102237.tif 000009
【図８】
2020102237.tif 000010
【図９】
2020102237.tif 000011
【図１０】
2020102237.tif 000012
【図１１】
2020102237.tif 000013
【図１２】
2020102237.tif 000014
【図１３】
2020102237.tif 000015
【図１４】
2020102237.tif 000016
【図１５】
2020102237.tif 000017
【図１６】
2020102237.tif 000018
【図１７】
2020102237.tif 000019
【図１８】
2020102237.tif 000020
【図１９】
2020102237.tif 000021
【図２０】
2020102237.tif 000022
【図２１】
2020102237.tif 000023
【図２２】
2020102237.tif 000024
【図２３】
2020102237.tif 000025
【図２４】
2020102237.tif 000026