(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備え、
前記制御コアは、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御部を備え、
前記計算コアは、前記計算コア制御部からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御部と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出部と、を備え、
前記計算コアは、前記例外検出部により検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送手段を備え、
前記制御コアは、前記データ転送手段により転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理部を備え、
前記データ転送手段は、前記計算コアにて発生した前記例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアの前記例外処理代理部が有するバッファ領域に転送するように構成された、
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記制御コアの前記計算コア制御部は、前記例外検出部により検出した前記例外処理に応じて前記計算コアに対して前記計算処理の開始を指示するように構成され、
前記計算コアの前記計算処理制御部は、前記計算コア制御部から前記計算処理の開始の指示を受けた場合に、当該計算処理を開始するように前記計算コアを制御する、
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記計算コアの前記例外検出部は、当該例外検出部が前記例外処理を検出した旨を前記制御コアに通知するように構成され、
前記制御コアの前記計算コア制御部は、前記例外検出部から受けた通知が示す前記例外処理に応じて前記計算コアに対して前記計算処理の開始の指示をする、
情報処理装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の情報処理装置であって、
前記制御コアの前記計算コア制御部は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示することが出来るように構成されるとともに、前記計算処理を停止中の前記計算コアに対して当該計算コアによる処理の対象となる前記計算処理の内容を変更する指示を行うことが出来るように構成され、
前記計算コアの前記計算処理制御部は、前記計算コア制御部からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算コアを制御し、前記計算コア制御部からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記計算コアが行う前記計算処理の数が前記計算コアの数よりも多い場合、
前記制御コアの前記計算コア制御部は、予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理装置。
【請求項６】
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備え、
前記制御コアは、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御部を備え、
前記計算コアは、前記計算コア制御部からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御部と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出部と、を備え、
前記制御コアの前記計算コア制御部は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示することが出来るように構成されるとともに、前記計算処理を停止中の前記計算コアに対して当該計算コアによる処理の対象となる前記計算処理の内容を変更する指示を行うことが出来るように構成され、
前記計算コアの前記計算処理制御部は、前記計算コア制御部からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算コアを制御し、前記計算コア制御部からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更し、
前記計算コアが行う前記計算処理の数が前記計算コアの数よりも多い場合、
前記制御コアの前記計算コア制御部は、予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理装置。
【請求項７】
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置の前記制御コアに、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御手段を実現させ、
前記計算コアに、前記計算コア制御手段からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出手段と、を実現させ、
前記計算コアに、前記例外検出手段により検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送手段を実現させ、
前記制御コアに、前記データ転送手段により転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理手段を実現させ、
前記データ転送手段は、前記計算コアにて発生した前記例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアの前記例外処理代理手段が有するバッファ領域に転送する、
プログラム。
【請求項８】
請求項７に記載のプログラムであって、
前記例外検出手段は、当該例外検出手段が前記例外処理を検出した旨を前記制御コアに通知する機能を有する、
プログラム。
【請求項９】
請求項７又は８に記載のプログラムであって、
前記計算コア制御手段は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示する機能を有するとともに、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容を変更する機能を有し、
前記計算処理制御手段は、前記計算コア制御手段からの前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する機能と、前記計算コア制御手段からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する機能と、を有する、
プログラム。
【請求項１０】
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置の前記制御コアに、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御手段を実現させ、
前記計算コアに、前記計算コア制御手段からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出手段と、を実現させ、
前記計算コア制御手段は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示する機能を有するとともに、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容を変更する機能を有し、
前記計算処理制御手段は、前記計算コア制御手段からの前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する機能と、前記計算コア制御手段からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する機能と、を有し、
前記計算コアが行う前記計算処理の数が前記計算コアの数よりも多い場合、
前記計算コア制御手段は、予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
プログラム。
【請求項１１】
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置による情報処理方法であって、
前記制御コアからの計算処理の開始の指示に応じて前記計算コアが所定の前記計算処理を開始し、
前記計算コアは、前記計算コアによる前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止し、
前記計算コアは、前記例外処理を処理する際に必要なデータを前記制御コアに転送し、
前記制御コアは、転送された前記データを用いて前記計算コアを代理して前記例外処理を処理し、
前記計算コアは、当該計算コアにて発生した前記例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアが有するバッファ領域に書き込む、
情報処理方法。
【請求項１２】
請求項１１に記載の情報処理方法であって、
前記計算コアは、前記例外処理を検出した場合、当該例外処理を検出した旨を前記制御コアに通知する、
情報処理方法。
【請求項１３】
請求項１１又は１２に記載の情報処理方法であって、
前記制御コアは、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容の変更を指示し、
前記計算コアは、前記制御コアからの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理方法。
【請求項１４】
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置による情報処理方法であって、
前記制御コアからの計算処理の開始の指示に応じて前記計算コアが所定の前記計算処理を開始し、
前記計算コアは、前記計算コアによる前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止し、
前記制御コアは、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容の変更を指示し、
前記計算コアは、前記制御コアからの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更し、
前記計算コアが行う前記計算処理の数が前記計算コアの数よりも多い場合、
前記制御コアは、予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、プログラム、計算処理装置、計算処理方法に係り、特に、複数のプロセッサを備え並列計算を行う情報処理装置、情報処理方法、プログラム、計算処理装置、計算処理方法に関する。
【背景技術】
【０００２】
プロセッサとメモリの対からなる複数のノードをインターコネクトで接続した、ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）型の並列計算機が知られている。ＮＵＭＡ型の並列計算機は、プロセッサと同一ノードのローカルメモリに対するアクセスコストと、他ノードのリモートメモリに対するアクセスコストと、が不均一になるシステムである。
【０００３】
このような並列計算機の一例として、１台以上のプロセッサと、該１台以上のプロセッサにより使用される主メモリと、からなる複数のクラスタを備え、プロセスの仮想空間の一部に実メモリに常駐する通信領域を設けた並列計算機が知られている。このように構成することで、プロセス間データ通信のオーバーヘッドを削減することが可能な並列計算機を構成することが出来る（特許文献１）
【０００４】
また、制御用ノードと演算用ノードとを備え、演算用ノードにリモートプロセスのみを実行するように設定することが出来る計算機システムが知られている（特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０６−０１９８５６号公報
【特許文献２】特開２００８−１６５３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般に、このような並列計算機では、ＯＳ等のシステム制御プログラムからの干渉（タイマ割り込み等）に起因する割り込み処理が発生することで、各ノードのアプリケーションの実行速度にばらつきが出ることがある。その結果、他プロセッサとの同期待ちが必要となり、並行プログラムの実行速度が低下するＯＳジッタ問題と呼ばれる問題が発生することがある。
【０００７】
また、カーネルプロセス等のＯＳ処理が動作した時に発生したメモリアクセスにより、キャッシュにアプリケーションプログラムが利用しないデータが格納されることがある。その結果、アプリケーションプログラムが利用するデータがキャッシュから追い出されるキャッシュ汚染と呼ばれる問題が発生することがある。
【０００８】
このような問題を解決する手法としては、例えば、ＳＭＰ計算機におけるロックの制約によるシステムコールを実行するプロセッサの限定、マイクロカーネルによる分散ＯＳ、などがある。しかしながら、これらＯＳ機能の他のノードへの権限移譲（オフロード）という方法では、接続されるＩ／Ｏデバイス毎に専用のデバイスドライバを開発する必要が生じることになる。その結果、多様なデバイスのサポートをすることが困難になっていた。
【０００９】
また、このような問題を緩和する方法として、アクセラレータ型の計算機を採用することも考えられる。しかしながら、アクセラレータ型の計算機ではＯＳが動作しないため、広く普及しているプラグラミング言語（Ｃ言語など）が期待するＡＰＩ（ＰＯＳＩＸ  ＡＰＩ等）がなく、基本的なシステム制御を行うことができない。そのため、アクセラレータ型計算機においては、専用言語での開発が必要となっており、過去のプログラミング資産の活用を困難なものにしていた。また、最適化などにも困難を伴う場合を生じていた。
【００１０】
ここで、ＯＳ開発コストを低減するための技術としては、仮想機械による仮想化も考えられる。例えば、コモディティとは異なるアーキテクチャの計算機に対して、コモディティのアーキテクチャをエミュレートする仮想機械を導入することで、ＯＳやデバイスドライバの開発を不要とすることが出来る。一般に、仮想機械は通常ＯＳよりも単純である。そのため、仮想機械を導入することで開発コストを低減することが出来ると考えられる。しかしながら、仮想機械による仮想化を行うと、仮想機械によるエミュレーションのためにオーバーヘッドが発生してしまう。また、仮想機械による仮想化では、上述したジッタやキャッシュの汚染という問題を解決することは出来ない。
【００１１】
このように、並列計算機にはＯＳジッタやキャッシュ汚染の問題が生じており、それを解決しようとすると、汎用性を失ったり開発費が高騰するなどの問題が生じていた。
【００１２】
そこで、本発明の目的は、上述した課題である、並列計算機にはＯＳジッタやキャッシュ汚染が生じるという問題、及び、汎用性の喪失、開発費の高騰という問題、を解決する情報処理装置を提供することにある。
【課題を解決するための手段】
【００１３】
かかる目的を達成するため本発明の一形態である情報処理装置は、
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備え、
前記制御コアは、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御部を備え、
前記計算コアは、前記計算コア制御部からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御部と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出部と、を備えた、
という構成を採る。
【００１４】
また、本発明の他の形態であるプログラムは、
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置の前記制御コアに、停止している前記計算コアに対して当該計算コアが行う計算処理の開始を指示する計算コア制御手段を実現させ、
前記計算コアに、前記計算コア制御手段からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出手段と、を実現させるための、
プログラムである。
【００１５】
また、本発明の他の形態である情報処理方法は、
制御コアからの計算処理の開始の指示に応じて計算コアが所定の前記計算処理を開始し、
前記計算コアは、前記計算コアによる前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
という構成を採る。
【００１６】
また、本発明の他の形態である計算処理装置は、
外部装置からの制御により所定の計算処理を行う計算処理装置であって、
外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御部と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出部と、を備えた、
という構成を採る。
【００１７】
また、本発明の他の形態であるプログラムは、
計算処理装置に、
外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出手段と、を実現させるための、
プログラムである。
【００１８】
また、本発明の他の形態である計算処理方法は、
外部装置からの計算処理の開始の指示に応じて所定の前記計算処理を開始し、
前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
という構成を採る。
【発明の効果】
【００１９】
本発明は、以上のように構成されることにより、ＯＳジッタやキャッシュ汚染の問題を解決しつつ安価で汎用性のある情報処理装置を提供することが出来る。
【図面の簡単な説明】
【００２０】
【図１】第１の実施形態が想定する並列計算機の構成を示すブロック図である。
【図２】第１の実施形態における並列計算機の構成を示すブロック図である。
【図３】図２で示す計算ノードが備える計算コアの構成を示すブロック図である。
【図４】図２で示す代理プロセスの構成を示す機能ブロック図である。
【図５】第１の実施形態におけるプロセス対応表５２２に対応づけて格納するデータの一例を示す表である。
【図６】第１の実施形態における計算プロセスＤＢ５２１に格納するデータの一例を示す表である。
【図７】第１の実施形態において、計算プロセスが開始してから終了するまでに、必要となる動作がどのように作用するかを示したフローチャートである。
【図８】計算プロセスの開始時の動作を示すフローチャートである。
【図９】計算プロセスの実行を停止させるときの動作を示すフローチャートである。
【図１０】計算プロセス上で発生した例外を処理する際の動作を示すフローチャートである。
【図１１】計算プロセスがＯＳサービスを必要とする場合の動作を示すフローチャートである。
【図１２】計算プロセスの計算コアへの割り当ての変更を行う際の動作を示すフローチャートである
【図１３】計算プロセスを終了させる際の動作を示すフローチャートである。
【図１４】第２の実施形態における情報処理装置の構成を示すブロック図である。
【図１５】第３の実施形態における情報処理装置の構成の概略を示すブロック図である。
【図１６】図４の実施形態における計算処理装置の構成の概略を示すブロック図である。
【発明を実施するための形態】
【００２１】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１３を用いて説明する。図１は、本実施形態が想定する並列計算機１の構成を示すブロック図である。図２は、本実施形態における並列計算機１の構成を示すブロック図である。図３は、計算ノード６が備える計算コア６１１の構成を示すブロック図である。図４は、代理プロセス５１１の構成を示す機能ブロック図である。図５は、プロセス対応表５２２に対応づけて格納するデータの一例を示す表である。図６は、計算プロセスＤＢ５２１に格納するデータの一例を示す表である。図７は、第１の実施形態において、計算プロセスが開始してから終了するまでに、必要となる動作がどのように作用するかを示したフローチャートである。図８乃至１３は、計算プロセスが開始してから終了するまでに必要となる動作を示すフローチャートである。
【００２２】
（構成）
本発明の第１の実施形態では、ＮＵＭＡ型のメモリを持つ並列計算機１について説明する。ＮＵＭＡとは、メモリとプロセッサとの対からなるノードが複数存在し、それらをインターコネクトで接続したものである。本実施形態における並列計算機１は、例えば、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）分野において利用される。
【００２３】
まず、本発明の対象となる並列計算機１の基本的な構成について図１を用いて説明する。図１で示すように、本実施形態における並列計算機１は、ＣＰＵ２１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、メモリ２２と、データ転送手段２３と、を備えるノード２と、ＣＰＵ３１と、メモリ３２と、データ転送手段３３と、を備えるノード３と、を備えて構成されている。また、ノード２とノード３との間は、ノード間通信手段４（データ転送手段の一部）を介して通信可能なように接続されている。
【００２４】
このように、本実施形態における並列計算機１が備えるノード２とノード３とは共に、ＣＰＵ（２１、３１）と、メモリ（２２、３２）と、データ転送手段（２３、３３）（データ転送手段の一部）と、を備えて構成されている。また、ノード２とノード３とが備える各構成は、同様のものとなる。そのため、以下においては、ノード２の構成について説明する。
【００２５】
なお、本実施形態においては、並列計算機１が備えるノードの数が２つの場合について説明する。しかしながら、本発明における並列計算機１は、２つ以上の複数のノードを備えて構成しても構わない。また、各ノードは、ｘ８６とＡＲＭ等のように、異なるアーキテクチャを採用しても構わない。
【００２６】
ＣＰＵ２１は、単数、または、複数のプロセッサコアを備えて構成されている。本実施形態においては、ＣＰＵ２１は、プロセッサコア２１１、２１２、…、２１ｍの複数のプロセッサコアを備えている（以下、特に区別しない場合は、プロセッサコア２１１とする）。また、それぞれのプロセッサコア２１１は、メモリ２２と、データ転送手段２３と、に対する通信経路を備えている。つまり、ＣＰＵ２１が備える複数のプロセッサコア２１１のそれぞれは、メモリ２２、データ転送手段２３、と通信可能なように構成されている。
【００２７】
メモリ２２は、データや実行するプログラムなどを記憶する部分である。メモリ２２は、ＣＰＵ２１が備える複数のプロセッサコア２１１（同一ノードのプロセッサコア）が共有する。本実施形態におけるメモリ２２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの半導体メモリにより構成される。
【００２８】
データ転送手段２３は、ＤＭＡ（Ｄｉｒｅｃｔ
Ｍｅｍｏｒｙ Ａｃｃｅｓｓ）エンジン機能２３１と、対ＣＰＵ通信機能２３２と、の２つの機能を備えて構成されている。ＤＭＡエンジン機能２３１は、ＣＰＵ２１を介さずにメモリ２２に対してアクセスするための機能である。対ＣＰＵ通信機能２３２は、ＣＰＵ２１上のレジスタなどの資源に対してアクセスするための機能である。つまり、データ転送手段２３は、ＣＰＵ２１を介さずにメモリ２２に対してアクセスする機能と、ＣＰＵ２１上のレジスタなどの資源に対してアクセスする機能と、を備えている。なお、対ＣＰＵ通信機能２３２は、ＣＰＵ２１上のレジスタ等の資源をメモリ空間に割り当てて、ＤＭＡエンジン機能２３１からアクセスするように構成しても構わない。
【００２９】
以上が、本実施形態における並列計算機１が備えるノード２の構成である。上述したように、ノード３もノード２と同様の構成を備えている。つまり、ノード３は、ＣＰＵ３１と、メモリ３２と、データ転送手段３３と、を備えている。また、ＣＰＵ３１は複数のプロセッサコア３１１、３１２、…、３１ｍ（以下、特に区別しない場合は、プロセッサコア３１１とする）を備えている。そして、データ転送手段３３は、ＤＭＡエンジン機能３３１と対ＣＰＵ通信機能３３２とを備えている。なお、各構成の詳細については、ノード２を用いて既に説明したため省略する。
【００３０】
また、ノード２とノード３とは、上述したように、ノード間通信手段４を介して通信可能なように接続されている。ノード間通信手段４は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ、ＩｎｆｉｎｉｂａｎｄなどのＤＭＡ機能、もしくは、ＲＤＭＡ機能を持つインターコネクトによって実現することが出来る。
【００３１】
本実施形態においては、このような並列計算機１が備える複数のノードのうち、１つのノードを制御ノードと呼び、残りのノード（制御ノード以外のノード）を計算ノードと呼び区別する。つまり、本実施形態における並列計算機１は、１つの制御ノードと１つ以上の計算ノードとから構成される。また、本実施形態における並列計算機１は、制御ノードがＯＳ機能を持つ一方で、計算ノードはＯＳ機能を持たない。
【００３２】
従って、制御ノードは、通常のＯＳが行うように、計算ノード上に複数のプロセスを展開して、同時に計算処理の実行を行う機能を備えている。以下において、制御ノードにより計算ノード上に展開されたプロセスを計算プロセスと呼ぶ。後述するように、計算プロセスは、計算ノード上で動作するアプリケーションプログラムの開始などに伴い生成され、その実行の終了に伴って破棄されることになる。
【００３３】
以下、図１で示すノード２を制御ノード５とし、ノード３を計算ノード６として並列計算機１を構築した場合について、図２を用いて詳細に説明する。また、以降の説明では、計算ノード６上のプロセッサコア３１１を計算コアと呼ぶ。
【００３４】
まず、計算ノード６の構成について説明する。計算ノード６は、上述したように、ＯＳが動作しない（ＯＳが組み込まれていない）ノードである。後述するように、本実施形態における並列計算機１は、ＯＳが動作しない計算ノード６上で一般の計算機が実現する計算モデルを採用することが出来るように構成されている。つまり、計算ノード６は、ノード間通信手段４を介して制御ノード５とデータの送受信を行うことで、一般のＯＳが提供するサービスの代替機能を実現することになる。
【００３５】
本実施形態における計算ノード６（図１のノード３に相当する）は、上述したように、ＣＰＵ３１と、メモリ３２と、データ転送手段３３と、を備えて構成されている（図１参照）。また、ＣＰＵ３１は、複数のプロセッサコア３１１を備えて構成されている。さらに、計算ノード６は、図２で示すように、複数の計算コア６１１、６１２、…、６１ｍ（以下、特に区別しない場合においては、計算コア６１１とする）を備えている。
【００３６】
ここで、既に説明したように、図２で示す複数の計算コア６１１のそれぞれは、図１で示す複数のプロセッサコア３１１のそれぞれと同一である（上述したように、計算ノード６上のプロセッサコア３１１を計算コア６１１と呼ぶ）。つまり、計算ノード６が備えるＣＰＵ３１は、複数の計算コア６１１を備えて構成されている。また、複数の計算コア６１１はそれぞれ、メモリ３２、データ転送手段３３、と通信可能なように構成されている。なお、上述したように、プロセッサコア３１１は、単数であっても構わない。つまり、計算コア６１１は、単数であっても構わない。計算コア６１１の詳細な構成については後述する。
【００３７】
メモリ３２は、上述したように、同一の計算ノード６上の計算コア６１１が共有している。また、計算ノード６上のメモリ３２は、図２で示すように、計算プロセスに関連するデータを複数格納することが出来るように構成されている。以下において、このメモリ３２上に格納される計算プロセスに関連するデータを、プロセスイメージ３２１、３２２、…、３２ｎ（以下、特に区別しない場合においては、プロセスイメージ３２１とする）と呼ぶ。
【００３８】
各プロセスイメージ３２１はそれぞれ、制御ノード５から計算プロセスのデータを読み書きするための通信バッファ領域３２１１、３２２１、…、３２ｎ１（以下、特に区別しない場合においては、通信バッファ領域３２１１とする）を有している。また、プロセスイメージ３２１を操作するための計算コア６１１のアーキテクチャ状態をコンテキスト６１１Ａ、６１２Ｂ、…、６１ｍＣ（以下、特に区別しない場合においては、コンテキスト６１１Ａとする）と呼ぶ。
【００３９】
ここで、メモリ３２に格納可能なプロセスイメージ３２１の総数は、その総容量が物理メモリの容量を超えない範囲で任意の値をとることが出来るとする。そのため、計算コア６１１の数と、メモリ３２が記憶するプロセスイメージ３２１の数とは、必ずしも一致しなくても構わない。
【００４０】
また、上述したように、計算ノード６上では、ＯＳが動作しない。そのため、計算ノード６上では、ＯＳのシステム管理機能を用いたハードウェア（計算コア６１１、メモリ３２）の仮想化を行うことは出来ない。従って、各計算コア６１１にはそれぞれ、１つの計算プロセスのコンテキスト６１１Ａが格納されることになる。そして、各計算コア６１１は、格納されたコンテキスト６１１Ａに対応するメモリ３２上に格納されたプロセスイメージ３２１を用いて、計算プロセスの処理を行うことになる。
【００４１】
なお、プロセスイメージ３２１の総数が計算コア６１１の総数よりも多い場合には、計算コア６１１に格納できなかったコンテキスト６１１Ａはその時点では実行できない。その場合には、計算コア６１１に格納するコンテキスト６１１Ａを入れ替えることで仮想的に計算コア６１１の総数を増やしたように見せかけることが出来る。このようなコンテキスト６１１Ａの入れ替え方法（コンテキストスイッチ）の詳細については、後述する。
【００４２】
データ転送手段３３は、ノード２の構成で説明した機能と特に変わりはない。そのため、詳細な説明については省略する。
【００４３】
以上が、計算ノード６の構成についての詳細な説明である。ここで、計算コア６１１の構成について図３を用いて詳細に説明する。
【００４４】
計算コア６１１は、図３で示すように、汎用レジスタ群６１１１と、制御レジスタ群６１１２（計算処理制御部）と、例外検出手段６１１３（例外検出部）と、例外通知手段６１１４（例外検出部）と、レジスタ群アクセス手段６１１５（データ転送手段の一部）と、を備えて構成されている。また、計算コア６１１は、データ転送手段３３を介してノード間通信手段４と通信可能なように構成されている。さらに、計算コア６１１は、メモリ３２と、通信可能なように構成されている。
【００４５】
汎用レジスタ群６１１１は、ｘ８６やＡＲＭなどの一般的なプロセッサと同様の構成を備えている。つまり、汎用レジスタ群６１１１は、プログラムカウンタ（ＰＣ、Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ）や演算結果を格納する汎用レジスタ（ＧＰＲ、Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  Ｒｅｇｉｓｔｅｒ）などから構成される。
【００４６】
そのため、汎用レジスタ群６１１１が有する各レジスタが記憶するデータは、計算コア６１１での命令（計算処理、プログラム）の実行に伴い書き換えられることになる。また、計算コア６１１がロード命令やストア命令（書き込み、読み出しなど）を実行することで、汎用レジスタ群６１１１が有する汎用レジスタとメモリ３２との間でデータの転送が行われることになる。
【００４７】
制御レジスタ群６１１２は、計算コア６１１による命令の実行を制御するためのレジスタである。制御ノード５は、データ転送手段２３、３３及びノード間通信手段４を介して、制御レジスタ群６１１２に対して、命令の実行を指示する「実行の開始」、又は、命令の実行の停止を指示する「実行の停止」、を指示することになる。
【００４８】
例えば、制御ノード５が制御レジスタ群６１１２に対して「実行の開始」を指示したとする。すると、計算コア６１１は、汎用レジスタ群６１１１の内容に従って計算処理を開始することになる。具体的には、制御レジスタ群６１１２が「実行の開始」の指示を受信すると、計算コア６１１は、汎用レジスタ群６１１１が記憶するプログラムカウンタの値に従い、メモリ３２が記憶する命令をフェッチする。そして、計算コア６１１は、フェッチした命令をデコードして実行する。その後、計算コア６１１は、命令の実行に応じて、汎用レジスタ群６１１１、メモリ３２の内容の更新を実行する。このような計算コア６１１により命令が実行されている（計算処理が行われている）状態を、「命令実行状態」と呼ぶ。
【００４９】
また、例えば、制御ノード５が制御レジスタ群６１１２に対して「実行の停止」を指示したとする。すると、計算コア６１１は新規の命令実行を停止する。その結果、計算コア６１１は、命令の実行を停止することになる。このような、「実行の停止」が指示された状態で計算コア６１１上に仕掛中の命令がない状態を、「命令実行停止状態」と呼ぶ。なお、一旦「命令実行停止状態」に遷移すると、計算コア６１１は、制御ノード５から再度の「実行の開始」指示があるまで、新規の命令実行（計算処理）は行わない。
【００５０】
また、制御レジスタ群６１１２は、計算コア６１１の状態（命令実行状態又は命令実行停止状態）を、制御ノード５から参照することが出来るように構成される。又は、制御レジスタ群６１１２（計算コア６１１）に参照を行う機能がない場合などには、後述する例外情報の送出によって計算コア６１１の状態を制御ノード５に対して通知することが出来るように、計算コア６１１を構成することが出来る。
【００５１】
例外検出手段６１１３は、制御レジスタ群６１１２による命令の実行中に何らかの例外が発生した場合に、当該発生した例外を検出する部分である。具体的には、例外検出手段６１１３は、命令の実行中に何らかの例外を検出した場合、制御レジスタ群６１１２に対して「実行の停止」の指示を行う。同時に（又はその前後に）、例外検出手段６１１３は、例外通知手段６１１４に対して例外通知の依頼を行う（例外の発生の通知を行う）。例外検出手段６１１３による例外通知手段６１１４に対する例外通知の依頼は、例えば、例外検出手段６１１３が例外通知手段６１１４に対して、例外検出情報を送信することで行う。
【００５２】
ここで、例外検出手段６１１３が検出する例外とは、例えば、ゼロ除算例外などの演算例外のことを指す。また、例えば、メモリアクセス境界違反などのメモリアクセス系例外や、システムコール呼び出しのためのソフトウェアトラップなどの一般のプロセッサに搭載される例外などのことを指す。例外検出手段６１１３は、命令の実行中にこのような例外が発生した場合に、当該発生した例外を検出することになる。
【００５３】
例外通知手段６１１４は、制御ノード５に対して計算コア６１１の実行停止を通知する。具体的には、例外通知手段６１１４は、例外検出手段６１１３から取得した例外検出情報に基づき、ノード間通信手段４を介して制御ノード５に対して、計算コア６１１の「実行の停止」を通知する。
【００５４】
例外通知手段６１１４により行われる例外の発生の通知の手段は、例外の発生を制御ノード５に通知することが出来れば、その実装方法は問わない。例外通知手段６１１４の実装方法としては、例えば、ＰＣＩ  ＥｘｐｒｅｓｓのＭＳＩ／ＭＳＩ−Ｘのような、ノード間通信手段４が持つ割込み機能を用いるという方法がある。また、例えば、事前に予約したメモリ領域（制御ノード５が備えるメモリ２２）へのＤＭＡ書き込みを行うという方法を用いることも考えられる。このようなメモリ２２へのＤＭＡ書き込みにより例外の発生を制御ノード５に通知する方法をとる場合には、制御ノード５（上の後述する計算ノード管理プロセス）は、計算ノード６からの例外の通知の有無をポーリング等の方式で監視することになる。
【００５５】
なお、例外通知手段６１１４は、制御ノード５の側から設定することで、制御ノード５への例外発生の通知を抑止することが出来るように構成することが出来る。また、このように例外通知手段６１１４が例外発生の通知を抑止した場合に備えて、制御ノード５が直接、制御レジスタ群６１１２の実行状態を監視（ポーリングなど）することが出来るように、制御ノード５を構成しても構わない。
【００５６】
レジスタ群アクセス手段６１１５は、制御ノード５から発行された指示に基づいて、汎用レジスタ群６１１１、制御レジスタ群６１１２の各レジスタに対して読み出しや書き込みを行う。汎用レジスタ群６１１１や制御レジスタ群６１１２は、レジスタ群アクセス手段６１１５、データ転送手段３３を介して、ノード間通信手段４を通じて制御ノード５とデータの送受信を行うことになる。
【００５７】
なお、レジスタ群アクセス手段６１１５は、「命令実行状態」の計算コア６１１の汎用レジスタ群６１１１への読み出し、書き込みは許可しないように構成することができる。つまり、レジスタ群アクセス手段６１１５による汎用レジスタ群６１１１への読み出し、書き込みは、「命令実行停止状態」の計算コア６１１に対してのみ発行が許可されるように、レジスタ群アクセス手段６１１５を構成することが出来る。この場合、「命令実行状態」の計算コア６１１に対しての、レジスタ群アクセス手段６１１５による汎用レジスタ群６１１１へのアクセス時の動作は、不定となる（例えば、無視する）。
【００５８】
以上が、計算コア６１１の構成についての詳細な説明である。次に、制御ノード５の構成について詳細に説明する。
【００５９】
制御ノード５は、ＯＳを採用する通常のスタンドアローン型の計算機システムと同じ構成をしている。上述したように、制御ノード５は、計算ノード６に対してＯＳ機能のサービスを提供することが出来るように構成されている。
【００６０】
なお、以降の説明においては、制御ノード５上に搭載されるＯＳを制御ノード用ＯＳ５０と呼ぶ。制御ノード用ＯＳ５０としては、例えば、ＬｉｎｕｘやＷｉｎｄｏｗｓなどに代表される、一般的な計算機に用いられるコモディティのＯＳを用いることが出来る。
【００６１】
本実施形態における制御ノード５（図１のノード２に相当する）は、上述したように、ＣＰＵ２１（制御コア、例外処理代理部、計算コア制御部）と、メモリ２２と、データ転送手段２３と、を備えて構成されている（図１参照）。また、ＣＰＵ２１は、複数のプロセッサコア２１１を備えて構成されている。
【００６２】
上述したように、制御ノード５上では、制御ノード用ＯＳ５０が動作する。そのため、計算ノード６とは異なり、制御ノード５は、ＯＳのシステム管理機能を用いてハードウェア（プロセッサコア２１１、メモリ２２）の仮想化を行うことが出来る。従って、以下においては、制御ノード５上のプロセスの構成に関して図3を用いて説明する。
【００６３】
制御ノード５は、制御ノード用ＯＳ５０の上に、複数の代理プロセス５１１、５１２、…、５１ｎ（以下、特に区別しない場合は代理プロセス５１１とする）（例外処理代理部に相当する）と、計算ノード用管理プロセス５２（計算コア制御部に相当する）と、を展開する。また、計算ノード用管理プロセス５２は、計算プロセスＤＢ（ＤａｔａＢａｓｅ）５２１と、プロセス対応表５２２と、を有している。
【００６４】
なお、これらのプロセスは、制御ノード５のＣＰＵ２１が、メモリ２２が記憶するプログラムを読み取って実行することで実現することが出来る。
【００６５】
代理プロセス５１１は、計算ノード６上に展開された計算プロセスの１つ１つに対応して生成されるプロセスである。つまり、代理プロセス５１１は、計算ノード６上のメモリ３２が記憶する複数のプロセスイメージ３２１に対してそれぞれ、１対１で対応する形で生成されることになる。従って、制御ノード５上に展開される代理プロセス５１１の数と、計算ノード６のメモリ３２が記憶するプロセスイメージ３２１の数と、は同数になる。
【００６６】
本実施形態において、代理プロセス５１１は、対応する計算ノード６上の計算プロセスが発行するＯＳへの要求を、ノード間通信手段４を介して受け付ける。そして、代理プロセス５１１は、計算ノード６上に存在するべきＯＳの代替として、必要な処理を行うことになる。つまり、代理プロセス５１１は、計算コア６１１上で命令を実行中にシステムコールを呼び出す必要が生じた際に、ＯＳを持たない計算ノード６の代わりに、システムコールの処理を行うために用いられる。また、代理プロセス５１１は、後述するように、計算プロセスを開始する際などに用いられる。
【００６７】
代理プロセス５１１は、図４で示すように、引数書き込み領域５１１１と、データバッファ領域５１１２と、を有している。なお、データバッファ領域５１１２に関しては、当該領域を必要に応じて確保するように、代理プロセス５１１を構成しても構わない。
【００６８】
引数書き込み領域５１１１は、システムコール番号と引数とを書き込むための領域である。また、引数書き込み領域５１１１は、システムコールの引数にポインタがある時に、当該ポインタの参照先データが書き込まれることになる領域である。このようなシステムコールを呼び出す際、一般的なＡＢＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｂｉｎａｒｙ  Ｉｎｔｅｒｆａｃｅ）では、プロセッサコア３１１（計算コア６１１）上の汎用レジスタやスタックにシステムコールの番号と引数とを書き込むことになる。しかしながら、本発明の計算コア６１１には、ＯＳが組み込まれていない。そこで、本発明のシステムでは、代理プロセス５１１内の引数書き込み領域５１１１に、システムコールの番号と引数とを書き込むことになる。
【００６９】
データバッファ領域５１１２は、例えば、システムコールの内容からバッファの転送が必要であると判断される場合に、計算コア６１１から代理プロセス５１１へとバッファを転送する際に用いる領域である。バッファの転送は、例えば、ｗｒｉｔｅシステムコールで必要となる。
【００７０】
このように、代理プロセス５１１は、計算コア６１１でシステムコールを発行する必要が生じた際に用いるプロセスである。また、引数書き込み領域５１１１と、データバッファ領域５１１２と、の２つの領域は、計算コア６１１でシステムコールを発行する際に必要なデータの受け渡しを行うために、ソフトウェア例外を発生させる前後で利用する領域である。ここで、引数書き込み領域５１１１と、データバッファ領域５１１２と、の２つの領域は、それぞれの領域が必要となる前に（又は、必要となった際に）、計算コア６１１へと通知するように代理プロセス５１１を構成する。そのため、計算コア６１１は、命令を実行している最中にシステムコールを要求する必要が生じた場合には、適切なデータを各領域に書き込むことが可能である。そして、必要なデータを各領域に書き込んだ後に、計算コア６１１は、ソフトウェア例外を発生させることになる。このように構成することで、計算コア６１１は、制御ノード５にシステムコールの処理をさせることが可能となる。
【００７１】
計算ノード用管理プロセス５２は、計算ノード６に対して生成されるプロセスである。計算ノード用管理プロセス５２は、計算ノード６上の計算コア６１１（プロセッサコア３１１）、メモリ３２、などのハードウェア資源の管理を行う。また、計算ノード用管理プロセス５２は、一部のリソースに対する、代理プロセス５１１から計算コア６１１へのアクセスの仲介なども実施する。
【００７２】
具体的には、例えば、計算ノード用管理プロセス５２は、計算ノード６上で実行する計算プロセスの総数が計算コア６１１の総数を上回る場合に、計算プロセスを実行する計算コア６１１の割り当てを行う。また、計算ノード用管理プロセス５２は、計算ノード６上のメモリ管理などを行う。このように、計算ノード用管理プロセス５２は、プロセス間の調停が必要な操作を行うことになる。
【００７３】
このような操作を実現するために、計算ノード用管理プロセス５２は、計算ノード６上の計算コア６１１、メモリ３２などのハードウェア資源と、計算プロセス、代理プロセスなどの仮想化された資源と、の紐づけを行って管理する。
【００７４】
具体的には、本実施形態における計算ノード用管理プロセス５２は、代理プロセス５１１と、計算コア６１１と、を対応づけて、プロセス対応表５２２に格納して管理する。ここで、プロセス対応表５２２に対応づけて格納するデータの一例を、図５で示す。
【００７５】
図５で示すように、本実施形態におけるプロセス対応表５２２には、「計算プロセスＩＤ」と、「割り当てられた計算コア番号」と、が対応付けて記憶されている。ここで、「計算プロセスＩＤ」とは、代理プロセス５１１（計算プロセス）毎に割り当てられるＩＤであり、代理プロセス５１１や計算プロセスを識別するために用いられるものである。また、「割り当てられた計算コア番号」とは、「計算プロセスＩＤ」が示す計算プロセスを実行中の計算コア６１１を識別するために、計算コア６１１に割り当てる番号である。このように、代理プロセス５１１（計算プロセス）と、計算プロセスを実行中の計算コア６１１と、を紐づけることで、計算ノード用管理プロセス５２は、ハードウェア資源と、仮想化された資源と、を紐づけて管理することが出来るようになる。なお、計算プロセスが計算コア６１１を取得していない場合（計算プロセスを実行中の計算コア６１１がない場合）には、当該「計算プロセスＩＤ」に対応付けられた「割り当てられた計算コア番号」には、計算コア番号が記載されないことになる。
【００７６】
また、計算ノード用管理プロセス５２は、計算ノード６上の計算プロセスの情報を、計算プロセスＤＢ５２１に格納して管理を行う。
【００７７】
計算プロセスＤＢ５２１に格納されているデータの一例を、図６で示す。図６は、計算プロセスが、計算コア６１１上の汎用レジスタ群６１１１に格納する情報を制御ノード５側に退避させることで生成したデータベースである。
【００７８】
図６で示すように、計算プロセスＤＢ５２１は、計算プロセスＩＤ，プロセス状態、代理プロセスＩＤ、レジスタ群の値、などの、計算プロセス上の情報を項目に持っている。また、計算プロセスＤＢ５２１には、例えば、割り当て済みのメモリ領域などの情報も記憶される。ここで、プロセス状態とは、計算プロセスが動作可能である、計算プロセスの動作が終了した、などの計算プロセスの状態を示す項目である。また、レジスタ群の値としては、汎用レジスタ群が有する各レジスタ（レジスタＡ、レジスタＢ、レジスタＣ…）の値が記憶されている。計算プロセスＤＢ５２１が記憶する表の一行が、１つの計算プロセスのコンテキストに対応することになる。
【００７９】
以上が、制御ノード５上に展開されるプロセスの構成である。なお、計算ノードが複数ある場合には、それぞれの計算ノードに対して、複数の計算ノード管理プロセス５２が生成されることになる。
【００８０】
ここで、本実施形態における並列計算機１において、各プロセスがアクセス可能な資源を列挙しておく。
【００８１】
まず、計算プロセスは、自身のプロセスイメージ３２１と、自身のコンテキスト６１１Ａと、自身の代理プロセス５１１が登録した引数書き込み領域５１１１と、にアクセス可能である。
【００８２】
また、代理プロセス５１１は、対応する計算プロセスがアクセスできる資源と、制御ノード５上のプロセスとしてアクセス可能なすべての資源と、に対してアクセス可能である。つまり、代理プロセス５１１は、プロセスイメージ３２１と、コンテキスト６１１Ａと、にアクセスすることができる。制御ノード５上のプロセスとしてアクセス可能な資源としては、例えば、制御ノード５上に存在するファイルシステムのファイルが該当する。
【００８３】
また、計算ノード用管理プロセス５２は、計算ノード６上の全ての資源と、計算プロセスＤＢ５２１と、プロセス対応表５２２と、にアクセス可能である。また、計算ノード用管理プロセス５２は、全ての代理プロセス５１１に対して、計算プロセスによる例外発生を通知可能である。
【００８４】
ここで、計算ノード６上の全ての資源とは、計算ノード６上のメモリ３２の全てと、計算ノード６上の全ての計算コア６１１の汎用レジスタ群６１１１と、制御レジスタ群６１１２と、である。計算ノード６上のメモリ３２の全てにアクセスすることが出来ることから、計算ノード用管理プロセス５２は、全ての計算プロセスのプロセスイメージ３２１に対するアクセス権を持つことになる。
【００８５】
また、計算ノード用管理プロセス５２は、上述したように、計算プロセスＤＢ５２１にアクセスすることが出来る。そのため、計算ノード用管理プロセス５２は、全ての計算プロセスのコンテキスト６１１Ａに対するアクセス権を持つことになる。
【００８６】
なお、計算ノード用管理プロセス５２は、代理プロセス５１１が持つ資源、例えば、代理プロセス５１１のメモリ領域やコンテキストには、アクセス可能である必要は必ずしもない。
【００８７】
以上が、本実施形態における並列計算機１の構成である。このように、構成することで、ＯＳジッタやキャッシュ汚染の問題を解決しつつ安価で汎用性のある並列計算機を構成することが出来る。
【００８８】
次に、本実施形態における並列計算機１の動作を、図７乃至図１３を用いて説明する。
【００８９】
（動作）
図７は、上述した構成の並列計算機１で展開される計算プロセスが開始してから終了するまでに、必要となる動作がどのように作用するかを示したフローチャートである。図７で示すように、並列計算機１上で計算プロセスを展開する（計算プロセスを開始して計算プロセスを終了する）には、以下の動作が必要となる。
１．計算プロセスの開始（プログラムの開始）
２．計算プロセスの実行停止（プログラムの停止）
３．計算プロセス上で発生した例外処理（例外処理）
４．計算プロセスがＯＳのサービスを必要とする場合の処理（システムコール）
５．計算プロセスの計算コアへの割り当ての変更（コンテキストスイッチ）
６．計算プロセスの終了（プログラムの終了）
【００９０】
なお、一旦計算プロセスの実行が始まると、実行中のプログラムが終了するか、上記いずれかの動作で停止するまでは、計算コア６１１はプログラム（命令、計算処理）を実行し続けることになる。
【００９１】
上述した構成の並列計算機１で上記動作を実現することで、計算ノード６上のＯＳを排除した上で、計算ノード６上に、ＰＯＳＩＸ  ＡＰＩなどのＯＳの存在を前提にしたサービスを提供することが出来るようになる。つまり、上記動作を実現することで、一般的なＯＳのある環境におけるプロセスの動作を網羅することが出来る。以下、上記各動作の詳細について説明する。
【００９２】
まず、１．計算プロセスの開始（プログラムの開始）時の並列計算機１の動作について、図８を用いて説明する。図８は、計算ノード６上でプログラムの実行が開始される際の動作の一例を示すフローチャートである。
【００９３】
まず、制御ノード５上で動作する制御ノード用ＯＳ５０が、代理プロセス５１１を生成する（Ｓ００１）。
【００９４】
次に、代理プロセス５１１は、代理プロセス５１１にある引数書き込み領域５１１１を計算ノード用管理プロセス５２に渡す。そして、代理プロセス５１１は、計算ノード用管理プロセス５２に対して、プログラムを実行する計算プロセスの生成を要求する（Ｓ００２）。
【００９５】
続いて、計算プロセスの生成を要求された計算ノード用管理プロセス５２は、計算プロセスを生成する（Ｓ００３）。
【００９６】
具体的には、計算ノード用管理プロセス５２は、計算プロセスＤＢ５２１に新しいコンテキスト６１１Ａを生成する。また、計算ノード用管理プロセス５２は、計算ノード６のメモリ３２に、対応するプロセスイメージ３２１を生成する。そして、計算ノード用管理プロセス５２は、計算プロセスＤＢ５２１に、代理プロセス５１１と、生成したコンテキスト６１１Ａと、の対応を追加する。また、計算ノード用管理プロセス５２は、計算プロセスＤＢ５２１に、代理プロセス５１１から渡された引数書き込み領域５１１１と、生成したコンテキスト６１１Ａと、の対応を追加する。
【００９７】
そして、計算ノード用管理プロセス５２は、生成した計算プロセスにアクセスするためのハンドルを、代理プロセス５１１に返す。ハンドルの一例としては、計算ノード用管理プロセス５２が付与するＩＤや、プロセスＩＤ，ファイルディスクリプタなどがある。ハンドルの一部として、プロセスイメージ３２１をｍｍａｐによりマップした領域、または、マップした領域へのポインタを含んでもよい。
【００９８】
その後、代理プロセス５１１は、計算ノード６上で動作させるプログラムと、プログラムの実行に使用するデータと、を計算ノード６が備えるメモリ３２のプロセスイメージ３２１に書き込む（Ｓ００４）。
【００９９】
具体的には、まず、代理プロセス５１１は、計算コア６１１に実行させるプログラムを読み込む。プログラムの読み込みは、例えば、計算プロセスに実行させるプログラムがファイルに格納されている場合には、制御ノード用ＯＳ５０のｒｅａｄシステムコールを発行することで行われる。
【０１００】
続いて、代理プロセス５１１は、計算ノード用管理プロセス５２から渡されたハンドルを用いて、計算コア６１１に実行させるプログラムを、メモリ３２上のプロセスイメージ３２１におけるプログラムにより指定された場所に配置する。例えば、ハンドルが、プロセスイメージ３２１がメモリマップされた領域を含んでいる場合には、代理プロセス５１１はプログラムに指定された位置に対して直接メモリストアを発行する。また、例えば、ハンドルが、計算ノード用管理プロセス５２が付与したＩＤやプロセスＩＤやファイルディスクリプタなどである場合には、代理プロセス５１１は、プロセスイメージ３２１上の位置と、書き込む内容と、を計算ノード用管理プロセス５２に渡す。そして、代理プロセス５１１は、計算ノード用管理プロセス５２に対して、プロセスイメージ３２１への書き込みを要求する。
【０１０１】
また、代理プロセス５１１は、計算プロセスＤＢ５２１に格納されたコンテキスト６１１Ａ中のレジスタ値として、初期値をセットする。
【０１０２】
その後、代理プロセス５１１は、計算プログラムの実行開始を要求する（Ｓ００５）。具体的には、代理プロセス５１１は、計算ノード用プロセス５２から取得したハンドルを用いて、計算プロセスを実行可能状態に変更する。このように計算プロセスを実行可能状態に変更することで、計算ノード６に使用していない（命令実行状態でない）計算コア６１１がある場合に、その計算コア６１１によりプログラムの実行が開始されることになる。なお、この動作の詳細は後述する（ステップＳ０５５参照）。
【０１０３】
以上が、１．計算プロセスの開始（プログラムの開始）時の並列計算機１の動作である。次に、２．計算プロセスの実行停止（プログラムの停止）を行う際の並列計算機１の動作について、図９を用いて説明する。図９は、代理プロセス５１１に対応する計算コア６１１を制御ノード５の側から停止させる際の動作の一例を示すフローチャートである。
【０１０４】
まず、計算ノード用管理プロセス５２は、プロセス対応表５２２を参照し、停止対象のプロセスイメージ３２１に対応する「計算プロセスＩＤ」から、「割り当てられた計算コア番号」を取得する（Ｓ０１１）。
【０１０５】
ここで、計算プロセスに計算コア６１１が割り当てられていない場合には、計算ノード用管理プロセス５２は、以下で説明するステップＳ０１２と、Ｓ０１３と、を飛ばして、計算プロセスＤＢ５２１のコンテキストの状態を更新することになる（Ｓ０１４）。つまり、計算ノード用管理プロセス５２は、「計算プロセスＩＤ」に対応する「割り当てられた計算コア番号」を発見できなかった場合には、動作Ｓ０１２と、Ｓ０１３と、を行わずに、計算プロセスＤＢ５２１のコンテキストの状態を更新する。
【０１０６】
一方、計算プロセスに計算コア６１１が割り当てられている場合には、計算ノード用管理プロセス５２は、計算コア６１１のレジスタ群アクセス手段６１１５を介して制御レジスタ群６１１２に対して、計算コア６１１の停止を指示する（Ｓ０１２）。つまり、計算プロセスに計算コア６１１が割り当てられている場合には、計算ノード用管理プロセス５２は、制御レジスタ群６１１２に対して「実行の停止」を指示する。
【０１０７】
その後、計算ノード用管理プロセス５２は、レジスタ群アクセス手段６１１５を介して制御レジスタ群６１１２に対して、計算コア６１１の動作状態を確認する（Ｓ０１３）。ここで、計算コア６１１が命令実行停止状態にあることを確認できなかった場合には（計算コア６１１が未だ命令実行状態にある場合には）、計算ノード用管理プロセス５２は、予め定められた一定の時間が経過した後、再度計算コア６１１の動作状態を確認する。
【０１０８】
一方、計算コア６１１が命令実行停止状態にあることを確認できた場合には、計算ノード用管理プロセス５２は、停止した計算コア番号（割り当てられた計算コア番号）に対応する、プロセス対応表の行と、計算プロセスＤＢ５２１のコンテキスト６１１Ａの状態と、を更新する（Ｓ０１４）。
【０１０９】
以上が、２．計算プロセスの実行停止（プログラムの停止）を行う際の並列計算機１の動作である。次に、３．計算プロセス上で発生した例外処理（例外処理）を行う際の並列計算機１の動作について、図１０を用いて説明する。図１０は、計算コア６１１でプログラム（命令、計算処理）を実行中に例外が発生した場合の、当該例外を処理する際の動作の一例を示すフローチャートである。
【０１１０】
まず、計算コア６１１にてプログラムを実行中に、例外が発生したとする（Ｓ０２１）。なお、例外の定義については、既に並列計算機１の構成を説明する際に説明済みであるため、省略する。
【０１１１】
すると、例外検出手段６１１３が当該発生した例外を検出する。そして、例外検出手段６１１３は、制御レジスタ群６１１２に対して「実行の停止」の指示を行う（Ｓ０２２）。
【０１１２】
続いて、例外検出手段６１１３は、例外通知手段６１１４に対して例外の発生を通知する。そして、例外検出手段６１１３から例外の発生の通知を受けた例外通知手段６１１４は、制御ノード５内の計算ノード用管理プロセス５２へと、例外の発生の通知を行う（Ｓ０２３）。ここで、例外通知手段６１１４により行われる例外の発生の通知の手段は、上述した通り、様々な方法がある。例えば、ノード間通信手段４の持つＩ／Ｏ例外機能による通知、ＤＭＡ機能を利用した制御ノード５への書き込み、制御ノード５から計算ノード６のレジスタ監視、などの方法がある。どの方法によって例外通知手段６１１４を実現しても構わない。
【０１１３】
以上が、３．計算プロセス上で発生した例外処理（例外処理）を行う際の並列計算機１の動作である。次に、４．計算プロセスがＯＳのサービスを必要とする場合の処理（システムコール）を行う際の並列計算機１の動作について、図１１を用いて説明する。図１１は、計算ノード６で発行されたシステムコールの処理を行う際の動作の一例を示すフローチャートである。
【０１１４】
なお、プロセスイメージ３２１が計算コア６１１で動作中にシステムコールを呼び出す場合、一般的なＡＢＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｂｉｎａｒｙ  Ｉｎｔｅｒｆａｃｅ）では、プロセッサコア３１１（計算コア６１１）上の汎用レジスタやスタックにシステムコールの番号と引数とを書き込むことになる。しかしながら、本発明の計算コア６１１には、ＯＳが組み込まれていない。そのため、後述する動作を行う必要が出てくることになる。
【０１１５】
まず、本発明の計算プロセスは、代理プロセス５１１内の引数書き込み領域５１１１にシステムコール番号と、引数と、を書き込む（Ｓ０３１）。
【０１１６】
次に、システムコール番号と、引数と、を書き込まれた代理プロセス５１１は、呼び出したいシステムコールの引数にポインタがあるか否かの判定を行う（Ｓ０３２）。引数にポインタがない場合には、後述するステップＳ０３３とステップＳ０３４とを飛ばして、計算コア６１１により後述するステップＳ０３５の処理が行われることになる。一方、引数にポインタがある場合は、代理プロセス５１１は引き続き、そのポインタの参照するデータのサイズが引数書込み領域５１１１のサイズよりも小さいか否かの判定を行う。参照するデータのサイズの判定には、サイズを指定する引数の値を参照してもよい。または、サイズの判別に引数の型を用いてもよい（Ｓ０３３）。
【０１１７】
そして、ポインタの参照するデータのサイズが引数書き込み領域５１１１のサイズよりも大きい場合には、後述するステップＳ０３４を飛ばして、計算コア６１１が後述するステップＳ０３５の処理を行うことになる。一方、ポインタの参照先の型が引数書き込み領域５１１１のサイズよりも小さい場合には、代理プロセス５１１は、引数書き込み領域５１１１にそのポインタの参照先データを書き込む（Ｓ０３４）。
【０１１８】
その後、計算コア６１１が、システムコールの例外を発生させる（Ｓ０３５）。一般的には、システムコール例外は、同一のノード内（計算ノード６内）で処理される。しかしながら、本実施形態における並列計算機１の場合は、上述したように、計算ノード６から制御ノード５へと、例えば、割り込みなどの方法で通知されることになる。例外発生処理の詳細については既に説明したため、省略する。
【０１１９】
例外発生処理が起きると、上述したように、例外の発生が制御ノード５の計算ノード用管理プロセス５２へと通知されることになる。そこで、例外の発生の通知を受け取った計算ノード用管理プロセス５２は、プロセス対応表５２２を参照して、例外発生元の計算コア６１１の番号から、計算プロセスＩＤを得る。つまり、計算ノード用管理プロセス５２は、計算プロセスＤＢ５２１を参照することで、例外発生元の計算コア６１１の番号と対応して記憶されている代理プロセス５１１を得る。以降の処理は、代理プロセス５１１が主体となって動作を進めることになる。
【０１２０】
まず、代理プロセス５１１は、自身の引数書き込み領域５１１１に書き込まれた引数を解析して、システムコールを実施するためにバッファの転送が必要か否か確認する（Ｓ０３６）
【０１２１】
バッファの転送が必要であると判断した場合、代理プロセス５１１は、代理プロセス５１１内にデータバッファ領域５１１２を確保する（Ｓ０３７）。そして、代理プロセス５１１は、対応するプロセスイメージ３２１のバッファを、代理プロセス５１１のデータバッファ領域５１１２へと転送するように、データ転送手段３３（ＤＭＡエンジン機能３３１）へと命令する。これにより、計算ノード６から制御ノード５へとバッファが転送されることになる（Ｓ０３８）。このような計算ノード６から制御ノード５へのバッファの転送は、例えば、ｗｒｉｔｅシステムコールで必要になる。
【０１２２】
そして、上記ＤＭＡ転送が終わった後、又は、代理プロセス５１１がバッファの転送は不要であると判断した場合に、代理プロセス５１１は、制御ノード用ＯＳ５０に対してシステムコールを呼び出すことになる（関数を実行する）（Ｓ０３９）。
【０１２３】
システムコールを呼び出した後、代理プロセス５１１は、代理プロセス５１１内のバッファを、対応するプロセスイメージ３２１の通信バッファ領域３２１１に転送する必要があるか否かの判定を行う（Ｓ０４０）。
【０１２４】
バッファを転送する必要がある場合、代理プロセス５１１は、データ転送手段３３（ＤＭＡエンジン３３１）へ命令して、バッファの転送を行う（Ｓ０４１）。この制御ノード５から計算ノード６へのバッファの転送は、例えば、ｒｅａｄシステムコールで必要になる。
【０１２５】
そして、上記バッファ転送が終わると、又は、代理プロセス５１１がバッファの転送は不要であると判断した場合には、計算ノード用管理プロセス５２は、システムコールの返り値を汎用レジスタ群６１１１へと書き込むことになる（Ｓ０４２）。なお、計算ノード用管理プロセス５２による汎用レジスタ群６１１１へのシステムコールの返り値の書き込みは、計算コア６１１内のレジスタ群アクセス６１１５を介して行われる。一般的なＡＢＩでは同一ノード内の汎用レジスタにシステムコールの返り値は書き込まれる。しかしながら、並列計算機１においては、制御ノード５から計算ノード６の汎用レジスタ群６１１１に対して、システムコールの返り値が書き込まれることになる。
【０１２６】
その後、計算コア６１１は、プログラムの実行を再開することになる（Ｓ０４３）。なお、計算コア６１１がプログラムの実行を開始する際の動作は、既に説明したため省略する。
【０１２７】
以上が、４．計算プロセスがＯＳのサービスを必要とする場合の処理（システムコール）を行う際の並列計算機１の動作である。次に、５．計算プロセスの計算コアへの割り当ての変更（コンテキストスイッチ）を行う際の並列計算機１の動作について、図１２を用いて説明する。図１２は、計算コア６１１の数よりも計算プロセスが多い場合に行われる、コンテキストスイッチを行う際の動作の一例を示すフローチャートである。
【０１２８】
まず、制御ノード５内の計算ノード用管理プロセス５２は、停止することになる計算コア６１１を選定する（Ｓ０５１）。このような計算ノード用管理プロセス５２による停止する計算コア６１１の選定は、例えば、予め定められた一定時間が経過する毎に行われる。計算ノード用管理プロセス５２による停止する計算コア６１１の選定方法は、任意の方法をとって構わない。
【０１２９】
次に、計算ノード用管理プロセス５２は、上記ステップＳ０５１で選定した計算コア６１１を停止させる（Ｓ０５２）。なお、計算コア６１１を停止させる際の動作については、既に説明したため省略する。
【０１３０】
続いて、計算ノード用管理プロセス５２は、停止した計算コア６１１内のレジスタ群アクセス手段６１１５を用いて、汎用レジスタ群６１１１にアクセスする。そして、計算ノード用管理プロセス５２は、汎用レジスタ群６１１１からコンテキスト６１１Ａを引き上げ、当該引き上げたコンテキスト６１１Ａを計算プロセスＤＢ５２１に記憶する（Ｓ０５３）。
【０１３１】
ここで、上記動作を行う際に、計算ノード用管理プロセス５２は、プロセスイメージ３２１を制御ノード５に複製するように構成することが出来る。このようにプロセスイメージ３２１を制御ノード５に複製することで、プロセス単位のチェックポイントデータを作成することが可能である。
【０１３２】
次に、計算ノード用管理プロセス５２は、次に計算コア６１１で動作する計算プロセスＩＤを基に、プロセス対応表５２２の更新を行う（Ｓ０５４）。ここで、本実施形態においては、次に計算コア６１１で動作する計算プロセスＩＤは、既存のスケジューリングアルゴリズムに従って選出されるとする。しかしながら、計算ノード用管理プロセス５２は、何らかの方法で計算プロセスＩＤを選出することが出来るように構成されていれば構わない。
【０１３３】
その後、計算ノード用管理プロセス５２は、次に計算コア６１１で動作する計算プロセスＩＤを基に計算プロセスＤＢ５２１を参照し、次に計算コア６１１で動作する計算プロセスＩＤのレジスタ値（コンテキスト）を得る。そして、計算ノード用管理プロセス５２は、取得したレジスタ値を、計算コア６１１が備える汎用レジスタ群６１１１のコンテキスト６１１Ａに、レジスタ群アクセス手段６１１５を介して保存する（Ｓ０５５）。
【０１３４】
なお、次に計算コア６１１で動作する計算プロセスにチェックポイントデータがある場合には、このタイミングで計算ノードへと転送することで、チェックポイント取得時のプロセスイメージ３２１に復元することが可能である。
【０１３５】
そして、コンテキスト６１１Ａが復元された後、計算ノード用管理プロセス５２は、コンテキストスイッチした計算コアの実行を開始する（Ｓ０５６）。
【０１３６】
以上が、５．計算プロセスの計算コアへの割り当ての変更（コンテキストスイッチ）を行う際の並列計算機１の動作である。次に、６．計算プロセスの終了（プログラムの終了）を行う際の並列計算機１の動作について、図１３を用いて説明する。図１３は、計算ノード６上で実行中のプログラムを終了する際の動作の一例を示すフローチャートである。
【０１３７】
計算コア６１１上で実行中のプログラムが終了した場合、計算コア６１１は、まず、計算プロセスを終了させる例外を代理プロセス５１１に通知する（Ｓ０６１）。計算プロセスを終了させる例外としては、例えば、ｅｘｉｔシステムコールやメモリアクセス系例外などがある。なお、例外の発生についての説明は、既に説明したため省略する。
【０１３８】
次に、例外の通知を受信した代理プロセス５１１は、計算ノード用管理プロセス５２に対して、計算プロセスの終了を通知する（Ｓ０６２）。
【０１３９】
そして、計算プロセスの終了を通知された計算ノード用管理プロセス５２は、プロセス対応表５２２を検索して、計算プロセスが使用していた資源を解放する（Ｓ０６３）。これにより、計算プロセスは終了することになる。
【０１４０】
具体的には、計算ノード用管理プロセス５２は、まず、終了する代理プロセス５１１に対応する、計算プロセスＤＢ５２１に格納されたコンテキスト６１１Ａを削除する。また、計算ノード用管理プロセス５２は、メモリ３２から終了する代理プロセス５１１に対応するプロセスイメージ３２１を解放する。なお、終了する代理プロセス５１１に対応するコンテキスト６１１Ａが計算ノード６にあるいずれかの計算コア６１１で動作中である場合には、計算ノード用管理プロセス５２は、当該計算コア６１１を解放するように構成することが出来る。この場合には、計算コア６１１を解放する際に、当該解放する計算コア６１１のコンテキストを他のコンテキストにコンテキストスイッチするように、計算ノード用管理プロセス５２を構成しても構わない。
【０１４１】
そして、計算プロセスの終了後、代理プロセス５１１は終了することになる（Ｓ０６４）。
【０１４２】
なお、上記ステップＳ０６２、Ｓ０６３、Ｓ０６４は、この順番通りに行われなくても構わない。例えば、ステップＳ０６１による終了システムコールの受信によって代理プロセス５１１が終了するように構成しても構わない。この場合には、例えば、制御ノード用ＯＳ５０の機能による代理プロセス５１１が持っていたハンドルの解放処理によって、計算ノード用管理プロセス５２に対して計算プロセスの終了の通知が行われることになる。そして、計算プロセスの終了の通知を受信した計算ノード用管理プロセス５２が、終了する計算プロセスの資源の解放と計算プロセスの終了とを行うことになる。
【０１４３】
以上が、並列計算機１によって行われる動作の流れである。このような動作により、並列計算機１は、ＯＳが動作しない計算ノード６上で一般の計算機が実現する計算モデルを採用することが出来る。
【０１４４】
なお、本実施形態では、１つの制御ノード５と、複数の計算ノード６と、からなる並列計算機１について説明した。しかしながら、並列計算機１は、例えば、１つの制御ノード５と、複数の計算ノード６と、から構成されるノード群を複数備えていても構わない。つまり、必ずしも制御ノード５の数は１に限定されない。
【０１４５】
このように、本実施形態における並列計算機１は、ＯＳが組み込まれた制御ノード５と、ＯＳが組み込まれていない計算ノード６と、を備えている。また、制御ノード５上には代理プロセス５１１と計算ノード用管理プロセス５２とが展開されている。さらに、計算ノード６は、汎用レジスタ群６１１１と制御レジスタ群６１１２とを備えている。このような構成により、制御ノード５は、計算ノード６の動作を管理することが出来るようになる。つまり、並列計算機１は、ＯＳが動作しない計算ノード６上で一般の計算機が実現する計算モデルを採用することが可能となる。その結果、並列計算機１は、計算ノード６上でＯＳが動作することによるＯＳジッタやキャッシュ汚染の問題を解決することが出来る。
【０１４６】
また、上記構成にすることで、特権が必要なＩ／Ｏデバイスの制御を、制御ノード５が代理で実施することが出来るようになる。その結果、制御ノード５がコモディティのハードウェア構成を採用していれば、計算ノード６のために専用のデバイスドライバを記述する必要がなくなる。つまり、汎用性の喪失や、開発費の高騰という問題を解決することが出来る。
【０１４７】
また、本実施形態における計算コア６１１は、例外検出手段６１１３と、例外通知手段６１１４と、を備えている。このように構成することで、計算コア６１１による命令の実行中に例外処理が発生した場合に、当該例外処理を検出してＯＳを備える制御コア６へ通知することが出来るようになる。その結果、計算ノード６は、例外処理が発生した計算処理の実行を停止することが出来るようになる。また、制御ノード５は、例えば、システムコールなどのＯＳ機能を計算ノードに提供することが出来るようになる。つまり、ＯＳが動作しない計算ノード６上で一般の計算機が実現する計算モデルを採用することが可能となる。
【０１４８】
＜実施形態２＞
次に、本発明の第２の実施形態について、図１４を用いて説明する。図１４は、本実施形態における情報処理装置７の構成を示すブロック図である。
【０１４９】
第１の実施形態において説明したように、本発明は、ＯＳ機能を備える制御部（制御ノード）と、ＯＳ機能を備えない計算部（計算ノード）と、を備えている。そのため、ＯＳ機能が動作する領域と、ＯＳ機能が動作しない領域と、を備えていれば、必ずしも第１の実施形態で説明した並列計算機１によらなくても、本発明は実施可能である。
【０１５０】
そこで、本実施形態においては、ＯＳの支配下に置かれる領域と、ＯＳの支配下に置かれない領域と、の２つの領域を備える情報処理装置７について説明する。本実施形態における情報処理装置７は、例えば、上記２つの領域を備える半導体集積回路などにより実現される。
【０１５１】
図１４で示すように、本実施形態における情報処理装置７は、ＯＳの支配下に置かれる領域であるＯＳ稼動制御部８と、ＯＳの支配下に置かれない領域であるＯＳ非稼動計算部９と、を備えて構成されている。そして、本実施形態における情報処理装置７は、ＯＳが動作しない（ＯＳの支配下にない）ＯＳ非稼動計算部９上で一般の計算機が実現する計算モデルを採用することが出来るように、ＯＳ稼動制御部８とＯＳ非稼動計算部９とを構成する。なお、以下において、ＯＳ稼動制御部８で稼動するＯＳを、制御部用ＯＳ８０とする。制御部用ＯＳ８０としては、例えば、ＬｉｎｕｘやＷｉｎｄｏｗｓなどのコモディティのＯＳを用いることが出来る。また、ＯＳ稼動制御部８とＯＳ非稼動計算部９とは、互いに通信可能なように接続されている。
【０１５２】
まず、ＯＳ稼動制御部８の構成について説明する。ＯＳ稼動制御部８は、図示しない記憶装置（メモリなど）と、演算装置（ＣＰＵなど）と、を備えて構成されている。ここで、上述したように、ＯＳ稼動制御部８は、制御部用ＯＳ８０の支配下に置かれる領域である。そのため、ＯＳ稼動制御部８では、その支配下にあるハードウェア（記憶装置、演算装置）の仮想化を行うことが可能となる。従って、以下においては、ＯＳ稼動制御部８上で展開するプロセスについて説明する。なお、これらのプロセスは、ＯＳ稼動制御部８の支配下にある演算装置が、ＯＳ稼動制御部８の支配下にある記憶装置が記憶するプログラムを読み取って実行することで実現することが出来る。
【０１５３】
図１４で示すように、ＯＳ稼動制御部８上において、制御部用ＯＳ８０は、代理プロセス８１と、ＯＳ非稼動計算部用管理プロセス８２と、を展開する。また、ＯＳ非稼動計算部用管理プロセス８２は、計算プロセスＤＢ８３と、プロセス対応表８４と、を有している。ここで、代理プロセス８１の構成は、第１の実施形態と同様である。また、ＯＳ非稼動計算部用管理プロセス８２は、第１の実施形態における計算ノード用管理プロセスに相当する。そのため、各構成の詳細な説明については省略する。
【０１５４】
以上が、ＯＳ稼動制御部８の構成である。次に、ＯＳ非稼動計算部９の構成について説明する。
【０１５５】
図１４で示すように、ＯＳ非稼動計算部９は、計算コア９１と、メモリ９２と、を備えて構成されている。また、ＯＳ非稼動計算部９は、図示しないデータ転送手段を備えている。ここで、計算コア９１の構成は、第１の実施形態と同様である。また、メモリ９２、データ転送手段、の構成も、第１の実施形態と同様である。そのため、各構成の詳細については、省略する。
【０１５６】
本実施形態における情報処理装置７は、このように構成されている。このような構成により、情報処理装置７は、第１の実施形態と同様の動作を行うことになる。情報処理装置７の動作は、第１の実施形態と同様のため省略する。
【０１５７】
このように、本実施形態における情報処理装置７は、ＯＳの支配下にあるＯＳ稼動制御部８と、ＯＳの支配下にないＯＳ非稼動計算部９と、を備えている。また、ＯＳ稼動制御部８上には代理プロセス８１とＯＳ非稼動計算部用管理プロセス８２とが展開されている。さらに、ＯＳ非稼動計算部９は、計算コア９１を備えている。そのため、ＯＳ非稼動計算部９は、ＯＳを備えているのと同様に計算処理を実行することが出来ることになる。つまり、情報処理装置７は、ＯＳ非稼動計算部９上でＯＳが動作することによるＯＳジッタやキャッシュ汚染の問題を解決することが出来る。
【０１５８】
また、上記構成にすることで、特権が必要なＩ／Ｏデバイスの制御を、ＯＳ稼動制御部８がＯＳ非稼動計算部９の代理で実施することが出来るようになる。その結果、ＯＳ稼動制御部８がコモディティのハードウェア構成を採用していれば、ＯＳ非稼動計算部９のために専用のデバイスドライバを記述する必要がなくなる。つまり、汎用性の喪失や、開発費の高騰という問題を解決することが出来る。
【０１５９】
＜実施形態３＞
次に、本発明の第３の実施形態について、図１５を用いて説明する。図１５は、本実施形態における情報処理装置７０の構成の概略を示すブロック図である。
【０１６０】
図１５で示すように、本実施形態における情報処理装置７０は、制御コア７１と、計算コア７２と、を備えて構成されている。また、制御コア７１は、計算コア制御部７１１を備えている。そして、計算コア７２は、計算処理制御部７２１と、例外検出部７２２と、を備えている。
【０１６１】
なお、制御コア７１は、オペレーティングシステム（ＯＳ）が組み込まれた演算部である。一方、計算コア７２は、制御コア７１にて制御されることにより所定の計算処理を行う演算部である。具体的には、計算コア７２には、オペレーティングシステムが組み込まれていないことになる。
【０１６２】
計算コア制御部７１１は、停止している計算コア７２に対して当該計算コアが行う計算処理の開始を指示する部分である。後述するように、計算コア制御部７１１が停止している計算コア７２に対して計算処理の開始を指示することで、当該停止している計算コア７２は、計算処理を開始することになる。
【０１６３】
計算処理制御部７２１は、計算コア制御部７１１からの計算処理の開始の指示に応じて計算処理の開始の指示を行うように、計算コア７２を制御する部分である。また、例外検出部７２２は、計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する部分である。予め設定された例外処理としては、例えば、演算例外、メモリアクセス系例外、一般のプロセッサに搭載される例外、などが該当する。
【０１６４】
なお、一度計算処理の実行を停止した計算コア７２は、制御コア７１の計算コア制御部７１１から再度の計算処理の開始の指示を受けるまで、新たな計算処理は開始せず停止し続けることになる。
【０１６５】
このように、本実施形態における情報処理装置７０は、ＯＳが組み込まれた制御コア７１と、計算コア７２と、を備えている。また、制御コア７１は計算コア制御部７１１を備え、計算コア７２は計算処理制御部７２１を備えている。このような構成により、計算コア７２は、制御コア７１から制御されることにより所定の計算処理を行うことが出来る。つまり、情報処理装置７０は、ＯＳが動作しない計算コア７２上で所定の計算処理を行うことが可能となる。その結果、情報処理装置７０は、計算コア７２上でＯＳが動作することによるＯＳジッタやキャッシュ汚染の問題を解決することが出来る。
【０１６６】
また、上記構成にすることで、特権が必要なＩ／Ｏデバイスの制御を、制御コア７１が代理で実施することが出来るようになる。その結果、制御コア７１がコモディティのハードウェア構成を採用していれば、計算コア７２のために専用のデバイスドライバを記述する必要がなくなる。つまり、汎用性の喪失や、開発費の高騰という問題を解決することが出来る。
【０１６７】
また、本実施形態における計算コア７２は、例外検出部７２２を備えている。このように構成することで、計算コア７２は、計算処理の実行中に発生した例外処理を検出し、当該例外処理が発生した計算処理の実行を停止することが出来るようになる。その結果、情報処理装置７０は、ＯＳが動作しない情報処理装置７０上で所定の計算処理をより完全に行うことが可能となる。
【０１６８】
なお、上述した情報処理装置は、当該情報処理装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、オペレーティングシステムが組み込まれた制御コアと、制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置の制御コアに、停止している計算コアに対して当該計算コアが行う計算処理の開始を指示する計算コア制御手段を実現させ、計算コアに、計算コア制御手段からの計算処理の開始の指示に応じて計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出手段と、を実現させるための、プログラムである。
【０１６９】
また、上述した情報処理装置が動作することにより実行される情報処理方法は、制御コアからの計算処理の開始の指示に応じて計算コアが所定の計算処理を開始し、計算コアは、計算コアによる計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した計算処理を停止する、という情報処理方法である。
【０１７０】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１７１】
＜実施形態４＞
次に、本発明の第４の実施形態について、図１６を用いて説明する。図１６は、本実施形態における計算処理装置１０の構成の概略を示すブロック図である。
【０１７２】
計算処理装置１０は、外部装置からの制御により所定の計算処理を行う装置である。つまり、計算処理装置１０には、ＯＳは組み込まれていない。図１６で示すように、本実施形態における計算処理装置１０は、計算処理制御部１０１と、例外検出部１０２と、を備えている。
【０１７３】
計算処理制御部１０１は、外部装置からの計算処理の開始の指示に応じて計算処理の開始を行うように当該計算処理装置を制御する部分である。また、例外検出部１０２は、計算処理の実行中に発生した予め設定された例外処理を検出する部分である。予め設定された例外処理としては、例えば、演算例外、メモリアクセス系例外、一般のプロセッサに搭載される例外、などが該当する。
【０１７４】
そして、計算処理装置１０は、例外検出部１０２が例外処理を検出した場合に、当該例外処理が発生した計算処理の実行を停止するように構成する。なお、一度計算処理の実行を停止した計算処理装置１０は、外部装置から再度の計算処理の開始の指示を受けるまで、計算処理は開始せず停止し続けることになる。
【０１７５】
このように、本実施形態における計算処理装置１０は、外部装置からの計算処理の開始の指示に応じて計算処理の開始を行う装置である。また、計算処理装置１０は、計算処理制御部１０１を備えている。このような構成により、計算処理装置１０は、ＯＳを備えていないにもかかわらず、外部装置からの制御により所定の計算処理を行うことが出来る。その結果、計算処理装置１０は、計算処理装置１０上でＯＳが動作することによるＯＳジッタやキャッシュ汚染の問題を解決することが出来る。
【０１７６】
また、本実施形態における計算処理装置１０は、例外検出部１０２を備えている。このように構成することで、計算処理装置１０は、計算処理の実行中に発生した例外処理を検出し、当該例外処理が発生した計算処理の実行を停止することが出来るようになる。つまり、計算処理装置１０は、ＯＳが動作しない計算処理装置１０上で所定の計算処理をより完全に行うことが可能となる。
【０１７７】
なお、上述した計算処理装置は、当該計算処理装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、計算処理装置に、外部装置からの計算処理の開始の指示に応じて計算処理の開始を行うように計算処理装置を制御する計算処理制御手段と、計算処理の実行中に発生した予め設定された例外処理を検出する例外検出手段と、を実現させ、例外検出手段が例外処理を検出した場合は、当該例外処理が発生した計算処理の実行を停止する機能を有する、プログラムである。
【０１７８】
また、上述した計算処理装置が動作することにより実行される計算処理方法は、外部装置からの計算処理の開始の指示に応じて所定の計算処理を開始し、計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した計算処理を停止する、という計算処理方法である。
【０１７９】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１８０】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１８１】
（付記１）
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備え、
前記制御コアは、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御部を備え、
前記計算コアは、前記計算コア制御部からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御部と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出部と、を備えた、
情報処理装置。
【０１８２】
この構成によると、情報処理装置が、オペレーティングシステムが組み込まれた制御コアと、制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えている。また、制御コアは計算コア制御部を備えている。さらに、計算コアは、計算処理制御部を備えている。このような構成により、ＯＳが動作しない計算コア上で所定の計算処理を行うことが可能となる。その結果、情報処理装置は、計算処理を行う計算コア上でＯＳが動作することによるＯＳジッタやキャッシュ汚染の問題を解決することが出来る。
【０１８３】
また、この構成によると、計算コアが、例外検出部を備えている。このように構成することで、計算コアは、計算処理の実行中に発生した例外処理を検出し、当該例外処理が発生した計算処理の実行を停止することが出来るようになる。その結果、情報処理装置は、ＯＳが動作しない情報処理装置上で所定の計算処理をより完全に行うことが可能となる。
【０１８４】
（付記２）
付記１に記載の情報処理装置であって、
前記制御コアの前記計算コア制御部は、前記例外検出部により検出した前記例外処理に応じて前記計算コアに対して前記計算処理の開始を指示するように構成され、
前記計算コアの前記計算処理制御部は、前記計算コア制御部から前記計算処理の開始の指示を受けた場合に、当該計算処理を開始するように前記計算コアを制御する、
情報処理装置。
【０１８５】
この構成によると、情報処理装置の制御コアは、例外検出部が検出した例外処理に応じて計算コアに対して計算処理の開始を指示するように構成されることになる。これにより、情報処理装置は、ＯＳが動作しない情報処理装置上で所定の計算処理をより完全に行うことが可能となる。
【０１８６】
（付記３）
付記２に記載の情報処理装置であって、
前記計算コアの前記例外検出部は、当該例外検出部が前記例外処理を検出した旨を前記制御コアに通知するように構成され、
前記制御コアの前記計算コア制御部は、前記例外検出部から受けた通知が示す前記例外処理に応じて前記計算コアに対して前記計算処理の開始の指示をする、
情報処理装置。
【０１８７】
この構成によると、計算コアは、例外を検出した場合に制御コアに通知するように構成されることになる。これにより、情報処理装置は、ＯＳが動作しない情報処理装置上で所定の計算処理をより完全に行うことが可能となる。
【０１８８】
（付記４）
付記１乃至３いずれか１項に記載の情報処理装置であって、
前記計算コアは、前記例外検出部により検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送手段を備え、
前記制御コアは、前記データ転送手段により転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理部を備える、
情報処理装置。
【０１８９】
この構成によると、計算コアがデータ転送手段を備え、制御コアが例外処理代理部を備えている。このような構成により、計算コアに代理して制御コアが例外処理を処理することが出来るようになる。その結果、例えばシステムコールの処理を、計算コアに代理して制御コアで行うことが出来るようになる。
【０１９０】
（付記５）
付記４に記載の情報処理装置であって、
前記データ転送手段は、前記計算コアにて発生した前記例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアの前記例外処理代理部が有するバッファ領域に転送するように構成された、
情報処理装置。
【０１９１】
（付記６）
付記１乃至５のいずれか１項に記載の情報処理装置であって、
前記制御コアの前記計算コア制御部は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示することが出来るように構成されるとともに、前記計算処理を停止中の前記計算コアに対して当該計算コアによる処理の対象となる前記計算処理の内容を変更する指示を行うことが出来るように構成され、
前記計算コアの前記計算処理制御部は、前記計算コア制御部からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算コアを制御し、前記計算コア制御部からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理装置。
【０１９２】
この構成によると、制御コアは計算コアに対して、計算処理の停止の指示と計算処理の変更の指示とを行うことが出来るように構成されることになる。また、計算コアは、制御コアからの指示に応じて計算処理の停止と変更を行うことが出来るようになる。その結果、情報処理装置は、例えば、コンテキストスイッチを行うことが出来るようになる。
【０１９３】
（付記７）
付記６に記載の情報処理装置であって、
前記計算コアが行う前記計算処理の数が前記計算コアの数よりも多い場合、
前記制御コアの前記計算コア制御部は、予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理装置。
【０１９４】
（付記８）
オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置の前記制御コアに、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御手段を実現させ、
前記計算コアに、前記計算コア制御手段からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出手段と、を実現させるための、
プログラム。
【０１９５】
（付記８−１）
付記８に記載のプログラムであって、
前記計算コア制御手段は、前記例外検出手段が検出した前記例外処理に応じて、前記計算コアに対して前記計算処理の開始を指示する機能を有する、
プログラム。
【０１９６】
（付記９）
付記８に記載のプログラムであって、
前記例外検出手段は、当該例外検出手段が前記例外処理を検出した旨を前記制御コアに通知する機能を有する
プログラム。
【０１９７】
（付記１０）
付記９に記載のプログラムであって、
前記計算コアに、前記例外検出手段により検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送手段を実現させ、
前記制御コアに、前記データ転送手段により転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理手段を実現させる、
プログラム。
【０１９８】
（付記１０−１）
付記１０に記載のプログラムであって、
前記データ転送手段は、前記計算コアにて発生した例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアの前記例外処理代理手段が備えるバッファ領域に転送する機能を有する、
プログラム。
【０１９９】
（付記１１）
付記８乃至１０のいずれか１項に記載のプログラムであって、
前記計算コア制御手段は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示する機能を有するとともに、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容を変更する機能を有し、
前記計算処理制御手段は、前記計算コア制御手段からの前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する機能と、前記計算コア制御部からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する機能と、を有する、
プログラム。
【０２００】
（付記１１−１）
付記１１に記載のプログラムであって、
前記計算コアが行う計算処理の数が当該計算コアの数よりも多い場合、
前記計算コア制御手段は、予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算コアによる処理の対象となる前記計算処理の内容を変更する機能を有する、
プログラム。
【０２０１】
（付記１２）
制御コアからの計算処理の開始の指示に応じて計算コアが所定の前記計算処理を開始し、
前記計算コアは、前記計算コアによる前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
情報処理方法。
【０２０２】
（付記１３）
付記１２に記載の情報処理方法であって、
前記計算コアは、前記例外処理を検出した場合、当該例外処理を検出した旨を前記制御コアに通知する、
情報処理方法。
【０２０３】
（付記１４）
付記１３に記載の情報処理方法であって、
前記計算コアは、前記例外処理を処理する際に必要なデータを前記制御コアに転送し、
前記制御コアは、転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する、
情報処理方法。
【０２０４】
（付記１５）
付記１２乃至１４のいずれか１項に記載の情報処理方法であって、
前記制御コアは、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容の変更を指示し、
前記計算コアは、前記計算コア制御部からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理方法。
【０２０５】
（付記１５−１）
前記計算コアが行う計算処理の数が当該計算コアの数よりも多い場合、
予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止させ、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
情報処理方法。
【０２０６】
（付記１６）
外部装置からの制御により所定の計算処理を行う計算処理装置であって、
外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御部と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出部と、を備えた、
計算処理装置。
【０２０７】
（付記１７）
付記１６に記載の計算処理装置であって、
前記例外検出部は、当該例外検出部が前記例外処理を検出した旨を前記外部装置へと通知するように構成した、
計算処理装置。
【０２０８】
（付記１８）
付記１６又は１７に記載の計算処理装置であって、
前記例外検出部により検出された当該例外処理を処理する際に必要なデータを前記外部装置へと転送するデータ転送手段を備える、
計算処理装置。
【０２０９】
（付記１９）
付記１６乃至１８いずれか１項に記載の計算処理装置であって、
前記計算処理制御部は、前記外部装置からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算処理装置を制御し、前記外部装置からの前記計算処理の内容の変更の指示に応じて前記計算処理装置による処理の対象となる前記計算処理の内容を変更する、
計算処理装置。
【０２１０】
（付記２０）
計算処理装置に、
外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出手段と、を実現させるための、
プログラム。
【０２１１】
（付記２１）
付記２０に記載のプログラムであって、
前記例外検出手段は、当該例外検出手段が前記例外処理を検出した旨を外部装置へと通知する機能を有する、
プログラム。
【０２１２】
（付記２２）
付記２０又は２１に記載のプログラムであって、
前記例外検出手段により検出された当該例外処理を処理する際に必要なデータを前記外部装置に転送するデータ転送手段を実現させる、
プログラム。
【０２１３】
（付記２３）
付記２０乃至２２いずれか１項に記載の計算処理装置であって、
前記計算処理制御手段は、前記外部装置からの前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する機能と、前記外部装置からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する機能と、を有する、
プログラム。
【０２１４】
（付記２４）
外部装置からの計算処理の開始の指示に応じて所定の前記計算処理を開始し、
前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
計算処理方法。
【０２１５】
（付記２５）
付記２４に記載の計算処理方法であって、
前記例外処理を検出した場合、当該例外処理を検出した旨を前記外部装置に通知する、
計算処理方法。
【０２１６】
（付記２６）
付記２５に記載の計算処理方法であって、
前記例外処理を検出した場合、当該例外処理を処理する際に必要なデータを前記制御コアに転送する、
計算処理方法。
【０２１７】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０２１８】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０２１９】
１  並列計算機
２、３  ノード
２１、３１  ＣＰＵ
２１１、３１１  プロセッサコア
２２、３２  メモリ
３２１  プロセスイメージ
３２１１  通信バッファ領域
２３、３３  データ転送手段
２３１、３３１  ＤＭＡエンジン機能
２３２、３３２  対ＣＰＵ通信機能
４  ノード間通信手段
５  制御ノード
５１１  代理プロセス
５１１１  引数書き込み領域
５１１２  データバッファ領域
５２  計算ノード用管理プロセス
５２１  計算プロセスＤＢ
５２２  プロセス対応表
６  計算ノード
６１１  計算コア
６１１Ａ  コンテキスト
６１１１  汎用レジスタ群
６１１２  制御レジスタ群
６１１３  例外検出手段
６１１４  例外通知手段
６１１５  レジスタ群アクセス手段
７、７０  情報処理装置
７１  制御コア
７１１  計算コア制御部
７２  計算コア
７２１  計算処理制御部
７２２  例外検出部
８  ＯＳ稼動制御部
８０  制御用ＯＳ
８１  代理プロセス
８２  ＯＳ非稼動計算部用管理プロセス
９  ＯＳ非稼動計算部
９１  計算コア
９２  メモリ
１０  計算処理装置
１０１  計算処理制御部
１０２  例外検出部
【図１】
0005867482.tif 000002
【図２】
0005867482.tif 000003
【図３】
0005867482.tif 000004
【図４】
0005867482.tif 000005
【図５】
0005867482.tif 000006
【図６】
0005867482.tif 000007
【図７】
0005867482.tif 000008
【図８】
0005867482.tif 000009
【図９】
0005867482.tif 000010
【図１０】
0005867482.tif 000011
【図１１】
0005867482.tif 000012
【図１２】
0005867482.tif 000013
【図１３】
0005867482.tif 000014
【図１４】
0005867482.tif 000015
【図１５】
0005867482.tif 000016
【図１６】
0005867482.tif 000017