(57)【要約】【課題】データ一貫性制御を単純なものとしつつ、キャッシュエージェントにデッドロックを防止するための十分大きなサイズのバッファを持つ必要のないデータ一貫性制御システム及びデータ一貫性制御方法を提供する。【解決手段】データ一貫性制御システムは、複数のキャッシュエージェントと、ホームエージェントとが複数のネットワークで接続されている。ホームエージェントは、アクセス要求を受けると、スヌープ要求を発行する手段を備える。キャッシュエージェントは、スヌープ要求を受け取ると、ホームエージェントに対してスヌープ応答を発行する手段と、スヌープリトライ応答を発行する手段とを備える。更に、キャッシュエージェントは、スヌープ応答とスヌープリトライ応答とが異なるネットワークによって配送する手段と、ホームエージェントは、スヌープリトライ応答を管理する手段と、その管理手段により、スヌープ要求を再発行する手段とを備える。【選択図】図１
2008197716.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャッシュエージェントと、少なくとも１つのホームエージェントとが複数のネットワークで接続され、前記キャッシュエージェントと前記ホームエージェントとのデータの一貫性制御を行うデータ一貫性制御システムであって、
前記複数のネットワークは、少なくともスヌープ応答を配送するネットワークと、
スヌープリトライ応答を配送するネットワークと、を備え、
前記ホームエージェントは、
前記キャッシュエージェントからのアクセス要求を受けると、当該アクセス要求を行ったキャッシュエージェント以外の複数のキャッシュエージェントに対してスヌープ要求を発行するスヌープ要求発行手段を備え、
前記キャッシュエージェントは、
前記スヌープ要求を受け取ると、前記データの一貫性制御を行うと共に、前記ホームエージェントに対して前記スヌープ応答を発行するスヌープ応答発行手段と、
前記ホームエージェントに対してスヌープ要求の再試行を求め、前記スヌープリトライ応答を発行するスヌープリトライ応答発行手段と、を備え、
前記ホームエージェントは、
前記スヌープリトライ応答を受けて、どのキャッシュエージェントから再試行を求められたかを管理する管理手段と、
当該管理手段によって管理する情報により、該当するキャッシュエージェントに対して前記スヌープ要求を再発行するスヌープ要求再発行手段と、
を更に備えることを特徴とするデータ一貫性制御システム。
【請求項２】
前記キャッシュエージェントは、前記スヌープ要求を受けると共に、当該スヌープ要求を処理した場合にデッドロックが発生するかを検査するキャッシュ側デッドロック検査手段を更に備え、
当該キャッシュ側デッドロック検査手段により前記デッドロックが発生する可能性があると判断した場合には、前記スヌープリトライ応答を発行する
ことを特徴とする請求項１記載のデータ一貫性制御システム。
【請求項３】
前記ホームエージェントは、スヌープリトライ抑止手段を更に備え、
前記スヌープ要求再発行手段が前記スヌープ要求を再発行することによりデータの一貫性がとれなくなる場合或いはネットワークの輻輳が発生すると判断した場合には、前記スヌープリトライ抑止手段が前記スヌープ要求の再発行処理を抑止する
ことを特徴とする請求項１記載のデータ一貫性制御システム。
【請求項４】
前記ホームエージェントは、前記スヌープリトライ応答を受けて、スヌープ要求の再発行を行った場合に前記デッドロックが発生するかを検査するホーム側デッドロック検査手段を更に備え、
当該ホーム側デッドロック検査手段により前記デッドロックが発生する可能性があると判断した場合には、前記管理手段に前記スヌープリトライ応答を記録し、一方、前記デッドロックが発生しないと判断した場合には、前記管理手段に前記スヌープリトライ応答を記録せず前記スヌープ要求を再発行する
ことを特徴とする請求項１記載のデータ一貫性制御システム。
【請求項５】
複数のキャッシュエージェントと、少なくとも１つのホームエージェントとが複数のネットワークで接続され、前記キャッシュエージェントと前記ホームエージェントとのデータの一貫性制御を行うデータ一貫性制御システムにおけるデータ一貫性制御方法であって、
前記複数のネットワークは、少なくともスヌープ応答を配送するネットワークと、
スヌープリトライ応答を配送するネットワークと、を備え、
前記ホームエージェントが、前記キャッシュエージェントからのアクセス要求を受けると、当該アクセス要求を行ったキャッシュエージェント以外の複数のキャッシュエージェントに対してスヌープ要求を発行するスヌープ要求発行ステップと、
前記キャッシュエージェントが、前記スヌープ要求を受け取ると、前記データの一貫性制御を行うと共に、前記ホームエージェントに対して前記スヌープ応答を発行するスヌープ応答発行ステップと、
前記キャッシュエージェントが、前記ホームエージェントに対してスヌープ要求の再試行を求め、前記スヌープリトライ応答を発行するスヌープリトライ応答発行ステップと、
前記ホームエージェントが、前記スヌープリトライ応答を受けて、どのキャッシュエージェントから再試行を求められたかを管理する管理ステップと、
前記ホームエージェントが、当該ステップによって管理する情報により、該当するキャッシュエージェントに対して前記スヌープ要求を再発行するスヌープ要求再発行ステップと、
を備えることを特徴とするデータ一貫性制御方法。
【請求項６】
前記キャッシュエージェントは、前記スヌープ要求を受けると共に、当該スヌープ要求を処理した場合にデッドロックが発生するかを検査するキャッシュ側デッドロック検査ステップを更に備え、
当該デッドロック検査ステップによりデッドロックが発生する可能性があると判断した場合には、前記スヌープリトライ応答を発行する
ことを特徴とする請求項５記載のデータ一貫性制御方法。
【請求項７】
前記ホームエージェントは、スヌープリトライ抑止ステップを更に備え、
前記再発行ステップが前記スヌープ要求を再発行することによりデータの一貫性がとれなくなる場合或いはネットワークの輻輳が発生すると判断した場合には、前記スヌープリトライ抑止ステップが前記スヌープ要求の再発行処理を抑止する
ことを特徴とする請求項５記載のデータ一貫性制御方法。
【請求項８】
前記ホームエージェントは、前記スヌープリトライ応答を受けて、スヌープ要求の再発行を行った場合に前記デッドロックが発生するかを検査するホーム側デッドロック検査ステップを更に備え、
当該ホーム側デッドロック検査ステップにより前記デッドロックが発生する可能性があると判断した場合には、前記管理ステップにおいて前記スヌープリトライ応答を記録し、一方、前記デッドロックが発生しないと判断した場合には、前記管理ステップにおいて前記スヌープリトライ応答を記録せず前記スヌープ要求を再発行する
ことを特徴とする請求項５記載のデータ一貫性制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ一貫性制御システム及びデータ一貫性制御方法において、少ないＨＷ（hard ware）量でデッドロックを起こすことなくデータの一貫性制御を行うデータ一貫性制御システム及びデータ一貫性制御方法に関する。
【背景技術】
【０００２】
従来、データ一貫性制御システムにおいて、デッドロック（dead lock）を起こすことなくデータの一貫性制御を行うためのものが、「特許第３７５１７４１号マルチプロセッサシステム（特開平１１−２１９３４３号公報）」（以下、これを特許文献１と言う。）に開示されている。
【０００３】
ここで、特許文献１によるデータ一貫性制御システムの構成例を、図１２に示す。
【０００４】
図１２に示すように、特許文献１に記載のデータ一貫性制御システムは、複数のキャッシュエージェント１０２１（１０２１−１から１０２１−ｎ）と、複数のホームエージェント１０３１（１０３１−１から１０３１−ｍ）とがネットワーク１０１１によって接続された構成である。
【０００５】
なお、ｎとｍは、自然数であり、ここでは、ｎとｍは、割り当てられた番号を意味するものとし、以下、同様である。
【０００６】
キャッシュエージェント１０２１−１は、キャッシュエージェントでのデータ一貫性制御を行うキャッシュ制御部１０５５と、メッセージの送受信バッファであるスヌープ要求受信バッファ１０５１と、アクセス応答受信バッファ１０５２と、アクセス要求・スヌープ応答送信バッファ１０５３とを有する。
【０００７】
ホームエージェント１０３１−１は、ホームエージェント１０３１−１でのデータ一貫性制御を行うホーム制御部１０６５と、キャッシュエージェントが発行したアクセス要求を記録し処理中の状態を管理するアクセス要求管理テーブル１０６４と、メッセージの送受信バッファであるアクセス要求・スヌープ応答受信バッファ１０６１と、スヌープ要求・アクセス応答送信バッファ１０６２とを有する。
【０００８】
アクセス要求管理テーブル１０６４に管理される各エントリは、アクセス要求情報１０７１と、応答カウンタ１０７２とを有する（図１３参照）。
【０００９】
キャッシュエージェント１０２１−１は、ホームエージェント１０３１−１が保持するデータにアクセスし、そのデータのコピーを保持する。
【００１０】
複数のキャッシュエージェント１０２１−ｎが同じデータのコピーを保持するので、複数のコピーとメモリにあるデータとの間で、データの一貫性をとる必要が生じる。そこで、このデータの一貫性を取るための制御を、データ一貫性制御と呼ぶこととする。
【００１１】
このデータ一貫性制御は、キャッシュエージェント１０２１−ｎと、ホームエージェント１０３１−ｍとの間で、ネットワーク１０１１を介してメッセージをやり取りすることにより、行われる。
【００１２】
例えば、キャッシュエージェント１０２１−１が、あるホームエージェント１０３１−ｍ（ここでは、１０３１−１とする。）のデータに新たにアクセスする場合、キャッシュ制御部１０５５が該ホームエージェント１０３１−１宛てのアクセス要求メッセージを生成し、アクセス要求・スヌープ応答送信バッファ１０５３にメッセージを出力する。
【００１３】
アクセス要求・スヌープ応答送信バッファ１０５３に蓄積されたアクセス要求メッセージは、ネットワーク１０１１を介して該ホームエージェント１０３１−１のアクセス要求・スヌープ応答受信バッファ１０６１に渡される。
【００１４】
該ホームエージェント１０３１−１は、アクセス要求・スヌープ応答受信バッファ１０６１からアクセス要求メッセージを受け取り、アクセス要求管理テーブル１０６４にアクセス要求情報１０７１（図１３）を登録する。
【００１５】
また、該ホームエージェント１０３１−１は、該キャッシュエージェント１０２１―１を除くその他全てのキャッシュエージェントそれぞれを宛先とする複数のスヌープ要求メッセージを生成し、スヌープ要求・アクセス応答送信バッファ１０６２に出力する。同時に、発行したスヌープ要求メッセージの数を、アクセス要求管理テーブル１０６４の応答カウンタ１０７２（図１３）に設定する。
【００１６】
なお、キャッシュエージェントの構成は、キャッシュエージェント１０２１−１の構成例を流用して、他のキャッシュエージェント１０２１−ｎを説明することとする。
【００１７】
スヌープ要求・アクセス応答送信バッファ１０６２に蓄積された複数のスヌープ要求メッセージは、それぞれ、ネットワーク１０１１を介して宛先のキャッシュエージェントのスヌープ要求受信バッファ１０５１に渡される。
【００１８】
スヌープ要求受信バッファ１０５１からスヌープ要求メッセージを受け取ったキャッシュ制御部１０５５は、データ一貫性処理を行ってスヌープ応答メッセージを生成し、アクセス要求・スヌープ応答送信バッファ１０５３に出力する。
【００１９】
アクセス要求・スヌープ応答送信バッファ１０５３に蓄積されたスヌープ応答メッセージは、ネットワーク１０１１を介して該ホームエージェント１０３１−１のアクセス要求・スヌープ応答受信バッファ１０６１に渡される。
【００２０】
該ホームエージェント１０３１−１は、アクセス要求・スヌープ応答受信バッファ１０６１からスヌープ応答メッセージを受け取り、アクセス要求管理テーブル１０６４の該当エントリの応答カウンタ１０７２（図１３）の値をデクリメントする。
【００２１】
そして、ホームエージェント１０３１−１は、複数のキャッシュエージェント１０２１−ｎからスヌープ応答を受け取り、発行したスヌープ要求に対するスヌープ応答を全て受け取ると、即ち応答カウンタをデクリメントした結果値が０になれば、アクセス要求を発行したキャッシュエージェント１０２１−１宛てにアクセス応答メッセージを生成し、スヌープ要求・アクセス応答送信バッファ１０６２に出力する。
【００２２】
スヌープ要求・アクセス応答送信バッファ１０６２に蓄積されたアクセス応答メッセージは、ネットワーク１０１１を介して宛先のキャッシュエージェント１０２１−１のアクセス応答受信バッファ１０５２に渡される。
【００２３】
キャッシュエージェント１０２１−１は、アクセス応答受信バッファ１０５２からアクセス応答メッセージを受け取りデータのアクセス処理を完了する。
【００２４】
このように、このデータ一貫性制御システムでは、各キャッシュエージェント１０２１−ｎが、それぞれ複数のアクセス要求を発行するため、システム内では同時に複数のデータ一貫性制御が平行して行われる。
【００２５】
そのため、各種メッセージが複数発生し、ネットワーク１０１１を介してキャッシュエージェント１０２１（１０２１−１から１０２１−ｎ）およびホームエージェント１０３１（１０３１−１から１０３１−ｍ）間でやり取りが行われる。
【００２６】
また、各ホームエージェント１０３１（１０３１−１から１０３１−ｍ）が、アクセス要求・スヌープ応答受信バッファ１０６１からアクセス要求メッセージを取り出し処理を行う場合、アクセス要求管理テーブル１０６４に空きのエントリが存在し、スヌープ要求メッセージをスヌープ要求・アクセス応答送信バッファ１０６２に出力できる必要がある。
【００２７】
また、各ホームエージェント１０３１（１０３１−１から１０３１−ｍ）が、スヌープ応答メッセージを取り出し処理を行う場合は、アクセス応答メッセージをスヌープ要求・アクセス応答送信バッファ１０６２に出力できる必要がある。
【００２８】
また、各キャッシュエージェント１０２１（１０２１−１から１０２１−ｎ）が、スヌープ要求受信バッファ１０５１からメッセージを取り出し処理を行う場合、スヌープ応答メッセージをアクセス要求・スヌープ応答送信バッファ１０５３に出力できる必要がある。
【００２９】
このように、データ一貫性制御システムでは、各メッセージの受信・処理・送信に依存があるため、デッドロックの発生が一つの問題となる。
【００３０】
該特許文献１に開示されている先行技術は、キャッシュエージェント１０２１−１のスヌープ要求受信バッファ１０５１およびホームエージェント１０３１−１のスヌープ要求・アクセス応答送信バッファ１０６２が溢れることがない様に、十分大きなサイズに設定することにより、デッドロックの発生を防いでいる。
【００３１】
このため、ネットワークに複数の仮想チャネルを設けずに済んでいる。
【００３２】
しかしながら、この方法では両バッファのサイズが非常に大きくなってしまうため、実現に問題が生じるケースがある。
【００３３】
具体的には例えば、両バッファをチップ内の回路として実現する場合、両バッファのサイズがチップのハードウェア量を増大させてしまう。
【００３４】
該特許文献１では、そのような場合には、該チップに外付けのメモリ装置を接続し、そのメモリ装置に退避領域を設けることにより、チップのハードウェア量が増大してしまうのを防いでいる。
【００３５】
しかしながら、この方法もチップに外付けのメモリ装置を接続することが困難な場合は対応できない。
【００３６】
一方、複数のキャッシュエージェント１０２１（１０２１−１から１０２１−ｎ）が、ほぼ同時期に同一のデータに対するアクセスを行った場合には、それらのアクセス間で競合が発生するケースが存在する。
【００３７】
該特許文献１に開示されている先行技術は、ネットワーク１０１１を一つのチャネルで構成して、ポイント・ツー・ポイントでメッセージの追い越しが発生するのを防いでいる。
【００３８】
これにより、メッセージの追い越しにより生じる競合状態がなくなり、データ一貫性制御を単純化することができている。
【００３９】
また、上述に示した特許文献１のマルチプロセッサシステムの他に、特許文献２には、一般的なマルチプロセッサシステムが記載されている。
【特許文献１】特開平１１−２１９３４３号公報
【特許文献２】特開２００３−１５０５７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００４０】
しかしながら、特許文献１及び２に記載されたものでは、データ一貫性制御を単純化することはできているが、デッドロックを防止するためにキャッシュエージェントに十分大きなサイズのバッファを必要とするという問題があった。
本発明は、上記問題点に鑑みてなされたものであり、データ一貫性制御を単純なものとしつつ、キャッシュエージェントにデッドロックを防止するための十分大きなサイズのバッファを持つ必要のないデータ一貫性制御システムおよびデータ一貫性制御方法を提供することを目的とする。
【課題を解決するための手段】
【００４１】
本発明にかかるデータ一貫性制御システムは、複数のキャッシュエージェントと、少なくとも１つのホームエージェントとが複数のネットワークで接続され、前記キャッシュエージェントと前記ホームエージェントとのデータの一貫性制御を行うデータ一貫性制御システムであって、前記複数のネットワークは、少なくともスヌープ応答を配送するネットワークと、スヌープリトライ応答を配送するネットワークと、を備え、前記ホームエージェントは、前記キャッシュエージェントからのアクセス要求を受けると、当該アクセス要求を行ったキャッシュエージェント以外の複数のキャッシュエージェントに対してスヌープ要求を発行するスヌープ要求発行手段を備え、前記キャッシュエージェントは、前記スヌープ要求を受け取ると、前記データの一貫性制御を行うと共に、前記ホームエージェントに対して前記スヌープ応答を発行するスヌープ応答発行手段と、前記ホームエージェントに対してスヌープ要求の再試行を求め、前記スヌープリトライ応答を発行するスヌープリトライ応答発行手段と、を更に備え、前記ホームエージェントは、前記スヌープリトライ応答を受けて、どのキャッシュエージェントから再試行を求められたかを管理する管理手段と、当該管理手段によって管理する情報により、該当するキャッシュエージェントに対して前記スヌープ要求を再発行するスヌープ要求再発行手段と、を更に備えることを特徴とする。
【００４２】
また本発明にかかるデータ一貫性制御システムは、前記キャッシュエージェントが、前記スヌープ要求を受けると共に、当該スヌープ要求を処理した場合にデッドロックが発生するかを検査するキャッシュ側デッドロック検査手段を更に備え、当該キャッシュ側デッドロック検査手段により前記デッドロックが発生する可能性があると判断した場合には、前記スヌープリトライ応答を発行するようにしても良い。
【００４３】
また本発明にかかるデータ一貫性制御システムは、前記ホームエージェントが、スヌープリトライ抑止手段を更に備え、前記スヌープ要求再発行手段が前記スヌープ要求を再発行することによりデータの一貫性がとれなくなる場合或いはネットワークの輻輳が発生すると判断した場合には、前記スヌープリトライ抑止手段が前記スヌープ要求の再発行処理を抑止するようにしても良い。
【００４４】
また本発明にかかるデータ一貫性制御システムは、前記ホームエージェントが、前記スヌープリトライ応答を受けて、スヌープ要求の再発行を行った場合に前記デッドロックが発生するかを検査するホーム側デッドロック検査手段を更に備え、当該ホーム側デッドロック検査手段により前記デッドロックが発生する可能性があると判断した場合には、前記管理手段に前記スヌープリトライ応答を記録し、一方、前記デッドロックが発生しないと判断した場合には、前記管理手段に前記スヌープリトライ応答を記録せず前記スヌープ要求を再発行するようにしても良い。
【発明の効果】
【００４５】
本発明によれば、データ一貫性制御を単純なものとしつつ、キャッシュエージェントにデッドロックを防止するための十分大きなサイズのバッファを持つ必要のない、データ一貫性制御システム及びデータ一貫性制御方法を実現できる。
【発明を実施するための最良の形態】
【００４６】
次に、本発明の実施の形態の構成について図面を参照して詳細に説明する。
（第１の実施の形態）
（１）第１の実施の形態によるデータ一貫性制御システム
（１−１）データ一貫性制御システムの構成
図1に示すように、データ一貫性制御システムは、複数（ｎ個）のキャッシュエージェント２１（２１−１から２１−ｎ：ｎは、１からｎまでの個数を表す番号を意味する。）と、複数（ｍ個）のホームエージェント３１（３１−１から３１−ｍ：ｍは、１からｍまでの個数を表す番号を意味する。）とが、ネットワーク１１と、リトライ応答ネットワーク１２とによって接続されている。
【００４７】
キャッシュエージェント２１（ここでは、図中の２１−１を例示として説明する。）は、データ一貫性制御を行うキャッシュ制御部５５と、メッセージの送受信バッファであるスヌープ要求受信バッファ５１と、アクセス応答受信バッファ５２と、アクセス要求・スヌープ応答送信バッファ５３と、スヌープリトライ応答送信バッファ５４とを有している。
【００４８】
各バッファのうち、スヌープリトライ応答送信バッファ５４のみが、リトライ応答ネットワーク１２に接続されており、他のバッファは、ネットワーク１１に接続されている。
【００４９】
更に、キャッシュ制御部５５は、もしスヌープ要求を受け付けて処理しスヌープ応答を発行したとするとデッドロックが発生する危険性があるかを判断する、スヌープデッドロック判定部５６を有している。
【００５０】
ここで、リトライ応答ネットワーク１２は、ネットワーク１１の仮想チャネルとして実現されても良い。
【００５１】
ホームエージェント３１（ここでは、図中の３１−１を例示として説明する。）は、データ一貫性制御を行うホーム制御部６５と、キャッシュエージェント２１が発行したアクセス要求を記録し処理中の状態を管理するアクセス要求管理テーブル６４と、メッセージの送受信バッファであるアクセス要求・スヌープ応答受信バッファ６１と、スヌープ要求・アクセス応答送信バッファ６２と、スヌープリトライ応答受信バッファ６３とを有している。
【００５２】
各バッファのうち、スヌープリトライ応答受信バッファ６３のみがリトライ応答ネットワーク１２に接続され、他のバッファはネットワーク１１に接続される。
【００５３】
また、図２に示すように、アクセス要求管理テーブル６４のエントリにはアクセス要求情報７１と応答カウンタ７２を格納している。
【００５４】
また、ホーム制御部６５（図１）は、リトライ応答管理テーブル６７と、スヌープ要求リトライ部６６とを有している。
【００５５】
リトライ応答管理テーブル６７（図１）のエントリはアクセス要求管理テーブル６４のエントリと１対１で対応し、またそのエントリには、図３に示すように、例えばキャッシュエージェント数分のビット８１からなるビットベクタを格納している。
（１−２）データ一貫性制御システムの動作
データ一貫性制御システムにおけるデータ一貫性制御は、キャッシュエージェント２１とホームエージェント３１との間で、ネットワーク１１およびリトライ応答ネットワーク１２を介して、メッセージをやり取りすることにより行われる。以降、本実施の形態の特徴となる動作を説明する。
【００５６】
キャッシュエージェント２１は、ホームエージェント３１のデータを新たにアクセスする場合、キャッシュ制御部５５が該ホームエージェント３１宛てのアクセス要求メッセージを生成し、アクセス要求・スヌープ応答送信バッファ５３にメッセージを出力する。
【００５７】
アクセス要求・スヌープ応答送信バッファ５３に蓄積されたアクセス要求メッセージは、ネットワーク１１を介して該ホームエージェント３１のアクセス要求・スヌープ応答受信バッファ６１に渡される。
【００５８】
該ホームエージェント３１は、アクセス要求・スヌープ応答受信バッファ６１からアクセス要求メッセージを受け取り、アクセス要求管理テーブル６４の該当するエントリのアクセス要求情報７１（図２）を設定する。
【００５９】
また、該キャッシュエージェント２１を除くその他のキャッシュエージェント２１−ｎのそれぞれを宛先とする複数のスヌープ要求メッセージを生成し、スヌープ要求・アクセス応答送信バッファ６２に出力する。同時に、発行したスヌープ要求メッセージの数をアクセス要求管理テーブル６４の応答カウンタ７２（図２）に設定する。
【００６０】
スヌープ要求・アクセス応答送信バッファ６２に蓄積された複数のスヌープ要求メッセージは、それぞれ、ネットワーク１１を介して宛先のキャッシュエージェント２１−ｎのスヌープ要求受信バッファ５１に渡される。
【００６１】
ここで、スヌープ要求受信バッファ５１からスヌープ要求メッセージを受け取ったキャッシュ制御部５５の動作を図４のフローチャートに示す。
【００６２】
図４のフローチャートを参照すると、まず、キャッシュ制御部５５がスヌープ要求メッセージを受信すると（ステップＳ０１）、スヌープデッドロック判定部５６（図１）は、デッドロックが発生する可能性があるか否かを検査する（ステップＳ０２）。
【００６３】
具体的には例えば、アクセス要求・スヌープ応答送信バッファ５３にスヌープ応答メッセージを出力できるだけの空きスペースがあるかどうかを検査する（ステップＳ０３）。ここで、空きが無い場合はデッドロックが発生する危険があると判断してステップＳ０４へ進む。一方、空きがある場合はデッドロックが発生する危険がないと判断してステップＳ０５へ進む。
【００６４】
ステップＳ０４でキャッシュ制御部５５は、データ一貫性処理を行ってスヌープ応答メッセージを生成し、アクセス要求・スヌープ応答送信バッファ５３に出力する。
【００６５】
一方ステップＳ０５でキャッシュ制御部５５は、データ一貫性処理を行わず、スヌープリトライ応答メッセージを生成し、スヌープリトライ応答送信バッファ５４に出力する。
【００６６】
ステップＳ０４において、アクセス要求・スヌープ応答送信バッファ５３に蓄積されたスヌープ応答メッセージは、ネットワーク１１を介して該ホームエージェント３１のアクセス要求・スヌープ応答受信バッファ６１に渡される。
【００６７】
一方、ステップＳ０５において、スヌープリトライ応答送信バッファ５４に蓄積されたスヌープリトライ応答メッセージは、リトライ応答ネットワーク１２を介して該ホームエージェント３１のスヌープリトライ応答受信バッファ６３に渡される。
【００６８】
該ホームエージェント３１は、アクセス要求・スヌープ応答受信バッファ６１からスヌープ応答メッセージを受け取り、アクセス要求管理テーブル６４の該当エントリの応答カウンタ７２（図２）の値をデクリメントする。
【００６９】
ここで、スヌープリトライ応答受信バッファ６３からスヌープリトライ応答メッセージを受け取った該ホームエージェント３１の動作を図５のフローチャートに示す。
【００７０】
図５を参照すると、該ホームエージェント３１は、スヌープリトライ応答受信バッファ６３からスヌープリトライ応答メッセージを受け取ると（ステップＳ１０）、アクセス要求管理テーブル６４の該当エントリの応答カウンタ７２（図２）の値をデクリメントし、リトライ応答管理テーブル６７（図１）の該当するエントリのビット８１（図３）に‘１’を設定する（ステップＳ１１）。
【００７１】
次に、該ホームエージェント３１のスヌープ要求リトライ部６６の動作について、図６のフローチャートを用いて説明する。
【００７２】
図６を参照すると、スヌープ要求リトライ部６６（図１）は、リトライ応答管理テーブル６７を検査し（ステップＳ２０）、‘１’が存在するエントリおよびそのビット８１の記録位置を調べる（ステップＳ２１）。
【００７３】
ここで、全ビット８１が‘０’の場合は、処理を終了する。
【００７４】
一方、ビット８１が‘１’に設定されているエントリが存在する場合は、ステップＳ２２へ移動し何れかのエントリを選択し、該エントリに対応するアクセス要求管理テーブル６４（図１）のエントリからアクセス要求情報７１（図２）を読み出し、該ビット８１に対応するキャッシュエージェント２１に対するスヌープ要求メッセージを生成し、スヌープ要求・アクセス応答送信バッファ６２に出力する（ステップＳ２２）。
【００７５】
また、リトライ応答管理テーブル６７の該ビット８１を‘０’に設定し（ステップＳ２３）、アクセス要求管理テーブル６４の該応答カウンタ７２（図２）に‘１’を足しこむ。
【００７６】
上記が該ホームエージェント３１のスヌープ要求リトライ部６６の動作である。
【００７７】
ホーム制御部６５は、複数のキャッシュエージェント２１（２１−１から２１−ｎを含む）からスヌープ応答メッセージを受け取り、発行したスヌープ要求に対するスヌープ応答を全て受け取ると、即ちスヌープ応答を受け取って、応答カウンタ７２（図２）をデクリメントした結果値が‘０’になり、且つ、リトライ応答管理テーブル６７の該当するエントリの全ビット８１が‘０’になると、アクセス要求を発行したキャッシュエージェント２１（すなわち、キャッシュエージェント２１−１である。）宛てのアクセス応答メッセージを生成し、スヌープ要求・アクセス応答送信バッファ６２に出力する。
【００７８】
スヌープ要求・アクセス応答送信バッファ６２に蓄積されたアクセス応答メッセージは、ネットワーク１１を介して宛先のキャッシュエージェント２１のアクセス応答受信バッファ５２に渡される。
【００７９】
該キャッシュエージェント２１は、アクセス応答受信バッファ５２からアクセス応答メッセージを受け取りデータのアクセス処理を完了する。
（１−３）データ一貫性制御システムの効果
本実施の形態によれば、アクセス要求・スヌープ要求・スヌープ応答・アクセス応答の４種類のメッセージは、全て一つのネットワーク１１を介して送られる。そのため、それらのメッセージについてはポイント・ツー・ポイントでのメッセージの到着順序を保障することができるので、データ一貫性制御を確実で、かつ単純に行うことができる。
【００８０】
またキャッシュエージェント２１はスヌープ要求に対してスヌープリトライ応答を発行し、そのスヌープリトライ応答はネットワーク１２を介して送られる。そのため、複数のキャッシュエージェント２１（２１−１から２１−ｎ）のスヌープ要求受信バッファ５１を溢れることがない様に十分大きなサイズにしなくても、デッドロックの発生を防ぐことができる。
（第２の実施の形態）
（２）第２の実施の形態によるデータ一貫性制御システム
（２−１）データ一貫性制御システムの構成
第1の実施の形態で示した例では、リトライ応答管理テーブル６７のエントリには、キャッシュエージェント数分のビット８１からなるビットベクタを格納している。
【００８１】
そのため、キャッシュエージェント２１の数ｎが大きくなると、リトライ応答管理テーブル６７のサイズも膨大なものとなってしまう。
【００８２】
そこで、リトライ応答管理テーブル６７のサイズが膨大なものとならないように改良した、第２の実施の形態のホーム制御部１６５の構成を図７に示す。
【００８３】
図７に示すホーム制御部１６５は、第1の実施形態に含まれるスヌープ要求リトライ部１６６と、リトライ応答管理テーブル１６７とに加えて、リトライ抑止部１６８と、リトライデッドロック判定部１６９とを更に有する。
【００８４】
リトライ抑止部１６８は、スヌープ要求リトライ部１６６が、スヌープ要求メッセージを生成することを抑止する部分（図示せず）を有する。
【００８５】
リトライデッドロック判定部１６９（図７）は、もしホーム制御部１６５がリトライ応答メッセージを受信して、リトライ応答管理テーブル１６７にリトライ応答を記録せずにスヌープ要求メッセージを再発行したとするとデッドロックが発生する危険性があるか否かを判断する。
【００８６】
図８には、リトライ応答管理テーブル１６７のエントリの構成例を示す。
【００８７】
まず、複数のキャッシュエージェント２１（２１−１から２１−ｎ）を備えたキャッシュエージェントグループを定義する。
【００８８】
具体的には例えば、１０２４個のキャッシュエージェント２１を備えたシステムである場合に、１２８個のキャッシュエージェント２１からなる８個のキャッシュエージェントグループを構成する。
【００８９】
リトライ応答管理テーブル１６７（図７）のエントリには、キャッシュエージェントグループ数分のビット１８１からなるビットベクタを格納し（図８）、あるビット１８１が‘１’である場合、対応するキャッシュエージェントグループ内に含まれる少なくとも一つのキャッシュエージェント２１からスヌープリトライ応答を受け取ったことを示している。
【００９０】
この第２の実施の形態では、以上のように構成されており、次のように動作する。
（２−２）データ一貫性制御システムの動作
図９のフローチャートには、ホーム制御部１６５が、スヌープリトライ応答を受け取った場合の動作を示す。
【００９１】
図９のフローチャートを参照すると、まず、ホーム制御部６５は、スヌープリトライ応答を受けると（ステップＳ３０）、リトライデッドロック判定部１６９（図７）でデッドロックが発生する危険があるかを検査する（ステップＳ３１）。
【００９２】
具体的には例えば、スヌープ要求・アクセス応答送信バッファ６２（図１）に、スヌープ要求メッセージを出力できるだけの空きスペースがあるかどうかを検査する（ステップＳ３２）。
【００９３】
ここで、空きが無い場合にはデッドロックが発生する危険があると判断してステップＳ３４へ進み、これに対し空きがある場合にはデッドロックが発生する危険がないと判断してステップＳ３３へ進む。
【００９４】
ステップＳ３４では、アクセス要求管理テーブル６４の該当エントリの応答カウンタ７２（図２）の値をデクリメントし、リトライ応答管理テーブル１６７（図７）の該当するエントリの該当するビット１８１に‘１’を設定する。
【００９５】
一方、ステップＳ３３では、アクセス要求管理テーブル６４（図１）の該当エントリからアクセス要求情報７１を読み出し、該キャッシュエージェント２１宛のスヌープ要求メッセージを生成し、スヌープ要求・アクセス応答送信バッファ６２に出力する。
【００９６】
これにより、リトライ応答管理テーブル１６７（図７）にリトライ応答を記録してスヌープ要求リトライ部１６６にスヌープ要求メッセージを生成される場合と比べ、アクセス要求管理テーブル６４へのアクセス回数を減らすことができるので、性能を向上させることができる。
【００９７】
また、後述するが、スヌープ要求リトライ部１６６（図７）は、該当するキャッシュエージェントグループに含まれる複数のキャッシュエージェント２１に対してスヌープ要求メッセージを生成している。ステップＳ３３では生成するスヌープ要求メッセージを一つに限定しているので、生成するスヌープ要求メッセージ数を抑えることができるという効果も有する。
【００９８】
次に、スヌープ要求リトライ部１６６（図７）の動作を、図１０のフローチャートに示す。
【００９９】
図１０のフローチャートを参照すると、スヌープ要求リトライ部１６６（図７）は、リトライ応答管理テーブル１６７（図７）を検査し（ステップＳ４０）、‘１’が存在するエントリおよびそのビット１８１の位置を調べる（ステップＳ４１）。
【０１００】
全ビット１８１が‘０’の場合には、ステップＳ４６へ進み、処理を終了する。
【０１０１】
一方、ビット１８１が‘１’に設定されているエントリが存在する場合には、ステップＳ４２へ進み、何れかのエントリを選択し、次にリトライ抑止部１６８（図７）によりスヌープ要求の再発行を抑止するか否かを検査する（ステップＳ４２）。
【０１０２】
具体的には例えば、アクセス要求管理テーブル６４（図１）の該当するエントリの応答カウンタ７２の値が‘０’であるかどうかを検査し、‘０’でなければ再発行を抑止する（ステップＳ４３）。
【０１０３】
また別の例としては、応答カウンタ７２（図２）の値が、スヌープ要求をキャッシュエージェントグループに対して再発行し、その発行したスヌープ要求メッセージ数を応答カウンタ７２に足しこんだ場合にはオーバーフローするかどうかを検査し、オーバーフローする場合に発行を抑止する。そして、このように発行が抑止された場合には、処理を終了する（ステップＳ４３）。
【０１０４】
これらの抑止に対し、発行が抑止されなかった場合には、スヌープ要求リトライ部１６６（図７）によりスヌープ要求メッセージを再発行する（ステップＳ４４）。
【０１０５】
この例では、アクセス要求管理テーブル６４（図１）の該当するエントリのアクセス要求情報７１を読み出し、該ビット１８１に対応するキャッシュエージェントグループ内の複数のキャッシュエージェント２１に対して、それぞれスヌープ要求メッセージを生成し、スヌープ要求・アクセス応答送信バッファ６２に出力する。
【０１０６】
また同時に、該ビット１８１を‘０’に設定し、該応答カウンタ７２（図２）に発行したスヌープ要求メッセージ数を足し込む。
【０１０７】
これにより、リトライ応答管理テーブル１６７のサイズを抑えることができると共に、応答カウンタ７２のオーバーフローが発生することによる動作異常を防ぐことができる。
【０１０８】
また、以上のように構成し動作させることにより、第１の実施の形態と同様に、アクセス要求・スヌープ要求・スヌープ応答・アクセス応答の４種類のメッセージについては、ポイント・ツー・ポイントでのメッセージの追い越しが発生せず、データ一貫性制御を単純にすることができる。
【０１０９】
また、キャッシュエージェント２１のスヌープ要求受信バッファ５１を溢れることがない様に十分大きなサイズにしなくても、デッドロックの発生を防ぐことができる。
（第３の実施の形態）
（３）第３の実施の形態によるデータ一貫性制御システム
第２の実施の形態のリトライ抑止部１６８では、全てのスヌープ応答あるいはスヌープリトライ応答を刈り取るまでスヌープ要求の再発行を抑止する、あるいはキャッシュエージェントグループに含まれる複数のキャッシュエージェント２１から複数のスヌープリトライ応答が合った場合に、何度も該複数のキャッシュエージェント２１に対してスヌープ要求メッセージを再発行することになり、ネットワーク１１が輻輳し性能が劣化するという問題が発生し得る。
【０１１０】
そこで、第３の実施の形態は、この問題を解決する方法を示すものである。
（３−１）データ一貫性制御システムの構成
第２の実施の形態の変形例として、リトライ応答管理テーブル１６７を図１１に示すように構成する。ここでは、キャッシュエージェントグループ数分のビット２８１とグループ応答カウンタ２８２で構成することとする。
【０１１１】
ホーム制御部１６５（図７）が、スヌープ要求メッセージを送信する場合、該当するエントリの各グループ応答カウンタ２８２（図１１）のそれぞれに、そのキャッシュエージェントグループに含まれる複数のキャッシュエージェント２１に対して何個のスヌープ要求メッセージを発行したかどうかを記録する。
【０１１２】
ホーム制御部１６５（図７）がスヌープ応答メッセージを受信した場合には、該当するエントリの該当するグループ応答カウンタ２８２（図１１）の値をデクリメントする。
【０１１３】
また、スヌープリトライ応答メッセージを受信してリトライ応答管理テーブル１６７（図７）に記録した場合にも、グループ応答カウンタ２８２（図１１）の値をデクリメントする。
【０１１４】
また、リトライ抑止部１６８（図７）は、グループ応答カウンタ２８２（図１１）の値が‘０’で無い場合には、リトライ応答を抑止する。
【０１１５】
これにより、キャッシュエージェントグループ内の全てのスヌープ応答あるいはスヌープリトライ応答を刈り取ることができればスヌープ要求を再発行可能になるため、全てのスヌープ応答あるいはスヌープリトライ応答を刈り取るまで待つ必要がなくなる。
【０１１６】
また、キャッシュエージェントグループに含まれる複数のキャッシュエージェント２１から複数のスヌープリトライ応答が合った場合にも、何度も該複数のキャッシュエージェント２１に対してスヌープ要求メッセージを再発行することがなくなり、ネットワーク１１が輻輳するのを防ぐことができる。
【０１１７】
また、以上のように構成し動作させることにより、第１の実施の形態と同様に、アクセス要求・スヌープ要求・スヌープ応答・アクセス応答の４種類のメッセージについては、ポイント・ツー・ポイントでのメッセージの追い越しが発生せず、データ一貫性制御を単純にすることができる。
【０１１８】
また、キャッシュエージェント２１のスヌープ要求受信バッファ５１を溢れることがない様に十分大きなサイズにしなくても、デッドロックの発生を防ぐことができる。
【産業上の利用可能性】
【０１１９】
本発明は、データの一貫性制御が必要なシステムに適用できる。
【図面の簡単な説明】
【０１２０】
【図１】本発明における第１の実施の形態によるデータ一貫性制御システムの構成を示す図である。
【図２】本発明における第１の実施の形態によるアクセス要求管理テーブルのエントリ構成を示す図である。
【図３】本発明における第１の実施の形態によるリトライ応答管理部のエントリ構成を示す図である。
【図４】本発明における第１の実施の形態によるキャッシュエージェントの動作を示す図である。
【図５】本発明における第１の実施の形態によるホームエージェントのスヌープリトライ応答受信動作を示す図である。
【図６】本発明における第１の実施の形態によるホームエージェントのスヌープ要求再発行動作を示す図である。
【図７】本発明における第２の実施の形態によるホーム制御部の構成を示す図である。
【図８】本発明における第２の実施の形態によるリトライ応答管理部のエントリ構成を示す図である。
【図９】本発明における第２の実施の形態によるホームエージェントのスヌープリトライ応答受信動作を示す図である。
【図１０】本発明における第２の実施の形態によるホームエージェントのスヌープ要求再発行動作を示す図である。
【図１１】本発明における第３の実施の形態によるリトライ応答管理部のエントリ構成を示す図である。
【図１２】従来のデータ一貫性制御システムの構成を示す図である。
【図１３】従来のデータ一貫性制御システムにおけるアクセス要求管理テーブルのエントリ構成を示す図である。
【符号の説明】
【０１２１】
１１  ネットワーク
１２  リトライ応答ネットワーク
２１、２１−１、２１−２、２１−ｎ  キャッシュエージェント
３１、３１−１、３１−２、３１−ｍ  ホームエージェント
５１  スヌープ要求受信バッファ
５２  アクセス応答受信バッファ
５３  アクセス要求・スヌープ応答送信バッファ
５４  スヌープリトライ応答送信バッファ
５５  キャッシュ制御部
５６  スヌープデッドロック判定部
６１  アクセス要求・スヌープ応答受信バッファ
６２  スヌープ要求・アクセス応答送信バッファ
６３  スヌープリトライ応答受信バッファ
６４  アクセス要求管理テーブル
６５  ホーム制御部
６６  スヌープ要求リトライ部
６７  リトライ応答管理テーブル
７１  アクセス要求情報
７２  応答カウンタ
８１  ビット
１６５  ホーム制御部
１６６  スヌープ要求リトライ部
１６７  リトライ応答管理テーブル
１６８  リトライ抑止部
１６９  リトライデッドロック判定部
１８１  ビット
２８１  ビット
２８２  グループ応答カウンタ
１０１１  ネットワーク
１０２１、１０２１−１、１０２１−２、１０２１−ｎ  キャッシュエージェント
１０３１、１０３１−１、１０３１−２、１０３１−ｍ  ホームエージェント
１０５１  スヌープ要求受信バッファ
１０５２  アクセス応答受信バッファ
１０５３  アクセス要求・スヌープ応答送信バッファ
１０５５  キャッシュ制御部
１０６１  アクセス要求・スヌープ応答送信バッファ
１０６２  スヌープ要求・アクセス応答送信バッファ
１０６４  アクセス要求管理テーブル
１０６５  ホーム制御部
１０７１  アクセス要求情報
１０７２  応答カウンタ
【図１】
2008197716.tif 000003
【図２】
2008197716.tif 000004
【図３】
2008197716.tif 000005
【図４】
2008197716.tif 000006
【図５】
2008197716.tif 000007
【図６】
2008197716.tif 000008
【図７】
2008197716.tif 000009
【図８】
2008197716.tif 000010
【図９】
2008197716.tif 000011
【図１０】
2008197716.tif 000012
【図１１】
2008197716.tif 000013
【図１２】
2008197716.tif 000014
【図１３】
2008197716.tif 000015