(57)【要約】【課題】  他の装置からの情報の受信をポーリングにより判定する場合、タスクの実行が滞ることを抑止する。【解決手段】  タスクを実行する演算処理部と、他の装置との間の通信を制御する通信制御部とを有する情報処理装置において、演算処理部は、実行可能なタスクがある場合、タスクの実行を管理する管理部と、実行可能なタスクがない場合、他の装置からの情報を通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行する待機部とを有する。【選択図】    図１
2019020853.tif 000002
【特許請求の範囲】
【請求項１】
タスクを実行する演算処理部と、他の装置との間の通信を制御する通信制御部とを有する情報処理装置において、
前記演算処理部は、
実行可能なタスクがある場合、タスクの実行を管理する管理部と、
実行可能なタスクがない場合、前記他の装置からの情報を前記通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行する待機部と
を備えることを特徴とする情報処理装置。
【請求項２】
複数の前記演算処理部を備え、
複数の前記演算処理部のうち、実行可能なタスクがない演算処理部のいずれかである第１の演算処理部の前記待機部は、前記判定処理を実行し、
複数の前記演算処理部のうち、実行可能なタスクがない他の演算処理部である第２の演算処理部の前記待機部は、前記判定処理の実行を抑止すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
複数の前記演算処理部の各々に対応して、前記通信制御部が受信した情報を保持する複数の保持部をさらに備え、
前記第１の演算処理部は、前記複数の保持部のそれぞれに対する前記判定処理を実行すること
を特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１の演算処理部の前記待機部は、前記第１の演算処理部に対応する前記保持部に対して実行する前記判定処理の頻度を、複数の前記演算処理部のうち、前記第１の演算処理部を除く演算処理部の各々に対応する前記保持部に対して実行する前記判定処理の頻度に比べて高くすること
を特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２の演算処理部の前記待機部は、所定回数の前記判定処理を実行した後、前記判定処理の実行を抑止すること
を特徴とする請求項２ないし請求項４のいずれか１項に記載の情報処理装置。
【請求項６】
前記待機部は、前記通信制御部による情報の受信の頻度がを所定の頻度より低下した場合、割り込み信号を情報の受信に応じて出力させる指示を前記通信制御部に発行した後、前記判定処理を停止し、
前記演算処理部は、前記割り込み信号の受信に基づいて、前記通信制御部が受信した情報に基づく処理を実行すること
を特徴とする請求項１ないし請求項５のいずれか１項に記載の情報処理装置。
【請求項７】
複数の前記演算処理部を備え、
複数の前記演算処理部のうち、実行可能なタスクがない演算処理部の各々は、前記判定処理を実行すること
を特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記管理部と前記待機部とは、互いに排他的に動作し、
前記待機部が動作中の前記演算処理部の動作周波数は、前記管理部が動作中の前記演算処理部の動作周波数に比べて低く設定されること
を特徴とする請求項１ないし請求項７のいずれか１項に記載の情報処理装置。
【請求項９】
前記管理部および前記待機部の機能は、タスクの実行を管理するカーネルを前記演算処理部が実行することにより実現されること
を特徴とする請求項１ないし請求項８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記待機部の機能は、実行可能なタスクがない場合に前記カーネルが実行するアイドルルーチンにより実現されること
を特徴とする請求項９に記載の情報処理装置。
【請求項１１】
タスクを実行する演算処理部と、他の装置との間の通信を制御する通信制御部とを有する情報処理装置が実行する情報処理方法において、
前記演算処理部が有する管理部が、実行可能なタスクがある場合、タスクの実行を管理し、
前記演算処理部が有する待機部が、実行可能なタスクがない場合、前記他の装置からの情報を前記通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行すること
を特徴とする情報処理方法。
【請求項１２】
他の装置との間の通信を制御する通信制御部とともに情報処理装置に含まれ、タスクを実行する演算処理部に、
実行可能なタスクがある場合、タスクの実行を管理させる処理と、
実行可能なタスクがない場合、前記他の装置からの情報を前記通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行させる処理と
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
通信処理装置から受信するデータを処理する情報処理装置は、例えば、通信処理装置により設定されるフラグをポーリングすることにより、処理するデータを通信処理装置が保持していることを検出する。フラグによりデータの保持を検出した情報処理装置は、通信処理装置と通信することでデータを受信し、受信したデータを処理する。情報処理装置によるデータ処理の負荷が増加した場合、フラグをポーリングする間隔を長くすることで、データ処理の実行がデータの送受信により妨げられることを抑止する手法が提案されている（例えば、特許文献１参照）。
【０００３】
オペレーティングシステムにおいて、デバイスからの割り込み要求に基づく処理の完了後に、割り込み要求の受け付けを所定の期間禁止し、デバイス内のレジスタをポーリングすることで割り込みの発生を検出する手法が提案されている（例えば、特許文献２参照）。割り込み通知に基づきデータを処理するモードとポーリングに基づきデータを処理するモードとをＣＰＵ（Central Processing Unit）の負荷に応じて切り替えることで、割り込み通知に基づく処理によるＣＰＵの占有を抑止する手法が提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−４９８２２号公報
【特許文献２】特開２００１−２１６１７０号公報
【特許文献３】国際公開第２００９／０６０５３０号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ポーリングによるイベントの発生の検出処理は、ソフトウェアにより実行され、ＣＰＵの状態を切り替えるコンテキストスイッチが発生しないため、コンテキストスイッチが発生する割り込み要求によるイベントの発生の検出処理に比べて高速に実行可能である。一方、ＣＰＵは、フラグ等のポーリングを繰り返し実行している間、他の処理を実行できないため、他の処理の実行が滞ってしまうおそれがある。
【０００６】
１つの側面では、本発明は、他の装置からの情報の受信をポーリングにより判定する場合、タスクの実行が滞ることを抑止すること目的とする。
【課題を解決するための手段】
【０００７】
一つの実施態様では、タスクを実行する演算処理部と、他の装置との間の通信を制御する通信制御部とを有する情報処理装置において、演算処理部は、実行可能なタスクがある場合、タスクの実行を管理する管理部と、実行可能なタスクがない場合、他の装置からの情報を通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行する待機部とを有する。
【発明の効果】
【０００８】
１つの側面では、本発明は、他の装置からの情報の受信をポーリングにより判定する場合、タスクの実行が滞ることを抑止することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置、情報処理方法およびプログラムの一実施形態を示す図である。
【図２】図１に示す演算処理部が実行するカーネルの動作の一例を示す図である。
【図３】図１に示す情報処理装置の動作の一例を示す図である。
【図４】情報処理装置、情報処理方法およびプログラムの別の実施形態を示す図である。
【図５】図４に示す各ＣＰＵコアが実行するカーネルの概要の一例を示す図である。
【図６】図５に示す受信キューのメインメモリへの割り当ての一例を示す図である。
【図７】情報処理装置、情報処理方法およびプログラムの別の実施形態を示す図である。
【図８】図７に示す各ＣＰＵコアの動作の一例を示す図である。
【図９】図７に示す各ＣＰＵコアが実行するカーネルの動作の一例を示す図である。
【図１０】図９に示すステップＳ４０の処理の一例を示す図である。
【図１１】図１０に示すステップＳ４４の処理の一例を示す図である。
【図１２】図１０に示すステップＳ４４の処理の別の例を示す図である。
【図１３】図９に示すステップＳ６０の処理の一例を示す図である。
【図１４】情報処理装置、情報処理方法およびプログラムの別の実施形態を示す図である。
【図１５】図１４に示す各ＣＰＵコアが実行するカーネルの動作の一例を示す図である。
【図１６】情報処理装置、情報処理方法およびプログラムの別の実施形態を示す図である。
【図１７】図１６に示す各ＣＰＵコアが実行するカーネルの動作の一例を示す図である。
【図１８】図１７に示すステップＳ４０Ａの処理の一例を示す図である。
【図１９】図１７に示すステップＳ６０Ａの処理の一例を示す図である。
【図２０】ポーリングフラグを持たないＣＰＵのＣＰＵコアが実行するカーネルの動作の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。
【００１１】
図１は、情報処理装置、情報処理方法およびプログラムの一実施形態を示す。図１に示す情報処理装置１００は、例えば、サーバであり、演算処理部１、通信制御部４、タスクキュー６、メインメモリ７および書き替え可能な不揮発性メモリ８を有する。演算処理部１は、ＣＰＵ等のプロセッサまたはＣＰＵコア等のプロセッサコアであり、タスクキュー６に保持されるタスクＴ（Ｔａ、Ｔｂ、Ｔｃ等）を実行する。図１では、演算処理部１は、タスクキュー６に保持されたタスクＴａを実行中である。演算処理部１は、管理部２と待機部３とを有する。例えば、管理部２および待機部３の機能は、演算処理部１が実行するカーネルにより実現される。カーネルは、オペレーティングシステムに含まれ、システムのリソースの管理、および、アプリケーションソフトウェアとハードウェアとのインタフェース等の基本的な機能を提供するプログラムである。
【００１２】
通信制御部４は、情報処理装置１００に接続される他の装置１１０との間の通信を制御する。通信制御部４は、他の装置１１０から受信するパケットを順次保持する複数の記憶領域を含む受信キュー５を有する。パケットは、他の装置１１０から受信する情報の一例であり、メッセージ等を含む。なお、他の装置１１０は、パケット転送以外の手法を用いて、情報を情報処理装置１００に送信し、通信制御部４は、他の装置１１０から受信した情報を受信キュー５に保持してもよい。また、通信制御部４は、情報処理装置１００内に設けられる他の装置（演算処理部１の動作を補助するアクセラレータ等）との間の通信を制御してもよい。
【００１３】
管理部２は、実行可能なタスクＴがタスクキュー６にある場合、タスクＴの実行を管理する。待機部３は、演算処理部１で実行可能なタスクＴがタスクキュー６にない場合、他の装置１１０からのパケットを通信制御部４が受信したかをポーリングにより判定する判定処理を、実行可能なタスクＴが出現するまで実行する。すなわち、待機部３は、他の装置１１０からのパケットを通信制御部４が受信したか否かをポーリングにより判定する。
【００１４】
メインメモリ７は、演算処理部１で実行するタスクＴで使用するデータ、および演算処理部１が実行する各種プログラム等を保持する。各種プログラムは、アプリケーションプログラムまたはカーネルを含むオペレーティングシステム等である。例えば、オペレーティングシステムは、図示しない入出力インタフェースを介して記録媒体１３０等から不揮発性メモリ８に転送された後、情報処理装置１００の起動時に、不揮発性メモリ８からメインメモリ７に転送され、演算処理部１により実行される。記録媒体１３０は、ＣＤ（Compact Disc：登録商標）、ＤＶＤ（Digital Versatile Disc：登録商標）またはＵＳＢ（Universal Serial Bus）メモリ等である。なお、アプリケーションプログラムは、図示しないハードディスク装置等に格納されており、アプリケーションプログラムの起動の指示に基づいて、ハードディスク等からメインメモリ７に転送され、演算処理部１により実行される。
【００１５】
図２は、図１に示す演算処理部１が実行するカーネルの動作の一例を示す。すなわち、図２は、情報処理装置１００が実行する情報処理方法および情報処理装置１００の演算処理部１が実行するプログラムの一例を示す。
【００１６】
まず、ステップＳ１０において、カーネルは、実行可能なタスクＴがタスクキュー６にある場合、処理をステップＳ１２に移行し、実行可能なタスクＴがタスクキュー６にない場合、処理をステップＳ２０に移行する。ステップＳ１２において、カーネルは、タスクＴの実行を管理し、処理をステップＳ１０に戻す。例えば、演算処理部１が実行中のタスクＴは、実行が完了するまでタスクキュー６に保持される。
【００１７】
ステップＳ１０、Ｓ１２の処理は、管理部２により実行される。管理部２は、カーネルの本体部に含まれ、スケジューラおよびディスパッチャの機能を含む。スケジューラは、タスクキュー６が保持するタスクＴの中から実行するタスクＴを決定する。ディスパッチャは、スケジューラの決定に基づいて、実行中のタスクＴの実行を中断させ、スケジューラにより決定されたタスクＴの実行を演算処理部１に開始させる。
【００１８】
ステップＳ２０において、カーネルは、通信制御部４の受信キュー５をポーリングする。次に、ステップＳ２２において、カーネルは、受信キュー５にパケットがある場合、すなわち、イベントの発生を検出した場合、処理をステップＳ２８に移行する。一方、カーネルは、受信キュー５にパケットがない場合、すなわち、イベントの発生を検出しない場合、処理をステップＳ２４に移行する。
【００１９】
ステップＳ２４において、カーネルは、例えば、タスクキュー６またはタスクキュー６の状態を示すフラグを参照して、実行可能なタスクＴの有無をチェックする。次に、ステップＳ２６において、カーネルは、タスクキュー６に実行可能なタスクＴがある場合、処理をステップＳ１２に移行し、タスクキュー６に実行可能なタスクＴがない場合、処理をステップＳ２０に移行する。ステップＳ２０からステップＳ２６までの処理は、実行可能なタスクＴが出現するまで、他の装置１１０からのパケットを通信制御部４が受信したかをポーリングにより判定する判定処理の一例である。
【００２０】
一方、ステップＳ２８において、カーネルは、パケットの受信処理を実行し、処理をステップＳ２０に移行する。なお、ステップＳ２８において、カーネルは、パケットの受信処理をカーネルの本体部に依頼してもよい。パケットの受信処理をカーネルの本体部に依頼した場合、パケットの受信処理を実行するタスクＴがタスクキュー６に格納されるため、その後のステップＳ２６において、処理はステップＳ１２に移行される。
【００２１】
ステップＳ２０からステップＳ２８の処理は、待機部３により実行される。待機部３は、カーネルの本体部が実行する処理とは別の処理（アイドルルーチン）を実行する。タスクキュー６に実行可能なタスクＴがない場合、ステップＳ２０からＳ２８の処理が繰り返し実行される。すなわち、待機部３は、アプリケーションプログラム等のタスクＴが実行されない期間に、コンテキストスイッチが発生する割り込み処理を使用することなく、受信キュー５のポーリングを実行することができる。ポーリングは、タスクキュー６に実行可能なタスクＴがない場合に実行されるため、他の装置１１０からの情報の受信をポーリングにより判定する場合にも、タスクＴの実行が滞ることを抑止することができる。なお、図２に示すように、管理部２の動作と待機部３の動作とは排他的に実行される。
【００２２】
例えば、ステップＳ１０からステップＳ２０に処理が移行される前、演算処理部１の動作周波数は、ステップＳ１０、Ｓ１２を処理する演算処理部１の動作周波数に比べて下げられ、演算処理部１は、通常モードから消費電力を抑えた待機モードに移行する。また、ステップＳ２６からステップＳ１２に処理が移行される前、演算処理部１の動作周波数は、ステップＳ１０、Ｓ１２を処理する元の動作周波数に戻され、演算処理部１は、待機モードから通常モードに復帰する。
【００２３】
すなわち、管理部２の動作は、待機モードに比べて動作周波数が高い通常モードで実行され、待機部３の動作は、通常モードに比べて動作周波数が低い待機モードで実行される。タスクＴの実行に比べて高速性が要求されない受信キュー５のポーリングを待機モードで実行することで、通常モードで実行する場合に比べて、演算処理部１および情報処理装置１００の消費電力を削減することができる。
【００２４】
図３は、図１に示す情報処理装置１００の動作の一例を示す。図３において、管理部２、待機部３およびタスクＴに示す細長い矩形は、処理の実行を示す。なお、図３では、管理部２の処理を示す矩形とタスクＴの処理を示す矩形とが重複しているが、実際には、演算処理部１は、処理を重複させることなく時分割で実行する。下向きの矢印で示すポーリングは、図２のステップ２０の処理を示し、上向きの矢印で示すタスクチェックは、図２のステップＳ２４の処理を示す。
【００２５】
図３の初期状態において、タスクキュー６は、タスクＴａ、Ｔｂを保持する（図３（ａ））。管理部２は、タスクキュー６に保持されたタスクＴａ、Ｔｂのうち、タスクＴａの実行を決定し、演算処理部１は、タスクＴａを実行する（図３（ｂ））。タスクＴａの実行後、管理部２は、タスクキュー６に保持されたタスクＴｂの実行を決定し、演算処理部１は、タスクＴｂを実行する（図３（ｃ））。
【００２６】
タスクＴｂの実行により、タスクキュー６は空になるため、管理部２は、処理を停止し、待機部３（アイドルルーチン）が管理部２に代わって処理を開始する（図３（ｄ））。図２で説明したように、待機部３は、ポーリングとタスクチェックとを交互に実行し、２回目のポーリングで受信キュー５がパケットＰ０を保持したことを検出する（図３（ｅ））。演算処理部１は、タスクＴが実行されない期間にポーリングを実行し、タスクＴが実行される期間にポーリングを実行しない。すなわち、ポーリングは、タスクＴの実行と競合することなく実行される。このため、他の装置１１０からのパケットの受信をポーリングにより判定する場合にも、タスクＴの実行が滞ることを抑止することができる。
【００２７】
図３に示す例では、待機部３は、パケットＰ０の受信処理をカーネルの本体部に依頼する。カーネルの本体部は、パケットの受信処理の依頼に基づいて、パケットＰ０の受信処理を実行するタスクＴ０をタスクキュー６に格納する（図３（ｆ））。待機部３は、タスクチェックにおいて、タスクキュー６に実行可能なタスクＴ０が保持されたことを検出し、処理を終了する（図３（ｇ））。
【００２８】
管理部２は、待機部３に代わって処理を開始し、タスクキュー６に保持されたタスクＴ０の実行を決定する（図３（ｈ））。演算処理部１は、タスクＴ０の実行を開始し、受信キュー５に保持されたパケットＰ０の受信処理を実行する（図３（ｉ））。タスクＴ０の実行により、タスクキュー６は空になるため、管理部２は、処理を停止し、待機部３が管理部２に代わって処理を開始する（図３（ｊ））。
【００２９】
待機部３は、ポーリングとタスクチェックとを交互に実行し、タスクチェックによりタスクキュー６に新たに保持されたタスクＴｃを検出し、処理を終了する（図３（ｋ））。管理部２は、待機部３に代わって処理を開始し、タスクキュー６に保持されたタスクＴｃの実行を決定する（図３（ｌ））。演算処理部１は、タスクＴｃを実行する（図３（ｍ））。
【００３０】
タスクＴｃの実行により、タスクキュー６は空になるため、管理部２は、処理を停止し、待機部３が管理部２に代わって処理を開始する（図３（ｎ））。待機部３は、ポーリングで受信キュー５がパケットＰ１を保持することを検出する（図３（ｏ））。パケットＰ１の受信処理を待機部３から依頼されたカーネルの本体部は、パケットＰ１の受信処理を実行するタスクＴ１をタスクキュー６に格納する（図３（ｐ））。待機部３は、タスクチェックにおいて、タスクキュー６に実行可能なタスクＴ１が保持されたことを検出し、処理を終了する（図３（ｑ））。
【００３１】
管理部２は、待機部３に代わって処理を開始し、タスクキュー６に保持されたタスクＴ１の実行を決定する（図３（ｒ））。演算処理部１は、タスクＴ１の実行を開始し、受信キュー５に保持されたパケットＰ１の受信処理を実行する（図３（ｓ））。
【００３２】
以上、図１から図３に示す実施形態では、他の装置１１０からのパケットの受信をポーリングにより判定する場合にも、タスクＴの実行が滞ることを抑止することができる。換言すれば、タスクＴが実行されないアイドルルーチンの期間にポーリングを実行するため、情報処理装置１００によるタスクＴの処理性能を低下させることなく、受信キュー５のポーリングを実行することができる。また、受信キュー５のポーリングを待機モードで実行することで、通常モードで実行する場合に比べて、情報処理装置１００の消費電力を削減することができる。
【００３３】
図４は、情報処理装置、情報処理方法およびプログラムの別の実施形態を示す。図４に示すノード１００Ａは、ＣＰＵ１０、メインメモリ２０、フラッシュメモリ３０、ネットワークインタフェースＮＩＣ（Network Interface Controller）、ディスクインタフェースＤＩＯ、通信インタフェースＣＩＦ、ＨＤＤ（Hard Disk Drive）およびＦＰＧＡ（Field-Programmable Gate Array）を有する。ＣＰＵ１０は、複数のＣＰＵコア１２（１２ａ、１２ｂ、１２ｃ、１２ｄ）、キャッシュ制御部１４およびキャッシュメモリ１６を有する。なお、ＣＰＵコア１２の数は、４つに限定されない。
【００３４】
例えば、ノード１００Ａは、ＨＰＣ（High Performance Computing）分野で使用されるサーバ等であり、情報処理装置の一例である。各ＣＰＵコア１２ａ−１２ｄは、演算処理部の一例である。ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦの各々は、通信制御部の一例である。ノード１００Ａは、ネットワーク１２０を介して他のノード１１２に接続され、ノード１００Ａ、１１２により情報処理システムが構築される。ノード１１２、ＨＤＤおよびＦＰＧＡは、他の装置の一例である。
【００３５】
キャッシュ制御部１４は、ＣＰＵコア１２に入出力するデータを制御し、ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦに入出力するデータを制御する。例えば、キャッシュ制御部１４は、ＣＰＵコア１２による読み出し対象のデータがキャッシュメモリ１６に保持される場合（キャッシュヒット）、キャッシュメモリ１６から読み出したデータをＣＰＵコアに出力する。キャッシュ制御部１４は、ＣＰＵコア１２による読み出し対象のデータがキャッシュメモリ１６に保持されていない場合（キャッシュミス）、メインメモリ２０から読み出したデータをＣＰＵコアに出力するとともに、キャッシュメモリ１６に格納する。
【００３６】
メインメモリ２０は、各ＣＰＵコア１２ａ−１２ｄで処理するデータ、および各ＣＰＵコア１２ａ−１２ｄが実行する各種プログラム（アプリケーションプログラムおよびカーネルを含むオペレーティングシステム等）を保持する。例えば、オペレーティングシステムは、記録媒体１３０等からフラッシュメモリ３０に転送された後、ノード１００Ａの起動時にフラッシュメモリ３０からメインメモリ２０に転送され、ＣＰＵコア１２ａ−１２ｄにより実行される。アプリケーションプログラムは、アプリケーションプログラムの起動の指示に基づいて、ＨＤＤからメインメモリ２０に転送され、ＣＰＵコア１２ａ−１２ｄのいずれかにより実行される。
【００３７】
ネットワークインタフェースＮＩＣは、ＣＰＵ１０とネットワーク１２０との間での通信を制御する機能を有する。ネットワークインタフェースＮＩＣは、ネットワーク１２０を介して他のノード１１２等から受信するパケットを保持する複数の受信キューＲＱＵＥ０を有する。例えば、ネットワークインタフェースＮＩＣは、４つのＣＰＵコア１２ａ−１２ｄの各々に対応する４つの受信キューＲＱＵＥ０を有する。各受信キューＲＱＵＥ０に保持されるパケットは、対応するＣＰＵコア１２により優先的に処理されるが、対応するＣＰＵコア１２以外のＣＰＵコア１２で処理されてもよい。ネットワークインタフェースＮＩＣは、各ＣＰＵコア１２がネットワーク１２０に出力するパケットを保持する図示しない送信キューを有する。
【００３８】
ディスクインタフェースＤＩＯは、ＣＰＵ１０とＨＤＤとの間での通信を制御する機能を有する。ディスクインタフェースＤＩＯは、ＨＤＤから受信するデータ等を含むパケットを保持する複数の受信キューＲＱＵＥ１を有する。例えば、ディスクインタフェースＤＩＯは、４つのＣＰＵコア１２ａ−１２ｄの各々に対応する４つの受信キューＲＱＵＥ１を有する。ディスクインタフェースＤＩＯは、各ＣＰＵコア１２がＨＤＤに出力する書き込みデータ等を含むパケットを保持する図示しない送信キューを有する。
【００３９】
通信インタフェースＣＩＦは、ＣＰＵ１０とＦＰＧＡとの間での通信を制御する機能を有する。通信インタフェースＣＩＦは、ＦＰＧＡから受信する処理データ等を含むパケットを保持する複数の受信キューＲＱＵＥ２を有する。例えば、通信インタフェースＣＩＦは、４つのＣＰＵコア１２ａ−１２ｄの各々に対応する４つの受信キューＲＱＵＥ２を有する。通信インタフェースＣＩＦは、各ＣＰＵコア１２がＦＰＧＡに出力する処理データ等を含むパケットを保持する図示しない送信キューを有する。なお、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２は、メインメモリ２０の所定の記憶領域に割り当てられてもよい。以下では、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２が、メインメモリ２０に割り当てられる例が説明される。受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２は、パケットを保持する保持部の一例である。
【００４０】
図５は、図４に示す各ＣＰＵコア１２が実行するカーネル５０の概要の一例を示す。カーネル５０は、カーネル本体部６０、アイドルルーチン７０、ＮＩＣドライバ９０、ＤＩＯドライバ９１およびＣＩＦドライバ９２を有する。カーネル本体部６０は、管理部の一例であり、アイドルルーチン７０は、待機部の一例である。
【００４１】
カーネル本体部６０は、タスクキュー２２が保持するタスクＴの中から実行するタスクＴを決定するスケジューラ６２と、スケジューラにより決定されたタスクＴを対応するＣＰＵコア１２に実行させるディスパッチャ６４とを有する。なお、タスクキュー２２は、例えば、メインメモリ２０の記憶領域に割り当てられる。カーネル本体部６０とアイドルルーチン７０が実行する処理は、排他的に実行される。
【００４２】
アイドルルーチン７０は、タスクチェック処理７２およびポーリング処理７４を有する。タスクチェック処理７２は、タスクキュー２２またはタスクキュー２２の状態を示すフラグを参照して実行可能なタスクＴの有無をチェックする。ポーリング処理７４は、メインメモリ２０等に割り当てられるポーリングリスト８０、８１、８２が保持するアドレス情報に基づいて、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングする処理を実行する。
【００４３】
ポーリングリスト８０は、ネットワークインタフェースＮＩＣ（図４）の動作を制御するＮＩＣドライバ９０が管理する４つの受信キューＲＱＵＥ０の各々に割り当てられるアドレスＡＤ０（ＡＤ００、ＡＤ０１、ＡＤ０２、ＡＤ０３）を保持する。ポーリングリスト８１は、ディスクインタフェースＤＩＯ（図４）の動作を制御するＤＩＯドライバ９１が管理する４つの受信キューＲＱＵＥ１の各々に割り当てられるアドレスＡＤ１（ＡＤ１０、ＡＤ１１、ＡＤ１２、ＡＤ１３）を保持する。ポーリングリスト８２は、通信インタフェースＣＩＦ（図４）の動作を制御するＣＩＦドライバ９２が管理する４つの受信キューＲＱＵＥ２の各々に割り当てられるアドレスＡＤ２（ＡＤ２０、ＡＤ２１、ＡＤ２２、ＡＤ２３）を保持する。ポーリングリスト８０、８１、８２は、ＣＰＵ１０に設けられるレジスタ等に割り当てられてもよい。
【００４４】
図５に示すカーネル５０の動作は、ＣＰＵコア１２毎に実行されることを除き、図２に示す動作フローと同様である。すなわち、カーネル本体部６０の動作は、図２の管理部２の動作と同様であり、アイドルルーチン７０の動作は、図２に示す待機部３の動作と同様である。
【００４５】
各ＣＰＵコア１２ａ−１２ｄのカーネル５０は、アイドルルーチン７０のポーリング処理７４において、ポーリングリスト８０、８１、８２のアドレスＡＤを順次参照し、全ての受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２の状態をポーリングする。なお、各ＣＰＵコア１２ａ−１２ｄのカーネル５０による排他制御により、複数のＣＰＵコア１２が同一のパケットの受信処理を重複して実行することはない。
【００４６】
図４に示すノード１００Ａの動作は、複数のＣＰＵコア１２ａ−１２ｄが実行するアイドルルーチンにより受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２がポーリングされることを除き、図３に示した動作と同様である。すなわち、ノード１００Ａでは、各ＣＰＵコア１２ａ−１２ｄが、図３に示す演算処理部１の動作と同様の動作を実行する。
【００４７】
図６は、図５に示す受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のメインメモリ２０への割り当ての一例を示す。ネットワークインタフェースＮＩＣにおいて、ＣＰＵコア１２ａに対応する受信キューＲＱＵＥ０は、アドレスＡＤ００を先頭とする所定サイズの記憶領域に割り当てられる。ＣＰＵコア１２ｂに対応する受信キューＲＱＵＥ０は、アドレスＡＤ０１を先頭とする所定サイズの記憶領域に割り当てられる。ＣＰＵコア１２ｃに対応する受信キューＲＱＵＥ０は、アドレスＡＤ０２を先頭とする所定サイズの記憶領域に割り当てられる。ＣＰＵコア１２ｄに対応する受信キューＲＱＵＥ０は、アドレスＡＤ０３を先頭とする所定サイズの記憶領域に割り当てられる。
【００４８】
同様に、ディスクインタフェースＤＩＯにおいて、各ＣＰＵコア１２ａ−１２ｄに対応する４つの受信キューＲＱＵＥ１の各々は、アドレスＡＤ１０、ＡＤ１１、ＡＤ１２、ＡＤ１３のそれぞれを先頭とする所定サイズの記憶領域に割り当てられる。通信インタフェースＣＩＦにおいて、各ＣＰＵコア１２ａ−１２ｄに対応する４つの受信キューＲＱＵＥ２の各々は、アドレスＡＤ２０、ＡＤ２１、ＡＤ２２、ＡＤ２３のそれぞれを先頭とする所定サイズの記憶領域に割り当てられる。
【００４９】
以上、図４から図６に示す実施形態では、各ＣＰＵコア１２ａ−１２ｄが実行するアイドルルーチンにより、他のノード１１２、ＨＤＤまたはＦＰＧＡからのパケットの受信をポーリングにより判定することで、タスクＴの実行が滞ることを抑止することができる。すなわち、タスクＴが実行されないアイドルルーチンの期間にポーリングを実行することで、ノード１００ＡによるタスクＴの処理性能を低下させることなく、各受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行することができる。
【００５０】
図７は、情報処理装置、情報処理方法およびプログラムの別の実施形態を示す。図４で説明した要素と同一または同様の要素については、同一の符号を付し、詳細な説明は省略する。図７に示すノード１００Ｂは、図４に示すＣＰＵ１０の代わりにＣＰＵ１０Ｂを有することを除き、図４に示すノード１００Ａと同じである。ＣＰＵ１０Ｂは、ＣＰＵコア１２ａ、１２ｂ、１２ｃ、１２ｄにより参照および設定が可能なポーリングフラグＰＦＬＧを有することを除き、図４に示すＣＰＵ１０と同じである。
【００５１】
ポーリングフラグＰＦＬＧは、ＣＰＵコア１２ａ、１２ｂ、１２ｃ、１２ｄがそれぞれ実行するカーネルのいずれか１つのみで、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングするために設けられる。例えば、ポーリングフラグＰＦＬＧが”０”の場合、ＣＰＵコア１２ａ、１２ｂ、１２ｃ、１２ｄのいずれも、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングしていないことを示す。ポーリングフラグＰＦＬＧが”１”の場合、ＣＰＵコア１２ａ、１２ｂ、１２ｃ、１２ｄのいずれか１つが、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングしていることを示す。
【００５２】
各ＣＰＵコア１２が実行するカーネルの概要は、ポーリングフラグＰＦＬＧを”１”に設定したアイドルルーチン７０のみが受信キューＲＱＵＥ０−ＲＱＵＥ２のポーリングを実行することを除き、図５に示すカーネルの概要と同じである。換言すれば、図７に示すＣＰＵコア１２ａ−１２ｄの各々が実行するカーネルにおいて、ポーリングフラグＰＦＬＧを”１”に設定していないアイドルルーチン７０（図５）は、タスクチェック処理７２のみを実行する。
【００５３】
図８は、図７に示す各ＣＰＵコア１２ａ−１２ｄの動作の一例を示す。図８では、説明を簡単にするために、各タスクＴの実行時間と、タスクＴが実行されないアイドルルーチンＩＤＬＥの実行時間とは、互いに同じであるとする。アイドルルーチンＩＤＬＥが実行する処理の例は、図９に示す。
【００５４】
時刻ｔ１において、ＣＰＵコア１２ａ−１２ｄは、タスクＴａ、Ｔｂ、Ｔｃ、Ｔｄをそれぞれ実行する。タスクＴを実行中のＣＰＵコア１２は、アイドルルーチンＩＤＬＥを実行しない。時刻ｔ２において、ＣＰＵコア１２ａは、タスクＴｅを実行し、ＣＰＵコア１２ｂ、１２ｃ、１２ｄは、アイドルルーチンＩＤＬＥを実行する。図８において、網掛けで示すアイドルルーチンＩＤＬＥは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングと、実行可能なタスクＴの有無のチェックとを実行することを示す。白抜きで示すアイドルルーチンＩＤＬＥは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行せず、実行可能なタスクＴの有無のチェックのみを実行することを示す。すなわち、時刻ｔ２では、アイドルルーチンＩＤＬＥを実行するＣＰＵコア１２ｂ、１２ｃ、１２ｄのうち、ＣＰＵコア１２ｄのみが、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行する。網掛けで示すアイドルルーチンＩＤＬＥを実行するＣＰＵコア１２は、第１の演算処理部の一例であり、白抜きで示すアイドルルーチンＩＤＬＥを実行するＣＰＵコア１２は、第２の演算処理部の一例である。
【００５５】
時刻ｔ３において、ＣＰＵコア１２ｂ、１２ｃは、タスクＴｆ、Ｔｇをそれぞれ実行し、ＣＰＵコア１２ａ、１２ｄは、アイドルルーチンＩＤＬＥを実行する。受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングは、時刻ｔ２からアイドルルーチンＩＤＬＥを実行しているＣＰＵコア１２ｄにより継続して実行される。
【００５６】
この後、時刻ｔ４から時刻ｔ６においても、アイドルルーチンＩＤＬＥを実行するＣＰＵコア１２が複数存在する場合、ＣＰＵコア１２のいずれか１つが、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行する。アイドルルーチンＩＤＬＥを実行するＣＰＵコア１２が１つのみ存在する場合、アイドルルーチンＩＤＬＥを実行するＣＰＵコア１２が、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行する。アイドルルーチンＩＤＬＥを実行するＣＰＵコア１２が存在しない場合、アイドルルーチンＩＤＬＥは実行されない。
【００５７】
なお、予め決められた１つのＣＰＵコア１２のみが、アイドルルーチンＩＤＬＥで受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行してもよい。例えば、ＣＰＵコア１２ａのみで受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行する場合、ポーリングは、時刻ｔ１から時刻ｔ６のうち、タスクＴが実行されない時刻ｔ３と時刻ｔ６とで実行される。ＣＰＵコア１２ａは、図２に示したアイドルルーチンの処理を実行し、他のＣＰＵコア１２ｂ−１２ｄは、図２に示したアイドルルーチンからステップＳ２０、Ｓ２２を除いた処理を実行する。予め決められた１つのＣＰＵコア１２のみで受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを実行する場合、ＣＰＵコア１２ａ−１２ｄのいずれでポーリングを実行するかを決める処理は実行されない。このため、ＣＰＵコア１２ａ−１２ｄのいずれでポーリングを実行するかを決める場合に比べて、アイドルルーチンの処理を簡易にすることができる。
【００５８】
図９は、図７に示す各ＣＰＵコア１２ａ−１２ｄが実行するカーネルの動作の一例を示す。すなわち、図９は、情報処理装置の一例であるノード１００Ｂが実行する情報処理方法およびノード１００Ｂの各ＣＰＵコア１２が実行するプログラムの一例を示す。図２と同じ処理については、同じ符号を付し、詳細な説明は省略する。
【００５９】
まず、ステップＳ１０において、カーネルは、実行可能なタスクＴがある場合、処理をステップＳ１２に移行し、実行可能なタスクＴのいずれもない場合、処理をステップＳ３０に移行する。ステップＳ１２において、カーネルは、タスクＴの実行を管理し、処理をステップＳ１０に戻す。ステップＳ１０、Ｓ１２の処理は、図５に示すカーネル本体部６０により実行される。
【００６０】
ステップＳ３０において、アイドルルーチンは、ポーリングフラグＰＦＬＧが”０”の場合、受信キューＲＱＵＥをポーリングしているＣＰＵコア１２がないため、受信キューＲＱＵＥをポーリングするために、処理をステップＳ４０に移行する。一方、アイドルルーチンは、ポーリングフラグＰＦＬＧが”０”でない場合（すなわち、”１”）、受信キューＲＱＵＥをポーリングしているＣＰＵコア１２が既に存在するため、処理をステップＳ６０に移行する。
【００６１】
ステップＳ４０において、アイドルルーチンは、図７に示す受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングする処理と、実行可能なタスクＴの有無をチェックする処理とを実行する。ステップＳ６０において、アイドルルーチンは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングせずに、実行可能なタスクＴの有無のみをチェックする処理を実行する。ステップＳ４０、Ｓ６０の後、処理はステップＳ１２に移行される。ステップＳ４０の例は、図１０に示され、ステップＳ６０の例は、図１３に示される。ステップＳ３０、Ｓ４０、Ｓ６０の処理は、図５に示すアイドルルーチン７０により実行される。
【００６２】
ポーリングフラグＰＦＬＧは、後述するステップＳ４０の処理において”１”に設定される。ポーリングフラグＰＦＬＧが”１”に設定された後にアイドルルーチンを実行する他のＣＰＵコア１２は、受信キューＲＱＵＥのポーリングを実行しないステップＳ６０の処理を実行する。すなわち、受信キューＲＱＵＥのポーリングを実行するステップＳ４０の処理は、ＣＰＵコア１２のいずれか１つのみで実行され、他のＣＰＵコア１２は、受信キューＲＱＵＥのポーリングを実行しない。これにより、受信キューＲＱＵＥのポーリングがＣＰＵコア１２ａ−１２ｄにより重複して実行されることを抑止することができ、ＣＰＵコア１２ａ−１２ｄが実行する命令の総数を削減することができる。この結果、全てのＣＰＵコア１２ａ−１２ｄが受信キューＲＱＵＥをポーリングする場合に比べて、ＣＰＵ１０Ｂの消費電力を削減することができる。
【００６３】
また、全てのＣＰＵコア１２ａ−１２ｄが受信キューＲＱＵＥのポーリングを実行する場合で、複数のＣＰＵコア１２が重複してパケットの受信を検出した場合、パケットの受信処理を実行するＣＰＵコア１２を決める調停処理が実行される。これに対して、１つのＣＰＵコア１２が受信キューＲＱＵＥのポーリングを実行する場合、調停処理を省略することができ、ＣＰＵ１０Ｂの消費電力をさらに削減することができる。
【００６４】
なお、図２と同様に、アイドルルーチンを実行する待機モードでのＣＰＵコア１２の動作周波数は、カーネル本体部を実行する通常モードでのＣＰＵコア１２の動作周波数に比べて低く設定される。これにより、受信キューＲＱＵＥのポーリングを通常モードで実行する場合に比べて、ノード１００Ｂの消費電力を削減することができる。
【００６５】
図１０は、図９に示すステップＳ４０の処理の一例を示す。図２と同じ処理については、詳細な説明は省略する。図１０に示すステップＳ４４、Ｓ４６、Ｓ４８、Ｓ５０、Ｓ５２のそれぞれの処理は、図２に示すステップＳ２０、Ｓ２２、Ｓ２４、Ｓ２６、Ｓ２８のそれぞれの処理と同様である。
【００６６】
まず、ステップＳ４２において、アイドルルーチンは、ポーリングフラグＰＦＬＧを”１”に設定する。これにより、図１０に示すステップＳ４０を実行するＣＰＵコア１２は、受信キューＲＱＵＥのポーリングを排他的に実行する。次に、ステップＳ４４において、アイドルルーチンは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングする。次に、ステップＳ４６において、アイドルルーチンは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のいずれかにパケットがある場合、処理をステップＳ５２に移行する。アイドルルーチンは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のいずれにもパケットがない場合、処理をステップＳ４８に移行する。ステップＳ５２において、アイドルルーチンは、パケットの受信処理を実行し、あるいは、パケットの受信処理をカーネル本体部６０（図５）に依頼し、処理をステップＳ４４に移行する。
【００６７】
ステップＳ４８において、アイドルルーチンは、例えば、タスクキュー２２（図５）を参照して、実行可能なタスクＴの有無をチェックする。次に、ステップＳ５０において、アイドルルーチンは、タスクキュー２２に実行可能なタスクＴがある場合、処理をステップＳ５４に移行し、タスクキュー２２に実行可能なタスクＴがない場合、処理をステップＳ４４に移行する。ステップＳ５０において、タスクキュー２２に実行可能なタスクＴがあることが検出された場合、アイドルルーチンは終了され、カーネル本体部の処理が実行される。この場合、受信キューＲＱＵＥのポーリングの実行を、他のＣＰＵコア１２に任せるため、ステップＳ５４において、アイドルルーチンは、ポーリングフラグＰＦＬＧを”０”に設定し、処理を終了する。
【００６８】
図１１は、図１０に示すステップＳ４４の処理の一例を示す。ポーリングフラグＰＦＬＧの”０”を検出したアイドルルーチンは、ステップＳ４４において、全ての受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２のポーリングを順次実行する。これにより、実行可能なタスクＴがないＣＰＵコア１２に対応する受信キューＲＱＵＥだけでなく、タスクＴを実行中のＣＰＵコア１２ａに対応する受信キューＲＱＵＥのポーリングも実行することができる。したがって、ＣＰＵコア１２の状態に依存せず、受信キューＲＱＵＥのポーリングを平等に実行することができる。また、ＣＰＵコア１２のいずれか１つが実行するアイドルルーチンのみが受信キューＲＱＵＥをポーリングすることで、複数のＣＰＵコア１２ａでポーリングする場合に比べて、ポーリングの制御を簡易にすることができる。
【００６９】
図１２は、図１０に示すステップＳ４４の処理の別の例を示す。図１２に示す例は、ＣＰＵコア１２ａ−１２ｄのうち、ＣＰＵコア１２ａのカーネルが図１０に示すポーリング付きのアイドルルーチンを実行する場合の例を示す。
【００７０】
ステップＳ４４において、ＣＰＵコア１２ａは、ＣＰＵコア１２ａに割り当てられた受信キューＲＱＵＥ０（ＡＤ００）、ＲＱＵＥ１（ＡＤ１０）、ＲＱＵＥ２（ＡＤ２０）を順次ポーリングする。この後、ＣＰＵコア１２ａは、ＣＰＵコア１２ｂに割り当てられた受信キューＲＱＵＥ０（ＡＤ０１）、ＲＱＵＥ１（ＡＤ１１）、ＲＱＵＥ２（ＡＤ２１）を順次ポーリングする。
【００７１】
次に、ＣＰＵコア１２ａは、ＣＰＵコア１２ａに割り当てられた受信キューＲＱＵＥ０（ＡＤ００）、ＲＱＵＥ１（ＡＤ１０）、ＲＱＵＥ２（ＡＤ２０）を順次ポーリングする。この後、ＣＰＵコア１２ａは、ＣＰＵコア１２ｃに割り当てられた受信キューＲＱＵＥ０（ＡＤ０２）、ＲＱＵＥ１（ＡＤ１２）、ＲＱＵＥ２（ＡＤ２２）を順次ポーリングし、２回目のステップＳ４４の処理を終了する。
【００７２】
次に、ＣＰＵコア１２ａは、ＣＰＵコア１２ａに割り当てられた受信キューＲＱＵＥ０（ＡＤ００）、ＲＱＵＥ１（ＡＤ１０）、ＲＱＵＥ２（ＡＤ２０）を順次ポーリングする。この後、ＣＰＵコア１２ａは、ＣＰＵコア１２ｄに割り当てられた受信キューＲＱＵＥ０（ＡＤ０３）、ＲＱＵＥ１（ＡＤ１３）、ＲＱＵＥ２（ＡＤ２３）を順次ポーリングし、ステップＳ４４の処理を終了する。
【００７３】
すなわち、図１２に示す例では、ステップＳ４４の処理を実行するＣＰＵコア１２は、自ＣＰＵコア１２に対応する受信キューＲＱＵＥのポーリングと、他のＣＰＵコア１２に対応する受信キューＲＱＵＥのポーリングとを交互に実行する。これにより、自ＣＰＵコア１２に対応する受信キューＲＱＵＥのポーリングを優先的に実行することができ、自ＣＰＵコア１２で実行すべきタスクＴを優先的に実行することができる。
【００７４】
図１３は、図９に示すステップＳ６０の処理の一例を示す。図２と同じ処理については、詳細な説明は省略する。図１３に示すステップＳ６２、Ｓ６４のそれぞれの処理は、図２に示すステップＳ２４、Ｓ２６のそれぞれの処理と同様である。
【００７５】
まず、ステップＳ６２において、アイドルルーチンは、例えば、タスクキュー２２（図５）を参照して、実行可能なタスクＴの有無をチェックする。次に、ステップＳ６４において、アイドルルーチンは、タスクキュー２２に実行可能なタスクＴがある場合、処理を終了し、タスクキュー２２に実行可能なタスクＴがない場合、処理をステップＳ６６に移行する。
【００７６】
ステップＳ６６において、アイドルルーチンは、ポーリングフラグＰＦＬＧが”０”の場合、受信キューＲＱＵＥをポーリングしているＣＰＵコア１２がない。この場合、アイドルルーチンは、受信キューＲＱＵＥをポーリングするために、処理を図１０のステップＳ４２にジャンプする。一方、ポーリングフラグＰＦＬＧが”０”でない場合（すなわち、”１”）、受信キューＲＱＵＥをポーリングしているＣＰＵコア１２が既に存在する。この場合、実行可能なタスクＴの有無のみをチェックするため、処理をステップＳ６２に移行する。
【００７７】
以上、図７から図１３に示す実施形態においても、図１から図６に示す実施形態と同様に、他のノード１１２、ＨＤＤまたはＦＰＧＡからのパケットの受信をポーリングにより判定する場合にも、タスクＴの実行が滞ることを抑止することができる。受信キューＲＱＵＥのポーリングを待機モードで実行することで、通常モードで実行する場合に比べて、ノード１００Ｂの消費電力を削減することができる。
【００７８】
さらに、図７から図１３に示す実施形態では、受信キューＲＱＵＥのポーリングをＣＰＵコア１２のいずれか１つのみで実行することで、受信キューＲＱＵＥのポーリングが複数のＣＰＵコア１２により重複して実行されることを抑止することができる。これにより、ＣＰＵコア１２ａ−１２ｄが実行する命令の総数を削減することができ、全てのＣＰＵコア１２ａ−１２ｄが受信キューＲＱＵＥをポーリングする場合に比べて、ＣＰＵ１０Ｂの消費電力を削減することができる。
【００７９】
１つのＣＰＵコア１２が全ての受信キューＲＱＵＥをポーリングすることで、実行可能なタスクＴがないＣＰＵコア１２に対応する受信キューＲＱＵＥだけでなく、タスクＴを実行中のＣＰＵコア１２ａに対応する受信キューＲＱＵＥもポーリングすることができる。したがって、ＣＰＵコア１２の状態に依存せず、受信キューＲＱＵＥのポーリングを平等に実行することができる。また、ＣＰＵコア１２のいずれか１つが実行するアイドルルーチンのみが受信キューＲＱＵＥをポーリングすることで、複数のＣＰＵコア１２ａでポーリングする場合に比べて、ポーリングの制御を簡易にすることができる。
【００８０】
自ＣＰＵコア１２に対応する受信キューＲＱＵＥのポーリングと、他のＣＰＵコア１２に対応する受信キューＲＱＵＥのポーリングとを交互に実行することで、自ＣＰＵコア１２に対応する受信キューＲＱＵＥのポーリングを優先的に実行することができる。この結果、自ＣＰＵコア１２で実行すべきタスクＴを優先的に実行することができる。
【００８１】
図１４は、情報処理装置、情報処理方法およびプログラムの別の実施形態を示す。図４および図７で説明した要素と同一または同様の要素については、同一の符号を付し、詳細な説明は省略する。
【００８２】
図１４に示すノード１００Ｃは、図７に示すＣＰＵ１０Ｂの代わりにＣＰＵ１０Ｃを有する。また、ノード１００Ｃは、ＧＰＵ（Graphics Processing Unit）等のプロセッサと、ＣＰＵ１０ＣとＦＰＧＡとの間での通信を制御する通信インタフェースＣＩＦ２とを有する。通信インタフェースＣＩＦ２は、通信制御部の一例であり、ＧＰＵは、他の装置の一例である。ＣＰＵ１０Ｃのその他の構成は、図７に示すＣＰＵ１０Ｂと同様である。各ＣＰＵコア１２が実行するカーネルの概要は、通信インタフェースＣＩＦ２の動作を制御するＣＩＦ２ドライバを有することを除き、図５に示すカーネルの概要と同じである。
【００８３】
通信インタフェースＣＩＦ２は、ＧＰＵから受信するデータ等を含むパケットを保持する複数の受信キューＲＱＵＥ３を有する。例えば、通信インタフェースＣＩＦ２は、４つのＣＰＵコア１２ａ−１２ｄの各々に対応する４つの受信キューＲＱＵＥ３を有する。通信インタフェースＣＩＦ２は、各ＣＰＵコア１２ａ−１２ｄがＧＰＵに出力する処理データ等を含むパケットを保持する図示しない送信キューを有する。
【００８４】
図１５は、図１４に示す各ＣＰＵコアが実行するカーネルの動作の一例を示す。すなわち、図１５は、情報処理装置の一例であるノード１００Ｃが実行する情報処理方法およびノード１００Ｃの各ＣＰＵコア１２が実行するプログラムの一例を示す。図２および図９と同じ処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１０、Ｓ１２の処理は、図２に示すステップＳ１０、Ｓ１２の処理と同じである。ステップＳ１０、Ｓ１２の処理は、図５に示すカーネル本体部６０により実行される。
【００８５】
ステップＳ２０、Ｓ２２、Ｓ２４、Ｓ２６、Ｓ２８の処理は、各ステップＳ２６、Ｓ２８の後にステップＳ３０に移行することを除き、図３に示すステップＳ２０、Ｓ２２、Ｓ２４、Ｓ２６、Ｓ２８の処理と同じである。ステップＳ３０、Ｓ４０、Ｓ６０の処理は、図９に示すステップＳ３０、Ｓ４０、Ｓ６０の処理と同じである。ステップＳ２０、Ｓ２２、Ｓ２４、Ｓ２６、Ｓ２８、Ｓ３０、Ｓ４０、Ｓ６０の処理は、図５に示すアイドルルーチン７０により実行される。
【００８６】
図１５に示すアイドルルーチンは、ステップＳ３０によるポーリングフラグＰＦＬＧの判定を実行する前に、受信キューＲＱＵＥのポーリングと実行可能なタスクＴの有無のチェックとを１回ずつ実行する。すなわち、この実施形態では、全てのアイドルルーチンは、ポーリングフラグＰＦＬＧの値に拘わらず、受信キューＲＱＵＥのポーリングと実行可能なタスクＴの有無のチェックとを１回ずつ実行する。
【００８７】
例えば、図８の時刻ｔ１、ｔ２（または時刻ｔ４、ｔ５）に示すように、全てのＣＰＵコア１２でタスクＴを実行中に、複数の受信キューＲＱＵＥに複数のパケットが格納される可能性がある。タスクＴの実行中に複数の受信キューＲＱＵＥにパケットが格納される可能性は、ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦの数が多いほど高くなる。この場合、ポーリングフラグＰＦＬＧの値に拘わらず、アイドルルーチンの最初で受信キューＲＱＵＥをポーリングすることで、複数のＣＰＵコア１２により、受信キューＲＱＵＥに保持されたパケットを効率よく処理することができる。この結果、パケットの受信処理が滞ることを抑止することができる。
【００８８】
なお、ステップＳ２０、Ｓ２２、Ｓ２４、Ｓ２６、Ｓ２８の処理は、ステップＳ３０を実行する前に、複数回繰り返し実行されてもよい。また、図２と同様に、アイドルルーチンを実行する待機モードでのＣＰＵコア１２の動作周波数は、カーネル本体部を実行する通常モードでのＣＰＵコア１２の動作周波数に比べて低く設定される。これにより、受信キューＲＱＵＥのポーリングを通常モードで実行する場合に比べて、ノード１００Ｃの消費電力を削減することができる。
【００８９】
以上、図１４および図１５に示す実施形態においても、図１から図１３に示す実施形態と同様に、他のノード１１２、ＨＤＤ、ＦＰＧＡまたはＧＰＵからのパケットの受信をポーリングにより判定する場合にも、タスクＴの実行が滞ることを抑止することができる。受信キューＲＱＵＥのポーリングを待機モードで実行することで、通常モードで実行する場合に比べて、ノード１００Ｃの消費電力を削減することができる。
【００９０】
さらに、図１４から図１５に示す実施形態では、ポーリングフラグＰＦＬＧの値に拘わらず、アイドルルーチンの最初で受信キューＲＱＵＥをポーリングすることで、受信キューＲＱＵＥに保持されたパケットを効率よく処理することができる。この結果、パケットの受信処理が滞ることを抑止することができる。
【００９１】
図１６は、情報処理装置、情報処理方法およびプログラムの別の実施形態を示す。図４および図７で説明した要素と同一または同様の要素については、同一の符号を付し、詳細な説明は省略する。図１６に示すノード１００Ｄは、図７に示すＣＰＵ１０Ｂの代わりにＣＰＵ１０Ｄを有することを除き、図７に示すノード１００Ｂと同様である。
【００９２】
ＣＰＵ１０Ｄは、ＣＰＵコア１２ａ、１２ｂ、１２ｃ、１２ｄにより参照および設定が可能な割り込みフラグＩＦＬＧを有する。また、ＣＰＵ１０Ｄは、ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦの各々から割り込み信号ＩＮＴ０、ＩＮＴ１、ＩＮＴ２を受信する機能を有する。ＣＰＵ１０Ｄのその他の機能は、図７に示すＣＰＵ１０Ｂの機能と同じである。各ＣＰＵコア１２が実行するカーネルの概要は、図５に示すカーネルの概要と同じである。
【００９３】
ネットワークインタフェースＮＩＣは、受信キューＲＱＵＥ０にパケットが格納された場合に割り込み信号ＩＮＴ０を出力する割り込み動作モードを有する。ディスクインタフェースＤＩＯは、受信キューＲＱＵＥ１にパケットが格納された場合に割り込み信号ＩＮＴ１を出力する割り込み動作モードを有する。通信インタフェースＣＩＦは、受信キューＲＱＵＥ２にパケットが格納された場合に割り込み信号ＩＮＴ２を出力する割り込み動作モードを有する。
【００９４】
”０”の割り込みフラグＩＦＬＧは、ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦの各々が割り込み信号ＩＮＴ０、ＩＮＴ１、ＩＮＴ２を出力しない非割り込み動作モードであることを示す。非割り込み動作モードでは、各ＣＰＵコア１２は、ポーリングにより受信キューＲＱＵＥに保持されたパケットを検出する。”１”の割り込みフラグＩＦＬＧは、ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦの各々が割り込み信号ＩＮＴ０、ＩＮＴ１、ＩＮＴ２を出力する割り込み動作モードであることを示す。割り込み動作モードでは、各ＣＰＵコア１２は、割り込み信号ＩＮＴ０、ＩＮＴ１、ＩＮＴ２により受信キューＲＱＵＥに保持されたパケットを検出する。換言すれば、割り込み動作モードでは、各ＣＰＵコア１２は、受信キュー５をポーリングしない。なお、割り込みフラグＩＦＬＧは、ノード１００Ｄの電源投入時等の初期化時に”０”にリセットされる。
【００９５】
図１７は、図１６に示す各ＣＰＵコアが実行するカーネルの動作の一例を示す。すなわち、図１７は、情報処理装置の一例であるノード１００Ｄが実行する情報処理方法およびノード１００Ｄの各ＣＰＵコア１２が実行するプログラムの一例を示す。図２および図９と同じ処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１０、Ｓ１２の処理は、図９に示すステップＳ１０、Ｓ１２の処理と同じであり、図５に示すカーネル本体部６０により実行される。
【００９６】
ステップＳ３０において、アイドルルーチンは、ポーリングフラグＰＦＬＧが”０”の場合、処理をステップＳ３２に移行し、ポーリングフラグＰＦＬＧが”０”でない場合（すなわち、”１”）、処理をステップＳ６０Ａに移行する。ステップＳ６０Ａでは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２をポーリングしないアイドルルーチンが実行される。
【００９７】
ステップＳ３２において、アイドルルーチンは、割り込みフラグＩＦＬＧが”１”の場合、受信キュー５をポーリングしないため、処理をステップＳ６０Ａに移行する。一方、アイドルルーチンは、割り込みフラグＩＦＬＧが”１”でない場合（すなわち、”０”）、受信キュー５をポーリングするため、処理をステップＳ４０Ａに移行する。
【００９８】
ステップＳ４０Ａの例は、図１８に示され、ステップＳ６０Ａの例は、図１９に示される。ステップＳ４０Ａ、Ｓ６０Ａの後、処理はステップＳ１２に移行される。ステップＳ３０、Ｓ３２、Ｓ４０Ａ、Ｓ６０Ａの処理は、図５に示すアイドルルーチン７０により実行される。なお、割り込みフラグＩＦＬＧが”１”の場合、図１５と同様に、ステップＳ３０の前に、ステップＳ２０、Ｓ２２、Ｓ２４、Ｓ２６、Ｓ２８の処理が実行されてもよい。
【００９９】
例えば、図２と同様に、アイドルルーチンを実行する待機モードでのＣＰＵコア１２の動作周波数は、カーネル本体部を実行する通常モードでのＣＰＵコア１２の動作周波数に比べて低く設定される。これにより、受信キューＲＱＵＥのポーリングを通常モードで実行する場合に比べて、ノード１００Ｄの消費電力を削減することができる。
【０１００】
図１８は、図１７に示すステップＳ４０Ａの処理の一例を示す。図１０と同じ処理については、同じ符号を付し、詳細な説明は省略する。まず、ステップＳ４２において、アイドルルーチンは、ポーリングフラグＰＦＬＧを”１”に設定する。次に、ステップＳ４３において、アイドルルーチンは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２でのパケットの受信の頻度が、予め設定された所定の頻度より低下したか否かを判定する。パケットの受信の頻度が所定の頻度より低下した場合、処理はステップＳ５６に移行され、パケットの受信の頻度が所定の頻度以上である場合、処理はステップＳ４４に移行される。例えば、アイドルルーチンは、受信キューＲＱＵＥに保持されたパケットを検出することなく、ステップＳ４３、Ｓ４４、Ｓ４６、Ｓ４８、Ｓ５０のループを所定の回数実行した場合、パケットの受信の頻度が所定の頻度より低下したと判定する。換言すれば、アイドルルーチンは、受信キューＲＱＵＥ０、ＲＱＵＥ１、ＲＱＵＥ２がパケットを受信しない時間が所定時間を超えた場合、パケットの受信の頻度が所定の頻度より低下したと判定する。
【０１０１】
ステップＳ４４、Ｓ４６、Ｓ４８、Ｓ５０、Ｓ５２、Ｓ５４の処理は、図１０に示すステップＳ４４、Ｓ４６、Ｓ４８、Ｓ５０、Ｓ５２、Ｓ５４の処理と同じである。但し、ステップＳ５０において、アイドルルーチンは、タスクキュー２２に実行可能なタスクＴがない場合、処理をステップＳ４３に移行する。
【０１０２】
一方、ステップＳ５６において、アイドルルーチンは、割り込みフラグＩＦＬＧを”１”に設定する。次に、ステップＳ５８において、アイドルルーチンは、割り込み信号ＩＮＴ（ＩＮＴ０−ＩＮＴ２）をパケットの受信に応じて出力する指示を、ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦに通知する。ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦは、アイドルルーチンからの指示に基づいて、動作モードを非割り込み動作モードから割り込み動作モードに遷移する。非割り込み動作モードは、割り込み信号ＩＮＴを出力しない動作モードであり、割り込み動作モードは、割り込み信号ＩＮＴを出力する動作モードである。
【０１０３】
そして、ステップＳ５８の後、アイドルルーチンは、図１９に示すステップＳ６２にジャンプすることで、受信キューＲＱＵＥのポーリングを停止する。すなわち、パケットの受信の頻度が所定の頻度より低下した場合、カーネルは、受信キューＲＱＵＥのポーリングによる判定を停止する。そして、カーネルは、割り込み信号ＩＮＴ０−ＩＮＴ２に基づいて、受信キューＲＱＵＥにパケットが格納されたことを検出し、パケットの受信処理を実行する。
【０１０４】
図１９は、図１７に示すステップＳ６０Ａの処理の一例を示す。図１３と同じ処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ６２、Ｓ６４の処理は、図１３に示すステップＳ６２、Ｓ６４の処理と同じである。ステップＳ６６の処理は、ポーリングフラグＰＦＬＧが”０”の場合、処理を図１８のステップＳ４２にジャンプすることを除き、図１３に示すステップＳ６６の処理と同様である。
【０１０５】
パケットの受信の頻度が所定の頻度より低下した場合、受信キューＲＱＵＥのポーリングを停止し、実行可能なタスクＴの有無のチェックのみを実行することで、ＣＰＵコア１２がポーリングのための命令を実行することを抑止することができる。これにより、ＣＰＵ１０Ｄが消費する電力を、受信キューＲＱＵＥのポーリングを続ける場合に比べて削減することができる。
【０１０６】
なお、アイドルルーチンは、パケットの受信の頻度が所定の頻度以上になった場合、割り込みフラグＩＦＬＧを”０”に設定してもよい。この場合、ネットワークインタフェースＮＩＣ、ディスクインタフェースＤＩＯおよび通信インタフェースＣＩＦは、アイドルルーチンからの指示に基づいて、動作モードを割り込み動作モードから非割り込み動作モードに切り替える。これにより、割り込み信号ＩＮＴ０−ＩＮＴ２の発行が抑止される。そして、ＣＰＵコア１２のいずれかが実行するアイドルルーチンにより受信キューＲＱＵＥがポーリングされる。
【０１０７】
なお、図１６に示すＣＰＵ１０Ｄが１つのＣＰＵコア１２ａを有する場合、あるいは、図４と同様に、全てのＣＰＵコア１２ａ−１２ｄが受信キューＲＱＵＥを重複してポーリングする場合、ＣＰＵ１０Ｄは、ポーリングフラグＰＦＬＧを持たなくてもよい。
【０１０８】
図２０は、ポーリングフラグＰＦＬＧを持たないＣＰＵ１０ＤのＣＰＵコア１２が実行するカーネルの動作の一例を示す。図１７および図１８と同じ処理については、同じ符号を付し、詳細な説明は省略する。ステップＳ１０、Ｓ１２の処理は、図１７に示すステップＳ１０、Ｓ１２の処理と同じであり、図５に示すカーネル本体部６０により実行される。カーネルは、ステップＳ１０において、実行可能なタスクＴが受信キューＲＱＵＥにない場合、処理をアイドルルーチンのステップＳ４３に移行する。
【０１０９】
ステップＳ４３、Ｓ４４、Ｓ４６、Ｓ４８、Ｓ５０、Ｓ５２、Ｓ５６、Ｓ５８の処理は、図１８に示すステップＳ４３、Ｓ４４、Ｓ４６、Ｓ４８、Ｓ５０、Ｓ５２、Ｓ５６、Ｓ５８の処理と同じである。但し、ステップＳ５０において、アイドルルーチンは、タスクキュー６に実行可能なタスクＴがある場合、処理をステップＳ１２に移行し、タスクキュー６に実行可能なタスクＴがない場合、処理をステップＳ５３に移行する。また、アイドルルーチンは、ステップＳ５２の後、処理をステップＳ５３に移行し、ステップＳ５８の後、処理をステップＳ４８に移行する。
【０１１０】
ステップＳ５３において、アイドルルーチンは、割り込みフラグＩＦＬＧが”０”の場合、受信キューＲＱＵＥをポーリングするため、処理をステップＳ４３に移行する。一方、アイドルルーチンは、割り込みフラグＩＦＬＧが”１”の場合、受信キューＲＱＵＥのポーリングをしないため、処理をステップＳ４８に移行する。図２０に示す動作により、パケットの受信の頻度が所定の頻度より低下し、割り込みフラグＩＦＬＧが”１”に設定された後、アイドルルーチンは、受信キューＲＱＵＥのポーリングを停止し、実行可能なタスクＴの有無のチェックのみを実行する。
【０１１１】
以上、図１６から図２０に示す実施形態においても、図１から図１５に示す実施形態と同様に、他のノード１１２、ＨＤＤまたはＦＰＧＡからのパケットの受信をポーリングにより判定する場合にも、タスクＴの実行が滞ることを抑止することができる。受信キューＲＱＵＥのポーリングを待機モードで実行することで、通常モードで実行する場合に比べて、ノード１００Ｄの消費電力を削減することができる。
【０１１２】
さらに、図１６から図２０に示す実施形態では、パケットの受信の頻度が所定の頻度より低下した場合、受信キューＲＱＵＥのポーリングを停止することで、ＣＰＵコア１２がポーリングのための命令を実行することを抑止することができる。これにより、ＣＰＵ１０Ｄが消費する電力を、受信キューＲＱＵＥのポーリングをし続ける場合に比べて削減することができる。
【０１１３】
以上の図１から図２０に示す実施形態に関し、さらに以下の付記を開示する。
（付記１）
タスクを実行する演算処理部と、他の装置との間の通信を制御する通信制御部とを有する情報処理装置において、
前記演算処理部は、
実行可能なタスクがある場合、タスクの実行を管理する管理部と、
実行可能なタスクがない場合、前記他の装置からの情報を前記通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行する待機部と
を備えることを特徴とする情報処理装置。
（付記２）
複数の前記演算処理部を備え、
複数の前記演算処理部のうち、実行可能なタスクがない演算処理部のいずれかである第１の演算処理部の前記待機部は、前記判定処理を実行し、
複数の前記演算処理部のうち、実行可能なタスクがない他の演算処理部である第２の演算処理部の前記待機部は、前記判定処理の実行を抑止すること
を特徴とする付記１に記載の情報処理装置。
（付記３）
複数の前記演算処理部の各々に対応して、前記通信制御部が受信した情報を保持する複数の保持部をさらに備え、
前記第１の演算処理部は、前記複数の保持部のそれぞれに対する前記判定処理を実行すること
を特徴とする付記２に記載の情報処理装置。
（付記４）
前記第１の演算処理部の前記待機部は、前記第１の演算処理部に対応する前記保持部に対して実行する前記判定処理の頻度を、複数の前記演算処理部のうち、前記第１の演算処理部を除く演算処理部の各々に対応する前記保持部に対して実行する前記判定処理の頻度に比べて高くすること
を特徴とする付記３に記載の情報処理装置。
（付記５）
前記第２の演算処理部の前記待機部は、所定回数の前記判定処理を実行した後、前記判定処理の実行を抑止すること
を特徴とする付記２ないし付記４のいずれか１項に記載の情報処理装置。
（付記６）
前記待機部は、前記通信制御部による情報の受信の頻度がを所定の頻度より低下した場合、割り込み信号を情報の受信に応じて出力させる指示を前記通信制御部に発行した後、前記判定処理を停止し、
前記演算処理部は、前記割り込み信号の受信に基づいて、前記通信制御部が受信した情報に基づく処理を実行すること
を特徴とする付記１ないし付記５のいずれか１項に記載の情報処理装置。
（付記７）
複数の前記演算処理部を備え、
複数の前記演算処理部のうち、実行可能なタスクがない演算処理部の各々は、前記判定処理を実行すること
を特徴とする付記１に記載の情報処理装置。
（付記８）
前記管理部と前記待機部とは、互いに排他的に動作し、
前記待機部が動作中の前記演算処理部の動作周波数は、前記管理部が動作中の前記演算処理部の動作周波数に比べて低く設定されること
を特徴とする付記１ないし付記７のいずれか１項に記載の情報処理装置。
（付記９）
前記管理部および前記待機部の機能は、タスクの実行を管理するカーネルを前記演算処理部が実行することにより実現されること
を特徴とする付記１ないし付記８のいずれか１項に記載の情報処理装置。
（付記１０）
前記待機部の機能は、実行可能なタスクがない場合に前記カーネルが実行するアイドルルーチンにより実現されること
を特徴とする付記９に記載の情報処理装置。
（付記１１）
タスクを実行する演算処理部と、他の装置との間の通信を制御する通信制御部とを有する情報処理装置が実行する情報処理方法において、
前記演算処理部が有する管理部が、実行可能なタスクがある場合、タスクの実行を管理し、
前記演算処理部が有する待機部が、実行可能なタスクがない場合、前記他の装置からの情報を前記通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行すること
を特徴とする情報処理方法。
（付記１２）
他の装置との間の通信を制御する通信制御部とともに情報処理装置に含まれ、タスクを実行する演算処理部に、
実行可能なタスクがある場合、タスクの実行を管理させる処理と、
実行可能なタスクがない場合、前記他の装置からの情報を前記通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行させる処理と
を実行させることを特徴とするプログラム。
（付記１３）
他の装置との間の通信を制御する通信制御部とともに情報処理装置に含まれ、タスクを実行する演算処理部に、
実行可能なタスクがある場合、タスクの実行を管理させる処理と、
実行可能なタスクがない場合、前記他の装置からの情報を前記通信制御部が受信したかをポーリングにより判定する判定処理を、実行可能なタスクが出現するまで実行させる処理と
を実行させるプログラムを記録したことを特徴とする前記情報処理装置に読み取り可能な記録媒体。
【０１１４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１１５】
１…演算処理部；２…管理部；３…待機部；４…通信制御部；５…受信キュー；６…タスクキュー；７…メインメモリ；８…不揮発性メモリ；１０、１０Ｂ、１０Ｃ、１０Ｄ…ＣＰＵ；１２ａ−１２ｄ…ＣＰＵコア；１４…キャッシュ制御部；１６…キャッシュメモリ；２０…メインメモリ；２２…タスクキュー；３０…フラッシュメモリ；５０…カーネル；６０…カーネル本体部；６２…スケジューラ；６４…ディスパッチャ；７０…アイドルルーチン；７２…タスクチェック処理；７４…ポーリング処理；８０、８１、８２…ポーリングリスト；９０…ＮＩＣドライバ；９１…ＤＩＯドライバ；９２…ＣＩＦドライバ；１００…情報処理装置；１００Ａ、１００Ｂ、１００Ｃ、１００Ｄ…ノード；１１０…他の装置；１１２…他のノード；１２０…ネットワーク；１３０…記録媒体；ＣＩＦ、ＣＩＦ２…通信インタフェース；ＤＩＯ…ディスクインタフェース；ＩＦＬＧ…割り込みフラグ；ＮＩＣ…ネットワークインタフェース；ＰＦＬＧ…ポーリングフラグ；ＲＱＵＥ０−ＲＱＵＥ３…受信キュー
【図１】
2019020853.tif 000003
【図２】
2019020853.tif 000004
【図３】
2019020853.tif 000005
【図４】
2019020853.tif 000006
【図５】
2019020853.tif 000007
【図６】
2019020853.tif 000008
【図７】
2019020853.tif 000009
【図８】
2019020853.tif 000010
【図９】
2019020853.tif 000011
【図１０】
2019020853.tif 000012
【図１１】
2019020853.tif 000013
【図１２】
2019020853.tif 000014
【図１３】
2019020853.tif 000015
【図１４】
2019020853.tif 000016
【図１５】
2019020853.tif 000017
【図１６】
2019020853.tif 000018
【図１７】
2019020853.tif 000019
【図１８】
2019020853.tif 000020
【図１９】
2019020853.tif 000021
【図２０】
2019020853.tif 000022