説明

データ格納方法及びハイブリッドデータストレージ機器

【課題】増加されたデータ転送レートで、ホストコンピュータ及びハイブリッドディスクドライブ間でデータストリームを転送するための方法及びシステムを提供すること。
【解決手段】実施形態によれば、磁気記憶デバイス及びフラッシュメモリデバイスを含んでいるハイブリッドデータストレージ機器にデータを格納するための方法であって、ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じてデータを受信するためのステップと、磁気記憶デバイスに関するデータをバッファする第1のバッファ及びフラッシュメモリデバイスに関するデータをバッファする第2のバッファの間で受信データを交互にバッファするためのステップとを具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、一般にディスクドライブに関し、特にハイブリッドディスクシステムの2記憶媒体間のデータストリームの分割に関する。
【背景技術】
【0002】
一般的に、コンピュータセントラルプロセシングユニット(CPU)のプロセシングスピードは、コンピュータハードディスクドライブ(HDD)に関するデータ転送レートよりもはるかに早く増加した。特に大きなデータストリームが格納及び/または検索に関係している時、特にCPU及びHDD間のこのスピードギャップがアプリケーション遅延に寄与する。例えば、バッテリ電源をセーブするための“ハイバーネート”モードにラップトップコンピュータが入る時、大きなデータブロック、すなわちハイバーネートイメージファイル、が、HDDが完全にパワーダウンすることができる前にHDDにセーブされる必要がある。ハイバーネートイメージファイルは大きさが1ギガバイトのオーダーで、またはそれよりも大きくあることができるため、且つ2.5インチラップトップHDDへの最大データ転送レートはおよそ150メガバイト/秒のオーダーであるため、ハイバーネートイメージファイルを格納すること及び検索することは数秒の遅延を必要とすることができ、これはエンドユーザに対して不便であり注意をそらしていることである。このような遅延は、任意のかなり大きなデータストリームがHDD及びホストコンピュータの間で送信される時も共通である。その結果、コンピュータのHDD及びホストコンピュータ間のデータ転送レートを増加させるシステム及び方法が一般的に望ましい。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の1つ以上の実施形態は、ハードディスクドライブのフラッシュメモリデバイス及びストレージディスク間で、システムバスのデータ転送キャパシティを時分割することによって増加されたデータ転送レートで、ホストコンピュータ及びハイブリッドディスクドライブ間でデータストリームを転送するための方法及びシステムを提供する。
【課題を解決するための手段】
【0004】
実施形態によれば、磁気記憶デバイス及びフラッシュメモリデバイスを含んでいるハイブリッドデータストレージ機器にデータを格納するための方法であって、
前記ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じてデータを受信するためのステップと、
前記磁気記憶デバイスに関するデータをバッファする第1のバッファ及び前記フラッシュメモリデバイスに関するデータをバッファする第2のバッファの間で前記受信データを交互にバッファするためのステップと、
を具備する。
【0005】
他の実施形態によれば、不揮発性ソリッドステート記憶媒体及び同心円状のデータトラックをともなった磁気ストレージ媒体にファイルに関するデータを格納するための方法であって、
前記磁気ストレージ媒体の第1のデータトラックに前記ファイルに関する前記データの第1の部分を格納するためのステップと、
前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記データの第2の部分を格納するためのステップと、
前記磁気ストレージ媒体の前記第1のデータトラックに隣接しない、前記磁気ストレージ媒体の第2のデータトラックに前記ファイルに関する前記データの第2の部分を格納するためのステップと、
を具備し、
前記第1のデータトラックと前記第2のデータトラックの間の前記磁気ストレージ媒体の1つ以上のデータトラックが前記ファイルに関する前記データの任意の部分を含まない。
【0006】
他の実施形態によれば、2つの異なる記憶媒体にシングルファイルに関するデータを格納するためのハイブリッドデータストレージ機器であって、
前記ファイルに関するデータが格納される同心円状のデータトラックを有する磁気ストレージ媒体であって、前記ファイルに関するデータを含む前記データトラックの各々が前記ファイルに関するデータを含まない前記データトラックに隣接する磁気ストレージ媒体と、
前記ファイルに関して残っているデータを格納する不揮発性ソリッドステート記憶媒体と、
を具備するハイブリッドデータストレージ機器。
【図面の簡単な説明】
【0007】
【図1】図1は、ディスクドライブの例示の実施形態の斜視図である。
【図2】図2は、サーボウェッジがストレージディスクに書き込まれた後データが典型的に編成されているストレージディスクの概略図を例証する。
【図3】図3は、発明の実施形態に従い、その中ディスクドライブが配置されているコンピューティングデバイスの部分的ブロック図を例証する。
【図4】図4は、本発明の1つの実施形態に従い、フラッシュメモリデバイスに及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである。
【図5】図5は、本発明の他の実施形態に従い、フラッシュメモリデバイスに及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである。
【図6】図6は、発明の実施形態に従い、空のデータストレージトラックが完全に書き込まれたデータトラックと交代されているストレージディスクの部分的概略図を例証する。
【図7】図7は、本発明の1つの実施形態に従って、空のデータストレージが完全に書き込まれたデータトラックと交代されている、磁気ストレージディスクに及びフラッシュメモリデバイスに交互にデータストリームを書き込むための方法ステップのフローチャートである。
【図8】図8は、本発明の1つの実施形態に従い、フラッシュバッファが小さすぎるため、システムバスのフルスピードでフラッシュメモリデバイスにデータが連続的に書き込まれることができない時のフラッシュメモリデバイス及びストレージディスクへのデータの転送を例証しているタイムライン図である。
【図9】図9は、本発明の1つの実施形態に従い、磁気ストレージデバイス及びフラッシュメモリデバイスを含むハイブリッドデータストレージ機器に多量のデータを格納するための方法ステップのフローチャートである。
【図10】図10は、本発明の1つの実施形態に従い、同心円状のデータトラックをともなった磁気ストレージ媒体及び不揮発性ソリッドステートストレージ媒体にファイルに関するデータを格納するための方法ステップのフローチャートである。
【発明を実施するための形態】
【0008】
以下、実施の形態について図面を参照して説明する。
【0009】
明確にするために、同一の参照番号が、複数の図で共通である同一のエレメントを指定するために、適用可能な場所で使用される。1つの実施形態の構成要素は更なる列挙なしに他の実施形態に取り込まれるかもしれないということが予想される。
【0010】
図1はディスクドライブ110の例示の実施形態の斜視図である。明確にするために、ディスクドライブ110はトップカバーなしで例証される。ディスクドライブ110はスピンドルモータ114によって回転される少なくとも1つのストレージディスク112を含む。スピンドルモータ114はベースプレート116上にマウントされ。アクチュエータアセンブリ118はベースプレート116にもマウントされ、リード/ライトヘッド127をともなったフレクスチャアーム122にマウントされるスライダー120を持つ。フレクスチャアーム122は、ベアリングアセンブリ126の周りを回転するアクチュエータアーム124に取り付けられる。ボイスコイルモータ128はストレージディスク112に対してスライダー120を動かす、それによって、ストレージディスク112の表面112A上に配置された所望の同心円状のデータストレージトラックにリード/ライトヘッド127を位置付ける。スピンドルモータ114、リード/ライトヘッド127、及びボイスコイルモータ128は、プリント回路基板132にマウントされる、電子回路130に結合される。電子回路130は、リードチャネル、マイクロプロセッサベースドコントローラ、ランダムアクセスメモリ(RAM)、及びフラッシュメモリデバイスを含む。電子回路のさらなる詳細が図3に示される。記述の明確化のために、ディスクドライブ110は、シングルストレージディスク112及びアクチュエータアームアセンブリ118をともなって例証される。ディスクドライブ110はマルチプルストレージディスク112及びマルチプルアクチュエータアームアセンブリ118をも含むかもしれない。さらに、ディスク112の各々の面はフレクスチャアーム122に結合された関連付けられたリード/ライトヘッド127を持つかもしれない。
【0011】
図2は、メディアライターまたはセルフサーボライト(SSW)を介してサーボウェッジ244が書き込まれた後データが典型的な方法で編成されているストレージディスク112を例証する。ストレージディスク112はデータを格納するためのデータセクタ246に置かれた同心円状のデータストレージトラック242を含む。同心円状のデータストレージトラック242はサーボウェッジ244に書き込まれたサーボ情報によって位置的に定義される。実質的に放射状に整列されたサーボウェッジ244は同心円状のデータストレージトラック242を横断しているように示され、同心円状のデータストレージトラック242のトラックピッチ、すなわちスペーシング及び半径位置を定義するサーボ情報を含んでいるサーボセクタを含む。このようなサーボ情報は、所望のトラック242の上にリード/ライトヘッド127を位置づけるために、リード及びライトオペレーションの間、リード/ライトヘッド127によって書き込まれるリファレンス信号を含んでいるサーボセクタを含む。実際には、サーボウェッジ244はいくらかカーブされるかもしれない、例えば、ディスクがスピンしていない間、ストロークを横断してリード/ライトヘッド127が動くならば、リード/ライトヘッド127によって追随されるだろうパスをミラーリングしているスパイラルパターンで構成される。このようなスパイラルパターンは、リード/ライトヘッド127の半径位置と無関係にウェッジトゥウェッジタイミングという結果に有利になる。典型的に、ストレージディスク112上に含まれるサーボウェッジ244及び同心円状のデータストレージトラック242の実際の数は、図2に例証されるよりもかなり大きい。例えば、ストレージディスク112は、数10万の同心円のデータストレージトラック242、及び数100のサーボウェッジ244を含むかもしれない。
【0012】
ディスクドライブ110はハイブリッドドライブであるので、ノーマルオペレーションで、データは電子回路130に含まれるフラッシュデバイス及び/またはストレージディスク112に格納されることができ及びストレージディスク112から検索されることができる。ハイブリッドドライブで、電子回路130に含まれるフラッシュメモリデバイスのような不揮発性メモリは、より低い電力消費と同様に、より早いブート、ハイバーネーション、レジューム、及び他のデータリードライトオペレーションを提供するためにスピニングHDDを補完する。このようなドライブ構成は、モバイルコンピュータまたは他のモバイルコンピューティングデバイスのような、電池式のコンピュータシステムに対して特に有利である。
【0013】
データがディスク112にまたはディスク112から転送される時、アクチュエータアームアセンブリ118はストレージディスク112の内径(ID)と外径(OD)の間の円弧を描き動く。アクチュエータアームアセンブリ118は、ボイスコイルモータ128のボイスコイルを通して電流がパスされる時、1つの角度方向に加速し、電流がリバースされる時、反対の方向に加速し、ストレージディスク112に関して取り付けられたリード/ライトヘッド127及びアクチュエーターアームアセンブリ118の位置を制御することを許可する。ボイスコイルモータ128は、同心円状のデータストレージトラックを横切ってリード/ライトヘッド127の位置を決定するために、リード/ライトヘッド127から読み出される位置データを使用する業界で知られるサーボシステムと結合される。サーボシステムは、ボイスコイルモータ128のボイスコイルを通って、駆動するために適切な電流を決定し、電流ドライバ及び関連した回路を使用して前記電流を駆動する。
【0014】
図3は、本発明の実施形態に従って、ディスクドライブ110に接続されたホストコンピューティングデバイス301の部分的ブロック図を例証する。ディスクドライブ110はシステムバス302によってホストコンピューティングデバイス301に接続される。示されるように、ディスクドライブ110はストレージディスク112、ディスクバッファ312、フラッシュメモリデバイス310、フラッシュバッファ311、及びHDDコントローラ133を含む。ホストコンピューティングデバイス301は、ホストコンピューティングデバイス301の通常のオペレーションの間、どのデータがディスクドライブ110に格納され、検索されるかを決定する。ディスクバッファ312は、ダイナミックランダムアクセスメモリ(DRAM)のブロックのような揮発性データバッファであり、ストレージディスク112に格納されているデータに関するバッファとしてサーブする。フラッシュメモリデバイス310は、電気的に消去されることができ且つ再プログラムがされることができ、及び不揮発性記憶媒体としてのディスクドライブ110内のストレージディスク112を補完するようにサイズ指定される、NANDフラッシュチップのような不揮発性ソリッドステート記憶媒体である。フラッシュバッファ311はフラッシュメモリデバイス310に格納されているデータのためのバッファとしてサーブする揮発性データバッファである。フラッシュバッファ311はDRAMのブロックを含むかもしれない。あるいは、フラッシュバッファ311はスタティックランダムアクセスメモリ(SRAM)のブロックを含むかもしれない。スタティックランダムアクセスメモリ(SRAM)のブロックは、DRAMのブロックとは異なり、HDDコントローラ133を含んでいるチップとフラッシュメモリデバイス310を含んでいるチップとの間でのインタフェースとしてサーブするフラッシュコントローラチップと同じチップまたはデバイスの一部として有利に組み立てられることができる。あるいは、フラッシュバッファ311は、HDDコントローラ133それ自身の一部として組み立てられるブロックのSRAMであることができるだろう。HDDコントローラ133はディスクドライブ110のオペレーションを制御し、フラッシュメモリデバイス310及びストレージディスク112の特定の物理的位置にディスクドライブ110の論理ブロックアドレス(LBA)をマップし、及び発明の実施形態に従って、システムバス302の時間多重化を行う。示されるようにHDDコントローラ133は、本発明の実施形態に従って、フラッシュバッファ311及びディスクバッファ312間でデータストリーム303を分割するように構成される。いくつかの実施形態で、フラッシュバッファ311及びディスクバッファ312はDRAMの単一のブロックの2つのロジックパーティションである。
【0015】
“ホストバス”とも称されるシステムバス302は、シリアルエーティエー(SATA)バスのようなハイスピードバスである。システムバス302は、データがフラッシュメモリデバイス310またはストレージディスク112のどちらかに書き込まれることができるレートよりも大きいデータ転送レートを用いて設定されている。例えば、ラップトップコンピュータに関する典型的なSATAバスは、約3ギガバイト/秒(Gbps)のレートでデータを転送することができ、それはシステムオーバーヘッドの原因となった後、約300メガバイト/秒(MB)に等しい。対照的に、データは約100乃至200MBのレートでフラッシュメモリデバイスに一般に書き込まれることができ、約150MBのレートで外径2.5インチディスクに一般に書き込まれることができる。本発明の実施形態は、ストレージディスク112とフラッシュメモリデバイス310の間でシステムバス302のデータ転送能力を時間多重化することによって、増加されたデータ転送レートでホストコンピューティングデバイス301とディスクドライブ110の間でデータストリーム303を転送するためのシステム及び方法を提供する。ストレージディスク112とフラッシュメモリデバイス310がこの中に記述されるように同時にデータを検索または格納する時、ディスクドライブ110への実効データ転送レートが大きく増加し、いくつかの場合では2倍近くである。図3で、システムバス302はシングルバスとして描かれるが、いくつかの実施形態で、システムバス302は、ホストコンピューティングデバイス301とHDDコントローラ133の間の第1のバスと、HDDコントローラ133をフラッシュバッファ311とディスクバッファ312に接続している第2のバスを含むかもしれない。ここで、第1のバス及び第2のバスは異なるデータ転送スピードを持つ。このような実施形態で、システムバス302のデータ転送スピードは2つのバスの最も遅いものと考えられるかもしれない。
【0016】
オペレーション中に、ホストコンピューティングデバイス301はシステムバス302及びHDDコントローラ133を介してディスクドライブ110にデータストリーム303を転送する。多くのファクタに基づいて、HDDコントローラ133は、前記データが最も高いデータ転送レートでディスクドライブ110に格納されるように、フラッシュメモリデバイス310とストレージディスク112との間で、データストリーム303に含まれるデータがどのように分けられるかを決定する。フラッシュメモリデバイス310とストレージディスク112の間でHDDコントローラ133がデータをどのように分けるかに影響することができるファクタは、システムバス302のデータ転送レート、フラッシュメモリ310のシーケンシャルデータレート、ディスクドライブ112のシーケンシャルデータレート、フラッシュバッファ311及びディスクバッファ312のデータストレージキャパシティ、及び伝えられているデータのコンテンツを含む。従って、データストリーム303が比較的大きな、すなわちフラッシュバッファ311よりも大きな、データストリームである時、プロセッサ133はフラッシュメモリデバイス310及びストレージディスク112が同時にデータを各々格納できるように、データストリーム303の代わりの部分をフラッシュメモリデバイス310とストレージディスク112に導く、それによってディスクドライブ110の実効シーケンシャルデータレートを増加する。発明の実施形態は、一部のデータストリームがストレージディスク112とフラッシュメモリデバイス310の間で交互に格納される時、増加された実効シーケンシャルデータレートでディスクドライブ110からデータストリームを検索することに等しく適用可能であるということに留意される。
【0017】
1つの実施形態で、HDDコントローラ133は、ディスクドライブ110の実効シーケンシャルデータレートを増加するために、フラッシュメモリデバイス310とストレージディスク112の間で交互にデータストリーム303からのデータを導く。このプロセスは図4に例証され、これは本発明の1つの実施形態に従って、フラッシュメモリデバイスに及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである。方法ステップは図1乃至図3のシステムと関連して記述されるけれども、当業者は、任意の順番で、方法ステップを実行するように構成された任意のシステムが発明の範囲内であるということを理解するだろう。
【0018】
示されるように、方法400はステップ401で始まり、ここでHDDコントローラ133はディスクドライブ110に特定のLBA(論理ブロックアドレス)のブロックでデータストリーム30を格納するためのホストコンピューティングデバイス301からのコマンドを受信する。データストリーム303はディスクドライブ110への特定のシーケンシャルデータ転送を表し、一度にホストコンピューティングデバイス301によって格納されているマルチプルファイルまたは、ハイバーネーションイメージファイルのような単一の大きなファイルであるかもしれない。データストリーム303はホストコンピューティングデバイス301とディスクドライブ110の1つの長いシーケンシャルデータ転送を表しているので、要求で示されるLBAのブロックは一般的に連続のLBAのブロックである。
【0019】
ステップ402で、HDDコントローラ133はデータストリーム303からのデータブロックFB1をフラッシュバッファ311に導く。データブロックFB1はデータストリーム303の比較的小さな部分を作り上げるデータのブロックで、サイズで例えば約1メガバイトまたは2メガバイトであるかもしれない。HDDコントローラ133は、システムバス302のデータ転送レート、ディスクドライブ112のシーケンシャルデータレートに対するフラッシュメモリ310のシーケンシャルデータレートの比、フラッシュバッファ311及びディスクバッファ312のデータストレージキャパシティ、及び/またはディスクドライブ110に転送されているデータのコンテンツのような、下に記述された1つ以上のファクタに基づいて、データブロックFB1の正確なサイズを決定する。方法400はデータブロックFB1からの第1のデータがフラッシュバッファ311によって受信された後直ぐにステップ403に進む。さらに、方法400は、データブロックFB1がステップ402でフラッシュバッファ311に完全に書き込まれた時、ステップ404に進む。
【0020】
ステップ403で、データブロックFB1からの第1のデータがステップ402でフラッシュバッファ311によって受信された後直ぐに、フラッシュメモリデバイス310へのフラッシュバッファ311のコンテンツの転送が開始する。フラッシュメモリデバイス310のシーケンシャルデータレートはシステムバス302のデータ転送レートよりも実質的に遅いので、フラッシュバッファ311は、データがフラッシュバッファ311からフラッシュメモリデバイス310に転送される時でさえ、データブロックFB1からの残りのデータを満たし続ける。
【0021】
ステップ404で、フラッシュバッファのコンテンツがステップ403でフラッシュメモリデバイス310に書き込まれている時、HDDコントローラ133はデータストリーム303からのデータがブロックDB2をディスクバッファ312に導く。データブロックDB2は、データストリーム303の比較的小さな部分を作り上げるデータのブロックであり、例えばサイズでおよそ1メガバイトまたは2メガバイトであるかもしれない。いくつかの実施形態で、データブロックDB2のサイズは、ステップ402でフラッシュバッファ311に導かれたデータブロックFB1のような同じデータ量を含まないかもしれない。HDDコントローラ133は、システムバス302のデータ転送レート、ディスクドライブ112のシーケンシャルデータレートに対するフラッシュメモリ310のシーケンシャルデータレートの比、フラッシュバッファ311及びディスクバッファ312のデータストレージキャパシティ、及び/または下に記述され及びディスクドライブ110に転送されるデータのコンテンツ、のような、1つ以上のファクターに基づいてデータブロックDB2のサイズを決定する。方法400は、データブロックDB2からの始めのデータがステップ404でディスクバッファ312によって受信された後、直ぐにステップ405に進む。さらに、方法400は、ステップ404でデータブロックDB2がディスクバッファ312に完全に書き込まれた時、ステップ406に進む。
【0022】
ステップ405で、データブロックDB2からの第1のデータがステップ404でディスクバッファ312によって受信された後直ぐに、ストレージディスク112へのディスクバッファ312のコンテンツの転送が開始する。(下に記述される)“ライトオンアライバル”コントロール方式がストレージディスクへの書き込みのために使用される実施形態で、データブロックDB2からの第1のデータがディスクバッファ312によって受信された後ほとんど直ぐにストレージディスク112へのディスクバッファ312のコンテンツの転送が開始する。ライトオンアライバルが使用されない実施形態で、ディスクドライブ110のリード/ライトヘッド127が、データブロックDB2が書き込まれるデータトラックの開始点に位置されることができるように、短いポーズの後、ストレージディスク112へのディスクバッファ312のコンテンツの転送が開始する。何れかの実施形態で、ディスクバッファ312がデータストリーム303から導かれたデータのブロックを満たし続けるように、データがストレージディスク112に書き込まれる。ステップ405の間、データブロックFB1からのデータがステップ403でフラッシュメモリデバイス310に同時に書き込まれる一方、データブロックDB2からのデータがストレージディスク112に書き込まれており、それゆえにディスクドライブ110への実効データ転送レートを増加している、ということにさらに留意される。
【0023】
ステップ406で、HDDコントローラ133は、データストリーム303の転送が完了しているかどうかを決定する。もし、データストリーム303の転送が完了しているならば、方法400がステップ407に進み、そして終わる。もしデータストリーム303の転送が完了していないならば、ステップ402乃至405が繰り返され、データブロックFB3、FB5などがフラッシュメモリデバイス310に書き込まれ、データブロックDB4、DB6などがストレージディスク112に書き込まれるように、方法400は示されるようにステップ402に進む。方法400は、データストリーム303がディスクドライブ110に転送されるまで継続する。
【0024】
いくつかの実施形態で、例えばデータブロックFB1の先行するデータブロックの全てがフラッシュバッファ311からフラッシュメモリデバイス310に転送される前に、例えばデータブロックFB3のデータブロックの開始部分がステップ402でフラッシュバッファ311によって受信される。このように、データは、フラッシュメモリデバイス310の実質的に最大のシーケンシャルデータレートでフラッシュメモリデバイス310に連続的に書き込まれることができる。同様に、いくつかの実施形態で、例えばデータブロックDB2の先行するデータブロックの全てがディスクバッファ312からストレージディスク112に転送される前に、例えばデータブロックDB4のデータブロックの開始部分が、ステップ404でディスクバッファ312によって受信される。このように、ストレージディスク112は決してアイドルではなく、データストリーム303の転送が完了するまでそこに連続的にデータが書き込まれるので、データはストレージディスク112の実質的に最大のシーケンシャルデータレートでストレージディスク112に連続的に書き込まれることができる。
【0025】
方法400でストレージディスク112及びフラッシュメモリデバイス310は、それらの各々のシーケンシャルデータレートでまたはその近くでデータを受け入れることができるので、ディスクドライブ110の実効シーケンシャルデータレートが、データストリームはディスクまたはフラッシュメモリデバイスのどちらかに一般的に書き込まれる、従来のハイブリッドドライブによって実質的に増加される。ホストコンピューティングデバイス301が連続のLBAのブロックにデータストリーム303を格納するようにディスクドライブ110を一般的に導く一方、ディスクドライブ110は物理的に非連続な場所、すなわちストレージディスク112及びフラッシュメモリデバイス310、にデータストリーム303のデータを格納するということに留意される。
【0026】
いくつかの実施形態で、プロセッサ133はストレージディスク112及びフラッシュメモリデバイス310の相対シーケンシャルデータレートに基づいて、ストレージディスク112及びフラッシュメモリデバイス310の間でのデータストリーム303の分割を決定する。特に、ストレージディスク112またはメモリデバイス310のどちらもデータストリーム303からのデータを格納していない時間を最小にするために最大のシーケンシャルデータレートを持っている記憶媒体のバッファに、HDDコントローラ133が比例的により大きなデータストリーム303を導く。このプロセスは、本発明の実施形態に従ってフラッシュメモリデバイス及びストレージディスクに交互にデータストリームを書き込むための方法ステップのフローチャートである図5に例証される。方法ステップは図1乃至図3のシステムに関連して記述されるけれども、当業者は、任意の順番で、方法ステップを実行するように構成された任意のシステムは発明の範囲内であるということを理解するだろう。
【0027】
示されるように、方法500はステップ502で開始し、そこでHDDコントローラ133は、ディスクドライブ110に特定のLBAのブロックでデータストリーム303を格納するためにホスコンピューティングデバイス301からのコマンドを受信する。
【0028】
ステップ504で、HDDコントローラ133は、データブロックFB1及びFB3のようなフラッシュメモリデバイス310に格納されたデータブロックのサイズ、及びデータブロックDB3及びDB4のようなストレージディスク112に格納されたデータブロックのサイズを決定する。この決定はストレージディスク112及びフラッシュメモリデバイス310の相対シーケンシャルデータレートに基づく。例えば、もしシステムバス302が300MBのデータ転送キャパシティを持ち、フラッシュメモリデバイス310が200MBのシーケンシャルデータレートを持ち、ストレージディスク112が100MBのシーケンシャルデータレートを持つならば、HDDコントローラ133は、ディスクバッファ312によりも、フラッシュバッファ311に2倍のデータストリーム、すなわち100MBに対する200MB、を導くだろう。ストレージディスク112のシーケンシャルデータレートは、全てのトラックに対して一定ではなく、データが書き込まれている現在のトラックの半径位置に依存して変化するということに留意する。特定のトラックに対するデータレートは、ホストコンピューティングデバイス301によってデータ書き込みが要求された時、HDDコントローラ133によって知られるので、HDDコントローラ133はストレージディスク112に導かれた任意のデータに関するデータレートを決定し、それゆえに、ストレージディスク112へ導かれたデータストリーム303の一部を修正する。
【0029】
ステップ506で、HDDコントローラ133は、方法400で上述したようにストレージディスク112及びフラッシュメモリデバイス310にデータを導く。
【0030】
方法500は、ストレージディスク112及びフラッシュメモリ310のシーケンシャルデータレートに応じてシステムバス302のデータ転送キャパシティの時間多重を使用する。システムバス302のこのような時間多重が、ストレージディスク112及びフラッシュメモリデバイス310が、両方が、それらの各々の最大のシーケンシャルデータレートでまたはその近くで、データストリーム303からのデータを絶えず受け入れることを許可する。そのため、ディスクドライブ110の実効シーケンシャルデータレートが、結合されたフラッシュメモリデバイス310及びストレージディスク112のシーケンシャルデータレートと同じ大きさであることができる。もし、上述した例で、データストリーム303が、代わりに、ディスクドライブ110の2つの記憶媒体の間で等しく分けられているとすると、ディスクドライブ110の実効シーケンシャルデータレートはただ250MBまたはそれよりも小さくなるだろう。HDDコントローラ133は、ストレージディスク112及びフラッシュメモリデバイス310の各々に150MBを導くだろうが、ストレージディスク112は100MBを格納するだけだろうし、残っているデータはディスクバッファ312に累積するだろう。さらに、もし、データストリーム303の転送が完了する前にディスクバッファ312が満たされると、ディスクドライブ110の実効シーケンシャルデータレートのさらなる低下が生じるだろう。
【0031】
1つの実施形態で、HDDコントローラ133はデータストリーム303のコンテンツに基づいてストレージディスク112及びフラッシュメモリデバイス310の間のデータストリーム303の分割を決定し、ストレージディスク112及びフラッシュメモリデバイス310の間でランダムにデータストリーム303をスプリットしない。例えば、ディスクドライブ110のストレージディスク112が一時的に利用できない間、データストリーム303に含まれる特定のデータがリクエストされるだろうということがプロセッサ133によって知られる時、このようなデータが、ストレージディスクアベイラビリティを待つことによって引き起こされる遅延を避けるために、フラッシュメモリデバイス310に意図的に格納される。従って、ホストコンピューティングデバイス301によって最初にリクエストされるだろう、格納されたデータストリームのデータの一部がフラッシュメモリデバイス310に格納されることができる。例えば、ハイバーネート状態がホストコンピューティングデバイス310によって開始される時、ハイバーネーションの後にレジュームする時にホストコンピューティングデバイス301によって始めに要求されるだろうハイバーネーションイメージファイルの一部が知られており、フラッシュメモリデバイス310に格納されることができる。ホストコンピューティングデバイス301がレジューム機能をリクエストした後、及びそれに応答してストレージディスク112がスピニングアップしている時、ハイバーネートイメージファイルのこの初めの部分がフラッシュメモリデバイス133のそのストレージ場所からすぐに検索されることができ、ホストコンピューティングデバイス301はレジュームプロセスを開始するためにストレージディスクアベイラビリティを待つ必要はない。
【0032】
他の実施形態で、ストレージディスク112の所望の部分にシークするために、リード/ライトヘッド127に関して一般的に必要とされる20ミリ秒乃至30ミリ秒をホストが待つ必要がないように、任意の比較的大きな格納されたデータストリームの開始部分がフラッシュメモリデバイス310に格納される。その代わり、リード/ライトヘッド127が所望のトラックにシークする時、ホストコンピューティングデバイス301に転送されている格納されたデータストリームの開始部分がフラッシュメモリドライブ133から検索されることができる。従って、このような実施形態で、ディスクドライブ110に対するより高い実効シーケンシャルデータレートに加え、ストレージディスクからデータを検索する時に通常生じるイニシャル遅延が最小化されることができる又は取り除かれることができる。
【0033】
いくつかの実施形態で、HDDコントローラ133は、ディスクドライブ110が完全なトラックのデータをストレージディスク112に書き込むことができるスピードに基づいて、ストレージディスク112及びフラッシュメモリデバイス310の間を交互に、どのようにデータストリーム303からのデータが分けられるかを決定する。このような実施形態で、HDDコントローラ133は、ストレージディスク112への1つの完全なデータトラック、すなわち図2に例証されるデータストレージトラック242の1つ、に書き込むため、ディスクドライブ110に関するディスクバッファ312に、データストリーム303からの十分なデータを導く。HDDコントローラ133は、フラッシュバッファ311に導かれたデータが完璧なデータストレージトラック242の整数、すなわち端数でない数、を占めるだろうような時間まで、データストリーム303からのデータをフラッシュバッファ311に導く。HDDコントローラ133は、それから、他の完全なトラックなどに書き込むために、ディスクドライブ110に関するディスクバッファ312に、データストリーム303からの十分なデータを導く。このプロセスは、データストリーム303の全てがホストコンピューティングデバイス301からストレージディスク112及びフラッシュメモリデバイス310に転送されるまで続く。
【0034】
HDDコントローラ133が、データの1つのデータトラックを、及びフラッシュメモリデバイス310に整数のデータのトラックを交互にストレージディスク112に導く実施形態で、ストレージディスク112に書き込まれるデータストリーム303の一部が、ストレージディスク112上の連続したデータストレージトラック242のブロックを形成しない。代わりに、ストレージディスク112に書き込まれるデータストリーム303の一部は、まるでデータストリーム303の全てがストレージディスク112に書き込まれたように配置される。従って、ストレージディスク112は、データストリーム303からのデータで完全に満たされ、及びデータストリーム303からのデータが書き込まれない1つ以上のデータストレージトラック242によって分離される、データストレージトラック242を含むだろう。フラッシュメモリデバイス310に格納されるデータストリーム303からのデータは、データが書き込まれないデータトラックのストレージキャパシティよりも小さいまたは等しいサイズを持ち、データストリーム303からのデータで完全に満たされるデータストレージトラック間に配置される。
【0035】
図6は、発明の実施形態に従って、空のデータストレージトラックが完全に書き込まれたデータトラックに交代されるストレージディスク112の部分的概略図を例証する。データストレージトラック242はトラック0乃至10を含み、そのいくつかは(平行線模様によって示される)データストリーム303からのデータで完全にオーバーライトされ、そのいくつかはデータストリーム303からのデータが完全にないままである。示されるように、トラック2、5、及び8はデータストリーム303からのデータでオーバーライトされ、トラック0及び1、トラック3及び4、トラック6及び7、及びトラック9及び10はデータストリーム303からのデータがないままである。トラック0及びトラック1、トラック3及び4、トラック6及び7、及びトラック9及び10を満たすであろうデータストリーム303からのデータはフラッシュメモリデバイス310に格納される。
【0036】
図6に例証される実施形態で、データの2つのトラックはストレージディスク112に書き込まれるデータの各々のトラックに対してフラッシュメモリデバイス310に格納される。1つのトラックがストレージディスク112に書き込まれると同時に、フラッシュメモリデバイス310がデータの2つのトラックを格納することができるので、フラッシュメモリデバイス310がストレージディスク112の少なくとも2倍のシーケンシャルデータレートであるシーケンシャルデータレートを持つ時、このような構成が生じる。フラッシュメモリデバイス310とストレージディスク112のデータレートが実質的に等しい実施形態で、ストレージディスク112の全ての他のトラックは完全に書き込まれるトラックであるということを、当業者は理解するだろう。あるいは、フラッシュメモリデバイス310のデータレートがストレージディスク112の少なくとも3倍のシーケンシャルデータレートである実施形態で、ストレージディスク112の各々の完全に書き込まれるトラックは3つの空のトラックによって分離される。
【0037】
図7は、本発明の1つの実施形態に従って、空のデータストレージトラックが完全に書き込まれるデータトラックと交代され、磁気ストレージディスク及びフラッシュメモリデバイスに交互にデータストリームを書き込むための方法ステップのフローチャートである。方法ステップは図1乃至図3と関連して記述されるけれども、任意の順序で、方法ステップを実効するように構成された任意のシステムが発明の範囲内であるということを当業者は理解するだろう。
【0038】
示されるように、方法700はステップ701で開始し、そこでHDDコントローラ133はディスクドライブ110のLBA(論理ブロックアドレス)の特定のブロックにデータストリーム303を格納するためにホストコンピューティングデバイス301からコマンドを受信する。
【0039】
ステップ702で、HDDコントローラ133はデータストリーム303からのデータブロックFB1をフラッシュバッファ311に導く。データブロックFB1は、図6のトラック0及びトラック1に対応しているLBAに格納される、データストリーム303からのデータを含むデータのブロックである。データブロックFB1からのデータがフラッシュバッファ311によって受信されるとすぐに、フラッシュメモリデバイス310へのフラッシュバッファ311のコンテンツの転送が開始する。データブロックFB1がフラッシュバッファ311に完全に書き込まれた時、方法700はステップ704に進む。
【0040】
ステップ704で、フラッシュバッファ311のコンテンツがフラッシュメモリデバイス310へ書き込まれる時、HDDコントローラ133はデータストリーム303からのデータブロックDB2をディスクバッファ312に導く。データブロックDB2は、図6のトラック2に格納されるデータストリーム303からのデータを含むデータのブロックである。図6に例証される実施形態で、データがストレージディスク112に転送されることができる2倍のデータ転送レートで、データがフラッシュメモリデバイス310に転送されることができるので、データブロックDB2はFB1に含まれるものの半分のデータストリーム303からのデータを含む。データブロックDB2からの第1のデータがディスクバッファ312によって受信されるとすぐに、ストレージディスク112へのディスクバッファ312のコンテンツの転送が開始する。データブロックDB2がディスクバッファ312へ完全に書き込まれた時、方法700はステップ706に進む。
【0041】
ステップ706で、HDDコントローラ133はデータストリーム303の転送が完了するかどうかを決定する。もしデータストリーム303の転送が完了すると、方法700はステップ708に進み及び終了する。もし、データストリーム303の転送が完了しないならば、方法700はステップ702に戻り、そのためデータストリーム303がディスクドライブ110に転送されるまで、ステップ702がデータブロックFB3、FB5などに対して繰り返され、ステップ704がデータブロックDB4、DB6などに対して繰り返される。
【0042】
図6に示されるように、方法700の完了時に、データストリーム303を構成しているデータの部分だけがストレージディスク112に格納され、データストリーム303の残りの部分がフラッシュメモリデバイス310に格納される。ストレージディスク112に格納されるデータストリーム303からのデータの部分、すなわちデータブロックDB2、DB4など、がストレージディスク112の完全な、端数でないトラック、すなわちトラック2、トラック5、トラック8などとして書き込まれる。さらに、フラッシュメモリデバイス310に格納されるデータストリーム303の残りの部分、すなわちデータブロックFB1、FB3、FB5など、はストレージディスク112に残っている空のトラック、すなわちトラック0及びトラック1、トラック3及びトラック4、トラック6及びトラック7など、のストレージキャパシティよりも小さいまたは等しいサイズを持つ。
【0043】
フラッシュメモリデバイス310に格納されたデータを格納するためにサイズ指定され書き込まれていないトラックによって分離されるストレージディスク112に完全なトラックのデータのみを書き込むことによって得られる利点は、まるでデータストリーム303の全てがストレージディスク112に書き込まれるかのように、ストレージディスク112に格納されたデータが編成されることができるということである。このようにストレージディスク112に書き込まれるデータを編成することは、ストレージディスク112の物理的場所へのLBAsのマッピングなどのように、実行される“ブックキーピング”プロセージャーを非常に簡単にする。追加の利点は、フラッシュメモリデバイス310及びストレージディスク112に格納されるデータのトラックを交代する時、非常により高いレートで、データがディスクドライブ110から読み出されることもできるということである。特に、データストリーム303が上述したようにディスクドライブ110に格納される同じ方法で、ディスクドライブ110からデータを検索する時、システムバス302のデータキャリングキャパシティが時間多重されることができる。さらに他の利点は、もし望まれるならば、ディスクドライブ110がさもなくばアイドルである時の間、フラッシュメモリデバイス303に格納されたデータストリーム303の一部が、ストレージディスク112からのトラックに後で書き込まれることができるということである。このように、データストリーム303の完全なコピーがストレージディスク112に連続的に置かれることができ、フラッシュメモリデバイスのストレージスペースが他のユーザに利用されることができる。あるいは、データストリーム303の完全なコピーが、ディスクドライブ110がさもなくばアイドルである時、フラッシュメモリデバイス310に書き込まれるかもしれないし、またはデータストリーム303の完全なコピーがフラッシュメモリデバイス310及びストレージディスク112に都合のよい時に書き込まれるかもしれない。
【0044】
いくつかの実施形態で、ディスクドライブ110のシーケンシャルデータレートは、“ライトオンアライバル”方式を使用することによってストレージディスク112に完全なトラックを書き込む時に高められる。このような方式で、リード/ライトヘッド127がデータを書き込むために所望のストレージトラック242の始まりに位置付けられるまで、ディスクドライブ110は待たない、及び代わりに、リード/ライトヘッド127が所望のトラックに追跡されると直ぐに適切なデータを書き込み始める。このように、各々の新しいトラックの始まりに位置づけられるリード/ライトヘッド127を待つ間、停止が全く生じず及びデータはストレージディスク112に絶えず書き込まれるので、おおよそ最大のデータレートでストレージディスク112に書き込まれることができる。書き込み時の唯一の停止は1つのトラックから他のトラックへの短いシークの間に生じる。最適な効果をともなったライトオンアライバルを実行するために、書き込まれる次のトラックのための全てのデータが、ディスクバッファ312で利用可能でなければならない、そのためリード/ライトヘッド127が降り立つどんな部分でも、トラックに書き込むことが直ぐに生じることができる。
【0045】
ストレージディスク112にデータを書き込む時に1つ以上のトラックがスキップされるため、この中に記述された発明の実施形態で、ライトオンアライバルの使用は得に有益であるということに留意される。もし、ライトオンアライバルが使用されず、リード/ライトヘッド127が所望のトラックの始まりに位置づけされる時だけデータが書き込まるならば、リード/ライトヘッド127がトラックに移動する毎に生じる遅延が“トラックスキュー”によってさらに増される。トラックスキューは、1つのトラック上の始まりの点と隣接するトラックの始まりの点の間のアンギュラーオフセットである。1つ以上のトラックがスキップされた時、トラックスキューが累積され、次のトラックの始まりの点に位置されるリード/ライトヘッド127を待っている間、データが次の所望のトラックに書き込まれることができる前の遅延が非常に増加される。
【0046】
ディスクドライブ110のいくつかの構成で、ディスクバッファ312及びフラッシュバッファ311のサイズの限界がディスクドライブ10の実効シーケンシャルデータレートに追加の制限を導入するかもしれない。上述したように、いくつかの実施形態で、ディスクバッファ312はおよそ2つのデータストレージトラック242まで書き込むのに十分なストレージキャパシティを持つだろう。ここで、ストレージディスク112のODでの単一のデータストレージトラック242のデータキャパシティは1メガバイトまたは2メガバイトのオーダーである。ディスクバッファ312がこのようなストレージキャパシティを持つ時、新しいデータトラックへ書き込むことを対象にされたデータはディスクバッファ312に格納されることができるので、新しいデータトラックへのデータのライトオンアライバルが確保される。このような実施形態で、ディスクバッファ312はDRAMとして構成されることができ、数10メガバイトのストレージキャパシティを容易に持つことができる。フラッシュメモリデバイス310はストレージディスク112と関連したライトオンアライバル制限を持たない、ゆえにフラッシュバッファ311はすくなくとも1つ〜2つの完全なデータストレージトラック242のキャパシティでサイズ指定される必要はない。しかしながら、フラッシュバッファ311が全く空にされず、それゆえにデータがフラッシュメモリデバイス310に連続的に転送されるということを確保するためには、まだ最小の所望のストレージキャパシティがある。例えば、フラッシュメモリデバイス310及びストレージディスク112のシーケンシャルデータレートがおよそ等しい状況で、もしシステムバス302のデータ転送スピードがフラッシュメモリデバイス310の少なくとも2倍のシーケンシャルデータレートであれば、フラッシュバッファが空になる前にシステムバス302のフルスピードでシステムバス302からディスクバッファ312に、データのフルトラック、例えば1MB、が送信されるために、フラッシュバッファ311はデータストレージトラック242の少なくとも半分のストレージキャパシティ、例えば500kB、を持つようにサイズ指定されるだろう。この中の開示を読む際に、データストリーム303からのデータがシステムバス302のフルスピードで格納されることができるように、フラッシュメモリデバイス310のシーケンシャルデータレート及びシステムバス302のデータ転送レートに基づいて、当業者は適切にフラッシュバッファ311を容易にサイズ指定されることができる。
【0047】
いくつかの実施形態で、フラッシュバッファ311はSRAM構造であるかもしれないし、結果としてシステムバス302のフルスピードでシステムバス302からフラッシュバッファ311にデータが転送されることができるということを確保するために必要とされるものよりも非常に小さなデータキャパシティをもつかもしれない。例えば、フラッシュバッファ311はデータストレージトラック242の約4分の1に等しいキャパシティを持つだけかもしれない。このような実施形態で、データがフラッシュメモリ310のシーケンシャルデータレートでフラッシュバッファ311にただ転送されることができるから、フラッシュバッファ311がすばやく満たされ、システムバス302からのデータが“ストールする”のでフラッシュメモリデバイス310及びストレージディスク112の両方にデータは連続的に転送されないであろう。このような実施形態で、システムバス302のデータキャリーイングキャパシティは容易に多重化されず、もしフラッシュバッファ311が小型化されると、システムバス302がフラッシュバッファ311に書き込む時生じる“ストール”のために、フラッシュメモリ310及びストレージディスク112に同時にデータが書き込まれていない期間があるだろう。結果として、ディスクドライブ110への実効データ転送レートは、フラッシュメモリ310のシーケンシャルデータレート及びディスクドライブ112のシーケンシャルデータレートの合計よりも小さいだろう。しかしながら、このような実施形態で、データストリーム303がディスクドライブ110に転送される大部分の時間、データはフラッシュメモリ310及びストレージディスク112の両方に同時に書き込まれている、それゆえにディスクドライブ110への実効データ転送レートを非常に増加する。フラッシュバッファ311、ディスクバッファ312、フラッシュメモリデバイス310、及びストレージディスク112へのこのようなシナリオでのデータ転送は図8に例証される。
【0048】
図8は、発明の実施形態に従って、システムバス302のフルスピードでフラッシュメモリデバイス310にデータが連続的に書き込まれることができないくらい、フラッシュバッファ311が小さすぎる時の、フラッシュメモリデバイス310及びストレージディスク112へのデータの転送を例証しているタイムライン図である。フラッシュバッファ311が小さすぎデータストレージトラック242に含まれるデータの少なくとも半分を含むことができない時、フラッシュメモリデバイス310及びストレージディスク112に連続的にデータが転送されないけれども、システムバス302のデータキャリイングキャパシティがフラッシュメモリ310及びストレージディスク112の間にいくらかの程度まだ時間多重されるので、ディスクドライブ110への実効データ転送レートは大変改善される。
【0049】
図8は4つのタイムライン801乃至840を含み、横座標は時間を表し、縦座標はデータ転送レートを表し、データブロックFB1、FB3、FB5、FB7、DB2、DB4、及びDB6、及びDB8の各々のエリアはデータ量を表している。タイムライン810はデータブロックFB1、FB3、FB5、及びFB7のシステムバス302からフラッシュバッファ311へのデータ転送を描き、タイムライン820はデータブロックFB2、FB4、FB6、及びFB8のシステムバス302からディスクバッファ312へのデータ転送を描き、タイムライン830はディスクバッファ312からストレージディスク112上のトラック2、4、6、及び8へのデータブロックFB2、FB4、FB6、及びFB8のデータ転送を描き、タイムライン840はフラッシュバッファ311から、フラッシュメモリデバイス310の領域、すなわちストレージディスク112の、(示されない)空のディスクトラックに一致したフラッシュ領域1、3,5、及び7である、F1、F3、F5、及びF7のフラッシュ領域へのデータブロックFB1、FB3、FB5、及びFB7のデータ転送を描く。
【0050】
実例として、タイムライン810乃至840はフラッシュデバイス310へのデータ転送レートが150MB、ストレージディスク112へのデータ転送レートが150MB、及びシステムバス302のデータ転送レートが300MBである、ディスクドライブ110の実施形態に関して記述される。さらに、データブロックFB1、FB3、FB5、及びFB7、とDB2、DB4、DB6、及びDB8は、ストレージディスク112のシングルデータトラックに完全に書き込まれる十分なデータを含むように各々サイズ指定される。結果として、ストレージディスク112の全ての他のトラックはデータストリーム303からのデータで完全に書き込まれ、残っているトラックはデータストリーム303からのデータを全く含まない。図8に例証される実施形態で、フラッシュバッファ311はストレージディスク112のデータトラックの4分の1に対するキャパシティをただ持つ。図8の1つのタイムユニットは、ストレージディスク112に書き込まれる、例えばDB2、DB4、DB6の、1つのデータブロックに関して必要とされる時間を表す。この説明に役立つ例で、ストレージディスク112へのデータ転送レートはフラッシュメモリデバイス310へのデータ転送レートに等しいので、図8の1つのタイムユニットは、例えばFB1、FB3、またはFB5である、フラッシュメモリデバイス310へ転送される1つのデータブロックに関して必要とされる時間も表す。
【0051】
タイムライン810に示されように、フラッシュバッファ311はデータブロックFB1を構成している第1の半分のデータを300MBで始めに受信するが、フラッシュバッファ311が一度満たされると、フラッシュバッファ311からフラッシュメモリデバイス310へデータが転送されることができる同じレート、すなわち150MBで、第2の半分のデータブロックFB1をただ受信することができる。従って、システムバス302は、フラッシュバッファ311が時刻0.25で満たされる時ストールし、時刻0.25から時刻0.75に150MBでフラッシュバッファ311にデータをただ転送できる。結果として、システムバス302は、時刻0.75までにディスクバッファ312にデータブロックDB2を転送し始めることができない。データブロックFB1からのデータが時刻0.0でフラッシュバッファ311によって受信されると直ぐに、データブロックFB1からのデータが、タイムライン840に例証されるように、フラッシュメモリデバイス310のフラッシュ領域F1に転送することを開始する。
【0052】
タイムライン820で示されるように、システムバス302は、0.5タイムユニット、すなわち時刻0.75から時刻1.25に、でディスクバッファ312にデータブロックDB2を転送する。時刻1.25で、システムバス302は利用可能であり、(タイムライン810に示される)これから、空のフラッシュバッファ311にデータブロックFB3を転送することを開始する。システムバス302が、時刻1.0でフラッシュバッファ311にデータブロックFB3を転送するために利用可能でないので、フラッシュバッファ311は時刻1.25まで空のままであり、タイムライン840での0.25タイムユニットのポーズ841という結果になり、時刻1.0から時刻1.25の間にフラッシュメモリデバイス310に書き込まれるデータがないということを示している。タイムライン840でのポーズ841は、フラッシュメモリデバイス310にデータが連続的に書き込まれないので、ディスクドライブ110への実効データ転送レートを減少させる。追加のポーズ842がタイムライン840、すなわち各々のデータブロックがフラッシュメモリデバイス310に書き込まれる後、で周期的に生じる。
【0053】
ポーズは、タイムライン830に例証されるように、ストレージディスク112に書き込まれる時にも生じるかもしれない。実例として、タイムライン830は、ライトオンアライバルが使用されない時の、ディスクバッファ312からストレージディスク112上のディスクトラック2、4、6、及び8それぞれへのデータブロックDB2、DB4、DB6、及びDB8のライティングを描く。ライトオンアライバルが使用されないため、データはストレージディスク112に連続的に必ずしも書き込まれない。例えば、リード/ライトヘッド127が所望のトラックの始まりに置かれることができるまでストレージディスク112への周期的な書き込みはポーズする。“ミストスキュー”によって生じる、1つのこのようなポーズ831はディスクトラック2へのデータブロックDB2の書き込みとディスクトラック4へのデータブロックDB4の書き込みとの間に例証される。タイムライン830に示されるように、ディスクドライブ110のリード/ライトヘッドが、時刻0.75、1.75、2.75、3.75などでトラックの開始点に位置され、このような特定の時刻で、新しいトラックへの書き込みが開始されることができる。しかしながら、時刻1.75で、ディスクトラック2へのDB2の書き込みが丁度完了された時、データブロックDB4はディスクバッファ312にまだ書き込まれておらず、データブロックDB4が時刻2.75でディスクトラック4に書き込まれることができる前に、ストレージディスク112は完全な回転を作らなければならない。例えば、(示されないが)ディスクトラック12に書き込まれるデータより前に、ポーズ831に類似した追加のポーズは周期的に生じるだろう。
【0054】
システムバス302のスピードがフラッシュメモリデバイス310の定常状態の2倍のライティングスピードであり、フラッシュメモリデバイス310に書き込まれるデータブロックの1つ、すなわちFB1、FB3、FB5など、に含まれる少なくとも半分のデータを格納するのに、フラッシュバッファ311が十分大きい実施形態で、データはフラッシュメモリデバイス310及びストレージディスク112の両方に連続的に書き込まれることができる、ということを当業者は理解するだろう。この理由は、システムバス302は0.5タイムユニットで、フラッシュバッファ311に例えばデータブロックFB1のデータブロックを転送することができ、0.5タイムユニットで、ディスクバッファ312に、例えばデータブロックDB2の、データブロックを転送することができるからである。従って、1.0タイムユニットで、フラッシュメモリデバイス310及びストレージディスク112にデータが連続的に書き込まれるように、フラッシュバッファ311及びディスクバッファ312に十分なデータをシステムバス302が転送することができる。ポーズ831がタイムライン831に存在しないだろう、及びポーズ841、ポーズ842がタイムライン840に存在しないだろう。しかしながら、図8に例証されるように、データがフラッシュメモリデバイス310に連続的に書き込まれことができるほど、フラッシュバッファ310が十分大きくない実施形態で、実効データ転送レートは、データがストレージディスクまたはフラッシュメモリデバイスのどちらかに一般的に転送される、ハイブリッドドライブの従来のデータ転送方式に対して大変さらに増加される。タイムライン830及びタイムライン840によって例証されるように、“普通より小さな”フラッシュバッファをもちいても、データストリーム303がディスクドライブ110に転送される時間の殆どでフラッシュメモリデバイス310及びストレージディスク112に同時にデータが書き込まれる。
【0055】
さらに一般的に、データストリーム303からのデータフラッシュメモリデバイス310に連続的にデータを書き込む、それによってディスクドライブ110の実効データ転送レートを最大にする、ために、フラッシュバッファ310を空にするために必要とされる時間で、ディスクバッファ312に少なくとも1つのデータのトラックをHDDコントローラ133が書き込むことができるようにするようにフラッシュバッファ311がサイズ指定されるだろう。すなわち、フラッシュバッファ311は下の式1を満たすようにサイズが指定されるだろう。
【0056】
[Rsystem Bus/RFlash Memory]×FB=DataTrack ・・・・(式1)
ここで、Rsystem Busはシステムバス302のデータレート、RFlash Memoryはフラッシュメモリデバイス310の定常状態のライティングスピード、FBはフラッシュバッファ311のデータストレージキャパシティ、及びDataTrackはディスクライティングが生じるだろう点でディスクの1つのトラック上に含まれるデータ量である。
【0057】
図9は、本発明の1つの実施形態に従って、磁気記憶デバイス及びフラッシュメモリデバイスを含むハイブリッドデータストレージ機器に多量のデータを格納するための方法ステップのフローチャートである。方法ステップは図1乃至図3のシステムに関連して記述されるが、当業者は、任意の順序で、方法ステップを実行するように構成された任意のシステムが発明の範囲内であるということを理解するだろう。方法900がハイブリッドディスクドライブにデータストリームを書き込むことに関して記述される一方、当業者はいくつかの実施形態で、同様の方式が増加されたデータ転送レートでハイブリッドディスクドライブからデータを読み出すように使用されるかもしれないし、データが適切な方法で格納し、すなわちストレージディスク及びフラッシュメモリデバイス間で分けられるということを提供されるかもしれないということを当業者は理解するだろう。
【0058】
示されるように、方法900はステップ901で始まり、そこでHDDコントローラ133はシステムバス302を通じてデータストリーム303を受信する。
【0059】
ステップ902で、HDDコントローラ133は受信されたデータをフラッシュバッファ311及びディスクバッファ312の間で交互にバッファする。このように、システムバス302のデータキャリーイングキャパシティは、データストリーム303からのデータがフラッシュメモリデバイス310及びストレージディスク112に同時に格納されることができるように、フラッシュバッファ311及びディスクバッファ312の間で多重化される。
【0060】
図10は本発明の1つの実施形態に従って、同心円状のデータトラックをともなった磁気記憶媒体及び不揮発性ソリッドステート記憶媒体のファイルに関するデータを格納するための方法ステップのフローチャートである。方法ステップは、図1乃至図3のシステムに関連して記述されるけれども、任意の順序で、方法ステップを実行するように構成された任意のシステムが発明の範囲内であるということを当業者は理解するだろう。
【0061】
示されるように、方法1000はステップ1001で開始し、磁気記憶媒体の第1のデータトラック、すなわちストレージディスク112、にデータストリーム303からのデータの第1の部分をHDDコントローラ133が格納する。
【0062】
ステップ1002で、不揮発性ソリッドステート記憶媒体、すなわちフラッシュメモリデバイス310にデータストリーム303からの第2の部分のデータを格納する。
【0063】
ステップ1003で、HDDコントローラ133は磁気記録媒体の第1のデータトラックに隣接しないストレージディスク112の第2のデータトラックにデータストリーム303からの第3の部分のデータを格納する。ステップ1001で書き込まれる第1のデータトラック及びステップ1003で書き込まれる第2のデータトラック間のストレージディスク112の1つ以上のデータトラックはデータストリーム303からの任意の部分のデータを含まないが、フラッシュメモリデバイス310に格納されるデータのLBAに対応するかもしれない。
【0064】
ステップ1004で、HDDコントローラ133はデータストリーム303の転送が完了したかどうかを決定する。もし、データストリーム303の転送が完了すれば、方法1000がステップ1005に進む。もし、データストリーム303の転送が完了しなければ、方法1000はステップ1002に戻り、データストリーム303がディスクドライブ110に転送されるまで、ステップ1002及びステップ1003を繰り返す。従って、データストリーム303からの第4、第6、第8などの部分のデータがフラッシュメモリデバイス310に格納され、データストリーム303からの第3、第5、第7などの部分のデータがストレージディスク112に格納される。いくつかの実施形態で、HDDコントローラ133はストレージディスク112に書き込むための最大のシーケンシャルデータレートにできるだけ近いものを実現するためにストレージディスク112にデータを書き込むためのライトオンアライバル方式を使用する。
【0065】
ステップ1005で、HDDコントローラ133は、フラッシュメモリデバイス310に格納されたデータ及びストレージディスク112上に格納されたデータを、データストリーム303の完全なコピーに統合する。形成されるようなデータストリーム303の完全なコピーは、ストレージディスク112上にまたはフラッシュメモリ310に集められるかもしれない、または完全なコピーはその両方に集められるかもしれない。ステップ1005の統合プロセスは、ディスクドライブ110がさもなくばアイドルである間に行われるかもしれない。
【0066】
発明の実施形態がハイブリッドディスクドライブにデータストリームを書き込むことに関してここで開示されているが、いくつかの実施形態で、システムバスが発明の範囲を超えずに他のオペレーションに関して有利に時間多重されるかもしれない、ということを当業者は理解するだろう。特に、いくつかの実施形態で、ファイルコピーオペレーションの間、ホストコンピューティングデバイスは、ハイブリッドディスクドライブのフラッシュメモリデバイスに書き込んでいる間、ハイブリッドディスクの磁気記憶媒体から読み出すかもしれない。他の実施形態で、システムバスの時間多重は、ハイブリッドディスクのフラッシュメモリを使用することによって、より高速なフラッシュキャッシュオペレーションを可能にするために使用されることができる。
【0067】
つまり、発明の実施形態は、ホスト及びハイブリッドHDD間でデータストリームを転送するためのシステム及び方法を提供する。システムバスのデータキャリングキャパシティを時間多重することによって、HDD内のフラッシュメモリデバイス内及びストレージディスク上にデータが同時に格納されることができる。結果として、ハイブリッドHDDへの及びハイブリッドHDDからのデータ転送の実効レートが有利に増加される。
【0068】
前述のことは本発明の実施形態に導かれる一方、発明の他の及び更なる実施形態がその基本的範囲から逸脱することなく考案されるかもしれないし、その範囲は次のような請求項によって決定される。
【0069】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0070】
110…ディスクドライブ、112…ストレージディスク、114…スピンドルモータ、116…ベースプレート、118…アクチュエータアセンブリ、120…スライダー、122…フレクスチャアーム、124…アクチュエータアーム、127…リード/ライトヘッド、128…ボイスコイルモータ、130…電子回路、132…プリント回路基板。

