(57)【特許請求の範囲】
【請求項１】
並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行する第１の演算処理装置と、
キャッシュメモリを含み、前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した命令を実行することで前記初期化処理を実行する第２の演算処理装置を有することを特徴とする並列計算機。
【請求項２】
前記第２の演算処理装置は、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を格納する前記キャッシュメモリの記憶領域が足りない場合、前記キャッシュメモリに格納した命令の実行後に、前記初期化プログラムのうちの未実行の命令を読み出す第２の読み出し要求を前記第１の記憶装置に出力し、前記第２の読み出し要求に基づいて前記第１の記憶装置から出力される前記未実行の命令を実行することで前記初期化処理を完了することを特徴とする請求項１記載の並列計算機。
【請求項３】
前記第２の演算処理装置は、
前記第１の演算処理装置から出力される前記第１の読み出し要求の検出に基づいて、前記第１の読み出し要求に含まれるアドレスと、命令とを受信する受信部と、
前記第２の読み出し要求を前記第１の記憶装置に出力し、前記第２の読み出し要求に基づいて前記第１の記憶装置から出力される前記未実行の命令を受信する送受信部を有することを特徴とする請求項２記載の並列計算機。
【請求項４】
並列計算機はさらに、前記第１の演算処理装置および前記第２の演算処理装置からそれぞれ受信する前記第１の記憶装置への接続要求に基づいて、前記第１の演算処理装置または前記第２の演算処理装置のいずれかを前記第１の記憶装置に接続する接続制御装置を有し、
前記受信部は、前記第１の演算処理装置を前記接続制御装置に接続する信号線に伝達される前記第１の読み出し要求と命令とを検出することを特徴とする請求項３記載の並列計算機。
【請求項５】
並列計算機は、複数の前記第２の演算処理装置と、前記第１の演算処理装置を複数の前記第２の演算処理装置にそれぞれ接続する複数の接続部を有し、
複数の前記第２の演算処理装置の各々は、前記第１の読み出し要求と命令とを検出する場合、前記複数の接続部のうちの対応する接続部に、前記第１の演算処理装置との接続を指示する接続指示を出力することを特徴とする請求項２ないし請求項４のいずれか１項記載の並列計算機。
【請求項６】
複数の前記第２の演算処理装置の各々は、前記第２の読み出し要求を前記第１の記憶装置に出力して前記未実行の命令を受信する場合、前記複数の接続部のうちの対応する接続部に、前記第１の演算処理装置との接続を遮断する遮断指示を出力することを特徴とする請求項５記載の並列計算機。
【請求項７】
前記第２の演算処理装置は、前記キャッシュメモリに格納した命令を実行後、前記キャッシュメモリに格納したアドレスおよび命令を削除し、
前記キャッシュメモリは、アドレスおよび命令が削除された後、前記第２の演算処理装置に接続された主記憶装置に格納された情報の一部をアドレスとともに記憶することを特徴とする請求項１ないし請求項６のいずれか１項記載の並列計算機。
【請求項８】
第１の演算処理装置と、キャッシュメモリを含む第２の演算処理装置とを有する並列計算機の初期化方法において、
前記第１の演算処理装置が、並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行し、
前記第２の演算処理装置が、前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した命令を実行することで前記初期化処理を実行する並列計算機の初期化方法。
【請求項９】
並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行する第１の演算処理装置とともに並列計算機に搭載される第２の演算処理装置に前記初期化処理を実行させる起動プログラムにおいて、
前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記第２の演算処理装置が有するキャッシュメモリに格納し、
前記キャッシュメモリに格納した命令を実行する
処理を前記第２の演算処理装置に実行させることを特徴とする起動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機、並列計算機の初期化方法および起動プログラムに関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等の演算処理装置を含む計算機は、計算機の起動時に、ＢＩＯＳ（Basic Input Output System）等の初期化プログラムを記憶装置から演算処理装置にロードする。同様に、複数の演算処理装置を含む並列計算機は、並列計算機の起動時に、ＢＩＯＳ等の初期化プログラムを共通の記憶装置から各演算処理装置にロードする。例えば、初期化プログラムを共通の記憶装置から各演算処理装置にロードするために、初期化プログラムのロードを制御する制御回路が各演算処理装置と記憶装置とにそれぞれ接続され、各演算処理装置は、制御回路を介して記憶装置に接続される。そして、各演算処理装置と記憶装置とにそれぞれ接続された制御装置は、演算処理装置の１つが出力する読み出し要求に基づいて互いに連携して動作し、記憶装置から初期化プログラムを読み出して複数の演算処理装置に並列に転送する（例えば、特許文献１参照）。また、初期化プログラムを受信する外部ポートが演算処理装置の１つに接続される場合、外部ポートを介して初期化プログラムを受信した演算処理装置の１つは、受信した初期化プログラムを他の演算処理装置に転送する（例えば、特許文献２参照）。さらに、計算機の起動時に、初期化プログラムの一部は、ＲＡＭ（Random Access Memory）として動作するキャッシュメモリにロードされた後、演算処理装置により実行される。残りの初期化プログラムは、システムメモリにロードされた後、演算処理装置により実行される（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３０５９１２号公報
【特許文献２】特開２００９−２２３４９６号公報
【特許文献３】特開２００８−１６０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
並列計算機の起動時に、複数の演算処理装置が、共通の記憶装置から初期化プログラムをロードする場合、記憶装置へのアクセスが競合し、各演算処理装置に初期化プログラムがロードされるまでの時間は、アクセスが競合しない場合に比べて長くなる。この結果、並列計算機の起動が完了するまで時間は長くなり、計算機の使い勝手は低下する。
【０００５】
１つの側面では、本件開示の並列計算機、並列計算機の初期化方法および起動プログラムは、並列計算機の起動が完了するまでの時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、並列計算機は、並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行する第１の演算処理装置と、キャッシュメモリを含み、前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した命令を実行することで前記初期化処理を実行する第２の演算処理装置を有する。
【０００７】
別の観点によれば、第１の演算処理装置と、キャッシュメモリを含む第２の演算処理装置とを有する並列計算機の初期化方法は、前記第１の演算処理装置が、並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行し、前記第２の演算処理装置が、前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した命令を実行することで前記初期化処理を実行する。
【０００８】
さらなる別の観点によれば、並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行する第１の演算処理装置とともに並列計算機に搭載される第２の演算処理装置に前記初期化処理を実行させる起動プログラムは、前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記第２の演算処理装置が有するキャッシュメモリに格納し、前記キャッシュメモリに格納した命令を実行する処理を前記第２の演算処理装置に実行させる。
【発明の効果】
【０００９】
本件開示の並列計算機、並列計算機の初期化方法および起動プログラムは、並列計算機の起動が完了するまでの時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】並列計算機、並列計算機の初期化方法および起動プログラムの一実施形態を示す図である。
【図２】図１に示す並列計算機の初期化処理の一例を示す図である。
【図３】並列計算機、並列計算機の初期化方法および起動プログラムの別の実施形態を示す図である。
【図４】図３に示す並列計算機のネットワーク構成の一例を示す図である。
【図５】図３に示す並列計算機の初期化処理の一例を示す図である。
【図６】図５に示すステップＳ１０４、Ｓ１２２の動作の一例を示す図である。
【図７】図３に示す並列計算機の初期化処理におけるＣＰＵの動作の一例を示す図である。
【図８】図３に示す並列計算機の初期化時間の短縮効果の一例を示す図である。
【図９】並列計算機、並列計算機の初期化方法および起動プログラムの別の実施形態を示す図である。
【図１０】図９に示すＣＰＵ１を含むノードの一例を示す図である。
【図１１】図９に示す並列計算機の初期化時間の短縮効果の一例を示す図である。
【図１２】図３および図９に示す接続制御回路の別の例を示す図である。
【図１３】図１２に示す接続制御回路を有する並列計算機の初期化時間の短縮効果の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。信号等の情報が伝達される信号線には、信号名と同じ符号を使用する。
【００１２】
図１は、並列計算機、並列計算機の初期化方法および起動プログラムの一実施形態を示す。図１に示す並列計算機１００は、演算処理装置１０、２０および記憶装置３０を有する。演算処理装置１０、２０は、ＣＰＵ（Central Processing Unit）等のプロセッサであり、演算処理装置２０は、キャッシュメモリ２２を有する。なお、演算処理装置１０は、キャッシュメモリ２２を有してもよい。
【００１３】
記憶装置３０は、ＲＯＭ（Read Only Memory）等の不揮発性メモリである。記憶装置３０は、並列計算機１００が起動された場合に、演算処理装置１０、２０がそれぞれ内蔵するハードウェア等を初期化する初期化処理を実行するための命令（初期化プログラム）が格納されている。
【００１４】
演算処理装置１０は、並列計算機１００を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す読み出し要求を記憶装置３０に出力し、読み出し要求に基づいて記憶装置３０から出力される命令を受信する。そして、演算処理装置１０は、受信した命令を実行することで、初期化処理を実行する。起動指示は、並列計算機１００のパワーアップ時または並列計算機１００のリセットの解除時に並列計算機１００により生成される。読み出し要求は、記憶装置３０から読み出す命令が格納された記憶装置３０の記憶領域を示すアドレスを含む。なお、演算処理装置１０は、読み出し要求を出力した後にアドレスを記憶装置３０に出力してもよい。
【００１５】
演算処理装置２０は、起動指示に基づいて、演算処理装置１０から出力される情報と記憶装置３０から出力される情報とを監視する。演算処理装置２０は、演算処理装置１０から出力される読み出し要求と記憶装置３０から出力される命令とを検出した場合、検出した読み出し要求に含まれるアドレスと、検出した命令とをキャッシュメモリ２２に格納する。そして、演算処理装置２０は、キャッシュメモリ２２に格納した命令を実行することで初期化処理を実行する。すなわち、演算処理装置２０は、演算処理装置１０から記憶装置３０に出力されるアドレスと、記憶装置３０から演算処理装置１０に出力される命令とを盗み取り、盗み取った命令を実行する。
【００１６】
例えば、キャッシュメモリ２２は、演算処理装置２０のプロセッサコアが出力するアドレスの中位ビット群で識別される複数のキャッシュラインを有する。各キャッシュラインは、演算処理装置２０のプロセッサコアが出力するアドレスの上位ビット群等が格納されるタグ領域と、アドレスに対応するデータまたは命令が格納されるデータ領域とを有する。なお、アドレスは、上位ビット群、中位ビット群および下位ビット群を含む。
【００１７】
演算処理装置１０から出力されるアドレスを受信した演算処理装置２０は、アドレスの中位ビット群で識別されるキャッシュラインのタグ領域にアドレスの上位ビット群を格納する。また、記憶装置３０から出力される命令を受信した演算処理装置２０は、アドレスの上位ビット群を格納したキャッシュラインのデータ領域において、既に受信しているアドレスの下位ビット群で示される記憶領域に、受信した命令を格納する。
【００１８】
これにより、キャッシュメモリ２２に命令が格納された後、命令をフェッチするために演算処理装置２０のプロセッサコアが出力するアドレスはキャッシュヒットする。プロセッサコアは、キャッシュヒットによりキャッシュメモリ２２から読み出される命令（初期化プログラム）を実行する。そして、演算処理装置２０は、記憶装置３０にアクセスすることなく、キャッシュメモリ２２に格納した命令を実行することで初期化される。
【００１９】
図２は、図１に示す並列計算機１００の動作の一例を示す。図２に示す動作は、並列計算機１００の初期化方法を示す。
【００２０】
演算処理装置１０は、起動指示を受けた場合、ステップＳ１０において、読み出し要求を記憶装置３０に出力する。次に、ステップＳ１２において、演算処理装置１０は、読み出し要求に基づいて記憶装置３０から出力される命令を受信する。次に、ステップＳ１４において、演算処理装置１０は、受信した命令を実行することで、演算処理装置１０を初期化する初期化処理を実行する。次に、ステップＳ１６において、演算処理装置１０は、初期化処理が完了した場合、動作を完了し、初期化処理が完了していない場合、動作をステップＳ１０に戻し、読み出し要求を記憶装置３０に出力する。ステップＳ１０からステップＳ１６の動作は、演算処理装置１０におけるプロセッサコア等のハードウェアにより実行される。
【００２１】
一方、演算処理装置２０は、起動指示を受けた場合、ステップＳ２０において、演算処理装置１０が記憶装置３０に出力する情報を監視し、読み出し要求の出力を検出した場合、動作をステップＳ２２に移行する。ステップＳ２２において、演算処理装置２０は、検出した読み出し要求に含まれるアドレスをキャッシュメモリ２２に格納し、動作をステップＳ２４に移行する。
【００２２】
ステップＳ２４において、演算処理装置２０は、記憶装置３０が演算処理装置１０に出力する情報を監視し、命令の出力を検出した場合、動作をステップＳ２６に移行する。ステップＳ２６において、演算処理装置２０は、検出した命令を、ステップＳ２２で格納したアドレスに対応付けてキャッシュメモリ２２に格納し、動作をステップＳ２８に移行する。
【００２３】
ステップＳ２８において、演算処理装置２０は、初期化処理を実行するための命令（初期化プログラム）の受信が完了した場合、動作をステップＳ３０に移行し、初期化処理を実行するための命令を全て受信していない場合、動作をステップＳ２０に戻す。例えば、演算処理装置２０は、命令の受信を完了したか否かを、予め決められた特定の組み合わせの命令を受信したことに基づいて判定する。ステップＳ３０において、演算処理装置２０は、キャッシュメモリ２２に格納した命令を順次実行し、初期化処理を実行する。ステップＳ２０からステップＳ３０の動作は、演算処理装置２０のプロセッサコアと、演算処理装置１０による記憶装置３０のアクセスを監視する監視回路と、キャッシュメモリ２２の動作を制御する制御回路等のハードウェアにより実行される。例えば、監視回路および制御回路等のハードウェアは、演算処理装置２０に内蔵される。なお、ステップＳ２０からステップＳ３０の動作は、演算処理装置２０が実行する起動プログラムにより実現されてもよい。この場合、起動プログラムは、演算処理装置２０の内部に設けられる不揮発性の内蔵メモリに予め格納される。
【００２４】
図１に示す並列計算機１００では、演算処理装置２０は、記憶装置３０に読み出し要求を出力することなく、記憶装置３０に格納された初期化処理のための命令（初期化プログラム）を取得して実行できる。これにより、演算処理装置１０からの読み出し要求と演算処理装置２０からの読み出し要求との競合が回避される。このため、演算処理装置１０、２０の各々が記憶装置３０にアクセスし、記憶装置３０から命令を読み出す場合に比べて、演算処理装置１０、２０の各々が実行する初期化処理を迅速に実行できる。この結果、演算処理装置１０、２０の各々が記憶装置３０から命令を読み出す場合に比べて、並列計算機１００の起動（すなわち、演算処理装置１０、２０の初期化）が完了するまでの時間を短縮することができる。また、記憶装置３０が演算処理装置１０、２０を初期化する命令（初期化プログラム）のみを記憶する場合、演算処理装置１０、２０のそれぞれから出力される読み出し要求を調停する機構を省略することが可能になる。
【００２５】
なお、３以上の演算処理装置が並列計算機１００に搭載される場合、並列計算機１００は、１つの演算処理装置１０と複数の演算処理装置２０とを有する。この場合、１つの演算処理装置１０のみが記憶装置３０に読み出し要求を出力し、他の複数の演算処理装置２０は、演算処理装置１０と記憶装置３０との間で転送されるアドレスと命令とを盗み取る。したがって、３以上の演算処理装置が並列計算機１００に搭載される場合にも、並列計算機１００の起動が完了するまでの時間を短縮することができる。したがって、並列計算機１００の起動が完了するまでの時間の短縮効果は、並列計算機１００に搭載される演算処理装置の数が多いほど大きくなる。
【００２６】
図３は、並列計算機、並列計算機の初期化方法および起動プログラムの別の実施形態を示す。この実施形態の並列計算機１００Ａは、複数のＣＰＵ（ＣＰＵ０、ＣＰＵ１、ＣＰＵ２）、複数の主記憶装置ＭＭ（ＭＭ０、ＭＭ１、ＭＭ２）、接続制御装置ＣＣＮＴおよびＲＯＭを有する。ＣＰＵは、演算処理装置の一例であり、ＲＯＭは、第１の記憶装置の一例である。
【００２７】
各ＣＰＵは、プロセッサコアＣＯＲＥ（ＣＯＲＥ０、ＣＯＲＥ１、ＣＯＲＥ２）、キャッシュメモリＣＭ（ＣＭ０、ＣＭ１、ＣＭ２）およびキャッシュコントローラＣＭＣＮＴ（ＣＭＣＮＴ０、ＣＭＣＮＴ１、ＣＭＣＮＴ２）を有する。また、各ＣＰＵは、通信インタフェース部ＳＰＩ（ＳＰＩ０、ＳＰＩ１、ＳＰＩ２）および受信部ＲＳＶ（ＲＳＶ０、ＲＳＶ１、ＲＳＶ２）を有する。接続制御装置ＣＣＮＴは、調停部ＡＲＢおよびセレクタＳＥＬを有する。
【００２８】
各ＣＰＵは、リセット信号ＲＳＴを受信するリセット端子ＲＳＴを有する。リセット信号ＲＳＴがリセット解除レベルからリセットレベルに変化した場合、各ＣＰＵは、ハードウェア等の内部状態をリセットする。リセット信号ＲＳＴがリセットレベルからリセット解除レベルに変化した場合、各ＣＰＵは、ＲＯＭに格納された初期化プログラムを実行することでハードウェア等を初期化する初期化処理を実行する。そして、初期化処理の実行によりＯＳ（Operating System）およびアプリケーションプログラム等の実行が可能な状態になる。以下では、リセット信号ＲＳＴのリセットレベルからリセット解除レベルへの変化は、リセット信号ＲＳＴの解除またはリセット解除とも称される。
【００２９】
初期化プログラムは、ＢＩＯＳまたはＵＥＦＩ（Unified Extensible Firmware Interface）等のファームウェアである。ＯＳおよびアプリケーションプログラムは、各ＣＰＵに接続された主記憶装置ＭＭ（ＭＭ０、ＭＭ１、ＭＭ２）に格納される。リセットレベルからリセット解除レベルに変化するリセット信号ＲＳＴは、並列計算機１００Ａのパワーアップ時または並列計算機１００のリセットの解除時に、並列計算機１００Ａのリセット生成回路により生成される。ＣＰＵの各プロセッサコアＣＯＲＥは、リセット解除に基づいて、ＣＰＵを初期化するために初期化プログラムを実行する。
【００３０】
また、各ＣＰＵは、電源電圧ＶＤＤ等のハイレベルまたは接地電圧ＶＳＳ等のロウレベルを受信するマスタ端子ＭＳＴを有する。マスタ端子ＭＳＴでハイレベルを受信するＣＰＵ０は、リセット信号ＲＳＴの解除に基づいて、ＲＯＭに格納された初期化プログラムを実行するマスタデバイスとして動作する。マスタ端子ＭＳＴでロウレベルを受信するＣＰＵ１、ＣＰＵ２は、リセット信号ＲＳＴの解除に基づいて、ＣＰＵ０とＲＯＭとの間で転送されるアドレスと命令とをキャッシュメモリＣＭに格納するスレーブデバイスとして動作する。なお、スレーブデバイスとして動作するＣＰＵの数は、１つでもよく、３つ以上でもよい。
【００３１】
各キャッシュメモリＣＭは、図１に示すキャッシュメモリ２２と同様に、プロセッサコアＣＯＲＥが出力するアドレスの中位ビット群で示される複数のキャッシュラインを有する。各キャッシュラインは、プロセッサコアＣＯＲＥが出力するアドレスの上位ビット群等が格納されるタグ領域と、アドレスに対応するデータまたは命令が格納されるデータ領域とを有する。各キャッシュメモリＣＭの記憶容量は、互いに同じでもよく、互いに相違してもよい。
【００３２】
各キャッシュメモリＣＭは、ＲＯＭまたは主記憶装置ＭＭから出力されるデータおよび命令の一部を保持する。なお、キャッシュメモリＣＭ１には、ＣＰＵ１が初期化される前に、ＲＯＭからＣＰＵ０に転送される初期化プログラムが、アドレスとともに格納される。そして、ＣＰＵ１は、ＲＯＭにアクセスすることなくキャッシュメモリＣＭ１に格納された初期化プログラムを実行することで初期化処理を実行し、初期化される。同様に、キャッシュメモリＣＭ２には、ＣＰＵ２が初期化される前に、ＲＯＭからＣＰＵ０に転送される初期化プログラムが、アドレスとともに格納される。そして、ＣＰＵ２は、ＲＯＭにアクセスすることなくキャッシュメモリＣＭ２に格納された初期化プログラムを実行することで初期化処理を実行し、初期化される。
【００３３】
各キャッシュコントローラＣＭＣＮＴは、メモリコントローラとして機能し、各キャッシュメモリＣＭの動作を制御するとともに、通信インタフェース部ＳＰＩおよび受信部ＲＳＶの動作を制御する機能を有する。例えば、キャッシュコントローラＣＭＣＮＴは、ＲＯＭに割り当てられたアドレスがキャッシュミスした場合、ＲＯＭにアクセスする指示を通信インタフェース部ＳＰＩに出力する。また、キャッシュコントローラＣＭＣＮＴは、主記憶装置ＭＭに割り当てられたアドレスがキャッシュミスした場合、主記憶装置ＭＭにアクセスする指示を主記憶装置ＭＭに接続されたメモリコントローラ（図示せず）に出力する。
【００３４】
各通信インタフェース部ＳＰＩは、接続制御装置ＣＣＮＴに接続され、ＳＰＩ（Serial Peripheral Interface）方式にしたがって、ＲＯＭとの間で通信を実行する。ＳＰＩ方式による通信の例は、図６に示される。以下の説明では、ＣＰＵと接続制御装置ＣＣＮＴとの間に配線される信号線は、ＳＰＩバスとも称される。ＳＰＩバスは、チップセレクト信号線ＣＳ（ＣＳ０、ＣＳ１、ＣＳ２）、クロック信号線ＣＬＫ（ＣＬＫ０、ＣＬＫ１、ＣＬＫ２）、シリアル入力線ＳＩ（ＳＩ０、ＳＩ１、ＳＩ２）およびシリアル出力線ＳＯ（ＳＯ０、ＳＯ１、ＳＯ２）を含む。なお、バス要求線ＢＲＥＱ（ＢＲＥＱ０、ＢＲＥＱ１、ＢＲＥＱ２）および許可通知線ＢＧＮＴ（ＢＧＮＴ０、ＢＧＮＴ１、ＢＧＮＴ２）が、ＳＰＩバスに含まれてもよい。
【００３５】
各通信インタフェース部ＳＰＩは、キャッシュコントローラＣＭＣＮＴから読み出し要求を受信した場合、ＲＯＭに接続されたメモリバスＭＢのバス権を取得するために、バス要求ＢＲＥＱを接続制御装置ＣＣＮＴの調停部ＡＲＢに出力する。バス要求ＢＲＥＱは、各ＣＰＵをＲＯＭに接続する接続要求の一例である。
【００３６】
例えば、プロセッサコアＣＯＲＥから出力されるアドレスがＲＯＭを示し、かつ、アドレスに対応するデータ（命令）がキャッシュメモリＣＭに格納されていないとする。この場合、キャッシュコントローラＣＭＣＮＴは、キャッシュミスを判定し、通信インタフェース部ＳＰＩに読み出し要求を出力する。なお、リセット信号ＲＳＴが解除された直後、キャッシュメモリＣＭは、データ（命令）を保持していない。このため、各ＣＰＵの初期化中、受信部ＲＳＶで受信した命令がキャッシュメモリＣＭに格納されている場合を除き、キャッシュコントローラＣＭＣＮＴは、キャッシュメモリＣＭのキャッシュミスを判定する。なお、各ＣＰＵの初期化が完了した後、各キャッシュコントローラＣＭＣＮＴは、プロセッサコアＣＯＲＥから出力されるアドレスが、各ＣＰＵに対応する主記憶装置ＭＭを示す場合、主記憶装置ＭＭまたはキャッシュメモリＣＭにアクセスする。
【００３７】
各通信インタフェース部ＳＰＩは、調停部ＡＲＢからバス権の許可通知ＢＧＮＴを受信した場合、読み出し要求（読み出しコマンドおよび読み出しアドレス）を、ＳＰＩバスおよびセレクタＳＥＬを介してＲＯＭに出力する。読み出しアドレスは、キャッシュコントローラＣＭＣＮＴからの読み出し要求に含まれる。そして、通信インタフェース部ＳＰＩは、接続制御装置ＣＣＮＴおよびＳＰＩバスを介してＲＯＭから出力されるデータ（命令）を受信し、受信したデータ（命令）をキャッシュコントローラＣＭＣＮＴに出力する。ＣＰＵ１、ＣＰＵ２に通信インタフェース部ＳＰＩ１、ＳＰＩ２が搭載されるため、ＣＰＵ１、ＣＰＵ２は、キャッシュメモリＣＭに初期化プログラムが入りきらない場合にも、ＲＯＭにアクセスすることで、ＲＯＭから命令を読み出すことができる。通信インタフェース部ＳＰＩは、読み出し要求をＲＯＭに送信し、読み出し要求に基づいてＲＯＭから出力される未実行の命令を受信する送受信部の一例である。
【００３８】
ＣＰＵ１、ＣＰＵ２の受信部ＲＳＶ１、ＲＳＶ２は、ＣＰＵ０のＳＰＩバスに接続され、ＣＰＵ０の通信インタフェース部ＳＰＩ０とＲＯＭとの間で転送されるアドレスおよび命令を検出して受信する。受信部ＲＳＶ１、ＲＳＶ２は、アドレスおよび命令を受信した場合、受信したアドレスおよび命令をキャッシュコントローラＣＭＣＮＴ１、ＣＭＣＮＴ２に出力する。各キャッシュコントローラＣＭＣＮＴ１、ＣＭＣＮＴ２は、受信したアドレスの上位アドレス群を、各キャッシュメモリＣＭ１、ＣＭ２における中位アドレス群により識別されるキャッシュラインのタグ領域に格納する。また、各キャッシュコントローラＣＭＣＮＴ１、ＣＭＣＮＴ２は、受信した命令を、各キャッシュメモリＣＭ１、ＣＭ２におけるアドレスを格納したキャッシュラインのデータ領域に格納する。
【００３９】
なお、図３では、受信部ＲＳＶ１、ＲＳＶ２は、接続制御装置ＣＣＮＴ内に配線されるＣＰＵ０のＳＰＩバスに接続されるが、ＣＰＵ０側のＳＰＩバスに接続されてもよい。この場合、図３に比べて、受信部ＲＳＶ１、ＲＳＶ２とＣＰＵ０のＳＰＩバスとを接続する配線長を短くすることができ、配線領域を小さくすることができる。また、受信部ＲＳＶ１、ＲＳＶ２は、ＣＰＵ０のＳＰＩバスに接続される代わりに、メモリバスＭＢに接続されてもよい。
【００４０】
ＣＰＵ１、ＣＰＵ２は、受信部ＲＳＶ１、ＲＳＶ２により、ＲＯＭにアクセスすることなく、ＲＯＭに格納された命令を受信することができ、ＲＯＭへのアクセスが競合することを回避することができる。また、受信部ＲＳＶ１、ＲＳＶ２をＣＰＵ０のＳＰＩバスに接続することで、受信部ＲＳＶ１、ＲＳＶ２は、ＣＰＵ０とＲＯＭとの間で転送されるアドレスおよび命令のみを受信することができる。例えば、キャッシュメモリＣＭ１の記憶容量がキャッシュメモリＣＭ２の記憶容量より小さい場合、ＣＰＵ１は、ＣＰＵ２がキャッシュメモリＣＭ２に命令を格納している期間に、ＲＯＭにアクセスし、ＲＯＭから命令を読み出す。この場合にも、ＣＰＵ２の受信部ＲＳＶ２は、ＣＰＵ１とＲＯＭとの間で転送されるアドレスおよび命令を受信することなく、ＣＰＵ０とＲＯＭとの間で転送されるアドレスおよび命令のみを受信することができる。この結果、ＲＯＭに格納された命令（初期化プログラム）を実行する初期化処理において、並列計算機１００Ａが誤動作することを抑止することができる。
【００４１】
ＣＰＵ０の受信部ＲＳＶ０は、ＳＰＩバスに接続されず、動作しない。動作しない受信部ＲＳＶ０をＣＰＵ０に搭載することで、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２を共通に設計することが可能になり、ＣＰＵ０を単独で設計する場合に比べて設計コストを削減することができる。
【００４２】
接続制御装置ＣＣＮＴの調停部ＡＲＢは、ＣＰＵ０−ＣＰＵ２からのバス要求ＢＲＥＱ０−ＢＲＥＱ２を調停し、調停により選択したＣＰＵ（すなわち、メモリバスＭＢの使用を許可するＣＰＵ）に許可通知ＢＧＮＴ（ＢＧＮＴ０−ＢＧＮＴ２）を出力する。また、調停部ＡＲＢは、調停により選択したＣＰＵを示す選択情報ＳＩＮＦをセレクタＳＥＬに出力する。
【００４３】
セレクタＳＥＬは、調停部ＡＲＢからの選択情報ＳＩＮＦに基づいて、ＣＰＵ０−ＣＰＵ２のＳＰＩバスのいずれかをメモリバスＭＢに接続するスイッチを有する。図３に示す例は、ＣＰＵ０のＳＰＩバスがセレクタＳＥＬを介してメモリバスＭＢに接続された状態を示す。セレクタＳＥＬは、調停部ＡＲＢによる調停結果に基づいて、ＲＯＭをＣＰＵのいずれかに接続する接続切り替え部の一例である。
【００４４】
図４は、図３に示す並列計算機１００Ａのネットワーク構成の一例を示す。並列計算機１００Ａは、２次元メッシュネットワークを有し、各ＣＰＵ（ＣＰＵ０−ＣＰＵ８）と各主記憶装置ＭＭ（ＭＭ０−ＭＭ８）とのペアを含むノードＮＤ（ＮＤ０−ＮＤ８）と、各ノードＮＤに接続されたネットワークスイッチＮＷＳＷとを有する。各ノードＮＤは、ネットワークスイッチＮＷＳＷを介して他のノードＮＤに接続される。各ＣＰＵは、２次元メッシュネットワークとは独立した信号線を介して接続制御装置ＣＣＮＴに接続される。
【００４５】
図４に示す例では、ＣＰＵ８と主記憶装置ＭＭ８とを含むノードＮＤ８は、ハードディスクドライブＨＤＤに接続される。ハードディスクドライブＨＤＤは、第２の記憶装置の一例である。後述する図５に示す動作により、各ＣＰＵの初期化が完了し、ハードウェアが動作可能になった後、ＯＳ等のプログラムは、まず、ハードディスクドライブＨＤＤからノードＮＤ８の主記憶装置ＭＭ８にロードされる。この後、主記憶装置ＭＭ８にロードされたＯＳ等のプログラムは、ネットワークスイッチＮＷＳＷを介して他のノードＮＤの主記憶装置ＭＭに順次ロードされる。なお、並列計算機１００Ａは、ネットワークスイッチＮＷＳＷを環状に接続する２次元トーラスネットワークなどの他のネットワークを有してもよい。
【００４６】
図５は、図３に示す並列計算機１００Ａの初期化処理の一例を示す。図５に示す動作は、図３に示す各ＣＰＵにより実行される並列計算機１００Ａの初期化方法を示す。図５に示すフローは、リセット信号ＲＳＴの解除に基づいて開始される。リセット信号ＲＳＴの解除は、並列計算機を起動する起動指示の一例である。
【００４７】
マスタデバイスであるＣＰＵ０の動作は、ステップＳ１００、Ｓ１０２、Ｓ１０４、Ｓ１０６により示され、ＣＰＵ０のハードウェアにより実現される。スレーブデバイスであるＣＰＵ１、ＣＰＵ２の動作は、ステップＳ１１０、Ｓ１１２、Ｓ１１４、Ｓ１１６、Ｓ１１８、Ｓ１２０、Ｓ１２２、Ｓ１２４により示され、ＣＰＵ１、ＣＰＵ２のハードウェアにより実現される。なお、スレーブデバイスであるＣＰＵ１、ＣＰＵ２が実行するステップＳ１１０−Ｓ１２４は、プロセッサコアＣＯＲＥ１、ＣＯＲＥ２が実行する起動プログラムにより実現されてもよい。この場合、各プロセッサコアＣＯＲＥ１、ＣＯＲＥ２は、リセット信号ＲＳＴの解除に基づいて、各ＣＰＵ１、ＣＰＵ２内の不揮発性の内蔵メモリに予め格納された起動プログラムを実行する。
【００４８】
まず、ステップＳ１００において、各ＣＰＵは、マスタ端子ＭＳＴの論理レベルに基づいて、マスタデバイスまたはスレーブデバイスのいずれであるかを判定する。マスタデバイス（ＣＰＵ０）の場合、動作はステップＳ１０２に移行され、スレーブデバイス（ＣＰＵ１、ＣＰＵ２）の場合、動作はステップＳ１１０に移行される。
【００４９】
ステップＳ１０２において、マスタデバイスは、調停部ＡＲＢにバス要求ＢＲＥＱを出力し、バス権を獲得する。マスタデバイスは、調停部ＡＲＢから許可通知ＢＧＮＴを受信し、バス権を獲得した場合、動作をステップＳ１０４に移行する。マスタデバイスは、許可通知ＢＧＮＴを受信しない場合、バス権を獲得するまでステップＳ１０２を繰り返し実行する。
【００５０】
ステップＳ１０４において、マスタデバイスの通信インタフェース部ＳＰＩは、ＲＯＭに読み出し要求を出力し、ＲＯＭから読み出される命令を受信し、受信した命令を実行する。次に、ステップＳ１０６において、マスタデバイスは、ＣＰＵの初期化が完了した場合、すなわち、ＣＰＵを初期化する全ての命令をＲＯＭから読み出して実行した場合、動作を終了する。一方、マスタデバイスは、ＣＰＵの初期化が完了していない場合、動作をステップＳ１０２に戻し、ＲＯＭから次の命令を読み出すために、バス権を獲得する。
【００５１】
一方、ステップＳ１１０において、スレーブデバイスの受信部ＲＳＶは、マスタデバイスのＳＰＩバスに伝達される信号を利用して、マスタデバイスによるＲＯＭのアクセス（読み出し要求）を監視する。次に、ステップＳ１１２において、スレーブデバイスの受信部ＲＳＶは、読み出し要求を検出した場合、動作をステップＳ１１４に移行する。受信部ＲＳＶは、読み出し要求を検出するまでステップＳ１１０、Ｓ１１２を繰り返す。
【００５２】
ステップＳ１１４において、スレーブデバイスの受信部ＲＳＶは、読み出し要求に含まれるアドレス（読み出しアドレス）と、ＲＯＭから読み出される命令とを取得し、取得したアドレスおよび命令をキャッシュコントローラＣＭＣＮＴに出力する。キャッシュコントローラＣＭＣＮＴは、受信部ＲＳＶからのアドレスおよび命令をキャッシュメモリＣＭに格納する。
【００５３】
次に、ステップＳ１１６において、スレーブデバイスは、キャッシュメモリＣＭが満杯になった場合、すなわち、命令を格納するキャッシュメモリＣＭの記憶領域が足りない場合、処理をステップＳ１１８に移行する。キャッシュメモリＣＭに命令を格納する記憶領域が残っている場合、スレーブデバイスは、処理をステップＳ１１０に戻し、次の読み出し要求の受信動作を実行する。キャッシュメモリＣＭが満杯になったか否かは、キャッシュコントローラＣＭＣＮＴにより検出される。
【００５４】
キャッシュメモリＣＭが満杯になったことを検出したスレーブデバイスのキャッシュコントローラＣＭＣＮＴは、ステップＳ１１８において、プロセッサコアＣＯＲＥにＲＯＭからの命令のフェッチを開始させる。例えば、スレーブデバイスの内部において、リセット信号ＲＳＴの解除は、キャッシュメモリＣＭが満杯になるまでマスクされる。そして、キャッシュコントローラＣＭＣＮＴからキャッシュメモリＣＭの満杯を示す情報が出力されたことに基づいて、リセット信号ＲＳＴの解除がプロセッサコアＣＯＲＥに通知される。
【００５５】
この後、スレーブデバイスは、リセット信号ＲＳＴの解除に基づいて動作するマスタデバイスと同様に、ＲＯＭに格納された命令のフェッチを開始する。但し、キャッシュメモリＣＭに命令が格納されている場合、キャッシュヒットが判定されるため、命令は、キャッシュメモリＣＭから読み出され、プロセッサコアＣＯＲＥにより実行される。すなわち、スレーブデバイスは、ＲＯＭにアクセスすることなく、キャッシュメモリＣＭに格納された命令を実行することができる。換言すれば、スレーブデバイスは、ＲＯＭに格納された命令を実行する場合に比べて短時間で命令を実行することができる。
【００５６】
キャッシュメモリＣＭに格納された全ての命令を実行した後、キャッシュコントローラＣＭＣＮＴは、プロセッサコアＣＯＲＥから出力されるアドレスを、キャッシュミスと判定し、読み出し要求を通信インタフェース部ＳＰＩに出力する。そして、スレーブデバイスは、マスタデバイスが実行するステップＳ１０２、Ｓ１０４、Ｓ１０６と同様に、ステップＳ１２０、Ｓ１２２、Ｓ１２４を実行し、実行していない命令をＲＯＭから直接読み出して実行する。ステップＳ１２４において、スレーブデバイスは、ＣＰＵの初期化が完了した場合、動作を終了する。
【００５７】
このように、スレーブデバイスは、キャッシュメモリＣＭが満杯になった場合、ＲＯＭに直接アクセスし、ＲＯＭから読み出される命令を実行して、初期化処理を継続する。これにより、初期化プログラムがキャッシュメモリＣＭに入りきらない場合にも、スレーブデバイスは、初期化処理を完了することができる。
【００５８】
なお、スレーブデバイスにおいて、ＣＰＵを初期化するための全ての命令がキャッシュメモリＣＭに格納可能な場合、スレーブデバイスは、ステップＳ１１４により全ての命令がキャッシュメモリＣＭに格納された後、ステップＳ１１８を実行し、動作を終了する。この場合、ステップＳ１２０、Ｓ１２２、Ｓ１２４の動作は実行されない。
【００５９】
また、スレーブデバイスは、初期化処理の完了後、キャッシュメモリＣＭに保持された読み出しアドレスおよび命令を削除し、通常のキャッシュメモリＣＭとして使用する。これにより、スレーブデバイスは、主記憶装置ＭＭに格納された命令およびデータの一部をキャッシュメモリＣＭに保持することができる。
【００６０】
図６は、図５に示すステップＳ１０４、Ｓ１２２の動作の一例を示す。すなわち、図６は、通信インタフェース部ＳＰＩが、ＳＰＩ方式にしたがってＲＯＭからデータ（命令）を読み出す例を示す。
【００６１】
通信インタフェース部ＳＰＩは、キャッシュコントローラＣＭＣＮＴからの読み出し要求に基づいて、図５に示すステップＳ１０２、Ｓ１２０でバス権を獲得した後、チップセレクト信号ＣＳを有効レベル（例えば、ロウレベル）に設定する（図６（ａ））。そして、通信インタフェース部ＳＰＩは、クロックＣＬＫの生成を開始し、クロックＣＬＫに同期して読み出しコマンドと読み出しアドレスとをシリアル入力線ＳＩに順次出力する（図６（ｂ）、（ｃ）、（ｄ））。例えば、読み出しコマンドは８ビット（００００００１１）であり、読み出しアドレスは３２ビットである。
【００６２】
次に、通信インタフェース部ＳＰＩは、読み出しコマンドと読み出しアドレスとに基づいて、ＲＯＭからシリアル出力線ＳＯに出力される読み出しデータ（すなわち、命令）を受信する（図６（ｅ））。例えば、読み出しデータは、６４ビットである。この後、通信インタフェース部ＳＰＩは、チップセレクト信号ＣＳを無効レベル（例えば、ハイレベル）に設定し、ＲＯＭから命令を読み出す読み出し動作を完了する（図６（ｆ））。
【００６３】
なお、図６では、ＳＰＩ方式を用いてＲＯＭにアクセスする例を示すが、Ｉ２Ｃ（Inter-Integrated Circuit）方式などの他のシリアルインタフェース方式を用いてＲＯＭにアクセスしてもよい。
【００６４】
図７は、図３に示す並列計算機１００Ａの初期化処理におけるＣＰＵ０−ＣＰＵ２の動作の一例を示す。並列計算機１００Ａのパワーアップ等によりリセット信号ＲＳＴが解除されると、マスタデバイスであるＣＰＵ０は、調停部ＡＲＢにバス要求ＢＲＥＱ０を出力し、調停部ＡＲＢから許可通知ＢＧＮＴ０を受信する（図７（ａ））。そして、ＣＰＵ０は、図６に示すように、読み出し要求（読み出しコマンドＣおよび読み出しアドレスＡ）を、接続制御装置ＣＣＮＴを介してＲＯＭに出力し、接続制御装置ＣＣＮＴを介してＲＯＭから命令Ｉを受信し、受信した命令Ｉを実行する（図７（ｂ））。ＣＰＵ０は、バス要求ＢＲＥＱ０によるバス権の獲得と、読み出し要求に基づくＲＯＭからの命令Ｉの読み出しおよび実行を繰り返し実行する（図７（ｃ）、（ｄ））。
【００６５】
スレーブデバイスであるＣＰＵ１、ＣＰＵ２は、ＣＰＵ０に接続されたＳＰＩバスを監視し、読み出しコマンドＣを検出する。ＣＰＵ１、ＣＰＵ２は、読み出しコマンドＣを検出した場合、読み出しコマンドＣに続く読み出しアドレスＡと命令Ｉとを、ＣＰＵ０に接続されたＳＰＩバスから順次受信する。そして、ＣＰＵ１、ＣＰＵ２は、受信した読み出しアドレスＡと命令ＩとをキャッシュメモリＣＭに格納する（図７（ｅ）、（ｆ））。
【００６６】
ＣＰＵ１、ＣＰＵ２は、各キャッシュメモリＣＭにおいて、命令Ｉを格納するデータ領域が足りなくなった場合、キャッシュメモリＣＭに格納された命令Ｉを実行し、初期化処理を開始する（図７（ｇ））。図７に示す例では、ＣＰＵ１、ＣＰＵ２のキャッシュメモリＣＭ１、ＣＭ２の記憶容量は互いに同じであるため、ＣＰＵ１、ＣＰＵ２が初期化処理を開始するタイミングは同じになる。ＣＰＵ１、ＣＰＵ２がキャッシュメモリＣＭに格納された命令Ｉの実行を開始した後にも、ＣＰＵ０は、バス要求ＢＲＥＱ０によるバス権の獲得と、読み出し要求に基づくＲＯＭからの命令Ｉの読み出しおよび実行を繰り返し実行する（図７（ｈ））。
【００６７】
ＣＰＵ１、ＣＰＵ２は、各キャッシュメモリＣＭに格納された全ての命令を実行した後、初期化処理を実行する残りの命令ＩをＲＯＭから読み出すために、バス要求ＢＲＥＱ１、ＢＲＥＱ２をそれぞれ出力する（図７（ｉ）、（ｊ））。調停部ＡＲＢは、バス要求ＢＲＥＱ０、ＢＲＥＱ１、ＢＲＥＱ２を調停し、許可通知ＢＧＮＴ０、ＢＧＮＧ１、ＢＧＮＴ２を順次出力する（図７（ｋ）、（ｌ）、（ｍ））。そして、ＣＰＵ０−ＣＰＵ２は、ＲＯＭを交互にアクセスし、ＲＯＭから命令Ｉを読み出し、読み出した命令Ｉを実行し、初期化処理をそれぞれ実行する（図７（ｎ）、（ｏ）、（ｐ））。
【００６８】
図８は、図３に示す並列計算機１００Ａの初期化時間の短縮効果の一例を示す。図８において、網掛けの矩形は、ＣＰＵ０−ＣＰＵ２が、ＲＯＭにアクセスし、ＲＯＭから読み出した命令を実行する動作を示す。斜線の矩形は、ＣＰＵ１、ＣＰＵ２が、ＣＰＵ０のＳＰＩバスに転送される読み出しアドレスおよび命令を受信し、受信した読み出しアドレスおよび命令をキャッシュメモリＣＭに格納する動作を示す。縦線の矩形は、ＣＰＵ１、ＣＰＵ２が、キャッシュメモリＣＭに格納した命令を実行する動作を示す。図８の下側にかぎ括弧で囲った動作は、ＣＰＵ１、ＣＰＵ２がキャッシュメモリＣＭを使用することなく、ＣＰＵ０−ＣＰＵ２のそれぞれが、ＲＯＭから命令を読み出して実行する動作を示す。
【００６９】
図８に示す例では、ＣＰＵ１、ＣＰＵ２のキャッシュメモリＣＭの記憶容量は、互いに同じである。このため、キャッシュメモリＣＭに読み出しアドレスおよび命令を格納する期間（斜線の矩形）は、ＣＰＵ１、ＣＰＵ２で互いに同じであり、キャッシュメモリＭＣに格納した命令を実行する期間（縦線の矩形）は、ＣＰＵ１、ＣＰＵ２で互いに同じである。
【００７０】
図８に示す例では、ＣＰＵ１、ＣＰＵ２がキャッシュメモリＣＭに命令を格納し、格納した命令が全て実行されるまで、ＣＰＵ０のみがＲＯＭにアクセスするため、アクセスの競合によりＣＰＵ０への命令の転送レートが低下することを抑止することができる。また、ＣＰＵ１、ＣＰＵ２は、ＣＰＵ０のＳＰＩバスに転送される読み出しアドレスおよび命令を受信するため、ＣＰＵ０の転送レートと同じ転送レートで読み出しアドレスおよび命令を受信することができる。キャッシュメモリＣＭに格納された命令のフェッチは、キャッシュヒットになるため、ＣＰＵ１、ＣＰＵ２は、ＲＯＭに格納された命令をフェッチする場合に比べて、効率よく命令を実行することができる。この結果、ＣＰＵ０−ＣＰＵ２のそれぞれがＲＯＭから命令を読み出して実行する場合に比べて、ＣＰＵ０−ＣＰＵ２が初期化を完了する時刻を早くすることができ、並列計算機１００Ａの初期化時間を短縮することができる。
【００７１】
以上、図３から図８に示す実施形態においても、図１および図２に示す実施形態と同様に、ＣＰＵ０−ＣＰＵ２のそれぞれがＲＯＭから命令を読み出して実行する場合に比べて、並列計算機１００Ａの起動が完了するまでの時間を短縮することができる。すなわち、ＣＰＵ１、ＣＰＵ２は、受信部ＲＳＶ１、ＲＳＶ２により、ＲＯＭにアクセスすることなく、ＲＯＭに格納された命令を受信することができ、ＲＯＭへのアクセスの競合を回避することができる。
【００７２】
さらに、図３から図８に示す実施形態では、ＣＰＵ１、ＣＰＵ２は、キャッシュメモリＣＭが満杯になった場合、ＲＯＭに直接アクセスし、ＲＯＭから読み出される命令を実行して、初期化処理を継続する。これにより、初期化プログラムがキャッシュメモリＣＭに入りきらない場合にも、ＣＰＵ１、ＣＰＵ２は、初期化処理を完了することができる。
【００７３】
図９は、並列計算機、並列計算機の初期化方法および起動プログラムの別の実施形態を示す。図３に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。この実施形態の並列計算機１００Ｂでは、各ＣＰＵ（ＣＰＵ０、ＣＰＵ１、ＣＰＵ２）は、複数のプロセッサコアＣＯＲＥ（ＣＯＲＥ０、ＣＯＲＥ１、ＣＯＲＥ２）を有する。並列計算機１００Ｂのその他の構成は、図３に示す並列計算機１００Ａの構成と同様である。
【００７４】
マスタデバイスであるＣＰＵ０の各プロセッサコアＣＯＲＥ０は、リセット信号ＲＳＴの解除に基づいて、ＲＯＭにアクセスし、ＲＯＭから命令（初期化プログラム）を読み出して実行し、ＣＰＵ０を初期化する。スレーブデバイスであるＣＰＵ１の各プロセッサコアＣＯＲＥ１は、リセット信号ＲＳＴの解除に基づいて、キャッシュメモリＣＭ１に命令が格納されるのを待ち、キャッシュメモリＣＭ１に格納された命令（初期化プログラム）を実行し、ＣＰＵ１を初期化する。スレーブデバイスであるＣＰＵ２の各プロセッサコアＣＯＲＥ２は、リセット信号ＲＳＴの解除に基づいて、キャッシュメモリＣＭ２に命令が格納されるのを待ち、キャッシュメモリＣＭ２に格納された命令（初期化プログラム）を実行し、ＣＰＵ２を初期化する。また、各プロセッサコアＣＯＲＥ１、ＣＯＲＥ２は、キャッシュメモリＣＭに格納された命令の実行だけでは初期化が完了しない場合（すなわち、初期化プログラムがキャッシュメモリＣＭに格納しきれない場合）、ＲＯＭから残りの命令を読み出して実行する。これにより、キャッシュメモリＣＭの記憶容量が初期化プログラムの容量より小さい場合にも、各プロセッサコアＣＯＲＥ１、ＣＯＲＥ２による初期化処理は継続される。
【００７５】
図１０は、図９に示すＣＰＵ１を含むノードＮＤ１の一例を示す。ＣＰＵ０、ＣＰＵ２も、図１０と同一または同様の構成を有する。並列計算機１００Ｂのネットワーク構成は、図４と同様である。図１０において、二重の四角印は、外部端子を示す。外部端子は、半導体チップ（ＣＰＵ１）上のパッド、あるいは半導体チップ（ＣＰＵ１）が収納されるパッケージのバンプまたはリード等である。マスタ端子ＭＳＴは、ＣＰＵ１チップが搭載される基板上で接地線ＶＳＳに接続される。
【００７６】
ＣＰＵ１は、複数のプロセッサコアＣＯＲＥ１（ＣＯＲＥ１０、ＣＯＲＥ１１、ＣＯＲＥ１２、ＣＯＲＥ１３）、メモリコントローラＭＣＮＴ１、キャッシュメモリＣＭ１およびキャッシュコントローラＣＭＣＮＴ１を有する。また、ＣＰＵ１は、システムバスＢＵＳ、ネットワークインタフェースＮＷＩ／Ｆ１、通信インタフェース部ＳＰＩ１および受信部ＲＳＶ１を有する。
【００７７】
プロセッサコアＣＯＲＥ１０−ＣＯＲＥ１３、キャッシュコントローラＣＭＣＮＴ１、ネットワークインタフェースＮＷＩ／Ｆ１、通信インタフェース部ＳＰＩ１および受信部ＲＳＶ１は、システムバスＢＵＳを介して互いに接続される。ネットワークインタフェースＮＷＩ／Ｆ１は、図４に示すネットワークスイッチＮＷＳＷを介して、他のノードＮＤに接続される。
【００７８】
図１１は、図９に示す並列計算機１００Ｂの初期化時間の短縮効果の一例を示す。図８と同じ要素については、詳細な説明は省略する。なお、図１１では、説明を分かりやすくするために、各ＣＰＵは、２つのプロセッサコアＣＯＲＥを有するものとする。
【００７９】
図１１に示す動作は、各ＣＰＵの複数のプロセッサコアＣＯＲＥが初期化プログラムをそれぞれ実行することを除き、図８に示す動作と同様である。すなわち、各ＣＰＵの複数のプロセッサコアＣＯＲＥは、リセット信号ＲＳＴの解除に基づいて、ＲＯＭに格納された初期化プログラムを実行することで初期化処理を実行する。各ＣＰＵのプロセッサコアＣＯＲＥは、図５と同様に初期化処理を実行する。なお、図５に示すステップＳ１１０−Ｓ１２４は、ＣＰＵ１、ＣＰＵ２の各プロセッサコアＣＯＲＥが実行する起動プログラムにより実現されてもよい。
【００８０】
ＣＰＵ０が、２つのプロセッサコアＣＯＲＥを有する場合、各プロセッサコアＣＯＲＥがＲＯＭから命令を読み出すため、ＣＰＵ０のＳＰＩバスには、読み出し要求（読み出しコマンド、読み出しアドレス）および命令が２回ずつ転送される。各ＣＰＵ１、ＣＰＵ２の受信部ＲＳＶは、２回のＲＯＭへのアクセスのうち、最初のアクセスの読み出しコマンドを、読み出しアドレスに基づいて検出し、読み出しアドレスおよび命令をキャッシュメモリＣＭに格納する。換言すれば、同じ読み出しアドレスが連続して検出される場合、受信部ＲＳＶは、最初の読み出しアドレスを有効と判断する。なお、ＣＰＵ０のプロセッサコアＣＯＲＥ００が、プロセッサコアＣＯＲＥ００によるアクセスであることを示す識別情報を読み出しコマンドとともに出力してもよい。この場合、ＣＰＵ１、ＣＰＵ２の受信部ＲＳＶは、識別情報に基づいて、プロセッサコアＣＯＲＥ００とＲＯＭとの間で転送される読み出しアドレスおよび命令のみを受信することができる。
【００８１】
ＣＰＵ１において、命令を格納するキャッシュメモリＣＭの記憶領域が足りなくなった場合、プロセッサコアＣＯＲＥ１０、ＣＯＲＥ１１は、キャッシュメモリＣＭに格納された命令を読み出して実行するためにメモリアクセス要求を出力する。メモリアクセス要求は、例えば、キャッシュコントローラＣＭＣＮＴ内に設けられる調停部により調停される。キャッシュコントローラＣＭＣＮＴは、プロセッサコアＣＯＲＥ１０、ＣＯＲＥ１１からのメモリアクセス要求を交互に受け付け、受け付けたメモリアクセス要求をキャッシュメモリＣＭに出力する。そして、プロセッサコアＣＯＲＥ１０、ＣＯＲＥ１１は、キャッシュメモリＣＭから命令を交互に受信し、初期化処理を実行する。ＣＰＵ２のプロセッサコアＣＯＲＥ２０、ＣＯＲＥ２１も、プロセッサコアＣＯＲＥ１０、ＣＯＲＥ１１と同様に動作する。
【００８２】
ＣＰＵ０の各プロセッサコアＣＯＲＥは、図８と同様に、リセット解除に基づいて、ＲＯＭにアクセスし、ＲＯＭから命令を交互に読み出し、読み出した命令を実行する。各ＣＰＵ１、ＣＰＵ２の各プロセッサコアＣＯＲＥは、図８と同様に、キャッシュメモリＣＭに格納された命令を実行した後、ＲＯＭにアクセスして、ＲＯＭから命令を交互に読み出し、読み出した命令を実行する。この際、例えば、各ＣＰＵ０−ＣＰＵ２の複数のプロセッサコアＣＯＲＥは、各プロセッサコアＣＯＲＥにより制御される個別のハードウェア等の初期化を実行する。そして、個別のハードウェア等の初期化が完了した後、複数のプロセッサコアＣＯＲＥのいずれか１つが複数のプロセッサコアＣＯＲＥで使用する共通のハードウェア等の初期化を実行する。図１１に示す例では、プロセッサコアＣＯＲＥ００、ＣＯＲＥ１０、ＣＯＲＥ２０が、共通のハードウェア等の初期化を実行する。
【００８３】
このように、各ＣＰＵの初期化処理の前半において、複数のプロセッサコアＣＯＲＥが個別のハードウェア等の初期化を実行し、各ＣＰＵの初期化処理の後半において、プロセッサコアＣＯＲＥのいずれかが共通のハードウェア等の初期化を実行する。初期化処理の前半は、初期化処理の後半に比べて、ＲＯＭにアクセスするプロセッサコアＣＯＲＥの数が多いため、ＲＯＭへのアクセスが競合しやすい。
【００８４】
この実施形態では、ＲＯＭへのアクセスが競合しやすい初期化処理の前半において、ＣＰＵ１、ＣＰＵ２は、ＲＯＭにアクセスすることなくＲＯＭに格納された命令を取得する。ＲＯＭへのアクセスが競合しやすい期間に、競合を避ける動作を実行することで、いわゆるマルチコアタイプのＣＰＵを含む並列計算機１００Ｂにおいて、起動が完了するまで時間をさらに短縮することができる。
【００８５】
以上、図９から図１１に示す実施形態においても、図１から図８に示す実施形態と同様に、ＣＰＵ０−ＣＰＵ２のそれぞれがＲＯＭから命令を読み出して実行する場合に比べて、並列計算機１００Ｂの起動が完了するまでの時間を短縮することができる。さらに、図９から図１１に示す実施形態では、各ＣＰＵが複数のプロセッサコアＣＯＲＥを有する場合にも、並列計算機１００Ｂの起動が完了するまでの時間を短縮することができる。
【００８６】
図１２は、図３および図９に示す接続制御回路ＣＣＮＴの別の例を示す。図１２に示す接続制御回路ＣＣＮＴ１は、図３および図９に示す接続制御回路ＣＣＮＴに接続部ＣＮ１、ＣＮ２を追加している。なお、図１２では、調停部ＡＲＢの記載は省略する。
【００８７】
接続部ＣＮ１は、ＣＰＵ１のＳＰＩバスとＣＰＵ０のＳＰＩバスとの間に配置され、接続部ＣＮ２は、ＣＰＵ２のＳＰＩバスとＣＰＵ０のＳＰＩバスとの間に配置される。受信部ＲＳＶ１は、ＣＰＵ１のＳＰＩバスおよび接続部ＣＮ１を介してＣＰＵ０のＳＰＩバスに接続され、受信部ＲＳＶ２は、ＣＰＵ２のＳＰＩバスおよび接続部ＣＮ２を介してＣＰＵ０のＳＰＩバスに接続される。
【００８８】
接続部ＣＮ１は、ＣＰＵ１の通信インタフェース部ＳＰＩ１からの切り替え信号ＳＷ１に基づいて、ＣＰＵ０のＳＰＩバスをＣＰＵ１のＳＰＩバスに接続し、あるいは、ＣＰＵ０のＳＰＩバスとＣＰＵ１のＳＰＩバスとの接続を遮断する。接続部ＣＮ２は、ＣＰＵ２の通信インタフェース部ＳＰＩ２からの切り替え信号ＳＷ２に基づいて、ＣＰＵ０のＳＰＩバスをＣＰＵ２のＳＰＩバスに接続し、あるいは、ＣＰＵ０のＳＰＩバスとＣＰＵ２のＳＰＩバスとの接続を遮断する。切り替え信号ＳＷ１（ＳＷ２）は、ＣＰＵ０のＳＰＩバスをＣＰＵ１（ＣＰＵ２）のＳＰＩバスに接続させる接続指示の一例である。
【００８９】
通信インタフェース部ＳＰＩ１は、ＣＰＵ０のＳＰＩバスに転送される読み出しアドレスおよび命令を受信部ＲＳＶに検出させる場合、ＣＰＵ０のＳＰＩバスをＣＰＵ１のＳＰＩバスに接続する切り替え信号ＳＷ１を出力する。同様に、通信インタフェース部ＳＰＩ２は、ＣＰＵ０のＳＰＩバスに転送される読み出しアドレスおよび命令を受信部ＲＳＶに検出させる場合、ＣＰＵ０のＳＰＩバスをＣＰＵ２のＳＰＩバスに接続する切り替え信号ＳＷ２を出力する。すなわち、各通信インタフェース部ＳＰＩ１、ＳＰＩ２は、読み出しアドレスおよび命令を格納する余裕がキャッシュメモリＣＭにある場合、ＣＰＵ０のＳＰＩバスを各ＣＰＵ１、ＣＰＵ２のＳＰＩバスに接続する。
【００９０】
通信インタフェース部ＳＰＩ１は、接続部ＣＮ１を介して、ＣＰＵ０のＳＰＩバスをＣＰＵ１のＳＰＩバスに接続している間、ＣＰＵ１のＳＰＩバスをフローティング状態に設定する。同様に、通信インタフェース部ＳＰＩ１は、接続部ＣＮ２介して、ＣＰＵ０のＳＰＩバスをＣＰＵ２のＳＰＩバスに接続している間、ＣＰＵ２のＳＰＩバスをフローティング状態に設定する。接続部ＣＮ１、ＣＮ２をＣＰＵ０のＳＰＩバスに接続することで、受信部ＲＳＶ１、ＲＳＶ２は、ＣＰＵ０とＲＯＭとの間で転送されるアドレスおよび命令のみを受信することができる。
【００９１】
セレクタＳＥＬに接続部ＣＮ１を設けることにより、受信部ＲＳＶ１は、ＣＰＵ１のＳＰＩバスを介してＣＰＵ０のＳＰＩバスに転送される読み出し要求および命令を取得することができる。同様に、セレクタＳＥＬに接続部ＣＮ２を設けることにより、受信部ＲＳＶ２は、ＣＰＵ２のＳＰＩバスを介してＣＰＵ０のＳＰＩバスに転送される読み出し要求および命令を取得することができる。すなわち、受信部ＲＳＶ１、ＲＳＶ２は、ＣＰＵ０のＳＰＩバスに直接接続されることなく、ＣＰＵ０のＳＰＩバスに転送される読み出し要求および命令を受信することができる。換言すれば、受信部ＲＳＶ１、ＲＳＶ２は、ＣＰＵ１、ＣＰＵ２のＳＰＩバスをそれぞれ利用して、ＣＰＵ０のＳＰＩバスに転送される読み出し要求および命令を受信することができる。この結果、図３および図８に比べて、ＣＰＵ０−ＣＰＵ２と接続制御装置ＣＣＮＴ１との間に配線される信号線の数を削減することができ、配線領域を小さくすることができる。この結果、ＣＰＵ０−ＣＰＵ２が搭載される基板の面積を小さくすることができる。
【００９２】
図１３は、図１２に示す接続制御装置ＣＣＮＴ１を有する並列計算機の初期化時間の短縮効果の一例を示す。図１３は、図１２に示す接続制御装置ＣＣＮＴ１を有する並列計算機の各ＣＰＵ０−ＣＰＵ２が、図３と同様に、１つのプロセッサコアＣＯＲＥを有する場合を示す。図８と同じ要素については、詳細な説明は省略する。
【００９３】
例えば、ＣＰＵ１のキャッシュメモリＣＭの記憶容量は、図８に示すＣＰＵ１のキャッシュメモリＣＭの記憶容量と同じであり、ＣＰＵ２のキャッシュメモリＣＭの記憶容量は、図８に示すＣＰＵ２のキャッシュメモリＣＭの記憶容量より大きい。すなわち、ＣＰＵ１のキャッシュメモリＣＭが格納できる命令数は、ＣＰＵ２のキャッシュメモリＣＭが格納できる命令数より少ない。
【００９４】
このため、ＣＰＵ１がキャッシュメモリＣＭに格納した命令の実行を開始するタイミングは、ＣＰＵ２がキャッシュメモリＣＭに格納した命令の実行を開始するタイミングより早くなる。また、ＣＰＵ１がキャッシュメモリＣＭに格納した命令を実行する期間は、ＣＰＵ２がキャッシュメモリＣＭに格納した命令を実行する期間より短くなる。このため、ＣＰＵ１は、ＣＰＵ２に比べて、早いタイミングでＲＯＭへのアクセスを開始し、ＲＯＭから命令を読み出す。なお、ＣＰＵ１、ＣＰＵ２に搭載されるキャッシュメモリＣＭの記憶容量が互いに同じ場合の動作は、図８と同じになる。
【００９５】
ＣＰＵ１は、キャッシュメモリＣＭ１に格納した命令を実行する前に、遮断指示を示す切り替え信号ＳＷ１を出力し、ＣＰＵ０のＳＰＩバスとＣＰＵ１のＳＰＩバスとの接続を遮断する。同様に、ＣＰＵ２は、キャッシュメモリＣＭ２に格納した命令を実行する前に、遮断指示を示す切り替え信号ＳＷ２を出力し、ＣＰＵ０のＳＰＩバスとＣＰＵ２のＳＰＩバスとの接続を遮断する。したがって、ＣＰＵ１がＲＯＭへのアクセスを実行する場合に、ＣＰＵ１のＳＰＩバスがＣＰＵ０のＳＰＩバスの電圧の影響を受けることを抑止することができる。同様に、ＣＰＵ２がＲＯＭへのアクセスを実行する場合に、ＣＰＵ２のＳＰＩバスがＣＰＵ０のＳＰＩバスの電圧の影響を受けることを抑止することができる。この結果、ＣＰＵ１、ＣＰＵ２は、ＲＯＭを正常にアクセスすることができ、ＲＯＭから命令を読み出すことができる。また、キャッシュメモリＣＭ１、ＣＭ２の記憶容量が互いに異なる場合にも、各ＣＰＵ１、ＣＰＵ２は、初期化プログラムをそれぞれ実行し、各ＣＰＵ１、ＣＰＵ２の初期化処理を実行することができる。
【００９６】
また、ＣＰＵ２は、図８のＣＰＵ２に比べて、多くの命令をキャッシュメモリＣＭに格納するため、ＲＯＭから読み出す命令数は、図８に比べて少なくなる。したがって、図８に比べて、ＣＰＵ０−ＣＰＵ２によるＲＯＭへのアクセス回数を減らすことができ、アクセスの競合を減らすことができる。この結果、ＣＰＵ１−ＣＰＵ２が初期化を完了する時刻を早くすることができ、並列計算機の初期化時間をさらに短縮することができる。なお、各ＣＰＵ０−ＣＰＵ２が、複数のプロセッサコアＣＯＲＥを有する場合にも、ＣＰＵ１−ＣＰＵ２が初期化を完了する時刻を図１１に比べて早くすることができる。
【００９７】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行する第１の演算処理装置と、
キャッシュメモリを含み、前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した命令を実行することで前記初期化処理を実行する第２の演算処理装置を有することを特徴とする並列計算機。
（付記２）
前記第２の演算処理装置は、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を格納する前記キャッシュメモリの記憶領域が足りない場合、前記キャッシュメモリに格納した命令の実行後に、前記初期化プログラムのうちの未実行の命令を読み出す第２の読み出し要求を前記第１の記憶装置に出力し、前記第２の読み出し要求に基づいて前記第１の記憶装置から出力される前記未実行の命令を実行することで前記初期化処理を完了することを特徴とする付記１記載の並列計算機。
（付記３）
前記第２の演算処理装置は、
前記第１の演算処理装置から出力される前記第１の読み出し要求の検出に基づいて、前記第１の読み出し要求に含まれるアドレスと、命令とを受信する受信部と、
前記第２の読み出し要求を前記第１の記憶装置に出力し、前記第２の読み出し要求に基づいて前記第１の記憶装置から出力される前記未実行の命令を受信する送受信部を有することを特徴とする付記２記載の並列計算機。
（付記４）
並列計算機はさらに、前記第１の演算処理装置および前記第２の演算処理装置からそれぞれ受信する前記第１の記憶装置への接続要求に基づいて、前記第１の演算処理装置または前記第２の演算処理装置のいずれかを前記第１の記憶装置に接続する接続制御装置を有し、
前記受信部は、前記第１の演算処理装置を前記接続制御装置に接続する信号線に伝達される前記第１の読み出し要求と命令とを検出することを特徴とする付記３記載の並列計算機。
（付記５）
前記接続制御装置は、
前記接続要求を調停する調停部と、
前記調停部による調停結果に基づいて、前記第１の記憶装置を前記第１の演算処理装置または前記第２の演算処理装置のいずれかに接続する接続切り替え部を有することを特徴とする付記４記載の並列計算機。
（付記６）
並列計算機は、複数の前記第２の演算処理装置と、前記第１の演算処理装置を複数の前記第２の演算処理装置にそれぞれ接続する複数の接続部を有し、
複数の前記第２の演算処理装置の各々は、前記第１の読み出し要求と命令とを検出する場合、前記複数の接続部のうちの対応する接続部に、前記第１の演算処理装置との接続を指示する接続指示を出力することを特徴とする付記２ないし付記５のいずれか１項記載の並列計算機。
（付記７）
複数の前記第２の演算処理装置の各々は、前記第２の読み出し要求を前記第１の記憶装置に出力して前記未実行の命令を受信する場合、前記複数の接続部のうちの対応する接続部に、前記第１の演算処理装置との接続を遮断する遮断指示を出力することを特徴とする付記６記載の並列計算機。
（付記８）
前記第２の演算処理装置は、前記キャッシュメモリに格納した命令を実行後、前記キャッシュメモリに格納したアドレスおよび命令を削除し、
前記キャッシュメモリは、アドレスおよび命令が削除された後、前記第２の演算処理装置に接続された主記憶装置に格納された情報の一部をアドレスとともに記憶することを特徴とする付記１ないし付記７のいずれか１項記載の並列計算機。
（付記９）
並列計算機はさらに、第２の記憶装置と、前記第１の演算処理装置に接続された第１の主記憶装置と、前記第２の演算処理装置に接続された第２の主記憶装置を有し、
前記第１の演算処理装置は、初期化が完了した後、前記第２の記憶装置から前記第１の主記憶装置に転送されたプログラムを実行し、
前記第２の演算処理装置は、初期化が完了した後、前記第２の記憶装置から前記第２の主記憶装置に転送されたプログラムを実行することを特徴とする付記１ないし付記７のいずれか１項記載の並列計算機。
（付記１０）
前記第１の演算処理装置および前記第２の演算処理装置の各々は、複数のプロセッサコアを有し、
前記第１の記憶装置から出力される命令の一部は、前記複数のプロセッサにより実行され、前記一部を除く命令は、前記複数のプロセッサコアのいずれかにより実行されることを特徴とする付記１ないし付記９のいずれか１項記載の並列計算機。
（付記１１）
第１の演算処理装置と、キャッシュメモリを含む第２の演算処理装置とを有する並列計算機の初期化方法において、
前記第１の演算処理装置が、並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行し、
前記第２の演算処理装置が、前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した命令を実行することで前記初期化処理を実行する並列計算機の初期化方法。
（付記１２）
並列計算機を起動する起動指示に基づいて、初期化処理を実行する初期化プログラムの命令を読み出す第１の読み出し要求を第１の記憶装置に出力し、前記第１の読み出し要求に基づいて前記第１の記憶装置から出力される命令を実行することで前記初期化処理を実行する第１の演算処理装置とともに並列計算機に搭載される第２の演算処理装置に前記初期化処理を実行させる起動プログラムにおいて、
前記起動指示に基づいて、前記第１の演算処理装置から出力される前記第１の読み出し要求と前記第１の記憶装置から出力される命令とを検出した場合、検出した前記第１の読み出し要求に含まれるアドレスと、検出した命令とを前記第２の演算処理装置が有するキャッシュメモリに格納し、
前記キャッシュメモリに格納した命令を実行する
処理を前記第２の演算処理装置に実行させることを特徴とする起動プログラム。
【００９８】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００９９】
１０、２０…演算処理装置；２２…キャッシュメモリ；３０…記憶装置；１００、１００Ａ、１００Ｂ…並列計算機；ＡＲＢ…調停部；ＢＵＳ…システムバス；ＣＣＮＴ、ＣＣＮＴ１…接続制御装置；ＣＭ（ＣＭ０、ＣＭ１、ＣＭ２）…キャッシュメモリ；ＣＭＣＮＴ（ＣＭＣＮＴ０、ＣＭＣＮＴ１、ＣＭＣＮＴ２）…キャッシュコントローラ；ＣＮ１、ＣＮ２…接続部；ＣＯＲＥ（ＣＯＲＥ０、ＣＯＲＥ１、ＣＯＲＥ２）…プロセッサコア；ＨＤＤ…ハードディスクドライブ；ＭＢ…メモリバス；ＭＣＮＴ１…メモリコントローラ；ＭＭ（ＭＭ０、ＭＭ１、ＭＭ２）…主記憶装置；ＭＳＴ…マスタ端子；ＮＤ（ＮＤ０−ＮＤ８）…ノード；ＮＷＩ／Ｆ１…ネットワークインタフェース；ＮＷＳＷ…ネットワークスイッチ；ＲＳＴ…リセット信号；ＲＳＶ（ＲＳＶ０、ＲＳＶ１、ＲＳＶ２）…受信インタフェース部；ＳＥＬ…セレクタ；ＳＰＩ（ＳＰＩ０、ＳＰＩ１、ＳＰＩ２）…通信インタフェース部；ＳＷ１、ＳＷ２…切り替え信号
【図１】
0006455353.tif 000002
【図２】
0006455353.tif 000003
【図３】
0006455353.tif 000004
【図４】
0006455353.tif 000005
【図５】
0006455353.tif 000006
【図６】
0006455353.tif 000007
【図７】
0006455353.tif 000008
【図８】
0006455353.tif 000009
【図９】
0006455353.tif 000010
【図１０】
0006455353.tif 000011
【図１１】
0006455353.tif 000012
【図１２】
0006455353.tif 000013
【図１３】
0006455353.tif 000014