(57)【要約】      （修正有）【課題】作業の演算特徴に基づいて作業を複数の演算部に分配して処理するプロセス並列処理装置及び方法を提供する。【解決手段】プロセス並列処理装置１００は、プロセスの複数のタスクを構成する作業を演算する複数の演算部１１０と、前記作業の演算特性に基づいて前記作業を複数の演算部１１０それぞれに分配する分配部１２０とを備え、前記複数の演算部１１０は、コントロール演算によって作業を処理する第１演算部１１１と大容量演算によって作業を処理する第２演算部１１２とを備える。【選択図】図１
2014206979.tif 000002
【特許請求の範囲】
【請求項１】
プロセスの複数のタスクを構成する作業を演算する複数の演算部と、
前記作業の演算特性に基づいて前記作業を複数の演算部それぞれに分配する分配部と、
を備え、
前記複数の演算部は、コントロール演算によって作業を処理する第１演算部と大容量演算によって作業を処理する第２演算部を備えることを特徴とするプロセス並列処理装置。
【請求項２】
前記分配部は、前記作業を演算特性に応じて分類し、前記分類された作業を前記第１演算部または前記第２演算部にマッピングすることを特徴とする請求項１に記載のプロセス並列処理装置。
【請求項３】
前記コントロール演算は、特定アプリケーションを実行するためのデータアドレス、分岐、ハードウェア装置の制御またはスケジューリングを含み、
前記大容量演算は、複数の数学演算を含むことを特徴とする請求項１または２に記載のプロセス並列処理装置。
【請求項４】
前記分配部は、前記第１演算部と前記第２演算部それぞれの演算結果を相互間に提供できるように前記第１演算部または前記第２演算部に作業を分配することを特徴とする請求項１乃至３のいずれか一項に記載のプロセス並列処理装置。
【請求項５】
前記第１演算部または前記第２演算部の演算結果の間に同期化のために先に作業演算が完了した第１演算部または前記第２演算部の演算結果を格納するバッファ部をさらに備えることを特徴とする請求項１乃至３のいずれか一項に記載のプロセス並列処理装置。
【請求項６】
前記分配部は、前記複数のタスクの間に従属関係が存在しない場合、前記第１演算部及び前記第２演算部がタスク単位に応じて処理するように作業を分配することを特徴とする請求項１乃至５のいずれか一項に記載のプロセス並列処理装置。
【請求項７】
前記分配部は、前記複数のタスクの間に従属関係が存在する場合、前記第１演算部及び前記第２演算部が従属関係に応じてグループ化されたタスクグループ単位に応じて処理するように作業を分配することを特徴とする請求項１乃至５のいずれか一項に記載のプロセス並列処理装置。
【請求項８】
前記分配部は、タスクでデータの流れに基づいて作業を分割し、分割された作業間にフィードバックが発生しないように前記第１演算部または前記第２演算部に作業を分配することを特徴とする請求項１乃至７のいずれか一項に記載のプロセス並列処理装置。
【請求項９】
プロセスの複数のタスクを構成する作業の演算特性に基づいて前記作業を複数の演算部それぞれに分配するステップと、
複数の演算部がそれぞれ分配された作業を演算するステップと、
を含み、
前記複数の演算部は、コントロール演算によって作業を処理する第１演算部と大容量演算によって作業を処理する第２演算部を備えることを特徴とするプロセス並列処理方法。
【請求項１０】
前記分配するステップは、前記作業を演算特性に応じて分類し、前記分類された作業を前記第１演算部または前記第２演算部にマッピングすることを特徴とする請求項９に記載のプロセス並列処理方法。
【請求項１１】
前記コントロール演算は、特定アプリケーションを実行するためのデータアドレス、分岐、ハードウェア方法の制御またはスケジューリングを含み、
前記大容量演算は、複数の数学演算を含むことを特徴とする請求項９または１０に記載のプロセス並列処理方法。
【請求項１２】
前記分配するステップは、前記第１演算部と前記第２演算部それぞれの演算結果を相互間に提供できるように前記第１演算部または前記第２演算部に作業を分配することを特徴とする請求項９乃至１１のいずれか一項に記載のプロセス並列処理方法。
【請求項１３】
前記分配するステップは、前記複数のタスクの間に従属関係が存在しない場合、前記第１演算部及び前記第２演算部がタスク単位に応じて処理するように作業を分配することを特徴とする請求項９乃至１２のいずれか一項に記載のプロセス並列処理方法。
【請求項１４】
前記分配するステップは、前記複数のタスクの間に従属関係が存在する場合、前記第１演算部及び前記第２演算部が従属関係に応じてグループ化されたタスクグループ単位に応じて処理するように作業を分配することを特徴とする請求項９乃至１２のいずれか一項に記載のプロセス並列処理方法。
【請求項１５】
前記分配するステップは、タスクでデータの流れに基づいて作業を分割し、分割された作業間にフィードバックが発生しないように前記第１演算部または前記第２演算部に作業を分配することを特徴とする請求項９乃至１４のいずれか一項に記載のプロセス並列処理方法。
【請求項１６】
プログラムが記録されたコンピュータで読み出し可能な記録媒体であって、
プロセッサによって前記プログラムが実行されると、請求項９乃至１４のいずれか一項に記載の方法を実施する、
コンピュータで読み出し可能な記録媒体。
【請求項１７】
前記コントロール演算は、映像処理アプリケーションを実行するためのデータアドレス、分岐、ハードウェア装置の制御またはスケジューリングを含み、
前記大容量演算は、複数の数学演算を含み、
前記映像処理アプリケーションは、一定サイズのブロック単位の従属性を含むことを特徴とする請求項７に記載のプロセス並列処理装置。
【請求項１８】
前記コントロール演算は、映像処理アプリケーションを実行するためのデータアドレス、分岐、ハードウェア装置の制御またはスケジューリングを含み、
前記大容量演算は、複数の数学演算を含み、
前記映像処理アプリケーションは、一定サイズのピクセル単位の従属性を含むことを特徴とする請求項７に記載のプロセス並列処理装置。
【請求項１９】
プロセスの複数のタスクを構成する作業を演算する複数の演算部と、
前記作業の演算特性に基づいて前記作業を複数の演算部それぞれに分配する分配部と、
を備え、
前記複数の演算部は、コントロール演算によって第１演算部に分配された作業を処理する第１演算部と大容量演算によって第２演算部に分配された作業を処理する第２演算部を備え、
それぞれの作業は第１演算部または第２演算部に分配されることを特徴とするプロセス並列処理装置。
【請求項２０】
前記分配部は、プロセスがビデオデコーダプロセスである場合、ビデオデコーダを予測タスク、変形タスク、及びループフィルタタスクに設定することを特徴とする請求項１９に記載のプロセス並列処理装置。
【請求項２１】
前記分配部は、前記予測タスクでモード決定作業とモーションベクトル予測作業を前記第１演算部に分配し、サブ画素補間作業を前記第２演算部に分配することを特徴とする請求項２０に記載のプロセス並列処理装置。
【請求項２２】
前記分配部は、前記変形タスクで量子化パラメータ生成作業と変形モード制御作業を前記第１演算部に分配し、逆量子化作業と逆変換作業を前記第２演算部に分配することを特徴とする請求項２０に記載のプロセス並列処理装置。
【請求項２３】
前記分配部は、前記ループフィルタタスクでフィルタモード決定作業と制御パラメータ生成作業を前記第１演算部に分配し、追加／平均作業とループフィルタリング作業を前記第２演算部に分配することを特徴とする請求項２０に記載のプロセス並列処理装置。
【請求項２４】
プロセスの複数のタスクを構成する作業の演算特性に基づいて前記作業を複数の演算部それぞれに分配するステップと、
複数の演算部がそれぞれ分配された作業を演算するステップと、
を含み、
前記複数の演算部は、コントロール演算によって第１演算部に分配された作業を処理する第１演算部と大容量演算によって第２演算部に分配された作業を処理する第２演算部を備え、
それぞれの作業は、第１演算部または第２演算部に分配されることを特徴とするプロセス並列処理方法。
【請求項２５】
前記分配するステップは、プロセスがビデオデコーダプロセスである場合、ビデオデコーダを予測タスク、変形タスク、及びループフィルタタスクに設定することを特徴とする請求項２４に記載のプロセス並列処理方法。
【請求項２６】
前記分配するステップは、前記予測タスクでモード決定作業とモーションベクトル予測作業を前記第１演算部に分配し、サブ画素補間作業を前記第２演算部に分配することを特徴とする請求項２５に記載のプロセス並列処理方法。
【請求項２７】
前記分配するステップは、前記変形タスクで量子化パラメータ生成作業と変形モード制御作業を前記第１演算部に分配し、逆量子化作業と逆変換作業を前記第２演算部に分配することを特徴とする請求項２５に記載のプロセス並列処理方法。
【請求項２８】
前記分配するステップは、前記ループフィルタタスクでフィルタモード決定作業と制御パラメータ生成作業を前記第１演算部に分配し、追加／平均作業とループフィルタリング作業を前記第２演算部に分配することを特徴とする請求項２５に記載のプロセス並列処理方法。
【請求項２９】
プログラムが記録されたコンピュータで読み出し可能な記録媒体であって、
プロセッサによって前記プログラムが実行されると、請求項２４乃至２８のいずれか一項に記載の方法を実施する、
コンピュータで読み出し可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の一実施形態はプロセス並列処理装置及び方法に関し、詳細には、作業の演算特徴に基づいて作業を複数の演算部に分配して処理する装置及び方法に関する。
【背景技術】
【０００２】
ビデオやマルチメディアのアプリケーションがサポートすべき解像度が高くなるにつれて、従来における単一演算装置のプロセス処理方法は性能上その限界に達している。
【０００３】
したがって、最近では複数の演算装置にプロセスを分割して処理する方法を用いる。
【０００４】
従来のプロセス分割処理方法として、プロセスを構成するタスク（ｔａｓｋ）を一定単位に分割して処理する方法、プロセスが処理するデータを分割して処理する方法がある。
【０００５】
しかし、タスクを分割して処理する方法はプロセスで分割できるタスクの数が限定されているため、一定規模以上の演算装置を用いてプロセスを分割できない限界があった。
【０００６】
また、データを分割して処理する方法は、分割されたデータを処理するそれぞれの演算装置が全てアルゴリズムを行わなければならないため、複数の演算装置にリソースが割り当てられて多くのリソースを使用するという短所があった。
【０００７】
したがって、リソースの増加なしに複数の演算装置でプロセス処理するプロセス並列処理方法が求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、リソース増加なしに複数の演算装置にプロセス処理する装置及び方法を提供することである。
【課題を解決するための手段】
【０００９】
一実施形態に係るプロセス並列処理装置は、プロセスの複数のタスクを構成する作業を演算する複数の演算部と、前記作業の演算特性に基づいて前記作業を複数の演算部それぞれに分配する分配部とを備え、前記複数の演算部は、コントロール演算によって作業を処理する第１演算部と大容量演算によって作業を処理する第２演算部を備える。
【００１０】
一実施形態に係るプロセス並列処理装置の分配部は、前記作業を演算特性に応じて分類し、前記分類された作業を第１演算部または第２演算部にマッピングしてもよい。
【００１１】
一実施形態に係るプロセス並列処理装置の分配部は、前記第１演算部と第２演算部それぞれの演算結果を相互間に提供できるように前記第１演算部または第２演算部に作業を分配してもよい。
【００１２】
一実施形態に係るプロセス並列処理装置は、前記第１演算部または第２演算部の演算結果の間に同期化のために先に作業演算が完了した第１演算部または第２演算部の演算結果を格納するバッファ部をさらに備えてもよい。
【００１３】
一実施形態に係るプロセス並列処理装置の分配部は、前記複数のタスクの間に従属関係が存在しない場合、前記第１演算部及び第２演算部がタスク単位に応じて処理するように作業を分配してもよい。
【００１４】
一実施形態に係るプロセス並列処理装置の分配部は、前記複数のタスクの間に従属関係が存在する場合、前記第１演算部及び第２演算部が従属関係に応じてグループ化されたタスクグループ単位に応じて処理するように作業を分配してもよい。
【００１５】
一実施形態に係るプロセス並列処理装置の分配部は、タスクでデータの流れに基づいて作業を分割し、分割された作業間にフィードバックが発生しないように第１演算部または第２演算部に作業を分配してもよい。
【００１６】
一実施形態に係るプロセス並列処理方法は、プロセスの複数のタスクを構成する作業の演算特性に基づいて前記作業を複数の演算部それぞれに分配するステップと、複数の演算部がそれぞれ分配された作業を演算するステップとを含み、前記複数の演算部は、コントロール演算によって作業を処理する第１演算部と大容量演算によって作業を処理する第２演算部を備える。
【００１７】
一実施形態に係るプロセス並列処理装置は、プロセスの複数のタスクを構成する作業を演算する複数の演算部と、前記作業の演算特性に基づいて前記作業を複数の演算部それぞれに分配する分配部とを備え、前記複数の演算部は、コントロール演算によって第１演算部に分配された作業を処理する第１演算部と大容量演算によって第２演算部に分配された作業を処理する第２演算部を備え、それぞれの作業は第１演算部または第２演算部に分配されてもよい。
【発明の効果】
【００１８】
本発明によると、制御演算の特性を有する作業と、大容量の演算特性を有する作業を互いに異なる演算部で演算することによって、従来の演算部よりも少ないリソースで効率よく作業を行うことができる。すなわち、本発明の一実施形態によると、リソースの増加を防止しつつ、演算装置の個数の増加に応じて演算速度を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】一実施形態に係るプロセス並列処理装置の構造を示す図である。
【図２】一実施形態に作業を分類したタスクの一例である。
【図３】一実施形態に係る演算部がタスク単位に応じて作業を演算する過程の一例である。
【図４】一実施形態に係る分配部がビデオデコーダのタスクを構成する作業を分配した一例である。
【図５】一実施形態に係る演算部がタスクグループ単位に応じて作業を演算する過程の一例である。
【図６】一実施形態に係る演算部がバッファ部を用いて作業を演算する過程の一例である。
【図７】一実施形態に係る演算部が外部データを受信して作業を演算する過程の一例である。
【図８】一実施形態に係る演算部が映像のブロックまたはピクセル単位に応じて作業を演算する過程の一例である。
【図９】一実施形態に係るプロセス並列処理装置の一例である。
【図１０】一実施形態に係るプロセス並列処理方法を示す図である。
【発明を実施するための形態】
【００２０】
以下、実施形態を添付する図面を参照しながら詳細に説明する。
【００２１】
図１は、一実施形態に係るプロセス並列処理装置の構造を示す図である。
【００２２】
図１を参考すると、プロセス並列処理装置１００は、複数の演算部１１０、分配部１２０及びバッファ部１３０を備える。
【００２３】
複数の演算部１１０はそれぞれプロセスの複数のタスク（ｔａｓｋ）を構成する作業を演算してもよい。
【００２４】
ここで、複数の演算部１１０は、コントロール演算によって作業を処理する第１演算部１１１と大容量演算によって作業を処理する第２演算部１１２を備える。例えば、第１演算部１１１はＲＩＳＣプロセッサであり、第２演算部１１２はＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）であるか、ＭＩＭＤ（Ｍｕｌｔｉｐｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）であってもよい。
【００２５】
ここで、複数の演算部１１０は、複数の第１演算部１１１及び複数の第２演算部１１２を備えてもよい。例えば、プロセスで演算特性が大容量演算である作業が多い場合、プロセス並列処理装置１００は複数の第２演算部１１２を備えてもよい。
【００２６】
また、作業の演算特性がコントロール演算または大容量演算のうちの１つではない場合、複数の演算部１１０は、作業の演算特性に対応する別途の演算部をさらに備えてもよい。
【００２７】
また、第１演算部１１１と第２演算部１１２はそれぞれの演算結果を相互間に提供してもよい。例えば、第１演算部１１１は、演算結果を第２演算部１１２やバッファ部１３０に提供し、第２演算部１１２から提供された演算結果やバッファ部１３０に格納された演算結果を用いて次のタスク作業を演算してもよい。また、第２演算部１１２も演算結果を第１演算部１１１やバッファ部１３０に提供し、第１演算部１１１から提供された演算結果やバッファ部１３０に格納された演算結果を用いて次のタスクの作業を演算してもよい。
【００２８】
分配部１２０は、作業の演算特性に基づいて作業を複数の演算部１１０それぞれに分配してもよい。
【００２９】
ここで、分配部１２０は作業を演算特性に応じて分類し、分類された作業を第１演算部１１１または第２演算部１１２にマッピングしてもよい。具体的に、分配部１２０は、演算特性がコントロール演算であるか大容量演算であるかに応じて作業を分類してもよい。ここで、コントロール演算は、特定アプリケーションを実行するためのデータアドレス、分岐、ハードウェア装置の制御またはスケジューリングを含む演算特徴を有し、大容量演算は、ＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）のように複数の数学演算を行う演算特徴を有する。
【００３０】
また、複数のタスクの間に従属関係が存在しない場合、分配部１２０は、第１演算部１１１及び第２演算部１１２がタスク単位に応じて演算するように作業を分配してもよい。
【００３１】
演算部１１０がタスク単位に応じて作業を演算する過程について以下の図３を参照して詳細に説明する。
【００３２】
そして、複数のタスクの間に従属関係が存在する場合、分配部１２０は、第１演算部１１１及び第２演算部１１２が従属関係に応じてグループ化されたタスクグループ単位に応じて演算するよう作業を分配してもよい。
【００３３】
タスクの間に従属関係が存在し、第１演算部１１１の演算結果を用いる第２演算部１１２の演算結果が第１演算部１１１にフィードバックされる場合、第１演算部１１１と第２演算部１１２が並列に作業を演算されないこともある。
【００３４】
したがって、分配部１２０は、複数のタスクの間に従属関係が存在する場合、従属関係に応じてタスクをグループ化し、複数の演算部１１０がグループ化されたタスクグループ単位に応じて演算するように作業を分配してもよい。
【００３５】
演算部１１０がタスクグループ単位に応じて作業を演算する過程について以下の図５を参照して詳細に説明する。
【００３６】
また、ビデオアプリケーションを含む映像処理アプリケーションは、一定サイズのブロックまたはピクセル単位で相互間の従属関係が存在してもよい。ここで、分配部１２０は、第１演算部１１１及び第２演算部１１２が映像のブロック、またはピクセル単位に応じて演算するように作業を分配してもよい。
【００３７】
演算部１１０が映像のブロックまたはピクセル単位に応じて作業を演算する過程について以下の図８を参照して詳細に説明する。
【００３８】
そして、分配部１２０は、データの流れに基づいてタスクを複数の作業に分割してもよい。ここで、分配部１２０は、第１演算部１１１に分配した作業の間に演算結果のフィードバックが発生しないように作業を分割し、第２演算部１１２に分配した作業の間に演算結果のフィードバックが発生しないように作業を分割してもよい。
【００３９】
次に、分配部１２０は、分割された作業の階層（ｈｉｅｒａｒｃｈｙ）を設定してもよい。ここで、階層は、分割された作業を演算する演算部１１０の従属関係を示してもよい。例えば、第２演算部１１２に分配された作業が第１演算部１１１に分配された作業の演算結果を用いる場合、第１演算部１１１はマスタ（ｍａｓｔｅｒ）になり、第２演算部１１２は第１演算部１１１のスレーブ（ｓｌａｖｅ）になる。ここで、第２演算部１１２は、第２演算部１１２に分配した作業の演算に必要な場合、第２演算部１１２のスレーブ演算部を用いる。例えば、プロセス並列処理装置１００は第３演算部をさらに含み、第３演算部を第２演算部１１２のスレーブ演算部に設定してもよい。そして、追加的な演算の加速が必要な場合、第３演算部は第２演算部１１２の結果を用いて後続演算を行ってもよい。例えば、第３演算部は、コプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）のようなハードウェア加速器であってもよい。
【００４０】
その次に、分配部１２０は、第１演算部１１１と第２演算部１１２がそれぞれの演算結果を相互間に提供できるように第１演算部１１１または第２演算部１１２に作業を分配してもよい。具体的に、分配部１２０は、第１演算部１１１と第２演算部１１２との間の送信チャネルを作って第１演算部１１１と第２演算部１１２がそれぞれの演算結果を相互間に提供できるようにする。
【００４１】
最後に、分配部１２０は、第１演算部１１１と第２演算部１１２に分配した作業をパイプライン形式で並列実行させてもよい。
【００４２】
タスクの特性、タスクで演算部１１０に分配された作業の個数、及び作業の演算量に応じて演算部１１０がタスクを構成する作業の演算を行う時間が互いに異なってもよい。
【００４３】
例えば、第１演算部１１１が特定タスクの演算を終了した時点で、第２演算部１１２が他のタスクの演算を行ってもよい。ここで、第１演算部１１１の演算結果は第２演算部１１２が特定タスクを演算するとき必要であるため、第１演算部１１１は、第２演算部１１２が特定タスクを演算するまで待機する同期化オーバーヘッドが発生することがある。
【００４４】
バッファ部１３０は、先に作業演算が完了した第１演算部１１１または第２演算部１１２の演算結果を格納することによって、第１演算部１１１または第２演算部１１２の演算結果の間に同期化のため誤記化オーバーヘッドの発生を防止する。ここで、後ほど演算が完了した第１演算部１１１または第２演算部１１２は、バッファ部１３０が格納した演算結果を用いて作業を演算してもよい。
【００４５】
そして、バッファ部１３０は、先に作業演算が完了した第１演算部１１１または第２演算部１１２の演算結果を臨時に格納するバッファを含んでもよい。また、バッファ部１３０は、複数の演算部１１０それぞれに対応するメモリを含んでもよい。ここで、メモリは、対応する演算部１１０で用いられるデータと演算結果を格納してもよい。
【００４６】
バッファ部１３０の動作は以下の図６を参照して詳細に説明する。
【００４７】
また、ビデオ復号化のためのデータが外部に存在する場合、演算部１１０のうち少なくとも１つが外部データ送信装置から演算のための外部データを受信しなければならないこともある。ここで、外部データを受信する演算部は、外部データを受信する時間だけ当該タスクの演算を遅延させなければならないため、外部データを受信しない演算部とタスクを行う時間が互いに異なる。
【００４８】
よって、外部データを受信する演算部と外部データを受信しない演算部との間の同期化のために同期化オーバーヘッドが発生することがある。
【００４９】
したがって、第１演算部１１１または第２演算部１１２が外部データ送信装置から演算のための外部データを受信しなければならない場合、バッファ部１３０が外部データを受信しない演算部の演算結果を格納することで同期化オーバーヘッドを防止することができる。そして、バッファ部１３０は、外部データを受信した演算部に格納した演算結果を提供してもよい。
【００５０】
演算部が外部データを受信しなければならない場合、バッファ部１３０の動作について以下の図７を参照して詳細に説明する。
【００５１】
図２は、一実施形態に作業を分類したタスクの一例である。
【００５２】
プロセスは、図２に示すように複数のタスクで構成される。また、それぞれのタスクは、特定アプリケーションを実行するためのデータアドレス、分岐、ハードウェア装置の制御、またはスケジューリングを行う作業とＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）のように複数の数学演算を行う作業で構成される。
【００５３】
ここで、特定アプリケーションを実行するためのデータアドレス、分岐、ハードウェア装置の制御またはスケジュールリングのように演算特性がコントロール演算である作業に最適化した演算部と複数の数学演算を含んで、演算特性が大容量演算である作業に最適化した演算部は構成やスペックに差がありえる。
【００５４】
例えば、コントロール演算に最適化した第１演算部１１１に大容量演算を要求する場合、大容量演算に最適化した第２演算部１１２はもちろん、特定演算に最適化されず全ての演算を行うことのできる一般の演算部よりも演算速度が遅いこともある。一方、第１演算部１１１にコントロール演算を要求する場合、他の演算部よりも演算速度が速いこともある。
【００５５】
すなわち、コントロール演算に最適化した第１演算部１１１と大容量演算に最適化した第２演算部１１２はそれぞれコントロール演算特性を有する作業と、大容量演算特性を有する作業を演算する場合、一般の演算部よりも少ないリソースで効率よく作業を行うことができる。
【００５６】
したがって、プロセス並列処理装置１００は、図２に示すように１つのタスクに含まれた作業を演算特性がコントロール演算である作業２１０と演算特性が大容量演算である作業２２０とに分類してもよい。
【００５７】
次に、プロセス並列処理装置１００は、作業２１０を第１演算部１１１に分配し、作業２２０を第２演算部１１１に分配し、第１演算部１１１が作業２１０を演算して第２演算部１１１が作業２２を演算するようにする。
【００５８】
ここで、第１演算部１１１と第２演算部１１２はそれぞれコントロール演算特性を有する作業２１０と、大容量演算特性を有する作業２２０を演算する場合、一般の演算部よりも少ないリソースで効率よく作業を行うことができる。したがって、プロセス並列処理装置１００は、リソース増加を防止しながら演算装置の個数の増加により演算速度を向上させることができる。
【００５９】
図３は、一実施形態に係る演算部がタスク単位に応じて作業を演算する過程の一例である。
【００６０】
プロセス並列処理装置１００の分配部１２０は、１つのタスクを演算特性に応じて複数の演算部１１０にマッピングするため、複数の演算部１１０が作業を並列演算する場合にスケジューリングが必要なことがある。
【００６１】
具体的に、分配部１２０は、タスクを構成する作業のうち演算特性がコントロール演算である作業３１０を第１演算部１１１に分配し、演算特性が大容量演算である作業３２０を第２演算部１１２に分配してもよい。
【００６２】
ここで、分配部１２０は、第１演算部１１１が特定タスクの演算を終了した後、第２演算部１１２が特定タスクの演算を行うようにし、第１演算部１１１は次のタスクの演算を行うよう作業の実行順序をスケジューリングしてもよい。
【００６３】
例えば、図３を参照すると、第１演算部１１１がまずタスク１を構成する作業のうち演算特性がコントロール演算である作業３１０の演算を行ってもよい。
【００６４】
そして、第２演算部１１２は、第１演算部１１１が演算を終了すると、第１演算部１１１の演算結果を用いてタスク１を構成する作業のうち演算特性が大容量演算である作業３２０の演算を行ってもよい。ここで、第１演算部１１１は、タスク２を構成する作業のうち演算特性がコントロール演算である作業の演算を行ってもよい。
【００６５】
すなわち、第１演算部１１１と第２演算部１１２はそれぞれタスクを構成している作業のうち一部のみを演算するため、第１演算部１１１と第２演算部１１２がタスクを演算するために必要な時間は減少する。また、第１演算部１１１と第２演算部１１２は、それぞれ演算特性に最適化した演算装置であるため、全ての演算を行うことのできる汎用演算部が当該の作業を演算するよりも早く演算できる。または、汎用演算部よりもスペックの低い第１演算部１１１と第２演算部１１２で汎用演算部と類似の速度で作業を演算できる。
【００６６】
図４は、一実施形態に係る分配部がビデオデコーダのタスクを構成する作業を分配した一例である。
【００６７】
ビデオデコーダは、図４に示すように予測（ｐｒｅｄｉｃｔｉｏｎ）、変形（ｔｒａｎｓｆｏｒｍ）、及びループフィルタ（ｌｏｏｐ  ｆｉｌｔｅｒ）という３つのタスクを含んでもよい。
【００６８】
ここで、分配部１２０は、演算特性に応じて予測タスクでモード決定（ｍｏｄｅ  ｄｅｔｅｒｍｉｎａｔｉｏｎ）作業とモーションベクトル予測（ｍｏｔｉｏｎ  ｖｅｃｔｏｒ  ｐｒｅｄｉｃｔｉｏｎ）作業を第１演算部１１１に分配し、サブ画素補間（Ｓｕｂ−ｐｅｌ  Ｉｎｔｅｒｐｏｌａｔｉｏｎ）作業を第２演算部１１２に分配してもよい。
【００６９】
また、分配部１２０は、演算特性に応じて変形タスクで量子化パラメータ（Ｑｕａｎｔｉｚａｔｉｏｎ  Ｐａｒａｍｅｔｅｒ）生成作業と変形モード制御（Ｔｒａｎｓｆｏｒｍ  Ｍｏｄｅ  Ｃｏｎｔｒｏｌ）作業を第１演算部１１１に分配し、逆量子化（Ｉｎｖｅｒｓｅ  ｑｕａｎｔｉｚａｔｉｏｎ）作業と逆変換（Ｉｎｖｅｒｓｅ  ｔｒａｎｓｆｏｒｍ）作業を第２演算部１１２に分配してもよい。
【００７０】
そして、分配部１２０は、演算特性に応じてループフィルタタスクでフィルタモード決定（Ｆｉｌｔｅｒ  ｍｏｄｅ  ｄｅｔｅｒｍｉｎａｔｉｏｎ）作業と制御パラメータ生成（Ｃｏｎｔｒｏｌ  ｐａｒａｍｅｔｅｒ  ｇｅｎｅｒａｔｉｏｎ）作業を第１演算部１１１に分配し、追加／平均（Ａｄｄ／ａｖｅｒａｇｅ）作業とループフィルタリング（Ｌｏｏｐ  ｆｉｌｔｅｒｉｎｇ）作業を第２演算部１１２に分配してもよい。
【００７１】
ここで、第１演算部１１２に分配された作業は大容量演算のためのパラメータと動作モード及びデータを生成する作業であり、第２演算部１１２に分配された作業は第１演算部１１２が生成したパラメータを用いて大容量演算を行う作業である。
【００７２】
したがって、分配部１２０は、同一タスクを構成する作業のうち第１演算部１１１に分配した作業が先に実行され、第２演算部１１２に分配した作業は第１演算部１１１の演算結果を用いて行われるようスケジューリングしてもよい。
【００７３】
ステップＳ４１０において、第１演算部１１１は、予測のためにモード決定作業とモーションベクトル予測作業４１０を行う。
【００７４】
ここで、モーションベクトル予測作業の演算結果は、参照映像データを用いて予測する場合に位置情報を示してもよい。また、モード決定作業の演算結果は、マクロブロック単位の分割、すなわち、１６×１６、１６×８、８×１６、８×８などの予測単位の組合と単方向、双方向予測、そしてモーションベクトル位置による予測方法などの決定を含んでもよい。
【００７５】
ステップＳ４２０において、第１演算部１１１は、ステップＳ４１０の演算結果を第２演算部１１２に伝達した後、直ちに変換のための量子化パラメータ生成作業と変形モード制御作業４２０を行う。ここで、第２演算部１１２はステップＳ４１５を行ってもよい。
【００７６】
ステップＳ４１５において、第２演算部１１２は、第１演算部１１１から伝達された演算結果を用いてサブ画素補間（Ｓｕｂ−ｐｅｌ  Ｉｎｔｅｒｐｏｌａｔｉｏｎ）作業のような予測タスクの作業を行う。
【００７７】
すなわち、第１演算部１１１と第２演算部１１２が各ステップＳ４２０とステップＳ４１５を行って変形タスクを構成する作業と予測タスクを構成する作業を並列演算するため、全体システムの効率が増加し得る。
【００７８】
ステップＳ４３０において、第１演算部１１１は、ステップＳ４２０で生成したパラメータを第２演算部１１２に伝達した後、直ちにループフィルタのための作業を行う。ここで、第２演算部１１２はステップＳ４２５を行ってもよい。
【００７９】
ステップＳ４２５において、第２演算部１１２は、第１演算部１１１から伝達された演算結果を用いて逆量子化作業と逆変換作業を行う。
【００８０】
最後に、第１演算部１１１がステップＳ４３０で生成したパラメータを第２演算部１１２に伝達すると、第２演算部１１２は、ステップＳ４３５を行ってもよい。
【００８１】
ステップＳ４３５において、第２演算部１１２は、第１演算部１１１から伝達された演算結果を用いて追加／平均作業とループフィルタリング作業を行う。
【００８２】
ここで、分配部１２０は、第２演算部１１２の演算結果が第１演算部１１１でフィードバックされることを最小化するよう作業を分割することで、演算部の間の同期化による性能低下を最小化することができる。
【００８３】
図５は、一実施形態に係る演算部がタスクグループ単位に応じて作業を演算する過程の一例である。
【００８４】
タスクの間に従属関係が存在して第１演算部１１１の演算結果を用いる第２演算部１１２の演算結果が第１演算部１１１にフィードバックされる場合、第１演算部１１１と第２演算部１１２が並列に作業を演算できない場合もある。
【００８５】
したがって、プロセス並列処理装置１００は複数のタスクの間に従属関係が存在する場合、従属関係に応じてタスクをグループ化し、複数の演算部１１０がグループ化されたタスクグループ単位に応じて演算するように作業を分配してもよい。
【００８６】
ここで、プロセス並列処理装置１００の分配部１２０は、タスクグループ間の演算結果の従属関係が発生しないようにタスクをグループ化してもよい。
【００８７】
例えば、分配部１２０は、図５に示すようにタスク１ないしタスク７を１つのタスクグループ５００にグループ化してもよい。
【００８８】
ここで、第１演算部１１１が先にタスクグループ５００に含まれたタスクを構成する作業のうち、演算特性がコントロール演算である作業５１０の演算を行ってもよい。
【００８９】
そして、第２演算部１１２は第１演算部１１１が演算を終了すると、第１演算部１１１の演算結果を用いてタスクグループ５００に含まれたタスクを構成する作業のうち、演算特性が大容量演算である作業５２０の演算を行ってもよい。ここで、第１演算部１１１は、次のタスクグループに含まれたタスクを構成する作業のうち演算特性がコントロール演算である作業の演算を行ってもよい。
【００９０】
すなわち、プロセス並列処理装置１００は、従属関係があるタスクを１つのタスクグループにグループ化することで、演算結果がフィードバックされることを防止し、第１演算部１１１と第２演算部１１２が並列に作業を演算できるようにする。
【００９１】
図６は、一実施形態に係る演算部がバッファ部を用いて作業を演算する過程の一例である。
【００９２】
図４は、演算部１１０がプロセスを構成する各タスクの演算を行う時間が同一である場合を図示しているが、実際には、タスクの特性、タスクで演算部１１０に分配された作業の個数、及び作業の演算量に応じてタスクを構成する作業の演算を行う時間が互いに異なってもよい。
【００９３】
図６は、タスクの演算を行う時間が異なる場合、バッファ部１３０を用いて同期化オーバーヘッドを最小化する動作の一例である。具体的に、図６は、予測タスク６１０の演算を行う時間とループフィルタタスク６３０の演算を行う時間に比べて変換（ＴＲ：ｔｒａｎｓｆｏｒｍ）タスク６２０の演算を行う時間が著しく低下した場合の一例である。
【００９４】
ここで、第２演算部１１２が予測タスク６１５の演算を終了する前に第１演算部１１１が変換タスク６２０の演算を終了してもよい。ここで、第２演算部１１２は予測タスク６１５の演算を実行中であるため、第１演算部１１１が伝達しようとする変換タスクの演算結果を受信することができない。したがって、第２演算部１１２が変換タスクの演算結果を受信できるまで第１演算部１１１が次のタスクのループフィルタタスク６３０の演算を行わず待機する同期化オーバーヘッドが発生することがある。
【００９５】
したがって、第１演算部１１１は、変換タスク６２０の演算を終了した時点で第２演算部１１２が予測タスク６１５の演算を終了していない場合、変換タスク６２０の演算結果をバッファ部１３０に格納し、ループフィルタタスク６３０の演算を行ってもよい。
【００９６】
ここで、第２演算部１１２は、予測タスク６１５の演算を終了した後、バッファ部１３０に格納された変換タスク６２０の演算結果を用いて変換タスク６２５の演算を行ってもよい。
【００９７】
すなわち、バッファ部１３０は、演算を先に終了した演算部の演算結果を臨時に格納し、後ほど演算を終了した演算部に格納された演算結果を提供することによって、演算を先に終了した演算部が他の演算部の演算が終了するまで待機する同期化オーバーヘッドを最小化することができる。
【００９８】
図７は、一実施形態に係る演算部が外部データを受信して作業を演算する過程の一例である。
【００９９】
ビデオ復号化のためのデータが外部に存在する場合、演算部１１０のうち少なくとも１つが外部データ送信装置から演算のための外部データを受信しなければならない場合がある。ここで、外部データを受信する演算部は、外部データを受信する時間だけ当該タスクの演算を遅延させなければならないため、外部データを受信しない演算部とタスクを行う時間が互いに異なる。
【０１００】
図７は、外部データを受信する場合、バッファ部を用いて同期化オーバーヘッドを最小化する動作の一例である。具体的に、図７は、第２演算部１１２が予測タスクの演算を行う場合、データ送信装置から外部データを受信し、ループフィルタタスクの演算結果をデータ送信装置に送信する場合の一例である。
【０１０１】
ここで、第２演算部１１２は、データ送信装置から予測タスクを行うための外部データ７００を受信し、外部データ７００を用いて予測タスクを演算してもよい。ここで、外部データ７００は、第１演算部１１１が演算した予測タスクの演算結果に応じて決定されてもよい。
【０１０２】
ここで、第２演算部１１２は、外部データ７００を受信した後に予測タスク７１０を演算するため、第２演算部１１２が予測タスクの演算を終了する前に第１演算部１１１が変換タスク７２０の演算を終了する可能性が高い。さらに、図７に示すように、変換タスク７２０の演算を行う時間が外部データ７００を受信する時間よりも短い場合、第２演算部１１２が予測タスクの演算を開始する前に第１演算部１１１が変換タスク７２０の演算を終了してもよい。
【０１０３】
ここで、第２演算部１１２は予測タスク７００の演算を終了していないため、第１演算部１１１が伝達しようとする変換タスクの演算結果を受信することはできない。
【０１０４】
したがって、第１演算部１１１は、変換タスク７２０の演算を終了した時点で第２演算部１１２が予測タスク７１０の演算を終了していない場合、変換タスク７２０の演算結果をバッファ部１３０に格納し、ループフィルタタスク７３０の演算を行ってもよい。
【０１０５】
ここで、第２演算部１１２は、予測タスク７１０の演算を終了した後、バッファ部１３０に格納された変換タスク７２０の演算結果を用いて変換タスク７４０の演算を行ってもよい。
【０１０６】
図８は、一実施形態に係る演算部が映像のブロック、または、ピクセル単位に応じて作業を演算する過程の一例である。
【０１０７】
ビデオアプリケーションを含む映像処理アプリケーションは、一定サイズのブロックまたはピクセル単位で相互間の従属関係が存在してもよい。
【０１０８】
図８は、特定ブロックの左側と左上側、そして、上側に存在するブロック間に従属関係が存在する場合を示している。具体的に、図８において、ｎＫ＋３番目のブロック８００は、ｎＫ＋２番目のブロック８０３、（ｎ−１）Ｋ＋２番目のブロック８０１、（ｎ−２）Ｋ＋３番目のブロック８０２と従属関係が存在し得る。ここで、現在のブロックは、従属関係があるブロックの特定演算が終了した結果を用いて演算を行ってもよい。したがって、従属関係があるブロックの特定演算が終了した後に現在のブロックの演算を行ってもよい。
【０１０９】
例えば、分配部１２０がイントラ予測（Ｉｎｔｒａ  ｐｒｅｄｉｃｔｉｏｎ）タスクの演算を第１演算部１１１に分配し、イントラ予測タスクは第２演算部１１２が演算したループフィルタタスクの演算結果がフィードバックされて演算してもよい。ここで、第１演算部１１１がｎＫ＋３番目のブロックのイントラ予測タスクを演算するためには第２演算部１１２がｎＫ＋２番目のブロックのループフィルタタスクの演算を終了しなければならない。
【０１１０】
すなわち、第２演算部１１２がｎＫ＋２番目のブロックのループフィルタタスクを演算するとき、第１演算部１１１が並列にｎＫ＋３番目のブロックのイントラ予測タスクを演算することができない。
【０１１１】
したがって、分配部１２０は、ブロック上のパイプライン演算によって第１演算部１１１と第２演算部１１２の並列化を進行する。
【０１１２】
具体的に、分配部１２０は、ｎＫ＋ｍブロックのコントロール演算８１０を第１演算部１１１に分配し、ｎＫ＋ｍ−１ブロックの大容量演算を第２演算部１１２に分配してもよい。
【０１１３】
次に、分配部１２０は、ｎＫ＋ｍ＋１ブロックのコントロール演算８１１を第１演算部１１１に分配し、ｎＫ＋ｍブロックの大容量演算８２０を第２演算部１１２に分配してもよい。ここで、第１演算部１１１は、ｎＫ＋ｍ−１ブロックの大容量演算の演算結果を用いてｎＫ＋ｍ＋１ブロックのコントロール演算８１１を行ってもよい。
【０１１４】
その次に、分配部１２０は、ｎＫ＋ｍ＋２ブロックのコントロール演算を第１演算部１１１に分配し、ｎＫ＋ｍ＋１ブロックの大容量演算８２１を第２演算部１１２に分配してもよい。ここで、第１演算部１１１は、ｎＫ＋ｍブロックの大容量演算８２１の演算結果を用いてｎＫ＋ｍ＋２ブロックのコントロール演算を行ってもよい。
【０１１５】
すなわち、分配部１２０は、現在のブロック８００と従属関係が存在するブロックの演算をグループ化し、第１演算部１１１と第２演算部１１２に分配することで映像処理アプリケーションを並列処理することができる。
【０１１６】
図９は、一実施形態に係るプロセス並列処理装置の一例である。図９は、２つのコアと通信チャネル及び複数のメモリから構成されたプロセス並列処理装置の一例である。ここで、第１コアは第１演算部１１１と分配部１２０を含み、第２コアは第２演算部１１２と分配部１２０を備えてもよい。また、コプロセッサは、第１演算部１１１、または第２演算部１１２のスレーブ演算部と設定された第３演算部であってもよい。
【０１１７】
ここで、第１コアと第２コアには、通信チャネルを用いてそれぞれの動作に必要なパラメータ及びデータが送信されてもよい。また、第１メモリは、第１コアで用いられるデータ及び第１コアの演算結果を格納するために用いられ、第２メモリと第３メモリは、第２コアで用いられるデータ及び第２コアの演算結果を格納してもよい。そして、第１メモリ、第２メモリ、第３メモリ及び第４メモリの一部は第１コアと第２コアが共有してもよい。ここで、第１コアに含まれた分配部１２０と第２コアに含まれた分配部１２０は同じ設定を用いてタスクを分割することで、第１コアに含まれた分配部１２０が第１演算部１１１に分配した作業と第２コアに含まれた分配部１２０が第１演算部１１１に分配した作業とを一致させることができる。
【０１１８】
第１コアの第１演算部１１１は分配部１２０が割り当てた作業を演算し、通信チャネルを用いて演算結果を第２コアに送信する。具体的に、第１コアの第１演算部１１１は、演算結果のうち第２コアに割り当てられた作業に必要な必要情報を選択して第２コアに送信してもよい。ここで、必要情報は、関連パラメータとデータ、データが含まれているメモリアドレスを含んでもよい。
【０１１９】
そして、第１コアの第１演算部１１１は、第２コアの演算結果を待機せず次の作業を演算する。ここで、第２コアの第２演算部１１２は第１コアから伝えられた必要情報を用いて演算を行い、第１コアから伝えられる情報を待機する。
【０１２０】
また、第２コアの演算結果が第１コアにフィードバックされなければならない場合、第２コアの第２演算部１１２は通信チャネルを介して演算結果を第１コアに送信してもよい。
【０１２１】
図１０は、一実施形態に係るプロセス並列処理方法を示す図である。ステップＳ１０１０において、分配部１２０は、プロセスの複数のタスクを構成する作業を演算特性に応じて分類する。ここで、分配部１２０は、分類された作業を第１演算部１１１または第２演算部１１２にマッピングしてもよい。具体的に、分配部１２０は作業の演算特性がコントロール演算であれば、第１演算部１１１にマッピングし、作業の演算特性が大容量演算であれば、第２演算部１１２にマッピングしてもよい。
【０１２２】
また、分配部１２０は、データの流れに基づいてタスクを複数の作業に分割し、分割された作業間にフィードバックが発生しないように第１演算部１１１または第２演算部１１２に作業を分配してもよい。
【０１２３】
ステップＳ１０２０において、分配部１２０は、タスク間に従属関係が存在するか否かを確認する。タスク間に従属関係が存在する場合、分配部１２０は、ステップＳ１０３０を行ってタスクグループを生成してもよい。また、タスク間に従属関係が存在しない場合、分配部１２０はステップＳ１０５０を行ってもよい。
【０１２４】
ステップＳ１０３０において、分配部１２０は、タスク間従属関係に応じてタスクグループを生成する。具体的に、分配部１２０は、タスクグループ間に演算結果の従属関係が発生しないようにタスクをグループ化してもよい。
【０１２５】
ステップＳ１０４０において、分配部１２０は、演算部１１０がタスクグループ単位に応じて演算するようにステップＳ１０１０で第１演算部１１１及び第２演算部１１２にマッピングされた作業を分配する。
【０１２６】
ステップＳ１０５０において、分配部１２０は、第１演算部１１１及び第２演算部１１２がタスク単位に応じて演算するように、ステップＳ１０１０で第１演算部１１１及び第２演算部１１２にマッピングされた作業を分配する。
【０１２７】
ステップＳ１０６０において、第１演算部１１１と第２演算部１１２は、ステップＳ１０４０、またはステップＳ１０５０で分配された作業をそれぞれ演算する。
【０１２８】
ここで、バッファ部１３０は、第１演算部１１１または第２演算部１１２の演算結果の間に同期化のために先に作業演算が完了した第１演算部１１１または第２演算部１１２の演算結果を格納してもよい。そして、後ほど演算が完了した第１演算部１１１または第２演算部１１２は、バッファ部１３０が格納した演算結果を用いて作業を演算してもよい。
【０１２９】
また、ビデオ復号化のためのデータが外部に存在する場合、演算部１１０のうち少なくとも１つが外部データ送信装置から演算のための外部データを受信しなければならない場合がある。ここで、バッファ部１３０は外部データを受信しない演算部の演算結果を格納し、外部データを受信した演算部が演算を終了すると、格納した演算結果を外部データを受信した演算部に提供することで、外部データを受信した演算部が次のタスクの作業を演算可能にする。
【０１３０】
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータ読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうちの１つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、光ディスクのような光磁気媒体、及びＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。
【０１３１】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【０１３２】
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲だけではなく特許請求の範囲と均等なものなどによって定められるものである。
【符号の説明】
【０１３３】
１００：プロセス並列処理装置
１１０：演算部
１１１：第１演算部
１１２：第２演算部
１２０：分配部
【図１】
2014206979.tif 000003
【図２】
2014206979.tif 000004
【図３】
2014206979.tif 000005
【図４】
2014206979.tif 000006
【図５】
2014206979.tif 000007
【図６】
2014206979.tif 000008
【図７】
2014206979.tif 000009
【図８】
2014206979.tif 000010
【図９】
2014206979.tif 000011
【図１０】
2014206979.tif 000012