(57)【要約】【課題】マルチコアプロセッサーを備え、プロセッサーを装着されていない周辺機器に接続され得る画像処理装置において、処理効率を向上させること。【解決手段】ＭＦＰ１００に接続される周辺機器にプロセッサーが装着されていない場合、ＭＦＰ１００では、複数のコアの中の一部が当該周辺機器の制御プログラムおよび当該制御プログラムに関連するＭＦＰ１００の制御プログラムを実行するためにＡＭＰモードで制御され、残りのコアがＭＦＰ１００の制御プログラムを実行するためにＳＭＰモードで制御される。【選択図】図３
2016103196.tif 000002
【特許請求の範囲】
【請求項１】
周辺機器に接続される画像処理装置であって、
複数のコアを含むマルチコアプロセッサーを備え、
前記マルチコアプロセッサーは、
前記周辺機器にプロセッサーが装着されているか否かを判別するための判別手段と、
前記複数のコアに処理を割り当てるためのスケジューラーとを含み、
前記スケジューラーは、
前記判別手段が前記周辺機器にプロセッサーが装着されていることを判別した場合には、前記複数のコアに前記画像処理装置の制御プログラムの処理を割り当て、
前記判別手段が前記周辺機器にプロセッサーが装着されていないことを判別した場合には、前記周辺機器の制御プログラムおよび前記画像処理装置の制御プログラムの中の当該周辺機器の制御プログラムに関連するプログラムを前記複数のコアの中の一部のコアに割り当て、前記画像処理装置の制御プログラムの中の残りの制御プログラムを前記複数のコアの中の残りのコアに割り当てることを特徴とする、画像処理装置。
【請求項２】
前記周辺機器のファームウェアに関連する制御プログラムは、前記周辺機器のハードウェアの制御に関する処理を実行するためのプログラムである、請求項１に記載の画像処理装置。
【請求項３】
前記スケジューラーは、前記判別手段が前記周辺機器にプロセッサーが装着されていないことを判別した場合に、対称型マルチプロセッシングで、前記複数のコアの中の残りのコアにスレッドを割り当てることを特徴とする、請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記スケジューラーは、前記判別手段が前記周辺機器にプロセッサーが装着されていることを判別した場合に、対称型マルチプロセッシングで、前記複数のコアにスレッドを割り当てる、請求項１〜請求項３のいずれか１項に記載の画像処理装置。
【請求項５】
前記スケジューラーは、前記画像処理装置の制御プログラムのうち、バンド単位で実行される制御プログラムの割り当てを非対称型マルチプロセッシングで実現し、ページ単位で実行される制御プログラムの割り当てを非対称型マルチプロセッシングで実現する、請求項１〜請求項４のいずれか１項に記載の画像処理装置。
【請求項６】
周辺機器に接続され、複数のコアを含むマルチコアプロセッサーを備えた画像処理装置の制御方法であって、
前記周辺機器にプロセッサーが装着されているか否かを判別するステップと、
前記周辺機器にプロセッサーが装着されていることを判別した場合には、前記複数のコアに前記画像処理装置の制御プログラムを割り当てるステップと、
前記周辺機器にプロセッサーが装着されていないことを判別した場合には、前記周辺機器の制御プログラムおよび前記画像処理装置の制御プログラムの中の当該周辺機器の制御プログラムに関連するプログラムを前記複数のコアの中の一部のコアに割り当て、前記画像処理装置の制御プログラムの中の残りの制御プログラムを前記複数のコアの中の残りのコアに割り当てるステップとを備える、画像処理装置の制御方法。
【請求項７】
周辺機器に接続された画像処理装置に備えられた、複数のコアを含むマルチコアプロセッサーによって実行されるプログラムであって、
前記プログラムは、前記マルチコアプロセッサーに、
前記周辺機器にプロセッサーが装着されているか否かを判別するステップと、
前記周辺機器にプロセッサーが装着されていることを判別した場合には、前記複数のコアに前記画像処理装置の制御プログラムのスレッドを割り当てるステップと、
前記周辺機器にプロセッサーが装着されていないことを判別した場合には、前記周辺機器の制御プログラムおよび前記画像処理装置の制御プログラムの中の当該周辺機器の制御プログラムに関連するプログラムを前記複数のコアの中の一部のコアに割り当て、前記画像処理装置の制御プログラムの中の残りの制御プログラムを前記複数のコアの中の残りのコアに割り当てるステップとを実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置、その制御方法、およびプログラムに関し、特に、マルチコアプロセッサーを備えた画像処理装置、その制御方法、およびそのような画像処理装置において実行されるプログラムに関する。
【背景技術】
【０００２】
近年、画像処理装置において、マルチコアプロセッサーを備えるものがある。マルチコアプロセッサーの制御として、複数のプロセッサーの物理メモリーを共有して管理する対象型マルチプロセッシング（ＳＭＰ：Symmetric  Multi-Processing）と、プロセッサーごとに役割が決められている非対称型マルチプロセッシング（ＡＭＰ：Asymmetrical  Multi-Processing）とがある。そして、マルチコアプロセッサーを備えた装置における制御については、種々の技術が提案されている。
【０００３】
たとえば、特開２０１４−９６０２４号公報（特許文献１）には、複数のコアを備えたマルチコアプロセッサーの制御プログラムが開示されている。当該制御プログラムは、生成されるスレッドの動作コアを決定するグローバルスケジューラーと、複数のコアごとに設けられたローカルスケジューラーとを備える。そして、ローカルスケジューラーは、自コアに割り当てられたスレッドを優先度に応じてスケジューリングして自コアで実行させる。また、グローバルスケジューラーは、所定のスケジューリングポリシーに基づいて、複数のコア間でのスレッドマイグレーションの実行を決定し、そして、各コアに割り当てられたスレッドのうち高優先度の上位Ｎ個のスレッドについてはスレッドマイグレーションの対象としないようにする。
【０００４】
また、特開２０１１−１５２６８５号公報（特許文献２）には、複数のＭＰＵコアを有するＣＰＵを備えたプリンタ制御装置が開示されている。当該装置は、受信処理、データ解析処理、画像描画処理、およびビデオ信号送信処理それぞれのプログラムを実行するプロセスを各コアに割り当てるとともに、各プロセス間の情報をＦＩＦＯ形式の通信手段で伝達することで、各プロセスを同時並列実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−９６０２４号公報
【特許文献２】特開２０１１−１５２６８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
マルチコアプロセッサーを備える画像処理装置は、当該画像処理装置が接続される周辺機器の状況に応じて、タスクのコア割り当てを変更する場合がある。たとえば、上記のＳＭＰで制御された画像処理装置が、周辺機器（たとえば、スキャナ）に接続され、そして、当該周辺機器がプロセッサーが装着されていないことを検知した場合を想定する。この場合、画像処理装置は、画像処理装置側のマルチコアプロセッサー内の複数のコアの中の一部をスキャナ制御用として割り当てながら、各コアで処理を分散させる。つまり、画像処理装置は、いずれかのコアの処理が重くなった場合には、それ以外のコアに処理を移動させて、システムとしての処理効率を維持する制御を実行する。
【０００７】
なお、公知の技術として、各制御タスクを指定されたコア上でのみ動作させるというものがあるが、これは一部のＯＳ（たとえば、Ｌｉｎｕｘ（登録商標））のカーネルには適用できない。このため、このような技術が当該一部のＯＳを装着した装置に適用された場合、たとえばデバイスドライバーやスケジューラー等が使用されて、ＯＳが捌かなければならない処理が増えてくると、全コアの処理が重くなることが想定される。
【０００８】
また、画像処理装置において実行される制御タスクの内、実行されるコアが固定されるよりも、複数コアで並列して処理された方が、効率のよいものもある。
【０００９】
本開示は、かかる実情を鑑み考え出されたものであり、その目的は、マルチコアプロセッサーを備え、プロセッサーを装着されていない周辺機器に接続され得る画像処理装置において、処理効率を向上させることである。
【課題を解決するための手段】
【００１０】
ある局面に従うと、周辺機器に接続される画像処理装置であって、複数のコアを含むマルチコアプロセッサを備え、マルチコアプロセッサは、周辺機器にプロセッサが装着されているか否かを判別するための判別手段と、複数のコアに処理を割り当てるためのスケジューラーとを含み、スケジューラーは、判別手段が周辺機器にプロセッサが装着されていることを判別した場合には、複数のコアに画像処理装置の制御プログラムの処理を割り当て、判別手段が周辺機器にプロセッサが装着されていないことを判別した場合には、周辺機器の制御プログラムおよび画像処理装置の制御プログラムの中の当該周辺機器の制御プログラムに関連するプログラムを複数のコアの中の一部のコアに割り当て、画像処理装置の制御プログラムの中の残りの制御プログラムを複数のコアの中の残りのコアに割り当てる、画像処理装置が提供される。
【００１１】
好ましくは、周辺機器のファームウェアに関連する制御プログラムは、周辺機器のハードウェアの制御に関する処理を実行するためのプログラムである。
【００１２】
好ましくは、スケジューラーは、判別手段が周辺機器にプロセッサが装着されていないことを判別した場合に、複数のコアの中の残りのコアに、対称型マルチプロセッシングで、スレッドを割り当てる。
【００１３】
好ましくは、スケジューラーは、判別手段が周辺機器にプロセッサが装着されていることを判別した場合に、複数のコアに、対称型マルチプロセッシングでスレッドを割り当てる。
【００１４】
好ましくは、スケジューラーは、画像処理装置の制御プログラムのうち、バンド単位で実行される制御プログラムの割り当てを非対称型マルチプロセッシングで実現し、ページ単位で実行される制御プログラムの割り当てを非対称型マルチプロセッシングで実現する。
【００１５】
他の局面に従うと、周辺機器に接続され、複数のコアを含むマルチコアプロセッサを備えた画像処理装置の制御方法であって、周辺機器にプロセッサが装着されているか否かを判別するステップと、周辺機器にプロセッサが装着されていることを判別した場合には、複数のコアに画像処理装置の制御プログラムを割り当てるステップと、周辺機器にプロセッサが装着されていないことを判別した場合には、周辺機器の制御プログラムおよび画像処理装置の制御プログラムの中の当該周辺機器の制御プログラムに関連するプログラムを複数のコアの中の一部のコアに割り当て、画像処理装置の制御プログラムの中の残りの制御プログラムを複数のコアの中の残りのコアに割り当てるステップとを備える、画像処理装置の制御方法が提供される。
【００１６】
さらに他の局面に従うと、周辺機器に接続された画像処理装置に備えられた、複数のコアを含むマルチコアプロセッサによって実行されるプログラムが提供される。プログラムは、マルチコアプロセッサに、周辺機器にプロセッサが装着されているか否かを判別するステップと、周辺機器にプロセッサが装着されていることを判別した場合には、複数のコアに画像処理装置の制御プログラムのスレッドを割り当てるステップと、周辺機器にプロセッサが装着されていないことを判別した場合には、周辺機器の制御プログラムおよび画像処理装置の制御プログラムの中の当該周辺機器の制御プログラムに関連するプログラムを複数のコアの中の一部のコアに割り当て、画像処理装置の制御プログラムの中の残りの制御プログラムを複数のコアの中の残りのコアに割り当てるステップとを実行させる。
【図面の簡単な説明】
【００１７】
【図１】画像処理システムの構成を概略的に示す図である。
【図２】スキャナー装置がプロセッサーを備えるときの、画像処理システムにおける機能的構成の一例を模式的に示す図である。
【図３】スキャナー装置がプロセッサーを備えないときの、画像処理システムにおける機能的構成の一例を模式的に示す図である。
【図４】スキャナー装置がプロセッサーを備えるときの、画像処理システムのハードウェア構成の一例を示す図である。
【図５】スキャナー装置がプロセッサーを備えないときの、画像処理システムのハードウェア構成の一例を示す図である。
【図６】ＭＦＰ（Multi-Functional  Peripheral）においてオペレーティングシステムが起動する際に実行される処理のフローチャートである。
【発明を実施するための形態】
【００１８】
以下に、図面を参照しつつ、画像処理装置を含む画像処理システムの実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
【００１９】
［画像処理システムの概略構成］
図１は、画像処理システムの構成を概略的に示す図である。
【００２０】
図１を参照して、画像処理システムは、画像処理装置の一例であるＭＦＰ１００と、当該ＭＦＰ１００に接続されたスキャナー装置２００とを含む。スキャナー装置２００は、たとえばシリアルインターフェイス（Ｉ／Ｆ）を介して、ＭＦＰ１００に接続される。
【００２１】
スキャナー装置２００では、プロセッサーが装着されている場合には、当該プロセッサーがスキャナー装置２００のファームウェアを実行する。一方、スキャナー装置２００においてプロセッサーが装着されていない場合には、ＭＦＰ１００のプロセッサーがスキャナー装置２００のファームウェアを実行する。スキャナー装置２００のファームウェアは、当該スキャナー装置２００の制御プログラムの一例である。本明細書では、スキャナー装置２００のファームウェアを「スキャナーＦＷ」と称する場合がある。
【００２２】
ＭＦＰ１００は、マルチコアプロセッサーを備える。ＭＦＰ１００では、スキャナー装置２００にプロセッサーが装着されていない場合に、マルチコアプロセッサーの中の１つのコアがスキャナーＦＷを実行する。また、ＭＦＰ１００では、スキャナーＦＷを実行するコアは、さらに、当該スキャナーＦＷに関連する制御プログラムを実行する。スキャナーＦＷに関連する制御プログラムとは、たとえば、スキャナー装置２００（スキャナー部２１０）に対し原稿のスキャンを指示し、そして、スキャナー装置２００から出力されるスキャンデータを圧縮する、スキャン制御プログラムである。スキャン制御プログラムは、スキャナー装置２００のハードウェアの制御に関する処理を実行するためのプログラムの一例である。
【００２３】
［コントローラーの機能的構成］
図２は、スキャナー装置２００がプロセッサーを備えるときの、画像処理システムにおける機能的構成の一例を模式的に示す図である。
【００２４】
図２に示された例では、ＭＦＰ１００は、当該ＭＦＰ１００を統括的に制御するコントローラー１５０を備える。また、スキャナー装置２００は、プロセッサーとして、当該スキャナー装置２００を統括的に制御するＣＰＵ（Central  Processing  Unit）２５１を含む。ＣＰＵ２５１は、スキャナーＦＷを実行する。コントローラー１５０は、ＭＦＰ１００の制御プログラムを実行する。ＭＦＰ１００の制御プログラムは、ＲＩＰ（Raster  Image  Processor）制御プログラムと、スキャン制御プログラムと、回転制御プログラムと、ＪＯＢ制御プログラムと、エンジン制御プログラムとを含む。
【００２５】
ＲＩＰ制御プログラムは、たとえば、プリントデータであるＰＤＬ（Printer  Description  Language）をビットマップ形式のラスタデータに変換するためのＲＩＰ処理を実行する。
【００２６】
スキャン制御プログラムは、たとえば、スキャナー装置２００から出力されるスキャンデータを圧縮して、後述するエンジン制御プログラムへと出力する。
【００２７】
回転制御プログラムは、画像データの回転処理を実行する。
ＪＯＢ制御プログラムは、ＭＦＰ１００が受け付けたジョブ（印刷ジョブ等）の処理の実行および管理を、統括的に制御する。
【００２８】
エンジン制御プログラムは、ＭＦＰ１００におけるジョブの実行等のために、ハードウェアの動作を制御する。たとえば、エンジン制御プログラムは、上記したスキャン制御プログラムから出力された、圧縮されたデータを展開することにより印刷データを生成する。また、エンジン制御プログラムは、当該印刷データに基づく画像をシート上に印刷するための処理を制御する。
【００２９】
コントローラー１５０は、コア（０）１６０、コア（１）１６１、コア（２）１６２、およびコア（３）１６３で示された４つのコアを含む。図２に示された例では、上記のＲＩＰ制御プログラム、スキャン制御プログラム、回転制御プログラム、ＪＯＢ制御プログラム、およびエンジン制御プログラムは、４つのコアにおいてＳＭＰで実現される。
【００３０】
なお、図２（および、後述する図３）では、ＳＭＰで制御される複数のコアにおいて、各制御プログラムが一律に実行されるように記載されているが、実際には、複数のコアは、ＳＭＰで制御されることにより、互いの作業負荷が均等になるように動作する。ＳＭＰによる負荷の分散の具体的方法は公知の技術を採用することができるため、ここでは詳細な説明は繰り返さない。
【００３１】
図３は、スキャナー装置２００がプロセッサーを備えないときの、画像処理システムにおける機能的構成の一例を模式的に示す図である。
【００３２】
図３に示された例では、ＭＦＰ１００のコントローラー１５０における４つのコアの中の一部（コア（０）１６０）が、スキャナーＦＷを実行する。また、コア（０）１６０は、スキャナーＦＷに関連する制御プログラムの一例である、スキャン制御プログラムを実行する。一方、コントローラー１５０では、残りの３つのコアにおいて、残りの制御プログラム（ＲＩＰ制御プログラム、回転制御プログラム、ＪＯＢ制御プログラム、およびエンジン制御プログラム）がＳＭＰで実現される。
【００３３】
つまり、図３に示された例では、コントローラー１５０における４つのコアのうち、１つのコア（コア（０）１６０）において、スキャナーＦＷおよびスキャン制御プログラムが、ＡＭＰで実現される。そして、コントローラー１５０の残りのコア（コア（１）１６１、コア（２）１６２、およびコア（３）１６３）において、ＭＦＰ１００の残りの制御プログラムが、ＳＭＰで実現される。
【００３４】
［画像処理システムのハードウェア構成（１）］
図４は、スキャナー装置２００がプロセッサーを備えるときの、画像処理システムのハードウェア構成の一例を示す図である。以下に、ＭＦＰ１００とスキャナー装置２００のそれぞれのハードウェア構成を説明する。
【００３５】
（ＭＦＰ１００）
図４に示されるように、ＭＦＰ１００は、上述のようにコントローラー１５０を備える。コントローラー１５０は、マルチコアプロセッサーの一例であり、上述したように、４つのコア（コア（０）１６０、コア（１）１６１、コア（２）１６２、およびコア（３）１６３）を含む。また、コントローラー１５０は、スケジューラー１５５および判別部１５６を含む。スケジューラー１５５および判別部１５６は、コントローラー１５０が備えるプロセッサーが予め定められたプログラム（たとえば、オペレーティングシステムプログラム）を実行することによって、実現されてもよい。
【００３６】
スケジューラー１５５は、４つのコアに処理を割り当てる。判別部１５６は、ＭＦＰ１００に接続された周辺機器においてプロセッサーが装着されているかどうかを判別する。
【００３７】
ＭＦＰ１００は、さらに、表示パネル１０１と、操作パネル１０２と、スキャナー部１０３と、プリンター部１０４と、ファクシミリ（ＦＡＸ）部１０５と、ＮＩＣ（Network  Interface  Card）１０６と、補助記憶装置１０７と、コネクター１０８と、ＲＯＭ１０９と、ＲＡＭ１１０とを備える。
【００３８】
表示パネル１０１は、たとえば液晶表示装置からなり、ＭＦＰ１００の状態等の各種の情報を表示する。
【００３９】
操作パネル１０２は、コピーの画質または用紙のための設定値、スキャンの送信先（宛先登録）を登録または選択するための情報など、各種の情報の入力を受け付ける。操作パネル１０２は、たとえば、タッチパネルとして表示パネル１０１と一体的に設けられていてもよい。
【００４０】
スキャナー部１０３は、当該スキャナー部１０３にセットされた原稿をスキャンし、原稿の画像データを生成する。スキャナー部１０３における画像データの生成方法は公知の方法を採用することができるため、ここでは詳細な説明は繰り返さない。
【００４１】
プリンター部１０４は、たとえば電子写真方式により、スキャナー部１０３で読み取られた画像データや、スキャナー装置２００等の外部の機器から送信されたプリントデータの画像を印刷する装置である。電子写真方式などの画像形成の態様は、公知の技術を採用することができるため、ここでは詳細な説明は繰り返さない。
【００４２】
ＦＡＸ部１０５は、ファクシミリ通信の送受信機能を実現する。
ＮＩＣ１０６は、ＭＦＰ１００がネットワークを介した通信を行なうときに利用される、インターフェイスの一例である。
【００４３】
補助記憶装置１０７は、ＭＦＰ１００に登録されている宛先情報やドキュメントなどの各種のデータを保存する。ドキュメントのデータは、外部の機器からＭＦＰ１００に入力される場合もあれば、スキャナー部１０３で画像が読み取られることによって生成される場合もある。
【００４４】
補助記憶装置１０７は、たとえば、ＣＤ−ＲＯＭ（Compact  Disc  -  Read  Only  Memory）、ＤＶＤ−ＲＯＭ（Digital  Versatile  Disk  -  Read  Only  Memory）、ＵＳＢ（Universal  Serial  Bus）メモリー、メモリーカード、ＦＤ（Flexible  Disk）、ハードディスク、ＳＳＤ（Solid  State  Drive）、磁気テープ、カセットテープ、ＭＯ（Magnetic  Optical  Disc）、ＭＤ（Mini  Disc）、ＩＣ（Integrated  Circuit）カード（メモリーカードを除く）、光カード、マスクＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ（Electronically  Erasable  Programmable  Read-Only  Memory）などの、不揮発的にデータを格納する媒体が挙げられる。また、補助記憶装置１０７には、ネットワークを介してダウンロードされたプログラムがインストールされる場合も有り得る。
【００４５】
なお、本開示にかかるプログラムは、コンピューターのオペレーティングシステム（ＯＳ）の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずＯＳと協働して処理が実行される。このようなモジュールを含まないプログラムも、本開示にかかるプログラムに含まれ得る。
【００４６】
また、本開示にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本開示にかかるプログラムに含まれ得る。
【００４７】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【００４８】
コネクター１０８は、ＭＦＰ１００を外部の機器と接続させるための部分であり、たとえば、ＲＳ−２３２Ｃ規格のシリアルポートのインターフェースである。ＭＦＰ１００は、たとえばコネクター１０８を介して、スキャナー装置２００と接続する。
【００４９】
ＲＯＭ１０９は、ＣＰＵ１０１が実行するプログラムを含む各種のデータを格納する。
ＲＡＭ１１０は、ＣＰＵ１０１におけるプログラム実行時のワークエリアとして機能する。ＲＡＭ１１０は、スキャナー部１０３で読み取られた画像データ等を一時的に保存する場合もある。
【００５０】
（スキャナー装置２００）
図４に示されるように、スキャナー装置２００は、コントローラー２５０と、ＲＯＭ２０１と、ＲＡＭ２０２と、スキャナー部２１０とを備える。コントローラー２５０、ＲＯＭ２０１、ＲＡＭ２０２、およびスキャナー部２１０は、内部バスを介して互いに接続される。コントローラー２５０は、プロセッサーの一例であるＣＰＵ２５１を含む。ＣＰＵ２５１は、スキャナー装置２００の動作を統括的に制御する。
【００５１】
スキャナー部２１０は、ＣＰＵ２５１によって制御される。より具体的には、スキャナー部２１０は、ＣＰＵ２５１の制御の下で、当該スキャナー部２１０にセットされた原稿をスキャンし、原稿の画像データを生成する。生成された画像データは、たとえば、コントローラー２５０によって、ＭＦＰ１００に送信される。
【００５２】
［画像処理システムのハードウェア構成（２）］
図５は、スキャナー装置２００がプロセッサーを備えないときの、画像処理システムのハードウェア構成の一例を示す図である。
【００５３】
図５に示された画像処理システムでは、スキャナー装置２００にはプロセッサーが装着されていない。スキャナー装置２００のスキャナー部２１０の動作は、コントローラー１５０の中の１つのコアによって制御される。
【００５４】
［処理の流れ］
図６は、ＭＦＰ１００においてオペレーティングシステムが起動する際に実行される処理のフローチャートである。当該処理は、たとえば、コントローラー１５０における複数のコアによって実行される。以下の説明では、図６の処理の実行主体は、コントローラー１５０として記載される。
【００５５】
図６を参照して、ステップＳ１０で、コントローラー１５０は、コントローラー１５０のすべてのコア（コア（０）〜コア（３））をＳＭＰモードに設定する。当該設定は、たとえば補助記憶装置１０７またはＲＡＭ１１０における各コアの動作モードの設定値を格納する部分に、ＳＭＰモードに対応する値を登録することにより実現される。コントローラー１５０の各コアは、当該部分の設定値に従って、ＳＭＰモードまたはＡＭＰモードで動作する。そして、制御はステップＳ２０へ進められる。
【００５６】
ステップＳ２０で、コントローラー１５０は、ＭＦＰ１００の制御プログラム（図２のＲＩＰ制御プログラム、スキャン制御プログラム、回転制御プログラム、ＪＯＢ制御プログラム、およびエンジン制御プログラム等）のスレッドを、４つのコア（コア（０）〜コア（３））の中の任意のコアにロードする。なお、スレッドのロードは、４つのコア間で、互いに作業負荷が均等になるように（または、差異が最小限になるように）配分される。そして、制御はステップＳ３０へ進められる。
【００５７】
ステップＳ３０で、コントローラー１５０は、当該コントローラー１５０のカーネルを初期化する。そして、制御はステップＳ４０へ進められる。
【００５８】
ステップＳ４０で、コントローラー１５０は、周辺機器の一例であるスキャナー装置２００にプロセッサーが装着されているかどうかを判断する。より具体的には、たとえばコントローラー１５０は、コネクター１０８等を介して接続された周辺機器に対して、コマンド「初期通信開始」を送信し、当該コマンドに対するレスポンスがあった場合には、周辺機器にプロセッサーが装着されていると判断する。一方、コントローラー１５０は、当該コマンドに対するレスポンスが無かった場合には、周辺機器にはプロセッサーが装着されていないと判断する。
【００５９】
そして、ステップＳ４０で、コントローラー１５０は、周辺機器にプロセッサーが装着されていると判断すると（ステップＳ４０でＹＥＳ）、ステップＳ８０へ制御を進める。一方、コントローラー１５０は、周辺機器にはプロセッサーが装着されていないと判断すると（ステップＳ４０でＮＯ）、ステップＳ５０へ制御を進める。つまり、図６の処理では、画像処理システムが図２に示されたような構成を有する場合にはステップＳ８０へ制御が進められ、図３に示された構成を有する場合にはステップＳ５０へ制御が進められる。
【００６０】
ステップＳ５０で、コントローラー１５０は、コア（０）１６０をＡＭＰモードに設定する。そして、制御はステップＳ６０に進められる。
【００６１】
ステップＳ６０で、コントローラー１５０は、コア（０）１６０に、スキャナーＦＷ、および、スキャナーＦＷに関連するプログラムの一例であるスキャン制御プログラムをロードする。そして、制御はステップＳ７０に進められる。
【００６２】
なお、ステップＳ５０およびステップＳ６０の制御により、コントローラー１５０では、図３に示されたように、コア（０）１６０がＡＭＰモードに設定され、コア（１）１６１〜コア（３）１６３がＳＭＰモードに設定される。
【００６３】
図６に戻って、ステップＳ７０で、コントローラー１５０は、コア（０）１６０のカーネルを初期化する。そして、図６の処理を終了させる。
【００６４】
一方、ステップＳ８０で、コントローラー１５０は、スキャナー装置２００のＣＰＵ（図４のＣＰＵ２５１）の制御プログラム（スキャナーＦＷ）を、ＣＰＵ２５１にロードする。そして、制御はステップＳ９０へ進められる。
【００６５】
ステップＳ９０で、コントローラー１５０は、スキャナー装置２００のＣＰＵ２５１のカーネルを初期化して、図６の処理を終了させる。
【００６６】
以上の通り図６を参照して説明された処理では、ステップＳ４０の制御は、判別部１５６によって実現される。また、コントローラー１５０における各コアの設定に関する制御（ステップＳ１０，Ｓ２０，Ｓ５０，Ｓ６０）は、スケジューラー１５５によって実現される。
【００６７】
以上説明された本実施の形態では、ＭＦＰ１００に接続される周辺機器にプロセッサーが装着されている場合には、コントローラー１５０における複数のコアは、ＳＭＰモードで制御される。一方、ＭＦＰ１００に接続される周辺機器にプロセッサーが装着されていない場合、ＭＦＰ１００では、複数のコアの中の一部が当該周辺機器の制御プログラムおよび当該制御プログラムに関連するＭＦＰ１００の制御プログラムを実行するためにＡＭＰモードで制御され、残りのコアがＭＦＰ１００の制御プログラムを実行するためにＳＭＰモードで制御される。
【００６８】
これにより、周辺機器にプロセッサーが装着されていないときには、当該周辺機器の制御プログラムおよび当該制御プログラム関連するＭＦＰ１００の制御プログラムを１つのコアで集中的に実行させながら、ＭＦＰ１００の残りの制御プログラムを他のコアにおいてＳＭＰモードで効率的に実行させることができる。
【００６９】
ここで、本実施の形態における制御をより具体的に説明する。
本実施の形態の画像処理システムでは、スキャナー装置２００にプロセッサーが装着されていない場合、ＭＦＰ１００のコントローラー１５０の４つのコアのうち１つを、スキャナー装置２００の制御用（スキャナーＦＷ）に割り当てる際、同じコアに、スキャン制御タスク（スキャン制御プログラム）も割り当てる。さらに具体的には、スキャン制御タスクをローダブルで用意しておき、スキャナーＦＷを実行させるコアをＡＭＰモードで他のコアから分離した後、スキャナーＦＷとスキャン制御タスクをスキャナー制御用のコア（コア（０）１６０）でロードする。この結果、スキャナー制御用のコアとＭＦＰ１００のファームウェアを実行するコアとの間で、通信割合を減少させることができ、また、共有しなければならない情報も低減させることができる。
【００７０】
つまり、制御ソフトウェアの下層にいけばいくほど通信回数は増加する。上位層では、例えばスキャンジョブが開始されると、スキャナー制御用のコアとＭＦＰ１００のファームウェアを実行するコアとの間では、スキャンジョブ完了の粒度での通信が実施される。一方、下位層では、１枚目スキャン開始から１枚目スキャン完了まで、さらに下位層では、バンド転送開始からバンド転送完了まで、といった粒度の細かい通信が発生すると考えられる。
【００７１】
一方、上記のように、スキャナーＦＷを実行させるコアをＡＭＰモードで他のコアから分離した後、スキャナーＦＷとスキャン制御タスクをスキャナー制御用のコア（コア（０）１６０）でロードすることにより、スキャナー制御用のコアとＭＦＰ１００のファームウェアを実行するコアとの間で共有しなければならない情報の量を減らすことができる。たとえば、スキャン制御プログラムとＪＯＢ制御プログラムとの間では、ジョブの設定値や処理後のバッファ位置（例えば先頭）程度の情報が共有されれればよい。
【００７２】
スキャナーＦＷとスキャン制御プログラムとの間では、さらに細かい設定値、つまり、ＨＷ設定レベルの設定値、各ページ（バンド）毎のバッファ位置、等が共有される。
【００７３】
また、スキャナー制御用コアでは、スキャナーＦＷおよびスキャン制御が動作するため、割り当てたコア（スキャナー制御用コア）の性能がより多く引き出され得る。
【００７４】
なお、ＭＦＰ１００の制御プログラムの中でも、ＡＭＰモードで制御されることが好ましいものもある。たとえば、圧縮されたスキャンデータを展開するエンジン制御プログラムは、バンド単位で処理が行なわれる場合、比較的高い頻度でスキャン制御プログラムから圧縮データを出力される。このことから、ＭＦＰ１００がバンド単位で画像データを処理する場合には、エンジン制御プログラムは、ＡＭＰモードで制御されるコアによって実行されることが好ましい。
【００７５】
つまり、このような場合、エンジン制御プログラムのスレッドは、単一のコアによって実行されることが好ましい。一方、ＭＦＰ１００がページ単位で画像データを処理する場合には、ＭＦＰ１００全体の処理効率向上の観点から、エンジン制御プログラムは、ＳＭＰモードで制御されるコアによって実行されることが好ましい。
【００７６】
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【００７７】
１００  ＭＦＰ、１０１  表示パネル、１０２  操作パネル、１０３，２１０  スキャナー部、１０４  プリンター部、１０５  ＦＡＸ部、１０６  ＮＩＣ、１０７  補助記憶装置、１０８  コネクター、１０９，２０１  ＲＯＭ、１１０，２０２  ＲＡＭ、１５０，２５０  コントローラー、１５５  スケジューラー、１５６  判別部、２００  スキャナー装置。
【図１】
2016103196.tif 000003
【図２】
2016103196.tif 000004
【図３】
2016103196.tif 000005
【図４】
2016103196.tif 000006
【図５】
2016103196.tif 000007
【図６】
2016103196.tif 000008