JP2005327086A - 半導体集積回路装置 - Google Patents

半導体集積回路装置 Download PDF

Info

Publication number
JP2005327086A
JP2005327086A JP2004144576A JP2004144576A JP2005327086A JP 2005327086 A JP2005327086 A JP 2005327086A JP 2004144576 A JP2004144576 A JP 2004144576A JP 2004144576 A JP2004144576 A JP 2004144576A JP 2005327086 A JP2005327086 A JP 2005327086A
Authority
JP
Japan
Prior art keywords
spin lock
lock
arithmetic processing
spin
cpu
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.)
Pending
Application number
JP2004144576A
Other languages
English (en)
Inventor
Mamoru Sakukawa
守 作川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2004144576A priority Critical patent/JP2005327086A/ja
Publication of JP2005327086A publication Critical patent/JP2005327086A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ループ状態にあるCPUの消費電力を削減できるとともに、処理を行っているCPUの性能に影響を与えず高性能処理を維持することが可能な半導体集積回路装置を提供する。
【解決手段】CPU間の排他制御のシステムとしてスピンロックを採用するマルチプロセッサシステム100では、CPU0および1には、それぞれスピンロック検出部10および11が接続されている。スピンロック検出部10および11においてスピンロック状態が検出されると、それぞれ反転スピンロックフラグバーSLF0およびバーSLF1が出力され、それぞれAND回路30および31に入力される。AND回路30および31には、それぞれメモリアクセス要求信号RQ0およびRQ1も入力され、反転スピンロックフラグバーSLF0およびバーSLF1とのAND演算の出力M0およびM1が、それぞれキャッシュメモリ20および21に与えられる。
【選択図】図1

Description

