(57)【要約】【課題】改良された外部ＲＡＩＤ対応キャッシュを提供する。【解決手段】本発明にかかるセルは、セルラーコンピューティングシステムで使用され、セルラーコンピューティングシステム用のアドレス空間を見るプロセッサと、プロセッサに接続された第１レベルのキャッシュと、プロセッサに接続され、アドレス空間の少なくとも一部が割り当てられたメモリと、プロセッサに接続されたＲＡＩＤキャッシュと、ＲＡＩＤキャッシュに接続され、アドレス空間を、第１レベルのキャッシュに対してトランスペアレントにマッピングするＲＡＩＤロジックと、ＲＡＩＤキャッシュのキャッシュコヒーレンシを維持するキャッシュコヒーレンシロジックとを備える。【選択図】図９
2006252545.tif 000002
【特許請求の範囲】
【請求項１】
セルラーコンピューティングシステムで使用されるように構成されるセル（９００）であって、
前記セルラーコンピューティングシステム用に実施されたアドレス空間を見ることができるプロセッサ（９１０）と、
前記プロセッサ（９１０）に動作可能に接続された第１レベルのキャッシュ（９２０）と、
前記プロセッサ（９１０）に動作可能に接続されたメモリ（９３０）であって、前記アドレス空間の少なくとも一部が前記メモリ（９３０）に割り当てられるメモリ（９３０）と、
前記プロセッサ（９１０）に動作可能に接続されたＲＡＩＤキャッシュ（９４０）と、
前記ＲＡＩＤキャッシュ（９４０）に動作可能に接続されたＲＡＩＤロジック（９５０）であって、前記ＲＡＩＤロジック（９５０）は、前記アドレス空間を、前記セルラーコンピューティングシステムのＲＡＩＤメモリのレベルをサポートするマッピングにおいてマッピングするように構成され、前記マッピングは、前記プロセッサ（９１０）および前記第１レベルのキャッシュ（９２０）にトランスペアレントであるＲＡＩＤロジック（９５０）と、
前記ＲＡＩＤキャッシュ（９４０）のキャッシュコヒーレンシを維持するように構成されるキャッシュコヒーレンシロジック（９６０）と
を備えるセル。
【請求項２】
前記プロセッサ（９１０）に動作可能に接続された１つ以上の追加キャッシュであって、前記キャッシュコヒーレンシロジック（９６０）は、前記第１レベルのキャッシュ（９２０）、前記ＲＡＩＤキャッシュ（９４０）、および前記追加キャッシュのキャッシュコヒーレンシを維持するように構成される追加キャッシュ
を備える請求項１に記載のセル。
【請求項３】
前記アドレス空間を見ることができる１つ以上の追加プロセッサ
を含み、
前記追加プロセッサのそれぞれは、少なくとも１つの第１レベルのキャッシュに動作可能に接続される
請求項１に記載のセル。
【請求項４】
前記キャッシュコヒーレンシロジック（９６０）は、ＭＥＳＩ（変更、排他、共有、無効）キャッシュコヒーレンシプロトコルおよびディレクトリに基づくキャッシュコヒーレンシプロトコルの１つ以上に従って、キャッシュコヒーレンシを維持するように構成される
請求項１に記載のセル。
【請求項５】
前記セル（９００）は、１つ以上の第２のセルに動作可能に接続されて前記セルラーコンピューティングシステムを形成し、
前記アドレス空間は、
前記セル（９００）の前記メモリ（９３０）と、
前記１つ以上の第２のセルと
を含み、
前記アドレス空間は、前記セルラーコンピューティングシステムの前記セルのそれぞれが見ることができる
請求項１に記載のセル。
【請求項６】
前記プロセッサ（９１０）に動作可能に接続された１つ以上の追加キャッシュであって、前記キャッシュコヒーレンシロジック（９６０）は、前記第１レベルのキャッシュ（９２０）、前記ＲＡＩＤキャッシュ（９４０）および前記追加キャッシュのキャッシュコヒーレンシを維持するように構成される１つ以上の追加キャッシュと、
前記アドレス空間を見ることができる１つ以上の追加プロセッサであって、前記追加プロセッサのそれぞれが、少なくとも１つの第１レベルのキャッシュに動作可能に接続される、１つ以上の追加プロセッサと、
を備え、
前記キャッシュコヒーレンシロジック（９６０）は、ＭＥＳＩ（変更、排他、共有、無効）キャッシュコヒーレンシプロトコルおよびディレクトリに基づくキャッシュコヒーレンシプロトコルの一方に従ってキャッシュコヒーレンシを維持するように構成され、
ＲＡＩＤメモリの前記レベルは、ユーザ、ロジックおよびプロセスの１つ以上によって選択可能であり、
前記ＲＡＩＤロジック（９５０）は、キャッシュコントローラであって、前記ＲＡＩＤキャッシュ（９４０）の一部であり、
前記キャッシュコヒーレンシロジック（９６０）は、前記キャッシュコントローラの一部であり、
前記ＲＡＩＤロジック（９５０）は、ビットレベル、バイトレベル、およびブロックレベルの１つ以上において、ミラーリング技法、ストライピング技法、２重化技法、およびパリティ技法の１つ以上を使用して、ＲＡＩＤ０〜ＲＡＩＤ７のＲＡＩＤメモリレベルを実施するように構成され、
前記ＲＡＩＤキャッシュ（９４０）は、パリティデータが前記ＲＡＩＤキャッシュからのキャストアウト時に書き込まれるかどうかを選択的に決定するように構成され、データを２つ以上のセルに選択的にキャストアウトするように構成される
請求項１に記載のセル。
【請求項７】
ＲＡＩＤメモリ機能をセルラーコンピューティングシステムに提供するための方法（１０００）であって、
前記セルラーコンピューティングシステムのアドレス空間マッピングを決定すること（１０１０）であって、それによって、キャッシュに基づくメモリＲＡＩＤ化を容易にする、決定すること（１０１０）と、
前記セルラーコンピューティングシステムのセルのキャッシュに前記マッピングを提供すること（１０２０）であって、前記キャッシュは前記セルの他のキャッシュを含む、提供すること（１０２０）と、
キャッシュの読み出しオペレーションを選択的に制御するように前記キャッシュを構成すること（１０３０）であって、それによって、前記アドレス空間マッピングに従い前記ＲＡＩＤメモリ機能を少なくとも部分的に実施する、キャッシュの読み出しオペレーションを選択的に制御するように前記キャッシュを構成すること（１０３０）と、
キャッシュのキャストアウトオペレーションを選択的に制御するように前記キャッシュを構成すること（１０４０）であって、それによって、前記マッピングに従い前記ＲＡＩＤメモリ機能を少なくとも部分的に実施する、キャッシュのキャストアウトオペレーションを選択的に制御するように前記キャッシュを構成すること（１０４０）と
を含む方法。
【請求項８】
前記セルラーコンピューティングシステムに関連したキャッシュコヒーレンシプロトコルに関与するように前記キャッシュを構成することと、
追加セルを前記セルラーコンピューティングシステムに追加すること（１１１０）と
を含み、
前記追加セルは、前記ＲＡＩＤメモリ機能を実施することに関連したデータ項目を記憶するように構成される
請求項７に記載の方法。
【請求項９】
前記キャッシュの読み出しオペレーションは、
ストライピング技法、ミラーリング技法およびパリティ技法の１つ以上に従ってデータを読み出すこと
を含み、
前記キャッシュのキャストアウトオペレーションは、
前記ストライピング技法、前記ミラーリング技法および前記パリティ技法の１つ以上に従ってデータを書き込むこと
を含む
請求項８に記載の方法。
【請求項１０】
前記セルラーコンピューティングシステムに提供されるＲＡＩＤメモリ機能のレベルを決定すること（１０２０）と、
キャッシュの読み出しオペレーションを選択的に制御するように前記キャッシュを構成すること（１０３０）であって、それによって、前記決定されたＲＡＩＤメモリ機能のレベルを実施する、キャッシュの読み出しオペレーションを選択的に制御するように前記キャッシュを構成すること（１０３０）と、
キャッシュのキャストアウトオペレーションを選択的に制御するように前記キャッシュを構成すること（１０４０）であって、それによって、前記決定されたＲＡＩＤメモリ機能のレベルを実施する、キャッシュのキャストアウトオペレーションを選択的に制御するように前記キャッシュを構成すること（１０４０）と
を含む請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部ＲＡＩＤ対応キャッシュに関する。
【背景技術】
【０００２】
コンピューティングシステム（たとえば、サーバ）の中には、サーバをシャットダウンすることなく、または、場合によってはサーバで実行されているソフトウェアを妨害することさえなく、故障したメモリの交換を可能にできるものがある。
これらのサーバは、ＲＡＩＤメモリを使用して、動的な交換を容易にしている場合がある。
しかしながら、ＲＡＩＤメモリを実施するために、これらのサーバは、たとえば、ＤＩＭＭ（デュアルインラインメモリモジュール）のホットスワップを可能にする複数のＤＩＭＭバスの全体にわたってメモリ要求を分散させる高機能なメモリコントローラを必要とする場合がある。
ＲＡＩＤは、本来、独立ディスク冗長アレイを指すが、メモリに適用された場合、時に、独立ＤＩＭＭ冗長アレイを指すことがある。
しかしながら、ＲＡＩＤという用語の使用は、増設のＤＩＭＭおよび／または特別なＤＩＭＭを実際に使用するシステムに限定されるものではなく、より一般的には、ミラーリング、ストライピング、パリティデータおよび／またはＥＣＣ（エラーチェックおよび訂正）データの保持等を通じて実施される冗長且つ／または回復可能なメモリを有するシステムを指す。
【０００３】
ホットスワップ可能なＤＩＭＭを使用するシステムは、たとえば、メモリチップとコントローラとの間の近接性要件（proximity requirements）、スワップ可能メモリチップの物理アクセス性要件等に関する物理レイアウト問題および設計問題を経験することがある。
これらの要件は、これらのシステムを複雑にする。
したがって、ＤＩＭＭにホットスワップ可能なメカニズムを提供することは、困難であり、且つ／または、費用を要する場合がある。
【０００４】
さらに、このタイプのＤＩＭＭのホットスワップを使用するシステムは、コピー、再マッピング、再インターリーブ等のようなメモリオペレーションを実施するためにオペレーティングシステムの協力を必要とする場合がある。
これに加えて、これらのタイプのシステムは、異なるプロトコルを使用して、異なるコンポーネントをホットスワップする場合がある。
【発明の開示】
【課題を解決するための手段】
【０００５】
この明細書に援用されてこの明細書の一部を構成する添付図面は、この発明のさまざまな態様のさまざまなシステム例、方法例、および他の実施の形態の例を示している。
これらの図面において示された要素の境界（たとえば、ボックス、数群のボックス、または他の形状）は境界の一例を表すことが理解されよう。
当業者には、１つの要素を複数の要素として設計することもできるし、複数の要素を１つの要素として設計することもできることが理解されよう。
別の要素の内部コンポーネントとして示された或る要素は、外部コンポーネントとして実施することができ、また、その逆も同様である。
さらに、要素は一律の縮尺で描かれていない場合がある。
【発明を実施するための最良の形態】
【０００６】
セルラーアーキテクチャを使用して実施されたサーバシステムのようなコンピューティングシステムは、セルボードのようなホットスワップ可能なコンポーネントで構成することができる。
本明細書で説明するシステム例および方法例は、専用メモリチップおよび／または専用メモリコントローラを必要とすることなく、ＲＡＩＤメモリ機能を有するこれらのマルチセルシステムを構成することを容易にする。
その結果として、これは、オペレーティングシステムのサポートも協力も必要とすることなく、マルチセルシステムのメモリの動作中の交換（in-operation replacement）を容易にする。
したがって、セルラーサーバの異なるコンピュータについて、単一の統一的なホットスワップ原理を実施することができる。
【０００７】
システム例および方法例は、ＲＡＩＤメモリが確立されるように、キャッシュ（複数可）を使用して、セルラーシステムのＣＰＵ（複数可）および／またはＩ／Ｏコンポーネントが見ることができるアドレス空間をそのシステムのグローバルアドレス空間にマッピングすることに関係する。
いくつかのシステム例は、たとえば、ストライピングデータ、ミラーリングデータ、および／またはパリティデータを記憶することによって、さまざまなＲＡＩＤメモリ構成の実施を容易にする追加セル（複数可）を含むことができる。
別の例では、このマッピングキャッシュは、プロセッサの外部に追加されたキャッシュとすることもできるし、セルに関連した既存のキャッシュを再構成することによって実施することもできる。
いくつかのシステム例では、多くのキャッシュが、マッピングされたメモリイメージを共有することができる。
このように、これらのシステム例のＲＡＩＤ対応キャッシュ（複数可）は、従来のＲＡＩＤメモリシステム、ディスクコントローラ等と異なり、メモリコヒーレンシに関与する。
【０００８】
本明細書で説明するＲＡＩＤメモリレベルは、冗長且つ／または回復可能なメモリを提供することに関係する。
したがって、ＲＡＩＤメモリレベルは、ＲＡＩＤ諮問委員会（ＲＡＢ）によって提供されるＲＡＩＤの解説に対応することができる。
たとえば、ＲＡＩＤ０は、冗長性を有しないストライピング技法を指すことができる。
ＲＡＩＤ１は、ミラーリング技法を指すことができる。
ＲＡＩＤ２は、ハミング符号のＥＣＣ技法を用いたビットレベルのストライピングを指すことができる。
ＲＡＩＤ３は、専用パリティ技法を用いたバイトレベルのストライピングを指すことができる。
ＲＡＩＤ４は、専用パリティ技法を用いたブロックレベルのストライピングを指すことができる。
ＲＡＩＤ５は、分散パリティを用いたブロックレベルのストライピングを指すことができる。
ＲＡＩＤ６は、分散パリティを用いたブロックレベルのストライピングを指すことができる。
ＲＡＩＤ７は、専用パリティを用いた非同期のキャッシュされたストライピングを指すことができる。
これらのＲＡＩＤレベルの例は、例示として提供され、他の冗長／回復可能メモリレベルも使用できることが理解されよう。
【０００９】
以下は、本明細書で使用される、選択された用語の定義を含む。
これらの定義は、用語の範囲内に入り且つ実施に使用できるコンポーネントのさまざまな例および／または形態を含む。
これらの例は、限定することを目的とするものではない。
用語の単数形および複数形の双方を定義の範囲内に含めることができる。
【００１０】
セルには、プロセッサ（複数可）、セル制御ロジック（たとえば、特定用途向け集積回路（ＡＳＩＣ））、メモリ、キャッシュ（複数可）、パワーブリック、データバス、周辺機器リンク（たとえば、ＰＣＩ）等が含まれ得る。
したがって、いくつかの例では、セルは、セルのプロセッサが実質的にはシステムのどのアドレス指定可能なメモリロケーション（たとえば、バイト）にもアクセスできる対称型マルチプロセシング（ＳＭＰ）マシンの内蔵型ユニットとすることができる。
【００１１】
この出願で使用される場合、用語「コンピュータコンポーネント」は、コンピュータに関係したエンティティを指し、ハードウェア、ファームウェア、ソフトウェア、それらの組み合わせ、または実行中のソフトウェアのいずれかを指す。
例えば、コンピュータコンポーネントは、プロセッサで実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、およびコンピュータとすることができるが、これらに限定されるものではない。
例示として、サーバで実行されるアプリケーションおよびそのサーバの双方をコンピュータコンポーネントとすることができる。
１つまたは２つ以上のコンピュータコンポーネントが、プロセスおよび／または実行スレッド内に存在することができ、コンピュータコンポーネントは、１つのコンピュータに局在することができ、且つ／または、２つ以上のコンピュータ間に分散することができる。
【００１２】
「コンピュータ可読媒体」は、本明細書で使用される場合、信号、命令、および／またはデータを直接または間接に提供することに関与する媒体を指す。
コンピュータ可読媒体は、不揮発性媒体、揮発性媒体、および伝送媒体を含む形態を取ることができるが、これらに限定されるものではない。
不揮発性媒体には、例えば、光ディスクまたは磁気ディスク等が含まれ得る。
揮発性媒体には、例えば、半導体メモリ、ダイナミックメモリ等が含まれ得る。
伝送媒体には、同軸ケーブル、銅線、光ファイバケーブル等が含まれ得る。
また、伝送媒体は、電波および赤外線のデータ通信中に生成される放射のような電磁放射の形態を取ることもできるし、１つまたは２つ以上の信号群の形態を取ることもできる。
コンピュータ可読媒体の一般的な形態には、フロッピーディスク（登録商標）、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の光媒体、パンチカード、紙テープ、孔のパターンを有する他の物理媒体、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、または他のメモリチップもしくはメモリカード、メモリスティック、搬送波／パルス、および、コンピュータ、プロセッサ、または他の電子デバイスが読み出すことができる他の媒体が含まれるが、これらに限定されるものではない。
インターネットのようなネットワーク上で命令または他のソフトウェアを伝播するのに使用される信号は、「コンピュータ可読媒体」とみなすことができる。
【００１３】
「データストア」は、本明細書で使用される場合、データを記憶することができる物理エンティティおよび／または論理エンティティを指す。
データストアは、例えば、データベース、テーブル、ファイル、リスト、キュー、ヒープ、メモリ、レジスタ等とすることができる。
データストアは、１つの論理エンティティおよび／もしくは物理エンティティに存在することができ、且つ／または、２つ以上の論理エンティティおよび／もしくは物理エンティティ間に分散することができる。
【００１４】
「ロジック」には、本明細書で使用される場合、機能（複数可）または動作（複数可）を実行し、且つ／または、別のロジック、方法、および／もしくはシステムからの機能もしくは動作を引き起こすためのハードウェア、ファームウェア、ソフトウェア、および／もしくはそれぞれの組み合わせが含まれるが、これらに限定されるものではない。
例えば、所望の用途またはニーズに基づいて、ロジックには、ソフトウェア制御のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）のようなディスクリートロジック、アナログ回路、デジタル回路、プログラミングされたロジックデバイス、命令を収容したメモリデバイス等が含まれ得る。
ロジックは、１つまたは２つ以上のゲート、ゲートの組み合わせ、または他の回路コンポーネントを含むことができる。
また、ロジックは、全体をソフトウェアとして実施することもできる。
複数の論理ロジックを記述する場合、それら複数の論理ロジックを１つの物理ロジックに組み込むことが可能な場合がある。
同様に、単一の論理ロジックを記述する場合、その単一の論理ロジックを複数の物理ロジック間に分散させることが可能な場合もある。
【００１５】
「動作可能接続」またはエンティティを「動作可能に接続」する接続は、信号、物理通信、および／または論理通信を送信および／または受信できる接続である。
通常、動作可能接続には、物理インターフェース、電気インターフェース、および／またはデータインターフェースが含まれるが、動作可能接続には、動作可能制御を可能にするのに十分なこれらのタイプの接続または他のタイプの接続の異なる組み合わせが含まれ得ることに留意されたい。
例えば、直接、または、プロセッサ、オペレーティングシステム、ロジック、ソフトウェア、もしくは他のエンティティのような１つもしくは２つ以上の中間エンティティを通じて、互いに信号を通信できることによって、２つのエンティティを動作可能に接続することができる。
論理通信チャネルおよび／または物理通信チャネルを使用して、動作可能接続を作成することができる。
【００１６】
「信号」には、本明細書で使用される場合、１つもしくは２つ以上の電気信号もしくは光信号、アナログ信号もしくはデジタル信号、データ、１つもしくは２つ以上のコンピュータ命令もしくはプロセッサ命令、メッセージ、ビットもしくはビットストリーム、または、受信、送信、および／もしくは検出が可能な他の手段が含まれるが、これらに限定されるものではない。
【００１７】
「ソフトウェア」には、本明細書で使用される場合、読み出し、インタープリット、コンパイル、および／または実行が可能で、且つ、コンピュータ、プロセッサ、または他の電子デバイスに、機能、動作を実行させ、且つ／または所望の通り振る舞わせる１つまたは２つ以上のコンピュータ命令またはプロセッサ命令が含まれるが、これらに限定されるものではない。
命令は、動的にリンクされたライブラリからの個別のアプリケーションまたはコードを含んだルーチン、アルゴリズム、モジュール、メソッド、スレッド、および／またはプログラムのようなさまざまな形態で実施することができる。
また、ソフトウェアも、さまざまな実行可能な形態および／またはロード可能な形態で実施することができる。
このさまざまな実行可能な形態および／またはロード可能な形態には、スタンドアロンプログラム、関数コール（ローカルおよび／またはリモート）、サーブレット、アプレット、メモリに記憶された命令、オペレーティングシステムの一部、または他のタイプの実行可能命令が含まれるが、これらに限定されるものではない。
ソフトウェアの形態は、例えば、所望のアプリケーションの要件、所望のアプリケーションが実行される環境、および／または設計者／プログラマ等の要望に依存し得ることが当業者には理解されよう。
また、コンピュータ可読命令および／またはコンピュータ実行可能命令は、１つのロジックに配置することができ、且つ／または、２つ以上の通信ロジック、協働ロジック、および／または並列処理ロジック間に分散させることができ、したがって、連続形式、並列形式、超並列形式、および他の形式でロードでき、且つ／または、実行することができることが理解されよう。
【００１８】
本明細書で説明するシステム例および方法例のさまざまなコンポーネントを実施するのに適したソフトウェアには、Ｊａｖａ（登録商標）、Ｐａｓｃａｌ、Ｃ＃、Ｃ＋＋、Ｃ、ＣＧＩ、Ｐｅｒｌ、ＳＱＬ、ＡＰＩ、ＳＤＫ、アセンブリ、ファームウェア、マイクロコード、および／または他の言語およびツールのようなプログラミング言語並びにツールが含まれる。
ソフトウェアは、システム全体であろうとシステムのコンポーネントであろうと、製品として実施することができ、上記で定義したようなコンピュータ可読媒体の一部として保持または提供することができる。
ソフトウェアの別の形態には、ネットワークまたは他の通信媒体上でソフトウェアのプログラムコードを受信者へ送信する信号が含まれ得る。
したがって、一例では、コンピュータ可読媒体は、ウェブサーバからユーザへダウンロードされるとき、ソフトウェア／ファームウェアを表す信号の形態を有する。
別の例では、コンピュータ可読媒体は、ウェブサーバに保持されるとき、ソフトウェア／ファームウェアの形態を有する。
他の形態も使用することができる。
【００１９】
「ユーザ」には、本明細書で使用される場合、１人または２人以上の人、ソフトウェア、コンピュータもしくは他のデバイス、またはこれらの組み合わせが含まれるが、これらに限定されるものではない。
【００２０】
以下の詳細な説明のいくつかの部分は、メモリ内のデータビットに対するオペレーションのアルゴリズムおよびシンボル表現の観点で提示される。
これらのアルゴリズム的な説明および表現は、当業者が自身の作業の内容を他者に伝えるのに使用する手段である。
アルゴリズムは、ここでは、一般的に、結果を生成するオペレーションのシーケンスであると考えられる。
オペレーションは、物理量の物理的な操作を含むことができる。
必ずしもそうではないが、通例、物理量は、ロジック等における記憶、転送、結合、比較、およびそれ以外の操作を行うことができる電気信号または磁気信号の形態を取る。
【００２１】
主として一般的な慣例との理由から、これらの信号を、ビット、値、要素、シンボル、文字、用語、数字等と呼ぶことが時に便利であることが分かっている。
しかしながら、これらの用語および類似の用語は、適切な物理量に関連付けられることになり、これらの物理量に適用される単なる便利なラベルにすぎないことに留意すべきである。
特に別途指定のない限り、この説明全体を通じて、処理、計算、演算、決定、表示等のような用語は、コンピュータシステム、ロジック、プロセッサ、または物理（電子）量として表されたデータの操作および変換を行う類似の電子デバイス、の動作およびプロセスを指すことが理解される。
【００２２】
追加ＲＡＩＤ対応キャッシュを含まない一例のセル１００を図１に示す。
このセル１００は、４つのプロセッサ（１１０、１２０、１３０、１４０）を含む。
これらのプロセッサのそれぞれは、オンボードキャッシュ（１１２、１２２、１３２、１４２）に動作可能に接続されている。
単一のキャッシュがプロセッサ１１０、１２０、１３０、１４０のそれぞれについて示されているが、プロセッサ１１０、１２０、１３０、１４０は、複数のキャッシュを含むことができるということが理解されよう。
キャッシュは、プロセッサと同じ集積回路に配置された１次キャッシュとすることもできるし、プロセッサとは異なる集積回路に配置された２次キャッシュとすることもできる。
【００２３】
キャッシュは、メモリアクセスの空間的局所性および時間的局所性の利用を試みるものである。
空間的局所性は、或るメモリロケーションがアクセスされた場合、近接したメモリロケーションも比較的すぐにアクセスされる可能性が高いという観察された現象をいう。
時間的局所性は、或るデータ項目が一度参照された場合、そのデータ項目が比較的すぐに再び参照される可能性が高いという観察された現象をいう。
メモリシステムは、時間および資源を費してメモリ（たとえば、１６０）からデータ項目を取得する前に、そのデータ項目を得るためにキャッシュを最初に調べることができる。
そのデータ項目がキャッシュに見つかった場合、これはキャッシュヒットと呼ばれる。
データ項目がキャッシュに見つからない場合、これはキャッシュミスと呼ばれる。
上述したように、単一のキャッシュが示されているが、プロセッサは、キャッシュ階層に構成することができる１組のキャッシュに動作可能に接続することができる。
【００２４】
プロセッサ１１０、１２０、１３０、１４０は、セルコントローラ１５０を介してセル１００の他のコンポーネントに動作可能に接続することができる。
セルコントローラ１５０は、たとえば、とりわけ、セル１００を含むセルラーシステム全体を通じてキャッシュコヒーレンシを維持するようにタスクを課されたＡＳＩＣとすることができる。
したがって、セルコントローラ１５０は、キャッシュ１１２、１２２、１３２、および１４２のキャッシュコヒーレンシを維持することを担当することができる。
プロセッサ１１０、１２０、１３０、および１４０を動作可能に接続することができるコンポーネントには、メモリ１６０（たとえば、１６ＧＢのＳＤＲＡＭ（同期ダイナミックＲＡＭ（ランダムアクセスメモリ）））およびＩ／Ｏコントローラ１７０が含まれる。
プロセッサ１１０、１２０、１３０、および１４０は、Ｉ／Ｏコントローラ１７０を介してさまざまなデバイス（たとえば、ＰＣＩデバイス１７２、１７４、１７６、１７８）に動作可能に接続することができる。
同様に、バス１８０のようなパスを介して、セル１００を、相互接続１９０（たとえば、クロスバーメッシュ）を介し他のセルに接続することもできる。
セル１００のようなセルは、セルラーアーキテクチャに構成することができる。
【００２５】
一例として、図２は、追加ＲＡＩＤ対応キャッシュを含まないセルを含む一例のセルラーアーキテクチャ２００を示している。
このセルラーアーキテクチャ２００は、いくつかのセルを含むことができる。
たとえば、セル２１０、および２２０〜２３０は、相互接続２４０によって接続することができ、したがって、セルラーアーキテクチャ２００に構成することができる。
セルラーアーキテクチャ２００のセルは、メモリを含むことができる。
したがって、セルラーアーキテクチャ２００の全物理アドレス空間は、１組のセルの間で分散させることができる。
セルラーアーキテクチャ２００は、仮想メモリで構成することができる。
したがって、セルラーアーキテクチャ２００で実行されるアプリケーションによってアドレス指定可能な論理メモリの総量は、セルラーアーキテクチャ２００において利用可能な物理メモリの総量を超える場合がある。
【００２６】
図２にセル２２０を詳細に示す。
セル２２０は、図１に関して説明したセルのように、４つのＣＰＵ、メモリ、４つのキャッシュ、セルコントローラ、および他のコンポーネントを含む。
いくつかの例では、セル２２０のプロセッサが、セルラーアーキテクチャ２００で実施されたあらゆるメモリロケーションをアドレス指定するように構成される場合、セルラーアーキテクチャ２００は、キャッシュコヒーレントな不均等メモリアクセス（ｃｃＮＵＭＡ（cache coherent non-uniform memory access））システムの一例となる。
セルラーアーキテクチャ２００のセル間でメモリを分散させることができるので、セル２２０のメモリは、セルラーアーキテクチャ２００、したがってセル２２０のＣＰＵ（複数可）、に利用可能な全アドレス空間の一部のみを記憶することができる。
セル２２０のプロセッサが、キャッシュミスを経験した場合、セル２２０のセルコントローラは、セル２２０のメモリロケーションにアクセスすることもできるし、別のセルが、そのメモリが位置する場所であるときは、その別のセルのメモリロケーションにアクセスすることもできる。
所望のメモリロケーションにアクセスすることに関連したメモリ要求（複数可）は、相互接続２４０を横切ることができる。
各セルの各ＣＰＵは、それ自身のキャッシュ（複数可）を有することができ、且つ、セルラーアーキテクチャ２００の全メモリアドレス空間は、セル間に分散させることができるので、セル２１０および２２０〜２３０並びにそれらのキャッシュ（複数可）は、キャッシュコヒーレンシ方式に関与することができる。
【００２７】
場合により、セルは、全物理アドレス空間の事前に定義された一定部分を記憶するように構成することができる。
しかしながら、アーキテクチャ２００のようなセルラーアーキテクチャは、インターリーブされたメモリを有する場合がある。
メモリは、たとえば、メモリホットスポットを回避して、セル間でメモリアクセスをより均一に分散させることが容易になるように、インターリーブすることができる。
インターリーブ方式が異なると、メモリの異なる部分が異なるセルに割り当てられる場合がある。
セルが、メモリインターリーブに関与する機能を喪失した場合（たとえば、セルがクラッシュした場合、セルコンポーネントがダウンした場合）、フォールトトレラントな高可用性システムは、関与しないセルでインターリーブされたメモリの部分なしで動作する事態に直面する場合があり、その後、そのセルが関与に復帰すると、メモリを再インターリーブする事態に直面する場合がある。
メモリを再インターリーブすることは、論理的にも計算上も、通常はオペレーティングシステムのサポートおよび協力を必要とする難しいタスクである。
これに加えて、これらの従来のシステムにおけるキャッシュコヒーレンシ方式は、再インターリーブを必要とすることによって複雑になるおそれがある。
【００２８】
図３は、追加ＲＡＩＤ対応キャッシュ３９９を含む一例のセル３００を示している。
この追加キャッシュ３９９は、セル３００がコンポーネントであるセルラーアーキテクチャのＲＡＩＤメモリを実施することを容易にするように構成される。
追加キャッシュ３９９、および／または、ＲＡＩＤキャッシュ３９９に関連したＲＡＩＤロジック（図示せず）は、プロセッサ３１０が見ることができるアドレス空間をマッピングして、セルラーアーキテクチャのさまざまなレベル（たとえば、ＲＡＩＤ０、ＲＡＩＤ５、…）のＲＡＩＤメモリを実施するように構成することができる。
いくつかの例では、本明細書で説明するＲＡＩＤキャッシュ３９９および他のＲＡＩＤキャッシュは、メモリと、キャッシュコントローラおよび／またはキャッシュロジックとの双方を含むことができる。
さらに、追加キャッシュ３９９は、セルラーアーキテクチャのメモリコヒーレンシ方式に関与することができる。
このコヒーレンシ方式は、キャッシュ３１２に関連して使用されるキャッシュコヒーレンシプロトコルに加えたものとすることができる。
追加キャッシュ３９９の構成を通じてＲＡＩＤメモリを実施することにより、たとえば、インターリーブされたメモリを有するセルラーアーキテクチャにおけるセルの故障を、そのセルが交換された時にメモリの再インターリーブを必要とすることなくハンドリングすることを容易にすることができる。
追加キャッシュ３９９を加えることを説明したが、いくつかの例では、キャッシュコヒーレンシに関与しつつ、ＲＡＩＤメモリの実施を容易にするように既存のキャッシュを再構成できることが理解されよう。
【００２９】
セル３００は、たとえば、ＣＰＵ３１０を含むことができる。
単一のＣＰＵ３１０が示されているが、セルは２つ以上のＣＰＵを有することができるということが理解されよう。
ＣＰＵ３１０は、キャッシュ３１２に関連付けることができる。
ＣＰＵ３１０は、たとえば、Ｉｔａｎｉｕｍ（登録商標）ファミリーのプロセッサとすることができる。
キャッシュ３１２は、ＣＰＵ３１０の内部やＣＰＵ３１０の外部等に存在することができる。
単一のキャッシュ３１２が示されているが、ＣＰＵ３１０は、ＣＰＵ３１０の内部および／または外部に存在する１つまたは２つ以上のキャッシュに関連付けることができること、並びに、キャッシュ階層に構成できることが理解されよう。
たとえば、Ｉｔａｎｉｕｍ（登録商標）プロセッサは、そのプロセッサの内部に存在する２つのキャッシュＬ１およびＬ２、並びに、そのプロセッサの外部に存在するがそのプロセッサに利用可能な第３のキャッシュＬ３を有することができる。
同様に、Ｉｔａｎｉｕｍ（登録商標）ＩＩプロセッサは、３つの内部キャッシュＬ１、Ｌ２、およびＬ３を有することができ、利用可能な第４の外部キャッシュＬ４を有することができる。
したがって、一例では、Ｉｔａｎｉｕｍ（登録商標）ＩＩに基づくアーキテクチャにおける外部のＬ４キャッシュは、外部キャッシュに基づくメモリＲＡＩＤ化（RAIDing）を実施するように構成される候補とすることができる。
【００３０】
通常、ＣＰＵ３１０は、単一のキャッシュライン単位でキャッシュ３１２と相互作用する。
たとえば、キャッシュラインは３２バイト長とすることができる。
キャッシュミスが発生した場合、ＣＰＵ３１０は、ＲＡＩＤキャッシュ３９９を調べることができる。
キャッシュミスがＲＡＩＤキャッシュ３９９で発生した場合、セルコントローラ３５０は、メモリ３６０、または、セルラーアーキテクチャの他のメモリで所望のデータ項目を探すことができる。
ＣＰＵ３１０は、単一のデータ項目を要求して、単一のキャッシュラインを受け取ることができるが、追加キャッシュ３９９は、いくつかの例では、スーパーラインサイズ単位で、メモリ３６０およびセルラーアーキテクチャの他のメモリと相互作用するように構成することができる。
たとえば、追加キャッシュ３９９は、単一のキャッシュラインを要求するのではなく、２つ、４つ、８つ等のキャッシュラインのデータを要求することができる。
セルラーアーキテクチャでは、追加キャッシュ３９９は、セル３００のメモリ３６０、および、セルラーアーキテクチャの他のセルに配置された他のメモリと相互作用できることが理解されよう。
これらの相互作用は、バス３８０とクロスバーメッシュ３９０のような相互接続とを介して他のセルへ通信することができる。
このように、追加キャッシュ３９９は、メモリ３６０およびセルラーアーキテクチャの他のメモリで利用可能なアドレス空間をマッピングして、セル３００およびセルラーアーキテクチャのＲＡＩＤメモリを実施するように構成することができ、キャッシュの読み出しおよび／またはキャストアウトで必要とされるときは、同様にしてセルラーアーキテクチャのＲＡＩＤメモリを実施するように構成された複数のセルに関連した複数のキャッシュラインのデータを読み出し且つ／または書き込むように構成することができる。
図３は、ＣＰＵ３１０がＲＡＩＤキャッシュ３９９と相互作用することを示しているが、他の例では、Ｉ／Ｏコントローラ３７０および／または他のＩ／Ｏ関係ロジックのような他のコンポーネントが、ＲＡＩＤキャッシュと相互作用できることが理解されよう。
図１２は、一例の構成を示している。
【００３１】
図４は、図３に関して説明したセルのような１組のセル４１０〜４２０を含む一例のセルラーアーキテクチャ４００を示している。
セル４１０〜４２０は、それぞれ追加ＲＡＩＤ対応キャッシュ（４１２、４２２）を含むことができ、且つ／または、ＲＡＩＤ対応動作を実行するようにタスクを再び課せられた既存のキャッシュを有することができる。
いくつかのシステム例では、セルラーアーキテクチャ４００は、追加セル（複数可）（たとえば、４３０）を含むことができる。
この追加セルは、たとえば、ＲＡＩＤ対応データを記憶することによって、セルラーアーキテクチャ４００のＲＡＩＤメモリの実施を容易にするように構成される。
セル４３０は、セル４１０〜４２０と同様に、追加ＲＡＩＤ対応キャッシュ４３２を含む。
一例では、セル４１０のメモリＭＯ〜セル４２０のメモリＭ１に記憶された情報をセル４３０のメモリＭＸに複製し、セル４１０〜４２０に記憶された、メモリのパリティ情報をセル４３０に記憶すること等を行うことができる。
したがって、セル４３０は、いくつかの例では、ＲＡＩＤ対応セルと呼ばれる場合がある。
一例では、追加ＲＡＩＤキャッシュ（たとえば、セル４３０のＲＡＩＤキャッシュ４３２）は、セルラーアーキテクチャ４００のＣＰＵの物理アドレス空間を、データを含むセルおよびパリティを含むセルの双方を含んだセルラーアーキテクチャのＲＡＩＤ化アドレス空間に可視化するように構成することができる。
別の例では、ＲＡＩＤキャッシュは、セルのＩ／Ｏコントローラに関連したマッピング要求を容易にするように構成することもできる。
たとえば、図１２を参照されたい。
【００３２】
従来のシステムのインターリーブの例では、メモリは、Ｍ個のセル間でインターリーブされている場合がある。
ＲＡＩＤ化の一例では、メモリは、Ｎ個のセル（Ｎ＞Ｍ）間でインターリーブすることができ、Ｎ個のセルの１つはパリティ情報を記憶する。
したがって、単一のセルがインターリーブに関与するのに利用できなくなった場合、残りのセルが、追加ＲＡＩＤ対応セルと共に、関与していない（たとえば、クラッシュした）セルのメモリに記憶されていた情報を再作成することを容易にし得る。
この再作成は、メモリを再インターリーブすることなく行うことができる。
また、再作成は、従来のＤＩＭＭ、従来のセルコントローラ、従来のバスを有するセルにおいて、オペレーティングシステムのサポートも介入もなく行うこともできる。
図４では、セル４３０は、ＲＡＩＤ対応セルの役割を実行することができる。
【００３３】
上述したように、ＲＡＩＤメモリを実施するように構成された追加キャッシュ（複数可）は、キャッシュコヒーレンシに関与するように構成することができる。
このキャッシュコヒーレンシ情報は、ＲＡＩＤ対応キャッシュからのキャストアウト時にパリティを書き込む必要があるかどうかを選択的に決定するのに使用することができる。
したがって、システム例は、コヒーレンシの管理を受けるＣＰＵにローカルなキャッシュと、コヒーレンシの管理を受ける追加ＲＡＩＤ対応キャッシュとの双方で、上位コヒーレンシ（coherency above）および下位コヒーレンシ（coherency below）を示すことができる。
ディスクベースのＲＡＩＤ対応キャッシュは、明らかに、コヒーレンシ情報に依拠せず、したがって、本明細書で説明するシステム例のようなキャッシュコヒーレンシの複数のレベルを示さない。
【００３４】
図５は、２つのＣＰＵ（５１０および５２０）で構成された一例のセル５００を示している。
各ＣＰＵは、ローカルキャッシュ（複数可）（それぞれ５１２および５２２）を有する。
また、この一例のセル５００は、ＲＡＩＤキャッシュ５９９も含む。
このＲＡＩＤキャッシュ５９９は、セル５００を含むセルラーアーキテクチャのＲＡＩＤメモリを実施することを容易にするように構成される。
ＲＡＩＤキャッシュ５９９は、たとえば、ＣＰＵ５１０および５２０が見ることができるアドレス空間をマッピングしてＲＡＩＤメモリを実施することができる。
一例であるミラーリングＲＡＩＤの例では、メモリ５６０に書き込まれたデータを別のセルに複製することができる。
別の例であるＲＡＩＤ５の例では、メモリ５６０およびセルラーアーキテクチャの他のメモリへデータを書き込むことは、パリティ情報を、追加ＲＡＩＤ対応セル（複数可）、および／または、パリティ情報を選択的に記憶するように構成されたセルに選択的に書き込むことを含むことができる。
単一のＲＡＩＤキャッシュ５９９が示されているが、セル５００は１つまたは２つ以上のＲＡＩＤ対応キャッシュを有することができるということが理解されよう。
【００３５】
図６は、４つのＣＰＵ（６１０、６２０、６３０、６４０）で構成された一例のセル６００を示している。
各ＣＰＵは、ローカルキャッシュ（複数可）（６１２、６２２、６３２、６４２）を有する。
また、この一例のセル６００は、４つのＲＡＩＤキャッシュ（６９９Ａ、６９９Ｂ、６９９Ｃ、６９９Ｄ）も含む。
これら４つのＲＡＩＤキャッシュは、セル６００を含むセルラーアーキテクチャのＲＡＩＤメモリを実施することを容易にするように構成される。
ＲＡＩＤ対応キャッシュ６９９Ａ、６９９Ｂ、６９９Ｃ、および６９９Ｄは、たとえば、ＣＰＵ６１０〜６４０が見ることができるアドレス空間をマッピングして、そのアドレス空間用のＲＡＩＤメモリを実施することができる。
セル６００は、セルラーシステムのいくつかのセルの１つとすることができるので、セル６００のキャッシュ（たとえば、ＲＡＩＤ対応キャッシュ６９９、キャッシュ６１２）は、２つ以上のセルからのデータを含むことができるということが理解されよう。
したがって、異なる例では、ＲＡＩＤ対応キャッシュ６９９Ａからのデータがキャストアウトされると、そのキャストアウトされたデータを２つ以上のセルに書き込むことができる。
一例では、ＲＡＩＤ対応キャッシュ６９９Ａが一定のＲＡＩＤレベル（たとえば、ＲＡＩＤ５）を実施している場合、ＲＡＩＤキャッシュ６９９Ａを、異なるセルに異なるキャッシュラインを書き込むように構成することができる。
たとえば、ＲＡＩＤキャッシュ６９９Ａが、４つのキャッシュラインに等しいスーパーキャッシュラインを記憶する場合、これら４つのキャッシュラインのそれぞれを異なるセルに書き込むことができる。
これに加えて、キャッシュラインのデータに関連したパリティ情報を第５のセルに書き込むこともできる。
４つのキャッシュラインのスーパーキャッシュラインサイズ、４つのメモリセル、および第５のパリティセルを説明したが、他のスーパーキャッシュラインサイズ、他の個数のデータセル、および他の個数のＲＡＩＤ対応（たとえば、パリティ）セルも使用できることが理解されよう。
さらに、ＲＡＩＤキャッシュ６９９Ａを解説したが、他のＲＡＩＤキャッシュ６９９Ｂ〜６９９Ｄも、同様の動作を行うように構成できることが理解されよう。
【００３６】
図７は、相互接続７３０によって接続されたセル７１０および７２０で構成された一例のセルラーアーキテクチャ７００を示している。
２つのセルが示されているが、セルラーアーキテクチャ７００は、より多くの個数のセルを含むことができるということが理解されよう。
セル７１０および７２０は、ミラーリングを通じてＲＡＩＤメモリを実施するように構成されたＲＡＩＤ対応キャッシュを含むことができる。
したがって、アーキテクチャ７００では、セル７１０および７２０のＣＰＵが見ることができる全アドレス空間は、セル７１０および７２０の双方で利用可能なメモリロケーションを含むことができる。
いくつかの例では、セル７１０と７２０との間でメモリをインターリーブすることができる。
他の例では、メモリを、インターリーブではなくパーティショニングすることができる。
【００３７】
ミラーリングの例では、セル７１０および７２０のＲＡＩＤ対応キャッシュを、グローバルアドレス空間を２つに分割するように構成することができる。
その場合、グローバルアドレス空間のメモリの各ラインを、対にされたセルに複製することができる。
たとえば、セル７１０のメモリの各ラインをセル７２０に複製することができる。
この複製は、ＲＡＩＤ対応キャッシュ、および／または、ＲＡＩＤ対応キャッシュと共に動作するＲＡＩＤロジックによって実行することができる。
たとえば、ＲＡＩＤ対応キャッシュがメモリの或るラインをキャストアウトするとき、そのＲＡＩＤ対応キャッシュは、そのラインをセル７１０および７２０の双方に書き込むことができる。
したがって、セル７２０がダウンした場合、セル７２０のメモリに記憶された情報がセル７１０に複製されているので、システム７００は、引き続き動作することができる。
いくつかの例では、システム７００のハードウェアは、この継続されたオペレーションが、オペレーティングシステムの協力も管理も必要とせず、オペレーティングシステムに気付かれる必要さえもないように構成することができる。
セル７２０の交換セルが提供された時、セル７１０に記憶された情報は、交換セルのメモリを再作成するのに使用することができる。
この場合も、オペレーティングシステムのサポートは必要とされない場合がある。
【００３８】
システム７００は、キャッシュコヒーレンシシステムを有することができる。
したがって、システム７００のＲＡＩＤ対応キャッシュは、このキャッシュコヒーレンシシステムに関与することができる。
キャッシュコヒーレンシシステムは、たとえば、ディレクトリに基づくシステム、ＭＥＳＩシステム（変更、排他、共有、無効）等とすることができる。
【００３９】
いくつかの例では、ミラーリングがＲＡＩＤ対応キャッシュによって実施されるアーキテクチャ７００のようなセルラーアーキテクチャは、３つ以上のセルを含むことができる。
その場合、アーキテクチャ７００のセルは対にすることができ、対にされたセルのＲＡＩＤ対応キャッシュは、対にされたセルによって実施されるアドレス空間を分割することができる。
その場合、メモリのラインがＲＡＩＤ対応キャッシュからキャストアウトされた場合、そのラインは、少なくとも２つのロケーションに書き込まれることになる。
【００４０】
図８は、相互接続８６０によって接続されたセル８１０〜８５０で構成された一例のセルラーアーキテクチャ８００を示している。
一例では、アーキテクチャ８００は、専用パリティを用いたブロックレベルのストライピングを含むＲＡＩＤ方式を実施するように構成することができる。
したがって、セル８１０〜８４０は、インターリーブされたメモリを記憶することができる一方、セル８５０は、たとえば、インターリーブされたメモリに関連したパリティ情報を記憶する追加ＲＡＩＤ対応セルとすることができる。
したがって、セル８１０がダウンした場合、セル８２０〜８４０に記憶された情報は、「パリティ」セル８５０に記憶された情報と共に、セル８１０に記憶された情報を再作成するのに使用することができる。
ＲＡＩＤの例を実施する５つのセルが示されているが、異なる個数の追加セルを使用して、セルラーアーキテクチャの異なるＲＡＩＤレベルの実施を容易にできることが理解されよう。
いくつかの例では、セル８５０は、セル８１０〜８４０と物理的に実質同一のものとできることに留意されたい。
したがって、ＲＡＩＤメモリは、専用ハードウェアを追加することなく実施することができる。
【００４１】
図８に示す一例のセルラーアーキテクチャ８００において、セルのＲＡＩＤ対応キャッシュが、セル８１０〜８４０のプロセッサのキャッシュからの４つのキャッシュラインと等しいスーパーキャッシュラインを記憶するように構成されるものと仮定する。
セル８１０〜８４０のプロセッサのキャッシュにキャッシュミスがあった場合、そのプロセッサは、ＲＡＩＤ対応キャッシュからメモリの単一のラインを要求することができる。
したがって、ＣＰＵの観点から、ＲＡＩＤ対応キャッシュは、単一ラインプロトコルを実施することができる。
ＲＡＩＤ対応キャッシュにキャッシュミスがあった場合、ＲＡＩＤ対応キャッシュは、セル８１０〜８４０からそれぞれ１つの計４つのキャッシュラインを要求することができる。
したがって、相互接続の観点から、ＲＡＩＤ対応キャッシュは、マルチラインプロトコルを実施することができる。
これら４つのラインは、たとえば、ＣＰＵアドレス空間の連続したデータラインを表すことができる。
一方、メモリがインターリーブされている状態では、これら４つのラインは、４つの異なるセルから来ている場合がある。
したがって、ＲＡＩＤ対応キャッシュは、複数のセル全体にわたるキャッシュの完全性を維持することを容易にするキャッシュコヒーレンシプロトコルを実施することができる。
一例では、ＲＡＩＤ対応キャッシュのスーパーキャッシュラインをバックアップするデータラインおよびパリティラインが、同じセルに割り当てられないように保証されるので、喪失したセルのデータを他のセルから再現することができる。
【００４２】
図８に示す例では、ＲＡＩＤ対応キャッシュを、４つのデータラインをキャストアウトするように構成することができる。
変更された各ラインは、異なるセルのメモリに書き込まれる。
同様に、ＲＡＩＤ対応キャッシュは、その時に実施されているＲＡＩＤレベルおよびメモリマッピングに基づいて、異なるロケーションからのデータラインの部分を取得したように、キャッシュ読み出しを実行するよう構成することができる。
これに加えて、変更があった場合、パリティラインもパリティセルに書き込むことができる。
セル８５０をパリティセルとして説明してきたが、パリティセルは、論理的な名称とすることができ、異なるセルが、その時々においてパリティセルの役割を実行できることが理解されよう。
このように、ＲＡＩＤメモリの効果は、専用ハードウェアも、専用プロセッサも、専用バスも使用することなく達成することができる。
一例では、既存のセルにＲＡＩＤ対応キャッシュを追加導入することができる。
この例では、そのセルのプロセッサ（複数可）およびそのプロセッサ（複数可）で実行されるソフトウェアは、ＲＡＩＤ対応キャッシュが追加されたことに気付かないままでいる場合がある。
別の例では、ＲＡＩＤ対応キャッシュは、ユーザが制御可能なものとすることができ、したがって、ＲＡＩＤメカニズムを実施するか実施しないかのいずれかを選択的に制御することができる。
同様に、ＲＡＩＤ対応キャッシュは、ユーザ制御および／またはプログラム制御の下でその時々においてＲＡＩＤメモリの異なるレベルを実施するように構成することもできる。
この場合も、セルのプロセッサ（複数可）、セルコントローラ、セルで実行されるソフトウェア等は、変化するＲＡＩＤメモリの動作および／または構成に気付かない場合がある。
【００４３】
一例では、ＲＡＩＤ対応キャッシュは、（たとえばＣＰＵの）論理的にそれらの上位のキャッシュの内容を含めたものとすることができる。
ＲＡＩＤ対応キャッシュは、スーパーラインを記憶することができ、且つ、スーパーラインのキャッシュコヒーレンシ情報を記憶することができる。
このキャッシュコヒーレンシ情報は、通常のＲＡＩＤメカニズムの上に重ね合わせることができる。
したがって、一例では、ＭＥＳＩプロトコルのようなキャッシュコヒーレンシプロトコルを、セルラーアーキテクチャ全体にわたって使用することができる。
たとえば、一方式では、セルラーアーキテクチャのどの２つのキャッシュも、スーパーラインの異なるラインへの変更されたアクセスを行うように許可されない。
したがって、第１のキャッシュに動作可能に接続された第１のＣＰＵが、変更として、第２のキャッシュに存在する１つのラインを参照した場合、スーパーライン全体を第２のキャッシュおよびこの第２のキャッシュに動作可能に接続されたＣＰＵから呼び出す（recall）ことができる。
その後、ラインの所有権は、第１のキャッシュおよびあらゆる変更されたラインの内容に移行される。
他のコヒーレンシ方式も使用できることが理解されよう。
【００４４】
図９は、セルラーコンピューティングシステムで使用されるように構成された一例のセル９００を示している。
このセル９００は、このセルラーコンピューティングシステム用に実施されたアドレス空間を見ることができるプロセッサ９１０を含む。
このアドレス空間は、セルラーコンピューティングシステムのさまざまなセル間に分散されたメモリチップにおいて実施することができる。
したがって、セル９００は、プロセッサ９１０に動作可能に接続されたメモリ９３０を含むことができる。
このアドレス空間の少なくとも一部は、メモリ９３０にマッピングされる。
【００４５】
また、セル９００は、プロセッサ９１０に動作可能に接続された第１レベルのキャッシュ９２０も含むことができる。
この第１レベル（Ｌ１）のキャッシュ９２０は、たとえば、セルラーシステム全体を通じて分散された物理メモリから取り出されたデータを記憶することができる。
これは、メモリ９３０から取り出されたデータを含むことができる。
【００４６】
さらに、セル９００は、プロセッサ９１０に動作可能に接続されたＲＡＩＤキャッシュ９４０も含むことができる。
このＲＡＩＤキャッシュ９４０は、ＲＡＩＤメモリをサポートするアドレスマッピングに関与して、その読み出しおよび／または書き込みがＲＡＩＤメモリを実施するように制御されることにより、セルラーシステムのＲＡＩＤメモリ機能を提供することを容易にすることができる。
したがって、セル９００は、ＲＡＩＤキャッシュ９４０に動作可能に接続されたＲＡＩＤロジック９５０も含むことができる。
このＲＡＩＤロジック９５０は、セルラーコンピューティングシステムのＲＡＩＤメモリのレベルを実施するマッピングにおいて、セルラーシステムに利用可能なアドレス空間をマッピングするように構成することができる。
一例では、このマッピングは、プロセッサ９１０および第１レベルのキャッシュ９２０にトランスペアレントである。
ＲＡＩＤロジック９５０をＲＡＩＤキャッシュ９４０から分離して示しているが、いくつかの例では、ＲＡＩＤロジック９５０は、たとえば、キャッシュコントローラとすることができ、且つ、ＲＡＩＤキャッシュ９４０の一部とできることが理解されよう。
【００４７】
また、セル９００は、キャッシュコヒーレンシロジック９６０も含むことができる。
このキャッシュコヒーレンシロジック９６０は、ＲＡＩＤキャッシュ９４０に動作可能に接続され、且つ、ＲＡＩＤキャッシュ９４０のキャッシュコヒーレンシを維持するように構成される。
セル９００は、したがって、プロセッサ９１０の上（たとえば、Ｌ１キャッシュ９２０における）およびプロセッサ９１０の下（たとえば、ＲＡＩＤキャッシュ９４０における）の双方のキャッシュコヒーレンシを有することができる。
この場合も、キャッシュコヒーレンシロジック９６０をＲＡＩＤキャッシュ９４０から分離して示しているが、いくつかの例では、キャッシュコヒーレンシロジック９６０はＲＡＩＤキャッシュ９４０の一部とできることが理解されよう。
一例では、セル９００は、ＲＡＩＤキャッシュ９４０および／またはＲＡＩＤロジック９５０を動作可能に接続することができるＩ／Ｏコントローラ（図示せず）も含むことができる。
これに加えて、且つ／または、これに代えて、セル９００は、このＩ／Ｏコントローラと相互作用するように構成された第２のＲＡＩＤキャッシュ（図示せず）を含むこともできる。
【００４８】
方法例は、フロー図を参照することによってより良く理解することができる。
説明を簡単にするために、図示した方法論は、一連のブロックとして示して説明するが、いくつかのブロックは、示して説明するものとは異なる順序で、且つ／または、他のブロックと同時に実行することができるので、これらの方法論は、ブロックの順序によって限定されるものではないことが理解されよう。
その上、一例の方法論を実施するのに必要とされるブロックは、図示したすべてのブロックよりも少ない場合がある。
ブロックは結合することもできるし、複数のコンポーネントに分離することもできる。
さらに、追加の方法論および／または代替的な方法論は、図示しない追加のブロックを使用することもできる。
図面は、さまざまな動作が連続的に行われることを示しているが、さまざまな動作は、同時に、実質的に並列に、且つ／または、実質的に異なる時点で行うこともできることが理解されよう。
【００４９】
図１０および図１１は、ＲＡＩＤメモリ機能をセルラーコンピューティングシステムに提供することに関連した方法例を示している。
図示した要素は、ロジックにおいて実施することができる「処理ブロック」を示す。
一例では、これら処理ブロックは、応答、動作（複数可）の実行、状態の変更、および／または決定を、コンピュータ、プロセッサ、および／またはロジックデバイスに行わせる実行可能命令を表すことができる。
したがって、説明する方法論の複数の部分は、コンピュータ可読媒体によって提供されるプロセッサ実行可能命令および／またはオペレーションとして実施することができる。
別の例では、処理ブロックは、アナログ回路、デジタル信号プロセッサ回路、特定用途向け集積回路（ＡＳＩＣ）、または他のロジックデバイス等の機能的に等価な回路によって実行される機能および／または動作を表すことができる。
図１０および図１１の図は、説明した例の実施の態様を限定することを目的としたものではない。
そうではなく、これらの図は、当業者が回路の設計／製造、ソフトウェアの生成、またはハードウェアおよびソフトウェアの組み合わせの使用を行って、図示した処理を実行するのに使用できる機能的な情報を示している。
【００５０】
図１０は、セルラーコンピューティングシステムにＲＡＩＤメモリ機能を提供することに関連した方法１０００を示している。
この方法１０００は、１０１０において、セルラーコンピューティングシステムのアドレス空間マッピングを決定することを含むことができる。
このアドレス空間マッピングは、たとえば、ミラーリングのためのメモリパーティショニングの記述、パリティ情報を記録する場所の記述、セル全体にわたってメモリをどのようにストライピングするかの記述等を行うことによって、キャッシュに基づくメモリＲＡＩＤ化を容易にすることができる。
方法１０００は、１０２０において、セルラーコンピューティングシステムのセルのキャッシュにそのマッピングを提供することも含むことができる。
一例では、このキャッシュは、そのセルにおける他のあらゆるキャッシュを含めたものとすることができる。
たとえば、外部のＬ４キャッシュは、プロセッサに関連したＬ１キャッシュ〜Ｌ３キャッシュを含めたものとすることができる。
【００５１】
方法１０００は、１０３０において、キャッシュ読み出しオペレーションを選択的に制御するようにキャッシュを構成することも含むことができる。
キャッシュ読み出しオペレーションを選択的に制御することによって、ＲＡＩＤメモリ機能の一部（複数の部分）の実施を容易にすることができる。
メモリは、ＲＡＩＤメモリの実施を容易にするようにマッピングされているので、キャッシュ読み出しオペレーションは、アドレス空間マッピングに従って動作するように構成することができる。
たとえば、第１のＲＡＩＤ機能では、キャッシュ読み出しは第１の組のセルのメモリにタッチすることができる一方、第２のＲＡＩＤ機能では、キャッシュ読み出しは第２の組のセルのメモリにタッチすることができる。
これに加えて、キャッシュ読み出しは、たとえば、セルがダウンしたことから、マッピングされたメモリ空間の一部が動作不能である場合に、パリティ情報を取得することを考慮に入れることが必要な場合もある。
【００５２】
方法１０００は、１０４０において、キャッシュのキャストアウトオペレーションを選択的に制御して、マッピングに従いＲＡＩＤメモリ機能を少なくとも部分的に実施するようにキャッシュを構成することも含むことができる。
キャッシュのキャストアウトオペレーションを選択的に制御することによって、ＲＡＩＤメモリ機能の一部（複数の部分）の実施を容易にすることができる。
メモリは、ＲＡＩＤメモリの実施を容易にするようにマッピングされているので、キャストアウトオペレーションは、アドレス空間マッピングに従って動作するように構成することができる。
たとえば、第１のＲＡＩＤ機能では、キャストアウトオペレーションは第１の組のセルに対してメモリ書き込みを行うことができる一方、第２のＲＡＩＤ機能では、キャストアウトオペレーションは第２の組のセルに対してメモリ書き込みを行うことができる。
これに加えて、キャストアウトオペレーションは、パリティ情報を書き込むことを考慮に入れることが必要な場合がある。
いくつかの例では、キャッシュの読み出しオペレーションおよび／またはキャストアウトオペレーションは、ストライピング技法、ミラーリング技法、パリティ技法等に従ったデータの読み出しおよび／またはデータの書き込みを含むことができる。
ここで、これらの技法はＲＡＩＤメモリ機能に関連付けられたものである。
【００５３】
方法１０００は、図示していないが、セルラーコンピューティングシステムに関連したキャッシュコヒーレンシプロトコルに関与するようにキャッシュを構成することも含むことができる。
このキャッシュコヒーレンシプロトコルは、たとえば、ＭＥＳＩプロトコル、ディレクトリに基づくプロトコル等とすることができる。
【００５４】
図１０は、さまざまな動作が連続的に行われることを示しているが、図１０に示すさまざまな動作は、実質的に並列に行うこともできることが理解されよう。
例示として、第１のプロセスは、アドレス空間マッピングを決定することができる。
同様に、第２のプロセスは、ＲＡＩＤレベルおよびアドレス空間マッピングに従ってキャッシュにおける読み出しオペレーションを構成することができる一方、第３のプロセスは、ＲＡＩＤレベルおよびアドレス空間マッピングに従ってキャッシュのキャストアウトオペレーションを構成することができる。
３つのプロセスが説明されるが、より多くの個数のプロセスおよび／またはより少ない個数のプロセスを使用することもでき、軽量プロセス、標準プロセス、スレッド、および他の手法も使用できることが理解されよう。
【００５５】
図１１は、ＲＡＩＤメモリ機能をセルラーコンピューティングシステムに提供することに関連した方法１１００を示している。
この方法１１００は、図１０の動作１０１０〜１０４０と同様の動作１１３０〜１１６０を含む。
これに加えて、方法１１００は、１１１０において、追加セル（複数可）をセルラーコンピューティングシステムに追加することも含むことができる。
このセルは、専用ハードウェアを含まなくてよく、セルラーシステムの他のセルと物理的に実質類似したものとすることができることに留意されたい。
この追加セルは、パリティ情報、ＥＣＣ情報、ミラーリングされたデータ、ストライピングされたデータ等のような、ＲＡＩＤメモリ機能を実施することに関連したデータ項目を記憶するように構成することができる。
【００５６】
方法１１００は、１１２０において、セルラーコンピューティングシステムに提供される、ＲＡＩＤメモリ機能のレベルを決定することも含むことができる。
たとえば、システムが実施するＲＡＩＤメモリレベルをユーザが提供すること、使用パターンを調べて、どのＲＡＩＤメモリレベルを確立するかを決定すること等を行うことができる。
したがって、キャッシュの読み出しオペレーションおよび／またはキャストアウトオペレーションを選択的に制御するようにキャッシュを構成することは、ＲＡＩＤメモリ機能の決定されたレベルを実施するようにキャッシュを構成することを含むことができる。
上述したように、異なるＲＡＩＤメモリ機能レベルは、ビットレベル、バイトレベル、および／またはブロックレベルにおいて、ストライピング技法、ミラーリング技法、パリティ技法等の異なる組み合わせを実行することを含むことができる。
【００５７】
一例では、方法論は、コンピュータ可読媒体に記憶されたプロセッサ実行可能命令および／またはオペレーションとして実施される。
したがって、一例では、コンピュータ可読媒体は、セルラーコンピューティングシステムのアドレス空間マッピングを決定して、キャッシュベースのメモリＲＡＩＤ化を容易にすることを含む方法を実行するように動作可能なプロセッサ実行可能命令を記憶することができる。
また、この方法は、このマッピングをセルラーコンピューティングシステムのセルのキャッシュに提供することも含むことができる。
ここで、このキャッシュは、そのセルにおける他のすべてのキャッシュを含めたものとすることができる。
この方法は、キャッシュの読み出しオペレーションおよび／またはキャストアウトオペレーションを選択的に制御して、アドレス空間マッピングに従いＲＡＩＤメモリ機能を少なくとも部分的に実施するようにキャッシュを構成することも含むことができる。
上記方法は、コンピュータ可読媒体に記憶されるものとして説明されているが、本明細書で説明した他の方法例も、コンピュータ可読媒体に記憶できることが理解されよう。
【００５８】
図１２は、追加ＲＡＩＤ対応キャッシュ１２１０を含む一例のセル１２００を示している。
この追加キャッシュ１２１０は、セル１２００がそのコンポーネントであるセルラーアーキテクチャのＲＡＩＤメモリを実施することを容易にするように構成することができる。
追加キャッシュ１２００、および／または、ＲＡＩＤキャッシュ１２００に関連したＲＡＩＤロジック（図示せず）は、Ｉ／Ｏコントローラ１２２０が見ることができるアドレス空間をマッピングしてこのセルラーアーキテクチャのさまざまなレベル（たとえば、ＲＡＩＤ０、ＲＡＩＤ５、…）のＲＡＩＤメモリを実施するように構成することができる。
いくつかの例では、本明細書で説明したＲＡＩＤキャッシュ１２１０および他のＲＡＩＤキャッシュは、メモリと、キャッシュコントローラおよび／またはキャッシュロジックとの双方を含むことができる。
【００５９】
セル１２００は、たとえば、Ｉ／Ｏコントローラ１２２０を含むことができる。
単一のＩ／Ｏコントローラ１２２０が示されているが、セルは、２つ以上のＩ／ＯコントローラおよびＩ／Ｏコンポーネントを有することができるということが理解されよう。
通常、Ｉ／Ｏコントローラ１２２０は、Ｉ／Ｏコントローラ１２２０とセルコントローラ１２３０との間にＲＡＩＤキャッシュ１２１０が配置されることなく、セルコントローラ１２３０と相互作用する。
【００６０】
セルラーアーキテクチャでは、追加キャッシュ１２１０が、セル１２００のメモリ１２４０、および、セルラーアーキテクチャの他のセルに配置された他のメモリと相互作用できることが理解されよう。
これらの相互作用の内容は、バス１２７０およびクロスバーメッシュ１２８０のような相互接続を介して他のセルへ通信することができる。
したがって、追加キャッシュ１２１０は、メモリ１２４０およびセルラーアーキテクチャの他のメモリにおいて利用可能なアドレス空間をマッピングして、セル１２００およびセルラーアーキテクチャのＲＡＩＤメモリを実施するように構成することができ、キャッシュの読み出しおよび／またはキャッシュのキャストアウトに関係する場合には、セルラーアーキテクチャのＲＡＩＤメモリを実施するように同様に構成された複数のセルに関連したデータの複数のキャッシュラインの読み出しおよび／または書き込みを行うように構成することができる。
【００６１】
一例では、図９に示すコンピュータコンポーネントおよび／または本明細書で説明した他のコンピュータコンポーネントは、セルラーコンピューティングシステムのＲＡＩＤメモリレベルを決定するための手段を提供することができる。
また、図９のコンピュータコンポーネントは、セルラーコンピューティングシステムに関連したアドレス空間をマッピングして、決定されたＲＡＩＤメモリレベルを提供することを容易にするための手段、並びに、キャッシュの読み出しオペレーションおよび／またはキャストアウトオペレーションがＲＡＩＤメモリレベルに従って実行されるように、セルラーコンピューティングシステムのセルにおけるキャッシュコントローラを制御するための手段も提供することができる。
さらに、図９に示すコンピュータコンポーネントは、キャッシュコントローラを制御してシステム全体にわたるキャッシュコヒーレンシプロトコルに関与するための手段も提供することができる。
【００６２】
システム例、方法例等を、例を説明することによって示し、これらの例をかなり詳細に説明してきたが、添付の特許請求の範囲をこのような詳細なものに制限することも、多少なりとも限定することも、出願人の意図ではない。
もちろん、本明細書で説明したシステム、方法等を説明するために、コンポーネントまたは方法論の考えられるあらゆる組み合わせを説明することは不可能である。
別の利点および変更は、当業者には直ちに明らかであろう。
したがって、この発明は、示して説明した特定の詳細、代表的な装置、および例示した例に限定されるものではない。
したがって、この出願は、添付した特許請求の範囲の範囲内に入る改変、変更、および変形を包含することを目的としている。
さらに、上記説明は、この発明の範囲を限定するように意図されていない。
そうではなく、この発明の範囲は、添付の特許請求の範囲およびその均等物によって規定されることになる。
【００６３】
用語「含む」は、発明を実施するための最良の形態または特許請求の範囲で使用される限りにおいて、用語「備える」が特許請求の範囲で慣習的な用語として使用された場合にその用語が解釈されるのと同様に、包含的であるように意図されている。
さらに、用語「または／もしくは」は、発明を実施するための最良の形態または特許請求の範囲で使用される限りにおいて（例えば、ＡまたはＢ）、「ＡもしくはＢまたは双方」を意味するように意図されている。
出願人が、「ＡまたはＢのみであって、双方ではない」ことを示すように意図している場合には、用語「ＡまたはＢのみであって、双方ではない」が使用されることになる。
したがって、本明細書における用語「または／もしくは」の使用は、包含的な使用であって、排他的な使用ではない。
これについては、Bryan A. Garner著の「A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995)」を参照されたい。
【図面の簡単な説明】
【００６４】
【図１】一例のセルを示す図である。
【図２】一例のセルラーアーキテクチャを示す図である。
【図３】ＲＡＩＤ対応キャッシュで構成された一例のセルを示す図である。
【図４】ＲＡＩＤメモリ構成を実施する一例のセルラーアーキテクチャを示す図である。
【図５】ＲＡＩＤ対応キャッシュで構成された一例のセルを示す図である。
【図６】ＲＡＩＤ対応キャッシュで構成された一例のセルを示す図である。
【図７】ミラーリングＲＡＩＤレベルを実施する一例のセルラーアーキテクチャを示す図である。
【図８】一例のＲＡＩＤレベルを実施する一例のセルラーアーキテクチャを示す図である。
【図９】セルラーシステムのＲＡＩＤメモリ機能を提供する際に使用される一例のセルを示す図である。
【図１０】セルラーシステムのＲＡＩＤメモリ機能を提供することに関連した一例の方法を示す図である。
【図１１】セルラーシステムのＲＡＩＤメモリ機能を提供することに関連した別の例の方法を示す図である。
【図１２】Ｉ／Ｏ（入出力）コンポーネントに関連した一例のＲＡＩＤ対応キャッシュを示す図である。
【符号の説明】
【００６５】
１１２，１２２，１３２，１４２・・・キャッシュ，
１５０・・・セルコントローラ，
１６０・・・メモリ，
１７０・・・Ｉ／Ｏコントローラ，
１９０・・・クロスバーメッシュ，
３１２・・・キャッシュ，
３５０・・・セルコントローラ，
３６０・・・メモリ，
３７０・・・Ｉ／Ｏコントローラ，
３９０・・・クロスバーメッシュ，
３９９・・・ＲＡＩＤキャッシュ，
４２２・・・ＲＡＩＤキャッシュ，
５１２，５２２・・・キャッシュ，
５５０・・・セルコントローラ，
５６０・・・メモリ，
５７０・・・Ｉ／Ｏコントローラ，
５９０・・・クロスバーメッシュ，
５９９・・・ＲＡＩＤキャッシュ，
６１２，６２２，６３２，６４２・・・キャッシュ，
６５０・・・セルコントローラ，
６６０・・・メモリ，
６７０・・・Ｉ／Ｏコントローラ，
６９０・・・クロスバーメッシュ，
６９９・・・ＲＡＩＤキャッシュ，
９１０・・・プロセッサ，
９２０・・・Ｌ１キャッシュ，
９３０・・・メモリ，
９４０・・・ＲＡＩＤキャッシュ，
９５０・・・ＲＡＩＤロジック，
９６０・・・キャッシュコヒーレンシロジック，
１２１０・・・ＲＡＩＤキャッシュ，
１２２０・・・Ｉ／Ｏコントローラ，
１２３０・・・セルコントローラ，
１２４０・・・メモリ，
１２８０・・・クロスバーメッシュ，
【図１】
2006252545.tif 000003
【図２】
2006252545.tif 000004
【図３】
2006252545.tif 000005
【図４】
2006252545.tif 000006
【図５】
2006252545.tif 000007
【図６】
2006252545.tif 000008
【図７】
2006252545.tif 000009
【図８】
2006252545.tif 000010
【図９】
2006252545.tif 000011
【図１０】
2006252545.tif 000012
【図１１】
2006252545.tif 000013
【図１２】
2006252545.tif 000014