次に、本発明を実施する形態について図面を参照して説明する。以下の実施の形態に記載されている構成は単なる例示であり、本願発明の技術範囲はそれらには限定されない。
<第1の実施形態>
以下、図1及び図2を参照して、本実施形態に係る情報処理装置であるマルチコアシステム100の構成にについて説明する。
図1は本実施形態に係るマルチコアシステム100の構成を概念的に例示する図である。図1に例示するように、マルチコアシステム100は、コア101(図1に例示する「コア01」乃至「コア04」)と、係るコア101からアクセス可能な専用メモリ領域102(図1に例示する「専用メモリ領域01」乃至「専用メモリ領域04」)を有する。
また、マルチコアシステム100は、上記コア101において実行される複数のタスク103と、上記タスク101等に対して上記専用メモリ領域102等へのアクセス機能を提供するライブラリ104と、上記専用メモリ領域102に保持(格納)された情報をファイル106に出力するファイル出力部105とを有する。
また、マルチコアシステム100は、上記タスク103の実行等を制御するOS(Operating System)を有する。係るOSは、各タスク103の実行順序や、各タスクのコア101への割り当てなどを制御するスケジューラ107を有し、係るスケジューラ107は、コア割り当て管理部108を有する。以下、それぞれの構成要素について説明する。
コア101は、CPU(Central Processing Unit)等の演算装置であり、タスク103に実装された処理を実行する。本実施形態におけるコア101は、それ自体で単一のCPUであってもよく、あるいは、単一のCPUの一部を構成する演算処理ユニットであってもよい。図1に例示する具体例においては、コア101として「コア01」乃至「コア04」が例示されている。本実施形態におけるマルチコアシステム101はこれに限定されず、任意の個数のコア101を採用してよい。
なお、マルチコアシステム100においては、コア101を割り当てられたタスク103のみが実行状態とされ、コア101を割り当てられていないタスク103の実行は中断される。この場合、当該タスク103の処理は一時的に停止するが、タスク103自体は処理が停止していることを認識しない。
専用メモリ領域102は、後述するタスク103から出力される各種情報を保持する領域である。専用メモリ領域102は、コア101毎に設けられ、1つの専用メモリ領域102は、一つのコア101に関連付けられる。本実施形態において、係る専用メモリ領域102にアクセス可能なのは、当該専用メモリ領域が関連付けられたコア101において実行されるタスク103に限定される。
即ち、特定のコア101に関連付けされた専用メモリ領域102に対しては、他のコア101において実行されるタスク103はアクセスすることができない。ただし、後述するファイル出力部105による専用メモリ領域初期化処理に限り、当該ファイル出力部105がどのコア101により実行されている場合でも、全ての専用メモリ領域102にアクセス可能とする。なお、上述したアクセス制限の具体的な方法は、例えば周知のOSや、周知のメモリコントローラ等の技術を採用してよいため、詳細な説明は省略する。
本実施形態における専用メモリ領域102は、例えば、図2に例示するような管理情報領域201と、情報保持領域202とを有する。図2に例示する具体例においては、管理情報領域201は、専用メモリ領域102に関する管理情報として、全体領域サイズ201aと、ファイル出力中フラグ201bと、空き領域サイズ201cと、空き領域ポインタ201dと、を有する。
全体領域サイズ201aは、当該専用メモリ領域102において情報を保持可能な全体のサイズを保持する領域である。
ファイル出力中フラグ201bは、後述するファイル出力部105において、当該専用メモリ領域102に保持されている情報を、特定のファイル106に出力する処理を実行しているか否かを表す情報を保持する。
空き領域サイズ201cは、情報保持領域202における、空き領域202bのサイズを保持する。
空き領域ポインタ201dは、空き領域202bの先頭位置を表す情報を保持する。
情報保持領域202は、タスク103から出力される情報を保持する領域であり、係る情報が書き込まれた使用済み領域202aと、未使用の空き領域202bとを有する。
使用済み領域202aは、当該専用メモリ102が関連付けされたコア101において実行されるタスク103から出力された各種情報が書き込まれた領域である。なお、係るタスク103の実行状況によっては、使用済み領域202aが存在しない場合(情報が出力されていない場合)もある。
図3に例示するように、情報保持領域202は、ヘッダ情報301とタスクからの出力情報302とを保持する。本実施形態においては、ヘッダ情報301、及び、タスクからの出力情報302は、後述するライブラリ104によって情報保持領域202に書き込まれる。図3に例示する具体例においては、ヘッダ情報301は、出力時刻301a、タスクID301b、及び、サイズ301cを有する。
出力時刻301aは、特定のタスク103から出力された出力情報302が、専用メモリ領域102に書き込まれた時刻を表す情報を保持する。
タスクID301bは、出力情報302を書き込んだタスク103を一意に識別可能な識別情報を保持する。係る識別情報としては、例えば、後述するタスク103に関するプロセスID、スレッドID、あるいはこれらとプロセス名との組合せ等を採用してもよい。
サイズ301cは、タスクからの出力情報302のサイズを保持する。
上記ヘッダ情報301は、タスク103が指定した情報を専用メモリ領域102に書き込む際に、後述するライブラリ104によって付加される。なお、係るヘッダ情報301は、情報を出力したタスク103と、出力された情報の内容を特定するために用いられる。
タスク103は、上記したように、マルチコアシステム100において実行されるプロセスやスレッド等である。各タスク103がどのような処理を実行するかは、タスク103を実装するソフトウェア・プログラム(コンピュータ・プログラム)等において任意に定めておよい。
なお、本実施形態におけるタスク103は、後述するライブラリ104を介して、上記専用メモリ領域102に対して各種情報を出力する。タスク103が出力する情報の内容は適宜定めてよく、例えば、当該タスク103の処理に関するログの情報等を含んでもよい。
ライブラリ104は、上記タスク104や、後述するファイル出力部105等に対して、専用メモリ領域102にアクセスする機能を提供するソフトウェア・プログラムである。より具体的には、ライブラリ104は、上記専用メモリ領域102に対する書き込み・読み込み機能や、上記専用メモリ領域102における特定の領域を初期化する機能等を提供する。
本実施形態におけるライブラリ104は、タスク103からの情報出力要求に応じて、当該タスク103が割り当てられているコア101に関連付けされた専用メモリ領域104を特定し、当該専用メモリ領域104へ情報の書き込みを行う。また、当該書き込み処理の間、当該タスク103に割り当てられたコア101を、独占的に使用可能とすることを後述するコア割り当て管理部108に要求する。また、専用メモリ領域102の使用状況に応じて、後述するファイル出力部105に対して、メモリ領域内の情報をファイル106等に出力することを要求する。本実施形態におけるライブラリ104は、タスク103に対して、係るタスク103が出力する各種情報の内容と、出力サイズを指定可能なインターフェイスを提供してもよい。
本実施形態におけるライブラリ104は、例えば、当該ライブラリ104を利用するタスタスク103が実行されるコア101において、係るタスク103と共に実行されてもよい。即ち、本実施形態におけるライブラリ104は、例えば、当該ライブラリ104を利用するタスク103とリンクされることにより、係るタスクと一体として、コア101により実行されてもよい。
上記タスク103及び、ライブラリ104における各処理の具体的な内容については、後述する。
ファイル出力部105は、専用メモリ領域102に書き込まれた各種情報を保存する処理、及び、専用メモリ領域102を再利用するための初期化処理等を実行するタスクである。ファイル出力部105は、上記ライブラリ104から適当な契機で呼び出され、専用メモリ領域102に書き込まれた各種情報をファイル106等に転送する。また、ファイル出力部は、当該専用メモリ領域102の管理情報を初期化する。これにより、当該専用メモリ領域102に新たな情報を書き込むことが可能となる。
本実施形態におけるファイル106は、図示しないハードディスク等の2次記憶装置に設けられたファイルシステム等によって提供される記憶領域である。本実施形態におけるファイル106は、上記ファイル出力部105により出力された各種情報を保持(記録)する。
なお、ファイル出力部105及びファイル106については、上記に限定されず、例えば、ファイル106を図示しないデータベースのレコードとして実現し、ファイル出力部105が係るデータベースのレコードを出力するよう構成してもよい。
スケジューラ107は、マルチコアシステム100を構成するマルチタスクOSの一部として設けられ、実行可能状態で待機しているタスク103に対して、所定の基準に基づいてコア101を割り当てるスケジューリングを行う。
ここで、コア101において実行するタスク103を選択する基準としては、例えば、優先度の高さや、処理完了までの推定残り時間の短さ等の基準を適宜選択してよい。また、係るタスク103を実行するコア101を選択する基準としては、例えば、各コアに対する使用率(各コアの稼働率)のバランスや、キャッシュヒットの可能性等の基準を適宜選択してよい。これらの基準は、例えば、マルチコアシステム100に対して定められた所定のポリシーに基づいて選択してもよい。
本実施形態におけるスケジューラ107は、後述するコア割り当て管理部108が管理する割り当て可能なコア101の情報(割り当て可能コア情報109)に基づいて、特定のタスク103に対してコア101を割り当てる。なお、本実施形態におけるスケジューラ107は、上記説明したコアの割り当て以外に、周知のマルチタスクOSに実装されたスケジューラと同様の機能を有してもよい。
コア割り当て管理部108は、タスク103に対して割り当て可能なコア101の情報(割り当て可能コア情報109)を管理し、係る情報を上記スケジューラ107に提供する。また、コア割り当て管理部108は、ライブラリ104から、特定のコア101を特定のタスク103に独占的に割り当てる(以下「占有」と称する場合がある)要求を受け付ける。コア割り当て管理部108は、係る占有要求に基づいて、各コア101を、タスク103に割り当て可能か否かを制御する。
なお、本実施形態におけるマルチタスクOSは、周知のマルチタスクOSと同様に、ある特定の瞬間において、1つのコア101は1つのタスク103のみを実行するように制御する。即ち、1つのコアは、特定の瞬間において、同時に2つ以上のタスクを処理しないように制限される。
なお、係るマルチタスクOSは、例えば、一定の時間毎に特定のコア101において実行されるタスク103を切り替えることにより(例えば、一つのコア101を時分割で複数のタスク103に割り当てることにより)、1つコアが一定期間内に複数のタスクを実行可能なように制御してもよい。なお、係るタスク103の切り替え動作は周知の技術を採用してよいため、詳細な説明は省略する。
上記説明したマルチコアシステム100を実現可能なハードウェア構成の具体例を、図4に例示する。
マルチコアプロセッサ401は、複数のコア101と、当該コア101に対する入出力を制御するIOコントローラとを有する。
1次記憶装置402は、上記コア101に関連付けされた複数の専用メモリ領域102と、各コアにおいて実行されるタスク103や、マルチタスクOSからアクセス可能な汎用メモリ領域と、1次記憶装置に入出力やデータの配置を制御するメモリコントローラとを有する。なお、係る1次記憶装置402は、例えば、揮発性のRAM(Random Access Memory)等により構成してもよい。
2次記憶装置403は、例えば、ハードディスク等により構成された不揮発性の記憶領域である。2次記憶装置403は、例えば、ファイルシステムにおいて提供される各種ファイルや、データベース等を記憶してもよい。例えば、本実施形態において、図1に例示するファイル106は、2次記憶装置403に記憶されてもよい。
プログラム記憶領域404は、本実施形態におけるマルチコアシステム100を構成するソフトウェア・プログラムを記憶する領域である。図4に例示する構成においては、プログラム記憶領域を2次記憶装置403とは別の要素として表記しているが、プログラム記憶領域404は2次記憶装置403に含まれてもよい。また、プログラム記憶領域404は、例えば、2次記憶装置403とは別にROM(Read Only Memory)等により構成してもよい。
図4のように構成されたマルチコアシステム100によれば、例えば、マルチタスクOSがプログラム領域404に格納されたタスク103及びライブラリ104を1次記憶装置402にロードし、係るロードされたタスク103をマルチコアプロセッサ401におけるコア101が実行することにより、タスク103に実装された各種処理が実行される。
次に、上記のように構成されたマルチコアシステムの動作について説明する。以下においては、図5乃至図7に例示するフローチャート参照して、上記タスク103から専用メモリ領域102に各種情報を出力する動作を説明する。
まず、図5に例示するフローチャートを参照して、タスク103及びライブラリ104の動作について説明する。
以下の説明においては、特定のタスク103(以下、仮に「タスク01」と称する)に対して、特定のコア01(以下、仮に「コア01」と称する)が割り当てられ、当該タスク01がコア01によって実行されている状態を仮定する。
まず始めに、タスク01が、ライブラリ104が提供する機能を使用して、任意の情報の出力を要求する(ステップS501)。より具体的には、タスク01が、出力しようとする情報の内容とそのサイズとを指定して、ライブラリ104が提供する情報出力用のインターフェイスを呼び出す。以下、このようなタスク101から発せられる任意の情報を出力する要求を、「情報出力要求」と称する場合がある。
上記タスク01からの情報出力要求を受け付けたライブラリ104は、コア割り当て管理部108に対して、上記タスク01に対するコア01の割り当てを外さないよう、コア01の占有を要求する(ステップS502)。ステップS502の後、タスク01は、占有したコア01に関連付けされた専用メモリ領域102(以下、仮に「専用メモリ領域01」と称する)に各種情報を出力可能となる。
以下においては、ライブラリ104が、専用メモリ領域01における管理情報領域201に保持された各種情報を確認し、係る確認結果に応じて所定の処理を実行する(ステップS503乃至ステップS508)。以下、それぞれの処理内容について説明する。
まず、ライブラリ104は、専用メモリ領域01に保持された情報がファイル出力部105によりファイル106へ出力中か否かを確認する(ステップS503)。より具体的には、ライブラリ104は、専用メモリ領域01における管理情報領域201のファイル出力中フラグ201cを確認することにより、専用メモリ領域01に保持された情報がファイル106へ出力中か否かを判定する。この場合、ライブラリ104は、例えば、ファイル出力フラグ201cに「ON」が設定されている場合はファイルへ出力中であると判定し、ファイル出力フラグ201cに「OFF」が設定されている場合はファイルへ出力中ではないと判断してもよい。
係る判定の結果、ファイル出力中の場合(ステップS504においてYES)、専用メモリ領域01に保持された情報をファイルに出力する処理が実行されているため、専用メモリ用域01に対するアクセスを避ける必要がある。即ち、係る専用メモリ01に対しては、上記タスク01の情報出力要求に係る情報を書き込む(出力する)ことができない。
このため、ライブラリ104は、専用メモリ領域01以外の専用メモリ用域102(コア01以外のコア101に関連付けされた専用メモリ領域102)に、タスク01から出力する情報を書き込む必要がある。
よって、この場合、ライブラリ104は、コア割り当て管理部108に対して、コア01以外のコアのタスク01に対する割り当てと占有を要求する(ステップS505)。また、ライブラリ104は、コア割り当て管理部108に対して、タスク01を実行しているコア01の占有を解除することを通知してもよい。その後、コア01以外のコア101が、スケジューラ107によってタスク01に割り当てられた場合、ライブラリ104は、ステップS504から処理を続行する。
次に、ステップS503における確認の結果、ファイル出力中ではない場合(ステップS504においてNO)、ライブラリ104は、専用メモリ領域102における空き領域202bのサイズを確認する(ステップS506)。より具体的には、ライブラリ104は、専用メモリ領域01における空き領域サイズ201cを確認することにより、空き領域202bのサイズを確認する。
ステップS506における確認の結果、専用メモリ領域01における空き領域202bのサイズが、タスク01が出力を要求する情報のサイズと、ヘッダ情報301のサイズとの合計よりも小さい場合(ステップS507においてNO)、当該専用メモリ領域01は、タスク01が出力する情報を保持するだけの空き領域を提供できない。この場合、タスク01は当該専用メモリ領域01に対して情報を書き込む(出力する)ことができない。
このため、ライブラリ104は、ファイル出力部106に対して、専用メモリ領域01が保持する情報をファイルに出力するよう、ファイル出力要求処理(ステップS508)を実行する。
以下、ステップS508におけるファイル出力要求処理につて、図6に例示するフローチャートを参照して説明する。
まず、ライブラリ104は、ファイル出力部106以外の他のタスク103が、専用メモリ領域01にアクセスしないように、専用メモリ領域01におけるファイル出力中フラグ201bを設定(「ON」に設定)する(ステップS601)。
次に、ライブラリ104は、ファイル出力部106に対して、専用メモリ領域01が保持する情報(より具体的には、情報保持領域202に保持された情報)を、特定のファイル106に出力するよう要求する(ステップS602)。
ライブラリ104が上記ステップS602を実行した場合、ファイル出力部106が専用メモリ領域01における情報保持領域202が保持するデータを、ファイルに出力する処理を実行する。よって、タスク01は専用メモリ領域01に情報を書き込む(出力する)ことができない。このため、ステップS508の後、ライブラリ01はステップS505から処理を続行し、タスク01に対してコア01以外のコア101の割り当てと、割り当てたコアの占有を要求する。その後、コア01以外のコア101が、スケジューラ107によってタスク01に割り当てられた場合、ライブラリ104は、ステップS504から処理を再度実行する。
次に、ステップS506における確認の結果、専用メモリ領域01における空き領域202bのサイズが充分大きい場合(ステップS507においてYES)、タスク01は、ライブラリ104を介して、当該専用メモリ領域01の情報保持領域202に、任意の情報を書き込む(出力する)(ステップS509)。
より具体的には、タスク01は、ライブラリ104が提供するインターフェイスを介して、任意の情報の書き込みを要求する。係る要求を受け付けたライブラリ104が、専用メモリ領域01の情報保持領域202に、タスク01から渡された情報を書き込む。
この際、ライブラリ104は、タスク01が書き込みを要求した情報(以下「出力情報」と称する場合がある)に対して、ヘッダ情報301を付加する。そして、ライブラリ104は、係るヘッダ情報と、タスク01からの出力情報とを、空き領域ポインタ201dが指定する位置に書き込む。
次に、ライブラリ104は、専用メモリ領域01における管理情報領域201を更新する(ステップS510)。より具体的には、ライブラリ104は、空き領域サイズ201cの値を更新し、空き領域ポインタ201dの位置を変更する。
次に、ライブラリ104は、更新後の専用メモリ領域01における空き領域サイズ201cの値を確認する(ステップS511)。即ち、ライブラリ104は、タスク01からの上記出力情報を書き込んだ結果、専用メモリ領域01においてどの程度の領域が空き領域202bとして残存しているかを確認する。
上記ステップS511における確認の結果、ライブラリ104が、所定の基準に基づいて空き領域のサイズが小さい判断した場合には(ステップS512においてNO)、上記ステップS508と同様、ライブラリ104は、ファイル出力要求処理を実行する(ステップS514)。係るファイル出力要求処理により、専用メモリ領域01が保持する各種情報がファイル106に書き出されることから、専用メモリ領域01における空き領域202bのサイズが大きくなる。上記ステップS514の処理を実行した後、ライブラリ104は、下記ステップS513から処理を続行する。
次に、上記ステップS511における確認の結果、ライブラリ104が、所定の基準に基づいて空き領域のサイズが充分大きいと判断した場合には(ステップS512においてYES)、ライブラリ104は、コア割り当て管理部108に対して、コア01の占有を解除することを通知する(ステップS513)。上記ステップS513における処理の実行後、タスク01以外の他のタスク103が、コア01を使用可能となる。
なお、ステップS511において、専用メモリ領域01における空き領域202bのサイズが十分か否かを判断する基準は、例えば、マルチコアシステム100の特性等に応じて、適宜選択してよい。
次に、コア割り当て管理部108の動作について説明する。
コア割り当て管理部108は、各タスク103に対して割り当て可能なコア101の情報を割り当て可能コア情報109として保持し、係る情報をスケジューラ107に提供する。なお、コア割り当て管理部108が、割り当て可能なコア101に関する情報を具体的にどのように保持するかは、適宜選択してよい。
コア割り当て管理部108は、特定のタスク101(ライブラリ104)からコア101に対する占有要求を受け付けていない場合、マルチタスクシステム100において利用可能な全てのコア101を、割り当て可能コア情報108に登録する。
コア割り当て管理部108は、特定のタスク101からの情報出力要求等に基づいて、ライブラリ104から特定のコア101を占有する要求(占有要求)を受け付けた場合(例えば、上記ステップS502、S505等)、当該占有要求の対象であるコア101に関する情報を当て可能コア情報109から削除する。
スケジューラ107は、割り当て可能コア情報109に基づいて、利用可能なコア101を各タスク103に対して割り当てるため、割り当て可能コア情報109から削除されたコア101は、他のタスクに割り当てられない。即ち、コア割り当て管理部108、及び、スケジューラ107は、上記占有要求を受け付けた場合に、当該占有要求の対象であるコア101が、上記占有要求を行った特定のタスク101(ライブラリ104)以外のタスクに割り当てられないように制御する。
これにより、情報出力要求を行った特定のタスク101は、明示的な排他制御を必要とせず、上記占有要求の対象であるコア101と、当該コアに関連付けされた専用メモリ領域102を独占的に使用することが可能である。
また、コア割り当て管理部108は、ライブラリ104から特定のコア101に対する占有解除要求を受信すると(例えば、上記ステップS505、S513等)、当該占有解除の要求において指定された特定のコア101を、割り当て可能コア情報109に登録する。これにより、スケジューラ107は当該コア101を他のタスク103に割り当てることが可能となる。
次に、図7に例示するフローチャートを参照して、ファイル出力部105の処理について説明する。
ファイル出力部105は、例えば、ライブラリ104からのファイル出力要求(図5に例示するステップS508、S514等)を待機する(ステップS701)。より具体的には、ファイル出力部105は、例えば、マルチコアシステム100における常駐型のタスクとして、係るファイル出力要求を待ち受けてもよい。
次に、ファイル出力部105は、ファイル出力要求を受け付けたか確認し(ステップS702)、ファイル出力要求を受け付けていない場合(ステップS702においてNO)、再度ステップS701の待機処理を実行する。
一方、ファイル出力要求を受け付けた場合(ステップS702においてYES)、当該ファイル出力要求において指定された特定のコア101(以下、仮に「コア02」とする)に関連付けされた専用メモリ領域102(以下、仮に「専用メモリ領域02」とする)に保持された情報を読み出す(ステップS703)。より具体的には、ファイル出力要求において指定されて専用メモリ領域02の管理情報領域201及び情報保持領域202を順次読み出す。
次に、ファイル出力部105は、上記ステップS703において読み出した情報を、ファイル106に出力する(ステップS704)。ファイル106に対する具体的な出力(書き込み)処理の方法は、周知の技術を採用してよいため、詳細な説明を省略する。
ここで、ファイル出力部105が上記ステップS703乃至ステップS704の処理を実行する際、当該ファイル出力要求を通知したライブラリ104によって、専用メモリ領域02のファイル出力中フラグがONに設定される(図6におけるステップS601)。このため、他のタスク101との間で専用メモリ領域02へのアクセスが競合することがない。即ち、ファイル出力部105は、明示的な排他制御を必要とせず、専用メモリ領域02にアクセスすることが可能である。
次に、ファイル出力部105は、専用メモリ領域02が保持する情報の出力が完了した後、専用メモリ領域02の管理情報を初期化する(ステップS705)。より具体的には、ファイル出力部105は、専用メモリ領域02における管理情報領域201を初期化し、ファイル出力中フラグ201bを「OFF」に設定する。また、ファイル出力部105は、管理情報領域201とともに、情報保持領域202を初期化してもよい。
ステップS705における処理の後、ファイル出力部105はステップS701に戻って処理を続行し、更なるファイル出力要求を待機する。
本実施形態におけるファイル出力部105はタスク101の一種として実現されるため、上記ステップS701乃至ステップS705の処理は、ファイル処理部105に割り当てられたコア101により実行される。スケジューラ107は、ファイル出力部105に対して任意の利用可能なコア101を割り当ててよい。
なお、本実施形態においては、複数のファイル出力部105を並行して実行してもよい。この場合、複数の専用メモリ領域102について、係る専用メモリ領域102に保持されている情報が並行して複数のファイル106に出力される。このため、複数の専用メモリ領域102の空き容量を並行して増やすことが可能となり、利用可能な専用メモリ領域102をより速やかに用意することが可能である。
以上説明したように、本実施形態に係るマルチコアシステム100においては、1つのコア101は、ある瞬間においては1つのタスク103のみ実行可能である。また、特定の専用メモリ領域102には、当該特定の専用メモリ領域に関連付けされた1つの特定のコア101において実行されるタスク103のみがアクセス可能である。
例えば、あるタスク103が情報出力要求を実行した場合、特定のコア101を占有して係る情報出力要求を処理することにより、他のタスク101は、当該特定のコア101に関連付けされた専用メモリ領域102にアクセスすることができない。これにより、複数のタスク103間の競合状態を回避可能である。
このため、上記説明したマルチコアシステム100によれば、複数のタスク103間において明示的な排他制御を実行する必要がなく、特定の専用メモリ領域102に対して速やかに情報を出力可能である。
また、それぞれのタスク103は、いずれの専用メモリ領域102に情報を出力するかを認識する必要がない。即ち、特定の専用メモリ領域102に対して情報を出力できない場合(例えば、図5に例示するステップS504においてYESの場合や、ステップS507においてNOの場合等)、係るタスク自体を異なるコア101に割り当てることにより、異なる専用メモリ領域102に対して情報を出力可能である。即ち、記説明したマルチコアシステム100によれば、各タスク103は、特定の専用メモリ領域102の使用状況等に影響を受けることなく、情報出力処理を速やかに実行可能である。
また、上記説明したマルチコアシステム100によれば、専用メモリ領域102として用意する必要がある記憶容量(サイズ)の合計は、タスク103からの出力要求の最大サイズにコア101の総数を乗じた値としてよい。コア101の総数は、タスク103の総数よりも少ない場合が多いため、全てのタスク103に対して専用の出漁領域を設ける場合に比べて、用意すべきメモリのサイズを抑えることが可能である。
また、例えば、マルチコアシステム100全体の性能向上のために、マルチコアプロセッサ401を増設した場合であっても、増加したコア数分のメモリ領域を用意することにより、各タスク103、ライブラリ104等を修正することなく、情報出力処理を実行可能である。また、この場合において、コア101が増加しても、各タスク103は情報出力処理において明示的な排他制御を必要としないため、係る情報出力処理がマルチコアシステム100全体のボトルネックとなることはない。
以上より、本実施形態におけるマルチコアシステム100によれば、複数のタスク103がそれぞれ専用メモリ領域102に並行して任意の情報を出力することが可能である。
より具体的には、コア101毎に専用メモリ領域102を用意することで、複数のタスク103が、係るコア101毎の専用メモリ領域102に並行して任意の情報を出力することが可能である。これにより、複数のタスク103が、コア101毎に用意されたリソース(専用メモリ領域102)に対して並行してアクセスすることが可能な情報処理装置(マルチコアシステム100)を提供することが可能である。
<第2の実施形態>
次に、本願発明の第2の実施形態について説明する。
図8は、本実施形態に係る情報処理装置800の構成を概念的に例示するブロック図である。
本実施形態における情報処理装置800は、複数の演算処理部801(図8に例示する「演算部01」乃至「演算部04」等)と、専用メモリ領域802(図8に例示する「専用メモリ領域01」乃至「専用メモリ領域04」等)とを有する。なお、本実施形態における演算処理部801の数は、情報処理装置800に求められる性能等に応じて、適宜選択してよい。
また、本実施形態における情報処理装置800は、複数のタスク803と、リソースアクセス部804と、演算処理割り当て管理部807と、を有する。
上記演算処理部801は、1以上のタスク803を実行する、演算処理装置である。
上記専用メモリ領域802は、特定の上記演算処理部801に関連付けられ、当該演算処理部801において実行される上記タスク803から出力される各種情報を保持可能な、第1の記憶部である。
上記タスク803は、例えば、上記演算処理部801において実行可能なように実装された各種ソフトウェア・プログラム(コンピュータ・プログラム)である。
上記演算処理割り当て管理部807は、1以上のタスク803を、特定の上記演算処理部801に割り当てる。特定の演算処理装置801を割り当てられたタスク803は、当該演算書士装置801において実行される。
上記リソースアクセス部804は、特定のタスク803が通知した専用メモリ領域802に対するアクセス要求を受け付け、上記演算処理割り当て管理部807に対して当該特定のタスク803を実行している演算処理部801の占有を要求すると共に、当該演算処理部801に関連付けされた専用メモリ領域802に対する上記アクセス要求を処理する。
本実施形態において、上記アクセス要求は、例えば、特定のタスク803から専用メモリ領域802に対して任意の情報を出力することを要求する、情報出力要求であってもよい。
また、本実施形態における情報処理装置800は、第2記憶出力部805と、第2の記憶部806とを有してもよい。
この場合、第2記憶出力部805は、上記リソースアクセス部804からの要求に応じて、特定の専用メモリ領域802に保持された各種情報を、第2の記憶部806に出力してもよい。本実施形態において、第2の記憶部806は、例えば、ファイルやデータベース等、専用メモリ領域802に保持された各種情報を保持可能な記憶装置であってもよい。
また、この場合、上記専用メモリ領域802は、該専用メモリ領域802が関連付けされた演算処理部801において実行されるタスク803、または、上記第2記憶出力部805からのアクセスのみを受け付けてもよい。
上記説明したマルチコアシステム800においては、特定の専用メモリ領域102には、当該特定の専用メモリ領域102に関連付けされた1つの特定のコア801のみがアクセス可能である。
例えば、あるタスク803が情報出力要求を実行した場合、当該タスク803が特定のコア801を占有することにより、他のタスク801は、当該特定のコア801に関連付けされた専用メモリ領域802にアクセスすることができない。これにより、複数のタスク803間の競合状態を回避可能である。
このため、上記説明したマルチコアシステム800によれば、複数のタスク803間において明示的な排他制御を実行する必要がなく、特定の専用メモリ領域802に対して速やかに情報を出力可能である。
以上より、本実施形態における情報処理装置800によれば、各コア801に専用の情報出力領域(専用メモリ領域802)を用意することで、複数のタスク803が互いに排他制御を行うことなく、並行して任意の情報を出力することが可能である。これにより、複数のタスク803が、演算処理装置801毎に用意されたリソース(専用メモリ領域802)に対して並行してアクセスすることが可能な情報処理装置800を提供することが可能である。
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態における情報処理装置を実現可能なハードウェア及びソフトウェア・プログラムについて説明する。
なお、以下の説明において、上記各実施形態において説明したマルチコアシステム100及び、情報処理処装置800をまとめて「情報処理装置等」と称する場合がある。
上記各実施形態において説明した情報処理装置等の各構成要素は、それぞれの機能を実現する専用のハードウェア装置により構成してもよい。この場合、係る情報処理装置等の構成要素は、全ての機能を統合したハードウェア(処理ロジックを実装した集積回路等)として実現してもよく、特定の機能を実現する個別のハードウェアの組合せにより構成してもよい。
また、係る情報処理装置等の構成要素は、図9に例示するようなハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されもよい。なお、以下の説明において、図9に例示するハードウェアを、単に情報処理ハードウェアと称する場合がある。
図9における演算装置901は、汎用のCPU(Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置901は、例えば後述する不揮発性記憶装置903に記憶された各種ソフトウェア・プログラムを記憶装置902に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。
図9に例示する具体例において、演算装置901は例えばマルチコアプロセッサ401に相当し、複数の演算処理部であるコアを有してもよい。
記憶装置902は、演算装置901から参照可能な、RAM(Random Access Memory)等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置902は、揮発性のメモリ装置であってもよい。
また、記憶装置902は、1次記憶装置402に相当し、専用メモリ用域(102,802)を提供してもよい。
不揮発性記憶装置903は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置であり、各種ソフトウェア・プログラムやデータ等を記録してもよい。
また、不揮発性記憶装置903は、2次記憶装置403に相当し、ファイルシステムによって提供されるファイルや、データベース等を記憶してもよい。なお、不揮発性記憶装置903は、プログラム記憶領域404として、各種ソフトウェア・プログラム(コンピュータ・プログラム)を記憶してもよい。
ネットワークインターフェイス906は、各種通信ネットワークに接続可能なインターフェイス装置である。係るネットワークインターフェイス906としては、例えば、有線及び無線式のLAN(Local Area Network)接続用インターフェイス装置等を採用してもよい。
上記説明した各実施形態においては、例えば、ファイル106あるいは第2の記憶部806が、何らかの通信ネットワークにより接続された外部装置により提供される場合、ネットワークインターフェイス906を介して、各タスク(103,803)からの出力情報を当該外部装置に送信してもよい。
外部記憶装置904は、例えば、後述する外部記憶媒体905に対するデータの読み込みや書き込みを処理する装置である。
外部記録媒体905は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
上述した各実施形態を例に説明した本発明は、例えば、図9に例示した情報処理ハードウェアにより上記情報処理装置等を構成し、係る情報処理ハードウェアに対して、上記各実施形態の説明において参照したフローチャートの機能を実現可能なソフトウェア・プログラムを供給した後、そのソフトウェア・プログラムを、演算装置901が実行することによって達成されてもよい。
上述した各実施形態において、上記各図に示した各部(例えば、コア割り当て管理部(108、807)、ファイル出力部105、第2記憶出力部805、ライブラリ104、リソースアクセス部804、タスク(103、803)等)は、上述したハードウェアにより実行されるソフトウェア・プログラムとして実現可能である。
また、これらは、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェア・モジュールとして実現することも可能である。ただし、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
例えば、上記情報処理装置等を構成する各部をソフトウェア・プログラムとして実現する場合、これらのソフトウェア・プログラムを不揮発性記憶装置903に記憶しておき、演算装置901がそれぞれの処理を実行する際に、これらのソフトウェア・プログラムを記憶装置902に読み出すよう構成してもよい。
また、これらのソフトウェア・プログラム間は、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成してもよい。このような構成により、これらのソフトウェア・プログラム間は、相互に通信可能に接続可能である。
更に、上記各ソフトウェア・プログラムを外部記憶媒体905に記録しておき、上記通信装置等の出荷段階、あるいは、運用段階等において、適宜外部記憶装置904を通じて当該ソフトウェア・プログラムを不揮発性メモリ903に格納するよう構成してもよい。
また、上記各実施形態における情報処理装置等の構成要素をソフトウェア・プログラムとして実現する場合、上記各実施形態において説明したファイル106や第2の記憶部806に出力される情報は、適切なデータ構造等を用いて、不揮発性記憶装置903に記憶してもよい。また、これらの情報は、任意のデータベース等に格納することにより、不揮発性記憶装置903に記憶してもよい。
なお、上記各情報処理装置等への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは、出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは、係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更、または、改良を加えることが可能であることは明らかである。そのような場合、係る変更、または、改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。