(57)【特許請求の範囲】
【請求項１】
再構成可能なデバイスを用いてデータ処理を行う画像処理装置であって、
同じ機能を実現する別々の論理回路をそれぞれ前記デバイス上の異なる領域に構成するための、領域ごとのコンフィグレーションデータを格納する第１記憶手段と、
前記異なる領域のうちの１つの領域に、当該１つの領域に対応する前記コンフィグレーションデータを用いて前記論理回路を構成するよう前記デバイスを制御する制御手段と、
前記異なる領域のうちの１つの領域に前記論理回路が構成されてからの当該論理回路の動作時間の積算値を求める手段と、を有し、
前記１つの領域に前記論理回路が構成されてからの前記積算値が閾値を超えると、前記制御手段は、前記異なる領域のうちの別の１つの領域に、前記第１記憶手段に格納されている、当該別の１つの領域に対応する前記コンフィグレーションデータを用いて前記論理回路を構成するように前記デバイスを制御することを特徴とする画像処理装置。
【請求項２】
前記機能を実現する前記論理回路は、前記論理回路を使用するジョブの実行時に流れる電流量が所定値よりも大きいセルを含むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記求められた積算値を不揮発に記憶する第２記憶手段を更に有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記制御手段は、前記領域ごとの前記コンフィグレーションデータのうちで、前記デバイスに前記機能を実現する論理回路を構成するのに使用したコンフィグレーションデータがどれであるかを記憶していることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記制御手段は、前記第１記憶手段における複数のコンフィグレーションデータのそれぞれが格納されているアドレスに基づいて、各コンフィグレーションデータを特定することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
再構成可能なデバイスを含む画像処理装置であって、
前記再構成可能なデバイスに所定の機能を実現する回路を構成するための複数のコンフィグレーションデータであって、それぞれ、当該デバイスの互いに異なる位置に前記所定の機能を実現する回路を配置配線するための複数のコンフィグレーションデータを格納する第１記憶手段と、
前記所定の機能を実現する回路を使用するジョブを実行する毎に、前記所定の機能を実現する回路の動作時間に基づく稼働情報を求めて積算する積算手段と、
前記積算手段により積算した積算値が閾値を超えると、前記第１記憶手段に格納されている、前記所定の機能を実現する回路に対応する前記複数のコンフィグレーションデータのうちで、前記デバイスに構成されている回路に対応するコンフィグレーションデータ以外の他のコンフィグレーションデータを用いて、前記デバイスに前記所定の機能を実現する回路を構成するように制御する再構成手段と、
前記デバイスのセル領域を複数の領域に分割し、前記所定の機能を実現する回路がどの領域に含まれるかを判別する判別手段、を有し、
前記積算手段は、前記所定の機能を実現する回路を使用するジョブを実行する毎に、前記判別手段により前記所定の機能を実現する回路を含むと判別された領域ごとに、前記所定の機能を実現する回路の動作時間に基づく稼働情報を求めて積算し、
前記再構成手段は、前記積算手段により積算した領域の積算値が閾値を超えると、前記第１記憶手段に格納されている、前記所定の機能を実現する回路に対応する前記複数のコンフィグレーションデータのうちで、前記デバイスに構成されている回路に対応するコンフィグレーションデータ以外の他のコンフィグレーションデータを用いて、前記デバイスに前記所定の機能を実現する回路を構成するように制御する、
ことを特徴とする画像処理装置。
【請求項７】
前記再構成手段は、前記第１記憶手段に格納されている前記所定の機能を実現する回路に対応する前記複数のコンフィグレーションデータのうちで、前記デバイスに構成されている回路に対応するコンフィグレーションデータ以外の他のコンフィグレーションデータであって、前記積算値が閾値を超えた領域を含まない位置に配置配線するコンフィグレーションデータを用いて、前記デバイスに前記所定の機能を実現する回路を構成するように制御することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
再構成可能なデバイスを用いてデータ処理を行う画像処理装置の制御方法であって、
前記画像処理装置は、同じ機能を実現する別々の論理回路をそれぞれ前記デバイス上の異なる領域に構成するための、領域ごとのコンフィグレーションデータが格納されたメモリを備え、前記制御方法は、
前記異なる領域のうちの１つの領域に、当該１つの領域に対応する前記コンフィグレーションデータを用いて前記論理回路を構成するよう前記デバイスを制御する工程と、
前記異なる領域のうちの１つの領域に前記論理回路が構成されてからの当該論理回路の動作時間の積算値を求める工程と、
前記１つの領域に前記論理回路が構成されてからの前記積算値が閾値を超えると、前記異なる領域のうちの別の１つの領域に、前記メモリに格納されている、当該別の１つの領域に対応する前記コンフィグレーションデータを用いて前記論理回路を構成するように前記デバイスを制御する工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項９】
コンピュータを、請求項１乃至７のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置と、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等の再構成可能なデバイスが良く知られている。ＰＬＤやＦＰＧＡの機能変更は、ＲＯＭ等の不揮発性メモリに格納された回路構成情報を、起動時に、内部の揮発性メモリであるコンフィギュレーションメモリへ書き込み、内部論理ブロックの機能を切り替えることで実現される。また、コンフィギュレーションメモリの回路構成情報は、装置の電源切断時にクリアされるため、電源投入時には再度、コンフィギュレーションメモリに回路構成情報を書き込むことで再構成を行う必要がある。このように、一度だけハードウェアリソースの構成を行う手法を静的再構成という。
【０００３】
一方、回路が動作中に論理回路構成を変更することが可能なものも開発されてきており、動作中に論理回路を変更する手法を動的再構成という。またＦＰＧＡには、チップ全体ではなく特定の領域だけを書き換えることが可能なものがあり、このような書き換えを、部分再構成という。部分再構成では、動的再構成時にコンフィギュレーションメモリ全体を書き換えるのではなく、コンフィギュレーションメモリの一部のみを書き換えることで、ＦＰＧＡ内部の論理ブロックの部分的な再構成を実現する。
【０００４】
例えば、特許文献１には、ＦＰＧＡの動作中に再構成する例として、ＦＰＧＡの構成後にソフトエラー等が発生すると、該当する回路を再構成する方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２３５０７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
こうした半導体デバイスにおいては、生産時の歩留まりの向上や性能向上のために半導体プロセスルールの微細化が従来から行われてきた。これにより、同じダイサイズに対して大規模な回路を構成できるため、コストパフォーマンスの点からも有利であった。一方、こうした半導体のプロセスルールの微細化により、信号を伝達するための配線の幅が細くなるため、いわゆるエレクトロマイグレーションと呼ばれる配線形状に欠損が生じる現象による影響が無視できなくなってきている。再構成可能なデバイスにおいても、エレクトロマイグレーションを発生させずに、かつ半導体デバイスの寿命を低下させない技術が求められている。
【０００７】
本発明の目的は、上記従来技術の問題点を解決することにある。
【０００８】
本発明の特徴は、再構成可能なデバイスにおけるエレクトロマイグレーションの発生を抑える技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
再構成可能なデバイスを用いてデータ処理を行う画像処理装置であって、
同じ機能を実現する別々の論理回路をそれぞれ前記デバイス上の異なる領域に構成するための、領域ごとのコンフィグレーションデータを格納する第１記憶手段と、
前記異なる領域のうちの１つの領域に、当該１つの領域に対応する前記コンフィグレーションデータを用いて前記論理回路を構成するよう前記デバイスを制御する制御手段と、
前記異なる領域のうちの１つの領域に前記論理回路が構成されてからの当該論理回路の動作時間の積算値を求める手段と、を有し、
前記１つの領域に前記論理回路が構成されてからの前記積算値が閾値を超えると、前記制御手段は、前記異なる領域のうちの別の１つの領域に、前記第１記憶手段に格納されている、当該別の１つの領域に対応する前記コンフィグレーションデータを用いて前記論理回路を構成するように前記デバイスを制御することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、再構成可能なデバイスにおけるエレクトロマイグレーションの発生を抑えることができる。
【００１１】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１２】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態１に係る画像処理装置の構成を説明するブロック図。
【図２】実施形態１に係る画像処理装置におけるコピージョブの場合の再構成部の機能構成とデータの流れを説明するブロック図（Ａ）と、実施形態１に係る画像処理装置におけるＰＤＬプリントジョブでの再構成部の機能構成とデータの流れを説明するブロック図（Ｂ）。
【図３】実施形態１に係る画像処理装置におけるＳＥＮＤ機能での再構成部の機能構成とデータの流れを説明するブロック図。
【図４】本実施形態１に係るＥＤＡデザインフローにおける配置配線フローでのＦＰＧＡの内部表示の一例を示す図。
【図５】図４の配置配線からブロックＢの位置を変更した例を示す図。
【図６】実施形態１に係る画像処理装置のＲＯＭのメモリマップを説明する図。
【図７】実施形態１に係る画像処理装置におけるＦＰＧＡの再構成部の構成処理を説明するフローチャート。
【図８】本発明の実施形態２に係る画像処理装置のＦＰＧＡのＳＥＮＤジョブで使用されるスキャン画像処理部の一例を示す図。
【図９】実施形態２において、コピージョブとＳＥＮＤジョブがそれぞれ実行された場合のＦＰＧＡ内のロジックセル構成の一例を説明する図。
【図１０】実施形態２に係る画像処理装置におけるＦＰＧＡの内部セル構造の一例を説明する図。
【図１１】実施形態２に係る画像処理装置が、図７のＳ７０２で実行する処理を説明するフローチャート。
【図１２】実施形態２に係る画像処理装置のＲＯＭのメモリマップを説明する図。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１４】
[実施形態１]
図１は、本発明の実施形態１に係る画像処理装置１００の構成を説明するブロック図である。
【００１５】
この画像処理装置１００は、ユーザが各種の操作及や設定等を行うための操作部１０３と、操作部１０３からの指示に従って原稿の画像を読み取って画像データを出力するスキャナ部１０９と、画像データを用紙に印刷するプリンタ部１０７とを有する。スキャナ部１０９は、スキャナ部１０９を制御するＣＰＵ（不図示）や原稿の読取を行うための照明ランプや走査ミラー（いずれも不図示）などを有する。プリンタ部１０７は、プリンタ部１０７の制御を行うＣＰＵ（不図示）や像形成や定着を行うための感光体ドラムや定着器等（いずれも不図示）を有する。
【００１６】
また画像処理装置１００は、画像処理装置１００を制御するコントローラとして、再構成可能なデバイスであるＦＰＧＡ（Field Programmable Gate Array）１４０を有する。この例では、ＦＰＧＡ１４０が画像処理装置１００の動作を統括的に制御するＣＰＵ１０１を備える。このＣＰＵ１０１は、ＦＰＧＡ１４０や再構成を制御するコンフィグコントローラ１３０等の画像処理装置１００の各ユニットを制御するための制御ソフトウェアを実行する。尚、ＦＰＧＡ１４０がＣＰＵ１０１を備えていることはあくまで一例にすぎず、このＣＰＵ１０１は、ＦＰＧＡ１４０の外部に設けられてもよい。ＲＯＭ１０４は、ＣＰＵ１０１が実行するブートプログラム、及び、ＦＰＧＡ１４０の再構成部１３１をコンフィギュレーションするコンフィグデータを格納している。ＲＡＭ１１１は、ＣＰＵ１０１が動作するためのワークメモリを提供し、また画像データを一時記憶するための画像メモリ等を提供している。
【００１７】
ＦＰＧＡ１４０は、再構成部１３１と、再構成部１３１による再構成を制御するコンフィグコントローラ１３０とを有する。再構成部１３１は、書き換え可能な論理回路であり、動的に書き換え可能で、かつ部分書き換え可能である。即ち、再構成部１３１の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。またＦＰＧＡ１４０は、スキャナ部１０９とのインタフェースを制御するスキャナＩ／Ｆ１０８と、プリンタ部１０７とのインタフェースを制御するプリンタＩ／Ｆ１０６とを有する。再構成部１３１及びスキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６は、処理される画像データを転送するための画像バス１２１に接続される。
【００１８】
またＣＰＵ１０１は、この画像処理装置１００の動作を統括的に制御する。またネットワークＩ／Ｆ１０２は、ネットワーク上の図示しない汎用コンピュータと通信（送受信）を行う。ＲＯＭＩ／Ｆ１１２は、ＣＰＵ１０１が実行するブートプログラム、及び、再構成部１３１をコンフィギュレーションするためのコンフィグデータが格納されているＲＯＭ１０４からのデータの読み出しを制御する。また操作部Ｉ／Ｆ１１３は、操作部１０３とＦＰＧＡ１４０とのインタフェースを制御している。メモリコントローラ１１０は、ＲＡＭ１１１へのデータの書き込み、及びＲＡＭ１１１からのデータの読み出し動作を制御する。メモリコントローラ１１０は、システムバス１２０及び画像バス１２１に接続され、画像バス１２１に接続されたバスマスタからのＲＡＭ１１１へのアクセスと、システムバス１２０に接続されたバスマスタからのＲＡＭ１１１へのアクセスとを排他的に切替える。これらＣＰＵ１０１、ネットワークＩ／Ｆ１０２、操作部Ｉ／Ｆ１１３、ＲＯＭＩ／Ｆ１１２、コンフィグコントローラ１３０、再構成部１３１は、システムバス１２０を介して相互に接続されている。ＣＰＵ１０１は、再構成部１３１内にコンフィギュレーションされた各画像処理部と、スキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６へのパラメータの設定をシステムバス１２０を介して行う。
【００１９】
次に、図２と図３を参照して、実施形態１に係る再構成部１３１に構成される画像処理機能の例とコンフィグデータとの関係について説明する。
【００２０】
画像処理装置１００は、スキャナ部１０９が原稿を読み取って得られた画像データをプリンタ部１０７で印刷して複写する機能（コピー機能）を有する。また、外部の図示しないＰＣ等に実装されたプリンタドライバからネットワークＩ／Ｆ１０２を介して受信した印刷データをプリンタ部１０７で印刷する機能（ＰＤＬプリント機能）を有する。また、スキャナ部１０９で得られた原稿の画像データをネットワークＩ／Ｆ１０２を介して外部の図示しないＰＣ等へ送信するＳＥＮＤ機能を持つ。動的再構成が可能なＦＰＧＡ１４０を備えた画像処理装置１００の場合、ユーザにより選択された機能及び変更された設定項目に応じて、必要な画像処理機能を実現する画像処理回路を再構成部１３１に構成して処理を行う。
【００２１】
図２（Ａ）は、実施形態１に係る画像処理装置１００におけるコピージョブの場合の再構成部１３１の機能構成と、データの流れを説明するブロック図である。尚、図２（Ａ）において、図１と共通する部分は同じ記号で示している。
【００２２】
まずスキャナ部１０９で得られた原稿の画像データは、スキャナＩ／Ｆ１０８及び画像バス１２１を介して、再構成部１３１に構成されたスキャン画像処理部２００に転送される。この画像データの流れを転送フロー２２０と呼ぶ。スキャン画像処理部２００は、その画像データに対して、像域判定処理や、ＲＧＢダイレクトマッピング処理等の画像処理を実行する。こうして処理された画像データは、次に画像バス１２１を介してメモリコントローラ１１０に転送されてＲＡＭ１１１に格納される。この画像データの流れを転送フロー２２１と呼ぶ。こうしてＲＡＭ１１１に格納された画像データは、メモリコントローラ１１０によって読み出され画像バス１２１を介して、再構成部１３１に構成されたプリンタ画像処理部２１０に転送される。この画像データの流れを転送フロー２２２と呼ぶ。プリンタ画像処理部２１０は、その画像データに対してガンマ補正処理や、スクリーン処理等のコピー用ハーフトーン処理を実行する。こうして画像処理された画像データは、画像バス１２１、プリンタＩ／Ｆ１０６を介してプリンタ部１０７に転送されて印刷される。この画像データの流れを転送フロー２２３と呼ぶ。
【００２３】
以上のように、画像データの転送フロー２２０から２２３の順に画像データが転送され、それぞれの画像処理部において所定の画像処理が実行された後に、シートに印刷されることによりコピー機能が実現される。
【００２４】
図２（Ｂ）は、実施形態１に係る画像処理装置１００におけるＰＤＬプリントジョブでの再構成部１３１の機能構成と、データの流れを説明するブロック図である。尚、図２（Ｂ）において、図１と共通する部分は同じ記号で示している。
【００２５】
まず、ネットワーク上の図示しないＰＣ等から出力された印刷データは、ネットワークＩ／Ｆ１０２、システムバス１２０を介してメモリコントローラ１１０に転送されＲＡＭ１１１に格納される。この画像データの流れを転送フロー２７０と呼ぶ。次にＲＡＭ１１１に格納された印刷データは、メモリコントローラ１１０によって読み出され、システムバス１２０を介して、再構成部１３１に構成されたＰＤＬ処理部２５０に転送される。この画像データの流れを転送フロー２７１と呼ぶ。ＰＤＬ処理部２５０では、転送された印刷データを基に、不図示のプロセッサ等により中間言語情報の作成を行い、更にこれと並行してラスタライズ処理を行う。またこの処理には、印刷データに含まれる文字コードを、予め格納されているビットパターン、アウトラインフォント等のフォントデータへ変換する処理等が含まれる。これらの処理によって印刷データは画像データに変換され、変換された画像データは画像バス１２１を介してメモリコントローラ１１０に転送され、再度ＲＡＭ１１１に格納される。この画像データの流れを転送フロー２７２と呼ぶ。次にＲＡＭ１１１に格納された画像データは、画像バス１２１を介して、再構成部１３１に構成されたＰＤＬジョブ用プリント画像処理部２６０に転送される。この画像データの流れを転送フロー２７３と呼ぶ。ＰＤＬジョブ用プリント画像処理部２６０は、その画像データに対して濃度補正処理や誤差拡散処理等のＰＤＬプリント処理を実行する。こうして画像処理された画像データは、画像バス１２１、プリンタＩ／Ｆ１０６を経由してプリンタ部１０７に転送されて印刷される。この画像データの流れを転送フロー２７４と呼ぶ。
【００２６】
以上のように、印刷データ及び画像データは画像データ転送フロー２７０から２７４の順に転送され、それぞれの画像処理部において所定の画像処理が実行された後に印刷されることで、ＰＤＬプリント機能が実現される。
【００２７】
図３は、実施形態１に係る画像処理装置１００におけるＳＥＮＤ機能での再構成部１３１の機能構成と、データの流れを説明するブロック図である。尚、図３において、図１と共通する部分は同じ記号で示している。
【００２８】
まず、スキャナ部１０９で得られた原稿の画像データは、スキャナＩ／Ｆ１０８及び画像バス１２１を介して、再構成部１３１に構成されたスキャン画像処理部２８０に転送される。この画像データの流れを転送フロー２９０と呼ぶ。スキャン画像処理部２８０は、その画像データに対して解像度変換処理やＯＣＲ用画像処理を実行する。こうして画像処理された画像データは、画像バス１２１を介してメモリコントローラ１１０に転送されＲＡＭ１１１に格納される。この画像データの流れを転送フロー２９１と呼ぶ。ＲＡＭ１１１に格納された画像データは、ＣＰＵ１０１によりＯＣＵ処理が実行され、文字領域の画像データに対しては高圧縮処理、非文字領域の画像データに対してはＪＰＥＧ等の低圧縮処理を行ってＳＥＮＤ用画像データに変換される。この画像データの流れを転送フロー２９２と呼ぶ。そして、この変換された画像データは、システムバス１２０、ネットワークＩ／Ｆ１０２を介してネットワーク上の図示しないＰＣ等に転送される。この画像データの流れを転送フロー２９３と呼ぶ。
【００２９】
以上のようにして、原稿の画像データは画像データ転送フロー２９０から２９４の順に転送され、それぞれの画像処理部において所定の画像処理が実行された後にネットワークを介して、ネットワーク上のＰＣ等に転送されることでＳＥＮＤ機能が実現される。
【００３０】
次に、ＦＰＧＡ１４０の再構成部１３１内の論理回路の構成に用いられるコンフィグデータについて説明する。
【００３１】
コンフィグデータは、ＦＰＧＡ１４０に論理回路を構成するために必要であり、所望の動作を行うための回路情報である。このコンフィグデータは、ＲＴＬ（Register Transfer Level）と呼ばれる論理記述レベルでの記述言語で設計された設計情報を基に、ＥＤＡ（Electronic Design Automation）ツールを用いて作成される。ＥＤＡツールは、ＲＴＬレベルでの設計情報やＦＰＧＡ内で使用できるＩＰ（intellectual property）コアデザインを取り込み、論理合成、配置配線、タイミング検証、ゲートレベル検証等のデザインフローを実施する。そして最終的にコンフィグデータを作成する。こうして作成されたコンフィグデータを使用してＦＰＧＡ１４０のコンフィギュレーションを行うことで、ＦＰＧＡ１４０に所望の論理回路が構成される。
【００３２】
次に図４を参照して、本実施形態１に係るＥＤＡデザインフローにおける配置配線フローでの回路ブロック特定方法について説明する。
【００３３】
図４（Ａ）は、上記配置配線フローにおけるＥＤＡツールでのＦＰＧＡの内部表示の一例を示す図である。４０１はＦＰＧＡの内部セル構造を示している。ここでＦＰＧＡ内部表示の内の囲み部４０２を拡大したものを図４（Ｂ）に示す。尚、図４（Ａ）では、他のセルは省略して示している。
【００３４】
図４（Ｂ）において、４０３及び４０４はロジックセルを示し、４０３は使用されているロジックセル、４０４は使用されていないロジックセルを示す。４０５は使用されているロジックセル４０３の間を接続するための配線である。この時、ＥＤＡツール上では、各配線に流れる見積もり電流量の大小が表示される。実施形態１では、細い配線（４０６）は電流量が少なく、太い配線４０５は電流量が多いと見積もられている。
【００３５】
これにより、ＥＤＡツールにおいて、論理回路内の配線の電流量の対象を見積もることができる。また、配置配線されたネット名及び階層名などから、その配線及びロジックセルがＲＴＬに対してどの部分に該当するのかを確認することができる。
【００３６】
図４（Ｃ）は、図４（Ａ）に対応する配線及びロジックセルがＲＴＬにおけるどの機能ブロックであるかを示している。図４（Ｃ）は、４つの機能ブロックの領域４０７〜４１０を示しており、これらの機能ブロックの領域は図４（Ｄ）に対応している。即ち、再構成部１３１は、機能ブロックＡ，Ｂ，Ｃ，Ｄを含み、領域４０７は機能ブロックＡに、領域４０８は機能ブロックＢに、領域４０９は機能ブロックＣに、領域４１０は機能ブロックＤにそれぞれ対応している。
【００３７】
以上のようにして、ＦＰＧＡ１４０に配置配線された場合に、内部配線のどの部分が流れる電流量が多く、且つ、その配線が、ＲＴＬのどの機能ブロックに含まれているかを判断できる。図４の例では、ＦＰＧＡ１４０内に配置配線された論理回路の内、電流値が多くなると見積もられた配線は機能ブロックＢに存在することが分かる。
【００３８】
上記の手順からブロックＢの内部の配線に流れる電流量が所定の大きさより大きいことが分かるが、こうした配線部分が、エレクトロマイグレーションの影響によって劣化する可能性が高いことが予見される。例えば、上記電流量が、ＦＰＧＡメーカが動作を保証している推奨動作条件より大きく、且つ動作許容範囲の上限に近い場合には、そのＦＰＧＡの寿命時間が減少する可能性がある。このような場合には、ブロックＢを図４（Ｃ）に示した位置とは異なる位置に配置配線する必要がある。
【００３９】
例えば、図４（Ｂ）で説明した電流量が大きい配線４０５については、予めＲＴＬにおいて既知のネットであるため、そのネット情報に対してＥＤＡツール上で図４（Ｂ）とは異なる位置に移動するように設定をすることができる。こうして図４（Ｂ）とは異なる位置に移動して配置配線した結果が、図５（Ａ）及び図５（Ｃ）である。
【００４０】
図５（Ａ）は、ブロックＢが図４（Ｃ）の領域４０８の位置と比べて図の左上方向に移動させた位置５０１に配置配線した例を示す。図５（Ａ）の囲み部５０２を拡大したのを図５（Ｂ）に示す。ここでは、図４（Ｂ）の配線４０５が図５（Ｂ）の配線５０３に配置配線されている。またこれら配線の周囲のロジックセルは図５（Ａ）及び図５（Ｂ）に示すような位置に配置配線されている。この時、再構成部１３１内部のブロック図としては、図５（Ｅ）に示すように、ブロックＢの代わりにブロックＢ’（機能は同じ）５０１に置き換えられているものとして表す。
【００４１】
同様に、図５（Ｃ）は、ブロックＢが図４（Ｃ）の領域４０８の位置と比べて図の右下方向に移動させた位置５０４に配置配線した例を示す。図５（Ｃ）の囲み部５０５を拡大したのが図５（Ｄ）である。ここでは、図４（Ｂ）の配線４０５が図５（Ｄ）の配線５０６に配置配線されている。またこれら配線の周囲のロジックセルは、図５（Ｃ）及び図５（Ｄ）に示すような位置に配置配線される。この時、再構成部１３１内部のブロック図としては、図５（Ｆ）に示すように、ブロックＢの代わりにブロックＢ''（機能は同じ）５０４に置き換えられているものとして表す。尚、ここで、これら配置配線後のタイミング検証がいずれも問題ないことは言うまでもない。
【００４２】
このように、図４の電流量が大きな配線４０５は、それぞれ図５（Ｂ）の配線５０３、又は図５（Ｄ）の配線５０６のように、異なるセルの位置に配置配線されている。こうして、ブロックＢをＦＰＧＡ１４０内の異なる位置に配置配線することで、電流量の多い配線を、異なるセルの位置に配置配線することができる。
【００４３】
以上のようにして、電流量が大きな配線を含むブロックを、ＦＰＧＡ１４０内で、それぞれ異なる位置に配置した複数の論理回路を生成する。
【００４４】
こうして得られたそれぞれの論理回路の構成情報を基に、ＥＤＡツールによってＦＰＧＡ内に構成するためのコンフィギュレーションデータを作成する。これにより、電流量が大きな配線を含むブロックが、それぞれ互いに異なる位置に配置された論理回路を構成するコンフィギュレーションデータを複数生成できる。尚、実施形態１では、説明を簡単にするためにブロックＢに対しては３つのコンフィギュレーションデータを生成して使用するものとする。
【００４５】
以上のようにして生成されたコンフィギュレーションデータは、ＲＯＭ１０４に格納される。そのコンフィギュレーションデータは、ＣＰＵ１０１からのＦＰＧＡ書き換え要求がコンフィグコントローラ１３０に通知されると、コンフィグコントローラ１３０によりＲＯＭ１０４から読み出されて、再構成部１３１を再構成する。
【００４６】
図６は、実施形態１に係る画像処理装置１００のＲＯＭ１０４のメモリマップを説明する図である。
【００４７】
メモリ空間６０１は、ＲＯＭ１０４の全メモリ空間を表している。ファーム領域６０２は、画像処理装置１００の動作を制御するためにＣＰＵ１０１が使用するファームウェアを格納している。コンフィグデータ領域６０３は、ＦＰＧＡ１４０内の再構成部１３１を書き換えるためのコンフィグレーションデータを格納している。
【００４８】
図６の右側には、コンフィグデータ領域６０３を拡大して示しており、コンフィグデータ領域６０４は、図４（Ｃ）の論理回路を構成するためのコンフィギュレーションデータを格納している。このコンフィグデータ領域６０４の先頭アドレスをアドレス１とする。このコンフィグデータ領域６０４のコンフィギュレーションデータを使用してＦＰＧＡ１４０内の再構成部１３１を書き換えた場合には、図４（Ｃ）に示した論理回路で再構成される。
【００４９】
コンフィグデータ領域６０５は、図５（Ａ）の論理回路を構成するためのコンフィギュレーションデータを格納している。このコンフィグデータ領域６０５の先頭アドレスをアドレス２とする。このコンフィグデータ領域６０５のコンフィギュレーションデータを使用してＦＰＧＡ１４０内の再構成部１３１を書き換えた場合には、図５（Ａ）に示した論理回路で再構成される。
【００５０】
コンフィグデータ領域６０６は、図５（Ｃ）の論理回路を構成するためのコンフィギュレーションデータを格納している。このコンフィグデータ領域６０６の先頭アドレスをアドレス３とする。このコンフィグデータ領域６０６のコンフィギュレーションデータを使用してＦＰＧＡ１４０内の再構成部１３１を書き換えた場合は、図５（Ｃ）に示した論理回路で再構成される。コンフィグデータ領域６０３の空いている領域には、ここでは説明しないその他の論理回路を構成するためのコンフィギュレーションデータが格納されているが、本実施形態では関係ないため説明しない。従って、ＣＰＵ１０１は、現在、再構成部１３１に構成されている論理回路のコンフィギュレーションデータがどれであるかを、例えば、この先頭アドレスにより記憶している。
【００５１】
次に図７を参照して、本実施形態１に係る画像処理装置１００による処理を説明するフローチャートを示す。尚、本実施形態１では、特に説明が無い限りＣＰＵ１０１にて制御され、制御中に記憶しておくべき情報は、ＲＡＭ１１１，ＲＯＭ１０４のいずれかの記憶手段に適宜記憶されるものとする。
【００５２】
図７（Ａ）は、実施形態１に係る画像処理装置１００におけるＦＰＧＡ１４０の再構成部１３１の構成処理を説明するフローチャートである。尚、この処理はＣＰＵ１０１がＲＯＭ１０４に記憶されているプログラムを実行することにより実現される。
【００５３】
まずステップＳ７０１でＣＰＵ１０１は、例えば操作部１０３からジョブが入力されかどうかを判定し、ジョブが入力されるとＳ７０２に進んで、入力されたジョブが使用するブロックを判別する。
【００５４】
図７（Ｂ）は、図７（Ａ）のＳ７０２のジョブが使用するブロックを判別する処理を説明するフローチャートである。
【００５５】
Ｓ７２０でＣＰＵ１０１は、入力されたジョブが、電流量が所定値よりも大きなブロック、即ちブロックＢ４０８を使用するか否かを判定する。例えば、ブロックＢ４０８が、図２（Ａ）のコピージョブ用プリント画像処理部２１０の論理回路である場合は、コピージョブが入力されると、電流量が大きな配線を含むブロックが存在していると判断する。一方、ＰＤＬプリントジョブが入力された際は、電流量が大きな配線を含むブロックが存在していないと判定してＳ７２４に進み、電流量が大きな配線を含むブロックが存在していないことを示すようにフラグをオフしてこの処理を終了する。Ｓ７２０でＣＰＵ１０１が、電流量が大きな配線を含むブロックが存在していると判定するとＳ７２１に進みＣＰＵ１０１は、使用するコンフィギュレーションデータを決定する。
【００５６】
例えば、コピージョブ用のコンフィギュレーションデータとして、前述の例では、図４（Ｄ）、図５（Ｅ）、図５（Ｆ）を構成するコンフィギュレーションデータが存在する。ここで、前回使用していたコンフィギュレーションデータの情報がＲＡＭ１１１に格納されている。従って、その格納されている情報から、使用するコンフィギュレーションデータを決定する。次にＳ７２２に進みＣＰＵ１０１は、入力されたジョブに対して設定された、例えば用紙サイズや置数、レイアウト情報や両面設定等のパラメータを解析し、これらに基づいて、動作時間に応じたカウント値を決定する。例えば、入力されたジョブが、原稿が１０枚で、且つ用紙１枚に対して２ページ分を縮小して印刷する２in１レイアウト設定である場合、印刷する用紙の枚数は５枚となる。またプリンタ部１０７の印刷速度が毎分６０枚の場合は、動作時間は５秒となるため、この動作時間（５秒）に応じたカウント値（稼働情報）を決定してＳ７２３に進む。Ｓ７２３でＣＰＵ１０１は、電流量が大きな配線を含むブロックが存在していることを示すようにフラグをオンして、この処理を終了する。尚、上述のフラグはＲＡＭ１１１に設けられている。
【００５７】
次にＳ７０３に進みＣＰＵ１０１は、Ｓ７０２の処理の結果、フラグがオンかどうかにより、電流量が大きな配線を含むブロックが存在しているか否かを判定する。ここでフラグがオンであると判定するとＳ７０４に進むが、そうでないときはこの処理を終了する。Ｓ７０４でＣＰＵ１０１は、ＲＡＭ１１１に格納されている動作時間を示すカウント値を読み出す。尚、この動作時間を示すカウント値は、ジョブ毎にカウントアップ（積算）されて、その積算値が毎回、ＲＡＭ１１１に格納されるため、ここでは現時点でのカウント値を読み出す。そしてＳ７０５に進みＣＰＵ１０１は、その読み出したカウント値に、Ｓ７０２で決定したカウント値を加算する。
【００５８】
次にＳ７０６に進みＣＰＵ１０１は、Ｓ７０５で加算して求めたカウント値が所定の閾値より大きいか否かを判定する。例えば、所定の閾値を１０時間としたとき、Ｓ７０５で求めたカウント値が１０時間を超えたときは、ブロックＢが累積で１０時間よりも長く動作していたことになる。その場合は、Ｓ７０７に遷移して、カウント値が閾値以上に達したため、カウント値をクリアした後にＲＡＭ１１１にストアする。次にＳ７０９に進みＣＰＵ１０１は、そのジョブが終了したかどうかを判定する。ここで、そのジョブが終了したと判定するとＳ７１０に進み、ＣＰＵ１０１は、回路変更指示をコンフィグコントローラ１３０に対して出力する。
【００５９】
この回路変更指示には、次のコンフィグデータの情報が含まれている。例えば、現時点で使用していたコンフィギュレーションデータが図６（Ｂ）の領域６０４に格納されている場合は、図６（Ｂ）の領域６０５に格納されているコンフィギュレーションデータによる回路変更指示がコンフィグコントローラ１３０に出力される。これにより、先ほど実行したジョブでは、図４（Ｃ）の論理回路で画像処理を行っていたのに対して、次回のジョブでは、図５（Ａ）の論理回路で画像処理を行うことになる。次にＳ７１１に進みＣＰＵ１０１は、ＦＰＧＡ１４０の再構成部１３１の論理回路の書き換え動作が完了したかどうかを判定する。ここではコンフィグコントローラ１３０が論理回路の書き換えを完了すると、ＣＰＵ１０１に対して終了通知が送信されるため、終了通知がＣＰＵ１０１に通知されると、書き換え動作が完了したと判定して、この処理を終了する。
【００６０】
尚、Ｓ７０６でＣＰＵ１０１は、カウント値が閾値以下であると判定した場合はＳ７０８に進み、ＣＰＵ１０１は、現在のカウント値をＲＡＭ１１１に記憶して、この処理を終了する。
【００６１】
以上説明したように実施形態１によれば、寿命の劣化が発生するおそれがあるブロックを使用する場合に、所定時間毎に、そのブロックをＦＰＧＡの異なる位置に構成することにより、エレクトロマイグレーションによる影響を少なくできる。これにより、ＦＰＧＡの寿命を延長することが可能となる。
【００６２】
尚、実施形態１では、ブロックＢをＦＰＧＡ内の異なる位置に配置配線するようなコンフィギュレーションデータを３つ用意し、これらを所定時間毎に順番に切り替えている。これにより、このような対策を実施しない場合と比べて、約３倍の寿命を見込むことが可能である。
【００６３】
また実施形態１では、１つのブロックに対して用意したコンフィギュレーションデータの種類の数を３とした。本発明はこれに限定されない。図４（Ａ）に示した論理回路の構成等やＲＯＭ１０４の容量による制限もあるが、これ以上の数のコンフィギュレーションデータを用意して切り替えるような構成であっても良い。また、製品寿命に応じてコンフィギュレーションデータの種類を用意することで、所望の寿命を得ることができる。
【００６４】
尚、実施形態１では、説明を簡単にするためにＣＰＵ１０１からの回路変更指示に応じて、図４（Ｄ）、図５（Ｅ）及び図５（Ｆ）に示すように、ブロック全体を順に切り替えるような構成で説明した。しかし、ブロックＢのみを変更するようにブロックＢ４０８とブロックＢ'５０１及びブロックＢ''５０４の各論理回路のみを書き換えるような部分書き換えが可能な構成であっても問題ない。
【００６５】
また本実施形態１では、ＣＰＵ１０１からの回路変更指示を出力する条件として、論理回路の動作時間をカウントし、そのカウント値が所定の閾値に達した場合で説明した。しかし、単純に画像処理装置１００の電源オフ／オンのタイミングで、回路変更指示を出力する構成でも構わない。
【００６６】
尚、本実施形態１では、論理回路の動作時間のカウント値を格納するためにＲＡＭ１１１を使用するように説明した。しかし、電源がオフされる場合には一旦ＲＯＭ１０４、或いは他の不揮発メモリにそのカウント値を退避し、電源オフでカウント値が消去されないようにする必要があることは言うまでもない。
【００６７】
[実施形態２]
次に本発明の実施形態２を説明する。実施形態２では、上述の実施形態１で説明した論理回路ブロックの書き換え制御に関して、書き換えを行う必要がある論理回路ブロックが複数存在する場合の論理回路の動作時間の管理方法について説明する。尚、実施形態２に係る画像処理装置１００のハードウェア構成等は、前述の実施形態１と同様であるため、その説明を省略する。
【００６８】
図８は、図４（Ｄ）等で説明した論理回路とは異なる論理回路であり、例えば図３で説明した、ＳＥＮＤジョブで使用されるスキャン画像処理部内の論理回路である。
【００６９】
図８（Ａ）は、スキャン画像処理部２８０の論理回路のブロック図を表しており、例えばブロックＥ、ブロックＦ、ブロックＧであり、これら機能ブロック８０１〜８０３によって構成されているものとする。この論理ブロックをＦＰＧＡ１４０に配置配線を行った際のＥＤＡツールでのＦＰＧＡ内部表示の例を図８（Ｂ）に示す。各ブロックが図のように配置配線されたＦＰＧＡの内部セルを示している。ここで図８（Ｂ）の囲み部８０４を拡大したものを図８（Ｃ）に示す。図８（Ｃ）では、太い配線８０５に流れる電流量が多いと見積もられており、これによりブロックＦ８０２に、流れる電流量が多いと見積もられる配線が存在することが分かる。図８（Ｂ）を構成するコンフィギュレーションデータは、ＥＤＡツールによって生成されている。
【００７０】
図９は、実施形態２において、コピージョブとＳＥＮＤジョブがそれぞれ実行された場合のＦＰＧＡ内のロジックセル構成を説明する図である。
【００７１】
図９（Ａ）は、コピージョブ実行時に使用される図５（Ｆ）のブロックＢ''５０４と、ＳＥＮＤジョブ実行時に使用される図８（Ｂ）のブロックＦ８０２とをそれぞれ再構成部１３１に構成した場合の位置関係を示している。これを見ると、ブロックＢ''５０４のロジックセル領域と、ブロックＦ８０２のロジックセル領域とが重複して構成されることになる。図の矩形領域９０１を拡大したものを図９（Ｂ）に示す。尚、説明を容易にするために、使用されるセルと使用されないセルの区別をしないものとする。
【００７２】
ここで、ブロックＢ''５０４のロジックセル領域において電流量が大きい配線５０６と、ブロックＦ８０２のロジックセル領域において電流量が大きい配線８０５とは同じセル９０２を共有している。従って、セル９０２は、コピージョブの実行時においてもＳＥＮＤジョブの実行時においても大きい電流量が流れていることになる。この場合は、コピージョブとＳＥＮＤジョブの両方の合計の動作時間を合わせてカウントしないと、そのセルに対して正しい動作時間をカウントすることができない。
【００７３】
このため図１０に示すような動作時間のカウント手法を用いる。
【００７４】
図１０は、実施形態２に係る画像処理装置１００におけるＦＰＧＡ１４０の内部セル構造４０１の一例を説明する図である。
【００７５】
図１０（Ａ）は、ＦＰＧＡ１４０の内部セル構造４０１を１０個の領域に分割した状態を示しており、それぞれの領域を領域１〜領域１０とする。次に電流量が大きいブロックであるブロックＢ、ブロックＢ’、ブロックＢ''及びブロックＦ内の電流量が大きい配線を、ＦＰＧＡ内部セル構造４０１にプロットしたものが図１０（Ｂ）である。各配線の位置は、実施形態１で説明したように予め判明しているため、この図のようにプロットすることが可能である。この図から、各ブロックに対して電流量が大きい配線が占有している領域を表に表すと図１０（Ｃ）のようになる。図１０（Ｂ）（Ｃ）において、ブロックＢ内の電流量が大きい配線４０５は領域３に配置され、ブロックＢ’内の電流量が大きい配線５０３は領域２に配置され、ブロックＢ''内の電流量が大きい配線５０６は領域３及び領域４に配置されている。更に、ブロックＦ内の電流値が大きい配線８０５は、領域３及び領域４に配置されている。
【００７６】
次に図１１を参照して、実施形態２で実施する動作を制御するためのフローチャートを示す。
【００７７】
図１１は、実施形態２に係る画像処理装置１００が、図７のＳ７０２で実行する処理を説明するフローチャートである。それ以外の制御フローは、前述の実施形態１と同様であるため、実施形態２では、その説明を割愛する。
【００７８】
まずＳ７２０でＣＰＵ１０１は、入力したジョブが電流量の大きなブロックを必要するジョブかどうかを判定する。例えば、入力したジョブがコピージョブであった場合は、電流量の大きなブロックＢが必要となる。また入力されたジョブがＳＥＮＤジョブであった場合には、電流量の大きなブロックＦが必要となる。Ｓ７２０でＣＰＵ１０１が、電流量が大きな配線を含むブロックが存在していると判定するとＳ７２１に進むが、そうでないときは、この処理を終了する。
【００７９】
Ｓ７２１でＣＰＵ１０１は、使用するコンフィギュレーションデータを決定する。コピージョブ用のコンフィギュレーションデータとしては、図４（Ｄ）、図５（Ｅ）及び図５（Ｆ）の論理回路を構成するためのコンフィギュレーションデータが存在する。またＳＥＮＤジョブ用のコンフィギュレーションデータとしては、図８（Ａ）の論理回路を構成するためのコンフィギュレーションデータが存在する。これらのコンフィギュレーションデータは、図１２に示すように、ＲＯＭ１０４のメモリ空間６０１内のコンフィグデータ領域５０３内に格納されている。
【００８０】
図１２は、実施形態２に係る画像処理装置１００のＲＯＭ１０４のメモリマップを説明する図である。
【００８１】
図１２に示すように、図８（Ａ）の論理回路８０２を構成するためのコンフィギュレーションデータは、コンフィグデータ領域６０３の内部アドレス１０１から始まるメモリ領域１２０１に格納されている。尚、複数のコンフィギュレーションデータ中から所望の１つを決定する方法は、上述の実施形態１で説明した内容と同じであるため、その説明を割愛する。
【００８２】
次にＳ１１０１に進みＣＰＵ１０１は、使用するセル領域を決定する。ここで、例えば図１０（Ｃ）に示すテーブルと同じ情報を持つ参照用テーブルデータがＲＯＭ１０４に格納されているため、このテーブルを参照して使用するセル領域を決定する。次にＳ７２２に進みＣＰＵ１０１は、ジョブ情報に含まれる設定パラメータに基づいて、動作時間に応じたカウント値を決定する。そしてＳ７２３に進み前述のフラグをオンして、この処理を終了する。
【００８３】
また、Ｓ７２０でＣＰＵ１０１が、ジョブ情報から、そのジョブが電流量の大きい配線を含むブロックを使用しないと判定するとＳ７２４に進み、前述のフラグをオフしてこの処理を終了して、Ｓ７０３に処理を進める。
【００８４】
Ｓ７０３以降の処理は、基本的には前述の実施形態１で説明した通りであるが、実施形態２では、Ｓ１１０１で取得したセル領域の情報を用いる点が異なる。即ち、図７のＳ７０５では、Ｓ１１０１で取得したセル領域ごとにカウント値を加算して、使用するセル領域ごとの積算値を求める。そしてＳ７０６に進みＣＰＵ１０１は、使用するセル領域ごとの積算値のいずれかが閾値を超えたかどうかを判定する。例えば、図１０の例で、領域３の積算値が閾値を超えたと判定すると、例えば領域３を含まないブロックＢ’のコンフィグレーションデータを領域６０５から読み出して、再構成部１３１のブロックＢを再構成する。
【００８５】
以上説明したように実施形態２によれば、ＦＰＧＡ１４０の内部セル４０１を複数の領域に分割し、且つジョブに応じて構成されるブロックの電流量が大きい配線位置がどの領域に配置されているかにより、セル領域単位で動作時間を求める。そして、その動作時間が閾値を超えると、その領域に構成されているブロックを他の領域に移動するように制御する。これにより、より正確にＦＰＧＡ寿命の延長を図ることが可能となる。
【００８６】
尚、本実施形態２では、説明を簡単にするために図１０では、ＦＰＧＡの内部セル４０１を１０個に分割したが、分割数をより多くすることでより正確に動作時間をカウントすることが可能である。但し、あまり多く分割してしまうとＣＰＵでの管理が複雑になるため、管理のし易さと、精度とのトレードオフで分割数を決定する必要がある。
【００８７】
また実施形態２では説明を簡単にするために、スキャン画像処理部２８０の論理回路を構成するブロックＦのコンフィギュレーションデータを１つだけとして説明した。しかし、ブロックＦに対しても複数のコンフィギュレーションデータを格納しておき、その動作状況に応じて切り替えて使用できる構成であっても良い。
【００８８】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００８９】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００９０】
１０１…ＣＰＵ，１０４…ＲＯＭ，１３１…再構成部、１４０…ＦＰＧＡ，４０１…内部セル
【図１】
0006478525.tif 000002
【図２】
0006478525.tif 000003
【図３】
0006478525.tif 000004
【図４】
0006478525.tif 000005
【図５】
0006478525.tif 000006
【図６】
0006478525.tif 000007
【図７】
0006478525.tif 000008
【図８】
0006478525.tif 000009
【図９】
0006478525.tif 000010
【図１０】
0006478525.tif 000011
【図１１】
0006478525.tif 000012
【図１２】
0006478525.tif 000013