本発明は半導体集積回路装置に関し、特にCPU(Central Processing Unit)を複数有するマルチプロセッサ形式の半導体集積回路装置に関する。
マルチプロセッサ形式の半導体集積回路装置においては、メモリなどの共有リソースにアクセスする場合に排他制御が必要となる。
例えば、2つのCPUαおよびβを想定し、それぞれ共通のメモリ上のX番地の値(初期値がY)に1を加えるという処理を行わせる場合、第1ステップではX番地の値をリードし、第2ステップでは、リードした値に1を加える、という処理になる。
しかし、排他制御を行わない場合、第1ステップではCPUαがX番地の値(=Y)をリードし、第2ステップではCPUβがX番地の値(=Y)をリードし、第3ステップではCPUαがY+1をX番地にライトし、第4ステップではCPUβがY+1をX番地にライトする、と言った処理を行う可能性を有し、このような場合には、ライトの回数に応じてX番地の値が増加しないことになる。
そこで、排他制御の1つの手法として、ロック付き(バスアクセスの制限付き)のアクセスが考えられている。この場合、第1のステップでは、CPUαがX番地の値をロック付きでリードし、第2のステップでは、CPUαがY+1の値をX番地にライトして、ロックを解除すると言った動作を行う。このとき、CPUβはX番地の値をリードすることも、X番地にライトすることもできず、必ずX番地の値は増加する。
このようにロック付きのアクセスとは、バスアクセス権を取得したCPUが、バスアクセス権を解除、すなわちロックを解除するまでは、他のCPUはバスにアクセスできないという動作を指す。
また、CPUの処理速度と、メモリの動作速度との速度差が大きくなりつつある昨今では、キャッシュメモリを有するCPUが多いが、マルチプロセッサにおいてはキャッシュメモリ間でのデータを一致させるためのメカニズムが必要である。
例えば、CPUαがX番地のメモリの内容をキャッシュに入れ、データを更新したものの、共有メモリにはまだ書き戻していない場合、CPUβがX番地のメモリを参照しようとすると、共有メモリ上の(古い)データを読み出す可能性がある。
そこでバスアクセスをスヌープ(監視)して、キャッシュメモリ間のコヒーレンシ(データの一致性)を保つメカニズムが考え出された。
通常のマルチプロセッサシステムにおいては、上記のようなロックや、スヌープといったメカニズムを用いている。
さらに、これらの機能を持つマルチプロセッサにおいて動作するオペレーティングシステムでは、より大きな単位、すなわち、ロック命令などの数命令で構成される単位ではなく、I/O処理などの膨大な命令数で構成されるサブルーチンなどの単位で排他制御を行うために、スピンロックという手法を用いることがある。
スピンロックとは、共有メモリ上の値を使って、どのCPUが処理を実行できる権利を得るかを決める手法で、権利を取得できなかったCPUはその名の通り、権利を取得できるまでスピンしながら(=ループして)持つことになる。この手法では、権利を取得できなかったCPUは何の処理も実行できずただループしているだけである。
スピンロックについては、例えば非特許文献1に記載されており、そこでは、スピンロックの基本的な考え方として、別のCPUがロックをかけている場合、ロックが解除されるまでループして待つ、と説明されている。
月刊誌 LinuxJapan3月号,株式会社五橋研究所,2001年3月1日,p161〜165
以上説明したように、スピンロックを採用する場合、権利を取得できなかったCPU、すなわちスピンロックがかけられているCPUは、何の処理も実行できずただループしているだけでなく、命令、データ共にキャッシュにヒットして動き続ける可能性を有し、何の処理も実行しないにも拘わらず、電力だけは消費する可能性を有していた。
また、マルチプロセッサシステムで処理する目的は、処理能力の向上であるので、性能を落とすことにつながる可能性のある消費電力の低減のための構成は有しておらず、消費電力が大きいという問題があった。
本発明は上記のような問題点を解消するためになされたもので、スピンロックを採用するマルチプロセッサシステムにおいて、ループ状態にあるCPUの消費電力を削減できるとともに、処理を行っているCPUの性能に影響を与えず高性能処理を維持することが可能な半導体集積回路装置を提供することを目的とする。
本発明に係る請求項1記載の半導体集積回路装置によれば、複数の演算処理装置と、前記複数の演算処理装置からそれぞれアクセス可能な共有メモリと、前記複数の演算処理装置にそれぞれ接続される複数のキャッシュメモリと、前記複数の演算処理装置および前記共有メモリを結合する共有バスと、前記複数の演算処理装置にそれぞれ対応して接続され、前記複数の演算処理装置のうち何れかが排他的に前記共有メモリへのアクセスを行うために、他の演算処理装置に対して所定のループ処理を実行させるスピンロックをかけた場合に、自らが属する演算処理装置がスピンロック状態であるか否かを検出する複数のスピンロック検出部とを備え、前記複数のスピンロック検出部のそれぞれは、前記自らが属する演算処理装置がスピンロック状態になったことを検出した場合には、前記演算処理装置に接続されるキャッシュメモリに対して、前記自らが属する演算処理装置から出力するメモリアクセス要求信号をマスクするためのフラグ信号を出力する機能をそれぞれ有している。
本発明に係る請求項1記載の半導体集積回路装置は、複数のスピンロック検出部が、自らが属する演算処理装置がスピンロック状態になったことを検出した場合には、演算処理装置に接続されるキャッシュメモリに対して、自らが属する演算処理装置から出力されるメモリアクセス要求信号をマスクするためのフラグ信号を出力するので、ポーリング回数を低減することができ、バスアクセスやキャッシュアクセス回数を減らすことが可能になるので、消費電力を削減することができる。
<A.実施の形態1>
<A−1.装置構成>
本発明に係る実施の形態1の半導体集積回路装置として、図1にマルチプロセッサシステム100の構成を示す。
マルチプロセッサシステム100は、共有バスCBで結合された2つ以上のCPUを有しており、図1においてはそのうちの2つ、CPU0およびCPU1を示している。
CPU0およびCPU1には、それぞれキャッシュメモリ20および21が接続され、それぞれのキャッシュ間のコヒーレンシを保つために共有バスCBをスヌープする機能を有している。
CPU0およびCPU1は、データの読み出し、データの変更、データの書き戻しという一連の処理を、1つのCPUでひとかたまりに実行するというアトミック(不可分)なデータ操作を行うために、バスをロックして他のCPUの動作を制限する機能も有している。
そして、マルチプロセッサシステム100では、CPU間の排他制御のシステムとしてスピンロックを採用しており、CPU0およびCPU1には、それぞれスピンロック検出部10および11が接続されている。
スピンロックとは、共有メモリ(図示せず)上の予め設定された所定のアドレスに書き込まれたデータ(ロック変数)を使って、どのCPUが処理を実行できる権利を得るかを決める方法で、権利を取得できなかったCPUは権利を取得できるまでスピンしながら(=ループして)持つことになる。なお、共有メモリは共有バスCBによってCPU0およびCPU1と接続されており、両方のCPUが共通に使用可能なメモリである。なお、CPU0およびCPU1以外にもCPUを有する場合には、当該CPUも共有メモリを使用することができることは言うまでもない。
より具体的な動作をCPU0を例に採って説明する。
まず、共有メモリなどの共有資源にアクセスする前に、上述した所定のアドレスのロック変数を取得する。ここで、ロック変数とは、ロック中であるか否かを表す数値であり、例えば、ロック中である場合には0、ロック開放状態である場合は1となっている。
次に、取得したロック変数に対して所定の演算を施すことで、ロック変数のチェックを行う。ロック変数が上述の関係を示す場合、取得したロック変数にマイナス1を加える演算を行うものとすると、ロック中である場合には、演算結果は−1となり、CPU0がロックをかけることはできないので、ロックの取得に失敗したものと判断し、ロック変数の取得(リード)とロック変数のチェックを繰り返すことになる。これが、ポーリングと呼ばれる動作である。
一方、ロック開放状態である場合には、演算結果は0となり、CPU0がロックをかけることが可能となり、ロックの取得に成功したものと判断し、ロック変数を0に書き換えるとともに、後述するロック信号を有効にして、CPU1が共有資源にアクセスすることを制限する。
ロックの取得に成功したCPU0は、所望の共有資源にアクセスし、データの読み出し、変更、書き戻し等の所定の操作をアトミックに行い、それが終了すると、ロック変数を1に書き換えるとともに、後述するアンロック信号を有効にして、CPU1が共有資源にアクセスすることを可能な状態とする。これが、ロック開放状態である。
なお、ロック変数の書き換えは、ロックの取得に成功したCPUのみが行うことができる。
ここで、再び図1の説明に戻る。
スピンロック検出部10および11には、それぞれCPU0およびCPU1から出力されるキャッシュメモリ20および21へのメモリアクセス要求信号RQ0およびRQ1、リード/ライト要求RW0およびRW1、アドレスAD0およびAD1、データD0およびD1を入力する。また、CPU0およびCPU1から出力される排他制御のためのロック信号L0およびL1、アンロック信号UL0およびUL1も入力される。
なお、スピンロック検出部10および11からは、それぞれ反転スピンロックフラグバーSLF0およびバーSLF1が出力され、それぞれAND回路30および31に入力される構成となっている。そして、AND回路30および31には、それぞれメモリアクセス要求信号RQ0およびRQ1も入力され、反転スピンロックフラグバーSLF0およびバーSLF1とのAND演算の出力M0およびM1が、それぞれキャッシュメモリ20および21に与えられる構成となっている。
スピンロック検出部10および11、キャッシュメモリ20および21には、共有バスCBから、他のCPUが出力するアドレスおよびデータが与えられる構成となっているとともに、バスアービター3から共有バスの制御信号CNT0およびCNT1が与えられる構成となっている。
共有バスの制御信号CNT0およびCNT1には、リード、ライト、スヌープヒット、リクエスト、アクノレッジなどの信号が含まれている。
次に、図2を用いてスピンロック検出部10および11の構成について説明する。なお、スピンロック検出部10および11は同一の構成を有しており、ここではスピンロック検出部10を例に採って説明する。
スピンロック検出部10は、共にアンロック信号UL0およびクロック信号CLKが入力されるアンド回路101および102、アンド回路101および102の出力が同期入力端子に与えられるとともに、それぞれCPU0から出力されるアドレスAD0およびデータD0が入力されるアドレスバッファ103およびデータバッファ104を備えている。
また、アドレスAD0およびアドレスバッファ103の出力は、比較器105(第2の比較器)に与えられ、データD0およびアドレスバッファ104の出力は、比較器106(第1の比較器)に与えられ、比較器105および106の出力は、4入力AND回路107の入力に与えられる構成となっている。なお、4入力AND回路107の残りの2入力の1つは反転入力となっており、そこにはCPU0から出力されるロック信号L0が与えられ、残る1つの入力には、CPU0から出力されるリード/ライト要求RW0が与えられる。
また、アドレスバッファ103およびデータバッファ104の出力は、それぞれ共有バスCBから与えられるアドレスCADおよびデータCDとともに、比較器108(第4の比較器)および109(第3の比較器)に与えられ、比較器108および109の出力は、それぞれAND回路110の入力および反転入力に与えられる構成となっている。
AND回路110の出力は、3入力AND回路111の入力に与えられ、3入力AND回路111の2つの反転入力には、共有バスCBからロック信号CLおよびリード/ライト要求CRWが与えられる構成となっている。
そして、4入力AND回路107の出力および3入力AND回路111の出力は、組み合わせ回路112に与えられ、組み合わせ回路112の出力は、フリップフロップ113のデータ入力端子に与えられ、フリップフロップ113からは、与えられたデータに基づいてスピンロックフラグSLF0が出力される構成となっている。なお、スピンロックフラグSLF0は、組み合わせ回路112の入力に与えられるとともに、インバータ回路114で反転されて、反転スピンロックフラグバーSLF0として出力される構成となっている。ここで、組み合わせ回路112およびフリップフロップ113はフラグ信号を発生させるので、フラグ信号発生部と総称することができる。
<A−2.装置動作>
次に、図1および図2を参照しつつ、図3および図4に示すタイミングチャートを用いて、マルチプロセッサシステム100の動作について説明する。なお、以下の説明では、CPU1がスピンロックをかけ、CPU0がスピンロックすることを前提とする。
図3はスピンロック検出部10において、スピンロックフラグSLF0がセットされ、CPU0(図1)から出力されるメモリアクセス要求信号RQ0がマスクされるまでのタイミングチャートを示している。
なお、図3において、図3(a)はクロック信号CLKを、図3(b)はメモリアクセス要求信号RQ0を、図3(c)はロック信号L0を、図3(d)はアンロック信号UL0を、図3(e)はリード/ライト要求RW0を、図3(f)はアドレスバスのアドレス信号AD0を、図3(g)はデータバスのデータ信号D0を、図3(h)はスピンロックフラグSLF0を、図3(i)はAND回路30での演算出力M0をそれぞれ表す。
また、図4はスピンロックフラグSLF0がセットされた後、CPU1(図1)がスピンロックを解除した場合に、スピンロックフラグSLF0が解除され、マスクされていたCPU0のメモリアクセス要求信号RQ0が再開するまでのタイミングチャートを示している。
なお、図4において、図4(a)はクロック信号CLKを、図4(b)はメモリアクセス要求信号RQ0を、図4(c)は解除検出信号SHを、図4(d)は共有バス上のロック信号CLを、図4(e)は共有バス上のリード/ライト要求CRWを、図4(f)は共有バス上のアドレス信号CADを、図4(g)は共有バスのデータ信号CDを、図4(h)はスピンロックフラグSLF0を、図4(i)はAND回路30での演算出力M0をそれぞれ表す。
<A−2−1.スピンロック状態の検出>
まず、スピンロック状態の検出動作について説明する。
アドレスバッファ103およびデータバッファ104は、CPU0からのアンロック命令の実行時、すなわちアンロック信号UL0が有効な場合に、ロック変数を書き込むべき共有メモリのアドレスAD0(第1のアドレス)と、そこに書き込むロック変数(第1のロック変数)、すなわちデータD0をそれぞれ保持する。
より具体的には、アンロック信号UL0が有効の場合に、クロック信号CLKがL(Low)からH(High)に変化するタイミングで、ロック変数を書き込むべき共有メモリのアドレスAD0およびデータD0が、それぞれアドレスバッファ103およびデータバッファ104に保持される。ここで、CPU0はロック変数を0にしてロックをかけることを要求しているので、データバッファ104に保持されるデータD0すなわち、ロック変数は0である。
CPU0がロックの取得に失敗すると(CPU1がロックをかけると)、CPU0はスピンロックすることになり、ロック信号L0が無効な状態でのリード動作、すなわち共有メモリへのアクセスを行って、ロック変数(第2のロック変数)を読み出す。このときのロック変数はCPU1がロックをかけているので、0である。
このとき、CPU0から出力される共有メモリのアドレスAD0(第2のアドレス)と、共有メモリから読み出されたデータD0(第2のロック変数)が、それぞれ比較器105および106に与えられるともとに、アドレスバッファ103およびデータバッファ104に保持された共有メモリのアドレスAD0(第1のアドレス)およびデータD0(第1のロック変数)が比較器105および106に与えられ、それぞれ比較される。
ここで、データバッファ104に保持されたデータD0も、共有メモリから読み出されたデータD0も同じであるので、比較器106の比較結果は一致を示し、また、アドレスAD0も同じであるので、比較器105の比較結果も一致を示す。なお、比較器105および106は、比較結果が一致を示す場合はH(High)信号を出力する。
一方、リード動作であるのでリード/ライト要求RW0は、H状態となっており、ロック信号L0は無効であるのでL(Low)状態となっているが、ロック信号L0は反転して入力されるので、AND回路107の出力はH信号となる。これは、CPU0がロックの取得に失敗し、スピンロックをかけられていることを表す信号となる。
また、比較器108および109には、共有バスCBからアドレスCADおよびデータCDが与えられるが、これは他のCPU、ここではCPU1が出力する、共有メモリのアドレスおよびデータである。そして、比較器108および109にはアドレスバッファ103およびデータバッファ104に保持された共有メモリのアドレスAD0およびデータD0も与えられ、比較器108および109において、それぞれのアドレスおよびデータが比較される。
ここで、アドレスCADおよびアドレスAD0は、何れもロック変数が書き込まれたアドレスであるので一致し、また、データCDについては、CPU1がロックの解除をしていない時点では、データD0と一致するので、比較器108および109の比較結果は、共に一致を示し、H信号を出力する。その結果、AND回路110の出力である解除検出信号SHはL信号となる。
また、AND回路111に入力される共有バスCBからのロック信号CLおよびリード/ライト要求CRWは、CPU1から出力されているものであり、この時点では何れもH信号である。従って、AND回路111の出力はL信号となる。
ここで、AND回路107の出力はスピンロックフラグをセットするための信号であり、セット信号STと呼称し、AND回路111の出力はスピンロックフラグを解除するための信号であり、クリア信号CLAと呼称する。
組み合わせ回路112およびフリップフロップ113は、セット信号がH状態になるタイミングでスピンロックフラグSLF0をH状態にセットし、一旦、セットされた後はその状態を保ち、また、クリア信号がH状態になるなることで、セット状態を解除するように構成されている。
従って、セット信号がH状態になることでスピンロックフラグSLF0がセットされ、インバータ回路114で反転されて反転スピンロックフラグバーSLF0がAND回路30(図1)に与えられる。
AND回路30には、CPU0からメモリアクセス要求信号RQ0が与えられており、メモリアクセス要求信号RQ0は、ポーリング期間中は周期的に繰り返されるが、反転スピンロックフラグバーSLF0がAND回路30に与えられて以降は、AND回路30での演算出力M0が連続的にL状態となってキャッシュメモリ20に与えられることになり、結果的にメモリアクセス要求信号RQ0がマスクされて、ポーリング回数を低減することができる。
なお、メモリアクセス要求信号RQ0がマスクされた結果、メモリアクセス要求信号RQ0に対する応答信号がCPU0に戻らなくなり、CPU0がメモリアクセス要求信号RQ0を連続的に出す状態となる。
<A−2−2.スピンロック解除の検出>
次に、スピンロック解除の検出動作について説明する。
CPU1がアンロック指令を出してロック状態を解除するとともに、共有メモリ上のロック変数を書き換えるために共有バス上のデータCD(第3のロック変数)を0から1に変更すると、スピンロック検出部10の比較器109では、データバッファ104から与えられるデータD0(第1のロック変数)との比較結果が一致しなくなり、比較器109の出力はL信号となる。一方、アドレスCAD(第3のアドレス)およびアドレスAD0(第1のアドレス)は一致するので、比較器108の出力はH信号となる。この結果AND回路110の出力である解除検出信号SHはH信号となる。
また、AND回路111に入力される共有バスCBからのロック信号CLは、ロック状態が解除されているのでL信号であり、リード/ライト要求CRWは、書き込みを要求しているのでH信号である。従って、AND回路111の出力はH信号となる。これは、CPU1がスピンロックを解除したことを表す信号となる。
組み合わせ回路112およびフリップフロップ113は、クリア信号がH状態になるなることで、セット状態を解除し、スピンロックフラグSLF0をL状態とする。これにより、メモリアクセス要求信号RQ0のマスクが解除され、AND回路30での演算出力M0はメモリアクセス要求信号RQ0に対応した信号となって、CPU0は通常動作に復帰できる。
<A−3.効果>
以上説明したように、実施の形態1のマルチプロセッサシステム100は、CPU0および1に対応してスピンロック検出部10および11を有し、スピンロック検出部10および11において、自らが属するCPUにスピンロックがかけられたことを検出した場合は、スピンロックフラグをセットすることで、スピンロックがかけられたCPUからのキャッシュメモリへのアクセス要求信号RQ0をマスクする構成となっているので、ポーリング回数を低減することができ、バスアクセスやキャッシュアクセス回数を減らすことが可能になるので、消費電力を削減することができる。
また、スピンロック検出部は、共有バスのアドレスやデータおよび制御信号を監視しており、自らが属するCPU以外の他のCPUのメモリアクセス状況を監視して、当該他のCPUがスピンロックを解除した場合は、スピンロックフラグをクリアすることで、自らが属するCPUを通常動作に復帰させることができる。
<A−4.変形例>
以上説明した実施の形態1においては、スピンロック検出部10および11において、自らが属するCPUがスピンロック状態にあることを検出した場合に、スピンロックフラグをセットして、キャッシュメモリへのアクセス要求の信号をマスクする構成を示したが、これに加えて、スピンロックフラグを自らが属するCPUのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図5にマルチプロセッサシステム100Aとして示す。なお、図1に示したマルチプロセッサシステム100と同一の構成については同一の符号を付し、重複する説明は省略する。
図5に示すように、CPU0および1には図示しないクロック源からクロック信号CLKが与えられるが、その経路中にAND回路40および41をそれぞれ介挿し、クロック信号CLKをAND回路40および41のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれ反転スピンロックフラグバーSLF0およびバーSLF1を与える構成とする。
これにより、スピンロックフラグSLF0およびSLF1がセット状態にある期間、すなわち、スピンロックがかけらている期間は、CPU0および1に与えられるクロック信号CLKはディセーブル状態(停止状態)となるので、CPU0および1での電力消費を低減できる。
なお、AND回路40および41は、クロック信号CLKをディセーブル状態とするので、クロック信号ディセーブル部と呼称することができる。
<B.実施の形態2>
<B−1.装置構成>
実施の形態1において説明したスピンロック検出部10および11では、自らが属するCPUにかけられたスピンロックが解除された場合に、スピンロックフラグをクリアすることで、自らが属するCPUを通常動作に復帰させる構成を有していたが、図6に示すスピンロック検出部10Aのように、スピンロックフラグを強制的にクリアする機能を有するように構成しても良い。なお、図2に示したスピンロック検出部10と同一の構成については同一の符号を付し、重複する説明は省略する。また、スピンロック検出部11Aも同様の構成であることは言うまでもない。
図6に示すように、スピンロック検出部10Aにおいては、4入力AND回路107の出力であるセット信号を受け、スピンロックフラグのセット条件が成立した時点で計数を開始し、予め設定されたカウント数がオーバーフローした時点で、オーバーフローフラグOFを出力するカウンター115と、カウンター115の出力を受けるとともに、3入力AND回路111の出力を受けるOR回路116を有している。
OR回路116の出力は、クリア信号CLAとして組み合わせ回路112に与えられるとともに、スピンロック検出部10Aの外部に設けられ、各CPUに対しての割り込み要求を管理する割り込みコントローラ50にも与えられる。
ここで図7に、上述したスピンロック検出部10Aおよび11Aを有するマルチプロセッサシステム200の構成を示す。なお、図1に示したマルチプロセッサシステム100と同一の構成については同一の符号を付し、重複する説明は省略する。
<B−2.装置動作>
このような構成においてスピンロックフラグのセット条件が成立すると、セット信号が組み合わせ回路112に与えられてスピンロックフラグSLF0がセットされるとともに、カウンター115が計数を開始する。
ここで、カウンター115に設定されるカウント数は任意に設定でき、CPUが動作させるアプリケーションの仕様に応じて設定すれば良い。
そして、スピンロックフラグのセット条件の成立後から、カウンター115に設定されたカウント数に相当する一定時間が経過しても、スピンロックが解除されない場合には、オーバーフローフラグOFをセットすることでクリア信号とし、スピンロックフラグを強制的にクリアする。これにより、スピンロック検出部10Aが属するCPU0を通常動作に復帰させることができる。
なお、クリア信号は割り込みコントローラ50にも与えられ、割り込みコントローラ50ではクリア信号を受けた場合には割り込み要求信号IREQを有効にしてCPU0に与えるように構成することで、CPU0内において割り込みハンドラ(割り込み要求信号IREQに基づいて割り込み処理を実行するプログラム)を実行することで、スピンロックを解除することが可能となり、CPU0に共有メモリへのアクセス以外の処理を実行させることが可能となる。
<B−3.効果>
このように、スピンロックが長期間に及ぶ場合には、スピンロックフラグを強制的にクリアするとともに、オーバーフローフラグOFに基づいて割り込みコントローラ50から割り込み要求信号IREQを有効にして出力させることで、自らが属するCPUのスピンロックを解除するので、長期間スピンロックを続けるCPUが存在することを防止して、システム内のCPUを有効に活用でき、マルチプロセッサシステム全体での処理能力を高めることができる。
<B−4.変形例>
以上説明した実施の形態2においては、スピンロック検出部10Aおよび11Aにおいて、スピンロックが所定期間以上継続する場合は、スピンロックフラグを強制的にクリアする機能を有するとともに、割り込みコントローラ50から割り込み要求信号IREQを有効にして出力させることで、CPU内でスピンロックを解除する構成を示したが、これに加えて、スピンロックフラグを自らが属するCPUのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図8にマルチプロセッサシステム200Aとして示す。なお、図7に示したマルチプロセッサシステム200と同一の構成については同一の符号を付し、重複する説明は省略する。
図8に示すように、CPU0および1には図示しないクロック源からクロック信号CLKが与えられるが、その経路中にAND回路40および41をそれぞれ介挿し、クロック信号CLKをAND回路40および41のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれスピンロック検出部10Aおよび11Aから、反転スピンロックフラグバーSLF0およびバーSLF1を与える構成とする。
これにより、スピンロックフラグバーSLF0およびSLF1がセット状態にある期間、すなわち、スピンロックがかけらている期間には、CPU0および1にはクロック信号CLKはディセーブル状態(停止状態)となるので、CPU0および1での電力消費を低減できる。
<C.実施の形態3>
<C−1.装置構成>
実施の形態1において説明したスピンロック検出部10および11では、自らが属するCPUにかけられたスピンロックが解除された場合に、スピンロックフラグをクリアすることで、自らが属するCPUを通常動作に復帰させる構成を有していたが、図9に示すスピンロック検出部10Bのように、スピンロックフラグのクリア条件に、割り込み要求信号を使用するように構成しても良い。なお、図2に示したスピンロック検出部10と同一の構成については同一の符号を付し、重複する説明は省略する。また、スピンロック検出部11Bも同様の構成であることは言うまでもない。
図9に示すように、スピンロック検出部10Bにおいては、3入力AND回路111の出力を受けるとともに、スピンロック検出部10Bの外部の割り込みコントローラ50から出力される割り込み要求信号IREQを受けるOR回路117を有している。
OR回路117の出力は、クリア信号CLAとして組み合わせ回路112に与えられる構成となっている。
ここで図10に、上述したスピンロック検出部10Bおよび11Bを有するマルチプロセッサシステム300の構成を示す。なお、図1に示したマルチプロセッサシステム100と同一の構成については同一の符号を付し、重複する説明は省略する。
<C−2.装置動作>
このような構成においては、割り込みコントローラ50に、CPU0に対する割り込み要求があった場合、割り込みコントローラ50はCPU0およびスピンロック検出部10Bに対して割り込み要求信号IREQを有効にして与える。
スピンロック検出部10Bにおいては、3入力AND回路111の出力および割り込み要求信号IREQの何れかが有効状態となればクリア信号をセットして組み合わせ回路112に与えることができるので、割り込み要求信号IREQが有効状態となることで、スピンロックフラグをクリアすることができる。
<C−3.効果>
以上説明した構成を採用することで、CPU0のスピンロックが長期間に及んでいる場合に、CPU0に対して共有メモリへのアクセス以外の処理をさせる必要が生じた場合には、スピンロック検出部10Bに割り込み要求信号IREQを有効にして与えることで、スピンロックフラグをクリアすることで、CPU0を通常動作に復帰させることができ、また、割り込みコントローラ50からの割り込み要求信号IREQに基づいて、CPU0内での割り込みハンドラの実行が可能となって、CPU0に所望の処理を実行させることができる。
<C−4.変形例>
以上説明した実施の形態3においては、スピンロック検出部10Bおよび11Bにおいて、割り込みコントローラ50からの割り込み要求信号IREQに基づいてスピンロックフラグを強制的にクリアする機能を有するとともに、割り込み要求信号IREQに基づいてCPU0内でスピンロックを解除する構成を示したが、これに加えて、スピンロックフラグを自らが属するCPUのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図11にマルチプロセッサシステム300Aとして示す。なお、図10に示したマルチプロセッサシステム300と同一の構成については同一の符号を付し、重複する説明は省略する。
図11に示すように、CPU0および1には図示しないクロック源からクロック信号CLKが与えられるが、その経路中にAND回路40および41をそれぞれ介挿し、クロック信号CLKをAND回路40および41のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれスピンロック検出部10Bおよび11Bから、反転スピンロックフラグバーSLF0およびバーSLF1を与える構成とする。
これにより、スピンロックフラグバーSLF0およびバーSLF1がセット状態にある期間、すなわち、スピンロックがかけらている期間には、CPU0および1にはクロック信号CLKはディセーブル状態(停止状態)となるので、CPU0および1での電力消費を低減できる。
<D.実施の形態4>
<D−1.装置構成>
実施の形態1において説明したスピンロック検出部10および11では、スピンロックフラグのセット条件として、比較器105および106での比較結果と、CPU0から出力されるロック信号L0およびリード/ライト要求RW0を使用する構成を有していたが、図12に示すスピンロック検出部10Cのように、CPU0から出力されるポーリング命令をロック信号L0およびリード/ライト要求RW0の代わりに使用するように構成しても良い。なお、図2に示したスピンロック検出部10と同一の構成については同一の符号を付し、重複する説明は省略する。また、スピンロック検出部11Cも同様の構成であることは言うまでもない。
図12に示すように、スピンロック検出部10Cにおいては、3入力AND回路118の入力に、それぞれ比較器105および106の出力と、CPU0から出力されるポーリング命令PLが与えられる構成となっている。また、3入力AND回路118の出力は、組み合わせ回路112の入力に接続されている。
ここでポーリングとは、ロックの取得に失敗したCPUが、ロック変数の取得(リード)とロック変数のチェックを繰り返す動作であり、通常はポーリングの実現には、ロック変数の取得命令、ロック変数のチェック命令および繰り返し命令の3つの命令が必要となる。
しかし、これらの命令の代わりに、ポーリング命令PLという1つの命令を使用することで命令数を削減することができる。
そして、このポーリング命令PLを使用するということは、スピンロック状態になっていることを示しているので、これをスピンロックフラグのセット条件としても使用することは有効である。
ここで図13に、上述したスピンロック検出部10Cおよび11Cを有するマルチプロセッサシステム400の構成を示す。なお、図1に示したマルチプロセッサシステム100と同一の構成については同一の符号を付し、重複する説明は省略する。
<D−2.装置動作>
このような構成においては、比較器105および106での比較結果が一致を示すとともに、ポーリング命令PLが有効(H状態)になった場合に、AND回路118の出力が有効(H状態)になってスピンロックフラグをセットすることができる。
<D−3.効果>
以上説明した構成を採用することで、スピンロックフラグのセット条件として、ポーリング命令PLを使用することで、スピンロック検出部の構成を簡略化できるとともに、CPU内においてはポーリングのための命令数を削減できるので、命令コード量を削減してプログラムを簡略化できる。
<D−4.変形例>
以上説明した実施の形態4においては、スピンロック検出部10Cおよび11Cにおいて、スピンロックフラグのセット条件として、ポーリング命令PLを使用する構成を示したが、これに加えて、スピンロックフラグを自らが属するCPUのクロック信号のディセーブル信号に使用する構成としても良い。その具体的構成を、図14にマルチプロセッサシステム400Aとして示す。なお、図13に示したマルチプロセッサシステム400と同一の構成については同一の符号を付し、重複する説明は省略する。
図14に示すように、CPU0および1には図示しないクロック源からクロック信号CLKが与えられるが、その経路中にAND回路40および41をそれぞれ介挿し、クロック信号CLKをAND回路40および41のそれぞれの入力端子に与えるとともに、残りの入力端子には、それぞれスピンロック検出部10Cおよび11Cから、反転スピンロックフラグバーSLF0およびバーSLF1を与える構成とする。
これにより、スピンロックフラグバーSLF0およびバーSLF1がセット状態にある期間、すなわち、スピンロックがかけらている期間には、CPU0および1にはクロック信号CLKはディセーブル状態(停止状態)となるので、CPU0および1での電力消費を低減できる。
本発明に係る実施の形態1のマルチプロセッサシステムの全体構成を説明する図である。 本発明に係る実施の形態1のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。 スピンロック検出部におけるスピンロック状態の検出動作を説明するタイミングチャートである。 スピンロック検出部におけるスピンロック解除の検出動作を説明するタイミングチャートである。 本発明に係る実施の形態1のマルチプロセッサシステムの変形例の構成を説明する図である。 本発明に係る実施の形態2のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。 本発明に係る実施の形態2のマルチプロセッサシステムの全体構成を説明する図である。 本発明に係る実施の形態2のマルチプロセッサシステムの変形例の構成を説明する図である。 本発明に係る実施の形態3のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。 本発明に係る実施の形態3のマルチプロセッサシステムの全体構成を説明する図である。 本発明に係る実施の形態3のマルチプロセッサシステムの変形例の構成を説明する図である。 本発明に係る実施の形態4のマルチプロセッサシステム内のスピンロック検出部の構成を説明する図である。 本発明に係る実施の形態4のマルチプロセッサシステムの全体構成を説明する図である。 本発明に係る実施の形態4のマルチプロセッサシステムの変形例の構成を説明する図である。
符号の説明
CB 共有バス、CLA クリア信号、IREQ 割り込み要求信号、OF オーバーフローフラグ、PL ポーリング命令、SLF0 スピンロックフラグ、ST セット信号。

