IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

<>
  • 特許-スヌープリクエストに対する応答の転送 図1
  • 特許-スヌープリクエストに対する応答の転送 図2
  • 特許-スヌープリクエストに対する応答の転送 図3
  • 特許-スヌープリクエストに対する応答の転送 図4
  • 特許-スヌープリクエストに対する応答の転送 図5
  • 特許-スヌープリクエストに対する応答の転送 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-10
(45)【発行日】2023-05-18
(54)【発明の名称】スヌープリクエストに対する応答の転送
(51)【国際特許分類】
   G06F 12/0815 20160101AFI20230511BHJP
【FI】
G06F12/0815
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2018014641
(22)【出願日】2018-01-31
(65)【公開番号】P2018129041
(43)【公開日】2018-08-16
【審査請求日】2021-01-22
(31)【優先権主張番号】15/427,384
(32)【優先日】2017-02-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ファニンドラ クマール マンナヴァ
(72)【発明者】
【氏名】ブルース ジェイムズ マシューソン
(72)【発明者】
【氏名】ジャムシェッド ジャラル
(72)【発明者】
【氏名】クラス マグナス ブルース
【審査官】酒井 恭信
(56)【参考文献】
【文献】特表2002-533813(JP,A)
【文献】米国特許第06490661(US,B1)
【文献】特開2007-199999(JP,A)
【文献】米国特許出願公開第2007/0174557(US,A1)
【文献】特開2003-216597(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08 - 12/0897
(57)【特許請求の範囲】
【請求項1】
データ処理装置であって、
要求されたデータに関して、転送を行うべきであるかについての指定を含むスヌープリクエストを要求元ノードに代わって受け取る受信回路と、
前記スヌープリクエストへの応答を送信する送信回路と、
前記要求されたデータのキャッシュ状態と関連して当該要求されたデータをキャッシュするキャッシュ回路を備え、
転送を行うべきとき、前記応答が前記要求されたデータを含み、前記送信回路が前記応答を前記要求元ノードに送信し、
前記スヌープリクエストは、前記要求元ノードとは異なり、ホームノードから受信され、
転送を行うべきとき、前記送信回路は更に、前記スヌープリクエストが満たされたことを示すために、前記ホームノードに完了通知を送信し、
前記要求されたデータの前記キャッシュ状態が無効であるかどうかに関係なく、前記要求されたデータの前記キャッシュ状態が共有されているかどうかに関係なく、前記要求されたデータの前記キャッシュ状態が所有されているかどうかに関係なく、前記要求されたデータの前記キャッシュ状態が排他的であるかどうかに関係なく、そして、前記要求されたデータの前記キャッシュ状態が変更されているかどうかに関係なく、前記転送を行う、データ処理装置。
【請求項2】
転送を行うことが禁じられているとき、前記応答が前記要求されたデータを含み、前記送信回路が前記応答を前記ホームノードに送信する、
請求項1に記載のデータ処理装置。
【請求項3】
前記スヌープリクエストが前記要求元ノードを示す指示子を含む、請求項1から2のいずれかに記載のデータ処理装置。
【請求項4】
前記スヌープリクエストが、前記スヌープリクエストの生成を引き起こした前記要求元ノードから前記ホームノードへのトランザクションを特定するトランザクション識別子を含み、
前記応答が前記トランザクション識別子を含む、
請求項1から3のいずれかに記載のデータ処理装置。
【請求項5】
前記スヌープリクエストが、前記要求されたデータに関連して前記データ処理装置に記憶されている状態には関わりなく転送を行うべきであるかを示す、請求項1から4のいずれかに記載のデータ処理装置。
【請求項6】
前記スヌープリクエストが、前記スヌープリクエストのタイプを符号化することによって、転送を行うべきであるかを示す、請求項1から5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記スヌープリクエストが、前記スヌープリクエスト内のビットによって、転送を行うべきであるかを示す、請求項1から5のいずれか1項に記載のデータ処理装置。
【請求項8】
前記送信回路が前記応答を前記要求元ノードに送信することができないとき、前記送信回路が前記応答を前記ホームノードに送信する、
請求項1から7のいずれかに記載のデータ処理装置。
【請求項9】
転送を行うべきであり、かつ、前記キャッシュ回路に前記要求されたデータがないとき、前記要求されたデータがないことを示すために前記送信回路が前記応答を前記要求元ノードに送信する、請求項1から8のいずれかに記載のデータ処理装置。
【請求項10】
前記要求されたデータを含む前記応答を前記要求元ノードへ送信することに加えて、前記キャッシュ回路内の前記要求されたデータに関連するキャッシュ状態が、前記キャッシュ状態と前記スヌープリクエストのタイプのうち少なくとも1つに依存して調節される、請求項1に記載のデータ処理装置。
【請求項11】
前記スヌープリクエストの前記タイプが、前記要求元ノードが前記要求されたデータをキャッシュするための所望のキャッシュ状態を示す、請求項10に記載のデータ処理装置。
【請求項12】
前記応答が、前記要求元ノードが前記要求されたデータをキャッシュするための要求キャッシュ状態を示す、請求項1から11のいずれかに記載のデータ処理装置。
【請求項13】
前記要求キャッシュ状態が共有状態である、請求項12に記載のデータ処理装置。
【請求項14】
前記要求されたデータが前記キャッシュ回路内で修正キャッシュ状態を示しているとき、前記要求キャッシュ状態がクリーンであり、前記送信回路が前記ホームノードにさらなる応答を送信し、
前記さらなる応答が、前記要求されたデータを含み、かつ前記要求されたデータが修正されていることを示す、
請求項12に記載のデータ処理装置。
【請求項15】
データ処理方法であって、
キャッシュ回路によって、1つのデータ値を当該データ値のキャッシュ状態と関連してキャッシュすることと、
受信回路によって、前記1つのデータ値に関して、転送を行うべきであるかについての指定を含むスヌープリクエストを、ホームノードとは異なる要求元ノードに代わって前記ホームノードから受け取ることと、
送信回路によって、前記スヌープリクエストへの応答を送信することを含み、
転送を行うべきであり、かつ前記1つのデータ値が存在するとき、前記応答が前記1つのデータ値を含み、前記1つのデータ値の前記キャッシュ状態が無効であるかどうかに関係なく、前記1つのデータ値の前記キャッシュ状態が共有されているかどうかに関係なく、前記1つのデータ値の前記キャッシュ状態が所有されているかどうかに関係なく、前記1つのデータ値の前記キャッシュ状態が排他的であるかどうかに関係なく、そして、前記1つのデータ値の前記キャッシュ状態が変更されているかどうかに関係なく、前記送信回路によって前記応答が前記要求元ノードに送信され、
転送を行うべきであり、かつ前記1つのデータ値が要求されたデータを含むとき、前記スヌープリクエストが満たされたことを示すために、前記送信回路によって前記ホームノードに完了通知が送信される、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はデータ処理に関する。より具体的には、本開示はキャッシュ操作に関する。
【背景技術】
【0002】
マルチプロセッサシステムには、それぞれが独自のキャッシュをもつ、ある数のノードまたはプロセッサが存在することがある。これらのノードは、共有された1つまたは複数のキャッシュまたはメモリに接続されていることがある。よって、ある特定のデータが、共有されたキャッシュまたはメモリのうち1つに位置するか、プロセッサのうち1つのローカルキャッシュに位置する可能性がある。したがって、あるノードがあるデータ値へのアクセスを望むとき、時には、そのデータを別のノードから取得する必要がある。これは、ホームノードと呼ばれる、システム全体のコヒーレンシを維持するノードに、要求元がリクエストを送ることによって実現される。次にホームノードは、要求されたデータをもつ可能性のあるノードに対して1つまたは複数のスヌープリクエストを発行する。それらのノードのうち1つがそのデータをもっていれば、それらのノードがそのデータをホームノードに返し、ホームノードがそのデータを要求元に返してもよい。ただし、この処理には複数回の通信の交換が伴い、その解決には時間がかかる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の目的は、ある数のノードまたはプロセッサが存在し、それぞれのノードが独自のキャッシュを持つとともに、それらノードに共有された共有キャッシュを持つようなマルチプロセッサシステムにおいて、効率的なキャッシュ管理と迅速なデータ取得を行なうことである。
【課題を解決するための手段】
【0004】
第1の構成例から見れば、データ処理装置が提供され、この装置は、要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取る受信回路と、前記スヌープリクエストへの応答を送信する送信回路と、少なくとも1つのデータ値をキャッシュするキャッシュ回路とを備え、転送を行うべきであり、かつ前記少なくとも1つのデータ値が前記要求されたデータを含むとき、前記応答は前記要求されたデータを含み、前記送信回路は前記応答を前記要求元ノードに送信する。
【0005】
第2の構成例から見れば、データ処理装置が提供され、この装置は、要求されたデータに関して、ある要求元ノードからデータリクエストを受け取る受信回路と、他のノードへスヌープリクエストを送信する送信回路とを備え、前記スヌープリクエストは、前記要求元ノードの識別子、前記要求されたデータの参照先、および、前記要求されたデータが前記他のノードにキャッシュされているときに転送が前記他のノードから前記要求元ノードへ直接行われるべきであるかについての指示を含む。
【0006】
第3の構成例から見れば、データ処理方法が提供され、この方法は、少なくとも1つのデータ値をキャッシュすることと、要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取ることと、前記スヌープリクエストへの応答を送信することとを含み、転送を行うべきであり、かつ前記少なくとも1つのデータ値が前記要求されたデータを含むとき、前記応答は前記要求されたデータを含み、前記応答は前記要求元ノードに送信される。
【0007】
本発明について、添付図面に示される実施形態を参照しながら、単に例として、さらに詳細に説明する。
【図面の簡単な説明】
【0008】
図1】一実施形態による、あるデータ処理装置を備えるシステムの概略図である。
図2】一実施形態による、ホームノードおよび2つの要求元ノードを示す図である。
図3】一実施形態による、ホームノードと2つの要求元ノードとの間の一連のトランザクションを示す図である。
図4】一実施形態による、ホームノードと2つの要求元ノードとの間の一連のトランザクションを示す図である。
図5】一実施形態による、ホームノードと2つの要求元ノードとの間の一連のトランザクションを示す図である。
図6】一実施形態による、要求元ノードによるデータ処理の方法を示すフローチャートである。
【発明を実施するための形態】
【0009】
実施形態について添付図面を参照しながら考察する前に、実施形態の説明を下記に記載する。
【0010】
一構成例によれば、データ処理装置が提供され、この装置は、要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取る受信回路と、前記スヌープリクエストへの応答を送信する送信回路と、少なくとも1つのデータ値をキャッシュするキャッシュ回路とを備えており、転送を行うべきであり、かつ前記少なくとも1つのデータ値が前記要求されたデータを含むとき、前記応答は前記要求されたデータを含み、前記送信回路は前記応答を前記要求元ノードに送信する。
【0011】
上記の構成例によれば、スヌープリクエストは、転送処理を行うべきであるかについての指示をそれ自体に含む。これは、転送を行うべきである(デフォルトでは転送を行わない場合)との指示か、または転送を行うべきではない(デフォルトでは転送を行う場合)との指示のどちらかであり得る。転送を行うとき、データ処理装置(別のマスター/要求元ノードであってもよく、また、本明細書では応答ノードと呼ばれる)は、要求されたデータが存在すれば、そのデータへの要求を発行した要求元ノードにそのデータを直接転送する。したがって、そのデータを応答ノードで準備できるならば、そのデータをホームノードへ戻して、ホームノードから先の要求元ノードへ送信する必要はない。よって、ある要求元ノードが、応答ノードの保持するデータへのリクエストを発行したときに伴う遅延を、これによって減少させることができる。スヌープリクエストは、要求元ノードがデータへのアクセスを求めたことに応答してホームノードによって生成される。ホームノードは、そのデータがシステム内の別のノード(応答ノードなど)に保持されているか判断するために、スヌープリクエストを生成してもよい。例えばメインシステムメモリを介するよりも、応答ノードのデータにアクセスする方が高速にデータにアクセスすることができる。
【0012】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、転送を行うことが禁じられているとき、前記応答は前記要求されたデータを含み、前記送信回路が前記応答を前記ホームノードに送信する。(デフォルトまたは指示によって)転送を行わない場合は、応答ノードは、要求元ノードに応答を転送するのではなく、ホームノードに応答を送る。
【0013】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、転送を行うべきであり、かつ前記少なくとも1つのデータ値が前記要求されたデータを含むとき、前記送信回路はさらに、前記スヌープリクエストが遂行されたことを示すために、前記ホームノードに完了通知を送信する。要求元ノードに応答を送信することにならび、応答ノードはさらに、応答ノードによって行われた転送アクションによってスヌープリクエストが満たされたことを示すために、ホームノードに完了通知を送信することができる。したがって、ホームノードは続いてスヌープリクエストを発行する必要はなく、また、要求元ノードにより当初要求されたデータを取り込むためにメインシステムメモリにアクセスする必要が回避され得る。
【0014】
いくつかの実施形態では、前記スヌープリクエストは前記要求元ノードを示す指示子を含む。スヌープリクエストに要求元ノードの指示子を含ませることにより、応答ノードは、システム内のさまざまなノードのうちどれが当初データを要求したのか判断することができる。これにより、応答ノードが、何らかの中間ノードを必要とする範囲内で、スヌープリクエストへの応答を該当する要求元ノードに直接送信することが可能になる。提案される方式では、相互接続(例えばホームノード)が、要求元ノード120から送られた識別子とは異なるそれ自体の識別子を使ってスヌープ目標(例えば、応答ノード130)と通信することが許可される。転送が機能するためには、ホームノードはそれ自体の生成した識別子に加えて、要求元ノード120によって生成された識別子もまた含ませなければならない。
【0015】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、前記スヌープリクエストは、前記スヌープリクエストの生成を引き起こした前記要求元ノードから前記ホームノードへのトランザクションを特定するトランザクション識別子を含み、前記応答は前記トランザクション識別子を含む。スヌープリクエスト内に提供されたトランザクション識別子を含めることによって、前記応答が要求元ノードからホームノードに対して行われた当初のリクエストからのトランザクション識別子を含むことになり、それによって、応答ノードによって作成される応答を当初のデータリクエストに関連付けることができる。このようにして、要求元ノードは返されたデータと、要求したいずれかのデータとの間の関係を判断することができる。
【0016】
いくつかの実施形態では、前記キャッシュ回路は、前記少なくとも1つのデータ値のそれぞれに関連するキャッシュ状態を含み、前記キャッシュ状態は、そのデータ値が無効、共有、所有、排他、および修正のうち少なくとも1つの状態にあることを示す。このさまざまなキャッシュ状態は、相互接続されたシステムのさまざまなノードの間でコヒーレンシを有効にするために用意されている。例えば、ある状態をキャッシュ内の各エントリに与え、その状態を使用してシステム全体にわたるデータの共有および/または修正の程度を示すことができる。例えば、「無効」状態を使用して、そのキャッシュラインがもはや無効ではなく、自由に上書き可能であることを示すことができる。キャッシュ状態「共有」は、そのデータ値がある数の異なるノードによって共有されているが、修正可能ではないことを示すことができる。「所有」状態は、当該キャッシュラインがローカルキャッシュ内で修正されていることを示すことができる。この修正されたデータは、メモリ内でそのデータが更新されていなければ、システム内の他のノードと共有されていることもある。「排他」状態は、そのノードがシステム内でそのラインのコピーをもつ唯一のノードであるが、そのラインが修正されていないことを示すことができる。最後に「修正」状態は、そのノードがシステム内でそのキャッシュラインの唯一のコピーをもち、かつ、そのコピーにシステム内のメインメモリと比較して変更を加えていることを示すことができる。ここに記載したこれらの状態が、この実施形態により対応可能なアクセス許可の区分の単なる例であることが理解される。他の実施形態では、同じアクセス許可の区分が、別のキャッシュ状態の名前および/またはフラグによって提供されてもよい。例えばARM Limited(イギリス、ケンブリッジ)により提示されたAMBA仕様には、「無効」、「クリーン/ダーティ」、「ユニーク/共有」などの異なる分類が記載されている。後ろの2つの選択肢は任意の組み合わせで組み合わされてもよく、合計5種類の異なる状態が得られる。本明細書では、これ以降の全体にわたって、AMBAキャッシュ状態を使用する。ただし、代替/等価なキャッシュ状態もまた使用できることが、当業者には理解される。
【0017】
いくつかの実施形態では、前記スヌープリクエストは、前記要求されたデータに関連して前記データ処理装置に記憶されている状態に関わりなく転送を行うべきであるかを示す。応答ノードにより行われる転送アクションを行うべきであるかを示すこと、および、そのアクションを、要求されたデータに関連して記憶されている状態に関わりなく行うことにより、追加のストレージ要件を必要とせずに転送動作を行うことが可能である。具体的には、いくつかの実施形態では、前記スヌープリクエストは、前記要求されたデータに関連して前記キャッシュ回路に記憶されているキャッシュ状態に関わりなく転送を行うべきであるかを示す。これらの実施形態では、転送が許可されること、またはすでに行われたことを示すために、さらに別のキャッシュ状態を追加する必要はない。したがって、応答ノードによって行われる転送動作は、どのようなキャッシュ状態にも無関係である。
【0018】
いくつかの実施形態では、前記スヌープリクエストは、前記スヌープリクエストのタイプを符号化することにより、転送を行うべきであるかを示す。したがって、データが応答ノードに存在する場合に転送を行うべきであるかは、応答ノードによって受け取られるスヌープリクエストのタイプ(1つまたは複数)によって示される。
【0019】
他の実施形態では、前記スヌープリクエストは、転送を行うべきであるかを前記スヌープリクエスト内のビットによって示す。要求されたデータを応答ノードで準備できる場合に転送を行うべきであるかをスヌープリクエスト内のビットを使用して示すことによって効率的な符号化が可能になり、システム全体のトラフィックを著しく増加させることなく転送を行うことができる。このことは、ある数のノードを含むシステムまたは、大量のデータが頻繁に伝送されるシステムでは重要であり得る。
【0020】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、前記送信回路が前記応答を前記要求元ノードに送信できないとき、前記送信回路は前記応答を前記ホームノードへ送信する。スヌープリクエストへの応答を応答ノードが要求元ノードに送信できないことをホームノードに通知することにより、ホームノードが、要求されたデータを要求元ノードに提供するために別のアクションをとることができてもよい。例えば、これは、システム内の別のノードに追加のスヌープリクエストを送ることによって、または、そのデータへのリクエストをメインメモリに送ることによって実現できることもある。いくつかの実施形態では、スヌープリクエストが失敗していないとホームノードに通知されない限り、スヌープリクエストが失敗したとホームノードが結論付けるように、タイムアウトが提供される。ただし、そのような実施形態では、スヌープリクエストの成功に関していずれかの結論に達するには、その前に最低限の期間(すなわち、タイムアウト時間)、待機する必要がある。
【0021】
いくつかの実施形態では、転送を行うべきであり、かつ、前記キャッシュ回路に前記要求されたデータがないとき、前記送信回路は前記応答を前記要求元ノードに送信して、前記要求されたデータがないことを示す。ここでも、要求されたデータを応答ノードが要求元ノードに提供することによりスヌープリクエストに応答することができないとの指示をホームノードに提供することによって、ホームノードが、追加のスヌープリクエストを転送すること、または、提供すべきデータへのリクエストをメインメモリに対して発行することなどの、何らかの代替アクションをとることができる。
【0022】
いくつかの実施形態では、前記要求されたデータを含む前記応答を前記要求元ノードへ送信することに加えて、前記キャッシュ回路内の前記要求されたデータに関連するキャッシュ状態が、前記キャッシュ状態と前記スヌープリクエストのタイプのうち少なくとも1つに依存して調節される。いくつかの事例では、スヌープリクエストが、応答ノードのキャッシュ回路に記憶されている要求されたデータに関連するキャッシュ状態を変化させてもよい。具体的には、キャッシュデータの変化は、スヌープリクエストが受け取られる前のそのデータに関連する当初のキャッシュ状態および、受け取られるスヌープリクエストのタイプのいずれかまたは両方に依存してもよい。スヌープリクエストへの応答を送信するときに、これらの要因のそれぞれを考慮して、キャッシュ回路内で要求されたデータに関連付ける新しいキャッシュ状態が判断されてもよい。
【0023】
いくつかの実施形態では、前記スヌープリクエストの前記タイプは、前記要求元ノードが前記要求されたデータをキャッシュするための所望のキャッシュ状態を示す。よって、受け取られるデータについての所望の共有と修正の程度を示す指示を、スヌープリクエストに含ませることができる。具体的には、要求元ノードは要求元ノードによってユニークに保持されるべき特定のデータピースを所望してもよく、または、要求元ノードは共有状態で保持されているデータで満足してもよい。どちらの場合でも、所望されるキャッシュ状態は、応答ノードのキャッシュ回路内で要求されたデータに関連するキャッシュ状態をどのように修正するかを判断する際の要因となり得る。
【0024】
いくつかの実施形態では、前記応答は、前記要求元ノードが前記要求されたデータをキャッシュするための要求キャッシュ状態を示す。スヌープリクエストに対して提供される応答は、要求されたデータを要求元ノードに返すときにそのデータに使用されるべきキャッシュ状態を示すことができる。そのような要求キャッシュ状態は、要求元ノードでデータに関連付けられる当初のキャッシュ状態、応答ノードでデータに関連付けられる新しいキャッシュ状態、および、要求元ノードによって提供されるいずれかの要求キャッシュ状態に基づいて判断されてもよい。
【0025】
いくつかの実施形態では、前記要求キャッシュ状態は、共有状態である。言い換えれば、転送の結果として、応答ノードによって提供されるデータは、要求元ノードによって共有状態で保持されることになる。したがって、データは要求元ノードによって読み出されてもよいが、そのノードによって修正されてはならない。
【0026】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、前記要求されたデータが前記キャッシュ回路内で修正キャッシュ状態を示しているとき、前記要求キャッシュ状態はクリーンであり、前記送信回路が前記ホームノードにさらなる応答を送信する。そのさらなる応答は前記要求されたデータを含み、また、前記要求されたデータが修正されていることを示す。「修正」キャッシュ状態を示すデータに関してスヌープリクエストを受け取る状況に応答ノードが対処するための1つの有効な方法は、応答ノードが、前述した転送処理を使用して、データが要求元ノードに転送されるようにスヌープリクエストに応答することである。この応答は、データが修正されていることに要求元ノードが気付かないように、要求キャッシュ状態「クリーン」と共に送信することができる。ほぼ同時に、応答ノードは、要求されたデータを提供するため、さらに、要求されたデータが修正されていることを示すために、さらなる応答をホームノードに対して発行することもできる。通常、その結果、ホームノードは修正されたデータを、例えばメインシステムメモリに書き戻そうと努める。したがって、これを実現するために、要求元ノードを関与させる必要はなく、また、要求元ノードにデータを提供する前にメインシステムメモリに書き戻す必要もない。したがって、要求動作全体の遅延を改善することができる。
【0027】
別の構成例によれば、ある要求元ノードから要求されたデータに関してデータリクエストを受け取る受信回路と、別のノードにスヌープリクエストを送信する送信回路とが提供され、前記スヌープリクエストには、前記要求元ノードの識別子、前記要求されたデータの参照先、および、前記要求されたデータが他のノードにキャッシュされているときに転送が前記他のノードから前記要求元ノードへ直接行われるべきであるかについての指示が含まれる。
【0028】
ホームノードがある要求元ノードからデータのリクエストを受け取ると、ホームノードはシステム内の1つまたは複数の他のノードに対してスヌープリクエストを発行する。送られるスヌープリクエストには、転送を行うべきであるかの指示が含まれる。この結果、スヌープリクエストを受け取ったノードは、要求されたデータが存在する場合、要求元ノードに送信するためにホームノードにデータを送り返すのではなく、要求元モードに送ることによって、スヌープリクエストに直接応答することができる。
【0029】
ここで、特定の実施形態について図面を参照しながら説明する。
【0030】
図1は、データ処理システム100を示す。データ処理システム100内には、ホームノード110、第1の要求元ノード120、および第2の要求元ノード130がある。第1の要求元ノード120と第2の要求元ノード130は、ある相互接続内のマスターノードであってもよい。この実施形態では、第1の要求元ノード120を要求元ノードと呼び、第2の要求元ノード130を応答ノードと呼ぶ。データ処理システム100のノード110、120、130はそれぞれ、キャッシュを含む。3つの列が含まれた、それぞれのキャッシュが示されている。1列目はデータ値のアドレスを表し、2列目はデータ値そのものを表し、3列目はそのデータ値に関連するキャッシュの状態を表す。この実施形態では、キャッシュ状態は、ARM Limited(イギリス、ケンブリッジ)により提示されたAMBA仕様で使用されるキャッシュ状態に対応する。そのようなキャッシュ状態には、特定のエントリが無効で上書き可能であることを示す“I”、特定のエントリが共有されていて、かつダーティである(すなわち、より一般的な用語では、特定のエントリが、そのエントリが他のノードによって共有されているがローカルで修正されているという形で、そのノードにより「所有」されている)ことを示す“SD”、そのエントリが共有されていて、かつクリーンである(すなわち、より一般的な用語では、特定のエントリが、そのエントリがシステム内の他のノードにより共有されていて、かつ修正不可能であるという形で「共有」されている)ことを示す“SC”、および、そのエントリがユニークで、かつクリーンである(すなわち、より一般的な用語では、特定のエントリが、そのエントリがそのノードにより所有され、かつ、修正されていないという形で「排他」である)ことを示す“UC”がある。
【0031】
図1の実施形態に示されるように、ノード120、130のうちの1つまたは複数が、他のノードがアクセス手段をもたないデータ値へのアクセス手段をもっていることがある。例えば、要求元ノード120には、応答ノード130によって保持されているデータ値0x0094へのアクセス手段がない。同様に、応答ノード130には、要求元ノード120によって保持されているデータ値0x0090へのアクセス手段がない。したがって、要求元ノード120がデータ値0x0094へのアクセスを希望すると、そのデータ値へのアクセス手段を得るためには、データ処理システム100全体のコヒーレンシを維持するホームノード110へリクエストを送らなければならない。
【0032】
図1には示されていないが、データ処理システム100には、さらに、ホームノード110を介して接続されたメインシステムメモリが含まれることがある。ホームノード110からのリクエストに応じて、メインシステムメモリからデータを取り込むことができる。しかし、メインメモリのアクセスは一般にキャッシュの1つをアクセスするよりも遅いので、この処理には時間がかかる可能性がある。
【0033】
図2は、データ処理システム100を概略的に示す。データ処理システム100内には、ホームノード110、第1の要求元ノード120、および第2の要求元ノード/応答ノード130がある。それぞれのノードは、キャッシュ140A、140B、140C、受信回路150A、150B、150C、および、送信回路160A、160B、160Cを含む。
【0034】
前述したように、要求元ノード120は、要求元ノード120のローカルキャッシュ140Aで見つからない何らかの所望のデータに関して、ホームノード110に対してリクエストメッセージを発行する。このリクエストメッセージは要求元ノード120の送信回路160Aによって送信され、ホームノード110の受信回路150Bによって受信される。この時点で、ホームノード110は、要求されたデータの最新版がどこで見つかるか判断する。このデータの最新版が応答ノード130で見つかるとホームノードが判断する。よって、ホームノードは、応答ノード130に対し、提供されるべきデータについてのスヌープ転送リクエストメッセージを発行する。このメッセージはホームノード110の送信回路160Bによって送信され、応答ノード130の受信回路150Cによって受信される。スヌープ転送リクエストの詳細については、図3を参照しながら考察する。スヌープ転送リクエストを受け取ると、応答ノード130は、要求されたデータを求めてローカルキャッシュ140Cを検索する。データが見つかると、要求元ノード130は、転送を行うべきであると指示する転送指示の結果として、このデータを第1の要求元ノード120への応答の形で直接転送しようと試みる。この応答は応答ノード130の送信回路160Cによって送信され、要求元ノード120の受信回路150Aによって受信される。
【0035】
したがって、要求元ノード120から要求されたデータは、応答ノード130によって直接提供される。具体的には、この実施形態では、応答または要求されたデータがホームノード110に返されてからホームノード110が続いてそのデータを第1の要求元ノード120に返す必要がない。このようにして、2つの応答メッセージが必要なく、必要なメッセージがただ1つであることの結果、遅延を改善することができる。
【0036】
図3は、データ処理システム100の3つのノードの間のトランザクションシーケンスを示す。X軸はそれぞれのノードを表し、Y軸は時間を表す。最初に要求元ノード120がReadSharedメッセージをホームノード110に対して発行する。これは、要求元ノード120が特定のデータ値への共有読み出しアクセスを所望していることを示す。このメッセージがホームノード110によって受け取られると、ホームノード110はSnpSharedFwdメッセージを応答ノード130に対して発行する。このメッセージはスヌープ転送リクエストメッセージであり、第1に、要求元ノード120が特定のデータ値への共有データアクセスを所望していること、第2に、転送が応答ノード130によって行われるべきであることを示す。このメッセージは、最初のリクエストの発信元のノード(要求元ノード120)を示す、転送ノードIDを含む。このメッセージは、要求元ノード120によって発行された最初のリクエストメッセージに関連するトランザクションIDもまた含む。具体的には、要求元ノード120によって発行された最初のReadSharedメッセージは、特定のトランザクションID(A)に関連する。このトランザクションIDは、スヌープリクエスト転送メッセージに第2のパラメータとして含まれる。さらに、スヌープリクエスト転送メッセージは、それ自体のトランザクションID(B)もまた含む。応答ノード130で受け取られると、応答ノード130は、要求されたデータが存在するか判断する。この実施形態では、そのデータ値が存在すると仮定する。要求元ノード120がそのデータ値への共有読み出しアクセスを所望しているので、そのデータ値に関連するキャッシュ状態がユニーククリーン(UC)から共有クリーン(SC)に変更される。加えて、応答ノード130がホームノード110にSnpResp_SC_Fwded_SCメッセージを返す。1つ目のSCは、応答ノード130がSCとしてコピーを保持していることを示し、2つ目のSCは、SC状態のコピーが要求元ノード120に送られたことを示す。このメッセージは、スヌープリクエストに対して、すでに応答が返されているか、またはこれから応答が返されることと、要求と提供の両方が共有クリーン(SC)キャッシュ状態で行われたことを示す。同様に、応答ノード130が、スヌープリクエストに対する応答を発行する。この実施形態では、この応答は、応答ノード130から要求元ノード120へ送られるCompData_SCメッセージの形で送られる。応答ノード130は、ホームノード110から受け取った、要求元ノード120を特定するSnpSharedFwdメッセージによって、要求元ノード120のIDの身元を知っている。この応答メッセージにはパラメータとして、ホームノード110の識別子および、応答の対象のスヌープリクエストのトランザクションID(B)が含まれる。
【0037】
よって、要求元ノード120がこの応答を受け取ると、要求元ノード120はデータ値の取得に成功している。要求元ノード120は次に、ホームノード110に確認通知で応答する。この確認通知にはパラメータとして、ホームノード110が発行したスヌープリクエストのトランザクションID (B)および、ホームノード110の識別子が含まれる。ホームノードは、この確認通知を受け取ると、データが要求元ノード120によって正しく取得されたことおよび、要求されたデータを取得するためにさらなるアクションが必要ないことがわかる。この確認通知または応答ノード130によって発行されるスヌープ応答がホームノード110によって受け取られない場合は、ホームノード110は、要求されたデータが要求元ノード120によって取得されていないと結論付けてもよく、さらなるアクションをとってもよい。具体的には、ホームノード110は、追加のスヌープリクエストを使用してネットワーク内の他のノードに問い合わせてもよいし、または、要求されたデータを取得するためにメインシステムメモリにアクセスしてもよい。
【0038】
コヒーレンシを維持するために、受け取ったさまざまなタイプのスヌープリクエストに応答ノードがどのように応答しなければならないかに関して、ある数の規則が提供されている。具体的には、スヌープリクエストのタイプ(データを取得した後に要求元ノードがそのデータに関連付けたいキャッシュ状態を示す)と、応答ノードに保持されているそのデータの現在のキャッシュ状態に依存して、1つまたは一連のさまざまなアクションがとられてもよい。具体的には、これらのアクションは、応答ノードに保持されているデータのキャッシュ状態の変更を命じてもよい。それらの規則について、下記に説明する。ここでも、前述したように、これらの規則はARM Limited(イギリス、ケンブリッジ)により提示されたAMBA仕様に基づいて提供される。ただし、他の等価な状態を使用して等価な規則のセットを考案できることが、当業者には理解される。
【0039】
応答ノード130で転送(Foward)タイプのスヌープを処理するための共通の規則は次のとおりである。
・ラインがUD(ユニークダーティ)、UC(ユニーククリーン)、SD(共有ダーティ)、またはSC(共有クリーン)状態であれば、要求元ノードにコピーを転送する。
・対応する非転送タイプのスヌープへの転換は許可されない。
・非無効化(Non-Invalidating)タイプのスヌープに応答してユニーク状態のデータを転送してはならない。
・DoNotGoToSDビットがセットされたスヌープリクエストを受け取った応答ノード130は、コヒーレンシによって許可された場合でもSD(共有ダーティ)に移行しない。
【0040】
SnpSharedFwd
前述した共通規則に加えて、SnpSharedFwdを受け取った応答ノード130が従うべき規則は次のとおりである。
・応答ノード130は、SD(共有ダーティ)、UC(ユニーククリーン)、UD(ユニークダーティ)、またはSC(共有クリーン)状態のいずれかにあるラインの転送を許可される。
・応答ノード130は、そのノードのデータのコピーを、SD(共有ダーティ)、SC(共有クリーン)、またはI(無効)状態のいずれかに移行する。
【0041】
SnpCleanFwd
前述した共通規則に加えて、SnpCleanFwdを受け取った応答ノード130が従うべき規則は次のとおりである。
・応答ノード130は、SC(共有クリーン)またはUC(ユニーククリーン)状態にあるキャッシュラインを転送する。
・応答ノード130は、そのノードのデータのコピーを、SD(共有ダーティ)、SC(共有クリーン)、またはI(無効)状態のいずれかに移行する。
【0042】
SnpUniqueFwd
前述した共通規則に加えて、SnpUniqueFwdを受け取った応答ノード130が従うべき規則は次のとおりである。
・応答ノード130はユニーク状態にあるキャッシュラインを転送する。
・UD(ユニークダーティ)またはSD(共有ダーティ)などのいずれかのダーティ状態にあるデータをもつ応答ノード130は、そのダーティデータをホームではなく要求元に渡す。
・応答ノード130は、そのノードのデータのコピーをI(無効)状態に移行する。
・応答ノード130はホームノード110にデータを返さない。
【0043】
SnpNotSharedDirtyFwd
前述した共通規則に加えて、SnpNotSharedDirtyFwdを受け取った応答ノード130が従うべき規則は次のとおりである。
・応答ノード130は、SC(共有クリーン)、UC(ユニーククリーン)、およびUD(ユニークダーティ)状態にあるデータを転送する。
・応答ノード130は、そのノードのデータのコピーをSD、SC、またはI状態に移行する。
【0044】
SnpOnceFwd
前述した共通規則に加えて、SnpOnceFwdを受け取った応答ノード130が従うべき規則は次のとおりである。
・応答ノード130はI(無効)状態にあるデータを転送する。
・上の規則によって、応答ノード130はダーティデータを要求元ノード120に転送しない。
・応答ノード130は、データ状態がUD(ユニークダーティ)またはSD(共有ダーティ)からUC(ユニーククリーン)またはSC(共有クリーン)に変化したとき、ホームノード110にデータを返す。
【0045】
図4は、要求元ノード120と応答ノード130の間の接続が切れているトランザクションの図を示す。具体的には、一連のトランザクションはこれまでと同様に進行するが、ここでは要求元ノード120はデータのユニークコピーを要求する。しかし、応答ノード130によってSnpUniqueFwdメッセージが受け取られ、応答ノード130がデータを要求元ノード120に転送しようとしたときに、要求元ノード120と応答ノード130の間のリンクが切れていると判断される。その結果、応答ノード130は、要求されたデータを含む普通のスヌープ応答メッセージで、ホームノード110に応答する。この時点で、ホームノード110は、通常のスヌープリクエスト/スヌープ応答処理のとおりに要求元ノード120にデータを転送することができる。
【0046】
図5は、要求元ノード120、応答ノード130、およびホームノード140の間の、あるトランザクションの図を示す。トランザクションは図3に示す実施形態と同様に進行する。しかし、この場合、応答ノード130に記憶されている、要求元ノード120により要求されたデータはダーティである。言い換えれば、データは応答ノード130のローカルキャッシュで修正されている。この場合でも、データは応答ノード130によって要求元ノード120に転送される。さらに、応答ノード130は要求ノード120に、データがクリーンであることを示す。言い換えれば、要求元ノード120は、キャッシュ状態を共有クリーン(SC)としてデータをキャッシュに記憶することができる。しかし、応答ノード130がホームノード140へ応答を発行して返すとき、これはSnpResp_SC_Fwded_SCメッセージの形で行われる。このメッセージは修正された(ダーティな)データを含んでおり、また、そのデータが共有クリーンの状態で要求元ノード120に転送されたことを示す。これに応答して、ホームノード140は、システムキャッシュまたはメインメモリのどちらかにデータが書き戻されるようにする。したがって、要求元ノード120は、最新のデータを素早く受け取る。データをホームノード140に送信し、書き戻してから要求元ノード120に提供する方法では著しい遅延を伴うことがあるが、その必要なく、要求元ノードが最新のデータを受け取ることができる。
【0047】
図6は、一実施形態によるデータ処理の方法を示すフローチャート170である。処理はステップ180で開始して、スヌープ転送リクエストが受け取られる。ステップ190で、ローカルノードがローカルキャッシュ内に要求されたデータをもつか判断される。ローカルノードが要求されたデータをもたない場合は、ステップ200でホームノードに対して否定応答が発行されてもよく、処理はステップ180に戻る。それ以外の場合は、ステップ210で、ローカルキャッシュ内のデータに関連するキャッシュ状態が、発行されたスヌープリクエストのタイプとローカルキャッシュ内のデータの現在の状態に依存して修正される。これが終了すると、可能なら、ステップ220で、そのノードが要求元ノードへの接続をもつか否かが判断される。接続がない場合には、ステップ230で、スヌープ応答がホームノードに返送され、処理はステップ180に戻る。そのノードが要求元への接続をもつ場合は、次にステップ240で、要求元へ応答が送信される。処理は次にステップ250に進み、そのデータに関連する以前のキャッシュ状態が「修正」であったか判断される。例えば、この状態は、そのローカルノードがデータを修正していたことを意味する共有ダーティ状態と同等と見なされてもよい。「修正」状態ではなかった場合は、処理はステップ180に戻る。それ以外の場合は、ステップ260で、修正されたデータがホームノードに返送される。処理は次にステップ180に戻る。
【0048】
したがって、ここに記載される実施形態によって、スヌープリクエストに直接、素早く応答することが可能になる。さらに、このことは、提供されるどのシステムでもキャッシュ状態を一切拡張することなく実現することができる。
【0049】
本出願において、「~ように構成される」という表記は、装置の要素が、定められた動作を行うことが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または様式を意味する。例えば、装置が定められた動作を提供する専用のハードウェアを有してもよいし、または、プロセッサもしくは他の処理デバイスがその機能を行うようにプログラムされてもよい。「~ように構成される」とは、定められた動作を提供するために、その装置の要素を変更する必要が一切ないことを暗に示す。
【0050】
本明細書では本発明の説明的な実施形態について、添付の図面を参照しながら詳しく説明してきたが、本発明がそれらの厳密な実施形態に制限されず、当業者によって、添付の特許請求の範囲によって定められる本発明の範囲および趣旨を逸脱することなく、さまざまな変更、追加、修正がそこに加えられてもよいことが理解される。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴のさまざまな組み合わせが独立請求項の特徴と共に作成されることもできる。
図1
図2
図3
図4
図5
図6