説明

データ処理装置

【課題】データ処理装置が使用する外部メモリの帯域幅の制限とデータ処理装置が行う処理の性能との両立。
【解決手段】DRPコア14のために内部バッファ15を設ける。セレクタSELは、DRPコア14の入出力先を外部メモリ20と内部バッファ15とに切り替える。CPUコア12が実行する制御ソフトウエアは、対象とする一連の処理のためのコンフィギュレーションの系列(パイプライン)の情報を受け取り、その系列における各コンフィギュレーション間について、処理結果の受け渡しを外部メモリ20経由、内部バッファ15経由のいずれにするかの組み合わせを、受け渡し方式として生成する。次に、それら各方式について、その方式でDRPコア14が使用する外部メモリ20の帯域と性能を計算する。そして、それら方式のうち、あらかじめ指定された帯域幅制約を満たす最も性能の高い方式を選択し、この方式に従ってセレクタSELを切り替える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置に関する。
【背景技術】
【0002】
内部の論理回路構成を再構成(変更)可能なPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)などの再構成可能回路(プログラマブル論理回路とも呼ばれる)が普及している。PLDやFPGAは、回路起動時に内部の論理回路構成を設定するものが一般的であるが、回路が動作中に論理回路構成を変更可能なものも開発されている。また、近年では、内部の論理回路構成を高速に(例えば1クロックサイクルで)再構成可能な動的再構成可能プロセッサ(DRP:Dynamically Reconfigurable Processor)の利用も進んでいる。
【0003】
再構成可能回路上に再構成される論理回路構成は、コンフィギュレーションと呼ばれる。再構成可能回路を使用するシステムでは、再構成可能回路のコンフィギュレーションを順次書き換えていくことで、再構成可能回路を用いて再構成可能回路上に一度に構成できない規模の回路を実装することができる。
【0004】
再構成可能回路を使用するシステムでは、一般に、汎用のCPUの制御下で再構成可能回路を使用することが多い。また、一連の処理の一部をCPUによりソフトウエア処理し、他の一部を再構成可能回路によりハードウエア処理するといった組み合わせ方もよく行われている。従来、このようなシステムでは、CPUと再構成可能回路のそれぞれに専用のメモリを設け、CPUと再構成可能回路の各々の処理途中のデータは、それぞれのメモリに対して読み書きすることが一般的であった。
【0005】
このような従来の実装方式に対し、CPUと再構成可能回路との作業用のメモリを共通化することで、メモリのコストを低減すること、IPコアとして既存のASIC等に搭載することにより、デバイスコスト削減、ボードの占有面積も低減することが考えられる。ただし、この場合、CPU、再構成可能回路、及びメモリの帯域幅の関係に注意が必要である。例えば、印刷におけるビットマップページ画像の処理などの画像処理に再構成可能回路(特にDRP)を利用する場合、取り扱う画像データが大きいので、再構成可能回路の入出力帯域幅がメモリ帯域幅を占有し、CPU(及びその他周辺機器)に割けるメモリ帯域を割けなくなる場合があり得る。
【0006】
これに対し、例えば再構成可能回路を実装するチップ上に小容量の内部バッファを作り込み、再構成可能回路上に構成したコンフィギュレーションの処理結果を、内部バッファを介して次のコンフィギュレーションに受け渡すことで、再構成可能回路の使用するメモリ帯域を減らすことも考えられる。このように小容量の内部バッファを用いる場合、処理対象のデータをそのバッファの容量に応じた量ごとに区切って処理する必要がある。ここで、例えば画像のフィルタ処理のように、1つのデータ点(例えば画素)の値を計算するのに、そのデータ点を基準としたあるウインドウ幅のデータを読み込むウインドウ処理では、処理したいデータ範囲の両端にそれぞれウインドウ幅分だけ余計にデータを読み込む必要がある。このため、処理対象のデータを比較的少量ずつに区切って内部バッファに読み込むようにする場合、処理対象のデータの量に対するウインドウ幅の相対的な割合が高くなり、処理性能(処理効率)の低下を招く。例えば、11×11ピクセルのフィルタを用いたフィルタ処理を、内部バッファに読み込んだ33ラインからなる画像に適用した場合、フィルタ処理結果は23ライン分しか得られず、処理効率は23/33=約70%程度となってしまう。
【0007】
特許文献1に開示される画像処理装置は、画像データを取得してフレームメモリに転送する画像データ取得モジュールと、フレームメモリの画像データをブロック単位で読み出すデータ転送モジュールと、転送されたブロック画像データの前処理を行う前処理モジュールと、前処理結果を後段へ転送するデータ転送モジュールと、転送された前処理済みのブロック画像データを第1のセレクタを介して選択的に記憶するバッファ群と、バッファ群のいずれか1つの画像データを選択する第2のセレクタと、選択読み出しをしたブロック画像データに対して画像処理を行う画像処理モジュールとで構成される。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2005−311745号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、データ処理装置が使用する外部メモリの帯域幅の制限と、データ処理装置が行う処理の性能との両立を目的とする。
【課題を解決するための手段】
【0010】
請求項1に係る発明は、再構成可能回路と、パイプラインを構成する複数のコンフィギュレーションを前記再構成可能回路上に順に再構成して動作させる制御を行う再構成制御手段と、内部メモリと、外部装置と共用する外部メモリと接続するための接続回路と、前記再構成可能回路上に再構成された前記各コンフィギュレーションのデータ入力及びデータ出力のための接続先を、前記内部メモリと、前記接続回路経由の前記外部メモリと、の中からそれぞれ選択する選択手段と、処理対象のデータを分割せずに前記パイプラインの先頭のコンフィギュレーションに入力し且つ前記パイプラインを構成する複数のコンフィギュレーションのすべてが前記外部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第1のデータ受け渡し方式と、前記処理対象のデータを前記内部メモリの容量に応じたデータ量のデータ単位に分割して前記先頭のコンフィギュレーションに入力し且つ前記複数のコンフィギュレーションのすべてが前記内部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第2のデータ受け渡し方式と、を含む複数のデータ受け渡し方式のそれぞれについて、当該データ受け渡し方式において前記パイプラインが前記外部メモリに対して入出力する帯域幅と、当該データ受け渡し方式において前記パイプラインに入力されたデータの量に対する前記パイプラインから出力されるデータの量の比に基づく前記パイプラインの性能指標値と、を計算し、前記各データ受け渡し方式の前記帯域幅と前記性能指標値とに基づき、前記複数のデータ受け渡し方式のうちの1つを選択し、選択したデータ受け渡し方式に従って前記選択手段の選択を制御する選択制御手段と、を備えるデータ処理装置である。
【0011】
請求項2に係る発明は、前記選択制御手段は、前記帯域幅があらかじめ設定された制約値以下であるデータ受け渡し方式の中で、前記性能指標値が示す性能が最も高いデータ受け渡し方式を選択する、ことを特徴とする請求項1に記載のデータ処理装置である。
【発明の効果】
【0012】
請求項1に係る発明によれば、データ処理装置が使用する外部メモリの帯域幅の制限と、データ処理装置が行う処理の性能との両立を図ることができる。
【0013】
請求項2に係る発明によれば、複数のデータ受け渡し方式のうち、外部メモリを使用する帯域幅が制約値以下の、最も性能のよい方式を用いることができる。
【図面の簡単な説明】
【0014】
【図1】実施形態のDRPシステムの概略構成の例を示す図である。
【図2】実施形態のDRPシステムの詳細な構成の例を示す図である。
【図3】DRPコアの再構成制御のための制御ソフトウエアの機能構成の例を示す図である。
【図4】データ受け渡し方式の一具体例である第1方式を説明するための図である。
【図5】データ受け渡し方式の一具体例である第2方式を説明するための図である。
【図6】データ受け渡し方式の一具体例である第3方式を説明するための図である。
【図7】データ受け渡し方式の一具体例である第4方式を説明するための図である。
【図8】第1〜第4方式の使用メモリ帯域幅と性能の指標値をまとめた表を示す図である。
【図9】受け渡し方式判定部の処理手順の一例を示す図である。
【発明を実施するための形態】
【0015】
図1に、この実施形態の制御が適用されるDRPシステムの構成例を示す。このシステムは、CPU・DRP混載チップ10と、外部メモリ20とを備える。
【0016】
CPU・DRP混載チップ10は、CPU(中央演算装置)コア12、DRP(動的再構成可能プロセッサ)コア14、内部バッファ15、メモリコントローラ16及びその他周辺回路を、ASIC(Application Specific Integrated Circuit)等の形で集積した集積回路チップである。CPUコア12及びメモリコントローラ16及び内部バッファ15は内部バス18に接続され、DRPコア14は内部バッファ15に接続されている。外部メモリ20は、メモリコントローラ16に接続されており、CPUコア12及びDRPコア14は、メモリコントローラ16を介して外部メモリ20にアクセスすることができる。図示例は一例に過ぎず、例えば、内部バッファ15の代わりにDRPコア14を内部バス18に直接接続し、DRPコア14に内部バッファ15を接続する構成とするなどといった他の構成でもよい。
【0017】
DRPコア14は、論理回路を構成するための複数の回路要素(PE:プロセッサエレメント)とそれらPE間の接続を構成するための配線リソースとを備え、それらPEの設定やPE間の接続構成を変えることにより、様々な構成の論理回路として動作することができる。また、DRPコア14は、複数のコンフィギュレーションメモリを備えている。1つのコンフィギュレーションメモリには、1つのコンフィギュレーションを定義するコンフィギュレーションデータが記憶される。ここでは、コンフィギュレーションという用語は、再構成可能回路上に同時に存在する論理回路のことを意味するものとして用いる。DRPコア14では、複数のコンフィギュレーションメモリのうちの1つが有効(アクティブ)とされると、そのメモリ内に保持されるデータに従ってPEの設定やPE間の配線の組み替えが行われ、これによりそのコンフィギュレーションの回路が構成される。1つの時点では1つのコンフィギュレーションメモリのみがアクティブであり、別のコンフィギュレーションメモリをアクティブにすることにより、DRPコア14のコンフィギュレーションが切り替えられる。例えば、順番に切り替えるべきコンフィギュレーションデータをそれぞれ別のコンフィギュレーションメモリにロードしておき、それらを順にアクティブにしていくことで、それら一連のコンフィギュレーションによるパイプライン処理を実現することができる。あるコンフィギュレーションメモリをアクティブにしている間に、別のコンフィギュレーションメモリにデータをロードすることで、ロードに要する時間が隠蔽される。DRPコア14内に構成されるコンフィギュレーション同士の間のデータの受け渡しは、内部バッファ15又は外部メモリ20に選択的に用いて行われる。
【0018】
CPUコア12は、DRPコア14のコンフィギュレーションの再構成(書き換え)や、再構成したコンフィギュレーションの動作を制御する再構成制御ソフトウエア(図示省略)を実行する。また、CPUコア12は、画像処理等のアプリケーションソフトウエア(図示省略)を実行し、そのアプリケーションソフトウエアの中からDRPコア14を呼び出し、特定の処理をDRPコア14上のコンフィギュレーション群によりハードウエア処理させることもできる。CPUコア12は、例えば、図示省略した上位システム(例えば印刷装置の制御のための大きなソフトウエアを実行する上位のCPU)からの指示に応じて、そのようなアプリケーション処理を実行する。
【0019】
メモリコントローラ16は、CPUコア12及びDRPコア14から外部メモリ20へのメモリアクセスを制御する。
【0020】
図2を参照して、この実施形態のDRPシステムの更に詳細な構成の例を説明する。この例では、DRPコア14の入力及び出力は、それぞれセレクタSELを介して調停器30及び34にそれぞれ接続されている。調停器30は、内部バッファ15への読み書き要求を調停する回路であり、メモリコントローラ32を介して、内部バッファ15である埋込DRAM(Dynamic RAM)に接続されている。メモリコントローラ32は、DRPコア14から内部バッファ15へのアクセスを制御する。なお、埋込DRAMはSRAMなど他のオンチップメモリでもよい。
【0021】
調停器34は、外部メモリ20に対する読み書き要求を調停する回路である。調停器34は、チップ10の内部バス18に対してバスI/F(インタフェース)回路36を介して接続されており、これによりDRPコア14は、内部バス18を経由して外部メモリ20にアクセス可能となっている。バスI/F回路36は、調停器34を介してDRPコア14を内部バス18に接続するためのインタフェース回路である。バスI/F回路39は、CPUコア12を内部バス18に接続するためのインタフェース回路である。セレクタ制御回路38は、CPUコア12の制御に応じて、DRPコア14の入力側及び出力側の各セレクタSELの選択状態を、調停器34(外部メモリ20)側と調停器30(内部バッファ15)側で切り替える。図示のように、DRPコア14は入力チャネル(ストリームとも呼ばれる)と出力チャネルをそれぞれ複数有しており、セレクタSELはそれらチャネルごとに設けられる。すなわち、DRPコア14内に再構成されたコンフィギュレーション内の複数の回路が、それぞれ異なるチャネルを用いて異なるメモリアドレスに対して読み書きを行うことができると共に、それら読み書きの先をチャネルごとに、内部バッファ15又は外部メモリ20に切り替えることができる。
【0022】
CPUコア12が実行する、DRPコア14の再構成制御のための制御ソフトウエアの機能構成の例を図3に示す。この例において、再構成制御部50は、DRPコア14上に、時系列的なパイプラインを構成する一連のコンフィギュレーションを順に再構成し、動作させていく制御を行う。このような一連のコンフィギュレーションからなる列をコンフィギュレーションパイプラインと呼ぶこととする。受け渡し方式判定部40は、そのパイプラインの各コンフィギュレーション間のデータ(処理結果)の受け渡しを、内部バッファ15経由とするか外部メモリ20経由とするかを判定する。そのパイプラインの先頭のコンフィギュレーションに対する入力データと、末尾のコンフィギュレーションの出力データとは、CPUコア12からのアクセスのために外部メモリ20に保持されるが、隣り合うコンフィギュレーション同士の間のデータの受け渡しは内部バッファ15経由でも外部メモリ20経由でもよい。
【0023】
内部バッファ15経由でデータを受け渡す場合、その分だけ外部メモリ20の帯域をあけることができる。しかし、その一方で、内部バッファ15は、チップ10内に埋め込まれるものなので、外部メモリ20ほどの大きな容量はとれない。例えば、フルカラーの印刷ページ画像のデータ量は、A4サイズ、解像度600dpi(dot per inch)で、1ページ当たり約100メガバイト(3色の場合)となる。外部メモリ20としては、数百メガ〜数ギガバイトの容量のものが通常用いられるが、限られた集積回路上に埋め込まれる内部バッファ15の容量は、せいぜい数メガバイト程度であり、1ページ分の画像全体を収めることはできない。このため、内部バッファ15経由でデータの受け渡しを行う場合、コンフィギュレーションに入力する処理対象のデータを、内部バッファ15に収まる単位に分割し、その単位ごとにDRPコア14に入力して処理させることになる。前述の通り、フィルタ処理などのウインドウ処理では、処理により生成されるデータ量よりもウインドウのサイズ分だけ大きなデータを読み込む必要があり、読み込むデータが小さくなるほど、ウインドウサイズの占める割合が大きくなるため、読み込んだデータに対する処理結果のデータの割合(これを処理の性能、すなわち処理効率と呼ぶ)が小さくなる。
【0024】
なお、印刷等のためのページのラスター画像データを分割する場合、副走査方向に沿って、ある高さ(ライン数)ごとのバンドに分割することが一般的である。
【0025】
一方、コンフィギュレーション間でのデータの受け渡しを外部メモリ20経由で行う場合、内部バッファ15の場合のような処理効率の低下はない。しかし、その代わりに外部メモリ20の帯域を多く使用することになり、CPUコア12や他の周辺機器からの外部メモリ20へのアクセスを圧迫する可能性がある。
【0026】
そこで、受け渡し方式判定部40は、性能と外部メモリ20の使用帯域との兼ね合いからみて適切な受け渡し方式を判定するのである。
【0027】
コンフィギュレーションパイプライン内の(時間的に)隣り合うコンフィギュレーション同士の間隔ごとに、内部バッファ15経由か外部メモリ20経由かを選択することができるので、1つのコンフィギュレーションパイプラインのデータ受け渡し方式は、それら各間隔についての選択結果の組み合わせとなる。
【0028】
また、処理対象のデータを単位ごとに分割すること(例えば、ラスター画像データのバンド分割)は、外部メモリ20経由でデータを受け渡す場合に行ってもよい。この場合、コンフィギュレーション同士の1つの間隔でのデータ受け渡しは、処理対象データを分割せずに外部メモリ20経由で行う、単位ごとに分割して外部メモリ20経由で行う、単位ごとに分割して内部バッファ15経由で行う、の3通りがある。
【0029】
受け渡し方式生成部42は、DRPコア14に構成すべきコンフィギュレーションパイプラインの情報(すなわち、各コンフィギュレーションを規定するコンフィギュレーションデータと、それらコンフィギュレーションの並び順の情報とを含む情報)が与えられると、そのパイプラインにおいて採用し得るすべてのデータ受け渡し方式を生成する。生成されるデータ受け渡し方式には、(1)処理対象データを分割せず、パイプライン全体に渡って外部メモリ20経由でデータ受け渡しを行う方式、(2)処理対象データを内部バッファ15の容量に応じたデータ量の単位(例えばバンド)ごとに分割し、パイプライン全体に渡って内部バッファ15経由でデータ受け渡しを行う方式、が含まれる。また、(3)処理対象データを単位ごとに分割し、パイプライン全体に渡って外部メモリ20経由でデータ受け渡しを行う方式が含まれてもよい。また、受け渡し方式生成部42は、それらの混合方式として、パイプラインのコンフィギュレーション間ごとに、上記(1)〜(3)の方式のいずれかを選択した方式を、その選択の組み合わせの数だけ生成してもよい。
【0030】
受け渡し方式判定部40は、これら生成された複数のデータ受け渡し方式の中から、DRPコア14に生成されるコンフィギュレーションパイプラインの性能(処理効率)と、外部メモリ20のメモリ帯域のうちDRPコア14が使用する帯域と、の観点から、最適なデータ受け渡し方式を判定する。ここで、DRPコア14の使用メモリ帯域は使用メモリ帯域指標値計算部44により計算され、性能は性能指標値計算部46により計算される。これらの計算については、後で具体例を交えて説明する。
【0031】
パラメータ設定部48は、受け渡し方式の判定や、DRPコア14の使用メモリ帯域及び性能指標値などの計算に用いるパラメータや条件の設定をユーザから受け付けるためのユーザインタフェースである。例えば、設定されるパラメータや条件には、コンフィギュレーションパイプラインを構成する各コンフィギュレーションがそれぞれウインドウ処理を行うものであるか否かを示す情報、ウインドウ処理を行う場合のウインドウサイズ、処理対象データのサイズ、外部メモリ20の全メモリ帯域のうちのDRPコア14に割り当てる上限帯域(帯域幅制約と呼ぶ)などのうちの1以上が含まれる。これらパラメータを用いた計算や判定については、後で具体例を交えて説明する。
【0032】
受け渡し方式判定部40が判定したデータ受け渡し方式は、選択指示出力部52に設定される。選択指示出力部52は、設定されたデータ受け渡し方式に従って、セレクタSELの選択状態を切り替えるための指示をセレクタ制御回路38に発し、セレクタ制御回路38はその指示に従って各セレクタSELの接続先を切り替える。ここで、選択指示出力部52は、再構成制御部50がDRPコア14のコンフィギュレーションを書き換えるごとに、書き換え後のコンフィギュレーションのためのデータ入力元と出力先とを選択するようにしてもよい。
【0033】
次に、図4〜図7を参照して、データ受け渡し方式の具体例を説明する。ここでは、コンフィギュレーションパイプラインの具体例として、それぞれ11×11画素のフィルタを用いる画像処理を行う3つのコンフィギュレーションからなるパイプラインを想定する。これら3つのコンフィギュレーションを、パイプラインの先頭から順に、Func1,Func2,Func3と名付ける。また、内部バッファ15の容量に収まるという条件から、処理対象の画像データの分割数は10バンドと判定されたとする。
【0034】
図4に示す第1方式は、処理対象のページ画像をバンド分割せず、またコンフィギュレーション間のデータの受け渡しは全て外部メモリ20経由で行う方式である。この方式では、DRPコア14にFunc1を再構成し、1ページの画像を外部メモリ20からDRPコア14に読み込ませる(図中のstrm0)。なお「strm」はデータの「ストリーム」を意味する。以下では、このように、DRPコア14に入力されるデータ、及びDRPコア14から出力されるデータを「ストリーム」と呼ぶことにする。これによりFunc1がその1ページのデータを処理してその1ページ分の処理結果のストリームを外部メモリ20に書き出す(strm1)。次に、DRPコア14にFunc2を再構成し、Func1の処理結果1ページ分をFunc2に入力(strm1)して処理させ、これにより処理結果1ページ分が外部メモリ20に書き出される(strm2)。ついで、Func3がFunc2の処理結果を外部メモリ20から読み込んで処理し、その処理結果を外部メモリ20に書き出す。
【0035】
この方式の場合、11×11画素のフィルタを考慮すると、ページ画像の処理結果を得るには、ページの四辺(最外殻)の画素を5画素分ずつ複製するリプリケーション処理を行うことで、ページを縦横に合計10画素ずつ拡張する必要がある。リプリケーションは、コンフィギュレーションごとに行えばよい。後述するバンド分割を伴う方式の場合、複数バンドに渡って同じデータを重複して読み込む必要があるが、この第1方式では、リプリケーションの必要はあるが、バンド分割の場合のような重複的なデータ読込は必要ない。また、リプリケーションした縦横10画素分の幅は、ページ全体からすれば無視できるほど小さい(図4では、図5等の関係でページサイズを便宜上80×800画素として示したが、実際には縦横とも画素数はそれよりもはるかに多い)。このため、このコンフィギュレーションパイプラインの最終的な出力データ(1ページ分)のサイズを「1」とすると、Func1,2,3のそれぞれの入力データ及び出力データの量は、strm1=strm2=strm3=1としてよい。各コンフィギュレーションが、サイズ「1」のデータを入力し出力するので、コンフィギュレーションパイプライン全体では外部メモリ20との間でサイズ「6」のデータをやりとりすることになる。すなわち、1コンフィギュレーション当たりの平均では、サイズ「2」のストリームを外部メモリ20に読み書きすることになる。すなわち、この方式でDRPコア14が使用する外部メモリ20の帯域を表す指標値は「2」となる。このストリームサイズ「2」に、実際の最終的な出力データのデータサイズを掛け、1コンフィギュレーションが1ページを処理する時間で除することで、この方式でDRPコア14が実際に外部メモリ20を使用する帯域の値が得られる。
【0036】
また、第1方式では、コンフィギュレーションパイプラインの入力及び出力のストリームのデータサイズが実質的に等しいので、入力ストリームサイズに対する出力ストリームサイズの比である性能指標値(処理効率)は1.0とする。
【0037】
図5に例示する第2方式は、各ページを10バンドに分割し、コンフィギュレーション間のデータの受け渡しはすべて外部メモリ20経由で行う方式である。ここでは、便宜上、出力されるページの1バンドの画素数を80×80画素として説明する。1ページをまとめてDRPコアに入力又は出力するとDRPコアに与えられた外部メモリ20の帯域幅を超える場合でも、バンド分割を行えば、DRPコアの入出力データ量はバンド単位で調整できるので、与えられた帯域幅を満たすことも可能となる。
【0038】
この方式では、DRPコア14にFunc1を再構成した後、Func1に1バンドずつ順に入力して1ページ全体(すなわち第1バンドから第10バンドまで)のデータを処理させた後、Func2に書き換えて同じことを繰り返す。例えば、Func1が1バンド分の処理結果80×80画素のデータを外部メモリ20に出力した後、DRPコア14をFunc2に書き換え、そのFunc1の処理結果に必要なリプリケーションを行って1ページ分のデータを生成し、これらをバンド分割して1バンドずつFunc2のコンフィギュレーションに処理させる。これにより、Func2は、1バンドずつの処理結果を順次外部メモリ20に書き出していき、最終的に1ページ分の処理結果を外部メモリ20に出力することになる。次にFunc3に書き換えられ、同様の処理が行われる。
【0039】
この第2方式では、各コンフィギュレーション(Func)で1バンド(80×80画素)の出力結果を得るのに、90×90画素の読込が必要である。1つのコンフィギュレーションFuncの1バンド当たりの出力結果のデータサイズを1とすると、入力のデータサイズは90×90/(80×80)=約1.27となる。したがって、1コンフィギュレーションが1バンドを処理するのに外部メモリ20に対して入出力するストリームのサイズは1+1.27=2.27となる。また、10バンドに分割することにより、その2.27を10で割ることにより、DRPコア14の入出力ストリームサイズは0.227となる。この値が、第2方式でDRPコア14が使用する外部メモリ20の帯域幅の指標値となる。
【0040】
また、この方式では、各コンフィギュレーションが、1バンドごとに、90×90画素を入力し、80×80画素を出力する。この第2方式の個々のコンフィギュレーションの性能は、出力ストリームサイズ/入力ストリームサイズ=80×80/(90×90)=0.79となる。3つのコンフィギュレーションからなるパイプライン全体の性能は、パイプライン中の各コンフィギュレーションの性能のうちのもっとも低いものなので、この方式では0.79となる。すなわち、第1方式(バンド分割せず、データ受け渡しは外部メモリ20経由)の性能の0.79倍となる。すなわち、第1方式に対して21%の性能劣化が見られる。
【0041】
次に、図6を参照して、第3方式について説明する。この方式では、各コンフィギュレーション間のデータの受け渡しを内部バッファ15経由で行う。内部バッファ15経由とするために、バンド分割が必要であり、ここでは10バンドに分割するとする。
【0042】
この第3方式では、まずDRPコア14にFunc1を再構成し、1バンド分のデータを入力して処理させ、その処理結果を内部バッファ15に出力させる。次に、Func2を再構成し、内部バッファ15内のFunc1の処理結果をそのFunc2に処理させ、その処理結果を内部バッファ15に出力させる。次に、Func3を再構成し、内部バッファ15内のFunc2の処理結果をそのFunc3に処理させる。Func3は、パイプラインの最後なので、その処理結果は外部メモリ20に出力させる。以上により1バンド分の処理が終わる。以上のサイクルを1ページ分の最終的な処理結果が得られるまで繰り返す。
【0043】
この第3方式では、Func2及びFunc3は、内部バッファ15内に入っているデータ以上のデータは入手できず、フィルタ処理では処理結果は入力よりも小さくなるので、Func1、Func2、Func3と順に処理されるに連れて処理結果の有効データ量は減っていく。11×11画素のフィルタサイズを考慮すると、最終的に1バンド分80×80画素のデータを得るには、Func1は、1バンド当たり110×110画素のデータを読み込むことになる。したがって、パイプラインの最終出力80×80画素のストリームサイズを1とすると、Func1に対する入力ストリームサイズは110×110/(80×80)=約1.89となる。一方、Func1の出力は内部バッファ15に行われるので、外部メモリ20に対する出力はない。すなわち、Func1の出力ストリームサイズは0である。したがって、1バンドあたりのFunc1の入出力のストリームサイズは合計1.89+0=1.89となる。また、Func2は内部バッファ15からデータを入力し、処理結果を内部バッファ15に出力するので、入力及び出力のストリームサイズの合計は0である。また、Func3は、内部バッファ15からデータを入力するので入力ストリームサイズは0であり、また1バンドあたり80×80画素を出力するので出力ストリームサイズは80×80/(80×80)=1である。パイプライン全体では、もっとも入出力が多いFunc1の入出力の影響が支配的なので、パイプライン全体の入出力ストリームサイズは1.89となる。そして、この方式では10バンドに分割しているので、1バンドあたりの入出力ストリームサイズは、その1.89を10で割った値0.189となる。この値が、第3方式でDRPコア14が使用する外部メモリ20の帯域幅の指標値となる。
【0044】
また、この方式では、コンフィギュレーションパイプライン全体で、1バンド当たり110×110画素を入力し、80×80画素を出力する。したがって、パイプライン全体の性能は、出力ストリームサイズ/入力ストリームサイズ=80×80/(110×110)=約0.53となる。
【0045】
以上では、コンフィギュレーションパイプラインにおける各コンフィギュレーション間のデータ受け渡し方式として、第1、第2、第3の3つの方式を説明した。これら3つの方式は、すべてのコンフィギュレーション同士の間隔(すなわちFunc1とFunc2の間、及びFunc2とFunc3の間)で同じデータ受け渡し方式(すなわち、バンド分割の有無、及び、内部バッファ経由か外部メモリ経由か、の組合せ)を用いていた。しかし、当業者ならば理解できるように、コンフィギュレーションパイプライン内のコンフィギュレーション同士の間隔ごとにデータ受け渡し方式を個別に選んで組み合わせる組合せ方式を採用可能である。
【0046】
例えば、図7のような方式も可能である。この方式では、まずDRPコア14にFunc1を再構成し、1ページ分のデータを入力して処理させ、その処理結果を外部メモリ20に出力させる。次に、Func2を再構成し、外部メモリ20のFunc1の処理結果をバンド分割し、1バンド分をFunc2に処理させ、その処理結果を内部バッファ15に出力させる。次に、Func3を再構成し、内部バッファ15内のFunc2の処理結果をそのFunc3に処理させる。Func3は、パイプラインの最後なので、その処理結果は外部メモリ20に出力させる。以上により1バンド分の処理が終わる。この後、DRPコア14を再びFunc2に書き換え、次のバンドを外部メモリ20から読み出してFunc2に処理させ、その処理結果を内部バッファ15経由で次のFunc3に伝達して処理させる。以上のFunc2及び3のサイクルを1ページ分の最終的な処理結果が得られるまで繰り返す。すなわち、図7の例は、Func1とFunc2の間については前述の第1方式を、Func2とFunc3の間は第3方式を採用している。もちろん、図7に例示した組み合わせは一例に過ぎず、他の組み合わせも可能である。
【0047】
このような組み合わせ方式の入出力ストリームサイズ及び性能指標値は、上述の第1〜3の各方式で説明した考え方に従い求めることができる。
【0048】
以上に説明した第1〜3の3つの方式について、DRPコア14が使用する外部メモリ20の帯域及び処理性能の指標値を図8にまとめる。
【0049】
このように、「それぞれ11×11画素のフィルタを用いる画像処理を行う3つのコンフィギュレーションからなるパイプライン」という簡単な事例でも、多数のデータ受け渡し方式が考えられるが、以下では簡単のため、上に詳しく説明した第1〜3の各方式のみが受け渡し方式生成部42により生成されたものとして説明する。
【0050】
これら生成された各方式の情報を受け取った受け渡し方式判定部40は、まず、生成された各方式の使用メモリ帯域及び性能の指標値を、使用メモリ帯域指標値計算部44及び性能指標値計算部46に計算させる。これらの計算に当たっては、処理対象データのデータ量(例えば1ページの画素数)や、各コンフィギュレーションの処理内容の情報(例えば、フィルタ等のウインドウを用いるか否か、及び用いる場合はそのウインドウのサイズ)が必要であるが、これらはパラメータ設定部48を介して事前にユーザから設定されている。そして、その計算結果に基づき、それら生成された各方式を評価し、帯域幅制約などといった制約条件(これはパラメータ設定部48を介してユーザから事前に設定されている)を満たす中で、最も適切な方式を判定する。その判定手順の一例を、図9に示す。
【0051】
図9の手順では、受け渡し方式判定部40は、生成されたデータ受け渡し方式のうち、性能指標値が最も高いものをまず選び、その方式でDRPコア14が使用する外部メモリ20の帯域幅の指標値を取得する(S10)。そして、その指標値が示すメモリ帯域幅が、パラメータ設定部48を介して設定された帯域幅制約(すなわちDRPコア14に与える外部メモリ20の帯域の上限)の範囲内かどうかを判定する(S12)。この判定に当たっては、指標値と帯域幅制約の値との単位が異なる場合は、両者の単位が同一になるように換算した上で比較する。そして、使用帯域幅の指標値が制約の範囲内でなければ、性能指標値が次位のデータ受け渡し方式を選び、その方式の使用メモリ帯域幅の指標値を取得し(S14)、その指標値が示す帯域幅が帯域幅制約を満たすかどうかを判定する(S12)。このようにして、使用メモリ帯域幅が帯域幅制約を満たす方式が見つかるまで、S12及びS14のループを繰り返す。使用メモリ帯域幅が帯域幅制約を満たす方式が見つかると(S12の判定結果がYes)、その方式を選択して選択指示出力部52に設定する(S16)。
【0052】
図4〜8の例の場合、性能指標値の高い順に従い、第1、第2、第3の順に各方式の使用メモリ帯域が評価され、その中で最初に帯域幅制約を満たした方式が選択されることになる。
【0053】
図9の手順は一例に過ぎない。生成されたデータ受け渡し方式のうち、帯域幅制約を満たす中で最も性能のよい方式を選択する手順であれば、どのような手順を用いてもよい。
【0054】
図4〜図7の例では、説明を単純にするために、3つのコンフィギュレーションが全て同じサイズのフィルタを用いるとした。実際のコンフィギュレーションパイプラインは、3つに限らず、2以上の任意数のコンフィギュレーションから構成されていてよい。また、実際には、各コンフィギュレーションの用いるウインドウのサイズは異なっていてもよいし、パイプラインの中にウインドウを用いない(すなわち1画素を入力し、処理結果として1画素のデータを出力する)コンフィギュレーションが含まれていてもよい。例えば、色空間変換処理は、ウインドウ(フィルタ)を用いない処理の一例である。
【符号の説明】
【0055】
10 CPU・DRP混載チップ、20 外部メモリ、12 CPUコア、14 DRPコア、15 内部バッファ、16 メモリコントローラ、18 内部バス、30,34 調停器、32 メモリコントローラ、36,39 バスI/F回路、38 セレクタ制御回路、PE プロセッサエレメント、SEL セレクタ。

