(57)【要約】【課題】キャッシュエージェント間の通信帯域幅の低減【解決手段】複数のキャッシュエージェント(12, 20, 22)、該キャッシュエージェントに結合されたコンピューティングエンティティ(25)、及び該コンピューティングエンティティにアクセス可能なプログラマブルマスク(26)を含むシステム(10)。プログラマブルマスク(26)は、少なくとも１つのメモリアドレスに関し、該メモリアドレスに対するスヌープ要求を受信可能なキャッシュエージェントを指定する。マスクの指定に基づき、コンピューティングエンティティは、あるメモリアドレスに対するスヌープ要求を、マスクによって指定された、そのメモリアドレスに対するスヌープ要求を受信可能なキャッシュエージェントだけに送信する。【選択図】図１
2009032264.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャッシュエージェント(12, 20, 22)と、
前記キャッシュエージェントに結合されたコンピューティングエンティティ(25)と、
前記コンピューティングエンティティにアクセス可能なプログラマブルマスク(26)であって、少なくとも１つのメモリアドレスについて、メモリアドレスに関連するスヌープ要求を受け取ることが可能なキャッシュエージェントを示すプログラマブルマスク(26)と、
を含み、
前記マスクに基づき、前記コンピューティングエンティティが、前記メモリアドレスに関連するスヌープ要求を、前記マスクによって特定されたキャッシュエージェントへのみ送信するように構成されたシステム。
【請求項２】
前記マスクに基づき、前記コンピューティングエンティティは、少なくとも１つのキャッシュエージェントに対する前記スヌープ要求の送信を中止する、請求項１に記載のシステム。
【請求項３】
複数の仮想マシン、及び各仮想マシンに関連する個別のプログラマブルマスクをさらに含む、請求項１に記載のシステム。
【請求項４】
前記複数のキャッシュエージェントは、複数のプロセスを実行するように編成され、各プロセスについて個別のプログラマブルマスクを備える請求項１にきさいのシステム。
【請求項５】
前記コンピューティングエンティティは、前記キャッシュエージェントを使用して複数のオペレーティング環境(54)を生成し、前記コンピューティングエンティティは、前記プログラマブルマスクをプログラムする、請求項１に記載のシステム。
【請求項６】
各オペレーティング環境が少なくとも１つのキャッシュエージェントを含む複数のオペレーティング環境のうちのどれが、メモリロケーションにアクセス可能であるかを判定するステップ(102)と、
どのオペレーティング環境が前記メモリロケーションにアクセス可能を指定するように、第１のマスクをプログラミングするステップ(104)と、
前記第１のマスクによる指定にしたがって、スヌープ要求をキャッシュエージェントを送信するステップ(106)と
からなる方法(100)。
【請求項７】
前記第１のマスクに基づき、どのキャッシュエージェントが、前記メモリロケーションに関連するスヌープ要求を受け取ることができるかを判定するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記オペレーティング環境は、複数の仮想マシンを含み、前記方法はさらに、前記仮想マシンのそれぞれについて、マスクをプログラミングするステップをさらに含む、請求項６に記載の方法。
【請求項９】
前記オペレーティング環境は、実行可能プロセスを含み、前記方法はさらに、前記実行可能プロセスのそれぞれについて、マスクをプログラミングするステップをさらに含む、し請求項６に記載の方法。
【請求項１０】
仮想マシンコーディネータによって使用される第２のマスクをプログラミングするステップをさらに含み、前記第２のマスクにより、前記仮想マシンコーディネータは、本来ならば第１のマスクによって許可されないキャッシュエージェントにスヌープ要求を送信することが可能となる、請求項６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のキャッシュエージェントを含むコンピュータシステムに関し、特に、あるキャッシュエージェントが他のキャッシュエージェントにスヌープ要求を送信するときに、その宛先をアクセス可能なキャッシュメモリを有するキャッシュエージェントだけに制限するマスクを備えたコンピュータシステムに関する。
【背景技術】
【０００２】
多くのコンピュータシステムは、システム内の種々の場所に対してデータやコマンドを送受信することが可能な複数のエンティティ（たとえば、プロセッサ、入出力デバイス等）を含む。そのようなデータやコマンドの伝送にはそれぞれ、システムの空き帯域幅の一部が使用される。何か特別な条件がない限り、システムの規模を拡大し、エンティティの数を増やせば、システムの通信インフラの帯域幅に対する負担は増大する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の課題の一つは、システムの通信インフラの帯域幅に対する負担を軽減することにある。本発明の他の課題は、下記の説明から明らかになる。
【課題を解決するための手段】
【０００４】
本発明は一実施形態として、複数のキャッシュエージェント（１２、２０、２２）と、前記キャッシュエージェントに接続されたコンピューティングエンティティ（２５）と、少なくとも１つのメモリアドレスに対して該メモリアドレスに関連するスヌープ要求を受信することが可能なキャッシュエージェントを示す、前記コンピューティングエンティティからアクセス可能なプログラマブルマスク（２６）とを含むシステム（１０）であって、前記ンピューティングエンティティ（２５）が、前記メモリアドレスに関連するスヌープ要求を、該メモリアドレスに関連するスヌープ要求を受信することが可能なキャッシュエージェントとして前記マスクに基づいて特定されたキャッシュエージェントへのみ送信するように構成される。
【０００５】
本発明は他の実施形態として、各オペレーティング環境が少なくとも１つのキャッシュエージェントを含む複数のオペレーティング環境のうちのどのオペレーティング環境がメモリロケーションにアクセス可能であるかを判定するステップ（１０２）と、どのオペレーティング環境が前記メモリロケーションにアクセス可能であるかを指定する第１のマスクをプログラムするステップ（１０４）と、前記第１のマスクの指定に従ってキャッシュエージェントにスヌープ要求を送信するステップ（１０６）とを含む方法（１００）を提供する。
【発明を実施するための最良の形態】
【０００６】
表記と用語
下記の説明、及び添付の特許請求の範囲では、特定のシステムコンポーネントを指して、幾つかの用語が使用される。しかしながら、当業者には分かるように、コンピュータ会社は、１つのコンポーネントを種々の異なる名称で呼ぶ場合がある。本明細書は、名前は違う機能は同じコンポーネントを区別して記載することを意図していない。下記の説明、及び添付の特許請求の範囲において、「含む」、及び「有する」といった用語は、非制限的意味で使用される。したがって、それらの用語は「含むが、それらに限定はされない」という意味に解釈しなければならない。また、「結合」という用語は、間接的な電気接続、直接的な電気接続、光電気接続、及び無線電気接続のいずれを意味する場合もある。つまり、「第１の装置が第２の装置に結合される」と記載されている場合、その接続は、直接的な電気接続であっても、他の装置又は接続を介した間接的な電気接続であっても、光電気接続であっても、無線電気接続であってもよい。
【０００７】
定義として、本明細書において、「キャッシュエージェント」という用語は、キャッシュメモリを含む任意のロジックを指して使用される。キャッシュエージェントの例としては、キャッシュサブシステムを備えたプロセッサや、キャッシュサブシステムを備えた入出力装置などがある。
【０００８】
コンピュータシステムは、キャッシュメモリを備える場合がある。そのようなシステムは、場合によっては、各エンティティ（例えばプロセッサ）がそれぞれ独自のキャッシュメモリを内蔵したり、あるいは各エンティティが独自のキャッシュメモリにアクセス可能なものがある。そのため、データ項目によっては、２以上のエンティティのキャッシュメモリに存在するものがある。キャッシュを利用するメモリシステムでは、データのコヒーレンシを確保するために、コヒーレンシ技法を採用している。ある種のコヒーレンシ技法では、ターゲットデータ項目のロケーションを特定し、データのコヒーレンシを確保するために、ある１つのエンティティからシステム内の他のエンティティへ「スヌープ」要求をブロードキャストしなければならない。スヌープ要求、及びそれに関連する応答は、本来ならば他のタイプのメッセージに使用可能なシステムの帯域幅を使用する。
【０００９】
本発明の種々の実施形態によれば、ロジックは、システム内に複数存在する「キャッシュエージェント」のうちの、どれが特定のメモリアドレスにアクセスでき、どれが特定のメモリアドレスにアクセスできないかを示す「マスク」をプログラムする。もし、あるキャッシュエージェントがプログラム的に特定のメモリロケーションにアクセスできない場合、そのキャッシュエージェントのキャッシュメモリが、その特定のメモリアドレスに関連するデータを有することはない。したがって、その特定のキャッシュエージェントに対してスヌープ要求を送信する必要はない。マスクは、どのキャッシュエージェントが特定のメモリロケーションにアクセスできないかを判定するために使用され、システムにおけるスヌープ要求の数、及びそれに付随する応答の数を減らすメカニズムとして使用される。その結果、本来ならばスヌープ要求や応答に使用されていた帯域幅を、必要であれば、他のタイプのメッセージ（すなわち、データ、コマンド等）に使用することが可能となる。
【００１０】
マスクをプログラムする前記ロジックは、どのキャッシュエージェントが特定のメモリロケーションにアクセス可能であるかに関する判定に基づいて、マスクをプログラムする。たとえば、ハイパーバイザ（hypervisor）を実行するシステムは、各仮想マシンが１以上のキャッシュエージェントを含む複数の「仮想マシン」を生成する場合がある。ここで、仮想マシンとは、それ自体がアプリケーションを実行可能なゲストオペレーティングシステムである。第１の仮想マシンのキャッシュエージェントは、第２の仮想マシンのメモリにアクセスできない場合がある。その場合、第２の仮想マシンのキャッシュエージェントが、第１の仮想マシンのキャッシュエージェントのキャッシュをスヌープする必要はない。そのため、第２の仮想マシンで使用されるマスクは、第２の仮想マシンのキャッシュエージェントが第１の仮想マシンのキャッシュエージェントにスヌープ要求を送信することを防止するようにプログラムされる。
【００１１】
第２の例として、オペレーティングシステムは、幾つかのプロセスを生成し、当該オペレーティングシステム上で動作させている場合がある。ここで、「プロセス」とは、他のプロセスとは異なる独自のプログラムカウンタ、及び状態を有するコンピューティングコンテキストである。あるプロセスの実行に使用可能なキャッシュエージェントは、別のプロセスのメモリにアクセスできないことがあり、そのため、マスクの使用により、幾つかのプロセス間のスヌープ要求は、行われないようにしてもよい。
【００１２】
図１は、種々の実施形態によるシステム１０を示している。図示のように、システム１０は、複数のキャッシュエージェント１２、２０、２２を含む。図１の例には３つのキャッシュエージェントしか描かれていないが、種々の実施形態において、システムは、任意数（１以上）のキャッシュエージェントを含む。各キャッシュエージェントは、キャッシュサブシステム１６に結合されたロジック１４からなる。一部の実施形態において、ロジック１４はプロセッサからなる。キャッシュサブシステム１６は、キャッシュ機能を実施するために、キャッシュメモリ、キャッシュコントローラ、及びタグメモリのような種々のコンポーネントを含む。
【００１３】
システム１０は、キャッシュエージェント１２、２０、２２と同じ、又はそれらに類似したコンピューティングエンティティ２５をさらに含む。実施形態によっては、コンピューティングエンティティ２５は、コンピュータ、又はコンピュータ内のプロセッサからなる場合がある。
【００１４】
図１の例において、例えばコンピューティングエンティティ２５は、プログラムを実行した結果として特定の（ターゲット）メモリロケーションにアクセスしなければならない場合、マスク２６にアクセスする。マスク２６は、コンピューティングエンティティ２５の内部に置かれるか、又は他の方法でコンピューティングエンティティ２５がアクセスできるように配置される。マスク２６に基づき、コンピューティングエンティティ２５は、ターゲットメモリアドレスに対するスヌープ要求を、当該ターゲットメモリアドレスに対するスヌープ要求を受信可能なキャッシュエージェントだけに送信する。つまり、コンピューティングエンティティ２５は、ターゲットアドレスに対するスヌープ要求を、他のすべてのキャッシュエージェントに対して送信しなくて済む。
【００１５】
図２は、マスク２６の一実施形態を示している。マスクは、複数のビットからなる。それらのビットの幾つかに、特定のメモリアドレス（ＭＡ）が符号化される。その特定のメモリアドレスがあるため、マスク中の他のビットは、種々のキャッシュエージェントに関連する。一実施形態では、各キャッシュエージェントに対し、マスク中の１つのビットが割り当てられるが、各キャッシュエージェントに対し、マスク中の複数のビットを使用してもよい。また、実施形態によっては、マスク中の１つのビットが、２以上のキャッシュエージェントによって共用される場合もある。すなわち、マスク中の１以上のビットが、２以上のキャッシュエージェントに関連する場合がある。たとえば、複数のキャッシュエージェントに対し、マスク中の１つのビットが割り当てられる場合がある。マスク中のビットがセットされている場合（すなわち、「１」である場合）、そのキャッシュエージェントに対して、メモリアドレスに対するスヌープ要求を送信することができる。一方、ビットがセットされていない場合（すなわち、「０」である場合）、そのキャッシュエージェントに対してスヌープ要求を送信することはできない。他の実施形態として、マスクビットが論理０であることは、そのキャッシュエージェントにスヌープ要求を送信しなければならないことを意味し、マスクビットが論理１であることは、そのキャッシュエージェントにスヌープ要求を送信してはならないことを意味する場合がある。種々の実施形態において、マスク２６は複数のビット集合を含み、各ビット集合が、異なるメモリアドレス、又は異なるメモリアドレス範囲に関連する場合がある。マスク２６中のそれらのビット集合のそれぞれに、対応するスヌープ要求を受信可能な種々のキャッシュエージェントが符号化される。したがって、マスク２６によれば、各メモリアドレス、又は各アドレス範囲について、どのキャッシュエージェントにスヌープ要求を送信しなければならないか、及びどのキャッシュエージェントにスヌープ要求を送信してはならないかを指定することができる。
【００１６】
種々の実施形態において、キャッシュエージェント１２、２０、２２はそれぞれ、コンピューティングエンティティ２５のマスク２６にアクセスし、上述のようなマスクに基づいて選択された他のキャッシュエージェントにスヌープ要求を送信することができる。実施形態によっては、コンピューティングエンティティ２５は、マスク２６のコピーを各キャッシュエージェント１２、２０、２２に送信するか、あるいは少なくとも、マスクを要求するキャッシュエージェントに送信する場合がある。
【００１７】
コンピューティングエンティティ２５は、システム１０の動作に関する情報に基づいてマスク２６をプログラムする。例えば、特定の幾つかのプロセスが、特定の幾つかのキャッシュエージェント（全てのキャッシュエージェントではない）の特定の幾つかのメモリ範囲しか使用しない場合、コンピューティングエンティティ２５は、そのようなプロセスに関する情報を使用して、マスク２６をプログラムする場合がある。
【００１８】
図３は、１以上のオペレーティング環境５４を生成し、管理するコーディネータ７０（「ハイパーバイザ」とも呼ばれる）を含むシステム５０の一実施形態を示している。コーディネータ７０の機能は、図１のコンピューティングエンティティ２５によって実施される場合もある。一実施形態として、各オペレーティング環境５４は、「仮想マシン」を含む場合がある。他の実施形態として、各オペレーティング環境５４は、プロセスを含む場合がある。コーディネータ７０は、例えばオペレーティング環境５４によって使用される資源を割り当てることにより、オペレーティング環境５４を生成する。そのような資源の例には、メモリ、プロセッサ等がある。図３の実施形態において、各オペレーティング環境５４は、互いに結合され、且つマスクコントロールロジック（ＭＣＬ）５８に結合された１以上のキャッシュエージェント５６を含む。
【００１９】
コーディネータ７０は、各オペレーティング環境５４によって使用されるマスク７４を（たとえば、オペレーティング環境１つにつき１つのマスク７４を）プログラムする。各マスク７４は、他のマスク７４と同じものであってもよいし、異なるものであってもよい。したがって、各マスク７４は、所与のオペレーティング環境５４の動作に合わせて特別にプログラムされる。各オペレーティング環境５４のための個々のマスク７４には、特定のメモリアドレスに関連するスヌープ要求をそのオペレーティング環境５４のキャッシュエージェント５６のうちのどれに送信することが可能であるかが指定される。そして、所与のオペレーティング環境５４内の１つのキャッシュエージェント５６が、同じオペレーティング環境内の他のキャッシュエージェントにスヌープ要求を送信する場合、送信側のキャッシュエージェントのマスクコントロールロジック５８は、そのスヌープ要求を、マスクに従って１以上の他のキャッシュエージェントへ送信させる。
【００２０】
一実施形態において、コーディネータ７０は、所与のオペレーティング環境５４のためのマスク７４のコピーをそのオペレーティング環境５４に提供し、そのオペレーティング環境５４のマスクコントロールロジック５８のマスクメモリ６０に格納する場合がある。コーディネータ７０は、オペレーティング環境５４の生成と同時にマスクのコピーを提供してもよいし、オペレーティング環境５４の生成後に、コーディネータ、又はオペレーティング環境からの要求に応じてマスクのコピーを提供してもよい。
【００２１】
一実施形態において、コーディネータ７０は、すべてのオペレーティング環境にわたって、システム５０内のすべてのキャッシュエージェント５６にアクセスできるため、有利な場合がある。そのため、コーディネータ７０は、コーディネータ７０のマスク７２を、コーディネータ７０だけが独占的に使用できるようにプログラムする場合がある。少なくとも一つの実施形態において、マスク７２は、すべてのオペレーティング環境５４に含まれるキャッシュエージェント５６が全て、任意のメモリアドレスに関連するスヌープ要求を受信してよいことを指定する場合がある。他の実施形態として、コーディネータのマスク７２は、少なくとも同じキャッシュエージェント５６が、マスク７４のうちのいずれかにしたがってスヌープ要求を受信することを許可し、場合によっては、更に別のキャッシュエージェント、又は全てのキャッシュエージェントがスヌープ要求を受信することを許可する場合がある。マスク７２、７４は、図２を参照して上で説明したものと同様の仕方で実施することができる。
【００２２】
図４は、方法の一実施形態１００を示している。図示のように、方法１００は、どのオペレーティング環境５４が、あるメモリロケーションにアクセス可能であるかを判定するステップ（１０２）を含む。種々のオペレーティング環境５４はコーディネータ７０によって生成されるため、コーディネータ７０は、どのオペレーティング環境が特定のメモリロケーションにアクセスでき、どのオペレーティング環境ができないかを知っている。１０４に示すように、方法１００は、どのオペレーティング環境５４（複数の場合もあり）が複数のメモリロケーションのそれぞれにアクセスできるかを指定するためのマスクをプログラムするステップを含む。１０６に示すように、方法１００は、マスクの指定に従ってスヌープ要求をキャッシュエージェント５６に送信するステップをさらに含む。必要であれば、上記のコーディネータ７０のようなロジックを使用して、別のマスクをプログラムしてもよい。
【００２３】
図５は、キャッシュエージェント１２、２０、２２、５６、コンピューティングエンティティ２５、及びコーディネータ７０のいずれを実施するのにも使用可能なシステム８０の一実施形態を示している。図示のように、システム８０は、コンピュータ可読媒体（ＣＲＭ）８４に結合されたプロセッサ８３を含む。コンピュータ可読媒体８４に格納されるソフトウェアは、プロセッサ８３によってアクセス／実行され、キャッシュエージェント１２、２０、２２、５６、コンピューティングエンティティ２５、及びコーディネータ７０のうちのいずれかに関して本明細書に記載した種々の機能の一部、又は全てを実施する。種々の実施形態において、コンピュータ可読媒体８４は、揮発性メモリ（たとえばランダムアクセスメモリ）、不揮発性記憶装置（たとえばハードディスクドライブ、フラッシュメモリ、リードオンリメモリ、コンパクトディスクリードオンリメモリ（ＣＤ  ＲＯＭ）等）、又はそれらの組合せを含む。
【００２４】
上記の説明は、本発明の原理、及び種々の実施形態の例示を目的としている。上記開示を完全に理解すれば、当業者には、多数の変形、及び変更も明らかになるであろう。添付の特許請求の範囲は、そうした変形、及び変更も含むものとして解釈しなければならない。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態によるシステムを示す図である。
【図２】マスクの一実施形態を示す図である。
【図３】本発明の他の実施形態によるシステムを示す図である。
【図４】本発明の一実施形態による、マスクを使用してスヌープ要求を送信する方法を示す図である。
【図５】図１又は図３に示したキャッシュエージェント、コンピューティングエンティティ、及びコーディネータ等の一実施形態を示す図である。
【図１】
2009032264.tif 000003
【図２】
2009032264.tif 000004
【図３】
2009032264.tif 000005
【図４】
2009032264.tif 000006
【図５】
2009032264.tif 000007