Claims (8)

  1. 複数の演算処理装置と、
    前記複数の演算処理装置からそれぞれアクセス可能な共有メモリと、
    前記複数の演算処理装置にそれぞれ接続される複数のキャッシュメモリと、
    前記複数の演算処理装置および前記共有メモリを結合する共有バスと、
    前記複数の演算処理装置にそれぞれ対応して接続され、前記複数の演算処理装置のうち何れかが排他的に前記共有メモリへのアクセスを行うために、他の演算処理装置に対して所定のループ処理を実行させるスピンロックをかけた場合に、自らが属する演算処理装置がスピンロック状態であるか否かを検出する複数のスピンロック検出部とを備え、
    前記複数のスピンロック検出部のそれぞれは、
    前記自らが属する演算処理装置がスピンロック状態になったことを検出した場合には、前記演算処理装置に接続されるキャッシュメモリに対して、前記自らが属する演算処理装置から出力するメモリアクセス要求信号をマスクするためのフラグ信号を出力する機能をそれぞれ有する、半導体集積回路装置。
  2. 前記複数のスピンロック検出部のそれぞれは、
    前記自らが属する演算処理装置が、スピンロックをかけるために出力する第1のロック変数を一時的に保持するデータバッファと、
    前記第1のロック変数を書き込むべき前記共有メモリの第1のアドレスを一時的に保持するアドレスバッファと、
    前記自らが属する演算処理装置がスピンロックをかけられた後、
    前記データバッファおよび前記アドレスバッファに保持された前記第1のロック変数および前記第1のアドレスのそれぞれと、スピンロックをかけた演算処理装置が前記共有メモリ上に書き込んだ第2のロック変数および該第2のロック変数が書き込まれた第2のアドレスを比較する第1および第2の比較器と、
    少なくとも前記第1および第2の比較器の比較結果が何れも一致する場合には、前記フラグ信号を出力するフラグ信号発生部と、を備える、請求項1記載の半導体集積回路装置。
  3. 前記複数のスピンロック検出部のそれぞれは、
    前記スピンロックをかけた演算処理装置がスピンロックを解除した後、
    前記データバッファおよび前記アドレスバッファに保持された前記第1のロック変数および前記第1のアドレスのそれぞれと、前記スピンロックをかけた演算処理装置が前記共有メモリ上において書き換えた第3のロック変数および該第3のロック変数が書き込まれた第3のアドレスを比較する第3および第4の比較器を備え、
    前記フラグ信号発生部は、
    少なくとも前記第3の比較器での比較結果が一致せず、かつ前記第4の比較器での比較結果が一致する場合には、前記フラグ信号を解除する、請求項2記載の半導体集積回路装置。
  4. 前記半導体集積回路装置は、
    前記複数の演算処理装置にそれぞれ接続され、前記フラグ信号を受けている期間は、前記複数の演算処理装置のそれぞれに入力されるクロック信号をディセーブル状態とするクロック信号ディセーブル部をさらに備える、請求項1記載の半導体集積回路装置。
  5. 前記複数のスピンロック検出部のそれぞれは、
    前記フラグ信号出力の条件が成立した時点で計数を開始し、予め設定されたカウント数をオーバーフローした時点で、オーバーフローフラグを出力するカウンターをさらに備え、
    前記フラグ信号発生部は、
    前記第3の比較器での比較結果が一致せず、かつ前記第4の比較器での比較結果が一致する場合および前記オーバーフローフラグが出力された場合の少なくとも1方が成立する場合に、前記フラグ信号を解除する、請求項3記載の半導体集積回路装置。
  6. 前記半導体集積回路装置は、
    前記複数の演算処理装置に対しての割り込み要求を管理する割り込みコントローラを備え、
    前記複数のスピンロック検出部のそれぞれは、
    前記フラグ信号を解除する条件が成立した場合には、前記割り込みコントローラに対して、前記自らが属する演算処理装置に向けて割り込み要求信号を出力させる、請求項5記載の半導体集積回路装置。
  7. 前記半導体集積回路装置は、
    前記複数の演算処理装置に対しての割り込み要求を管理する割り込みコントローラを備え、
    前記複数のスピンロック検出部のそれぞれは、
    前記自らが属する演算処理装置に対する割り込み要求信号を受け、
    前記フラグ信号発生部は、
    前記第3の比較器での比較結果が一致せず、かつ前記第4の比較器での比較結果が一致する場合および前記割り込み要求信号が有効となった場合の少なくとも1方が成立する場合に、前記フラグ信号を解除する、請求項3記載の半導体集積回路装置。
  8. 前記複数の演算処理装置のそれぞれは、
    他の演算処理装置にスピンロックをかけることができなかった場合に、ポーリング命令により自らの内部で前記ループ処理を実行するとともに、前記ポーリング命令を前記複数のスピンロック検出部に向けて出力する機能を有し、
    前記フラグ信号発生部は、
    前記第1および第2の比較器の比較結果が何れも一致する場合であって、かつ前記ポーリング命令を受けた場合に、前記フラグ信号を出力する、請求項3記載の半導体集積回路装置。
