(57)【要約】【課題】  複数種の処理の規模がデータに応じて変化する場合にも、複数種の処理をバランスよく実行する。【解決手段】  情報処理装置は、論理をプログラム可能な複数の領域を有するプログラマブル部と、複数種の処理に使用されるデータの特徴に基づいて複数種の処理のそれぞれの処理量を求める第１の判定部と、第１の判定部が求めた処理量に基づいて、複数種の処理毎に論理をプログラムする領域の数を求める第２の判定部と、複数種の処理毎に求めた数の領域に、複数種の処理の各々を実行する論理をプログラムする構成制御部とを備える。【選択図】    図１
2018078465.tif 000002
【特許請求の範囲】
【請求項１】
論理をプログラム可能な複数の領域を有するプログラマブル部と、
複数種の処理に使用されるデータの特徴に基づいて前記複数種の処理のそれぞれの処理量を求める第１の判定部と、
前記第１の判定部が求めた処理量に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求める第２の判定部と、
前記複数種の処理毎に求めた数の前記領域に、前記複数種の処理の各々を実行する論理をプログラムする構成制御部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記第１の判定部は、前記複数種の処理を実行するそれぞれの前記領域の延べ数を処理量として求め、
前記第２の判定部は、前記延べ数の合計が前記複数の領域の数より多い場合、前記延べ数の比率に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求めることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記複数種の処理は、動画像の符号化処理において、フレーム内で画素値を予測するイントラ予測の前処理と、フレーム間で画像の動きを予測するインター予測の前処理であり、
前記第１の判定部は、動画像の画像データの特徴に基づいて前記イントラ予測の前記前処理で使用する予測モードの数を求め、求めた予測モードの数に基づいて前記イントラ予測の前記前処理の処理量を求め、画像データの特徴に基づいて前記インター予測の前記前処理で使用する動きベクトルの数を求め、求めた動きベクトルの数に基づいて前記インター予測の前記前処理の処理量を求め、
前記第２の判定部は、前記第１の判定部が求めた前記前処理の処理量に基づいて、前記イントラ予測の前記前処理を実行する論理をプログラムする前記領域の数と、前記インター予測の前記前処理を実行する論理をプログラムする前記領域の数とを求めること
を特徴とする請求項１または請求項２記載の情報処理装置。
【請求項４】
前記第１の判定部は、動画像を表す複数の画像毎に、画像データの特徴に基づいて前記前処理の処理量を求め、
前記イントラ予測の前記前処理、前記イントラ予測、前記インター予測の前記前処理および前記インター予測は、画像を分割した複数のブロック毎に実行されることを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記複数種の処理に使用されるデータの特徴を検出する特徴検出部を備え、
前記第１の判定部は、前記特徴検出部が検出したデータの特徴に基づいて、前記複数種の処理のそれぞれの処理量を求めること
を特徴とする請求項１ないし請求項４のいずれか１項記載の情報処理装置。
【請求項６】
論理をプログラム可能な複数の領域を有するプログラマブル部を有する情報処理装置の制御方法において、
情報処理装置が、
複数種の処理に使用されるデータの特徴に基づいて前記複数種の処理のそれぞれの処理量を求め、
求めた処理量に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求め、
求めた数の前記領域に、前記複数種の処理の各々を実行する論理をプログラムすること
を特徴とする情報処理装置の制御方法。
【請求項７】
論理をプログラム可能な複数の領域を有するプログラマブル部を有する情報処理装置の制御プログラムにおいて、
複数種の処理に使用されるデータの特徴に基づいて前記複数種の処理のそれぞれの処理量を求め、
求めた処理量に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求め、
求めた数の前記領域に、前記複数種の処理の各々を実行する論理をプログラムする
処理を情報処理装置に実行させることを特徴とする情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
近時、論理を動的に再構成可能なＦＰＧＡ（Field-Programmable Gate Array）等のプログラマブルデバイスをアクセラレータとして機能させる情報処理装置が注目されている。例えば、入力データを印刷用の描画データに変換する印刷処理装置において、描画データへの変換処理を実行する複数の処理ステージを含むパイプラインが、プログラマブルデバイスにより構築される（例えば、特許文献１参照）。また、オブジェクト記述言語で記述された入力データを描画オブジェクト毎に中間データに変換し、ビットマップデータに展開する場合、描画オブジェクトの属性毎に展開処理を実行する論理がプログラマブルデバイス内の各ブロックにプログラムされる。そして、展開処理が完了したブロックに、展開処理が完了していない展開処理用の論理をプログラムして展開処理を実行することで、各ブロックにおいて展開処理に掛かる時間は互いに同等になる（例えば、特許文献２参照）。
【０００３】
さらに、画像処理装置では、入力画像から判定された画像の特徴に基づいて、画像処理用の複数の論理のいずれかがプログラマブルデバイスにプログラムされ、プログラムされた論理を使用して画像処理が実行される（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２５５１１７号公報
【特許文献２】特開２００６−８８４３３号公報
【特許文献３】特開２００８−２４２８５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データの並列処理が可能な場合、データを処理する論理をプログラマブルデバイスの複数のブロックにプログラムすることで、処理時間は短縮される。しかしながら、データに対して複数種の処理が実行され、各処理の規模がデータの特徴に応じて変化する場合、データの特徴に基づいて、各処理を実行する論理をプログラムするブロックの数を決定する手法は提案されていない。
【０００６】
１つの側面では、本発明は、複数種の処理の規模がデータに応じて変化する場合にも、複数種の処理をバランスよく実行することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施態様では、情報処理装置は、論理をプログラム可能な複数の領域を有するプログラマブル部と、複数種の処理に使用されるデータの特徴に基づいて複数種の処理のそれぞれの処理量を求める第１の判定部と、第１の判定部が求めた処理量に基づいて、複数種の処理毎に論理をプログラムする領域の数を求める第２の判定部と、複数種の処理毎に求めた数の領域に、複数種の処理の各々を実行する論理をプログラムする構成制御部とを備える。
【０００８】
別の実施態様では、論理をプログラム可能な複数の領域を有するプログラマブル部を有する情報処理装置の制御方法において、情報処理装置が、複数種の処理に使用されるデータの特徴に基づいて複数種の処理のそれぞれの処理量を求め、求めた処理量に基づいて、複数種の処理毎に論理をプログラムする領域の数を求め、求めた数の領域に、複数種の処理の各々を実行する論理をプログラムする。
【０００９】
別の実施態様では、論理をプログラム可能な複数の領域を有するプログラマブル部を有する情報処理装置の制御プログラムにおいて、複数種の処理に使用されるデータの特徴に基づいて複数種の処理のそれぞれの処理量を求め、求めた処理量に基づいて、複数種の処理毎に論理をプログラムする領域の数を求め、求めた数の領域に、複数種の処理の各々を実行する論理をプログラムする処理を情報処理装置に実行させる。
【発明の効果】
【００１０】
複数種の処理の規模がデータに応じて変化する場合にも、複数種の処理をバランスよく実行することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す図である。
【図２】図１に示す処理量判定部、ブロック数判定部および構成制御部の動作の一例を示す図である。
【図３】図２に示すフローにより求められる延べ数、理論数および割り当て数の一例を示す図である。
【図４】図１に示す情報処理装置の動作の一例を示す図である。
【図５】図１に示す情報処理装置の動作の別の例を示す図である。
【図６】図１に示す情報処理装置の動作の別の例を示す図である。
【図７】図１に示す情報処理装置の動作の別の例を示す図である。
【図８】情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す図である。
【図９】図８に示す特徴検出部、処理量判定部、ブロック数判定部および構成制御部の動作の一例を示す図である。
【図１０】図９に示すフローにより求められる延べ数、理論数および割り当て数の一例を示す図である。
【図１１】イントラ予測符号化で使用される予測モードの一例を示す図である。
【図１２】図８に示すプログラマブル部にプログラムされる回路の一例を示す図である。
【図１３】図８に示す情報処理装置の動作の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を用いて実施形態を説明する。
【００１３】
図１は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す。図１に示す情報処理装置１００は、例えば、サーバであり、ＣＰＵ（Central Processing Unit）等の演算処理装置１、メモリモジュール等の記憶装置２およびＦＰＧＡ等のプログラマブル部３を有する。なお、情報処理装置１００は、図１に示す要素以外に、ＨＤＤ（Hard Disk Drive）および通信インタフェース等を有してもよい。
【００１４】
演算処理装置１は、処理量判定部１ａ、ブロック数判定部１ｂおよび構成制御部１ｃを有する。記憶装置２は、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、またはフラッシュメモリ等の半導体メモリを含む。また、記憶装置２は、制御プログラム２ａと、プログラマブル部３にプログラムする論理の構成情報２ｂとを記憶する領域を有する。記憶装置２における構成情報２ｂを記憶する領域は、複数種の処理の各々を実行するためにブロックＵＢＬＫにプログラムされる論理と、論理をプログラムしたブロックＵＢＬＫ間を接続する接続情報とを記憶する構成情報記憶部の一例である。なお、構成情報２ｂは、情報処理装置１００の記憶装置２以外の記憶領域に記憶されてもよく、情報処理装置１００の外部の記憶領域に記憶されてもよい。
【００１５】
処理量判定部１ａ、ブロック数判定部１ｂおよび構成制御部１ｃの機能は、演算処理装置１の図示しないＣＰＵコア等が記憶装置２に格納された制御プログラム２ａを実行することにより実現される。なお、処理量判定部１ａ、ブロック数判定部１ｂおよび構成制御部１ｃは、ハードウェア（回路）として、情報処理装置１００に搭載されてもよい。
【００１６】
制御プログラム２ａは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＵＳＢ（Universal Serial Bus）メモリ等のコンピュータにより読み取り可能な記録媒体４に格納されてもよい。この場合、記録媒体４に格納された制御プログラム２ａは、情報処理装置１００に設けられる図示しない入出力インタフェースを介して記録媒体４から記憶装置２に転送される。なお、制御プログラム２ａは、記録媒体４から図示しないＨＤＤに転送された後、ＨＤＤから記憶装置２に転送されてもよい。
【００１７】
プログラマブル部３は、ＳＲＡＭ等を用いた複数のルックアップテーブルＬＵＴと複数のフリップフロップＦＦとを含む複数の論理ブロックＬＢＬＫと、論理ブロックＬＢＬＫ間を接続する配線（図示せず）およびスイッチマトリックス（図示せず）とを有する。また、プログラマブル部３は、ワークデータ等を記憶するブロックＲＡＭ（図示せず）を有する。各論理ブロックＬＢＬＫにおいて、ルックアップテーブルＬＵＴに論理を書き込み、ルックアップテーブルＬＵＴ間を配線とスイッチマトリクスとで接続することで、組み合わせ回路が構築される。また、ルックアップテーブルＬＵＴ間にフリップフロップＦＦを挿入し、必要であれば、さらにルックアップテーブルとブロックＲＡＭ間を配線とスイッチマトリクスとで接続することで、順序回路が構築される。
【００１８】
プログラマブル部３の論理ブロックＬＢＬＫ、ブロックＲＡＭ、配線およびスイッチマトリクス上には、論理をプログラム可能な複数のブロックＢＬＫ、ＵＢＬＫと、ブロックＢＬＫ、ＵＢＬＫ間を接続するブロック間接続回路（図示せず）とが構築される。図１では、プログラマブル部３は、１６個のブロックＢＬＫ、ＵＢＬＫを構築可能である。実線で示す６個のブロックＵＢＬＫは、構成制御部１ｃにより複数種の処理の各々実行する論理がプログラムされる。ブロックＢＬＫ、ＵＢＬＫは、論理をプログラム可能な複数の領域の一例である。なお、複数のブロックＢＬＫ、ＵＢＬＫと、ブロックＵＢＬＫ間を接続するブロック間接続回路とは、プログラマブル部３０に物理的に構築されてもよい。
【００１９】
プログラマブル部３において、ブロックＵＢＬＫを除く破線で示す１０個のブロックＢＬＫの少なくともいずれかには、上記複数種の処理とは異なる他の処理を実行する論理をプログラムするために割り当て可能である。例えば、他の処理は、複数の処理の結果を使用して実行され、あるいは、複数種の処理は、他の処理の結果を使用して実行される。なお、プログラマブル部３が有するブロックＢＬＫ、ＵＢＬＫの数は、図１に示す例に限定されない。
【００２０】
処理量判定部１ａは、複数種の処理に使用されるデータの特徴に基づいて複数種の処理のそれぞれの処理量（処理の規模）を求める。処理量判定部１ａは、第１の判定部の一例である。例えば、処理量判定部１ａは、性能または品質を落とさずに複数種の処理を実行するために使用するブロックＵＢＬＫの延べ数を、処理量として複数種の処理毎に求める。
【００２１】
複数種の処理に使用されるデータは、処理要求ＲＥＱに対応して情報処理装置１００の外部から供給される。データが画像データである場合、データの特徴は、画像中に存在する文字、写真または図形等の含有率等により示される。データが動画像データである場合、データの特徴は、画像中の類似する画素の位置関係または画像中の物体の動きの特徴（方向または速さ等）により示される。データが演算処理または統計処理等に使用する数値データである場合、データの特徴は、データサイズまたは処理に使用する数式等により示される。
【００２２】
ブロック数判定部１ｂは、処理量判定部１ａが求めた処理量（例えば、複数種の処理毎に使用されるブロックＵＢＬＫの延べ数）に基づいて、複数種の処理毎に論理をプログラムするブロックＵＢＬＫの数を求める。ブロック数判定部１ｂは、第２の判定部の一例である。例えば、ブロック数判定部１ｂは、複数種の処理毎に使用されるブロックＵＢＬＫの延べ数の合計がブロックＵＢＬＫの数より多い場合、延べ数の比率に基づいて、複数種の処理毎に論理をプログラムするブロックＵＢＬＫの数を求める。論理をプログラムするブロックＵＢＬＫの数の求め方は、図３で説明される。
【００２３】
構成制御部１ｃは、ブロック数判定部１ｂが求めたブロックＵＢＬＫの数に基づいて、プログラマブル部３で実行する複数種の処理の各々に対応する構成情報２ｂを記憶装置２から読み出し、読み出した構成情報２ｂをブロックＵＢＬＫにプログラムする。構成情報２ｂは、複数種の処理の各々を実行するために各ブロックＵＢＬＫにプログラムされる論理を示す論理情報と、複数種の処理毎に論理がプログラムされる複数のブロックＵＢＬＫ間を接続する接続情報とを含む。
【００２４】
例えば、処理Ａが４個のブロックＵＢＬＫで実行される場合、構成制御部１ｃは、処理Ａを実行するための論理を４個のブロックＵＢＬＫにそれぞれプログラムし、接続情報に基づいて、４個のブロックＵＢＬＫ間を接続する。同様に、処理Ｂが２個のブロックＵＢＬＫで実行される場合、構成制御部１ｃは、処理Ｂを実行するための論理を２個のブロックＵＢＬＫにそれぞれプログラムし、接続情報に基づいて、２個のブロックＵＢＬＫ間を接続する。この場合、４個のブロックＵＢＬＫは、処理Ａを並列に実行し、２個のブロックＵＢＬＫは、処理Ｂを並列に実行する。
【００２５】
処理Ａを４個のブロックＵＢＬＫを使用して実行する場合の性能は、処理Ａを１個のブロックＵＢＬＫを使用して実行する場合の性能の４倍である。このように、処理を並列に実行するブロックＵＢＬＫの数により、処理性能は調整可能である。処理量判定部１ａおよびブロック数判定部１ｂにより、論理をプログラムするブロックＵＢＬＫの数を複数種の処理毎に求め、並列処理を実行することで、複数種の処理を、バランスよく実行することができる。
【００２６】
演算処理装置１は、構成情報２ｂをプログラマブル部３の所定のブロックＵＢＬＫにプログラムした後、プログラマブル部３をアクセラレータとして機能させて、画像処理、演算処理または統計処理等のデータ処理を実行する。
【００２７】
図２は、図１に示す処理量判定部１ａ、ブロック数判定部１ｂおよび構成制御部１ｃの動作の一例を示す。すなわち、図２は、情報処理装置１００の制御方法の一例および情報処理装置１００の制御プログラムの一例を示す。図２に示す動作は、情報処理装置１００が処理要求ＲＥＱを受信したことに基づいて開始される。符号ｋは、処理の種類の数を示す。処理Ａと処理Ｂとが実行される場合、”ｋ”は”２”である。符号ｎは、各処理を識別するために割り当てられる番号であり、カウンタ値としても使用される。符号Ｎは、複数種の処理を実行するために論理をプログラム可能なブロックＵＢＬＫの数（図１では、Ｎ＝”６”）である。
【００２８】
まず、ステップＳ１０において、処理量判定部１ａは、処理要求ＲＥＱに対応して受信する処理用のデータに基づいて、複数種の処理のそれぞれの処理量を求める。例えば、処理量判定部１ａは、複数種の処理を実行するために使用するブロックＵＢＬＫの延べ数Ｔ（ｎ）を、処理量として複数種の処理毎に求める。
【００２９】
次に、ステップＳ１２において、ブロック数判定部１ｂは、求めた処理量（延べ数Ｔ（ｎ））に基づいて、複数種の処理を実行するブロックＵＢＬＫの総数がＮ個以下になるように、複数種の処理の各々を実行するブロックＵＢＬＫの数Ａ（ｎ）を求める。そして、ブロック数判定部１ｂは、求めたブロックＵＢＬＫの数Ａ（ｎ）を複数種の処理に対応付けて構成制御部１ｃに通知する。以下の説明では、数Ａ（ｎ）は、割り当て数Ａ（ｎ）とも称される。
【００３０】
ブロック数判定部１ｂは、ステップＳ１０で求められた処理毎の延べ数Ｔ（ｎ）の比率を維持して割り当て数Ａ（ｎ）を求める。このため、延べ数Ｔ（ｎ）の合計がブロックＵＢＬＫの数より多い場合にも、割り当て数Ａ（ｎ）を延べ数Ｔ（ｎ）の比率に合わせて設定することができ、複数種の処理をバランスよく実行することができる。
【００３１】
次に、ステップＳ１４において、構成制御部１ｃは、カウンタ値ｎを”１”に設定する。次に、ステップＳ１６において、構成制御部１ｃは、Ａ（ｎ）個のブロックＵＢＬＫに論理Ｌ（ｎ）をプログラムする。次に、ステップＳ１８において、構成制御部１ｃは、カウンタ値ｎを”１”増加する。
【００３２】
次に、ステップＳ２０において、構成制御部１ｃは、カウンタ値ｎが”ｋ”を超える場合、処理をステップＳ２２に移行し、カウンタ値ｎが”ｋ”以下の場合、他の処理を実行する論理Ｌ（ｎ）をプログラムするために、処理をステップＳ１６に戻す。ステップＳ２２において、構成制御部１ｃは、論理Ｌ（１）から論理Ｌ（ｎ）の各々をプログラムした所定数のブロックＵＢＬＫを相互に接続し、処理を終了する。
【００３３】
図３は、図２に示すフローにより求められる延べ数Ｔ（ｎ）、理論数Ｎ（ｉ）および割り当て数Ａ（ｎ）の一例を示す。処理要求ＲＥＱ１に対応する動作では、６個のブロックＵＢＬＫ（Ｎ＝”６”）を使用して２個の処理Ａ、処理Ｂが実行される。処理量判定部１ａは、処理Ａに対応する延べ数Ｔ（１）＝”３”と、処理Ｂに対応する延べ数Ｔ（２）＝”２”とを求める。延べ数Ｔ（１）、Ｔ（２）の合計がブロックＵＢＬＫの数Ｎ以下であるため、ブロック数判定部１ｂは、延べ数Ｔ（ｎ）を各処理Ａ、Ｂを実行する論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（ｎ）に決定する。これにより、処理Ａを実行する論理が３個のブロックＵＢＬＫにプログラムされ、処理Ｂを実行する論理が２個のブロックＵＢＬＫにプログラムされる。
【００３４】
処理要求ＲＥＱ２に対応する動作では、６個のブロックＵＢＬＫを使用して２個の処理Ｃ、処理Ｄが実行される。処理量判定部１ａは、処理Ｃに対応する延べ数Ｔ（１）＝”７”と、処理Ｄに対応する延べ数Ｔ（２）＝”３”とを求める。延べ数Ｔ（１）、Ｔ（２）の合計がブロックＵＢＬＫの数Ｎより多いため、ブロック数判定部１ｂは、延べ数Ｔ（１）、Ｔ（２）の比率に基づいて、処理Ｃおよび処理Ｄを実行する論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（ｎ）を求める。
【００３５】
例えば、ブロック数判定部１ｂは、ブロックＵＢＬＫの数Ｎと延べ数Ｔ（ｎ）とを式（１）に代入することで、各処理の論理をプログラムするブロックＵＢＬＫの数（理論数Ｎ（ｉ））を小数点以下まで求める。
【００３６】
【数１】
2018078465.tif 000003
処理Ｃの理論数Ｎ（１）は４．２（＝６×７／１０）であり、処理Ｄの理論数Ｎ（２）は１．８（＝６×３／１０）である。ブロック数判定部１ｂは、各理論数Ｎ（ｉ）の小数第一位を四捨五入し、処理Ｃの割り当て数Ａ（１）を”４”に設定し、処理Ｄの割り当て数Ａ（２）を”２”に設定する。これにより、処理Ｃを実行する論理が４個のブロックＵＢＬＫにプログラムされ、処理Ｄを実行する論理が２個のブロックＵＢＬＫにプログラムされる。
【００３７】
但し、例えば、理論数Ｎ（１）が”４．５”で理論数Ｎ（２）が”１．５”の場合、割り当て数Ａ（１）は”５”になり、割り当て数Ａ（２）は”２”になり、割り当て数Ａ（ｎ）の合計は、ブロックＵＢＬＫの総数Ｎより大きくなる。このため、ブロック数判定部１ｂは、割り当て数Ａ（ｎ）の合計がブロックＵＢＬＫの総数Ｎを超える場合、理論数Ｎ（ｉ）の１つを切り上げる代わりに切り下げ、割り当て数Ａ（ｎ）の合計がブロックＵＢＬＫの総数Ｎ以下になるように調整する。
【００３８】
処理要求ＲＥＱ３に対応する動作では、６個のブロックＵＢＬＫを使用して３個の処理Ｅ、処理Ｆ、処理Ｇが実行される。処理量判定部１ａは、処理Ｅに対応する延べ数Ｔ（１）＝”４”と、処理Ｆに対応する延べ数Ｔ（２）＝”１”と、処理Ｇに対応する延べ数Ｔ（３）＝”２”とを求める。延べ数Ｔ（１）、Ｔ（２）、Ｔ（３）の合計がブロックＵＢＬＫの数Ｎより多いため、ブロック数判定部１ｂは、式（１）を用いて理論数Ｎ（ｉ）を求める。
【００３９】
処理Ｅの理論数Ｎ（１）は３．４３（＝６×４／７）であり、処理Ｆの理論数Ｎ（２）は０．８６（＝６×１／７）であり、処理Ｇの理論数Ｎ（３）は１．７１（＝６×２／７）である。ブロック数判定部１ｂは、各理論数Ｎ（ｉ）の小数第一位を四捨五入し、処理Ｅの割り当て数Ａ（１）を”３”に設定し、処理Ｄの割り当て数Ａ（２）を”１”に設定し、処理Ｇの割り当て数Ａ（３）を”２”に設定する。
【００４０】
なお、理論数Ｎ（ｉ）が”１”より小さい場合、小数第一位は四捨五入されずに切り上げられ、割り当て数Ａ（ｉ）は、”１”に設定される。これにより、処理Ｅを実行する論理が３個のブロックＵＢＬＫにプログラムされ、処理Ｆを実行する論理が１個のブロックＵＢＬＫにプログラムされ、処理Ｇを実行する論理が２個のブロックＵＢＬＫにプログラムされる。
【００４１】
図４は、図１に示す情報処理装置１００の動作の一例を示す。図４は、情報処理装置１００が、図３に示す処理要求ＲＥＱ１、ＲＥＱ２、ＲＥＱ３を順次受信した場合の動作を示す。プログラマブル部３にプログラムされる論理により実行される各処理Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇは、各処理サイクルに割り当てられるサイクル時間ＴＣ内に完了する。換言すれば、処理Ｆを除く各処理Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｇは、処理の規模に応じて並列数が調整されるため、１サイクル時間ＴＣ内に完了することができる。
【００４２】
処理サイクル１において、処理量判定部１ａおよびブロック数判定部１ｂは、処理要求ＲＥＱ１の判定を実行し、処理Ａ、Ｂ毎に、論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（ｎ）を求める（図４（ａ））。処理サイクル２において、構成制御部１ｃは、ブロック数判定部１ｂが求めた割り当て数Ａ（ｎ）に基づいて、処理Ａ、Ｂを実行する論理をブロックＵＢＬＫにプログラムし、ブロックＵＢＬＫ間の接続情報をプログラマブル部３にプログラムする（図４（ｂ））。この後、処理サイクル３において、処理Ａ、Ｂが複数のブロックＵＢＬＫを使用して並列に実行され、処理結果が出力される（図４（ｃ））。例えば、処理結果は、ブロックＵＢＬＫを除く他のブロックＢＬＫの少なくともいずれかに転送され、処理サイクル４以降に次の処理が他のブロックＢＬＫで実行される。
【００４３】
また、処理サイクル３において、処理量判定部１ａおよびブロック数判定部１ｂは、処理要求ＲＥＱ２の判定を実行し、処理Ｃ、Ｄ毎に、論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（ｎ）を求める（図４（ｄ））。処理サイクル４において、構成制御部１ｃは、ブロック数判定部１ｂが求めた割り当て数Ａ（ｎ）に基づいて、処理Ｃ、Ｄを実行する論理をブロックＵＢＬＫにプログラムし、ブロックＵＢＬＫ間の接続情報をプログラマブル部３にプログラムする（図４（ｅ））。この後、処理サイクル５において、処理Ｃ、Ｄが複数のブロックＵＢＬＫを使用して並列に実行され、処理結果が出力される（図４（ｆ））。例えば、処理結果は、他のブロックＢＬＫに転送され、処理サイクル６以降に次の処理が他のブロックＢＬＫで実行される。
【００４４】
また、処理サイクル５において、処理量判定部１ａおよびブロック数判定部１ｂは、処理要求ＲＥＱ３の判定を実行し、処理Ｅ、Ｆ、Ｇ毎に、論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（ｎ）を求める（図４（ｇ））。処理サイクル６において、構成制御部１ｃは、ブロック数判定部１ｂが求めた割り当て数Ａ（ｎ）に基づいて処理Ｅ、Ｆ、Ｇを実行する論理をブロックＵＢＬＫにプログラムし、ブロックＵＢＬＫ間の接続情報をプログラマブル部３にプログラムする（図４（ｈ））。この後、処理サイクル７において、処理Ｅ、Ｆ、Ｇが複数のブロックＵＢＬＫを使用して並列に実行され、処理結果が出力される（図４（ｉ））。例えば、処理結果は、他のブロックＢＬＫに転送され、図示しない処理サイクル８以降に次の処理が他のブロックＢＬＫで実行される。
【００４５】
なお、処理Ｃは、延べ数Ｔ（１）（＝”７”）より少ない４個のブロックＵＢＬＫを使用して実行され、処理Ｄは、延べ数Ｔ（２）（＝”３”）より少ない２個のブロックＵＢＬＫを使用して実行される。同様に、処理Ｅは、延べ数Ｔ（１）（＝”４”）より少ない３個のブロックＵＢＬＫを使用して実行される。このため、処理Ｃ、Ｄ、Ｅの精度は、本来期待される精度に比べて低い。換言すれば、図３に示す動作は、処理の精度を犠牲にしてでも、処理結果を遅滞なく出力する場合に採用される。
【００４６】
図５は、図１に示す情報処理装置１００の動作の別の例を示す。図４と同一または同様の動作については、詳細な説明は省略する。処理量判定部１ａ、ブロック数判定部１ｂおよび構成制御部１ｃの動作は、実行される処理サイクルが異なることを除き、図４と同様である。図５に示す動作では、各処理要求ＲＥＱ（ＲＥＱ１、ＲＥＱ２またはＲＥＱ３）に対応する処理が直列に実行される。なお、図５に示す動作は、図４に示す動作と同様に、処理の精度を犠牲にしてでも、処理結果を遅滞なく出力する場合に採用される。
【００４７】
処理要求ＲＥＱ１に対応する動作では、処理サイクル３で処理Ａが実行された後、処理Ａの処理結果を使用して処理サイクル４で処理Ｂが実行される（図５（ａ））。処理要求ＲＥＱ２に対応する動作では、処理サイクル６で処理Ｃが実行された後、処理Ｃの処理結果を使用して処理サイクル７で処理Ｄが実行される（図５（ｂ））。処理要求ＲＥＱ３に対応する動作では、処理サイクル９で処理Ｅが実行された後、処理Ｃの処理結果を使用して処理サイクル１０で処理Ｆが実行され、処理Ｆの処理結果を使用して処理サイクル１１で処理Ｇが実行される（図５（ｃ））。
【００４８】
図６は、図１に示す情報処理装置１００の動作の別の例を示す。図４と同一または同様の動作については、詳細な説明は省略する。処理量判定部１ａ、ブロック数判定部１ｂおよび構成制御部１ｃの動作は、実行される処理サイクルが異なることを除き、図４と同様であり、処理サイクル４までの動作は、図４と同じである。
【００４９】
図６に示す動作では、図４に示す動作と同様に、各処理要求ＲＥＱ（ＲＥＱ１、ＲＥＱ２またはＲＥＱ３）に対応する処理が並列に実行される。また、図６に示す動作では、ブロックＵＢＬＫにプログラムされた論理を使用して、延べ数Ｔ（ｎ）と等しい数のブロックＵＢＬＫを使用して各処理が実行される。但し、論理は、処理量判定部１ａが求めた割り当て数Ａ（ｎ）にしたがってブロックＵＢＬＫにプログラムされる。
【００５０】
このため、処理サイクル５において、４個のブロックＵＢＬＫを使用して処理Ｃが並列に実行された後、処理サイクル６において、２個のブロックＵＢＬＫを使用して追加の処理Ｃが並列に実行される（図６（ａ））。同様に、処理サイクル５において、２個のブロックＵＢＬＫを使用して処理Ｄが並列に実行された後、処理サイクル６において、１個のブロックＵＢＬＫを使用して追加の処理Ｄが実行される（図６（ｂ））。処理Ｃ、Ｄの処理結果は、処理サイクル６での処理の完了後に出力される。
【００５１】
処理サイクル８において、３個のブロックＵＢＬＫを使用して処理Ｅが並列に実行された後、処理サイクル９において、１個のブロックＵＢＬＫを使用して追加の処理Ｅが実行される（図６（ｃ））。処理Ｅ、Ｆ、Ｇの処理結果は、処理サイクル９での処理の完了後に出力される。このように、図６に示す動作は、処理結果の出力を遅らせてでも、処理要求ＲＥＱが求める処理の精度を確保したい場合に採用される。
【００５２】
図７は、図１に示す情報処理装置１００の動作の別の例を示す。図４と同一または同様の動作については、詳細な説明は省略する。処理量判定部１ａ、ブロック数判定部１ｂおよび構成制御部１ｃの動作は、実行される処理サイクルが異なることを除き、図４と同様である。図７に示す動作では、各処理要求ＲＥＱ（ＲＥＱ１、ＲＥＱ２またはＲＥＱ３）に対応して複数の処理用のデータが情報処理装置１００に供給され、複数回の処理が実行される。なお、図７に示す動作は、図４に示す動作と同様に、処理の精度を犠牲にしてでも、処理結果を遅滞なく出力する場合に採用される。
【００５３】
図７に示す動作では、処理要求ＲＥＱ１に対応して順次に供給されるデータを用いて、処理Ａ１、Ｂ１および処理Ａ２、Ｂ２等が処理サイクル３以降に順次に実行される（図７（ａ））。同様に、処理要求ＲＥＱ２に対応して順次に供給されるデータを用いて、処理Ｃ１、Ｄ１および処理Ｃ２、Ｄ２等が処理サイクル８以降に順次に実行される（図７（ｂ））。図７では省略されるが、図４に示す処理要求ＲＥＱ３に対応して順次に供給されるデータを用いて、処理Ｅ１、Ｆ１、Ｇ１および処理Ｅ２、Ｆ２、Ｇ２等が後続の処理サイクルに順次に実行される。
【００５４】
以上、図１から図７に示す実施形態では、特徴が変化するデータに対する複数種の処理を、論理をプログラム可能な所定数のブロックＵＢＬＫを使用して実行する場合、処理量判定部１ａは、複数種の処理のそれぞれの処理量を求める。ブロック数判定部１ｂは、処理量判定部１ａが求めた処理量に基づいて、複数種の論理毎に論理をプログラムブロックＵＢＬＫの数を求める。これにより、複数種の処理の規模がデータに応じて変化する場合にも、複数種の処理をバランスよく実行することができる。
【００５５】
処理量判定部１ａが求めた複数種の処理毎のブロックＵＢＬＫの延べ数Ｔ（ｎ）が、ブロックＵＢＬＫの数より多い場合、ブロック数判定部１ｂは、延べ数Ｔ（ｎ）の比率に基づいて、複数種の処理毎に論理をプログラムするブロックＵＢＬＫの数を求める。これにより、延べ数Ｔ（ｎ）が、ブロックＵＢＬＫの数より多い場合にも、処理量の比に合わせて複数種の処理をバランスよく実行することができる。
【００５６】
図８は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す。図１に示す実施形態で説明した要素と同一または同様の要素については、詳細な説明は省略する。図８に示す情報処理装置１００Ａは、例えばサーバである。情報処理装置１００Ａは、ＣＰＵ等の演算処理装置１０、メインメモリ２０、ＦＰＧＡ等のプログラマブル部３０、外部メモリ４０、入出力インタフェース５０、ＨＤＤ（Hard Disk Drive）６０および通信インタフェース７０を有する。例えば、情報処理装置１００Ａは、図１２で説明するように、プログラマブル部３０をアクセラレータとして機能させることで、動画像の符号化処理を実行する動画像符号化装置として機能する。なお、情報処理装置１００Ａは、プログラマブル部３０を、動画像の符号化処理以外の他の画像処理、または、演算処理、統計処理等のデータ処理を実行するアクセラレータとして機能させてもよい。
【００５７】
プログラマブル部３０は、ブロックＢＬＫの数が異なることを除き、図１に示すプログラマブル部３と同様の構成を有する。すなわち、プログラマブル部３０は、図１で説明した複数の論理ブロックＬＢＬＫ、ブロックＲＡＭ、配線、スイッチマトリックスを有し、その上に論理をプログラム可能な複数のブロックＢＬＫ、ＵＢＬＫと、図示しないブロック間接続回路とが構築される。実線で示す所定数のブロックＵＢＬＫ（図８では６個）は、図９以降に説明するように、処理するデータの特徴に応じて論理が変更される。
【００５８】
プログラマブル部３０は、バスＢＵＳ１を介して演算処理装置１０に接続され、メインメモリ２０は、バスＢＵＳ２を介して演算処理装置１０に接続される。入出力インタフェース５０、ＨＤＤ６０および通信インタフェース７０は、バスＢＵＳ３を介して演算処理装置１０に接続される。例えば、バスＢＵＳ１、ＢＵＳ３は、ＰＣＩｅ（Peripheral Component Interconnect express）バスであり、バスＢＵＳ２は、メモリバスである。
【００５９】
プログラマブル部３０および外部メモリ４０は、拡張基板ＢＲＤに搭載され、専用のバスＢＵＳ４で互いに接続される。外部メモリ４０は、プログラマブル部３０で実行される処理に使用されるデータと、処理後のデータとを保持する。また、外部メモリ４０は、図１２に示すフレームメモリとして使用される。
【００６０】
演算処理装置１０は、情報処理装置１００Ａの全体の動作を制御するとともに、メインメモリ２０に格納された制御プログラム２２を実行することで、特徴検出部１２、処理量判定部１４、ブロック数判定部１６および構成制御部１８として機能する。演算処理装置１０は、メインメモリ２０に格納される他のプログラム２４を実行することで、特徴検出部１２、処理量判定部１４、ブロック数判定部１６および構成制御部１８以外の機能を実現する。なお、特徴検出部１２、処理量判定部１４、ブロック数判定部１６および構成制御部１８は、ハードウェア（回路）として、情報処理装置１００Ａに搭載されてもよい。
【００６１】
メインメモリ２０は、例えば、複数のＳＤＲＡＭが搭載されたメモリモジュールであり、制御プログラム２２、他のプログラム２４および構成情報２６を記憶する領域を有する。メインメモリ２０における構成情報２６を記憶する領域は、構成情報記憶部の一例である。例えば、制御プログラム２２、他のプログラム２４および構成情報２６は、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ等のコンピュータにより読み取り可能な記録媒体８０またはネットワークＮＷを介してＨＤＤに格納された後、メインメモリ２０に転送される。
【００６２】
特徴検出部１２は、ブロックＵＢＬＫで実行する複数種の処理に使用されるデータの特徴を検出する。なお、複数種の処理に使用されるデータの特徴が予め分かっている場合、または、複数種の処理に使用されるデータの特徴が情報処理装置１００Ａの外部で検出される場合、特徴検出部１２は省略される。
【００６３】
処理量判定部１４は、特徴検出部１２が検出したデータの特徴に基づいて、複数種の処理のそれぞれの処理量を求める。例えば、処理量判定部１４は、複数種の処理を実行するために使用するブロックＵＢＬＫの延べ数Ｔ（ｎ）を、処理量として複数種の処理毎に求める。処理量判定部１４は、第１の判定部の一例である。処理量判定部１４の動作の例は、図９および図１０で説明される。
【００６４】
ブロック数判定部１６は、処理量判定部１４が求めた複数種の処理毎に使用されるブロックＵＢＬＫの延べ数Ｔ（ｎ）に基づいて、複数種の処理毎に論理をプログラムするブロックＵＢＬＫの数である割り当て数Ａ（ｎ）を求める。ブロック数判定部１６は、求めた割り当て数Ａ（ｎ）を、処理の内容を示す情報とともに構成制御部１８に出力する。ブロック数判定部１６は、第２の判定部の一例である。ブロック数判定部１６の動作の例は、図９および図１０で説明される。
【００６５】
構成制御部１８は、ブロック数判定部１６からの通知に基づいて、プログラマブル部３０で実行する複数種の処理の各々に対応する構成情報２６をメインメモリ２０から読み出し、読み出した構成情報２６をブロックＵＢＬＫにプログラムする。構成情報２６は、図１に示す構成情報２ｂと同様に、複数種の処理毎に設けられ、各ブロックＵＢＬＫにプログラムされる論理を示す論理情報と、ブロックＵＢＬＫ間を接続する接続情報とを含む。また、構成情報２６は、図１２で説明する予測モード毎に求められる差分絶対値和（ＳＡＤ；Sum of Absolute Differences）を比較して最小値を求める論理と、動きベクトル毎に求められる差分絶対値和を比較して最小値を求める論理とを含む。構成制御部１８の動作の例は、図９で説明される。
【００６６】
入出力インタフェース５０の１つは、ＤＶＤ等の記録媒体８０が装着される光学ドライブ装置に接続され、あるいは、ＵＳＢメモリ等が装着されるコネクタを有する。他の入出力インタフェース５０は、図示しないマウスおよびキーボード等の入力装置と、図示しないディスプレイ等の出力装置にそれぞれ接続される。
【００６７】
ＨＤＤ６０は、上述したように、制御プログラム２２、他のプログラム２４および構成情報２６等を記憶する。通信インタフェース７０は、インターネットまたはイントラネット等のネットワークＮＷに接続され、ネットワークＮＷとの間で情報を入出力する。
【００６８】
図９は、図８に示す特徴検出部１２、処理量判定部１４、ブロック数判定部１６および構成制御部１８の動作の一例を示す。すなわち、図９は、情報処理装置１００Ａの制御方法の一例および情報処理装置１００Ａの制御プログラムの一例を示す。図９に示す動作は、動画像に含まれる複数の画像の各々を符号化する処理要求を情報処理装置１００Ａが受信したことに基づいて開始される。なお、図９に示す動作は、図1に示す情報処理装置１００を用いて実施されてもよい。
【００６９】
まず、ステップＳ３０において、特徴検出部１２は、画像に含まれる画素を間引くなどして、符号化する画像に比べて画素数が少ない縮小画像を生成する。例えば、演算処理装置１０は、情報処理装置１００Ａの外部から供給される画像データをメインメモリ２０に格納する。特徴検出部１２は、メインメモリ２０に格納された画像データを使用して縮小画像を表す画像データを生成し、生成した画像データをメインメモリ２０に格納する。
【００７０】
以下の説明では、画像を表す画像データは、単に画像とも称される。なお、縮小画像は、プログラマブル部３０のブロックＢＬＫのいずれかにプログラムされる縮小画像の生成用の論理（ハードウェア）を用いて生成されてもよい。この場合、制御プログラムによるステップＳ３０の処理は、省略される。
【００７１】
次に、ステップＳ３２において、特徴検出部１２は、イントラ予測による符号化の前処理に使用する予測モードを決定する。前処理では、図１２で説明するように、ブロックＵＢＬＫへの論理のプログラムにより生成されたイントラ予測決定部２０２が、ステップＳ３２で決定される複数の予測モードの１つを選択する。
【００７２】
イントラ予測による符号化は、動画像の１フレーム内において、符号化対象の画素ブロックに隣接する符号化済みの画素ブロックの画素値を使用して予測画像を生成し、符号化対象の画素ブロックの画像と予測画像との差分を符号化する手法である。画素ブロックは、１フレームの画像を、例えば、縦４画素、横４画素に分割して生成されるブロックである。以下の説明では、イントラ予測による符号化は、イントラ予測符号化とも称される。
【００７３】
例えば、特徴検出部１２は、縮小画像における互いに隣接する画素の画素値の変化の傾向を分析し、画素値の類似性を検出する。特徴検出部１２は、検出した類似性に基づいて、符号化に使用する規格で定められた複数の予測モードのうち、少なくとも１つの予測モードを選択する。例えば、Ｈ．２６４／ＡＶＣ（Advanced Video Coding）規格では、予測に使用する画素の位置と、画素の複写方向とに応じて９個の予測モードが定められる。予測モードの例は、図１１に示される。例えば、縮小画像において、左上から右下に向かう方向に沿って画素値が類似する傾向がある場合、特徴検出部１２は、図１１に示す９個の予測モードのうち、３つの予測モード（diagonal down-right、vertical-right、horizontal-right）を選択する。すなわち、特徴検出部１２は、画像に含まれる画素の類似性に基づいて選択されるイントラ予測用の予測モードを、画像の特徴として検出する。
【００７４】
ステップＳ３４において、特徴検出部１２は、インター予測による符号化の前処理に使用する動きベクトルを決定する。前処理では、図１２で説明するように、ブロックＵＢＬＫへの論理のプログラムにより生成された動きベクトル検出部２０４が、ステップＳ３４で決定される複数の動きベクトルの１つを選択する。ステップＳ３４の処理は、ステップＳ３２の処理の前に実行されてもよく、ステップＳ３２の処理と並列に実行されてもよい。
【００７５】
インター予測による符号化は、動画像のフレーム間において、符号化対象の画像の画素ブロックに類似する他のフレーム画像の画素ブロックを用いて予測画像を生成し、符号化対象の画素ブロックの画像と予測画像との差分を符号化する手法である。ここで、他のフレームの画像の画素ブロックは、符号化対象画像の画素ブロックと同じサイズであり、動きベクトルは、符号化対象の画素ブロックに対する予測画像の生成用の画素ブロックの位置を示す。以下の説明では、インター予測による符号化は、インター予測符号化とも称される。
【００７６】
例えば、特徴検出部１２は、符号化対象の縮小画像と符号化済みの縮小画像とを用いて、符号化対象の縮小画像内の物体等の動きの傾向を検出する。特徴検出部１２は、検出した動きの傾向に基づいて、様々な方向に延びる様々な長さの動きベクトルのうち、少なくとも１つの動きベクトルを選択する。
【００７７】
次に、ステップＳ３６において、処理量判定部１４は、イントラ予測符号化の前処理を実行するブロックＵＢＬＫの延べ数Ｔ（１）を、イントラ予測符号化の前処理の処理量として求める。また、処理量判定部１４は、インター予測符号化の前処理を実行するブロックＵＢＬＫの延べ数Ｔ（２）を、インター予測符号化の前処理の処理量として求める。
【００７８】
例えば、イントラ予測符号化の前処理において、１個のブロックＵＢＬＫで単位時間当たりにＰＮ（１）個の予測モードの処理が実行可能な場合、イントラ予測符号化の前処理を実行するブロックＵＢＬＫの延べ数Ｔ（１）は、式（２）により求められる。式（２）における符号ＮＭ（１）は、ステップＳ３２で決定した予測モードの数である。また、インター予測符号化の前処理において、１個のブロックＵＢＬＫで単位時間当たりにＰＮ（２）個の動きベクトルに対する処理を実行可能な場合、インター予測符号化の前処理を実行するブロックＵＢＬＫの延べ数Ｔ（２）は、式（３）により求められる。式（３）中、符号ＮＭ（２）は、ステップＳ３４で決定した動きベクトルの数である。なお、上記単位時間は、図１２に示すパイプラインの１ステージＳＴＧに割り当てられる処理時間である。また、式（２）、式（３）では、計算結果の小数第一位を切り上げることで、延べ数Ｔ（１）、Ｔ（２）が求められる。
Ｔ（１）＝ＮＭ（１）／ＰＮ（１）  ‥‥  （２）
Ｔ（２）＝ＮＭ（２）／ＰＮ（２）  ‥‥  （３）
次に、ステップＳ３８において、ブロック数判定部１６は、処理量判定部１４が求めた延べ数Ｔ（１）に基づいて、イントラ予測符号化の前処理を実行する論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（１）を求める。また、ブロック数判定部１６は、処理量判定部１４が求めた延べ数Ｔ（２）に基づいて、インター予測符号化の前処理を実行する論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（２）を求める。
【００７９】
まず、ブロック数判定部１６は、式（１）を用いて、イントラ予測符号化の前処理用の論理を格納するブロックＵＢＬＫの理論数Ｎ（１）と、インター予測符号化の前処理用の論理を格納するブロックＵＢＬＫの理論数Ｎ（２）とを求める。この実施形態では、式（１）中の”ｋ”は、”２”である。
【００８０】
次に、ブロック数判定部１６は、理論数Ｎ（１）、Ｎ（２）の小数第一位をそれぞれ四捨五入する。そして、ブロック数判定部１６は、イントラ予測符号化の前処理用の論理を格納するブロックＵＢＬＫの割り当て数Ａ（１）と、インター予測符号化の前処理用の論理を格納するブロックＵＢＬＫの割り当て数Ａ（２）とを求める。
【００８１】
例えば、ブロック数判定部１６は、理論数Ｎ（１）の小数部の値が理論数Ｎ（２）の小数部の値より大きい場合、式（４）を用いて割り当て数Ａ（１）を求め、式（５）を用いて割り当て数Ａ（２）を求める。また、ブロック数判定部１６は、理論数Ｎ（１）の小数部の値が理論数Ｎ（２）の小数部の値以下の場合、式（６）を用いて割り当て数Ａ（１）を求め、式（７）を用いて割り当て数Ａ（２）を求める。式（４）から式（７）において、”ｃｅｉｌ”は、小数第一位の切り上げ処理を実行するＣＥＩＬＩＮＧ関数を示し、”ｆｌｏｏｒ”は、小数第一位の切り下げ処理を実行するＦＬＯＯＲ関数を示す。
Ａ（１）＝ｃｅｉｌ（Ｎ（１））  ‥‥（４）
Ａ（２）＝ｆｌｏｏｒ（Ｎ（２））  ‥‥（５）
Ａ（１）＝ｆｌｏｏｒ（Ｎ（１））  ‥‥（６）
Ａ（２）＝ｃｅｉｌ（Ｎ（２））  ‥‥（７）
式（１）を用いて理論数Ｎ（ｉ）を求めることで、延べ数Ｔ（ｎ）がブロックＵＢＬＫの数より多い場合にも、イントラ予測符号化の前処理の処理量とインター予測符号化の前処理の処理量との比に合わせて前処理をバランスよく実行することができる。
【００８２】
次に、ステップＳ４０において、構成制御部１８は、ブロック数判定部１６が求めた割り当て数Ａ（１）のブロックＵＢＬＫの各々に、イントラ予測符号化の前処理用の論理をプログラムし、論理をプログラムしたブロックＵＢＬＫを相互に接続する。また、構成制御部１８は、ブロック数判定部１６が求めた割り当て数Ａ（２）のブロックＵＢＬＫの各々に、インター予測符号化の前処理用の論理をプログラムし、論理をプログラムしたブロックＵＢＬＫを相互に接続する。以上の動作により、ブロックＵＢＬＫを使用した前処理の実行が可能になる。イントラ予測符号化の前処理およびインター予測符号化の前処理の例は、図１２で説明される。
【００８３】
図１０は、図９に示すフローにより求められる延べ数Ｔ（ｎ）、理論数Ｎ（ｉ）および割り当て数Ａ（ｎ）の一例を示す。図３と同一または同様の要素については、詳細な説明は省略する。なお、図１０に示す処理要求ＲＥＱ１−ＲＥＱ３は、図３に示す処理要求ＲＥＱ１−ＲＥＱ３とは異なる。前処理に使用可能なブロックＵＢＬＫの数Ｎは、６個である。例えば、イントラ予測符号化の前処理では、１個のブロックＵＢＬＫで単位時間当たりに３個の予測モードの処理が実行可能である（ＰＮ（１）＝”３”）。インター予測符号化の前処理では、１個のブロックＵＢＬＫで単位時間当たりに２個の動きベクトルに対する処理を実行可能である（ＰＮ（２）＝”２”）。
【００８４】
処理要求ＲＥＱ１に対応する動作では、特徴検出部１２は、４個の予測モード（ＮＭ（１）＝”４”）と３個の動きベクトル（ＮＭ（２）＝”３”）を選択する。処理量判定部１４は、式（２）を用いて延べ数Ｔ（１）＝”２”を求め、式（３）を用いて延べ数Ｔ（２）＝”３”を求める。処理要求ＲＥＱ１では、延べ数Ｔ（１）、Ｔ（２）の合計がブロックＵＢＬＫの数Ｎ以下であるため、ブロック数判定部１６は、理論数Ｎ（１）、Ｎ（２）を求めることなく、延べ数Ｔ（１）、Ｔ（２）を割り当て数Ａ（１）、Ａ（２）に設定する。
【００８５】
処理要求ＲＥＱ２に対応する動作では、特徴検出部１２は、６個の予測モード（ＮＭ（１）＝”６”）と９個（ＮＭ（２）＝”９”）の動きベクトルを選択する。処理量判定部１４は、式（２）を用いて延べ数Ｔ（１）＝”２”を求め、式（３）を用いて延べ数Ｔ（２）＝”５”を求める。ブロック数判定部１６は、式（１）を用いて、理論数Ｎ（１）＝”１．７”と、理論数Ｎ（２）＝”４．３”とを求める。また、ブロック数判定部１６は、式（４）を用いて割り当て数Ａ（１）＝”２”を求め、式（５）を用いて割り当て数Ａ（２）＝”４”を求める。換言すれば、ブロック数判定部１６は、理論数Ｎ（１）、Ｎ（２）の小数第一位を四捨五入して、割り当て数Ａ（１）、Ａ（２）を求める。
【００８６】
割り当て数Ａ（２）に対応する４個のブロックＵＢＬＫで処理可能な動きベクトルの数は、８個であり、特徴検出部１２が選択した９個より少ない。８個の動きベクトルを使用した符号化処理の精度は、９個の動きベクトルを使用した符号化処理の精度に比べて低いが、処理時間を精度よりも優先させるため、８個の動きベクトルのいずれかを選択する処理が実行される。なお、精度を処理時間よりも優先させる場合、図６（ａ）、（ｂ）、（ｃ）に示す動作と同様に、複数の処理サイクルを使用して、９個の動きベクトルのいずれかを選択する処理が実行される。
【００８７】
処理要求ＲＥＱ３に対応する動作では、特徴検出部１２は、７個の予測モード（ＮＭ（１）＝”７”）と１０個の動きベクトル（ＮＭ（２）＝”１０”）を選択する。処理量判定部１４は、式（２）を用いて延べ数Ｔ（１）＝”３”を求め、式（３）を用いて延べ数Ｔ（２）＝”５”を求める。ブロック数判定部１６は、式（１）を用いて、理論数Ｎ（１）＝”２．３”と、理論数Ｎ（２）＝”３．８”とを求める。また、ブロック数判定部１６は、式（６）を用いて割り当て数Ａ（１）＝”２”を求め、式（７）を用いて割り当て数Ａ（２）＝”４”を求める。換言すれば、ブロック数判定部１６は、理論数Ｎ（１）、Ｎ（２）の小数第一位を四捨五入して、割り当て数Ａ（１）、Ａ（２）を求める。
【００８８】
割り当て数Ａ（１）に対応する２個のブロックＵＢＬＫで処理可能な予測モードの数は、６個であり、特徴検出部１２が選択した７個より少ない。同様に、割り当て数Ａ（２）に対応する４個のブロックＵＢＬＫで処理可能な動きベクトルの数は、８個であり、特徴検出部１２が選択した１０個より少ない。処理時間を精度よりも優先させるため、６個の予測モードのいずれかと８個の動きベクトルのいずれかを選択する処理が実行される。なお、精度を処理時間よりも優先させる場合、図６（ａ）、（ｂ）、（ｃ）に示す動作と同様に、複数の処理サイクルを使用して、７個の予測モードのいずれかと１０個の動きベクトルのいずれかを選択する処理が実行される。
【００８９】
図１１は、イントラ予測符号化で使用される予測モードの一例を示す。図１１では、Ｈ．２６４／ＡＶＣ規格において、縦４画素および横４画素の画素ブロックの各画素の輝度を予測する９種類の予測モードが示される。画像の符号化は、画面の左上から右下まで水平方向に沿ってブロックの符号化を繰り返す、いわゆるラスタスキャン方式で実行される。このため、太枠で示す予測対象の１６画素の左側の画素と上側の画素は、符号化済みである。各予測モードにおいて、網掛けで示す符号化済みの画素の画素値が、矢印方向にある予測対象の画素の予測画素値として使用される。
【００９０】
例えば、モード０（vertical）では、予測対象のブロックの上側に位置する４個の画素の画素値が、下方向に向けて予測対象ブロックの画素に複写され、予測画像が生成される。モード１（horizontal）では、予測対象のブロックの左側に位置する４個の画素の画素値が、右方向に向けて予測対象ブロックの画素に複写され、予測画像が生成される。モード２（DC）では、予測対象のブロックの上側と左側に位置する８個の画素の画素値の平均値が、予測対象ブロックの画素に複写され、予測画像が生成される。
【００９１】
モード４（diagonal down-right）では、予測対象のブロックの左上側に位置する７個の画素の画素値が、右下方向に向けて予測対象ブロックの画素に複写され、予測画像が生成される。モード５（vertical-right）では、予測対象のブロックの上側に位置する４個の画素と左側に位置する１個の画素の画素値が、右下方向に向けて予測対象ブロックの画素に複写され、予測画像が生成される。モード６（horizontal-right）では、予測対象のブロックの左側に位置する４個の画素と上側に位置する１個の画素の画素値が、右下方向に向けて予測対象ブロックの画素に複写され、予測画像が生成される。
【００９２】
図１２は、図８に示すプログラマブル部３０にプログラムされる回路の一例を示す。図１２に示す回路は、動画像データを符号化し、ストリームを生成するＭＰＥＧ（Moving Picture Experts Group）エンコーダ等の符号化回路２００である。符号化回路２００は、処理時間がほぼ等しく、互いに独立に動作する３つのステージＳＴＧ１、ＳＴＧ２、ＳＴＧ３を含んでおり、ステージＳＴＧ１、ＳＴＧ２、ＳＴＧ３を順次に実行するパイプライン処理を実行することで、動画像データを符号化する。
【００９３】
符号化回路２００は、イントラ予測決定部２０２、動きベクトル検出部２０４、選択部２０６、イントラ予測部２０８およびインター予測部２１０を有する。また、符号化回路２００は、減算部２１２、直交変換・量子化部２１４、逆量子化・逆直交変換部２１６、加算部２１８、エントロピー符号化部２２０およびインループフィルタ２２２を有する。なお、フレームメモリは、図８に示す外部メモリ４０内に含まれる。
【００９４】
太枠で示すイントラ予測決定部２０２および動きベクトル検出部２０４の論理（ステージＳＴＧ１の回路）は、図９に示すフローの実行により図８に示すブロックＵＢＬＫにプログラムされる。例えば、イントラ予測決定部２０２および動きベクトル検出部２０４の論理は、符号化する画像毎に実行される図９のフローに基づいて、構成制御部１８により、画像毎に書き替えられる。
【００９５】
符号化回路２００において、イントラ予測決定部２０２および動きベクトル検出部２０４を除く要素の論理（ステージＳＴＧ２、ＳＴＧ３の回路）は、ブロックＵＢＬＫを除くブロックＢＬＫの少なくともいずれかにプログラムされる。例えば、ステージＳＴＧ２、ＳＴＧ３の回路は、符号化処理を開始する前に予めプログラムされ、動画像の各画像の符号化に使用される共通の回路である。そして、ステージＳＴＧ２、ＳＴＧ３の回路は、ステージＳＴＧ１が実行する前処理により求められた予測モードまたは動きベクトルを使用して、原画像の符号化を実行する。すなわち、情報処理装置１００Ａは、プログラマブル部３０をアクセラレータとして機能させて、動画像の符号化処理を実行する。
【００９６】
イントラ予測決定部２０２は、符号化に使用する規格で定められた複数（例えば、９個）の予測モードのうち、図９に示すステップＳ３２の処理により特徴検出部１２が選択したＮＭ（１）個の予測モードを保持する。イントラ予測決定部２０２は、ＮＭ（１）個の予測モード毎に、符号化済みのデータを復元することで生成した局所復号画像の画素の画素値からフレーム内予測画像を生成する。そして、イントラ予測決定部２０２は、複数の予測モードに対応して生成されたフレーム内予測画像のうち、原画像の符号化対象領域の画像に最も類似する予測画像を求め、最も類似する予測画像の生成に使用した予測モードをイントラ予測部２０８に出力する。
【００９７】
例えば、イントラ予測決定部２０２は、原画像における符号化対象領域の各画素の画素値と、生成されたフレーム内予測画像の各画素の画素値との差分絶対値和を求める。そして、イントラ予測決定部２０２は、差分絶対値和が最も小さい画像に対応する予測モードを符号化効率が最も高い予測モードとして選択し、選択した予測モードをイントラ予測部２０８に出力する。また、イントラ予測決定部２０２は、選択した予測モードに対応する差分絶対値和に、選択した予測モードを示す情報の情報量（例えば、ビット数）を加えることでコストを求め、求めたコストを選択部２０６に出力する。
【００９８】
動きベクトル検出部２０４は、複数の動きベクトルのうち、図９に示すステップＳ３４の処理により特徴検出部１２が選択したＮＭ（２）個の動きベクトルを保持する。動きベクトル検出部２０４は、フレームメモリから読み出される参照画像の中から、原画像の符号化対象領域に対してＮＭ（２）個の動きベクトルで示されるＮＭ（２）個のフレーム内予測画像を生成する。例えば、参照画像は、符号化したデータを用いて復元された１フレーム前の画像であり、フレーム内予測画像は、符号化対象領域と同じ大きさを有する。
【００９９】
動きベクトル検出部２０４は、ＮＭ（２）個のインター予測画像のうち、原画像の符号化対象領域の画像に最も類似する画像を求め、最も類似する画像の生成に使用した動きベクトルをインター予測部２１０に出力する。例えば、動きベクトル検出部２０４は、原画像における符号化対象領域の各画素の画素値と、ＮＭ（２）個のフレーム内予測画像の各画素の画素値との差分絶対値和を求める。そして、動きベクトル検出部２０４は、差分絶対値和が最も小さい参照領域に対応する動きベクトルを符号化効率が最も高い動きベクトルとして選択し、選択した動きベクトルをインター予測部２１０に出力する。また、動きベクトル検出部２０４は、選択した動きベクトルに対応する差分絶対値和に、選択した動きベクトルを示す情報の情報量（例えば、ビット数）を加えることでコストを求め、求めたコストを選択部２０６に出力する。
【０１００】
イントラ予測部２０８は、イントラ予測決定部２０２から受信した予測モードにしたがって、局所復号画像に含まれる所定の画素の画素値を用いて符号化対象領域のフレーム内予測画像を生成する。イントラ予測部２０８は、生成したフレーム内予測画像を、イントラ予測決定部２０２から受信した予測モードとともに選択部２０６に出力する。なお、予測モードは、イントラ予測決定部２０２から選択部２０６に直接出力されてもよい。
【０１０１】
インター予測部２１０は、フレームメモリから読み出される参照画像のうち、動きベクトル検出部２０４から受信する動きベクトルにより示される参照領域の画素の画素値を用いて、符号化対象領域のフレーム間予測画像を生成する。そして、インター予測部２１０は、生成したフレーム間予測画像を、動きベクトル検出部２０４から出力された動きベクトルとともに選択部２０６に出力する。なお、動きベクトルは、動きベクトル検出部２０４から選択部２０６に直接出力されてもよい。
【０１０２】
選択部２０６は、イントラ予測部２０８から受信するフレーム内予測画像とインター予測部２１０から受信するフレーム間予測画像のいずれかを、コストに基づいて選択し、選択した予測画像を減算部２１２および加算部２１８に出力する。選択部２０６は、イントラ予測決定部２０２から受信するコストが動きベクトル検出部２０４から受信するコストより低い場合、イントラ予測部２０８から受信するフレーム内予測画像および予測モードを出力する。
【０１０３】
また、選択部２０６は、動きベクトル検出部２０４から受信するコストがイントラ予測決定部２０２から受信するコストより低い場合、インター予測部２１０から受信するフレーム間予測画像および動きベクトルを出力する。フレーム内予測画像またはフレーム間予測画像は、減算部２１２および加算部２１８に出力され、予測モードまたは動きベクトルは、エントロピー符号化部２２０に出力される。
【０１０４】
減算部２１２は、選択部２０６から出力される予測画像（フレーム内予測画像またはフレーム間予測画像）と、原画像内の符号化対象領域の画像との差分を算出することで誤差画像を生成する。減算部２１２は、生成した誤差画像を直交変換・量子化部２１４に出力する。
【０１０５】
直交変換・量子化部２１４は、減算部２１２から受信する誤差画像を直交変換することで変換係数を生成し、生成した変換係数を量子化し、量子化した変換係数をエントロピー符号化部２２０および逆量子化・逆直行変換部に出力する。エントロピー符号化部２２０は、直交変換・量子化部２１４から受信する変換係数と選択部２０６から出力される予測モードまたは動きベクトルとをエントロピー符号化し、ストリームとして出力する。
【０１０６】
逆量子化・逆直交変換部２１６は、直交変換・量子化部２１４で量子化された変換係数を逆量子化し、逆量子化した変換係数を逆直交変換することで誤差画像を復元し、復元した誤差画像を加算部２１８に出力する。加算部２１８は、選択部２０６が出力する予測画像（フレーム内予測画像またはフレーム間予測画像）と、逆量子化・逆直行変換部が出力する誤差画像とを加算し、局所復号画像を生成する。加算部２１８は、生成した局所復号画像をイントラ予測決定部２０２、イントラ予測部２０８およびインループフィルタ２２２に出力する。
【０１０７】
インループフィルタ２２２は、加算部２１８から出力される局所復号画像のノイズを低減するフィルタ処理を実行し、ノイズを低減した局所復号画像をフレームメモリに格納する。フレームメモリに格納された局所復号画像は、動きベクトル検出部２０４およびインター予測部２１０により参照画像として使用される。
【０１０８】
図１３は、図８に示す情報処理装置１００Ａの動作の一例を示す。図４と同様の動作については、詳細な説明は省略する。図１３は、情報処理装置１００Ａが、図１０に示す処理要求ＲＥＱ１、ＲＥＱ２、ＲＥＱ３を順次受信した場合の動作を示す。
【０１０９】
例えば、図１３に示す各処理サイクルに割り当てられるサイクル時間ＴＣは、図１２に示すステージＳＴＧ１−ＳＴＧ３の各々のステージ時間に等しい。また、各処理要求ＲＥＱ１−ＲＥＱ３に基づいて動作する特徴検出部１２、処理量判定部１４およびブロック数判定部１６の動作時間、および構成制御部１８による論理のプログラム時間は、サイクル時間ＴＣ以下である。符号Ａ、Ｂ、Ｃ、Ｄは、イントラ予測決定部２０２の機能を実現するためにブロックＵＢＬＫにプログラムされる論理を示し、符号ａ、ｂ、ｃ、ｄは、動きベクトル検出部２０４の機能を実現するためにブロックＵＢＬＫにプログラムされる論理を示す。
【０１１０】
まず、特徴検出部１２、処理量判定部１４およびブロック数判定部１６は、処理要求ＲＥＱ１に基づいて、図９に示すステップＳ３０からステップＳ３８までの動作を実行し、論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（ｎ）を求める（図１３（ａ））。構成制御部１８は、ブロック数判定部１６が求めた割り当て数Ａ（ｎ）に基づいて、論理Ａおよび論理ａをブロックＵＢＬＫにプログラムし、ブロックＵＢＬＫ間の接続情報をプログラマブル部３にプログラムする（図１３（ｂ））。なお、論理ＡがプログラムされるブロックＵＢＬＫの１つは、複数の予測モードにそれぞれ対応して求められる差分絶対値和の最小値を求める論理を含む。論理ａがプログラムされるブロックＵＢＬＫの１つは、複数の動きベクトルに対応して求められる差分絶対値和の最小値を求める論理を含む。
【０１１１】
演算処理装置１０は、ブロックＵＢＬＫへの論理のプログラムが完了した後、処理要求ＲＥＱ１とともに受信した画像データ（１フレーム）を符号化する指示をプログラマブル部３０に発行する。ブロックＵＢＬＫにプログラムされた論理Ａおよび論理ａは、演算処理装置１０からの指示に基づいて、予測モードのいずれかと動きベクトルのいずれかを選択する処理を開始する（図１３（ｃ））。
【０１１２】
論理Ａで実現されるイントラ予測決定部２０２は、ステージＳＴＧ１において、符号化対象のマクロブロックに対して、特徴検出部１２が選択した複数の予測モード毎に差分絶対値和を求める。図１０に示す処理要求ＲＥＱ１では、４個の予測モードのそれぞれに対応する４個の差分絶対値和が、２個のブロックＵＢＬＫを使用して求められる。さらに、２個のブロックＵＢＬＫのいずれかにプログラムされた差分絶対値和の最小値を判定する論理を使用して、差分絶対値和が最も小さい予測モードを判定する処理が実行される。
【０１１３】
論理ａで実現されるインター予測部２１０は、ステージＳＴＧ１において、符号化対象のマクロブロックに対して、特徴検出部１２が選択した複数の動きベクトル毎に差分絶対値和を求める。図１０に示す処理要求ＲＥＱ１では、６個の動きベクトルのそれぞれに対応する６個の差分絶対値和が、３個のブロックＵＢＬＫを使用して求められる。さらに、３個のブロックＵＢＬＫのいずれかにプログラムされた差分絶対値和の最小値を判定する論理を使用して、差分絶対値和が最も小さい動きベクトルを判定する処理が実行される。
【０１１４】
ステージＳＴＧ１の処理が実行された処理サイクル３の次の処理サイクル４において、図１２に示すステージＳＴＧ２の処理が実行される（図１３（ｄ））。ステージＳＴＧ２の処理が実行される処理サイクル４において、次のマクロブロックに対するステージＳＴＧ１の処理が実行される（図１３（ｅ））。ステージＳＴＧ２の処理が実行された処理サイクル４の次の処理サイクル５において、図１２に示すステージＳＴＧ３の処理が実行され、マクロブロックに対応するストリームが生成される（図１３（ｆ））。ステージＳＴＧ３の処理が実行される処理サイクル５において、次のマクロブロックに対するステージＳＴＧ２の処理が実行される（図１３（ｇ））。そして、ステージＳＴＧ１、ＳＴＧ２、ＳＴＧ３の処理がパイプライン処理により順次に実行され、処理要求ＲＥＱ１に対応する画像データを符号化したストリームが順次に生成される（図１３（ｈ））。
【０１１５】
次に、処理要求ＲＥＱ２に基づいて、処理要求ＲＥＱ１に対応する処理と同様の処理が実行される。すなわち、特徴検出部１２、処理量判定部１４およびブロック数判定部１６は、論理をプログラムするブロックＵＢＬＫの割り当て数Ａ（ｎ）を求める（図１３（ｉ））。構成制御部１８は、ブロック数判定部１６が求めた割り当て数Ａ（ｎ）に基づいて、論理Ｂおよび論理ｂをブロックＵＢＬＫにプログラムし、ブロックＵＢＬＫ間の接続情報をプログラマブル部３にプログラムする（図１３（ｊ））。
【０１１６】
演算処理装置１０は、ブロックＵＢＬＫへの論理のプログラムが完了した後、処理要求ＲＥＱ２とともに受信した画像データ（１フレーム）を符号化する指示をプログラマブル部３０に発行する。ブロックＵＢＬＫにプログラムされた論理Ｂおよび論理ｂは、演算処理装置１０からの指示に基づいて、論理Ａおよび論理ａが実行する処理と同様に、予測モードのいずれかと動きベクトルのいずれかを選択する処理を開始する（図１３（ｋ））。
【０１１７】
ステージＳＴＧ１の処理が実行された処理サイクル９の次の処理サイクル１０において、ステージＳＴＧ２の処理が実行される（図１３（ｌ））。ステージＳＴＧ２の処理が実行される処理サイクル１０において、次のマクロブロックに対するステージＳＴＧ１の処理が実行される（図１３（ｍ））。ステージＳＴＧ２の処理が実行された処理サイクル１０の次の処理サイクル１１において、図１２に示すステージＳＴＧ３の処理が実行され、マクロブロックに対応するストリームが生成される（図１３（ｎ））。処理サイクル１１において、次のマクロブロックに対するステージＳＴＧ２の処理が実行される（図１３（ｏ））。そして、ステージＳＴＧ１、ＳＴＧ２、ＳＴＧ３の処理がパイプライン処理により順次に実行され、処理要求ＲＥＱ２に対応する画像データを符号化したストリームが順次に生成される（図１３（ｐ））。
【０１１８】
処理要求ＲＥＱ３に基づく処理は、論理Ｃおよび論理ｃをブロックＵＢＬＫにプログラムすることで、処理要求ＲＥＱ１、ＲＥＱ２に基づく処理と同様に実行される。
【０１１９】
以上、図８から図１３に示す実施形態においても、図１から図７に示す実施形態と同様の効果を得ることができる。すなわち、イントラ予測符号化の前処理およびインター予測符号化の前処理の規模が、画像毎に変化する場合にも、２つの前処理をバランスよく実行することができる。また、処理量判定部１４が求めた前処理の各々を実行するブロックＵＢＬＫの延べ数Ｔ（ｎ）が、ブロックＵＢＬＫの数より多い場合にも、前処理の処理量の比に合わせて前処理をバランスよく実行することができる。
【０１２０】
この結果、ステージＳＴＧ１において、差分絶対値和が相対的に小さい予測モードと動きベクトルを選択することができ、ステージＳＴＧ２、ＳＴＧ３において、画像の符号化の効率を従来に比べて向上することができる。すなわち、動画像の符号化処理における処理性能を従来に比べて向上することができる。
【０１２１】
さらに、図８から図１３に示す実施形態では、特徴検出部１２は、予測モードの数および動きベクトルの数を画像毎に求め、図１２に示すステージＳＴＧ１、ＳＴＧ２、ＳＴＧ３は、符号化処理をマクロブロック毎に実行される。これにより、符号化処理において図９に示す処理の時間が占める割合を、予測モードの数および動きベクトルの数をマクロブロック毎に求める場合に比べて下げることができる。例えば、縮小画像を使用して予測モードの数および動きベクトルの数を求めることで、所定数の予測モードおよび所定数の動きベクトルの検出を、符号化処理の処理サイクル内で実行することが可能になる。この結果、符号化効率を従来に比べて向上することができる。
【０１２２】
以上の図１から図１０に示す実施形態に関し、さらに以下の付記を開示する。
（付記１）
論理をプログラム可能な複数の領域を有するプログラマブル部と、
複数種の処理に使用されるデータの特徴に基づいて前記複数種の処理のそれぞれの処理量を求める第１の判定部と、
前記第１の判定部が求めた処理量に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求める第２の判定部と、
前記複数種の処理毎に求めた数の前記領域に、前記複数種の処理の各々を実行する論理をプログラムする構成制御部と
を備えることを特徴とする情報処理装置。
（付記２）
前記第１の判定部は、前記複数種の処理を実行するそれぞれの前記領域の延べ数を処理量として求め、
前記第２の判定部は、前記延べ数の合計が前記複数の領域の数より多い場合、前記延べ数の比率に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求めることを特徴とする付記１記載の情報処理装置。
（付記３）
前記複数種の処理は、動画像の符号化処理において、フレーム内で画素値を予測するイントラ予測の前処理と、フレーム間で画像の動きを予測するインター予測の前処理であり、
前記第１の判定部は、動画像の画像データの特徴に基づいて前記イントラ予測の前記前処理で使用する予測モードの数を求め、求めた予測モードの数に基づいて前記イントラ予測の前記前処理の処理量を求め、画像データの特徴に基づいて前記インター予測の前記前処理で使用する動きベクトルの数を求め、求めた動きベクトルの数に基づいて前記インター予測の前記前処理の処理量を求め、
前記第２の判定部は、前記第１の判定部が求めた前記前処理の処理量に基づいて、前記イントラ予測の前記前処理を実行する論理をプログラムする前記領域の数と、前記インター予測の前記前処理を実行する論理をプログラムする前記領域の数とを求めること
を特徴とする付記１または付記２記載の情報処理装置。
（付記４）
前記第１の判定部は、動画像を表す複数の画像毎に、画像データの特徴に基づいて前記前処理の処理量を求め、
前記イントラ予測の前記前処理、前記イントラ予測、前記インター予測の前記前処理および前記インター予測は、画像を分割した複数のブロック毎に実行されることを特徴とする付記３記載の情報処理装置。
（付記５）
前記複数種の処理に使用されるデータの特徴を検出する特徴検出部を備え、
前記第１の判定部は、前記特徴検出部が検出したデータの特徴に基づいて、前記複数種の処理のそれぞれの処理量を求めること
を特徴とする付記１ないし付記４のいずれか１項記載の情報処理装置。
（付記６）
前記複数種の処理の各々を実行するために前記複数の領域の各々にプログラムされる論理と、論理をプログラムした前記領域間を接続する接続情報とを記憶する構成情報記憶部を有すること
を特徴とする付記１ないし付記５のいずれか１項記載の情報処理装置。
（付記７）
前記複数種の処理の各々は、前記複数の領域を使用して並列に実行されることを特徴とする付記１ないし付記６のいずれか１項記載の情報処理装置。
（付記８）
前記複数種の処理の各々は、パイプライン処理に含まれる複数の処理ステージのいずれかにおいて、ステージの処理時間内に実行されること
を特徴とする付記１ないし付記７のいずれか１項記載の情報処理装置。
（付記９）
前記複数種の処理は、共通の処理ステージを使用して並列に実行されることを特徴とする付記８記載の情報処理装置。
（付記１０）
前記複数種の処理は、互いに異なる処理ステージを使用して直列に実行されることを特徴とする付記８記載の情報処理装置。
（付記１１）
論理をプログラム可能な複数の領域を有するプログラマブル部を有する情報処理装置の制御方法において、
情報処理装置が、
複数種の処理に使用されるデータの特徴に基づいて前記複数種の処理のそれぞれの処理量を求め、
求めた処理量に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求め、
求めた数の前記領域に、前記複数種の処理の各々を実行する論理をプログラムすること
を特徴とする情報処理装置の制御方法。
（付記１２）
論理をプログラム可能な複数の領域を有するプログラマブル部を有する情報処理装置の制御プログラムにおいて、
複数種の処理に使用されるデータの特徴に基づいて前記複数種の処理のそれぞれの処理量を求め、
求めた処理量に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求め、
求めた数の前記領域に、前記複数種の処理の各々を実行する論理をプログラムする
処理を情報処理装置に実行させることを特徴とする情報処理装置の制御プログラム。
（付記１３）
論理をプログラム可能な複数の領域を有するプログラマブル部を有する情報処理装置の制御プログラムを記録した記録媒体において、
複数種の処理に使用されるデータの特徴に基づいて前記複数種の処理のそれぞれの処理量を求め、
求めた処理量に基づいて、前記複数種の処理毎に論理をプログラムする前記領域の数を求め、
求めた数の前記領域に、前記複数種の処理の各々を実行する論理をプログラムする
処理を情報処理装置に実行させる制御プログラムを記録したことを特徴とする記録媒体。
【０１２３】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１２４】
１…演算処理装置；１ａ…処理量判定部；１ｂ…ブロック数判定部；１ｃ…構成制御部；２…記憶装置；２ｂ…構成情報；２ａ…制御プログラム；３…プログラマブル部；４…記録媒体；１０…演算処理装置；１２…特徴検出部；１４…処理量判定部；１６…ブロック数判定部；１８…構成制御部；２０…メインメモリ；２２…制御プログラム；２４…他のプログラム；２６…構成情報；３０…プログラマブル部；４０…外部メモリ；５０…入出力インタフェース；６０…ＨＤＤ；７０…通信インタフェース；８０…記録媒体；１００、１００Ａ…情報処理装置；２００…符号化回路；２０２…イントラ予測決定部；２０４…動きベクトル検出部；２０６…選択部；２０８…イントラ予測部；２１０…インター予測部；２１２…減算部；２１４…直交変換・量子化部；２１６…逆量子化・逆直交変換部；２１８…加算部；２２０…エントロピー符号化部；２２２…インループフィルタ；ＢＬＫ…ブロック；ＢＵＳ１、ＢＵＳ２、ＢＵＳ３、ＢＵＳ４…バス；ＦＦ…フリップフロップ；ＬＵＴ…ルックアップテーブル；ＮＷ…ネットワーク；ＲＥＱ…処理要求；ＳＴＧ１、ＳＴＧ２、ＳＴＧ３…ステージ；ＵＢＬＫ…ブロック
【図１】
2018078465.tif 000004
【図２】
2018078465.tif 000005
【図３】
2018078465.tif 000006
【図４】
2018078465.tif 000007
【図５】
2018078465.tif 000008
【図６】
2018078465.tif 000009
【図７】
2018078465.tif 000010
【図８】
2018078465.tif 000011
【図９】
2018078465.tif 000012
【図１０】
2018078465.tif 000013
【図１１】
2018078465.tif 000014
【図１２】
2018078465.tif 000015
【図１３】
2018078465.tif 000016