(57)【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサに結合されたディスクインタフェースと、
前記プロセッサの外部の通信バスと、
前記通信バスに結合された独立ディスク冗長アレイ（ＲＡＩＤ）書き込みキャッシュサブアセンブリと
を含み、
前記ＲＡＩＤ書き込みキャッシュサブアセンブリは、
不揮発性メモリと、
前記通信バスに結合され、この通信バスから受けたデータを、前記通信バスのプロトコルから、前記不揮発性メモリのプロトコルに変換して、前記不揮発性メモリに記憶するバッテリーバックアップされたロジックと
を有し、
前記ＲＡＩＤ書き込みキャッシュアセンブリは、前記不揮発性メモリに記憶されたデータを、前記ＲＡＩＤに格納する
コンピュータシステム。
【請求項２】
前記不揮発性メモリは、バッテリーでバックアップされたダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含む
請求項１に記載のコンピュータシステム。
【請求項３】
前記不揮発性メモリは、
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）と、
電源と、
フラッシュメモリと
を含む請求項１に記載のコンピュータシステム。
【請求項４】
前記ＲＡＩＤ書き込みキャッシュサブアセンブリは、前記コンピューティングシステムが停電するときに、データを前記ＤＲＡＭからフラッシュメモリへ転送するためのバッテリーと、ダイレクトメモリアクセス（ＤＭＡ）とを
さらに含む請求項３に記載のコンピュータシステム。
【請求項５】
前記プロセッサと関連するチップセットをさらに含み、
前記チップセットは、前記ＲＡＩＤと通信するためのロジックを含む
請求項１に記載のコンピュータシステム。
【請求項６】
前記プロセッサは、少なくともいくつかのＲＡＩＤコントローラオペレーションを実行する
請求項１に記載のコンピュータシステム。
【請求項７】
前記通信バスは、ＰＣＩ−Ｅｘｐｒｅｓｓバスに対応し、
前記ＲＡＩＤ書き込みキャッシュサブアセンブリは、
ＰＣＩ−Ｅｘｐｒｅｓｓ互換カード
を含む
請求項１に記載のコンピュータシステム。
【請求項８】
前記不揮発性メモリに記憶するためのプロトコルは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のプロトコルである
請求項１に記載のコンピュータシステム。
【請求項９】
不揮発性の独立ディスク冗長アレイ（ＲＡＩＤ）書き込みキャッシュと、
通信バスに結合され、この通信バスから受けたデータを、前記通信バスのプロトコルから前記ＲＡＩＤ書き込みキャッシュのプロトコルに変換して、前記ＲＡＩＤ書き込みキャッシュに記憶するバッテリーバックアップされたロジックと
を含み、
前記ＲＡＩＤ書き込みキャッシュに記憶されたデータを前記ＲＡＩＤに格納する  ＲＡＩＤ書き込みキャッシュサブアセンブリ。
【請求項１０】
前記ＲＡＩＤ書き込みキャッシュは、
バッテリーでバックアップされたダイナミックランダムアクセスメモリ（ＤＲＡＭ）
を含む
請求項９に記載のＲＡＩＤ書き込みキャッシュサブアセンブリ。
【請求項１１】
前記ＲＡＩＤ書き込みキャッシュは、
フラッシュメモリと、
電源と
を含む請求項９に記載のＲＡＩＤ書き込みキャッシュサブアセンブリ。
【請求項１２】
前記バッテリーでバックアップされたＲＡＩＤ書き込みキャッシュに対するメモリ間オペレーションを実行するダイレクトメモリアクセス（ＤＭＡ）インタフェースを
さらに含む請求項１０に記載のＲＡＩＤ書き込みキャッシュサブアセンブリ。
【請求項１３】
データを通信バスプロトコルから不揮発性の独立ディスク冗長アレイ（ＲＡＩＤ）書き込みキャッシュのプロトコルに変換することと、
バッテリーバックアップされたロジックにより、前記メモリモジュールプロトコルに変換されたデータを、前記ＲＡＩＤ書き込みキャッシュに記憶することと、
前記ＲＡＩＤ書き込みキャッシュに記憶されたデータを、前記ＲＡＩＤに格納することと、
を含むＲＡＩＤ書き込みキャッシュサブアセンブリのための方法。
【請求項１４】
前記ＲＡＩＤ書き込みキャッシュに対するメモリ間オペレーションを実行すること
をさらに含む請求項１３に記載の方法。
【請求項１５】
コンピューティングシステムがいつ停電するかを決定し、それに応じて、データをダイナミックランダムアクセスメモリ（ＤＲＡＭ）から前記ＲＡＩＤ書き込みキャッシュに転送すること
をさらに含む請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤの書き込みキャッシュサブアセンブリに関する。
【背景技術】
【０００２】
独立ディスク冗長アレイ（ＲＡＩＤ）技術は、小さく、安価な複数のディスクドライブを統合して、大きく、高価な１つのディスクドライブの性能を上回る性能を生み出すアレイにする。
ＲＡＩＤは、例えば、冗長性、より低いレイテンシ、より高いバンド幅、および、データの復元可能性といった利益をもたらす。
ＲＡＩＤアレイは、コンピュータには、１つ以上の論理ストレージまたは仮想ディスクドライブであるように見える。
【０００３】
ＲＡＩＤへの２つの既存のアプローチ：ハードウェアベースのＲＡＩＤ、および、ソフトウェアベースのＲＡＩＤが存在する。
ハードウェアベースのＲＡＩＤは、ホストから独立してドライブを管理し、ホストに対して１つ以上の仮想ディスクを提示する。
一般的に、ハードウェアベースのＲＡＩＤは、ディスクドライブとホストとの間をインタフェースするＲＡＩＤコントローラカードを採用する。
ハードウェアベースのＲＡＩＤの利益は、ホストプロセッサのオーバーヘッドを最小化すること、ホストシステムメモリのオーバーヘッドを最小化すること、および、不揮発性のＲＡＩＤ書き込みキャッシュを提供することを含む。
しかしながら、ハードウェアベースのＲＡＩＤは、多くの消費者に対して望ましくない経費を提示する。
【０００４】
ソフトウェアベースのＲＡＩＤは、ホストにおいて様々なＲＡＩＤレベルを実行する。
ソフトウェアベースのＲＡＩＤは、安価であり、高い性能を提供することができる。
しかしながら、ソフトウェアベースのＲＡＩＤは、ホストプロセッサのオーバーヘッド、および、システムメモリのオーバーヘッドを必要とする。
さらに、ソフトウェアベースのＲＡＩＤは、揮発性のシステムメモリに依存するので、もし、書き込みトランザクションが完了前に中断される（例えば、停電により）と、データが失われ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、ＲＡＩＤの書き込みキャッシュサブアセンブリを提供する。
【課題を解決するための手段】
【０００６】
本発明の一形態は、プロセッサと、前記プロセッサに結合されたディスクインタフェースと、前記プロセッサの外部の通信バスと、前記通信バスに結合されたＲＡＩＤ書き込みキャッシュサブアセンブリであって、前記ＲＡＩＤ書き込みキャッシュサブアセンブリは、不揮発性ストレージを有する、ＲＡＩＤ書き込みキャッシュサブアセンブリとを含むコンピュータシステムを提供する。
【図面の簡単な説明】
【０００７】
本発明の例示の実施形態の詳細な説明のために、添付の図面に対する参照が作成される。
【０００８】
【図１】実施形態に基づく独立ディスク冗長アレイ（ＲＡＩＤ）システムを例示する図である。
【図２】実施形態に基づくコンピュータシステムを例示する図である。
【図３Ａ】実施形態に基づくＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリを例示する図である。
【図３Ｂ】実施形態に基づくＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリを例示する図である。
【図４】実施形態に基づく方法を示す図である。
【発明を実施するための形態】
【０００９】
［表記法および用語］
特定の用語は、以下の説明および請求項全体にわたって使用され、特定のシステムコンポーネントに言及する。
当業者が十分理解するように、コンピュータ会社は、コンポーネントを異なる名前により言及し得る。
この文書は、名前は異なるが機能は異ならないコンポーネント間を区別することを意図していない。
以下の議論および以下の請求項において、用語「〜を含んでいる（including）」および「〜を構成している（comprising）」は、変更可能な形式（open-ended fashion）で用いられ、「含んでいるが、・・・に限定されない」を意味すると解釈されるべきである。
また、用語「接続する（couple or couples）」は、間接的な接続、直接的な接続、光学的な接続または無線接続のいずれかを意味すること意図している。
したがって、第１のデバイスが第２のデバイスに結合する場合、その接続は、直接的な接続、他のデバイスおよび接続を介した間接的な接続、光学的な接続、または、無線接続を介し得る。
用語「システム」は、２つ以上のハードウェア、および／または、ソフトウェアコンポーネントの集まりに言及し、電子デバイス（複数可）またはそのサブシステムに言及するために用いられ得る。
さらに、用語「ソフトウェア」は、ソフトウェアを格納するために用いられるメディアにかかわらず、プロセッサ上で実行することができる任意の実行可能なコードを含む。
したがって、不揮発性メモリに格納され、「埋め込みファームウェア」と呼ばれることもあるコードは、ソフトウェアの定義に含まれる。
【００１０】
［詳細な説明］
以下の議論は、本発明の様々な実施形態を対象にする。
これらの実施形態の１つ以上が好適であり得るが、開示された実施形態が、請求項を含む開示の範囲を限定することとして解釈または使用されるべきではない。
また、当業者は、以下の説明が、広い適用性を有し、任意の実施形態の議論が、その実施形態の例示に過ぎないことを意味し、請求項を含む開示の範囲が、その実施形態に限定されることの暗示を意図していないということを理解するであろう。
【００１１】
開示の実施形態は、独立ディスク冗長アレイ（ＲＡＩＤ）コントローラカードなしに、ＲＡＩＤの機能性を提供する。
少なくともいくつかの実施形態において、ソフトウェアベースのＲＡＩＤは、周辺機器用通信バス（例えば、周辺コンポーネントインターコネクトエクスプレス（ＰＣＩｅ）バス）上の不揮発性のＲＡＩＤ書き込みキャッシュを提供することにより改良される。
図１は、様々な実施形態に基づくＲＡＩＤシステム１００を例示する。
図のように、ＲＡＩＤシステム１００は、ＲＡＩＤコントローラカード機能１０２を提供し、複数のディスク１１２Ａ−１１２Ｎをサポートする。
ＲＡＩＤコントローラカード機能１０２は、ＲＡＩＤレベル処理ロジック１０４、不揮発性の書き込みキャッシュ１０６、ディスクインタフェース１０８およびメモリ間インタフェース１１０を含むが、これらに限定されない。
従来のＲＡＩＤコントローラカードを実行するよりも、実施形態は、機能１０２を、ここで記述されるようなコンピュータシステムの他のコンポーネントに分配する。
【００１２】
実施形態によれば、機能１０２は、例えば、ストライピングおよびデータミラーリングといった既知のＲＡＩＤオペレーションをサポートする。
ストライピングは、データを均一なサイズのブロックに分割し、そのブロックをディスク１１２Ａ−１１２Ｎの少なくともいくつかに広げることを含む。
ディスク１１２Ａ−１１２Ｎの読み込み／書き込みヘッドが同時にアクティブである場合、ストライピングは、データ転送の速度を向上させる。
一般的に、データモニタリングは、データ冗長性を提供する。
ＲＡＩＤ−０，ＲＡＩＤ−１，ＲＡＩＤ−５およびＲＡＩＤ−６は、データ冗長性スキームの例である。
【００１３】
図２は、実施形態に基づくコンピュータシステム２００を例示する。
図のように、コンピュータシステム２００は、ＣＰＵ２０２Ａおよび２０２Ｂを含み、ＣＰＵ２０２Ａおよび２０２Ｂは、デュアルプロセッサインタフェースを介して接続される。
代替の実施形態では、追加の、または、より少ないＣＰＵが実行される。
ＣＰＵの数にかかわらず、ＣＰＵの少なくとも１つ（例えば、ＣＰＵ２０２Ｂ）は、ＲＡＩＤレベル処理ロジック１０４を含み、前述のようなＲＡＩＤオペレーションをサポートする。
ＲＡＩＤレベル処理ロジック１０４は、ハードウェア、ファームウェア、および／または、ソフトウェアを含む。
少なくともいくつかの実施形態において、ＲＡＩＤレベル処理ロジック１０４は、ソフトウェアベースのＲＡＩＤ機能に対応する。
【００１４】
ＣＰＵ２０２Ｂは、例えば、ダブルデータレート３（ＤＤＲ−３）といったメモリモジュールプロトコルを介して、複数のデュアルインラインメモリモジュール（ＤＩＭＭｓ）と通信する。
代替的には、他のメモリモジュールプロトコルが利用され得る。
図のように、ＣＰＵ２０２Ｂはまた、周辺インタフェース２０８を含み、周辺インタフェース２０８は、周辺コンポーネントインターコネクトエクスプレス（ＰＣＩｅ）インタフェースであり得る。
このような場合、周辺インタフェース２０８と、コンピュータシステム２００の様々な内部または外部のコンポーネントとの間の通信は、ＰＣＩｅプロトコルに基づいている。
【００１５】
いくつかの実施形態において、周辺インタフェース２０８は、ディスクインタフェース１０８を有するサウスブリッジ２２０に結合する。
このような実施形態において、周辺インタフェース２０８と、サウスブリッジ２２０との間の通信は、ＰＣＩｅプロトコルまたは他のプロトコルに基づき得る。
さらに、サウスブリッジ２２０と、ディスク１１２Ａ−１１２Ｎとの間の通信は、シリアル接続ＳＣＳＩ（ＳＡＳ）プロトコル、シリアルＡＴＡ（ＳＡＴＡ）プロトコル、ユニバーサルシリアルバス（ＵＳＢ）プロトコル、または、ディスクインタフェース１０８に実行される別の通信プロトコルに基づき得る。
【００１６】
周辺インタフェース２０８はまた、ＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリ２３０に結合される（すなわち、コンポーネントは、カードまたは別の位置に集められ（assembled）得る）。
図のように、ＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリ２３０は、不揮発性の書き込みキャッシュ１０６に結合されたプロトコル変換器ロジック２３２を含む。
プロトコル変換器ロジック２３２は、周辺インタフェース２０８から受信した通信バスデータを、不揮発性の書き込みキャッシュ１０６へ格納するためのメモリモジュールデータに変換する。
一例として、プロトコル変換器ロジック２３２は、ＰＣＩｅ  Ｇｅｎｅｒａｔｉｏｎ３データを、ＤＤＲ−３のデータに変換し得る。そして、その逆も同様である。
実施形態によれば、不揮発性の書き込みキャッシュ１０６は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、電源（例えば、バッテリー）を含み、いくつかの実施形態においては、フラッシュメモリを含む。
【００１７】
不揮発性の書き込みキャッシュ１０６により提供されているような書き込みキャッシングは、キャッシュへの書き込みがディスクへの書き込みよりも速い方式に基づいており、ＲＡＩＤシステム（例えば、ＲＡＩＤシステム１００）のＩ／Ｏ性能を改善するコスト効率のよい方法である。
書き込みトランザクションにおいて、書き込みデータは、キャッシュに書き込まれ、書き込みトランザクションは、書き込みを発行したホストに「完了」と認められる。
その後、キャッシュされた書き込みは、ディスクに書き込まれるまたはフラッシュされ得る。
ホストが「完了」確認を受信するときに、データは、ディスクに永久的に格納されると考えられている。
もしＩ／Ｏコンポーネントが停電すれば、書き込みキャッシングは、誤ったデータがアプリケーションに送信されることを引き起こす可能性があり、電源が復旧するときに、データベースを破損する可能性がある。
このような問題を改善するまたは除去するために、不揮発性の書き込みキャッシュ１０６は、コンピュータシステム２００がクラッシュまたは停電から回復するときに、進行中であった書き込みを完了するために利用することができる情報を格納する。
【００１８】
図３Ａは、様々な実施形態に基づくＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリ２３０Ａを例示する。
図のように、ＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリ２３０Ａは、プロトコル変換器ロジック２３２およびメモリ間インタフェース１１０を有する制御ロジック３０２（例えば、特定用途向け集積回路（ＡＳＩＣ）または他の半導体デバイス）を含む。
いくつかの実施形態において、制御ロジック３０２は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）に対応する。
また、メモリ間インタフェース１１０は、ダイレクトメモリアクセス（ＤＭＡ）インタフェースに対応し得る。
いくつかの実施形態において、ＣＰＵ２０２Ｂは、メモリ間インタフェース１１０の少なくともいくつかを含み、または、追加のまたは代替のメモリ間インタフェースを提供する。
【００１９】
ＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリ２３０Ａはまた、ＤＲＡＭ３０４およびバッテリー３０６を含み、バッテリー３０６は、たとえコンピュータシステム２００がクラッシュまたは停電するとしても、制御ロジック３０２および／またはＤＲＡＭ３０４に電源を供給する。
ＤＲＡＭ３０４およびバッテリー３０８を合わせると、バッテリーでバックアップされた（battery-backed）ＤＲＡＭ、または、より一般的には、ある不揮発性のストレージを示す。
コンピュータシステム２００が回復したときに、ＤＲＡＭ３０４に格納された情報は、コンピュータシステム２００がクラッシュまたは停電したときに進行中であったＲＡＩＤ書き込みを終了させるために利用することができる。
【００２０】
図３Ｂは、実施形態に基づくＲＡＩＤ書き込みキャッシュカードおよびサブアセンブリ２３０Ｂを例示する。
図のように、ＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリ２３０Ｂは、プロトコル変換器ロジック２３２およびメモリ間インタフェース１１０（例えば、ＤＭＡインタフェース）を有する制御ロジック３０２を含む。
いくつかの実施形態において、ＣＰＵ２０２Ｂは、メモリ間インタフェース１１０の少なくともいくつかを含み、または、追加のまたは代替のメモリ間インタフェース１１０を提供する。
【００２１】
ＲＡＩＤ書き込みキャッシュカードまたはサブアセンブリ２３０Ｂはまた、ＤＲＡＭ３０４、フラッシュメモリ３０８および電源３１０（例えば、バッテリまたは蓄電器）を含む。
たとえコンピュータシステム２００がクラッシュまたは停電するとしても、電源３１０は、制御ロジック３０２、ＤＲＡＭ３０４および／またはフラッシュメモリ３０８に対して電源を供給する。
ＤＲＡＭ３０４、フラッシュメモリ３０８および電源３１０を合わせると、不揮発性のストレージを示す。
いくつかの実施形態において、コンピュータシステム２００のクラッシュまたは停電を検出すると、電源３１０は、メモリ間インタフェース１１０を介して、ＤＲＡＭ３０４からフラッシュメモリ３０８へデータを転送させることができる。
コンピュータシステム２００が回復したときに、データは、フラッシュメモリ３０８から、もとのＤＲＡＭ３０４へ転送され、ＤＲＡＭ３０４に格納された情報は、コンピュータシステム２００がクラッシュまたは停電したときに進行中であった書き込みを終了させるために利用することができる。
【００２２】
図４は、実施形態に基づく方法４００を例示する。
図のように、方法４００は、ブロック４０２から開始し、通信バスプロトコルからメモリモジュールプロトコルに変換する（ブロック４０４）ことにより進む。
データは、不揮発性のＲＡＩＤ書き込みキャッシュに格納され（ブロック４０６）、方法４００は、ブロック４０８で終了する。
少なくともいくつかの実施形態において、方法４００はまた、不揮発性のＲＡＩＤ書き込みキャッシュに対するメモリ間オペレーションを実行することを含み得る。
一例として、方法４００は、いつコンピューティングシステムがクラッシュまたは停電するのかを決定し、それに応じて、ＤＲＡＭからフラッシュメモリへデータを転送することを含み得る。
ＤＲＡＭおよびフラッシュメモリは、ＲＡＩＤ書き込みキャッシュカードおよびサブアセンブリの一部であり得る。
【００２３】
上述の議論は、本発明の本質および様々な実施形態の例示のためである。
ひとたび上記開示が十分に理解されれば、多数のバリエーションおよび変更は、当業者にとって明らかになるであろう。
以下の請求項は、このようなすべてのバリエーションおよび変更を包含すると解釈されることを意図している。
【符号の説明】
【００２４】
１００・・・ＲＡＩＤシステム，
１０２・・・ＲＡＩＤコントローラカード機能，
１０４・・・ＲＡＩＤレベル処理ロジック，
１０６・・・不揮発性の書き込みキャッシュ，
１０８・・・ディスクインタフェース，
１１０・・・メモリ間インタフェース，
１１２・・・ディスク，
２００・・・コンピュータシステム，
２０２・・・ＣＰＵ，
２０８・・・周辺インタフェース，
２１０・・・ＤＩＭＭ，
２２０・・・サウスブリッジ，
２３０・・・ＲＡＩＤ書き込みキャッシュカード，
２３２・・・プロトコル変換器ロジック，
３０２・・・制御ロジック，
３０４・・・ＤＲＡＭ，
３０６・・・バッテリー，
３０８・・・フラッシュメモリ，
３１０・・・電源
【図１】
0005426684.tif 000002
【図２】
0005426684.tif 000003
【図３Ａ】
0005426684.tif 000004
【図３Ｂ】
0005426684.tif 000005
【図４】
0005426684.tif 000006