(57)【要約】  複数のバリア同期部（ＢＢ８、９）と、バリア同期部識別情報記憶部（窓記憶部６）と、バリア同期部識別情報選択部（入出力制御部３２）とを有する。前記複数のバリア同期部（ＢＢ８、９）は複数の演算処理部に設定された同期アドレスを用いて、前記複数の演算処理部を同期する。前記バリア同期部識別情報記憶部（窓記憶部６）は、前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報を保持する。同期アドレス識別情報が入力された場合、前記バリア同期部識別情報選択部（入出力制御部３２）は、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力する。
2012127534.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理部を備える演算処理装置のバリア同期方法であって、
複数のバリア同期部が前記複数の演算処理部に設定された同期アドレスを用いて前記複数の演算処理部を同期し、
前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報をバリア同期部識別情報記憶部が保持し、
同期アドレス識別情報が入力された場合、バリア同期部識別情報選択部が、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力する
ことを特徴とするバリア同期方法。
【請求項２】
前記バリア同期部識別情報選択部が選択したバリア同期部識別情報に基づき、状態情報選択部は、前記複数のバリア同期部が出力する前記複数の演算処理部が同期した旨を表す複数の状態情報のいずれかを出力する
ことを特徴とする請求項１記載のバリア同期方法。
【請求項３】
前記複数のバリア同期部は、複数の前記演算処理部間の同期に用いられる第１のバリア同期部のグループに属するバリア同期部と、バリア同期部識別情報記憶部のうちいずれか２つの演算処理部間の同期に用いられる第２のバリア同期部のグループに属するバリア同期部とを有し、
前記同期部識別情報記憶部は、前記各グループのバリア同期部に基づいて前記バリア同期部識別情報をグループ化して保持する
ことを特徴とする請求項１又は２に記載のバリア同期方法。
【請求項４】
前記演算処理部に設定された前記同期アドレスに前記バリア同期部を割り当てる際に、割当て可能であるか否かを判断することを特徴とする請求項１ないし３の何れかに記載のバリア同期方法。
【請求項５】
複数の演算処理部を備える演算処理装置のバリア同期装置であって、
前記複数の演算処理部に設定された同期アドレスを用いて、前記複数の演算処理部を同期する複数のバリア同期部と、
前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報を保持するバリア同期部識別情報記憶部と、
同期アドレス識別情報が入力された場合、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力するバリア同期部識別情報選択部を有することを特徴とするバリア同期装置。
【請求項６】
前記バリア同期装置はさらに、
前記バリア同期部識別情報選択部が選択したバリア同期部識別情報に基づき、前記複数のバリア同期部が出力する前記複数の演算処理部が同期した旨を表す複数の状態情報のいずれかを出力する状態情報選択部を有することを特徴とする請求項５記載のバリア同期装置。
【請求項７】
前記複数のバリア同期部は、複数の前記演算処理部間の同期に用いられる第１のバリア同期部のグループに属するバリア同期部と、バリア同期部識別情報記憶部のうちいずれか２つの演算処理部間の同期に用いられる第２のバリア同期部のグループに属するバリア同期部とを有し、
前記同期部識別情報記憶部は、前記各グループのバリア同期部に基づいて前記バリア同期部識別情報をグループ化して保持することを特徴とする請求項５又は６に記載のバリア同期装置。
【請求項８】
前記バリア同期部識別情報記憶部は、前記複数の演算処理部に対応して、前記複数のバリア同期部を識別するバリア同期部識別情報を保持する複数のバリア同期部識別情報保持部を有し、
前記第１のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう複数の前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続し、
前記第２のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう２つの前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続することを特徴とする請求項７に記載のバリア同期装置。
【請求項９】
複数の演算処理部を備える演算処理装置であって、
前記複数の演算処理部に設定された同期アドレスを用いて、前記複数の演算処理部を同期する複数のバリア同期部と、
前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報を保持するバリア同期部識別情報記憶部と、
同期アドレス識別情報が入力された場合、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力するバリア同期部識別情報選択部を有することを特徴とする演算処理装置。
【請求項１０】
前記演算処理装置はさらに、
前記バリア同期部識別情報選択部が選択したバリア同期部識別情報に基づき、前記複数のバリア同期部が出力する前記複数の演算処理部が同期した旨を表す複数の状態情報のいずれかを出力する状態情報選択部を有することを特徴とする請求項９に記載の演算処理装置。
【請求項１１】
前記複数のバリア同期部は、複数の前記演算処理部間の同期に用いられる第１のバリア同期部のグループに属するバリア同期部と、バリア同期部識別情報記憶部のうちいずれか２つの演算処理部間の同期に用いられる第２のバリア同期部のグループに属するバリア同期部とを有し、
前記同期部識別情報記憶部は、前記各グループのバリア同期部に基づいて前記バリア同期部識別情報をグループ化して保持することを特徴とする請求項９又は１０に記載の演算処理装置。
【請求項１２】
前記バリア同期部識別情報記憶部は、前記複数の演算処理部に対応して、前記複数のバリア同期部を識別するバリア同期部識別情報を保持する複数のバリア同期部識別情報保持部を有し、
前記第１のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう複数の前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続し、
前記第２のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう２つの前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続することを特徴とする請求項１１に記載の演算処理装置。
【請求項１３】
前記バリア同期部は、複数の前記演算処理部間の同期状態を表す状態情報を記憶する記憶部、又は２つの前記演算処理部間の同期状態を表す状態情報を記憶する記憶部の何れか一方を備えることを特徴とする請求項９ないし１２に記載の演算処理装置。
【請求項１４】
前記状態情報選択部は、前記バリア同期部の同期情報を前記識別情報を参照して選択される前記同期アドレスに関係付けて選択する複数の選択部を備えることを特徴とする請求項１０に記載の演算処理装置。
【請求項１５】
前記複数のバリア同期部と、前記バリア同期部の同期アドレスに対応して区分された前記バリア同期部識別情報記憶部との間に接続線を備えることを特徴とする請求項９ないし１４に記載の演算処理装置。
【請求項１６】
前記演算処理装置は、前記複数の演算処理部が共有するキャッシュメモリを備えることを特徴とする請求項９ないし１５の何れかに記載の演算処理装置。
【請求項１７】
前記演算処理装置は、前記複数の演算処理部を１つのＬＳＩに実装したプロセッサであることを特徴とする請求項９ないし１６の何れかに記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バリア同期方法、バリア同期装置及び演算処理装置に関する。
【背景技術】
【０００２】
計算機システムには処理の高速化及び大容量化が要求され、これらを実現するため、複数のプロセッサによる分散処理技術が用いられる。処理速度の高速化と、処理容量の大容量化のそれぞれの要求を満足するには複数のプロセッサによる効率の良い分散処理が必要である。【０００３】
バリア同期は、複数のプロセッサを複数の同期グループにグループ化し、グループ単位で処理を実行する。つまり、一つの同期グループに属するいずれかのプロセッサが処理を実行している場合、処理の待ち合わせを行ない、同一の同期グループに属する全てのプロセッサの処理が終了した後、各プロセッサを次の処理の実行に移行させる。【０００４】
このバリア同期方法に関し、各プロセッサに複数のスレッドを割り当ててマルチスレッド処理を実行させ、複数のスレッドを階層構造のグループに設定し、グループ毎にバリア同期を取ることが知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２５９８２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
演算処理装置として、複数のプロセッサコアを搭載したマルチコアプロセッサが製品化されている。このマルチコアプロセッサに実装された各プロセッサコアは、命令の復号化や実行を行う各種のユニット、レジスタ、キャッシュメモリ等を備える。このようなプロセッサコアを搭載したマルチコアプロセッサでは、各プロセッサコアが同期グループを割り当てる対象となる。【０００７】
各プロセッサコアにおいて、バリア同期に用いるソフトウェアからアクセス可能な複数のＡＳＩレジスタ（Address Space Identifier register ）に設定される各ＡＳＩ（Address Space Identifier）アドレスは、「窓」と称される。つまり、この窓は、バリア同期において、ＢＳＴ（Barrier Status bit：バリア状態ビット）の書き込み時に各プロセッサコアごとに設定される複数のアドレスである。バリア同期装置には、バリア同期に用いる窓（ＡＳＩアドレス）に対応するバリア同期部（Barrier Blade : ＢＢ）が設けられる。このＢＢは、プロセッサコアに設定された各窓に同期グループを割り当て、その同期グループの状況を記憶する。このため、各窓を保持する各ＡＳＩレジスタには各ＢＢが物理的に接続され、任意の窓に任意のＢＢを自由に割り付けることができる。しかし、コア数が増加すると、単純なコア数分の資源の増加に加え、ＢＢ数、窓数の増加に応じ、プロセッサコア１つ当たりの資源が増加し、物理的な接続数も増加する。この結果、窓制御に必要なセレクタや配線等の物理資源が指数関数的に増加し、マルチコアプロセッサのチップ内に広大な領域を占有し、消費電力を増大させる。【０００８】
既述のセレクタによる物理資源は、概算で、
物量資源＝ＢＢ数×窓数×コア数            ・・・(1) 
で与えられ、その量は膨大である。【０００９】
近年のコア数の増加による共有キャッシュ部全体が拡大傾向にあるが、これに伴って省電力要求も高まっている。【００１０】
そこで、本開示のバリア同期方法、バリア同期装置及び演算処理装置の目的は、上記課題に鑑み、物理資源を削減し、効率のよいバリア同期を実現することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本開示のバリア同期方法、バリア同期装置及び演算処理装置は、複数のバリア同期部と、バリア同期部識別情報記憶部と、バリア同期部識別情報選択部とを有する。前記複数のバリア同期部は複数の演算処理部に設定された同期アドレスを用いて、前記複数の演算処理部を同期する。前記バリア同期部識別情報記憶部は、前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報を保持する。同期アドレス識別情報が入力された場合、前記バリア同期部識別情報選択部は、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力する。
【発明の効果】
【００１２】
本開示のバリア同期方法、バリア同期装置及び演算処理装置によれば、次の何れかの効果が得られる。【００１３】
(1) 分類された複数のバリア同期部と、バリア同期部の分類により区分されたバリア同期に用いる窓（ＡＳＩアドレス）とでバリア同期部の指定範囲が定まり、その範囲内からバリア同期部を選択できる。従って、バリア同期機能を損なうことなく、セレクタや接続線等の物理資源を低減できる。【００１４】
(2) プロセッサコアなど、演算処理部の増加に対するセレクタや接続線等の物理資源の増加を抑制できる。【００１５】
(3) 物理資源の低減により、消費電力が抑制される。【００１６】
そして、本発明の他の目的、特徴及び利点は、添付図面及び各実施の形態を参照することにより、一層明確になるであろう。
【図面の簡単な説明】
【００１７】
【図１】第１の実施の形態に係るバリア同期制御部を示す図である。
【図２】バリア同期部及び窓の分別処理手順の一例を示すフローチャートである。
【図３】窓及びバリア同期部の設定処理手順の一例を示すフローチャートである。
【図４】第２の実施の形態に係るマルチコアプロセッサの構成例を示す図である。
【図５】バリア同期制御部の構成例を示す図である。
【図６】窓記憶部の構成例を示す図である。
【図７】第１及び第２の同期用ＢＢの構成例を示す図である。
【図８】バリア同期制御部の入出力の構成例を示す図である。
【図９】窓レジスタ入力制御部の構成例を示す図である。
【図１０】バリア同期入力制御部の構成例を示す図である。
【図１１】出力制御部の構成例を示す図である。
【図１２】バリア同期制御の処理手順の一例を示すフローチャートである。
【図１３】窓と第１及び第２の同期用ＢＢとの接続関係を示す図である。
【図１４】マルチコアプロセッサの変形例を示す図である。
【図１５】第３の実施の形態に関する計算機ノードの構成例を示す図である。
【図１６】計算機システムの構成例を示す図である。
【図１７】比較例に係る窓と同期用ＢＢとの接続関係を示す図である。
【図１８】比較例に係る状態情報変換部を示す図である。
【発明を実施するための形態】
【００１８】
〔第１の実施の形態〕
【００１９】
第１の実施の形態について、図１を参照する。図１はバリア同期制御部を示している。図示した構成は一例であって、斯かる構成に本発明が限定されるものではない。
【００２０】
このバリア同期制御部（Barrier Processing Unit ：ＢＰＵ）２は、本開示のバリア同期方法及びバリア同期装置の一例であって、後述のマルチコアプロセッサ（例えば、図４に示すマルチコアプロセッサ４）に用いられる。図１に示すバリア同期制御部２では、窓記憶部６と、複数のバリア同期部（Barrier Blade 、以下「ＢＢ」と称する。）８、９が備えられる。
【００２１】
窓記憶部６は、複数のＢＢ８、９の分類に基づいて区分される窓（ＡＳＩアドレス）の情報を記憶する記憶手段である。つまり、この窓記憶部６は複数の演算処理部（例えば、プロセッサコア）毎に同期アドレスを識別する同期アドレス識別情報に対応してバリア同期部を識別するバリア同期識別情報を保持するバリア同期部識別情報記憶部の一例である。窓は、プロセッサ内の複数のコア（図４のコア２２）に設定された単一又は複数のバリア同期に用いるアドレス（つまり、同期アドレス）である。窓記憶部６は、複数の記憶部１０を備え、各記憶部１０は各プロセッサコア（以下単に「コア」と称する。）に設定された窓に対応している。つまり、窓記憶部６は窓情報（例えば、窓番号）とＢＢ８、９を識別する識別情報（ＢＢ番号）との変換手段である。各記憶部１０にはＢＢ８、９を識別する識別情報及びその付随情報が格納される。各記憶部１０は例えば、レジスタで構成される。ＢＢ８、９を識別する識別情報は、例えば、各ＢＢ８、９を識別するＢＢ番号である。付随情報は例えば、その識別情報で指定されたＢＢ８、９が有効であるか否かを表す情報である。即ち、各記憶部１０には窓に割り当てられたＢＢ番号及び既述の付随情報が格納される。従って、窓記憶部６は、各コアの各窓毎に何れのＢＢ８又はＢＢ９を割り付けたかを記憶し、ソフトウェアにより自由にＢＢ８、９を割り振るための資源である。つまり、バリア同期に用いるアドレスである窓にＢＢ８、９が割り当てられることを条件に、バリア同期の使用が可能となる。
【００２２】
各ＢＢ８、９は、バリア同期用の資源であって、複数のコアに設定された同期アドレス（窓）を用いて、複数のコアを同期するバリア同期部の一例である。各ＢＢ８、９は、バリアの同期グループを分けるものであって、その内部に同期グループの状況を記憶する。各ＢＢ８は複数のコア間の同期用ＢＢ（以下「ｓｙｎｃＢＢ」と称する。）であり、各ＢＢ９は２つのコア間の同期用のＢＢ（以下「ｐｏｓｔ／ｗａｉｔＢＢ又はｐ／ｗＢＢ」と称する。）である。即ち、このようにＢＢ８とＢＢ９とは互いに異なる用途を持ち、その用途に応じた構成を備えている。従って、各ＢＢ８、９を用途により２種類に分類すれば、第１のバリア同期部としてのｓｙｎｃＢＢグループ１２と、第２のバリア同期部としてのｐ／ｗＢＢグループ１４とにグループ化して分類される。
【００２３】
窓記憶部６の各記憶部１０にはＢＢ８又はＢＢ９が接続される。図１に示すバリア同期制御部２では、ｓｙｎｃＢＢグループ１２に対応する複数の記憶部１０を第１の記憶部グループ１６とし、ｐ／ｗＢＢグループ１４に対応する複数の記憶部１０を第２の記憶部グループ１８とする。即ち、窓記憶部６の複数の記憶部１０は、複数のＢＢ８、９の用途で分類されたｓｙｎｃＢＢグループ１２及びｐ／ｗＢＢグループ１４に対応して区分されている。つまり、窓記憶部６は、バリア同期部識別情報記憶部として、各グループのバリア同期部即ち、ＢＢ８、９に基づいてバリア同期識別情報をグループ化して保持する。
【００２４】
記憶部グループ１６に属する各記憶部１０にはｓｙｎｃＢＢ１２の各ＢＢ８が物理資源である第１の接続線２０により接続されている。また、第２の記憶部グループ１８に属する各記憶部１０にはｐ／ｗＢＢ１４の各ＢＢ９が同様に、物理資源である第２の接続線２１により接続されている。これらの接続は固定的な接続関係であって、用途の異なるＢＢ８、９毎に対応関係が取られている。即ち、ＢＢ８、９は、用途により分類され、これに対応して各窓が区分されているので、複数の記憶部１０は区分された窓に対応している。それ故、対応関係にない記憶部１０とＢＢ８、９との間の割り当てが可能な範囲（指定可能範囲）が物理的に制限されている。従って、記憶部グループ１６側の記憶部１０にはｐ／ｗＢＢ１４側のＢＢ９が割り当てられることはなく、また、記憶部グループ１８側の記憶部１０にはｓｙｎｃＢＢ１２側のＢＢ８が割り当てられることはない。
【００２５】
このような用途によるＢＢ８、９の分類及び記憶部１０の分別について、図２を参照する。図２はＢＢ８及び記憶部１０の処理手順を示している。
【００２６】
図２に示す処理手順は、本開示のバリア同期方法の一例であって、ＢＢ８、９を用途により分類する（ステップＳ１１）。一例としての分類では、ＢＢ８、９が既述の通り、複数のコア間の同期用であるか、２つのコア間の同期用であるかの用途でグループ化されている。
【００２７】
このように、用途により分類されたＢＢ８、９に窓記憶部６の各記憶部１０を対応付け、各記憶部１０を区分する（ステップＳ１２）。
【００２８】
このように用途により分類されたｓｙｎｃＢＢ１２側のＢＢ８と第１の記憶部グループ１６の記憶部１０とが接続され（ステップＳ１３）、ｐ／ｗＢＢ１４のＢＢ９と第２の記憶部グループ１８の記憶部１０とが接続される（ステップＳ１３）。このような接続設定は固定的であり、窓に対するＢＢ８、９を割り当て可能な範囲が制限されている。
【００２９】
このような窓に対するＢＢ８、９の割付けについて、図３を参照する。図３は窓に対するＢＢの割付けの処理手順を示している。
【００３０】
図３に示す処理手順では、同期制御の設定のため、ＢＢ８又はＢＢ９が指定され（ステップＳ２１）、指定されたＢＢ８又はＢＢ９が窓に設定可能かを判断する（ステップＳ２２）。即ち、指定されたＢＢ８、９が窓記憶部６の記憶部１０に書込み可能かを判断する。書込み不可であれば、ステップＳ２１に戻る。
【００３１】
指定されたＢＢ８又はＢＢ９が窓記憶部６の記憶部１０に書込み可能であれば（ステップＳ２２のＹＥＳ）、窓記憶部６にＢＢ８又はＢＢ９の識別情報であるＢＢ番号の書込みを行う（ステップＳ２３）。
【００３２】
このような対応関係の設定により、各コアの窓に対してＢＢ８、９が割り当てられ、窓記憶部６の各記憶部１０には、ＢＢ８、９の何れが割り付けられたかを表す情報としてＢＢ番号が記憶される。この窓へのＢＢ８、９の割当てにより、バリア同期を開始することができる。
【００３３】
斯かる構成によれば、プロセッサのコアに設定される各窓に対応する窓記憶部６の各記憶部１０がＢＢ８、９の分類に応じて区分され、窓に設定されるＢＢ８、９の何れかに物理的に制限される。即ち、接続線２０又は接続線２１でいずれのＢＢとも接続されていない記憶部１０にはＢＢを表すＢＢ番号が格納されることはなく、分別された窓に対応関係のないＢＢはセレクト対象から外される。
【００３４】
従って、この実施の形態では、窓に割り付けられるＢＢはＢＢ８又はＢＢ９の何れか一方から物理的に選択され、指定可能範囲にあるＢＢ８又はＢＢ９から選択されることになる。このような設定により、バリア同期機能を損なうことなく、物理資源を削減することができる。即ち、コア毎に単一又は複数の窓が設定され、その窓数がコア数に応じて増加しても、既述の接続線２０等の物理資源の増加が抑制される。物理資源の削減量は、
物理資源の削減量＝コア当たりの削減量×コア数      ・・・(2) 
となる。即ち、物理資源の削減量は、マルチコアプロセッサにおけるコア数の増加に応じて指数関数的に増大し、その削減効果が顕著となる。
【００３５】
〔第２の実施の形態〕
【００３６】
第２の実施の形態について、図４を参照する。図４は、マルチコアプロセッサの構成を示している。図４に示す構成は一例であって、斯かる構成に本発明が限定されるものではない。
【００３７】
このマルチコアプロセッサ４（以下単に「プロセッサ４」と称する）は、演算処理装置の一例であり、本開示のバリア同期方法、バリア同期装置及び演算処理装置の一例である。このプロセッサ４は、例えば、一つのＬＳＩ（Large Scale Integration ）上に実装されるプロセッサである。
【００３８】
図４に示すプロセッサ４は、複数のプロセッサコア（以下単に「コア」と称する）２２を備える。各コア２２は、命令の復号化（デコード）や実行を行う各種ユニット、レジスタ、キャッシュメモリ等を備える。各コア２２には既述の単一又は複数のバリア同期に用いる窓（ＡＳＩアドレス）が設定されている。
【００３９】
各コア２２には共有キャッシュ制御部２４及びバス制御部２６を介してシステムバス２８が接続され、バリア同期制御部（Barrier Processing Unit ：ＢＰＵ）３０が接続されている。斯かる構成により、各コア２２はバス制御部２６又はＢＰＵ３０にアクセスし、又はデータの送受信を行う。バリア同期制御部３０は、本開示のバリア同期装置の一例であって、図４に示すプロセッサ４には、本開示のバリア同期装置が構成されている。
【００４０】
バリア同期制御部３０は、プロセッサ４の内部にある各コア２２間で同一の同期グループのバリア同期を実現するための制御部である。このバリア同期制御部３０では、バリア同期実現のためにプロセッサ４の外部とのデータ送受信を回避し、プロセッサ４の内部でバリア同期を実現する。このため、プロセッサ４内の処理速度に比較して低速なデータ送受信が回避され、バリア同期の高速化が図られる。
【００４１】
次に、バリア同期制御部３０について、図５を参照する。図５はバリア同期制御部３０の構成を示している。図５に示す構成は一例であって、斯かる構成に本発明が限定されるものではない。
【００４２】
図５に示すバリア同期制御部３０は、窓記憶部６と、ｓｙｎｃＢＢグループ１２に分類される第１のバリア同期部であるＢＢ８と、ｐ／ｗＢＢグループ１４に分類される第２のバリア同期部であるＢＢ９と、入出力制御部３２とを備える。ＢＢ８、９は各バリアを同期グループにグループ化するものであり、その同期グループの状況を記憶する。ＢＢ８、９は、斯かる用途によって分類をすることができる。この場合、ＢＢ８は、複数のコア２２間の同期に用いられるｓｙｎｃＢＢグループ１２に属し、ＢＢ９は、２つのコア間の同期に用いられるｐ／ｗＢＢグループ１４に属する。
【００４３】
窓記憶部６は、各コア２２に設定された各窓（ＡＳＩアドレス）毎にバリア同期資源であるＢＢ８、９の何れを割り付けたかを記憶する資源であって、ソフトウェアによってＢＢ８、９の何れかを割り振るための資源である。この窓記憶部６には、各コア２２の各窓に個別に対応する複数の窓レジスタ（ＷＩＮ＿ｒｅｇ）３４が設置されている。このＷＩＮ＿ｒｅｇ３４は、ＢＢ８、９の状態情報を記憶する記憶手段、つまりバリア同期部識別情報保持部であり、既述の記憶部１０に対応する。このＷＩＮ＿ｒｅｇ３４は、バリア同期部識別情報保持部として、複数のコアに対応して複数のバリア同期部を識別するバリア同期部識別情報を保持する。このＷＩＮ＿ｒｅｇ３４に格納された既述の情報は、例えば、複数のコア間又は１対１のコア間の同期状態を表す情報、バリア同期部であるＢＢ８又は各ＢＢ９を識別するバリア同期部識別情報である。各ＷＩＮ＿ｒｅｇ３４には、各ＢＢ８又は各ＢＢ９を特定するＢＢ番号が割り付けられることにより、バリア同期の使用や、同期グループの状況を記憶するＢＢ８、９内のレジスタ（ＢＳＴ（Barrier Status bit：バリア状態ビット）マスクビットレジスタ３６、ＢＳＴレジスタ３８等）への各ＢＢによる書き込みが可能となる。
【００４４】
入出力制御部３２は、入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択するバリア同期部識別情報選択部の一例である。つまり、同期アドレス識別情報が入力された場合、バリア同期部識別情報選択部としての入出力制御部３２が、バリア同期部識別情報記憶部としての窓記憶部６が保持するバリア同期部識別情報のうち、入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力する。
【００４５】
なお、図５に示すＢＢＵ３０では、既述の接続線２０、２１（図１）を明示していないが、各ＷＩＮ＿ｒｅｇ３４は、ｓｙｎｃＢＢグループ１２のＢＢ８、ｐ／ｗＢＢグループ１４のＢＢ９と、図１に示すバリア同期制御部２と同様に接続線２０又は接続線２１により接続されている。
【００４６】
次に、窓記憶部６の構成について、図６を参照する。図６は窓記憶部のレジスタ構成を示している。
【００４７】
図６に示す窓記憶部６には、既述の接続線２０又は接続線２１（図１）を用いてＢＢ８又はＢＢ９に接続される複数のＷＩＮ＿ｒｅｇ３４が備えられる。各ＷＩＮ＿ｒｅｇ３４は、複数のコア２２及び各コア２２に設定された窓（ＡＳＩアドレス）毎に備えられている。即ち、図６に示すＷＩＮ＿ｒｅｇ３４はコア２２毎にグループ化されたレジスタ群を構成しており、ＷＩＮ＿ｒｅｇ３４の設置数は、コア数と窓数との積となるが、それ以上であってもよい。各ＷＩＮ＿ｒｅｇ３４には、窓に割り付けられたＢＢ８又はＢＢ９を表すＢＢ番号ＢＢ＿ｎｕｍ及びそのＢＢ番号ＢＢ＿ｎｕｍが有効であるかを表す情報としてｖａｌｉｄが格納される。
【００４８】
ＷＩＮ＿ｒｅｇ３４に付された各ｗｉｎ０、ｗｉｎ１、・・・、ｗｉｎＮは、各コア２２に設定されている窓を特定する窓番号であり、この窓番号で窓を特定することができる。また、複数のＷＩＮ＿ｒｅｇ３４をグループ化して付されているｃｏｒｅ０、ｃｏｒｅ１、・・・、ｃｏｒｅＭは、各コア２２に付されたコア番号であり、このコア番号でコア２２を特定することができる。斯かる構成から、窓記憶部６は、窓番号とＢＢ番号との変換テーブルを構成している。
【００４９】
このような窓記憶部６を用いれば、例えば、コア番号ｃｏｒｅ０及び窓番号ｗｉｎ０により、ＷＩＮ＿ｒｅｇ３４が特定される。ＷＩＮ＿ｒｅｇ３４が特定されると、特定の窓に割り付けられたＢＢ番号であるＢＢ＿ｎｕｍ及び特定の窓に割り付けられたＢＢ＿ｎｕｍが有効であるか否かを知ることができる。
【００５０】
次に、ＢＢ８、９の内部構成について、図７を参照する。図７のＡは、ＢＢ８の内部構成を示す。図７のＢは、ＢＢ９の内部構成を示している。
【００５１】
図７のＡに示すＢＢ８は、複数のコア間の同期用のＢＢであり、ＢＳＴ（Barrier Status bit、バリア状態ビット）マスクビット（ＢＳＴ＿ｍａｓｋ）レジスタ３６と、ＢＳＴレジスタ３８と、ＬＢＳＹ更新ロジック４０と、ＬＢＳＹ（Last Barrier SYnchronization status ：最新バリア同期状態）レジスタ４２とを備えている。ＢＳＴマスクビットレジスタ３６及びＢＳＴレジスタ３８は、例えば、それぞれ８ビット長であり、各コア２２と固定的な対応関係を持っている。ＬＢＳＹレジスタ４２には、前回同期したときの値（詳細後述）が格納される。
【００５２】
図７のＢに示すＢＢ９は、２つのコア間の同期用のＢＢであり、ＢＳＴレジスタ３８と、ＬＢＳＹレジスタ４２と、ＬＢＳＹ更新ロジック４０とを備えている。
【００５３】
このようなＢＢ８、９の構成により、同期の成立は、ＢＳＴ＿ｍａｓｋレジスタ３６で選択されるビット、即ち、ＢＳＴレジスタ３８の選択されたビットの全てが“０”又は“１”の何れかに揃ったときである。この同期が成立すると、揃った値“０”又は“１”がＬＢＳＹレジスタ４２にＬＢＳＹ更新ロジック４０を用いてコピーされる。同期の成立とＬＢＳＹレジスタ４２へのコピーは単一の処理で実行されるので、同期成立前にはＬＢＳＹレジスタ４２に同期成立前の古い値、即ち、最後に同期したときの値が格納されており、同期成立後にはＬＢＳＹレジスタ４２には更新された値が格納される。
【００５４】
従って、ソフトウェアが同期を取る手順は、ＬＢＳＹレジスタ４２の値を読み出し、ＢＳＴレジスタ３８を更新した後、ＬＢＳＹレジスタ４２の値が変化するのを待つという手順となる。
【００５５】
ＢＢはＬＢＳＹレジスタ４２の値を監視し、その値が変化したとき、スリープ命令で休止状態にあるコア２２を実行状態に復帰させる。これにより、高速同期とプロセッサ４の資源の有効な利用の両立が可能となる。
【００５６】
ＬＢＳＹレジスタ４２は、最後に同期したときの値を格納しているので、ソフトウェアは次の同期でＢＳＴレジスタ３８にセットする値を容易に決定できる。即ち、ＬＢＳＹレジスタ４２に格納されている値が“０”であれば、ＢＳＴレジスタ３８に“１”をセットし、ＬＢＳＹレジスタ４２に格納されている値が“１”であれば、ＢＳＴレジスタ３８に“０”を書き込めばよい。
【００５７】
従って、各コア２２にはバリア同期に用いる複数の窓が設定され、各窓はＢＢ８又はＢＢ９に対応するが、ユーザプログラムはＢＢ８、９に直接アクセスする必要はなく、窓（ＡＳＩアドレス）を通じて窓記憶部６をアクセスすることになる。このように各窓に割り当てられるＢＢ８、９が物理的に固定されている。そして、ＢＳＴビットマップが隠蔽され、窓指定の単一の操作に固定されるので、同期破壊を生じるような操作を防止できる。
【００５８】
窓記憶部６には各コア２２の各窓（ＡＳＩアドレス）毎に何れのＢＢ８、９をアサインしたかが記憶される。この窓にＢＢ８又はＢＢ９が割り付けられると、バリア同期が可能となり、ＢＳＴレジスタ３８への書き込みが可能となる。
【００５９】
同期制御の処理が終了すると、対応する窓に割り付けられたＢＳＴレジスタ３８に格納された値を反転し、有効なＢＳＴレジスタ３８（即ち、ＢＳＴ  ｍａｓｋレジスタ３６に立っている）の値が全て揃った場合に、ＬＢＳＹレジスタ４２もＢＳＴレジスタ３８と同じ値に変更する。各コア２２はＬＢＳＹレジスタ４２の値が反転したことを受け、バリア同期の処理完了が通知される。
【００６０】
なお、このバリア同期制御では、窓へのＢＢ８、９の割付けはユーザレベルで動作するプログラムが書込みできない特権レベル、ＢＳＴレジスタ３８への書込みはユーザレベルで動作するプログラムが書込みできる非特権レベルに設定されているので、ユーザレベルで動作するプログラムが無関係な同期グループへアクセスし、状態破壊を引き起こすことが防止されている。
【００６１】
次に、入出力制御部３２について、図８、図９、図１０及び図１１を参照する。図８は入出力制御部３２のハードウェア構成を示している。図９は入出力制御部３２の窓レジスタ（ＷＩＮ＿ｒｅｇ）入力制御部５２を示している。図１０は入出力制御部３２のＢＢ入力制御部５４を示している。また、図１１は入出力制御部３２の出力制御部５６を示している。図８、図９、図１０及び図１１において、図４と同一部分には同一符号を付してある。
【００６２】
図８に示す入出力制御部３２は、既述した通り、バリア同期部識別情報選択部の一例である。この入出力制御部３２は窓（同期アドレス）を割り付けたＢＢ８、９を窓記憶部６にあるＢＢ番号で特定し、そのＢＢ番号で特定された状態情報を、窓番号に関係付けられたバリア同期部識別情報として出力する。
【００６３】
この入出力制御部３２には、窓レジスタ入力制御部５２と、ＢＢ入力制御部５４と、出力制御部５６とが備えられている。図８では入出力制御部３２の内部に説明の都合上、既述の窓記憶部６及びＢＢ部５０を記載しているが、入出力制御部３２は窓記憶部６及びＢＢ部５０とは別個のものである。なお、ＢＢ部５０は複数のＢＢ８、９の双方を包括して示したバリア同期資源である。
【００６４】
ＷＩＮ＿ｒｅｇ入力制御部５２及びＢＢ入力制御部５４に加えられる入力データには、書込み命令やＢＢ番号等が含まれる。ＷＩＮ＿ｒｅｇ入力制御部５２では、窓記憶部６にあるＷＩＮ＿ｒｅｇ３４が選択され、選択されたＷＩＮ＿ｒｅｇ３４から読み出されたＢＢ番号とともに、その値が有効であるかを表すｖａｌｉｄ情報がＢＢ入力制御部５４に加えられる。ＢＢ入力制御部５４では窓番号から、窓に割り付けられているＢＢ８、９が選択され、ＢＢ８、９の出力とＷＩＮ＿ｒｅｇ３４から状態情報が出力制御部５６に加えられる。この結果、出力制御部５６から窓番号に関係付けられたＬＢＳＹ出力が取り出され、各コア２２に通知される。つまり、出力制御部５６は、状態情報選択部の一例であり、ＷＩＮ＿ｒｅｇ入力制御部５２が選択したバリア同期部識別情報に基づき、複数のバリア同期部即ち、ＢＢ８、９が出力する複数のコアが同期した旨を表す複数の状態情報のいずれかを出力する。
【００６５】
従って、ＢＢ８、９の状態情報がＢＢ番号を以て窓番号に関係付けられたＬＢＳＹ情報に変換されて出力される。
【００６６】
この入出力制御部３２において、ＷＩＮ＿ｒｅｇ入力制御部５２は、窓記憶部６への書込み制御を実行する手段であって、例えば、図９に示す構成では、デコーダ５８、ＯＲ回路６０及びＡＮＤ回路６２を備えている。
【００６７】
このＷＩＮ＿ｒｅｇ入力制御部５２では、窓記憶部６のＷＩＮ＿ｒｅｇ３４（図８）に対する窓書込み命令ＷＩＮ＿ＲＥＧ＿ＷＴ＿ＶＬＤが与えられると、この窓書込み命令ＷＩＮ＿ＲＥＧ＿ＷＴ＿ＶＬＤはＡＮＤ回路６２の一方の入力となる。窓書込み命令ＷＩＮ＿ＲＥＧ＿ＷＴ＿ＶＬＤは、窓記憶部６にＢＢ番号を書き込むことが有効であることを示す情報信号である。この窓書込み命令ＷＩＮ＿ＲＥＧ＿ＷＴ＿ＶＬＤとともに、ＢＢ番号ＢＢ＿ｎｕｍが入力されると、このＢＢ番号ＢＢ＿ｎｕｍは窓記憶部６及びデコーダ５８に入力される。デコーダ５８は、ＢＢ番号ＢＢ＿ｎｕｍを例えば、４ビットのデータにデコードする。ＯＲ回路６０によりデコーダ５８の出力２ビットの論理和を取り、そのＯＲ回路６０の出力がＡＮＤ回路６２の他方の入力となる。
【００６８】
ＡＮＤ回路６２は窓記憶部６に書込みをするか否かの判定部を構成し、ＡＮＤ回路６２でＡＮＤ条件が成立すると、ＡＮＤ回路６２の出力が窓記憶部６に書込みイネーブル信号ＥＮとして入力される。これにより、窓記憶部６の所定のコア２２及び設定されたＷＩＮ＿ｒｅｇ３４にＢＢ番号が書き込まれる。従って、コア２２に設定された窓にＢＢ８又はＢＢ９が割り当てられる。そして、窓記憶部６に格納されたＢＢ番号は、ホールドＢＢ番号ＢＢ＿ｎｕｍ＿ＨＯＬＤとして読み出される。
【００６９】
この入出力制御部３２において、ＢＢ入力制御部５４は、ＢＢ部５０への入力制御に用いられ、例えば、図１０に示すように、セレクト回路６４を備えている。
【００７０】
ＢＳＴ書込み制御には、窓番号ＷＩＮ＿ｎｕｍ、ＢＳＴ書込み命令ＢＳＴ＿ＷＴ＿ＶＬＤ及び書込みデータＷＴ＿ＤＡＴがＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等のソフトウェアより与えられる。窓番号ＷＩＮ＿ｎｕｍは、セレクト回路６４に入力され、窓記憶部６のＷＩＮ＿ｒｅｇ３４にあるＢＢ番号ＢＢ＿ｎｕｍが選択され、選択情報ＳＥＬとしてＢＢ部５０に加えられる。即ち、窓に割り付けられたＢＢ８、９が選択される。選択されたＢＢ８又はＢＢ９には、ＢＳＴ書込み命令ＢＳＴ＿ＷＴ＿ＶＬＤに基づき、書込みデータＷＴ＿ＤＡＴが書き込まれる。
【００７１】
そして、出力制御部５６は、図１１に示すように、ＬＢＳＹ情報の変換手段としてＬＢＳＹセレクト回路を構成している。
【００７２】
図１１に示す出力制御部５６は、第１の選択手段としてセレクト回路６６、第２の選択手段として複数のセレクト回路６８を備えている。各セレクト回路６６は、ｓｙｎｃＢＢグループ１２の各ＢＢ８に対応し、且つ、各ＢＢ８を割付け可能な窓に対応している。また、セレクト回路６８は、Post／WaitＢＢグループ１４の各ＢＢ９に対応し、且つ、各ＢＢ９を割付け可能な窓に対応している。これらセレクト回路６６、６８は、窓記憶部６と同様にコア２２毎に設定されている。
【００７３】
このような対応関係を実現するため、セレクト回路６６は、対応関係にあるｓｙｎｃＢＢグループ１２の各ＢＢ８と窓記憶部６の複数のＷＩＮ＿ｒｅｇ３４との間に複数の第１の接続線２０を用いて接続されている。また、セレクト回路６８は、対応関係にあるPost／WaitＢＢグループ１４の各ＢＢ９と窓記憶部６の複数のＷＩＮ＿ｒｅｇ３４との間に複数の第２の接続線２１を用いて接続されている。
【００７４】
斯かる構成から、ＢＳＴ情報の入力及びＬＢＳＹ情報の出力が実行される。
【００７５】
ａ）窓記憶部６の記憶処理では、窓番号で指定されるＢＢ番号が窓番号毎に記憶される。
【００７６】
ｂ）ＢＳＴ情報の入力時には、窓番号の指定に基づいて、ＢＳＴ情報がＢＢ番号に変換されることにより、該当するＢＢ８又はＢＢ９に書き込まれる。
【００７７】
ｃ）ＬＢＳＹ情報の出力時には、ＢＢ８又はＢＢ９毎にＬＢＳＹ情報を窓番号に変換し、窓番号に関係付けてＬＢＳＹ情報をコア２２に送信する。
【００７８】
この実施の形態では、Post／WaitＢＢグループ１４の各ＢＢ９のＬＢＳＹ情報はセレクト回路６８により変換され、窓状態情報ＷＩＮ０−ＬＢＳＹ、ＷＩＮ１−ＬＢＳＹ、・・・、ＷＩＮ３−ＬＢＳＹとして取り出される。また、ｓｙｎｃＢＢグループ１２の各ＢＢ８のＬＢＳＹ情報はセレクト回路６６により変換され、窓状態情報ＷＩＮ４−ＬＢＳＹ、ＷＩＮ５−ＬＢＳＹとして出力される。各ＬＢＳＹは前回同期した時の値であり、このＬＢＳＹがプロセッサ４のコア２２に送られる。
【００７９】
次に、バリア同期制御について、図１２を参照する。図１２はバリア同期制御の処理手順を示している。
【００８０】
図１２に示すバリア同期制御では、ソフトウェアによりＢＢ８、９の初期化が実行され（ステップＳ３１）、窓記憶部６のＷＩＮ＿ｒｅｇ３４に対応するＢＢ番号の書込みを行う（ステップＳ３２）。この書込みにより、各コア２２からＢＳＴレジスタ３８への書込みが実行され（ステップＳ３３）、同期が成立するか否かを監視する。
【００８１】
ＢＳＴレジスタ３８の値が全て同一値となれば、同期成立となり（ステップＳ３４）、ＬＢＳＹレジスタ４２の値を更新し（ステップＳ３５）、バリア同期制御を終了する。
【００８２】
次に、バリア同期制御部３０の物理資源について、図１３を参照する。図１３はバリア同期制御部３０の構成例を示している。
【００８３】
図１３に示すバリア同期制御部３０は、既述のバリア同期制御部３０（図５）に対応し、出力制御部５６（図１１）の部分を要約的に示したものである。この構成例では、各窓に割当て（アサイン）が可能な範囲にグループ化されたＢＢ８及びＢＢ９を示している。
【００８４】
このバリア同期制御部３０は、窓記憶部６が複数の演算処理部であるコアに対応して、複数のＢＢ８、９を識別するバリア同期部識別情報を保持する複数のバリア同期部識別情報保持部であるＷＩＮ＿ｒｅｇ３４を有する。
【００８５】
第１のバリア同期部のグループ１２に属するＢＢ８の各々は、複数のＷＩＮ＿ｒｅｇ３４のうち、同期を行なう複数のコアのバリア同期部識別情報を保持するＷＩＮ＿ｒｅｇ３４に接続線２０により接続されている。
【００８６】
第２のバリア同期部のグループ１４に属するＢＢ９の各々は、複数のＷＩＮ＿ｒｅｇ３４のうち、同期を行なう２つのコアのバリア同期部識別情報を保持するＷＩＮ＿ｒｅｇ３４に接続線２１により接続されている。
【００８７】
図１３に示す構成例では、コア２２（図４）が４つ、各コア２２毎の窓が６つ、ＢＢ８が２つ、ＢＢ９が４つの場合を想定されている。この構成例では、説明を簡略化するため、コア２２の１つ分だけを記載しているが、実際の構成を記載すれば、全コア２２の全窓と各ＢＢ８、９が割り付け可能な接続線２０、２１の接続数は４倍となる。
【００８８】
斯かる構成では、バリア同期に用いる各窓への割付け可能なＢＢ８、９を用途で分類し、その用途によって割付け可能な窓が制限されているので、物理的な接続線２０、２１の接続数が大幅に削減されている。即ち、比較例（図１７）の約半分に削減されている。実際の削減効果は、窓数やＢＢ数に依存するが、コア数の増加に伴い必要となる窓数、ＢＢ数も増加するので、その削減量は増加することになる。この場合、物理資源の削減量は、
（削減量）＝（コア当たりの削減効果）×（コア数）    ・・・(3) 
となる。コア毎にバリア同期に用いる窓を持ち、またその窓の数もコア数の増加により増えていくため、コア数が多くなれば、物理資源の削減量は指数関数的に増加することになる。
【００８９】
そして、窓にＢＢ８、９の割付けは、ユーザ側に自由度がなく、ユーザが実行するバリア同期に何らの影響はない。つまり、権限によりアクセスできるものとできないものとが存在するが、バリアにおいてはＢＢ初期化、アサインまでは特権（ＯＳ）がなければ実行できず、ユーザはＢＳＴ＿ＷＴのみが実行可能である。このため、アサイン時にアサイン可能な範囲に配慮して設定を行えば、資源数自体は従前のままであり、ユーザからみた影響は皆無である。即ち、窓やＢＢ８、９の資源数に変更がないので、バリア同期機能を損なうこともない。従って、上記構成により、バリア同期機能を損なうことなく、物量資源が削減される。
【００９０】
この第２の実施の形態について、特徴、利点及び変形例を以下に列挙する。
【００９１】
(1) プロセッサ４の内部のコア２２間でバリア同期制御を実現でき、プロセッサ４の単位で分散処理を実現し、処理速度の高速化とともに、処理容量の大量化に寄与する。
【００９２】
(2) 窓によってＢＢ番号の設定可能な値が絞られるので、選択されないＢＢ８又はＢＢ９のＬＢＳＹをセレクト対象から外すことができる。これにより、バリア同期の同期制御の高速化とともに、物理資源量を低減できる。即ち、物理資源としてセレクト回路数や接続線数を低減することができる。
【００９３】
(3) プロセッサ４に設置される物理資源量を低減できるので、コア数の増加に対する物理資源量を抑制できる。
【００９４】
(4) 物量資源が低減できるので、同一の物量資源量から見れば、チップ内にＢＰＵ３０が占める割合を低減できるので、その分だけチップ内の利用効率を高めることができる。
【００９５】
(5) ＬＢＳＹは各コア２２に送られるが、ＢＢ８、９からの直接送信はなく、設定された窓からの出力と見なすことができる。
【００９６】
(6) 窓記憶部６のＷＩＮ＿ｒｅｇ３４に書き込まれているＢＢ番号を用いるので、このＢＢ番号から各窓毎に何れのＢＢ８、９が割付けられているかを判別し、ＢＢ番号から変換された窓番号に関係付けてＬＢＳＹを選択できる。
【００９７】
(7) 全窓に全ＢＢが設定されるので、全ＢＢがセレクト対象となるのに対し、この実施の形態では、窓によってＢＢ番号の設定可能な値が絞られ、選択肢として存在しないＢＢ８、９のＬＢＳＹ情報をセレクト対象から外すことができる。これによる物理資源の削減及び処理の高速化が図られる。
【００９８】
(8) 複数のコア２２を持つプロセッサ４の内部でバリア同期を実現するバリア同期制御において、バリア同期に用いる窓の指定可能範囲をＢＢ８、９の種類により分類することで、物理資源を低減できる。
【００９９】
(9) 任意の窓に対して分類されたＢＢ８又はＢＢ９の何れかが固定的に割り付けられる。これに対し、任意の窓にＢＢ８又はＢＢ９を区別なく割り付ける構成では、割り付けに高い自由度が与えられる反面、コア数の増加が増加した場合、物理資源の増加に加えて、ＢＢ数やバリア同期に用いる窓の増加により、コア１つ当たりの物理資源が増加する。このような不都合を上記実施の形態の構成で解消することができる。しかも、窓制御に用いられるセレクタの物理資源が指数関数的な増加を防止でき、プロセッサ４を搭載するＬＳＩにおける物理資源の領域の占有を防止でき、消費電力の増大を抑制できる。
【０１００】
(10)  バリア同期制御部３０は、窓番号とＢＢ番号との間で書換えを行う変換手段を含んでいる。この変換手段において、ＢＳＴ＿ＷＴ時に窓番号からＢＢ番号へ変換する変換部と、各ＢＢ８、９からのＬＢＳＹ情報を窓番号へ変換して各コア２２に出力する変換部が存在する。これら変換部のうち、後者の変換部では、各ＢＢ８、９からのＬＢＳＹ情報を窓番号へ変換して各コア２２に出力する物理資源が大幅に削減される。
【０１０１】
(11)  各コア２２の各窓にＢＢ８、９の何れが割り付けられるかはソフトウェアによる書込みによって設定される。ハードウェアとしては、窓記憶部６にコア数×窓数分のＢＢ番号及びその値が有効であるかを表す情報ｖａｌｉｄを記憶する複数のＷＩＮ＿ｒｅｇ３４が備えられる。各ＷＩＮ＿ｒｅｇ３４に書き込まれたＢＢ番号を使用し、ＢＢ番号及び窓番号間の変換を行い、ＬＢＳＹ情報をコア２２に出力することができる。
【０１０２】
(12)  上記実施の形態のプロセッサ４は、図１４に示すように、プロセッサ４に共有キャッシュメモリ６９を備え、各コア２２間で用いるデータをキャッシュする構成としてもよい。
【０１０３】
〔第３の実施の形態〕
【０１０４】
第３の実施の形態について、図１５及び図１６を参照する。図１５は既述のバリア同期制御部３０を含むプロセッサ４を用いた計算機ノードを示している。図１６は計算機システムの構成例を示している。
【０１０５】
図１５に示す計算機ノード７０は、情報処理装置の一例であって、複数のプロセッサ４、システムコントローラ７２、主記憶装置７４及び入出力制御装置７６を備える。各プロセッサ４には既述のバリア同期制御部３０が搭載されている。各プロセッサ４には、システムコントローラ７２がバス７８により接続される。システムコントローラ７２には各プロセッサ４に共有される主記憶装置７４が接続され、更には図示しない外部記憶装置が接続される場合もある。システムコントローラ７２にはデータの入出力等に用いられる入出力制御装置７６が接続され、この入出力制御装置７６により、各プロセッサ４と主記憶装置７４又は外部記憶装置との間でデータの入出力が行われる。
【０１０６】
そして、図１６に示す計算機システム８０では、複数の計算機ノード７０を備えている。各計算機ノード７０には既述の複数のプロセッサ４が搭載されている。各計算機ノード７０はノード間接続装置８２を介して接続され、分散処理が可能である。
【０１０７】
斯かる構成では、各プロセッサ４に既述のバリア同期制御部３０が設置されてバリア同期が実現されるが、上記実施の形態の構成を備えれば、各プロセッサ４のコア数増加による物量資源の増加や肥大化を抑制できる。従って、計算機システム８０に要求される処理の高速化や大容量化に寄与することができる。
【０１０８】
〔他の実施の形態〕
【０１０９】
(1) 上記実施の形態では、プロセッサ４の複数のコア２２間のバリア同期について記述したが、これに限定されない。本開示のバリア同期方法又はバリア同期装置は、複数のプロセッサ４間のバリア同期にも利用できる。
【０１１０】
(2) 上記実施の形態では、バリア同期部であるＢＢを用途によりＢＢ８とＢＢ９とに分類しているが、これに限定されない。用途による分類は有益であるが、内部構成、仕様、特性等の分類を用いてもよい。
【０１１１】
〔比較例〕
【０１１２】
この比較例は全窓に全ＢＢが設定されている場合である。この比較例について、図１７及び図１８を参照する。図１７は窓の割付け可能範囲を示す。図１８はＬＢＳＹセレクト回路例を示す。
【０１１３】
この比較例では、プロセッサ４に４つのコア２２、各コア２２毎に６つの窓を想定している。また、バリア同期に用いられるｓｙｎｃＢＢとして２つのＢＢ８、Post／Wait用ＢＢとして４つのＢＢ９を備えている。
【０１１４】
このような構成では、ＢＢ８、９と、各窓記憶部６の各ＷＩＮ＿ｒｅｇ３４とを全てのＢＢ８、９の区別なく、接続線２３を用いて接続される。この比較例においても、説明を簡略化するため、コア２２の１つ分について記載しているが、この比較例では、任意の窓に任意のＢＢ８、９が自由に割付け可能である。このため、全コア２２の全窓とＢＢ８、９との接続数はコア数に応じて４倍となる。
【０１１５】
この比較例のバリア同期制御には、図１８に示すＬＢＳＹセレクト回路８４が用いられる。このＬＢＳＹセレクト回路８４では、窓記憶部６にある複数のＷＩＮ＿ｒｅｇ３４に格納されている窓番号ＢＢ＿ｎｕｍがセレクト回路８６に入力される。このセレクト回路８６には各ＢＢ８、９のＬＢＳＹが入力される。この結果、各セレクト回路８６から各窓状態情報であるＷＩＮ０−ＬＢＳＹ、ＷＩＮ１−ＬＢＳＹ、・・・、ＷＩＮ５−ＬＢＳＹが出力される。
【０１１６】
この比較例では、バリア同期制御に用いられるセレクタ等の物理資源量は、
物理資源量＝（ＢＢ８の数＋ＢＢ９の数）×窓数×コア数
・・・(4) 
となる。このように物理資源量はコア数と、窓数と、ＢＢ数との積となるので、コア数が増加するにつれて、より膨大な量となる。
【０１１７】
即ち、コア数を増加させると、窓数も増加することになるから、共有キャッシュ部の全体から見ると、物理資源は増加傾向となる。このような物理資源の増加に止まらず、消費電力も増大し、マルチコアプロセッサを搭載するＬＳＩに既述の物理資源が占める割合も増加する。斯かる課題は、上記実施の形態によって解決されている。
【０１１８】
以上述べたように、バリア同期方法、バリア同期装置及びマルチコアプロセッサの好ましい実施の形態等について説明したが、本開示は、上記記載に限定されるものではなく、請求の範囲に記載され、又は明細書に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能であることは勿論であり、斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【産業上の利用可能性】
【０１１９】
本開示のバリア同期方法、バリア同期装置及び演算処理装置は複数のプロセッサコアを含む情報処理に利用でき、処理の高速化や、大容量化に寄与し、有用である。
【符号の説明】
【０１２０】
２、３０  バリア同期制御部
４  マルチコアプロセッサ
８、９  ＢＢ
１２  ｓｙｎｃＢＢグループ
１４  ｐ／ｗＢＢグループ
２２  プロセッサコア
【図１】
2012127534.tif 000003
【図２】
2012127534.tif 000004
【図３】
2012127534.tif 000005
【図４】
2012127534.tif 000006
【図５】
2012127534.tif 000007
【図６】
2012127534.tif 000008
【図７】
2012127534.tif 000009
【図８】
2012127534.tif 000010
【図９】
2012127534.tif 000011
【図１０】
2012127534.tif 000012
【図１１】
2012127534.tif 000013
【図１２】
2012127534.tif 000014
【図１３】
2012127534.tif 000015
【図１４】
2012127534.tif 000016
【図１５】
2012127534.tif 000017
【図１６】
2012127534.tif 000018
【図１７】
2012127534.tif 000019
【図１８】
2012127534.tif 000020
【手続補正書】
【提出日】平成25年9月19日(2013.9.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の演算処理部を備える演算処理装置のバリア同期方法であって、
複数のバリア同期部が前記複数の演算処理部に設定された同期アドレスを用いて前記複数の演算処理部を同期し、
前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報をバリア同期部識別情報記憶部が保持し、
同期アドレス識別情報が入力された場合、バリア同期部識別情報選択部が、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力する
ことを特徴とするバリア同期方法。
【請求項２】
前記バリア同期部識別情報選択部が選択したバリア同期部識別情報に基づき、状態情報選択部は、前記複数のバリア同期部が出力する前記複数の演算処理部が同期した旨を表す複数の状態情報のいずれかを出力する
ことを特徴とする請求項１記載のバリア同期方法。
【請求項３】
前記複数のバリア同期部は、複数の前記演算処理部間の同期に用いられる第１のバリア同期部のグループに属するバリア同期部と、バリア同期部識別情報記憶部のうちいずれか２つの演算処理部間の同期に用いられる第２のバリア同期部のグループに属するバリア同期部とを有し、
前記同期部識別情報記憶部は、前記各グループのバリア同期部に基づいて前記バリア同期部識別情報をグループ化して保持する
ことを特徴とする請求項１又は２に記載のバリア同期方法。
【請求項４】
複数の演算処理部を備える演算処理装置のバリア同期装置であって、
前記複数の演算処理部に設定された同期アドレスを用いて、前記複数の演算処理部を同期する複数のバリア同期部と、
前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報を保持するバリア同期部識別情報記憶部と、
同期アドレス識別情報が入力された場合、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力するバリア同期部識別情報選択部を有することを特徴とするバリア同期装置。
【請求項５】
前記バリア同期装置はさらに、
前記バリア同期部識別情報選択部が選択したバリア同期部識別情報に基づき、前記複数のバリア同期部が出力する前記複数の演算処理部が同期した旨を表す複数の状態情報のいずれかを出力する状態情報選択部を有することを特徴とする請求項４記載のバリア同期装置。
【請求項６】
前記複数のバリア同期部は、複数の前記演算処理部間の同期に用いられる第１のバリア同期部のグループに属するバリア同期部と、バリア同期部識別情報記憶部のうちいずれか２つの演算処理部間の同期に用いられる第２のバリア同期部のグループに属するバリア同期部とを有し、
前記同期部識別情報記憶部は、前記各グループのバリア同期部に基づいて前記バリア同期部識別情報をグループ化して保持することを特徴とする請求項４又は５に記載のバリア同期装置。
【請求項７】
前記バリア同期部識別情報記憶部は、前記複数の演算処理部に対応して、前記複数のバリア同期部を識別するバリア同期部識別情報を保持する複数のバリア同期部識別情報保持部を有し、
前記第１のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう複数の前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続し、
前記第２のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう２つの前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続することを特徴とする請求項６に記載のバリア同期装置。
【請求項８】
複数の演算処理部を備える演算処理装置であって、
前記複数の演算処理部に設定された同期アドレスを用いて、前記複数の演算処理部を同期する複数のバリア同期部と、
前記複数の演算処理部毎に、前記同期アドレスを識別する同期アドレス識別情報に対応して前記バリア同期部を識別するバリア同期部識別情報を保持するバリア同期部識別情報記憶部と、
同期アドレス識別情報が入力された場合、前記バリア同期部識別情報記憶部が保持するバリア同期部識別情報のうち、前記入力された同期アドレス識別情報に対応するバリア同期部識別情報を選択して出力するバリア同期部識別情報選択部を有することを特徴とする演算処理装置。
【請求項９】
前記演算処理装置はさらに、
前記バリア同期部識別情報選択部が選択したバリア同期部識別情報に基づき、前記複数のバリア同期部が出力する前記複数の演算処理部が同期した旨を表す複数の状態情報のいずれかを出力する状態情報選択部を有することを特徴とする請求項８に記載の演算処理装置。
【請求項１０】
前記複数のバリア同期部は、複数の前記演算処理部間の同期に用いられる第１のバリア同期部のグループに属するバリア同期部と、バリア同期部識別情報記憶部のうちいずれか２つの演算処理部間の同期に用いられる第２のバリア同期部のグループに属するバリア同期部とを有し、
前記同期部識別情報記憶部は、前記各グループのバリア同期部に基づいて前記バリア同期部識別情報をグループ化して保持することを特徴とする請求項８又は９に記載の演算処理装置。
【請求項１１】
前記バリア同期部識別情報記憶部は、前記複数の演算処理部に対応して、前記複数のバリア同期部を識別するバリア同期部識別情報を保持する複数のバリア同期部識別情報保持部を有し、
前記第１のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう複数の前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続し、
前記第２のバリア同期部のグループに属するバリア同期部の各々は、前記複数のバリア同期部識別情報保持部のうち、前記同期を行なう２つの前記演算処理部のバリア同期部識別情報を保持するバリア同期部識別情報保持部に接続することを特徴とする請求項１０に記載の演算処理装置。
【国際調査報告】
2012127534.tif 000021
2012127534.tif 000022
2012127534.tif 000023
2012127534.tif 000024