(57)【特許請求の範囲】
【請求項１】
メモリに記憶されるデータ項目のうちの少なくとも１つのローカルコピーを記憶するための、キャッシュであって、少なくとも１つのイニシエータがライトバック動作を実行し、更新されたデータ項目を前記メモリに書き込むまで、前記少なくとも１つのイニシエータは、更新されるローカルに記憶されたデータ項目に応答して、前記ローカルに記憶されたデータ項目をダーティとマークすることによって、前記ローカルに記憶された少なくとも１つのデータ項目のコヒーレンスを維持するように構成される、キャッシュと、
少なくとも１つの受信側デバイスにトランザクション要求を伝送するための、かつデータおよび前記キャッシュをクエリするクエリ要求を受信するための、少なくとも１つのポートと、
を備える、イニシエータデバイスであって、
前記イニシエータデバイスは、記憶位置へのライトバックトランザクション要求が保留中である場合、前記キャッシュ内の前記記憶位置の状態をクエリする要求の受信への応答を発行しないように、かつ保留中の前記ライトバックトランザクション要求が完了した時に前記応答を発行するように構成され、前記ライトバックトランザクション要求は、前記メモリが前記データ項目の現在値を記憶するように、それ自体が更新された前記キャッシュに記憶されるデータ項目の値で、前記メモリを更新するように、前記イニシエータデバイスによって発行される要求である、
イニシエータデバイス。
【請求項２】
前記イニシエータデバイスは、書き込み固有トランザクションを発行するように構成され、書き込み固有トランザクションは、記憶位置への書き込みトランザクションであり、前記書き込み固有トランザクションは、前記記憶位置に記憶されるデータ項目のいかなるローカルコピーも無効にされることを確実にし、前記イニシエータは、書き込み固有トランザクションが保留中である間、ライトバックトランザクションを発行しないように構成される、請求項１に記載のイニシエータデバイス。
【請求項３】
前記イニシエータデバイスは、キャッシュを備え、書き込み固有トランザクションを発行するように構成され、書き込み固有トランザクションは、位置がデータ項目の唯一のローカルコピーを記憶する前記位置への書き込みトランザクションであり、前記イニシエータは、ダーティである前記キャッシュの中のラインのうちのいずれかに応答して、前記書き込み固有トランザクションを発行しないように構成される、請求項１に記載のイニシエータデバイス。
【請求項４】
複数のトランザクション要求を発行するように構成される、複数のイニシエータと、
前記複数のトランザクション要求を受信するように構成される、少なくとも１つの受信側であって、前記少なくとも１つの受信側のうちの少なくとも１つは、データ処理装置によって処理されるデータ項目を記憶するための、メモリを備える、少なくとも１つの受信側と、
請求項１に記載のイニシエータを備える、前記複数のイニシエータのうちの少なくとも１つと、
相互接続回路と、
を備える、データ処理装置であって、
前記相互接続回路は、複数のイニシエータデバイスおよび少なくとも１つの受信側デバイスを相互接続するためのルートを提供するように構成され、前記少なくとも１つの受信側デバイスのうちの少なくとも１つは、前記データ処理装置によって処理される少なくとも１つのデータ項目を記憶するための、少なくとも１つのメモリを備え、前記複数のイニシエータデバイスのうちの少なくとも１つは、前記少なくとも１つのメモリに記憶される前記データ項目のサブセットのローカルコピーを記憶するための、キャッシュを備え、前記相互接続回路は、
前記複数のイニシエータデバイスからのトランザクション要求を受信するための、複数の入力ポートと、
前記少なくとも１つの受信側デバイスに、トランザクション要求を出力するための、少なくとも１つの出力ポートと、
前記複数の入力ポートと前記少なくとも１つの出力ポートとの間で前記トランザクション要求を伝送するための、複数の経路と、
前記データ処理装置によって処理されるデータ項目のコヒーレンスを維持するために、同一データ記憶位置への前記トランザクション要求のうちの少なくともいくつかが、前記相互接続回路を通過する順序を維持するための、コヒーレンス制御回路と、
を備え、
前記相互接続回路は、前記コヒーレンス制御回路を経由するトランザクション要求とは無関係に、ライトバックトランザクション要求が進行するように、前記コヒーレンス制御回路で前記ライトバックトランザクション要求を制御しないように構成され、
前記ライトバックトランザクション要求は、前記キャッシュを備える前記少なくとも１つのイニシエータデバイスから受信される、書き込みトランザクション要求であり、前記少なくとも１つのメモリを、前記データ項目のうちの１つのローカルに記憶された更新値で更新するためのものである、
データ処理装置。
【請求項５】
前記相互接続回路は、前記入力ポートのうちの少なくとも１つが、前記少なくとも１つの入力ポートに接続される前記イニシエータによって処理されるデータ項目のローカルコピーを記憶するために、それと関連するデータストアを備える、相互接続回路であり、前記データ項目の前記ローカルコピーのコヒーレンスは、前記コヒーレンス制御回路によって制御され、前記少なくとも１つのポートに接続される前記イニシエータは、書き込み固有トランザクションを発行するように構成されるイニシエータデバイスに従って、前記イニシエータデバイスを備え、書き込み固有トランザクションは、記憶位置への書き込みトランザクションであり、前記書き込み固有トランザクションは、前記記憶位置に記憶されるデータ項目のあらゆるローカルコピーが無効にされることを確実にし、前記イニシエータは、書き込み固有トランザクションが保留中である間、ライトバックトランザクションを発行しないように構成される、請求項４に記載のデータ処理装置。
【請求項６】
前記イニシエータのうちの少なくとも１つは、キャッシュを備えない、請求項４に記載のデータ処理装置。
【請求項７】
コヒーレンスを維持する方法であって、
ライトバック要求を、キャッシュを備えるイニシエータから相互接続を介してメモリに発行するステップであって、前記ライトバック要求は、前記キャッシュ上でローカルに記憶されるデータ項目の更新値で、前記メモリを更新するための、書き込みトランザクション要求である、メモリに発行するステップと、
コヒーレンス制御回路を経由するトランザクション要求とは無関係に、前記ライトバック要求が前記相互接続を通過することを可能にするステップとを含み、前記ライトバック要求のトランザクションが保留中である前記キャッシュの中の記憶位置の状態をクエリする、前記イニシエータにおけるクエリ要求の受信に応答して、前記イニシエータは、保留中である前記ライトバック要求のトランザクションが完了するまで、前記クエリ要求に応答しない、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、より具体的には、相互接続を介して、データを記憶するための少なくとも１つのメモリに接続される複数のマスターで構成されるシステムにおいて、データのコヒーレンスを維持することに関し、該システムは、マスターのうちの１つ以上、および場合によっては相互接続において、データのサブセットのコピーのためのローカルストレージを有する。
【背景技術】
【０００２】
複数のイニシエータデバイスまたはマスターが相互接続回路を介してメモリに接続され、かつ相互接続および／またはイニシエータデバイスにおいて、データのサブセットのために、ローカルデータストレージが提供されるシステムと関連する、コヒーレンスの問題が存在する。
【０００３】
これらの問題に対処するために、コヒーレント相互接続を通過するトランザクション要求の順序を維持するために、かつデータ項目が要求される場合、項目の現在のバージョンが戻されることを確実にするために、それらの中にコヒーレンス制御回路を有する、コヒーレント相互接続が考案されてきた。コヒーレンス制御回路は、キャッシュ等のローカルストアの状態およびそこに記憶される値をクエリし、かつ要求されたデータ項目の最新のバージョンが戻されることを確実にする、スヌープトランザクション（スヌープ要求、スヌープ応答、および任意選択でスヌープデータから形成される）を生成することによって作動する。ローカルストアの中のコピーが新しい値で上書きされる時、このローカルコピーは、スヌープが実行される時に、これがそのデータ項目の最新のバージョンであることが明らかとなるように、ダーティとマークされる。後のある時点で、システムがこの新しい値をメモリに書き込みするためにライトバックを実行するとすぐ、ローカルコピーがもはやダーティとマークされず、メモリも最新のバージョンを保持する。
【０００４】
本技術は、典型的に複雑なモデム回路に実行されるトランザクションと関連する可変遅延の結果として、発行されるスヌープ要求および他のトランザクションが、それらが発行されたものとは異なる順序で完了する場合があることを認識する。
【０００５】
本技術はまた、同一アドレスへのライトバックが、それらが発行された順序で完了することが重要であることを認識する。そうではない場合、前のライトバックは、後のライトバックを上書きし、データ項目の古い値がメモリに記憶される。これは、ライトバックが保留中であるアドレスにアクセスするスヌープ要求への任意の応答をストールさせ、かつこの要求が後に再送信されることを要求することによって対処されてきた。これが行われた場合、このアドレスへの任意の他のトランザクションは、完了することができず、したがって、ライトバックが正確な順序で生じることを保証することができる。この技術の不利点としては、別の要求が完了するために、ストールされたスヌープが完了することが要求される場合に、デッドロック状態が生じる可能性、ならびにスヌープ要求の再送信と関連する電力消費および待ち時間の増加が挙げられる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施形態は、過度に電力消費を増加させるか、または性能を低下させることなく、順序が狂って生じるライトバックと関連する問題に対処しようと努める。
【課題を解決するための手段】
【０００７】
第１の態様から見ると、本発明は、データ処理装置のための相互接続回路を提供し、前記相互接続回路は、複数のイニシエータデバイスおよび少なくとも１つの受信側デバイスを相互接続させるためのルートを提供するように構成され、前記少なくとも１つの受信側デバイスのうちの少なくとも１つは、前記処理装置によって処理される少なくとも１つのデータ項目を記憶するための、少なくとも１つのメモリを備え、前記複数のイニシエータデバイスのうちの少なくとも１つは、前記少なくとも１つのメモリに記憶される前記データ項目のサブセットのローカルコピーを記憶するための、キャッシュを備え、前記相互接続回路は、前記複数のイニシエータデバイスからのトランザクション要求を受信するための、複数の入力ポートと、前記少なくとも１つの受信側デバイスにトランザクション要求を出力するための、少なくとも１つの出力ポートと、前記複数の入力と前記少なくとも１つの出力との間で前記トランザクション要求を伝送するための、複数の経路と、前記データ処理装置によって処理されるデータ項目のコヒーレンスを維持するために、同一データ記憶位置への前記トランザクション要求のうちの少なくともいくつかが前記相互接続回路を通過する順序を維持するための、コヒーレンス制御回路とを備え、前記相互接続回路は、前記コヒーレンス制御回路を経由するトランザクション要求とは無関係に、前記ライトバックトランザクション要求が進行するように、前記コヒーレンス制御回路で前記ライトバックトランザクション要求を制御しないように構成され、前記ライトバックトランザクション要求は、前記キャッシュを備える前記少なくとも１つのイニシエータデバイスから受信される、ライトトランザクション要求であり、前記少なくとも１つのメモリを、前記データ項目のうちの１つのローカルに記憶された更新値で更新するためのものである。
【０００８】
本発明は、同一データ項目の複数のコピーを有するシステムにおいて、より古いバージョンがより新しいバージョンを上書きすることによって、このデータ項目が破損する可能性が存在することを認識する。この点において、システムは、データ項目の最新のバージョンがそのようなものとしてマークされ、それがローカルに記憶される場合、ある特定の点で、データ項目のこの新しいバージョンがメモリに書き込みされ、メモリが更新されたバージョンを有するように、ライトバック設備が提供されるように設定される。メモリおよびローカルストアは異なるバージョンを有するが、誤ったバージョンが使用されないように、ローカルストアの中のバージョンが最新のバージョンであるとマークされることが重要である。
【０００９】
メモリへのこの値のライトバックは、即時トランザクションではなく、いくらか時間をかけることができる。これ自体が、例えば、別のイニシエータデバイスが同一アドレスに読み出し固有を実行する時、イニシエータデバイスがその値の更新されたバージョンをメモリにライトバックする過程にある場合、問題を引き起す可能性がある。読み出し固有は、読み出しを行うデバイスがそのデータの唯一のローカルコピーを有することを要求する。したがって、読み出し固有の結果として、クエリまたはスヌープが、ローカルストレージを有する任意の他のマスターに送信され、それらが該データのコピーを有するか確認し、そうである場合、コピーを戻し（それが、読み出し固有によって読み出されるコピーよりも最新のコピーである場合）、ラインを無効にする。読み出し固有を実行するマスターが、次いでデータを修正する場合、データは、その修正された形態でメモリにライトバックされる必要がある。このライトバックがすぐに実行される場合、それが、前のライトバックが完了する前にメモリに到達する危険性がある。これが生じた場合、現在では古いこの前の更新値は、後のライトバックが完了した後にメモリにライトバックされる可能性があり、新しい最新の値を上書きし、記憶されたデータ項目の破損を引き起こす。本発明は、コヒーレンス制御とは無関係に、ライトバックが進行するように、それらを配列することによってこの問題に対処し、このようにして、ライトバックは、コヒーレンス回路がそれらの前で別の方法により順序付けされる場合がある、他の動作によって中断されない。したがって、クエリ要求のストール等の動作を、これらの動作が、結果として、システムを、完了することができない何かを待つことによって永遠にストールする危険性を伴わず、安全に実行することができる。
【００１０】
さらに、コヒーレンス制御回路によって制御されないライトバック経路を提供することによって、これらの経路における遅延は、低減され、ライトバックは、必ず完了し、したがって、ライトバックが別のライトバックに追い越される可能性は、低減される。
【００１１】
コヒーレンス制御回路は、システム内のコヒーレンスを維持するために、ライトバック以外のいくつかのトランザクション要求を制御するために使用される。それは、読み出しのいくつかまたは全部を制御するために使用することができる。概して、コヒーレンス問題を引き起こす場合がある読み出しの全部は、コヒーレンス制御回路によって制御され、したがって、キャッシュされていない、または共有可能ではないデータの読み出しは、コヒーレンス制御を必要としないが、全ての他の読み出しは、コヒーレンス制御を有するべきである。
【００１２】
いくつかの実施形態では、読み出しトランザクションの全部は、コヒーレンス制御回路によって制御され、他の実施形態では、書き込みトランザクションのうちの少なくともいくつかが制御されるが、ライトバックトランザクション要求は、決して制御されない。いくつかの実施形態では、制御されない書き込みは、キャッシュされず、かつ共有可能ではない、データ項目へのライトバックおよび書き込みである。
【００１３】
いくつかの実施形態では、前記トランザクション要求は、キャッシュ維持要求をさらに含み、前記キャッシュ維持要求は、前記コヒーレンス制御回路を通して伝送される。
【００１４】
読み出しおよび書き込みトランザクションに加えて、相互接続を通して伝送される、キャッシュ維持要求が存在する場合がある。これらの要求は、異なるキャッシュに記憶されるデータのコヒーレンスを維持するのに役立ち、コヒーレンス制御回路によって制御される必要がある。これらのキャッシュ維持要求は、キャッシュに発行される時に、相互接続に全部のダーティデータを戻し、記憶位置を無効に更新する、クリーン固有というものを含む。相互接続は、メモリの更新に関与する。
【００１５】
相互接続は、読み出し専用の経路および書き込み専用の経路を有してもよい。この場合、これらは、相互接続を通して独立して伝送することができ、これは、ライトバックがいかなる読み出しからの干渉もなく移動することを可能にする。
【００１６】
いくつかの実施形態では、前記のキャッシュ維持要求は、前記の読み出し経路に沿って伝送される。
【００１７】
キャッシュ維持要求は、利用可能な経路のいずれかに沿って伝送されてもよいが、いくつかの実施形態では、それらは、読み出し経路に沿って伝送される。読み出し経路は、キャッシュコヒーレンス制御回路を通過し、したがって、キャッシュ維持動作は、それらがこれらの経路をたどる場合、この回路によって制御することができる。これは、これらの要求がコヒーレンスに影響を与え、相互接続によって制御されなければならないため、有利である。
【００１８】
いくつかの実施形態では、前記コヒーレンス制御回路を通過する前記書き込みおよび読み出し経路は、シリアライゼーションの少なくとも１つの点のうちの１つを通過する。
【００１９】
コヒーレンス制御回路は、トランザクションがコヒーレンスを維持するために実行されるタイミングおよび順序を制御する。この回路に入るトランザクション要求は、シリアライゼーションの１点を通過してもよく、したがって、この点においてそれらより先のいかなるトランザクションも、これらのトランザクション要求が実行される時に影響を与える。シリアライゼーションのその点の後にトランザクションを再び順序付けるいくつかの手段が存在する可能性があるが、それらは、シリアライゼーションの１点を通過する本質的な性質によって、それらより先のトランザクション要求によってある程度遅延させられる。
【００２０】
いくつかの実施形態では、前記コヒーレンス制御回路は、前記の複数のイニシエータデバイスのうちのいずれか１つのキャッシュ内のローカルに記憶されたデータと、前記複数のイニシエータデバイスのうちの別のデバイスから受信されるトランザクション要求との間のコヒーレンス不一致を回避するための、クエリトランザクションを生成することによって、前記データ処理装置によって処理されるデータ項目のコヒーレンスを維持するように構成される。
【００２１】
コヒーレンス制御回路は、ローカルストアがトランザクション要求によって要求されるデータ項目のローカルコピーを記憶しているか確認するために、それらをクエリするクエリトランザクションを生成してもよい。
【００２２】
いくつかの実施形態では、前記入力ポートのうちの少なくとも１つは、前記少なくとも１つのポートに接続される前記イニシエータによって処理されるデータ項目のローカルコピーを記憶するために、それと関連するデータストアを備え、前記データ項目の前記ローカルコピーのコヒーレンスは、前記コヒーレンス制御回路によって制御される。
【００２３】
データ項目のローカルコピーを記憶するために、それと関連するデータストアを備えるポートを有することは、有利である可能性がある。例えば、それら自身のローカルデータストアを有しないレガシー構成要素が相互接続に接続される場合、それらが使用することができる相互接続上にローカルデータストアを提供することによって、それらが他のデバイスと互換性がある方法で機能することを可能にする場合がある。さらに、デバイスがキャッシュを有する場合、相互接続上へのデータストアの提供によって、データ項目が、キャッシュ内にラインを割り当てることなく、そのデバイスに書き込まれることを可能にする。しかしながら、イニシエータデバイスからのこのデータストアへの書き込みは、ポートを通過し、したがって、ライトバック等のイニシエータデバイスによって発行される他の書き込みを遅延させることに留意されたい。したがって、システムがかかる相互接続を使用している場合、イニシエータデバイスは、それによって発行される任意の書き込みがこのデータストアにおいて保留中である間、そのライトバック機能を制限する必要がある場合がある。
【００２４】
このローカルデータストアへの書き込み時、書き込み固有が使用されることに留意されたい。これらは、任意の他のデータストアにそのデータ項目の古いコピーが存在しないように、書き込まれているデータ項目のローカルコピーが１つだけ存在することを要求する書き込みである。したがって、書き込み固有に応答して、クエリ要求が他のローカルストアに送信され、このデータ項目の任意のコピーが無効にされることを確実にする。データ項目の最新の値がローカルに記憶される場合、この値は、無効にされる前に戻される。各ポートは、それ自体のデータストアを有してもよいが、単一のデータストアが複数のポート間で共有されてもよく、保留中の書き込み固有を記憶するために、各ポートがこのデータストアを使用することができることに留意されたい。これは、明らかにエリア上の利点を有するが、性能上の影響を与えるかもしれない。
【００２５】
このデータストアは、多数の形態を取つことができるが、いくつかの実施形態では、単一ラインキャッシュ等の小規模キャッシュを備える。
【００２６】
いくつかの実施形態では、前記入力ポートのうちの少なくとも１つは、受信されたトランザクション要求を保持するための手段を備え、前記少なくとも１つの入力ポートは、前記記憶されたトランザクション要求に関連する少なくとも１つのクエリを、前記他のイニシエータデバイスのうちの少なくとも１つに伝送し、かつ応答の受信に応答して、前記応答を前記保持されたトランザクション要求と関連付け、それらをさらに伝送するように構成される。
【００２７】
いくつかの実施形態では、処理されるデータ項目を記憶するためのデータストアを有するよりもむしろ、システムは単純に、クエリが送信される間、保留中のトランザクション要求を保持してもよい。次いで、クエリおよびトランザクション要求の結果は、さらに送信することができる。これは、データがローカルに記憶される必要がないことを意味し、これは、ゲート数を減少させるが、しかしながら、待ち時間を増加させる場合がある。
【００２８】
いくつかの実施形態では、前記少なくとも１つの受信側デバイスは、書き込みおよび読み出しトランザクション要求の両方を受信し、かつメモリコントローラによって決定される順序で、前記読み出しおよび書き込みトランザクション要求を処理するように構成され、前記コヒーレンス制御回路は、前記コヒーレンス制御回路が前記読み出しトランザクション要求の完了を保証することができるまで、読み出しトランザクション要求をさらに伝送しないように構成される。
【００２９】
いくつかの受信側デバイスは、１種類のトランザクションが他の種類を中断させる場合がある、独立して読み出しおよび書き込みを処理しない場合がある。この結果として、相互接続が送信中である読み出しを許容しない場合、バックプレッシャがメモリコントローラから及ぼされる可能性があり、受信側デバイスがもはや書き込みに応答できなくなる可能性がある。この場合、メモリデバイスに送信されたライトバックが読み出しによって中断されるかもしれない危険性がある。別のトランザクションを実行する前に、ライトバックが完了していることを確実にしたい場合、ライトバックが他のトランザクションによって中断されないことが重要である。したがって、本発明の実施形態では、コヒーレンス制御回路は、完了していることを保証することができるまで、読み出しトランザクション要求をさらに伝送しないように構成される。したがって、読み出しの完了に影響を有するかもしれない未処理のトランザクション要求が存在する場合、それは、さらに伝送されず、したがって、それは、完了に進むことが既知である場合を除き、ライトバック要求より先に受信側デバイスに存在することができない。
【００３０】
いくつかの実施形態では、前記コヒーレンス制御回路は、書き込み固有トランザクションの受信に応答して、記憶位置に書き込みし、前記記憶位置に記憶されるデータ項目のローカルコピーを記憶する場合がある前記イニシエータデバイスのうちの少なくとも１つに、少なくとも１つのクエリを発行し、かつ前記少なくとも１つのクエリへの応答から前記データが前記書き込みトランザクションによって取り出されることが明らかである時のみ、前記書き込みトランザクションをさらに伝送するように構成される。
【００３１】
ライトバックは、読み出しおよび書き込みの両方の後で、受信側デバイスにおいて中断される場合があるため、システムが、他の動作を実行する前にライトバックが完了するのを待っており、それにもかかわらず他の動作の非実行が、ライトバックが完了するのを妨げている状況が生じないように、両方が、受信側デバイスに発行される前に、完了することが可能であることが既知であることが重要である。
【００３２】
本発明の第２の態様は、前記メモリに記憶される前記データ項目のうちの少なくとも１つのローカルコピーを記憶するための、キャッシュであって、前記少なくとも１つのイニシエータがライトバック動作を実行し、前記更新されたデータ項目が前記メモリに書き込まれるまで、前記少なくとも１つのイニシエータが、更新される前記ローカルに記憶されたデータ項目に応答して、前記ローカルに記憶されたデータ項目をダーティとマークすることによって、前記ローカルに記憶された少なくとも１つのデータ項目のコヒーレンスを維持するように構成される、キャッシュと、少なくとも１つの受信側デバイスにトランザクション要求を伝送し、かつデータおよび前記キャッシュをクエリするクエリ要求を受信するための、少なくとも１つのポートとを備える、イニシエータデバイスを提供し、前記イニシエータデバイスは、前記記憶位置へのライトバックトランザクションが保留中である場合、前記キャッシュ内の記憶位置の状態をクエリする要求の受信への応答を発行しないように、かつ前記保留中のライトバックトランザクションが完了した時に前記応答を発行するように構成され、前記ライトバックトランザクション要求は、前記メモリが前記データ項目の現在値を記憶するように、それ自体が更新された前記キャッシュに記憶されるデータ項目の値で、前記メモリを更新するように、前記イニシエータデバイスによって発行される要求である。
【００３３】
前に述べたように、メモリへのライトバックは、そのデータの後のバージョンの別のライトバックがメモリに到達する前に完了することが重要である。これに対処する一方法は、ライトバックが現在実行されているデータ項目の記憶位置への任意のクエリトランザクションをストールすることであってもよい。これが行われた場合、この記憶位置への任意の他のトランザクションは、完了することができず、したがって、ライトバックが正確な順序で生じることを確実にすることができる。これの１つの考えられる不利点は、それ自体が保留中であり、ライトバックが完了するまでストールしているイニシエータからの結果を待っている、トランザクション要求によって中断されているため、ライトバック自体が完了していない場合かもしれない。しかしながら、相互接続が、ライトバックが完了しなければならないように設計されている場合、その位置へのライトバックが保留中である間、いかなるクエリにも応答しないイニシエータデバイスの能力の提供によって、効果的な電力効率およびライトバックのコヒーレンスを確実にする速い方法を提供する。これに対処する以前の方法は、今は応答することができないこと、およびこの要求が後で再送信されるべきであることを伝えることによって、クエリまたはスヌープ要求に応答することであったことに留意されたい。この不利点は、それを後で送信するために必要とされる電力、およびそれを後で送信することと関連するタイミングの検討である。
【００３４】
いくつかの実施形態では、前記イニシエータデバイスは、書き込み固有トランザクションを発行するように構成され、書き込み固有トランザクションは、記憶位置への書き込みトランザクションであり、書き込み固有トランザクションは、前記記憶位置に記憶されるデータ項目の任意のローカルコピーが無効にされることを確実にし、前記イニシエータは、書き込み固有トランザクションが保留中である間、ライトバックトランザクションを発行しないように構成される。
【００３５】
書き込み固有トランザクションは、それらがデータ項目の唯一のローカルコピーに書き込みしていることを要求し、したがって、クエリ要求は、データの任意の他のローカルコピーが取り出され、適切な場合無効とマークされるか、または単に無効とマークされることを確実にするために、書き込み固有トランザクションに応答して送信される。そのクエリからの応答を待ってストールされる、イニシエータデバイスのポートから発行される、書き込み固有トランザクションは、その後のライトバック要求をストールすることができる。したがって、ライトバック要求がクエリに応答してストールされるいかなる可能性も回避するために、イニシエータデバイスは、保留中の書き込み固有要求が存在する場合、ライトバック要求を開始しないように構成することができる。ライトバック要求は、別のイニシエータがそのデータ項目のコピーを必要としている場合、必ずもう一方のローカルデータストアにクエリし、いかなる場合でもそれを発見するように、任意の特定の時間に発行される必要はない。
【００３６】
いくつかの実施形態では、前記イニシエータデバイスは、キャッシュを備え、書き込み固有トランザクションを発行するように構成され、書き込み固有トランザクションは、データ項目の唯一のローカルコピーを記憶し、前記イニシエータは、ダーティである前記キャッシュにおける前記ラインのいずれかに応答して、前記書き込み固有トランザクションを発行しないように構成される、前記位置への書き込みトランザクションである。
【００３７】
場合によっては、キャッシュは、クエリ要求がダーティとマークされる記憶位置をクエリする場合、キャッシュが、クエリに応答してデータ値を戻すよりもむしろ、その値をメモリに書き込みするように設計されてもよい。これは、そのデータ項目を必要とするデバイスが、次いで、それをメモリから取り出すことができることを確実にする。ダーティデータがクエリを発行するデバイスに送信される実装よりも、この実装は遅いが、１つのキャッシュから別のキャッシュにデータを伝送するために必要とするデータ経路は、より少ない。この実装において、イニシエータデバイスは、ダーティである任意のキャッシュラインが存在する、書き込み固有トランザクションを発行してはならない。これは、ダーティラインへのアクセスが、この実装に対するライトバックをトリガーし、ライトバックトランザクションが、書き込み固有が保留中である間は許可されないためであるが、この場合、ライトバックトランザクションが必要とされ、遅延することはできず、したがって、書き込み固有は、この場合に許可されるべきではない。
【００３８】
本発明の第３の態様は、複数のトランザクション要求を発行するように構成される、複数のイニシエータと、前記複数のトランザクション要求を受信するように構成される、少なくとも１つの受信側であって、前記少なくとも１つの受信側のうちの少なくとも１つは、前記データ処理装置によって処理されるデータ項目を記憶するための、メモリを備える、少なくとも１つの受信側と、本発明の第２の態様に従ったイニシエータを備える、前記複数のイニシエータのうちの少なくとも１つと、本発明の第１の態様に従った相互接続回路とを備える、データ処理装置を提供する。
【００３９】
ライトバックが完了することが保証されるシステムの提供によって、ライトバックが保留中である記憶位置への任意のクエリが、ライトバックが完了するまで遅延させられることを可能にし、ライトバックが誤った順序で完了するいかなる可能性も回避する。これは、クエリ要求をストールする能力を有するイニシエータデバイスが、相互接続に接続されることを可能にする。
【００４０】
いくつかの実施形態では、相互接続回路が、書き込み固有が相互接続に書き込みするイニシエータデバイスによって実行されることを可能にする、ローカルデータストアを有する場合、イニシエータを使用することが有利である場合があり、それは、書き込み固有が保留中である場合に、ライトバックが生じることを許可しないか、または設計が、ライトバックがクエリ要求によってトリガーされるようなものである場合、キャッシュにおいてダーティラインが存在する場合、書き込み固有が生じることを許可しない。
【００４１】
いくつかの実施形態では、イニシエータの全てがキャッシュを有してもよいが、他の実施形態では、少なくともいくつかは、キャッシュを有しない場合があることに留意されたい。
【００４２】
本発明の第４の態様は、ライトバック要求を、キャッシュを備えるイニシエータから相互接続を介してメモリに発行するステップであって、前記ライトバックトランザクション要求は、前記キャッシュ上でローカルに記憶されるデータ項目の更新値で、前記メモリを更新するための、書き込みトランザクション要求である、メモリに発行するステップと、前記保留中のライトバックトランザクションが完了するまで、前記クエリ要求に応答せず、前記ライトバックトランザクションが保留中である前記キャッシュの中の記憶位置の状態をクエリする、前記イニシエータにおける要求の受信に応答して、コヒーレンス制御回路を経由するトランザクション要求とは無関係に、前記ライトバック要求が前記相互接続を通過することを可能にするステップとを含む、コヒーレンスを維持する方法を提供する。
【００４３】
本発明の上記および他の特徴および利点は、添付の図面に関連して読まれるものである、例示的な実施形態の以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００４４】
【図１】本発明の一実施形態に従った、データ処理装置を概略的に示す図である。
【図２】コヒーレンス制御回路を有する、相互接続回路を概略的に示す図である。
【図３】２つのマスターに接続された、相互接続回路を概略的に示す図である。
【図４】キャッシュを有する、マスターを概略的に示す図である。
【図５】図４のキャッシュとは異なって構成されるキャッシュを有する、マスターを概略的に示す図である。
【図６】本発明の一実施形態に従った、ライトバック要求の順序付けが維持されることを確実にする方法のステップを示す、フロー図である。
【図７】本発明の一実施形態に従った、イニシエータデバイス内で実行される方法のステップを示す、フロー図である。
【発明を実施するための形態】
【００４５】
図１は、本発明の一実施形態に従った、データ処理装置５を示す。データ処理装置５は、２つのイニシエータデバイス１０および１５、相互接続５０、ならびにメモリ３０を備える。イニシエータデバイス１０は、データのローカルコピーを記憶するためのキャッシュ１２を有し、入力ポート４０を介して相互接続５０と通信する。入力ポート４０は、イニシエータデバイス１０からのトランザクション要求およびデータを受信し、これらを相互接続に伝送し、入力ポート４０はまた、相互接続５０からのクエリまたはスヌープ要求を受信し、これらをイニシエータデバイス１０に伝送する。イニシエータデバイス１５は、入力ポート４２を介して相互接続５０と通信し、このポートを通して相互接続５０にトランザクション要求を伝送する。相互接続５０は、受信されるトランザクション要求の順序付けを維持し、データ項目のコヒーレンスが維持されることを確実にするように動作を実行する、コヒーレンス制御回路５５を備える。
【００４６】
イニシエータは、入力ポートを介して相互接続にトランザクション要求を伝送するデバイスであることに留意されたい。イニシエータは、入力ポートを介して相互接続から、クエリまたはスヌープ要求の形態で要求を受信してもよい。受信側は、要求を受信するメモリ等のデバイスである。
【００４７】
このシステムにおけるキャッシュは、ライトバックキャッシュ、すなわち、書き込みに応答して、ラインをキャッシュにフェッチさせ、ローカルに修正させ、メモリに記憶されるデータ項目のバージョンよりも最近のデータ項目のバージョンがキャッシュに記憶されることを示すダーティに、状態を更新させる、ライトバックキャッシュである。後で、メモリにこの値を書き込みするために、ライトバックが実行されるとすぐ、状態はクリーンに更新される（それがメモリにおける値と同一の値を保持することを意味する）。クリーンであるキャッシュエントリは、メモリの更新に関与しないため、安全かつ静かに無効状態に移行することができる。ダーティであるキャッシュエントリは、無効へ移行することができず、最初に、そのデータをメモリにライトバックする必要があり、これが完了した時、状態は、クリーンに移行することができ、次いで、任意選択で無効に移行することができる。あるいは、スヌープが同一キャッシュエントリに受信され、メモリの更新への関与がスヌープ応答によって相互接続に通されるとすぐに、キャッシュエントリの状態は、無効に移行することができる。
【００４８】
この実施形態では、イニシエータの全部が、読み出し固有として読み出しを発行し、それは、そのデータ項目のローカルコピーの１つのみが記憶されることを意味する。したがって、読み出し固有に応答して、データ項目の最新のバージョンがフェッチされ、全ての他のローカルバージョンは、無効とマークされる。データ値が別のキャッシュから読み出しされる場合、キャッシュにおけるそのエントリのダーティ／クリーン状態は、データとともに移動する。
【００４９】
イニシエータが、別のイニシエータが読み出し固有を実行するのとほぼ同時に、ライトバックを実行する場合、読み出し固有に関する潜在的な問題が生じる可能性がある。これは、コヒーレント相互接続が最初に処理するのはどちらかであるかという競争をもたらす場合がある。ライトバックが提供されるキャッシュによって、読み出し固有スヌープが確認される前に、ライトバックが発行される場合、データは、ライトバックがメモリにヒットする前に、読み出し固有によって取り出すことができる可能性がある。これは、次いで、データ読み出しが修正される可能性があり、そのイニシエータが、それ自体のライトバックを実行する可能性があり、最初のイニシエータからのライトバックと競争する可能性があるため、潜在的に悪い状況である。この後者が最初に完了した場合、最初に発行されたライトバックは、古い値を有するメモリ内のデータを破損する。
【００５０】
この潜在的な問題は、図１のデバイスによって対処される。
【００５１】
図１のデータ処理装置において、イニシエータデバイス１５からの読み出し固有トランザクション要求に応答して、コヒーレンス制御回路５５は、ポート４０を介してイニシエータデバイス１０に、スヌープ信号の形態でクエリ要求を送信する。この実施形態では、ポート４０は、単一ポートとして示されるが、当業者は、これらの信号を受信するための複数のポートが存在してもよいことを理解するであろうことに留意されたい。例えば、イニシエータ１０からの読み出しおよび書き込みチャネルを受信するための１つのポート、およびスヌープチャネルを取り扱うための別個のポートである。このクエリは、キャッシュ１２のステータスをクエリし、読み出しの対象であるデータ項目がそこに記憶されているか判定する。記憶されている場合、データを取り出し、ラインが現在のライトバックの対象である場合を除き、位置を無効とマークし、その場合、スヌープ応答は、そのライトバックが完了するまでストールされる。データが読み出される場合、このデータは、キャッシュ１７に戻され、次いで、キャッシュ１７は、キャッシュ１２における記憶位置がダーティとマークされている場合、ダーティとマークされる。後のある時点で、メモリ３０がデータ項目の最新の値を保持するように、キャッシュ１７に記憶される任意のダーティ値は、メモリ３０に書き込みされる必要がある場合がある。したがって、ある時点で、イニシエータデバイス１５は、ライトバックトランザクション要求を発行し、これは、コヒーレンス制御回路５５ではなく、メモリ３０に直接送られる。これは、出力ポート４８への相互接続を通過し、その進行がコヒーレンス制御回路５５からのいかなるコヒーレンス制御動作によっても妨げられないことを確実にするために行われる。これは、ライトバックが保留中である時に、クエリまたはスヌープ要求がイニシエータデバイスのうちの１つにおいて受信される場合、それが、ライトバックが完了するまで安全にストールすることができるように行われる。これは、ライトバックが完了すると確信している場合のみ可能である。スヌープまたはクエリ要求がこの方法でストールされることを可能にすることは、例えば、キャッシュがその項目に対してライトバックを実行していた間、キャッシュからデータを読み出し、次いで、それ自体が、メモリへのそのデータ項目のライトバックを実行するための読み出し固有において生じる場合がある問題が、回避されることを意味する。
【００５２】
コヒーレンス制御回路にライトバックを伝送しないことに加えて、ライトバックが完了することが保証されることを確信するために、相互接続が従うさらなるルールが存在する。
【００５３】
メモリ３０を見ると、メモリコントローラ３３の内側のこのメモリに進む、別々の読み出しおよび書き込み経路が存在するが、それらは、結合して単一経路を形成してもよいことがわかる。
【００５４】
したがって、書き込みおよび読み出しは、メモリによって定義される順序で実行され、相互が完了するのを待つ必要がある。したがって、コヒーレンス制御回路５５は、読み出しトランザクションが必ず完了することを知っている場合のみ、メモリ３０に読み出しトランザクションを発行するように構成される。同様に、それは、書き込みトランザクションが完了することが確実にすることができる場合のみ、書き込みトランザクションを発行する。これは、ライトバックトランザクションが、それが完了することができる前に何かを待っている別のトランザクションの後で、永久に中断されないことを確実にする。
【００５５】
図２は、本発明の第２の実施形態に従った相互接続１５０を示す。この実施形態では、イニシエータデバイスへの接続のために、入力ポート１４０、１４２、および１４４が存在する。入力ポート１４０に接続されるイニシエータデバイスは、キャッシュを有さず、したがって、このポートへのスヌープラインは存在しない。また、受信側デバイスまたはメモリへの出力ポート１４８も存在する。
【００５６】
この相互接続において、相互接続自体内に何らかのローカルストレージが存在する。ローカルストレージ１５７は、この実施形態において、単一ラインストアを備え、イニシエータデバイス１４０および１４２がそれら自体のキャッシュにおいてラインを配置することなく、書き込みを実行することを可能にする。いくつかの実施形態では、各イニシエータデバイスに対して別個のローカルストレージが提供される場合があるが、この実施形態のような他の実施形態では、共有ローカルストレージが存在する場合があり、一方で、さらに他の実施形態では、ローカルストレージが提供されないことに留意されたい。
【００５７】
相互接続上のローカルストレージはまた、それら自体のキャッシュを有しないイニシエータデバイスとともに使用され得る。
【００５８】
入力ポート１４０および１４２で受信される書き込みトランザクションは、単一ラインストア１５７に書き込んでもよく、スヌープ要求を生成するコヒーレンス制御回路１５５を通過してもよい。入力ポート１４０および１４２でイニシエータデバイスから受信されるライトバックトランザクションは、迂回させられ、コヒーレンス制御回路１５５を介しては送信されず、メモリに接続される出力１４８に直接送信される。コヒーレンス制御回路１５５は、それが受信する読み出しおよび書き込みトランザクションに応答して、コヒーレンス動作を実行する。したがって、単一ラインストア１５７に送信される書き込みトランザクションに応答して、コヒーレンス制御回路１５５は、書き込まれたデータ項目が、スヌープ動作を実行することによって任意のローカルストレージに存在しているかを判定し、存在している場合、記憶位置を無効とマークする。
【００５９】
図３は、図２の相互接続の代替の実施形態を示す。この実施形態では、相互接続２５０は、単一ラインストア１５７ではなく、制御論理２５７を有する。イニシエータデバイス２１０からの書き込みトランザクションの受信に応答したこの制御論理は、レディ信号が送信されるまで、イニシエータデバイスが書き込みトランザクションをそのピン上で保持するように、レディ信号をイニシエータデバイス２１０にすぐには送り返さない。したがって、この書き込みトランザクションは、入力ポート２４０を介して継続的に出力され、必要とされる任意のスヌープ動作は、制御回路２５７によって実行することができ、結果が得られた時、この結果および書き込みトランザクションを、さらに送信することができる。この時点で、制御回路２５７は、レディ信号をイニシエータデバイス２１０に送信し、イニシエータデバイス２１０に、さらに進み、次のトランザクションを出力するように伝える。これは、相互接続上の記憶空間を節約するが、待ち時間に関する影響を与える。この実施形態においてもまた、ライトバックがコヒーレンス制御とは無関係に生じることを可能にするために、相互接続内に別々のライトバックチャネルが存在する。書き込みトランザクションは、複数のデータビートとして送信されてもよく、したがって、アドレスは、アドレス書き込みチャネル上にあり、レディ信号が受信される時、後続のデータビートが送信されることに留意されたい。
【００６０】
本発明の実施形態で使用されるキャッシュは、異なる種類のキャッシュ、例えば、ＭＥＩまたはＭＯＥＳＩのいずれかであってもよい。ＭＥＩキャッシュは、修正（固有ダーティ）、排他（固有クリーン）、および無効状態のみをサポートするキャッシュである（図５を参照されたい）。一方で、ＭＯＥＳＩキャッシュは、所有（共有ダーティ）および共有（共有クリーン）状態もサポートする。
【００６１】
図４は、ＭＯＥＳＩキャッシュ１３を有するマスターまたはイニシエータデバイス１０を示す、一実施形態を示す。このキャッシュ１３は、多数のデータ項目を記憶し、記憶された項目が有効、ダーティ、または共有であるかどうかを示すインジケータがそれぞれと関連付けられる。キャッシュ１３はまた、キャッシュで受信される書き込みトランザクション、読み出しトランザクション、およびスヌープトランザクションを制御するための、制御回路１４を有する。
【００６２】
有効インジケータがキャッシュ内のデータが有効であることを示す一方で、無効インジケータは、それが使用されるべきではないことを示す。ダーティインジケータは、これがデータの更新されたバージョンであり、メモリにおけるデータよりも最近のバージョンであり、かつこのキャッシュがデータをメモリにライトバックすることに関与することを示す。共有インジケータは、それがデータの固有コピーであるかどうか、または別の場所に別のローカルコピーが存在するかどうかを示す。
【００６３】
制御回路１４は、受信されるトランザクションを制御するように構成され、より具体的には、特定の記憶位置へのスヌープトランザクションの受信に応答して、それは、その記憶位置に対して保留中のライトバックが存在するかどうかを判定する（概して、同一の記憶位置は、同一のアドレスを有するものであり、したがって、特定のアドレスに記憶されるデータ項目の複数のコピーが保持される、同一の記憶位置の複数のアドレスが存在してもよく、恐らくキャッシュに記憶されるローカルコピーもあれば、メモリで保持されるコピーもある。ライトバックは、メモリに向かって必ずライトバックし、それは、メモリ自体に対してでもよいし、またはコヒーレント相互接続のダウンストリームである、キャッシュに対してでもよい）。保留中のライトバックが存在する場合、制御回路１４は、スヌープをストールし、ライトバックが完了するまで、それが進行することを許可しない。このようにして、ライトバックが保留中であるアドレスへの任意の後のトランザクションが進行しないため、順序が狂って生じるライトバックによって起こる場合があるコヒーレンスの問題は、回避される。いったんライトバックが完了すると、スヌープは進行することができる。
【００６４】
制御回路１４はまた、書き込み固有トランザクションが保留中であるイニシエータデバイス１０によって、ライトバックが発行されることを回避するように機能する。これは、書き込み固有によって生成される場合があるスヌープ要求およびキャッシュ維持動作が存在するため、書き込み固有トランザクションがライトバックと干渉し、それが完了することを妨げる可能性があるためである。
【００６５】
ライトバックはメモリを最新に保つが、メモリが最新ではない場合、任意の他の書き込みまたは読み出しトランザクションが、最新の値を保持するキャッシュをスヌープし、ダーティフラグからそれが最新の値であることを判定するため、ライトバックが概してある特定の時点で実行される必要はないことに留意されたい。この時点で、それは、トランザクション要求に応答して、最新のデータを伝送し、場合によっては、ラインを無効とマークする。他の場合において、スヌープは、ラインが無効にされることを必要としない場合があり、その場合、それは、データを転送し、ラインを共有状態に保持する。したがって、ライトバックは、概して、便利である時に実行することができ、書き込み固有が保留中である間、ライトバックが発行されることを許可しないことが、容認できる。
【００６６】
図５は、キャッシュ４１３および制御回路４１４を有するイニシエータデバイス４００を備える、代替の実施形態を示す。このデバイスにおいて別個のスヌープデータチャネルは存在しないが、スヌープアドレスおよび応答チャネルが存在する。さらに、この実施形態では、図示されないが、このイニシエータから別のイニシエータにデータを伝送するためのチャネルは、存在せず、したがって、スヌープ信号に応答して、スヌープされるあらゆるダーティ項目は、この項目の最新の値がスヌープを生成したトランザクションによってメモリから取り出すことができるように、メモリに書き込まれなければならない。これは、この実施形態において、ダーティ項目へのスヌープがライトバックを生成し、その結果として、書き込み固有が、ストールされたスヌープの後で、キューから抜け出せなくなる可能性があるため、キャッシュにおいてダーティ項目が存在している間、書き込み固有が発行することができないことを意味する。
【００６７】
いくつかの実施形態では、ライトバックがある特定の点に到達したことを示す信号が受信された時に、ライトバックが完了したと見なされ、その点は、全部のライトバックがこの点を通過して移動する点であり、この点を越えて順序付けを維持するための回路が存在することに留意されたい。
【００６８】
図６は、本発明の一実施形態に従った方法を示す。この実施形態では、ライトバック要求は、イニシエータから相互接続に発行される。相互接続は、ライトバック要求が、いかなるコヒーレンス制御とも無関係に相互接続を通過することを可能にする。イニシエータデバイスは、ライトバック要求が発行された記憶位置をクエリする要求を受信する。イニシエータデバイスは、ライトバック要求が完了したかを判定する。完了していない場合、それは、クエリ要求をストールする。それが完了している場合は、別のライトバックがこの時点で発行されていないという条件で、クエリ要求に応答する。ライトバックが発行された場合、これは図示されないが、ライトバックは、クエリ要求が応答される前に、進行することが許可される。このようにして、順序が狂って生じるライトバックによるコヒーレンス問題は、起きない。
【００６９】
データ処理システム全体ではなく、イニシエータ内で生じる方法のステップを図７に示す。最初に、イニシエータは、ライトバック要求を発行し、次いで、ライトバック要求が発行された記憶位置をクエリする要求を受信する。次いで、ライトバック要求が完了しているかを判定する。完了していない場合、クエリ要求をストールし、ライトバックが完了していると判定した時は、クエリ要求に応答する。
【００７０】
本発明の例示的な実施形態が、添付の図面を参照して本明細書に詳細に記載されてきたが、本発明がそれらの明確な実施形態に限定されず、添付の特許請求の範囲によって定義されるように、本発明の範囲および精神から逸脱することなく、当業者によって種々の変更および修正をそこにもたらすことができることが理解される。
【符号の説明】
【００７１】
５  データ処理装置
１０，１５  イニシエータデバイス
１２，１７  キャッシュ
３０  メモリ
３３  メモリコントローラ
４０，４２  入力ポート
４８  出力ポート
５０  相互接続
５５  コヒーレンス制御回路
【図１】
0005815349.tif 000002
【図２】
0005815349.tif 000003
【図３】
0005815349.tif 000004
【図４】
0005815349.tif 000005
【図５】
0005815349.tif 000006
【図６】
0005815349.tif 000007
【図７】
0005815349.tif 000008