(57)【特許請求の範囲】
【請求項１】
複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、
前記ＣＰＵが、
ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部をキャッシュするＧＢＦキャッシュを含む計算コアと、
グローバルバリア同期フラグを含む通信制御ユニットとを備え、
前記計算コアは、
前記グローバルバリア同期フラグの参照要求を行う場合、まず前記ＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行う
ことを特徴とする超並列計算機。
【請求項２】
前記通信制御ユニットが、
どの前記計算コアがどの前記グローバルバリア同期フラグのキャッシュを保持しているかを記憶するＧＢＦキャッシュフィルタを含み、
前記通信制御ユニットは、
前記グローバルバリア同期フラグを更新した場合、前記ＧＢＦキャッシュフィルタを参照し、当該グローバルバリア同期フラグのキャッシュを持つ前記計算コアに対し、更新情報を通知することを特徴とする請求項１に記載の超並列計算機。
【請求項３】
前記ＧＢＦキャッシュが、
有効ビットと、前記グローバルバリア同期フラグを一意に識別する識別子と、前記グローバルバリア同期フラグの値とを含むエントリを登録する
ことを特徴とする請求項１又は請求項２に記載の超並列計算機。
【請求項４】
前記ＧＢＦキャッシュが、
有効ビットと、キャッシュ対象の前記グローバルバリア同期フラグを一意に識別する識別子と、前記グローバルバリア同期フラグの値とを含むエントリを登録し、
前記計算コアが、
前記更新情報に基づいて、前記ＧＢＦキャッシュに登録された前記グローバルバリア同期フラグを一意に識別する識別子が一致するエントリの前記グローバルバリア同期フラグの値を更新すると共に、当該エントリの前記有効ビットを有効にする
ことを特徴とする請求項２に記載の超並列計算機。
【請求項５】
前記計算コアは、
前記ＧＢＦキャッシュを参照する場合、読み出し対象の前記識別子を持つ前記エントリが存在し、かつ、前記有効ビットが有効であった場合は、キャシュヒットしたと判断し、読み出し対象の前記識別子を持つ前記エントリが存在しない場合、若しくは、読み出し対象の前記識別子を持つ前記エントリは存在するが有効ビットが無効であった場合は、キャッシュミスしたと判断する
ことを特徴とする請求項３又は請求項４に記載の超並列計算機。
【請求項６】
前記計算コアは、
前記ＧＢＦキャッシュへの参照がキャッシュミスした場合、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを前記ＧＢＦキャッシュに確保し、
前記グローバルバリア同期フラグの参照要求に対して得られた、前記キャッシュミスしたグローバルバリア同期フラグを、当該エントリに登録する
ことを特徴とする請求項５に記載の超並列計算機。
【請求項７】
前記エントリが、エントリの置き換えのための参照情報を含み、
前記計算コアは、
参照対象のグローバルバリア同期フラグが存在する場合は、当該エントリを、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリとし、グローバルバリア同期フラグが存在しない場合は、前記参照情報に基づいて、破棄するエントリを決定し、当該エントリを破棄することで、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを確保する
ことを特徴とする請求項６に記載の超並列計算機。
【請求項８】
前記計算コアは、
キャッシュミスしたグローバルバリア同期フラグを登録するために確保した前記エントリに対し、読み出し対象の前記識別子を当該エントリに登録し、かつ、前記有効ビットを無効にするとともに、前記通信制御ユニットに対し、グローバルバリア同期フラグの参照要求を行う
ことを特徴とする請求項６又は請求項７に記載の超並列計算機。
【請求項９】
複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、前記ＣＰＵに計算コアと通信制御ユニットを備える超並列計算機による同期方法であって、
前記計算コアが、
グローバルバリア同期フラグの参照要求をグローバルバリア同期フラグを含む通信制御ユニットに行う場合、まず前記計算コアが備えるＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行ステップを実行し、
前記ＧＢＦキャッシュは、
前記ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされる
ことを特徴とする同期方法。
【請求項１０】
複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、前記ＣＰＵに計算コアと通信制御ユニットを備える超並列計算機を構成するコンピュータ上で動作する同期プログラムであって、
前記計算コアが備えるＧＢＦキャッシュにＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされ、
前記計算コアに、
グローバルバリア同期フラグの参照要求をグローバルバリア同期フラグを含む通信制御ユニットに行う場合、まず前記計算コアが備える前記ＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行う処理を実行させ、
前記ＧＢＦキャッシュは、
前記ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされる
ことを特徴とする同期プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機に関し、特に、バリア同期のばらつき時間削減技術に関する。
【背景技術】
【０００２】
計算コアは通信制御ユニットに対してグローバルバリア同期フラグ（Ｇｌｏｂａｌ  Ｂａｒｒｉｅｒ  ｓｙｎｃｈｒｏｎｏｕｓ  Ｆｌａｇ、ＧＢＦ）の参照要求を発行することで、グローバルバリア同期フラグを確認する。
【０００３】
ここで、ＧＢＦ参照要求の仕掛り中の参照数の上限を１とする。仮に、ＧＢＦ参照のレイテンシを５０ｎｓとすると、ＧＢＦ参照の結果を得るには、最悪の場合だと最良のケースと比較して５０ｎｓ程度遅れたタイミングで結果を取得することになる。
【０００４】
さらに、この参照間隔は他の計算コアからの参照要求と競合した場合に、要求の調停などでばらつくことがあり、最悪の場合にはより長いレイテンシが掛かることが一般的である。
【０００５】
例えば、通信制御ユニットが１．６６ｎｓにひとつの要求を処理できる性能があり、４つの計算コアから同時にＧＢＦ参照要求が出た場合には最も運の悪い計算コア１１０では５ｎｓの追加のレイテンシが必要になる。この数値はひとつの通信制御ユニットを参照する計算コアの数が増えるほど増加する。
【０００６】
さらに、超並列計算機上での同期機構では、１０００を越えるＣＰＵ上で各計算コアが通信制御ユニット上のＧＢＦを参照する。このときに全ての計算コアで上記のような不運なケースが発生しないケースはきわめて稀であり、どこかのプロセスで上述の最悪のケースが発生している可能性が高い。
【０００７】
ここで図１７を参照すると、図１７では、上記の２つの最悪値が重なった場合を示している。計算コア２が最良のタイミングで完了しているのに対して、計算コア１は最悪のタイミングで完了している。アプリケーションの終了時刻は最も遅いプロセスによって規定されるため、全計算コアで処理Ａが完了するのは最良値よりも５５ｎｓ遅くなる。
【０００８】
ここで、関連技術として、フォルスシェアを緩和することで同期のオーバーヘッドを緩和する発明が特許文献１に開示されている。特許文献１に開示の発明では、ブロードキャストベースの方式で同期の参加・完了を通知する。
【０００９】
また、別の関連技術として、ノード間インターコネクトを通じてメモリアドレス空間を共有する発明が特許文献２に開示されている。
【００１０】
さらに別の関連技術として、ノード内の同期を更新型キャッシュとカウンタ減算を用いることで高速な同期処理を実現する発明が特許文献３に開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００２−００７３７１号公報
【特許文献２】特開２００２−３０４３２８号公報
【特許文献３】特開平０６−１４９７５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
背景技術による、ＧＢＣ（Ｇｌｏｂａｌ  Ｂａｒｒｉｅｒ  ｓｙｎｃｈｒｏｎｏｕｓ  Ｃｏｕｎｔｅｒ：グローバルバリア同期カウンタ）やＧＢＦを用いた同期制御機構においては、次のような課題がある。
【００１３】
第１の課題は、通信制御ユニットの参照時間が長いため、参照開始タイミングによってはグローバルバリア同期フラグの更新の確認が他の計算コアと比較して遅れてしまうことがある、ということである。
【００１４】
第２の課題は、通信制御ユニットを複数の計算コアで共有するため、調停制御のタイミングなどで更新確認がさらに遅れてしまうことがある、ということである。
【００１５】
第３の課題は、上記２つの問題で想定されうる最悪に近いケースが１０００以上のＣＰＵを含むような超並列計算機のバリア同期では日常的に発生するということである。
【００１６】
ここで、特許文献１に開示の発明は、同期のオーバーヘッドを緩和するものであるが、常に全ＣＰＵへ同期参加・成立を伝えるため、システム中に１０００以上の計算ノードがあり、そのうちの一部のプロセッサで同期を取るＧＢＣ／ＧＢＣＦ方式と同じ機能を実現することはできない。また、特許文献１に開示の発明では、キャッシュ一貫性プロトコルで無効化ベースの方式を用いているため、更新型の方式を用いる提案手法よりも性能が低い。
【００１７】
また、特許文献２に開示の発明は、ノード内の同期を更新型キャッシュとカウンタ減算を用いることで高速な同期処理を実現することとしているが、通信系路上にキャッシュを配置することなどはできないない。また、一度目の同期成立後にカウンタを再初期化した後に同期をとらないと初期化後のデータの見え方がプロセス毎に異なってしまうため、Ｐａｒｔｉａｌ  Ｓｔｏｒｅ  Ｏｒｄｅｒｉｎｇを実現することができない。
【００１８】
特許文献２に開示の発明は、コヒーレンスのトラフィックを管理するために、キャッシュフィルタを備えてはいるものの、特許文献１、２、４によって実現できるキャッシュ方式は、（１）ブロードキャストによる同期制御（２）キャッシュフィルタによるトラフィックの削減（３）更新型キャッシュを用いた同期成立の通知、を可能とするに留まり、Ｐａｒｔｉａｌ  Ｓｔｏｒｅ  Ｏｒｄｅｒｉｎｇの実現は不可能である。
【００１９】
（発明の目的）
本発明の目的は、上述の課題を解決し、グローバルバリア同期フラグ参照時間を削減し、安定したグローバルバリア同期機構を実現する超並列計算機、同期方法、同期プログラムを提供することである。
【課題を解決するための手段】
【００２０】
本発明の第１の超並列計算機は、複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、ＣＰＵが、ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部をキャッシュするＧＢＦキャッシュを含む計算コアと、グローバルバリア同期フラグを含む通信制御ユニットとを備え、計算コアは、グローバルバリア同期フラグの参照要求を行う場合、まずＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行う。
【００２１】
本発明の第１の同期方法は、複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、ＣＰＵに計算コアと通信制御ユニットを備える超並列計算機による同期方法であって、計算コアが、グローバルバリア同期フラグの参照要求をグローバルバリア同期フラグを含む通信制御ユニットに行う場合、まず計算コアが備えるＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行ステップを実行し、ＧＢＦキャッシュは、ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされる。
【００２２】
本発明の第１の同期プログラムは、複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、ＣＰＵに計算コアと通信制御ユニットを備える超並列計算機を構成するコンピュータ上で動作する同期プログラムであって、計算コアが備えるＧＢＦキャッシュにＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされ、計算コアに、グローバルバリア同期フラグの参照要求をグローバルバリア同期フラグを含む通信制御ユニットに行う場合、まず計算コアが備えるＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行う処理を実行させ、ＧＢＦキャッシュは、ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされる。
【発明の効果】
【００２３】
本発明によれば、グローバルバリア同期フラグを計算コア内にキャッシュすることでグローバルバリア同期フラグ参照時間を削減し、安定したグローバルバリア同期機構を実現できる。
【図面の簡単な説明】
【００２４】
【図１】本発明の前提とする同期システムに係る超並列計算機の構成を示すブロック図である。
【図２】本発明の前提とする同期システムに係るＧＢＣ、ＧＢＣＩ、ＧＢＦの操作を示す図である。
【図３】本発明の前提とする同期システムに係るＧＢＣを利用するときの動作を示す図である。
【図４】本発明の第１の実施の形態に係る超並列計算機の構成を示すブロック図である。
【図５】本発明の第１の実施の形態に係るＧＢＦキャッシュの構成例を示す図である。
【図６】本発明の第１の実施の形態に係るＧＢＦキャッシュフィルタの構成例を示す図である。
【図７】本発明の第１の実施の形態に係る同期成立時の動作の概要を示す図である。
【図８】本発明の第１の実施の形態に係る計算コアのＧＢＦ参照要求の処理を示す図である。
【図９】本発明の第１の実施の形態に係るＧＢＦキャッシュのエントリ登録を示す図である。
【図１０】本発明の第２の実施の形態に係る超並列計算機の構成を示すブロック図である。
【図１１】本発明の第３の実施の形態に係る超並列計算機の構成を示すブロック図である。
【図１２】本発明の第３の実施の形態に係るＧＢＦキャッシュフィルタの構成例を示す図である。
【図１３】本発明の第４の実施の形態に係る超並列計算機の構成を示すブロック図である。
【図１４】本発明の第４の実施の形態に係るＧＢＣ  ＩＤの構成例を示す図である。
【図１５】本発明の同期制御機構を示す図である。
【図１６】本発明の超並列計算機の最小限の構成を示すブロック図である。
【図１７】背景技術の同期制御機構を示す図である。
【発明を実施するための形態】
【００２５】
本発明の上記及び他の目的、特徴及び利点を明確にすべく、添付した図面を参照しながら、本発明の実施形態を以下に詳述する。なお、上述の本願発明の目的のほか、他の技術的課題、その技術的課題を解決する手段及びその作用効果についても、以下の実施形態による開示によって明らかとなるものである。
【００２６】
なお、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２７】
（第１の実施の形態）
本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００２８】
まず、本発明の前提とする同期システムに関して図１を用いて説明する。
【００２９】
図１は、本発明の前提とする超並列計算機１０００の構成を示すブロック図である。図１を参照すると、超並列計算機１０００は、複数のＣＰＵ１０と、主記憶装置２０と、パケットスイッチネットワーク３０とを備える。
【００３０】
ＣＰＵ１０は、プログラムの処理を行う。ＣＰＵ１０は超並列計算機１０００中に多数（例えば１０００以上）存在し、互いに通信をしながらプログラムの実行を行う。また、各ＣＰＵ１０は、それぞれが独立に、メインメモリ等の主記憶装置２０を有する。
【００３１】
また、ＣＰＵ１０は、複数の計算コア１１０と、通信制御ユニット１２０とを含む。
【００３２】
計算コア１１０は、プログラムの実行を行うユニットである。計算コア１１０はＡＬＵやレジスタファイルを含む実行ユニット１１１を用いてプログラムの実行を行う。計算コア１１０は自らが所属するＣＰＵ１０に接続された主記憶装置２０に対してアクセスをすることが出来る。なお、以降においては、各計算コア１１０をそれぞれ識別するため、適宜、計算コア０、計算コア１等と表記する場合もあるものとする。
【００３３】
通信制御ユニット１２０は超並列計算機中で計算コア１１０からの通信要求の受理、制御を行うユニットである。通信制御ユニット１２０は、他のＣＰＵ１０の通信制御ユニット１２０やパケットスイッチネットワーク３０で発生した通信要求の受理、制御も行う。
【００３４】
通信制御ユニット１２０が受理した要求は、要求内容に基づいて処理される。例えば、通信制御ユニット１２０の所属するＣＰＵ１０に接続される主記憶装置２０上のデータをパケットスイッチネットワーク３０に注入したり、パケットスイッチネットワーク３０から受信したデータを主記憶装置２０に書き込む、といったことを行う。
【００３５】
また、通信制御ユニット１２０は、ＣＰＵ間の同期制御を行うためのグローバルバリア同期フラグ（Ｇｌｏｂａｌ  Ｂａｒｒｉｅｒ  ｓｙｎｃｈｒｏｎｏｕｓ  Ｆｌａｇ，  ＧＢＦ）を持つ。
【００３６】
ＧＢＦは、各通信制御ユニット１２０内にシステム内のＧＢＣの個数分保持する。例えば、ＧＢＣが１２８個あるならば、ＧＢＦは各ＣＰＵ１０の各通信制御ユニット１２０内に１２８個ずつ存在することになる。ＧＢＦはＣＰＵ１０内でコヒーレンスが取れたデータとして定義される。すなわち、ＣＰＵ１０内部の全ての計算コア１１０から見えるＧＢＦの値と、その変更順序は一意でなくてはならない。
【００３７】
例えば、もともとの値がＸであったＧＢＦに対して、計算コア１１００がＧＢＦをＹに書き換えるのと同時に計算コア１１０１がＧＢＦをＺに書き換え、その直後に計算コア１１０２がＧＢＦをＷに書き換えた場合、計算コア１１００と計算コア１１０１と計算コア１１０２がＧＢＦを読み出した場合には、全ての計算コア１１０で、Ｘ→Ｙ→Ｚ→Ｗという順序での変更に見えなくてはいけない。或いは、全ての計算コア１１０で、Ｘ→Ｚ→Ｙ→Ｗの順序での変更に見えなくてはいけない。
【００３８】
また、計算コア１１０が書き込み指示を出した直後に同エントリを参照する場合、書込み後のデータが読める必要がある。上記の例でＸ→Ｙ→Ｚ→Ｗと変化した場合には、計算コア１１０２が書き込み指示を発行した後に、Ｚ又はＷが読み出される必要があり、Ｙが読み出されてはいけない。このコンシステンシモデルはＰａｒｔｉａｌ  Ｓｔｏｒｅ  Ｏｒｄｅｒｉｎｇと呼ばれ、いわゆる当業者にとって一般的なものである。
【００３９】
パケットスイッチネットワーク３０は、各ＣＰＵ１０の通信制御ユニット１２０から注入された通信パケットを、適切なＣＰＵ１０やネットワーク内資源に対して転送する。図１では、パケットスイッチネットワーク３０をファットツリートポロジで構成した例を示しているが、これに限定されず、３Ｄトーラスなどの他のネットワーク形態をとっても良い。
【００４０】
ネットワーク資源としては、ＣＰＵ間の同期制御を行うためのグローバルバリア同期カウンタ（Ｇｌｏｂａｌ  Ｂａｒｒｉｅｒ  ｓｙｎｃｈｒｏｎｏｕｓ  Ｃｏｕｎｔｅｒ、ＧＢＣ）とその初期値をあらわす初期値用グローバルバリア同期カウンタ（Ｇｌｏｂａｌ  Ｂａｒｒｉｅｒ  ｓｙｎｃｈｒｏｎｏｕｓ  Ｃｏｕｎｔｅｒ  ｆｏｒ  Ｉｎｉｔｉａｌ  ｖａｌｕｅ、ＧＢＣＩ）を持つ。
【００４１】
ＧＢＣおよびＧＢＣＩはパケットスイッチネットワーク中に存在する。ＧＢＣとＧＢＣＩは１対１で組み合わされ、それぞれにユニークなＩＤが割り振られる。
【００４２】
本実施の形態ではＧＢＣとＧＢＣＩの組は１２８個存在し、ひとつのスイッチチップ上に存在するものとする。なお、以降においては、上記の「ユニークなＩＤ」を「ＧＢＣ  ＩＤ」あるいは単に「ＩＤ」と表記する。
【００４３】
ＧＢＣ、ＧＢＣＩ、ＧＢＦには、以下の操作を行うことができる。その操作を図２に示す。
【００４４】
ＧＢＣＩに対しては、計算コア１１０からの指示で値を設定することが出来る。
【００４５】
ＧＢＣに対しては、計算コア１１０からの指示で（１）値の設定と（２）値のデクリメントを実施することが出来る。この動作は計算コア１１０からの通信指示を通信制御ユニット１２０を通じてパケットスイッチネットワーク３０に注入することで実現できる。
【００４６】
ＧＢＦに対しては、計算コア１１０からの指示で（１）値の設定と（２）値の参照を実施することが出来る。上記の動作は計算コア１１０から送出された指示を通信制御ユニット１２０が受け取り、処理を行うことで実現される。
【００４７】
上述のとおり、ＧＢＣは同期の成立を監視するカウンタで計算コア１１０からの指示によってデクリメントされる。計算コア１１０からの指示はＧＢＣのＩＤを指定してパケットスイッチネットワーク３０に注入することで該当するＧＢＣにルーティングされ、ＧＢＣ／ＧＢＣＩ制御を行う。
【００４８】
ＧＢＣを利用するときの動作を図３に示す。ＧＢＣ／ＧＢＣＩは同期に参加するプロセス数で初期化を行い、同期待ちになる時点で各プロセスが１回だけＧＢＣのデクリメント指示を送出する。
【００４９】
この操作によってＧＢＣが０になると、（１）ＧＢＣＩの値がＧＢＣに対してコピーされ、（２）各ＣＰＵ１０の通信制御ユニット１２０に対して、同期成立指示がネットワークを通じてブロードキャストされる。通信制御ユニット１２０は、同期成立指示が到達した際にＧＢＦの値を更新する。その後に、（３）計算コア１１０が、ＧＢＦの値を読み出すことで同期の成立を知ることが出来る。
【００５０】
次に、本発明の第１の実施の形態による超並列計算機１００の構成に関して説明する。
【００５１】
図４は、本実施の形態による超並列計算機１００の構成を示すブロック図である。本実施の形態による超並列計算機１００は、図１に示す超並列計算機１０００の構成と比べ、（１）計算コア１１０上にＧＢＦキャッシュ１１２を追加し、さらに、（２）通信制御ユニット１２０にＧＢＦキャッシュフィルタ１２１を追加している構成となる。
【００５２】
図４において、ＧＢＦキャッシュ１１２は、通信制御ユニット１２０上のＧＢＦの一部のコピーを保持する。本実施の形態ではコピーの数は８個程度を前提とするが、これに限定はされない。
【００５３】
ＧＢＦキャッシュ１１２の構成例を図５に示す。ＧＢＦキャッシュ１１２は１ビットの有効ビット、キャッシュするＧＢＦに関連するＧＢＣ  ＩＤ、ＧＢＦフラグ、及び、置き換えのための参照情報を持つ。置き換えポリシーとしてはＮｏｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄポリシー（ＮＲＵ）を用いるものとするが、ＬＲＵやランダムなどのほかの方式を用いても良い。
【００５４】
図４において、ＧＢＦキャッシュフィルタ１２１は、どの計算コア１１０がどのＩＤのＧＢＦキャッシュ１１２を保持しているかを記憶する。
【００５５】
ＧＢＦキャッシュフィルタ１２１の構成を図６に示す。ＧＢＦキャッシュフィルタ１２１の各エントリは、キャッシュされているＧＢＦに関連するＧＢＣ  ＩＤ、保持している計算コア１１０番号、置き換えのための参照情報をもつ。エントリは、ＣＰＵ１０中の計算コア１１０の数と、各計算コア１１０が保持するＧＢＦキャッシュ１１２のエントリ数の合計個数分あれば十分である。
【００５６】
ＧＢＦキャッシュフィルタ１２１も、ＧＢＦキャッシュ１１２と同じくＮＲＵによって置き換えを制御する。置き換えポリシーはＬＲＵやランダムなどの他の方式を用いても良い。
【００５７】
計算コア１１０は、ＧＢＦキャッシュ１１２を保持し、ＧＢＦ参照の際にはまずＧＢＦキャッシュ１１２を参照して、ＧＢＦキャッシュ１１２中に対象のデータが存在しない場合に限り、ＧＢＦを参照する。
【００５８】
図７に同期成立時の動作の概要を示す。
【００５９】
同期成立時には、まず、ＧＢＣから各ＣＰＵ１０の通信制御ユニット１２０上のＧＢＦに対して、ＧＢＦ更新指示が送出される。
【００６０】
次いで、通信制御ユニット１２０は、ＧＢＦ更新指示に係るＧＢＦを更新すると同時に、ＧＢＦキャッシュフィルタ１２１を参照し、計算コア１１０中にＧＢＦ更新指示に係るＧＢＦに対応するＧＢＦキャッシュ１１２がある場合には、同ＧＢＦ更新指示をＧＢＦキャッシュ１１２に係る計算コア１１０に対して転送する。
【００６１】
例えば、該当するエントリに計算コア１と計算コア３のビットが点灯している場合には、計算コア１と計算コア３に対してのみＧＢＦ更新指示を転送する。
【００６２】
転送された更新指示をＧＢＦキャッシュ１１２が受け取ると、計算コア１１０は、関連するＧＢＣ  ＩＤをキャッシュする場合には、更新指示をキャッシュの内容に反映させて有効ビットを点灯させる。
【００６３】
もし、ＧＢＦキャッシュフィルタ１２１にエントリがない場合には、そのＧＢＦ更新指示は計算コア１１０上のＧＢＦキャッシュ１１２に関係ないため破棄される。
【００６４】
計算コア１１０がＧＢＦを参照する場合には、まずＧＢＦキャッシュ１１２を参照し、そこにエントリがなかった場合に限り通信制御ユニット１２０中に保持されるＧＢＦ本体の参照を実施する。
【００６５】
なお、ひとつのプログラム中で利用するバリア同期の種類は多くなく、例えば８個程度のＧＢＦを参照できればアプリケーションの性能を十分に引き出すことが出来ることが知られている。例えば、特許文献（ＵＳ．２０１１／０１７３４１３）ではシステム全体で８個〜１６個のバリア同期しか取れないが、十分に高い性能を実現できるとしている。
【００６６】
（第１の実施の形態の動作の説明）
次に、本実施の形態による超並列計算機１００の動作について、図面を参照して詳細に説明する。
【００６７】
まず、本発明が前提とするバリア同期制御方式に関して説明する。最初に、以下の処理を行いグローバルバリア同期の準備を行う。
０−１：アプリケーションがシステム管理プロセスに対してＧＢＣ／ＧＢＣＩの利用を申請し、ＧＢＣ／ＧＢＣＩの利用権を取得する。
０−２：取得したＧＢＣＩとＧＢＣに対して、代表のプロセスがバリア同期に参加するプロセス数を書き込む。
０−３：ＧＢＦの値を計算コア１１０が読み出し記憶する。ここで読み出した値をＡとする。
【００６８】
同期に参加するプロセスは以下の手順で同期を実施する。
１−１：ＧＢＣに対するデクリメント指示を送出する。同期に参加する全てのプロセスがデクリメント指示を実施するとＧＢＣの値が０になるため、同期成立がブロードキャストされてＧＢＦの値が更新される。
１−２：ＧＢＦの値を読み出す。この値をＢとする。
１−３：もしも、ＡとＢの値が同一ならばＧＢＦ更新がないため、同期不成立。その場合には１−２に戻る。
１−４：ＡとＢが異なる値ならば同期が成立する。
１−５：Ａに対してＢの値を代入して後続の処理を行う。
【００６９】
ＧＢＦキャッシュ１１２が対象とするのは１−２から１−３にかけてのループ処理の遅延のばらつきを削減することである。本発明では通信制御ユニット１２０中のＧＢＦのキャッシュを計算コア１１０に持つことで参照のレイテンシを削減する。
【００７０】
ＧＢＦキャッシュ１１２には４つの動作が必要である。
【００７１】
まず１つめが、計算コア１１０のＧＢＦ参照要求の処理（図８）である。
【００７２】
参照は計算コア１１０からのＧＢＦ参照要求によって起動される。計算コア１１０が参照要求を発行する際には、まず、ＧＢＦキャッシュ１１２を参照する。もしも、参照先のＩＤを持つエントリが存在し、かつ、その有効ビットが１であった場合には参照がキャッシュにヒットした、と判断される。この場合には、キャッシュ上のＧＢＦ値が読み出される。
【００７３】
もしも、参照先のＩＤを持つエントリが存在しない、あるいは、その有効ビットが０であった場合には参照がキャッシュミスしたと判断される。その場合には、後に示す方法で参照先ＧＢＦを格納するエントリを確保して、ＧＢＦ本体の参照を行うために、ＧＢＦ参照要求を通信制御ユニット１２０に対して送出する。
【００７４】
２つめが、ＧＢＦキャッシュ１１２のエントリ登録（図９）である。
【００７５】
ＧＢＦキャッシュ１１２へのエントリの登録はＧＢＦキャッシュ１１２参照で、キャッシュミスした際に行われる。キャッシュミスが検出されると、（１）ＧＢＦキャッシュ１１２に対してエントリの確保を行う。
【００７６】
もしも、読み出し対象のＩＤを持つエントリが既に存在した場合にはそのエントリを利用し、存在しない場合には登録するためのエントリを確保するために参照情報を見て追い出しエントリを選択する。本発明ではＮＲＵポリシーを前提としているが、この方式は当該業者には良く知られた方式であり、これ以上は説明をしない。
【００７７】
追い出しエントリを決定したら、そのエントリの情報を破棄して、キャッシュミスの原因となったＧＢＦ参照先のＩＤを登録する。このときには有効ビットを立てない。また、キャッシュミス時には必ず通信制御ユニット１２０に対してＧＢＦ参照要求を発生させる。この要求のＧＢＦへの経路上にはＧＢＦキャッシュフィルタ１２１を通過する。
【００７８】
（２）ＧＢＦキャッシュ１１２の登録時には同様にＩＤの登録をＧＢＦキャッシュフィルタ１２１にも登録する。もしも、登録時にＧＢＦキャッシュフィルタ１２１から追い出されたエントリ情報がある場合には、以降でそのエントリの更新情報を計算コア１１０に通知できなくなる。この問題を防ぐために、（３）ＧＢＦを読み出すのと平行して、フラッシュ指示を関連する計算コア１１０に対して通知する。
【００７９】
コンシステンシの観点から、通信制御ユニット１２０に対して送出されたＧＢＦ参照要求がある場合、そのリプライが返却されるまでＧＢＦキャッシュ１１２の参照はできない。もしも、そのような条件下で有効ビットが成立したＧＢＦキャッシュ１１２エントリがある場合には計算コア１１０は先行するＧＢＦ参照要求のリプライが返却されるまで命令の実行を中断させる。
【００８０】
３つめが、ＧＢＦキャッシュ１１２のエントリ更新である。
【００８１】
ＧＢＣ＝０が成立しての同期成立指示や計算コア１１０からの更新要求を受け取ってＧＢＦを更新する際には、その更新情報を該当するＧＢＦをキャッシュする計算コア１１０に対して送出する。
【００８２】
各計算コア１１０が管理するＧＢＦ情報は必ずＧＢＦキャッシュフィルタ１２１に書き込まれているため、その情報を元に送出先を決定して更新情報をＧＢＦキャッシュ１１２に対して届ける。
【００８３】
計算コア１１０中のＧＢＦキャッシュ１１２に更新指示が到達すると、ＧＢＦキャッシュ１１２中の該当するエントリに対して更新値が書き込まれる。書込みと同時に有効ビットが１に変更される。ＧＢＦキャッシュ１１２で有効ビットが成立するのは、このＧＢＦキャッシュ１１２の更新通知のタイミングだけである。もしも、別のＧＢＦキャッシュ１１２の登録でそのエントリがすでに追い出されていた場合には更新情報は破棄される。
【００８４】
４つめが、ＧＢＦキャッシュ１１２のエントリ無効化である。
【００８５】
ＧＢＦキャッシュ１１２は以下のタイミングで無効化される。
４−１：計算コア１１０がＧＢＦキャッシュ１１２上にあるＧＢＦのＩＤに対して書込みを実施した場合、通常のキャッシュと異なり、Ｐａｒｔｉａｌ  Ｓｔｏｒｅ  Ｏｒｄｅｒｉｎｇを満たす必要があるため、自身のＧＢＦキャッシュ１１２上に値を書かずに本体に直接書込みを行う。このときに、ＧＢＦ本体とのコヒーレンスを保つためにＧＢＦキャッシュ１１２の有効ビットを０に落とす。通常のキャッシュと異なり、計算コア１１０からの書込みを低速化させることで、ネットワークからのＧＢＦ更新指示によるコヒーレンスとコンシステンシを保った更新を高速化できる。
４−２：通信制御ユニット１２０上のＧＢＦキャッシュフィルタ１２１から追い出されたエントリがあった場合、以降のＧＢＦキャッシュ１１２の更新指示が計算コア１１０に到達しなくなるため、キャッシュのクリアを実施する。例えば、追い出されるエントリがＩＤ＝Ｘで計算コア１と計算コア３に登録されている場合には、ＩＤ＝ＸのＧＢＦキャッシュ１１２の無効化指示を計算コア１と計算コア３に対して送付する。ＧＢＦキャッシュ１１２がＧＢＦキャッシュ１１２の無効化指示を受け取ると、一致するＩＤを持つエントリの有効ビットを０に落とす。
４−３：なんらかの故障が検知された場合には、全てのＧＢＦキャッシュ１１２エントリを無効化する。
【００８６】
ＧＢＦキャッシュ１１２の無効化指示はＧＢＦキャッシュ１１２の更新指示と同じ経路を利用して通知される。
【００８７】
（第１の実施の形態による効果）
本実施の形態では、超並列計算機（スーパーコンピュータ）のＣＰＵ間の同期機構において、グローバルバリア同期フラグ監視のばらつきを、グローバルバリア同期フラグキャッシュの利用で削減し、ＣＰＵ同期にかかる実行の遅延時間を削減したことを特徴とする。これにより、以下に記載するような効果を奏する。
【００８８】
第１の効果は、計算コア１１０が通信制御ユニット１２０に対してＧＢＦ参照を発行する必要がないため、参照の遅延が削減できることである。
【００８９】
第２の効果は、計算コア１１０が、複数の計算コア１１０で共有する通信制御ユニット１２０に対してＧＢＦ参照要求を送出する必要がないため、計算コア１１０と通信制御ユニット１２０間で発生する調停の影響を受けずにＧＢＦ参照の処理が実行できることである。
【００９０】
第３の効果は、計算コア１１０がシステム中で多数存在するＧＢＦのうち、少数のみをキャッシュすることで、ソフトウェアでコピーをする煩雑な手順を踏まなくても上記の効果が得られることである。
【００９１】
第４の効果は、計算コア１１０とＧＢＦの絶対的な距離が離れていても、キャッシュを参照することで遅延が削減できるため、もともと同一ＣＰＵ１０に配置していたＧＢＦを、後述する第２の実施の形態で示すようにＣＰＵ１０外に配置することができ、システム構築の自由度が増すことである。
【００９２】
第５の効果は、グローバルバリア同期フラグ参照について、計算コア１１０から遠いネットワーク中の実体を参照せずに、計算コア１１０内に存在するＧＢＦキャッシュ１１２を参照するグローバルバリア同期フラグ参照時間を削減し、グローバルバリア同期フラグ参照にかかるばらつきに起因する性能低下を低減することができることである。
【００９３】
ここで、本発明の同期制御機構を図１５に示すと、各計算コアにＧＢＦキャッシュを持つことで、競合と参照遅延の双方が改善されており、参照遅延が５ｎｓと仮定すると参照ばらつきが５ｎｓに抑えられていることが分かる。結果として、図１６の背景技術を用いたケースよりも処理Ａが完了するまでの時間が５０ｎｓ短く出来ることがわかる。一般に通信の片道の遅延は数マイクロ秒であるため、本発明適用することで５％程度の性能改善が期待できる。
【００９４】
ここで、本発明の課題を解決できる最小限の構成を図１６に示す。超並列計算機１００が、複数のＣＰＵ１０を備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機１００であって、ＣＰＵ１０が、ＣＰＵ１０間の同期制御を行うための複数のグローバルバリア同期フラグの一部をキャッシュするＧＢＦキャッシュ１１２を含む計算コア１１０と、グローバルバリア同期フラグを含む通信制御ユニット１２０とを備え、計算コア１１０は、グローバルバリア同期フラグの参照要求を行う場合、まずＧＢＦキャッシュ１１２を参照し、当該参照がキャッシュミスした場合に限り、通信制御ユニット１２０に対してグローバルバリア同期フラグの参照要求を行うことで、上述した本発明の課題を解決することができる。
【００９５】
（第２の実施の形態）
次に、本発明の第２の実施の形態について、図１０を参照して説明を行う。
【００９６】
図１０は、ＧＢＦをネットワーク中に保持する例である。
【００９７】
ＧＢＦを繰り返し参照する場合には、かならずＧＢＦキャッシュ１１２にヒットするためＧＢＦのキャッシュ元のデータが計算コア１１０からより遠い場所にあっても実効のレイテンシへの影響がない。
【００９８】
（第３の実施の形態）
次に、本発明の第２の実施の形態について、図１１、図１２を参照して説明を行う。
【００９９】
図１１は、ＧＢＦをネットワーク中に保持し、さらに、ＧＢＦキャッシュフィルタ１２１もネットワーク中に保持する例である。その構成を図１２に示す。
【０１００】
スイッチチップ上のＧＢＦキャッシュフィルタ１１２は、計算コア１１０の番号ではなくどの出力ポートに対してＧＢＦ更新を通知するべきかを記憶する。
【０１０１】
例えば、ポート０とポート３に１が格納されている場合には、ＧＢＦ更新通知をポート０とポート３にブロードキャストする。
【０１０２】
ＧＢＦキャッシュ１１２のエントリを追い出す場合には、関連するポートに対して無効化通知を送出する。
【０１０３】
ＧＢＦキャッシュ１１２のエントリが無効化通知を受け取った場合には、追い出された場合と同様に、ＧＢＦキャッシュ１１２の無効化指示を送出し、該当するエントリのポート情報をクリアする。
【０１０４】
本実施の形態によれば、ＧＢＦキャッシュフィルタ１２１によってブロードキャスト先を限定できるため、超並列計算機上のパケットスイッチネットワークのトラフィックを軽減することが出来る。
【０１０５】
（第４の実施の形態）
次に、本発明の第４の実施の形態について、図１３を参照して説明を行う。
【０１０６】
図１３は、第２の実施の形態でパケットスイッチネットワーク中にあったＧＢＣ／ＧＢＣＩ／ＧＢＣＦを各ＣＰＵ１０の通信制御ユニット１２０に移動させた例である。
【０１０７】
超並列計算機は常に全体でひとつのシステムを構築するわけではなく、多数の小規模システムとして運用されることもあるのが一般的である。このような場合に、ＧＢＣがシステム上で固定数（例えば１２８個）しかないと、１２８本以上の並列ジョブを実行する際にＧＢＣを利用した同期機構が利用できない。
【０１０８】
各ＣＰＵ１０に対してＧＢＣ／ＧＢＣＦを配置することで、システム中のＣＰＵの増加と共にＧＢＣ／ＧＢＦも増加することでより柔軟なシステム運用が可能になる。その場合のＧＢＣ  ＩＤの割り振り方はＩＤの上位ビットをＣＰＵ番号に、下位ビットをＣＰＵ内ＧＢＣ  ＩＤとする（図１４）。
【０１０９】
スイッチチップ中のＧＢＦキャッシュフィルタ１２１は図１２に示したものと同じものを利用できる。
【０１１０】
以上、好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【０１１１】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【０１１２】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【０１１３】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施する時には、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【０１１４】
また、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【０１１５】
さらに、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、これに限定されない。
【０１１６】
（付記１）
複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、
前記ＣＰＵが、
ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部をキャッシュするＧＢＦキャッシュを含む計算コアと、
グローバルバリア同期フラグを含む通信制御ユニットとを備え、
前記計算コアは、
前記グローバルバリア同期フラグの参照要求を行う場合、まず前記ＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行う
ことを特徴とする超並列計算機。
【０１１７】
（付記２）
前記通信制御ユニットが、
どの前記計算コアがどの前記グローバルバリア同期フラグのキャッシュを保持しているかを記憶するＧＢＦキャッシュフィルタを含み、
前記通信制御ユニットは、
前記グローバルバリア同期フラグを更新した場合、前記ＧＢＦキャッシュフィルタを参照し、当該グローバルバリア同期フラグのキャッシュを持つ前記計算コアに対し、更新情報を通知する
ことを特徴とする付記１に記載の超並列計算機。
【０１１８】
（付記３）
前記ＧＢＦキャッシュが、
前記グローバルバリア同期フラグについて、有効ビットと、前記グローバルバリア同期フラグを一意に識別する識別子と、前記グローバルバリア同期フラグの値とを含むエントリを登録する
ことを特徴とする付記１又は付記２に記載の超並列計算機。
【０１１９】
（付記４）
前記計算ユニットは、
前記更新情報に基づいて前記グローバルバリア同期フラグの値を更新すると共に、当該エントリの前記有効ビットを有効にする
ことを特徴とする付記３に記載の超並列計算機。
【０１２０】
（付記５）
前記計算コアは、
前記ＧＢＦキャッシュを参照する場合、読み出し対象の前記識別子を持つ前記エントリが存在し、かつ、前記有効ビットが有効であった場合は、キャシュヒットしたと判断し、読み出し対象の前記識別子を持つ前記エントリが存在しない場合、若しくは、読み出し対象の前記識別子を持つ前記エントリは存在するが有効ビットが無効であった場合は、キャッシュミスしたと判断する
ことを特徴とする付記３又は付記４に記載の超並列計算機。
【０１２１】
（付記６）
前記計算コアは、
前記ＧＢＦキャッシュへの参照がキャッシュミスした場合、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを前記ＧＢＦキャッシュに確保し、
前記グローバルバリア同期フラグの参照要求に対して得られた、前記キャッシュミスしたグローバルバリア同期フラグを、当該エントリに登録する
ことを特徴とする付記５に記載の超並列計算機。
【０１２２】
（付記７）
前記エントリが、エントリの置き換えのための参照情報を含み、
前記計算コアは、
参照対象のグローバルバリア同期フラグが存在する場合は、当該エントリを、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリとし、グローバルバリア同期フラグが存在しない場合は、前記参照情報に基づいて、破棄するエントリを決定し、当該エントリを破棄することで、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを確保する
ことを特徴とする付記６に記載の超並列計算機。
【０１２３】
（付記８）
前記計算コアは、
キャッシュミスしたグローバルバリア同期フラグを登録するために確保した前記エントリに対し、読み出し対象の前記識別子を当該エントリに登録し、かつ、前記有効ビットを無効にするとともに、前記通信制御ユニットに対し、グローバルバリア同期フラグの参照要求を行う
ことを特徴とする付記６又は付記７に記載の超並列計算機。
【０１２４】
（付記９）
前記通信制御ユニットは、
前記ＧＢＦキャッシュにキャッシュミスしたグローバルバリア同期フラグが登録された場合、前記ＧＢＦキャッシュフィルタの情報を更新する
ことを特徴とする付記６から付記８の何れか１項に記載の超並列計算機。
【０１２５】
（付記１０）
前記計算コアは、
前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行った場合、その結果が返却されるまで、ＧＢＦキャッシュの参照を禁止する
ことを特徴とする付記１から付記９の何れか１項に記載の超並列計算機。
【０１２６】
（付記１１）
複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、前記ＣＰＵに計算コアと通信制御ユニットを備える超並列計算機による同期方法であって、
前記計算コアが、
グローバルバリア同期フラグの参照要求をグローバルバリア同期フラグを含む通信制御ユニットに行う場合、まず前記計算コアが備えるＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行ステップを実行し、
前記ＧＢＦキャッシュは、
前記ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされる
ことを特徴とする同期方法。
【０１２７】
（付記１２）
前記通信制御ユニットが、
前記グローバルバリア同期フラグを更新した場合、通信制御ユニットが備えるＧＢＦキャッシュフィルタを参照し、当該グローバルバリア同期フラグのキャッシュを持つ前記計算コアに対し、更新情報を通知するステップを実行し、
前記ＧＢＦキャッシュフィルタは、
どの前記計算コアがどの前記グローバルバリア同期フラグのキャッシュを保持しているかを記憶する
ことを特徴とする付記１１に記載の同期方法。
【０１２８】
（付記１３）
前記ＧＢＦキャッシュが、
前記グローバルバリア同期フラグについて、有効ビットと、前記グローバルバリア同期フラグを一意に識別する識別子と、前記グローバルバリア同期フラグの値とを含むエントリを登録する
ことを特徴とする付記１１又は付記１２に記載の同期方法。
【０１２９】
（付記１４）
前記計算ユニットが、
前記更新情報に基づいて前記グローバルバリア同期フラグの値を更新すると共に、当該エントリの前記有効ビットを有効にするステップを実行する
ことを特徴とする付記１３に記載の同期方法。
【０１３０】
（付記１５）
前記計算コアが、
前記ＧＢＦキャッシュを参照する場合、読み出し対象の前記識別子を持つ前記エントリが存在し、かつ、前記有効ビットが有効であった場合は、キャシュヒットしたと判断し、読み出し対象の前記識別子を持つ前記エントリが存在しない場合、若しくは、読み出し対象の前記識別子を持つ前記エントリは存在するが有効ビットが無効であった場合は、キャッシュミスしたと判断するステップを実行する
ことを特徴とする付記１３又は付記１４に記載の同期方法。
【０１３１】
（付記１６）
前記計算コアが、
前記ＧＢＦキャッシュへの参照がキャッシュミスした場合、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを前記ＧＢＦキャッシュに確保するステップと
前記グローバルバリア同期フラグの参照要求に対して得られた、前記キャッシュミスしたグローバルバリア同期フラグを、当該エントリに登録するステップとを実行する
ことを特徴とする付記１５に記載の同期方法。
【０１３２】
（付記１７）
前記計算コアが、
参照対象のグローバルバリア同期フラグが存在する場合は、当該エントリを、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリとし、グローバルバリア同期フラグが存在しない場合は、前記エントリが含む、エントリの置き換えのための参照情報に基づいて破棄するエントリを決定し、当該エントリを破棄することで、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを確保するステップを実行する
ことを特徴とする付記１６に記載の同期方法。
【０１３３】
（付記１８）
前記計算コアが、
キャッシュミスしたグローバルバリア同期フラグを登録するために確保した前記エントリに対し、読み出し対象の前記識別子を当該エントリに登録し、かつ、前記有効ビットを無効にするとともに、前記通信制御ユニットに対し、グローバルバリア同期フラグの参照要求を行うステップを実行する
ことを特徴とする付記１６又は付記１７に記載の同期方法。
【０１３４】
（付記１９）
前記通信制御ユニットが、
前記ＧＢＦキャッシュにキャッシュミスしたグローバルバリア同期フラグが登録された場合、前記ＧＢＦキャッシュフィルタの情報を更新するステップを実行する
ことを特徴とする付記１６から付記１８の何れか１項に記載の同期方法。
【０１３５】
（付記２０）
前記計算コアが、
前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行った場合、その結果が返却されるまで、ＧＢＦキャッシュの参照を禁止するステップを実行する
ことを特徴とする付記１１から付記１９の何れか１項に記載の同期方法。
【０１３６】
（付記２１）
複数のＣＰＵを備え、グローバルバリア同期カウンタを用いてバリア同期をとる超並列計算機であって、前記ＣＰＵに計算コアと通信制御ユニットを備える超並列計算機を構成するコンピュータ上で動作する同期プログラムであって、
前記計算コアが備えるＧＢＦキャッシュにＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされ、
前記計算コアに、
グローバルバリア同期フラグの参照要求をグローバルバリア同期フラグを含む通信制御ユニットに行う場合、まず前記計算コアが備える前記ＧＢＦキャッシュを参照し、当該参照がキャッシュミスした場合に限り、前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行う処理を実行させ、
前記ＧＢＦキャッシュは、
前記ＣＰＵ間の同期制御を行うための複数のグローバルバリア同期フラグの一部がキャッシュされる
ことを特徴とする同期プログラム。
【０１３７】
（付記２２）
前記通信制御ユニットに、
前記グローバルバリア同期フラグを更新した場合、通信制御ユニットが備えるＧＢＦキャッシュフィルタを参照し、当該グローバルバリア同期フラグのキャッシュを持つ前記計算コアに対し、更新情報を通知する処理を実行させ、
前記ＧＢＦキャッシュフィルタは、
どの前記計算コアがどの前記グローバルバリア同期フラグのキャッシュを保持しているかを記憶する
ことを特徴とする付記２１に記載の同期プログラム。
【０１３８】
（付記２３）
前記ＧＢＦキャッシュが、
前記グローバルバリア同期フラグについて、有効ビットと、前記グローバルバリア同期フラグを一意に識別する識別子と、前記グローバルバリア同期フラグの値とを含むエントリを登録する
ことを特徴とする付記２１又は付記２２に記載の同期プログラム。
【０１３９】
（付記２４）
前記計算ユニットに、
前記更新情報に基づいて前記グローバルバリア同期フラグの値を更新すると共に、当該エントリの前記有効ビットを有効にする処理を実行させる
ことを特徴とする付記２３に記載の同期プログラム。
【０１４０】
（付記２５）
前記計算コアに、
前記ＧＢＦキャッシュを参照する場合、読み出し対象の前記識別子を持つ前記エントリが存在し、かつ、前記有効ビットが有効であった場合は、キャシュヒットしたと判断し、読み出し対象の前記識別子を持つ前記エントリが存在しない場合、若しくは、読み出し対象の前記識別子を持つ前記エントリは存在するが有効ビットが無効であった場合は、キャッシュミスしたと判断する処理を実行させる
ことを特徴とする付記２３又は付記２４に記載の同期プログラム。
【０１４１】
（付記２６）
前記計算コアに、
前記ＧＢＦキャッシュへの参照がキャッシュミスした場合、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを前記ＧＢＦキャッシュに確保する処理と、
前記グローバルバリア同期フラグの参照要求に対して得られた、前記キャッシュミスしたグローバルバリア同期フラグを、当該エントリに登録する処理とを実行させる
ことを特徴とする付記２５に記載の同期プログラム。
【０１４２】
（付記２７）
前記計算コアに、
参照対象のグローバルバリア同期フラグが存在する場合は、当該エントリを、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリとし、グローバルバリア同期フラグが存在しない場合は、前記エントリが含む、エントリの置き換えのための参照情報に基づいて破棄するエントリを決定し、当該エントリを破棄することで、キャッシュミスしたグローバルバリア同期フラグを登録するためのエントリを確保する処理を実行させる
ことを特徴とする付記２６に記載の同期プログラム。
【０１４３】
（付記２８）
前記計算コアに、
キャッシュミスしたグローバルバリア同期フラグを登録するために確保した前記エントリに対し、読み出し対象の前記識別子を当該エントリに登録し、かつ、前記有効ビットを無効にするとともに、前記通信制御ユニットに対し、グローバルバリア同期フラグの参照要求を行う処理を実行させる
ことを特徴とする付記２６又は付記２７に記載の同期プログラム。
【０１４４】
（付記２９）
前記通信制御ユニットに、
前記ＧＢＦキャッシュにキャッシュミスしたグローバルバリア同期フラグが登録された場合、前記ＧＢＦキャッシュフィルタの情報を更新する処理を実行させる
ことを特徴とする付記２６から付記２８の何れか１項に記載の同期プログラム。
【０１４５】
（付記３０）
前記計算コアに、
前記通信制御ユニットに対してグローバルバリア同期フラグの参照要求を行った場合、その結果が返却されるまで、ＧＢＦキャッシュの参照を禁止する処理を実行させる
ことを特徴とする付記２１から付記２９の何れか１項に記載の同期プログラム。
【符号の説明】
【０１４６】
１００：超並列計算機
１０：ＣＰＵ
２０：主記憶装置
３０：パケットスイッチネットワーク
１１０：計算コア
１１１：実行ユニット
１１２：ＧＢＦキャッシュ
１２０：通信制御ユニット
１２１：ＧＢＦキャッシュフィルタ
【図１】
0005549694.tif 000002
【図２】
0005549694.tif 000003
【図３】
0005549694.tif 000004
【図４】
0005549694.tif 000005
【図５】
0005549694.tif 000006
【図６】
0005549694.tif 000007
【図７】
0005549694.tif 000008
【図８】
0005549694.tif 000009
【図９】
0005549694.tif 000010
【図１０】
0005549694.tif 000011
【図１１】
0005549694.tif 000012
【図１２】
0005549694.tif 000013
【図１３】
0005549694.tif 000014
【図１４】
0005549694.tif 000015
【図１５】
0005549694.tif 000016
【図１６】
0005549694.tif 000017
【図１７】
0005549694.tif 000018