(57)【要約】      （修正有）【課題】複数のコアをもつデバイスをアクセラレータとして用いる画像処理装置において、全体的な処理効率の向上を図る。【解決手段】複数のコアを内部に持つデバイスであって、それぞれのコアを、１機能で専用させる専用モードで動作させるか、複数の機能で共用させる共用モードで動作させるかを、コンフィグレーションにより設定可能なデバイスをアクセラレータとして用いる画像処理装置において、機能の利用履歴とプロファイル結果に基づいて、各コアの現在の設定モードでの、最適な機能のコアの割り振りを決めるコア割り当て決定手段と、各コアの設定モードを変えることを前提にして、最適な各コアの設定モード及び機能のコアの割り振りを決めるコア割り当て決定手段とを段階的に切り替える。【選択図】図１
2012194947.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアを内部に持つデバイスであって、それぞれのコアを、１機能で専用させる専用モードで動作させるか、複数の機能で共用させる共有モードで動作させるかを、コンフィグレーションにより設定可能なデバイスを備えた画像処理装置において、
機能の利用頻度を測定する利用頻度測定手段と、
コアの利用状況を測定するコア利用状況測定手段と、
前記利用頻度測定手段の測定結果を閾値１と比較した結果と、コア利用状況測定手段の測定結果を閾値２と比較した結果とにより、各コアの現在の設定モードでの、最適な機能のコアの割り振りを決めるコア割り当て決定手段１と、
前記利用頻度測定手段の測定結果を閾値１と比較した結果と、コア利用状況測定手段の測定結果を閾値２と比較した結果とにより、各コアの設定モードを変えることを前提にして、最適な各コアの設定モード及び機能のコアの割り振りを決めるコア割り当て決定手段２と、
を有し、
前記コア割り当て決定手段１で決定したコア割り振り、前記コア割り当て決定手段２で決定したコアの設定モード及びコア割り振りに、段階的に切り替えることを特徴とする画像処理装置。
【請求項２】
前記利用頻度測定手段は、機能の利用履歴を利用して、機能の利用頻度を基準１により測定し、
前記コア利用状況測定手段は、機能のプロファイル結果を利用して、コアの利用状況を基準２により測定する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記コア割り当て決定手段１で利用する前記利用頻度測定手段と前記コア利用状況測定手段の前記基準１、２のいずれか一方もしくは両方は、
前記コア割り当て決定手段２で利用する前記利用頻度測定手段と前記コア利用状況測定手段の前記基準１、２のいずれか一方もしくは両方と異なることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
受付済みで未実施のジョブのモードと、実施済みのジョブのモードとの一致度を算出する一致度算出手段をさらに備え、
前記一致度算出手段の結果により、前記閾値２を変えることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
処理中の画像がマルチページの１ページであるかを判断するマルチページ判断手段と、マルチページのうちの未処理のページ数を求める残りページ算出手段とをさらに備え、
前記マルチページ判断手段と前記残りページ算出手段とにより、前記閾値２を変えることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項６】
前記基準１はページ数であり、前記基準２は機能を構成する小機能の処理時間であることを特徴とする請求項２乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
複数のコアを内部に持つデバイスであって、それぞれのコアを、１機能で専用させる専用モードで動作させるか、複数の機能で共用させる共有モードで動作させるかを、コンフィグレーションにより設定可能なデバイスを備えた画像処理装置の画像処理方法において、
機能の利用頻度を測定する利用頻度測定工程と、
コアの利用状況を測定するコア利用状況測定工程と、
前記利用頻度測定工程の測定結果を閾値１と比較した結果と、コア利用状況測定工程の測定結果を閾値２と比較した結果とにより、各コアの現在の設定モードでの、最適な機能のコアの割り振りを決めるコア割り当て決定工程１と、
前記利用頻度測定工程の測定結果を閾値１と比較した結果と、コア利用状況測定工程の測定結果を閾値２と比較した結果とにより、各コアの設定モードを変えることを前提にして、最適な各コアの設定モード及び機能のコアの割り振りを決めるコア割り当て決定工程２と、
を有し、
前記コア割り当て決定工程１で決定したコア割り振り、前記コア割り当て決定工程２で決定したコアの設定モード及びコア割り振りに、段階的に切り替えることを特徴とする画像処理方法。
【請求項８】
前記利用頻度測定工程は、機能の利用履歴を利用して、機能の利用頻度を基準１により測定し、
前記コア利用状況測定工程は、機能はプロファイル結果を利用して、コアの利用状況を基準２により測定する、
ことを特徴とする請求項７に記載の画像処理方法。
【請求項９】
前記コア割り当て決定工程１で利用する利用頻度測定工程と前記コア利用状況測定工程の前記基準１、２のいずれか一方もしくは両方は、
前記コア割り当て決定工程２で利用する前記利用頻度測定工程と前記コア利用状況測定工程の前記基準１、２のいずれか一方もしくは両方と異なることを特徴とする請求項８に記載の画像処理方法。
【請求項１０】
受付済みで未実施のジョブのモードと、実施済みのジョブのモードとの一致度を算出する一致度算出工程をさらに備え、
前記一致度算出工程の結果により、前記閾値２を変えることを特徴とする請求項７乃至９のいずれか１項に記載の画像処理方法。
【請求項１１】
処理中の画像がマルチページの１ページであるかを判断するマルチページ判断工程と、マルチページのうちの未処理のページ数を求める残りページ算出工程とをさらに備え、
前記マルチページ判断工程と前記残りページ算出工程とにより、前記閾値２を変えることを特徴とする請求項７乃至９のいずれか１項に記載の画像処理方法。
【請求項１２】
前記基準１はページ数であり、前記基準２は機能を構成する小機能の処理時間であることを特徴とする請求項８乃至１１のいずれか１項に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理用のアクセラレータを備えた画像処理装置及びその画像処理方法に関する。
【背景技術】
【０００２】
一般に画像処理装置では、スキャナから読み取ったデータ及び外部からの入力データは、ＣＰＵやＡＳＩＣ等で画像処理がされる。ここで、ＡＳＩＣは製造期間やコストがかかることから、変更可能性のある機能に関しては、ＣＰＵで処理される場合が多い。しかし、要求される画像処理の複雑化に伴い、ＣＰＵだけでは速度面で性能未達となることが増えてきている。
【０００３】
そこで、画像処理用のアクセラレータを取り付けて処理速度の向上を計ることが行われるようになってきた。アクセラレータの一種類として、リコンフィグラブルなデバイスがある。リコンフィグラブルなデバイスでは、コンフィグレーションを切り替えることで、適した画像処理を行えるようになる。
【０００４】
リコンフィグラブルなデバイスとして、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒｅｙ）が挙げられる。ＦＰＧＡをアクセラレータとして用いた場合、あらかじめ所定のコンフィグレーション情報と、プログラムを用意しておき、それらを任意のタイミングで設定することで、適した画像処理を行うことが可能となる。
【０００５】
一般的なＣＰＵも、命令とデータを同時に入力して処理しているため、リコンフィグラブルなデバイスとみなすことも可能である。任意のタイミングでプログラムをロードして、適した画像処理を行うことが可能となる。しかしながら、単一のコア（プロセッサコア）では、アクセラレートするには処理能力が不十分であることから、近年は、多数のコアを内部に持つ、いわゆるメニーコアのデバイスも検討されている。
【０００６】
メニーコアのデバイスをアクセラレータとして用いた場合も同様に、あらかじめ所定のコンフィグレーション情報（各種メモリ割り当て容量やコア割り当てなど）を用意しておき、任意のタイミングでリブートすることで、適した画像処理を行うことが可能となる。
【０００７】
しかし、今までのアクセラレータを用いた画像処理装置では、アクセラレータで実現する機能と、ＣＰＵで実現する機能を固定的に決めていた。そのため、要求に偏りがあった場合、ＣＰＵ、アクセラレータのいずれかの処理効率性が低いこととなっていた。また、アクセラレータの使用にあたっては、使用状況に応じて動作中にコンフィグレーションを切り替えることも行われているが（例えば、特許文献１）、コンフィグレーション切り替えには処理時間がかかることから、大幅な変更は容易にできない。大幅な変更をしようとすると、要求が切り替わったときに、処理効率が極端に落ちるという問題があった。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の課題は、複数のコアをもつデバイスをアクセラレータとして用いる画像処理装置において、コンフィグレーション切り替えを出来る限り少なくして、全体的処理効率を高めることにある。
【課題を解決するための手段】
【０００９】
本発明は、複数のコアを内部に持つデバイスであって、それぞれのコアを、１機能（タスク）で専用させる専用モードで動作させるか、複数の機能で共用させる共用モードで動作させるかを、コンフィグレーションにより設定可能なデバイスをアクセラレータとして用いる画像処理装置において、機能の利用履歴とプロファイル結果に基づいて、各コアの現在の設定モード（専用モードか共用モード）内で、最適な機能のコアの割り振りを決めるコア割り当て決定手段１と、各コアの設定モードを変えることを前提に、最適な各コアの設定モード及び機能のコアの割り振りを決めるコア割り当て決定手段２とを段階的に切り替えることを主要な特徴とする。
【発明の効果】
【００１０】
本発明では、複数のコアをもつデバイスをアクセラレータとして用いる画像処理装置において、機能のコア使用配分の変更、コンフィグレーションの変更と段階的に切り替えるようにしたので、全体的な処理効率を高めることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の概要を説明する図である。
【図２】本発明の一実施形態に係る画像処理装置の構成例を示す図である。
【図３】アクセラレータを説明する図である。
【図４】アクセラレータで機能を実施している時の処理フロー図である。
【図５】コントローラのＣＰＵで機能を実施しているときの処理フロー図である。
【図６】コンフィグレーション切り替えにかかるコントローラの処理フロー図である。
【図７】コンフィグレーション切り替えにかかるアクセラレータの処理フロー図である。
【図８】利用履歴の一例を示す図である。
【図９】プロファイル情報の一例を示す図である。
【図１０】機能Ａの各関数の割合を示す図である。
【図１１】コンフィグレーション設定またはコア使用配分の変更を説明する図である。
【図１２】本発明の具体的処理例を示す図である。
【図１３】機能Ａ，Ｂの具体例を示す図である。
【図１４】アクセラレータで機能を実施している時の別の処理フロー図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を用いて説明する。
【００１３】
はじめに、図１を用いて本発明の概要を説明する。便宜上、図１では、アクセラレータに４つのコアをもつデバイスを使用するとする。それぞれのコアについて、コンフィグレーションで専用あるいは共用の属性を設定する。専用と設定されたコア（専用コア）は、１タスク（機能）で専用される専用モードで動作し、高速動作が可能である。この専用コアには、専用しても高速に動作させたいタスクを動作させる。一方、共用と設定されたコア（共用コア）は、複数タスクで共用される共用モードで動作し、専用コアに比べると低速である。この共用コアには、比較的高速動作を必要としない、時分割で動作させてもよいタスクを動作させる。
【００１４】
図１において、（ａ）は初期状態を示し、アクセラレータは、コア１，２が専用、コア３，４が共用となっている。この初期状態において、ＣＰＵではＡとＣが動作し、アクセラレータでは、コア１，２でＢが動作し、コア３，４でＤが動作しているとする。いま、Ａの処理時間が想定よりも多くなったとする。この場合、（ｂ）に示すように、コア１〜４の設定は初期状態のままとして、単にコアの使用配分を変更して、共用コア３，４でＤとＡを動作させる。そして、Ａの要求が減ったならば、再び、（ａ）の初期状態に戻す。すなわち、この段階ではコンフィグレーションの切り替えを行わない。
【００１５】
一方、Ａの処理要求が更に多くなったならば、ここで初めてコンフィグレーション切り替えを行って、（ｃ）に示すように、コア３を専用コアとする。そして、このコア３にＡを専用して動作させる。その後、Ａの処理要求が減ってきたなら、例えば、（ｂ）の状態に戻す。
【００１６】
コンフィグレーション切り替えは処理コストがかかる。メニーコアを持つデバイスでは、いずれかのコアで動作をしていると、リブートできないため、コンフィグレーションの切り替えは、コアの処理の終了の待ち時間も考慮する必要があるため、単純なコア使用配分の変更に比べて処理コストが増加する。本発明では、コンフィグレーションを必要とせずに処理コストがかからないコア使用配分変更の状態を導入して、コア使用配分の変更、コンフィグレーション切り替えと段階的に行うので、無駄な切り替えを避ける効果を期待できる。
【００１７】
図２は、本発明の実施形態に係るデジタル式のカラー画像処理装置の構成例を示す。図において、コントローラ１０、アクセラレータ２０、操作部３０、圧縮処理部６０、伸長処理部７０など汎用バス１００に接続されている。スキャナ４０はスキャナ補正部５０を介して圧縮処理部６０に接続され、プリンタ９０はプリンタ補正部８０を介して伸長処理部７０に接続されている。コントローラ１０にはＨＤＤ（ハードディスク）１１０やＮＩＣ（ネットワーク・インタフェース・コントローラ）１２０が接続され、該ＮＩＣ１２０はネットワークを通して外部パソコン端末（ＰＣ端末）１３０などが接続される。
【００１８】
コントローラ１０は、種々の処理を実行するＣＰＵ１５を内蔵している。ほかにコントローラ１０は、ＣＰＵ１５の処理に必要なソフトウエアを格納するＲＯＭ、処理途中のデータ等を格納するＲＡＭなどを内蔵しているが、図２では省略してある。アクセラレータ２０には、複数のコア（プロセッサコア）を持つデバイスが用いられる。
【００１９】
本画像処理装置が複写機として動作する場合、スキャナ４０は原稿から画像データを読み取り、当該画像データ（アナログ信号）をデジタルデータに変換して出力する。スキャナ補正部５０は、スキャナ４０で読み取った画像データ（デジタルデータ）について、画像領域を文字・線画や写真などに分類したり、原稿画像のＲＧＢデータをフィルタ処理などの画像処理を施す。圧縮処理部６０は、スキャナ補正後のＲＧＢ各８ｂｉｔ画像データとエッジ文字領域信号（１ｂｉｔ）、色領域信号（１ｂｉｔ）を圧縮処理する。圧縮後の画像データは、汎用バス１００を通って、コントローラ１０に送られる。コントローラ１０は、送られたデータをＨＤＤ１１０に蓄積する。蓄積データには、書誌情報として画像サイズや読み取った原稿の種類も記録する。
【００２０】
なお、ここでは画像データに対し圧縮を施すとしたが、汎用バスの帯域が十分に広く、蓄積するＨＤＤ１１０の容量が大きければ、非圧縮の状態でデータを扱っても良い。
【００２１】
次にコントローラ１０は、ＨＤＤ１１０の画像データを、汎用バス１００を介して伸張処理部７０に送出する。伸張処理部７０は、圧縮処理されていた画像データを元のＲＧＢ各８ｂｉｔデータとエッジ文字領域信号（１ｂｉｔ）、色領域信号（１ｂｉｔ）に伸張し、プリンタ補正部８０に送出する。プリンタ補正部８０では、ＲＧＢ画像データを色補正処理にてＹＭＣＢｋデータに変換して、エッジ文字領域信号であり色領域信号でない部分は、黒文字としてＢｋの単色データに置き換える。さらにプリンタ補正部８０では、γ補正処理、中間調処理などが行われ、プロッタの明暗特性の補正処理や階調数変換処理を行う。ここでの階調数変換処理では、誤差拡散やディザ処理を用いて各色８ｂｉｔから２ｂｉｔへと画像データの変換を行う。プロッタ９０はレーザービーム書き込みプロセスを用いた転写紙印字ユニットで、２ｂｉｔの画像データを感光体に潜像として描画し、トナーによる作像／転写処理後、転写紙にコピー画像を形成する。
【００２２】
本画像処理装置が、ネットワークを介してＰＣに画像データを配信する配信スキャナとして動作する場合は、コントローラ１０内のＣＰＵ１５あるいはアクセラレータ２０がＨＤＤ１１０に蓄積された画像データに対して色変換処理、階調処理、フォーマット処理などを行う。この場合、コントローラ１０の制御下で、ＨＤＤ１１０に蓄積された画像データをＲＡＭ上に展開してＣＰＵ１５で処理、または、画像データをアクセラレータ２０に転送し、アクセラレータ２０で処理することが行われる。ＣＰＵ１５で処理するか、アクセラレータ２０で処理するかは、機能によって固定的に決めても良いし、ＣＰＵ１５でもアクセラレータ２０でも動作するようなアルゴリズムの場合は、装置の利用状況によって切り替えるようにしてもよい。階調処理では、配信スキャナ動作時のモードに従った階調変換処理を行う。フォーマット処理では、ＪＰＥＧやＴＩＦＦやＰＤＦ形式への汎用画像フォーマット変換などを行う。ＣＰＵ１５やアクセラレータ２０で処理された画像データは、コントローラ１０により、ＮＩＣ１２０を介して外部ＰＣ端末に配信される。
【００２３】
また、本画像処理装置がネットワークを介して、ＰＣ端末１３０からプリントアウトするプリンタとして動作する場合、コントローラ１０の制御下で、ＮＩＣ１２０で受信したデータから、画像及びプリント指示するコマンドを解析し、画像データとして、印刷できる状態にビットマップ展開して、展開したデータを圧縮する。圧縮された画像データは、随時、大容量の記憶装置であるＨＤＤ１１０に書き込まれる。該画像データを蓄積する時に、書誌情報もＨＤＤ１１０に書き込むようにする。
【００２４】
次に、コントローラ１０は、ＨＤＤ１１０の画像データを、汎用バス１００を介して伸張処理部７０に送出する。伸張処理部７０は、圧縮処理されていた画像データを元の８ｂｉｔデータに伸張し、プリンタ補正部８０に送出する。プリンタ補正部８０では、ＲＧＢ入力ならば、色補正処理にてＹＭＣＢｋデータに変換をする。次にＹＭＣＢｋそれぞれ独立にγ補正処理、中間調処理などが行われ、プロッタ９０の明暗特性の補正処理や階調数変換処理を行う。ここでの階調数変換処理では、誤差拡散やディザ処理を用いて８ｂｉｔから２ｂｉｔへと画像データの変換を行う。プロッタ９０はレーザービーム書き込みプロセスを用いた転写紙印字ユニットで、２ｂｉｔの画像データを感光体に潜像として描画し、トナーによる作像／転写処理後、転写紙にコピー画像を形成する。
【００２５】
このようなデジタル画像処理装置においては、一般に原稿をスキャナにより読み取り、画像データをデジタルデータに変換するとともに、原稿の画像領域（像域）を、異なる特徴を有する領域に分類（像域分離）する。注目画素がそのいずれの領域に属するものか、判定された結果に従い、画像データに対して種々の画像処理を施す。これにより、出力画像の画像品質が大きく向上させられる。
【００２６】
操作部３０からは、動作に関わるモードの設定やスタートの指示を行う。設定を行い、スタートの指示をすることで、上記説明した所望の動作が開始される。この操作部３０で選択できるモード体系は、画質モード、濃度ノッチ、階調数、配信ファイルフォーマット等いくつか存在する。基本的には、画質やファイルフォーマットなど、ユーザが視認できる出力品質、出力形態を切り替えるために使われる。
【００２７】
本画像処理装置は、ジョブが実行されたときに、そのジョブの情報を利用履歴として蓄積する。蓄積されるジョブの情報には、そのジョブの機能、原稿枚数、前述した動作に関わるモード（画質モード、濃度ノッチ等）、が含まれているものとする。また、ジョブの機能を実行している最中に、何枚目の原稿を処理しているといった進行状況を管理する情報も、同時に管理されているものとする。
【００２８】
ここで、ジョブとは装置が管理する実行の単位であり、例えばユーザが複数の原稿を図示しないＡＤＦにおき、モードを設定して実行したとすると、それが１つのジョブとして装置に管理されることとなる。
【００２９】
また、本画像処理装置は、アクセラレータあるいはＣＰＵで、ある機能を処理する場合、処理した結果のプロファイルを蓄積する。ここでプロファイルとは、機能を構成する小機能が、どのコアでどれだけ時間がかかったか等の、どのようにコアを利用して処理がされたかを示す情報を意味している。
【００３０】
実施形態では、コントローラ１０及びアクセラレータ２０それぞれが、利用履歴、プロファイル情報を管理しているとする。アクセラレータ２０は、利用履歴及びプロファイル情報を入力として、機能の最適なコア使用配分を決める。そして、決まったコア使用配分に基づいて、その機能の小機能のコア使用配分を決める。また、コントローラ１０は、利用履歴及びプロファイル情報を入力として、最適なコンフィグレーション設定を決める。アクセラレータ２０は、決まったコンフィグーション設定に基づいてコアのコンフィグレーションを行う。以下、実施形態について詳しく説明する。
【００３１】
図３は、アクセラレータ２０について説明する図である。アクセラレータ２０は、メニーコアなデバイスである。本実施形態では、６個のコア（プロセッサコア）１〜６を持つとする。各コアの動作はマルチタスクに対応したＯＳで管理され、ＯＳによってタスクがコアに割り振られ、各コア上でタスク動作する。
【００３２】
一つのコアで複数のタスクを動作させる場合、マルチタスクＯＳでは、ラウンドロビンなどの方法で各タスクに１つのコアの専用を割り当てる。つまり、時分割で複数のタスクが動作することとなる。
【００３３】
メニーコアのデバイスを使用した場合においては、タスクをコアに割り振ることができる。しかし、タスク数がコア数を上回る場合は、各コアで、複数のタスクを動作させる必要があるので、シングルコア時と同様に時分割で処理させることとなる。
【００３４】
コアで動作させるタスクを切り替える場合、処理コストがかかる。複数のタスクが生成されない場合においても、一定の間隔でそれをチェックするための割り込みが入るため、処理コストはいずれにせよかかる。
【００３５】
そのため、コンフィグレーションによって、各コアに対してタスク専用モード、またはタスク共用モードを選択可能な環境になっている。図３では、コア１〜３がタスク専用モードを示し、コア４〜６がタスク共用モードを示している。
【００３６】
先に述べたように、タスク専用モードとは、他のタスクと時分割で動作させずに、タスクに専用させるモードである。前記割り込みの発生を抑えることで、処理コストが削減され、タスク共用モードに比べて高速な動作が可能となる。タスク共用モードとは、他のタスクと時分割で動作させることが可能な設定である。一つのタスクのみが動作しないとした場合であっても、前記割り込みが入るため、専用モードに比べると低速である。
【００３７】
タスクは、機能を実現するソフト上の単位である。ある機能のタスクを動作させるための、コアの使用配分（＝専用コア数、共用コア数）は、任意に設計者が決めることができる。２つの機能（機能１、機能２）が存在する装置に３コアのデバイスを搭載した場合、機能１に専用コア、共用コアを１コアずつ割り当て、機能２に専用コアを割り当てるといったことが一つの例である。もし２つの機能を同時に処理する必要がないと分かっている場合は、両機能に３コアを割り当て、機能の要求が発生するたびに、コアの使用方法を変えることも可能である。
【００３８】
機能は複数の小機能から構成されている。ある機能１を構成する小機能１、小機能２が並列動作可能である場合には、小機能１、小機能２にそれぞれコアを割り当てることで、１つのコアで逐次的に処理するよりも高速に動作することが可能となる。
【００３９】
小機能１、小機能２の処理時間の割合が、動作に関わるモードによって、いちじるしく変わる場合には、モードによってコアの使用配分を変えることも可能である。例えば、画質モードが文字のとき、小機能１の割合が大きく、それ以外の画質モードのときには、小機能２の割合が大きい場合には、文字モードの時には小機能１を専用コアに割り当て、小機能２を共用コアに割り当てるとよい。逆に、文字モード以外の時には小機能１を専用コア、小機能２を共用コアに割り当てると良い。
【００４０】
なお、小機能とはソフトの言葉で表すと、関数、メソッド、コンポーネントなどに該当する。これらをスレッド化もしくは別プロセスすることでタスクを生成して動作させる。これらの言葉は、プログラム言語や粒度によって使い分けられるが、本実施形態ではこれらの違いは意識不要なので、小機能という言葉で説明していく。
【００４１】
各コアを専用コアとして動作させるか、共用コアとして動作させるかはコンフィグレーションを変えない限りは変えられないが、機能実現のための、コアの使用配分は容易に変えることが可能である。
【００４２】
したがって、同時に複数の機能を動かす場合には、バランスを考慮して、専用コア、共用コアの配分を考える必要がある。装置として、ベストパフォーマンスが期待できるように、あらかじめ専用コア数、共用コア数を決めておき、電源起動時に決められた設定にしたがって、コンフィグレーションを行うことで、意図した動作をさせることになる。
【００４３】
図４乃至図７に、アクセラレータ２０及びコントローラ１０のＣＰＵ１５での実施例１の処理フローを示す。
【００４４】
図４は、アクセラレータ２０で機能（タスク）を実施している時の処理フローについて説明する図である。
【００４５】
Ｓ００１：処理実行
ここでは、現在のコア割り振りに基づいて、受け付けた機能の処理を実施する。実行の際には、実行時のプロファイル情報を蓄積しながら実行する。プロファイルとは、機能を構成する小機能の処理時間の割合やキャッシュミスの割合や回数、どのコアで動いたか等の、どのように実行がなされたかの情報を意味する。プロファイル情報によって、利用状況を確認することができる。プロファイル情報としては、様々なものが考えられるが、実施例では、後述するように、小機能の処理時間の割合を蓄積するとする。
【００４６】
Ｓ００２：使用頻度更新
利用頻度測定手段として、利用頻度を算出するためのステップである。あらかじめ決めておいた所定の期間において、どの機能がどれだけ使用されたかを集計するための、集計用のカウンタをカウントアップする。後述の基準１として、この実施例では原稿の枚数を用いる。すなわち、所定の枚数に達するまで、原稿を一枚処理するたびに、その機能の使用頻度をカウントするカウンタを一つインクリメントする。
【００４７】
図８に、集計した後の例を示す。これは、過去１０回分の利用履歴を蓄積するものとしたときに、機能ごとに利用枚数を記憶することを示している。
【００４８】
Ｓ００３：プロファイル更新
コア利用状況測定手段として、コアの利用状況を確認するためのステップである。ここでは、所定の期間の処理結果のプロファイル情報に、Ｓ００１で処理した際のプロファイルを反映させる。利用状況とは、各コアがどの機能でどのように使用されているかを意味する。
【００４９】
プロファイル情報は、例えば、ＦＩＦＯで管理する。プロファイル更新とは、一番古いプロファイルを削除し、一番新しいＳ００１のプロファイル結果を新たに管理対象とすることを意味する。
【００５０】
図９に、ＦＩＦＯで管理するプロファイル情報の例を示す。機能Ａは、Ａ１〜Ａ４の小機能から構成されているものとし、機能ＢはＢ１〜Ｂ３の小機能から構成されているものとしている。また、図８の利用履歴に合わせ、過去１０回までのプロファイル情報を蓄積するものとし、プロファイル情報としては、小機能の処理時間の割合を蓄積するとしている。なお、後述の基準２として、小機能の処理時間の割合を利用するものとする。
【００５１】
Ｓ００４：コアの利用状況判定
コアが、想定した利用をされているかを確認するステップである。本実施例では、Ｓ００３で更新したプロファイル情報としての各小機能の処理時間の割合を、現在のコンフィグレーション設定・コア使用配分で想定している小機能の割合と比較する。現在のコンフィグレーション設定・コア使用配分は、ベストパフォーマンスが出るように設定されたものであるので、想定している小機能の割合は存在するはずのものである。この情報は別途蓄積されているものとする。
【００５２】
具体的には、「比較結果＝Ｓ００３で更新したプロファイル情報としての各小機能の処理時間の割合−現在のコンフィグレーション設定・コア使用配分で想定している小機能の割合」を、閾値２と比較して、その結果によって次のように分岐する。
【００５３】
（ＡＢＳ（比較結果）＞閾値２）の場合
想定していたよりも使用されている、もしくは想定していたよりも使用されていないため、コンフィグレーションの切り替え又はコアの使用配分を切り替えたほうがよいとして、この結果を記憶し、Ｓ００５に移行する。
【００５４】
（ＡＢＳ（比較結果）＜＝閾値２）の場合
想定どおりの使用のされ方であるため、現状のコンフィグレーション、コアの使用配分でよいとし、この結果を記憶し、Ｓ００５に移行する。
【００５５】
図１０を用いて具体的に説明する。現在のコンフィグレーション設定が、表中のＡ行に記載されている割合を想定していたものだとする。そして、Ｓ００３で更新したプロファイル結果の全平均が、表中のＣ行に示したプロファイル結果であったとする。この場合、Ａ１に関しては、比較結果＝１５％、Ａ２に関しては、−５％、Ａ３に関しては、−５％、Ａ４に関しては−５％というように、小機能ごとに比較結果が求まる。したがって、例えば、閾値２が２０％のときは、いずれの小機能の比較結果も、２０％より小さいため、想定とおりの使用のされ方とする。また、閾値２が１０％のときは、Ａ１に関して、１０％より大きいため、想定していたより偏りがあることが分かる。なお、閾値２との比較結果は、後のステップで使用するため記憶しておく。
【００５６】
この閾値２は、あらかじめ方針に準じて設定しておけばよい。また、小機能によって数値を変えてもかまわないし、想定している割合の大きさによって、数値を変動させてもかまわない。
【００５７】
Ｓ００５：頻度判定
機能の頻度判定を行うステップである。目的は２つある。想定しているコンフィグレーション設定・コア使用配分で想定している小機能の割合と、差が大きい場合の理由を判断するためというのが１つ目、２つ目は、さらに最適な設定がないかを判断するためである。
【００５８】
１つめの目的に関して、詳細に説明する。Ｓ００４の結果で想定したコアの利用状況と異なることが分かった場合、例えばＡ１の小機能が想定よりも時間がかかっていると分かった場合には、Ａ１の小機能を実現するコア数を増やす、またはＡ１が共有コアで動作している場合は、専用コアで動作させるようにした方がよいことは分かるが、Ａ１以外の小機能も踏まえた上で、コアの使い方を再考する必要がある。
【００５９】
再考のための一つの情報として、機能の利用頻度を用いる。Ｓ００２で更新した利用頻度と、閾値１を比較する。この閾値１は、機能ごとに別の値を持っているものとし、あらかじめ想定していた機能ごとの頻度に応じて設定されているものとする。すなわち、コンフィグレーション設定、コアの使用配分変更の際に更新される値であることを意味する。
【００６０】
閾値１よりも大きければ、ＦＬＡＧ＝１、小さければＦＬＡＧ＝０を設定し、ＦＬＡＧの値を後のステップで使用するために記憶する。ＦＬＡＧ＝１の場合には、差が大きい理由が、機能の利用頻度が想定していたものと違うためである可能性が高いことを意味する。
【００６１】
２つ目の目的については、次のステップにて詳細に記載する。
【００６２】
Ｓ００６：切替か
Ｓ００４，Ｓ００５の判定結果を利用して、コンフィグレーション設定またはコア使用配分を変えたほうがよいかを判断するステップである。
【００６３】
図１１に、Ｓ００４、Ｓ００５の結果に応じでどのように判断するかを示す。Ｓ００４の結果で、想定する利用状況と大きな違いがないのに、Ｓ００５の結果からは、機能の利用頻度が想定よりも多い場合が、先の２つ目の目的に対応するケースである。図１１にて、最適化をした方が良いケースか否かをこのステップで判断し、現状維持の方が好ましい場合は、処理を終了させる。
【００６４】
Ｓ００７：コアの使用モード切替か
コンフィグレーションを切り替えるかを判断するステップである。前ステップで、コンフィグレーション設定またはコア使用配分の切替はした方がよいという判断がなされている。
【００６５】
本発明は、最適なコンフィグレーション設定に、段階的に切り替えることを特徴としている。コンフィグレーションの切り替えは、処理コストを必要とするため、予測失敗のリスクが大きいともいえる。そのため、過去の利用履歴、プロファイルから、最適な設定に変えたほうがいいという傾向が出た場合にすぐにコンフィグレーション切り替えをせずに、コア使用配分を変える対応をする。
【００６６】
そのため、このステップでは、最初に図１０の最適化をした方が良いケースにあてはまった場合は、コア使用配分を変更するため、Ｓ００８に移行する。コア使用配分をすでに変更していた場合は、コンフィグレーションを切り替えるために、Ｓ００９に移行する。
【００６７】
どちらのステップに進むかを、状態変数で管理するものとし、Ｓ００８、Ｓ００９のどちらに進むかは状態によって識別すればよい。Ｓ００８に移動した場合は各種閾値と比較するためのカウンタをクリアする。
【００６８】
Ｓ００８：使用コア配分変更
機能の小機能の使用コア配分を決定するステップである。この変更にはコストはかからない。具体的には、プロファイル結果から各コアの処理負荷が均等になるように設定する。
【００６９】
使用コア配分は、プロファイル情報から決める。図１２を用いて説明する。
【００７０】
図１２では、機能Ａと機能Ｂのみが存在するものとしている。機能Ａ、機能Ｂの発生頻度をかんがみてデフォルトのコンフィグレーション設定、コアの使用配分が決まっている。この各設定例を図１１（ａ）に示す。機能Ａ、機能Ｂが同時に実施する必要がないというのであれば、すべて専用コアとしてもかまわないのであるが、同時に実行が必要とし、機能Ａの小機能Ａ１に２つ、機能Ｂの小機能Ｂ１に１つずつ専用コアを割り当てている。機能Ａ、機能Ｂのそれ以外の小機能については共用コアを共用するものとしている。
【００７１】
先のＳ００５で、機能ＡのＡ１に想定以上の負荷がかかっていることが分かり、使用コア配分またはコンフィグレーションを切り替えた方が良いとわかっているものとする。また、Ｓ００６で、使用コア配分を切り替えると決まっているものとする。この場合に、現在の使用頻度に最適になるようにコアを割り振る。Ａ１を、コアにどのように割り振るかは、機能Ｂも含めたプロファイル情報で決める。各コアの利用状況、小機能の利用状況を鑑みて決めればよい。その結果、図１２（ｂ）に示すように、Ａ３の小機能とＡ１の小機能、Ｂ１の小機能が一つのコアを共有して動作することとなる。
【００７２】
図１２（ｃ）については後述するが、コンフィグレーションを（ｃ）に切り替えた方が、スループットはあがると考えられる場合にも、（ｂ）という段階を経ることとなる。使用コア配分には処理コストはかからないため、コンフィグレーションを切り替えるほどパフォーマンスはあがらないが、変更前よりは向上できる。
【００７３】
Ｓ００９：コンフィグレーション切り替え通知
最適なコンフィグレーション切り替えの判断をコントローラ１０に仰ぐステップである。Ｓ００７でコンフィグレーション切り替えが要となった場合、コントローラ１０にコンフィグレーションの切り替えを通知する。この時、プロファイル情報、頻度情報もコントローラ側で参照できるように一緒に通知する。
【００７４】
その後、コントローラ１０からコンフィグレーション設定指示を受け取ってコンフィグレーション切り替えを行い、コアの使用モードを切り替える。これについては後述する。
【００７５】
図５は、コントローラ１０のＣＰＵ１５で機能（タスク）を実施している時の処理フローについて説明する図である。
【００７６】
図５において、Ｓ００１からＳ００６は、図４と同様である。すなわち、コントローラ１０上のＣＰＵ１５でも、ＣＰＵ１５での機能の利用状況や頻度を確認するため、図４と同様の処理フローが進行する。ただし、ＣＰＵ１５はシングルコアを想定しているため、ＣＰＵ自体のコンフィグレーション切り替えという概念がない。そのため、Ｓ００６の後のフローが図４と異なる。
【００７７】
Ｓ０１０：コンフィグレーション設定指示
ここでは、ＣＰＵ１５で想定以上に動作している機能をアクセラレータ側でどうさせるためのコンフィグレーションを決定して、アクセラレータ２０にコンフィグレーション切り替えを指示する。この場合、アクセラレータ２０に対して、該アクセラレータ２０で管理しているアクセラレータ上のプロファイル、使用頻度を問い合わせてから（不図）、最適なコンフィグレーションを決定する。
【００７８】
図６は、アクセラレータ２０からコンフィグレーション切り替え通知が来たときにコントローラ１０で動作する処理フローについて説明する図である。
【００７９】
機能入れ替え判断（Ｓ０２１）では、アクセラレータ２０から通知されたプロファイル情報、頻度情報に加えて、ＣＰＵ１５上のプロファイル、使用頻度をふまえて最適なコンフィグレーション設定を判断する。コンフィグレーション設定指示（Ｓ０２２）では、この判断結果に基づいて、アクセラレータ２０にコンフィグレーション設定を指示する。
【００８０】
図７は、コントローラ１０からコンフィグレーション設定指示が来たときにアクセラレータ２０で動作する処理フローについて説明する図である。アクセラレータ２０は、コントローラ１０からの指示に基づいてコンフィグレーション切り替えを実施する（Ｓ０３１）。
【００８１】
図１２を用いて説明する。なお、説明の簡単化のためＣＰＵ１５上のプロファイル、使用頻度は考えないことにする。
【００８２】
先のＳ００５で、機能ＡのＡ１に想定以上の負荷がかかっていることが分かり、使用コア配分またはコンフィグレーションを切り替えた方が良いとわかっているものとする。また、先のＳ００６では、コンフィグレーションを切り替えると決まっているものとする。この場合、図１２の（ｃ）が現状に最適なコンフィグレーション設定を示すことになる。
【００８３】
図１３に、機能Ａ、機能Ｂの具体例を示す。（ａ）は機能Ａの具体例で、これはテキスト付きＰＤＦのＯＣＲ機能の処理を示したものである。また、（ｂ）は機能Ｂの具体例で、これは画像のＪＰＥＧ化の処理を示したものである。
【００８４】
次に、図１４にアクセラレータ２０で機能を実施している時の実施例２の処理フローを示す。これは、先の図４の処理フローにステップＳ００１_１，Ｓ００１_２を追加したもので、これ以外は図４の同じである。したがって、Ｓ００１_１，Ｓ００１_２のみ説明する。
【００８５】
Ｓ００１_１：ページ数確認
現在のジョブがマルチページかどうか、そして未処理のページ数を確認する。マルチページの場合は、すべてのページが同じ設定であることと、似たような特徴の原稿から構成されている可能性が高いことから、現在の利用状況と同じ傾向が続くと考えられる。
【００８６】
そのため、閾値１，２を小さくすることで、コンフィグレーション設定、コア使用配分を変えやすくする。具体的には、マルチページであり、残りの未処理ページ数が所定閾値５以上であった場合には、閾値１，２を小さくする操作を行う。所定閾値５はあらかじめ決めておくものとする。
【００８７】
Ｓ００１_２：実行待ちジョブ確認
現在実行中のジョブ以外に、実行待ちのジョブがあるかを確認する。その実行待ちのジョブのモードを確認して、現在実行中の処理と同じモード設定かを確認し、その頻度によって閾値１，２を変える。待機待ちのジョブが現在のモード設定と同じものが多い場合は、そのモードに最適なコンフィグレーションにするとパフォーマンスが期待できる。ここで頻度は、現在の同じモードが５０％以上あればなどと、所定の閾値と比較することで判断すればよい。
【００８８】
以上、本発明の実施形態について説明したが、本発明は、説明した実施形態に限られるものではない。実施形態では、毎回プロファイルを蓄積し、分析を行ったが、プロファイルの蓄積や分析の時間を短縮するために、頻度を落としても構わない。また、実施形態では、コンフィグレーション設定はコントローラ側が決定するとしたが、アクセラレータ側が独自に決定してコンフィグレーション切り替えを実施することも可能である。
【符号の説明】
【００８９】
１０  コントローラ
１５  ＣＰＵ
２０  アクセラレータ
３０  操作部
４０  スキャナ
５０  スキャナ補正部
６０  圧縮処理部
７０  伸長処理部
８０  プリンタ補正部
９０  プロッタ
【先行技術文献】
【特許文献】
【００９０】
【特許文献１】特開２００８−１８５６０号公報
【図１】
2012194947.tif 000003
【図２】
2012194947.tif 000004
【図３】
2012194947.tif 000005
【図４】
2012194947.tif 000006
【図５】
2012194947.tif 000007
【図６】
2012194947.tif 000008
【図７】
2012194947.tif 000009
【図８】
2012194947.tif 000010
【図９】
2012194947.tif 000011
【図１０】
2012194947.tif 000012
【図１１】
2012194947.tif 000013
【図１２】
2012194947.tif 000014
【図１３】
2012194947.tif 000015
【図１４】
2012194947.tif 000016
【手続補正書】
【提出日】平成23年3月23日(2011.3.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５８
【補正方法】変更
【補正の内容】
【００５８】
１つめの目的に関して、詳細に説明する。Ｓ００４の結果で想定したコアの利用状況と異なることが分かった場合、例えばＡ１の小機能が想定よりも時間がかかっていると分かった場合には、Ａ１の小機能を実現するコア数を増やす、またはＡ１が共用コアで動作している場合は、専用コアで動作させるようにした方がよいことは分かるが、Ａ１以外の小機能も踏まえた上で、コアの使い方を再考する必要がある。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７１
【補正方法】変更
【補正の内容】
【００７１】
先のＳ００５で、機能ＡのＡ１に想定以上の負荷がかかっていることが分かり、使用コア配分またはコンフィグレーションを切り替えた方が良いとわかっているものとする。また、Ｓ００６で、使用コア配分を切り替えると決まっているものとする。この場合に、現在の使用頻度に最適になるようにコアを割り振る。Ａ１を、コアにどのように割り振るかは、機能Ｂも含めたプロファイル情報で決める。各コアの利用状況、小機能の利用状況を鑑みて決めればよい。その結果、図１２（ｂ）に示すように、Ａ３の小機能とＡ１の小機能、Ｂ１の小機能が一つのコアを共用して動作することとなる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
Ｓ０１０：コンフィグレーション設定指示
ここでは、ＣＰＵ１５で想定以上に動作している機能をアクセラレータ側で動作させるためのコンフィグレーションを決定して、アクセラレータ２０にコンフィグレーション切り替えを指示する。この場合、アクセラレータ２０に対して、該アクセラレータ２０で管理しているアクセラレータ上のプロファイル、使用頻度を問い合わせてから（不図）、最適なコンフィグレーションを決定する。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のコアを内部に持つデバイスであって、それぞれのコアを、１機能で専用させる専用モードで動作させるか、複数の機能で共用させる共用モードで動作させるかを、コンフィグレーションにより設定可能なデバイスを備えた画像処理装置において、
機能の利用頻度を測定する利用頻度測定手段と、
コアの利用状況を測定するコア利用状況測定手段と、
前記利用頻度測定手段の測定結果を閾値１と比較した結果と、コア利用状況測定手段の測定結果を閾値２と比較した結果とにより、各コアの現在の設定モードでの、最適な機能のコアの割り振りを決めるコア割り当て決定手段１と、
前記利用頻度測定手段の測定結果を閾値１と比較した結果と、コア利用状況測定手段の測定結果を閾値２と比較した結果とにより、各コアの設定モードを変えることを前提にして、最適な各コアの設定モード及び機能のコアの割り振りを決めるコア割り当て決定手段２と、
を有し、
前記コア割り当て決定手段１で決定したコア割り振り、前記コア割り当て決定手段２で決定したコアの設定モード及びコア割り振りに、段階的に切り替えることを特徴とする画像処理装置。
【請求項２】
前記利用頻度測定手段は、機能の利用履歴を利用して、機能の利用頻度を基準１により測定し、
前記コア利用状況測定手段は、機能のプロファイル結果を利用して、コアの利用状況を基準２により測定する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記コア割り当て決定手段１で利用する前記利用頻度測定手段と前記コア利用状況測定手段の前記基準１、２のいずれか一方もしくは両方は、
前記コア割り当て決定手段２で利用する前記利用頻度測定手段と前記コア利用状況測定手段の前記基準１、２のいずれか一方もしくは両方と異なることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
受付済みで未実施のジョブのモードと、実施済みのジョブのモードとの一致度を算出する一致度算出手段をさらに備え、
前記一致度算出手段の結果により、前記閾値２を変えることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
処理中の画像がマルチページの１ページであるかを判断するマルチページ判断手段と、マルチページのうちの未処理のページ数を求める残りページ算出手段とをさらに備え、
前記マルチページ判断手段と前記残りページ算出手段とにより、前記閾値２を変えることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項６】
前記基準１はページ数であり、前記基準２は機能を構成する小機能の処理時間であることを特徴とする請求項２乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
複数のコアを内部に持つデバイスであって、それぞれのコアを、１機能で専用させる専用モードで動作させるか、複数の機能で共用させる共用モードで動作させるかを、コンフィグレーションにより設定可能なデバイスを備えた画像処理装置の画像処理方法において、
機能の利用頻度を測定する利用頻度測定工程と、
コアの利用状況を測定するコア利用状況測定工程と、
前記利用頻度測定工程の測定結果を閾値１と比較した結果と、コア利用状況測定工程の測定結果を閾値２と比較した結果とにより、各コアの現在の設定モードでの、最適な機能のコアの割り振りを決めるコア割り当て決定工程１と、
前記利用頻度測定工程の測定結果を閾値１と比較した結果と、コア利用状況測定工程の測定結果を閾値２と比較した結果とにより、各コアの設定モードを変えることを前提にして、最適な各コアの設定モード及び機能のコアの割り振りを決めるコア割り当て決定工程２と、
を有し、
前記コア割り当て決定工程１で決定したコア割り振り、前記コア割り当て決定工程２で決定したコアの設定モード及びコア割り振りに、段階的に切り替えることを特徴とする画像処理方法。
【請求項８】
前記利用頻度測定工程は、機能の利用履歴を利用して、機能の利用頻度を基準１により測定し、
前記コア利用状況測定工程は、機能はプロファイル結果を利用して、コアの利用状況を基準２により測定する、
ことを特徴とする請求項７に記載の画像処理方法。
【請求項９】
前記コア割り当て決定工程１で利用する利用頻度測定工程と前記コア利用状況測定工程の前記基準１、２のいずれか一方もしくは両方は、
前記コア割り当て決定工程２で利用する前記利用頻度測定工程と前記コア利用状況測定工程の前記基準１、２のいずれか一方もしくは両方と異なることを特徴とする請求項８に記載の画像処理方法。
【請求項１０】
受付済みで未実施のジョブのモードと、実施済みのジョブのモードとの一致度を算出する一致度算出工程をさらに備え、
前記一致度算出工程の結果により、前記閾値２を変えることを特徴とする請求項７乃至９のいずれか１項に記載の画像処理方法。
【請求項１１】
処理中の画像がマルチページの１ページであるかを判断するマルチページ判断工程と、マルチページのうちの未処理のページ数を求める残りページ算出工程とをさらに備え、
前記マルチページ判断工程と前記残りページ算出工程とにより、前記閾値２を変えることを特徴とする請求項７乃至９のいずれか１項に記載の画像処理方法。
【請求項１２】
前記基準１はページ数であり、前記基準２は機能を構成する小機能の処理時間であることを特徴とする請求項８乃至１１のいずれか１項に記載の画像処理方法。