(57)【要約】【課題】コアにエラーが生じている場合であっても、プリント処理およびスキャン処理を実行しつつ、並行して他の処理を実行することができる画像形成装置を提供する。【解決手段】画像形成装置１００Ａは、コア１Ａ〜１Ｃにエラーが生じていない場合には、高優先スキャンタスク２１をコア１Ａに固定的に割り当て、高優先プリントタスク３１をコア１Ｂに固定的に割り当て、高優先スキャンタスク２１および高優先プリントタスク３１以外のタスクをコア１Ａ〜１Ｃのいずれかに任意に割り当て、コア１Ａ〜１Ｃのいずれかにエラーが生じている場合には、高優先スキャンタスク２１と，中優先スキャンタスク２４，３５，４６と、高優先プリントタスク３１と，中優先プリントタスク３３，３４，４１，４２とをエラーが生じていない共通のコア１Ａに固定的に割り当て、コア１Ａ以外のコアであってエラーが生じていない他のコア１Ｃに他のタスクを割り当てる。【選択図】図２
2016181868.tif 000002
【特許請求の範囲】
【請求項１】
画像読取部と、
プリントエンジンと、
３つ以上の複数のコアを含むマルチコアプロセッサーと、
タスクを前記複数のコアのいずれかに固定的または任意に割り当てることができ、タスクの優先度の順に各タスクを前記複数のコアのいずれかに実行させるためのスケジューラと、
前記複数のコアに生じるエラーを検出するための検出部とを備え、
前記タスクは、
前記画像読取部を制御するための第１スキャンタスクと、
前記第１スキャンタスクよりも優先度の低い第２スキャンタスクと、
前記プリントエンジンを制御するための第１プリントタスクと、
前記第１プリントタスクよりも優先度の低い第２プリントタスクと、
前記第２スキャンタスクおよび前記第２プリントタスクよりも優先度の低い他のタスクとを含み、
前記スケジューラは、
前記複数のコアにエラーが生じていない場合には、前記第１スキャンタスクを前記複数のコアの第１コアに固定的に割り当て、前記第１プリントタスクを前記複数のコアの第２コアに固定的に割り当て、前記第２スキャンタスクと前記第２プリントタスクと前記他のタスクとを前記複数のコアのいずれかに任意に割り当て、
前記複数のコアのいずれかにエラーが生じている場合には、前記第１、第２スキャンタスクと前記第１、第２プリントタスクとを前記エラーが生じていない共通のコアに固定的に割り当て、前記共通のコア以外のコアであって前記エラーが生じていない他のコアに前記他のタスクを割り当てる、画像形成装置。
【請求項２】
前記他のタスクは、前記複数のコアのいずれかにエラーが生じている場合に、前記他のコアに任意に割り当てられる、請求項１に記載の画像形成装置。
【請求項３】
前記スケジューラは、前記第１コアにエラーが生じている場合には、前記第１、第２スキャンタスクと前記第１、第２プリントタスクとを前記第２コアに固定的に割り当てる、請求項１または２に記載の画像形成装置。
【請求項４】
前記スケジューラは、前記第２コアにエラーが生じている場合には、前記第１、第２スキャンタスクと前記第１、第２プリントタスクとを前記第１コアに固定的に割り当てる、請求項１または２に記載の画像形成装置。
【請求項５】
前記スケジューラは、前記他のコアにエラーが生じている場合には、前記第１、第２スキャンタスクと前記第１、第２プリントタスクとを前記第１、第２コアのいずれか一方のコアに固定的に割り当て、前記他のタスクを他方のコアに割り当てる、請求項１または２に記載の画像形成装置。
【請求項６】
前記共通のコアは、前記第１、第２スキャンタスクと、前記第１、第２プリントタスクとのいずれか一方のタスクの実行完了後に、他方のタスクを実行する、請求項１〜５のいずれか１項に記載の画像形成装置。
【請求項７】
前記画像形成装置は、表示部をさらに備え、
前記他のタスクは、前記表示部の表示を制御するための表示タスクである、請求項１〜６のいずれか１項に記載の画像形成装置。
【請求項８】
画像形成装置の制御方法であって、
前記画像形成装置は、
画像読取部と、
プリントエンジンと、
３つ以上の複数のコアを含むマルチコアプロセッサーと、
タスクを前記複数のコアのいずれかに固定的または任意に割り当てることができ、タスクの優先度の順に各タスクを前記複数のコアのいずれかに実行させるためのスケジューラとを備え、
前記タスクは、
前記画像読取部を制御するための第１スキャンタスクと、
前記第１スキャンタスクよりも優先度の低い第２スキャンタスクと、
前記プリントエンジンを制御するための第１プリントタスクと、
前記第１プリントタスクよりも優先度の低い第２プリントタスクと、
前記第２スキャンタスクおよび前記第２プリントタスクよりも優先度の低い他のタスクとを含み、
前記制御方法は、
前記複数のコアに生じるエラーを検出するステップと、
前記複数のコアにエラーが生じていない場合には、前記第１スキャンタスクを前記複数のコアの第１コアに固定的に割り当て、前記第１プリントタスクを前記複数のコアの第２コアに固定的に割り当て、前記第２スキャンタスクと前記第２プリントタスクと前記他のタスクとを前記複数のコアのいずれかに任意に割り当てるステップと、
前記複数のコアのいずれかにエラーが生じている場合には、前記第１、第２スキャンタスクと前記第１、第２プリントタスクとを前記エラーが生じていない共通のコアに固定的に割り当て、前記共通のコア以外のコアであって前記エラーが生じていない他のコアに前記他のタスクを割り当てるステップとを備える、制御方法。
【請求項９】
画像形成装置の制御プログラムであって、
前記画像形成装置は、
画像読取部と、
プリントエンジンと、
３つ以上の複数のコアを含むマルチコアプロセッサーと、
タスクを前記複数のコアのいずれかに固定的または任意に割り当てることができ、タスクの優先度の順に各タスクを前記複数のコアのいずれかに実行させるためのスケジューラとを備え、
前記タスクは、
前記画像読取部を制御するための第１スキャンタスクと、
前記第１スキャンタスクよりも優先度の低い第２スキャンタスクと、
前記プリントエンジンを制御するための第１プリントタスクと、
前記第１プリントタスクよりも優先度の低い第２プリントタスクと、
前記第２スキャンタスクおよび前記第２プリントタスクよりも優先度の低い他のタスクとを含み、
前記制御プログラムは、前記画像形成装置に、
前記複数のコアに生じるエラーを検出するステップと、
前記複数のコアにエラーが生じていない場合には、前記第１スキャンタスクを前記複数のコアの第１コアに固定的に割り当て、前記第１プリントタスクを前記複数のコアの第２コアに固定的に割り当て、前記第２スキャンタスクと前記第２プリントタスクと前記他のタスクとを前記複数のコアのいずれかに任意に割り当てるステップと、
前記複数のコアのいずれかにエラーが生じている場合には、前記第１、第２スキャンタスクと前記第１、第２プリントタスクとを前記エラーが生じていない共通のコアに固定的に割り当て、前記共通のコア以外のコアであって前記エラーが生じていない他のコアに前記他のタスクを割り当てるステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像形成装置の制御に関し、特に、マルチコアプロセッサーを備える画像形成装置の制御に関する。
【背景技術】
【０００２】
近年、マルチコアプロセッサーを備える画像処理装置が普及している。マルチコアプロセッサーの各コアに画像形成装置のタスクを割り当てる方法として、タスクを特定のコアに固定的に割り当てる非対称型マルチプロセッシング（ＡＭＰ：Asymmetrical  Multi-Processing）と、タスクを各コアに任意に割り当てる対象型マルチプロセッシング（ＳＭＰ：Symmetric  Multi-Processing）とがある。
【０００３】
ＡＭＰやＳＭＰ等を利用したタスクのスケジューリング方法に関し、特開２０１４−９６０２４号公報（特許文献１）は、「メニーコアプロセッサにおいてＳＭＰモデルを実現してスループットを向上するとともに、高優先度のスレッドの実行時間を保証してリアルタイム性を確保することができる」マルチコアプロセッサーを開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−９６０２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＭＦＰ（Multi-Functional  Peripheral）等の画像形成装置は、スキャナーやプリントエンジン等を備える。スキャン処理およびプリント処理は、画像形成装置においては特に重要であるので、他の処理よりも優先される。スキャン処理および印刷処理が遅延すると、ユーザーは、操作性に不快を感じるためである。このことを解決するために、画像形成装置は、スキャナーを制御するためのスキャンタスクと、プリントエンジンを制御するためのプリントタスクとをマルチコアプロセッサーの互いに異なるコアにそれぞれ固定的に割り当てることがある。これにより、スキャンタスクおよびプリントタスクが安定的に実行される。
【０００６】
コアのいずれかにエラーが生じている場合には、画像形成装置は、スキャンタスクおよびプリントタスクを各コアに割り当て直す。タスクの割り当て方によっては、スキャンタスクおよびプリントタスクが優先的に実行され、優先度の低い他のタスク（たとえば、表示タスク等）が実行されない可能性がある。そのため、他の処理が実行されないことに対して、ユーザーは、操作性に不快を感じる可能性がある。
【０００７】
特許文献１は、コアにエラーが生じている場合に各タスクを各コアに割り当て直すことについては開示していない。したがって、コアにエラーが生じている場合に、各タスクを各コアに適切に割り当て直すことができる画像形成装置が望まれている。
【０００８】
本開示は上述のような問題点を解決するためになされたものであって、その目的は、コアにエラーが生じている場合であっても、プリント処理およびスキャン処理を実行しつつ、並行して他の処理を実行することができる画像形成装置を提供することである。他の局面における目的は、コアにエラーが生じている場合であっても、プリント処理およびスキャン処理を実行しつつ、並行して他の処理を実行することができる画像形成装置の制御方法を提供することである。さらに他の局面における目的は、コアにエラーが生じている場合であっても、プリント処理およびスキャン処理を実行しつつ、並行して他の処理を実行することができる画像形成装置の制御プログラムを提供することである。
【課題を解決するための手段】
【０００９】
ある局面に従うと、画像形成装置は、画像読取部と、プリントエンジンと、３つ以上の複数のコアを含むマルチコアプロセッサーと、タスクを複数のコアのいずれかに固定的または任意に割り当てることができ、タスクの優先度の順に各タスクを複数のコアのいずれかに実行させるためのスケジューラと、複数のコアに生じるエラーを検出するための検出部とを備える。タスクは、画像読取部を制御するための第１スキャンタスクと、第１スキャンタスクよりも優先度の低い第２スキャンタスクと、プリントエンジンを制御するための第１プリントタスクと、第１プリントタスクよりも優先度の低い第２プリントタスクと、第２スキャンタスクおよび第２プリントタスクよりも優先度の低い他のタスクとを含む。スケジューラは、複数のコアにエラーが生じていない場合には、第１スキャンタスクを複数のコアの第１コアに固定的に割り当て、第１プリントタスクを複数のコアの第２コアに固定的に割り当て、第２スキャンタスクと第２プリントタスクと他のタスクとを複数のコアのいずれかに任意に割り当て、複数のコアのいずれかにエラーが生じている場合には、第１、第２スキャンタスクと第１、第２プリントタスクとをエラーが生じていない共通のコアに固定的に割り当て、共通のコア以外のコアであってエラーが生じていない他のコアに他のタスクを割り当てる。
【００１０】
好ましくは、他のタスクは、複数のコアのいずれかにエラーが生じている場合に、他のコアに任意に割り当てられる。
【００１１】
好ましくは、スケジューラは、第１コアにエラーが生じている場合には、第１、第２スキャンタスクと第１、第２プリントタスクとを第２コアに固定的に割り当てる。
【００１２】
好ましくは、スケジューラは、第２コアにエラーが生じている場合には、第１、第２スキャンタスクと第１、第２プリントタスクとを第１コアに固定的に割り当てる。
【００１３】
好ましくは、スケジューラは、他のコアにエラーが生じている場合には、第１、第２スキャンタスクと第１、第２プリントタスクとを第１、第２コアのいずれか一方のコアに固定的に割り当て、他のタスクを他方のコアに割り当てる。
【００１４】
好ましくは、共通のコアは、第１、第２スキャンタスクと、第１、第２プリントタスクとのいずれか一方のタスクの実行完了後に、他方のタスクを実行する。
【００１５】
好ましくは、画像形成装置は、表示部をさらに備える。他のタスクは、表示部の表示を制御するための表示タスクである。
【００１６】
他の局面に従うと、画像形成装置の制御方法が提供される。画像形成装置は、画像読取部と、プリントエンジンと、３つ以上の複数のコアを含むマルチコアプロセッサーと、タスクを複数のコアのいずれかに固定的または任意に割り当てることができ、タスクの優先度の順に各タスクを複数のコアのいずれかに実行させるためのスケジューラとを備える。タスクは、画像読取部を制御するための第１スキャンタスクと、第１スキャンタスクよりも優先度の低い第２スキャンタスクと、プリントエンジンを制御するための第１プリントタスクと、第１プリントタスクよりも優先度の低い第２プリントタスクと、第２スキャンタスクおよび第２プリントタスクよりも優先度の低い他のタスクとを含む。制御方法は、複数のコアに生じるエラーを検出するステップと、複数のコアにエラーが生じていない場合には、第１スキャンタスクを複数のコアの第１コアに固定的に割り当て、第１プリントタスクを複数のコアの第２コアに固定的に割り当て、第２スキャンタスクと第２プリントタスクと他のタスクとを複数のコアのいずれかに任意に割り当てるステップと、複数のコアのいずれかにエラーが生じている場合には、第１、第２スキャンタスクと第１、第２プリントタスクとをエラーが生じていない共通のコアに固定的に割り当て、共通のコア以外のコアであってエラーが生じていない他のコアに他のタスクを割り当てるステップとを備える。
【００１７】
さらに他の局面に従うと、画像形成装置の制御プログラムが提供される。画像形成装置は、画像読取部と、プリントエンジンと、３つ以上の複数のコアを含むマルチコアプロセッサーと、タスクを複数のコアのいずれかに固定的または任意に割り当てることができ、タスクの優先度の順に各タスクを複数のコアのいずれかに実行させるためのスケジューラとを備える。タスクは、画像読取部を制御するための第１スキャンタスクと、第１スキャンタスクよりも優先度の低い第２スキャンタスクと、プリントエンジンを制御するための第１プリントタスクと、第１プリントタスクよりも優先度の低い第２プリントタスクと、第２スキャンタスクおよび第２プリントタスクよりも優先度の低い他のタスクとを含む。制御プログラムは、画像形成装置に、複数のコアに生じるエラーを検出するステップと、複数のコアにエラーが生じていない場合には、第１スキャンタスクを複数のコアの第１コアに固定的に割り当て、第１プリントタスクを複数のコアの第２コアに固定的に割り当て、第２スキャンタスクと第２プリントタスクと他のタスクとを複数のコアのいずれかに任意に割り当てるステップと、複数のコアのいずれかにエラーが生じている場合には、第１、第２スキャンタスクと第１、第２プリントタスクとをエラーが生じていない共通のコアに固定的に割り当て、共通のコア以外のコアであってエラーが生じていない他のコアに他のタスクを割り当てるステップとを実行させる。
【発明の効果】
【００１８】
ある局面において、他の局面における目的は、コアにエラーが生じている場合であっても、プリント処理およびスキャン処理を実行しつつ、並行して他の処理を実行することができる。
【００１９】
本発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００２０】
【図１】実施の形態に従う画像形成装置の外観を示す図である。
【図２】実施の形態に従う画像形成装置のタスク割り当て処理を概略的に示した概念図である。
【図３】比較例に従う画像形成装置のタスク割り当て処理を概略的に示した概念図である。
【図４】実施の形態に従う画像形成装置の機能構成の一例を示すブロック図である。
【図５】実施の形態に従う画像形成装置のタスク割り当て処理を示すフローチャートである。
【図６】実施の形態に従う画像形成装置のタスク実行処理を示すフローチャートである。
【図７】スキャンタスク群とプリントタスク群とを並列処理するときにおける、ＣＰＵと、コアと、画像読取部と、プリントエンジンとの間のデータフローを時系列に示したシーケンス図である。
【図８】スキャンタスク群とプリントタスク群とを順次処理するときにおける、ＣＰＵと、コアと、画像読取部と、プリントエンジンとの間のデータフローを時系列に示したシーケンス図である。
【図９】実施の形態に従う画像形成装置の主要なハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。また、以下で説明する各実施の形態または変形例は、適宜選択的に組み合わされてもよい。
【００２２】
［画像形成装置１００Ａの外観］
図１を参照して、実施の形態に従う画像形成装置１００Ａについて説明する。図１は、ＭＦＰとして構成される画像形成装置１００Ａの外観を示す図である。
【００２３】
ＭＦＰとしての画像形成装置１００Ａには、スキャン機能およびプリント機能等が搭載されている。図１に示されるように、画像形成装置１００Ａは、操作部６と、表示部７と、自動原稿搬送部（ＡＤＦ：Automatic  Document  Feeder）８と、スキャナーとしての画像読取部９と、プリントエンジン１０とを備える。
【００２４】
操作部６および表示部７は、操作パネルとして構成される。すなわち、操作部６は、表示部７に対するタッチ操作を受け付ける。たとえば、操作部６がスキャンの開始操作をユーザーから受け付けると、自動原稿搬送部８は、セットされている原稿を順次画像読取部９に送る。画像読取部９は、自動原稿搬送部８から送られてくる原稿を順次スキャンし、当該原稿の画像データを生成する。プリントエンジン１０は、たとえば電子写真方式により、画像読取部９で読み取られた原稿や、外部装置から送信されたプリントデータを、印刷のためのデータに変換し、変換後のデータに基づいて文書等の画像を印刷する。
【００２５】
［画像形成装置１００Ａの割り当て処理］
図２および図３を参照して、画像形成装置１００Ａのタスク割り当て処理について説明する。図２は、画像形成装置１００Ａのタスク割り当て処理を概略的に示した概念図である。
【００２６】
図２には、画像形成装置１００Ａに備えられるＣＰＵ（Central  Processing  Unit）１が示されている。ＣＰＵ１は、少なくとも３つ以上のコア１Ａ〜１Ｃを有するマルチコアプロセッサーである。画像形成装置１００Ａは、コア１Ａ〜１Ｃの各コアにタスクを割り当てる。
【００２７】
コア１Ａ〜１Ｃの各々は、割り当てられた各タスクを、各タスクに予め関連付けられている優先度の順に実行する。あるいは、コア１Ａ〜１Ｃの各々は、各タスクに割り当てるリソースの割り合いを優先度の順に高くする。
【００２８】
コア１Ａ〜１Ｃに実行されるタスクは、たとえば、画像読取部９（図１参照）が動作する時に実行される高優先スキャンタスク２１と、高優先スキャンタスク２１よりも優先度の低い中優先スキャンタスク２４，３５，４６とを含む。一例として、高優先スキャンタスク２１は、画像読取部９を制御するためのタスクを含む。中優先スキャンタスク２４，３５，４６は、たとえば、読み取った原稿を画像データに変換するためのスキャン画像変換タスクや、画像データを他の装置に送信するための送信タスクを含む。以下では、スキャン関連のタスクを総称して「スキャンタスク群」ともいう。
【００２９】
他にも、コア１Ａ〜１Ｃに実行されるタスクは、プリントエンジン１０が動作する時に実行される高優先プリントタスク３１と、高優先プリントタスク３１よりも優先度の低い中優先プリントタスク３３，３４，４１，４２を含む。一例として、高優先プリントタスク３１は、プリントエンジン１０を制御するためのタスクを含む。中優先プリントタスク３３，３４，４１，４２は、たとえば、画像処理タスクやＲＩＰ（Raster  Image  Processor）処理タスクを含む。画像処理タスクは、スキャンされたデータを印刷のための画像データに変換するタスクである。ＲＩＰ処理タスクは、プリントデータであるＰＤＬ（Printer  Description  Language）をビットマップ形式に変換するタスクである。以下では、プリント関連のタスクを総称して「プリントタスク群」ともいう。
【００３０】
他にも、コア１Ａ〜１Ｃに実行されるタスクは、中優先スキャンタスクおよび中優先プリントタスクよりも優先度の低い他のタスクを含む。一例として、当該他のタスクは、表示部７（図１参照）の表示を制御するための低優先ＵＩ（User  Interface）タスク２３，２５，４５、画像形成装置１００Ａのユーザーを認証するための低優先認証タスク２２，３２、アプリケーションを管理するための低優先アプリ管理タスク４３，４４等を含む。以下では、スキャンタスク群およびプリントタスク群以外の低優先度のタスクを総称して「低優先度タスク群」ともいう。
【００３１】
画像形成装置１００Ａは、コア１Ａ〜１Ｃのいずれかに各タスクを固定的または任意に割り当てることができる。高優先スキャンタスク２１および高優先プリントタスク３１は、図２のコア状態（Ａ）に示されるように、他のタスクよりも確実に実行されるように異なるコアに固定的に割り当てられる。これにより、スキャンタスクおよびプリントタスクが安定的に実行される。高優先スキャンタスク２１および高優先プリントタスク３１以外のタスクは、コア１Ａ〜１Ｃのいずれかに任意に割り当てられる。
【００３２】
図２のコア状態（Ｂ）に示されるように、コア１Ａ〜１Ｃのいずれかにエラーが生じると、画像形成装置１００Ａは、各タスクを割り当て直す。このとき、画像形成装置１００Ａは、高優先度タスクまたは中優先度タスクによって低優先度タスクの実行が阻害されないように各タスクを割り当て直す。たとえば、コア１Ｂにエラーが生じているとする。この場合、画像形成装置１００Ａは、スキャンタスク群とプリントタスク群とをエラーが生じていない共通のコア１Ａに固定的に割り当てる。画像形成装置１００Ａは、共通のコア１Ａ以外のコアであってエラーが生じていないコア１Ｃに低優先度タスク群を割り当てる。
【００３３】
図３を参照して、このことによる効果について説明する。図３は、比較例に従う画像形成装置１００Ｘのタスク割り当て処理を概略的に示した概念図である。
【００３４】
比較例に従う画像形成装置１００Ｘは、コア１Ｂにエラーが生じた後に、高優先スキャンタスク２１をコア１Ａに割り当て、高優先プリントタスク３１をコア１Ｃに割り当てるとする。その場合、コア１Ａは、高優先スキャンタスク２１を他のタスクよりも優先する。コア１Ｃは、高優先プリントタスク３１を他のタスクよりも優先する。そのため、中優先タスクや低優先タスクについては、実行が阻害されてしまう。その結果、ユーザー操作に関わるタッチ操作や表示の切り替えのパフォーマンスが低下する。このことは、操作性においてユーザーに不快を与える。
【００３５】
本実施の形態に従う画像形成装置１００Ａは、スキャンタスク群とプリントタスク群とを共通のコアに固定的に割り当て直し、低優先度タスク群を他のコアに割り当て直す。これにより、画像形成装置１００Ａは、コアにエラーが生じた場合であっても、プリント処理およびスキャン処理を実行しつつ、並行してＵＩ処理等の他の処理を実行することができる。その結果、ユーザーは、コアにエラーが生じているときでも、不快を感じることなく画像形成装置１００Ａを操作することができる。
【００３６】
なお、図２においては、画像形成装置１００Ａがスキャンタスク群とプリントタスク群とを共通のコアに割り当てる例について説明を行なったが、共通のコアに割り当てられるタスクは、高優先度のタスクであれば任意である。また、共通のコアに割り当てられるタスクは、コアの占有時間が長いタスクであってもよい。
【００３７】
［画像形成装置１００Ａの機能構成］
図４を参照して、画像形成装置１００Ａの機能について説明する。図４は、画像形成装置１００Ａの機能構成の一例を示すブロック図である。図４に示されるように、画像形成装置１００ＡのＣＰＵ１は、検出部１１０と、スケジューラ１２０とを含む。
【００３８】
検出部１１０は、ＣＰＵ１のコア１Ａ〜１Ｃに生じるエラーを検出する。たとえば、検出部１１０は、コア１Ａ〜１Ｃのそれぞれに信号を送信し、当該信号に対する応答を各コアから受けたときに各コアが正常であると判断する。一方で、検出部１１０は、当該信号を送信してから一定時間の間に各コアから応答を受けないときに各コアにエラーが生じていると判断する。あるいは、検出部１１０は、故障時等に各コアから出力されるエラー信号を受けて、各コアにエラーが生じていると判断してもよい。検出部１１０は、各コアにエラーが生じているか否かを示す情報をスケジューラ１２０に出力する。
【００３９】
スケジューラ１２０は、タスクをコア１Ａ〜１Ｃのいずれかに固定的または任意に割り当てることができ、タスクの優先度の順に各タスクをコア１Ａ〜１Ｃのいずれかに実行させる。
【００４０】
より具体的には、スケジューラ１２０は、コア１Ａ〜１Ｃにエラーが生じていない場合おいて、画像読取部９（図１参照）およびプリントエンジン１０（図１参照）が動作中であるときには、高優先スキャンタスクをコア１Ａに固定的に割り当て、高優先プリントタスクをコア１Ｂに固定的に割り当て、中優先スキャンタスク、中優先プリントタスク、およびその他のタスクをコア１Ａ〜１Ｃに任意に割り当てる。スケジューラ１２０は、コア１Ａ〜１Ｃにエラーが生じている場合において、画像読取部９およびプリントエンジン１０が動作中であるときには、スキャンタスク群およびプリントタスク群をエラーが生じていない共通のコアに固定的に割り当て、当該共通のコア以外のコアであってエラーが生じていない他のコアに低優先タスク群を割り当てる。
【００４１】
好ましくは、コア１Ａ〜１Ｃのいずれかにエラーが生じている場合に、当該低優先タスク群は、上記共通のコア以外のコアであってエラーが生じていない他のコアに任意に割り当てられる。
【００４２】
スケジューラ１２０は、コア１Ａにエラーが生じている場合には、スキャンタスク群とプリントタスク群とをコア１Ｂに固定的に割り当てる。また、スケジューラ１２０は、コア１Ｂにエラーが生じている場合には、スキャンタスク群とプリントタスク群とをコア１Ａに固定的に割り当てる。また、スケジューラ１２０は、コア１Ａにエラーが生じている場合には、スキャンタスク群とプリントタスク群とをコア１Ａおよびコア１Ｂのいずれか一方のコアに割り当て、低優先度タスク群を他方のコアに割り当てる。
【００４３】
一例として、スケジューラ１２０は、タスクと、当該タスクの優先度と、当該タスクの割り当て先のコアとを互いに関連付けているタスクテーブルを参照して、各タスクの割り当て先を決定する。各コアに任意に割り当てられるタスクについては、タスクテーブルの割り当て先には何も規定されない。一方で、各コアに固定的に割り当てられるタスクについては、タスクテーブルの割り当て先にコアを特定するための情報が規定される。スケジューラ１２０は、タスクの実行時にタスクテーブルを参照し、タスクテーブルに規定されているタスクの中から実行タスクと一致するタスクを選択し、当該タスクに関連付けられている割り当て先に実行タスクを割り当てる。
【００４４】
［画像形成装置１００Ａの制御構造］
図５および図６を参照して、画像形成装置１００Ａの制御構造について説明する。図５は、画像形成装置１００Ａのタスク割り当て処理を示すフローチャートである。図６は、画像形成装置１００Ａのタスク実行処理を示すフローチャートである。
【００４５】
図５および図６の処理は、画像形成装置１００ＡのＣＰＵ１がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。以下では、タスク割り当て処理とタスク実行処理とについて順に説明する。
【００４６】
（タスク割り当て処理）
図５を参照して、ステップＳ５０において、ＣＰＵ１は、上述の検出部１１０（図４参照）として、ＣＰＵ１に備えられている各コアの状態を確認する。ＣＰＵ１は、エラーが生じているコアの数を検出する。
【００４７】
ステップＳ５２において、ＣＰＵ１は、エラーが生じているコアの数に応じて処理を切り替える。エラーが生じていない場合（ステップＳ５２において「０個」）、ＣＰＵ１は、制御をステップＳ６０に切り替える。エラーが生じているコア数が１個である場合（ステップＳ５２において「１個」）、ＣＰＵ１は、制御をステップＳ１０３に切り替える。エラーが生じているコア数が２個以上である場合（ステップＳ５２において「２個」）、ＣＰＵ１は、制御をステップＳ１２０に切り替える。
【００４８】
ステップＳ６０において、ＣＰＵ１は、上述のスケジューラ１２０（図４参照）として、高優先スキャンタスク２１（図２参照）をコアに固定的に割り当てる。ステップＳ６１において、ＣＰＵ１は、高優先スキャンタスク２１とは別のコアに高優先プリントタスク３１（図２参照）を固定的に割り当てる。ステップＳ６２において、ＣＰＵ１は、スケジューラ１２０として、画像形成装置１００Ａの処理モードを、スキャンタスク群とプリントタスク群とを各コアに並列に実行させる並列処理モードに設定する。
【００４９】
ステップＳ１０３において、ＣＰＵ１は、スケジューラ１２０として、スキャンタスク群と、プリントタスク群とを正常である共通のコアに割り当てる。スキャンタスク群は、高優先スキャンタスク２１と、中優先スキャンタスク２４，３５，４６（図２参照）とを含む。プリント関連のタスク群は、高優先プリントタスク３１と、中優先プリントタスク３３，３４，４１，４２（図２参照）とを含む。
【００５０】
ステップＳ１０４において、ＣＰＵ１は、スキャンタスク群とプリントタスク群とをステップＳ１０３で割り当てたコアに固定する。ステップＳ１０５において、ＣＰＵ１は、画像形成装置１００Ａの処理モードを、スキャンタスク群とプリントタスク群とを順次実行する順次処理モードに設定する。
【００５１】
ステップＳ１２０において、ＣＰＵ１は、画像形成装置１００Ａを動作させることができないことを示す異常メッセージを表示部７（図１参照）に表示する。
【００５２】
（タスク実行処理）
次に、図６を参照して、画像形成装置１００Ａのタスク実行処理について順に説明する。
【００５３】
ステップＳ２０１において、ＣＰＵ１は、画像形成装置１００Ａの処理モードに応じて処理を切り替える。画像形成装置１００Ａの処理モードは、スキャン関連タスクとプリント関連タスクとを各コアに並列に実行させる並列処理モードと、スキャンタスク群とプリントタスク群とを順次実行する順次処理モードとを有する。
【００５４】
ＣＰＵ１は、画像形成装置１００Ａの現在の処理モードが並列処理モードであると判断した場合（ステップＳ２０１においてＹＥＳ）、制御をステップＳ２０２に切り替える。ＣＰＵ１は、画像形成装置１００Ａの現在の処理モードが順次処理モードであると判断した場合（ステップＳ２０１においてＮＯ）、制御をステップＳ２０４に切り替える。
【００５５】
ステップＳ２０２において、ＣＰＵ１は、スキャンタスク群を実行する。ステップＳ２０３において、プリントタスク群を実行する。ステップＳ２０２における処理とステップＳ２０３における処理とは、並列に実行される。
【００５６】
ステップＳ２０４において、ＣＰＵ１は、プリントタスク群の実行を禁止する命令を各コアに出力する。ステップＳ２０５において、ＣＰＵ１は、画像形成装置１００Ａがプリント処理中であるか否かを判断する。ＣＰＵ１は、画像形成装置１００Ａがプリント処理中であると判断した場合（ステップＳ２０５においてＹＥＳ）、制御をステップＳ２０６に切り替える。そうでない場合には（ステップＳ２０５においてＮＯ）、ＣＰＵ１は、制御をステップＳ２０７に切り替える。
【００５７】
ステップＳ２０６において、ＣＰＵ１は、一定時間（たとえば、１秒）待つ。ステップＳ２０７において、ＣＰＵ１は、スキャンタスク群の実行を開始する命令を各コアに出力する。これにより、スキャン処理が開始される。
【００５８】
ステップＳ２０８において、ＣＰＵ１は、画像形成装置１００Ａがスキャン処理中であるか否かを判断する。ＣＰＵ１は、画像形成装置１００Ａがスキャン処理中であると判断した場合（ステップＳ２０８においてＹＥＳ）、制御をステップＳ２０９に切り替える。そうでない場合には（ステップＳ２０８においてＮＯ）、ＣＰＵ１は、制御をステップＳ２１０に切り替える。
【００５９】
ステップＳ２０９において、ＣＰＵ１は、一定時間（たとえば、１秒）待つ。ステップＳ２１０において、ＣＰＵ１は、プリントタスク群の実行を開始する命令を各コアに出力する。これにより、プリント処理が開始される。
【００６０】
［画像形成装置１００Ａのデータフロー］
（並列処理）
図７を参照して、処理モードが並列処理モードである場合における画像形成装置１００Ａのデータフローについて説明する。図７は、スキャンタスク群とプリントタスク群とを並列処理するときにおける、ＣＰＵ１と、コア１Ａ〜１Ｃと、画像読取部９と、プリントエンジン１０との間のデータフローを時系列に示したシーケンス図である。
【００６１】
ステップＳ３００において、ＣＰＵ１は、スキャンタスク群の実行を開始するための命令をコア１Ａ〜１Ｃに出力する。ステップＳ３０２において、ＣＰＵ１は、プリントタスク群の実行を開始するための命令をコア１Ａ〜１Ｃに出力する。ステップＳ３０４は、スキャンタスク群は、画像読取部９にスキャンを開始するための命令を出力する。
【００６２】
ステップＳ３１０において、画像読取部９は、原稿をスキャンし、当該原稿の画像データを生成する。画像読取部９は、生成した画像データをスキャンタスク群に出力する。ステップＳ３１１において、スキャンタスク群は、生成された画像データに対して画像補正等の画像処理を実行する。スキャンタスク群は、画像処理後の画像データをＲＯＭ（Read  Only  Memory）２等のストレージにバッファリングする。
【００６３】
ステップＳ３１４において、プリントタスク群は、バッファリングされている画像データをＲＯＭ２から取得する。ステップＳ３１５において、プリントタスク群は、当該画像データを印刷のためのデータに変換する。ステップＳ３１６において、プリントタスク群は、変換後の画像データをプリントエンジン１０に出力する。
【００６４】
ステップＳ３２０において、画像読取部９は、新たな原稿をスキャンし、当該新たな原稿の画像データを生成する。画像読取部９は、生成した画像データをスキャンタスク群に出力する。ステップＳ３２１において、スキャンタスク群は、生成された画像データに対して画像補正等の画像処理を実行する。スキャンタスク群は、画像処理後の画像データをＲＯＭ２等のストレージにバッファリングする。
【００６５】
ステップＳ３２４において、プリントタスク群は、バッファリングされている画像データをＲＯＭ２から取得する。ステップＳ３２５において、プリントタスク群は、当該画像データを印刷のためのデータに変換する。ステップＳ３２６において、プリントタスク群は、変換後の画像データをプリントエンジン１０に出力する。
【００６６】
ステップＳ３３０において、画像読取部９は、新たな原稿をスキャンし、当該新たな原稿の画像データを生成する。画像読取部９は、生成した画像データをスキャンタスク群に出力する。ステップＳ３３１において、スキャンタスク群は、生成された画像データに対して画像補正等の画像処理を実行する。スキャンタスク群は、画像処理後の画像データをＲＯＭ２等のストレージにバッファリングする。
【００６７】
ステップＳ３３４において、プリントタスク群は、バッファリングされている画像データをＲＯＭ２から取得する。ステップＳ３３５において、プリントタスク群は、当該画像データを印刷のためのデータに変換する。ステップＳ３３６において、プリントタスク群は、変換後の画像データをプリントエンジン１０に出力する。
【００６８】
ステップＳ３４０において、画像読取部９は、スキャン処理を完了したことを示す信号をスキャンタスク群に出力する。
【００６９】
（順次処理）
図８を参照して、処理モードが順次処理モードである場合における画像形成装置１００Ａのデータフローについて説明する。図８は、スキャンタスク群とプリントタスク群とを順次処理するときにおける、ＣＰＵ１と、コア１Ａと、画像読取部９と、プリントエンジン１０との間のデータフローを時系列に示したシーケンス図である。なお、以下では、コア１Ｂにエラーが生じており、スキャンタスク群およびプリントタスク群が共通のコア１Ａに割り当てられている前提で説明を行なう。
【００７０】
ステップＳ４００において、ＣＰＵ１は、プリントタスク群の実行を禁止する命令をコア１Ａに送る。ステップＳ４０２において、ＣＰＵ１は、スキャンタスク群の実行を開始する命令をコア１Ａに送る。ステップＳ４０４は、スキャンタスク群は、画像読取部９にスキャンを開始するための命令を出力する。
【００７１】
ステップＳ４１０において、画像読取部９は、原稿をスキャンし、当該原稿の画像データを生成する。画像読取部９は、生成した画像データをスキャンタスク群に出力する。ステップＳ４１１において、スキャンタスク群は、生成された画像データに対して画像補正等の画像処理を実行する。ステップＳ４１２において、スキャンタスク群は、画像処理後の画像データをＲＯＭ２等のストレージにバッファリングする。
【００７２】
ステップＳ４２０において、画像読取部９は、新たな原稿をスキャンし、当該原稿の画像データを生成する。画像読取部９は、生成した画像データをスキャンタスク群に出力する。ステップＳ４２１において、スキャンタスク群は、生成された画像データに対して画像補正等の画像処理を実行する。ステップＳ４２２において、スキャンタスク群は、画像処理後の画像データをＲＯＭ２等のストレージにバッファリングする。
【００７３】
ステップＳ４３０において、画像読取部９は、新たな原稿をスキャンし、当該原稿の画像データを生成する。画像読取部９は、生成した画像データをスキャンタスク群に出力する。ステップＳ４３１において、スキャンタスク群は、生成された画像データに対して画像補正等の画像処理を実行する。ステップＳ４３２において、スキャンタスク群は、画像処理後の画像データをＲＯＭ２等のストレージにバッファリングする。
【００７４】
ステップＳ４４０において、画像読取部９は、スキャン処理を完了したことを示す信号をスキャンタスク群に出力する。ステップＳ４５０において、ＣＰＵ１は、プリントタスク群の実行を開始する命令をコア１Ａに送る。
【００７５】
ステップＳ４６０において、プリントタスク群は、バッファリングされている画像データをＲＯＭ２から取得する。ステップＳ４６１において、プリントタスク群は、当該画像データを印刷のためのデータに変換する。ステップＳ４６２において、プリントタスク群は、変換後の画像データをプリントエンジン１０に出力する。
【００７６】
ステップＳ４７０において、プリントタスク群は、バッファリングされている新たな画像データをＲＯＭ２から取得する。ステップＳ４７１において、プリントタスク群は、当該画像データを印刷のためのデータに変換する。ステップＳ４７２において、プリントタスク群は、変換後の画像データをプリントエンジン１０に出力する。
【００７７】
ステップＳ４８０において、プリントタスク群は、バッファリングされている新たな画像データをＲＯＭ２から取得する。ステップＳ４８１において、プリントタスク群は、当該画像データを印刷のためのデータに変換する。ステップＳ４８２において、プリントタスク群は、変換後の画像データをプリントエンジン１０に出力する。
【００７８】
以上のように、画像形成装置１００Ａの処理モードが順次処理モードである場合には、コア１Ａは、スキャンタスク群の実行完了後にプリントタスク群を実行する。なお、コア１Ａは、プリントタスク群の実行完了後にスキャンタスク群を実行してもよい。すなわち、コア１Ａは、スキャンタスク群およびプリントタスク群のいずれか一方のタスク群の実行完了後に、他方のタスク群を実行する。
【００７９】
［画像形成装置１００Ａのハードウェア構造］
図９を参照して、画像形成装置１００Ａのハードウェア構成の一例について説明する。図９は、画像形成装置１００Ａの主要なハードウェア構成を示すブロック図である。
【００８０】
図９に示されるように、画像形成装置１００Ａは、ＣＰＵ（Central  Processing  Unit）１と、ＲＯＭ２と、ＲＡＭ（Random  Access  Memory）３と、不揮発性メモリ４と、ネットワークＩ／Ｆ（インタフェース）５と、操作部６と、表示部７と、自動原稿搬送部（ＡＤＦ：Automatic  Document  Feeder）８と、画像読取部９と、プリントエンジン１０と、記憶装置２０とを備える。記憶装置２０は、本実施の形態に従う制御プログラム２０Ａを格納している。
【００８１】
ＣＰＵ１は、制御プログラム２０Ａ等の各種プログラムを実行することで、画像形成装置１００Ａの動作を制御する。ＲＯＭ２は、ＣＰＵ１によって実行される各種プログラムを格納する。ＲＯＭ２は、ワーキングメモリとして機能し、制御プログラム２０Ａ等の各種プログラムの実行に必要な各種データを一時的に格納する。
【００８２】
ネットワークＩ／Ｆ５には、アンテナ等が接続される。画像形成装置１００Ａは、当該アンテナを介して、他の通信機器との間でデータをやり取りする。他の通信機器は、たとえば、スマートフォン等の携帯通信端末、サーバー等を含む。画像形成装置１００Ａは、制御プログラム２０Ａを、アンテナを介してサーバーからダウンロードできるように構成されてもよい。
【００８３】
操作部６および表示部７は、操作パネルとして構成される。すなわち、操作部６は、表示部７に対するタッチ操作を受け付ける。操作部６がスキャンの開始操作をユーザーから受け付けると、自動原稿搬送部８は、セットされている原稿を順次画像読取部９に送る。画像読取部９は、自動原稿搬送部８から送られてくる原稿を順次スキャンし、当該原稿の画像データを生成する。プリントエンジン１０は、たとえば電子写真方式により、画像読取部９で読み取られた原稿や、外部装置から送信されたプリントデータを、印刷のためのデータに変換し、変換後のデータに基づいて文書等の画像を印刷する。
【００８４】
記憶装置２０は、たとえば、ハードディスクや外付けの記憶装置等の記憶媒体である。記憶装置２０は、一例として、本実施の形態に従う制御処理を実現するための制御プログラム２０Ａを格納する。
【００８５】
なお、制御プログラム２０Ａは、ＲＯＭ２または不揮発性メモリ４に格納されてもよい。また、本実施の形態に従う制御プログラム２０Ａは、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、本実施の形態に従う処理は、任意のプログラムと協働して実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従うプログラムの趣旨を逸脱するものではない。さらに、本実施の形態に従う制御プログラム２０Ａによって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも１つのサーバーが本実施の形態に従う制御処理を実現する、所謂クラウドサービスのような形態で画像形成装置１００Ａが構成されてもよい。
【００８６】
［まとめ］
以上のようにして、画像形成装置１００Ａは、コアにエラーが生じている場合に、スキャンタスク群とプリントタスク群とを共通のコアに固定的に割り当て直し、低優先度タスク群を他のコアに割り当て直す。これにより、画像形成装置１００Ａは、コアにエラーが生じた場合であっても、プリント処理およびスキャン処理を実行しつつ、並行して他の処理を実行することができる。その結果、ユーザーは、コアにエラーが生じているときでも、不快を感じることなく画像形成装置１００Ａを操作することができる。
【００８７】
好ましくは、低優先度タスク群は、表示タスク（低優先ＵＩタスク）を含む。これにより、画像形成装置１００Ａは、表示タスクがスキャンタスク群とプリントタスク群とに阻害されることを防止できる。
【００８８】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【００８９】
１  ＣＰＵ、１Ａ〜１Ｃ  コア、２  ＲＯＭ、３  ＲＡＭ、４  不揮発性メモリ、５  ネットワークＩ／Ｆ、６  操作部、７  表示部、８  自動原稿搬送部、９  画像読取部、１０  プリントエンジン、２０  記憶装置、２０Ａ  制御プログラム、２１  高優先スキャンタスク、２２，３２  低優先認証タスク、２３，２５，４５  タスク、２４，３５，４６  中優先スキャンタスク、３１  高優先プリントタスク、３３，３４，４１，４２  中優先プリントタスク、１００Ａ，１００Ｘ  画像形成装置、１１０  検出部、１２０  スケジューラ。
【図１】
2016181868.tif 000003
【図２】
2016181868.tif 000004
【図３】
2016181868.tif 000005
【図４】
2016181868.tif 000006
【図５】
2016181868.tif 000007
【図６】
2016181868.tif 000008
【図７】
2016181868.tif 000009
【図８】
2016181868.tif 000010
【図９】
2016181868.tif 000011