Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MULTIPROCESSOR SYSTEM AND MULTIPROCESSOR SYSTEM SYNCHRONIZATION METHOD
Document Type and Number:
WIPO Patent Application WO/2009/093680
Kind Code:
A1
Abstract:
Each of processor CPU (#0 to #7) includes a barrier write register BARW and a barrier read register BARR. A dedicated wiring block WBLK3 is used to connect the respective BARW to the respective BARR. For example, 1-bit BARW of CPU #0 is connected via the WBLK3 to the first bit of the respective 8-bit BARR contained in the CPU (#0 to #7) while 1-bit BARW of the CPU #1 is connected via the WBLK3 to the second bit of the respective 8-bit BARR contained in the CPU (#0 to #7). For example, the CPU #0 writes information into the BARW of itself so as to report a synchronization waiting state to the other CPU (#1 to #7) and reads the BAR of itself so as to recognize whether the other CPU (#1 to #7) are in the synchronization waiting state. This eliminates the need of a special dedicated command for the barrier synchronization process and increases the processing speed.

Inventors:
KASAHARA HIRONORI (JP)
KIMURA KEIJI (JP)
ITO MASAYUKI (JP)
KAMEI TATSUYA (JP)
HATTORI TOSHIHIRO (JP)
Application Number:
PCT/JP2009/051051
Publication Date:
July 30, 2009
Filing Date:
January 23, 2009
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
UNIV WASEDA (JP)
RENESAS TECH CORP (JP)
International Classes:
G06F9/52; G06F15/173
Foreign References:
JPH10111857A1998-04-28
JPH07262142A1995-10-13
Attorney, Agent or Firm:
TSUTSUI, Yamato (6th Floor Kokusai Chusei Kaikan, 14, Gobancho, Chiyoda-k, Tokyo 76, JP)
Download PDF:
Claims:
 N(N≧2)個のプロセッサと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアライトレジスタと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアリードレジスタと、
 前記N個のバリアライトレジスタを前記N個のバリアリードレジスタに配線する配線ブロックとを有し、
 前記配線ブロックは、前記N個のプロセッサ内のいずれかのプロセッサがバリア同期に伴い自身に設けられたバリアライトレジスタに第1情報を書き込んだ際に、前記第1情報を他のプロセッサに設けられたバリアリードレジスタに直接的な配線を用いて伝送し、
 前記他のプロセッサは、自身に設けられたバリアリードレジスタを介して前記第1情報を検出可能となっていることを特徴とするマルチプロセッサシステム。
 請求項1記載のマルチプロセッサシステムにおいて、
 前記N個のバリアライトレジスタのそれぞれは、1ビットレジスタであることを特徴とするマルチプロセッサシステム。
 請求項2記載のマルチプロセッサシステムにおいて、
 前記N個のバリアリードレジスタのそれぞれは、Nビットレジスタであり、
 前記配線ブロックは、前記N個のバリアライトレジスタのいずれかを前記N個のバリアリードレジスタが備えるNビット中の特定の1ビットにブロードキャスト配線し、前記N個のバリアライトレジスタの他のいずれかを前記N個のバリアリードレジスタが備えるNビット中の他の特定の1ビットにブロードキャスト配線することを特徴とするマルチプロセッサシステム。
 請求項3記載のマルチプロセッサシステムにおいて、
 前記N個のプロセッサのそれぞれに設けられたバリアライトレジスタは、これと同一のプロセッサに設けられたバリアリードレジスタが備えるNビット中の1ビットを併用することで実現されることを特徴とするマルチプロセッサシステム。
 請求項2記載のマルチプロセッサシステムにおいて、
 前記N個のバリアリードレジスタの内、前記N個のプロセッサのいずれか一つとなる第1プロセッサに含まれる第1バリアリードレジスタは、(N-1)ビット以上のレジスタであり、
 前記N個のバリアリードレジスタの内、前記第1バリアリードレジスタ以外の(N-1)個のバリアリードレジスタは、1ビットレジスタであり、
 前記配線ブロックは、前記第1プロセッサ以外に含まれる(N-1)個のバリアライトレジスタを前記第1バリアリードレジスタの前記(N-1)ビットに1対1で配線し、前記第1プロセッサに含まれるバリアライトレジスタを前記第1バリアリードレジスタ以外の(N-1)個のバリアリードレジスタにブロードキャスト配線することを特徴とするマルチプロセッサシステム。
 請求項1記載のマルチプロセッサシステムにおいて、さらに、
 前記N個のプロセッサに共通に接続されたシステムバスと、
 前記システムバスに接続され、前記N個のプロセッサで共通にアクセスされるメモリとを有することを特徴とするマルチプロセッサシステム。
 請求項1記載のマルチプロセッサシステムにおいて、
 前記N個のバリアライトレジスタおよび前記N個のバリアリードレジスタのそれぞれは、アドレスマップドレジスタであることを特徴とするマルチプロセッサシステム。
 請求項1記載のマルチプロセッサシステムにおいて、
 前記N個のプロセッサは、複数のクラスタに分割され、
 前記配線ブロックは、前記複数のクラスタにそれぞれ対応して複数設けられ、
 前記複数の配線ブロックのそれぞれは、自身のクラスタに含まれるバリアライトレジスタを自身のクラスタに含まれるバリアリードレジスタに配線し、前記自身のクラスタに含まれるバリアライトレジスタからの配線を自身以外のクラスタに延伸し、前記自身以外のクラスタから延伸されてきた前記自身以外のクラスタに含まれるバリアライトレジスタからの配線を前記自身のクラスタに含まれるバリアリードレジスタに配線することを特徴とするマルチプロセッサシステム。
 N(N≧2)個のプロセッサと、
 前記N個のプロセッサ内にそれぞれM(M≧2)セットずつ設けられた(M×N)個のバリアライトレジスタと、
 前記N個のプロセッサ内にそれぞれMセットずつ設けられた(M×N)個のバリアリードレジスタと、
 前記(M×N)個のバリアライトレジスタを前記(M×N)個のバリアリードレジスタに配線する配線ブロックとを有し、
 前記配線ブロックは、前記N個のプロセッサ内のいずれかのプロセッサがバリア同期に伴い自身に設けられた第K(K≦M)セット目のバリアライトレジスタに第1情報を書き込んだ際に、前記第1情報を他のプロセッサに設けられた第Kセット目のバリアリードレジスタに直接的な配線を用いて伝送し、
 前記他のプロセッサは、自身に設けられた前記第Kセット目のバリアリードレジスタを介して前記第1情報を検出可能となっていることを特徴とするマルチプロセッサシステム。
 請求項9記載のマルチプロセッサシステムにおいて、
 前記(M×N)個のバリアライトレジスタのそれぞれは、1ビットレジスタであることを特徴とするマルチプロセッサシステム。
 請求項10記載のマルチプロセッサシステムにおいて、
 前記(M×N)個のバリアリードレジスタのそれぞれは、Nビットレジスタであり、
 前記配線ブロックは、前記N個のプロセッサのいずれかとなる第1プロセッサに設けられた前記第Kセット目のバリアライトレジスタを前記第1プロセッサ以外のプロセッサに設けられた前記第Kセット目のバリアリードレジスタが備えるNビット中の特定の1ビットにブロードキャスト配線し、前記N個のプロセッサの他のいずれかとなる第2プロセッサに設けられた前記第Kセット目のバリアライトレジスタを前記第2プロセッサ以外のプロセッサに設けられた前記第Kセット目のバリアリードレジスタが備えるNビット中の他の特定の1ビットにブロードキャスト配線することを特徴とするマルチプロセッサシステム。
 請求項11記載のマルチプロセッサシステムにおいて、
 前記N個のプロセッサのそれぞれに設けられた前記第Kセット目のバリアライトレジスタは、これと同一のプロセッサに設けられた前記第Kセット目のバリアリードレジスタが備えるNビット中の1ビットを併用することで実現されることを特徴とするマルチプロセッサシステム。
 請求項9記載のマルチプロセッサシステムにおいて、さらに、
 前記N個のプロセッサに共通に接続されたシステムバスと、
 前記システムバスに接続され、前記N個のプロセッサで共通にアクセスされるメモリとを有することを特徴とするマルチプロセッサシステム。
 請求項9記載のマルチプロセッサシステムにおいて、
 前記(M×N)個のバリアライトレジスタおよび前記(M×N)個のバリアリードレジスタのそれぞれは、アドレスマップドレジスタであることを特徴とするマルチプロセッサシステム。
 請求項9記載のマルチプロセッサシステムにおいて、
 前記N個のプロセッサは、複数のクラスタに分割され、
 前記配線ブロックは、前記複数のクラスタにそれぞれ対応して複数設けられ、
 前記複数の配線ブロックのそれぞれは、自身のクラスタに含まれるバリアライトレジスタを自身のクラスタに含まれるバリアリードレジスタに配線し、前記自身のクラスタに含まれるバリアライトレジスタからの配線を自身以外のクラスタに延伸し、前記自身以外のクラスタから延伸されてきた前記自身以外のクラスタに含まれるバリアライトレジスタからの配線を前記自身のクラスタに含まれるバリアリードレジスタに配線することを特徴とするマルチプロセッサシステム。
 N(N≧2)個のプロセッサと、
 前記N個のプロセッサ内にそれぞれM(M≧2)セットずつ設けられた(M×N)個のバリアライトレジスタと、
 前記N個のプロセッサ内にそれぞれMセットずつ設けられた(M×N)個のバリアリードレジスタと、
 前記N個のプロセッサ内のいずれかのプロセッサがバリア同期に伴い自身に設けられた第K(K≦M)セット目のバリアライトレジスタに第1情報を書き込んだ際に、前記第1情報を他のプロセッサに設けられた第Kセット目のバリアリードレジスタに伝送する第1手段とを備え、
 前記他のプロセッサは、自身に設けられた前記第Kセット目のバリアリードレジスタを介して前記第1情報を検出可能となっていることを特徴とするマルチプロセッサシステム。
 請求項16記載のマルチプロセッサシステムにおいて、
 前記第1手段は、前記(M×N)個のバリアライトレジスタを前記(M×N)個のバリアリードレジスタに直接的に配線することで実現されることを特徴とするマルチプロセッサシステム。
 請求項16記載のマルチプロセッサシステムにおいて、
 前記(M×N)個のバリアライトレジスタのそれぞれは、1ビットレジスタであることを特徴とするマルチプロセッサシステム。
 請求項16記載のマルチプロセッサシステムにおいて、
 前記(M×N)個のバリアライトレジスタのそれぞれは、複数ビットレジスタであることを特徴とするマルチプロセッサシステム。
 N(N≧2)個のプロセッサと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアライトレジスタと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアリードレジスタと、
 前記N個のプロセッサ内のいずれかのプロセッサがバリア同期に伴い自身に設けられたバリアライトレジスタに第1情報を書き込んだ際に、前記第1情報を他のプロセッサに設けられたバリアリードレジスタに伝送する第1手段とを備え、
 前記N個のバリアライトレジスタのそれぞれは、複数ビットレジスタであり、
 前記第1情報には、前記複数ビットレジスタのビット数に応じて複数種類が設定でき、
 前記他のプロセッサは、自身に設けられた前記バリアリードレジスタを介して前記第1情報を検出可能となっていることを特徴とするマルチプロセッサシステム。
 請求項20記載のマルチプロセッサシステムにおいて、
 前記第1手段は、前記N個のバリアライトレジスタを前記N個のバリアリードレジスタに直接的に配線することで実現されることを特徴とするマルチプロセッサシステム。
 N(N≧2)個のプロセッサと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアライトレジスタと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアリードレジスタと、
 前記N個のプロセッサ内のいずれかのプロセッサがバリア同期に伴い自身に設けられたバリアライトレジスタに第1情報を書き込んだ際に、前記第1情報を他のプロセッサに設けられたバリアリードレジスタに伝送する第1手段とを用い、
 前記N個のプロセッサが、自身に設けられたバリアリードレジスタを読み、第1の値を同期ポイントとして自身以外のプロセッサの同期待ち状態を判別することで前記N個のプロセッサのバリア同期処理を行う第1処理と、
 前記第1処理の後に、前記N個のプロセッサが、自身のバリアライトレジスタの値を反転またはインクリメントすることで自身のバリアライトレジスタに第2の値を設定する第2処理と、
 前記第2処理の後に、前記N個のプロセッサが、自身に設けられたバリアリードレジスタを読み、前記第2の値を同期ポイントとして自身以外のプロセッサの同期待ち状態を判別することで前記N個のプロセッサのバリア同期処理を行う第3処理とを実行することを特徴とするマルチプロセッサシステムの同期方法。
 1個のマスタプロセッサを含んだN(N≧2)個のプロセッサと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアライトレジスタと、
 前記N個のプロセッサ内にそれぞれ設けられたN個のバリアリードレジスタと、
 前記N個のプロセッサ内のいずれかのプロセッサがバリア同期に伴い自身に設けられたバリアライトレジスタに第1情報を書き込んだ際に、前記第1情報を他のプロセッサに設けられたバリアリードレジスタに伝送する第1手段とを用い、
 前記マスタプロセッサ以外のプロセッサ全てが自身のバリアライトレジスタに前記第1情報を書き込んだことを、前記マスタプロセッサが、自身のバリアリードレジスタを介して検出する第1処理と、
 前記第1処理の後に、前記マスタプロセッサが自身のバリアライトレジスタに前記第1情報を書き込む第2処理と、
 前記第2処理と並行して、前記マスタプロセッサが自身のバリアライトレジスタに前記第1情報を書き込んだことを、前記マスタプロセッサ以外のプロセッサ全てが、自身のバリアリードレジスタを介して検出する第3処理とを実行することを特徴とするマルチプロセッサシステムの同期方法。
Description:
マルチプロセッサシステムおよ マルチプロセッサシステムの同期方法

 本発明は、マルチプロセッサシステムお びその同期方法に関し、特に、バリア同期 理をハードウェアで行うマルチプロセッサ ステムおよびその同期方法に適用して有益 技術に関するものである。

 例えば、特許文献1には、放送機能付きの システムバスにバスインタフェースを介して 接続されたN個のプロセッサからなるマルチ ロセッサシステムにおいて、各プロセッサ の同期を行う方式が記載されている。具体 には、各プロセッサは、N個のプロセッサに ビットが対応するNビットの同期用レジスタ を備える。各プロセッサは、自身のフェーズ が完了した際に同期用レジスタの対応ビット に‘1’を設定すると共に、システムバスを して他のプロセッサにも通知を行い、他の ロセッサは、この通知を受けて同期用レジ タの更新を行う。これによって、各プロセ サは、同期用レジスタの全ビットの‘1’を 識することで同期処理を行うことができる

 また、特許文献2には、それぞれが複数の プロセッサを含む複数のクラスタ間にクラス タ間通信レジスタを設けてクラスタ間のバリ ア同期を行う方式が記載されている。クラス タ間通信レジスタには、クラスタ数が設定さ れ、各クラスタ内に存在する代表プロセッサ がこのクラスタ数を1減算していくことで、0 なった時点でバリア同期処理を完結するこ ができる。

 また、特許文献3および特許文献4には、 ルチプロセッサシステムの共有メモリ上に プロセッサ対応の同期フラグ領域を設ける とでソフトウェア同期を行う方式が記載さ ている。さらに、特許文献5には、階層構造 キャッシュを備えたマルチプロセッサシス ムにおいて、その階層構造のキャッシュを 用して同期を行う方式が記載されている。 体的には、例えば、プロセッサモジュール で、CPU0とCPU1にそれぞれ一次キャッシュが けられ、この2つの一次キャッシュの上位に 通の二次キャッシュが設けられる場合、CPU0 で実行する複数スレッドの同期を一次キャッ シュ上に確保したフラグ変数で行い、CPU0とCP U1の同期を二次キャッシュ上に確保したフラ 変数で行う。

 また、非特許文献1には、P個のプロセッサ 対して共通に設けられる1個のPビットレジス タと、このPビットレジスタの値が全てゼロ なった場合を検出し、その際の検出信号をP のプロセッサに向けて送信する検出回路等 らなる構成が記載されている。P個のプロセ ッサで並列処理を実行した後にバリア同期を 行う場合、各プロセッサは、自身の処理が終 了した段階でPビットレジスタの対応ビット ゼロを書き込む。全てのプロセッサの処理 完了した際には、全てのプロセッサに向け 検出信号が送信されるため、これによって リア同期が可能となる。なお、非特許文献1 は、多重ループを並列処理で行うため、(P-1 )組のPビットレジスタからなるレジスタアレ を設ける構成も示されている。

特開平2-105961号公報

特開平10-91591号公報

特開2000-305919号公報

特開2005-71109号公報

特開2006-259821号公報 C.J.Beckmann, C.D.Polychronopoulos、「Fast barrier  synchronization hardware」、Supercomputing '90. Proce edings of Publication、1990年11月、p.180-189

 近年、半導体チップの微細化、高速化に うリーク電流や消費電力等の問題により、 作周波数の向上に代わる性能向上策として ルチプロセッサ(又はマルチコア)技術が用 られてきている。マルチプロセッサシステ では、通常、タスクやプロセス等と呼ばれ 一つの処理内容をそれぞれスレッド等と呼 れる複数の処理単位に分割し、この複数の レッドを各プロセッサに適宜割り当てるこ で複数のプロセッサによる並列処理が実行 れる。したがって、複数のスレッド間には 例えばあるスレッドの処理結果を別のスレ ドが用いて更なる処理を行うといったよう 依存関係が生じ、これに伴い、互いに依存 た処理を行う複数のプロセッサが同期ポイ トで待ち合わせを行うという所謂バリア同 が必要となる。

 このようなバリア同期は、ハードウェア よってもソフトウェアによっても実現でき 。例えば、前述した特許文献3、特許文献4 よび特許文献5には、ソフトウェアによるバ ア同期の実現方法が記載されている。ソフ ウェアによる方法は、要するに、各プロセ サで共有されるメモリ上にフラグ変数を設 するというものである。各プロセッサは、 身の処理が完了した際にこのフラグ変数を 新ならびに参照することで、自身以外のプ セッサの処理が終了しているかを認識する とができる。

 しかしながら、ソフトウェアによる方法 は、各プロセッサが共有メモリ上の共通フ グ変数にアクセスすることになるため、バ ア同期を完結するのに時間を要してしまう すなわち、単純なメモリアクセス時間に加 て、共有メモリへのアクセス権を得るまで 調停時間も多く必要とされる。例えば、特 文献5に示されるように、特定したキャッシ ュメモリ上にフラグ変数を確保することであ る程度の高速化は図れるが、例えば、キャッ シュメモリの特定手段が必要であったり、ラ イトバックが発生すると速度が低下すること などから特殊なキャッシュメモリの制御など が必要になると考えられる。

 また、例えば、前述した特許文献1、特許 文献2および非特許文献1には、ハードウェア よるバリア同期の実現方法が記載されてい 。特許文献2や非特許文献1の方法は、要す に、複数のプロセッサに対して共通のフラ レジスタを設け、このフラグレジスタの書 込みや参照によってバリア同期を行うもの ある。この場合、このフラグレジスタへの クセスを排他的に制御する必要があるため この処理に時間を要する恐れがある。一方 特許文献1の方法は、前述したフラグレジス を各プロセッサが備え、それぞれのフラグ ジスタのコヒーレンシ(一貫性)を共通のシ テムバスを介して保つようなものとなって る。しかしながら、システムバスを用いる 、バスのアクセス権を確保するための調停 間が必要となるため、高速なバリア同期処 が困難となる。

 本発明は、このようなことを鑑みてなさ たものであり、その目的の一つは、高効率 バリア同期処理を実現可能なマルチプロセ サシステムおよびその同期方法を提供する とにある。本発明の前記ならびにその他の 的と新規な特徴は、本明細書の記述および 付図面から明らかになるであろう。

 本願において開示される発明のうち代表 なものの概要を簡単に説明すれば、次の通 である。

 本発明の一実施の形態によるマルチプロ ッサシステムは、N(N≧2)個のプロセッサと このN個のプロセッサ内にそれぞれ設けられ N個のバリアライトレジスタ(第1レジスタ)お よびN個のバリアリードレジスタ(第2レジスタ )と、第1手段とを有するものとなっている。 1手段は、N個のプロセッサ内のいずれかの ロセッサがバリア同期に伴い自身に設けら たバリアライトレジスタに第1情報を書き込 だ際に、この第1情報を他のプロセッサに設 けられたバリアリードレジスタに伝送するも のとなっている。この第1手段は、例えば、N のバリアライトレジスタをN個のバリアリー ドレジスタに直接的に配線する配線ブロック によって実現される。

 このような構成を用いると、あるプロセ サが自身の同期待ちを意味する第1情報を自 身のバリアライトレジスタに書き込むことで 、この第1情報を即座に他のプロセッサのバ アリードレジスタに反映させることができ 。したがって、他のプロセッサは、自身の リアリードレジスタを読むことで、自身以 のプロセッサが同期待ちか否かを即座に知 ことができるため、高速なバリア同期処理 実現可能となる。この際に、バリアライト ジスタからバリアリードレジスタへの情報 送をシステムバスを介さずに専用の配線ブ ックを用いて行うことで、高速化が図れる

 また、各プロセッサは、自身の同期待ち 他のプロセッサに通知する際には自身のバ アライトレジスタに第1情報を書き込み、他 のプロセッサの同期待ちの状況を知る際には 、自身のバリアリードレジスタを読めばよい ため、CPUに特殊な命令セットを追加する必要 がなく、低コストでバリア同期処理が実現可 能となる。さらに、自身以外のプロセッサが バリアライトレジスタに第1情報を書き込ん 際に、この第1情報が、自身のプロセッサ内 バリアリードレジスタに向けて、割り込み の間接的形態ではなく直接的に反映される 成となっているため、自身のプロセッサは この反映に伴い自身が現在行っている処理 阻害されることはない。以上のようなこと ら、高効率なバリア同期処理が実現可能と る。

 また、本発明の一実施の形態のマルチプ セッサシステムは、前述したようなバリア イトレジスタおよびバリアリードレジスタ 、各プロセッサ内に複数セット備えたもの なっている。これによって、例えば、複数 層のバリア同期処理を含んだ処理内容を実 する際に、各階層毎に1個のセットを割り当 てることができ、このようなバリア同期処理 を容易に実現可能となる。

 さらに、本発明の一実施の形態のマルチ ロセッサシステムは、前述したようなバリ ライトレジスタが複数ビットから構成され ものとなっている。これによって、同期ポ ントをバージョンナンバーとして複数種類 定でき、高度または複雑なバリア同期処理 柔軟に対応可能となる。例えば、このバリ ライトレジスタの複数ビットの各ビットに 述したような複数階層の各階層を割り当て ことができる。また、前述したように、バ アライトレジスタおよびバリアリードレジ タを複数セット設け、加えて、前述したよ なバージョンナンバーも併用すれば、より 度または複雑なバリア同期処理にも柔軟に 応可能となる。

 本願において開示される発明のうち代表 なものによって得られる効果を簡単に説明 れば、次の通りである。

 本発明の一実施の形態によるマルチプロ ッサシステムを用いることで、高効率なバ ア同期処理を実現可能となる。

本発明の実施の形態1によるマルチプロ セッサシステムにおいて、その全体構成の一 例を示すブロック図である。 本発明の実施の形態1によるマルチプロ セッサシステムにおいて、その主要部の構成 例を示す概略図である。 本発明の実施の形態1によるマルチプロ セッサシステムにおいて、その主要部の他の 構成例を示す概略図である。 図2および図3のマルチプロセッサシス ムにおいて、その動作の一例を示す説明図 ある。 図4におけるバリア同期処理の詳細な処 理内容の一例を示す説明図である。 図2および図3のマルチプロセッサシス ムにおいて、その動作の他の一例を示す説 図である。 本発明の実施の形態2によるマルチプロ セッサシステムにおいて、その主要部の構成 例を示す概略図である。 本発明の実施の形態3によるマルチプロ セッサシステムにおいて、その主要部の構成 例を示す概略図である。 図8の構成例を用いた場合のバリア同期 処理の動作例を示す説明図である。 図9におけるバリア同期処理のより詳 な処理内容の一例を示す説明図である。 本発明の実施の形態4によるマルチプ セッサシステムにおいて、その主要部の構 例を示す概略図である。 図11のマルチプロセッサシステムにお て、その動作の一例を示す説明図である。 図11のマルチプロセッサシステムにお て、その動作の他の一例を示す説明図であ 。 図11のマルチプロセッサシステムにお て、その動作の更に他の一例を示す説明図 ある。 本発明の実施の形態4によるマルチプ セッサシステムにおいて、図12を変形した動 作例を示す説明図である。 本発明の実施の形態5によるマルチプ セッサシステムにおいて、その主要部の構 例を示す概略図である。 図16のマルチプロセッサシステムにお て、その動作の一例を示す説明図である。 図16のマルチプロセッサシステムにお て、その動作の他の一例を示す説明図であ 。 図18の動作例において、そのバリア同 処理で用いる詳細なソースコードの一例を す説明図である。 本発明の実施の形態6によるマルチプ セッサシステムにおいて、図16の構成例を用 いた他の動作の一例を示す説明図である。 本発明の実施の形態7によるマルチプ セッサシステムにおいて、その主要部の構 例を示す概略図である。 図21のマルチプロセッサシステムにお て、その使用例を示す説明図である。

 以下、本発明の実施の形態を図面に基づ て詳細に説明する。実施の形態を説明する めの全図において、同一の部材には原則と て同一の符号を付し、その繰り返しの説明 省略する。また、以下の実施の形態におい は便宜上その必要があるときは、複数のセ ションまたは実施の形態に分割して説明す が、特に明示した場合を除き、それらはお いに無関係なものではなく、一方は他方の 部または全部の変形例、詳細、補足説明等 関係にある。

 また、以下の実施の形態において、要素 数等(個数、数値、量、範囲等を含む)に言 する場合、特に明示した場合および原理的 明らかに特定の数に限定される場合等を除 、その特定の数に限定されるものではなく 特定の数以上でも以下でも良い。さらに、 下の実施の形態において、その構成要素(要 ステップ等も含む)は、特に明示した場合お よび原理的に明らかに必須であると考えられ る場合等を除き、必ずしも必須のものではな いことは言うまでもない。同様に、以下の実 施の形態において、構成要素等の形状、位置 関係等に言及するときは、特に明示した場合 および原理的に明らかにそうでないと考えら れる場合等を除き、実質的にその形状等に近 似または類似するもの等を含むものとする。 このことは、上記数値および範囲についても 同様である。

 (実施の形態1)
 図1は、本発明の実施の形態1によるマルチ ロセッサシステムにおいて、その全体構成 一例を示すブロック図である。図1に示すマ チプロセッサシステムは、例えば、プロセ サ等を含む半導体チップCPと、SRAM(Static Rand om Access Memory)等の外部メモリMEM1およびDDR2-SD RAM(Double Data Rate 2-Synchronous Dynamic Random Acce ss Memory)等の外部メモリMEM2によって構成され る。半導体チップCPは、特に制限されないが シリコンなどの半導体基板に公知のCMOS製造 方法によって形成されている。

 半導体チップCPには、特に制限されない 、システムバスSHWYが含まれる。このSHWYには 、複数(ここでは2個)のクラスタCLS0,1、メモリ コントローラLBSC,DBSC、共有メモリCSM、DMA(Direc t Memory Access)コントローラDMAC0,DMAC1、周辺バ ブリッジHPB等が接続される。HPBを介した先 は、クロック生成部CPG、汎用IOインタフェ ス部GPIO、タイマ部TMU0~3、割り込みコントロ ラINTCなどが接続される。メモリコントロー ラLBSCは、外部メモリ(SRAM)MEM1を制御し、メモ コントローラDBSCは、外部メモリ(DDR2-SDRAM)MEM 2を制御する。なお、クラスタとは、概念的 は、所謂クラスタリングによって分散され 個々のシステム単位を意味し、信頼性や高 性の観点から一般的に用いられている。

 クラスタCLS0には、スヌープバスSNB0およ それを制御するスヌープバスコントローラSN C0が含まれる。スヌープバスSNB0には、複数( こでは4個)のプロセッサ(CPU:Central Processing U nit)CPU#0~#3が接続される。SNB0およびSNC0は、各C PU#0~#3に含まれるキャッシュメモリの更新動 等を監視し、各CPU#0~#3間でキャッシュメモリ のコヒーレンシを維持できるように制御する 。このように、システムバスSHWYを介さずに ャッシュメモリのコヒーレンシを制御する とで、システム全体の高速化が図れる。ま 、クラスタCLS0には、デバッグコントローラD BG0なども含まれている。

 各CPU#0~#3のそれぞれは、CPUモジュールCPU_M D、浮動小数点数演算部FPU、キャッシュコン ローラCCN、システムバス用インタフェースBI C、ユーザメモリURAM、ローカルメモリIL,OL、 よび一次キャッシュメモリI$,O$などを含んで いる。各CPU#0~#3は、自身の一次キャッシュメ リI$,O$を最下位メモリとして所望の処理を う。この際に、上位メモリに対するライト ック等が生じると、SHWYを介して外部メモリM EM1,MEM2等へのアクセスが発生する。なお、こ では、簡略的に一次キャッシュメモリのみ 示しているが、勿論、クラスタCLS0内に各CPU #0~#3で共通となる二次キャッシュメモリ等を けてもよい。

 クラスタCLS1は、クラスタCLS0と同様の構 となっている。すなわち、クラスタCLS1には スヌープバスSNB1およびスヌープバスコント ローラSNC1が含まれ、SNB1には、複数(ここでは 4個)のプロセッサCPU#4~#7が接続される。また クラスタCLS1には、デバッグコントローラDBG1 なども含まれている。各CPU#4~#7内の構成は、 ラスタCLS0の場合と同様であるため詳細な説 明は省略する。なお、ここでは、4CPU×2クラ タのマルチプロセッサ(マルチコア)システム の構成例を示したが、勿論、クラスタ内のCPU 数やクラスタ数等は適宜変更可能である。

 図2は、本発明の実施の形態1によるマル プロセッサシステムにおいて、その主要部 構成例を示す概略図である。図2に示すマル プロセッサシステムは、図1に示したプロセ ッサCPU#0~#3からなるクラスタCLS0と、プロセッ サCPU#4~#7からなるクラスタCLS1に加えて、配線 ブロックWBLK0,WBLK1を備えた構成となっている 各CPU#0~#7のそれぞれは、1ビットのバリアラ トレジスタBARW(第1レジスタ)と、CPU数(ここ は8個)に対応するビット数(ここでは8ビット) を持つバリアリードレジスタBARR(第2レジスタ )を備えている。

 配線ブロックWBLK0は、CLS0内のCPU#0~#3に含 れる各BARWからの配線(4ビット分)を、CPU#0~#3 含まれる各BARR内の特定の4ビット(例えばビ ト[0]~[3])にそれぞれブロードキャストで接続 すると共に配線ブロックWBLK1に向けて延伸さ る。同様に、配線ブロックWBLK1は、CLS1内のC PU#4~#7に含まれる各BARWからの配線(4ビット分) 、CPU#4~#7に含まれる各BARR内の特定の4ビット (例えばビット[4]~[7])にそれぞれブロードキャ ストで接続すると共に配線ブロックWBLK0に向 て延伸させる。また、WBLK0は、WBLK1から延伸 されてきた配線(4ビット分)を、CPU#0~#3に含ま る各BARR内の残りの4ビット(例えばビット[4]~ [7])にそれぞれブロードキャストで接続する 同様に、WBLK1は、WBLK0から延伸されてきた配 (4ビット分)を、CPU#4~#7に含まれる各BARR内の りの4ビット(例えばビット[0]~[3])にそれぞれ ブロードキャストで接続する。

 したがって、例えば、CPU#0が自身のBARWに 報を書き込んだ場合には、この書き込んだ 報が、CPU#0~#7に含まれる各BARR内の特定の1ビ ット(例えばビット[0])に配線ブロックWBLK0,WBLK 1を介して一斉に反映される。また、例えば CPU#7が自身のBARWに情報を書き込んだ場合に 、この書き込んだ情報が、CPU#0~#7に含まれる 各BARR内の特定の1ビット(例えばビット[7])に 線ブロックWBLK0,WBLK1を介して一斉に反映され る。なお、特に限定はされないが、WBLK0は、 1におけるスヌープバスコントローラSNC0内 形成し、WBLK1は、スヌープバスコントローラ SNC1内に形成することができる。

 図3は、本発明の実施の形態1によるマル プロセッサシステムにおいて、その主要部 他の構成例を示す概略図である。図3に示す ルチプロセッサシステムは、図2の場合と異 なり、8個のCPU#0~#7がクラスタCLS0,CLS1によって 階層化されずにフラット状態である場合の構 成例である。図3の構成例では、図2の場合と 様に、各CPU#0~#7に含まれる1ビットのバリア イトレジスタBARWと8ビットのバリアリード ジスタBARRが相互に接続されている。この際 接続関係は、実質的には図2の場合と同様で あるが、レイアウト概念が図2の場合とは異 る。

 すなわち、図2の場合では、複数のクラス タにそれぞれ対応して複数の配線ブロックを 設けている。そして、あるクラスタに対応し た配線ブロック内では、自身のクラスタ内に 含まれるBARWとBARRの相互接続を行い、自身の ラスタにおけるBARWの情報をクラスタ情報と して束ねて他のクラスタへ伝送すると共に、 他のクラスタからのクラスタ情報を受けて、 自身のクラスタのBARRに伝送する。一方、図3 場合では、各CPU#0~#7に対応して一つの配線 ロックWBLK3を設けている。そして、WBLK3では CPU#0~#7に含まれる各BARWからの配線(8ビット )が、CPU#0~#7に含まれる各BARRの8ビットにそれ ぞれ接続されている。

 なお、図2や図3の構成例において、バリ ライトレジスタBARWやバリアリードレジスタB ARRは、例えば、CPUがレジスタアクセス命令を 実行することでアクセスが可能なコントロー ルレジスタ等で実現したり、あるいはCPUがメ モリアクセス命令を実行することでアクセス が可能なメモリマップドレジスタなどで実現 することができる。メモリマップドレジスタ を用いた場合には、CPUの命令セットなどを追 加する必要がないため、コントロールレジス タ等で実現する場合と比べてコスト面又は容 易性の観点から優位となる。メモリマップド レジスタは、特に限定はされないが、例えば 、図1のキャッシュコントローラCCN内に設け 。

 図4は、図2および図3のマルチプロセッサ ステムにおいて、その動作の一例を示す説 図である。マルチプロセッサシステムでは 例えば、図4に示すような処理内容を用いる ことで、省電力化を図ることができる。図4 おいて、まず、全てのCPU#0~#7は、高速動作が 必要な所定の処理(スレッド)を高速クロック 波数で並列に実行する(S401)。この際に、各C PUは、自身の処理を完了後に自身以外のCPUと ち合わせを行うバリア同期処理を実行する( S402)。バリア同期処理が完了すると、マスタC PU(例えばCPU#0)等が、全てのCPUのクロック周波 数を下げる命令を発行する(S403)。これを受け て、例えば、図1のクロック生成部CPGなどが ロック周波数を低下させる。

 続いて、全てのCPU#0~#7は、高速動作が不 要な所定の処理(スレッド)を低速のクロック 周波数を用いて並列に実行する(S404)。この際 に、各CPUは、自身の処理を完了後に自身以外 のCPUと待ち合わせを行うバリア同期処理を実 行する(S405)。バリア同期処理が完了すると、 マスタCPU(例えばCPU#0)等が、全てのCPUのクロ ク周波数を上げる命令を発行する(S406)。そ 後、全てのCPU#0~#7は、再び、高速動作が必要 な所定の処理を高速クロック周波数で並列に 実行する(S407)。

 図5は、図4におけるバリア同期処理の詳 な処理内容の一例を示す説明図である。図5 は、簡略化のため、全CPU数が4個(CPU#0~#3)で るものと仮定して説明を行う。まず、各CPU 実行するコード内では、所定の処理を行う ード(「do~enddo」に該当)の後にバリア同期処 の為のコードが付加されている。バリア同 処理の為のコードは、ここでは、「inv rm」 と「check r0-r3=1111」となっている。

 「inv rm」は、バリアライトレジスタBARW 情報を反転させる命令を意味する。「rm」は BARWに対応するソフトウェア上のレジスタフ ールドを意味し、添字「m」はCPU番号を意味 る。例えば、「inv r0」はCPU#0のBARWの情報を 反転させる命令、「inv r1」はCPU#1のBARWの情 を反転させる命令となる。「check r0-r3=1111」 は、バリアリードレジスタBARRの4ビットの情 が全て「1」となるまで待機させる命令を意 味する。この命令では、レジスタフィールド 「r0-r3」がBARRを表すことになるが、BARWとBARR 相互に接続されており、ソフトウェア的に 、一つのレジスタフィールドで取り扱うこ ができる。すなわち、例えば、「r0」は、CP U#0のBARWであると共に、CPU#0~#3に含まれるBARR ビット[0]でもあり、「r3」は、CPU#3のBARWであ ると共に、CPU#0~#3に含まれるBARRのビット[3]で もある。

 図5の例では、まず、最初に所定の処理を 完了したCPU#0が、その後の「inv rm」命令に伴 い自身のBARW(初期値はゼロとする)を反転させ て「1」にする。この情報は、前述した配線 ロックWBLKを介して全CPUのBARRに反映される( 5の例ではビット[0]に反映)。その後、CPU#0は 「check r0-r3=1111」命令を実行するが、自身 BARRの値が「1000」であるため待機状態となる 。次いで、所定の処理を完了したCPU#2が、そ 後の「inv rm」命令に伴い自身のBARW(初期値 ゼロとする)を反転させて「1」にする。こ 情報は、前述した配線ブロックWBLKを介して CPUのBARRに反映される(図5の例ではビット[2] 反映)。その後、CPU#2は、「check r0-r3=1111」 令を実行するが、自身のBARRの値が「1010」で あるため待機状態となる。同様に、CPU#0も、 身のBARRの値が「1010」であるため待機状態 保つ。

 続いて、所定の処理を完了したCPU#1が、 の後の「inv rm」命令に伴い自身のBARW(初期 はゼロとする)を反転させて「1」にする。こ の情報は、前述した配線ブロックWBLKを介し 全CPUのBARRに反映される(図5の例ではビット[1 ]に反映)。その後、CPU#1は、「check r0-r3=1111」 命令を実行するが、自身のBARRの値が「1110」 あるため待機状態となる。同様に、CPU#0及 CPU#2も、自身のBARRの値が「1110」であるため 機状態を保つ。

 最後に、所定の処理を完了したCPU#3が、 の後の「inv rm」命令に伴い自身のBARW(初期 はゼロとする)を反転させて「1」にする。こ の情報は、前述した配線ブロックWBLKを介し 全CPUのBARRに反映される(図5の例ではビット[3 ]に反映)。その後、CPU#3は、「check r0-r3=1111」 命令を実行し、自身のBARRの値が「1111」であ ため以降の処理へと進む。同様に、CPU#0、CP U#1、およびCPU#2も、自身のBARRの値が「1111」 あるため以降の処理へと進む。これによっ バリア同期処理が完了する。

 図6は、図2および図3のマルチプロセッサ ステムにおいて、その動作の他の一例を示 説明図である。図6において、各CPU#0~#7は、 定の処理(S601)→バリア同期処理(S602)→所定 処理(S603)→バリア同期処理(S604)→所定の処 (S605)→バリア同期処理(S606)を行っている。 CPU#0~#7におけるバリアライトレジスタBARWお びバリアリードレジスタBARRの初期値を「0 とすると、前述したように「inv rm」命令を いてバリア同期処理を行うと、バリア同期 理(S602)ではBARRの8ビットが全て「1」の場合 同期ポイントとなる。そして、次のバリア 期処理(S604)では、BARRの8ビットが全て「0」 場合が同期ポイントとなり、更に次のバリ 同期処理(S606)では、BARRの8ビットが全て「1 の場合が同期ポイントとなる。

 このように、「1」と「0」を反転させな ら同期ポイントを設定することで、例えば 同期ポイントを「1」に固定するような場合 比べてバリア同期処理の高速化が図れる。 なわち、あるバリア同期処理を完了後にバ アライトレジスタBARWおよびバリアリードレ ジスタBARRを「0」にリセットする処理が不必 となる。

 以上のように、本実施の形態1のマルチプ ロセッサシステムは、各CPU内に、自身の同期 待ちの情報を他のCPUに通知する第1レジスタ(B ARW)と、他のCPUから通知されてきた第1レジス の情報を保持する第2レジスタ(BARR)を設け、 この第1レジスタの情報が直接的な配線(例え メタル配線層など)によって第2レジスタに 映されるものとなっている。なお、直接的 配線とは、必ずしも配線のみで構成するの はなく、例えば、駆動能力を調整するため バッファ回路やフリップフロップ回路等を する場合など、実質的にそうであるものも まれる。このような構成を用いると、代表 には、(1)時間的に高効率なバリア同期処理 実現可能になる、(2)低コストなハードウェ でバリア同期処理が実現可能になる、など 効果が得られる。

 (1)に関しては、図5に示したように、例え ばCPU#0が同期待ちを通知するために第1レジス タ(BARW)に情報を書き込んだ場合、他のCPU#1~#3 の第2レジスタ(BARR)の情報が割り込み等のよ うな間接的な方法ではなく、直接的な配線に よって自動的に更新される。したがって、CPU #1~#3は、CPU#0から同期待ちの通知を受けても 在実行している処理を阻害されることはな 、高い処理効率を維持できる。また、最後 処理を完了したCPU#3が第1レジスタ(BARW)に情 を書き込みと、その情報が直接的な配線に って即座に各CPUの第2レジスタ(BARR)に反映さ るため、CPU#3の処理完了から全CPUによるバ ア同期処理の完了までに要する時間を短く きる。さらに、このようなバリア同期処理 伴い、各CPUは、自身内部に設けられた第1お び第2レジスタをアクセスすればよいため、 自身以外の場所へアクセスする場合と比べて アクセス時間も短くできる。そして、図6に したように、反転動作を行いながら同期ポ ントを設定することでも時間的な効率化が れる。

 (2)に関しては、本実施の形態1のマルチプ ロセッサシステムは、各CPUの内部に第1レジ タ(BARW)および第2レジスタ(BARR)を設けて、こ 自身のレジスタ操作によってバリア同期処 が可能な構成となっている。したがって、 身以外の場所をアクセスするような特殊命 が不要となり、低コスト化が図れる。さら 、第1および第2レジスタをメモリマップド ジスタで実現することで、各CPUが一般的に えているメモリアクセス命令を実行するこ でバリア同期処理が実現できるため、更な 低コスト化が図れる。

 一方、比較例として、前述した特許文献1 のような技術を用いた場合、この同期待ちの 通知がシステムバスを介して行われ、この通 知が行われる度に他のCPUの同期待ち状況を示 す同期レジスタをチェックする構成となって いるため、各CPUは、この通知に伴い現在実行 している処理が阻害されることになる。更に 、システムバスのバス権の調停に時間を要す ることになる。また、比較例として、前述し た特許文献2や非特許文献1のような技術を用 た場合は、各CPUに対して共通のフラグレジ タにアクセスを行うため、自身内部のレジ タにアクセスする場合と比べて時間を要す 恐れがあり、更にその排他制御に時間を要 る恐れもある。なお、非特許文献1の技術に おいて、フラグレジスタの各ビットを独立し て並行にライトできるように構成すればレジ スタアクセスの排他制御は不必要となる。た だし、別の問題として、この技術のように、 CPU外部に設けた共通のフラグレジスタに対し てアクセスを行うような構成を用いると、各 CPUの命令セットに特殊命令(バリア同期命令 )を実装する必要性が生じ、コストの増大が じてしまう。

 (実施の形態2)
 図7は、本発明の実施の形態2によるマルチ ロセッサシステムにおいて、その主要部の 成例を示す概略図である。前述した実施の 態1においては、バリアライトレジスタBARWと バリアリードレジスタBARRを別々のレジスタ( ドレスマップドレジスタの場合、個別にア レスが割り当てられたレジスタ)とする構成 例を示した。一方、図7に示すマルチプロセ サシステムは、前述した図3におけるバリア イトレジスタBARWとバリアリードレジスタBAR Rを統合して、共通のバリアレジスタBARとし ことが特徴となっている。図7において、複 (ここでは8個)のプロセッサCPU#0~#7のそれぞ は、8ビットのバリアレジスタBARを備えてい 。各バリアレジスタBARにおける同一ビット 士は、配線ブロックWBLK5による直接的な配 によって相互に接続される。すなわち、例 ば、CPU#0~#7に含まれる8個のBARのビット[0]同 が相互に接続され、ビット[1]同士が相互に 続され、同様にビット[2]~ビット[7]のそれぞ も相互に接続される。

 各CPU#0~#7は、自身のバリアレジスタBARに ける自身に対応するビットのみにライトア セスが可能となっており、また、BARの8ビッ を対してリードアクセスが可能となってい 。すなわち、例えば、CPU#0は、自身のBARの ット[0]のみにライトアクセスが可能となっ おり、同様に、CPU#1、#2、…、#7は、それぞ 、自身のBARのビット[1]、[2]、…、[7]のみに イトアクセスが可能となっている。したが て、各CPU#0~#7が、実施の形態1でバリアライ レジスタBARWをライトしたのと同様に、自身 BARにおける自身に対応するビットにライト 行うことで、実施の形態1の場合と同様にし てバリア同期処理を行うことが可能となる。

 以上、本実施の形態2のマルチプロセッサ システムを用いることで、実施の形態1で述 たような各種効果に加えて、レジスタ等の 積コストを削減可能になり、ハードウェア ストの更なる低減が可能になる。ただし、 えば、マスクライト機能や、リードモディ ァイライト機能や、または各ビット毎にア レスを割り当てて管理する機能等によって 身のBARの特定1ビットのみにライトできるよ に構成する必要があるため、場合によって 、新たな制御回路が必要になったり、1ビッ トライト命令の処理時間が長くなることもあ る。

 (実施の形態3)
 図8は、本発明の実施の形態3によるマルチ ロセッサシステムにおいて、その主要部の 成例を示す概略図である。図8に示すマルチ ロセッサシステムは、複数のプロセッサCPU 一つ(ここではCPU#0)をマスタとし、このマス タが主体的となって他のCPUの同期待ちの状況 を監視することで、前述した図3の場合と比 てバリアリードレジスタBARRのビット数が削 されたことが特徴となっている。

 図8において、マスタとなるCPU#0は、1ビッ トのバリアライトレジスタBARWと、7ビット(こ こでは対応関係を判り易くするため、ビット [0]を省いてビット[1]~[7]とする)のバリアリー レジスタBARRを備える。一方、それ以外のCPU #1~#7は、1ビットのバリアライトレジスタBARW 、1ビットのバリアリードレジスタBARRを備え る。配線ブロックWBLK6では、CPU#0における7ビ トのBARRの各ビットと、CPU#1~#7に含まれる各B ARWとか直接的な配線によってそれぞれ接続さ れる。すなわち、例えば、CPU#0のBARRのビット [1]にCPU#1のBARWが接続され、同様に、ビット[2] 、ビット[3]、…、ビット[7]に、それぞれ、CPU #2、CPU#3、…、CPU#7のBARWが接続される。また WBLK6では、CPU#0のBARWが、CPU#1~#7にそれぞれ含 れる1ビットのBARRに直接的な配線によって ロードキャストで接続される。

 図9は、図8の構成例を用いた場合のバリ 同期処理の動作例を示す説明図である。図9 おいて、各CPU#0~#7は、所定の処理(スレッド) を実行した後(S901)、バリア同期処理を行う(S9 02)。バリア同期処理では、前述した図5およ 図6の場合と異なり、マスタとなるCPU#0と、 れ以外のCPU#1~#7とでコードが異なっている。 すなわち、簡単に説明すると、マスタとなる CPU#0が、他のCPU#1~#7の同期待ちを確認した後 自身のBARWに同期待ちをセットし、このCPU#0 おける同期待ちのセットを他のCPU#1~#7が自身 のBARRで一斉に検出することでバリア同期処 が行われる。

 図10は、図9におけるバリア同期処理のよ 詳細な処理内容の一例を示す説明図である ここでは、簡素化のため、4個のCPU#0~#3の場 を仮定して説明を行う。図10に示すように マスタとなるCPU#0は、所定の処理(「do~enddo」 に該当)を完了した後に、「check r1-r3=111」命 、次いで「inv r0」命令を実行する。一方、 他のCPU#1~#3のそれぞれは、所定の処理(「do~end do」に該当)を完了した後に、「inv rm」命令(m はCPU番号)、次いで「check r0=1」命令を実行す る。

 図10の例では、まず、最初に所定の処理 完了したCPU#0が、その後の「check r1-r3=111」 令を実行するが、他のCPU#1~#3のBARWにまだ同 待ちフラグが設定されておらず、これに伴 自身のBARRの値が「000」(初期値はゼロとする )であるため待機状態となる。次いで、所定 処理を完了したCPU#2が、その後の「inv rm」 令に伴い自身のBARW(初期値はゼロとする)を 転させて「1」にする。この情報は、前述し 配線ブロックWBLK6を介してCPU#0のBARRに反映 れる(図10の例ではビット[2]に反映)。その後 CPU#2は、「check r0=1」命令を実行するが、CPU #0がBARWにまだ同期待ちフラグを設定しておら ず、これに伴い自身のBARRの値が「0」である め待機状態となる。一方、CPU#0も、自身のBA RRの値が「010」であるため待機状態を保つ。

 続いて、所定の処理を完了したCPU#1が、 の後の「inv rm」命令に伴い自身のBARW(初期 はゼロとする)を反転させて「1」にする。こ の情報は、前述した配線ブロックWBLK6を介し CPU#0のBARRに反映される(図10の例ではビット[ 1]に反映)。その後、CPU#1は、「check r0=1」命 を実行するが、CPU#0がBARWにまだ同期待ちフ グを設定しておらず、これに伴い自身のBARR 値が「0」であるため待機状態となる。一方 、CPU#0も、自身のBARRの値が「110」であるため 待機状態を保つ。

 最後に、所定の処理を完了したCPU#3が、 の後の「inv rm」命令に伴い自身のBARW(初期 はゼロとする)を反転させて「1」にする。こ の情報は、前述した配線ブロックWBLK6を介し CPU#0のBARRに反映される(図10の例ではビット[ 3]に反映)。その後、CPU#3は、「check r0=1」命 を実行するが、CPU#0がBARWにまだ同期待ちフ グを設定しておらず、これに伴い自身のBARR 値が「0」であるため待機状態となる。一方 、CPU#0は、自身のBARRの値が「111」となったた め、その後の「inv r0」命令に伴い自身のBARW( 初期値はゼロとする)を反転させて「1」とし 以降の処理へと進む。また、これと並行し CPU#0のBARWの情報は、前述した配線ブロックW BLK6を介してCPU#1~#3のBARRに即座に反映される これにより、待機状態であったCPU#1~#3は、自 身のBARRが「1」となったため、以降の処理へ 進む。このようにしてバリア同期処理が完 する。

 以上、本実施の形態3のマルチプロセッサ システムを用いることで、実施の形態1で述 たような各種効果に加えて、レジスタの面 コストを大幅に削減可能になり、ハードウ アコストの更なる低減が可能になる。なお 実施の形態1の場合と比べると、最後のCPUが 理を終えてから全てのCPUが同期を完了する での時間が若干延びる可能性はあるが、そ でもなお十分な高速性を確保できる。

 (実施の形態4)
 図11は、本発明の実施の形態4によるマルチ ロセッサシステムにおいて、その主要部の 成例を示す概略図である。図11に示すマル プロセッサシステムは、図2の構成例と比較 て、各プロセッサCPU#0~#7内にバリアライト ジスタBARWおよびバリアリードレジスタBARRを 複数セット(ここでは3セット)備えたことが特 徴となっている。

 図11のマルチプロセッサシステムは、図2 場合と同様に、CPU#0~#3からなるクラスタCLS0 、CPU#4~#7からなるクラスタCLS1とを含んでい 。各CPU#0~#7のそれぞれは、図2の場合と異な 、1ビット×3セットのバリアライトレジスタ BARW[0]~[2]と、8ビット×3セットのバリアリード レジスタBARR[0]~[2]とを含んでいる。

 クラスタCLS0用の配線ブロックWBLK10は、CPU #0~#3に含まれる各BARW[0]からのセット[0]用の4 ット配線を、CPU#0~#3に含まれる各BARR[0]内の 定の4ビット(例えばビット[0]~[3])にそれぞれ ロードキャストで接続すると共に配線ブロ クWBLK11に向けて延伸させる。また、同様に て、CPU#0~#3に含まれる各BARW[1]からのセット[ 1]用の4ビット配線、及び各BARW[2]からのセッ [2]用の4ビット配線を、それぞれ、CPU#0~#3に まれる各BARR[1]内の例えばビット[0]~[3]、及び 各BARR[2]内の例えばビット[0]~[3]にそれぞれ接 する。そして、WBLK10は、これらセット[1]用 びセット[2]用の4ビット配線を配線ブロック WBLK11に向けて延伸させる。

 クラスタCLS1用の配線ブロックWBLK11は、CPU #4~#7に含まれる各BARW[0]からのセット[0]用の4 ット配線を、CPU#4~#7に含まれる各BARR[0]内の 定の4ビット(例えばビット[4]~[7])にそれぞれ ロードキャストで接続すると共に配線ブロ クWBLK10に向けて延伸させる。また、同様に て、CPU#4~#7に含まれる各BARW[1]からのセット[ 1]用の4ビット配線、及び各BARW[2]からのセッ [2]用の4ビット配線を、それぞれ、CPU#4~#7に まれる各BARR[1]内の例えばビット[4]~[7]、及び 各BARR[2]内の例えばビット[4]~[7]に接続する。 して、WBLK11は、これらセット[1]用およびセ ト[2]用の4ビット配線を配線ブロックWBLK10に 向けて延伸させる。

 WBLK10は、WBLK11から延伸されてきたセット[ 0]用の4ビット配線をCPU#0~#3に含まれる各BARR[0] 内の特定の4ビット(例えばビット[4]~[7])にそ ぞれブロードキャストで接続する。同様に て、WBLK11から延伸されてきたセット[1]用の4 ット配線、及びセット[2]用の4ビット配線を 、それぞれ、CPU#0~#3に含まれる各BARR[1]内の例 えばビット[4]~[7]、及びCPU#0~#3に含まれる各BAR R[2]内の例えばビット[4]~[7]に接続する。WBLK11 、WBLK10から延伸されてきたセット[0]用の4ビ ット配線をCPU#4~#7に含まれる各BARR[0]内の特定 の4ビット(例えばビット[0]~[3])にそれぞれブ ードキャストで接続する。同様にして、WBLK1 0から延伸されてきたセット[1]用の4ビット配 、及びセット[2]用の4ビット配線を、それぞ れ、CPU#4~#7に含まれる各BARR[1]内の例えばビッ ト[0]~[3]、及びCPU#4~#7に含まれる各BARR[2]内の えばビット[0]~[3]に接続する。

 図12は、図11のマルチプロセッサシステム において、その動作の一例を示す説明図であ る。図12の例は、例えばあるループ処理を8個 のCPUで分担して実行する場合の動作例を示し ている。この場合、図12に示すように、コン イラによって、例えば、8個のCPUで実行する 第1階層のループ処理MT1の中に、4個のCPUで実 する第2階層のループ処理MT2_1,MT2_2が含まれ 更に、その中に2個のCPUで実行する第3階層 ループ処理MT3_1~MT3_4が含まれるように各CPU毎 の処理が割り当てられる。そうすると、各ル ープ階層毎に異なる資源を用いてバリア同期 処理を行う必要がある。そこで、図11に示す うに、この階層数に応じたセット数のバリ ライトレジスタBARWおよびバリアリードレジ スタBARRを設けることで、このようなループ 理を容易に実現可能となる。

 図12においては、CPU#0,#1が、それぞれ所定 のループ処理(do~enddo)を行った後、自身のセ ト[0]用のバリアライトレジスタBARW[0]および リアリードレジスタBARR[0]を用いてバリア同 期処理(BARRIER(0-1))を行う。同様に、CPU#2,#3は 所定のループ処理(do~enddo)を行った後、自身 BARW[0]およびBARR[0]を用いてバリア同期処理(B ARRIER(0-2))を行い、CPU#4,#5およびCPU#6,#7も、同 にしてそれぞれバリア同期処理(BARRIER(0-3))お よびバリア同期処理(BARRIER(0-4))を行う。

 このようにして2個のCPU間のバリア同期処 理が完了した後は、4個のCPU間でバリア同期 理を行う。すなわち、CPU#0~#3は、自身のセッ ト[1]用のバリアライトレジスタBARW[1]および リアリードレジスタBARR[1]を用いてバリア同 処理(BARRIER(1-1))を行う。同様に、CPU#4~#7は、 自身のBARW[1]およびBARR[1]を用いてバリア同期 理(BARRIER(1-2))を行う。4個のCPU間のバリア同 処理が完了した後は、8個のCPU間でバリア同 期処理を行う。すなわち、CPU#0~#7は、自身の ット[2]用のバリアライトレジスタBARW[2]およ びバリアリードレジスタBARR[2]を用いてバリ 同期処理(BARRIER(2))を行う。

 ここで、バリア同期処理(BARRIER(0-1))にお ては、CPU#0,#1が、まず、例えば、「inv rm[0] 命令によって、自身のBARW[0]の反転(初期値は ‘0’)を行う。次いで、「check r0[0]-r1[0]=11」 よって自身のBARR[0]の0ビット目(すなわちCPU# 0のBARW[0])と1ビット目(すなわちCPU#1のBARW[0])が 共に‘1’となるのを待つ。なお、図示はし いが、バリア同期処理(BARRIER(0-2))においては 、同様に、CPU#2,#3が、「check r2[0]-r3[0]=11」に って自身のBARR[0]の2ビット目(すなわちCPU#2 BARW[0])と3ビット目(すなわちCPU#3のBARW[0])が共 に‘1’となるのを待つことになる。

 また、バリア同期処理(BARRIER(1-1))におい は、CPU#0~#3が、まず、例えば、「inv rm[1]」 令によって、自身のBARW[1]の反転(初期値は‘ 0’)を行う。次いで、「check r0[1]-r3[1]=1111」 よって自身のBARR[1]の0ビット目(CPU#0のBARW[1]) 1ビット目(CPU#1のBARW[1])、2ビット目(CPU#2のBAR W[1])、および3ビット目(CPU#3のBARW[1])が共に‘1 ’となるのを待つ。さらに、バリア同期処理 (BARRIER(2))においては、CPU#0~#7が、まず、例え 、「inv rm[2]」命令によって、自身のBARW[2] 反転(初期値は‘0’)を行う。次いで、「check  r0[2]-r7[2]=11111111」によって自身のBARR[2]の0ビ ット目~7ビット目(CPU#0~#7のBARW[2]に対応)が共 ‘1’となるのを待つ。

 このように、複数セットのバリアライトレ スタBARWおよびバリアリードレジスタBARRを けることで、各CPUが、少ないCPU数で逐次同 (すなわちグルーピング)を行いながら最終的 に全CPUで同期を行うような複数階層のバリア 同期処理を含んだ処理内容(スレッド)を実行 能になる。なお、セット数としては、図12 示すように、コンパイラが全体を2分割しな らそれぞれに階層を割り当てていく場合、C PU数をiとして、(log 2 i)セット以上設けることが望ましい。すなわ i=8の場合は3セット以上設けることが望まし い。ただし、2個のCPU間では、ソフトウェア 用いた同期も容易に実現可能であるため、 合によっては((log 2 i)-1)セット以上でもよい。すなわち、場合に ってはi=8に対して2セット以上であってもよ い。

 図13は、図11のマルチプロセッサシステム において、その動作の他の一例を示す説明図 であり、図14は、図11のマルチプロセッサシ テムにおいて、その動作の更に他の一例を す説明図である。図13の例では、CPU#0とCPU#1 、セット[0]用のBARW[0]およびBARR[0]を用いてバ リア同期処理(BARRIER(0-1))を行っている。その 、CPU#2とCPU#3が加わり、CPU#0~#3が、セット[1] のBARW[1]およびBARR[1]を用いてバリア同期処 (BARRIER(1-1))を行っている。

 一方、CPU#0~#3の処理と並行して、CPU#4とCPU #5は、セット[1]用のBARW[1]およびBARR[1]を用い バリア同期処理(BARRIER(1-2))を行っている。そ して、最終的には、CPU#6,#7が加わり、CPU#0~#7 、セット[2]用のBARW[2]およびBARR[2]を用いてバ リア同期処理(BARRIER(2))を行っている。

 図14の例では、CPU#0とCPU#1が、セット[0]用 BARW[0]およびBARR[0]を用いてバリア同期処理(B ARRIER(0))を行った後、セット[1]用のBARW[1]およ BARR[1]を用いてバリア同期処理(BARRIER(1))を行 っている。一方、これと並行して、CPU#2とCPU# 3は、セット[0]用のBARW[0]およびBARR[0]を用いて バリア同期処理(BARRIER(0))を行った後、セット [1]用のBARW[1]およびBARR[1]を用いてバリア同期 理(BARRIER(1))を行っている。さらに、これと 行して、CPU#4~#7は、セット[1]用のBARW[1]およ BARR[1]を用いてバリア同期処理(BARRIER(1))を行 っている。

 その後、CPU#0,#1は、セット[2]用のBARW[2]お びBARR[2]を用いてバリア同期処理(BARRIER(2))を 行い、同様に、CPU#2~#4およびCPU#5~#7も、それ れ、セット[2]用のBARW[2]およびBARR[2]を用いて バリア同期処理(BARRIER(2))を行っている。そし て、最終的に、CPU#0~#7は、セット[0]用のBARW[0] およびBARR[0]を用いてバリア同期処理(BARRIER(0) )を行っている。

 以上のように、各CPUがそれぞれ複雑なグ ーピングを行いながら最終的なバリア同期 理を行う場合にも、各CPUが複数セットのバ アライトレジスタBARWおよびバリアリードレ ジスタBARRを備えることで容易に対応可能と る。なお、図11の例では、各CPUのバリアリー ドレジスタBARRをCPU数に該当する8ビット構成 したが、勿論、実施の形態3(図8~図10)で説明 したようにマスタのCPUを定義してBARRのビッ 数を削減することも可能である。また、実 の形態2(図7)で説明したようにバリアライト ジスタBARWとバリアリードレジスタBARRを統 することも可能である。ここで、実施の形 3のようにマスタのCPUを定義した場合の構成 および動作例を以下に説明する。

 図15は、本発明の実施の形態4によるマル プロセッサシステムにおいて、図12を変形 た動作例を示す説明図である。ここでは、 えば、CPU数が4個で、4個のCPUで実行するルー プ処理MT1の中に2個のCPUで実行するループ処 MT2_1,MT2_2が含まれる場合を例として説明する 。図15において、CPU#0とCPU#1は、所定のループ 処理を行った後、バリア同期処理(BARRIER(B1)) 行う。

 バリア同期処理(BARRIER(B1))では、CPU#1が自 のループ処理を終えた後に「inc r1[1]」命令 によって自身のBARW[1]を+1増加する(言い換え ばBARW[1]を反転する)。CPU#0は、マスタCPUであ 、自身のループ処理を終えた後に、「check  r1[1]」命令によってこのCPU#1のBARW[1]の反転有 を確認する。反転有りであった場合、CPU#0 、自身のBARW[1]を+1増加し(BARW[1]を反転し)、CP U#1は、「check r0[1]」命令によってこのCPU#0のB ARW[1]の反転を検出する。これによってバリア 同期処理(BARRIER(B1))が完了する。また、CPU#2お よびCPU#3も、同様に、例えばCPU#2をマスタCPU してバリア同期処理(BARRIER(B2))を行う。

 次いで、CPU#0~#3でバリア同期処理(BARRIER(B3 ))を行う。バリア同期処理(BARRIER(B3))では、CPU #1が「inc r1[0]」命令によって自身のBARW[0]を+1 増加する(BARW[0]を反転し)、同様に、CPU#2およ CPU#3も、それぞれ、「inc r2[0]」命令および inc r3[0]」命令によって自身のBARW[0]を反転 る。マスタCPUとなるCPU#0は、「check r1[0]」命 令、「check r2[0]」命令、および「check r3[0]」 命令によって、このCPU#1~#3のそれぞれによるB ARW[0]の反転有無を確認する。全て反転有りで あった場合、CPU#0は、自身のBARW[0]を+1増加し( BARW[0]を反転し)、CPU#1~#3は、「check r0[0]」命 によってこのCPU#0のBARW[0]の反転を検出する これによって、バリア同期処理(BARRIER(B3))が 了する。

 したがって、このような4個のCPUの場合に おいては、例えば、CPU#0は、CPU#1~#3のBARWの値 読めればよく、CPU#1は、CPU#0のBARWの値を読 ればよく、CPU#2は、CPU#3とCPU#0のBARWの値を読 ればよく、CPU#3は、CPU#2とCPU#0のBARWの値を読 めればよい。また、8個のCPUに拡張した場合 、例えば、CPU#0は、CPU#1~#7のBARWの値を読めれ ばよく、CPU#1は、CPU#0のBARWの値を読めればよ 、CPU#2は、CPU#3とCPU#0のBARWの値を読めればよ く、CPU#3は、CPU#2とCPU#0のBARWの値を読めれば い。さらに、CPU#4は、CPU#5~#7とCPU#0のBARWの値 読めればよく、CPU#5は、CPU#4とCPU#0のBARWの値 を読めればよく、CPU#6は、CPU#7とCPU#4とCPU#0のB ARWの値を読めればよく、CPU#7は、CPU#6とCPU#4と CPU#0のBARWの値を読めればよい。したがって、 これらに対応してBARRのビット数を削減する とができる。

 以上、本実施の形態4のマルチプロセッサ システムを用いることで、これまでの実施の 形態で述べたような各種効果に加えて、更に 、複数階層のバリア同期処理を含んだ各CPUの 処理内容(スレッド)にも容易に対応可能とな 。特に、CPU数が増加するにつれてこのよう 複数階層のバリア同期処理が不可欠になる 考えられ、その場合に本実施の形態4のマル チプロセッサシステムを用いることで有益な 効果を得ることができる。

 (実施の形態5)
 図16は、本発明の実施の形態5によるマルチ ロセッサシステムにおいて、その主要部の 成例を示す概略図である。図16に示すマル プロセッサシステムは、実施の形態1で述べ 図2の構成例と比較して、各CPU#0~#7内のバリ ライトレジスタBARWのビット数をnビット(n≧ 2)とし、バリアリードレジスタBARRのビット数 を(8×n)ビットとしたことが特徴となっている 。すなわち、BARWに番号(バージョンナンバー) を設定できる構成例となっている。また、こ れに応じて、クラスタCLS0用の配線ブロックWB LK20からクラスタCLS1用の配線ブロックWBLK21に かう配線本数およびWBLK21からWBLK20に向かう 線本数は、それぞれ((8×n)/2)本となる。更に 、例えばWBLK20およびWBLK21内では、各CPU#0~#7内 BARWのnビットがBARR内の対応するnビットの箇 所にブロードキャストで配線されるため、明 示はしないが図2と比較して配線本数が増加 ている。それ以外の構成に関しては、図2の 合と同様であるため詳細な説明は省略する

 図17は、図16のマルチプロセッサシステム において、その動作の一例を示す説明図であ る。図17においては、実施の形態4で述べた図 12の場合と同様に、各CPU#0~#7に対して第1階層 ループ処理MT1、第2階層のループ処理MT2_1,MT2 _2、第3階層のループ処理MT3_1~MT3_4からなる処 内容が割り当てられている。図12の例では この3階層分の処理をそれぞれ異なるセット BARWおよびBARRを用いることで実現したが、 17の例では、この3階層分の処理をBARWおよびB ARR内のそれぞれ異なるビットを用いることで 実現する。すなわち、図16において、n=3とし BARWの各ビットを1階層に対応させる。

 図17において、CPU#0とCPU#1は、所定のルー 処理を行った後にバリア同期処理(BARRIER(0-1) )を行う。同様に、CPU#2と#3、CPU#4と#5、CPU#6と# 7も、それぞれ、所定のループ処理を行った にバリア同期処理(BARRIER(0-2))、(BARRIER(0-3))、( BARRIER(0-4))を行う。これら第3階層目のバリア 期処理は、BARWのnビット(3ビット)に“xx1(xは 任意の値)”がセットされた場合を同期ポイ トとして行う。

 すなわち、例えば、バリア同期処理(BARRIE R(0-1))においては、CPU#0とCPU#1のそれぞれが、 身のループ処理を終えた後に、まず、「inv rm」命令によって自身のBARWにおける3ビット の特定の1ビット(ここでは右端のビットと る)を反転させる。反転が行われると、各CPU# 0~#7のBARRにおけるCPU#0とCPU#1に対応するレジス タフィールド(r0とr1に該当)のそれぞれの3ビ ト値は、配線ブロックWBLKを介して“xx1”と る。次いで、CPU#0とCPU#1のそれぞれは、「che ck r0-r1=all“xx1”」命令によって、BARRにおけ CPU#0とCPU#1に対応するレジスタフィールド(r0 とr1に該当)の両方の3ビット値が、“xx1”と るまで待ち合わせを行う。そして、r0および r1共に“xx1”となった段階でバリア同期処理( BARRIER(0-1))が完了する。

 このようにして第3階層目のバリア同期処 理が行われた後は、第2階層目のバリア同期 理を行う。すなわち、CPU#0~#3がバリア同期処 理(BARRIER(0-5))を行い、CPU#4~#7がバリア同期処 (BARRIER(0-6))を行う。これら第2階層目のバリ 同期処理は、BARWのnビット(3ビット)に“x1x” がセットされた場合を同期ポイントとして行 う。

 例えば、バリア同期処理(BARRIER(0-5))にお ては、CPU#0~#3のそれぞれが、まず、「inv rm 命令によって自身のBARWにおける3ビット中の 特定の1ビット(ここでは真ん中のビットとす )を反転させる。この第2階層目に伴う反転 行われると、各CPU#0~#7のBARRにおけるCPU#0~#3に 対応するレジスタフィールド(r0~r3に該当)の れぞれの3ビット値は、“x1x”となる。次い 、CPU#0~#3のそれぞれは、「check r0-r3=all“x1x 」命令によって、BARRにおけるCPU#0~#3に対応 るレジスタフィールド(r0~r3に該当)のそれぞ れの3ビット値が、全て“x1x”となるまで待 合わせを行う。そして、r0~r3の全てが“x1x” となった段階でバリア同期処理(BARRIER(0-5))が 了する。

 このようにして第2階層目のバリア同期処 理が行われた後は、第1階層目のバリア同期 理を行う。すなわち、CPU#0~#7がバリア同期処 理(BARRIER(0-7))を行う。この第1階層目のバリア 同期処理は、BARWのnビット(3ビット)に“1xx” セットされた場合を同期ポイントとして行 。

 バリア同期処理(BARRIER(0-7))においては、CP U#0~#7のそれぞれが、まず、「inv rm」命令に って自身のBARWにおける3ビット中の特定の1 ット(ここでは左端のビットとする)を反転さ せる。この第1階層目に伴う反転が行われる 、各CPU#0~#7のBARRにおけるCPU#0~#7に対応するレ ジスタフィールド(r0~r7に該当)のそれぞれの3 ット値は、“1xx”となる。次いで、CPU#0~#7 それぞれは、「check r0-r7=all“1xx”」命令に って、BARRにおけるCPU#0~#7に対応するレジス フィールド(r0~r7に該当)のそれぞれの3ビッ 値が、全て“1xx”となるまで待ち合わせを う。そして、r0~r7の全てが“1xx”となった段 階でバリア同期処理(BARRIER(0-7))が完了する。

 なお、図示はしないが、その後の処理で 例えば、BARWの3ビット中の右端のビットを び用いてバリア同期処理を行う場合には、 述した第3階層目のバリア同期処理によってB ARWの当該ビットが既に‘1’となっているた 、今度はBARWの3ビットに“xx0(xは任意の値)” がセットされた場合を同期ポイントとする。 これによって、実施の形態1で述べたように 反転したビットを元に戻すようなリセット 作を省略でき、高速化が図れる。

 図18は、図16のマルチプロセッサシステムに おいて、その動作の他の一例を示す説明図で ある。図18は、実施の形態3で述べたようにマ スタCPUを定義した場合での動作例を示してい る。ここでは、CPU数が4個の場合を例として 明を行う。図18においては、CPU#0~#3で実行す 第1階層のループ処理MT1の中に、CPU#0,#1で実 する第2階層のループ処理MT2_1と、CPU#2,#3で 行する第2階層のループ処理MT2_2が含まれて る。また、レジスタフィールドは、CPU数が4 の場合、r0~r3であり、r0~r3のそれぞれの中に 2ビット(log 2 4)が含まれることになる。

 CPU#0,#1は、所定のループ処理を終えた後 第2階層目のバリア同期処理(BARRIER(B1))を行う 。バリア同期処理(BARRIER(B1))では、まず、CPU#1 が、所定のループ処理を終えた後に「inv r1(1 )」命令によって自身のBARWにおける2ビット中 の一方のビットを反転させる。CPU#0は、マス CPUであり、所定のループ処理を終えた後に check r1(1)」命令によって前述したCPU#1によ BARWのビット反転の有無を確認する。ビット 転が有りの場合、CPU#0は「inv r0(1)」命令に って自身のBARWにおける2ビット中の一方の ットを反転させる。そして、CPU#1が、「check r0(1)」命令によって、このCPU#0によるBARWのビ ット反転動作を検出した段階でバリア同期処 理(BARRIER(B1))が完了する。また、CPU#2,#3も同様 にして第2階層目のバリア同期処理(BARRIER(B2)) 行う。

 第2階層目のバリア同期処理が完了すると 、CPU#0~#3は、第1階層目のバリア同期処理(BARRI ER(B3))を行う。バリア同期処理(BARRIER(B3))では CPU#1が「inv r1(0)」命令によって自身のBARWに おける2ビット中の他方のビットを反転し、 様に、CPU#2およびCPU#3も、それぞれ、「inv r2 (0)」命令および「inv r3(0)」命令によって自 のBARWにおける2ビット中の他方のビットを反 転する。マスタCPUとなるCPU#0は、「check r1(0) 命令、「check r2(0)」命令、および「check r3( 0)」命令によって、このCPU#1~#3のそれぞれがBA RWにおける2ビット中の他方のビットを反転し たかを確認する。全て反転有りであった場合 、CPU#0は、自身のBARWにおける2ビット中の他 のビットを反転し、CPU#1~#3は、「check r0(0)」 命令によってこのCPU#0によるBARWのビット反転 動作を検出する。これによって、バリア同期 処理(BARRIER(B3))が完了する。

 図19は、図18の動作例において、そのバリ ア同期処理(BARRIER(B1))で用いる詳細なソース ードの一例を示す説明図である。図19におい て、CPU#1は変数「ver」と「1」とのEXOR演算を い、その結果として得られた「ver」の値を 数「r1」に代入している。すなわち「ver」の 値が“00”であった場合、EXOR演算を介して「 r1」に“01”が代入され、逆に、「ver」の値 “01”であった場合、EXOR演算を介して「r1」 に“00”が代入される。これは、図18におけ 「inv r1(1)」命令に該当する。

 一方、CPU#0も変数「ver」と「1」とのEXOR演 算を行い、その結果を「ver」に代入している 。そして、CPU#0は、「while」文によって、こ EXOR演算結果となる「ver」の値とCPU#1で得ら た「r1」の値とが一致するまで待機する。す なわち、例えば、CPU#0の演算によって得られ 「ver」=“01”の値を期待値として、CPU#1が r1」に“01”を設定するのを待つ。これは、 18における「check r1(1)」命令に該当する。CP U#1が「r1」に“01”を設定すると、CPU#0は「whi le」文を抜け、変数「r0」に「ver」の値を設 する。すなわち、例えば「r0」に“01”を設 する。一方、CPU#1は、「while」文を用いて「 r0」に“01”が設定されるのを待っており、 の設定動作を検出することでバリア同期処 が完了となる。

 以上、本実施の形態5のマルチプロセッサ システムを用いることで、これまでの実施の 形態で述べたような各種効果に加えて、更に 、複数階層のバリア同期処理を含んだ各CPUの 処理内容(スレッド)にも容易に対応可能とな 。特に、CPU数が増加するにつれてこのよう 複数階層のバリア同期処理が不可欠になる 考えられ、その場合に本実施の形態5のマル チプロセッサシステムを用いることで有益な 効果を得ることができる。なお、図16では、 リアライトレジスタBARWとバリアリードレジ スタBARRを別々のレジスタとしたが、勿論、 施の形態2の図7に示したように、統合した一 つのレジスタBARとすることも可能である。

 (実施の形態6)
 図20は、本発明の実施の形態6によるマルチ ロセッサシステムにおいて、図16の構成例 用いた他の動作の一例を示す説明図である ここでは、図16におけるバリアライトレジス タBARW等のnビット(すなわちバージョンナンバ ー)を、実施の形態5で述べたような階層の切 分け用途以外で利用する場合の動作例が示 れている。

 図20において、各CPU#0~#7は、所定の処理を 行った後(S2001)、同期ポイントを‘1’として リア同期処理(BARRIER(0-1))を行う。次いで、 定の処理を行った後(S2002)、今度は同期ポイ トを‘2’としてバリア同期処理(BARRIER(0-2)) 行う。その後、所定の処理を行った後(S2003) 、今度は同期ポイントを‘3’としてバリア 期処理(BARRIER(0-3))を行う。これによって、例 えばバリア同期処理を行う回数などを管理す ることができる。

 例えば、バリア同期処理(BARRIER(0-3))では 各CPU#0~#7が「inc rm」命令によって自身のBARW 値に+1を加え、その後、「check r0-r7=all‘3’ 」命令によって、各CPU#0~#7のBARWの値が全て‘ 3’となるのを待つ。図16において、例えばBAR W等のnビットが2ビットの場合には、‘0’~‘3 ’までのバージョンナンバーを使用できる。 この場合、図20における‘3’の次はまた‘0 に戻ってバリア同期処理を行うことになる このような動作を用いると、実施の形態1で べたように、バージョンナンバーをリセッ するような動作は行わないため、高速化が れる。

 また、このようなバージョンナンバーを いることで、複雑なバリア同期処理に柔軟 対応することが可能となる。例えば、バー ョンナンバーを直値で指定することで、あ CPUと他のCPUをバージョンナンバー‘1’で同 期させ、あるCPUと更に他のCPUをバージョンナ ンバー‘2’で同期させることなどが可能と る。この場合、バージョンナンバーで同期 管理することで、1ビットの情報しかない場 と比べて容易に同期処理を行うことが可能 なる。

 (実施の形態7)
 図21は、本発明の実施の形態7によるマルチ ロセッサシステムにおいて、その主要部の 成例を示す概略図である。図21に示すマル プロセッサシステムは、実施の形態4で述べ 図11の構成例と比較して、CPU#0~#7内のバリア ライトレジスタBARW[0],[1],[2]のそれぞれのビッ ト数をnビット(n≧2)とし、バリアリードレジ タBARR[0],[1],[2]のそれぞれのビット数を(8×n) ットとしたことが特徴となっている。すな ち、実施の形態4で述べたように、BARWおよ BARRを複数セット設ける構成に加えて、さら 各セット内で、実施の形態5,6で述べたよう バージョンナンバーも設定できる構成例と っている。

 このような構成を用いると、実施の形態4 で述べたように各セットの数に応じて複数階 層に対応でき、更に実施の形態5で述べたよ にバージョンナンバーのビット数に応じて 数階層に対応できるため、その組合せによ 例えば3階層を超えたような場合にも対応可 となる。すなわち、例えば、図12に対して CPU#0とCPU#2からなる第4階層のループ処理が加 わったような場合にも対応可能となる。

 図22は、図21のマルチプロセッサシステム において、その使用例を示す説明図である。 ここでは、CPU数が4個の場合を例として説明 行う。図22においては、CPU#0~#3によって実行 れる第1階層のループ処理MT1の中に、CPU#0と# 1によって実行される第2階層のループ処理MT2_ 1と、CPU#2と#3によって実行される第2階層のル ープ処理MT2_2とが含まれている。CPU#0,#1は、 定のループ処理を終えた後に第2階層目のバ ア同期処理(BARRIER(B1))を行い、CPU#2,#3も、所 のループ処理を終えた後に第2階層目のバリ ア同期処理(BARRIER(B2))を行う。そして、第2階 目のバリア同期処理を終えた後、CPU#0~#3は 第1階層目のバリア同期処理(BARRIER(B3))を行う 。

 このようにCPU数が4個の場合、2階層に対 して例えばBARWおよびBARRのセットを2セット ける。そして、各セットにおいては、各CPU 含まれるBARW等にnビット(n≧2)のバージョン ンバーが設定可能な構成となっている。こ 場合、図22に示すように、各階層のループ処 理MT,MT2_1,MT2_2に対して、各ループ処理の回転 をバージョンナンバーを用いて管理するこ ができる。例えば、バリア同期処理(BARRIER(B 1))を2回行った(すなわちループ処理MT2_1を2回 した)段階でMT2_1を抜け、ループ処理MT2_2を3 転した段階でMT2_2を抜け、ループ処理MT1を4 転した段階でMT1を抜けるような動作を行う とが可能となる。

 また、各ループ処理を回転する毎にバー ョンナンバーを更新していくことで、例え 、このバージョンナンバーをプログラムデ ッグ時のブレークポイントの停止条件とし 使用することもできる。更には、ホットス ットの動的抽出等を行う際に活用すること ども可能となる。なお、例えば、バージョ ナンバーを用いずに、その分セット数を増 したり、逆にセット数を1セットとして、そ の分バージョンナンバーのビット数を増やす ことなどでも、より高度なバリア同期処理に 対応可能となる。ただし、この場合、プログ ラムの可読性の低下などを招く恐れがあり、 この観点から、セットとバージョンナンバー を併用した構成とする方が望ましい。

 以上、本実施の形態7のマルチプロセッサ システムを用いることで、これまでの実施の 形態で述べたような各種効果に加えて、更に 、より複雑又は高度なバリア同期処理を行い たい場合にも柔軟に対応することが可能とな る。特に、CPU数が増加するにつれて、より高 度なバリア同期処理が必要になると考えられ 、その場合に本実施の形態7のマルチプロセ サシステムを用いることで有益な効果を得 ことができる。

 以上、本発明者よりなされた発明を実施 形態に基づき具体的に説明したが、本発明 前記実施の形態に限定されるものではなく その要旨を逸脱しない範囲で種々変更可能 あることは言うまでもない。

 本発明の一実施の形態によるマルチプロ ッサシステムは、特に、組み込み用途向け システムなどのようにハードウェアコスト 開発期間の制約が大きい分野向けのシステ に適用して有益な技術であり、これに限ら 、マルチプロセッサシステム全般に対して く適用可能である。