(57)【要約】【課題】複数のプロセッサコアの並列処理による処理効率を向上させることのできる情報処理装置及び情報処理方法の提供を目的とする。【解決手段】複数のプロセッサコアを備えた情報処理装置であって、サイズが固定されない第一の構成要素が連続して配列され、前記第一の構成要素には当該第一の構成要素の開始を示すビット列が含まれる構造を有するデータについて、連続する前記第一の構成要素ごとに、各プロセッサコアの処理の対象を割り当てる割り当て手段を有することにより上記課題を解決する。【選択図】図６
2009048469.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを備えた情報処理装置であって、
サイズが固定されない第一の構成要素が連続して配列され、前記第一の構成要素には当該第一の構成要素の開始を示すビット列が含まれる構造を有するデータについて、連続する前記第一の構成要素ごとに、各プロセッサコアの処理の対象を割り当てる割り当て手段を有することを特徴とする情報処理装置。
【請求項２】
各プロセッサコアは、割り当てられた連続する前記第一の構成要素のうち、先頭の第一の構成要素についてのみ前記ビット列を前記データの中から検索することを特徴とする請求項１記載の情報処理装置。
【請求項３】
各プロセッサコアは、前記ビット列の検出に応じて、前記第一の構成要素の開始位置を記録し、
割り当てられた全ての前記第一の構成要素の処理が完了したプロセッサコアは、記録されている前記開始位置に基づいて、未処理の第一の構成要素の前記ビット列の検索を行うことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記データは、一つ以上の前記第一の構成要素によって構成される第二の構成要素を複数含み、
前記割り当て手段は、前記第二の構成要素ごとに、当該第二の構成要素に含まれる前記第一の構成要素について複数のプロセッサコアへの割り当てを行い、前に処理された前記第二の構成要素に関する各プロセッサコアの処理の状況に基づいて、次に処理される前記第二の構成要素に関する割り当てを決定することを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
複数のプロセッサコアを備えた情報処理装置が実行する情報処理方法であって、
サイズが固定されない第一の構成要素が連続して配列され、前記第一の構成要素には当該第一の構成要素の開始を示すビット列が含まれる構造を有するデータについて、連続する前記第一の構成要素ごとに、各プロセッサコアの処理の対象を割り当てる割り当て手順を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関し、特に複数のプロセッサコアを備えた情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
画像データ等のマルチメディアデータの処理は、負荷が高くなる傾向にあるため、複数のプロセッサによって並列的に処理することで、処理の高速化が図られている。例えば、従来のマルチコアＭＰＥＧ（Moving Picture Experts Group）デコーダでは、デコード処理を、ＭＰＥＧデータを構成するスライス単位で各プロセッサに分散させることが行われていた。
【０００３】
なお、スライスのサイズは固定でないため、ビットストリーム中における各スライスの位置は、演算によって求めることはできない。したがって、各プロセッサに割り当てられたスライスの検索は、ビットストームを走査し、スライスの開始を示すビット列であるスタートコードを検出することにより行われていた。
【特許文献１】特開平１０−９１５９４号公報
【非特許文献１】ＩＥＥＥ  ＪＯＵＲＮＡＬ  ＯＦ  ＳＯＬＩＤ−ＳＴＡＴＥ  ＣＩＲＣＵＩＴＳ，Ｖｏｌ.３６，Ｎｏ１１，２００１年１１月，Ｐ１７６８−１７７４
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、スタートコードの検索（スライスの検索）は、シングルプロセッサによる処理では必要とされなかった処理である。ビットストリーム中において、各スライスは連続的に配列されているため、シングルプロセッサの場合、その配列順に各スライスを処理すればよかったからである。
【０００５】
一方、スライスの検索処理はビットストリームの走査を要し、必ずしも負荷の軽い処理ではない。したがって、マルチプロセッサによって各スライスを並列的に処理する場合、スライスの検索処理によるオーバーヘッドが並列処理による処理効率の向上に対する阻害要因となっていた。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、複数のプロセッサコアの並列処理による処理効率を向上させることのできる情報処理装置及び情報処理方法の提供を目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、複数のプロセッサコアを備えた情報処理装置であって、サイズが固定されない第一の構成要素が連続して配列され、前記第一の構成要素には当該第一の構成要素の開始を示すビット列が含まれる構造を有するデータについて、連続する前記第一の構成要素ごとに、各プロセッサコアの処理の対象を割り当てる割り当て手段を有することを特徴とする。
【０００８】
このような情報処理装置では、複数のプロセッサコアの並列処理による処理効率を向上させることができる。
【発明の効果】
【０００９】
本発明によれば、複数のプロセッサコアの並列処理による処理効率を向上させることのできる情報処理装置及び情報処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、ＭＰＥＧ（Moving Picture Experts Group）形式のデータのピクチャ（Ｉピクチャ、Ｂピクチャ、Ｐピクチャ）のデコード処理について、複数のプロセッサコアを用いて並列的に行う場合を例として説明する。なお、ＭＰＥＧデータは、その構成要素が以下のような階層構造を有する。
【００１１】
図１は、ＭＰＥＧデータの構造を示す図である。図１において、シーケンスは、一つのＭＰＥＧデータの符号化信号を示す。一つのＭＰＥＧデータは、一つ以上のＧＯＰ（Group of Picture）より構成される。一つのＧＯＰは、一つ以上のピクチャ（Ｉピクチャ、Ｂピクチャ、Ｐピクチャ）より構成される。一つのピクチャは、動画像信号を構成する一枚一枚の各画面に相当し、一つ以上のスライスより構成される。本実施の形態では、スライス単位で、複数のプロセッサコアに処理を分散させる例について説明する（すなわち、スライスが第一の構成要素に相当する）。なお、各スライスのサイズは固定されておらず（可変であり）、各スライスの先頭には、その開始を示すビット列（スタートコード）が含まれている。
【００１２】
図２及び図３は、本実施の形態の基本的な考え方を説明するための図である。図２では、スライスの割り当て方法によって、二つのプロセッサコア（コアＡ、コアＢ）の処理手順がどのように変化するかが示されている。
【００１３】
図２において、ビットストリームｂｓは、一つのピクチャのビットストリームを表現する。ビットストリームｂｓは、スライスｓｌ１〜ｓｌ４によって構成されている。各スライスは、それぞれの開始位置を示すスタートコードｓｃ１〜ｓｃ４を有している。
【００１４】
図中（Ａ）は、二つのプロセッサコアに割り当てられたスライスが連続していない場合の各プロセッサコアの処理手順を示す。また、（Ｂ）は、二つのプロセッサコアに割り当てられたスライスが連続している場合の各コアの処理手順を示す。ここで「連続」とは、ピクチャ内におけるスライスの配列順における関係をいう。点線の矢印ａｎ（ｎは整数）は、本来のデータ処理（デコード処理）を示し、破線の矢印ｂｎ（ｎは整数）は、処理対象とするスライスのスタートコードの検索処理を示す。
【００１５】
（Ａ）では、コアＡにはスライスｓｌ１及びｓｌ３が割り当てられ、コアＢにはスライスｓｌ２及びｓｌ４が割り当てられた例（すなわち、スライスが交互に割り当てられた例）が示されている。この場合、コアＡは、スライスｓｌ１の処理（ａ１）を行った後、スライスｓｌ３のスタートコードｓｃ３を検索するために、スライスｓｌ２の領域を走査する（ｂ１）。スタートコードｓｃ３が検出されると、スライスｓｌ３の処理（ａ２）を行う。
【００１６】
コアＢは、スライスｓｌ２のスタートコードｓｃ２を検索するためにスライスｓｌ１の領域を走査し（ｂ３）、スタートコードｓｃ２が検出されるとスライスｓｌ２の処理（ａ３）を行う。続いて、スライスｓｌ４を検索するためにスライスｓｌ３の領域を走査し、スタートコードｓｃ４が検出されると、スライスｓｌ４の処理（ａ４）を行う。
【００１７】
一方（Ｂ）では、コアＡにはスライスｓｌ１及びｓｌ２が割り当てられ、コアＢにはスライスｓｌ３及びｓｌ４が割り当てられた例が示されている。この場合、コアＡは、スライスｓｌ１の処理（ａ１）が完了した時点で、スライスｓｌ２の先頭ビットを参照しているため、スタートコードを検索することなく、続けてスライスｓｌ２の処理（ａ２）を行うことができる。
【００１８】
コアＢは、スライスｓｌ３を検索するためにスライスｓｌ１及びｓｌ２の領域を走査し（ｂ１）、スタートコードｓｃ３が検出されると、スライスｓｌ３の処理（ａ３）を行う。スライスｓｌ３とｓｌ４とは連続しているため、コアＢは、スライスｓｌ１の処理を行った後、続けてスライスｓｌ４の処理（ａ４）を行うことができる。
【００１９】
（Ａ）と（Ｂ）とを比較して明らかなように、少なくともコアＡに関しては、矢印ｂ１によって示される検索処理の時間だけ処理時間が短縮される。また、コアＢに関しても、検索処理が一回になる。この一回の検索処理において走査されるデータ量は、二つのスライス分であり、その点については（Ａ）と同じであるが、その後、二つのスライスｓｌ３及びｓｌ４を連続的に処理可能な分、多少の処理時間の短縮が見込まれる。
【００２０】
そこで、本実施の形態では、各プロセッサコアへの割り当てを図３に示されるように行う。すなわち、図３（Ａ）に示されるように、ピクチャｐ内の各スライスを不規則に割り当てるのではなく、（Ｂ）に示されるように、各プロセッサコアに連続したスライスが割り当てられるようにする。なお、図中では、各スライスの背景の異同によって、割り当てられるプロセッサコアの異同を表現している。
【００２１】
以下、より具体的に説明する。図４は、本発明の実施の形態における画像処理装置のハードウェア構成例を示す図である。図４の画像処理装置１０は、それぞれバスBで相互に接続されている補助記憶装置１０１と、メモリ装置１０２と、二つのコア（プロセッサコア）１０３（コア１０３ａ、コア１０３ｂ）とを有するように構成される。
【００２２】
画像処理装置１０での処理を実現するプログラムは、補助記憶装置１０１に記録されている。補助記憶装置１０１は、プログラムを格納すると共に、必要なファイルやデータ（例えば、処理対象となるＭＰＥＧデータ）等を格納する。なお、図中では、プログラムＡとプログラムＢとが補助記憶装置１０１に格納されている様子が示されている。プログラムＡは、各コア１０３に割り当てるデータ量を判定する機能とデコード機能とが実施されたプログラムである。プログラムＢは、デコード機能が実装されたプログラムである。
【００２３】
メモリ装置１０２は、プログラムの起動指示があった場合に、補助記憶装置１０１からプログラムを読み出して格納する。コア１０３は、メモリ装置１０２に格納されたプログラムに従って画像処理装置１０に係る機能を実行する。また、本実施の形態において、メモリ装置１０２は、二つのコア１０３の双方から参照可能な共有メモリとしても用いられる。
【００２４】
なお、コア１０３は、三つ以上備えられていてもよい。また、各コア１０３は、マルチコアプロセッサとして一つのパッケージに集積されていてもよい。
【００２５】
図５は、第一の実施の形態の概要を説明するための図である。図５において、ｐ１は、シーケンス内の配列順において最初のピクチャの画面イメージを示す。ピクチャｐ１を構成するスライスは、ｓｌ１〜ｓｌ１４によって示されている。
【００２６】
第一の実施の形態では、ピクチャｐ１に含まれるスライスの各コア１０３への割り当て分は、基本的にライン単位で等分されたものとなる。ライン単位で等分されるのは、便宜的なものであり、スライスがラインを跨らない（すなわち、スライス長の上限は画面の幅である。）という前提に基づく。したがって、当該前提が成り立たない構造を有するデータについては、スライスに相当する構成要素単位で等分すればよい。
【００２７】
したがって、図５において、コア１０３ａに対して割り当てられるライン数Ｎは、ピクチャｐ１のライン数をＬとすると、Ｌ／２となる。また、コア１０３ｂに対して割り当てられるライン数Ｍは、Ｌ／２となる。なお、ライン数Ｌが奇数の場合は、例えば、Ｍ＝Ｌ−Ｎとすればよい。
【００２８】
２番目以降のピクチャ内のスライスの割り当てに関しては、直前のピクチャに関する処理状況に基づいて決定（判定）される。具体的には、直前のピクチャに関して先に処理が完了した方のコア１０３に割り当てられるライン数を１増やし、他方のコア１０３に割り当てられるライン数を１減らす。これによって、各コア１０３に対する負荷が均一化される。
【００２９】
なお、上記のように、各コア１０３に対する割り当て分は、ピクチャごとに判定される。すなわち、本実施の形態では、ピクチャが第二の構成要素に相当する。
【００３０】
以下、画像処理装置１０の処理手順について説明する。図６は、第一の実施の形態における画像処理装置の処理手順を説明するためのフローチャートである。図６において、左側のフローチャートは、コア１０３ａが第一の実施の形態のプログラムＡに基づいて実行する処理を示す。右側のフローチャートは、コア１０３ｂが第一の実施の形態のプログラムＢに基づいて実行する処理を示す。なお、当該フローチャートの処理の前において、補助記憶装置１０１に保存されているＭＰＥＧデータは、共有メモリ上に展開されている。
【００３１】
まず、コア１０３ａによって実行される処理について説明する。
【００３２】
ステップＳ１０１において、処理対象のピクチャ（以下、「カレントピクチャ」という。）は、シーケンス内の配列順において最初のピクチャであるか否かを判定する。最初のピクチャである場合（Ｓ１０１でＹｅｓ）、各コア１０３に割り当てるデータ量（ライン数）を算出する（Ｓ１０２）。ここでは、カレントピクチャのライン数Ｌをコア１０３の数で等分することによって割り当てるライン数を算出する。
【００３３】
続いて、各コア１０３に割り当てたライン数を共有メモリに記録する（Ｓ１０３）。続いて、割り当てたライン数分の連続するラインを各コア１０３に順番に割り当て、それぞれに割り当てられた先頭の位置（ライン番号）を共有メモリに記録する（Ｓ１０４）。
【００３４】
続いて、他のコア１０３（コア１０３ｂ）に、プログラムＢを起動させる（Ｓ１０５）。
【００３５】
続いて、コア１０３ａに対して割り当てられたライン数及びライン番号を共有メモリより読み出し、割り当てられたラインにおける先頭のスライスのスタートコードを、カレントピクチャのビットストリームを走査することにより検索する（Ｓ１０６）。当該スタートコードが検出されると、スタートコードが検出された位置より割り当てられた分のライン数分のスライスについてデコードを行う（Ｓ１０７、Ｓ１０８）。割り当て分の全てのスライスについて処理が完了した時点において（Ｓ１０８でＹｅｓ）、コア１０３ｂから処理の完了通知を受信していない場合は、当該通知を待ち合わせる（Ｓ１０９）。したがって、既に（デコード処理中等に）、当該通知を受信している場合は、待ち合わせは行わない。
【００３６】
続いて（コア１０３ｂからの完了通知を待ち合わせていた場合は、当該通知を受信すると）、コア１０３ａとコア１０３ｂとのいずれの処理が先に完了したかを共有メモリに記録する（Ｓ１１０）。
【００３７】
なお、処理対象のピクチャが最初のピクチャでない場合は（Ｓ１０１でＮｏ）、最初のピクチャの場合とデータ量の割り当て処理が異なる。すなわち、直前に処理されたピクチャの処理において、いずれのコア１０３の処理が先に完了したかを共有メモリより取得し、先に処理が完了したコア１０３の割り当て分を例えば、１ライン分増加させ、その増加分だけ他方のコア１０３の割り当て分を減少させる（Ｓ１１１）。
【００３８】
一方、コア１０３ｂは、コア１０３ａの命令に応じてプログラムＢを起動させると、コア１０３ｂに割り当てられたラインについて、上述したステップＳ１０６〜Ｓ１０８と同様の処理をコア１０３ａと並行して実行する（Ｓ１５１〜Ｓ１５３）。処理が完了すると、完了通知をコア１０３ａに送信する（Ｓ１５４）。
【００３９】
上述したように、第一の実施の形態における画像処理装置１０によれば、連続したスライスを各コア１０３に割り当てるため、スタートコードの検索処理によるオーバーヘッドを低減させることができる。したがって、処理効率を向上させることができる。また、連続したスライスを扱うことで、キャッシュのヒット率の向上が見込まれ、斯かる観点からも処理性能の向上が期待できる。
【００４０】
また、前に処理されたピクチャの処理状況に応じて次に処理されるピクチャに関する割り当て分を決定するため、各コア１０３の間で負荷の均一化を図ることができる。
【００４１】
次に、第二の実施の形態について説明する。図７は、第二の実施の形態の概要を説明するための図である。図７中、図５と同一部分には同一符号を付している。
【００４２】
第二の実施の形態においても、最初のピクチャｐ１に含まれるスライスの各コア１０３への割り当ては、ライン単位で等分される。但し、割り当て分の処理が先に終わったコア１０３は、未処理ライン（スライス）が存在する場合は、当該ラインの処理を行う。図７では、当初、最終ライン（スライスｓｌ１４に係るライン）は、コア１０３ｂに割り当てられていたが、コア１０３ａの処理が先に完了したため、コア１０３ａによって処理された様子が示されている。これによって、各コア１０３に対する負荷が均一化される。
【００４３】
２番目以降のピクチャ内のスライスの割り当てに関しては、直前のピクチャに関する処理状況に基づいて決定（判定）される。具体的には、各コア１０３が直前のピクチャにおいて処理したライン数が割り当てられる。但し、２番目以降のピクチャについても、最初のピクチャと同様の方式で各コア１０３への割り当てを行うようにしてもよい。
【００４４】
以下、画像処理装置１０の処理手順について説明する。図８は、第二の実施の形態における画像処理装置の処理手順を説明するためのフローチャートである。図８において、左側のフローチャートは、コア１０３ａが第二の実施の形態のプログラムＡに基づいて実行する処理を示す。右側のフローチャートは、コア１０３ｂが第二の実施の形態のプログラムＢに基づいて実行する処理を示す。
【００４５】
まず、コア１０３ａによって実行される処理について説明する。
【００４６】
ステップＳ２０１において、処理対象のピクチャ（カレントピクチャ）は、シーケンス内の配列順において最初のピクチャであるか否かを判定する。最初のピクチャである場合（Ｓ２０１でＹｅｓ）、各コア１０３に割り当てるデータ量（ライン数）を算出する（Ｓ２０２）。ここでは、カレントピクチャのライン数Ｌをコア１０３の数で等分することによって割り当てるライン数を算出する。続いて、割り当てたライン数分の連続するラインを各コア１０３に順番に割り当て、それぞれに割り当てられたライン数及び先頭の位置（ライン番号）を共有メモリに記録する（Ｓ２０３）。
【００４７】
続いて、処理状況管理テーブルを初期化する（Ｓ２０４）。図９は、処理状況管理テーブルの構成例を示す図である。図９において、処理状況管理テーブル２００は、一つのピクチャに関する各コア１０３による処理状況を管理するためのテーブルである。したがって、カレントピクチャが変わるたびに、ステップＳ２０４において初期化される。
【００４８】
処理状況管理テーブル２００は、カレントピクチャのラインごとに、ライン番号、処理済みフラグ、コア番号、検索済フラグ、及び先頭アドレス等の項目を有する。ライン番号は、ラインの位置を示す番号である。処理済みフラグは、当該ラインのスライスのデコード処理が開始されたときに、その旨が記録される項目である。コア番号は、当該ラインのデコード処理を実際に担当したコア１０３の識別情報が記録される項目である。検索済フラグは、当該ラインの先頭のスライスのスタートコードの検出されたときに、その旨が記録される項目である。先頭アドレスは、当該ラインの先頭のスライスの開始位置（ビット位置）が記録される項目である。
【００４９】
続いて、他のコア１０３（コア１０３ｂ）に、プログラムＢを起動させる（Ｓ２０５）。
【００５０】
続いて、コア１０３ａに割り当てられたラインのうちの先頭のライン（以下、「先頭ライン」という。）における先頭のスライスのスタートコードを、カレントピクチャのビットストリームを走査することにより検索する（Ｓ２０６）。この際、走査の対象となったラインに関しては、当該ラインの先頭のスライスのスタートコードの検出に基づいて、検索済フラグと先頭アドレスとを処理状況管理テーブル２００に記録する（Ｓ２０７）。続いて、検出されたスタートコードが、先頭ラインの先頭のスライスに係るものであるか否かを判定する（Ｓ２０８）。先頭ラインの先頭スライスのスタートコードでない場合（Ｓ２０８でＮｏ）、ステップＳ２０６以降を繰り返す。先頭ラインの先頭スライスのスタートコードである場合、先頭ラインに関して、処理済みフラグとコア１０３ａのコア番号とを処理状況管理テーブル２００に記録する（Ｓ２０９）。
【００５１】
続いて、先頭ラインに含まれる全てのスライスについて、連続的にデコード処理を実行する（Ｓ２１０）。続いて、処理状況管理テーブル２００より、各ラインの処理済みフラグを読み出し、全てのラインが処理済みとされているか否かを判定する（Ｓ２１２）。処理済みでない（処理が開始されていない）ラインがある場合（Ｓ２１２でＮｏ）、現在処理したラインの次のライン（スライス）が処理済みか否かを、処理済みフラグに基づいて判定する（Ｓ２１３）。処理済みでない場合（Ｓ２１３でＮｏ）、次のラインを処理対象としてステップＳ２０９以降を実行する。この際、ステップＳ２０９において、処理対象のラインについて先頭アドレス及び検索済フラグも処理状況テーブル２００に登録する。
【００５２】
一方、次のラインが処理済みである場合（Ｓ２１３でＹｅｓ）、処理済みフラグに基づいて未処理のライン（以下「未処理ライン」という。）を判定し、未処理ラインの先頭スライスの開始位置の手前まで処理位置を移動させる（Ｓ２１４）。処理位置の移動は、未処理ラインに関して先頭アドレスが処理状況管理テーブル２００に記録されている場合は、当該先頭アドレスに基づいて直接的に行えばよい。先頭アドレスが記録されていない場合は、前方向において先頭アドレスが記録されているラインのうち最も近いラインの先頭アドレスに基づいて走査を開始し、当該先頭スライスの開始位置の手前まで処理位置を移動させればよい。
【００５３】
続いて、移動した位置より、未処理ラインの先頭スライスのスタートコードを検索する（Ｓ２１５）。スタートコードが検出されると、当該未処理ラインについて、検索済フラグと先頭アドレスとを処理状況テーブル２００に記録し（Ｓ２１６）、ステップＳ２０９以降の処理を実行する。
【００５４】
全てのラインに関して処理済みフラグが記録されると（Ｓ２１２でＹｅｓ）、コア１０３ｂからの処理の完了通知を待ち合わせる（Ｓ２１７）。当該通知を受信すると、処理対象のピクチャに関する処理を終了させる。
【００５５】
なお、処理対象のピクチャが最初のピクチャでない場合は（Ｓ２０１でＮｏ）、最初のピクチャの場合とデータ量の割り当て処理が異なる。すなわち、処理状況管理テーブル２００のコア番号を参照し、各コア１０３が処理したライン数を算出する（Ｓ２１８）。各コア１０３が処理したライン数を、それぞれのコア１０３に割り当てるライン数とする。
【００５６】
一方、コア１０３ｂは、コア１０３ａの命令に応じてプログラムＢを起動させると、上述したステップＳ２０６〜Ｓ２１６と同様の処理をコア１０３ａと並行して実行する（Ｓ２５１〜Ｓ２６１）。処理が完了すると、完了通知をコア１０３ａに送信する（Ｓ２６２）。
【００５７】
なお、上記では、各ラインの先頭のスライスの位置のみを処理状況テーブル２００に記録するように説明したが、デコード処理や目的とするスタートコード検索処理の過程において検出された各スライスの開始位置を記録するようにしてもよい。そうすることにより、ステップＳ２１４やＳ２６０において、より細かい位置制御を行うことができる。
【００５８】
図８の処理によって、ピクチャ内のスライスがどのように処理されかについてその一例を図を用いて説明する。図１０は、第二の実施の形態による二つのコアの処理の一例を示す図である。図中において、横軸は、時間の経過を示す。縦軸は、処理を実行するコアの別を示す。なお、図中では、コア１０３ａ、コア１０３ｂをそれぞれ、コアＡ、コアＢとして示している。また、実線の矢印は、デコード処理を示し、点線の矢印は、スタートコードの検索処理を示す。
【００５９】
時間ｔ０〜ｔ７までの期間（以下、「ｔ０−ｔ７」と表記する。）は、最初のピクチャｐ１の処理に該当する。図１０においてピクチャｐ１は、８ラインによって構成される。なお、以下の説明では、図８において対応するステップ番号を（）内に記載する。
【００６０】
まず、ｔ０−ｔ１において、コアＡは、ピクチャｐ１のスライスについて、コアＡとコアＢに対する割り当てを決定する（Ｓ２０２）。ここでは、２等分される。したがって、連続した４ラインずつがそれぞれのコアに割り当てられる。その結果、コアＡの割り当て分の先頭のスライスはスライスｓｌ１となり、コアＢの割り当て分の先頭のスライスはスライスｓｌ７となる。
【００６１】
コアＡは、ｔ１−ｔ６において２ラインのスライスのデコード処理を連続的に実行する（Ｓ２０９〜Ｓ２１３）。この際、処理対象とされた各ラインについて、処理済みフラグ、コア番号、検索済フラグ、及び先頭アドレスが処理状況テーブル２００に登録される。
【００６２】
一方、コアＢは、ｔ１−ｔ２においてスライスｓｌ７のスタートコードを検索する（Ｓ２５１）。この際、走査対象とされた各ラインについて、検索済フラグ及び先頭アドレスが処理状況テーブル２００に登録される（Ｓ２５２）。スタートコードが検出されると、ｔ２−ｔ４において、割り当てられた４ラインのスライスのデコード処理を実行する（Ｓ２５４〜Ｓ２５８）。コアＢは、割り当て分の処理が完了すると、未処理のスライスまで移動する（Ｓ２５９）。この時点で未処理のライン（スライス）は、第３ライン（スライスｓｌ５）である。そこで、コアＢは、ｔ４−ｔ５において、スライスｓｌ５のスタートコードを検索する（Ｓ２６０）。なお、ここでは、デコード処理又はスタートコードの検索処理の過程において検出された各スタートコードの位置（スライスの開始位置）が記録されていることとする。したがって、コアＢは、ｔ１−ｔ２の検索処理の際に記録されているスライスｓｌ４の開始位置よりスライスｓｌ５のスタートコードの検索を開始する。続いて、コアＢは、ｔ５−ｔ７において、コアＡの割り当て分である第３ラインのデコード処理を実行する（Ｓ２５５）。
【００６３】
コアＡは、ｔ５において第３ラインの処理が既に開始されたことを処理済みフラグによって検知すると（Ｓ２１３でＹｅｓ）、未処理のスライスの位置まで移動する（Ｓ２１４）。この時点で未処理のライン（スライス）は、第４ライン（スライスｓｌ６）である。そこで、コアＡは、ｔ５−ｔ７において、ｔ１−ｔ２におけるコアＢによる検索処理の際に処理状況管理テーブル２００に記録されているスライスｓｌ６の開始位置に基づいて、スライスｓｌ６まで直接的に処理位置を移動させ、スライスｓｌ６についてデコード処理を実行する。
【００６４】
以上の結果、ピクチャｐ１については、コアＡは３ライン、コアＢは５ライン処理したことになる。したがって、次のピクチャｐ２については、コアＡには１〜３ラインまでが割り当てられ、コアＢには４〜８ラインまでが割り当てられる（Ｓ２１６）。
【００６５】
上述したように、第二の実施の形態における画像処理装置１０によれば、連続したスライスを各コア１０３に割り当てるため、スタートコードの検索処理によるオーバーヘッドを低減させることができる。したがって、処理効率を向上させることができる。
【００６６】
また、処理が早く完了したコア１０３には、他のコア１０３の割り当て分を処理させるといったように、一つのピクチャ内において割り当て分の動的な変更を行う。したがって、第一の実施の形態に比べて、処理負荷が均等に割り当てられるまでの収束が早くなる可能性が高い。
【００６７】
更に、スタートコードの検索処理やデコード処理の過程において検出されたスライスの開始位置を記録しておくため、他のコア１０３の割り当て分を実行する際に、その開始位置を正確に知ることができ、スタートコードの検索処理を省略することができる。
【００６８】
次に、第三の実施の形態について説明する。図１１は、第三の実施の形態の概要を説明するための図である。図１１中、図７と同一部分には同一符号を付している。
【００６９】
第三の実施の形態では、最初のピクチャｐ１に含まれるスライスの各コア１０３への割り当ては、プロセッサの性能に基づいて行われる。先に割り当て分の処理が終わったコア１０３が、処理が開始されていないラインの処理を行う点は第二の実施の形態と同様である。
【００７０】
２番目以降のピクチャ内のスライスの割り当てに関しては、直前だけでなく前に（過去に）処理された一つ以上のピクチャに関する処理状況に基づいて決定（判定）される。より詳しくは、過去に処理されたピクチャのうち、処理対象のピクチャと同じ画像種別（Ｉピクチャ、Ｂピクチャ、Ｐピクチャの別に基づく種別）のピクチャに関する処理状況に基づいて決定される。過去に同じ種別のピクチャが複数処理されている場合は、時間距離（すなわち、処理対象とされているピクチャとの時間的な近さ）に応じて重み付け平均を算出する。重み付けは、時間距離が近いもの程大きくする。
【００７１】
また、第三の実施の形態では、過去に処理されたピクチャに関する情報に基づいて、処理対象のピクチャにおける割り当て分の開始位置を推定する。この点は、図中において矢印によって表現されている。開始位置の推定についても、処理対象のピクチャと同じ種別のピクチャの情報を用いる。同じ種類のピクチャが複数存在する場合は、時間距離に応じて重み付け平均を算出する。
【００７２】
なお、割り当て分の決定や、開始位置の推定に際し、ピクチャの種別に応じて判断するのは、ピクチャの種別が同じであれば情報量（ビットレート）が近い可能性が高いからである。すなわち、本実施の形態において、過去に処理されたピクチャの中で同じ種別のピクチャは、処理対象のピクチャとの情報量の近さに基づいて選択されるピクチャに相当する。
【００７３】
以下、画像処理装置１０の処理手順について説明する。図１２は、第三の実施の形態における画像処理装置の処理手順を説明するためのフローチャートである。図１２において、左側のフローチャートは、コア１０３ａが第三の実施の形態のプログラムＡに基づいて実行する処理を示す。右側のフローチャートは、コア１０３ｂが第三の実施の形態のプログラムＢに基づいて実行する処理を示す。
【００７４】
まず、コア１０３ａによって実行される処理について説明する。
【００７５】
ステップＳ３０１において、処理対象のピクチャ（カレントピクチャ）は、シーケンス内の配列順において最初のピクチャであるか否かを判定する。最初のピクチャである場合（Ｓ３０１でＹｅｓ）、各コア１０３に割り当てるデータ量（ライン数）を算出し、共有メモリに記録する。コア１０３ａとコア１０３ｂとの性能比（例えば、クロック数の比率）に比例させて割り当てるライン数を算出する。続いて、割り当てたライン数分の連続するラインを各コア１０３に順番に割り当て、それぞれに割り当てられたライン数及び先頭の位置（ライン番号）を共有メモリに記録する（Ｓ３０３）。
【００７６】
続いて、他のコア１０３（コア１０３ｂ）に、プログラムＢを起動させる（Ｓ３０４）。
【００７７】
続いて、割り当てられたライン（スライス）の先頭の開始位置を、カレントピクチャと同じ種別のピクチャであって、同じシーケンスの処理において過去に処理されたピクチャに対する処理状況管理テーブル２００に基づいて推定する（Ｓ３０５）。すなわち、第三の実施の形態では、一つの処理状況管理テーブル２００が使い回されるのではなく、ピクチャごとに作成され、少なくとも一つのシーケンス（ＭＰＥＧデータ）に対する処理が完了するまで保持される。
【００７８】
具体的には、該当する処理状況管理テーブル２００の中から、カレントピクチャに関して割り当てられたライン番号の先頭アドレスを取得し、その値を推定位置とする。該当する処理状況管理テーブル２００が複数存在する場合は、各処理状況管理テーブル２００より、割り当てられたライン番号の先頭アドレスを取得し、その値に対して時間距離に基づいて重み付けを行い、その平均値を推定位置とする。なお、該当する処理状況管理テーブル２００が無い場合は、カレントピクチャの先頭を推定位置とすればよい。
【００７９】
続いて、推定位置の前後を走査することにより、コア１０３ａに割り当てられたラインのうちの先頭のライン（先頭ライン）における先頭のスライスのスタートコードを検索する（Ｓ３０６）。
【００８０】
以降、ステップＳ３０７〜Ｓ３１７は、図８におけるステップＳ２０７〜Ｓ２１７と同様であるため、ここでの説明は省略する。
【００８１】
なお、処理対象のピクチャが最初のピクチャでない場合は（Ｓ３０１でＮｏ）、カレントピクチャと同じ種別のピクチャであって、同じシーケンスの処理において過去に処理されたピクチャに対する処理状況管理テーブル２００に基づいて、各コア１０３に割り当てるライン数を算出する（Ｓ３１８）。
【００８２】
具体的には、該当する処理状況管理テーブル２００のコア番号を参照し、各コア１０３が処理したライン数（又はライン数の比率）を算出する。各コア１０３が処理したライン数（又はライン数の比率）を、それぞれのコア１０３に割り当てるライン数（又はライン数の比率）とする。該当する処理状況管理テーブル２００が複数存在する場合は、各処理状況管理テーブル２００より算出されるコア１０３ごとのライン数（又はライン数の比率）に対して時間距離に基づいて重み付けを行い、その平均値を各コア１０３に割り当てるライン数（又はライン数の比率）とする。
【００８３】
一方、コア１０３ｂは、コア１０３ａの命令に応じてプログラムＢを起動させると、上述したステップＳ３０５〜Ｓ３１６と同様の処理をコア１０３ａと並行して実行する（Ｓ３５１〜Ｓ３６２）。処理が完了すると、完了通知をコア１０３ａに送信する（Ｓ３６３）。
【００８４】
上述したように、第三の実施の形態における画像処理装置１０によれば、連続したスライスを各コア１０３に割り当てるため、スタートコードの検索処理によるオーバーヘッドを低減させることができる。したがって、処理効率を向上させることができる。
【００８５】
また、処理対象のピクチャにおいて割り当てるライン数は、当該ピクチャと種別が同じピクチャの実績値に基づいて判定されるため、より適切な値を算出することができる。
【００８６】
また、過去の実績に基づいて、割り当てられたラインの先頭位置を推定するため、スタートコードの検索処理によるオーバーヘッドをより低減させることができる。
【００８７】
なお、上記各実施の形態では、ＭＰＥＧデータの処理について説明したが、本発明の適用範囲はＭＰＥＧデータだけに限られない。それぞれ開始位置を示すビット列を含む複数の構成要素によって構成されるデータであれば、有効に適用することができる。
【００８８】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００８９】
以上の説明に関し、更に以下の項を開示する。
（付記１）
複数のプロセッサコアを備えた情報処理装置であって、
サイズが固定されない第一の構成要素が連続して配列され、前記第一の構成要素には当該第一の構成要素の開始を示すビット列が含まれる構造を有するデータについて、連続する前記第一の構成要素ごとに、各プロセッサコアの処理の対象を割り当てる割り当て手段を有することを特徴とする情報処理装置。
（付記２）
各プロセッサコアは、割り当てられた連続する前記第一の構成要素のうち、先頭の第一の構成要素についてのみ前記ビット列を前記データの中から検索することを特徴とする付記１記載の情報処理装置。
（付記３）
各プロセッサコアは、前記第一の構成要素の処理の開始時に当該第一の構成要素の処理が開始されたことが識別可能な情報を記録し、
割り当てられた全ての前記第一の構成要素の処理が完了したプロセッサコアは、前記情報が記録されていない未処理の第一の構成要素の処理を行うことを特徴とする付記１又は２記載の情報処理装置。
（付記４）
各プロセッサコアは、前記ビット列の検出に応じて、前記第一の構成要素の開始位置を記録し、
割り当てられた全ての前記第一の構成要素の処理が完了したプロセッサコアは、記録されている前記開始位置に基づいて、前記未処理の第一の構成要素の前記ビット列の検索を行うことを特徴とする付記３記載の情報処理装置。
（付記５）
前記データは、一つ以上の前記第一の構成要素によって構成される第二の構成要素を複数含み、
前記割り当て手段は、前記第二の構成要素ごとに、当該第二の構成要素に含まれる前記第一の構成要素について複数のプロセッサコアへの割り当てを行い、前に処理された前記第二の構成要素に関する各プロセッサコアの処理の状況に基づいて、次に処理される前記第二の構成要素に関する割り当てを決定することを特徴とする付記１乃至４いずれか一項記載の情報処理装置。
（付記６）
前記割り当て手段は、直前に処理された前記第二の構成要素に関して処理が早く完了したプロセッサコアに対して、次の前記第二の構成要素に関する割り当てを増加させることを特徴とする付記５記載の情報処理装置。
（付記７）
前記割り当て手段は、直前に処理された前記第二の構成要素について各プロセッサコアが処理した分と同じ分を次の前記第二の構成要素に関して各プロセッサコアに割り当てることを特徴とする付記３又は４及び５記載の情報処理装置。
（付記８）
前記割り当て手段は、前に処理された複数の前記第二の構成要素に関する各プロセッサコアの処理の状況に基づいて、次に処理される前記第二の構成要素に関する割り当てを判定することを特徴とする付記５記載の情報処理装置。
（付記９）
前記割り当て手段は、前に処理された前記第二の構成要素の中から次に処理される前記第二の構成要素との情報量の近さに基づいて選択される第二の構成要素に関する各プロセッサコアの処理の状況に基づいて、次に処理される前記第二の構成要素に関する割り当てを判定することを特徴とする付記５又は８記載の情報処理装置。
（付記１０）
前記割り当て手段は、前に処理された前記第二の構成要素の中から次に処理される前記第二の構成要素との情報量の近さに基づいて選択される複数の第二の構成要素に関する各プロセッサコアの処理の状況について時間距離に応じた重み付け平均を算出し、該算出結果に基づいて次に処理される前記第二の構成要素に関する割り当てを判定することを特徴とする付記９記載の情報処理装置。
（付記１１）
各プロセッサコアは、前記ビット列の検出に応じて、前記第一の構成要素の開始位置を記録し、前に処理された前記第二の構成要素に関して記録された前記第一の構成要素の開始位置に基づいて、次に処理する前記第二の構成要素において割り当てられた先頭の前記第一の構成要素の位置を判定することを特徴とする付記５記載の情報処理装置。
（付記１２）
各プロセッサコアは、前に処理された前記第二の構成要素の中から次に処理する前記第二の構成要素との情報量の近さに基づいて選択される前記第二の構成要素に関して記録された前記第一の構成要素の開始位置に基づいて、次に処理する前記第二の構成要素において割り当てられた先頭の前記第一の構成要素の位置を判定することを特徴とする付記１１記載の情報処理装置。
（付記１３）
各プロセッサコアは、前に処理された前記第二の構成要素の中から次に処理する前記第二の構成要素との情報量の近さに基づいて選択される複数の前記第二の構成要素に関して記録された前記第一の構成要素の開始位置について時間距離に応じた重み付け平均を算出し、該算出結果に基づいて、次に処理する前記第二の構成要素において割り当てられた先頭の前記第一の構成要素の位置を判定することを特徴とする付記１２記載の情報処理装置。
（付記１４）
複数のプロセッサコアを備えた情報処理装置が実行する情報処理方法であって、
サイズが固定されない第一の構成要素が連続して配列され、前記第一の構成要素には当該第一の構成要素の開始を示すビット列が含まれる構造を有するデータについて、連続する前記第一の構成要素ごとに、各プロセッサコアの処理の対象を割り当てる割り当て手順を有することを特徴とする情報処理方法。
（付記１５）
各プロセッサコアは、割り当てられた連続する前記第一の構成要素のうち、先頭の第一の構成要素についてのみ前記ビット列を前記データの中から検索することを特徴とする付記１４記載の情報処理方法。
（付記１６）
各プロセッサコアは、前記第一の構成要素の処理の開始時に当該第一の構成要素の処理が開始されたことが識別可能な情報を記録し、
割り当てられた全ての前記第一の構成要素の処理が完了したプロセッサコアは、前記情報が記録されていない未処理の第一の構成要素の処理を行うことを特徴とする付記１４又は１５記載の情報処理方法。
（付記１７）
各プロセッサコアは、前記ビット列の検出に応じて、前記第一の構成要素の開始位置を記録し、
割り当てられた全ての前記第一の構成要素の処理が完了したプロセッサコアは、記録されている前記開始位置に基づいて、前記未処理の第一の構成要素の前記ビット列の検索を行うことを特徴とする付記１６記載の情報処理方法。
（付記１８）
前記データは、一つ以上の前記第一の構成要素によって構成される第二の構成要素を複数含み、
前記割り当て手順は、前記第二の構成要素ごとに、当該第二の構成要素に含まれる前記第一の構成要素について複数のプロセッサコアへの割り当てを行い、前に処理された前記第二の構成要素に関する各プロセッサコアの処理の状況に基づいて、次に処理される前記第二の構成要素に関する割り当てを決定することを特徴とする付記１４乃至１７いずれか一項記載の情報処理方法。
（付記１９）
前記割り当て手順は、直前に処理された前記第二の構成要素に関して処理が早く完了したプロセッサコアに対して、次の前記第二の構成要素に関する割り当てを増加させることを特徴とする付記１８記載の情報処理方法。
（付記２０）
前記割り当て手順は、直前に処理された前記第二の構成要素について各プロセッサコアが処理した分と同じ分を次の前記第二の構成要素に関して各プロセッサコアに割り当てることを特徴とする付記１６又は１７及び１８記載の情報処理方法。
（付記２１）
前記割り当て手順は、前に処理された複数の前記第二の構成要素に関する各プロセッサコアの処理の状況に基づいて、次に処理される前記第二の構成要素に関する割り当てを判定することを特徴とする付記１８記載の情報処理方法。
（付記２２）
前記割り当て手順は、前に処理された前記第二の構成要素の中から次に処理される前記第二の構成要素との情報量の近さに基づいて選択される第二の構成要素に関する各プロセッサコアの処理の状況に基づいて、次に処理される前記第二の構成要素に関する割り当てを判定することを特徴とする付記１８又は２１記載の情報処理方法。
（付記２３）
前記割り当て手順は、前に処理された前記第二の構成要素の中から次に処理される前記第二の構成要素との情報量の近さに基づいて選択される複数の第二の構成要素に関する各プロセッサコアの処理の状況について時間距離に応じた重み付け平均を算出し、該算出結果に基づいて次に処理される前記第二の構成要素に関する割り当てを判定することを特徴とする付記２２記載の情報処理方法。
（付記２４）
各プロセッサコアは、前記ビット列の検出に応じて、前記第一の構成要素の開始位置を記録し、前に処理された前記第二の構成要素に関して記録された前記第一の構成要素の開始位置に基づいて、次に処理する前記第二の構成要素において割り当てられた先頭の前記第一の構成要素の位置を判定することを特徴とする付記１８記載の情報処理方法。
（付記２５）
各プロセッサコアは、前に処理された前記第二の構成要素の中から次に処理する前記第二の構成要素との情報量の近さに基づいて選択される前記第二の構成要素に関して記録された前記第一の構成要素の開始位置に基づいて、次に処理する前記第二の構成要素において割り当てられた先頭の前記第一の構成要素の位置を判定することを特徴とする付記２４記載の情報処理方法。
（付記２６）
各プロセッサコアは、前に処理された前記第二の構成要素の中から次に処理する前記第二の構成要素との情報量の近さに基づいて選択される複数の前記第二の構成要素に関して記録された前記第一の構成要素の開始位置について時間距離に応じた重み付け平均を算出し、該算出結果に基づいて、次に処理する前記第二の構成要素において割り当てられた先頭の前記第一の構成要素の位置を判定することを特徴とする付記２５記載の情報処理方法。
【図面の簡単な説明】
【００９０】
【図１】ＭＰＥＧデータの構造を示す図である。
【図２】本実施の形態の基本的な考え方を説明するための図である。
【図３】本実施の形態の基本的な考え方を説明するための図である。
【図４】本発明の実施の形態における画像処理装置のハードウェア構成例を示す図である。
【図５】第一の実施の形態の概要を説明するための図である。
【図６】第一の実施の形態における画像処理装置の処理手順を説明するためのフローチャートである。
【図７】第二の実施の形態の概要を説明するための図である。
【図８】第二の実施の形態における画像処理装置の処理手順を説明するためのフローチャートである。
【図９】処理状況管理テーブルの構成例を示す図である。
【図１０】第二の実施の形態による二つのコアの処理の一例を示す図である。
【図１１】第三の実施の形態の概要を説明するための図である。
【図１２】第三の実施の形態における画像処理装置の処理手順を説明するためのフローチャートである。
【符号の説明】
【００９１】
１０        画像処理装置
１０１      補助記憶装置
１０２      メモリ装置
１０３、１０３ａ、１０３ｂ      コア（プロセッサコア）
Ｂ          バス
【図１】
2009048469.tif 000003
【図２】
2009048469.tif 000004
【図３】
2009048469.tif 000005
【図４】
2009048469.tif 000006
【図５】
2009048469.tif 000007
【図６】
2009048469.tif 000008
【図７】
2009048469.tif 000009
【図８】
2009048469.tif 000010
【図９】
2009048469.tif 000011
【図１０】
2009048469.tif 000012
【図１１】
2009048469.tif 000013
【図１２】
2009048469.tif 000014