(57)【要約】【課題】  分散したキャッシュを効率的に管理し、迅速にデータを取り出す。【解決手段】  データ処理装置が提供され、この装置は、要求されたデータに関して、スヌープリクエストを要求元ノードに代わって受け取る受信回路を含む。スヌープリクエストは、転送を行うべきであるかについての指示を含む。送信回路がスヌープリクエストへの応答を送信し、キャッシュ回路が少なくとも１つのデータ値をキャッシュする。転送を行うべきであり、少なくとも１つのデータ値が要求されたデータを含むとき、応答は要求されたデータを含み、送信回路は応答を要求元ノードに送信する。【選択図】図２
2018129041.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取る受信回路と、
前記スヌープリクエストへの応答を送信する送信回路と、
少なくとも１つのデータ値をキャッシュするキャッシュ回路を備え、
転送を行うべきであり、かつ前記少なくとも１つのデータ値が前記要求されたデータを含むとき、前記応答が前記要求されたデータを含み、前記送信回路が前記応答を前記要求元ノードに送信する、データ処理装置。
【請求項２】
前記スヌープリクエストがホームノードから受け取られ、
転送を行うことが禁じられているとき、前記応答が前記要求されたデータを含み、前記送信回路が前記応答を前記ホームノードに送信する、
請求項１に記載のデータ処理装置。
【請求項３】
前記スヌープリクエストがホームノードから受け取られ、
転送を行うべきであり、かつ前記少なくとも１つのデータ値が前記要求されたデータを含むとき、前記送信回路が、前記スヌープリクエストが満たされたことを示すために、さらに前記ホームノードに完了通知を送信する、
請求項１または２に記載のデータ処理装置。
【請求項４】
前記スヌープ要求が前記要求ノードを示す指示子を含む、請求項１から３のいずれかに記載のデータ処理装置。
【請求項５】
前記スヌープリクエストがホームノードから受け取られ、
前記スヌープリクエストが、前記スヌープリクエストの生成を引き起こした前記要求元ノードから前記ホームノードへのトランザクションを特定するトランザクション識別子を含み、
前記応答が前記トランザクション識別子を含む、
請求項１から４のいずれかに記載のデータ処理装置。
【請求項６】
前記キャッシュ回路が前記少なくとも１つのデータ値のそれぞれに関連するキャッシュ状態を含み、
前記キャッシュ状態が、データ値が無効、共有、所有、排他、修正のうち少なくとも１つの状態にあることを示す、
請求項１から５のいずれかに記載のデータ処理装置。
【請求項７】
前記スヌープリクエストが、前記要求されたデータに関連して前記データ処理装置に記憶されている状態には関わりなく転送を行うべきであるかを示す、請求項１から６のいずれかに記載のデータ処理装置。
【請求項８】
前記スヌープリクエストが、前記要求されたデータに関連して前記キャッシュ回路に記憶されているキャッシュ状態に関わりなく転送を行うべきであるかを示す、請求項６に記載のデータ処理装置。
【請求項９】
前記スヌープリクエストが、前記スヌープリクエストのタイプを符号化することによって、転送を行うべきであるかを示す、請求項１から８のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記スヌープリクエストが、前記スヌープリクエスト内のビットによって、転送を行うべきであるかを示す、請求項１から８のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記スヌープリクエストがホームノードから受け取られ、
前記送信回路が前記応答を前記要求元ノードに送信することができないとき、前記送信回路が前記応答を前記ホームノードに送信する、
請求項１から１０のいずれかに記載のデータ処理装置。
【請求項１２】
転送を行うべきであり、かつ、前記キャッシュ回路に前記要求されたデータがないとき、前記要求されたデータがないことを示すために前記送信回路が前記応答を前記要求元ノードに送信する、請求項１から１１のいずれかに記載のデータ処理装置。
【請求項１３】
前記要求されたデータを含む前記応答を前記要求元ノードへ送信することに加えて、前記キャッシュ回路内の前記要求されたデータに関連するキャッシュ状態が、前記キャッシュ状態と前記スヌープリクエストのタイプのうち少なくとも１つに依存して調節される、請求項６に記載のデータ処理装置。
【請求項１４】
前記スヌープリクエストの前記タイプが、前記要求元ノードが前記要求されたデータをキャッシュするための所望のキャッシュ状態を示す、請求項１３に記載のデータ処理装置。
【請求項１５】
前記応答が、前記要求元ノードが前記要求されたデータをキャッシュするための要求キャッシュ状態を示す、請求項１から１４のいずれかに記載のデータ処理装置。
【請求項１６】
前記必要キャッシュ状態が共有状態である、請求項１５に記載のデータ処理装置。
【請求項１７】
前記スヌープリクエストがホームノードから受け取られ、
前記要求されたデータが前記キャッシュ回路内で修正キャッシュ状態を示しているとき、前記要求キャッシュ状態がクリーンであり、前記送信回路が前記ホームノードにさらなる応答を送信し、
前記さらなる応答が、前記要求されたデータを含み、かつ前記要求されたデータが修正されていることを示す、
請求項１６に記載のデータ処理装置。
【請求項１８】
データ処理装置であって、
要求されたデータに関して、ある要求元ノードからデータリクエストを受け取る受信回路と、
他のノードへスヌープリクエストを送信する送信回路を備え、
前記スヌープリクエストが、前記要求元ノードの識別子、前記要求されたデータの参照先、および、前記要求されたデータが前記他のノードにキャッシュされているときに転送が前記他のノードから前記要求元ノードへ直接行われるべきであるかについての指示を含む、
データ処理装置。
【請求項１９】
データ処理方法であって、
少なくとも１つのデータ値をキャッシュすることと、
要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取ることと、
前記スヌープリクエストへの応答を送信することを含み、
転送を行うべきであり、かつ前記少なくとも１つのデータ値が前記要求されたデータを含むとき、前記応答が前記要求されたデータを含み、前記応答が前記要求元ノードに送信される、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はデータ処理に関する。より具体的には、本開示はキャッシュ操作に関する。
【背景技術】
【０００２】
マルチプロセッサシステムには、それぞれが独自のキャッシュをもつ、ある数のノードまたはプロセッサが存在することがある。これらのノードは、共有された１つまたは複数のキャッシュまたはメモリに接続されていることがある。よって、ある特定のデータが、共有されたキャッシュまたはメモリのうち１つに位置するか、プロセッサのうち１つのローカルキャッシュに位置する可能性がある。したがって、あるノードがあるデータ値へのアクセスを望むとき、時には、そのデータを別のノードから取得する必要がある。これは、ホームノードと呼ばれる、システム全体のコヒーレンシを維持するノードに、要求元がリクエストを送ることによって実現される。次にホームノードは、要求されたデータをもつ可能性のあるノードに対して１つまたは複数のスヌープリクエストを発行する。それらのノードのうち１つがそのデータをもっていれば、それらのノードがそのデータをホームノードに返し、ホームノードがそのデータを要求元に返してもよい。ただし、この処理には複数回の通信の交換が伴い、その解決には時間がかかる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、ある数のノードまたはプロセッサが存在し、それぞれのノードが独自のキャッシュを持つとともに、それらノードに共有された共有キャッシュを持つようなマルチプロセッサシステムにおいて、効率的なキャッシュ管理と迅速なデータ取得を行なうことである。
【課題を解決するための手段】
【０００４】
第１の構成例から見れば、データ処理装置が提供され、この装置は、要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取る受信回路と、前記スヌープリクエストへの応答を送信する送信回路と、少なくとも１つのデータ値をキャッシュするキャッシュ回路とを備え、転送を行うべきであり、かつ前記少なくとも１つのデータ値が前記要求されたデータを含むとき、前記応答は前記要求されたデータを含み、前記送信回路は前記応答を前記要求元ノードに送信する。
【０００５】
第２の構成例から見れば、データ処理装置が提供され、この装置は、要求されたデータに関して、ある要求元ノードからデータリクエストを受け取る受信回路と、他のノードへスヌープリクエストを送信する送信回路とを備え、前記スヌープリクエストは、前記要求元ノードの識別子、前記要求されたデータの参照先、および、前記要求されたデータが前記他のノードにキャッシュされているときに転送が前記他のノードから前記要求元ノードへ直接行われるべきであるかについての指示を含む。
【０００６】
第３の構成例から見れば、データ処理方法が提供され、この方法は、少なくとも１つのデータ値をキャッシュすることと、要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取ることと、前記スヌープリクエストへの応答を送信することとを含み、転送を行うべきであり、かつ前記少なくとも１つのデータ値が前記要求されたデータを含むとき、前記応答は前記要求されたデータを含み、前記応答は前記要求元ノードに送信される。
【０００７】
本発明について、添付図面に示される実施形態を参照しながら、単に例として、さらに詳細に説明する。
【図面の簡単な説明】
【０００８】
【図１】一実施形態による、あるデータ処理装置を備えるシステムの概略図である。
【図２】一実施形態による、ホームノードおよび２つの要求元ノードを示す図である。
【図３】一実施形態による、ホームノードと２つの要求元ノードとの間の一連のトランザクションを示す図である。
【図４】一実施形態による、ホームノードと２つの要求元ノードとの間の一連のトランザクションを示す図である。
【図５】一実施形態による、ホームノードと２つの要求元ノードとの間の一連のトランザクションを示す図である。
【図６】一実施形態による、要求元ノードによるデータ処理の方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
実施形態について添付図面を参照しながら考察する前に、実施形態の説明を下記に記載する。
【００１０】
一構成例によれば、データ処理装置が提供され、この装置は、要求されたデータに関して、転送を行うべきであるかについての指示を含むスヌープリクエストを要求元ノードに代わって受け取る受信回路と、前記スヌープリクエストへの応答を送信する送信回路と、少なくとも１つのデータ値をキャッシュするキャッシュ回路とを備えており、転送を行うべきであり、かつ前記少なくとも１つのデータ値が前記要求されたデータを含むとき、前記応答は前記要求されたデータを含み、前記送信回路は前記応答を前記要求元ノードに送信する。
【００１１】
上記の構成例によれば、スヌープリクエストは、転送処理を行うべきであるかについての指示をそれ自体に含む。これは、転送を行うべきである（デフォルトでは転送を行わない場合）との指示か、または転送を行うべきではない（デフォルトでは転送を行う場合）との指示のどちらかであり得る。転送を行うとき、データ処理装置（別のマスター／要求元ノードであってもよく、また、本明細書では応答ノードと呼ばれる）は、要求されたデータが存在すれば、そのデータへの要求を発行した要求元ノードにそのデータを直接転送する。したがって、そのデータを応答ノードで準備できるならば、そのデータをホームノードへ戻して、ホームノードから先の要求元ノードへ送信する必要はない。よって、ある要求元ノードが、応答ノードの保持するデータへのリクエストを発行したときに伴う遅延を、これによって減少させることができる。スヌープリクエストは、要求元ノードがデータへのアクセスを求めたことに応答してホームノードによって生成される。ホームノードは、そのデータがシステム内の別のノード（応答ノードなど）に保持されているか判断するために、スヌープリクエストを生成してもよい。例えばメインシステムメモリを介するよりも、応答ノードのデータにアクセスする方が高速にデータにアクセスすることができる。
【００１２】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、転送を行うことが禁じられているとき、前記応答は前記要求されたデータを含み、前記送信回路が前記応答を前記ホームノードに送信する。（デフォルトまたは指示によって）転送を行わない場合は、応答ノードは、要求元ノードに応答を転送するのではなく、ホームノードに応答を送る。
【００１３】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、転送を行うべきであり、かつ前記少なくとも１つのデータ値が前記要求されたデータを含むとき、前記送信回路はさらに、前記スヌープリクエストが遂行されたことを示すために、前記ホームノードに完了通知を送信する。要求元ノードに応答を送信することにならび、応答ノードはさらに、応答ノードによって行われた転送アクションによってスヌープリクエストが満たされたことを示すために、ホームノードに完了通知を送信することができる。したがって、ホームノードは続いてスヌープリクエストを発行する必要はなく、また、要求元ノードにより当初要求されたデータを取り込むためにメインシステムメモリにアクセスする必要が回避され得る。
【００１４】
いくつかの実施形態では、前記スヌープリクエストは前記要求元ノードを示す指示子を含む。スヌープリクエストに要求元ノードの指示子を含ませることにより、応答ノードは、システム内のさまざまなノードのうちどれが当初データを要求したのか判断することができる。これにより、応答ノードが、何らかの中間ノードを必要とする範囲内で、スヌープリクエストへの応答を該当する要求元ノードに直接送信することが可能になる。提案される方式では、相互接続（例えばホームノード）が、要求元ノード１２０から送られた識別子とは異なるそれ自体の識別子を使ってスヌープ目標（例えば、応答ノード１３０）と通信することが許可される。転送が機能するためには、ホームノードはそれ自体の生成した識別子に加えて、要求元ノード１２０によって生成された識別子もまた含ませなければならない。
【００１５】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、前記スヌープリクエストは、前記スヌープリクエストの生成を引き起こした前記要求元ノードから前記ホームノードへのトランザクションを特定するトランザクション識別子を含み、前記応答は前記トランザクション識別子を含む。スヌープリクエスト内に提供されたトランザクション識別子を含めることによって、前記応答が要求元ノードからホームノードに対して行われた当初のリクエストからのトランザクション識別子を含むことになり、それによって、応答ノードによって作成される応答を当初のデータリクエストに関連付けることができる。このようにして、要求元ノードは返されたデータと、要求したいずれかのデータとの間の関係を判断することができる。
【００１６】
いくつかの実施形態では、前記キャッシュ回路は、前記少なくとも１つのデータ値のそれぞれに関連するキャッシュ状態を含み、前記キャッシュ状態は、そのデータ値が無効、共有、所有、排他、および修正のうち少なくとも１つの状態にあることを示す。このさまざまなキャッシュ状態は、相互接続されたシステムのさまざまなノードの間でコヒーレンシを有効にするために用意されている。例えば、ある状態をキャッシュ内の各エントリに与え、その状態を使用してシステム全体にわたるデータの共有および／または修正の程度を示すことができる。例えば、「無効」状態を使用して、そのキャッシュラインがもはや無効ではなく、自由に上書き可能であることを示すことができる。キャッシュ状態「共有」は、そのデータ値がある数の異なるノードによって共有されているが、修正可能ではないことを示すことができる。「所有」状態は、当該キャッシュラインがローカルキャッシュ内で修正されていることを示すことができる。この修正されたデータは、メモリ内でそのデータが更新されていなければ、システム内の他のノードと共有されていることもある。「排他」状態は、そのノードがシステム内でそのラインのコピーをもつ唯一のノードであるが、そのラインが修正されていないことを示すことができる。最後に「修正」状態は、そのノードがシステム内でそのキャッシュラインの唯一のコピーをもち、かつ、そのコピーにシステム内のメインメモリと比較して変更を加えていることを示すことができる。ここに記載したこれらの状態が、この実施形態により対応可能なアクセス許可の区分の単なる例であることが理解される。他の実施形態では、同じアクセス許可の区分が、別のキャッシュ状態の名前および／またはフラグによって提供されてもよい。例えばＡＲＭ  Ｌｉｍｉｔｅｄ（イギリス、ケンブリッジ）により提示されたＡＭＢＡ仕様には、「無効」、「クリーン／ダーティ」、「ユニーク／共有」などの異なる分類が記載されている。後ろの２つの選択肢は任意の組み合わせで組み合わされてもよく、合計５種類の異なる状態が得られる。本明細書では、これ以降の全体にわたって、ＡＭＢＡキャッシュ状態を使用する。ただし、代替／等価なキャッシュ状態もまた使用できることが、当業者には理解される。
【００１７】
いくつかの実施形態では、前記スヌープリクエストは、前記要求されたデータに関連して前記データ処理装置に記憶されている状態に関わりなく転送を行うべきであるかを示す。応答ノードにより行われる転送アクションを行うべきであるかを示すこと、および、そのアクションを、要求されたデータに関連して記憶されている状態に関わりなく行うことにより、追加のストレージ要件を必要とせずに転送動作を行うことが可能である。具体的には、いくつかの実施形態では、前記スヌープリクエストは、前記要求されたデータに関連して前記キャッシュ回路に記憶されているキャッシュ状態に関わりなく転送を行うべきであるかを示す。これらの実施形態では、転送が許可されること、またはすでに行われたことを示すために、さらに別のキャッシュ状態を追加する必要はない。したがって、応答ノードによって行われる転送動作は、どのようなキャッシュ状態にも無関係である。
【００１８】
いくつかの実施形態では、前記スヌープリクエストは、前記スヌープリクエストのタイプを符号化することにより、転送を行うべきであるかを示す。したがって、データが応答ノードに存在する場合に転送を行うべきであるかは、応答ノードによって受け取られるスヌープリクエストのタイプ（１つまたは複数）によって示される。
【００１９】
他の実施形態では、前記スヌープリクエストは、転送を行うべきであるかを前記スヌープリクエスト内のビットによって示す。要求されたデータを応答ノードで準備できる場合に転送を行うべきであるかをスヌープリクエスト内のビットを使用して示すことによって効率的な符号化が可能になり、システム全体のトラフィックを著しく増加させることなく転送を行うことができる。このことは、ある数のノードを含むシステムまたは、大量のデータが頻繁に伝送されるシステムでは重要であり得る。
【００２０】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、前記送信回路が前記応答を前記要求元ノードに送信できないとき、前記送信回路は前記応答を前記ホームノードへ送信する。スヌープリクエストへの応答を応答ノードが要求元ノードに送信できないことをホームノードに通知することにより、ホームノードが、要求されたデータを要求元ノードに提供するために別のアクションをとることができてもよい。例えば、これは、システム内の別のノードに追加のスヌープリクエストを送ることによって、または、そのデータへのリクエストをメインメモリに送ることによって実現できることもある。いくつかの実施形態では、スヌープリクエストが失敗していないとホームノードに通知されない限り、スヌープリクエストが失敗したとホームノードが結論付けるように、タイムアウトが提供される。ただし、そのような実施形態では、スヌープリクエストの成功に関していずれかの結論に達するには、その前に最低限の期間（すなわち、タイムアウト時間）、待機する必要がある。
【００２１】
いくつかの実施形態では、転送を行うべきであり、かつ、前記キャッシュ回路に前記要求されたデータがないとき、前記送信回路は前記応答を前記要求元ノードに送信して、前記要求されたデータがないことを示す。ここでも、要求されたデータを応答ノードが要求元ノードに提供することによりスヌープリクエストに応答することができないとの指示をホームノードに提供することによって、ホームノードが、追加のスヌープリクエストを転送すること、または、提供すべきデータへのリクエストをメインメモリに対して発行することなどの、何らかの代替アクションをとることができる。
【００２２】
いくつかの実施形態では、前記要求されたデータを含む前記応答を前記要求元ノードへ送信することに加えて、前記キャッシュ回路内の前記要求されたデータに関連するキャッシュ状態が、前記キャッシュ状態と前記スヌープリクエストのタイプのうち少なくとも１つに依存して調節される。いくつかの事例では、スヌープリクエストが、応答ノードのキャッシュ回路に記憶されている要求されたデータに関連するキャッシュ状態を変化させてもよい。具体的には、キャッシュデータの変化は、スヌープリクエストが受け取られる前のそのデータに関連する当初のキャッシュ状態および、受け取られるスヌープリクエストのタイプのいずれかまたは両方に依存してもよい。スヌープリクエストへの応答を送信するときに、これらの要因のそれぞれを考慮して、キャッシュ回路内で要求されたデータに関連付ける新しいキャッシュ状態が判断されてもよい。
【００２３】
いくつかの実施形態では、前記スヌープリクエストの前記タイプは、前記要求元ノードが前記要求されたデータをキャッシュするための所望のキャッシュ状態を示す。よって、受け取られるデータについての所望の共有と修正の程度を示す指示を、スヌープリクエストに含ませることができる。具体的には、要求元ノードは要求元ノードによってユニークに保持されるべき特定のデータピースを所望してもよく、または、要求元ノードは共有状態で保持されているデータで満足してもよい。どちらの場合でも、所望されるキャッシュ状態は、応答ノードのキャッシュ回路内で要求されたデータに関連するキャッシュ状態をどのように修正するかを判断する際の要因となり得る。
【００２４】
いくつかの実施形態では、前記応答は、前記要求元ノードが前記要求されたデータをキャッシュするための要求キャッシュ状態を示す。スヌープリクエストに対して提供される応答は、要求されたデータを要求元ノードに返すときにそのデータに使用されるべきキャッシュ状態を示すことができる。そのような要求キャッシュ状態は、要求元ノードでデータに関連付けられる当初のキャッシュ状態、応答ノードでデータに関連付けられる新しいキャッシュ状態、および、要求元ノードによって提供されるいずれかの要求キャッシュ状態に基づいて判断されてもよい。
【００２５】
いくつかの実施形態では、前記要求キャッシュ状態は、共有状態である。言い換えれば、転送の結果として、応答ノードによって提供されるデータは、要求元ノードによって共有状態で保持されることになる。したがって、データは要求元ノードによって読み出されてもよいが、そのノードによって修正されてはならない。
【００２６】
いくつかの実施形態では、前記スヌープリクエストはホームノードから受け取られ、前記要求されたデータが前記キャッシュ回路内で修正キャッシュ状態を示しているとき、前記要求キャッシュ状態はクリーンであり、前記送信回路が前記ホームノードにさらなる応答を送信する。そのさらなる応答は前記要求されたデータを含み、また、前記要求されたデータが修正されていることを示す。「修正」キャッシュ状態を示すデータに関してスヌープリクエストを受け取る状況に応答ノードが対処するための１つの有効な方法は、応答ノードが、前述した転送処理を使用して、データが要求元ノードに転送されるようにスヌープリクエストに応答することである。この応答は、データが修正されていることに要求元ノードが気付かないように、要求キャッシュ状態「クリーン」と共に送信することができる。ほぼ同時に、応答ノードは、要求されたデータを提供するため、さらに、要求されたデータが修正されていることを示すために、さらなる応答をホームノードに対して発行することもできる。通常、その結果、ホームノードは修正されたデータを、例えばメインシステムメモリに書き戻そうと努める。したがって、これを実現するために、要求元ノードを関与させる必要はなく、また、要求元ノードにデータを提供する前にメインシステムメモリに書き戻す必要もない。したがって、要求動作全体の遅延を改善することができる。
【００２７】
別の構成例によれば、ある要求元ノードから要求されたデータに関してデータリクエストを受け取る受信回路と、別のノードにスヌープリクエストを送信する送信回路とが提供され、前記スヌープリクエストには、前記要求元ノードの識別子、前記要求されたデータの参照先、および、前記要求されたデータが他のノードにキャッシュされているときに転送が前記他のノードから前記要求元ノードへ直接行われるべきであるかについての指示が含まれる。
【００２８】
ホームノードがある要求元ノードからデータのリクエストを受け取ると、ホームノードはシステム内の１つまたは複数の他のノードに対してスヌープリクエストを発行する。送られるスヌープリクエストには、転送を行うべきであるかの指示が含まれる。この結果、スヌープリクエストを受け取ったノードは、要求されたデータが存在する場合、要求元ノードに送信するためにホームノードにデータを送り返すのではなく、要求元モードに送ることによって、スヌープリクエストに直接応答することができる。
【００２９】
ここで、特定の実施形態について図面を参照しながら説明する。
【００３０】
図１は、データ処理システム１００を示す。データ処理システム１００内には、ホームノード１１０、第１の要求元ノード１２０、および第２の要求元ノード１３０がある。第１の要求元ノード１２０と第２の要求元ノード１３０は、ある相互接続内のマスターノードであってもよい。この実施形態では、第１の要求元ノード１２０を要求元ノードと呼び、第２の要求元ノード１３０を応答ノードと呼ぶ。データ処理システム１００のノード１１０、１２０、１３０はそれぞれ、キャッシュを含む。３つの列が含まれた、それぞれのキャッシュが示されている。１列目はデータ値のアドレスを表し、２列目はデータ値そのものを表し、３列目はそのデータ値に関連するキャッシュの状態を表す。この実施形態では、キャッシュ状態は、ＡＲＭ  Ｌｉｍｉｔｅｄ（イギリス、ケンブリッジ）により提示されたＡＭＢＡ仕様で使用されるキャッシュ状態に対応する。そのようなキャッシュ状態には、特定のエントリが無効で上書き可能であることを示す“Ｉ”、特定のエントリが共有されていて、かつダーティである（すなわち、より一般的な用語では、特定のエントリが、そのエントリが他のノードによって共有されているがローカルで修正されているという形で、そのノードにより「所有」されている）ことを示す“ＳＤ”、そのエントリが共有されていて、かつクリーンである（すなわち、より一般的な用語では、特定のエントリが、そのエントリがシステム内の他のノードにより共有されていて、かつ修正不可能であるという形で「共有」されている）ことを示す“ＳＣ”、および、そのエントリがユニークで、かつクリーンである（すなわち、より一般的な用語では、特定のエントリが、そのエントリがそのノードにより所有され、かつ、修正されていないという形で「排他」である）ことを示す“ＵＣ”がある。
【００３１】
図１の実施形態に示されるように、ノード１２０、１３０のうちの１つまたは複数が、他のノードがアクセス手段をもたないデータ値へのアクセス手段をもっていることがある。例えば、要求元ノード１２０には、応答ノード１３０によって保持されているデータ値０ｘ００９４へのアクセス手段がない。同様に、応答ノード１３０には、要求元ノード１２０によって保持されているデータ値０ｘ００９０へのアクセス手段がない。したがって、要求元ノード１２０がデータ値０ｘ００９４へのアクセスを希望すると、そのデータ値へのアクセス手段を得るためには、データ処理システム１００全体のコヒーレンシを維持するホームノード１１０へリクエストを送らなければならない。
【００３２】
図１には示されていないが、データ処理システム１００には、さらに、ホームノード１１０を介して接続されたメインシステムメモリが含まれることがある。ホームノード１１０からのリクエストに応じて、メインシステムメモリからデータを取り込むことができる。しかし、メインメモリのアクセスは一般にキャッシュの１つをアクセスするよりも遅いので、この処理には時間がかかる可能性がある。
【００３３】
図２は、データ処理システム１００を概略的に示す。データ処理システム１００内には、ホームノード１１０、第１の要求元ノード１２０、および第２の要求元ノード／応答ノード１３０がある。それぞれのノードは、キャッシュ１４０Ａ、１４０Ｂ、１４０Ｃ、受信回路１５０Ａ、１５０Ｂ、１５０Ｃ、および、送信回路１６０Ａ、１６０Ｂ、１６０Ｃを含む。
【００３４】
前述したように、要求元ノード１２０は、要求元ノード１２０のローカルキャッシュ１４０Ａで見つからない何らかの所望のデータに関して、ホームノード１１０に対してリクエストメッセージを発行する。このリクエストメッセージは要求元ノード１２０の送信回路１６０Ａによって送信され、ホームノード１１０の受信回路１５０Ｂによって受信される。この時点で、ホームノード１１０は、要求されたデータの最新版がどこで見つかるか判断する。このデータの最新版が応答ノード１３０で見つかるとホームノードが判断する。よって、ホームノードは、応答ノード１３０に対し、提供されるべきデータについてのスヌープ転送リクエストメッセージを発行する。このメッセージはホームノード１１０の送信回路１６０Ｂによって送信され、応答ノード１３０の受信回路１５０Ｃによって受信される。スヌープ転送リクエストの詳細については、図３を参照しながら考察する。スヌープ転送リクエストを受け取ると、応答ノード１３０は、要求されたデータを求めてローカルキャッシュ１４０Ｃを検索する。データが見つかると、要求元ノード１３０は、転送を行うべきであると指示する転送指示の結果として、このデータを第１の要求元ノード１２０への応答の形で直接転送しようと試みる。この応答は応答ノード１３０の送信回路１６０Ｃによって送信され、要求元ノード１２０の受信回路１５０Ａによって受信される。
【００３５】
したがって、要求元ノード１２０から要求されたデータは、応答ノード１３０によって直接提供される。具体的には、この実施形態では、応答または要求されたデータがホームノード１１０に返されてからホームノード１１０が続いてそのデータを第１の要求元ノード１２０に返す必要がない。このようにして、２つの応答メッセージが必要なく、必要なメッセージがただ１つであることの結果、遅延を改善することができる。
【００３６】
図３は、データ処理システム１００の３つのノードの間のトランザクションシーケンスを示す。Ｘ軸はそれぞれのノードを表し、Ｙ軸は時間を表す。最初に要求元ノード１２０がＲｅａｄＳｈａｒｅｄメッセージをホームノード１１０に対して発行する。これは、要求元ノード１２０が特定のデータ値への共有読み出しアクセスを所望していることを示す。このメッセージがホームノード１１０によって受け取られると、ホームノード１１０はＳｎｐＳｈａｒｅｄＦｗｄメッセージを応答ノード１３０に対して発行する。このメッセージはスヌープ転送リクエストメッセージであり、第１に、要求元ノード１２０が特定のデータ値への共有データアクセスを所望していること、第２に、転送が応答ノード１３０によって行われるべきであることを示す。このメッセージは、最初のリクエストの発信元のノード（要求元ノード１２０）を示す、転送ノードＩＤを含む。このメッセージは、要求元ノード１２０によって発行された最初のリクエストメッセージに関連するトランザクションＩＤもまた含む。具体的には、要求元ノード１２０によって発行された最初のＲｅａｄＳｈａｒｅｄメッセージは、特定のトランザクションＩＤ（Ａ）に関連する。このトランザクションＩＤは、スヌープリクエスト転送メッセージに第２のパラメータとして含まれる。さらに、スヌープリクエスト転送メッセージは、それ自体のトランザクションＩＤ（Ｂ）もまた含む。応答ノード１３０で受け取られると、応答ノード１３０は、要求されたデータが存在するか判断する。この実施形態では、そのデータ値が存在すると仮定する。要求元ノード１２０がそのデータ値への共有読み出しアクセスを所望しているので、そのデータ値に関連するキャッシュ状態がユニーククリーン（ＵＣ）から共有クリーン（ＳＣ）に変更される。加えて、応答ノード１３０がホームノード１１０にＳｎｐＲｅｓｐ＿ＳＣ＿Ｆｗｄｅｄ＿ＳＣメッセージを返す。１つ目のＳＣは、応答ノード１３０がＳＣとしてコピーを保持していることを示し、２つ目のＳＣは、ＳＣ状態のコピーが要求元ノード１２０に送られたことを示す。このメッセージは、スヌープリクエストに対して、すでに応答が返されているか、またはこれから応答が返されることと、要求と提供の両方が共有クリーン（ＳＣ）キャッシュ状態で行われたことを示す。同様に、応答ノード１３０が、スヌープリクエストに対する応答を発行する。この実施形態では、この応答は、応答ノード１３０から要求元ノード１２０へ送られるＣｏｍｐＤａｔａ＿ＳＣメッセージの形で送られる。応答ノード１３０は、ホームノード１１０から受け取った、要求元ノード１２０を特定するＳｎｐＳｈａｒｅｄＦｗｄメッセージによって、要求元ノード１２０のＩＤの身元を知っている。この応答メッセージにはパラメータとして、ホームノード１１０の識別子および、応答の対象のスヌープリクエストのトランザクションＩＤ（Ｂ）が含まれる。
【００３７】
よって、要求元ノード１２０がこの応答を受け取ると、要求元ノード１２０はデータ値の取得に成功している。要求元ノード１２０は次に、ホームノード１１０に確認通知で応答する。この確認通知にはパラメータとして、ホームノード１１０が発行したスヌープリクエストのトランザクションＩＤ  （Ｂ）および、ホームノード１１０の識別子が含まれる。ホームノードは、この確認通知を受け取ると、データが要求元ノード１２０によって正しく取得されたことおよび、要求されたデータを取得するためにさらなるアクションが必要ないことがわかる。この確認通知または応答ノード１３０によって発行されるスヌープ応答がホームノード１１０によって受け取られない場合は、ホームノード１１０は、要求されたデータが要求元ノード１２０によって取得されていないと結論付けてもよく、さらなるアクションをとってもよい。具体的には、ホームノード１１０は、追加のスヌープリクエストを使用してネットワーク内の他のノードに問い合わせてもよいし、または、要求されたデータを取得するためにメインシステムメモリにアクセスしてもよい。
【００３８】
コヒーレンシを維持するために、受け取ったさまざまなタイプのスヌープリクエストに応答ノードがどのように応答しなければならないかに関して、ある数の規則が提供されている。具体的には、スヌープリクエストのタイプ（データを取得した後に要求元ノードがそのデータに関連付けたいキャッシュ状態を示す）と、応答ノードに保持されているそのデータの現在のキャッシュ状態に依存して、１つまたは一連のさまざまなアクションがとられてもよい。具体的には、これらのアクションは、応答ノードに保持されているデータのキャッシュ状態の変更を命じてもよい。それらの規則について、下記に説明する。ここでも、前述したように、これらの規則はＡＲＭ  Ｌｉｍｉｔｅｄ（イギリス、ケンブリッジ）により提示されたＡＭＢＡ仕様に基づいて提供される。ただし、他の等価な状態を使用して等価な規則のセットを考案できることが、当業者には理解される。
【００３９】
応答ノード１３０で転送（Ｆｏｗａｒｄ）タイプのスヌープを処理するための共通の規則は次のとおりである。
・ラインがＵＤ（ユニークダーティ）、ＵＣ（ユニーククリーン）、ＳＤ（共有ダーティ）、またはＳＣ（共有クリーン）状態であれば、要求元ノードにコピーを転送する。
・対応する非転送タイプのスヌープへの転換は許可されない。
・非無効化（Ｎｏｎ−Ｉｎｖａｌｉｄａｔｉｎｇ）タイプのスヌープに応答してユニーク状態のデータを転送してはならない。
・ＤｏＮｏｔＧｏＴｏＳＤビットがセットされたスヌープリクエストを受け取った応答ノード１３０は、コヒーレンシによって許可された場合でもＳＤ（共有ダーティ）に移行しない。
【００４０】
ＳｎｐＳｈａｒｅｄＦｗｄ
前述した共通規則に加えて、ＳｎｐＳｈａｒｅｄＦｗｄを受け取った応答ノード１３０が従うべき規則は次のとおりである。
・応答ノード１３０は、ＳＤ（共有ダーティ）、ＵＣ（ユニーククリーン）、ＵＤ（ユニークダーティ）、またはＳＣ（共有クリーン）状態のいずれかにあるラインの転送を許可される。
・応答ノード１３０は、そのノードのデータのコピーを、ＳＤ（共有ダーティ）、ＳＣ（共有クリーン）、またはＩ（無効）状態のいずれかに移行する。
【００４１】
ＳｎｐＣｌｅａｎＦｗｄ
前述した共通規則に加えて、ＳｎｐＣｌｅａｎＦｗｄを受け取った応答ノード１３０が従うべき規則は次のとおりである。
・応答ノード１３０は、ＳＣ（共有クリーン）またはＵＣ（ユニーククリーン）状態にあるキャッシュラインを転送する。
・応答ノード１３０は、そのノードのデータのコピーを、ＳＤ（共有ダーティ）、ＳＣ（共有クリーン）、またはＩ（無効）状態のいずれかに移行する。
【００４２】
ＳｎｐＵｎｉｑｕｅＦｗｄ
前述した共通規則に加えて、ＳｎｐＵｎｉｑｕｅＦｗｄを受け取った応答ノード１３０が従うべき規則は次のとおりである。
・応答ノード１３０はユニーク状態にあるキャッシュラインを転送する。
・ＵＤ（ユニークダーティ）またはＳＤ（共有ダーティ）などのいずれかのダーティ状態にあるデータをもつ応答ノード１３０は、そのダーティデータをホームではなく要求元に渡す。
・応答ノード１３０は、そのノードのデータのコピーをＩ（無効）状態に移行する。
・応答ノード１３０はホームノード１１０にデータを返さない。
【００４３】
ＳｎｐＮｏｔＳｈａｒｅｄＤｉｒｔｙＦｗｄ
前述した共通規則に加えて、ＳｎｐＮｏｔＳｈａｒｅｄＤｉｒｔｙＦｗｄを受け取った応答ノード１３０が従うべき規則は次のとおりである。
・応答ノード１３０は、ＳＣ（共有クリーン）、ＵＣ（ユニーククリーン）、およびＵＤ（ユニークダーティ）状態にあるデータを転送する。
・応答ノード１３０は、そのノードのデータのコピーをＳＤ、ＳＣ、またはＩ状態に移行する。
【００４４】
ＳｎｐＯｎｃｅＦｗｄ
前述した共通規則に加えて、ＳｎｐＯｎｃｅＦｗｄを受け取った応答ノード１３０が従うべき規則は次のとおりである。
・応答ノード１３０はＩ（無効）状態にあるデータを転送する。
・上の規則によって、応答ノード１３０はダーティデータを要求元ノード１２０に転送しない。
・応答ノード１３０は、データ状態がＵＤ（ユニークダーティ）またはＳＤ（共有ダーティ）からＵＣ（ユニーククリーン）またはＳＣ（共有クリーン）に変化したとき、ホームノード１１０にデータを返す。
【００４５】
図４は、要求元ノード１２０と応答ノード１３０の間の接続が切れているトランザクションの図を示す。具体的には、一連のトランザクションはこれまでと同様に進行するが、ここでは要求元ノード１２０はデータのユニークコピーを要求する。しかし、応答ノード１３０によってＳｎｐＵｎｉｑｕｅＦｗｄメッセージが受け取られ、応答ノード１３０がデータを要求元ノード１２０に転送しようとしたときに、要求元ノード１２０と応答ノード１３０の間のリンクが切れていると判断される。その結果、応答ノード１３０は、要求されたデータを含む普通のスヌープ応答メッセージで、ホームノード１１０に応答する。この時点で、ホームノード１１０は、通常のスヌープリクエスト／スヌープ応答処理のとおりに要求元ノード１２０にデータを転送することができる。
【００４６】
図５は、要求元ノード１２０、応答ノード１３０、およびホームノード１４０の間の、あるトランザクションの図を示す。トランザクションは図３に示す実施形態と同様に進行する。しかし、この場合、応答ノード１３０に記憶されている、要求元ノード１２０により要求されたデータはダーティである。言い換えれば、データは応答ノード１３０のローカルキャッシュで修正されている。この場合でも、データは応答ノード１３０によって要求元ノード１２０に転送される。さらに、応答ノード１３０は要求ノード１２０に、データがクリーンであることを示す。言い換えれば、要求元ノード１２０は、キャッシュ状態を共有クリーン（ＳＣ）としてデータをキャッシュに記憶することができる。しかし、応答ノード１３０がホームノード１４０へ応答を発行して返すとき、これはＳｎｐＲｅｓｐ＿ＳＣ＿Ｆｗｄｅｄ＿ＳＣメッセージの形で行われる。このメッセージは修正された（ダーティな）データを含んでおり、また、そのデータが共有クリーンの状態で要求元ノード１２０に転送されたことを示す。これに応答して、ホームノード１４０は、システムキャッシュまたはメインメモリのどちらかにデータが書き戻されるようにする。したがって、要求元ノード１２０は、最新のデータを素早く受け取る。データをホームノード１４０に送信し、書き戻してから要求元ノード１２０に提供する方法では著しい遅延を伴うことがあるが、その必要なく、要求元ノードが最新のデータを受け取ることができる。
【００４７】
図６は、一実施形態によるデータ処理の方法を示すフローチャート１７０である。処理はステップ１８０で開始して、スヌープ転送リクエストが受け取られる。ステップ１９０で、ローカルノードがローカルキャッシュ内に要求されたデータをもつか判断される。ローカルノードが要求されたデータをもたない場合は、ステップ２００でホームノードに対して否定応答が発行されてもよく、処理はステップ１８０に戻る。それ以外の場合は、ステップ２１０で、ローカルキャッシュ内のデータに関連するキャッシュ状態が、発行されたスヌープリクエストのタイプとローカルキャッシュ内のデータの現在の状態に依存して修正される。これが終了すると、可能なら、ステップ２２０で、そのノードが要求元ノードへの接続をもつか否かが判断される。接続がない場合には、ステップ２３０で、スヌープ応答がホームノードに返送され、処理はステップ１８０に戻る。そのノードが要求元への接続をもつ場合は、次にステップ２４０で、要求元へ応答が送信される。処理は次にステップ２５０に進み、そのデータに関連する以前のキャッシュ状態が「修正」であったか判断される。例えば、この状態は、そのローカルノードがデータを修正していたことを意味する共有ダーティ状態と同等と見なされてもよい。「修正」状態ではなかった場合は、処理はステップ１８０に戻る。それ以外の場合は、ステップ２６０で、修正されたデータがホームノードに返送される。処理は次にステップ１８０に戻る。
【００４８】
したがって、ここに記載される実施形態によって、スヌープリクエストに直接、素早く応答することが可能になる。さらに、このことは、提供されるどのシステムでもキャッシュ状態を一切拡張することなく実現することができる。
【００４９】
本出願において、「〜ように構成される」という表記は、装置の要素が、定められた動作を行うことが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または様式を意味する。例えば、装置が定められた動作を提供する専用のハードウェアを有してもよいし、または、プロセッサもしくは他の処理デバイスがその機能を行うようにプログラムされてもよい。「〜ように構成される」とは、定められた動作を提供するために、その装置の要素を変更する必要が一切ないことを暗に示す。
【００５０】
本明細書では本発明の説明的な実施形態について、添付の図面を参照しながら詳しく説明してきたが、本発明がそれらの厳密な実施形態に制限されず、当業者によって、添付の特許請求の範囲によって定められる本発明の範囲および趣旨を逸脱することなく、さまざまな変更、追加、修正がそこに加えられてもよいことが理解される。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴のさまざまな組み合わせが独立請求項の特徴と共に作成されることもできる。
【図１】
2018129041.tif 000003
【図２】
2018129041.tif 000004
【図３】
2018129041.tif 000005
【図４】
2018129041.tif 000006
【図５】
2018129041.tif 000007
【図６】
2018129041.tif 000008
【外国語明細書】
2018129041000001.pdf