(57)【要約】【課題】増加されたデータ転送レートで、ホストコンピュータ及びハイブリッドディスクドライブ間でデータストリームを転送するための方法及びシステムを提供すること。【解決手段】実施形態によれば、磁気記憶デバイス及びフラッシュメモリデバイスを含んでいるハイブリッドデータストレージ機器にデータを格納するための方法であって、ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じてデータを受信するためのステップと、磁気記憶デバイスに関するデータをバッファする第１のバッファ及びフラッシュメモリデバイスに関するデータをバッファする第２のバッファの間で受信データを交互にバッファするためのステップとを具備する。【選択図】図３
2012234609.tif 000002
【特許請求の範囲】
【請求項１】
磁気記憶デバイス及びフラッシュメモリデバイスを含んでいるハイブリッドデータストレージ機器にデータを格納するための方法であって、
前記ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じてデータを受信するためのステップと、
前記磁気記憶デバイスに関するデータをバッファする第１のバッファ及び前記フラッシュメモリデバイスに関するデータをバッファする第２のバッファの間で前記受信データを交互にバッファするためのステップと、
を具備する方法。
【請求項２】
前記磁気記憶デバイスに前記第１のバッファにバッファされたデータを格納すること及び前記フラッシュメモリデバイスに前記第２のバッファにバッファされたデータを格納するためのステップをさらに具備する請求項１記載の方法。
【請求項３】
前記磁気ストレージデバイスに前記第１のバッファにバッファされたデータを格納するためのステップが、お互いに隣接しない前記磁気ストレージデバイスの第１の及び第２のデータトラックにデータを書き込むことを具備し、前記第１の及び第２のデータトラック間の前記磁気ストレージデバイスのデータトラックが前記第１のバッファにバッファされた前記データを含まない請求項２記載の方法。
【請求項４】
前記フラッシュメモリデバイスに前記第２のバッファにバッファされたデータを格納するための前記ステップが、前記第１の及び第２のデータトラック間の前記磁気ストレージデバイスの１つ以上のデータトラックのストレージキャパシティに実質的に等しい前記フラッシュメモリデバイスにデータを格納することを具備する請求項３記載の方法。
【請求項５】
前記第１の及び第２のバッファの間で前記受信データを交互にバッファするためのステップが、
(a)前記第１のバッファに前記受信データをバッファするためのステップと、
(b)前記第２のバッファに前記受信データをバッファするためのステップと、
(c)前記第１のバッファに前記受信データをバッファするためのステップと、
を具備する請求項１記載の方法。
【請求項６】
前記ステップ（a）の間、前記第１のバッファにバッファされた前記受信データが、前記磁気ストレージデバイスのシングルデータトラックのストレージキャパシティに少なくとも等しく、前記ステップ（b）の間、前記第２のバッファにバッファされた前記受信データが、前記磁気ストレージデバイスのシングルデータトラックのストレージキャパシティに少なくとも等しい、請求項５記載の方法。
【請求項７】
不揮発性ソリッドステート記憶媒体及び同心円状のデータトラックをともなった磁気ストレージ媒体にファイルに関するデータを格納するための方法であって、
前記磁気ストレージ媒体の第１のデータトラックに前記ファイルに関する前記データの第１の部分を格納するためのステップと、
前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記データの第２の部分を格納するためのステップと、
前記磁気ストレージ媒体の前記第１のデータトラックに隣接しない、前記磁気ストレージ媒体の第２のデータトラックに前記ファイルに関する前記データの第２の部分を格納するためのステップと、
を具備し、
前記第１のデータトラックと前記第２のデータトラックの間の前記磁気ストレージ媒体の１つ以上のデータトラックが前記ファイルに関する前記データの任意の部分を含まないものである方法。
【請求項８】
前記ファイルに関する前記データの任意の部分を含まない前記１つ以上のデータトラックが少なくとも２つのデータトラックを具備する請求項７記載の方法。
【請求項９】
前記第１の部分を格納する前に、第１のバッファに前記第１の部分のデータをバッファするためのステップと、
前記第２の部分を格納する前に、第２のバッファに前記第２の部分のデータをバッファするためのステップをさらに具備する請求項７記載の方法。
【請求項１０】
前記第３の部分を格納する前に、前記第１のバッファに前記第３の部分のデータをバッファするためのステップをさらに具備する請求項９記載の方法。
【請求項１１】
前記第２の部分が前記第１の部分の後にバッファされ、及び前記第３の部分が前記第２の部分の後にバッファされるように前記バッファすることを制御するためのステップをさらに具備する請求項１０記載の方法。
【請求項１２】
前記磁気ストレージ媒体の前記第１のデータトラックに前記ファイルに関する前記データの前記第１の部分を格納するためのステップ、及び前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記データの前記第２の部分を格納するためのステップが同時に生じる請求項９記載の方法。
【請求項１３】
前記磁気ストレージ媒体の前記第１のデータトラックに前記ファイルに関する前記データの前記第１の部分を格納するための前記ステップが、前記第１のデータトラックに前記ファイルに関する前記データの前記第１の部分を書き込むことを具備し、前記書き込むことが前記第１データトラックの開始点以外の前記第１のデータトラックの点で開始される、請求項７記載の方法。
【請求項１４】
２つの異なる記憶媒体にシングルファイルに関するデータを格納するためのハイブリッドデータストレージ機器であって、
前記ファイルに関するデータが格納される同心円状のデータトラックを有する磁気ストレージ媒体であって、前記ファイルに関するデータを含む前記データトラックの各々が前記ファイルに関するデータを含まない前記データトラックに隣接する磁気ストレージ媒体と、
前記ファイルに関して残っているデータを格納する不揮発性ソリッドステート記憶媒体と、
を具備するハイブリッドデータストレージ機器。
【請求項１５】
前記磁気ストレージ媒体に関するデータをバッファするように構成される第１のバッファと、
前記磁気ストレージ媒体の外径部に配置された同心円状のデータトラックの少なくとも半分のストレージキャパシティを備える第２のバッファと、
をさらに具備する請求項１４記載のハイブリッドデータストレージ機器。
【請求項１６】
前記ファイルに関するデータを含まない２つ以上のデータトラックが、前記ファイルに関するデータが格納される第１の及び第２の同心円状のデータトラックの間に配置され、及び連続的である請求項１４記載のハイブリッドデータストレージ機器。
【請求項１７】
コントローラをさらに具備する前記ハイブリッドデータストレージ機器であって、
前記コントローラは、
前記ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じて前記ファイルに関するデータを受信し、
前記磁気ストレージ媒体についてのデータをバッファするように前記コントローラによって制御される第１のバッファ及び前記不揮発性ソリッドステート記憶媒体についてのデータをバッファするように前記コントローラによって制御される第２のバッファの間で前記受信データを交互にバッファするように構成される請求項１４記載のハイブリッドデータストレージ機器。
【請求項１８】
前記不揮発性ソリッドステート記憶媒体に格納された前記ファイルに関する前記残りのデータが、前記ファイルに関するデータを含まず及び前記ファイルに関するデータを含むデータトラックに隣接する前記データトラックのストレージキャパシティよりも小さいまたは等しいサイズを持つ請求項１４記載のハイブリッドデータストレージ機器。
【請求項１９】
前記コントローラが、前記磁気ストレージ媒体に前記ファイルに関する前記データ及び前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記残りのデータを同時に格納するようにさらに構成される請求項１８記載のハイブリッドデータストレージ機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般にディスクドライブに関し、特にハイブリッドディスクシステムの２記憶媒体間のデータストリームの分割に関する。
【背景技術】
【０００２】
一般的に、コンピュータセントラルプロセシングユニット（ＣＰＵ）のプロセシングスピードは、コンピュータハードディスクドライブ（HDD）に関するデータ転送レートよりもはるかに早く増加した。特に大きなデータストリームが格納及び/または検索に関係している時、特にCPU及びHDD間のこのスピードギャップがアプリケーション遅延に寄与する。例えば、バッテリ電源をセーブするための“ハイバーネート”モードにラップトップコンピュータが入る時、大きなデータブロック、すなわちハイバーネートイメージファイル、が、HDDが完全にパワーダウンすることができる前にHDDにセーブされる必要がある。ハイバーネートイメージファイルは大きさが１ギガバイトのオーダーで、またはそれよりも大きくあることができるため、且つ２．５インチラップトップHDDへの最大データ転送レートはおよそ１５０メガバイト/秒のオーダーであるため、ハイバーネートイメージファイルを格納すること及び検索することは数秒の遅延を必要とすることができ、これはエンドユーザに対して不便であり注意をそらしていることである。このような遅延は、任意のかなり大きなデータストリームがHDD及びホストコンピュータの間で送信される時も共通である。その結果、コンピュータのHDD及びホストコンピュータ間のデータ転送レートを増加させるシステム及び方法が一般的に望ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の１つ以上の実施形態は、ハードディスクドライブのフラッシュメモリデバイス及びストレージディスク間で、システムバスのデータ転送キャパシティを時分割することによって増加されたデータ転送レートで、ホストコンピュータ及びハイブリッドディスクドライブ間でデータストリームを転送するための方法及びシステムを提供する。
【課題を解決するための手段】
【０００４】
実施形態によれば、磁気記憶デバイス及びフラッシュメモリデバイスを含んでいるハイブリッドデータストレージ機器にデータを格納するための方法であって、
前記ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じてデータを受信するためのステップと、
前記磁気記憶デバイスに関するデータをバッファする第１のバッファ及び前記フラッシュメモリデバイスに関するデータをバッファする第２のバッファの間で前記受信データを交互にバッファするためのステップと、
を具備する。
【０００５】
他の実施形態によれば、不揮発性ソリッドステート記憶媒体及び同心円状のデータトラックをともなった磁気ストレージ媒体にファイルに関するデータを格納するための方法であって、
前記磁気ストレージ媒体の第１のデータトラックに前記ファイルに関する前記データの第１の部分を格納するためのステップと、
前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記データの第２の部分を格納するためのステップと、
前記磁気ストレージ媒体の前記第１のデータトラックに隣接しない、前記磁気ストレージ媒体の第２のデータトラックに前記ファイルに関する前記データの第２の部分を格納するためのステップと、
を具備し、
前記第１のデータトラックと前記第２のデータトラックの間の前記磁気ストレージ媒体の１つ以上のデータトラックが前記ファイルに関する前記データの任意の部分を含まない。
【０００６】
他の実施形態によれば、２つの異なる記憶媒体にシングルファイルに関するデータを格納するためのハイブリッドデータストレージ機器であって、
前記ファイルに関するデータが格納される同心円状のデータトラックを有する磁気ストレージ媒体であって、前記ファイルに関するデータを含む前記データトラックの各々が前記ファイルに関するデータを含まない前記データトラックに隣接する磁気ストレージ媒体と、
前記ファイルに関して残っているデータを格納する不揮発性ソリッドステート記憶媒体と、
を具備するハイブリッドデータストレージ機器。
【図面の簡単な説明】
【０００７】
【図１】図１は、ディスクドライブの例示の実施形態の斜視図である。
【図２】図２は、サーボウェッジがストレージディスクに書き込まれた後データが典型的に編成されているストレージディスクの概略図を例証する。
【図３】図３は、発明の実施形態に従い、その中ディスクドライブが配置されているコンピューティングデバイスの部分的ブロック図を例証する。
【図４】図４は、本発明の１つの実施形態に従い、フラッシュメモリデバイスに及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである。
【図５】図５は、本発明の他の実施形態に従い、フラッシュメモリデバイスに及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである。
【図６】図６は、発明の実施形態に従い、空のデータストレージトラックが完全に書き込まれたデータトラックと交代されているストレージディスクの部分的概略図を例証する。
【図７】図７は、本発明の１つの実施形態に従って、空のデータストレージが完全に書き込まれたデータトラックと交代されている、磁気ストレージディスクに及びフラッシュメモリデバイスに交互にデータストリームを書き込むための方法ステップのフローチャートである。
【図８】図８は、本発明の１つの実施形態に従い、フラッシュバッファが小さすぎるため、システムバスのフルスピードでフラッシュメモリデバイスにデータが連続的に書き込まれることができない時のフラッシュメモリデバイス及びストレージディスクへのデータの転送を例証しているタイムライン図である。
【図９】図９は、本発明の１つの実施形態に従い、磁気ストレージデバイス及びフラッシュメモリデバイスを含むハイブリッドデータストレージ機器に多量のデータを格納するための方法ステップのフローチャートである。
【図１０】図１０は、本発明の１つの実施形態に従い、同心円状のデータトラックをともなった磁気ストレージ媒体及び不揮発性ソリッドステートストレージ媒体にファイルに関するデータを格納するための方法ステップのフローチャートである。
【発明を実施するための形態】
【０００８】
以下、実施の形態について図面を参照して説明する。
【０００９】
明確にするために、同一の参照番号が、複数の図で共通である同一のエレメントを指定するために、適用可能な場所で使用される。１つの実施形態の構成要素は更なる列挙なしに他の実施形態に取り込まれるかもしれないということが予想される。
【００１０】
図１はディスクドライブ１１０の例示の実施形態の斜視図である。明確にするために、ディスクドライブ１１０はトップカバーなしで例証される。ディスクドライブ１１０はスピンドルモータ１１４によって回転される少なくとも１つのストレージディスク１１２を含む。スピンドルモータ１１４はベースプレート１１６上にマウントされ。アクチュエータアセンブリ１１８はベースプレート１１６にもマウントされ、リード/ライトヘッド１２７をともなったフレクスチャアーム１２２にマウントされるスライダー１２０を持つ。フレクスチャアーム１２２は、ベアリングアセンブリ１２６の周りを回転するアクチュエータアーム１２４に取り付けられる。ボイスコイルモータ１２８はストレージディスク１１２に対してスライダー１２０を動かす、それによって、ストレージディスク１１２の表面１１２A上に配置された所望の同心円状のデータストレージトラックにリード/ライトヘッド１２７を位置付ける。スピンドルモータ１１４、リード/ライトヘッド１２７、及びボイスコイルモータ１２８は、プリント回路基板１３２にマウントされる、電子回路１３０に結合される。電子回路１３０は、リードチャネル、マイクロプロセッサベースドコントローラ、ランダムアクセスメモリ（RAM）、及びフラッシュメモリデバイスを含む。電子回路のさらなる詳細が図３に示される。記述の明確化のために、ディスクドライブ１１０は、シングルストレージディスク１１２及びアクチュエータアームアセンブリ１１８をともなって例証される。ディスクドライブ１１０はマルチプルストレージディスク１１２及びマルチプルアクチュエータアームアセンブリ１１８をも含むかもしれない。さらに、ディスク１１２の各々の面はフレクスチャアーム１２２に結合された関連付けられたリード/ライトヘッド１２７を持つかもしれない。
【００１１】
図２は、メディアライターまたはセルフサーボライト（SSW）を介してサーボウェッジ２４４が書き込まれた後データが典型的な方法で編成されているストレージディスク１１２を例証する。ストレージディスク１１２はデータを格納するためのデータセクタ２４６に置かれた同心円状のデータストレージトラック２４２を含む。同心円状のデータストレージトラック２４２はサーボウェッジ２４４に書き込まれたサーボ情報によって位置的に定義される。実質的に放射状に整列されたサーボウェッジ２４４は同心円状のデータストレージトラック２４２を横断しているように示され、同心円状のデータストレージトラック２４２のトラックピッチ、すなわちスペーシング及び半径位置を定義するサーボ情報を含んでいるサーボセクタを含む。このようなサーボ情報は、所望のトラック２４２の上にリード/ライトヘッド１２７を位置づけるために、リード及びライトオペレーションの間、リード/ライトヘッド１２７によって書き込まれるリファレンス信号を含んでいるサーボセクタを含む。実際には、サーボウェッジ２４４はいくらかカーブされるかもしれない、例えば、ディスクがスピンしていない間、ストロークを横断してリード/ライトヘッド１２７が動くならば、リード/ライトヘッド１２７によって追随されるだろうパスをミラーリングしているスパイラルパターンで構成される。このようなスパイラルパターンは、リード/ライトヘッド１２７の半径位置と無関係にウェッジトゥウェッジタイミングという結果に有利になる。典型的に、ストレージディスク１１２上に含まれるサーボウェッジ２４４及び同心円状のデータストレージトラック２４２の実際の数は、図２に例証されるよりもかなり大きい。例えば、ストレージディスク１１２は、数１０万の同心円のデータストレージトラック２４２、及び数１００のサーボウェッジ２４４を含むかもしれない。
【００１２】
ディスクドライブ１１０はハイブリッドドライブであるので、ノーマルオペレーションで、データは電子回路１３０に含まれるフラッシュデバイス及び/またはストレージディスク１１２に格納されることができ及びストレージディスク１１２から検索されることができる。ハイブリッドドライブで、電子回路１３０に含まれるフラッシュメモリデバイスのような不揮発性メモリは、より低い電力消費と同様に、より早いブート、ハイバーネーション、レジューム、及び他のデータリードライトオペレーションを提供するためにスピニングHDDを補完する。このようなドライブ構成は、モバイルコンピュータまたは他のモバイルコンピューティングデバイスのような、電池式のコンピュータシステムに対して特に有利である。
【００１３】
データがディスク１１２にまたはディスク１１２から転送される時、アクチュエータアームアセンブリ１１８はストレージディスク１１２の内径（ID）と外径（OD）の間の円弧を描き動く。アクチュエータアームアセンブリ１１８は、ボイスコイルモータ１２８のボイスコイルを通して電流がパスされる時、１つの角度方向に加速し、電流がリバースされる時、反対の方向に加速し、ストレージディスク１１２に関して取り付けられたリード/ライトヘッド１２７及びアクチュエーターアームアセンブリ１１８の位置を制御することを許可する。ボイスコイルモータ１２８は、同心円状のデータストレージトラックを横切ってリード/ライトヘッド１２７の位置を決定するために、リード/ライトヘッド１２７から読み出される位置データを使用する業界で知られるサーボシステムと結合される。サーボシステムは、ボイスコイルモータ１２８のボイスコイルを通って、駆動するために適切な電流を決定し、電流ドライバ及び関連した回路を使用して前記電流を駆動する。
【００１４】
図３は、本発明の実施形態に従って、ディスクドライブ１１０に接続されたホストコンピューティングデバイス３０１の部分的ブロック図を例証する。ディスクドライブ１１０はシステムバス３０２によってホストコンピューティングデバイス３０１に接続される。示されるように、ディスクドライブ１１０はストレージディスク１１２、ディスクバッファ３１２、フラッシュメモリデバイス３１０、フラッシュバッファ３１１、及びHDDコントローラ１３３を含む。ホストコンピューティングデバイス３０１は、ホストコンピューティングデバイス３０１の通常のオペレーションの間、どのデータがディスクドライブ１１０に格納され、検索されるかを決定する。ディスクバッファ３１２は、ダイナミックランダムアクセスメモリ（DRAM）のブロックのような揮発性データバッファであり、ストレージディスク１１２に格納されているデータに関するバッファとしてサーブする。フラッシュメモリデバイス３１０は、電気的に消去されることができ且つ再プログラムがされることができ、及び不揮発性記憶媒体としてのディスクドライブ１１０内のストレージディスク１１２を補完するようにサイズ指定される、NANDフラッシュチップのような不揮発性ソリッドステート記憶媒体である。フラッシュバッファ３１１はフラッシュメモリデバイス３１０に格納されているデータのためのバッファとしてサーブする揮発性データバッファである。フラッシュバッファ３１１はDRAMのブロックを含むかもしれない。あるいは、フラッシュバッファ３１１はスタティックランダムアクセスメモリ（SRAM）のブロックを含むかもしれない。スタティックランダムアクセスメモリ（SRAM）のブロックは、DRAMのブロックとは異なり、HDDコントローラ１３３を含んでいるチップとフラッシュメモリデバイス３１０を含んでいるチップとの間でのインタフェースとしてサーブするフラッシュコントローラチップと同じチップまたはデバイスの一部として有利に組み立てられることができる。あるいは、フラッシュバッファ３１１は、HDDコントローラ１３３それ自身の一部として組み立てられるブロックのSRAMであることができるだろう。HDDコントローラ１３３はディスクドライブ１１０のオペレーションを制御し、フラッシュメモリデバイス３１０及びストレージディスク１１２の特定の物理的位置にディスクドライブ１１０の論理ブロックアドレス（LBA）をマップし、及び発明の実施形態に従って、システムバス３０２の時間多重化を行う。示されるようにHDDコントローラ１３３は、本発明の実施形態に従って、フラッシュバッファ３１１及びディスクバッファ３１２間でデータストリーム３０３を分割するように構成される。いくつかの実施形態で、フラッシュバッファ３１１及びディスクバッファ３１２はDRAMの単一のブロックの２つのロジックパーティションである。
【００１５】
“ホストバス”とも称されるシステムバス３０２は、シリアルエーティエー(SATA)バスのようなハイスピードバスである。システムバス３０２は、データがフラッシュメモリデバイス３１０またはストレージディスク１１２のどちらかに書き込まれることができるレートよりも大きいデータ転送レートを用いて設定されている。例えば、ラップトップコンピュータに関する典型的なSATAバスは、約３ギガバイト/秒（Gbps）のレートでデータを転送することができ、それはシステムオーバーヘッドの原因となった後、約３００メガバイト/秒（MB）に等しい。対照的に、データは約１００乃至２００MBのレートでフラッシュメモリデバイスに一般に書き込まれることができ、約１５０MBのレートで外径２．５インチディスクに一般に書き込まれることができる。本発明の実施形態は、ストレージディスク１１２とフラッシュメモリデバイス３１０の間でシステムバス３０２のデータ転送能力を時間多重化することによって、増加されたデータ転送レートでホストコンピューティングデバイス３０１とディスクドライブ１１０の間でデータストリーム３０３を転送するためのシステム及び方法を提供する。ストレージディスク１１２とフラッシュメモリデバイス３１０がこの中に記述されるように同時にデータを検索または格納する時、ディスクドライブ１１０への実効データ転送レートが大きく増加し、いくつかの場合では２倍近くである。図３で、システムバス３０２はシングルバスとして描かれるが、いくつかの実施形態で、システムバス３０２は、ホストコンピューティングデバイス３０１とHDDコントローラ１３３の間の第１のバスと、HDDコントローラ１３３をフラッシュバッファ３１１とディスクバッファ３１２に接続している第２のバスを含むかもしれない。ここで、第１のバス及び第２のバスは異なるデータ転送スピードを持つ。このような実施形態で、システムバス３０２のデータ転送スピードは２つのバスの最も遅いものと考えられるかもしれない。
【００１６】
オペレーション中に、ホストコンピューティングデバイス３０１はシステムバス３０２及びHDDコントローラ１３３を介してディスクドライブ１１０にデータストリーム３０３を転送する。多くのファクタに基づいて、HDDコントローラ１３３は、前記データが最も高いデータ転送レートでディスクドライブ１１０に格納されるように、フラッシュメモリデバイス３１０とストレージディスク１１２との間で、データストリーム３０３に含まれるデータがどのように分けられるかを決定する。フラッシュメモリデバイス３１０とストレージディスク１１２の間でHDDコントローラ１３３がデータをどのように分けるかに影響することができるファクタは、システムバス３０２のデータ転送レート、フラッシュメモリ３１０のシーケンシャルデータレート、ディスクドライブ１１２のシーケンシャルデータレート、フラッシュバッファ３１１及びディスクバッファ３１２のデータストレージキャパシティ、及び伝えられているデータのコンテンツを含む。従って、データストリーム３０３が比較的大きな、すなわちフラッシュバッファ３１１よりも大きな、データストリームである時、プロセッサ１３３はフラッシュメモリデバイス３１０及びストレージディスク１１２が同時にデータを各々格納できるように、データストリーム３０３の代わりの部分をフラッシュメモリデバイス３１０とストレージディスク１１２に導く、それによってディスクドライブ１１０の実効シーケンシャルデータレートを増加する。発明の実施形態は、一部のデータストリームがストレージディスク１１２とフラッシュメモリデバイス３１０の間で交互に格納される時、増加された実効シーケンシャルデータレートでディスクドライブ１１０からデータストリームを検索することに等しく適用可能であるということに留意される。
【００１７】
１つの実施形態で、HDDコントローラ１３３は、ディスクドライブ１１０の実効シーケンシャルデータレートを増加するために、フラッシュメモリデバイス３１０とストレージディスク１１２の間で交互にデータストリーム３０３からのデータを導く。このプロセスは図４に例証され、これは本発明の１つの実施形態に従って、フラッシュメモリデバイスに及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである。方法ステップは図１乃至図３のシステムと関連して記述されるけれども、当業者は、任意の順番で、方法ステップを実行するように構成された任意のシステムが発明の範囲内であるということを理解するだろう。
【００１８】
示されるように、方法４００はステップ４０１で始まり、ここでHDDコントローラ１３３はディスクドライブ１１０に特定のLBA（論理ブロックアドレス）のブロックでデータストリーム３０を格納するためのホストコンピューティングデバイス３０１からのコマンドを受信する。データストリーム３０３はディスクドライブ１１０への特定のシーケンシャルデータ転送を表し、一度にホストコンピューティングデバイス３０１によって格納されているマルチプルファイルまたは、ハイバーネーションイメージファイルのような単一の大きなファイルであるかもしれない。データストリーム３０３はホストコンピューティングデバイス３０１とディスクドライブ１１０の１つの長いシーケンシャルデータ転送を表しているので、要求で示されるLBAのブロックは一般的に連続のLBAのブロックである。
【００１９】
ステップ４０２で、HDDコントローラ１３３はデータストリーム３０３からのデータブロックFB１をフラッシュバッファ３１１に導く。データブロックFB１はデータストリーム３０３の比較的小さな部分を作り上げるデータのブロックで、サイズで例えば約１メガバイトまたは２メガバイトであるかもしれない。HDDコントローラ１３３は、システムバス３０２のデータ転送レート、ディスクドライブ１１２のシーケンシャルデータレートに対するフラッシュメモリ３１０のシーケンシャルデータレートの比、フラッシュバッファ３１１及びディスクバッファ３１２のデータストレージキャパシティ、及び/またはディスクドライブ１１０に転送されているデータのコンテンツのような、下に記述された１つ以上のファクタに基づいて、データブロックFB１の正確なサイズを決定する。方法４００はデータブロックFB1からの第１のデータがフラッシュバッファ３１１によって受信された後直ぐにステップ４０３に進む。さらに、方法４００は、データブロックFB１がステップ４０２でフラッシュバッファ３１１に完全に書き込まれた時、ステップ４０４に進む。
【００２０】
ステップ４０３で、データブロックFB１からの第１のデータがステップ４０２でフラッシュバッファ３１１によって受信された後直ぐに、フラッシュメモリデバイス３１０へのフラッシュバッファ３１１のコンテンツの転送が開始する。フラッシュメモリデバイス３１０のシーケンシャルデータレートはシステムバス３０２のデータ転送レートよりも実質的に遅いので、フラッシュバッファ３１１は、データがフラッシュバッファ３１１からフラッシュメモリデバイス３１０に転送される時でさえ、データブロックFB１からの残りのデータを満たし続ける。
【００２１】
ステップ４０４で、フラッシュバッファのコンテンツがステップ４０３でフラッシュメモリデバイス３１０に書き込まれている時、HDDコントローラ１３３はデータストリーム３０３からのデータがブロックDB2をディスクバッファ３１２に導く。データブロックDB２は、データストリーム３０３の比較的小さな部分を作り上げるデータのブロックであり、例えばサイズでおよそ１メガバイトまたは２メガバイトであるかもしれない。いくつかの実施形態で、データブロックDB２のサイズは、ステップ４０２でフラッシュバッファ３１１に導かれたデータブロックFB１のような同じデータ量を含まないかもしれない。HDDコントローラ１３３は、システムバス３０２のデータ転送レート、ディスクドライブ１１２のシーケンシャルデータレートに対するフラッシュメモリ３１０のシーケンシャルデータレートの比、フラッシュバッファ３１１及びディスクバッファ３１２のデータストレージキャパシティ、及び/または下に記述され及びディスクドライブ１１０に転送されるデータのコンテンツ、のような、１つ以上のファクターに基づいてデータブロックDB２のサイズを決定する。方法４００は、データブロックDB２からの始めのデータがステップ４０４でディスクバッファ３１２によって受信された後、直ぐにステップ４０５に進む。さらに、方法４００は、ステップ４０４でデータブロックDB２がディスクバッファ３１２に完全に書き込まれた時、ステップ４０６に進む。
【００２２】
ステップ４０５で、データブロックDB２からの第１のデータがステップ４０４でディスクバッファ３１２によって受信された後直ぐに、ストレージディスク１１２へのディスクバッファ３１２のコンテンツの転送が開始する。（下に記述される）“ライトオンアライバル”コントロール方式がストレージディスクへの書き込みのために使用される実施形態で、データブロックDB２からの第１のデータがディスクバッファ３１２によって受信された後ほとんど直ぐにストレージディスク１１２へのディスクバッファ３１２のコンテンツの転送が開始する。ライトオンアライバルが使用されない実施形態で、ディスクドライブ１１０のリード/ライトヘッド１２７が、データブロックDB２が書き込まれるデータトラックの開始点に位置されることができるように、短いポーズの後、ストレージディスク１１２へのディスクバッファ３１２のコンテンツの転送が開始する。何れかの実施形態で、ディスクバッファ３１２がデータストリーム３０３から導かれたデータのブロックを満たし続けるように、データがストレージディスク１１２に書き込まれる。ステップ４０５の間、データブロックFB１からのデータがステップ４０３でフラッシュメモリデバイス３１０に同時に書き込まれる一方、データブロックDB２からのデータがストレージディスク１１２に書き込まれており、それゆえにディスクドライブ１１０への実効データ転送レートを増加している、ということにさらに留意される。
【００２３】
ステップ４０６で、HDDコントローラ１３３は、データストリーム３０３の転送が完了しているかどうかを決定する。もし、データストリーム３０３の転送が完了しているならば、方法４００がステップ４０７に進み、そして終わる。もしデータストリーム３０３の転送が完了していないならば、ステップ４０２乃至４０５が繰り返され、データブロックFB３、FB５などがフラッシュメモリデバイス３１０に書き込まれ、データブロックDB４、DB６などがストレージディスク１１２に書き込まれるように、方法４００は示されるようにステップ４０２に進む。方法４００は、データストリーム３０３がディスクドライブ１１０に転送されるまで継続する。
【００２４】
いくつかの実施形態で、例えばデータブロックFB１の先行するデータブロックの全てがフラッシュバッファ３１１からフラッシュメモリデバイス３１０に転送される前に、例えばデータブロックFB３のデータブロックの開始部分がステップ４０２でフラッシュバッファ３１１によって受信される。このように、データは、フラッシュメモリデバイス３１０の実質的に最大のシーケンシャルデータレートでフラッシュメモリデバイス３１０に連続的に書き込まれることができる。同様に、いくつかの実施形態で、例えばデータブロックDB２の先行するデータブロックの全てがディスクバッファ３１２からストレージディスク１１２に転送される前に、例えばデータブロックDB４のデータブロックの開始部分が、ステップ４０４でディスクバッファ３１２によって受信される。このように、ストレージディスク１１２は決してアイドルではなく、データストリーム３０３の転送が完了するまでそこに連続的にデータが書き込まれるので、データはストレージディスク１１２の実質的に最大のシーケンシャルデータレートでストレージディスク１１２に連続的に書き込まれることができる。
【００２５】
方法４００でストレージディスク１１２及びフラッシュメモリデバイス３１０は、それらの各々のシーケンシャルデータレートでまたはその近くでデータを受け入れることができるので、ディスクドライブ１１０の実効シーケンシャルデータレートが、データストリームはディスクまたはフラッシュメモリデバイスのどちらかに一般的に書き込まれる、従来のハイブリッドドライブによって実質的に増加される。ホストコンピューティングデバイス３０１が連続のLBAのブロックにデータストリーム３０３を格納するようにディスクドライブ１１０を一般的に導く一方、ディスクドライブ１１０は物理的に非連続な場所、すなわちストレージディスク１１２及びフラッシュメモリデバイス３１０、にデータストリーム３０３のデータを格納するということに留意される。
【００２６】
いくつかの実施形態で、プロセッサ１３３はストレージディスク１１２及びフラッシュメモリデバイス３１０の相対シーケンシャルデータレートに基づいて、ストレージディスク１１２及びフラッシュメモリデバイス３１０の間でのデータストリーム３０３の分割を決定する。特に、ストレージディスク１１２またはメモリデバイス３１０のどちらもデータストリーム３０３からのデータを格納していない時間を最小にするために最大のシーケンシャルデータレートを持っている記憶媒体のバッファに、HDDコントローラ１３３が比例的により大きなデータストリーム３０３を導く。このプロセスは、本発明の実施形態に従ってフラッシュメモリデバイス及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである図５に例証される。方法ステップは図１乃至図３のシステムに関連して記述されるけれども、当業者は、任意の順番で、方法ステップを実行するように構成された任意のシステムは発明の範囲内であるということを理解するだろう。
【００２７】
示されるように、方法５００はステップ５０２で開始し、そこでHDDコントローラ１３３は、ディスクドライブ１１０に特定のLBAのブロックでデータストリーム３０３を格納するためにホスコンピューティングデバイス３０１からのコマンドを受信する。
【００２８】
ステップ５０４で、HDDコントローラ１３３は、データブロックFB１及びFB３のようなフラッシュメモリデバイス３１０に格納されたデータブロックのサイズ、及びデータブロックDB３及びDB４のようなストレージディスク１１２に格納されたデータブロックのサイズを決定する。この決定はストレージディスク１１２及びフラッシュメモリデバイス３１０の相対シーケンシャルデータレートに基づく。例えば、もしシステムバス３０２が３００MBのデータ転送キャパシティを持ち、フラッシュメモリデバイス３１０が２００MBのシーケンシャルデータレートを持ち、ストレージディスク１１２が１００MBのシーケンシャルデータレートを持つならば、HDDコントローラ１３３は、ディスクバッファ３１２によりも、フラッシュバッファ３１１に２倍のデータストリーム、すなわち１００MBに対する２００MB、を導くだろう。ストレージディスク１１２のシーケンシャルデータレートは、全てのトラックに対して一定ではなく、データが書き込まれている現在のトラックの半径位置に依存して変化するということに留意する。特定のトラックに対するデータレートは、ホストコンピューティングデバイス３０１によってデータ書き込みが要求された時、HDDコントローラ１３３によって知られるので、HDDコントローラ１３３はストレージディスク１１２に導かれた任意のデータに関するデータレートを決定し、それゆえに、ストレージディスク１１２へ導かれたデータストリーム３０３の一部を修正する。
【００２９】
ステップ５０６で、HDDコントローラ１３３は、方法４００で上述したようにストレージディスク１１２及びフラッシュメモリデバイス３１０にデータを導く。
【００３０】
方法５００は、ストレージディスク１１２及びフラッシュメモリ３１０のシーケンシャルデータレートに応じてシステムバス３０２のデータ転送キャパシティの時間多重を使用する。システムバス３０２のこのような時間多重が、ストレージディスク１１２及びフラッシュメモリデバイス３１０が、両方が、それらの各々の最大のシーケンシャルデータレートでまたはその近くで、データストリーム３０３からのデータを絶えず受け入れることを許可する。そのため、ディスクドライブ１１０の実効シーケンシャルデータレートが、結合されたフラッシュメモリデバイス３１０及びストレージディスク１１２のシーケンシャルデータレートと同じ大きさであることができる。もし、上述した例で、データストリーム３０３が、代わりに、ディスクドライブ１１０の２つの記憶媒体の間で等しく分けられているとすると、ディスクドライブ１１０の実効シーケンシャルデータレートはただ２５０MBまたはそれよりも小さくなるだろう。HDDコントローラ１３３は、ストレージディスク１１２及びフラッシュメモリデバイス３１０の各々に１５０MBを導くだろうが、ストレージディスク１１２は１００MBを格納するだけだろうし、残っているデータはディスクバッファ３１２に累積するだろう。さらに、もし、データストリーム３０３の転送が完了する前にディスクバッファ３１２が満たされると、ディスクドライブ１１０の実効シーケンシャルデータレートのさらなる低下が生じるだろう。
【００３１】
１つの実施形態で、HDDコントローラ１３３はデータストリーム３０３のコンテンツに基づいてストレージディスク１１２及びフラッシュメモリデバイス３１０の間のデータストリーム３０３の分割を決定し、ストレージディスク１１２及びフラッシュメモリデバイス３１０の間でランダムにデータストリーム３０３をスプリットしない。例えば、ディスクドライブ１１０のストレージディスク１１２が一時的に利用できない間、データストリーム３０３に含まれる特定のデータがリクエストされるだろうということがプロセッサ１３３によって知られる時、このようなデータが、ストレージディスクアベイラビリティを待つことによって引き起こされる遅延を避けるために、フラッシュメモリデバイス３１０に意図的に格納される。従って、ホストコンピューティングデバイス３０１によって最初にリクエストされるだろう、格納されたデータストリームのデータの一部がフラッシュメモリデバイス３１０に格納されることができる。例えば、ハイバーネート状態がホストコンピューティングデバイス３１０によって開始される時、ハイバーネーションの後にレジュームする時にホストコンピューティングデバイス３０１によって始めに要求されるだろうハイバーネーションイメージファイルの一部が知られており、フラッシュメモリデバイス３１０に格納されることができる。ホストコンピューティングデバイス３０１がレジューム機能をリクエストした後、及びそれに応答してストレージディスク１１２がスピニングアップしている時、ハイバーネートイメージファイルのこの初めの部分がフラッシュメモリデバイス１３３のそのストレージ場所からすぐに検索されることができ、ホストコンピューティングデバイス３０１はレジュームプロセスを開始するためにストレージディスクアベイラビリティを待つ必要はない。
【００３２】
他の実施形態で、ストレージディスク１１２の所望の部分にシークするために、リード/ライトヘッド１２７に関して一般的に必要とされる２０ミリ秒乃至３０ミリ秒をホストが待つ必要がないように、任意の比較的大きな格納されたデータストリームの開始部分がフラッシュメモリデバイス３１０に格納される。その代わり、リード/ライトヘッド１２７が所望のトラックにシークする時、ホストコンピューティングデバイス３０１に転送されている格納されたデータストリームの開始部分がフラッシュメモリドライブ１３３から検索されることができる。従って、このような実施形態で、ディスクドライブ１１０に対するより高い実効シーケンシャルデータレートに加え、ストレージディスクからデータを検索する時に通常生じるイニシャル遅延が最小化されることができる又は取り除かれることができる。
【００３３】
いくつかの実施形態で、HDDコントローラ１３３は、ディスクドライブ１１０が完全なトラックのデータをストレージディスク１１２に書き込むことができるスピードに基づいて、ストレージディスク１１２及びフラッシュメモリデバイス３１０の間を交互に、どのようにデータストリーム３０３からのデータが分けられるかを決定する。このような実施形態で、HDDコントローラ１３３は、ストレージディスク１１２への１つの完全なデータトラック、すなわち図２に例証されるデータストレージトラック２４２の１つ、に書き込むため、ディスクドライブ１１０に関するディスクバッファ３１２に、データストリーム３０３からの十分なデータを導く。HDDコントローラ１３３は、フラッシュバッファ３１１に導かれたデータが完璧なデータストレージトラック２４２の整数、すなわち端数でない数、を占めるだろうような時間まで、データストリーム３０３からのデータをフラッシュバッファ３１１に導く。HDDコントローラ１３３は、それから、他の完全なトラックなどに書き込むために、ディスクドライブ１１０に関するディスクバッファ３１２に、データストリーム３０３からの十分なデータを導く。このプロセスは、データストリーム３０３の全てがホストコンピューティングデバイス３０１からストレージディスク１１２及びフラッシュメモリデバイス３１０に転送されるまで続く。
【００３４】
HDDコントローラ１３３が、データの１つのデータトラックを、及びフラッシュメモリデバイス３１０に整数のデータのトラックを交互にストレージディスク１１２に導く実施形態で、ストレージディスク１１２に書き込まれるデータストリーム３０３の一部が、ストレージディスク１１２上の連続したデータストレージトラック２４２のブロックを形成しない。代わりに、ストレージディスク１１２に書き込まれるデータストリーム３０３の一部は、まるでデータストリーム３０３の全てがストレージディスク１１２に書き込まれたように配置される。従って、ストレージディスク１１２は、データストリーム３０３からのデータで完全に満たされ、及びデータストリーム３０３からのデータが書き込まれない１つ以上のデータストレージトラック２４２によって分離される、データストレージトラック２４２を含むだろう。フラッシュメモリデバイス３１０に格納されるデータストリーム３０３からのデータは、データが書き込まれないデータトラックのストレージキャパシティよりも小さいまたは等しいサイズを持ち、データストリーム３０３からのデータで完全に満たされるデータストレージトラック間に配置される。
【００３５】
図６は、発明の実施形態に従って、空のデータストレージトラックが完全に書き込まれたデータトラックに交代されるストレージディスク１１２の部分的概略図を例証する。データストレージトラック２４２はトラック０乃至１０を含み、そのいくつかは（平行線模様によって示される）データストリーム３０３からのデータで完全にオーバーライトされ、そのいくつかはデータストリーム３０３からのデータが完全にないままである。示されるように、トラック２、５、及び８はデータストリーム３０３からのデータでオーバーライトされ、トラック０及び１、トラック３及び４、トラック６及び７、及びトラック９及び１０はデータストリーム３０３からのデータがないままである。トラック０及びトラック１、トラック３及び４、トラック６及び７、及びトラック９及び１０を満たすであろうデータストリーム３０３からのデータはフラッシュメモリデバイス３１０に格納される。
【００３６】
図６に例証される実施形態で、データの２つのトラックはストレージディスク１１２に書き込まれるデータの各々のトラックに対してフラッシュメモリデバイス３１０に格納される。１つのトラックがストレージディスク１１２に書き込まれると同時に、フラッシュメモリデバイス３１０がデータの２つのトラックを格納することができるので、フラッシュメモリデバイス３１０がストレージディスク１１２の少なくとも２倍のシーケンシャルデータレートであるシーケンシャルデータレートを持つ時、このような構成が生じる。フラッシュメモリデバイス３１０とストレージディスク１１２のデータレートが実質的に等しい実施形態で、ストレージディスク１１２の全ての他のトラックは完全に書き込まれるトラックであるということを、当業者は理解するだろう。あるいは、フラッシュメモリデバイス３１０のデータレートがストレージディスク１１２の少なくとも３倍のシーケンシャルデータレートである実施形態で、ストレージディスク１１２の各々の完全に書き込まれるトラックは３つの空のトラックによって分離される。
【００３７】
図７は、本発明の１つの実施形態に従って、空のデータストレージトラックが完全に書き込まれるデータトラックと交代され、磁気ストレージディスク及びフラッシュメモリデバイスに交互にデータストリームを書き込むための方法ステップのフローチャートである。方法ステップは図１乃至図３と関連して記述されるけれども、任意の順序で、方法ステップを実効するように構成された任意のシステムが発明の範囲内であるということを当業者は理解するだろう。
【００３８】
示されるように、方法７００はステップ７０１で開始し、そこでHDDコントローラ１３３はディスクドライブ１１０のLBA（論理ブロックアドレス）の特定のブロックにデータストリーム３０３を格納するためにホストコンピューティングデバイス３０１からコマンドを受信する。
【００３９】
ステップ７０２で、HDDコントローラ１３３はデータストリーム３０３からのデータブロックFB１をフラッシュバッファ３１１に導く。データブロックFB1は、図６のトラック０及びトラック１に対応しているLBAに格納される、データストリーム３０３からのデータを含むデータのブロックである。データブロックFB１からのデータがフラッシュバッファ３１１によって受信されるとすぐに、フラッシュメモリデバイス３１０へのフラッシュバッファ３１１のコンテンツの転送が開始する。データブロックFB１がフラッシュバッファ３１１に完全に書き込まれた時、方法７００はステップ７０４に進む。
【００４０】
ステップ７０４で、フラッシュバッファ３１１のコンテンツがフラッシュメモリデバイス３１０へ書き込まれる時、HDDコントローラ１３３はデータストリーム３０３からのデータブロックDB２をディスクバッファ３１２に導く。データブロックDB２は、図６のトラック２に格納されるデータストリーム３０３からのデータを含むデータのブロックである。図６に例証される実施形態で、データがストレージディスク１１２に転送されることができる２倍のデータ転送レートで、データがフラッシュメモリデバイス３１０に転送されることができるので、データブロックDB２はFB１に含まれるものの半分のデータストリーム３０３からのデータを含む。データブロックDB２からの第１のデータがディスクバッファ３１２によって受信されるとすぐに、ストレージディスク１１２へのディスクバッファ３１２のコンテンツの転送が開始する。データブロックDB２がディスクバッファ３１２へ完全に書き込まれた時、方法７００はステップ７０６に進む。
【００４１】
ステップ７０６で、HDDコントローラ１３３はデータストリーム３０３の転送が完了するかどうかを決定する。もしデータストリーム３０３の転送が完了すると、方法７００はステップ７０８に進み及び終了する。もし、データストリーム３０３の転送が完了しないならば、方法７００はステップ７０２に戻り、そのためデータストリーム３０３がディスクドライブ１１０に転送されるまで、ステップ７０２がデータブロックFB３、FB５などに対して繰り返され、ステップ７０４がデータブロックDB４、DB６などに対して繰り返される。
【００４２】
図６に示されるように、方法７００の完了時に、データストリーム３０３を構成しているデータの部分だけがストレージディスク１１２に格納され、データストリーム３０３の残りの部分がフラッシュメモリデバイス３１０に格納される。ストレージディスク１１２に格納されるデータストリーム３０３からのデータの部分、すなわちデータブロックDB２、DB４など、がストレージディスク１１２の完全な、端数でないトラック、すなわちトラック２、トラック５、トラック８などとして書き込まれる。さらに、フラッシュメモリデバイス３１０に格納されるデータストリーム３０３の残りの部分、すなわちデータブロックFB１、FB３、FB５など、はストレージディスク１１２に残っている空のトラック、すなわちトラック０及びトラック１、トラック３及びトラック４、トラック６及びトラック７など、のストレージキャパシティよりも小さいまたは等しいサイズを持つ。
【００４３】
フラッシュメモリデバイス３１０に格納されたデータを格納するためにサイズ指定され書き込まれていないトラックによって分離されるストレージディスク１１２に完全なトラックのデータのみを書き込むことによって得られる利点は、まるでデータストリーム３０３の全てがストレージディスク１１２に書き込まれるかのように、ストレージディスク１１２に格納されたデータが編成されることができるということである。このようにストレージディスク１１２に書き込まれるデータを編成することは、ストレージディスク１１２の物理的場所へのLBAｓのマッピングなどのように、実行される“ブックキーピング”プロセージャーを非常に簡単にする。追加の利点は、フラッシュメモリデバイス３１０及びストレージディスク１１２に格納されるデータのトラックを交代する時、非常により高いレートで、データがディスクドライブ１１０から読み出されることもできるということである。特に、データストリーム３０３が上述したようにディスクドライブ１１０に格納される同じ方法で、ディスクドライブ１１０からデータを検索する時、システムバス３０２のデータキャリングキャパシティが時間多重されることができる。さらに他の利点は、もし望まれるならば、ディスクドライブ１１０がさもなくばアイドルである時の間、フラッシュメモリデバイス３０３に格納されたデータストリーム３０３の一部が、ストレージディスク１１２からのトラックに後で書き込まれることができるということである。このように、データストリーム３０３の完全なコピーがストレージディスク１１２に連続的に置かれることができ、フラッシュメモリデバイスのストレージスペースが他のユーザに利用されることができる。あるいは、データストリーム３０３の完全なコピーが、ディスクドライブ１１０がさもなくばアイドルである時、フラッシュメモリデバイス３１０に書き込まれるかもしれないし、またはデータストリーム３０３の完全なコピーがフラッシュメモリデバイス３１０及びストレージディスク１１２に都合のよい時に書き込まれるかもしれない。
【００４４】
いくつかの実施形態で、ディスクドライブ１１０のシーケンシャルデータレートは、“ライトオンアライバル”方式を使用することによってストレージディスク１１２に完全なトラックを書き込む時に高められる。このような方式で、リード/ライトヘッド１２７がデータを書き込むために所望のストレージトラック２４２の始まりに位置付けられるまで、ディスクドライブ１１０は待たない、及び代わりに、リード/ライトヘッド１２７が所望のトラックに追跡されると直ぐに適切なデータを書き込み始める。このように、各々の新しいトラックの始まりに位置づけられるリード/ライトヘッド１２７を待つ間、停止が全く生じず及びデータはストレージディスク１１２に絶えず書き込まれるので、おおよそ最大のデータレートでストレージディスク１１２に書き込まれることができる。書き込み時の唯一の停止は１つのトラックから他のトラックへの短いシークの間に生じる。最適な効果をともなったライトオンアライバルを実行するために、書き込まれる次のトラックのための全てのデータが、ディスクバッファ３１２で利用可能でなければならない、そのためリード/ライトヘッド１２７が降り立つどんな部分でも、トラックに書き込むことが直ぐに生じることができる。
【００４５】
ストレージディスク１１２にデータを書き込む時に１つ以上のトラックがスキップされるため、この中に記述された発明の実施形態で、ライトオンアライバルの使用は得に有益であるということに留意される。もし、ライトオンアライバルが使用されず、リード/ライトヘッド１２７が所望のトラックの始まりに位置づけされる時だけデータが書き込まるならば、リード/ライトヘッド１２７がトラックに移動する毎に生じる遅延が“トラックスキュー”によってさらに増される。トラックスキューは、１つのトラック上の始まりの点と隣接するトラックの始まりの点の間のアンギュラーオフセットである。１つ以上のトラックがスキップされた時、トラックスキューが累積され、次のトラックの始まりの点に位置されるリード/ライトヘッド１２７を待っている間、データが次の所望のトラックに書き込まれることができる前の遅延が非常に増加される。
【００４６】
ディスクドライブ１１０のいくつかの構成で、ディスクバッファ３１２及びフラッシュバッファ３１１のサイズの限界がディスクドライブ１０の実効シーケンシャルデータレートに追加の制限を導入するかもしれない。上述したように、いくつかの実施形態で、ディスクバッファ３１２はおよそ２つのデータストレージトラック２４２まで書き込むのに十分なストレージキャパシティを持つだろう。ここで、ストレージディスク１１２のODでの単一のデータストレージトラック２４２のデータキャパシティは１メガバイトまたは２メガバイトのオーダーである。ディスクバッファ３１２がこのようなストレージキャパシティを持つ時、新しいデータトラックへ書き込むことを対象にされたデータはディスクバッファ３１２に格納されることができるので、新しいデータトラックへのデータのライトオンアライバルが確保される。このような実施形態で、ディスクバッファ３１２はDRAMとして構成されることができ、数１０メガバイトのストレージキャパシティを容易に持つことができる。フラッシュメモリデバイス３１０はストレージディスク１１２と関連したライトオンアライバル制限を持たない、ゆえにフラッシュバッファ３１１はすくなくとも１つ〜２つの完全なデータストレージトラック２４２のキャパシティでサイズ指定される必要はない。しかしながら、フラッシュバッファ３１１が全く空にされず、それゆえにデータがフラッシュメモリデバイス３１０に連続的に転送されるということを確保するためには、まだ最小の所望のストレージキャパシティがある。例えば、フラッシュメモリデバイス３１０及びストレージディスク１１２のシーケンシャルデータレートがおよそ等しい状況で、もしシステムバス３０２のデータ転送スピードがフラッシュメモリデバイス３１０の少なくとも２倍のシーケンシャルデータレートであれば、フラッシュバッファが空になる前にシステムバス３０２のフルスピードでシステムバス３０２からディスクバッファ３１２に、データのフルトラック、例えば１MB、が送信されるために、フラッシュバッファ３１１はデータストレージトラック２４２の少なくとも半分のストレージキャパシティ、例えば５００ｋB、を持つようにサイズ指定されるだろう。この中の開示を読む際に、データストリーム３０３からのデータがシステムバス３０２のフルスピードで格納されることができるように、フラッシュメモリデバイス３１０のシーケンシャルデータレート及びシステムバス３０２のデータ転送レートに基づいて、当業者は適切にフラッシュバッファ３１１を容易にサイズ指定されることができる。
【００４７】
いくつかの実施形態で、フラッシュバッファ３１１はSRAM構造であるかもしれないし、結果としてシステムバス３０２のフルスピードでシステムバス３０２からフラッシュバッファ３１１にデータが転送されることができるということを確保するために必要とされるものよりも非常に小さなデータキャパシティをもつかもしれない。例えば、フラッシュバッファ３１１はデータストレージトラック２４２の約４分の１に等しいキャパシティを持つだけかもしれない。このような実施形態で、データがフラッシュメモリ３１０のシーケンシャルデータレートでフラッシュバッファ３１１にただ転送されることができるから、フラッシュバッファ３１１がすばやく満たされ、システムバス３０２からのデータが“ストールする”のでフラッシュメモリデバイス３１０及びストレージディスク１１２の両方にデータは連続的に転送されないであろう。このような実施形態で、システムバス３０２のデータキャリーイングキャパシティは容易に多重化されず、もしフラッシュバッファ３１１が小型化されると、システムバス３０２がフラッシュバッファ３１１に書き込む時生じる“ストール”のために、フラッシュメモリ３１０及びストレージディスク１１２に同時にデータが書き込まれていない期間があるだろう。結果として、ディスクドライブ１１０への実効データ転送レートは、フラッシュメモリ３１０のシーケンシャルデータレート及びディスクドライブ１１２のシーケンシャルデータレートの合計よりも小さいだろう。しかしながら、このような実施形態で、データストリーム３０３がディスクドライブ１１０に転送される大部分の時間、データはフラッシュメモリ３１０及びストレージディスク１１２の両方に同時に書き込まれている、それゆえにディスクドライブ１１０への実効データ転送レートを非常に増加する。フラッシュバッファ３１１、ディスクバッファ３１２、フラッシュメモリデバイス３１０、及びストレージディスク１１２へのこのようなシナリオでのデータ転送は図８に例証される。
【００４８】
図８は、発明の実施形態に従って、システムバス３０２のフルスピードでフラッシュメモリデバイス３１０にデータが連続的に書き込まれることができないくらい、フラッシュバッファ３１１が小さすぎる時の、フラッシュメモリデバイス３１０及びストレージディスク１１２へのデータの転送を例証しているタイムライン図である。フラッシュバッファ３１１が小さすぎデータストレージトラック２４２に含まれるデータの少なくとも半分を含むことができない時、フラッシュメモリデバイス３１０及びストレージディスク１１２に連続的にデータが転送されないけれども、システムバス３０２のデータキャリイングキャパシティがフラッシュメモリ３１０及びストレージディスク１１２の間にいくらかの程度まだ時間多重されるので、ディスクドライブ１１０への実効データ転送レートは大変改善される。
【００４９】
図８は４つのタイムライン８０１乃至８４０を含み、横座標は時間を表し、縦座標はデータ転送レートを表し、データブロックFB１、FB３、FB５、FB７、DB２、DB４、及びDB６、及びDB８の各々のエリアはデータ量を表している。タイムライン８１０はデータブロックFB１、FB３、FB５、及びFB７のシステムバス３０２からフラッシュバッファ３１１へのデータ転送を描き、タイムライン８２０はデータブロックFB２、FB４、FB６、及びFB８のシステムバス３０２からディスクバッファ３１２へのデータ転送を描き、タイムライン８３０はディスクバッファ３１２からストレージディスク１１２上のトラック２、４、６、及び８へのデータブロックFB２、FB４、FB６、及びFB８のデータ転送を描き、タイムライン８４０はフラッシュバッファ３１１から、フラッシュメモリデバイス３１０の領域、すなわちストレージディスク１１２の、（示されない）空のディスクトラックに一致したフラッシュ領域１、３，５、及び７である、F1、F3、F5、及びF７のフラッシュ領域へのデータブロックFB１、FB３、FB５、及びFB７のデータ転送を描く。
【００５０】
実例として、タイムライン８１０乃至８４０はフラッシュデバイス３１０へのデータ転送レートが１５０MB、ストレージディスク１１２へのデータ転送レートが１５０MB、及びシステムバス３０２のデータ転送レートが３００MBである、ディスクドライブ１１０の実施形態に関して記述される。さらに、データブロックFB１、FB３、FB５、及びFB７、とDB２、DB４、DB６、及びDB８は、ストレージディスク１１２のシングルデータトラックに完全に書き込まれる十分なデータを含むように各々サイズ指定される。結果として、ストレージディスク１１２の全ての他のトラックはデータストリーム３０３からのデータで完全に書き込まれ、残っているトラックはデータストリーム３０３からのデータを全く含まない。図８に例証される実施形態で、フラッシュバッファ３１１はストレージディスク１１２のデータトラックの４分の1に対するキャパシティをただ持つ。図８の１つのタイムユニットは、ストレージディスク１１２に書き込まれる、例えばDB２、DB４、DB６の、１つのデータブロックに関して必要とされる時間を表す。この説明に役立つ例で、ストレージディスク１１２へのデータ転送レートはフラッシュメモリデバイス３１０へのデータ転送レートに等しいので、図８の１つのタイムユニットは、例えばFB１、FB３、またはFB５である、フラッシュメモリデバイス３１０へ転送される１つのデータブロックに関して必要とされる時間も表す。
【００５１】
タイムライン８１０に示されように、フラッシュバッファ３１１はデータブロックFB１を構成している第１の半分のデータを３００MBで始めに受信するが、フラッシュバッファ３１１が一度満たされると、フラッシュバッファ３１１からフラッシュメモリデバイス３１０へデータが転送されることができる同じレート、すなわち１５０MBで、第２の半分のデータブロックFB１をただ受信することができる。従って、システムバス３０２は、フラッシュバッファ３１１が時刻０．２５で満たされる時ストールし、時刻０．２５から時刻０．７５に１５０MBでフラッシュバッファ３１１にデータをただ転送できる。結果として、システムバス３０２は、時刻０．７５までにディスクバッファ３１２にデータブロックDB２を転送し始めることができない。データブロックFB１からのデータが時刻０．０でフラッシュバッファ３１１によって受信されると直ぐに、データブロックFB１からのデータが、タイムライン８４０に例証されるように、フラッシュメモリデバイス３１０のフラッシュ領域F１に転送することを開始する。
【００５２】
タイムライン８２０で示されるように、システムバス３０２は、０．５タイムユニット、すなわち時刻０．７５から時刻１．２５に、でディスクバッファ３１２にデータブロックDB２を転送する。時刻１．２５で、システムバス３０２は利用可能であり、（タイムライン８１０に示される）これから、空のフラッシュバッファ３１１にデータブロックFB３を転送することを開始する。システムバス３０２が、時刻１．０でフラッシュバッファ３１１にデータブロックFB３を転送するために利用可能でないので、フラッシュバッファ３１１は時刻１．２５まで空のままであり、タイムライン８４０での０．２５タイムユニットのポーズ８４１という結果になり、時刻１．０から時刻１．２５の間にフラッシュメモリデバイス３１０に書き込まれるデータがないということを示している。タイムライン８４０でのポーズ８４１は、フラッシュメモリデバイス３１０にデータが連続的に書き込まれないので、ディスクドライブ１１０への実効データ転送レートを減少させる。追加のポーズ８４２がタイムライン８４０、すなわち各々のデータブロックがフラッシュメモリデバイス３１０に書き込まれる後、で周期的に生じる。
【００５３】
ポーズは、タイムライン８３０に例証されるように、ストレージディスク１１２に書き込まれる時にも生じるかもしれない。実例として、タイムライン８３０は、ライトオンアライバルが使用されない時の、ディスクバッファ３１２からストレージディスク１１２上のディスクトラック２、４、６、及び８それぞれへのデータブロックDB２、DB４、DB６、及びDB８のライティングを描く。ライトオンアライバルが使用されないため、データはストレージディスク１１２に連続的に必ずしも書き込まれない。例えば、リード/ライトヘッド１２７が所望のトラックの始まりに置かれることができるまでストレージディスク１１２への周期的な書き込みはポーズする。“ミストスキュー”によって生じる、１つのこのようなポーズ８３１はディスクトラック２へのデータブロックDB２の書き込みとディスクトラック４へのデータブロックDB４の書き込みとの間に例証される。タイムライン８３０に示されるように、ディスクドライブ１１０のリード/ライトヘッドが、時刻０．７５、１．７５、２．７５、３．７５などでトラックの開始点に位置され、このような特定の時刻で、新しいトラックへの書き込みが開始されることができる。しかしながら、時刻１．７５で、ディスクトラック２へのDB２の書き込みが丁度完了された時、データブロックDB４はディスクバッファ３１２にまだ書き込まれておらず、データブロックDB４が時刻２．７５でディスクトラック４に書き込まれることができる前に、ストレージディスク１１２は完全な回転を作らなければならない。例えば、（示されないが）ディスクトラック１２に書き込まれるデータより前に、ポーズ８３１に類似した追加のポーズは周期的に生じるだろう。
【００５４】
システムバス３０２のスピードがフラッシュメモリデバイス３１０の定常状態の２倍のライティングスピードであり、フラッシュメモリデバイス３１０に書き込まれるデータブロックの１つ、すなわちFB１、FB３、FB５など、に含まれる少なくとも半分のデータを格納するのに、フラッシュバッファ３１１が十分大きい実施形態で、データはフラッシュメモリデバイス３１０及びストレージディスク１１２の両方に連続的に書き込まれることができる、ということを当業者は理解するだろう。この理由は、システムバス３０２は０．５タイムユニットで、フラッシュバッファ３１１に例えばデータブロックFB１のデータブロックを転送することができ、０．５タイムユニットで、ディスクバッファ３１２に、例えばデータブロックDB２の、データブロックを転送することができるからである。従って、１．０タイムユニットで、フラッシュメモリデバイス３１０及びストレージディスク１１２にデータが連続的に書き込まれるように、フラッシュバッファ３１１及びディスクバッファ３１２に十分なデータをシステムバス３０２が転送することができる。ポーズ８３１がタイムライン８３１に存在しないだろう、及びポーズ８４１、ポーズ８４２がタイムライン８４０に存在しないだろう。しかしながら、図８に例証されるように、データがフラッシュメモリデバイス３１０に連続的に書き込まれことができるほど、フラッシュバッファ３１０が十分大きくない実施形態で、実効データ転送レートは、データがストレージディスクまたはフラッシュメモリデバイスのどちらかに一般的に転送される、ハイブリッドドライブの従来のデータ転送方式に対して大変さらに増加される。タイムライン８３０及びタイムライン８４０によって例証されるように、“普通より小さな”フラッシュバッファをもちいても、データストリーム３０３がディスクドライブ１１０に転送される時間の殆どでフラッシュメモリデバイス３１０及びストレージディスク１１２に同時にデータが書き込まれる。
【００５５】
さらに一般的に、データストリーム３０３からのデータフラッシュメモリデバイス３１０に連続的にデータを書き込む、それによってディスクドライブ１１０の実効データ転送レートを最大にする、ために、フラッシュバッファ３１０を空にするために必要とされる時間で、ディスクバッファ３１２に少なくとも１つのデータのトラックをHDDコントローラ１３３が書き込むことができるようにするようにフラッシュバッファ３１１がサイズ指定されるだろう。すなわち、フラッシュバッファ３１１は下の式１を満たすようにサイズが指定されるだろう。
【００５６】
[Rsystem Bus/RFlash Memory]×FB＝DataTrack    ・・・・（式１）
ここで、Rsystem Busはシステムバス３０２のデータレート、RFlash Memoryはフラッシュメモリデバイス３１０の定常状態のライティングスピード、FBはフラッシュバッファ３１１のデータストレージキャパシティ、及びDataTrackはディスクライティングが生じるだろう点でディスクの１つのトラック上に含まれるデータ量である。
【００５７】
図９は、本発明の１つの実施形態に従って、磁気記憶デバイス及びフラッシュメモリデバイスを含むハイブリッドデータストレージ機器に多量のデータを格納するための方法ステップのフローチャートである。方法ステップは図１乃至図３のシステムに関連して記述されるが、当業者は、任意の順序で、方法ステップを実行するように構成された任意のシステムが発明の範囲内であるということを理解するだろう。方法９００がハイブリッドディスクドライブにデータストリームを書き込むことに関して記述される一方、当業者はいくつかの実施形態で、同様の方式が増加されたデータ転送レートでハイブリッドディスクドライブからデータを読み出すように使用されるかもしれないし、データが適切な方法で格納し、すなわちストレージディスク及びフラッシュメモリデバイス間で分けられるということを提供されるかもしれないということを当業者は理解するだろう。
【００５８】
示されるように、方法９００はステップ９０１で始まり、そこでHDDコントローラ１３３はシステムバス３０２を通じてデータストリーム３０３を受信する。
【００５９】
ステップ９０２で、HDDコントローラ１３３は受信されたデータをフラッシュバッファ３１１及びディスクバッファ３１２の間で交互にバッファする。このように、システムバス３０２のデータキャリーイングキャパシティは、データストリーム３０３からのデータがフラッシュメモリデバイス３１０及びストレージディスク１１２に同時に格納されることができるように、フラッシュバッファ３１１及びディスクバッファ３１２の間で多重化される。
【００６０】
図１０は本発明の１つの実施形態に従って、同心円状のデータトラックをともなった磁気記憶媒体及び不揮発性ソリッドステート記憶媒体のファイルに関するデータを格納するための方法ステップのフローチャートである。方法ステップは、図１乃至図３のシステムに関連して記述されるけれども、任意の順序で、方法ステップを実行するように構成された任意のシステムが発明の範囲内であるということを当業者は理解するだろう。
【００６１】
示されるように、方法１０００はステップ１００１で開始し、磁気記憶媒体の第１のデータトラック、すなわちストレージディスク１１２、にデータストリーム３０３からのデータの第１の部分をHDDコントローラ１３３が格納する。
【００６２】
ステップ１００２で、不揮発性ソリッドステート記憶媒体、すなわちフラッシュメモリデバイス３１０にデータストリーム３０３からの第２の部分のデータを格納する。
【００６３】
ステップ１００３で、HDDコントローラ１３３は磁気記録媒体の第１のデータトラックに隣接しないストレージディスク１１２の第２のデータトラックにデータストリーム３０３からの第３の部分のデータを格納する。ステップ１００１で書き込まれる第１のデータトラック及びステップ１００３で書き込まれる第２のデータトラック間のストレージディスク１１２の１つ以上のデータトラックはデータストリーム３０３からの任意の部分のデータを含まないが、フラッシュメモリデバイス３１０に格納されるデータのLBAに対応するかもしれない。
【００６４】
ステップ１００４で、HDDコントローラ１３３はデータストリーム３０３の転送が完了したかどうかを決定する。もし、データストリーム３０３の転送が完了すれば、方法１０００がステップ１００５に進む。もし、データストリーム３０３の転送が完了しなければ、方法１０００はステップ１００２に戻り、データストリーム３０３がディスクドライブ１１０に転送されるまで、ステップ１００２及びステップ１００３を繰り返す。従って、データストリーム３０３からの第４、第６、第８などの部分のデータがフラッシュメモリデバイス３１０に格納され、データストリーム３０３からの第３、第５、第７などの部分のデータがストレージディスク１１２に格納される。いくつかの実施形態で、HDDコントローラ１３３はストレージディスク１１２に書き込むための最大のシーケンシャルデータレートにできるだけ近いものを実現するためにストレージディスク１１２にデータを書き込むためのライトオンアライバル方式を使用する。
【００６５】
ステップ１００５で、HDDコントローラ１３３は、フラッシュメモリデバイス３１０に格納されたデータ及びストレージディスク１１２上に格納されたデータを、データストリーム３０３の完全なコピーに統合する。形成されるようなデータストリーム３０３の完全なコピーは、ストレージディスク１１２上にまたはフラッシュメモリ３１０に集められるかもしれない、または完全なコピーはその両方に集められるかもしれない。ステップ１００５の統合プロセスは、ディスクドライブ１１０がさもなくばアイドルである間に行われるかもしれない。
【００６６】
発明の実施形態がハイブリッドディスクドライブにデータストリームを書き込むことに関してここで開示されているが、いくつかの実施形態で、システムバスが発明の範囲を超えずに他のオペレーションに関して有利に時間多重されるかもしれない、ということを当業者は理解するだろう。特に、いくつかの実施形態で、ファイルコピーオペレーションの間、ホストコンピューティングデバイスは、ハイブリッドディスクドライブのフラッシュメモリデバイスに書き込んでいる間、ハイブリッドディスクの磁気記憶媒体から読み出すかもしれない。他の実施形態で、システムバスの時間多重は、ハイブリッドディスクのフラッシュメモリを使用することによって、より高速なフラッシュキャッシュオペレーションを可能にするために使用されることができる。
【００６７】
つまり、発明の実施形態は、ホスト及びハイブリッドHDD間でデータストリームを転送するためのシステム及び方法を提供する。システムバスのデータキャリングキャパシティを時間多重することによって、HDD内のフラッシュメモリデバイス内及びストレージディスク上にデータが同時に格納されることができる。結果として、ハイブリッドHDDへの及びハイブリッドHDDからのデータ転送の実効レートが有利に増加される。
【００６８】
前述のことは本発明の実施形態に導かれる一方、発明の他の及び更なる実施形態がその基本的範囲から逸脱することなく考案されるかもしれないし、その範囲は次のような請求項によって決定される。
【００６９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００７０】
１１０…ディスクドライブ、１１２…ストレージディスク、１１４…スピンドルモータ、１１６…ベースプレート、１１８…アクチュエータアセンブリ、１２０…スライダー、１２２…フレクスチャアーム、１２４…アクチュエータアーム、１２７…リード/ライトヘッド、１２８…ボイスコイルモータ、１３０…電子回路、１３２…プリント回路基板。
【図１】
2012234609.tif 000003
【図２】
2012234609.tif 000004
【図３】
2012234609.tif 000005
【図４】
2012234609.tif 000006
【図５】
2012234609.tif 000007
【図６】
2012234609.tif 000008
【図７】
2012234609.tif 000009
【図８】
2012234609.tif 000010
【図９】
2012234609.tif 000011
【図１０】
2012234609.tif 000012