JP2004144576A 2004-05-14 2004-05-14 半導体集積回路装置 Pending JP2005327086A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004144576A JP2005327086A (ja) 2004-05-14 2004-05-14 半導体集積回路装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004144576A JP2005327086A (ja) 2004-05-14 2004-05-14 半導体集積回路装置

Publications (1)

Publication Number Publication Date
JP2005327086A true JP2005327086A (ja) 2005-11-24

Family

ID=35473405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004144576A Pending JP2005327086A (ja) 2004-05-14 2004-05-14 半導体集積回路装置

Country Status (1)

Country Link
JP (1) JP2005327086A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179226A1 (en) * 2010-01-19 2011-07-21 Renesas Electronics Corporation Data processor
CN117112246A (zh) * 2023-10-24 2023-11-24 苏州元脑智能科技有限公司 自旋锁的控制装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179226A1 (en) * 2010-01-19 2011-07-21 Renesas Electronics Corporation Data processor
JP2011150422A (ja) * 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
US8725958B2 (en) 2010-01-19 2014-05-13 Renesas Electronics Corporation Methods and systems for maintaining cache coherency in multi-processor systems
CN117112246A (zh) * 2023-10-24 2023-11-24 苏州元脑智能科技有限公司 自旋锁的控制装置
CN117112246B (zh) * 2023-10-24 2024-02-09 苏州元脑智能科技有限公司 自旋锁的控制装置

