JPWO2012098812A1 - マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ - Google Patents
マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ Download PDFInfo
- Publication number
- JPWO2012098812A1 JPWO2012098812A1 JP2012553589A JP2012553589A JPWO2012098812A1 JP WO2012098812 A1 JPWO2012098812 A1 JP WO2012098812A1 JP 2012553589 A JP2012553589 A JP 2012553589A JP 2012553589 A JP2012553589 A JP 2012553589A JP WO2012098812 A1 JPWO2012098812 A1 JP WO2012098812A1
- Authority
- JP
- Japan
- Prior art keywords
- address
- data
- processor
- cache line
- access control
- 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
- 238000000034 method Methods 0.000 title claims description 36
- 238000012544 monitoring process Methods 0.000 claims abstract description 91
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 description 42
- 238000010586 diagram Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 24
- 230000010365 information processing Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
第1プロセッサと、第2プロセッサと、第3プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、第1プロセッサ、第2プロセッサ、第3プロセッサ及び主記憶装置を接続する共有バスとを具備する。第1プロセッサは、共有バスを介して、アドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部とを備える。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。アクセス制御部は、無効化された第1キャッシュラインに含まれる第1アドレスを監視データとして保持している状態で、第2プロセッサの要求に応じて第3プロセッサが共有バスに出力した第2アドレスと第2データとを受け取ると、第1アドレスと第2アドレスとが一致するか否かを判定し、一致する場合に第1アドレスと第2データとを関連付けて保持する。
Description
本発明はマルチプロセッサに関し、特に排他制御区間への進入権の獲得に関する。
複数のスレッドを並行して実行するように構成された情報処理システムでは、実行しているスレッドの任意の時点で、他のスレッドの実行が割り込むことがある。これらのスレッドが実行している処理の間に関連性がない場合には、割り込みが発生しても得られる結果に変わりはないため問題となることはない。しかし、スレッド処理途中にそのスレッドが実行している処理と関連性のある他のスレッドの割り込みが発生すると、割り込みが発生しなかった場合とは異なる結果が得られる可能性があり、何らかの対策が必要となる。
例えば、2つのスレッドが同一の変数に1を加える処理、即ち、変数を読み込んで1を加え、その結果を書き戻す処理を行うとする。問題となるのは、あるスレッドが変数を読み込んでから1を加えた結果を書き戻すまでの間に、もう1つのスレッド処理(変数に1を加える処理)が割り込んだ場合である。この割り込みが発生すると、最初に実行していた処理は、割り込んだ処理による変数の更新を感知することなく、当初の値に1を加えた値を変数に書き戻すことになる。スレッド処理の割り込みが生じない場合では、2つのスレッドがそれぞれ変数に1を加える処理を行なうため、結果として変数は2増加する。しかしながら、スレッド処理途中に他のスレッド処理が割り込むという順で処理が進められると、2つのスレッドが変数に1を加える操作を行なったにも関わらず、変数は1増加するだけで正しい結果は得られない。このように、処理の途中で他の処理に割り込まれると問題が発生する処理区間(既述の例では、データを読み込んでから加工した結果を書き戻すまでの区間)を排他制御区間やクリティカルセクションと呼び、他のスレッド処理が割り込まないようにするための制御を明示的に行うことになっている。尚、本明細書では、以降これを排他制御区間と称する。
プログラム実行を担うプロセッサが1個の場合を説明する。この場合、あるプログラムをスレッドとして実行中に、他のプログラムの実行(スレッド)が割り込むのは、最初のスレッド実行中にスレッド切り換えの契機となる何らかの事象が発生して、プロセッサとオペレーティングシステムとが協働して実現する実行部がスレッド切り換えを行うためである。このため、実行部に対して、他の処理(スレッド)への切り換えを禁止するように指示しておくことが有効となる。詳細には、実行部に対して、排他制御区間に入る時点で他の処理への切り換えを禁止し、且つ、そこから出る時点で他の処理への切り換えを許可するように指示すれば、その期間中に他の処理が割り込まないことが保証される。
これに対し、マルチプロセッサシステムでは、他の処理への切り換えを禁止するだけでは正しい処理結果を保証することはできない。他の処理への切り換え禁止は、そのプログラムを実行しているプロセッサに対してのみ有効であり、他のプロセッサによるプログラム実行には影響を与えないからである。他のプロセッサによるプログラム実行が排他制御区間に入らないようにするための方法として、排他制御区間を実行中のスレッドが存在するか否かを示すフラグ(以降、lock word)を用意する対処方法が一般的に行われている。
lock wordを用いた処理方法は以下のようになる。
(a1)あるプロセッサ(自プロセッサ)の実行部は、スレッドが排他制御区間に入る時点でlock wordを確認する。
(a2−1)実行部は、それが「未使用を示す値(以降、unlockedと表記)」であれば、lock wordを「使用中を示す値(以降、lockedと表記)」に変更して排他制御区間の処理を実行する。
(a2−2)それがlockedであれば、実行部はそのlock wordがunlockedになるまで待った後、それをlockedに変更して排他制御区間の処理を実行する。
(a3)実行部は、排他制御区間の実行を終了した時点で、lock wordをunlockedに戻す。
以上の制御を行うことにより、他のプロセッサが実行する処理と、自プロセッサが実行する処理とが、排他制御区間上で競合するという問題は発生しなくなる。
(a1)あるプロセッサ(自プロセッサ)の実行部は、スレッドが排他制御区間に入る時点でlock wordを確認する。
(a2−1)実行部は、それが「未使用を示す値(以降、unlockedと表記)」であれば、lock wordを「使用中を示す値(以降、lockedと表記)」に変更して排他制御区間の処理を実行する。
(a2−2)それがlockedであれば、実行部はそのlock wordがunlockedになるまで待った後、それをlockedに変更して排他制御区間の処理を実行する。
(a3)実行部は、排他制御区間の実行を終了した時点で、lock wordをunlockedに戻す。
以上の制御を行うことにより、他のプロセッサが実行する処理と、自プロセッサが実行する処理とが、排他制御区間上で競合するという問題は発生しなくなる。
また、排他制御区間について更に説明すると、排他制御区間は情報処理システムの性能の上限を決めるボトルネック要素ともなる。何故なら、マルチプロセッサシステムでは、あるスレッドが排他制御区間を実行(以下、他の資源と合わせるため「使用」と表記する)していると、その排他制御区間を使用する他のスレッドは、使用中のスレッドが退去するまで待つ必要があるからである。これは、プロセッサやdiskといった物理資源と同様、排他制御区間に対して待ち行列が形成されることを意味している。つまり、負荷の増大により、排他制御区間の使用率が他の資源よりも先に100%に近づく場合は、排他制御区間がシステム性能の上限を決めるボトルネックとなる。
排他制御区間の使用率は、単位時間当たりの使用回数と、1回の使用時間との積である。このため、情報処理システムの処理のスループット性能が飽和している状態で、且つ、排他制御区間がボトルネックの状況(使用率が100%となっている状況)では、前記2つの要因は反比例の関係になる。何故なら、排他制御区間がボトルネックになると、その単位時間当たりの使用回数が情報処理システムのスループット性能に対応するようになると考えられるからである。このような状況下で、情報処理システムのスループット性能の上限を増大させるには、排他制御区間1回の使用時間を短くすることが必要となる。
排他制御区間1回の使用時間は、排他制御区間に進入してから退去するまでのプログラム実行時間である。詳細には、(b1)その間に実行する命令数と、(b2)1命令当たりのクロック数(CPI: Clock Per Instruction)と、(b3)1クロック・サイクルの時間との積である。このうち、(b1)と(b3)の削減は容易ではなく、固定値として扱うことが多い。(b1)は排他制御区間で保護して行う処理の内容、即ち、プログラムで実装しているアルゴリズムで決まる要因であり、(b3)は情報処理システムのハードウェアで決まる要因だからである。一方、(b2)はプロセッサの命令実行アーキテクチャやキャッシュメモリのアーキテクチャといったさまざまな要素が関与しており、チューニングの余地は大きい。
次に、排他制御区間の実現に関する技術を説明する。排他制御区間の実現において重要な点は、スレッドが排他制御区間に入る時点で行うlock wordの値の確認(読み込み)と、unlockedだった場合のlockedへの変更(書き込み)の2操作が、排他制御区間と同様の扱いが必要となることである。このため、マルチプロセッサ向けの機能を有するプロセッサには、この操作を行うための命令が用意されている。例えば、非特許文献1には、インテルのx86プロセッサのcmpxchg命令が開示されている。これは、命令で予約されたレジスタ(eaxレジスタ)と、レジスタ・オペランドと、メモリ・オペランドとの3オペランドを使用する命令である。尚、このcmpxchg命令が行う操作は、Compare And Swap(CAS操作)と称されることが多い。
CAS命令の実行は以下のようになる。
(c1)あるプロセッサ(自プロセッサ)の実行部は、メモリ・オペランドの値を読み込む。
(c2−1)実行部は、その値がeaxレジスタの値と一致する場合は、メモリにレジスタ・オペランドの値を書き込む。
(c2−2)実行部は、その値がeaxレジスタの値と一致しない場合は、その値をeaxレジスタに書き込む。
これら一連の操作はアトミックに行われる。ここでのアトミックとは、(c1)のメモリ読み込み操作と、(c2−1)のメモリ書込み操作との間に、他のプロセッサがメモリにアクセスしないことをハードウェア動作によって保証されていることを意味する。
(c1)あるプロセッサ(自プロセッサ)の実行部は、メモリ・オペランドの値を読み込む。
(c2−1)実行部は、その値がeaxレジスタの値と一致する場合は、メモリにレジスタ・オペランドの値を書き込む。
(c2−2)実行部は、その値がeaxレジスタの値と一致しない場合は、その値をeaxレジスタに書き込む。
これら一連の操作はアトミックに行われる。ここでのアトミックとは、(c1)のメモリ読み込み操作と、(c2−1)のメモリ書込み操作との間に、他のプロセッサがメモリにアクセスしないことをハードウェア動作によって保証されていることを意味する。
前述のCAS命令を用いてlock操作を行うには、eaxレジスタにunlockedを入れ、レジスタ・オペランドにlockedを入れ、メモリ・オペランドをlock wordとした状態で、実行部がCAS命令を実行する。Lock wordがunlockedの場合は(c2−1)が実行されるので、実行部はlock wordをlockedに書き換え、eaxレジスタの値を変化させない。一方、lock wordがlockedの場合は(c2−2)が実行されるので、実行部はlock wordへの書き込みを行わず、eaxレジスタにlockedを設定する。CAS命令を実行した実行部は、CAS命令実行後のeaxレジスタの値を調べることで、lock操作が成功したか失敗したかを調べることができる。即ち、実行部は、排他制御区間を実行するのか、lock wordにunlockedが設定されるのを待つ状態であるのかの判断を行うことができる。
その他、マルチプロセッサシステムに関する技術として、特許文献1が開示されている。このマルチプロセッサシステムは、主記憶装置と、複数のデータ処理装置とにより構成される。各データ処理装置は、アドレスを含むブロック単位で主記憶装置の写しが保持されるバッファメモリを有する。データ処理装置は、他のデータ処理装置の主記憶装置への書き込みにより、自バッファメモリ内のブロックが無効化される場合、無効化されたブロックのアドレスを保持するアドレス保持機構を有する。データ処理装置は、主記憶装置にアクセスするときに、無効化されたブロックのアドレスが、アドレス保持機構に存在するときは、無効化されたブロックの写しを自バッファメモリに保持しないようにすることを特徴とする。これにより、各データ処理装置は、自バッファメモリを何度も無効化しなくなるため、マルチプロセッサシステムの効率低下を防止できるというものである。
"Intel64 and IA−32 Architectures Software Developer’s Manual Volume 2A:Instruction Set Reference, A−M"、[online]、インターネット<URL:http://www.intel.com/Assets/PDF/manual/253666.pdf>
CAS命令が成功する際に実行される共有バスアクセスは、キャッシュメモリのコヒーレンスプロトコルに依存する。以下に、コピーバック方式のキャッシュにおける動作を説明する。図1は、マルチプロセッサシステムの初期状態を示した図である。図1を参照すると、マルチプロセッサシステムは、複数のプロセッサ500(500−1〜500−n)と、メモリ600とを具備し、それぞれ共有バス700で接続されている。複数のプロセッサ500(500−1〜500−n)の各々は、命令実行部510(510−1〜510−n)と、キャッシュメモリ部520(520−1〜520−n)とを備える。キャッシュメモリ部520は複数のキャッシュラインを保持する。各キャッシュラインは、キャッシュラインの有効・無効を表す有効フラグ801と、データと、データのアドレスとを含む。図1では、複数のプロセッサ500(500−1〜500−n)は、データとしてlock word802を含むキャッシュラインを共有している。lock word802は、unlocked又はlockedを表し、初期のlock word802の値としてunlockedが斜線で表されている。
プロセッサ500−1がlock word802の値を変更する場合を説明する。図2は、プロセッサ500−1が、lock word802の変更を開始した状態を示した図である。まず、プロセッサ500−1は、プロセッサ500−2〜500−nの各々が有するlock word802のコピーを無効化する処理を行う。詳細には、プロセッサ500−1の命令実行部510−1は、キャッシュメモリ部520−1を介して、プロセッサ500−2〜500−nの各々に対して無効化するlock word802のアドレスを指定して、該当するキャッシュラインの無効化要求を出力する。尚、あるプロセッサ500が他のプロセッサ500に対して、無効化するデータのアドレスを指定して該当するキャッシュラインの無効化を要求することを、本明細書では無効化要求と称する。
プロセッサ500−2〜500−nの各々は、プロセッサ500−1からの無効化要求を受けとると、該当するキャッシュラインの有効フラグ801を無効に変更し、当該キャッシュラインを無効にする。この処理によって、lock word802の値を含む有効なキャッシュラインを持つのはプロセッサ500−1のみとなる。
続いて、プロセッサ500−1の命令実行部510−1は、lock word802の値を変更する。図3は、プロセッサ500−1の命令実行部510−1が、lock word802の値を変更した状態を示す図である。変更されたlock word802の値として、lockedが縦線で表されている。尚、コピーバック方式のキャッシュのため、プロセッサ500−1のlock word802の値が変更された直後は、メモリ600のlock word802と値が異なっていても良い。
プロセッサ500−2〜500−nの各々は、それぞれのlock word802を監視しており、排他制御区間への進入権を獲得する処理を行なう。図4は、命令実行部510−2〜510−nの各々が、それぞれのlock word802のアクセス要求を出力することを示した図である。命令実行部510−2〜510−nの各々は、それぞれのlock word802のアクセス要求を出力する。しかし、命令実行部510−2〜510−nの各々のアクセス要求は、それぞれのキャッシュメモリ部520−2〜520−nにミスするため、共有バス700を通したアクセス要求が出力される。その結果、プロセッサ500−2〜500−nの各々から出力された複数のアクセス要求が競合する。図4では、プロセッサ500−nのアクセス要求が最初に共有バス700に出力され、プロセッサ500−2、500−3のアクセス要求は待ち状態になったことを示している。プロセッサ500−nによるlock word802へのアクセス要求に対して、変更されたlock word802の値を保持しているのは、プロセッサ500−1のキャッシュメモリ部520である。従って、プロセッサ500−1は、変更したlock word802の値をプロセッサ500−nおよびメモリ600に提供する。図5は、プロセッサ500−1がlock word802を出力したことを示した図である。
プロセッサ500−nのアクセス要求に対する処理が完了した後、プロセッサ500−2のアクセス要求が出力され、プロセッサ500−3のアクセス要求が待ち状態になるとする。図6は、プロセッサ500−2が共有バス700にアクセス要求を出力した後の状態を示した図である。プロセッサ500−2によるlock word802へのアクセス要求に対しては、メモリ600が最新の値を保持しているため、プロセッサ500−2はメモリ600からlock word802の値を取得する。その後、プロセッサ500−3は、プロセッサ500−2と同様の処理を行う。
このように、複数のプロセッサ500がlock word802を監視して、排他制御区間への進入権を獲得する処理を同時に行なう場合、複数のプロセッサ500によるlock word802へのアクセスが次々に実行される。これは、共有バス700を介したアクセス回数の増大を表しており、共有バス700の使用率が高まることを意味している。共有バス700の使用率が高まると、排他制御区間への進入権を獲得する処理とは異なる処理を行なっている他のプロセッサ500についても、共有バス700を介したアクセスが待たされる時間が長くなる。このように、マルチプロセッサシステムには、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう状況において、共有バス700の使用率が高まり、システム全体の性能が低下する状態を招く問題がある。
本発明の目的は、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう状況下でも、性能低下を抑制できるマルチプロセッサシステムを提供することにある。
本発明のマルチプロセッサシステムは、第1プロセッサと、第2プロセッサと、第3プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、第1プロセッサ、第2プロセッサ、第3プロセッサ及び主記憶装置を接続する共有バスとを具備する。
第1プロセッサは、共有バスを介して、アドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部とを備える。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。
アクセス制御部は、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持している状態で、第2プロセッサの要求に応じて第3プロセッサが共有バスに出力した第2アドレスと第2データとを受け取ると、第1アドレスと第2アドレスとが一致するか否かを判定し、一致する場合に第1アドレスと第2データとを関連付けて保持する。
第1プロセッサは、共有バスを介して、アドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部とを備える。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。
アクセス制御部は、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持している状態で、第2プロセッサの要求に応じて第3プロセッサが共有バスに出力した第2アドレスと第2データとを受け取ると、第1アドレスと第2アドレスとが一致するか否かを判定し、一致する場合に第1アドレスと第2データとを関連付けて保持する。
本発明のマルチプロセッサ制御方法におけるマルチプロセッサは、第1プロセッサと、第2プロセッサと、第3プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、第1プロセッサ、第2プロセッサ、第3プロセッサ及び主記憶装置を接続する共有バスとを具備する。第1プロセッサは、共有バスを介して、アドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と、キャッシュラインに含まれるデータを用いて命令を実行する命令実行部とを備える。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。
マルチプロセッサ制御方法は、アクセス制御部が、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持するステップと、第2プロセッサが、第2アドレスを指定して第2データを要求するステップと、第3プロセッサが、第2プロセッサの要求に応じて、第2アドレスと第2データと共有バスに出力するステップと、アクセス制御部が、共有バスを介して、第2アドレスと第2データとを受け取るステップと、アクセス制御部が、第1アドレスと第2アドレスとが一致するか否かを判定するステップと、アクセス制御部が、第1アドレスと第2アドレスとが一致する場合、第1アドレスと第2データとを関連付けて保持するステップとを具備する。
マルチプロセッサ制御方法は、アクセス制御部が、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持するステップと、第2プロセッサが、第2アドレスを指定して第2データを要求するステップと、第3プロセッサが、第2プロセッサの要求に応じて、第2アドレスと第2データと共有バスに出力するステップと、アクセス制御部が、共有バスを介して、第2アドレスと第2データとを受け取るステップと、アクセス制御部が、第1アドレスと第2アドレスとが一致するか否かを判定するステップと、アクセス制御部が、第1アドレスと第2アドレスとが一致する場合、第1アドレスと第2データとを関連付けて保持するステップとを具備する。
本発明のプロセッサは、共有バスを介して、主記憶装置に格納されたアドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部とを具備する。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。
アクセス制御部は、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持している状態で、共有バスに接続された第2プロセッサの要求に応じて、共有バスに接続された第3プロセッサが共有バスに出力した第2アドレスと第2データとを受け取ると、第1アドレスと第2アドレスとが一致するか否かを判定し、一致する場合に第1アドレスと第2データとを関連付けて保持する。
アクセス制御部は、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持している状態で、共有バスに接続された第2プロセッサの要求に応じて、共有バスに接続された第3プロセッサが共有バスに出力した第2アドレスと第2データとを受け取ると、第1アドレスと第2アドレスとが一致するか否かを判定し、一致する場合に第1アドレスと第2データとを関連付けて保持する。
本発明のマルチプロセッサシステムは、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう場合でも、共有バス待ち時間の増加を抑えて、性能低下を防止することができる。
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態から、より明らかになる。
以下、添付図面を参照して本発明の実施の形態によるマルチプロセッサシステムを説明する。
図7は、本発明のマルチプロセッサシステムの構成を示すブロック図である。図7を参照すると、本発明のマルチプロセッサシステム1は、複数のプロセッサ10(10−1〜10−n)と、メモリ20と、共有バス30とを具備する。複数のプロセッサ10(10−1〜10−n)と、メモリ20とは、共有バス30で接続される。
本発明の実施の形態によるマルチプロセッサシステム1は、コンピュータシステムにおける主要な構成要素である。プロセッサ10は、メモリ20に格納されている本発明のマルチプロセッサシステム1に係る演算処理及び制御処理を行う。メモリ20は、情報の記録を行う主記憶装置であり、CD−ROMやDVD等のコンピュータ読み取り可能な記憶媒体から読み取られたプログラム、ネットワーク(図示略)を介してダウンロードされたプログラム、入力装置(図示略)から入力された信号やプログラム、及びプロセッサ10の処理結果などを格納する。
複数のプロセッサ10(10−1〜10−n)の各々の詳細を説明する。尚、複数のプロセッサ10(10−1〜10−n)の各々は同様の構成であるため、プロセッサ10−1を参照して説明する。ここでは、プロセッサ10−1をプロセッサ10と称して説明し、その他のプロセッサ10を説明する必要があるときは他プロセッサ10と称して説明する。尚、説明するプロセッサ10の各部は、ハードウェアとソフトウェアとを単独又は組み合わせて実現することが出来る。
プロセッサ10は、命令実行部11と、キャッシュメモリ部12と、アクセス制御部13とを備える。
命令実行部11は、キャッシュメモリ部12及びアクセス制御部13を介して、メモリ20から実行すべき命令や、命令の実行に必要な数値などのデータを読み出す。そして、命令実行部11は、キャッシュメモリ部12(キャッシュライン50)に含まれるデータを用いて命令を実行する。
キャッシュメモリ部12は、アドレス、データ、及び有効フラグを含む複数のキャッシュライン50を保持する。アドレスはメモリ20のアドレスを示し、有効フラグはキャッシュライン50の有効・無効を示す。尚、プロセッサ10のキャッシュメモリ部12と、他プロセッサ10のキャッシュメモリ部とは、コヒーレンスプロトコルによって一貫性が保たれているとする。
キャッシュメモリ部12は、命令実行部11からアドレスを指定したデータのアクセス要求を受け取ると、複数のキャッシュライン50を参照して、受け取ったアドレスが有効なキャッシュライン50に存在するか否かを判定する。データのアドレスが、有効なキャッシュライン50に存在する場合(キャッシュヒット)、キャッシュメモリ部12は命令実行部11にデータを提供する。一方、データのアドレスが有効なキャッシュライン50に存在しない場合(キャッシュミス)、キャッシュメモリ部12は、アクセス制御部13にアドレスを含むデータのアクセス要求を提供する。
また、キャッシュメモリ部12は、共有バス30を介して、他プロセッサ10が出力したキャッシュライン50を無効化する要求を受け取ると、有効フラグを無効化する(無効化処理)。詳細には、キャッシュメモリ部12は、他プロセッサ10から出力された無効化要求に含まれるアドレスが複数のキャッシュライン50の何れかに存在する場合、該当するキャッシュライン50を無効化する。
アクセス制御部13は、共有バス30を介して、メモリ20及び他プロセッサ10との間でアドレス及びデータの受け渡しを行う。アクセス制御部13は、共有データ監視部14と、共有バスアクセス制御部15とを含む。
共有データ監視部14は、監視対象としての複数の監視データ60を有する。複数の監視データ60の各々は、アドレス有効フラグと、データ有効フラグと、アドレスと、データとを含む。共有データ監視部14は、キャッシュライン50の有効フラグが無効化されると、無効化されたキャッシュライン50のアドレスを監視対象として監視データ60のアドレスに保持する。共有データ監視部14は、無効化されたキャッシュライン50に含まれるアドレスを監視データ60に保持している状態で、他プロセッサ10の要求に応じて、更に別の他プロセッサ10が共有バス30に出力したアドレスとデータとを受け取ると、保持しているアドレスと受け取ったアドレスとが一致するか否かを判定する。そして、共有データ監視部14は、一致する場合に保持しているアドレスと受け取ったデータとを関連付けて保持する。
また、共有データ監視部14は、キャッシュミスに基づくアクセス要求をキャッシュメモリ部12から受け取ると、アクセス要求のアドレスに対応する提供可能なデータが監視データ60に保持されているか否かを判定する。保持されている場合、共有データ監視部14は、アドレスに関連づけられたデータを命令実行部11及びキャッシュメモリ部12に提供する。保持されていない場合、共有データ監視部14は、そのアクセス要求を共有バス30に出力するために、共有バスアクセス制御部15に提供する。尚、これらの共有データ監視部14の詳細な動作は後述する。
共有バスアクセス制御部15は、キャッシュミスに基づくアクセス要求をキャッシュメモリ部12から受け取ったとき、共有データ監視部14が提供可能なデータを保持しているときは、アクセス要求を共有バス30に出力せずプロセッサ10での処理を継続させる。一方、共有バスアクセス制御部15は、共有データ監視部14が提供可能なデータを保持していなければ、アクセス要求を共有バス30に出力する。
本発明のマルチプロセッサシステム1の実施の形態による処理動作を説明する。
図8は、本発明のマルチプロセッサシステム1の初期状態を示した図である。図8を参照すると、プロセッサ10−1〜10−nの各々は、メモリ20のデータ70のコピーをそれぞれのキャッシュメモリ部12−1〜12−nに保持して共有している。メモリ20に格納されたデータ70の初期値は斜線で表されている。データ70のコピーを含むキャッシュライン50−1〜50−nの各々の有効フラグは有効に設定されている。尚、図8では簡易的に表示するために、キャッシュライン50−1〜50−nに含まれるアドレス、監視データ60に含まれるアドレス、及び、監視データ60に含まれるアドレス有効フラグは省略されている。また、アクセス制御部13の共有データ監視部14及び共有バスアクセス制御部15も省略されている。
<プロセッサ10−1の無効化要求とデータの変更>
プロセッサ10−1において、命令実行部11−1が命令実行に伴ってメモリ20へのデータ書き込み操作が必要となった、つまり、キャッシュメモリ部12−1に保持されたデータ70を変更する処理を行うとする。まず、命令実行部11−1は、プロセッサ10−2〜10−nの各々に保持されているそれぞれのデータ70を無効化する処理を行う。詳細には、命令実行部11−1は、データ70のアドレスを指定して、そのアドレスを含むキャッシュライン50−2〜50−nの各々を無効化するための要求(無効化要求)を、キャッシュメモリ部12−1に提供する。
プロセッサ10−1において、命令実行部11−1が命令実行に伴ってメモリ20へのデータ書き込み操作が必要となった、つまり、キャッシュメモリ部12−1に保持されたデータ70を変更する処理を行うとする。まず、命令実行部11−1は、プロセッサ10−2〜10−nの各々に保持されているそれぞれのデータ70を無効化する処理を行う。詳細には、命令実行部11−1は、データ70のアドレスを指定して、そのアドレスを含むキャッシュライン50−2〜50−nの各々を無効化するための要求(無効化要求)を、キャッシュメモリ部12−1に提供する。
キャッシュメモリ部12−1は、命令実行部11−1から無効化要求を受け取ると、共有バスアクセス制御部15−1に無効化要求を提供する。共有バスアクセス制御部15−1は、キャッシュメモリ部12−1から無効化要求を受け取ると、共有バス30に無効化要求を出力する。
プロセッサ10−2〜10−nの各々では、それぞれの共有バスアクセス制御部15−2〜15−nが、プロセッサ10−1から出力された無効化要求を受け取り、それぞれのキャッシュメモリ部12−2〜12−n、及び、それぞれの共有データ監視部14−2〜14−nに提供する。プロセッサ10−1の無効化要求とデータの変更に関しては、プロセッサ10−2〜10−nの各々は同様の動作をするため、プロセッサ10−nを代表として用いて動作を説明する。
キャッシュメモリ部12−nは、プロセッサ10−1から出力された無効化要求に含まれるアドレスが複数のキャッシュライン50−nの何れかに存在する場合、該当するキャッシュライン50−nを無効化する(無効化処理)。詳細には、キャッシュメモリ部12−nは、保持している全てのキャッシュライン50−nのアドレスと、受け取ったアドレスとを比較し、一致するキャッシュライン50−nが存在するか否かを判定する。一致するキャッシュライン50−nが存在する場合、キャッシュメモリ部12−nは、一致したキャッシュライン50−nの有効フラグを無効に変更する。但し、キャッシュメモリ部12−nは、アドレスの値に基づいて保持するキャッシュライン50−nの範囲を予め限定している場合、一致する可能性のあるキャッシュライン50−nの範囲のみ比較してもよい。そして、キャッシュメモリ部12−nは、キャッシュライン50−nを無効化したことを示す信号(スヌープヒット信号)を共有データ監視部14−nに提供する。
共有データ監視部14−nは、キャッシュライン50−nが無効化されると、他のプロセッサ10(プロセッサ10−n以外)で変更されたデータ70を受け取れるように、無効化されたアドレスを監視する。つまり、共有データ監視部14−nは、キャッシュライン50−nの有効フラグが無効化されると、無効化されたキャッシュライン50−nのアドレスを監視対象として監視データ60のアドレスに保持する。詳細には、共有データ監視部14−nは、共有バスアクセス制御部15−nから無効化要求を受け取っている状態で、キャッシュメモリ部12−nからスヌープヒット信号を受け取ると、無効化要求に含まれるアドレスを監視データ60−nのアドレスに設定する。そして、共有データ監視部14−nは、アドレスに対応するアドレス有効フラグを有効に設定する。これによって、共有データ監視部14−nは、キャッシュライン50−nで無効化されたアドレスを監視するように動作する。尚、共有データ監視部14−nは、監視データ60−nを参照したとき、無効化要求に含まれるアドレスに対応するデータ70のデータ有効フラグが有効である場合には、そのデータ70を使用しないように、データ70のデータ有効フラグを無効に設定する。図9は、プロセッサ10−2〜10−nの各々が無効化処理を実行したことを示す図である。図9を参照すると、プロセッサ10−2〜10−nの各々において、データ70を含むそれぞれのキャッシュライン50−2〜50−nは、有効フラグが無効に設定されている。但し、図9は簡略化しているため、監視データ60−1〜60−nの各々における、データ70のアドレスと、有効になったアドレス有効フラグとは省略されている。
命令実行部11−1は、データ70を含む有効なキャッシュライン50(有効に設定された有効フラグを含むキャッシュライン50)を持つのがプロセッサ10−1のみとした後、データ70を変更する。図10は、命令実行部11−1がデータ70を変更したことを示す図である。変更されたデータ70の値は縦線で表されている。コヒーレンスプロトコルがコピーバック方式の場合、命令実行部11−1はキャッシュメモリ部12−1に対してのみデータ70の変更を行う。従って、命令実行部11−1がデータ70を変更した直後は、メモリ20のデータ70とプロセッサ10−1のデータ70とで値は異なることになる。尚、排他制御を実現するためのCAS命令による書き込みの場合、CAS命令実行前に無効化操作を行った後、キャッシュメモリ部12−1のデータに対して読み込みと書き込み操作を行うようになっている。
<プロセッサ10−nのキャッシュミス>
プロセッサ10−nが、データ70を必要になったとする。命令実行部11−nは、データ70のアドレスを含むデータ70のアクセス要求を、キャッシュメモリ部12−nに提供する。
プロセッサ10−nが、データ70を必要になったとする。命令実行部11−nは、データ70のアドレスを含むデータ70のアクセス要求を、キャッシュメモリ部12−nに提供する。
キャッシュメモリ部12−nは、命令実行部11−nからデータ70のアクセス要求を受け取ると、複数のキャッシュライン50−nを参照し、受け取ったアドレスが有効なキャッシュライン50−nに存在するか否かを判定する。データ70のアドレスが有効なキャッシュライン50−nに存在する場合(キャッシュヒット)、キャッシュメモリ部12−nは命令実行部11−nにデータ70を提供する。一方、データ70のアドレスが有効なキャッシュライン50−nに存在しない場合(キャッシュミス)、キャッシュメモリ部12−nは共有バスアクセス制御部15−n、及び、共有データ監視部14−nに対してデータ70のアクセス要求を提供する。
共有データ監視部14−nは、キャッシュミスに基づくアクセス要求をキャッシュメモリ部12−nから受け取ると、アクセス要求のアドレスに対応する提供可能なデータ70が監視データ60−nに保持されているか否かを判定する。保持されている場合、共有データ監視部14−nは、アドレスに関連づけられたデータ70を命令実行部11−n及びキャッシュメモリ部12−nに提供する。保持されていない場合、共有データ監視部14−nは、そのアクセス要求を共有バス30に出力するために、共有バスアクセス制御部15−nに提供する。詳細には、共有データ監視部14−nは、データ70のアクセス要求に含まれるアドレスが、監視データ60−nのアドレスに含まれているか否かと、そのアドレスに対応するアドレス有効フラグが有効であるか否かと、そのアドレスに対応するデータ70のデータ有効フラグが有効であるか否かの3つを判定する。共有データ監視部14−nは、データ70のアクセス要求に含まれるアドレスが監視データ60−nのアドレスに含まれており、且つ、そのアドレスに対応するアドレス有効フラグが有効であり、且つ、そのアドレスに対応するデータ70のデータ有効フラグが有効であると判定した場合、提供可能な変更されたデータ70が保持されていると判定する。そして、共有データ監視部14−nは、提供可能な変更されたデータ70をキャッシュメモリ部12−nに提供し、更に、提供可能な変更されたデータ70が保持されていることを示す信号(バッファヒット信号)を、共有バスアクセス制御部15−nに提供する。
尚、ここに記載した動作は、前述したプロセッサ10−1の無効化要求とデータの変更という操作の直後に、プロセッサ10−nがデータ70を必要になったときの動作であるので、ここでは提供可能な変更されたデータ70が保持されていない。従って、共有データ監視部14−nは、提供可能な変更されたデータ70が保持されていないと判定し、バッファヒット信号を提供しない。
尚、ここに記載した動作は、前述したプロセッサ10−1の無効化要求とデータの変更という操作の直後に、プロセッサ10−nがデータ70を必要になったときの動作であるので、ここでは提供可能な変更されたデータ70が保持されていない。従って、共有データ監視部14−nは、提供可能な変更されたデータ70が保持されていないと判定し、バッファヒット信号を提供しない。
共有バスアクセス制御部15−nは、キャッシュミスに基づくアクセス要求をキャッシュメモリ部12−nから受け取ったとき、共有データ監視部14−nが提供可能なデータを保持しているときは、アクセス要求を共有バス30に出力せずプロセッサ10−nでの処理を継続させる。一方、共有バスアクセス制御部15−nは、共有データ監視部14−nが提供可能なデータを保持していなければ、アクセス要求を共有バス30に出力する。詳細には、共有バスアクセス制御部15−nは、キャッシュメモリ部12−nからデータ70のアクセス要求を受け取った状態で、共有データ監視部14−nからバッファヒット信号を受け取る場合、データ70のアクセス要求を共有バス30に出力せず、プロセッサ10−nでの処理を継続させる。一方、共有バスアクセス制御部15−nは、キャッシュメモリ部12−nからデータ70のアクセス要求を受け取った状態で、共有データ監視部14−nからバッファヒット信号を受け取らない場合、データ70のアクセス要求を共有バス30に出力する。即ち、共有バスアクセス制御部15−nは、共有バス30に接続された複数の他のプロセッサ10(10−nを除く)から、変更されたデータ70を取得するように動作する。
ここでは、共有バスアクセス制御部15−nが、共有バス30にデータ70のアクセス要求を出力するように動作したとする。図11は、プロセッサ10−nがデータ70のアクセス要求を共有バス30に出力したことを示す図である。
ここでは、共有バスアクセス制御部15−nが、共有バス30にデータ70のアクセス要求を出力するように動作したとする。図11は、プロセッサ10−nがデータ70のアクセス要求を共有バス30に出力したことを示す図である。
<プロセッサ10−nからのアクセス要求に対する応答>
プロセッサ10−nを除く複数のプロセッサ10の各々では、それぞれの共有バスアクセス制御部15(15−n以外)がデータ70のアクセス要求を受け取り、それぞれのキャッシュメモリ部12(12−n以外)、及び、それぞれの共有データ監視部14(14−n以外)に提供する。ここでは、プロセッサ10−1が更新されたデータ70を保持しているため、プロセッサ10−1は変更されたデータ70とそのアドレスを含むデータ70の応答を共有バス30に出力する。
プロセッサ10−nを除く複数のプロセッサ10の各々では、それぞれの共有バスアクセス制御部15(15−n以外)がデータ70のアクセス要求を受け取り、それぞれのキャッシュメモリ部12(12−n以外)、及び、それぞれの共有データ監視部14(14−n以外)に提供する。ここでは、プロセッサ10−1が更新されたデータ70を保持しているため、プロセッサ10−1は変更されたデータ70とそのアドレスを含むデータ70の応答を共有バス30に出力する。
このときのプロセッサ10−1の動作を説明する。共有バスアクセス制御部15−1は、データ70のアクセス要求に含まれるアドレスを、キャッシュメモリ部12−1に提供する。キャッシュメモリ部12−1は、変更されたデータ70を含む有効なキャッシュライン50−1が存在するか否かを判定する。キャッシュメモリ部12−1は、変更されたデータ70を含む有効なキャッシュライン50−1が存在していると判定し、変更されたデータ70を共有バスアクセス制御部15−1に提供する。共有バスアクセス制御部15−1は、データ70の応答を共有バス30に出力する。
一方、プロセッサ10−1及びプロセッサ10−nを除く、その他のプロセッサ10(10−2〜10−n−1)の動作を説明する。プロセッサ10−nからのアクセス要求に対する応答に関しては、プロセッサ10−2〜10−n−1の各々は同様の動作をするためプロセッサ10−2を代表として説明する。共有バスアクセス制御部15−2は、データ70のアクセス要求に含まれるアドレスを、キャッシュメモリ部12−2に提供する。キャッシュメモリ部12−2は、変更されたデータ70を含む有効なキャッシュライン50−2が存在するか否かを判定する。キャッシュメモリ部12−2は、変更されたデータ70を含む有効なキャッシュライン50−2が存在していないと判定し、共有バスアクセス制御部15−2にデータ70の応答を提供しない。
<プロセッサ10−nの応答処理>
プロセッサ10−nの共有バスアクセス制御部15−nは、データ70の応答を取得する。共有バスアクセス制御部15−nはデータ70の応答を、キャッシュメモリ部12−n、及び命令実行部11−nに提供する。キャッシュメモリ部12−nは、データ70の応答に含まれるアドレス及び変更されたデータ70をキャッシュライン50−nに保持し、そのキャッシュライン50−nの有効フラグを有効に設定する。また、命令実行部11−nは、命令の実行を継続する。
プロセッサ10−nの共有バスアクセス制御部15−nは、データ70の応答を取得する。共有バスアクセス制御部15−nはデータ70の応答を、キャッシュメモリ部12−n、及び命令実行部11−nに提供する。キャッシュメモリ部12−nは、データ70の応答に含まれるアドレス及び変更されたデータ70をキャッシュライン50−nに保持し、そのキャッシュライン50−nの有効フラグを有効に設定する。また、命令実行部11−nは、命令の実行を継続する。
<プロセッサ10−2〜10−n−1の応答処理>
一方、プロセッサ10−2〜10−n−1の各々では、プロセッサ10−1の無効化要求で説明したように、キャッシュライン50−2〜50−n−1のそれぞれが無効化されたことで、他のプロセッサ10で変更されたデータ70を受け取れるように、無効化されたアドレスを監視している。プロセッサ10−2〜10−n−1の応答処理に関しては、プロセッサ10−2〜10−n−1の各々は同様の動作をするため、プロセッサ10−2を代表として用いて動作を説明する。
一方、プロセッサ10−2〜10−n−1の各々では、プロセッサ10−1の無効化要求で説明したように、キャッシュライン50−2〜50−n−1のそれぞれが無効化されたことで、他のプロセッサ10で変更されたデータ70を受け取れるように、無効化されたアドレスを監視している。プロセッサ10−2〜10−n−1の応答処理に関しては、プロセッサ10−2〜10−n−1の各々は同様の動作をするため、プロセッサ10−2を代表として用いて動作を説明する。
プロセッサ10−2の共有バスアクセス制御部15−2は、データ70の応答を取得する。共有バスアクセス制御部15−2はデータ70の応答を、共有データ監視部14−2に提供する。共有データ監視部14−2は、データ70の応答が監視対象であるか否かを判定する。つまり、共有データ監視部14−2は、無効化されたキャッシュライン50−2に含まれるアドレスを監視データ60−2に保持している状態で、プロセッサ10−nの要求に応じてプロセッサ10−1が共有バス30に出力したアドレスとデータとを受け取ると、保持しているアドレスと受け取ったアドレスとが一致するか否かを判定する。そして、共有データ監視部14−2は、一致する場合に保持しているアドレスと受け取ったデータとを関連付けて保持する。詳細には、共有データ監視部14−2は、データ70の応答に含まれるアドレスが、監視データ60−2のアドレスに設定されたアドレスに一致するか否か、及び、そのアドレスに対応するアドレス有効フラグが有効であるか否かを判定する。データ70の応答が監視対象である場合、共有データ監視部14−2はその監視データ60−2に変更されたデータ70を保持し、変更されたデータ70に対応するデータ有効フラグを有効に設定する。図12は、プロセッサ10−2〜10−n−1の各々で、それぞれの共有データ監視部14−2〜14−n−1が、変更されたデータ70を保持したことを示す図である。
このとき、メモリ20は共有バス30から変更されたデータ70を取得する。
<プロセッサ10−2のキャッシュミス>
ここで、プロセッサ10−2が、データ70を必要になったとする。命令実行部11−2は、データ70のアドレスを含むデータ70のアクセス要求を、キャッシュメモリ部12−2に提供する。
ここで、プロセッサ10−2が、データ70を必要になったとする。命令実行部11−2は、データ70のアドレスを含むデータ70のアクセス要求を、キャッシュメモリ部12−2に提供する。
キャッシュメモリ部12−2は、命令実行部11−2からデータ70のアクセス要求を受け取ると、複数のキャッシュライン50−2を参照し、受け取ったアドレスが有効なキャッシュライン50−2の何れかに存在するか否かを判定する。しかし、データ70のアドレスが有効なキャッシュライン50−2に存在しないため(キャッシュミス)、キャッシュメモリ部12−2は、共有データ監視部14−2、及び、共有バスアクセス制御部15−2に対してデータ70のアクセス要求を提供する。
共有データ監視部14−2は、キャッシュメモリ部12−2からデータ70のアクセス要求を受け取ると、監視データ60−2を参照して、提供可能な変更されたデータ70が保持されているか否かを判定する。詳細には、共有データ監視部14−2は、データ70のアクセス要求に含まれるアドレスが、監視データ60−2のアドレスに含まれているか否かと、そのアドレスに対応するアドレス有効フラグが有効であるか否かと、そのアドレスに対応するデータ70のデータ有効フラグが有効であるか否かとの3つを判定する。共有データ監視部14−2は、データ70のアクセス要求に含まれるアドレスが監視データ60−2のアドレスに含まれており、且つ、そのアドレスに対応するアドレス有効フラグが有効であり、且つ、そのアドレスに対応するデータ70のデータ有効フラグが有効であると判定する。つまり、提供可能な変更されたデータ70が保持されていると判定する。そして、共有データ監視部14−2は、提供可能な変更されたデータ70をキャッシュメモリ部12−2に提供し、更に、提供可能な変更されたデータ70が保持されていることを示す信号(バッファヒット信号)を、共有バスアクセス制御部15−2に提供する。
共有バスアクセス制御部15−2は、キャッシュメモリ部12−2からデータ70のアクセス要求を受け取った状態で、共有データ監視部14−2からバッファヒット信号を受け取るので、データ70のアクセス要求を共有バス30に出力せず、プロセッサ10−2での処理を継続させる。図13は、プロセッサ10−2において、共有データ監視部14−2からキャッシュメモリ部12−2へ、更新されたデータ70が提供されたことを示す図である。
プロセッサ10−3〜10−n−1がデータ70を必要になった場合も、プロセッサ10−2と同様に動作する。つまり、複数のプロセッサ10(10−2〜10−n−1)が進入権を獲得する処理を同時に行う場合でも、共有バス30の待ち時間が抑えられる効果を奏している。
以上のように、本発明のマルチプロセッサシステム1は、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう場合でも、共有バス30待ち時間の増加を抑えることができる。即ち、本発明のマルチプロセッサシステム1は、排他制御区間の状態を管理するデータに対する共有バス30経由のアクセスが集中しないように動作するため、プログラムの性能を向上させることができる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2011年1月18日に出願された日本出願特願2011−008120を基礎とする優先権を主張し、その開示の全てをここに取り込む。
Claims (6)
- 第1プロセッサと、
第2プロセッサと、
第3プロセッサと、
アドレスに関連付けてデータを格納する主記憶装置と、
前記第1プロセッサ、前記第2プロセッサ、前記第3プロセッサ及び前記主記憶装置を接続する共有バスと
を具備し、
前記第1プロセッサは、
前記共有バスを介して、前記アドレス及び前記データを受け取るアクセス制御部と、
前記アドレス、前記データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と
を備え、
前記キャッシュメモリ部は、前記共有バスを介した前記キャッシュラインを無効化する要求を受け取ると前記フラグを無効化し、
前記アクセス制御部は、前記キャッシュラインの前記フラグが無効化されると、前記アドレスを監視対象として保持し、
前記アクセス制御部は、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持している状態で、前記第2プロセッサの要求に応じて前記第3プロセッサが前記共有バスに出力した第2アドレスと第2データとを受け取ると、前記第1アドレスと前記第2アドレスとが一致するか否かを判定し、一致する場合に前記第1アドレスと前記第2データとを関連付けて保持する
マルチプロセッサシステム。 - 請求項1に記載のマルチプロセッサシステムであって、
前記第1プロセッサは、
前記キャッシュラインに含まれる前記データを用いて命令を実行する命令実行部
を更に備え、
前記命令実行部が、前記第1アドレスを指定して前記第1キャッシュラインに含まれる第1データを要求したとき、
前記キャッシュメモリ部は、前記第1キャッシュラインが無効化されていることに基づいて、前記第1アドレスを前記アクセス制御部に提供し、
前記アクセス制御部は、前記第1アドレスに関連づけられた前記第2データを、前記命令実行部及び前記キャッシュメモリ部に提供する
マルチプロセッサシステム。 - 第1プロセッサと、第2プロセッサと、第3プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、前記第1プロセッサ、前記第2プロセッサ、前記第3プロセッサ及び前記主記憶装置を接続する共有バスとを具備し、
前記第1プロセッサは、
前記共有バスを介して、前記アドレス及び前記データを受け取るアクセス制御部と、
前記アドレス、前記データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と、
前記キャッシュラインに含まれる前記データを用いて命令を実行する命令実行部と
を備え、
前記キャッシュメモリ部は、前記共有バスを介した前記キャッシュラインを無効化する要求を受け取ると前記フラグを無効化し、
前記アクセス制御部は、前記キャッシュラインの前記フラグが無効化されると、前記アドレスを監視対象として保持するマルチプロセッサシステムのマルチプロセッサ制御方法であって、
前記アクセス制御部が、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持するステップと、
前記第2プロセッサが、第2アドレスを指定して第2データを要求するステップと、
前記第3プロセッサが、前記第2プロセッサの要求に応じて、前記第2アドレスと前記第2データと前記共有バスに出力するステップと、
前記アクセス制御部が、前記共有バスを介して、前記第2アドレスと前記第2データとを受け取るステップと、
前記アクセス制御部が、前記第1アドレスと前記第2アドレスとが一致するか否かを判定するステップと、
前記アクセス制御部が、前記第1アドレスと前記第2アドレスとが一致する場合、前記第1アドレスと前記第2データとを関連付けて保持するステップと
を具備する
マルチプロセッサ制御方法。 - 請求項3に記載のマルチプロセッサ制御方法であって、
前記命令実行部が、前記第1アドレスを指定して前記第1キャッシュラインに含まれる第1データを要求するステップと、
前記キャッシュメモリ部が、前記第1キャッシュラインが無効化されていることに基づいて、前記第1アドレスを前記アクセス制御部に提供するステップと、
前記アクセス制御部が、前記第1アドレスに関連づけられた前記第2データを、前記命令実行部及び前記キャッシュメモリ部に提供するステップと
を更に具備する
マルチプロセッサ制御方法。 - 共有バスを介して、主記憶装置に格納されたアドレス及びデータを受け取るアクセス制御部と、
前記アドレス、前記データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と
を具備し、
前記キャッシュメモリ部は、前記共有バスを介した前記キャッシュラインを無効化する要求を受け取ると前記フラグを無効化し、
前記アクセス制御部は、前記キャッシュラインの前記フラグが無効化されると、前記アドレスを監視対象として保持し、
前記アクセス制御部は、無効化された第1キャッシュラインに含まれる第1アドレスを監視対象として保持している状態で、前記共有バスに接続された第2プロセッサの要求に応じて、前記共有バスに接続された第3プロセッサが前記共有バスに出力した第2アドレスと第2データとを受け取ると、前記第1アドレスと前記第2アドレスとが一致するか否かを判定し、一致する場合に前記第1アドレスと前記第2データとを関連付けて保持する
プロセッサ。 - 請求項5に記載のプロセッサであって、
前記プロセッサは、
前記キャッシュラインに含まれる前記データを用いて命令を実行する命令実行部
を更に具備し、
前記命令実行部が、前記第1アドレスを指定して前記第1キャッシュラインに含まれる第1データを要求したとき、
前記キャッシュメモリ部は、前記第1キャッシュラインが無効化されていることに基づいて、前記第1アドレスを前記アクセス制御部に提供し、
前記アクセス制御部は、前記第1アドレスに関連づけられた前記第2データを、前記命令実行部及び前記キャッシュメモリ部に提供する
プロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012553589A JP5828324B2 (ja) | 2011-01-18 | 2011-12-27 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011008120 | 2011-01-18 | ||
JP2011008120 | 2011-01-18 | ||
PCT/JP2011/080162 WO2012098812A1 (ja) | 2011-01-18 | 2011-12-27 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ |
JP2012553589A JP5828324B2 (ja) | 2011-01-18 | 2011-12-27 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2012098812A1 true JPWO2012098812A1 (ja) | 2014-06-09 |
JP5828324B2 JP5828324B2 (ja) | 2015-12-02 |
Family
ID=46515449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012553589A Active JP5828324B2 (ja) | 2011-01-18 | 2011-12-27 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140006722A1 (ja) |
JP (1) | JP5828324B2 (ja) |
WO (1) | WO2012098812A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884481B2 (en) * | 2018-03-30 | 2021-01-05 | Konica Minolta Laboratory U.S.A., Inc. | Apparatus and method for improving power savings by accelerating device suspend and resume operations |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5588131A (en) * | 1994-03-09 | 1996-12-24 | Sun Microsystems, Inc. | System and method for a snooping and snarfing cache in a multiprocessor computer system |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
JP4234361B2 (ja) * | 2002-06-28 | 2009-03-04 | 富士通株式会社 | 記憶制御装置およびデータ格納方法 |
US20050289300A1 (en) * | 2004-06-24 | 2005-12-29 | International Business Machines Corporation | Disable write back on atomic reserved line in a small cache system |
WO2009122694A1 (ja) * | 2008-03-31 | 2009-10-08 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム |
-
2011
- 2011-12-27 JP JP2012553589A patent/JP5828324B2/ja active Active
- 2011-12-27 WO PCT/JP2011/080162 patent/WO2012098812A1/ja active Application Filing
-
2013
- 2013-07-16 US US13/942,897 patent/US20140006722A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20140006722A1 (en) | 2014-01-02 |
WO2012098812A1 (ja) | 2012-07-26 |
JP5828324B2 (ja) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110312997B (zh) | 使用缓存行锁定来实现原子原语 | |
US9396127B2 (en) | Synchronizing access to data in shared memory | |
CN110442381A (zh) | 用于保护有条件的推测性指令执行的影子缓存 | |
CN106897230B (zh) | 用于处理原子更新操作的装置和方法 | |
JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
US8352688B2 (en) | Preventing unintended loss of transactional data in hardware transactional memory systems | |
JP2009521767A (ja) | 有限トランザクションメモリシステム | |
WO2009050644A1 (en) | Data processing system with a plurality of processors, cache circuits and a shared memory | |
JP6244916B2 (ja) | 演算処理装置,演算処理装置の制御方法及び情報処理装置 | |
US20110004731A1 (en) | Cache memory device, cache memory system and processor system | |
EP3264317B1 (en) | Permission control for contingent memory access program instruction | |
JP7096840B2 (ja) | 能力メタデータを管理するための装置及び方法 | |
US9606923B2 (en) | Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program | |
JP6792139B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US9389864B2 (en) | Data processing device and method, and processor unit of same | |
JP5828324B2 (ja) | マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ | |
KR102476438B1 (ko) | 데이터 액세스의 원자 세트를 제공하는 장치 및 방법 | |
JP2013246496A (ja) | 半導体装置 | |
US7406565B2 (en) | Multi-processor systems and methods for backup for non-coherent speculative fills | |
US20080104335A1 (en) | Facilitating load reordering through cacheline marking | |
CN117472803B (zh) | 原子指令执行方法、装置及电子设备 | |
JP6493187B2 (ja) | 情報処理装置、演算処理装置および情報処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141114 |
|
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: 20150924 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151007 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5828324 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |