(57)【特許請求の範囲】
【請求項１】
システムバスを介して中央処理装置に直接アクセス可能なＤＲＡＭ論理フラッシュと、
前記ＤＲＡＭ論理フラッシュと内部バスで接続され、前記中央処理装置に直接アクセス不可能なフラッシュメモリと、
前記ＤＲＡＭ論理フラッシュと前記フラッシュメモリとの間で送信されるデータを制御するマスタコントローラと、
を備えたソリッドステートドライブにおいて、
システムバスが、前記フラッシュメモリではなく前記ＤＲＡＭ論理フラッシュに読み出し及び書き込みを行い、
前記ＤＲＡＭ論理フラッシュはＮＡＮＤフラッシュと同じようにファイルを記憶することによりフラッシュメモリを真似し、フラッシュコマンドに応答し、
前記マスタコントローラが、前記ＤＲＡＭ論理フラッシュの記憶容量が大部分消費されたと判断された場合に、前記ＤＲＡＭ論理フラッシュから前記フラッシュメモリにデータを書き込む、ドライブ。
【請求項２】
前記ドライブへのフラッシュ書き込みは、前記フラッシュメモリに全て書き込まれるとは限らない、請求項１のドライブ。
【請求項３】
前記ソリッドステートドライブが、システムのプロセッサにより出されるコマンドとは無関係の所定のポイントで、前記ＤＲＡＭ論理フラッシュから前記フラッシュメモリにデータを書き込む、請求項１のドライブ。
【請求項４】
前記ＤＲＡＭ論理フラッシュはＦＡＴテーブルを使用し、論理レコードを更新し、ファイルを結合し、ＳＡＴＡバスに直接接続することによってフラッシュメモリを真似する、請求項１のドライブ。
【請求項５】
前記ソリッドステートドライブへの外部電源が遮断された場合に前記ＤＲＡＭ論理フラッシュに記憶されたデータコンテンツをフラッシュメモリに移動させるのに十分な電力を貯蔵するエネルギ貯蔵装置をさらに備える、請求項１のドライブ。
【請求項６】
前記ＤＲＡＭ論理フラッシュがすべてのフラッシュコマンドを最大インタフェース速度で実行する、請求項１のドライブ。
【請求項７】
前記ＤＲＡＭ論理フラッシュがプログラムトレースポイント及び動作スナップショットを記憶し、前記フラッシュメモリへの書き込みを最小化する、請求項１のドライブ。
【請求項８】
前記ソリッドステートドライブが、どんなパワーダウンについても、取り付けられた演算装置の最後の状態の完全な復元を提供するよう構成されている、請求項１のドライブ。
【請求項９】
前記ＮＡＮＤフラッシュのページが誤りを有するものとして個々に識別されブロックから除去される一方で、前記ブロック内の他のページは使用され続ける、請求項１のドライブ。
【請求項１０】
前記フラッシュメモリがマルチレベルセルＮＡＮＤフラッシュを備えており、誤りを有するものとしてページを個々に識別し前記ページをブロックから除去する一方で前記ブロック内の他のページが使用され続けることが、前記フラッシュメモリの寿命を、前記ブロック内のページにおいて誤りが検出された場合に前記ブロック全体を除去するフラッシュメモリの少なくとも１０倍増大させる、請求項９のドライブ。
【請求項１１】
すべてのデータが、前記データが前記フラッシュメモリに正しく書き込まれるまで前記ＤＲＡＭ論理フラッシュ内に保持される、請求項１のドライブ。
【請求項１２】
前記ＤＲＡＭ論理フラッシュへの独立した読み出し及び書き込み動作のための高速ＤＭＡをさらに備える、請求項１のドライブ。
【請求項１３】
高速内部バスをさらに備え、前記ＤＲＡＭ論理フラッシュ及び前記フラッシュメモリが別々に前記高速内部バスに接続され、前記フラッシュメモリが別々のモジュールに分けられ、各モジュールが前記高速内部バスと独立してインタフェースをとるよう構成された異なるマイクロプロセッサにより制御される、請求項１のドライブ。
【請求項１４】
前記ＤＲＡＭ論理フラッシュが、前記フラッシュメモリへのすべての転送を記憶し前記転送を選択的に保持することによりフラッシュメモリを真似して、前記フラッシュメモリの書き込み摩耗を最小化する、請求項１のドライブ。
【請求項１５】
マスタマイクロプロセッサが前記ソリッドステートドライブの外部の中央処理装置からコマンドを受信し、前記マスタマイクロプロセッサがデータ転送を直接管理することなく他のマイクロプロセッサにサブコマンドを送信することによって前記コマンドの実行を制御し、各マイクロプロセッサが独立して動作する、請求項１のドライブ。
【請求項１６】
別々のフラッシュメモリモジュールが並列で書き込まれ得るように、各々が前記別々のフラッシュメモリモジュール内にある複数の独立したフラッシュコントローラをさらに備える、請求項１のドライブ。
【請求項１７】
前記フラッシュメモリモジュールの各々が、
マイクロプロセッサと、
フラッシュメモリと、
前記マイクロプロセッサ及びフラッシュメモリに直接アクセス可能なメモリバッファと、
前記メモリバッファにデータを直接書き込むためのインタフェースと、
前記メモリバッファをヌル状態への遷移により外部バスと内部バスとの間で切り替えるためのバッファ型スイッチと、
を備える、請求項１６のドライブ。
【請求項１８】
前記ＤＲＡＭ論理フラッシュが少なくとも論理レコードによりインデックス化されたデータ転送及び論理レコードによりインデックス化されていないデータ転送のうち一方のデータ転送モードで動作するよう構成されている、請求項１のドライブ。
【請求項１９】
前記ＤＲＡＭ論理フラッシュに書き込まれたデータの一部が前記フラッシュメモリには書き込まれない、請求項１８のドライブ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
[0001]  本願は、２０１２年１１月２０日に提出された米国仮出願第６１／７２８，３９４号及び２０１３年３月８日に提出された米国仮出願第６１／７７５，３２７号について、米国特許法第１１９条（ｅ）に基づく利益を請求し、それらの全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
[0002]  演算装置は、プログラム実行可能物（program executables）及びデータを不揮発性メモリに保存する。これにより、演算装置は、再起動後又は電源遮断後にファイルを利用できる。従来、多数のファイルにとって好適な不揮発性記憶装置はハードディスクドライブであった。ハードディスクドライブは、モータ駆動されるスピンドル上で回転する硬性のプラッタを備えている。データは、プラッタの上方で空気の膜の上に浮いているヘッドによって、磁気的にプラッタから読み出されるとともにプラッタに書き込まれる。こうしたプラッタは、一般的には毎分４，２００乃至１５，０００回転（ｒｐｍ）の速度で回転する。ハードディスクドライブには、回転ディスク及び可動ヘッドの機械的な特性に関係するアクセスタイム、高い電力消費、機械的故障、低衝撃耐性など、多数の短所がある。
【０００３】
[0003]  ソリッドステートドライブ（ＳＳＤ）は、集積回路を用いてデータを記憶する不揮発性記憶装置であり、したがって何ら可動部分を含まない。ＳＳＤには、より高い衝撃耐性、より短いアクセスタイム、より可変的なフォームファクタなど、ハードディスクドライブに比べて多数の長所がある。また、ＳＳＤは一般的に、動作中、ハードディスクドライブよりもはるかに少ない電力を消費する。したがって、ＳＳＤによれば、より小さく薄い装置外形と、充電でのより長い動作とが可能である。
【図面の簡単な説明】
【０００４】
[0004]  添付の図面は本明細書に記載されている原理の様々な例を示すものであって、明細書の一部である。図示される例は単なる例に過ぎず、特許請求の範囲を限定しない。
【図１】[0005]  本明細書に記載された原理の一例による例示的なソリッドステートドライブアーキテクチャのブロック図である。
【図２】[0006]  本明細書に記載された原理の一例によるフラッシュメモリモジュールのブロック図である。
【図３】[0007]  本明細書に記載された原理の一例による、図２に示すフラッシュメモリモジュールを組み込んだ例示的なソリッドステートドライブアーキテクチャのブロック図である。
【図４】[0008]  本明細書に記載された原理の一例による、ＣＰＵ／ＣＰＵメモリと、ＤＲＡＭ論理フラッシュと、フラッシュメモリとの間で発生する様々な相互作用及びプロセスの図である。
【図５Ａ】[0009]  本明細書に記載された原理の一例によるソリッドステートドライブへのデータの書き込み時のデータフローを示す。
【図５Ｂ】[0010]  本明細書に記載された原理の一例によるソリッドステートドライブへのデータ書き込み方法を説明するフローチャートである。
【図６Ａ】[0011]  本明細書に記載された原理の一例によるソリッドステートドライブからＣＰＵメモリへのデータの読み出し時のデータフローを示す。
【図６Ｂ】[0012]  本明細書に記載された原理の一例によるソリッドステートドライブからＣＰＵメモリへのデータ読み出し方法を説明するフローチャートである。
【図７】[0013]  本明細書に記載された原理の一例によるシステム状態のスナップショットの保存方法を示すフローチャートである。
【図８】[0014]  本明細書に記載された原理の一例による、ＳＳＤからＣＰＵメモリへとプログラムファイルをファストロードする例示的な方法のフローチャートである。
【図９】[0015]  本明細書に記載された原理の一例によるデータダンプ／復元方法のフローチャートである。
【図１０】[0016]  本明細書に記載された原理の一例による誤処理ファイルの復元方法のフローチャートである。
【０００５】
[0017]  図面全体を通じて、同一の参照番号は必ずしも同一ではないが類似の要素を指す。
【発明を実施するための形態】
【０００６】
[0018]  ソリッドステートドライブ（ＳＳＤ）は、ＮＡＮＤフラッシュメモリなどの集積回路を用いてデータを記憶する不揮発性記憶装置である。ＳＳＤには、高い衝撃耐性、低い所要電力、より速いアクセスタイム、より可変的なフォームファクタといった多数の長所がある。しかしながら、ソリッドステートドライブにおいて、メモリとして使用される集積回路の寿命は限られている。ＮＡＮＤフラッシュの標準的な仕様書は、ＮＡＮＤフラッシュが故障するまでに確実に使用できるのはたった１０００乃至３０００書き込み／消去サイクルであると規定している。現在のアーキテクチャでは、ＮＡＮＤフラッシュのブロックは、そのブロックに含まれているデータのどこか一部分が変更されるたびに消去及び書き換えられなければならないため、この寿命限界は特に厄介である。したがって、ＳＳＤドライブは、頻繁に使われれば使われるほど、急速に故障するであろう。多くのオペレーティングシステムは、頻繁に不揮発性メモリへの書き込みを行う。例えば、ファイルアクセステーブル（ＦＡＴテーブル）は、ファイル変更のたびに書き換えられる。ＦＡＴテーブル更新は、その都度複数の消去／書き込みサイクルを含む。また、多くのオペレーティングシステムは、演算装置の現在の状態の「スナップショット」を不揮発性メモリに定期的に保存する。これは演算装置の動作の復元において有益であり得るが、その一方で、多数のスナップショットをＮＡＮＤフラッシュ上にルーチン的に保存することは、ＳＳＤの寿命を顕著に縮めることになり得る。その結果、ＳＳＤは、顧客の期待に応えることができず、頻繁な交換を必要とする可能性がある。
【０００７】
[0019]  以下には、フラッシュメモリが、消去／書き込みサイクルの回数が限られているにもかかわらず、不揮発性記憶装置として効果的に使用され得る多数の原理を説明する。以下に説明するソリッドステートドライブ（ＳＳＤ）アーキテクチャは、ＤＲＡＭ論理フラッシュにフラッシュメモリとの間の仲介として機能させ、その後データがいつＮＡＮＤフラッシュメモリに書き込まれるべきかを独立して見極めることにより、ＮＡＮＤフラッシュメモリの制限に対処する。これは、ＳＳＤの動作速度及び寿命を顕著に向上させるとともに、ＳＤＤがハードディスクドライブに代わるプラグアンドプレイ式の代替物として用いられることを可能にする。
【０００８】
[0020]  演算装置におけるデータ利用は、一般に２つのカテゴリに分類される。すなわち、データの作成／操作中の大量利用と、それよりも遥かに少量の、機能しているプログラムとしてデータがアーカイブ又は記憶されるときの利用である。例示的なＳＳＤは、演算装置の過渡状態に関するデータを記憶するプロセスと、フラッシュに対する永久的な記憶能力とを分ける。
【０００９】
[0021]  演算装置がパワーダウンされると、演算装置の揮発性メモリにより記憶されたデータは失われる。後述のＳＳＤは、データがプログラム又はデータファイルの開発中に記憶されることを可能にするとともに演算装置のパワーダウン時のデータ損失に対する保護を行うことによって、データファイルの作成を容易にする。
【００１０】
[0022]  ＳＳＤは、最適な数のフラッシュメモリ装置を管理するいくつかのフラッシュインタフェースコントローラを含む。ＵＳＢ２デバイスのような単純なシステムにおいては、１つの中間コントローラを用いてフラッシュを直接管理することができる。しかしながら、高速システムにおいては、いくつかのコントローラを並列で動作させて、はるかに迅速にデータを管理することが可能である。後述する原理は、ＳＡＴＡ３（毎秒５００メガバイト）などの幅広い種類のバス及びデバイス技術、ＵＳＢ３．０ソリッドステートドライブなどのＵＳＢ３．０「超高速」装置及び記憶装置にも適用可能である。ＵＳＢ３．０仕様書は、最大で毎秒４．８ギガビットの転送レート、増大された最大バスパワー及びより効率的な電力管理を規定している。
【００１１】
[0023]  以下の記述においては、説明の目的で、本システム及び方法の完全な理解をもたらすために多数の特定の詳細が記載されている。しかしながら、当業者には、本装置、システム及び方法がこれらの特定の詳細なしに実施されてもよいことが自明であろう。本明細書において「例」又は類似の文言を参照する場合には、その例に関連して記載されている特定の特徴、構造又は特性が、少なくともその１つの例には含まれるが必ずしも他の例には含まれないことを意味する。
【００１２】
[0024]  下記のいくつかの事例では、少なくとも１つのマイクロプロセッサ、リードオンリーメモリ（ＲＯＭ）及びランダムアクセスメモリ（ＲＡＭ）を備えたコントローラが説明される。これらのマイクロプロセッサ、ＲＯＭ及びＲＡＭは、協働してコントローラの機能を実行する。本明細書に記載の原理を実行するためには、異なる制御及び／又はハードウェア実装を備えた異なるマイクロプロセッサが用いられてもよい。
【００１３】
[0025]  図１は、論理フラッシュ及び不揮発性フラッシュメモリを備えたソリッドステートドライブの一実装形態を示す。論理フラッシュは、独立コントローラと揮発性メモリの１セグメントとを含む。論理フラッシュは、実際には論理フラッシュへの読み出し及び書き込みを行っているときにフラッシュへの読み出し及び書き込みを行っていると中央処理装置（ＣＰＵ）が考えるように、フラッシュコントローラのすべての機能を実行するよう構成されている。論理フラッシュは、フラッシュメモリの挙動を実行するが、フラッシュメモリの寿命、速度、アドレス指定という制限は有さない。論理フラッシュは、フラッシュメモリと同じようにファイルを記憶し、フラッシュコマンドに応答する。また、論理フラッシュは、ＦＡＴテーブルを使用し、論理レコードを更新し、ファイルを結合し、ＳＡＴＡ３バスに取り付けられる。論理フラッシュの揮発性メモリは事実上無限数の書き込み／読み出しサイクルを有するため、システムプロセッサ及びオペレーティングシステムは所望の限り多くの更新及びスナップショットを記憶できる。また、論理フラッシュはデータの読み出し及び書き込みの両方において極めて速い。ＣＰＵは専ら論理フラッシュからの読み出し及び論理フラッシュへの書き込みを行い、その一方でフラッシュメモリへの書き込み及び読み出しはソリッドステートドライブのみによって制御される。論理フラッシュの使用により、すべてのフラッシュコマンドが最大インタフェース速度で処理可能となるとともに、フラッシュメモリへの書き込みが最小化される。これはキャッシングとは異なる。なぜなら、キャッシングは結局のところ、すべてをフラッシュメモリに書き込み、加速と短い読み出し及び書き込みの処理とのためだけに実行されるものであるためである。
【００１４】
[0026]  ＳＳＤ内のマスタコントローラは、データがいつフラッシュメモリへ／から転送されるべきかを独立して判断する。これによりフラッシュメモリの書き込み／消去サイクルが著しく少なくなる。なぜなら、ＣＰＵがフラッシュメモリに直接アクセスしないためである。
【００１５】
[0027]  フラッシュメモリは多数のフラッシュメモリモジュールを備えている。各フラッシュメモリモジュールは、独立コントローラと、多数のフラッシュダイとを含む。独立コントローラを用いることにより、ＳＳＤは複数の動作を並列で実行することができる。その結果、読み出し及び書き込み時間が顕著に速くなる。
【００１６】
[0028]  以降の段落では、論理フラッシュ及び複数のコントローラを内蔵するＳＳＤを作成するための種々の原理を説明する。ＳＳＤは、現在のところ、ギガバイト当たりがハードディスクドライブよりも高価な記憶装置である。これは主に、ＳＳＤにデータを記憶するために用いられる不揮発性メモリダイ（die）のコストに起因する。メモリダイは、強誘電体ランダムアクセスメモリ（ＦｅＲＡＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、プログラマブル金属化セル（ＰＭＣ）、相変化メモリ（ＰＣＭ）及び他の技術など、他の種類のメモリが提案されてはいるものの、一般的にはフラッシュメモリである。これらの種類の不揮発性メモリには、各々長所と短所とがある。しかしながら、フラッシュメモリが最も成熟した技術であり、記憶容量の単位当たりのコストが最も低い。フラッシュメモリには２つの主な種類、ＮＯＲ型及びＮＡＮＤ型がある。ＮＯＲフラッシュ及びＮＡＮＤフラッシュはいずれも、フローティングゲートトランジスタでできたメモリセルにデータを記憶する。これらのフローティングゲートトランジスタは、摩耗が始まり記憶装置の完全性が劣化するまでのプログラム・消去サイクル数が有限である。例えば、ＮＯＲフラッシュメモリが有する典型的な耐久定格は１００，０００サイクル、ＮＡＮＤフラッシュメモリが有する典型的な耐久定格は１，０００乃至３０００サイクルであり得る。
【００１７】
[0029]  ＮＯＲ型フラッシュメモリによれば、１バイトが独立して書き込み及び／又は読み出しされることが可能となる。しかしながら、このランダムアクセス特性は、ＮＯＲメモリの単位面積当たりをより低密度にするとともに、記憶装置の単位当たりをより高価にする。ＮＡＮＤ型フラッシュは非常に高密度であり、それに対応して記憶装置の単位当たりがより低コストである。しかしながら、現在のチップアーキテクチャにおいては、ＮＡＮＤ型フラッシュはブロックと称されるより大きなセグメントで読み出し、及びプログラムされなければならない。こうした制限は、あるブロック内の１ビットの変更がブロック内の書き込まれたスペース全体の消去及び書き換えを必要とするため、深刻である。説明の目的で、ソリッドステートドライブアーキテクチャの例示的な例においてはＮＡＮＤ型フラッシュを用いることとする。しかしながら、本明細書に記載の原理は、幅広い不揮発性メモリの種類に適用可能である。
【００１８】
[0030]  上述のように、ＮＡＮＤ型フラッシュは安価で小型であるが、摩耗が始まり記憶装置の完全性が劣化するまでのプログラム・消去サイクル数が有限であるという短所を有する。この難問は、ＮＡＮＤ型フラッシュがビットレベルで読み出し可能であるのに対し、ＮＡＮＤ型フラッシュはビットレベルではなくより大きなセグメント（「ブロック」）で書き込み及び消去されなければならないという事実によって悪化する。したがって、ブロック内のいずれかのビットが変化すると、そのブロック内のすべてのデータが新たなブロックへとコピーされなければならない。コピーのプロセスの際に、新たなビットは、新たなブロックに記憶されたデータに組み込まれる。その後、古いブロックは消去されて再び用いられる。多くの演算装置上のプログラム及びオペレーティングシステムは頻繁にハードドライブへの読み出し及び書き込みを行うもので、これはＮＡＮＤフラッシュの急速な劣化に繋がり得る。こうした業界標準の動作においては、ブロック内のたとえ１ビットを変更しても、ブロック全体のコピー及び消去が必要となる。以下の検討においては、いっぱいになるまでブロックを保留し、既に書き込まれたページを更新するだけの原理を説明する。
【００１９】
[0031]  いくつかのＡｐｐｌｅ（登録商標）のオペレーティングシステムでは、ユーザがマシンを以前の状態に修復できるようにするために、ユーザのファイルがハードドライブに連続的に書き込まれる。システムが最新の状態に復元するだけでなく、「タイムマシン」と呼ばれるプログラムがあり、これが、システムが数か月前の任意の過去の状態に修復されることを可能にする。このプログラムはスナップショットを圧縮し、ある日までの復元を可能にするが、その日の任意の時間までとはいかない。けれども、スナップショットが維持され得るため、過去数日間の特定の時点までの復元が可能である。このタイムマシン特性は、誤処理されたり、喪失したファイルを復元したりするには非常に有用であり得る。誤りが発生したよりも前の時刻に復元することで、ファイル及びシステム状態の完全な復元が可能になる。
【００２０】
[0032]  これら及び他の頻繁な書き込み動作は、限られた量の書き込み／消去サイクルがすぐに超過されてしまうため、フラッシュメモリの早期の故障を招き得る。新しい書き込みの度に、新しいデータを追加するために古いデータを新しいブロックにコピーする必要がある。上述のように、ＮＡＮＤメモリの各メモリ位置が実質的に故障の尤度を上げることなく更新され得るのは、たったの約１，０００乃至３，０００回である。メモリへのスペアのオーバープロビジョニングや、摩耗を同じブロックに集中させるのではなくフラッシュメモリ全体にわたって均等に分散しようとするウェアレベリングアルゴリズムなど、この問題を克服しようとする多くのアルゴリズムが存在する。しかしながら、これらの技術は、コストを増大させ、ソリッドステートドライブの性能を低下させるおそれがある。
【００２１】
[0033]  下記の例は様々なソリッドステートドライブ（ＳＳＤ）アーキテクチャ、方法及び原理を説明する。これらのＳＳＤは、不揮発性記憶装置としてフラッシュメモリを内蔵しており、従来のＳＳＤよりも１桁長い寿命を有するとともに、フラッシュメモリの制限にもかかわらず最大バス速度で動作するよう設計されている。
【００２２】
例示的なフラッシュメモリモジュール
[0034]  図２は例示的なフラッシュメモリモジュールの図である。上述のように、フラッシュメモリは、電気的に消去され再プログラムされることの可能な不揮発性コンピュータ記憶装置である。上述のように、フラッシュメモリは、機械的衝撃に対する高い耐性と、小さな設置面積と、ダイナミックランダムアクセスメモリ（ＲＡＭ）に匹敵する比較的速い読み出し時間とを有し、エネルギ効率が高く、電力を用いずにデータを何年も記憶することができる。フラッシュメモリは、パーソナルコンピュータ、モバイル機器、デジタルカメラ、ビデオゲーム、科学装置、産業ロボット、電子医療機器及び他のデバイスなど、種々の用途で用いられる。フラッシュメモリには、遅い書き込み時間や限られた寿命など、いくつかの制限がある。フラッシュメモリに関しては、書き込み時間が一般的に読み出し時間よりも１桁大きい。様々な種類のフラッシュメモリの寿命は、典型的には１０００乃至３０００消去サイクルの範囲に及ぶ。フラッシュメモリの消去は逐次増加する損傷を引き起こし、これが最終的にはフラッシュメモリのメモリ機構の故障に繋がる。
【００２３】
[0035]  図２に示す例示的なフラッシュメモリモジュールは多数のＮＡＮＤフラッシュダイを備える。メモリコントローラはプロセッサと、少量のランダムアクセスメモリ（ＲＡＭ）と、少量のリードオンリーメモリ（ＲＯＭ）と、多数のメモリバッファとを備える。このメモリコントローラの例は、チャールズ・Ｉ・ぺドルの「高速ＵＳＢコントローラ」と題された米国特許出願第６１／７７４，１７５号；代理人整理番号０３４９０１−３０３８９１に挙げられている。同文献は上記参照によりその全体が本明細書に組み込まれる。例えば、メモリコントローラは、２０キロバイトのプロセッサによるアドレス指定可能なＲＡＭと、オペレーティングコードを記憶するための４０キロバイトのＲＯＭと、８つのメモリバッファとを有する６５０２プロセッサに基づいていてもよい。メモリコントローラは、外部バスからのデータを受け付け、そのデータをバッファに蓄積し、そのデータをＮＡＮＤフラッシュダイに書き込む。外部バスはＵＳＢバス又は高速内部バスであってもよい。
【００２４】
[0036]  メモリコントローラは、高速ダイレクトメモリアクセス（ＤＭＡ）及びフラッシュＤＭＡも備える。一般に、ＤＭＡプロトコルは、データ転送中にメモリアドレスを自動的に漸次インクリメントするアドレスカウンタを含む。ＤＭＡプロトコルは、転送されたバイト数の変化を記録するカウンタも含む。ＤＭＡ転送を開始するためには２つのコマンド、開始するメモリ位置と、何バイトを転送するのかをＤＭＡに通知するカウントとが与えられる。ＤＭＡは、指定されたメモリ位置から始めてカウントが尽きるまで、データを独立して転送する。ＤＭＡプロトコルの目的は、メモリクロック及びイネーブル以外の外部入力を要さずに、メモリへ及びメモリからの最大速度での転送を可能にすることである。これにより、マイクロプロセッサがデータ転送に直接携わる必要が完全になくなる。このことは、より高い転送速度を可能にする。なぜなら、データ転送が、マイクロプロセッサ速度によって制限されたり、ＭＰＵが異なるタスクにリダイレクトされるときに中断されたりしないためである。
【００２５】
[0037]  本願においては、異なる機能性を有する２つの独立したＤＭＡが存在している。高速ＤＭＡ（「バスＤＭＡ」）は高速バスからメモリバッファ群へのデータの転送を制御し、フラッシュＤＭＡはデータをフラッシュへ及びフラッシュから転送する。一実施形態においては、高速バスからメモリバッファへのデータ転送は最も優先度の高いプロセスであり、割り込み駆動される。フラッシュへ又はフラッシュからのデータ移動はポーリングにより行われる。これは、このプロセスがわずかな妨害により中断され得るためである。また、ポーリングは、フラッシュメモリへのタイミング信号に対するポジティブ制御（positive control）を生成する。
【００２６】
[0038]  ２つの別々のＤＭＡモジュール（高速ＤＭＡモジュール及びフラッシュＤＭＡモジュール）の使用はいくつかの利点を提供する。第一に、２つの別々のＤＭＡモジュールを備えることによって、データが同時にメモリバッファに書き込まれ得るとともにメモリバッファから読み出され得る。また、別々のＤＭＡモジュールは別々に動作可能であるとともに別々に制御可能であり、データ転送を容易にする。例えば、高速ＤＭＡは、フラッシュＤＭＡが異なるメモリバッファからより低速でデータを読み出している間に、高速クロックで動作してデータを１つのメモリバッファに書き込んでいてもよい。対照的に、フラッシュＤＭＡは、フラッシュクロックで動作するとともに、ポーリングによって操作されてもよい。さらに、フラッシュメモリモジュールは、誤り訂正符号（ＥＣＣ）を生成し、記憶し、使用して、書き込み及び／又は記憶不良に起因する有限数のエラーを有するデータを自動的に復元する。高速バスで受信されたデータに加え、フラッシュメモリモジュールは、摩耗回数、論理レコード番号、更新回数、及び他のデータなどの追加的な情報もフラッシュメモリに書き込む。このプロセスを以下に詳述する。レジスタは様々なクロックレートで作動可能であり、様々な機能の間で切り替えられる。
【００２７】
[0039]  上述の構造及びアーキテクチャはフラッシュメモリ装置の一例に過ぎない。種々の他の構造が用いられ得る。例えば、より大きなメモリバッファ、より大きなセクタサイズ、より多くのメモリバッファ、異なる数のメモリバッファ及び異なる数のフラッシュダイがアーキテクチャに含まれ得る。
【００２８】
例示的なソリッドステートドライブアーキテクチャ
[0040]  図３は、図２に関して上述したもののような多数のフラッシュメモリモジュールを内蔵するＳＳＤアーキテクチャの例示的な例を示す。ＳＳＤアーキテクチャはＳＡＴＡデータレートを維持するとともにＮＡＮＤフラッシュメモリの寿命の制限を軽減することができる。本例においては、ＳＳＤ外部の中央処理装置（ＣＰＵ）は、ＳＡＴＡバスに接続されている。ＳＳＤドライブはデータ入力を受け付け、コマンドを出し、ＳＡＴＡバスを介してデータを出力する。この出力データは、当初はＤＲＡＭ論理フラッシュに記憶される。ＤＲＡＭ論理フラッシュは、ＤＲＡＭコントローラと、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）の大群とを含む。ＤＲＡＭ論理フラッシュは高速内部バスに接続されている。高速内部バスは、ＤＲＡＭ論理フラッシュとの接続に加え、フラッシュメモリ装置群と、マスタコントローラとに接続されている。実施形態によっては、高速内部バスの動作を制御する別個のバスコントローラがあってもよい。代替的には、マスタコントローラがバスコントローラの機能を実行するように、マスタコントローラ及びバスコントローラの機能性が結合されてもよい。高速内部バスはこれらのエンティティのいずれの間でも双方向通信を可能にする。バスコントローラ（又はバスコントローラとしての機能を果たすマスタコントローラ）はデータを受信又は転送する装置を独立して選択する。これにより、各装置につき個別に（及びいくつかの例においては連続的に）データフローが制御されることが可能になる。例えば、ＤＲＡＭコントローラは、バスコントローラがデータをＤＲＡＭからフラッシュメモリ装置へと転送している間に、ＳＡＴＡバスからのデータを受け付けることができる。こうした同時動作により、より効率的な動作及びより高い全体のスループットが可能になる。フラッシュ動作には時間的な変動があり得るため、データの最後の同期は、高速バスを管理し論理フラッシュコントローラと協調するマスタ／バスコントローラによって行われる。このようなバランスを調整するアプローチは、ＳＡＴＡインタフェース又は他のインタフェースがＳＳＤへの読み出し又は書き込み時に最大バス速度で作動することを可能にする。
【００２９】
コントローラ
[0041]  ＳＳＤアーキテクチャは多数のコントローラを用いて内部データフローを管理する。マスタコントローラは演算装置の中央処理装置から命令を受信し、その命令を実行するようソリッドステートフラッシュドライブの動作を管理する。マスタコントローラは、バス、各フラッシュメモリ装置のフラッシュメモリコントローラ、及び論理フラッシュコントローラの動作を指揮する。一実装形態においては、これらのコントローラの各々は、既に述べたように、単純なマイクロプロセッサシステムである。例示的な一例によれば、コントローラ（マスタコントローラ及び任意的なバスコントローラ、ＤＲＡＭコントローラ、８つのフラッシュコントローラ）の各々は、独自のマイクロプロセッサ、コードを記憶するためのＲＯＭ、ＲＡＭ、及びレジスタ群を備えた完全に独立したシステムである。例えば、コントローラは、３２キロバイトのＲＡＭ及び２４キロバイトのＲＯＭと組み合わせた６５０２プロセッサに基づいていてもよい。論理フラッシュコントローラは、ＤＭＡ転送を制御し論理フラッシュコントローラとインタフェースをとることによって、ＤＲＡＭへの及びＤＲＡＭからのデータ転送を管理する。論理フラッシュコントローラはマスタコントローラの指揮に基づいてＤＲＡＭ論理フラッシュを管理する。マスタコントローラはＤＲＡＭとフラッシュメモリとの間でのデータの転送を管理する。個々のフラッシュコントローラはフラッシュメモリのページモード構造、誤り訂正、及びウェアレベリングを扱う。各フラッシュメモリ装置内のメモリコントローラは高速内部バスとＮＡＮＤフラッシュダイとの間でのデータの転送を管理する。
【００３０】
[0042]  複数の内部コントローラの使用は多数の利点をもたらす。コントローラは、他のコントローラと柔軟に協調しながら、自身が制御している装置に特に適合された専用の機能を実行することができる。例えば、メモリコントローラは、第１のクロック速度では高速バスとインタフェースをとり、異なるクロック速度ではＮＡＮＤフラッシュダイに書き込まれているデータを管理してもよい。また、メモリコントローラは、タスクを完了したときには、マスタコントローラに合図してもよい。これにより、マスタコントローラは、データ転送レートが最大となるように資源をインテリジェントに分配することができる。
【００３１】
ダイレクトメモリアクセスインタフェース
[0043]  ダイレクトメモリアクセス（ＤＭＡ）インタフェースは、バスに接続された各コントローラについてデータの転送を管理する。上述のように、ＤＭＡはハードウェア実装されたプロトコルであり、コンピュータ内のハードウェアサブシステムがコントローラとは無関係にシステムメモリにアクセスすることを可能にする。コントローラは、転送を開始し、転送の進行中には他の作業を行い、転送が完了するとＤＭＡコントローラからフィードバックを受信することができる。例えば、ＳＡＴＡ  ＤＭＡはＳＡＴＡバスからＤＲＡＭ論理フラッシュへのデータの転送を処理する。バスＤＭＡはＤＲＡＭ論理フラッシュと高速内部バスとの間でのデータの転送を処理する。同様に、高速内部バスとフラッシュメモリ装置の各々との間のＤＭＡインタフェースは、フラッシュメモリ装置へ及びフラッシュメモリ装置からのデータ転送を管理する。
【００３２】
[0044]  ＤＭＡ技術を用いることで、フラッシュの書き込みと、インタフェースへ／からのデータの転送との両方の速度が維持される。上述のように、ＤＭＡプロトコルはデータ転送中にメモリアドレスを自動的に漸次インクリメントするアドレスカウンタを含む。ＤＭＡプロトコルの目的は、メモリクロック及びイネーブル以外の外部入力なしにインタフェースを介した全速での転送を可能にすることである。これにより、マイクロプロセッサがデータ転送に直接携わる必要が完全になくなるとともに、より高い転送速度が可能になる。なぜなら、データ転送が、制御プロセッサにより制限されたり、制御プロセッサが異なるタスクにリダイレクトされるときに中断されたりしないためである。
【００３３】
[0045]  ＤＭＡ転送を開始するために、制御プロセッサが制御レジスタにアドレス、ＤＭＡ動作の回数のカウント、及び他のイネーブリング機能をロードしてもよい。すると、データ転送は制御レジスタのパラメータの機能として発生する。ＤＭＡは、転送中に誤り訂正データ、論理レコード、及びハウスキーピング機能などの他のデータが追加されてもよいように設定され得る。ＤＭＡプロトコルは種々の応答をトリガしてデータ転送が完了したことを制御プロセッサに合図するか、あるいはステータスアップデートを提供することができる。これにより、ＤＭＡ転送が完了するとすぐにデータがアクセス可能となる。また、割り込みを使用してデータ転送の状態を合図することにより、ＳＳＤ内の複数のメモリ記憶コンポーネント間でのデータのポーリング式の並列分散が可能となる。
【００３４】
ＤＲＡＭ論理フラッシュ
[0046]  ＤＲＡＭ論理フラッシュ内のＤＲＡＭはコンデンサの配列を利用してデータを記憶する。コンデンサは充電状態又は放電状態のいずれかであり得る。これらの２つの状態はビットの２つの値を表す。コンデンサは電荷をリークするので、コンデンサの状態は、コンデンサの電荷が定期的にリフレッシュされない限り、ゆくゆくはフェードする。このリフレッシュは、約１０乃至１００ミリ秒間隔で発生する。ＤＲＡＭは非常に単純で、書き込み／読み出しサイクル摩耗は無視できる程度であり、ダイ上に非常に密にパックされ（packed）得る。また、ＤＲＡＭは極めて速い書き込み及び読み出し時間を提供する（約１０乃至１００ナノ秒）。ＤＲＡＭの動作はＤＲＡＭコントローラにより制御される。本例においては、ＤＲＡＭは、総容量８ギガバイトのダブルデータレート型３シンクロナスダイナミックランダムアクセスメモリ（ＤＤＲ３  ＳＤＲＡＭ）を有する。他の実装形態においては、ＤＲＡＭはより大きい（例えば１６ＧＢ：ギガバイト）又はより小さいメモリ容量を有していてもよい。電力管理については、ＤＲＡＭは８００メガヘルツのクロック速度で動作することができる。しかしながら、設計には任意の適切なクロック速度及びＤＲＡＭ容量が含まれ得る。ＤＲＡＭ論理フラッシュは、フラッシュと同じようにファイルを記憶し、フラッシュコマンドに応答する。また、ＤＲＡＭ論理フラッシュは、ファイル割り当てテーブルを使用し、論理レコードを更新し、ファイルを結合し、ＳＡＴＡバスに取り付けられる。
【００３５】
[0047]  ＤＲＡＭ論理フラッシュは、多くの理由により、キャッシュではない。例えば、キャッシュはＣＰＵがデータを探すための代替的な場所である。ＣＰＵは、データがキャッシュになければ、基礎をなす不揮発性メモリにアクセスする。対照的に、ＤＲＡＭ論理フラッシュは、ＣＰＵに直接アクセス可能なＳＳＤ内の唯一のメモリである。実際のＮＡＮＤフラッシュはマスタコントローラの制御下にあり、ＣＰＵに直接アクセス可能ではない。ＤＲＡＭ論理フラッシュはＣＰＵとＮＡＮＤフラッシュとの間のゲートキーパとして機能する。ＮＡＮＤフラッシュをＣＰＵ命令から分離することにより、ＮＡＮＤフラッシュは、頻繁な書き込みなど、オペレーティングシステムの多数の特殊性にさらされない。これにより、オペレーティングシステムは、ＮＡＮＤフラッシュの寿命を保護しながら、修正なしに作動することができる。
【００３６】
[0048]  データ及びファイルは、削除されるか又は何の活動も観察されなくなるまで、ＤＲＡＭ論理フラッシュのみに記憶される。一般に、ＤＲＡＭ論理フラッシュ内のデータは、データのユーザ制御のために論理レコードに基づいて編成され、様々なデータ記録の動作を制御するべくＦＡＴテーブルにより参照される。しかし、場合によっては、ＤＲＡＭ論理フラッシュは論理レコードを用いることなくデータを受信、記憶及び転送し得る。例えば、後述のスナップショット及びファストロード手順は論理レコードを用いない。しかしながら、ＤＲＡＭ論理フラッシュからフラッシュメモリへのデータの移動のすべてのデータ転送モードは、マスタコントローラのみによって支配される。マスタコントローラは、データ又はファイルがいつＤＲＡＭ論理フラッシュから出されるのかについての決定を、ファイルの不使用など、多数の要素に基づいて下し得る。マスタコントローラにより受信されたＣＰＵコマンドは、データをフラッシュへ／から移動させるマスタコントローラにいくらかの影響を有するかもしれないが、データの取得又は書き込みついて実際に決定を下すのはマスタコントローラである。例えば、ＣＰＵがデータファイルを要求すると、マスタコントローラが、そのファイルがＤＲＡＭ論理フラッシュ内にあるかどうかを判断する。要求されたデータがＤＲＡＭ論理フラッシュ内にない場合には、マスタコントローラがそのデータをフラッシュから取得してＤＲＡＭ論理フラッシュに記憶する。
【００３７】
[0049]  場合によっては、ファイル及び／又はデータは、ＤＲＡＭ論理フラッシュ上にのみ記憶されてフラッシュメモリに転送されなくてもよい。例えば、過渡動作（検索など）用の一時データファイルが作成されてもよい。他の例においては、別のシステムに送信され又は遠隔システムにより記憶される手紙又は電子メール用のファイルが作成されてもよい。そのファイルは、遠隔システムに送信されると削除されてもよい。
【００３８】
[0050]  キャッシュは、ＣＰＵには、キャッシュ内に実際に存在している物理メモリと全く同じ容量を有するように見える。それに対し、ＤＲＡＭ論理フラッシュは、ＤＲＡＭ論理フラッシュを構成するメモリの物理容量よりもはるかに大きい容量を有するように見える。ＤＲＡＭ論理フラッシュは、ＮＡＮＤフラッシュの作業用不揮発性メモリの合計に等しい容量を有するように見える。
【００３９】
[0051]  キャッシュは、ＣＰＵには、揮発性メモリであるように見える。対照的に、ＤＲＡＭ論理フラッシュは、極めて速い不揮発性メモリであるように見える。ＣＰＵがデータをキャッシュに書き込むとき、ＣＰＵはデータが実際には不揮発性記憶装置内にあるとは思わない。ＣＰＵは、データが実際にキャッシュに従った不揮発性記憶装置に記憶されるまで、データフローを管理し続ける。キャッシュへの電力が予期せず喪失すると、キャッシュ内のデータは失われ、ＣＰＵはそれを用いずに復元しなければならない。すべてのキャッシュトランザクションは、フェイルするか、又はシステムの摩耗及び遅延を増大させる不揮発性フラッシュメモリに書き込まれる。
【００４０】
[0052]  一方、ＣＰＵ及びオペレーティングシステムは、ＤＲＡＭ論理フラッシュが不揮発性メモリ記憶装置であると考える。ＤＲＡＭ論理フラッシュは、書き込まれたデータが、実際にはＤＲＡＭ論理フラッシュに記憶されていても、不揮発性フラッシュメモリに記憶されていると報告する。ＳＳＤへの電力が喪失すると、ＣＰＵは、ＤＲＡＭ論理フラッシュに記憶されたデータは不揮発性メモリに記憶されているのだと正しく考える。ＳＳＤはＤＲＡＭ論理フラッシュ内のデータをＮＡＮＤフラッシュにダンプする内蔵式で電源内蔵型のシステムを有するので、これは正しい。一実装形態においては、ＮＡＮＤフラッシュは、ＤＲＡＭ論理フラッシュに記憶できるすべてのデータのデータダンプを収容するためのスペアを追加で設けて構成される。
【００４１】
[0053]  キャッシュは、低速のメモリに記憶されたデータへのアクセスタイムを最小化するよう設計される。典型的なキャッシュ動作では、キャッシュは不揮発性記憶装置にできる限り迅速にデータを書き込むが、アクセスタイムを最小化するために、書き込まれたデータを保持し続ける。それに対して、ＤＲＡＭ論理フラッシュは、基礎をなすメモリへの書き込みを最小化するよう設計される。ＳＳＤのマスタコントローラは、ＤＲＡＭ論理フラッシュからフラッシュメモリへの転送に用いられていないデータのみを標的にする。
【００４２】
高速内部バス
[0054]  上述のように、高速内部バスは、バスと接続されたこれらのコンポーネントのいずれとの間でも双方向通信可能である。一例においては、マスタコントローラは、高速内部バスを介して、データを個々にメモリコントローラに向ける。フラッシュへの書き込み転送を実行するために、論理フラッシュコントローラ／インタフェースはＤＲＡＭ論理フラッシュを高速内部バスに接続し、ＤＲＡＭ  ＤＭＡを用いて指定されたファイルの場所への転送を行う。この技術を利用して、データは、ＣＰＵからＤＲＡＭ論理フラッシュを通じてフラッシュメモリへと直接転送され得る。例えば、高速内部バスは８ビット幅で、少なくとも毎秒４００メガバイト（ＭＢ）の速度で動作可能であってもよい。４００メガヘルツで（又はそれを上回って）動作する８ビットバスを介するデータ転送レートは、毎秒約４００メガバイトであろう。
【００４３】
フラッシュメモリ装置
[0055]  図２に関して上述したように、各フラッシュメモリ装置はメモリコントローラと、フラッシュメモリを構成する多数のＮＡＮＤフラッシュダイとを含む。フラッシュメモリはセクタ、ページ、ブロック、及びプレーンに分けられる。本例においては、セクタは約５１２バイトで、ヘッダ及び誤り訂正符号（ＥＣＣ）情報のための追加空間を備えている。他の実装形態においては、セクタはもっと大きくてもよい。ページはセクタの集合であり、ブロックはページの集合であり、プレーンはページを収集したものである。一例においては、ページは、データ用の８１９２バイトと、ヘッダ情報用の追加空間とを含む。ブロックは２５６ページの集合であってもよく、プレーンは２０９６ブロックの集合である。装置は任意の数のプレーンを含み得る。例えば、３２ギガバイトの装置は２プレーン又は８，１９２ブロックを含み得る。２５６ギガバイトの装置は１６プレーン又は６５，５３６ブロックを含み得る。一般的に、あるセクタにおいて復元不可能又は修理不可能なフラッシュデータエラーが発生すると、ブロック全体が不良であるとしてマークされる。しかしながら、ページモードコントローラを用いれば、問題となっているページのみが不良であるとしてマークされ、マップされる。これは、チャールズ・Ｉ・ペドルの米国特許第８，１２２，３１９号にさらに説明されている。同文献は参照によりその全体が本明細書に組み込まれる。
【００４４】
[0056]  上述のように、従来、ブロック内の１つのページの１つのビットが動作不能である場合には、フラッシュメモリのブロック全体が使用不能であると考えられている。したがって、１つの不良ビットはフラッシュメモリの記憶容量を１２８ＫＢ以上減少させ得る。多くのブロックに複数の不良ビットが分散されていると、フラッシュメモリは容量基準を満たすことができず、破棄され得る。しかしながら、多くの完全に機能しているページはフェイルが発生したブロックに留まる。以下に示すように、動作不能なブロックではなく動作不能なページを識別することによって、フラッシュメモリの記憶容量の大部分は再利用され得る。
【００４５】
[0057]  フラッシュメモリにアクセスするためには様々なコマンドが用いられる。例えば、フラッシュメモリへの読み出し及び書き込みコマンドが単一のページ上で動作してもよい。しかしながら、消去コマンドはブロック全体に影響を及ぼす。ブロック消去動作は例外として、ほとんどすべての動作は単一のページ上で行われる。ブロック内のページは、一旦消去されると、動作不能なページを回避するように選択的に書き込まれてもよい。
【００４６】
[0058]  フラッシュメモリ自体はブロック内の動作可能なページのみを選択する論理を含まなくてもよいが、メモリコントローラは、動作可能なページのみを識別し、選択し、ページで動作するよう構成されていてもよい。メモリコントローラは、フラッシュメモリとは別個の異なる半導体チップとして実装されてもよい。メモリコントローラは、フラッシュメモリへ及びフラッシュメモリからのデータの転送を調整する。メモリコントローラは、外部装置からの要求を、適切なコマンド及びメモリアドレスを１つ以上のフラッシュデバイスに送信することによって処理する。一実施形態によれば、メモリコントローラは、チップ選択、ブロック選択、列選択、及び行選択信号を生成して１つ以上のフラッシュメモリに転送してもよい。また、メモリコントローラは、制御信号、ステータス信号、タイミング制約、及びフラッシュメモリ装置へ及びフラッシュメモリ装置からのデータ転送の他の態様を監視してもよい。
【００４７】
[0059]  メモリコントローラは外部システムからの仮想メモリアドレス（論理レコードなど）を１つ以上のフラッシュメモリ装置上の物理アドレスに変換してもよい。メモリコントローラは、プロセッサから特定のデータを要求するクエリを受信し得る。メモリコントローラは、それに応じて、１つ以上のフラッシュメモリ装置において要求されたデータが物理的に記憶される、対応するブロック、ページ、及びバイトを判断してもよい。メモリコントローラはそれからフラッシュメモリ装置に向けて正しい順序の制御信号及びメモリアドレス値を発し、要求されたデータを取得してもよい。
【００４８】
[0060]  同様に、メモリコントローラは、書き込み要求を適切な順序のブロック消去、アドレス選択、及び書き込みコマンドに変換して、データをフラッシュメモリ装置上に記憶してもよい。実際には、メモリコントローラは、フラッシュメモリ装置とのページモードインタフェースの複雑さを隠しながら、様々なシステム及びコンポーネントがフラッシュメモリ装置の記憶装置にアクセスできるようにしてもよい。例えば、フラッシュメモリ装置に先に書き込まれたデータが更新されると、古いデータは新しいデータと同様に新しいブロックに書き込まれ、古いブロックは消去される。メモリコントローラは正しい順序で動作を発生及び実行して記憶動作を行ってもよい。また、メモリコントローラは、どのブロックが動作を完了するのに十分な数の動作可能なページを含んでいるのかを識別してもよい。データが転送元ブロックから転送先ブロックへと転送される場合には、転送先ブロックは、転送元ブロックと少なくとも同じ記憶容量を含むように選択されるが、転送先ブロックは依然として１つ以上の動作不能なページ又はセクタを含み得る。
【００４９】
[0061]  各ブロック内の動作可能なページの数を追跡するために、メモリコントローラは「優良ページ」テーブル、「不良ページ」テーブル、メモリの各ページについて「優良」又は「不良」指定を有するテーブル、又は他のインジケータを構築してもよい。「不良ブロック」テーブルは、動作不能なページを識別し、ひいては間接的に動作可能なページを識別してもよい。すると、メモリコントローラ又は他の要素は、動作不能であると見なされたページを除きいずれのページにも読み出し及び書き込みを行うよう構成されてもよい。動作不能なページの表示は、１つ以上の参照、ポインタ、アドレス、テーブル、リスト、セット、識別子、ラベル、標示、トークン、コード、又は方程式、あるいは動作可能なページを識別可能にする他の情報を含み得る。
【００５０】
[0062]  一実施形態においては、動作可能なページのテーブルは、フラッシュメモリの指定された単数又は複数のブロックに記憶されてもよい。例えば、表示が不完全、判読不能、欠如、又は損傷している場合には、メモリコントローラによるフラッシュメモリ装置全体の徹底的な検査が発生してもよい。この種の検査は、メモリコントローラ及び／又はフラッシュメモリ装置が初めて電源を投入された時に発生し得る。使用中にフェイルするページを検出するために、例えば誤り訂正符号（ＥＣＣ）モジュールによる追加的な検査が、フラッシュメモリ装置の動作中に実行されてもよい。フラッシュメモリ動作中に用いられる誤り検出方法は、チェックサムの生成、チェックサムの比較、冗長検査の実施、パリティ値の生成、パリティ検査の実施、他の誤り検出アルゴリズムの実行を含み得るが、これらに限定されない。ページ中に不具合が検出された場合には、ＥＣＣモジュールが、不具合が発生したこと又は進行中の動作が不成功であったことをフラッシュコントローラに警告してもよい。次いで、フラッシュコントローラは、新しいページで動作を繰り返すか、さもなければ誤りを訂正してもよい。ページに復元可能且つ繰り返し可能な誤りがある場合には、そのページは破棄される。すると、マスタコントローラが、これらのページをテーブル中で指定することによって除外するべく適切な対応をとる。この時点以後、不良ページは用いられない。
【００５１】
[0063]  １つ以上の表示が更新されると、内部動作及びデータ転送は完了され、フラッシュメモリ装置にアクセスするシステム及び最終的にはフラッシュメモリ装置の人間のユーザから不具合及び再設定を隠し得る。したがって、不具合はユーザの全体的なエクスペリエンスを妨害しないであろうし、外部システムによる補償を要さないであろう。一実施形態によれば、これは、初期化、検査、又は他の局面の間に確保され得るスペアのブロック、ページ、及び／又はセクタによって達成されてもよい。不具合が発生すると、不具合を起こしているブロック、ページ、及び／又はセクタのデータ及びアドレスは、スペアのブロック、ページ、及び／又はセクタによって置き換えられてもよい。そのとき、そのデータの新たな論理メモリアドレス及び物理メモリアドレスを反映するべく、１つ以上の表示が更新されてもよい。
【００５２】
[0064]  要約すれば、フラッシュメモリコントローラにおけるページベースの不具合の管理によって、メモリコントローラが「優良ページ」テーブル又はフラッシュメモリブロック内の各ページの機能性の他のインジケータにアクセスすることが可能になる。すると、メモリコントローラは、そのブロックが１つ以上の動作可能なページを含んでいる場合であっても、各ブロックの動作可能なページを利用して読み出し、書き込み、及び消去コマンドを実行することができる。ページモードの利用により、フラッシュメモリの寿命の大幅な延長が可能となる。さらに、ページモードの利用によって、より低い寿命定格及び／又はより多数のエラーを有するフラッシュメモリをもっと効率的に使用することが可能になる。誤りを有するこれらのフラッシュメモリチップは、破棄されるのではなく、上述のページモード不具合管理を実行する装置において効果的に使用されるとともに、延長された寿命を有することができる。
【００５３】
[0065]  メモリコントローラは、ＤＭＡプロトコルを用いて高速内部バスからのデータを受け付け、そのデータを内部バッファに蓄積し、そのデータをＮＡＮＤフラッシュダイに書き込む。各フラッシュメモリモジュールは、フラッシュダイへ及びフラッシュダイからの毎秒約４０メガバイトのデータ転送速度を提供するよう構成されている。これらの並列フラッシュメモリモジュールは、チャールズ・ぺドルの「高速ＵＳＢコントローラ」と題された米国特許出願第６１／７７４，１７５号；代理人整理番号０３４９０１−３０３８９１を含め、多数の構成を有し得るものである。同文献は参照によりその全体が本明細書に組み込まれる。例えば、並列の８つのフラッシュメモリモジュールがあってもよい。一実装形態においては、フラッシュドライブの各々は４つのフラッシュダイを含む。各フラッシュダイは８ギガバイトの記憶容量を含み、結果として２５６ギガバイトの合計フラッシュストレージが得られる。これらのドライブは並列で動作するよう構成されており、データ書き込みに関しては毎秒約３２０メガバイトの転送レートを提供する。フラッシュメモリからのデータの読み出しはフラッシュメモリへのデータの書き込みよりも顕著に速い。したがって、フラッシュメモリモジュールは、読み出し動作中にはそれに準じてより高いデータ転送レートを示し得る。
【００５４】
ＣＰＵメモリ、ＤＲＡＭ論理フラッシュ、及びフラッシュメモリの間でのデータの移動
[0066]  図４は、ＣＰＵメモリと、ＤＲＡＭ論理フラッシュと、フラッシュメモリとの間でのデータの転送に用いられる様々な方法の要旨を示す図である。データを転送するための各方法を、図面及び下記の説明において詳細に述べる。
【００５５】
[0067]  図４に示すシステムは、動作可能にＣＰＵメモリに接続されたＣＰＵを備える。図３に示すように、ＣＰＵ及びＣＰＵメモリはシステムバス（ＳＡＴＡバス）によってソリッドステートドライブ内のＤＲＡＭ論理フラッシュに接続されている。ＤＲＡＭ論理フラッシュは高速内部バスによってフラッシュメモリに接続されている。
【００５６】
[0068]  上述のように、ＤＲＡＭ論理フラッシュとフラッシュメモリとの間でのデータの移動は、マスタコントローラにより独立して管理される。マスタコントローラはＣＰＵから受信したコマンドに応答して機能してもよいが、ＣＰＵはフラッシュメモリへの転送については直接的な制御は有さず、これらの転送の発生を認識しない。
【００５７】
[0069]  システムはメモリ間での種々のデータ転送を実行して特定の目的を達成することができる。一般に、演算装置はファイルと呼ばれるデータ収集についてのコマンドを送信する。コマンドは至って単純である。すなわち、このファイルを読み出せ、ファイルを書き込め、あるいは既存のファイルを更新せよ、というものである。コマンドは、マスタコントローラにより解釈されるＳＡＴＡコマンドとしてＳＳＤに来る。外部バスからのデータは全速で論理フラッシュに流入され、論理フラッシュコントローラは関連するデータファイルの以前のバージョンを記憶するか又は置き換えるよう指示される。外部バスは、ＳＡＴＡバス、ＵＳＢバス、又は任意の他の適切なプロトコル又は技術であってもよい。演算装置がファイル又はファイルの一部を読み直したい場合には、初めに読み出しコマンドが論理コントローラに与えられ、論理コントローラは自身のメモリに記憶されているデータから所望のデータを取得するよう指示される。データは、ＤＲＡＭ論理フラッシュにない場合には、マスタコントローラの指揮のもとでフラッシュデバイスからＤＲＡＭ論理フラッシュに記憶され、その後高速で演算装置に転送される。このデータは更新及び再ロードされる可能性があるため、ＤＲＡＭ論理フラッシュにおいて維持される。
【００５８】
[0070]  図４は５つの異なるデータ転送技術の例示的な例を示す。第１の技術は論理レコードを用いたデータ転送であり、図５Ａ，５Ｂ，６Ａ及び６Ｂに詳細に説明されている。コントローラが物理レコードを扱う一方で、プロセッサは論理レコードを扱う。変換テーブルを用いて論理レコードと物理レコードとの間の関係が変換／インデックス化される。ＳＳＤのために用いられる変換テーブルは、ハードディスク記憶システムにおいて用いられる変換テーブルとは異なる。このデータ転送技術は、論理レコードを用いて、ＣＰＵにより指示される通りにＣＰＵメモリからＤＲＡＭ論理フラッシュの作業領域へとデータをインデックス化して記憶し、続いて、使用されていないデータファイルを、マスタコントローラの指揮の下でフラッシュメモリの作業領域に保存する。マスタコントローラは、ＣＰＵメモリによる直接取得のために、フラッシュメモリの作業領域からＤＲＡＭ論理フラッシュの作業領域へのデータの取得も指示する。
【００５９】
[0071]  第２のデータ転送技術はスナップショットフローであり、これは、システムが以前の状態に復元され得るように、システム状態のスナップショットが定期的に保存されることを可能にする。この技術を図７により詳細に示す。この実装形態においては、データは、ＤＲＡＭ論理フラッシュ内の特定のスナップショット領域に、論理レコードを用いることなく転送される。テーブルなどの他の技術を用いてスナップショットデータをインデックス化及び復元することが可能である。一例においては、スナップショットは時刻に基づいてインデックス化される。演算装置の状態を復元する際には、最新のスナップショットが最も重要である。古いスナップショットはシステムの使用中に新しいスナップショットによって上書きされる。これにより、最新のスナップショットが将来の復元動作のために記憶される。スナップショットはＤＲＡＭ論理フラッシュに記憶され、パワーダウンまでフラッシュメモリに転送されない。パワーダウン時には、選択された数のスナップショットのみがダンププロセスの一部としてフラッシュメモリに記憶される。これは、フラッシュメモリに対して行われる書き込みの回数を減らすことによって、フラッシュメモリの寿命を顕著に増加させる。これに対し、Ａｐｐｌｅのノートブックはスナップショットを直接フラッシュメモリに記憶する。このスナップショット動作はノートブックの使用中に頻繁に発生し、その結果重大なフラッシュの摩耗を引き起こす。
【００６０】
[0072]  第３のデータ転送／記憶技術は、図８に説明するファストロードプロセスである。ファストロードプロセスは、フラッシュメモリ内に、プログラムファイルを記憶する保護されたプログラム領域を備える。本例においては、フラッシュメモリ内の保護されたプログラム領域は２つの区域を有し、１つは記憶されたプログラム用、１つはアクティブなプログラム用である。ファストロードプロセスは、ＤＲＡＭフラッシュを用いる標準的なコントローラの一部ではない追加的な回路及び論理によって実行される。ユーザが記憶されたプログラムへのアクセスの許可を得た場合、ファストロードプロセスを用いてプログラムファイルをＤＲＡＭ論理フラッシュの保護されたプログラム領域へと移動させることができる。ＣＰＵは、プログラムファイルが実行のためにそこからＣＰＵメモリへと転送されるよう要求することができる。
【００６１】
[0073]  第４のデータ転送／記憶技術は、図９により詳細に説明するダンプ／復元プロセスである。ダンプ／復元プロセスは、パワーダウン又は電源喪失の際に発生する。ダンプ／復元プロセスはデータをＤＲＡＭ論理フラッシュからフラッシュメモリ内の特定のダンプ領域に移動させる。復元のためには、演算装置への電力が回復され、ダンプ領域内のデータがＤＲＡＭ論理フラッシュへと戻し転送され、その後ＣＰＵメモリに戻される。
【００６２】
[0074]  第５のデータ転送技術は、図１０に説明する誤処理ファイル復元技術である。「誤処理された」とは、意図せず望ましくない変更がファイルに対して行われるどのような場合をも指す。例えば、ファイルのすべて又は一部が削除されたり、あるいは所望のファイルが別のファイルによって上書きされたりし得る。誤処理ファイル復元技術はファイルの復元を提供するもので、ＣＰＵがＤＲＡＭ論理フラッシュから削除されるべきであると命令したファイルがＤＲＡＭ論理フラッシュから復元される。ＤＲＡＭ論理フラッシュには待ち時間があり、その間誤処理ファイルはＤＲＡＭ論理フラッシュに記憶されたままであってもよい。限られた履歴ファイルを用いて、依然としてＤＲＡＭ論理フラッシュにあるこれらの誤処理ファイルをインデックス化及び復元する。これらの技術の各々を以下に説明する。
【００６３】
[0075]  ＤＲＡＭ論理フラッシュはＳＳＤと一体の物理的部分として描写されているが、実装形態によっては、ＤＲＡＭ論理フラッシュはＣＰＵ揮発性メモリ内に構築され、ＣＰＵがＤＲＡＭ論理フラッシュの読み出し、書き込み、及びフラッシュ動作を制御してもよい。しかしながら、従来のＣＰＵ／ＣＰＵメモリシステムには、パワーダウンの際に、データを不揮発性ＣＰＵメモリにダンプする間電力を維持する機構が存在しない。本明細書において検討されている原理を成功裏に実行するためには、演算装置が独立の電源を備えて、ＣＰＵメモリに記憶されたデータがＤＲＡＭ論理フラッシュからソリッドステートドライブのフラッシュにダンプされることを可能にしてもよい。
【００６４】
[0076]  また、ＤＲＡＭ論理フラッシュは、上述の機能のうち一部のみを実行するために用いられ、あるいは実行するよう構成されていてもよい。例えば、ＤＲＡＭ論理フラッシュは、論理レコード型のデータ転送に用いられることなく、ファストロード動作又はスナップショット動作を提供するよう構成されていてもよい。これにより、ＤＲＡＭ論理フラッシュの動作は大幅に単純化され得る。他の実装形態においては、ＤＲＡＭ論理フラッシュは動作的に特定の部分に断片化されてもよい。マイクロコントローラに関連する揮発性メモリは、スナップショット／ファストロードセグメント（領域）と論理レコードセグメント（領域）とにマップされてもよい。スナップショット／ファストロードセグメントは、特別なプロトコルを用いてフラッシュに転送されるデータを記憶してもよく、論理レコードに基づいてインデックス化されてもされなくてもよい。場合によっては、ＤＲＡＭ論理フラッシュの容量が、この別個のセグメント／領域へのマッピングに適合するよう増大されてもよい。
【００６５】
[0077]  例えば、非論理レコード領域がスナップショットデータ又はファストロードデータを記憶してもよい。非論理レコード領域中のデータはフラッシュにロードされてもされなくてもよい。例えば、メモリの非論理レコード領域が演算装置の状態の復元に用いることのできる４つのスナップショットを含んでいる場合、パワーダウン時には最新のスナップショットのうち１つ又は２つのみが実際にフラッシュに保存され得る。他の、より古いスナップショットは単に破棄される。
【００６６】
[0078]  別の例においては、ファストロードプログラムが揮発性メモリの非論理レコード領域にロードされてもよい。これらのファストロードプログラムは、一般的には通常動作時に修正される実行可能物であって、フラッシュメモリには書き戻されない。プログラムの更新のためには代替的な論理パスがある。この代替的な論理パスは、ソフトウェアプログラマがソフトウェアを更新することを可能にする。制限及びプロトコルによって、ソフトウェア販売業者以外の何者かが権限のあるソフトウェアプログラマに接近しこの領域にアクセスすることを規制してもよい。これは、これらの領域については、権限のない個人又は団体には開示されていない特定のコマンドが存在するためである。
【００６７】
[0079]  ソフトウェアのコピーを防止するため、オペレーティングシステムは、ファストロードにロードされたコードのユーザポート又はシステム内の任意の他のポートへのコピーを許可してはならない。ファストロードは、一般に、ユーザのための読み出し専用の機能である。これにより、ユーザによるプログラムの修正及び販売が防止される。上述のように、プロトコルには、ソフトウェア発行者（又は他の権限のあるユーザ）だけがソフトウェアを更新できるように、彼らにのみ利用可能な別個のコマンドがあってもよい。
【００６８】
[0080]  他の例においては、複数の別個のメモリコントローラがあってもよい。一実装形態においては、メモリ装置に備えられた標準的な揮発性メモリ用の１つのコントローラと、ＤＲＡＭ論理フラッシュ用の１つのコントローラとがあってもよい。また、標準的な揮発性メモリは、保護されていてもよく、ユーザ及び／又は演算装置に直接アドレス可能又はアクセス可能でない。場合によっては、標準的な揮発性には、特別な制限又は利用があってもよい。実施形態によっては、メモリはシステム揮発性メモリの延長線上にあるように見えてもよい。
【００６９】
ソリッドステートドライブへのファイルの書き込み
[0081]  通常動作時、ＣＰＵは、一般的なハードドライブにデータを書き込むために用いるであろうものと同一のプロトコルを用いてＳＳＤにファイルを書き込む。例えば、ＣＰＵは、論理レコードを用いたＳＳＤへの書き込み及び読み出しの技術を利用してもよい。ＳＳＤドライブの内部動作はＣＰＵの動作とは無関係であり、ＣＰＵから隠されている。上述のように、ＳＳＤドライブはＣＰＵからのデータを受け付けるが、内部ではそのデータを、ＮＡＮＤフラッシュメモリの速度及び寿命の制限を克服する独自の手法で管理及び記憶する。しかしながら、ＳＳＤドライブは、ＳＳＤドライブとＣＰＵとの間のインタフェースを、ＣＰＵには完全にハードドライブ又は通常のフラッシュドライブへの書き込みを行っているように見えるように制御する。したがって、ＳＳＤは、種々の演算装置のいずれにおいても使用可能なプラグアンドプレイメモリ記憶装置であり、優れたデータ転送レート、長寿命、及び低消費電力を透過的に提供する。
【００７０】
[0082]  図５Ａは、極めて高速のデータ転送レートを可能にするＳＳＤアーキテクチャを通じた例示的なデータフローを示す図である。データは、まずＣＰＵの動作によりシステムバスを介して転送される。例えば、システムバスはＳＡＴＡバスであってもよい。データはＤＭＡプロセスを用いてシステムバスを離れＤＲＡＭ論理フラッシュに転送される。上述のように、ＤＲＡＭ論理フラッシュはＣＰＵによる後の取得のためにデータを記憶する。ＣＰＵが認識しているのはＤＲＡＭ論理フラッシュのみで、これはフラッシュメモリのメモリ容量を有する極めて高速な不揮発性ソリッドステートメモリであるように見える。
【００７１】
[0083]  マスタコントローラは、適切であると判断する場合には、ＤＲＡＭ論理フラッシュからフラッシュメモリへとデータを書き込むことを決定する。ＳＳＤ内には任意の数のフラッシュメモリモジュールがあってよい。例えば、ＳＳＤアーキテクチャは、８つのフラッシュメモリモジュールを含んでいてもよい。図解の目的で、図５Ａにはこれらの装置のうち４つのみを示す。図３に関して上述したように、フラッシュメモリ装置の各々は、バッファを備えたメモリコントローラと多数のフラッシュメモリダイとを含む。例えば、各フラッシュメモリコントローラは、４個、８個、又は１６個の別々のダイへの分配を制御してもよい。多数のフラッシュメモリコントローラ間でのデータの分配は、複数のフラッシュダイへの同時書き込みを含め、多数の利点を提供する。これにより、フラッシュメモリの現在の実装形態につきものの、比較的遅い書き込み時間が埋め合わせされる。マスタコントローラ及び種々のフラッシュメモリコントローラの独立により、最小限の待ち時間での並列データ転送が可能となる。並列書き込み及び並列読み出し動作を可能にするために、ファイルは様々なフラッシュメモリダイにまたがって配置される。これは、図５Ａにおいては、フラッシュメモリダイの各々における番号を付されたボックスとして図示されている。ファイルが書き込まれると、マスタコントローラは連続的に個々のフラッシュメモリコントローラをアドレスし、次にフラッシュメモリコントローラが、自身が制御するフラッシュダイを連続的にアドレスする。その結果、ファイルはダイにまたがって分配され、ファイルの様々な部分が同時に異なるフラッシュダイに書き込まれる。ファイルは、フラッシュダイから取得されるときには、ダイから並列で読み出され得る。これを図６Ａに示す。
【００７２】
[0084]  ＳＳＤにファイルを書き込むための例示的な方法を図５Ｂに示す。最初のステップにおいて、ＣＰＵが書き込みコマンドを送信し、ＳＳＤに書き込まれるべきデータをＳＡＴＡバスに載せる（ステップ５０５）。書き込みコマンドはマスタコントローラに転送され、マスタコントローラは、ＤＲＡＭコントローラに、データを受け付けＤＲＡＭメモリに転送するよう命令する（ステップ５１０）。ＤＲＡＭコントローラは、コマンドと他のデータとを区別し、コマンドを別個のバスを介してマスタコントローラに送信するよう構成されていてもよい。本例では、ＤＲＡＭコントローラは書き込みコマンドをマスタコントローラに送信する。マスタコントローラは、書き込みコマンドを解釈すると、新しいデータが受信されていることをＤＲＡＭコントローラに警告する。ＤＲＡＭコントローラはコマンド中の論理レコードを探し、自身のテーブル内で論理レコードを検索して、そのデータが既にＤＲＡＭ論理フラッシュに含まれているかどうか判断する。例えば、現在の論理レコードは、別のより大きなファイルの一部であり得る。ＤＲＡＭコントローラは、各ファイルの先頭と終わりの論理レコードを検索することによって、そのデータが既にＤＲＡＭ論理フラッシュにあるかどうかを判断する。現在の論理レコードが各ファイルの先頭と終わりの論理レコードの間にある場合には、データは現在ＤＲＡＭ論理フラッシュに記憶されており、上書きされるであろう。後述のように誤処理ファイルの復元を可能にするために、論理レコードデータは、置き換えられたファイルのアドレスの表記とともに、ＤＲＡＭ論理フラッシュ内の新しい空間に書き込まれる。しかしながら、論理レコードがＤＲＡＭ論理フラッシュ内になく、新しいデータを表す場合には、新しい論理レコードのために新しいレコードが作成され、ＤＲＡＭ論理フラッシュ内でデータが収集される。書き込みが完了すると、ファイル割り当てテーブル（ＦＡＴ）が更新され、ＣＰＵによりＳＡＴＡインタフェースを介して送信される。オペレーティングシステムによっては、各ＦＡＴテーブルエントリの記憶は複数の冗長書き込みサイクルを伴い得る。ＳＳＤからＦＡＴテーブルが要求されると、その要求はＤＲＡＭ論理フラッシュにより処理される。ＦＡＴテーブルはＤＲＡＭ論理フラッシュに記憶され、パワーダウン時にのみフラッシュメモリに保存される。これにより、フラッシュメモリにおける何千もの消去／書き込みサイクルが省かれる。
【００７３】
[0085]  論理フラッシュコントローラはＳＡＴＡ  ＤＭＡをセットアップし、ＤＲＡＭ論理フラッシュへのデータの転送を管理する（ステップ５１５）。上述のように、ＤＲＡＭ論理フラッシュにおいて用いられるＤＲＡＭメモリは、きわめて高速のランダムアクセスメモリである。ＤＭＡ転送と、専用のＤＲＡＭコントローラと、きわめて高速のＤＲＡＭメモリとの組み合わせは、ＤＲＡＭ論理フラッシュに記憶されたデータが、一般的にはＳＡＴＡバスにより限定された速度で、容易且つ迅速にＣＰＵにアクセス可能であることを意味する。ＤＲＡＭ論理フラッシュは、頻繁にアクセスされるデータを記憶するために用いられる。これにより、ＳＳＤ内のフラッシュメモリ装置は過度の書き込みサイクルから防護される。論理フラッシュコントローラは、フラッシュ技術を用いてデータを集約及び更新することを含め、ＤＲＡＭ内のデータをフラッシュファイルとして管理する（ステップ５２０）。これにより、ＤＲＡＭ論理フラッシュは、標準的なフラッシュメモリと同様に、ただしはるかに高速で、ＳＡＴＡバスとインタフェースをとることができる。
【００７４】
[0086]  ＳＡＴＡデータとフラッシュデータとの間には時間的相関関係は存在しない。フラッシュメモリ及びフラッシュメモリ上に記憶されたデータは、ＣＰＵに直接アクセス可能ではなく、マスタコントローラにより制御される。ＣＰＵはＤＲＡＭ論理フラッシュとのみインタフェースをとり、コマンドデータはＤＲＡＭ論理フラッシュからマスタコントローラに転送される。論理フラッシュコントローラは定期的にデータの利用を評価し、データがＤＲＡＭ論理フラッシュからＮＡＮＤフラッシュメモリに書き込まれるべきか否かを判断する（ステップ５２５）。例えば、ＣＰＵにより使用中のファイルは、ユーザがそのファイルを用いて作業している期間中は、規則的にＳＳＤドライブに保存されてもよい。ユーザが用を終えた後、そのファイルは、再びアクセスされるまで数日間あるいは数ヶ月間休止状態となり得る。ＤＲＡＭ論理フラッシュに記憶されたデータは特定の保存ポイントでＮＡＮＤフラッシュメモリに書き込まれる。例えば、ＤＲＡＭ論理フラッシュに記憶されたデータは、ファイルが閉じられたとき又はコンピュータがパワーダウンされたときにＮＡＮＤフラッシュメモリに転送されてもよい。他の保存ポイントは、ＤＲＡＭ論理フラッシュの容量が大部分消費されたときに発生してもよい。その場合、保存頻度の低いファイルはフラッシュメモリに転送され得る。
【００７５】
[0087]  次に、マスタコントローラの制御に基づくＤＲＡＭ論理フラッシュからＮＡＮＤフラッシュメモリへのデータの転送を説明する。マスタコントローラは、ＤＲＡＭ論理フラッシュからフラッシュメモリ装置にデータを書き込む決定をすると、転送対象のデータを識別するコマンドを論理フラッシュコントローラに送信し、バスコントローラにデータ転送を警告する（ステップ５３０）。マスタコントローラは、フラッシュコントローラが所望のデータを受信／取得できるように、内部バスに、フラッシュコントローラに警告する／フラッシュコントローラをイネーブルするコマンドデータを載せる。論理フラッシュコントローラは、転送に適したレジスタ値をセットして内部バスＤＭＡを設定し、マスタコントローラにより識別されたデータがバスＤＭＡによって高速内部バスに載せられる（ステップ５３５）。次に、マスタコントローラ（又はそれに代えて任意的なバスコントローラ）が、個々のフラッシュコントローラを宛先とする特定のデータセグメントを有するデータの転送を開始する（ステップ５４０）。高速内部バスを介したデータの転送を管理するためには、種々の技術を用いることができる。一実装形態においては、内部バスにロードされたデータは、データシーケンスの先頭を示すマーカと、データシーケンスの終わりを示すマーカと、データの宛先となっているコンポーネントを識別する構造とを含む。各フラッシュコントローラはデータストリーム中の識別子を監視し、適切なデータセグメントを自身の内部記憶装置に回す。他の実装形態においては、メモリコントローラの各々に接続された別個のコマンド／イネーブルラインがあってもよい。データが特定のフラッシュメモリモジュールに向けられているとき、他のメモリコントローラ用のイネーブルラインがアサートされないのに対し、このメモリコントローラに接続されたイネーブルラインはアサートされる。この構成を図３に示す。
【００７６】
[0088]  高速バスは、バスへ及びバスからのデータ転送が毎秒４００ＭＢで行われることを確実にするクロックに基づいて動作する。バスコントローラは、毎秒３００ＭＢ以上の最大のデータレートでのＤＲＡＭ論理からフラッシュメモリ装置へのデータの転送を指示する。データ転送中、マスタコントローラは、第１のＤＭＡサイクル中は第１のフラッシュレジスタに、次いで第２のＤＭＡサイクル中は第２のフラッシュレジスタに、…といった具合に、連続的にデータを向ける。マスタコントローラは、８つの異なるフラッシュコントローラにまたがって連続的にデータを分配する（ステップ５４５）。データは、フラッシュコントローラ内のレジスタからフラッシュダイへと、毎秒４０ＭＢで並列に連続的に読み出される（ステップ５５０）。ロードされたレジスタ（フラッシュメモリバッファ）は、クロックをバス速度からフラッシュ速度に切り替えさせる。（各々が毎秒４０ＭＢで）並列動作している８つのフラッシュコントローラにより、毎秒３２０ＭＢの全体の転送レートがもたらされる。しかしながら、追加の毎秒２０ＭＢにより、誤り訂正符号（ＥＣＣ）などの追加的なオーバヘッドデータがフラッシュメモリに書き込まれることが可能となる。また、フラッシュメモリのメンテナンス中に行われる追加の書き込み又は読み出しといった、多数の追加的な動作が存在し得る。こうした追加的なオーバヘッドは、８つの並列のフラッシュドライブの４０乃至５０ＭＢの転送レートを、内部バス上の毎秒４００ＭＢの転送レートに概ね等しくする。
【００７７】
[0089]  ＳＳＤは多数の追加的な特徴も有し得る。例えば、ＳＳＤはアクセス及びセキュリティレベルの異なる様々なセクションに分割されていてもよい。例えば、ＳＳＤの保護された部分がソフトウェア実行可能物用に指定されてもよい。この、ＳＳＤの保護された部分は、ユーザ又はオペレーティングシステムにより直接アクセス可能であってはならない。例えば、ＳＳＤの保護された部分は、論理レコード番号によってインデックス化されてはならない。したがって、ユーザ又はオペレーティングシステムには、保護された部分にアクセスするための機構がない。その代わり、保護された部分は、新しいソフトウェアをロードしたり、既存のソフトウェアを更新したりするために、ソフトウェア供給者のみが利用可能であってもよい。保護された部分は、この種のデータに特有の特別なコマンドを備えた異なる技術によってアドレス可能である。例えば、論理レコードに相当するアドレスは、用いられ得るが、異なるルックアップテーブルでインデックス化される。
【００７８】
[0090]  保護された部分に含まれているソフトウェアを作動するためには、そのソフトウェアは第２の「読み出し専用」セクションに転送されてオペレーティングシステムによりアクセスされてもよい。この技術の有利な点の１つは、ソフトウェア実行可能物が、ユーザが何をしているかに関係なく更新され得るということである。例えば、ユーザは、文書を編集するために、Ｗｉｎｄｏｗｓ（登録商標）のオペレーティングシステム及びＭｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）のアプリケーションを使用しているかもしれない。バックグラウンドでは、ソフトウェア供給者がＳＳＤの保護された部分に記憶されたＷｉｎｄｏｗｓ（登録商標）のオペレーティングシステムの実行可能物の更新をプッシュしているかもしれない。ユーザの作業は中断されない。文書の準備やインターネットへのアクセスなど、大抵のユーザ状況では、ＳＳＤへ／からの通信トラヒックはほとんど又はまったく存在しない。
【００７９】
[0091]  したがって、新しいデータは、フラッシュドライブの性能に悪影響を及ぼすことなく、ＳＳＤの保護された部分に流入され得る。ユーザが次にシステムを起動したときには、新しいバージョンのオペレーティングシステムがドライブの保護された部分から「読み出し専用」セクションにロードされ、ＤＲＡＭ論理フラッシュを通じてＣＰＵに転送されるであろう。シャットダウン又は停電時には、コンピューティングシステムは、これらの実行可能なファイルを保存しようとする必要はない。なぜなら、これらの実行可能なファイルは変更されておらず、ドライブの保護された部分に既に記憶されているからである。
【００８０】
[0092]  追加的又は代替的には、スナップショットの記憶のために指定された、ドライブの特別なセクションがあってもよい。上述のように、スナップショットとは、ある時点における演算装置の完全な状態の記録である。スナップショットは、演算装置をその状態まで復元することを可能にする。
【００８１】
ソリッドステートドライブからのファイルの取得
[0093]  図６Ａは演算装置における読み出し動作の図である。上述のように、ＣＰＵはＳＡＴＡバス及びＳＡＴＡ  ＤＭＡを介してＤＲＡＭ論理フラッシュと直接通信しデータを取得する。読み出しコマンドを受信すると、マスタコントローラは、そのデータがＤＲＡＭ論理フラッシュに記憶されているか否かを判断する。記憶されていれば、そのデータはＤＲＡＭ論理フラッシュからＣＰＵに送信される。記憶されていなければ、マスタコントローラは、フラッシュメモリモジュールのどこに記憶されているのかを判断してそのデータを取得する。多くの場合、データは複数のフラッシュメモリモジュール及び各モジュール内の複数のダイにまたがって配置され得る。したがって、データファイルは、複数の独立コントローラを用いて複数のダイからデータを同時に読み出すことにより、迅速に取得され得る。
【００８２】
[0094]  図６Ｂは、フラッシュメモリからデータを読み出すための例示的な方法（６００）のフローチャートである。新しいファイル又は更新されたファイルが必要なとき、ＣＰＵは必要なデータに対応した論理レコード番号を有する読み出しコマンドを、ＳＡＴＡインタフェースを介してＳＳＤに送信する（ステップ６０５）。読み出しコマンドはＤＲＡＭ論理フラッシュで受信されマスタコントローラに転送される（ステップ６１０）。例えば、ＤＲＡＭコントローラは、コマンドを認識し特別な高速バスを介してマスタコントローラに送信するよう構成されていてもよく、マスタコントローラに新しいコマンドが受信されたことを警告する。マスタコントローラ又はＤＲＡＭコントローラは、要求されたデータがＤＲＡＭ論理フラッシュに記憶されているか否かを判断する（判断６１２）。実装形態によっては、ＤＲＡＭコントローラは、ＣＰＵ又はマスタコントローラからの要求に応答して正しいデータをＳＡＴＡインタフェースに送信できるよう、読み出され又は書き込まれたファイルをすべて追跡する。ＤＲＡＭコントローラはコマンド中の論理レコードを探し、自身テーブル内で論理レコードを検索して、そのデータが既にＤＲＡＭ論理フラッシュに含まれているかどうか判断する。要求されたデータがＤＲＡＭ論理フラッシュにある場合（「はい」）には、マスタコントローラは、要求されたデータをＳＡＴＡバスに載せるようＤＲＡＭコントローラに命令する（ステップ６１４）。ＤＲＡＭはデータの転送のためにＳＡＴＡ  ＤＭＡを設定する（ステップ６１６）。データはＳＡＴＡバスに載せられ、ＣＰＵにより受信される（ステップ６１８）。
【００８３】
[0095]  要求されたデータがＤＲＡＭ論理フラッシュに記憶されていない場合（「いいえ」）には、マスタコントローラは様々なフラッシュコントローラに、データを内部バスに載せるよう命令を送信する。フラッシュコントローラは、ＮＡＮＤフラッシュダイから内部バスへのデータの転送を行うよう、個々のＤＭＡを設定する（ステップ６２０）。論理フラッシュコントローラは、データを受信してＤＲＡＭ論理フラッシュに転送するようバスＤＭＡを設定する。また、論理フラッシュコントローラは、ＤＲＡＭ論理フラッシュからＳＡＴＡバスにデータを転送するようＳＡＴＡ  ＤＭＡを設定する（ステップ６２５）。フラッシュメモリからのこの転送は、毎秒３００乃至４００メガバイトの速度で行われる。同じデータについてのその後の要求は、フラッシュメモリからの代わりにＤＲＡＭ論理フラッシュによって、最大ＳＡＴＡレートで満足される（ステップ６３０）。フラッシュメモリからのデータの転送後、ＤＲＡＭ論理フラッシュは、続くすべてのトランザクションが最大のＳＡＴＡ速度（毎秒３００乃至１０００ＭＢ）で実行されることを可能にする。
【００８４】
[0096]  ＣＰＵは、プログラム動作においてデータを使用し、データをＳＳＤに定期的に書き換えてもよい（ステップ６３５）。論理フラッシュコントローラはデータへの変更を追跡し、常に１回の書き込みでＮＡＮＤフラッシュデバイスに書き込むことができるようファイルを集約する（ステップ６４０）。新しいファイルがＣＰＵから受信され、それがＤＲＡＭ論理フラッシュに現在存在しているファイルに対する更新である場合には、その新しいファイルに関連のある論理レコードのすべてがＤＲＡＭ論理フラッシュ内の新しい場所に書き込まれるとともに、新しいファイルが書き込まれる。古いデータファイルの場所は、将来の書き込みに含まれるデータのために利用可能にされる。これは、現在のファイルのすべてが、パワーダウン時に効率的にフラッシュメモリに記憶され得るよう、ＤＲＡＭ内の１箇所にあることを意味する。しかしながら、（多くの実行可能なファイルを有する場合のように）ＤＲＡＭ論理フラッシュ内のデータが変更されていなければ、そのデータをＮＡＮＤフラッシュメモリに書き戻す必要はない。なぜなら、同一のコピーが既にフラッシュメモリに記憶されているからである。ＤＲＡＭ論理フラッシュに記憶されたデータへの変更は、「ダーティビット」を用いて指定可能である。ＤＲＡＭ論理フラッシュに記憶されたファイルが変更されなければ、ダーティビットは不変のままであり、ファイルは保存ポイントでフラッシュメモリに書き換えられない。データがＤＲＡＭ論理フラッシュにある間に変更されていれば、それはダーティビットにより表示され、データはシステムのパワーダウンの前に不揮発性フラッシュメモリに書き込まれる（ステップ６４５）。ダーティビットを用いてＤＲＡＭ論理フラッシュに記憶されたデータへの変更を追跡することによって、システムがＮＡＮＤフラッシュメモリにおける時間及び磨耗を節約することが可能になる。上述のプロセスの全体を通じて、すべての通信は論理レコードレベルで処理される。これは、すべてのコントローラ及びＣＰＵについて、データ処理プロセスを均一且つ透過的にする。
【００８５】
スナップショット
[0097]  図７は、システム状態のスナップショットを記憶するための例示的な方法のフローチャートである。上述のように、ＤＲＡＭ論理フラッシュをＳＳＤに内蔵することにより、システム「スナップショット」及び他の頻繁な書き込み動作が、フラッシュメモリの寿命に悪影響を及ぼすことなくオペレーティングシステムによって実行されることが可能になる。スナップショットは論理レコードとしては転送／記憶されない。図４に関して上述したように、スナップショットの記憶及び取得には特別なパスが別個の命令とともに用いられる。スナップショットはＤＲＡＭ論理フラッシュのスナップショット領域に記憶され、パワーダウン時にのみフラッシュメモリに転送される。スナップショットは論理レコードを用いては記憶されない。その代わりに、スナップショットレコードと呼ばれるテーブルが用いられる。スナップショットの記憶及び取得には、特別なパスが特別な命令とともに用いられる。スナップショットの管理には別個のパス及び命令が用いられるため、スナップショットは、論理レコードを用いる通常のデータストリームを妨げることなく保存されることができる。スナップショットのほとんどは不揮発性フラッシュメモリ上に永久的に記憶されるのではなく、ＤＲＡＭ論理フラッシュに一時的に記憶される。演算装置がシャットダウンされたり電源を喪失した場合には、選択されたスナップショットがＤＲＡＭ論理フラッシュからフラッシュメモリに転送される。この転送及び復元プロセスは、オペレーティングシステムにより調整される。
【００８６】
[0098]  次に図７を参照すると、ユーザ／オペレーティングシステム／ＣＰＵは、スナップショットが保存されるべきであることを決定する（７０５）。演算装置の状態は、ＤＲＡＭ論理フラッシュ上の保護された領域（「スナップショット領域」）に保存される。オペレーティングシステムは、どのデータが保存されるかについての決定を行う。例えば、以前にファイルに保存されたデータをスナップショットに含める理由はない。スナップショット転送は論理レコードを用いては行われず、データは論理レコード又はブロックルックアップテーブルを用いては記憶されない。スナップショット領域のデータとともに記憶されたテーブル（「スナップショットレコード」）が、様々なスナップショットをインデックス化／編成するのに用いられる。典型的には、スナップショットは、スナップショットが取得された時刻に基づいて編成される（７１０）。
【００８７】
[0099]  ＣＰＵがシャットダウンコマンドを送信するか、電源回路が電源喪失を感知して中断を送信すると、スナップショット保存シーケンスが最後の２つのスナップショットを優先してフラッシュメモリに記憶する。このプロセスも論理レコード又はブロックルックアップテーブルを用いない。指定されたブロックはスナップショットデータを受信できる状態にある。スナップショットの編成及びスナップショットをどうやって取得するかについての関連するデータがスナップショットとともにテーブルに記憶される（７１５）。
【００８８】
[00100]  システムが復旧／再起動すると、スナップショット復元コードがフラッシュからスナップショットを取得し、ＤＲＡＭ論理フラッシュ及びＣＰＵメモリに戻す（７２０）。演算装置はその後、スナップショットによって保存された状態から動作を再開する。
【００８９】
ファストロード動作
[00101]  図８はファストロード動作のための例示的な方法（８００）のフローチャートである。製造／設定中、プログラムはＳＳＤ内のフラッシュメモリの保護されたプログラム領域の記憶部に記憶される。ユーザは保護されたプログラム領域には直接アクセスできない（８０５）。ユーザが特定のプログラムを使用する適切な許可を得ると、そのプログラムが記憶部から保護されたプログラム領域のアクティブ部に転送される（８１０）。
【００９０】
[00102]  アクティブ領域の１つ以上のプログラムの使用を準備するため、プログラムファイルがＤＲＡＭ論理フラッシュの保護されたプログラム領域に移動される。この転送は論理レコードを使用するものではなく、バルク転送である。保護されたプログラム領域は、同様にユーザには直接アクセス可能ではない（８１５）。
【００９１】
[00103]  ＤＲＡＭ論理フラッシュの保護されたプログラム領域にあるプログラムは、実行のためＣＰＵメモリに転送される。プログラムファイルは、実行中には変更されないため、一般的にはスナップショット又はダンプ／修復動作には含まれない。プログラムファイルにより生成されたファイルは、設定及びデータファイルを含め、スナップショット及び／復元動作に含まれ得る（８２０）。
【００９２】
[00104]  ユーザがまだアクセスの許可を得ていないプログラムファイルを含むプログラムファイルの更新は、ネットワークからＳＳＤの保護されたプログラム領域へ、バックグラウンド動作を利用してストリーミングされ得る（８２５）。これらの更新されたプログラムはその後、ユーザによる支払い又は真正な要求に応じて迅速に利用可能にされる。
【００９３】
パワーダウン時のデータ保存
[00105]  図９は、マシンがオフになったとき又は電源を喪失したときにＤＲＡＭ論理フラッシュに記憶されているデータを不揮発性フラッシュメモリに保存するための例示的な方法（７００）のフローチャートである。電源コンデンサ回路又は他のエネルギ貯蔵装置もＳＳＤ内に備えられ得る。エネルギ貯蔵装置は、揮発性ＤＲＡＭメモリに記憶されているすべてのデータを不揮発性ＮＡＮＤフラッシュメモリに書き込むのに十分なエネルギを貯蔵する（ステップ９０５）。ＳＳＤへの停電があると、電源内のセンサがパワーダウン貯蔵動作を開始する。また、パワーダウン貯蔵動作はユーザ又はオペレーティングシステムによりトリガされてもよい（ステップ９１０）。パワーダウン貯蔵動作中、電源コンデンサからのエネルギは、ＤＲＡＭをリフレッシュしてデータを維持し、コントローラを操作し、データをメモリコントローラに転送し、そのデータをＮＡＮＤフラッシュメモリに書き込むために使用される。マスタコントローラはデータパスをセットアップし、ＤＲＡＭコントローラは内部バスを介してメモリコントローラへのデータの送信を開始する。データは全速で各メモリモジュールに書き込まれる。各データファイルは、そのファイルをパワーダウン貯蔵動作の一部として識別するヘッダを含む（ステップ９１５）。データの各セグメントは、ダンプ及び復元プログラムが論理フラッシュデータをまったく保存されたとおりに修復することを可能にする論理レコードフラグを含む。８つのフラッシュメモリコントローラの各々は自身の論理レコードフラグを監視する。フラッシュコントローラは、自身の論理レコードフラグを識別すると、それに続くデータをフラッシュメモリに記憶する（ステップ９２０）。ダンプはフラッシュメモリ全体を順にロードするので、消去サイクルは存在せず、書き込み速度は毎秒３００ＭＢに近くなり得る。理論的には、８ＧＢのＤＲＡＭメモリの全部が２４秒でフラッシュにダンプされることが可能である。ＤＲＡＭ論理フラッシュが完全にいっぱいではないか、又は変更されていないファイルを含む場合には、転送時間は顕著に少なくなり得る。エネルギ貯蔵装置は、ＤＲＡＭ論理フラッシュ内のすべてのデータをフラッシュメモリに全速でデータ転送するためのＳＳＤドライブへの電力を維持するよう設計された容量性電源回路を有する。
【００９４】
[00106]  一実施形態においては、パワーダウン貯蔵動作中にデータを記憶するために、フラッシュダイのスペアのブロックが用いられる。スペアブロックは既に空であるため、消去遅延は発生しない。スペアブロックは各ダイの全体に分散されている。したがって、スナップショットは物理的に１つの近接した場所には位置しない。しかし、データセグメントの各々に含まれたヘッダが次のデータセグメントを識別する。よって、最初のデータセグメントを既知の場所に記憶することにより、マスタコントローラはデータファイルのすべてを、書き込まれたのと同じ順序（先入れ先出し）で復元することができる。
【００９５】
[00107]  容量性電源回路が消耗する前に、ポインタが記憶されて再起動を助けることが可能である。一実装形態においては、マスタプロセッサが、フラッシュにロードされた論理レコードのディレクトリを蓄積する。このディレクトリは保護された領域のフラッシュメモリに書き込まれる。演算装置が再起動されると、ディレクトリは保護された領域から取得される。そして、マスタコントローラがテーブルを用いて論理フラッシュの動作を制御する。
【００９６】
[00108]  修復プロセスはパワーダウン記憶プロセスの逆である。オペレーティングシステムが再起動を感知して、スナップショットを取得する。任意の必要なテーブル又は他のインデックス化データがまずフラッシュのダンプ領域から取得される（９３５）。これらのテーブルはマスタコントローラのメモリに記憶されてもよいし、あるいはＤＲＡＭ論理フラッシュに記憶されてもよい。次に、マスタコントローラがこれらのテーブルを用いてスナップショットにアクセスし、パワーダウン貯蔵動作の前のオペレーティングシステムの状態を再構築する（９４０）。一実装形態においては、記憶されたデータの第１のセグメントが論理フラッシュに戻し転送され、すべてのデータが再びＤＲＡＭ論理フラッシュ上に記憶されるまで、データの第２のセグメント及び以降のセグメントがこれに続く。この動作は、クリーンアップされたバージョンのデータをＤＲＡＭ論理フラッシュに修復する。修復されたオペレーティングシステムは次に、論理レコードテーブルを用いて、マスタコントローラに、論理フラッシュから要求されたファイルを取得するよう命令する。
【００９７】
[00109]  一般に、復元シーケンスはＣＰＵ及びオペレーティングシステムの制御下となる。オペレーティングシステムは、必要に応じて様々なファイルのロードを命令するであろう。実装形態によっては、オープンであったプログラムのダンプ参照（dump references）があってもよい。ダンプ参照は、一定であれば書き換えられない。マスタコントローラは、復元プロセスが最後に作動していた位置にコードをリセットできるように、各オープンプログラムについて一連のパンくずリスト（bread crumbs）を維持してもよい。しかしながら、すべてのプログラムがパンくずリストを有するわけではなく、復元シーケンスの一部としてロードされるであろう。
【００９８】
誤処理ファイル復元
[00110]  図１０は、ＤＲＡＭ論理フラッシュに記憶された誤処理データファイルを復元するための例示的な方法（１０００）のフローチャートである。例えば、ユーザは、ファイルを適切に保存することなくうっかり閉じてしまうかもしれない。ＣＰＵはＳＳＤに、そのファイルを削除するよう命令を送信する（１００５）。
【００９９】
[00111]  ファイルの削除はＦＡＴテーブルに記録される。しかし、ファイル内のデータは一定の期間ＤＲＡＭ論理フラッシュに記憶されたままであり、限られたファイル履歴によりインデックス化される（１０１０）。ユーザは、ファイルが適切に保存することなく閉じられたことを発見し、オペレーティングシステムがそのファイルを復元することを要求する（１０１５）。オペレーティングシステムは限られたファイル履歴にアクセスし、「削除された」ファイルを構成するデータが依然としてＤＲＡＭ論理フラッシュ上に存在しているか否かを判断する（１０２０）。「削除された」ファイルが依然として存在していれば、そのファイルはＤＲＡＭ論理フラッシュから取得されＣＰＵメモリに送信される（１０２５）。
【０１００】
結び
[00112]  つまり、上述の例示的なＳＳＤアーキテクチャは、ハードディスクドライブに代わるプラグアンドプレイ式の代替案を提供するものである。フラッシュメモリがその有限の消去／書き込みサイクル数にもかかわらず不揮発性記憶装置として効果的に用いられることを可能にする多数の原理を上述した。ＤＲＡＭ論理フラッシュの利用は、フラッシュの挙動を真似し、すべてのフラッシュコマンドが最大インタフェース速度で処理されることを可能にするとともに、ＮＡＮＤフラッシュメモリへの書き込みを最小化する。システムプロセッサに関して言えば、システムプロセッサは常にＳＳＤ内のフラッシュメモリに書き込みを行っている。しかし、システムプロセッサが書き込みを行っているのは、論理フラッシュとして機能するがＮＡＮＤフラッシュメモリの寿命やアドレス指定という制限のないＤＲＡＭである。ＤＲＡＭ論理フラッシュはフラッシュと同じようにファイルを記憶し、フラッシュコマンドに応答する。さらに、ＤＲＡＭ論理フラッシュはＦＡＴテーブルを使用し、論理レコードを更新し、ファイルを結合し、ＳＡＴＡバスに取り付けられる。ＤＲＡＭ論理フラッシュは事実上無限数の書き込み／読み出しサイクルを有するため、システムプロセッサ及びオペレーティングシステムは所望の限り多くの更新及びスナップショットを記憶できる。また、ＤＲＡＭ論理フラッシュはデータの読み出し及び書き込みの両方において極めて速い。ＳＳＤは、外部電源が遮断された場合にＤＲＡＭ論理フラッシュに記憶されたデータコンテンツ全体をフラッシュメモリに移動させるのに十分な電力を貯蔵する。
【０１０１】
[00113]  ＳＳＤ内のフラッシュコントローラは、論理レコード変換、誤り検出及び復元、ならびにデバイス最適化を扱う。実施形態によっては、フラッシュインタフェースデバイスの各々は、速度と使いやすさのため、２乃至４個のダイを制御してもよい。マスタコントローラ（及び実施形態によってはバスコントローラ）は、ＤＲＡＭ論理フラッシュと各フラッシュコントローラとの間でのデータ転送を制御する。
【０１０２】
[00114]  上述のように、ＤＲＡＭメモリ及びそのコントローラがＤＲＡＭ論理フラッシュを構成する。ＤＲＡＭ論理フラッシュ内のデータは、完全にフラッシュドライブであるように見えるようにローカルマイクロプロセッサ（ＤＲＡＭコントローラ、論理フラッシュコントローラ、及びマスタコントローラ）によって管理される。ＳＡＴＡシステムとのすべての通信のためのすべてのトランザクションは、このインタフェースを通してのみ発生する。ＤＲＡＭ論理フラッシュは常に最大ＳＡＴＡ速度でＳＡＴＡバスから読み出しＳＡＴＡバスに書き込む。したがって、ＤＲＡＭ論理フラッシュは完全にフラッシュデバイスであるように見えるが、はるかに高いデータ転送レートを有する。これはＳＳＤ動作を演算装置に対して透過的にし、演算装置はまるで標準的なフラッシュ又はハードドライブ装置に書き込みを行っているかのように機能することができる。
【０１０３】
[00115]  ＤＲＡＭ論理フラッシュはキャッシュではなく、キャッシュとしては機能しない。ＤＲＡＭ論理フラッシュ内のファイルは、フラッシュ内にあるかのように、論理レコードとともに物理的な位置マッピング及びファイル管理に書き込まれる。ＤＲＡＭコントローラは、ＣＰＵが常にフラッシュメモリドライブに書き込んでいると信じるように、フラッシュコマンドを受け付け、実行する。しかし、ＣＰＵはいつもＤＲＡＭ論理フラッシュに読み出し及び書き込んでいるのである。ＣＰＵはフラッシュメモリに直接アクセスしない。フラッシュは、マスタコントローラにより判断された特定の所定のポイントでのみ、書き込まれる。これらのポイントはＣＰＵコマンドとは無関係であり、ＣＰＵにより直接トリガされることはできない。
【０１０４】
[00116]  上述の実装形態は、本明細書に記載した原理の例示的な例に過ぎない。種々の他の構成及びアーキテクチャが用いられ得る。例えば、ＤＲＡＭコントローラ及び論理フラッシュコントローラの機能は、結合して単一のコントローラとされてもよい。他の実装形態においては、マスタコントローラ及びバスコントローラの機能が結合されてもよい。バス、揮発性メモリ、及び不揮発性メモリ装置の数及び種類は、様々な設計パラメータ及び新しい技術に適合するよう変更され得る。例えば、上記の例にはＳＡＴＡバス、ＤＲＡＭメモリ、及びＮＡＮＤメモリが記載されているが、種々の他のバス及びメモリ技術が用いられてもよい。
【０１０５】
[00117]  また、図１乃至４に示す上述したアーキテクチャは一例に過ぎない。多数の代替的なアーキテクチャが用いられ得る。上述の原理はＣＰＵとフラッシュメモリ群との間のゲートキーパとして機能するＤＲＡＭ論理フラッシュを示すが、ＤＲＡＭ論理フラッシュはＣＰＵと従来の回転するプラッタハードドライブ又は他の不揮発性メモリとの間に介在されてもよい。
【０１０６】
[00118]  したがって、ＳＳＤは、標準的なハードドライブの完全互換品（drop in replacement）であり、演算装置へのプログラミング又は物理的な変更を何ら要さない。
【０１０７】
[00119]  以上の説明は、記載された原理の例を例示及び説明するためにのみ提示されている。この説明は網羅的であること又はこれらの原理を開示されたいずれかの精密な形に限定することを意図するものではない。上述の教示に照らして多くの修正及び変更が可能である。
【図１】
0006465806.tif 000002
【図２】
0006465806.tif 000003
【図３】
0006465806.tif 000004
【図４】
0006465806.tif 000005
【図５Ａ】
0006465806.tif 000006
【図５Ｂ】
0006465806.tif 000007
【図６Ａ】
0006465806.tif 000008
【図６Ｂ】
0006465806.tif 000009
【図７】
0006465806.tif 000010
【図８】
0006465806.tif 000011
【図９】
0006465806.tif 000012
【図１０】
0006465806.tif 000013