(57)【特許請求の範囲】
【請求項１】
第１コア及び第２コアを有するプロセッサと、
前記第１コアから送出された送信情報の宛先が前記第２コア宛て又は他の情報処理装置宛てであることを表す宛先情報を前記送信情報に付加して出力する送信制御部と、
前記送信情報の入力を受け、前記宛先情報又は前記送信情報の入力元の情報を基に送信先を決定し、取得した前記送信情報を前記送信先へ向けて送信する送信部と、
前記送信部から前記送信情報の入力を受け、前記送信情報を記憶部に書き込み、入力された前記送信情報に付加された前記宛先情報を前記送信情報に対する応答に付加した宛先情報付加応答を発行する書込部と、
前記宛先情報付加応答を含む応答通知又は他の情報処理装置からの応答通知の入力を受け、前記応答通知に付加された前記宛先情報又は前記応答通知の入力元の情報を基に、前記応答通知を他の情報処理装置へ送信又は受信結果格納部に格納させる応答処理部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記送信部は、前記送信制御部から前記送信情報の入力を受けた場合、前記宛先情報が前記第２コア宛てであれば、前記送信先を前記書込部とし、前記宛先情報が前記他の情報処理装置宛てであれば、前記送信先を前記他の情報処理装置とし、前記他の情報処理装置から前記送信情報の入力を受けた場合、前記送信先を前記書込部とすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記応答処理部は、前記応答通知として前記書込部から前記宛先情報付加応答の入力を受けた場合、前記宛先情報が前記他の情報処理装置宛てであれば、前記応答通知を前記他の情報処理装置へ送信し、前記宛先情報が前記第２コア宛てであれば、前記応答通知を前記受信結果格納部に格納させ、前記他の情報処理装置からの前記応答通知の入力を受けた場合、前記応答通知を受信結果格納部に格納させることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
第１情報処理装置及び第２情報処理装置を有する情報処理システムであって、
前記第１情報処理装置は、
第１記憶部と、
第１受信結果格納部と、
第１コア及び第２コアを有するプロセッサと、
前記第１コアから送出された送信情報の宛先が前記第２コア宛て又は前記第２情報処理装置宛てであることを表す宛先情報を前記送信情報に付加して出力する第１送信制御部と、
前記送信情報の入力を受け、前記宛先情報又は前記送信情報の入力元の情報を基に送信先を決定し、取得した前記送信情報を前記送信先へ向けて送信する第１送信部と、
前記第１送信部から前記送信情報の入力を受け、前記送信情報を前記第１記憶部に書き込み、入力された前記送信情報に付加された前記宛先情報を前記送信情報に対する応答に付加した宛先情報付加応答を発行する第１書込部と、
前記第１書込部又は前記第２情報処理装置から前記宛先情報付加応答を含む応答通知の入力を受け、前記応答通知に付加された前記宛先情報又は前記応答通知の入力元の情報を基に、前記応答通知を前記第２情報処理装置へ送信又は前記第１受信結果格納部に格納させる第１応答処理部とを備え、
前記第２情報処理装置は、
第２記憶部と、
前記第１送信制御部から前記送信情報の入力を受け、前記送信情報を前記第２記憶部に書込み、前記送信情報に付加された前記宛先情報を前記送信情報に対する応答に付加した前記宛先情報付加応答を発行する第２書込部と、
前記第２書込部により発行された前記宛先情報付加応答を前記第１情報処理装置へ送信する第２応答処理部とを備えた
ことを特徴とする情報処理システム。
【請求項５】
情報処理装置が、
所定のプロセッサが有する第１コアから送出された送信情報の宛先が前記所定のプロセッサが有する第２コア宛て又は他の情報処理装置宛てであることを表す宛先情報を前記送信情報に付加して出力し、
前記出力された前記送信情報の入力を受け、前記宛先情報又は入力経路を基に送信先を決定し、取得した前記送信情報を前記送信先へ向けて送信し、
前記送信された前記送信情報の入力を受け、前記送信情報を記憶装置に書き込み、入力された前記送信情報に付加された前記宛先情報を前記送信情報に対する応答に付加した宛先情報付加応答を発行し、
前記宛先情報付加応答を含む応答通知の入力を受け、前記応答通知に付加された前記宛先情報又は入力経路を基に、前記応答通知を他の情報処理装置へ送信又はレジスタに格納する
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
複数のソフトウェアが連係して処理を実行する際に、各ソフトウェアが用いるデータを送受信するプロセス間通信（ＩＰＣ：Inter  Process  Communication）の技術が知られている。
【０００３】
また、情報処理システムは、それぞれ個別のＣＰＵ（Central  Processing  Unit）を備えた複数のノードを有するものが多い。そして、そのような情報処理システムは、各ＣＰＵがそれぞれ異なるプロセスを実行するマルチノードシステムの技術が用いられることが一般的である。このようなマルチノードシステムの技術の一例として、データをキャッシュする機能を有するＣＰＵを複数有し、各ＣＰＵがそれぞれ異なるプロセスを同時に実行する技術が知られている。また、各ＣＰＵがそれぞれ独立したＯＳ（Operating  System）を実行し、ＣＰＵ間で一部のメモリ領域を共有する、共有メモリシステムの技術が知られている。この様な構成とする事で、情報処理システム全体の処理能力をより向上させる事ができ、さらに各ノードでＯＳが個別に動作する事で、エラーの波及を防止でき、システムの可用性を向上させる事ができる。
【０００４】
マルチノードシステムにおいて、例えば、各ノードは、ローカルメモリ、ＨＰＶ（Hypervisor）ソフト、ＯＳ、デバイスドライバを有し、それぞれ異なるユーザプロセスを同時に実行する。なお、ＨＰＶソフトとは、各ノードが稼働させる仮想マシンの管理を行うソフトウェアである。このような情報処理システムでは、各ノードが共有する共有メモリにライトポインタとリードポインタとを格納することでキューを実現し、各ノードの間でユーザプロセス間のプロセス間通信を行う。各ノードの間でのプロセス間通信は、ノード間メッセージ通信と呼ばれる場合がある。
【０００５】
ここで、メッセージを送信するノードを送信側ノードとし、メッセージを受信するノードを受信側ノードとしてノード間メッセージ通信について簡単に説明する。送信側ノードには、ＣＰＵ毎に送信メッセージレジスタが設けられる。そして、ＣＰＵにより実行されるアプリケーションソフトウェアが送信メッセージレジスタにメッセージを書き込むことで、メッセージが送信される。送信されるメッセージは、宛先ＣＰＵＩＤ（Identifier）やレジスタセットＩＤを含む。
【０００６】
受信側ノードは、アドレスレジスタ、リードポインタ、ライトポインタなどを有するレジスタセットを複数有する。そして、受信側ノードは、送信側ノードから指定されたレジスタセットＩＤによって指定されたレジスタを選択する。そして、受信側ノードは、選択したレジスタによって示される記憶領域にメッセージを書き込む。その後、受信側ノードにおけるユーザプロセスが、記憶領域に格納されたメッセージを読み出すことでメッセージの受信が完了する。
【０００７】
受信側ノードのユーザプロセスがメッセージ受信を検知する方法にメッセージ受信割込がある。そこで、メッセージ受信割込時の動作について説明する。メッセージ受信割込が発生する場合、受信側のユーザプロセスはスリープ状態にある。ＣＰＵは、メッセージを受信したタイミングなどの予め決められたタイミングで、割込リクエストをスリープ状態のユーザプロセスに送信する。ユーザプロセスは、ＣＰＵからの割込リクエストを受けてコンテキストスイッチを行い、メッセージの読み出しを開始する。
【０００８】
また、メッセージを記憶領域に格納した受信側ノードは、返送先情報を含むメッセージ応答を送信側ノードへ返送する。送信側ノードは、メッセージ応答を受信して、自装置が有するステータスレジスタに受信ステータスを登録し、メッセージの送信を完了する。
【０００９】
また、ノード間における通信技術として、異なる物理サーバ間での仮想ＬＡＮアダプタを介したデータ転送を実現する従来技術がある。また、異なる物理サーバ間のパケット転送を仮想スイッチ経由で実現する従来技術がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−１４１６３５号公報
【特許文献２】特開２０１４−１９５１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、近年、仮想化技術などを用いることでノード内の１つのＣＰＵ上に複数のドメイン及びパーティションなどが存在し、各々が独立したＯＳを動作させることが多い。ここで、ドメインやパーティションとは、異なるサービスを提供するサービス提供単位であり、以下では、まとめて「ドメイン」という。これに対して、上述したようなノード間メッセージ通信は、メッセージの送信先への配送には、他のノードへの配送を前提としたルータが用いられる。すなわち、従来のノード間メッセージ通信は、ノード間のデータの受け渡しが前提とされている。そのため、従来のノード間メッセージ通信では、同一ＣＰＵ上のドメイン間でメッセージ通信を行うことは困難である。
【００１２】
また、異なる物理サーバ間での仮想ＬＡＮアダプタを用いたデータ転送の従来技術においても、同一ＣＰＵ上におけるメッセージ通信は考慮されておらず、同一ノード内のドメイン間でメッセージ通信を行うことは困難である。また、異なる物理サーバ間のパケット転送を仮想スイッチ経由で行う従来技術においても、同一ＣＰＵ上におけるメッセージ通信は考慮されておらず、同一ノード内のドメイン間でメッセージ通信を行うことは困難である。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、同一ノード内のドメイン間でメッセージ通信を行う情報処理装置、情報処理システム及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理装置、情報処理システム及び情報処理装置の制御方法の一つの態様において、プロセッサは、第１コア及び第２コアを有する。送信制御部は、前記第１コアから送出された送信情報の宛先が前記第２コア宛て又は他の情報処理装置宛てであることを表す宛先情報を前記送信情報に付加して出力する。送信部は、前記送信情報の入力を受け、前記宛先情報又は前記送信情報の入力元の情報を基に送信先を決定し、取得した前記送信情報を前記送信先へ向けて送信する。書込部は、前記送信部から前記送信情報の入力を受け、前記送信情報を記憶部に書き込み、入力された前記送信情報に付加された前記宛先情報を前記送信情報に対する応答に付加した宛先情報付加応答を発行する。応答処理部は、前記宛先情報付加応答を含む応答通知又は他の情報処理装置からの応答通知の入力を受け、前記応答通知に付加された前記宛先情報又は前記応答通知の入力元の情報を基に、前記応答通知を他の情報処理装置へ送信又は受信結果格納部に格納させる。
【発明の効果】
【００１５】
本願の開示する情報処理装置、情報処理システム及び情報処理装置の制御方法の一つの態様によれば、同一ノード内のドメイン間でメッセージ通信を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、ノード間メッセージ通信を行う情報処理システムのシステム構成図である。
【図２】図２は、他の情報処理装置宛のメッセージ送信について説明するための図である。
【図３】図３は、自装置宛のメッセージ送信について説明するための図である。
【図４】図４は、送信側ＣＰＵのブロック図である。
【図５】図５は、受信側ＣＰＵのブロック図である。
【図６】図６は、メッセージ送信制御部の機能を実現する回路の一例を表す図である。
【図７】図７は、リクエスト調停用回路の一例を表す図である。
【図８】図８は、リクエスト調停制御部の動作を示す図である。
【図９】図９は、応答調停用回路の一例を表す図である。
【図１０】図１０は、応答調停制御部の動作を示す図である。
【図１１】図１１は、実施例に係るメッセージ通信における処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理装置、情報処理システム及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム及び情報処理装置の制御方法が限定されるものではない。
【実施例】
【００１８】
図１を参照して、情報処理システム１の一例を説明する。図１は、ノード間メッセージ通信を行う情報処理システムのシステム構成図である。図１に示す例では、情報処理システム１は、ノード１１及び１２を含む複数のノード、並びに、グローバルＸＢ（crossbar）２を有する。ここでは、ノード１１及び１２についてのみ説明するが、図１に記載する他のノードもノード１１及び１２と同様の構成を有する。
【００１９】
ノード１１及び１２は、それぞれ１つの独立したＯＳが走行する単位であり、ＯＳが走行するための最低限の装置を含む。ノード１１及び１２は、グローバルＸＢ２と接続され、インターコネクトを介して相互に接続される。
【００２０】
ノード１１は、ＣＰＵ１０１、メモリ１０２及びローカルＸＢ１０３を有する。また、ノード１２は、ＣＰＵ２０１、メモリ２０２及びローカルＸＢ２０３を有する。また、ノード１１のＣＰＵ１０１は、コア１０４Ａ及び１０４Ｂを有する。図１では、１つのＣＰＵ１０１にのみコア１０４Ａ及び１０４Ｂを記載したが、他のコア１０１及びノード１２のＣＰＵ２０１も複数のコアを有してもよい。このノード１１及び１２が「情報処理装置」の一例にあたる。
【００２１】
ノード１１及び１２は、それぞれ独立してＯＳを実行する。さらに、コア１０４Ａ及び１０４Ｂは、それぞれ独立してＯＳを実行する。ただし、ＣＰＵ１０１及び２０１の中には、コア１０４Ａ及び１０４Ｂが同じＯＳを実行するものが存在してもよい。ノード１１とノード１２は同様の構成を有するので、ここでは、ノード１１を例に説明する。
【００２２】
ＣＰＵ１０１は、メモリ１０２及びローカルＸＢ１０３とバスで接続される。ＣＰＵ１０１は、ローカルＸＢ１０３を介してグローバルＸＢ２に接続する。
【００２３】
コア１０４Ａは、メッセージの発行要求を出力する。メッセージの送信には、コア１０４Ｂに対するメッセージの送信、すなわちＣＰＵ１０１宛のメッセージ送信と、他のノードであるノード１２のＣＰＵ２０１宛てのメッセージの送信とがある。このメッセージが、「送信情報」の一例にあたる。そして、ＣＰＵ１０１宛てはノード１１宛てともいえ、また、ＣＰＵ２０１宛てはノード１２宛ともいえる。すなわち、ＣＰＵ１０１宛てが「自装置宛て」の一例にあたり、また、ＣＰＵ２０１宛てが、「他の情報処理装置宛て」の一例にあたる。
【００２４】
ＣＰＵ１０１におけるノード１２のＣＰＵ２０１宛てのメッセージの発行要求の場合の処理について図２を参照して動作の概略を説明する。図２は、他の情報処理装置宛のメッセージ送信について説明するための図である。
【００２５】
ＣＰＵ１０１は、ローカルＸＢ１０３、グローバルＸＢ２及びローカルＸＢ２０３を介してノード１２にメッセージを送信する（ステップＳ１１〜Ｓ１３）。ＣＰＵ２０１は、ＣＰＵ１０１から受信したメッセージをメモリ２０２に格納する（ステップＳ１４）。その後、ＣＰＵ１０１は、ローカルＸＢ２０３、グローバルＸＢ２及びローカルＸＢ１０３を介してメッセージの受信完了を通知するメッセージ応答をＣＰＵ２０１から受信する（ステップＳ１５〜Ｓ１７）。これらの処理により、ノード１１のＣＰＵ１０１からノード１２にＣＰＵ２０１へのメッセージ通信が完了する。
【００２６】
次に、同じＣＰＵ１０１に存在するコア１０４Ａからコア１０４Ｂ宛のメッセージの発行要求、すなわち自装置宛のメッセージの発行要求の場合の処理について図３を参照して動作の概略を説明する。図３は、自装置宛のメッセージ送信について説明するための図である。
【００２７】
コア１０４Ａは、コア１０４Ｂにメッセージを送信する（ステップＳ２１）。コア１０４Ｂは、コア１０４Ａから受信したメッセージをメモリ１０２に格納する（ステップＳ２２）。その後、コア１０４Ａは、メッセージの受信完了を通知するメッセージ応答をコア１０４Ｂから受信する（ステップＳ２３）。これらの処理により、コア１０４Ａからコア１０４Ｂへのメッセージ通信、すなわち自装置宛のメッセージ送信が完了する。
【００２８】
ＣＰＵ１０１は、このように他の情報処理装置宛及び自装置宛のメッセージ送信を行う。そこで、このＣＰＵ１０１のメッセージ送信を実行する機能の詳細について次に説明する。以下では、ＣＰＵ１０１がＣＰＵ２０１又は自装置に宛ててメッセージを送信する場合で説明する。すなわち、ＣＰＵ１０１は、送信側ＣＰＵであり、且つ自装置宛のメッセージの場合、受信側ＣＰＵとなる。また、ＣＰＵ２０１は、ＣＰＵ１０１がＣＰＵ２０１宛てのメッセージを送信した場合、受信側ＣＰＵとなる。
【００２９】
図４は、送信側ＣＰＵのブロック図である。ただし、図４に示す送信側ＣＰＵであるＰＣＵ１０１は、自装置宛のメッセージを送信する場合、受信側ＣＰＵにもなる。また、説明の都合上、図４では、ＣＰＵ１０１とＣＰＵ２０１との間に配置されるローカルＸＢ１０３、グローバルＸＢ２及びローカルＸＢ２０３を省略した。
【００３０】
ＣＰＵ１０１は、演算処理部１１１、メッセージ送信制御部１１２、リクエスト調停制御部１１３、メッセージ受信制御部１１４、応答調停制御部１１５及びルータ１１６を有する。
【００３１】
演算処理部１１１は、図１で例示したコア１０４により実現される。演算処理部１１１は、宛先ＣＰＵＩＤを含むメッセージの発行要求を生成する。そして、演算処理部１１１は、生成したメッセージ発行要求をメッセージ送信制御部１１２へ出力する。また、演算処理部１１１は、レジスタからの読み出し命令や書き込み命令といった他の命令をリクエスト調停制御部１１３へ出力する。
【００３２】
メッセージ送信制御部１１２は、ステータスレジスタ１２０を有する。ステータスレジスタ１２０は、メッセージの送信に対する応答であるメッセージ応答に含まれる受信ステータスなどの各種ステータスを格納する記憶装置である。
【００３３】
メッセージ送信制御部１１２は、メッセージの発行要求の入力を演算処理部１１１から受ける。そして、メッセージ送信制御部１１２は、宛先ＣＰＵＩＤから宛先となるＣＰＵを判定する。ここでは、宛先は、自装置であるノード１１のＣＰＵ１０１又は他の情報処理装置であるノード１２のＣＰＵ２０１の何れかとする。
【００３４】
宛先がＣＰＵ１０１、すなわち自装置である場合、メッセージ送信制御部１１２は、メッセージの発行要求に宛先フラグとして自装置宛であることを表すフラグを付加する。本実施例では、メッセージ送信制御部１１２は、宛先を表すビットである「ｏｗｎ  ｂｉｔ」をメッセージの発行要求に付加する。このｏｗｎ  ｂｉｔの付加の方法は、例えば、メッセージの発行要求信号の空きビットに組み込んでもよいし、ｏｗｎ  ｂｉｔを表す専用線を各部の間に張ってそれに信号を流してもよい。本実施例では、ｏｗｎ  ｂｉｔの値が「１」の場合に、宛先フラグは、ＣＰＵ１０１宛て、すなわち自装置宛であることを示すフラグとなる。
【００３５】
これに対して、宛先がＣＰＵ１０１、すなわち自装置である場合、メッセージ送信制御部１１２は、メッセージの発行要求に宛先情報として他のノード宛であることを表す情報を付加する。本実施例では、メッセージ送信制御部１１２は、宛先を表すビットであるｏｗｎ  ｂｉｔの値を「０」として、メッセージの発行要求に付加する。本実施例では、ｏｗｎ  ｂｉｔの値が「０」の場合に、宛先情報は、ＣＰＵ１０１宛て、すなわち自装置宛であることを示す情報となる。以下では、宛先情報としてｏｗｎ  ｂｉｔを用いる場合を例に説明する。
【００３６】
次に、メッセージ送信制御部１１２は、ｏｗｎ  ｂｉｔが付加されたメッセージの発行要求をリクエスト調停制御部１１３へ出力する。その後、メッセージ送信制御部１１２は、メッセージの発行許可をリクエスト調停制御部１１３から受信する。そして、メッセージ送信制御部１１２は、メッセージをリクエスト調停制御部１１３へ出力する。ここで、本実施例では、メッセージ送信制御部１１２は、メッセージの発行要求に宛先情報を付加するとしたが、メッセージはメッセージの発行要求と対となって発行されるものであり、メッセージに宛先情報を付加するとしてもよい。
【００３７】
また、メッセージ送信制御部１１２は、メッセージ応答の入力を応答調停制御部１１５から受ける。そして、メッセージ送信制御部１１２は、入力されたメッセージ応答に含まれる受信ステータスをステータスレジスタ１２０へ格納する。このメッセージ送信制御部１１２が、「送信制御部」の一例にあたる。
【００３８】
リクエスト調停制御部１１３は、メッセージ送信制御部１１２からｏｗｎ  ｂｉｔが付加されたメッセージの発行要求の入力を受ける。また、リクエスト調停制御部１１３は、演算処理部１１１から、レジスタからの読み出しやレジスタへの書き込みといった他の要求の入力を受ける。そして、リクエスト調停制御部１１３は、入力された要求の調停を行い実行する要求を選択する。
【００３９】
リクエスト調停制御部１１３は、調停により選択された要求がメッセージの発行要求の場合、付加されたｏｗｎ  ｂｉｔが「１」であれば、メッセージの宛先をＣＰＵ１０１と決定する。また、付加されたｏｗｎ  ｂｉｔが「０」であれば、リクエスト調停制御部１１３は、メッセージの宛先をＣＰＵ２０１と決定する。
【００４０】
メッセージの宛先がＣＰＵ１０１の場合、リクエスト調停制御部１１３は、ｏｗｎ  ｂｉｔが付加されたメッセージをメッセージ受信制御部１１４へ出力する。これに対して、メッセージの宛先がＣＰＵ２０１の場合、リクエスト調停制御部１１３は、ｏｗｎ  ｂｉｔが付加されたメッセージをルータ１１６へ出力する。
【００４１】
メッセージ受信制御部１１４は、ｏｗｎ  ｂｉｔが付加されたメッセージの入力をリクエスト調停制御部１１３から受ける。そして、メッセージ受信制御部１１４は、受信したメッセージをメッセージ格納部３０１へ格納する。メッセージ格納部３０１は、図１に例示したメモリ１０２で実現される。このメッセージ格納部３０１が、「記憶部」の一例にあたる。
【００４２】
次に、メッセージ受信制御部１１４は、メッセージの受信完了を表すメッセージ応答を作成する。さらに、メッセージ受信制御部１１４は、メッセージに付加されたｏｗｎ  ｂｉｔをメッセージ応答に付加する。ここでは、メッセージ受信制御部１１４は、ＣＰＵ１０１宛てのメッセージを取得したので、ｏｗｎ  ｂｉｔの値を「１」とする。そして、メッセージ受信制御部１１４は、ｏｗｎ  ｂｉｔが付加されたメッセージ応答を応答調停制御部１１５へ出力する。このメッセージ受信制御部１１４により作成されたｏｗｎ  ｂｉｔが付加されたメッセージ応答が、「宛先情報付加応答」の一例にあたる。
【００４３】
応答調停制御部１１５は、ＣＰＵ１０１宛てのメッセージに対するメッセージ応答の入力をメッセージ受信制御部１１４から受ける。また、応答調停制御部１１５は、ＣＰＵ２０１から送信されたＣＰＵ２０１宛てのメッセージに対するメッセージ応答の入力をルータ１１６から受ける。そして、応答調停制御部１１５は、受信したメッセージ応答の調停を行う。その後、応答調停制御部１１５は、調停により選択されたメッセージ応答をメッセージ送信制御部１１２へ出力する。この応答調停制御部１１５に対してメッセージ受信制御部１１４から入力されたメッセージ応答及びルータ１１６から入力されたメッセージ応答が、「応答通知」の一例にあたる。
【００４４】
ルータ１１６は、ＣＰＵ２０１宛てのメッセージの入力をリクエスト調停制御部１１３から受ける。そして、ルータ１１６は、入力されたメッセージをＣＰＵ２０１へ送信する。
【００４５】
また、ルータ１１６は、ＣＰＵ２０１宛てのメッセージに対するメッセージ応答をＣＰＵ２０１から受信する。そして、ルータ１１６は、受信したメッセージ応答を応答調停制御部１１５へ出力する。
【００４６】
次に、図５を参照して、受信側ＣＰＵであるＣＰＵ２０１について説明する。図５は、受信側ＣＰＵのブロック図である。ここで、説明の都合上、図５では、ＣＰＵ１０１とＣＰＵ２０１との間に配置されるローカルＸＢ１０３、グローバルＸＢ２及びローカルＸＢ２０３を省略した。
【００４７】
ＣＰＵ２０１は、ＣＰＵ１０１と同様に、演算処理部２１１、メッセージ送信制御部２１２、リクエスト調停制御部２１３、メッセージ受信制御部２１４、応答調停制御部２１５、ルータ２１６及びステータスレジスタ２２０を有する。また、図５に示すメッセージ格納部３０２は、図１に例示したメモリ２０２によって実現される。
【００４８】
ここで、ＣＰＵ２０１は、送信側ＣＰＵとしても動作するため、演算処理部１１１、メッセージ送信制御部１１２及びステータスレジスタ２２０を有するが、以下の説明では、受信側ＣＰＵとしての機能についてのみ説明する。そこで、演算処理部１１１、メッセージ送信制御部１１２及びステータスレジスタ２２０についての説明は省略する。すなわち、本実施例では、送信側ＣＰＵと受信側ＣＰＵとでは、メッセージの配送方法が異なり回路は同様の回路を有する。
【００４９】
リクエスト調停制御部２１３は、ＣＰＵ１０１から送信されたＣＰＵ２０１宛てのメッセージの処理要求の入力をルータ２１６から受ける。このメッセージ処理要求には、宛先を表すフラグであるｏｗｎ  ｂｉｔが付加されている。この場合、ｏｗｎ  ｂｉｔの値は０である。また、リクエスト調停制御部２１３は、コア（不図示）などから他の要求の入力も受ける。そして、リクエスト調停制御部２１３は、取得した要求の調停を行い、要求を選択する。
【００５０】
調停により選択された要求がＣＰＵ１０１から送信されたメッセージの処理要求の場合、リクエスト調停制御部２１３は、付加されているｏｗｎ  ｂｉｔとともにメッセージをメッセージ受信制御部２１４へ出力する。
【００５１】
メッセージ受信制御部２１４は、ｏｗｎ  ｂｉｔが付加されたメッセージの入力をリクエスト調停制御部２１３から受ける。そして、メッセージ受信制御部２１４は、受信したメッセージをメッセージ格納部３０２へ格納する。このメッセージ格納部３０２が、「記憶部」の一例にあたる。
【００５２】
次に、メッセージ受信制御部２１４は、メッセージの受信完了を表すメッセージ応答を作成する。さらに、メッセージ受信制御部２１４は、メッセージに付加されたｏｗｎ  ｂｉｔをメッセージ応答に付加する。ここでは、メッセージ受信制御部２１４は、ＣＰＵ１０１が送信したＣＰＵ２０１宛てのメッセージを取得したので、ｏｗｎ  ｂｉｔの値を「０」とする。そして、メッセージ受信制御部２１４は、ｏｗｎ  ｂｉｔが付加されたメッセージ応答を応答調停制御部２１５へ出力する。
【００５３】
応答調停制御部２１５は、０の値を有するｏｗｎ  ｂｉｔが付加されたメッセージ応答の入力をメッセージ受信制御部２１４から受ける。応答調停制御部２１５は、他の応答の入力も受ける。そして、応答調停制御部２１５は、入力された応答の調停を行い応答を選択する。
【００５４】
調停により選択された応答が０の値を有するｏｗｎ  ｂｉｔが付加されたメッセージ応答の場合、応答調停制御部２１５は、メッセージ応答をルータ２１６へ出力する。
【００５５】
ルータ２１６は、ＣＰＵ２０１宛てのメッセージの受信要求をＣＰＵ１０１から受信する。そして、ルータ２１６は、受信したメッセーの受信要求をリクエスト調停制御部２１３へ出力する。
【００５６】
また、ルータ２１６は、ＣＰＵ１０１宛てのメッセージ応答の入力を応答調停制御部２１５から受ける。そして、ルータ２１６は、入力されたＣＰＵ１０１宛てのメッセージ応答をＣＰＵ１０１へ送信する。
【００５７】
ここで、以上の説明では、送信側ＣＰＵ及び受信側ＣＰＵのそれぞれの機能を別々に説明した。ただし、ＣＰＵ１０１及び２０１は、送信側ＣＰＵ及び受信側ＣＰＵの何れにもなりうる。そのため、実際には、ＣＰＵ１０１及び２０１は、送信側ＣＰＵ及び受信側ＣＰＵの何れの機能も有する。
【００５８】
そこで、以下に、送信側ＣＰＵ及び受信側ＣＰＵの何れの機能も有する場合の各部の具体的な構成について説明する。
【００５９】
図６は、メッセージ送信制御部の機能を実現する回路の一例を表す図である。受信側ＣＰＵでは、メッセージ送信制御部の機能は用いないため、図６に示した回路は、メッセージ送信制御部１１２に関する回路を表す。
【００６０】
図６に示すように、メッセージ送信制御部１１２は、比較器１２１及び１２２、並びに、ＡＮＤ回路１２３及び１２４を有する。さらに、メッセージ送信制御部１１２は、ｏｗｎ  ｂｉｔ送信用の専用線１２５、宛先ＣＰＵＩＤの入力経路１２６、ＣＰＵ１０１のＩＤの入力経路１２７、有効ＣＰＵのＩＤの入力経路１２８及びメッセージの発行要求タイミングの信号の入力経路１２９を有する。
【００６１】
メッセージ送信制御部１１２は、メッセージの発行要求に付加された宛先ＣＰＵＩＤを入力経路１２６に入力する。また、メッセージ送信制御部１１２は、ＣＰＵ１０１のＩＤを入力経路１２７へ入力する。また、メッセージ送信制御部１１２は、予め記憶する有効ＣＰＵのＩＤを入力経路１２８へ入力する。また、メッセージ送信制御部１１２は、自己が有する発振器などから生成されたメッセージ発行要求タイミングの信号を入力経路１２９へ入力する。メッセージ送信制御部１１２は、メッセージ発行要求タイミングであればメッセージ発行要求タイミングの信号として「１」を入力し、メッセージの発行要求タイミングでなければメッセージ発行要求タイミングの信号として「０」を入力する。
【００６２】
比較器１２１は、宛先ＣＰＵＩＤの入力を入力経路１２６から受ける。また、比較器１２１は、ＣＰＵ１０１のＩＤの入力を入力経路１２７から受ける。そして、比較器１２１は、宛先ＣＰＵＩＤとＣＰＵ１０１のＩＤとを比較する。比較結果が等しい場合、比較器１２１は、値として１を有する信号を専用線１２５を介してリクエスト調停制御部１１３へ出力する。これにより、メッセージ送信制御部１１２は、１の値を有するｏｗｎ  ｂｉｔをメッセージの発行要求に付加する。これに対して、比較結果が異なる場合、比較器１２１は、値として０を有する信号を専用線１２５を介してリクエスト調停制御部１１３へ出力する。これにより、メッセージ送信制御部１１２は、０の値を有するｏｗｎ  ｂｉｔをメッセージの発行要求に付加する。
【００６３】
また、図６では、専用線を用いてｏｗｎ  ｂｉｔを付加する場合で説明したが、ｏｗｎ  ｂｉｔをメッセージの発行要求と同じタイミングでリクエスト調停制御部１１３に発行するパケットが有る場合、そのパケットの空きにｏｗｎ  ｂｉｔを組み込んで発行してもよい。
【００６４】
比較器１２２は、宛先ＣＰＵＩＤの入力を入力経路１２６から受ける。また、比較器１２２は、有効ＣＰＵのＩＤの入力を入力経路１２８から受ける。そして、比較器１２２は、宛先ＣＰＵＩＤと有効ＣＰＵのＩＤを比較する。有効ＣＰＵのＩＤの中に宛先ＣＰＵＩＤが含まれていた場合、比較器１２２は、１を出力する。これに対して、有効ＣＰＵのＩＤの中に宛先ＣＰＵＩＤが無い場合、比較器１２２は、０を出力する。
【００６５】
ＡＮＤ回路１２３は、比較器１２２から出力された信号の入力を受ける。また、ＡＮＤ回路１２３は、メッセージ発行要求タイミングの信号の入力を入力経路１２９から受ける。そして、ＡＮＤ回路１２３は、入力された信号の論理積を出力する。すなわち、ＡＮＤ回路１２３は、宛先ＣＰＵが有効ＣＰＵである場合に、メッセージ発行要求タイミングが到来すると、メッセージの発行要求を表す信号として「１」をリクエスト調停制御部１１３へ出力する。
【００６６】
ＡＮＤ回路１２３は、比較器１２２から出力された信号を反転させた信号の入力を受ける。また、ＡＮＤ回路１２３は、メッセージ発行要求タイミングの信号の入力を入力経路１２９から受ける。そして、ＡＮＤ回路１２３は、入力された信号の論理積を出力する。すなわち、ＡＮＤ回路１２３は、宛先ＣＰＵが有効ＣＰＵである場合に、メッセージ発行要求タイミングが到来すると、値が１の信号をステータスレジスタ１２０へ出力し、ステータスレジスタ１２０に無効ステータスを登録する。
【００６７】
このように、メッセージ送信制御１１２は、専用線１２５を用いてｏｗｎ  ｂｉｔの値をリクエスト調停制御部１１３へ出力し、且つ、ＡＮＤ回路１２３からの信号をリクエスト調停制御部１１３へ出力する。これにより、リクエスト調停制御部１１３は、メッセージの発行要求に同期して発行されたｏｗｎ  ｂｉｔの値によりメッセージの宛先がＣＰＵ１０１宛かＣＰＵ２０１宛かを決定できる。
【００６８】
図７は、リクエスト調停用回路の一例を表す図である。図７に示すリクエスト調停用回路１３０は、リクエスト調停制御部１１３及び２１１の各機能をまとめて実現するための回路である。実際には、リクエスト調停制御部１１３及び２１１ともに同様の回路を有するので、ここでは、リクエスト調停制御部１１３を例に説明する。
【００６９】
リクエスト調停制御部１１３は、リクエスト調停用回路１３０を有する。リクエスト調停用回路１３０は、選択回路１３１、並びに、調停回路１３２及び１３３を有する。
【００７０】
選択回路１３１は、ｏｗｎ  ｂｉｔが付加されたメッセージの送信要求の入力をメッセージ送信制御部１１２から受ける。そして、選択回路１３１は、ｏｗｎ  ｂｉｔが０であれば、メッセージの発行要求を調停回路１３２へ出力する。これに対して、ｏｗｎ  ｂｉｔが１であれば、選択回路１３１は、メッセージの発行要求を調停回路１３３へ出力する。
【００７１】
調停回路１３２は、ｏｗｎ  ｂｉｔが０のメッセージの発行要求の入力を選択回路１３１から受ける。また、調停回路１３２は、ＣＰＵ２０１を含む他のＣＰＵに対する要求の入力を演算処理部１１１から受ける。そして、調停回路１３２は、入力された要求の調停を行い、要求を選択する。その後、調停回路１３２は、調停により選択した要求の出力をルータ１１６へ送信する。
【００７２】
調停回路１３３は、ｏｗｎ  ｂｉｔが１のメッセージの発行要求の入力を選択回路１３１から受ける。また、調停回路１３３は、ＣＰＵ２０１から送信されたメッセージの発行要求の入力をルータ１１６から受ける。また、調停回路１３３は、レジスタに対する読み出し書き込みなどのＣＰＵ１０１に対する要求の入力を演算処理部１１１から受ける。そして、調停回路１３３は、入力された要求の調停を行い、要求を選択する。その後、調停回路１３３は、調停により選択した要求の出力をメッセージ受信制御部１１４へ送信する。
【００７３】
このように、リクエスト調停用回路１３０は、メッセージの発行要求のｏｗｎ  ｂｉｔの値及びメッセージの発行要求の入力元によって、メッセージの発行要求の出力であるメッセージの送信先を変更する。具体的には、リクエスト調停制御部１１３は、図８のテーブル５０１に示すようにメッセージの送信先を決定する。図８は、リクエスト調停制御部の動作を示す図である。
【００７４】
すなわち、リクエスト調停制御部１１３は、メッセージの発行要求の入力元がメッセージ送信制御部１１２の場合、ｏｗｎ  ｂｉｔが０であればルータ１１６へメッセージを送信する。また、ｏｗｎ  ｂｉｔが１であれば、リクエスト調停制御部１１３は、メッセージ受信制御部１１４へメッセージを送信する。また、メッセージの発行要求の入力元がルータ１１６の場合、リクエスト調停制御部１１３は、ｏｗｎ  ｂｉｔの値に関わらず、メッセージ受信制御部１１４へメッセージを送信する。このように、ｏｗｎ  ｂｉｔ又は入力元を基に送信先を決定することが、「宛先情報又は送信情報の入力元の情報を基に送信先を決定」することの一例にあたる。
【００７５】
図９は、応答調停用回路の一例を表す図である。図９に示す応答調停用回路１５０は、応答調停制御部１１５及び２１３の各機能をまとめて実現するための回路である。実際には、応答調停制御部１１５及び２１３ともに同様の回路を有するので、ここでは、応答調停制御部１１５を例に説明する。
【００７６】
応答調停制御部１１５は、応答調停用回路１５０を有する。応答調停回路１５０は、選択回路１５１、並びに、調停回路１５２及び１５３を有する。
【００７７】
選択回路１５１は、ｏｗｎ  ｂｉｔが付加されたメッセージ応答の入力をメッセージ送信制御部１１２から受ける。そして、選択回路１３１は、ｏｗｎ  ｂｉｔが０であれば、メッセージ応答を調停回路１５２へ出力する。これに対して、ｏｗｎ  ｂｉｔが１であれば、選択回路１５１は、メッセージ応答を調停回路１５３へ出力する。
【００７８】
調停回路１５２は、ｏｗｎ  ｂｉｔが０のメッセージ応答の入力を選択回路１５１から受ける。また、調停回路１５２は、ＣＰＵ２０１を含む他のＣＰＵに対する要求の入力を演算処理部１１１から受ける。そして、調停回路１５２は、入力された要求の調停を行い、要求を選択する。その後、調停回路１５２は、調停により選択した要求の出力をルータ１１６へ送信する。
【００７９】
調停回路１５３は、ｏｗｎ  ｂｉｔが１のメッセージの発行要求の入力を選択回路１５１から受ける。また、調停回路１５３は、ＣＰＵ２０１から送信されたメッセージ応答の入力をルータ１１６から受ける。また、調停回路１５３は、レジスタに対する読み出し書き込みなどのＣＰＵ１０１に対する要求の入力を演算処理部１１１から受ける。そして、調停回路１５３は、入力された要求の調停を行い、要求を選択する。その後、調停回路１５３は、調停により選択した要求の出力をメッセージ受信制御部１１４へ送信する。
【００８０】
このように、応答調停用回路１５０は、メッセージ応答のｏｗｎ  ｂｉｔの値及びメッセージ応答の入力元によって、メッセージ応答の送信先を変更する。具体的には、応答調停制御部１１５は、図１０のテーブル５０２に示すようにメッセージ応答の送信先を決定する。図１０は、応答調停制御部の動作を示す図である。
【００８１】
すなわち、応答調停制御部１１５は、メッセージ応答の入力元がメッセージ受信制御部１１４の場合、ｏｗｎ  ｂｉｔが０であればルータ１１６へメッセージ応答を送信する。また、ｏｗｎ  ｂｉｔが１であれば、応答調停制御部１１５は、メッセージ送信制御部１１２へメッセージ応答を送信する。また、メッセージ応答求の入力元がルータ１１６の場合、応答調停制御部１１５は、ｏｗｎ  ｂｉｔの値に関わらず、メッセージ送信制御部１１２へメッセージ応答を送信する。このように、応答調停制御部１１５がｏｗｎ  ｂｉｔ又は入力元を基に処理を決定することが、「応答通知に付加された宛先情報又は応答通知の入力元の情報を基に、応答通知を他の情報処理装置へ送信又は受信結果格納部に格納させる」ことの一例にあたる。
【００８２】
次に、図１１を参照して、本実施例に係るメッセージ通信における処理の流れについて説明する。図１１は、実施例に係るメッセージ通信における処理のフローチャートである。ここでは、ＣＰＵ１０１がメッセージを送信する場合で説明する。
【００８３】
演算処理部１１１は、メッセージの発行要求をメッセージ送信制御部１１２へ出力する（ステップＳ１０１）。
【００８４】
メッセージ送信制御部１１２は、メッセージの発行要求に含まれる宛先ＣＰＵＩＤを用いてメッセージの宛先をチェックする（ステップＳ１０２）。
【００８５】
そして、メッセージ送信制御部１１２は、メッセージの宛先が自ＣＰＵ、すなわちＣＰＵ１０１であるか否かを判定する（ステップＳ１０３）。宛先が自ＣＰＵの場合（ステップＳ１０３：肯定）、メッセージ送信制御部１１２は、自ＣＰＵ宛フラグとして値が１のｏｗｎ  ｂｉｔを付加してメッセージの発行要求をリクエスト調停制御部１１３へ出力する（ステップＳ１０４）。
【００８６】
一方、宛先が他ＣＰＵであるＣＰＵ２０１の場合（ステップＳ１０３：否定）、メッセージ送信制御部１１２は、他ＣＰＵ宛フラグとして値が０のｏｗｎ  ｂｉｔを付加してメッセージの発行要求をリクエスト調停制御部１１３へ出力する（ステップＳ１０５）。
【００８７】
リクエスト調停制御部１１３は、メッセージの発行要求の入力をメッセージ送信制御部１１２から受ける。そして、リクエスト調停制御部１１３は、要求の調停を行いメッセージの発行要求を選択した場合、メッセージ発行許可をメッセージ送信制御部１１２へ送信する（ステップＳ１０６）。
【００８８】
メッセージ送信制御部１１２は、メッセージ発行許可を受信すると、メッセージをリクエスト調停制御部１１３へ発行する（ステップＳ１０７）。
【００８９】
リクエスト調停制御部１１３は、メッセージの入力をメッセージ送信制御部１１２から受ける。そして、リクエスト調停制御部１１３は、メッセージに付加されたｏｗｎ  ｂｉｔの値が１（ｏｗｎ  ｂｉｔ＝１）か否かを判定する（ステップＳ１０８）。
【００９０】
ｏｗｎ  ｂｉｔの値が１の場合（ステップＳ１０８：肯定）、リクエスト調停制御部１１３は、メッセージをメッセージ受信制御部１１４へ出力する。すなわち、リクエスト調停制御部１１３は、自ＣＰＵへメッセージを送信する（ステップＳ１０９）。
【００９１】
メッセージ受信制御部１１４は、メッセージの入力をリクエスト調停制御部１１３から受ける。そして、メッセージ受信制御部１１４は、取得したメッセージをメッセージ格納部３０１に格納する（ステップＳ１１０）。
【００９２】
その後、メッセージ受信制御部１１４は、自ＣＰＵ宛てフラグである値が１のｏｗｎ  ｂｉｔを付加したメッセージ応答を発行する（ステップＳ１１１）。
【００９３】
応答調停制御部１１５は、メッセージ応答の入力をメッセージ受信制御部１１４から受ける。そして、応答調停制御部１１５は、取得したメッセージ応答に付加されたｏｗｎ  ｂｉｔの値が１であることを確認する（ステップＳ１１２）。
【００９４】
一方、メッセージのｏｗｎ  ｂｉｔの値が０の場合（ステップＳ１０８：否定）、リクエスト調停制御部１１３は、メッセージをルータ１１６へ出力し、他ＣＰＵであるＣＰＵ２０１へ送信する（ステップＳ１１３）。
【００９５】
リクエスト調停制御部２１３は、ＣＰＵ１０１から送信されたメッセージの処理要求を受信する。そして、リクエスト調停制御部２１３は、各要求の調停を行いメッセージの処理要求を選択した場合、メッセージをメッセージ受信制御部２１４へ出力する（ステップＳ１１４）。
【００９６】
メッセージ受信制御部２１４は、メッセージの入力をリクエスト調停制御部２１３から受ける。そして、メッセージ受信制御部２１４は、取得したメッセージをメッセージ格納部３０２に格納する（ステップＳ１１５）。
【００９７】
その後、メッセージ受信制御部２１４は、他ＣＰＵ宛てフラグである値が０のｏｗｎ  ｂｉｔを付加したメッセージ応答を発行する（ステップＳ１１６）。
【００９８】
応答調停制御部２１５は、メッセージ応答の入力をメッセージ受信制御部２１４から受ける。そして、応答調停制御部２１５は、ｏｗｎ  ｂｉｔの値が０であることを確認し、ルータ２１６へメッセージ応答を送信する（ステップＳ１１７）。
【００９９】
応答調停制御部１１５は、応答調停制御部２１５から送出されたメッセージ応答の入力をルータ１１６から受ける。そして、応答調停制御部１１５は、入力元がルータ１１６であることを確認する（ステップＳ１１８）。
【０１００】
応答調停制御部１１５は、ステップＳ１１１でｏｗｎ  ｂｉｔの値が１であることを確認した場合又はステップＳ１１７で入力元がルータ１１６であることを確認した場合、メッセージ応答をメッセージ送信制御部１１２へ出力する（ステップＳ１１９）。
【０１０１】
メッセージ送信制御部１１２は、メッセージ応答の入力を応答調停制御部１１５から受ける。そして、メッセージ送信制御部１１２は、メッセージ応答に含まれる受信ステータスをステータスレジスタ１２０へ登録する（ステップＳ１２０）。
【０１０２】
以上に説明したように、本実施例に係る本実施例に係る情報処理装置は、自装置宛であるか他の情報処理装置宛であるかを表す情報を付加してメッセージを発行する。これにより、自装置宛である場合、メッセージを自装置内で回すことができ、他の情報処理装置宛である場合、宛先の他の情報処理装置へメッセージを送信することができる。したがって、ノード内の１つのＣＰＵ上で複数設定されたドメイン間において、メッセージ通信を行うことが可能になり、メッセージ通信を行うにあたり、ドメイン構成の柔軟性を維持することができる。
【０１０３】
ここで、以上の説明では、自装置内のメッセージ通信として、仮想ドメイン間、すなわち同一ＣＰＵ内のコア間でのメッセージ通信を例に説明したが、これに限らず、例えば、同一ノード内の異なるＣＰＵ間の通信であってもよい。
【符号の説明】
【０１０４】
１  情報処理システム
２  グローバルＸＢ
１１，１２  ノード
１０１，２０１  ＣＰＵ
１０２，２０２  メモリ
１０３，２０３  ローカルＸＢ
１０４Ａ，１０４Ｂ  コア
１１１  演算処理部
１１２  メッセージ送信制御部
１１３  リクエスト調停制御部
１１４  メッセージ受信制御部
１１５  応答調停制御部
１１６  ルータ
１２０  ステータスレジスタ
１２１，１２２  比較器
１２５  専用線
１２６  宛先ＣＰＵＩＤの入力経路
１２７  ＣＰＵ１０１のＩＤの入力経路
１２８  有効ＣＰＵのＩＤの入力経路
１２９  メッセージの発行要求タイミングの信号の入力経路
２１１  演算処理部
２１２  メッセージ送信制御部
２１３  リクエスト調停制御部
２１４  メッセージ受信制御部
２１５  応答調停制御部
２１６  ルータ
２２０  ステータスレジスタ
３０１  メッセージ格納部
３０２  メッセージ格納部
【図１】
0006597286.tif 000002
【図２】
0006597286.tif 000003
【図３】
0006597286.tif 000004
【図４】
0006597286.tif 000005
【図５】
0006597286.tif 000006
【図６】
0006597286.tif 000007
【図７】
0006597286.tif 000008
【図８】
0006597286.tif 000009
【図９】
0006597286.tif 000010
【図１０】
0006597286.tif 000011
【図１１】
0006597286.tif 000012