(57)【要約】  同期制御装置（１７）は、ＣＤ（４）がクロック信号を１／Ｎに分周した分周クロック信号の立ち上がり又は立ち下がりを検出する。また、同期制御装置（１７）は、分周クロック信号の立ち上がり又は立下りからの経過時間を監視して、ＣＰＵ（１０）が有するＳＴＩＣＫレジスタ（１５）を更新する第２のタイミングを監視する。また、同期制御装置（１７）は、ＣＤ（４）が分周した分周クロック信号をＮ倍に逓倍した制御クロックを生成する。また、同期制御装置（１７）は、ＸＢ（２６）を介して、他のＣＰＵからの同期要求を受信する。そして、同期制御装置（１７）は、他のＣＰＵからの同期要求を受信し、かつ、第２のタイミングを検出した場合に、生成した制御クロックを出力する。
2013018218.tif 000002
【特許請求の範囲】
【請求項１】
入力したクロック信号を１／Ｎに分周するクロック分周器に接続する、データ転送装置を介して他の演算処理装置に接続する演算処理装置が有する同期制御装置において、
前記クロック分周器が分周した分周クロック信号の立ち上がり又は立ち下がりを検出する検出部と、
前記検出部が検出した分周クロック信号の立ち上がり又は立下りからの経過時間を監視して、前記データ転送装置への同期要求を送信する第１のタイミングと、前記演算処理装置が有する同期レジスタを更新する第２のタイミングを監視する監視部と、
前記クロック分周器が分周した分周クロック信号をＮ倍に逓倍した制御クロックを生成するクロック生成部と、
前記データ転送装置を介して、前記他の演算処理装置からの同期要求を受信する同期要求受信部と、
前記同期要求受信部が前記他の演算処理装置からの同期要求を受信し、かつ、前記監視部が前記第２のタイミングを検出した場合に、前記クロック生成部が生成した制御クロックを出力するクロック制御部と、
前記監視部が前記第１のタイミングを検出した場合に、前記データ転送装置を介して、同期要求を前記他の演算処理装置に送信する同期要求送信部を有することを特徴とする同期制御装置。
【請求項２】
前記同期制御装置において、
前記監視部はさらに、分周クロック信号の周期を監視し、
前記クロック生成部は、
前記監視部が検出した分周クロック信号の周期を保持する第１の周期保持回路と、
分周クロックの周期の１／Ｎの周期を保持する第２の周期保持回路と、
前記第１の周期保持回路に保持された分周クロックの周期をＮで除算するとともに、分周クロックの周期の１／Ｎの周期を前記第２の周期保持回路に保持する除算回路と、
保持する値をＮから１ずつ減数する第１の計数回路と、
前記第１の計数回路が保持する値が０以外であることを検出するＮ検出回路と、
分周クロックの周期の１／Ｎの周期に基づき、保持する値を０から１ずつ増分する第２の計数回路と、
前記第２の計数回路が保持する値が０であることを検出するゼロ検出回路と、
前記ゼロ検出回路と前記１検出回路の論理積を出力する論理積回路を有することを特徴とする請求項１記載の同期制御装置。
【請求項３】
前記監視部は、
前記検出部が検出した分周クロック信号の立ち上がり又は立下りからの経過時間を監視する経過時間監視部と、
前記第１のタイミングを検出するための時間値を記憶する第１設定レジスタと、
前記第２のタイミングを検出するための時間値を記憶する第２設定レジスタと、
前記第１設定レジスタが記憶する値と前記経過時間監視部が監視した時間とが一致した場合には、前記第１のタイミングを検出した旨を前記同期要求送信部に通知し、前記第２設定レジスタが記憶する値と前記経過時間監視部が監視した時間とが一致した場合には、前記第２のタイミングを検出した旨を前記クロック制御部に通知するタイミング検出部と
を有することを特徴とする請求項１または２に記載の同期制御装置。
【請求項４】
前記監視部は、前記演算処理装置と対応付けられ前記演算処理装置とは異なる経路に接続された他の演算処理装置へ同期要求を送信する第３のタイミングをさらに監視し、
前記同期要求送信部は、前記監視部が前記第３のタイミングを検出した場合には、前記他の演算処理装置へ同期要求を送信し、同期要求の送信後所定の時間が経過しかつ前記監視部が前記第１のタイミングを検出した場合、または、前記他の演算処理装置から同期要求を受信しかつ前記監視部が前記第１のタイミングを検出した場合には、前記データ転送装置を介して、同期要求を、前記他の演算処理装置へ送信することを特徴とする請求項１または２に記載の同期制御装置。
【請求項５】
複数の演算処理装置がｘ軸方向とｙ軸方向との２次元のメッシュ状に接続されている場合に、
前記監視部は、ｘ軸方向に接続された他の演算処理装置へ同期要求を送信する第４のタイミングと、ｙ軸方向に接続された他の演算処理装置へ同期要求を送信する第５のタイミングとをさらに監視し、
前記同期要求送信部は、前記監視部が前記第４のタイミングを検出した場合には、前記ｘ軸方向に接続された他の演算処理装置へ同期要求を送信し、同期要求送信の後所定の時間が経過しかつ前記監視部が前記第５のタイミングを検出した場合、または、前記ｘ軸方向に接続された他の演算処理装置から同期要求を受信しかつ前記監視部が前記第５のタイミングを検出した場合には、前記データ転送装置を介して、同期要求を前記ｙ軸方向に接続された他の演算処理装置へ送信し、
前記クロック制御部は、前記同期要求受信部が前記ｙ軸方向に接続された演算処理装置に同期要求を送信してから所定の時間が経過しかつ前記監視部が前記第２のタイミングを検出した場合、または、前記ｙ軸方向に接続された他の演算処理装置からの同期要求を受信しかつ前記監視部が前記第２のタイミングを検出した場合に、前記クロック生成部が生成した制御クロックを出力することを特徴とする請求項１または２に記載の同期制御装置。
【請求項６】
複数の前記演算処理装置を有する構成単位がｘ軸方向とｙ軸方向との２次元のメッシュ状に接続されており、
前記同期要求送信部は、前記監視部が、前記第４のタイミングを検出した場合には、前記ｘ軸方向に接続された他の構成単位へ同期要求を送信し、その後、所定の時間が経過し、かつ、前記監視部が前記第５のタイミングを検出した場合、または、前記ｘ軸方向に接続された他の構成単位から同期要求を受信し、かつ、前記監視部が前記第５のタイミングを検出した場合には、前記データ転送装置を介して、同期要求を前記ｙ軸方向に接続された他の構成単位へ送信し、
前記クロック制御部は、前記同期要求受信部が前記ｙ軸方向に接続された構成単位に同期要求を送信してから所定の時間が経過し、かつ、前記監視部が前記第２のタイミングを検出した場合、または、前記ｙ軸方向に接続された他の構成単位からの同期要求を受信し、かつ、前記監視部が前記第２のタイミングを検出した場合に、前記クロック生成部が生成した制御クロックを出力することを特徴とする請求項５に記載の同期制御装置。
【請求項７】
データ転送装置を介して他の演算処理装置に接続する演算処理装置において、
演算処理を行なう演算処理部と、
入力したクロック信号を１／Ｎにクロック分周器が分周した分周クロック信号が入力し、前記演算処理装置と前記他の演算処理装置との同期制御を行なう同期制御装置とを備え、
前記同期制御装置は、
入力する分周クロック信号の立ち上がり又は立ち下がりを検出する検出部と、
前記検出部が検出した分周クロック信号の立ち上がり又は立下りからの経過時間を監視して、同期要求を送信する第１のタイミングと、前記演算処理装置が有する同期レジスタを更新する第２のタイミングを監視する監視部と、
前記クロック分周器が分周した分周クロック信号をＮ倍に逓倍した制御クロックを生成するクロック生成部と、
前記データ転送装置を介して、前記他の演算処理装置からの同期要求を受信する同期要求受信部と、
前記同期要求受信部が前記他の演算処理装置からの同期要求を受信し、かつ、前記監視部が前記第２のタイミングを検出した場合に前記同期レジスタを更新し、前記クロック生成部が生成した制御クロックを前記演算処理部に出力するクロック制御部と、
前記監視部が前記第１のタイミングを検出した場合に、前記データ転送装置を介して、同期要求を前記他の演算処理装置に送信する同期要求送信部と、
を有することを特徴とする演算処理装置。
【請求項８】
入力したクロック信号を１／Ｎに分周するクロック分周器と、データ転送装置を介して他の演算処理装置に接続された複数の演算処理装置を有する並列計算機システムであって、
前記演算処理装置は、前記他の演算処理装置と同期して処理を実行するための同期制御装置を有し、
前記同期制御装置は、
前記クロック分周器が分周した分周クロック信号の立ち上がり又は立ち下がりを検出する検出部と、
前記検出部が検出した分周クロック信号の立ち上がり又は立下りからの経過時間を監視して、前記データ転送装置への同期要求を送信する第１のタイミングと、前記演算処理装置が有する同期レジスタを更新する第２のタイミングを監視する監視部と、
前記クロック分周器が分周した分周クロック信号をＮ倍に逓倍した制御クロックを生成するクロック生成部と、
前記データ転送装置を介して、前記他の演算処理装置からの同期要求を受信する同期要求受信部と、
前記同期要求受信部が前記他の演算処理装置からの同期要求を受信し、かつ、前記監視部が前記第２のタイミングを検出した場合に、前記クロック生成部が生成した制御クロックを出力するクロック制御部と、
前記監視部が前記第１のタイミングを検出した場合に、前記データ転送装置を介して、同期要求を前記他の演算処理装置に送信する同期要求送信部と
を有することを特徴とする並列計算機システム。
【請求項９】
入力したクロック信号を１／Ｎに分周するクロック分周器に接続する、データ転送装置を介して他の演算処理装置に接続する演算処理装置が有する同期制御装置が実行する制御方法であって、
前記クロック分周器が分周した分周クロック信号の立ち上がり又は立ち下がりを検出し、
前記検出した分周クロック信号の立ち上がり又は立下りからの経過時間を監視して、前記データ転送装置への同期要求を送信する第１のタイミングと、前記演算処理装置が有する同期レジスタを更新する第２のタイミングを監視し、
前記分周した分周クロック信号をＮ倍に逓倍した制御クロックを生成し、
前記データ転送装置を介して、前記他の演算処理装置からの同期要求を受信し、
前記他の演算処理装置からの同期要求を受信し、かつ、前記第２のタイミングを検出した場合に、前記生成した制御クロックを出力し、
前記第１のタイミングを検出した場合に、前記データ転送装置を介して、同期要求を前記他の演算処理装置に送信する
処理を実行することを特徴とする同期制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期制御装置、演算処理装置、並列計算機システムおよび同期制御装置の制御方法に関する。
【背景技術】
【０００２】
従来、複数のＣＰＵ（Central  Processing  Unit）を有する並列計算機システムが知られている。このような並列計算機システムの一例として、各ＣＰＵが有するＳｙｓｔｅｍ  ＴＩＣＫレジスタ（以下、ＳＴＩＣＫレジスタと記載する。）に格納された値をそろえることで、各ＣＰＵが実行する処理を同期させる技術が知られている。【０００３】
図２１は、従来の並列計算機システムの一例を説明するための図である。図２１に示す例では、並列計算機システム７０は、発振器７１、基準信号生成部７２、複数のＣＰＵ７３〜７３ｅ、複数のクロスバチップ（以下ＸＢと記載する）７４〜７４ｂ、バス７５を有する。【０００４】
ＣＰＵ７３は、複数のコア７６、７９を有し、各コア７６、７９の内部に他のＣＰＵ７３ａ〜７３ｅと同期して処理を実行するためのＳＴＩＣＫレジスタ７７、８０を有する。また、ＣＰＵは、ＳＴＩＣＫレジスタに格納される値を他のＣＰＵと同期させるための同期制御機構９０を有する。なお、ＣＰＵ７３ａ〜７３ｅは、ＣＰＵ７３と同様の機能を発揮するものとして、以下の説明を省略する。【０００５】
このような並列計算機システム１が有する基準信号生成部７２は、発振器７１から入力された信号に応じて、各ＣＰＵ７３〜７３ｅが有する各ＳＴＩＣＫレジスタ７７〜７７ｅ、８０〜８０ｅに格納される値をカウントアップさせる基準信号を生成する。そして、基準信号生成部７２は、接続線の長さ等の信号伝送特性が管理された伝送路を介して、生成した基準信号を最小のスキューで各ＣＰＵ７３〜７３ｅに供給する。つまり、基準信号生成部７２は、各ＣＰＵ７３〜７３ｅに対して、同じ位相の基準信号を供給する。【０００６】
図２２は、従来のＣＰＵを説明するための図である。図２２に示すように、ＣＰＵ７３は、コア７６、コア７９、同期制御機構９０を有し、コア７６は、ＳＴＩＣＫレジスタ７７とＩＵ（Instruction  Control  Unit）７８を、コア７９は、ＳＴＩＣＫレジスタ８０、ＩＵ８１を有する。このようなＣＰＵ７３は、図２２中（Ａ）に示す経路を介して、基準信号生成部７２から供給された基準信号を同期制御機構９０に供給する。【０００７】
また、ＩＵ７８、８１は、実行中のソフトウェアがＣＰＵ７３〜７３ｅが実行する処理の同期を要求した場合には、図２２中（Ｂ）に示すように、同期制御機構９０に対して、各ＣＰＵ７３〜７３ｅが実行する処理の同期を要求する。このような場合には、同期制御機構９０は、図２２中（Ｃ’）に示すように、ＳＴＩＣＫレジスタのカウント開始やカウント停止を示す同期要求を、自身を含めた各ＣＰＵ７３〜７３ｅが有する同期制御機構９０〜９０ｅへブロードキャスト送信する。【０００８】
ここで、各ＣＰＵ７３〜７３ｅ、ＸＢ７４〜７４ｂ、バス７５は、信号伝送特性が管理された、一定のレイテンシが期待できるパラレルバスによって接続されている。このため、各同期制御機構９０〜９０ｅは、図２２中（Ｃ）に示すようにブロードキャスト送信された同期要求を同じタイミングで受信する。そして、同期制御機構９０は、図２２中（Ｄ）に示すように、同期要求を受信したタイミングに基づいて、ＳＴＩＣＫレジスタ７７、８０に格納する値のカウント開始やカウント停止を実行する。【０００９】
このような処理を実行することによって、各同期制御機構９０〜９０ｅは、同じタイミングで各ＳＴＩＣＫレジスタ７７〜７７ｅ、８０〜８０ｅに格納された値のカウントアップを開始し、各ＣＰＵ７３〜７３ｅが実行する処理を同期させる。【００１０】
以下、図を用いて、各同期制御機構９０〜９０ｅの一例を説明する。図２３は、従来の同期制御機構を説明するための図である。例えば、同期制御機構９０は、シンクロナイザ９１、アップエッジディテクタ９２、フェイズカウンタ９３、設定レジスタ９４ａ、比較器９４ｂ、設定レジスタ９５ａ、比較器９５ｂ、制御パケット送信部９６、制御パケット受信部９７を有する。また、制御パケット送信部９６は、送信バッファ９６ａ、出力回路９６ｂ、エンコーダ９６ｃを有する。また、制御パケット受信部９７は、デコーダ９７ａ、受信バッファ９７ｂ、更新回路９７ｃを有する。なお、図２３中に示す経路（Ａ）〜（Ｄ）は、図２２中の経路（Ａ）〜（Ｄ）に対応する。【００１１】
シンクロナイザ９１は、図２３中（Ａ）に示す経路を介して受信した基準信号をコア７３のコアクロックと同期させる。アップエッジディテクタ９２は、コアクロックと同期した基準信号のアップエッジを検出する。フェイズカウンタ９３は、コアクロックの周期の数を計数しており、アップエッジディテクタ９２がアップエッジを検出するたびに、計数していたコアクロックの周期の数をリセットする。つまり、フェイズカウンタ９３は、コアクロックを用いて、基準信号のアップエッジから経過した時間を計測する。【００１２】
ここで、設定レジスタ９４ａおよび設定レジスタ９５ａには、予め所定の値が設定されている。そして、比較器９４ｂは、フェイズカウンタ９３の値が設定レジスタ９４ａに設定された値と同一の値となった場合には、出力回路９６ｂにイネーブル信号を出力する。また、比較期９５ｂは、フェイズカウンタ９３の値が設定レジスタ９５ｂに設定された値と同一の値となった場合には、更新回路９７ｃにイネーブル信号を出力する。【００１３】
つまり、比較器９４ｂは、基準信号のアップエッジから設定レジスタ９４ａに設定された時間が経過した場合には、出力回路９６ｂにイネーブル信号を出力する。また、比較器９５ｂは、基準信号のアップエッジから設定レジスタ９５ａに設定された時間が経過した場合には、更新回路９７ｃにイネーブル信号を出力する。以下の説明においては、比較器９４ｂがイネーブル信号を送信するタイミングを「ＸＢＣ  Ｔｉｍｉｎｇ」と記載し、比較器９５ｂがイネーブル信号を出力するタイミングを「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」と記載する。【００１４】
制御パケット送信部９６は、図２３中（Ｂ）に示す経路を介して、ＩＵ７８から同期要求を受信した場合には、受信した同期要求を送信バッファ９６ａに格納する。そして、制御パケット送信部９６は、出力回路９６ｂにイネーブル信号が入力された場合、つまり、フェイズカウンタ９３が計測した時間が「ＸＢＣ  Ｔｉｍｉｎｇ」となった場合には、以下の処理を実行する。すなわち、制御パケット送信部９６は、エンコーダ９６ｃを用いて、同期要求をパケット化し、図２３中（Ｃ’）に示す経路およびＸＢ７５を介して、同期要求のパケットをブロードキャスト送信する。【００１５】
一方、制御パケット受信部９７は、図２３中（Ｃ）に示す経路を介して、同期要求のパケットを受信した場合には、デコーダ９７ａを用いてパケットをデコードし、同期要求を受信バッファ９７ｂに格納する。そして、更新回路９７ｃは、イネーブル信号が入力された場合、つまり、フェイズカウンタ９３が計測した時間が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、以下の処理を実行する。【００１６】
すなわち、更新回路９７ｃは、受信バッファ９７ｂに格納されている同期要求が各ＣＰＵのカウント開始を示している場合には、制御レジスタ９８に「０」を格納する。この結果、同期制御機構９０は、図２３中（Ｄ）で示す経路を介して、基準信号をＳＴＩＣＫレジスタ７７に出力し、ＳＴＩＣＫレジスタ７７のカウントを開始する。つまり、同期制御機構９０は、同期要求を受信した直後に、位相計数回路が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」を示したタイミングで、ＳＴＩＣＫレジスタのカウントを開始する。【００１７】
図２４は、ＳＴＩＣＫレジスタのカウントを開始するタイミングを説明するための図である。図２４には、図２３中（Ａ）を介して受信する基準信号、図２３中（Ｂ）を介して受信する同期要求、図２３中（Ｃ）を介して受信するパケット、図２３中（Ｄ）を介して出力する基準信号を記載した。また、図２４には、各ＣＰＵ７３〜７３ｅがパケットを受信するタイミング、各ＣＰＵ７３〜７３ｅがＳＴＩＣＫレジスタのカウントを行うタイミングを示す。まず、同期制御機構９０は、図２３中（Ｅ）に示すように、ＩＵ７８から同期要求を受信した場合には、図２４中（Ｆ）に示す「ＸＢＣ  Ｔｉｍｉｎｇ」で、同期要求が格納されたパケットを各ＣＰＵ７３〜７３ｅにブロードキャスト送信する。【００１８】
すると、各ＣＰＵ７３〜７３ｅ、各ＸＢ７４〜７４ｂ、バス７５は、レイテンシが保障されたパラレルバスで接続されているので、各ＣＰＵ７３〜７３ｅは、図２４中（Ｈ）に示すように、同じタイミングで同期要求が格納されたパケットを受信する。その後、各動機制御機構９０〜９０ｅは、図２４中（Ｇ）に示す「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」で、ＳＴＩＣＫレジスタのカウントを開始する。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開平１０−２３３７６６号公報
【特許文献２】特開平１０−２４３４８３号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、上述した同期要求をブロードキャスト送信する技術では、各ＣＰＵ間が制御信号と制御信号の制御対象であるデータとが分離されるパラレルバスではなく、制御信号とデータを１本の信号線で送信するシリアルリンク等の伝送レイテンシが一定しない方式で接続された場合には、適切に同期制御を行うことができないという問題がある。【００２１】
図２５は、各ＣＰＵ間の伝送レイテンシが一定しない場合にＳＴＩＣＫレジスタのカウントを開始するタイミングがＣＰＵ間で揃わない場合を説明するための図である。なお、図２５に示す例では、各ＣＰＵ７３〜７３ａは、シリアルリンクによって接続されている。また、図２５中（Ｅ）は、図２４中（Ｅ）と同様に、ＩＵ７９から同期要求を受信するタイミングを示し、図２５中（Ｆ）は、図２４中の（Ｆ）と同様「ＸＢＣ  Ｔｉｍｉｎｇ」を示す。また、図２５中（Ｇ）は、図２４中の（Ｇ）と同様「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」を示す。また、図２５には、図２４と同様に各ＣＰＵ７３〜７３ｅがパケットを受信するタイミング、各ＣＰＵ７３〜７３ｅがＳＴＩＣＫレジスタのカウントを行うタイミングを示す。【００２２】
例えば、図２５中（Ｅ）に示すように、ＩＵ７８が同期要求を発行した場合には、ＣＰＵ６２は、図２５中（Ｆ）に示す「ＸＢＣ  Ｔｉｍｉｎｇ」で各ＣＰＵ７３〜７３ｅに同期要求をブロードキャスト送信する。ここで、シリアルリンクにおいては、一定確率の伝送エラーの発生を許容することにより、伝送エラーの発生を許容しない場合よりもＣＰＵ７３〜７３ｅ間のスループットを高くする。すなわち、一定確率の伝送エラーの発生を許容するシリアルリンクにおいては、伝送エラーが発生した場合には、データを再送することにより伝送エラーの救済を行うので、伝送エラーを許容しない場合よりも伝送レイテンシが増加する。そのため、伝送エラーの発生を許容しない信号伝送と異なり、シリアルリンクを用いた信号伝送においては伝送レイテンシが一定しない。【００２３】
このため、図２５中（Ｉ）に示すように、ＣＰＵ７３ａ、７３ｂ、７３ｅに伝送エラーが発生した場合には、各ＣＰＵ６２〜６９は、ブロードキャストされた同期要求をそれぞれ異なるタイミングで受信する。この結果、図２５中（Ｇ）に示す「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」でＳＴＩＣＫレジスタのカウントを開始するＣＰＵと、図２５中（Ｊ）に示す「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」でＳＴＩＣＫレジスタのカウントを開始するＣＰＵとが混在してしまう。図２５に示す例では、ＣＰＵ７３ａとＣＰＵ７３ｂが、他のＣＰＵ７３、７３ｃ〜７３ｅとは異なるタイミングでカウントを開始する。つまり、異なるタイミングでＳＴＩＣＫレジスタのカウントを開始するＣＰＵが混在する。【００２４】
この結果、各ＣＰＵ７３〜７３ｅは、各ＳＴＩＣＫレジスタ７７〜７７ｅ、８０〜８０ｅに格納される値をそろえることができないので、同期して処理を実行することができないという問題がある。【００２５】
１つの側面では、本発明は、ＣＰＵ間がシリアルリンク等の伝送レイテンシが一定しない方式で接続された場合に、同期制御を行えるようにすることを目的とする。
【課題を解決するための手段】
【００２６】
１つの側面では、入力したクロック信号を１／Ｎに分周するクロック分周器に接続する、データ転送装置を介して他の演算処理装置に接続する演算処理装置が有する同期制御装置である。また、同期制御装置は、クロック分周器が分周した分周クロック信号の立ち上がり又は立ち下がりを検出する検出部と、検出部が検出した分周クロック信号の立ち上がり又は立下りからの経過時間を監視する監視部を有する。ここで、監視部は、データ転送装置への同期要求を送信する第１のタイミングと、演算処理装置が有する同期レジスタを更新する第２のタイミングを監視する。また、同期制御装置は、クロック分周器が分周した分周クロック信号をＮ倍に逓倍した制御クロックを生成するクロック生成部を有する。また、同期制御装置は、データ転送装置を介して、他の演算処理装置からの同期要求を受信する同期要求受信部を有する。そして、同期制御装置は、同期要求受信部が他の演算処理装置からの同期要求を受信し、かつ、監視部が第２のタイミングを検出した場合に、クロック生成部が生成した制御クロックを出力するクロック制御部を有する。また、同期制御装置は、監視部が第１のタイミングを検出した場合に、データ転送装置を介して、同期要求を他の演算処理装置に送信する同期要求送信部を有する。
【発明の効果】
【００２７】
一つの実施態様では、各ＣＰＵ間がシリアルリンク等の伝送レイテンシが一定しない方式で接続された場合に同期制御を行なうことができる。
【図面の簡単な説明】
【００２８】
【図１】図１は、実施例１に関わる並列計算機システムの一例を説明するための図である。
【図２】図２は、実施例１に係るＣＰＵの一例を説明するための図である。
【図３】図３は、実施例１に関わる同期制御機構の一例を説明するための図である。
【図４】図４は、同期要求を格納した制御パケットの一例を説明するための図である。
【図５ａ】図５ａは、実施例１に係る同期制御機構の一例を説明するための図である。
【図５ｂ】図５ｂは、同期制御機構の動作の一例を説明するための図（１）である。
【図５ｃ】図５ｃは、同期制御機構の動作の一例を説明するための図（２）である。
【図５ｄ】図５ｄは、同期制御機構の動作の一例を説明するための図（３）である。
【図６】図６は、実施例１に係るＳＴＩＣＫレジスタのカウントを開始するタイミングを説明するためのタイムチャートである。
【図７】図７は、実施例２に関わる並列計算機システムの一例を説明するための図である。
【図８】図８は、実施例２に係るＣＰＵの一例を説明するための図である。
【図９】図９は、実施例２に係る同期制御機構を説明するための図である。
【図１０】図１０は、実施例２に係る同期制御機構の一例を説明するための図である。
【図１１】図１１は、実施例２に係るＳＴＩＣＫレジスタのカウントを開始するタイミングを説明するためのタイムチャートである。
【図１２】図１２は、実施例３に関わる並列計算機システムの一例を説明するための図である。
【図１３】図１３は、実施例３に係る並列計算機システムの一部を説明するための図である。
【図１４】図１４は、実施例３に係る構成要素の一例を説明するための図である。
【図１５】図１５は、実施例３に係る同期制御機構について説明するための図である。
【図１６】図１６は、実施例３に係るＢＣパイプライン機構を説明するための図である。
【図１７】図１７は、ＢＣパイプライン機構の一例を説明するための図である。
【図１８】図１８は、同期制御機構が制御パケットをＢＣパイプライン機構に送信するタイミングを説明するタイムチャートである。
【図１９】図１９は、ＢＣパイプライン機構が制御パケットをブロードキャスト送信するタイミングを説明するためのタイムチャートである。
【図２０】図２０は、同期制御機構がＳＴＩＣＫレジスタに同期信号を出力するタイミングを説明するためのタイムチャートである。
【図２１】図２１は、従来の並列計算機システムの一例を説明するための図である。
【図２２】図２２は、従来のＣＰＵを説明するための図である。
【図２３】図２３は、従来の同期制御機構を説明するための図である。
【図２４】図２４は、ＳＴＩＣＫレジスタのカウントを開始するタイミングを説明するための図である。
【図２５】図２５は、各ＣＰＵ間の伝送レイテンシが一定しない場合にＳＴＩＣＫレジスタのカウントを開始するタイミングがＣＰＵ間で揃わない場合を説明するための図である。
【発明を実施するための形態】
【００２９】
以下に添付図面を参照して本願に係る同期制御装置、演算処理装置、並列計算機システムおよび同期制御装置の制御方法について説明する。
【実施例１】
【００３０】
以下の実施例１では、図１を用いて、並列計算機システムの一例を説明する。図１は、実施例１に関わる並列計算機システムの一例を説明するための図である。図１に示すように、並列計算機システム１は、複数の構成単位２〜２ｂおよびバス７を有する。【００３１】
構成単位２は、発振器３、ＣＤ（Clock  Distributor）４、ＣＰＵ１０、ＣＰＵ１８、ＸＢ２６を有する。なお、各構成単位２ａ、２ｂは、構成単位２と同様に、発振器３ａ、３ｂ、ＣＤ４ａ、４ｂ、ＣＰＵ１０ａ、１０ｂ、ＣＰＵ１８ａ、１８ｂ、ＸＢ２６ａ、ＸＢ２６ｂを有する。また、バス７とは、例えば、Ｉｎｔｅｒ  Ｃｏｎｎｅｃｔ等、並列計算機システム１が有する各部が共通して利用する接続経路である。また、各ＣＰＵ１１〜１１ｂ、１８〜１８ｂ、ＸＢ２６〜２６ｂ、バス７は、シリアルリンクによって接続されている。【００３２】
ＣＰＵ１０は、コア１１、コア１４、同期制御機構１７を有する。また、コア１１は、ストランドごとのＳＴＩＣＫレジスタ１２、１３を有し、コア１４も同様に、ストランドごとのＳＴＩＣＫレジスタ１５、１６を有する。また、ＣＰＵ１８は、コア１９、コア２２、同期制御機構２５を有する。また、コア１９は、ＳＴＩＣＬレジスタ２０、２１を有し、コア２２は、ＳＴＩＣＫレジスタ２２３、２４を有する。【００３３】
なお、以下の説明においては、ＣＰＵ１０ａ〜１０ｂおよびＣＰＵ１８〜１８ｂは、ＣＰＵ１０と同様の処理を実行するものとして、説明を省略する。また、ＸＢ２６ａ〜２６ｂは、ＸＢ２６と同様の処理を実行するものとして、説明を省略する。【００３４】
以下、構成単位２が有する発振器３、ＣＤ４、ＣＰＵ１０、ＸＢ２６が実行する処理について説明する。各ＣＤ４〜４ｂは、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂに同一の位相および同一の周波数を有する分周信号を供給するクロックデバイスである。具体的には、各ＣＤ４〜４ｂは、それぞれ同一の周波数を有する基準信号を生成する発振器３〜３ｂと接続されている。また、各ＣＤ４〜４ｂは、接続線の長さ等の信号伝送特性が管理された伝送路を介して、相互に接続されており、いずれか１つのＣＤをマスタとしてその他のＣＤに対して基準信号を送信する。【００３５】
例えば、ＣＤ４は、マスタとして他のＣＤ４ａ、４ｂと接続されている場合には、発振器３が生成した基準信号を取得し、取得した基準信号を１／Ｎ（Ｎは、１よりも大きい数とする）の周波数を有する分周信号に分周する。そして、ＣＤ４は、他のＣＤ４ａ、４ｂに対して分周信号を最小のスキューで供給する。また、ＣＤ４は、他のＣＤ４ａ、４ｂに対して送信された分周信号のレイテンシを考慮したタイミングで、分周信号をＣＰＵ１０が有する同期制御機構１７、およびＣＰＵ１８が有する同期制御機構２５へ送信する。【００３６】
一方、ＣＤ４ａは、ＣＤ４から分周信号を受信した場合には、受信した信号をＣＰＵ１０ａが有する同期制御機構１７ａ、および、ＣＰＵ１８ａが有する同期制御機構２５ａに供給する。また、ＣＤ４ｂも同様に、ＣＤ４から分周信号を受信した場合には、受信した信号を同期制御機構１７ｂ、２５ｂに供給する。なお、各ＣＤ４〜４ｂは、それぞれがマスタとして動作することも可能であり、並列計算機システム１の構成等により、任意のＣＤをマスタとすることができる。【００３７】
なお、ＣＤ４〜４ｂが基準信号を分周する方法としては、任意の分周方法を適用することができる。例えば、ＣＤ４〜４ｂは、同期カウンタ等の分周器を用いて、基準信号を分周し、分周した基準信号、すなわち、分周信号を生成することとしてもよい。このように、各ＣＤ４〜４ｂは、基準信号のＮ倍の周期を有する分周信号を同じ位相を保つように調整しながら各同期制御機構１７〜１７ｂ、２５〜２５ｂに供給する。【００３８】
ＣＰＵ１０は、自身に割当てられた処理を実行する演算処理装置である。また、ＣＰＵ１０は、各ＳＴＩＣＫレジスタ１２、１３、１５、１６に格納された値を他のＣＰＵが有する各ＳＴＩＣＫレジスタと同期させる。そして、ＣＰＵ１０は、ＳＴＩＣＫレジスタ１２、１３、１５、１６に格納された値に従って、処理を実行することで、他のＣＰＵ１０ａ、１０ｂ、１８〜１８ｂと同期して処理を実行する。【００３９】
同期制御機構１７は、図１中の（Ｋ）に示す経路を介して、ＣＤ４から分周信号を受信する。また、同期制御機構１７は、受信した分周信号をＮ倍に逓倍した制御信号を生成するとともに、分周信号の立ち上がり、または、立下りからの経過時間を監視する。また、同期制御機構１７は、ＣＰＵ１０が実行するアプリケーションが、ＣＰＵ１０が実行する処理の他のＣＰＵ１０ａ、１０ｂ、１８〜１８ｂが実行する処理との同期を要求する同期要求を発行した場合には、以下の処理を実行する。【００４０】
すなわち、同期制御機構１７は、図１中（Ｍ）に示す経路を介して、自身を含めた各ＣＰＵ１０〜１０ｂ、１８〜１８ｂに対して、同期要求を格納した制御パケットをブロードキャスト送信する。また、同期制御機構１７は、図１中（Ｎ）に示す経路を介して、同期要求を格納した制御パケットを受信した場合には、以下の処理を実行する。すなわち、同期制御機構１７は、ＣＤ４から受信した分周信号が示すタイミングに従って、図１中（Ｏ）に示す経路を介し、各ＳＴＩＣＫレジスタ１２、１３、１５、１６へ制御信号を供給する。【００４１】
以下、ＣＰＵ１０が実行する処理について、詳細に説明する。図２は、実施例１に係るＣＰＵの一例を説明するための図である。なお、図２中（Ｋ）、（Ｍ）、（Ｎ）、（Ｏ）に示す経路は、図１中の（Ｋ）、（Ｍ）、（Ｎ）、（Ｏ）に示す経路と対応する。また、図２に示す例では、構成単位２は、各ＣＰＵ１０、１８の間の通信を制御するシステム制御部であるＳＣＦ（System  Control  Facility）５を有するものとする。【００４２】
図２に示す例では、ＣＰＵ１０は、コア１１、コア１４、ＳＸ（外部接続ユニット：Secondary  Cache  and  External  Access  Unit）１０１、Ｓｅｒｉａｌ  ＩＯ（Input  Output）１０２を有する。コア１１は、ＩＵ（命令制御ユニット：Instruction  Control  Unit）１１０を有し、ストランドＴ１１１にＳＴＩＣＫレジスタ１２を有し、ストランドＴ１１２にＳＴＩＣＫレジスタ１３を有する。また、Ｓｅｒｉａｌ  ＩＯは、トランザクション層、データリンク層、物理層を介し、ＸＢ２６との間でシリアルリンクによるデータの送受信を行う入出力装置である。【００４３】
コア１４も同様に、ＩＵ１４０、ストランドＴ１４１にＳＴＩＣＫレジスタ１５を有し、ストランドＴ１４２にＳＴＩＣＫレジスタ１６を有する。また、ＳＸ１０１は、アービタ１０３、同期制御機構１７を有する。なお、以下の説明においては、コア１４は、コア１１と同様の処理を実行するものとして、詳細な説明を省略する。【００４４】
ＩＵ１１０は、アービタ１０３からＳＴＩＣＫレジスタ１２またはＳＴＩＣＫレジスタ１３の読み出し要求を受信した場合には、ＳＴＩＣＫレジスタ１２またはＳＴＩＣＫレジスタ１３に格納されている値の読み出しを行う。そして、ＩＵ１１０は、読み出した値をアービタ１０３へ送信する。また、ＩＯ１１０は、アービタ１０３から、レジスタの書き込み要求とともに書き込む値を受信した場合には、受信した値をＳＴＩＣＫレジスタ１２またはＳＴＩＣＫレジスタ１３に書き込む。【００４５】
アービタ１０３は、ＣＰＵ１０が実行しているプログラムがＳＩＴＣＫレジスタ１２またはＳＴＩＣＫレジスタ１３に格納された値の読み出しを要求した場合には、ＩＵ１１０に対してレジスタの読み出し要求を送信する。また、アービタ１０３は、ＣＰＵ１０が実行しているプログラムがＳＴＩＣＫレジスタ１２またはＳＴＩＣＫレジスタ１３に格納されている値の更新を要求した場合には、ＩＵ１１０に対して、レジスタの書き込み要求とともに、書き込む値を送信する。【００４６】
なお、アービタ１０３は、ＩＵ１４０に対しても同様に、ＳＴＩＣＫレジスタ１３、１６に対する書き込み要求や読み出し要求を送信する。また、アービタ１０３は、ＣＰＵ１０が実行しているプログラムが各ＣＰＵ１０〜１０ｂ、１８〜１８ｂが実行する処理の同期を要求した場合には、同期要求を発行し、図２中（Ｌ）に示す経路を介して、同期制御機構１７へ送信する。【００４７】
同期制御機構１７は、図２中（Ｋ）に示す経路を介して、ＣＤ４から基準信号を１／Ｎの周波数に分周した分周信号を受信する。また、同期制御機構１７は、受信した分周信号をＮ倍に逓倍した制御信号を生成する。ここで、制御信号とは、各ＳＴＩＣＫレジスタ１２、１３、１５、１６に格納された値をカウントアップするタイミングを示す信号である。また、同期制御機構１７は、分周信号の立ち上がりまたは立下りを検出し、検出した立ち上がり又は立下りからの経過時間を監視する。【００４８】
そして、同期制御機構１７は、同期要求をアービタ１０３から受信し、かつ、監視した経過時間が「ＸＢＣ  Ｔｉｍｉｎｇ」となった場合には、図２中（Ｍ）に示す経路を介して、同期要求をＳｅｒｉａｌ  ＩＯ１０２へ送信する。また、同期制御機構１７は、図２中（Ｎ）に示す経路を介して、Ｓｅｒｉａｌ  ＩＯ１０２から同期要求を受信し、かつ、監視した経過時間が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、以下の処理を実行する。すなわち、同期制御機構１７は、図２中（Ｏ）に示す経路を介して、各ＳＴＩＣＫレジスタ１２、１３、１５、１６へ制御信号を供給することで、ＳＴＩＣＫレジスタに格納された値のカウントアップを行う。つまり、制御信号は、各ＳＴＩＣＫレジスタ１２、１３、１５、１６に格納された値をインクリメントする信号である。【００４９】
また、同期制御機構１７は、図２中（Ｐ）に示す経路を介して、「ＳＢＣ  Ｔｉｍｉｎｇ」となる経過時間、または、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となる経過時間を示す設定情報を受信する。このような場合には、同期制御機構１７は、「ＳＢＣ  Ｔｉｍｉｎｇ」となる経過時間、または、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となる経過時間を、受信した設定情報が示す経過時間に設定する。【００５０】
また、同期制御機構１７は、図２中（Ｑ）に示す経路を介して、受信した設定情報をＣＰＵ１８が有する同期制御機構２５に転送する。また、同期制御機構１７は、図２中（Ｒ）に示す経路を介して、制御信号を各ＳＴＩＣＫレジスタ１２、１３、１５、１６に供給しているか否かを示す信号をアービタ１０３に送信する。【００５１】
ＣＰＵ１８は、ＣＰＵ１０と同様に、コア１９、コア２２、ＳＸ１８１、Ｓｅｒｉａｌ  ＩＯ１８２を有する。なお、ＣＰＵ１８が有するコア１９、コア２２、ＳＸ１８１、Ｓｅｒｉａｌ  ＩＯ１８２は、それぞれ、ＣＰＵ１０が有するコア１１、コア１４、ＳＸ１０１、Ｓｅｒｉａｌ  ＩＯ１０２と同様の処理を実行するものとして、詳細な説明を省略する。【００５２】
次に、図３を用いて、同期制御機構１７の一例について説明する。図３は、実施例１に関わる同期制御機構の一例を説明するための図である。なお、図３中（Ｋ）、（Ｌ）、（Ｍ）、（Ｎ）、（Ｏ）に示す経路は、図２中（Ｋ）、（Ｌ）、（Ｍ）、（Ｎ）、（Ｏ）に示す経路と対応する。【００５３】
図３に示す例では、同期制御機構１７は、シンクロナイザ３０、アップエッジディテクタ３１、フェイズカウンタ３２、設定レジスタ３３ａ、比較器３３ｂ、設定レジスタ３４ａ、比較器３４ｂ、制御パケット送信部３５、制御パケット受信部３６、を有する。また、同期制御機構１７は、制御レジスタ３７、ｎパルス生成部５０、ＡＮＤゲート６０を有する。また、制御パケット送信部３５は、送信バッファ３５ａ、出力回路３５ｂ、エンコーダ３５ｃを有する。また、制御パケット受信部３６は、デコーダ３６ａ、受信バッファ３６ｂ、更新回路３６ｃを有する。【００５４】
また、ｎパルス生成部５０は、加算器５１、ピリオドレジスタ５２、除算器５３、サブピリオドレジスタ５４、サブフェイズカウンタ５５、第１コンパレータ５６、残余パルスカウンタ５７、第２コンパレータ５８、ＡＮＤゲート５９を有する。【００５５】
例えば、同期制御機構１７は、ＣＤ４が生成した分周信号を図３中（Ｋ）に示す経路から受信した場合には、受信した分周信号をシンクロナイザ３０に入力する。シンクロナイザ３０は、分周信号の位相とＣＰＵ１０のコアクロックとを同期させ、位相をコアクロックに同期させた分周信号をアップエッジディテクタ３１に入力する。【００５６】
アップエッジディテクタ３１は、シンクロナイザ３０から入力された分周信号の立ち上がりエッジを検出する。そして、アップエッジディテクタ３１は、分周信号の立ち上がりエッジを検出した場合には、フェイズカウンタ３２、ピリオドレジスタ５２、サブフェイズカウンタ５５、残余パルスカウンタ５７に、パルス信号を入力する。【００５７】
なお、図３に示す例においては、アップエッジディテクタ３１の代わりに、分周信号の立下りエッジを検出するダウンエッジディテクタを設置することとしてもよい。このようなダウンエッジディテクタは、分周信号の立下りエッジを検出した場合には、フェイズカウンタ３２、ピリオドレジスタ５２、サブフェイズカウンタ５５、残余パルスカウンタ５７に、パルス信号を入力する。【００５８】
フェイズカウンタ３２は、ＣＰＵ１０のコアクロックを監視し、コアクロックの周期の数を計数する。また、フェイズカウンタ３２は、アップエッジディテクタ３１が分周信号のアップエッジを検出する度に、計数していたコアクロックの周期の数を「０」にリセットする。つまり、フェイズカウンタ３２は、分周信号のアップエッジが検出されてからコアクロックが何周期したかを測定することで、分周信号のアップエッジが検出されてから経過した時間を計測する。【００５９】
設定レジスタ３３ａは、「ＸＢＣ  Ｔｉｍｉｎｇ」を設定するためのレジスタである。具体的には、設定レジスタ３３ａは、分周信号のアップエッジから「ＸＢＣ  Ｔｉｍｉｎｇ」までの時間を、コアクロックの周期単位で示した値が格納される。例えば、設定レジスタ３３ａは、分周信号のアップエッジからコアクロック「５」周期分の時間が経過したタイミングを「ＸＢＣ  Ｔｉｍｉｎｇ」とする場合には、値「５」が格納される。【００６０】
比較器３３ｂは、フェイズカウンタ３２が計数したコアクロックの周期の数と、設定レジスタ３３ａに格納された値とを比較する。そして、比較器３３ｂは、フェイズカウンタ３２が計数したコアクロックの周期の数と、設定レジスタ３３ａに格納された値とが一致した場合には、制御パケット送信部３５が有する出力回路３５ｂにイネーブル信号を送信する。つまり、比較器３３ｂは、フェイズカウンタ３２によって、分周信号のアップエッジから所定の時間が経過した場合には、「ＸＢＣ  Ｔｉｍｉｎｇ」であると判別し、出力回路３５ｂにイネーブル信号を出力する。【００６１】
設定レジスタ３４ａは、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」を設定するためのレジスタである。つまり、設定レジスタ３４ａは、設定レジスタ３３ａと同様に、分周信号のアップエッジから「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」までの時間を、コアクロックの周期単位で示した値が格納される。また、比較器３４ｂは、比較器３３ｂと同様に、フェイズカウンタ３２が計数したコアクロックの周期の数と、設定レジスタ３４ａに格納された値とを比較する。【００６２】
そして、比較器３３ｂは、フェイズカウンタ３２が計数したコアクロックの周期の数と、設定レジスタ３４ａに格納された値とが一致した場合には、制御パケット受信部３６が有する更新回路３６ｃにイネーブル信号を出力する。つまり、比較器３４ｂは、フェイズカウンタ３２によって、分周信号のアップエッジから所定の時間が経過した場合には、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」であると判別し、更新回路３６ｃにイネーブル信号を出力する。【００６３】
また、同期制御機構１７は、図３中（Ｌ）を介して、アービタ１０３から、アプリケーションが発行した同期要求を受信した場合には、受信した同期要求を送信バッファ３５ａに格納する。ここで、同期制御機構１７は、アプリケーションが各ＣＰＵ１０〜１０ｂ、１８〜１８ｂによる同期処理の開始を要求する場合には、アービタ１０３から「０」を示す同期要求を受信する。また、同期制御機構１７は、アプリケーションが各ＣＰＵ１０〜１０ｂ、１８〜１８ｂによる同期処理の停止を要求する場合には、アービタ１０３から「１」を示す同期要求を受信する。【００６４】
また、出力回路３５ｂは、比較器３３ｂからイネーブル信号を受信した場合には、送信バッファ３５ａに格納された同期要求をエンコーダ３５ｃに送信する。エンコーダ３５ｃは、出力回路３５ｂから同期要求を受信した場合には、同期要求を格納した制御パケットを生成し、生成したパケットを図３中（Ｍ）に示す経路を介してＸＢ２６に送信することで、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂにブロードキャスト送信する。つまり、制御パケット送信部３５は、同期要求が発行され、かつ、分周信号の立ち上がりから経過した時間「ＸＢＣ  Ｔｉｍｉｎｇ」となった場合には、同期要求を格納した制御パケットをブロードキャスト送信する。【００６５】
ここで、図４は、同期要求を格納した制御パケットの一例を説明するための図である。図４に示すように、エンコーダ３５ｃは、ＳＴＰ（Start  TLP  character)、ＳＥＱ＃（Sequence  Number）、ＶＣＩＤ（Virtual  Channel  ID）、Ｓ（Packet  Size）、ＤＩＤ（Destination  ID）が格納されたパケットを生成する。また、エンコード３５ｃは、ＰＩＤ（Partition  ID）、ＯＰＣ（Operation  Code）、ＲＱＩＤ（Request  ID）、Ｗ（Write  Data）、複数のＣＲＣ（Cyclic  Redundancy  Check）３〜０、ＥＮＤ（End  character）、ＰＡＤ（Padding  character）を格納した制御パケットを生成する。【００６６】
ここで、ＳＴＰには、ＴＬＰの開始を示すコードが格納される。また、ＳＥＱ＃には、パケットのシーケンス番号が格納される。またＶＩＣＤには、バーチャルチャネルＩＤを示す情報が格納される。また、Ｓには、パケットのサイズが格納される。また、ＤＩＤには、ブロードキャストを示す情報、または、送り先のＣＰＵの番号が格納される。ＰＩＤには、パーティションＩＤが格納される。また、ＲＱＩＤには、リクエストＩＤが格納される。各ＣＲＣには、巡回冗長検査のための信号が格納される。また、ＥＮＤにはＴＬＰの終了を示すコードが格納される。また、ＰＡＤには、パケットの端数を埋めるためのコードが格納される。【００６７】
ここで、Ｗには、ＳＴＩＣＫの操作内容を示す情報が格納される。すなわち、制御パケット送信部３５は、図４に示すパケットのＷの領域に「１」を格納した場合には、各ＣＰＵ１２、１３、１５、１６に同期の停止を要求し、「０」を格納した場合には、各ＣＰＵ１２、１３、１５、１６に同期の開始を要求する。【００６８】
図３に戻って、同期制御機構１７は、図３中（Ｎ）に示す経路を介して、自身を含む各同期制御機構１７〜１７ｂ、２５〜２５ｂがブロードキャスト送信したパケットをＸＢ２６から受信した場合には、受信したパケットをデコーダ３６ａに送信する。デコーダ３６ａは、パケットを受信した場合には、受信したパケットをデコードし、パケットに格納されている同期要求を受信バッファ３６ｂに格納する。【００６９】
また、更新回路３６ｃは、比較器３４ｂからイネーブル信号を受信した場合には、受信バッファ３６ｂに格納されていた同期信号を制御レジスタ３７に格納する。つまり、更新回路３６ｃは、アプリケーションが各ＣＰＵ１０〜１０ｂ、１８〜１８ｂによる同期処理の開始を要求する場合には、制御レジスタ３７に「０」を格納する。また、更新回路３６ｃは、アプリケーションが各ＣＰＵ１０〜１０ｂ、１８〜１８ｂによる同期処理の停止を要求する場合には、制御レジスタ３７に「１」を格納する。つまり、制御パケット受信部３６は、同期要求を格納した制御パケットを受信し、かつ、分周信号の立ち上がりから経過した時間が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、同期信号を制御レジスタ３７に格納する。【００７０】
ここで、ＡＮＤゲート６０には、制御レジスタ３７に格納される値の反転信号が入力される。このため、ＡＮＤゲート６０は、制御レジスタ３７に「０」がセットされた場合には、後述するｎパルス発生部５０からの出力である制御信号を、図３中（Ｏ）に示す経路を介して、ＳＴＩＣＫレジスタ１２、１３、１５、１６に出力する。また、ＡＮＤゲート６０は、制御レジスタ３７に「１」が入力された場合には、制御信号の出力を停止する。このため、同期制御機構１７は、同期要求を格納した制御パケットを受信し、かつ、分周信号の立ち上がりから経過した時間が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となったタイミングで、制御信号の出力および停止を行うことができる。【００７１】
次にｎパルス生成部５０が有する各部５１〜５９について説明する。加算器５１は、フェイズカウンタ３２が計数したコアクロックの周期の数に１を加算した値を算出し、算出した値をピリオドレジスタ５２に送信する。つまり、加算器５１は、分周信号の位相をコアクロックの周期の数で示す値をピリオドレジスタ５２に送信する。【００７２】
ピリオドレジスタ５２は、アップエッジディテクタ３１が送信したパルス信号を受信したタイミングで、加算器５１が送信した値を保持する。ここで、アップエッジディテクタ３１は、分周信号の立ち上がりを検出した際に、ピリオドレジスタ３１にパルス信号を送信する。このため、ピリオドレジスタ５２は、分周信号の周期をコアクロックの周期の数で示した値を保持する。例えば、分周信号の周期がコアクロックのＴ倍である場合には、ピリオドレジスタ５２は、値「Ｔ」を保持することとなる。【００７３】
除算器５３は、ピリオドレジスタ５２に保持された値をＣＤ４が分周信号を生成した際に用いた分周比で除算した値を算出する。例えば、除算器５３は、ピリオドレジスタ５２に値「Ｔ」が保持され、ＣＤ４が基準信号の周期を「Ｎ」倍にした分周信号を生成した場合には、値「Ｔ／Ｎ」の商と剰余を出力する。つまり、除算器５３は、分周信号の周期を示す値を分周比で除算することによって、分周信号の元となる基準信号の周期を算出する。【００７４】
サブピリオドレジスタ５４は、後述するＡＮＤゲート５９が制御信号を出力したタイミングで、除算器５３から出力される値を保持する。つまり、サブピリオドレジスタ５４は、基準信号の周期をＣＰＵ１０のコアクロックの周期の数で示した値を保持する。換言すると、サブピリオドレジスタ５４は、制御信号の周期を示す値を保持する。例えば、制御信号の周期がＣＰＵ１０のコアクロックの周期の８倍であった場合には、サブピリオドレジスタ５４には、数値「８」が格納される。【００７５】
サブフェイズカウンタ５５は、制御信号の位相をＣＰＵ１０のコアクロックの周期の数で示すカウンタである。具体的には、サブフェイズカウンタ５５は、後述する第２コンパレータ５８が出力するパルス信号に合わせて自身の値をインクリメントする。そして、サブフェイズカウンタ５５は、アップエッジディテクタ３１からパルス信号を受信した場合、または、カウントの値に１を加算した値がサブピリオドレジスタ５４の値と同じになった場合には、カウントした値を「０」にリセットする。つまり、サブフェイズカウンタ５５は、基準信号と同じ周期でカウントした値を「０」にリセットする。【００７６】
第１コンパレータ５６は、サブフェイズカウンタ５５の値が「０」の時に「１」の信号をＡＮＤゲート５９に出力するコンパレータである。つまり、第１コンパレータは、基準信号と同じ周期でパルス信号を出力する。【００７７】
残余パルスカウンタ５７は、制御信号として発生させるパルス信号の残余数を計数する。具体的には、残余パルスカウンタ５７は、アップエッジディテクタ３１からパルス信号を受信した際に予め定められた値「Ｎ」がセットされ、ＡＮＤゲート５９から制御信号が出力されるたびに、セットした値をデクリメントする。なお、残余パルスカウンタ５７は、アップエッジディテクタ３１からパルス信号を受信しておらず、かつ、制御信号を受信していない際は、自身の値を保持する。また、第２コンパレータ５８は、残余パルスカウンタ５７にセットされた値が「０」ではない時に「１」の信号を出力する。【００７８】
ＡＮＤゲート５９は、第１コンパレータ５６と第２コンパレータ５８とが「１」の信号を出力した際に、信号「１」を出力する。つまり、ＡＮＤゲート５９は、残余パルスカウンタ５７の値が「０」以外で、サブフェイズカウンタ５５の値が「０」の時に、コアクロック１サイクル分だけ「１」となる信号、すなわち、制御信号を出力する。【００７９】
ＡＮＤゲート６０は、制御レジスタ３７に「０」がセットされた場合には、図３中（Ｏ）に示す経路を介して、ＳＴＩＣＫレジスタ１２、１３、１５、１６へ制御信号を出力する。【００８０】
つまり、ｎパルス生成部５０は、ＣＤ４から受信した分周信号を補完し、分周前の基準信号と同じ周波数を有する制御信号を生成する。そして同期制御機構１７は、同期要求を受信し、かつ、フェイズカウンタ３２が示す分周信号の位相が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、ｎパルス生成部５０が生成した制御信号を各ＣＴＩＣＫレジスタ１２、１３、１５、１６へ出力する。このため、同期制御機構１７は、基準信号を分周した分周信号が示すタイミングに従って同期処理を開始した場合にも、各ＣＰＵ１１〜１８を適切に同期させることができる。【００８１】
なお、ｎパルス生成部４０は、比較的少数のＦＦ（Flip  Flop）のみで実現することができるため、コストが小さく、実装が容易である。また、ｎパルス生成部４０は、アナログ回路であるＰＬＬ（Phase  Locked  Loop：位相同期回路）と比較して、全てをデジタル論理回路で構成している。このため、ｎパルス生成部４０は、ＰＬＬでは追従が困難な大きな周波数変動に対しても、出力するパルスの数を誤ることなく、正常に動作することが可能である。なお、ｎパルス生成部４０は、通常のＰＬＬで実装を行うことも可能である。【００８２】
以下、図５ａを用いて、同期制御機構１７の一例について説明する。図５ａは、実施例１に係る同期制御機構の一例を説明するための図である。なお、図５ａに示す同期制御機構１７は、あくまで一例であり、同期制御機構１７が有する各部３０〜３７、５０〜６０は、同等の機能を有する回路等により置換することができる。【００８３】
なお、図５ａに示す例では、ＣＰＵ１０のコアクロックをｃｏｒｅ  ｃｌｋとし、ＣＤ４から供給される同期信号をｓｔｉｃｋ  ｓｙｎｃとし、アービター１０３を介してアプリケーションから入力される同期要求をｓｔｉｃｋ  ｃｔｌ  ｒｅｑとする。また、ｎパルス発生部５０が生成する制御信号をｓｔｉｃｋ  ｃｌｋとする。また、図５ａ中（Ｋ）〜（Ｏ）に示す経路は、図３に示した（Ｋ）〜（Ｏ）と同じ経路である。【００８４】
図５ａに示す例では、シンクロナイザ３０は、複数のＤ型フリップフロップ（以下、Ｄ−ＦＦと記載する）を用いて、ｃｏｒｅ  ｃｌｋと図５ａ中（Ｋ）に示す経路を介して取得したｓｔｉｃｋ  ｓｙｎｃ信号との位相をそろえる。アップエッジディテクタ３１は、ｃｏｒｅ  ｃｌｋをクロックとする２つのＤ−ＦＦを直列に接続し、前段のＤ−ＦＦの出力が「１」で後段のＤ−ＦＦの出力が「０」の際に、「１」を出力することで、ｓｔｉｃｋ  ｓｙｎｃのアップエッジを検出する。なお、以下の説明においては、アップエッジディテクタ３１の出力をｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅとする。なお、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅは、マルチプレクサＳ１に選択制御信号として入力される。そして、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅが「１」の際に、加算器５１から出力される信号がフェイズカウンタ３２にループバックされ、それ以外の場合には、「０」が入力される。【００８５】
フェイズカウンタ３２は、マルチプレクサＳ１からの信号を保持する。つまり、フェイズカウンタ３２に保持される値は、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅが「１」の際に０にリセットされ、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅが「０」の際には、加算器５１によってカウントアップされる。【００８６】
ピリオドレジスタ５２は、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅが「１」の時に、加算器５１の出力をラッチする。除算器５３は、あらかじめ設定されるｃｏｎｆｉｇ  ｒｅｇｉｓｔｅｒ＃０に格納される値「Ｎ」でピリオドレジスタ５２の出力を除算した値を出力する。比較器＃０は、レストパルスカウンタ５７の値が除算器が端子Ｒから出力する剰余の値以下であるときに「１」を出力し、サブピリオドレジスタ５４にピリオドレジスタの値を「Ｎ＋１」で除算した値をセットする信号を出力する。これは、ピリオドレジスタ５２の値がＮで割り切れない場合に、サブピリオドレジスタ５４に格納される値を補正するための信号である。【００８７】
加算器＃１は、除算器５３の端子Ｑから出力される商に１を加算し、マルチプレクサＳ２に入力する、マルチプレクサＳ２は、比較器＃０の出力を選択制御信号として加算器＃１、または、除算器５３が出力する商をサブピリオドレジスタ５４に入力する。つまり、マルチプレクサＳ２は、比較器＃０の出力を用いて、ピリオドレジスタ５２の値がＮで割り切れない場合に、サブピリオドレジスタ５４に格納される値を補正する。【００８８】
サブピリオドレジスタ５４は、マルチプレクサＳ２の出力を保持する。比較器＃１は、サブピリオドレジスタ５４に保持された値と、加算器＃２によって、サブフェイズカウンタ５５に保持された値に１を加算した値とを比較する。そして、比較器＃１は、サブピリオドレジスタ５４に保持された値とサブフェイズカウンタ５５に保持された値に１を加算した値とが、同じ値である場合には、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅとの論理和を取るｏｒゲートに「１」を出力する。【００８９】
なお、このｏｒゲートの出力は、マルチプレクサＳ３の論理和の選択制御信号となる。マルチプレクサＳ３は、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅが「１」の時、または、サブピリオドレジスタ５４に保持された値がサブフェイズカウンタ５５の値に１を加算した値とが同じ場合には、「０」をサブフェイズカウンタ５５に出力する。これ以外の場合には、マルチプレクサＳ３は、加算器＃２の出力、つまり、サブフェイズカウンタ５５の値に１を加算した値をサブフェイズカウンタ５５に入力する。サブフェイズカウンタ５５は、マルチプレクサＳ３の出力、つまり、制御信号の位相をＣＰＵ１０のコアクロックの周期の数で示す。【００９０】
加算器＃２は、サブフェイズカウンタ５５の出力に１を加算した値を比較器＃１とマルチプレクサＳ３に入力する。残余パルスカウンタ５７は、コンパレータＳ０により、ｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅ＝１で残余パルスカウンタ５７の値が１の時に「Ｎ」にセットされ、ｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋが「１」の時に、減算器＃０によってデクリメントされる。どちらでもない場合には、残余パルスカウンタ５７は、格納される値がホールドされる。【００９１】
ここで、コンパレータＳ０の選択制御信号には、ｃｏｒｅ  ｃｌｋとｓｔｉｃｋ  ｓｙｎｃ  ｕｐｅｄｇｅによって生成されたｒｅｓｔ  ｐｕｌｓｅ  ｃｏｕｎｔｅｒ  ｖａｌが入力される。このｒｅｓｕｔ  ｐｕｌｓｅ  ｃｏｕｎｔｅｒ  ｖａｌは、ｎパルス発生部５０の動作開始直後に、周期が確定していないｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋを出力するのを防ぐ信号である。【００９２】
また、第1コンパレータ５６は、サブフェイズカウンタ５５の値が「０」の時に「１」をＡＮＤゲート５９に出力し、第２コンパレータ５８は、残余パルスカウンタ５７の値が「０」ではないときに、「１」をＡＮＤゲート５９に入力する。ＡＮＤゲート５９は、第１コンパレータ５６および第２コンパレータ５８の出力に応じた出力をＤ−ＦＦに入力し、ｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋを出力される。つまり、ｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋは、残余パルスカウンタ５７の値が「０」ではなく、かつ、サブフェイズカウンタ５５の値が「０」である場合に、コアクロック１つ分だけ「１」となる信号である。このように、ｎパルス発生部５０は、ｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋを生成し、図５ａ中（Ｏ）に示す経路を介して、生成したｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋをＳＴＩＣＫレジスタ１２、１３、１５、１６へ送信する。【００９３】
次に、「ＸＢＣ  Ｔｉｍｉｎｇ」および「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」の設定を行う処理について説明する。例えば、同期制御機構１７は、図５ａ中（Ｐ）に示す経路を介してＳＣＦ５からＳｃａｎ  Ｉｎ信号を取得する。同期制御機構１７は、Ｓｃａｎ  Ｉｎ信号によりｎパルス発生部５０が有するｃｏｎｆｉｇ  ｒｅｇｉｓｔｅｒ＃０に「Ｎ」をセットされる。【００９４】
また、同期制御機構１７は、Ｓｃａｎ  Ｉｎ信号により、設定レジスタ３３ａに「ＸＢＣ  Ｔｉｍｉｎｇ」とするフェイズカウンタ３２の値がセットされ、設定レジスタ３４ａに「ＲＥＧ−ＷＴ  Ｔｉｍｉｎｇ」となるフェイズカウンタ３２の値がセットされる。また、同期制御機構１７は、図５ａ中（Ｑ）に示す経路を介して、Ｓｃａｎ  Ｏｕｔ信号を同期制御機構２５に送信する。同期制御機構２５は、同様に、Ｓｃａｎ  Ｉｎ信号によって「ＸＢＣ  Ｔｉｍｉｎｇ」および「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」とが設定され、その後、Ｓｃａｎ  Ｏｕｔ信号をＳＣＦ５に送信する。【００９５】
比較器３３は、設定レジスタ３３ａに格納された値とフェイズカウンタ３２の値とが一致した場合には「１」を出力する。また、比較器３４は、設定レジスタ３４ａに格納された値とフェイズカウンタ３２との値とが一致した場合には「１」を出力する。【００９６】
次に、制御パケット送信部３５および制御パケット受信部３６の一例について説明する。なお、図５ａに示す例では、ここで、ｓｔｉｃｋ  ｃｔｌ  ｒｅｑが「１」の時に、制御パケットをブロードキャスト送信するものとする。例えば、制御パケット送信部３５は、アービタ１０３から、図５ａ中（Ｌ）を介して、ｓｔｉｃｋ  ｃｔｌ  ｒｅｑを取得し、ｓｔｉｃｋ  ｃｔｌ  ｒｅｑの値を送信バッファ３５ａに格納する。【００９７】
また、送信バッファ３５ａに格納された値は、比較器３３が設定レジスタ３３ａに格納された値とフェイズカウンタ３２の値とが一致すると判別した場合には、スリーステートバッファである出力回路３５ｂによって、エンコーダ３５ｃへ送信される。つまり、送信バッファ３５ａに格納された値は、比較器３３が「１」を出力した際、つまり、「ＸＢＣ  Ｔｉｍｉｎｇ」の際に制御パケットに格納され、図５ａ中（Ｍ）に示す経路を介して、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂへブロードキャスト送信される。【００９８】
また、制御パケット受信部３６が有するデコーダ３６ａは、図５ａ中（Ｎ）に示す経路から制御パケットを受信し、受信したパケットのうちＷに格納されているＳＴＩＣＫの操作内容を示す情報を取得する。具体的には、デコーダ３６ａは、ＳＴＩＣＫの同期開始を示す「０」、または、ＳＴＩＣＫの同期停止を示す「１」を取得する。そして、デコーダ３６ａは、パケットを受信したことを示すｐａｃｋｅｔ  ｖａｌｉｄと、ｐａｃｋｅｔ  ｄａｔａである「０」または「１」とを出力する。【００９９】
受信バッファ３６ｂは、デコーダが出力したｐａｃｋｅｔ  ｄａｔａである「０」または「１」を保持する。更新回路３６ｃは、スリーステートバッファであり、比較器３６ｃが「１」を出力した際、つまり、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」の際に、受信バッファ３６ｂに格納された値を制御レジスタ３７に格納する。ここで、制御レジスタ３７に格納される値は、ＡＮＤゲート６０に反転入力されている。このため、制御レジスタ３７に「０」が格納された場合には、ｓｔｉｃｋ  ｃｌｋがＳＴＩＣＫレジスタ１２、１３、１５、１６に供給され、制御レジスタ３７に「１」が格納された場合には、ｓｔｉｃｋ  ｃｌｋの供給が停止する。【０１００】
なお、図５ａに示す各設定レジスタ３３ａ、３４ａおよびｃｏｎｆｉｇ  ｒｅｇｉｓｔｅｒ＃０については、ＪＴＡＧ（Joint  Test  Action  Group）やＩ２Ｃ（Inter  Integrated  Circuit）等のＳＴＩＣＫに依存しない機構により設定される。図５ａに示す例では、ＪＴＡＧによるスキャン信号で設定される。【０１０１】
次に、図５ｂ〜図５ｄを用いて、図５ａに示した回路が出力する信号波形および各カウンタに格納される値の一例について説明する。図５ｂは、同期制御機構の動作の一例を説明するための図（１）である。図５ｃは、同期制御機構の動作の一例を説明するための図（２）である。図５ｄは、同期制御機構の動作の一例を説明するための図（３）である。なお、図５ｂ〜図５ｄには、同期制御機構の動作の一例を示す信号波形を３つに分割した波形を示す。また、図５ｂ〜図５ｄに示す例では、ｓｔｉｃｋ＿ｓｙｎｃの周期は、ＣＤ４〜４ｂが分周する前の基準信号であるｓｔｉｃｋ＿ｃｌｋの周期の４倍とし、Ｎ＝４とした。なお、図５ｂ〜５ｄに示す数値は、各カウンタが計数し値および各レジスタに格納された値を１６進数で表した数値である。【０１０２】
図５ｂに示すように、ｓｔｉｃｋ＿ｃｌｋの４倍の周期を有するｓｔｉｃｋ＿ｓｙｎｃが出力されると、ｓｔｉｃｋ＿ｓｙｎｃ＿ｕｐｅｄｇｅが出力され、ｐｈａｓｅ＿ｃｏｕｎｔｅｒの値がリセットされる。また、ｓｔｉｃｋ＿ｓｙｎｃ＿ｕｐｅｄｇｅをトリガとして、ｐｅｒｉｏｄ＿ｒｅｇｉｓｔｅｒ５２には、ｐｈａｓｅ＿ｃｏｕｎｔｅｒの直前の値に「１」を加算した値が格納され、ｓｕｂ＿ｐｈａｓｅ＿ｃｏｕｎｔｅｒには、「０」が格納される。【０１０３】
次に、図５ｃに示すように、次のｓｔｉｃ＿ｓｙｎｃ＿ｕｐｅｄｇｅが検出されると、ｐｅｒｉｏｄ＿ｒｅｇｉｓｔｅｒには１６進数で「２０」（１０進数で「３２」）が格納され、ｒｅｓｔ＿ｐｕｌｓｅ＿ｃｏｕｎｔｅｒに１６進数で「４」が格納される。また、ｓｕｂ＿ｐｅｒｉｏｄ＿ｃｏｕｎｔｅｒには、１６進数で「８」が格納される結果、ｓｕｂ＿ｐｈａｓｅ＿ｃｏｕｎｔｅｒは、０〜７の値をカウントする。この結果、コアクロック８つ分の周期で、ｒｅｐｒｏｄｕｃｅｄ＿ｓｔｉｃｋ＿ｃｌｋが出力されることとなる。【０１０４】
また、ｎパルス発生部５０は、図５ｄに示すように、コアクロック８つ分の周期を有するｒｅｐｒｏｄｕｃｅｄ＿ｓｔｉｃｋ＿ｃｌｋを出力し続ける。そして、同期制御機構１７は、ｎパルス発生部５０が発生させたパルス信号を、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」で、各ＳＴＩＣＫレジスタ１２、１３、１５、１６に供給する。【０１０５】
次に、図６を用いて、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂが同期を開始するタイミングについて説明する。図６は、実施例１に係るＳＴＩＣＫレジスタのカウントを開始するタイミングを説明するためのタイムチャートである。図６に示す例では、図左側から右へ時間が進むものとする。また、図６には、基準信号の波形、図５ａ中（Ｋ）に示す経路から取得した分周された分周信号であるｓｔｉｃｋ＿ｓｙｎｃ、ｎパルス発生部が発生させたｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ＿ｃｌｋの波形を示す。また、図５ａ中（Ｌ）、（Ｍ）、（Ｏ）に示す経路を流れる信号の波形および各ＣＰＵ１０〜１０ｂ、１８〜１８ｂの各ＳＴＩＣＫレジスタに格納される値を示す。なお、図６に示す例では、矢印の点線が示すタイミングで各ＣＰＵ１０〜１８ｂがパケットを受信するものとし、各ＣＰＵ１０〜１８ｂが受信する信号の波形については、簡略化した。【０１０６】
例えば、図５ａ中（Ｌ）に示す経路を介して、図６中（Ｓ）に示すタイミングで、アプリケーションが同期要求を送信した場合には、次の「ＸＢＣ＿Ｔｉｍｉｎｇ」で制御パケットを各ＣＰＵ１０〜１０ｂ、１８〜１８ｂへブロードキャスト送信する。ここで、「ＸＢＣ＿Ｔｉｍｉｎｇ」は、ｓｔｙｃｋ＿ｓｙｎｃのアップエッジから、設定レジスタ３３ａに格納された数分のコアクロックの周期が経過したタイミングである。【０１０７】
ここで、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂ、各ＸＢ２６〜２６ｂ、バス７は、伝送レイテンシが一定しないシリアルリンクによって接続されている。このため、図６に示すように、各ＣＰＵ１０ａ、１０ｂ、１８〜１８ｂは、制御パケットをそれぞれ異なるタイミングで取得する。また、ＣＰＵ１０も、自身がブロードキャスト送信した制御パケットを、図５ａ中（Ｎ）に示す経路から取得する。【０１０８】
その後、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、「ＲＥＧ−ＷＲ＿Ｔｉｍｉｎｇ」で、ｒｅｐｒｏｄｕｃｅｄ＿ｓｔｉｃｋ＿ｃｌｋを出力を開始する。ここで、「ＲＥＧ−ＷＲ＿Ｔｉｍｉｎｇ」は、ｓｔｉｃｋ＿ｓｙｎｃのアップエッジから設定レジスタ３４ａに格納された数分のコアクロックの周期が経過したタイミングである。【０１０９】
このように、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、基準信号を分周した分周信号が示す「ＸＢＣ＿Ｔｉｍｉｎｇ」および「ＲＥＧ−ＷＴ＿Ｔｉｍｉｎｇ」に従って、制御パケットの送信およびｒｅｐｒｏｄｕｃｅｄ＿ｓｔｉｃｋ＿ｃｌｋの出力を行う。ここで、ｓｔｉｃｋ＿ｓｙｎｃは、基準信号のＮ倍の長い周期を有する。このため、ｓｔｉｃｋ＿ｓｙｎｃが示す「ＸＢＣ＿Ｔｉｍｉｎｇ」および「ＲＥＧ−ＷＴ＿Ｔｉｍｉｎｇ」は、基準信号が示す「ＸＢＣ＿Ｔｉｍｉｎｇ」および「ＲＥＧ−ＷＴ＿Ｔｉｍｉｎｇ」よりも間隔が長くなる。【０１１０】
この結果、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、伝送レイテンシのバラつきを吸収できるので、制御パケットをそれぞれ異なるタイミングで受信した場合にも、同時にｒｅｐｒｏｄｕｃｅｄ＿ｓｔｉｃｋ＿ｃｌｋの供給を開始することができる。この結果、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、各ＳＴＩＣＫレジスタに格納される値をそろえ、同期して処理を実行することができる。【０１１１】
［実施例１の効果］
上述したように、同期制御機構１７は、基準信号を低い周波数に分周した分周信号を受信する。また、同期制御機構１７は、ＣＰＵ１１が各ＣＰＵ１２〜１８と同期する場合には、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂを宛先とする同期要求を格納した制御パケットをブロードキャスト送信する。そして、同期制御機構１７は、自身、または、他の同期制御機構１７ａ、１７ｂ、２５〜２５ｂが送信した制御パケットを受信した場合には、受信した分周信号が示すタイミングに従って、同期制御を開始する。このため、同期制御機構１７は、伝送レイテンシが一定しない方式で各ＣＰＵ１０〜１０ｂ、１８〜１８ｂ間が接続されている場合にも、適切なタイミングで同期を開始させることができる。【０１１２】
つまり、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、基準信号よりも長い周期を有する分周信号にしたがって「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となるタイミングを判別し、判別したタイミングで同期制御を開始する。このため、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、同期要求の伝送レイテンシがばらつきに耐性を確保できる。【０１１３】
また、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、シリアルリンク方式のように同期要求の同時到達性が保証されていないような接続方法によって接続されている場合にも、各ＣＰＵ１１〜１８を適切に同期させることができる。また、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂは、同期要求を各ＣＰＵ１１〜１８に発行する機構を利用することで、各ＣＰＵ１１〜１８に対して、同時に任意の制御指示を送信することも可能である。【０１１４】
また、同期制御機構１７は、分周信号に基づいて、分周前の基準信号と同じ周波数を有する制御信号を生成するｎパルス生成部５０を有する。そして、同期制御機構１７は、同期要求を受信した場合には、分周信号が示すタイミングに従って、制御信号を各ＳＴＩＣＫレジスタ１２、１３、１５、１６に供給する。このため、同期制御機構１７は、処理を適切に同期させることができる。つまり、同期制御機構１７は、ＳＴＩＣＫレジスタ１２，１３，１５，１６に格納される値を適切に同期させるので、各ＣＰＵ１０、１８を適切に同期させることができる。【０１１５】
このように、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂには、最小のスキューで分周信号が入力され、各同期制御機構１７〜１７ｂ、２６〜２６ｂは、基準信号と同一の周波数を有する制御信号を生成し、各ＳＴＩＣＫレジスタに制御信号を出力する。このため、並列計算機システム１は、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂが実行する処理を適切に同期させることができる。
【実施例２】
【０１１６】
以下の実施例２では、図７を用いて、並列計算機システムの一例を説明する。図７は、実施例２に関わる並列計算機システムの一例を説明するための図である。なお、図７に示す例では、実施例１に係る並列計算機システム１が有する各部と同様の機能を発揮するものについては、同じ符号を付し、説明を省略する。図７に示すように、並列計算機システム１ａは、複数の構成単位２ｃ〜２ｅと、複数のバス７、７ａを有する。なお、構成単位２ｄ、２ｅは、構成単位２ｃと同様の機能を発揮するものとして、説明を省略する。【０１１７】
構成単位２ｃは、発振器３、ＣＤ４、ＣＰＵ１０ｃ、ＣＰＵ１８ｃ、ＸＢ２６ｃ、ＸＢ２６ｄを有する。ＣＰＵ１０ｃは、ＸＢ２６ｃを介してバス７に接続されており、ＣＰＵ１８ｃは、ＸＢ２６ｄを介してバス２７に接続されているものとする。なお、ＣＰＵ１０ｃ、ＸＢ２６ｃ、バス７は、シリアルリンクで接続されているものとする。また、ＣＰＵ１８ｃ、ＸＢ２６ｄ、バス７ａは、シリアルリンクで接続されているものとする。【０１１８】
バス７は、ＸＢ２６ｃ、２６ｅ、２６ｇを介して、ＣＰＵ１０ｃ、１０ｄ、１０ｅを接続するバスである。また、バス７ａは、ＸＢ２６ｄ、２６ｆ、２６ｈを介して、ＣＰＵ１８ｃ、１８ｄ、１８ｅを接続するバスである。また、構成単位２ｃが有するＣＰＵ１０ｃ、１８ｃは、相互に接続されている。【０１１９】
つまり、並列計算機システム１ａにおいては、各構成単位２ｃ〜２ｅが有する２つのＣＰＵを、それぞれ別のグループとし、各グループを別系統のバスが接続する。そして、各グループのＣＰＵのうち、ＣＰＵ１０ｃ〜１０ｅがバス７により接続され、ＣＰＵ１８ｃ〜１８ｅがバス７ａを介してそれぞれ接続されている。【０１２０】
各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅは、同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅを有する。なお、以下の説明においては、同期制御機構１７ｄ、１７ｅ、２５ｃ〜２５ｅは、同期制御機構１７ｃと同様の処理を実行するものとして、説明を省略する。また、ＸＢ２６ｃ〜２６ｈについては、実施例１に係るＸＢ２６と同様の機能を発揮するものとして、説明を省略する。【０１２１】
同期制御機構１７ｃは、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが実行する処理を同期させる場合には、図７中（Ｔ）に示す経路を介して、同期制御機構２５ｃに同期要求を格納した制御パケットを送信する。その後、同期制御機構１７ｃは、図７中（Ｕ）に示す経路を介して、制御パケットを同期制御機構２５ｃから受信した場合、又は、自身が制御パケットを送信してから所定の時間が経過した場合には、以下の処理を実行する。すなわち、同期制御機構１７ｃは、バス７に接続されている各ＣＰＵ１０ｃ〜１０ｅに対して、同期要求を格納した制御パケットをブロードキャスト送信する。【０１２２】
ここで、同期制御機構２５ｃは、同期制御機構１７ｃから同期要求を格納した制御パケットを受信した場合には、以下の処理を実行する。すなわち、同期制御機構２５ｃは、同期制御機構１７ｃが各ＣＰＵ１０ｃ〜１０ｅに制御パケットをブロードキャスト送信するのと同時に、ＣＰＵ１８ｃ〜１８ｅに制御パケットをブロードキャスト送信する。【０１２３】
その後、各同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、ブロードキャスト送信された制御パケットを受信する。そして、各同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、分周信号のアップエッジから所定の時間が経過した「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」で各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが有する各ＳＴＩＣＫレジスタに対して、制御信号を供給する。【０１２４】
つまり、同期制御機構１７ｃは、自身と同じ構成単位２ｃが有する他の同期制御機構２５ｃと同期し、その後、バス７に接続された各ＣＰＵ１０ｃ〜１０ｅに対して、制御パケットをブロードキャスト送信する。また、同期制御機構１７ｃは、同期制御機構２５ｃから制御パケットを受信した場合にも、バス７に接続された各ＣＰＵ１０ｃ〜１０ｅに対して、制御パケットをブロードキャスト送信する。【０１２５】
このように、同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが異なるバスに接続されている場合には、自身を有するＣＰＵとは異なるバスに接続されたＣＰＵの同期制御機構に同期要求を送信する。そして、同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、自身を有するＣＰＵと同じバスに接続されたＣＰＵに同期要求を送信する。このように、同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅに対して、段階的に同期要求を送信する。【０１２６】
その後、各同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、分周信号のアップエッジから所定の時間が経過した「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」で、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが有する各ＳＴＩＣＫレジスタに同期信号を出力する。このため、並列計算機システム１ａは、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが実行する処理を同期させることができる。【０１２７】
図８は、実施例２に係るＣＰＵの一例を説明するための図である。なお、図８に示す各部のうち、図２に示す各部と同一の符号を付すものについては、実施例１に係る各部と同様の処理を実行するものとして、説明を省略する。なお、図８中（Ｋ）〜（Ｒ）に示す経路は、図２中（Ｋ）〜（Ｒ）に示す経路と同様の経路であるものとし、詳しい説明を省略する。【０１２８】
同期制御機構１７ａは、アービタ１０３を介して、アプリケーションが同期の要求を発行した場合には、同期要求を格納した制御パケットを、図８中の（Ｔ）に示す経路を介して、同期制御機構２５ｃへ送信する。また、同期制御機構１７ａは、アプリケーションが発行した同期の要求を同期制御機構２５ｃが取得し、同期制御機構２５ｃが制御パケットを送信した場合には、図８に示す経路（Ｕ）を介して、制御パケットを受信する。【０１２９】
そして、同期制御機構１７ａは、自身が制御パケットを送信してから一定期間が経過した際、または、同期制御機構２５ｃが送信した制御パケットを受信した場合には、バス７に接続されている各ＣＰＵ１０ｃ〜１０ｅに対して、制御パケットをブロードキャスト送信する。その後、同期制御機構１７ｃは、実施例１に係る同期制御機構１７と同様に、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」で、各ＳＴＩＣＫレジスタ１２、１３、１５、１６に、制御信号を供給する。【０１３０】
次に、図９を用いて、同期制御機構１７ｃについて説明する。図９は、実施例２に係る同期制御機構を説明するための図である。なお、図９中（Ｋ）〜（Ｏ）に示す経路は、図３に示す（Ｋ）〜（Ｏ）と同様の経路であるものとする。また、図９中（Ｔ）、（Ｕ）に示す経路は、図８中（Ｔ）、（Ｕ）に示す経路である。また、図９に示す各部のうち、図３と同様の処理を実行するものについては、同一の符号を付すものとし、説明を省略する。【０１３１】
図９に示すように、同期制御機構１７ｃは、シンクロナイザ３０、アップエッジディテクタ３１、フェイズカウンタ３２、比較器３３、設定レジスタ３３ａ、比較器３４、設定レジスタ３４ａ、制御パケット送信部３５ｄ、制御パケット受信部３６ｄを有する。また、同期制御機構１７ｃは、制御レジスタ３７、比較器３８、設定レジスタ３８ａ、遅延回路３９、ｎパルス生成部５０、ＡＮＤゲート６０を有する。【０１３２】
制御パケット送信部３５ｄは、第１送信バッファ３５ｅ、出力回路３５ｆ、エンコーダ３５ｇ、第２送信バッファ３５ｈ、出力回路３５ｉ、エンコーダ３５ｊを有する。また、制御パケット受信部３６ｄは、デコーダ３６ｅ、第１受信バッファ３６ｆ、デコーダ３６ｇ、第２受信バッファ３６ｈ、更新回路３６ｉを有する。【０１３３】
また、第１送信バッファ３５ｅ、第２送信バッファ３５は、図３に示す送信バッファ３５ａと、出力回路３５ｆおよび出力回路３５ｉは、出力回路３５ｂと、エンコーダ３５ｇおよびエンコーダ３５ｊは、エンコーダ３５ｃと同様の機能を発揮するものとする。また、デコーダ３６ｅおよびデコーダ３６ｇは、デコーダ３６ａと、第１受信バッファ３６ｆおよび第２受信バッファ３６ｈは、受信バッファ３６ｂと、更新回路３６ｉは、更新回路３６ｃと同様の機能を発揮するものとする。【０１３４】
なお、比較器３３の出力は、出力回路３５ｉに対して入力され、比較器３４からの出力は、更新回路３６ｉに対して入力され、比較器３８の出力は、出力回路３５ｆに対して入力されるものとする。また、設定レジスタ３３ａには、実施例１と同様「ＸＢＣ  Ｔｉｍｉｎｇ」が分周信号のアップエッジからコアクロックの周期でいくつ分であるかを示す数値が格納される。また、設定レジスタ３４ａには、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」が分周信号のアップエッジからコアクロックの周期でいくつ分であるかを示す数値が格納される。【０１３５】
また、同期制御機構１７ｃは、ＣＰＵ１０ｃが実行するアプリケーションが同期要求を発行した場合には、図９中（Ｌ）に示す経路から、同期要求を受信し、同期要求を格納した制御パケットを同期制御機構２５ｃへ送信する。以下の説明においては、同期制御機構１７ｃが、自身とは異なるバスに接続される同期制御機構２５ｃへ制御パケットを送信するタイミングを「ＳＢＣ  Ｔｉｍｉｎｇ」と記載する。【０１３６】
つまり、設定レジスタ３８ａには、「ＳＢＣ  Ｔｉｍｉｎｇ」が分周信号のアップエッジからコアクロックの周期単位でいくつ分かを示す値が格納される。そして、比較器３８は、フェイズカウンタ３２の値が設定レジスタ３８ａの値と一致した場合には、出力回路３５ｆに対して信号を出力する。出力回路３５ｆは、比較器３８から信号を受信した場合、つまり、「ＳＢＣ  Ｔｉｍｉｎｇ」となった場合には、第１送信バッファ３５ｅに格納された同期信号をエンコーダ３５ｇに出力する。【０１３７】
エンコーダ３５ｇは、受信した同期信号を格納した制御パケットを生成し、生成した制御パケットを、図９中（Ｔ）に示す経路を介して、同期制御機構３５ｃへ送信する。また、エンコーダ３５ｇは、生成したパケットを遅延回路３９にも送信する。なお、エンコーダ３５ｇが生成するパケットは、実施例１に係るエンコーダ３５ｃが生成するパケットと同様のパケットである。また、遅延回路３９は、エンコーダ３５ｇが生成した制御パケットを受信した場合には、所定の時間経過後、受信した制御パケットを出力する。【０１３８】
また、同期制御機構１７ｃは、図９中（Ｕ）に示す経路を介して、同期制御機構２５ｃが送信した制御パケット、または、遅延回路３９が出力した制御パケットを、制御パケット受信部３６ｄに伝達する。制御パケット受信部３６ｄは、実施例１に係る制御パケット受信部３６と同様に、制御パケットをデコーダ３６ｅでデコードし、同期要求を第１受信バッファ３６ｆに格納する。また、制御パケット受信部３６は、第１受信バッファ３６に格納された同期要求を制御パケット送信部３５ｄの第２送信バッファ３５ｈに送信する。【０１３９】
制御パケット送信部３５ｄは、第２送信バッファ３５ｈが同期要求を受信し、かつ、出力回路３５ｉが比較器３３から信号を受信した場合、つまり、「ＸＢＣ  Ｔｉｍｉｎｇ」となった場合には、以下の処理を実行する。すなわち、制御パケット送信部３５ｄは、エンコーダ３５ｊを用いて、第２送信バッファ３５ｈに格納された同期要求を格納した制御パケットを生成する。そして、制御パケット送信部３５ｄは、図９中（Ｍ）に示す経路を介して、生成した制御パケットを各ＣＰＵ１０ｃ〜１０ｅにブロードキャスト送信する。【０１４０】
また、同期制御機構１７ｃは、ＸＢ２６ｃから自身がブロードキャスト送信した制御パケット、または、他の同期制御機構２６ｅ、２６ｇがブロードキャスト送信した制御パケットを受信した場合には、図９中（Ｎ）に示す経路を介して、制御パケットを受信する。また、同期制御機構１７ｃは、受信した制御パケットを、制御パケット受信部３６ｄのデコーダ３６ｇでデコードし、格納されていた同期要求を第２受信バッファ３６ｈに格納する。ここで、更新回路３６ｉは、実施例１に係る更新回路３６ｃと同様に、比較器３４から信号を受信した場合、つまり、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、第２受信バッファ３６ｈに格納された同期要求を制御レジスタ３７に格納する。【０１４１】
次に、図１０を用いて、実施例２に係る同期制御装置１７ｃの一例について説明する。図１０は、実施例２に係る同期制御機構の一例を説明するための図である。なお、図１０に示す同期制御機構１７ｃは、あくまで一例であり、同期制御機構１７ｃが有する各部３０〜３８ａ、５０〜６０は、同等の機能を有する回路等により置換することができる。【０１４２】
なお、図１０に示す同期制御機構１７ｃは、図５ａに示す同期制御機構１７に、比較器３８、設定レジスタ３８ａ、遅延回路３９を追加し、制御パケット送信部３５を制御パケット３５ｄに、制御パケット受信部３６を制御パケット受信部３６ｄとしたものである。【０１４３】
図１０に示すように、第一送信バッファ３５ｅは、図１０中（Ｌ）に示す経路を介して、アービタ１０３からアプリケーションが発行したｓｔｉｃｋ  ｃｔｌ  ｒｅｑを受信し、受信したｓｔｉｃｋ  ｃｔｌ  ｒｅｑを保持する。出力回路３５ｆは、スリーステートバッファであり、比較器３８が「１」を出力した際に、第１送信バッファ３５ｅに格納されたｓｔｉｃｋ  ｃｔｌ  ｒｅｑをエンコーダ３５ｇに送信する。エンコーダ３５ｇは、ｓｔｉｃｋ  ｃｔｌ  ｒｅｑを格納した制御パケットを生成し、生成した制御パケットを、図１０中（Ｔ）に示す経路を介して、同期制御機構２５ｃへ送信する。【０１４４】
また、制御パケット受信部３６ｄのデコーダ３６ｅは、同期制御機構２５ｃから図１０中（Ｕ）に示す経路を介して制御パケットを受信した場合、または、遅延回路３９によって遅延した制御パケットを受信した場合には、以下の処理を実行する。すなわち、パケットデーコーダ３６ｅは、受信したパケットをデコードし、同期要求を抽出する。そして、抽出した同期要求を第１受信バッファ３６ｆに格納する。【０１４５】
また、第１受信バッファ３６ｆに格納された同期要求は、制御パケット送信部３５ｈが有する第２送信バッファ３５ｈに伝達され、格納される。次に、出力回路３５ｉは、出力回路３５ｂと同様に、「ＸＢＣ  Ｔｉｍｉｎｇ」で比較器３３から信号を受信すると、第２送信バッファ３５ｈに格納された同期要求をエンコーダ３５ｊに出力する。エンコーダ３５ｊは、エンコーダ３５ｃと同様に、同期要求を格納した制御パケットを生成し、生成した制御パケットを図１０中（Ｍ）に示す経路を介して、各ＣＰＵ１０ｃ〜１０ｅへブロードキャスト送信する。【０１４６】
また、制御パケット受信部３６ｄは、図１０中（Ｎ）に示す経路を介して、ブロードキャスト送信された制御パケットを受信した場合には、実施例１に係る制御パケット受信部３６と同様の処理を行う。つまり制御パケット受信部３６ｄは、デコーダ３６を用いて制御パケットから「０」または「１」の同期要求を抽出し、抽出した同期要求を第２受信バッファ３６ｈに格納する。そして、制御パケット受信部３６ｄは、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、第２受信バッファ３６に格納された値を制御レジスタ３７に保持させることで、ｓｔｉｃｋ  ｃｌｋの供給の開始や中止を行う。【０１４７】
次に、図１１を用いて、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが同期する処理について説明する。図１１は、実施例２に係るＳＴＩＣＫレジスタのカウントを開始するタイミングを説明するためのタイムチャートである。図１１に示す例では、図左側から右へ時間が進むものとする。また、図１１には、基準信号の波形、図１０中（Ｋ）に示す経路から取得した分周された分周信号であるｓｔｉｃｋ  ｓｙｎｃの波形、ｎパルス発生部が発生させたｒｅｐｏｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋの波形を示す。また、図１０中（Ｌ）、（Ｕ）、（Ｎ）、（Ｏ）に示す経路を流れる信号の波形、および各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅに格納される値を示す。なお、図１１に示す例では、矢印の点線が示すタイミングで各ＣＰＵ１０ｃ〜１８ｅがパケットを受信するものとし、各ＣＰＵ１０ｃ〜１８ｅが受信する信号の波形については、簡略化した。【０１４８】
例えば、同期制御機構１７ｃは、図１０中（Ｌ）に示す経路を介して、図１１中（Ｓ）に示すタイミングで、アプリケーションが同期要求を送信した場合には、次の「ＳＢＣ  Ｔｉｍｉｎｇ」で、同期制御機構２５ｃに制御パケットを送信する。なお、「ＳＢＣ  Ｔｉｍｉｎｇ」は、ｓｔｉｃｋ  ｓｙｎｃのアップエッジから設定レジスタ３８ａに格納された数分のコアクロックの周期が経過したタイミングである。【０１４９】
また、同期制御機構１７ｃは、遅延回路３９が出力した制御パケット、または、図１０中（Ｕ）を介して、同期制御機構２５ｃから制御パケットを受信した場合には、「ＸＢＣ  Ｔｉｍｉｎｇ」で制御パケットをＣＰＵ１０ｃ〜１０ｅへブロードキャスト送信する。ここで、同期制御機構２５ｃは、同期制御機構１７ｃと同じ「ＸＢＣ  Ｔｉｍｉｎｇ」で、制御パケットをＣＰＵ１８ｃ〜１８ｅへブロードキャスト送信する。【０１５０】
その後、各同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、ブロードキャスト送信した制御パケットを受信し、次の「ＲＥＧ−ＷＴ  Ｔｉｍｉｎｇ」で、ＳＴＩＣＫレジスタにｓｔｉｃｋ−ｃｌｋを出力する。このため、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅは、各ＳＴＩＣＫレジスタに格納される値がそろうため、同期して処理を実行することができる。【０１５１】
［実施例２の効果］
上述したように、同期制御機構１７ｃは、アプリケーションが同期要求を発行した場合には、構成単位２ａとして対応付けられたＣＰＵ１８ｃの同期制御機構２５ｃに同期要求を送信する。そして、同期制御機構１７ｃは、同期要求を送信してから所定の時間が経過した場合、または、同期制御機構２５ｃから同期要求を受信した場合には、分周信号が示す「ＸＢＣ  Ｔｉｍｉｎｇ」で、制御パケットを、ＣＰＵ１０ｃ〜１０ｅへブロードキャスト送信する。【０１５２】
この際、同期制御機構２５ｃは、同期制御機構１７ｃが制御パケットをブロードキャスト送信したのと同様のタイミングで、ＣＰＵ１８ｃ〜１８ｅに制御パケットをブロードキャスト送信する。その後、同期制御機構１７ｃは、ブロードキャスト送信された制御パケットを受信した後に、分周信号のアップエッジから所定の時間が経過した「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、以下の処理を実行する。すなわち、同期制御機構１７ｃは、ＣＰＵ１０ｃのＳＴＩＣＫレジスタ１２、１３、１５、１６に制御信号を供給する。この結果、同期制御機構１７ｃは、各ＣＰＵ１０ｃ〜１０ｅとＣＰＵ１８ｃ〜１８ｅが異なるバスに接続されている場合にも、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが実行する処理を適切に同期させることができる。【０１５３】
また、同期制御機構１７ｃ〜１７ｅ、２５ｃ〜２５ｅは、基準信号よりも長い周期を有する分周信号のアップエッジから所定の時間が経過した「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となったタイミングで、各ＣＰＵ１１〜１８のＳＴＩＣＫレジスタに同期信号を出力する。このため、並列計算機システム１ａは、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅがシリアルリンク等の伝送レイテンシが一定しない方式で接続されている場合にも、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが実行する処理を適切に同期させることができる。【０１５４】
なお、同期制御機構１７ｃは、並列計算機システム１ａが図７に示す構成以外の構成を有する場合にも、各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅが実行する処理を適切に同期させることができる。すなわち、同期制御機構１７ｃは、１つのバスに接続された複数のＣＰＵを１つの組とし、自身が設置されたＣＰＵが異なる組のＣＰＵと接続されている場合には、この接続されているＣＰＵに対して同期要求を格納した制御パケットを送信する。【０１５５】
そして、同期制御機構１７ｃは、各組のＣＰＵに制御パケットを送信した後に、自身が設置されたＣＰＵの組に対して制御パケットをブロードキャスト送信する。このように、多段階で制御パケットを各ＣＰＵ１０ｃ〜１０ｅ、１８ｃ〜１８ｅへ送信することによって、同期制御機構１７ｃは、各ＣＰＵが実行する処理を適切に同期させることができる。
【実施例３】
【０１５６】
以下の実施例３では、複数の図を用いて、並列計算機システム１ｂの一例を説明する、図１２は、実施例３に関わる並列計算機システムの一例を説明するための図である。図１２に示すように、並列計算機システム１ｂは、複数の構成単位２ｆ〜２ｉ、５ｆ〜５ｉ、６ｆ〜６ｉ、７ｆ〜７ｉをｘ軸方向およびｙ軸方向の２次元のメッシュ状に接続したシステムである。【０１５７】
具体的には、構成単位２ｆ〜７ｆ、２ｇ〜７ｇ、２ｈ〜７ｈ、２ｉ〜７ｉがｘ軸方向に接続され、構成単位２ｆ〜２ｉ、５ｆ〜５ｉ、６ｆ〜６ｉ、７ｆ〜７ｉがｙ軸方向に接続されている。なお、図１２では省略したが、並列計算機システム１ｂは、メッシュ状に接続した複数の構成単位をさらに有する。なお、以下の説明においては、構成単位２ｆが実行する処理について説明し、他の構成単位２ｇ〜２ｉ、５ｆ〜５ｉ、６ｆ〜６ｉ、７ｆ〜７ｉは、構成単位２ｆと同様の処理を実行するものとして、説明を省略する。【０１５８】
図１３は、実施例３に係る並列計算機システムの一部を説明するための図である。なお、図１３には、ｘ軸方向に接続された構成単位２ｆ、５ｆ、７ｆが有する各部を示した。また、実施例１に係る各部と同様の機能を発揮するものについては、同じ符号を付し、以下の説明を省略する。また、図１３中（Ｋ）、（Ｏ）に示す経路は、図１中（Ｋ）、（Ｏ）に示す経路と同様の経路である。【０１５９】
構成単位２ｆは、実施例１に係る構成単位２と同様、発振器３、ＣＤ４、ＣＰＵ１０、ＣＰＵ１８およびＸＢ２６ｉを有する。また、ＸＢ２６ｉは、ＢＣ（broadcast）パイプライン機構６１を有する。図１３中（Ｖ）に示すように、ＣＤ４が生成する分周信号は、ＢＣパイプライン機構６１にも供給される。【０１６０】
同期制御機構１７ｆは、実施例１に係る同期制御機構１７と同様の処理を実行する。また、同期制御機構１７ｆは、分周信号のアップエッジから所定の時間が経過した「ＸＢＣ０  Ｔｉｍｉｎｇ」で、制御パケットをＢＣパイプライン機構６１へ送信する。ＢＣパイプライン機構６１は、図１３中（Ｗ）に示す経路を介して、同期制御機構１７ｆから制御パケットを受信する。【０１６１】
ここで、並列計算機システム１ｂが一定の規模よりも大きい場合には、分周信号のアップエッジから所定の時間が経過した「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となるまでの間に、各構成単位２ｆ〜７ｉが有するＣＰＵに制御パケットが行きわたらない場合がある。このため、ＢＣパイプライン機構６１は、制御パケットをＣＰＵ１０から受信した場合には、ＣＰＵ１０を有する構成単位２ｆとｘ軸方向に接続された各構成単位５ｆ〜７ｆとに対して、制御パケットをブロードキャスト送信する。【０１６２】
また、ＢＣパイプライン機構６１は、制御パケットをｘ軸方向の構成単位２ｆ、５ｆ〜７ｆにブロードキャスト送信してから一定時間が経過した場合、又は、構成単位５ｆ〜７ｆのいずれかが送信した制御パケットを受信した場合には、以下の処理を実行する。すなわち、ＢＣパイプライン機構５１は、ＣＰＵ１１を有する構成単位２ｂとｙ軸方向に接続された各構成単位２ｇ〜２ｅへ制御パケットをブロードキャスト送信する。【０１６３】
また、ＢＣパイプライン機構５１は、構成単位２ｆとｙ軸方向に接続された各構成単位２ｇ〜２ｅへ制御パケットを送信してから一定時間が経過した場合、または、各構成単位２ｇ〜２ｅから制御パケットを受信した場合は、以下の処理を実行する。つまり、ＢＣパイプライン機構５１は、図１３中（ｂ）に示す経路を介して、同期制御機構１７ｆに受信した制御パケットを送信する。また、ＢＣパイプライン機構５１は、同期制御機構２５に制御パケットを送信する。その後、同期制御機構１７ｆ、２５ｆは、ＢＣパイプライン機構５１から制御パケットを受信した場合には、分周信号が示す「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」で、同期信号を各ＳＴＩＣＫレジスタに供給する。【０１６４】
なお、上述した例では、ＣＰＵ１１が同期制御機構１７ｆ、２５ｆを有し、ＸＢ２６ｉがＢＣパイプライン機構６１を有するものとしたが、同期制御機構１７ｆにＢＣパイプライン機構５１の機能を集約することとしてもよい。また、ＢＣパイプライン機構６１の機能は、ＸＢ２６ｉ以外にも、任意の箇所に設けることとしても良い。【０１６５】
つぎに、図１４を用いて、ＢＣパイプライン機構６１が設置される位置について説明する。図１４は、実施例３に係る構成要素の一例を説明するための図である。なお、図１４に示す各部のうち、図２に示した各部と同様の機能を有するものについては、同一の符号を付し、以下の説明を省略する。また、図１４中（Ｋ）、（Ｏ）、（Ｖ）、（Ｗ）、（ｂ）は、図１３中（Ｋ）、（Ｏ）、（Ｖ）、（Ｗ）、（ｂ）と同じ経路である。図１４に示す例では、図１４中（Ｋ）、（Ｌ）、（Ｏ）〜（Ｒ）に示す経路を介して、図２中（Ｋ）、（Ｌ）、（Ｏ）〜（Ｒ）に示す経路と同様の経路である。【０１６６】
すなわち、同期制御機構１７ｆは、図１４中（Ｋ）、（Ｌ）、（Ｏ）〜（Ｒ）に示す経路を介して、実施例１に係る同期制御機構１７と同様の信号を送受信するものとし、以下の説明を省略する。また、同期制御機構１７ｆが「ＸＢＣ０  Ｔｉｍｉｎｇ」で送信した制御パケットは、図１４中（Ｗ）に示す経路を介して、ＢＣパイプライン機構６１に入力される。つまり、「ＸＢＣ０  Ｔｉｍｉｎｇ」とは、同期制御機構１７ｆは、制御パケットをＢＣパイプライン機構６１に格納するタイミングである。【０１６７】
ＢＣパイプライン機構６１は、図１４中の経路（Ｖ）を介してＣＤ４から分周信号を取得し、実施例１に係る同期制御機構１７と同様の処理を行うことにより、分周信号のアップエッジから経過した時間を計測している。また、ＢＣパイプライン機構６１は、同期制御機構１７ｆが「ＸＢＣ０  Ｔｉｍｉｎｇ」で送信した制御パケットを、図１４中（Ｗ）に示す経路を介して受信する。【０１６８】
そして、ＢＣパイプライン機構６１は、制御パケットを同期制御機構１７ｆから受信し、分周信号のアップエッジから予め定められた時間が経過したタイミングである「ＸＢＣ１  Ｔｉｍｉｎｇ」となった場合には、以下の処理を実行する。すなわち、ＢＣパイプライン機構６１は、図１４中（Ｘ）に示す経路を介して、受信した制御パケットを構成単位２ｆ、５ｆ〜７ｆへブロードキャスト送信する。つまり、「ＸＢＣ１  Ｔｉｍｉｎｇ」とは、制御パケットをｘ軸方向に接続された構成単位へ送信するタイミングである。【０１６９】
また、ＢＣパイプライン機構６１は、図１４中（Ｙ）に示す経路を介して、構成単位２ｆ、５ｆ〜７ｆにブロードキャスト送信された制御パケットを受信する。このような場合には、ＢＣパイプライン機構６１は、分周信号のアップエッジから予め定められた時間が経過したタイミングである「ＸＢＣ２  Ｔｉｍｉｎｇ」となった際に、以下の処理を実行ｓる。すなわち、ＢＣパイプライン機構６１は、図１４中（Ｚ）に示す経路を介して、ｙ軸方向に接続された各構成単位２ｆ〜２ｉへ制御パケットをブロードキャスト送信する。つまり、「ＸＢＣ２  Ｔｉｍｉｎｇ」とは、制御パケットをｙ軸方向に接続された構成単位へ送信するタイミングである。【０１７０】
また、ＢＣパイプライン機構６１は、図１４中（ａ）に示す経路を介して、各構成単位２ｆ〜２ｉへブロードキャスト送信された制御パケットを受信した場合には、以下の処理を実行する。すなわち、ＢＣパイプライン機構６１は、分周信号のアップエッジから予め定められた時間が経過したタイミングである「ＳＢＣ  Ｔｉｍｉｎｇ」となった際に、制御パケットを図１４中（ｂ）に示す経路を介して、同期制御機構１７ｆへ送信する。つまり、「ＳＢＣ  Ｔｉｍｉｎｇ」とは、制御パケットを同期制御機構１７ｆへ送信するタイミングである。【０１７１】
次に、図１５を用いて、実施例３に係る同期制御機構１７ｆについて説明する。図１５は、実施例３に係る同期制御機構について説明するための図である。なお、図１５に示す各部のうち、図３に示す各部と同様の機能を発揮するものについては、同一の符号を付し、説明を省略する。【０１７２】
設定レジスタ３３ｂは、「ＸＢＣ０  Ｔｉｍｉｎｇ」を設定するためのレジスタである。具体的には、設定レジスタ３３ａは、分周信号のアップエッジから「ＸＢＣ０  Ｔｉｍｉｎｇ」までの時間を、コアクロックの周期単位で示した値が格納される。つまり、同期制御機構１７ｆは、「ＸＢＣ  Ｔｉｍｉｎｇ」ではなく「ＸＢＣ０  Ｔｉｍｉｎｇ」で制御パケットをＸＢ２６ｉのＢＣパイプライン機構６１へ送信する。そして、同期制御機構１７ｆは、制御パケットをＸＢ２６ｉのＢＣパイプライン機構６１から受信した場合には、同期制御機構１７と同様に、「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」で、各ＳＴＩＣＫレジスタ１２、１３、１５、１６に対する制御信号の供給を開始する。【０１７３】
次に、図１６を用いて、ＢＣパイプライン機構６１が実行する処理について説明する。図１６は、実施例３に係るＢＣパイプライン機構を説明するための図である。なお、図１６中の（Ｘ）〜（Ｚ）、（ａ）、（ｂ）に示す経路は、図１５中（Ｘ）〜（Ｚ）、（ａ）、（ｂ）に示す経路であるものとする。【０１７４】
図１６に示す例では、ＢＣパイプライン機構６１は、シンクロナイザ６２、アップエッジディテクタ６３、フェイズカウンタ６４、比較器６５〜６７、設定バッファ６５ａ〜６７ａ、ＢＣ制御パケット受信部６８、ＢＣ制御パケット送信部６９を有する。また、ＢＣ制御パケット受信部６８は、複数のデコーダ６８ａ、６８ｃ、６８ｅと、第１受信バッファ６８ｂ、第２受信バッファ６８ｄ、第３受信バッファ６８ｆを有する。また、ＢＣ制御パケット送信部６９は、第１送信バッファ６９ａ、第２送信バッファ６９ｄ、第３送信バッファ６９ｇ、複数の出力回路６９ｂ、６９ｅ、６９ｈ、複数のエンコーダ６９ｃ、６９ｆ、６９ｉを有する。【０１７５】
なお、図１６に示すシンクロナイザ６２、アップエッジディテクタ６３、フェイズカウンタ６４は、図３に示すシンクロナイザ３０、アップエッジディテクタ３１、フェイズカウンタ３２と同様の処理を実行するものとして説明を省略する。また、設定バッファ６５ａには、分周信号のアップエッジからコアクロックの周期単位でいくつ分を「ＸＢＣ０  Ｔｉｍｉｎｇ」とするかを示す値が格納される。【０１７６】
また、設定バッファ６６ａには、分周信号のアップエッジからコアクロックの周期でいくつ分を「ＸＢＣ１  Ｔｉｍｉｎｇ」とするかを示す値が格納される。また、設定バッファ６７ａには、分周信号のアップエッジからコアクロックの周期単位でいくつ分を「ＸＢＣ２  Ｔｉｍｉｎｇ」とするかを示す値が格納される。【０１７７】
また、ＢＣ制御パケット受信部６８が有する各デコーダ６８ａ、６８ｂ、６８ｅは、それぞれ図３に示すデコーダ３６ａと同様の機能を発揮するものとして、説明を省略する。また、ＢＣ制御パケット送信部６９が有するエンコーダ６９ｃ、６９ｆ、６９ｉは、図３に示すエンコーダ３５ｃと同様の機能を発揮するものとして、説明を省略する。第１バッファ６８ａ、第２バッファ６８ｄ、第３バッファ６８ｆは、各デコーダ６８ａ、６８ｃ、６８ｅが制御パケットから取得した同期要求を記憶するバッファである。【０１７８】
第１送信バッファ６９ａ、第２送信バッファ６９ａ、第３送信バッファ６９ｇは、それぞれ、第１受信バッファ６８ｂ、第２受信バッファ６８ｄ、第３受信バッファ６８ｆに格納された制御パケットを受信し、記憶するバッファである。出力回路６９ｂは、比較器６５からの信号を受信した場合には、第１送信バッファ６９ａに格納されていた同期要求をエンコーダ６９ｃに出力する。出力回路６９ｅは、比較器６６からの信号を受信した場合には、第２送信バッファ６９ｄに格納されていた同期信号をエンコーダ６９ｆに格納する。出力回路６９ｈは、比較器６５からの信号を受信した場合には、第３送信バッファ６９ｇに格納されていた同期信号をエンコーダ６９ｉに格納する。【０１７９】
このようなＢＣパイプライン機構６１は、同期制御機構１７ｆから図１６中（Ｗ）に示す経路を介して制御パケットを受信する。そして、ＢＣパイプライン機構６１は、制御パケットをデコードし、制御パケットに格納された同期要求を取得する。そして、ＢＣパイプライン機構６１は、分周信号のアップエッジから経過した時間が「ＸＢＣ１  Ｔｉｍｉｎｇ」となった際に、以下の処理を実行する。すなわち、ＢＣパイプライン機構６１は、同期要求を格納した制御パケットを生成し、図１６中（Ｘ）に示す経路を介して、ｘ軸方向に接続された構成単位２ｆ、５ｆ〜７ｆへ制御パケットをブロードキャスト送信する。また、ＢＣパイプライン機構６１は、制御パケットを遅延回路３９に入力する。【０１８０】
また、ＢＣパイプライン機構６１は、ｘ軸方向にブロードキャスト送信された制御パケットを図１６中（Ｙ）に示す経路を介して受信した場合、または、制御パケットを遅延回路３９が制御パケットを出力した場合には、以下の処理を実行する。つまり、ＢＣパイプライン機構６１は、制御パケットから同期要求を取得し、分周信号のアップエッジから経過した時間が「ＸＢＣ２  Ｔｉｍｉｎｇ」となった際に、次の処理を実行する。すなわち、ＢＣパイプライン機構６１は、同期要求を格納した制御パケットを、図１６中（Ｚ）に示す経路を介して、ｙ軸方向の構成単位２ｆ〜２ｉにブロードキャスト送信する。また、ＢＣパイプライン機構６１は、制御パケットを遅延回路３９ａに入力する。【０１８１】
また、ＢＣパイプライン機構６１は、図１６中（ａ）に示す経路を会して、ｙ軸方向の構成単位２ｆ〜２ｉにブロードキャスト送信した制御パケットを受信した場合、または、遅延回路３９ａが制御パケットを出力した場合には、以下の処理を実行する。つまり、ＢＣパイプライン機構６１は、制御パケットから同期要求を取得し、分周信号のアップエッジから経過した時間が「ＳＢＣ  Ｔｉｍｉｎｇ」となった際に、次の処理を実行する。すなわち、ＢＣパイプライン機構６１は、同期要求を格納した制御パケットを図１６中（ｂ）に示す経路を介して、同期制御機構１７ｆに出力する。【０１８２】
この後、同期要求をＢＣパイプライン機構５１から受信した同期制御機構１７ｆは、分周信号のエッジから経過した時間が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、ｎパルス生成部４０が生成した同期信号を各ＳＴＩＣＫレジスタに出力する。【０１８３】
図１７は、ＢＣパイプライン機構の一例を説明するための図である。図１７に示すように、設定レジスタ６５ａ、６６ａ、６７ａに対しては、Ｓｃａｎ  ｉｎ信号により、それぞれ、「ＸＢＣ１  Ｔｉｍｉｎｇ」、「ＸＢＣ２  Ｔｉｍｉｎｇ」、「ＳＢＣ  Ｔｉｍｉｎｇ」となるタイミングを示す値が格納される。【０１８４】
比較器６５は、設定レジスタ６５ａに格納された値とフェイズカウンタ６４の値とを比較し、各値が一致した場合には、スリーステートバッファである出力回路６９ｂに信号を出力する。比較器６６は、設定レジスタ６６ａに格納された値とフェイズカウンタ６４の値とを比較し、各値が一致した場合には、スリーステートバッファである出力回路６９ｅに信号を出力する。比較器６７は、設定レジスタ６７ａに格納された値とフェイズカウンタ６４の値とを比較し、各値が一致した場合には、スリーステートバッファである出力回路６９ｈに信号を出力する。このように、ＢＣパイプライン機構６１は、図５ａに示す同期制御機構１７と同様の部品により実現可能であり、コストが小さく、実装が容易である。【０１８５】
次に、図１８〜２０を用いて、並列計算機システム１ｂが有するＣＰＵを同期させる処理について説明する。図１８は、同期制御機構が制御パケットをＢＣパイプライン機構に送信するタイミングを説明するタイムチャートである。なお、図１８には、基準信号、ｓｔｉｃｋ  ｃｙｎｃ、ｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋ、図１５中（Ｌ）に示す経路を流れる信号、図１６中（Ｗ）、（Ｘ）、（Ｙ）に示す経路を流れる信号を示す。また、図１８には、各ＢＣパイプライン機構６１〜６１ｂが制御パケットを受信するタイミングを示す。なお、図１８に示す例では、矢印の点線が示すタイミングで各ＣＰＵ１０およびＢＣパイプライン機構６１〜６１ｂがパケットを受信するものとし、各ＣＰＵ１０およびＢＣパイプライン機構６１〜６１ｂが受信する信号の波形については、簡略化した。【０１８６】
図１８に示す例では、ＣＰＵ１０が有する同期制御機構１７ｆは、図１８中（Ｃ）に示すタイミングで、アプリケーションから同期要求を受信した場合には、同期要求を格納した制御パケットを「ＸＢＣ０  Ｔｉｍｉｎｇ」で、ＢＣパイプライン機構６１に送信する。このため、ＢＣパイプライン機構６１は、図１８中（ｄ）に示すタイミングで、制御パケットを受信する。次に、ＢＣパイプライン機構６１は、図１８中（ｅ）に示すように、ｓｔｃｋ  ｓｙｎｃのアップエッジから経過した時間が「ＸＢＣ１  Ｔｉｍｉｎｇ」となっが際に、以下の処理を実行する。【０１８７】
すなわち、ＢＣパイプライン機構６１は、制御パケットをｘ軸方向の構成単位２ｆ、５ｆ〜７ｆが有するＢＣパイプライン機構６１〜６１ｂに制御パケットをブロードキャスト送信する。その後、ＢＣパイプライン機構６１は、図１８中（ｆ）に示すタイミングで、制御パケットを受信する。【０１８８】
図１９は、ＢＣパイプライン機構が制御パケットをブロードキャスト送信するタイミングを説明するためのタイムチャートである。図１９に示す例では、基準信号、図１６中（Ｖ）に示す経路から取得するｓｔｉｃｋ  ｓｙｎｃ、ｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋ、図１６中（Ｚ）に示す経路を流れる信号および図１６中（ａ）に示す経路を案がれる信号を示す。また、図１９に示す例では、ＢＣパイプライン機構６１〜６１ｂ、ＣＰＵ１０〜１０ｂ、ＣＰＵ１８〜１８ｂが制御パケットを受信するタイミングを示す。【０１８９】
また、図１９に示す例では、構成単位２ｇが有するＢＣパイプライン機構６１ｃ、構成単位２ｇが有するＣＰＵ１０ｆ〜１０ｈ、ＣＰＵ１８ｆ〜１８ｈが制御パケットを受信するタイミングを示す。また、図１９に示す例では、構成単位７ｉが有するＢＣパイプライン機構６１ｆ、ＣＰＵ１０ｉ〜１０ｋ、ＣＰＵ１８ｉ〜１８ｋが制御パケットを受信するタイミングを示す。なお、図１９に示す例では、矢印の点線が示すタイミングで各ＣＰＵ１０〜１０ｋ、および各ＢＣパイプライン機構６１〜６１ｆがパケットを受信するものとし、各ＣＰＵ１０〜１０ｋ、および各ＢＣパイプライン機構６１〜６１ｆが受信する信号の波形については、簡略化した。【０１９０】
図１９に示す例では、ＢＣパイプライン機構６１〜６１ｂは、分周信号のエッジから経過した時間が「ＸＢＣ２  Ｔｉｍｎｇ」となった場合には、図１９中（Ｇ）に示すように、図１６中（Ｚ）に示す経路を介して、ｙ軸方向の構成単位に制御パケットを送信する。すると、並列計算機システム１ｂが有する各構成単位２ｆ〜２ｉ、５ｆ〜７ｉに、制御パケットが行き渡ることとなる。その後、各ＢＣパイプライン機構６１〜６１ｆは、「ＳＢＣ  Ｔｉｍｉｎｇ」で、図１９中（ｈ）に示すように、図１６中（ｂ）に示す経路を介して、制御パケットを各構成単位２ｆ〜２ｉ、５ｆ〜７ｉが有するＣＰＵ１０〜１０ｋ、１８〜１８ｋへ送信する。【０１９１】
図２０は、同期制御機構がＳＴＩＣＫレジスタに同期信号を出力するタイミングを説明するためのタイムチャートである。図２０には、基準信号、図１５中（Ｋ）に示す経路から取得するｓｔｉｃｋ  ｓｙｎｃ、生成するｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｓｌｋ、図１５中（Ｏ）に示す経路から出力するｓｔｉｃｋ  ｓｌｋを示す。また、図２０には、各ＣＰＵ１０〜１０ｋ、１８〜１８ｋが有するＳＴＩＣＫレジスタに格納される値を示す。なお、図２０に示す例では、既に各ＣＰＵ１０〜１０ｋ、１８〜１８ｋが制御パケットを受信しているものとする。【０１９２】
図２０に示すように、並列計算機システム１ｂが有する各同期制御機構は、「ＲＥＧ  ＷＲ  Ｔｉｍｉｎｇ」で、制御パケットに格納されていた同期要求を制御レジスタ３７に格納する。このため、各ＣＰＵ１０〜１０ｋ、１８〜１８ｋは、ＳＴＩＣＫレジスタに対して、同時にｒｅｐｒｏｄｕｃｅｄ  ｓｔｉｃｋ  ｃｌｋの入力を開始する結果、各ＳＴＩＣＫレジスタに入力される値をそろえることができる。結果として、並列計算機システム１ｂは、各ＣＰＵ１０〜１０ｋ、１８〜１８ｋが実行する処理を同期させることができる。【０１９３】
［実施例３の効果］
上述したように、同期制御機構１７ｆおよびＢＣパイプライン機構６１は、構成単位２ｆとｘ軸方向に接続された構成単位５ｆ〜７ｆに同期要求をブロードキャスト送信し、次に、ｙ軸方向に接続された構成単位２ｇ〜２ｉに同期要求をブロードキャスト送信する。そして、同期制御機構１７ｆは、ブロードキャスト送信された同期要求を受信し、かつ、分周信号がＳＴＩＣＫレジスタの更新を行なう「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」を示した場合には、各ＣＰＵ１０〜１０ｂ、１８〜１８ｂが有するＳＴＩＣＫレジスタに、同期信号の出力を開始する。このため、並列計算機システム１ｂは、各ＣＰＵ１０〜１０ｋ、１８〜１８ｋが実行する処理を適切に同期させることができる。【０１９４】
つまり、並列計算機システム１ｂは、同期させるＣＰＵが多数となり、分周信号が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」を示す周期よりも短い時間内に同期信号を各ＣＰＵにブロードキャスト送信できない場合には、各ＣＰＵに対して同期要求を段階的に送信する。そして、並列計算機システム１ｂは、各ＣＰＵに同期要求が行き渡り、分周信号が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」となった場合には、各ＣＰＵが実行する処理を同期させる。このため、並列計算機システム１ｂは、分周信号が「ＲＥＧ−ＷＲ  Ｔｉｍｉｎｇ」を示す周期よりも短い時間内に同期信号を各ＣＰＵにブロードキャスト送信できない場合にも、各ＣＰＵが実行する処理を適切に同期させることができる。【０１９５】
また、同期制御機構１７ｆは、基準信号を分周した長い周期を有する分周信号が示すタイミングに従って、同期信号の出力を開始する。このため、並列計算機システム１ｂは、各ＣＰＵ１０〜１０ｋ、１８〜１８ｋがシリアルリンク等の、伝送レイテンシが一定しない方式で接続された場合にも、各ＣＰＵ１０〜１０ｋ、１８〜１８ｋが実行する処理を同期させることができる。
【実施例４】
【０１９６】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例４として本発明に含まれる他の実施例を説明する。【０１９７】
（１）並列計算機システムが有する構成単位について
上述した並列計算機システム１は、シリアルバスで接続された構成単位２〜２ｂを有していた。また、並列計算機システム１ａは、シリアルバスで接続された構成単位２ｃ〜５ｅを有していた。しかし、実施例はこれに限定するものではなく、並列計算機システム１および並列計算機システム１ａは、任意の数の構成単位を有してもよい。【０１９８】
また、各構成単位２ｃ〜２ｅは、それぞれ２つのＣＰＵを有していた。しかし、実施例はこれに限定されるものではなく、各構成単位２ｃ〜２ｅは、任意の数のＣＰＵを有してもよい。このような場合には、同期制御機構１７ｃは、ＣＰＵ１０ｃと同一の構成単位が有する各ＣＰＵに対して同期要求を送信し、その後、各ＣＰＵが接続されたバスを介して、他の構成単位２ｃ〜２ｅが有する各ＣＰＵに同期要求を送信する。【０１９９】
また、並列計算機システム１ｂは、それぞれ２つのＣＰＵを有し、ｘ軸方向およびｙ軸方向のメッシュ状に接続された複数の構成単位２ｆ〜２ｉ、５ｆ〜７ｉを有していた。しかし、実施例はこれに限定されるものではない。例えば、並列計算機システム１ｂは、ｘ軸方向、ｙ軸方向、ｚ軸方向の３次元に接続された複数の構成単位を有しても良い。このような複数の構成単位を有する場合には、各同期制御機構およびＸＢは、以下の処理を実行する。すなわち、各軸方向の構成単位に同期要求を多段的に送信し、すべての構成単位に同期要求が送信された場合には、分周信号が示すタイミングに従って、各ＣＰＵが有するＳＴＩＣＫカウンタに同期信号を出力する。【０２００】
また、並列計算機システム１ｂは、任意の数のＣＰＵを有する構成単位２ｆ〜２ｉ、５ｆ〜７ｉを有してもよい。例えば、並列計算機システム１ｂは、それぞれ１つのＣＰＵを有する構成単位２ｆ〜２ｉ、５ｆ〜７ｉを有していても良い。つまり、並列計算機システム１ｂは、ｘ軸方向およびｙ軸方向に接続された複数のＣＰＵを有してもよい。このような場合には、各同期制御機構は、ｘ軸方向に接続されたＣＰＵに同期要求を送信し、その後、ｙ軸方向に接続されたＣＰＵに同期要求を送信する。そして、各同期制御機構は、分周信号が示すタイミングで各ＣＰＵが有するＳＴＩＣＫレジスタに同期信号を出力する。【０２０１】
このように、並列計算機システムは、自身が有する各ＣＰＵの同期制御装置に同期要求を送信し、その後、分周信号が示すタイミングで各ＣＰＵが実行する処理を開始させる。このため、並列計算機システムは、各ＣＰＵ間がシリアルリンク等の伝送レイテンシが一定ではない方式で接続されている場合にも、適切に各ＣＰＵが実行する処理を同期させることができる。【０２０２】
（２）同期要求の送信先について
上述した並列計算機システム１ｂは、ｘ軸方向に接続された構成単位に同期要求をブロードキャスト送信した後、ｙ軸方向に接続された構成単位に同期要求をブロードキャストしていた。しかし、実施例はこれに限定されるものではない。例えば、並列計算機システム１ｂは、各軸方向に接続された構成単位に対して１度に同期要求を送信するのではなく、各軸方向に接続された構成単位に対して同期要求を送信する処理を、多段階に分けて実行してもよい。【０２０３】
すなわち、並列計算機システムは、任意の方法を用いて、同期要求を各ＣＰＵに送信し、その後、基準信号よりも長い周期を有する分周信号が示すタイミングに基づいて、各ＣＰＵが実行する処理の同期を開始すればよい。なお、並列計算機システムは、各ＣＰＵに同期要求を送信する経路については、システムの規模や伝送路のレイテンシ等の様々な条件に応じて適切な経路を設計することができる。
【符号の説明】
【０２０４】
１、１ａ、１ｂ  並列計算機システム
２〜２ｉ、５ｆ〜５ｉ、６ｆ〜６ｉ、７ｆ〜７ｉ  構成単位
３  発振器
４  ＣＤ
７、７ａ  バス
１０〜１０ｋ、１８〜１８ｋ  ＣＰＵ
２６〜２６ｋ  ＸＢ
５０  ｎパルス生成部
６１〜６１ｂ  ＢＣパイプライン機構
【図１】
2013018218.tif 000003
【図２】
2013018218.tif 000004
【図３】
2013018218.tif 000005
【図４】
2013018218.tif 000006
【図５ａ】
2013018218.tif 000007
【図５ｂ】
2013018218.tif 000008
【図５ｃ】
2013018218.tif 000009
【図５ｄ】
2013018218.tif 000010
【図６】
2013018218.tif 000011
【図７】
2013018218.tif 000012
【図８】
2013018218.tif 000013
【図９】
2013018218.tif 000014
【図１０】
2013018218.tif 000015
【図１１】
2013018218.tif 000016
【図１２】
2013018218.tif 000017
【図１３】
2013018218.tif 000018
【図１４】
2013018218.tif 000019
【図１５】
2013018218.tif 000020
【図１６】
2013018218.tif 000021
【図１７】
2013018218.tif 000022
【図１８】
2013018218.tif 000023
【図１９】
2013018218.tif 000024
【図２０】
2013018218.tif 000025
【図２１】
2013018218.tif 000026
【図２２】
2013018218.tif 000027
【図２３】
2013018218.tif 000028
【図２４】
2013018218.tif 000029
【図２５】
2013018218.tif 000030
【国際調査報告】
2013018218.tif 000031
2013018218.tif 000032
2013018218.tif 000033
2013018218.tif 000034