【特許請求の範囲】
【請求項1】
磁気記憶デバイス及びフラッシュメモリデバイスを含んでいるハイブリッドデータストレージ機器にデータを格納するための方法であって、
前記ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じてデータを受信するためのステップと、
前記磁気記憶デバイスに関するデータをバッファする第1のバッファ及び前記フラッシュメモリデバイスに関するデータをバッファする第2のバッファの間で前記受信データを交互にバッファするためのステップと、
を具備する方法。
【請求項2】
前記磁気記憶デバイスに前記第1のバッファにバッファされたデータを格納すること及び前記フラッシュメモリデバイスに前記第2のバッファにバッファされたデータを格納するためのステップをさらに具備する請求項1記載の方法。
【請求項3】
前記磁気ストレージデバイスに前記第1のバッファにバッファされたデータを格納するためのステップが、お互いに隣接しない前記磁気ストレージデバイスの第1の及び第2のデータトラックにデータを書き込むことを具備し、前記第1の及び第2のデータトラック間の前記磁気ストレージデバイスのデータトラックが前記第1のバッファにバッファされた前記データを含まない請求項2記載の方法。
【請求項4】
前記フラッシュメモリデバイスに前記第2のバッファにバッファされたデータを格納するための前記ステップが、前記第1の及び第2のデータトラック間の前記磁気ストレージデバイスの1つ以上のデータトラックのストレージキャパシティに実質的に等しい前記フラッシュメモリデバイスにデータを格納することを具備する請求項3記載の方法。
【請求項5】
前記第1の及び第2のバッファの間で前記受信データを交互にバッファするためのステップが、
(a)前記第1のバッファに前記受信データをバッファするためのステップと、
(b)前記第2のバッファに前記受信データをバッファするためのステップと、
(c)前記第1のバッファに前記受信データをバッファするためのステップと、
を具備する請求項1記載の方法。
【請求項6】
前記ステップ(a)の間、前記第1のバッファにバッファされた前記受信データが、前記磁気ストレージデバイスのシングルデータトラックのストレージキャパシティに少なくとも等しく、前記ステップ(b)の間、前記第2のバッファにバッファされた前記受信データが、前記磁気ストレージデバイスのシングルデータトラックのストレージキャパシティに少なくとも等しい、請求項5記載の方法。
【請求項7】
不揮発性ソリッドステート記憶媒体及び同心円状のデータトラックをともなった磁気ストレージ媒体にファイルに関するデータを格納するための方法であって、
前記磁気ストレージ媒体の第1のデータトラックに前記ファイルに関する前記データの第1の部分を格納するためのステップと、
前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記データの第2の部分を格納するためのステップと、
前記磁気ストレージ媒体の前記第1のデータトラックに隣接しない、前記磁気ストレージ媒体の第2のデータトラックに前記ファイルに関する前記データの第2の部分を格納するためのステップと、
を具備し、
前記第1のデータトラックと前記第2のデータトラックの間の前記磁気ストレージ媒体の1つ以上のデータトラックが前記ファイルに関する前記データの任意の部分を含まないものである方法。
【請求項8】
前記ファイルに関する前記データの任意の部分を含まない前記1つ以上のデータトラックが少なくとも2つのデータトラックを具備する請求項7記載の方法。
【請求項9】
前記第1の部分を格納する前に、第1のバッファに前記第1の部分のデータをバッファするためのステップと、
前記第2の部分を格納する前に、第2のバッファに前記第2の部分のデータをバッファするためのステップをさらに具備する請求項7記載の方法。
【請求項10】
前記第3の部分を格納する前に、前記第1のバッファに前記第3の部分のデータをバッファするためのステップをさらに具備する請求項9記載の方法。
【請求項11】
前記第2の部分が前記第1の部分の後にバッファされ、及び前記第3の部分が前記第2の部分の後にバッファされるように前記バッファすることを制御するためのステップをさらに具備する請求項10記載の方法。
【請求項12】
前記磁気ストレージ媒体の前記第1のデータトラックに前記ファイルに関する前記データの前記第1の部分を格納するためのステップ、及び前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記データの前記第2の部分を格納するためのステップが同時に生じる請求項9記載の方法。
【請求項13】
前記磁気ストレージ媒体の前記第1のデータトラックに前記ファイルに関する前記データの前記第1の部分を格納するための前記ステップが、前記第1のデータトラックに前記ファイルに関する前記データの前記第1の部分を書き込むことを具備し、前記書き込むことが前記第1データトラックの開始点以外の前記第1のデータトラックの点で開始される、請求項7記載の方法。
【請求項14】
2つの異なる記憶媒体にシングルファイルに関するデータを格納するためのハイブリッドデータストレージ機器であって、
前記ファイルに関するデータが格納される同心円状のデータトラックを有する磁気ストレージ媒体であって、前記ファイルに関するデータを含む前記データトラックの各々が前記ファイルに関するデータを含まない前記データトラックに隣接する磁気ストレージ媒体と、
前記ファイルに関して残っているデータを格納する不揮発性ソリッドステート記憶媒体と、
を具備するハイブリッドデータストレージ機器。
【請求項15】
前記磁気ストレージ媒体に関するデータをバッファするように構成される第1のバッファと、
前記磁気ストレージ媒体の外径部に配置された同心円状のデータトラックの少なくとも半分のストレージキャパシティを備える第2のバッファと、
をさらに具備する請求項14記載のハイブリッドデータストレージ機器。
【請求項16】
前記ファイルに関するデータを含まない2つ以上のデータトラックが、前記ファイルに関するデータが格納される第1の及び第2の同心円状のデータトラックの間に配置され、及び連続的である請求項14記載のハイブリッドデータストレージ機器。
【請求項17】
コントローラをさらに具備する前記ハイブリッドデータストレージ機器であって、
前記コントローラは、
前記ハイブリッドデータストレージ機器をホストデバイスに接続するバスを通じて前記ファイルに関するデータを受信し、
前記磁気ストレージ媒体についてのデータをバッファするように前記コントローラによって制御される第1のバッファ及び前記不揮発性ソリッドステート記憶媒体についてのデータをバッファするように前記コントローラによって制御される第2のバッファの間で前記受信データを交互にバッファするように構成される請求項14記載のハイブリッドデータストレージ機器。
【請求項18】
前記不揮発性ソリッドステート記憶媒体に格納された前記ファイルに関する前記残りのデータが、前記ファイルに関するデータを含まず及び前記ファイルに関するデータを含むデータトラックに隣接する前記データトラックのストレージキャパシティよりも小さいまたは等しいサイズを持つ請求項14記載のハイブリッドデータストレージ機器。
【請求項19】
前記コントローラが、前記磁気ストレージ媒体に前記ファイルに関する前記データ及び前記不揮発性ソリッドステート記憶媒体に前記ファイルに関する前記残りのデータを同時に格納するようにさらに構成される請求項18記載のハイブリッドデータストレージ機器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−234609(P2012−234609A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−167581(P2011−167581)
【出願日】平成23年7月29日(2011.7.29)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】