(57)【要約】  複数のプロセッサコアを有するマルチコアプロセッサに、その複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサをバリア同期させるためのバリア同期装置を実装し、そのマルチコアプロセッサが有する２つ以上のプロセッサコアのみが同一の同期グループに属している場合に、実装したバリア同期装置を用いてそれらのバリア同期を行わせる。
2008155806.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するプロセッサにおいて、前記プロセッサコアが実行した処理を同期させるバリア同期方法であって、
前記複数のプロセッサコアのうち、同期すべきプロセッサコアをそれぞれ、同一の同期グループに割り当てるステップと、
前記同一の同期グループに属するプロセッサコアの実行した処理を同期させるステップとを有することを特徴とするバリア同期方法。
【請求項２】
前記バリア同期方法はさらに、
前記プロセッサが有する前記プロセッサコアにメモリを有し、
前記プロセッサコアの実行した処理を同期させるステップは、前記同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を前記メモリに格納するステップを含むことを特徴とする請求項１記載のバリア同期方法。
【請求項３】
前記バリア同期方法はさらに、
前記複数のプロセッサコアのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップを含むことを特徴とする請求項１又は２記載のバリア同期方法。
【請求項４】
複数のプロセッサを有する情報処理装置において、前記プロセッサが実行した処理を同期させるバリア同期方法であって、
前記複数のプロセッサのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップと、
前記休止状態に移行させたプロセッサを、次の処理に移行させるタイミングの到来により前記休止状態前の状態に復帰させるステップを有することを特徴とするバリア同期方法。
【請求項５】
マルチコアプロセッサが有する複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサを同期させるために該マルチコアプロセッサに実装される装置であって、
前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
を具備することを特徴とするバリア同期装置。
【請求項６】
前記第３の情報格納手段に格納されている同期情報を専用の配線により前記プロセッサコアが有するメモリに書き込む情報書込手段、
を更に具備することを特徴とする請求項５記載のバリア同期装置。
【請求項７】
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする請求項５記載のバリア同期装置。
【請求項８】
前記情報書込手段は、前記情報更新手段毎に用意されている、
ことを特徴とする請求項６記載のバリア同期装置。
【請求項９】
前記マルチコアプロセッサは、前記複数のプロセッサコアを一つのＬＳＩ上に実装したプロセッサである、
ことを特徴とする請求項５記載のバリア同期装置。
【請求項１０】
前記マルチコアプロセッサは、前記複数のプロセッサコアがキャッシュメモリを共有するプロセッサである、
ことを特徴とする請求項５記載のバリア同期装置。
【請求項１１】
複数のプロセッサコアを有するマルチコアプロセッサにおいて、
前記複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサをバリア同期させるためのバリア同期装置と、
前記バリア同期装置に、前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を通知する通知手段と、
を具備することを特徴とするマルチコアプロセッサ。
【請求項１２】
前記バリア同期装置は、
前記通知手段により通知される、複数のプロセッサコアそれぞれの前記状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
前記第３の情報格納手段に格納されている同期情報を専用の配線により前記プロセッサコアが有するメモリに書き込む情報書込手段と、
を具備することを特徴とする請求項１１記載のマルチコアプロセッサ。
【請求項１３】
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする請求項１２記載のマルチコアプロセッサ。
【請求項１４】
前記バリア同期装置は、
前記通知手段により通知される、複数のプロセッサコアそれぞれの前記状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
を具備し、
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする請求項１１記載のマルチコアプロセッサ。
【請求項１５】
前記マルチコアプロセッサは、前記複数のプロセッサコアを一つのＬＳＩ上に実装したプロセッサである、
ことを特徴とする請求項１１記載のマルチコアプロセッサ。
【請求項１６】
前記マルチコアプロセッサは、前記複数のプロセッサコアがキャッシュメモリを共有するプロセッサである、
ことを特徴とする請求項１１記載のマルチコアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同一の同期グループに属する２つ以上のプロセッサコア、或いはプロセッサのバリア同期を実現させるための技術に関する。
【背景技術】
【０００２】
計算機システムに要求される処理速度および処理容量は増加し続けている。このため、複数のプロセッサによる分散処理技術の重要度は非常に高くなっている。処理速度に対する要求と、処理容量に対する要求の両方を妥当なコストで満たすためには、効率の良い分散処理を実現する必要がある。バリア同期技術は、効率の良い分散処理を実現させるための一つであり、現在、高性能な計算機システムに広く採用されている。【０００３】
そのバリア同期では、複数のプロセッサを同期グループで分け、同期グループ単位で処理の進行を管理する。その管理により、現在、実行中の処理の次に実行すべき処理への移行は、同期グループに属する全てのプロセッサが現在、実行中の処理を終了してから行わせる。そのバリア同期を実現させるためのバリア同期装置としては、例えば特許文献１〜３にそれぞれ記載されたものが知られている。【０００４】
同期グループ単位での処理の進行を管理するためには、各プロセッサは処理の実行状況を通知し、次の処理に移行すべき状況となったときにはその旨を各プロセッサに通知する必要がある。このことから分散処理は一般的に、個々のプロセッサが並列に実行すべき処理を実行する並列処理部分と、プロセッサ同士が協調動作するために実行する協調動作部分と、に大別される。分散処理の効率を向上させるためには、協調動作部分（同期処理）の実行に要する割合（時間）を極力、減らすことが重要である。【０００５】
近年、半導体技術の向上により、演算機能を有するプロセッサコア（命令のデコードや実行を行なう各種ユニット、レジスタ、及びキャッシュメモリなどを備えている）を複数、実装したマルチコアプロセッサが製品化されている。そのようなマルチコアプロセッサでは、各プロセッサコアは同期グループを割り当てる対象となる。それにより、同一の同期グループに属する全てのプロセッサコアが１個のマルチコアプロセッサ内に存在する状況が有りうる。協調動作部分の実行に要する時間の短縮化では、そのような状況を考慮することも重要と考えられる。【０００６】
半導体技術の向上は、プロセッサでは高速化、高密度化を実現し、メモリでは大容量化に貢献している。結果として、従来よりも小さな領域内により大きい計算能力が実現され、領域はより広大となっている。しかし、主記憶のアクセス速度はプロセッサより低速なままである。むしろ、プロセッサの処理速度と主記憶の動作速度との乖離はより深刻となっている。したがって、情報の伝達を主記憶を介して行った場合、協調動作部分の実行に要する時間にはより低速な主記憶の動作速度の影響をうける。このことも、協調動作部分の実行に要する時間の短縮に考慮すべきと云える。
【特許文献１】特開平８−１８７３０３号公報
【特許文献２】特開平９−６７３４号公報
【特許文献３】特開２００５−７１１０９号公報
【発明の開示】
【０００７】
本発明は、マルチコアプロセッサ内のバリア同期のための同期処理をより高速に行うための技術を提供することを目的とする。
本発明の第１の態様のバリア同期方法は、複数のプロセッサコアを有するプロセッサにおいて、前記プロセッサコアが実行した処理を同期させるバリア同期方法であって、前記複数のプロセッサコアのうち、同期すべきプロセッサコアをそれぞれ、同一の同期グループに割り当てるステップと、前記同一の同期グループに属するプロセッサコアの実行した処理を同期させるステップとを有する。
【０００８】
上記第１の態様では、さらに、前記プロセッサが有する前記プロセッサコアにメモリを有し、前記プロセッサコアの実行した処理を同期させるステップは、前記同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を前記メモリに格納するステップを含むことが望ましい。或いは／及び、さらに、前記複数のプロセッサコアのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップを含むことが望ましい。
【０００９】
第２の態様のバリア同期方法は、複数のプロセッサを有する情報処理装置において、前記プロセッサが実行した処理を同期させるバリア同期方法であって、前記複数のプロセッサのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップと、前記休止状態に移行させたプロセッサを、次の処理に移行させるタイミングの到来により前記休止状態前の状態に復帰させるステップを有する。
【００１０】
本発明の第１の態様のバリア同期装置は、マルチコアプロセッサが有する複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサを同期させるために該マルチコアプロセッサに実装されることを前提とし、前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を格納する第１の情報格納手段と、同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、を具備する。
【００１１】
第２の態様のバリア同期装置は、上記第１の態様の構成に加えて、前記第３の情報格納手段に格納されている同期情報を専用の配線により前記プロセッサコアが有するメモリに書き込む情報書込手段、を更に具備する。
【００１２】
なお、上記第１或いは第２の態様では、前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、ことが望ましい。
【００１３】
本発明のマルチコアプロセッサは、前記複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサをバリア同期させるためのバリア同期装置と、前記バリア同期装置に、前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を通知する通知手段と、を具備する。
【００１４】
本発明では、マルチコアプロセッサに、バリア同期のためのバリア同期装置を実装し、そのマルチコアプロセッサが有する２つ以上のプロセッサコアのみが同一の同期グループに属している場合に、実装したバリア同期装置を用いてそれらプロセッサコアのバリア同期を実現させる。そのようにして、バリア同期のためのデータの送受信をマルチコアプロセッサ外と行うのを回避させるため、バリア同期用の同期処理は極めて高速に行うことができる。
【００１５】
バリア同期装置に、同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報をそのプロセッサコアのメモリに直接、書き込ませるようにした場合には、プロセッサコアはより高速に同期情報を確認することができる。このため、バリア同同期用に実行する同期処理の時間が短縮し、その処理が全体に占める割合はより低減される。
【００１６】
実行すべき処理が終了したプロセッサコアを次の処理に移行するまでの間、計算資源の消費が少なく、より消費電力が小さい休止状態に移行させるようにした場合には、処理能力の低下を回避しつつ、消費電力をより抑えられるようになる。
【００１７】
バリア同期装置を構成する第２及び第３の情報格納手段、並びに情報更新手段からなる組の総数Ｎを、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たすようにした場合には、第２の情報格納手段に格納した組み合わせ情報を更新することなく、より多くの同期グループに対応できる可能性が高くなる。このため、バリア同期用にプロセッサコアが実行すべき同期処理の量はより抑えられるようになる。それにより、バリア同期もより高速化されることとなる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態によるマルチコアプロセッサの構成を示す図である。
【図２】本実施形態によるマルチコアプロセッサが適用される計算機システムの構成を示す図である。
【図３】図２の計算機システムに用いられている計算機ノードの構成を示す図である。
【図４】バリア装置の構成を示す図である。
【図５】バリアブレイドの構成を示す図である。
【図６】ＬＢＳＹ値をプロセッサコアにコピーするための書き込み機構を示す図である。
【図７】図６の書き込み機構によるコピーのために設けられた専用の配線を説明する図である。
【図８】図６の書き込み機構に係わるプロセッサコアの構成を示す図である。
【図９】ＬＢＳＹ更新ロジックによるＬＢＳＹ値の更新方法を示す図である。
【図１０】各プロセッサコアがスリープ状態に移行している期間を説明する図である。
【図１１】同一の同期グループに属する論理プロセッサが１個のマルチコアプロセッサ内に全て存在しない場合にバリア同期を行う方法を説明する図である。
【発明を実施するための最良の形態】
【００１９】
以下、本バリア同期方法、装置、及びマルチコアプロセッサの実施形態の一例について、図面を参照しながら詳細に説明する。
図１は、本実施形態によるマルチコアプロセッサ（ＣＰＵ  ＬＳＩ）の構成を示す図である。そのプロセッサ１は、図１に示すように、演算機能を有するプロセッサコア（図中「Ｃｏｒｅ」。命令のデコードや実行を行なう各種ユニット、レジスタ、及びキャッシュメモリなどを備えている）１１を計４個、搭載したものである。各プロセッサコア（以下「コア」）１１は共有キャッシュ制御部１２と接続され、その制御部１２を介して、大容量の共有するキャッシュメモリ（データ部）１３、バス制御部１４、或いはバリア装置（ＢＡＲＲＩＥＲ  ＵＮＩＴ）１６にアクセス、或いはデータの送受信を行うようになっている。本実施形態によるバリア同期装置は、バリア装置１６として実現されている。【００２０】
そのバリア装置１６は、同一の同期グループに属するコア１１が全て当該プロセッサ１内に存在する場合に、その同期グループのバリア同期を実現させるための処理を行う。それにより、そのバリア同期の実現のためにプロセッサ１外とのデータの送受信を行う必要性を回避させている。プロセッサ１内部でバリア同期を実現させ、その内部の処理速度と比較して低速なデータの送受信を行わないようにしたため、そのバリア同期のための処理は極めて高速に行うことができる。【００２１】
上記マルチコアプロセッサ（以降「プロセッサ」と略記）１は、高性能な計算機システムの構築に用いられることを想定したものである。その計算機システムは、例えば図２に示すように、それぞれが１個の計算機システムである計算機ノード２１を複数、ノード間のインタコネクト用の接続装置２２に接続して構築されるものである。接続装置２２は、具体的にはクロスバー、或いはメッシュ・ネットワークなどである。【００２２】
上記プロセッサ１は、１ＬＳＩ上に図１に示す構成を全て実装したものである。しかし、プロセッサとしては、同一パッケージ内に図１に示す構成を全て搭載したものであっても良い。つまり、例えばコア１１を実装した１つ以上の半導体チップ、及び共有するキャッシュメモリ１３を実装した別の半導体チップを同一パッケージにまとめたようなものでも良い。【００２３】
図２に示す計算機ノード（計算機システムである情報処理装置）２１は、例えば図３に示すような構成のものである。その図３に示すように、計算機ノード２１には、複数のプロセッサ１が搭載され、各プロセッサ１はシステムコントローラ３１と不図示のシステムバスにより接続されている。そのコントローラ３１には、各プロセッサ１により共有される主記憶装置３２、及び不図示の外部記憶装置との間でデータの入出力等を行う入出力制御装置３３が接続されている。接続装置２２との間でデータの送受信を行うためのインタフェース３４は、その接続装置２２と接続させる場合に搭載されるオプションである。そのインタフェース３４が無線ＬＡＮ用のものであった場合、接続装置２２は存在しないことも有りうる。【００２４】
図４は、上記バリア装置１６の構成を示す図である。そのバリア装置１６は、２つのバリア処理装置１５、及び論理プロセッサ（ＯＳが認識可能な仮想的コア）の総数と同じ数の設定レジスタ（Configuration Registers）４３を備えている。２つのバリア処理装置１５は、複数のＢＳＴ（Barrier STatus register）からなるＢＳＴ群４２、及びそれぞれが１つの同期グループの同期処理を実行可能な複数のバリア同期実行部（図中「Barrier Blade」。以降「バリアブレイド」）４０を備えている。【００２５】
ＢＳＴ群４２を構成する各ＢＳＴ４１にはそれぞれ、異なる論理プロセッサが割り当てられる。各ＢＳＴ４１は１ビットのデータを格納するレジスタである。各論理プロセッサ（その論理プロセッサが割り当てられたコア１１）は、並列処理として実行すべき処理の実行の終了により「１」を書き込み、次の処理の実行開始により「０」を書き込むようになっている。それによりＢＳＴ４１の値は、対応する論理プロセッサの処理の実行状態を示している。その値が０→１に変化するポイントは、同一の同期グループに属する他の論理プロセッサとの同期を取るための待ち状態に移行したことを意味している。そのポイントについては以降「同期ポイント」と呼ぶ。【００２６】
各コア１１の論理プロセッサ数は２である。本実施形態では、論理プロセッサ当たり３つの同期グループに対応できるように、計２４（＝３×２×４）個のバリアブレイド４０を用意している。そのために、ＢＳＴ４１も２４個、用意している。【００２７】
図５は、上記バリアブレイド４０の構成を示す図である。バリアブレイド４０は、ＢＳＴ４１の総数分のビット数を有するＢＳＴマスクレジスタ４０ａ、ＬＢＳＹ（Last Barrier SYnchronization register）４０ｂ及びＬＢＳＹ更新ロジック（回路）４０ｃを備えている。【００２８】
ＢＳＴマスクレジスタ４０ａは、バリアブレイド４０に割り当てられた同期グループに属する論理プロセッサの組み合わせを示す組データを格納するものである。その組データは例えば、同期グループに属する論理プロセッサに対応するビットの値は１、属しない論英プロセッサに対応するビットの値は０である。そのような組データを格納したマスクレジスタ４０ａによりＬＢＳＹ更新ロジック４０ｃは、ＢＳＴ群４２のなかで同期グループに属する論理プロセッサに割り当てられたＢＳＴ４１の値のみを用いて、ＬＢＳＹ４０ｂの値（ＬＢＳＹ値）を更新する。その更新は、対象となる全てのＢＳＴ４１の値が一致した場合に、現在のＬＢＳＹ値の否定値（現在値が０であれば１、１であれば０）をＬＢＳＹ４０ｂに書き込むことで行う。【００２９】
分散処理の対象となる処理（複数のスレッドを含むプログラム全体の処理）が常に一定であるとは限らない。その処理の追加や消滅が発生する場合がある。処理が追加される場合、その処理の同期実現用にバリアブレイド４０を割り当て、マスクレジスタ４０ａに組データを格納しなければならない。論理プロセッサ当たり３個のバリアブレイド４０を用意しているのは、そのような設定を行う回数をより少なくして、つまりバリア同期用にコア１１に実行させる処理の量をより少なくして、その処理に要する時間の短縮を実現させるためである。設定の回数を抑えるためには、論理プロセッサ当たり２個以上のバリアブレイド４０を用意することが望ましい。つまり、コア１１の総数をＭ、コア１１当たりの論理プロセッサの総数をＸとすると、バリアブレイド４０の総数Ｎは
Ｎ≧２・Ｍ・Ｘ
の関係を満たすようにすることが望ましい。【００３０】
図９は、ＬＢＳＹ更新ロジック４０ｃによるＬＢＳＹ値の更新方法を示す図である。図９中の「プロセス１」〜「プロセス３」はそれぞれ、同一の同期グループに属する各論理プロセッサに割り当てられた処理を示し、「ＢＳＴ１」〜「ＢＳＴ３」はそれぞれ、プロセス１〜３を実行する論理プロセッサによって値が更新されるＢＳＴ４１を示している。これは後述する図１０でも同じである。図９に示すようにＬＢＳＹ４０ｂの値は、ＢＳＴ１〜３の値が全て１となることで０→１に更新され、その後、それらＢＳＴ１〜３の値が全て０の値となると１→０に更新されている。【００３１】
バリア装置１６内の各種レジスタ、即ち設定レジスタ４３、ＢＳＴ４１、及びマスクレジスタ４０ａ等へのコア１１によるアクセスは、共有キャッシュ制御部１２を介して行われる。このため、そのアクセスには或る程度、長い時間が必要である。処理を終了したことで論理値１をＢＳＴ４１に書き込んだ論理プロセッサは、ＬＢＳＹ値を監視（ポーリング）して、その値が１に変化するのを確認しなければならない。その監視のためにＬＢＳＹ値にアクセスを繰り返すスピンループが発生することがある。このようなことから本実施形態では、以下のことを行っている。図６〜図８及び図１０を参照して具体的に説明する。【００３２】
コア１１によるＬＢＳＹ値の確認をより迅速に行えるように、そのコア１１が監視すべきＬＢＳＹ値はそのコア１１内部にバリアブレイド４０からコピーするようにしている。図６は、そのコピーのための書き込み機構を示す図である。【００３３】
図６に示すセレクタ６１は、設定レジスタ４３毎、つまり論理プロセッサ毎に用意している。各バリアブレイド４０のＬＢＳＹ４０ｂに格納されたＬＢＳＹ値は全てセレクタ６１に入力されるようになっており、各セレクタ６１は、対応する設定レジスタ４３に格納されたデータに従い、２４のＬＢＳＹ値のなかから６つのＬＢＳＹ値を選択して出力する。出力側の配線（計６本の配線）は、図７に共有キャッシュ制御部１２を通る太線で示すように、対応するコア１１に接続されている。このため、セレクタ６１により選択されたＬＢＳＹ値は直接、対応するコア１１に出力（コピー）される。各コア１１は２つの論理プロセッサを持つことができるので、太線一本あたり１２本の配線が存在する。【００３４】
各セレクタ６１はバリア装置１６内に配置している。これは、セレクタ６１をコア１１の近くに配置するほど、全体の配線長が長くなるからである。それにより、セレクタ６１にＬＢＳＹ値を入力するために必要な全体の配線長はより短くなるようにして、レイアウト設計等への影響を抑えている。【００３５】
図８は、上記書き込み機構に係わるコア１１の構成を示す図である。
書き込み機構により出力された６つのＬＢＳＹ値はそれぞれレジスタ８３にストアされる。ＬＢＳＹ値変化検出部８２は、各レジスタ８３にストアされるＬＢＳＹ値の変化を検出するものである。命令制御部８１は不図示の１次キャッシュ部に取り込まれた命令を取り出し、実行させるものである。【００３６】
レジスタ８３は、アクセスがより高速に行えるように、命令制御部８１の近傍に配置している。ＬＢＳＹ値を監視する対象がコア１１内のレジスタ８３になると、その監視のために共有キャッシュ制御部１２に発行するリクエストの数は少なくなる。それにより、高速化が実現されるとともに、共有キャッシュ制御部１２の負荷も軽減されることとなる。共有キャッシュ制御部１２を介したＬＢＳＹ値のリードでは数十ｎｓかかるが、そのリード時間はレジスタ８３のリードとすることで数ｎｓとなる。ＬＢＳＹ値をコピーするメモリは、高速にアクセスできるものであればレジスタ８３以外の種類であっても良い。【００３７】
各論理プロセッサは、同期ポイントに到達、つまり対応するＢＳＴ４１の値を０から１に書き換えてからＬＢＳＹ値が更新（０から１への更新）されるまでの期間、分散処理のために割り当てられた処理を実行することができない。このことから本実施形態では、その期間の消費電力を抑えるために、同期ポイントに到達した論理プロセッサはスリープ状態（モード）に移行させるようにしている。ＬＢＳＹ値変化検出部８２は、ＬＢＳＹ値の変化を検出して、命令制御部８１に対し、スリープ状態の解除を要求するために用意している。命令制御部８１は、そのスリープ解除要求によりスリープ状態を解除してその直前の状態に復帰させる。スリープ状態への移行は、論理プロセッサに実行させるプログラム（ソフトウェア）により行っている。なお、同期ポイントに到達した後に移行させる状態としては、より計算に必要な資源（バッファ、一時レジスタなど）の使用を抑えられる、より消費電力が抑えられる、復帰が高速に行える、という条件を満たしていれば別の休止状態であっても良い。【００３８】
図１０は、スリープ状態に移行している期間を説明する図である。プロセス１〜３を実行する論理プロセッサがスリープ状態に移行している期間を、ＢＳＴ１〜３で斜線により表している。図１０に示すように各論理プロセッサは、三角で示す同期ポイントに到達してからＬＢＳＹ値が１に変化するまでの期間、スリープ状態となっている。【００３９】
６個のレジスタ８３、及び１個のＬＢＳＹ値変化検出部８２は、全部で２組、用意されている。それにより、コア１１の別の論路プロセッサでも同様に、同期ポイントに到達すればスリープ状態に移行させ、ＬＢＳＹ値の変化により直前の状態に復帰させるようになっている。【００４０】
ＬＢＳＹ値が変化したことの検出は、６つのＬＢＳＹ値のうちの１つ以上の変化を条件としても良いが、処理（プロセス）が終了した同期グループに対応するＬＢＳＹ値の変化のみを条件としても良い。【００４１】
上記スリープ状態への移行は、論理プロセッサ単位で行っているが、コア１１単位で行っても良い。或いはプロセッサ１単位で行っても良い。その場合、プロセッサ１はマルチコアプロセッサでなくとも良い。【００４２】
図１１は、同一の同期グループに属する論理プロセッサが１個のマルチコアプロセッサの内に全て存在しない場合にバリア同期を行う方法を説明する図である。
図１１において、２個のバリアブレイド４０はそれぞれ異なるプロセッサ１に実装されたものである。バリアリーフ（Barrier Leaf）１１０は、プロセッサ１以外の構成要素、例えば図３に示すシステムコントローラ３１、或いは図２に示す接続装置２２に搭載されたものである。そのバリアリーフ１１０はＢＳＴ群１１１と共にバリア処理装置（図４）を構成するものである。ここでは便宜的に、バリアリーフ１１０等は接続装置２２に搭載されたバリア装置に存在するものであると想定する。【００４３】
各バリアブレイド４０は、ＢＳＴ群４２のなかで値を送信すべきＢＳＴ４１をマスクレジスタ４０ａから特定する。特定したＢＳＴ４１の値は、インタフェース３４を介して接続装置２２に送信され、ＢＳＴ群１１１の対応するＢＳＴにストアされる。それによりバリアリーフ１１０はバリアブレイド４０と同様に、ＢＳＴ群１１１のなかでマスクレジスタ１１０ａにより指定されるＢＳＴの組み合わせからＬＢＳＹ１１０ｂの値を必要に応じて更新する。そのＬＢＳＹ１１０ｂの値は各バリアブレイド４０に送信され、ＬＢＳＹ４０ｂにストアされる。そのＬＢＳＹ４０ｂの値を対応するコア１１内にコピーすることにより、バリア同期を実現させる。【００４４】
なお、本実施形態では、バリア装置１６のＬＢＳＹ値を各コア１１内に直接コピーできるようにしているが、全てのコア１１を直接コピーできるようにしなくとも良い。スリープ状態への移行については、対応するＢＳＴ４１への１の書き込みを契機にして移行させるようにしても良い。
【図１】
2008155806.tif 000003
【図２】
2008155806.tif 000004
【図３】
2008155806.tif 000005
【図４】
2008155806.tif 000006
【図５】
2008155806.tif 000007
【図６】
2008155806.tif 000008
【図７】
2008155806.tif 000009
【図８】
2008155806.tif 000010
【図９】
2008155806.tif 000011
【図１０】
2008155806.tif 000012
【図１１】
2008155806.tif 000013
【手続補正書】
【提出日】平成22年1月5日(2010.1.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するプロセッサにおいて、前記プロセッサコアが実行した処理を同期させるバリア同期方法であって、
前記複数のプロセッサコアのうち、同期すべきプロセッサコアをそれぞれ、同一の同期グループに割り当てるステップと、
前記同一の同期グループに属するプロセッサコアの実行した処理を同期させるステップとを有することを特徴とするバリア同期方法。
【請求項２】
前記バリア同期方法はさらに、
前記プロセッサが有する前記プロセッサコアにメモリを有し、
前記プロセッサコアの実行した処理を同期させるステップは、前記同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を前記メモリに格納するステップを含むことを特徴とする請求項１記載のバリア同期方法。
【請求項３】
前記バリア同期方法はさらに、
前記複数のプロセッサコアのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップを含むことを特徴とする請求項１又は２記載のバリア同期方法。
【請求項４】
複数のプロセッサを有する情報処理装置において、前記プロセッサが実行した処理を同期させるバリア同期方法であって、
前記複数のプロセッサのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップと、
前記休止状態に移行させたプロセッサを、次の処理に移行させるタイミングの到来により前記休止状態前の状態に復帰させるステップを有することを特徴とするバリア同期方法。
【請求項５】
マルチコアプロセッサが有する複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサを同期させるために該マルチコアプロセッサに実装される装置であって、
前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
を具備することを特徴とするバリア同期装置。
【請求項６】
前記第３の情報格納手段に格納されている同期情報を専用の配線により前記プロセッサコアが有するメモリに書き込む情報書込手段、
を更に具備することを特徴とする請求項５記載のバリア同期装置。
【請求項７】
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする請求項５記載のバリア同期装置。
【請求項８】
前記情報書込手段は、前記情報更新手段毎に用意されている、
ことを特徴とする請求項６記載のバリア同期装置。
【請求項９】
複数のプロセッサコアを有するマルチコアプロセッサにおいて、
前記複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサをバリア同期させるためのバリア同期装置と、
前記バリア同期装置に、前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を通知する通知手段と、
を具備することを特徴とするマルチコアプロセッサ。
【請求項１０】
前記バリア同期装置は、
前記通知手段により通知される、複数のプロセッサコアそれぞれの前記状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
を具備し、
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする請求項９記載のマルチコアプロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
なお、本実施の形態では、バリア装置１６のＬＢＳＹ値を各コア１１内に直接コピーできるようにしているが、全てのコア１１を直接コピーできるようにしなくとも良い。スリープ状態への移行については、対応するＢＳＴ４１への１の書き込みを契機にして移行させるようにしても良い。
以上の変形例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
複数のプロセッサコアを有するプロセッサにおいて、前記プロセッサコアが実行した処理を同期させるバリア同期方法であって、
前記複数のプロセッサコアのうち、同期すべきプロセッサコアをそれぞれ、同一の同期グループに割り当てるステップと、
前記同一の同期グループに属するプロセッサコアの実行した処理を同期させるステップとを有することを特徴とするバリア同期方法。
（付記２）
前記バリア同期方法はさらに、
前記プロセッサが有する前記プロセッサコアにメモリを有し、
前記プロセッサコアの実行した処理を同期させるステップは、前記同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を前記メモリに格納するステップを含むことを特徴とする付記１記載のバリア同期方法。
（付記３）
前記バリア同期方法はさらに、
前記複数のプロセッサコアのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップを含むことを特徴とする付記１又は２記載のバリア同期方法。
（付記４）
複数のプロセッサを有する情報処理装置において、前記プロセッサが実行した処理を同期させるバリア同期方法であって、
前記複数のプロセッサのうち、いずれかのプロセッサコアが実行すべき処理を完了した場合には、前記処理を完了したプロセッサコアが次の処理に移行するまでの間、前記プロセッサコアを休止状態に移行させるステップと、
前記休止状態に移行させたプロセッサを、次の処理に移行させるタイミングの到来により前記休止状態前の状態に復帰させるステップを有することを特徴とするバリア同期方法。
（付記５）
マルチコアプロセッサが有する複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサを同期させるために該マルチコアプロセッサに実装される装置であって、
前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
を具備することを特徴とするバリア同期装置。
（付記６）
前記第３の情報格納手段に格納されている同期情報を専用の配線により前記プロセッサコアが有するメモリに書き込む情報書込手段、
を更に具備することを特徴とする付記５記載のバリア同期装置。
（付記７）
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする付記５記載のバリア同期装置。
（付記８）
前記情報書込手段は、前記情報更新手段毎に用意されている、
ことを特徴とする付記６記載のバリア同期装置。
（付記９）
前記マルチコアプロセッサは、前記複数のプロセッサコアを一つのＬＳＩ上に実装したプロセッサである、
ことを特徴とする付記５記載のバリア同期装置。
（付記１０）
前記マルチコアプロセッサは、前記複数のプロセッサコアがキャッシュメモリを共有するプロセッサである、
ことを特徴とする付記５記載のバリア同期装置。
（付記１１）
複数のプロセッサコアを有するマルチコアプロセッサにおいて、
前記複数のプロセッサコアのなかで同一の同期グループに属する２つ以上のマルチコアプロセッサをバリア同期させるためのバリア同期装置と、
前記バリア同期装置に、前記複数のプロセッサコアそれぞれの処理の実行状態を示す状態情報を通知する通知手段と、
を具備することを特徴とするマルチコアプロセッサ。
（付記１２）
前記バリア同期装置は、
前記通知手段により通知される、複数のプロセッサコアそれぞれの前記状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
前記第３の情報格納手段に格納されている同期情報を専用の配線により前記プロセッサコアが有するメモリに書き込む情報書込手段と、
を具備することを特徴とする付記１１記載のマルチコアプロセッサ。
（付記１３）
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする付記１２記載のマルチコアプロセッサ。
（付記１４）
前記バリア同期装置は、
前記通知手段により通知される、複数のプロセッサコアそれぞれの前記状態情報を格納する第１の情報格納手段と、
同期グループに属するプロセッサコアの組み合わせを示す組み合わせ情報を格納する第２の情報格納手段と、
前記同一の同期グループに属するプロセッサコアが次の処理に移行すべきか否かを示す同期情報を格納する第３の情報格納手段と、
前記第１及び第２の情報格納手段にそれぞれ格納された状態情報、及び組み合わせ情報を基に、前記第３の情報格納手段に格納されている同期情報を更新する情報更新手段と、
を具備し、
前記第２及び第３の情報格納手段、並びに前記情報更新手段からなる組の総数Ｎは、前記プロセッサコアの総数をＭ、該プロセッサコアの論理プロセッサの総数をＸとした場合に、
Ｎ≧２Ｍ・Ｘ
の関係を満たしている、
ことを特徴とする付記１１記載のマルチコアプロセッサ。
（付記１５）
前記マルチコアプロセッサは、前記複数のプロセッサコアを一つのＬＳＩ上に実装したプロセッサである、
ことを特徴とする付記１１記載のマルチコアプロセッサ。
（付記１６）
前記マルチコアプロセッサは、前記複数のプロセッサコアがキャッシュメモリを共有するプロセッサである、
ことを特徴とする付記１１記載のマルチコアプロセッサ。
【国際調査報告】
2008155806.tif 000014
2008155806.tif 000015
2008155806.tif 000016
2008155806.tif 000017