JP4982375B2 - 複数のコアを介してのモニタリングされたキャッシュラインの共有 - Google Patents

複数のコアを介してのモニタリングされたキャッシュラインの共有 Download PDF

Info

Publication number
JP4982375B2
JP4982375B2 JP2007534659A JP2007534659A JP4982375B2 JP 4982375 B2 JP4982375 B2 JP 4982375B2 JP 2007534659 A JP2007534659 A JP 2007534659A JP 2007534659 A JP2007534659 A JP 2007534659A JP 4982375 B2 JP4982375 B2 JP 4982375B2
Authority
JP
Japan
Prior art keywords
processor core
address range
update
state
indication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007534659A
Other languages
English (en)
Other versions
JP2008515096A5 (ja
JP2008515096A (ja
Inventor
ティー. クラーク マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2008515096A publication Critical patent/JP2008515096A/ja
Publication of JP2008515096A5 publication Critical patent/JP2008515096A5/ja
Application granted granted Critical
Publication of JP4982375B2 publication Critical patent/JP4982375B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、プロセッサ技術に関し、より詳細には、変更のためにキャッシュラインのモニタリングを行う技術に関する。
アプリケーションプログラムの多くは、他のアプリケーションと相互作用するように書かれる。さらに、アプリケーションプログラムの多くは、マルチスレッドアプリケーションとして書かれる。マルチスレッドアプリケーションは、相対的に単独で実行するように設計された複数のコードシーケンス(スレッド)を有する。各スレッド(あるいは、アプリケーション)は、様々な方法で相互に通信可能である。
簡潔に言えば、本明細書において”スレッド”という用語は、マルチスレッドアプリケーションからのコードシーケンス指し、あるいは、アプリケーション自体がマルチスレッドでなければ、アプリケーション全体を指すものとして使用されることになる。
多くの場合、スレッド間の通信を行うためにメモリ位置(メモリロケーション)が使用される。例えば、あるメモリ位置は、メモリのより大きな領域へのアクセスを制御するため、コンピュータシステムの別のリソース(周辺装置など)へのアクセスを制御するため、特定のコードシーケンス(多くの場合、”クリティカルセクション(critical section)”と呼ばれる)を実行する能力を制御するため、などに使用されるセマフォ(semaphore)を記録するように定義され得る。上述したものはいずれも、以下で保護リソース(protected resource)と呼ばれる。
通常、スレッドはセマフォにアクセスし、その状態をチェックできる。セマフォの状態が、スレッドが保護リソースを制御し得ることを示していれば、スレッドはセマフォの状態を変更して、スレッドが保護リソースを制御することを示すようにしてもよい。
セマフォの状態が、別のスレッドが保護リソースを制御していることを示していれば、スレッドはセマフォの状態が変わるまでセマフォをチェックし続けてもよい(例えば、それが保護リソースでなされたことを示すセマフォを書込む他のスレッドによって)。メモリ位置は、スレッド間に別のメッセージを送信するように(あるいは、メッセージが利用可能であることを示すように)使用してもよい。
ある所与のスレッドが別のスレッドからのメッセージを待っている場合、その所与のスレッドは、メッセージが利用可能であることを示す値でメモリ位置が記されるまでメモリ位置のチェックを継続し得る。その他の多くの例が存在する。そのような例としては、あるスレッドが別のスレッドと通信するためにメモリ位置を使用するといったものが挙げられる。
通常、あるスレッドがある所望の状態を求めてメモリ位置をチェックし、そのメモリ位置では所望する状態が見つからないときに、このスレッドは”スピンループ”に入る。この”スピンループ”状態では、スレッドは所望の状態を求めてメモリ位置へのアクセスを繰り返し行う。
メモリ位置が最終的に所望の状態で書かれたときにスレッドはこのスピンループから抜け出ることができる。スレッドがスピンループの状態にある間、このスレッドはあまり有益な仕事をしない。しかし、スレッドを実行中のプロセッサはスピンループを実行して電力を消費する。
いくつかの命令セットアーキテクチャは、プログラマがスピンループにおいて命令を使用する場合に、あるいは、スレッドがメモリ位置で所望の状態を待っているような場合に、プロセッサがそのような状態を最適化できるよう定義された命令を有する。例えば、(ストリーミングSIMD拡張命令3あるいはSSE3を備えた)x86命令セットは、MONITOR/MWAITの命令ペアを定義する。MONITOR命令は、プロセッサが更新をモニタリングしているアドレスレンジ(address range)を確立するように使用される(例えば、別のプロセッサによって実行された書込みによって)。
MWAIT命令は、更新を待つ間、プロセッサを”実装に依存した最適化状態(implementation-dependent optimized state)”に入れるように使用される。プロセッサは、モニタリングされたアドレスレンジにおける書込みに応答して(および、特定の割込み、および、モニタリングされたアドレスレンジとは関係のないその他の理由によって)、この実装に依存した最適化状態から抜け出る。通常、プロセッサは、プロセッサに実装された通常のコヒーレンシーメカニズムを介して更新を知らされる。
一実施形態では、システムは第1プロセッサコアと第2プロセッサコアとを含む。第1プロセッサコアは、この第1プロセッサコアが更新をモニタリングをしているアドレスレンジを識別するアドレスレンジインディケーションを送信するように構成される。
この第1プロセッサコアは、更新のために第1プロセッサコアにアドレスレンジをモニタリングさせるように定義された第1の命令の実行に応答して、このアドレスレンジインディケーションを送信するように構成される。
第2プロセッサコアはアドレスレンジインディケーションを受信するように結合されており、アドレスレンジにおいて少なくとも1バイトを更新する書込み命令の実行に応答して、第1プロセッサコアに信号を送信するように構成されている。
第1プロセッサコアは第2プロセッサコアからの信号を受信するように結合されており、この信号に応答して第1の状態から抜け出るように構成されている。この第1の状態とは、第1プロセッサコアがアドレスレンジにおいて更新を待っている状態である。
別の実施形態においては、ある方法が考察される。
その方法は、第1プロセッサコアが、第1プロセッサコアから第2プロセッサコアまでの更新をモニタリングしているアドレスレンジを識別するアドレスレンジインディケーションを送信するステップを含み、このアドレスレンジインディケーションの送信ステップは、更新のために第1のプロセッサコアにアドレスレンジをモニタリングさせるように定義された第1の命令の実行に応答するものであり、第2プロセッサコアの第2アドレスレンジにおいて、少なくとも1バイトを更新する書込み命令を実行するステップと、この書込み命令に応答して、第1プロセッサコアに信号を送信するステップと、この信号に応答して、第1プロセッサコアが、アドレスレンジにおいて更新を待っている第1の状態から抜け出るステップと、を含むものである。
また別の実施形態では、モニタユニットを含むプロセッサコアが考察される。このプロセッサコアは、第1の命令に応答して、更新のためにアドレスレンジをモニタリングするように構成される。このプロセッサコアは、アドレスレンジの更新を待つための第1の状態に入るように構成される。
このモニタユニットは、第1の命令の実行に応答して第2プロセッサコアに対するアドレスレンジを識別するアドレスレンジインディケーションを送信するように構成されるとともに、第2プロセッサコアがアドレスレンジにおいて少なくとも1バイトを更新していることを識別する第2プロセッサコアからの信号を受信するように構成される。
プロセッサコアは、この信号に応答して、第1の状態から抜け出るように構成される。
添付の図面を参照して本発明を説明する。なお、本発明は、様々変形やその他の形態を取り得るが、ある特定の実施形態を例として図示し、かつ本明細書に詳細に記載する。 しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれるすべての変形例、均等物および代替例を含むことを意図することが理解されたい。
以下に、x86命令セットアーキテクチャ(MONITORおよびMWAIT命令を定義するSSE3拡張命令を少なくとも含み、また、AMD64(商標)拡張命令などの他の拡張命令あるいはその他の任意の拡張命令を含み得る)を実装したプロセッサを含む例示的な実施形態を記載する。他の実施形態では、任意の命令セットアーキテクチャを実装でき、モニタリングされるアドレスレンジ(例えば、キャッシュラインあるいはその他の任意のアドレスレンジ)を確立するように定義される1つ以上の命令を含むことができる。これらの命令は、プロセッサコアをモニタリングされたアドレスレンジ内で少なくとも1バイトの更新を待つ状態に入らせるように定義されたものである。
つまり、プロセッサコアは、1つあるいは複数の命令の実行に応答して、アドレスレンジをモニタリングし、このモニタリングされたアドレスレンジ内で更新を待つ状態に入ることができる。そのような命令の例として、このMONITORおよびMWAIT命令が使用されることになる。明細書における便宜上、MONITOR命令はmonitor命令(大文字ではない)と称し、MWAIT命令はMWait命令(MとWだけを大文字にする)と称することとする。
図1は、コンピュータシステム10の一実施形態のブロック図を示す。図示した実施形態では、コンピュータシステム10は、ノード12A、12B、メモリ14A、14B、および周辺装置16A、16Bを含む。このノード12A、12Bは結合されており、ノード12Bは周辺装置16A、16Bに結合されている。
ノード12A、12Bの各々は、対応するメモリ14A、14Bに結合されている。ノード12Aはブリッジ20Aに結合されたプロセッサコア18A、18Bを備えている。このブリッジ20Aはさらに、メモリコントローラ22Aと複数のハイパートランスポート(HyperTransport)(商標)(HT)インターフェース回路24A〜24Cに結合されている。
同様に、ノード12Bはブリッジ20Bに結合されたプロセッサコア18C、18Dを備えている。このブリッジ20Bはさらに、メモリコントローラ22Bと複数のハイパートランスポート(商標)(HT)インターフェース回路24D〜24Fに結合されている。
このHT回路24C、24Dは(本実施形態ではHTインターフェースを介して)結合されており、また、HT回路24Fは周辺装置16Aに結合されている。この周辺装置16Aは(本実施形態ではHTインターフェースを使用して)デイジーチェーン構造で周辺装置16Bに結合されている。メモリコントローラ22A、22Bは、対応のメモリ14A、14Bに結合されている。
図1にプロセッサコア18A、18Bの一実施形態の更なる詳細を示す。
各プロセッサコア18C、18Dは同様のものであってよい。図示された実施形態では、プロセッサコア18Aは、レジスタ28A、28Bおよびコンパレータ30A、30Bを備えたモニタユニット26Aを含む。レジスタ28Aはコンパレータ30Aに結合されている。このコンパレータ30Aはさらに、インターフェースからブリッジ20Aまでのインバリデートプローブ(invalidating prove)(P−Inv)のアドレスを受信するように結合されている。
レジスタ28Bはコンパレータ30Bに結合されている。このコンパレータ30Bはプロセッサコア18Aからのストアアドレス(StAddr)を受信するように結合されている。コンパレータ30Bの出力はWakeup−ST信号としてモニタユニット26Bに結合される。
図示された実施形態では、このモニタユニット26Bは、レジスタ28A、28Bおよびコンパレータ30A、30Bにそれぞれ類似したレジスタ28C、28Dおよびコンパレータ30C、30Dを備える。
コンパレータ30Dの出力は、Wakeup−ST信号としてモニタユニット26Aに結合される。レジスタ28Aはレジスタ28Dに結合されるとともに、レジスタ28Bはレジスタ28Cに結合される。
プロセッサコア18A〜18Dの各々は、monotor命令の実行に応答してアドレスレンジをモニタリングするように構成してもよい。加えて、このモニタリングプロセッサコア18A〜18Dは、モニタリングされたアドレスレンジを識別するアドレスレンジインディケーションを少なくとも1つの別のプロセッサコア18A〜18Dに送信できる(”受信プロセッサ”)。
例えば、例示の実施形態では、モニタリングプロセッサコア18A〜18Dは、同一ノード12A、12Bにおける他のプロセッサコア18A〜18Dにアドレスレンジインディケーションを送信してもよい。つまり、プロセッサコア18Aは、そのアドレスレンジインディケーションをプロセッサコア18Bに(逆の場合も同様に)送信することができ、また、プロセッサ18Cはそのアドレスレンジインディケーションをプロセッサコア18Dに(逆の場合も同様に)送信することができる。
受信プロセッサコア18A〜18Dは、命令の実行に応答して受信プロセッサコア18A〜18Dが動作することになるアドレスレンジに対する書込みオペレーションのモニタリングを行う。そのような書込みが検出されれば、受信プロセッサコア18A〜18Dはモニタリングプロセッサコア18A〜18Dに信号を送ることができる。例えば、例示の実施形態では、受信プロセッサコア18A〜18Dは、モニタリングプロセッサコア18A〜18DにWakeup−ST信号をアサートしてもよい。このモニタリングプロセッサコア18A〜18Dは、その信号に応答して、MWait命令の実行によって入った状態から(まだその状態にあるとすれば)抜け出ることができる。
ある実施形態では、モニタリングされたアドレスレンジに対する書込みオペレーションの検出を信号で伝える受信プロセッサコアにより、モニタリングプロセッサコアは、通常の通信インターフェースを介してコヒーレンシー通信を送信した場合よりも、その状態からより早く抜け出ることができる。
概して、アドレスレンジインディケーションは、モニタリングされたアドレスレンジを定義する任意の値であってよい。例えば、アドレスレンジは、メモリの連続するバイトのブロックに対応し得る。ブロックのサイズが固定されている場合(例えば、あるキャッシュライン、あるいはある固定数のキャッシュライン、あるいはあるキャッシュラインの一部)、ブロックのベースアドレスを使用してもよい。同様に、サイズは可変であってもプロセッサコア18A〜18Dの各々が同一サイズにプログラムされていれば、ベースアドレスを使用してもよい。他の実施形態では、ベースアドレスとサイズ、あるいはベースアドレスと終了アドレスはアドレスレンジを識別できる。
この議論の残りの部分では、キャッシュラインがアドレスレンジのサイズであり、キャッシュラインのベースアドレスがアドレスレンジインディケーションとして使用される実施形態を例として使用する。しかし、他の実施形態では、任意のサイズのアドレスレンジ、およびこれに対応する任意のアドレスレンジインディケーションを使用してもよい。
プロセッサコア18A、18Bは、モニタユニット26A、26Bを含めて、図1により詳細に例示されている。モニタユニット26A(およびそのレジスタ28A、28B、およびコンパレータ30A、30B)の動作を以下に詳細に記載する。また、モニタユニット26Bの動作は同様であり得る。レジスタ28Aは、モニタユニット28AAによってモニタリングされるアドレスを記録する(MAddr)。つまり、プロセッサコア18Aは、プロセッサコア18Aがmonitor命令を実行する間に生成されたアドレスでレジスタ28Aに書き込むことができる。
コンパレータ30Aを介して、このアドレスにより示されるキャッシュラインの更新を示す任意の通信によりプロセッサコア18Aに供給されたアドレスと、MAddrと、を比較する。例えば、図示した実施形態では、インバリデートプローブ(P−Inv)を更新のインディケーション(更新を表すもの)として用いることができる。
概して、プローブは、コヒーレンシスキームで使用される通信であり、プローブのレシーバが、このプローブによって識別されたキャッシュラインを有しているかどうかを判断し、キャッシュラインの状態の変更が検知された場合は、その状態の変更を特定する(また、場合によっては、変更されたキャッシュラインをメモリあるいはリクエスタに戻すように要求する)。
インバリデートプローブは、キャッシュラインの状態変更が無効であることを示すものである。ある特定のコヒーレンシースキームにおいて、インバリデートプローブを、ソースデバイス(例えば、プロセッサ、周辺装置など)によって更新される他のキャッシュにおいてキャッシュラインを無効にするように用いることもできる。その他のインディケーションを使用してもよい。例えば、インバリデートプローブに加えて、あるいはインバリデートプローブの代わりに、書込み(write)オペレーションを使用してもよい。
他の例として、読出しオペレーションのソースがキャッシュラインを変更しようとしていることを示す読出しオペレーションが更新を示してもよい。多くの場合、そのような読出しオペレーションは、オペレーションの変更を目的とした読出し、読出し変更オペレーション、あるいは読出し排他オペレーションと呼ばれる。別の実施形態では、MAddrは、プローブが更新を示していなくても、プロセッサコア18Aから受信した任意のプローブの各アドレスと比較され得る。そのような比較をすることで、MWait状態からプロセッサコア18Aを抜けさせ、(命令シーケンスにおいて、MWait命令に続く命令を介して)キャッシュラインを再度読出させることができる。
このようにして、ソフトウェアは、プローブをもたらしたモニタリングされたキャッシュラインへのアクセスのソースが、キャッシュラインの排他的コピーを受け取らないようにすることができる(これにより、インバリデートプローブを生じさせずに、その後の更新が可能となる)。
コンパレータ30Aによってマッチングが検出された場合、モニタユニット26Aは、MWait命令に応答して入った状態からプロセッサコア18Aを抜けさせることができる(例えば、図1のWExit信号のアサートを介して)。プロセッサコア18Aは、MWait命令に続いて、命令の実行を継続してもよい。ソフトウェアは、モニタリングされるキャッシュライン内の値をチェックするために、MWait命令に続いて命令を含んでもよい。また、所望の状態が検知されなければ、monitor命令/MWait命令に戻り、再度その状態に入る。
モニタユニット26Aはまた、モニタリングされたキャッシュラインのアドレスをモニタユニット26Bに送信することができる。図示の実施形態では、モニタユニット26Aは、レジスタ28Aからのアドレスを直接的にモニタユニット26Bに出力し得る。他の実施形態では、他の方法でアドレスを送信してもよい。例えば、アドレスは、インターフェースを越えてブリッジ20Aに送信されてもよく(例えば、アドレスがモニタリングされたアドレスであることを示すよう、コード化された通信として)、また、ブリッジ20Aはプロセッサコア18Bにこの通信を送信してもよい。
同様に、モニタユニット26Aは、モニタユニット26Bによってモニタリングされるアドレスを受信し得る。例示の実施形態では、モニタユニット26Aは、モニタユニット26Bからのモニタリングされたアドレスのシャドウコピーを記録するよう、レジスタ26Bを含む。モニタユニット26Aは、MAddrSアドレスを、プロセッサコア18Aによって実行された書込みオペレーションのアドレス(図1中のStAddr)と比較する。
MAddrSアドレスによって示されたキャッシュラインへの書込みが検出されれば(コンパレータ30B)、モニタユニット26Aはモニタユニット26BにWakeup−ST信号をアサートし得る。他の実施形態では、モニタユニット26Bは、レジスタ28Cの出力をモニタユニット26Aに継続的に供給し得る。また、レジスタ28Bはそのような実施形態には実装され得ない。
同様に、モニタユニット26Bは、モニタユニット26Aに対してWakeup−ST信号を生成し得る。モニタユニット26Aは、モニタユニット26BからのアサートされたWakeup−ST信号の受信に応答して、キャッシュラインに対するインバリデートプローブの検出と同様に、MWait命令に応答して入った状態から抜けるように構成される。
概して、プロセッサコア18Aは、コンピュータシステム10の他の構成要素と通信するために、ブリッジ20Aへのインターフェースを使用することができる[例えば、周辺装置16A、16B、プロセッサコア18B〜18D(但し、モニタリングされたアドレスのシャドウコピーおよびWakeup−ST信号の、上述したプロセッサコア18Bとの通信を除く)、およびメモリコントローラ22A、22Bなど]。このインターフェースは任意の所望の形式に設計されてよい。
上述のように、キャッシュコヒーレント通信は、インターフェースに対して定義され得る。一実施形態では、ブリッジ20Aとプロセッサコア18A、18B間のインターフェース上の通信は、HTインターフェース上で使用されたものと同様のパケット形式であってよい。他の実施形態では、任意の所望の通信を使用してもい(例えば、バスインターフェース上のトランザクション)。他の実施形態では、プロセッサコア18A、18Bはブリッジ20Aにへのインターフェースを共有してもよい(例えば、共有バスインターフェース)。
概して、ブリッジ20Aは、プロセッサコア18A、18BおよびHT回路24A〜24Cからの通信を受信し、それらの通信をプロセッサコア18A、18B、HT回路24A〜24C、および、その通信形式に依存したメモリコントローラ22A、その通信におけるアドレスなどに送信するように形成され得る。一実施形態では、ブリッジ20Aはシステムリクエストキュー(SRQ)を含み、受信した通信は、ブリッジ20Aによって、このSRQに書込まれる。
ブリッジ20Aは、SRQからの通信を、プロセッサコア18A、18B、HT回路24A〜24C、およびメモリコントローラ22A中の、1つのあるいは複数の宛先へ送信するためにスケジューリングし得る。ブリッジ20Bは、プロセッサコア18C、18D、HT回路24D〜24Fおよびメモリコントローラ22Bに関しては同様であり得る。
メモリ14A、14Bは任意の適切なメモリデバイスを含み得る。例えば、メモリ14A、14Bは、1つ以上のランバスDRAM(RAMBUS DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR)SDRAM、スタティックRAMなどを含み得る。コンピュータシステム10のアドレススペースは、メモリ14A、14B間で分割されてよい。
各ノード12A、12Bは、アドレスとメモリ14A、14Bとの対応関係、すなわち、特定のアドレスに対してメモリ要求を転送すべきノード12A、12Bの決定に用いるメモリマップを(例えば、ブリッジ20Aに)備え得る。メモリコントローラ22A、22Bは、メモリ14A、14Bにインターフェース接続する制御回路を備え得る。加えて、メモリコントローラ22A、22Bは、メモリ要求を待ち行列にいれるリクエストキューなどを含み得る。
HT回路24A〜24Fは、HTリンクからパケットを受信し、HTリンクにパケットを送信するための、各種バッファおよび制御回路を含み得る。HTインターフェースは、パケットを送信するための一方向のリンクを含む。
各HT回路24A〜24Fは、2つのそのようなリンクに結合され得る(1つは送信用、もう1つは受信用)。
所与のHTインターフェースは、(例えば、ノード12A、12B間では)キャッシュコヒーレントな方法で動作するか、あるいは、(例えば、周辺装置16A、16B間では)非コヒーレントな方法で動作し得る。図示した実施形態では、HT回路24Cおよび24Dは、ノード12A、12B間の通信のために、コヒーレントHTリンクを介して結合される。これらのHT回路24A、24Bおよび24Eは使用されておらず、HT回路24Fは、非コヒーレントリンクを介して周辺装置16A、16Bに結合される。
周辺装置16A、16Bは、任意のタイプの周辺装置であってよい。例えば、周辺装置16A、16Bは、別のコンピュータシステムに結合され、そのコンピュータシステムと通信するためのデバイス(例えば、ネットワークインターフェースカードあるいはモデム)を含み得る。
さらに、周辺装置16A、16Bは、ビデオアクセラレータオーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、テレフォニーカード、サウンドカード、およびGPIBインタフェースカードまたはフィールドバスインタフェースカードなどの様々なデータ収集カードを含んでいてもよい。本明細書において、「周辺装置」という用語は、入力/出力(I/ O)デバイスを包含することを意図する点に留意されたい。
一実施形態では、ノード12A、12Bの各々は、図1に示す回路を備えた単一の集積回路チップであってよい。つまり、各ノード12A、12Bはチップマルチプロセッサ(CMP)であってよい。その他の実施形態は、所望に応じて2つ以上の別々の集積回路としてノード12A、12Bを実装してよい。任意の集積レベルあるいは個別の部品を使用してもい。
概して、プロセッサコア18A〜18Dは、所与の命令セットアーキテクチャにおいて定義された命令を実行するように設計された回路を含むことができる。つまり、プロセッサコア回路は、この命令セットアーキテクチャにおいて定義された命令の結果をフェッチし、デコードし、実行し、書込むように構成することができる。
プロセッサコア18A〜18Dは、スーパーパイプライン、スーパースカラ、あるいはその組合せを含む、任意の所望の構成を含むことができる。その他の構成としては、スカラ、パイプライン型、非パイプライン型などを含み得る。各種実施形態は、アウトオブオーダ投機的実行あるいはインオーダ実行を採用してもよい。プロセッサコアは、1つ以上の命令に対するマイクロコードを含んでもよく、あるいは、上述した任意の構成と組み合わせて、その他の機能を含んでもよい。
各種実施形態は、様々なその他の設計特徴、例えば、キャッシュ、トランスレーションルックアサイドバッファ(TLB)などを実装してもよい。CMPの実施形態では、所与のノード12A、12B内のプロセッサコアは、このCMPに含まれる回路を備え得る。
他の実施形態では、プロセッサコア18A〜18Dはそれぞれ、別々の集積回路を備え得る。
上述したように、プロセッサコア18A〜18Dは、命令の実行中に書込みオペレーションを実行するように構成することができる。
各種実施形態では、書込みオペレーションは明示的な書込み命令の結果であっても、宛先としてメモリオペランドを有する他の命令において暗示的であっても、あるいはその両方であってもよい。
概して、書込みオペレーションは、この書込みオペレーションに関連づけられたアドレスによって指定されたメモリ位置における1以上のバイトの更新であり得る。
各種信号は、アサート、アサート停止、生成されているものとして上述されている。通常、信号はソースからレシーバに送信される任意のインディケーションとなり得る。ある信号は、例えばアサートされ得る、あるいはアサート停止され得る1以上のシグナルラインを備え得る。
本実施形態は、ノード間およびノードと周辺装置間の通信のためにHTインターフェースを使用するが、他の実施形態では、いずれの通信のために、任意の所望のインターフェースあるいは複数のインターフェースを使用してもよい点に留意されたい。例えば、他のパケットベースのインターフェース、バスインターフェース、各種標準の周辺インターフェース(例えば、周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)、PCIエクスプレスなど)など、を使用してもよい。
図1に例示したコンピュータシステム10は2つのノード12A、12Bを備えているが、その他の実施形態は1つのノード、あるいは2つ以上のノードを実装してもよい点に留意されたい。同様に、各ノード12A、12Bは、各種実施形態において、2つ以上のプロセッサコアを含み得る。
ある実施形態では、ノード内の各プロセッサコアのモニタユニット26は、同じノードにあるその他の各プロセッサコアからモニタリングされたキャッシュラインのアドレスを受信するように構成されてもよく、また、モニタリングされたキャッシュラインの各々に対する書込みオペレーションをモニタリングするように構成されてもよい。
他の実施形態では、プロセッサコアのサブセットが識別され、そのサブセットは、互いのモニタリングされたキャッシュラインに対する書込みオペレーションを検出するように構成され得る。
コンピュータシステム10の各種実施形態では、ノード12A、12BごとにHTインターフェースの数が異なってもよく、異なる数の周辺装置が1つまたは複数のノードに結合される。
図2〜図4は、各種命令を実行するためのプロセッサコア18A〜18Dの一実施形態の動作を例示したフローチャートである。図5は、プロセッサコア18A〜18Dの一実施形態の例示的状態を示した状態機械である。
以下の図2〜図5についての考察では、プロセッサコア18Aが例として使用されることになるが、プロセッサコア18B〜18Dは同様である。
図2〜図4を介して例示した各命令に対して、命令を実行するプロセッサコア18A〜18Dは、簡素化と簡略化のために図2〜図4には例示していない他のオペレーション(例えば、例外のチェックなど)を実行してもよい。
図2を参照すると、monitor命令を実行するプロセッサコア18Aの一実施形態の動作を例示したフローチャートが示されている。プロセッサコア18Aは、図2に示すオペレーションを実行するために、回路構成および/あるいはマイクロコードを含んでもよい。
図2に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。さらに、組合せ論理により、プロセッサコア18Aにおいて、各ブロックを同時に実行することもできる。
各種実施形態において、所望に応じて各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および/または、フローチャートに例示した動作を複数のクロックサイクルにわたってパイプライン化してもよい。
本実施形態では、モニタリングされるキャッシュラインのアドレスは、EAXレジスタ(あるいは、プロセッサコア18AがAMD64(商標)拡張命令を実装していれば、RAXレジスタ)内にあると定義される。
他の実施形態では、プロセッサコア18Aはモニタリングされるキャッシュラインのアドレスを生成するために、2つ以上のオペランドを追加してもよい。
ある実施形態では、プロテクトモードがイネーブルであれば、EAXレジスタのコンテンツは、セグメントレジスタの1つにおいて、線形アドレスに対して定義されたセグメントベースのアドレスに追加されるオフセットである。
他の実施形態では、セグメントベースのアドレスはゼロであり、EAXレジスタのコンテンツは線形アドレスに相当し得る。
ページングがイネーブルであれば(決定ブロック40において、”yes”)、アドレスは仮想アドレスであり(例えば、線形アドレス)、この仮想アドレスはページングメカニズムを介して物理アドレスに変換される(ブロック42)。この物理アドレスは、モニタユニット26Aがモニタリングするアドレスであってよい。いずれの場合でも、プロセッサコア18Aは、モニタリングされるアドレスをモニタユニット(26A)のMAddrレジスタ28Aに書き込むことができる(ブロック44)。加えて、プロセッサコア18Aは、他のプロセッサコア18Bにアドレスを通信して送ることができる(ブロック46)。
他の実施形態では、プロセッサコア18Aは、1つ以上の別のプロセッサコアにアドレスを通信することができる。プロセッサコア18Aは、モニタユニット26Aを”アーム(arm)”してもよい(ブロック48)。
概して、モニタユニット26Aをアームするということは、monitor命令が実行されたことを示す状態にモニタユニット26Aを置くことを指す(従って、モニタリングされるアドレスはモニタユニット26Aに既に確立されている)。以下に詳細を記載しているように、このアームされた状態を、MWait命令への応答を決定するために使用してもよい。
図3は、MWait命令を実行するために、プロセッサコア18Aの一実施形態の動作を例示したフローチャートである。プロセッサコア18Aは、図3のオペレーションを実行するために、回路構成および/あるいはマイクロコードを含んでもよい。
図3に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。さらに、組合せ論理により、プロセッサコア18Aにおいて、各ブロックを同時に実行することもできる。 各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および/または、フローチャートに例示した動作を、所望に応じて、各種実施形態において、複数のクロックサイクルにわたってパイプライン化してもよい。
モニタユニット26Aがすでに実行されたmonitor命令を介してアームされていれば(および、続いてキャッシュラインの更新が検出されなければ、つまり、決定ブロック50において”yes”)、プロセッサコア18Aは本実施形態において、スリープ状態に入り得る(ブロック)。
別の実施形態では、MWait命令に応答して、様々な状態に入ることができる(例えば、既述の、実装に依存した最適化状態)。
スリープ状態は電力節約状態であり、この状態においてプロセッサコア18Aは電力消費の低減を試みる。ある実施形態では、プロセッサコア18Aは、スリープ状態において命令の実行を停止することができる。
他の種々の実施形態では、スリープ状態は電力消費を低減するために、以下のうちの1つ以上を含む。それらは、プロセッサコア18Aが動作するクロック周波数を減らす、様々な回路に対してクロックをゲーティングする、クロックをオフにする、位相ロックループあるいは他のクロック生成回路をオフにする、プロセッサコア(モニタユニットは除く)の電源を切る、などのように構成してもよい。
スリープステートは、例えば、パソコンシステムにおいて、パワーマネージメントの各種実装品に使用される任意のストップグラント(stop grant)状態であってよい。他の実施形態では、他の状態を使用してもよい。例えば、プロセッサコア18Aがマルチスレッド機能を実装している場合、プロセッサコア18Aは、モニタリングされたキャッシュラインの更新が検出されるまで、MWait命令の実行後に別のスレッドを実行するよう切替えるようにしてもよい。
モニタユニット26Aがア−ムされていなければ(決定ブロック50において、”no”)、プロセッサコア18AはMWait命令については何のアクションも起こさず、MWait命令に続く次の命令とともに実行を継続し得る。
モニタリング命令がMWait命令の前に実行されていなければ、モニタユニット26Aはアームすることができない(しかし、他の命令はmonitor命令とMWait命令との間に実行することができる)。加えて、monitor命令はすでに実行されているが、MWait命令を実行する前に、モニタリングされたキャッシュラインの更新が検出されていれば、モニタユニット26Aはアームすることができない。
図4は、書込みオペレーションを実行するために、プロセッサコア18Aの一実施形態の動作を例示したフローチャートを示す。プロセッサコア18Aは、図4に示すオペレーションを実行するために、回路構成および/あるいはマイクロコードを含んでもよい。図4に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。
さらに、組合せ論理により、プロセッサコア18Aにおいて、各ブロックを同時に実行することもできる。 各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および/または、フローチャートに例示した動作を、所望に応じて、各種実施形態において、複数のクロックサイクルにわたってパイプライン化してもよい。
モニタユニット26Aは、書込みオペレーションのアドレスをレジスタ28B(MAddrSアドレスを書込むレジスタ)のアドレスと比較する。書込みアドレスがMAddrSアドレスと一致すれば(決定ブロック54において、”yes”)、モニタユニット26Aは、プロセッサコア18BにWakeup−ST信号をアサートし得る(ブロック56)。
いずれの場合でも、プロセッサコア18Aはメモリを更新することで書込みを終了することができる(ブロック58)。
メモリは、キャッシュを実装するプロセッサコア18Aの実施形態において、キャッシュにおいて更新され得る。加えて、キャッシュコヒーレンシーは、コンピュータシステム10に実装されたコヒーレンシープロトコルに従い維持され得る。
図5は、monitor/Mwait命令の実装に関係したプロセッサコア18Aの例示的状態を示した状態機械図である。プロセッサコア18Aの各種実施形態によって、他の目的のために他の状態を実装してもよい。
図5は、ノーマル状態60、アーム状態62、およびスリープ状態64を例示する。
ノーマル状態60は、命令が実行され、(monitor/MWait命令に関して定義されたように)キャッシュラインのモニタリングが実行されないプロセッサコア18Aの状態とすることができる。
アーム状態62は、モニタユニット26Aがモニタリングされるキャッシュラインのアドレスで更新され(monitor命令の実行を介して)、MWait命令の次の実行を待つ状態であり得る。
スリープ状態64は、上述したように、電力節約状態である。上述のように、他の実施形態では、スリープ状態64の代わりに他の状態を使用してもよい。
プロセッサコア18Aがノーマル状態60にあり、monitor命令が実行されれば、状態機械はアーム状態62に変わる。
アーム状態62では、モニタリングされたキャッシュに対するインバリデートプローブが検出されれば(WExitアサート)、あるいは、アサートされたWakeup−ST信号がモニタユニット26Aによって受信されれば、状態機械はノーマル状態60に戻る。この状態の変化は、MWait命令が実行される前にモニタリングされたキャッシュラインが更新される場合を表す。
他方で、状態機械がアーム状態62にある間にMwait命令が実行されれば、この状態機械はスリープ状態64へと変化する。
この状態機械は、モニタリングされたキャッシュライン(WExit)に対するインバリデートプローブの検出、モニタユニット26AへのWake−up信号のアサート(Wakeup−ST)、あるいは、MWait命令および/あるいはプロセッサコアの実装に対して定義された任意のその他の終了条件(Other−Exit)に応答して、スリープ状態64からノーマル状態60へ変化し得る。
その他の終了条件は実施形態によって変化してもよいが、その他の終了条件として、プロセッサコア18Aに対する外部割込みのデリバリ、プロセッサコア18Aのリセットを含み得る。
図6は、同一ノード12Aにおけるプロセッサコア(例えば、プロセッサコア18A)がモニタリングされたキャッシュラインを更新するときに、プロセッサコア18Aの動作を示した例である。
プロセッサコア18Aによって実行されるコードを、下線を付した“プロセッサコア18A、ノード12A”との見出しの下方に示す。プロセッサコア18Bによって実行されるコードを、下線を付した“プロセッサコア18B、ノード12A”との見出しの下方に示す。プロセッサコア18Aは、monitor命令を実行し、モニタユニット26Aをモニタリングし、アームするためのキャッシュラインのアドレス”A”を確立する。
次に、このコードはアドレスAに対するチェックを含む(図6において、”チェック[A]”と記される)。
このチェックにおいて、モニタリングされたキャッシュライン内のメモリ位置を読出し、そのメモリ位置を所望の状態と比較する。
所望の状態がメモリ位置にあれば、チェックはMWait命令のまわりに分岐し、次の処理を継続する。
このチェックにより、monitor命令の実行との競合条件で生じたキャッシュラインの更新が検出され得る。
例では、所望の状態がキャッシュラインに存在せず、プロセッサコア18AはMWait命令を実行する。
よって、プロセッサコア18Aはスリープ状態に入る(矢印70)。
プロセッサコア18BはアドレスAに対して書込みオペレーションを実行し、(モニタユニット28Bにおいて)この書込みオペレーションのアドレスがプロセッサコア18Aからのシャドーされたモニタリングアドレス(shadowed montor address:MAddrS)と一致することを検出する。従って、プロセッサコア18B(および、より詳細にはモニタユニット26B))は、Wakeup−ST信号をアサートすることでプロセッサコア18A(および、より詳細にはモニタユニット26A)に信号を送る。
プロセッサコア18Aは再度アドレスAのチェックを行い(図6のチェック[A])、キャッシュラインにおいて所望の状態を検出する。従って、プロセッサコア18Aは他の命令とともに実行を継続する。
図7は、その他のノード12Bにおけるプロセッサコア(例えば、プロセッサコア18C)がモニタリングされたキャッシュラインを更新するときに、プロセッサコア18Aのオペレーションを示した例である。
プロセッサコア18Aによって実行されるコードを、下線を付した“プロセッサコア18A、ノード12A”との見出しの下方に示す。プロセッサコア18Cによって実行されるコードを、下線を付した“プロセッサコア18C、ノード12B”との見出しの下方に示す。加えて、プロセッサコア18Cとプロセッサコア18A間の通信を、図7の中央部分に示す。
図6の例と同様に、プロセッサコア18Aは、monitor命令を実行し、モニタユニット26Aをモニタリングしアームするためのキャッシュラインのアドレス”A”を確立し、このアドレス”A”をチェックし、MWait命令を実行する。
従って、プロセッサコア18Aはスリープ状態に入る(矢印74)。
プロセッサコア18CはアドレスAに対して書込みオペレーションを実行する。本実施形態では、プロセッサコア18Cはプロセッサコア18Aによってモニタリングされるアドレスのシャドウコピーを有しておらず、よって、コヒーレンシーオペレーションの通常の送信を継続して書込みを終了する。具体的には、プロセッサコア18Cはノード12Bにおいてブリッジ20Bにインバリデートプローブを送信する(矢印76)。
続いてブリッジ20Bはノード12Aにインバリデートプローブを送信する(また、そのインバリデートプローブはブリッジ20Aに到達する)。続いてブリッジ20Aはプロセッサコア18Aにインバリデートプローブを送信し、これによりインバリデートプローブのアドレスがレジスタ28Aのアドレスに一致することが検出される。この結果、プロセッサコア18Aはスリープ状態から抜け出る(矢印78)。プロセッサコア18Aは再度アドレスAのチェックを行い(図7のチェック[A])、キャッシュラインの所望の状態を検出する。従って、プロセッサコア18Aは他の命令とともに実行を継続する。
上述した開示を完全に理解すれば、多くの変形および修正が当業者には明らかとなるであろう。請求の範囲は、そのような変形および修正を全て包含するものと解釈されることを意図する。
概して、本発明は、プロセッサおよび変更に対するキャッシュラインのモニタリングに利用可能である。
複数のプロセッサコアを含むコンピュータシステムの一実施形態のブロック図。 monitor命令を実行する間のプロセッサコアの一実施形態の動作を例示したフローチャート。 MWait命令を実行する間のプロセッサコアの一実施形態の動作を例示したフローチャート。 書込み命令を実行する間のプロセッサコアの一実施形態の動作を例示したフローチャート。 キャッシュラインの更新を待つ間に低電力状態に入るためのプロセッサコアの一実施形態の動作を例示した状態機械図。 同一ノードのプロセッサコアがモニタリングされたキャッシュラインを更新したときのプロセッサコアの一実施形態の動作を例示した説明図。 別ノードのプロセッサコアがモニタリングされたキャッシュラインを更新したときのプロセッサの一実施形態の動作を例示した説明図。

Claims (27)

  1. 更新のために第1プロセッサコアがモニタリングしているアドレスレンジを識別するアドレスレンジインディケーションを通信するように構成された第1プロセッサコアを有し、前記第1プロセッサコアは、更新のために前記第1プロセッサコアに前記アドレスレンジをモニタリングさせるように定義された第1の命令の実行に応答して、前記アドレスレンジインディケーションを通信するように構成されているものであり、かつ前記第1プロセッサコアは、前記アドレスレンジの更新を待つために第1の状態に入るよう構成されているものであって、
    前記アドレスレンジインディケーションを受信するように結合されるとともに、前記アドレスレンジにおいて少なくとも1バイトを更新する書込みオペレーションの実行に応答して、前記第1プロセッサコアに信号を送信するように構成された第2プロセッサコアを有し、前記第2プロセッサコアは、前記書込みオペレーションをコヒーレントに実行するように、1以上のコヒーレンシー通信を発行するように構成されており、
    前記第1プロセッサコアは、前記書込みオペレーションをコヒーレントに実行するように、前記第2プロセッサコアによって発行された前記1以上のコヒーレンシー通信を受信する前に前記第2プロセッサコアからの信号を受信するように結合されており、さらに、前記第1プロセッサコアは、前記第2プロセッサコアからの信号に応答して、前記アドレスレンジの更新を待つ前記第1の状態から抜け出すように構成されている、システム。
  2. 前記アドレスレンジインディケーションは、連続したメモリバイトのブロックを識別するアドレスを含む、請求項1に記載のシステム。
  3. 前記ブロック連続メモリバイトはキャッシュラインである、請求項2に記載のシステム。
  4. 前記第1プロセッサコアは、コンピュータシステムの他のコンポーネントと通信するためのインターフェースに結合されており、前記第1プロセッサコアは、前記更新のインディケーションが前記アドレスレンジの更新を示していれば、前記インターフェースからの更新インディケーションの受信に応答して、前記第1の状態から抜け出すようにさらに構成されている、請求項1に記載のシステム。
  5. 前記更新のインディケーションはプローブである、請求項4に記載のシステム。
  6. 前記第1プロセッサコアは、前記アドレスレンジインディケーションを記録するように構成された第1レジスタを含む、請求項1記載のシステム。
  7. 前記第2プロセッサコアは、前記アドレスレンジインディケーションのシャドウコピーを記録するように構成された第2レジスタを含む、請求項6に記載のシステム。
  8. 前記第1の状態は、電力節約状態を含む、請求項1に記載のシステム。
  9. 第1プロセッサコアが更新をモニタリングしているアドレスレンジを識別するアドレスレンジインディケーションを第1プロセッサコアから第2プロセッサコアに通信するステップを有し、前記通信は、更新のために前記第1プロセッサコアに前記アドレスレンジをモニタリングさせるように定義された前記第1プロセッサコアの第1の命令の実行に応答するものであり、前記第1プロセッサコアは前記アドレスレンジの更新を待つために第1の状態に入るよう構成されているものであり、
    前記第2プロセッサコアの前記アドレスレンジにおいて、少なくとも1バイトを更新する書込みオペレーションを実行するステップと、
    前記書込みオペレーションをコヒーレントに実行するように、前記第2プロセッサコアから1以上のコヒーレンシー通信を発行するステップと、
    前記書込みオペレーションに応答して、前記第1プロセッサコアに信号を送信するステップと、
    前記第1プロセッサコアが前記アドレスレンジにおいて前記更新を待っている前記第1の状態から抜け出すステップと、を含み、前記抜け出すステップは、前記信号に応答するものであって、さらに、前記書込みオペレーションをコヒーレントに実行するように、前記第2プロセッサコアによって1以上のコヒーレンシー通信を受信する前に起きる、方法。
  10. 前記アドレスレンジインディケーションは、連続したメモリバイトのブロックを識別するアドレスを含む、請求項9に記載の方法。
  11. 前記ブロック連続メモリバイトはキャッシュラインである、請求項10に記載の方法。
  12. 前記第1プロセッサコアは、前記コンピュータシステムの他のコンポーネントと通信するためのインターフェースに結合されているものであって、前記更新のインディケーションが前記アドレスレンジの更新を示していれば、前記インターフェースからの更新のインディケーションの受信に応答して、前記第1プロセッサコアの前記第1の状態から抜け出すステップをさらに含む、請求項9に記載の方法。
  13. 前記更新のインディケーションはプローブである、請求項12に記載の方法。
  14. 前記第1の状態は、電力節約状態を含む、請求項9に記載の方法。
  15. 第1の命令に応答して更新のためにアドレスレンジをモニタリングするように構成されたモニタユニットを備えたプロセッサコアであって、
    前記プロセッサコアは、前記アドレスレンジの更新を待つために第1の状態に入るよう構成されており、
    前記モニタユニットは、前記第1の命令の実行に応答して、第2のプロセッサコアに対する前記アドレスレンジを識別するアドレスレンジインディケーションを通信するように構成されており、さらに、
    前記モニタユニットは、第2のプロセッサコアから、前記第2プロセッサコアが前記アドレスレンジにおいて少なくとも1バイトを更新していることを示す信号を受信するように構成されており、さらに、前記プロセッサコアは前記書込みオペレーションをコヒーレントに実行するように、前記第2プロセッサコアによって発行された1以上のコヒーレンシー通信を受信する前に信号を受信するように結合されており、さらに、前記プロセッサコアは、前記信号に応答して前記第1の状態から抜け出すように構成されている、プロセッサコア。
  16. 前記アドレスレンジインディケーションは、連続したメモリバイトのブロックを識別するアドレスを含む、請求項15に記載のプロセッサコア。
  17. 前記ブロック連続メモリバイトはキャッシュラインである、請求項16に記載のプロセッサコア。
  18. 前記コンピュータシステムの他のコンポーネントと通信するためのインターフェースをさらに有しており、前記プロセッサコアは、前記更新のインディケーションが前記アドレスレンジの更新を示していれば、前記インターフェースからの更新インディケーションの受信に応答して、前記第1の状態から抜け出すようにさらに構成されている、請求項15に記載のプロセッサコア。
  19. 前記更新のインディケーションはプローブである、請求項18に記載のプロセッサコア。
  20. 前記第モニタユニットは、前記アドレスレンジインディケーションを記録するように構成された第1レジスタを含む、請求項15記載のプロセッサコア。
  21. 前記モニタユニットは、前記第2プロセッサプロセッサコアから受信した前記アドレスレンジインディケーションのシャドウコピーを記録するように構成されており、前記第2プロセッサコアは、前記第2アドレスレンジインディケーションにより示された第2アドレスレンジの更新をモニタリングする、請求項20に記載のプロセッサコア。
  22. 前記モニタユニットは、前記第2アドレスレンジにおいて少なくとも1バイトを更新している第2書込みオペレーションを実行する前記プロセッサコアに応答して、前記第2プロセッサコアに信号を送信するように構成されている、請求項21に記載のプロセッサコア。
  23. 前記第2の状態は、電力節約状態を含む、請求項15に記載のプロセッサコア。
  24. 前記プロセッサコアは、第2の命令の実行に応答して、前記第1の状態に入るように構成されている、請求項15に記載のプロセッサコア。
  25. 前記第2プロセッサコアは、前記インターフェースとは別個に前記第1プロセッサコアに信号を送信するよう結合されている、請求項4に記載のシステム。
  26. 前記第1プロセッサコアは、前記第1プロセッサコアが前記アドレスレンジ内での更新を待っていることを示す第2信号の実行に応答して、前記電力節約状態に入るように構成されている、請求項8に記載のシステム。
  27. 前記プロセッサコアは、前記インターフェースとは別個に前記信号を受信するよう結合されている、請求項18に記載のプロセッサコア。
