(58)【調査した分野】(Int.Cl.,DB名)
前記フラッシュメモリ上で、複数の読出し動作の中の1つ以上の読出し動作が前記複数のビットエラーカウントのビットエラーカウントを生成するエラー訂正コードデコーディング演算を含む前記複数の読出し動作を遂行する段階を更に含むことを特徴とする請求項10に記載の方法。
複数のビットエラーカウントから、前記複数の物理フラッシュメモリブロックの中の1つ以上に対する前記生のビットエラー率を計算する生のビットエラー率追跡器を更に備えることを特徴とする請求項14に記載のソリッドステートドライブ。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ソリッドステートドライブのストレージを使用するアプリケーションの要求事項に従って、物理フラッシュメモリブロック並びに消去及びプログラム方法を選択するフラッシュメモリの割当方法及びそれを用いたソリッドステートドライブを提供することにある。
【課題を解決するための手段】
【0005】
上記目的を達成するためになされた本発明の一態様による方法は、ホスト(Host)に連結されるソリッドステートドライブ(Solid State Drive)において、複数の物理フラッシュメモリブロック(Physical Flash Memory Block)を含むフラッシュメモリの部分を割当する方法であって、前記フラッシュメモリ上で、複数のビットエラーカウント(Bit Error Count)を生成するエラー訂正コードデコーディング演算(Error Correcting Code Decoding Operation)を含む複数の読出し動作を遂行する段階と、前記複数のビットエラーカウントから、前記複数の物理フラッシュメモリブロックの中の1つ以上に対する生のビットエラー率(Raw Bit Error Rate)を計算する段階と、前記複数の物理フラッシュメモリブロックの各々に対して遂行されるプログラム及び消去サイクル(Program and Erase Cycle)をカウントする段階と、複数のプログラム方法の各々に対して、前記生のビットエラー率並びに前記プログラム及び消去サイクルのカウントされた回数から、前記複数の物理フラッシュメモリブロックの中の1つ以上に対する平均応答時間及び推定許容可能保持時間(Allowable Retention Time)を計算する段階と、前記ホスト上で動作する第1アプリケーションから、第1集合の要求事項(Requirement)を受信する段階と、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の1つ以上が前記第1集合の要求事項を充足させるのに適合するか否かを判別する段階と、前記第1集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第1リストを形成する段階と、前記第1アプリケーションから、ストレージ空間の割当に対する要請を受信する段階と、前記第1リストからの第1物理フラッシュメモリブロックを前記第1アプリケーションに割当する段階と、を有する。
【0006】
前記複数のプログラム方法は、第1ステップサイズ(Step Size)を活用するISPP(Incremental Step Pulse Programming)方法と、第2ステップサイズを活用するISPP方法と、を含み、前記第1ステップサイズは、前記第2ステップサイズよりも大きくあり得る。
前記第1集合の要求事項は、要求許容可能保持時間及び要求平均応答時間を含み得る。
前記複数の物理フラッシュメモリブロックの中の1つ以上が前記第1集合の要求事項を充足させるのに適合するか否かを判別する段階は、前記複数のプログラム方法の中のいずれかのプログラム方法に対して、前記計算された平均応答時間が前記要求平均応答時間よりも小さいか否かと、前記計算された推定許容可能保持時間が前記要求許容可能保持時間よりも大きいか否かと、を判別する段階を含み得る。
前記方法は、前記第1物理フラッシュメモリブロックを消去する段階を更に含み得る。
前記第1物理フラッシュメモリブロックを消去する段階は、前記第1物理フラッシュメモリブロックが浅い消去処理(Shallow Erase Process)によって前記第1集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用する段階と、前記第1物理フラッシュメモリブロックが浅い消去処理によって前記第1集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の消去処理(Normal Erase Process)を採用する段階と、を含み得る。
前記複数の物理フラッシュメモリブロックの中の1つ以上に対する平均応答時間及び推定許容可能保持時間を計算する段階は、保持時間関数としてのビットエラーカウントに対して線形フィット(Linear Fit)を遂行する段階と、前記線形フィットが最大の受け入れ可能な生のビットエラー率を超過する保持時間を前記推定許容可能保持時間として計算する段階を含み得る。
前記最大の受け入れ可能な生のビットエラー率は、100万ビット当たり1ビットのエラーであり得る。
前記方法は、前記ホスト上で動作する第2アプリケーションから、前記第1集合の要求事項と異なる第2集合の要求事項を受信する段階と、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の1つ以上が前記第2集合の要求事項を充足させるのに適合するか否かを判別する段階と、前記第2集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第2リストを形成する段階と、前記第2アプリケーションから、ストレージ空間の割当に対する要請を受信する段階と、前記第2リストからの第2物理フラッシュメモリブロックを前記第2アプリケーションに割当する段階と、を更に含み得る。
前記方法は、前記第2物理フラッシュメモリブロックを消去する段階を更に含み得る。
前記第2物理フラッシュメモリブロックを消去する段階は、前記第2物理フラッシュメモリブロックが浅い消去処理によって前記第2集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用する段階と、前記第2物理フラッシュメモリブロックが前記浅い消去処理によって前記第2集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の消去処理を採用する段階と、を含み得る。
【0007】
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブは、各々が複数の物理ページ(Physical Page)を有する複数の物理フラッシュメモリブロックを含むフラッシュメモリと、NANDコントローラ、磨耗(Wear−out)追跡器、及び生のビットエラー率(Raw Bit Error Rate)追跡器を含むモーフィックエンジン(Morphic Engine)と、仮想ストレージテーブル(Virtual Storage Table)及びクラスタリングエンジン(Clustering Engine)を有するストレージ仮想化器(Virtualizer)を含むストレージコントローラと、を備え、前記NANDコントローラは、複数のビットエラーカウント(Bit Error Count)を生成するエラー訂正コードデコーディング演算を含む複数の読出し動作を前記フラッシュメモリ上で遂行し、前記生のビットエラー率追跡器は、前記複数のビットエラーカウントから、前記複数の物理フラッシュメモリブロックの中の1つ以上に対する生のビットエラー率を計算し、前記磨耗追跡器は、前記複数の物理フラッシュメモリブロックの中の1つ以上に対して遂行されるプログラム及び消去サイクル(Program and Erase Cycle)をカウントし、前記クラスタリングエンジンは、複数のプログラム方法の各々に対して、前記生のビットエラー率並びに前記プログラム及び消去サイクルのカウントされた回数から、前記複数の物理フラッシュメモリブロックの中の1つ以上に対する平均応答時間及び推定許容可能保持時間(Allowable Retention Time)を計算し、前記仮想ストレージテーブルは、ホスト上で動作する第1アプリケーションから、第1集合の要求事項(Requirement)を受信し、前記クラスタリングエンジンは、前記仮想ストレージテーブルから前記第1集合の要求事項を受信し、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の1つ以上が前記第1集合の要求事項を充足させるのに適合するか否かを判別し、前記第1集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第1リストを形成し、前記第1アプリケーションから、ストレージ空間の割当に対する要請を受信し、前記第1リストからの第1物理フラッシュメモリブロックを前記第1アプリケーションに割当する。
【0008】
前記複数のプログラム方法は、第1ステップサイズ(Step Size)を活用するISPP(Incremental Step Pulse Programming)方法と、第2ステップサイズを活用するISPP方法と、を含み、前記第1ステップサイズは、前記第2ステップサイズよりも大きくあり得る。
前記第1集合の要求事項は、要求許容可能保持時間及び要求平均応答時間を含み得る。
前記クラスタリングエンジンは、前記複数の物理フラッシュメモリブロックの中の1つ以上が前記第1集合の要求事項を充足させるのに適合するか否かを判別するために、前記複数のプログラム方法の中のいずれかのプログラム方法に対しして、前記計算された平均応答時間が前記要求平均応答時間よりも小さいか否かと、前記計算された推定許容可能保持時間が前記要求許容可能保持時間よりも大きいか否かと、を判別し得る。
前記NANDコントローラは、前記第1物理フラッシュメモリブロックを消去し得る。
前記NANDコントローラは、前記第1物理フラッシュメモリブロックを消去するために、前記第1物理フラッシュメモリブロックが浅い消去処理(Shallow Erase Process)によって前記第1集合の要求事項を充足させるのに適合するように維持されると予測される場合、前記浅い消去処理を採用し、前記第1物理フラッシュメモリブロックが前記浅い消去処理によって前記第1集合の要求事項を充足させるのに適合するように維持されないと予測される場合、既定の消去処理(Normal Erase Process)を採用し得る。
前記クラスタリングエンジンは、前記複数の物理フラッシュメモリブロックの中の1つ以上に対して、性能メトリック関数としての前記推定許容可能保持時間を計算するために、保持時間関数としてのビットエラーカウントに対して線形フィット(Linear Fit)を遂行し、前記線形フィットが最大の受け入れ可能な生のビットエラー率を超過する保持時間を前記推定許容可能保持時間として計算し得る。
前記最大の受け入れ可能な生のビットエラー率は、100万ビット当たり1ビットのエラーであり得る。
前記仮想ストレージテーブルは、前記ホスト上で動作する第2アプリケーションから、前記第1集合の要求事項と異なる第2集合の要求事項を受信し、前記クラスタリングエンジンは、前記仮想ストレージテーブルから前記第2集合の要求事項を受信し、前記平均応答時間及び前記推定許容可能保持時間に基づいて、前記複数の物理フラッシュメモリブロックの中の1つ以上が前記第2集合の要求事項を充足させるのに適合するか否かを判別し、前記第2集合の要求事項を充足させるのに適合する物理フラッシュメモリブロックの第2リストを形成し、前記第2アプリケーションから、ストレージ空間の割当に対する要請を受信し、前記第2リストからの第2物理フラッシュメモリブロックを前記第2アプリケーションに割当し得る。
【発明の効果】
【0009】
本発明のソリッドステートドライブによれば、磨耗追跡器はプログラム及び消去サイクルをカウントし、生の(Raw)ビットエラー率追跡器はソリッドステートドライブから読み出されるデータの生のビットエラーをモニターリングし、アプリケーションがアプリケーションによって格納されるデータの予想格納時間に対応する許容可能保持時間及びフラッシュメモリに対するプログラム及び読出し時間に対応する平均応答時間に対する要求事項をソリッドステートドライブに提供することで、ソリッドステートドライブは、要求事項を充足させるのに適合する物理フラッシュメモリブロックを識別して、識別された物理フラッシュメモリブロックの中のストレージ空間をアプリケーションに割当することができる。
従って、本発明によれば、多様な環境に合わせてフラッシュメモリ装置の動作を調節することができ、フラッシュメモリ装置の性能及び寿命の側面で長所を有する。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。図面を参照しながら以下に記述する詳細な説明は、本発明によって提供されるモーフィックストレージ装置(Morphic Storage Device)の例示的な実施形態の説明として意図し、本発明が構成されるか又は活用される唯一の形態を表現するように意図するものではない。このような説明は図示する実施形態に関連して本発明の特徴を記述する。しかし、本発明の思想及び範囲内に含まれる他の実施形態によって同一又は同等な機能及び構造が達成される。本明細書で、同一の要素番号は同一の要素又は特徴を示す。
【0012】
ソリッドステートドライブ(Solid State Drive)のようなフラッシュメモリ装置は幾つかの側面でハードディスクドライブ(Hard Disk Drive)のような他の永久的なメモリ装置とは異なる特性を有する永久的なメモリ装置である。フラッシュメモリで、フローティングゲート(Floating Gate)上の電荷(Charge)は情報を格納するために利用され、電荷は時間の経過と共にフローティングゲートで漏洩され、電荷の漏洩によって格納された情報の損失又は部分的な損失を引き起こす。また、時間の経過と共にデータが損失する程度は様々な要因に依存する。
【0013】
図1Aは、保持時間に対する生のビットエラー率のグラフである。
図1Aを参照すると、フラッシュメモリから読出されるデータの生のビットエラー率(Raw Bit Error Rate:RBER)は図示したように保持時間(Retention Time)、即ちデータが書込まれた時からそのデータが読出された時までの時間に依存する。また、ビットエラー率は装置自体の性質(Nature)にも依存し、異なる製造会社によって作られた装置は保持時間に対する関数として異なるエラー率を示す。
【0014】
図1Bは、プログラム及び消去サイクルの回数に対する生のビットエラー率のグラフである。
図1Bを参照すると、生のビットエラー率は、保持時間のみならず、フラッシュメモリが影響を受けたプログラム及び消去サイクル(Program and Erase Cycle)の回数にも依存し、より長い時間区間に亘ってデータを格納するフラッシュメモリの能力はプログラム及び消去サイクルの回数の増加に従って低下する。
図1Bで、曲線105は3年保持時のエラー率を示し、曲線110は1年保持時のエラー率を示し、曲線115は3ヶ月保持時のエラー率を示し、曲線120は3週保持時のエラー率を示し、曲線125は3日保持時のエラー率を示し、曲線130はプログラム干渉時のエラー率を示し、曲線135は1日保持時のエラー率を示し、曲線140は読出し時のエラー率を示し、曲線145は消去時のエラー率を示す。
【0015】
図2A及び
図2Bは、本発明の一実施形態による電圧ステップシークェンスの図である。
図2A及び
図2Bを参照すると、ISPP(Incremental Step Pulse Programming)が利用される場合、プログラム動作に対して利用されるステップサイズ(Step Size)は電荷がフローティングゲート上に置かれる精度に影響を与える。従って、全ての他の要因が同一である場合、より小さいステップサイズが利用されるほど、生のビットエラー率がより低くなる。しかし、より小さいステップサイズを利用することはプログラム動作が完了されるまでに時間かかることになる。
【0016】
図3A及び
図3Bは、本発明の一実施形態によるプログラム状態及び消去状態に対する電圧分布のグラフである。
図3A及び
図3Bを参照すると、メモリを消去するために浅い消去処理(Shallow Erase Process)を利用することは既定の消去処理(
図3A)に比べて延長された寿命(即ち、多い回数のプログラム及び消去サイクルの後のより長い許容可能(Allowable)保持時間)を可能にし、浅い消去処理は既定の消去処理よりもメモリを質的に低下させる傾向を示す。ここで使用する“許容可能保持時間”は受け入れ可能な(Acceptable)生のビットエラー率を維持しながらデータがフラッシュメモリに格納されたまま残っている時間の量である。
【0017】
許容可能保持時間は受け入れ可能な生のビットエラー率に依存する。一実施形態で、受け入れ可能な生のビットエラー率は10
−6、即ち100万ビット当たり1ビットのエラーである。しかし、浅い消去処理はフローティングゲート上に格納可能な電荷の値の範囲を減少させるため、同一の耐力を有する装置に対して、浅い消去処理を利用することは既定の消去処理を利用することに比べて所定のプログラム及び消去サイクルの間により高いビットエラー率を引き起こすことがある。
【0018】
このように、プログラム及び消去処理の選択は適用される保持時間の要求事項(Requirement)を考慮して行われる。例えば、ウェブキャッシング(Web−caching)のような幾つかのアプリケーション(Application)は数日の保持時間のみを要求する反面、他のアプリケーションは1年以上の保持時間を要求することがある。例えば、数日の保持時間のみを要求するアプリケーションに対して、多くの回数のプログラム及び消去サイクルの影響を受けたフラッシュメモリの物理ブロックを利用することが受け入れ可能であるか、或いはより大きいステップサイズを利用してISPPを利用することが可能である。
【0019】
図4は、本発明の一実施形態による保持時間に対する生のビットエラー率のグラフである。
図4を参照すると、例えば、長い許容可能保持時間415を提供するフラッシュメモリの物理ブロック並びに消去及びプログラム処理(生のビットエラー率の曲線410で示される)はストレージに長い時間の間残ると予想されるデータのために利用される。より短い許容可能保持時間420でも充分なデータはより短い許容可能な保持時間を提供する処理425(例えば、浅い消去処理、又は大きいステップサイズを利用するISPP)を利用して取り扱われる。
【0020】
図5Aは、ハードディスクドライブに対する4軸特性の図であり、
図5B〜
図5Dは、本発明の一実施形態によるソリッドステートドライブに対する4軸特性の図である。
図5A〜
図5Dを参照すると、ハードディスクドライブ又はソリッドステートドライブのような永久的なストレージ装置は幾つかの主要特性を有する。例えば、このような装置は、処理量(Throughput)若しくはレイテンシ(Latency)の側面、又は読出し動作、消去動作、若しくは書込み(又はプログラム)動作を遂行するのに要求される時間の側面で、与えられた水準の性能を提供する。
【0021】
ソリッドステートドライブに対して、消去動作又はプログラム動作を完了するのに要求される時間は、読出し動作を完了するのに要求される時間とかなり異なり(例えば、消去動作又はプログラム動作を完了するのに要求される時間がより長い)、平均応答時間が装置の性能を特徴付けるために利用される。この平均応答時間は、読出し時間、消去時間、及びプログラム時間から計算され、書き込まれたデータの各々に対する読出し回数の一般的な比率、並びに長い消去及びプログラム時間の影響を減らすためのバッファーリング(Buffering)のような緩和手段の利用を考慮して計算される。
【0022】
一実施形態で、平均応答時間は次の数式1のように定義される。
【0024】
ここで、Qは有限集合を表す記号であり、N
read及びN
writeは各々特定時間区間(例えば、10秒)に亘るベンチマーキングテスト(Benchmarking Test)によって遂行される読出し及び書込みの回数であり、T
read、i及びT
write、iは各々テストの間のi番目の読出し時間及びi番目の書込み時間である。
【0025】
装置は特定寿命を有し、寿命は、ハードディスクドライブに対しては稼働部によって経験される磨耗(Wear)速度(Rate)によって決定され、ソリッドステートドライブに対してはプログラム及び消去サイクルに起因する劣化によって決定される。装置は、容量、即ち装置が格納可能なデータの最大量、及び許容可能保持時間を有する。
【0026】
図5A及び
図5Bから、例えば、ハードディスクドライブは、ソリッドステートドライブよりもより大きい容量及びより長い保持時間を有するが、より短い寿命及びより遅い応答時間(即ち、低い性能)を有することが分かる。同様に、
図5C及び
図5Dから、第1アプリケーション(
図5Dの“app1”)がソリッドステートドライブのデフォルト(Default)特性(
図5C)に比べて高い性能の要求事項及び短い保持時間の要求事項を有し、第2アプリケーション(
図5Dの“app2”)が低い性能の要求事項及び長い保持時間の要求事項を有することが分かる。
【0027】
図6は、本発明の一実施形態によるホスト及びソリッドステートドライブのブロック図である。
図6を参照すると、本実施形態で、ホスト610は、ソリッドステートドライブ615に連結され、永久的なストレージのためにソリッドステートドライブ615を利用する。ソリッドステートドライブ615は永久的なストレージを提供するように構成されたエンクロージャー(Enclosure)内の独立したユニット(Self−contained Unit)である。
【0028】
ソリッドステートドライブ615は、ストレージインターフェイスを通じて、例えばストレージ動作のためにホスト610によって慣習的に利用されるコネクター及びプロトコル(Protocol)を通じて、ホスト610に連結される。コネクター及びプロトコルは、例えばSATA(Serial Advanced Technology Attachment)、Fibre Channel、SAS(Serial Attached SCSI)、NVMe(Non Volatile Memory Express)等に従うか、又はイーサーネット(Ethernet(登録商標))若しくはUSB(Universal Serial Bus)のようなより汎用のインターフェイスに従う。
【0029】
ソリッドステートドライブ615のフラッシュメモリ620は物理フラッシュメモリブロック630(又は、“フラッシュブロック”若しくは“フラッシュメモリブロック”)及び物理ページ635内に構築される。物理フラッシュメモリブロック630は1回の動作で消去されるメモリの最も小さい単位であり、物理ページ635は1回の動作で書き込まれるメモリの最も小さい単位である。各物理フラッシュメモリブロック630は複数の物理ページ635を含む。
【0030】
ホスト610は論理ページ番号(Logical Page Number)で指示されるストレージアクセス要請により大容量ストレージ装置と相互作用し、例えば、特定の論理ページ番号のページにデータを格納することを要請するか、特定の論理ページ番号のページに格納されたデータを読み出すことを要請するか、又は特定の論理ページ番号のページに格納されたデータを消去することを要請する。ソリッドステートドライブ615に対して、静的な(Static)論理対物理マッピング(Logical to Physical Mapping)は利用されない。これは読出し/書込みサイズと消去サイズとの間の差異が、データを1つの物理位置から他の位置に常に移動させるガーベッジコントロールメカニズム(Garbage Control Mechanism)に影響を与えるためであり、従って動的な(Dynamic)論理対物理マッピングが必要である。
【0031】
フラッシュ変換階層(Flash Translation Layer)は動的に論理ページ番号を物理ページ番号(Physical Page Number)に変換又はマッピングする。新しいデータが特定の論理ページ番号のページのデータに重ねて書き込まれる(Overwrite)場合、フラッシュ変換階層は、物理ページ635を含む物理フラッシュメモリブロック630を消去する代わりに、論理ページ番号に現在対応する物理ページ635が無効(Invalid)である印を付け、その論理ページ番号を新しい物理ページ635にマッピングするために論理ページ番号から物理ページ635へのマッピングを更新し、新しいデータを新しい物理ページ635に書き込む。フラッシュ変換階層はソリッドステートドライブ615のストレージコントローラ625(例えば、マイクロコントローラ)上で動作するソフトウェアで具現される。
【0032】
フラッシュメモリ620へのプログラムのためにホスト610から受信されたデータはエラー訂正コード(Error Correcting Code)でエンコーディングされ、データがフラッシュメモリ620から読み出される時、生のデータ読出し(Raw Data Read)は、デコーディングデータを生成するエラー訂正コードデコーディング演算により処理され、エラーが訂正されたデコーディングデータ、及びビットエラーカウント(Bit Error Count)、即ちエラー訂正コードデコーディング演算によって訂正されたビットエラーの数のカウントを生成する。
【0033】
フラッシュ変換階層は、しばしば“ガーベッジコレクション(Garbage Collection)”と称する動作を遂行する。この動作で、無効である印を付けられた物理ページ635の大部分(例えば、設定された閾値を超過する部分)を含む特定の物理フラッシュメモリブロック630が、この物理フラッシュメモリブロック630に残っている有効(Valid)な物理ページ635が1つ以上の他の物理フラッシュメモリブロック630の物理ページ635に移動された後に、消去され、これにより新しく消去された物理フラッシュメモリブロック630が新しいデータの書込みのために利用可能(Available)になる。
【0034】
複数のアプリケーションはホスト610で動作(例えば、実行)して入力/出力要請(例えば、消去要請、プログラム(書込み)要請、及び読出し要請)を生成する。この入力/出力要請はソリッドステートドライブ615に伝送される。このような各アプリケーションは、永久的なストレージの特性に対する要求事項、例えば最大の受け入れ可能な平均応答時間及び最小の許容可能保持時間を特定する要求事項を有する。
【0035】
一実施形態で、この要求事項は、物理フラッシュメモリブロック630がアプリケーションのためにデータを格納するのに利用されるか否かを判別するためにソリッドステートドライブ615によって利用され、例えばアプリケーションのためにデータを書き込む時に利用されるステップサイズを選択するソリッドステートドライブ615によって利用される。
【0036】
各アプリケーションは、動作を開始する時、自体をソリッドステートドライブ615に認識させ、自体のストレージ要求事項をソリッドステートドライブ615に送り、ソリッドステートドライブ615に登録する。このような方式で、ソリッドステートドライブ615は特定のアプリケーションによって生成される入力/出力要請がそのアプリケーションの要求事項を充足させる方式で取り扱われるように保証する。該当する要求事項に従って入力/出力要請に対して適応的に(Adaptively)応答するソリッドステートドライブ615の特性を、本明細書で“モーフィック(Morphic)”と称する。
【0037】
図7は、本発明の一実施形態によるモーフィックシステムのブロック図である。
図7を参照すると、本実施形態で、アプリケーションからの要請に基づいてフラッシュメモリをアプリケーションに割当するために、ストレージコントローラ625にモーフィックエンジン(Morphic Engine)710及びストレージ仮想化器(Storage Virtualizer)715を採用する。モーフィックエンジン710はストレージ仮想化器715を通じてアプリケーションによって伝送された入力/出力要請を取り扱うためにNANDフラッシュインターフェイス720に連結される。
【0038】
図8は、本発明の一実施形態によるモーフィックエンジンのブロック図である。
図8を参照すると、本実施形態で、モーフィックエンジン710は、生のビットエラー率追跡器810、磨耗(Wear−out)追跡器815、保持予測器820、及びNANDコントローラ825を含む。
【0039】
生のビットエラー率追跡器810は各物理フラッシュメモリブロック630の生のビットエラー率をモニターリングする。生のビットエラー率追跡器810は、これを達成するために、ホスト要請に応答してフラッシュメモリからデータが読出される時毎にビットエラーカウントを追跡する。一実施形態で、ビットエラーカウントはフラッシュ変換階層で追加エントリ(Entry)として書き込まれる。
【0040】
また、生のビットエラー率追跡器810は、例えばホストによって要請された読出し動作が物理フラッシュメモリブロック630で所定時に遂行されない場合、物理フラッシュメモリブロック630の生のビットエラー率の更新測定値を得るために、“サンプリング(Sampling)”読出し動作(即ち、ホスト要請に起因しない読出し動作)を遂行する。このような方式で、生のビットエラー率追跡器810は、時間の経過と共に、各物理フラッシュメモリブロック630に対して観測されたビットエラー率を列挙するテーブルを生成する。
【0041】
一実施形態で、このテーブルは、各物理フラッシュメモリブロック630に対して様々なエントリを有し、例えば大きいステップサイズを利用してISPPでプログラムされたメモリセルに対する第1観測の生のビットエラー率、及び小さいステップサイズを利用してISPPでプログラムされたメモリセルに対する第2観測の生のビットエラー率を有する。このテーブルは、ソリッドステートドライブ615への電力供給が一時的に中断される場合に保持されるように不揮発性メモリ(例えば、フラッシュメモリ620)に格納される。
【0042】
磨耗追跡器815は、フラッシュメモリ上で遂行されるプログラム及び消去動作をモニターリングし、各物理フラッシュメモリブロック630に対して遂行されたプログラム及び消去サイクルの回数をカウントする。一実施形態で、フラッシュ変換階層でウェアレベリング(Wear−leveling)の目的としてもプログラム及び消去サイクルの回数が追跡される。このような方式で、磨耗追跡器815は、時間の経過と共に、物理フラッシュメモリブロック630上で遂行されたプログラム及び消去サイクルの回数を(各物理フラッシュメモリブロック630に対して)列挙するテーブルを生成する。
【0043】
一実施形態で、このテーブルは、各物理フラッシュメモリブロック630に対して様々なエントリを有し、例えば浅い消去処理を利用して遂行されたプログラム及び消去サイクルの第1カウント、及び既定の消去処理を利用して遂行されたプログラム及び消去サイクルの別個の第2カウントを有する。このテーブルはソリッドステートドライブ615への電力供給が一時的に中断される場合に保持されるように不揮発性メモリ(例えば、フラッシュメモリ620)に格納される。
【0044】
保持予測器820は多様な消去及びプログラム方法の各々に対する各物理フラッシュメモリブロック630の許容可能保持時間を推定するために利用される。一実施形態で、保持予測器820は(生のビットエラー率追跡器810から知らされたことに従って)保持時間関数としてのビットエラー率に対して線形フィット(Linear Fit)(又は、指数フィット(Exponential Fit))を遂行し、このフィットの生のビットエラー率が閾値、即ち最大の受け入れ可能な生のビットエラー率(例えば、100万ビット当たり1ビットのエラー)と同一である場合の保持時間の値として許容可能保持時間を計算する。一実施形態で、保持予測器820は許容可能保持時間を計算するために磨耗追跡器815によって生成されたテーブルを参照する。一実施形態で、閾値はプログラム可能な変数(Programmable Variable)である。
【0045】
NANDコントローラ825は、ブロック及びページ水準の読出し、書込み、及び消去コマンドを発行(Issue)してフラッシュメモリ620と直接相互作用するドライバールーチン(Driver Routine)である。NANDコントローラ825はフラッシュメモリ620から読出された生のデータのビットエラーを検出して訂正するエラー訂正コードデコーディングアルゴリズムを処理する。また、NANDコントローラ825は保持予測器820からストレージ仮想化器715に情報を伝達する。NANDコントローラ825は更に消去処理(例えば、浅い消去又は既定の消去が利用される)及びプログラム処理(例えば、ISPPを利用するプログラム動作に採用されるステップサイズ)に対する制御を提供する。
【0046】
図9は、本発明の一実施形態によるストレージ仮想化器のブロック図である。
図9を参照すると、ストレージ仮想化器715で、仮想ストレージテーブル910は、ソリッドステートドライブ615に登録された各アプリケーションに対して、例えば最大の受け入れ可能な平均応答時間及び最小の許容可能な保持時間を示す要求事項の集合を格納する。また、要求事項はどれ位多くのブロックがアプリケーションによって潛在的に利用されるかを示す容量の要求事項を含む。
【0047】
クラスタリングエンジン(Clustering Engine)915は、仮想ストレージテーブル910から情報を受信し、ソリッドステートドライブ615に登録された各アプリケーションに対するクラスターリスト(Cluster List)を生成する。クラスターとは保持予測器820の計算によって各アプリケーションの要求事項を充足させるのに適合する物理フラッシュメモリブロック630の集合であり、クラスターリストはクラスターにある物理フラッシュメモリブロック630のリストである。
【0048】
(フラッシュ変換階層の一部分である)アドレス変換ブロック(Address Translation Block)920は論理ページアドレスをフラッシュメモリ620の物理ページアドレスにマッピングするクロスリファレンステーブル(Cross Reference Table)を維持する。
【0049】
1つ以上のクラスターの構成要素である物理フラッシュメモリブロック630が消去される時毎に、クラスタリングエンジン915はその物理フラッシュメモリブロック630がクラスターの構成員の資格(Eligible)を維持するか否かを再評価し(資格は潛在的に追加のプログラム及び消去サイクルによって影響を受ける)、これによって、クラスター及びクラスターリストを更新する。
【0050】
物理フラッシュメモリブロック630は、クラスターに対応するアプリケーションの要求事項を充足させるのに適合する場合、即ち幾つかのプログラム方法に対して(例えばISPPに利用される所定のステップサイズに対して)アプリケーションの平均応答時間の要求事項及び許容可能な保持時間の要求事項の両方が共に又は同時に充足される場合、クラスターの構成員の資格を有するものと看做される。
【0051】
アプリケーションが利用可能な物理フラッシュメモリブロック630の中のいずれに対しても非常に厳格な要求事項を有する場合、要求事項を最も良く充足させる1つ以上の物理フラッシュメモリブロック630がそのアプリケーションのためのクラスターの構成員の資格を有するものと看做される。この状況で、アプリケーションは要求事項を充足させない物理フラッシュメモリブロック630がそれに割当されたことを知らせる通知を受ける。この決定は、物理フラッシュメモリブロック630が新しく消去された場合に最近の削除が浅い消去処理を利用して遂行されたか又は既定の消去処理を利用して遂行されたかを含めて、物理フラッシュメモリブロック630が行ったプログラム及び消去サイクルの履歴を考慮して行われる。
【0052】
一実施形態で、ガーベッジコレクションの間に、ガーベッジコレクションによって再使用されるブロックの削除はそのブロックが特定のアプリケーションに割当される時まで延期される。この実施形態で、そのブロックが既定の消去を利用して消去されると、クラスターに対応するアプリケーションの要求事項を充足させるのに相応しくなる場合、クラスタリングエンジン915はそのブロックをクラスターに含ませる。ブロックがアプリケーションに割当された後、そのブロックがアプリケーションの要求事項を充足するようにするのに浅い消去で充分である場合、そのブロックは浅い消去を利用して消去される。そうでない場合、そのブロックは既定の消去を利用して消去される。
【0053】
所定の動作で、アプリケーションが永久的なストレージの割当に対する要請を生成すると、その要請は仮想ストレージテーブル910によって受信され、これによって1つ以上の資格を有する物理フラッシュメモリブロック630、即ちアプリケーションの要求事項を充足させる物理フラッシュメモリブロック630のリストに対してクラスタリングエンジン915への要請を生成する。その後、アドレス変換ブロック920は1つ以上の資格を有する物理フラッシュメモリブロック630内にアプリケーションによって要請されたストレージ領域を割当し、論理ページ番号から物理ページ番号へのマッピングを更新する。
【0054】
アプリケーションがその後ソリッドステートドライブ615にデータを書き込むと、プログラム動作はアプリケーションの要求事項に一致するプログラムパラメーター(例えば、平均応答時間の要求事項を充足させるのには十分に大きく、許容可能な保持時間の要求事項を充足させるのには十分に小さいステップサイズを利用するISPP)を利用して遂行される。
【0055】
図10Aは、本発明の一実施形態による複数のシンクラスタリングエンジンを含むシステムのブロック図であり、
図10Bは、本発明の一実施形態による複数のシッククラスタリングエンジンを含むシステムのブロック図である。
図10A及び
図10Bを参照すると、本実施形態で、複数のソリッドステートドライブ615が共に連結されて、ホスト610にストレージを提供する論理ストレージ階層(Logical Storage Layer)を形成する。この実施形態で、ストレージ割当の決定がクラスタリング情報に従って行われるようにクラスタリング情報を共有する助けになる。
【0056】
例えば、
図10Aで、アプリケーションが(ストレージインターフェイス1010及び第2番目のインターフェイス1015を通じて)多くの量のストレージに対する割当要請を生成する場合、ソリッドステートドライブ615の各シンクラスタリングエンジン(Thin Clustering Engine)1025によって生成されたクラスターリストのコピーを維持する中央集中型クラスタリングエンジン(Centralized Clustering Engine)1020は1つ以上のソリッドステートドライブ615の1つ以上の資格を有する物理フラッシュメモリブロック630から空間を割当する。
【0057】
図10Bの実施形態で、各ソリッドステートドライブ615はシッククラスタリングエンジン(Thick Clustering Engine)1030を含み、シッククラスタリングエンジン1030は自体の固有のクラスターリストに加えて他のシッククラスタリングエンジン1030の各々のクラスターリストのコピーを維持する。この実施形態で、ソリッドステートドライブ615が(ストレージインターフェイス1010及び第2番目のインターフェイス1015を通じて)そのソリッドステートドライブ615の資格を有する物理フラッシュメモリブロック630内の利用可能な量を超過する量のストレージに対する割当要請を受信すると、ソリッドステートドライブ615は充足されない割当要求事項に対する要請を他のソリッドステートドライブ615に伝播(Propagate)する(従って、結果的に、ソリッドステートドライブ615が要請を受け入れない場合、充足されない割当要求事項に対する要請を他のソリッドステートドライブ615に伝送する)。
【0058】
上述の内容を考慮すると、ソリッドステートドライブ615は、消去及びプログラムパラメーターを調節し、アプリケーションの要求事項に良く合う物理フラッシュメモリブロック630を選択することによって、多様なアプリケーションのストレージ要求事項を効率的に充足させることができる。このような方式で、例えば長い保持時間を要求するアプリケーションには長い保持時間が提供され、より短い保持時間のみを要求するアプリケーションには、対応する性能向上と共に、より短い保持時間が提供される。
【0059】
上述した本発明の実施形態によるソリッドステートドライブ615及び/又は他の関連する装置又は構成要素は、適切なハードウェア、ファームウェア(例えば、ASIC(Application−specific Integrated Circuit))、ソフトウェア、又はそれらの適切な組合せを活用して具現される。例えば、ソリッドステートドライブ615の多様な構成要素は1つの集積回路チップ又は別個の集積回路チップ上に形成される。また、ソリッドステートドライブ615の多様な構成要素は、フレキシブル印刷回路フィルム(Flexible Printed Circuit Film)、TCP(Tape Carrier Package)、又はPCB(Printed Circuit Board)上に具現されるか、或いはソリッドステートドライブ615と同一の基板上に形成される。
【0060】
また、ソリッドステートドライブ615の多様な構成要素は、上述した多様な機能を遂行するために1つ以上のコンピューティング装置の1つ以上のプロセッサ上で動作し、コンピュータプログラム命令語(Computer Program Instruction)を実行し、他のシステム構成要素と相互作用するプロセス(Process)又はスレッド(Thread)である。コンピュータプログラム命令語は、例えばRAM(Random Access Memory)のような標準メモリ装置を利用してコンピューティング装置に具現されるメモリに格納される。コンピュータプログラム命令語は、例えば、CD−ROM、フラッシュドライブ等のような他の非一時的なコンピュータ読み取り可能な記録媒体(Non−transitory Computer−readable Media)に格納される。
【0061】
また、本発明が属する技術分野で通常の知識を有する者(以下、通常の技術者)は、本発明の例示的な実施形態の範囲を逸脱せずに、多様なコンピューティング装置の機能が単一コンピューティング装置に結合又は集積されるか、或いは特定コンピューティング装置の機能が1つ以上の他のコンピューティング装置に亘って分散されることを認識する。
【0062】
ストレージコントローラ625は、プロセシング回路(Processing Circuit)それ自体であるか、或いはプロセシング回路を含む。ここで、“プロセシング回路”という用語は、データ又はデジタル信号を処理するために採用されるハードウェア、ファームウェア、及びソフトウェアの何らかの組合せを含む。プロセシング回路のハードウェアは、例えば、ASICs(Application Specific Integrated Circuits)、汎用又は専用のCPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphic Processing Unit)、及びFPGA(Field Programmable Gate Array)のようなプログラム可能な論理装置を含む。
【0063】
本明細書で利用されるプロセシング回路で、各機能は、その機能を遂行するように構成されたハードウェア、即ち固定配線(Hard−wired)、又は非一時的なストレージ媒体に格納された命令語を実行するように構成されるCPUのようなより汎用のハードウェアによって遂行される。プロセシング回路は、単一PWB(Printed Wiring Board)上に製作されるか、或いは相互連結された様々なPWBに亘って分散される。プロセシング回路は他のプロセシング回路を含む。例えば、プロセシング回路は、PWB上で相互連結される2つのプロセシング回路、FPGA、及びCPUを含む。
【0064】
多様な部分、構成要素、領域、階層、及び/又は区域を説明するために“第1”、“第2”、“第3”等のような用語を本明細書で使用したが、この部分、構成要素、領域、階層、及び/又は区域は、これらの用語によって限定されない。これらの用語は、単なる1つの部分、構成要素、領域、階層、又は区域を他の部分、構成要素、領域、階層、又は区域と区別するために利用される。従って、上述した第1部分、構成要素、領域、階層、又は区域を、本発明の思想及び範囲を逸脱せずに、第2部分、構成要素、領域、階層、又は区域とも称する。
【0065】
本明細書で“低”、“下”、“下端”、“うえ”、“上”、“上端”等のように空間的に相対的な用語は、図面に示したものによって1つの部分又は特徴の他の部分又は特徴に対する関係を説明するために説明の便宜上利用される。空間的に相対的なこのような用語は、図面に示した方向に加えて、利用中である又は動作中である装置の他の方向を含む。例えば、図面の装置が裏返された場合、他の部分又は特徴の“下”又は“低”又は“下端”にあるものと説明した部分はその他の部分又は特徴の“上”に向く。従って、“下”及び“下端”の例示的な用語は上及び下の方向の両方を含む。装置は他の方向に向くことがあり(例えば、90°回転するか、他の方向に置かれる)、ここで利用する空間的に相対的な語句はそれに合わせて解釈される。更に、2つの階層の“間”に1つの階層があるものと言及する場合、その階層は2つの階層の間の唯一の階層であり、或いは更に挟まれた(Interleaving)1つ以上の階層が存在する。
【0066】
本明細書で使用する用語は、特定の実施形態を説明しようとする目的のためであり、本発明を限定するように意図するものではない。本明細書で使用する“実質的に”、“約”、及びその他の類似な用語は、学術的な用語としてではなく、類似(Approximation)の用語として使用され、通常の技術者によって認識される測定又は計算値の内在的な偏差を説明するように意図するものではない。本明細書で使用する“主要構成要素”の用語は重み(Weight)として少なくとも半分の要素をなす構成要素を意味し、“主要部分”の用語は複数の項目に適用される場合にその項目の少なくとも半分を意味する。
【0067】
本明細書で使用する“1つ”及び“1つの”の単数形態は、文脈上明確に異なって示さない限り、複数形態もまた含まれる。“含む“及び/又は”構成される“の用語は、本明細書で使用する場合、上述した特徴、整数、段階、動作、部分、及び/又は構成要素の存在を明示するが、1つ以上の他の特徴、整数、段階、動作、部分、構成要素、及び/又はそれらの集合の存在又は追加を不可能にするものではない。本明細書で使用する“及び/又は”の用語は列挙した関連項目の中の1つ以上の何らかの、そして全ての組合せを含む。“少なくとも1つ”のような表現は要素のリストに先行する場合に要素の全体リストを修飾し、リストの個別要素を修飾しない。更に、“することができる“の使用は本発明の実施形態を説明する際に“本発明の1つ以上の実施形態”を示す。また、“例示”の用語は例又は実例を示す。本明細書で使用する“利用”の用語は“活用”の用語と類似語であるものとして考慮される。
【0068】
一部分又は階層が他の部分又は階層“上に置かれるか、或いは”、“連結させるか、或いは”、又は“隣接する”ものと言及する場合、その部分又は階層は他の部分又は階層の直接上に置かれるか、或いは直接連結させるか、或いは直に隣接することもあり、又は更に挟まれた1つ以上の部分又は階層が存在することもある。反対に、一部分又は階層が他の部分又は階層の“直接上に置かれるか”、“直接連結させるか”、又は“直に隣接する”ものとして言及する場合、更に挟まれた部分又は階層は存在しない。
【0069】
本明細書で言及する所定の数値範囲は言及した範囲内に含まれる同一の数値精度(Precision)の全ての下位範囲を含む。例えば、“1.0〜10.0“の範囲は言及した最小値1.0及び言及した最大値10.0の間の全ての下位範囲、即ち1.0以上の最小値及び10.0以下の最大値を有する下位範囲、例えば2.4〜7.6を含む。ここで言及する最大数値の上限はそこに含まれる全ての更に低い数値の上限を含み、本明細書で言及する最小数値の下限はそこに含まれる全ての更に高い数値の下限を含む。
【0070】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。