(57)【要約】【課題】ハイブリッドドライブ及び関連する方法はデータがハイブリッドドライブ内の不揮発性の格納媒体に転送されるレートを増加する。【解決手段】大きな不揮発性のソリッドステートメモリ装置を磁気ディスクドライブのキャッシュメモリとして使うことにより、非常に多数の書込みコマンドをキャッシュすることができ、効率的な態様により引き続き再配列され、実行される。さらに、不揮発性のソリッドステートメモリ装置に格納された書込みコマンドの一部分のみを戦略的に選択し、再配列することは再配列処理の効率を増加する。【選択図】図１
2013196755.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性のソリッドステートメモリ装置へのデータの格納を制御するようにプログラムされた制御ユニットと、磁気記憶ディスクとを含むハイブリッドドライブにデータを格納する方法であって、
格納するデータを受信するステップと、
前記磁気記憶ディスクに関連するＤＲＡＭバッファに受信データを格納することなく、受信データを前記不揮発性のソリッドステートメモリ装置に直接書込むステップと、
を具備する方法。
【請求項２】
前記制御ユニットは前記ソリッドステートメモリ装置に格納されたデータを読み出すステップと、前記データを前記磁気記憶ディスクに書き込むステップとをさらに実行する請求項１記載の方法。
【請求項３】
前記データを前記磁気記憶ディスクに書き込む前に前記データは前記ＤＲＡＭバッファに格納される請求項２記載の方法。
【請求項４】
前記ソリッドステートメモリ装置の記憶容量が消耗されたことを決定するステップをさらに具備し、
前記ソリッドステートメモリ装置に格納されたデータを読み出し、前記データを磁気記憶ディスクに書込むステップはこの決定に応じて実行される請求項３記載の方法。
【請求項５】
前記消耗された記憶容量は追加のデータを格納するのに利用できる記憶容量が実質的に無いことである請求項４記載の方法。
【請求項６】
前記消耗された記憶容量は追加のデータを格納するのに利用できる所定の記憶容量以下である請求項５記載の方法。
【請求項７】
前記磁気記憶ディスクがアイドル状態であるかを決定するステップをさらに具備し、
前記ソリッドステートメモリ装置に格納されたデータを読み出し、前記データを磁気記憶ディスクに書込むステップはこの決定に応じて実行される請求項２記載の方法。
【請求項８】
データ格納に利用可能である磁気記憶ディスクに書込まれたデータに対応する前記ソリッドステートメモリ装置中の場所を指定するステップをさらに具備する請求項２記載の方法。
【請求項９】
前記不揮発性のソリッドステートメモリ装置内で前記受信データを書込むことは、不揮発性のソリッドステートメモリ装置及び磁気記憶ディスクに関連するＤＲＡＭバッファに前記制御ユニットを接続するデータバスによって前記受信データを送信することを具備する請求項１記載の方法。
【請求項１０】
前記不揮発性のソリッドステートメモリ装置内で前記受信データを書込むことは、前記フラッシュ管理装置を前記不揮発性のソリッドステートメモリ装置に接続するＮＡＮＤインタフェースバスによって前記受信データを送信することを具備する請求項１記載の方法。
【請求項１１】
前記フラッシュ管理装置および制御ユニットは前記ハイブリッドドライブ中のシステム・オン・チップのエレメントである請求項１０記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ディスクドライブ、特にハイブリッドディスクドライブ中の書込み再配列のシステムおよび方法に一般的に関する。
【背景技術】
【０００２】
ハードディスクドライブはコンピュータ用の一般に用いられているデータ記憶装置で、データ記憶ディスクの表面上の同心のトラックにディジタルデータを主として格納する。データ記憶ディスクはその上に磁性材料の層を備えた回転可能なハードディスクである。また、データは、ディスクが一定角速度でその中心に関して回っている間に、トラックの近傍に保持される読取り／書込みヘッドを使用して、データ記憶ディスク上の所望のトラックから読み出されるか、トラックに書き込まれる。データは、ホストコンピュータからＨＤＤに転送された書込みコマンドに従ってデータ記憶ディスクに書き込まれる。
【０００３】
一般に、書込みコマンドは、各コマンドに関連するデータをデータ記憶ディスクに書き込まれるより非常に速くＨＤＤによって受信することができる。従って、ＨＤＤは、典型的には実際に書込みコマンドを実行する前に、ＤＲＡＭチップのような揮発性のバッファにホストコンピュータから受信したデータを一時的に格納し、ホストコンピュータから受信した各書込みコマンドを追跡するためにコマンドキューを使用する。揮発性のバッファに存在するデータがデータ記憶ディスクに安全に書き込まれる速度を最大限にするために、コマンドキューは典型的に再配列される。その結果、ホストシステムから転送された書込みコマンドは、受信した順に実行されない。代わりに、書込みコマンドは、読取り／書込みへッドの現在位置、各書込みコマンドによって指定された書込み場所、データ記憶ディスクの回転速度、ＨＤＤの最大シーク加速度、ＨＤＤなどのサーボ安定時間に基づいてＨＤＤにより実行されることができる関数として選択されている。
【０００４】
ハードディスクドライブ中のコマンドキューを再配列するための様々なアプローチが知られている。また、一般に、そのような再配列するスキームの効率は多くの書込みを再配列することにより向上させられる。例えば、４キロバイトのデータをランダムに書き込む場合、書込みコマンドを再配列しない場合は１秒当たり７０の入／出力操作（７０ＩＯＰＳ）のランダム書込み性能があり、６４の書込みコマンドを再配列する場合は、約２００のＩＯＰＳのＨＤＤは１５００の書込みコマンドを再配列する再配列アルゴリズムを用いると、潜在的に４００ものＩＯＰＳを実行することができる。しかしながら、ＨＤＤがコマンドキュー中で実行される次の書込みコマンドを選択することができる時間は制限されているので、現在の書込みコマンドが実行されている間、残りのコマンドのキューは再配列される必要がある。また、最短のアクセス時間を持つ書込みコマンドは決定される必要がある。
【０００５】
長いコマンドキューを再配列する時間が典型的な書込みコマンドを実行するのに必要な時間より一般に長いので、そのような長いコマンドキュー、例えば２００あるいはそれ以上の書込みコマンドを含むコマンドキューの使用は、一般に実行不可能である。従って、ＨＤＤのランダム書込みの性能における改良は、一般にＨＤＤサーボシステムの構造的な性能および記憶ディスク回転速度のインクリメンタルな改良に限定される。上記に鑑みて、書込みの再配列を改善し、及び／またはデータがＨＤＤの中の不揮発性の媒体に転送されるレートを増加させるシステムおよび方法が、一般に望まれている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２００５／０１８８１５１号明細書
【特許文献２】米国特許第７，０１０，６５３号明細書
【特許文献３】米国特許出願公開第２００７／０１３０４４２号明細書
【特許文献４】米国特許第７，４５７，０７７号明細書
【特許文献５】米国特許出願公開第２００９／０２９２８６５号明細書
【特許文献６】米国特許第７，６４４，２０６号明細書
【特許文献７】米国特許出願公開第２０１０／００１１１６８号明細書
【特許文献８】米国特許出願公開第２０１０／００７０６９９号明細書
【特許文献９】米国特許出願公開第２０１０／００７０６８９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、データがＨＤＤの中の不揮発性の媒体に転送されるレートを増加させるシステムと方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、不揮発性のソリッドステートメモリ装置と磁気記憶ディスクへのデータの格納を制御するようにプログラムされた制御ユニットを有するハイブリッドドライブ中のデータ格納方法は、格納されるデータを受信するステップと、磁気記憶ディスクに関連するＤＲＡＭバッファに受信データを格納することなく不揮発性のソリッドステートメモリ装置に受信データをダイレクトに書込むステップとを実行する制御ユニットを具備する。
【図面の簡単な説明】
【０００９】
【図１】図１は発明の実施例に従って、典型的なディスクドライブについての概要の見方である。
【図２】図２は記憶ディスクをサーボウェッジが記憶ディスクに書込まれた後に組織されたデータで説明する。
【図３Ａ】図３Ａは、発明の実施例に従って、ディスクドライブの動作線図をディスクドライブのためのキャッシュメモリとして構成されたフラッシュメモリ装置で説明する。
【図３Ｂ】図３Ｂは、発明の別の実施例に従って、ディスクドライブの動作線図をディスクドライブのためのキャッシュメモリとして構成されたフラッシュメモリ装置で説明する。
【図３Ｃ】図３Ｃは、発明の実施例に従って、ハイブリッドドライブにデータを格納するために方法ステップの流れ図を述べる。
【図４】図４は、発明の実施例の中で使用されるキャッシュディレクトリのブロック図を示す。
【図５】図５は、本発明の１つの実施例に従って、ディスクドライブ中のキャッシュメモリに格納される書込みコマンドの実行のために方法ステップの流れ図を述べる。
【図６】図６は、本発明の別の実施例に従って、ディスクドライブ中のキャッシュメモリに格納される書込みコマンドの実行のために方法ステップの流れ図を述べる。
【図７】図７は、本発明の別の実施例に従って、ディスクドライブ用の追出しアルゴリズムのために方法ステップの流れ図を述べる。
【図８】図８は、本発明の別の実施例に従って、ディスクドライブ中のキャッシュメモリに格納される書込みコマンドの実行のために方法ステップの流れ図を述べる。
【図９】図９は、概略的に多数の記憶ディスクで構成されたディスクドライブの部分的な側面図および多数の読取り／書込みへッドを示す。
【図１０】図１０は、本発明の別の実施例に従って、ディスクドライブ中のキャッシュメモリに格納される書込みコマンドの実行のために方法ステップの流れ図を述べる。
【発明を実施するための形態】
【００１０】
以下、第１の実施形態について図面を参照して説明する。なお、以下の図面で同一の部分は同一の参照数字を付して、重複した説明は省略する。
【００１１】
図１は、実施例に従って、典型的なディスクドライブについての概要の図である。明瞭さのため、ディスクドライブ１００は上蓋を省略して例証される。ディスクドライブ１００は、スピンドルモータ１１４によって回転する少なくとも１枚の記憶ディスク１１０を含んでいる。スピンドルモータ１１４はベースプレート１１６にマウントされる。アクチュエータアーム・アセンブリ１２０もベースプレート１１６にマウントされ、読取り／書込みへッド１２７を備えた撓みアーム１２２上でマウントされているスライダ１２１を含む。撓みアーム１２２は、軸受アセンブリ１２６に関して回転するアクチュエータアーム１２４に付けられている。ボイス・コイル・モータ１２８は、記憶ディスク１１０に対してスライダ１２１を相対的に移動させ、記憶ディスク１１０の表面１１２に配置された所望の同心のデータ格納トラック上で読取り／書込みへッド１２７を位置決めする。スピンドルモータ１１４、読取り／書込みへッド１２７、およびボイス・コイル・モータ１２８は、プリント回路基板１３２にマウントされる電子回路１３０に接続される。電子回路１３０はリードチャネル、マイクロプロセッサベースのコントローラ１３３、ランダムアクセスメモリ（ＲＡＭ）（ダイナミックＲＡＭでもよい）１３４、及び／またはフラッシュメモリ装置１３５およびフラッシュ管理装置１３６を含んでいる。明瞭さのため、ディスクドライブ１００は、単一の記憶ディスク１１０および単一のアクチュエータアーム・アセンブリ１２０で例証される。ディスクドライブ１００はさらに多数の記憶ディスクおよび多数のアクチュエータアーム・アセンブリを含んでいてもよい。さらに、記憶ディスク１１０の両側に撓みアームに結合される関連する読取り／書込みヘッドが備えられていてもよい。
【００１２】
いくつかの実施例では、ディスクドライブ１００はハイブリッドドライブとして構成され、通常動作に、データが記憶ディスク１１０、及び／またはフラッシュメモリ装置１３５に格納することができ、記憶ディスク１１０、及び／またはフラッシュメモリ装置１３５から読み出すことができる。ハイブリッドドライブでは、フラッシュメモリ装置１３５のような不揮発性メモリは、より速いブート、ハイバーネイト、リジューム、他のデータ読み書き動作、及び低消費電力を提供するために、回転するＨＤＤを補う。そのようなハイブリッドドライブ構造は、モバイル・コンピューターあるいは他のモバイル・コンピューティング・デバイスのようなバッテリー作動コンピュータ・システムには特に有利である。好ましい実施例では、フラッシュメモリ装置は、電気的に消去され再書込み可能であり、そして、不揮発性記憶媒体としてディスクドライブ１００中の記憶ディスク１１０を補うために分類されるＮＡＮＤフラッシュメモリのような不揮発性のソリッドステート記憶媒体である。例えば、いくつかの実施例では、フラッシュメモリ装置１３５はＲＡＭ１３４より大きなオーダ（例えば、ギガバイト（ＧＢ）対メガバイト（ＭＢ））であるデータ記憶容量を有する。
【００１３】
図２は、サーボウェッジ２００が記憶ディスク１１０に書込まれた後組織されたデータで記憶ディスク１１０を説明する。サーボウェッジ２００は、セルフサーボ書込み（ＳＳＷ）プロセスによって媒体ライタ、あるいはディスクドライブ１００自体によって記憶ディスク１１０上に書き込まれてもよい。サーボウェッジ２００は実質的に放射状に整列し、データ格納トラック２２０を横切るように示される。サーボウェッジ２００は、データ格納トラック２２０の放射状の位置とトラックピッチ、すなわち間隔を定義するサーボ情報を含んでいる。実際、サーボウェッジ２００は、多少湾曲する。例えば、サーボウェッジ２００は、記憶ディスク１１０が回転していない間、パスがストロークを横切って移動するならば、読取り／書込みへッド１２７により追跡されるパスを映す螺旋パターンで構成されることができる。そのような螺旋パターンは、読取り／書込みへッド１２７の放射状の位置に依存しないウェッジ・ツー・ウェッジタイミングに有利に帰着する。単純化のために、図２では、サーボウェッジ２００は実質的に直線として描かれる。
【００１４】
記憶ディスク１１０は、データを格納するデータ領域２２５に位置する同心のデータ格納トラック２２０を含んでいる。データ格納トラック２２０は、サーボウェッジ２００に書込まれたサーボ情報によって位置的に定義される。典型的には、記憶ディスク１１０上に含まれるサーボウェッジ２００とデータ格納トラック２２０の実際の数は図１に示されたものより相当に大きい。例えば、記憶ディスク１１０は何十万もの同心のデータ格納トラック２２０および何百ものサーボウェッジ２００を含んでいてもよい。データ格納トラック２２０上に格納されたデータは、ディスクドライブ１００によって特定の物理的位置に写像される論理ブロックアドレス（ＬＢＡ）でホストコンピュータによって参照される。その結果、ディスクドライブ１００の各ＬＢＡは特定のシリンダ・ヘッド・セクター位置に相当する。ディスクドライブ１００がフラッシュメモリ装置１３５を含んでいる実施例では、フラッシュメモリ装置１３５に一時的に書き込まれる場合、ディスクドライブ１００に送信されたデータのＬＢＡもフラッシュ論理ブロックアドレス（ＦＬＢ）に関連付けられる。
【００１５】
データが記憶ディスク１１０に、あるいはその記憶ディスク１１０から転送される場合、アクチュエータアーム・アセンブリ１２０は記憶ディスク１１０の内径（ＩＤ）と外径（ＯＤ）の間のアークを描く。電流がボイス・コイル・モータ１２８のボイスコイルを流れ、電流が反転され、逆方向に加速される時、アクチュエータアーム・アセンブリ１２０は１つの角度方向に加速される。その結果、記憶ディスク１１０に関するアクチュエータアーム・アセンブリ１２０と付随の読取り／書込みへッド１２７の位置制御を可能とする。ボイス・コイル・モータ１２８は、特定のデータ格納トラック２２０上の読取り／書込みへッド１２７の位置を決定するために、読取り／書込みへッド１２７によってサーボウェッジ２００から読まれた測位データを使用する公知のサーボシステムに結合される。サーボシステムは、ボイス・コイル・モータ１２８のボイスコイルを駆動する適切な電流を決定し、電流ドライバおよび関連する回路類を使用して、前記電流を駆動する。
【００１６】
記憶ディスク１１０上の第１の位置２５１に相当するＬＢＡを有する書込みコマンドを実行した後に、記憶ディスク１１０上の第２の位置２５２に相当するＬＢＡを有する第２の書込みコマンドを実行することができる前にアクセス時間が生じる。具体的には、アクセス時間中に、読取り／書込みへッド１２７は対象データトラックに移動され、サーボシステムは、対象セクタ（つまり第２の位置２５２）上を通過する前に読取り／書込みへッド１２７の位置を安定させる。したがって、総アクセス時間は対象データトラックまで読取り／書込みへッド１２７を半径方向に位置決めするシーク時間と、対象データトラック上で読取り／書込みへッド１２７を円周方向に位置決めする回転待ち時間を含む。コマンドキュー中の書込みコマンドの再配列は、コマンドキュー中の各書込みコマンドの算出されたアクセス時間に基づく。
【００１７】
発明のいくつかの実施例によれば、ディスクドライブ１００は、ホストコンピュータから受け取ったデータが記憶ディスク１１０へのその後の書込みのためにフラッシュメモリ装置１３５に直接書き込まれるハイブリッドドライブとして構成される。特に、フラッシュメモリ装置１３５は記憶ディスク１１０に対する非常に大きく不揮発性のバッファとして使用することができる。そのような実施例では、データがディスクドライブ１００によって受信されるとすぐに、データは「安全である」、つまり電力損失が発生しても回復可能と考えることができるので、ホストコンピュータからディスクドライブ１００中の不揮発性の媒体までデータが転送されるレートは、実質的に増加される。
【００１８】
図３Ａは、発明の実施例に従って、ディスクドライブ１００のためのキャッシュメモリとして構成されたフラッシュメモリ装置１３５とディスクドライブ１００の動作図を示す。図示のように、ディスクドライブ１００はＲＡＭ１３４、フラッシュメモリ装置１３５、フラッシュ管理装置１３６、システム・オン・チップ１３７および高速データパス１３８を含んでいる。ディスクドライブ１００は、シリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）バスのようなホストインタフェース２０経由でホストコンピュータのようなホスト１０に接続される。
【００１９】
フラッシュ管理装置１３６は、高速データパス１３８とフラッシュメモリ装置１３５のインターフェースを制御し、ＮＡＮＤインターフェースバス１３９によってフラッシュメモリ装置１３５に接続される。システム・オン・チップ１３７は、ディスクドライブ１００の動作を制御するためのマイクロプロセッサ・ベースド・コントローラ１３３および他のハードウェアを含んでおり、高速データパス１３８によってＲＡＭ１３４およびフラッシュ管理装置１３６に接続される。マイクロプロセッサ・ベースド・コントローラ１３３は、ＡＲＭマイクロプロセッサ、ハイブリッドドライブコントローラあるいはディスクドライブ１００内の任意の制御回路のようなマイクロコントローラでありえるコントローラである。高速データパス１３８は、ダブル・データ・レート（ＤＤＲ）バス、ＤＤＲ２バス、ＤＤＲ３バスなどのような公知の高速バスである。
【００２０】
図３Ｂは、発明の他の実施例に従って、ディスクドライブ１００のための書き戻しキャッシュメモリとして構成されたフラッシュメモリ装置１３５とディスクドライブ１００の動作図を示す。図示のように、フラッシュ管理装置１３６はシステム・オン・チップ１３７に組み入れられ、ＮＡＮＤインターフェースバス１３９によってフラッシュメモリ装置１３５に接続される。
【００２１】
動作中は、ディスクドライブ１００のマイクロプロセッサ・ベースド・コントローラ１３３はホストインタフェース２０経由でホスト１０から書込みコマンドを受け取る。マイクロプロセッサ・ベースド・コントローラ１３３によって受信した書込みコマンドはそれぞれ１つ以上のデータブロック、および各データブロックに関連するＬＢＡを含んでいる。ここに使用された用語「書込みコマンド」は、一般に、データブロックと、データブロックに関連するＬＢＡのようなメタデータを含んでいる。マイクロプロセッサ・ベースド・コントローラ１３３は、ＲＡＭ１３４に受信データを格納せずに、フラッシュメモリ装置１３５に受信した書込みコマンドを直接格納する。図３Ａで示された実施例では、受信した書込みコマンドおよび関連するメタデータは高速データパス１３８によってフラッシュ管理装置１３６に直接に導かれる。また、フラッシュ管理装置１３６は受信した書込みコマンドおよび関連するメタデータをフラッシュメモリ装置１３５へ渡す。図３Ｂで示された実施例では、ホスト１０から受信した書込みコマンドおよび関連するメタデータはシステム・オン・チップ１３７中のフラッシュ管理装置１３６に直接に導かれる。また、フラッシュ管理装置１３６は受信した書込みコマンドおよび関連するメタデータをＮＡＮＤインターフェースバス１３９を経由してフラッシュメモリ装置１３５へ渡す。
【００２２】
図３Ｃは、発明の実施例に従って、ハイブリッドドライブにデータを格納するための方法ステップの流れ図を示す。方法ステップは図１、図２、図３Ａおよび図３Ｂに示すディスクドライブ１００に関連して記述されるが、当業者は方法３００が他の型のシステムで行なわれてもよいと理解するだろう。例えば、方法３００の実施例は、ソリッドステート記憶ドライブの不揮発性のキャッシュとして使用されるＦｅＲＡＭのような比較的大きな不揮発性記憶素子を備えたソリッドステート記憶ドライブに適用されてもよい。
【００２３】
図示するように、マイクロプロセッサ・ベースド・コントローラ１３３がホスト１０から格納されるべきデータ、例えば記憶ディスク１１０上で保存されるべきデータの書込みコマンドを受信した時、ステップ３０１で方法３００は始まる。
【００２４】
ステップ３０２で、マイクロプロセッサ・ベースド・コントローラ１３３は、ＲＡＭ１３４に書込みコマンドを格納せずに、フラッシュメモリ装置１３５に書込みコマンドを直接格納する。いくつかの実施例では、ステップ３０１で受信した書込みコマンドに関連するメタデータとデータの両方は、フラッシュメモリ装置１３５に直接書き込まれる。他の実施例では、書込みコマンドに関連するデータは、フラッシュメモリ装置１３５に直接書き込まれ、対応するメタデータはＲＡＭ１３４に一時的に保存され、都合の良い時に、周期的に、フラッシュメモリ装置１３５に書き込まれる。
【００２５】
ステップ３０３で、マイクロプロセッサ・ベースド・コントローラ１３３は、フラッシュメモリ装置１３５に格納されたデータが記憶ディスク１１０に書き込まれるべきかどうか判断する。フラッシュメモリ装置１３５に格納されたデータが記憶ディスク１１０に書き込まれるべきであるという決定がなされる場合、方法３００はステップ３０４に移る。いくつかの実施例では、読取り／書込みへッド１２７が使用されておらず、記憶ディスク１１０からデータを読み出さない／記憶ディスク１１０にデータを書き込まないと決定される場合、フラッシュメモリ装置１３５に格納されたデータは、記憶ディスク１１０に書き込まれるべきである。他の実施例では、フラッシュメモリ装置１３５の記憶容量が消耗していると判断される場合は、常に、フラッシュメモリ装置１３５に格納されたデータは、記憶ディスク１１０に書き込まれるべきである。いくつかの実施例では、フラッシュメモリ装置１３５の記憶容量は、ホスト１０から受信した追加のデータの格納に利用可能な記憶容量がない場合に消耗されると判断される。他の実施例では、フラッシュメモリ装置１３５の記憶容量は、追加のデータの格納に利用可能な記憶容量が前もって定義した量より少ない場合に消耗されると判断される。
【００２６】
ステップ３０４で、マイクロプロセッサ・ベースド・コントローラ１３３は、フラッシュメモリ装置１３５に格納された書込みコマンドを読み出し、記憶ディスク１１０への書込みコマンドを実行する。どの書込みコマンドを実行するか、そしてどの順番で実行するかを選択する他の方法を、図５から図１０に関連して下記に述べる。
【００２７】
したがって、書込みコマンドがフラッシュメモリ装置１３５に直接格納され、読取り／書込みへッド１２７がそうでなければ使用されていないだろう場合にのみ、書込みコマンドが記憶ディスク１１０に実行されるので、方法３００はホスト１０からディスクドライブ１００へのデータ転送速度を最大限にする。さらに、フラッシュメモリ装置１３５が不揮発性メモリ記憶装置であるので、ディスクドライブ１００によってホスト１０から受信した書込みコマンドはほとんど瞬時の電力損失による損失から安全であると考えることができ、受信した書込みコマンドが記憶ディスク１１０に実行されるまで待つことが必要ではない。
【００２８】
図３Ａ、図３Ｂで示されたディスクドライブ・アーキテクチャは、キャッシュメモリとしてフラッシュメモリ装置１３５を使用することを可能にするが、公知の再配列スキームを使用して、フラッシュメモリ装置１３５に格納することができる非常に多くの書込みコマンドを再配列することは現実的ではない。例えば、フラッシュメモリ装置１３５に１６ＧＢの記憶容量がある場合、フラッシュメモリ装置１３５がキャッシュすることができる４ｋＢのランダムな書込み回数は約４００万である。単純な再配列アルゴリズムを使用してわずか１００の書込みコマンドを再配列するのに必要な時間は、一般にそのような計算を終えることができる時間以上である、つまり、そのような再配列計算は、書込みコマンドのための典型的なアクセス時間より長い。したがって、フラッシュメモリ装置１３５に格納することができる多数の書込みコマンドに対して公知の再配列スキームの使用は、フラッシュメモリ装置１３５から記憶ディスク１１０までのデータ転送速度の増加という結果にならない。
【００２９】
さらに、一旦フラッシュメモリ装置１３５がホストコンピュータからのデータで満たされれば、ホストコンピュータからディスクドライブ１００までのデータ転送は、フラッシュメモリ装置１３５からの記憶ディスク１１０にデータが書かれるレートに制限される。これは、記憶ディスク１１０へデータをフラッシュし、フラッシュメモリ装置１３５からデータを追い出すことによりフラッシュメモリ装置１３５において格納スペースが利用可能になるまで、ホストからコンピュータまでフラッシュメモリ装置１３５にデータを転送することができないからである。従って、データがフラッシュメモリ装置１３５から記憶ディスク１１０に効率よく転送されればされる程、追加のデータがホストコンピュータからディスクドライブ１００によってより早く受け取ることができ、また、より少ないトータルの電力がドライブ１００によって消費される。更に、フラッシュメモリ装置１３５が記憶ディスク１１０のキャッシュメモリとして使用される場合、ホストコンピュータから受信され、フラッシュメモリ装置１３５に格納された多数の書込みコマンドは、記憶ディスク１１０に書き込まれることなく、フラッシュメモリ装置１３５内に不所望の長い期間残るいくつかの書込みコマンドに導かれる。ホストコンピュータから受信され、フラッシュメモリ装置１３５に格納されたデータは、安全であると考えられるが、記憶ディスク１１０にそのようなデータを長期間書かないことは、一般的には望ましくない。
【００３０】
いくつかの実施例では、ディスクドライブ１００の性能を改善するために、書込み再配列アルゴリズムと共に「追い出し」スキームが使用される。そのような実施例はフラッシュメモリ装置１３５に格納された最も過去に使用したデータが周期的に追い出されることを保証することにより、記憶ディスク１１０に書かれることなくフラッシュメモリ装置１３５にデータが長時間残ることを最小化する。さらに、そのような実施例は、記憶ディスク１１０に対して実行される書込みコマンドを選択する計算上効率的な方法を提供する。具体的には、フラッシュメモリ装置１３５に格納された書込みコマンドの扱いやすい数は、ここに示された基準に基づいて再配列するために選択される。
【００３１】
図４は、発明の実施例の中で使用されるキャッシュディレクトリ４００のブロック図を示す。キャッシュディレクトリ４００は、適応交替キャッシュ（ＡＲＣ）スキームとして従来知られているページ交替アルゴリズムを表わす。それは、フラッシュメモリ装置１３５中のキャッシュエントリーＤ１−Ｄ１０の最新および頻度の両方を追跡する。その目的のために、キャッシュディレクトリ４００は、フラッシュメモリ装置１３５中のすべてのキャッシュエントリーの標準キャッシュディレクトリを図示される最新リストＴ１および頻度リストＴ２に分割する。キャッシュディレクトリ４００は、最新リストＴ１および頻度リストＴ２にリンクされたゴースト・エントリー・リストであるゴースト最新リストＢ１およびゴースト頻度リストＢ２をさらにそれぞれ含んでいる。
【００３２】
最新リストＴ１および頻度リストＴ２は、ともに、固定キャッシュ・サイズ４１０によって示されるように、キャッシュディレクトリ４００の中に現在保持されたキャッシュエントリーをすべて含んでいる。したがって、最新リストＴ１のキャッシュエントリーＤ１−Ｄ５と頻度リストＴ２のキャッシュエントリーＤ６−Ｄ１０に対応するデータはフラッシュメモリ装置１３５に現在保存されているデータをすべて含んでいる。明瞭さのため、５つのキャッシュエントリーだけが最新リストＴ１、頻度リストＴ２の中で示されているが、実際は、キャッシュエントリーの合計数は、例えば何千または何百万のオーダで、非常に大きくなりえる。更に、最新リストＴ１および頻度リストＴ２は図４の中では等しいサイズを持っているとして描かれる。実際上、最新リストＴ１および頻度リストＴ２は各々、キャッシュディレクトリ４００内の合計のキャッシュエントリーＤ１−Ｄ１０の異なるサイズの部分を含むことができる。いくつかの実施例では、最新リストＴ１および頻度リストＴ２の相対的なサイズは、ゴースト最新リストＢ１およびゴースト頻度リストＢ２に関連するキャッシュヒットに基づいてディスクドライブ１００の通常動作の間に変えることができる。
【００３３】
最新リストＴ１、頻度リストＴ２、ゴースト最新リストＢ１およびゴースト頻度リストＢ２はすべて、フラッシュメモリ装置１３５に格納された各データブロックのプロパティを追跡するように構成された最も過去に使用した（ＬＲＵ）リンクリストである。そのため、エントリーは各リストの一番上に置かれる。また、多数のキャッシュエントリーがキャッシュディレクトリ４００になされた後、そのようなエントリーがなされ、リストのボトムに達した場合、各リスト中の既存のエントリーはリストの下方へ移動される。したがって、完全に占められた時、これらのリストのうちの１つへのどのようなエントリーも、そのリストのボトムに位置するキャッシュエントリーを追い出す結果になる。最新リストＴ１のトップは、ディバイダ４５０に隣接しているエントリー位置４５１に位置する。最新リストＴ１のボトムは、ゴースト最新リストＢ１に隣接しているエントリー位置４５２に位置する。同様に、頻度リストＴ２のトップは、ディバイダ４５０に隣接しているエントリー位置４５３に位置する。頻度リストＴ２のボトムは、ゴースト頻度リストＢ２に隣接しているエントリー位置４５４に位置する。矢印４６０によって示すように、エントリー位置４５１で生じる最新リストＴ１への新しいキャッシュエントリーは既存のキャッシュエントリーをゴースト最新リストＢ１へプッシュする。エントリー位置４５３で生じる頻度リストＴ２への新しいキャッシュエントリーは既存のキャッシュエントリーをゴースト頻度リストＢ２へプッシュする。
【００３４】
キャッシュエントリーＤ１−Ｄ１０の各々は、ディスクドライブ１００によってホストコンピュータから受信されており、フラッシュメモリ装置１３５に保存されるデータ（例えば４ｋＢ、３２ｋＢなど）の特定ブロックに関連するデータ構造である。発明の実施例では、前記データ構造は、マイクロプロセッサ・ベースド・コントローラ１３３によってホスト１０から受信した特定の書込みコマンドに関連するデータブロックに対応してもよい。キャッシュエントリーＤ１−Ｄ１０は各々、特定のデータブロックに関連するＬＢＡと、データブロックに関連するフラッシュ論理ブロックアドレス、およびそのデータブロックが記憶ディスク１００に既に書込まれたかどうかを示すデータブロックのためのダーティフラグを含んでいる。ダーティブロックは、記憶ディスク１１０に未だ書かれておらず、したがって、フラッシュメモリ装置１３５に存在するのみであるデータブロックである。非ダーティブロックは、フラッシュメモリ装置に書かれ、そして続いて、ディスクに書込まれたデータブロック、またはディスクから読まれ（既にフラッシュメモリ装置になかったデータに対するホスト要請に応じて）、そして続いて、フラッシュメモリ装置にコピーされたデータブロックである。ゴースト最新リストＢ１の中のゴースト・エントリーＧ１−Ｇ５は、最新リストＴ１から最近追い出されたキャッシュエントリーを表すメタデータエントリーである。ゴースト頻度リストＢ２の中のゴースト・エントリーＧ６−Ｇ１０は、頻度リストＴ２から最近追い出されたキャッシュエントリーを表すメタデータエントリーである。最新リストＴ１あるいは頻度リストＴ２からのキャッシュエントリーは、キャッシュエントリーに関連するデータの同一のコピーが、記憶ディスク１１０に存在する場合、一般的にゴースト・エントリーに変換されるだけ、つまり、フラッシュメモリ装置１３５から追い出されるだけであることが注目される。いくつかの実施例では、キャッシュエントリーに関連するデータはもはやＴＲＩＭコマンドによって必要ではないようなホスト１０で示されたデータに対応する場合、ディスクに書かれずに、ゴースト・エントリーに変換されてもよい。
【００３５】
動作中は、データブロックがディスクドライブ１００によってホストコンピュータから受信され、フラッシュメモリ装置１３５に格納される場合は常に、キャッシュエントリーはエントリー位置４５１での最新リストＴ１になされる。最新リストＴ１内のどんな既存のキャッシュエントリーもゴースト最新リストＢ１にプッシュされる。エントリー位置４５２に現存するキャッシュエントリーはフラッシュされ、すなわち記憶ディスク１１０に書き込まれ、その後追い出され、すなわちフラッシュされたキャッシュエントリーのためのメタデータがエントリー位置４５６でのゴースト最新リストＢ１へのエントリーとして為される。ホストコンピュータがキャッシュディレクトリ４００を構築するＬＲＵリストのうちのいずれからの任意のキャッシュエントリー、つまりキャッシュエントリーＤ１−Ｄ１０かゴースト・エントリーＧ１−Ｇ１０のうちのいずれ、に対応するデータブロックを書込むことを依頼する場合は常に、対象のキャッシュエントリーは、エントリー位置４５３での頻度リストＴ２のトップに移動される。従って、頻度リストＴ２の中の他のすべてのエントリーはゴースト頻度リストＢ２の方へプッシュされる。
【００３６】
いくつかの実施例では、図４に例証されたページ交替アルゴリズムは二重リンクＬＲＵリストＴ１、Ｔ２、Ｂ１およびＢ２の使用に関連する完全な「簿記」オペレーションを減少するために修正される。具体的には、ＬＲＵリストＴ１、Ｔ２、Ｂ１およびＢ２の各々は、各データブロック、つまりリンクリストに含まれて、ホスト１０から受信した書込みコマンドの各々に関連するデータ、のデータ構造を含んでいるリンクリストである。そのようなＬＲＵリストのサイズが何十万ものエントリーを有している場合、そのようなデータ構造は、重要なレコードキーピングとメモリ割当て負担を伴う。例えば、各データ構造がリンクリスト内の次に最も過去に使用したデータブロックを示すポインタと、リンクリスト内の次に最も最近使用したデータブロックを示すポインタとを含むので、書込みコマンドがリンクリストから追い出される場合は常に、リンクリストの完全性を維持するために隣接するエントリーのポインタを更新するいくつかの動作が実行される。
【００３７】
発明のいくつかの実施例では、ＬＲＵリストＴ１、Ｔ２、Ｂ１およびＢ２は個々の書込みコマンドのリストではなく、書込みコマンドグループのリストである。そのような実施例では、同様の最新性の書込みコマンドが同じ書込みコマンドグループに含まれている場合、フラッシュメモリ装置１３５に格納された書込みコマンドはそのような書込みコマンドグループに集められる。書込みコマンドグループはリンクリスト内の次に最も過去に使用したデータブロックを示すポインタと、リンクリスト内の次に最も最近使用したデータブロックを示すポインタとを含む。しかし、書込みコマンドグループ中の書込みコマンドの各々は、（一時的に）隣接する書込みコマンドへのポインタを要求しない。したがって、書込みコマンドがＬＲＵリストから取り除かれ、及び／または、別のＬＲＵリストに移った場合、隣接する書込みコマンドのポインタは更新されない。そのような実施例では、キャッシュエントリーＤ１−Ｄ１０およびゴースト・エントリーＧ１−Ｇ１０は個々の書込みコマンドではなく、書込みコマンドグループを表わす。一旦書込みコマンドグループが最小の所定回数未満の書込みコマンドを持てば、書込みコマンドグループは隣接する書込みコマンドグループとマージされ得る。リンクリスト内の次に旧く使用されたデータブロックグループを示すポインタと、リンクリスト内の次に最近使用したデータブロックグループを示すポインタは従って更新される。
【００３８】
同じ関連データを備えた書込みコマンドがホスト１０から繰り返し受信される状況では、前記書込みコマンドがリストＴ１及び／またはＴ２の上で比較的高いままであり得、従って、任意に長い間ダーティ状態であり得ることは注目される。したがって、いくつかの実施例では、上記の追い出しスキームはリストＴ１及び／またはＴ２に現存する全てのダーティな書込みコマンドの各々をディスクドライブ１１０に周期的にフラッシュすることにより修正されてもよい。他の実施例では、最新リストＴ１の中の各キャッシュエントリー及び／または頻度リストＴ２の中の各キャッシュエントリーは、特定の書込みコマンドおよび関連データがホスト１０からいつ最初に受信したかの時間記録を含んでいる。そのような実施例では、他のいずれのデータが記憶ディスク１１０に書かれる前に、所定数の古いダーティ・キャッシュエントリーは記憶ディスク１１０に周期的に書かれてもよい。あるいは、キャッシュエントリーが所定期間以上ダーティ状態で残った場合は常に、前記キャッシュエントリーは、直ちに記憶ディスク１００に書かれ得る。そのような実施例中で、キャッシュエントリーがダーティ状態で残る時間は、直接コントロールすることができる。
【００３９】
発明の１つの実施例中で、実行することができるフラッシュメモリ装置１３５中の何千もの可能な書込みコマンドの全部を完全に考慮することが非実用的であるので、フラッシュメモリ装置１３５中の所定数Ｎの古いダーティな書込みコマンドが再配列され、次に、記憶ディスク１１０に実行される。そのような実施例では、所定数Ｎは、ディスクドライブ１００の典型的なアクセス時間以下で再配置され得る書込みコマンドの合計数となるように選択される。ここで、Ｎは、一般的に、フラッシュメモリ装置１３５に現在格納されているダーティな書込みコマンドの合計数の一部分である。いくつかの実施例では、Ｎはフラッシュメモリ装置１３５に格納されたダーティな書込みコマンドの合計数より１桁あるいはそれ以上小さい数、例えば１０分の１、１００分の１、１０００分の１、である。フラッシュメモリ装置１３５に格納された書込みコマンドの扱いやすい数が再配列されるので、記憶ディスク１１０へのデータの転送速度はディスクドライブ１００に対して最大にされる。さらに、再配列され実行されるコマンドはフラッシュメモリ１３５内の最も古いダーティな書込みコマンドであるので、フラッシュメモリ装置１３５中のダーティな書込みコマンドの滞在時間が最小化される。そのような１つの実施例は図５と共に下記に述べられる。
【００４０】
図５は、本発明の１つの実施例に従って、ディスクドライブ中のキャッシュメモリに格納される書込みコマンドの実行のための方法ステップの流れ図を述べる。方法ステップは図１の中のディスクドライブ１００と共に記述されるが、当業者は方法ステップを行なうように構成された他のディスクドライブシステムが発明の範囲以内にあると理解するだろう。方法５００に先立って、所定数Ｎは、マイクロプロセッサ・ベースド・コントローラ１３３の処理速度およびディスクドライブ１００によって実行された書込みコマンドの典型的なアクセス時間に基づいて選択されている。例えば、いくつかの実施例では、Ｎは約１００〜２００である。マイクロプロセッサ速度がアクセス時間に関して増加するとともに、Ｎの値がさらに増加する場合がある。
【００４１】
示された方法５００がステップ５０１で始まり、フラッシュメモリ装置１３５に格納されているＮ個のダーティな書込みコマンドが再配列のために選択される。いくつかの実施例では、Ｎ個の書込みコマンドは全て最新リストＴ１のボトムから選ばれる、つまり、最も古いＮ個のダーティな書込みコマンドが選択される。他の実施例では、選択されたＮ個の書込みコマンドは、最新リストＴ１および頻度リストＴ２からの最も古いダーティな書込みコマンドの組み合わせである。他の実施例では、Ｎ個の書込みコマンドはすべて最新リストＴ１あるいは頻度リストＴ２のいずれかから選ばれる。そのような実施例では、方法５００は、これらのリストのうちの一方（例えば最新リストＴ１）から選ばれた書込みコマンド上で行なわれる。そして、次に方法５００が行なわれ、書込みコマンドは他方のリスト（例えば頻度リストＴ２）から選ばれる。
【００４２】
ステップ５０１で、ステップ５０１で、最新リストＴ１および頻度リストＴ２からの書込みコマンドの他の組み合わせのセレクションも発明の範囲以内にある。例えば、ＬＲＵリストＴ１、Ｔ２、Ｂ１およびＢ２は個々の書込みコマンドのリストではなく、書込みコマンドグループのリストである実施例では、ＬＲＵリストＴ１、あるいはＴ２に関連する最も古い書込みコマンドグループ中のダーティな書込みコマンドはすべて選択されてもよい。いくつかの実施例では、最も古い書込みコマンドグループ内のダーティな書込みコマンドの数が実質的にＮ以下である場合、ＬＲＵリストＴ１あるいはＴ２に関連する次に最も古い書込みコマンドグループに関連するダーティな書込みコマンドのいくらかあるいはすべてが選択され、選択された書込みコマンドの数がほぼ、あるいは正確にＮに等しい。そのような実施例では、フラッシュメモリ装置１３５に格納された書込みコマンドが書込みコマンドグループによって組織されるので、そのような選択プロセスは計算上非常に経済的で、フラッシュメモリ装置１３５に格納された何千ものキャッシュエントリーをランダムに捜すことを要求しない。
【００４３】
ステップ５０２で、ステップ５０１で選択されたＮ個の書込みコマンドを使用し、Ｎ個の書込みコマンドがどれくらい速く記憶ディスク１１０に実行されることが出来るかを最適化する書込みコマンドシーケンスが決定される。再配列はステップ５０１で選択されたＮ個の書込みコマンドの各々のアクセス時間に基づく。各書込みコマンドのアクセス時間は、読取り／書込みへッド１２７のスタート位置、書込みコマンドによって指定される書込み位置、記憶ディスク１１０の回転速度、およびスタート位置と書込み位置との間の予測シーク時間を含む多くの要因に基づいて算出される。
【００４４】
いくつかの実施例では、ステップ５０１で選択されたＮ個の書込みコマンドのための最良の可能な書込みコマンドシーケンスを決定するために、書込みコマンドの配列のＮ！の組み合わせの全てがステップ５０２で計算される。そのような実施例では、Ｎの値は、全ての計算が適時の方法で行なわれることを可能にするために比較的小さい数である。他の実施例では、それほど計算集中的ではない方法を使用して最適な書込みシーケンスが決定される。その中で、ステップ５０１で選択されたＮ個の書込みコマンドの中の最も迅速にアクセスされる書込みコマンドが書込みコマンドシーケンスの第１コマンドとして選択され、残りの（Ｎ−１）個の書込みコマンドの中の最も迅速にアクセスされる書込みコマンドが書込みコマンドシーケンスの第２コマンドとして選択され、以下同様に選択される。ステップ５０２において書込みコマンドシーケンスを決定するそのような方法は、Ｎ！のすべての可能なシーケンスを決定するよりかなり少ない計算しか要求しない。したがって、Ｎがかなり大きい数であることを可能とする。どのような書込みコマンド再配列方法もステップ５０２で選択されたＮ個の書込みコマンドに適用され得て、発明の範囲内にある。
【００４５】
ステップ５０３で、ステップ５０２で決定された書込みコマンドシーケンスの最初の書込みコマンドは、記憶ディスク１１０に書き込まれる。ディスクドライブ１００のいくつかの構成では、フラッシュメモリ装置１３５からの記憶ディスク１１０に書込む場合、ＲＡＭ１３４へのデータのいくらかのバッファリングが要求され得ることが注目される。
【００４６】
ステップ５０４で、１つ以上の書込みコマンドがフラッシュメモリ装置１３５から追い出される。具体的には、追い出された書込みコマンドは、キャッシュディレクトリ４００（つまり最新リストＴ１、頻度リストＴ２の一方）から取り除かれ、オープンエントリーポジションを生む。追い出された書込みコマンドを含んでいるリスト上のより新しいエントリーはすべて、関連するゴースト・リストの方へプッシュされる。例えば、図４の中のキャッシュディレクトリ４００を参照して、キャッシュエントリーＤ２がステップ５０４で追い出される場合、キャッシュエントリーＤ３、Ｄ４およびＤ５は、キャッシュエントリーＤ１の方へプッシュされ、ホストコンピュータから受信される、より多くのデータのためにエントリー位置４５１をオープンのままとする。
【００４７】
いくつかの実施例では、ステップ５０３でフラッシュメモリ装置１３５から追い出された書込みコマンドは、ステップ５０３で記憶ディスク１１０に実行される書込みコマンドである。あるいは、ステップ５０３で記憶ディスク１１０に実行される書込みコマンドではなく、ステップ５０４で、記憶ディスク１１０に既に実行されたキャッシュディレクトリ４００で最も古い書込みコマンドがフラッシュメモリ装置１３５から追い出される。他の追い出し方法も本発明の範囲を越えずに、フラッシュメモリ装置１３５において利用可能なスペースを作るために使用することができる。
【００４８】
ステップ５０４で、フラッシュメモリ装置１３５に格納されたデータのこれ以上のデータが記憶ディスク１１０に書き込まれるべきであるか否か決定される。フラッシュメモリ装置１３５に格納されたデータが記憶ディスク１１０に書き込まれるべきであるという決定がなされる場合、方法５００はステップ５０１に戻る。ステップ５０４でなされた決定は、読取り／書込みへッド１２７がアイドル状態である、あるいはフラッシュメモリ装置１３５の記憶容量が消耗したような方法３００のステップ３０３で上述された要因に基づいてもよい。
【００４９】
フラッシュメモリ装置１３５に格納された以前に選択された書込みコマンドがディスクドライブ１００によって実行されており、次に追い出される間、すなわち、ステップ５０３および５０４が以前に選択された書込みコマンドのために行なわれている間に、現在の書込みコマンドを決定するために、ステップ５０１および５０２が行なわれることは、注目される。同様に、ステップ５０３および５０４が現在の書込みコマンドのために行なわれている間に、記憶ディスク１１０に実行されるために別の書込みコマンドをさらに決定するためにステップ５０１および５０２は行なわれている。このように、フラッシュメモリ装置１３５上の最も古いデータから選ばれたキャッシュメモリ中のダーティな書込みコマンドは、連続的に実行される。フラッシュメモリ装置１３５の中にある最も古いデータの中からのデータが、記憶ディスク１１０に書かれ、次に、追い出されるために連続して選択されているので、フラッシュメモリ装置１３５上のデータの平均滞在時間が最小化される。
【００５０】
いくつかの実施例では、記憶ディスク１１０にフラッシュメモリ装置１３５からのデータの書込み効率を向上し、フラッシュメモリ装置１３５に格納された最も使用されていないデータの追い出しを最大限にするという２つの目標を達成するために、再配列アルゴリズムおよび追出しアルゴリズムがディスクドライブ１００に対して独立して行なわれる。方法５００と異なり、フラッシュメモリ装置１３５に格納されたＮ個の最も古いダーティな書込みコマンドを再配列することに限定されない再配列アルゴリズムがフラッシュメモリ装置１３５に書込みコマンドを選択するために使用される。さらに、フラッシュメモリ装置１３５からデータを追い出すための選択処理は、書込みコマンドシーケンスによって決定されない。そのような１つの実施例が図６と共に下記に述べられる。
【００５１】
図６は、本発明の別の実施例に従って、ディスクドライブ中のキャッシュメモリに格納されている書込みコマンドの実行のための方法ステップの流れ図を述べる。方法ステップは図１の中のディスクドライブ１００と共に記述されるが、当業者は方法ステップを行なうように構成された他のディスクドライブシステムが発明の範囲以内にあると理解するだろう。方法６００に先立って、所定数Ｎは、方法５００と共に上に記述された同じ方法で選択されてもよい。
【００５２】
図示するように、方法６００がステップ６０１で始まり、フラッシュメモリ装置１３５に格納されたＮ個のダーティな書込みコマンドが再配列のために選択される。Ｎ個の書込みコマンドは読取り／書込みへッド１２７の現在位置への各書込みコマンドのターゲット位置の接近に基づいて選択される。読取り／書込みへッド１２７の現在位置へのダーティな書込みコマンドの接近は、フラッシュメモリ装置１３５に格納されたダーティな書込みコマンドのＬＢＡに現在実行されている書込みコマンドのＬＢＡを比較することにより容易に決定することができる。フラッシュメモリ装置１３５に格納された多くの書込みコマンドはＬＢＡによって表の様式で組織することができるので、そのような接近決定は、非常に速く、小さな計算上のオーバヘッドで行なうことができる。フラッシュメモリ装置１３５中の何千あるいは何十万ものキャッシュエントリーが、任意に探索されない。他の実施例では、読取り／書込みへッド１２７の現在位置へのダーティな書込みコマンドの接近は、フラッシュメモリ装置１３５に格納されたダーティな書込みコマンドに対するシリンダ・ヘッド・セクター位置情報を使用することにより決定することができる。シリンダ・ヘッド・セクター位置情報はフラッシュメモリ装置１３５中の各書込みコマンドからデータが書き込まれる記憶ディスク１１０上のより詳細な物理的位置を提供する。しかし、そのような情報へのアクセスはＬＢＡベースのアプローチよりも多くの計算時間を要求するかもしれない。
【００５３】
ステップ６０２で、ステップ５０１で選択されたＮ個の書込みコマンドを使用する書込みコマンドシーケンスが決定され、それはＮ個の書込みコマンドがどれくらい速く記憶ディスク１１０に実行することができるかを最適化する。方法５００のステップ５０２で上述された、再配列スキームのうちのいずれも、書込みコマンドシーケンスを決定するために使用され得る。あるいは、技術中で既知の、他の技術的に実現可能な再配列スキームもステップ６０２で書込みコマンドシーケンスを決定するために使用されてもよい。
【００５４】
ステップ６０３で、ステップ６０２で決定された書込みコマンドシーケンスの最初の書込みコマンドが記憶ディスク１１０に書き込まれる。方法５００のステップ５０３で上述したように、フラッシュメモリ装置１３５から記憶ディスク１１０にデータを書込む場合、ＲＡＭ１３４へのデータのいくらかのバッファリングを行ってもよい。
【００５５】
ステップ６０４で、フラッシュメモリ装置１３５に格納されたそれ以上のデータが記憶ディスク１１０に書き込まれるべきか否か決定される。フラッシュメモリ装置１３５に格納されたデータが記憶ディスク１１０に書き込まれるべきであるという決定がなされる場合、方法６００はステップ６０１に戻る。ステップ６０４でなされた決定は、読取り／書込みへッド１２７がアイドル状態である、あるいはフラッシュメモリ装置１３５の記憶容量の消耗のような、方法３００のステップ３０３に上述された要因に基づいてもよい。
【００５６】
フラッシュメモリ装置１３５から記憶ディスク１１０にデータが書き込まれるステップ６０１−６０４と同時に、必要に応じてフラッシュメモリ装置１３５からデータが追い出される。フラッシュメモリドライブ１３５からの追い出しのために書込みコマンドが選ばれるプロセスは、ステップ７１０−７２０で以下に記述される。
【００５７】
図７は、本発明の別の実施例に従って、ディスクドライブ用の追出しアルゴリズムのために方法ステップの流れ図を述べる。図示されるように、フラッシュメモリドライブ１３５から書込みコマンドを追い出すための追出しアルゴリズム７００は、ステップ７１０で始まる。ここで、方法７００はフラッシュメモリ装置１３５中の最も過去に使用した（ＬＲＵ）データの追い出しを考慮するために初期化される。フラッシュメモリ装置１３５中のＬＲＵデータは、図４の最新リストＴ１（キャッシュエントリーＤ１）あるいは頻度リストＴ２（キャッシュエントリーＤ６）のいずれかのボトムのキャッシュエントリーに相当する。いくつかの実施例では、方法７００の追出しアルゴリズムは、最新リストＴ１のボトム、および頻度リストＴ２のボトムで交互に始まってもよい。
【００５８】
ステップ７１２で、データがフラッシュメモリ装置１３５から追い出されるか否かが決定される。いくつかの実施例では、フラッシュメモリ装置１３５が記憶データで実質的にいっぱいで、残りの記憶容量がほとんどあるいはまったくない場合、データとキャッシュディレクトリ４００中の関連するキャッシュエントリーは追い出される。他の実施例では、キャッシュエントリーと関連データは、フラッシュメモリドライブ１３５の所望の一部分がホストコンピュータから追加のデータを受信するために利用可能になるまで、追い出されることが要求される。さらに他の実施例では、データは、所望年齢未満の全てのデータがフラッシュメモリドライブ１３５に残るまで、追い出されることが要求される。発明の範囲を逸脱せずに、他の基準が、データがフラッシュメモリ装置１３５から追い出されるかをステップ７１２で決定するために使用されてもよい。データがフラッシュメモリ装置１３５から追い出されるべきことが決定される場合、追出しアルゴリズムはステップ７１４に移る。そうでなければ、追出しアルゴリズムはステップ７１０に移る。
【００５９】
ステップ７１４で、現在検討中のキャッシュエントリーに関連するデータの有効性が調べられる。データが記憶ディスク１１０に書き込まれた場合、データは、「非ダーティ」と考えられる。データが非ダーティな場合、追出しアルゴリズムは図７に示されるようにステップ７１６に移る。データがダーティな場合、追出しアルゴリズムはステップ７１８に移る。最初に、ステップ７１４で検討中のキャッシュエントリーがステップ７１０で選択された最も過去に使用した（ＬＲＵ）データであることが注目される。後の反復では、追出しアルゴリズムにより検討中のキャッシュエントリーは、ステップ７２０で以下に記述されるように、最新リストＴ１あるいは頻度リストＴ２で一般的により高い位置にあるキャッシュエントリーである。
【００６０】
ステップ７１６で、ステップ７１４で非ダーティと決定されたデータは、フラッシュメモリ装置１３５から追い出される。また、フラッシュメモリ装置１３５の利用可能な格納容量は増加される。
【００６１】
ステップ７１８で、追出しアルゴリズムは現在検討中のキャッシュエントリーがＬＲＵリストの一番上（トップ）にあるかをチェックする。イエスの場合、追出しアルゴリズムはステップ７１０に移る。現在検討中のキャッシュエントリーがＬＲＵリストの一番上にない場合、追出しアルゴリズムはステップ７２０に移る。
【００６２】
ステップ７２０で、追出しアルゴリズムは、最新リストＴ１あるいは頻度リストＴ２上の次のキャッシュエントリーを検討する。いくつかの実施例では、最新リストＴ１中のキャッシュエントリーだけが検討に適格である。追出しアルゴリズムはキャッシュエントリーを１つ上に進める。つまり、最新リストＴ１上で、次の最も若いキャッシュエントリーへ進める。他の実施例では、追出しアルゴリズムは、最新リストＴ１及び頻度リストＴ２内のキャッシュエントリーの組み合わせを検討する。追出しアルゴリズムはステップ７２０に示すようにそのような組み合わせリスト上でキャッシュエントリーを１つ上に進める。図７に示すように、方法７００は、ステップ７２０で使用される適格のキャッシュエントリーのリスト上の次のキャッシュエントリーへインクリメントした後にステップ７１２に移る。したがって、時間とともに、追出しアルゴリズムは、所望のＬＲＵリストのボトムからトップへ段階的に進み、途中で非ダーティなキャッシュエントリーを追い出す。その後、追出しアルゴリズムは所望のＬＲＵリスト上のトップ（最も新しい）に達した後に所望のＬＲＵリストのボトムに戻る。
【００６３】
フラッシュメモリ装置１３５に格納することができる非常に多くの書込みコマンドにより、フラッシュメモリ装置１３５から適格の書込みコマンドをすべて追い出す方法７００の追出しアルゴリズムに必要な時間はかなりの時間になり得る。多くの追加の書込みコマンドがフラッシュメモリ装置１３５に連続的に格納されている場合、これは特に真実である。そのような状況で、方法７００の追出しアルゴリズムは最新リストＴ１及び／または頻度リストＴ２のボトムに不所望に長い間位置する実質的に追い出しキャッシュエントリーの有効性を検討することができない。さらに、技術中で既知の再配列アルゴリズムの性質により、記憶ディスク１１０の特定範囲に割り当てられた多くの書込みコマンドは、ある書込みコマンドをディスク１１０上の不所望な長い間の格納を防ぐことができる。具体的には、読取り／書込みへッドの現在位置から遠隔の領域に書き込まれることになっているフラッシュメモリ装置１３５に格納された書込みコマンドは非常に長い間ダーティのままであってもよい。従って、発明のいくつかの実施例では、追出しアルゴリズムはフラッシュメモリ装置１３５に格納された最も過去に使用した書込みコマンドを実行するために周期的にリセットされる。そのような１つの実施例は図８と共に下記に述べられる。
【００６４】
図８は、本発明の別の実施例に従って、ディスクドライブ中のキャッシュメモリに格納される書込みコマンドの実行のための方法ステップの流れ図を述べる。方法ステップは図１の中のディスクドライブ１００と共に記述されるが、方法ステップを行なうように構成された他のディスクドライブシステムが発明の範囲内にあることを当業者は理解するだろう。方法８００に先立って、再配列割込み値Ｍが選択される。Ｍは例えば約１０００の比較的大きな整数である。再配列割込み値Ｍは、ディスクドライブ１００によって使用された書込み再配列処理がどの位頻繁に中断され、フラッシュメモリ装置１３５に関連するＬＲＵリスト内の最も過去に使用した書込みコマンドをディスクドライブ１００に実行させる、すなわちＬＲＵリスト内の最も過去に使用したダーティデータを記憶ディスク１１０に書き込むことによりリセットされたかを示す。
【００６５】
図示のように、方法８００はステップ８０１で始まり、書込みカウンタ値が適切な初期値（例えば１または０）にセットされる。
【００６６】
ステップ８０２で、ディスクドライブ１００は、フラッシュメモリ装置１３５に格納された書込みコマンドがどれくらい速く記憶ディスク１１０に実行されるかを最適化する書込みコマンドシーケンスを決定するために、書込み再配列手順を行なう。書込み再配列手順は、技術中で既知の、どんな書込み再配列アルゴリズムも含むことが可能である。別の実施例では、方法５００のステップ５０１および５０２で上述された、書込み再配列アルゴリズムのうちの１つは、ステップ８０２で使用されてもよい。さらに別の実施例では、図９および１０と共に以下に述べられるサーボサブゾーンに基づいた書込み再配列アルゴリズムは、ステップ８０２で使用されてもよい。
【００６７】
ステップ８０３で、ステップ８０２で決定された書込みコマンドシーケンスの最初の書込みコマンドは実行される。また、それに関連するデータは、記憶ディスク１１０に書き込まれる。
【００６８】
ステップ８０４で、書込みカウンタ値は、１だけより高くインクリメントされる。
【００６９】
ステップ８０５で、ステップ８０４でインクリメントされた書込みカウンタ値は再配列割込み値Ｍと比較される。書込みカウンタ値が再配列割込み値Ｍ未満である場合、方法８００はステップ８０２に移る。また、別の書込みコマンドシーケンスが決定される。書込みカウンタ値が再配列割込み値Ｍと等しい場合、方法８００はステップ８０６に移る。
【００７０】
ステップ８０６で、現在の書込み再配列アルゴリズムは中断される。最適化された書込みコマンドシーケンスによって決定された書込みコマンドを選択するのではなく、フラッシュメモリ装置１３５に格納された最も過去に使用したダーティな書込みコマンドは、記憶ディスク１１０に実行される。具体的には、フラッシュメモリ装置１３５に関連するＬＲＵリストのボトムに最も近く位置するダーティな書込みコマンドは実行される。いくつかの実施例では、ステップ８０６で使用されるＬＲＵリストは、最新リストＴ１および頻度リストＴ２の組み合わされたキャッシュエントリーを含んでいる最新リストＴ１、頻度リストＴ２あるいはＬＲＵリストであるかもしれない。一旦ＬＲＵリストからダーティな書込みコマンドが記憶ディスク１１０に実行されると、方法はステップ８０１に進み、書込みカウンタ値が１にセットされる。
【００７１】
したがって、方法８００では、フラッシュメモリ装置１３５上の最も過去に使用したデータは、ディスクに周期的に書き込まれる。その結果、フラッシュメモリ装置１３５上のダーティな書込みコマンドの滞在時間は、２つの理由で最小化される。第１に、フラッシュメモリ装置１３５上の最も過去に使用した書込みコマンドは、Ｍ個の書込みコマンド毎の後に記憶ディスク１１０に自動的に実行される。第２に、実行されている現在の書込みコマンドの位置はどの書込みコマンドが次に選択されるかに強く影響を及ぼすので、読取り／書込みへッド１２７の位置がフラッシュメモリ装置１３５上の最も過去に使用したダーティな書込みコマンドの場所へリセットされる時、書込み再配列アルゴリズムはそのリセット位置に最も近い書込みコマンドを選択し続けるであろう。このように、書込み再配列アルゴリズムはリセット位置近傍に位置する書込みコマンドをクリーンアップできる。これらの書込みコマンドは同様におそらく比較的古いデータ、つまりフラッシュメモリ装置１３５に現在格納されている他のほとんどのダーティなデータより前にホスト１０から受信したデータである。さらに、書込み再配列アルゴリズムは比較的大きな間隔でのみ中断されるので、書込み再配列アルゴリズム自体の効率はわずかだけ影響を受ける。
【００７２】
発明のいくつかの実施例によれば、再配列されている書込みコマンドは読取り／書込みへッド１２７が現在位置するのと同じサーボサブゾーンから選ばれる、書込み再配列アルゴリズムが意図される。このように、管理できる数の書込みコマンドはフラッシュメモリ装置１３５に格納されている何千あるいは何十万もの書込みコマンドから選ぶことができる。好都合に、このように選択された書込みコマンドは互いに、及び読取り／書込みへッド１２７に近接して位置することが保証される。この接近により、選択された書込みコマンド間のアクセス時間、したがって選択されたほとんど、及び全ての書込みコマンドを実行するために必要な時間は最小化される。
【００７３】
図９は、多数の記憶ディスク９１０、９２０および９３０と多数の読取り／書込みへッドで構成されたディスクドライブ９００の部分的な側面図を概略的に示す。ディスクドライブ９００の各読取り／書込みへッドは記憶ディスク９１０、９２０および９３０のうちの１つの一表面にそれぞれ対応付けられる。特に、読取り／書込みへッド９１１Ａ、９１２Ａ、９２１Ａ、９２２Ａ、９３１Ａ、９３２Ａはディスク表面９１１、９１２、９２１、９２２、９３１および９３２にそれぞれ対応付けられる。ディスクドライブ９００は、その他の点では、ディスクドライブ１００に構成と動作において実質的に類似している。
【００７４】
記憶ディスク９１０、９２０および９３０はデータゾーンに組織される。ここで、各データゾーンは同数のデータセクタで構成されたトラックのグループを含む。各データゾーンは次に多数のサーボサブゾーンへ細分される。各サーボサブゾーンはおよそ１００〜２００のデータトラックから構成されている。図９に示されている記憶ディスク９１０、９２０、９３０の部分は、サーボサブゾーン９５０、９６０および９７０を含んでいる。図示のように、各サーボサブゾーン９５１−９５３がおよそ１００〜２００トラックの幅９０１を持つディスク表面９１１、９１２、９２１、９２２、９３１および９３２の一部を含んでいる。単一の読取り／書込みへッドに関連するディスク表面のそのような部分はそれぞれ、ここに「サブゾーンセグメント」と呼ばれる。したがって、サーボサブゾーン９５０はサブゾーンセグメント９５１−９５６を含み、サーボサブゾーン９６０はサブゾーンセグメント９６１−９６６を含み、サーボサブゾーン９７０はサブゾーンセグメント９７１−９７６を含んでいる。
【００７５】
図１０は、本発明の別の実施例に従って、ディスクドライブ中のキャッシュメモリに格納される書込みコマンドの実行のための方法ステップの流れ図を述べる。方法ステップは図９のディスクドライブ９００と共に記述されるが、当業者は方法ステップを行なうように構成された他のディスクドライブシステムが発明の範囲以内にあることを理解するだろう。方法１０００に先立って、書込みコマンドの最小のＫは、ディスクドライブ９００によって実行された時の書込みコマンドの典型的なアクセス時間およびマイクロプロセッサ・ベース・コントローラ１３３の処理速度に基づいて選択される。書込みコマンドの最小のＫの値は、適切な数の書込みコマンドが書込み再配列計算の中で使用されるように、効率的な書込みコマンドシーケンスが生成されるように、選ばれる。書込みコマンドをほとんどあまり使用しない書込み再配列アルゴリズムは一般にそれほど時間効率的でない書込みコマンドシーケンスを提供する。しかしながら、方法１０００で再配列されている書込みコマンドは互いに近接して位置するために既に選択されているので、書込みコマンドの最小のＫの値は、方法５００および６００の中で所定数Ｎに好ましく使用された値より実質的に小さいかもしれない。例えば、いくつかの実施例では、Ｋは約１０〜５０である。
【００７６】
図示のように、方法１０００はステップ１００１で始まり、そこで、ディスクドライブ９００のアクティブな読取り／書込みへッドの現在のサブゾーンセグメントが決定される。例えば、図９の中の読取り／書込みへッド９２１Ａは、フラッシュメモリ装置１３５に格納された書込みコマンドをサブゾーンセグメント９６３中の１つ以上のデータトラックに実行する過程にあってもよい。したがって、この例においては、現在のサブゾーンセグメントはサブゾーンセグメント９６３である。
【００７７】
ステップ１００２で、選択されたサブゾーン領域のＬＢＡ限界は決定される。最初に、選択されたサブゾーン領域は、ステップ１００１で決定された現在のサブゾーンセグメントと同義である。したがって、ステップ１００１の間サブセクタセグメント９６３内の書込みコマンドを実行する読取り／書込みへッド９２１Ａの例を考えれば、ステップ１００２でサブセクタセグメント９６３に含まれるデータトラックのＬＢＡ限界が決定される。ステップ１００５で以下に記述されるいくつかの状況で、選択されたサブゾーン領域はステップ１００１で決定された現在のサブゾーンセグメントに隣接しているか接近している１つ以上のサブゾーンセグメントを含んでいる。選択されたサブゾーン領域のＬＢＡ限界の決定はルックアップテーブルを調べることを含んでいてもよい。しかし、典型的に、トラック密度に基づいて、関心のあるサブセクタセグメントか複数のセグメントを含んでいるデータゾーンのＬＢＡ限界などの、そのようなＬＢＡ限界を決定するためにアルゴリズムが使用される。
【００７８】
ステップ１００３で、ディスクドライブ９００内のサーボサブゾーンへの書込みに適格な全ての書込みコマンドが決定される。適格の書込みコマンドは、フラッシュメモリ装置１３５に格納され、選択されたサブゾーン領域のＬＢＡ限界（ステップ１００２で決定された）内のＬＢＡを有する、ダーティな書込みコマンドを全て含んでいる。フラッシュメモリ装置１３５に格納された書込みコマンドがＬＢＡによって一般的に表の様式で組織されるので、適格の書込みコマンドの決定は計算上効率的な手順である。従って、適格の書込みコマンドの決定は、何十万の中で番号を付けることができる、フラッシュメモリ装置１３５中のすべてのキャッシュエントリーを捜すことを要求しない。
【００７９】
ステップ１００４で、ステップ１００３で決定された適格の書込みコマンドの合計数は、書込みコマンドの最小のＫの値と比較される。適格の書込みコマンドの数が書込みコマンドの最小のＫの値と等しいあるいはそれ以上である場合、方法１０００はステップ１００６に移る。適格の書込みコマンドの数が書込みコマンドの最小のＫの値未満である場合、方法１０００はステップ１００５に、その後ステップ１００２に移る。
【００８０】
ステップ１００５で、選択されたサブゾーン領域は１つ以上の接近、または隣接するサブゾーンセグメントを含めるために拡張する。次に、方法１０００はステップ１００２に戻る。例えば、ステップ１００３の選択されたサブゾーン領域がサブゾーンセグメント９６３からなり、ステップ１００４で適格の書込みコマンドの数は書込みコマンドの最小のＫの値未満である場合、選択されたサブゾーン領域はサブゾーンセグメント９５３及び／または９７３を含めるために拡張してもよい。ステップ１００３の選択されたサブゾーン領域がいくつかのサブゾーンセグメント（例えばサブゾーンセグメント９５３、９６３および９７３）から既に成る場合、選択されたサブゾーン領域は記憶ディスク９２０の表面９２１上の１つ以上の追加のサブゾーンセグメント（図示せず）を含めるために拡張してもよい。表面９２１上のサブゾーンセグメントの各々が比較的少数、例えば典型的には２００のトラックから構成されるので、これらのサブゾーンセグメント間の放射方向のシーク時間は非常に短い。従って、ディスク表面９２１上の多数のサブゾーンセグメントを横切って配置された書込みコマンドは、書込みコマンド間の比較的低いレイテンシィで実行することができ、フラッシュメモリ装置１３５から記憶ディスク９２０までの実効的なデータ転送速度を改善する。
【００８１】
いくつかの実施例中で、ステップ１００３の選択されたサブゾーン領域が１つのディスク表面（例えば表面９２１）上の比較的多数のサブゾーンセグメントから既に成る場合、選択されたサブゾーン領域は、近隣のディスク表面（例えばディスク表面９１２あるいは９２２）上の１つ以上のサブゾーンセグメントを含めるようにステップ１００５で拡張してもよい。そのような実施例では、選択されたサブゾーン領域を横切る放射方向のシーク時間がディスクドライブ９００の予測ヘッドスイッチ時間を超過する場合、近隣の表面上のサブゾーンセグメントが含まれている。例えば、ステップ１００３の選択されたサブゾーン領域が１０あるいは１２のサブゾーンセグメントから成る場合、選択されたサブゾーン領域の対向端に配置されたサブゾーンセグメント間の放射方向のシーク時間は、ディスクドライブ９００の異なる読取り／書込みへッドの間のヘッドスイッチ時間を潜在的に超過することができる。したがって、ステップ１００５で選択されたサブゾーン領域を拡張する場合、異なるディスク表面上のサブゾーンセグメントは有効的により接近していて、同じディスク表面上で現在定義されている選択されたサブゾーン領域に隣接しているサブゾーンセグメントに比べてより関連性が少ないレイテンシィを持つ。この理由で、いくつかの実施例では、ステップ１００５の選択されたサブゾーン領域の拡張は同じディスク表面上に配置されたサブゾーンセグメントに制限されておらず、ディスクドライブ９００の他のディスク表面に配置されたサブゾーンセグメントを同様に含んでいてもよい。
【００８２】
ステップ１００６で、ステップ１００３−１００５で決定された適格の書込みコマンドの書込み再配列が行なわれる。１つの実施例では、ステップ１００６の書込み再配列は、各書込みコマンドの位置最適化を使用する。具体的には、個々の適格の書込みコマンドのアクセス時間は放射方向のシークおよび回転方向のレイテンシィに基づく。その結果、最適なシーク時間は各書込みコマンド毎に決定される。これは、回転方向のレイテンシィを含まない実質的なトラックベースの計算であるＬＢＡベースの書込み再配列スキームと対照的である。
【００８３】
ステップ１００７で、ステップ１００６で決定された書込みコマンドシーケンスの最初の書込みコマンド、つまり最短のアクセス時間を持つ書込みコマンドは実行される。また、前記書込みコマンドに関連するデータは、記憶ディスク１１０に書き込まれる。
【００８４】
ステップ１００８で、選択されたサブゾーン領域は、書込みコマンドの消耗があるかチェックされる。言いかえれば、選択されたサブゾーン領域にあるＬＢＡを有するフラッシュメモリ装置１３５に残るダーティな書込みコマンドの数が決定される。この数が前もって定義した限界と等しいあるいはそれ未満である場合、選択されたサブゾーン領域は書込みコマンドを消耗したと考えられ、方法１０００はステップ１００９に移る。この数が前もって定義した限度を越える場合、選択されたサブゾーン領域は書込みコマンドを消耗したとは考えられない。また、方法１０００はステップ１００３に移り、書込み再配列が再び行なわれる。いくつかの実施例では、前もって定義した限界は、書込み再配列が比較的非効率となる、例えば１０または２０の数である。他の実施例では、前もって定義した限界は０である、つまり、選択されたサブゾーン領域は、選択されたサブゾーン領域にあるＬＢＡを有するフラッシュメモリ装置１３５に格納された残りの書込みコマンドが無くなるまで、書込みコマンドを消耗したとは考えられない。
【００８５】
ステップ１００８で選択されたサブゾーン領域が書込みコマンドを消耗すると決定された後、ステップ１００９で、読取り／書込みへッド１２７は異なるサブゾーンに移動される。１つの実施例では、読取り／書込みへッド１２７は、選択されたサブゾーン領域に隣接しているサブゾーンに移動される。したがって、フラッシュメモリ装置１３５に格納された多数の書込みコマンドを実行する場合、読取り／書込みへッド１２７は、あるサブゾーンから別のサブゾーンに記憶ディスク１１０の表面を横切って漸次移動することができる。このように、読取り／書込みへッド１２７は記憶ディスク１１０の全てのサブゾーンの上を通ることを保証され、フラッシュメモリ装置１３５に存在する書込みコマンドが不所望な長い間ダーティなままであることを防ぐ。さらに、フラッシュメモリ１３５に格納された書込みコマンドを実行する過程はまさに効率的な時間である。読取り／書込みへッド１２７が１つの選択されたサブゾーン領域から隣接するサブゾーンまでを横切るのみので、読取り／書込みへッド１２７は記憶ディスク１１０あるいは多数の記憶ディスク１１０を横切ってランダム位置へのデータ書込みを実行しない。従って、方法１０００の完了に伴い、あるサブゾーンから別のサブゾーンまで読取り／書込みへッド１２７を再配列するのにほとんど時間を費やされない。
【００８６】
いくつかの実施例では、フラッシュメモリ１３５中の最も過去に使用した書込みコマンドに対応する場所が配置されるサブゾーンに読取り／書込みへッド１２７が移動される「リセット」手順は、周期的に行なわれる。そのような実施例では、その後、方法１０００は、このサブゾーンを含んでいる選択されたサブゾーン領域上で行なわれる、つまり、このサブゾーンに対応するＬＢＡを有するフラッシュメモリ装置１３５に格納された書込みコマンド上で、書込み再配列、及び書込みは行なわれる。したがって、最も過去に使用した書込みコマンドと同じサブゾーンに対応するＬＢＡを有する書込みコマンドと同様に、フラッシュメモリ装置１３５中の最も過去に使用した書込みコマンドも実行される。それらに関連するデータは、記憶ディスク１１０に書き込まれる。このように、フラッシュメモリ装置１３５に格納された最も過去に使用した書込みコマンドは、周期的に実行され、フラッシュメモリ装置１３５に存在する書込みコマンドが不所望な長い間ダーティのままであることを防ぐ。
【００８７】
いくつかの実施例では、そのようなリセット手順は、フラッシュメモリ装置１３５に格納された書込みコマンドの所定回数の後に行なわれる。所定回数は、例えば、１０００回の書込みコマンド毎に１回のように、方法１０００の性能への非能率の導入を最小化するために、比較的大きいことは望ましい。あるいは、方法１００が所定回数、例えば５０〜１００、反復した後、そのようなリセット手順は行なわれる。
【００８８】
要するに、発明の実施例は、データがＨＤＤの中の不揮発性の媒体に転送されるレートを増加させるためのシステムと方法を提供する。磁気ディスク装置のキャッシュメモリとして大きな不揮発性のソリッドステートメモリ装置を使用することによって、有利に効率的なやり方で、非常に多くの書込みコマンドはキャッシュに入れ、引き続いて再配列し、実行することができる。本発明の付加的な利点は、不揮発性のソリッドステートメモリ装置に格納された書込みコマンドの一部だけを戦略的に選択し再配列することによって、再配列するプロセスの効率がさらに増加することである。
【００８９】
前述したものが本発明の実施例に向けられているが、発明の他の、およびさらなる実施例は発明の基本的な範囲から逸脱することなく、考案されてもよい。また、それの範囲は続く請求項によって決定される。
【００９０】
本発明は以下の実施形態を含む。
【００９１】
（１）不揮発性のソリッドステートメモリ装置へのデータの格納を制御するようにプログラムされた制御ユニットと、磁気記憶ディスクとを含むハイブリッドドライブにデータを格納する方法であって、
格納するデータを受信するステップと、
前記磁気記憶ディスクに関連するＤＲＡＭバッファに受信データを格納することなく、受信データを前記不揮発性のソリッドステートメモリ装置に直接書込むステップと、
を具備する方法。
【００９２】
（２）前記制御ユニットは前記ソリッドステートメモリ装置に格納されたデータを読み出すステップと、前記データを前記磁気記憶ディスクに書き込むステップとをさらに実行する（１）記載の方法。
【００９３】
（３）前記データを前記磁気記憶ディスクに書き込む前に前記データは前記ＤＲＡＭバッファに格納される（２）記載の方法。
【００９４】
（４）前記ソリッドステートメモリ装置の記憶容量が消耗されたことを決定するステップをさらに具備し、
前記ソリッドステートメモリ装置に格納されたデータを読み出し、前記データを磁気記憶ディスクに書込むステップはこの決定に応じて実行される（３）記載の方法。
【００９５】
（５）前記消耗された記憶容量は追加のデータを格納するのに利用できる記憶容量が実質的に無いことである（４）記載の方法。
【００９６】
（６）前記消耗された記憶容量は追加のデータを格納するのに利用できる所定の記憶容量以下である（５）記載の方法。
【００９７】
（７）前記磁気記憶ディスクがアイドル状態であるかを決定するステップをさらに具備し、
前記ソリッドステートメモリ装置に格納されたデータを読み出し、前記データを磁気記憶ディスクに書込むステップはこの決定に応じて実行される（２）記載の方法。
【００９８】
（８）データ格納に利用可能である磁気記憶ディスクに書込まれたデータに対応する前記ソリッドステートメモリ装置中の場所を指定するステップをさらに具備する（２）記載の方法。
【００９９】
（９）前記不揮発性のソリッドステートメモリ装置内で前記受信データを書込むことは、不揮発性のソリッドステートメモリ装置及び磁気記憶ディスクに関連するＤＲＡＭバッファに前記制御ユニットを接続するデータバスによって前記受信データを送信することを具備する（１）記載の方法。
【０１００】
（１０）前記不揮発性のソリッドステートメモリ装置内で前記受信データを書込むことは、前記フラッシュ管理装置を前記不揮発性のソリッドステートメモリ装置に接続するＮＡＮＤインタフェースバスによって前記受信データを送信することを具備する（１）記載の方法。
【０１０１】
（１１）前記フラッシュ管理装置および制御ユニットは前記ハイブリッドドライブ中のシステム・オン・チップのエレメントである（１０）記載の方法。
【０１０２】
（１２）不揮発性のソリッドステートメモリ装置と、磁気記憶ディスクと、制御ユニットとを含むデータ記憶装置内で前記磁気記憶ディスクに書込まれるデータブロックを配列する方法であって、
前記不揮発性のソリッドステートメモリ装置にデータブロックを書込むことと、
前記不揮発性のソリッドステートメモリ装置に書込まれたＭ個のデータブロックの中からＮ個のデータブロックを選択すること、ＮはＭより小さい、と、
前記磁気記憶ディスクに前記選択されたデータブロックを書込む前に前記選択されたデータブロックを配列することと、
前記磁気記憶ディスクへ前記配列したデータブロックの１番目を書込むことと、
を具備し、
前記Ｎ個のデータブロックを選択することは、前記不揮発性のソリッドステートメモリ装置に格納され、前記磁気記憶ディスクに書込まれていない最も過去に使用したデータブロックのリストから最も過去に使用したＮ個のデータブロックを選択することを具備する方法。
【０１０３】
（１３）前記最も過去に使用したデータブロックのリストは、前記不揮発性のソリッドステートメモリ装置に書込まれたデータブロックの最新リストと、前記不揮発性のソリッドステートメモリ装置に書込まれたデータブロックの頻度リストと、あるいは両者のコンビネーションを具備する（１２）記載の方法。
【０１０４】
（１４）前記最新リストと前記頻度リストの少なくとも１つはデータブロックのリンクしたリストを具備し、前記リンクしたリスト内では、データ構造は前記リストに含まれている各データブロックに関連し、前記データ構造は前記リンクしたリスト内の次の最も過去に使用したデータブロックを参照するポインタと、前記リンクしたリスト内の次の最も最近使用したデータブロックを参照するポインタとを含む（１３）記載の方法。
【０１０５】
（１５）前記最新リストと前記頻度リストの少なくとも１つはデータブロックグループのリンクしたリストを具備し、前記リンクしたリスト内では、データ構造は前記リストに含まれている各データブロックグループに関連し、前記データ構造は前記リンクしたリスト内の次の最も過去に使用したデータブロックグループを参照するポインタと、前記リンクしたリスト内の次の最も最近使用したデータブロックグループを参照するポインタとを含む（１３）記載の方法。
【０１０６】
（１６）前記リンクしたリスト内のデータブロックグループは多数のデータブロックを具備し、前記多数のデータブロックの中の最も過去に使用したデータブロックは次の最も過去に使用したデータブロック内のどのデータブロックよりも最近使用され、前記多数のデータブロックの中の最も最近使用したデータブロックは次の最も最近使用したデータブロック内のどのデータブロックよりも過去に使用される、（１５）記載の方法。
【０１０７】
（１７）前記不揮発性のソリッドステートメモリ装置に書込まれた前記Ｍ個のデータブロックの中からＮ個のデータブロックの第２のグループを選択することと、
前記磁気記憶ディスクに前記選択されたデータブロックを書込む前にＮ個のデータブロックからなる前記選択された第２のグループを配列することと、
前記磁気記憶ディスクへ前記配列したＮ個のデータブロックからなる前記第２のグループの１番目を書込むことと、
を具備する（１２）記載の方法。
【０１０８】
（１８）前記磁気記憶ディスクに前記配列したデータブロックの２番目を書込むことをさらに具備する（１２）記載の方法。
【０１０９】
（１９）ＮはＭより小さい（１２）記載の方法。
【０１１０】
（２０）ＮはＭより１桁小さい（１９）記載の方法。
【０１１１】
（２１）前記最も過去に使用したデータブロックのリストから最も過去に使用したデータブロックを周期的に書込むことをさらに具備する（１２）記載の方法。
【０１１２】
（２２）周期的は、前記不揮発性のソリッドステートメモリ装置に格納された所定数の配列されたデータブロックを前記磁気記憶ディスクへ後で書き込むことを具備する（２１）記載の方法。
【０１１３】
（２３）前記不揮発性のソリッドステートメモリ装置に前記データブロックを書込むことは、前記磁気記憶ディスクに関連するＤＲＡＭバッファに前記データブロックを格納することなく前記データブロックを前記不揮発性のソリッドステートメモリ装置へ直接に書込むことを具備する（１２）記載の方法。
【０１１４】
（２４）前記不揮発性のソリッドステートメモリ装置に前記データブロックを書込むことは、前記磁気記憶ディスクのためにデータをバッファするように構成されたＤＲＡＭバッファに前記データブロックを格納することなく前記データブロックを前記不揮発性のソリッドステートメモリ装置へ直接に書込むことを具備する（１２）記載の方法。
【０１１５】
（２５）データ格納に利用可能な磁気記憶ディスクに書込まれた前記配列されたデータブロックの第１番目に対応する前記ソリッドステートメモリ装置内の位置を指定するステップをさらに具備する（１２）記載の方法。
【０１１６】
（２６）前記不揮発性のソリッドステートメモリ装置に前記データブロックを書込むことは、前記磁気記憶ディスクのためにデータをバッファするように構成されたＤＲＡＭバッファに前記データ記憶装置の前記制御ユニットを接続するデータバスによって前記データブロックを送信することを具備する（１２）記載の方法。
【０１１７】
（２７）前記不揮発性のソリッドステートメモリ装置に前記受信データを書込むことは、前記フラッシュ管理装置を前記不揮発性のソリッドステートメモリ装置に接続するＮＡＮＤインタフェースバスによって前記データブロックを送信することを具備する（１２）記載の方法。
【０１１８】
（２８）前記選択されたブロックを配列することは前記選択されたブロックのおのおのについて回転方向のレイテンシィを計算することを具備する（１２）記載の方法。
【０１１９】
（２９）不揮発性のソリッドステートメモリ装置と、磁気記憶ディスクと、制御ユニットとを含むデータ記憶装置内で前記磁気記憶ディスクに書込まれるデータブロックを配列する方法であって、
前記不揮発性のソリッドステートメモリ装置にデータブロックを書込むことと、
前記不揮発性のソリッドステートメモリ装置に書込まれたＭ個のデータブロックの中からＮ個のデータブロックを選択すること、ＮはＭより小さい、と、
前記磁気記憶ディスクに前記選択されたデータブロックを書込む前に前記選択されたデータブロックを配列することと、
前記磁気記憶ディスクへ前記配列したデータブロックの１番目を書込むことと、
前記不揮発性ソリッドステートメモリ装置に格納され、前記磁気記憶ディスクに書込まれていない最も過去に使用したデータブロックのリストから前記不揮発性ソリッドステートメモリ装置に格納された最も過去に使用したデータブロックを周期的に書込むことと、
を具備し、
前記Ｎ個のデータブロックを選択することは、前記磁気記憶ディスクのアクティブな読出し／書込みヘッドの現在位置に対して前記磁気記憶ディスク上で最も近いＮ個の位置に対応する論理ブロックアドレスを有するＮ個のデータブロックを選択することを具備する方法。
【０１２０】
（３０）周期的は、前記不揮発性のソリッドステートメモリ装置に格納された所定数の配列されたデータブロックを前記磁気記憶ディスクへ後で書き込むことを具備する（２９）記載の方法。
【０１２１】
（３１）前記最も過去に使用したデータブロックのリストは、前記不揮発性のソリッドステートメモリ装置に書込まれたデータブロックの最新リストと、前記不揮発性のソリッドステートメモリ装置に書込まれたデータブロックの頻度リストと、あるいは両者のコンビネーションを具備する（２９）記載の方法。
【０１２２】
（３２）前記最新リストと前記頻度リストの少なくとも１つはデータブロックグループのリンクしたリストを具備し、前記リンクしたリスト内では、データ構造は前記リストに含まれている各データブロックに関連し、前記データ構造は前記リンクしたリスト内の次の最も過去に使用したデータブロックを参照するポインタと、前記リンクしたリスト内の次の最も最近使用したデータブロックを参照するポインタとを含む（３１）記載の方法。
【０１２３】
（３３）前記リンクしたリスト内のデータブロックグループは多数のデータブロックを具備し、前記多数のデータブロックの中の最も過去に使用したデータブロックは次の最も過去に使用したデータブロック内のどのデータブロックよりも最近使用され、前記多数のデータブロックの中の最も最近使用したデータブロックは次の最も最近使用したデータブロック内のどのデータブロックよりも過去に使用される、（３２）記載の方法。
【０１２４】
（３４）前記不揮発性のソリッドステートメモリ装置に書込まれた前記Ｍ個のデータブロックの中からＮ個のデータブロックの第２のグループを選択することと、
前記磁気記憶ディスクに前記選択されたデータブロックを書込む前にＮ個のデータブロックからなる前記選択された第２のグループを配列することと、
前記磁気記憶ディスクへ前記配列したＮ個のデータブロックからなる前記第２のグループの１番目を書込むことと、
を具備する（２９）記載の方法。
【０１２５】
（３５）前記磁気記憶ディスクに前記配列したデータブロックの２番目を書込むことをさらに具備する（２９）記載の方法。
【０１２６】
（３６）ＮはＭより小さい（２９）記載の方法。
【０１２７】
（３７）ＮはＭより１桁小さい（３６）記載の方法。
【０１２８】
（３８）前記不揮発性のソリッドステートメモリ装置にデータブロックを書込む前に、前記磁気記憶ディスクに書込まれるデータブロックを前記データ記憶装置のホスト装置から受信することをさらに具備する（２９）記載の方法。
【０１２９】
（３９）前記不揮発性のソリッドステートメモリ装置にデータブロックを書込むことは前記磁気記憶ディスクのためにデータをバッファするように構成されたＤＲＡＭバッファに前記受信データを書込むことなく前記データブロックを前記不揮発性のソリッドステートメモリ装置に書き込むことを具備する（２９）記載の方法。
【０１３０】
（４０）データ格納のために利用可能な磁気記憶ディスクに書込まれる前記配列されたデータブロックの第１番目に対応する前記ソリッドステートメモリ装置内の場所を指定するステップをさらに具備する（２９）記載の方法。
【０１３１】
（４１）前記不揮発性のソリッドステートメモリ装置に前記データブロックを書込むことは、前記磁気記憶ディスクのためにデータをバッファするように構成されたＤＲＡＭバッファに前記制御ユニットを接続するデータバスによって前記データブロックを送信することを具備する（２９）記載の方法。
【０１３２】
（４２）前記不揮発性のソリッドステートメモリ装置に前記データブロックを書込むことは、前記フラッシュ管理装置を前記不揮発性のソリッドステートメモリ装置に接続するＮＡＮＤインタフェースバスによって前記データブロックを送信することを具備する（２９）記載の方法。
【０１３３】
（４３）前記選択されたブロックを配列することは前記選択されたブロックのおのおのについて回転方向のレイテンシィを計算することを具備する（２９）記載の方法。
【０１３４】
（４４）不揮発性のソリッドステートメモリ装置と、磁気記憶ディスクと、制御ユニットとを含むデータ記憶装置内で前記磁気記憶ディスクに書込まれるデータブロックを配列する方法であって、
前記不揮発性のソリッドステートメモリ装置にデータブロックを書込むことと、
前記不揮発性のソリッドステートメモリ装置に書込まれており、前記磁気記憶ディスクのアクティブな読出し／書込みヘッドが位置する前記磁気記憶ディスクのサブゾーン領域に配置された位置に対応する論理ブロックアドレスを有するデータブロックを選択することと、
前記磁気記憶ディスクに前記選択されたデータブロックを書込む前に前記選択されたデータブロックを配列することと、
前記磁気記憶ディスクへ前記配列したデータブロックの１番目を書込むことと、
を具備する方法。
【０１３５】
（４５）前記サブゾーン領域は前記磁気記憶ディスクの一つのサーボサブゾーンからなる（４４）記載の方法。
【０１３６】
（４６）前記サーボサブゾーンは前記磁気記憶ディスクのデータゾーンの一部分からなる（４５）記載の方法。
【０１３７】
（４７）前記不揮発性のソリッドステートメモリ装置に格納されたデータブロックを選択することは、
前記サブゾーン領域に配置された選択されたデータブロックの数を所定の最小値と比較することと、
前記サブゾーン領域に隣接する付加的なサーボサブゾーンを含むように前記サブゾーン領域を、前記比較に応答して再定義することと、
を具備する（４４）記載の方法。
【０１３８】
（４８）前記所定の最小値は前記不揮発性のソリッドステートメモリ装置に格納されたデータブロックの数より小さい（４７）記載の方法。
【０１３９】
（４９）前記所定の最小値は前記不揮発性のソリッドステートメモリ装置に格納されたデータブロックの数より１桁小さい（４８）記載の方法。
【０１４０】
（５０）前記不揮発性のソリッドステートメモリ装置に格納され、前記磁気記憶ディスクに書込まれていない最も過去に使用したデータブロックのリストから前記不揮発性のソリッドステートメモリ装置に格納された最も過去に使用したデータブロックを周期的に書込むことをさらに具備する（４４）記載の方法。
【０１４１】
（５１）周期的は、前記不揮発性のソリッドステートメモリ装置に格納された所定数の配列されたデータブロックを前記磁気記憶ディスクへ後で書き込むことを具備する（５０）記載の方法。
【０１４２】
（５２）前記最も過去に使用したデータブロックのリストは、前記不揮発性のソリッドステートメモリ装置に書込まれたデータブロックの最新リストと、前記不揮発性のソリッドステートメモリ装置に書込まれたデータブロックの頻度リストと、あるいは両者のコンビネーションを具備する（５０）記載の方法。
【０１４３】
（５３）前記磁気記憶ディスクに前記配列したデータブロックの２番目を書込むことをさらに具備する（４４）記載の方法。
【０１４４】
（５４）配列されたデータブロックの残りの数が消耗されるまで、前記配列されたデータブロックの残りのデータブロックを前記磁気記憶ディスクに書込むことを更に具備する（５３）記載の方法。
【０１４５】
（５５）前記磁気記憶ディスクに書込まれていない前記配列されたデータブロックの数が配列されたデータブロックの所定数以下である場合、前記配列されたデータブロックの残りの数が消耗される（５４）記載の方法。
【０１４６】
（５６）前記配列されたデータブロックの所定数は１である（５５）記載の方法。
【０１４７】
（５７）前記データブロックを前記不揮発性のソリッドステートメモリ装置に書込む前に、前記データ記憶装置のホスト装置から前記磁気記憶ディスクに書込まれるデータブロックを受信する（４４）記載の方法。
【０１４８】
（５８）前記不揮発性のソリッドステートメモリ装置にデータブロックを書込むことは、前記磁気記憶ディスクのためにデータをバッファするように構成されたＤＲＡＭバッファに前記受信データを格納することなく前記不揮発性のソリッドステートメモリ装置に前記データブロックを直接書込むことを具備する（４４）記載の方法。
【０１４９】
（５９）データ格納に利用可能な前記磁気記憶ディスクに書込まれた前記配列されたデータブロックの１番目に対応する前記ソリッドステートメモリ装置中の場所を指定するステップをさらに具備する（４４）記載の方法。
【０１５０】
（６０）前記不揮発性のソリッドステートメモリ装置にデータブロックを書込むことは、前記磁気記憶ディスクのためにデータをバッファするように構成されたＤＲＡＭバッファに前記データ記憶装置の前記制御ユニットを接続するデータバスによって前記データブロックを送信することを具備する（４４の方法。
【０１５１】
（６１）前記不揮発性のソリッドステートメモリ装置にデータブロックを書込むことは、前記不揮発性のソリッドステートメモリ装置にフラッシュ管理装置を接続するＮＡＮＤインターフェースバスによって前記データブロックを送信することを具備する（４４）記載の方法。
【０１５２】
（６２）前記選択されたブロックを配列することは前記選択されたブロックのおのおのについて回転方向のレイテンシィを計算することを具備する（４４）記載の方法。
【０１５３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１５４】
１００…ディスクドライブ、１１４…スピンドルモータ、１１０…記憶ディスク、１１６…ベースプレート、１２０…アクチュエータアーム・アセンブリ、１１６…ベースプレート、１２７…読取り／書込みへッド、１２２…アーム、１２１…スライダ、１２２…撓みアーム、１２６…軸受アセンブリ、１２４…アクチュエータアーム、１２８…ボイス・コイル・モータ。
【図１】
2013196755.tif 000003
【図２】
2013196755.tif 000004
【図３Ａ】
2013196755.tif 000005
【図３Ｂ】
2013196755.tif 000006
【図３Ｃ】
2013196755.tif 000007
【図４】
2013196755.tif 000008
【図５】
2013196755.tif 000009
【図６】
2013196755.tif 000010
【図７】
2013196755.tif 000011
【図８】
2013196755.tif 000012
【図９】
2013196755.tif 000013
【図１０】
2013196755.tif 000014