(57)【要約】一実施形態において、システムは第１プロセッサコアと第２プロセッサコアとを含む。第１プロセッサコアは、第１プロセッサコアが更新をモニタリングするアドレスレンジを識別するアドレスレンジインディケーションを送信するように構成される。第１プロセッサコアは、アドレスレンジを第１プロセッサコアにモニタリングさせるように定義された第１の命令の実行に応答して、アドレスレンジインディケーションを送信するように構成される。第２プロセッサコアは、アドレスレンジインディケーションを受信するように結合され、アドレスレンジにおいて少なくとも１バイトを更新する書込みオペレーションの実行に応答して、第１プロセッサコアに信号を送るように構成される。第１プロセッサコアは、第２プロセッサコアからの信号を受信するように結合され、第１プロセッサがこの信号に応答して、アドレスレンジにおいて更新を待っている第１の状態から抜け出るように構成される。
2008515096.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令に応答して更新のためにアドレスレンジをモニタリングするように構成されたモニタユニット（２６Ａ）を備えたプロセッサコア（１８Ａ）であって、
前記プロセッサコア（１８Ａ）は、前記アドレスレンジの更新を待つために第１の状態（６４）に入るよう構成されており、
前記モニタユニット（２６Ａ）は、前記第１の命令の実行に応答して、第２のプロセッサコア（１８Ｂ）に対する前記アドレスレンジを識別するアドレスレンジインディケーションを通信するように構成されており、
前記モニタユニット（２６Ａ）は、第２のプロセッサコア（１８Ｂ）から、前記第２プロセッサコア（１８Ｂ）が前記アドレスレンジにおいて少なくとも１バイトを更新していることを示す信号（Wakeup-ST）を受信するように構成されており、前記プロセッサコア（１８Ａ）は、前記信号（Wakeup-ST）に応答して前記第１の状態（６４）から抜け出るように構成されている、プロセッサコア。
【請求項２】
前記アドレスレンジインディケーションは、連続したメモリバイトのブロックを識別するアドレスを含む、請求項１に記載のプロセッサコア。
【請求項３】
前記コンピュータシステムの他のコンポーネントと通信するためのインターフェース（２４Ｃ）をさらに有し、前記プロセッサコア（１８Ａ）はさらに、更新のインディケーションが前記アドレスレンジの更新を示していれば、前記インターフェース（２４Ｃ）からの前記更新のインディケーションの受信に応答して、前記第１の状態（６４）から抜け出るように構成されている、請求項１に記載のプロセッサコア。
【請求項４】
前記更新のインディケーションはプローブである、請求項３に記載のプロセッサコア。
【請求項５】
前記モニタユニット（２６Ａ）はさらに、前記第２プロセッサコア（１８Ｂ）から受信した第２アドレスレンジインディケーションのシャドウコピーを記録するように構成されており、前記第２プロセッサコア（１８Ｂ）は、前記第２アドレスレンジインディケーションによって示された第２アドレスレンジにおいて更新をモニタリングする、請求項１に記載のプロセッサコア。
【請求項６】
前記モニタユニット（２６Ａ）は、前記第２アドレスレンジにおいて少なくとも１バイトを更新する第２書込みオペレーションを実行する前記プロセッサコア（１８Ａ）に応答して、第２プロセッサコア（１８Ｂ）に信号を送信するように構成される、請求項５に記載のプロセッサコア。
【請求項７】
前記第１の状態は、電力節約状態を含む、請求項１に記載のプロセッサコア。
【請求項８】
前述のいずれかの請求項に記載された前記プロセッサコア（１８Ａ）と、
前記アドレスレンジインディケーションを受信するように結合されるとともに、前記アドレスレンジにおいて少なくとも１バイトを更新する書込み命令の実行に応答して、前記プロセッサコア（１８Ａ）に信号を送信するように構成された第２プロセッサコア（１８Ｂ）、を含むシステム。
【請求項９】
第１プロセッサコア（１８Ａ）が前記第１プロセッサコア（１８Ａ）からの更新をモニタリングしているアドレスレンジを識別するアドレスレンジインディケーションを第２プロセッサコア（１８Ｂ）に通信するステップを有し、前記通信は、更新のために前記第１プロセッサコア（１８Ａ）に前記アドレスレンジをモニタリングさせるように定義された第１の命令の実行に応答するものであり、
前記第２プロセッサコア（１８Ｂ）の前記アドレスレンジにおいて、少なくとも１バイトを更新する書込みオペレーションを実行するステップと、
前記書込みオペレーションに応答して、前記第１プロセッサコア（１８Ａ）に信号を送信するステップと、
前記信号に応答して、前記第１プロセッサコア（１８Ａ）が前記アドレスレンジにおいて前記更新を待っている第１の状態から抜け出るステップと、を含む方法。
【請求項１０】
前記第１プロセッサコアは、前記コンピュータシステムの他のコンポーネントと通信するためにインターフェースに結合されており、前記方法はさらに、前記インターフェースからの前記更新のインディケーションの受信に応答して、更新のインディケーションが前記アドレスレンジの更新を示していれば、前記第１プロセッサコアの第１の状態から抜けるステップを含む、請求項９に記載の方法。
【請求項１１】
前記更新のインディケーションはプローブである、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ技術に関し、より詳細には、変更のためにキャッシュラインのモニタリングを行う技術に関する。
【背景技術】
【０００２】
アプリケーションプログラムの多くは、他のアプリケーションと相互作用するように書かれる。さらに、アプリケーションプログラムの多くは、マルチスレッドアプリケーションとして書かれる。マルチスレッドアプリケーションは、相対的に単独で実行するように設計された複数のコードシーケンス（スレッド）を有する。各スレッド（あるいは、アプリケーション）は、様々な方法で相互に通信可能である。
簡潔に言えば、本明細書において”スレッド”という用語は、マルチスレッドアプリケーションからのコードシーケンス指し、あるいは、アプリケーション自体がマルチスレッドでなければ、アプリケーション全体を指すものとして使用されることになる。
【０００３】
多くの場合、スレッド間の通信を行うためにメモリ位置（メモリロケーション）が使用される。例えば、あるメモリ位置は、メモリのより大きな領域へのアクセスを制御するため、コンピュータシステムの別のリソース（周辺装置など）へのアクセスを制御するため、特定のコードシーケンス（多くの場合、”クリティカルセクション(critical section)”と呼ばれる）を実行する能力を制御するため、などに使用されるセマフォ(semaphore)を記録するように定義され得る。上述したものはいずれも、以下で保護リソース（protected resource）と呼ばれる。
通常、スレッドはセマフォにアクセスし、その状態をチェックできる。セマフォの状態が、スレッドが保護リソースを制御し得ることを示していれば、スレッドはセマフォの状態を変更して、スレッドが保護リソースを制御することを示すようにしてもよい。
セマフォの状態が、別のスレッドが保護リソースを制御していることを示していれば、スレッドはセマフォの状態が変わるまでセマフォをチェックし続けてもよい（例えば、それが保護リソースでなされたことを示すセマフォを書込む他のスレッドによって）。メモリ位置は、スレッド間に別のメッセージを送信するように（あるいは、メッセージが利用可能であることを示すように）使用してもよい。
ある所与のスレッドが別のスレッドからのメッセージを待っている場合、その所与のスレッドは、メッセージが利用可能であることを示す値でメモリ位置が記されるまでメモリ位置のチェックを継続し得る。その他の多くの例が存在する。そのような例としては、あるスレッドが別のスレッドと通信するためにメモリ位置を使用するといったものが挙げられる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
通常、あるスレッドがある所望の状態を求めてメモリ位置をチェックし、そのメモリ位置では所望する状態が見つからないときに、このスレッドは”スピンループ”に入る。この”スピンループ”状態では、スレッドは所望の状態を求めてメモリ位置へのアクセスを繰り返し行う。
メモリ位置が最終的に所望の状態で書かれたときにスレッドはこのスピンループから抜け出ることができる。スレッドがスピンループの状態にある間、このスレッドはあまり有益な仕事をしない。しかし、スレッドを実行中のプロセッサはスピンループを実行して電力を消費する。
【０００５】
いくつかの命令セットアーキテクチャは、プログラマがスピンループにおいて命令を使用する場合に、あるいは、スレッドがメモリ位置で所望の状態を待っているような場合に、プロセッサがそのような状態を最適化できるよう定義された命令を有する。例えば、（ストリーミングＳＩＭＤ拡張命令３あるいはＳＳＥ３を備えた）ｘ８６命令セットは、ＭＯＮＩＴＯＲ／ＭＷＡＩＴの命令ペアを定義する。ＭＯＮＩＴＯＲ命令は、プロセッサが更新をモニタリングしているアドレスレンジ(address range)を確立するように使用される（例えば、別のプロセッサによって実行された書込みによって）。
ＭＷＡＩＴ命令は、更新を待つ間、プロセッサを”実装に依存した最適化状態(implementation-dependent optimized state)”に入れるように使用される。プロセッサは、モニタリングされたアドレスレンジにおける書込みに応答して（および、特定の割込み、および、モニタリングされたアドレスレンジとは関係のないその他の理由によって）、この実装に依存した最適化状態から抜け出る。通常、プロセッサは、プロセッサに実装された通常のコヒーレンシーメカニズムを介して更新を知らされる。
【課題を解決するための手段】
【０００６】
一実施形態では、システムは第１プロセッサコアと第２プロセッサコアとを含む。第１プロセッサコアは、この第１プロセッサコアが更新をモニタリングをしているアドレスレンジを識別するアドレスレンジインディケーションを送信するように構成される。
この第１プロセッサコアは、更新のために第１プロセッサコアにアドレスレンジをモニタリングさせるように定義された第１の命令の実行に応答して、このアドレスレンジインディケーションを送信するように構成される。
第２プロセッサコアはアドレスレンジインディケーションを受信するように結合されており、アドレスレンジにおいて少なくとも１バイトを更新する書込み命令の実行に応答して、第１プロセッサコアに信号を送信するように構成されている。
第１プロセッサコアは第２プロセッサコアからの信号を受信するように結合されており、この信号に応答して第１の状態から抜け出るように構成されている。この第１の状態とは、第１プロセッサコアがアドレスレンジにおいて更新を待っている状態である。
【０００７】
別の実施形態においては、ある方法が考察される。
その方法は、第１プロセッサコアが、第１プロセッサコアから第２プロセッサコアまでの更新をモニタリングしているアドレスレンジを識別するアドレスレンジインディケーションを送信するステップを含み、このアドレスレンジインディケーションの送信ステップは、更新のために第1のプロセッサコアにアドレスレンジをモニタリングさせるように定義された第１の命令の実行に応答するものであり、第２プロセッサコアの第２アドレスレンジにおいて、少なくとも１バイトを更新する書込み命令を実行するステップと、この書込み命令に応答して、第１プロセッサコアに信号を送信するステップと、この信号に応答して、第１プロセッサコアが、アドレスレンジにおいて更新を待っている第１の状態から抜け出るステップと、を含むものである。
【０００８】
また別の実施形態では、モニタユニットを含むプロセッサコアが考察される。このプロセッサコアは、第１の命令に応答して、更新のためにアドレスレンジをモニタリングするように構成される。このプロセッサコアは、アドレスレンジの更新を待つための第１の状態に入るように構成される。
このモニタユニットは、第１の命令の実行に応答して第２プロセッサコアに対するアドレスレンジを識別するアドレスレンジインディケーションを送信するように構成されるとともに、第２プロセッサコアがアドレスレンジにおいて少なくとも１バイトを更新していることを識別する第２プロセッサコアからの信号を受信するように構成される。
プロセッサコアは、この信号に応答して、第１の状態から抜け出るように構成される。
【発明を実施するための最良の形態】
【０００９】
添付の図面を参照して本発明を説明する。なお、本発明は、様々変形やその他の形態を取り得るが、ある特定の実施形態を例として図示し、かつ本明細書に詳細に記載する。 しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれるすべての変形例、均等物および代替例を含むことを意図することが理解されたい。
【００１０】
以下に、ｘ８６命令セットアーキテクチャ（ＭＯＮＩＴＯＲおよびＭＷＡＩＴ命令を定義するＳＳＥ３拡張命令を少なくとも含み、また、ＡＭＤ６４（商標）拡張命令などの他の拡張命令あるいはその他の任意の拡張命令を含み得る）を実装したプロセッサを含む例示的な実施形態を記載する。他の実施形態では、任意の命令セットアーキテクチャを実装でき、モニタリングされるアドレスレンジ（例えば、キャッシュラインあるいはその他の任意のアドレスレンジ）を確立するように定義される１つ以上の命令を含むことができる。これらの命令は、プロセッサコアをモニタリングされたアドレスレンジ内で少なくとも１バイトの更新を待つ状態に入らせるように定義されたものである。
つまり、プロセッサコアは、１つあるいは複数の命令の実行に応答して、アドレスレンジをモニタリングし、このモニタリングされたアドレスレンジ内で更新を待つ状態に入ることができる。そのような命令の例として、このＭＯＮＩＴＯＲおよびＭＷＡＩＴ命令が使用されることになる。明細書における便宜上、ＭＯＮＩＴＯＲ命令はｍｏｎｉｔｏｒ命令（大文字ではない）と称し、ＭＷＡＩＴ命令はＭＷａｉｔ命令（ＭとＷだけを大文字にする）と称することとする。
【００１１】
図１は、コンピュータシステム１０の一実施形態のブロック図を示す。図示した実施形態では、コンピュータシステム１０は、ノード１２Ａ、１２Ｂ、メモリ１４Ａ、１４Ｂ、および周辺装置１６Ａ、１６Ｂを含む。このノード１２Ａ、１２Ｂは結合されており、ノード１２Ｂは周辺装置１６Ａ、１６Ｂに結合されている。
ノード１２Ａ、１２Ｂの各々は、対応するメモリ１４Ａ、１４Ｂに結合されている。ノード１２Ａはブリッジ２０Ａに結合されたプロセッサコア１８Ａ、１８Ｂを備えている。このブリッジ２０Ａはさらに、メモリコントローラ２２Ａと複数のハイパートランスポート(HyperTransport)（商標）（ＨＴ）インターフェース回路２４Ａ〜２４Ｃに結合されている。
【００１２】
同様に、ノード１２Ｂはブリッジ２０Ｂに結合されたプロセッサコア１８Ｃ、１８Ｄを備えている。このブリッジ２０Ｂはさらに、メモリコントローラ２２Ｂと複数のハイパートランスポート（商標）（ＨＴ）インターフェース回路２４Ｄ〜２４Ｆに結合されている。
このＨＴ回路２４Ｃ、２４Ｄは（本実施形態ではＨＴインターフェースを介して）結合されており、また、ＨＴ回路２４Ｆは周辺装置１６Ａに結合されている。この周辺装置１６Ａは（本実施形態ではＨＴインターフェースを使用して）デイジーチェーン構造で周辺装置１６Ｂに結合されている。メモリコントローラ２２Ａ、２２Ｂは、対応のメモリ１４Ａ、１４Ｂに結合されている。
【００１３】
図１にプロセッサコア１８Ａ、１８Ｂの一実施形態の更なる詳細を示す。
各プロセッサコア１８Ｃ、１８Ｄは同様のものであってよい。図示された実施形態では、プロセッサコア１８Ａは、レジスタ２８Ａ、２８Ｂおよびコンパレータ３０Ａ、３０Ｂを備えたモニタユニット２６Ａを含む。レジスタ２８Ａはコンパレータ３０Ａに結合されている。このコンパレータ３０Ａはさらに、インターフェースからブリッジ２０Ａまでのインバリデートプローブ(invalidating prove)（Ｐ−Ｉｎｖ）のアドレスを受信するように結合されている。
レジスタ２８Ｂはコンパレータ３０Ｂに結合されている。このコンパレータ３０Ｂはプロセッサコア１８Ａからのストアアドレス（ＳｔＡｄｄｒ）を受信するように結合されている。コンパレータ３０Ｂの出力はＷａｋｅｕｐ−ＳＴ信号としてモニタユニット２６Ｂに結合される。
図示された実施形態では、このモニタユニット２６Ｂは、レジスタ２８Ａ、２８Ｂおよびコンパレータ３０Ａ、３０Ｂにそれぞれ類似したレジスタ２８Ｃ、２８Ｄおよびコンパレータ３０Ｃ、３０Ｄを備える。
コンパレータ３０Ｄの出力は、Ｗａｋｅｕｐ−ＳＴ信号としてモニタユニット２６Ａに結合される。レジスタ２８Ａはレジスタ２８Ｄに結合されるとともに、レジスタ２８Ｂはレジスタ２８Ｃに結合される。
【００１４】
プロセッサコア１８Ａ〜１８Ｄの各々は、ｍｏｎｏｔｏｒ命令の実行に応答してアドレスレンジをモニタリングするように構成してもよい。加えて、このモニタリングプロセッサコア１８Ａ〜１８Ｄは、モニタリングされたアドレスレンジを識別するアドレスレンジインディケーションを少なくとも１つの別のプロセッサコア１８Ａ〜１８Ｄに送信できる（”受信プロセッサ”）。
例えば、例示の実施形態では、モニタリングプロセッサコア１８Ａ〜１８Ｄは、同一ノード１２Ａ、１２Ｂにおける他のプロセッサコア１８Ａ〜１８Ｄにアドレスレンジインディケーションを送信してもよい。つまり、プロセッサコア１８Ａは、そのアドレスレンジインディケーションをプロセッサコア１８Ｂに（逆の場合も同様に）送信することができ、また、プロセッサ１８Ｃはそのアドレスレンジインディケーションをプロセッサコア１８Ｄに（逆の場合も同様に）送信することができる。
【００１５】
受信プロセッサコア１８Ａ〜１８Ｄは、命令の実行に応答して受信プロセッサコア１８Ａ〜１８Ｄが動作することになるアドレスレンジに対する書込みオペレーションのモニタリングを行う。そのような書込みが検出されれば、受信プロセッサコア１８Ａ〜１８Ｄはモニタリングプロセッサコア１８Ａ〜１８Ｄに信号を送ることができる。例えば、例示の実施形態では、受信プロセッサコア１８Ａ〜１８Ｄは、モニタリングプロセッサコア１８Ａ〜１８ＤにＷａｋｅｕｐ−ＳＴ信号をアサートしてもよい。このモニタリングプロセッサコア１８Ａ〜１８Ｄは、その信号に応答して、ＭＷａｉｔ命令の実行によって入った状態から（まだその状態にあるとすれば）抜け出ることができる。
ある実施形態では、モニタリングされたアドレスレンジに対する書込みオペレーションの検出を信号で伝える受信プロセッサコアにより、モニタリングプロセッサコアは、通常の通信インターフェースを介してコヒーレンシー通信を送信した場合よりも、その状態からより早く抜け出ることができる。
【００１６】
概して、アドレスレンジインディケーションは、モニタリングされたアドレスレンジを定義する任意の値であってよい。例えば、アドレスレンジは、メモリの連続するバイトのブロックに対応し得る。ブロックのサイズが固定されている場合（例えば、あるキャッシュライン、あるいはある固定数のキャッシュライン、あるいはあるキャッシュラインの一部）、ブロックのベースアドレスを使用してもよい。同様に、サイズは可変であってもプロセッサコア１８Ａ〜１８Ｄの各々が同一サイズにプログラムされていれば、ベースアドレスを使用してもよい。他の実施形態では、ベースアドレスとサイズ、あるいはベースアドレスと終了アドレスはアドレスレンジを識別できる。
この議論の残りの部分では、キャッシュラインがアドレスレンジのサイズであり、キャッシュラインのベースアドレスがアドレスレンジインディケーションとして使用される実施形態を例として使用する。しかし、他の実施形態では、任意のサイズのアドレスレンジ、およびこれに対応する任意のアドレスレンジインディケーションを使用してもよい。
【００１７】
プロセッサコア１８Ａ、１８Ｂは、モニタユニット２６Ａ、２６Ｂを含めて、図１により詳細に例示されている。モニタユニット２６Ａ（およびそのレジスタ２８Ａ、２８Ｂ、およびコンパレータ３０Ａ、３０Ｂ）の動作を以下に詳細に記載する。また、モニタユニット２６Ｂの動作は同様であり得る。レジスタ２８Ａは、モニタユニット２８ＡＡによってモニタリングされるアドレスを記録する（ＭＡｄｄｒ）。つまり、プロセッサコア１８Ａは、プロセッサコア１８Ａがｍｏｎｉｔｏｒ命令を実行する間に生成されたアドレスでレジスタ２８Ａに書き込むことができる。
コンパレータ３０Ａを介して、このアドレスにより示されるキャッシュラインの更新を示す任意の通信によりプロセッサコア１８Ａに供給されたアドレスと、ＭＡｄｄｒと、を比較する。例えば、図示した実施形態では、インバリデートプローブ（Ｐ−Ｉｎｖ）を更新のインディケーション（更新を表すもの）として用いることができる。
【００１８】
概して、プローブは、コヒーレンシスキームで使用される通信であり、プローブのレシーバが、このプローブによって識別されたキャッシュラインを有しているかどうかを判断し、キャッシュラインの状態の変更が検知された場合は、その状態の変更を特定する（また、場合によっては、変更されたキャッシュラインをメモリあるいはリクエスタに戻すように要求する）。
インバリデートプローブは、キャッシュラインの状態変更が無効であることを示すものである。ある特定のコヒーレンシースキームにおいて、インバリデートプローブを、ソースデバイス（例えば、プロセッサ、周辺装置など）によって更新される他のキャッシュにおいてキャッシュラインを無効にするように用いることもできる。その他のインディケーションを使用してもよい。例えば、インバリデートプローブに加えて、あるいはインバリデートプローブの代わりに、書込み(write)オペレーションを使用してもよい。
【００１９】
他の例として、読出しオペレーションのソースがキャッシュラインを変更しようとしていることを示す読出しオペレーションが更新を示してもよい。多くの場合、そのような読出しオペレーションは、オペレーションの変更を目的とした読出し、読出し変更オペレーション、あるいは読出し排他オペレーションと呼ばれる。別の実施形態では、ＭＡｄｄｒは、プローブが更新を示していなくても、プロセッサコア１８Ａから受信した任意のプローブの各アドレスと比較され得る。そのような比較をすることで、ＭＷａｉｔ状態からプロセッサコア１８Ａを抜けさせ、（命令シーケンスにおいて、ＭＷａｉｔ命令に続く命令を介して）キャッシュラインを再度読出させることができる。
このようにして、ソフトウェアは、プローブをもたらしたモニタリングされたキャッシュラインへのアクセスのソースが、キャッシュラインの排他的コピーを受け取らないようにすることができる（これにより、インバリデートプローブを生じさせずに、その後の更新が可能となる）。
【００２０】
コンパレータ３０Ａによってマッチングが検出された場合、モニタユニット２６Ａは、ＭＷａｉｔ命令に応答して入った状態からプロセッサコア１８Ａを抜けさせることができる（例えば、図１のＷＥｘｉｔ信号のアサートを介して）。プロセッサコア１８Ａは、ＭＷａｉｔ命令に続いて、命令の実行を継続してもよい。ソフトウェアは、モニタリングされるキャッシュライン内の値をチェックするために、ＭＷａｉｔ命令に続いて命令を含んでもよい。また、所望の状態が検知されなければ、ｍｏｎｉｔｏｒ命令／ＭＷａｉｔ命令に戻り、再度その状態に入る。
【００２１】
モニタユニット２６Ａはまた、モニタリングされたキャッシュラインのアドレスをモニタユニット２６Ｂに送信することができる。図示の実施形態では、モニタユニット２６Ａは、レジスタ２８Ａからのアドレスを直接的にモニタユニット２６Ｂに出力し得る。他の実施形態では、他の方法でアドレスを送信してもよい。例えば、アドレスは、インターフェースを越えてブリッジ２０Ａに送信されてもよく（例えば、アドレスがモニタリングされたアドレスであることを示すよう、コード化された通信として）、また、ブリッジ２０Ａはプロセッサコア１８Ｂにこの通信を送信してもよい。
【００２２】
同様に、モニタユニット２６Ａは、モニタユニット２６Ｂによってモニタリングされるアドレスを受信し得る。例示の実施形態では、モニタユニット２６Ａは、モニタユニット２６Ｂからのモニタリングされたアドレスのシャドウコピーを記録するよう、レジスタ２６Ｂを含む。モニタユニット２６Ａは、ＭＡｄｄｒＳアドレスを、プロセッサコア１８Ａによって実行された書込みオペレーションのアドレス（図１中のＳｔＡｄｄｒ）と比較する。
ＭＡｄｄｒＳアドレスによって示されたキャッシュラインへの書込みが検出されれば（コンパレータ３０Ｂ）、モニタユニット２６Ａはモニタユニット２６ＢにＷａｋｅｕｐ−ＳＴ信号をアサートし得る。他の実施形態では、モニタユニット２６Ｂは、レジスタ２８Ｃの出力をモニタユニット２６Ａに継続的に供給し得る。また、レジスタ２８Ｂはそのような実施形態には実装され得ない。
【００２３】
同様に、モニタユニット２６Ｂは、モニタユニット２６Ａに対してＷａｋｅｕｐ−ＳＴ信号を生成し得る。モニタユニット２６Ａは、モニタユニット２６ＢからのアサートされたＷａｋｅｕｐ−ＳＴ信号の受信に応答して、キャッシュラインに対するインバリデートプローブの検出と同様に、ＭＷａｉｔ命令に応答して入った状態から抜けるように構成される。
【００２４】
概して、プロセッサコア１８Ａは、コンピュータシステム１０の他の構成要素と通信するために、ブリッジ２０Ａへのインターフェースを使用することができる[例えば、周辺装置１６Ａ、１６Ｂ、プロセッサコア１８Ｂ〜１８Ｄ（但し、モニタリングされたアドレスのシャドウコピーおよびＷａｋｅｕｐ−ＳＴ信号の、上述したプロセッサコア１８Ｂとの通信を除く）、およびメモリコントローラ２２Ａ、２２Ｂなど]。このインターフェースは任意の所望の形式に設計されてよい。
上述のように、キャッシュコヒーレント通信は、インターフェースに対して定義され得る。一実施形態では、ブリッジ２０Ａとプロセッサコア１８Ａ、１８Ｂ間のインターフェース上の通信は、ＨＴインターフェース上で使用されたものと同様のパケット形式であってよい。他の実施形態では、任意の所望の通信を使用してもい（例えば、バスインターフェース上のトランザクション）。他の実施形態では、プロセッサコア１８Ａ、１８Ｂはブリッジ２０Ａにへのインターフェースを共有してもよい(例えば、共有バスインターフェース）。
【００２５】
概して、ブリッジ２０Ａは、プロセッサコア１８Ａ、１８ＢおよびＨＴ回路２４Ａ〜２４Ｃからの通信を受信し、それらの通信をプロセッサコア１８Ａ、１８Ｂ、ＨＴ回路２４Ａ〜２４Ｃ、および、その通信形式に依存したメモリコントローラ２２Ａ、その通信におけるアドレスなどに送信するように形成され得る。一実施形態では、ブリッジ２０Ａはシステムリクエストキュー（ＳＲＱ）を含み、受信した通信は、ブリッジ２０Ａによって、このＳＲＱに書込まれる。
ブリッジ２０Ａは、ＳＲＱからの通信を、プロセッサコア１８Ａ、１８Ｂ、ＨＴ回路２４Ａ〜２４Ｃ、およびメモリコントローラ２２Ａ中の、１つのあるいは複数の宛先へ送信するためにスケジューリングし得る。ブリッジ２０Ｂは、プロセッサコア１８Ｃ、１８Ｄ、ＨＴ回路２４Ｄ〜２４Ｆおよびメモリコントローラ２２Ｂに関しては同様であり得る。
【００２６】
メモリ１４Ａ、１４Ｂは任意の適切なメモリデバイスを含み得る。例えば、メモリ１４Ａ、１４Ｂは、１つ以上のランバスＤＲＡＭ（ＲＡＭＢＵＳ  ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、スタティックＲＡＭなどを含み得る。コンピュータシステム１０のアドレススペースは、メモリ１４Ａ、１４Ｂ間で分割されてよい。
各ノード１２Ａ、１２Ｂは、アドレスとメモリ１４Ａ、１４Ｂとの対応関係、すなわち、特定のアドレスに対してメモリ要求を転送すべきノード１２Ａ、１２Ｂの決定に用いるメモリマップを（例えば、ブリッジ２０Ａに）備え得る。メモリコントローラ２２Ａ、２２Ｂは、メモリ１４Ａ、１４Ｂにインターフェース接続する制御回路を備え得る。加えて、メモリコントローラ２２Ａ、２２Ｂは、メモリ要求を待ち行列にいれるリクエストキューなどを含み得る。
【００２７】
ＨＴ回路２４Ａ〜２４Ｆは、ＨＴリンクからパケットを受信し、ＨＴリンクにパケットを送信するための、各種バッファおよび制御回路を含み得る。ＨＴインターフェースは、パケットを送信するための一方向のリンクを含む。
各ＨＴ回路２４Ａ〜２４Ｆは、２つのそのようなリンクに結合され得る（１つは送信用、もう１つは受信用）。
所与のＨＴインターフェースは、（例えば、ノード１２Ａ、１２Ｂ間では）キャッシュコヒーレントな方法で動作するか、あるいは、（例えば、周辺装置１６Ａ、１６Ｂ間では）非コヒーレントな方法で動作し得る。図示した実施形態では、ＨＴ回路２４Ｃおよび２４Ｄは、ノード１２Ａ、１２Ｂ間の通信のために、コヒーレントＨＴリンクを介して結合される。これらのＨＴ回路２４Ａ、２４Ｂおよび２４Ｅは使用されておらず、ＨＴ回路２４Ｆは、非コヒーレントリンクを介して周辺装置１６Ａ、１６Ｂに結合される。
【００２８】
周辺装置１６Ａ、１６Ｂは、任意のタイプの周辺装置であってよい。例えば、周辺装置１６Ａ、１６Ｂは、別のコンピュータシステムに結合され、そのコンピュータシステムと通信するためのデバイス（例えば、ネットワークインターフェースカードあるいはモデム）を含み得る。
さらに、周辺装置１６Ａ、１６Ｂは、ビデオアクセラレータオーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ、テレフォニーカード、サウンドカード、およびＧＰＩＢインタフェースカードまたはフィールドバスインタフェースカードなどの様々なデータ収集カードを含んでいてもよい。本明細書において、「周辺装置」という用語は、入力／出力（Ｉ／  Ｏ）デバイスを包含することを意図する点に留意されたい。
【００２９】
一実施形態では、ノード１２Ａ、１２Ｂの各々は、図１に示す回路を備えた単一の集積回路チップであってよい。つまり、各ノード１２Ａ、１２Ｂはチップマルチプロセッサ（ＣＭＰ）であってよい。その他の実施形態は、所望に応じて２つ以上の別々の集積回路としてノード１２Ａ、１２Ｂを実装してよい。任意の集積レベルあるいは個別の部品を使用してもい。
【００３０】
概して、プロセッサコア１８Ａ〜１８Ｄは、所与の命令セットアーキテクチャにおいて定義された命令を実行するように設計された回路を含むことができる。つまり、プロセッサコア回路は、この命令セットアーキテクチャにおいて定義された命令の結果をフェッチし、デコードし、実行し、書込むように構成することができる。
プロセッサコア１８Ａ〜１８Ｄは、スーパーパイプライン、スーパースカラ、あるいはその組合せを含む、任意の所望の構成を含むことができる。その他の構成としては、スカラ、パイプライン型、非パイプライン型などを含み得る。各種実施形態は、アウトオブオーダ投機的実行あるいはインオーダ実行を採用してもよい。プロセッサコアは、１つ以上の命令に対するマイクロコードを含んでもよく、あるいは、上述した任意の構成と組み合わせて、その他の機能を含んでもよい。
各種実施形態は、様々なその他の設計特徴、例えば、キャッシュ、トランスレーションルックアサイドバッファ（ＴＬＢ）などを実装してもよい。ＣＭＰの実施形態では、所与のノード１２Ａ、１２Ｂ内のプロセッサコアは、このＣＭＰに含まれる回路を備え得る。
他の実施形態では、プロセッサコア１８Ａ〜１８Ｄはそれぞれ、別々の集積回路を備え得る。
【００３１】
上述したように、プロセッサコア１８Ａ〜１８Ｄは、命令の実行中に書込みオペレーションを実行するように構成することができる。
各種実施形態では、書込みオペレーションは明示的な書込み命令の結果であっても、宛先としてメモリオペランドを有する他の命令において暗示的であっても、あるいはその両方であってもよい。
概して、書込みオペレーションは、この書込みオペレーションに関連づけられたアドレスによって指定されたメモリ位置における１以上のバイトの更新であり得る。
【００３２】
各種信号は、アサート、アサート停止、生成されているものとして上述されている。通常、信号はソースからレシーバに送信される任意のインディケーションとなり得る。ある信号は、例えばアサートされ得る、あるいはアサート停止され得る１以上のシグナルラインを備え得る。
【００３３】
本実施形態は、ノード間およびノードと周辺装置間の通信のためにＨＴインターフェースを使用するが、他の実施形態では、いずれの通信のために、任意の所望のインターフェースあるいは複数のインターフェースを使用してもよい点に留意されたい。例えば、他のパケットベースのインターフェース、バスインターフェース、各種標準の周辺インターフェース（例えば、周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)、ＰＣＩエクスプレスなど）など、を使用してもよい。
【００３４】
図１に例示したコンピュータシステム１０は２つのノード１２Ａ、１２Ｂを備えているが、その他の実施形態は１つのノード、あるいは２つ以上のノードを実装してもよい点に留意されたい。同様に、各ノード１２Ａ、１２Ｂは、各種実施形態において、２つ以上のプロセッサコアを含み得る。
ある実施形態では、ノード内の各プロセッサコアのモニタユニット２６は、同じノードにあるその他の各プロセッサコアからモニタリングされたキャッシュラインのアドレスを受信するように構成されてもよく、また、モニタリングされたキャッシュラインの各々に対する書込みオペレーションをモニタリングするように構成されてもよい。
他の実施形態では、プロセッサコアのサブセットが識別され、そのサブセットは、互いのモニタリングされたキャッシュラインに対する書込みオペレーションを検出するように構成され得る。
コンピュータシステム１０の各種実施形態では、ノード１２Ａ、１２ＢごとにＨＴインターフェースの数が異なってもよく、異なる数の周辺装置が１つまたは複数のノードに結合される。
【００３５】
図２〜図４は、各種命令を実行するためのプロセッサコア１８Ａ〜１８Ｄの一実施形態の動作を例示したフローチャートである。図５は、プロセッサコア１８Ａ〜１８Ｄの一実施形態の例示的状態を示した状態機械である。
以下の図２〜図５についての考察では、プロセッサコア１８Ａが例として使用されることになるが、プロセッサコア１８Ｂ〜１８Ｄは同様である。
図２〜図４を介して例示した各命令に対して、命令を実行するプロセッサコア１８Ａ〜１８Ｄは、簡素化と簡略化のために図２〜図４には例示していない他のオペレーション（例えば、例外のチェックなど）を実行してもよい。
【００３６】
図２を参照すると、ｍｏｎｉｔｏｒ命令を実行するプロセッサコア１８Ａの一実施形態の動作を例示したフローチャートが示されている。プロセッサコア１８Ａは、図２に示すオペレーションを実行するために、回路構成および／あるいはマイクロコードを含んでもよい。
図２に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。さらに、組合せ論理により、プロセッサコア１８Ａにおいて、各ブロックを同時に実行することもできる。
各種実施形態において、所望に応じて各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および／または、フローチャートに例示した動作を複数のクロックサイクルにわたってパイプライン化してもよい。
【００３７】
本実施形態では、モニタリングされるキャッシュラインのアドレスは、ＥＡＸレジスタ（あるいは、プロセッサコア１８ＡがＡＭＤ６４（商標）拡張命令を実装していれば、ＲＡＸレジスタ）内にあると定義される。
他の実施形態では、プロセッサコア１８Ａはモニタリングされるキャッシュラインのアドレスを生成するために、２つ以上のオペランドを追加してもよい。
ある実施形態では、プロテクトモードがイネーブルであれば、ＥＡＸレジスタのコンテンツは、セグメントレジスタの１つにおいて、線形アドレスに対して定義されたセグメントベースのアドレスに追加されるオフセットである。
他の実施形態では、セグメントベースのアドレスはゼロであり、ＥＡＸレジスタのコンテンツは線形アドレスに相当し得る。
ページングがイネーブルであれば（決定ブロック４０において、”ｙｅｓ”）、アドレスは仮想アドレスであり（例えば、線形アドレス）、この仮想アドレスはページングメカニズムを介して物理アドレスに変換される（ブロック４２）。この物理アドレスは、モニタユニット２６Ａがモニタリングするアドレスであってよい。いずれの場合でも、プロセッサコア１８Ａは、モニタリングされるアドレスをモニタユニット（２６Ａ）のＭＡｄｄｒレジスタ２８Ａに書き込むことができる（ブロック４４）。加えて、プロセッサコア１８Ａは、他のプロセッサコア１８Ｂにアドレスを通信して送ることができる（ブロック４６）。
【００３８】
他の実施形態では、プロセッサコア１８Ａは、１つ以上の別のプロセッサコアにアドレスを通信することができる。プロセッサコア１８Ａは、モニタユニット２６Ａを”アーム(arm)”してもよい（ブロック４８）。
概して、モニタユニット２６Ａをアームするということは、ｍｏｎｉｔｏｒ命令が実行されたことを示す状態にモニタユニット２６Ａを置くことを指す（従って、モニタリングされるアドレスはモニタユニット２６Ａに既に確立されている）。以下に詳細を記載しているように、このアームされた状態を、ＭＷａｉｔ命令への応答を決定するために使用してもよい。
【００３９】
図３は、ＭＷａｉｔ命令を実行するために、プロセッサコア１８Ａの一実施形態の動作を例示したフローチャートである。プロセッサコア１８Ａは、図３のオペレーションを実行するために、回路構成および／あるいはマイクロコードを含んでもよい。
図３に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。さらに、組合せ論理により、プロセッサコア１８Ａにおいて、各ブロックを同時に実行することもできる。 各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および／または、フローチャートに例示した動作を、所望に応じて、各種実施形態において、複数のクロックサイクルにわたってパイプライン化してもよい。
【００４０】
モニタユニット２６Ａがすでに実行されたｍｏｎｉｔｏｒ命令を介してアームされていれば（および、続いてキャッシュラインの更新が検出されなければ、つまり、決定ブロック５０において”ｙｅｓ”）、プロセッサコア１８Ａは本実施形態において、スリープ状態に入り得る（ブロック）。
別の実施形態では、ＭＷａｉｔ命令に応答して、様々な状態に入ることができる（例えば、既述の、実装に依存した最適化状態）。
スリープ状態は電力節約状態であり、この状態においてプロセッサコア１８Ａは電力消費の低減を試みる。ある実施形態では、プロセッサコア１８Ａは、スリープ状態において命令の実行を停止することができる。
他の種々の実施形態では、スリープ状態は電力消費を低減するために、以下のうちの１つ以上を含む。それらは、プロセッサコア１８Ａが動作するクロック周波数を減らす、様々な回路に対してクロックをゲーティングする、クロックをオフにする、位相ロックループあるいは他のクロック生成回路をオフにする、プロセッサコア（モニタユニットは除く）の電源を切る、などのように構成してもよい。
スリープステートは、例えば、パソコンシステムにおいて、パワーマネージメントの各種実装品に使用される任意のストップグラント（stop grant）状態であってよい。他の実施形態では、他の状態を使用してもよい。例えば、プロセッサコア１８Ａがマルチスレッド機能を実装している場合、プロセッサコア１８Ａは、モニタリングされたキャッシュラインの更新が検出されるまで、ＭＷａｉｔ命令の実行後に別のスレッドを実行するよう切替えるようにしてもよい。
【００４１】
モニタユニット２６Ａがア−ムされていなければ（決定ブロック５０において、”ｎｏ”）、プロセッサコア１８ＡはＭＷａｉｔ命令については何のアクションも起こさず、ＭＷａｉｔ命令に続く次の命令とともに実行を継続し得る。
モニタリング命令がＭＷａｉｔ命令の前に実行されていなければ、モニタユニット２６Ａはアームすることができない（しかし、他の命令はｍｏｎｉｔｏｒ命令とＭＷａｉｔ命令との間に実行することができる）。加えて、ｍｏｎｉｔｏｒ命令はすでに実行されているが、ＭＷａｉｔ命令を実行する前に、モニタリングされたキャッシュラインの更新が検出されていれば、モニタユニット２６Ａはアームすることができない。
【００４２】
図４は、書込みオペレーションを実行するために、プロセッサコア１８Ａの一実施形態の動作を例示したフローチャートを示す。プロセッサコア１８Ａは、図４に示すオペレーションを実行するために、回路構成および／あるいはマイクロコードを含んでもよい。図４に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。
さらに、組合せ論理により、プロセッサコア１８Ａにおいて、各ブロックを同時に実行することもできる。 各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および／または、フローチャートに例示した動作を、所望に応じて、各種実施形態において、複数のクロックサイクルにわたってパイプライン化してもよい。
【００４３】
モニタユニット２６Ａは、書込みオペレーションのアドレスをレジスタ２８Ｂ（ＭＡｄｄｒＳアドレスを書込むレジスタ）のアドレスと比較する。書込みアドレスがＭＡｄｄｒＳアドレスと一致すれば（決定ブロック５４において、”ｙｅｓ”）、モニタユニット２６Ａは、プロセッサコア１８ＢにＷａｋｅｕｐ−ＳＴ信号をアサートし得る（ブロック５６）。
いずれの場合でも、プロセッサコア１８Ａはメモリを更新することで書込みを終了することができる（ブロック５８）。
メモリは、キャッシュを実装するプロセッサコア１８Ａの実施形態において、キャッシュにおいて更新され得る。加えて、キャッシュコヒーレンシーは、コンピュータシステム１０に実装されたコヒーレンシープロトコルに従い維持され得る。
【００４４】
図５は、ｍｏｎｉｔｏｒ／Ｍｗａｉｔ命令の実装に関係したプロセッサコア１８Ａの例示的状態を示した状態機械図である。プロセッサコア１８Ａの各種実施形態によって、他の目的のために他の状態を実装してもよい。
図５は、ノーマル状態６０、アーム状態６２、およびスリープ状態６４を例示する。
【００４５】
ノーマル状態６０は、命令が実行され、（ｍｏｎｉｔｏｒ／ＭＷａｉｔ命令に関して定義されたように）キャッシュラインのモニタリングが実行されないプロセッサコア１８Ａの状態とすることができる。
アーム状態６２は、モニタユニット２６Ａがモニタリングされるキャッシュラインのアドレスで更新され（ｍｏｎｉｔｏｒ命令の実行を介して）、ＭＷａｉｔ命令の次の実行を待つ状態であり得る。
スリープ状態６４は、上述したように、電力節約状態である。上述のように、他の実施形態では、スリープ状態６４の代わりに他の状態を使用してもよい。
【００４６】
プロセッサコア１８Ａがノーマル状態６０にあり、ｍｏｎｉｔｏｒ命令が実行されれば、状態機械はアーム状態６２に変わる。
アーム状態６２では、モニタリングされたキャッシュに対するインバリデートプローブが検出されれば（ＷＥｘｉｔアサート）、あるいは、アサートされたＷａｋｅｕｐ−ＳＴ信号がモニタユニット２６Ａによって受信されれば、状態機械はノーマル状態６０に戻る。この状態の変化は、ＭＷａｉｔ命令が実行される前にモニタリングされたキャッシュラインが更新される場合を表す。
他方で、状態機械がアーム状態６２にある間にＭｗａｉｔ命令が実行されれば、この状態機械はスリープ状態６４へと変化する。
この状態機械は、モニタリングされたキャッシュライン（ＷＥｘｉｔ）に対するインバリデートプローブの検出、モニタユニット２６ＡへのＷａｋｅ−ｕｐ信号のアサート（Ｗａｋｅｕｐ−ＳＴ）、あるいは、ＭＷａｉｔ命令および／あるいはプロセッサコアの実装に対して定義された任意のその他の終了条件（Ｏｔｈｅｒ−Ｅｘｉｔ）に応答して、スリープ状態６４からノーマル状態６０へ変化し得る。
その他の終了条件は実施形態によって変化してもよいが、その他の終了条件として、プロセッサコア１８Ａに対する外部割込みのデリバリ、プロセッサコア１８Ａのリセットを含み得る。
【００４７】
図６は、同一ノード１２Ａにおけるプロセッサコア（例えば、プロセッサコア１８Ａ）がモニタリングされたキャッシュラインを更新するときに、プロセッサコア１８Ａの動作を示した例である。
プロセッサコア１８Ａによって実行されるコードを、下線を付した“プロセッサコア１８Ａ、ノード１２Ａ”との見出しの下方に示す。プロセッサコア１８Ｂによって実行されるコードを、下線を付した“プロセッサコア１８Ｂ、ノード１２Ａ”との見出しの下方に示す。プロセッサコア１８Ａは、ｍｏｎｉｔｏｒ命令を実行し、モニタユニット２６Ａをモニタリングし、アームするためのキャッシュラインのアドレス”Ａ”を確立する。
次に、このコードはアドレスＡに対するチェックを含む（図６において、”チェック［Ａ］”と記される）。
このチェックにおいて、モニタリングされたキャッシュライン内のメモリ位置を読出し、そのメモリ位置を所望の状態と比較する。
所望の状態がメモリ位置にあれば、チェックはＭＷａｉｔ命令のまわりに分岐し、次の処理を継続する。
このチェックにより、ｍｏｎｉｔｏｒ命令の実行との競合条件で生じたキャッシュラインの更新が検出され得る。
例では、所望の状態がキャッシュラインに存在せず、プロセッサコア１８ＡはＭＷａｉｔ命令を実行する。
よって、プロセッサコア１８Ａはスリープ状態に入る（矢印７０）。
【００４８】
プロセッサコア１８ＢはアドレスＡに対して書込みオペレーションを実行し、（モニタユニット２８Ｂにおいて）この書込みオペレーションのアドレスがプロセッサコア１８Ａからのシャドーされたモニタリングアドレス（shadowed montor address:ＭＡｄｄｒＳ）と一致することを検出する。従って、プロセッサコア１８Ｂ（および、より詳細にはモニタユニット２６Ｂ））は、Ｗａｋｅｕｐ−ＳＴ信号をアサートすることでプロセッサコア１８Ａ（および、より詳細にはモニタユニット２６Ａ）に信号を送る。
プロセッサコア１８Ａは再度アドレスＡのチェックを行い（図６のチェック［Ａ］）、キャッシュラインにおいて所望の状態を検出する。従って、プロセッサコア１８Ａは他の命令とともに実行を継続する。
【００４９】
図７は、その他のノード１２Ｂにおけるプロセッサコア（例えば、プロセッサコア１８Ｃ）がモニタリングされたキャッシュラインを更新するときに、プロセッサコア１８Ａのオペレーションを示した例である。
プロセッサコア１８Ａによって実行されるコードを、下線を付した“プロセッサコア１８Ａ、ノード１２Ａ”との見出しの下方に示す。プロセッサコア１８Ｃによって実行されるコードを、下線を付した“プロセッサコア１８Ｃ、ノード１２Ｂ”との見出しの下方に示す。加えて、プロセッサコア１８Ｃとプロセッサコア１８Ａ間の通信を、図７の中央部分に示す。
図６の例と同様に、プロセッサコア１８Ａは、ｍｏｎｉｔｏｒ命令を実行し、モニタユニット２６Ａをモニタリングしアームするためのキャッシュラインのアドレス”Ａ”を確立し、このアドレス”Ａ”をチェックし、ＭＷａｉｔ命令を実行する。
従って、プロセッサコア１８Ａはスリープ状態に入る（矢印７４）。
【００５０】
プロセッサコア１８ＣはアドレスＡに対して書込みオペレーションを実行する。本実施形態では、プロセッサコア１８Ｃはプロセッサコア１８Ａによってモニタリングされるアドレスのシャドウコピーを有しておらず、よって、コヒーレンシーオペレーションの通常の送信を継続して書込みを終了する。具体的には、プロセッサコア１８Ｃはノード１２Ｂにおいてブリッジ２０Ｂにインバリデートプローブを送信する（矢印７６）。
続いてブリッジ２０Ｂはノード１２Ａにインバリデートプローブを送信する（また、そのインバリデートプローブはブリッジ２０Ａに到達する）。続いてブリッジ２０Ａはプロセッサコア１８Ａにインバリデートプローブを送信し、これによりインバリデートプローブのアドレスがレジスタ２８Ａのアドレスに一致することが検出される。この結果、プロセッサコア１８Ａはスリープ状態から抜け出る（矢印７８）。プロセッサコア１８Ａは再度アドレスＡのチェックを行い（図７のチェック［Ａ］）、キャッシュラインの所望の状態を検出する。従って、プロセッサコア１８Ａは他の命令とともに実行を継続する。
【００５１】
上述した開示を完全に理解すれば、多くの変形および修正が当業者には明らかとなるであろう。請求の範囲は、そのような変形および修正を全て包含するものと解釈されることを意図する。
【産業上の利用可能性】
【００５２】
概して、本発明は、プロセッサおよび変更に対するキャッシュラインのモニタリングに利用可能である。
【図面の簡単な説明】
【００５３】
【図１】複数のプロセッサコアを含むコンピュータシステムの一実施形態のブロック図。
【図２】ｍｏｎｉｔｏｒ命令を実行する間のプロセッサコアの一実施形態の動作を例示したフローチャート。
【図３】ＭＷａｉｔ命令を実行する間のプロセッサコアの一実施形態の動作を例示したフローチャート。
【図４】書込み命令を実行する間のプロセッサコアの一実施形態の動作を例示したフローチャート。
【図５】キャッシュラインの更新を待つ間に低電力状態に入るためのプロセッサコアの一実施形態の動作を例示した状態機械図。
【図６】同一ノードのプロセッサコアがモニタリングされたキャッシュラインを更新したときのプロセッサコアの一実施形態の動作を例示した説明図。
【図７】別ノードのプロセッサコアがモニタリングされたキャッシュラインを更新したときのプロセッサの一実施形態の動作を例示した説明図。
【図１】
2008515096.tif 000003
【図２】
2008515096.tif 000004
【図３】
2008515096.tif 000005
【図４】
2008515096.tif 000006
【図５】
2008515096.tif 000007
【図６】
2008515096.tif 000008
【図７】
2008515096.tif 000009
【国際調査報告】
2008515096.tif 000010
2008515096.tif 000011