(57)【要約】【課題】ユーザにとって任意のタイミングで容易に性能を向上させることが可能なメモリシステムの制御方法を提供する。【解決手段】実施形態のプログラム３により実行される不揮発性メモリ１１を備えたメモリシステム１０の制御方法は、メモリシステムを備えた情報処理装置１に搭載されたオペレーティングシステム２から未使用記憶領域を取得し、未使用記憶領域の他のプログラムによる利用を禁止し、未使用記憶領域のアドレスを取得する。メモリシステムの制御方法は、未使用記憶領域のアドレスをメモリシステムへ通知する。メモリシステムの制御方法は、ユーザによる変更指示があるまで禁止を維持する。【選択図】図１
2012221251.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムにより実行される不揮発性メモリを備えたメモリシステムの制御方法であって、
前記メモリシステムを備えた情報処理装置に搭載されたオペレーティングシステムから未使用記憶領域を取得する工程と、
取得された前記未使用記憶領域の前記アプリケーションプログラム以外のアプリケーションプログラムによる利用を禁止する工程と、
取得された前記未使用記憶領域のアドレスを取得する工程と、
前記未使用記憶領域のアドレスを前記メモリシステムへ通知する工程と、
を備え、
ユーザによる変更指示があるまで前記禁止する工程による禁止を維持する
ことを特徴とするメモリシステムの制御方法。
【請求項２】
前記維持は、前記情報処理装置の電源遮断及び起動を経ても継続する
ことを特徴とする請求項１に記載のメモリシステムの制御方法。
【請求項３】
前記通知を所定の時間間隔で行う
ことを特徴とする請求項１または２に記載のメモリシステムの制御方法。
【請求項４】
前記通知する工程において、
前記アドレスを２つ以上の所定の数取得した後に、前記アドレスを順番に並べ替える工程をさらに備え、
前記並べ替える工程の後に前記アドレスが前記メモリシステムにおける管理単位分連続している場合に、通知を行う
ことを特徴とする請求項１乃至３のいずれか１項に記載のメモリシステムの制御方法。
【請求項５】
前記並べ替える工程の後に前記アドレスが前記メモリシステムにおける管理単位分連続していない場合は、ユーザに対してデフラグ処理の実行を促すメッセージを表示する工程を含む
ことを特徴とする請求項４に記載のメモリシステムの制御方法。
【請求項６】
前記並べ替える工程の後に前記アドレスが前記メモリシステムにおける管理単位分連続していない場合は、前記オペレーティングシステムが管理するファイルシステムのデフラグ処理を実行した後に、前記未使用記憶領域を取得する工程を実行する
ことを特徴とする請求項４または５に記載のメモリシステムの制御方法。
【請求項７】
前記通知する工程により通知した記憶領域のデータ容量の合計が予め定めた容量となるように、前記未使用記憶領域を取得する工程、前記禁止する工程、前記アドレスを取得する工程、及び前記通知する工程を繰り返す
ことを特徴とする請求項１乃至６のいずれか１項に記載のメモリシステムの制御方法。
【請求項８】
前記通知する工程により通知した記憶領域のデータ容量の合計が前記不揮発性メモリの記憶領域の全体容量に対して予め定めた割合となるように、前記未使用記憶領域を取得する工程、前記禁止する工程、前記アドレスを取得する工程、及び前記通知する工程を繰り返す
ことを特徴とする請求項１乃至６のいずれか１項に記載のメモリシステムの制御方法。
【請求項９】
前記通知する工程により通知した記憶領域のデータ容量の合計に対して前記変更指示にてユーザが指定した容量増加となるように、前記未使用記憶領域を取得する工程、前記禁止する工程、前記アドレスを取得する工程、及び前記通知する工程を繰り返す
ことを特徴とする請求項１乃至８のいずれか１項に記載のメモリシステムの制御方法。
【請求項１０】
前記通知する工程により通知した記憶領域のデータ容量の合計に対して前記変更指示にてユーザが指定した容量減少となるように、前記禁止する工程により利用を禁止された領域の一部の禁止を解除する
ことを特徴とする請求項１乃至８のいずれか１項に記載のメモリシステムの制御方法。
【請求項１１】
前記変更指示におけるユーザの指定により、前記禁止する工程により利用を禁止された前記未使用記憶領域の利用禁止を解除する
ことを特徴とする請求項１乃至８のいずれか１項に記載のメモリシステムの制御方法。
【請求項１２】
不揮発性メモリを備えたメモリシステムと、
オペレーティングシステムと、
前記オペレーティングシステムから未使用記憶領域を取得する手段と、取得された前記未使用記憶領域の前記オペレーティングシステム上で動作するアプリケーションプログラムによる利用を禁止する手段と、取得された前記未使用記憶領域のアドレスを取得する手段と、前記未使用記憶領域のアドレスを前記メモリシステムへ通知する手段を含み、ユーザによる変更指示があるまで前記禁止する手段による禁止を維持する最適化機能モジュールと、
を備えた情報処理装置。
【請求項１３】
前記維持は、電源遮断及び起動を経ても継続する
ことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記通知を所定の時間間隔で行う
ことを特徴とする請求項１２または１３に記載の情報処理装置。
【請求項１５】
前記通知する手段において、
前記アドレスを２つ以上の所定の数取得した後に、前記アドレスを順番に並べ替える手段をさらに備え、
前記並べ替える手段の後に前記アドレスが前記メモリシステムにおける管理単位分連続している場合に、通知を行う
ことを特徴とする請求項１２乃至１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記並べ替える手段による並べ替えの後に前記アドレスが前記メモリシステムにおける管理単位分連続していない場合は、ユーザに対してデフラグ処理の実行を促すメッセージを表示する手段
をさらに備えたことを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記並べ替える手段による並べ替えの後に前記アドレスが前記メモリシステムにおける管理単位分連続していない場合は、前記オペレーティングシステムが管理するファイルシステムのデフラグ処理を実行した後に、前記未使用記憶領域を取得する手段により未使用記憶領域の取得を再度実行する
ことを特徴とする請求項１５または１６に記載の情報処理装置。
【請求項１８】
前記通知する手段により通知した記憶領域のデータ容量の合計が予め定めた容量となるように、前記最適化機能モジュールは前記未使用記憶領域を取得する手段、前記禁止する手段、前記アドレスを取得する手段、及び前記解消する手段の動作を繰り返す
ことを特徴とする請求項１２乃至１７のいずれか１項に記載の情報処理装置。
【請求項１９】
前記通知解消する手段により通知した記憶領域のデータ容量の合計が前記不揮発性メモリの記憶領域の全体容量に対して予め定めた割合となるように、前記最適化機能モジュールは前記未使用記憶領域を取得する手段、前記禁止する手段、前記アドレスを取得する手段、及び前記通知する手段の動作を繰り返す
ことを特徴とする請求項１２乃至１７のいずれか１項に記載の情報処理装置。
【請求項２０】
前記通知する手段により通知した記憶領域のデータ容量の合計に対して前記変更指示にてユーザが指定した容量増加となるように、前記最適化機能モジュールは前記未使用記憶領域を取得する手段、前記禁止する手段、前記アドレスを取得する手段、及び前記通知する手段の動作を繰り返す
ことを特徴とする請求項１２乃至１９のいずれか１項に記載の情報処理装置。
【請求項２１】
前記通知する手段により通知した記憶領域のデータ容量の合計に対して前記変更指示にてユーザが指定した容量減少となるように、前記禁止する手段により利用を禁止された領域の一部の禁止を解除する
ことを特徴とする請求項１２乃至１９のいずれか１項に記載の情報処理装置。
【請求項２２】
前記変更指示におけるユーザの指定により、前記禁止する手段により利用を禁止された前記未使用記憶領域の利用禁止を解除する
ことを特徴とする請求項１２乃至１９のいずれか１項に記載の情報処理装置。
【請求項２３】
不揮発性メモリを有するメモリシステムを備えた情報処理装置に実行させるためのプログラムであって
前記情報処理装置に搭載されたオペレーティングシステムから未使用記憶領域を取得する手順と、
取得された前記未使用記憶領域の前記プログラム以外のアプリケーションプログラムによる利用を禁止する手順と、
取得された前記未使用記憶領域のアドレスを取得する手順と、
前記未使用記憶領域のアドレスを前記メモリシステムへ通知する手順と、
を備え、
ユーザによる変更指示があるまで前記禁止する手順による禁止を維持する
ことを特徴とするプログラム。
【請求項２４】
前記維持は、前記情報処理装置の電源遮断及び起動を経ても継続する
ことを特徴とする請求項２３に記載のプログラム。
【請求項２５】
前記通知を所定の時間間隔で行う
ことを特徴とする請求項２３または２４に記載のプログラム。
【請求項２６】
前記通知する手順において、前記アドレスを２つ以上の所定の数取得した後に、前記アドレスを順番に並べ替える手順をさらに備え、
前記並べ替える手順の後に前記アドレスが前記メモリシステムにおける管理単位分連続している場合に、通知を行う
ことを特徴とする請求項２３乃至２５のいずれか１項に記載のプログラム。
【請求項２７】
前記並べ替える手順の後に前記アドレスが前記メモリシステムにおける管理単位分連続していない場合は、ユーザに対してデフラグ処理の実行を促すメッセージを表示する手順を含む
ことを特徴とする請求項２６に記載のプログラム。
【請求項２８】
前記並べ替える手順の後に前記アドレスが前記メモリシステムにおける管理単位分連続していない場合は、前記オペレーティングシステムが管理するファイルシステムのデフラグ処理を実行した後に、前記未使用記憶領域を取得する手順を実行する
ことを特徴とする請求項２６または２７に記載のプログラム。
【請求項２９】
前記通知する手順により通知した記憶領域のデータ容量の合計が予め定めた容量となるように、前記未使用記憶領域を取得する手順、前記禁止する手順、前記アドレスを取得する手順、及び前記通知する手順を繰り返す
ことを特徴とする請求項２３乃至２８のいずれか１項に記載のプログラム。
【請求項３０】
前記通知する手順により通知した記憶領域のデータ容量の合計が前記不揮発性メモリの記憶領域の全体容量に対して予め定めた割合となるように、前記未使用記憶領域を取得する手順、前記禁止する手順、前記アドレスを取得する手順、及び前記通知する手順を繰り返す
ことを特徴とする請求項２３乃至２８のいずれか１項に記載のプログラム。
【請求項３１】
前記通知する手順により通知した記憶領域のデータ容量の合計に対して前記変更指示にてユーザが指定した容量増加となるように、前記未使用記憶領域を取得する手順、前記禁止する手順、前記アドレスを取得する手順、及び前記解消する手順を繰り返す
ことを特徴とする請求項２３乃至３０のいずれか１項に記載のプログラム。
【請求項３２】
前記通知する手順により通知した記憶領域のデータ容量の合計に対して前記変更指示にてユーザが指定した容量減少となるように、前記禁止する手順により利用を禁止された領域の一部の禁止を解除する手順を含む
ことを特徴とする請求項２３乃至３０のいずれか１項に記載のプログラム。
【請求項３３】
前記変更指示におけるユーザの指定により、前記禁止する手順により利用を禁止された前記未使用記憶領域の利用禁止を解除する手順を含む
ことを特徴とする請求項２３乃至３０のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムの制御方法、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
ホスト機器の外部記憶装置として使用されるＳＳＤ（Solid State Drive）では、データの書き換え時に消去動作を必要とするＮＡＮＤ型フラッシュメモリなどの不揮発性メモリを採用している。これらの不揮発性メモリを使用する場合、ホスト機器からの書き換え要求を実行する際に、ＳＳＤ内部で多くのデータコピー処理が実行されることが知られており、このコピー量の大小が製品の寿命や書き込み性能に大きく影響を与える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−３３２８０６号公報
【特許文献２】特開２００５−２０２９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、メモリシステム内部のキャッシュ容量を増加させることが可能なメモリシステムの制御方法を提供する。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態のアプリケーションプログラムにより実行される不揮発性メモリを備えたメモリシステムの制御方法は、前記メモリシステムを備えた情報処理装置に搭載されたオペレーティングシステムから未使用記憶領域を取得する工程と、取得された前記未使用記憶領域の前記アプリケーションプログラム以外のアプリケーションプログラムによる利用を禁止する工程と、取得された前記未使用記憶領域のアドレスを取得する工程を備える。メモリシステムの制御方法は、前記未使用記憶領域のアドレスを前記メモリシステムへ通知する工程をさらに備える。メモリシステムの制御方法は、ユーザによる変更指示があるまで前記禁止する工程による禁止を維持する。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態にかかるメモリシステムの制御方法を実現する情報処理装置の構成を示す図である。
【図２】図２は、実施形態にかかるＯＳ、ＳＳＤとともに最適化機能モジュールが備える各機能手段を詳細に示すブロック図である。
【図３】図３は、実施形態にかかるメモリシステムの制御方法を示すタイムチャートである。
【図４】図４は、実施形態にかかる最適化機能モジュールの動作を示すフローチャートである。
【図５】図５は、実施形態にかかるアドレス変換部が管理する論物変換テーブルを示す図である。
【図６】図６は、実施形態にかかるアドレス変換部が管理する論物変換テーブルを示す別の図である。
【図７】図７は、論理容量、物理容量、ユーザデータ、コントローラ利用部分の関係を示す図である。
【図８】図８は、論理容量、物理容量、ユーザデータ、コントローラ利用部分の関係を示す別の図である。
【図９】図９は、ユーザがパーティションを設定した様子を示す図である。
【図１０】図１０は、ＳＳＤに対するトリム機能の働きを説明する図である。
【図１１】図１１は、実施形態にかかる最適化機能モジュールの働きを説明する図である。
【図１２】図１２は、実施形態にかかる最適化機能モジュールが外部のホストコンピュータ上のＯＳに搭載された例を示す図である。
【発明を実施するための形態】
【０００７】
ＳＳＤ内部のコントローラ（以下、ＳＳＤコントローラと記載する場合がある）は、ＳＳＤ内部に備えるＮＡＮＤ型フラッシュメモリの物理的な記憶容量（物理容量）の一部をホストから書き込まれたユーザデータを記録する領域に使用し、残りの部分を、ユーザデータを効率的に管理するための不揮発性キャッシュ（以下、キャッシュ）領域として使用する。つまり、物理容量からキャッシュ領域の容量を引いた容量が、実際にユーザが利用できるＳＳＤの記憶容量(論理容量)になる。
【０００８】
一般的なＳＳＤコントローラでは、このキャッシュ領域が大きければ大きいほど内部のデータコピー量の増加を抑制することが可能になり、製品の寿命や書き込み性能を高めることができる。しかし、キャッシュ領域の容量を増加させることはホストが使用できる論理容量を減らすことに繋がるため、ＳＳＤの記憶容量あたりの単価が増加してしまう。このため、市販のＳＳＤでは僅かな容量のキャッシュ領域しか搭載していないものが多い。
【０００９】
一方で、ＳＳＤを利用するユーザは各々の使用目的に応じて、ＳＳＤの記憶容量よりも処理性能を重視する場合がある。これらのユーザは故意にＳＳＤの記憶容量よりも小さなパーティションを設定することで、ホスト機器上のＯＳ（オペレーティングシステム）がアクセスしない領域を作り出し、ＳＳＤコントローラがキャッシュ領域などに自由に使用できる容量を増やすことで、書き込み性能を向上させている。
【００１０】
この様にホスト機器上のＯＳがアクセスしない領域を故意に作り出す方法は、一般的なＳＳＤコントローラがアドレス変換機構を備え、書き込まれた領域に対して物理的な領域を割り当てることを期待するものである。具体的には、ホスト機器上のＯＳがアクセスしない領域を故意に作り出すことで、ＳＳＤ内部に未書き込みの状態の領域をあえて存在させ、ＳＳＤコントローラがそれらの領域に割り当てられるはずだった容量をキャッシュ領域として利用することを期待している。
【００１１】
また、ＳＳＤ内部のデータコピー量はキャッシュ領域の容量やＳＳＤコントローラの制御方式によっても大きく異なる。一般的には、ホスト機器が使用していないアドレス領域に関する情報をＳＳＤ内部では知ることができず、ＳＳＤコントローラは未使用のアドレス領域にも有効なデータが存在するとしてデータコピー処理を行う。この様に無駄なデータコピー処理を実行することが、ＳＳＤ内部のデータコピー量増加の一因になっている。
【００１２】
未使用のアドレス領域に対する無駄なデータコピー処理を解消するため、ＡＴＡ（Advanced Technology Attachment）規格では、DATA SET MANAGEMENTコマンド（以下、トリム（Trim）コマンド）を実行してホスト機器で使用していないアドレス領域をＳＳＤへ通知する機能（以下、トリム機能）が提供されている。この機能に対応したＳＳＤでは、ＳＳＤコントローラがトリムコマンドで指定されたアドレス領域を解放して無効なデータとして取り扱うことでデータコピー量を削減している。トリム機能の有効な点は、無効なデータのコピー処理が不要になる点と、無効なデータを記録していた容量をキャッシュ領域として利用することができる点である。
【００１３】
しかしながら、ユーザが故意にＳＳＤの記憶容量（論理容量）よりも小さなパーティションを設定する方法では、一度でもホスト機器から書き込みが実行されたアドレスにはＳＳＤ内部で物理的な領域が割り当てられるため、製品購入後すぐに未使用のアドレス領域を設定するか、ＳＳＤ全体を初期化する特殊なコマンドを使用する必要がある。
【００１４】
また、トリムコマンドを使ってＳＳＤの性能を確保する場合には、頻繁にコマンドを実行することによりＳＳＤ内部の無効化処理による書き込み量増加を招く場合や、コマンドの実行が遅すぎて必要な性能が確保できない場合などがある。また、トリム機能を実行することでＳＳＤ内部で利用可能な容量が増えても、ホスト機器から再度書き込みが実行されると再び利用可能な領域が減ってしまうため、一時的な効果しか得られない。
【００１５】
以下に添付図面を参照して、実施形態にかかるメモリシステムの制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【００１６】
（実施形態）
本発明の実施形態にかかるメモリシステムの制御方法を実現する情報処理装置１０００の構成を図１に示す。情報処理装置１０００は、ホストコンピュータ１及びＳＳＤ１０を含む。実施形態にかかるメモリシステムの制御方法は、メモリシステムであるＳＳＤ１０が接続されたホストコンピュータ１の資源を管理するＯＳ（オペレーティングシステム）２の機能の一部あるいはＯＳ２上で動作する最適化機能モジュール（アプリケーションプログラム）３により実現される。ホストコンピュータ１の資源を管理するＯＳ２は、ＳＳＤ１０上の有効なデータを記録している領域のアドレスと、使用していない領域（以下、未使用領域）のアドレスとを管理する機能を有する。
【００１７】
ホストコンピュータ１には、ユーザに情報を表示する表示部１４が接続されている。表示部１４は、ホストコンピュータ１に組み込まれていても良い。ホストコンピュータ１は、例えば、デスクトップ型ＰＣ（パーソナルコンピュータ）、ラップトップ型ＰＣ、ネットブック型ＰＣ、スマートフォン等の各種電子機器であり、Ｗｉｎｄｏｗｓ（登録商標）などの各種ＯＳを実行するＣＰＵ（Central Processing Unit）、ＤＲＡＭ（Dynamic Random Access Memory）等のメインメモリ、及びＳＳＤの接続が可能なインタフェースを備えている。ホストコンピュータ１とＳＳＤ１０とのインタフェースは、例えば、ＳＡＴＡ（Serial ATA）規格に準拠するが、これに限定されるものではない。
【００１８】
ＳＳＤ１０は、不揮発性メモリであるＮＡＮＤ型フラッシュメモリ１１及びその制御部（ＳＳＤコントローラ）１２を備える。制御部１２は、上記インタフェースを介してホストコンピュータ１から書き込み要求を受けて、ＮＡＮＤ型フラッシュメモリ１１へのデータ書込み処理を行う。また、ＳＳＤ１０は、上記インタフェースを介してホストコンピュータ１からデータ読み出し要求を受けて、ＮＡＮＤ型フラッシュメモリ１１からデータ読み出し処理を行う。書込み要求及び読み出し要求は、書込み処理及び読み出し処理の対象となる先頭論理アドレス及びデータサイズを含む。論理アドレスとしては、例えば、論理容量に対してセクタ単位で０から通し番号が付されたＬＢＡ（Logical Block Address）が採用される。セクタサイズは、例えば５１２Ｂである。
【００１９】
ＮＡＮＤ型フラッシュメモリ１１は、複数の不揮発性メモリセルが行列上に配置されたメモリセルアレイ及び当該メモリセルアレイに対する書込み、読み出し、消去動作を制御するための周辺回路を含む。メモリセルアレイは、データ消去の最小単位であるブロックを複数配列して構成されている。各々のブロックは、データ書込み及び読み出しの最小単位であるページを複数配列して構成されている。１ブロックの記憶容量は例えば１０２４ＫＢであり、１ページの記憶容量は例えば８ＫＢである。各々のメモリセルは、１ビットを記憶するように構成されていても良い（ＳＬＣ：Single Level Cell）し、２ビット以上を記憶するように構成されていても良い（ＭＬＣ：Multi Level Cell）。ＮＡＮＤ型フラッシュメモリ１１では、ブロック内の同一ページに対する再書き込みは、一度当該ページを含むブロック全体を消去した後でなければ許可されない。
【００２０】
制御部１２は、ハードウェア及びソフトウェア、またはそれらの組み合わせにより、ＮＡＮＤ型フラッシュメモリ１１に対する上述した書込み処理及び読み出し処理等の各種制御機能を実行する。この様な制御機能の一つとして、制御部１２は、アドレス変換機能を有するアドレス変換部１３を備えている。アドレス変換部１３は、論物（論理アドレス−物理アドレス）変換テーブルを用いて、ホストコンピュータ１（ＯＳ２）が用いる論理アドレスであるＬＢＡとＮＡＮＤ型フラッシュメモリ１１上の物理アドレスとの変換（論物変換）を行う。論物変換の単位（管理サイズ）は任意であるが、例えば、ＮＡＮＤ型フラッシュメモリのページサイズやブロックサイズ、あるいはＯＳ２が採用するファイルシステムのクラスタサイズ等に一致させることができる。
【００２１】
この様に論理アドレスと物理アドレスとの変換が行われるＳＳＤでは一般的に、管理テーブルのサイズ増大を抑制するため、論理アドレス（ＬＢＡ）空間上の連続したアドレスを論物変換の単位（管理サイズ、例えば８ＫＢ）として、当該連続したアドレスをまとめてＮＡＮＤ型フラッシュメモリ１１上の物理的な領域に割り当てる。管理サイズは、例えばＮＡＮＤ型フラッシュメモリ１１のページサイズに一致させることができる。この場合、ＮＡＮＤ型フラッシュメモリ１１の１つのページには、１つの管理サイズのデータが記憶され、制御部１２はページ単位でデータのコピーを実行する。
【００２２】
図２に、ＯＳ２、ＳＳＤ１０とともに最適化機能モジュール３が備える各機能手段を詳細に示す。最適化機能モジュール３は、未使用領域取得手段３１、未使用領域アドレス取得手段３２、利用禁止手段３３、アドレスソート手段３４、通知手段３５を備える。以下、これら手段の実現する機能を、本実施形態にかかるメモリシステムの制御方法を示す図３のタイムチャートと共に説明する。
【００２３】
（未使用領域の割り当て要求）
最適化機能モジュール３の未使用領域取得手段３１は、ＯＳ２に対して「未使用領域の割り当て要求」を発行する。「未使用領域の割り当て要求」を受けたＯＳ２は、論理的な未使用領域を割り当てる。また、ＯＳ２が採用するファイルシステムによっては、論理的な未使用領域の割り当てにとどまらず、ＳＳＤ１０の物理的な未使用領域まで割り当てる場合もある。いずれにせよ、ＯＳ２は少なくとも論理的なメモリ領域を割り当てることにより未使用領域の確保を行う。
【００２４】
（未使用領域のアドレス取得要求）
最適化機能モジュール３の未使用領域アドレス取得手段３２は、ＯＳ２に対して「未使用領域のアドレス取得要求」を発行する。「未使用領域のアドレス取得要求」を受けたＯＳ２は、上述した「未使用領域の割り当て要求」にてＯＳ２が未使用領域として確保したメモリ領域に割り当てられるＳＳＤ１０上の論理アドレス（ＬＢＡ）を、最適化機能モジュール３の未使用領域アドレス取得手段３２へ通知する（図３「アドレス通知」）。
【００２５】
（未使用領域の利用禁止要求）
次に、未使用領域アドレス取得手段３２が取得した論理アドレスに対してＯＳ２上で動作する他のアプリケーションプログラムがアクセスしないように、当該アドレスを利用禁止の状態に設定する。具体的には、最適化機能モジュール３の利用禁止手段３３が、ＯＳ２に対して「未使用領域の利用禁止要求」を発行する。これはこれから操作するＳＳＤ１０上の領域に対して、他のアプリケーションプログラムがアクセスすることで不適切な動作が生ずることを抑制するためである。
【００２６】
ここで未使用領域の利用を禁止する方法として、アクセス権の設定などＯＳ２に利用禁止する機能があればそれを利用する。その様な機能が無ければ、例えば新規にファイルを作成した後にアドレスを取得するなどの方法が考えられる。また、書き込み禁止、読み出し禁止などの属性を、作成したファイルに付与しても良い。しかしながら、他のアプリケーションプログラムが未使用領域を利用することを禁止することができれば、その実現方法に制限はない。また、未使用領域のアドレスを取得する動作と、未使用領域の利用を禁止する動作との順序に制限はない。
【００２７】
ここで、本実施形態では、未使用領域アドレス取得手段３２がＯＳ２から取得する未使用領域の論理アドレスの数は２以上であるとする。未使用領域アドレス取得手段３２は、複数の未使用領域の論理アドレスで指定された領域の合計容量が、予め定めたサイズ分になるまで、繰り返し未使用領域の論理アドレスを取得する。これは、ある程度まとめた単位でトリム機能を実行した方が、処理効率が良いためであり、例えばトリムコマンドはアドレスとサイズの組を複数個一度に発行できるので、このコマンドの仕様にあわせたサイズでも良い。
【００２８】
２つ以上の未使用領域の論理アドレスは取得順に並んでいるため、ＬＢＡ空間上でアドレスの順番に並んでいない可能性がある。そこで、本実施形態においてはＳＳＤ１０のアドレス変換部１３における論物変換の単位（管理サイズ）となるＬＢＡ空間上のアドレスのアラインメントにできるだけ合致する連続したアドレスの並びとなるように、取得したアドレスを並べ替える（ソートする）。最適化機能モジュール３は、これらの並び替えられたアドレスを、トリム機能を利用してＳＳＤ１０へ通知するアドレスの候補とする。以下、最適化機能モジュール３の動作を、図４のフローチャートも併用して具体的に説明する。
【００２９】
（未使用領域の通知要求）
ＯＳ２から図３の「アドレス通知」により未使用領域アドレス取得手段３２が取得した論理アドレスをアドレスソート手段３４が受け取り、トリム機能の対象となる未使用領域の量が上記した予め定めたサイズ分溜まった時点で、ＬＢＡ空間上でアドレスの順番にソートする（ステップＳ１０１）。ソートの結果、管理サイズ（例えば、８ＫＢ）の連続アドレス領域が存在するかどうかが判定され（ステップＳ１０２）、連続アドレス領域が存在する場合（ステップＳ１０２:Ｙｅｓ）は、通知手段３５がＯＳ２に対して「未使用領域の通知要求」を発行する。即ち、通知手段３５は管理サイズの未使用連続アドレス領域にトリムコマンドを発行するようにＯＳ２に要求する（ステップＳ１０３）。なお、最適化機能モジュール３は、上記管理サイズについての情報を予め保持している。そのための方法としては、ＯＳ２が管理するデータサイズに基づいて予測しても良いし、予め定めた手順に従ってＳＳＤ１０から取得しても良い。
【００３０】
連続アドレス領域が存在する場合（ステップＳ１０２:Ｙｅｓ）であっても、予め定めた管理サイズの連続領域に満たないアドレス領域は通知対象外とする。これはＯＳ２がトリム機能によりＳＳＤ１０に対して未使用領域であると通知しても、ＳＳＤ１０内部でデータをコピーする最小単位（管理サイズ）に達しない場合には、無効化できずにコピーせざるを得ないためである。また、管理サイズの連続領域に満たないアドレス領域を記録するためのＳＳＤ１０内部のリソースも必要になるため、通知をしないことで無駄な処理を発生させないことが期待できるからである。ただし、予め管理サイズ未満の未使用情報を記憶する機能がＳＳＤ１０内部に存在する場合や、判定プログラムの複雑さをさけるために、管理サイズに満たないアドレス領域をトリム機能の対象としてもよい。
【００３１】
ステップＳ１０２で、管理サイズ（例えば、８ＫＢ）の連続アドレス領域が存在しない場合（ステップＳ１０２:Ｎｏ）、ホストコンピュータ１のファイルシステム上ではデータの断片化が進んでいる状態にあると考えられる。この場合には、図３の「未使用領域の割り当て要求」にて未使用領域取得手段３１が取得した未使用領域を一旦解放し、ホストコンピュータ１上で断片化を解消する何らかの処理（デフラグ）を実行する（ステップＳ１０４）。最適化機能モジュール３は、断片化の解消後、「未使用領域の割り当て要求」から再度実行する（ステップＳ１０５）。
【００３２】
ここで断片化の解消、すなわちデフラグの方法は、ユーザに対して断片化の解消を要求するメッセージを表示部１４に表示したり、ＯＳ２などが提供する断片化解消機能を呼び出したりするなどして実現する。あるいは、最適化機能モジュール３自体が断片化を解消するための機能を備えていても良い。デフラグにより、その後ステップＳ１０５を経て再度ステップＳ１０１のソートをしたときに、管理サイズの連続未領域が存在する確率が高まることが期待できる。
【００３３】
（未使用領域のアドレス通知）
ステップＳ１０３で、通知手段３５から図３の「未使用領域の通知要求」を受け取ったＯＳ２は、管理サイズ分の連続した未使用アドレス領域をＳＳＤ１０に対して通知する（図３「未使用領域のアドレス通知」）。この「未使用領域のアドレス通知」には、例えば、上述したトリムコマンドを用いることができる。トリムコマンドは、少なくとも１つのトリム対象領域の先頭論理アドレス（ＬＢＡ）と、トリム対象領域のデータサイズとを含んでいる。
【００３４】
ここで、通知すべきトリム対象領域が管理サイズの複数倍（例えば、８ＫＢの領域が１００個分）の容量がある場合は、トリムコマンドを発行する際には、候補となっている対象（例えば、８ＫＢ×１００個）を複数回（例えば、１０回）に分割して（例えば、８ＫＢ×１０個ずつ）、規定の時間間隔を空けてＳＳＤ１０に対して通知しても良い。これは、ＳＳＤ１０では、受け取った論理アドレスを元にアドレス変換部１３が管理する論物変換テーブルの操作及びそれに伴う内部のデータの移動などに時間がかかるので、未使用領域のアドレスを受け取った後に、ＳＳＤ１０内部での処理が完了するのを待つためである。
【００３５】
制御部１２のアドレス変換部１３は、図５に示す論物変換テーブルを管理している。論物変換テーブルは、ＬＢＡ（論理ページアドレス及びページ内オフセットからなる）とそれに対応付けられているＮＡＮＤ型フラッシュメモリ１１上の物理アドレスとが保持されたテーブルである。ここでは管理サイズがＮＡＮＤ型フラッシュメモリのページサイズに等しい場合について示しており、論理ページアドレスが論物変換テーブルのインデックスとされている。論理ページアドレスは、ＬＢＡの上位複数ビットで構成され、ＮＡＮＤ型フラッシュメモリ１１のページサイズに等しい連続したアドレス領域を示している。ページ内オフセットは、ＬＢＡの下位複数ビットで構成され、ページサイズの個々のデータ内におけるセクタ位置を特定する。
【００３６】
一旦あるＬＢＡに対して書き込みが実行されると、図５に示す論物変換テーブルの「Ａ」、「Ｂ」、「Ｃ」の欄の様に以後ＳＳＤ１０内部では有効なデータとして扱われることになる。図５の「未書き込み」の欄はＬＢＡとしては存在するものの対応する物理アドレスが存在しないことを示している。ここで、ＳＳＤ１０が「未使用領域のアドレス通知」（トリムコマンド）を受け取ると、例えばトリムコマンドが通知した論理アドレス（ＬＢＡ）が、図６において既に書き込まれている物理アドレス「Ｂ」に対応する場合は、物理アドレス「Ｂ」が削除あるいは無効値に書き換えられて、当該ＬＢＡと物理アドレスとの対応関係は解消される（図６）。
【００３７】
論理アドレス（ＬＢＡ）と物理アドレスとの対応関係が解消されると、元々物理アドレス「Ｂ」に記憶されていたデータは、論理アドレスに関連付けられていない無効データとして取り扱われる。ブロック内の全てのページが無効データのみを保持している場合、この様なブロックは任意のタイミングでデータ消去が可能であり、以降上述したキャッシュ領域として利用することが可能である。このようにして論物変換テーブルの更新がされた後に、図３に示すように、ＳＳＤ１０からＯＳ２へ「応答」を返し、ＳＳＤ１０からの「応答」を受け取ったＯＳ２は、さらにトリム機能の実行が完了したことを示す「応答」を最適化モジュール３へと返す。
【００３８】
（利用禁止状態の維持）
トリム機能を使用してＳＳＤ１０に対して通知した論理アドレスは、ホストコンピュータ１上で利用禁止の状態にあり、かつＳＳＤ１０内部では物理的な領域が割り当てられていない領域（以下トリム完了領域）になる。ＳＳＤ１０の内部ではこれらの領域はキャッシュ領域として利用されることが期待できるので、トリム機能の実行後に、トリム完了領域に対するアクセス禁止状態が１回以上の電源遮断後も維持される状態へ変更する。利用禁止とするタイミングは、上述したように未使用領域確保の段階でも良い。いずれにせよ、ユーザが最適化機能モジュール３に利用禁止領域を変更する指示を与えるまで禁止状態が維持されれば良い。
【００３９】
（本実施形態にかかる効果）
上述したように、本実施形態にかかるメモリシステムの制御方法によれば、ホストコンピュータ１上で利用禁止領域を設け、利用禁止領域に対してトリム機能を実行し、１回以上の電源遮断後も利用禁止領域の状態を保持し続けることで、ＳＳＤ内部のキャッシュ領域の容量を容易に増加させることができ、ユーザが所望する任意のタイミングで、容易に処理性能を向上させることが可能になる。
【００４０】
（変形例）
本実施形態にかかるモリシステムの制御方法においては、さらに以下の変形例にかかる動作を実行しても良い。以下の動作は本実施形態にかかるモリシステムの制御方法と組み合わせて単独でも実行可能であり、また複数の動作を組み合わせて用いることも可能であり、またその組み合わせ方は任意である。
【００４１】
（トリム機能が実行されたかどうかの確認機能）
トリム機能に対応したＳＳＤでは、論物変換テーブルの操作後など未使用領域のアドレスを受け取った後に実行する処理が完了した後に、トリム完了領域のアドレスを読み出すと、予め定められた所定のデータパターンが読めるようになっている場合がある。これらの機能を有するＳＳＤに対応するため、最適化機能モジュール３は、トリム機能の実行が完了した後、トリム完了領域のアドレスを再度読み出し、予め定められたデータパターンであるか確認し、予め定めたデータパターンで無かった場合は、再度トリム機能を実行して確実に未使用領域を解放する処理を実行しても良い。
【００４２】
（同じ領域に対して再度トリム機能の実行機能）
別の方法として、トリム機能の実行前に予めトリム対象領域のデータの読み出しを実行して、トリム機能の実行が完了した後にデータパターンが変化していない場合には、再度トリム機能を実行して確実に未使用領域を解放する処理を実行しても良い。このようにしてトリム機能が実行されたかどうかの確認をすることが可能である。また、トリム機能が完了したかどうかを確認せずに、一度トリム機能を実行したアドレスに対して再度トリム機能を実行して、確実に未使用領域を解放する処理を実行しても良い。
【００４３】
（トリム機能の繰り返し実行機能）
また、最適化機能モジュール３は、ユーザが指定した容量分の利用禁止領域を確保するために、図３に示した「未使用領域の割り当て要求」、「未使用領域のアドレス取得要求」、「アドレス通知」、「未使用領域の利用禁止要求」、「取得したアドレスの並べ替え」、「未使用領域の通知要求」、「未使用領域のアドレス通知」を繰り返し実行しても良い。さらには上記したデフラグ処理をこの繰り返し処理に適宜追加しても良い。
【００４４】
（トリム完了領域の追加機能）
また、最適化機能モジュール３は、ユーザまたはシステムなどの要求に従って、上記繰り返しを追加するなどしてさらに未使用領域をＯＳ２から取得してトリム機能を実行しても良い。トリム完了領域を増やすことでＳＳＤ１０がキャッシュ領域として使用できる容量をさらに増やすことができ、ＳＳＤ１０の性能をさらに向上させることが可能である。利用禁止領域を増加させる量に関しては、予め定められた増加量とする方法や、ユーザまたはシステムに増加量を指定させる方法があるが、実現方法に関し制約はない。
【００４５】
（トリム完了領域の縮小機能）
また、最適化機能モジュール３は、ホストコンピュータ１上の利用可能な領域が減ってきた場合などには、ユーザまたはシステムなどの要求に従って、トリム完了領域の利用禁止状態を一部解除し、ＯＳ２に対して利用禁止状態を解除した領域を解放することで、ホストコンピュータ１が利用できる記憶容量を増やす機能を提供しても良い。利用禁止領域を縮小させる量に関しては、予め定められた縮小量とする方法や、ユーザまたはシステムに縮小量を指定させる方法があるが、実現方法に関し制約はない。
【００４６】
（トリム完了領域の削除機能）
また、最適化機能モジュール３は、ユーザまたはシステムなどの要求に従って、トリム完了領域の利用禁止状態をすべて解除し、ＯＳ２に対してすべての領域を解放することで性能向上のために確保した領域の解放を実行する機能を提供しても良い。
【００４７】
（トリム完了領域の即時削除機能）
また、最適化機能モジュール３は、トリム完了領域の利用禁止状態をトリム機能の実行完了後すぐに、あるいは実行完了と同時にすべて解除し、ＯＳ２に対してすべての領域を解放することで、性能向上のために確保した領域の解放を実行する機能を提供しても良い。
【００４８】
（トリム完了領域を一定の割合に維持する機能）
また、最適化機能モジュール３は、ユーザやシステムによって予め指定された割合になるように上記トリム完了領域の縮小と追加を行うことで、ホストコンピュータ１の利用状況に合わせて、性能向上用の領域を調整する機能を提供しても良い。また、ユーザやシステムが予め指定された割合を変更できる機能を提供しても良い。
【００４９】
（具体例）
上述した本実施形態にかかるメモリシステムの制御方法及びその関連技術について、実際のＳＳＤの論理容量、物理容量と関連付けて以下具体的に説明する。ＳＳＤ１０の制御部１２は、上述した通り、物理容量の一部をホストコンピュータ１から書き込まれたユーザデータを記録する領域に使用し、残りの部分を、ユーザデータを効率的に管理するためのキャッシュ領域として使用する。このため、ホストコンピュータ１が使用できるＳＳＤの記憶容量は、ＳＳＤ１０内部に備えるＮＡＮＤ型フラッシュメモリ１１の物理容量よりも少ない論理的な容量になり、これは製品の容量モデル毎に決まった値になる。
【００５０】
図７は、論理容量、物理容量、ユーザデータ、コントローラ利用部分の関係を示す図である。例えば、図７に示すように物理容量が１２８ＧＢで論理容量が１２０ＧＢの製品では、物理容量と論理容量の差分である８ＧＢをＳＳＤ１０内部の制御部１２が使用する。制御部１２は、この８ＧＢの容量をキャッシュ領域として利用することが可能である。キャッシュ領域は、例えば、ＮＡＮＤ型フラッシュメモリ１１の複数のブロックを用いて構成されている。
【００５１】
キャッシュ領域は、例えば、ユーザデータ記憶領域よりも小さい管理サイズで管理されても良い。一例として、キャッシュ領域はページサイズで管理され、ユーザデータ領域はブロックサイズで管理される。また、例えばユーザデータ領域に割り当てられるブロックについてはＭＬＣ制御を行い、キャッシュ領域に割り当てられるブロックについてはＳＬＣ制御を行うなどしても良い。ホストコンピュータ１からの書込みデータは最初にキャッシュ領域に書き込まれ、その後キャッシュ領域からの所定の追い出し条件が満たされた場合に、ユーザデータ領域に書き込まれる。
【００５２】
図８は、論理容量、物理容量、ユーザデータ、コントローラ利用部分の関係を示す別の図である。図８に示すように、ホストコンピュータ１が利用可能な論理空間の一部分しか使用していない場合には、ユーザデータが記録されていない領域をキャッシュ領域として利用することが可能である。このような製品では、ホストコンピュータ１が利用する論理的な空間が増えるにしたがって、言い換えればホストコンピュータ１が一度でも書き込みアクセスしたアドレスが増えるにしたがって、キャッシュ領域として利用できる容量が減っていくことになる。
【００５３】
図９は、ユーザがパーティションを設定した様子を示す図である。ユーザは、図９に示すように故意にＳＳＤの記憶容量よりも小さなパーティションを設定することでホスト機器がアクセスしない領域を作り出し、制御部１２が自由に使用できる容量を増やすことで書き込み性能を向上させることが可能である。図９は、６４ＧＢのパーティションを設定した例を示している。論理容量である１２０ＧＢとＯＳをインストールしたパーティションの容量である６４ＧＢとの差分５６ＧＢ（未フォーマット領域）は、制御部１２が利用することが可能である。従って、制御部１２は、元々確保されていた８ＧＢと５６ＧＢとを合計した６４ＧＢの容量を、キャッシュ領域として利用できる。
【００５４】
図１０は、ＳＳＤに対するトリム機能の働きを説明する図である。図１０では、ＳＳＤ１０は１２０ＧＢのユーザデータが存在すると認識しており、制御部１２が利用可能な容量は元々確保されていた８ＧＢのみである。一方で、ホストコンピュータ１は１２０ＧＢ全体を利用している訳ではなく、その一部にはホストコンピュータ１が必要なデータが配置されていない未使用領域が存在している。この未使用領域に対してトリム機能を実行することで、ＳＳＤ内部で制御部１２が利用できる容量を増加させることが可能である。
【００５５】
図１１は、本実施形態にかかる最適化機能モジュール３の働きを説明する図である。本実施形態にかかる最適化機能モジュール３は、図１１に示すようにホストコンピュータ１が使用していない領域（未使用領域）を他のアプリケーションプログラムが使えない利用禁止領域にする。さらに、その利用禁止領域に含まれる論理アドレスに対してトリムコマンドを発行する。トリム機能を使用してＳＳＤ１０に対して通知した論理アドレスは、ホストコンピュータ１上で利用禁止の状態にあり、かつＳＳＤ１０内部では物理的な領域が割り当てられていない領域（トリム完了領域）になる。
【００５６】
図１２は、本実施形態にかかる最適化機能モジュール３が外部のホストコンピュータ上のＯＳに搭載された例を示す図である。図１２に示すように外部のホストコンピュータ１００上のＯＳ２００に搭載されたアプリケーション（最適化モジュール）３００から、無線通信或いは有線通信を介して本体のホストコンピュータ１上のＯＳ２を介してＳＳＤ１０に対して上記実施形態にかかるメモリシステムの最適化方法を実行しても構わない。ここでホストコンピュータ１は例えばスマートフォン、携帯型ゲーム機等であっても良い。
【００５７】
なお、最適化機能モジュール３は、ＣＤ−ＲＯＭやＵＳＢ（Universal Serial Bus）メモリに記憶された状態で、ＳＳＤ１０販売時に同梱してユーザに配布しても良いし、ネットワーク経由でダウンロード可能な状態とすることでユーザに配布しても良い。また、ＳＳＤ１０が組み込まれた状態で情報処理装置が販売される場合には、予め最適化機能モジュール３がインストールされていても良い。また、最適化機能モジュール３は、常駐プログラムであっても良いし、タスクスケジューラにより定期的に起動するものであっても良いし、ユーザが任意のタイミングで起動するものであっても良いし、ＳＳＤ１０から所定の通知を受けた場合に自動で起動するものであっても良い。
【００５８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５９】
１、１００  ホストコンピュータ、２、２００  ＯＳ、３  最適化機能モジュール、１０  ＳＳＤ、１１  ＮＡＮＤ型フラッシュメモリ、１２  制御部（コントローラ）、１３  アドレス変換部。
【図１】
2012221251.tif 000003
【図２】
2012221251.tif 000004
【図３】
2012221251.tif 000005
【図４】
2012221251.tif 000006
【図５】
2012221251.tif 000007
【図６】
2012221251.tif 000008
【図７】
2012221251.tif 000009
【図８】
2012221251.tif 000010
【図９】
2012221251.tif 000011
【図１０】
2012221251.tif 000012
【図１１】
2012221251.tif 000013
【図１２】
2012221251.tif 000014