(57)【要約】【課題】メインプロセッサコアとサブプロセッサコアとを有する情報処理装置ではシグナルが発生するとメインプロセッサコアの負荷が増大すること。【解決手段】情報処理装置は、メインプロセッサコアと、メインプロセッサコアにより制御されるサブプロセッサコアとを有する。メインプロセッサコアは、シグナルが発生したとき、シグナルに係るシグナルハンドラをサブプロセッサコアに送信し、シグナルハンドラの実行を指示する。サブプロセッサコアは、シグナルハンドラをメインプロセッサコアから受信し、シグナルハンドラの実行が指示されると、シグナルハンドラを実行する。【選択図】図１
2016091076.tif 000002
【特許請求の範囲】
【請求項１】
メインプロセッサコアと前記メインプロセッサコアにより制御されるサブプロセッサコアとを有し、
前記メインプロセッサコアは、シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示し、
前記サブプロセッサコアは、前記シグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する
情報処理装置。
【請求項２】
コンテキスト記憶手段を有し、
前記メインプロセッサコアは、前記シグナルハンドラを前記サブプロセッサコアに送信する前に、前記サブプロセッサコアで実行中のプロセスを停止させ、前記プロセスのコンテキストを前記コンテキスト記憶手段に記憶する
請求項１に記載の情報処理装置。
【請求項３】
前記サブプロセッサコアは、前記シグナルハンドラの実行終了時に前記メインプロセッサコアに実行終了通知を送信し、
前記メインプロセッサコアは、前記実行終了通知を受信すると、前記コンテキスト記憶手段に記憶された前記プロセスのコンテキストを前記サブプロセッサコアに送信し、前記プロセスの実行を指示し、
前記サブプロセッサコアは、前記プロセスのコンテキストを前記メインプロセッサコアから受信し、前記プロセスの実行が指示されると、前記プロセスを実行する
請求項２に記載の情報処理装置。
【請求項４】
前記シグナルの番号と前記シグナルハンドラとの対応関係を記憶するシグナルハンドラ記憶手段を有し、
前記メインプロセッサコアは、前記発生したシグナルの番号と前記シグナルハンドラ記憶手段の前記対応関係とに基づいて、前記発生したシグナルに係る前記シグナルハンドラを決定する
請求項１乃至３の何れかに記載の情報処理装置。
【請求項５】
前記シグナルは、前記メインプロセッサコアで動作する基本ソフトウェアによって発生されるシグナルである
請求項１乃至４の何れかに記載の情報処理装置。
【請求項６】
前記シグナルは、前記サブプロセッサコアで発生する例外によるシグナルである
請求項１乃至４の何れかに記載の情報処理装置。
【請求項７】
前記サブプロセッサコアは、前記発生した例外を前記メインプロセッサコアに通知し、
前記メインプロセッサコアは、前記通知された例外の原因を取得し、前記原因に基づいて前記発生した例外によるシグナルの番号を決定する
請求項６に記載の情報処理装置。
【請求項８】
メインプロセッサコアと前記メインプロセッサコアにより制御されるサブプロセッサコアとを有する情報処理装置が実行するシグナル処理方法であって、
前記メインプロセッサコアは、シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示し、
前記サブプロセッサコアは、前記シグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する
シグナル処理方法。
【請求項９】
サブプロセッサコアを制御する機能を有するメインプロセッサコアであって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示するシグナルハンドラ起動手段を有する
メインプロセッサコア。
【請求項１０】
メインプロセッサコアにより制御されるサブプロセッサコアであって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する計算処理部を有する
サブプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、シグナル処理方法、メインプロセッサコア、サブプロセッサコアに関する。
【背景技術】
【０００２】
一般に情報処理装置では、プロセスの実行中にシグナルが発生すると、そのプロセスによって登録されたシグナルハンドラが実行されるようになっている（例えば特許文献１参照）。ここで、シグナルとは、プロセス間通信によってプロセスに送信する短いメッセージであり、ユーザや他プロセスが起こしたイベントに応じた種別がある。また、シグナルハンドラとは、各プロセスが用意するルーチンである。一般に複数のシグナルハンドラが用意されており、受信したシグナルに対応するシグナルハンドラが実行されるようになっている。
【０００３】
他方、性能を高めるために、メインプロセッサコアとは別に、メインプロセッサコアによって制御され特定の処理を実行するサブプロセッサコアを備えるようにした情報処理装置が提案ないし実用化されている（例えば特許文献２乃至５参照）。サブプロセッサコアは、コプロセッサ、或いはハードウェアアクセラレータとも呼ばれる。
【０００４】
そして、メインプロセッサコアとサブプロセッサコアとを有する情報処理装置では、シグナルが発生した場合、メインプロセッサコアが、発生したシグナルに対応するシグナルハンドラを実行するように構成されている（例えば特許文献２乃至５参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】再特ＷＯ２００８／１１１３８２号公報
【特許文献２】特開２００９−３２２６３号公報
【特許文献３】特開２００２−３６６３６７号公報
【特許文献４】英国特許出願公開第２３７６０９９号明細書
【特許文献５】特開２０１０−１０２７３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メインプロセッサコアとサブプロセッサコアとを有する情報処理装置では、発生したシグナルに対応するシグナルハンドラをメインプロセッサコアが実行しなければならない。そのため、シグナルが発生すると、メインプロセッサコアの負荷が増大する。
【０００７】
本発明の目的は、上述した課題、すなわち、メインプロセッサコアとサブプロセッサコアとを有する情報処理装置ではシグナルが発生するとメインプロセッサコアの負荷が増大する、という課題を解決する情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の観点に係る情報処理装置は、
メインプロセッサコアと前記メインプロセッサコアにより制御されるサブプロセッサコアとを有し、
前記メインプロセッサコアは、シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示し、
前記サブプロセッサコアは、前記シグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する。
【０００９】
本発明の第２の観点に係るシグナル処理方法は、
メインプロセッサコアと前記メインプロセッサコアにより制御されるサブプロセッサコアとを有する情報処理装置が実行するシグナル処理方法であって、
前記メインプロセッサコアは、シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示し、
前記サブプロセッサコアは、前記シグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する。
【００１０】
本発明の第３の観点に係るメインプロセッサコアは、
サブプロセッサコアを制御する機能を有するメインプロセッサコアであって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示するシグナルハンドラ起動手段を有する。
【００１１】
本発明の第４の観点に係るサブプロセッサコアは、
メインプロセッサコアにより制御されるサブプロセッサコアであって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する計算処理部を有する
【発明の効果】
【００１２】
本発明は上述した構成を有するため、メインプロセッサコアとサブプロセッサコアとを有する情報処理装置において、シグナルが発生した際のメインプロセッサコアの負荷を軽減することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態に係る情報処理装置のブロック図である。
【図２】本発明の第１の実施形態に係る情報処理装置における計算コアの構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態に係る情報処理装置においてシグナル処理を実現するための構成の一例を示すブロック図である。
【図４】本発明の第１の実施形態に係る情報処理装置で使用するプロセス対応表の一例を示す説明図である。
【図５】本発明の第１の実施形態に係る情報処理装置におけるシグナルハンドラ記憶手段が保持するデータの一例を示す説明図である。
【図６】本発明の第１の実施形態に係る情報処理装置における代理プロセスとコンテキスト管理手段の詳細なブロック図である。
【図７】本発明の第１の実施形態に係る情報処理装置におけるコンテキスト一時記憶手段が保持する計算コアのコンテキストの一例を示す説明図である。
【図８】本発明の第１の実施形態におけるシグナル受信時の計算プロセスのシグナルハンドラの起動の動作の一例を示すフローチャートである。
【図９】本発明の第１の実施形態におけるシグナル受信時の計算プロセスと代理プロセスの動作時のメモリ空間上の実行位置の変化を模式的に示す説明図である。
【図１０】本発明の第１の実施形態における計算プロセスのシグナルハンドラの終了と復帰の動作の一例を示すフローチャートである。
【図１１】本発明の第１の実施形態におけるシグナルハンドラからの復帰時の計算プロセスと代理プロセスの動作時のメモリ空間上の実行位置の変化を模式的に示す説明図である。
【図１２】本発明の第２の実施形態に係る情報処理装置においてシグナル処理を実現するための構成の一例を示すブロック図である。
【図１３】本発明の第３の実施形態に係る情報処理装置のブロック図である。
【発明を実施するための形態】
【００１４】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１は本発明の第１の実施形態に係る情報処理装置のブロック図である。図１に示す情報処理装置は、例えば、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）向けの並列計算機である。本実施形態の情報処理装置は、メインプロセッサであるノード１とサブプロセッサであるノード２とがノード間通信手段３により接続されている。図１では、１つのノード１と１つのノード２の２つのノードからなる情報処理装置を示している。しかし、本発明は、これに限らずさらに多数のノードからなる構成をとっても良い。また本実施形態では、ノード１とノード２とは同じコンピュータアーキテクチャを有している。しかし、ノード１とノード２とは異なるコンピュータアーキテクチャを有しても構わない。
【００１５】
ノード１、２は、ＣＰＵ１２、２２、メモリ１１、２１、およびデータ転送手段１３、２３を備える。本実施形態の情報処理装置は、ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）型であり、各ノード１、２が他のノード２、１のメモリ２１、１１にアクセスするときはノード間通信手段３を用いる。ＣＰＵ１２、２２は、ｍ個（ｍは１以上の正の整数）のプロセッサコア１４、２４を有する。ＣＰＵ１２、２２、メモリ１１、２１、データ転送手段１３、２３は、ノード内ではＰＣＩ  Ｅｘｐｒｅｓｓなどによって接続されており、プロセッサコア１４、２４は、自ノード内のメモリ１１、２１、データ転送手段１３、２３に上記ＰＣＩ  Ｅｘｐｒｅｓｓなどを通じてアクセス可能である。
【００１６】
メモリ１１、２１は、ノード内のプロセッサコア１４、２４から共有される。
【００１７】
データ転送手段１３は、ノード間通信手段３からノード内のメモリ１１、２１にアクセスするＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）エンジン１５、２５と、ＣＰＵ１２、２２上のレジスタ等の資源に対してアクセスする対ＣＰＵ通信機能１６、２６とを有する。対ＣＰＵ通信機能１６、２６は、ＣＰＵ１２、２２上のレジスタ等の資源をメモリ空間にマップし、ＤＭＡエンジン１５、２５からアクセスしても良い。ゆえに、ノード間通信手段３は、ＰＣＩ  Ｅｘｐｒｅｓｓ、ＩｎｆｉｎｉｂａｎｄなどのＤＭＡ機能もしくはＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能を持つインターコネクトによって実現することができる。
【００１８】
本実施形態では、ＮＵＭＡ型メモリを持つ並列計算機システムのノードの１つを制御ノード、残りを計算ノードと呼び、区別する。制御ノードがオペレーティングシステム機能を有するのに対して、計算ノードはオペレーティングシステム機能を持たない。図１では、ノード１が制御ノード、ノード２が計算ノードである。以下、計算ノード２上のプロセッサコア２４を計算コアと呼ぶ。
【００１９】
図２は計算コア２４の構成の一例を示すブロック図である。この例の計算コア２４は、汎用レジスタ群２４０、制御レジスタ群２４１、例外検出手段２４２、レジスタ群アクセス手段２４３、例外通知手段２４４を有する。
【００２０】
汎用レジスタ群２４０は、ｘ８６やＡＲＭなどの一般的なプロセッサと同じように、プログラムカウンタ（ＰＣ）、演算結果を格納するための汎用レジスタ（ＧＰＲ）などから構成される。これらのレジスタは、計算コア２４での命令の実行に伴い書き換えられる。また、計算コア２４がロード命令、ストア命令を実行することで、汎用レジスタ群２４０とメモリとの間でデータ転送が行われる。
【００２１】
制御レジスタ群２４１は、計算コア２４の実行を制御するためのレジスタである。制御ノード１は、計算ノード２の制御レジスタ群２４１に対して、ノード間通信手段３およびデータ転送手段１３、２３を通じて、実行の開始および実行の停止を指示することができる。制御ノード１が計算コア２４に実行の開始を指示すると、計算コア２４は汎用レジスタ群２４０の内容に従って処理を開始する。具体的には、計算コア２４は、プログラムカウンタの値に従い命令をフェッチして、フェッチされた命令の実行を行い、汎用レジスタ群２４０やメモリ２３の内容の更新を実施する。この状態を、命令実行状態と呼ぶ。また制御ノード１が計算コア２４に実行の停止を指示すると、計算コア２４は新規の命令実行を停止させる。実行の停止が指示された状態で、計算コア２４上に仕掛中の命令がない状態を、命令実行停止状態と呼ぶ。計算コア２４は、一旦、命令実行停止状態に遷移すると、制御ノード１からの実行の開始の指示があるまで、新規の命令実行を行わない。計算コア２４が命令実行状態であるか、あるいは、命令実行停止状態であるかは、ノード間通信手段３、データ転送手段１３、レジスタ群アクセス手段２４３を通じて、制御ノード１から参照することができる。もしも、参照を行う機能がない場合には例外情報の送出によって命令実行状態であるか、命令実行停止状態であるかを制御ノードに対して通知するようにしてよい。
【００２２】
例外検出手段２４２は、命令の実行中に何らかの例外を検出した場合に、制御レジスタ群２４１に実行の停止の指示を行う。同時に例外検出手段２４２は、例外通知手段２４４に対して例外通知の依頼を行う。上記の例外とは、ゼロ除算例外などの演算例外、メモリアクセス境界違反などのメモリアクセス系例外、システムコール呼び出しのためのソフトウェアトラップなどの一般のプロセッサで発生する例外を指す。
【００２３】
例外通知手段２４４は、例外検出手段２４２から取得した例外発生情報に基づき、ノード間通信手段３を用いて、制御ノード１に対して計算コア２４の実行停止を通知する。この例外通知手段２４４は、例外の発生を制御ノード１に通知することができれば、実装方法は問わない。ゆえに、（Ａ）ＰＣＩ  ＥｘｐｒｅｓｓのＭＳＩ／ＭＳＩ−Ｘのようなノード間通信手段３が持つ割込み機能、（Ｂ）事前に予約したメモリ領域へのＤＭＡ書き込み、などの方法で実現することができる。（Ｂ）の方法の場合には、制御ノード１上で計算ノード管理プロセスが計算ノード２からの例外通知の有無をポーリング等の方式で監視する必要がある。さらに、例外通知手段２４４は、制御ノード１からの設定により、制御ノード１への例外発生の通知を抑止することもできる。その場合には、（Ｃ）制御ノード１が直接に制御レジスタ群２４１の実行状態を監視（ポーリング）することで、例外の発生を制御ノード１が検知するようにしてよい。
【００２４】
レジスタ群アクセス手段２４３は、制御ノード１から発行された指示に基づいて、汎用レジスタ群２４０および制御レジスタ群２４１の各レジスタに対して読み出し・書き込みを行う。ただし、汎用レジスタ群２４０への読み出しおよび書き込みは、命令実行停止状態の計算コア２４にのみ発行が許可される。命令実行状態の計算コア２４の汎用レジスタ群２４０へアクセスがあったときの計算コア２４の動作は不定である（たとえば、当該アクセスは無視される）。
【００２５】
図３は本実施形態の情報処理装置においてシグナル処理を実現するための構成の一例を示すブロック図である。前述のとおり、本実施形態の情報処理装置は、１つの制御ノード１と１つ以上の計算ノード２とから構成される。制御ノード１は、通常のＯＳが行うように、計算ノード２上に複数のプロセスを展開して、同時に実行を行う機能を持つ。計算ノード２上に展開されたプロセスを計算プロセスと呼ぶ。計算プロセスは、計算ノード２上で動作するアプリケーションプログラムの開始等に伴い生成され、その実行の終了に伴って破棄される。以下、計算ノード２、制御ノード１について、より詳細に説明する。
【００２６】
＜計算ノード＞
計算ノード２はオペレーティングシステム（ＯＳ）が動作しないノードである。このため、ＯＳジッタ等のＯＳの悪影響を排除することができる。
【００２７】
この計算ノード２上で一般の計算機が実現する計算モデルを採用するために、一般のオペレーティングシステムが提供するサービスの代替機能を、制御ノード１がノード間通信を通じて計算ノード２に対して提供する。
【００２８】
計算ノード２は、ＣＰＵ２４上の単数ないしは複数の計算コア（プロセッサコア）２４−１〜２４−ｍと、メモリ２１と、データ転送手段２３（図１参照）とで構築される。図３では複数の計算コア２４−１〜２４−ｍが搭載されているが、これは１つであっても良い。
【００２９】
同一の計算ノード２上の全ての計算コア２４は、当該計算ノード２上の単一のメモリ２１を共有する。このメモリ２１上には複数の計算プロセスに関連するデータを格納することができる。このデータをプロセスイメージ２１０−１〜２１０−ｎと呼ぶ。このプロセスイメージ２１０−１〜２１０−ｎを操作するための計算コア２４のアーキテクチャ状態をコンテキスト２４０−１〜２４０−ｎと呼ぶ。
【００３０】
＜制御ノード＞
制御ノード１は、オペレーティングシステムを採用する通常のスタンドアローン型の計算機システムと同じ構成を採用し、計算ノード２のためのオペレーティングシステム機能のサービスを提供する。なお、本明細書では、制御ノード１上に搭載されるオペレーティングシステムを制御ノード用オペレーティングシステム１００と呼ぶ。制御ノード用オペレーティングシステム１００は、ＬｉｎｕｘやＷｉｎｄｏｗｓなどに代表される計算機に用いられるコモディティのオペレーティングシステムであってよい。
【００３１】
制御ノード１は、オペレーティングシステム１００が動作するため、計算ノード２と異なりオペレーティングシステム１００のシステム管理機能を用いて、ハードウェア（プロセッサコア１４およびメモリ１１）の仮想化を行うことができる。従って、以下では制御ノード１上のプロセスの構成に関して説明する。
【００３２】
制御ノード１は、制御ノード用オペレーティングシステム１００の上に複数の代理プロセス１１０−１〜１１０−ｎ、計算ノード用管理プロセス１２０、コンテキスト管理手段１３０、シグナルハンドラ記憶手段１４０を有する。
【００３３】
代理プロセス１１０は、計算ノード２上の計算プロセス一つ一つに対応して生成される。ゆえに、計算ノード２上のメモリ２１の各プロセスイメージ２１０に対して一つの代理プロセスがある。代理プロセス１１０は、対応する計算ノード２上のプロセスが発行するオペレーティングシステムへの要求をノード間通信手段３を介して受け付け、計算ノード２上に存在するべきオペレーティングシステムの代替で処理を行う。
【００３４】
計算ノード用管理プロセス１２０は、各計算ノード２に対して生成され、その計算ノード２上のプロセッサコア２４、メモリ２１等のハードウェア資源の管理を行う。また計算ノード用管理プロセス１２０は、一部のリソースに対する代理プロセス１１０から計算コア２４へのアクセスの仲介なども実施する。例えば、計算ノード用管理プロセス１２０は、計算プロセスを生成する際の計算コア２４の割り当て、計算ノード２上のメモリ管理などを行う。
【００３５】
上記の操作を実現するために、計算ノード用管理プロセス１２０は、計算ノード２上の計算コア２４および物理メモリ２１などのハードウェア資源と計算プロセスや代理プロセスなどの仮想化された資源との紐づけを行って、これらを管理する。計算ノード用管理プロセス１２０は、代理プロセス１１０と計算コア２４との対応をプロセス対応表１２１に格納する。
【００３６】
図４はプロセス対応表１２１の一例を示す説明図である。この例のプロセス対応表１２１は、代理プロセスＩＤ１２１１と計算コア番号１２１２との組を有する。代理プロセスＩＤ１２１１は、代理プロセス１１０のプロセスＩＤである。計算コア番号１２１２は、代理プロセス１１０に対応する計算プロセスが動作中の計算コアの番号である。プロセス対応表１２１により、計算コア番号１２１２から対応する代理プロセスＩＤ１２１１を求めることができ、また、代理プロセスＩＤ１２１１から動作中の計算コアの番号１２１１を求めることができる。
【００３７】
コンテキスト管理手段１３０は、計算プロセスのシグナルハンドラへの遷移とその復帰を制御する。コンテキスト管理手段１３０は、例えば、代理プロセスに１対１に対応して存在する。コンテキスト管理手段１３０の詳細は、代理プロセス１１０の詳細とともに後述する。
【００３８】
シグナルハンドラ記憶手段１４０は、計算プロセスのシグナルハンドラを代理プロセス１１０から呼び出すため、シグナル番号と計算プロセス上のシグナルハンドラのアドレスとの対応を記憶している。図５はシグナルハンドラ記憶手段１４０が保持するデータの一例を示す説明図である。図５に示す例では、シグナルハンドラ記憶手段１４０は、シグナル番号１４０１とシグナルハンドラ１４０２との組を有する。シグナル番号１４０１は制御ノード１のＯＳにおいて定義されるシグナル番号であり、シグナルによって通知するイベントの種類を表す。シグナルハンドラ１４０２は、代理プロセス１１０がシグナル受信時に呼び出すべき計算プロセス上のハンドラ（シグナルハンドラ）のアドレスである。代理プロセス１１０は、シグナルハンドラ記憶手段１４０を参照して、シグナル番号１４０１から対応するシグナルハンドラ１４０２を求めることができる。
【００３９】
シグナルハンドラ記憶手段１４０は、代理プロセス１１０毎に存在してもよいし、複数の代理プロセス１１０に共通に存在してもよい（例えば、制御ノード１上に1つ存在してもよい）。図５は、シグナルハンドラ記憶手段１４０が代理プロセス１１０毎に存在する例である。シグナルハンドラ記憶手段１４０が制御ノード１上の複数の代理プロセスに共通に存在する場合は、図５のシグナルハンドラ記憶手段１２２の行に代理プロセスのプロセスＩＤを追加する。即ち、シグナルハンドラ記憶手段１４０は、シグナルハンドラを設定した代理プロセスのプロセスＩＤとシグナル番号とシグナルハンドラのアドレスとの組を持ち、代理プロセス１１０は、代理プロセスのプロセスＩＤとシグナル番号との組からシグナルハンドラのアドレスを求める。
【００４０】
図６は代理プロセスとコンテキスト管理手段の詳細なブロック図である。以下、図６を参照して、代理プロセスおよびコンテキスト管理手段の機能を詳細に説明する。
【００４１】
代理プロセス１１０は、制御ノード１のＯＳ１００によるシグナルを処理するためのシグナルハンドラ１１０１と、計算プロセスによるシグナルハンドラの完了を処理するための復帰ハンドラ１１０２とを有する。他方、コンテキスト管理手段１３０は、計算プロセスのシグナルハンドラを記憶する計算プロセスシグナルハンドラ起動手段１３０１と、計算プロセスのコンテキストを退避する場所であるコンテキスト一時記憶手段１３０２と、シグナルハンドラから計算プロセスのコンテキストを復帰させる計算プロセス復帰手段１３０３とを有する。
【００４２】
代理プロセス１１０のシグナルハンドラ１１０１は、制御ノード１上のシグナルを受信したときに、計算プロセスシグナルハンドラ起動手段１３０１を起動し、シグナル番号を通知する。通知するシグナル番号は、受信したシグナルのシグナル番号であってよい。代理プロセス１１０の復帰ハンドラ１１０２は、計算プロセスによるシグナルハンドラ終了の通知によって起動され、計算プロセス復帰手段１３０３を起動する。代理プロセス１１０のシグナルハンドラ１１０１と復帰ハンドラ１１０２とは、制御ノード１のＣＰＵ１２とメモリ１１および制御ノード１上のＯＳ１００によりＣＰＵ１２とメモリ１１などを仮想化した代理プロセス１１０と、制御ノード用ＯＳ１００が提供するシグナルやシステムコール機構と、代理プロセス１１０で実行するプログラムとによって実現される。
【００４３】
コンテキスト管理手段１３０は、計算コア２４で実行中のコンテキストを退避し、その後でシグナルハンドラを起動する計算プロセスシグナルハンドラ起動手段１３０１と、計算コア２４のコンテキストを保存するコンテキスト一時記憶手段１３０２と、計算コア２４のコンテキストを戻す計算プロセス復帰手段１３０３とを有する。
【００４４】
計算プロセスシグナルハンドラ起動手段１３０１は、代理プロセス１１０からシグナル番号を入力として受け、当該代理プロセス１１０に対応する計算プロセスを実行している計算コア２４上のコンテキストをコンテキスト一時記憶手段１３０２に保存し、計算コア２４のコンテキストをシグナルハンドラに移動させる。
【００４５】
コンテキスト一時記憶手段１３０２は、シグナル受信時の計算コア２４のコンテキストを保存する。一般に、シグナルハンドラの実行中にもシグナルを受信することが可能であるため、コンテキスト一時記憶手段１３０２は保存した順序と逆にコンテキストを取り出すことができる構造でコンテキストを保存する。このようなデータ構造の一例としてスタックがある。
【００４６】
図７はコンテキスト一時記憶手段１３０２が保持する計算コア２４のコンテキストの一例を示す説明図である。図７に示す例では、コンテキスト一時記憶手段１３０２は、レベル１３０２１と、ＰＣ（プログラムカウンタ）１３０２２と、レジスタＡ１３０２３と、レジスタＢ１３０２４と、レジスタＣ１３０２５、…との組を複数保持するエントリを有する。レベル１３０２１はシグナルによるシグナルハンドラ呼び出しの入れ子の深さを表す。ＰＣ１３０２２、レジスタＡ１３０２３、レジスタＢ１３０２４、レジスタＣ１３０２５、…は、それぞれ、計算プロセスシグナルハンドラ起動手段１３０１によって退避されたコンテキストを構成する計算コア２４のプログラムカウンタ（ＰＣ）、レジスタＡ、レジスタＢ、レジスタＣ、…の値である。
【００４７】
計算プロセス復帰手段１３０３は、代理プロセス１１０の復帰ハンドラ１１０２によるシグナルハンドラ終了の通知を受け、コンテキスト一時記憶手段１３０２から最後に保存されたコンテキストを取り出し、計算コア２４のコンテキストをシグナル受信前のものに復帰させる。
【００４８】
計算プロセスシグナルハンドラ起動手段１３０１と計算プロセス復帰手段１３０３とは、制御ノード１のＣＰＵ１２とメモリ１１および制御ノード１上のＯＳ１００によりＣＰＵ１２とメモリ１１などを仮想化した代理プロセス１１０と、この代理プロセス１１０で実行するプログラムとによって実現される。
【００４９】
コンテキスト一時記憶手段１３０２は、制御ノード１のＣＰＵ１２とメモリ１１および制御ノード１上の代理プロセス１１０のプロセススタックやヒープ、代理プロセス１１０で実行するプログラムによって実現される。コンテキストを保存する領域として、制御ノード１のメモリ１１の代わりに、計算ノード２にある計算プロセス用のメモリ２１とノード間通信手段３とによって実現してもよい。
【００５０】
代理プロセス１１０とコンテキスト管理手段１３０の詳細については、動作の説明においてさらに説明する。
【００５１】
次に本実施形態の情報処理装置におけるシグナル処理の動作を説明する。
【００５２】
＜シグナルハンドラの起動＞
図８は本実施形態によるシグナル受信時の計算プロセスのシグナルハンドラの起動の動作の一例を示すフローチャートである。また図９はシグナル受信時の計算プロセスと代理プロセスの動作時のメモリ空間上の実行位置の変化を模式的に示す説明図である。以下、図８および図９を参照して、本実施形態によるシグナルハンドラの起動の動作を説明する。
【００５３】
代理プロセス１１０がシグナルを受信すると、制御ノード１上のＯＳ１００が代理プロセス１００のシグナルハンドラ１１０１を起動する（ステップＳ１０１）。このシグナルの原因の一例として、制御ノード１上の他のプロセスが代理プロセス１１０に送信した（呼び出した）ｋｉｌｌシステムコールや、通信相手がクローズしたソケットに対して代理プロセス１１０が書込みを行ったことを契機として発生する、制御ノード用ＯＳ１００によるＳＩＧＰＩＰＥシグナルの送信などがある。代理プロセス１１０のシグナルハンドラ１１０１は、コンテキスト管理手段１３０に対してシグナルハンドラの起動を指示する。シグナルハンドラ起動の指示によって、コンテキスト管理手段１３０の計算プロセスシグナルハンドラ起動手段１３０１が計算ノード用管理プロセス１２０に対して、シグナルハンドラ起動の指示を行った代理プロセス１１０に対応している計算コア２４の停止を指示する（ステップＳ１０２）。計算ノード用管理プロセス１２０が計算コア２４を停止させた後、計算プロセスシグナルハンドラ起動手段１３０１が計算プロセスのコンテキストを計算コア２４から読み取り、コンテキスト一時記憶手段１３０２に保存する（ステップＳ１０３）。計算プロセスシグナルハンドラ起動手段１３０１は、計算プロセスのコンテキストを退避した後、シグナルハンドラを起動するコンテキストを計算コア２４上に作成する（ステップＳ１０４）。以上の処理の後、計算プロセスシグナルハンドラ起動手段１３０１は、計算コア２４の動作再開を指示する（ステップＳ１０５）。
【００５４】
ステップＳ１０３の動作の一例を詳細に説明する。計算プロセスシグナルハンドラ起動手段１３０１は、計算ノード用管理プロセス１２０に対して、自身の代理プロセス１１０に対応する計算コア番号を要求し、得られた計算コア番号の計算コア２４のコンテキストを読み取る。例えば、制御ノード用ＯＳ１００とノード間通信手段３がｍｍａｐなどによって、対応する計算プロセスが動作中の計算コア２４のメモリマップ機能を提供する場合は、計算プロセスシグナルハンドラ起動手段１３０１は、マップされた領域から値をロードすることで、計算コア２４のコンテキストを得る。計算コア２４のタイムシェアリング機能のサポートなどのために計算ノード用管理プロセス１２０が計算コア２４のコンテキストを管理している場合は、計算プロセスシグナルハンドラ起動手段１３０１は、計算ノード用管理プロセス１２０に対してコンテキストを要求し、取得してもよい。計算プロセスのコンテキストを取得した後、計算プロセスシグナルハンドラ起動手段１３０１は、コンテキスト一時記憶手段１３０２に対して、最も呼び出しの入れ子が深い回のものとして計算プロセスのコンテキストを保存する。例えばコンテキスト一時記憶手段１３０２がスタックであれば、計算プロセスシグナルハンドラ起動手段１３０１は、スタックに対するＰＵＳＨ操作を行う。
【００５５】
ステップＳ１０４の動作の一例を詳細に説明する。計算プロセスシグナルハンドラ起動手段１３０１は、シグナルハンドラ記憶手段１４０によってシグナル番号から対応するシグナルハンドラのアドレスを取得する。例えばシグナルハンドラ記憶手段１４０が図５のような内容であり、シグナル番号１のシグナルを受信した場合、シグナルハンドラのアドレスとして０ｘ７ｆｆｆ００００ｃ０００８０００を得る。シグナルハンドラのアドレスを取得した後、計算プロセスシグナルハンドラ起動手段１３０１は、シグナルハンドラを起動するコンテキストを作成する。具体的には、計算プロセスシグナルハンドラ起動手段１３０１は、以下のような内容を有するコンテキストを作成する。
・プログラムカウンタの値としてシグナルハンドラのアドレス（前述の例の場合０ｘ７ｆｆｆ００００ｃ０００８０００）を有する。
・その他のレジスタの値として、引数としてシグナルの仕様で定められた値を渡して関数を呼び出した状態に相当する値を有する。
・戻りアドレスに相当するレジスタに、トランポリンコードのアドレスを有する。ここで、トランポリンコードとは、シグナルハンドラを終了しコンテキストを復元するよう要求するための命令列であり、一例としてｓｉｇｒｅｔｕｒｎシステムコールを発行するコードがある。
【００５６】
例えば、本実施形態によってＰＯＳＩＸのシグナルを実現する場合、シグナルハンドラの第１引数としてシグナル番号を渡すため、計算ノード２４のアーキテクチャにおけるＡＢＩ（Ａｐｌｉｃａｔｉｏｎ  Ｂｉｎａｒｙ  Ｉｎｔｅｒｆａｃｅ）によって規定された関数呼び出しの第１引数に対応するレジスタにシグナル番号（前述の例の場合は１）をセットする。
【００５７】
コンテキストの作成でセットする対象は、汎用レジスタとプログラムカウンタのみではなく、計算プロセスのメモリの内容を含んでもよい。ＡＢＩによってシグナルハンドラの引数や戻りアドレスの一部または全部を計算プロセスのスタックに格納するよう規定されている場合は、計算プロセスのスタックに対して引数の内容を書き込む。トランポリンコードは計算ノード２のメモリ空間の一部であれば、不揮発メモリ上のデータとして用意されていてもよい。またトランポリンコードは、計算ノード２の起動時に計算ノード２のメモリの特定の位置に制御ノードから書き込んでもよい。あるいはトランポリンコードは、計算プロセスシグナルハンドラ起動手段１３０１が動的に計算プロセスのスタック上に書き込んでもよい。
【００５８】
ステップＳ１０５の詳細を説明する。計算プロセスシグナルハンドラ起動手段１３０１は、ステップＳ１０４で作成したコンテキストを計算コア２４にセットしてから、計算コア２４の実行再開を指示する。計算コア２４のタイムシェアリング機能のサポートなどのために、計算ノード用管理プロセス１２０が計算コア２４のコンテキストを管理している場合は、計算プロセスシグナルハンドラ起動手段１３０１は、計算ノード用管理プロセス１２０に対してステップＳ１０４で作成したコンテキストを渡し、渡したコンテキストで計算プロセスを再開するよう要求する。
【００５９】
＜シグナルハンドラからの復帰＞
図１０は本実施形態による計算プロセスのシグナルハンドラの終了と復帰の動作の一例を示すフローチャートである。図１１はシグナルハンドラからの復帰時の計算プロセスと代理プロセスの動作時のメモリ空間上の実行位置の変化を模式的に示す説明図である。以下、図１０および図１１を参照して、本実施形態によるシグナルハンドラからの復帰の動作を説明する。
【００６０】
計算プロセスのシグナルハンドラが計算コア２４で終了すると、トランポリンコードに戻り、計算プロセスのコンテキストを復帰するよう計算コア２４から制御ノード１に要求が出される。この要求を受けて制御ノード１の代理プロセス１１０の復帰ハンドラ１１０２が起動する。復帰ハンドラ１１０２は、コンテキスト管理手段１３０の計算プロセス復帰手段１３０３にコンテキストの復帰を指示する（ステップＳ２０１）。また、計算コア２４は、実行を停止する（ステップＳ２０２）。例外発生時に停止すると同時に制御ノードに例外を送信する計算コアとシステムコール例外によってステップＳ２０１とステップＳ２０２とを同時に行ってもよい。このような機能を持たない計算コアの場合、トランポリンコード上に無限ループなどによって実行を停止させ、ステップＳ２０１によって起動された計算プロセス復帰手段が計算プロセスの実行を停止させてもよい。
【００６１】
計算プロセス復帰手段１３０３は、計算コア２４の停止の後、コンテキスト一時記憶手段１３０２から計算プロセスのコンテキストを取り出し、計算コア２４の計算プロセスに取り出したコンテキストを書き戻す（ステップＳ２０３）。計算コア２４の計算プロセスにコンテキストを書き戻した後、計算プロセス復帰手段１３０３は、計算プロセスの実行を再開するよう計算コア２４に指示する（ステップＳ２０４）。
【００６２】
ステップＳ２０３の詳細を説明する。計算プロセス復帰手段１３０３は、コンテキスト一時記憶手段１３０２から最も呼び出しの入れ子が深い回の計算プロセスのコンテキストを取り出す。取り出したコンテキストは、コンテキスト一時記憶手段１３０２から削除される。例えばコンテキスト一時記憶手段１３０２がスタックであれば、計算プロセス復帰手段１３０３は、スタックに対するＰＯＰ操作を行う。計算プロセス復帰手段１３０３は、計算ノード用管理プロセス１２０に対して、自身の代理プロセスに対応する計算コア番号を要求し、得られた計算コア番号の計算コア２４のコンテキストとして、コンテキスト一時記憶手段１３０２から取り出したコンテキストを書き込む。
【００６３】
計算コア２４のタイムシェアリング機能のサポートなどのために計算ノード用管理プロセス１２０が計算コア２４のコンテキストを管理している場合は、計算プロセス復帰手段１３０３は、ステップＳ２０３において計算ノード用管理プロセス１２０に対して計算プロセスにセットするコンテキストを渡し、ステップＳ２０４において計算ノード用管理プロセス１２０に対して計算プロセスを再開するよう要求する。
【００６４】
［効果の説明］
このように本実施の形態によれば、制御ノードと計算ノードとを有する情報処理装置において、シグナルが発生した際の制御ノードの負荷を軽減することができる。その理由は、発生したシグナルに係るシグナルハンドラを制御ノードでなく計算ノードで実行するためである。
【００６５】
また、制御ノード用ＯＳ１００が提供するシグナル処理の機能を利用することで、ＯＳの移植やＯＳによるシグナル配送機構全体を独自に開発することなく、計算プログラムに対してシグナル処理を提供することができる。これにより、シグナル処理を使用するプログラム資産の継承と開発コストの低減が可能になる。
【００６６】
[第２の実施形態]
本発明の第２の実施形態について図１２を参照して説明する。図１２は本発明の第２の実施形態を示すブロック図である。第１の実施形態と同様の手段については図３と同一の符号を付し、説明を省略する。
【００６７】
計算コア例外シグナル変換手段１５０は、計算コア２４で発生した例外を、対応するシグナル番号に変換し、計算コア２４で実行中の計算プロセスに対応する代理プロセス１１０にシグナルを送信する。例えば、ＰＯＳＩＸ標準のシグナル機能を提供する場合、アクセスを許可されていない領域に対するメモリアクセスにより発生した例外をＳＩＧＳＥＧＶシグナルに、不正な命令コードにより発生した例外をＳＩＧＩＬＬシグナルに、浮動小数点例外をＳＩＧＦＰＥシグナルに変換する。詳細については動作の説明で述べる。
【００６８】
第２の実施形態による動作の一例を説明する。
【００６９】
計算コア２４で例外が発生すると、計算ノード２から制御ノード１に通知され、計算コア例外シグナル変換手段１５０がこの例外の通知を受信する。なお、計算コア２４以外で発生したシグナルに関する取扱いは、第１の実施形態と同じである。
【００７０】
計算コア例外シグナル変換手段１５０は、プロセス対応表１２１から、例外を発生させた計算プロセスに対応する代理プロセスを取得する。例えば、例外の通知には例外が発生した計算コアの番号が含まれており、番号に対応する代理プロセスＩＤをプロセス対応表１２１から取得する。
【００７１】
また計算コア例外シグナル変換手段１５０は、計算コア２４の例外の原因を取得し、シグナル番号に変換する。例えば、計算コア２４の例外の原因を表すレジスタが存在する場合、計算コア例外シグナル変換手段１５０は、ノード間通信手段３を用いて計算コア２４の当該レジスタを読む。また、例外の原因を表すＩＲＱ（割込み要求）が個別に割り当てられていれば、計算コア例外シグナル変換手段１５０は、ＩＲＱから例外の種類を得ることができる。計算コア例外シグナル変換手段１５０は、例えば、例外の原因あるいは種類とシグナル番号との対応表（図示せず）を参照して、シグナル番号を取得する。
【００７２】
計算コア例外シグナル変換手段１５０は、例外を発生させた計算プロセスに対応する代理プロセス１１０の情報と例外の原因に対応するシグナル番号とを、制御ノード用ＯＳ１００に通知する。制御ノード用ＯＳ１００は、通知された代理プロセス１１０に対して、通知されたシグナル番号のシグナルを送信する。以降、代理プロセス１１０では、第１の実施形態で説明した処理と同様の処理が行われる。
【００７３】
本実施形態によれば、計算コア例外シグナル変換手段１５０によって例外の原因をシグナル番号に変換することができる。したがって、メモリアクセス違反や不正命令、浮動小数点例外など、計算コアの計算プロセスが原因となる例外に対して、計算プロセス上のシグナルハンドラによって処理を行うことができる。
【００７４】
[第３の実施形態]
図１３を参照すると、本発明の第３の実施形態に係る情報処理装置３０００は、メインプロセッサコア３１００とサブプロセッサコア３２００とを有する。
【００７５】
メインプロセッサコア３１００は、サブプロセッサコア３２００を制御する機能を有する。またメインプロセッサコア３１００は、主な機能部として、シグナルハンドラ起動部３１１０を有する。シグナルハンドラ起動部３１１０は、情報処理装置３０００でシグナルが発生したとき、そのシグナルに係るシグナルハンドラをメインプロセッサコア３１００からサブプロセッサコア３２００に送信し、当該シグナルハンドラの実行を指示する機能を有する。
【００７６】
サブプロセッサコア３２００は、メインプロセッサコア３１００により制御される。サブプロセッサコア３２００は、主な機能部として、計算処理部３２１０を有する。計算処理部３２１０は、情報処理装置３０００でシグナルが発生したとき、そのシグナルに係るシグナルハンドラをメインプロセッサコア３１００から受信し、当該シグナルハンドラの実行が指示されると、当該シグナルハンドラを実行する機能を有する。
【００７７】
このように構成された本実施形態に係る情報処理装置３０００は、以下のように機能する。すなわち、情報処理装置３０００でシグナルが発生すると、メインプロセッサコア３１００のシグナルハンドラ起動部３１１０は、上記シグナルに係るシグナルハンドラをサブプロセッサコア３２００に送信し、上記シグナルハンドラの実行を指示する。
【００７８】
サブプロセッサコア３２００の計算処理部３２１０は、シグナルハンドラをメインプロセッサコア３１００から受信し、シグナルハンドラの実行が指示されると、シグナルハンドラを実行する。
【００７９】
このように本実施形態によれば、情報処理装置で発生したシグナルに係るシグナルハンドラをメインプロセッサコア３１００でなくサブプロセッサコア３２００で実行するため、シグナルが発生した際のメインプロセッサコア３１００の負荷を軽減することができる。
【産業上の利用可能性】
【００８０】
本発明は、並列計算機、ＨＰＣ向け並列計算機、汎用の制御コアとアクセラレータで構成するＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）、汎用コア（ＡＲＭ、ＭＩＰＳなど）による制御ノードとアクセラレータによる計算ノードを１つのチップに実装し、ノード間通信手段としてチップ内バスを使用する組み込み計算機向けの構成などに利用できる。
【００８１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
メインプロセッサコアと前記メインプロセッサコアにより制御されるサブプロセッサコアとを有し、
前記メインプロセッサコアは、シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示し、
前記サブプロセッサコアは、前記シグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する
情報処理装置。
［付記２］
コンテキスト記憶手段を有し、
前記メインプロセッサコアは、前記シグナルハンドラを前記サブプロセッサコアに送信する前に、前記サブプロセッサコアで実行中のプロセスを停止させ、前記プロセスのコンテキストを前記コンテキスト記憶手段に記憶する
付記１に記載の情報処理装置。
［付記３］
前記サブプロセッサコアは、前記シグナルハンドラの実行終了時に前記メインプロセッサコアに実行終了通知を送信し、
前記メインプロセッサコアは、前記実行終了通知を受信すると、前記コンテキスト記憶手段に記憶された前記プロセスのコンテキストを前記サブプロセッサコアに送信し、前記プロセスの実行を指示し、
前記サブプロセッサコアは、前記プロセスのコンテキストを前記メインプロセッサコアから受信し、前記プロセスの実行が指示されると、前記プロセスを実行する
付記２に記載の情報処理装置。
［付記４］
前記シグナルの番号と前記シグナルハンドラとの対応関係を記憶するシグナルハンドラ記憶手段を有し、
前記メインプロセッサコアは、前記発生したシグナルの番号と前記シグナルハンドラ記憶手段の前記対応関係とに基づいて、前記発生したシグナルに係る前記シグナルハンドラを決定する
付記１乃至３の何れかに記載の情報処理装置。
［付記５］
前記シグナルは、前記メインプロセッサコアで動作する基本ソフトウェアによって発生されるシグナルである
付記１乃至４の何れかに記載の情報処理装置。
［付記６］
前記シグナルは、前記サブプロセッサコアで発生する例外によるシグナルである
付記１乃至４の何れかに記載の情報処理装置。
［付記７］
前記サブプロセッサコアは、前記発生した例外を前記メインプロセッサコアに通知し、
前記メインプロセッサコアは、前記通知された例外の原因を取得し、前記原因に基づいて前記発生した例外によるシグナルの番号を決定する
付記６に記載の情報処理装置。
［付記８］
メインプロセッサコアと前記メインプロセッサコアにより制御されるサブプロセッサコアとを有する情報処理装置が実行するシグナル処理方法であって、
前記メインプロセッサコアは、シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示し、
前記サブプロセッサコアは、前記シグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する
シグナル処理方法。
［付記９］
前記情報処理装置は、コンテキスト記憶手段を有し、
前記メインプロセッサコアは、前記シグナルハンドラを前記サブプロセッサコアに送信する前に、前記サブプロセッサコアで実行中のプロセスを停止させ、前記プロセスのコンテキストを前記コンテキスト記憶手段に記憶する
付記８に記載のシグナル処理方法。
［付記１０］
前記サブプロセッサコアは、前記シグナルハンドラの実行終了時に前記メインプロセッサコアに実行終了通知を送信し、
前記メインプロセッサコアは、前記実行終了通知を受信すると、前記コンテキスト記憶手段に記憶された前記プロセスのコンテキストを前記サブプロセッサコアに送信し、前記プロセスの実行を指示し、
前記サブプロセッサコアは、前記プロセスのコンテキストを前記メインプロセッサコアから受信し、前記プロセスの実行が指示されると、前記プロセスを実行する
付記９に記載のシグナル処理方法。
［付記１１］
前記情報処理装置は、前記シグナルの番号と前記シグナルハンドラとの対応関係を記憶するシグナルハンドラ記憶手段を有し、
前記メインプロセッサコアは、前記発生したシグナルの番号と前記シグナルハンドラ記憶手段の前記対応関係とに基づいて、前記発生したシグナルに係る前記シグナルハンドラを決定する
付記８乃至１０の何れかに記載のシグナル処理方法。
［付記１２］
前記シグナルは、前記メインプロセッサコアで動作する基本ソフトウェアによって発生されるシグナルである
付記８乃至１１の何れかに記載のシグナル処理方法。
［付記１３］
前記シグナルは、前記サブプロセッサコアで発生する例外によるシグナルである
付記８乃至１１の何れかに記載のシグナル処理方法。
［付記１４］
前記サブプロセッサコアは、前記発生した例外を前記メインプロセッサコアに通知し、
前記メインプロセッサコアは、前記通知された例外の原因を取得し、前記原因に基づいて前記発生した例外によるシグナルの番号を決定する
付記１３に記載のシグナル処理方法。
［付記１５］
サブプロセッサコアを制御する機能を有するメインプロセッサコアであって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示するシグナルハンドラ起動手段を有する
メインプロセッサコア。
［付記１６］
コンテキスト記憶手段を有し、
前記シグナルハンドラ起動手段は、前記シグナルハンドラを前記サブプロセッサコアに送信する前に、前記サブプロセッサコアで実行中のプロセスを停止させ、前記プロセスのコンテキストを前記コンテキスト記憶手段に記憶する
付記１５に記載のメインプロセッサコア。
［付記１７］
前記シグナルハンドラの実行終了時に前記サブプロセッサコアから送信される実行終了通知を受信すると、前記コンテキスト記憶手段に記憶された前記プロセスのコンテキストを前記サブプロセッサコアに送信し、前記プロセスの実行を指示するプロセス復帰手段を有する
付記１６に記載のメインプロセッサコア。
［付記１８］
前記シグナルの番号と前記シグナルハンドラとの対応関係を記憶するシグナルハンドラ記憶手段を有し、
前記シグナルハンドラ起動手段は、前記発生したシグナルの番号と前記シグナルハンドラ記憶手段の前記対応関係とに基づいて、前記発生したシグナルに係る前記シグナルハンドラを決定する
付記１５乃至１７の何れかに記載のメインプロセッサコア。
［付記１９］
前記シグナルは、前記メインプロセッサコアで動作する基本ソフトウェアによって発生されるシグナルである
付記１５乃至１８の何れかに記載のメインプロセッサコア。
［付記２０］
前記シグナルは、前記サブプロセッサコアで発生する例外によるシグナルである
付記１５乃至１８の何れかに記載のメインプロセッサコア。
［付記２１］
前記サブプロセッサコアから前記発生した例外の通知を受信し、前記例外の原因を取得し、前記原因に基づいて前記発生した例外によるシグナルの番号を決定する例外シグナル変換手段を有する
付記２０に記載のメインプロセッサコア。
［付記２２］
メインプロセッサコアにより制御されるサブプロセッサコアであって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する計算処理部を有する
サブプロセッサ。
［付記２３］
コンテキスト記憶手段を有し、
前記計算処理部は、前記シグナルハンドラを前記メインプロセッサコアから受信する前に前記メインプロセッサコアから受信した指示に従ってサブプロセッサコアで実行中のプロセスを停止させ、前記プロセスのコンテキストを前記コンテキスト記憶手段に記憶する
付記２２に記載のサブプロセッサ。
［付記２４］
前記計算処理部は、前記シグナルハンドラの実行終了時に前記メインプロセッサコアに実行終了通知を送信し、前記コンテキスト記憶手段に記憶された前記プロセスのコンテキストを前記サブプロセッサコアから受信し、前記プロセスの実行が指示されると、前記プロセスを実行する
付記２３に記載のサブプロセッサ。
［付記２５］
前記メインプロセッサコアは、前記シグナルの番号と前記シグナルハンドラとの対応関係を記憶するシグナルハンドラ記憶手段を有し、前記発生したシグナルの番号と前記シグナルハンドラ記憶手段の前記対応関係とに基づいて、前記発生したシグナルに係る前記シグナルハンドラを決定する
付記２２乃至２４の何れかに記載のサブプロセッサ。
［付記２６］
前記シグナルは、前記メインプロセッサコアで動作する基本ソフトウェアによって発生されるシグナルである
付記２２乃至２５の何れかに記載のサブプロセッサ。
［付記２７］
前記シグナルは、前記サブプロセッサコアで発生する例外によるシグナルである
付記２２乃至２５の何れかに記載のサブプロセッサ。
［付記２８］
前記発生した例外を前記メインプロセッサコアに通知する例外通知手段を有し、
前記メインプロセッサコアは、前記通知された例外の原因を取得し、前記原因に基づいて前記発生した例外によるシグナルの番号を決定する
付記２７に記載のサブプロセッサ。
［付記２９］
サブプロセッサコアを制御する機能を有するメインプロセッサコアが実行するシグナル処理方法であって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示する
シグナル処理方法。
［付記３０］
メインプロセッサコアにより制御されるサブプロセッサコアが実行するシグナル処理方法であって、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する
シグナル処理方法。
［付記３１］
サブプロセッサコアを制御する機能を有するメインプロセッサコアを、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記サブプロセッサコアに送信し、前記シグナルハンドラの実行を指示するシグナルハンドラ起動手段
として機能させるためのプログラム。
［付記３２］
メインプロセッサコアにより制御されるサブプロセッサコアを、
シグナルが発生したとき、前記シグナルに係るシグナルハンドラを前記メインプロセッサコアから受信し、前記シグナルハンドラの実行が指示されると、前記シグナルハンドラを実行する計算処理部
として機能させるためのプログラム。
【符号の説明】
【００８２】
１…制御ノード
２…計算ノード
３…ノード間通信手段
１１、２１…メモリ
１２、２２…ＣＰＵ
１３、２３…データ転送手段
１４、２４…プロセッサコア
１５、２５…ＤＭＡエンジン
１６、２６…対ＣＰＵ通信機能
１００…制御ノード用ＯＳ
１１０…代理プロセス
１２０…計算ノード用管理プロセス
１２１…プロセス対応表
１３０…コンテキスト管理手段
１４０…シグナルハンドラ記憶手段
１５０…計算コア例外シグナル変換手段
２１０…プロセスイメージ
２１１…計算シグナルハンドラ
２４０…汎用レジスタ群
２４１…制御レジスタ群
２４２…例外検出手段
２４３…レジスタ群アクセス手段
２４４…例外通知手段
１１０１…シグナルハンドラ
１１０２…復帰ハンドラ
１２１１…代理プロセスＩＤ
１２１２…計算コア番号
１３０１…計算プロセスシグナルハンドラ起動手段
１３０２…コンテキスト一時記憶手段
１３０３…計算プロセス復帰手段
１４０１…シグナル番号
１４０２…シグナルハンドラ
３０００…情報処理装置
３１００…メインプロセッサコア
３１１０…シグナルハンドラ起動部
３２００…サブプロセッサコア
３２１０…計算処理部
【図１】
2016091076.tif 000003
【図２】
2016091076.tif 000004
【図３】
2016091076.tif 000005
【図４】
2016091076.tif 000006
【図５】
2016091076.tif 000007
【図６】
2016091076.tif 000008
【図７】
2016091076.tif 000009
【図８】
2016091076.tif 000010
【図９】
2016091076.tif 000011
【図１０】
2016091076.tif 000012
【図１１】
2016091076.tif 000013
【図１２】
2016091076.tif 000014
【図１３】
2016091076.tif 000015