(57)【要約】【課題】【解決手段】  コンピュータシステム内でロックおよびロック解除の動作を制御するための方法および装置が提供されている。ホームクラスタは、ホームロック管理部を備える。ホームロック管理部は、ホームクラスタと複数のリモートクラスタのための主ロック管理部であり、複数のリモートクラスタは、リモートキャッシュ一貫性制御部と複数のリモートプロセッサとを備える。ホームロック管理部からロックおよびロック解除コマンドが、ホームキャッシュ一貫性制御部によってリモートキャッシュ一貫性制御部に送信され、リモートプロセッサに転送される。
2006505868.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムであって、
複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む複数のホームノードを備えるホームクラスタであって、前記複数のホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続されており、前記複数のホームノードの内の１つは、ロックコマンドを前記複数のホームプロセッサおよび前記ホームキャッシュ一貫性制御部にブロードキャストするよう構成されたホームロック管理部を備える、ホームクラスタと、
第１のリモートキャッシュ一貫性制御部と第１の複数のリモートプロセッサとを備える第１のリモートクラスタであって、前記第１のリモートキャッシュ一貫性制御部および前記第１の複数のリモートプロセッサは、第２のポイントツーポイント・アーキテクチャで相互接続されており、前記第１のリモートキャッシュ一貫性制御部は、前記ホームキャッシュ一貫性制御部を介して前記ロックコマンドを受信すると共に、前記ロックコマンドを前記第１の複数のリモートプロセッサに転送するよう構成されている、第１のリモートクラスタと、を備える、コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムであって、前記複数のホームノードの各々は、ロック管理部の位置を示す構成レジスタへのアクセス権を有する、コンピュータシステム。
【請求項３】
請求項１に記載のコンピュータシステムであって、前記第１の複数のリモートプロセッサの各々は、第１のリモートロック管理部の位置として前記第１のリモートキャッシュ一貫性制御部の位置を示す構成レジスタへのアクセス権を有する、コンピュータシステム。
【請求項４】
請求項１に記載のコンピュータシステムであって、前記ホームキャッシュ一貫性制御部は、ホームロック管理部の位置と第１のリモートキャッシュ一貫性制御部の位置とを含むホームホルス構成レジスタへのアクセス権を有する、コンピュータシステム。
【請求項５】
請求項１に記載のコンピュータシステムであって、前記第１のリモートキャッシュ一貫性制御部は、ホームロック管理部の位置を含む第１のリモートホルス構成レジスタへのアクセス権を有する、コンピュータシステム。
【請求項６】
コンピュータシステムであって、
複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む複数のホームノードを備えるホームクラスタであって、前記複数のホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続されており、前記複数のホームノードの内の１つは、ロックコマンドを前記複数のホームノードにブロードキャストするよう構成されたホームロック管理部を備え、各ホームノードは、前記ホームロック管理部の位置をホームロック要求の宛先として指定するホーム構成レジスタを備える、ホームクラスタと、
第１のリモートキャッシュ一貫性制御部と第１の複数のリモートプロセッサとを備える第１のリモートクラスタであって、前記第１のリモートキャッシュ一貫性制御部および前記第１の複数のリモートプロセッサは、第２のポイントツーポイント・アーキテクチャで相互接続されており、前記第１のリモートキャッシュ一貫性制御部は、前記ホームキャッシュ一貫性制御部と相互接続されており、前記第１の複数のリモートプロセッサの各々は、前記第１のリモートキャッシュ一貫性制御部の位置を第１のリモートロック要求の宛先として指定する第１のリモート構成レジスタを備える、第１のリモートクラスタと、を備える、コンピュータシステム。
【請求項７】
請求項６に記載のコンピュータシステムであって、前記第１のリモートキャッシュ一貫性制御部は、前記ホームキャッシュ一貫性制御部を第１のリモートロック要求の宛先として指定する第１のリモートホルス構成レジスタへのアクセス権を有する、コンピュータシステム。
【請求項８】
請求項６に記載のコンピュータシステムであって、前記ホームキャッシュ一貫性制御部は、前記第１のリモートキャッシュ一貫性制御部を前記ホームロック管理部から受信されたロックコマンドの宛先として指定するホームホルス構成レジスタへのアクセス権を有する、コンピュータシステム。
【請求項９】
コンピュータシステム内でロックコマンドを制御する方法であって、
ホームクラスタ内の複数のホームノードの内の要求ホームノードからロック要求を受信する工程であって、前記複数のホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む、工程と、
前記ロック要求に応答してロックコマンドをすべてのホームノードにブロードキャストする工程と、
前記ロックコマンドを前記ホームキャッシュ一貫性制御部から第１のリモートクラスタの第１のリモートキャッシュ一貫性制御部に送信する工程であって、前記第１のリモートクラスタは、前記第１のリモートキャッシュ一貫性制御部と第２のポイントツーポイント・アーキテクチャで相互接続された複数の第１のリモートプロセッサを含む、工程と、
前記ロックコマンドを前記複数の第１のリモートプロセッサの各々に転送する工程と、
第１のロック完了応答を第１のリモートプロセッサの各々から前記第１のリモートキャッシュ一貫性制御部に送信する工程であって、前記第１のロック完了応答は、前記複数の第１のリモートプロセッサの１つが前記ロックコマンドを受け付けたことを通知する、工程と、
第１のリモートクラスタロック完了応答を前記第１のリモートキャッシュ一貫性制御部から前記ホームキャッシュ一貫性制御部に送信する工程であって、前記第１のリモートクラスタロック完了応答は、前記複数の第１のリモートプロセッサの各々が前記ロックコマンドを受け付けたことを通知する、工程と、
ホームロック完了応答を各ホームプロセッサからホームロック管理部に送信する工程であって、前記ホームロック完了応答は、前記ロックコマンドを受け付けたことを通知する、工程と、
前記第１のリモートクラスタロック完了応答を前記ホームキャッシュ一貫性制御部から前記ホームロック管理部に中継する工程と、
前記ホームロック管理部が、前記ホームロック完了応答と前記第１のリモートクラスタロック完了応答とを受信した後に、システムロック完了応答を前記要求ホームノードに送信する工程と、を備える、方法。
【請求項１０】
コンピュータ読み取り可能な記憶媒体に記憶されたコンピュータプログラムであって、
ロック要求をホームクラスタ内の複数のホームノードの内の要求ホームノードからホームロック管理部に送信する機能であって、前記複数のホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む、機能と、
前記ロック要求に応答してロックコマンドを前記ホームロック管理部からすべてのホームノードにブロードキャストする機能と、
前記ロックコマンドを前記ホームキャッシュ一貫性制御部から第１のリモートクラスタの第１のリモートキャッシュ一貫性制御部に送信する機能であって、前記第１のリモートクラスタは、前記第１のリモートキャッシュ一貫性制御部と第２のポイントツーポイント・アーキテクチャで相互接続された複数の第１のリモートプロセッサを含む、機能と、
前記ロックコマンドを前記複数の第１のリモートプロセッサの各々に転送する機能と、
第１のロック完了応答を第１のリモートプロセッサの各々から前記第１のリモートキャッシュ一貫性制御部に送信する機能であって、前記第１のロック完了応答は、前記複数の第１のリモートプロセッサの１つが前記ロックコマンドを受け付けたことを通知する、機能と、
第１のリモートクラスタロック完了応答を前記第１のリモートキャッシュ一貫性制御部から前記ホームキャッシュ一貫性制御部に送信する機能であって、前記第１のリモートクラスタロック完了応答は、前記複数の第１のリモートプロセッサの各々が前記ロックコマンドを受け付けたことを通知する、機能と、
ホームロック完了応答を各ホームプロセッサから前記ホームロック管理部に送信する機能であって、前記ホームロック完了応答は、前記ロックコマンドを受け付けたことを通知する、機能と、
前記第１のリモートクラスタロック完了応答を前記ホームキャッシュ一貫性制御部から前記ホームロック管理部に中継する機能と、
前記ホームロック管理部が、前記ホームロック完了応答と前記第１のリモートクラスタロック完了応答とを受信した後に、システムロック完了応答を前記ホームロック管理部から前記要求ホームノードに送信する機能と、をコンピュータに実行させる命令を備える、コンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムであって、さらに、
ロック解除要求を前記要求ホームノードから受信する機能と、
前記ロック解除要求に応答してロック解除コマンドをすべてのホームノードにブロードキャストする機能と、
前記ロック解除コマンドを前記第１のリモートキャッシュ一貫性制御部に送信する機能と、
前記ロック解除コマンドを前記複数の第１のリモートプロセッサの各々に転送する機能と、
第１のロック解除完了応答を第１のリモートプロセッサの各々から前記第１のリモートキャッシュ一貫性制御部に送信する機能であって、前記第１のロック完了応答は、前記複数の第１のリモートプロセッサの１つが前記ロック解除コマンドを受け付けたことを通知する、機能と、
第１のリモートクラスタロック解除完了応答を前記第１のリモートキャッシュ一貫性制御部から前記ホームキャッシュ一貫性制御部に送信する機能であって、前記第１のリモートクラスタロック解除完了応答は、前記複数の第１のリモートプロセッサの各々が前記ロック解除コマンドを受け付けたことを通知する、機能と、
ホームロック解除完了応答を各ホームプロセッサから前記ホームロック管理部に送信する機能であって、前記ホームロック解除完了応答は、前記ロック解除コマンドを受け付けたことを通知する、機能と、
前記第１のリモートクラスタロック解除完了応答を前記ホームキャッシュ一貫性制御部から前記ホームロック管理部に中継する機能と、
前記ホームロック管理部が、前記ホームロック解除完了応答と前記第１のリモートクラスタロック解除完了応答とを受信した後に、システムロック解除完了応答を前記要求ホームノードに送信する機能と、をコンピュータに実行させる命令を備える、コンピュータプログラム。
【請求項１２】
コンピュータシステムであって、
第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを備えるホームクラスタであって、前記複数のホームプロセッサの内の１つは、ホームロック管理部を備える、ホームクラスタと、
第２のポイントツーポイント・アーキテクチャで相互接続された第１の複数のリモートプロセッサと第１のリモートキャッシュ一貫性制御部とを備える第１のリモートクラスタであって、前記第１のリモートキャッシュ一貫性制御部は、前記ホームキャッシュ一貫性制御部と相互接続されており、前記第１のリモートキャッシュ一貫性制御部は、前記ホームキャッシュ一貫性制御部を介して前記ホームロック管理部と信号をやり取りすることにより、第１のリモートクラスタロック管理部として機能するよう構成されている、第１のリモートクラスタと、
第３のポイントツーポイント・アーキテクチャで相互接続された第２の複数のリモートプロセッサと第２のリモートキャッシュ一貫性制御部とを備える第２のリモートクラスタであって、前記第２のリモートキャッシュ一貫性制御部は、前記ホームキャッシュ一貫性制御部と相互接続されており、前記第２のリモートキャッシュ一貫性制御部は、前記ホームキャッシュ一貫性制御部を介して前記ホームロック管理部と信号をやり取りすることにより、第２のリモートクラスタロック管理部として機能するよう構成されている、第２のリモートクラスタと、を備える、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、マルチプロセッサ・システムにおけるデータアクセスに関する。特に、本発明は、マルチクラスタ・アーキテクチャを有するマルチプロセッサ・システムにおいて、キャッシュ一貫性を維持するためロック機構を改善する技術を提供する。
【背景技術】
【０００２】
バス・アーキテクチャを用いた従来のコンピュータシステムでは、性能が制限されることから、１つのメモリ空間を有するシステム内の複数のプロセッサを接続するためのポイントツーポイント・アーキテクチャが開発された。一例では、個々のプロセッサが、複数のポイントツーポイント・リンクを介して互いに直接的に接続されて、プロセッサのクラスタを形成することができる。さらに、プロセッサのクラスタが、複数接続されてよい。ポイントツーポイント・リンクは、コプロセッシングおよびマルチプロセッシング機能のための帯域幅を大幅に増大させる。
【０００３】
しかしながら、ポイントツーポイント・アーキテクチャを用いて、１つのメモリ空間を共有するマルチクラスタ・システム内の複数のプロセッサを接続すると、様々な問題が生じる。これらの問題のいくつかは、複数のノードが、共通のタスクに従事する、および／または、共通のデータワードにアクセスしようとする際の調整処理に関連して起きる。しかしながら、ポイントツーポイント・アーキテクチャのためのロック機構には限界がある。したがって、ポイントツーポイント・リンクを用いて接続された複数のプロセッサの複数のクラスタを有するシステムにおけるキャッシュ一貫性のためのロック機構を改善する技術を提供することが望まれている。
【発明の開示】
【０００４】
本発明によると、マルチプロセッサ・マルチクラスタ・システムにおけるロック機構の効率を向上させるための方法および装置が提供される。本発明の一部の実施形態では、ホームクラスタは、複数のホームノードを備える。ホームノードは、例えば、ホームキャッシュ一貫性制御部、１または複数のホームプロセッサ、ホームメモリ制御部、ホームＩ／Ｏブリッジ、およびホームロック管理部を含んでよい。複数のプロセッサを備える各リモートクラスタのリモートキャッシュ一貫性制御部は、ホームロック管理部の制御下で、リモートクラスタのためのローカルロック管理部として機能する。しかしながら、ホームロック管理部は、ホームクラスタの外部のノードを意識してもよいし意識しなくてもよい。コマンドおよび応答は、キャッシュ一貫性制御部を介してクラスタ間でやり取りされる。
【０００５】
様々な実施形態によると、コンピュータシステムが提供されている。そのコンピュータシステムは、複数のホームノードを備えたホームクラスタを備える。なお、ホームノードは、複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む。複数のホームノードの１つは、ロック要求に応じてロックコマンドをすべてのホームノードにブロードキャストするよう構成されたホームロック管理部を備える。ホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続されている。そのコンピュータシステムは、さらに、第１のリモートキャッシュ一貫性制御部と第１の複数のリモートプロセッサとを備えた第１のリモートクラスタを備える。第１のリモートキャッシュ一貫性制御部と第１の複数のリモートプロセッサは、第２のポイントツーポイント・アーキテクチャで相互接続されている。第１のリモートキャッシュ一貫性制御部は、ホ―ムキャッシュ一貫性制御部を介してロックコマンドを受信し、ロックコマンドを第１の複数のリモートプロセッサに転送するよう構成されている。
【０００６】
他の実施形態によると、ホームクラスタを備える別のコンピュータシステムが提供されている。そのホームクラスタは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームノードを備える。なお、ホームノードは、複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む。ホームノードの１つは、ホームロック管理部を備える。各ホームノードは、ホームロック管理部の位置をホームロック要求の宛先として指定するホーム構成レジスタを備える。コンピュータシステムは、さらに、第１のリモートキャッシュ一貫性制御部と第１の複数のリモートプロセッサとを備えた第１のリモートクラスタを有する。第１のリモートキャッシュ一貫性制御部および第１の複数のリモートプロセッサは、第２のポイントツーポイント・アーキテクチャで相互接続されており、第１のリモートキャッシュ一貫性制御部は、ホームキャッシュ一貫性制御部と相互接続されており、第１の複数のリモートプロセッサの各々は、第１のリモートキャッシュ一貫性制御部の位置を第１のリモートロック要求の宛先として指定する第１のリモート構成レジスタを備えている。
【０００７】
さらに他の実施形態によると、コンピュータシステムが提供されている。そのコンピュータシステムは、複数のホームノードを有するホームクラスタを備える。なお、ホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む。ホームノードの１つは、ホームロック管理部を備える。そのコンピュータシステムは、さらに、第１のリモートキャッシュ一貫性制御部と第１の複数のリモートプロセッサとを備えた第１のリモートクラスタを有する。第１のリモートキャッシュ一貫性制御部と第１の複数のリモートプロセッサは、第２のポイントツーポイント・アーキテクチャで相互接続されている。第１のリモートキャッシュ一貫性制御部は、ホ―ムキャッシュ一貫性制御部と相互接続されている。第１のリモートキャッシュ一貫性制御部は、第１のリモートクラスタのための第１のリモートロック管理部として機能するよう構成されている。
【０００８】
本発明の一部の態様によると、コンピュータシステム内でロックコマンドを制御する方法が提供されている。その方法は、ホームクラスタ内の複数のホームノードの内の要求ホームノードからロック要求を受信する工程であって、複数のホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む、工程と、ロック要求に応答してロックコマンドをすべてのホームノードにブロードキャストする工程と、ロックコマンドをホームキャッシュ一貫性制御部から第１のリモートクラスタの第１のリモートキャッシュ一貫性制御部に送信する工程であって、第１のリモートクラスタは、第１のリモートキャッシュ一貫性制御部と第２のポイントツーポイント・アーキテクチャで相互接続された複数の第１のリモートプロセッサを含む、工程と、を備える。 
【０００９】
本発明の他の態様によると、コンピュータシステム内でロックコマンドを制御する方法が提供されている。その方法は、ホームクラスタ内の複数のホームノードの内の要求ホームノードからロック要求を受信する工程であって、複数のホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む、工程と、ロック要求に応答してロックコマンドをすべてのホームノードにブロードキャストする工程と、ロックコマンドをホームキャッシュ一貫性制御部から第１のリモートクラスタの第１のリモートキャッシュ一貫性制御部に送信する工程であって、第１のリモートクラスタは、第１のリモートキャッシュ一貫性制御部と第２のポイントツーポイント・アーキテクチャで相互接続された複数の第１のリモートプロセッサを含む、工程と、ロックコマンドを複数の第１のリモートプロセッサの各々に転送する工程と、第１のロック完了応答を第１のリモートプロセッサの各々から第１のリモートキャッシュ一貫性制御部に送信する工程であって、第１のロック完了応答は、複数の第１のリモートプロセッサの１つがロックコマンドを受け付けたことを通知する、工程と、第１のリモートクラスタロック完了応答を第１のリモートキャッシュ一貫性制御部からホームキャッシュ一貫性制御部に送信する工程であって、第１のリモートクラスタロック完了応答は、複数の第１のリモートプロセッサの各々がロックコマンドを受け付けたことを通知する、工程と、ホームロック完了応答を各ホームプロセッサからホームロック管理部に送信する工程であって、ホームロック完了応答は、ロックコマンドを受け付けたことを通知する、工程と、第１のリモートクラスタロック完了応答をホームキャッシュ一貫性制御部からホームロック管理部に中継する工程と、ホームロック管理部が、ホームロック完了応答と第１のリモートクラスタロック完了応答とを受信した後に、システムロック完了応答を要求ホームノードに送信する工程と、を備える。
【００１０】
本発明のかかる態様の一部は、さらに、ロック解除要求を要求ホームノードから受信する工程と、ロック解除要求に応答してロック解除コマンドをすべてのホームノードにブロードキャストする工程と、ロック解除コマンドを第１のリモートキャッシュ一貫性制御部に送信する工程と、ロック解除コマンドを複数の第１のリモートプロセッサの各々に転送する工程と、第１のロック解除完了応答を第１のリモートプロセッサの各々から第１のリモートキャッシュ一貫性制御部に送信する工程であって、第１のロック解除完了応答は、複数の第１のリモートプロセッサの１つがロック解除コマンドを受け付けたことを通知する、工程と、第１のリモートクラスタロック解除完了応答を第１のリモートキャッシュ一貫性制御部からホームキャッシュ一貫性制御部に送信する工程であって、第１のリモートクラスタロック解除完了応答は、複数の第１のリモートプロセッサの各々がロック解除コマンドを受け付けたことを通知する、工程と、ホームロック解除完了応答を各ホームプロセッサからホームロック管理部に送信する工程であって、ホームロック解除完了応答は、ロック解除コマンドを受け付けたことを通知する、工程と、第１のリモートクラスタロック解除完了応答をホームキャッシュ一貫性制御部からホームロック管理部に中継する工程と、ホームロック管理部が、ホームロック解除完了応答と第１のリモートクラスタロック解除完了応答とを受信した後に、システムロック解除完了応答を要求ホームノードに送信する工程と、を備える。
【００１１】
本発明の一部の実施形態は、コンピュータ読み取り可能な記憶媒体に記憶されたコンピュータプログラムを提供する。そのコンピュータプログラムは、ロック要求をホームクラスタ内の複数のホームノードの内の要求ホームノードからホームロック管理部に送信する機能であって、複数のホームノードは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを含む、機能と、ロック要求に応答してロックコマンドをホームロック管理部からすべてのホームノードにブロードキャストする機能と、ロックコマンドをホームキャッシュ一貫性制御部から第１のリモートクラスタの第１のリモートキャッシュ一貫性制御部に送信する機能であって、第１のリモートクラスタは、第１のリモートキャッシュ一貫性制御部と第２のポイントツーポイント・アーキテクチャで相互接続された複数の第１のリモートプロセッサを含む、機能と、ロックコマンドを複数の第１のリモートプロセッサの各々に転送する機能と、第１のロック完了応答を第１のリモートプロセッサの各々から第１のリモートキャッシュ一貫性制御部に送信する機能であって、第１のロック完了応答は、複数の第１のリモートプロセッサの１つがロックコマンドを受け付けたことを通知する、機能と、第１のリモートクラスタロック完了応答を第１のリモートキャッシュ一貫性制御部からホームキャッシュ一貫性制御部に送信する機能であって、第１のリモートクラスタロック完了応答は、複数の第１のリモートプロセッサの各々がロックコマンドを受け付けたことを通知する、機能と、ホームロック完了応答を各ホームプロセッサからホームロック管理部に送信する機能であって、ホームロック完了応答は、ロックコマンドを受け付けたことを通知する、機能と、第１のリモートクラスタロック完了応答をホームキャッシュ一貫性制御部からホームロック管理部に中継する機能と、ホームロック管理部が、ホームロック完了応答と第１のリモートクラスタロック完了応答とを受信した後に、システムロック完了応答をホームロック管理部から要求ホームノードに送信する機能と、をコンピュータに実行させる命令を備える。
【００１２】
かかるコンピュータプログラムの一部は、ロック解除要求を要求ホームノードから受信する機能と、ロック解除要求に応答してロック解除コマンドをすべてのホームノードにブロードキャストする機能と、ロック解除コマンドを第１のリモートキャッシュ一貫性制御部に送信する機能と、ロック解除コマンドを複数の第１のリモートプロセッサの各々に転送する機能と、第１のロック解除完了応答を第１のリモートプロセッサの各々から第１のリモートキャッシュ一貫性制御部に送信する機能であって、第１のロック完了応答は、複数の第１のリモートプロセッサの１つがロック解除コマンドを受け付けたことを通知する、機能と、第１のリモートクラスタロック解除完了応答を第１のリモートキャッシュ一貫性制御部からホームキャッシュ一貫性制御部に送信する機能であって、第１のリモートクラスタロック解除完了応答は、複数の第１のリモートプロセッサの各々がロック解除コマンドを受け付けたことを通知する、機能と、ホームロック解除完了応答を各ホームプロセッサからホームロック管理部に送信する機能であって、ホームロック解除完了応答は、ロック解除コマンドを受け付けたことを通知する、機能と、第１のリモートクラスタロック解除完了応答をホームキャッシュ一貫性制御部からホームロック管理部に中継する機能と、ホームロック管理部が、ホームロック解除完了応答と第１のリモートクラスタロック解除完了応答とを受信した後に、システムロック解除完了応答を要求ホームノードに送信する機能と、をコンピュータに実行させる命令を備える。
【００１３】
本発明のさらに別の実施形態は、コンピュータシステムを提供している。そのコンピュータシステムは、第１のポイントツーポイント・アーキテクチャで相互接続された複数のホームプロセッサとホームキャッシュ一貫性制御部とを備えるホームクラスタであって、複数のホームプロセッサの内の１つは、ホームロック管理部を備える、ホームクラスタと、第２のポイントツーポイント・アーキテクチャで相互接続された第１の複数のリモートプロセッサと第１のリモートキャッシュ一貫性制御部とを備える第１のリモートクラスタであって、第１のリモートキャッシュ一貫性制御部は、ホームキャッシュ一貫性制御部と相互接続されており、第１のリモートキャッシュ一貫性制御部は、ホームキャッシュ一貫性制御部を介してホームロック管理部と信号をやり取りすることにより、第１のリモートクラスタロック管理部として機能するよう構成されている、第１のリモートクラスタと、第３のポイントツーポイント・アーキテクチャで相互接続された第２の複数のリモートプロセッサと第２のリモートキャッシュ一貫性制御部とを備える第２のリモートクラスタであって、第２のリモートキャッシュ一貫性制御部は、ホームキャッシュ一貫性制御部と相互接続されており、第２のリモートキャッシュ一貫性制御部は、ホームキャッシュ一貫性制御部を介してホームロック管理部と信号をやり取りすることにより、第２のリモートクラスタロック管理部として機能するよう構成されている、第２のリモートクラスタと、を備える。
【００１４】
本発明の本質および利点については、本明細書の以下の部分と図面とを参照することにより、さらに理解を深めることができる。
【発明を実施するための最良の形態】
【００１５】
ここで、本発明を実施するために発明者が提供する最良の形態を含む本発明のいくつかの具体的な実施形態について、詳細な説明を行う。これら具体的な実施形態の例は、添付の図面に示されている。本発明は、これら具体的な実施形態に関連して説明されているが、説明されている実施形態に本発明を限定する意図はない。逆に、添付の特許請求の範囲によって規定される本発明の趣旨および範囲に含まれうる代替物、変形物、および等価物を網羅するよう意図されている。本発明の具体的な実施形態を実施するには、プロセッサ間でポイントツーポイント通信を行うマルチプロセッサ・アーキテクチャが適している。以下の説明では、本発明の完全な理解を促すために、多くの具体的な詳細事項が説明されている。本発明は、これら具体的な詳細事項の一部またはすべてがなくとも実施可能である。本発明を不必要に分かりにくくしないよう、周知の処理動作については、詳細に説明していない。さらに、本願において、特定の１つの構成要素に対する言及は、特に否定しない限り、本発明の方法および装置が、２以上の構成要素を用いて実施されうる可能性を含む。
【００１６】
マルチプロセッサ・マルチクラスタ・システムにおいて、データアクセスの効率を向上させるための技術が提供されている。ポイントツーポイント・アーキテクチャでは、プロセッサのクラスタは、ポイントツーポイント・リンクを介して互いに直接的に接続された複数のプロセッサを備える。従来の共有バスや外部ネットワークの代わりにポイントツーポイント・リンクを用いることにより、同じメモリ空間を共有するシステム内で、複数のプロセッサが効率的に利用されるようになる。また、従来のバスおよび外部ネットワークに基づくマルチプロセッサ・アーキテクチャにおける帯域幅および待ち時間の制限の多くを回避することにより、処理およびネットワークの効率も改善される。しかしながら、様々な実施形態によると、ポイントツーポイント・アーキテクチャにおけるプロセッサの数の線形的な増加に伴って、複数のプロセッサを接続するために用いられるリンクの数は、指数関数的に増大する。用いられるリンクの数を減らすと共に、ポイントツーポイント・アーキテクチャを用いるマルチプロセッサ・システムをモジュール化するために、複数のクラスタが用いられる。
【００１７】
様々な実施形態によると、複数のプロセッサクラスタが、ポイントツーポイント・アーキテクチャを用いて相互接続される。各プロセッサクラスタは、クラスタ間の通信を行うために用いられるキャッシュ一貫性制御部を備える。各プロセッサクラスタは、任意の適切な数のプロセッサを備えてよい。一実施形態では、プロセッサを接続するために用いられるポイントツーポイント・アーキテクチャは、クラスタの接続にも用いられる。
【００１８】
キャッシュ一貫性制御部を用いることにより、マルチクラスタを必ずしもサポートしない複数のプロセッサを用いて、マルチクラスタ・システムを構築することができる。かかるマルチクラスタ・システムは、ローカルノードが、ローカルクラスタの外部のノードの存在を意識する必要がないように、キャッシュ一貫性制御部を用いて、ローカルトランザクションにおける非ローカルノードを代表させることにより構築されてよい。キャッシュ一貫性制御部については、後に詳細に説明する。
【００１９】
本明細書では、データアクセス要求を順序づけるための任意の機構を直列化ポイントと呼ぶこととする。シングルクラスタ・システムにおいては、すべてのデータアクセス要求を１または複数のかかる直列化ポイントを介して送信することにより、キャッシュ一貫性を維持することができる。直列化ポイントの一例としては、メモリ制御部が挙げられる。メモリ制御部は、ロック管理部として機能してよい。シングルクラスタ・システム内の様々なプロセッサが、データアクセス要求をメモリ制御部に送信してよい。一部の実施形態では、クラスタ内のプロセッサがそれぞれメモリ制御部を備える。一例では、メモリ制御部は、どの時点においても、所与のメモリラインに対する１つのデータアクセス要求のみが許可されるように、データアクセス要求を直列化するよう構成される。他のプロセッサが同じメモリラインへのアクセスを試行すると、そのデータアクセスの試行はブロックされる。メモリ制御部は、マルチプロセッサ・シングルクラスタ・システムにおいてキャッシュ一貫性を維持することを可能にする。
【００２０】
様々なクラスタ内のプロセッサが１つのアドレス空間を共有するマルチプロセッサ・マルチクラスタ・システムにおいて、直列化ポイントを用いることもできる。１つのアドレス空間を用いる場合には、内部のポイントツーポイント・リンクを用いることで、外部ネットワークを利用する従来のマルチクラスタ・システムよりもクラスタ間の通信を大幅に改善することができる。一部の実施形態では、各プロセッサがメモリ制御部を備える。様々なクラスタ内の様々なプロセッサが、特定のクラスタに関連するメモリ制御部に、データアクセス要求を送信する。一部の実施形態では、各クラスタ内のキャッシュ一貫性制御部は、メモリラインが他のクラスタにキャッシュされていることを示すキャッシュディレクトリを備える。メモリ制御部が、キャッシュ一貫性制御部の一部として構成されてよく、異なるクラスタからのすべてのデータ要求を直列化することができる。
【００２１】
しかしながら、マルチプロセッサ・マルチクラスタ・システムにおける直列化ポイントは、マルチプロセッサ・シングルクラスタ・システムにおける直列化ポイントほど効率がよくない場合がある。すなわち、クラスタ間の伝送の待ち時間などの要因に由来する遅延が、様々なデータアクセス要求の応答時間に悪影響を与える可能性がある。遅延は、マルチプロセッサ環境でのプローブの利用によっても生じることに注意されたい。
【００２２】
図１Ａは、本発明の技術を利用できるマルチクラスタ・マルチプロセッサ・システムの一例を示す図である。図１Ａおよび１Ｂには、４つの処理クラスタ（「クラスタ」とも呼ぶ）が図示されているが、マルチクラスタ・システムは、任意の適切な数のクラスタを備えてよい。さらに、各クラスタ１０１、１０３、１０５、および１０７は、プロセッサと、メモリ制御部と、Ｉ／Ｏブリッジと、ロック管理部とを、それぞれ複数備えてよい。クラスタ１０１、１０３、１０５、および１０７は、ポイントツーポイント・リンク１１１ａ−ｆを介して互いに接続されている。一実施形態では、図１Ａに示すマルチクラスタ・アーキテクチャ内の複数のプロセッサは、同じメモリ空間を共有する。この例では、ポイントツーポイント・リンク１１１ａ−ｆは、クラスタ１０１、１０３、１０５、および１０７内の複数のプロセッサを接続するために、従来のフロントサイドバスの代わりに用いられる内部システム接続である。ポイントツーポイント・リンク１１１ａ−ｆは、任意のポイントツーポイント一貫性プロトコルをサポートしてよい。
【００２３】
図１Ｂは、本発明の技術を利用できるマルチクラスタ・マルチプロセッサ・システムの別の例を示す図である。各クラスタ１２１、１２３、１２５、および１２７は、ポイントツーポイント・リンク１４１ａ−ｄを介してスイッチ１３１に接続されることが可能である。スイッチ１３１とポイントツーポイント・リンク１４１ａ−ｄとを用いることにより、システム内の複数のクラスタを接続するに当たって、比較的少ないポイントツーポイント・リンクによって実現できることに注意されたい。スイッチ１３１は、一貫性プロトコル・インターフェースを有するプロセッサを備えてよい。様々な実施例によると、図１Ａに示すマルチクラスタ・システムは、図１Ｂに示すように、スイッチ１３１を用いて拡張される。
【００２４】
図２は、図１Ａに示したクラスタ１０１のようなマルチプロセッサ・クラスタの一例を示す図である。クラスタ２００は、プロセッサ２０２ａ−２０２ｄと、１または複数の基本入出力システム（ＢＩＯＳ）２０４と、メモリバンク２０６ａ−２０６ｄを含むメモリサブシステムと、ポイントツーポイント通信リンク２０８ａ−２０８ｅと、サービスプロセッサ２１２とを備える。ポイントツーポイント通信リンク２０８ａ−２０８ｅは、プロセッサ２０２ａ−２０２ｄ、Ｉ／Ｏスイッチ２１０、およびキャッシュ一貫性制御部２３０の間の相互接続を可能にするよう構成されている。サービスプロセッサ２１２は、図２にリンク２１４ａ−２１４ｆとして示すＪＴＡＧインターフェースを介して、プロセッサ２０２ａ−２０２ｄ、Ｉ／Ｏスイッチ２１０、およびキャッシュ一貫性制御部２３０との通信を可能にするよう構成されている。他のインターフェースもサポートされていることに注意されたい。Ｉ／Ｏスイッチ２１０は、Ｉ／Ｏアダプタ２１６および２２０に、システムの他の構成要素を接続する。
【００２５】
具体的な実施形態によると、本発明のサービスプロセッサは、前もって指定されたパーティション化スキーマに従ってシステムリソースをパーティション化する機能を有する。パーティション化は、サ―ビスプロセッサによってシステムプロセッサと関連付けられたルーティングテーブルの直接的な操作を、ポイントツーポイント通信インフラストラクチャによって可能にすることによって実現されてよい。ルーティングテーブルは、様々なシステムリソースを制御および分離するために用いられ、システムリソース間の接続が、テーブル内に定義されている。代表的なサービスプロセッサおよびコンピュータシステムのパーティション化は、２００１年８月１６日出願の特許出願Ｎｏ．０９／９３２，４５６「Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｐａｒｔｉｔｉｏｎｉｎｇ  Ｕｓｉｎｇ  Ｄａｔａ  Ｔｒａｎｓｆｅｒ  Ｒｏｕｔｉｎｇ  Ｍｅｃｈａｎｉｓｍ」（代理人整理番号Ｎｏ．ＮＷＩＳＰ００１）に開示されており、この参照により本明細書に組み込まれる。
【００２６】
プロセッサ２０２ａ−ｄは、さらに、ポイントツーポイント・リンク２３２ａ−ｄを介してキャッシュ一貫性制御部２３０に接続されている。本明細書では、キャッシュ一貫性を維持しつつ複数のプロセッサクラスタ間の通信を提供するために利用できる任意の機構または装置を、キャッシュ一貫性制御部と呼ぶこととする。キャッシュ一貫性制御部２３０は、他のマルチプロセッサ・クラスタに関連するキャッシュ一貫性制御部に接続されてもよい。１つのクラスタ内に２以上のキャッシュ一貫性制御部が備えられてもよいことに注意されたい。キャッシュ一貫性制御部２３０は、ポイントツーポイント・プロトコルを用いて、プロセッサ２０２ａ−ｄとリモートクラスタの両方と通信することが好ましい。
【００２７】
より一般的には、図２に示した具体的なアーキテクチャは例示に過ぎず、本発明の実施形態は、様々な構成およびリソースの相互接続と、図に示したシステムリソースの各々に対する様々な代替物とを含むよう意図されていることを理解されたい。しかしながら、例示のために、クラスタ２００の具体的な詳細事項を想定することとする。例えば、図２に示したリソースの大部分は、１つの電子アセンブリに存在すると想定される。さらに、メモリバンク２０６ａ−２０６ｄは、デュアルインラインメモリモジュール（ＤＩＭＭ）として物理的に提供されるダブルデータレート（ＤＤＲ）メモリを備えてよい。Ｉ／Ｏアダプタ２１６は、例えば、永続ストレージデバイスへのアクセスを提供するウルトラダイレクトメモリアクセス（ＵＤＭＡ）制御部またはスモールコンピュータシステムインターフェース（ＳＣＳＩ）制御部であってよい。Ｉ／Ｏアダプタ２２０は、ローカルエリアネットワーク（ＬＡＮ）またはインターネットなどのネットワークとの通信を提供するよう適合されたイーサネット（登録商標）カードであってよい。
【００２８】
具体的な実施形態によると、図２に示すように、Ｉ／Ｏアダプタ２１６および２２０の両方が、対称的なＩ／Ｏアクセスを提供する。すなわち、各々が、同等のセットのＩ／Ｏへのアクセスを提供する。当然、かかる構成は、複数のパーティションが同じ種類のＩ／Ｏにアクセスするパーティション化スキームを容易にする。しかしながら、Ｉ／Ｏなしのパーティションが形成される実施形態が想定されることも理解されたい。例えば、１または複数のプロセッサと、関連のメモリリソース（すなわち、メモリ複合体）とを備えるパーティションが、そのメモリ複合体を試験する目的で形成されることも可能である。
【００２９】
一実施形態によると、サービスプロセッサ２１２は、集積チップセット機能を備えるモトローラ社のＭＰＣ８５５Ｔマイクロプロセッサである。キャッシュ一貫性制御部２３０は、ローカルのポイントツーポイント一貫性プロトコルをサポートする特定用途向け集積回路（ＡＳＩＣ）である。キャッシュ一貫性制御部２３０は、さらに、非一貫性プロトコルを扱ってＩ／Ｏデバイスとの通信を可能にするよう構成されてもよい。キャッシュ一貫性制御部２３０は、プログラム可能な論理デバイスやプログラム可能なゲートアレイなど、特別に構成されたプログラム可能なチップである。
【００３０】
また、一部の実施例では、マルチプロセッサ・システム内にサービスプロセッサが備えられないことにも注意されたい。さらに、他のクラスタアーキテクチャが、本発明の範囲に含まれる。例えば、他のアーキテクチャは、より多いもしくは少ないプロセッサ２０２を備えてもよい。さらに、「ノード」および「プロセッサ」という用語は、本明細書においては、しばしば同じ意味で用いられることに注意されたい。しかしながら、様々な実施形態によると、ノード（例えば、プロセッサ２０２ａ−２０２ｄ）は、複数のサブユニットを備えてよいことを理解されたい。
【００３１】
図２Ａは、上述のように複数のサブユニットを含むノードの一例を示す図である。ノード２０２は、ＣＰＵ２５０と、メモリ制御部２６０と、Ｉ／Ｏブリッジ２７０とを備える。この実施形態では、メモリ制御部２６０は、ロック管理部２６５を備える。ロック管理部２６５は、後に図７ないし１０を参照して詳述するホームロック管理部７２０の一実施形態である。ロック管理部２６５は、図２Ａに示すようにプロセッサのメモリ管理部の一部であってもよいし、ノードの別の構成要素であってもよい。あるいは、ロック管理部２６５は、別のノードの一部であってもよいし、別個の制御部など、別個のノードであってもよい。
【００３２】
図３は、キャッシュ一貫性制御部２３０の一例を示す図である。様々な実施形態によると、キャッシュ一貫性制御部は、マルチプロセッサ・システムの様々なクラスタ内のプロセッサから受信したプローブや要求などのパケットを扱うよう構成されたプロトコルエンジン３０５を備える。プロトコルエンジン３０５の機能は、性能を向上させるために、いくつかのエンジンにわたってパーティション化されてよい。一例では、パーティション化は、パケットの種類（要求、プローブ、応答など）、方向（受信および送信）、または、トランザクションフロー（要求フロー、プローブフローなど）に基づいて行われる。
【００３３】
プロトコルエンジン３０５は、キャッシュ一貫性制御部２３０が、最近の要求およびプローブなどのトランザクションを追跡して、それらのトランザクションを特定のプロセッサに関連付けることを可能にする保留バッファ３０９にアクセスする。保留バッファ３０９に保持されるトランザクション情報は、トランザクション宛先ノード、その後の衝突検出およびプロトコル最適化のための要求のアドレス、応答情報、タグ、状態情報、およびその他の情報を含みうる。
【００３４】
キャッシュ一貫性制御部は、キャッシュ一貫性制御部が、そのクラスタ内および外部のプロセッサクラスタ内の他のプロセッサと通信することを可能にする一貫性プロトコルインターフェース３０７などのインターフェースを有する。様々な実施形態によると、各インターフェース３０７および３１１は、完全クロスバーとして、または、マルチプレクサおよびバッファなどの構成要素を用いた別個の受信および送信装置として実装される。キャッシュ一貫性制御部は、さらに、Ｉ／Ｏデバイスと通信するために、非一貫性プロトコルインターフェース３１１のような他のインターフェースを備えてよい。しかしながら、キャッシュ一貫性制御部２３０は、必ずしも、一貫性および非一貫性インターフェースの両方を提供する必要はないことに注意されたい。また、あるクラスタ内のキャッシュ一貫性制御部が、他のクラスタ内のキャッシュ一貫性制御部と通信できることにも注意されたい。
【００３５】
図４は、キャッシュ一貫性制御部を利用しない単一のクラスタを有するシステム内のプロセッサからのキャッシュ要求のためのトランザクションを示す図である。本明細書では、構成要素「ＸＸＸ−ｓ」は、工程「ｓ」における構成要素ＸＸＸを表す。例えば、プロセッサ４０１−１は、工程１におけるプロセッサ４０１を意味する。ここで、プロセッサ４０１−１は、アクセス要求４５０（メモリライン読み取り要求など）をメモリ制御部４０３−１に送信する。メモリ制御部４０３−１は、このプロセッサと関連していてもよいし、クラスタ内の他のノードと関連していてもよい。あるいは、メモリ制御部４０３−１は、ＡＳＩＣまたは特別に構成されたプログラム可能な論理デバイス（ＰＬＤ）など、別個の構成要素であってもよい。
【００３６】
キャッシュ一貫性を維持するために、通例は、任意の与えられた時間に、１つのプロセッサだけが、共有アドレス空間に対応するメモリラインへのアクセスを許可される。他のプロセッサが、同じメモリラインへのアクセスを試行しないように、メモリ制御部４０３−１は、そのメモリラインをロックすることができる。メモリラインがロックされると、そのメモリラインへの他の要求はすべて、ブロックされるか、または、待ち行列に入れられる。他のプロセッサによるアクセスは、通例、メモリ制御部４０３−１がメモリラインをロック解除した時だけ許可される。
【００３７】
次いで、メモリ制御部４０３−１は、キャッシュ状態を判定するために、プローブ４５５、４６０、および４６５をローカルキャッシュメモリ４０５、４０７、および４０９に送信する。次に、ローカルキャッシュメモリ４０５、４０７、および４０９は、プローブ応答４７０、４７５、および４８０をプロセッサ４０１−２に送信する。メモリ制御部４０３−１は、さらに、アクセス応答４８５（読み取り応答など）をプロセッサ４０１−３に送信する。次いで、プロセッサ４０１−３は、「完了」応答をメモリ制御部４０３−２に送信して、メモリ制御部４０３−２が、次の要求のためにメモリラインをロック解除することを可能にすることができる。ＣＰＵ４０１−１、ＣＰＵ４０１−２、およびＣＰＵ４０１−３は、工程１、２、および３におけるプロセッサ４０１であることに注意されたい。
【００３８】
図５Ａ−５Ｄは、キャッシュ一貫性制御部の動作を示す図である。マルチプロセッサ・クラスタでキャッシュ一貫性制御部を利用すると、各クラスタ内のプロセッサや関連のメモリ制御部のようなローカルノードの機能に影響を与えることなく、マルチプロセッサ・マルチクラスタ・一貫性ドメインを作成することができる。一部の例では、プロセッサは、複数のクラスタを許可することなく、単一のクラスタ内の限られた数のプロセッサを許可するプロトコルのみをサポートしてよい。キャッシュ一貫性制御部を用いれば、非ローカルの複数のノードが、キャッシュ一貫性制御部に実装された単一のローカルノードにすぎないと、ローカルプロセッサに認識させることにより、マルチクラスタ・システムを実現することができる。かかる実施形態では、あるクラスタ内のプロセッサは、他のクラスタ内のプロセッサが存在することを意識する必要がない。その代わり、そのクラスタ内のプロセッサは、キャッシュ一貫性制御部がすべての非ローカルノードを代表するかのように、キャッシュ一貫性制御部と通信する。
【００３９】
本明細書では、リモートクラスタ内のノードを、「非ローカルノード」または「リモートノード」と呼んでいることに注意されたい。しかしながら、「非ローカルノード」という用語は、一般的には、要求クラスタ内に存在しないノードを意味するものであり、リモートクラスタ内のノードとホームクラスタ内のノードの両方を含む。本明細書では、データアクセスすなわちキャッシュアクセス要求の送信元であるクラスタを、要求クラスタと呼ぶこととする。本明細書では、メモリ制御部４０３など、要求を処理する直列化ポイントを含むクラスタを、ホームクラスタと呼ぶこととする。本発明に従ったロック管理では、ホームクラスタは、後に図７ないし１０を参照して詳述するホームロック管理部７２０を含むクラスタである。その他のクラスタについては、リモートクラスタと呼ぶ。本明細書では、ホームクラスタおよびリモートクラスタを、非ローカルクラスタとも呼ぶ。様々な実施形態によると、メモリアドレスは、ローカルメモリ制御部に存在する。
【００４０】
一貫性プロトコルが、いくつかの種類のメッセージを含みうることにも注意されたい。一例では、一貫性プロトコルは、以下に示すようなものを含めて、様々な種類のメッセージを含む：データすなわちキャッシュアクセス要求、プローブ、「ロック」および「ロック解除」コマンドなどのコマンド、プローブ応答や「ロック完了」および「ロック解除完了」応答などの応答、および、データパケット。
【００４１】
「ロック」および「ロック解除」コマンドは、ロック管理部によって送出される。ロック管理部は、別個のノードであってもよいし別のノードの一部であってもよい。一部の実施形態では、ロック管理部は、プロセッサに関連するメモリ制御部の一部である。ロックコマンドは、後にロック解除コマンドを受信するまで、共有メモリのさらなるデータにアクセスしないよう、ノードに命令する。好ましい実施形態では、ノードは、後にロック解除コマンドを受信するまで、システムトランザクションの生成を停止するよう命令される。様々な実施形態によると、本発明のロックコマンドは、複数のクラスタ内の複数のノードをロックすることによりトランザクションが原子的に実行されるように見えることを可能にするための機構を提供する。すなわち、本発明のロックコマンドは、トランザクションが、あらゆるトランザクションの介在なしに実行されることを可能にする。一部の例では、グローバルロックコマンドは、読み取り−変更−書き込み、テスト−設定など、原子性セマンティクスを有するプロセッサメモリアクセスに対応するために用いられる。別の例では、グローバルロックコマンドは、データが複数のキャッシュラインにわたる場合に、キャッシュ不可能なメモリに対する動作や、キャッシュ可能なメモリに対する動作のために用いられる。かかるトランザクションの原子性は、通例、キャッシュ自体、または、任意の直列化ポイントによって扱われることはできない。ロックコマンドは、さらに、後にロック解除コマンドを受信するまで、動作を中断するよう、ノードに命令する。
【００４２】
本発明の技術は、いくつかのロック機構に関連することに注意されたい。ある種類のロック動作は、メモリラインのロックに関連する。メモリラインは、通例、キャッシュ一貫性を維持すると共に個々のノードによる特定のメモリラインへのアクセスを調整するために、直列化ポイントによってロックされる。メモリラインロック動作の原子性は、通例、キャッシュ自体によって扱われる。例えば、ノードによる特定のメモリラインへの書き込みトランザクションは、原子性トランザクションになる。
【００４３】
特定のメモリラインがロックされると、通例、マルチクラスタ・アーキテクチャ内の他のノードは、ロックされたメモリラインにアクセスできなくなる。しかしながら、他のメモリラインは、例えば、システム内の他のノードによってアクセス可能である。ある場合においては、第２のプロセッサが第２のメモリラインに書き込みを行っている間に、第１のプロセッサが第１のメモリラインに書き込みを行うことが可能である。
【００４４】
しかしながら、一部のプロセッサアーキテクチャは、グローバルロックを呼び出す動作を備える。グローバルロックを伴う場合がある一部の動作は、データが複数のキャッシュラインにわたる場合の、読み取り−変更−書き込み動作、テスト−設定動作、キャッシュ不可能なメモリに対する動作、および、キャッシュ可能なメモリに対する動作を含む。グローバルロックトランザクションでは、グローバルロックが、マルチクラスタ・アーキテクチャ内の複数のノードにブロードキャストされる。ロックブロードキャストトランザクションを受信すると、各ノードは、新しいトランザクションを送出しなくなる。本明細書では、ノードをロックするために複数のクラスタ内の複数のノードにブロードキャストされたコマンドを、グローバルロックコマンドと呼ぶこととする。１つのメモリ空間を共有するマルチクラスタ・システムでは、ロックコマンドは、通例、有効になる前に、システム内のすべてのノードによって受信される必要がある。さらに、ロックを要求しているノードに送り戻される最終的な「システムロック完了」応答は、ロックコマンドがシステム内のすべてのノードによって受信され、すべてのノードが「ロック完了」応答を送信するまでブロックされることが好ましい。
【００４５】
一部の実施形態によると、ノードは、ロックコマンドを受信すると、現在進行中の動作を完了させるが、別の動作を開始しない。さらに別の実施形態によると、ノードは、ロックコマンドを受信すると、現在進行中の動作が一定期間内に完了可能である場合のみ、その動作を完了させる。すべてのロック完了応答が、様々なノードから受信された時点で、システムがロックされる。通例、システムがロックされると、任意の他のメモリラインに対するトランザクションは発生できなくなる。システム全体がロック状態に置かれることで、読み取り−変更−書き込みおよびテスト−設定などのトランザクションの完了が可能になる。「ロック解除」コマンドは、通常動作を再開するよう、ノードに命令する。
【００４６】
データすなわちキャッシュアクセス要求は、通例、ホームノードメモリ制御部を対象とする。プローブは、システム内の各キャッシュへの照会を行うために用いられる。プローブパケットは、キャッシュが、指定されたラインのためのキャッシュ状態に適切に移行することを可能にする情報を搬送できる。応答は、応答情報を搬送すると共に、ノードが、与えられたトランザクションの状態を他のノードに通知することを可能にするために用いられる。例えば、ノードは、ロックコマンドを受け付けると、「ロック完了」応答を送出する。同様に、ノードは、ロック解除コマンドを受け付けると、「ロック解除完了」応答を送出する。データパケットは、書き込み要求および読み出し応答の両方のための要求データを搬送する。
【００４７】
図５Ａは、集約的なリモートキャッシュとして機能するキャッシュ一貫性制御部を示す図である。プロセッサ５０１−１が、ローカルメモリ制御部５０３−１に対するデータアクセス要求５５０を生成すると、キャッシュ一貫性制御部５０９は、ローカルメモリ制御部５０３−１からプローブ５６５を受信して、非ローカルノード部５１１に転送する。次いで、キャッシュ一貫性制御部５０９は、非ローカルノード５１１からの応答５１３を蓄積して、キャッシュブロック５０５および５０７に関連するローカルノードが、単一の応答５７６および５８０を送信するのと同じように、プロセッサ５０１−２に単一の応答５７０を送信する。メモリ制御部５０３−１は、アクセス応答５１７（読み取り応答など）をプロセッサ５０１−３に送信する。次いで、プロセッサ５０１−３は、「完了」応答５１９をローカルメモリ制御部５０３−２に送信することが好ましい。ローカルプロセッサは、調査（プローブ）されるローカルノードごとに１つずつの応答を予期してもよい。キャッシュ一貫性制御部を利用することで、ローカルプロセッサは、非ローカルノードが存在するか否かを考慮せずに動作することが可能になる。
【００４８】
図５Ｂは、プローブエージェントペアとして機能するキャッシュ一貫性制御部を示す図である。キャッシュ一貫性制御部５２１−１は、非ローカルノード５３１からプローブ５８１を受信すると、プローブ５８１を受け入れて、キャッシュブロック５２３、５２５、および５２７に関連するローカルノードに転送する。次いで、キャッシュ一貫性制御部５２１−２は、最終応答５８２を非ローカルノード部５３１に転送する。この例では、キャッシュ一貫性制御部は、プローブの送信元であって送信先でもある。キャッシュブロック５２３、５２５、および５２７に関連するローカルノードは、キャッシュ一貫性制御部が、ローカルメモリ要求を行うローカルプロセッサであるかのように振る舞う。
【００４９】
図５Ｃは、リモートメモリとして機能するキャッシュ一貫性制御部を示す図である。ローカルプロセッサ５４１−１が、リモートメモリを対象としたアクセス要求５８３を生成すると、キャッシュ一貫性制御部５４３−１は、要求５８３を非ローカルノード５５３に転送する。リモート要求５８４がローカル調査を指定すると、キャッシュ一貫性制御部５４３−１は、ローカルノード５４５、５４７、５４９、および５５１へのプローブ５８５、５８６、５８７、および５８８をそれぞれ生成する。調査されたノードは、プロセッサ５４１−２に応答５８９、５９０、５９１、および５９２を提供する。キャッシュ一貫性制御部５４３−１は、非ローカルノード部５５３からデータを受信すると、読み出し応答５９３をプロセッサ５４１−３へ転送する。キャッシュ一貫性制御部５４３−２は、最終応答５９４を非ローカルノード部５５３に関連するリモートメモリ制御部に転送する。
【００５０】
図５Ｄは、リモートプロセッサとして機能するキャッシュ一貫性制御部を示す図である。第１のクラスタのキャッシュ一貫性制御部５６１−１は、第２のクラスタのプロセッサから要求５９５を受信すると、第２のクラスタのプロセッサに代わって第１のクラスタのプロセッサとして機能する。キャッシュ一貫性制御部５６１−１は、非ローカルノード部５７５からの要求を受け入れて、メモリ制御部５６３−１に転送する。メモリ制御部５６３−１は、プローブ５７２、５７３、５７４、および５７７をノード５６５、５６７、５６９、および５７１に送信する。キャッシュ一貫性制御部５６１−２は、プローブ応答５７８、５７９、５９６、５９７と、フェッチされたデータとを蓄積する。キャッシュ一貫性制御部５６１−３は、最終応答５９８をメモリ制御部５６３−２と非ローカルノード５７５に転送する。
【００５１】
キャッシュ一貫性制御部が、集約的なリモートキャッシュ、プローブエージェントペア、リモートメモリ、およびリモートプロセッサとして機能することを可能にすることにより、マルチクラスタを必ずしもサポートしない複数のプロセッサを用いて、マルチクラスタ・システムを構築することができる。かかるキャッシュ一貫性制御部は、ローカルノードが、ローカルクラスタの外部のノードの存在を意識する必要がないように、ローカルトランザクションにおける非ローカルノードを代表するよう用いられることが可能である。
【００５２】
図６は、キャッシュ一貫性制御部を用いる非ローカルクラスタに送られたローカルプロセッサからのデータ要求のためのトランザクションを示す図である。マルチクラスタ・システムは、要求クラスタ６００と、ホームクラスタ６２０と、リモートクラスタ６４０とを備える。上述のように、本明細書では、要求クラスタ６００を除く、ホームクラスタ６２０、リモートクラスタ６４０、および任意の他のクラスタを、非ローカルクラスタと呼ぶ。ローカルおよび非ローカルのクラスタに関連するプロセッサおよびキャッシュ一貫性制御部は、同様に、それぞれ、ローカルプロセッサ、ローカルキャッシュ一貫性制御部、非ローカルプロセッサ、および非ローカルキャッシュ一貫性制御部と呼ぶ。
【００５３】
様々な実施形態によると、ローカルクラスタ６００内のプロセッサ６０１−１は、データアクセス要求（読み出し要求など）をキャッシュ一貫性制御部６０３−１に送信する。キャッシュ一貫性制御部６０３−１は、保留バッファ（図３に示したようなバッファ）内のトランザクションを追跡して、その要求をホームクラスタ６２０のキャッシュ一貫性制御部６２１−１に転送する。ホームクラスタ６２０のキャッシュ一貫性制御部６２１−１は、アクセス要求を受信して、自身の保留バッファ内のその要求を追跡する。一例では、それらの要求に関連する情報が、保留バッファに格納される。キャッシュ一貫性制御部６２１−１は、ホームクラスタ６２０に関連するメモリ制御部６２３−１にアクセス要求を転送する。この時点で、メモリ制御部６２３−１は、その要求に関連するメモリラインをロックする。一例では、メモリラインは、要求クラスタ６００、ホームクラスタ６２０、およびリモートクラスタ６４０内の複数のプロセッサによって共有されたメモリ空間の固有のアドレスである。メモリ制御部６２３−１は、データアクセス要求に関連するプローブを生成し、キャッシュブロック６２５および６２７に関連するローカルノードと、キャッシュ一貫性制御部６２１−２に、そのプローブを転送する。
【００５４】
要求、プローブ、応答、およびデータに関連するメッセージは、１つのノードから他のノードへ転送される際に記述されるが、それらのメッセージ自体は、種々の形態を含んでよいことに注意されたい。一例では、マルチクラスタ・アーキテクチャが、様々なローカルノードに対して透過的であることを可能にするために、メッセージに対して修正がなされる。書き込み要求についても、同様に扱うことができることに注意されたい。書き込み要求では、対象となるメモリ制御部が、応答を収集して、収集が完了した時点で、それらの応答をプロセッサに送信する。
【００５５】
リモートクラスタ６４０に関連するキャッシュ一貫性制御部６４１−１は、キャッシュ一貫性制御部６２１−２からプローブを受信し、キャッシュブロック６４５、６４７、および６４９に関連するローカルノードを調査する。同様に、要求クラスタ６００に関連するキャッシュ一貫性制御部６０３−２は、プローブを受信して、そのプローブをキャッシュブロック６０５、６０７、および６０９に関連するローカルノードに転送し、要求クラスタ６００内のキャッシュブロックを調査する。プロセッサ６０１−２は、キャッシュブロック６０５、６０７、および６０９に関連するローカルノードからプローブ応答を受信する。
【００５６】
様々な実施形態によると、キャッシュ一貫性制御部６２１−３は、プローブ応答を蓄積して、それらのプローブ応答をキャッシュ一貫性制御部６０３−３に送信し、その後、キャッシュ一貫性制御部６０３−３は、それらのプローブ応答をプロセッサ６０１−３に転送する。キャッシュ一貫性制御部６２１−４は、さらに、読み出し応答をキャッシュ一貫性制御部６０３−４に送信し、キャッシュ一貫性制御部６０３−４は、その読み出し応答をプロセッサ６０１−４に転送する。プローブおよびプローブ応答が、システム内のキャッシュ一貫性を維持するための情報を搬送するのに対し、読み出し応答は、実際のフェッチされたデータを搬送することができる。フェッチされたデータの受信後、プロセッサ６０１−４は、ソース完了応答をキャッシュ一貫性制御部６０３−５に送信してよい。様々な実施形態によると、この時点で、要求クラスタ６００でのトランザクションは完了する。キャッシュ一貫性制御部６０３−５は、ソース完了メッセージをキャッシュ一貫性制御部６２１−５に転送する。次いで、キャッシュ一貫性制御部６２１−５は、ソース完了メッセージをメモリ制御部６２３−２に送信する。ソース完了メッセージを受信すると、メモリ制御部６２３−２は、メモリラインをロック解除することが可能になり、その時点で、ホームクラスタ６２０でのトランザクションが完了する。これで、他のプロセッサが、ロック解除されたメモリラインにアクセスできるようになる。
【００５７】
キャッシュ一貫性制御部６２１−３は、プローブ応答をキャッシュ一貫性制御部６０３−３に送信する前にリモートクラスタプローブ応答を待つため、システムに遅延が生じることに注意されたい。様々な実施形態によると、プローブ応答は、キャッシュ一貫性制御部６０３−３で収集される。リモートクラスタに、ホームクラスタを介してプローブ応答を送信させることにより、ホームクラスタプローブ応答とリモートクラスタプローブ応答の両方が、ホームクラスタのキャッシュ一貫性制御部で遅延される場合がある。一例では、リモートクラスタプローブ応答は、要求クラスタに到達するために、さらなるホップを通過する必要がある。リモートクラスタと要求クラスタとの間のプローブ応答の伝送の待ち時間は、ホームクラスタを介したリモートクラスタと要求クラスタとの間のプローブ応答の伝送の待ち時間よりも大幅に短い場合がある。ホームクラスタプローブ応答は、さらに、この追加されたホップの結果として遅延される。
【００５８】
当業者にとって明らかなように、要求、プローブ、および応答メッセージを含む具体的なトランザクションシーケンスは、具体的な実施例に応じて異なってよい。一例では、キャッシュ一貫性制御部６２１−３は、プローブ応答メッセージと読み取り応答メッセージの両方をキャッシュ一貫性制御部６０３−３に送信する前に、メモリ制御部６２３−１からの読み取り応答メッセージの受信を待ってよい。別の例では、キャッシュ一貫性制御部は、要求を生成するプロセッサそのものであってもよい。一部のプロセッサが、プロセッサとキャッシュ一貫性制御部の両方として動作してもよい。さらに、読み取りおよび書き込みに関連する様々なデータアクセス要求メッセージ、プローブ、および応答が考慮されてよい。上述のように、キャッシュをスヌープするための任意のメッセージをプローブと呼ぶことができる。同様に、メモリラインがロック解除されるようメモリ制御部に指示するための任意のメッセージを、ソース完了メッセージと呼ぶことができる。
【００５９】
図６に示したトランザクションは、図５Ａ−５Ｄを参照して説明したようなリモートプロセッサ、集約的なローカルキャッシュ、プローブエージェントペア、およびリモートメモリの機能を含む多くの様々な機能を、キャッシュ一貫性制御部が実行する例を示している。
【００６０】
ホームクラスタ６２０のキャッシュ一貫性制御部６２１−１は、リモートプロセッサとして機能している。キャッシュ一貫性制御部は、要求クラスタのプロセッサから要求を受信すると、要求クラスタのプロセッサに代わって、要求を行うプロセッサとして機能するよう指示される。この場合、キャッシュ一貫性制御部６２１−１は、プロセッサ６０１−１から転送された要求を受け入れて、メモリ制御部６２３−１に送信し、すべてのローカルノードおよびメモリ制御部６２３−１から応答を蓄積して、蓄積した応答とデータとを、要求プロセッサ６０１−３に転送する。キャッシュ一貫性制御部６２１−５は、さらに、ソース完了をローカルメモリ制御部６２３−２に転送する。
【００６１】
要求クラスタ６００のキャッシュ一貫性制御部６０３−１は、リモートメモリとして機能している。リモートメモリとして、キャッシュ一貫性制御部は、プロセッサから適切なリモートクラスタへ要求を転送すると共に、ローカルノードが調査されることを保証するよう設計されている。この場合、キャッシュ一貫性制御部６０３−１は、プローブをホームクラスタ６２０のキャッシュ一貫性制御部６２１−１に転送する。キャッシュ一貫性制御部６０３−２は、さらに、ローカルノード６０５、６０７、および６０９を調査する。
【００６２】
要求クラスタ６４０のキャッシュ一貫性制御部６４１−１は、プローブエージェントペアとして機能している。上述のように、プローブエージェントペアとして機能するキャッシュ一貫性制御部は、リモートクラスタからプローブを受信すると、そのプローブを受け入れて、すべてのローカルノードに転送する。キャッシュ一貫性制御部は、それらの応答を蓄積して、最終応答を要求クラスタに送信する。この例では、キャッシュ一貫性制御部６４１−１は、プローブをキャッシュブロック６４５、６４７、および６４９に関連するローカルノードに送信し、プローブ応答を収集してホームクラスタ６２０のキャッシュ一貫性制御部６２１−３に送信する。同様に、キャッシュ一貫性制御部６０３−２も、要求クラスタ６００においてプローブエージェントペアとして機能する。キャッシュ一貫性制御部６０３−２は、プローブ要求をキャッシュブロック６０５、６０７、および６０９に関連するローカルノードを含むローカルノードに転送する。
【００６３】
キャッシュ一貫性制御部６２１−２および６２１−３も、集約的なリモートキャッシュとして機能している。キャッシュ一貫性制御部６２１−２は、メモリ制御部６２３−１からプローブを受けて、他のプロセッサクラスタ６００および６４０に転送する役割を有する。より具体的には、キャッシュ一貫性制御部６２１−２は、要求クラスタ６００に対応するキャッシュ一貫性制御部６０３−２と、リモートクラスタ６４０に対応するキャッシュ一貫性制御部６４１−１とに、プローブを転送する。上述のように、マルチクラスタ・アーキテクチャを用いると、遅延や、トラフィックの増大および処理オーバーヘッドなどの他の望ましくない要素が生じる場合がある。
【００６４】
図７ないし１０では、各クラスタは、４つのノードのみを備えている。しかしながら、図７ないし１０を参照して説明するクラスタは、任意の適切な数のノードを有してよい。図７は、ホームクラスタの要求ホームノードからのロック要求に基づいて、マルチクラスタ・システムをロックするためのトランザクションの流れを示す図である。本発明の技術は、複数のクラスタ内の複数のノードにロックコマンドを効率的に送信することを可能にするものであり、その技術においては、各プロセッサノードは、リモートノードの知識を有していない。この例では、要求ホームノードは、ホ―ムクラスタ７１０のホームプロセッサ７０５−１であり、ロック要求７１５をホームロック管理部７２０−１に送信する。上述のように、ホームロック管理部７２０−１は、メモリ制御部や別のプロセッサの一部であってもよいし、別個の制御部であってもよい。
【００６５】
ホームロック管理部７２０−１は、ノード７３０および７３５とホームキャッシュ一貫性制御部７４０−１とを含むすべてのホームノードに対してロックコマンド７２５をブロードキャストする。ノード７３０および７３５は、例えば、ホームクラスタ７１０内の他のホームプロセッサであってよい。ホームキャッシュ一貫性制御部７４０−１は、ロックコマンド７２５をリモートクラスタ７５０のリモートキャッシュ一貫性制御部７４５−１に送信する。リモートキャッシュ一貫性制御部７４５−１は、ロックコマンド７２５をリモートノード７５５、７６０、および７６５に転送する。この例では、リモートノード７５５、７６０、および７６５は、リモートプロセッサであり、ロックコマンドの受信前に始まった動作を完了させるが、その他の動作を開始したり、ローカルメモリまたはすべてのクラスタによって共有されるメモリのさらなるデータにアクセスしたりすることはない。
【００６６】
ロックコマンドを受け付けると、各リモートプロセッサ７５５、７６０、および７６５は、「ロック完了」応答７７０をリモートキャッシュ一貫性制御部７４５−２に送信して、各リモートプロセッサ７５５、７６０、および７６５がロックコマンド７２５を受け付けたことを通知する。各リモートプロセッサ７５５、７６０、および７６５からロック応答７７０を受信すると、リモートキャッシュ一貫性制御部７４５−２は、「リモートクラスタロック完了」応答７７５をホームキャッシュ一貫性制御部７４０−２に送信して、リモートクラスタ７５０内の各ノードがロックコマンド７２５を受け付けたことを通知する。ホームキャッシュ一貫性制御部７４０−２は、リモートクラスタロック完了応答７７５をホームロック管理部７２０−２に転送する。
【００６７】
同様に、ホームノード７３０および７３５は、ロックコマンド７２５を受け付けて、ホームロック完了応答７８０をホームロック管理部７２０−２に送出する。ホームロック管理部７２０−２は、ホームクラスタ内の各ノードからロック完了応答を受信して初めて、システムロック完了応答７８５を要求ホームノード７０５−２に送信する。この例では、ホームロック管理部７２０−２は、各ホームノード７３０および７３５からホームロック完了応答７８０を受信すると共にホームキャッシュ一貫性制御部７４５−２からリモートクラスタロック完了応答７７５を受信して初めて、システムロック完了応答７８５を要求ホームノード７０５−２に送信する。この例では、ホームロック管理部７２０−２は、リモートクラスタ７５０の存在を意識せず、７４５−２をさらなる別のローカルノードとして認識している。
【００６８】
図８は、リモートクラスタ（要求クラスタとも呼ぶ）の要求プロセッサからのロック要求に基づいて、マルチクラスタ・システムをロックするためのトランザクションの流れを示す図である。リモートクラスタ７５０および要求クラスタ８１０は、両方ともリモートクラスタであり、第１および第２のリモートクラスタと見なされてもよい。
【００６９】
この例では、要求クラスタ８１０のプロセッサ８０５−１は、ロック要求８１５を要求クラスタのキャッシュ一貫性制御部８２０−１に送出する。キャッシュ一貫性制御部８２０−１は、ロック要求８１５をホームクラスタ７１０のホームキャッシュ一貫性制御部７４０−１に送信する。ホームキャッシュ一貫性制御部７４０−１は、ロック要求８１５をホームロック管理部７２０−１に転送する。なお、ホームロック管理部７２０−１は、要求クラスタ８１０やリモートクラスタ７５０の存在を意識してもよいし意識しなくてもよい。この例では、ホームロック管理部７２０−１は、要求クラスタ８１０とリモートクラスタ７５０の存在を意識していない。ホームロック管理部７２０−１は、単に、ロック要求８１５をホームキャッシュ一貫性制御部７４０−１から受信して、ホームキャッシュ一貫性制御部７４０−１を要求ノードとして扱う。
【００７０】
したがって、ホームロック管理部７２０−１は、ホームキャッシュ一貫性制御部７４０−１とホームノード７３０および７３５に対してロックコマンド７２５をブロードキャストする。ホームキャッシュ一貫性制御部７４０−１は、ロックコマンド７２５を要求クラスタのキャッシュ一貫性制御部８２０−２とリモートキャッシュ一貫性制御部７４５−１に送信する。
【００７１】
リモートキャッシュ一貫性制御部７４５−１は、ロックコマンド７２５をリモートノード７５５、７６０、および７６５に転送する。ロックコマンドを受け付けると、各リモートプロセッサ７５５、７６０、および７６５は、ロック完了応答７７０をリモートキャッシュ一貫性制御部７４５−２に送信して、各リモートプロセッサ７５５、７６０、および７６５がロックコマンド７２５を受け付けたことを通知する。各リモートプロセッサ７５５、７６０、および７６５からロック応答７７０を受信すると、リモートキャッシュ一貫性制御部７４５−２は、リモートクラスタロック完了応答７７５をホームキャッシュ一貫性制御部７４０−３に送信して、リモートクラスタ７５０内の各ノードがロックコマンド７２５を受け付けたことを通知する。ホームキャッシュ一貫性制御部７４０は、リモートクラスタロック完了応答７７５をホームロック管理部７２０−２に転送する。
【００７２】
同様に、要求クラスタのキャッシュ一貫性制御部８２０−２は、ロックコマンド７２５を要求クラスタのノード８２５、８３０、および８３５に転送し、各ノードは、ロック完了応答８４０を要求クラスタのキャッシュ一貫性制御部８２０−３に送出することにより、ロックコマンド７２５を受け付けたことを通知する。ロック完了応答８４０を要求クラスタのノード８２５、８３０、および８３５の各々から受信すると、要求クラスタのキャッシュ一貫性制御部８２０−３は、要求クラスタロック完了応答８５０をホームキャッシュ一貫性制御部７４０−４に送信する。この例では、ホームキャッシュ一貫性制御部７４０−４は、リモートクラスタロック完了応答７７５と要求クラスタロック完了応答８５０とを受信して初めて、ロック完了応答をホームロック管理部７２０−２に送信する。
【００７３】
ホームノード７３０および７３５は、ロックコマンド７２５を受け付けて、ホームロック完了応答７８０をホームロック管理部７２０−２に送出する。ホームロック管理部７２０−２は、ホームクラスタ内の各ノードからロック完了応答を受信して初めて、システムロック完了応答７８５を要求ホームノード７４０−５に送信する。ここでは、ホームロック管理部７２０−２は、各ホームノード７３０および７３５からホームロック完了応答７８０を受信すると共にホームキャッシュ一貫性制御部７４０−４からロック完了応答を受信して初めて、システムロック完了応答７８５をホームキャッシュ一貫性制御部７４０−５に送信する。
【００７４】
図９は、ホームクラスタのプロセッサからのロック解除要求に基づいて、マルチクラスタ・システムをロック解除するためのトランザクションの流れを示す図である。この例では、ホ―ムクラスタ７１０のホームプロセッサ７０５−１は、ロック解除要求９１５をホームロック管理部７２０−１に送信する。ホームロック管理部７２０−１は、ノード７３０および７３５とホームキャッシュ一貫性制御部７４０−１とを含むすべてのホームノードに対してロック解除コマンド９２５をブロードキャストする。ホームキャッシュ一貫性制御部７４０−１は、ロック解除コマンド９２５をリモートクラスタ７５０のリモートキャッシュ一貫性制御部７４５−１に送信する。
【００７５】
リモートキャッシュ一貫性制御部７４５−１は、ロック解除コマンド９２５をリモートノード７５５、７６０、および７６５に転送する。ロック解除コマンドを受け付けると、各リモートプロセッサ７５５、７６０、および７６５は、ロック解除完了応答９７０をリモートキャッシュ一貫性制御部７４５−２に送信して、各リモートプロセッサ７５５、７６０、および７６５がロック解除コマンド９２５を受け付けたことを通知する。各リモートプロセッサ７５５、７６０、および７６５からロック解除応答９７０を受信すると、リモートキャッシュ一貫性制御部７４５−２は、リモートクラスタロック解除完了応答９７５をホームキャッシュ一貫性制御部７４０−２に送信して、リモートクラスタ７５０内の各ノードがロック解除コマンド９２５を受け付けたことを通知する。ホームキャッシュ一貫性制御部７４０−２は、リモートクラスタロック解除完了応答９７５をホームロック管理部７２０−２に転送する。
【００７６】
同様に、ホームノード７３０および７３５は、ロック解除コマンド９２５を受け付けて、ホームロック解除完了応答９８０をホームロック管理部７２０−２に送出する。ホームロック管理部７２０−２は、ホームクラスタ内の各ノードからロック解除完了応答を受信して初めて、システムロック解除完了応答９８５を要求ホームノード７０５−２に送信する。この例では、ホームロック管理部７２０−２は、各ホームノード７３０および７３５からホームロック解除完了応答９８０を受信すると共にホームキャッシュ一貫性制御部７４５−２からリモートクラスタロック解除完了応答９７５を受信して初めて、システムロック解除完了応答９８５を要求ホームノード７０５−２に送信する。
【００７７】
図１０は、リモートクラスタのプロセッサからのロック解除要求に基づいて、マルチクラスタ・システムをロック解除するためのトランザクションの流れを示す図である。上述のように、リモートクラスタ７５０および要求クラスタ８１０は、両方ともリモートクラスタであり、第１および第２のリモートクラスタと見なされてもよい。
【００７８】
この例では、要求クラスタ８１０のプロセッサ８０５−１は、ロック解除要求１０１５を要求クラスタのキャッシュ一貫性制御部８２０−１に送出する。キャッシュ一貫性制御部８２０−１は、ロック解除要求１０１５をホームクラスタ７１０のホームキャッシュ一貫性制御部７４０−１に送信する。ホームキャッシュ一貫性制御部７４０−１は、ロック解除要求１０１５をホームロック管理部７２０−１に転送する。なお、ホームロック管理部７２０−１は、要求クラスタ８１０やリモートクラスタ７５０の存在を意識してもよいし意識しなくてもよい。この例では、ホームロック管理部７２０−１は、要求クラスタ８１０とリモートクラスタ７５０の存在を意識していない。ホームロック管理部７２０−１は、ロック解除要求１０１５をホームキャッシュ一貫性制御部７４０−１から受信して、ホームキャッシュ一貫性制御部７４０−１を要求ノードとして扱う。
【００７９】
したがって、ホームロック管理部７２０−１は、ホームキャッシュ一貫性制御部７４０−１とホームノード７３０および７３５に対してロック解除コマンド９２５をブロードキャストする。ホームキャッシュ一貫性制御部７４０−１は、ロック解除コマンド９２５を要求クラスタのキャッシュ一貫性制御部８２０−２とリモートキャッシュ一貫性制御部７４５−１に送信する。
【００８０】
リモートキャッシュ一貫性制御部７４５−１は、ロック解除コマンド９２５をリモートノード７５５、７６０、および７６５に転送する。各リモートノードは、上述のように、ロック解除コマンド９２５に従う。ロック解除コマンドを受け付けると、各リモートプロセッサ７５５、７６０、および７６５は、ロック解除完了応答９７０をリモートキャッシュ一貫性制御部７４５−２に送信して、各リモートプロセッサ７５５、７６０、および７６５がロック解除コマンド９２５を受け付けたことを通知する。各リモートプロセッサ７５５、７６０、および７６５からロック解除応答９７０を受信すると、リモートキャッシュ一貫性制御部７４５−２は、リモートクラスタロック解除完了応答９７５をホームキャッシュ一貫性制御部７４０−３に送信して、リモートクラスタ７５０内の各ノードがロック解除コマンド９２５を受け付けたことを通知する。
【００８１】
同様に、要求クラスタのキャッシュ一貫性制御部８２０−２は、ロック解除コマンド９２５を要求クラスタのノード８２５、８３０、および８３５に転送し、各ノードは、ロック解除完了応答１０４０を要求クラスタのキャッシュ一貫性制御部８２０−３に送出することにより、ロック解除コマンド９２５を受け付けたことを通知する。ロック解除完了応答１０４０を要求クラスタのノード８２５、８３０、および８３５の各々から受信すると、要求クラスタのキャッシュ一貫性制御部８２０−３は、要求クラスタロック解除完了応答１０５０をホームキャッシュ一貫性制御部７４０−４に送信する。ホームキャッシュ一貫性制御部７４０−４は、リモートクラスタロック解除完了応答９７５と要求クラスタロック解除完了応答１０５０とを受信して初めて、ロック解除完了応答をホームロック管理部７２０−２に送信する。
【００８２】
ホームノード７３０および７３５は、ロック解除コマンド９２５を受け付けて、ホームロック解除完了応答９８０をホームロック管理部７２０−２に送出する。ホームロック管理部７２０−２は、ホームクラスタ内の各ノードからロック解除完了応答を受信して初めて、システムロック解除完了応答９８５を要求ホームノード７０５−２に送信する。ここでは、ホームロック管理部７２０−２は、各ホームノード７３０および７３５からホームロック解除完了応答９８０を受信すると共にホームキャッシュ一貫性制御部７４０−４からロック解除完了応答を受信して初めて、システムロック解除完了応答９８５をホームキャッシュ一貫性制御部７４０−５に送信する。
【００８３】
本発明について、具体的な実施形態を参照しつつ詳細に説明したが、本発明の趣旨および範囲から逸脱することなく、開示した実施形態の形態および詳細事項における変更を行うことができることは、当業者にとって明らかなことである。例えば、本発明の実施形態は、ポイントツーポイント、スイッチ、またはバスアーキテクチャを用いて接続された複数のプロセッサクラスタに適用されてよい。別の例では、複数のプロセッサクラスタが、１つのキャッシュ一貫性制御部を共有してもよいし、複数のキャッシュ一貫性制御部が、１つのクラスタ内で用いられてもよい。米国特許出願Ｎｏ．１０／１４５，４３９（２００２年５月１３日出願）の図７ないし１２と、２１ページ１１行から２８ページ２行の説明は、マルチクラスタ・システムにおけるキャッシュ一貫性制御部の動作に関して、さらなる詳細事項を提供しており、この参照により本明細書に組み込まれる。したがって、本発明の範囲は、添付の請求項の範囲を参照して判断されるものである。
【図面の簡単な説明】
【００８４】
【図１Ａ】複数のクラスタを有するシステムを示す図。
【図１Ｂ】複数のクラスタを有するシステムを示す図。
【図２】複数のプロセッサを有するクラスタを示す図。
【図２Ａ】複数のサブユニットを備えるノードを示す図。
【図３】キャッシュ一貫性制御部を示す図。
【図４】単一のクラスタ内のプロセッサからのデータアクセス要求のためのトランザクションの流れを示す図。
【図５Ａ】キャッシュ一貫性制御部の機能を示す図。
【図５Ｂ】キャッシュ一貫性制御部の機能を示す図。
【図５Ｃ】キャッシュ一貫性制御部の機能を示す図。
【図５Ｄ】キャッシュ一貫性制御部の機能を示す図。
【図６】リモートクラスタがホームクラスタに応答してプローブを送信するためのトランザクションの流れを示す図。
【図７】ホームクラスタのプロセッサからのロック要求に基づいて、マルチクラスタ・システムをロックするためのトランザクションの流れを示す図。
【図８】リモートクラスタのプロセッサからのロック要求に基づいて、マルチクラスタ・システムをロックするためのトランザクションの流れを示す図。
【図９】ホームクラスタのプロセッサからのロック解除要求に基づいて、マルチクラスタ・システムをロック解除するためのトランザクションの流れを示す図。
【図１０】リモートクラスタのプロセッサからのロック解除要求に基づいて、マルチクラスタ・システムをロック解除するためのトランザクションの流れを示す図。
【符号の説明】
【００８５】
１０１、１０３、１０５、１０７…クラスタ
１１１ａ−ｆ…ポイントツーポイント・リンク
１２１、１２３、１２５、１２７…クラスタ
１３１…スイッチ
１４１ａ−ｄ…ポイントツーポイント・リンク
２００…クラスタ
２０２ａ−ｄ…プロセッサ
２０４…ＢＩＯＳ
２０６ａ−ｄ…メモリバンク
２０８ａ−ｅ…ポイントツーポイント通信リンク
２１０…Ｉ／Ｏスイッチ
２１２…サービスプロセッサ
２１４ａ−ｆ…リンク
２１６、２２０…Ｉ／Ｏアダプタ
２３０…キャッシュ一貫性制御部
２３２ａ−ｄ…ポイントツーポイント・リンク
２５０…ＣＰＵ
２６０…メモリ制御部
２６５…ロック管理部
２７０…Ｉ／Ｏブリッジ
３０５…プロトコルエンジン
３０７…一貫性プロトコルインターフェース
３０９…保留バッファ
３１１…非一貫性プロトコルインターフェース
４０１…プロセッサ
４０３…メモリ制御部
４０５、４０７、４０９…ローカルキャッシュメモリ
４５５、４６０、４６５…プローブ
４７０、４７５、４８０…プローブ応答
４８５…アクセス応答
５０１…プロセッサ
５０３…ローカルメモリ制御部
５０５、５０７…キャッシュブロック
５０９…キャッシュ一貫性制御部
５１１…非ローカルノード
５１３…応答
５１７…アクセス応答
５１９…完了応答
５２１…キャッシュ一貫性制御部
５２３、５２５、５２７…キャッシュブロック
５３１…非ローカルノード
５４１…プロセッサ
５４３…キャッシュ一貫性制御部
５４５、５４７、５４９、５５１…ローカルノード
５５０…データアクセス要求
５５３…非ローカルノード
５６１…キャッシュ一貫性制御部
５６３…メモリ制御部
５７０、５７６、５８０…応答
５７２、５７３、５７４、５７７…プローブ
５７５…非ローカルノード
５７８、５７９、５９６、５９７…プローブ応答
５８１…プローブ
５８２…最終応答
５８３…アクセス要求
５８４…リモート要求
５８５、５８６、５８７、５８８…プローブ
５８９、５９０、５９１、５９２…応答
５９３…読み出し応答
５９４…最終応答
５９５…要求
５９８…最終応答
６００…要求クラスタ
６０１…プロセッサ
６０３…キャッシュ一貫性制御部
６０５、６０７、６０９…キャッシュブロック
６２０…ホームクラスタ
６２１…キャッシュ一貫性制御部
６２３…メモリ制御部
６２５、６２７…キャッシュブロック
６４０…リモートクラスタ
６４１…キャッシュ一貫性制御部
６４５、６４７、６４９…キャッシュブロック
７０５…ホームプロセッサ
７１０…ホームクラスタ
７１５…ロック要求
７２０…ホームロック管理部
７２５…ロックコマンド
７３０、７３５…ホームノード
７４０…ホームキャッシュ一貫性制御部
７４５…リモートキャッシュ一貫性制御部
７５０…リモートクラスタ
７５５、７６０、７６５…リモートノード
７７０…ロック完了応答
７７５…リモートクラスタロック完了応答
７８０…ホームロック完了応答
７８５…システムロック完了応答
８０５…プロセッサ
８１０…要求クラスタ
８１５…ロック要求
８２０…キャッシュ一貫性制御部
８２５、８３０、８３５…ノード
８４０…ロック完了応答
８５０…要求クラスタロック完了応答
９１５…ロック解除要求
９２５…ロック解除コマンド
９７０…ロック解除完了応答
９７５…リモートクラスタロック解除完了応答
９８０…ホームロック解除完了応答
９８５…システムロック解除完了応答
１０１５…ロック解除要求
１０４０…ロック解除完了応答
１０５０…要求クラスタロック解除完了応答
【図１Ａ】
2006505868.tif 000003
【図１Ｂ】
2006505868.tif 000004
【図２】
2006505868.tif 000005
【図２Ａ】
2006505868.tif 000006
【図３】
2006505868.tif 000007
【図４】
2006505868.tif 000008
【図５Ａ】
2006505868.tif 000009
【図５Ｂ】
2006505868.tif 000010
【図５Ｃ】
2006505868.tif 000011
【図５Ｄ】
2006505868.tif 000012
【図６】
2006505868.tif 000013
【図７】
2006505868.tif 000014
【図８】
2006505868.tif 000015
【図９】
2006505868.tif 000016
【図１０】
2006505868.tif 000017
【国際調査報告】
2006505868.tif 000018
2006505868.tif 000019
2006505868.tif 000020