(57)【要約】第１プロセッサと、第２プロセッサと、第３プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、第１プロセッサ、第２プロセッサ、第３プロセッサ及び主記憶装置を接続する共有バスとを具備する。第１プロセッサは、共有バスを介して、アドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部とを備える。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。アクセス制御部は、無効化された第１キャッシュラインに含まれる第１アドレスを監視データとして保持している状態で、第２プロセッサの要求に応じて第３プロセッサが共有バスに出力した第２アドレスと第２データとを受け取ると、第１アドレスと第２アドレスとが一致するか否かを判定し、一致する場合に第１アドレスと第２データとを関連付けて保持する。
2012098812.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサと、
第２プロセッサと、
第３プロセッサと、
アドレスに関連付けてデータを格納する主記憶装置と、
前記第１プロセッサ、前記第２プロセッサ、前記第３プロセッサ及び前記主記憶装置を接続する共有バスと
を具備し、
前記第１プロセッサは、
前記共有バスを介して、前記アドレス及び前記データを受け取るアクセス制御部と、
前記アドレス、前記データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と
を備え、
前記キャッシュメモリ部は、前記共有バスを介した前記キャッシュラインを無効化する要求を受け取ると前記フラグを無効化し、
前記アクセス制御部は、前記キャッシュラインの前記フラグが無効化されると、前記アドレスを監視対象として保持し、
前記アクセス制御部は、無効化された第１キャッシュラインに含まれる第１アドレスを監視対象として保持している状態で、前記第２プロセッサの要求に応じて前記第３プロセッサが前記共有バスに出力した第２アドレスと第２データとを受け取ると、前記第１アドレスと前記第２アドレスとが一致するか否かを判定し、一致する場合に前記第１アドレスと前記第２データとを関連付けて保持する
マルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムであって、
前記第１プロセッサは、
前記キャッシュラインに含まれる前記データを用いて命令を実行する命令実行部
を更に備え、
前記命令実行部が、前記第１アドレスを指定して前記第１キャッシュラインに含まれる第１データを要求したとき、
前記キャッシュメモリ部は、前記第１キャッシュラインが無効化されていることに基づいて、前記第１アドレスを前記アクセス制御部に提供し、
前記アクセス制御部は、前記第１アドレスに関連づけられた前記第２データを、前記命令実行部及び前記キャッシュメモリ部に提供する
マルチプロセッサシステム。
【請求項３】
第１プロセッサと、第２プロセッサと、第３プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、前記第１プロセッサ、前記第２プロセッサ、前記第３プロセッサ及び前記主記憶装置を接続する共有バスとを具備し、
前記第１プロセッサは、
前記共有バスを介して、前記アドレス及び前記データを受け取るアクセス制御部と、
前記アドレス、前記データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と、
前記キャッシュラインに含まれる前記データを用いて命令を実行する命令実行部と
を備え、
前記キャッシュメモリ部は、前記共有バスを介した前記キャッシュラインを無効化する要求を受け取ると前記フラグを無効化し、
前記アクセス制御部は、前記キャッシュラインの前記フラグが無効化されると、前記アドレスを監視対象として保持するマルチプロセッサシステムのマルチプロセッサ制御方法であって、
前記アクセス制御部が、無効化された第１キャッシュラインに含まれる第１アドレスを監視対象として保持するステップと、
前記第２プロセッサが、第２アドレスを指定して第２データを要求するステップと、
前記第３プロセッサが、前記第２プロセッサの要求に応じて、前記第２アドレスと前記第２データと前記共有バスに出力するステップと、
前記アクセス制御部が、前記共有バスを介して、前記第２アドレスと前記第２データとを受け取るステップと、
前記アクセス制御部が、前記第１アドレスと前記第２アドレスとが一致するか否かを判定するステップと、
前記アクセス制御部が、前記第１アドレスと前記第２アドレスとが一致する場合、前記第１アドレスと前記第２データとを関連付けて保持するステップと
を具備する
マルチプロセッサ制御方法。
【請求項４】
請求項３に記載のマルチプロセッサ制御方法であって、
前記命令実行部が、前記第１アドレスを指定して前記第１キャッシュラインに含まれる第１データを要求するステップと、
前記キャッシュメモリ部が、前記第１キャッシュラインが無効化されていることに基づいて、前記第１アドレスを前記アクセス制御部に提供するステップと、
前記アクセス制御部が、前記第１アドレスに関連づけられた前記第２データを、前記命令実行部及び前記キャッシュメモリ部に提供するステップと
を更に具備する
マルチプロセッサ制御方法。
【請求項５】
共有バスを介して、主記憶装置に格納されたアドレス及びデータを受け取るアクセス制御部と、
前記アドレス、前記データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と
を具備し、
前記キャッシュメモリ部は、前記共有バスを介した前記キャッシュラインを無効化する要求を受け取ると前記フラグを無効化し、
前記アクセス制御部は、前記キャッシュラインの前記フラグが無効化されると、前記アドレスを監視対象として保持し、
前記アクセス制御部は、無効化された第１キャッシュラインに含まれる第１アドレスを監視対象として保持している状態で、前記共有バスに接続された第２プロセッサの要求に応じて、前記共有バスに接続された第３プロセッサが前記共有バスに出力した第２アドレスと第２データとを受け取ると、前記第１アドレスと前記第２アドレスとが一致するか否かを判定し、一致する場合に前記第１アドレスと前記第２データとを関連付けて保持する
プロセッサ。
【請求項６】
請求項５に記載のプロセッサであって、
前記プロセッサは、
前記キャッシュラインに含まれる前記データを用いて命令を実行する命令実行部
を更に具備し、
前記命令実行部が、前記第１アドレスを指定して前記第１キャッシュラインに含まれる第１データを要求したとき、
前記キャッシュメモリ部は、前記第１キャッシュラインが無効化されていることに基づいて、前記第１アドレスを前記アクセス制御部に提供し、
前記アクセス制御部は、前記第１アドレスに関連づけられた前記第２データを、前記命令実行部及び前記キャッシュメモリ部に提供する
プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサに関し、特に排他制御区間への進入権の獲得に関する。
【背景技術】
【０００２】
複数のスレッドを並行して実行するように構成された情報処理システムでは、実行しているスレッドの任意の時点で、他のスレッドの実行が割り込むことがある。これらのスレッドが実行している処理の間に関連性がない場合には、割り込みが発生しても得られる結果に変わりはないため問題となることはない。しかし、スレッド処理途中にそのスレッドが実行している処理と関連性のある他のスレッドの割り込みが発生すると、割り込みが発生しなかった場合とは異なる結果が得られる可能性があり、何らかの対策が必要となる。【０００３】
例えば、２つのスレッドが同一の変数に１を加える処理、即ち、変数を読み込んで１を加え、その結果を書き戻す処理を行うとする。問題となるのは、あるスレッドが変数を読み込んでから１を加えた結果を書き戻すまでの間に、もう１つのスレッド処理（変数に１を加える処理）が割り込んだ場合である。この割り込みが発生すると、最初に実行していた処理は、割り込んだ処理による変数の更新を感知することなく、当初の値に１を加えた値を変数に書き戻すことになる。スレッド処理の割り込みが生じない場合では、２つのスレッドがそれぞれ変数に１を加える処理を行なうため、結果として変数は２増加する。しかしながら、スレッド処理途中に他のスレッド処理が割り込むという順で処理が進められると、２つのスレッドが変数に１を加える操作を行なったにも関わらず、変数は１増加するだけで正しい結果は得られない。このように、処理の途中で他の処理に割り込まれると問題が発生する処理区間（既述の例では、データを読み込んでから加工した結果を書き戻すまでの区間）を排他制御区間やクリティカルセクションと呼び、他のスレッド処理が割り込まないようにするための制御を明示的に行うことになっている。尚、本明細書では、以降これを排他制御区間と称する。【０００４】
プログラム実行を担うプロセッサが１個の場合を説明する。この場合、あるプログラムをスレッドとして実行中に、他のプログラムの実行（スレッド）が割り込むのは、最初のスレッド実行中にスレッド切り換えの契機となる何らかの事象が発生して、プロセッサとオペレーティングシステムとが協働して実現する実行部がスレッド切り換えを行うためである。このため、実行部に対して、他の処理（スレッド）への切り換えを禁止するように指示しておくことが有効となる。詳細には、実行部に対して、排他制御区間に入る時点で他の処理への切り換えを禁止し、且つ、そこから出る時点で他の処理への切り換えを許可するように指示すれば、その期間中に他の処理が割り込まないことが保証される。【０００５】
これに対し、マルチプロセッサシステムでは、他の処理への切り換えを禁止するだけでは正しい処理結果を保証することはできない。他の処理への切り換え禁止は、そのプログラムを実行しているプロセッサに対してのみ有効であり、他のプロセッサによるプログラム実行には影響を与えないからである。他のプロセッサによるプログラム実行が排他制御区間に入らないようにするための方法として、排他制御区間を実行中のスレッドが存在するか否かを示すフラグ（以降、ｌｏｃｋ  ｗｏｒｄ）を用意する対処方法が一般的に行われている。【０００６】
ｌｏｃｋ  ｗｏｒｄを用いた処理方法は以下のようになる。
（ａ１）あるプロセッサ（自プロセッサ）の実行部は、スレッドが排他制御区間に入る時点でｌｏｃｋ  ｗｏｒｄを確認する。
（ａ２−１）実行部は、それが「未使用を示す値（以降、ｕｎｌｏｃｋｅｄと表記）」であれば、ｌｏｃｋ  ｗｏｒｄを「使用中を示す値（以降、ｌｏｃｋｅｄと表記）」に変更して排他制御区間の処理を実行する。
（ａ２−２）それがｌｏｃｋｅｄであれば、実行部はそのｌｏｃｋ  ｗｏｒｄがｕｎｌｏｃｋｅｄになるまで待った後、それをｌｏｃｋｅｄに変更して排他制御区間の処理を実行する。
（ａ３）実行部は、排他制御区間の実行を終了した時点で、ｌｏｃｋ  ｗｏｒｄをｕｎｌｏｃｋｅｄに戻す。
以上の制御を行うことにより、他のプロセッサが実行する処理と、自プロセッサが実行する処理とが、排他制御区間上で競合するという問題は発生しなくなる。【０００７】
また、排他制御区間について更に説明すると、排他制御区間は情報処理システムの性能の上限を決めるボトルネック要素ともなる。何故なら、マルチプロセッサシステムでは、あるスレッドが排他制御区間を実行（以下、他の資源と合わせるため「使用」と表記する）していると、その排他制御区間を使用する他のスレッドは、使用中のスレッドが退去するまで待つ必要があるからである。これは、プロセッサやｄｉｓｋといった物理資源と同様、排他制御区間に対して待ち行列が形成されることを意味している。つまり、負荷の増大により、排他制御区間の使用率が他の資源よりも先に１００％に近づく場合は、排他制御区間がシステム性能の上限を決めるボトルネックとなる。【０００８】
排他制御区間の使用率は、単位時間当たりの使用回数と、１回の使用時間との積である。このため、情報処理システムの処理のスループット性能が飽和している状態で、且つ、排他制御区間がボトルネックの状況（使用率が１００％となっている状況）では、前記２つの要因は反比例の関係になる。何故なら、排他制御区間がボトルネックになると、その単位時間当たりの使用回数が情報処理システムのスループット性能に対応するようになると考えられるからである。このような状況下で、情報処理システムのスループット性能の上限を増大させるには、排他制御区間１回の使用時間を短くすることが必要となる。【０００９】
排他制御区間１回の使用時間は、排他制御区間に進入してから退去するまでのプログラム実行時間である。詳細には、（ｂ１）その間に実行する命令数と、（ｂ２）１命令当たりのクロック数（ＣＰＩ：  Ｃｌｏｃｋ  Ｐｅｒ  Ｉｎｓｔｒｕｃｔｉｏｎ）と、（ｂ３）１クロック・サイクルの時間との積である。このうち、（ｂ１）と（ｂ３）の削減は容易ではなく、固定値として扱うことが多い。（ｂ１）は排他制御区間で保護して行う処理の内容、即ち、プログラムで実装しているアルゴリズムで決まる要因であり、（ｂ３）は情報処理システムのハードウェアで決まる要因だからである。一方、（ｂ２）はプロセッサの命令実行アーキテクチャやキャッシュメモリのアーキテクチャといったさまざまな要素が関与しており、チューニングの余地は大きい。【００１０】
次に、排他制御区間の実現に関する技術を説明する。排他制御区間の実現において重要な点は、スレッドが排他制御区間に入る時点で行うｌｏｃｋ  ｗｏｒｄの値の確認（読み込み）と、ｕｎｌｏｃｋｅｄだった場合のｌｏｃｋｅｄへの変更（書き込み）の２操作が、排他制御区間と同様の扱いが必要となることである。このため、マルチプロセッサ向けの機能を有するプロセッサには、この操作を行うための命令が用意されている。例えば、非特許文献１には、インテルのｘ８６プロセッサのｃｍｐｘｃｈｇ命令が開示されている。これは、命令で予約されたレジスタ（ｅａｘレジスタ）と、レジスタ・オペランドと、メモリ・オペランドとの３オペランドを使用する命令である。尚、このｃｍｐｘｃｈｇ命令が行う操作は、Ｃｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ（ＣＡＳ操作）と称されることが多い。【００１１】
ＣＡＳ命令の実行は以下のようになる。
（ｃ１）あるプロセッサ（自プロセッサ）の実行部は、メモリ・オペランドの値を読み込む。
（ｃ２−１）実行部は、その値がｅａｘレジスタの値と一致する場合は、メモリにレジスタ・オペランドの値を書き込む。
（ｃ２−２）実行部は、その値がｅａｘレジスタの値と一致しない場合は、その値をｅａｘレジスタに書き込む。
これら一連の操作はアトミックに行われる。ここでのアトミックとは、（ｃ１）のメモリ読み込み操作と、（ｃ２−１）のメモリ書込み操作との間に、他のプロセッサがメモリにアクセスしないことをハードウェア動作によって保証されていることを意味する。【００１２】
前述のＣＡＳ命令を用いてｌｏｃｋ操作を行うには、ｅａｘレジスタにｕｎｌｏｃｋｅｄを入れ、レジスタ・オペランドにｌｏｃｋｅｄを入れ、メモリ・オペランドをｌｏｃｋ  ｗｏｒｄとした状態で、実行部がＣＡＳ命令を実行する。Ｌｏｃｋ  ｗｏｒｄがｕｎｌｏｃｋｅｄの場合は（ｃ２−１）が実行されるので、実行部はｌｏｃｋ  ｗｏｒｄをｌｏｃｋｅｄに書き換え、ｅａｘレジスタの値を変化させない。一方、ｌｏｃｋ  ｗｏｒｄがｌｏｃｋｅｄの場合は（ｃ２−２）が実行されるので、実行部はｌｏｃｋ  ｗｏｒｄへの書き込みを行わず、ｅａｘレジスタにｌｏｃｋｅｄを設定する。ＣＡＳ命令を実行した実行部は、ＣＡＳ命令実行後のｅａｘレジスタの値を調べることで、ｌｏｃｋ操作が成功したか失敗したかを調べることができる。即ち、実行部は、排他制御区間を実行するのか、ｌｏｃｋ  ｗｏｒｄにｕｎｌｏｃｋｅｄが設定されるのを待つ状態であるのかの判断を行うことができる。【００１３】
その他、マルチプロセッサシステムに関する技術として、特許文献１が開示されている。このマルチプロセッサシステムは、主記憶装置と、複数のデータ処理装置とにより構成される。各データ処理装置は、アドレスを含むブロック単位で主記憶装置の写しが保持されるバッファメモリを有する。データ処理装置は、他のデータ処理装置の主記憶装置への書き込みにより、自バッファメモリ内のブロックが無効化される場合、無効化されたブロックのアドレスを保持するアドレス保持機構を有する。データ処理装置は、主記憶装置にアクセスするときに、無効化されたブロックのアドレスが、アドレス保持機構に存在するときは、無効化されたブロックの写しを自バッファメモリに保持しないようにすることを特徴とする。これにより、各データ処理装置は、自バッファメモリを何度も無効化しなくなるため、マルチプロセッサシステムの効率低下を防止できるというものである。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平３−１３４７５７号公報
【非特許文献】
【００１５】
【非特許文献１】“Ｉｎｔｅｌ６４  ａｎｄ  ＩＡ−３２  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ  Ｖｏｌｕｍｅ  ２Ａ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｒｅｆｅｒｅｎｃｅ，  Ａ−Ｍ”、［ｏｎｌｉｎｅ］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｎｔｅｌ．ｃｏｍ／Ａｓｓｅｔｓ／ＰＤＦ／ｍａｎｕａｌ／２５３６６６．ｐｄｆ＞
【発明の概要】
【００１６】
ＣＡＳ命令が成功する際に実行される共有バスアクセスは、キャッシュメモリのコヒーレンスプロトコルに依存する。以下に、コピーバック方式のキャッシュにおける動作を説明する。図１は、マルチプロセッサシステムの初期状態を示した図である。図１を参照すると、マルチプロセッサシステムは、複数のプロセッサ５００（５００−１〜５００−ｎ）と、メモリ６００とを具備し、それぞれ共有バス７００で接続されている。複数のプロセッサ５００（５００−１〜５００−ｎ）の各々は、命令実行部５１０（５１０−１〜５１０−ｎ）と、キャッシュメモリ部５２０（５２０−１〜５２０−ｎ）とを備える。キャッシュメモリ部５２０は複数のキャッシュラインを保持する。各キャッシュラインは、キャッシュラインの有効・無効を表す有効フラグ８０１と、データと、データのアドレスとを含む。図１では、複数のプロセッサ５００（５００−１〜５００−ｎ）は、データとしてｌｏｃｋ  ｗｏｒｄ８０２を含むキャッシュラインを共有している。ｌｏｃｋ  ｗｏｒｄ８０２は、ｕｎｌｏｃｋｅｄ又はｌｏｃｋｅｄを表し、初期のｌｏｃｋ  ｗｏｒｄ８０２の値としてｕｎｌｏｃｋｅｄが斜線で表されている。
【００１７】
プロセッサ５００−１がｌｏｃｋ  ｗｏｒｄ８０２の値を変更する場合を説明する。図２は、プロセッサ５００−１が、ｌｏｃｋ  ｗｏｒｄ８０２の変更を開始した状態を示した図である。まず、プロセッサ５００−１は、プロセッサ５００−２〜５００−ｎの各々が有するｌｏｃｋ  ｗｏｒｄ８０２のコピーを無効化する処理を行う。詳細には、プロセッサ５００−１の命令実行部５１０−１は、キャッシュメモリ部５２０−１を介して、プロセッサ５００−２〜５００−ｎの各々に対して無効化するｌｏｃｋ  ｗｏｒｄ８０２のアドレスを指定して、該当するキャッシュラインの無効化要求を出力する。尚、あるプロセッサ５００が他のプロセッサ５００に対して、無効化するデータのアドレスを指定して該当するキャッシュラインの無効化を要求することを、本明細書では無効化要求と称する。
【００１８】
プロセッサ５００−２〜５００−ｎの各々は、プロセッサ５００−１からの無効化要求を受けとると、該当するキャッシュラインの有効フラグ８０１を無効に変更し、当該キャッシュラインを無効にする。この処理によって、ｌｏｃｋ  ｗｏｒｄ８０２の値を含む有効なキャッシュラインを持つのはプロセッサ５００−１のみとなる。
【００１９】
続いて、プロセッサ５００−１の命令実行部５１０−１は、ｌｏｃｋ  ｗｏｒｄ８０２の値を変更する。図３は、プロセッサ５００−１の命令実行部５１０−１が、ｌｏｃｋ  ｗｏｒｄ８０２の値を変更した状態を示す図である。変更されたｌｏｃｋ  ｗｏｒｄ８０２の値として、ｌｏｃｋｅｄが縦線で表されている。尚、コピーバック方式のキャッシュのため、プロセッサ５００−１のｌｏｃｋ  ｗｏｒｄ８０２の値が変更された直後は、メモリ６００のｌｏｃｋ  ｗｏｒｄ８０２と値が異なっていても良い。
【００２０】
プロセッサ５００−２〜５００−ｎの各々は、それぞれのｌｏｃｋ  ｗｏｒｄ８０２を監視しており、排他制御区間への進入権を獲得する処理を行なう。図４は、命令実行部５１０−２〜５１０−ｎの各々が、それぞれのｌｏｃｋ  ｗｏｒｄ８０２のアクセス要求を出力することを示した図である。命令実行部５１０−２〜５１０−ｎの各々は、それぞれのｌｏｃｋ  ｗｏｒｄ８０２のアクセス要求を出力する。しかし、命令実行部５１０−２〜５１０−ｎの各々のアクセス要求は、それぞれのキャッシュメモリ部５２０−２〜５２０−ｎにミスするため、共有バス７００を通したアクセス要求が出力される。その結果、プロセッサ５００−２〜５００−ｎの各々から出力された複数のアクセス要求が競合する。図４では、プロセッサ５００−ｎのアクセス要求が最初に共有バス７００に出力され、プロセッサ５００−２、５００−３のアクセス要求は待ち状態になったことを示している。プロセッサ５００−ｎによるｌｏｃｋ  ｗｏｒｄ８０２へのアクセス要求に対して、変更されたｌｏｃｋ  ｗｏｒｄ８０２の値を保持しているのは、プロセッサ５００−１のキャッシュメモリ部５２０である。従って、プロセッサ５００−１は、変更したｌｏｃｋ  ｗｏｒｄ８０２の値をプロセッサ５００−ｎおよびメモリ６００に提供する。図５は、プロセッサ５００−１がｌｏｃｋ  ｗｏｒｄ８０２を出力したことを示した図である。
【００２１】
プロセッサ５００−ｎのアクセス要求に対する処理が完了した後、プロセッサ５００−２のアクセス要求が出力され、プロセッサ５００−３のアクセス要求が待ち状態になるとする。図６は、プロセッサ５００−２が共有バス７００にアクセス要求を出力した後の状態を示した図である。プロセッサ５００−２によるｌｏｃｋ  ｗｏｒｄ８０２へのアクセス要求に対しては、メモリ６００が最新の値を保持しているため、プロセッサ５００−２はメモリ６００からｌｏｃｋ  ｗｏｒｄ８０２の値を取得する。その後、プロセッサ５００−３は、プロセッサ５００−２と同様の処理を行う。
【００２２】
このように、複数のプロセッサ５００がｌｏｃｋ  ｗｏｒｄ８０２を監視して、排他制御区間への進入権を獲得する処理を同時に行なう場合、複数のプロセッサ５００によるｌｏｃｋ  ｗｏｒｄ８０２へのアクセスが次々に実行される。これは、共有バス７００を介したアクセス回数の増大を表しており、共有バス７００の使用率が高まることを意味している。共有バス７００の使用率が高まると、排他制御区間への進入権を獲得する処理とは異なる処理を行なっている他のプロセッサ５００についても、共有バス７００を介したアクセスが待たされる時間が長くなる。このように、マルチプロセッサシステムには、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう状況において、共有バス７００の使用率が高まり、システム全体の性能が低下する状態を招く問題がある。
【００２３】
本発明の目的は、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう状況下でも、性能低下を抑制できるマルチプロセッサシステムを提供することにある。
【００２４】
本発明のマルチプロセッサシステムは、第１プロセッサと、第２プロセッサと、第３プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、第１プロセッサ、第２プロセッサ、第３プロセッサ及び主記憶装置を接続する共有バスとを具備する。
第１プロセッサは、共有バスを介して、アドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部とを備える。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。
アクセス制御部は、無効化された第１キャッシュラインに含まれる第１アドレスを監視対象として保持している状態で、第２プロセッサの要求に応じて第３プロセッサが共有バスに出力した第２アドレスと第２データとを受け取ると、第１アドレスと第２アドレスとが一致するか否かを判定し、一致する場合に第１アドレスと第２データとを関連付けて保持する。
【００２５】
本発明のマルチプロセッサ制御方法におけるマルチプロセッサは、第１プロセッサと、第２プロセッサと、第３プロセッサと、アドレスに関連付けてデータを格納する主記憶装置と、第１プロセッサ、第２プロセッサ、第３プロセッサ及び主記憶装置を接続する共有バスとを具備する。第１プロセッサは、共有バスを介して、アドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部と、キャッシュラインに含まれるデータを用いて命令を実行する命令実行部とを備える。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。
マルチプロセッサ制御方法は、アクセス制御部が、無効化された第１キャッシュラインに含まれる第１アドレスを監視対象として保持するステップと、第２プロセッサが、第２アドレスを指定して第２データを要求するステップと、第３プロセッサが、第２プロセッサの要求に応じて、第２アドレスと第２データと共有バスに出力するステップと、アクセス制御部が、共有バスを介して、第２アドレスと第２データとを受け取るステップと、アクセス制御部が、第１アドレスと第２アドレスとが一致するか否かを判定するステップと、アクセス制御部が、第１アドレスと第２アドレスとが一致する場合、第１アドレスと第２データとを関連付けて保持するステップとを具備する。
【００２６】
本発明のプロセッサは、共有バスを介して、主記憶装置に格納されたアドレス及びデータを受け取るアクセス制御部と、アドレス、データ、及び有効・無効を示すフラグを含むキャッシュラインを保持するキャッシュメモリ部とを具備する。キャッシュメモリ部は、共有バスを介したキャッシュラインを無効化する要求を受け取るとフラグを無効化し、アクセス制御部は、キャッシュラインのフラグが無効化されると、アドレスを監視対象として保持する。
アクセス制御部は、無効化された第１キャッシュラインに含まれる第１アドレスを監視対象として保持している状態で、共有バスに接続された第２プロセッサの要求に応じて、共有バスに接続された第３プロセッサが共有バスに出力した第２アドレスと第２データとを受け取ると、第１アドレスと第２アドレスとが一致するか否かを判定し、一致する場合に第１アドレスと第２データとを関連付けて保持する。
【００２７】
本発明のマルチプロセッサシステムは、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう場合でも、共有バス待ち時間の増加を抑えて、性能低下を防止することができる。
【図面の簡単な説明】
【００２８】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態から、より明らかになる。【００２９】
【図１】図１は、マルチプロセッサシステムの初期状態を示した図である。
【図２】図２は、プロセッサ５００−１が、ｌｏｃｋ  ｗｏｒｄ８０２の変更を開始した状態を示した図である。
【図３】図３は、プロセッサ５００−１の命令実行部５１０−１が、ｌｏｃｋ  ｗｏｒｄ８０２の値を変更した状態を示す図である。
【図４】図４は、命令実行部５１０−２〜５１０−ｎの各々が、それぞれのｌｏｃｋ  ｗｏｒｄ８０２のアクセス要求を出力することを示した図である。
【図５】図５は、プロセッサ５００−１がｌｏｃｋ  ｗｏｒｄ８０２を出力したことを示した図である。
【図６】図６は、プロセッサ５００−２が共有バス７００にアクセス要求を出力した後の状態を示した図である。
【図７】図７は、本発明のマルチプロセッサシステムの構成を示すブロック図である。
【図８】図８は、本発明のマルチプロセッサシステム１の初期状態を示した図である。
【図９】図９は、プロセッサ１０−２〜１０−ｎの各々が無効化処理を実行したことを示す図である。
【図１０】図１０は、命令実行部１１−１がデータ７０を変更したことを示す図である。
【図１１】図１１は、プロセッサ１０−ｎがデータ７０のアクセス要求を共有バス３０に出力したことを示す図である。
【図１２】図１２は、プロセッサ１０−２、１０−３の各々で、それぞれの共有データ監視部１４−２、１４−３が、変更されたデータ７０を保持したことを示す図である。
【図１３】図１３は、プロセッサ１０−２において、共有データ監視部１４−２からキャッシュメモリ部１２−２へ、更新されたデータ７０が提供されたことを示す図である。
【発明を実施するための形態】
【００３０】
以下、添付図面を参照して本発明の実施の形態によるマルチプロセッサシステムを説明する。
【００３１】
図７は、本発明のマルチプロセッサシステムの構成を示すブロック図である。図７を参照すると、本発明のマルチプロセッサシステム１は、複数のプロセッサ１０（１０−１〜１０−ｎ）と、メモリ２０と、共有バス３０とを具備する。複数のプロセッサ１０（１０−１〜１０−ｎ）と、メモリ２０とは、共有バス３０で接続される。
【００３２】
本発明の実施の形態によるマルチプロセッサシステム１は、コンピュータシステムにおける主要な構成要素である。プロセッサ１０は、メモリ２０に格納されている本発明のマルチプロセッサシステム１に係る演算処理及び制御処理を行う。メモリ２０は、情報の記録を行う主記憶装置であり、ＣＤ−ＲＯＭやＤＶＤ等のコンピュータ読み取り可能な記憶媒体から読み取られたプログラム、ネットワーク（図示略）を介してダウンロードされたプログラム、入力装置（図示略）から入力された信号やプログラム、及びプロセッサ１０の処理結果などを格納する。
【００３３】
複数のプロセッサ１０（１０−１〜１０−ｎ）の各々の詳細を説明する。尚、複数のプロセッサ１０（１０−１〜１０−ｎ）の各々は同様の構成であるため、プロセッサ１０−１を参照して説明する。ここでは、プロセッサ１０−１をプロセッサ１０と称して説明し、その他のプロセッサ１０を説明する必要があるときは他プロセッサ１０と称して説明する。尚、説明するプロセッサ１０の各部は、ハードウェアとソフトウェアとを単独又は組み合わせて実現することが出来る。
【００３４】
プロセッサ１０は、命令実行部１１と、キャッシュメモリ部１２と、アクセス制御部１３とを備える。
【００３５】
命令実行部１１は、キャッシュメモリ部１２及びアクセス制御部１３を介して、メモリ２０から実行すべき命令や、命令の実行に必要な数値などのデータを読み出す。そして、命令実行部１１は、キャッシュメモリ部１２（キャッシュライン５０）に含まれるデータを用いて命令を実行する。
【００３６】
キャッシュメモリ部１２は、アドレス、データ、及び有効フラグを含む複数のキャッシュライン５０を保持する。アドレスはメモリ２０のアドレスを示し、有効フラグはキャッシュライン５０の有効・無効を示す。尚、プロセッサ１０のキャッシュメモリ部１２と、他プロセッサ１０のキャッシュメモリ部とは、コヒーレンスプロトコルによって一貫性が保たれているとする。
【００３７】
キャッシュメモリ部１２は、命令実行部１１からアドレスを指定したデータのアクセス要求を受け取ると、複数のキャッシュライン５０を参照して、受け取ったアドレスが有効なキャッシュライン５０に存在するか否かを判定する。データのアドレスが、有効なキャッシュライン５０に存在する場合（キャッシュヒット）、キャッシュメモリ部１２は命令実行部１１にデータを提供する。一方、データのアドレスが有効なキャッシュライン５０に存在しない場合（キャッシュミス）、キャッシュメモリ部１２は、アクセス制御部１３にアドレスを含むデータのアクセス要求を提供する。
【００３８】
また、キャッシュメモリ部１２は、共有バス３０を介して、他プロセッサ１０が出力したキャッシュライン５０を無効化する要求を受け取ると、有効フラグを無効化する（無効化処理）。詳細には、キャッシュメモリ部１２は、他プロセッサ１０から出力された無効化要求に含まれるアドレスが複数のキャッシュライン５０の何れかに存在する場合、該当するキャッシュライン５０を無効化する。
【００３９】
アクセス制御部１３は、共有バス３０を介して、メモリ２０及び他プロセッサ１０との間でアドレス及びデータの受け渡しを行う。アクセス制御部１３は、共有データ監視部１４と、共有バスアクセス制御部１５とを含む。
【００４０】
共有データ監視部１４は、監視対象としての複数の監視データ６０を有する。複数の監視データ６０の各々は、アドレス有効フラグと、データ有効フラグと、アドレスと、データとを含む。共有データ監視部１４は、キャッシュライン５０の有効フラグが無効化されると、無効化されたキャッシュライン５０のアドレスを監視対象として監視データ６０のアドレスに保持する。共有データ監視部１４は、無効化されたキャッシュライン５０に含まれるアドレスを監視データ６０に保持している状態で、他プロセッサ１０の要求に応じて、更に別の他プロセッサ１０が共有バス３０に出力したアドレスとデータとを受け取ると、保持しているアドレスと受け取ったアドレスとが一致するか否かを判定する。そして、共有データ監視部１４は、一致する場合に保持しているアドレスと受け取ったデータとを関連付けて保持する。
【００４１】
また、共有データ監視部１４は、キャッシュミスに基づくアクセス要求をキャッシュメモリ部１２から受け取ると、アクセス要求のアドレスに対応する提供可能なデータが監視データ６０に保持されているか否かを判定する。保持されている場合、共有データ監視部１４は、アドレスに関連づけられたデータを命令実行部１１及びキャッシュメモリ部１２に提供する。保持されていない場合、共有データ監視部１４は、そのアクセス要求を共有バス３０に出力するために、共有バスアクセス制御部１５に提供する。尚、これらの共有データ監視部１４の詳細な動作は後述する。
【００４２】
共有バスアクセス制御部１５は、キャッシュミスに基づくアクセス要求をキャッシュメモリ部１２から受け取ったとき、共有データ監視部１４が提供可能なデータを保持しているときは、アクセス要求を共有バス３０に出力せずプロセッサ１０での処理を継続させる。一方、共有バスアクセス制御部１５は、共有データ監視部１４が提供可能なデータを保持していなければ、アクセス要求を共有バス３０に出力する。
【００４３】
本発明のマルチプロセッサシステム１の実施の形態による処理動作を説明する。
【００４４】
図８は、本発明のマルチプロセッサシステム１の初期状態を示した図である。図８を参照すると、プロセッサ１０−１〜１０−ｎの各々は、メモリ２０のデータ７０のコピーをそれぞれのキャッシュメモリ部１２−１〜１２−ｎに保持して共有している。メモリ２０に格納されたデータ７０の初期値は斜線で表されている。データ７０のコピーを含むキャッシュライン５０−１〜５０−ｎの各々の有効フラグは有効に設定されている。尚、図８では簡易的に表示するために、キャッシュライン５０−１〜５０−ｎに含まれるアドレス、監視データ６０に含まれるアドレス、及び、監視データ６０に含まれるアドレス有効フラグは省略されている。また、アクセス制御部１３の共有データ監視部１４及び共有バスアクセス制御部１５も省略されている。
【００４５】
＜プロセッサ１０−１の無効化要求とデータの変更＞
プロセッサ１０−１において、命令実行部１１−１が命令実行に伴ってメモリ２０へのデータ書き込み操作が必要となった、つまり、キャッシュメモリ部１２−１に保持されたデータ７０を変更する処理を行うとする。まず、命令実行部１１−１は、プロセッサ１０−２〜１０−ｎの各々に保持されているそれぞれのデータ７０を無効化する処理を行う。詳細には、命令実行部１１−１は、データ７０のアドレスを指定して、そのアドレスを含むキャッシュライン５０−２〜５０−ｎの各々を無効化するための要求（無効化要求）を、キャッシュメモリ部１２−１に提供する。
【００４６】
キャッシュメモリ部１２−１は、命令実行部１１−１から無効化要求を受け取ると、共有バスアクセス制御部１５−１に無効化要求を提供する。共有バスアクセス制御部１５−１は、キャッシュメモリ部１２−１から無効化要求を受け取ると、共有バス３０に無効化要求を出力する。
【００４７】
プロセッサ１０−２〜１０−ｎの各々では、それぞれの共有バスアクセス制御部１５−２〜１５−ｎが、プロセッサ１０−１から出力された無効化要求を受け取り、それぞれのキャッシュメモリ部１２−２〜１２−ｎ、及び、それぞれの共有データ監視部１４−２〜１４−ｎに提供する。プロセッサ１０−１の無効化要求とデータの変更に関しては、プロセッサ１０−２〜１０−ｎの各々は同様の動作をするため、プロセッサ１０−ｎを代表として用いて動作を説明する。
【００４８】
キャッシュメモリ部１２−ｎは、プロセッサ１０−１から出力された無効化要求に含まれるアドレスが複数のキャッシュライン５０−ｎの何れかに存在する場合、該当するキャッシュライン５０−ｎを無効化する（無効化処理）。詳細には、キャッシュメモリ部１２−ｎは、保持している全てのキャッシュライン５０−ｎのアドレスと、受け取ったアドレスとを比較し、一致するキャッシュライン５０−ｎが存在するか否かを判定する。一致するキャッシュライン５０−ｎが存在する場合、キャッシュメモリ部１２−ｎは、一致したキャッシュライン５０−ｎの有効フラグを無効に変更する。但し、キャッシュメモリ部１２−ｎは、アドレスの値に基づいて保持するキャッシュライン５０−ｎの範囲を予め限定している場合、一致する可能性のあるキャッシュライン５０−ｎの範囲のみ比較してもよい。そして、キャッシュメモリ部１２−ｎは、キャッシュライン５０−ｎを無効化したことを示す信号（スヌープヒット信号）を共有データ監視部１４−ｎに提供する。
【００４９】
共有データ監視部１４−ｎは、キャッシュライン５０−ｎが無効化されると、他のプロセッサ１０（プロセッサ１０−ｎ以外）で変更されたデータ７０を受け取れるように、無効化されたアドレスを監視する。つまり、共有データ監視部１４−ｎは、キャッシュライン５０−ｎの有効フラグが無効化されると、無効化されたキャッシュライン５０−ｎのアドレスを監視対象として監視データ６０のアドレスに保持する。詳細には、共有データ監視部１４−ｎは、共有バスアクセス制御部１５−ｎから無効化要求を受け取っている状態で、キャッシュメモリ部１２−ｎからスヌープヒット信号を受け取ると、無効化要求に含まれるアドレスを監視データ６０−ｎのアドレスに設定する。そして、共有データ監視部１４−ｎは、アドレスに対応するアドレス有効フラグを有効に設定する。これによって、共有データ監視部１４−ｎは、キャッシュライン５０−ｎで無効化されたアドレスを監視するように動作する。尚、共有データ監視部１４−ｎは、監視データ６０−ｎを参照したとき、無効化要求に含まれるアドレスに対応するデータ７０のデータ有効フラグが有効である場合には、そのデータ７０を使用しないように、データ７０のデータ有効フラグを無効に設定する。図９は、プロセッサ１０−２〜１０−ｎの各々が無効化処理を実行したことを示す図である。図９を参照すると、プロセッサ１０−２〜１０−ｎの各々において、データ７０を含むそれぞれのキャッシュライン５０−２〜５０−ｎは、有効フラグが無効に設定されている。但し、図９は簡略化しているため、監視データ６０−１〜６０−ｎの各々における、データ７０のアドレスと、有効になったアドレス有効フラグとは省略されている。
【００５０】
命令実行部１１−１は、データ７０を含む有効なキャッシュライン５０（有効に設定された有効フラグを含むキャッシュライン５０）を持つのがプロセッサ１０−１のみとした後、データ７０を変更する。図１０は、命令実行部１１−１がデータ７０を変更したことを示す図である。変更されたデータ７０の値は縦線で表されている。コヒーレンスプロトコルがコピーバック方式の場合、命令実行部１１−１はキャッシュメモリ部１２−１に対してのみデータ７０の変更を行う。従って、命令実行部１１−１がデータ７０を変更した直後は、メモリ２０のデータ７０とプロセッサ１０−１のデータ７０とで値は異なることになる。尚、排他制御を実現するためのＣＡＳ命令による書き込みの場合、ＣＡＳ命令実行前に無効化操作を行った後、キャッシュメモリ部１２−１のデータに対して読み込みと書き込み操作を行うようになっている。
【００５１】
＜プロセッサ１０−ｎのキャッシュミス＞
プロセッサ１０−ｎが、データ７０を必要になったとする。命令実行部１１−ｎは、データ７０のアドレスを含むデータ７０のアクセス要求を、キャッシュメモリ部１２−ｎに提供する。
【００５２】
キャッシュメモリ部１２−ｎは、命令実行部１１−ｎからデータ７０のアクセス要求を受け取ると、複数のキャッシュライン５０−ｎを参照し、受け取ったアドレスが有効なキャッシュライン５０−ｎに存在するか否かを判定する。データ７０のアドレスが有効なキャッシュライン５０−ｎに存在する場合（キャッシュヒット）、キャッシュメモリ部１２−ｎは命令実行部１１−ｎにデータ７０を提供する。一方、データ７０のアドレスが有効なキャッシュライン５０−ｎに存在しない場合（キャッシュミス）、キャッシュメモリ部１２−ｎは共有バスアクセス制御部１５−ｎ、及び、共有データ監視部１４−ｎに対してデータ７０のアクセス要求を提供する。
【００５３】
共有データ監視部１４−ｎは、キャッシュミスに基づくアクセス要求をキャッシュメモリ部１２−ｎから受け取ると、アクセス要求のアドレスに対応する提供可能なデータ７０が監視データ６０−ｎに保持されているか否かを判定する。保持されている場合、共有データ監視部１４−ｎは、アドレスに関連づけられたデータ７０を命令実行部１１−ｎ及びキャッシュメモリ部１２−ｎに提供する。保持されていない場合、共有データ監視部１４−ｎは、そのアクセス要求を共有バス３０に出力するために、共有バスアクセス制御部１５−ｎに提供する。詳細には、共有データ監視部１４−ｎは、データ７０のアクセス要求に含まれるアドレスが、監視データ６０−ｎのアドレスに含まれているか否かと、そのアドレスに対応するアドレス有効フラグが有効であるか否かと、そのアドレスに対応するデータ７０のデータ有効フラグが有効であるか否かの３つを判定する。共有データ監視部１４−ｎは、データ７０のアクセス要求に含まれるアドレスが監視データ６０−ｎのアドレスに含まれており、且つ、そのアドレスに対応するアドレス有効フラグが有効であり、且つ、そのアドレスに対応するデータ７０のデータ有効フラグが有効であると判定した場合、提供可能な変更されたデータ７０が保持されていると判定する。そして、共有データ監視部１４−ｎは、提供可能な変更されたデータ７０をキャッシュメモリ部１２−ｎに提供し、更に、提供可能な変更されたデータ７０が保持されていることを示す信号（バッファヒット信号）を、共有バスアクセス制御部１５−ｎに提供する。
尚、ここに記載した動作は、前述したプロセッサ１０−１の無効化要求とデータの変更という操作の直後に、プロセッサ１０−ｎがデータ７０を必要になったときの動作であるので、ここでは提供可能な変更されたデータ７０が保持されていない。従って、共有データ監視部１４−ｎは、提供可能な変更されたデータ７０が保持されていないと判定し、バッファヒット信号を提供しない。
【００５４】
共有バスアクセス制御部１５−ｎは、キャッシュミスに基づくアクセス要求をキャッシュメモリ部１２−ｎから受け取ったとき、共有データ監視部１４−ｎが提供可能なデータを保持しているときは、アクセス要求を共有バス３０に出力せずプロセッサ１０−ｎでの処理を継続させる。一方、共有バスアクセス制御部１５−ｎは、共有データ監視部１４−ｎが提供可能なデータを保持していなければ、アクセス要求を共有バス３０に出力する。詳細には、共有バスアクセス制御部１５−ｎは、キャッシュメモリ部１２−ｎからデータ７０のアクセス要求を受け取った状態で、共有データ監視部１４−ｎからバッファヒット信号を受け取る場合、データ７０のアクセス要求を共有バス３０に出力せず、プロセッサ１０−ｎでの処理を継続させる。一方、共有バスアクセス制御部１５−ｎは、キャッシュメモリ部１２−ｎからデータ７０のアクセス要求を受け取った状態で、共有データ監視部１４−ｎからバッファヒット信号を受け取らない場合、データ７０のアクセス要求を共有バス３０に出力する。即ち、共有バスアクセス制御部１５−ｎは、共有バス３０に接続された複数の他のプロセッサ１０（１０−ｎを除く）から、変更されたデータ７０を取得するように動作する。
ここでは、共有バスアクセス制御部１５−ｎが、共有バス３０にデータ７０のアクセス要求を出力するように動作したとする。図１１は、プロセッサ１０−ｎがデータ７０のアクセス要求を共有バス３０に出力したことを示す図である。
【００５５】
＜プロセッサ１０−ｎからのアクセス要求に対する応答＞
プロセッサ１０−ｎを除く複数のプロセッサ１０の各々では、それぞれの共有バスアクセス制御部１５（１５−ｎ以外）がデータ７０のアクセス要求を受け取り、それぞれのキャッシュメモリ部１２（１２−ｎ以外）、及び、それぞれの共有データ監視部１４（１４−ｎ以外）に提供する。ここでは、プロセッサ１０−１が更新されたデータ７０を保持しているため、プロセッサ１０−１は変更されたデータ７０とそのアドレスを含むデータ７０の応答を共有バス３０に出力する。
【００５６】
このときのプロセッサ１０−１の動作を説明する。共有バスアクセス制御部１５−１は、データ７０のアクセス要求に含まれるアドレスを、キャッシュメモリ部１２−１に提供する。キャッシュメモリ部１２−１は、変更されたデータ７０を含む有効なキャッシュライン５０−１が存在するか否かを判定する。キャッシュメモリ部１２−１は、変更されたデータ７０を含む有効なキャッシュライン５０−１が存在していると判定し、変更されたデータ７０を共有バスアクセス制御部１５−１に提供する。共有バスアクセス制御部１５−１は、データ７０の応答を共有バス３０に出力する。
【００５７】
一方、プロセッサ１０−１及びプロセッサ１０−ｎを除く、その他のプロセッサ１０（１０−２〜１０−ｎ−１）の動作を説明する。プロセッサ１０−ｎからのアクセス要求に対する応答に関しては、プロセッサ１０−２〜１０−ｎ−１の各々は同様の動作をするためプロセッサ１０−２を代表として説明する。共有バスアクセス制御部１５−２は、データ７０のアクセス要求に含まれるアドレスを、キャッシュメモリ部１２−２に提供する。キャッシュメモリ部１２−２は、変更されたデータ７０を含む有効なキャッシュライン５０−２が存在するか否かを判定する。キャッシュメモリ部１２−２は、変更されたデータ７０を含む有効なキャッシュライン５０−２が存在していないと判定し、共有バスアクセス制御部１５−２にデータ７０の応答を提供しない。
【００５８】
＜プロセッサ１０−ｎの応答処理＞
プロセッサ１０−ｎの共有バスアクセス制御部１５−ｎは、データ７０の応答を取得する。共有バスアクセス制御部１５−ｎはデータ７０の応答を、キャッシュメモリ部１２−ｎ、及び命令実行部１１−ｎに提供する。キャッシュメモリ部１２−ｎは、データ７０の応答に含まれるアドレス及び変更されたデータ７０をキャッシュライン５０−ｎに保持し、そのキャッシュライン５０−ｎの有効フラグを有効に設定する。また、命令実行部１１−ｎは、命令の実行を継続する。
【００５９】
＜プロセッサ１０−２〜１０−ｎ−１の応答処理＞
一方、プロセッサ１０−２〜１０−ｎ−１の各々では、プロセッサ１０−１の無効化要求で説明したように、キャッシュライン５０−２〜５０−ｎ−１のそれぞれが無効化されたことで、他のプロセッサ１０で変更されたデータ７０を受け取れるように、無効化されたアドレスを監視している。プロセッサ１０−２〜１０−ｎ−１の応答処理に関しては、プロセッサ１０−２〜１０−ｎ−１の各々は同様の動作をするため、プロセッサ１０−２を代表として用いて動作を説明する。
【００６０】
プロセッサ１０−２の共有バスアクセス制御部１５−２は、データ７０の応答を取得する。共有バスアクセス制御部１５−２はデータ７０の応答を、共有データ監視部１４−２に提供する。共有データ監視部１４−２は、データ７０の応答が監視対象であるか否かを判定する。つまり、共有データ監視部１４−２は、無効化されたキャッシュライン５０−２に含まれるアドレスを監視データ６０−２に保持している状態で、プロセッサ１０−ｎの要求に応じてプロセッサ１０−１が共有バス３０に出力したアドレスとデータとを受け取ると、保持しているアドレスと受け取ったアドレスとが一致するか否かを判定する。そして、共有データ監視部１４−２は、一致する場合に保持しているアドレスと受け取ったデータとを関連付けて保持する。詳細には、共有データ監視部１４−２は、データ７０の応答に含まれるアドレスが、監視データ６０−２のアドレスに設定されたアドレスに一致するか否か、及び、そのアドレスに対応するアドレス有効フラグが有効であるか否かを判定する。データ７０の応答が監視対象である場合、共有データ監視部１４−２はその監視データ６０−２に変更されたデータ７０を保持し、変更されたデータ７０に対応するデータ有効フラグを有効に設定する。図１２は、プロセッサ１０−２〜１０−ｎ−１の各々で、それぞれの共有データ監視部１４−２〜１４−ｎ−１が、変更されたデータ７０を保持したことを示す図である。
【００６１】
このとき、メモリ２０は共有バス３０から変更されたデータ７０を取得する。
【００６２】
＜プロセッサ１０−２のキャッシュミス＞
ここで、プロセッサ１０−２が、データ７０を必要になったとする。命令実行部１１−２は、データ７０のアドレスを含むデータ７０のアクセス要求を、キャッシュメモリ部１２−２に提供する。
【００６３】
キャッシュメモリ部１２−２は、命令実行部１１−２からデータ７０のアクセス要求を受け取ると、複数のキャッシュライン５０−２を参照し、受け取ったアドレスが有効なキャッシュライン５０−２の何れかに存在するか否かを判定する。しかし、データ７０のアドレスが有効なキャッシュライン５０−２に存在しないため（キャッシュミス）、キャッシュメモリ部１２−２は、共有データ監視部１４−２、及び、共有バスアクセス制御部１５−２に対してデータ７０のアクセス要求を提供する。
【００６４】
共有データ監視部１４−２は、キャッシュメモリ部１２−２からデータ７０のアクセス要求を受け取ると、監視データ６０−２を参照して、提供可能な変更されたデータ７０が保持されているか否かを判定する。詳細には、共有データ監視部１４−２は、データ７０のアクセス要求に含まれるアドレスが、監視データ６０−２のアドレスに含まれているか否かと、そのアドレスに対応するアドレス有効フラグが有効であるか否かと、そのアドレスに対応するデータ７０のデータ有効フラグが有効であるか否かとの３つを判定する。共有データ監視部１４−２は、データ７０のアクセス要求に含まれるアドレスが監視データ６０−２のアドレスに含まれており、且つ、そのアドレスに対応するアドレス有効フラグが有効であり、且つ、そのアドレスに対応するデータ７０のデータ有効フラグが有効であると判定する。つまり、提供可能な変更されたデータ７０が保持されていると判定する。そして、共有データ監視部１４−２は、提供可能な変更されたデータ７０をキャッシュメモリ部１２−２に提供し、更に、提供可能な変更されたデータ７０が保持されていることを示す信号（バッファヒット信号）を、共有バスアクセス制御部１５−２に提供する。
【００６５】
共有バスアクセス制御部１５−２は、キャッシュメモリ部１２−２からデータ７０のアクセス要求を受け取った状態で、共有データ監視部１４−２からバッファヒット信号を受け取るので、データ７０のアクセス要求を共有バス３０に出力せず、プロセッサ１０−２での処理を継続させる。図１３は、プロセッサ１０−２において、共有データ監視部１４−２からキャッシュメモリ部１２−２へ、更新されたデータ７０が提供されたことを示す図である。
【００６６】
プロセッサ１０−３〜１０−ｎ−１がデータ７０を必要になった場合も、プロセッサ１０−２と同様に動作する。つまり、複数のプロセッサ１０（１０−２〜１０−ｎ−１）が進入権を獲得する処理を同時に行う場合でも、共有バス３０の待ち時間が抑えられる効果を奏している。
【００６７】
以上のように、本発明のマルチプロセッサシステム１は、複数のスレッドが排他制御区間への進入権を獲得する処理を同時に行なう場合でも、共有バス３０待ち時間の増加を抑えることができる。即ち、本発明のマルチプロセッサシステム１は、排他制御区間の状態を管理するデータに対する共有バス３０経由のアクセスが集中しないように動作するため、プログラムの性能を向上させることができる。
【００６８】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００６９】
この出願は、２０１１年１月１８日に出願された日本出願特願２０１１−００８１２０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2012098812.tif 000003
【図２】
2012098812.tif 000004
【図３】
2012098812.tif 000005
【図４】
2012098812.tif 000006
【図５】
2012098812.tif 000007
【図６】
2012098812.tif 000008
【図７】
2012098812.tif 000009
【図８】
2012098812.tif 000010
【図９】
2012098812.tif 000011
【図１０】
2012098812.tif 000012
【図１１】
2012098812.tif 000013
【図１２】
2012098812.tif 000014
【図１３】
2012098812.tif 000015
【国際調査報告】
2012098812.tif 000016
2012098812.tif 000017