JP2007534659A 2004-10-01 2005-09-21 複数のコアを介してのモニタリングされたキャッシュラインの共有 Active JP4982375B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/956,685 2004-10-01
US10/956,685 US7257679B2 (en) 2004-10-01 2004-10-01 Sharing monitored cache lines across multiple cores
PCT/US2005/033819 WO2006039162A2 (en) 2004-10-01 2005-09-21 Sharing monitored cache lines across multiple cores

Publications (3)

Publication Number Publication Date
JP2008515096A JP2008515096A (ja) 2008-05-08
JP2008515096A5 JP2008515096A5 (ja) 2009-01-08
JP4982375B2 true JP4982375B2 (ja) 2012-07-25

Family

ID=35994769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007534659A Active JP4982375B2 (ja) 2004-10-01 2005-09-21 複数のコアを介してのモニタリングされたキャッシュラインの共有

Country Status (8)

Country Link
US (1) US7257679B2 (ja)
EP (1) EP1807754B1 (ja)
JP (1) JP4982375B2 (ja)
KR (1) KR101216190B1 (ja)
CN (1) CN101036116B (ja)
DE (1) DE602005020960D1 (ja)
TW (1) TWI366132B (ja)
WO (1) WO2006039162A2 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
US7484053B2 (en) * 2005-05-16 2009-01-27 Texas Instruments Incorporated Cross-referencing cache line addresses with corresponding names
US7444474B2 (en) * 2005-05-16 2008-10-28 Texas Instruments Incorporated Determining the presence of a virtual address in a cache
US8281083B2 (en) * 2005-06-30 2012-10-02 Intel Corporation Device, system and method of generating an execution instruction based on a memory-access instruction
US9003421B2 (en) * 2005-11-28 2015-04-07 Intel Corporation Acceleration threads on idle OS-visible thread execution units
US20070271450A1 (en) * 2006-05-17 2007-11-22 Doshi Kshitij A Method and system for enhanced thread synchronization and coordination
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US9336051B2 (en) * 2007-10-19 2016-05-10 National Instruments Corporation Programmable controller with multiple processors using a scanning architecture
US20090106755A1 (en) * 2007-10-19 2009-04-23 Sundeep Chandhoke Programmable Controller with Multiple Processors Using Scanning and Data Acquisition Architectures
US20090309243A1 (en) * 2008-06-11 2009-12-17 Nvidia Corporation Multi-core integrated circuits having asymmetric performance between cores
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8364862B2 (en) * 2009-06-11 2013-01-29 Intel Corporation Delegating a poll operation to another device
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US8972707B2 (en) 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US8631256B2 (en) 2010-12-22 2014-01-14 Via Technologies, Inc. Distributed management of a shared power source to a multi-core microprocessor
US9460038B2 (en) 2010-12-22 2016-10-04 Via Technologies, Inc. Multi-core microprocessor internal bypass bus
US8782451B2 (en) * 2010-12-22 2014-07-15 Via Technologies, Inc. Power state synchronization in a multi-core processor
TWI531896B (zh) * 2010-12-22 2016-05-01 威盛電子股份有限公司 多核心處理器的電源狀態同步化
US8635476B2 (en) * 2010-12-22 2014-01-21 Via Technologies, Inc. Decentralized power management distributed among multiple processor cores
US8637212B2 (en) 2010-12-22 2014-01-28 Via Technologies, Inc. Reticle set modification to produce multi-core dies
US8930676B2 (en) 2010-12-22 2015-01-06 Via Technologies, Inc. Master core discovering enabled cores in microprocessor comprising plural multi-core dies
US8819349B2 (en) * 2011-07-08 2014-08-26 Facebook, Inc. Invoking operating system functionality without the use of system calls
US8713262B2 (en) 2011-09-02 2014-04-29 Nvidia Corporation Managing a spinlock indicative of exclusive access to a system resource
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
CN104011703B (zh) 2011-12-22 2017-04-12 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
US9396020B2 (en) 2012-03-30 2016-07-19 Intel Corporation Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9218288B2 (en) * 2012-06-15 2015-12-22 International Business Machines Corporation Monitoring a value in storage without repeated storage access
US9535488B2 (en) 2013-08-28 2017-01-03 Via Technologies, Inc. Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
JP6525267B2 (ja) * 2015-11-13 2019-06-05 Necプラットフォームズ株式会社 範囲外参照検出装置、方法およびプログラム
US10394678B2 (en) 2016-12-29 2019-08-27 Intel Corporation Wait and poll instructions for monitoring a plurality of addresses
CN108009121B (zh) * 2017-12-21 2021-12-07 中国电子科技集团公司第四十七研究所 面向应用的动态多核配置方法
US11237960B2 (en) 2019-05-21 2022-02-01 Arm Limited Method and apparatus for asynchronous memory write-back in a data processing system
US11176042B2 (en) * 2019-05-21 2021-11-16 Arm Limited Method and apparatus for architectural cache transaction logging
CN113157543B (zh) * 2021-05-14 2023-07-21 海光信息技术股份有限公司 一种可信度量方法及装置、服务器、计算机可读存储介质
US20220394023A1 (en) * 2021-06-04 2022-12-08 Winkk, Inc Encryption for one-way data stream

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
JPH10149285A (ja) 1996-11-18 1998-06-02 Hitachi Ltd 命令実行制御方法および情報処理装置
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6721856B1 (en) * 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation

