(57)【要約】【課題】本発明は、データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体に関し、例えば光ディスク装置に適用して、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理する。【解決手段】本発明は、負荷状況に応じて、複数の処理のうちの１つの処理を実行する演算処理部の数、スレッド数を動的に変化させる。【選択図】        図１
2007219577.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアシステムにより複数の処理を実行するデータ処理装置において、
前記マルチコアシステムを形成する複数の演算処理部と、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視部と、
前記監視結果に基づいて、前記演算処理部を制御する制御部とを有し、
前記制御部は、
前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出し、
前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる
ことを特徴とするデータ処理装置。
【請求項２】
マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法において、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、
前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、
前記制御のステップは、
前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、
前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる割り当てのステップとを有する
ことを特徴とするデータ処理方法。
【請求項３】
前記複数の処理が、逐次処理である
ことを特徴とする請求項２に記載のデータ処理方法。
【請求項４】
前記複数の処理が、ビデオデータの逐次処理である
ことを特徴とする請求項２に記載のデータ処理方法。
【請求項５】
前記少なくとも１つの処理が、ビデオデータの復号の処理である
ことを特徴とする請求項４に記載のデータ処理方法。
【請求項６】
前記１つの処理が、前記ビデオデータのマルチスライスによる処理である
ことを特徴とする請求項５に記載のデータ処理方法。
【請求項７】
マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムにおいて、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、
前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、
前記制御のステップは、
前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、
前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる割り当てのステップとを有する
ことを特徴とするデータ処理方法のプログラム。
【請求項８】
マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムを記録した記録媒体において、
前記データ処理方法のプログラムは、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、
前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、
前記制御のステップは、
前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、
前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる割り当てのステップとを有する
ことを特徴とするデータ処理方法のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体に関し、例えば光ディスク装置に適用することができる。本発明は、負荷状況に応じて、複数の処理のうちの１つの処理を実行する演算処理部の数、スレッド数を動的に変化させることにより、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができるようにする。
【背景技術】
【０００２】
従来、データ処理装置に関して、特開２００５−２３５２２９号公報等に、マルチコアシステムにより高速度にデータ処理する工夫が提案されている。また特開２００５−１００２６４号公報等には、マルチコアシステムをリアルタイム処理に適用する工夫が提案されている。
【０００３】
ところでビデオデータを処理する複数の処理をマルチコアシステムで逐次実行することが考えられる。具体的に、この複数の処理は、ビデオデータの復号処理、フィルタリング処理等である。
【０００４】
しかしながらマルチコアシステムでは、負荷の状況が変動し、マルチコアシステムを構成する複数の演算処理回路で負荷に偏りが発生する場合がある。このためマルチコアシステムでビデオデータを逐次処理する場合に、リアルタイム性を損なうことなくぎりぎりの時間で処理している場合でも、何ら処理を実行していない空き時間が一部の演算処理回路で発生し、効率良くデータ処理できない問題がある。なおこの問題を解決する１つの方法として負荷の偏りを監視して各演算処理回路の動作を制御する方法も考えられる。しかしながらデコードの処理単位はピクチャーであり、ピクチャの処理量は使用するビット量によって異なる。従って使用する処理量は、実際に処理を実行してみないと解らない場合が多く、そのためオペレーションシステム側では、負荷の偏りまでは細かく制御することができない。
【０００５】
ここで図１２は、ハードディスク装置（ＨＤＤ）２を記録媒体に適用した再生装置を示すブロック図である。この再生装置１において、分離部３は、ハードディスク装置２から再生されるデータをビデオデータ及びオーディオデータのストリーミングデータに分離して出力する。前処理部４は、この分離部３の出力データを前処理して出力する。復号部５は、この前処理部４の出力データからビデオデータ及びオーディオデータを復号して出力する。後処理部６は、この復号部５の出力データをフィルタリング処理等して出力する。ＧＰＵ（Graphics Processing Unit）７は、後処理部６から出力されるビデオデータを画像処理して出力する。
【０００６】
この再生装置１において、分離部３、前処理部４、復号部５、後処理部６をそれぞれ演算処理回路で構成してこの再生装置１をマルチコアシステムとした場合、例えば前処理部４の負荷が大きいと、他の処理回路に割り当てられた演算処理回路で空き時間が発生することになる。
【０００７】
この負荷の偏りを防止する方法として、負荷の大きな１つの処理を複数の演算処理回路で実行することも考えられるが、この場合には、この１つの処理を実行する複数の演算処理回路で空き時間が発生することになる。また単に１つの処理を複数の演算処理回路で実行する場合には、１つの処理が複数の演算処理回路をまとめて専有することになり、この複数の演算処理回路の空き時間を他の処理で利用することも困難になる。従ってこの場合も、効率良くデータ処理できなくなる問題がある。
【０００８】
すなわち図１３は、図１２の再生装置１の各機能ブロックのうちの前処理部４、後処理部６にそれぞれ符号４Ａ〜４Ｃ、６Ａ、６Ｂで示す複数の演算処理回路を割り当てた場合である。この図１３に示す構成の場合、前処理部、後処理部の負荷が大きい場合でも、前処理部４Ａ〜４Ｃ、後処理部６Ａ、６Ｂでは、十分に高速度でビデオデータを処理することができる。しかしながらこの再生装置１１では、復号部５がシングルモードで、復号部５には１つの演算処理回路だけが割り当てられていることになる。従って復号部５で１フレームの処理が完了するまで、他の演算処理回路が処理を待機することになり、前処理部４Ａ〜４Ｃ、後処理部６Ａ、６Ｂ等の演算処理回路で空き時間が発生することになる。
【特許文献１】特開２００５−２３５２２９号公報
【特許文献２】特開２００５−１００２６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は以上の点を考慮してなされたもので、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができるデータ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体を提案しようとするものである。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため請求項１の発明は、マルチコアシステムにより複数の処理を実行するデータ処理装置に適用して、前記マルチコアシステムを形成する複数の演算処理部と、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視部と、前記監視結果に基づいて、前記演算処理部を制御する制御部とを有し、前記制御部は、前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出し、前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる。
【００１１】
また請求項２の発明は、マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法に適用して、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、前記制御のステップは、前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる割り当てのステップとを有するようにする。
【００１２】
また請求項７の発明は、マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムに適用して、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、前記制御のステップは、前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる割り当てのステップとを有するようにする。
【００１３】
また請求項８の発明は、マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムを記録した記録媒体に適用して、前記データ処理方法のプログラムは、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、前記制御のステップは、前記監視結果に基づいて、前記複数の処理の少なくとも１つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、前記１つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記１つの処理に割り当てる割り当てのステップとを有するようにする。
【００１４】
請求項１、請求項２、請求項７、請求項８の構成によれば、負荷の大きな１つの処理に、負荷の小さな他の処理の演算処理部が割り当てられ、この１つの処理が複数の演算処理部で実行される。またこれとは逆に、負荷の小さな１つの処理を実行する複数の演算処理部の１つが、負荷の大きな他の処理に割り当てられる。また１つの処理に複数の演算処理部を割り当てる場合には、この１つの処理のスレッドが各演算処理部に分割して割り当てられる。これにより負荷状況に応じて、複数の処理のうちの１つの処理を実行する演算処理部の数、スレッド数を動的に変化させることができ、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができる。
【発明の効果】
【００１５】
本発明によれば、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができる。
【発明を実施するための最良の形態】
【００１６】
以下、適宜図面を参照しながら本発明の実施例を詳述する。
【実施例１】
【００１７】
（１）実施例の構成
図２は、本発明の実施例に係る光ディスク装置を示すブロック図である。この光ディスク装置２１は、ＭＰＥＧ２−ＴＳ（Moving Picture Experts Group２ Transport Stream）のプログラムストリームを光ディスクから再生してビデオデータ及びオーディオデータをモニタ装置に出力する。
【００１８】
ここで光ディスク装置２１において、光ディスクドライブ２２は、プロセッサ２３の制御に従って光ディスクからプログラムストリームを再生してバスＢＵＳに出力する。操作部２４は、この光ディスク装置２１に設けられた各種操作子等であり、ユーザーの操作をプロセッサ２３に通知する。インターフェース（ＩＦ）２５は、バスＢＵＳに出力されるビデオデータ及びオーディオデータを外部機器に出力する。リードオンリメモリ（ＲＯＭ）２６は、プロセッサ２３のプログラム等を格納して保持する。
【００１９】
ここでこの実施例において、プロセッサ２３のプログラムは、この光ディスク装置２１に事前にインストールされて提供されるものの、これに代えて光ディスク、磁気ディスク、メモリカード等の各種記録媒体に記録して提供するようにしてもよく、またインターネット等のネットワークを介したダウンロードにより提供してもよい。
【００２０】
ランダムアクセスメモリ２７は、プロセッサ２３のワークエリアを構成し、バスＢＵＳに出力されるプログラムストリーム、プロセッサ２３で処理された画像データ、リードオンリメモリ２６からロードされたプログラム等を一時格納する。
【００２１】
プロセッサ２３は、リードオンリメモリ２６に格納されたプログラムに従ってこの光ディスク装置２１の動作を制御する制御手段である。プロセッサ２３は、ユーザーが操作部２４を操作して光ディスクの再生を指示すると、光ディスクドライブ２２を制御して光ディスクに記録されたプログラムストリームを再生する。プロセッサ２３は、この光ディスクドライブ２２で再生されるプログラムストリームをバスＢＵＳから入力し、ソフトウエアの処理によりこのプログラムストリームからビデオデータ及びオーディオデータを復号してバスＢＵＳに出力する。
【００２２】
ここでプロセッサ２３は、複数の演算処理回路を一体に集積回路化したマルチコアシステムの演算処理回路である。プロセッサ２３において、この複数の演算処理回路の１つは、ＰＰＵ（Power Processing Unit ）２８と呼ばれ、この光ディスク装置２１の動作を制御し、他の演算処理回路を管理する。また残りの演算処理回路は、ＳＰＵ（Synergistic Processing Unit）２９Ａ〜２９Ｎと呼ばれ、それぞれ独立して動作可能なビデオデータ等の処理に適した演算処理回路である。なおプロセッサは、ＰＰＵ、ＳＰＵによるマルチコアプロセッサに限られるものではなく、一般のＣＰＵによるマルチプロセッサを適用するようにしてもよい。
【００２３】
プロセッサ２３は、ＳＰＵ２９Ａ〜２９Ｎの演算処理によって、図３に示すように、分離部３１、制御部３２、画像データ復号部３３、音声データ復号部３４、画像データ処理部３５、機器負荷情報監視部３６の機能ブロックを構成する。
【００２４】
ここでこれらの機能ブロックのうち、分離部３１は、データ入力部３７から入力されるプログラムストリームをビデオデータ、オーディオデータのストリーミングデータに分離する。画像データ復号部３３は、分離部３１から出力されるビデオデータのストリーミングデータを前処理してビデオデータを復号する。音声データ復号部３４は、分離部３１から出力されるオーディオデータのストリーミングデータからオーディオデータを復号する。画像データ処理部３５は、画像データ復号部３３で復号したビデオデータを画像処理して出力する。なおこの図３において、入力ディバイス３８は、光ディスクドライブ２２であり、データ入力部３７は、入力ディバイス３８との間のインターフェースである。また表示ディバイス４０は、モニタ装置であり、出力部４１は、モニタ装置のインターフェース２５である。
【００２５】
機器負荷情報監視部３６は、これら分離部３１、画像データ復号部３３、音声データ復号部３４、画像データ処理部３５の負荷を細かなレベルで定期的に監視する。制御部３２は、この機器負荷情報監視部３６の監視結果に基づいて、画像データ復号部３３に割り当てる演算処理回路の個数、スレッド（thread）の数を動的に切り換える。
【００２６】
ここでスレッドは、マルチスレッドに対応したオペレーティグシステム上で動作するソフトウエアの実行単位であり、１つのプログラムは、最低１つのスレッドを有する。同じプログラムに属するスレッドは、メモリ等のリソースを共有する。複数のスレッドは、演算処理回路を交互に占有することによって見かけ上、同時に実行することができる。また高度な処理を行なうアプリケーションソフト等では、スレッドを複数走らせることにより、同時に複数の処理を実行することができる。従ってスレッドを複数走らせることにより、時間を要する演算処理中にユーザーからの入力を受け付ける等の工夫が可能になる。複数のスレッドを同時に走らせることは、複数プログラム（マルチプロセス）の同時実行と類似するものではあるが、マルチプロセスの場合、プログラムを切り換える際にメモリアドレスの変換などの作業が必要になるため、マルチスレッドでスレッドを切り換える場合に比して負荷は大きくなる。
【００２７】
プロセッサ２３において、分離部３１、画像データ復号部３３、音声データ復号部３４、画像データ処理部３５は、ＳＰＵ２９Ａ〜２９Ｎが割り当てられて形成される。制御部３２、機器負荷情報監視部３６は、画像データ復号部３３に割り当てられたＳＰＵで形成される。なお画像データ復号部３３に複数のＳＰＵが割り当てられた場合には、この複数のＳＰＵのうちの１つが、制御部３２、機器負荷情報監視部３６の機能ブロックを形成する。なお以下において、この制御部３２、機器負荷情報監視部３６の機能ブロックが割り当てられたＳＰＵをメインＳＰＵと呼ぶ。
【００２８】
この光ディスク装置２１では、ＰＰＵ２８による事前の設定により、分離部３１、画像データ復号部３３、音声データ復号部３４、画像データ処理部３５にＳＰＵ２９Ａ〜２９Ｎが割り当てられた後、制御部３２に割り当てられたメインＳＰＵによって画像データ復号部３３に割り当てるＳＰＵ２９Ａ〜２９Ｎの個数、スレッドの数を動的に切り換える。より具体的には、各処理の負荷状況によって変化する画像データ復号部３３に割り当て可能なＳＰＵの個数によって画像データ復号部３３へのＳＰＵの割り当てを可変する。また画像データ復号部３３に割り当てる演算処理回路の数と一致するように、画像データ復号部３３のスレッド数を設定し、各スレッドを対応するＳＰＵに設定する。
【００２９】
すなわち図４は、分離部３１、画像データ復号部３３、音声データ復号部３４、画像データ処理部３５にそれぞれ１つのＳＰＵ２９Ａ〜２９Ｄを割り当てた場合を示す略線図である。この場合、各ＳＰＵ２９Ａ〜２９Ｄには、それぞれ各機能ブロックを構成するためにスレッドが割り当てられる。従ってこの場合、画像データ復号部３３には１つのＳＰＵ２９Ｃが割り当てられ、この１つのＳＰＵ２９Ｃに画像データ復号部３３の処理を実行する１つのスレッドが割り当てられる。従ってこの場合、図５に示すように、画像データ復号部３３に割り当てられたＳＰＵ２９Ｃは、１枚のピクチャーの全てを処理してビデオデータを復号する。
【００３０】
この図４に示すように画像データ処理部３３に１つのＳＰＵ２９Ｃを割り当てて１つのスレッドで処理する場合、例えば処理対象が静止しているシーンでは、負荷が小さく、十分に高速度に処理することができる。従ってこの場合には、他のＳＰＵ２９Ａ〜２９Ｂにおける空き時間も短くなる。しかしながら動きの激しいシーンでは、ＳＰＵ２９Ｃの負荷が増大して処理に時間を要することになり、他のＳＰＵ２９Ａ〜２９Ｂで空き時間が発生する。
【００３１】
これに対して図６は、図４との対比により、画像データ復号部３３に２つのＳＰＵ２９Ｃ、２９Ｄを割り当てた場合を示す略線図である。この場合、画像データ復号部３３の処理は、２つの演算処理回路であるＳＰＵ２９Ｃ、２９Ｄで実行されることから、動きの激しいシーンでも、高速度でビデオデータを復号することができる。従って他のＳＰＵ２９Ａ、２９Ｂ、２９Ｅの空き時間を低減することができる。しかしながらこの場合、図４の例とは逆に、静止しているシーンでは、ＳＰＵ２９Ｃ、２９Ｄで空き時間が発生することになる。
【００３２】
そこでプロセッサ２３は、機器負荷情報監視部３６で、ＳＰＵ２９Ａ〜２９Ｎの負荷を定期的に監視し、この監視結果に基づいて、制御部３２で画像データ復号部３３に割り当てるＳＰＵ２９Ａ〜２９Ｎの個数を切り換える。
【００３３】
しかしながら単に１つのスレッドを複数の演算処理回路に割り当てた場合には、この１つのスレッドが複数の演算処理回路を専有することになり、この複数の演算処理回路で空き時間が発生した場合でも、他の処理に利用できなくなる。
【００３４】
そこで制御部３２は、画像データ復号部３３に割り当てるＳＰＵ２９Ａ〜２９Ｎの個数だけでなく、スレッド数も併せて切り換える。すなわち制御部３２は、図６の例では、画像データ復号部３３の処理を実行する１つのスレッドを２つに分割してスレッド１、スレッド２を形成し、画像データ復号部３３に割り当てたＳＰＵ２９Ｃ、２９Ｄにこれらスレッド１、スレッド２をそれぞれ割り当てる。なお以下において、この１つの処理を実行する１つのスレッドを分割して形成される各スレッドを、適宜、分割スレッドと呼ぶ。
【００３５】
なお図７は、図５との対比により画像データ復号部３３の処理を２つのスレッドで実行する場合を示す略線図である。プロセッサ２３は、マルチスライスの手法を適用して、１枚のピクチャーを垂直方向にスレッドの数で分割し、分割した各領域をそれぞれ１つのスレッドで処理する。なおマルチスライスは、複数のデコーダにより同時並列的に１枚のピクチャーを復号する手法であり、ＭＰＥＧ２の規格書に記載されている。
【００３６】
図１は、メインＳＰＵの処理手順を示すフローチャートである。メインＳＰＵは、ＰＰＵ２８の指示により、ビデオデータの１フレームの期間である３３〔ｍｓｅｃ〕周期で、この図１に示す処理手順を実行する。なおこの周期は、必要に応じて種々に設定することができる。
【００３７】
メインＳＰＵは、この処理手順を開始すると、ステップＳＰ１からステップＳＰ２に移り、処理開始の指示を入力する。続いてメインＳＰＵは、ステップＳＰ３に移り、分離部３１から出力されてランダムアクセスメモリ２７に一時保持されているビデオデータのストリーミングデータを前処理する。
【００３８】
続いてメインＳＰＵは、ステップＳＰ３に移り、各処理の負荷状況を解析する。ここでこの負荷状況の解析は、ＳＰＵ２９Ａ〜２９Ｎが割り当てられた機能ブロック毎に、負荷状況を解析する処理であり、種々の手法を適用することができる。この実施例において、メインＳＰＵは、この負荷状況の解析で、後述するステップＳＰ５、ステップＳＰ６の処理に必要な情報を検出する。
【００３９】
続いてメインＳＰＵは、ステップＳＰ４からステップＳＰ５に移り、ステップＳＰ４で検出した情報に基づいて、画像データ復号部３３（デコーダ）の現状の使用ＳＰＵ数（SPU count(n)) を検出する。ここでメインＳＰＵは、次式により示すように、直前にこの図１の処理手順を実行した際に検出した画像データ復号部３３の使用ＳＰＵ数（SPU count(n-1)) と、現在画像データ復号部３３が使用しているＳＰＵ数（Now SPU count ）とを重み付け平均処理し、使用ＳＰＵ数（SPU count(n)) を検出する。
【００４０】
【数１】
2007219577.tif 000003
【００４１】
またメインＳＰＵは、ステップＳＰ４からステップＳＰ６に移り、負荷状況に基づいて画像データ復号部３３以外の他の処理の使用ＳＰＵ数（Module use SPU）を検出する。ここで図８は、このステップＳＰ６の処理手順を詳細に示すフローチャートである。メインＳＰＵは、この処理手順を開始すると、ステップＳＰ７からステップＳＰ８に移り、この図８の処理で検出する他の処理の使用ＳＰＵ数（他モジュールの合計平均使用数Module use SPU）に初期値をセットする。なおここで初期値は、初めにＰＰＵによって設定される各処理へのＳＰＵの割り当てに対応するＳＰＵの数である。ＰＰＵ２８は、リアルタイム性を損なわないように、各処理の処理量に応じて事前に設定された割り当てに従って各処理にＳＰＵを割り当てる。従って各処理へのＳＰＵの割り当ては、各処理の処理量によって異なり、例えばＭＰＥＧ２による画像データの復号処理には、初めに１個のＳＰＵが割り当てられる。
【００４２】
続いてメインＳＰＵは、ステップＳＰ９に移り、この図８の処理を実行するループ処理である他モジュールチェックのループ処理を開始する。なおここでこの図８におけるモジュールは、図３について上述した各機能ブロックに対応する構成であり、画像データ復号部３３以外の他の処理の実行単位である。
【００４３】
メインＳＰＵは、続いてステップＳＰ１０に移り、画像データ復号部３３以外の他の処理から１つの処理を選択し、この選択した処理の平均処理時間を検出する。ここでＳＰＵは、１つのピクチャーの処理を完了すると、処理の完了をＰＰＵに通知する。またＳＰＵは、ＰＰＵが続くピクチャーの処理を指示すると、続くピクチャーの処理を開始する。メインＳＰＵは、このＰＰＵからの処理開始の指示であるモジュール呼び出しの周期を用いて平均処理時間を検出する。またステップＳＰ５の処理と同様に、重み付け平均処理して平均処理時間を検出する。具体的に、メインＳＰＵは、モジュール呼び出しの直前の１周期の時間Module time(n)、直前の平均処理時間Module time(n-1)を用いて、次式の演算処理を実行し、平均処理時間Module time(n)を検出する。なおこの他の処理にＳＰＵが割り当てられていない場合には、１周期の時間Module time(n)、又は平均処理時間Module time(n-1)には、直前のモジュール呼び出しからの経過時間が適用される。
【００４４】
【数２】
2007219577.tif 000004
【００４５】
続いてメインＳＰＵは、ステップＳＰ１０からステップＳＰ１１に移り、ステップＳＰ９で検出した平均処理時間Module time(n)がリアルタイム処理を満足しているか否か判断する。ここでメインＳＰＵは、平均処理時間Module time(n)が、リアルタイム処理可能な上限の制限時間Module limit time より小さいか否か判定することにより、平均処理時間Module time(n)がリアルタイム処理を満足するか否か判断する。メインＳＰＵは、このステップＳＰ１１で否定結果が得られると、ステップＳＰ１１からステップＳＰ１２に移り、ステップＳＰ８でセットした使用ＳＰＵ数Module use SPUを値１だけインクリメントしてステップＳＰ１３に移る。これに対してステップＳＰ１１で肯定結果が得られると、メインＳＰＵは、ステップＳＰ１１から直接ステップＳＰ１３に移る。
【００４６】
このステップＳＰ１３において、メインＳＰＵは、全てのモジュールについて処理を完了したか否か判断し、否定結果が得られると、ステップＳＰ１３からステップＳＰ９に戻り、未だ処理していないモジュールについて同様の処理を実行する。これに対して他の処理の全モジュールについてステップＳＰ９〜ステップＳＰ１２の処理を完了すると、ステップＳＰ１３で肯定結果が得られ、メインＳＰＵは、ステップＳＰ１４に移る。ここでメインＳＰＵは、この他のモジュールチェックのループ処理を完了し、ステップＳＰ１５に移ってこの処理手順を終了する。この図８の処理により、メインＳＰＵは、ＰＰＵ２８による初期設定を基準にして、他の処理で使用するＳＰＵ数（Module use SPU）を検出する。
【００４７】
メインＳＰＵは、ステップＳＰ５、ステップＳＰ６の処理を終了すると（図１）、ステップＳＰ１９に移り、ここでステップＳＰ５で検出したＳＰＵ数SPU count(n)からステップＳＰ６の処理で検出した他の処理の使用ＳＰＵ数Module use SPUを減算し、ＰＰＵ２８の初期設定を基準にして画像データ復号部３３に追加で割り当て可能なＳＰＵ数SPU use count を計算する。
【００４８】
続いてメインＳＰＵは、ステップＳＰ２０に移り、追加で割り当て可能なＳＰＵ数SPU use count が値０以上か否か判断することにより、画像データ復号部３３にＳＰＵを追加で振り分けることが可能か否か判断する。
【００４９】
このステップＳＰ２０で肯定結果が得られると、メインＳＰＵは、ステップＳＰ２０からステップＳＰ２１に移り、画像データ復号部３３に割り当てるＳＰＵ数、スレッド数を値１だけ増加させる。また画像データ復号部３３のＳＰＵ数、図８のステップＳＰ１０−ＳＰ１１−ＳＰ１２の処理による他の各処理のＳＰＵ数をＰＰＵに通知し、ステップＳＰ２２に移る。
【００５０】
これに対してステップＳＰ２０で否定結果が得られると、メインＳＰＵは、画像データ復号部３３に割り当てるＳＰＵ数、スレッド数を値１だけ減少させる。またステップＳＰ２１と同様に、この画像データ復号部３３に割り当てるＳＰＵ数、図８のステップＳＰ１０−ＳＰ１１−ＳＰ１２の処理による他の各処理のＳＰＵ数をＰＰＵに通知し、ステップＳＰ２２に移る。
【００５１】
これらステップＳＰ２１、ＳＰ２２におけるこのメインＳＰＵからの通知に従って、ＰＰＵは、モジュールの呼び出しを指示する。その結果、プロセッサ２３は、割り当てに変更が生じたＳＰＵでコンテキストスイッチの処理が実行されて実際にＳＰＵの割り当てが変更され、さらには画像データ処理部３５のスレッド数が変更される。なおここでＳＰＵは、コンテキストスイッチの処理において、それまでローカルメモリに保持していたプログラム、各種のパラメータを共有メモリに格納した後、設定の変更に対応するプログラム、パラメータをローカルメモリにロードする。なお共有メモリは、例えばランダムアクセスメモリ２７により形成される。
【００５２】
従ってこの図１の処理手順を実行するメインＳＰＵは、画像データ処理部３５に割り当てるＳＰＵの個数、スレッド数が変更されると、それまでローカルメモリに保持していた画像データ処理部３５の機能ブロックを構成するスレッドのプログラム、パラメータを共有メモリに格納し、この共有メモリから変更後のスレッド数に対応するプログラム、パラメータをローカルメモリにロードする。
【００５３】
続いてメインＳＰＵは、ステップＳＰ２３に移り、ステップＳＰ３で前処理したストリーミングデータからビデオデータを復号した後、ステップＳＰ２４でこのビデオデータを後処理する。またメインＳＰＵは、続くステップＳＰ２５でこの後処理したビデオデータをバスＢＵＳに出力した後、このループ処理を終了する。また続いてステップＳＰ２６に移ってこの処理手順を終了する。
【００５４】
（２）実施例の動作
以上の構成において、この光ディスク装置２１では（図２）、光ディスクに記録されたプログラミングストリームが光ディスクドライブ２２で順次再生される。光ディスク装置２１では、このプログラミングストリームがランダムアクセスメモリ２７に一時格納され、マルチコアシステムのプロセッサ２３でこのプログラミングストリームからビデオデータ及びオーディオデータが復号され、このビデオデータ及びオーディオデータがモニタ装置に出力される。
【００５５】
ここでプロセッサ２３では、マルチコアシステムを構成する複数の演算処理回路（ＳＰＵ）２９Ａ〜２９Ｎで、ランダムアクセスメモリ２７に一時格納されたストリーミングデータが逐次処理され、ビデオデータ及びオーディオデータが復号される。すなわちストリーミングデータは（図３）、プロセッサ２３において、分離部３１の機能ブロックによりビデオデータ及びオーディオデータに分離され、画像データ復号部３３及び音声データ復号部３４の機能ブロックによりそれぞれビデオデータ及びオーディオデータが復号される。ビデオデータは、さらに画像データ処理部３５の機能ブロックでフィルタリング等の処理が施される。
【００５６】
ここでこれらの機能ブロックの処理は、逐次処理であることから、これらの機能ブロックの処理で負荷の偏りが発生すると、負荷の軽い機能ブロックでＳＰＵに空き時間が発生する。逆の見方をすると、負荷の重い機能ブロックで、全体の処理速度が制限され、ビデオデータを高速に処理できなくなる。
【００５７】
この場合、負荷の偏りを防止すれば、空き時間を低減し、全体の処理速度を高速度化することができるものの、オペレーションシステムでは、負荷の偏りまで細かく制御できない。これに対して負荷の重い処理に複数個のＳＰＵを割り当てて負荷を軽くする方法も考えられるが、この場合は、この複数個のＳＰＵで空き時間が発生し、またこの複数個以外のＳＰＵで全体の処理速度が制限される。また単に複数個のＳＰＵで１つの機能ブロックを構成する場合には、１つのスレッドが複数のＳＰＵを占有することになり、この複数個のＳＰＵで発生した空き時間を他の処理に振り分けることが困難になる。
【００５８】
そこでプロセッサ２３では、各機能ブロックの負荷状況に基づいて、画像データ復号部３３に割り当て可能なＳＰＵ数が検出される。またプロセッサ２３では、画像データ復号部３３のスレッドを画像データ復号部３３に割り当てるＳＰＵ数で分割した分割スレッドを、画像データ復号部３３のＳＰＵに割り当て、この割り当て可能なＳＰＵが画像データ復号部３３に割り当てられる。
【００５９】
すなわちプロセッサ２３では、画像データ復号部３３に割り当てられたメインＳＰＵにおいて、一定の周期で各処理の負荷状況が解析され（図１、ステップＳＰ４）、画像データ復号部３３における現状の使用ＳＰＵ数が検出され（ステップＳＰ５）、また他の処理で使用するＳＰＵ数が検出される（ステップＳＰ６（図８））。またこれらのＳＰＵ数から画像データ復号部３３に追加で振り分け可能なＳＰＵ数が検出され（ステップＳＰ１９、ＳＰ２０）、追加で振り分け可能なＳＰＵが存在する場合には、この追加で振り分け可能なＳＰＵが画像データ復号部３３に振り分けられる（ステップＳＰ２１）。またこれとは逆に追加で振り分け可能なＳＰＵが存在しない場合には、画像データ復号部３３に振り分けられていたＳＰＵの１つが、負荷の重い他の処理に振り分けられる（ステップＳＰ２２）。
【００６０】
この図１に示すメインＳＰＵの処理により、プロセッサ２３は、負荷状況に応じて、複数の処理のうちの１つの処理である画像データ復号部の処理を実行する演算処理回路の数、スレッド数を動的に変化させ、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することが可能となる。従って、復号化したビデオデータを一時格納するバッファメモリの容量、処理途中のビデオデータ、ストリーミングデータを一時格納するバッファメモリの容量についても、従来に比して低減することができる。
【００６１】
またマルチスレッドにより複数の演算処理回路で１つの処理を実行することから、マルチプロセスの場合のようなプログラムを切り換える際のメモリアドレスの変換等の作業が不要となり、スレッドを切り換える負荷も小さくすることができる。
【００６２】
またスレッド数を動的に変化させることから、コンテキストスイッチの回数も必要最小限に制限することができ、コンテキストスイッチの回数の増大による処理速度の低下を防止することができる。
【００６３】
すなわちこの実施例では、図９おいて矢印により示すように、画像データ復号部３３に１つのＳＰＵ２９Ａが割り当てられた場合、それまでこのＳＰＵ２９Ａのローカルメモリに格納されていたプログラム、パラメータ（符号ＬＳにより示す）がメモリに格納された後、画像データ復号部３３の１つのスレッドによるプログラム、パラメータ等がＳＰＵ２９Ａのローカルメモリに格納され、コンテキストスイッチの処理が実行される。従ってこの場合、コンテキストスイッチの回数は１回となる。
【００６４】
これに対して画像データ復号部３３に４つのＳＰＵ２９Ａ〜２９Ｄが割り当てられた場合、図１０に示すように、各ＳＰＵ２９Ａ〜２９Ｄのローカルメモリに格納されていたプログラム、パラメータがメモリに格納された後、画像データ復号部３３の４つの分割スレッドによるプログラム、パラメータ等がそれぞれＳＰＵ２９Ａ〜２９Ｄのローカルメモリに格納され、コンテキストスイッチの処理が実行される。従ってこの場合、コンテキストスイッチの回数は４回となる。
【００６５】
これに対して図９との対比により、図１１に示すように、画像データ復号部３３の処理を固定した分割スレッドで実行することを前提に、この分割スレッドの振り分けにより画像データ復号部３３に割り当てる演算処理回路の数の変化に対応する場合には、用意された分割スレッドの数だけコンテキストスイッチが必要になる。すなわちこの図１１の例では、１つのＳＰＵで画像データ復号部３３の処理を実行しているにもかかわらず、コンテキストスイッチは４回必要になる。従ってこの実施例では、コンテキストスイッチの回数も必要最小限に制限することができ、コンテキストスイッチの回数の増大による処理速度の低下を防止することができる。
【００６６】
具体的にビデオデータを逐次処理する場合、負荷の軽い処理では、１つのピクチャーの処理時間が短くなり、ＰＰＵによるモジュール呼び出し周期が短くなる。従ってこの場合は、この処理に割り当てるＳＰＵの数は、１個以下でも良いことになる。従ってこの負荷の軽い処理に割り当てられているＳＰＵは、この図１の処理手順の実行により、画像データ復号部３３に振り分けられる。また一旦、画像データ復号部３３に振り分けられると、例えばモジュール呼び出し周期に代えて直前のモジュール呼び出しからの時間経過が適用されて、元の処理がリアルタイム性を満足するか判断され、リアルタイム性が損なわれそうになると、画像データ復号部３３に振り分けられたＳＰＵが元の処理に戻される。従ってこの負荷の軽い処理に割り当てられているＳＰＵは、ピクチャーを何枚か処理する毎に、画像データ復号部３３に振り分けられる。
【００６７】
プロセッサ２３では、この負荷の軽い処理のＳＰＵの画像データ復号部３３への振り分け、元の処理への振り分けに対応するように、それまで画像データ復号部３３に割り当てられていたＳＰＵと、この負荷の軽いＳＰＵとで、コンテキストスイッチの処理が実行される。
【００６８】
またビデオデータの逐次処理の場合、さらにはこの逐次処理の１つの処理がビデオデータの復号の処理の場合、負荷が大きく変動するものの、この実施例のように、動的にビデオデータの復号に適用するＳＰＵの個数、スレッド数を切り換えるようにすれば、空き時間の発生を従来に比して格段的に低減して、比較的パフォーマンスの低いマルチコアプロセッサで、ビデオデータを逐次処理することができる。
【００６９】
（３）実施例の効果
以上の構成によれば、負荷状況に応じて、複数の処理のうちの１つの処理を実行する演算処理部の数、スレッド数を動的に変化させることにより、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができる。
【００７０】
またこの複数の処理が、逐次処理であることにより、負荷の重い処理による処理速度の制限を緩和して、高速度でこれら複数の処理を実行することができる。
【００７１】
またこの複数の処理が、ビデオデータの逐次処理であることにより、負荷の重い処理による処理速度の制限を緩和して、高速度でビデオデータを処理することができる。
【００７２】
またこの１つの処理が、ビデオデータの復号の処理であることにより、ビデオデータの復号の処理による処理速度の制限を緩和して、高速度でビデオデータを処理することができる。
【００７３】
またこのビデオデータの復号の処理が、ビデオデータのマルチスライスによる処理であることにより、簡易かつ確実に１枚のピクチャーを複数の演算処理部で同時並列的に実行することができる。
【実施例２】
【００７４】
なお上述の実施例においては、複数の演算処理回路を一体に集積回路化したマルチコアシステムの演算処理回路でビデオデータを処理する場合について述べたが、本発明はこれに限らず、要は複数の演算処理回路を用いたマルチコアシステムでビデオデータを処理する場合に広く適用することができる。
【００７５】
また上述の実施例においては、ビデオデータを復号する場合について述べたが、本発明はこれに限らず、ビデオデータを符号化処理する場合、オーディオデータ、ビデオデータ、各種のセンサ出力のデータ等を逐次処理する場合等にも広く適用することができる。
【００７６】
また上述の実施例では、複数の処理のうちの１つの処理に、複数の演算処理部を割り当てる場合について述べたが、本発明はこれに限らず、要は複数の処理のうち少なくとも１つの処理に、複数の演算処理部を割り当てるようにすればよく、複数の演算処理部の割り当て対象を複数設けるようにしてもよい。
【００７７】
また上述の実施例においては、複数の処理が逐次処理である場合について述べたが、本発明はこれに限らず、複数の処理が並列処理可能な処理である場合にも広く適用することができる。
【産業上の利用可能性】
【００７８】
本発明は、データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体に関し、例えば光ディスク装置に適用することができる。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施例のＳＰＵの処理手順を示すフローチャートである。
【図２】本発明の実施例の光ディスク装置を示すブロック図である。
【図３】図２の光ディスク装置のプロセッサの構成を示す機能ブロック図である。
【図４】図３の光ディスク装置において画像データ復号部に１つのＳＰＵを割り当てる場合の説明に供する略線図である。
【図５】図４の割り当てによる画像データ復号部の処理を示す略線図である。
【図６】図３の光ディスク装置において画像データ復号部に２つのＳＰＵを割り当てる場合の説明に供する略線図である。
【図７】図６の割り当てによる画像データ復号部の処理を示す略線図である。
【図８】図１の処理手順におけるステップＳＰ６の詳細処理手順を示すフローチャートである。
【図９】１つのＳＰＵを画像データ復号部に割り当てる場合のコンテキストスイッチの説明に供する略線図である。
【図１０】４つのＳＰＵを画像データ復号部に割り当てる場合のコンテキストスイッチの説明に供する略線図である。
【図１１】分割スレッドにより１つのＳＰＵを画像データ復号部に割り当てる場合のコンテキストスイッチの説明に供する略線図である。
【図１２】ビデオデータの逐次処理をマルチコアシステムで実行する場合の説明に供する機能ブロック図である。
【図１３】図１２の機能ブロックの一部を並列処理により実行する場合の説明に供する機能ブロック図である。
【符号の説明】
【００８０】
１、１１……再生装置、３、３１……分離回路、４、４Ａ〜４Ｃ……前処理部、５、３３……画像データ復号部、６、６Ａ、６Ｂ……後処理部、２１……光ディスク装置、２２……光ディスクドライブ、２３……プロセッサ、２８……ＰＰＵ、２９Ａ〜２９Ｎ……ＳＰＵ、３２……制御部、３４……音声データ復号部、３５……画像データ処理部、３６……機器負荷情報監視部
【図１】
2007219577.tif 000005
【図２】
2007219577.tif 000006
【図３】
2007219577.tif 000007
【図４】
2007219577.tif 000008
【図５】
2007219577.tif 000009
【図６】
2007219577.tif 000010
【図７】
2007219577.tif 000011
【図８】
2007219577.tif 000012
【図９】
2007219577.tif 000013
【図１０】
2007219577.tif 000014
【図１１】
2007219577.tif 000015
【図１２】
2007219577.tif 000016
【図１３】
2007219577.tif 000017