(57)【要約】  バッファアクセスのオーバーヘッドを削減して、処理遅延の発生を防ぐ。  情報処理装置が、タスクに対応する処理を実行するプロセッサと、プロセッサが占有してアクセス可能な内部メモリを具備するプロセッシング要素と、プロセッシング要素の動作を制御するタスク管理部とを備える。タスク管理部が、処理の対象となるデータを格納する少なくとも１つの入力用バッファ、プロセッサが処理の対象となるデータに対して行う処理の内容、及びプロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、タスクに対応する処理をプロセッサに行わせ、入力用バッファ及び出力用バッファをプロセッシング要素の外部に設けられた外部メモリに確保するか内部メモリに確保するかをタスク間の依存に応じて管理する。
2012039216.tif 000002
【特許請求の範囲】
【請求項１】
タスクに対応する処理を実行するプロセッサと、前記プロセッサが占有してアクセス可能な内部メモリを具備するプロセッシング要素と、前記プロセッシング要素の動作を制御するタスク管理部とを備え、
前記タスク管理部が、
前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、
前記タスクに対応する処理を前記プロセッサに行わせ、
前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理する、
ことを特徴とする情報処理装置。
【請求項２】
前記タスク管理部は、
前記入力用バッファに格納されたデータを前記プロセッサに入力するための入力ポートを指定し、
前記入力ポートが接続される前記入力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための入力ポート識別情報と、前記入力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記入力用バッファから前記処理の対象となるデータを取得し、
また前記タスク管理部は、
前記プロセッサによる処理結果のデータを前記出力用バッファに格納するための出力ポートを指定し、
前記出力ポートが前記外部メモリと前記内部メモリのいずれに接続されるかを識別するための出力ポート識別情報と、前記出力ポートが接続される前記出力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記出力用バッファに前記処理結果のデータを転送することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記タスク管理部は、
前記処理の対処となるデータが前記内部メモリに確保された前記入力用バッファに格納されている場合は、前記入力ポートが前記内部メモリに接続されるように前記入力ポート識別情報を設定し、前記処理の対象となるデータが格納された領域の前記内部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
前記処理の対処となるデータが前記外部メモリに確保された前記入力用バッファに格納されている場合は、前記入力ポートが前記外部メモリに接続されるように前記入力ポート識別情報を設定し、前記処理の対象となるデータが格納された領域の前記外部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
また前記タスク管理部は、
前記処理結果のデータを前記内部メモリに確保された前記出力用バッファに格納する場合は、前記出力ポートが前記内部メモリに接続されるように前記出力ポート識別情報を設定し、前記処理結果のデータを格納する領域の前記内部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定し、
前記処理結果のデータを前記外部メモリに確保された前記出力用バッファに格納する場合は、前記出力ポートが前記外部メモリに接続されるように前記出力ポート識別情報を設定し、前記処理結果のデータを格納する領域の前記外部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
複数のプロセッシング要素を具備するハードウェア部を更に備えることを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記タスク管理部は、
同一のプログラム識別子を持つ複数のタスクのタスク情報を1つのタスクキューに、前記タスクが生成される順に格納し、
前記タスクキューを前記プロセッサに渡し、
前記プロセッサは、前記タスクキューに従って、前記複数のタスクを実行することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記タスク情報は、タスク間の依存関係を示すストリーム識別子情報を含み、
前記タスク管理部は、
同じストリーム識別子を持つ複数のタスクが連続して実行され、同一のストリーム識別子を持つ複数のタスク間での実行順序が変わらないように、前記タスクキューに格納されている前記複数のタスクのタスク情報を、前記ストリーム識別子を参照して並べ替えることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記タスク管理部は、
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、
前記依存関係に関わる入力ポートが、前記内部メモリに確保された前記入力用バッファに接続されるように前記タスク情報を設定することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記タスク管理部は、
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、
前記依存関係に関わる出力ポートが、前記内部メモリに確保された前記出力用バッファに接続されるように前記タスク情報を設定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
タスクに対応する処理を実行するプロセッサと、前記プロセッサが占有してアクセス可能な内部メモリを備えるプロセッシング要素を具備する情報処理装置において用いられる情報処理方法であって、
前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、
前記タスクに対応する処理を前記プロセッサに行わせ、
前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理することを特徴とする情報処理方法。
【請求項１０】
タスクに対応する処理を実行するプロセッサと、前記プロセッサが占有してアクセス可能な内部メモリを具備するプロセッシング要素と、前記プロセッサの動作を制御するタスク管理部とを備える情報処理装置に組み込まれる情報処理プログラムであって、
前記タスク管理部が、
前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、
前記タスクに対応する処理を前記プロセッサに行わせ、
前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理する、
情報処理装置としてコンピュータを機能させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その方法及びそのプログラムに関し、特に複数のタスクから構成されるジョブにおいてタスク間でデータを共有しながら処理を行うタスクの実行制御に関連した情報処理装置、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
例えばパケットストリームや音声・画像ストリーム等のストリームデータは、少なくとも１フレーム以上のフレームデータ（１単位の入力データ）から構成される。ストリームデータに対して行われるストリーム処理では、各フレームデータに対して一連の処理（以下ではジョブと称する）が施され、出力データが生成される。フレームデータに対して行われるジョブは、少なくとも１以上の部分処理（以下ではタスクと称する）に分割することができる。【０００３】
分割されたタスクは、異なるプロセッサによって、又は同一のプロセッサであっても異なるプログラムを実行して、あるいは再構成ハードウェア（ＨＷ）であれば異なるコンフィギュレーションによって処理すること等が可能である（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００７／０２９４２１号（図１−３）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、依存関係にあるタスク間で、外部メモリ上に確保されたバッファを介してデータの受け渡しが行われると、バッファアクセスのオーバーヘッドが発生し、処理に遅延が生じることがある。【０００６】
そこで、本発明は、バッファアクセスのオーバーヘッドを削減して、処理遅延の発生を防ぐ情報処理装置、その方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の観点によれば、タスクに対応する処理を実行するプロセッサと、前記プロセッサが占有してアクセス可能な内部メモリを具備するプロセッシング要素と、前記プロセッシング要素の動作を制御するタスク管理部とを備え、前記タスク管理部が、前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、前記タスクに対応する処理を前記プロセッサに行わせ、前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理する、ことを特徴とする情報処理装置が提供される。【０００８】
本発明の第２の観点によれば、タスクに対応する処理を実行するプロセッサと、前記プロセッサが占有してアクセス可能な内部メモリを備えるプロセッシング要素を具備する情報処理装置において用いられる情報処理方法であって、前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、前記タスクに対応する処理を前記プロセッサに行わせ、前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理することを特徴とする情報処理方法情報処理方法が提供される。【０００９】
本発明の第３の観点によれば、タスクに対応する処理を実行するプロセッサと、前記プロセッサが占有してアクセス可能な内部メモリを具備するプロセッシング要素と、前記プロセッサの動作を制御するタスク管理部とを備える情報処理装置に組み込まれる情報処理プログラムであって、前記タスク管理部が、前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、前記タスクに対応する処理を前記プロセッサに行わせ、前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理する、情報処理装置としてコンピュータを機能させることを特徴とする情報処理プログラム情報処理プログラムが提供される。
【発明の効果】
【００１０】
本発明によれば、入力用バッファ及び出力用バッファをプロセッシング要素の外部に設けられた外部メモリに確保するか、内部メモリに確保するかをタスク間の依存に応じて管理するため、バッファアクセスのオーバーヘッドを削減して、処理遅延の発生を防ぐことが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係る情報処理システムにおいて実行されるジョブの詳細を示す図である。
【図２】本発明の一実施形態に係る情報処理システムの一般的な構成を示す図である。
【図３】本発明の一実施形態に係る情報処理システムにおいて参照されるタスク情報の詳細を示す図である。
【図４】本発明の一実施形態に係るタスク管理情報の一例を示す図である。
【図５】本発明の一実施形態に係るタスク管理情報に含まれるタスクキューの詳細な構成の一例を示す図である。
【図６】本発明の一実施形態に係る互いに依存関係にある複数ジョブの一例を示す図である。
【図７】本発明の実施形態に係る複数のジョブにおいて同一種類のタスク間に成立する依存関係をさらに詳細に示す図である。
【図８】本発明の一実施形態に係る、プロセッサからバッファ領域へのアクセスの様子を示す図である。
【図９】本発明の一実施形態に係る、３つのタスクが実行される場合の、各タスクのタスク情報の設定の一例を示す図である。
【図１０】本発明の一実施形態に係る、３つのタスクが実行される場合の、各タスクのタスク情報の設定の他の一例を示す図である。
【図１１】本発明の一実施形態に係るタスク管理動作の一例を示すフローチャートである。
【図１２】本発明の一実施形態に係るタスク情報を受け取ったプロセッサの動作の一例を示すフローチャートである。
【符号の説明】
【００１２】
１００  タスク情報
１１０  入力ポートセット
１１１  入力ポートアドレス
１１２  入力ポート制御情報
１２０  出力ポートセット
１２１  出力ポートアドレス
１２２  出力ポート制御情報
１３０  タスク識別子(TID)
１４０  プログラム識別子(PID)
１５０  タスク管理情報
１６０  ストリーム識別子
３００  タスク
３１０  タスク処理
４００  ジョブ
４１０  ジョブ入力ポート
４２０  ジョブ出力ポート
５００  プロセッシング要素（PE） 
５０１  プロセッサ
５０２  実行制御部
５０３  内部メモリ
５１０  外部メモリ
５２０  通信路
５３０  タスク管理部
６００  タスク群管理情報
６１０  タスクキュー
６１１  タスクバッファ
６１２  プログラム識別子(PID)
６１３  タスクキュー管理情報
６１４  タスク情報
【発明を実施するための形態】
【００１３】
以下では、本発明の実施形態について、図面を参照して説明する。
【００１４】
図１は、本発明の一実施形態に係る情報処理システムにおいて実行されるジョブの詳細を示す図である。
【００１５】
図１に示すように、1つのジョブ４００は、少なくとも１つ以上のタスクに分割することが可能である。
【００１６】
タスク処理部Task1は、タスク３００に対応する処理機能を実現する。タスク処理部Task1は、具体的にはプロセッサとそのプログラム又は、再構成可能ハードウェア（ＨＷ）とそのコンフィギュレーション等によって実現される。
【００１７】
タスク処理部Task1は、処理の対象となる入力データが入力する入力ポートIport1と、処理結果データが出力される出力ポートOport1を具備する。入力ポートIport1と出力ポートOport1は、それぞれ対応するバッファBuf1とBuf4に接続されている。
【００１８】
入力ポートIport1に接続されたバッファBuf1に必要なデータがバッファされ、出力ポートOport1に接続されたバッファBuf4への書き込みが可能となると、タスク処理部Task1は、他のタスクとは独立に処理を実行することが可能となる。
【００１９】
図１に示す例では、タスク処理部Task1の入力ポートIport1にバッファBuf1が、また出力ポートOport2にバッファBuf4接続されて、１つのタスク３００が構成されている。しかしながら、タスク処理部は複数の入力ポート、複数の出力ポート、又はその双方を備えていてもよい。例えばタスク処理部Task4〜Task7のそれぞれは、２つの入力ポートIport1とIport2と１つの出力ポートOport1を具備している。これらの２つの入力ポートには、それぞれ異なるバッファが接続される。
【００２０】
図１に示すジョブ４００は、７個のタスク処理部Task1〜Task7と１０個のバッファBuf1〜Buf10を含む。これらのタスク処理部Task1〜Task7に対応して、ジョブ４００は複数のタスクに分割され得る。
【００２１】
タスク処理部Task2〜Task7も、タスク処理部Task1と同様な構成を有し、対応するタスク処理の機能を実現する。なお、１つのジョブ４００が備えるタスク処理部の数は、７に限定されるわけではない。
【００２２】
ジョブ４００を構成する複数のタスクは互いに依存関係にあり、何れかのタスクの出力結果が、別のタスクの入力データとして利用されてもよい。各タスクについて、入力用のバッファ（当該タスクがアクセスする入力データが格納されているバッファ）と、当該タスクの処理結果が出力される出力用のバッファの情報は、タスク情報１００（図３参照）に基づいて管理される。タスク情報１００に基づいて、それぞれのタスクについて適切な入出力用のバッファが指定され、タスク間でのデータの受け渡しが行われる。
【００２３】
例えばタスク処理ProcAを実行するタスク処理部Task1によるタスクは、このタスク処理部Task1と、入力ポートIport1に接続されたバッファBuf1と、出力ポートOport1に接続されたバッファBuf4とから構成される。
【００２４】
更にバッファBuf４は、他のタスクを実行するためのタスク処理部Task4の入力ポートIport1にも接続され、この接続を介して、２つのタスクTask1とTask4とは互いに依存関係にあることになる。
【００２５】
ジョブ４００は３つのジョブ入力ポート４１０と4つのジョブ出力ポート４２０を備えている。外部からの入力データはジョブ入力ポート４１０から入力され、対応するそれぞれのバッファに格納される。またジョブ４００の処理結果は、出力側のバッファに格納され、ジョブ出力ポート４２０からジョブ４００の外部に出力される。このジョブ４００の処理結果のデータは、他のジョブによって処理され得る。
【００２６】
図２は、本発明の一実施形態に係る情報処理システムの一般的な構成を示す図である。
【００２７】
この情報処理システムは、１つの情報処理装置上で実現されてもよい。情報処理システムは、１又は複数のプロセッシング要素（PE）５００、外部メモリ５１０、及びタスク管理部５３０を含む。これらの各部は、通信路５２０を介して互いに接続されている。
【００２８】
プロセッシング要素５００は、実際にタスクを処理するハードウェア構成を含み、具体的には、プロセッサ５０１、実行制御部５０２、及び内部メモリ５０３を含む。プロセッサ５０１は、タスクの処理を実際に行い、実行制御部５０２は、プロセッサ５０１によるタスクの実行を制御する。また、内部メモリ５０３は、プロセッサ５０１が占有してアクセスすることのできるメモリである。
【００２９】
プロセッサ５０１及び実行制御部５０２は、タスクの実行に際して、タスク情報１００（図３参照）を参照する。
【００３０】
外部メモリ５１０は、処理対象となるデータや処理内容を定義するプログラム等を格納する記憶装置である。
【００３１】
タスク管理部５３０は、アプリケーションを構成するジョブやタスクを管理する管理機能を実現する。タスク管理部５３０は、外部からのデータの到着に応じて予め指定された処理を当該データに施してジョブ管理を行う。またタスク管理部５３０は、ジョブ内のタスクの実行状況に応じて、次に実行すべきタスクを動的に選択し、タスクの実行と、タスクの実行に必要なプログラムロードのスケジュール管理を動的に行う。
【００３２】
図３は、本発明の一実施形態に係る情報処理システムにおいて参照されるタスク情報の詳細を示す図である。
【００３３】
図３に示すように、タスク情報１００は一例として、入力ポートセット１１０、出力ポートセット１２０、タスク識別子（TID）１３０、プログラム識別子（PID）１４０、タスク管理情報１５０、及びストリーム識別子（SID）１６０等の項目を含む。
【００３４】
タスク識別子１３０はタスク情報１００に対応するタスクを指定し、プログラム識別子１４０は当該タスクの処理内容を指定する。
【００３５】
タスクの実行管理に必要とされるその他の情報は、例えばタスク管理情報１５０として管理される。また、ストリーム識別子１６０は、依存関係を持つ可能性があるタスクを識別するための識別子であり、例えば同一のグループ（ストリーム）に属しているタスクについては、同一の識別子が割り当てられてもよい。
【００３６】
入力ポートセット１１０は、タスク処理の入力データが格納される、少なくとも１以上のバッファをアドレス指定するための情報を含む。入力ポートセット１１０は、少なくとも１つの入力ポートアドレス１１１と、入力ポートアドレスに応じた入力ポート制御情報（IF）１１２を含む。
【００３７】
入力ポートアドレス１１１は、入力データが格納されるバッファをアドレス指定する。入力ポート制御情報１１２は、当該バッファに入力する入力データが、外部メモリ５１０に確保されたバッファから入力されるか、あるいは内部メモリ５０３に確保されたバッファから入力されるかを判定するための情報である。
【００３８】
出力ポートセット１２０は、タスクの処理結果データが出力される、少なくとも１以上のバッファをアドレス指定するための情報を含む。出力ポートセット１２０は、少なくとも１つの出力ポートアドレス１２１と、出力ポートアドレスに応じた出力ポート制御情報（OF）１２２を含む。
【００３９】
出力ポートアドレス１２１は、出力データが格納されるバッファをアドレス指定する。出力ポート制御情報１２２は、出力データを外部メモリ５１０内のバッファに格納するか、内部メモリ５０３内のバッファに格納するかを判定するための情報である。
【００４０】
タスク処理を実行するプロセッサ５０１は、タスクに対応するタスク情報１００を参照し、外部メモリ５１０内のバッファから入力データを取得するか、あるいは内部メモリ５０３内のバッファから入力データを取得するかを、入力ポートセット１１０のIF１１２の指定に応じて切り替える。同様にプロセッサ５０１は、出力ポートセット１２０のIF１２２の指定に応じて、出力データを外部メモリ５１０内のバッファに出力するか、内部メモリ５０３内のバッファへ出力するかを切り替える。
【００４１】
例えば画像ストリームのデコード処理を行う場合、フレームデータ毎にジョブを生成して処理が行われる。すなわち、連続する複数のフレームデータに対応して複数のジョブが生成され、それぞれのジョブは同様の処理を行うタスクに分割される。例えばそれぞれのフレームデータの処理は、ヘッダ解析、ハフマンデコード、逆量子化等の処理を含み、それぞれの処理がタスクとして実行される。
【００４２】
すなわち、複数のフレームデータに対してそれぞれジョブが生成され、それぞれのジョブは、ヘッダ解析タスク、ハフマンデコードタスク、逆量子化等のタスクに分割される。この場合、１つのジョブ内に３種類のタスクが存在するが、同一種類のタスクはタスクキューという１つのまとまりとして連続処理することができる。
【００４３】
図４は、本発明の一実施形態に係るタスク管理情報の一例を示す図である。このようなタスク管理情報を用いることで、同じ種類毎にタスク群を管理することが可能になる。
【００４４】
図４に示すタスク群管理情報６００は、１又は複数のタスクキュー６１０（タスクキュー１〜タスクキューN）を含んでいる。タスクキュー６１０のそれぞれは、同種類のタスクの情報を格納している。
【００４５】
図５は、上述のタスク管理情報に含まれるタスクキューの詳細な構成の一例を示す図である。タスクキュー６１０は、タスクバッファ６１１、プログラム識別子（PID）６１２、及びタスクキュー管理情報６１３を含む。
【００４６】
タスクバッファ６１１には、タスクの生成順に従って複数のタスク情報６１４が格納される。タスク情報６１４のそれぞれは、例えば図３に示すタスク情報１００に相当する。
【００４７】
プログラム識別子６１２はタスクの種類の識別に用いられ、図３に示すプログラム識別子１４０と同様の情報を含む。
【００４８】
タスクキュー管理情報６１３は、タスクキュー６１０が管理する複数のタスクの実行管理に必要な情報を含んでいる。タスクキュー管理情報６１３には、タスクバッファ６１１に格納されているタスク情報が指定する全てのタスクを実行するのに必要な所要時間（タスクキュー所要処理時間）や、当該全てのタスクの実行を完了すべき時刻（タスクキューデッドライン）が含まれていてもよい。
【００４９】
一般的に、１つのタスクキューにまとめられた連続する同一種類のタスク間にも、依存関係が成立することがある。
【００５０】
図６は、互いに依存関係にある複数ジョブの一例を示す図であり、図６に示す例では、４つのジョブJobj（j=1~4）が図示されている。
【００５１】
ジョブJobj（j=1~4）は、２つのジョブ入力ポート処理Iport1,jとIport2,j、２つのジョブ出力ポートOport1,jとOport2,j、タスク処理ProcAを行うタスク処理部Task1,j、タスク処理ProcBを行うタスク処理部Task2, j、及び５つのバッファBuf1,j〜Buf5,jを含んでいる。
【００５２】
ジョブJobjでは、ジョブ入力ポートIport1,jとバッファBuf1,jが接続されており、またジョブ入力ポートIport2,jとバッファBuf2,jが接続されている。タスク処理部Task1, jは２つの入力ポートIport1とOport1を含んでいる。バッファBuf1,jからは入力ポートIport1に入力データが入力し、バッファBuf2,jからは入力ポートIport2に入力データが入力する。
【００５３】
タスク処理部Task1, jはこれらの入力データに対して処理ProcAで指定されるタスク処理を施す。タスク処理部Task1, jは、２つの出力ポートOport1とOport2を含んでおり、Oport1から出力される処理結果データはバッファBuf3,jに、Oport2から出力される処理結果データはバッファBuf5,jにそれぞれ格納される。
また、タスク処理部Task2, jは入力ポートIport1と出力ポートOport1を含んでいる。バッファBuf3,jに格納されたデータは、タスク処理部Task2,jの入力ポートIport1に入力される。タスク処理部Task2,jはこの入力データに対して処理ProcBで指定されるタスク処理を施す。タスク処理部Task2,jの処理結果データは、バッファBuf4,jに格納される。
【００５４】
バッファBuf4,jはジョブ出力ポートOport1,jに、バッファBuf5, jはジョブ出力ポートOport2,jに接続されている。このため、タスク処理部Task1,jの処理結果データはバッファBuf5,jを介してジョブ出力ポートOport2,jに出力され、タスク処理部Task2,jの処理結果データはBuf4,jを介してジョブ出力ポートOport2,jに出力される。
【００５５】
図６に示す例では、ジョブJobjのジョブ出力ポートOport2,jが、次のジョブJobj+1のジョブ入力ポートIport1,j+1に接続されている。すなわち、前後のジョブの間で依存関係が成立している。
【００５６】
図６に示す最初のジョブJob1の出力データの１系統は、後続のジョブJob2の一方の入力ポートに入力する。すなわち、ジョブJob1の一方の出力ポートOport2,1は、後続のジョブJob2の一方の入力ポートIport1,2に接続されている。
【００５７】
このような経路を介して、ジョブJob1のタスク処理部Task1,1と、ジョブJob2の同種類のタスク処理部Task1,2との間には依存関係が成立する。
【００５８】
ジョブJob2のタスクTask1,2とジョブJob3のタスクTask1,3との間、及びジョブJob3のタスクTask1,3とジョブJob4のタスクTask1,4にも同様な依存関係が存在する。
【００５９】
図７は、図６に示した複数のジョブにおいて同一種類のタスク間に成立する依存関係をさらに詳細に示す図である。
【００６０】
タスク処理部Task1,i-1の処理結果データは、２つの出力ポートのうちOport2に対応付けられているバッファBuf5,i-1に格納される。続くタスク処理部Task1,iには入力ポートIPort1に対応付けられているバッファBuf1,iからデータが入力する。
【００６１】
このような場合に、同一のバッファ領域をバッファBuf5,i-1及びバッファBuf1.iとして重複して指定することで、バッファBuf5,i-1からバッファBuf1,iの間の不要なコピー処理を生じさせない。同様に、バッファBuf5,iとバッファBuf1,i+1についても、不要なコピー処理を削減できる。しかしながら、このようなバッファ領域が外部メモリ５１０上に確保されると、通信路５２０を介したメモリアクセスが必要とされ、処理遅延が生じる可能性がある。
【００６２】
図８は、本発明の一実施形態に係る、プロセッサからバッファ領域へのアクセスの様子を示す図である。説明の簡単化のため、図８では図２に示した情報処理システムから、説明に関わる部分を抜粋して示している。
【００６３】
図８に示す例では、外部メモリ５１０の特定の領域において、各バッファが確保されている。この図においては、各バッファがすべて異なる領域に確保されているように示されているが、処理に影響がなければ同じ領域に異なるバッファが確保されてもよい。
【００６４】
タスク情報１００は、タスク間の依存関係に従って、個別に実行制御部５０２に転送される。あるいは、複数タスクのタスク情報１００が格納されたタスクキュー６１０（図５参照）が、依存関係に従って一括して実行制御部５０２に転送されてもよい。
【００６５】
実行制御部５０２は、タスク情報１００、又はタスクキュー６１０に格納されているタスク情報６１２に従って、プロセッサ５０１の実行を制御する。すなわちタスク処理部３１０の処理実行に必要なプログラムに従って、プロセッサ５０１が動作する。
【００６６】
再構成可能プロセッサであれば、プログラムを内部メモリ５０３に格納した後に当該プログラムを実行したり、プログラムに応じてハードウェアの構成を変えたりすることができる。実行制御部５０２は、このようなプログラムの内部メモリ５０３へのロードや、ハードウェア構成の再構成等の制御も行う。
【００６７】
プロセッサ５０１は、タスク情報１００の入力ポートセット１１０、及び出力ポートセット１２０の情報に基づき、指定されたバッファにアクセスして必要な処理を行う。
【００６８】
内部メモリ５０３は、一時的なデータの格納に用いられ得るため、処理内容によっては、外部メモリ５１０におけるバッファの記憶内容の一部を内部メモリ５０３に転送し、内部メモリ５０３に対してRead/Writeしながら処理を進めることもできる。その後、最終的な処理結果を、内部メモリ５０３から外部メモリ５１０の所定のバッファに転送してもよい。
【００６９】
図示の通り、例えばタスクTask1,i-1の実行では、バッファBuf1,i-1、Buf2,i-1に対してReadアクセス、バッファBuf3,i-1、Buf5,i-1に対してWriteアクセスが生じる。タスクT ask1,i、Task1,i+1の実行でも、同様に外部メモリ５１０内の２つのバッファへのReadアクセスと２つのバッファへのWriteアクセスが生じる。
【００７０】
タスク同士が互いに独立に実行されると、外部メモリ５１０のバッファへのアクセスがタスクの実行毎に発生する。すなわち、タスク間でのデータの受け渡しは、外部メモリ５１０ に確保されたバッファを介して行うことになる。従って、連続するタスク間に依存関係があり、直前に実行されたタスクの処理結果を次のタスクが読み込む場合、先に外部メモリ内のバッファに格納されたデータを、改めて当該バッファから読み込まなくてはならない。
【００７１】
外部メモリ５１０は、通信路５２０を経由したアクセスによって、複数のプロセッシング要素で共有して使用される。このため一般的には、プロセッサ５０１が占有して使える内部メモリ５０３に比べて、外部メモリ５１０へのアクセスは遅延が大きい。また、他のプロセッシング要素とのアクセス競合のため、外部メモリ５１０へのアクセスに遅延を引き起こされる可能性もある。このため、タスクの処理に際して、外部メモリ５１０へのアクセスを削減して遅延を削減することが望まれる。
【００７２】
本実施形態に係る情報処理システムでは、タスクキュー６１０にまとめられた同種のタスクは、同一のプロセッサ５０１の同一のプログラムによって実行される。すなわち、外部メモリ５１０ではなくプロセッサ５０１が占有して利用可能な内部メモリ５０３にバッファ領域を確保しデータを受け渡す。
【００７３】
依存関係にある複数のタスクを同一のプロセッサ５０１によって連続して処理する場合に、当該プロセッサ５０１に接続された内部メモリ５０３にバッファ領域を確保することで、外部メモリ５１０へのアクセスを抑制することができる。従って、外部メモリ５１０を介したデータの受け渡しに比べてオーバーヘッド（すなわち遅延）を削減できるようになる。
【００７４】
図８に示すように、タスクTask1,i-1の実行では、バッファBuf1,i-1、Buf2,i-1に対してReadアクセス、バッファBuf3,i-1、Buf5,i-1に対してWriteアクセスが生じる。このうちバッファBuf5,i-1は、後続するタスクTask1,iの実行において、入力ポートIport1からReadアクセスされる。
【００７５】
そこで、このバッファBuf5,i-1に相当するバッファ領域を、内部メモリ５０３内に内部メモリBufとして確保する。これによって、タスクTask1,i-1の結果を当該バッファBufに格納し、タスクTask1,iの実行の際は、バッファBufに格納された結果を参照することができる。従って、外部メモリ５１０内のバッファBuf5,i-1へのWriteアクセス及びReadアクセスをそれぞれ削減することができる。
【００７６】
同様に、タスクTask1,i-1の処理結果を内部メモリ５０３内のバッファBufに格納し、タスクTask1,i+1がその結果を参照することで、バッファBuf5,i-1へのWriteアクセス及びReadアクセスをそれぞれ削減できる。
【００７７】
次に依存のあるタスクがあったとしても、当該タスクがTask1,i+1の直後には実行されなければ、タスクTask1,i+1の処理結果は外部メモリ５１０内のバッファBuf5,i+1に格納してもよい。
【００７８】
タスクTask1,i+1とタスクTask1,i+2（図示せず)が依存関係にあるが、タスクTask1,i+1 とタスクTask1,i+2とが連続して実行されない場合、タスクTask1,i+1の実行とタスクTask1,i+2の実行の間に異なる種類のタスクTaskX（図示せず）が実行される可能性がある。このような場合は、タスクTaskXが内部メモリ５０３をバッファ領域Bufとして利用することで、内部バッファBufの内容が破壊される可能性がある。従って、タスクTask1,i+2を実行するときは、タスクTask1,i-1と同様に入力ポートIport1に対応付けられている外部メモリ５１０のバッファBuf5,i+1から入力データを取得すれば、タスクTask1,i+1の出力結果を正しくタスクTask1,i+2に伝達することができる。
【００７９】
一般に、同一タスクキュー６１０内において、依存関係のあるタスクのタスク情報６１４同士が常に隣接しているわけではない。例えば、２つの入力ストリームのデコードを並列におこなうような場合、それぞれのストリームのフレームデータの処理に必要なタスクに対応するタスク情報６１４が1つのタスクキュー６１０内に混在することがある。
【００８０】
同じストリームに属するフレームデータを処理するタスク間には依存関係があるが、異なるストリームに属するフレームデータを処理するタスク間には通常は依存関係がない。しかしながら、１つのタスクキュー６１０内のタスク情報６１４についてタスク処理を行う場合、プロセッサ５０１は、それぞれのタスク間に依存関係が成り立っているかどうかを判断することができないこともある。このような場合には、内部メモリ５０３上のバッファを用いてデータの受け渡しができたとしても、外部メモリ５１０内のバッファを用いたデータの受け渡しが行われてもよい。
【００８１】
タスクを実行するプロセッサ５０１は、タスク情報を参照して、指定されたタスクの処理を行う。プロセッサ５０１によって実行されるタスク処理は、プログラム識別子で指定される。具体的なタスク処理は、プロセッサ５０１のプログラムとして実現されたり、またはプロセッサ５０１が再構成可能ハードウェアである場合、再構成データにより再構成されたハードウェアとして実現されたりする。
【００８２】
プロセッサ５０１は、タスク情報１００における入力ポート制御情報（IF1~IFJ）に応じて、入力ポートとの間のアクセス設定を変更する。すなわち、入力ポート制御情報が外部メモリ５１０を参照するよう設定されている場合(例えば制御情報の設定値＝１であるとする)、対応する入力ポートアドレスを参照して外部メモリ５１０内のバッファから入力データを取得する。一方、タスク情報１００において入力ポート制御情報が内部メモリ５０３を参照するよう設定されている場合（例えば制御情報の設定値＝０であるとする）、内部メモリ５０３内に確保された内部バッファBufのデータを参照する。
【００８３】
内部メモリ５０３での内部バッファBufのアドレスは、対応する入力ポートアドレスによって指定されてもよい。また、同一のタスク識別子を持つタスクは同じプログラム、又は同じハードウェア構成に対応するため、タスク識別子が同じであるタスク間で内部メモリ５０３を介してデータの受け渡しをする場合は、プログラムやハードウェア構成に埋め込まれたアドレスを用いて内部メモリ５０３にアクセスできてもよい。
【００８４】
同様にプロセッサ５０１は、タスク情報１００の出力ポート制御情報（OF1~OFJ）に応じて、出力ポートとの間のアクセス設定を変更する。すなわち、出力ポート制御情報の設定が外部メモリ５１０を参照するよう設定されている場合（例えば制御情報の設定値＝１であるとする）、対応する出力ポートアドレスを参照して外部メモリ５１０内のバッファへ出力データが出力される。一方、タスク情報１００において出力ポート制御情報が内部メモリ５０３へのアクセスを指定している場合（例えば制御情報の設定値＝０であるとする）、内部メモリ５０３内に確保された内部バッファへ出力データが出力される。
【００８５】
内部メモリ５０３における内部バッファのアドレスは、対応する出力ポートアドレスによって指定されてもよい。また、同一のタスク識別子を持つタスクは同じプログラム、又は同じハードウェア構成に対応するため、タスク識別子が同じであるタスク間で内部メモリ５０３を介してデータの受け渡しをする場合は、プログラムやハードウェア構成に埋め込まれたアドレスを用いて内部メモリ５０３にアクセスできてもよい。
【００８６】
同一種類のタスクの処理を連続して行う場合、タスク間に依存関係が成立すれば、出力ポート制御情報の設定値を０として、先行タスクの依存を伝えることができる。これによって、出力ポートからの出力データは内部メモリ５０３のバッファに書き込まれる。その後、続くタスクの対応する入力ポート制御情報の設定値を０とすると、タスク間の依存関係が正しく伝達される。すなわち、続くタスクでは、内部メモリ５０３から入力データが読み出される。従って、依存関係にあるタスク間でのデータの転送を、内部メモリ５０３内のバッファを用いて行うことで、オーバーヘッドを削減することができる。
【００８７】
図９は、図７に示す３つのタスクが実行される場合の、各タスクのタスク情報１００の設定の一例を示す図である。
【００８８】
タスクキュー６００のタスクバッファ６１１内には、３つのタスクTask1,i-1、Task1,i、及びTask1,i+1それぞれのタスク情報１００（すなわちタスク情報６１４）が格納されている。それぞれのタスク情報１００は、入力ポート制御情報１１２、出力ポート制御情報１２２を含む。
【００８９】
３つのタスクは、プロセッサ５０１によってタスクTask1,i-1、Task1,i、Task1,i+1の順に実行される。これらのタスク間では依存関係が成立している。
【００９０】
しかしながら、図９に示す例では、すべてのタスクについて、入力ポート制御情報１１２と出力ポート制御情報１２２の制御値が１に設定されている。このため、データの転送は、入力ポートアドレス１１１と出力ポートアドレス１２１で指定される外部メモリ５１０内のバッファを介して行われる。
【００９１】
図１０は、図９と同様に３つのタスクが実行される場合の、各タスク情報１００の設定の他の一例を示す図である。
【００９２】
以下では、タスクバッファ６１１の先頭のタスクTask1,i-1は、プロセッサ５０１により直前に実行されたタスクとの依存はないものとする。
【００９３】
従って、タスクTask1,i-1への入力データは、外部メモリ５１０において入力ポートアドレスBuf1,i-1、Buf2,i-1で指定される領域から取得される。入力ポート制御情報IF1、IF2の値はそれぞれ１に設定されており、入力ポートに対応付けられたバッファが外部メモリ５１０内にあることが示されている。
【００９４】
先頭タスクTask1,i-1の2つの出力ポートのうち出力ポートOport1,i-1は、連続して実行される次のタスクTkas1,iとは依存関係がない。このため、出力ポートOport1,i-1から、外部メモリ５１０内において出力ポートアドレス１（Buf3,i-1）で指定される領域へ、出力データが送られる。出力ポートアドレス１に対応する出力ポート制御情報OF1の値は１に設定される。
【００９５】
一方、先頭タスクTask1,i-1の他方の出力ポートOport2,i-1からの出力データは、直後に実行されるタスクTask1,iの入力ポートIport1,iに入力される。この場合は、内部メモリ５０３内の内部バッファを介したデータの転送によってオーバーヘッドを削減することが考えられる。従って、対応する出力ポート制御情報OF2の値は０に設定され、内部メモリ５０３の内部バッファへの出力が指示される。
【００９６】
図１０の例では、内部メモリ５０３内の内部バッファのアドレスは、タスクを実行するプログラムに埋め込まれているものとする。従って、出力ポートアドレス２に対応するアドレスを設定する必要は無い。
【００９７】
出力ポート制御情報の設定値が０である場合、対応する出力ポートアドレス１２１に設定されたアドレスが、内部メモリ５０３内のバッファ領域のアドレスとして利用されてもよい。
【００９８】
同様に、タスクTask1,iの入力ポートIport1,iの入力ポート制御情報IF1の値は０に設定されており、入力ポートIport1,iには、内部メモリ５０３内の内部バッファから入力データが入力される。また他方の入力ポート制御情報IF2の値は１に設定されており、外部メモリ５１０において入力ポートアドレス２（Buf2,i）で指定される領域から入力データが取得される。
【００９９】
このタスクTask1,iの出力ポートの設定はタスクTask1,i-1と同様であり、出力ポート制御情報OF1の値は１、OF2の値は０に設定されている。
【０１００】
次のタスクTask1,i+1の入力ポートの設定はタスクTask1,iの入力ポートの設定と同様である。すなわち、タスクTask1,i+1入力ポート制御情報IF1の値は０に、IF2の値は１に設定されている。
【０１０１】
このタスクTask1,i+1は３つのタスクのうち最後のタスクであり、出力結果はすべて外部メモリ５１０に出力する必要がある。このため、タスクTask1,i+1についての出力ポート制御情報OF1、OF2の値は共に１に設定されている。
【０１０２】
続いて、本発明の一実施形態に係る情報処理システムにおける、タスク管理部５３０（図２参照）の動作について説明する。
【０１０３】
上述の通り、１つのタスクキュー６１０には同一のプログラム（プロセッサが再構成ハードウェアの場合は、同一のハードウェア構成) によって処理される複数のタスクのタスク情報がまとめられている。
【０１０４】
例えば複数の異なるストリームデータを処理する場合は、異なるストリームの処理のためのジョブとそのジョブを構成するタスクが生成され、１つのタスクキュー６１０に格納されることがある。この場合、ストリームデータの到着順等に依存して、タスクキュー６１０内では、必ずしも同一ストリームのタスクが連続するわけではない。同一プログラムで実行されるタスクであっても同一のストリームに属さないタスクは依存関係がないので、タスク間の依存は内部メモリを介して転送することはできない。従って、本実施形態に係るタスク管理部５３０は、次に実行すべきタスクキュー６１０内のタスクの並べ替えを行い、同一のストリームに属する依存のあるタスクが連続して実行されるようにする。
【０１０５】
図１１は、本発明の一実施形態に係るタスク管理動作の一例を示すフローチャートである。図１１は、プロセッシング要素５００で実行するためのタスクキュー６１０の選択、及びその後に行われる動作を示す。
【０１０６】
タスク管理部５３０は、各タスクキューのタスクキュー管理情報６１３に基づいて、次に実行すべきタスクキューを選択する（ステップS１００）。
【０１０７】
タスク管理部５３０は、選択されたタスクキュー内で、タスクの並べ替えを行う（ステップS１１０）。このとき、同一ストリームに属するタスクが連続するように並び替えが行われる。ただし、同一ストリームに属するタスク間での順序は変化しないようにする。
【０１０８】
これは、タスクバッファ６１１の先頭から順に、同一ストリームに属するタスク情報６１４を選択することで実現可能である。タスク情報６１４（すなわちタスク情報１００）が属するストリームは、ストリーム識別子１６０を参照して判定できる。連続するように並び替えられた同一ストリームに属するタスク群は、タスクグループと称される。
【０１０９】
タスク管理部５３０は、選択されたタスクキューから１つのタスクグループを選択する（ステップS１２０）。選択の順序は任意に設定可能であってもよい。
【０１１０】
タスク管理部５３０は、選択されたタスクグループの各タスクについて、入力ポート制御情報を設定し（ステップS１３０）、同様に出力ポート制御情報を設定する（ステップS１４０）。
【０１１１】
すなわち、タスク管理部５３０は、タスク間の依存に関わる入力ポートに対して、タスクグループの先頭のタスクの入力ポート制御情報は１に設定し、先頭以外のタスクの入力ポート制御情報は０に設定する。
【０１１２】
またタスク管理部５３０は、タスク間の依存に関わる出力ポートに対して、タスクグループの最後尾のタスクの出力ポート制御情報は１に設定し、最後尾以外のタスクの出力ポート制御情報は０に設定する。
【０１１３】
タスク管理部５３０は、タスクグループ内の全てのタスクについて、入力ポート制御情報と出力ポート制御情報の設定が完了したか否かを判定する（ステップS１５０）。タスクグループ内全てのタスクについて設定が完了していなければ（ステップS１５０でNo）、処理はステップS１３０に戻り、入力ポート制御情報と出力ポート制御情報の設定が繰り返される。
【０１１４】
タスクグループ内全てのタスクについて設定が完了したら（ステップS１５０でYes）、タスク管理部５３０は、全てのタスクグループについて設定が完了したか否かを判定する（ステップS１６０）。設定が完了していないタスクグループがあれば（ステップS１６０でNo）、タスク管理部５０３は、ステップS１２０に戻って次のタスクグループを選択し、ステップS１３０以降の処理を繰り返す。
【０１１５】
全てのタスクグループについて設定が完了していれば（ステップS１６０でYes）、タスク間のデータ転送の設定が終了する。
【０１１６】
次に、本発明の一実施形態に係る情報処理システムにおける、プロセッサ５０１（図２参照）の動作について説明する。
【０１１７】
図１２は、タスク情報を受け取ったプロセッサ５０１の動作の一例を示すフローチャートである。
【０１１８】
プロセッサ５０１は、実行制御部５０２からタスク情報１００を受け取り（ステップS２００）、入力ポートセット１１０の入力ポート制御情報１１２を参照して、指定された入力ポートを介して入力データを取得する（ステップS２１０）。
【０１１９】
すなわちプロセッサ５０１は、入力ポート制御情報の設定値が０である場合は内部メモリ５０３内のバッファから入力データを取得し、入力ポート制御情報の設定値が１である場合には外部メモリ５１０において入力ポートアドレス１１１によってアドレス指定されるバッファ領域から入力データを取得する。
【０１２０】
プロセッサ５０１は、取得した入力データに対して、タスク情報１００のプログラム識別子１４０が指定するタスクの処理を実行する（ステップS２２０）。
【０１２１】
そしてプロセッサ５０１は、出力ポートセット１２０の出力ポート制御情報１２２を参照して、指定されたバッファに出力ポートから処理結果データを出力する（ステップS２３０）。
【０１２２】
すなわちプロセッサ５０１は、出力ポート制御情報の設定値が０である場合は内部メモリ５０３内のバッファへ処理結果データを出力し、出力ポート制御情報の設定値が１である場合は外部メモリ５１０において出力ポートアドレス１２１によってアドレス指定されるバッファ領域へ処理結果データを出力する。
【０１２３】
図１２では、一例として、入力ポートからのデータ入力（ステップS２１０）、タスクの実行（ステップS２２０）、出力ポートへのデータ出力（ステップS２３０）の各処理が別個に行われる場合が図示されている。しかしながら、これらの各処理が混在しても良い。
【０１２４】
以上のように、本実施形態に係る情報処理システムによれば、同一プログラムで連続して実行される複数タスクのタスク情報を同一ストリームに属するタスクグループとしてまとめ、依存のあるタスクをプロセッサにより連続実行できるようにし、さらに連続実行される依存のあるタスクの入力ポート制御情報、出力ポート制御情報をタスク間の依存に従って設定し、依存のあるデータ転送はオーバーヘッドの少ない内部メモリ内の内部バッファを用いて行うことを指示し、プロセッサはタスク情報に従って入力ポートからの入力データの入力、出力ポートからの出力データの出力を行う。
【０１２５】
従って、依存関係にあり、同一プログラムによって連続して実行される複数タスクを実行する際には、外部メモリアクセスの一部を内部メモリアクセスとすることができる。このため、外部メモリアクセス、及び外部メモリアクセスに伴うオーバーヘッドを削減し、効率的な処理を実現できる。
【０１２６】
なお、本発明の実施形態に係る情報処理システムは、ハードウェアにより実現することもできるが、コンピュータを情報処理システムその装置として機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【０１２７】
また、本発明の実施形態による情報処理方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【０１２８】
更に、上記実施形態では、本実施形態特有のプログラムが、情報処理システムに予め組み込まれているものとして説明した。しかし、コンピュータを、情報処理システムの全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）、ＤＶＤ（Digital Versatile Disc)、ＭＯ（Magneto Optical Disk(Disc)）ＢＤ（Blu-ray Disc）等のコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。更に、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波にプログラムを重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
【０１２９】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【０１３０】
本願は、日本の特願２０１０−２１３７０４（２０１０年９月２４日に出願）に基づいたものであり、又、特願２０１０−２１３７０４に基づくパリ条約の優先権を主張するものである。特願２０１０−２１３７０４の開示内容は、特願２０１０−２１３７０４を参照することにより本明細書に援用される。
【０１３１】
本発明の代表的な実施の形態が詳細に述べられたが、様々な変更(changes)、置き換え(substitutions)及び選択(alternatives)が請求項で定義された発明の精神と範囲から逸脱することなくなされることが理解されるべきである。また、仮にクレームが出願手続きにおいて補正されたとしても、クレームされた発明の均等の範囲は維持されるものと発明者は意図する。
【０１３２】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１３３】
（付記１）
タスクに対応する処理を実行するプロセッサ、及び前記プロセッサが占有してアクセス可能な内部メモリを具備するプロセッシング要素と、前記プロセッシング要素の動作を制御するタスク管理部とを備え、
前記タスク管理部が、
前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、
前記タスクに対応する処理を前記プロセッサに行わせ、
前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理する、
ことを特徴とする情報処理装置。
【０１３４】
（付記２）
前記タスク管理部は、
前記入力用バッファに格納されたデータを前記プロセッサに入力するための入力ポートを指定し、
前記入力ポートが接続される前記入力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための入力ポート識別情報と、
前記入力用バッファのアドレスと、
を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記入力用バッファから前記処理の対象となるデータを取得することを特徴とする付記１に記載の情報処理装置。
【０１３５】
（付記３）
前記タスク管理部は、
前記プロセッサによる処理結果のデータを前記出力用バッファに格納するための出力ポートを指定し、
前記出力ポートが接続される前記出力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための出力ポート識別情報と、
前記出力ポートが接続される前記出力用バッファのアドレスと、
を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記出力用バッファに前記処理結果のデータを転送することを特徴とする付記１に記載の情報処理装置。
【０１３６】
（付記４）
前記タスク管理部は、
前記入力用バッファに格納されたデータを前記プロセッサに入力するための入力ポートを指定し、
前記入力ポートが接続される前記入力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための入力ポート識別情報と、
前記入力用バッファのアドレスと、
を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記入力用バッファから前記処理の対象となるデータを取得し、
また前記タスク管理部は、
前記プロセッサによる処理結果のデータを前記出力用バッファに格納するための出力ポートを指定し、
前記出力ポートが前記外部メモリと前記内部メモリのいずれに接続されるかを識別するための出力ポート識別情報と、
前記出力ポートが接続される前記出力用バッファのアドレスと、
を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記出力用バッファに前記処理結果のデータを転送することを特徴とする付記１に記載の情報処理装置。
【０１３７】
（付記５）
前記タスク管理部は、
前記処理の対処となるデータが前記内部メモリに確保された前記入力用バッファに格納されている場合は、前記入力ポートが前記内部メモリに接続されるように前記入力ポート識別情報を設定し、前記処理の対象となるデータが格納された領域の前記内部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
前記処理の対処となるデータが前記外部メモリに確保された前記入力用バッファに格納されている場合は、前記入力ポートが前記外部メモリに接続されるように前記入力ポート識別情報を設定し、前記処理の対象となるデータが格納された領域の前記外部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
また前記タスク管理部は、
前記処理結果のデータを前記内部メモリに確保された前記出力用バッファに格納する場合は、前記出力ポートが前記内部メモリに接続されるように前記出力ポート識別情報を設定し、前記処理結果のデータを格納する領域の前記内部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定し、
前記処理結果のデータを前記外部メモリに確保された前記出力用バッファに格納する場合は、前記出力ポートが前記外部メモリに接続されるように前記出力ポート識別情報を設定し、前記処理結果のデータを格納する領域の前記外部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定することを特徴とする付記４に記載の情報処理装置。
【０１３８】
（付記６）
複数のプロセッシング要素を具備するハードウェア部を更に備えることを特徴とする付記１乃至５の何れか１に記載の情報処理装置。
【０１３９】
（付記７）
前記タスク管理部は、
同一のプログラム識別子を持つ複数のタスクのタスク情報を1つのタスクキューに、前記タスクが生成される順に格納し、
前記タスクキューを前記プロセッサに渡し、
前記プロセッサは、前記タスクキューに従って、前記複数のタスクを実行することを特徴とする付記１乃至６の何れか１に記載の情報処理装置。
【０１４０】
（付記８）
前記タスク情報は、タスク間の依存関係を示すストリーム識別子情報を含み、
前記タスク管理部は、
同じストリーム識別子を持つ複数のタスクが連続して実行され、同一のストリーム識別子を持つ複数のタスク間での実行順序が変わらないように、前記タスクキューに格納されている前記複数のタスクのタスク情報を、前記ストリーム識別子を参照して並べ替えることを特徴とする付記７に記載の情報処理装置。
【０１４１】
（付記９）
前記タスク管理部は、
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、
前記依存関係に関わる入力ポートが、前記内部メモリに確保された前記入力用バッファに接続されるように前記タスク情報を設定することを特徴とする付記８に記載の情報処理装置。
【０１４２】
（付記１０）
前記タスク管理部は、
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、
前記依存関係に関わる出力ポートが、前記内部メモリに確保された前記出力用バッファに接続されるように前記タスク情報を設定する付記９に記載の情報処理装置。
【０１４３】
（付記１１）
タスクに対応する処理を実行するプロセッサ、及び前記プロセッサが占有してアクセス可能な内部メモリを備えるプロセッシング要素を具備する情報処理装置において用いられる情報処理方法であって、
前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、
前記タスクに対応する処理を前記プロセッサに行わせ、
前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理することを特徴とする情報処理方法。
【０１４４】
（付記１２）
前記入力用バッファに格納されたデータを前記プロセッサに入力するための入力ポートを指定し、
前記入力ポートが接続される前記入力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための入力ポート識別情報と、前記入力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記入力用バッファから前記処理の対象となるデータを取得することを特徴とする付記１１に記載の情報処理方法。
【０１４５】
（付記１３）
前記プロセッサによる処理結果のデータを前記出力用バッファに格納するための出力ポートを指定し、
前記出力ポートが接続される前記出力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための出力ポート識別情報と、前記出力ポートが接続される前記出力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記出力用バッファに前記処理結果のデータを転送することを特徴とする付記１１に記載の情報処理方法。
【０１４６】
（付記１４）
前記入力用バッファに格納されたデータを前記プロセッサに入力するための入力ポートを指定し、
前記入力ポートが接続される前記入力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための入力ポート識別情報と、
前記入力用バッファのアドレスと、
を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記入力用バッファから前記処理の対象となるデータを取得し、
また、
前記プロセッサによる処理結果のデータを前記出力用バッファに格納するための出力ポートを指定し、
前記出力ポートが前記外部メモリと前記内部メモリのいずれに接続されるかを識別するための出力ポート識別情報と、前記出力ポートが接続される前記出力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記出力用バッファに前記処理結果のデータを転送することを特徴とする付記１１に記載の情報処理方法。
【０１４７】
（付記１５）
前記処理の対処となるデータが前記内部メモリに確保された前記入力用バッファに格納されている場合は、前記入力ポートが前記内部メモリに接続されるように前記入力ポート識別情報を設定し、前記処理の対象となるデータが格納された領域の前記内部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
前記処理の対処となるデータが前記外部メモリに確保された前記入力用バッファに格納されている場合は、前記入力ポートが前記外部メモリに接続されるように前記入力ポート識別情報を設定し、前記処理の対象となるデータが格納された領域の前記外部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
また、
前記処理結果のデータを前記内部メモリに確保された前記出力用バッファに格納する場合は、前記出力ポートが前記内部メモリに接続されるように前記出力ポート識別情報を設定し、前記処理結果のデータを格納する領域の前記内部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定し、
前記処理結果のデータを前記外部メモリに確保された前記出力用バッファに格納する場合は、前記出力ポートが前記外部メモリに接続されるように前記出力ポート識別情報を設定し、前記処理結果のデータを格納する領域の前記外部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定することを特徴とする付記１４に記載の情報処理方法。
【０１４８】
（付記１６）
前記情報処理装置は、複数のプロセッシング要素を具備するハードウェア部を更に具備することを特徴とする付記１１乃至１５の何れか１に記載の情報処理方法。
【０１４９】
（付記１７）
同一のプログラム識別子を持つ複数のタスクのタスク情報を1つのタスクキューに、前記タスクが生成される順に格納し、
前記タスクキューを前記プロセッサに渡し、
前記プロセッサは、前記タスクキューに従って、前記複数のタスクを実行することを特徴とする付記１１乃至１６の何れか１に記載の情報処理方法。
【０１５０】
（付記１８）
前記タスク情報は、タスク間の依存関係を示すストリーム識別子情報を含み、
同じストリーム識別子を持つ複数のタスクが連続して実行され、同一のストリーム識別子を持つ複数のタスク間での実行順序が変わらないように、前記タスクキューに格納されている前記複数のタスクのタスク情報を、前記ストリーム識別子を参照して並べ替えることを特徴とする付記１７に記載の情報処理方法。
【０１５１】
（付記１９）
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、前記依存関係に関わる入力ポートが、前記内部メモリに確保された前記入力用バッファに接続されるように前記タスク情報が設定されることを特徴とする付記１８に記載の情報処理方法。
【０１５２】
（付記２０）
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、前記依存関係に関わる出力ポートが、前記内部メモリに確保された前記出力用バッファに接続されるように前記タスク情報が設定されることを特徴とする付記１９に記載の情報処理方法。
【０１５３】
（付記２１）
タスクに対応する処理を実行するプロセッサと、前記プロセッサが占有してアクセス可能な内部メモリを具備するプロセッシング要素と、前記プロセッサの動作を制御するタスク管理部とを備える情報処理装置に組み込まれる情報処理プログラムであって、
前記タスク管理部が、
前記処理の対象となるデータを格納する少なくとも１つの入力用バッファ、前記プロセッサが前記処理の対象となるデータに対して行う処理の内容、及び前記プロセッサによる処理結果のデータを格納する少なくとも１つの出力用バッファを指定し、
前記タスクに対応する処理を前記プロセッサに行わせ、
前記入力用バッファ及び前記出力用バッファを前記プロセッシング要素の外部に設けられた外部メモリに確保するか前記内部メモリに確保するかをタスク間の依存に応じて管理する、
情報処理装置としてコンピュータを機能させることを特徴とする情報処理プログラム。
【０１５４】
（付記２２）
前記タスク管理部が、
前記入力用バッファに格納されたデータを前記プロセッサに入力するための入力ポートを指定し、
前記入力ポートが接続される前記入力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための入力ポート識別情報と、前記入力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記入力用バッファから前記処理の対象となるデータを取得することを特徴とする付記２１に記載の情報処理プログラム。
【０１５５】
（付記２３）
前記タスク管理部が、
前記プロセッサによる処理結果のデータを前記出力用バッファに格納するための出力ポートを指定するし、
前記出力ポートが接続される前記出力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための出力ポート識別情報と、前記出力ポートが接続される前記出力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記出力用バッファに前記処理結果のデータを転送することを特徴とする付記２１に記載の情報処理プログラム。
【０１５６】
（付記２４）
前記タスク管理部が、
前記入力用バッファに格納されたデータを前記プロセッサに入力するための入力ポートを指定し、
前記入力ポートが接続される前記入力用バッファが、前記外部メモリと前記内部メモリのいずれに確保されるかを識別するための入力ポート識別情報と、前記入力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記入力用バッファから前記処理の対象となるデータを取得し、
また前記タスク管理部が、
前記プロセッサによる処理結果のデータを前記出力用バッファに格納するための出力ポートを指定し、
前記出力ポートが前記外部メモリと前記内部メモリのいずれに接続されるかを識別するための出力ポート識別情報と、前記出力ポートが接続される前記出力用バッファのアドレスと、を含むタスク情報を前記プロセッサに渡し、
前記プロセッサは、前記タスク情報に応じて前記出力用バッファに前記処理結果のデータを転送することを特徴とする付記２１に記載の情報処理プログラム。
【０１５７】
（付記２５）
前記タスク管理部が、
前記処理の対処となるデータが前記内部メモリに確保された前記入力用バッファに格納されている場合は、
前記入力ポートが前記内部メモリに接続されるように前記入力ポート識別情報を設定し、
前記処理の対象となるデータが格納された領域の前記内部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
前記処理の対処となるデータが前記外部メモリに確保された前記入力用バッファに格納されている場合は、
前記入力ポートが前記外部メモリに接続されるように前記入力ポート識別情報を設定し、
前記処理の対象となるデータが格納された領域の前記外部メモリにおけるアドレスを前記入力用バッファのアドレスとして指定し、
また前記タスク管理部が、
前記処理結果のデータを前記内部メモリに確保された前記出力用バッファに格納する場合は、
前記出力ポートが前記内部メモリに接続されるように前記出力ポート識別情報を設定し、
前記処理結果のデータを格納する領域の前記内部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定し、
前記処理結果のデータを前記外部メモリに確保された前記出力用バッファに格納する場合は、
前記出力ポートが前記外部メモリに接続されるように前記出力ポート識別情報を設定し、
前記処理結果のデータを格納する領域の前記外部メモリにおけるアドレスを前記出力用バッファのアドレスとして指定することを特徴とする付記２４に記載の情報処理プログラム。
【０１５８】
（付記２６）
前記情報処理装置は、複数のプロセッシング要素を具備するハードウェア部を更に具備することを特徴とする付記２１乃至２５の何れか１に記載の情報処理プログラム。
【０１５９】
（付記２７）
前記タスク管理部が、
同一のプログラム識別子を持つ複数のタスクのタスク情報を1つのタスクキューに、前記タスクが生成される順に格納し、
前記タスクキューを前記プロセッサに渡し、
前記プロセッサは、前記タスクキューに従って、前記複数のタスクを実行することを特徴とする付記２１乃至２６の何れか１に記載の情報処理プログラム。
【０１６０】
（付記２８）
前記タスク情報は、タスク間の依存関係を示すストリーム識別子情報を含み、
前記タスク管理部が、
同じストリーム識別子を持つ複数のタスクが連続して実行され、同一のストリーム識別子を持つ複数のタスク間での実行順序が変わらないように、前記タスクキューに格納されている前記複数のタスクのタスク情報を、前記ストリーム識別子を参照して並べ替えることを特徴とする付記２７に記載の情報処理プログラム。
【０１６１】
（付記２９）
前記タスク管理部が、
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、
前記依存関係に関わる入力ポートが、前記内部メモリに確保された前記入力用バッファに接続されるように前記タスク情報を設定することを特徴とする付記２８に記載の情報処理プログラム。
【０１６２】
（付記３０）
前記タスク管理部が、
同じストリーム識別子を持つタスクからなるタスクグループにおいて、他のタスクとの間に依存関係があるタスクについて、
前記依存関係に関わる出力ポートが、前記内部メモリに確保された前記出力用バッファに接続されるように前記タスク情報を設定することを特徴とする付記２９に記載の情報処理プログラム。
【産業上の利用可能性】
【０１６３】
本発明は、音声ストリーム、画像ストリーム等の複数のメディアのエンコード、デコードを行うマルチメディア処理装置や、ネットワークのパケットデータ等の処理を行う、ネットワーク処理への適用が可能である。
【図１】
2012039216.tif 000003
【図２】
2012039216.tif 000004
【図３】
2012039216.tif 000005
【図４】
2012039216.tif 000006
【図５】
2012039216.tif 000007
【図６】
2012039216.tif 000008
【図７】
2012039216.tif 000009
【図８】
2012039216.tif 000010
【図９】
2012039216.tif 000011
【図１０】
2012039216.tif 000012
【図１１】
2012039216.tif 000013
【図１２】
2012039216.tif 000014
【国際調査報告】
2012039216.tif 000015
2012039216.tif 000016
2012039216.tif 000017
2012039216.tif 000018