(57)【要約】 【課題】リソースを一意に指定可能な識別子の変換機能により命令のオフローディングを実現する。【解決手段】実施形態によれば、リソースを一意に指定可能な識別子を引数に含むシステムコールに応じてオフロード命令を発行する発行部と、前記オフロード命令をオフロード先に送信し、前記オフロード先から前記オフロード命令の実行結果を受信する通信部とを具備する情報処理装置が提供される。前記オフロード命令は、前記識別子が前記オフロード先のリソースを一意に指定可能な識別子に変更されて実行され、前記発行部は、前記結果を前記システムコールの戻り値に設定する。【選択図】図１
2014071478.tif 000002
【特許請求の範囲】
【請求項１】
第１演算部における第１リソースを一意に指定可能な第１識別子を伴って実行される第１処理に対応するオフロード命令を発行する発行部と、
前記オフロード命令を第２演算部に送信し、前記第２演算部から前記オフロード命令の実行結果を受信する通信部と、を具備し、
前記第２演算部においては、前記オフロード命令は、前記第１識別子が前記第２演算部のリソースを一意に指定可能な第２識別子に変換されて、前記オフロード命令により指示された処理が実行されることを特徴とする情報処理装置。
【請求項２】
前記第１識別子は、前記第１演算部のリソースに対応するファイル記述子、またはソケット識別子、またはデバイス識別子を含み、前記第２識別子は、前記第２演算部のリソースに対応する第２のファイル記述子、またはソケット識別子、またはデバイス識別子を含む、請求項１記載の装置。
【請求項３】
前記第２識別子を一意に指定可能な前記第１識別子と、前記第２識別子とを関連付ける識別子変換表を保持する保持部をさらに具備する請求項１または２記載の装置。
【請求項４】
前記発行部、前記通信部、前記保持部を含む第１演算装置と、
前記オフロード命令によりネットワーク処理を実行し、前記第１演算装置に前記オフロード命令の実行結果を送信するネットワーク処理装置と、をさらに具備する請求項３記載の装置。
【請求項５】
前記発行部および前記通信部を含む第１演算装置と、
前記第２演算部のリソースの確保を指示する前記オフロード命令により生成される前記第２識別子と、前記第２識別子を一意に指定可能とする前記第１識別子と、を関連付ける識別子変換表を保持し、前記オフロード命令によりネットワーク処理を実行し、前記第１演算部に前記オフロード命令の実行結果を送信する第２演算装置と、をさらに具備する請求項１または２記載の装置。
【請求項６】
前記発行部、前記通信部、前記保持部を含む第１演算装置と、
前記オフロード命令によりストレージ処理を実行し、前記第１演算部に前記オフロード命令の実行結果を送信するストレージ処理装置と、をさらに具備する請求項３記載の装置。
【請求項７】
前記発行部および前記通信部を含む第１演算装置と、
前記第２演算部のリソースの確保を指示する前記オフロード命令により生成される前記第２識別子と、前記第２識別子を一意に指定可能とする前記第１識別子と、を関連付ける識別子変換表を保持し、前記オフロード命令によりストレージ処理を実行し、前記第１演算部に前記オフロード命令の実行結果を送信するストレージ処理装置と、をさらに具備する請求項１または２記載の装置。
【請求項８】
前記発行部、前記通信部、前記保持部を含む第１演算装置と、
前記オフロード命令によりネットワーク処理を実行し、前記第１演算部に前記オフロード命令の実行結果を送信するネットワーク処理装置と、
前記オフロード命令によりストレージ処理を実行し、前記第１演算部に前記オフロード命令の実行結果を送信するストレージ処理装置と、をさらに具備し、
前記保持部は、前記ネットワーク処理装置と前記ストレージ処理装置を識別する装置識別子を保持する請求項３記載の装置。
【請求項９】
前記ネットワーク処理装置は、動作モードに応じて前記ネットワーク処理に用いられる通信インタフェース、または通信方式を切り替えるネットワーク処理部を具備する請求項４、５、８のいずれかに記載の装置。
【請求項１０】
前記ネットワーク処理装置は、オフロード命令によって、前記ネットワーク処理に用いられる通信プロトコルまたは、通信プロトコルの階層を切り替えるネットワーク処理部を具備する請求項４、５、８のいずれかに記載の装置。
【請求項１１】
前記ネットワーク処理装置は、前記オフロード命令によって前記ネットワーク処理に用いられる受信バッファ、または送信キューを切り替えるネットワーク処理部を具備する請求項４、５、８のいずれかに記載の装置。
【請求項１２】
前記ネットワーク処理装置は、前記ネットワーク処理によりネットワークから受信したデータを記憶するバッファを具備し、
前記ネットワーク処理部は、前記バッファが記憶するデータをまとめて前記発行部に通知する請求項４、５、８のいずれかに記載の装置。
【請求項１３】
前記第１演算部は、
前記オフロード命令の実行中に低消費電力状態に遷移し、
前記第２演算部からの通知に応じて前記低消費電力状態を解除する、
請求項４乃至１２のいずれかに記載の装置。
【請求項１４】
前記第２演算部で自律的に動作するタスクを管理するタスク管理部をさらに具備し、
前記タスク管理部は、前記オフロード命令に従って前記タスクのロードおよび前記タスクの実行結果の通知を行う請求項１または２記載の装置。
【請求項１５】
リソースを一意に指定可能な第１識別子を引数に含む第１演算部のシステムコールに応じてオフロード命令を発行すること、
前記オフロード命令を第２演算部に送信し、第２演算部から前記オフロード命令の実行結果を受信すること、を含み、
前記オフロード命令は、前記第１識別子が前記第２演算部のリソースを一意に指定可能な第２識別子に変換され、前記オフロード命令により指示された処理が実行され、前記結果を使用して前記システムコールの戻り値が生成される、命令のオフローディング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置および命令のオフローディング方法に関する。
【背景技術】
【０００２】
近年、ほとんどのコンピュータにはＣＰＵを中心としてメモリなどの記憶装置が接続される、いわゆるノイマン型コンピュータというアーキテクチャが用いられている。ＣＰＵがアクセスする全てのものにアドレスが付与されており、ＣＰＵが持つアドレス空間の中ですべてのデバイスを操作することができる。
【０００３】
ＣＰＵ負荷軽減や高速化を期待して、しばしばＣＰＵの処理を外部のＣＰＵに代理処理させるオフローディングと呼ばれる手法が用いられている。特にネットワーク分野では、ＴＣＰ／ＩＰのチェックサムの計算やＩＰｓｅｃなど暗号化のための通信プロトコルの反復計算処理をＣＰＵで行わず、外部デバイスにオフローディングすることで通信速度を高め、遅延時間を低減することが可能である。
【０００４】
他のＣＰＵの持つリソースに直接アクセスすることは容易ではない。すべてのリソースはアドレスを変換することでアクセス可能であるが、異なるＣＰＵでは異なるアドレス空間を持つため、変換が複雑化する上、アーキテクチャの変化に対応することが困難である。複数のＣＰＵの間でリソースを共有する方法がいくつかある。例えば、バスブリッジ、リモートプロシージャコール（ＲＰＣ）、メモリマップドＩ／Ｏと呼ばれる手法が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２２５１２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
リソースを一意に指定可能な識別子の変換機能により命令のオフローディングを実現する。
【課題を解決するための手段】
【０００７】
実施形態によれば、リソースを一意に指定可能な第１識別子を引数に含むシステムコールに応じてオフロード命令を発行する発行部と、前記オフロード命令をオフロード先に送信し、前記オフロード先から前記オフロード命令の実行結果を受信する通信部と、を具備する情報処理装置が提供される。前記オフロード命令は、前記第１識別子が前記オフロード先のリソースを一意に指定可能な第２識別子に変換されて実行され、前記発行部は、前記結果を用いて前記システムコールの実行結果とする。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係る情報処理装置を示すブロック図
【図２】第１実施形態に係る識別子の登録の動作を示すフローチャート
【図３】第１実施形態に係る識別子の登録の動作を示すシーケンス図
【図４】第１実施形態に係る識別子の検索の動作を示すフローチャート
【図５】第１実施形態に係る識別子の検索の動作を示すシーケンス図
【図６】第１実施形態に係る識別子の抹消の動作を示すフローチャート
【図７】第１実施形態に係る識別子の抹消の動作を示すシーケンス図
【図８】第２実施形態に係る情報処理装置を示すブロック図
【図９】第２実施形態に係る識別子の登録の動作を示すフローチャート
【図１０】第２実施形態に係る識別子の登録の動作を示すシーケンス図
【図１１】第２実施形態に係る識別子の検索の動作を示すフローチャート
【図１２】第２実施形態に係る識別子の検索の動作を示すシーケンス図
【図１３】第２実施形態に係る識別子の抹消の動作を示すフローチャート
【図１４】第２実施形態に係る識別子の抹消の動作を示すシーケンス図
【図１５】第３実施形態に係る情報処理装置を示すブロック図
【図１６】第３実施形態に係る情報処理装置の別の構成例を示すブロック図
【図１７】第４実施形態に係る情報処理装置を示すブロック図
【図１８】第５実施形態に係る情報処理装置を示すブロック図
【図１９】第５実施形態に係る識別子の検索の動作を示すフローチャート
【図２０】第５実施形態に係る識別子の検索の動作を示すシーケンス図
【図２１】第６実施形態に係る情報処理装置を示すブロック図
【図２２】第６実施形態に係る情報処理装置の別の構成例を示すブロック図
【図２３】第６実施形態に係る識別子の登録の動作を示すフローチャート
【図２４】第６実施形態に係る識別子の検索の動作を示すフローチャート
【図２５】第６実施形態に係る識別子の抹消の動作を示すフローチャート
【図２６】第７実施形態に係る情報処理装置を示すブロック図
【図２７】第７実施形態に係る識別子の登録の動作を示すフローチャート
【図２８】第７実施形態に係る識別子の登録の動作を示すシーケンス図
【図２９】第７実施形態に係るオフロードプログラムのロード動作を示すフローチャート
【図３０】第７実施形態に係る実行結果の受信動作を示すフローチャート
【図３１】第７実施形態に係るオフロードプログラムのロード動作および結果受信の動作を示すシーケンス図
【図３２】第７実施形態に係るオフロードタスク管理部からの更新通知を受信する動作を示すフローチャート
【図３３】第７実施形態に係るオフロードタスク管理部からの更新通知を受信する動作を示すシーケンス図
【図３４】第７実施形態に係るオフロードタスク終了の動作を示すフローチャート
【図３５】第７実施形態に係るオフロードタスク終了の動作を示すシーケンス図
【発明を実施するための形態】
【０００９】
以下、実施の形態について、図面を参照して説明する。
【００１０】
本実施形態では、一方のＣＰＵがもつファイル記述子に代表される識別子を、他方のＣＰＵのもつ識別子と変換可能な識別子管理表をもち、アクセスが発生した際には、一方のＣＰＵが識別子を変換することで、リソースの共有を実現する。
【００１１】
通常、ハードウェアや特定のメモリ領域へのアクセスはオペレーティングシステム（ＯＳ）によって保護されており、通常のユーザアプリケーションがそのような領域にアクセスするときはＯＳが提供するシステムコールと呼ばれるアプリケーション・プログラミング・インタフェース（ＡＰＩ）を介して行われる。この際、実際のメモリ領域のアドレスを秘匿しながらアクセスを提供するため、ファイル記述子と呼ばれる識別子が用いられる。
【００１２】
本実施形態では、メインＣＰＵに紐付けられる識別子をオフロード先のＣＰＵに紐付けられる識別子に変換するための識別子管理表を用いることにより、メインＣＰＵ側のアプリケーションから、オフロード先のＣＰＵに接続されたリソースへのアクセスを可能とする。これにより従来技術では必要であった、メインＣＰＵでのアドレスと、オフロード先のＣＰＵでのアドレスの変換を行うことなく、抽象化された、識別子での変換を行うことで、容易にオフロード先のリソースを利用することが可能となる。
【００１３】
（第１実施形態）  
第１実施形態は、識別子管理表をメインボードにもつ場合である。識別子管理表をメインボードではなくネットワーク処理ボード等の他のボードにもつ場合については第２実施形態以後で説明する。本実施形態は、システムの起動当初からのオフロード実行、システム起動後の任意の時点からのオフロード実行の両者に適用可能である。オフロード処理を開始するか否かは、リソースの確保を依頼するシステムコール（例えばｓｏｃｋｅｔ）に基づく。
【００１４】
＜構成の説明＞  
図１は、第１実施形態に係る情報処理装置を示すブロック図である。
【００１５】
メインボード１０は、オフロード命令発行部１、通信部２、識別子管理部３、識別子情報保持部４で構成される。オフロード命令発行部１は、メインボード１０上のタスクをオフロード先で処理可能な形に変換し、ネットワーク処理ボード２０に処理の代行を依頼する。通信部２は、ネットワーク処理ボード２０との間で通信を行う。識別子情報保持部４は、メインボード１０側の識別子（プロセスＩＤ、ソケット番号、バッファ番号、キュー番号など）に、ネットワーク処理ボード２０側の識別子を関連付ける識別子管理表を保持する。識別子管理部３は、識別子情報保持部４が保持する識別子管理表への識別子の登録、検索、抹消などの入出力を行う。
【００１６】
ネットワーク処理ボード２０は、オフロード命令実行部５、ネットワーク処理部７、通信部６で構成される。オフロード命令実行部５は、メインボード１０から引き受けたタスクを実行する。通信部６は、メインボード１０との間で通信を行う。ネットワーク処理部７は、ネットワーク８を介して外部と通信を行う。
【００１７】
＜動作の説明＞  
識別子管理表を利用したオフロード操作は、識別子管理表への登録、検索、抹消の３手順に分けられる。
【００１８】
・識別子の登録  
図２は、第１実施形態に係る識別子の登録の動作を示すフローチャート、図３は、第１実施形態に係る識別子の登録の動作を示すシーケンス図である。
【００１９】
オフロード機能を利用するか否かは、ユーザの設定、装置の電力消費と電力供給の比率、残電池容量、事前に設定された省電力ポリシーを記載したプロファイル、即応性が求められるアプリケーションであるか否か、間欠動作のアプリケーションであるか否か、などによって決定される（ステップＳ１〜Ｓ２）。オフロード機能が有効でない場合には、通常どおりにシステムコールを処理する（ステップＳ９）。オフロード機能の利用開始直後は識別子管理部３が保持する識別子管理表は空の状態である。メインボード１０とネットワーク処理ボード２０の識別子の組を識別子管理表に登録する作業は、ユーザアプリケーションがＯＳの管理しているリソースの用意をＯＳに依頼するシステムコールに連動して行う。例えばＬｉｎｕｘ（登録商標）では、ソケットの用意をＯＳに依頼するシステムコールであるｓｏｃｋｅｔシステムコールが発行されるとソケットが用意される。このシステムコールが発行された際に、メインボード１０では実際にはソケットを用意せず、仮想ソケット番号（ネットワーク処理ボード上のソケットを特定するためのソケット番号）を用意する（ステップＳ６）。仮想ソケット番号は、ＯＳが管理しているファイルディスクリプタに連動してＯＳが貸出可能なファイル記述子であることがのぞましい。これにより、ユーザアプリケーションは、オフロード機能利用中か否かを意識せずにオフロード機能を利用可能となる。
【００２０】
同時に、オフロード命令発行部１は、該システムコールの引数のうち少なくとも１つ以上を引数とするオフロード命令を生成して発行する（ステップＳ３，Ｓ４）。ネットワーク処理ボード２０上のオフロード命令実行部５はオフロード命令を実行し、オフロード命令発行部１は、ネットワーク処理ボード２０のソケット番号を返り値として受信する（ステップＳ５）。メインボード１０上で生成された仮想ソケット番号と、ネットワーク処理ボード２０上で生成されたソケット番号のペアを識別子管理表に登録する（ステップＳ７）。この際、メインボード１０上でユーザアプリケーションが複数存在する場合には、該ユーザアプリケーションのプロセスＩＤも登録する。なお、ＯＳの管理するリソースの用意を依頼するシステムコールの返り値は、仮想ソケット番号とする（ステップＳ８）。
【００２１】
・識別子の検索（通信用システムコール全般の処理）  
図４は、第１実施形態に係る識別子の検索の動作を示すフローチャート、図５は、第１実施形態に係る識別子の検索の動作を示すシーケンス図である。
【００２２】
ユーザアプリケーションがＯＳの管理しているリソースへ入出力を行う際には、必ずシステムコールが発行される（ステップＳ２０）。ネットワーク関連の処理を行うシステムコールの例としては、ｂｉｎｄ，ｌｉｓｔｅｎ，ｃｏｎｎｅｃｔ，ｒｅｃｖｆｒｏｍ，ｓｅｎｄｔｏ，ｃｌｏｓｅ，ｓｈｕｔｄｏｗｎ，ｓｅｔｓｏｃｋｏｐｔ，ｇｅｔｓｏｃｋｏｐｔ，ｇｅｔｓｏｃｋｎａｍｅ，ｇｅｔｐｅｅｒｎａｍｅなどのソケット操作に関するものがある。オフロード機能を利用するか否かはここで判定される。システムコールの引数の一つであるソケット番号（ユーザアプリケーションが複数ある場合はソケット番号に加えてプロセスＩＤ）が識別子管理表に存在すれば、該システムコールはオフロード機能に関するものであると判定できる（ステップＳ２１，２２）。
【００２３】
該システムコールがオフロード機能に関するものであると判定された場合、オフロード命令発行部１は、システムコール引数のうち、ソケット番号以外の引数のうち少なくとも１つ以上の引数と、識別子管理部３で該ソケット番号をネットワーク処理ボード２０のソケット番号に変換した番号を引数とするオフロード命令を生成して発行し（ステップＳ２３）、ネットワーク処理ボード２０での実行を依頼する。オフロード命令発行部１は返り値としてデータをオフロード命令実行部５から受け取り（ステップＳ２５）、このデータをシステムコールの返り値としてユーザプログラムに返す（ステップＳ２６）。オフロード命令を実行した結果、付随して通知しなければならない情報も、合わせてメインボードに送信する。たとえば、通信インタフェースに発生した状態の変化であるとか、エラー発生時のエラーコードなどである。
【００２４】
・識別子の抹消  
図６は、第１実施形態に係る識別子の抹消の動作を示すフローチャート、図７は、第１実施形態に係る識別子の抹消の動作を示すシーケンス図である。
【００２５】
ユーザアプリケーションがＯＳの管理しているリソースを解放する際、必ずシステムコールが発行される（ステップＳ３０）。この際、該システムコールの引数の一つである、ソケット番号が識別子管理表に存在すれば、該システムコールがオフロード機能に関するものであることが判定できる。オフロード機能に関するものであると判定された場合には、オフロード命令発行部１は、識別子管理部３から該システムコールの引数の一つである、ソケット番号に対応するネットワーク処理ボード２０上のソケット番号を検索する（ステップＳ３１）。オフロード命令発行部１は、該システムコールのソケット番号以外の引数のうち少なくとも１つ以上の引数と、ネットワーク処理ボード２０上のソケット番号を引数とし、該ソケットに関するリソースの解放を依頼するオフロード命令を作成し（ステップＳ３２）、ネットワーク処理ボード２０上のオフロード命令実行部５に処理を依頼する（ステップＳ３３）。オフロード命令実行部５は、該当するリソースを解放し（ステップＳ３４）、その実行結果データをオフロード命令発行部１に返す。これにより識別子情報保持部４から該当する識別の登録が抹消される（ステップＳ３５）。オフロード命令発行部１は、リソース解放の結果をシステムコールの返り値としてユーザに返す（ステップＳ３６）。
【００２６】
（第２実施形態）  
第２実施形態は、識別子管理表をネットワーク処理ボードに設ける場合であって、システムの起動直後からオフロード機能の利用を開始する場合に相当する。本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。
【００２７】
図８は、第２実施形態に係る情報処理装置を示すブロック図である。
【００２８】
＜構成の説明＞  
メインボード１０は、オフロード命令発行部１と通信部２で構成される。オフロード命令発行部１は、メインボード１０上のタスクをオフロード先で処理可能な形に変換し、ネットワーク処理ボード２０に処理の代行を依頼する。通信部２は、ネットワーク処理ボード２０との間で通信を行う。
【００２９】
ネットワーク処理ボード２０は、オフロード命令実行部５、ネットワーク処理部７、通信部６、識別子管理部３、識別子情報保持部４で構成される。オフロード命令実行部５は、メインボード１０から引き受けたタスクを実行する。通信部６は、メインボード１０との間で通信を行う。ネットワーク処理部７は、ネットワーク８を介して外部と通信を行う。識別子情報保持部４は、メインボード１０側の識別子（プロセスＩＤ、ソケット番号、バッファ番号、キュー番号など）にネットワーク処理ボード２０側の識別子を関連付ける識別子管理表を保持する。識別子管理部３は、識別子情報保持部４が保持する識別子管理表への識別子の登録、検索、抹消などの入出力を行う。
【００３０】
＜動作の説明＞  
識別子管理表を利用したオフロード操作は、識別子管理表への登録、検索、抹消の３手順に分けられる。
【００３１】
・識別子の登録  
図９は、第２実施形態に係る識別子の登録の動作を示すフローチャート、図１０は、第２実施形態に係る識別子の登録の動作を示すシーケンス図である。
【００３２】
オフロード機能を利用するか否かは、ユーザの設定、装置の電力消費と電力供給状況、事前に設定されたプロファイル、ユーザアプリケーションの種類などによって決定される（ステップＳ４０〜Ｓ４１）。オフロード機能が有効でない場合には、通常どおりにシステムコールを処理する（ステップＳ４８）。オフロード機能の利用開始直後は識別子管理部３が保持する識別子管理表は空の状態である。メインボード１０とネットワーク処理ボード２０の識別子の組を識別子管理表に登録する作業は、ユーザアプリケーションがＯＳの管理しているリソースの用意をＯＳに依頼するシステムコールに連動して行う（ステップＳ４０）。例えばＬｉｎｕｘでは、ソケットの用意をＯＳに依頼するシステムコールであるｓｏｃｋｅｔシステムコールが発行されるとソケットが用意される。このシステムコールが発行された際に、メインボード１０では実際にはソケットを用意せず、ＯＳが他の識別子と連番で貸与する番号（仮想ソケット番号）を用意する（ステップＳ４２）。
【００３３】
同時に、オフロード命令発行部１は、該システムコールの引数のうち少なくとも１つ以上の引数と、仮想ソケット番号とを引数とするオフロード命令を生成して発行する（ステップＳ４３，Ｓ４４）、ネットワーク処理ボード２０上のオフロード命令実行部５はオフロード命令を実行する（ステップＳ４５）。これによりソケット番号が生成される。識別子管理部３はメインボード１０上で生成された仮想ソケット番号と、ネットワーク処理ボード２０上で生成されたソケット番号のペアを識別子管理表に登録する（ステップＳ４６）。この際、メインボード１０上でユーザアプリケーションが複数存在する場合には、該ユーザアプリケーションのプロセスＩＤも登録する。なお、ＯＳの管理するリソースの用意を依頼するシステムコールの返り値は、仮想ソケット番号とする（ステップＳ４７）。
【００３４】
・識別子の検索（通信用システムコール全般の処理）  
図１１は、第２実施形態に係る識別子の検索の動作を示すフローチャート、図１２は、第２実施形態に係る識別子の検索の動作を示すシーケンス図である。
【００３５】
ユーザアプリケーションがＯＳの管理しているリソースへ入出力を行う際には、必ずシステムコールが発行される（ステップＳ５０）。ネットワーク関連の処理を行うシステムコールの例としては、ｂｉｎｄ，ｌｉｓｔｅｎ，ｃｏｎｎｅｃｔ，ｒｅｃｖｆｒｏｍ，ｓｅｎｄｔｏ，ｃｌｏｓｅ，ｓｈｕｔｄｏｗｎ，ｓｅｔｓｏｃｋｏｐｔ，ｇｅｔｓｏｃｋｏｐｔ，ｇｅｔｓｏｃｋｎａｍｅ，ｇｅｔｐｅｅｒｎａｍｅなどのソケット操作に関するものがある。オフロード機能を利用するか否かはここで判定される。システムコールの引数としてＯＳに渡されるソケット番号が、ネットワーク処理ボード２０上の識別子管理部３に登録されていればオフロードに関するものであると判定できる（ステップＳ５１）。
【００３６】
該システムコールがオフロード機能に関するものであると判定された場合、オフロード命令発行部１は、システムコール引数のうち、ソケット番号と他の引数のうち少なくとも１つ以上の引数とを用いてオフロード命令を生成し（ステップＳ５２）、ネットワーク処理ボード２０での実行を依頼する（ステップＳ５３）。ここでのソケット番号は、上述した仮想ソケット番号である。
【００３７】
ネットワーク処理ボード２０の識別子管理部３は、識別子情報保持部４を検索し、仮想ソケット番号（識別子）に対応するネットワーク処理ボード２０側の識別子を検索する。オフロード命令実行部５は、検索された識別子を用いてオフロード命令を実行し、その実行結果をメインボード１０のオフロード命令発行部１に返す（ステップＳ５５）。オフロード命令発行部１はオフロード命令実行部５から受け取った実行結果をシステムコールの返り値としてユーザプログラムに返す（ステップＳ５６）。
【００３８】
・識別子の抹消  
図１３は、第２実施形態に係る識別子の抹消の動作を示すフローチャート、図１４は、第２実施形態に係る識別子の抹消の動作を示すシーケンス図である。
【００３９】
ユーザアプリケーションがＯＳの管理しているリソースを解放する際、必ずシステムコールが発行される（ステップＳ６０）。この際、該システムコールの引数の一つである、ソケット番号（ユーザアプリケーションが複数ある場合はソケット番号に加えてプロセスＩＤ）が識別子管理表に存在すれば、該システムコールがオフロード機能に関するものであることが判定できる（ステップＳ６１）。オフロード機能に関するものであると判定された場合には、オフロード命令発行部１は、ネットワーク処理ボード２０の識別子管理部３を通じて、該システムコールの引数の一つである、ソケット番号に対応するネットワーク処理ボード２０上のソケット番号を検索する。該システムコールのソケット番号以外の引数のうち少なくとも１つ以上の引数と、ネットワーク処理ボード２０上のソケット番号を引数とし、該ソケットに関するリソースを解放するオフロード命令を作成し（ステップＳ６２）、ネットワーク処理ボード２０上のオフロード命令実行部５に処理を依頼する（ステップＳ６３）。オフロード命令実行部５は、該当するリソースを解放し（ステップＳ６４）、その実行結果データをオフロード命令発行部１に返す。また、識別子情報保持部４から該当する識別の登録を抹消する（ステップＳ６５）。オフロード命令発行部１は、リソース解放の結果をシステムコールの返り値としてユーザに返す（ステップＳ６６）。
【００４０】
（第３実施形態）  
第３実施形態は、オフロード先をストレージ処理ボードとするものである。本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。
【００４１】
＜構成の説明＞  
図１５は、第３実施形態に係る情報処理装置を示すブロック図である。
【００４２】
メインボード１０は、オフロード命令発行部１、識別子管理部３、識別子情報保持部４、通信部２で構成される。オフロード命令発行部１は、メインボード１０上のタスクをオフロード先で処理可能な形に変換し、ストレージ処理ボード３０に処理の代行を依頼する。通信部２は、ストレージ処理ボード３０との間で通信を行う。識別子情報保持部４は、メインボード１０側の識別子（プロセスＩＤとファイル番号など）にストレージ処理ボード３０側の識別子を関連付ける識別子管理表を保持する。識別子管理部３は、識別子情報保持部４が保持する識別子管理表への識別子の登録、検索、抹消などの入出力を行う。
【００４３】
ストレージ処理ボード３０は、オフロード命令実行部５、ストレージアクセス処理部９、通信部６、記憶領域１１で構成される。オフロード命令実行部５は、メインボード１０から引き受けたタスクを実行する。通信部６は、メインボード１０との間で通信を行う。ストレージアクセス処理部９は、記憶領域１１への入出力を担う。記憶領域１１は、データを保持することができるストレージ装置である。記憶領域１１は、ストレージ処理ボード３０上に内蔵されるストレージであってもよいし、ＮＦＳやｉＳＣＳＩなどのネットワークストレージであってもよい。
【００４４】
図１５の構成は、識別子管理部３および識別子情報保持部４をメインボード１０に設ける構成であるが、第２実施形態と同様に、識別子管理部３および識別子情報保持部４をオフロード先に設けてもよい。この場合、図１６に示すように、識別子管理部３および識別子情報保持部４がストレージ処理ボード３０に設けられる。
【００４５】
＜動作の説明＞  
識別子管理表を利用したオフロード操作は、識別子管理表への登録、検索、抹消の３手順に分けられる。
【００４６】
・識別子の登録  
オフロード機能を利用するか否かは、ユーザの設定、装置の電力消費と電力供給状況、事前に設定されたプロファイル、ユーザアプリケーションの種類などによって決定される。オフロード機能の利用開始直後は識別子管理部３が保持する識別子管理表は空の状態である。メインボード１０とストレージ処理ボード３０の識別子の組を識別子管理表に登録する作業は、ユーザアプリケーションがＯＳの管理しているファイルの開閉をＯＳに依頼するシステムコールに連動して行う。例えばＬｉｎｕｘでは、ファイルにアクセスする際にはＯＳにファイルを開くことを依頼するシステムコールであるｏｐｅｎシステムコールが発行される。このシステムコールが発行された際に、メインボード１０ではＯＳが他の識別子と連番で貸与する番号（仮想ファイル番号）を用意する。同時に、オフロード命令発行部１は、ファイルの位置を特定する位置情報を含み、該ファイルを開くことを依頼するオフロード命令を発行する。ストレージ処理ボード３０のオフロード命令実行部５は、ファイルを開く処理を行った後、返り値としてストレージ処理ボード３０上のファイル番号をオフロード命令発行部１に返す。識別子管理部３は、ここで得られたストレージ処理ボード３０上のファイル番号と、メインボード１０上で生成された仮想ファイル番号のペアを識別子管理表に登録する。この際、メインボード１０上でユーザアプリケーションが複数存在する場合には、該ユーザアプリケーションのプロセスＩＤも登録する。なお、アプリケーションがＯＳにファイルを開くよう依頼するシステムコールの返り値は、仮想ソケット番号とする。
【００４７】
・識別子の検索  （ストレージアクセス用システムコール全般の処理）
ユーザアプリケーションがＯＳの管理するファイルへ読み書きを行う際には、必ずシステムコールが発行される。たとえば、Ｌｉｎｕｘのファイル操作に関するものとしては、ｒｅａｄ、ｗｒｉｔｅなどがある。オフロード機能を利用するか否かはここで判定される。システムコールの引数としてＯＳに渡されるファイル番号（ユーザアプリケーションが複数ある場合はファイル番号に加えてプロセスＩＤ）が識別子管理部３に登録されていればオフロードに関するものであると判定できる。該システムコールがオフロード機能に関するものであると判定された場合、オフロード命令発行部１は、システムコール引数のうち、ファイル番号以外の引数のうち少なくとも１つ以上の引数と、識別子管理部３で該ファイル番号をストレージ処理ボード３０上のファイル番号に変換した番号を引数とするオフロード命令を生成し、ネットワーク処理ボード２０での実行を依頼する。オフロード命令発行部１は返り値としてデータをオフロード命令実行部５から受け取り、このデータをシステムコールの返り値としてユーザプログラムに返す。
【００４８】
・識別子の抹消  
ユーザアプリケーションがＯＳの管理しているファイルを閉じる際には必ずシステムコールが発行される。この際、該システムコールの引数の一つである、ファイル番号が識別子管理表に存在すれば、該システムコールがオフロード機能に関するものであることが判定できる。オフロード機能に関するものであると判定された場合には、オフロード命令発行部１は、識別子管理部３から該システムコールの引数の一つである、ファイル番号に対応するストレージ処理ボード３０上のファイル番号を検索する。該システムコールのファイル番号以外の引数のうち、少なくとも１つ以上の引数と、ストレージ処理ボード３０上のファイル番号を引数とする、ファイルを閉じる操作を依頼するオフロード命令を作成し、オフロード命令実行部５に処理を依頼する。オフロード命令実行部５は、実行結果データをオフロード命令発行部１に返し、オフロード命令発行部１は、そのデータをシステムコールの返り値としてユーザに返す。
【００４９】
（第４実施形態）  
第４実施形態は、動作モードに応じてオフロード先をネットワーク処理ボード２０とする場合において、有線ＬＡＮ、無線ＬＡＮなどの通信インタフェース（Ｉ／Ｆ）を切り替え可能としたものである。識別子管理部３が保持する識別子は、抽象的なレイヤでリソースを管理するためのものであることから、特定の物理層に限定されない。したがって、ネットワーク処理部７における下位レイヤの通信Ｉ／Ｆを切り替えても、これに応じてアプリケーションプログラム自体を変更する必要はなく、プログラムを単純化することができる。
【００５０】
本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。
【００５１】
＜構成の説明＞
図１７は、第４実施形態に係る情報処理装置を示すブロック図である。
【００５２】
メインボード１０は、オフロード命令発行部１、通信部２、識別子管理部３、識別子情報保持部４で構成される。オフロード命令発行部１は、メインボード１０上のタスクをオフロード先で処理可能な形に変換し、ネットワーク処理ボード２０に処理の代行を依頼する。通信部２は、ネットワーク処理ボード２０との間で通信を行う。識別子情報保持部４は、メインボード１０側の識別子（プロセスＩＤ、ソケット番号、バッファ番号、キュー番号など）にネットワーク処理ボード２０側の識別子を関連付ける識別子管理表を保持する。識別子管理部３は、識別子情報保持部４が保持する識別子管理表への識別子の登録、検索、抹消などの入出力を行う。
【００５３】
ネットワーク処理ボード２０は、オフロード命令実行部５、ネットワーク処理部７、通信部６、動作モード記憶部１２で構成される。オフロード命令実行部５は、メインボード１０から引き受けたタスクを実行する。通信部６は、メインボード１０との間で通信を行う。
【００５４】
ネットワーク処理部７は、ネットワーク８を介して外部と通信を行うものであり、内部に複数のインタフェースを持つ。例えば、ネットワーク処理部７は、低消費電力無線Ｉ／Ｆ１３、高速無線Ｉ／Ｆ１４、有線Ｉ／Ｆ１５を有する。
【００５５】
＜動作の説明＞  
オフロード機能を利用する基本的な操作（識別子管理部３への登録・検索・削除）は上述した実施形態と同様であり、変更点は以下の通りである。
【００５６】
オフロード命令実行部５は、ネットワーク処理部７内で発生したインタフェースへの変更、タイマー割込みなどによって、動作状態の確認と変更を行う。動作状態とは、各通信インタフェースのＯＮ／ＯＦＦ状態、リンクアップ／リンクダウン状態、各通信インタフェースの消費電力やデータレート、パケットロス率、応答遅延時間、通信速度などのパラメータである。
【００５７】
動作モードは、事前にユーザにより設定され、後に動的に変更されて動作モード記憶部１２に保持される。動作モードとしては、通信時の消費電力を抑制する低消費電力モード、遅延時間を最小化する低遅延モード、スループットを最大化する高スループットモードなどである。例えば、高速無線通信を利用している状態で低消費電力モードが設定された場合に、リンクアップしている通信インタフェースを調べ、可能であればそのインタフェース（例えば低消費電力無線Ｉ／Ｆ１３）への切り替えを行う。
【００５８】
（第５実施形態）  
第５実施形態は、オフロード先をネットワーク処理ボード２０とする場合において、通信プロトコルの階層（レイヤ）や、ネットワークバッファを切り替え可能としたものである。
【００５９】
ネットワーク８の利用中にソケットのレイヤを変更可能とする場合、オフロード中のソケットのレイヤの変更を設定するための新規システムコールを定義する。例えば、オフロード中のソケットがＴＣＰ通信を行っていた場合に、新規システムコールが発行されると、下位レイヤであるイーサネット（登録商標）層での通信が許可される。本実施形態では新規システムコールを発行してレイヤ変更を加え、新規システムコール発行前まで使用していたＴＣＰ通信のソケットをそのまま用いて、その下位レイヤで通信を行うことができる。通信プロトコルの階層切替によれば、例えばイーサネットに切り替えることでイーサネットフレームを取得することによりＭＡＣアドレスを含めた、下位レイヤの通信内容を容易に取得することができる。
【００６０】
通信プロトコルの階層と同様に、オフロード先のネットワークバッファ（キュー：Ｑｕｅｕｅ）を切り替えてもよい。以下、この場合を例に挙げて本実施形態の構成および動作を説明する。ネットワーク８の利用中にキューを変更可能とする場合、オフロード中のキューの変更を設定するための新規システムコールが定義される。
【００６１】
図１８は、第５実施形態に係る情報処理装置を示すブロック図である。本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。
【００６２】
＜構成の説明＞  
メインボード１０側の構成は第１実施形態と同様である。ネットワーク処理ボード２０の構成はほぼ同じであるが、ネットワーク処理部７内に複数のソケットに対応する複数のキュー（Ｑｕｅｕｅ１〜Ｑｕｅｕｅ４）を有し、新規システムコールによってこれらを変更できる点が第１実施形態とは相違する。この構成によれば、ＱｏＳのキューやプロトコル種別を瞬時に切り替えることができ、遅延時間を低減することができる。
【００６３】
＜動作の説明＞  
図１９は、第５実施形態に係る識別子の検索の動作を示すフローチャート、図２０は、第５実施形態に係る識別子の検索の動作を示すシーケンス図である。
【００６４】
識別子管理部３での、登録・利用・抹消の基本的な動作は第１実施形態と同じである。変更点は以下の通りである。
【００６５】
オフロード中のキューを変更する新規システムコールを定義する。該システムコールが発行されると（ステップＳ７０）、オフロード命令発行部１は、指定された仮想ソケット番号が識別子管理部３に登録されており、対応するネットワーク処理ボード２０上の識別子があるか調べる（ステップＳ７１）。オフロード命令発行部１は調べたネットワーク処理ボード２０上の識別子を引数として、オフロード命令実行部５に対し、キューを変更する命令を送信する（ステップＳ７２，Ｓ７３）。オフロード命令実行部５は、該ソケットが使用されており、かつ指定されたキューに該当するキューがあれば、そのキュー番号をオフロード命令発行部１に返す（ステップＳ７４）。オフロード命令発行部１は、キューの変更が完了した通知を受け（ステップＳ７５）、これをユーザアプリケーションに通知する（ステップＳ７６）。
【００６６】
（第６実施形態）  
第６実施形態は、２つのオフロード処理の同時利用に関する。本実施形態は、オフロード先をネットワーク処理ボード２０およびストレージ処理ボード３０とする場合またはネットワーク処理およびストレージ処理の両方を処理可能なオフロード処理ボードとする場合である。本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。
【００６７】
＜構成の説明＞  
図２１は第６実施形態に係る情報処理装置を示すブロック図、図２２は別の構成例を示すブロック図である。メインボード１０の構成は第１実施形態のメインボード１０と同じである。図２１は、オフロード先としてオフロード命令実行部５ａおよび通信部６ａを有するネットワーク処理ボード２０とオフロード命令実行部５ｂおよび通信部６ｂを有するストレージ処理ボード３０とを同時に利用する構成であり、図２２は、オフロード先としてネットワーク処理部７、ストレージアクセス処理部９、記憶領域１１を有する単一のオフロード処理ボード４０を用いる構成である。ネットワーク処理ボード２０のオフロード命令実行部５ａおよび通信部６ａは、第１実施形態で説明したものと同様であり、ストレージ処理ボード３０のオフロード命令実行部５ｂおよび通信部６ｂは、第３実施形態で説明したものと同様である。図２２のオフロード処理ボード４０のオフロード命令実行部５および通信部６は、第１および第３実施形態で説明したそれぞれの機能を併せ持つものである。また、識別子情報保持部４は、識別子管理表においてファイル記述子およびプロセスＩＤに加え、ボードＩＤをさらに保持する。識別子管理表にボードＩＤを保持することで、オフロードするリソースを指定することを特徴とする。
【００６８】
＜動作の説明＞  
識別子管理表を利用したオフロード操作は、識別子管理表への登録、検索、抹消の３手順に分けられる。
【００６９】
・識別子の登録  
図２３は、第６実施形態に係る識別子の登録の動作を示すフローチャートである。
【００７０】
第１、第３実施形態と同様に、オフロード機能を利用するか否かは、ユーザの設定、装置の電力消費と電力供給状況、事前に設定されたプロファイル、ユーザアプリケーションの種類などによって決定される（ステップＳ８１）。オフロード機能の利用開始直後は識別子管理部３が保持する識別子管理表は空の状態である。メインボード１０とネットワーク処理ボード２０の識別子の組を識別子管理表に登録する作業は、ユーザアプリケーションがＯＳの管理しているリソースの用意をＯＳに依頼するシステムコールに連動して行う（ステップＳ８０）。ネットワーク処理またはストレージ処理のオフロード機能の選択は、システムコールの種別、システムコールの引数として渡される識別子に応じて決定される。たとえば、Ｌｉｎｕｘではｓｏｃｋｅｔシステムコールが発行された場合には、プロセス間のソケット通信またはネットワーク８の通信を開始すると判断できる。一方、ディレクトリ構造の中の特定の位置やファイル名などを引数としてｏｐｅｎシステムコールが呼び出された場合には、ストレージへのアクセスを開始すると判断できる。プロファイルなどの条件と、システムコールの条件から、ネットワーク処理、オフロード処理のオフロードを利用開始すると判断された場合には、第１、第３実施形態と同様に、オフロード命令発行部１は、仮想識別子を生成すると同時に（ステップＳ８２）、ネットワーク処理部７もしくはストレージアクセス処理部９に対して、リソースを用意するオフロード命令を発行する（ステップＳ８３，Ｓ８４）。仮想識別子、オフロード命令実行部５で生成されたネットワーク処理ボード２０上の識別子、システムコールを呼び出したプロセスのＩＤ、オフロード処理種別ＩＤが識別子管理部３に登録される（ステップＳ８６）。ユーザアプリケーションには仮想ソケット番号を返す（ステップＳ８７）。
【００７１】
・識別子の検索  
図２４は、第６実施形態に係る識別子の検索の動作を示すフローチャートである。ここでは図２２の場合の動作例を説明する。
【００７２】
ユーザアプリケーションがＯＳの管理しているリソースへ入出力を行う際には、必ずシステムコールが発行される（ステップＳ９０）。システムコールの種類は第１、第３実施形態に記載のものと同様である。システムコールの引数の一つであるソケット番号（ユーザアプリケーションが複数ある場合はソケット番号に加えてプロセスＩＤ）が識別子管理表に存在すれば、該システムコールはオフロード機能に関するものであると判定でき、かつ、オフロード処理ボード４０でリソースがすでに確保されていることがわかる（ステップＳ９１）。オフロード命令発行部１は、システムコールの引数のうち、識別子以外の引数のうち少なくとも１つ以上の引数と、識別子管理部３により該識別子をオフロード処理ボード４０上の識別子に変換した識別子を引数とするオフロード命令を生成し（ステップＳ９２）、オフロード処理種別ＩＤから判定されるオフロード処理ボード４０へのオフロード命令実行を依頼する（ステップＳ９３）。オフロード処理ボード４０のオフロード命令実行部５は、受け取ったオフロード命令をネットワーク処理部７またはストレージアクセス処理部９により実行し、その結果をオフロード命令発行部１に返す。オフロード命令発行部１は返り値としてオフロード命令の実行結果をオフロード命令実行部５から受け取り、このデータをシステムコールの返り値としてユーザプログラムに返す（ステップＳ９６）。
【００７３】
・識別子の抹消  
図２５は、第６実施形態に係る識別子の抹消の動作を示すフローチャートである。
【００７４】
ユーザアプリケーションがＯＳの管理しているリソースを解放する際、必ずシステムコールが発行される（ステップＳ１００）。この際、該システムコールの引数の一つである、識別子が識別子管理表に存在すれば、該システムコールがオフロード機能に関するものであることが判定できる（ステップＳ１０１）。オフロード機能に関するものであると判定された場合には、オフロード命令発行部１は、識別子管理部３から該システムコールの引数の一つである、識別子に対応するオフロード処理ボード４０上の識別子を検索する。この際、オフロード種別も合わせて参照する。オフロード命令発行部１はオフロード種別ＩＤを元に、オフロード処理ボード４０上でリソースを確保しているネットワーク処理部７またはストレージアクセス処理部９に対して該識別子に関するリソースの解放を依頼するオフロード命令を作成し（ステップＳ１０２）、オフロード処理ボード４０上のオフロード命令実行部５に処理を依頼する（ステップＳ１０３）。オフロード命令実行部５は、該当するリソースを解放する（ステップＳ１０４）。識別子管理部３は、解放されたリソースに対応する識別子の登録を抹消する（ステップＳ１０５）。リソース解放命令の実行結果はオフロード命令発行部１に返され、オフロード命令発行部１は、そのデータをシステムコールの返り値としてユーザに返す（ステップＳ１０６）。
【００７５】
（第７実施形態）  
第７実施形態は、オフロード先においてオフロード命令以外のタスクを実行可能としたものである。このため、本実施形態は、第１実施形態の構成に加え、自律的に動作するタスクを管理するオフロードタスク管理部を備える。本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。
【００７６】
＜構成の説明＞  
図２６は、第７実施形態に係る情報処理装置を示すブロック図である。
【００７７】
メインボード１０は第１実施形態と同様に、オフロード命令発行部１、通信部２、識別子管理部３、識別子情報保持部４で構成される。ネットワーク処理ボード２０は、第１実施形態のオフロード命令実行部５、ネットワーク処理部７、通信部６に加え、オフロードタスク管理部１６を有する。オフロードタスク管理部１６は、自律的に動作するタスクの実行を管理する。
【００７８】
前提として、タスクの自律的動作に関するオフロード処理用のシステムコールが新たに定義される。
【００７９】
＜動作の説明＞  
・識別子の登録  
図２７は、第７実施形態に係る識別子の登録の動作を示すフローチャート、図２８は、第７実施形態に係る識別子の登録の動作を示すシーケンス図である。
【００８０】
ユーザプログラムが該新規システムコールを呼びだした際に、ＯＳは仮想識別子を生成する（ステップＳ１１２）。同時に、オフロード命令実行部５ではネットワーク処理ボード２０上のオフロードタスク管理部１６に新たな待ち受けタスクを生成する。生成され仮想識別子と、待ち受けタスクの識別子を識別子管理部３に登録する（ステップＳ１１３〜Ｓ１１７）。
【００８１】
・識別子の参照  
ユーザプログラムから該仮想識別子を引数とするシステムコールが発行された際には、仮想識別子をキーとして、識別子管理部３にて待ち受けタスクの識別子を検索する。ここでいうシステムコールとは、たとえば、該仮想識別番号を引数として、ｗｒｉｔｅ（出力）する。これにより、自律的に動作する待ち受けタスク（オフロードプログラム）がオフロード処理ボード４０にロードされる。オフロードプログラムのロード動作を示すフローチャートを図２９に示す（ステップＳ１２０〜Ｓ１２７）。ステップＳ１２４において、待ち受けタスクがオフロード処理ボード４０にロードされる。
【００８２】
該仮想識別子に対してｒｅａｄを行うことによって、実行結果を読み取ることができる。実行結果の受信動作を示すフローチャートを図３０に示す（ステップＳ１３０〜Ｓ１３７）。ステップＳ１３５において、オフロードタスク管理部１６から、待ち受けタスクの実行結果が返され、オフロード命令発行部１に戻される。
【００８３】
以上のオフロードプログラムのロード動作および結果受信の動作を図３１のシーケンス図に示す。
【００８４】
処理の完了通知は、割込み、ポーリング等によって実現することができる。オフロードタスク管理部１６からの更新通知を受信する動作を図３２のフローチャートおよびシーケンス図に示す（ステップＳ１４０〜Ｓ１４５）。ステップＳ１４２において、割込み、ポーリング等によりオフロードタスク管理部１６から更新通知（待ち受けタスクからの通知）が取得され、該通知は、ステップＳ１４４においてユーザアプリケーションに返される。
【００８５】
・識別子の抹消  
図３４は、第７実施形態に係るオフロードタスク終了の動作を示すフローチャート図３５は、第７実施形態に係るオフロードタスク終了の動作を示すシーケンス図である。
【００８６】
第１実施形態と同様、ユーザアプリケーションがリソースを解放する際、システムコールが発行される（ステップＳ１５０）。例えば、仮想識別子をｃｌｏｓｅするシステムコールが発行される。該システムコールが発行された場合は、オフロードタスク管理部１６内のタスクを終了させる（ステップＳ１５２〜Ｓ１５４）。識別子管理表からもエントリーを削除し（ステップＳ１５５）、リソースの解放が完了したことをユーザアプリケーションに通知する（ステップＳ１５６）。
【００８７】
（第８実施形態）  
第８実施形態は、第７実施形態におけるオフロードタスクの動作例に関する。本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。
【００８８】
第８実施形態のオフロードタスクは、ネットワーク８から受信したデータをバッファに一定量蓄積する。メインボード１０側のメインＣＰＵは、低消費電力モードに遷移させる。ネットワーク８からのデータの受信が完了した場合またはバッファに蓄積したデータが一定量を超えた場合には、その旨をメインボード１０に通知する。これに応じてメインボード１０はバッファに蓄積されたデータをネットワーク処理ボード２０からまとめて受信する。
【００８９】
（第９実施形態）  
第９実施形態は、第７実施形態におけるオフロードタスクの別の動作例に関する。本実施形態において、第１実施形態と同様の構成および動作については詳細な説明を省略する。第９実施形態のオフロードタスクは、第８実施形態と同様に、ネットワーク８から受信したデータをバッファに蓄積する。さらに第９実施形態のオフロードタスクは、バッファに蓄積されたデータを参照し、当該データの受信をメインボード１０に通知すべきかを判定する。このとき、メインボード１０は低消費電力モード中であり、例えばスリープ動作している。
【００９０】
ネットワーク８から受信したデータは、例えば新着メール、アプリケーションの更新ファイル、スケジュールデータなどである。第９実施形態のオフロードタスクは、例えば新着メールやスケジュールデータなど、即時に通知すべきデータを受信した際にはメインボード１０に通知を行う。一方、即時に通知する必要がないデータを受信した際には、これをバッファに蓄積し、メインボード１０には通知しない。なお、通知を行うべきデータの種別を設定可能としてもよい。
【００９１】
メインボード１０は、ネットワーク処理ボード２０のオフロードタスクから通知を受けた際には、スリープから復帰し、すみやかにデータの受信処理を行う。データの受信時に通知されずバッファに蓄積されたデータは、例えばスリープからの復帰時にまとめ受信処理する。
【００９２】
以上説明した実施形態によれば、リソースを一意に指定可能な識別子の変換機能により命令のオフローディングを実現することができる。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
１…オフロード命令発行部、
２，６…通信部、
３…識別子管理部、
４…識別子情報保持部、
５…オフロード命令実行部、
７…ネットワーク処理部、
８…ネットワーク、
９…ストレージアクセス処理部、
１０…メインボード、
１１…記憶領域、
１２…動作モード記憶部、
１３…低消費電力無線Ｉ／Ｆ、
１４…高速無線Ｉ／Ｆ、
１５…有線Ｉ／Ｆ、
１６…オフロードタスク管理部、
２０…ネットワーク処理ボード、
３０…ストレージ処理ボード
４０…オフロード処理ボード
【図１】
2014071478.tif 000003
【図２】
2014071478.tif 000004
【図３】
2014071478.tif 000005
【図４】
2014071478.tif 000006
【図５】
2014071478.tif 000007
【図６】
2014071478.tif 000008
【図７】
2014071478.tif 000009
【図８】
2014071478.tif 000010
【図９】
2014071478.tif 000011
【図１０】
2014071478.tif 000012
【図１１】
2014071478.tif 000013
【図１２】
2014071478.tif 000014
【図１３】
2014071478.tif 000015
【図１４】
2014071478.tif 000016
【図１５】
2014071478.tif 000017
【図１６】
2014071478.tif 000018
【図１７】
2014071478.tif 000019
【図１８】
2014071478.tif 000020
【図１９】
2014071478.tif 000021
【図２０】
2014071478.tif 000022
【図２１】
2014071478.tif 000023
【図２２】
2014071478.tif 000024
【図２３】
2014071478.tif 000025
【図２４】
2014071478.tif 000026
【図２５】
2014071478.tif 000027
【図２６】
2014071478.tif 000028
【図２７】
2014071478.tif 000029
【図２８】
2014071478.tif 000030
【図２９】
2014071478.tif 000031
【図３０】
2014071478.tif 000032
【図３１】
2014071478.tif 000033
【図３２】
2014071478.tif 000034
【図３３】
2014071478.tif 000035
【図３４】
2014071478.tif 000036
【図３５】
2014071478.tif 000037