JP2007219577A - データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 - Google Patents
データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP2007219577A JP2007219577A JP2006035989A JP2006035989A JP2007219577A JP 2007219577 A JP2007219577 A JP 2007219577A JP 2006035989 A JP2006035989 A JP 2006035989A JP 2006035989 A JP2006035989 A JP 2006035989A JP 2007219577 A JP2007219577 A JP 2007219577A
- Authority
- JP
- Japan
- Prior art keywords
- arithmetic processing
- processing
- processing units
- spu
- processes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】本発明は、データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体に関し、例えば光ディスク装置に適用して、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理する。
【解決手段】本発明は、負荷状況に応じて、複数の処理のうちの1つの処理を実行する演算処理部の数、スレッド数を動的に変化させる。
【選択図】 図1
【解決手段】本発明は、負荷状況に応じて、複数の処理のうちの1つの処理を実行する演算処理部の数、スレッド数を動的に変化させる。
【選択図】 図1
Description
本発明は、データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体に関し、例えば光ディスク装置に適用することができる。本発明は、負荷状況に応じて、複数の処理のうちの1つの処理を実行する演算処理部の数、スレッド数を動的に変化させることにより、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができるようにする。
従来、データ処理装置に関して、特開2005−235229号公報等に、マルチコアシステムにより高速度にデータ処理する工夫が提案されている。また特開2005−100264号公報等には、マルチコアシステムをリアルタイム処理に適用する工夫が提案されている。
ところでビデオデータを処理する複数の処理をマルチコアシステムで逐次実行することが考えられる。具体的に、この複数の処理は、ビデオデータの復号処理、フィルタリング処理等である。
しかしながらマルチコアシステムでは、負荷の状況が変動し、マルチコアシステムを構成する複数の演算処理回路で負荷に偏りが発生する場合がある。このためマルチコアシステムでビデオデータを逐次処理する場合に、リアルタイム性を損なうことなくぎりぎりの時間で処理している場合でも、何ら処理を実行していない空き時間が一部の演算処理回路で発生し、効率良くデータ処理できない問題がある。なおこの問題を解決する1つの方法として負荷の偏りを監視して各演算処理回路の動作を制御する方法も考えられる。しかしながらデコードの処理単位はピクチャーであり、ピクチャの処理量は使用するビット量によって異なる。従って使用する処理量は、実際に処理を実行してみないと解らない場合が多く、そのためオペレーションシステム側では、負荷の偏りまでは細かく制御することができない。
ここで図12は、ハードディスク装置(HDD)2を記録媒体に適用した再生装置を示すブロック図である。この再生装置1において、分離部3は、ハードディスク装置2から再生されるデータをビデオデータ及びオーディオデータのストリーミングデータに分離して出力する。前処理部4は、この分離部3の出力データを前処理して出力する。復号部5は、この前処理部4の出力データからビデオデータ及びオーディオデータを復号して出力する。後処理部6は、この復号部5の出力データをフィルタリング処理等して出力する。GPU(Graphics Processing Unit)7は、後処理部6から出力されるビデオデータを画像処理して出力する。
この再生装置1において、分離部3、前処理部4、復号部5、後処理部6をそれぞれ演算処理回路で構成してこの再生装置1をマルチコアシステムとした場合、例えば前処理部4の負荷が大きいと、他の処理回路に割り当てられた演算処理回路で空き時間が発生することになる。
この負荷の偏りを防止する方法として、負荷の大きな1つの処理を複数の演算処理回路で実行することも考えられるが、この場合には、この1つの処理を実行する複数の演算処理回路で空き時間が発生することになる。また単に1つの処理を複数の演算処理回路で実行する場合には、1つの処理が複数の演算処理回路をまとめて専有することになり、この複数の演算処理回路の空き時間を他の処理で利用することも困難になる。従ってこの場合も、効率良くデータ処理できなくなる問題がある。
すなわち図13は、図12の再生装置1の各機能ブロックのうちの前処理部4、後処理部6にそれぞれ符号4A〜4C、6A、6Bで示す複数の演算処理回路を割り当てた場合である。この図13に示す構成の場合、前処理部、後処理部の負荷が大きい場合でも、前処理部4A〜4C、後処理部6A、6Bでは、十分に高速度でビデオデータを処理することができる。しかしながらこの再生装置11では、復号部5がシングルモードで、復号部5には1つの演算処理回路だけが割り当てられていることになる。従って復号部5で1フレームの処理が完了するまで、他の演算処理回路が処理を待機することになり、前処理部4A〜4C、後処理部6A、6B等の演算処理回路で空き時間が発生することになる。
特開2005−235229号公報
特開2005−100264号公報
本発明は以上の点を考慮してなされたもので、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができるデータ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体を提案しようとするものである。
上記の課題を解決するため請求項1の発明は、マルチコアシステムにより複数の処理を実行するデータ処理装置に適用して、前記マルチコアシステムを形成する複数の演算処理部と、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視部と、前記監視結果に基づいて、前記演算処理部を制御する制御部とを有し、前記制御部は、前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出し、前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる。
また請求項2の発明は、マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法に適用して、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、前記制御のステップは、前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる割り当てのステップとを有するようにする。
また請求項7の発明は、マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムに適用して、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、前記制御のステップは、前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる割り当てのステップとを有するようにする。
また請求項8の発明は、マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムを記録した記録媒体に適用して、前記データ処理方法のプログラムは、前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、前記制御のステップは、前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる割り当てのステップとを有するようにする。
請求項1、請求項2、請求項7、請求項8の構成によれば、負荷の大きな1つの処理に、負荷の小さな他の処理の演算処理部が割り当てられ、この1つの処理が複数の演算処理部で実行される。またこれとは逆に、負荷の小さな1つの処理を実行する複数の演算処理部の1つが、負荷の大きな他の処理に割り当てられる。また1つの処理に複数の演算処理部を割り当てる場合には、この1つの処理のスレッドが各演算処理部に分割して割り当てられる。これにより負荷状況に応じて、複数の処理のうちの1つの処理を実行する演算処理部の数、スレッド数を動的に変化させることができ、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができる。
本発明によれば、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができる。
以下、適宜図面を参照しながら本発明の実施例を詳述する。
(1)実施例の構成
図2は、本発明の実施例に係る光ディスク装置を示すブロック図である。この光ディスク装置21は、MPEG2−TS(Moving Picture Experts Group2 Transport Stream)のプログラムストリームを光ディスクから再生してビデオデータ及びオーディオデータをモニタ装置に出力する。
図2は、本発明の実施例に係る光ディスク装置を示すブロック図である。この光ディスク装置21は、MPEG2−TS(Moving Picture Experts Group2 Transport Stream)のプログラムストリームを光ディスクから再生してビデオデータ及びオーディオデータをモニタ装置に出力する。
ここで光ディスク装置21において、光ディスクドライブ22は、プロセッサ23の制御に従って光ディスクからプログラムストリームを再生してバスBUSに出力する。操作部24は、この光ディスク装置21に設けられた各種操作子等であり、ユーザーの操作をプロセッサ23に通知する。インターフェース(IF)25は、バスBUSに出力されるビデオデータ及びオーディオデータを外部機器に出力する。リードオンリメモリ(ROM)26は、プロセッサ23のプログラム等を格納して保持する。
ここでこの実施例において、プロセッサ23のプログラムは、この光ディスク装置21に事前にインストールされて提供されるものの、これに代えて光ディスク、磁気ディスク、メモリカード等の各種記録媒体に記録して提供するようにしてもよく、またインターネット等のネットワークを介したダウンロードにより提供してもよい。
ランダムアクセスメモリ27は、プロセッサ23のワークエリアを構成し、バスBUSに出力されるプログラムストリーム、プロセッサ23で処理された画像データ、リードオンリメモリ26からロードされたプログラム等を一時格納する。
プロセッサ23は、リードオンリメモリ26に格納されたプログラムに従ってこの光ディスク装置21の動作を制御する制御手段である。プロセッサ23は、ユーザーが操作部24を操作して光ディスクの再生を指示すると、光ディスクドライブ22を制御して光ディスクに記録されたプログラムストリームを再生する。プロセッサ23は、この光ディスクドライブ22で再生されるプログラムストリームをバスBUSから入力し、ソフトウエアの処理によりこのプログラムストリームからビデオデータ及びオーディオデータを復号してバスBUSに出力する。
ここでプロセッサ23は、複数の演算処理回路を一体に集積回路化したマルチコアシステムの演算処理回路である。プロセッサ23において、この複数の演算処理回路の1つは、PPU(Power Processing Unit )28と呼ばれ、この光ディスク装置21の動作を制御し、他の演算処理回路を管理する。また残りの演算処理回路は、SPU(Synergistic Processing Unit)29A〜29Nと呼ばれ、それぞれ独立して動作可能なビデオデータ等の処理に適した演算処理回路である。なおプロセッサは、PPU、SPUによるマルチコアプロセッサに限られるものではなく、一般のCPUによるマルチプロセッサを適用するようにしてもよい。
プロセッサ23は、SPU29A〜29Nの演算処理によって、図3に示すように、分離部31、制御部32、画像データ復号部33、音声データ復号部34、画像データ処理部35、機器負荷情報監視部36の機能ブロックを構成する。
ここでこれらの機能ブロックのうち、分離部31は、データ入力部37から入力されるプログラムストリームをビデオデータ、オーディオデータのストリーミングデータに分離する。画像データ復号部33は、分離部31から出力されるビデオデータのストリーミングデータを前処理してビデオデータを復号する。音声データ復号部34は、分離部31から出力されるオーディオデータのストリーミングデータからオーディオデータを復号する。画像データ処理部35は、画像データ復号部33で復号したビデオデータを画像処理して出力する。なおこの図3において、入力ディバイス38は、光ディスクドライブ22であり、データ入力部37は、入力ディバイス38との間のインターフェースである。また表示ディバイス40は、モニタ装置であり、出力部41は、モニタ装置のインターフェース25である。
機器負荷情報監視部36は、これら分離部31、画像データ復号部33、音声データ復号部34、画像データ処理部35の負荷を細かなレベルで定期的に監視する。制御部32は、この機器負荷情報監視部36の監視結果に基づいて、画像データ復号部33に割り当てる演算処理回路の個数、スレッド(thread)の数を動的に切り換える。
ここでスレッドは、マルチスレッドに対応したオペレーティグシステム上で動作するソフトウエアの実行単位であり、1つのプログラムは、最低1つのスレッドを有する。同じプログラムに属するスレッドは、メモリ等のリソースを共有する。複数のスレッドは、演算処理回路を交互に占有することによって見かけ上、同時に実行することができる。また高度な処理を行なうアプリケーションソフト等では、スレッドを複数走らせることにより、同時に複数の処理を実行することができる。従ってスレッドを複数走らせることにより、時間を要する演算処理中にユーザーからの入力を受け付ける等の工夫が可能になる。複数のスレッドを同時に走らせることは、複数プログラム(マルチプロセス)の同時実行と類似するものではあるが、マルチプロセスの場合、プログラムを切り換える際にメモリアドレスの変換などの作業が必要になるため、マルチスレッドでスレッドを切り換える場合に比して負荷は大きくなる。
プロセッサ23において、分離部31、画像データ復号部33、音声データ復号部34、画像データ処理部35は、SPU29A〜29Nが割り当てられて形成される。制御部32、機器負荷情報監視部36は、画像データ復号部33に割り当てられたSPUで形成される。なお画像データ復号部33に複数のSPUが割り当てられた場合には、この複数のSPUのうちの1つが、制御部32、機器負荷情報監視部36の機能ブロックを形成する。なお以下において、この制御部32、機器負荷情報監視部36の機能ブロックが割り当てられたSPUをメインSPUと呼ぶ。
この光ディスク装置21では、PPU28による事前の設定により、分離部31、画像データ復号部33、音声データ復号部34、画像データ処理部35にSPU29A〜29Nが割り当てられた後、制御部32に割り当てられたメインSPUによって画像データ復号部33に割り当てるSPU29A〜29Nの個数、スレッドの数を動的に切り換える。より具体的には、各処理の負荷状況によって変化する画像データ復号部33に割り当て可能なSPUの個数によって画像データ復号部33へのSPUの割り当てを可変する。また画像データ復号部33に割り当てる演算処理回路の数と一致するように、画像データ復号部33のスレッド数を設定し、各スレッドを対応するSPUに設定する。
すなわち図4は、分離部31、画像データ復号部33、音声データ復号部34、画像データ処理部35にそれぞれ1つのSPU29A〜29Dを割り当てた場合を示す略線図である。この場合、各SPU29A〜29Dには、それぞれ各機能ブロックを構成するためにスレッドが割り当てられる。従ってこの場合、画像データ復号部33には1つのSPU29Cが割り当てられ、この1つのSPU29Cに画像データ復号部33の処理を実行する1つのスレッドが割り当てられる。従ってこの場合、図5に示すように、画像データ復号部33に割り当てられたSPU29Cは、1枚のピクチャーの全てを処理してビデオデータを復号する。
この図4に示すように画像データ処理部33に1つのSPU29Cを割り当てて1つのスレッドで処理する場合、例えば処理対象が静止しているシーンでは、負荷が小さく、十分に高速度に処理することができる。従ってこの場合には、他のSPU29A〜29Bにおける空き時間も短くなる。しかしながら動きの激しいシーンでは、SPU29Cの負荷が増大して処理に時間を要することになり、他のSPU29A〜29Bで空き時間が発生する。
これに対して図6は、図4との対比により、画像データ復号部33に2つのSPU29C、29Dを割り当てた場合を示す略線図である。この場合、画像データ復号部33の処理は、2つの演算処理回路であるSPU29C、29Dで実行されることから、動きの激しいシーンでも、高速度でビデオデータを復号することができる。従って他のSPU29A、29B、29Eの空き時間を低減することができる。しかしながらこの場合、図4の例とは逆に、静止しているシーンでは、SPU29C、29Dで空き時間が発生することになる。
そこでプロセッサ23は、機器負荷情報監視部36で、SPU29A〜29Nの負荷を定期的に監視し、この監視結果に基づいて、制御部32で画像データ復号部33に割り当てるSPU29A〜29Nの個数を切り換える。
しかしながら単に1つのスレッドを複数の演算処理回路に割り当てた場合には、この1つのスレッドが複数の演算処理回路を専有することになり、この複数の演算処理回路で空き時間が発生した場合でも、他の処理に利用できなくなる。
そこで制御部32は、画像データ復号部33に割り当てるSPU29A〜29Nの個数だけでなく、スレッド数も併せて切り換える。すなわち制御部32は、図6の例では、画像データ復号部33の処理を実行する1つのスレッドを2つに分割してスレッド1、スレッド2を形成し、画像データ復号部33に割り当てたSPU29C、29Dにこれらスレッド1、スレッド2をそれぞれ割り当てる。なお以下において、この1つの処理を実行する1つのスレッドを分割して形成される各スレッドを、適宜、分割スレッドと呼ぶ。
なお図7は、図5との対比により画像データ復号部33の処理を2つのスレッドで実行する場合を示す略線図である。プロセッサ23は、マルチスライスの手法を適用して、1枚のピクチャーを垂直方向にスレッドの数で分割し、分割した各領域をそれぞれ1つのスレッドで処理する。なおマルチスライスは、複数のデコーダにより同時並列的に1枚のピクチャーを復号する手法であり、MPEG2の規格書に記載されている。
図1は、メインSPUの処理手順を示すフローチャートである。メインSPUは、PPU28の指示により、ビデオデータの1フレームの期間である33〔msec〕周期で、この図1に示す処理手順を実行する。なおこの周期は、必要に応じて種々に設定することができる。
メインSPUは、この処理手順を開始すると、ステップSP1からステップSP2に移り、処理開始の指示を入力する。続いてメインSPUは、ステップSP3に移り、分離部31から出力されてランダムアクセスメモリ27に一時保持されているビデオデータのストリーミングデータを前処理する。
続いてメインSPUは、ステップSP3に移り、各処理の負荷状況を解析する。ここでこの負荷状況の解析は、SPU29A〜29Nが割り当てられた機能ブロック毎に、負荷状況を解析する処理であり、種々の手法を適用することができる。この実施例において、メインSPUは、この負荷状況の解析で、後述するステップSP5、ステップSP6の処理に必要な情報を検出する。
続いてメインSPUは、ステップSP4からステップSP5に移り、ステップSP4で検出した情報に基づいて、画像データ復号部33(デコーダ)の現状の使用SPU数(SPU count(n)) を検出する。ここでメインSPUは、次式により示すように、直前にこの図1の処理手順を実行した際に検出した画像データ復号部33の使用SPU数(SPU count(n-1)) と、現在画像データ復号部33が使用しているSPU数(Now SPU count )とを重み付け平均処理し、使用SPU数(SPU count(n)) を検出する。
またメインSPUは、ステップSP4からステップSP6に移り、負荷状況に基づいて画像データ復号部33以外の他の処理の使用SPU数(Module use SPU)を検出する。ここで図8は、このステップSP6の処理手順を詳細に示すフローチャートである。メインSPUは、この処理手順を開始すると、ステップSP7からステップSP8に移り、この図8の処理で検出する他の処理の使用SPU数(他モジュールの合計平均使用数Module use SPU)に初期値をセットする。なおここで初期値は、初めにPPUによって設定される各処理へのSPUの割り当てに対応するSPUの数である。PPU28は、リアルタイム性を損なわないように、各処理の処理量に応じて事前に設定された割り当てに従って各処理にSPUを割り当てる。従って各処理へのSPUの割り当ては、各処理の処理量によって異なり、例えばMPEG2による画像データの復号処理には、初めに1個のSPUが割り当てられる。
続いてメインSPUは、ステップSP9に移り、この図8の処理を実行するループ処理である他モジュールチェックのループ処理を開始する。なおここでこの図8におけるモジュールは、図3について上述した各機能ブロックに対応する構成であり、画像データ復号部33以外の他の処理の実行単位である。
メインSPUは、続いてステップSP10に移り、画像データ復号部33以外の他の処理から1つの処理を選択し、この選択した処理の平均処理時間を検出する。ここでSPUは、1つのピクチャーの処理を完了すると、処理の完了をPPUに通知する。またSPUは、PPUが続くピクチャーの処理を指示すると、続くピクチャーの処理を開始する。メインSPUは、このPPUからの処理開始の指示であるモジュール呼び出しの周期を用いて平均処理時間を検出する。またステップSP5の処理と同様に、重み付け平均処理して平均処理時間を検出する。具体的に、メインSPUは、モジュール呼び出しの直前の1周期の時間Module time(n)、直前の平均処理時間Module time(n-1)を用いて、次式の演算処理を実行し、平均処理時間Module time(n)を検出する。なおこの他の処理にSPUが割り当てられていない場合には、1周期の時間Module time(n)、又は平均処理時間Module time(n-1)には、直前のモジュール呼び出しからの経過時間が適用される。
続いてメインSPUは、ステップSP10からステップSP11に移り、ステップSP9で検出した平均処理時間Module time(n)がリアルタイム処理を満足しているか否か判断する。ここでメインSPUは、平均処理時間Module time(n)が、リアルタイム処理可能な上限の制限時間Module limit time より小さいか否か判定することにより、平均処理時間Module time(n)がリアルタイム処理を満足するか否か判断する。メインSPUは、このステップSP11で否定結果が得られると、ステップSP11からステップSP12に移り、ステップSP8でセットした使用SPU数Module use SPUを値1だけインクリメントしてステップSP13に移る。これに対してステップSP11で肯定結果が得られると、メインSPUは、ステップSP11から直接ステップSP13に移る。
このステップSP13において、メインSPUは、全てのモジュールについて処理を完了したか否か判断し、否定結果が得られると、ステップSP13からステップSP9に戻り、未だ処理していないモジュールについて同様の処理を実行する。これに対して他の処理の全モジュールについてステップSP9〜ステップSP12の処理を完了すると、ステップSP13で肯定結果が得られ、メインSPUは、ステップSP14に移る。ここでメインSPUは、この他のモジュールチェックのループ処理を完了し、ステップSP15に移ってこの処理手順を終了する。この図8の処理により、メインSPUは、PPU28による初期設定を基準にして、他の処理で使用するSPU数(Module use SPU)を検出する。
メインSPUは、ステップSP5、ステップSP6の処理を終了すると(図1)、ステップSP19に移り、ここでステップSP5で検出したSPU数SPU count(n)からステップSP6の処理で検出した他の処理の使用SPU数Module use SPUを減算し、PPU28の初期設定を基準にして画像データ復号部33に追加で割り当て可能なSPU数SPU use count を計算する。
続いてメインSPUは、ステップSP20に移り、追加で割り当て可能なSPU数SPU use count が値0以上か否か判断することにより、画像データ復号部33にSPUを追加で振り分けることが可能か否か判断する。
このステップSP20で肯定結果が得られると、メインSPUは、ステップSP20からステップSP21に移り、画像データ復号部33に割り当てるSPU数、スレッド数を値1だけ増加させる。また画像データ復号部33のSPU数、図8のステップSP10−SP11−SP12の処理による他の各処理のSPU数をPPUに通知し、ステップSP22に移る。
これに対してステップSP20で否定結果が得られると、メインSPUは、画像データ復号部33に割り当てるSPU数、スレッド数を値1だけ減少させる。またステップSP21と同様に、この画像データ復号部33に割り当てるSPU数、図8のステップSP10−SP11−SP12の処理による他の各処理のSPU数をPPUに通知し、ステップSP22に移る。
これらステップSP21、SP22におけるこのメインSPUからの通知に従って、PPUは、モジュールの呼び出しを指示する。その結果、プロセッサ23は、割り当てに変更が生じたSPUでコンテキストスイッチの処理が実行されて実際にSPUの割り当てが変更され、さらには画像データ処理部35のスレッド数が変更される。なおここでSPUは、コンテキストスイッチの処理において、それまでローカルメモリに保持していたプログラム、各種のパラメータを共有メモリに格納した後、設定の変更に対応するプログラム、パラメータをローカルメモリにロードする。なお共有メモリは、例えばランダムアクセスメモリ27により形成される。
従ってこの図1の処理手順を実行するメインSPUは、画像データ処理部35に割り当てるSPUの個数、スレッド数が変更されると、それまでローカルメモリに保持していた画像データ処理部35の機能ブロックを構成するスレッドのプログラム、パラメータを共有メモリに格納し、この共有メモリから変更後のスレッド数に対応するプログラム、パラメータをローカルメモリにロードする。
続いてメインSPUは、ステップSP23に移り、ステップSP3で前処理したストリーミングデータからビデオデータを復号した後、ステップSP24でこのビデオデータを後処理する。またメインSPUは、続くステップSP25でこの後処理したビデオデータをバスBUSに出力した後、このループ処理を終了する。また続いてステップSP26に移ってこの処理手順を終了する。
(2)実施例の動作
以上の構成において、この光ディスク装置21では(図2)、光ディスクに記録されたプログラミングストリームが光ディスクドライブ22で順次再生される。光ディスク装置21では、このプログラミングストリームがランダムアクセスメモリ27に一時格納され、マルチコアシステムのプロセッサ23でこのプログラミングストリームからビデオデータ及びオーディオデータが復号され、このビデオデータ及びオーディオデータがモニタ装置に出力される。
以上の構成において、この光ディスク装置21では(図2)、光ディスクに記録されたプログラミングストリームが光ディスクドライブ22で順次再生される。光ディスク装置21では、このプログラミングストリームがランダムアクセスメモリ27に一時格納され、マルチコアシステムのプロセッサ23でこのプログラミングストリームからビデオデータ及びオーディオデータが復号され、このビデオデータ及びオーディオデータがモニタ装置に出力される。
ここでプロセッサ23では、マルチコアシステムを構成する複数の演算処理回路(SPU)29A〜29Nで、ランダムアクセスメモリ27に一時格納されたストリーミングデータが逐次処理され、ビデオデータ及びオーディオデータが復号される。すなわちストリーミングデータは(図3)、プロセッサ23において、分離部31の機能ブロックによりビデオデータ及びオーディオデータに分離され、画像データ復号部33及び音声データ復号部34の機能ブロックによりそれぞれビデオデータ及びオーディオデータが復号される。ビデオデータは、さらに画像データ処理部35の機能ブロックでフィルタリング等の処理が施される。
ここでこれらの機能ブロックの処理は、逐次処理であることから、これらの機能ブロックの処理で負荷の偏りが発生すると、負荷の軽い機能ブロックでSPUに空き時間が発生する。逆の見方をすると、負荷の重い機能ブロックで、全体の処理速度が制限され、ビデオデータを高速に処理できなくなる。
この場合、負荷の偏りを防止すれば、空き時間を低減し、全体の処理速度を高速度化することができるものの、オペレーションシステムでは、負荷の偏りまで細かく制御できない。これに対して負荷の重い処理に複数個のSPUを割り当てて負荷を軽くする方法も考えられるが、この場合は、この複数個のSPUで空き時間が発生し、またこの複数個以外のSPUで全体の処理速度が制限される。また単に複数個のSPUで1つの機能ブロックを構成する場合には、1つのスレッドが複数のSPUを占有することになり、この複数個のSPUで発生した空き時間を他の処理に振り分けることが困難になる。
そこでプロセッサ23では、各機能ブロックの負荷状況に基づいて、画像データ復号部33に割り当て可能なSPU数が検出される。またプロセッサ23では、画像データ復号部33のスレッドを画像データ復号部33に割り当てるSPU数で分割した分割スレッドを、画像データ復号部33のSPUに割り当て、この割り当て可能なSPUが画像データ復号部33に割り当てられる。
すなわちプロセッサ23では、画像データ復号部33に割り当てられたメインSPUにおいて、一定の周期で各処理の負荷状況が解析され(図1、ステップSP4)、画像データ復号部33における現状の使用SPU数が検出され(ステップSP5)、また他の処理で使用するSPU数が検出される(ステップSP6(図8))。またこれらのSPU数から画像データ復号部33に追加で振り分け可能なSPU数が検出され(ステップSP19、SP20)、追加で振り分け可能なSPUが存在する場合には、この追加で振り分け可能なSPUが画像データ復号部33に振り分けられる(ステップSP21)。またこれとは逆に追加で振り分け可能なSPUが存在しない場合には、画像データ復号部33に振り分けられていたSPUの1つが、負荷の重い他の処理に振り分けられる(ステップSP22)。
この図1に示すメインSPUの処理により、プロセッサ23は、負荷状況に応じて、複数の処理のうちの1つの処理である画像データ復号部の処理を実行する演算処理回路の数、スレッド数を動的に変化させ、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することが可能となる。従って、復号化したビデオデータを一時格納するバッファメモリの容量、処理途中のビデオデータ、ストリーミングデータを一時格納するバッファメモリの容量についても、従来に比して低減することができる。
またマルチスレッドにより複数の演算処理回路で1つの処理を実行することから、マルチプロセスの場合のようなプログラムを切り換える際のメモリアドレスの変換等の作業が不要となり、スレッドを切り換える負荷も小さくすることができる。
またスレッド数を動的に変化させることから、コンテキストスイッチの回数も必要最小限に制限することができ、コンテキストスイッチの回数の増大による処理速度の低下を防止することができる。
すなわちこの実施例では、図9おいて矢印により示すように、画像データ復号部33に1つのSPU29Aが割り当てられた場合、それまでこのSPU29Aのローカルメモリに格納されていたプログラム、パラメータ(符号LSにより示す)がメモリに格納された後、画像データ復号部33の1つのスレッドによるプログラム、パラメータ等がSPU29Aのローカルメモリに格納され、コンテキストスイッチの処理が実行される。従ってこの場合、コンテキストスイッチの回数は1回となる。
これに対して画像データ復号部33に4つのSPU29A〜29Dが割り当てられた場合、図10に示すように、各SPU29A〜29Dのローカルメモリに格納されていたプログラム、パラメータがメモリに格納された後、画像データ復号部33の4つの分割スレッドによるプログラム、パラメータ等がそれぞれSPU29A〜29Dのローカルメモリに格納され、コンテキストスイッチの処理が実行される。従ってこの場合、コンテキストスイッチの回数は4回となる。
これに対して図9との対比により、図11に示すように、画像データ復号部33の処理を固定した分割スレッドで実行することを前提に、この分割スレッドの振り分けにより画像データ復号部33に割り当てる演算処理回路の数の変化に対応する場合には、用意された分割スレッドの数だけコンテキストスイッチが必要になる。すなわちこの図11の例では、1つのSPUで画像データ復号部33の処理を実行しているにもかかわらず、コンテキストスイッチは4回必要になる。従ってこの実施例では、コンテキストスイッチの回数も必要最小限に制限することができ、コンテキストスイッチの回数の増大による処理速度の低下を防止することができる。
具体的にビデオデータを逐次処理する場合、負荷の軽い処理では、1つのピクチャーの処理時間が短くなり、PPUによるモジュール呼び出し周期が短くなる。従ってこの場合は、この処理に割り当てるSPUの数は、1個以下でも良いことになる。従ってこの負荷の軽い処理に割り当てられているSPUは、この図1の処理手順の実行により、画像データ復号部33に振り分けられる。また一旦、画像データ復号部33に振り分けられると、例えばモジュール呼び出し周期に代えて直前のモジュール呼び出しからの時間経過が適用されて、元の処理がリアルタイム性を満足するか判断され、リアルタイム性が損なわれそうになると、画像データ復号部33に振り分けられたSPUが元の処理に戻される。従ってこの負荷の軽い処理に割り当てられているSPUは、ピクチャーを何枚か処理する毎に、画像データ復号部33に振り分けられる。
プロセッサ23では、この負荷の軽い処理のSPUの画像データ復号部33への振り分け、元の処理への振り分けに対応するように、それまで画像データ復号部33に割り当てられていたSPUと、この負荷の軽いSPUとで、コンテキストスイッチの処理が実行される。
またビデオデータの逐次処理の場合、さらにはこの逐次処理の1つの処理がビデオデータの復号の処理の場合、負荷が大きく変動するものの、この実施例のように、動的にビデオデータの復号に適用するSPUの個数、スレッド数を切り換えるようにすれば、空き時間の発生を従来に比して格段的に低減して、比較的パフォーマンスの低いマルチコアプロセッサで、ビデオデータを逐次処理することができる。
(3)実施例の効果
以上の構成によれば、負荷状況に応じて、複数の処理のうちの1つの処理を実行する演算処理部の数、スレッド数を動的に変化させることにより、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができる。
以上の構成によれば、負荷状況に応じて、複数の処理のうちの1つの処理を実行する演算処理部の数、スレッド数を動的に変化させることにより、マルチコアシステムに関して、空き時間を低減して効率良くデータ処理することができる。
またこの複数の処理が、逐次処理であることにより、負荷の重い処理による処理速度の制限を緩和して、高速度でこれら複数の処理を実行することができる。
またこの複数の処理が、ビデオデータの逐次処理であることにより、負荷の重い処理による処理速度の制限を緩和して、高速度でビデオデータを処理することができる。
またこの1つの処理が、ビデオデータの復号の処理であることにより、ビデオデータの復号の処理による処理速度の制限を緩和して、高速度でビデオデータを処理することができる。
またこのビデオデータの復号の処理が、ビデオデータのマルチスライスによる処理であることにより、簡易かつ確実に1枚のピクチャーを複数の演算処理部で同時並列的に実行することができる。
なお上述の実施例においては、複数の演算処理回路を一体に集積回路化したマルチコアシステムの演算処理回路でビデオデータを処理する場合について述べたが、本発明はこれに限らず、要は複数の演算処理回路を用いたマルチコアシステムでビデオデータを処理する場合に広く適用することができる。
また上述の実施例においては、ビデオデータを復号する場合について述べたが、本発明はこれに限らず、ビデオデータを符号化処理する場合、オーディオデータ、ビデオデータ、各種のセンサ出力のデータ等を逐次処理する場合等にも広く適用することができる。
また上述の実施例では、複数の処理のうちの1つの処理に、複数の演算処理部を割り当てる場合について述べたが、本発明はこれに限らず、要は複数の処理のうち少なくとも1つの処理に、複数の演算処理部を割り当てるようにすればよく、複数の演算処理部の割り当て対象を複数設けるようにしてもよい。
また上述の実施例においては、複数の処理が逐次処理である場合について述べたが、本発明はこれに限らず、複数の処理が並列処理可能な処理である場合にも広く適用することができる。
本発明は、データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体に関し、例えば光ディスク装置に適用することができる。
1、11……再生装置、3、31……分離回路、4、4A〜4C……前処理部、5、33……画像データ復号部、6、6A、6B……後処理部、21……光ディスク装置、22……光ディスクドライブ、23……プロセッサ、28……PPU、29A〜29N……SPU、32……制御部、34……音声データ復号部、35……画像データ処理部、36……機器負荷情報監視部
Claims (8)
- マルチコアシステムにより複数の処理を実行するデータ処理装置において、
前記マルチコアシステムを形成する複数の演算処理部と、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視部と、
前記監視結果に基づいて、前記演算処理部を制御する制御部とを有し、
前記制御部は、
前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出し、
前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる
ことを特徴とするデータ処理装置。 - マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法において、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、
前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、
前記制御のステップは、
前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、
前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる割り当てのステップとを有する
ことを特徴とするデータ処理方法。 - 前記複数の処理が、逐次処理である
ことを特徴とする請求項2に記載のデータ処理方法。 - 前記複数の処理が、ビデオデータの逐次処理である
ことを特徴とする請求項2に記載のデータ処理方法。 - 前記少なくとも1つの処理が、ビデオデータの復号の処理である
ことを特徴とする請求項4に記載のデータ処理方法。 - 前記1つの処理が、前記ビデオデータのマルチスライスによる処理である
ことを特徴とする請求項5に記載のデータ処理方法。 - マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムにおいて、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、
前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、
前記制御のステップは、
前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、
前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる割り当てのステップとを有する
ことを特徴とするデータ処理方法のプログラム。 - マルチコアシステムにより複数の演算処理部を用いて複数の処理を実行するデータ処理方法のプログラムを記録した記録媒体において、
前記データ処理方法のプログラムは、
前記複数の演算処理部の負荷状況を監視して監視結果を出力する監視のステップと、
前記監視結果に基づいて、前記演算処理部を制御する制御のステップとを有し、
前記制御のステップは、
前記監視結果に基づいて、前記複数の処理の少なくとも1つの処理に割り当て可能な前記演算処理部の数を検出する演算処理部数検出のステップと、
前記1つの処理のスレッドを該検出した数で分割した分割スレッドを、該検出した数の前記演算処理部にそれぞれ割り当て、該検出した数の前記演算処理部を前記1つの処理に割り当てる割り当てのステップとを有する
ことを特徴とするデータ処理方法のプログラムを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006035989A JP2007219577A (ja) | 2006-02-14 | 2006-02-14 | データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006035989A JP2007219577A (ja) | 2006-02-14 | 2006-02-14 | データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007219577A true JP2007219577A (ja) | 2007-08-30 |
Family
ID=38496849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006035989A Pending JP2007219577A (ja) | 2006-02-14 | 2006-02-14 | データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007219577A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009031474A1 (ja) * | 2007-09-07 | 2009-03-12 | Humming Heads Inc. | 情報検索システム、情報検索方法及びプログラム |
JP2009207049A (ja) * | 2008-02-29 | 2009-09-10 | Mitsubishi Electric Corp | 通信装置 |
JP2009258937A (ja) * | 2008-04-16 | 2009-11-05 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
WO2010150465A1 (ja) * | 2009-06-25 | 2010-12-29 | パナソニック株式会社 | AV(Audio Visual)データ再生回路、AVデータ再生装置、集積回路およびAVデータ再生方法 |
JP2011210201A (ja) * | 2010-03-30 | 2011-10-20 | Toshiba Corp | 情報処理装置 |
JP2012003653A (ja) * | 2010-06-21 | 2012-01-05 | Mitsubishi Electric Corp | 計算機システム及びコンピュータプログラム及びパイプライン処理方法 |
US8555289B2 (en) | 2010-03-16 | 2013-10-08 | Samsung Electronics Co., Ltd. | System and method for dynamically managing tasks for data parallel processing on multi-core system |
JP2014507897A (ja) * | 2011-02-10 | 2014-03-27 | インテル コーポレイション | 共有ビデオ−オーディオパイプライン |
-
2006
- 2006-02-14 JP JP2006035989A patent/JP2007219577A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009031474A1 (ja) * | 2007-09-07 | 2009-03-12 | Humming Heads Inc. | 情報検索システム、情報検索方法及びプログラム |
CN101796493A (zh) * | 2007-09-07 | 2010-08-04 | 哈明头株式会社 | 信息检索系统、信息检索方法及程序 |
CN101796493B (zh) * | 2007-09-07 | 2014-10-08 | 哈明头株式会社 | 信息检索系统、信息检索方法及程序 |
US8560540B2 (en) | 2007-09-07 | 2013-10-15 | Humming Heads Inc. | Information search system, information search method, and program |
JP5048072B2 (ja) * | 2007-09-07 | 2012-10-17 | ハミングヘッズ株式会社 | 情報検索システム、情報検索方法及びプログラム |
JP2009207049A (ja) * | 2008-02-29 | 2009-09-10 | Mitsubishi Electric Corp | 通信装置 |
JP2009258937A (ja) * | 2008-04-16 | 2009-11-05 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US8099531B2 (en) | 2008-04-16 | 2012-01-17 | Sony Corporation | Information processing method and computer program comprising network card wherein a plurality of processors switches use of network card related to setting of resource flag |
WO2010150465A1 (ja) * | 2009-06-25 | 2010-12-29 | パナソニック株式会社 | AV(Audio Visual)データ再生回路、AVデータ再生装置、集積回路およびAVデータ再生方法 |
US8555289B2 (en) | 2010-03-16 | 2013-10-08 | Samsung Electronics Co., Ltd. | System and method for dynamically managing tasks for data parallel processing on multi-core system |
JP2011210201A (ja) * | 2010-03-30 | 2011-10-20 | Toshiba Corp | 情報処理装置 |
JP2012003653A (ja) * | 2010-06-21 | 2012-01-05 | Mitsubishi Electric Corp | 計算機システム及びコンピュータプログラム及びパイプライン処理方法 |
JP2014507897A (ja) * | 2011-02-10 | 2014-03-27 | インテル コーポレイション | 共有ビデオ−オーディオパイプライン |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7191240B2 (ja) | ビデオストリーム復号方法、装置、端末機器およびプログラム | |
JP2007219577A (ja) | データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 | |
JP4519082B2 (ja) | 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置 | |
JP6335845B2 (ja) | 動的ビデオスイッチング | |
US8141088B2 (en) | Multithreaded processor | |
JP5379122B2 (ja) | マルチプロセッサ | |
KR101645058B1 (ko) | 디코딩 장치, 디코딩 방법, 및 편집 장치 | |
US8548061B2 (en) | Image decoding apparatus and image decoding method | |
US8612981B2 (en) | Task distribution method | |
CN111147926B (zh) | 一种数据转码方法及装置 | |
JP2001069512A (ja) | データ処理システムおよび画像データの復号処理方法 | |
US7848610B2 (en) | Data processing system, reproduction apparatus, computer, reproduction method, program, and storage medium | |
US8280220B2 (en) | Reproduction apparatus, data processing system, reproduction method, program, and storage medium | |
CN112714319A (zh) | 计算机可读取存储介质、使用多个执行单元的视频编解码方法和装置 | |
JP2007150569A (ja) | 画像復号装置、および画像復号方法 | |
US20060008248A1 (en) | Optimal buffering and scheduling strategy for smooth reverse in a DVD player or the like | |
US8615165B2 (en) | Video-recording and replaying apparatus, I/O scheduling method, and program | |
JP5236386B2 (ja) | 画像復号装置及び画像復号方法 | |
JP2006086964A (ja) | ビットレート変換装置およびビットレート変換方法 | |
JP2011182169A (ja) | 符号化装置および方法 | |
US20070206870A1 (en) | Encoded Data Decoding Apparatus | |
TWI605416B (zh) | 影像處理裝置、影像處理方法及其非暫態電腦可讀取儲存媒體 | |
JP2005191690A (ja) | 動画像復号化装置および動画像復号化方法 | |
JP2010252069A (ja) | 画像復号装置及び画像復号方法 | |
JP2011166486A (ja) | 復号装置および方法 |