(57)【要約】【課題】ライト要求のキャンセルの性能を適応的に制御可能なメモリシステムを提供することである。【解決手段】実施形態によれば、メモリシステムは、第１メモリと、制御部と、を具備する。制御部は、機能拡張された拡張ライトが要求され、且つ、当該拡張ライトがキャンセルされた場合、前記書き込みデータに対応する論理アドレスと第１メモリの物理アドレスとを対応づける対応情報を、拡張ライトが行われなかった場合の状態とする。制御部は、拡張ライト毎に、対応情報の更新処理を第１更新処理または第２更新処理の何れかから選択する。第１更新処理は、拡張ライトのキャンセルがもはや発生しないことが確定するまで対応情報の更新を保留し、キャンセル時、その更新を取り止める処理である。第２更新処理は、第１メモリへの書き込みに関するログ情報を用いて、拡張ライトが行われなかった場合の状態に対応情報を更新する処理である。【選択図】図１
2017107318.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の第１メモリと、
前記第１メモリへの書き込みデータを受信中または受信後に当該書き込みデータの前記第１メモリへの書き込みを伴うデータの書き込み要求を無かったものとすべくキャンセルされ得る機能拡張された拡張ライトが要求され、且つ、当該拡張ライトがキャンセルされた場合、前記書き込みデータに対応する論理アドレスと前記第１メモリの物理アドレスとを対応づける対応情報を、当該拡張ライトの書き込みデータのすべてが前記第１メモリへ書き込まれなかった場合の状態とする制御部と、を具備し、
前記制御部は、要求された拡張ライト毎に、その拡張ライトのキャンセルに対応すべく適用する前記対応情報の更新処理を、第１更新処理または第２更新処理の何れかから選択し、
前記第１更新処理は、前記拡張ライトのキャンセルがもはや発生しないことが確定するまでの間、当該拡張ライトの書き込みデータの前記第１メモリへの書き込みに伴う前記対応情報の更新を保留し、当該拡張ライトがキャンセルされた場合、保留した前記対応情報の更新を取り止める処理、または、前記書き込みデータの前記第１メモリへの書き込みを保留し、当該拡張ライトがキャンセルされた場合、保留した前記書き込みデータの前記第１メモリへの書き込みを取り止める処理であり、
前記第２更新処理は、前記拡張ライトの書き込みデータの前記第１メモリへの書き込みに伴って更新された前記対応情報を、前記第１メモリへの書き込みに関するログ情報を用いて、当該拡張ライトの書き込みデータが前記第１メモリへ書き込まれなかった場合の状態に更新する処理である、
メモリシステム。
【請求項２】
前記第１メモリよりもデータ転送速度が速い第２メモリを具備し、
前記制御部は、前記第１更新処理として、
前記拡張ライトの書き込みデータの書き込み先として指定される論理アドレスと、当該書き込みデータの前記第１メモリへの書き込みにより前記論理アドレスに対応づけられる前記第１メモリの物理アドレスと、を含む前記対応情報の更新データを前記第２メモリに格納し、
前記拡張ライトのキャンセルがもはや発生しないことが確定した場合、前記第２メモリに格納される前記更新データを用いて前記対応情報を更新し、
前記拡張ライトがキャンセルされた場合、前記第２メモリに格納される前記更新データを破棄する、
請求項１に記載のメモリシステム。
【請求項３】
前記ログ情報は、書き込みデータの書き込み先として指定された論理アドレスと、当該書き込みデータの前記第１メモリへの書き込み前に前記論理アドレスに対応づけられていた前記第１メモリの旧物理アドレスと、当該書き込みデータの前記第１メモリへの書き込みにより前記論理アドレスに新たに対応づけられた前記第１メモリの新物理アドレスと、を含み、
前記制御部は、前記第２更新処理として、前記ログ情報を最後尾の最新の書き込みからキャンセルされた拡張ライトの最初の書き込みまで時間的に逆方向に参照して、前記対応情報内の当該キャンセルされた拡張ライトの書き込みデータの書き込み先として指定された前記論理アドレスに対応づけられている新物理アドレスを旧物理アドレスに更新する、
請求項１に記載のメモリシステム。
【請求項４】
前記ログ情報は、書き込みデータの書き込み先として指定された論理アドレスと、当該書き込みデータの前記第１メモリへの書き込みにより前記論理アドレスに新たに対応づけられた前記第１メモリの新物理アドレスと、を含み、
前記制御部は、前記第２更新処理として、キャンセルされた拡張ライトの最初の書き込み以前にバックアップされた前記対応情報を読み出し、前記ログ情報を前記読み出した対応情報のバックアップ時以降の書き込みから最後尾の最新の書き込みまで時間的に順方向に参照して、前記読み出した対応情報内の当該キャンセルされた拡張ライト以外の書き込みデータの書き込み先として指定された論理アドレスに対応づけられている旧物理アドレスを新物理アドレスに更新する、
請求項１に記載のメモリシステム。
【請求項５】
前記第１メモリよりもデータ転送速度が速い第２メモリを具備し、
前記制御部は、要求された拡張ライトに必要な、保留される更新の内容を示す前記対応情報の更新データのサイズが、前記更新データを格納するために前記第２メモリ上に確保される格納領域内の空き領域のサイズを超えない場合、前記対応情報の処理として前記第１更新処理を選択する、
請求項１に記載のメモリシステム。
【請求項６】
前記制御部は、
前記更新データのサイズと、前記対応情報の更新処理を示す識別子と、を拡張ライト毎に記録するための第１管理情報を有し、
要求された拡張ライトに必要な前記更新データのサイズが前記格納領域内の空き領域のサイズを超える場合、前記第１管理情報を参照して、前記対応情報の更新処理として前記第１更新処理が適用される１以上の他の拡張ライトを選出し、
前記選出した他の拡張ライトに適用される前記対応情報の更新処理を前記第１更新処理から前記第２更新処理へ変更し、当該他の拡張ライトに関する前記更新データを前記対応情報に反映させて前記格納領域上から消去し、前記要求された拡張ライトに必要な前記更新データのサイズ以上の空き領域を前記格納領域内に確保して、前記要求された拡張ライトに適用される前記対応情報の更新処理として前記第１更新処理を選択する、
請求項５に記載のメモリシステム。
【請求項７】
前記制御部は、前記更新データのサイズが小さい順に前記他の拡張ライトを選出していく請求項６に記載のメモリシステム。
【請求項８】
前記第１メモリは、ホスト装置により、ユーザデータの記憶領域が複数の領域に分割され、
前記第１管理情報は、書き込みデータの書き込み先として指定される前記分割された複数の領域の中のいずれか１つの領域を示す識別子を拡張ライト毎にさらに記録し、
前記制御部は、
前記更新データの合計サイズと、キャンセルされた拡張ライトに関する前記更新データの合計サイズと、を前記分割された複数の領域毎に記録するための第２管理情報をさらに有し、
要求された拡張ライトに必要な前記更新データのサイズが前記格納領域内の空き領域のサイズを超える場合、前記第２管理情報を参照して、キャンセルされた拡張ライトに関する前記更新データの合計サイズを前記更新データの合計サイズで除して得られるロールバック率が前記要求された拡張ライトで指定される領域よりも低い領域を前記分割された複数の領域の中から検出し、
前記第１管理情報を参照して、書き込みデータの書き込み先として前記検出された領域が指定され、前記対応情報の更新処理として前記第１更新処理が適用され、かつ、当該要求された拡張ライトに必要な前記更新データのサイズよりも前記更新データのサイズが小さい１以上の他の拡張ライトを選出する、
請求項６に記載のメモリシステム。
【請求項９】
前記第１メモリは、ホスト装置により、ユーザデータの記憶領域が複数の領域に分割され、
前記制御部は、
前記ホスト装置からの要求に基づき、前記分割された複数の領域それぞれの前記対応情報の更新処理を、前記第１更新処理が適用される第１設定、前記第２更新処理が適用される第２設定、または、前記第１更新処理もしくは前記第２更新処理の一方が適応的に選択される第３設定のいずれかに設定し、
要求された拡張ライトが書き込みデータの書き込み先として指定する領域が前記第１設定の設定が行われた領域である場合、前記対応情報の更新処理として前記第１更新処理を選択し、
要求された拡張ライトが書き込みデータの書き込み先として指定する領域が前記第２設定の設定が行われた領域である場合、前記対応情報の更新処理として前記第２更新処理を選択し、
要求された拡張ライトが書き込みデータの書き込み先として指定する領域が前記第３設定の設定が行われた領域である場合であって、当該拡張ライトに必要な、保留される更新の内容を示す前記対応情報の更新データのサイズが、前記更新データを格納するために前記第１メモリよりもデータ転送速度が速い第２メモリ上に確保される格納領域内の空き領域のサイズを超えない場合、前記対応情報の更新処理として前記第１更新処理を選択する、
請求項１に記載のメモリシステム。
【請求項１０】
前記制御部は、
前記第１設定、前記第２設定または前記第３設定の中のいずれが指定されているのかを示す識別子と、前記更新データの合計サイズと、キャンセルされた拡張ライトに関する前記更新データの合計サイズと、を前記分割された複数の領域毎に記録するための第２管理情報と、
書き込みデータの書き込み先として指定される前記分割された複数の領域の中のいずれか１つの領域を示す識別子と、前記更新データのサイズと、前記対応情報の更新処理を示す識別子と、を拡張ライト毎に記録するための第１管理情報と、
を有し、
要求された拡張ライトが書き込みデータの書き込み先として指定する領域が前記第３設定の設定が行われた領域である場合であって、当該拡張ライトに必要な前記更新データのサイズが前記格納領域内の空き領域のサイズを超える場合、前記第２管理情報を参照して、前記第３設定の設定が行われ、かつ、キャンセルされた拡張ライトに関する前記更新データの合計サイズを前記更新データの合計サイズで除して得られるロールバック率が前記要求された拡張ライトで指定される領域よりも低い領域を前記分割された複数の領域の中から検出し、
前記第１管理情報を参照して、書き込みデータの書き込み先として前記検出された領域が指定され、前記対応情報の更新処理として前記第１更新処理が適用される１以上の他の拡張ライトを選出し、
前記選出した他の拡張ライトに適用される前記対応情報の更新処理を前記第１更新処理から前記第２更新処理へ変更して当該他の拡張ライトに関する前記更新データを前記対応情報に反映させて前記格納領域上から消去し、前記要求された拡張ライトに必要な前記更新データのサイズ以上の空き領域を前記格納領域内に確保して、前記要求された拡張ライトに適用される前記対応情報の更新処理として前記第１更新処理を選択する、
請求項９に記載のメモリシステム。
【請求項１１】
前記制御部は、前記他の拡張ライトに関する前記更新データを前記対応情報に反映させて前記格納領域上から消去した後の前記格納領域内の空き領域のサイズが前記要求された拡張ライトに必要な前記更新データのサイズ以上とならなかった場合、前記対応情報の更新処理として前記第２更新処理を選択する請求項６、８または１０に記載のメモリシステム。
【請求項１２】
前記制御部は、ロールバック率が低い順に前記要求された拡張ライトで指定される領域よりも低い領域を検出していき、かつ、前記更新データのサイズが小さい順に前記他の拡張ライトを選出していく請求項８または１０に記載のメモリシステム。
【請求項１３】
不揮発性の第１メモリと、
前記第１メモリよりもデータ転送速度が速い第２メモリと、
前記第１メモリへの書き込みデータを受信中または受信後に当該書き込みデータの前記第１メモリへの書き込みを伴うデータの書き込み要求を無かったものとすべくキャンセルされ得る機能拡張された拡張ライトが要求され、且つ、当該拡張ライトがキャンセルされた場合、前記書き込みデータに対応する論理アドレスと前記第１メモリの物理アドレスとを対応づける対応情報を、当該拡張ライトの書き込みデータのすべてが前記第１メモリへ書き込まれなかった場合の状態とする制御部と、を具備し、
前記制御部は、
前記拡張ライトの書き込みデータの書き込み先として指定される論理アドレスと、当該書き込みデータの前記第１メモリへの書き込みにより前記論理アドレスに対応づけられる前記第１メモリの物理アドレスと、を含む前記対応情報の更新データを前記第２メモリに格納し、
前記拡張ライトのキャンセルがもはや発生しないことが確定した場合、前記第２メモリに格納される前記更新データを用いて前記対応情報を更新し、
前記拡張ライトがキャンセルされた場合、前記第２メモリに格納される前記更新データを破棄する、メモリシステム。
【請求項１４】
不揮発性の第１メモリと、
前記第１メモリへの書き込みデータを受信中または受信後に当該書き込みデータの前記第１メモリへの書き込みを伴うデータの書き込み要求を無かったものとすべくキャンセルされ得る機能拡張された拡張ライトが要求され、且つ、当該拡張ライトがキャンセルされた場合、前記書き込みデータに対応する論理アドレスと前記第１メモリの物理アドレスとを対応づける対応情報を、当該拡張ライトの書き込みデータのすべてが前記第１メモリへ書き込まれなかった場合の状態に更新する制御部と、を具備し、
前記制御部は、キャンセルされた拡張ライトの最初の書き込み以前にバックアップされた前記対応情報を読み出し、書き込みデータの書き込み先として指定された論理アドレスと、当該書き込みデータの前記第１メモリへの書き込みにより前記論理アドレスに新たに対応づけられた前記第１メモリの新物理アドレスと、を含む、前記第１メモリへの書き込みに関するログ情報を、前記読み出した対応情報のバックアップ時以降の書き込みから最後尾の最新の書き込みまで時間的に順方向に参照して、前記読み出した対応情報内の当該キャンセルされた拡張ライト以外の書き込みデータの書き込み先として指定された論理アドレスに対応づけられている旧物理アドレスを新物理アドレスに更新する、メモリシステム。
【請求項１５】
内蔵または外部接続されるメモリシステムが備えるユーザデータの記憶領域を複数の領域に分割する第１設定手段と、
前記複数の領域毎に、前記記憶領域への書き込みデータを送信中または送信後に当該書き込みデータの前記記憶領域への書き込みを伴うデータの書き込み要求を無かったものとすべくキャンセルし得る機能拡張された拡張ライトのキャンセルに関する情報であって、当該キャンセルの性能を指定する情報を設定する第２設定手段と、
を具備する情報処理装置。
【請求項１６】
不揮発性の第１メモリを備えるメモリシステムの処理方法であって、
前記第１メモリへの書き込みデータを受信中または受信後に当該書き込みデータの前記第１メモリへの書き込みを伴うデータの書き込み要求を無かったものとすべくキャンセルされ得る機能拡張された拡張ライトが要求され、且つ、当該拡張ライトがキャンセルされた場合、前記書き込みデータに対応する論理アドレスと前記第１メモリの物理アドレスとを対応づける対応情報を、当該拡張ライトの書き込みデータのすべてが前記第１メモリへ書き込まれなかった場合の状態とするための処理を行うことを具備し、
前記処理を行うことは、要求された拡張ライト毎に、その拡張ライトのキャンセルに対応すべく適用する前記対応情報の更新処理を、第１更新処理または第２更新処理の何れかから選択することを含み、
前記第１更新処理は、前記拡張ライトのキャンセルがもはや発生しないことが確定するまでの間、当該拡張ライトの書き込みデータの前記第１メモリへの書き込みに伴う前記対応情報の更新を保留し、当該拡張ライトがキャンセルされた場合、保留した前記対応情報の更新を取り止める処理、または、前記書き込みデータの前記第１メモリへの書き込みを保留し、当該拡張ライトがキャンセルされた場合、保留した前記書き込みデータの前記第１メモリへの書き込みを取り止める処理であり、
前記第２更新処理は、前記拡張ライトの書き込みデータの前記第１メモリへの書き込みに伴って更新された前記対応情報を、前記第１メモリへの書き込みに関するログ情報を用いて、当該拡張ライトの書き込みデータが前記第１メモリへ書き込まれる前の状態に復元する処理である、
処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム、情報処理装置および処理方法に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの１つとして、ＮＡＮＤ型フラッシュメモリを備えるＳＳＤ（Solid State Drive）が知られている。ＳＳＤは、様々な情報処理装置のメインストレージとして使用されている。
【０００３】
また、データの整合性を保つために、ＳＳＤ等のメモリシステムに実装し得る機能の１つとして、Atomic Write機能が知られている。Atomic Write機能は、Atomic Writeとして書き込みが要求された場合、データを受け取った後でも、書き込みを確定する要求を受ける前であれば、Atomic Writeで書き込もうとしたデータをキャンセルすること、より具体的には、データの書き込み要求を無かったものとすることを可能とする。Atomic Write機能は、書き込みがキャンセルされた場合、メモリシステムの（論理的な）状態を、その書き込みが実施されていない状態に戻すこと（ロールバック）を保証する。Atomic Write機能におけるロールバックを、ここでは、Atomic Writeキャンセルと称する。Atomic Write機能では、Atomic Writeとして書き込みが要求された場合、その要求に関わるデータを、すべてコミットするか、すべてキャンセルする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１４／０２３１５９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
メモリシステムに対して要求されるAtomic Writeの性能は、例えばアプリケーションプログラム毎などにより異なり得る。従って、メモリシステムは、ライト要求のキャンセルの性能を適応的に制御可能であることが望ましい。
【０００６】
本発明が解決しようとする課題は、ライト要求のキャンセルの性能を適応的に制御可能なメモリシステム、情報処理装置および処理方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、メモリシステムは、不揮発性の第１メモリと、制御部と、を具備する。前記制御部は、前記第１メモリへの書き込みデータを受信中または受信後に当該書き込みデータの前記第１メモリへの書き込みを伴うデータの書き込み要求を無かったものとすべくキャンセルされ得る機能拡張された拡張ライトが要求され、且つ、当該拡張ライトがキャンセルされた場合、前記書き込みデータに対応する論理アドレスと前記第１メモリの物理アドレスとを対応づける対応情報を、当該拡張ライトの書き込みデータのすべてが前記第１メモリへ書き込まれなかった場合の状態とする。前記制御部は、要求された拡張ライト毎に、その拡張ライトのキャンセルに対応すべく適用する前記対応情報の更新処理を、第１更新処理または第２更新処理の何れかから選択する。前記第１更新処理は、前記拡張ライトのキャンセルがもはや発生しないことが確定するまでの間、当該拡張ライトの書き込みデータの前記第１メモリへの書き込みに伴う前記対応情報の更新を保留し、当該拡張ライトがキャンセルされた場合、保留した前記対応情報の更新を取り止める処理、または、前記書き込みデータの前記第１メモリへの書き込みを保留し、当該拡張ライトがキャンセルされた場合、保留した前記書き込みデータの前記第１メモリへの書き込みを取り止める処理である。前記第２更新処理は、前記拡張ライトの書き込みデータの前記第１メモリへの書き込みに伴って更新された前記対応情報を、前記第１メモリへの書き込みに関するログ情報を用いて、当該拡張ライトの書き込みデータが前記第１メモリへ書き込まれなかった場合の状態に更新する処理である。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係るメモリシステムの構成の一例を示す図。
【図２】実施形態のメモリシステムにおけるＮＡＮＤメモリでのデータ処理単位と位置管理単位を模式的に示す図。
【図３】実施形態のメモリシステムにおいて用いられるアドレス変換テーブルの一例を示す図。
【図４】実施形態のメモリシステムにおいて用いられる有効クラスタ数管理テーブルの一例を示す図。
【図５】実施形態におけるログ情報の一例を示す図。
【図６】通常WriteコマンドとAtomic Writeコマンドとの違いを示す概念図。
【図７】Atomic Writeの基本的な動作例を示す図。
【図８】実施形態のメモリシステムが実装するAtomic Write機能が備えるＬＵＴ更新保留方式の概要を説明するための図。
【図９】実施形態のメモリシステムが実装するAtomic Write機能が備えるＬＵＴ巻戻方式の概要を説明するための図。
【図１０】実施形態のメモリシステムが実装するAtomic Write機能が備えるＬＵＴ巻戻方式の実現方式として考えられる２つの方式（逆方向方式、順方向方式）の概要を説明するための図。
【図１１】実施形態のメモリシステムの記憶領域（ＮＡＮＤメモリ・更新保存用ＲＡＭ領域）が複数に分割される一例を示す図。
【図１２】実施形態のメモリシステムにおいて用いられるＡＷ属性管理テーブルの一例を示す図。
【図１３】実施形態のメモリシステムにおいて用いられるＡＷ実行管理テーブルの一例を示す図。
【図１４】実施形態のメモリシステムにおけるＬＵＴ更新保留方式またはＬＵＴ巻戻方式の適応的な選択の動作例を説明するための図。
【図１５】実施形態のメモリシステムにおいて実行されるNameSpaceに対するＡＷ属性設定処理の手順の一例を示す図。
【図１６】実施形態のメモリシステムのAtomic Write開始時における動作手順の一例を示す図。
【図１７】実施形態のメモリシステムにおいて実行されるＬＵＴ更新保留方式またはＬＵＴ巻戻方式の判定処理の手順の一例を示す図。
【図１８】実施形態のメモリシステムにおいて実行されるＬＵＴ更新保留方式からＬＵＴ巻戻方式への変更処理の手順の一例を示す図。
【図１９】実施形態のメモリシステムのAtomic Write中における動作手順の一例を示す図。
【図２０】実施形態のメモリシステムのAtomic Write完了時における動作手順の一例を示す図。
【図２１】実施形態のメモリシステムのAtomic Writeキャンセル（ロールバック）時における動作手順の一例を示す図。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。
【００１０】
図１は、実施形態に係るメモリシステムの構成の一例を示す図である。このメモリシステム１０は、例えば、ＳＳＤである。以下では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）を用いる場合を例に挙げる。また、本実施形態のメモリシステム１０は、Atomic Write機能を実装する。
【００１１】
メモリシステム１０は、ホストインタフェース部１１、第１メモリであるＮＡＮＤメモリ１２、ＮＡＮＤコントローラ１３、第２メモリであるＲＡＭ（Random Access Memory）１４および制御部１５を備える。
【００１２】
ホストインタフェース部１１は、コンピュータまたはＣＰＵ（Central Processing Unit）コアなどの図示しないホスト装置との間のインタフェースである。このインタフェースとしては、ＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA[Advanced Technology Attachment]）、Atomic Write機能をサポートするＮＶＭｅ（NVM Express）が動作するＰＣＩｅ（PCI express）等が使用し得る。
【００１３】
ＮＡＮＤメモリ１２は、データを不揮発に記憶することができる記憶媒体であり、ユーザデータもしくはプログラム、またはメモリシステム１０内でのデータなどの格納位置（記録位置）を管理する管理情報などの保存用の記憶部として使用される。具体的には、ホスト装置側によって指定されたデータまたはプログラムなどを格納するユーザデータ格納領域１２１と、ＮＡＮＤメモリ１２でのデータ記録位置を管理する管理情報などを格納する管理情報格納領域１２２と、を有する。
【００１４】
図２は、実施形態におけるＮＡＮＤメモリでのデータ処理単位と位置管理単位を模式的に示す図である。ＮＡＮＤメモリ１２においては、物理ページが複数個集まって１論理ページとなり、また、論理ページが複数個集まって１論理ブロックとなる。データの書き込み単位は、１論理ページ単位、より具体的には、１論理ページを構成しているバンク単位である。
【００１５】
また、１物理ページより小さい単位であるクラスタ単位に対して物理アドレスが割り当てられる。従って、後述する論理アドレスと物理アドレスの対応関係を保持するアドレス変換テーブルは、クラスタ単位で管理される。クラスタサイズは、たとえばホスト装置からの最小アクセス単位であるセクタサイズの自然数倍のサイズであり、たとえばクラスタサイズの自然数倍が物理ページサイズとなるように定められる。図２の場合では、１物理ページは１０クラスタで構成されるものとし、１論理ページは、別々のＮＡＮＤメモリのｎ物理ページ（ｎは自然数）で構成されるものとする。
【００１６】
図１に戻り、管理情報格納領域１２２には、ＮＡＮＤメモリ１２内でのデータの記憶位置を管理する管理情報を記憶するアドレス変換テーブル１２２１と、アドレス変換テーブル１２２１の格納位置を示すアドレス変換テーブル記憶位置情報１２２２と、各論理ブロックにおける有効クラスタ数を示す有効クラスタ数管理テーブル１２２３と、メモリシステム１０の電源断、ホストインタフェースの切断、またはアボート要求などの書き込みを中断すべき要因（以下、書き込み中断要因という）発生時にユーザデータが書かれた最後の物理アドレスである中断時書き込み位置情報１２２４と、を含む情報が格納される。
【００１７】
図３は、管理情報としてのアドレス変換テーブルの一例を示す図である。ＮＡＮＤメモリ１２では、クラスタ単位でデータの記録位置を管理している。アドレス変換テーブル１２２１は、クラスタ単位のデータに対する論理アドレスと、そのデータの物理的なデータ記録位置、つまり物理アドレスと、を対応付ける管理情報である。論理アドレスは、ホストからみたメモリシステムのデータの論理アドレス空間上における位置を特定するために使われるアドレスである。また、物理アドレスは、ＮＡＮＤメモリ１２内でのデータの記録位置に対してクラスタ単位で物理的に割り当てられるアドレスである。
【００１８】
図４は、管理情報としての有効クラスタ数管理テーブルの一例を示す図である。ＮＡＮＤメモリ１２では、論理ブロック単位で有効データが格納されたクラスタ（有効クラスタ）の数を管理している。有効クラスタ数管理テーブル１２２３は、ＮＡＮＤメモリ１２内の各論理ブロックに付された識別子（論理ブロック番号）と、その論理ブロックに存在する有効クラスタ数と、を対応付けている。
【００１９】
ＮＡＮＤコントローラ１３は、ＮＡＮＤメモリ１２とのインタフェース処理を行う。ここでは、詳細を省略するが、ＮＡＮＤコントローラ１３は、誤り訂正処理やＮＡＮＤメモリ１２とＲＡＭ１４との間のアクセス制御などの処理を行う。
【００２０】
図１に戻り、ＲＡＭ１４は、ホスト装置とＮＡＮＤメモリ１２との間でのデータ転送用バッファ、またはＮＡＮＤメモリ１２内で移動されるデータの一時記憶用バッファとして機能するデータバッファ領域１４１と、ＮＡＮＤメモリ１２内でのデータの記録位置を管理する管理情報を記憶する管理情報記憶領域１４２と、を有する。データバッファ領域１４１は、ホスト装置からの読み出し要求時にＮＡＮＤメモリ１２から読み出したデータを一時的に記憶する読み出しバッファ１４１１と、ホスト装置からの書き込み要求時にＮＡＮＤメモリ１２へ書き込むデータを一時的に記憶する書き込みバッフア１４１２と、を有する。
【００２１】
管理情報記憶領域１４２は、上記したようにＮＡＮＤメモリ１２内でのデータの記憶位置を管理する管理情報として、アドレス変換テーブル１４２１と、有効クラスタ数管理テーブル１４２２と、を有する。アドレス変換テーブル１４２１は、メモリシステム１０起動時に、ＮＡＮＤメモリ１２のアドレス変換テーブル１２２１の一部または全部がＲＡＭ１４の管理情報記憶領域１４２に読み出されたものである。また、有効クラスタ数管理テーブル１４２２も、メモリシステム１０起動時にＮＡＮＤメモリ１２の有効クラスタ数管理テーブル１２２３がＲＡＭ１４の管理情報記憶領域１４２に読み出されたものである。
【００２２】
また、ＲＡＭ１４には、後述するＡＷ（Atomic Write）属性管理テーブル１４３１およびＡＷ（Atomic Write）実行管理テーブル１４３２が格納される。
【００２３】
この実施形態においては、ＮＡＮＤメモリ１２へのデータの書き込みまたはＮＡＮＤメモリ１２内でのデータの消去などによって、データ記録位置（論理アドレスと物理アドレスとの対応関係）に変更が生じた場合には、ＲＡＭ１４上の管理情報はその都度更新されるが、ＮＡＮＤメモリ１２に格納されている管理情報に対する変更差分はログとして蓄積している。これによって、書き込み中断要因発生に対しても管理情報を復元可能としている。また、ＲＡＭ１４に格納されている管理情報は、たとえばメモリシステム１０の電源がオフされる際などの所定のタイミングでＮＡＮＤメモリ１２へと格納される。
【００２４】
なお、ＲＡＭ１４として、ＤＲＡＭ（Dynamic RAM）、ＳＲＡＭ（Static RAM）、ＦｅＲＡＭ（Ferroelectric RAM）、ＭＲＡＭ（Magnetoresistive RAM）、ＰＲＡＭ（Phase change RAM）などを用いることができる。
【００２５】
制御部１５は、ホスト装置とＮＡＮＤメモリ１２との間でのデータ転送制御処理、またはＮＡＮＤメモリ１２内でのデータ管理処理などを行う。制御部１５は、ログ情報生成部１５１と、データ処理部１５２と、管理情報処理部１５３と、ＡＷ（Atomic Write）処理部１５４と、を有する。
【００２６】
ログ情報生成部１５１は、データをＮＡＮＤメモリ１２に書き込む場合の論理アドレスと物理アドレスとの対応関係をクラスタ単位で示す書き込みログを論理ページごとにまとめたログ情報を生成する。このログ情報は、アドレス変換テーブル１４２１の変更の内容を示すものでもある。本実施形態では、Atomic Writeがキャンセルされた場合でも、管理情報を当該Atomic Writeが無かったとした場合の状態に更新することができる情報を書き込みログに付加している。
【００２７】
図５は、実施形態におけるログ情報の一例を示す図である。書き込みログ２１０は、クラスタ毎に生成される。従って、１物理ページ内に対しては、１物理ページに含まれるクラスタ数分の書き込みログ２１０が生成される。そして、１論理ページに含まれる書き込みログ２１０をまとめたものがログ情報２００となる。ログ情報２００は、１物理ページ内の１つのクラスタに書き込まれる。書き込みログ２１０は、論理アドレス２１１と、旧物理アドレス２１２と、現物理アドレス２１３と、コマンドタグ２１４と、Atomic Writeフラグ２１５と、パディングデータ２１６と、を有する。
【００２８】
論理アドレス２１１は、論理アドレス空間上においてクラスタ単位に割り当てられるアドレスである。旧物理アドレス２１２と現物理アドレス２１３とは、（Atomic Writeに限らず）データ書き込みが行われる場合において、論理アドレス２１１に対するデータ書き込み前後の物理アドレスを示している。すなわち、旧物理アドレス２１２は、データ書き込み前に論理アドレス２１１に対応づけられていた物理アドレスであり、現物理アドレス２１３は、データ書き込み後に論理アドレスに対応づけられていた物理アドレスである。これらの論理アドレス２１１と、旧物理アドレス２１２と、現物理アドレス２１３とは、一般的なＮＡＮＤメモリ１２を使用したメモリシステム１０での書き込みログに記録されているものである。論理アドレス２１１、旧物理アドレス２１２および現物理アドレス２１３のサイズは、たとえば３２ビットとすることができる。
【００２９】
コマンドタグ２１４は、コマンド（ライトコマンドか否か、および、Atomic Writeか否かを問わない）が発行される度に付される番号(識別子)である。同時に発行されているコマンドの間で番号は重ならないものとする。コマンドタグ２１４は、たとえば８ビットのサイズとすることができる。
【００３０】
Atomic Writeフラグ２１５は、そのコマンド（ライトコマンド）がAtomic Writeか否かを示すものであり、Atomic Writeとして書き込みが要求されたデータの最初のクラスタに付される開始フラグと、当該データの最後のクラスタに付される終了フラグとを含む。Atomic Writeとして書き込みが要求されたデータであっても、最初と最後のクラスタ以外のクラスタには、いずれのフラグも付されない。Atomic Writeのライトコマンドは、１クラスタ以下のサイズのデータに対して発行されることもあるので、Atomic Writeフラグ２１５は、２ビットとして、１クラスタで開始フラグと終了フラグとを立てることを可能にしている。
【００３１】
ライトコマンドが発行された場合、ログ情報生成部１５１は、書き込みログ２１０に、論理アドレス２１１と、旧物理アドレス２１２と、現物理アドレス２１３と、を書き込むほかに、コマンドタグ２１４には、そのライトコマンドに対して付される番号を格納する。また、そのライトコマンドがAtomic Writeであって、論理アドレス２１１に書き込まれるデータが当該ライトコマンドで指定されたデータの先頭のクラスタである場合には、Atomic Writeフラグ２１５に開始フラグを立て、最後のクラスタである場合には、Atomic Writeフラグ２１５に終了フラグを立てる。そのライトコマンドがAtomic Writeでない場合と、Atomic Writeであるが、論理アドレス２１１に書き込まれるデータが当該ライトコマンドで指定されたデータの先頭および最後以外のクラスタである場合、Atomic Writeフラグ２１５には、開始フラグまたは終了フラグのいずれも立てない。
【００３２】
パディングデータ２１６は、書き込みログ２１０を所定の大きさにするために付加されるデータである。パディングデータのサイズは、たとえば書き込みログ２１０のサイズを１２８ビットとすると、２２ビットとすることができる。
【００３３】
ここで、図６および図７を参照して、Atomic Writeの概要について説明する。
【００３４】
図６は、通常のライトコマンド（通常Writeコマンド）と、Atomic Writeのライトコマンド（Atomic Writeコマンド）と、の違いを示す概念図である。
【００３５】
図６に示すように、通常WriteコマンドおよびAtomic Writeコマンドのいずれの場合においても、データの書き込みが完了した場合、つまり、旧書き込みデータが新書き込みデータへと完全に置き換えられた場合には、その後、リードコマンドの受領時、完全な新書き込みデータが読み出される。
【００３６】
一方、データの書き込み中、より具体的には、旧書き込みデータを新書き込みデータへ置き換えている途中で、この書き込みがキャンセルされた場合、通常Writeコマンドの場合とAtomic Writeコマンドの場合とでは、その後、リードコマンドの受領時に読み出されるデータに違いが生じる。図６（Ａ）に示すように、通常Writeコマンドの場合、途中まで書き込まれた新書き込みデータと、置き換えられるまでに至らなかった旧書き込みデータとが読み出される。これにより、通常Writeコマンドの場合、書き込み途中でキャンセルが発生すると、データの整合性が失われる場合がある。
【００３７】
これに対して、Atomic Writeコマンドの場合、図６（Ｂ）に示すように、キャンセルに伴って、旧書き込みデータから新書き込みデータへの置き換えは無かったものとするためのロールバック（Atomic Writeキャンセル）が実行され、その結果、完全な旧書き込みデータが読み出される。つまり、Atomic Writeコマンドの場合、書き込み途中でキャンセルが発生しても、データの整合性は保たれる。
【００３８】
図７は、Atomic Writeの基本的な動作例を示す図である。
【００３９】
ここでは、まず、図７（Ａ）に示すように、ホスト装置が、リードコマンド、Atomic Writeコマンド、通常Writeコマンドの順に発行したものと想定する。リードコマンドには「１２８」、Atomic Writeコマンドには「１２９」、通常Writeコマンドには「１３０」の識別子が付されている。また、「１２９」番の最初のAtomic WriteコマンドにはAtomic Write開始フラグが付されている。換言すれば、このAtomic Write開始フラグが付されていることで、「１２９」番のライトコマンドは、Atomic Writeであることが判別できる。
【００４０】
続いて、図７（Ｂ）に示すように、「１２９」番のAtomic Writeコマンドの完了（Atomic Write Finish）がホスト装置から通知された場合を想定する。この通知により、当該「１２９」番のAtomic Writeコマンドについてはキャンセルがもはや発生しないことが確定する。この場合、図６（Ｂ）に示した、旧書き込みデータから（「１２９」番のAtomic Writeコマンドで転送された）新書き込みデータへの置き換えが確定する。
【００４１】
次に、図７（Ｃ）に示すように、「１２９」番のAtomic Writeコマンドのキャンセル（Atomic Write Cancel）がホスト装置から通知された場合を想定する。この場合、「１２９」番のAtomic Writeコマンドで転送された新書き込みデータは破棄され、図６（Ｂ）に示した、旧書き込みデータへのロールバックが実行される。
【００４２】
また、Atomic Write中に書き込み中断要因が生じた場合も、同様の動作で、中断されたAtomic Writeについてロールバックが実行される。
【００４３】
このように、Atomic Writeコマンドによる書き込み対象のデータは、完全に書き込まれたか、または、書き込まれなかったかのいずれかとなる。このAtomic Writeは、たとえばＮＶＭ  ＥＸＰＲＥＳＳ仕様で定義されている。
【００４４】
再び、図１を参照する。
【００４５】
データ処理部１５２は、ホスト装置からの読み出し要求または書き込み要求に対応するＮＡＮＤメモリ１２からのデータ読み出しまたはＮＡＮＤメモリ１２へのデータ書き込みなどの処理を行う。データ書き込みの際には、書き込みデータとその書き込みデータに対応するログ情報とを、書き込み先の論理ページを構成する物理ページに書き込む。なお、ログ情報は、１論理ページ内の所定の位置のクラスタ(たとえば最後のクラスタ)に書き込まれる。
【００４６】
管理情報処理部１５３は、ＮＡＮＤメモリ１２へのデータの書き込みなどによって変化する管理情報が最新の情報となるように管理する。たとえば、ＮＡＮＤメモリ１２へのデータの書き込みによって、データの論理アドレスに対応する物理アドレスが変更となる場合に、アドレス変換テーブル１４２１を新たなデータ記録位置（物理アドレス）で更新する。また、ＮＡＮＤメモリ１２へのデータの書き込みなどによる論理ブロック中の有効クラスタ数の変化を有効クラスタ数管理テーブル１４２２に記録する。なお、アドレス変換テーブル１４２１の更新について、管理情報処理部１５３は、ＡＷ処理部１５４と協働する。
【００４７】
さらに、管理情報処理部１５３は、書き込み中断要因が発生したときに、アドレス変換テーブル１２２１、アドレス変換テーブル記憶位置情報１２２２、有効クラスタ数管理テーブル１２２３、および中断時書き込み位置情報１２２４をＮＡＮＤメモリ１２に保存する。なお、アドレス変換テーブル１２２１については、差分量がある閾値を超えたら書き出す動作を適宜行っているが、さらに貯まっているものがあれば書き出す処理を継続して行う。
【００４８】
ＡＷ処理部１５４は、Atomic Writeがキャンセルされた場合またはAtomic Write中に書き込み中断要因が発生した場合に、ＮＡＮＤメモリ１２の状態を、当該Atomic Writeに関する書き込みがなされていない状態に戻すための処理を行う。より具体的には、管理情報処理部１５３と協働して、アドレス変換テーブル１４２１を当該Atomic Write前の状態に復元するための処理を行う。ＡＷ処理部１５４は、管理部１５４１、更新保留制御部１５４２および巻戻制御部１５４３を有する。これらの詳細については後述する。
【００４９】
前述したように、本実施形態のメモリシステム１０は、Atomic Write機能を実装している。また、このAtomic Write機能は、２つのAtomic Write処理方式を備える。ここでは、一方のAtomic Write処理方式を「ＬＵＴ（Look Up Table）更新保留方式」、他方のAtomic Write処理方式を「ＬＵＴ巻戻方式」と称することとする。ＬＵＴは、アドレス変換テーブルを表している。そして、本実施形態のメモリシステム１０は、これら２種類のAtomic Write処理方式の中のいずれかを適応的に選択するようにしたものであり、以下、この点について詳述する。
【００５０】
まず、図８および図９を参照して、本実施形態のメモリシステム１０が実装するAtomic Write機能が備える２つのAtomic Write処理方式（「ＬＵＴ更新保留方式」、「ＬＵＴ巻戻方式」）について説明する。
【００５１】
図８は、ＬＵＴ更新保留方式の概要を説明するための図である。
【００５２】
ＬＵＴ更新保留方式では、Atomic Writeで指定される論理アドレスに対応づけられるデータ書き込み前の旧物理アドレスをデータ書き込み後の新物理アドレスへ書き換えるためのアドレス変換テーブルの更新が、当該Atomic Writeが確定するまで保留される。この時、論理アドレスと新物理アドレスとを少なくとも含むアドレス変換テーブルの更新データが生成され、例えばＲＡＭ１４等に蓄積される。このAtomic Writeが確定した場合、例えばＲＡＭ１４等に蓄積される更新データに基づくアドレス変換テーブルの更新が実行される。一方、Atomic Writeがキャンセルされた場合、例えばＲＡＭ１４等に蓄積される更新データが破棄される。これにより、アドレス変換テーブルは、このAtomic Write前の状態に保たれる。より具体的には、このAtomic Writeで指定された論理アドレスには、データ書き込み前の旧物理アドレスが対応づけられている状態となっている。ＡＷ処理部１５４の更新保留制御部１５４２は、このＬＵＴ更新保留方式を司る処理部であり、Atomic Writeに関するアドレス変換テーブルの更新を管理情報処理部１５３に保留させ、また、Atomic Write確定時におけるアドレス変換テーブルの更新を管理情報処理部１５３に実行させる。
【００５３】
ＬＵＴ更新保留方式は、Atomic Writeがキャンセルされた場合、アドレス変換テーブルの更新データを破棄するだけでよいので、ロールバックが高速であり、Atomic Writeキャンセルの性能は高い。反面、未確定のAtomic Writeに関するアドレス変換テーブルの更新データを蓄積する必要があるので、ＲＡＭ１４等のリソース面でのコストは高い。
【００５４】
図９は、ＬＵＴ巻戻方式の概要を説明するための図である。
【００５５】
ＬＵＴ巻戻方式では、Atomic Writeで指定される論理アドレスに対応づけられるデータ書き込み前の旧物理アドレスをデータ書き込み後の新物理アドレスへ書き換えるためのアドレス変換テーブルの更新は、保留されることなく速やかに行われる。そして、Atomic Writeがキャンセルされた場合に、ログ情報に基づき、アドレス変換テーブルが、このAtomic Write前の状態に巻き戻される。より具体的には、Atomic Writeで指定される論理アドレスにデータ書き込み前の旧物理アドレスが対応づけられる状態にアドレス変換テーブルを更新する。ＡＷ処理部１５４の巻戻制御部１５４３は、このＬＵＴ巻戻方式を司る処理部である。ログ情報は、ホスト装置からのデータがＮＡＮＤメモリ１２へ書き込まれるとき付随して一緒に書き込まれる。
【００５６】
ＬＵＴ巻戻方式は、Atomic Writeがキャンセルされた場合、ログ情報に基づいてアドレス変換テーブルを巻き戻す必要があるので、ロールバックが低速であり、Atomic Writeキャンセルの性能は低い。反面、未確定のAtomic Writeに関するアドレス変換テーブルの更新データを蓄積すること等が不要なので、ＲＡＭ１４等のリソース面でのコストは低い。また、ＬＵＴ巻戻方式では、Atomic Writeが確定した場合は、追加的な動作は特にない。
【００５７】
なお、ＬＵＴ巻戻方式については、さらに、２つの方式が考えられる。ここでは、一方の方式を「逆方向方式」、他方の方式を「順方向方式」と称することとする。図１０を参照して、これら２つの方式について説明する。
【００５８】
図１０の（Ａ）で示した逆方向方式は、Atomic Writeキャンセル時のアドレス変換テーブルを基礎とし、ログ情報を最新のものから当該キャンセルされたAtomic Write開始時のものまで時間的に逆方向に参照して、当該キャンセルされたAtomic Writeで指定される論理アドレスについて、データ書き込み後の新物理アドレスをデータ書き込み前の旧物理アドレスへ書き換えていく。
【００５９】
一方、図１０の（Ｂ）で示した順方向方式は、キャンセルされたAtomic Write開始以前に不揮発化されたアドレス変換テーブルを基礎とする。前述したように、管理情報処理部１５３は、アドレス変換テーブルについて、（ＲＡＭ１４上のアドレス変換テーブル１４２１とＮＡＮＤメモリ１２上のアドレス変換テーブル１２２１との）差分量がある閾値を超えたらＮＡＮＤメモリ１２へ書き出す動作を適宜行っている。不揮発化されたアドレス変換テーブルとは、このような書き出しが反映されたアドレス変換テーブルであり、アドレス変換テーブルのスナップショット（ＳＳ）とも称される。このように不揮発化されたアドレス変換テーブルを読み出し、ログ情報を上記書き出し動作時（スナップショット取得時）のものから最新のものまで時間的に順方向に参照して、キャンセルされたAtomic Write以外のAtomic Writeまたは通常Writeで指定される論理アドレスについて、データ書き込み前の旧物理アドレスからデータ書き込み後の新物理アドレスへ書き換えていく。
【００６０】
ＬＵＴ巻戻方式としては、逆方向方式または順方向方式のいずれも採用し得るが、順方向方式では、データ書き込み前の旧物理アドレスを必要としないので、データ書き込み時に旧物理アドレスを取得する機会がなく、ログ情報として旧物理アドレスを記録することが困難な場合に有用である。
【００６１】
前述したように、ＬＵＴ更新保留方式には、Atomic Writeキャンセルの性能は高いがリソース面でのコストが高いというメリット・デメリットがあり、ＬＵＴ巻戻方式には、Atomic Writeキャンセルの性能は低いがリソース面でのコストは低いというメリット・デメリットがある。また、メモリシステムに対して要求されるAtomic Writeキャンセルの性能は、例えばアプリケーションプログラム毎などにより異なり得る。そこで、本実施形態のメモリシステム１０では、ＬＵＴ更新保留方式またはＬＵＴ巻戻方式のいずれかを適応的に選択する。ＡＷ処理部１５４の管理部１５４１は、このＬＵＴ更新保留方式またはＬＵＴ巻戻方式の適応的な選択を司る処理部である。
【００６２】
なお、ここでは、２つのAtomic Write処理方式の中の１つとして、（ホスト装置からのデータのＮＡＮＤメモリ１２への書き込みに伴う）アドレス変換テーブルの更新を保留するＬＵＴ更新保留方式を例示するが、これに代えて、ホスト装置からのデータのＮＡＮＤメモリ１２への書き込みそのものを保留する方式を採用することも可能である。
【００６３】
本実施形態のメモリシステム１０は、ホスト装置からの指示に基づき、ユーザデータ用のＮＡＮＤメモリ１２の記憶領域を論理的に複数に分割、つまり、論理アドレス空間を複数に分割する。換言すれば、ホスト装置は、メモリシステム１０の記憶領域を複数に分割して利用する仕組みを有している。分割後の各領域は、NameSpace（ＮＳ）などとして区別され、それぞれに固有の識別子（ＮＳＩＤ）が付される。ホスト装置は、このＮＳＩＤを使って、目的のNameSpaceに対するデータアクセスを実行する。管理部１５４１は、第１に、Atomic Writeキャンセルの性能に関する設定を、NameSpace毎にホスト装置から受け付け、この設定に基づき、要求されたAtomic Writeについて、ＬＵＴ更新保留方式またはＬＵＴ巻戻方式を適応的に選択する。
【００６４】
ここでは、図１１の（Ａ）に示すように、ホスト装置により、論理アドレス空間が６つに分割されているものと想定する。各NameSpaceには、「０」から「５」のＮＳＩＤが付されている。また、ここでは、ホスト装置により、（１）ＮＳＩＤ「３」のNameSpace（ＮＳ［３］）とＮＳＩＤ「４」のNameSpace（ＮＳ［４］）とには、Atomic Writeキャンセルの性能に関する設定として、優先度「高」が設定され、（２）ＮＳＩＤ「０」のNameSpace（ＮＳ［０］）、ＮＳＩＤ「１」のNameSpace（ＮＳ［１］）およびＮＳＩＤ「２」のNameSpace（ＮＳ［２］）には、Atomic Writeキャンセルの性能に関する設定として、優先度「中」が設定され、（３）ＮＳＩＤ「５」のNameSpace（ＮＳ［５］）には、Atomic Writeキャンセルの性能に関する設定として、優先度「低」が設定されているものと想定する。優先度「高」が設定されるNameSpaceは、例えば、Atomic Writeキャンセルの性能を高い水準で要求するアプリケーションプログラムにより使用される記憶領域である。優先度「低」が設定されるNameSpaceは、例えば、Atomic Writeキャンセルの性能を高い水準では要求しないアプリケーションプログラムにより使用される記憶領域である。優先度「中」が設定されるNameSpaceは、例えば、Atomic Writeキャンセルの性能を可能な限りにおいて高い水準で要求するアプリケーションプログラムにより使用される記憶領域である。また、ホスト装置上に複数の仮想マシンが構築され、仮想マシン毎にNameSpaceが使い分けられる環境下において、仮想マシン毎に、Atomic Writeキャンセルの性能に関する設定が行われるといったことも考えられる。さらに、Atomic Writeキャンセルの性能についての初期設定値を優先度「中」とし、ホスト装置によるAtomic Writeキャンセルの性能に関する設定が行われていないNameSpaceについては、優先度「中」が設定されているものとして扱うようにしてもよい。
【００６５】
管理部１５４１は、優先度「高」が設定されたNameSpaceに対するAtomic Writeについては、ＬＵＴ更新保留方式を選択する。前述したように、ＬＵＴ更新保留方式は、要求されたAtomic Writeが確定するまで当該Atomic Writeに関するアドレス変換テーブルの更新を保留する。そのために、ＬＵＴ更新保留方式では、論理アドレスと新物理アドレスとを少なくとも含むアドレス変換テーブルの更新データが生成され、ＲＡＭ１４上に確保される更新保留用領域に蓄積される。管理部１５４１は、あるNameSpaceについて、Atomic Writeキャンセルの性能に関する設定として優先度「高」の設定をホスト装置から受け付ける場合、そのNameSpaceに対するAtomic Writeに関するアドレス変換テーブルの更新データの蓄積許容量の指定を併せて受け付ける。更新保留用領域内で当該蓄積許容量分の割り当てが行えない場合、管理部１５４１は、ホスト装置に対してエラーを返答する。ここでは、図１１に示すように、優先度「高」が設定されたＮＳ［３］、ＮＳ［４］それぞれについて、ホスト装置から指定されたサイズ分、更新保留用領域の割り当てが行われていることを想定する。
【００６６】
また、管理部１５４１は、優先度「低」が設定されたNameSpaceに対するAtomic Writeについては、ＬＵＴ巻戻方式を選択する。そして、管理部１５４１は、優先度「中」が設定されたNameSpaceに対するAtomic Writeについては、更新保留用領域の使用状況、より具体的には、優先度「中」が設定されたNameSpaceに対するAtomic Writeによる更新保留用領域の使用状況に基づき、ＬＵＴ更新保留方式またはＬＵＴ巻戻方式のいずれかを適応的に選択する。図１１に示すように、更新保留用領域の空き領域（余り）、つまり、優先度「高」が設定されたNameSpaceに割り当てられる領域以外の領域が、優先度「中」が設定されたNameSpace（ＮＳ［０］、ＮＳ［１］、ＮＳ［２］）により共有される。
【００６７】
つまり、管理部１５４１は、第２に、Atomic Writeの実行状況に基づき、要求されたAtomic Writeについて、ＬＵＴ更新保留方式またはＬＵＴ巻戻方式を適応的に選択する。
【００６８】
なお、前述した、NameSpace毎のAtomic Writeキャンセルの性能に関する設定に基づき、ＬＵＴ更新保留方式またはＬＵＴ巻戻方式を適応的に選択する仕組みは、本実施形態においては必要であるが、メモリシステム１０の仕様によっては省略可能である。例えば、管理部１５４１は、すべてのNameSpaceで優先度「中」が設定されているかのごとく、Atomic Writeの実行状況に基づき、ＬＵＴ更新保留方式またはＬＵＴ巻戻方式を適応的に選択するようにしてもよい。
【００６９】
管理部１５４１は、ＡＷ属性管理テーブル１４３１と、ＡＷ実行管理テーブル１４３２とを管理する。前述したように、これらのテーブルは、ＲＡＭ１４上に格納される。
【００７０】
図１２は、ＡＷ属性管理テーブル１４３１の一例を示す図である。管理部１５４１は、あるNameSpaceについてのAtomic Writeキャンセルの性能に関する設定をホスト装置が行った際、そのNameSpace用のレコードをＡＷ属性管理テーブル１４３１に追加する。図１２に示すように、ＡＷ属性管理テーブル１４３１に記録される各レコードは、「ＮＳＩＤ」フィールド、「優先度」フィールド、「ＡＷ最大量」フィールド、「ＡＷ総量」フィールドおよび「ロールバック量」フィールドを含む。
【００７１】
「ＮＳＩＤ」フィールドには、NameSpaceの識別子が格納される。「優先度」フィールドには、ホスト装置により設定される優先度「高」、優先度「中」または優先度「低」のいずれかを示す値が格納される。「ＡＷ最大量」フィールドには、優先度「高」の設定時においてホスト装置により指定される（アドレス変換テーブルの更新を保留するための）アドレス変換テーブルの更新データの蓄積許容量が格納される。「ＡＷ総量」フィールドには、優先度「中」が設定されたNameSpaceについて、当該NameSpaceに対するAtomic Writeにより生成されたアドレス変換テーブルの更新データの量を累積した総容量が格納される。「ロールバック量」フィールドには、優先度「中」が設定されたNameSpaceについて、当該NameSpaceに対するAtomic Write中のキャンセルされたAtomic Writeに関するアドレス変換テーブルの更新データの量を累積した総容量が格納される。「ＡＷ総量」フィールドおよび「ロールバック量」フィールドの値は、そのNameSpaceに対するAtomic Writeの実行に伴い、管理部１５４１により適宜に更新される（より具体的には、コマンド単位で加算される）。「ＡＷ総量」フィールドおよび「ロールバック量」フィールドの値については、その値が無制限に大きくならないように、一定時間毎に古いものを捨てていく移動平均を採用してもよいし、一定時間毎にリセット（０にする）したり、定数で除算したり、定数で減算したり等の処理を行ってもよい。
【００７２】
また、図１３は、ＡＷ実行管理テーブル１４３２の一例を示す図である。管理部１５４１は、Atomic Write対象のデータ書き込みをホスト装置が要求した際、そのデータ書き込み用のレコードをＡＷ実行管理テーブル１４３２に追加する。図１３に示すように、ＡＷ実行管理テーブル１４３２に記録される各レコードは、「ＮＳＩＤ」フィールド、「ＴａｇＩＤ」フィールド、「ＡＷ方式」フィールドおよび「ＡＷ量」フィールドを含む。なお、ＡＷ実行管理テーブル１４３２に記録される各レコードは、そのデータ書き込みが完了または無かったものとなった時点で削除される。
【００７３】
「ＮＳＩＤ」フィールドには、データ書き込み先として指定されるNameSpaceの識別子が格納される。「ＴａｇＩＤ」フィールドには、そのデータ書き込み用のコマンドに付される番号（識別子）が格納される。「ＡＷ方式」フィールドには、そのデータ書き込みに適用されるＬＵＴ更新保留方式またはＬＵＴ巻戻方式のいずれかを示す値が格納される。「ＡＷ量」フィールドには、ＬＵＴ更新保留方式が適用されるデータ書き込みについて、そのデータ書き込みのためのAtomic Writeにより生成されたアドレス変換テーブルの更新データの容量が格納される。各フィールドの値は、そのAtomic Writeの実行に伴い、管理部１５４１により適宜に更新される。
【００７４】
次に、以上のような構成のＡＷ属性管理テーブル１４３１とＡＷ実行管理テーブル１４３２とを用いて、管理部１５４１が、ホスト装置から要求されたAtomic WriteについてＬＵＴ更新保留方式またはＬＵＴ巻戻方式を適応的に選択する動作について説明する。
【００７５】
Atomic Writeが要求された際、管理部１５４１は、まず、ＡＷ属性管理テーブル１４３１を参照し、このAtomic Writeの書き込み先として指定されるNameSpaceの設定が、優先度「高」、優先度「中」または優先度「低」のいずれであるのかを調べる。前述したように、管理部１５４１は、優先度「高」が設定されたNameSpaceに対するAtomic Writeについては、ＬＵＴ更新保留方式を選択し、また、優先度「低」が設定されたNameSpaceに対するAtomic Writeについては、ＬＵＴ巻戻方式を選択する。
【００７６】
優先度「中」が設定されたNameSpaceに対するAtomic Writeであった場合、管理部１５４１は、続いて、例えば書き込みデータのサイズから導き出される、このAtomic Writeで要求されるアドレス変換テーブルの更新データの容量以上の空き容量がＲＡＭ１４上の更新保留用領域内に存在するか否かを確認する。存在する場合、管理部１５４１は、更新保留用領域内に当該Atomic Write用の領域を確保して、当該Atomic Writeについて、ＬＵＴ更新保留方式を選択する。存在しない場合、管理部１５４１は、優先度「中」が設定された他のNameSpaceに対する他のAtomic Writeであって、ＬＵＴ更新保留方式が適用されている他のAtomic WriteをＬＵＴ巻戻方式に変更する。管理部１５４１は、更新保留用領域内の当該他のAtomic Write用に確保された領域を解放することにより、要求される容量以上の空き容量を更新保留用領域内に作成して、ＬＵＴ更新保留方式を適用することを試みる。図１４を参照して、この場合の管理部１５４１の動作を詳しく説明する。
【００７７】
いま、優先度「中」が設定されたNameSpaceであるＮＳ［１］に対するAtomic Write（ＴａｇＩＤ［９３］）がホスト装置から新たに要求され、このAtomic Write用の領域を更新保留用領域内に確保できない状況にあるものと想定する（図１４［１］）。また、この時、同じく優先度「中」が設定された他のNameSpaceであるＮＳ［０］では、１つのAtomic Write（ＴａｇＩＤ［５］）が実行され、同様のＮＳ［２］では、２つのAtomic Write（ＴａｇＩＤ［２８］、ＴａｇＩＤ［１０］）が実行されているものと想定する。
【００７８】
このような状況下において、管理部１５４１は、まず、ＬＵＴ更新保留方式が適用されてAtomic Writeが実行されている（優先度「中」が設定された）NameSpaceについて、ロールバック率をそれぞれ算出する（図１４［２］）。ロールバック率は、Atomic Writeキャンセルが発生する可能性の高さを示し、ＡＷ属性管理テーブル１４３１に記録されるロールバック量を、同じくＡＷ属性管理テーブル１４３１に記録されるＡＷ総量で除することで得られる。ここでは、ＮＳ［０］、ＮＳ［１］、ＮＳ［２］について、０．０１（６０／６０００）、０．０２（６０／３０００）、０．１（１０／１００）の値がそれぞれ算出される。なお、データ量には依存せず、コマンド数だけでロールバック率の統計を取るようにすることも可能である。つまり、キャンセルされたAtomic Writeのコマンド数を受領したAtomic Writeの総コマンド数で除することでロールバック率を算出するようにしてもよい。
【００７９】
次に、管理部１５４１は、新たに要求されたAtomic Writeの対象となるNameSpaceよりもロールバック率が低い他のNameSpaceが存在するかを調べる。存在する場合、そのNameSpaceに対するAtomic Writeは、新たに要求されたAtomic Writeよりもキャンセルされる可能性が低いので、（Atomic Writeキャンセルの性能が低い）ＬＵＴ巻戻方式に変更する（図１４［３］）。ここでは、ＮＳ［１］のロールバック率が０．０２であり、ＮＳ［０］のロールバック率が０．０１であることから、ＮＳ［０］に対するAtomic Write（ＴａｇＩＤ［５］）をＬＵＴ巻戻方式に変更する。ＮＳ［２］のロールバック率は０．１であり、ＮＳ［１］のロールバック率よりも高いので、ＮＳ［２］に対するAtomic Write（ＴａｇＩＤ［２８］、ＴａｇＩＤ［１０］）は対象から外れる。
【００８０】
なお、ここでは、ＬＵＴ更新保留方式からＬＵＴ巻戻方式へ変更する方法について詳しくは言及しないが、例えば、更新保留用領域内に蓄積された当該Atomic Writeに関するアドレス変換テーブルの更新データに基づき、アドレス変換テーブルの更新を即時的に実行することで実現できる。アドレス変換テーブルの更新後、このAtomic Write用に更新保留用領域内に確保された領域を解放することができる。
【００８１】
他のAtomic Write（ＴａｇＩＤ［５］）をＬＵＴ更新保留方式からＬＵＴ巻戻方式へ変更することにより、新たに要求されたAtomic Write（ＴａｇＩＤ［９３］）用の領域が更新保留用領域内に確保できた場合、管理部１５４１は、当該新たに要求されたAtomic Write（ＴａｇＩＤ［９３］）について、ＬＵＴ更新保留方式を選択する（図１４［４］）。
【００８２】
ここでは、ＮＳ［１］よりもロールバック率が低い他のNameSpaceがＮＳ［０］のみであり、当該ＮＳ［０］に対して実行中のAtomic Writeが１つ（ＴａｇＩＤ［５］）のみであるので、管理部１５４１は、ＬＵＴ更新保留方式からＬＵＴ巻戻方式への変更を、１つのAtomic Write（ＴａｇＩＤ［５］）について行った。言うまでも無く、新たに要求されたAtomic Writeで指定されるNameSpaceよりもロールバック率が低い（Atomic Writeが実行されている）他のNameSpaceが複数存在する場合もあり得るし、当該他のNameSpaceに対して実行されているAtomic Writeが複数存在する場合もあり得る。管理部１５４１は、新たに要求されたAtomic Write用の領域が更新保留用領域内に確保できるまで、ロールバック率が低いNameSpaceから順に、また、ＡＷ量が小さい順に、ＬＵＴ更新保留方式からＬＵＴ巻戻方式への変更を実行していくことが好ましい。ＡＷ量が小さい順とするのは、ＬＵＴ更新保留方式からＬＵＴ巻戻方式への変更に係る負荷が小さい順とすることを意図するものである。
【００８３】
一方、他のAtomic Write（ＴａｇＩＤ［５］）をＬＵＴ更新保留方式からＬＵＴ巻戻方式へ変更することによっても、新たに要求されたAtomic Write（ＴａｇＩＤ［９３］）用の領域が更新保留用領域内に確保できなかった場合、管理部１５４１は、当該新たに要求されたAtomic Write（ＴａｇＩＤ［９３］）について、ＬＵＴ巻戻方式を選択する。
【００８４】
このように、本実施形態のメモリシステム１０においては、ホスト装置による設定およびAtomic Writeの実行状況に基づき、Atomic Writeキャンセルの性能が適応的に制御される。
【００８５】
図１５は、実施形態のメモリシステムにおいて実行されるNameSpaceに対するＡＷ属性設定処理の手順の一例を示す図である。
【００８６】
ＡＷ処理部１５４の管理部１５４１は、あるNameSpaceに対するＡＷ属性設定の要求をホスト装置から受信すると（Ａ１）、Atomic Writeキャンセルの性能として優先度「高」を要求するものである場合（Ａ２のＹＥＳ）、ホスト装置から指定される容量（そのNameSpaceに対するAtomic Writeに関するアドレス変換テーブルの更新データを蓄積しておくための領域の容量：ＡＷ最大量）以上の空き領域がＲＡＭ１４上の更新保留用領域内に存在するか否かを確認する（Ａ３）。ここでの空き領域とは、優先度「高」の他のNameSpaceにより既に確保されている領域以外の領域である。空き領域が存在する場合（Ａ３のＹＥＳ）、管理部１５４１は、そのNameSpace用の領域をＲＡＭ１４上の更新保留用領域内に確保し（Ａ４）、優先度「高」およびＡＷ最大値を当該NameSpaceの設定値としてＡＷ属性管理テーブル１４３１に記録し（Ａ５）、ホスト装置へ設定の完了を応答する（Ａ６）。空き領域が存在しない場合には（Ａ３のＮＯ）、管理部１５４１は、ホスト装置へ設定の失敗を応答する（Ａ７）。
【００８７】
また、優先度「中」を要求するものである場合（Ａ２のＮＯ，Ａ８のＹＥＳ）、管理部１５４１は、優先度「中」を当該NameSpaceの設定値としてＡＷ属性管理テーブル１４３１に記録し（Ａ９）、ホスト装置へ設定の完了を応答する（Ａ１０）。さらに、優先度「低」を要求するものである場合には（Ａ８のＮＯ）、管理部１５４１は、優先度「低」を当該NameSpaceの設定値としてＡＷ属性管理テーブル１４３１に記録し（Ａ１１）、ホスト装置へ設定の完了を応答する（Ａ１２）。
【００８８】
図１６は、実施形態のメモリシステムのAtomic Write開始時における動作手順の一例を示す図である。
【００８９】
ＡＷ処理部１５４の管理部１５４１は、あるNameSpaceに対するAtomic Writeの要求をホスト装置から受信すると（Ｂ１）、その要求に付されるＮＳＩＤをキーに当該NameSpace用のレコードをＡＷ属性管理テーブル１４３１から検索する（Ｂ２）。管理部１５４１は、Atomic Writeキャンセルの性能として優先度「高」が設定されている場合（Ｂ３のＹＥＳ）、このAtomic Write用のレコードをＡＷ実行管理テーブル１４３２へ追加し、その要求の識別子であるＴａｇＩＤと、ＬＵＴ更新保留方式を示す値を当該追加したレコードへ記録する（Ｂ４）。そして、管理部１５４１は、このAtomic Writeがキャンセルされた場合のアドレス変換テーブルの復元方式としてＬＵＴ更新保留方式を選択して、当該要求されたAtomic Writeの処理を実施する（Ｂ５）。
【００９０】
優先度「中」が設定されている場合（Ｂ３のＮＯ，Ｂ６のＹＥＳ）、管理部１５４１は、そのAtomic Writeに対してＬＵＴ更新保留方式またはＬＵＴ巻戻方式のいずれを適用するのかを図１７に示す手順で判定する（Ｂ７）。ＬＵＴ更新保留方式と判定した場合（Ｂ７のＹＥＳ）、管理部１５４１は、このAtomic Write用のレコードをＡＷ実行管理テーブル１４３２へ追加し、その要求の識別子であるＴａｇＩＤと、ＬＵＴ更新保留方式を示す値を当該追加したレコードへ記録する（Ｂ８）。そして、管理部１５４１は、このAtomic Writeがキャンセルされた場合のアドレス変換テーブルの復元方式としてＬＵＴ更新保留方式を選択して、当該要求されたAtomic Writeの処理を実施する（Ｂ９）。
【００９１】
ＬＵＴ巻戻方式と判定した場合（Ｂ７のＮＯ）、管理部１５４１は、このAtomic Write用のレコードをＡＷ実行管理テーブル１４３２へ追加し、その要求の識別子であるＴａｇＩＤと、ＬＵＴ巻戻方式を示す値を当該追加したレコードへ記録する（Ｂ１０）。そして、管理部１５４１は、このAtomic Writeがキャンセルされた場合のアドレス変換テーブルの復元方式としてＬＵＴ巻戻方式を選択して、当該要求されたAtomic Writeの処理を実施する（Ｂ１１）。
【００９２】
優先度「低」が設定されている場合（Ｂ６のＮＯ）、管理部１５４１は、このAtomic Write用のレコードをＡＷ実行管理テーブル１４３２へ追加し、その要求の識別子であるＴａｇＩＤと、ＬＵＴ更新保留方式を示す値を当該追加したレコードへ記録する（Ｂ１２）。そして、管理部１５４１は、このAtomic Writeがキャンセルされた場合のアドレス変換テーブルの復元方式としてＬＵＴ巻戻方式を選択して、当該要求されたAtomic Writeの処理を実施する（Ｂ１３）。
【００９３】
図１７は、実施形態のメモリシステムにおいて実行される、優先度「中」が設定されているNameSpaceに対するAtomic WriteについてのＬＵＴ更新保留方式またはＬＵＴ巻戻方式の判定処理の手順の一例を示す図である。
【００９４】
Atomic Writeキャンセルの性能として優先度「中」が設定されているNameSpaceに対するAtomic Writeについて、ＡＷ処理部１５４の管理部１５４１は、まず、そのAtomic Writeに関するアドレス変換テーブルの更新データを蓄積しておくために必要な容量（ＡＷ要求量）以上の空き領域がＲＡＭ１４上の更新保留用領域内に存在するか否かを確認する（Ｃ１）。ここでの空き領域とは、優先度「高」のNameSpaceにより確保されている領域および優先度「中」のNameSpaceに対する他のAtomic Writeにより使用されている領域以外の領域である。空き領域が存在する場合（Ｃ１のＹＥＳ）、管理部１５４１は、そのAtomic Write 用の領域をＲＡＭ１４上の更新保留用領域内に確保し（Ｃ２）、そのAtomic WriteにＬＵＴ更新保留方式を適用すると判定する（Ｃ３）。
【００９５】
空き領域が存在しない場合（Ｃ１のＮＯ）、管理部１５４１は、ＡＷ属性管理テーブル１４３１から優先度「中」のNameSpaceを抽出し（Ｃ４）、NameSpace毎にロールバック率を計算する（Ｃ５）。管理部１５４１は、ロールバック率が低いものから順にＮＳＩＤを取り出す（Ｃ６）。管理部１５４１は、ＮＳＩＤが見つかり、かつ、ロールバック率が今回のAtomic Write対象のNameSpaceよりも低いか否かを調べ（Ｃ７）、この条件を満たす場合（Ｃ７のＹＥＳ）、そのＮＳＩＤをキーにＡＷ実行管理テーブル１４３２を検索し、ＡＷ量が小さいものから順にＴａｇＩＤを取り出す（Ｃ８）。
【００９６】
管理部１５４１は、ＴａｇＩＤが見つかり、かつ、そのAtomic WriteにＬＵＴ更新保留方式が適用されているか否かを調べ（Ｃ９）、この条件を満たす場合（Ｃ９のＹＥＳ）、そのＴａｇＩＤのAtomic Writeを図１８に示す手順でＬＵＴ更新保留方式からＬＵＴ巻戻方式に変更する（Ｃ１０）。管理部１５４１は、この変更により、今回のAtomic Writeで必要な容量以上の空き領域がＲＡＭ１４上の更新保留用領域内に存在することとなった場合（Ｃ１１のＹＥＳ）、そのAtomic Write 用の領域をＲＡＭ１４上の更新保留用領域内に確保し（Ｃ２）、そのAtomic WriteにＬＵＴ更新保留方式を適用すると判定する（Ｃ３）。この変更によっても、今回のAtomic Writeで必要な容量以上の空き領域がＲＡＭ１４上の更新保留用領域内に存在することとはならなかった場合（Ｃ１１のＮＯ）、または、見つかったＴａｇＩＤのAtomic WriteにＬＵＴ巻戻方式が適用されていた場合（Ｃ９のＮＯ）、管理部１５４１は、その時に対象としているＮＳＩＤ内に他のＴａｇＩＤが存在するか否かを調べる（Ｃ１２）。
【００９７】
存在する場合（Ｃ１２のＮＯ）、管理部１５４１は、次にＡＷ量が小さいAtomic Writeについて、Ｃ８からの処理を繰り返す。存在しない場合（Ｃ１２のＹＥＳ）、管理部１５４１は、次にロールバック率が低いNameSpaceについて、Ｃ６からの処理を繰り返す。
【００９８】
また、見つかったＮＳＩＤのロールバック率が今回のAtomic Write対象のNameSpaceよりも高い場合（Ｃ７のＮＯ）、管理部１５４１は、そのAtomic WriteにＬＵＴ巻戻方式を適用すると判定する（Ｃ１３）。
【００９９】
図１８は、実施形態のメモリシステムにおいて実行されるＬＵＴ更新保留方式からＬＵＴ巻戻方式への変更処理の手順の一例を示す図である。
【０１００】
ＡＷ処理部１５４の管理部１５４１は、ＲＡＭ１４上の更新保留用領域に蓄積される、ＬＵＴ更新保留方式からＬＵＴ巻戻方式へ変更するAtomic Writeに関するアドレス変換テーブルの更新データに基づき、ＮＡＮＤメモリ１２のアドレス変換テーブル１２２１を更新し、当該Atomic Write用に確保されるＲＡＭ１４上の更新保留用領域内領域を解放する（Ｄ１）。次に、管理部１５４１は、該当ＮＳＩＤ、ＴａｇＩＤのレコードを、ＬＵＴ巻戻方式を示す値へ書き換えるべくＡＷ実行管理テーブル１４３２を更新する（Ｄ２）。
【０１０１】
図１９は、実施形態のメモリシステムのAtomic Write中における動作手順の一例を示す図である。
【０１０２】
ＡＷ処理部１５４の管理部１５４１は、ホスト装置から転送されるコマンドに付されるＮＳＩＤをキーに対象のNameSpace用のレコードをＡＷ属性管理テーブル１４３１から検索する（Ｅ１）。また、管理部１５４１は、そのＮＳＩＤと当該コマンドに付されるＴａｇＩＤとをキーに（ＮＳＩＤとＴａｇＩＤとの組合せは、Atomic Writeの識別子となる）対象のAtomic Write用のレコードをＡＷ実行管理テーブル１４３２から検索する（Ｅ２）。
【０１０３】
管理部１５４１は、そのAtomic Writeに対してＬＵＴ更新保留方式が適用されている場合（Ｅ３のＹＥＳ）、今回のAtomic Writeで生成されるアドレス変換テーブルの更新データ量を、検索したＡＷ実行管理テーブル１４３２のレコードに記録されるＡＷ量に加算する（Ｅ４）。そして、管理部１５４１は、そのAtomic Writeに関する処理の実行をＡＷ処理部１５４の更新保留制御部１５４２に指示する（Ｅ５）。一方、ＬＵＴ巻戻方式が適用されている場合（Ｅ３のＮＯ）、管理部１５４１は、このAtomic Writeに関する処理の実行をＡＷ処理部１５４の巻戻制御部１５４３に指示する（Ｅ６）。
【０１０４】
図２０は、実施形態のメモリシステムのAtomic Write完了時における動作手順の一例を示す図である。
【０１０５】
ＡＷ処理部１５４の管理部１５４１は、ホスト装置から転送されるコマンドに付されるＮＳＩＤをキーに対象のNameSpace用のレコードをＡＷ属性管理テーブル１４３１から検索する（Ｆ１）。また、管理部１５４１は、そのＮＳＩＤと当該コマンドに付されるＴａｇＩＤとをキーに対象のAtomic Write用のレコードをＡＷ実行管理テーブル１４３２から検索する（Ｆ２）。
【０１０６】
管理部１５４１は、そのNameSpaceに対して優先度「中」が設定されている場合（Ｆ３のＹＥＳ）、検索したＡＷ実行管理テーブル１４３２のレコードに記録されるＡＷ量を、検索したＡＷ属性管理テーブル１４３１のレコードに記録されるＡＷ総量に加算する（Ｆ４）。優先度「中」が設定されていない、すなわち、優先度「高」または優先度「低」が設定されている場合（Ｆ３のＮＯ）、ＡＷ総量の加算は不要であるので、管理部１５４１は、Ｆ４の処理を省略する。
【０１０７】
また、管理部１５４１は、そのAtomic Writeに対してＬＵＴ更新保留方式が適用されている場合（Ｆ５のＹＥＳ）、そのAtomic Writeに関するアドレス変換テーブルの更新の保留を解除する（Ｆ６）。より具体的には、そのAtomic Writeに関するアドレス変換テーブルの更新データに基づき、アドレス変換テーブルを更新し、当該Atomic Write用に確保されるＲＡＭ１４上の更新保留用領域内の領域を解放する。ＬＵＴ更新保留方式が適用されていない、すなわち、ＬＵＴ巻戻方式が適用されている場合（Ｆ５のＮＯ）、アドレス変換テーブルの更新データがＲＡＭ１４上の更新保留用領域に格納されることはないので、管理部１５４１は、Ｆ６の処理を省略する。そして、管理部１５４１は、そのAtomic Write用のレコードをＡＷ実行管理テーブル１４３２から消去する（Ｆ７）。
【０１０８】
図２１は、実施形態のメモリシステムのAtomic Writeキャンセル（ロールバック）時における動作手順の一例を示す図である。
【０１０９】
ＡＷ処理部１５４の管理部１５４１は、ホスト装置から転送されるコマンドに付されるＮＳＩＤをキーに対象のNameSpace用のレコードをＡＷ属性管理テーブル１４３１から検索する（Ｇ１）。また、管理部１５４１は、そのＮＳＩＤと当該コマンドに付されるＴａｇＩＤとをキーに対象のAtomic Write用のレコードをＡＷ実行管理テーブル１４３２から検索する（Ｇ２）。
【０１１０】
管理部１５４１は、そのNameSpaseに対して優先度「中」が設定されている場合（Ｇ３のＹＥＳ）、検索したＡＷ実行管理テーブル１４３２のレコードに記録されるＡＷ量を、検索したＡＷ属性管理テーブル１４３１のレコードに記録されるＡＷ総量とロールバック量とに加算する（Ｇ４）。優先度「中」が設定されていない、すなわち、優先度「高」または優先度「低」が設定されている場合（Ｇ３のＮＯ）、ＡＷ総量およびロールバック量の加算は不要であるので、管理部１５４１は、Ｇ４の処理を省略する。
【０１１１】
管理部１５４１は、そのAtomic Writeに対してＬＵＴ更新保留方式が適用されている場合（Ｇ５のＹＥＳ）、ＡＷ処理部１５４の更新保留制御部１５４２に対し、そのAtomic Writeのキャンセル処理を指示する（Ｇ６）。一方、ＬＵＴ巻戻方式が適用されている場合（Ｇ５のＮＯ）、管理部１５４１は、ＡＷ処理部１５４の巻戻制御部１５４３に対し、そのAtomic Writeのキャンセル処理を指示する（Ｇ７）。そして、管理部１５４１は、そのAtomic Write用のレコードをＡＷ実行管理テーブル１４３２から消去する（Ｇ８）。
【０１１２】
以上のように、実施形態のメモリシステムによれば、ホスト装置からAtomic Writeキャンセルの性能に対する要求が明示される場合（優先度「高」または優先度「低」）、その要求に応じてＬＵＴ更新保留方式またはＬＵＴ巻戻方式が選択され、明示されない場合（優先度「中」）、ＲＡＭ上に確保される更新保留用領域の使用状況や各NameSpaceのロールバック率によりＬＵＴ更新保留方式またはＬＵＴ巻戻方式が選択されるといった、Atomic Writeキャンセルの性能を適応的に制御することを実現する。
【０１１３】
本実施形態に記載された様々な機能の各々は、処理回路によって実現されてもよい。処理回路の例には、中央処理装置（ＣＰＵ）のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたプログラムを実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例は、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、コントローラ、他の電気回路部品も含む。
【０１１４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１５】
１０…メモリシステム、１１…ホストインタフェース部、１２…ＮＡＮＤメモリ、１３…ＮＡＮＤコントローラ、１４…ＲＡＭ、１５…制御部、１５１…ログ情報生成部、１５２…データ処理部、１５３…管理情報処理部、１５４…ＡＷ処理部、１５４１…管理部、１５４２…更新保留制御部、１５４３…巻戻制御部。
【図１】
2017107318.tif 000003
【図２】
2017107318.tif 000004
【図３】
2017107318.tif 000005
【図４】
2017107318.tif 000006
【図５】
2017107318.tif 000007
【図６】
2017107318.tif 000008
【図７】
2017107318.tif 000009
【図８】
2017107318.tif 000010
【図９】
2017107318.tif 000011
【図１０】
2017107318.tif 000012
【図１１】
2017107318.tif 000013
【図１２】
2017107318.tif 000014
【図１３】
2017107318.tif 000015
【図１４】
2017107318.tif 000016
【図１５】
2017107318.tif 000017
【図１６】
2017107318.tif 000018
【図１７】
2017107318.tif 000019
【図１８】
2017107318.tif 000020
【図１９】
2017107318.tif 000021
【図２０】
2017107318.tif 000022
【図２１】
2017107318.tif 000023