(57)【特許請求の範囲】
【請求項１】
コヒーレントエージェントに接続されることが可能な複数のコヒーレントエージェントインターフェースと、
１つのターゲット（one target）に接続されることが可能な複数のターゲットチャネルと
を備えるコヒーレンシコントローラであって、
前記コヒーレンシコントローラが、選択基準（selection criteria）に基づいて、要求を前記１つのターゲットに送るために前記複数のターゲットチャネルのうちから選択することができ、ここにおいて、前記選択基準は、発信要求が来たインターフェース、または前記要求のアドレス、または前記要求を開始したコヒーレントエージェント、または前記要求のタイプ、または前記要求の優先順位、または前記要求を開始した前記コヒーレントエージェントによって渡されたサイドバンド情報を含む、
コヒーレンシコントローラ。
【請求項２】
前記複数のターゲットチャネルが、仮想チャネルである、請求項１に記載のコヒーレンシコントローラ。
【請求項３】
前記複数のターゲットチャネルが、物理的に分離している、請求項１に記載のコヒーレンシコントローラ。
【請求項４】
前記選択基準が、前記発信要求が来た前記インターフェースである、請求項１に記載のコヒーレンシコントローラ。
【請求項５】
前記選択基準が、前記要求のタイプである、請求項１に記載のコヒーレンシコントローラ。
【請求項６】
前記選択基準が、前記要求の優先順位である、請求項１に記載のコヒーレンシコントローラ。
【請求項７】
前記選択基準が、前記要求のアドレスである、請求項１に記載のコヒーレンシコントローラ。
【請求項８】
前記選択基準が、前記要求を開始した前記コヒーレントエージェントである、請求項１に記載のコヒーレンシコントローラ。
【請求項９】
前記選択基準が、開始エージェントによって渡された前記サイドバンド情報である、請求項１に記載のコヒーレンシコントローラ。
【請求項１０】
前記選択基準が、前記発信要求が来たインターフェースと、前記要求のアドレスと、前記要求を開始した前記コヒーレントエージェントと、前記要求のタイプと、前記要求の優先順位と、前記開始エージェントによって渡されたサイドバンド情報と、前記コヒーレンシコントローラへの信号とを含むセットから選択されたものの組み合わせである、請求項１に記載のコヒーレンシコントローラ。
【請求項１１】
少なくとも１つのエージェントインターフェースが、Ｉ／Ｏコヒーレントエージェントに接続することを可能にされる、請求項１に記載のコヒーレンシコントローラ。
【請求項１２】
少なくとも１つのエージェントインターフェースが、完全にコヒーレントなエージェントに接続することを可能にされる、請求項１に記載のコヒーレンシコントローラ。
【請求項１３】
前記完全にコヒーレントなエージェントが、マイクロプロセッサである、請求項１２に記載のコヒーレンシコントローラ。
【請求項１４】
少なくとも１つのエージェントのために要求される読み取りを、第１のターゲットチャネルに送り、少なくとも１つの他のエージェントのために要求される読み取りを、第２のターゲットチャネルに送るようにさらに構成される、請求項１に記載のコヒーレンシコントローラ。
【請求項１５】
第１のターゲットチャネルへの読み取りのための経路と、第２のターゲットチャネルへの読み取りのための経路とが、分離している、請求項１１に記載のコヒーレンシコントローラ。
【請求項１６】
１つのターゲットのコヒーレントエージェントアクセスのための方法であって、
コヒーレンシコントローラにおいて、前記１つのターゲットにアクセスする要求をコヒーレントエージェントから受信することと、
前記コヒーレンシコントローラにおいて、選択基準（selection criteria）に基づいて、前記コヒーレンシコントローラから前記１つのターゲットに前記要求を送るためのターゲットチャネルを複数のターゲットチャネルの中から選択することと、ここにおいて、前記選択基準は、前記コヒーレンシコントローラにおいて前記コヒーレントエージェントから前記要求が受信されたインターフェース、または前記要求のタイプ、または前記要求の優先順位、または前記要求のアドレス、または前記要求を受信した開始コヒーレントエージェントのアイデンティティ、または前記要求を受信した前記開始コヒーレントエージェントから受信されたサイドバンド情報を含む、
前記選択されたターゲットチャネル上で前記コヒーレンシコントローラから前記１つのターゲットに前記要求を送ることとを備える方法。
【請求項１７】
前記選択基準が、前記コヒーレンシコントローラにおいて前記コヒーレントエージェントから前記要求が受信されたインターフェースである、請求項１６に記載の方法。
【請求項１８】
前記選択基準が、前記要求のタイプである、請求項１６に記載の方法。
【請求項１９】
前記選択基準が、前記要求の優先順位である、請求項１６に記載の方法。
【請求項２０】
前記選択基準が、前記要求のアドレスである、請求項１６に記載の方法。
【請求項２１】
前記コヒーレンシコントローラにおいてコヒーレントエージェントから要求を受信することは、複数のコヒーレントエージェントのうちの開始コヒーレントエージェントから前記要求を受信することを備え、前記選択基準が、前記開始コヒーレントエージェントのアイデンティティである、請求項１６に記載の方法。
【請求項２２】
前記コヒーレンシコントローラにおいて、コヒーレントエージェントから要求を受信することは、開始コヒーレントエージェントから前記要求を受信することを備え、前記方法はさらに、前記コヒーレンシコントローラにおいて、前記開始コヒーレントエージェントからサイドバンド情報を受信することを備え、前記選択基準が、前記要求を受信した前記開始コヒーレントエージェントから受信された前記サイドバンド情報である、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  関連出願の相互参照
本出願は、発明者Ｌａｕｒｅｎｔ  ＭｏｌｌとＪｅａｎ−Ｊａｃｑｕｅｓ  ＬｅｃｌｅｒとによってＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴＳ  ＷＩＴＨ  ＣＡＣＨＥ−ＣＯＨＥＲＥＮＣＹというタイトルで２０１１年１０月２６日に出願された米国仮出願番号第６１／５５１，９２２号と、発明者Ｌａｕｒｅｎｔ  ＭｏｌｌとＪｅａｎ−  Ｊａｃｑｕｅｓ  ＬｅｃｌｅｒとによってＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴＳ  ＷＩＴＨ  ＣＡＣＨＥ−ＣＯＨＥＲＥＮＣＹというタイトルで２０１２年１０月２４日に出願された米国非仮出願番号第１３／６５９，８５０とから優先権と利益とを主張するものであり、これらの出願の各々の開示全体は、参照により本明細書に組み込まれる。
【０００２】
[0002]  本開示は、全体的に、半導体チップの分野に関し、より具体的には、キャッシュコヒーレントエージェントを有するシステムオンチップに関する。
【背景技術】
【０００３】
[0003]  キャッシュコヒーレンシは、分散共有メモリシステム内のデータの一貫性（consistency）を維持するために使用される。それぞれが通常は１つまたは複数のキャッシュを備えるいくつかのエージェントが、中央キャッシュコヒーレンシコントローラを介して互いに接続される。これは、エージェント間でデータの一貫性のあるビュー（view）を依然として提供しながら、エージェントが、キャッシュの性能の利点を利用することを可能にする。
【０００４】
[0004]  Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ  ｐｒｏｔｏｃｏｌ（ＦＳＢ）、Ｉｎｔｅｌ  Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）、ＡＲＭ（登録商標）ＡＸＩ  Ｃｏｈｅｒｅｎｃｙ  Ｅｘｔｅｎｓｉｏｎｓ（ＡＣＥ）、またはＯｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ（ＯＣＰ）ｖｅｒｓｉｏｎ３のような、いくつかのキャッシュコヒーレンシプロトコルが存在する。キャッシュコヒーレンシプロトコルは、通常、一定量のデータ（たとえば３２または６４ビット）を含む、典型的にはキャッシュラインと呼ばれるデータのセットに対するパーミッション（permission）を取得し、放棄することに基づく。典型的なパーミッションは、以下である。
【０００５】
[0005]  ・なし：キャッシュラインが、エージェント内になく、エージェントは、データを読み取るまたは書き込むためのパーミッションを持たない。
【０００６】
[0006]  ・読み取り可能：キャッシュラインが、エージェント内にあり、エージェントは、ローカルに記憶されたキャッシュラインの内容を読み取るパーミッションを有する。複数のエージェントが、キャッシュラインに対する読み取りパーミッションを同時に有することができる（すなわち、複数のリーダ）。
【０００７】
[0007]  ・読み取り可能および書き込み可能：キャッシュラインが、エージェント内にあり、エージェントは、キャッシュラインの内容を書き込む（および、典型的には読み取る）ためのパーミッションを有する。１つのエージェントのみが、キャッシュラインに対する書き込みパーミッションを有することができ、エージェントは、同時に書き込みパーミッションを有することができない。
【０００８】
[0008]  通常、すべてのキャッシュラインのためのバッキングストア（backing store）が存在する（たとえば、ＤＲＡＭ）。バッキングストアは、データが、キャッシュのどこにもない場合、記憶される場所である。任意の時点で、バッキングストア内のデータは、エージェント内にあり得るキャッシュラインの最新のコピーに対して最新ではない可能性がある。このため、エージェント内部のキャッシュラインは、しばしば、キャッシュラインがクリーン（clean）である（すなわち、バッキングストア内と同じ値を有する）か、ダーティ（dirty）である（すなわち、最新のバージョンであるように、ある時点で、バッキングストアに書き戻される必要がある）かの指示を含む。相互接続上のターゲットは、アドレスマップのグループのためのバッキングストアとして機能する。コヒーレント要求後、バッキングストアが問い合わされるまたは更新されなければならないと判定されると、読み取りまたは書き込みが、アドレスに基づいて、適切なターゲットに送られる。
【０００９】
[0009]  エージェント内のキャッシュラインのパーミッションと「ダーティネス（dirtiness）」とは、キャッシュラインの「状態（state）」と呼ばれる。コヒーレンシ状態の最も一般的なセットは、ＭＥＳＩ（変更−排他−共有−無効（Modified-Exclusive-Shared-Invalid））であり、共有は、読み取りパーミッション（および、クリーンであるキャッシュライン）に対応し、変更と排他の両方は、読み取り／書き込みパーミッションを与えるが、排他状態では、ラインは、クリーンであり、変更状態では、ラインは、ダーティであり、最終的には、書き戻されなければならない。この状態セットでは、共有キャッシュラインは、常にクリーンである。
【００１０】
[0010]  ＭＯＥＳＩ（変更−所有−排他−共有−無効（Modified-Owned-Exclusive-Shared-Invalid））のような、より複雑なバージョンが存在し、ＭＯＥＳＩでは、読み取りパーミッションを有するキャッシュラインは、ダーティであることが許可される。
【００１１】
[0011]  他のプロトコルは、別々の読み取りパーミッションと書き込みパーミッションとを有することができる。多くのキャッシュコヒーレンシ状態セットとプロトコルとが存在する。
【００１２】
[0012]  一般的な場合では、エージェントが、持っていないキャッシュラインに対するパーミッションを必要とする場合、パーミッションを取得するために、他のエージェントと直接、または、キャッシュコヒーレンシコントローラを介して相互作用しなければならない。最も簡単な「スヌープベース（snoop-based）」プロトコルでは、他のエージェントは、エージェントによって要求されるパーミッションが、他のエージェントによってすでに所有されているパーミッションと一致することを確実にするために、「スヌープ」されなければならない。たとえば、エージェントが読み取りパーミッションを要求し、他のエージェントが書き込みパーミッションを持たない場合、読み取りパーミッションは、付与されることができる。しかしながら、エージェントが、すでに書き込みパーミッションを有する場合、そのパーミッションは、開始側のエージェントに付与される前に、そのエージェントから最初に除去されなければならない。
【００１３】
[0013]  いくつかのシステムでは、エージェントは、バス上にスヌープ要求を直接出し、すべてのエージェント（または、少なくともすべての他のエージェント）は、スヌープ要求に応答する。他のシステムでは、エージェントは、コヒーレンシコントローラにパーミッション要求を出し、コヒーレンシコントローラは、今度は、他のエージェント（および、ことによるとエージェント自体）をスヌープすることになる。
【００１４】
[0014]  ディレクトリベースのプロトコルでは、エージェントによって取得されたパーミッションのディレクトリが維持され、スヌープは、パーミッションがエージェント内で変更する必要がある場合にのみ、送られる。
【００１５】
[0015]  エージェントに送られるスヌープ（snoop）の数を減らすために、スヌープフィルタが使用されてもよい。スヌープフィルタは、エージェントの内容の大まかなビューを維持し、エージェントがそれ自体のパーミッションを変更する必要がないことを知っている場合、エージェントにスヌープを送らない。
【００１６】
[0016]  データおよびパーミッションは、キャッシュコヒーレンシプロトコル内で相互作用するが、それらが相互作用する方法は、異なる。エージェントは、通常、パーミッションとデータの両方に対する要求を同時に出すが、常にではない。たとえば、読み取る目的のためにデータをそのキャッシュ内に配置することを望み、データもパーミッションもどちらも持たないエージェントは、パーミッションに対する要求とデータそれ自体に対する要求の両方を含む読み取り要求を出すことができる。しかしながら、すでにデータと読み取りパーミッションとを有するが、書き込みパーミッションを必要とするエージェントは、書き込みパーミッションに対する「アップグレード」要求を出すことができるが、データを必要としない。
【００１７】
[0017]  同様に、スヌープ要求への応答は、パーミッションの変更が生じたことの承認を含むことができるが、オプションでデータを含むこともできる。スヌープエージェントは、サービスの一環としてデータを送ることができる。代わりに、スヌープエージェントは、最終的にバッキングストアに書き戻されるために保持されなければならないダーティデータを送信することができる。
【００１８】
[0018]  エージェントは、データなしでパーミッションを保持することができる。たとえば、完全なキャッシュラインを書き込むことを望むエージェントは、それを使用しない（それを完全に上書きする）ことを知っているような書き込みパーミッションを有するデータを要求しなくてよい。いくつかのシステムでは、一部のデータを保持することが許可される（セクタ内に、バイトごとに．．．）。これは、データ転送を制限するのに有用であるが、キャッシュコヒーレンシプロトコルをより複雑にする。
【００１９】
[0019]  多くのキャッシュコヒーレンシプロトコルは、データがエージェントから離れるための２つの関連する方法を提供する。１つは、スヌープ応答経路を介して、データを応答としてスヌープに提供することである。他は、自発的書き込み経路（しばしば、書き戻し（write back）または排除経路（evict path）と呼ばれる）であり、自発的書き込み経路では、エージェントは、データをもう維持したくない場合、データを送り出すことができる。いくつかのプロトコルでは、スヌープ応答および書き戻し経路は、共有される。
【００２０】
[0020]  完全にコヒーレントなエージェントは、キャッシュラインのためのパーミッションを所有することと、別のエージェントからの要求によってトリガされる、それらのパーミッションのチェックと、ことによると変更とのために、スヌープ要求を受信することとの両方が可能である。最も一般的なタイプの完全コヒーレントエージェントは、コヒーレントキャッシュを有するマイクロプロセッサである。マイクロプロセッサは、読み取りと書き込みとを行う必要があるため、適切なパーミッションと、潜在的にデータとを取得し、それらをそれ自体のキャッシュ内に入れる。多くの現代のマイクロプロセッサは、内部に複数のレベルのキャッシュを有する。多くの現代のマイクロプロセッサは、複数のマイクロプロセッサコアを含み、マイクロプロセッサの各々は、それ自体のキャッシュと、しばしば、共有二次キャッシュとを有する。多くの他のタイプのエージェントは、ＤＳＰ、ＧＰＵ、および、キャッシュを備える様々なタイプのマルチメディアエージェントのような、完全にコヒーレントであってよい。
【００２１】
[0021]  対照的に、Ｉ／Ｏコヒーレント（一方向コヒーレントとも呼ばれる）エージェントは、コヒーレントキャッシュを使用しないが、それらは、完全にコヒーレントなエージェントに関して一貫性のあるデータのコピーに対して作用する必要がある。結果として、それらの読み取りおよび書き込み要求は、完全にコヒーレントなエージェントへのコヒーレンシアクション（スヌープ）をトリガする可能性がある。たいていの場合、これは、特別なブリッジまたは中央コヒーレンシコントローラのいずれかが、適切なコヒーレンシアクションを発行し、必要ならば、バッキングストアへの実際の読み取りまたは書き込みを順番付けることによって行われる。小さいブリッジの場合には、そのブリッジは、短い時間の間パーミッションを保持する完全にコヒーレントなエージェントとして機能することができる。中央コヒーレンシコントローラの場合には、読み取りおよび書き込みを追跡し、Ｉ／Ｏコヒーレントエージェントの代わりに、処理されているキャッシュラインに他のエージェントがアクセスするのを防止する。
【００２２】
技術水準
[0022]  キャッシュコヒーレンシコントローラは、所与のタイプおよびアドレスのすべての要求が、バッキングストアに到達するために、同じチャネルを常に経由するように、複数のコヒーレントエージェントからの要求トラフィックを、特定のバッキングストアへの１つのチャネル上にマージする。これは、２つの負の影響を有する。
【００２３】
[0023]  第１に、要求に対するサービスの質が、マージされたトラフィックに対して維持されることが容易ではない可能性がある。たとえば、あるエージェントが、最も低いレイテンシ（latency）を要求し、別のエージェントが、すべての帯域幅を使用することができる場合、最も低いレイテンシを第１のエージェントに提供することは、それらの要求トラフィックが一旦マージされると、困難であろう。これは、たとえば、ビデオおよびグラフィックスコントローラのようなエージェントからの高帯域トラフィックに直面した場合、マイクロプロセッサの読み取り要求に関する問題である。
【００２４】
[0024]  第２に、コヒーレンシコントローラは、一般的には、高帯域コヒーレントエージェントとそれらのターゲットとの間に直接配置されない。したがって、コヒーレンシコントローラを通過することを強制するコヒーレントエージェントとターゲットとの間のデータ転送は、オンチップの接続を実質的に長くする可能性がある。これは、遅延と電力消費とを追加し、不要な配線混雑（wire congestion）を引き起こす可能性がある。コヒーレンシ制御通信は、コヒーレンシコントローラと遠隔コヒーレントエージェントとの間で生じなければならないが、データは、コヒーレンシコントローラを通過することを強制される必要はない。
【００２５】
[0025]  したがって、必要とされるものは、コヒーレントエージェントからターゲットまでの経路に柔軟性を提供し、トラフィックが、所与のターゲットへの複数のチャネルのうちの１つを選択することを可能にする、キャッシュコヒーレンシコントローラである。さらに、コヒーレンシコントローラは、コヒーレンシコントローラを完全にバイパスすることによって、コヒーレントエージェントがターゲットへの直接のデータパスを有することを可能にする。
【発明の概要】
【００２６】
[0026]  コヒーレンシコントローラとターゲットとは、プロトコルを使用して通信するインターフェースを介して接続されたシステムの構成要素である。いくつかの一般的な業界標準インターフェースおよびプロトコルは、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＡＭＢＡ）、Ａｄｖａｎｃｅｄ  ｅｘｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ（ＡＸＩ）、Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ（ＯＣＰ）、およびＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ（ＰＣＩ）である。構成要素のインターフェースは、互いに直接接続されてよく、または、リンクもしくは相互接続を介して接続されてよい。チャネルは、フロー制御のユニークな手段によって識別されるインターフェースのサブセットである。異なるインターフェースプロトコルは、異なる数とタイプのチャネルを備える。たとえば、（ＡＸＩのような）いくつかのプロトコルは、読み取りと書き込みとのために異なる物理チャネルを使用し、（ＯＣＰのような）他のプロトコルは、読み取りと書き込みとのために同じチャネルを使用する。チャネルは、別々の物理的接続を使用してよく、または、通信のユニークなフローを多重化する物理的接続を共有してよい。チャネルは、アドレスの情報、書き込みデータ、読み取りデータ、書き込み応答、スヌープ要求、スヌープ応答、他の通信、または、情報のタイプの組合せを通信することができる。
【００２７】
[0027]  従来の集積回路で実施されるようなキャッシュコヒーレンシは、プロセッサと、それらのメインメモリと、他のエージェントとの間の密結合を必要とする。コヒーレンシコントローラは、所与のターゲットへのすべてのコヒーレントエージェントの要求がデータアクセスの単一のストリーム内にマージされる際に通過するファンネル（funnel）である。他のプロセッサのキャッシュのアクセスを必要とするプロセッサの要求に高速な応答を提供するために、コヒーレンシコントローラとすべてのプロセッサとを、互いに物理的に近くすることが重要である。半導体チップの二次元表面上で、そのような高い性能を提供するためのコヒーレンシシステムに関して、キャッシュ−コヒーレントプロセッサの直線領域は、互いに近くに配置されなければならない。５個以上の矩形を１点で接触させることは、困難であり、相応して、従来のキャッシュコヒーレントシステムを、４個のプロセッサを大きく超えて拡大させることは、困難である。
【００２８】
[0028]  本明細書で開示される発明は、コヒーレンシコントローラがファンネルである必要はないことを認識する。コヒーレンシコントローラは、同じタイプのトランザクションを所与のターゲットに送ることができる仮想的または物理的な複数のチャネルを有するルータであってよい。コヒーレントエージェントとターゲットとの間のデータ通信が、コヒーレンシコントローラによって制御されなければならない間、そのようなデータは、コヒーレンシコントローラを通過する必要はないことも認識される。コヒーレンシ制御とデータトランザクションとのための別々のオンチップのネットワークが、有利である。
【００２９】
[0029]  本明細書で開示される発明は、データコヒーレンシを提供する手段に向けられる。コヒーレンシコントローラは、要求をターゲットに送ることができる複数のチャネルを提供する。これは、異なるレイテンシとスループットの要件を有するコヒーレントエージェントに、改善されたサービスの品質を提供する。
【００３０】
[0030]  さらに、本明細書で開示される発明は、データ経路ネットワークと部分的に別である、コヒーレンシ制御情報（スヌープ）の通信のためのネットワークを提供する。いくつかのチャネルは、スヌープのみを搬送し、いくつかのチャネルは、データのみを搬送し、いくつかのチャネルは、スヌープとデータの両方を搬送する。データと制御の通信とのこの解きほぐし（untangling）は、チップの改善された物理的設計を提供する。それは、今度は、データ転送のためのより少ない論理遅延（logic delay）とより低い電力とを必要とする。
【図面の簡単な説明】
【００３１】
【図１】[0031]  従来技術による、コヒーレントエージェントと、ターゲットと、コヒーレンシコントローラとのシステムを示す図。
【図２】[0032]  本発明の一態様による、要求をターゲットに送ることができるコヒーレンシコントローラ内の複数のチャネルを有するシステムを示す図。
【図３】[0033]  本発明の一態様による、専用のエンドツーエンド要求経路を有するシステムを示す図。
【図４】[0034]  本発明の一態様による、別々のコヒーレンシ相互接続を有するシステムを示す図。
【図５】[0035]  従来技術による、ターゲットを有するマイクロプロセッサコアとＩ／Ｏエージェントとのコヒーレントシステムを示す図。
【図６】[0036]  本発明の一態様による、別々のデータチャネルとコヒーレンシ制御チャネルとを有するシステムを示す図。
【発明を実施するための形態】
【００３２】
[0037]  ここで図１を参照すると、キャッシュコヒーレントシステム１０では、少なくとも２個のコヒーレントエージェント１２と１３とが、メッセージを交換することによって、システム１０内で利用可能なデータのコヒーレントビューを維持する。これらのメッセージは、たとえば、どのエージェントも、データの一部の値を、それが書き込まれている間、使用しようとしていないことを確実にする。これは、エージェントが、内部メモリ内にデータをキャッシュすることを許可される場合、特に必要とされる。
【００３３】
[0038]  コヒーレントに維持されているデータは、通常、少なくとも１つのターゲット１４に記憶される。コヒーレント要求のターゲットは、典型的には、バッキングストア（backing store）として機能するＤＲＡＭまたはＳＲＡＭである。コヒーレンシプロトコルは、コヒーレントエージェント、バッキングストア、またはその両方に配置されてよい任意のデータの現在の値を追跡する。データの一部が、バッキングストア内で最新ではない場合、コヒーレンシプロトコルは、（特にしないように求められない限り）現在の値がある時点でバッキングストアに書き戻されることを確実にする。
【００３４】
[0039]  コヒーレントエージェント１２と１３との間の相互接続は、多くの形態をとることができる。多くの場合、エージェント１２と１３とは、図１に示すようなターゲットに接続されるコヒーレンシコントローラ１６（たとえば、ＡＲＭのＣａｃｈｅ  Ｃｏｈｅｒｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）に接続される。いくつかの他の場合、エージェント１２と１３とは、すべて、バスを介して接続され、ターゲットも、バス（たとえば、ＩｎｔｅｌのＦｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ）との接続を有する。
【００３５】
[0040]  レイテンシは、マイクロプロセッサコアにとって最も重要であるので、ほとんどのキャッシュコヒーレンシメカニズムは、マイクロプロセッサに対するレイテンシを低く保つために、かなり最適化され、典型的には、物理的にマイクロプロセッサコアの近くに配置される。完全なまたはＩ／Ｏコヒーレンシを必要とするが、より高いレイテンシをサポートすることができる他のエージェントは、遠くに配置されてよい。
【００３６】
[0041]  既存のキャッシュコヒーレンシプロトコルは、状態とデータの両方を処理するので、これらのさらなるエージェントは、物理的にマイクロプロセッサコアの近くに配置されるこのコヒーレンシコントローラ１６を通過するすべてのデータを有する必要がある。これは、エージェント１２と１３と、ターゲット１４との間のすべてのデータ交換が、コヒーレンシコントローラを経由し、典型的には、しばしば、マイクロプロセッサコアの近くに、配線混雑と、潜在的に性能ボトルネックとを引き起こし、それは、最も不経済で、解決することが困難である。これは、特に、コヒーレントエージェント１２と１３のいくつかがターゲット１４に近い場合、集積回路内の不必要な移動も引き起こす。この余計な移動は、集積回路の電力を増加させる可能性もある。加えて、コヒーレンシコントローラ１６は、必要なデータのすべてをサービスための内部帯域幅を持たず、性能ボトルネックを引き起こす可能性がある。最後に、いくつかの場合、コヒーレントエージェント１２と１３とのいくつかは、シャットダウンされる必要がある可能性があるが、コヒーレンシコントローラ１６は、ターゲット１４へのアクセスのユニークなポイントとして機能するように、そうではない可能性がある。
【００３７】
[0042]  図２は、本発明の一態様による改善されたシステムを示す。コヒーレントエージェント１２と１３とは、コヒーレンシコントローラ１６を介して、少なくとも１つのターゲット１４に接続される。コヒーレンシコントローラは、要求を同じターゲットまたはターゲットのセットに送ることができる少なくとも２つのチャネル２０と２２とを有する。いくつかの実施形態では、２つのチャネル２０と２２とは、２つの別々の物理チャネルである。他の実施形態では、それらは、単一の物理的接続の上に階層化された仮想チャネルである。少なくともいくつかの要求が、チャネル２０または２２のいずれかで送られてよく、コヒーレンシコントローラ１４は、いくつかのパラメータに基づいて、要求を送るためのチャネルを選択することができる。本発明のいくつかの態様によれば、選択は、単に、どのインターフェースから開始要求が来たのかに基づいて行われる。本発明のいくつかの態様によれば、選択は、開始エージェントのアイデンティティに基づく。本発明の他の態様によれば、選択は、要求のアドレスに基づく。本発明の他の態様によれば、選択は、要求のタイプ（たとえば、読み取り／書き込み）に基づく。本発明のさらに他の態様によれば、選択は、要求の優先順位（priority）に基づく。本発明のいくつかの態様によれば、選択は、開始エージェントによって渡されたサイドバンド情報（sideband information）に基づく。本発明のいくつかの態様によれば、選択は、構成信号またはレジスタに基づく。本発明のいくつかの態様によれば、選択は、開始要求が来たインターフェースと、開始エージェントと、要求のタイプと、要求の優先順位と、サイドバンド情報と、構成信号またはレジスタとの組合せに基づく。本発明の他の態様によれば、選択は、開始要求が来たインターフェースと、開始エージェントと、要求のタイプと、要求の優先順位と、サイドバンド情報と、構成信号またはレジスタとのうちの少なくとも１つと、要求のアドレスとの組合せに基づく。本発明のいくつかの態様によれば、１つまたは複数のエージェントのための読み取りは１つのチャネルへ送られ、そして、少なくも１つのほかのエージェントのための読み取りはほかのチャネルに送られる。
【００３８】
[0043]  本発明のいくつかの態様によれば、すべてのコヒーレントエージェント１２と１３とは、完全にコヒーレントである。本発明の他の態様によれば、コヒーレントエージェント１２と１３とのいくつかは、Ｉ／Ｏコヒーレントであり、他は、完全にコヒーレントである。
【００３９】
[0044]  本発明のいくつかの態様によれば、選択が、静的なパラメータ（たとえば、開始要求のインターフェース、または、コヒーレントエージェントインターフェース上の別々のチャネル上にある場合、読み取り対書き込み）に基づく場合、別々の経路が、エージェントインターフェースとターゲットチャネルとの間のコヒーレンシコントローラ１６内に設けられる。コヒーレンシは、エージェントインターフェースからターゲットチャネルまでの異なる経路上で移動する要求間で維持されなければならないが、これは、要求が単一のキューにマージされることを必要としない。この構成は、コヒーレントエージェントインターフェースとターゲットチャネルとの間の経路上の、そして、コヒーレントエージェントとターゲットとの間の延長による、独立したＱｏＳと帯域幅管理とを可能にする。
【００４０】
[0045]  本発明のいくつかの態様によれば、チャネル２０と２２とは、読み取りを搬送するだけであり、書き込みは、別々に搬送される。本発明の他の態様によれば、チャネル２０と２２とは、読み取りを搬送し、チャネル２０は、ターゲットに向けられたいくつかまたはすべての書き込みも搬送する。本発明の他の態様によれば、チャネル２０と２２とは、読み取りと書き込みとを搬送し、読み取りと書き込みとに関する選択基準（selection criteria）は、異なってよい。
【００４１】
[0046]  図３は、そのような構成を示す。コヒーレントエージェント１２と１３とは、コヒーレンシコントローラ１６に接続される。コヒーレントエージェント１３に接続されたインターフェース３０は、読み取りのためのチャネル２０への直接経路を有し、コヒーレントエージェント１２からの読み取りトラフィックは、チャネル２２への直接経路を有する。ロジック３２は、コヒーレンシ要件が違反されていないことを保証するために、異なるターゲットチャネル宛のトラフィックをクロスチェックするために使用される。一般的な場合、そのロジックは、エージェントインターフェース３０からターゲットチャネル２０への経路上のトラフィックを、トラフィックの残りの部分と独立して進行させることになる。
【００４２】
[0047]  本発明のいくつかの態様によれば、コヒーレントエージェント１３は、マイクロプロセッサであり、その読み取り経路上で最も低いレイテンシを必要とする。本発明のいくつかの態様によれば、コヒーレントエージェント１２は、Ｉ／Ｏコヒーレントエージェントであり、いくつかのコヒーレントエージェントの集合的トラフィック（aggregate traffic）である。
【００４３】
[0048]  本発明のいくつかの態様によれば、コヒーレントエージェント１２と１３とからの書き込みトラフィックは、マージされ、チャネル２０と２２とは別にターゲットに送られる。
【００４４】
[0049]  本発明の他の態様によれば、コヒーレントエージェント１２と１３とからの書き込みトラフィックは、マージされ、チャネル２２上のターゲットに送信される。
【００４５】
[0050]  本発明の他の態様によれば、コヒーレントエージェント１２と１３とからの書き込みトラフィックは、別々に維持され、チャネル２０と２２とからとは別に送られる。
【００４６】
[0051]  本発明の他の態様によれば、コヒーレントエージェント１２からの書き込みトラフィックは、チャンネル２２上で送られ、コヒーレントエージェント１３からの書き込みトラフィックは、チャンネル２０上で送られる。
【００４７】
[0052]  ここで図４を参照すると、本発明の一態様によるシステムが示される。少なくとも２つのコヒーレントエージェント１２と１３とが、コヒーレンシ相互接続４０を介して互いに接続される。コヒーレントエージェント１２と１３との各々は、少なくとも１つのターゲット１４にも相互接続される。いくつかの実施形態では、コヒーレンシ相互接続４０は、単に、相互接続ファブリック（interconnect fabric）である。他の実施形態では、コヒーレンシ相互接続４０は、１つまたは複数のコヒーレンシコントローラを含む。いくつかの実施形態では、エージェントのいくつかは、それら自体、他のエージェントを接続するコヒーレンシコントローラであってよい。コヒーレントエージェント１２と１３とは、ターゲット１４への直接接続を有するので、データは、不必要に移動する必要はない。結果として、配線混雑は、低減され、電力は、低減され、性能ボトルネックは、除去される。
【００４８】
[0053]  図５は、従来技術によるシステム５０の具体的な実施形態を示す。２つのマイクロプロセッサ５２ａと５２ｂとが、コヒーレンスコントローラ５４に接続される。マイクロプロセッサ５２ａと５２ｂと、コヒーレンシコントローラ５４との間の接続は、データ状態コヒーレンシを解決し、関連するデータトラフィックを搬送するために使用される。データが、ターゲット５８との間で読み書きされなければならない場合、コヒーレンシコントローラ５４は、マイクロプロセッサ５２ａまたは５２ｂに代わってこれを行う。２つのＩ／Ｏエージェント５６ａと５６ｂとが、また、データ状態コヒーレンシを解決し、関連するデータトラフィックを搬送する目的のために、コヒーレンシコントローラ５４に直接接続される。これらは、ターゲット５８の近くに配置されるが、ターゲットとの間のどのような読み取りまたは書き込みも、コヒーレンシコントローラ５４を介して行われなければならない。
【００４９】
[0054]  ここで図６を参照すると、本発明の教示にしたがって、図５のシステムは、Ｉ／Ｏエージェント５６ａとターゲット５８との間にデータ接続６０ａを追加し、Ｉ／Ｏエージェント５６ｂとターゲット５８との間にデータ接続６０ｂを追加することによって、修正される。Ｉ／Ｏエージェントとターゲットとの間で転送されるデータが移動する距離は、図５よりもはるかに小さい。コヒーレンシコントローラ５４と、エージェントとのその接続とは、コヒーレンシネットワークを効果的に構成する。Ｉ／Ｏエージェント５６ａと５６ｂとは、データ状態コヒーレンシを解決するために、コヒーレンシネットワークを依然として使用するが、データ転送部分は、ターゲット５８と直接行われる。いくつかの実施形態では、キャッシュコヒーレンシプロトコルは、特定の場合には、依然としてデータを搬送することができる。たとえば、図６の実施形態によれば、データがマイクロプロセッサ５２ａから直接利用可能である場合、キャッシュコヒーレンシネットワークは、データを搬送する。いくつかの他の実施形態では、コヒーレンシネットワーク上を搬送されているデータは存在せず、すべてのデータ転送は、ターゲット５８と直接行われる。
【００５０】
[0055]  Ｉ／Ｏエージェント５６ａと５６ｂとが、図５に示すシステム内で非コヒーレントであった場合（ここで「排他制御リンク（exclusive control link）」は存在しなかった）、それらは、それらをターゲットに接続するために使用される経路を変更することなく、コヒーレントにされることができる。代わりに、追加されなければならない唯一のことは、通常、配線の数が実質的により少ないコヒーレンシネットワーク（「制御（control）」リンク）である。
【００５１】
[0056]  本発明の様々な態様によれば、イニシエータまたはターゲットのような記述構成要素の少なくとも１つは、製造物品である。製造物品の例は、サーバ、メインフレームコンピュータ、携帯電話、携帯情報端末、パーソナルコンピュータ、ラップトップ、セットトップボックス、ＭＰ３プレーヤ、電子メール対応デバイス、タブレットコンピュータ、１つもしくは複数のプロセッサを有するウェブ対応デバイス、または、データを受信、データを送信、データを記憶、もしくは、方法を実行するために、アルゴリズム（たとえば、コンピュータ可読プログラムもしくはソフトウェア）を実行するように構成された他の専用コンピュータ（たとえば、中央処理ユニット、グラフィカル処理ユニット、もしくは、マイクロプロセッサ）を含む。例として、イニシエータおよび／またはターゲットは、それぞれ、１つまたは複数のステップを実行するために、非一時的なコンピュータ可読媒体上に符号化されたコンピュータ可読プログラムコードを実行するプロセッサを含むコンピュータデバイスの一部である。
【００５２】
[0057]  本発明は、変化し得るように、説明された特定の実施形態または態様に限定されないことが理解されるべきである。本発明の範囲は、添付の特許請求の範囲によってのみ限定されることになるため、本明細書で使用される用語は、特定の実施形態について説明する目的のみのためであり、限定的であることが意図されないことも理解されるべきである。
【００５３】
[0058]  チャネルの数、またはチップの数、またはモジュールの数のような、値の範囲が提供される場合、その範囲の上限と下限との間の各々の介在値と、その記載された範囲内の任意の他の記載されたまたは介在値とは、本発明内に包含されることが理解される。これらのより小さい範囲の上限と下限とは、独立してより小さい範囲に含まれてよく、また、記載された範囲内の任意の具体的に除外される制限を条件として、本発明内に包含される。記載された範囲が、限界の一方または両方を含む場合、これらの含まれる限界のいずれかまたは両方を除いた範囲も、本発明に含まれる。
【００５４】
[0059]  他に定義しない限り、本明細書で使用されるすべての技術用語と科学用語とは、本発明が属する技術分野の当業者によって一般に理解されるのと同じ意味を有する。本明細書に記載のものと同様または等価の任意の方法と材料とが、本発明の実施またはテストで使用されてもよい。
【００５５】
[0060]  本明細書で引用されたすべての刊行物と特許とは、参照によって個々の刊行物または特許が具体的かつ個別に組み込まれていることが示されたかのように、参照によって本明細書に組み込まれ、かつ、刊行物が引用されることに関連する方法および／または材料を開示し、説明するために、参照によって本明細書に組み込まれる。任意の刊行物の引用は、出願日の前のその開示のためであり、本発明が、先行発明によってそのような刊行物に先立つ権利を持たないことの承認として解釈されるべきではない。さらに、提供される刊行物の日付は、個別に確認される必要がある可能性がある実際の刊行物の日付と異なる可能性がある。
【００５６】
[0061]  本明細書と添付の特許請求の範囲で使用されるとき、単数形「１つの（ａ）」と、「１つの（an）」と、「その（the）」とは、文脈が他に明確に指示しない限り、複数の指示対象を含むことに留意する。さらに、特許請求の範囲は、任意のオプションの要素を除外するように起草されてよいことに留意する。そのため、この文は、クレーム要素の列挙に関連する「単独で（solely）」、「のみ（only）」などのような排他的な用語法の使用、または、「否定的な」限定の使用のための先行する基礎として役立つことが意図される。
【００５７】
[0062]  本開示を読めば当業者には明らかであろうように、本明細書で説明し、例示した個々の実施形態の各々は、本発明の範囲または要旨から逸脱することなく、他のいくつかの実施形態のいずれかの特徴から容易に分離され得る、またはそれらと容易に結合され得る、個別の構成要素と特徴とを有する。任意の列挙された方法は、列挙されたイベントの順序で、または、論理的に可能である任意の他の順序で実行されてよい。
【００５８】
[0063]  上述の発明は、理解を明確にする目的で、例示および例によっていくらか詳細に説明されているが、添付の特許請求の範囲の要旨または範囲から逸脱することなく、特定の変更および修正がそれらに対して行われてよいことは、本発明の教示に照らして当業者には容易に明らかである。
【００５９】
[0064]  したがって、前述は、単に、本発明の原理を例示する。当業者が、本明細書に明示的に記載または図示されていないが、本発明の原理を具体化し、その要旨および範囲内に含まれる様々な構成を考案することができるであろうことは、理解されるであろう。さらに、本明細書で列挙されたすべての例と条件付きの文言とは、主に、発明の原理と、本発明者によって当該技術分野を促進させることに寄与される概念とを理解する上で、読者を助けることが意図され、そのような具体的に列挙された例と条件とに限定されないものとして解釈されるべきである。さらに、本発明の原理と、態様と、実施形態と、ならびにその具体例を列挙する本明細書のすべての文は、その構造的等価物と機能的等価物の両方を包含することが意図される。加えて、そのような等価物は、現在既知の等価物と、将来開発される等価物、すなわち、構造にかかわらず同じ機能を実行する、開発される任意の要素とを含むことが意図される。本発明の範囲は、したがって、本明細書に図示され、記載された例示的な実施形態に限定されることを意図されない。むしろ、本発明の範囲と要旨とは、添付の特許請求の範囲によって具体化される。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
コヒーレントエージェントに接続されることが可能な複数のコヒーレントエージェントインターフェースと、
ターゲットに接続されることが可能な複数のターゲットチャネルと
を備えるコヒーレンシコントローラであって、
前記コヒーレンシコントローラが、要求を前記ターゲットに送るために前記複数のチャネルのうちから選択することができる、コヒーレンシコントローラ。
［Ｃ２］
前記複数のターゲットチャネルが、仮想チャネルである、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ３］
前記複数のターゲットチャネルが、物理的に分離している、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ４］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、発信要求が来たインターフェースに基づいて選択する、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ５］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求のタイプに基づいて選択する、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ６］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求の優先順位に基づいて選択する、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ７］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記コヒーレンシコントローラへの信号に基づいて選択する、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ８］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求のアドレスに基づいて選択する、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ９］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求を開始したコヒーレントエージェントに基づいて選択する、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ１０］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、開始エージェントによって渡されたサイドバンド情報に基づいて選択する、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ１１］
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、基準の組合せに基づいて選択し、前記基準が、前記発信要求が来た前記インターフェースと、前記要求のアドレスと、前記開始エージェントと、前記要求のタイプと、前記要求の優先順位と、サイドバンド情報と、前記コヒーレンシコントローラへの信号とを含むセットから選択される、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ１２］
前記少なくとも１つのエージェントインターフェースが、Ｉ／Ｏコヒーレントエージェントに接続することを可能にされる、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ１３］
前記少なくとも１つのエージェントインターフェースが、完全にコヒーレントなエージェントに接続することを可能にされる、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ１４］
前記完全にコヒーレントなエージェントが、マイクロプロセッサである、Ｃ１３に記載のコヒーレンシコントローラ。
［Ｃ１５］
少なくとも１つのエージェントの代わりに要求される読み取りが、第１のチャネルに送られ、少なくとも１つの他のエージェントの代わりに要求される読み取りが、第２のチャネルに送られる、Ｃ１に記載のコヒーレンシコントローラ。
［Ｃ１６］
前記第１のチャネルへの前記読み取りのための経路と、前記第２のチャネルへの前記読み取りのための経路とが、分離している、Ｃ１５に記載のコヒーレンシコントローラ。
［Ｃ１７］
複数のコヒーレントエージェントと、
コヒーレンシを維持するために、前記コヒーレントエージェントがメッセージを交換する際に介するコヒーレンシネットワークと、
データを記憶する少なくとも１つのターゲットと
を備えるシステムであって、
コヒーレントエージェントが、データを転送するために、前記ターゲットに直接作動的に接続され、それによって、前記コヒーレンシネットワークを介してデータを送ることを回避する、システム。
［Ｃ１８］
前記コヒーレントエージェントが、データを転送するために、前記ターゲットに接続される際に介するデータ経路ネットワークをさらに備える、Ｃ１７に記載のシステム。
［Ｃ１９］
データが、前記複数のコヒーレントエージェントと前記ターゲットとの間で直接交換される、Ｃ１７に記載のシステム。
［Ｃ２０］
前記複数のコヒーレントエージェントのうちの少なくとも１つが、コヒーレンシコントローラであり、前記複数のコヒーレントエージェントと他のコヒーレントエージェントとの間のコヒーレンシを維持するために、前記他のコヒーレントエージェントに作動的に接続される、Ｃ１７に記載のシステム。
［Ｃ２１］
前記複数のコヒーレントエージェントのうちの少なくとも１つが、前記複数のコヒーレントエージェントと少なくとも１つのＩ／Ｏコヒーレントエージェントとの間のＩ／Ｏコヒーレンシを維持するために、前記少なくとも１つのＩ／Ｏコヒーレントエージェントに作動的に接続されたコヒーレンシコントローラである、Ｃ１７に記載のシステム。
［Ｃ２２］
前記複数のコヒーレントエージェントが、互いに直接接続される、Ｃ１７に記載のシステム。
［Ｃ２３］
前記複数のコヒーレントエージェントが、相互接続ファブリックを使用して互いに接続される、Ｃ１７に記載のシステム。
［Ｃ２４］
前記複数のコヒーレントエージェントが、少なくとも１つのコヒーレンシコントローラを介して接続される、Ｃ１７に記載のシステム。
［Ｃ２５］
キャッシュコヒーレンシシステム内のターゲット内に記憶されたデータにアクセスするための方法であって、前記方法が、
所望のアクセスのタイプに関して前記データの適切な所有権を要求するステップと、
データバッキングストアとして機能する前記ターゲットからの前記データに直接アクセスするステップと、
前記データの所有権を放棄するステップと
を備える方法。
【図１】
0005917704.tif 000002
【図２】
0005917704.tif 000003
【図３】
0005917704.tif 000004
【図４】
0005917704.tif 000005
【図５】
0005917704.tif 000006
【図６】
0005917704.tif 000007