Similar Documents

Publication Publication Date Title
CN106575218B (zh) 持久性存储屏障处理器、方法、系统和指令
US9372808B2 (en) Deadlock-avoiding coherent system on chip interconnect
JP5876458B2 (ja) Simdベクトルの同期
US8521965B2 (en) Hardware acceleration for a software transactional memory system
US9367472B2 (en) Observation of data in persistent memory
US8209689B2 (en) Live lock free priority scheme for memory transactions in transactional memory
US8904073B2 (en) Coherence processing with error checking
US20190108144A1 (en) Mutual exclusion in a non-coherent memory hierarchy
WO2008005687A2 (en) Global overflow method for virtualized transactional memory
US20040123078A1 (en) Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
EP2645237A2 (en) Deadlock/livelock resolution using service processor
US7080209B2 (en) Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
KR20150099434A (ko) 인터럽트가능 저장 익스클루시브
KR20230098610A (ko) 시스템 온 칩(soc들)을 위한 향상된 내구성
US9311241B2 (en) Method and apparatus to write modified cache data to a backing store while retaining write permissions
US9448937B1 (en) Cache coherency
US20170091254A1 (en) Making volatile isolation transactions failure-atomic in non-volatile memory
US9195465B2 (en) Cache coherency and processor consistency
US10831607B2 (en) Dynamic transaction throttling in a data processing system supporting transactional memory
US7437587B2 (en) Method and system for updating a value of a slow register to a value of a fast register
JP2005327086A (ja) 半導体集積回路装置
US20200097292A1 (en) Managing low-level instructions and core interactions in multi-core processors
Anand Take control of your cache: An infrastructure for user-controlled write-backs in modern superscalar out-of-order processors
Qadri et al. TMbox: A Flexible and Reconfigurable Hybrid Transactional Memory System
JP2005010995A (ja) マルチプロセッサシステム及びそのライトバックの障害処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090512

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090924