(57)【要約】【課題】  本発明の課題は、プロセッサ間のデータ転送において、複数のプロセッサ間で共有される送受信データを一時的に格納する外部メモリへの負担を減らすと共に、データ通信速度を向上させるプロセッサ間通信装置を提供することを目的とする。【解決手段】  上記課題は、複数のプロセッサを備えた並列処理を実行可能とする情報処理装置であって、前記複数のプロセッサに対応させて、各プロセッサからの送信データを格納する複数の送信バッファと、各プロセッサへの受信データを格納する複数の受信バッファと、前記データ転送を制御する通信コントローラとを有し、前記通信コントローラは、送信元プロセッサからの前記送信データを対応する前記送信バッファへの格納した後、送信ステータスを送信ステータスレジスタへ書き込み、前記受信データを受信すべき送信先プロセッサへ転送した後、受信ステータスを受信ステータスレジスタへ書き込むことによって達成される。【選択図】  図１
2006201946.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ間でデータ転送を行うプロセッサ間通信装置であって、
前記複数のプロセッサに対応させて、各プロセッサからの送信データを一時的に格納する複数の送信バッファと、
前記データ転送を制御する通信コントローラとを有し、
前記通信コントローラは、送信元プロセッサからの前記送信データを対応する前記送信バッファへの格納に関する処理をした後、該送信データに係る送信ステータスを、該送信元プロセッサとの間に設けられた送信ステータスレジスタへ書き込むことを特徴とするプロセッサ間通信装置。
【請求項２】
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって送信データを書き込み可能な送信データレジスタから該送信データを読み込んで該送信元プロセッサに対応する前記送信バッファへ格納することを特徴とする請求項１記載のプロセッサ間通信装置。
【請求項３】
更に、前記複数のプロセッサに対応させて、各プロセッサへの受信データを一時的に格納する複数の受信バッファと、
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって送信先プロセッサを識別する送信先プロセッサ識別情報を書き込み可能な送信先プロセッサレジスタから該送信先プロセッサ識別情報を読み込み、該送信先プロセッサ識別情報に対応する前記受信バッファへ前記送信データを前記受信データとして格納することを特徴とする請求項１又は２項記載のプロセッサ間通信装置。
【請求項４】
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって送信データサイズを書き込み可能な送信データサイズレジスタから該送信データサイズを読み込むことを特徴とする請求項１乃至３のいずれか一項記載のプロセッサ間通信装置。
【請求項５】
複数のプロセッサ間でデータ転送を行うプロセッサ間通信装置であって、
前記複数のプロセッサに対応させて、各プロセッサへの受信データを一時的に格納する複数の受信バッファと、
前記データ転送を制御する通信コントローラとを有し、
前記通信コントローラは、前記受信バッファに格納されている前記受信データを受信すべき送信先プロセッサへ転送する処理をした後、該受信データに係る受信ステータスを、該送信先プロセッサとの間に設けられた所定の受信ステータスレジスタへ書き込むことを特徴とするプロセッサ間通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置におけるデータ通信に関し、特に、プロセッサ間のデータ転送において、複数のプロセッサ間で共有される送受信データを一時的に格納する外部メモリへの負担を減らすと共に、データ通信速度を向上させるプロセッサ間通信装置に関する。
【背景技術】
【０００２】
近年、情報処理装置におけるデータ通信の高速化に伴い、シングルプロセッサにおける性能の向上が困難となりつつあるため、マルチプロセッサを採用するようになってきた。マルチプロセッサを採用すれば、プロセッサ間のデータ通信が必要となる。このデータ通信を高速に実現するための開発が成されてきた。
【０００３】
例えば、プロセッサ間に一時的に受信したメッセージを格納するためのバッファを備えた並列計算機システムにて、プロセッサ間通信を行う際に、他のプロセッサからのメッセージ受信要求の受け取りが実際のメッセージのヘッダ到着より早い場合に、実際のメッセージの到着時点でメッセージ受信要求に示されるユーザー使用領域のメモリアドレスへ直接メッセージを転送することによって、バッファのからユーザー使用領域への転送によるオーバーヘッドを削減するメッセージ受信方式が提案されている（例えば、特許文献１）。
【０００４】
また、メッセージ通信のバッファのアドレス計算をハードウェアで行ない、バッファーオーバーラン制御やポートＩＤの管理も行うようにしたメッセージ送受信装置が提案されている（例えば、特許文献２）。
【特許文献１】特開平６−３２４９９８号公報
【特許文献２】特開平７−２１１０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術におけるプロセッサ間のデータ転送では、バッファを他プロセッサからアクセス可能な共有メモリとして備え、データの送信の際及びデータの受信の際のアクセスには、時間を要し、そのアクセス時間が通信時間に影響を与えていることについて改善した技術ではない。
【０００６】
上記従来技術におけるプロセッサ間のデータ転送では、データ送信時にはバッファの空き状態を確認する等の必要があり、また、データ受信時にはデータが受信しているか否かを確認する等の必要がある。従って、実際のデータの送受信のアクセスをバッファに対して実行する前に、該バッファへ予め確認のためのアクセスをする手間を要している。また、このような確認等のアクセスによって、実際にデータを送信及び受信するまでにレイテンシ（遅延時間）が生じて、データ転送の高速化を妨げている。
【０００７】
また、上記特許文献１では、データ受信時におけるバッファへの他プロセッサからの書き込み及び自プロセッサによる読み出しに関するこのバッファへの負担を軽減しているが、自プロセッサから他プロセッサへのデータを送信する際のバッファへの負担を軽減することができない。
【０００８】
そこで、本発明の課題は、プロセッサ間のデータ転送において、複数のプロセッサ間で共有される送受信データを一時的に格納する外部メモリへの負担を減らすと共に、データ通信速度を向上させるプロセッサ間通信装置を提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明は、複数のプロセッサ間でデータ転送を行うプロセッサ間通信装置であって、前記複数のプロセッサに対応させて、各プロセッサからの送信データを一時的に格納する複数の送信バッファと、前記データ転送を制御する通信コントローラとを有し、前記通信コントローラは、送信元プロセッサからの前記送信データを対応する前記送信バッファへの格納に関する処理をした後、該送信データに係る送信ステータスを、該送信元プロセッサとの間に設けられた送信ステータスレジスタへ書き込むように構成される。
【００１０】
また、上記課題を解決するために、本発明は、複数のプロセッサ間でデータ転送を行うプロセッサ間通信装置であって、前記複数のプロセッサに対応させて、各プロセッサへの受信データを一時的に格納する複数の受信バッファと、前記データ転送を制御する通信コントローラとを有し、前記通信コントローラは、前記受信バッファに格納されている前記受信データを受信すべき送信先プロセッサへ転送する処理をした後、該受信データに係る受信ステータスを、該送信先プロセッサとの間に設けられた所定の受信ステータスレジスタへ書き込むように構成される。
【００１１】
上記課題を解決するための手段として、本発明は、上記プロセッサ間データ通信装置で実行される処理に関するプロセッサ間データ通信方法とすることもできる。
【発明の効果】
【００１２】
複数のプロセッサ間で共有される送受信データを一時的に格納する外部メモリへの負担を減らすと共に、帯域小のデータ通信を行うことによりデータ転送時のレイテンシを短くすることができ、データ通信速度を向上させることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１４】
本発明に係るプロセッサ間通信は、帯域が小さい程、レイテンシを小さくできることに着目し、帯域小のデータ転送を行うと共に、更なる改良によってレイテンシをより小さくし、データ転送の高速化を図るものである。
［第一実施例］
図１は、本発明の第一実施例に係る、情報処理装置におけるプロセッサ間通信に係る回路構成を示す図である。本発明に係るプロセッサ間通信に関する主な回路構成を示し、その他の回路構成について省略される。
【００１５】
図１において、情報処理装置１００１は、並列処理を実行可能なコンピュータ装置であって、複数のプロセッサ１００（プロセッサＮｏ．０）、１０１（プロセッサＮｏ．１）、及び１０２（プロセッサＮｏ．２）と、外部メモリ１１と、複数のプロセッサ間通信用特殊レジスタ２００（以下、単に特殊レジスタ２００とする）と、プロセッサ間通信装置３００とを有する。ここで、説明の便宜のため、複数のプロセッサ１００、１０１、及び１０３を示しているが、２つ以上のプロセッサを有するいずれの構成にも本願が適用されることは言うまでもない。
【００１６】
本発明に係る情報処理装置１００１では、複数のプロセッサ１００、１０１、及び１０３が、複数の特殊レジスタ２００を介して、プロセッサ間通信装置３００によって、帯域小のデータ（例えば、命令コード等）をプロセッサ間で送受信する（データ転送Ａ側）。また、情報処理装置１００１では、バス３０を介して、複数のプロセッサ１００、１０１、及び１０３と、外部メモリ１１とが接続され、外部メモリ１１を介してプロセッサ間通信によって帯域大のデータ（例えば、画像データ等）を送受信する（データ転送Ｂ側）。
【００１７】
プロセッサ間通信装置３００は、プロセッサ間のデータ通信を制御する通信コントローラ２５０と、プロセッサ１００からの送信データを一時的に格納するプロセッサＮｏ．０用送信バッファ３０１と、プロセッサ１００への受信データを一時的に格納するプロセッサＮｏ．０用受信バッファ３０２と、プロセッサ１０１からの送信データを一時的に格納するプロセッサＮｏ．１用送信バッファ３１１と、プロセッサ１０１への受信データを一時的に格納するプロセッサＮｏ．１用受信バッファ３１２と、プロセッサ１０２からの送信データを一時的に格納するプロセッサＮｏ．２用送信バッファ３２１と、プロセッサ１０２への受信データを一時的に格納するプロセッサＮｏ．２用受信バッファ３２２とを有する。これら送信バッファ３０１、３１１、３２１、及び受信バッファ３０２、３１２、３２２は、ＦＩＦＯ（Fist-In First-Out）メモリで構成する。
【００１８】
複数の特殊レジスタ２００として、プロセッサ１００は、プロセッサ１００が送信先のプロセッサ番号を設定するためのレジスタである送信先プロセッサ２０１と、プロセッサ１００が送信データサイズを設定するためのレジスタである送信データサイズ２０２と、プロセッサ１００が送信データを設定するためのレジスタである送信データ２０３と、通信コントローラが送信ステータス情報を設定するためのレジスタである送信ステータス２０４と、通信コントローラが送信元のプロセッサ番号を設定するためのレジスタである送信元プロセッサ２０５と、通信コントローラが受信データサイズを設定するためのレジスタである受信データサイズ２０６と、通信コントローラが受信データを設定するためのレジスタである受信データ２０７と、通信コントローラが受信ステータス情報を設定するためのレジスタである受信ステータス２０８とを有する。
【００１９】
同様に、プロセッサ１０１は、送信先プロセッサ２１１と、送信データサイズ２１２と、送信データ２１３と、送信ステータス２１４と、送信元プロセッサ２１５と、受信データサイズ２１６と、受信データ２１７と、受信ステータス２１８とを有し、プロセッサ１０２は、送信先プロセッサ２２１と、送信データサイズ２２２と、送信データ２２３と、送信ステータス２２４と、送信元プロセッサ２２５と、受信データサイズ２２６と、受信データ２２７と、受信ステータス２２８とを有する。
【００２０】
また、各プロセッサ１００、１０１、及び１０２には、プロセッサ間データ転送をするためのメッセージ送信プログラム（図２のステップＳ１０１からＳ１０８）とメッセージ受信プログラム（図２のステップＳ１２１からＳ１２８）とを有し、このような本発明の第一実施例に係る回路構成においてデータ転送Ａ側で、プロセッサ間通信装置３００によってプロセッサ間のデータ転送を実行する。
【００２１】
データ転送Ａ側でのプロセッサ間通信について図２を参照しつつ説明する。図２は、本発明の第一実施例に係るプロセッサ間通信のシーケンスフローを示す図である。図２において、説明の便宜のため、プロセッサ１００をデータ送信側とし、プロセッサ１０１をデータ受信側として説明するが、どのプロセッサ１００、１０１、及び１０２も送信側及び受信側として機能することができる。また、図２中、点線で示される矢印は、特殊レジスタ２００の所定のレジスタに設定された情報が参照される先を示す。
【００２２】
図２において、プロセッサ１００のメッセージ送信プログラムは、送信先プロセッサ番号を特殊レジスタ２００の送信先プロセッサ２０１に書き込む（ステップＳ１０１）。この場合、例えば、プロセッサ１０１のプロセッサ番号「１」が特殊レジスタ２００の送信先プロセッサ２０１に書き込まれる。
【００２３】
メッセージ送信プログラムは、送信データサイズ（送信すべきデータの総データサイズ）を特殊レジスタ２００の送信データサイズ２０２に書き込んで（ステップＳ１０２）、送信データサイズをカウント（count）に設定する（ステップＳ１０３）。このカウントには、例えば、送信すべきデータブロック数を送信データサイズとして設定するようにする。「１」が設定されれば、送信すべきデータブロックは１データブロックであることを示す。「２」以上であれば、送信データが分割されることを示す。
【００２４】
メッセージ送信プログラムは、送信データを特殊レジスタ２００の送信データ２０３に書き込む（ステップＳ１０４）。この場合、特殊レジスタ２００の送信データ２０３のサイズに応じて、必要ならば送信データが分割される。
【００２５】
メッセージ送信プログラムは、特殊レジスタ２００の送信ステータス２０４から通信コントローラ２５０によって書き込まれた送信ステータス情報を読み込み（ステップＳ１０５）、ステップＳ１０４で書き込んだ送信データに送信エラーが発生しているか否かを判断する（ステップＳ１０６）。メッセージ送信プログラムが送信エラーが発生していると判断した場合、メッセージ送信プログラムは、ステップＳ１０４に戻って、前回ステップＳ１０４で書き込んだ送信データと同一の送信データを再度特殊レジスタ２００の送信データ２０３に書き込む。
【００２６】
一方、メッセージ送信プログラムが送信エラーが発生していないと判断した場合、メッセージ送信プログラムは、残り送信データサイズを示すカウント（count）から１を減算し（ステップＳ１０７）、残り送信データサイズのカウント（count）が「０」（ゼロ）であるか否かを判断する（ステップＳ１０８）。メッセージ送信プログラムがカウント（count）が「０」でないと判断すると、ステップＳ１０４へ戻り、上記同様の処理を実行する。そして、メッセージ送信プログラムがカウント（count）が「０」であると判断すると、メッセージ送信プログラムによる処理を終了する。
【００２７】
一方、プロセッサ間通信装置３００では、通信コントローラ２５０が、特殊レジスタ２００の送信先プロセッサ２０１から送信先プロセッサ番号を読み込んで、対象となる受信バッファを決定する（ステップＳ２０１）。この場合、通信コントローラ２５０が送信先プロセッサ番号として「１」を読み込むと、プロセッサＮｏ．１用受信バッファ３１２が対象の受信バッファとして決定される。
【００２８】
また、通信コントローラ２５０は、特殊レジスタ２００の送信データサイズ２０２から送信データの総データサイズ（例えば、データブロック総数）を読み込んで、特殊レジスタ２００の送信元プロセッサ２０５から送信元プロセッサ番号（ここでは、「１」）を読み込んで、夫々、プロセッサ１０１（プロセッサＮｏ．１）の特殊レジスタ２００の受信データサイズ２１６と、送信元プロセッサ２１５とに書き込む（ステップＳ２０２）。
【００２９】
そして、通信コントローラ２５０は、プロセッサ１００の特殊レジスタ２００の送信データ２０４から送信データを送信データサイズ分順次読み込んで、プロセッサＮｏ．０用送信バッファ３０１にその送信データを書き込んで蓄積する（ステップＳ２０３）。この場合、送信バッファ３０１がいっぱいならば、送信エラー情報を特殊レジスタ２００の送信ステータス２０４を出力して、プロセッサ間通信装置３００での処理を終了する。送信エラー情報は、フラグであって、例えば、送信データを正常にプロセッサＮｏ．０用送信バッファ３０１に書き込んだ場合、フラグがオフに設定され、エラーがある場合には、フラグがオンに設定される。
【００３０】
送信エラーが発生していない場合、通信コントローラ２５０は、プロセッサＮｏ．０用送信バッファ３０１から先頭の送信データを順次取り出して対象となるプロセッサＮｏ．１用受信バッファ３１２に書き込む（ステップＳ２０４）。
【００３１】
続けて、通信コントローラ２５０は、プロセッサＮｏ．１用受信バッファ３１２の先頭の受信データを順次取り出して、特殊レジスタ２００の受信データ２１７へ書き込む（ステップＳ２０５）。特殊レジスタ２００の受信データ２１７へ書き込みを送信データサイズ分繰り返す。ここで、受信バッファ３１２が空の場合には、ダミーの受信データを特殊レジスタ２００の受信データ２１７へ書き込み、受信エラー情報を受信ステータス２１８へ出力する。そして、プロセッサ間通信装置３００での処理を終了する。受信エラー情報は、フラグであって、例えば、受信データを特殊レジスタ２００の受信データ２１７へ正常に書き込んだ場合には、フラグがオフに設定され、エラーがある場合には、フラグがオンに設定される。
【００３２】
一方、プロセッサ１０１のメッセージ受信プログラムは、送信元プロセッサ２１５から送信元プロセッサ番号（ここでは、「０」（ゼロ））を読み込む（ステップＳ１２１）。
【００３３】
また、メッセージ受信プログラムは、受信データサイズ２１６から受信データサイズ（ここでは、受信データのデータブロック総数）を読み込み（ステップＳ１２２）、受信データサイズを示すカウント（count）に、ステップＳ１２３で読み込んだ受信データサイズを設定する（ステップＳ１２３）。
【００３４】
次に、メッセージ受信プログラムは、受信バッファ２１７から受信データを読み込んで処理する（ステップＳ１２４）。
【００３５】
そして、メッセージ受信プログラムは、特殊レジスタ２００の受信ステータス２１８から受信ステータス情報を読み込み（ステップＳ１２６）、受信エラーが発生しているか否かを判断する（ステップＳ１２６）。メッセージ受信プログラムが受信エラーが発生していると判断した場合、ステップＳ１２４へ戻り、上記同様の処理を繰り返す。
【００３６】
一方、メッセージ受信プログラムが受信エラーが発生していないと判断した場合、残り受信データサイズを示すカウント（count）から１を減算し（ステップＳ１２７）、カウント（count）が「０」（ゼロ）を示すか否かを判断する（ステップＳ１２８）。カウント（count）が「０」（ゼロ）でない場合、ステップＳ１２４へ戻り、上記同様の処理を繰り返す。一方、カウント（count）が「０」（ゼロ）の場合、メッセージ受信プログラムによる処理を終了する。
【００３７】
例えば、プロセッサ１００がデータを送信する場合に関して、上記より、メッセージ送信プログラムは、ステップＳ１０４において、送信データを特殊レジスタ２００の送信データ２０３に書き込んだ後で、ステップＳ１０５及びＳ１０６において、送信エラーが発生したか否かを判断する。ここで、通常考えられる送信バッファ３０１の空きを確認した後にデータを送信する場合と比べると、本発明に係るメッセージ送信プログラムは、早いタイミングでデータを送信することが可能となる。
【００３８】
また、通信コントローラ２５０は、プロセッサ１００がデータを送信する場合において、プロセッサＮｏ．０用送信バッファ３０１に空きが無ければ、送信バッファ３０１への実際の書き込みを行わないため、一時的に蓄積されている前の送信データを壊すことがない。更に、メッセージ送信プログラムは、データ送信後に、送信ステータスを確認しているため、早いタイミングでデータを送信すると共に、適切にデータが送信されたか否かをも確認することが可能となる。
【００３９】
従って、プロセッサ間でのデータ送信に関するレイテンシを短くすることができる。他プロセッサ１０１及び１０２がデータを送信する場合においても同様の効果を奏する。
【００４０】
プロセッサ１０１がデータを受信する場合に関して、上記より、メッセージ受信プログラムは、ステップＳ１２４において、受信データを特殊レジスタ２００の受信データ２１７から読み込んだ後で、ステップＳ１２５及びＳ１２６において、受信エラーが発生したか否かを判断する。ここで、通常考えられる受信バッファ３１２にデータが有るか否かを確認した後に受信データを受信する場合と比べると、本発明に係るメッセージ受信プログラムは、早いタイミングでデータを受信することが可能となる。
【００４１】
また、通信コントローラ２５０は、プロセッサ１０１がデータを受信する場合において、プロセッサＮｏ．１用受信バッファ３１２にデータが格納されていない場合、ダミーデータを特殊レジスタ２００の受信データ２１７に書き込むことによって、プロセッサ１０１は、投機的に受信データに対する処理を始めておくことが可能となる。更に、メッセージ受信プログラムは、データ受信後に、受信ステータスを確認しているため、早いタイミングでデータを受信すると共に、適切にデータを受信したか否かをも確認することが可能となる。
【００４２】
従って、プロセッサ間でのデータ受信に関するレイテンシを短くすることができる。他プロセッサ１００及び１０２がデータを受信する場合においても同様の効果を奏する。
【００４３】
次に、通常考えられるデータをプロセッサ間通信する場合と、本発明に係るプロセッサ間通信とを比較しつつ、本発明に係るプロセッサ間通信にいて図３で詳述する。図３は、本発明に係るプロセッサ間通信について説明するためのブロック図である。図３（Ｂ）では、対応する図２のステップ番号が参照のため示される。
【００４４】
先ず、図３（Ａ）に示す通常のデータ転送では、送信側プログラムによるデータの組み立て処理によって、所定のデータブロックが構成される。この場合、送信元のプロセッサを示す１つのデータブロックが生成され、また、１つのデータブロックで送信用のデータが完了するため、例えば、データブロックのヘッダ内に、付加データとして、分割がないことを示す情報が設定される。
【００４５】
そして、送信側プログラムによるデータ送信の処理によって、送信元のプロセッサを示す１つのデータブロックと、分割のないデータを示すデータブロックが送信先のプロセッサへと転送される。
【００４６】
受信側プログラムによるデータ受信の処理によって、送信元のプロセッサを示すデータブロックと、分割のないデータブロックとを受信し、データの分解の処理によって解析される。この場合、最初のデータブロックが送信元を示すデータブロックであることを判断し、次のデータブロックに対しては、付加データによって、受信すべきデータは、１データブロックであることが判る。このようにして、送信元のプロセッサを示すデータブロックと、分割のないデータブロックとの受信によってデータ転送が終了する。
【００４７】
一方、図３（Ｂ）に示す本発明のデータ転送では、送信側プログラムによるデータ送信の処理によって、付加データをデータブロック内に設定することなく、送信データをデータブロックとして転送する（ステップＳ１０４）。そして、通信コントローラ２５０によって、例えば、送信元プロセッサ番号が受信側の特殊レジスタ２００の送信元プロセッサ２１５に書き込まれる。
【００４８】
受信側プログラムによる送信元プロセッサ番号取得の処理によって、例えば、送信元プログラム番号を特殊レジスタ２００の送信元プロセッサ２１５から読み込む（ステップＳ１２１）と共に、データ受信の処理によって、データを示すデータブロックを読み込んで受信データに対する処理を行う（ステップＳ１２４）。
【００４９】
このように、本発明によれば、送信側プログラムでは、送信元に関する情報を示すデータブロックを付加するための処理を不要とすることができ、送信処理に関するレイテンシをその分短くすることができる。一方、送信元に関する情報（例えば、送信元プロセッサ番号）は、通信コントローラ２５０によって、例えば、特殊レジスタ２００の送信元プロセッサ２１５に書き込まれるため、受信側プログラムでは、受信したデータブロックを解析することなく、送信元プロセッサ２１５から読み出すだけで送信元プロセッサを知ることができる。従って、データブロック毎の解析をする必要がない分、受信処理に関するレイテンシを短くすることができる。
【００５０】
従って、本発明による送信及び受信に関するデータ転送では、図３（Ａ）に示されるデータ組み立ての処理及びデータ分解の処理を不要し、また、データ送信及びデータ受信の処理にて付加データに関する処理を不要とするため、送信時及び受信時の夫々においてレイテンシを短縮することが可能となる。
【００５１】
更に、通常考えられるデータを分割してプロセッサ間通信を行う場合と、本発明に係るプロセッサ間通信とを比較しつつ、データを分割した場合の本発明に係るプロセッサ間通信にいて図４で詳述する。図４は、データを分割した場合における本発明に係るプロセッサ間通信について説明するためのブロック図である。図４（Ｂ）では、対応する図２のステップ番号が参照のため示される。
【００５２】
先ず、図４（Ａ）に示す通常のデータを分割した場合のデータ転送では、送信側プログラムによるデータの組み立て処理によって、所定のデータブロックが構成される。この場合、送信すべきデータが分割されるため、送信データの総データサイズを示す１つのデータブロックと、送信元のプロセッサを示す１つのデータブロックと、そしてデータの終了を示す１つのデータブロックが生成され、また、分割されたデータ毎にデータブロックが生成される。これら分割されたデータのデータブロックのヘッダ内に、付加データとして、分割されたデータであることを示す情報が設定される。
【００５３】
そして、送信側プログラムによるデータ送信の処理によって、送信データの総データサイズを示す１つのデータブロックと、送信元のプロセッサを示す１つのデータブロックと、分割されたデータを示す複数のデータブロックと、データの終了を示す１つのデータブロックとが送信先のプロセッサへと転送される。
【００５４】
受信側プログラムによるデータ受信の処理によって、送信データの総データサイズを示す１つのデータブロックと、送信元のプロセッサを示す１つのデータブロックと、分割されたデータを示す複数のデータブロックと、データの終了を示す１つのデータブロックとを受信し、データの分解の処理によって解析される。この場合、最初のデータブロックが送信データの総データサイズを示すデータブロックであることを判断し、次のデータブロックが送信元を示すデータブロックであることを判断し、続く複数のデータブロックに対しては、付加データによって、分割されたデータであることを判断し、最後のデータブロックがデータの終了を示すデータブロックであることを判断して、全てのデータを受信したことが判る。このようにして、送信データの総データサイズを示す１つのデータブロックと、送信元のプロセッサを示す１つのデータブロックと、分割されたデータを示す複数のデータブロックと、データの終了を示す１つのデータブロックとの受信によってデータ転送が終了する。
【００５５】
一方、図４（Ｂ）に示す本発明のデータ転送では、送信側プログラムによるデータサイズ設定の処理によって、例えば、送信すべきデータの総データサイズが特殊レジスタ２００を介してプロセッサ間通信装置３００に通知され（ステップＳ１０２及びＳ２０２）、送信側プログラムによるデータ送信の処理によって、付加データを各データブロック内に設定することなく、送信データをデータブロックとして転送する（ステップＳ１０４）。そして、通信コントローラ２５０によって、例えば、送信元プロセッサ番号が受信側の特殊レジスタ２００の送信元プロセッサ２１５に書き込まれる。
【００５６】
受信側プログラムによる送信元プロセッサ番号取得の処理によって、例えば、送信元プログラム番号を特殊レジスタ２００の送信元プロセッサ２１５から読み込み（ステップＳ１２１）、データサイズ取得の処理によって、例えば、総データサイズを特殊レジスタ２００の受信データサイズ２１６から読み込み（ステップＳ１２２）、データを示すデータブロックを順に読み込んで受信データに対する処理を行う（ステップＳ１２４）。
【００５７】
このように、本発明によれば、送信側プログラムでは、送信元に関する情報を示すデータブロック、総データサイズを示すデータブロック、及びデータの終了を示すデータブロックを付加するための処理を不要とし、純粋なデータを単純に分割して生成した複数のデータブロックを送信するのみで良いため、送信処理に関するレイテンシをその分短くすることができる。一方、送信元に関する情報（例えば、送信元プロセッサ番号）は、通信コントローラ２５０によって、例えば、特殊レジスタ２００の送信元プロセッサ２１５に書き込まれるため、受信側プログラムでは、受信したデータブロックを解析することなく、送信元プロセッサ２１５から読み出すだけで送信元プロセッサを知ることができる。同様にして、総データサイズも受信したデータブロックを解析することなく、例えば、特殊レジスタ２００の受信データサイズ２１６から読み出すだけで良い。従って、データブロック毎の解析をする必要がない分、受信処理に関するレイテンシを短くすることができる。
【００５８】
従って、本発明による送信及び受信に関するデータ転送では、図３（Ａ）に示されるデータ組み立ての処理及びデータ分解の処理を不要し、また、データ送信及びデータ受信の処理にて付加データに関する処理を不要とするため、送信時及び受信時の夫々においてレイテンシを短縮することが可能となる。
［第二実施例］
次に、プロセッサ間通信における割込み処理を効率的に行う仕組みについて第二実施例にて説明する。
【００５９】
例えば、データを受信させるために、プロセッサ１００〜１０２のうち送信側のメッセージ送信プログラムからプロセッサ１００〜１０２の受信側のプロセッサに割込みを発生させて、割込みによりメッセージ受信プログラムを起動することが必要となる。この場合、通常、発生した割込みの種別に対応させて１つの割込みベクタを使用することになる。このような割込みベクタによる対応付けは、割込みの種類が増えると割込みベクタも増えることになり、記憶領域を割込みベクタ分毎に必要とすることになる。
【００６０】
第二実施例では、割込みベクタを用いることなく、割込み処理を可能とし割込みベクタを記憶するための記憶領域を削減することを可能とする仕組みについて説明する。
【００６１】
図５は、本発明の第一実施例に係る、情報処理装置におけるプロセッサ間通信に係る回路構成を示す図である。図５において、第一実施例と同様に、情報処理装置１００２は、並列処理を実行可能なコンピュータ装置である。図１に示す第一実施例との違いは、情報処理装置１００２がプロセッサ間割込み機構４００と、割込み要因格納レジスタ４０１、４１１、及び４２１と、割込み検出回路４０２、４１２、及び４２２とを更に有する点である。
【００６２】
割込み要因格納レジスタ４０１と割込み検出回路４０２とがプロセッサ１００に対応させて構成され、割込み要因格納レジスタ４１１と割込み検出回路４１２とがプロセッサ１０１に対応させて構成され、割込み要因格納レジスタ４２１と割込み検出回路４２２とがプロセッサ１０２に対応させて構成される。
【００６３】
プロセッサ間割込み機構４００は、プロセッサ１００から１０２の夫々から割込みの発生を示す信号を直接受信し、割込み要因格納レジスタ４０１、４１１、及び４２１のうちの割込み先に対して、所定ビット（フラグ）をオンにする。例えば、割込み先の所定ビットは、割込み元（データ送信元）のプロセッサ１００から１０２に対応するように割り当てておく。
【００６４】
割込み要因格納レジスタ４０１、４１１、及び４２１は、割込みの種類に対応させて割込みを示すビット位置が予め定義されている。例えば、メッセージ送信プログラムは、プロセッサ間割込み機構４００によって割込みに対して所定のビットをオンにし、メッセージ受信プログラムは、所定のビットのオンによって、割込みの種類を判断し、所定の処理を実行する。このように、割込みの種類とビット位置とを対応付けさせるのみで割込みの種類に応じた所定の処理を実行することが可能となり、また、割込みベクタによる記憶領域を削減することができる。
【００６５】
例えば、ビット０はプロセッサ１００（プロセッサＮｏ．０）が割込み元（送信元）であることを示し、ビット１はプロセッサ１０１（プロセッサＮｏ．１）が割込み元（送信元）であることを示し、ビット２はプロセッサ１０２（プロセッサＮｏ．２）が割込み元（送信元）であることを示すようにビット位置が予め定義される。また、割込み要因格納レジスタ４０１、４１１、及び４２１が３２ビットレジスタである場合、例えば、ビット１６はプロセッサ１００（プロセッサＮｏ．０）が割込み先（送信先）であることを示し、ビット１７はプロセッサ１０１（プロセッサＮｏ．１）が割込み先（送信先）であることを示し、ビット１８はプロセッサ１０２（プロセッサＮｏ．２）が割込み先（送信先）であることを示すようにビット位置を予め定義しても良い。プロセッサ間割込み機構４００は、データ送信先のビットを検出して、割込み要因格納レジスタ４０１、４１１、及び４２１の一つを送信先として決定する。
【００６６】
割込み検出回路４０２、４１２、及び４２２は、割込み要因格納レジスタ４０１、４１１、及び４２１の夫々に対応して備えられ、対応する割込み要因格納レジスタ４０１、４１１、及び４２１のビットのオンを検出すると、対応するプロセッサ１００から１０２（メッセージ受信プログラム）へ、割込みが発生したことを示す信号を出力する。
【００６７】
各プロセッサ１００から１０２（メッセージ受信プログラム）は、対応する割込み検出回路４０２、４１２、及び４２２からの信号を受信すると、対応する割込み要因格納レジスタ４０１、４１１、及び４２１のデータを読み込む。
【００６８】
次に、第二実施例におけるデータ転送Ａ側でのプロセッサ間通信について図５を参照しつつ説明する。図６は、本発明の第二実施例に係るプロセッサ間通信のシーケンスフローを示す図である。図６において、説明の便宜のため、プロセッサ１００をデータ送信側とし、プロセッサ１０１をデータ受信側として説明するが、どのプロセッサ１００、１０１、及び１０２も送信側及び受信側として機能することができる。また、図６中、図２に示されるステップと同様のステップには同一の符号を付し、その説明を省略する。また、図２に示されるプロセッサ間通信装置３００による処理のフローチャートを省略してあるが、図２に示されるように処理が実行されため、図示及びその説明を省略する。
【００６９】
図６において、メッセージ送信プログラムは、図２に示す処理と同様に、ステップS１０１からS１０８までを実行し、ステップS１０８での判断処理によって、カウント（count）が「０」（ゼロ）であると判断した場合、送信先プロセッサへ割込みを発生させて（ステップS１０９）、処理を終了する。例えば、プロセッサ１００からプロセッサ１０１へと割込みを発生させるため、プロセッサ１００は、割込み要因格納レジスタ４０１のデータ送信先として、プロセッサ１０１に対応するビットをオンにし、プロセッサ間割込み機構４００へ割込みの発生を示す信号を出力する。
【００７０】
プロセッサ間割込み機構４００は、プロセッサ１００から割込みの発生を示す信号を受信すると、プロセッサ１００の割込み要因格納レジスタ４０１を読み込んで、データ送信先のプロセッサを確認する。この場合、割込み先プロセッサ（送信先プロセッサ）としてプロセッサ１０１に対応するビットのオンを確認し、オフにする。プロセッサ間割込み機構４００は、割込み先プロセッサの割込み要因格納レジスタの割込み元プロセッサに対応するビットをオンにする。この場合、プロセッサ１０１の割込み要因格納レジスタ４１１の割込み元としてプロセッサ１００に対応するビットをオンにする（ステップS３１０）。
【００７１】
その後、割込み検出回路４１２は、割込み格納レジスタ４１１に割込み元に対応するビットがオンになったことを検出し、プロセッサ１０１へ割込み信号を出力する（ステップS３２０）。
【００７２】
プロセッサ１０１は、実行中のプログラムの状態をメモリに保存して（ステップS１２０）、メッセージ受信プログラムによるステップS１２１からS２３８までの処理を実行する。メッセージ受信プログラムによるステップS１２１からS２３８までの処理は、図２に示すステップS１２１からS２３８までの処理と同様であるので、その説明を省略する。
【００７３】
メッセージ受信プログラムは、ステップS１０８での判断処理によって、カウント（count）が「０」（ゼロ）であると判断した場合、割込み要因格納レジスタ４１１の受信したデータの送信元プロセッサに対応するビットをオフ（フラグをクリア）する（ステップS１２９）。
【００７４】
そして、メッセージ受信プログラムは、他にクリアしていない割込み要因があるか否かを判断する（ステップS１３０）。例えば、他のプロセッサ１０２からの割込みがあったか否かを確認する。このようにすることで、プロセッサ１００からのデータを受信中に、他プロセッサ１０２からの割込み要因を、メッセージ受信プログラムによる処理を一旦終了させることなく継続して処理することが可能となる。
【００７５】
クリアしていない割込み要因がある場合、メッセージ受信プログラムは、ステップS１２１へ戻り上記同様の処理を実行する。クリアしていない割込み要因がない場合、プロセッサ１０１は、割込み前に実行していたプログラムの状態を復元すると同時に、メッセージ受信プログラムは終了する。
【００７６】
本発明に係る第二実施例によれば、割込みベクタを用いることなく、割込み処理を可能とし、割込みベクタを記憶するための記憶領域を削減することができる。
【００７７】
以上の説明に関し、更に以下の項を開示する。
（付記１）
複数のプロセッサ間でデータ転送を行うプロセッサ間通信装置であって、
前記複数のプロセッサに対応させて、各プロセッサからの送信データを一時的に格納する複数の送信バッファと、
前記データ転送を制御する通信コントローラとを有し、
前記通信コントローラは、送信元プロセッサからの前記送信データを対応する前記送信バッファへの格納に関する処理をした後、該送信データに係る送信ステータスを、該送信元プロセッサとの間に設けられた送信ステータスレジスタへ書き込むことを特徴とするプロセッサ間通信装置。
（付記２）
前記通信コントローラは、前記送信元プロセッサに対応する前記送信バッファに空きがない場合、前記送信ステータスレジスタへ前記送信ステータスを書き込むことを特徴とするプロセッサ間通信装置。
（付記３）
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって送信データを書き込み可能な送信データレジスタから該送信データを読み込んで該送信元プロセッサに対応する前記送信バッファへ格納することを特徴とする付記１又は２記載のプロセッサ間通信装置。
（付記４）
更に、前記複数のプロセッサに対応させて、各プロセッサへの受信データを一時的に格納する複数の受信バッファと、
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって送信先プロセッサを識別する送信先プロセッサ識別情報を書き込み可能な送信先プロセッサレジスタから該送信先プロセッサ識別情報を読み込み、該送信先プロセッサ識別情報に対応する前記受信バッファへ前記送信データを前記受信データとして格納することを特徴とする付記１乃至３のいずれか一項記載のプロセッサ間通信装置。
（付記５）
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって送信データサイズを書き込み可能な送信データサイズレジスタから該送信データサイズを読み込むことを特徴とする付記１乃至４のいずれか一項記載のプロセッサ間通信装置。
（付記６）
前記通信コントローラは、前記送信データサイズレジスタから読み込んだ前記送信データサイズ分、前記送信データレジスタから前記送信データを順次読み込んで、前記送信バッファへ格納することを特徴とする付記５記載のプロセッサ間通信装置。
（付記７）
複数のプロセッサ間でデータ転送を行うプロセッサ間通信装置であって、
前記複数のプロセッサに対応させて、各プロセッサへの受信データを一時的に格納する複数の受信バッファと、
前記データ転送を制御する通信コントローラとを有し、
前記通信コントローラは、前記受信バッファに格納されている前記受信データを受信すべき送信先プロセッサへ転送する処理をした後、該受信データに係る受信ステータスを、該送信先プロセッサとの間に設けられた受信ステータスレジスタへ書き込むことを特徴とするプロセッサ間通信装置。
（付記８）
前記通信コントローラは、前記送信先プロセッサに対応する前記受信バッファが空の場合、ダミーデータを該送信先プロセッサへ転送した後、前記受信エラーを発生したことを示す受信ステータス情報を前記受信ステータスレジスタへ書き込むことを特徴とする付記７記載のプロセッサ間通信装置。
（付記９）
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって読み込み可能な受信データレジスタへ受信データを書き込むことを特徴とする付記７又は８記載のプロセッサ間通信装置。
（付記１０）
更に、前記複数のプロセッサに対応させて、各プロセッサからの送信データを一時的に格納する複数の送信バッファと、
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって読み込み可能な送信元プロセッサレジスタへ送信元プロセッサを識別する送信元プロセッサ識別情報を書き込んで、該送信元プロセッサ識別情報に対応する前記送信バッファから取り出した前記送信データを、前記送信先プロセッサに対応する前記受信バッファへ受信データとして格納することを特徴とする付記７乃至９のいずれか一項記載のプロセッサ間通信装置。
（付記１１）
前記通信コントローラは、各複数のプロセッサとの間に設けられた該プロセッサによって読み込み可能な受信データサイズレジスタへ受信データサイズを書き込むことを特徴とする付記７乃至１０のいずれか一項記載のプロセッサ間通信装置。
（付記１２）
前記通信コントローラは、前記受信データサイズ分、前記受信バッファから順次取り出して、前記受信データレジスタへ書き込むことを特徴とする付記１１記載のプロセッサ間通信装置。
（付記１３）
複数のプロセッサ間での割込みを制御するプロセッサ間割込み制御装置であって、
前記送信元プロセッサから前記送信データを受信する送信先プロセッサへの割込みを制御するプロセッサ間割込み制御手段と、
前記複数のプロセッサによって読み取り可能であって、該複数のプロセッサの夫々に対応し、割込み要因毎にビットを対応させた複数の割込み要因格納レジスタと、
前記複数のプロセッサの夫々に対応する、前記要因格納レジスタのビットへの設定に基づいて割込みを検出する複数の割込み検出手段とを有し、
前記プロセッサ間割込み制御手段は、前記割込みに応じて、前記送信先プロセッサに対応する前記割込み要因格納レジスタの該割込みの割込み要因に対応するビットを設定し、
各複数の割込み手段は、前記割込みを検出すると前記送信先プロセッサへ割込み信号を出力することを特徴とするプロセッサ間割込み制御装置。
（付記１４）
前記プロセッサ間割込み制御手段は、各複数のプロセッサによって割込みの発生を示す割込み発生信号を受信し、前記送信先プロセッサに対応する前記割込み要因格納レジスタの該割込みの割込み要因に対応するビットを設定することを特徴とする付記１３記載のプロセッサ間割込み制御装置。
（付記１５）
前記割込み要因は、割込みを発生させた前記送信元プロセッサを示し、該送信元プロセッサ毎にビットが定義されていることを特徴とする付記１４記載のプロセッサ間割込み制御装置。
（付記１６）
複数のプロセッサ間でデータ転送を行うプロセッサ間通信方法であって、
前記複数のプロセッサに対応する送信バッファへ、各プロセッサからの送信データを一時的に格納する送信データ格納手順と、
前記データ転送を制御する通信制御手順とを有し、
前記通信制御手順は、送信元プロセッサからの前記送信データを対応する前記送信バッファへの格納に関する処理をした後、該送信データに係る送信ステータスを、該送信元プロセッサとの間に設けられた送信ステータスレジスタへ書き込むことを特徴とするプロセッサ間通信方法。
（付記１７）
前記通信制御手順は、各複数のプロセッサとの間に設けられた該プロセッサによって送信データを書き込み可能な送信データレジスタから該送信データを読み込んで該送信元プロセッサに対応する前記送信バッファへ格納することを特徴とする付記１６記載のプロセッサ間通信方法。
（付記１８）
複数のプロセッサ間でデータ転送を行うプロセッサ間通信方法であって、
前記複数のプロセッサに対応する受信バッファへ、各プロセッサへの受信データを一時的に格納する受信データ格納手順と、
前記データ転送を制御する通信制御手順とを有し、
前記通信制御手順は、前記受信バッファに格納されている前記受信データを受信すべき送信先プロセッサへ転送する処理をした後、該受信データに係る受信ステータスを、該送信先プロセッサとの間に設けられた受信ステータスレジスタへ書き込むことを特徴とするプロセッサ間通信方法。
（付記１９）
前記通信制御手順は、各複数のプロセッサとの間に設けられた該プロセッサによって読み込み可能な受信データレジスタへ受信データを書き込むことを特徴とする付記１８記載のプロセッサ間通信方法。
（付記２０）
複数のプロセッサを備えた並列処理を実行可能とする情報処理装置であって、
前記複数のプロセッサに対応させて、各プロセッサからの送信データを一時的に格納する複数の送信バッファと、
前記複数のプロセッサに対応させて、各プロセッサへの受信データを一時的に格納する複数の受信バッファと、
前記データ転送を制御する通信コントローラとを有し、
前記通信コントローラは、送信元プロセッサからの前記送信データを対応する前記送信バッファへの格納に関する処理をした後、該送信データに係る送信ステータスを、該送信元プロセッサとの間に設けられた送信ステータスレジスタへ書き込み、
また、前記通信コントローラは、前記受信バッファに格納されている前記受信データを受信すべき送信先プロセッサへ転送する処理をした後、該受信データに係る受信ステータスを、該送信先プロセッサとの間に設けられた受信ステータスレジスタへ書き込むことを特徴とする情報処理装置。
【００７８】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【００７９】
【図１】本発明の第一実施例に係る、情報処理装置におけるプロセッサ間通信に係る回路構成を示す図である。
【図２】本発明の第一実施例に係るプロセッサ間通信のシーケンスフローを示す図である。
【図３】本発明に係るプロセッサ間通信について説明するためのブロック図である。
【図４】データを分割した場合における本発明に係るプロセッサ間通信について説明するためのブロック図である。
【図５】本発明の第一実施例に係る、情報処理装置におけるプロセッサ間通信に係る回路構成を示す図である。
【図６】本発明の第二実施例に係るプロセッサ間通信のシーケンスフローを示す図である。
【符号の説明】
【００８０】
１１          外部メモリ
３０          バス
１００、１０１、１０２        プロセッサ
２００        プロセッサ間通信用特殊レジスタ
２０１、２１１、２２１          送信元プロセッサ（レジスタ）
２０２，２１２，２２２          送信データサイズ（レジスタ）
２０３，２１３，２２３          送信ステータス（レジスタ）
２０４、２１４、２２４          送信データ（レジスタ）
２０５、２１５、２２５          送信元プロセッサ（レジスタ）
２０６、２１６、２２６          受信データサイズ（レジスタ）
２０７、２１７、２２７          受信データ（レジスタ）
２０８、２１８．２２８          受信ステータス（レジスタ）
【図１】
2006201946.tif 000003
【図２】
2006201946.tif 000004
【図３】
2006201946.tif 000005
【図４】
2006201946.tif 000006
【図５】
2006201946.tif 000007
【図６】
2006201946.tif 000008