(57)【要約】【課題】ネットワークにおけるパケットの転送中に所定の処理を実行する複数の処理装置を含む情報処理システムにおいて、端末から任意のプログラムを指定して処理を実行させることができるようにする。【解決手段】処理装置は、ネットワーク内で処理する複数の命令、前記命令の実行状況を示すコンテキスト情報、及び前記命令の処理対象となるデータを含むパケットを受信する受信部と、前記コンテキスト情報に基づいて、前記命令のうち少なくとも一部の命令の実行を制御する命令実行制御部と、を有する。【選択図】図３
2020150369.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク内で処理する複数の命令、前記命令の実行状況を示すコンテキスト情報、及び前記命令の処理対象となるデータを含むパケットを受信する受信部と、
前記コンテキスト情報に基づいて、前記命令のうち少なくとも一部の命令の実行を制御する命令実行制御部と、
を有する、処理装置。
【請求項２】
前記少なくとも一部の命令が実行された場合、前記少なくとも一部の命令を実行したことを示す前記コンテキスト情報、及び前記少なくとも一部の命令を実行した前記データを含む前記パケットを、転送先に送信するパケット転送部を有する、請求項１に記載の処理装置。
【請求項３】
前記命令実行制御部は、前記コンテキスト情報を用いて、前記命令のうち実行されていない命令を、命令実行部に順次に実行させる、請求項１又は２に記載の処理装置。
【請求項４】
前記命令実行制御部は、前記処理装置のリソースの使用状況に基づいて、前記命令実行部に前記命令を順次に実行させる処理を中止する、請求項３に記載の処理装置。
【請求項５】
前記命令実行制御部は、前記少なくとも一部の命令の実行を開始してからの経過時間に基づいて、前記命令実行部に前記命令を順次に実行させる処理を中止する、請求項３に記載の処理装置。
【請求項６】
ネットワーク内で処理する複数の命令、前記命令の実行状況を示すコンテキスト情報、及び前記命令の処理対象となるデータを含むパケットを転送する転送部と、
前記コンテキスト情報に基づいて、前記命令のうち少なくとも一部の命令の実行を制御する命令実行制御部と、を有する、
処理装置。
【請求項７】
ネットワーク内でパケットの転送処理を行うとともに、前記パケットに格納された命令を実行可能な複数の処理装置を含む情報処理システムであって、
前記処理装置のいずれか１つは、
前記ネットワーク内で処理する複数の命令、前記命令の実行状況を示すコンテキスト情報、及び前記命令の処理対象となるデータを含む前記パケットを受信する受信部または
前記複数の処理装置のうち、１つ以上の処理装置に前記パケットを転送する転送部のいずれか１つと、
前記コンテキスト情報に基づいて、前記命令のうち少なくとも一部の命令の実行を制御する命令実行制御部と、
を備える、情報処理システム。
【請求項８】
コンピュータが、
ネットワーク内で処理する複数の命令、前記命令の実行状況を示すコンテキスト情報、及び前記命令の処理対象となるデータを含むパケットを受信する処理と、
前記コンテキスト情報に基づいて、前記命令のうち少なくとも一部の命令の実行を制御する処理と、
を実行する、情報処理方法。
【請求項９】
請求項８に記載の情報処理方法をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置、情報処理システム、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
ネットワークにおけるパケットの転送中に計算を行うＩｎ−ｎｅｔｗｏｒｋ Ｃｏｍｐｕｔｉｎｇが注目されている。Ｉｎ−ｎｅｔｗｏｒｋ Ｃｏｍｐｕｔｉｎｇでは、例えば、転送するパケットが、演算機能を有するノード（処理装置）上において、パケットが要求する順番で処理が行われるようにネットワークが制御される。
【０００３】
また、識別装置が、パケットに適用するサービス機能を識別して、パケットに識別子（ＮＳＨ：Network Service Header）を付与し、転送装置が、識別子を参照してパケットをサービス機能等に転送するサービスチェイニングシステムが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−１２９７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のようなサービスチェイニングシステムでは、例えば、ＮＳＨヘッダに要求する演算のＩＤを記載することにより、当該演算を実行可能な演算ノードに対してパケットの転送が行われ、当該演算が実行される。
【０００６】
ただし、この方法は、演算ノードが特定の演算機能を予め有していることが前提となっており、例えば、端末から任意のプログラムをネットワーク上で実行したい場合等には適用することができないという問題がある。
【０００７】
本発明の一実施形態は、上記の問題点に鑑みてなされたものであって、ネットワークにおけるパケットの転送中に所定の処理を実行する複数の処理装置を含む情報処理システムにおいて、端末から任意のプログラムを指定して処理を実行させることができるようにする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明の一実施形態に係る処理装置は、ネットワーク内で処理する複数の命令、前記命令の実行状況を示すコンテキスト情報、及び前記命令の処理対象となるデータを含むパケットを受信する受信部と、前記コンテキスト情報に基づいて、前記命令のうち少なくとも一部の命令の実行を制御する命令実行制御部と、を有する。
【発明の効果】
【０００９】
本発明の一実施形態によれば、ネットワークにおけるパケットの転送中に所定の処理を実行する複数の処理装置を含む情報処理システムにおいて、端末から任意のプログラムを指定して処理を実行させることができるようになる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係る情報処理システムのシステム構成の例を示す図である。
【図２】一実施形態に係る処理装置のハードウェア構成の例を示す図である。
【図３】一実施形態に係る処理装置の機能構成の例を示す図である。
【図４】第１の実施形態に係るパケットに含まれる情報について説明するための図である。
【図５】第１の実施形態に係るパケット解釈部の処理の例を示す図である。
【図６】第１の実施形態に係る命令実行制御部の処理の例を示す図を示すフローチャートである。
【図７】第１の実施形態に係る情報処理システムの動作の例について説明するための図である。
【図８】第２の実施形態に係る処理装置の機能構成の例を示す図である。
【図９】第２の実施形態に係るパケットの構成例を示す図である。
【図１０】第２の実施形態に係る命令実行制御部の処理の例を示すフローチャートである。
【図１１】第２の実施形態に係るメモリアクセス部の処理の例を示すフローチャートである。
【図１２】第２の実施形態に係る処理システムの動作の例について説明するための図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１２】
＜システム構成＞
図１は、一実施形態に係る情報処理システムの構成の例を示す図である。情報処理システム１００は、ネットワークＮＷ内に設けられた複数の処理装置（第１の処理装置１０１−１、第２の処理装置１０１−２、第３の処理装置１０１−３、第４の処理装置１０１−４）、及び複数の端末（第１の端末１０２−１、第２の端末１０２−２）を含む。なお、以下の説明において、複数の処理装置（第１の処理装置１０１−１、第２の処理装置１０１−２、第３の処理装置１０１−３、第４の処理装置１０１−４）のうち、任意の処理装置を示す場合、「処理装置１０１」を用いる。また、複数の端末（第１の端末１０２−１、第２の端末１０２−２）のうち、任意の端末を示す場合、「端末１０２」を用いる。
【００１３】
なお、図１に示す処理装置１０１の数は一例であり、処理装置１０１の数は、２つ以上の他の数であっても良い。また、図１に示す端末１０２の数は一例であり、端末１０２の数は、１つ以上の他の数であっても良い。さらに、図１に示すネットワークＮＷのトポロジは一例であり、処理装置１０１間の接続関係は図１と異なる接続関係であっても良い。
【００１４】
また、ここでは、ネットワークＮＷ内におけるデータ転送経路が、所定の経路選択アルゴリズムにより、各処理装置１０１、又は経路選択装置等によって決定され、各処理装置１０１のルーティングテーブルに記憶されているものとして以下の説明を行う。
【００１５】
処理装置１０１は、ネットワークＮＷ内でパケット（データの一例）の転送処理を行うとともに、パケットに格納された命令を実行可能なコンピュータの構成を有する機器、又は情報処理装置である。ここでは、一例として、処理装置１０１が、ネットワークＮＷ内でパケットの転送処理を行うスイッチであるものとして以下の説明を行う。ただし、これに限られず、処理装置は、サーバ装置や情報端末等であっても良い。
【００１６】
端末１０２は、ネットワークＮＷ内で処理する複数の命令、複数の命令の実行状況を示すコンテキスト情報、及び複数の命令の処理対象となるデータ等を含むパケットを、処理装置１０１に送信する情報処理装置である。端末１０２の具体的な例として、例えば、ＰＣ（Personal Computer）、スマートフォン、タブレット端末等の情報端末、ロボットや自動車等の機器、サーバ装置等をあげることができる。また、端末１０２は処理装置１０１を兼ねてデータの処理を行う機能を有してもよく、処理を行わないがパケットを生成する機能を有していてもよい。
【００１７】
例えば、図１において、第１の端末１０２−１は、ネットワークＮＷ内で処理する複数の命令、複数の命令の実行状況を示すコンテキスト情報、及び複数の命令の処理対象となるデータ等を含むパケットを、ネットワークＮＷを介して第２の端末１０２−２に送信するものとする。
【００１８】
これにより、第１の処理装置１０１−１は、第１の端末１０２−１から送信されたパケットを受信し、第１の処理装置１０１−１で処理すべきパケットでない場合、転送先の他の処理装置（例えば、第２の処理装置１０１−２）にパケットを転送する。
【００１９】
一方、受信したパケットが第１の処理装置１０１−１で処理すべきパケットである場合、第１の処理装置１０１−１は、パケットに含まれるコンテキスト情報に基づいて、パケットに含まれる複数の命令のうち、少なくとも一部の命令を実行する。また、第１の処理装置１０１−１は、少なくとも一部の命令を実行した場合、少なくとも一部の命令を実行したことを示すコンテキスト情報、及び少なくとも一部の命令を実行したデータを含むパケットを、例えば、第２の処理装置１０１−２に送信する。
【００２０】
また、第２の処理装置１０１−２は、第１の処理装置１０１−１から受信したパケットが、第２の処理装置１０１−２で処理すべきパケットである場合、第１の処理装置１０１−１と同様にして、パケットに含まれる複数の処理のうち、少なくとも一部の処理を実行する。また、第２の処理装置１０１−２は、少なくとも一部の命令を実行した場合、少なくとも一部の命令を実行したことを示すコンテキスト情報、及び少なくとも一部の命令を実行したデータを含むパケットを、例えば、第２の端末１０２−２に送信する。例えば、第２の端末１０２−２は、受信したパケットに含まれるコンテキスト情報に基づいて、パケットに含まれる複数の命令のうち、実行されていない命令を順次に実行する。
【００２１】
このように、本実施形態に係る情報処理システム１００では、第１の端末１０２−１から、第２の端末１０２−２に、ネットワークＮＷを介してパケットを送信することにより、パケットに含まれる複数の処理の一部、又は全部がネットワークＮＷ内で実行される。
【００２２】
＜ハードウェア構成＞
（処理装置のハードウェア構成）
図２は、一実施形態に係る処理装置のハードウェア構成の例を示している。処理装置１０１は、例えば、ＣＰＵ（Central Processing Unit）２０１、メモリ２０２、ストレージデバイス、複数の通信Ｉ／Ｆ（Interface）（第１の通信Ｉ／Ｆ２０４−１、第２の通信Ｉ／Ｆ２０４−２、・・・）、及びバス２０５等を含む。なお、以下の説明において、第１の通信Ｉ／Ｆ２０４−１、第２の通信Ｉ／Ｆ２０４−２、・・・のうち、任意の通信Ｉ／Ｆを示す場合、「通信Ｉ／Ｆ２０４」を用いる。
【００２３】
ＣＰＵ２０１は、例えば、ストレージデバイス２０３、メモリ２０２等に格納されたプログラムを実行することにより、処理装置１０１の機能を実現する演算装置である。メモリ２０２には、例えば、ＣＰＵ２０１のワークエリア等として用いられる揮発性のメモリであるＲＡＭ（Random Access Memory）、処理装置１０１の起動用のプログラム等を記憶した不揮発性のメモリであるＲＯＭ（Read Only Memory）等が含まれる。ストレージデバイス２０３は、例えば、ＯＳ（Operating System）、アプリケーション、データ等を記憶するＳＳＤ（Solid State Drive）、フラッシュＲＯＭ等の大容量の記憶装置である。
【００２４】
複数の通信Ｉ／Ｆ２０４には、例えば、他の処理装置１０１や端末１０２等とＬＡＮ（Local Area Network）通信、ＷＡＮ（Wide Area Network）通信等を行うためのＮＩＣ（Network Interface Card）、通信モジュール等が含まれる。
【００２５】
なお、図２に示す処理装置１０１のハードウェア構成は一例である。処理装置１０１は、例えば、表示装置、入力装置等の様々なハードウェアをさらに有していても良い。また、処理装置１０１がスイッチ（ネットワークスイッチ）である場合、処理装置１０１は、ハードウェアでパケット転送処理を行うＡＳＩＣ（Application Specific Integrated Circuit）等をさらに有していても良い。
【００２６】
［第１の実施形態］
続いて、第１の実施形態に係る処理装置１０１の機能構成について説明する。
【００２７】
＜機能構成＞
図３は、第１の実施形態に係る処理装置の機能構成の例を示す図である。処理装置１０１は、例えば、パケット解釈部３０１、命令実行制御部３０２、命令実行部３０３、パケット転送部（転送部の一例）３０４、ルーティングテーブル３０５、及びインタフェース部３０６等を有する。
【００２８】
パケット解釈部３０１は、例えば、図２のＣＰＵ２０１で実行されるプログラム、又は前述したパケット転送処理を行うＡＳＩＣ等によって実現される。パケット解釈部３０１は、インタフェース部３０６が受信したパケットが、処理装置１０１の処理対象となるパケットであるか否かを判断し、処理装置１０１の処理対象となるパケットを命令実行制御部３０２に送る。なお、パケット解釈部３０１は、ネットワークＮＷ内で処理する複数の命令、命令の実行状況を示すコンテキスト情報、及び命令の処理対象となるデータを含むパケットを受信する受信部の一例である。
【００２９】
また、パケット解釈部３０１は、処理装置１０１の処理対象ではないパケットを、パケット転送部３０４に送信する。例えば、パケット解釈部３０１は、パケットに含まれる「送信先」、「識別子」等の情報を用いて、パケットが、処理装置１０１の処理対象となるパケットであるか否かを判断する。
【００３０】
図４は、第１の実施形態に係るパケットに含まれる情報について説明するための図である。図４（Ａ）は、第１の実施形態に係るパケット４００に含まれる情報の一例を視覚的に示している。図４（Ａ）の例では、パケット４００には、例えば、送信先４０１、送信元４０２、命令列４０３、コンテキスト情報４０４、データ領域４０５等が含まれる。
【００３１】
送信先４０１は、パケット４００の送信先を示す情報であり、例えば、送信先のＩＰ（Internet Protocol）アドレス等が用いられる。送信元４０２は、パケット４００の送信元を示す情報であり、例えば、送信元のＩＰアドレス等が用いられる。
【００３２】
命令列４０３には、ネットワークＮＷ内で処理する複数の命令が格納される。この複数の命令には、例えば、命令実行部３０３で実行可能な命令、実行終了を示すＥＯＦ（End Of File）等が含まれる。
【００３３】
コンテキスト情報４０４には、命令列４０３に格納される複数の命令の実行状況を示す情報（例えば、オフセット値等）が格納される。データ領域４０５には、パケット４００の処理対象となるデータが格納される。
【００３４】
図４（Ｂ）は、第１の実施形態に係るパケット４００に含まれる情報の別の一例を視覚的に示している。図４（Ｂ）の例では、パケット４００には、図４（Ａ）に示すパケット４００に含まれる各情報に加えて、識別子４１１の情報が含まれる。識別子４１１は、パケット４００が、処理装置１０１の処理対象のパケットであることを示す予め定められた識別情報である。
【００３５】
なお、図４（Ａ）、（Ｂ）において、各情報が格納される順序は一例である。例えば、命令列４０３、コンテキスト情報４０４、及びデータ領域４０５は、パケット４００のペイロード４０６に格納されるが、各情報が格納される順序は、図４（Ａ）、（Ｂ）とは異なる順序に定められていても良い。
【００３６】
図４（Ｂ）の例では、パケット解釈部３０１は、パケット４００に識別子４１１が含まれている場合、パケット４００が、処理装置１０１の処理対象であると判断することができる。また、パケット解釈部３０１は、パケット４００に識別子４１１が含まれていない場合、パケット４００が、処理装置１０１の処理対象ではないと判断することができる。
【００３７】
図４（Ａ）の例では、パケット解釈部３０１は、例えば、送信先４０１の情報を用いて、パケット４００が、処理装置１０１の処理対象であるか否かを判断することができる。
【００３８】
例えば、図１に示す情報処理システム１００において、第１の端末１０２−１から第２の端末１０２−２に対して、パケット４００を送信するものとする。この場合、例えば、第２の端末１０２−２に、送信先４０１の情報として、通常の通信用のＩＰアドレス等のアドレス（以下、第１のアドレスと呼ぶ）と、処理実行用のＩＰアドレス等のアドレス（以下、第２のアドレスと呼ぶ）の複数の識別子を設定しておく。そして、第１の端末１０２−１は、第２の端末１０２−２に対して、図４（Ａ）に示すパケット４００を送信する場合、送信先４０１に、第２のアドレスを設定して、パケット４００をネットワークＮＷに送信する。これにより、パケット解釈部３０１は、パケット４００の送信先４０１に、第２のアドレスが設定されている場合、パケット４００が、処理装置１０１の処理対象であると判断することができる。また、パケット解釈部３０１は、パケット４００の送信先４０１に、第２のアドレスが設定されていない場合、パケット４００が、処理装置１０１の処理対象ではないと判断することができる。なお、送信先４０１の指定は、適切に宛先や処理装置を設定できる方法で行われればよく、上述のようにＩＰアドレスを用いるほか、ＭＡＣアドレスやＭＰＬＳラベルを利用してもよい。
【００３９】
ここで、図３に戻り、処理装置１０１の機能構成の説明を続ける。
【００４０】
命令実行制御部３０２は、例えば、図２のＣＰＵ２０１で実行されるプログラムによって実現され、パケット解釈部３０１から受信したパケット４００のコンテキスト情報４０４に基づいて、命令列４０３に格納された複数の命令のうち、少なくとも一部の命令の実行を制御する。
【００４１】
例えば、命令実行制御部３０２は、コンテキスト情報４０４に含まれるオフセット値が示す、次に実行すべき命令を抽出し、抽出した命令と、データ領域４０５に格納されたデータを命令実行部３０３に渡して、命令を実行させる。また、命令実行制御部３０２は、命令実行部３０３で命令が実行された場合、命令の実行結果を用いてデータ領域４０５を更新し、コンテキスト情報４０４のオフセット値を更新する。
【００４２】
このようにして、命令実行制御部３０２は、パケット４００のコンテキスト情報４０４を用いて、命令列４０３に格納された複数の命令のうち、実行されていない命令を、命令実行部３０３に順次に実行させる。命令実行制御部３０２は、この処理を、オフセット値がＥＯＦになるまで、或いは、プログラムの実行を継続すべきでないと判断するまで、繰り返し実行する。
【００４３】
また、命令実行制御部３０２は、例えば、リソースの使用状況や、命令の実行を開始してからの経過時間等に基づいて、プログラムの実行を継続すべきであるか否かを判断し、プログラムの実行を継続すべきでない場合、命令実行部３０３に命令を順次に実行させる処理を中止する。
【００４４】
例えば、命令実行制御部３０２は、処理装置１０１のＣＰＵ２０１の使用率、メモリの使用量等の値が、しきい値を超えた場合、プログラムの実行を継続すべきでないと判断する。或いは、命令実行制御部３０２は、命令の実行を開始してからの経過時間が、しきい値を超えた場合、プログラムの実行を継続すべきでないと判断するものであっても良い。さらに、命令実行制御部３０２は、他の手法により、プログラムの実行を継続すべきでない、またはプログラムを他の処理装置に実行させるべきと判断するものであっても良い。
【００４５】
命令実行部３０３は、例えば、図２のＣＰＵ２０１、又はＣＰＵ２０１で実行されるプログラム等によって実現され、命令実行制御部３０２からの制御に応じて、命令を実行する。
【００４６】
パケット転送部３０４は、例えば、図２のＣＰＵで実行されるプログラム等によって実現される。パケット転送部３０４は、パケット解釈部３０１から受け付けたパケット、命令実行制御部３０２から受け付けたパケット等を、予め設定されたルーティングテーブル３０５や、ルーティングルール等に基づいて、転送先の処理装置１０１又は端末１０２に送信する。
【００４７】
ルーティングテーブル３０５は、例えば、図２のＣＰＵ２０１で実行されるプログラム、及びストレージデバイス２０３、メモリ２０２等によって実現され、所定の経路選択アルゴリズム等により決定されたデータ転送経路が記憶されている。なお、本実施形態では、データ転送経路の決定方法は任意の方法であって良いので、データ転送経路の決定方法に関する説明は省略する。
【００４８】
インタフェース部３０６は、例えば、図２のＣＰＵ２０１で実行されるプログラム、及び通信Ｉ／Ｆ２０４等によって実現され、他の処理装置１０１や端末１０２等との間でパケットの送受信を行う。
【００４９】
なお、図３に示す処理装置１０１の機能構成は一例である。例えば、パケット解釈部３０１の機能は、パケット転送部３０４が有していても良い。また、パケット転送部３０４の機能は、パケット解釈部３０１が有していても良い。
【００５０】
また、命令実行部３０３は、命令実行制御部３０２に含まれていても良いし、処理装置１０１の外部に設けられていても良い。
【００５１】
＜処理の流れ＞
続いて、第１の実施形態に係る処理装置１０１が実行する処理の流れについて説明する。
【００５２】
（パケット解釈部の処理）
図５は、第１の実施形態に係るパケット解釈部の処理の例を示すフローチャートである。この処理は、処理装置１０１のインタフェース部３０６がパケットを受信したときに、パケット解釈部３０１が実行する処理の例を示している。
【００５３】
ステップＳ５０１において、パケット解釈部３０１は、インタフェース部３０６が受信したパケットが、処理装置１０１の処理対象となるパケットであるか否かを判断する。
【００５４】
例えば、処理装置１０１の処理対象となるパケットが、図４（ａ）に示すような情報を含むパケットであるものとする。この場合、パケット解釈部３０１は、受信したパケットの送信先４０１に、前述した第２のアドレス（例えば、処理実行用のＩＰアドレス）が設定されているとき、受信したパケットが、処理装置１０１の処理対象となるパケットであると判断する。一方、パケット解釈部３０１は、受信したパケットの送信先４０１に、前述した第２のアドレスが設定されていないとき、受信したパケットが、処理装置１０１の処理対象となるパケットではないと判断する。
【００５５】
また、別の一例として、処理装置１０１の処理対象となるパケットが、図４（ｂ）に示すような情報を含むパケットであるものとする。この場合、パケット解釈部３０１は、受信したパケットに、前述した識別子４１１が含まれているとき、受信したパケットが、処理装置１０１の処理対象となるパケットであると判断する。一方、パケット解釈部３０１は、受信したパケットに、前述した識別子４１１が含まれていないとき、受信したパケットが、処理装置１０１の処理対象となるパケットではないと判断する。
【００５６】
受信したパケットが、処理装置１０１の処理対象となるパケットでない場合、パケット解釈部３０１は、処理をステップＳ５０２に移行させる。一方、受信したパケットが、処理装置１０１の処理対象となるパケットである場合、パケット解釈部３０１は、処理をステップＳ５０３に移行させる。
【００５７】
ステップＳ５０２に移行すると、パケット解釈部３０１は、インタフェース部３０６が受信したパケットを、パケット転送部３０４に送る。これにより、パケット転送部３０４は、当該パケットを、転送先に送信する。
【００５８】
一方、ステップＳ５０３に移行すると、パケット解釈部３０１は、インタフェース部３０６が受信した、処理装置１０１の処理対象となるパケット４００を、命令実行制御部３０２に送る。
【００５９】
（命令実行制御部の処理）
図６は、第１の実施形態に係る命令実行制御部の処理の例を示すフローチャートである。この処理は、例えば、図５のステップＳ５０３において、パケット解釈部３０１が、パケット４００を命令実行制御部３０２に送ったときに、命令実行制御部３０２が実行する処理の例を示している。
【００６０】
ステップＳ６０１において、命令実行制御部３０２は、パケット解釈部３０１から受け付けたパケット４００のコンテキスト情報４０４から、オフセット値を取得する。
【００６１】
ステップＳ６０２において、命令実行制御部３０２は、取得したオフセット値がＥＯＦ（終端を示す符号）であるか否かを判断する。
【００６２】
オフセット値がＥＯＦである場合、命令実行制御部３０２は、処理をステップＳ５０７に移行させて、パケット４００をパケット転送部３０４に送る。これにより、パケット転送部３０４は、当該パケットを、転送先に送信する。
【００６３】
一方、オフセット値がＥＯＦではない場合、命令実行制御部３０２は、処理をステップＳ６０３に移行させる。
【００６４】
ステップＳ６０３に移行すると、命令実行制御部３０２は、プログラムの実行を継続すべきか否かを判断する。例えば、命令実行制御部３０２は、処理装置１０１のＣＰＵ２０１の使用率、メモリの使用量等の値が、しきい値を超えた場合、プログラムの実行を継続すべきでないと判断しても良い。或いは、命令実行制御部３０２は、命令の実行を開始してからの経過時間が、しきい値を超えた場合、プログラムの実行を継続すべきでないと判断しても良い。
【００６５】
このような処理により、命令実行制御部３０２は、処理装置１０１の負荷が重く、自装置が処理のボトルネックとなる恐れがある場合、プログラムの実行を継続すべきでないと判断することが望ましい。ただし、これに限られず、命令実行制御部３０２は、他の手法により、プログラムの実行を継続すべきであるか否かを判断しても良い。
【００６６】
プログラムを継続すべきでないと判断した場合、命令実行制御部３０２は、処理をステップＳ６０７に移行させる。一方、プログラムを継続すべきと判断した場合、命令実行制御部３０２は、処理をステップＳ６０４に移行させる。
【００６７】
ステップＳ６０４に移行すると、命令実行制御部３０２は、オフセット値に基づいて、次に実行すべき命令を抽出する。例えば、命令実行制御部３０２には、パケット４００の命令列４０３に格納された複数の命令から、オフセット値に対応する命令を抽出する。
【００６８】
ステップＳ６０５において、命令実行制御部３０２は、抽出した命令と、データ領域４０５のデータとを命令実行部３０３に送り、命令実行部３０３に命令を実行させる。
【００６９】
ステップＳ６０６において、命令実行制御部３０２は、命令実行部３０３による実行結果に基づいて、パケット４００のデータ領域４０５、及びコンテキスト情報４０４のオフセット値を更新し、処理をステップＳ６０２に戻す。例えば、命令実行制御部３０２は、コンテキスト情報４０４のオフセット値をインクリメントし、命令実行部３０３による実行結果をデータ領域４０５に格納する。
【００７０】
上記の処理により、命令実行制御部３０２は、オフセット値がＥＯＦになるまで、或いは、プログラムを継続すべきでないと判断されるまで、命令列４０３に格納された複数の命令のうち実行されていない命令を、命令実行部３０３に順次に実行させる。
【００７１】
＜情報処理システムの動作の例＞
続いて、具体的な例をあげて、第１の実施形態に係る情報処理システム１００による情報処理方法の動作について説明する。
【００７２】
図７は、第１の実施形態に係る情報処理システムの動作の例について説明するための図である。ここでは、説明用の一例として、次の命令を用いる。
【００７３】
命令「mov $0, 1」は、データ「1」を、データ領域の「０」番地である「$0」にコピーする命令であるものとする。また、命令「mov $1, 2」は、データ「2」を、データ領域の「１」番地である「$1」にコピーする命令であるものとする。さらに、命令「add $0, $1」は、「$0」のデータと、「$1」のデータとを加算し、加算結果を「$0」に格納する命令であるものとする。
【００７４】
図７において、第１の端末１０２−１が、パケット７０１を第１の処理装置１０１−１に送信するものとする。
【００７５】
第１の処理装置１０１−１のパケット解釈部３０１は、パケット７０１を受信すると、処理対象のパケットであると判断し、パケット７０１を命令実行制御部３０２に送る。
【００７６】
第１の処理装置１０１−１の命令実行制御部３０２は、パケット７０１のコンテキスト情報からオフセット値「０」を取得し、最初の命令（オフセット値「０」の命令）である「mov $0, 1」を命令実行部３０３に実行させる。これにより、データ領域の「$0」に、データ「1」がコピーされ、コンテキスト情報のオフセット値が「１」にインクリメントされる。
【００７７】
続いて、第１の処理装置１０１−１の命令実行制御部３０２は、パケット７０１のコンテキスト情報からオフセット値「１」を取得し、次の命令（オフセット値「１」の命令）である「mov $1, 2」を命令実行部３０３に実行させる。これにより、データ領域の「$1」に、データ「2」がコピーされ、コンテキスト情報のオフセット値が「２」にインクリメントされる。
【００７８】
ここで、説明用の一例として、第１の処理装置１０１−１の命令実行制御部３０２は、例えば、処理装置１０１の負荷が重く、プログラムの実行を継続すべきでないと判断するものとする。これにより、第１の処理装置１０１−１のパケット転送部３０４は、パケット７０２を転送先（ここでは、第２の処理装置１０１−２）に送信する。
【００７９】
パケット７０２のコンテキスト情報は、第１の処理装置１０１−１で２つの命令が実行されたため、オフセット値が「２」に更新されている。また、データ領域の「$1」には、１つめの命令によりデータ「1」がコピーされ、データ領域の「$2」には、２つめの命令によりデータ「2」がコピーされている。
【００８０】
第２の処理装置１０１−２のパケット解釈部３０１は、パケット７０２を受信すると、処理対象のパケットであると判断し、パケット７０２を命令実行制御部３０２に送る。
【００８１】
第２の処理装置１０１−２の命令実行制御部３０２は、パケット７０２のコンテキスト情報からオフセット値「２」を取得し、３つ目の命令（オフセット値「２」の命令）である「add $0, $1」を命令実行部３０３に実行させる。これにより、データ領域の「$0」のデータ「1」と、データ領域の「$1」のデータ「2」とを加算したデータ「3」が、データ領域の「$0」に格納される。また、これにより、全ての命令が実行されたので、コンテキスト情報のオフセット値にＥＯＦが設定される。
【００８２】
これにより、第１の処理装置１０１−１のパケット転送部３０４は、パケット７０３を転送先（ここでは、第２の端末１０２−２）に送信する。
【００８３】
このように、本実施形態による情報処理システム１００では、第１の端末１０２−１から、ネットワークＮＷを介して、第２の端末１０２−２にパケットを送信することにより、パケットの送信中に複数の処理装置１０１を利用して、任意の処理を実行させることができる。
【００８４】
また、各処理装置１０１は、例えば、自装置の負荷が重い場合、処理途中であっても、転送先の他の処理装置１０１に、複数の命令の処理状況、処理途中のデータ等を含むパケットを転送し、処理を引き継ぐことができるので、複数の処理装置１０１に負荷を分散することができる。
【００８５】
［第２の実施形態］
第２の実施形態では、ネットワークＮＷ内で実行されるプログラムが、処理装置１０１が備えるメモリ（以下、デバイスメモリと呼ぶ）を利用できるようにする場合の例について説明する。
【００８６】
＜機能構成＞
図８は、第２の実施形態に係る処理装置の機能構成の例を示す図である。図８に示すように、第２の実施形態に係る処理装置１０１は、図３に示す第１の実施形態に係る処理装置１０１の機能構成に加えて、メモリアクセス部８０１、及びデバイスメモリ８０２等を有している。
【００８７】
メモリアクセス部８０１は、例えば、図２のＣＰＵ２０１で実行されるプログラム等によって実現され、ネットワークＮＷで処理するプログラムを識別する識別情報（以下、アプリＩＤと呼ぶ）毎に、デバイスメモリ８０２の記憶領域を管理する。
【００８８】
デバイスメモリ８０２は、処理装置１０１が備えるメモリ（記憶装置）であり、例えば、図２のメモリ２０２、ストレージデバイス２０３等によって実現される。
【００８９】
図９は、第２の実施形態に係るパケットの構成例を示す図である。図９に示すように、第２の実施形態に係るパケット９００は、例えば、図４（Ａ）に示す第１の実施形態に係るパケット４００に含まれる各情報に加えて、アプリＩＤが含まれる。
【００９０】
また、第２の実施形態では、命令列４０３に格納される複数の命令には、デバイスメモリ８０２にアクセスする命令が含まれていても良い。メモリアクセス部８０１は、デバイスメモリ８０２にアクセスする命令を受け付けた場合、アプリＩＤ毎に異なる記憶領域にアクセスする。
【００９１】
＜処理の流れ＞
（実行命令制御部の処理）
図１０は、第２の実施形態に係る命令実行制御部の処理の例を示すフローチャートである。なお、図１０に示す処理のうち、ステップＳ５０１〜Ｓ５０７の処理は、図６に示す第１の実施形態に係る処理と同様なので、ここでは、第１の実施形態との相違点を中心に説明を行う。
【００９２】
ステップＳ１００１において、処理装置１０１の命令実行制御部３０２は、ステップＳ６０４で抽出した命令が、デバイスメモリ８０２のアクセス命令であるか否かを判断する。抽出した命令がデバイスメモリ８０２のアクセス命令でない場合、命令実行制御部３０２は、処理をステップＳ６０５に移行させる。一方、抽出した命令がデバイスメモリ８０２のアクセス命令である場合、命令実行制御部３０２は、処理をステップＳ１００２に移行させる。
【００９３】
ステップＳ１００２に移行すると、命令実行制御部３０２は、メモリアクセス命令が、自装置を対象とした命令であるか否かを判断する。メモリアクセス命令が、自装置を対象とした命令でない場合、例えば、他の処理装置１０１を対象とした命令である場合、命令実行制御部３０２は、処理をステップＳ６０７に移行させる。一方、メモリアクセス命令が、自装置を対象とした命令である場合、命令実行制御部３０２は、処理をステップＳ１００３に移行させる。
【００９４】
ステップＳ１００３に移行すると、命令実行制御部３０２は、メモリアクセス部８０１に対して、メモリアドレス、アプリＩＤ、データ領域へのアクセス情報を送信し、デバイスメモリ８０２に対するアクセス（データの書き込み、又は読み出し）を実行させる。
【００９５】
ステップＳ１００４において、命令実行制御部３０２は、オフセット値を更新（例えば、インクリメント）して、処理をステップＳ６０２に戻す。
【００９６】
上記の処理により、命令実行制御部３０２は、実行すべき命令が、自装置（処理装置１０１）のデバイスメモリ８０２へのメモリアクセス命令である場合、メモリアクセス部８０１を用いて、デバイスメモリ８０２にアクセスすることができる。
【００９７】
（メモリアクセス部の処理）
図１１は、第２の実施形態に係るメモリアクセス部の処理の例を示すフローチャートである。この処理は、例えば、図１０のステップＳ１００３において、メモリアクセス部８０１が、命令実行制御部３０２から、デバイスメモリ８０２へのアクセスを指示されたときに実行する処理の例を示している。
【００９８】
ステップＳ１１０１において、処理装置１０１のメモリアクセス部８０１は、命令実行制御部３０２から送られたアプリＩＤとアドレスから、プログラム（アプリ）毎に分離されたデバイスメモリアドレスを計算する。
【００９９】
ステップＳ１１０２において、メモリアクセス部８０１は、命令実行制御部３０２から送られた命令が読み出し命令であるか、書き込み命令であるかを判断する。書き込み命令である場合、メモリアクセス部８０１は、処理をステップＳ１１０３に移行させる。一方、読み出し命令である場合、メモリアクセス部８０１は、処理をステップＳ１１０４に移行させる。
【０１００】
ステップＳ１１０３に移行すると、メモリアクセス部８０１は、ステップＳ１１０１で計算したデバイスメモリアドレスを用いて、デバイスメモリ８０２に対する、データ領域４０５のデータの書き込みを行う。
【０１０１】
ステップＳ１００４に移行すると、メモリアクセス部８０１は、ステップＳ１１０１で計算したデバイスメモリアドレスからデータを読み出し、読み出したデータをデータ領域４０５に書き込む。
【０１０２】
＜情報処理システムの動作の例＞
続いて、具体的な例をあげて、第２の実施形態に係る情報処理システム１００による情報処理方法の動作について説明する。
【０１０３】
図１２は、第２の実施形態に係る情報処理システムの動作の例について説明するための図である。ここでは、説明用の一例として、次の命令を用いる。
【０１０４】
命令「writem $10@0102 $0」は、デバイスメモリ「０１０２」の「１０」番地を示す「$10@102」に、データ領域の「０」番地を示す「$0」のデータを書き込む命令であるものとする。また、デバイスメモリ「０１０２」は、第１の処理装置１０１−１が備えるデバイスメモリ８０２を示すものとする。
【０１０５】
命令「readm $0 $10@0102」は、デバイスメモリ「０１０２」の「１０」番地を示す「$10@1010」のデータを、データ領域の「０」番地を示す「$0」に読み出す命令であるものとする。
【０１０６】
図１２において、第１の端末１０２−１が、パケット１２０１を第１の処理装置１０１−１に送信するものとする。
【０１０７】
第１の処理装置１０１−１のパケット解釈部３０１は、パケット１２０１を受信すると、処理対象のパケットであると判断し、パケット１２０１を命令実行制御部３０２に送る。
【０１０８】
第１の処理装置１０１−１の命令実行制御部３０２は、パケット１２０１のコンテキスト情報からオフセット値「０」を取得し、最初の命令（オフセット値「０」の命令）である「writem $10@0102 $0」の実行を制御する。ここでは、実行すべき命令は、デバイスメモリ「０１０２」への書き込み命令なので、命令実行制御部３０２は、メモリアクセス部８０１に、アプリＩＤ「１」、デバイスメモリ８０２とアドレスを指定する情報「$10@102」、データ「１０」（又はデータを取得するための情報）を送る。
【０１０９】
これにより、メモリアクセス部８０１は、アプリＩＤ「１」と、デバイスメモリ８０２とアドレスを指定する情報「$10@102」とから、アプリケーション毎に分離されたデバイスメモリアドレス（例えば、表１２０５のデバイスメモリアドレス「２６６」）を計算する。また、メモリアクセス部８０１は、例えば、表１２０５に示すように、計算したデバイスメモリアドレス「２６６」に、データ「１０」を書き込む。
【０１１０】
続いて、第１の端末１０２−１が、パケット１２０２を第１の処理装置１０１−１に送信するものとする。
【０１１１】
第１の処理装置１０１−１のパケット解釈部３０１は、パケット１２０２を受信すると、処理対象のパケットであると判断し、パケット１２０２を命令実行制御部３０２に送る。
【０１１２】
第１の処理装置１０１−１の命令実行制御部３０２は、パケット１２０２のコンテキスト情報からオフセット値「０」を取得し、最初の命令（オフセット値「０」の命令）の実行を制御する。ここでは、実行すべき命令が、デバイスメモリ「０１０２」への書き込み命令なので、命令実行制御部３０２は、メモリアクセス部８０１に、アプリＩＤ「２」、デバイスメモリ８０２とアドレスを指定する情報「$10@102」、データ「２０」（又はデータを取得するための情報）を送る。
【０１１３】
これにより、メモリアクセス部８０１は、アプリＩＤ「２」と、デバイスメモリ８０２とアドレスを指定する情報「$10@102」から、アプリケーション毎に分離されたデバイスメモリアドレス（例えば、表１２０５のデバイスメモリアドレス「５２２」）を計算する。また、メモリアクセス部８０１は、例えば、表１２０５に示すように、計算したデバイスメモリアドレス「５２２」に、データ「２０」を書き込む。
【０１１４】
このように、本実施形態では、同じデバイスメモリ８０２の同じアドレスに対して、異なるアプリケーションから値が書き込まれた場合、互いに異なる記憶領域にデータが書き込まれるので、アプリケーション間の書き込みの競合を回避することができる。
【０１１５】
続いて、第１の端末１０２−１が、パケット１２０３を、第１の処理装置１０１−１に送信するものとする。
【０１１６】
第１の処理装置１０１−１のパケット解釈部３０１は、パケット１２０３を受信すると、処理対象のパケットであると判断し、パケット１２０３を命令実行制御部３０２に送る。
【０１１７】
第１の処理装置１０１−１の命令実行制御部３０２は、パケット１２０３のコンテキスト情報からオフセット値「０」を取得し、最初の命令（オフセット値「０」の命令）の実行を制御する。ここでは、実行すべき命令が、デバイスメモリ「０１０２」への読み出し命令なので、命令実行制御部３０２は、メモリアクセス部８０１に、アプリＩＤ「１」、デバイスメモリ８０２とアドレスを指定する情報「$10@102」等を送る。
【０１１８】
これにより、メモリアクセス部８０１は、アプリＩＤ「１」と、デバイスメモリ８０２とアドレスを指定する情報「$10@102」から、アプリケーション毎に分離されたデバイスメモリアドレス（ここでは、メモリアドレス「２６６」）を計算する。また、メモリアクセス部８０１は、例えば、表１２０５に示すように、計算したデバイスメモリアドレス「２６６」に記憶されたデータ「１０」を読み出す。
【０１１９】
これにより、図１２のパケット１２０３が、パケット１２０４に示すように更新される。例えば、コンテキスト情報に含まれるオフセット値が「０」から「ＥＯＦ」に更新され、データ領域のデータ「$0: 0」が、「S0: 10」に更新される。
【０１２０】
命令実行制御部３０２は、オフセット値が「ＥＯＦ」となったパケット１２０４をパケット転送部３０４に送信する。これに応じて、パケット転送部３０４は、転送先（例えば、第２の処理装置１０１−２）にパケット１２０４を送信する。
【０１２１】
上記の処理により、メモリアクセス部８０１は、アプリＩＤ毎（プログラム毎）に、デバイスメモリ８０２の記憶領域を管理することができる。これにより、処理装置１０１は、複数のアプリケーション（プログラム）の間で競合を起こすことなく、処理装置１０１内のデバイスメモリ８０２を、パケット９００の命令列４０３に含まれる命令から、利用することができるようになる。
【０１２２】
これによって、例えば、データの通過回数を各処理装置１０１上で、アプリケーション毎に計数するアプリケーションを、アプリケーション間の競合を発生させることなく実現することができる。
【０１２３】
以上、本発明の各実施形態によれば、ネットワークＮＷにおけるパケットの転送中に所定の処理を実行する複数の処理装置１０１を含む情報処理１００システムにおいて、端末１０２から任意のプログラムを指定して処理を実行させることができるようになる。
【０１２４】
また、処理装置１０１は、コンテキスト情報、及び処理対象となるデータをパケットに格納して、他の処理装置１０１に転送するので、処理の途中であっても、他の処理装置１０１に処理を引き継ぐことができるようになる。
【０１２５】
また、第２の実施形態によれば、処理装置１０１が備えるデバイスメモリ８０２に対して、複数のプログラムから競合することなくアクセスが行えるようになる。これにより、例えば、複数の端末１０２からのデータを集約（アグリエーション）するような処理を、容易に実現することができるようになる。
【０１２６】
なお、上記の各実施形態で例示した命令は説明用の一例であり、本実施形態に係る処理装置１０１は、端末１０２から指定された様々な命令であって良い。例えば、処理装置１０１が実行する命令には、データの集約を行う集約命令が含まれていても良い。処理装置１０１は、実行する命令が集約命令である場合には、対象となる他の端末１０２からのデータを待ち、データが到着したときに、データの集約を行うものであっても良い。
【０１２７】
これにより、例えば、図１において、第１の端末１０２−１は、処理の一部を第１の処理装置１０１−１に送信するとともに、残りの処理を第３の処理装置１０１−３に送信し、第２の処理装置１０１−２でデータを集約して、第２の端末１０２−３に送信させること等ができる。
【符号の説明】
【０１２８】
１００      情報処理システム
１０１      処理装置
１０２      端末
３０１      パケット解釈部（受信部の一例）
３０２      命令実行制御部
３０３      命令実行部
３０４      パケット転送部（転送部の一例）
４００、９００      パケット
８０１      メモリアクセス部
８０２      デバイスメモリ（処理装置が備えるメモリ）
９０１      アプリＩＤ（プログラムを識別する識別情報の一例）
【図１】
2020150369.tif 000003
【図２】
2020150369.tif 000004
【図３】
2020150369.tif 000005
【図４】
2020150369.tif 000006
【図５】
2020150369.tif 000007
【図６】
2020150369.tif 000008
【図７】
2020150369.tif 000009
【図８】
2020150369.tif 000010
【図９】
2020150369.tif 000011
【図１０】
2020150369.tif 000012
【図１１】
2020150369.tif 000013
【図１２】
2020150369.tif 000014