(57)【特許請求の範囲】
【請求項１】
再構成可能回路と、
パイプラインを構成する複数のコンフィギュレーションを前記再構成可能回路上に順に再構成して動作させる制御を行う再構成制御手段と、
内部メモリと、
外部装置と共用する外部メモリと接続するための接続回路と、
前記再構成可能回路上に再構成された前記各コンフィギュレーションのデータ入力及びデータ出力のための接続先を、前記内部メモリと、前記接続回路経由の前記外部メモリと、の中からそれぞれ選択する選択手段と、
処理対象のデータを分割せずに前記パイプラインの先頭のコンフィギュレーションに入力し且つ前記パイプラインを構成する複数のコンフィギュレーションのすべてが前記外部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第１のデータ受け渡し方式と、前記処理対象のデータを前記内部メモリの容量に応じたデータ量のデータ単位に分割して前記先頭のコンフィギュレーションに入力し且つ前記複数のコンフィギュレーションのすべてが前記内部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第２のデータ受け渡し方式と、を含む複数のデータ受け渡し方式のそれぞれについて、当該データ受け渡し方式において前記パイプラインが前記外部メモリに対して入出力する帯域幅と、当該データ受け渡し方式において前記パイプラインに入力されたデータの量に対する前記パイプラインから出力されるデータの量の比に基づく前記パイプラインの性能指標値と、を計算し、前記各データ受け渡し方式の前記帯域幅と前記性能指標値とに基づき、前記複数のデータ受け渡し方式のうちの１つを選択し、選択したデータ受け渡し方式に従って前記選択手段の選択を制御する選択制御手段と、
を備えるデータ処理装置。
【請求項２】
前記選択制御手段は、前記帯域幅があらかじめ設定された制約値以下であるデータ受け渡し方式の中で、前記性能指標値が示す性能が最も高いデータ受け渡し方式を選択する、ことを特徴とする請求項１に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関する。
【背景技術】
【０００２】
内部の論理回路構成を再構成（変更）可能なＰＬＤ(Programmable Logic Device)やＦＰＧＡ(Field Programmable Gate Array)などの再構成可能回路（プログラマブル論理回路とも呼ばれる）が普及している。ＰＬＤやＦＰＧＡは、回路起動時に内部の論理回路構成を設定するものが一般的であるが、回路が動作中に論理回路構成を変更可能なものも開発されている。また、近年では、内部の論理回路構成を高速に（例えば１クロックサイクルで）再構成可能な動的再構成可能プロセッサ（ＤＲＰ：Dynamically Reconfigurable Processor）の利用も進んでいる。
【０００３】
再構成可能回路上に再構成される論理回路構成は、コンフィギュレーションと呼ばれる。再構成可能回路を使用するシステムでは、再構成可能回路のコンフィギュレーションを順次書き換えていくことで、再構成可能回路を用いて再構成可能回路上に一度に構成できない規模の回路を実装することができる。
【０００４】
再構成可能回路を使用するシステムでは、一般に、汎用のＣＰＵの制御下で再構成可能回路を使用することが多い。また、一連の処理の一部をＣＰＵによりソフトウエア処理し、他の一部を再構成可能回路によりハードウエア処理するといった組み合わせ方もよく行われている。従来、このようなシステムでは、ＣＰＵと再構成可能回路のそれぞれに専用のメモリを設け、ＣＰＵと再構成可能回路の各々の処理途中のデータは、それぞれのメモリに対して読み書きすることが一般的であった。
【０００５】
このような従来の実装方式に対し、ＣＰＵと再構成可能回路との作業用のメモリを共通化することで、メモリのコストを低減すること、ＩＰコアとして既存のＡＳＩＣ等に搭載することにより、デバイスコスト削減、ボードの占有面積も低減することが考えられる。ただし、この場合、ＣＰＵ、再構成可能回路、及びメモリの帯域幅の関係に注意が必要である。例えば、印刷におけるビットマップページ画像の処理などの画像処理に再構成可能回路（特にＤＲＰ）を利用する場合、取り扱う画像データが大きいので、再構成可能回路の入出力帯域幅がメモリ帯域幅を占有し、ＣＰＵ（及びその他周辺機器）に割けるメモリ帯域を割けなくなる場合があり得る。
【０００６】
これに対し、例えば再構成可能回路を実装するチップ上に小容量の内部バッファを作り込み、再構成可能回路上に構成したコンフィギュレーションの処理結果を、内部バッファを介して次のコンフィギュレーションに受け渡すことで、再構成可能回路の使用するメモリ帯域を減らすことも考えられる。このように小容量の内部バッファを用いる場合、処理対象のデータをそのバッファの容量に応じた量ごとに区切って処理する必要がある。ここで、例えば画像のフィルタ処理のように、１つのデータ点（例えば画素）の値を計算するのに、そのデータ点を基準としたあるウインドウ幅のデータを読み込むウインドウ処理では、処理したいデータ範囲の両端にそれぞれウインドウ幅分だけ余計にデータを読み込む必要がある。このため、処理対象のデータを比較的少量ずつに区切って内部バッファに読み込むようにする場合、処理対象のデータの量に対するウインドウ幅の相対的な割合が高くなり、処理性能（処理効率）の低下を招く。例えば、１１×１１ピクセルのフィルタを用いたフィルタ処理を、内部バッファに読み込んだ３３ラインからなる画像に適用した場合、フィルタ処理結果は２３ライン分しか得られず、処理効率は２３／３３＝約７０％程度となってしまう。
【０００７】
特許文献１に開示される画像処理装置は、画像データを取得してフレームメモリに転送する画像データ取得モジュールと、フレームメモリの画像データをブロック単位で読み出すデータ転送モジュールと、転送されたブロック画像データの前処理を行う前処理モジュールと、前処理結果を後段へ転送するデータ転送モジュールと、転送された前処理済みのブロック画像データを第１のセレクタを介して選択的に記憶するバッファ群と、バッファ群のいずれか１つの画像データを選択する第２のセレクタと、選択読み出しをしたブロック画像データに対して画像処理を行う画像処理モジュールとで構成される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−３１１７４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、データ処理装置が使用する外部メモリの帯域幅の制限と、データ処理装置が行う処理の性能との両立を目的とする。
【課題を解決するための手段】
【００１０】
請求項１に係る発明は、再構成可能回路と、パイプラインを構成する複数のコンフィギュレーションを前記再構成可能回路上に順に再構成して動作させる制御を行う再構成制御手段と、内部メモリと、外部装置と共用する外部メモリと接続するための接続回路と、前記再構成可能回路上に再構成された前記各コンフィギュレーションのデータ入力及びデータ出力のための接続先を、前記内部メモリと、前記接続回路経由の前記外部メモリと、の中からそれぞれ選択する選択手段と、処理対象のデータを分割せずに前記パイプラインの先頭のコンフィギュレーションに入力し且つ前記パイプラインを構成する複数のコンフィギュレーションのすべてが前記外部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第１のデータ受け渡し方式と、前記処理対象のデータを前記内部メモリの容量に応じたデータ量のデータ単位に分割して前記先頭のコンフィギュレーションに入力し且つ前記複数のコンフィギュレーションのすべてが前記内部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第２のデータ受け渡し方式と、を含む複数のデータ受け渡し方式のそれぞれについて、当該データ受け渡し方式において前記パイプラインが前記外部メモリに対して入出力する帯域幅と、当該データ受け渡し方式において前記パイプラインに入力されたデータの量に対する前記パイプラインから出力されるデータの量の比に基づく前記パイプラインの性能指標値と、を計算し、前記各データ受け渡し方式の前記帯域幅と前記性能指標値とに基づき、前記複数のデータ受け渡し方式のうちの１つを選択し、選択したデータ受け渡し方式に従って前記選択手段の選択を制御する選択制御手段と、を備えるデータ処理装置である。
【００１１】
請求項２に係る発明は、前記選択制御手段は、前記帯域幅があらかじめ設定された制約値以下であるデータ受け渡し方式の中で、前記性能指標値が示す性能が最も高いデータ受け渡し方式を選択する、ことを特徴とする請求項１に記載のデータ処理装置である。
【発明の効果】
【００１２】
請求項１に係る発明によれば、データ処理装置が使用する外部メモリの帯域幅の制限と、データ処理装置が行う処理の性能との両立を図ることができる。
【００１３】
請求項２に係る発明によれば、複数のデータ受け渡し方式のうち、外部メモリを使用する帯域幅が制約値以下の、最も性能のよい方式を用いることができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態のＤＲＰシステムの概略構成の例を示す図である。
【図２】実施形態のＤＲＰシステムの詳細な構成の例を示す図である。
【図３】ＤＲＰコアの再構成制御のための制御ソフトウエアの機能構成の例を示す図である。
【図４】データ受け渡し方式の一具体例である第１方式を説明するための図である。
【図５】データ受け渡し方式の一具体例である第２方式を説明するための図である。
【図６】データ受け渡し方式の一具体例である第３方式を説明するための図である。
【図７】データ受け渡し方式の一具体例である第４方式を説明するための図である。
【図８】第１〜第４方式の使用メモリ帯域幅と性能の指標値をまとめた表を示す図である。
【図９】受け渡し方式判定部の処理手順の一例を示す図である。
【発明を実施するための形態】
【００１５】
図１に、この実施形態の制御が適用されるＤＲＰシステムの構成例を示す。このシステムは、ＣＰＵ・ＤＲＰ混載チップ１０と、外部メモリ２０とを備える。
【００１６】
ＣＰＵ・ＤＲＰ混載チップ１０は、ＣＰＵ（中央演算装置）コア１２、ＤＲＰ（動的再構成可能プロセッサ）コア１４、内部バッファ１５、メモリコントローラ１６及びその他周辺回路を、ＡＳＩＣ（Application Specific Integrated Circuit）等の形で集積した集積回路チップである。ＣＰＵコア１２及びメモリコントローラ１６及び内部バッファ１５は内部バス１８に接続され、ＤＲＰコア１４は内部バッファ１５に接続されている。外部メモリ２０は、メモリコントローラ１６に接続されており、ＣＰＵコア１２及びＤＲＰコア１４は、メモリコントローラ１６を介して外部メモリ２０にアクセスすることができる。図示例は一例に過ぎず、例えば、内部バッファ１５の代わりにＤＲＰコア１４を内部バス１８に直接接続し、ＤＲＰコア１４に内部バッファ１５を接続する構成とするなどといった他の構成でもよい。
【００１７】
ＤＲＰコア１４は、論理回路を構成するための複数の回路要素（ＰＥ：プロセッサエレメント）とそれらＰＥ間の接続を構成するための配線リソースとを備え、それらＰＥの設定やＰＥ間の接続構成を変えることにより、様々な構成の論理回路として動作することができる。また、ＤＲＰコア１４は、複数のコンフィギュレーションメモリを備えている。１つのコンフィギュレーションメモリには、１つのコンフィギュレーションを定義するコンフィギュレーションデータが記憶される。ここでは、コンフィギュレーションという用語は、再構成可能回路上に同時に存在する論理回路のことを意味するものとして用いる。ＤＲＰコア１４では、複数のコンフィギュレーションメモリのうちの１つが有効（アクティブ）とされると、そのメモリ内に保持されるデータに従ってＰＥの設定やＰＥ間の配線の組み替えが行われ、これによりそのコンフィギュレーションの回路が構成される。１つの時点では１つのコンフィギュレーションメモリのみがアクティブであり、別のコンフィギュレーションメモリをアクティブにすることにより、ＤＲＰコア１４のコンフィギュレーションが切り替えられる。例えば、順番に切り替えるべきコンフィギュレーションデータをそれぞれ別のコンフィギュレーションメモリにロードしておき、それらを順にアクティブにしていくことで、それら一連のコンフィギュレーションによるパイプライン処理を実現することができる。あるコンフィギュレーションメモリをアクティブにしている間に、別のコンフィギュレーションメモリにデータをロードすることで、ロードに要する時間が隠蔽される。ＤＲＰコア１４内に構成されるコンフィギュレーション同士の間のデータの受け渡しは、内部バッファ１５又は外部メモリ２０に選択的に用いて行われる。
【００１８】
ＣＰＵコア１２は、ＤＲＰコア１４のコンフィギュレーションの再構成（書き換え）や、再構成したコンフィギュレーションの動作を制御する再構成制御ソフトウエア（図示省略）を実行する。また、ＣＰＵコア１２は、画像処理等のアプリケーションソフトウエア（図示省略）を実行し、そのアプリケーションソフトウエアの中からＤＲＰコア１４を呼び出し、特定の処理をＤＲＰコア１４上のコンフィギュレーション群によりハードウエア処理させることもできる。ＣＰＵコア１２は、例えば、図示省略した上位システム（例えば印刷装置の制御のための大きなソフトウエアを実行する上位のＣＰＵ）からの指示に応じて、そのようなアプリケーション処理を実行する。
【００１９】
メモリコントローラ１６は、ＣＰＵコア１２及びＤＲＰコア１４から外部メモリ２０へのメモリアクセスを制御する。
【００２０】
図２を参照して、この実施形態のＤＲＰシステムの更に詳細な構成の例を説明する。この例では、ＤＲＰコア１４の入力及び出力は、それぞれセレクタＳＥＬを介して調停器３０及び３４にそれぞれ接続されている。調停器３０は、内部バッファ１５への読み書き要求を調停する回路であり、メモリコントローラ３２を介して、内部バッファ１５である埋込ＤＲＡＭ(Dynamic RAM)に接続されている。メモリコントローラ３２は、ＤＲＰコア１４から内部バッファ１５へのアクセスを制御する。なお、埋込ＤＲＡＭはＳＲＡＭなど他のオンチップメモリでもよい。
【００２１】
調停器３４は、外部メモリ２０に対する読み書き要求を調停する回路である。調停器３４は、チップ１０の内部バス１８に対してバスＩ／Ｆ（インタフェース）回路３６を介して接続されており、これによりＤＲＰコア１４は、内部バス１８を経由して外部メモリ２０にアクセス可能となっている。バスＩ／Ｆ回路３６は、調停器３４を介してＤＲＰコア１４を内部バス１８に接続するためのインタフェース回路である。バスＩ／Ｆ回路３９は、ＣＰＵコア１２を内部バス１８に接続するためのインタフェース回路である。セレクタ制御回路３８は、ＣＰＵコア１２の制御に応じて、ＤＲＰコア１４の入力側及び出力側の各セレクタＳＥＬの選択状態を、調停器３４（外部メモリ２０）側と調停器３０（内部バッファ１５）側で切り替える。図示のように、ＤＲＰコア１４は入力チャネル（ストリームとも呼ばれる）と出力チャネルをそれぞれ複数有しており、セレクタＳＥＬはそれらチャネルごとに設けられる。すなわち、ＤＲＰコア１４内に再構成されたコンフィギュレーション内の複数の回路が、それぞれ異なるチャネルを用いて異なるメモリアドレスに対して読み書きを行うことができると共に、それら読み書きの先をチャネルごとに、内部バッファ１５又は外部メモリ２０に切り替えることができる。
【００２２】
ＣＰＵコア１２が実行する、ＤＲＰコア１４の再構成制御のための制御ソフトウエアの機能構成の例を図３に示す。この例において、再構成制御部５０は、ＤＲＰコア１４上に、時系列的なパイプラインを構成する一連のコンフィギュレーションを順に再構成し、動作させていく制御を行う。このような一連のコンフィギュレーションからなる列をコンフィギュレーションパイプラインと呼ぶこととする。受け渡し方式判定部４０は、そのパイプラインの各コンフィギュレーション間のデータ（処理結果）の受け渡しを、内部バッファ１５経由とするか外部メモリ２０経由とするかを判定する。そのパイプラインの先頭のコンフィギュレーションに対する入力データと、末尾のコンフィギュレーションの出力データとは、ＣＰＵコア１２からのアクセスのために外部メモリ２０に保持されるが、隣り合うコンフィギュレーション同士の間のデータの受け渡しは内部バッファ１５経由でも外部メモリ２０経由でもよい。
【００２３】
内部バッファ１５経由でデータを受け渡す場合、その分だけ外部メモリ２０の帯域をあけることができる。しかし、その一方で、内部バッファ１５は、チップ１０内に埋め込まれるものなので、外部メモリ２０ほどの大きな容量はとれない。例えば、フルカラーの印刷ページ画像のデータ量は、Ａ４サイズ、解像度６００ｄｐｉ（dot per inch）で、１ページ当たり約１００メガバイト(３色の場合)となる。外部メモリ２０としては、数百メガ〜数ギガバイトの容量のものが通常用いられるが、限られた集積回路上に埋め込まれる内部バッファ１５の容量は、せいぜい数メガバイト程度であり、１ページ分の画像全体を収めることはできない。このため、内部バッファ１５経由でデータの受け渡しを行う場合、コンフィギュレーションに入力する処理対象のデータを、内部バッファ１５に収まる単位に分割し、その単位ごとにＤＲＰコア１４に入力して処理させることになる。前述の通り、フィルタ処理などのウインドウ処理では、処理により生成されるデータ量よりもウインドウのサイズ分だけ大きなデータを読み込む必要があり、読み込むデータが小さくなるほど、ウインドウサイズの占める割合が大きくなるため、読み込んだデータに対する処理結果のデータの割合（これを処理の性能、すなわち処理効率と呼ぶ）が小さくなる。
【００２４】
なお、印刷等のためのページのラスター画像データを分割する場合、副走査方向に沿って、ある高さ（ライン数）ごとのバンドに分割することが一般的である。
【００２５】
一方、コンフィギュレーション間でのデータの受け渡しを外部メモリ２０経由で行う場合、内部バッファ１５の場合のような処理効率の低下はない。しかし、その代わりに外部メモリ２０の帯域を多く使用することになり、ＣＰＵコア１２や他の周辺機器からの外部メモリ２０へのアクセスを圧迫する可能性がある。
【００２６】
そこで、受け渡し方式判定部４０は、性能と外部メモリ２０の使用帯域との兼ね合いからみて適切な受け渡し方式を判定するのである。
【００２７】
コンフィギュレーションパイプライン内の（時間的に）隣り合うコンフィギュレーション同士の間隔ごとに、内部バッファ１５経由か外部メモリ２０経由かを選択することができるので、１つのコンフィギュレーションパイプラインのデータ受け渡し方式は、それら各間隔についての選択結果の組み合わせとなる。
【００２８】
また、処理対象のデータを単位ごとに分割すること（例えば、ラスター画像データのバンド分割）は、外部メモリ２０経由でデータを受け渡す場合に行ってもよい。この場合、コンフィギュレーション同士の１つの間隔でのデータ受け渡しは、処理対象データを分割せずに外部メモリ２０経由で行う、単位ごとに分割して外部メモリ２０経由で行う、単位ごとに分割して内部バッファ１５経由で行う、の３通りがある。
【００２９】
受け渡し方式生成部４２は、ＤＲＰコア１４に構成すべきコンフィギュレーションパイプラインの情報（すなわち、各コンフィギュレーションを規定するコンフィギュレーションデータと、それらコンフィギュレーションの並び順の情報とを含む情報）が与えられると、そのパイプラインにおいて採用し得るすべてのデータ受け渡し方式を生成する。生成されるデータ受け渡し方式には、（１）処理対象データを分割せず、パイプライン全体に渡って外部メモリ２０経由でデータ受け渡しを行う方式、（２）処理対象データを内部バッファ１５の容量に応じたデータ量の単位（例えばバンド）ごとに分割し、パイプライン全体に渡って内部バッファ１５経由でデータ受け渡しを行う方式、が含まれる。また、（３）処理対象データを単位ごとに分割し、パイプライン全体に渡って外部メモリ２０経由でデータ受け渡しを行う方式が含まれてもよい。また、受け渡し方式生成部４２は、それらの混合方式として、パイプラインのコンフィギュレーション間ごとに、上記（１）〜（３）の方式のいずれかを選択した方式を、その選択の組み合わせの数だけ生成してもよい。
【００３０】
受け渡し方式判定部４０は、これら生成された複数のデータ受け渡し方式の中から、ＤＲＰコア１４に生成されるコンフィギュレーションパイプラインの性能（処理効率）と、外部メモリ２０のメモリ帯域のうちＤＲＰコア１４が使用する帯域と、の観点から、最適なデータ受け渡し方式を判定する。ここで、ＤＲＰコア１４の使用メモリ帯域は使用メモリ帯域指標値計算部４４により計算され、性能は性能指標値計算部４６により計算される。これらの計算については、後で具体例を交えて説明する。
【００３１】
パラメータ設定部４８は、受け渡し方式の判定や、ＤＲＰコア１４の使用メモリ帯域及び性能指標値などの計算に用いるパラメータや条件の設定をユーザから受け付けるためのユーザインタフェースである。例えば、設定されるパラメータや条件には、コンフィギュレーションパイプラインを構成する各コンフィギュレーションがそれぞれウインドウ処理を行うものであるか否かを示す情報、ウインドウ処理を行う場合のウインドウサイズ、処理対象データのサイズ、外部メモリ２０の全メモリ帯域のうちのＤＲＰコア１４に割り当てる上限帯域（帯域幅制約と呼ぶ）などのうちの１以上が含まれる。これらパラメータを用いた計算や判定については、後で具体例を交えて説明する。
【００３２】
受け渡し方式判定部４０が判定したデータ受け渡し方式は、選択指示出力部５２に設定される。選択指示出力部５２は、設定されたデータ受け渡し方式に従って、セレクタＳＥＬの選択状態を切り替えるための指示をセレクタ制御回路３８に発し、セレクタ制御回路３８はその指示に従って各セレクタＳＥＬの接続先を切り替える。ここで、選択指示出力部５２は、再構成制御部５０がＤＲＰコア１４のコンフィギュレーションを書き換えるごとに、書き換え後のコンフィギュレーションのためのデータ入力元と出力先とを選択するようにしてもよい。
【００３３】
次に、図４〜図７を参照して、データ受け渡し方式の具体例を説明する。ここでは、コンフィギュレーションパイプラインの具体例として、それぞれ１１×１１画素のフィルタを用いる画像処理を行う３つのコンフィギュレーションからなるパイプラインを想定する。これら３つのコンフィギュレーションを、パイプラインの先頭から順に、Ｆｕｎｃ１，Ｆｕｎｃ２，Ｆｕｎｃ３と名付ける。また、内部バッファ１５の容量に収まるという条件から、処理対象の画像データの分割数は１０バンドと判定されたとする。
【００３４】
図４に示す第１方式は、処理対象のページ画像をバンド分割せず、またコンフィギュレーション間のデータの受け渡しは全て外部メモリ２０経由で行う方式である。この方式では、ＤＲＰコア１４にＦｕｎｃ１を再構成し、１ページの画像を外部メモリ２０からＤＲＰコア１４に読み込ませる（図中のｓｔｒｍ０）。なお「ｓｔｒｍ」はデータの「ストリーム」を意味する。以下では、このように、ＤＲＰコア１４に入力されるデータ、及びＤＲＰコア１４から出力されるデータを「ストリーム」と呼ぶことにする。これによりＦｕｎｃ１がその１ページのデータを処理してその１ページ分の処理結果のストリームを外部メモリ２０に書き出す（ｓｔｒｍ１）。次に、ＤＲＰコア１４にＦｕｎｃ２を再構成し、Ｆｕｎｃ１の処理結果１ページ分をＦｕｎｃ２に入力（ｓｔｒｍ１）して処理させ、これにより処理結果１ページ分が外部メモリ２０に書き出される（ｓｔｒｍ２）。ついで、Ｆｕｎｃ３がＦｕｎｃ２の処理結果を外部メモリ２０から読み込んで処理し、その処理結果を外部メモリ２０に書き出す。
【００３５】
この方式の場合、１１×１１画素のフィルタを考慮すると、ページ画像の処理結果を得るには、ページの四辺（最外殻）の画素を５画素分ずつ複製するリプリケーション処理を行うことで、ページを縦横に合計１０画素ずつ拡張する必要がある。リプリケーションは、コンフィギュレーションごとに行えばよい。後述するバンド分割を伴う方式の場合、複数バンドに渡って同じデータを重複して読み込む必要があるが、この第１方式では、リプリケーションの必要はあるが、バンド分割の場合のような重複的なデータ読込は必要ない。また、リプリケーションした縦横１０画素分の幅は、ページ全体からすれば無視できるほど小さい（図４では、図５等の関係でページサイズを便宜上８０×８００画素として示したが、実際には縦横とも画素数はそれよりもはるかに多い）。このため、このコンフィギュレーションパイプラインの最終的な出力データ（1ページ分）のサイズを「１」とすると、Ｆｕｎｃ１，２，３のそれぞれの入力データ及び出力データの量は、ｓｔｒｍ１＝ｓｔｒｍ２＝ｓｔｒｍ３＝１としてよい。各コンフィギュレーションが、サイズ「１」のデータを入力し出力するので、コンフィギュレーションパイプライン全体では外部メモリ２０との間でサイズ「６」のデータをやりとりすることになる。すなわち、１コンフィギュレーション当たりの平均では、サイズ「２」のストリームを外部メモリ２０に読み書きすることになる。すなわち、この方式でＤＲＰコア１４が使用する外部メモリ２０の帯域を表す指標値は「２」となる。このストリームサイズ「２」に、実際の最終的な出力データのデータサイズを掛け、１コンフィギュレーションが１ページを処理する時間で除することで、この方式でＤＲＰコア１４が実際に外部メモリ２０を使用する帯域の値が得られる。
【００３６】
また、第１方式では、コンフィギュレーションパイプラインの入力及び出力のストリームのデータサイズが実質的に等しいので、入力ストリームサイズに対する出力ストリームサイズの比である性能指標値（処理効率）は１．０とする。
【００３７】
図５に例示する第２方式は、各ページを１０バンドに分割し、コンフィギュレーション間のデータの受け渡しはすべて外部メモリ２０経由で行う方式である。ここでは、便宜上、出力されるページの1バンドの画素数を８０×８０画素として説明する。１ページをまとめてＤＲＰコアに入力又は出力するとＤＲＰコアに与えられた外部メモリ２０の帯域幅を超える場合でも、バンド分割を行えば、ＤＲＰコアの入出力データ量はバンド単位で調整できるので、与えられた帯域幅を満たすことも可能となる。
【００３８】
この方式では、ＤＲＰコア１４にＦｕｎｃ１を再構成した後、Ｆｕｎｃ１に１バンドずつ順に入力して１ページ全体（すなわち第１バンドから第１０バンドまで）のデータを処理させた後、Ｆｕｎｃ２に書き換えて同じことを繰り返す。例えば、Ｆｕｎｃ１が１バンド分の処理結果８０×８０画素のデータを外部メモリ２０に出力した後、ＤＲＰコア１４をＦｕｎｃ２に書き換え、そのＦｕｎｃ１の処理結果に必要なリプリケーションを行って１ページ分のデータを生成し、これらをバンド分割して１バンドずつＦｕｎｃ２のコンフィギュレーションに処理させる。これにより、Ｆｕｎｃ２は、１バンドずつの処理結果を順次外部メモリ２０に書き出していき、最終的に１ページ分の処理結果を外部メモリ２０に出力することになる。次にＦｕｎｃ３に書き換えられ、同様の処理が行われる。
【００３９】
この第２方式では、各コンフィギュレーション（Ｆｕｎｃ）で１バンド（８０×８０画素）の出力結果を得るのに、９０×９０画素の読込が必要である。１つのコンフィギュレーションＦｕｎｃの１バンド当たりの出力結果のデータサイズを１とすると、入力のデータサイズは９０×９０／（８０×８０）＝約１．２７となる。したがって、１コンフィギュレーションが１バンドを処理するのに外部メモリ２０に対して入出力するストリームのサイズは１＋１．２７＝２．２７となる。また、１０バンドに分割することにより、その２．２７を１０で割ることにより、ＤＲＰコア１４の入出力ストリームサイズは０．２２７となる。この値が、第２方式でＤＲＰコア１４が使用する外部メモリ２０の帯域幅の指標値となる。
【００４０】
また、この方式では、各コンフィギュレーションが、１バンドごとに、９０×９０画素を入力し、８０×８０画素を出力する。この第２方式の個々のコンフィギュレーションの性能は、出力ストリームサイズ／入力ストリームサイズ＝８０×８０／（９０×９０）＝０．７９となる。３つのコンフィギュレーションからなるパイプライン全体の性能は、パイプライン中の各コンフィギュレーションの性能のうちのもっとも低いものなので、この方式では０．７９となる。すなわち、第１方式（バンド分割せず、データ受け渡しは外部メモリ２０経由）の性能の０．７９倍となる。すなわち、第１方式に対して２１％の性能劣化が見られる。
【００４１】
次に、図６を参照して、第３方式について説明する。この方式では、各コンフィギュレーション間のデータの受け渡しを内部バッファ１５経由で行う。内部バッファ１５経由とするために、バンド分割が必要であり、ここでは１０バンドに分割するとする。
【００４２】
この第３方式では、まずＤＲＰコア１４にＦｕｎｃ１を再構成し、１バンド分のデータを入力して処理させ、その処理結果を内部バッファ１５に出力させる。次に、Ｆｕｎｃ２を再構成し、内部バッファ１５内のＦｕｎｃ１の処理結果をそのＦｕｎｃ２に処理させ、その処理結果を内部バッファ１５に出力させる。次に、Ｆｕｎｃ３を再構成し、内部バッファ１５内のＦｕｎｃ２の処理結果をそのＦｕｎｃ３に処理させる。Ｆｕｎｃ３は、パイプラインの最後なので、その処理結果は外部メモリ２０に出力させる。以上により１バンド分の処理が終わる。以上のサイクルを１ページ分の最終的な処理結果が得られるまで繰り返す。
【００４３】
この第３方式では、Ｆｕｎｃ２及びＦｕｎｃ３は、内部バッファ１５内に入っているデータ以上のデータは入手できず、フィルタ処理では処理結果は入力よりも小さくなるので、Ｆｕｎｃ１、Ｆｕｎｃ２、Ｆｕｎｃ３と順に処理されるに連れて処理結果の有効データ量は減っていく。１１×１１画素のフィルタサイズを考慮すると、最終的に１バンド分８０×８０画素のデータを得るには、Ｆｕｎｃ１は、１バンド当たり１１０×１１０画素のデータを読み込むことになる。したがって、パイプラインの最終出力８０×８０画素のストリームサイズを１とすると、Ｆｕｎｃ１に対する入力ストリームサイズは１１０×１１０／（８０×８０）＝約１．８９となる。一方、Ｆｕｎｃ１の出力は内部バッファ１５に行われるので、外部メモリ２０に対する出力はない。すなわち、Ｆｕｎｃ１の出力ストリームサイズは０である。したがって、１バンドあたりのＦｕｎｃ１の入出力のストリームサイズは合計１．８９＋０＝１．８９となる。また、Ｆｕｎｃ２は内部バッファ１５からデータを入力し、処理結果を内部バッファ１５に出力するので、入力及び出力のストリームサイズの合計は０である。また、Ｆｕｎｃ３は、内部バッファ１５からデータを入力するので入力ストリームサイズは０であり、また１バンドあたり８０×８０画素を出力するので出力ストリームサイズは８０×８０／（８０×８０）＝１である。パイプライン全体では、もっとも入出力が多いＦｕｎｃ１の入出力の影響が支配的なので、パイプライン全体の入出力ストリームサイズは１．８９となる。そして、この方式では１０バンドに分割しているので、１バンドあたりの入出力ストリームサイズは、その１．８９を１０で割った値０．１８９となる。この値が、第３方式でＤＲＰコア１４が使用する外部メモリ２０の帯域幅の指標値となる。
【００４４】
また、この方式では、コンフィギュレーションパイプライン全体で、１バンド当たり１１０×１１０画素を入力し、８０×８０画素を出力する。したがって、パイプライン全体の性能は、出力ストリームサイズ／入力ストリームサイズ＝８０×８０／（１１０×１１０）＝約０．５３となる。
【００４５】
以上では、コンフィギュレーションパイプラインにおける各コンフィギュレーション間のデータ受け渡し方式として、第１、第２、第３の３つの方式を説明した。これら３つの方式は、すべてのコンフィギュレーション同士の間隔（すなわちＦｕｎｃ１とＦｕｎｃ２の間、及びＦｕｎｃ２とＦｕｎｃ３の間）で同じデータ受け渡し方式（すなわち、バンド分割の有無、及び、内部バッファ経由か外部メモリ経由か、の組合せ）を用いていた。しかし、当業者ならば理解できるように、コンフィギュレーションパイプライン内のコンフィギュレーション同士の間隔ごとにデータ受け渡し方式を個別に選んで組み合わせる組合せ方式を採用可能である。
【００４６】
例えば、図７のような方式も可能である。この方式では、まずＤＲＰコア１４にＦｕｎｃ１を再構成し、１ページ分のデータを入力して処理させ、その処理結果を外部メモリ２０に出力させる。次に、Ｆｕｎｃ２を再構成し、外部メモリ２０のＦｕｎｃ１の処理結果をバンド分割し、１バンド分をＦｕｎｃ２に処理させ、その処理結果を内部バッファ１５に出力させる。次に、Ｆｕｎｃ３を再構成し、内部バッファ１５内のＦｕｎｃ２の処理結果をそのＦｕｎｃ３に処理させる。Ｆｕｎｃ３は、パイプラインの最後なので、その処理結果は外部メモリ２０に出力させる。以上により１バンド分の処理が終わる。この後、ＤＲＰコア１４を再びＦｕｎｃ２に書き換え、次のバンドを外部メモリ２０から読み出してＦｕｎｃ２に処理させ、その処理結果を内部バッファ１５経由で次のＦｕｎｃ３に伝達して処理させる。以上のＦｕｎｃ２及び３のサイクルを１ページ分の最終的な処理結果が得られるまで繰り返す。すなわち、図７の例は、Ｆｕｎｃ１とＦｕｎｃ２の間については前述の第１方式を、Ｆｕｎｃ２とＦｕｎｃ３の間は第３方式を採用している。もちろん、図７に例示した組み合わせは一例に過ぎず、他の組み合わせも可能である。
【００４７】
このような組み合わせ方式の入出力ストリームサイズ及び性能指標値は、上述の第１〜３の各方式で説明した考え方に従い求めることができる。
【００４８】
以上に説明した第１〜３の３つの方式について、ＤＲＰコア１４が使用する外部メモリ２０の帯域及び処理性能の指標値を図８にまとめる。
【００４９】
このように、「それぞれ１１×１１画素のフィルタを用いる画像処理を行う３つのコンフィギュレーションからなるパイプライン」という簡単な事例でも、多数のデータ受け渡し方式が考えられるが、以下では簡単のため、上に詳しく説明した第１〜３の各方式のみが受け渡し方式生成部４２により生成されたものとして説明する。
【００５０】
これら生成された各方式の情報を受け取った受け渡し方式判定部４０は、まず、生成された各方式の使用メモリ帯域及び性能の指標値を、使用メモリ帯域指標値計算部４４及び性能指標値計算部４６に計算させる。これらの計算に当たっては、処理対象データのデータ量（例えば１ページの画素数）や、各コンフィギュレーションの処理内容の情報（例えば、フィルタ等のウインドウを用いるか否か、及び用いる場合はそのウインドウのサイズ）が必要であるが、これらはパラメータ設定部４８を介して事前にユーザから設定されている。そして、その計算結果に基づき、それら生成された各方式を評価し、帯域幅制約などといった制約条件（これはパラメータ設定部４８を介してユーザから事前に設定されている）を満たす中で、最も適切な方式を判定する。その判定手順の一例を、図９に示す。
【００５１】
図９の手順では、受け渡し方式判定部４０は、生成されたデータ受け渡し方式のうち、性能指標値が最も高いものをまず選び、その方式でＤＲＰコア１４が使用する外部メモリ２０の帯域幅の指標値を取得する（Ｓ１０）。そして、その指標値が示すメモリ帯域幅が、パラメータ設定部４８を介して設定された帯域幅制約（すなわちＤＲＰコア１４に与える外部メモリ２０の帯域の上限）の範囲内かどうかを判定する（Ｓ１２）。この判定に当たっては、指標値と帯域幅制約の値との単位が異なる場合は、両者の単位が同一になるように換算した上で比較する。そして、使用帯域幅の指標値が制約の範囲内でなければ、性能指標値が次位のデータ受け渡し方式を選び、その方式の使用メモリ帯域幅の指標値を取得し（Ｓ１４）、その指標値が示す帯域幅が帯域幅制約を満たすかどうかを判定する（Ｓ１２）。このようにして、使用メモリ帯域幅が帯域幅制約を満たす方式が見つかるまで、Ｓ１２及びＳ１４のループを繰り返す。使用メモリ帯域幅が帯域幅制約を満たす方式が見つかると（Ｓ１２の判定結果がＹｅｓ）、その方式を選択して選択指示出力部５２に設定する（Ｓ１６）。
【００５２】
図４〜８の例の場合、性能指標値の高い順に従い、第１、第２、第３の順に各方式の使用メモリ帯域が評価され、その中で最初に帯域幅制約を満たした方式が選択されることになる。
【００５３】
図９の手順は一例に過ぎない。生成されたデータ受け渡し方式のうち、帯域幅制約を満たす中で最も性能のよい方式を選択する手順であれば、どのような手順を用いてもよい。
【００５４】
図４〜図７の例では、説明を単純にするために、３つのコンフィギュレーションが全て同じサイズのフィルタを用いるとした。実際のコンフィギュレーションパイプラインは、３つに限らず、２以上の任意数のコンフィギュレーションから構成されていてよい。また、実際には、各コンフィギュレーションの用いるウインドウのサイズは異なっていてもよいし、パイプラインの中にウインドウを用いない（すなわち１画素を入力し、処理結果として１画素のデータを出力する）コンフィギュレーションが含まれていてもよい。例えば、色空間変換処理は、ウインドウ（フィルタ）を用いない処理の一例である。
【符号の説明】
【００５５】
１０  ＣＰＵ・ＤＲＰ混載チップ、２０  外部メモリ、１２  ＣＰＵコア、１４  ＤＲＰコア、１５  内部バッファ、１６  メモリコントローラ、１８  内部バス、３０，３４  調停器、３２  メモリコントローラ、３６，３９  バスＩ／Ｆ回路、３８  セレクタ制御回路、ＰＥ  プロセッサエレメント、ＳＥＬ  セレクタ。
【図１】
0005533330.tif 000002
【図２】
0005533330.tif 000003
【図３】
0005533330.tif 000004
【図４】
0005533330.tif 000005
【図５】
0005533330.tif 000006
【図６】
0005533330.tif 000007
【図７】
0005533330.tif 000008
【図８】
0005533330.tif 000009
【図９】
0005533330.tif 000010