Also Published As

Publication number Publication date
DE602005020960D1 (de) 2010-06-10
EP1807754A2 (en) 2007-07-18
KR101216190B1 (ko) 2012-12-28
WO2006039162A3 (en) 2007-03-15
TWI366132B (en) 2012-06-11
TW200627271A (en) 2006-08-01
CN101036116A (zh) 2007-09-12
US20060075060A1 (en) 2006-04-06
CN101036116B (zh) 2010-08-11
US7257679B2 (en) 2007-08-14
JP2008515096A (ja) 2008-05-08
KR20070057906A (ko) 2007-06-07
EP1807754B1 (en) 2010-04-28
WO2006039162A2 (en) 2006-04-13

Similar Documents

Publication Publication Date Title
JP4982375B2 (ja) 複数のコアを介してのモニタリングされたキャッシュラインの共有
JP7227680B2 (ja) ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ
US8539485B2 (en) Polling using reservation mechanism
US7627722B2 (en) Method for denying probes during proactive synchronization within a computer system
TWI742032B (zh) 用於使用者等級執行緒暫止的方法、設備及指令
US9454218B2 (en) Apparatus, method, and system for early deep sleep state exit of a processing element
KR101814412B1 (ko) 데이터 버퍼와 연관된 스누프 필터링의 제공
US6754859B2 (en) Computer processor read/alter/rewrite optimization cache invalidate signals
US11803505B2 (en) Multicore bus architecture with wire reduction and physical congestion minimization via shared transaction channels
US20090037932A1 (en) Mechanism for broadcasting system management interrupts to other processors in a computer system
JP2014075147A (ja) システム管理モードのためのプロセッサにおける状態記憶の提供
US8364862B2 (en) Delegating a poll operation to another device
JP2011150422A (ja) データ処理装置
US20070073977A1 (en) Early global observation point for a uniprocessor system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080922

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081110

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100421

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120404

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120423

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150427

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4982375

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250