(57)【要約】      （修正有）【課題】ストレージを使用するアプリケーションの要求事項に従って、物理フラッシュメモリブロック並びに消去及びプログラム方法を選択するフラッシュメモリの割当方法及びそれを用いたソリッドステートドライブを提供する。【解決手段】本発明のソリッドステートドライブにおいて、磨耗追跡器はプログラム及び消去サイクルをカウントし、生のビットエラー率追跡器は読み出されるデータの生のビットエラー率をモニターリングする。アプリケーションはデータの予想格納時間に対応する許容可能保持時間並びにフラッシュメモリに対するプログラム及び読出し時間に対応する平均応答時間に関する要求事項をソリッドステートドライブに提供し、ソリッドステートドライブは要求事項を充足させるのに適合する物理フラッシュメモリブロックを識別して物理フラッシュメモリブロックの中のストレージ空間をアプリケーションに割当する。【選択図】図７
2017228287.tif 000002
【特許請求の範囲】
【請求項１】
ホストに連結されるソリッドステートドライブにおいて、複数の物理フラッシュメモリブロックを含むフラッシュメモリの部分を割当する方法であって、
前記フラッシュメモリ上で、複数のビットエラーカウントを生成するエラー訂正コードデコーディング演算を含む複数の読出し動作を遂行する段階と、
前記複数のビットエラーカウントから、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する生の（Ｒａｗ）ビットエラー率を計算する段階と、
前記複数の物理フラッシュメモリブロックの各々に対して遂行されるプログラム及び消去サイクルをカウントする段階と、
複数のプログラム方法の各々に対して、前記生のビットエラー率並びに前記プログラム及び消去サイクルのカウントされた回数から、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する平均応答時間及び推定許容可能保持時間を計算する段階と、
前記ホスト上で動作する第１アプリケーションから、第１集合の要求事項を受信する段階と、
前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別する段階と、
前記第１集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第１リストを形成する段階と、
前記第１アプリケーションから、ストレージ空間の割当に対する要請を受信する段階と、
前記第１リストからの第１物理フラッシュメモリブロックを前記第１アプリケーションに割当する段階と、を有することを特徴とする方法。
【請求項２】
前記複数のプログラム方法は、
第１ステップサイズを活用するＩＳＰＰ（Ｉｎｃｒｅｍｅｎｔａｌ  Ｓｔｅｐ  Ｐｕｌｓｅ  Ｐｒｏｇｒａｍｍｉｎｇ）方法と、
第２ステップサイズを活用するＩＳＰＰ方法と、を含み、
前記第１ステップサイズは、前記第２ステップサイズよりも大きいことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１集合の要求事項は、要求許容可能保持時間及び要求平均応答時間を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別する段階は、
前記複数のプログラム方法の中のいずれかのプログラム方法に対して、
前記計算された平均応答時間が前記要求平均応答時間よりも小さいか否かと、
前記計算された推定許容可能保持時間が前記要求許容可能保持時間よりも大きいか否かと、を判別する段階を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記第１物理フラッシュメモリブロックを消去する段階を更に含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１物理フラッシュメモリブロックを消去する段階は、
前記第１物理フラッシュメモリブロックが浅い（Ｓｈａｌｌｏｗ）消去処理によって前記第１集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用する段階と、
前記第１物理フラッシュメモリブロックが前記浅い消去処理によって前記第１集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の（Ｎｏｒｍａｌ）消去処理を採用する段階と、を含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記複数の物理フラッシュメモリブロックの中の１つ以上に対する平均応答時間及び推定許容可能保持時間を計算する段階は、
保持時間関数としてのビットエラーカウントに対して線形フィット（Ｆｉｔ）を遂行する段階と、
前記線形フィットが最大の受け入れ可能な生のビットエラー率を超過する保持時間を前記推定許容可能保持時間として計算する段階を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記最大の受け入れ可能な生のビットエラー率は、１００万ビット当たり１ビットのエラーであることを特徴とする請求項７に記載の方法。
【請求項９】
前記ホスト上で動作する第２アプリケーションから、前記第１集合の要求事項と異なる第２集合の要求事項を受信する段階と、
前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第２集合の要求事項を充足させるのに適合するか否かを判別する段階と、
前記第２集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第２リストを形成する段階と、
前記第２アプリケーションから、ストレージ空間の割当に対する要請を受信する段階と、
前記第２リストからの第２物理フラッシュメモリブロックを前記第２アプリケーションに割当する段階と、を更に含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記第２物理フラッシュメモリブロックを消去する段階を更に含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記第２物理フラッシュメモリブロックを消去する段階は、
前記第２物理フラッシュメモリブロックが浅い消去処理によって前記第２集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用する段階と、
前記第２物理フラッシュメモリブロックが前記浅い消去処理によって前記第２集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の消去処理を採用する段階と、を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
各々が複数の物理ページを有する複数の物理フラッシュメモリブロックを含むフラッシュメモリと、
ＮＡＮＤコントローラ、磨耗（Ｗｅａｒ−ｏｕｔ）追跡器、及び生の（Ｒａｗ）ビットエラー率追跡器を含むモーフィックエンジン（Ｍｏｒｐｈｉｃ  Ｅｎｇｉｎｅ）と、
仮想ストレージテーブル及びクラスタリングエンジンを有するストレージ仮想化器（Ｖｉｒｔｕａｌｉｚｅｒ）を含むストレージコントローラと、を備え、
前記ＮＡＮＤコントローラは、複数のビットエラーカウントを生成するエラー訂正コードデコーディング演算を含む複数の読出し動作を前記フラッシュメモリ上で遂行し、
前記生のビットエラー率追跡器は、前記複数のビットエラーカウントから、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する生のビットエラー率を計算し、
前記磨耗追跡器は、前記複数の物理フラッシュメモリブロックの中の１つ以上に対して遂行されるプログラム及び消去サイクルをカウントし、
前記クラスタリングエンジンは、複数のプログラム方法の各々に対して、前記生のビットエラー率並びに前記プログラム及び消去サイクルのカウントされた回数から、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する平均応答時間及び推定許容可能保持時間を計算し、
前記仮想ストレージテーブルは、ホスト上で動作する第１アプリケーションから、第１集合の要求事項を受信し、
前記クラスタリングエンジンは、
前記仮想ストレージテーブルから前記第１集合の要求事項を受信し、
前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別し、
前記第１集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第１リストを形成し、
前記第１アプリケーションから、ストレージ空間の割当に対する要請を受信し、
前記第１リストからの第１物理フラッシュメモリブロックを前記第１アプリケーションに割当することを特徴とするソリッドステートドライブ。
【請求項１３】
前記複数のプログラム方法は、
第１ステップサイズを活用するＩＳＰＰ（Ｉｎｃｒｅｍｅｎｔａｌ  Ｓｔｅｐ  Ｐｕｌｓｅ  Ｐｒｏｇｒａｍｍｉｎｇ）方法と、
第２ステップサイズを活用するＩＳＰＰ方法と、を含み、
前記第１ステップサイズは、前記第２ステップサイズよりも大きいことを特徴とする請求項１２に記載のソリッドステートドライブ。
【請求項１４】
前記第１集合の要求事項は、要求許容可能保持時間及び要求平均応答時間を含むことを特徴とする請求項１２に記載のソリッドステートドライブ。
【請求項１５】
前記クラスタリングエンジンは、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別するために、
前記複数のプログラム方法の中のいずれかのプログラム方法に対して、
前記計算された平均応答時間が前記要求平均応答時間よりも小さいか否かと、
前記計算された推定許容可能保持時間が前記要求許容可能保持時間よりも大きいか否かと、を判別することを特徴とする請求項１４に記載のソリッドステートドライブ。
【請求項１６】
前記ＮＡＮＤコントローラは、前記第１物理フラッシュメモリブロックを消去することを特徴とする請求項１２に記載のソリッドステートドライブ。
【請求項１７】
前記ＮＡＮＤコントローラは、前記第１物理フラッシュメモリブロックを消去するために、
前記第１物理フラッシュメモリブロックが浅い（Ｓｈａｌｌｏｗ）消去処理によって前記第１集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用し、
前記第１物理フラッシュメモリブロックが前記浅い消去処理によって前記第１集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の（Ｎｏｒｍａｌ）消去処理を採用することを特徴とする請求項１６に記載のソリッドステートドライブ。
【請求項１８】
前記クラスタリングエンジンは、前記複数の物理フラッシュメモリブロックの中の１つ以上に対して、性能メトリック関数としての前記推定許容可能保持時間を計算するために、
保持時間関数としてのビットエラーカウントに対して線形フィット（Ｆｉｔ）を遂行し、
前記線形フィットが最大の受け入れ可能な生のビットエラー率を超過する保持時間を前記推定許容可能保持時間として計算することを特徴とする請求項１２に記載のソリッドステートドライブ。
【請求項１９】
前記最大の受け入れ可能な生のビットエラー率は、１００万ビット当たり１ビットのエラーであることを特徴とする請求項１８に記載のソリッドステートドライブ。
【請求項２０】
前記仮想ストレージテーブルは、前記ホスト上で動作する第２アプリケーションから、前記第１集合の要求事項と異なる第２集合の要求事項を受信し、
前記クラスタリングエンジンは、
前記仮想ストレージテーブルから前記第２集合の要求事項を受信し、
前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第２集合の要求事項を充足させるのに適合するか否かを判別し、
前記第２集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第２リストを形成し、
前記第２アプリケーションから、ストレージ空間の割当に対する要請を受信し、
前記第２リストからの第２物理フラッシュメモリブロックを前記第２アプリケーションに割当することを特徴とする請求項１２に記載のソリッドステートドライブ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリに関し、より詳細には、多様な環境に合わせてフラッシュメモリ装置の動作を調節するための割当方法及びそれを用いたソリッドステートドライブに関する。
【背景技術】
【０００２】
フラッシュメモリはデータの保持時間（Ｒｅｔｅｎｔｉｏｎ  Ｔｉｍｅ）が多様な要因に依存する永久的なストレージの１つの類型である。例えば、フラッシュメモリセルでのデータの保持時間は、セルが経験したプログラム及び消去サイクル（Ｐｒｏｇｒａｍ  ａｎｄ  Ｅｒａｓｅ  Ｃｙｃｌｅ）の回数、利用された消去方法、及び利用されたプログラム方法に依存する。フラッシュメモリを利用する多様なアプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）は、異なる要求事項（Ｒｅｑｕｉｒｅｍｅｎｔ）を有する。例えば、幾つかのアプリケーションは非常に長い保持時間を要求し、他のアプリケーションは短い保持時間のみを要求する。短い保持時間のみを要求するアプリケーションに対して、長い保持時間を提供する方式でフラッシュメモリを動作させることは有益ではなく、結果として、例えば低下した性能を引き起こす。
【０００３】
従って、多様な環境に合わせてフラッシュメモリ装置の動作を調節するためのシステム及び方法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ソリッドステートドライブのストレージを使用するアプリケーションの要求事項に従って、物理フラッシュメモリブロック並びに消去及びプログラム方法を選択するフラッシュメモリの割当方法及びそれを用いたソリッドステートドライブを提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するためになされた本発明の一態様による方法は、ホスト（Ｈｏｓｔ）に連結されるソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）において、複数の物理フラッシュメモリブロック（Ｐｈｙｓｉｃａｌ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｂｌｏｃｋ）を含むフラッシュメモリの部分を割当する方法であって、前記フラッシュメモリ上で、複数のビットエラーカウント（Ｂｉｔ  Ｅｒｒｏｒ  Ｃｏｕｎｔ）を生成するエラー訂正コードデコーディング演算（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ  Ｄｅｃｏｄｉｎｇ  Ｏｐｅｒａｔｉｏｎ）を含む複数の読出し動作を遂行する段階と、前記複数のビットエラーカウントから、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する生のビットエラー率（Ｒａｗ  Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ）を計算する段階と、前記複数の物理フラッシュメモリブロックの各々に対して遂行されるプログラム及び消去サイクル（Ｐｒｏｇｒａｍ  ａｎｄ  Ｅｒａｓｅ  Ｃｙｃｌｅ）をカウントする段階と、複数のプログラム方法の各々に対して、前記生のビットエラー率並びに前記プログラム及び消去サイクルのカウントされた回数から、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する平均応答時間及び推定許容可能保持時間（Ａｌｌｏｗａｂｌｅ  Ｒｅｔｅｎｔｉｏｎ  Ｔｉｍｅ）を計算する段階と、前記ホスト上で動作する第１アプリケーションから、第１集合の要求事項（Ｒｅｑｕｉｒｅｍｅｎｔ）を受信する段階と、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別する段階と、前記第１集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第１リストを形成する段階と、前記第１アプリケーションから、ストレージ空間の割当に対する要請を受信する段階と、前記第１リストからの第１物理フラッシュメモリブロックを前記第１アプリケーションに割当する段階と、を有する。
【０００６】
前記複数のプログラム方法は、第１ステップサイズ（Ｓｔｅｐ  Ｓｉｚｅ）を活用するＩＳＰＰ（Ｉｎｃｒｅｍｅｎｔａｌ  Ｓｔｅｐ  Ｐｕｌｓｅ  Ｐｒｏｇｒａｍｍｉｎｇ）方法と、第２ステップサイズを活用するＩＳＰＰ方法と、を含み、前記第１ステップサイズは、前記第２ステップサイズよりも大きくあり得る。
前記第１集合の要求事項は、要求許容可能保持時間及び要求平均応答時間を含み得る。
前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別する段階は、前記複数のプログラム方法の中のいずれかのプログラム方法に対して、前記計算された平均応答時間が前記要求平均応答時間よりも小さいか否かと、前記計算された推定許容可能保持時間が前記要求許容可能保持時間よりも大きいか否かと、を判別する段階を含み得る。
前記方法は、前記第１物理フラッシュメモリブロックを消去する段階を更に含み得る。
前記第１物理フラッシュメモリブロックを消去する段階は、前記第１物理フラッシュメモリブロックが浅い消去処理（Ｓｈａｌｌｏｗ  Ｅｒａｓｅ  Ｐｒｏｃｅｓｓ）によって前記第１集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用する段階と、前記第１物理フラッシュメモリブロックが浅い消去処理によって前記第１集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の消去処理（Ｎｏｒｍａｌ  Ｅｒａｓｅ  Ｐｒｏｃｅｓｓ）を採用する段階と、を含み得る。
前記複数の物理フラッシュメモリブロックの中の１つ以上に対する平均応答時間及び推定許容可能保持時間を計算する段階は、保持時間関数としてのビットエラーカウントに対して線形フィット（Ｌｉｎｅａｒ  Ｆｉｔ）を遂行する段階と、前記線形フィットが最大の受け入れ可能な生のビットエラー率を超過する保持時間を前記推定許容可能保持時間として計算する段階を含み得る。
前記最大の受け入れ可能な生のビットエラー率は、１００万ビット当たり１ビットのエラーであり得る。
前記方法は、前記ホスト上で動作する第２アプリケーションから、前記第１集合の要求事項と異なる第２集合の要求事項を受信する段階と、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第２集合の要求事項を充足させるのに適合するか否かを判別する段階と、前記第２集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第２リストを形成する段階と、前記第２アプリケーションから、ストレージ空間の割当に対する要請を受信する段階と、前記第２リストからの第２物理フラッシュメモリブロックを前記第２アプリケーションに割当する段階と、を更に含み得る。
前記方法は、前記第２物理フラッシュメモリブロックを消去する段階を更に含み得る。
前記第２物理フラッシュメモリブロックを消去する段階は、前記第２物理フラッシュメモリブロックが浅い消去処理によって前記第２集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用する段階と、前記第２物理フラッシュメモリブロックが前記浅い消去処理によって前記第２集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の消去処理を採用する段階と、を含み得る。
【０００７】
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブは、各々が複数の物理ページ（Ｐｈｙｓｉｃａｌ  Ｐａｇｅ）を有する複数の物理フラッシュメモリブロックを含むフラッシュメモリと、ＮＡＮＤコントローラ、磨耗（Ｗｅａｒ−ｏｕｔ）追跡器、及び生のビットエラー率（Ｒａｗ  Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ）追跡器を含むモーフィックエンジン（Ｍｏｒｐｈｉｃ  Ｅｎｇｉｎｅ）と、仮想ストレージテーブル（Ｖｉｒｔｕａｌ  Ｓｔｏｒａｇｅ  Ｔａｂｌｅ）及びクラスタリングエンジン（Ｃｌｕｓｔｅｒｉｎｇ  Ｅｎｇｉｎｅ）を有するストレージ仮想化器（Ｖｉｒｔｕａｌｉｚｅｒ）を含むストレージコントローラと、を備え、前記ＮＡＮＤコントローラは、複数のビットエラーカウント（Ｂｉｔ  Ｅｒｒｏｒ  Ｃｏｕｎｔ）を生成するエラー訂正コードデコーディング演算を含む複数の読出し動作を前記フラッシュメモリ上で遂行し、前記生のビットエラー率追跡器は、前記複数のビットエラーカウントから、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する生のビットエラー率を計算し、前記磨耗追跡器は、前記複数の物理フラッシュメモリブロックの中の１つ以上に対して遂行されるプログラム及び消去サイクル（Ｐｒｏｇｒａｍ  ａｎｄ  Ｅｒａｓｅ  Ｃｙｃｌｅ）をカウントし、前記クラスタリングエンジンは、複数のプログラム方法の各々に対して、前記生のビットエラー率並びに前記プログラム及び消去サイクルのカウントされた回数から、前記複数の物理フラッシュメモリブロックの中の１つ以上に対する平均応答時間及び推定許容可能保持時間（Ａｌｌｏｗａｂｌｅ  Ｒｅｔｅｎｔｉｏｎ  Ｔｉｍｅ）を計算し、前記仮想ストレージテーブルは、ホスト上で動作する第１アプリケーションから、第１集合の要求事項（Ｒｅｑｕｉｒｅｍｅｎｔ）を受信し、前記クラスタリングエンジンは、前記仮想ストレージテーブルから前記第１集合の要求事項を受信し、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別し、前記第１集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第１リストを形成し、前記第１アプリケーションから、ストレージ空間の割当に対する要請を受信し、前記第１リストからの第１物理フラッシュメモリブロックを前記第１アプリケーションに割当する。
【０００８】
前記複数のプログラム方法は、第１ステップサイズ（Ｓｔｅｐ  Ｓｉｚｅ）を活用するＩＳＰＰ（Ｉｎｃｒｅｍｅｎｔａｌ  Ｓｔｅｐ  Ｐｕｌｓｅ  Ｐｒｏｇｒａｍｍｉｎｇ）方法と、第２ステップサイズを活用するＩＳＰＰ方法と、を含み、前記第１ステップサイズは、前記第２ステップサイズよりも大きくあり得る。
前記第１集合の要求事項は、要求許容可能保持時間及び要求平均応答時間を含み得る。
前記クラスタリングエンジンは、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第１集合の要求事項を充足させるのに適合するか否かを判別するために、前記複数のプログラム方法の中のいずれかのプログラム方法に対しして、前記計算された平均応答時間が前記要求平均応答時間よりも小さいか否かと、前記計算された推定許容可能保持時間が前記要求許容可能保持時間よりも大きいか否かと、を判別し得る。
前記ＮＡＮＤコントローラは、前記第１物理フラッシュメモリブロックを消去し得る。
前記ＮＡＮＤコントローラは、前記第１物理フラッシュメモリブロックを消去するために、前記第１物理フラッシュメモリブロックが浅い消去処理（Ｓｈａｌｌｏｗ  Ｅｒａｓｅ  Ｐｒｏｃｅｓｓ）によって前記第１集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用し、前記第１物理フラッシュメモリブロックが前記浅い消去処理によって前記第１集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の消去処理（Ｎｏｒｍａｌ  Ｅｒａｓｅ  Ｐｒｏｃｅｓｓ）を採用し得る。
前記クラスタリングエンジンは、前記複数の物理フラッシュメモリブロックの中の１つ以上に対して、性能メトリック関数としての前記推定許容可能保持時間を計算するために、保持時間関数としてのビットエラーカウントに対して線形フィット（Ｌｉｎｅａｒ  Ｆｉｔ）を遂行し、前記線形フィットが最大の受け入れ可能な生のビットエラー率を超過する保持時間を前記推定許容可能保持時間として計算し得る。
前記最大の受け入れ可能な生のビットエラー率は、１００万ビット当たり１ビットのエラーであり得る。
前記仮想ストレージテーブルは、前記ホスト上で動作する第２アプリケーションから、前記第１集合の要求事項と異なる第２集合の要求事項を受信し、前記クラスタリングエンジンは、前記仮想ストレージテーブルから前記第２集合の要求事項を受信し、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の１つ以上が前記第２集合の要求事項を充足させるのに適合するか否かを判別し、前記第２集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第２リストを形成し、前記第２アプリケーションから、ストレージ空間の割当に対する要請を受信し、前記第２リストからの第２物理フラッシュメモリブロックを前記第２アプリケーションに割当し得る。
【発明の効果】
【０００９】
本発明のソリッドステートドライブによれば、磨耗追跡器はプログラム及び消去サイクルをカウントし、生の（Ｒａｗ）ビットエラー率追跡器はソリッドステートドライブから読み出されるデータの生のビットエラーをモニターリングし、アプリケーションがアプリケーションによって格納されるデータの予想格納時間に対応する許容可能保持時間及びフラッシュメモリに対するプログラム及び読出し時間に対応する平均応答時間に対する要求事項をソリッドステートドライブに提供することで、ソリッドステートドライブは、要求事項を充足させるのに適合する物理フラッシュメモリブロックを識別して、識別された物理フラッシュメモリブロックの中のストレージ空間をアプリケーションに割当することができる。
従って、本発明によれば、多様な環境に合わせてフラッシュメモリ装置の動作を調節することができ、フラッシュメモリ装置の性能及び寿命の側面で長所を有する。
【図面の簡単な説明】
【００１０】
【図１Ａ】保持時間に対する生のビットエラー率のグラフである。
【図１Ｂ】プログラム及び消去サイクルの回数に対する生のビットエラー率のグラフである。
【図２Ａ】本発明の一実施形態による電圧ステップシークェンスの図である。
【図２Ｂ】本発明の一実施形態による電圧ステップシークェンスの図である。
【図３Ａ】本発明の一実施形態によるプログラム状態及び消去状態に対する電圧分布のグラフである。
【図３Ｂ】本発明の一実施形態によるプログラム状態及び消去状態に対する電圧分布のグラフである。
【図４】本発明の一実施形態による保持時間に対する生のビットエラー率のグラフである。
【図５Ａ】ハードディスクドライブに対する４軸特性の図である。
【図５Ｂ】本発明の一実施形態によるソリッドステートドライブに対する４軸特性の図である。
【図５Ｃ】本発明の一実施形態によるソリッドステートドライブに対する４軸特性の図である。
【図５Ｄ】本発明の一実施形態によるソリッドステートドライブに対する４軸特性の図である。
【図６】本発明の一実施形態によるホスト及びソリッドステートドライブのブロック図である。
【図７】本発明の一実施形態によるモーフィックシステムのブロック図である。
【図８】本発明の一実施形態によるモーフィックエンジンのブロック図である。
【図９】本発明の一実施形態によるストレージ仮想化器のブロック図である。
【図１０Ａ】本発明の一実施形態による複数のシンクラスタリングエンジンを含むシステムのブロック図である。
【図１０Ｂ】本発明の一実施形態による複数のシッククラスタリングエンジンを含むシステムのブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。図面を参照しながら以下に記述する詳細な説明は、本発明によって提供されるモーフィックストレージ装置（Ｍｏｒｐｈｉｃ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ）の例示的な実施形態の説明として意図し、本発明が構成されるか又は活用される唯一の形態を表現するように意図するものではない。このような説明は図示する実施形態に関連して本発明の特徴を記述する。しかし、本発明の思想及び範囲内に含まれる他の実施形態によって同一又は同等な機能及び構造が達成される。本明細書で、同一の要素番号は同一の要素又は特徴を示す。
【００１２】
ソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のようなフラッシュメモリ装置は幾つかの側面でハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）のような他の永久的なメモリ装置とは異なる特性を有する永久的なメモリ装置である。フラッシュメモリで、フローティングゲート（Ｆｌｏａｔｉｎｇ  Ｇａｔｅ）上の電荷（Ｃｈａｒｇｅ）は情報を格納するために利用され、電荷は時間の経過と共にフローティングゲートで漏洩され、電荷の漏洩によって格納された情報の損失又は部分的な損失を引き起こす。また、時間の経過と共にデータが損失する程度は様々な要因に依存する。
【００１３】
図１Ａは、保持時間に対する生のビットエラー率のグラフである。図１Ａを参照すると、フラッシュメモリから読出されるデータの生のビットエラー率（Ｒａｗ  Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ：ＲＢＥＲ）は図示したように保持時間（Ｒｅｔｅｎｔｉｏｎ  Ｔｉｍｅ）、即ちデータが書込まれた時からそのデータが読出された時までの時間に依存する。また、ビットエラー率は装置自体の性質（Ｎａｔｕｒｅ）にも依存し、異なる製造会社によって作られた装置は保持時間に対する関数として異なるエラー率を示す。
【００１４】
図１Ｂは、プログラム及び消去サイクルの回数に対する生のビットエラー率のグラフである。図１Ｂを参照すると、生のビットエラー率は、保持時間のみならず、フラッシュメモリが影響を受けたプログラム及び消去サイクル（Ｐｒｏｇｒａｍ  ａｎｄ  Ｅｒａｓｅ  Ｃｙｃｌｅ）の回数にも依存し、より長い時間区間に亘ってデータを格納するフラッシュメモリの能力はプログラム及び消去サイクルの回数の増加に従って低下する。図１Ｂで、曲線１０５は３年保持時のエラー率を示し、曲線１１０は１年保持時のエラー率を示し、曲線１１５は３ヶ月保持時のエラー率を示し、曲線１２０は３週保持時のエラー率を示し、曲線１２５は３日保持時のエラー率を示し、曲線１３０はプログラム干渉時のエラー率を示し、曲線１３５は１日保持時のエラー率を示し、曲線１４０は読出し時のエラー率を示し、曲線１４５は消去時のエラー率を示す。
【００１５】
図２Ａ及び図２Ｂは、本発明の一実施形態による電圧ステップシークェンスの図である。図２Ａ及び図２Ｂを参照すると、ＩＳＰＰ（Ｉｎｃｒｅｍｅｎｔａｌ  Ｓｔｅｐ  Ｐｕｌｓｅ  Ｐｒｏｇｒａｍｍｉｎｇ）が利用される場合、プログラム動作に対して利用されるステップサイズ（Ｓｔｅｐ  Ｓｉｚｅ）は電荷がフローティングゲート上に置かれる精度に影響を与える。従って、全ての他の要因が同一である場合、より小さいステップサイズが利用されるほど、生のビットエラー率がより低くなる。しかし、より小さいステップサイズを利用することはプログラム動作が完了されるまでに時間かかることになる。
【００１６】
図３Ａ及び図３Ｂは、本発明の一実施形態によるプログラム状態及び消去状態に対する電圧分布のグラフである。図３Ａ及び図３Ｂを参照すると、メモリを消去するために浅い消去処理（Ｓｈａｌｌｏｗ  Ｅｒａｓｅ  Ｐｒｏｃｅｓｓ）を利用することは既定の消去処理（図３Ａ）に比べて延長された寿命（即ち、多い回数のプログラム及び消去サイクルの後のより長い許容可能（Ａｌｌｏｗａｂｌｅ）保持時間）を可能にし、浅い消去処理は既定の消去処理よりもメモリを質的に低下させる傾向を示す。ここで使用する“許容可能保持時間”は受け入れ可能な（Ａｃｃｅｐｔａｂｌｅ）生のビットエラー率を維持しながらデータがフラッシュメモリに格納されたまま残っている時間の量である。
【００１７】
許容可能保持時間は受け入れ可能な生のビットエラー率に依存する。一実施形態で、受け入れ可能な生のビットエラー率は１０−６、即ち１００万ビット当たり１ビットのエラーである。しかし、浅い消去処理はフローティングゲート上に格納可能な電荷の値の範囲を減少させるため、同一の耐力を有する装置に対して、浅い消去処理を利用することは既定の消去処理を利用することに比べて所定のプログラム及び消去サイクルの間により高いビットエラー率を引き起こすことがある。
【００１８】
このように、プログラム及び消去処理の選択は適用される保持時間の要求事項（Ｒｅｑｕｉｒｅｍｅｎｔ）を考慮して行われる。例えば、ウェブキャッシング（Ｗｅｂ−ｃａｃｈｉｎｇ）のような幾つかのアプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）は数日の保持時間のみを要求する反面、他のアプリケーションは１年以上の保持時間を要求することがある。例えば、数日の保持時間のみを要求するアプリケーションに対して、多くの回数のプログラム及び消去サイクルの影響を受けたフラッシュメモリの物理ブロックを利用することが受け入れ可能であるか、或いはより大きいステップサイズを利用してＩＳＰＰを利用することが可能である。
【００１９】
図４は、本発明の一実施形態による保持時間に対する生のビットエラー率のグラフである。図４を参照すると、例えば、長い許容可能保持時間４１５を提供するフラッシュメモリの物理ブロック並びに消去及びプログラム処理（生のビットエラー率の曲線４１０で示される）はストレージに長い時間の間残ると予想されるデータのために利用される。より短い許容可能保持時間４２０でも充分なデータはより短い許容可能な保持時間を提供する処理４２５（例えば、浅い消去処理、又は大きいステップサイズを利用するＩＳＰＰ）を利用して取り扱われる。
【００２０】
図５Ａは、ハードディスクドライブに対する４軸特性の図であり、図５Ｂ〜図５Ｄは、本発明の一実施形態によるソリッドステートドライブに対する４軸特性の図である。図５Ａ〜図５Ｄを参照すると、ハードディスクドライブ又はソリッドステートドライブのような永久的なストレージ装置は幾つかの主要特性を有する。例えば、このような装置は、処理量（Ｔｈｒｏｕｇｈｐｕｔ）若しくはレイテンシ（Ｌａｔｅｎｃｙ）の側面、又は読出し動作、消去動作、若しくは書込み（又はプログラム）動作を遂行するのに要求される時間の側面で、与えられた水準の性能を提供する。
【００２１】
ソリッドステートドライブに対して、消去動作又はプログラム動作を完了するのに要求される時間は、読出し動作を完了するのに要求される時間とかなり異なり（例えば、消去動作又はプログラム動作を完了するのに要求される時間がより長い）、平均応答時間が装置の性能を特徴付けるために利用される。この平均応答時間は、読出し時間、消去時間、及びプログラム時間から計算され、書き込まれたデータの各々に対する読出し回数の一般的な比率、並びに長い消去及びプログラム時間の影響を減らすためのバッファーリング（Ｂｕｆｆｅｒｉｎｇ）のような緩和手段の利用を考慮して計算される。
【００２２】
一実施形態で、平均応答時間は次の数式１のように定義される。
【００２３】
【数１】
2017228287.tif 000003
【００２４】
ここで、Ｑは有限集合を表す記号であり、Ｎｒｅａｄ及びＮｗｒｉｔｅは各々特定時間区間（例えば、１０秒）に亘るベンチマーキングテスト（Ｂｅｎｃｈｍａｒｋｉｎｇ  Ｔｅｓｔ）によって遂行される読出し及び書込みの回数であり、Ｔｒｅａｄ、ｉ及びＴｗｒｉｔｅ、ｉは各々テストの間のｉ番目の読出し時間及びｉ番目の書込み時間である。
【００２５】
装置は特定寿命を有し、寿命は、ハードディスクドライブに対しては稼働部によって経験される磨耗（Ｗｅａｒ）速度（Ｒａｔｅ）によって決定され、ソリッドステートドライブに対してはプログラム及び消去サイクルに起因する劣化によって決定される。装置は、容量、即ち装置が格納可能なデータの最大量、及び許容可能保持時間を有する。
【００２６】
図５Ａ及び図５Ｂから、例えば、ハードディスクドライブは、ソリッドステートドライブよりもより大きい容量及びより長い保持時間を有するが、より短い寿命及びより遅い応答時間（即ち、低い性能）を有することが分かる。同様に、図５Ｃ及び図５Ｄから、第１アプリケーション（図５Ｄの“ａｐｐ１”）がソリッドステートドライブのデフォルト（Ｄｅｆａｕｌｔ）特性（図５Ｃ）に比べて高い性能の要求事項及び短い保持時間の要求事項を有し、第２アプリケーション（図５Ｄの“ａｐｐ２”）が低い性能の要求事項及び長い保持時間の要求事項を有することが分かる。
【００２７】
図６は、本発明の一実施形態によるホスト及びソリッドステートドライブのブロック図である。図６を参照すると、本実施形態で、ホスト６１０は、ソリッドステートドライブ６１５に連結され、永久的なストレージのためにソリッドステートドライブ６１５を利用する。ソリッドステートドライブ６１５は永久的なストレージを提供するように構成されたエンクロージャー（Ｅｎｃｌｏｓｕｒｅ）内の独立したユニット（Ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ  Ｕｎｉｔ）である。
【００２８】
ソリッドステートドライブ６１５は、ストレージインターフェイスを通じて、例えばストレージ動作のためにホスト６１０によって慣習的に利用されるコネクター及びプロトコル（Ｐｒｏｔｏｃｏｌ）を通じて、ホスト６１０に連結される。コネクター及びプロトコルは、例えばＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、ＮＶＭｅ（Ｎｏｎ  Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）等に従うか、又はイーサーネット（Ｅｔｈｅｒｎｅｔ（登録商標））若しくはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）のようなより汎用のインターフェイスに従う。
【００２９】
ソリッドステートドライブ６１５のフラッシュメモリ６２０は物理フラッシュメモリブロック６３０（又は、“フラッシュブロック”若しくは“フラッシュメモリブロック”）及び物理ページ６３５内に構築される。物理フラッシュメモリブロック６３０は１回の動作で消去されるメモリの最も小さい単位であり、物理ページ６３５は１回の動作で書き込まれるメモリの最も小さい単位である。各物理フラッシュメモリブロック６３０は複数の物理ページ６３５を含む。
【００３０】
ホスト６１０は論理ページ番号（Ｌｏｇｉｃａｌ  Ｐａｇｅ  Ｎｕｍｂｅｒ）で指示されるストレージアクセス要請により大容量ストレージ装置と相互作用し、例えば、特定の論理ページ番号のページにデータを格納することを要請するか、特定の論理ページ番号のページに格納されたデータを読み出すことを要請するか、又は特定の論理ページ番号のページに格納されたデータを消去することを要請する。ソリッドステートドライブ６１５に対して、静的な（Ｓｔａｔｉｃ）論理対物理マッピング（Ｌｏｇｉｃａｌ  ｔｏ  Ｐｈｙｓｉｃａｌ  Ｍａｐｐｉｎｇ）は利用されない。これは読出し／書込みサイズと消去サイズとの間の差異が、データを１つの物理位置から他の位置に常に移動させるガーベッジコントロールメカニズム（Ｇａｒｂａｇｅ  Ｃｏｎｔｒｏｌ  Ｍｅｃｈａｎｉｓｍ）に影響を与えるためであり、従って動的な（Ｄｙｎａｍｉｃ）論理対物理マッピングが必要である。
【００３１】
フラッシュ変換階層（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ）は動的に論理ページ番号を物理ページ番号（Ｐｈｙｓｉｃａｌ  Ｐａｇｅ  Ｎｕｍｂｅｒ）に変換又はマッピングする。新しいデータが特定の論理ページ番号のページのデータに重ねて書き込まれる（Ｏｖｅｒｗｒｉｔｅ）場合、フラッシュ変換階層は、物理ページ６３５を含む物理フラッシュメモリブロック６３０を消去する代わりに、論理ページ番号に現在対応する物理ページ６３５が無効（Ｉｎｖａｌｉｄ）である印を付け、その論理ページ番号を新しい物理ページ６３５にマッピングするために論理ページ番号から物理ページ６３５へのマッピングを更新し、新しいデータを新しい物理ページ６３５に書き込む。フラッシュ変換階層はソリッドステートドライブ６１５のストレージコントローラ６２５（例えば、マイクロコントローラ）上で動作するソフトウェアで具現される。
【００３２】
フラッシュメモリ６２０へのプログラムのためにホスト６１０から受信されたデータはエラー訂正コード（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）でエンコーディングされ、データがフラッシュメモリ６２０から読み出される時、生のデータ読出し（Ｒａｗ  Ｄａｔａ  Ｒｅａｄ）は、デコーディングデータを生成するエラー訂正コードデコーディング演算により処理され、エラーが訂正されたデコーディングデータ、及びビットエラーカウント（Ｂｉｔ  Ｅｒｒｏｒ  Ｃｏｕｎｔ）、即ちエラー訂正コードデコーディング演算によって訂正されたビットエラーの数のカウントを生成する。
【００３３】
フラッシュ変換階層は、しばしば“ガーベッジコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ）”と称する動作を遂行する。この動作で、無効である印を付けられた物理ページ６３５の大部分（例えば、設定された閾値を超過する部分）を含む特定の物理フラッシュメモリブロック６３０が、この物理フラッシュメモリブロック６３０に残っている有効（Ｖａｌｉｄ）な物理ページ６３５が１つ以上の他の物理フラッシュメモリブロック６３０の物理ページ６３５に移動された後に、消去され、これにより新しく消去された物理フラッシュメモリブロック６３０が新しいデータの書込みのために利用可能（Ａｖａｉｌａｂｌｅ）になる。
【００３４】
複数のアプリケーションはホスト６１０で動作（例えば、実行）して入力／出力要請（例えば、消去要請、プログラム（書込み）要請、及び読出し要請）を生成する。この入力／出力要請はソリッドステートドライブ６１５に伝送される。このような各アプリケーションは、永久的なストレージの特性に対する要求事項、例えば最大の受け入れ可能な平均応答時間及び最小の許容可能保持時間を特定する要求事項を有する。
【００３５】
一実施形態で、この要求事項は、物理フラッシュメモリブロック６３０がアプリケーションのためにデータを格納するのに利用されるか否かを判別するためにソリッドステートドライブ６１５によって利用され、例えばアプリケーションのためにデータを書き込む時に利用されるステップサイズを選択するソリッドステートドライブ６１５によって利用される。
【００３６】
各アプリケーションは、動作を開始する時、自体をソリッドステートドライブ６１５に認識させ、自体のストレージ要求事項をソリッドステートドライブ６１５に送り、ソリッドステートドライブ６１５に登録する。このような方式で、ソリッドステートドライブ６１５は特定のアプリケーションによって生成される入力／出力要請がそのアプリケーションの要求事項を充足させる方式で取り扱われるように保証する。該当する要求事項に従って入力／出力要請に対して適応的に（Ａｄａｐｔｉｖｅｌｙ）応答するソリッドステートドライブ６１５の特性を、本明細書で“モーフィック（Ｍｏｒｐｈｉｃ）”と称する。
【００３７】
図７は、本発明の一実施形態によるモーフィックシステムのブロック図である。図７を参照すると、本実施形態で、アプリケーションからの要請に基づいてフラッシュメモリをアプリケーションに割当するために、ストレージコントローラ６２５にモーフィックエンジン（Ｍｏｒｐｈｉｃ  Ｅｎｇｉｎｅ）７１０及びストレージ仮想化器（Ｓｔｏｒａｇｅ  Ｖｉｒｔｕａｌｉｚｅｒ）７１５を採用する。モーフィックエンジン７１０はストレージ仮想化器７１５を通じてアプリケーションによって伝送された入力／出力要請を取り扱うためにＮＡＮＤフラッシュインターフェイス７２０に連結される。
【００３８】
図８は、本発明の一実施形態によるモーフィックエンジンのブロック図である。図８を参照すると、本実施形態で、モーフィックエンジン７１０は、生のビットエラー率追跡器８１０、磨耗（Ｗｅａｒ−ｏｕｔ）追跡器８１５、保持予測器８２０、及びＮＡＮＤコントローラ８２５を含む。
【００３９】
生のビットエラー率追跡器８１０は各物理フラッシュメモリブロック６３０の生のビットエラー率をモニターリングする。生のビットエラー率追跡器８１０は、これを達成するために、ホスト要請に応答してフラッシュメモリからデータが読出される時毎にビットエラーカウントを追跡する。一実施形態で、ビットエラーカウントはフラッシュ変換階層で追加エントリ（Ｅｎｔｒｙ）として書き込まれる。
【００４０】
また、生のビットエラー率追跡器８１０は、例えばホストによって要請された読出し動作が物理フラッシュメモリブロック６３０で所定時に遂行されない場合、物理フラッシュメモリブロック６３０の生のビットエラー率の更新測定値を得るために、“サンプリング（Ｓａｍｐｌｉｎｇ）”読出し動作（即ち、ホスト要請に起因しない読出し動作）を遂行する。このような方式で、生のビットエラー率追跡器８１０は、時間の経過と共に、各物理フラッシュメモリブロック６３０に対して観測されたビットエラー率を列挙するテーブルを生成する。
【００４１】
一実施形態で、このテーブルは、各物理フラッシュメモリブロック６３０に対して様々なエントリを有し、例えば大きいステップサイズを利用してＩＳＰＰでプログラムされたメモリセルに対する第１観測の生のビットエラー率、及び小さいステップサイズを利用してＩＳＰＰでプログラムされたメモリセルに対する第２観測の生のビットエラー率を有する。このテーブルは、ソリッドステートドライブ６１５への電力供給が一時的に中断される場合に保持されるように不揮発性メモリ（例えば、フラッシュメモリ６２０）に格納される。
【００４２】
磨耗追跡器８１５は、フラッシュメモリ上で遂行されるプログラム及び消去動作をモニターリングし、各物理フラッシュメモリブロック６３０に対して遂行されたプログラム及び消去サイクルの回数をカウントする。一実施形態で、フラッシュ変換階層でウェアレベリング（Ｗｅａｒ−ｌｅｖｅｌｉｎｇ）の目的としてもプログラム及び消去サイクルの回数が追跡される。このような方式で、磨耗追跡器８１５は、時間の経過と共に、物理フラッシュメモリブロック６３０上で遂行されたプログラム及び消去サイクルの回数を（各物理フラッシュメモリブロック６３０に対して）列挙するテーブルを生成する。
【００４３】
一実施形態で、このテーブルは、各物理フラッシュメモリブロック６３０に対して様々なエントリを有し、例えば浅い消去処理を利用して遂行されたプログラム及び消去サイクルの第１カウント、及び既定の消去処理を利用して遂行されたプログラム及び消去サイクルの別個の第２カウントを有する。このテーブルはソリッドステートドライブ６１５への電力供給が一時的に中断される場合に保持されるように不揮発性メモリ（例えば、フラッシュメモリ６２０）に格納される。
【００４４】
保持予測器８２０は多様な消去及びプログラム方法の各々に対する各物理フラッシュメモリブロック６３０の許容可能保持時間を推定するために利用される。一実施形態で、保持予測器８２０は（生のビットエラー率追跡器８１０から知らされたことに従って）保持時間関数としてのビットエラー率に対して線形フィット（Ｌｉｎｅａｒ  Ｆｉｔ）（又は、指数フィット（Ｅｘｐｏｎｅｎｔｉａｌ  Ｆｉｔ））を遂行し、このフィットの生のビットエラー率が閾値、即ち最大の受け入れ可能な生のビットエラー率（例えば、１００万ビット当たり１ビットのエラー）と同一である場合の保持時間の値として許容可能保持時間を計算する。一実施形態で、保持予測器８２０は許容可能保持時間を計算するために磨耗追跡器８１５によって生成されたテーブルを参照する。一実施形態で、閾値はプログラム可能な変数（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｖａｒｉａｂｌｅ）である。
【００４５】
ＮＡＮＤコントローラ８２５は、ブロック及びページ水準の読出し、書込み、及び消去コマンドを発行（Ｉｓｓｕｅ）してフラッシュメモリ６２０と直接相互作用するドライバールーチン（Ｄｒｉｖｅｒ  Ｒｏｕｔｉｎｅ）である。ＮＡＮＤコントローラ８２５はフラッシュメモリ６２０から読出された生のデータのビットエラーを検出して訂正するエラー訂正コードデコーディングアルゴリズムを処理する。また、ＮＡＮＤコントローラ８２５は保持予測器８２０からストレージ仮想化器７１５に情報を伝達する。ＮＡＮＤコントローラ８２５は更に消去処理（例えば、浅い消去又は既定の消去が利用される）及びプログラム処理（例えば、ＩＳＰＰを利用するプログラム動作に採用されるステップサイズ）に対する制御を提供する。
【００４６】
図９は、本発明の一実施形態によるストレージ仮想化器のブロック図である。図９を参照すると、ストレージ仮想化器７１５で、仮想ストレージテーブル９１０は、ソリッドステートドライブ６１５に登録された各アプリケーションに対して、例えば最大の受け入れ可能な平均応答時間及び最小の許容可能な保持時間を示す要求事項の集合を格納する。また、要求事項はどれ位多くのブロックがアプリケーションによって潛在的に利用されるかを示す容量の要求事項を含む。
【００４７】
クラスタリングエンジン（Ｃｌｕｓｔｅｒｉｎｇ  Ｅｎｇｉｎｅ）９１５は、仮想ストレージテーブル９１０から情報を受信し、ソリッドステートドライブ６１５に登録された各アプリケーションに対するクラスターリスト（Ｃｌｕｓｔｅｒ  Ｌｉｓｔ）を生成する。クラスターとは保持予測器８２０の計算によって各アプリケーションの要求事項を充足させるのに適合する物理フラッシュメモリブロック６３０の集合であり、クラスターリストはクラスターにある物理フラッシュメモリブロック６３０のリストである。
【００４８】
（フラッシュ変換階層の一部分である）アドレス変換ブロック（Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｂｌｏｃｋ）９２０は論理ページアドレスをフラッシュメモリ６２０の物理ページアドレスにマッピングするクロスリファレンステーブル（Ｃｒｏｓｓ  Ｒｅｆｅｒｅｎｃｅ  Ｔａｂｌｅ）を維持する。
【００４９】
１つ以上のクラスターの構成要素である物理フラッシュメモリブロック６３０が消去される時毎に、クラスタリングエンジン９１５はその物理フラッシュメモリブロック６３０がクラスターの構成員の資格（Ｅｌｉｇｉｂｌｅ）を維持するか否かを再評価し（資格は潛在的に追加のプログラム及び消去サイクルによって影響を受ける）、これによって、クラスター及びクラスターリストを更新する。
【００５０】
物理フラッシュメモリブロック６３０は、クラスターに対応するアプリケーションの要求事項を充足させるのに適合する場合、即ち幾つかのプログラム方法に対して（例えばＩＳＰＰに利用される所定のステップサイズに対して）アプリケーションの平均応答時間の要求事項及び許容可能な保持時間の要求事項の両方が共に又は同時に充足される場合、クラスターの構成員の資格を有するものと看做される。
【００５１】
アプリケーションが利用可能な物理フラッシュメモリブロック６３０の中のいずれに対しても非常に厳格な要求事項を有する場合、要求事項を最も良く充足させる１つ以上の物理フラッシュメモリブロック６３０がそのアプリケーションのためのクラスターの構成員の資格を有するものと看做される。この状況で、アプリケーションは要求事項を充足させない物理フラッシュメモリブロック６３０がそれに割当されたことを知らせる通知を受ける。この決定は、物理フラッシュメモリブロック６３０が新しく消去された場合に最近の削除が浅い消去処理を利用して遂行されたか又は既定の消去処理を利用して遂行されたかを含めて、物理フラッシュメモリブロック６３０が行ったプログラム及び消去サイクルの履歴を考慮して行われる。
【００５２】
一実施形態で、ガーベッジコレクションの間に、ガーベッジコレクションによって再使用されるブロックの削除はそのブロックが特定のアプリケーションに割当される時まで延期される。この実施形態で、そのブロックが既定の消去を利用して消去されると、クラスターに対応するアプリケーションの要求事項を充足させるのに相応しくなる場合、クラスタリングエンジン９１５はそのブロックをクラスターに含ませる。ブロックがアプリケーションに割当された後、そのブロックがアプリケーションの要求事項を充足するようにするのに浅い消去で充分である場合、そのブロックは浅い消去を利用して消去される。そうでない場合、そのブロックは既定の消去を利用して消去される。
【００５３】
所定の動作で、アプリケーションが永久的なストレージの割当に対する要請を生成すると、その要請は仮想ストレージテーブル９１０によって受信され、これによって１つ以上の資格を有する物理フラッシュメモリブロック６３０、即ちアプリケーションの要求事項を充足させる物理フラッシュメモリブロック６３０のリストに対してクラスタリングエンジン９１５への要請を生成する。その後、アドレス変換ブロック９２０は１つ以上の資格を有する物理フラッシュメモリブロック６３０内にアプリケーションによって要請されたストレージ領域を割当し、論理ページ番号から物理ページ番号へのマッピングを更新する。
【００５４】
アプリケーションがその後ソリッドステートドライブ６１５にデータを書き込むと、プログラム動作はアプリケーションの要求事項に一致するプログラムパラメーター（例えば、平均応答時間の要求事項を充足させるのには十分に大きく、許容可能な保持時間の要求事項を充足させるのには十分に小さいステップサイズを利用するＩＳＰＰ）を利用して遂行される。
【００５５】
図１０Ａは、本発明の一実施形態による複数のシンクラスタリングエンジンを含むシステムのブロック図であり、図１０Ｂは、本発明の一実施形態による複数のシッククラスタリングエンジンを含むシステムのブロック図である。図１０Ａ及び図１０Ｂを参照すると、本実施形態で、複数のソリッドステートドライブ６１５が共に連結されて、ホスト６１０にストレージを提供する論理ストレージ階層（Ｌｏｇｉｃａｌ  Ｓｔｏｒａｇｅ  Ｌａｙｅｒ）を形成する。この実施形態で、ストレージ割当の決定がクラスタリング情報に従って行われるようにクラスタリング情報を共有する助けになる。
【００５６】
例えば、図１０Ａで、アプリケーションが（ストレージインターフェイス１０１０及び第２番目のインターフェイス１０１５を通じて）多くの量のストレージに対する割当要請を生成する場合、ソリッドステートドライブ６１５の各シンクラスタリングエンジン（Ｔｈｉｎ  Ｃｌｕｓｔｅｒｉｎｇ  Ｅｎｇｉｎｅ）１０２５によって生成されたクラスターリストのコピーを維持する中央集中型クラスタリングエンジン（Ｃｅｎｔｒａｌｉｚｅｄ  Ｃｌｕｓｔｅｒｉｎｇ  Ｅｎｇｉｎｅ）１０２０は１つ以上のソリッドステートドライブ６１５の１つ以上の資格を有する物理フラッシュメモリブロック６３０から空間を割当する。
【００５７】
図１０Ｂの実施形態で、各ソリッドステートドライブ６１５はシッククラスタリングエンジン（Ｔｈｉｃｋ  Ｃｌｕｓｔｅｒｉｎｇ  Ｅｎｇｉｎｅ）１０３０を含み、シッククラスタリングエンジン１０３０は自体の固有のクラスターリストに加えて他のシッククラスタリングエンジン１０３０の各々のクラスターリストのコピーを維持する。この実施形態で、ソリッドステートドライブ６１５が（ストレージインターフェイス１０１０及び第２番目のインターフェイス１０１５を通じて）そのソリッドステートドライブ６１５の資格を有する物理フラッシュメモリブロック６３０内の利用可能な量を超過する量のストレージに対する割当要請を受信すると、ソリッドステートドライブ６１５は充足されない割当要求事項に対する要請を他のソリッドステートドライブ６１５に伝播（Ｐｒｏｐａｇａｔｅ）する（従って、結果的に、ソリッドステートドライブ６１５が要請を受け入れない場合、充足されない割当要求事項に対する要請を他のソリッドステートドライブ６１５に伝送する）。
【００５８】
上述の内容を考慮すると、ソリッドステートドライブ６１５は、消去及びプログラムパラメーターを調節し、アプリケーションの要求事項に良く合う物理フラッシュメモリブロック６３０を選択することによって、多様なアプリケーションのストレージ要求事項を効率的に充足させることができる。このような方式で、例えば長い保持時間を要求するアプリケーションには長い保持時間が提供され、より短い保持時間のみを要求するアプリケーションには、対応する性能向上と共に、より短い保持時間が提供される。
【００５９】
上述した本発明の実施形態によるソリッドステートドライブ６１５及び／又は他の関連する装置又は構成要素は、適切なハードウェア、ファームウェア（例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ））、ソフトウェア、又はそれらの適切な組合せを活用して具現される。例えば、ソリッドステートドライブ６１５の多様な構成要素は１つの集積回路チップ又は別個の集積回路チップ上に形成される。また、ソリッドステートドライブ６１５の多様な構成要素は、フレキシブル印刷回路フィルム（Ｆｌｅｘｉｂｌｅ  Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｆｉｌｍ）、ＴＣＰ（Ｔａｐｅ  Ｃａｒｒｉｅｒ  Ｐａｃｋａｇｅ）、又はＰＣＢ（Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｂｏａｒｄ）上に具現されるか、或いはソリッドステートドライブ６１５と同一の基板上に形成される。
【００６０】
また、ソリッドステートドライブ６１５の多様な構成要素は、上述した多様な機能を遂行するために１つ以上のコンピューティング装置の１つ以上のプロセッサ上で動作し、コンピュータプログラム命令語（Ｃｏｍｐｕｔｅｒ  Ｐｒｏｇｒａｍ  Ｉｎｓｔｒｕｃｔｉｏｎ）を実行し、他のシステム構成要素と相互作用するプロセス（Ｐｒｏｃｅｓｓ）又はスレッド（Ｔｈｒｅａｄ）である。コンピュータプログラム命令語は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような標準メモリ装置を利用してコンピューティング装置に具現されるメモリに格納される。コンピュータプログラム命令語は、例えば、ＣＤ−ＲＯＭ、フラッシュドライブ等のような他の非一時的なコンピュータ読み取り可能な記録媒体（Ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  Ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  Ｍｅｄｉａ）に格納される。
【００６１】
また、本発明が属する技術分野で通常の知識を有する者（以下、通常の技術者）は、本発明の例示的な実施形態の範囲を逸脱せずに、多様なコンピューティング装置の機能が単一コンピューティング装置に結合又は集積されるか、或いは特定コンピューティング装置の機能が１つ以上の他のコンピューティング装置に亘って分散されることを認識する。
【００６２】
ストレージコントローラ６２５は、プロセシング回路（Ｐｒｏｃｅｓｓｉｎｇ  Ｃｉｒｃｕｉｔ）それ自体であるか、或いはプロセシング回路を含む。ここで、“プロセシング回路”という用語は、データ又はデジタル信号を処理するために採用されるハードウェア、ファームウェア、及びソフトウェアの何らかの組合せを含む。プロセシング回路のハードウェアは、例えば、ＡＳＩＣｓ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）、汎用又は専用のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、及びＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のようなプログラム可能な論理装置を含む。
【００６３】
本明細書で利用されるプロセシング回路で、各機能は、その機能を遂行するように構成されたハードウェア、即ち固定配線（Ｈａｒｄ−ｗｉｒｅｄ）、又は非一時的なストレージ媒体に格納された命令語を実行するように構成されるＣＰＵのようなより汎用のハードウェアによって遂行される。プロセシング回路は、単一ＰＷＢ（Ｐｒｉｎｔｅｄ  Ｗｉｒｉｎｇ  Ｂｏａｒｄ）上に製作されるか、或いは相互連結された様々なＰＷＢに亘って分散される。プロセシング回路は他のプロセシング回路を含む。例えば、プロセシング回路は、ＰＷＢ上で相互連結される２つのプロセシング回路、ＦＰＧＡ、及びＣＰＵを含む。
【００６４】
多様な部分、構成要素、領域、階層、及び／又は区域を説明するために“第１”、“第２”、“第３”等のような用語を本明細書で使用したが、この部分、構成要素、領域、階層、及び／又は区域は、これらの用語によって限定されない。これらの用語は、単なる１つの部分、構成要素、領域、階層、又は区域を他の部分、構成要素、領域、階層、又は区域と区別するために利用される。従って、上述した第１部分、構成要素、領域、階層、又は区域を、本発明の思想及び範囲を逸脱せずに、第２部分、構成要素、領域、階層、又は区域とも称する。
【００６５】
本明細書で“低”、“下”、“下端”、“うえ”、“上”、“上端”等のように空間的に相対的な用語は、図面に示したものによって１つの部分又は特徴の他の部分又は特徴に対する関係を説明するために説明の便宜上利用される。空間的に相対的なこのような用語は、図面に示した方向に加えて、利用中である又は動作中である装置の他の方向を含む。例えば、図面の装置が裏返された場合、他の部分又は特徴の“下”又は“低”又は“下端”にあるものと説明した部分はその他の部分又は特徴の“上”に向く。従って、“下”及び“下端”の例示的な用語は上及び下の方向の両方を含む。装置は他の方向に向くことがあり（例えば、９０°回転するか、他の方向に置かれる）、ここで利用する空間的に相対的な語句はそれに合わせて解釈される。更に、２つの階層の“間”に１つの階層があるものと言及する場合、その階層は２つの階層の間の唯一の階層であり、或いは更に挟まれた（Ｉｎｔｅｒｌｅａｖｉｎｇ）１つ以上の階層が存在する。
【００６６】
本明細書で使用する用語は、特定の実施形態を説明しようとする目的のためであり、本発明を限定するように意図するものではない。本明細書で使用する“実質的に”、“約”、及びその他の類似な用語は、学術的な用語としてではなく、類似（Ａｐｐｒｏｘｉｍａｔｉｏｎ）の用語として使用され、通常の技術者によって認識される測定又は計算値の内在的な偏差を説明するように意図するものではない。本明細書で使用する“主要構成要素”の用語は重み（Ｗｅｉｇｈｔ）として少なくとも半分の要素をなす構成要素を意味し、“主要部分”の用語は複数の項目に適用される場合にその項目の少なくとも半分を意味する。
【００６７】
本明細書で使用する“１つ”及び“１つの”の単数形態は、文脈上明確に異なって示さない限り、複数形態もまた含まれる。“含む“及び／又は”構成される“の用語は、本明細書で使用する場合、上述した特徴、整数、段階、動作、部分、及び／又は構成要素の存在を明示するが、１つ以上の他の特徴、整数、段階、動作、部分、構成要素、及び／又はそれらの集合の存在又は追加を不可能にするものではない。本明細書で使用する“及び／又は”の用語は列挙した関連項目の中の１つ以上の何らかの、そして全ての組合せを含む。“少なくとも１つ”のような表現は要素のリストに先行する場合に要素の全体リストを修飾し、リストの個別要素を修飾しない。更に、“することができる“の使用は本発明の実施形態を説明する際に“本発明の１つ以上の実施形態”を示す。また、“例示”の用語は例又は実例を示す。本明細書で使用する“利用”の用語は“活用”の用語と類似語であるものとして考慮される。
【００６８】
一部分又は階層が他の部分又は階層“上に置かれるか、或いは”、“連結させるか、或いは”、又は“隣接する”ものと言及する場合、その部分又は階層は他の部分又は階層の直接上に置かれるか、或いは直接連結させるか、或いは直に隣接することもあり、又は更に挟まれた１つ以上の部分又は階層が存在することもある。反対に、一部分又は階層が他の部分又は階層の“直接上に置かれるか”、“直接連結させるか”、又は“直に隣接する”ものとして言及する場合、更に挟まれた部分又は階層は存在しない。
【００６９】
本明細書で言及する所定の数値範囲は言及した範囲内に含まれる同一の数値精度（Ｐｒｅｃｉｓｉｏｎ）の全ての下位範囲を含む。例えば、“１．０〜１０．０“の範囲は言及した最小値１．０及び言及した最大値１０．０の間の全ての下位範囲、即ち１．０以上の最小値及び１０．０以下の最大値を有する下位範囲、例えば２．４〜７．６を含む。ここで言及する最大数値の上限はそこに含まれる全ての更に低い数値の上限を含み、本明細書で言及する最小数値の下限はそこに含まれる全ての更に高い数値の下限を含む。
【００７０】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【００７１】
４１０    生のビットエラー率の曲線
４１５    長い許容可能保持時間
４２０    より短い許容可能保持時間
４２５    より短い許容可能な保持時間を提供する処理
６１０    ホスト
６１５    ソリッドステートドライブ
６２０    フラッシュメモリ
６２５    ストレージコントローラ
６３０    物理フラッシュメモリブロック
６３５    物理ページ
７１０    モーフィックエンジン（Ｍｏｒｐｈｉｃ  Ｅｎｇｉｎｅ）
７１５    ストレージ仮想化器（Ｓｔｏｒａｇｅ  Ｖｉｒｔｕａｌｉｚｅｒ）
７２０    ＮＡＮＤフラッシュインターフェイス
８１０    生の（Ｒａｗ）ビットエラー率追跡器
８１５    磨耗（Ｗｅａｒ−ｏｕｔ）追跡器
８２０    保持予測器
８２５    ＮＡＮＤコントローラ
９１０    仮想ストレージテーブル
９１５    クラスタリングエンジン
９２０    アドレス変換ブロック
１０１０    ストレージインターフェイス
１０１５    第２番目のインターフェイス
１０２０    中央集中型クラスタリングエンジン
１０２５    シンクラスタリングエンジン
１０３０    シッククラスタリングエンジン
【図１Ａ】
2017228287.tif 000004
【図１Ｂ】
2017228287.tif 000005
【図２Ａ】
2017228287.tif 000006
【図２Ｂ】
2017228287.tif 000007
【図３Ａ】
2017228287.tif 000008
【図３Ｂ】
2017228287.tif 000009
【図４】
2017228287.tif 000010
【図５Ａ】
2017228287.tif 000011
【図５Ｂ】
2017228287.tif 000012
【図５Ｃ】
2017228287.tif 000013
【図５Ｄ】
2017228287.tif 000014
【図６】
2017228287.tif 000015
【図７】
2017228287.tif 000016
【図８】
2017228287.tif 000017
【図９】
2017228287.tif 000018
【図１０Ａ】
2017228287.tif 000019
【図１０Ｂ】
2017228287.tif 000020