(57)【要約】【課題】ループ状態にあるＣＰＵの消費電力を削減できるとともに、処理を行っているＣＰＵの性能に影響を与えず高性能処理を維持することが可能な半導体集積回路装置を提供する。【解決手段】ＣＰＵ間の排他制御のシステムとしてスピンロックを採用するマルチプロセッサシステム１００では、ＣＰＵ０および１には、それぞれスピンロック検出部１０および１１が接続されている。スピンロック検出部１０および１１においてスピンロック状態が検出されると、それぞれ反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１が出力され、それぞれＡＮＤ回路３０および３１に入力される。ＡＮＤ回路３０および３１には、それぞれメモリアクセス要求信号ＲＱ０およびＲＱ１も入力され、反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１とのＡＮＤ演算の出力Ｍ０およびＭ１が、それぞれキャッシュメモリ２０および２１に与えられる。【選択図】図１
2005327086.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置と、
前記複数の演算処理装置からそれぞれアクセス可能な共有メモリと、
前記複数の演算処理装置にそれぞれ接続される複数のキャッシュメモリと、
前記複数の演算処理装置および前記共有メモリを結合する共有バスと、
前記複数の演算処理装置にそれぞれ対応して接続され、前記複数の演算処理装置のうち何れかが排他的に前記共有メモリへのアクセスを行うために、他の演算処理装置に対して所定のループ処理を実行させるスピンロックをかけた場合に、自らが属する演算処理装置がスピンロック状態であるか否かを検出する複数のスピンロック検出部とを備え、
前記複数のスピンロック検出部のそれぞれは、
前記自らが属する演算処理装置がスピンロック状態になったことを検出した場合には、前記演算処理装置に接続されるキャッシュメモリに対して、前記自らが属する演算処理装置から出力するメモリアクセス要求信号をマスクするためのフラグ信号を出力する機能をそれぞれ有する、半導体集積回路装置。
【請求項２】
前記複数のスピンロック検出部のそれぞれは、
前記自らが属する演算処理装置が、スピンロックをかけるために出力する第１のロック変数を一時的に保持するデータバッファと、
前記第１のロック変数を書き込むべき前記共有メモリの第１のアドレスを一時的に保持するアドレスバッファと、
前記自らが属する演算処理装置がスピンロックをかけられた後、
前記データバッファおよび前記アドレスバッファに保持された前記第１のロック変数および前記第１のアドレスのそれぞれと、スピンロックをかけた演算処理装置が前記共有メモリ上に書き込んだ第２のロック変数および該第２のロック変数が書き込まれた第２のアドレスを比較する第１および第２の比較器と、
少なくとも前記第１および第２の比較器の比較結果が何れも一致する場合には、前記フラグ信号を出力するフラグ信号発生部と、を備える、請求項１記載の半導体集積回路装置。
【請求項３】
前記複数のスピンロック検出部のそれぞれは、
前記スピンロックをかけた演算処理装置がスピンロックを解除した後、
前記データバッファおよび前記アドレスバッファに保持された前記第１のロック変数および前記第１のアドレスのそれぞれと、前記スピンロックをかけた演算処理装置が前記共有メモリ上において書き換えた第３のロック変数および該第３のロック変数が書き込まれた第３のアドレスを比較する第３および第４の比較器を備え、
前記フラグ信号発生部は、
少なくとも前記第３の比較器での比較結果が一致せず、かつ前記第４の比較器での比較結果が一致する場合には、前記フラグ信号を解除する、請求項２記載の半導体集積回路装置。
【請求項４】
前記半導体集積回路装置は、
前記複数の演算処理装置にそれぞれ接続され、前記フラグ信号を受けている期間は、前記複数の演算処理装置のそれぞれに入力されるクロック信号をディセーブル状態とするクロック信号ディセーブル部をさらに備える、請求項１記載の半導体集積回路装置。
【請求項５】
前記複数のスピンロック検出部のそれぞれは、
前記フラグ信号出力の条件が成立した時点で計数を開始し、予め設定されたカウント数をオーバーフローした時点で、オーバーフローフラグを出力するカウンターをさらに備え、
前記フラグ信号発生部は、
前記第３の比較器での比較結果が一致せず、かつ前記第４の比較器での比較結果が一致する場合および前記オーバーフローフラグが出力された場合の少なくとも１方が成立する場合に、前記フラグ信号を解除する、請求項３記載の半導体集積回路装置。
【請求項６】
前記半導体集積回路装置は、
前記複数の演算処理装置に対しての割り込み要求を管理する割り込みコントローラを備え、
前記複数のスピンロック検出部のそれぞれは、
前記フラグ信号を解除する条件が成立した場合には、前記割り込みコントローラに対して、前記自らが属する演算処理装置に向けて割り込み要求信号を出力させる、請求項５記載の半導体集積回路装置。
【請求項７】
前記半導体集積回路装置は、
前記複数の演算処理装置に対しての割り込み要求を管理する割り込みコントローラを備え、
前記複数のスピンロック検出部のそれぞれは、
前記自らが属する演算処理装置に対する割り込み要求信号を受け、
前記フラグ信号発生部は、
前記第３の比較器での比較結果が一致せず、かつ前記第４の比較器での比較結果が一致する場合および前記割り込み要求信号が有効となった場合の少なくとも１方が成立する場合に、前記フラグ信号を解除する、請求項３記載の半導体集積回路装置。
【請求項８】
前記複数の演算処理装置のそれぞれは、
他の演算処理装置にスピンロックをかけることができなかった場合に、ポーリング命令により自らの内部で前記ループ処理を実行するとともに、前記ポーリング命令を前記複数のスピンロック検出部に向けて出力する機能を有し、
前記フラグ信号発生部は、
前記第１および第２の比較器の比較結果が何れも一致する場合であって、かつ前記ポーリング命令を受けた場合に、前記フラグ信号を出力する、請求項３記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路装置に関し、特にＣＰＵ（Central Processing Unit）を複数有するマルチプロセッサ形式の半導体集積回路装置に関する。
【背景技術】
【０００２】
マルチプロセッサ形式の半導体集積回路装置においては、メモリなどの共有リソースにアクセスする場合に排他制御が必要となる。
【０００３】
例えば、２つのＣＰＵαおよびβを想定し、それぞれ共通のメモリ上のＸ番地の値（初期値がＹ）に１を加えるという処理を行わせる場合、第１ステップではＸ番地の値をリードし、第２ステップでは、リードした値に１を加える、という処理になる。
【０００４】
しかし、排他制御を行わない場合、第１ステップではＣＰＵαがＸ番地の値（＝Ｙ）をリードし、第２ステップではＣＰＵβがＸ番地の値（＝Ｙ）をリードし、第３ステップではＣＰＵαがＹ＋１をＸ番地にライトし、第４ステップではＣＰＵβがＹ＋１をＸ番地にライトする、と言った処理を行う可能性を有し、このような場合には、ライトの回数に応じてＸ番地の値が増加しないことになる。
【０００５】
そこで、排他制御の１つの手法として、ロック付き（バスアクセスの制限付き）のアクセスが考えられている。この場合、第１のステップでは、ＣＰＵαがＸ番地の値をロック付きでリードし、第２のステップでは、ＣＰＵαがＹ＋１の値をＸ番地にライトして、ロックを解除すると言った動作を行う。このとき、ＣＰＵβはＸ番地の値をリードすることも、Ｘ番地にライトすることもできず、必ずＸ番地の値は増加する。
【０００６】
このようにロック付きのアクセスとは、バスアクセス権を取得したＣＰＵが、バスアクセス権を解除、すなわちロックを解除するまでは、他のＣＰＵはバスにアクセスできないという動作を指す。
【０００７】
また、ＣＰＵの処理速度と、メモリの動作速度との速度差が大きくなりつつある昨今では、キャッシュメモリを有するＣＰＵが多いが、マルチプロセッサにおいてはキャッシュメモリ間でのデータを一致させるためのメカニズムが必要である。
【０００８】
例えば、ＣＰＵαがＸ番地のメモリの内容をキャッシュに入れ、データを更新したものの、共有メモリにはまだ書き戻していない場合、ＣＰＵβがＸ番地のメモリを参照しようとすると、共有メモリ上の（古い）データを読み出す可能性がある。
【０００９】
そこでバスアクセスをスヌープ（監視）して、キャッシュメモリ間のコヒーレンシ（データの一致性）を保つメカニズムが考え出された。
【００１０】
通常のマルチプロセッサシステムにおいては、上記のようなロックや、スヌープといったメカニズムを用いている。
【００１１】
さらに、これらの機能を持つマルチプロセッサにおいて動作するオペレーティングシステムでは、より大きな単位、すなわち、ロック命令などの数命令で構成される単位ではなく、Ｉ／Ｏ処理などの膨大な命令数で構成されるサブルーチンなどの単位で排他制御を行うために、スピンロックという手法を用いることがある。
【００１２】
スピンロックとは、共有メモリ上の値を使って、どのＣＰＵが処理を実行できる権利を得るかを決める手法で、権利を取得できなかったＣＰＵはその名の通り、権利を取得できるまでスピンしながら（＝ループして）持つことになる。この手法では、権利を取得できなかったＣＰＵは何の処理も実行できずただループしているだけである。
【００１３】
スピンロックについては、例えば非特許文献１に記載されており、そこでは、スピンロックの基本的な考え方として、別のＣＰＵがロックをかけている場合、ロックが解除されるまでループして待つ、と説明されている。
【００１４】
【非特許文献１】月刊誌  ＬｉｎｕｘＪａｐａｎ３月号，株式会社五橋研究所，２００１年３月１日，ｐ１６１〜１６５
【発明の開示】
【発明が解決しようとする課題】
【００１５】
以上説明したように、スピンロックを採用する場合、権利を取得できなかったＣＰＵ、すなわちスピンロックがかけられているＣＰＵは、何の処理も実行できずただループしているだけでなく、命令、データ共にキャッシュにヒットして動き続ける可能性を有し、何の処理も実行しないにも拘わらず、電力だけは消費する可能性を有していた。
【００１６】
また、マルチプロセッサシステムで処理する目的は、処理能力の向上であるので、性能を落とすことにつながる可能性のある消費電力の低減のための構成は有しておらず、消費電力が大きいという問題があった。
【００１７】
本発明は上記のような問題点を解消するためになされたもので、スピンロックを採用するマルチプロセッサシステムにおいて、ループ状態にあるＣＰＵの消費電力を削減できるとともに、処理を行っているＣＰＵの性能に影響を与えず高性能処理を維持することが可能な半導体集積回路装置を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明に係る請求項１記載の半導体集積回路装置によれば、複数の演算処理装置と、前記複数の演算処理装置からそれぞれアクセス可能な共有メモリと、前記複数の演算処理装置にそれぞれ接続される複数のキャッシュメモリと、前記複数の演算処理装置および前記共有メモリを結合する共有バスと、前記複数の演算処理装置にそれぞれ対応して接続され、前記複数の演算処理装置のうち何れかが排他的に前記共有メモリへのアクセスを行うために、他の演算処理装置に対して所定のループ処理を実行させるスピンロックをかけた場合に、自らが属する演算処理装置がスピンロック状態であるか否かを検出する複数のスピンロック検出部とを備え、前記複数のスピンロック検出部のそれぞれは、前記自らが属する演算処理装置がスピンロック状態になったことを検出した場合には、前記演算処理装置に接続されるキャッシュメモリに対して、前記自らが属する演算処理装置から出力するメモリアクセス要求信号をマスクするためのフラグ信号を出力する機能をそれぞれ有している。
【発明の効果】
【００１９】
本発明に係る請求項１記載の半導体集積回路装置は、複数のスピンロック検出部が、自らが属する演算処理装置がスピンロック状態になったことを検出した場合には、演算処理装置に接続されるキャッシュメモリに対して、自らが属する演算処理装置から出力されるメモリアクセス要求信号をマスクするためのフラグ信号を出力するので、ポーリング回数を低減することができ、バスアクセスやキャッシュアクセス回数を減らすことが可能になるので、消費電力を削減することができる。
【発明を実施するための最良の形態】
【００２０】
＜Ａ．実施の形態１＞
＜Ａ−１．装置構成＞
本発明に係る実施の形態１の半導体集積回路装置として、図１にマルチプロセッサシステム１００の構成を示す。
【００２１】
マルチプロセッサシステム１００は、共有バスＣＢで結合された２つ以上のＣＰＵを有しており、図１においてはそのうちの２つ、ＣＰＵ０およびＣＰＵ１を示している。
【００２２】
ＣＰＵ０およびＣＰＵ１には、それぞれキャッシュメモリ２０および２１が接続され、それぞれのキャッシュ間のコヒーレンシを保つために共有バスＣＢをスヌープする機能を有している。
【００２３】
ＣＰＵ０およびＣＰＵ１は、データの読み出し、データの変更、データの書き戻しという一連の処理を、１つのＣＰＵでひとかたまりに実行するというアトミック（不可分）なデータ操作を行うために、バスをロックして他のＣＰＵの動作を制限する機能も有している。
【００２４】
そして、マルチプロセッサシステム１００では、ＣＰＵ間の排他制御のシステムとしてスピンロックを採用しており、ＣＰＵ０およびＣＰＵ１には、それぞれスピンロック検出部１０および１１が接続されている。
【００２５】
スピンロックとは、共有メモリ（図示せず）上の予め設定された所定のアドレスに書き込まれたデータ（ロック変数）を使って、どのＣＰＵが処理を実行できる権利を得るかを決める方法で、権利を取得できなかったＣＰＵは権利を取得できるまでスピンしながら（＝ループして）持つことになる。なお、共有メモリは共有バスＣＢによってＣＰＵ０およびＣＰＵ１と接続されており、両方のＣＰＵが共通に使用可能なメモリである。なお、ＣＰＵ０およびＣＰＵ１以外にもＣＰＵを有する場合には、当該ＣＰＵも共有メモリを使用することができることは言うまでもない。
【００２６】
より具体的な動作をＣＰＵ０を例に採って説明する。
まず、共有メモリなどの共有資源にアクセスする前に、上述した所定のアドレスのロック変数を取得する。ここで、ロック変数とは、ロック中であるか否かを表す数値であり、例えば、ロック中である場合には０、ロック開放状態である場合は１となっている。
【００２７】
次に、取得したロック変数に対して所定の演算を施すことで、ロック変数のチェックを行う。ロック変数が上述の関係を示す場合、取得したロック変数にマイナス１を加える演算を行うものとすると、ロック中である場合には、演算結果は−１となり、ＣＰＵ０がロックをかけることはできないので、ロックの取得に失敗したものと判断し、ロック変数の取得（リード）とロック変数のチェックを繰り返すことになる。これが、ポーリングと呼ばれる動作である。
【００２８】
一方、ロック開放状態である場合には、演算結果は０となり、ＣＰＵ０がロックをかけることが可能となり、ロックの取得に成功したものと判断し、ロック変数を０に書き換えるとともに、後述するロック信号を有効にして、ＣＰＵ１が共有資源にアクセスすることを制限する。
【００２９】
ロックの取得に成功したＣＰＵ０は、所望の共有資源にアクセスし、データの読み出し、変更、書き戻し等の所定の操作をアトミックに行い、それが終了すると、ロック変数を１に書き換えるとともに、後述するアンロック信号を有効にして、ＣＰＵ１が共有資源にアクセスすることを可能な状態とする。これが、ロック開放状態である。
【００３０】
なお、ロック変数の書き換えは、ロックの取得に成功したＣＰＵのみが行うことができる。
【００３１】
ここで、再び図１の説明に戻る。
スピンロック検出部１０および１１には、それぞれＣＰＵ０およびＣＰＵ１から出力されるキャッシュメモリ２０および２１へのメモリアクセス要求信号ＲＱ０およびＲＱ１、リード／ライト要求ＲＷ０およびＲＷ１、アドレスＡＤ０およびＡＤ１、データＤ０およびＤ１を入力する。また、ＣＰＵ０およびＣＰＵ１から出力される排他制御のためのロック信号Ｌ０およびＬ１、アンロック信号ＵＬ０およびＵＬ１も入力される。
【００３２】
なお、スピンロック検出部１０および１１からは、それぞれ反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１が出力され、それぞれＡＮＤ回路３０および３１に入力される構成となっている。そして、ＡＮＤ回路３０および３１には、それぞれメモリアクセス要求信号ＲＱ０およびＲＱ１も入力され、反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１とのＡＮＤ演算の出力Ｍ０およびＭ１が、それぞれキャッシュメモリ２０および２１に与えられる構成となっている。
【００３３】
スピンロック検出部１０および１１、キャッシュメモリ２０および２１には、共有バスＣＢから、他のＣＰＵが出力するアドレスおよびデータが与えられる構成となっているとともに、バスアービター３から共有バスの制御信号ＣＮＴ０およびＣＮＴ１が与えられる構成となっている。
【００３４】
共有バスの制御信号ＣＮＴ０およびＣＮＴ１には、リード、ライト、スヌープヒット、リクエスト、アクノレッジなどの信号が含まれている。
【００３５】
次に、図２を用いてスピンロック検出部１０および１１の構成について説明する。なお、スピンロック検出部１０および１１は同一の構成を有しており、ここではスピンロック検出部１０を例に採って説明する。
【００３６】
スピンロック検出部１０は、共にアンロック信号ＵＬ０およびクロック信号ＣＬＫが入力されるアンド回路１０１および１０２、アンド回路１０１および１０２の出力が同期入力端子に与えられるとともに、それぞれＣＰＵ０から出力されるアドレスＡＤ０およびデータＤ０が入力されるアドレスバッファ１０３およびデータバッファ１０４を備えている。
【００３７】
また、アドレスＡＤ０およびアドレスバッファ１０３の出力は、比較器１０５（第２の比較器）に与えられ、データＤ０およびアドレスバッファ１０４の出力は、比較器１０６（第１の比較器）に与えられ、比較器１０５および１０６の出力は、４入力ＡＮＤ回路１０７の入力に与えられる構成となっている。なお、４入力ＡＮＤ回路１０７の残りの２入力の１つは反転入力となっており、そこにはＣＰＵ０から出力されるロック信号Ｌ０が与えられ、残る１つの入力には、ＣＰＵ０から出力されるリード／ライト要求ＲＷ０が与えられる。
【００３８】
また、アドレスバッファ１０３およびデータバッファ１０４の出力は、それぞれ共有バスＣＢから与えられるアドレスＣＡＤおよびデータＣＤとともに、比較器１０８（第４の比較器）および１０９（第３の比較器）に与えられ、比較器１０８および１０９の出力は、それぞれＡＮＤ回路１１０の入力および反転入力に与えられる構成となっている。
【００３９】
ＡＮＤ回路１１０の出力は、３入力ＡＮＤ回路１１１の入力に与えられ、３入力ＡＮＤ回路１１１の２つの反転入力には、共有バスＣＢからロック信号ＣＬおよびリード／ライト要求ＣＲＷが与えられる構成となっている。
【００４０】
そして、４入力ＡＮＤ回路１０７の出力および３入力ＡＮＤ回路１１１の出力は、組み合わせ回路１１２に与えられ、組み合わせ回路１１２の出力は、フリップフロップ１１３のデータ入力端子に与えられ、フリップフロップ１１３からは、与えられたデータに基づいてスピンロックフラグＳＬＦ０が出力される構成となっている。なお、スピンロックフラグＳＬＦ０は、組み合わせ回路１１２の入力に与えられるとともに、インバータ回路１１４で反転されて、反転スピンロックフラグバーＳＬＦ０として出力される構成となっている。ここで、組み合わせ回路１１２およびフリップフロップ１１３はフラグ信号を発生させるので、フラグ信号発生部と総称することができる。
【００４１】
＜Ａ−２．装置動作＞
次に、図１および図２を参照しつつ、図３および図４に示すタイミングチャートを用いて、マルチプロセッサシステム１００の動作について説明する。なお、以下の説明では、ＣＰＵ１がスピンロックをかけ、ＣＰＵ０がスピンロックすることを前提とする。
【００４２】
図３はスピンロック検出部１０において、スピンロックフラグＳＬＦ０がセットされ、ＣＰＵ０（図１）から出力されるメモリアクセス要求信号ＲＱ０がマスクされるまでのタイミングチャートを示している。
【００４３】
なお、図３において、図３（ａ）はクロック信号ＣＬＫを、図３（ｂ）はメモリアクセス要求信号ＲＱ０を、図３（ｃ）はロック信号Ｌ０を、図３（ｄ）はアンロック信号ＵＬ０を、図３（ｅ）はリード／ライト要求ＲＷ０を、図３（ｆ）はアドレスバスのアドレス信号ＡＤ０を、図３（ｇ）はデータバスのデータ信号Ｄ０を、図３（ｈ）はスピンロックフラグＳＬＦ０を、図３（ｉ）はＡＮＤ回路３０での演算出力Ｍ０をそれぞれ表す。
【００４４】
また、図４はスピンロックフラグＳＬＦ０がセットされた後、ＣＰＵ１（図１）がスピンロックを解除した場合に、スピンロックフラグＳＬＦ０が解除され、マスクされていたＣＰＵ０のメモリアクセス要求信号ＲＱ０が再開するまでのタイミングチャートを示している。
【００４５】
なお、図４において、図４（ａ）はクロック信号ＣＬＫを、図４（ｂ）はメモリアクセス要求信号ＲＱ０を、図４（ｃ）は解除検出信号ＳＨを、図４（ｄ）は共有バス上のロック信号ＣＬを、図４（ｅ）は共有バス上のリード／ライト要求ＣＲＷを、図４（ｆ）は共有バス上のアドレス信号ＣＡＤを、図４（ｇ）は共有バスのデータ信号ＣＤを、図４（ｈ）はスピンロックフラグＳＬＦ０を、図４（ｉ）はＡＮＤ回路３０での演算出力Ｍ０をそれぞれ表す。
【００４６】
＜Ａ−２−１．スピンロック状態の検出＞
まず、スピンロック状態の検出動作について説明する。
アドレスバッファ１０３およびデータバッファ１０４は、ＣＰＵ０からのアンロック命令の実行時、すなわちアンロック信号ＵＬ０が有効な場合に、ロック変数を書き込むべき共有メモリのアドレスＡＤ０（第１のアドレス）と、そこに書き込むロック変数（第１のロック変数）、すなわちデータＤ０をそれぞれ保持する。
【００４７】
より具体的には、アンロック信号ＵＬ０が有効の場合に、クロック信号ＣＬＫがＬ（Low）からＨ（High）に変化するタイミングで、ロック変数を書き込むべき共有メモリのアドレスＡＤ０およびデータＤ０が、それぞれアドレスバッファ１０３およびデータバッファ１０４に保持される。ここで、ＣＰＵ０はロック変数を０にしてロックをかけることを要求しているので、データバッファ１０４に保持されるデータＤ０すなわち、ロック変数は０である。
【００４８】
ＣＰＵ０がロックの取得に失敗すると（ＣＰＵ１がロックをかけると）、ＣＰＵ０はスピンロックすることになり、ロック信号Ｌ０が無効な状態でのリード動作、すなわち共有メモリへのアクセスを行って、ロック変数（第２のロック変数）を読み出す。このときのロック変数はＣＰＵ１がロックをかけているので、０である。
【００４９】
このとき、ＣＰＵ０から出力される共有メモリのアドレスＡＤ０（第２のアドレス）と、共有メモリから読み出されたデータＤ０（第２のロック変数）が、それぞれ比較器１０５および１０６に与えられるともとに、アドレスバッファ１０３およびデータバッファ１０４に保持された共有メモリのアドレスＡＤ０（第１のアドレス）およびデータＤ０（第１のロック変数）が比較器１０５および１０６に与えられ、それぞれ比較される。
【００５０】
ここで、データバッファ１０４に保持されたデータＤ０も、共有メモリから読み出されたデータＤ０も同じであるので、比較器１０６の比較結果は一致を示し、また、アドレスＡＤ０も同じであるので、比較器１０５の比較結果も一致を示す。なお、比較器１０５および１０６は、比較結果が一致を示す場合はＨ（High）信号を出力する。
【００５１】
一方、リード動作であるのでリード／ライト要求ＲＷ０は、Ｈ状態となっており、ロック信号Ｌ０は無効であるのでＬ（Low）状態となっているが、ロック信号Ｌ０は反転して入力されるので、ＡＮＤ回路１０７の出力はＨ信号となる。これは、ＣＰＵ０がロックの取得に失敗し、スピンロックをかけられていることを表す信号となる。
【００５２】
また、比較器１０８および１０９には、共有バスＣＢからアドレスＣＡＤおよびデータＣＤが与えられるが、これは他のＣＰＵ、ここではＣＰＵ１が出力する、共有メモリのアドレスおよびデータである。そして、比較器１０８および１０９にはアドレスバッファ１０３およびデータバッファ１０４に保持された共有メモリのアドレスＡＤ０およびデータＤ０も与えられ、比較器１０８および１０９において、それぞれのアドレスおよびデータが比較される。
【００５３】
ここで、アドレスＣＡＤおよびアドレスＡＤ０は、何れもロック変数が書き込まれたアドレスであるので一致し、また、データＣＤについては、ＣＰＵ１がロックの解除をしていない時点では、データＤ０と一致するので、比較器１０８および１０９の比較結果は、共に一致を示し、Ｈ信号を出力する。その結果、ＡＮＤ回路１１０の出力である解除検出信号ＳＨはＬ信号となる。
【００５４】
また、ＡＮＤ回路１１１に入力される共有バスＣＢからのロック信号ＣＬおよびリード／ライト要求ＣＲＷは、ＣＰＵ１から出力されているものであり、この時点では何れもＨ信号である。従って、ＡＮＤ回路１１１の出力はＬ信号となる。
【００５５】
ここで、ＡＮＤ回路１０７の出力はスピンロックフラグをセットするための信号であり、セット信号ＳＴと呼称し、ＡＮＤ回路１１１の出力はスピンロックフラグを解除するための信号であり、クリア信号ＣＬＡと呼称する。
【００５６】
組み合わせ回路１１２およびフリップフロップ１１３は、セット信号がＨ状態になるタイミングでスピンロックフラグＳＬＦ０をＨ状態にセットし、一旦、セットされた後はその状態を保ち、また、クリア信号がＨ状態になるなることで、セット状態を解除するように構成されている。
【００５７】
従って、セット信号がＨ状態になることでスピンロックフラグＳＬＦ０がセットされ、インバータ回路１１４で反転されて反転スピンロックフラグバーＳＬＦ０がＡＮＤ回路３０（図１）に与えられる。
【００５８】
ＡＮＤ回路３０には、ＣＰＵ０からメモリアクセス要求信号ＲＱ０が与えられており、メモリアクセス要求信号ＲＱ０は、ポーリング期間中は周期的に繰り返されるが、反転スピンロックフラグバーＳＬＦ０がＡＮＤ回路３０に与えられて以降は、ＡＮＤ回路３０での演算出力Ｍ０が連続的にＬ状態となってキャッシュメモリ２０に与えられることになり、結果的にメモリアクセス要求信号ＲＱ０がマスクされて、ポーリング回数を低減することができる。
【００５９】
なお、メモリアクセス要求信号ＲＱ０がマスクされた結果、メモリアクセス要求信号ＲＱ０に対する応答信号がＣＰＵ０に戻らなくなり、ＣＰＵ０がメモリアクセス要求信号ＲＱ０を連続的に出す状態となる。
【００６０】
＜Ａ−２−２．スピンロック解除の検出＞
次に、スピンロック解除の検出動作について説明する。
ＣＰＵ１がアンロック指令を出してロック状態を解除するとともに、共有メモリ上のロック変数を書き換えるために共有バス上のデータＣＤ（第３のロック変数）を０から１に変更すると、スピンロック検出部１０の比較器１０９では、データバッファ１０４から与えられるデータＤ０（第１のロック変数）との比較結果が一致しなくなり、比較器１０９の出力はＬ信号となる。一方、アドレスＣＡＤ（第３のアドレス）およびアドレスＡＤ０（第１のアドレス）は一致するので、比較器１０８の出力はＨ信号となる。この結果ＡＮＤ回路１１０の出力である解除検出信号ＳＨはＨ信号となる。
【００６１】
また、ＡＮＤ回路１１１に入力される共有バスＣＢからのロック信号ＣＬは、ロック状態が解除されているのでＬ信号であり、リード／ライト要求ＣＲＷは、書き込みを要求しているのでＨ信号である。従って、ＡＮＤ回路１１１の出力はＨ信号となる。これは、ＣＰＵ１がスピンロックを解除したことを表す信号となる。
【００６２】
組み合わせ回路１１２およびフリップフロップ１１３は、クリア信号がＨ状態になるなることで、セット状態を解除し、スピンロックフラグＳＬＦ０をＬ状態とする。これにより、メモリアクセス要求信号ＲＱ０のマスクが解除され、ＡＮＤ回路３０での演算出力Ｍ０はメモリアクセス要求信号ＲＱ０に対応した信号となって、ＣＰＵ０は通常動作に復帰できる。
【００６３】
＜Ａ−３．効果＞
以上説明したように、実施の形態１のマルチプロセッサシステム１００は、ＣＰＵ０および１に対応してスピンロック検出部１０および１１を有し、スピンロック検出部１０および１１において、自らが属するＣＰＵにスピンロックがかけられたことを検出した場合は、スピンロックフラグをセットすることで、スピンロックがかけられたＣＰＵからのキャッシュメモリへのアクセス要求信号ＲＱ０をマスクする構成となっているので、ポーリング回数を低減することができ、バスアクセスやキャッシュアクセス回数を減らすことが可能になるので、消費電力を削減することができる。
【００６４】
また、スピンロック検出部は、共有バスのアドレスやデータおよび制御信号を監視しており、自らが属するＣＰＵ以外の他のＣＰＵのメモリアクセス状況を監視して、当該他のＣＰＵがスピンロックを解除した場合は、スピンロックフラグをクリアすることで、自らが属するＣＰＵを通常動作に復帰させることができる。
【００６５】
＜Ａ−４．変形例＞
以上説明した実施の形態１においては、スピンロック検出部１０および１１において、自らが属するＣＰＵがスピンロック状態にあることを検出した場合に、スピンロックフラグをセットして、キャッシュメモリへのアクセス要求の信号をマスクする構成を示したが、これに加えて、スピンロックフラグを自らが属するＣＰＵのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図５にマルチプロセッサシステム１００Ａとして示す。なお、図１に示したマルチプロセッサシステム１００と同一の構成については同一の符号を付し、重複する説明は省略する。
【００６６】
図５に示すように、ＣＰＵ０および１には図示しないクロック源からクロック信号ＣＬＫが与えられるが、その経路中にＡＮＤ回路４０および４１をそれぞれ介挿し、クロック信号ＣＬＫをＡＮＤ回路４０および４１のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれ反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１を与える構成とする。
【００６７】
これにより、スピンロックフラグＳＬＦ０およびＳＬＦ１がセット状態にある期間、すなわち、スピンロックがかけらている期間は、ＣＰＵ０および１に与えられるクロック信号ＣＬＫはディセーブル状態（停止状態）となるので、ＣＰＵ０および１での電力消費を低減できる。
【００６８】
なお、ＡＮＤ回路４０および４１は、クロック信号ＣＬＫをディセーブル状態とするので、クロック信号ディセーブル部と呼称することができる。
【００６９】
＜Ｂ．実施の形態２＞
＜Ｂ−１．装置構成＞
実施の形態１において説明したスピンロック検出部１０および１１では、自らが属するＣＰＵにかけられたスピンロックが解除された場合に、スピンロックフラグをクリアすることで、自らが属するＣＰＵを通常動作に復帰させる構成を有していたが、図６に示すスピンロック検出部１０Ａのように、スピンロックフラグを強制的にクリアする機能を有するように構成しても良い。なお、図２に示したスピンロック検出部１０と同一の構成については同一の符号を付し、重複する説明は省略する。また、スピンロック検出部１１Ａも同様の構成であることは言うまでもない。
【００７０】
図６に示すように、スピンロック検出部１０Ａにおいては、４入力ＡＮＤ回路１０７の出力であるセット信号を受け、スピンロックフラグのセット条件が成立した時点で計数を開始し、予め設定されたカウント数がオーバーフローした時点で、オーバーフローフラグＯＦを出力するカウンター１１５と、カウンター１１５の出力を受けるとともに、３入力ＡＮＤ回路１１１の出力を受けるＯＲ回路１１６を有している。
【００７１】
ＯＲ回路１１６の出力は、クリア信号ＣＬＡとして組み合わせ回路１１２に与えられるとともに、スピンロック検出部１０Ａの外部に設けられ、各ＣＰＵに対しての割り込み要求を管理する割り込みコントローラ５０にも与えられる。
【００７２】
ここで図７に、上述したスピンロック検出部１０Ａおよび１１Ａを有するマルチプロセッサシステム２００の構成を示す。なお、図１に示したマルチプロセッサシステム１００と同一の構成については同一の符号を付し、重複する説明は省略する。
【００７３】
＜Ｂ−２．装置動作＞
このような構成においてスピンロックフラグのセット条件が成立すると、セット信号が組み合わせ回路１１２に与えられてスピンロックフラグＳＬＦ０がセットされるとともに、カウンター１１５が計数を開始する。
【００７４】
ここで、カウンター１１５に設定されるカウント数は任意に設定でき、ＣＰＵが動作させるアプリケーションの仕様に応じて設定すれば良い。
【００７５】
そして、スピンロックフラグのセット条件の成立後から、カウンター１１５に設定されたカウント数に相当する一定時間が経過しても、スピンロックが解除されない場合には、オーバーフローフラグＯＦをセットすることでクリア信号とし、スピンロックフラグを強制的にクリアする。これにより、スピンロック検出部１０Ａが属するＣＰＵ０を通常動作に復帰させることができる。
【００７６】
なお、クリア信号は割り込みコントローラ５０にも与えられ、割り込みコントローラ５０ではクリア信号を受けた場合には割り込み要求信号ＩＲＥＱを有効にしてＣＰＵ０に与えるように構成することで、ＣＰＵ０内において割り込みハンドラ（割り込み要求信号ＩＲＥＱに基づいて割り込み処理を実行するプログラム）を実行することで、スピンロックを解除することが可能となり、ＣＰＵ０に共有メモリへのアクセス以外の処理を実行させることが可能となる。
【００７７】
＜Ｂ−３．効果＞
このように、スピンロックが長期間に及ぶ場合には、スピンロックフラグを強制的にクリアするとともに、オーバーフローフラグＯＦに基づいて割り込みコントローラ５０から割り込み要求信号ＩＲＥＱを有効にして出力させることで、自らが属するＣＰＵのスピンロックを解除するので、長期間スピンロックを続けるＣＰＵが存在することを防止して、システム内のＣＰＵを有効に活用でき、マルチプロセッサシステム全体での処理能力を高めることができる。
【００７８】
＜Ｂ−４．変形例＞
以上説明した実施の形態２においては、スピンロック検出部１０Ａおよび１１Ａにおいて、スピンロックが所定期間以上継続する場合は、スピンロックフラグを強制的にクリアする機能を有するとともに、割り込みコントローラ５０から割り込み要求信号ＩＲＥＱを有効にして出力させることで、ＣＰＵ内でスピンロックを解除する構成を示したが、これに加えて、スピンロックフラグを自らが属するＣＰＵのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図８にマルチプロセッサシステム２００Ａとして示す。なお、図７に示したマルチプロセッサシステム２００と同一の構成については同一の符号を付し、重複する説明は省略する。
【００７９】
図８に示すように、ＣＰＵ０および１には図示しないクロック源からクロック信号ＣＬＫが与えられるが、その経路中にＡＮＤ回路４０および４１をそれぞれ介挿し、クロック信号ＣＬＫをＡＮＤ回路４０および４１のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれスピンロック検出部１０Ａおよび１１Ａから、反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１を与える構成とする。
【００８０】
これにより、スピンロックフラグバーＳＬＦ０およびＳＬＦ１がセット状態にある期間、すなわち、スピンロックがかけらている期間には、ＣＰＵ０および１にはクロック信号ＣＬＫはディセーブル状態（停止状態）となるので、ＣＰＵ０および１での電力消費を低減できる。
【００８１】
＜Ｃ．実施の形態３＞
＜Ｃ−１．装置構成＞
実施の形態１において説明したスピンロック検出部１０および１１では、自らが属するＣＰＵにかけられたスピンロックが解除された場合に、スピンロックフラグをクリアすることで、自らが属するＣＰＵを通常動作に復帰させる構成を有していたが、図９に示すスピンロック検出部１０Ｂのように、スピンロックフラグのクリア条件に、割り込み要求信号を使用するように構成しても良い。なお、図２に示したスピンロック検出部１０と同一の構成については同一の符号を付し、重複する説明は省略する。また、スピンロック検出部１１Ｂも同様の構成であることは言うまでもない。
【００８２】
図９に示すように、スピンロック検出部１０Ｂにおいては、３入力ＡＮＤ回路１１１の出力を受けるとともに、スピンロック検出部１０Ｂの外部の割り込みコントローラ５０から出力される割り込み要求信号ＩＲＥＱを受けるＯＲ回路１１７を有している。
【００８３】
ＯＲ回路１１７の出力は、クリア信号ＣＬＡとして組み合わせ回路１１２に与えられる構成となっている。
【００８４】
ここで図１０に、上述したスピンロック検出部１０Ｂおよび１１Ｂを有するマルチプロセッサシステム３００の構成を示す。なお、図１に示したマルチプロセッサシステム１００と同一の構成については同一の符号を付し、重複する説明は省略する。
【００８５】
＜Ｃ−２．装置動作＞
このような構成においては、割り込みコントローラ５０に、ＣＰＵ０に対する割り込み要求があった場合、割り込みコントローラ５０はＣＰＵ０およびスピンロック検出部１０Ｂに対して割り込み要求信号ＩＲＥＱを有効にして与える。
【００８６】
スピンロック検出部１０Ｂにおいては、３入力ＡＮＤ回路１１１の出力および割り込み要求信号ＩＲＥＱの何れかが有効状態となればクリア信号をセットして組み合わせ回路１１２に与えることができるので、割り込み要求信号ＩＲＥＱが有効状態となることで、スピンロックフラグをクリアすることができる。
【００８７】
＜Ｃ−３．効果＞
以上説明した構成を採用することで、ＣＰＵ０のスピンロックが長期間に及んでいる場合に、ＣＰＵ０に対して共有メモリへのアクセス以外の処理をさせる必要が生じた場合には、スピンロック検出部１０Ｂに割り込み要求信号ＩＲＥＱを有効にして与えることで、スピンロックフラグをクリアすることで、ＣＰＵ０を通常動作に復帰させることができ、また、割り込みコントローラ５０からの割り込み要求信号ＩＲＥＱに基づいて、ＣＰＵ０内での割り込みハンドラの実行が可能となって、ＣＰＵ０に所望の処理を実行させることができる。
【００８８】
＜Ｃ−４．変形例＞
以上説明した実施の形態３においては、スピンロック検出部１０Ｂおよび１１Ｂにおいて、割り込みコントローラ５０からの割り込み要求信号ＩＲＥＱに基づいてスピンロックフラグを強制的にクリアする機能を有するとともに、割り込み要求信号ＩＲＥＱに基づいてＣＰＵ０内でスピンロックを解除する構成を示したが、これに加えて、スピンロックフラグを自らが属するＣＰＵのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図１１にマルチプロセッサシステム３００Ａとして示す。なお、図１０に示したマルチプロセッサシステム３００と同一の構成については同一の符号を付し、重複する説明は省略する。
【００８９】
図１１に示すように、ＣＰＵ０および１には図示しないクロック源からクロック信号ＣＬＫが与えられるが、その経路中にＡＮＤ回路４０および４１をそれぞれ介挿し、クロック信号ＣＬＫをＡＮＤ回路４０および４１のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれスピンロック検出部１０Ｂおよび１１Ｂから、反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１を与える構成とする。
【００９０】
これにより、スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１がセット状態にある期間、すなわち、スピンロックがかけらている期間には、ＣＰＵ０および１にはクロック信号ＣＬＫはディセーブル状態（停止状態）となるので、ＣＰＵ０および１での電力消費を低減できる。
【００９１】
＜Ｄ．実施の形態４＞
＜Ｄ−１．装置構成＞
実施の形態１において説明したスピンロック検出部１０および１１では、スピンロックフラグのセット条件として、比較器１０５および１０６での比較結果と、ＣＰＵ０から出力されるロック信号Ｌ０およびリード／ライト要求ＲＷ０を使用する構成を有していたが、図１２に示すスピンロック検出部１０Ｃのように、ＣＰＵ０から出力されるポーリング命令をロック信号Ｌ０およびリード／ライト要求ＲＷ０の代わりに使用するように構成しても良い。なお、図２に示したスピンロック検出部１０と同一の構成については同一の符号を付し、重複する説明は省略する。また、スピンロック検出部１１Ｃも同様の構成であることは言うまでもない。
【００９２】
図１２に示すように、スピンロック検出部１０Ｃにおいては、３入力ＡＮＤ回路１１８の入力に、それぞれ比較器１０５および１０６の出力と、ＣＰＵ０から出力されるポーリング命令ＰＬが与えられる構成となっている。また、３入力ＡＮＤ回路１１８の出力は、組み合わせ回路１１２の入力に接続されている。
【００９３】
ここでポーリングとは、ロックの取得に失敗したＣＰＵが、ロック変数の取得（リード）とロック変数のチェックを繰り返す動作であり、通常はポーリングの実現には、ロック変数の取得命令、ロック変数のチェック命令および繰り返し命令の３つの命令が必要となる。
【００９４】
しかし、これらの命令の代わりに、ポーリング命令ＰＬという１つの命令を使用することで命令数を削減することができる。
【００９５】
そして、このポーリング命令ＰＬを使用するということは、スピンロック状態になっていることを示しているので、これをスピンロックフラグのセット条件としても使用することは有効である。
【００９６】
ここで図１３に、上述したスピンロック検出部１０Ｃおよび１１Ｃを有するマルチプロセッサシステム４００の構成を示す。なお、図１に示したマルチプロセッサシステム１００と同一の構成については同一の符号を付し、重複する説明は省略する。
【００９７】
＜Ｄ−２．装置動作＞
このような構成においては、比較器１０５および１０６での比較結果が一致を示すとともに、ポーリング命令ＰＬが有効（Ｈ状態）になった場合に、ＡＮＤ回路１１８の出力が有効（Ｈ状態）になってスピンロックフラグをセットすることができる。
【００９８】
＜Ｄ−３．効果＞
以上説明した構成を採用することで、スピンロックフラグのセット条件として、ポーリング命令ＰＬを使用することで、スピンロック検出部の構成を簡略化できるとともに、ＣＰＵ内においてはポーリングのための命令数を削減できるので、命令コード量を削減してプログラムを簡略化できる。
【００９９】
＜Ｄ−４．変形例＞
以上説明した実施の形態４においては、スピンロック検出部１０Ｃおよび１１Ｃにおいて、スピンロックフラグのセット条件として、ポーリング命令ＰＬを使用する構成を示したが、これに加えて、スピンロックフラグを自らが属するＣＰＵのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図１４にマルチプロセッサシステム４００Ａとして示す。なお、図１３に示したマルチプロセッサシステム４００と同一の構成については同一の符号を付し、重複する説明は省略する。
【０１００】
図１４に示すように、ＣＰＵ０および１には図示しないクロック源からクロック信号ＣＬＫが与えられるが、その経路中にＡＮＤ回路４０および４１をそれぞれ介挿し、クロック信号ＣＬＫをＡＮＤ回路４０および４１のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれスピンロック検出部１０Ｃおよび１１Ｃから、反転スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１を与える構成とする。
【０１０１】
これにより、スピンロックフラグバーＳＬＦ０およびバーＳＬＦ１がセット状態にある期間、すなわち、スピンロックがかけらている期間には、ＣＰＵ０および１にはクロック信号ＣＬＫはディセーブル状態（停止状態）となるので、ＣＰＵ０および１での電力消費を低減できる。
【図面の簡単な説明】
【０１０２】
【図１】本発明に係る実施の形態１のマルチプロセッサシステムの全体構成を説明する図である。
【図２】本発明に係る実施の形態１のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。
【図３】スピンロック検出部におけるスピンロック状態の検出動作を説明するタイミングチャートである。
【図４】スピンロック検出部におけるスピンロック解除の検出動作を説明するタイミングチャートである。
【図５】本発明に係る実施の形態１のマルチプロセッサシステムの変形例の構成を説明する図である。
【図６】本発明に係る実施の形態２のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。
【図７】本発明に係る実施の形態２のマルチプロセッサシステムの全体構成を説明する図である。
【図８】本発明に係る実施の形態２のマルチプロセッサシステムの変形例の構成を説明する図である。
【図９】本発明に係る実施の形態３のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。
【図１０】本発明に係る実施の形態３のマルチプロセッサシステムの全体構成を説明する図である。
【図１１】本発明に係る実施の形態３のマルチプロセッサシステムの変形例の構成を説明する図である。
【図１２】本発明に係る実施の形態４のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。
【図１３】本発明に係る実施の形態４のマルチプロセッサシステムの全体構成を説明する図である。
【図１４】本発明に係る実施の形態４のマルチプロセッサシステムの変形例の構成を説明する図である。
【符号の説明】
【０１０３】
ＣＢ  共有バス、ＣＬＡ  クリア信号、ＩＲＥＱ  割り込み要求信号、ＯＦ  オーバーフローフラグ、ＰＬ  ポーリング命令、ＳＬＦ０  スピンロックフラグ、ＳＴ  セット信号。
【図１】
2005327086.tif 000003
【図２】
2005327086.tif 000004
【図３】
2005327086.tif 000005
【図４】
2005327086.tif 000006
【図５】
2005327086.tif 000007
【図６】
2005327086.tif 000008
【図７】
2005327086.tif 000009
【図８】
2005327086.tif 000010
【図９】
2005327086.tif 000011
【図１０】
2005327086.tif 000012
【図１１】
2005327086.tif 000013
【図１２】
2005327086.tif 000014
【図１３】
2005327086.tif 000015
【図１４】
2005327086.tif 000016