回転ディスクドライブを有するデータストレージシステムであって、前記回転ディスクドライブの設定されたスタートアドレスを有するバーストデータをリードするための第1コマンドをホストシステムから受信する手段と、前記第1コマンドの前記バーストデータの前記アドレスが、前にアクセスされたアドレスと不連続であるかどうかを判定する手段と、前記アドレスが不連続であると判定される場合、前記要求されたデータを前記回転ディスクドライブからリードし、前記データの初期位置を不揮発性メモリデバイスにコピーする手段と、前記回転ディスクドライブの同一の前記スタートアドレスを有するバーストデータをリードするための第2コマンドをホストシステムから受信する手段と、前記バーストデータの前記アドレスが、前にアクセスされたアドレスと不連続であるかどうかを前記第2コマンドから判定する手段と、前記アドレスが不連続であると判定される場合、前記要求されたデータの初期位置を前記不揮発性メモリからリードし、前記要求されたデータの残り部分を前記回転ディスクドライブからリードすることにより、前記回転ディスクドライブにおけるシークタイムに起因する前記ホストシステムへのデータ供給の遅延を除去する手段と、を備える、データストレージシステム。前記回転ディスクドライブおよび前記不揮発性メモリは、コンピュータシステムの一部であり、前記不揮発性メモリは、前記コンピュータシステムから取り外し可能であり、且つフラッシュメモリを含む半導体メモリであり、前記回転ディスクドライブは、磁気ハードディスクドライブである、請求項1に記載のデータストレージシステム。コンピュータシステムに提供されるハードドライブからのデータのリード処理を向上させる方法であって、前記ハードドライブの設定されたスタートアドレスを有するバーストデータをリードするためのリクエストをホストシステムから受信すること、前記要求されたリクエストの前記アドレスが、前にアクセスされたアドレスと不連続であるかどうかを判定すること、前記要求されたリクエストの前記アドレスが、前にアクセスされたアドレスと連続する場合、前記ハードドライブから前記要求されたデータをリードすること、前記要求されたリクエストのアドレスが、前にアクセスされたアドレスと連続ではない場合、前記要求されたデータの第1部分が不揮発性マスストレージデバイスに存在するかどうかを判定すること、前記要求されたデータの前記第1部分が前記不揮発性マスストレージデバイスに存在する場合、前記要求されたデータの前記第1部分を前記不揮発性マスストレージデバイスからリードし、前記要求されたデータの残りの部分を前記ハードドライブからリードすること、前記要求されたデータの前記第1部分が前記不揮発性マスストレージデバイスに存在しない場合、前記要求されたデータの前記第1部分を前記ハードドライブからリードし、前記要求されたデータの前記第1部分を前記不揮発性マスストレージデバイスにコピーすること、を備える方法。前記ハードドライブおよび前記不揮発性マスストレージデバイスは、コンピュータシステムの一部であり、前記不揮発性マスストレージデバイスは、前記コンピュータシステムから取り外し可能であり、且つフラッシュメモリを含む半導体メモリであり、前記ハードドライブは、磁気ハードディスクドライブである、請求項3に記載の方法。データストレージシステムであって、第1不揮発性ストレージデバイスと、前記第1不揮発性ストレージデバイスよりもより遅い平均アクセスタイムおよびより大きい容量を有する第2不揮発性ストレージデバイスであって、前記より遅い平均アクセスタイムは、前記第2不揮発性ストレージデバイスがデータをリードし始める前に必要な平均遅延である、前記第2不揮発性ストレージデバイスと、ストレージコントローラであって、前記第1ストレージデバイスからデータの第1部分をリードさせ、前記第2ストレージデバイスからデータの第2部分をリードさせ、前記第2ストレージデバイスの設定されたスタートアドレスを有するデータフラグメントをリードするための第1コマンドをホストシステムから受信し、前記データフラグメントの前記アドレスが、前にアクセスされたアドレスと不連続であるかどうかを前記第1コマンドから判定し、前記アドレスが不連続であると判定された場合、前記第2ストレージデバイスから前記要求されたデータをリードさせ、前記データの初期位置を前記第1ストレージデバイスにコピーさせるように動作可能である前記ストレージコントローラと、を備える、データストレージシステム。前記ストレージコントローラは、前記第2ストレージデバイスの同一の前記スタートアドレスを有するデータフラグメントをリードするための第2コマンドをホストシステムから受信し、前記データフラグメントの前記アドレスが、前にアクセスされたアドレスと不連続であるかどうかを前記第2コマンドから判定し、前記アドレスが不連続であると判定された場合、前記要求されたデータの初期位置を前記第1ストレージデバイスからリードさせ、前記要求されたデータの残り部分を前記第2ストレージデバイスからリードさせるようにさらに動作可能である、請求項5に記載のデータストレージシステム。前記第1ストレージデバイスは半導体メモリであり、前記第2ストレージデバイスはハードドライブであり、前記アドレスが不連続であると判定された場合、前記要求されたデータの初期位置を前記第1ストレージデバイスからリードすることにより、前記不連続なアドレスへの遷移における前記ハードドライブのシーク遅延に起因する前記ホストシステムへのデータ供給の遅延を低減させる、請求項6に記載のデータストレージシステム。データをリードする方法であって、データアドレスのデータをリードするためのリードコマンドをホストシステムから受信すること、前記データの第1部分が第1ストレージデバイスに存在するかどうかを判定すること、前記データの第1部分が前記第1ストレージデバイスに存在する場合、前記第1ストレージデバイスから前記データの前記第1部分をリードすること、前記第1ストレージデバイスにおける前記データの前記第1部分のリードが完了する前に、前記データの残り部分をリードするための準備を第2ストレージデバイスにさせること、前記第2ストレージデバイスが前記データの前記残り部分をリードする準備が完了した後に、前記データの残り部分を前記第2ストレージデバイスからリードすること、前記データの第1部分が前記第1ストレージデバイスに存在しない場合、前記データの第1部分および前記データの残り部分の両方を前記第2ストレージデバイスからリードすること、を備える、方法。前記データの第1部分および前記データの残り部分の両方は、前記第1ストレージデバイスが利用可能ではない場合に前記第2ストレージデバイスからリードされる、請求項8に記載の方法。マスストレージデバイスを改良する継続された努力がなされている。本発明は、一般に第1ストレージデバイス、第2ストレージデバイスおよびストレージコントローラを含むデータストレージシステムを提供する。第2ストレージデバイスは、第1ストレージデバイスよりもより低速な平均アクセスタイムおよびより大きい容量を有する。平均アクセスタイムは、そのデバイスがデータをリードまたはライトし始める前に必要な平均遅延である。ある実施形態において、ストレージコントローラは、データの第1部分を第1ストレージデバイスに、データの第2部分を第2ストレージデバイスに導くよう動作可能である。他の実施形態において、ストレージコントローラは、データの第1部分を第1ストレージデバイスから、データの第2部分を第2ストレージデバイスから取り出す。典型的には、データの第1部分は、連続的なデータストリーム中のデータの第1部分である。同様に、データの第2部分は、そのデータストリームの残りの部分である。データの第1部分の位置およびデータの第2部分の位置に関する情報を保持するためには、テーブルがふつう用いられる。他の実施形態において、データは、まずデータアドレスにライトするためのライトコマンドをホストシステムバスから受け取ることによって記憶される。データの第1部分が第1ストレージデバイスにそれから記憶される。第1デバイスに前記データの第1部分が完全に記憶される前に、第2ストレージデバイスがデータをライトできるよう準備される。第2ストレージデバイスが準備できた後、第2ストレージデバイスにデータの残りの部分が記憶される。さらに他の実施形態において、リードコマンドがまずホストシステムバスから受け取られる。データストレージシステムはそれから、データの第1部分が第1ストレージデバイス上に存在するかを決定する。もしデータが第1ストレージデバイス上に存在するなら、データの第1部分が第1ストレージデバイスからリードされる。データの第1部分をリードすることの完了の前に、第2ストレージデバイスがデータの残りの部分をリードできるよう準備される。そうでなければ、もしデータの第1部分が第1ストレージデバイス上に存在しないなら、データの第1部分およびデータの残りの部分の両方は第2ストレージデバイスからリードされる。本発明の他の局面および優位性は、添付の図面と併せて以下の詳細な説明から明らかになろう。図面は例示的に本発明の原理を示す。本発明は、添付の図面と併せて以下の詳細な説明によって容易に理解されよう。図面において同様の参照番号は同様の構成要素を示すことが理解されよう。また図中の描写は必ずしも正しい縮尺ではないことが理解されよう。以下の記載において、本発明の完全な理解を提供するために多くの具体的な詳細が述べられる。しかし、本発明はこれら特定の詳細の一部または全てがなくても実施されえることが当業者には明らかだろう。あるいは、よく知られたプロセスステップは、本発明を不必要にぼかさないために詳細には記載されていない。本発明は、それぞれ長所および短所を有する2つの別個のマスストレージデバイスを組み合わせることによって、補助メモリともふつう呼ばれる、従来のマスストレージデバイスを一般に改良する。例えば、フラッシュは、ハードドライブより速いアクセスタイムを有するが、ふつうはハードドライブほどの記憶容量を有しない。当業者には理解されるように、一方が他方よりも速いアクセスタイムを有する限り、任意の2つの不揮発性記憶装置が本発明では用いられえる。記憶デバイスに適用されるように、アクセスタイムは、ストレージデバイスがデータリクエストを受け取る時と、そのストレージデバイスが実際にそのデータをリードおよび/またはライトし始める時との間の時間としてふつう定義される。例えば、ハードまたはフロッピー登録商標のいずれのディスク上のデータについても、アクセスタイムは、一般には、コマンドオーバヘッドタイムcommandoverheadtime、シークタイムseektime、セトルタイムsettletime、およびレイテンシlatencyの和に等しい。シークタイムおよびレイテンシがディスクのアクセスタイム全体を支配する。ディスクのシークタイムは、リード/ライトヘッドがあるトラックから他へと移動するのにかかる時間である。ハードディスクについては、これは典型的には、隣接するトラックへのシークの場合、1ミリ秒であり、フルストロークのシークについては15ミリ秒内側から外側トラックへのシーク、またはその逆およびランダムシークの平均は10ミリ秒である。レイテンシは、いったんヘッドがアドレスされたトラック上に位置してから、プラッタ上のアドレスされたセクタがヘッドまで回転する時間であり、ディスクの回転速度の関数である。7200rpmの回転速度については、レイテンシは、平均4.14ミリ秒であり、最大8.3ミリ秒である。対照的に、典型的なフラッシュディスクデバイス上では、データのセクタは、約30μSでデバイスに転送され、8セクタがフラッシュメモリ中ではパラレルに200μSでプログラムされえる。これは、約16MB/sのバーストライトスピードを提供し、ここで8セクタが250μS毎に書き込まれえる。しかし、デバイスは、ガーベジコレクション、データのブロックを完成させるためのデータセクタのリロケーション、およびブロック消去のような、管理上の動作もときどき実行しなければならない。したがって、8個のセクタをプログラムするための実効時間は、時としてこれよりもかなり長くなりえる。したがって、フラッシュの持続されたライトレートは、約15MB/秒でありえる。もちろん、他のセクタ転送およびパラレルプログラミングスキームもフラッシュディスクデバイスでは採用されえ、異なる動作スピードを与えうる。図1Aは、本発明を利用しえる例示的汎用コンピュータシステム100を示す。要素は、コンピュータ105、マウス110およびキーボード115のようなさまざまな入力デバイス、およびモニタ120およびプリンタ125のようなさまざまな出力デバイスを含む。図1Bは、その本質的な要素を示す図1Aのコンピュータシステム100の要約された表現を示す。単一の要素130は、マウスおよびキーボードのようなユーザがコンピュータシステム100と相互対話することを可能にする入力デバイスを示す。同様に、単一の要素135は、モニタおよびプリンタのようなコンピュータシステム100が達成したことを表示する出力デバイスを示す。コンピュータシステム100の中心は、中央処理ユニットCPU140であり、命令を実行する要素である。メインメモリ145は、典型的には揮発性であり、CPU140に実行されるべき命令およびその命令によって操作されるべきデータを提供する。これらの要素130、135、140、および145はこの技術分野ではよく知られている。改良されたマスストレージデバイス150は、コンピュータ100が持続的に大量のデータを保持することを可能にする。要素130、135、140、145、および150は、互いにホストバス155を介して情報を交換できる。図2Aは、本発明のある実施形態による改良されたマスストレージデバイス150Aを示す。2つのマスストレージデバイス、フラッシュメモリシステム205およびハードドライブ210は、並列に接続される。フラッシュメモリシステム205は、フラッシュメモリアレイ215およびフラッシュコントローラ220を含む。ハードドライブ210は、磁気ハードディスク225およびディスクコントローラ230を含む。それぞれのコントローラ220および230は、それぞれのメモリタイプについて特定の動作を管理する。例えば、フラッシュコントローラ220は、全てのデータセクタの論理物理マッピングおよび全てのフラッシュメモリ管理を制御し、それによりフラッシュコントローラ220およびフラッシュメモリアレイ215の間のインタフェース250が物理的なインタフェースになるようにする。ディスクコントローラ230は、リードおよびライトのための磁気ハードディスク225の動作を管理する。コントローラ220および230の両方は、論理インタフェース260および265を介してルータ235に接続する。ホストインタフェース240およびストレージコントローラ245は、両方ともルータ235の上流に配置され、ルータは、データおよび制御情報が、ホストインタフェース240と、ディスクコントローラ230またはフラッシュコントローラ220のいずれかとの間でいずれかの方向へ渡されることを可能にする。加えて、ルータ235は、ディスクコントローラ230およびフラッシュコントローラ220の間でいずれかの方向へデータの転送を制御しえる。このような転送は、スタンドアローン動作としてなされえる。代替として、このような転送は、ホストインタフェース240およびマスストレージコントローラ220または230のうちの1つの間でいずれかの方向へのデータ転送と共になされえる。ルータ235は、このようなデータ転送についての制御論理を組み込みえる。ホストインタフェース240は、ホストバス155への直接インタフェースを提供し、ホストバス155上で用いられる特定のプロトコルについての全てのサポートを提供しえる。ホストインタフェース240、ディスクコントローラ230および磁気ハードディスク225によって形成されるサブシステムは、ホストインタフェース240、フラッシュコントローラ220およびフラッシュメモリアレイ215によって形成されるサブシステムと共に、それぞれ完全なマスデータストレージシステムを形成する。ルータ235は、ホストインタフェース240から変更を加えることなくデータおよび制御信号を通しえ、またはコントローラ220および230と通信するための代替のプロトコルを確立しえる。ルータ235およびマスストレージコントローラ220または230間のインタフェース260および265は、ATAのような標準的プロトコルでありえ、または改良されたマスストレージデバイス150のために定義された特別なインタフェースでありえる。インタフェース260および265は典型的には、フラッシュメモリシステム205およびハードドライブ210中のデータの個別のセクタにランダムリードおよびライトアクセスを提供する論理インタフェースであり、それぞれの記憶メディアの物理的特性に依存しない。加えて、フラッシュコントローラ220は、フラッシュメモリアレイ215の予約された領域への直接アクセスを行うために、インタフェース260上で特別のコマンドまたは操作をサポートしえ、これはストレージコントローラ245Aによって用いられるテーブルおよび情報ログの記憶のために用いられえる。代替として、ストレージコントローラ245Aは、そのようなテーブルおよびログのためのそれ自身の不揮発性メモリを有してもよい。ストレージコントローラ245Aは、ホストインタフェース240およびマスストレージコントローラ220および230の間の情報の転送を指令するインテリジェントコントロールユニットである。ストレージコントローラ245Aは、フラッシュメモリシステム205またはハードドライブ210へのデータの記憶またはそれからのデータのリードを調整する。ストレージコントローラ245Aは、フラッシュメモリアレイ215中に記憶された情報のためのアドレステーブルを保持しえる。揮発性メモリは、ホストインタフェース240、ルータ235、フラッシュコントローラ220またはディスクコントローラ230を含む改良されたマスストレージデバイス150の要素の多くにおいてバッファまたはキャッシュメモリとして機能する。単一の揮発性メモリがさまざまな要素において動作するようスケジューリングされてもよく、または別個の揮発性メモリ群がそれぞれの要素の専用として機能してもよい。他の実施形態において、コントローラ220および230の機能は、統合化されたコントローラデバイスにおいて、ルータ235と共にマージされる。このデバイスは、記憶コントローラ245およびホストインタフェース240も含みえる。しかし、このようなコンフィギュレーションは、新しいコントローラユニットの製造を必要とする。したがって、コントローラ220および230のうちのいずれかまたは両方は、単にメモリデバイス中には含まれない。このようなコンフィギュレーションは新しい制御回路が開発されることを必要とするが、要求される全要素の数も減らしえる。図2Bは、本発明の他の実施形態による改良されたマスストレージデバイス150Bを示す。この改良されたマスストレージデバイス150Bは、図2Aの改良されたマスストレージデバイス150Aにおけるのと同じハードドライブ210の要素を維持するが、図2Aのストレージコントローラ245Aのメイン機能と共にルータ235およびホストインタフェース240の機能を含むストレージコントローラ245Bを用いる。論理インタフェース260はなくされ、フラッシュメモリアレイ215Bへ直接の物理インタフェース275によって置き換えられている。このような構成においては、ディスクアクセラレータ250は、好ましくは、ハードドライブ210へのATAインタフェース上のフロントエンドキャッシュであるか、またはハードドライブ210の既存の要素を利用するためにハードドライブ210のアセンブリに統合されえる。この実施形態において、フラッシュコントローラ220の機能は必要とされず、フラッシュメモリアレイ215Bは、論理データ記憶デバイスの一部を形成しないが、物理記憶として直接に用いられる。これはデータのストリームの一時記憶には特に適する。用いられる具体的なアーキテクチャにかかわりなく、ディスクアクセラレーションは、第2ストレージデバイスがレイテンシを起こしているあいだに、一般にヘッドデータを第1ストレージデバイスにライトおよび/またはそれからリードすることによって達成されえる。図2Aおよび図2Bに示される実施形態において、フラッシュメモリアレイ215は、磁気ハードディスク225よりも相当少ないレイテンシしか起こさない。磁気ハードディスク225のリード/ライトヘッドが適切に位置するまで待つ代わりに、データストリームヘッドデータの初期位置は、フラッシュメモリシステム205のフラッシュメモリアレイ215に書き込まれる。いったん磁気ハードディスク225がデータを受け入れる準備ができると、残りの部分ボディデータがハードドライブ210の磁気ハードディスク225に書き込まれる。それと共に、ヘッドデータおよびボディデータは、単一のデータフラグメントをなす。データフラグメントは、第2ストレージデバイスが非トリビアルなアクセスタイムを生じるデータのバーストとして定義されえる。磁気ハードディスク225の場合、データフラグメントは、先行データと不連続なためにハードドライブ210にシークタイムおよび/またはレイテンシを起こすシーケンシャルなデータとして記述されえる。改良されたマスストレージデバイス150がどのように利用されるかに依存して、ヘッドデータのサイズは、必要に応じて計算されてもよく、または単に標準的なサイズでありえる。標準的なサイズは、ハードドライブ210の平均シークタイム、フラッシュメモリアレイ215のサイズ、および/またはガーベジコレクション動作の結果大きく延びた実効的プログラミングタイムが発生する前にライトされえる論理的に連続なセクタを含む、多くのファクタに基づきえる。図3Aは、ハードドライブアドレス空間315およびフラッシュアドレス空間320中のヘッドデータ305およびボディデータ310の要約された表現を示す。ヘッドマッピングテーブル325は、ストレージコントローラ245Aまたは245Bによって用いられ、ヘッドデータ305およびボディデータ310の記憶を調整する。もしフラッシュアドレス空間320が充分大きければ、ヘッドデータ305は、フラッシュメモリアレイ215中に永続的に常駐しえる。しかし、もしフラッシュ空間が限られるなら、新しいヘッドデータのためのスペースを作るために、ヘッドデータ305がフラッシュメモリアレイ215から除去されることを可能にするメカニズムが実現されなければならない。あるそのようなメカニズムは、ヘッドデータ305のためにディスクアドレス空間内にスペース330を予約しておくことを含みえる。フラッシュメモリアレイ215内でスペースが必要になると、ヘッドデータ305が予約されたスペース330へコピーされ、磁気ハードディスク225上のデータフラグメント全体が連続になるようにされえる。好ましくは、ヘッドデータ305をコピーをすることは、改良されたマスストレージデバイス150Aまたは150Bが使用中ではないときに、バックグラウンド動作としてなされえる。このようなセクタリロケーションの頻度は、ディスクデバイスおよびフラッシュメモリデバイスの記憶容量の比、および改良されたマスストレージデバイス150に書き込まれる別個の連続したセクタシーケンス群の個数に好ましくは依存する。同様に、図3Bは、改良されたマスストレージデバイス全体についてのアドレス空間350に対するディスクアドレス空間315およびフラッシュアドレス空間320の要約された表現を示す。空間がヘッドデータのためにディスクアドレス空間315内に予約されるので、改良されたマスストレージデバイスのアドレス空間350は、ディスクアドレス空間315に等しい。改良されたマスストレージデバイスを用いることによるシステムパフォーマンスの向上は、図4Aおよび図4Bの間の差でわかる。図4Aは、ライトコマンド405がマスストレージシステムによって受け取られるときに起こる、従来のライト処理を示すタイミング図である。ここで、マスストレージシステムは、本発明によって提供されるディスクアクセラレーションを使用していない。典型的には、データは、ハードドライブ210のためのリード/ライトヘッドが所定位置に動き415始める時刻とほぼ同じ時にディスクキャッシュへ転送410され始める。いったんリード/ライトヘッドおよび磁気ハードディスク225が所定位置にくると、データは磁気ハードディスク225に書き込まれ420始める。典型的には、データをキャッシュから磁気ハードディスク225に書くのにかかる時間420は、入ってくるデータをキャッシュに転送するのにかかる時間410より長い。図4Bは、ライトコマンド405が本発明の実施形態によるディスクアクセラレーションを用いるマスストレージシステムによって受け取られるときに起こる、ライト処理を示すタイミング図である。いくつかの異なる動作が、受け取られるライトコマンド405の結果として始まりえる。例えば、ヘッドデータ425および430のフラッシュメモリへの転送が開始されえる。揮発性バッファメモリは、フラッシュのような管理上の動作を必要としない。したがって、ヘッドデータをフラッシュメモリシステム205に記憶させること430は、ヘッドデータをバッファに転送すること425、およびそれからヘッドデータをバッファからフラッシュメモリシステム205に転送すること425によって、ヘッドデータをフラッシュメモリシステム205内に生じること430を典型的には含む。ヘッドデータ425および430が記憶されるとき、ハードドライブ210は、データを受け取る準備をする。もしヘッドデータのためのスペースが予約されているなら、新しいライトコマンド435がハードドライブ210に提示される。この新しいライトコマンド435は、リード/ライトヘッドをデータフラグメントのアドレスには導かないが、ボディデータのアドレスには導き、このアドレスは単に、ヘッドデータのためにアロケートされたスペースによってオフセットされたフラグメントアドレスである。新しいライトコマンド435がハードドライブ210によって受け取られた後、リード/ライトヘッドおよびハードディスクは適切に配置される440。いったんヘッドデータ425が完全にフラッシュバッファ425に転送されると、ボディデータが改良されたマスストレージデバイスのディスクキャッシュ内へ記憶され始める445。したがって、ホストシステムがデータを改良されたマスストレージデバイス150へ転送しえるスピードは、ディスクアクセラレーションを用いないシステムと同じである。リード/ライトヘッドおよびハードディスクが所定位置にあるとき、ボディデータ450は、ボディデータが利用可能になるとすぐに磁気ハードディスクへ書き込まれ始めえる。図4Bにおいてデータフラグメントをライトするのにかかる総時間は、図4Aにおいて必要とされる総時間より大幅に少ない。しかし、システムパフォーマンスの全体的な向上は、フラッシュメモリアレイ215の容量、およびどのくらい頻繁に改良されたマスストレージデバイス150がアクセスされるかに依存する。フラッシュメモリアレイ215の容量が増すにつれて、システムパフォーマンスの効果は図5Aに示されるように、より劇的になる。フラッシュメモリアレイ215が大きければ大きいほど、複数のデータフラグメントを有するアクティビティのバーストのあいだに記憶されえるデータは大きくなる。同様に、図5Bは、改良されたマスストレージデバイス150がより多く利用されるほど、システムパフォーマンスが低下することを示す。もしマスストレージデバイス150が常にアクセスされるなら、ヘッドデータをフラッシュメモリアレイ215から磁気ハードディスク225に転送するのに充分な時間が存在しないことになる転送が必要であると仮定して。その結果、マスストレージデバイス150は、そのエラーハンドリングルーチンに依存して、新しいヘッドデータを受け取る前に古いヘッドデータを転送するか、またはフラッシュメモリアレイ215を使うのを止め、新しいデータフラグメントについてはハードドライブ210だけを使うかをしなければならない。もし後者のエラーハンドリングルーチンが使われるなら、システムパフォーマンスは図5Bに示されるようにハードドライブ210だけを使ったシステムと同じになるだろう。このようなエラーハンドリングルーチンは、フラッシュメモリアレイ215が一時的に利用可能ではない例えば、フラッシュメモリアレイ215がガーベジコレクションプロセスを処理している場合にも利用されえる。ガーベジコレクションとのコリジョンは、もしガーベジコレクション動作が、ホストデータがハードドライブ210に書き込まれているあいだに実行されたなら低減されえ、これは典型的にはフラッシュメモリアレイ215についてアクティビティがない時間である。図6は、リングバッファ600の形態の、フラッシュメモリアレイ215B中のデータのストリームにおけるセクタの記憶を整理する一方法を示す。データのセクタを書き込む現在の位置は、ライトポインタ605によって定義され、これは無限サイクルとしてアドレス空間を通して図3の時計回りに移動する。アドレス空間は、メタブロック例えば610および615によって定義され、これらは、所定の順序で、またはライトポインタ605が完全なメタブロックから新しい消去されたメタブロックへ移動するときに動的に決定される順序で、リンクされる例えば620。消去ポインタ625は、無限サイクルとしてアドレス空間を通して同様に図6で時計回りに移動する。消去ポインタ625によって特定されたメタブロックは、新しいデータセクタの記憶のために、ライトポインタ605の前に少数の消去されたメタブロックのプールが維持されるような速度で消去されていく。消去されるブロックは、リングバッファ600中では最も古く書き込まれたデータを含む。ヘッドデータは、サイクリックアドレス空間中に記憶され、すなわち、これは最高アドレスから最低アドレスへとインクリメントステップを提供することによってインクリメントアドレス遷移が連続的になされえるアドレス空間である。図2Aに示された改良されたマスストレージデバイス150Aの実施形態においては、サイクリックアドレス空間は、フラッシュメモリシステム205の論理アドレス空間の一部の中でサイクリックバッファによって提供される。図2Bに示される改良されたマスストレージデバイス150Bの実施形態において、サイクリックアドレス空間は、フラッシュメモリアレイ215Bの物理アドレス空間内にリングバッファ600によって提供される。フラッシュメモリのコストをなるべく下げるために、フラッシュメモリアレイ215の容量は、改良されたマスストレージデバイス150のためのアドレス空間全体350に関する全てのヘッドデータを記憶するのに必要とされる容量よりも通常は小さい。したがって、ヘッドデータの連続した記憶のためにフラッシュメモリアレイ215内のスペースを空けるために、ヘッドデータをフラッシュメモリアレイ215から磁気ハードディスク225上の適切な予約された空間へコピーするための条件が存在する。これが実行される手段は、改良されたマスストレージデバイス150によって達成されるシステムパフォーマンスの全体的向上に対する重要な効果を有しえる。図9は、ハードドライブ210へのヘッドデータのコピーを管理する方法に関する、リングバッファ600内のセクタ記憶位置のマップを示す。リングバッファ600は、サイクリックアドレス空間を有し、その最後の物理アドレスからその最初の物理アドレスへの逆戻りを持つ。リングバッファ600は、メタブロック960、965、970、975、980、985、990、および995を含む。セクタデータは、インクリメントライトポインタ605によって定義される位置においてバッファに書き込まれる。図9は、バッファ910のトップとしてアサインされるライトポインタ605を含むメタブロック960で、移動するリニアアドレス空間としてこのサイクリックアドレス空間を示す。サイクリックバッファ600においてライトポインタ605の直前のメタブロック995は、バッファ940のエンドとしてアサインされる。消去ポインタ625は、消去のための次のターゲットブロックを定義し、バッファ中のヘッドデータエントリの最後も定義する。消去ポインタ625およびバッファ940のエンドの間のメタブロックは、消去された状態にある。有効なヘッドデータは、消去ポインタ625によって特定されたメタブロック990からコピーされ、メタブロック990の消去を可能にする。ヘッドデータ305は、もしそれがリングバッファ600に書き込まれてから読み出されたことがなければ、磁気ハードディスク225上の対応する予約された空間330にコピーされる。しかし、ヘッドデータ305は、もし書き込まれてから読み出されたなら、ライトポインタ605においてフラッシュメモリに再びコピーされえ、したがってリングバッファ600内に保持されえる。これにより、ホストシステムによって読み出される可能性が高いヘッドデータが、リングバッファ600内に利用可能なまま残ることを可能にする。有効なヘッドデータは、ヘッドマッピングテーブル325、およびデータセクタそのもののヘッダ中の論理アドレス情報を用いて特定されえる。もし有効なヘッドデータが、メタブロック990および他のメタブロックの間の境界と重なるなら、ヘッドデータ全体がそのままコピーされる。しかしヘッドデータは、同じ論理アドレスについてのより最近のヘッドデータがリングバッファ600内の他のどこかに存在するために無効でありえる。この場合、ヘッドデータは、メタブロック990の消去の前にコピーされる必要はない。消去ポインタ625によって特定されたもの以外のメタブロックには、コピーアヘッド操作が実行されえる。これは例えば、ホストによって要求されてハードディスク225へのコピー操作が一時的にディスクアクセスによって妨げられるあいだの、フラッシュメモリアレイ115へのコピー操作が継続することを可能にする。フラッシュコピーポインタ915およびディスクコピーポインタ905は、次に必要とされるコピー操作の位置を特定するために用いられる。消去ポインタ625およびコピーポインタ905および915の間に位置する有効なヘッドデータは、その必要とされるコピー操作が全て実行されていなければならない。リングバッファ600内にはできるだけ多くの有効なヘッドデータを記憶することが望ましいので、実行されるそのようなコピーアヘッド操作の程度には制限が設けられている。ディスクコピーリミット920およびフラッシュコピーリミット930は、ディスクコピーポインタ905およびフラッシュコピーポインタ915が消去ポインタ625より前に移動しえる最大限度を定義する。メタブロック消去は、消去ポインタ625によって特定されるメタブロックに制限される必要はない。例えば、もし消去ポインタ625におけるメタブロック990がさらなるフラッシュコピー操作を必要とするなら、消去ポインタ625およびディスクコピーポインタ905の間のメタブロック980は、既に未コピー有効データを含まず、メタブロック980はただちに消去されえる。この場合、リングバッファを形成するようメタブロックがリンクされる順序を定義するブロックリンクテーブルが変更され、新しく消去されたメタブロック980を消去ポインタ625より下に移動しえる。ヘッドデータのコピーは、可能である限りバックグラウンドタスクとして実行される。フラッシュメモリアレイ215へのコピーは、ホストディスクまたはディスクホストデータ転送と同時に実行されえる。代替として、もし完全なメタブロックがコピーされなければならないなら、実際のデータは動かされる必要はない。ブロックリンクテーブルは、単にバッファ内でのデータをリロケートするよう変更されえる。高速ディスクコピーは、ホストインタフェースが非アクティブであるときに、リングバッファ600およびハードディスクキャッシュの間で実行されえる。ディスクコピーは、もしホストアクティビティが開始するなら安全にアボートされえ、後に再開または反復されえる。フラッシュメモリアレイ215中に記憶される管理テーブルは、ヘッドマッピングテーブル325およびブロックリンキングテーブルを含みえる。ある実施形態において、ヘッドマッピングテーブル325は、フラッシュメモリアレイ215中に記憶されたそれぞれの有効なヘッドデータフラグメントについて、ただ一つのエントリしか有しない。エントリは、それから、定義された論理アドレスを持つエントリをサーチすることを可能にするために、専用のブロックにおけるヘッドマッピングテーブルセクタのセットの中に不連続な論理アドレス順で記憶される。それぞれのエントリは、改良されたマスストレージデバイス内での論理アドレス、リングバッファ内での物理アドレス、ヘッドデータのサイズもし固定されたヘッドサイズが用いられないなら、書き込まれてからヘッドデータが読み出されたことを示すリードフラグ、およびヘッドデータがハードドライブ210にコピーされたことを示すコピーフラグのための別個のフィールド群を有しえる。ブロックリンキングテーブルは、リングバッファ600中のそれぞれのリンクされたメタブロックについて1つのエントリを有する。エントリは、専用のブロックにおいてリンクテーブルセクタのセット中にブロックリンキング順に記憶される。新しいリンクテーブルセクタが追加されえ、それらの順序が変更されえる。それぞれのセクタはフルである必要はなく、新しいエントリが追加されえる。最後に書き込まれたリンクテーブルセクタは、専用ブロック内にある全ての有効なリンクテーブルセクタの位置およびそれらの順序を定義する情報を含みえる。図7は、本発明の例示的実施形態による例示的ライト技術のフロー図である。705において、データをあるアドレスXに書き込むために、コマンドがホストシステムバス155から受け取られる。710において、改良されたマスストレージデバイス150は、アドレスXが以前にアクセスされたアドレスと連続し、したがって既存のデータフラグメントの一部であるか、または以前のアドレスとは不連続であるかを決定し、新しいデータフラグメントの開始を定義する。もしアドレスが連続であるなら、データは、既存のデータフラグメントに連続して、715においてハードドライブ210に直接に書き込まれる。もしアドレスが不連続であるなら、データを、新しいデータフラグメントのためのヘッドデータとしてフラッシュメモリアレイ215に書き込むための試みがなされる。もしヘッドデータが書き込まれるなら、システムは、フラッシュメモリアレイ215が準備ができているかを720において決定する。もしフラッシュメモリアレイ215がなんらかの理由で利用可能でないなら、システムは単にハードドライブ210に715において書き込みえ、このフラグメントについてはアクセラレーションを実施しない。もしフラッシュメモリアレイ215が利用可能であるなら、次の3つの動作がほぼ同時に起こりえる。3つの動作の最初は、シークコマンドをハードドライブ210に725において送ることである。このシークコマンドは、もしデータが最終的にハードドライブ210にフラッシュメモリアレイ215から転送されることになっているなら、ヘッドデータのサイズに等しいオフセットを考慮しなければならない。したがってハードドライブ210は、リード/ライトヘッドをアドレスXHに位置付けるためのシークコマンドを受け取らなければならず、ここでHはヘッドデータオフセットのサイズである。730において、ヘッドデータは、フラッシュメモリアレイ215に書き込まれる。もしリングバッファが用いられるなら、ヘッドデータはライトポインタにおいて書き込まれる。735において、ブロックマッピングテーブルは、ヘッドデータがフラッシュメモリアレイ215だけに記憶されていることを示すようアップデートされる。適切にデータを調整するために、ストレージコントローラ245は、磁気ハードディスク225中の論理アドレスおよびフラッシュメモリアレイ215中の物理アドレスに関する情報を有さなければならない。加えて、他の情報もブロックマッピングテーブル中に記憶されてもよい。例えば、もしヘッドサイズが可変であるなら、ヘッドのサイズも記憶されなければならない。他のフラグは図8について以下に説明される。ヘッドデータがフラッシュメモリアレイ215に書き込まれ、ブロックマッピングテーブルがアップデートされるあいだ、ハードドライブ210は、磁気ハードディスク225が適切に位置付けられるのを740において待つ。いったん所定の位置になると、改良されたマスストレージデバイス150がボディデータをホストシステムバス155から受け取ったと仮定して、ボディデータが745において磁気ハードディスク225に書き込まれ始めえる。図8は、本発明の例示的実施形態による例示的リード技術のフロー図である。805において、データをあるアドレスXにおいて読み出すために、コマンドがホストシステムバス155から受け取られる。810において、ストレージコントローラ245は、アドレスXについてのエントリがブロックマッピングテーブル中に存在するかを決定する。もしアドレスがブロックマッピングテーブル中にないなら、システムはデータをハードドライブ210から815において読み出す。それから、820において、システムは、フラッシュメモリアレイ215が書き込みの準備ができているかを決定する。もしフラッシュメモリアレイ215がなんらかの理由例えばガーベジコレクションで利用可能でないなら、プロセスは単に終了し、ディスクアクセラレーションなしのシステムとして振る舞う。しかし、もしフラッシュメモリアレイ215が利用可能であるなら、データがハードドライブ210から読み出されているあいだ、ヘッドデータはフラッシュメモリアレイ215から825においてコピーされえる。それから、830において、ブロックマッピングテーブルは、ヘッドデータが今はフラッシュメモリアレイ215上に存在することを示すようアップデートされえる。いったんエントリがブロックマッピングテーブル中に存在すると、ストレージコントローラ245は、リードコマンドが805において受け取られた後に異なるパスをたどる。もし810においてアドレスがブロックマッピングテーブルにあるなら、ストレージコントローラ245は、ハードドライブ210中のボディデータのアドレスのためのシークコマンドをハードドライブ210に送る。本実施形態においては、ボディデータのアドレスは、ヘッドデータのサイズだけオフセットされたアドレスXである。840において、ストレージコントローラ245は、典型的にはフラッシュメモリアレイ215が準備できるのを待つ。しかしある実施形態は、ヘッドのコピーがハードドライブ210にも存在するかを決定し、もし適切であるなら、もしハードドライブ210がフラッシュメモリアレイ215より前に利用可能になるなら単にハードドライブ210からデータを読み出す、追加のエラーハンドリングルーチンを有してもよい。リード技術だけを用いるある実施形態においては、ヘッドデータのコピーは常にハードドライブ中に存在する。いったんフラッシュメモリアレイ215が利用可能になると、ヘッドデータは、フラッシュから845において読み出される。850において、ブロックマッピングテーブル中のフラグは、テーブルエントリに対応するデータが読み出されたことを示すようセットされえる。もしリングバッファ構成が用いられるなら、そのようなフラグは、それを含むメタブロックが消去されなければならないときに、ハードドライブではなくバッファのトップへコピーすることによって、リングバッファ内にエントリが保持されることを可能にする。ヘッドデータが完全にフラッシュメモリアレイ215から読み出されたあと、システムは、磁気ハードディスク225が正しく位置付けられるのを855において待たなければならない。いったん適切に位置付けられると、ボディデータは、磁気ハードディスク225から860において読み出される。本発明は、現在、考えられるベストモードにおいて記載されてきたが、多くの改変、動作のモードおよび実施形態が可能であること明らかであり、これらは当業者の能力および技術の範囲内で、さらなる発明的活動なしに実施可能である。例えば、他のマスストレージデバイスは、フラッシュまたはハードドライブ以外の技術を用いえ、バッテリーバックアップされたRAM、光学ディスク、オボニックユニファイドメモリOUM、磁気RAMMRAM、強誘電ポリマー、強誘電RAMFeRAM、シリコンオンインシュレータSoIなどを含みえる。したがって、特許証によって保護されるべきであると意図されるものは、特許請求の範囲に記載され、特許請求の範囲の精神および範囲内に入る全ての改変物および変更物を含む。