(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5917704
(24)【登録日】2016年4月15日
(45)【発行日】2016年5月18日
(54)【発明の名称】キャッシュコヒーレンシを有する集積回路
(51)【国際特許分類】
G06F 12/08 20160101AFI20160428BHJP
【FI】
G06F12/08 531B
G06F12/08 551Z
G06F12/08 575
【請求項の数】22
【全頁数】17
(21)【出願番号】特願2014-539017(P2014-539017)
(86)(22)【出願日】2012年10月25日
(65)【公表番号】特表2014-532923(P2014-532923A)
(43)【公表日】2014年12月8日
(86)【国際出願番号】US2012061981
(87)【国際公開番号】WO2013063311
(87)【国際公開日】20130502
【審査請求日】2014年6月26日
(31)【優先権主張番号】61/551,922
(32)【優先日】2011年10月26日
(33)【優先権主張国】US
(31)【優先権主張番号】13/659,850
(32)【優先日】2012年10月24日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】514106498
【氏名又は名称】クゥアルコム・テクノロジーズ・インコーポレイテッド
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100109830
【弁理士】
【氏名又は名称】福原 淑弘
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100140176
【弁理士】
【氏名又は名称】砂川 克
(74)【代理人】
【識別番号】100158805
【弁理士】
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100124394
【弁理士】
【氏名又は名称】佐藤 立志
(74)【代理人】
【識別番号】100112807
【弁理士】
【氏名又は名称】岡田 貴志
(74)【代理人】
【識別番号】100111073
【弁理士】
【氏名又は名称】堀内 美保子
(72)【発明者】
【氏名】モル、ローレン・レーン
(72)【発明者】
【氏名】ルクルー、ジャン―ジャッカス
【審査官】
中野 裕二
(56)【参考文献】
【文献】
米国特許出願公開第2009/0248988(US,A1)
【文献】
特開平10−326225(JP,A)
【文献】
特開2002−175268(JP,A)
【文献】
米国特許第06014690(US,A)
【文献】
特開2007−213304(JP,A)
【文献】
特開平10−161930(JP,A)
【文献】
国際公開第2011/044389(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08
(57)【特許請求の範囲】
【請求項1】
コヒーレントエージェントに接続されることが可能な複数のコヒーレントエージェントインターフェースと、
1つのターゲット(one target)に接続されることが可能な複数のターゲットチャネルと
を備えるコヒーレンシコントローラであって、
前記コヒーレンシコントローラが、選択基準(selection criteria)に基づいて、要求を前記1つのターゲットに送るために前記複数のターゲットチャネルのうちから選択することができ、ここにおいて、前記選択基準は、発信要求が来たインターフェース、または前記要求のアドレス、または前記要求を開始したコヒーレントエージェント、または前記要求のタイプ、または前記要求の優先順位、または前記要求を開始した前記コヒーレントエージェントによって渡されたサイドバンド情報を含む、
コヒーレンシコントローラ。
【請求項2】
前記複数のターゲットチャネルが、仮想チャネルである、請求項1に記載のコヒーレンシコントローラ。
【請求項3】
前記複数のターゲットチャネルが、物理的に分離している、請求項1に記載のコヒーレンシコントローラ。
【請求項4】
前記選択基準が、前記発信要求が来た前記インターフェースである、請求項1に記載のコヒーレンシコントローラ。
【請求項5】
前記選択基準が、前記要求のタイプである、請求項1に記載のコヒーレンシコントローラ。
【請求項6】
前記選択基準が、前記要求の優先順位である、請求項1に記載のコヒーレンシコントローラ。
【請求項7】
前記選択基準が、前記要求のアドレスである、請求項1に記載のコヒーレンシコントローラ。
【請求項8】
前記選択基準が、前記要求を開始した前記コヒーレントエージェントである、請求項1に記載のコヒーレンシコントローラ。
【請求項9】
前記選択基準が、開始エージェントによって渡された前記サイドバンド情報である、請求項1に記載のコヒーレンシコントローラ。
【請求項10】
前記選択基準が、前記発信要求が来たインターフェースと、前記要求のアドレスと、前記要求を開始した前記コヒーレントエージェントと、前記要求のタイプと、前記要求の優先順位と、前記開始エージェントによって渡されたサイドバンド情報と、前記コヒーレンシコントローラへの信号とを含むセットから選択されたものの組み合わせである、請求項1に記載のコヒーレンシコントローラ。
【請求項11】
少なくとも1つのエージェントインターフェースが、I/Oコヒーレントエージェントに接続することを可能にされる、請求項1に記載のコヒーレンシコントローラ。
【請求項12】
少なくとも1つのエージェントインターフェースが、完全にコヒーレントなエージェントに接続することを可能にされる、請求項1に記載のコヒーレンシコントローラ。
【請求項13】
前記完全にコヒーレントなエージェントが、マイクロプロセッサである、請求項12に記載のコヒーレンシコントローラ。
【請求項14】
少なくとも1つのエージェントのために要求される読み取りを、第1のターゲットチャネルに送り、少なくとも1つの他のエージェントのために要求される読み取りを、第2のターゲットチャネルに送るようにさらに構成される、請求項1に記載のコヒーレンシコントローラ。
【請求項15】
第1のターゲットチャネルへの読み取りのための経路と、第2のターゲットチャネルへの読み取りのための経路とが、分離している、請求項11に記載のコヒーレンシコントローラ。
【請求項16】
1つのターゲットのコヒーレントエージェントアクセスのための方法であって、
コヒーレンシコントローラにおいて、前記1つのターゲットにアクセスする要求をコヒーレントエージェントから受信することと、
前記コヒーレンシコントローラにおいて、選択基準(selection criteria)に基づいて、前記コヒーレンシコントローラから前記1つのターゲットに前記要求を送るためのターゲットチャネルを複数のターゲットチャネルの中から選択することと、ここにおいて、前記選択基準は、前記コヒーレンシコントローラにおいて前記コヒーレントエージェントから前記要求が受信されたインターフェース、または前記要求のタイプ、または前記要求の優先順位、または前記要求のアドレス、または前記要求を受信した開始コヒーレントエージェントのアイデンティティ、または前記要求を受信した前記開始コヒーレントエージェントから受信されたサイドバンド情報を含む、
前記選択されたターゲットチャネル上で前記コヒーレンシコントローラから前記1つのターゲットに前記要求を送ることとを備える方法。
【請求項17】
前記選択基準が、前記コヒーレンシコントローラにおいて前記コヒーレントエージェントから前記要求が受信されたインターフェースである、請求項16に記載の方法。
【請求項18】
前記選択基準が、前記要求のタイプである、請求項16に記載の方法。
【請求項19】
前記選択基準が、前記要求の優先順位である、請求項16に記載の方法。
【請求項20】
前記選択基準が、前記要求のアドレスである、請求項16に記載の方法。
【請求項21】
前記コヒーレンシコントローラにおいてコヒーレントエージェントから要求を受信することは、複数のコヒーレントエージェントのうちの開始コヒーレントエージェントから前記要求を受信することを備え、前記選択基準が、前記開始コヒーレントエージェントのアイデンティティである、請求項16に記載の方法。
【請求項22】
前記コヒーレンシコントローラにおいて、コヒーレントエージェントから要求を受信することは、開始コヒーレントエージェントから前記要求を受信することを備え、前記方法はさらに、前記コヒーレンシコントローラにおいて、前記開始コヒーレントエージェントからサイドバンド情報を受信することを備え、前記選択基準が、前記要求を受信した前記開始コヒーレントエージェントから受信された前記サイドバンド情報である、請求項16に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 関連出願の相互参照
本出願は、発明者Laurent MollとJean−Jacques LeclerとによってINTEGRATED CIRCUITS WITH CACHE−COHERENCYというタイトルで2011年10月26日に出願された米国仮出願番号第61/551,922号と、発明者Laurent MollとJean− Jacques LeclerとによってINTEGRATED CIRCUITS WITH CACHE−COHERENCYというタイトルで2012年10月24日に出願された米国非仮出願番号第13/659,850とから優先権と利益とを主張するものであり、これらの出願の各々の開示全体は、参照により本明細書に組み込まれる。
【0002】
[0002] 本開示は、全体的に、半導体チップの分野に関し、より具体的には、キャッシュコヒーレントエージェントを有するシステムオンチップに関する。
【背景技術】
【0003】
[0003] キャッシュコヒーレンシは、分散共有メモリシステム内のデータの一貫性(consistency)を維持するために使用される。それぞれが通常は1つまたは複数のキャッシュを備えるいくつかのエージェントが、中央キャッシュコヒーレンシコントローラを介して互いに接続される。これは、エージェント間でデータの一貫性のあるビュー(view)を依然として提供しながら、エージェントが、キャッシュの性能の利点を利用することを可能にする。
【0004】
[0004] Intel(登録商標)Pentium(登録商標)Front Side Bus protocol(FSB)、Intel Quick Path Interconnect(QPI)、ARM(登録商標)AXI Coherency Extensions(ACE)、またはOpen Core Protocol(OCP)version3のような、いくつかのキャッシュコヒーレンシプロトコルが存在する。キャッシュコヒーレンシプロトコルは、通常、一定量のデータ(たとえば32または64ビット)を含む、典型的にはキャッシュラインと呼ばれるデータのセットに対するパーミッション(permission)を取得し、放棄することに基づく。典型的なパーミッションは、以下である。
【0005】
[0005] ・なし:キャッシュラインが、エージェント内になく、エージェントは、データを読み取るまたは書き込むためのパーミッションを持たない。
【0006】
[0006] ・読み取り可能:キャッシュラインが、エージェント内にあり、エージェントは、ローカルに記憶されたキャッシュラインの内容を読み取るパーミッションを有する。複数のエージェントが、キャッシュラインに対する読み取りパーミッションを同時に有することができる(すなわち、複数のリーダ)。
【0007】
[0007] ・読み取り可能および書き込み可能:キャッシュラインが、エージェント内にあり、エージェントは、キャッシュラインの内容を書き込む(および、典型的には読み取る)ためのパーミッションを有する。1つのエージェントのみが、キャッシュラインに対する書き込みパーミッションを有することができ、エージェントは、同時に書き込みパーミッションを有することができない。
【0008】
[0008] 通常、すべてのキャッシュラインのためのバッキングストア(backing store)が存在する(たとえば、DRAM)。バッキングストアは、データが、キャッシュのどこにもない場合、記憶される場所である。任意の時点で、バッキングストア内のデータは、エージェント内にあり得るキャッシュラインの最新のコピーに対して最新ではない可能性がある。このため、エージェント内部のキャッシュラインは、しばしば、キャッシュラインがクリーン(clean)である(すなわち、バッキングストア内と同じ値を有する)か、ダーティ(dirty)である(すなわち、最新のバージョンであるように、ある時点で、バッキングストアに書き戻される必要がある)かの指示を含む。相互接続上のターゲットは、アドレスマップのグループのためのバッキングストアとして機能する。コヒーレント要求後、バッキングストアが問い合わされるまたは更新されなければならないと判定されると、読み取りまたは書き込みが、アドレスに基づいて、適切なターゲットに送られる。
【0009】
[0009] エージェント内のキャッシュラインのパーミッションと「ダーティネス(dirtiness)」とは、キャッシュラインの「状態(state)」と呼ばれる。コヒーレンシ状態の最も一般的なセットは、MESI(変更−排他−共有−無効(Modified-Exclusive-Shared-Invalid))であり、共有は、読み取りパーミッション(および、クリーンであるキャッシュライン)に対応し、変更と排他の両方は、読み取り/書き込みパーミッションを与えるが、排他状態では、ラインは、クリーンであり、変更状態では、ラインは、ダーティであり、最終的には、書き戻されなければならない。この状態セットでは、共有キャッシュラインは、常にクリーンである。
【0010】
[0010] MOESI(変更−所有−排他−共有−無効(Modified-Owned-Exclusive-Shared-Invalid))のような、より複雑なバージョンが存在し、MOESIでは、読み取りパーミッションを有するキャッシュラインは、ダーティであることが許可される。
【0011】
[0011] 他のプロトコルは、別々の読み取りパーミッションと書き込みパーミッションとを有することができる。多くのキャッシュコヒーレンシ状態セットとプロトコルとが存在する。
【0012】
[0012] 一般的な場合では、エージェントが、持っていないキャッシュラインに対するパーミッションを必要とする場合、パーミッションを取得するために、他のエージェントと直接、または、キャッシュコヒーレンシコントローラを介して相互作用しなければならない。最も簡単な「スヌープベース(snoop-based)」プロトコルでは、他のエージェントは、エージェントによって要求されるパーミッションが、他のエージェントによってすでに所有されているパーミッションと一致することを確実にするために、「スヌープ」されなければならない。たとえば、エージェントが読み取りパーミッションを要求し、他のエージェントが書き込みパーミッションを持たない場合、読み取りパーミッションは、付与されることができる。しかしながら、エージェントが、すでに書き込みパーミッションを有する場合、そのパーミッションは、開始側のエージェントに付与される前に、そのエージェントから最初に除去されなければならない。
【0013】
[0013] いくつかのシステムでは、エージェントは、バス上にスヌープ要求を直接出し、すべてのエージェント(または、少なくともすべての他のエージェント)は、スヌープ要求に応答する。他のシステムでは、エージェントは、コヒーレンシコントローラにパーミッション要求を出し、コヒーレンシコントローラは、今度は、他のエージェント(および、ことによるとエージェント自体)をスヌープすることになる。
【0014】
[0014] ディレクトリベースのプロトコルでは、エージェントによって取得されたパーミッションのディレクトリが維持され、スヌープは、パーミッションがエージェント内で変更する必要がある場合にのみ、送られる。
【0015】
[0015] エージェントに送られるスヌープ(snoop)の数を減らすために、スヌープフィルタが使用されてもよい。スヌープフィルタは、エージェントの内容の大まかなビューを維持し、エージェントがそれ自体のパーミッションを変更する必要がないことを知っている場合、エージェントにスヌープを送らない。
【0016】
[0016] データおよびパーミッションは、キャッシュコヒーレンシプロトコル内で相互作用するが、それらが相互作用する方法は、異なる。エージェントは、通常、パーミッションとデータの両方に対する要求を同時に出すが、常にではない。たとえば、読み取る目的のためにデータをそのキャッシュ内に配置することを望み、データもパーミッションもどちらも持たないエージェントは、パーミッションに対する要求とデータそれ自体に対する要求の両方を含む読み取り要求を出すことができる。しかしながら、すでにデータと読み取りパーミッションとを有するが、書き込みパーミッションを必要とするエージェントは、書き込みパーミッションに対する「アップグレード」要求を出すことができるが、データを必要としない。
【0017】
[0017] 同様に、スヌープ要求への応答は、パーミッションの変更が生じたことの承認を含むことができるが、オプションでデータを含むこともできる。スヌープエージェントは、サービスの一環としてデータを送ることができる。代わりに、スヌープエージェントは、最終的にバッキングストアに書き戻されるために保持されなければならないダーティデータを送信することができる。
【0018】
[0018] エージェントは、データなしでパーミッションを保持することができる。たとえば、完全なキャッシュラインを書き込むことを望むエージェントは、それを使用しない(それを完全に上書きする)ことを知っているような書き込みパーミッションを有するデータを要求しなくてよい。いくつかのシステムでは、一部のデータを保持することが許可される(セクタ内に、バイトごとに...)。これは、データ転送を制限するのに有用であるが、キャッシュコヒーレンシプロトコルをより複雑にする。
【0019】
[0019] 多くのキャッシュコヒーレンシプロトコルは、データがエージェントから離れるための2つの関連する方法を提供する。1つは、スヌープ応答経路を介して、データを応答としてスヌープに提供することである。他は、自発的書き込み経路(しばしば、書き戻し(write back)または排除経路(evict path)と呼ばれる)であり、自発的書き込み経路では、エージェントは、データをもう維持したくない場合、データを送り出すことができる。いくつかのプロトコルでは、スヌープ応答および書き戻し経路は、共有される。
【0020】
[0020] 完全にコヒーレントなエージェントは、キャッシュラインのためのパーミッションを所有することと、別のエージェントからの要求によってトリガされる、それらのパーミッションのチェックと、ことによると変更とのために、スヌープ要求を受信することとの両方が可能である。最も一般的なタイプの完全コヒーレントエージェントは、コヒーレントキャッシュを有するマイクロプロセッサである。マイクロプロセッサは、読み取りと書き込みとを行う必要があるため、適切なパーミッションと、潜在的にデータとを取得し、それらをそれ自体のキャッシュ内に入れる。多くの現代のマイクロプロセッサは、内部に複数のレベルのキャッシュを有する。多くの現代のマイクロプロセッサは、複数のマイクロプロセッサコアを含み、マイクロプロセッサの各々は、それ自体のキャッシュと、しばしば、共有二次キャッシュとを有する。多くの他のタイプのエージェントは、DSP、GPU、および、キャッシュを備える様々なタイプのマルチメディアエージェントのような、完全にコヒーレントであってよい。
【0021】
[0021] 対照的に、I/Oコヒーレント(一方向コヒーレントとも呼ばれる)エージェントは、コヒーレントキャッシュを使用しないが、それらは、完全にコヒーレントなエージェントに関して一貫性のあるデータのコピーに対して作用する必要がある。結果として、それらの読み取りおよび書き込み要求は、完全にコヒーレントなエージェントへのコヒーレンシアクション(スヌープ)をトリガする可能性がある。たいていの場合、これは、特別なブリッジまたは中央コヒーレンシコントローラのいずれかが、適切なコヒーレンシアクションを発行し、必要ならば、バッキングストアへの実際の読み取りまたは書き込みを順番付けることによって行われる。小さいブリッジの場合には、そのブリッジは、短い時間の間パーミッションを保持する完全にコヒーレントなエージェントとして機能することができる。中央コヒーレンシコントローラの場合には、読み取りおよび書き込みを追跡し、I/Oコヒーレントエージェントの代わりに、処理されているキャッシュラインに他のエージェントがアクセスするのを防止する。
【0022】
技術水準
[0022] キャッシュコヒーレンシコントローラは、所与のタイプおよびアドレスのすべての要求が、バッキングストアに到達するために、同じチャネルを常に経由するように、複数のコヒーレントエージェントからの要求トラフィックを、特定のバッキングストアへの1つのチャネル上にマージする。これは、2つの負の影響を有する。
【0023】
[0023] 第1に、要求に対するサービスの質が、マージされたトラフィックに対して維持されることが容易ではない可能性がある。たとえば、あるエージェントが、最も低いレイテンシ(latency)を要求し、別のエージェントが、すべての帯域幅を使用することができる場合、最も低いレイテンシを第1のエージェントに提供することは、それらの要求トラフィックが一旦マージされると、困難であろう。これは、たとえば、ビデオおよびグラフィックスコントローラのようなエージェントからの高帯域トラフィックに直面した場合、マイクロプロセッサの読み取り要求に関する問題である。
【0024】
[0024] 第2に、コヒーレンシコントローラは、一般的には、高帯域コヒーレントエージェントとそれらのターゲットとの間に直接配置されない。したがって、コヒーレンシコントローラを通過することを強制するコヒーレントエージェントとターゲットとの間のデータ転送は、オンチップの接続を実質的に長くする可能性がある。これは、遅延と電力消費とを追加し、不要な配線混雑(wire congestion)を引き起こす可能性がある。コヒーレンシ制御通信は、コヒーレンシコントローラと遠隔コヒーレントエージェントとの間で生じなければならないが、データは、コヒーレンシコントローラを通過することを強制される必要はない。
【0025】
[0025] したがって、必要とされるものは、コヒーレントエージェントからターゲットまでの経路に柔軟性を提供し、トラフィックが、所与のターゲットへの複数のチャネルのうちの1つを選択することを可能にする、キャッシュコヒーレンシコントローラである。さらに、コヒーレンシコントローラは、コヒーレンシコントローラを完全にバイパスすることによって、コヒーレントエージェントがターゲットへの直接のデータパスを有することを可能にする。
【発明の概要】
【0026】
[0026] コヒーレンシコントローラとターゲットとは、プロトコルを使用して通信するインターフェースを介して接続されたシステムの構成要素である。いくつかの一般的な業界標準インターフェースおよびプロトコルは、Advanced Microcontroller Bus Architecture(AMBA)、Advanced extensible Interface(AXI)、Open Core Protocol(OCP)、およびPeripheral Component Interface(PCI)である。構成要素のインターフェースは、互いに直接接続されてよく、または、リンクもしくは相互接続を介して接続されてよい。チャネルは、フロー制御のユニークな手段によって識別されるインターフェースのサブセットである。異なるインターフェースプロトコルは、異なる数とタイプのチャネルを備える。たとえば、(AXIのような)いくつかのプロトコルは、読み取りと書き込みとのために異なる物理チャネルを使用し、(OCPのような)他のプロトコルは、読み取りと書き込みとのために同じチャネルを使用する。チャネルは、別々の物理的接続を使用してよく、または、通信のユニークなフローを多重化する物理的接続を共有してよい。チャネルは、アドレスの情報、書き込みデータ、読み取りデータ、書き込み応答、スヌープ要求、スヌープ応答、他の通信、または、情報のタイプの組合せを通信することができる。
【0027】
[0027] 従来の集積回路で実施されるようなキャッシュコヒーレンシは、プロセッサと、それらのメインメモリと、他のエージェントとの間の密結合を必要とする。コヒーレンシコントローラは、所与のターゲットへのすべてのコヒーレントエージェントの要求がデータアクセスの単一のストリーム内にマージされる際に通過するファンネル(funnel)である。他のプロセッサのキャッシュのアクセスを必要とするプロセッサの要求に高速な応答を提供するために、コヒーレンシコントローラとすべてのプロセッサとを、互いに物理的に近くすることが重要である。半導体チップの二次元表面上で、そのような高い性能を提供するためのコヒーレンシシステムに関して、キャッシュ−コヒーレントプロセッサの直線領域は、互いに近くに配置されなければならない。5個以上の矩形を1点で接触させることは、困難であり、相応して、従来のキャッシュコヒーレントシステムを、4個のプロセッサを大きく超えて拡大させることは、困難である。
【0028】
[0028] 本明細書で開示される発明は、コヒーレンシコントローラがファンネルである必要はないことを認識する。コヒーレンシコントローラは、同じタイプのトランザクションを所与のターゲットに送ることができる仮想的または物理的な複数のチャネルを有するルータであってよい。コヒーレントエージェントとターゲットとの間のデータ通信が、コヒーレンシコントローラによって制御されなければならない間、そのようなデータは、コヒーレンシコントローラを通過する必要はないことも認識される。コヒーレンシ制御とデータトランザクションとのための別々のオンチップのネットワークが、有利である。
【0029】
[0029] 本明細書で開示される発明は、データコヒーレンシを提供する手段に向けられる。コヒーレンシコントローラは、要求をターゲットに送ることができる複数のチャネルを提供する。これは、異なるレイテンシとスループットの要件を有するコヒーレントエージェントに、改善されたサービスの品質を提供する。
【0030】
[0030] さらに、本明細書で開示される発明は、データ経路ネットワークと部分的に別である、コヒーレンシ制御情報(スヌープ)の通信のためのネットワークを提供する。いくつかのチャネルは、スヌープのみを搬送し、いくつかのチャネルは、データのみを搬送し、いくつかのチャネルは、スヌープとデータの両方を搬送する。データと制御の通信とのこの解きほぐし(untangling)は、チップの改善された物理的設計を提供する。それは、今度は、データ転送のためのより少ない論理遅延(logic delay)とより低い電力とを必要とする。
【図面の簡単な説明】
【0031】
【
図1】[0031] 従来技術による、コヒーレントエージェントと、ターゲットと、コヒーレンシコントローラとのシステムを示す図。
【
図2】[0032] 本発明の一態様による、要求をターゲットに送ることができるコヒーレンシコントローラ内の複数のチャネルを有するシステムを示す図。
【
図3】[0033] 本発明の一態様による、専用のエンドツーエンド要求経路を有するシステムを示す図。
【
図4】[0034] 本発明の一態様による、別々のコヒーレンシ相互接続を有するシステムを示す図。
【
図5】[0035] 従来技術による、ターゲットを有するマイクロプロセッサコアとI/Oエージェントとのコヒーレントシステムを示す図。
【
図6】[0036] 本発明の一態様による、別々のデータチャネルとコヒーレンシ制御チャネルとを有するシステムを示す図。
【発明を実施するための形態】
【0032】
[0037] ここで
図1を参照すると、キャッシュコヒーレントシステム10では、少なくとも2個のコヒーレントエージェント12と13とが、メッセージを交換することによって、システム10内で利用可能なデータのコヒーレントビューを維持する。これらのメッセージは、たとえば、どのエージェントも、データの一部の値を、それが書き込まれている間、使用しようとしていないことを確実にする。これは、エージェントが、内部メモリ内にデータをキャッシュすることを許可される場合、特に必要とされる。
【0033】
[0038] コヒーレントに維持されているデータは、通常、少なくとも1つのターゲット14に記憶される。コヒーレント要求のターゲットは、典型的には、バッキングストア(backing store)として機能するDRAMまたはSRAMである。コヒーレンシプロトコルは、コヒーレントエージェント、バッキングストア、またはその両方に配置されてよい任意のデータの現在の値を追跡する。データの一部が、バッキングストア内で最新ではない場合、コヒーレンシプロトコルは、(特にしないように求められない限り)現在の値がある時点でバッキングストアに書き戻されることを確実にする。
【0034】
[0039] コヒーレントエージェント12と13との間の相互接続は、多くの形態をとることができる。多くの場合、エージェント12と13とは、
図1に示すようなターゲットに接続されるコヒーレンシコントローラ16(たとえば、ARMのCache Coherent Interconnect)に接続される。いくつかの他の場合、エージェント12と13とは、すべて、バスを介して接続され、ターゲットも、バス(たとえば、IntelのFront Side Bus)との接続を有する。
【0035】
[0040] レイテンシは、マイクロプロセッサコアにとって最も重要であるので、ほとんどのキャッシュコヒーレンシメカニズムは、マイクロプロセッサに対するレイテンシを低く保つために、かなり最適化され、典型的には、物理的にマイクロプロセッサコアの近くに配置される。完全なまたはI/Oコヒーレンシを必要とするが、より高いレイテンシをサポートすることができる他のエージェントは、遠くに配置されてよい。
【0036】
[0041] 既存のキャッシュコヒーレンシプロトコルは、状態とデータの両方を処理するので、これらのさらなるエージェントは、物理的にマイクロプロセッサコアの近くに配置されるこのコヒーレンシコントローラ16を通過するすべてのデータを有する必要がある。これは、エージェント12と13と、ターゲット14との間のすべてのデータ交換が、コヒーレンシコントローラを経由し、典型的には、しばしば、マイクロプロセッサコアの近くに、配線混雑と、潜在的に性能ボトルネックとを引き起こし、それは、最も不経済で、解決することが困難である。これは、特に、コヒーレントエージェント12と13のいくつかがターゲット14に近い場合、集積回路内の不必要な移動も引き起こす。この余計な移動は、集積回路の電力を増加させる可能性もある。加えて、コヒーレンシコントローラ16は、必要なデータのすべてをサービスための内部帯域幅を持たず、性能ボトルネックを引き起こす可能性がある。最後に、いくつかの場合、コヒーレントエージェント12と13とのいくつかは、シャットダウンされる必要がある可能性があるが、コヒーレンシコントローラ16は、ターゲット14へのアクセスのユニークなポイントとして機能するように、そうではない可能性がある。
【0037】
[0042]
図2は、本発明の一態様による改善されたシステムを示す。コヒーレントエージェント12と13とは、コヒーレンシコントローラ16を介して、少なくとも1つのターゲット14に接続される。コヒーレンシコントローラは、要求を同じターゲットまたはターゲットのセットに送ることができる少なくとも2つのチャネル20と22とを有する。いくつかの実施形態では、2つのチャネル20と22とは、2つの別々の物理チャネルである。他の実施形態では、それらは、単一の物理的接続の上に階層化された仮想チャネルである。少なくともいくつかの要求が、チャネル20または22のいずれかで送られてよく、コヒーレンシコントローラ14は、いくつかのパラメータに基づいて、要求を送るためのチャネルを選択することができる。本発明のいくつかの態様によれば、選択は、単に、どのインターフェースから開始要求が来たのかに基づいて行われる。本発明のいくつかの態様によれば、選択は、開始エージェントのアイデンティティに基づく。本発明の他の態様によれば、選択は、要求のアドレスに基づく。本発明の他の態様によれば、選択は、要求のタイプ(たとえば、読み取り/書き込み)に基づく。本発明のさらに他の態様によれば、選択は、要求の優先順位(priority)に基づく。本発明のいくつかの態様によれば、選択は、開始エージェントによって渡されたサイドバンド情報(sideband information)に基づく。本発明のいくつかの態様によれば、選択は、構成信号またはレジスタに基づく。本発明のいくつかの態様によれば、選択は、開始要求が来たインターフェースと、開始エージェントと、要求のタイプと、要求の優先順位と、サイドバンド情報と、構成信号またはレジスタとの組合せに基づく。本発明の他の態様によれば、選択は、開始要求が来たインターフェースと、開始エージェントと、要求のタイプと、要求の優先順位と、サイドバンド情報と、構成信号またはレジスタとのうちの少なくとも1つと、要求のアドレスとの組合せに基づく。本発明のいくつかの態様によれば、1つまたは複数のエージェントのための読み取りは1つのチャネルへ送られ、そして、
少なくも1つのほかのエージェントのための読み取りはほかのチャネルに送られる。
【0038】
[0043] 本発明のいくつかの態様によれば、すべてのコヒーレントエージェント12と13とは、完全にコヒーレントである。本発明の他の態様によれば、コヒーレントエージェント12と13とのいくつかは、I/Oコヒーレントであり、他は、完全にコヒーレントである。
【0039】
[0044] 本発明のいくつかの態様によれば、選択が、静的なパラメータ(たとえば、開始要求のインターフェース、または、コヒーレントエージェントインターフェース上の別々のチャネル上にある場合、読み取り対書き込み)に基づく場合、別々の経路が、エージェントインターフェースとターゲットチャネルとの間のコヒーレンシコントローラ16内に設けられる。コヒーレンシは、エージェントインターフェースからターゲットチャネルまでの異なる経路上で移動する要求間で維持されなければならないが、これは、要求が単一のキューにマージされることを必要としない。この構成は、コヒーレントエージェントインターフェースとターゲットチャネルとの間の経路上の、そして、コヒーレントエージェントとターゲットとの間の延長による、独立したQoSと帯域幅管理とを可能にする。
【0040】
[0045] 本発明のいくつかの態様によれば、チャネル20と22とは、読み取りを搬送するだけであり、書き込みは、別々に搬送される。本発明の他の態様によれば、チャネル20と22とは、読み取りを搬送し、チャネル20は、ターゲットに向けられたいくつかまたはすべての書き込みも搬送する。本発明の他の態様によれば、チャネル20と22とは、読み取りと書き込みとを搬送し、読み取りと書き込みとに関する選択基準(selection criteria)は、異なってよい。
【0041】
[0046]
図3は、そのような構成を示す。コヒーレントエージェント12と13とは、コヒーレン
シコントローラ16に接続される。コヒーレントエージェント13に接続されたインターフェース30は、読み取りのためのチャネル20への直接経路を有し、コヒーレントエージェント12からの読み取りトラフィックは、チャネル22への直接経路を有する。ロジック32は、コヒーレンシ要件が違反されていないことを保証するために、異なるターゲットチャネル宛のトラフィックをクロスチェックするために使用される。一般的な場合、そのロジックは、エージェントインターフェース30からターゲットチャネル20への経路上のトラフィックを、トラフィックの残りの部分と独立して進行させることになる。
【0042】
[0047] 本発明のいくつかの態様によれば、コヒーレントエージェント13は、マイクロプロセッサであり、その読み取り経路上で最も低いレイテンシを必要とする。本発明のいくつかの態様によれば、コヒーレントエージェント12は、I/Oコヒーレントエージェントであり、いくつかのコヒーレントエージェントの集合的トラフィック(aggregate traffic)である。
【0043】
[0048] 本発明のいくつかの態様によれば、コヒーレントエージェント12と13とからの書き込みトラフィックは、マージされ、チャネル20と22とは別にターゲットに送られる。
【0044】
[0049] 本発明の他の態様によれば、コヒーレントエージェント12と13とからの書き込みトラフィックは、マージされ、チャネル22上のターゲットに送信される。
【0045】
[0050] 本発明の他の態様によれば、コヒーレントエージェント12と13とからの書き込みトラフィックは、別々に維持され、チャネル20と22とからとは別に送られる。
【0046】
[0051] 本発明の他の態様によれば、コヒーレントエージェント12からの書き込みトラフィックは、チャンネル22上で送られ、コヒーレントエージェント13からの書き込みトラフィックは、チャンネル20上で送られる。
【0047】
[0052] ここで
図4を参照すると、本発明の一態様によるシステムが示される。少なくとも2つのコヒーレントエージェント12と13とが、コヒーレンシ相互接続40を介して互いに接続される。コヒーレントエージェント12と13との各々は、少なくとも1つのターゲット14にも相互接続される。いくつかの実施形態では、コヒーレンシ相互接続40は、単に、相互接続ファブリック(interconnect fabric)である。他の実施形態では、コヒーレンシ相互接続40は、1つまたは複数のコヒーレンシコントローラを含む。いくつかの実施形態では、エージェントのいくつかは、それら自体、他のエージェントを接続するコヒーレンシコントローラであってよい。コヒーレントエージェント12と13とは、ターゲット14への直接接続を有するので、データは、不必要に移動する必要はない。結果として、配線混雑は、低減され、電力は、低減され、性能ボトルネックは、除去される。
【0048】
[0053]
図5は、従来技術によるシステム50の具体的な実施形態を示す。2つのマイクロプロセッサ52aと52bとが、コヒーレンスコントローラ54に接続される。マイクロプロセッサ52aと52bと、コヒーレンシコントローラ54との間の接続は、データ状態コヒーレンシを解決し、関連するデータトラフィックを搬送するために使用される。データが、ターゲット58との間で読み書きされなければならない場合、コヒーレンシコントローラ54は、マイクロプロセッサ52aまたは52bに代わってこれを行う。2つのI/Oエージェント56aと56bとが、また、データ状態コヒーレンシを解決し、関連するデータトラフィックを搬送する目的のために、コヒーレンシコントローラ54に直接接続される。これらは、ターゲット58の近くに配置されるが、ターゲットとの間のどのような読み取りまたは書き込みも、コヒーレンシコントローラ54を介して行われなければならない。
【0049】
[0054] ここで
図6を参照すると、本発明の教示にしたがって、
図5のシステムは、I/Oエージェント56aとターゲット58との間にデータ接続60aを追加し、I/Oエージェント56bとターゲット58との間にデータ接続60bを追加することによって、修正される。I/Oエージェントとターゲットとの間で転送されるデータが移動する距離は、
図5よりもはるかに小さい。コヒーレンシコントローラ54と、エージェントとのその接続とは、コヒーレンシネットワークを効果的に構成する。I/Oエージェント56aと56bとは、データ状態コヒーレンシを解決するために、コヒーレンシネットワークを依然として使用するが、データ転送部分は、ターゲット58と直接行われる。いくつかの実施形態では、キャッシュコヒーレンシプロトコルは、特定の場合には、依然としてデータを搬送することができる。たとえば、
図6の実施形態によれば、データがマイクロプロセッサ52aから直接利用可能である場合、キャッシュコヒーレンシネットワークは、データを搬送する。いくつかの他の実施形態では、コヒーレンシネットワーク上を搬送されているデータは存在せず、すべてのデータ転送は、ターゲット58と直接行われる。
【0050】
[0055] I/Oエージェント56aと56bとが、
図5に示すシステム内で非コヒーレントであった場合(ここで「排他制御リンク(exclusive control link)」は存在しなかった)、それらは、それらをターゲットに接続するために使用される経路を変更することなく、コヒーレントにされることができる。代わりに、追加されなければならない唯一のことは、通常、配線の数が実質的により少ないコヒーレンシネットワーク(「制御(control)」リンク)である。
【0051】
[0056] 本発明の様々な態様によれば、イニシエータまたはターゲットのような記述構成要素の少なくとも1つは、製造物品である。製造物品の例は、サーバ、メインフレームコンピュータ、携帯電話、携帯情報端末、パーソナルコンピュータ、ラップトップ、セットトップボックス、MP3プレーヤ、電子メール対応デバイス、タブレットコンピュータ、1つもしくは複数のプロセッサを有するウェブ対応デバイス、または、データを受信、データを送信、データを記憶、もしくは、方法を実行するために、アルゴリズム(たとえば、コンピュータ可読プログラムもしくはソフトウェア)を実行するように構成された他の専用コンピュータ(たとえば、中央処理ユニット、グラフィカル処理ユニット、もしくは、マイクロプロセッサ)を含む。例として、イニシエータおよび/またはターゲットは、それぞれ、1つまたは複数のステップを実行するために、非一時的なコンピュータ可読媒体上に符号化されたコンピュータ可読プログラムコードを実行するプロセッサを含むコンピュータデバイスの一部である。
【0052】
[0057] 本発明は、変化し得るように、説明された特定の実施形態または態様に限定されないことが理解されるべきである。本発明の範囲は、添付の特許請求の範囲によってのみ限定されることになるため、本明細書で使用される用語は、特定の実施形態について説明する目的のみのためであり、限定的であることが意図されないことも理解されるべきである。
【0053】
[0058] チャネルの数、またはチップの数、またはモジュールの数のような、値の範囲が提供される場合、その範囲の上限と下限との間の各々の介在値と、その記載された範囲内の任意の他の記載されたまたは介在値とは、本発明内に包含されることが理解される。これらのより小さい範囲の上限と下限とは、独立してより小さい範囲に含まれてよく、また、記載された範囲内の任意の具体的に除外される制限を条件として、本発明内に包含される。記載された範囲が、限界の一方または両方を含む場合、これらの含まれる限界のいずれかまたは両方を除いた範囲も、本発明に含まれる。
【0054】
[0059] 他に定義しない限り、本明細書で使用されるすべての技術用語と科学用語とは、本発明が属する技術分野の当業者によって一般に理解されるのと同じ意味を有する。本明細書に記載のものと同様または等価の任意の方法と材料とが、本発明の実施またはテストで使用されてもよい。
【0055】
[0060] 本明細書で引用されたすべての刊行物と特許とは、参照によって個々の刊行物または特許が具体的かつ個別に組み込まれていることが示されたかのように、参照によって本明細書に組み込まれ、かつ、刊行物が引用されることに関連する方法および/または材料を開示し、説明するために、参照によって本明細書に組み込まれる。任意の刊行物の引用は、出願日の前のその開示のためであり、本発明が、先行発明によってそのような刊行物に先立つ権利を持たないことの承認として解釈されるべきではない。さらに、提供される刊行物の日付は、個別に確認される必要がある可能性がある実際の刊行物の日付と異なる可能性がある。
【0056】
[0061] 本明細書と添付の特許請求の範囲で使用されるとき、単数形「1つの(a)」と、「1つの(an)」と、「その(the)」とは、文脈が他に明確に指示しない限り、複数の指示対象を含むことに留意する。さらに、特許請求の範囲は、任意のオプションの要素を除外するように起草されてよいことに留意する。そのため、この文は、クレーム要素の列挙に関連する「単独で(solely)」、「のみ(only)」などのような排他的な用語法の使用、または、「否定的な」限定の使用のための先行する基礎として役立つことが意図される。
【0057】
[0062] 本開示を読めば当業者には明らかであろうように、本明細書で説明し、例示した個々の実施形態の各々は、本発明の範囲または要旨から逸脱することなく、他のいくつかの実施形態のいずれかの特徴から容易に分離され得る、またはそれらと容易に結合され得る、個別の構成要素と特徴とを有する。任意の列挙された方法は、列挙されたイベントの順序で、または、論理的に可能である任意の他の順序で実行されてよい。
【0058】
[0063] 上述の発明は、理解を明確にする目的で、例示および例によっていくらか詳細に説明されているが、添付の特許請求の範囲の要旨または範囲から逸脱することなく、特定の変更および修正がそれらに対して行われてよいことは、本発明の教示に照らして当業者には容易に明らかである。
【0059】
[0064] したがって、前述は、単に、本発明の原理を例示する。当業者が、本明細書に明示的に記載または図示されていないが、本発明の原理を具体化し、その要旨および範囲内に含まれる様々な構成を考案することができるであろうことは、理解されるであろう。さらに、本明細書で列挙されたすべての例と条件付きの文言とは、主に、発明の原理と、本発明者によって当該技術分野を促進させることに寄与される概念とを理解する上で、読者を助けることが意図され、そのような具体的に列挙された例と条件とに限定されないものとして解釈されるべきである。さらに、本発明の原理と、態様と、実施形態と、ならびにその具体例を列挙する本明細書のすべての文は、その構造的等価物と機能的等価物の両方を包含することが意図される。加えて、そのような等価物は、現在既知の等価物と、将来開発される等価物、すなわち、構造にかかわらず同じ機能を実行する、開発される任意の要素とを含むことが意図される。本発明の範囲は、したがって、本明細書に図示され、記載された例示的な実施形態に限定されることを意図されない。むしろ、本発明の範囲と要旨とは、添付の特許請求の範囲によって具体化される。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
コヒーレントエージェントに接続されることが可能な複数のコヒーレントエージェントインターフェースと、
ターゲットに接続されることが可能な複数のターゲットチャネルと
を備えるコヒーレンシコントローラであって、
前記コヒーレンシコントローラが、要求を前記ターゲットに送るために前記複数のチャネルのうちから選択することができる、コヒーレンシコントローラ。
[C2]
前記複数のターゲットチャネルが、仮想チャネルである、C1に記載のコヒーレンシコントローラ。
[C3]
前記複数のターゲットチャネルが、物理的に分離している、C1に記載のコヒーレンシコントローラ。
[C4]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、発信要求が来たインターフェースに基づいて選択する、C1に記載のコヒーレンシコントローラ。
[C5]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求のタイプに基づいて選択する、C1に記載のコヒーレンシコントローラ。
[C6]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求の優先順位に基づいて選択する、C1に記載のコヒーレンシコントローラ。
[C7]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記コヒーレンシコントローラへの信号に基づいて選択する、C1に記載のコヒーレンシコントローラ。
[C8]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求のアドレスに基づいて選択する、C1に記載のコヒーレンシコントローラ。
[C9]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、前記要求を開始したコヒーレントエージェントに基づいて選択する、C1に記載のコヒーレンシコントローラ。
[C10]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、開始エージェントによって渡されたサイドバンド情報に基づいて選択する、C1に記載のコヒーレンシコントローラ。
[C11]
前記コヒーレンシコントローラが、要求を送るための前記チャネルを、基準の組合せに基づいて選択し、前記基準が、前記発信要求が来た前記インターフェースと、前記要求のアドレスと、前記開始エージェントと、前記要求のタイプと、前記要求の優先順位と、サイドバンド情報と、前記コヒーレンシコントローラへの信号とを含むセットから選択される、C1に記載のコヒーレンシコントローラ。
[C12]
前記少なくとも1つのエージェントインターフェースが、I/Oコヒーレントエージェントに接続することを可能にされる、C1に記載のコヒーレンシコントローラ。
[C13]
前記少なくとも1つのエージェントインターフェースが、完全にコヒーレントなエージェントに接続することを可能にされる、C1に記載のコヒーレンシコントローラ。
[C14]
前記完全にコヒーレントなエージェントが、マイクロプロセッサである、C13に記載のコヒーレンシコントローラ。
[C15]
少なくとも1つのエージェントの代わりに要求される読み取りが、第1のチャネルに送られ、少なくとも1つの他のエージェントの代わりに要求される読み取りが、第2のチャネルに送られる、C1に記載のコヒーレンシコントローラ。
[C16]
前記第1のチャネルへの前記読み取りのための経路と、前記第2のチャネルへの前記読み取りのための経路とが、分離している、C15に記載のコヒーレンシコントローラ。
[C17]
複数のコヒーレントエージェントと、
コヒーレンシを維持するために、前記コヒーレントエージェントがメッセージを交換する際に介するコヒーレンシネットワークと、
データを記憶する少なくとも1つのターゲットと
を備えるシステムであって、
コヒーレントエージェントが、データを転送するために、前記ターゲットに直接作動的に接続され、それによって、前記コヒーレンシネットワークを介してデータを送ることを回避する、システム。
[C18]
前記コヒーレントエージェントが、データを転送するために、前記ターゲットに接続される際に介するデータ経路ネットワークをさらに備える、C17に記載のシステム。
[C19]
データが、前記複数のコヒーレントエージェントと前記ターゲットとの間で直接交換される、C17に記載のシステム。
[C20]
前記複数のコヒーレントエージェントのうちの少なくとも1つが、コヒーレンシコントローラであり、前記複数のコヒーレントエージェントと他のコヒーレントエージェントとの間のコヒーレンシを維持するために、前記他のコヒーレントエージェントに作動的に接続される、C17に記載のシステム。
[C21]
前記複数のコヒーレントエージェントのうちの少なくとも1つが、前記複数のコヒーレントエージェントと少なくとも1つのI/Oコヒーレントエージェントとの間のI/Oコヒーレンシを維持するために、前記少なくとも1つのI/Oコヒーレントエージェントに作動的に接続されたコヒーレンシコントローラである、C17に記載のシステム。
[C22]
前記複数のコヒーレントエージェントが、互いに直接接続される、C17に記載のシステム。
[C23]
前記複数のコヒーレントエージェントが、相互接続ファブリックを使用して互いに接続される、C17に記載のシステム。
[C24]
前記複数のコヒーレントエージェントが、少なくとも1つのコヒーレンシコントローラを介して接続される、C17に記載のシステム。
[C25]
キャッシュコヒーレンシシステム内のターゲット内に記憶されたデータにアクセスするための方法であって、前記方法が、
所望のアクセスのタイプに関して前記データの適切な所有権を要求するステップと、
データバッキングストアとして機能する前記ターゲットからの前記データに直接アクセスするステップと、
前記データの所有権を放棄するステップと
を備える方法。