【特許請求の範囲】
【請求項1】
再構成可能回路と、
パイプラインを構成する複数のコンフィギュレーションを前記再構成可能回路上に順に再構成して動作させる制御を行う再構成制御手段と、
内部メモリと、
外部装置と共用する外部メモリと接続するための接続回路と、
前記再構成可能回路上に再構成された前記各コンフィギュレーションのデータ入力及びデータ出力のための接続先を、前記内部メモリと、前記接続回路経由の前記外部メモリと、の中からそれぞれ選択する選択手段と、
処理対象のデータを分割せずに前記パイプラインの先頭のコンフィギュレーションに入力し且つ前記パイプラインを構成する複数のコンフィギュレーションのすべてが前記外部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第1のデータ受け渡し方式と、前記処理対象のデータを前記内部メモリの容量に応じたデータ量のデータ単位に分割して前記先頭のコンフィギュレーションに入力し且つ前記複数のコンフィギュレーションのすべてが前記内部メモリを介して次のコンフィギュレーションに処理結果の受け渡しを行う第2のデータ受け渡し方式と、を含む複数のデータ受け渡し方式のそれぞれについて、当該データ受け渡し方式において前記パイプラインが前記外部メモリに対して入出力する帯域幅と、当該データ受け渡し方式において前記パイプラインに入力されたデータの量に対する前記パイプラインから出力されるデータの量の比に基づく前記パイプラインの性能指標値と、を計算し、前記各データ受け渡し方式の前記帯域幅と前記性能指標値とに基づき、前記複数のデータ受け渡し方式のうちの1つを選択し、選択したデータ受け渡し方式に従って前記選択手段の選択を制御する選択制御手段と、
を備えるデータ処理装置。
【請求項2】
前記選択制御手段は、前記帯域幅があらかじめ設定された制約値以下であるデータ受け渡し方式の中で、前記性能指標値が示す性能が最も高いデータ受け渡し方式を選択する、ことを特徴とする請求項1に記載のデータ処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−8715(P2012−8715A)
【公開日】平成24年1月12日(2012.1.12)
【国際特許分類】
【出願番号】特願2010−142862(P2010−142862)
【出願日】平成22年6月23日(2010.6.23)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】