(57)【要約】【課題】ヘテロジニアス構成のＣＰＵを画像処理装置において従来よりも効率的に使用する。【解決手段】スペックの異なる複数のコア１ＣＲを有するＣＰＵ１０ａを備えた画像処理装置１において、コア１ＣＲそれぞれの処理能力を推定し、特定の処理を複数のコア１ＣＲそれぞれが実行するのに掛かる所要時間を、複数のコアそれぞれの処理能力に基づいて推定し、複数のコア１ＣＲのうち所要時間が閾値以下でありかつ閾値に最も近いコア１ＣＲに特定の処理を実行させる。【選択図】図２
2016091137.tif 000002
【特許請求の範囲】
【請求項１】
スペックの異なる複数のコアを有するプロセッサと、
前記複数のコアそれぞれの処理能力を推定する第一の推定手段と、
特定の処理を前記複数のコアそれぞれが実行するのに掛かる所要時間を、前記複数のコアそれぞれの前記処理能力に基づいて推定する第二の推定手段と、
前記複数のコアのうち前記所要時間が閾値以下でありかつ前記閾値に最も近いコアに前記特定の処理を実行させる制御手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記特定の処理を実行するのに掛かる負荷を推定する第三の推定手段、を有し、
前記第二の推定手段は、前記所要時間をさらに前記負荷に基づいて推定する、
請求項１に記載の画像処理装置。
【請求項３】
前記第二の推定手段は、前記複数のコアそれぞれの前記処理能力を前記複数のコアそれぞれの前記スペックに基づいて推定する、
請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記第二の推定手段は、前記複数のコアそれぞれの前記処理能力を、当該画像処理装置の起動の際に前記複数のコアそれぞれから収集した情報に基づいて推定する、
請求項１または請求項２に記載の画像処理装置。
【請求項５】
前記複数のコアのうちの１つ以上のコアがグループになって並列処理によって前記特定の処理を行うことが可能であり、
前記第一の推定手段は、前記処理能力として、前記グループごとの処理能力を推定し、
前記第二の推定手段は、前記所要時間として、前記グループそれぞれが前記特定の処理を実行するのに掛かる所要時間を推定し、
前記制御手段は、前記特定の処理を、前記所要時間が前記閾値以下でありかつ前記閾値に最も近いグループに実行させる、
請求項１ないし請求項４のいずれかに記載の画像処理装置。
【請求項６】
前記特定の処理は、ＰＤＬ（Page Description Language）で記述されたデータを中間言語のデータへ変換する処理、中間言語のデータに対するラスタライズの処理、またはスキャナによって読み取られたデータをビットマップデータへ変換する処理であり、
前記閾値は、前記特定の処理を含む工程によって得られるデータに基づいてプリンタが一定の速度で印刷を行うことができる時間に設定されている、
請求項１ないし請求項５のいずれかに記載の画像処理装置。
【請求項７】
前記特定の処理は、スキャナによって読み取られたデータをアプリケーション用のアプリケーションデータへ変換する処理であり、
前記閾値は、前記アプリケーションデータを一定の速度で記録媒体に保存することができる時間に設定されている、
請求項１ないし請求項５のいずれかに記載の画像処理装置。
【請求項８】
スペックの異なる複数のコアを有するプロセッサを有する画像処理装置において特定の処理を実行する特定処理実行方法であって
前記複数のコアそれぞれの処理能力を推定する第一のステップと、
前記特定の処理を前記複数のコアそれぞれが実行するのに掛かる所要時間を、前記複数のコアそれぞれの前記処理能力に基づいて推定する第二のステップと、
前記複数のコアのうち前記所要時間が閾値以下でありかつ前記閾値に最も近いコアに前記特定の処理を実行させる第三のステップと、
を有することを特徴とする特定処理実行方法。
【請求項９】
画像処理装置に設けられるスペックの異なる複数のコアを有するプロセッサに用いられるコンピュータプログラムであって、
前記プロセッサに、
前記複数のコアそれぞれの処理能力を推定する第一の処理を実行させ、
前記特定の処理を前記複数のコアそれぞれが実行するのに掛かる所要時間を、前記複数のコアそれぞれの前記処理能力に基づいて推定する第二の処理を実行させ、
前記特定の処理を実行すべきコアとして、前記複数のコアのうち前記所要時間が閾値以下でありかつ前記閾値に最も近いコアを選択する第三の処理を実行させる、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアＣＰＵにおけるコアの使用の技術に関する。
【背景技術】
【０００２】
近年、複数のコアからなるＣＰＵ（Central Processing Unit）であるマルチコアＣＰＵが普及している。
【０００３】
マルチコアＣＰＵによると、コアごとに異なるプログラムを実行させたり、１つのプログラムに基づく処理を複数のコアに分散して行ったりすることができる。
【０００４】
マルチコアＣＰＵを採用した画像形成装置として、次のような画像形成装置が提案されている。この画像形成装置は、ページの領域毎に描画処理手段が描画処理する画像形成装置である。印刷データを格納する印刷データ格納手段と、印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、描画命令生成手段と並行して印刷データを解析し、描画処理手段が受け持つ領域を決定するための最適化情報を作成する最適化情報作成手段と、描画命令データと最適化情報を記憶する中間データ記憶手段と、最適化情報に基づき受け持つ領域を決定し、領域毎に描画命令データを描画処理する描画処理手段と、を有する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−７１５４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
また、近年、演算の能力の異なる複数のコアを有するヘテロジニアス構成のＣＰＵが普及し始めている。今後、ヘテロジニアス構成のＣＰＵを搭載した製品が増加すると予想される。
【０００７】
ＭＦＰ（Multi Function Peripherals）のような装置は、複数の処理を並行して行うことが多い。したがって、マルチコアＣＰＵを搭載するメリットが大きい。
【０００８】
上述の従来技術のように、ホモジニアス構成のＣＰＵを効率的に使用する技術は提案されているが、このような技術によってヘテロジニアス構成のＣＰＵの使用の効率化を図ることができるとは、限らない。
【０００９】
本発明は、このような問題点に鑑み、ヘテロジニアス構成のＣＰＵを画像処理装置において従来よりも効率的に使用することを、目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る画像処理装置は、スペックの異なる複数のコアを有するプロセッサと、前記複数のコアそれぞれの処理能力を推定する第一の推定手段と、特定の処理を前記複数のコアそれぞれが実行するのに掛かる所要時間を、前記複数のコアそれぞれの前記処理能力に基づいて推定する第二の推定手段と、前記複数のコアのうち前記所要時間が閾値以下でありかつ前記閾値に最も近いコアに前記特定の処理を実行させる制御手段と、を有する。
【００１１】
好ましくは、前記特定の処理を実行するのに掛かる負荷を推定する第三の推定手段、を有し、前記第二の推定手段は、前記所要時間をさらに前記負荷に基づいて推定する。
【００１２】
または、前記第二の推定手段は、前記複数のコアそれぞれの前記処理能力を前記複数のコアそれぞれの前記スペックに基づいて推定する。または、前記複数のコアそれぞれの前記処理能力を、当該画像処理装置の起動の際に前記複数のコアそれぞれから収集した情報に基づいて推定する。
【発明の効果】
【００１３】
本発明によると、ヘテロジニアス構成のＣＰＵを画像処理装置において従来よりも効率的に使用することができる。
【図面の簡単な説明】
【００１４】
【図１】画像処理システムの全体的な構成の例を示す図である。
【図２】画像処理装置のハードウェア構成の例およびインストールされているプログラムの例を示す図である。
【図３】画像処理装置の機能的構成の例を示す図である。
【図４】コア選択処理の流れの例を説明するフローチャートである。
【図５】画像処理装置の全体的な処理の流れの例を説明するフローチャートである。
【図６】ＰＣプリント処理の流れの例を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
図１は、画像処理システム３の全体的な構成の例を示す図である。図２は、画像処理装置１のハードウェア構成の例およびインストールされているプログラムの例を示す図である。図３は、画像処理装置１の機能的構成の例を示す図である。図４は、コア選択処理の流れの例を説明するフローチャートである。
【００１６】
画像処理システム３は、画像に関する種々の処理を実行するシステムであって、図１に示すように、画像処理装置１、端末装置２１、および通信回線２８などによって構成される。
【００１７】
画像処理装置１と端末装置２１とは、通信回線２８を介して通信を行うことができる。通信回線２８として、公衆回線、いわゆるＬＡＮ（Local Area Network）回線、インターネット、または専用線などが用いられる。
【００１８】
画像処理装置１は、コピー、ＰＣプリント、ファックス、およびスキャナなどの機能を集約した装置である。一般に、「画像形成装置」、「複合機」、または「ＭＦＰ（Multi Function Peripheral）」などと呼ばれることがある。
【００１９】
ＰＣプリントは、端末装置２１から送信されてきた印刷データに基づいて画像を用紙に印刷する機能である。印刷データは、一般に、ＰＤＬ（Page Description Language）によって記述される。
【００２０】
画像処理装置１は、図２（Ａ）に示すように、メインコントローラ１０、画像処理部１０ｅ、タッチパネルディスプレイ１０ｆ、操作キーパネル１０ｇ、ＮＩＣ（Network Interface Card）１０ｈ、モデム１０ｉ、スキャンユニット１０ｊ、プリントユニット１０ｋ、およびＵＳＢ（Universal Serial Bus）通信装置１０ｍなどによって構成される。
【００２１】
画像処理部１０ｅは、入力された画像または出力する画像に対して種々の画像処理を施す。
【００２２】
タッチパネルディスプレイ１０ｆは、ユーザに対するメッセージを示す画面、ユーザがコマンドまたは情報を入力するための画面、およびメインコントローラ１０が実行した処理の結果を示す画面などを表示する。また、タッチパネルディスプレイ１０ｆは、タッチされた位置を示す信号をメインコントローラ１０へ送る。
【００２３】
操作キーパネル１０ｇは、いわゆるハードウェアキーボードであって、テンキー、スタートキー、ストップキー、およびファンクションキーなどによって構成される。
【００２４】
ＮＩＣ１０ｈは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）などのプロトコルで端末装置２１との間で画像データなどをやり取りする。
【００２５】
モデム１０ｉは、ファクシミリ端末との間でＧ３などのプロトコルでファックスデータをやり取りする。
【００２６】
スキャンユニット１０ｊは、プラテンガラスの上にセットされた用紙に記されている画像を読み取る。
【００２７】
プリントユニット１０ｋは、スキャンユニット１０ｊによって読み取られた画像を印刷する。また、ＮＩＣ１０ｈまたはモデム１０ｉによって他の装置から取得したデータに基づいて画像を用紙に印刷する。画像は、画像処理部１０ｅによって画像処理が施されることがある。
【００２８】
ＵＳＢ通信装置１０ｍは、ＵＳＢメモリまたは外付ハードディスクドライブなどの周辺機器とＵＳＢケーブルを介して接続され、データのやり取りを行う。
【００２９】
メインコントローラ１０は、ＣＰＵ（Central Processing Unit）１０ａ、メインメモリ１０ｂ、ＲＯＭ（Read Only Memory）１０ｃ、およびＳＳＤ（Solid State Drive）１０ｄなどによって構成される。
【００３０】
ＣＰＵ１０ａは、ヘテロジニアス構成のＣＰＵであって、性能（スペック）の異なる複数のコア（ＣＰＵコア）を有する。本実施形態では、ＣＰＵ１０ａとして、３つのコア１ＣＲを有するＣＰＵが用いられる。以下、それぞれのコア１ＣＲを「第一のコア１ＣＲ１」、「第二のコア１ＣＲ２」、および「第三のコア１ＣＲ３」と区別して記載することがある。
【００３１】
メインメモリ１０ｂは、揮発性のメモリつまりＲＡＭ（Random Access Memory）であって、３つのコア１ＣＲによって共有される。
【００３２】
ＲＯＭ１０ｃまたはＳＳＤ１０ｄには、図２（Ｂ）に示すように、全体制御プログラム１３１、ラスタライズプログラム１３２、画像変換プログラム１３３、ファックスデータ生成プログラム１３４、およびファックスデータ受付プログラム１３５などのプログラムがインストールされている。
【００３３】
全体制御プログラム１３１は、画像処理装置１の全体的な制御を行うためのプログラムである。例えば、ジョブの実行の順番を管理したり、ジョブの各ステップの処理をコア１ＣＲに割り当てたりする。
【００３４】
ラスタライズプログラム１３２は、中間言語のデータをラスタライズするためのプログラムである。
【００３５】
画像変換プログラム１３３は、スキャンユニット１０ｊが読み取った画像のローデータ（Ｒ（Red）、Ｇ（Green）、Ｂ（Blue）のビットマップデータ）を、描画ソフト用のフォーマット（例えば、ＧＩＦ（Graphics Interchange Format））または文書の閲覧用のフォーマット（例えば、ＰＤＦ（Portable Document Format））の画像データに変換するためのプログラムである。
【００３６】
ファックスデータ生成プログラム１３４は、スキャンユニット１０ｊが読み取った画像のローデータ（Ｒ（Red）、Ｇ（Green）、Ｂ（Blue）のビットマップデータ）を、ファックスのプロトコルに準拠したファックスデータに変換するためのプログラムである。
【００３７】
ファックスデータ受付プログラム１３５は、モデム１０ｉが受信したファックスデータをビットマップデータに変換するためのプログラムである。
【００３８】
これらのプログラムは、ＲＡＭ１０ｂにロード（展開）される。そして、いずれかのコア１ＣＲによって実行される。
【００３９】
ただし、全体制御プログラム１３１は、画像処理装置１の電源がオンになったときに起動し、メインメモリ１０ｂに常駐する。以下、第一のコア１ＣＲ１が全体制御プログラム１３１を実行する場合を例に説明する。
【００４０】
全体制御プログラム１３１によると、図３に示す初期化処理部１０１、中間言語データ生成部１０２、処理負荷推定部１０３、演算性能推定部１０４、コア選択処理部１０５、および実行指令部１０６などの機能が実現される。
【００４１】
初期化処理部１０１は、画像処理装置１のハードウェアの初期化およびドライバの起動など、電源がオンになった際の画像処理装置１の初期化（初期設定）の処理を行う。
【００４２】
中間言語データ生成部１０２は、ＰＣプリントのために端末装置２１から送信されてきた印刷データ５１を解析し中間言語に変換することによって、ページごとの中間言語データ５２を生成する。
【００４３】
ところで、画像を印刷するには、中間言語データ５２に対してラスタライズの処理を行うことによってビットマップデータを生成しなければならない。本実施形態では、ラスタライズの処理は、第一のコア１ＣＲ１が行う場合もあれば、他のコア１ＣＲが行う場合もある。
【００４４】
処理負荷推定部１０３、演算性能推定部１０４、およびコア選択処理部１０５は、ラスタライズの処理を実行すべきコア１ＣＲを選択するための処理を次のように実行する。
【００４５】
処理負荷推定部１０３は、この中間言語データ５２に対してラスタライズの処理を行うのに掛かる負荷Ｒをページごとに推定する。
【００４６】
一般に、負荷は、画像に含まれるオブジェクトの個数が多いほど大きく、かつ、オブジェクトのドット数が多いほど大きい。また、オブジェクトの属性によって大きくなることがある。例えば、２つのオブジェクトが重なっており、透過ＧＩＦ（Graphics Interchange Format）のような透過性を上側のオブジェクトが有する場合は、両オブジェクトのブレンディングを行わなければならないので、負荷が大きくなる。
【００４７】
そこで、処理負荷推定部１０３は、次の（１）式に基づいて負荷Ｒを算出（推定）する。なお、以下、透過性を有するオブジェクトおよび有しないオブジェクトをそれぞれ「透過オブジェクト」および「非透過オブジェクト」と区別して記載することがある。
【００４８】
【数１】
2016091137.tif 000003
【００４９】
「Ｒｐ」は、ｐページ目の負荷Ｒである。「Ｎｐ」は、ｐページ目の、透過オブジェクトが１つも重ならない非透過オブジェクトの個数である。「Ｅｋ」は、ｐページ目のｋ番目の、透過オブジェクトが１つも重ならない非透過オブジェクトのドット数である。「Ｍｐ」は、ｐページ目の、重なり合う非透過オブジェクトと透過オブジェクトとの組合せの個数である。「Ｆｉ」は、ｐページ目の、ｉ番目の組合せを構成する非透過オブジェクトのドット数および透過オブジェクトのドット数の合計である。「ａ１」および「２」は、係数であって、ａ１＜ａ２、である。
【００５０】
演算性能推定部１０４は、３つのコア１ＣＲそれぞれの演算の性能（処理能力）を、例えば次の方法によって算出（推定）する。
【００５１】
各コア１ＣＲのスペックの情報（例えば、所定の処理を実行した場合の演算時間）をテーブルデータとして、予め用意しておく。そして、演算性能推定部１０４は、この情報を所定の関数に代入することによって演算の性能を算出する。この情報だけでなくコア１ＣＲの現在の稼働の状況などに基づいて、演算の性能を算出してもよい。例えば、現在、第一のコア１ＣＲ１の稼働率がＬ％である場合は、Ｌ％分の性能が他のプロセスによって使用されているので、テーブルデータに示される性能からＬ％分落とした性能を、第一のコア１ＣＲ１の演算の性能として算出する。
【００５２】
または、画像処理装置１の起動の際または演算の性能を推定する直前に、各コア１ＣＲに所定の処理を行わせ、その演算時間を計ることによって、演算の性能を推定してもよい。または、コア１ＣＲとメインメモリ１０ｂとのバスの帯域幅および単位時間当たりの演算量（つまり、演算スループット）などを計測し、これらを所定の関数に代入することによって推定してもよい。
【００５３】
以下、演算の性能を、ある標準的な画像の中間言語データに対してラスタライズを実行するのに掛かる時間である所要時間Ｕによって表わす場合を例に説明する。
【００５４】
コア選択処理部１０５は、処理負荷推定部１０３および演算性能推定部１０４それぞれの推定（演算）の結果に基づいて、ラスタライズを実行すべきコア１ＣＲをページごとに選択する。ここで、選択の方法を、１ページ目についてコア１ＣＲを選択する場合を例に、図４を参照しながら説明する。
【００５５】
コア選択処理部１０５は、１番目のコア１ＣＲ（本例では、第一のコア１ＣＲ１）に注目する（＃７０１、＃７０２）。第一のコア１ＣＲ１によって１ページ目のラスタライズを行うのに掛かる時間Ｔｊ（ここでは、時間Ｔ１）を推定する（＃７０３）。推定は、例えば次の（２）式に基づいて推定すればよい。
Ｔｊ＝ｂ・Ｒｐ・Ｕｊ  …  （２）
「Ｒｐ」は、上述の通りｐページ目の負荷Ｒであって、処理負荷推定部１０３によって算出されたものである。ここでは、ｐ＝１、である。「Ｕｊ」は、ｊ番目のコア１ＣＲの所要時間Ｕであって、演算性能推定部１０４によって算出されたものである。ここでは、ｊ＝１である。「ｂ」は、係数である。
【００５６】
コア選択処理部１０５は、時間Ｔｊ（ここでは、時間Ｔ１）を閾値Ｄと比較する（＃７０４）。
【００５７】
ところで、ラスタライズに時間が掛かり過ぎると、プリントユニット１０ｋ（エンジン）が備える性能を十分に発揮することができない。具体的には、ラスタライズが終わるのをプリントユニット１０ｋが待たなければならないので、プリントユニット１０ｋが備える印刷速度を活かすことができない。閾値Ｄは、次のページのラスタライズが終わるのを待つことなくプリントユニット１０ｋが最速の印刷速度（または、所定の印刷速度）で印刷を行えるようにするための、ラスタライズに掛けてもよい最長（限界）の時間である。つまり、複数のページを印刷する際に、全体として最速の印刷速度（または、所定の印刷速度）を辛うじて保つことができる、ラスタライズの所要時間である。
【００５８】
時間Ｔ１が閾値Ｄ以下である場合は（＃７０５でＹｅｓ）、コア選択処理部１０５は、ラスタライズを行うべき候補（以下、「候補コア」と記載する。）が既に選ばれている場合は（＃７０６でＹｅｓ）、候補コアの時間Ｔｊと注目しているコア１ＣＲの時間Ｔｊとを比較する（＃７０７）。しかし、この時点では、未だ第一のコア１ＣＲ１にしか注目していないため候補コアがないので（＃７０６でＮｏ）、ステップ＃７０７をスキップする。そして、注目しているコア１ＣＲつまり第一のコア１ＣＲ１を候補コアとして選ぶ（＃７０９）。
【００５９】
一方、時間Ｔｊが閾値Ｄを超える場合は（＃７０５でＮｏ）、コア選択処理部１０５は、注目しているコア１ＣＲ（ここでは、第一のコア１ＣＲ１）を候補コアに選ばない。
【００６０】
未だ注目していないコア１ＣＲが残っていれば（＃７１０でＮｏ）、コア選択処理部１０５は、これらのうちの次の未注目のコア１ＣＲに注目する（＃７１１、＃７０２）。以下、第一のコア１ＣＲ１が候補コアとして選ばれ、新たに第二のコア１ＣＲ２が注目された場合を例に、コア選択処理部１０５の処理を説明する。
【００６１】
コア選択処理部１０５は、第二のコア１ＣＲ２についても、上述の方法で時間Ｔｊ（ここでは、時間Ｔ２）を推定し（＃７０３）、時間Ｔ２を閾値Ｄと比較する（＃７０４）。
【００６２】
時間Ｔ２が閾値Ｄ以下である場合は（＃７０５でＹｅｓ）、コア選択処理部１０５は、既に候補コア（ここでは、第一のコア１ＣＲ１）があるので（＃７０６でＹｅｓ）、時間Ｔ２を時間Ｔ１と比較する（＃７０７）。注目しているコア１ＣＲの時間Ｔｊが候補コアの時間Ｔｊよりも長い場合、つまり、時間Ｔ２が時間Ｔ１よりも長い場合は（＃７０８でＹｅｓ）、現在の候補コアを外し、注目しているコア１ＣＲつまり第二のコア１ＣＲ２を、新たな候補コアとして選ぶ（＃７０９）。これにより、候補コアが第一のコア１ＣＲ１から第二のコア１ＣＲ２に変わる。一方、注目しているコア１ＣＲの時間Ｔｊが候補コアの時間Ｔｊ以下である場合、つまり、時間Ｔ２が時間Ｔ１以下である場合は（＃７０８でＮｏ）、ステップ＃７０９をスキップする。つまり、候補コアは第一のコア１ＣＲ１のまま変わらない。
【００６３】
時間Ｔ２が閾値Ｄを超える場合も（＃７０５でＮｏ）、コア選択処理部１０５はステップ＃７０９をスキップするので、候補コアは第一のコア１ＣＲ１のまま変わらない。
【００６４】
そして、コア選択処理部１０５は、すべてのコア１ＣＲに注目しステップ＃７０３〜＃７０９の処理を完了した時点で候補コアであるコア１ＣＲを、１ページ目のラスタライズを行うべきコア１ＣＲとして選択する（＃７１２）。
【００６５】
つまり、図４に示す処理によると
（条件Ａ）  時間Ｔｊが閾値Ｄ以下である
（条件Ｂ）  条件Ａを満たすコア１ＣＲのうち、時間Ｔｊが最も長い
という２つの条件を満たすコア１ＣＲが、１ページ目のラスタライズを行うべきコア１ＣＲとして選択される。
【００６６】
コア選択処理部１０５は、２ページ目以降についても同様の方法で、コア１ＣＲを選択する。
【００６７】
実行指令部１０６は、コア選択処理部１０５によって選択されたコア１ＣＲに対して、ラスタライズを行うように指令する。この際に、処理の対象のページの中間言語データ５２を、このコア１ＣＲに与える。例えば、３ページ目のラスタライズを行うべきコア１ＣＲとして第三のコア１ＣＲ３が選択された場合は、第三のコア１ＣＲ３に対して、ラスタライズを行うように指令するとともに、３ページ目の中間言語データ５２を与える。
【００６８】
コア１ＣＲは、指令およびデータを与えられると、ラスタライズプログラム１３２に基づいて、このデータに対してラスタライズを行うことによってビットマップデータを生成する。そして、このビットマップデータを用いてプリントユニット１０ｋに印刷を実行させる。なお、プリントユニット１０ｋへの印刷の指令は、ラスタライズを行ったコア１ＣＲが行ってもよいし、全体制御プログラム１３１を実行するコア１ＣＲ（本例では、第一のコア１ＣＲ１）が行ってもよい。
【００６９】
ただし、第一のコア１ＣＲ１自身がコア選択処理部１０５によって選択された場合は、第一のコア１ＣＲ１においてラスタライズプログラム１３２に基づいてラスタライズが行われる。
【００７０】
以上の通り、ラスタライズの処理を実行すべきコア１ＣＲが処理負荷推定部１０３、演算性能推定部１０４、およびコア選択処理部１０５によって選択された。ラスタライズ以外の処理を実行すべきコア１ＣＲも、これらによって選択してもよい。基本的な原理は、上述の通りである。異なる点は、主に次の通りである。
【００７１】
処理負荷推定部１０３は、その処理を行うのに掛かる負荷Ｒを例えば次のように推定（算出）する。
【００７２】
１枚または複数枚の用紙のそれぞれからスキャンユニット１０ｊが読み取った画像のローデータをＧＩＦまたはＰＤＦなどの画像データに変換する処理を実行させる場合は、処理負荷推定部１０３は、用紙の１ページ（１面）ごとに、変換に掛かる負荷Ｒを推定する。
【００７３】
または、１枚または複数枚の用紙のそれぞれからスキャンユニット１０ｊが読み取った画像をファックスで送信する処理を実行させる場合は、処理負荷推定部１０３は、用紙ごとに、スキャンユニット１０ｊによって得られたローデータをファックスデータに変換する処理に掛かる負荷Ｒを推定する。
【００７４】
または、モデム１０ｉが受信した画像データ（ファックスデータ）をビットマップデータに変換する処理を実行させる場合は、処理負荷推定部１０３は、１ページごとに、変換に掛かる負荷Ｒを推定する。
【００７５】
負荷Ｒを算出するための関数またはテーブルは、これら３つの場合それぞれにおける処理のアルゴリズムなどに応じて予め用意しておく。そして、処理負荷推定部１０３は、（１）式の代わりに、その関数またはテーブルを使用して負荷Ｒを推定する。
【００７６】
演算性能推定部１０４は、ラスタライズの場合と同様に、各コア１ＣＲの演算の性能を推定する。ただし、選択したコア１ＣＲに実行させる処理に応じた性能を推定してもよい。つまり、ある標準的な画像のデータに対してその処理を実行するのに掛かる時間を推定してもよい。
【００７７】
コア選択処理部１０５は、ラスタライズの場合と同様に、処理負荷推定部１０３および演算性能推定部１０４それぞれの推定（演算）の結果に基づいて、処理を実行すべきコア１ＣＲを選択する。ただし、（２）式の係数ｂは、処理の種類などに応じて予め設定されている。閾値Ｄも、同様である。また、閾値Ｄは、上述の通り、画像またはそのデータを出力する装置（プリントユニット１０ｋ、ＮＩＣ１０ｈ、モデム１０ｉ）の速度が活されるように予め設定されている。
【００７８】
図５は、画像処理装置１の全体的な処理の流れの例を説明するフローチャートである。図６は、ＰＣプリント処理の流れの例を説明するフローチャートである。
【００７９】
次に、全体制御プログラム１３１による全体的な処理の流れを、第一のコア１ＣＲ１が全体制御プログラム１３１を実行する場合を例に、図５および図６のフローチャートを参照しながら説明する。
【００８０】
画像処理装置１の電源がオンになると（図５の＃７２１）、全体制御プログラム１３１がメインメモリ１０ｂにロードされる。第一のコア１ＣＲ１は、全体制御プログラム１３１に基づいてステップ＃７２２以降の処理を実行する。
【００８１】
第一のコア１ＣＲ１は、ハードウェアの初期化およびドライバの起動など、初期設定を行う（＃７２２）。そして、外部からデータまたは指令が入力されるごとに、次の通り処理を行う。
【００８２】
ＰＣプリントのために端末装置２１から印刷データ５１（ＰＤＬの画像データ）が送信されてくると（＃７２３でＹｅｓ）、第一のコア１ＣＲ１は、ＰＣプリントを実行する（＃７２４）。ＰＣプリントの手順は、図６に示す通りである。
【００８３】
第一のコア１ＣＲ１は、印刷データ５１の受信に成功すると（図６の＃７４１でＹｅｓ）、１ページ目の中間言語データ５２を生成し（＃７４２、＃７４３）、この中間言語データ５２に対してラスタライズの処理を実行するのに掛かる負荷Ｒを算出（推定）する（＃７４４）。さらに、各コア１ＣＲの演算の性能を算出（推定）する（＃７４５）。
【００８４】
第一のコア１ＣＲ１は、ステップ＃７４４、＃７４５それぞれの結果に基づいて、１ページ目のラスタライズの処理を実行すべきコア１ＣＲを選択する（＃７４６）。選択の方法は、前に図４で説明した通りである。
【００８５】
第一のコア１ＣＲ１は、ラスタライズの処理を実行するように、選択したコア１ＣＲに対して指令する（＃７４７）。この際に、１ページ目の中間言語データ５２をこのコア１ＣＲに与える。ただし、ステップ＃７４６において第一のコア１ＣＲ１自身が選択された場合は、第一のコア１ＣＲ１は、ラスタライズプログラム１３２を自ら実行することによってラスタライズを行う。
【００８６】
そして、第一のコア１ＣＲ１は、ラスタライズの処理によって得られたビットマップデータを用いて印刷が行われるようにプリントユニット１０ｋを制御する（＃７４８）。なお、プリントユニット１０ｋの制御は、選択したコア１ＣＲが行ってもよい。
【００８７】
第一のコア１ＣＲ１は、２ページ目以降についても、１ページ目と同様の処理を行う（＃７４９でＮｏ、＃７５０、＃７４３〜＃７４８）。最後のページの処理が終わったら（＃７５０でＹｅｓ）、プリント処理を終了する。
【００８８】
図５に戻って、第一のコア１ＣＲ１は、ユーザがスキャンを指令しスキャンユニット１０ｊが画像を読み取った場合は（＃７２５でＹｅｓ）、この画像の画像データを保存する処理が実行されるように各部を次のように制御する（＃７２６）。
【００８９】
第一のコア１ＣＲ１は、スキャンユニット１０ｊによって得られたローデータを所定のフォーマットの画像データに変換する処理を実行すべきコア１ＣＲを選択する。選択したコア１ＣＲにこの処理を実行させる。そして、得られた画像データが所定の保存場所またはユーザが指定した保存場所に転送されまたは保存されるように、ＮＩＣ１０ｈまたはＵＳＢ通信装置１０ｍなどを制御する。具体的には、保存場所が他の装置である場合は、画像データが当該他の装置へ転送されるようにＮＩＣ１０ｈを制御する。保存場所がＵＳＢメモリなどの記録媒体である場合は、画像データがこの記録媒体に保存されるようにＵＳＢ通信装置１０ｍを制御する。１ページごとに画像データが転送されまたは保存されるようにＮＩＣ１０ｈまたはＵＳＢ通信装置１０ｍを制御してもよい。なお、この処理は、画像変換プログラム１３３に基づいて実行される。
【００９０】
または、ユーザがファックスの送信を指令しスキャンユニット１０ｊが画像を読み取った場合は（＃７２７でＹｅｓ）、第一のコア１ＣＲ１は、この画像がファックスによって送信されるように各部を次のように制御する（＃７２８）。
【００９１】
第一のコア１ＣＲ１は、スキャンユニット１０ｊによって得られたローデータをファックス用のフォーマットのデータ（ファックスデータ）に変換する処理を実行すべきコア１ＣＲを選択する。選択したコア１ＣＲにこの処理を実行させる。そして、得られたファックスデータが、ユーザが指定したファックス番号の装置へ送信されるように、モデム１０ｉを制御する。なお、この処理は、ファックスデータ生成プログラム１３４に基づいて実行される。
【００９２】
または、モデム１０ｉがファックスデータを受信した場合は（＃７２９でＹｅｓ）、第一のコア１ＣＲ１は、このファックスデータに基づいて画像が印刷されるように各部を次のように制御する（＃７３０）。
【００９３】
第一のコア１ＣＲ１は、このファックスデータビットマップデータに変換する処理を実行させるコア１ＣＲを選択する。選択したコア１ＣＲに、この処理を実行させる。そして、得られたビットマップデータを用いて印刷が行われるようにプリントユニット１０ｋを制御する。なお、この処理は、ファックスデータ受付プログラム１３５に基づいて実行される。
【００９４】
そのほか、第一のコア１ＣＲ１は、ユーザからの指令または外部からのデータに基づいて、必要な処理を適宜、実行する（＃７３１）。
【００９５】
なお、ステップ＃７２６、＃７２８、＃７３０、＃７３１においては、出力用のハードウェアの性能を活かすことができるコア１ＣＲのうち、最もスペックの低いものが選択される。
【００９６】
第一のコア１ＣＲ１は、電源がオフになるまで、適宜、上述の処理を実行する（＃７３２でＮｏ、＃７２３〜＃７３１）。
【００９７】
本実施形態によると、複数のコア１ＣＲの中から、出力装置（ＮＩＣ１０ｈ、モデム１０ｉ、またはプリントユニット１０ｋ）の性能を活かすことができる最も性能の低いコア１ＣＲを選択し、特定の処理を実行させる。よって、ヘテロジニアス構成のＣＰＵであるＣＰＵ１０ａを従来よりも効率的に使用することができる。
【００９８】
本実施形態では、３つのコア１ＣＲからなるマルチコアプロセッサをＣＰＵ１０ａとして用いたが、他の個数（例えば、２つ、４つ、６つ、または８つなど）のコア１ＣＲからなるマルチコアプロセッサを用いてもよい。
【００９９】
プリントユニット１０ｋ、ＮＩＣ１０ｈ、またはモデム１０ｉの性能を活かすことができるコア１ＣＲが１つもない場合がある。例えば、ラスタライズの処理を実行させるコア１ＣＲを選択する際に、条件Ａを満たすコア１ＣＲが１つも見つからないことがある。このような場合は、コア選択処理部１０５は、最もスペックの高いコア１ＣＲを選択すればよい。または、演算性能推定部１０４が算出（推定）した、現時点での性能が最も高いコア１ＣＲを選択してもよい。
【０１００】
性能が同一のコア１ＣＲが複数ある場合は、コア選択処理部１０５は、これらのコア１ＣＲのうち、現在実行しているプログラムの個数が最も少ないコア１ＣＲを選択すればよい。
【０１０１】
または、コア選択処理部１０５は、現在プログラムを実行しているコア１ＣＲを最初から候補から除外し、プログラムを１つも実行していないコア１ＣＲの中から、処理を実行すべきコア１ＣＲを選択してもよい。
【０１０２】
または、複数のコア１ＣＲによって並列処理を行うことができる場合は、演算性能推定部１０４は、１つまたは複数のコア１ＣＲの組合せごとに演算の性能を推定し、コア選択処理部１０５は、一定の条件（例えば、ラスタライズの場合は、条件Ａ）を満たす組合せのうち、最も性能の低いものを選択すればよい。そして、実行指令部１０６は、この組合せのコア１ＣＲに処理を実行させればよい。
【０１０３】
したがって、演算性能推定部１０４は、ｎ個のコア１ＣＲがある場合は、（２n−１）組の組合せについて、演算の性能（処理能力）を算出（推定）する。
【０１０４】
演算の性能の算出方法は、様々であるが、１つのコア１ＣＲの演算の性能の算出方法と同様の方法を用いればよい。つまり、各組合せのスペックの情報をテーブルデータとして予め用意しておき、この情報を所定の関数に代入することによって演算の性能を算出してもよい。または、画像処理装置１の起動の際または演算の性能を推定する直前に、各組合せに所定の処理を行わせ、その演算時間を計ることによって、演算の性能を算出してもよい。
【０１０５】
特に、コア１ＣＲが３個以上ある場合に、このような、１つまたは複数のコア１ＣＲの組合せごとに演算の性能を推定し、特定の処理を実行させる方法が好適に用いられる。
【０１０６】
本実施形態では、印刷データ５１から中間言語データ５２を全体制御プログラム１３１によって生成した。つまり、中間言語データ生成部１０２を全体制御プログラム１３１によって実現した。しかし、他のプログラム（中間言語データ生成プログラム）によって中間言語データ生成部１０２を実現してもよい。
【０１０７】
この場合は、処理負荷推定部１０３は、中間言語データ５２を生成する処理の負荷を推定する。コア選択処理部１０５は、推定された負荷および各コア１ＣＲ（または複数のコア１ＣＲの組合せ）の演算の性能に基づいて、中間言語データ５２を生成すべきコア１ＣＲを選択する。そして、選択されたコア１ＣＲ（または複数のコア１ＣＲの組合せ）に中間言語データ生成プログラムを実行させることによって、印刷データ５１から中間言語データ５２を生成する。
【０１０８】
処理負荷推定部１０３は、（１）式に基づいて負荷Ｒを算出したが、他の式に基づいて算出してもよい。
【０１０９】
本実施形態では、（１）式によって負荷Ｒを算出（推定）し、負荷Ｒを（２）式に代入することによって時間Ｔを算出（推定）したが、（１）式および（２）式を１つの式に纏め、この式に基づいて時間Ｔを算出してもよい。
【０１１０】
その他、画像処理システム３、画像処理装置１の全体または各部の構成、処理内容、処理順序、負荷の算出方法、性能の算出方法などは、本発明の趣旨に沿って適宜変更することができる。
【符号の説明】
【０１１１】
１  画像処理装置
１０３  処理負荷推定部（第三の推定手段）
１０４  演算性能推定部（第一の推定手段）
１０５  コア選択処理部（第二の推定処理）
１０６  実行指令部（制御手段）
１０ａ  ＣＰＵ（プロセッサ）
１ＣＲ  コア
【図１】
2016091137.tif 000004
【図２】
2016091137.tif 000005
【図３】
2016091137.tif 000006
【図４】
2016091137.tif 000007
【図５】
2016091137.tif 000008
【図６】
2016091137.tif 000009