JP2008515096A - 複数のコアを介してのモニタリングされたキャッシュラインの共有 - Google Patents
複数のコアを介してのモニタリングされたキャッシュラインの共有 Download PDFInfo
- Publication number
- JP2008515096A JP2008515096A JP2007534659A JP2007534659A JP2008515096A JP 2008515096 A JP2008515096 A JP 2008515096A JP 2007534659 A JP2007534659 A JP 2007534659A JP 2007534659 A JP2007534659 A JP 2007534659A JP 2008515096 A JP2008515096 A JP 2008515096A
- Authority
- JP
- Japan
- Prior art keywords
- processor core
- address range
- update
- address
- state
- 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.)
- Granted
Links
- 230000004044 response Effects 0.000 claims abstract description 29
- 230000015654 memory Effects 0.000 claims description 42
- 238000004891 communication Methods 0.000 claims description 21
- 239000000523 sample Substances 0.000 claims description 21
- 238000012544 monitoring process Methods 0.000 claims description 16
- 238000000034 method Methods 0.000 claims description 7
- 230000002093 peripheral effect Effects 0.000 description 19
- 230000008859 change Effects 0.000 description 7
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000001427 coherent effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30083—Power or thermal control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or 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)
Abstract
Description
簡潔に言えば、本明細書において”スレッド”という用語は、マルチスレッドアプリケーションからのコードシーケンス指し、あるいは、アプリケーション自体がマルチスレッドでなければ、アプリケーション全体を指すものとして使用されることになる。
通常、スレッドはセマフォにアクセスし、その状態をチェックできる。セマフォの状態が、スレッドが保護リソースを制御し得ることを示していれば、スレッドはセマフォの状態を変更して、スレッドが保護リソースを制御することを示すようにしてもよい。
セマフォの状態が、別のスレッドが保護リソースを制御していることを示していれば、スレッドはセマフォの状態が変わるまでセマフォをチェックし続けてもよい(例えば、それが保護リソースでなされたことを示すセマフォを書込む他のスレッドによって)。メモリ位置は、スレッド間に別のメッセージを送信するように(あるいは、メッセージが利用可能であることを示すように)使用してもよい。
ある所与のスレッドが別のスレッドからのメッセージを待っている場合、その所与のスレッドは、メッセージが利用可能であることを示す値でメモリ位置が記されるまでメモリ位置のチェックを継続し得る。その他の多くの例が存在する。そのような例としては、あるスレッドが別のスレッドと通信するためにメモリ位置を使用するといったものが挙げられる。
メモリ位置が最終的に所望の状態で書かれたときにスレッドはこのスピンループから抜け出ることができる。スレッドがスピンループの状態にある間、このスレッドはあまり有益な仕事をしない。しかし、スレッドを実行中のプロセッサはスピンループを実行して電力を消費する。
MWAIT命令は、更新を待つ間、プロセッサを”実装に依存した最適化状態(implementation-dependent optimized state)”に入れるように使用される。プロセッサは、モニタリングされたアドレスレンジにおける書込みに応答して(および、特定の割込み、および、モニタリングされたアドレスレンジとは関係のないその他の理由によって)、この実装に依存した最適化状態から抜け出る。通常、プロセッサは、プロセッサに実装された通常のコヒーレンシーメカニズムを介して更新を知らされる。
この第1プロセッサコアは、更新のために第1プロセッサコアにアドレスレンジをモニタリングさせるように定義された第1の命令の実行に応答して、このアドレスレンジインディケーションを送信するように構成される。
第2プロセッサコアはアドレスレンジインディケーションを受信するように結合されており、アドレスレンジにおいて少なくとも1バイトを更新する書込み命令の実行に応答して、第1プロセッサコアに信号を送信するように構成されている。
第1プロセッサコアは第2プロセッサコアからの信号を受信するように結合されており、この信号に応答して第1の状態から抜け出るように構成されている。この第1の状態とは、第1プロセッサコアがアドレスレンジにおいて更新を待っている状態である。
その方法は、第1プロセッサコアが、第1プロセッサコアから第2プロセッサコアまでの更新をモニタリングしているアドレスレンジを識別するアドレスレンジインディケーションを送信するステップを含み、このアドレスレンジインディケーションの送信ステップは、更新のために第1のプロセッサコアにアドレスレンジをモニタリングさせるように定義された第1の命令の実行に応答するものであり、第2プロセッサコアの第2アドレスレンジにおいて、少なくとも1バイトを更新する書込み命令を実行するステップと、この書込み命令に応答して、第1プロセッサコアに信号を送信するステップと、この信号に応答して、第1プロセッサコアが、アドレスレンジにおいて更新を待っている第1の状態から抜け出るステップと、を含むものである。
このモニタユニットは、第1の命令の実行に応答して第2プロセッサコアに対するアドレスレンジを識別するアドレスレンジインディケーションを送信するように構成されるとともに、第2プロセッサコアがアドレスレンジにおいて少なくとも1バイトを更新していることを識別する第2プロセッサコアからの信号を受信するように構成される。
プロセッサコアは、この信号に応答して、第1の状態から抜け出るように構成される。
つまり、プロセッサコアは、1つあるいは複数の命令の実行に応答して、アドレスレンジをモニタリングし、このモニタリングされたアドレスレンジ内で更新を待つ状態に入ることができる。そのような命令の例として、このMONITORおよびMWAIT命令が使用されることになる。明細書における便宜上、MONITOR命令はmonitor命令(大文字ではない)と称し、MWAIT命令はMWait命令(MとWだけを大文字にする)と称することとする。
ノード12A、12Bの各々は、対応するメモリ14A、14Bに結合されている。ノード12Aはブリッジ20Aに結合されたプロセッサコア18A、18Bを備えている。このブリッジ20Aはさらに、メモリコントローラ22Aと複数のハイパートランスポート(HyperTransport)(商標)(HT)インターフェース回路24A〜24Cに結合されている。
このHT回路24C、24Dは(本実施形態ではHTインターフェースを介して)結合されており、また、HT回路24Fは周辺装置16Aに結合されている。この周辺装置16Aは(本実施形態ではHTインターフェースを使用して)デイジーチェーン構造で周辺装置16Bに結合されている。メモリコントローラ22A、22Bは、対応のメモリ14A、14Bに結合されている。
各プロセッサコア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は、同一ノード12A、12Bにおける他のプロセッサコア18A〜18Dにアドレスレンジインディケーションを送信してもよい。つまり、プロセッサコア18Aは、そのアドレスレンジインディケーションをプロセッサコア18Bに(逆の場合も同様に)送信することができ、また、プロセッサ18Cはそのアドレスレンジインディケーションをプロセッサコア18Dに(逆の場合も同様に)送信することができる。
ある実施形態では、モニタリングされたアドレスレンジに対する書込みオペレーションの検出を信号で伝える受信プロセッサコアにより、モニタリングプロセッサコアは、通常の通信インターフェースを介してコヒーレンシー通信を送信した場合よりも、その状態からより早く抜け出ることができる。
この議論の残りの部分では、キャッシュラインがアドレスレンジのサイズであり、キャッシュラインのベースアドレスがアドレスレンジインディケーションとして使用される実施形態を例として使用する。しかし、他の実施形態では、任意のサイズのアドレスレンジ、およびこれに対応する任意のアドレスレンジインディケーションを使用してもよい。
コンパレータ30Aを介して、このアドレスにより示されるキャッシュラインの更新を示す任意の通信によりプロセッサコア18Aに供給されたアドレスと、MAddrと、を比較する。例えば、図示した実施形態では、インバリデートプローブ(P−Inv)を更新のインディケーション(更新を表すもの)として用いることができる。
インバリデートプローブは、キャッシュラインの状態変更が無効であることを示すものである。ある特定のコヒーレンシースキームにおいて、インバリデートプローブを、ソースデバイス(例えば、プロセッサ、周辺装置など)によって更新される他のキャッシュにおいてキャッシュラインを無効にするように用いることもできる。その他のインディケーションを使用してもよい。例えば、インバリデートプローブに加えて、あるいはインバリデートプローブの代わりに、書込み(write)オペレーションを使用してもよい。
このようにして、ソフトウェアは、プローブをもたらしたモニタリングされたキャッシュラインへのアクセスのソースが、キャッシュラインの排他的コピーを受け取らないようにすることができる(これにより、インバリデートプローブを生じさせずに、その後の更新が可能となる)。
MAddrSアドレスによって示されたキャッシュラインへの書込みが検出されれば(コンパレータ30B)、モニタユニット26Aはモニタユニット26BにWakeup−ST信号をアサートし得る。他の実施形態では、モニタユニット26Bは、レジスタ28Cの出力をモニタユニット26Aに継続的に供給し得る。また、レジスタ28Bはそのような実施形態には実装され得ない。
上述のように、キャッシュコヒーレント通信は、インターフェースに対して定義され得る。一実施形態では、ブリッジ20Aとプロセッサコア18A、18B間のインターフェース上の通信は、HTインターフェース上で使用されたものと同様のパケット形式であってよい。他の実施形態では、任意の所望の通信を使用してもい(例えば、バスインターフェース上のトランザクション)。他の実施形態では、プロセッサコア18A、18Bはブリッジ20Aにへのインターフェースを共有してもよい(例えば、共有バスインターフェース)。
ブリッジ20Aは、SRQからの通信を、プロセッサコア18A、18B、HT回路24A〜24C、およびメモリコントローラ22A中の、1つのあるいは複数の宛先へ送信するためにスケジューリングし得る。ブリッジ20Bは、プロセッサコア18C、18D、HT回路24D〜24Fおよびメモリコントローラ22Bに関しては同様であり得る。
各ノード12A、12Bは、アドレスとメモリ14A、14Bとの対応関係、すなわち、特定のアドレスに対してメモリ要求を転送すべきノード12A、12Bの決定に用いるメモリマップを(例えば、ブリッジ20Aに)備え得る。メモリコントローラ22A、22Bは、メモリ14A、14Bにインターフェース接続する制御回路を備え得る。加えて、メモリコントローラ22A、22Bは、メモリ要求を待ち行列にいれるリクエストキューなどを含み得る。
各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は、ビデオアクセラレータオーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、テレフォニーカード、サウンドカード、およびGPIBインタフェースカードまたはフィールドバスインタフェースカードなどの様々なデータ収集カードを含んでいてもよい。本明細書において、「周辺装置」という用語は、入力/出力(I/ O)デバイスを包含することを意図する点に留意されたい。
プロセッサコア18A〜18Dは、スーパーパイプライン、スーパースカラ、あるいはその組合せを含む、任意の所望の構成を含むことができる。その他の構成としては、スカラ、パイプライン型、非パイプライン型などを含み得る。各種実施形態は、アウトオブオーダ投機的実行あるいはインオーダ実行を採用してもよい。プロセッサコアは、1つ以上の命令に対するマイクロコードを含んでもよく、あるいは、上述した任意の構成と組み合わせて、その他の機能を含んでもよい。
各種実施形態は、様々なその他の設計特徴、例えば、キャッシュ、トランスレーションルックアサイドバッファ(TLB)などを実装してもよい。CMPの実施形態では、所与のノード12A、12B内のプロセッサコアは、このCMPに含まれる回路を備え得る。
他の実施形態では、プロセッサコア18A〜18Dはそれぞれ、別々の集積回路を備え得る。
各種実施形態では、書込みオペレーションは明示的な書込み命令の結果であっても、宛先としてメモリオペランドを有する他の命令において暗示的であっても、あるいはその両方であってもよい。
概して、書込みオペレーションは、この書込みオペレーションに関連づけられたアドレスによって指定されたメモリ位置における1以上のバイトの更新であり得る。
ある実施形態では、ノード内の各プロセッサコアのモニタユニット26は、同じノードにあるその他の各プロセッサコアからモニタリングされたキャッシュラインのアドレスを受信するように構成されてもよく、また、モニタリングされたキャッシュラインの各々に対する書込みオペレーションをモニタリングするように構成されてもよい。
他の実施形態では、プロセッサコアのサブセットが識別され、そのサブセットは、互いのモニタリングされたキャッシュラインに対する書込みオペレーションを検出するように構成され得る。
コンピュータシステム10の各種実施形態では、ノード12A、12BごとにHTインターフェースの数が異なってもよく、異なる数の周辺装置が1つまたは複数のノードに結合される。
以下の図2〜図5についての考察では、プロセッサコア18Aが例として使用されることになるが、プロセッサコア18B〜18Dは同様である。
図2〜図4を介して例示した各命令に対して、命令を実行するプロセッサコア18A〜18Dは、簡素化と簡略化のために図2〜図4には例示していない他のオペレーション(例えば、例外のチェックなど)を実行してもよい。
図2に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。さらに、組合せ論理により、プロセッサコア18Aにおいて、各ブロックを同時に実行することもできる。
各種実施形態において、所望に応じて各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および/または、フローチャートに例示した動作を複数のクロックサイクルにわたってパイプライン化してもよい。
他の実施形態では、プロセッサコア18Aはモニタリングされるキャッシュラインのアドレスを生成するために、2つ以上のオペランドを追加してもよい。
ある実施形態では、プロテクトモードがイネーブルであれば、EAXレジスタのコンテンツは、セグメントレジスタの1つにおいて、線形アドレスに対して定義されたセグメントベースのアドレスに追加されるオフセットである。
他の実施形態では、セグメントベースのアドレスはゼロであり、EAXレジスタのコンテンツは線形アドレスに相当し得る。
ページングがイネーブルであれば(決定ブロック40において、”yes”)、アドレスは仮想アドレスであり(例えば、線形アドレス)、この仮想アドレスはページングメカニズムを介して物理アドレスに変換される(ブロック42)。この物理アドレスは、モニタユニット26Aがモニタリングするアドレスであってよい。いずれの場合でも、プロセッサコア18Aは、モニタリングされるアドレスをモニタユニット(26A)のMAddrレジスタ28Aに書き込むことができる(ブロック44)。加えて、プロセッサコア18Aは、他のプロセッサコア18Bにアドレスを通信して送ることができる(ブロック46)。
概して、モニタユニット26Aをアームするということは、monitor命令が実行されたことを示す状態にモニタユニット26Aを置くことを指す(従って、モニタリングされるアドレスはモニタユニット26Aに既に確立されている)。以下に詳細を記載しているように、このアームされた状態を、MWait命令への応答を決定するために使用してもよい。
図3に示すブロックは、理解を簡単にするために特定の順序で例示されているが、任意の順序を使用してもよい。さらに、組合せ論理により、プロセッサコア18Aにおいて、各ブロックを同時に実行することもできる。 各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および/または、フローチャートに例示した動作を、所望に応じて、各種実施形態において、複数のクロックサイクルにわたってパイプライン化してもよい。
別の実施形態では、MWait命令に応答して、様々な状態に入ることができる(例えば、既述の、実装に依存した最適化状態)。
スリープ状態は電力節約状態であり、この状態においてプロセッサコア18Aは電力消費の低減を試みる。ある実施形態では、プロセッサコア18Aは、スリープ状態において命令の実行を停止することができる。
他の種々の実施形態では、スリープ状態は電力消費を低減するために、以下のうちの1つ以上を含む。それらは、プロセッサコア18Aが動作するクロック周波数を減らす、様々な回路に対してクロックをゲーティングする、クロックをオフにする、位相ロックループあるいは他のクロック生成回路をオフにする、プロセッサコア(モニタユニットは除く)の電源を切る、などのように構成してもよい。
スリープステートは、例えば、パソコンシステムにおいて、パワーマネージメントの各種実装品に使用される任意のストップグラント(stop grant)状態であってよい。他の実施形態では、他の状態を使用してもよい。例えば、プロセッサコア18Aがマルチスレッド機能を実装している場合、プロセッサコア18Aは、モニタリングされたキャッシュラインの更新が検出されるまで、MWait命令の実行後に別のスレッドを実行するよう切替えるようにしてもよい。
モニタリング命令がMWait命令の前に実行されていなければ、モニタユニット26Aはアームすることができない(しかし、他の命令はmonitor命令とMWait命令との間に実行することができる)。加えて、monitor命令はすでに実行されているが、MWait命令を実行する前に、モニタリングされたキャッシュラインの更新が検出されていれば、モニタユニット26Aはアームすることができない。
さらに、組合せ論理により、プロセッサコア18Aにおいて、各ブロックを同時に実行することもできる。 各ブロックを複数のクロックサイクルにわたってパイプライン化してもよく、および/または、フローチャートに例示した動作を、所望に応じて、各種実施形態において、複数のクロックサイクルにわたってパイプライン化してもよい。
いずれの場合でも、プロセッサコア18Aはメモリを更新することで書込みを終了することができる(ブロック58)。
メモリは、キャッシュを実装するプロセッサコア18Aの実施形態において、キャッシュにおいて更新され得る。加えて、キャッシュコヒーレンシーは、コンピュータシステム10に実装されたコヒーレンシープロトコルに従い維持され得る。
図5は、ノーマル状態60、アーム状態62、およびスリープ状態64を例示する。
アーム状態62は、モニタユニット26Aがモニタリングされるキャッシュラインのアドレスで更新され(monitor命令の実行を介して)、MWait命令の次の実行を待つ状態であり得る。
スリープ状態64は、上述したように、電力節約状態である。上述のように、他の実施形態では、スリープ状態64の代わりに他の状態を使用してもよい。
アーム状態62では、モニタリングされたキャッシュに対するインバリデートプローブが検出されれば(WExitアサート)、あるいは、アサートされたWakeup−ST信号がモニタユニット26Aによって受信されれば、状態機械はノーマル状態60に戻る。この状態の変化は、MWait命令が実行される前にモニタリングされたキャッシュラインが更新される場合を表す。
他方で、状態機械がアーム状態62にある間にMwait命令が実行されれば、この状態機械はスリープ状態64へと変化する。
この状態機械は、モニタリングされたキャッシュライン(WExit)に対するインバリデートプローブの検出、モニタユニット26AへのWake−up信号のアサート(Wakeup−ST)、あるいは、MWait命令および/あるいはプロセッサコアの実装に対して定義された任意のその他の終了条件(Other−Exit)に応答して、スリープ状態64からノーマル状態60へ変化し得る。
その他の終了条件は実施形態によって変化してもよいが、その他の終了条件として、プロセッサコア18Aに対する外部割込みのデリバリ、プロセッサコア18Aのリセットを含み得る。
プロセッサコア18Aによって実行されるコードを、下線を付した“プロセッサコア18A、ノード12A”との見出しの下方に示す。プロセッサコア18Bによって実行されるコードを、下線を付した“プロセッサコア18B、ノード12A”との見出しの下方に示す。プロセッサコア18Aは、monitor命令を実行し、モニタユニット26Aをモニタリングし、アームするためのキャッシュラインのアドレス”A”を確立する。
次に、このコードはアドレスAに対するチェックを含む(図6において、”チェック[A]”と記される)。
このチェックにおいて、モニタリングされたキャッシュライン内のメモリ位置を読出し、そのメモリ位置を所望の状態と比較する。
所望の状態がメモリ位置にあれば、チェックはMWait命令のまわりに分岐し、次の処理を継続する。
このチェックにより、monitor命令の実行との競合条件で生じたキャッシュラインの更新が検出され得る。
例では、所望の状態がキャッシュラインに存在せず、プロセッサコア18AはMWait命令を実行する。
よって、プロセッサコア18Aはスリープ状態に入る(矢印70)。
プロセッサコア18Aは再度アドレスAのチェックを行い(図6のチェック[A])、キャッシュラインにおいて所望の状態を検出する。従って、プロセッサコア18Aは他の命令とともに実行を継続する。
プロセッサコア18Aによって実行されるコードを、下線を付した“プロセッサコア18A、ノード12A”との見出しの下方に示す。プロセッサコア18Cによって実行されるコードを、下線を付した“プロセッサコア18C、ノード12B”との見出しの下方に示す。加えて、プロセッサコア18Cとプロセッサコア18A間の通信を、図7の中央部分に示す。
図6の例と同様に、プロセッサコア18Aは、monitor命令を実行し、モニタユニット26Aをモニタリングしアームするためのキャッシュラインのアドレス”A”を確立し、このアドレス”A”をチェックし、MWait命令を実行する。
従って、プロセッサコア18Aはスリープ状態に入る(矢印74)。
続いてブリッジ20Bはノード12Aにインバリデートプローブを送信する(また、そのインバリデートプローブはブリッジ20Aに到達する)。続いてブリッジ20Aはプロセッサコア18Aにインバリデートプローブを送信し、これによりインバリデートプローブのアドレスがレジスタ28Aのアドレスに一致することが検出される。この結果、プロセッサコア18Aはスリープ状態から抜け出る(矢印78)。プロセッサコア18Aは再度アドレスAのチェックを行い(図7のチェック[A])、キャッシュラインの所望の状態を検出する。従って、プロセッサコア18Aは他の命令とともに実行を継続する。
Claims (11)
- 第1の命令に応答して更新のためにアドレスレンジをモニタリングするように構成されたモニタユニット(26A)を備えたプロセッサコア(18A)であって、
前記プロセッサコア(18A)は、前記アドレスレンジの更新を待つために第1の状態(64)に入るよう構成されており、
前記モニタユニット(26A)は、前記第1の命令の実行に応答して、第2のプロセッサコア(18B)に対する前記アドレスレンジを識別するアドレスレンジインディケーションを通信するように構成されており、
前記モニタユニット(26A)は、第2のプロセッサコア(18B)から、前記第2プロセッサコア(18B)が前記アドレスレンジにおいて少なくとも1バイトを更新していることを示す信号(Wakeup-ST)を受信するように構成されており、前記プロセッサコア(18A)は、前記信号(Wakeup-ST)に応答して前記第1の状態(64)から抜け出るように構成されている、プロセッサコア。 - 前記アドレスレンジインディケーションは、連続したメモリバイトのブロックを識別するアドレスを含む、請求項1に記載のプロセッサコア。
- 前記コンピュータシステムの他のコンポーネントと通信するためのインターフェース(24C)をさらに有し、前記プロセッサコア(18A)はさらに、更新のインディケーションが前記アドレスレンジの更新を示していれば、前記インターフェース(24C)からの前記更新のインディケーションの受信に応答して、前記第1の状態(64)から抜け出るように構成されている、請求項1に記載のプロセッサコア。
- 前記更新のインディケーションはプローブである、請求項3に記載のプロセッサコア。
- 前記モニタユニット(26A)はさらに、前記第2プロセッサコア(18B)から受信した第2アドレスレンジインディケーションのシャドウコピーを記録するように構成されており、前記第2プロセッサコア(18B)は、前記第2アドレスレンジインディケーションによって示された第2アドレスレンジにおいて更新をモニタリングする、請求項1に記載のプロセッサコア。
- 前記モニタユニット(26A)は、前記第2アドレスレンジにおいて少なくとも1バイトを更新する第2書込みオペレーションを実行する前記プロセッサコア(18A)に応答して、第2プロセッサコア(18B)に信号を送信するように構成される、請求項5に記載のプロセッサコア。
- 前記第1の状態は、電力節約状態を含む、請求項1に記載のプロセッサコア。
- 前述のいずれかの請求項に記載された前記プロセッサコア(18A)と、
前記アドレスレンジインディケーションを受信するように結合されるとともに、前記アドレスレンジにおいて少なくとも1バイトを更新する書込み命令の実行に応答して、前記プロセッサコア(18A)に信号を送信するように構成された第2プロセッサコア(18B)、を含むシステム。 - 第1プロセッサコア(18A)が前記第1プロセッサコア(18A)からの更新をモニタリングしているアドレスレンジを識別するアドレスレンジインディケーションを第2プロセッサコア(18B)に通信するステップを有し、前記通信は、更新のために前記第1プロセッサコア(18A)に前記アドレスレンジをモニタリングさせるように定義された第1の命令の実行に応答するものであり、
前記第2プロセッサコア(18B)の前記アドレスレンジにおいて、少なくとも1バイトを更新する書込みオペレーションを実行するステップと、
前記書込みオペレーションに応答して、前記第1プロセッサコア(18A)に信号を送信するステップと、
前記信号に応答して、前記第1プロセッサコア(18A)が前記アドレスレンジにおいて前記更新を待っている第1の状態から抜け出るステップと、を含む方法。 - 前記第1プロセッサコアは、前記コンピュータシステムの他のコンポーネントと通信するためにインターフェースに結合されており、前記方法はさらに、前記インターフェースからの前記更新のインディケーションの受信に応答して、更新のインディケーションが前記アドレスレンジの更新を示していれば、前記第1プロセッサコアの第1の状態から抜けるステップを含む、請求項9に記載の方法。
- 前記更新のインディケーションはプローブである、請求項10に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/956,685 US7257679B2 (en) | 2004-10-01 | 2004-10-01 | Sharing monitored cache lines across multiple cores |
US10/956,685 | 2004-10-01 | ||
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 true JP2008515096A (ja) | 2008-05-08 |
JP2008515096A5 JP2008515096A5 (ja) | 2009-01-08 |
JP4982375B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010044770A (ja) * | 2003-06-27 | 2010-02-25 | Intel Corp | モニタメモリ待機を用いたキューされたロック |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9015399B2 (en) * | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
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 |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
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 |
US8782451B2 (en) * | 2010-12-22 | 2014-07-15 | Via Technologies, Inc. | Power state synchronization in a multi-core processor |
US8637212B2 (en) | 2010-12-22 | 2014-01-28 | Via Technologies, Inc. | Reticle set modification to produce multi-core dies |
US9460038B2 (en) | 2010-12-22 | 2016-10-04 | Via Technologies, Inc. | Multi-core microprocessor internal bypass bus |
US8631256B2 (en) | 2010-12-22 | 2014-01-14 | Via Technologies, Inc. | Distributed management of a shared power source to a multi-core microprocessor |
US8635476B2 (en) * | 2010-12-22 | 2014-01-21 | Via Technologies, Inc. | Decentralized power management distributed among multiple processor cores |
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 |
TWI450084B (zh) * | 2010-12-22 | 2014-08-21 | Via Tech Inc | 配置在多重處理器核心之間之分散式電源管理 |
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 |
CN106909444B (zh) | 2011-12-22 | 2021-01-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 |
US9507404B2 (en) | 2013-08-28 | 2016-11-29 | Via Technologies, Inc. | Single core wakeup 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 |
US9465432B2 (en) | 2013-08-28 | 2016-10-11 | Via Technologies, Inc. | Multi-core synchronization mechanism |
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 |
US11553337B2 (en) | 2019-12-10 | 2023-01-10 | Winkk, Inc. | Method and apparatus for encryption key exchange with enhanced security through opti-encryption channel |
CN113157543B (zh) * | 2021-05-14 | 2023-07-21 | 海光信息技术股份有限公司 | 一种可信度量方法及装置、服务器、计算机可读存储介质 |
US20220394023A1 (en) * | 2021-06-04 | 2022-12-08 | Winkk, Inc | Encryption for one-way data stream |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003058447A2 (en) * | 2001-12-31 | 2003-07-17 | Intel Corporation | A method and apparatus for suspending execution of a thread until a specified memory access occurs |
Family Cites Families (5)
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 |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
-
2004
- 2004-10-01 US US10/956,685 patent/US7257679B2/en active Active
-
2005
- 2005-09-21 KR KR1020077007487A patent/KR101216190B1/ko active IP Right Grant
- 2005-09-21 WO PCT/US2005/033819 patent/WO2006039162A2/en active Application Filing
- 2005-09-21 DE DE602005020960T patent/DE602005020960D1/de active Active
- 2005-09-21 JP JP2007534659A patent/JP4982375B2/ja active Active
- 2005-09-21 EP EP05800246A patent/EP1807754B1/en active Active
- 2005-09-21 CN CN2005800334872A patent/CN101036116B/zh active Active
- 2005-09-26 TW TW094133303A patent/TWI366132B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003058447A2 (en) * | 2001-12-31 | 2003-07-17 | Intel Corporation | A method and apparatus for suspending execution of a thread until a specified memory access occurs |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010044770A (ja) * | 2003-06-27 | 2010-02-25 | Intel Corp | モニタメモリ待機を用いたキューされたロック |
Also Published As
Publication number | Publication date |
---|---|
CN101036116B (zh) | 2010-08-11 |
TWI366132B (en) | 2012-06-11 |
JP4982375B2 (ja) | 2012-07-25 |
TW200627271A (en) | 2006-08-01 |
US20060075060A1 (en) | 2006-04-06 |
WO2006039162A3 (en) | 2007-03-15 |
WO2006039162A2 (en) | 2006-04-13 |
EP1807754A2 (en) | 2007-07-18 |
CN101036116A (zh) | 2007-09-12 |
DE602005020960D1 (de) | 2010-06-10 |
KR20070057906A (ko) | 2007-06-07 |
KR101216190B1 (ko) | 2012-12-28 |
US7257679B2 (en) | 2007-08-14 |
EP1807754B1 (en) | 2010-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4982375B2 (ja) | 複数のコアを介してのモニタリングされたキャッシュラインの共有 | |
JP7227680B2 (ja) | ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ | |
US7627722B2 (en) | Method for denying probes during proactive synchronization within a computer system | |
US8539485B2 (en) | Polling using reservation mechanism | |
TWI742032B (zh) | 用於使用者等級執行緒暫止的方法、設備及指令 | |
US6754859B2 (en) | Computer processor read/alter/rewrite optimization cache invalidate signals | |
US9454218B2 (en) | Apparatus, method, and system for early deep sleep state exit of a processing element | |
KR101814412B1 (ko) | 데이터 버퍼와 연관된 스누프 필터링의 제공 | |
US20090037932A1 (en) | Mechanism for broadcasting system management interrupts to other processors in a computer system | |
US8762599B2 (en) | Delegating a poll operation to another device | |
JP2011150422A (ja) | データ処理装置 | |
US20070073977A1 (en) | Early global observation point for a uniprocessor system | |
US7581042B2 (en) | I/O hub resident cache line monitor and device register update |
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 |