以下、図面を参照して本発明の実施形態を説明する。なお、図面において同一の機能を有する要素には同一の符号を付し、重複する説明を省略する。また、図面はあくまでも本発明の実施形態を説明するためのものであるので、各部材の寸法や比率は説明の都合上誇張または簡略化しており、実際の寸法や比率とは異なる。
[実施形態1]
本発明を適用した実施形態の画像処理装置として、プリンター、コピー、スキャナー、ファクシミリなどの機能を備えたMFP(multifunction peripheral、多機能周辺装置)を例に説明する。MFPは複合機などと称されることもある。
図1は、実施形態における画像処理装置の構成を説明するためのブロック図である。
画像処理装置100は、CPU(Central Processing Unit)101を備えている。CPU101は、第1CPUコア151と第2CPUコア152を備えたマルチコアプロセッサ構成である。このためCPU101内の第1CPUコア151と第2CPUコア152は、それぞれが独立して様々な処理を実行することができる。そして本実施形態1の動作も、CPU101が後述する処理手順のプログラムを実行することで行われる。
CPU101はバス120を介して、表示部102、操作部103、画像処理部104、通信制御部105、電源制御部106、モデム107とNCU(Network Control Unit)108、読取部109、プリントエンジン110、ROM(Read Only Memory)111、RAM(Random Access Memory)112、不揮発性メモリー113、ネットワーク通信部114、外部端末通信部115、およびユーザー認証処理部116と接続されている。
表示部102は、たとえば液晶ディスプレイ、有機EL(electroluminescence)ディスプレイなどのディスプレイパネルを備える。ディスプレイパネルには操作画面、設定画面、編集画面などの各種画面が表示される。
操作部103は、たとえばコピー、スキャナー、ファクシミリの各機能を選択するためのボタンやキー、数値を入力するためのテンキー、スタートキー、ストップキーなどを備える。また表示部102と操作部103は、それらが一つになったタッチパネルであってもよい。
画像処理部104は、画像データの補正、回転、拡大、縮小などの画像処理を行う。また、外部装置から受信した画像データのラスタライズも行う。またファクシミリの画像データに対しては、画像データの圧縮(符号化)、伸張(復号化)などの処理を行う。ここで外部装置は、たとえばパソコンや携帯情報端末などである(携帯情報端末はたとえば携帯電話、スマートフォン、タブレットなどである)。
通信制御部105は、ファクシミリ通信に係るプロトコル制御などを行う。このため通信制御部105は、モデム107を介してのデータの送受信の制御を行っている。
電源制御部106は、各部への電力供給を制御している。また、画像処理装置100が省エネルギーに対応するためのスリープ機能を有している場合は、画像処理装置各部へ電力を供給する通常モードと、各部への電力供給を制限した待機モード(省電力モード)との切り替えを制御している。待機モードにおいては、たとえばユーザー操作の開始(操作部103からの入力)を検出する部分や、着呼(モデム107への着信)を検出する部分、また外部装置からのジョブの入力を検出する部分など以外への電力供給を停止する。
画像処理装置100は、通常、電源が投入されると、通常モードとなる。一方、一定時間無操作および無着信であれば、消費電力を抑えるため待機モードとなる。このような制御を電源制御部106が行っている。
モデム107は、ディジタル信号をアナログ信号で伝送するための変調やその復調を行う。NCUは、公衆電話回線と接続されて発呼や着呼に関する制御や検出を行う。NCU27はモデム107によって制御される。
読取部109は、原稿画像を光学的に読み取って画像データを取得する、いわゆるスキャナーである。
プリントエンジン110は、画像データに基づく画像を、周知の電子写真プロセスによって記録紙上に形成する、いわゆる印刷を行う。プリントエンジン110は、インクジェット方式であってもよい。
ROM111は、この画像処理装置100における基本動作を担うための各種プログラムや固定データが格納されている。CPU101はこれらのプログラムに従って各種の処理を実行する。
RAM112は、CPU101がプログラムを実行する際にワークエリアとなり、また画像データを一時的に記憶する。このためRAM112は、コピー時に読取部109で読み取った画像データ、外部装置から受信したジョブの画像データ、ファクシミリ受信した画像データなどを一時記憶する際に使用される。
不揮発性メモリー113は、読取部109で読み取られた原稿の画像データ、外部装置から受信したジョブの画像データや、ファクシミリ受信した画像データなどを記憶する。また、CPU101が実行するアプリケーションプログラム(ROM111に記憶されているプログラム以外のプログラム)も記憶している。不揮発性メモリー113は、HDD(Hard disk drive)、フラッシュメモリーを利用したSSD(solid state drive)、eMMC(embedded MultiMediaCard)などが用いられる。このようなHDDや、SSD、eMMCなどにおいては、時間の経過による劣化が起こることが知られている。
なお、不揮発性メモリー113は、ROMの代わりに、画像処理装置100における基本動作を担うための各種プログラムや固定データを格納しておくこともある。特にSSD、eMMCなどはROMの機能を兼ねるようにすることがあり、このような場合にはROMが省略されることもある)。
画像データがRAM112へ一時記憶されるか、不揮発性メモリー113へ記憶されるかは、その画像データの出力が即時実行可能か否か、また画像データの容量の大きさによって決定される。たとえば、コピー動作において、読取部109で読み取った画像をそのまま印刷可能な状態であれば、読み取った1ページ分の画像データは、読み取りの都度RAM112へ一時記憶されて、そのまま印刷出力される。ファクシミリ送信時も、即時送信可能であれば読み取った画像データはRAM112での一時記憶となる。ファクシミリ受信時も、受信した画像データを即時印刷可能であれば受信した画像データはRAM112での一時記憶となる。一方、パソコンなどから印刷するジョブの画像データの場合、複数ページ分の画像データを受信することになる。このためRAM112ではすべて記憶することができなくなるので、不揮発性メモリー113への記憶となる。また、ジョブの実行開始時において、他のジョブが出力動作中であるような場合、たとえばファクシミリ送信時において別のジョブを送信中の場合は読み取った画像データは不揮発性メモリー113へ記憶することになる。同様にファクシミリ受信時において別のジョブを印刷中の場合は受信した画像データは不揮発性メモリー113へ記憶することになる。また、コピー動作の場合も先行するジョブが印刷中の場合は、不揮発性メモリー113への記憶となる。さらに、即時印刷可能な場合でも、画像データの容量が大きくてRAM112での記憶が容量オーバーとなるような場合も、不揮発性メモリー113への記憶となる。そのほか、ここで例示した以外でも、必要に応じて不揮発性メモリー113への記憶となる。どこへ画像データを記憶するかは、その時の状態をCPU101が判断して決定されることになる。
このように画像データを記憶するRAM112および不揮発性メモリー113はいずれも画像記憶部である。
なお、ここで出力とは、通信制御部105とモデム107およびNCUを介したファクシミリ出力、プリントエンジン110による印刷出力のことである。
ネットワーク通信部114は、LAN(Local Area Network)などのネットワークを通じて外部装置(たとえばパソコンやサーバーなど)と画像データを送受信する。また、無線通信機能(たとえば無線LAN(WiFi(Wireless Fidelity))、近距離無線通信(たとえばBluetooth(登録商標))など)を備え、外部装置として無線通信を利用した携帯情報端末と画像データの送受信が行えるようにしておいてもよい。
外部端末通信部115は、人体を通信路(人体通信という)としてユーザー認証端末装置(不図示)とデータ通信を行う。人体通信は、たとえば電界方式が用いられる。
ユーザー認証処理部116は、ユーザー認証端末装置から外部端末通信部115が受信した認証データと、この画像処理装置100に記憶されている照合用の認証データとを比較するなどによりユーザーの識別(特定)および認証を行う(認証処理)。
外部端末通信部115およびユーザー認証処理部116によるユーザーの認証は人体通信を利用したものに限らず、たとえは近距離無線通信やWiFiなどの無線通信を利用したものであってもよい。また、テンキーなどからの認証番号の入力などであってもよい。なお、ユーザー認証機能が不用な場合には、外部端末通信部115およびユーザー認証処理部116はなくてもよい。
本実施形態1における画像処理装置100の動作について説明する。
まず、本実施形態1の動作の理解を容易にするために、従来の動作と処理手順を説明する。
図2は、従来の処理手順を示すフローチャートである。
従来は、装置構成として2つのCPU101が存在しているが、それぞれのCPU101が別々処理を行っている。したがって従来の処理手順を本実施形態の画像処理装置100にあてはめると、ジョブの入力待ちの状態でジョブを受け付けると、複数のCPUコアのうち、一つのジョブの処理を実行するCPUコアが1つ選択される(S1001)。通常、ジョブの実行指令が来た段階で他のジョブを実行していないCPUコアが選択される(複数のCPUコアがジョブを実行していない場合はあらかじめ決められたCPUコアが優先的に選択される)。ここでは、第1CPUコア151が選択されたものとして説明を続ける。
S1001で選択された第1CPUコア151は、画像データを受信する(S1002)。画像データの受信は、外部装置のうちパソコンや情報処理端末などからジョブの場合、ネットワーク通信部114を介して受信する。ファクシミリの場合はモデム107、通信制御部105を介して受信する。また画像読み取りの場合は読取部109によって読み取られた画像データとなる。
続いて、第1CPUコア151は、画像データを記憶する(S1003)。このときS1002で受信した画像データの記憶先は、既に説明したとおり、RAM112または不揮発性メモリー113である。
続いて、第1CPUコア151は、画像データを読み出す(S1004)。画像データの読み出しは出力可能となった時点で行われる。RAM112に記憶されている画像データはRAM112から、不揮発性メモリー113に記憶された画像データは不揮発性メモリー113から読み出す。
続いて、第1CPUコア151は、読み出した画像データを画像処理部104へ転送して、画像処理部104においてその画像データに対して指定された画像処理を実行させる(S1005)。
続いて、第1CPUコア151は、画像処理が終了した画像データを、その画像データのジョブの指定に応じて画像処理部104から出力させる(S1005)。たとえば、ジョブがファクシミリ送信の場合は通信制御部105へ画像データを出力してファクシミリ送信させる。ジョブが、ファクシミリ受信、コピー、印刷の場合はプリントエンジン110に画像データを出力して印刷させる。
以上のような画像処理装置100の動作において、時に、画像データの読み出し(S1004のステップ)に、エラーが生じる場合がある。従来は、既に説明したようにエラーが発生すると、その時点で処理中のジョブは中止してしまうことになっていた。このため処理中のジョブは破棄されてしまうので、再度エントリーしなければならない。たとえばコピーおよびファクシミリ送信時は画像の再読み取り、外部装置からのジョブでは再送信してもらうなどの必要が生じることもある。
エラーの原因は様々である。たとえば、RAM112および不揮発性メモリー113などの経時劣化、外乱(電波や電気雑音など)などが考えられる。このような読み出しエラーは、部品そのものの根本的な不良の場合は部品交換などが必要となるが、一時的な不良(異常発生)の場合も多い。たとえば、たとえばRAM112および不揮発性メモリー113(HDD、SSD)などの経時劣化の場合、一瞬にしてすべてが不良になるものではなく、一時的に書き込みや読み出しが行えなくなるような状態があって、その後完全に不良になるという経過をたどることが多い。また外乱によるエラーの場合、その外乱がなくなれば正常に動作するようになる。このような様々な不良原因によってエラーが発生した場合、もう一度読み出しを行うと良好に読み出せることもある。
そこで、本実施形態ではこのようなエラー原因にかんがみ、2つのCPUコアを使って同じジョブを処理させることで、ジョブをそのまま継続できる可能性を高くしたのである。
図3は、本実施形態1の処理手順を示すフローチャートである。
まずジョブの入力待ちの状態でジョブを受け付けると、複数のCPUコアのうち、CPUコアが1つ選択される(S101)。通常、ジョブの実行指令が来た段階で他のジョブを実行していないCPUコアが選択される(複数のCPUコアがジョブを実行していない場合はあらかじめ決められたCPUコアが優先的に選択される)。ここでは、第1CPUコア151が選択されたものとして説明を続ける。
S101で選択された第1CPUコア151は、画像データを受信する(S102)。画像データの受信は、外部装置のうちパソコンや情報処理端末などからジョブの場合、ネットワーク通信部114を介して受信する。ファクシミリの場合はモデム107、通信制御部105を介して受信する。また画像読み取りの場合は画像読取部によって読み取られた画像データとなる。
続いて、第1CPUコア151は、画像データを記憶する(S103)。このときS102で受信した画像データが外部装置のうちパソコンや情報処理端末などからジョブの場合、不揮発性メモリー113への記憶となる。コピーおよびファクシミリの画像データの場合、すぐに出力可能な状態であればRAM112への一時記憶となる。一方、出力待ちがあれば、不揮発性メモリー113への記憶となる。なお、このような画像データの記憶先について既に説明したとおりである。
続いて、第1CPUコア151は、画像データを読み出す(S104)。画像データの読み出しは出力可能となった時点で行われる。コピーや外部装置からの印刷の場合はプリントエンジンが印刷可能となったとき、ファクシミリ送信の場合は送信可能となった時点で読み出しが行われる。画像データの読み出しは、RAM112に記憶されている画像データはRAM112から、不揮発性メモリー113に記憶された画像データは不揮発性メモリー113から読み出す。
続いて、第1CPUコア151は、第2CPUコア152に対して画像データの読み出しを実行するように指令する(S105)。この指令を受けた第2CPUコア152は、第1CPUコア151とは独立した処理として画像データを読み出す。ここで第2CPUコア152が読み出す画像データは第1CPUコア151で読み出したものと同じである。
続いて、第1CPUコア151は、第1CPUコア151で画像データの読み出しに成功したか否かを判断する(S106)。読み出しに成功していれば(S106:YES)、第1CPUコア151は、読み出した画像データを画像処理部104へ転送して、画像処理部104においてその画像データに対して指定された画像処理を実行させる(S107)。
続いて、第1CPUコア151は、画像処理が終了した画像データを、その画像データの出力先に応じて画像処理部104から出力させる(S108)。画像データの出力動作は従来同様であり、たとえば、ファクシミリ送信の場合は通信制御部105へ画像データを転送してファクシミリ送信として出力させ、ファクシミリ受信、コピー、印刷の場合はプリントエンジン110に画像データを転送して印刷出力させる。その後第1CPUコア151は処理を終了する。なお第2CPUコア152で読み出された画像データは使用しないので、終了時に破棄される。
S106において、第1CPUコア151による画像データの読み出しに成功していなければ(S106:NO)、第1CPUコア151は、第2CPUコア152で画像データの読み出しに成功したか否かを判断する(S110)。読み出しに成功していれば(S111:YES)、第1CPUコア151は、第2CPUコア152に対して、読み出した画像データを画像処理部104へ転送するように指令し、画像処理部104においてその画像データに対して指定された画像処理を実行させる(S107)。以降は、画像データの出力先に応じて画像処理部104から出力させる(S108)。その後第1CPUコア151は処理を終了する。
一方、S110において、第2CPUコア152でも画像データの読み出しに成功していなければ(S110:NO)、この処理手順においては第1CPUコア151でも第2CPUコア152でも画像データの読み出し異常が発生したことになるので、異常終了を警告(S111)して、処理を終了する。異常終了の警告は、たとえば表示部102への表示とともに、ファクシミリ受信の即時出力時(データ受信中の場合)には、不良があったことを送信先へ通知する。また、外部装置であるパソコンや携帯情報端末からのジョブを受け付けていた場合には出力不良があったことをそれら外部装置へ通知する。
なお、以上の説明では、第1CPUコア151がこの処理手順全体を実行するように説明したが、これは第2CPUコア152が実行するようにしてもよい。また、S101で選択されたCPUコアが、その時点でこの処理手順全体を実行するようにしてもよい。すなわちS101で選択されたCPUコアが第2CPUコア152の場合は、第2CPUコア152が上記処理手順おける第1CPUコア151として働くことになる。
本実施形態の作用を説明する。図4は従来の処理手順においてエラーが発生した場合の動作状態を概念的に示した説明図である。図5は本実施形態の処理手順においてエラーが発生した場合の動作状態を概念的に示した説明図である。
まず、図4を参照して従来の動作を説明する。図4に示すように、従来の動作では、1ジョブ目は画像データの読み出しが正常に行われる。そうすると出力も正常に行われる。ところが2ジョブ目で画像データの読み出しに失敗すると、その時点でそのジョブの処理は停止してしまう。そうすると出力も行われないことになる。
次に、図5を参照して本実施形態の動作を説明する。図5に示すように、1ジョブ目について、第1CPUコア151による画像データの読み出しが行われ、続いて第2CPUコア152による画像データの読み出しが行われる。ここで第1CPUコア151による画像データの読み出しと、第2CPUコア152による画像データの読み出しに時間差がある。この読み出しの時間差(以下単に「時間差」という)は、正確には第1CPUコア151による画像データの読み出し開始から第2CPUコア152による画像データの読み出し開始までの時間である。
この時間差は、CPU101と、RAM112および不揮発性メモリー113との間のバス120が1つであるので、第1CPUコア151と第2CPUコア152が同じ画像データの読み出しを行うと、いずれか一方のCPUコアが読み出し中はもう一方のCPUコアが読み出しを行うことができないために生じている。しかもこの時間差は、画像データの長さや、第2CPUコア152の処理状態により異なる。たとえば第1CPUコア151が画像データを読み出し中は、第2CPUコア152は画像データを読み出せない。このため第1CPUコア151が読み出しを開始したのち、第2CPUコア152が読み出しを開始できるようになる時間は画像データの大きさによって異なる。また第2CPUコア152が他の処理を実行中であれば、その処理が終了するまで読み出しはできないので、その場合も第2CPUコア152が読み出し可能になるまでが時間差となる。
図5に戻り説明する。1ジョブ目は両方とも画像データの読み出しが正常に行われている。そうすると、第1CPUコア151によって読み出された画像データが出力される。このとき第2CPUコア152で読み出された画像データは不要なので破棄することになる。
続いて2ジョブ目の読み出しが行われると、第1CPUコア151による読み出しにエラーが発生する。その後わずかな時間差で行われた第2CPUコア152による読み出しによって画像データが正常に読み出されている。そこで第2CPUコア152の画像データが用いられて正常に出力される。このとき出力がわずかに遅れるが、その時間差は、2つのCPUコアにより画像データを読み出す際にかかる時間差と同程度である。このためほとんどの人が気付かないか気にならない程度である。このように本実施形態1では、画像データの読み出しエラーが発生したとしても、従来のようにその時処理されていたジョブが中止されてしまうことなく、ジョブを継続して出力することが可能となるのである。
以上のように本実施形態1では、わずかな時間差をあけて処理を行っている2つのCPUコア151および152によって画像データの読み出しを行っている。これにより、いずれか一方のCPUコアが、RAM112や不揮発性メモリー113(画像記憶部)からの画像データの読み出しに成功すれば、その画像データを使用して出力することができる。このため一部に異常が発生したとしてもその時処理しているジョブを中止することなく継続することができる。
[実施形態2]
実施形態2は、画像データの読み出しに成功したか否かの統計データを取り、その統計データに基づいて異常終了していない時間差により画像データの読み出しを行うようにしたものである。
本実施形態2においては、画像処理装置100の機能構成は、実施形態1と同じであるので説明は省略する。ここでは実施形態2の動作を行うための手順を説明する。
図6は実施形態2の処理手順を示すフローチャートである。
本実施形態2においても、まずは実施形態1と同様に、ジョブを受け付けると、複数のCPUコアのうち、CPUコアが1つ選択される(S201)。ここでは、第1CPUコア151が選択されたものとして説明を続ける。
選択された第1CPUコア151は、画像データを受信し(S202)、画像データを記憶する(S203)。続いて、第1CPUコア151は、画像データを読み出す(S204)。
その後、本実施形態2では、第1CPUコア151は、統計データ(後述)を参照し、統計データの中から異常終了している時間差以外の時間差となるように第2CPUコア152により画像データの読み出しを行わせる(S205)。ここでの時間差は既に説明したとおり第1CPUコア151と第2CPUコア152の読み出しの時間差である。ここでも読み出す画像データは第1CPUコア151で読み出したものと同じである。
続いて、第1CPUコア151は、実施形態1同様に、第1CPUコア151が読み出しに成功していれば(S206:YES)、第1CPUコア151が読み出した画像データを画像処理部104へ転送して、画像処理部104において画像処理を実行させ(S207)、出力させる(S208)。
続いて本実施形態2では、第1CPUコア151と第2CPUコア152の読み出しの時間差と正常終了したか、異常終了したかをひも付けして統計データを取る(S212)。統計データを取る処理については後述する。その後第1CPUコア151は、処理を終了させる。第2CPUコア152で読み出された画像データは使用しないので、終了時に破棄される。
一方、第1CPUコア151による画像データの読み出しに成功していなければ(S206:NO)、第1CPUコア151は、第2CPUコア152で画像データの読み出しに成功したか否かを判断する(S210)。読み出しに成功していれば(S210:YES)、第1CPUコア151は、第2CPUコア152に対して、読み出した画像データを画像処理部104へ転送するように指令し、画像処理部104においてその画像データに対して指定された画像処理を実行させる(S207)。以降は、画像データの出力先に応じて画像処理部104から出力させる(S208)。
その後本実施形態2では、第1CPUコア151と第2CPUコア152の読み出しの時間差と正常終了したか、異常終了したかをひも付けして統計データを取る(S212)。その後第1CPUコア151は処理を終了する。
S210において、第2CPUコア152でも画像データの読み出しに成功していなければ(S210:NO)、この処理手順においては第1CPUコア151でも第2CPUコア152でも画像データの読み出し異常が発生したことになるので、異常終了を警告する(S211)。
その後本実施形態2では、第1CPUコア151と第2CPUコア152の読み出しの時間差と正常終了したか、異常終了したかをひも付けして統計データを取る(S212)。
S212の統計データを取る処理について説明する。
統計データを取る処理においては、第1CPUコア151と第2CPUコア152の読み出しの時間差と正常終了したこと、または異常終了したことをひも付けして記憶してゆくことで統計データとしている。統計データの記憶には不揮発性メモリー113(記憶部となる)を使用する。
ここで正常終了とは、第1CPUコア151と第2CPUコア152のいずれかから画像データの出力処理が行われた場合である。一方、異常終了は画像データの出力が行われなかった場合である。本実施形態2では、S208のステップが完了していれば正常終了である。一方、S210のステップがNOとなると異常終了である。他の実施形態についても同様である。
第1CPUコア151と第2CPUコア152の読み出しの時間差は、既に説明したとおり、画像データごとに異なる。そこで、S212において、時間差と正常終了か異常終了かをひも付けして統計データを取ることで、異常終了の発生頻度が高い時間差を知ることができる。そして、をS205では、この統計データに基づいて第1CPUコア151からの制御によって、異常終了する可能性の高い時間差を外して第2CPUコア152に対して画像データの読み出しを指示する。これにより、異常終了する可能性の高い時間差を外し、読み出し成功の可能性を高くすることができる。
画像データの読み出しは、第1CPUコア151が読み出しを終えるまで第2CPUコア152での読み出しを行えない。このため時間差をつける制御においては、画像データによっては時間差を短くすることができない。そのような場合には、異常終了となった時間差より長い時間差をつけて画像データの読み出しを行えばよい。もちろん今回処理しているジョブの画像データによっては時間差より短くすることができれば、統計データ中の異常終了の時間差より短い時間差となるようにしてもよい。
なお、統計データは、はじめのうちは処理したジョブの数が少ないので、異常終了した時間差が1つでもあればその時間差を外して第2CPUコア152により読み出しを行う。そしてある程度統計データの数がたまってきたなら、たとえば3σの範囲内などとして異常終了する時間差の範囲を外すようにしてもよい。
このような読み出しの時間差によって異常終了する頻度に差がある理由は定かではない。しかし、経験的に、時間差が短い場合に異常終了し易かったり、逆に時間差が長くなると異常終了しやすかったりする。このため異常終了しやすい時間差を外すことで正常に読み出せる可能性が高くなる。また、周期的な外乱がある場合には、その周期(すなわち時間差)を外すことで正常に読み出せる可能性が高くなる。
以上のように、本実施形態2では、異常終了の発生頻度が高い時間差を外して2回の読み出しを行うようにした。これにより正常に出力できる可能性を高くすることができる。
なお、本実施形態2では、統計データを取るために正常終了と異常終了の両方を時間差をともに記録したが、異常終了のときのみ、時間差をともに記録することでも実施可能である。なぜなら、本実施形態2では異常終了した時間差以外の時間差で画像データの読み出しを行っているため、正常終了時の時間差は利用しなくてもよいからである。
また、本実施形態2においても、第1CPUコア151がこの処理手順全体を実行するように説明したが、実施形態1同様に、第2CPUコア152が実行するようにしてもよい。また、S201で選択されたCPUコアが、その時点でこの処理手順全体を実行するようにしてもよい。
[実施形態3]
実施形態3は、画像データの読み出しに成功したか否かの統計データを取り、その統計データに基づいて正常終了した時間差により画像データの読み出しを行うようにしたものである。
本実施形態3においては、画像処理装置100の機能構成は、実施形態1と同じであるので説明は省略する。ここでは実施形態3の動作を行うための手順を説明する。
図7は実施形態3の処理手順を示すフローチャートである。
本実施形態3においても、まずは実施形態1と同様に、ジョブを受け付けると、複数のCPUコアのうち、CPUコアが1つ選択される(S301)。ここでは、第1CPUコア151が選択されたものとして説明を続ける。
選択された第1CPUコア151は、画像データを受信し(S302)、画像データを記憶する(S303)。続いて、第1CPUコア151は、画像データを読み出す(S304)。
その後、本実施形態3では、第1CPUコア151は、統計データ(実施形態2と同様の統計データである)を参照し、その統計データの中から正常終了している時間差があるか否かを判断する(S305)。正常終了している時間差があれば(S305:YES)、その時間差となるように第2CPUコア152により画像データの読み出しを行わせる(S306)。ここでも読み出す画像データは第1CPUコア151で読み出したものと同じである。
一方、統計データの中に正常終了している時間差がなければ(S305:NO)、異常終了している時間差以外の時間差で第2CPUコア152により画像データの読み出しを行わせる(S307)。ここで統計データの中に、異常終了している時間差もない場合は、すなわちどのような時間差であっても、異常終了している時間差以外ということになるので、第2CPUコア152により読み出し可能な時間で画像データの読み出しを行えばよい。
続いて、第1CPUコア151は、実施形態1同様に、第1CPUコア151が読み出しに成功していれば(S308:YES)、第1CPUコア151が読み出した画像データを画像処理部104へ転送して、画像処理部104において画像処理を実行させ(S309)、出力させる(S310)。
続いて本実施形態3では、実施形態2同様に、第1CPUコア151は、時間差と正常終了または異常終了したことをひも付けして記憶して統計データを取る(S313)。その後第1CPUコア151は、処理を終了させる。
一方、第1CPUコア151による画像データの読み出しに成功していなければ(S308:NO)、第1CPUコア151は、第2CPUコア152で画像データの読み出しに成功したか否かを判断する(S311)。読み出しに成功していれば(S311:YES)、第1CPUコア151は、第2CPUコア152に対して、読み出した画像データを画像処理部104へ転送するように指令し、画像処理部104においてその画像データに対して指定された画像処理を実行させ(S309)、画像データの出力先に応じて画像処理部104から出力させる(S310)。そして本実施形態2同様に、時間差と正常終了または異常終了したことをひも付けして記憶して統計データを取る(S313)。その後第1CPUコア151は処理を終了する。
S311において、第2CPUコア152でも画像データの読み出しに成功していなければ(S311:NO)、この処理手順においては第1CPUコア151でも第2CPUコア152でも画像データの読み出し異常が発生したことになるので、異常終了を警告する(S312)。
その後本実施形態3では、実施形態2同様に、時間差と正常終了または異常終了をひも付けして記憶し、統計データを取る(S313)。
以上のように、本実施形態3では、正常終了した時間差となるようにして2回の読み出しを行うようにした。実施形態2において説明したとおり画像データの読み出しにおいては、異常終了する頻度が高い時間差がある。これは逆にいうと正常終了する頻度が高い時間差が存在するということである。そこで、本実施形態3では、その正常終了する時間差を直接的に用いて、画像データの読み出しを行うこととした。これにより正常に出力できる可能性を高くすることができる。
また本実施形態3においても、第1CPUコア151がこの処理手順全体を実行するように説明したが、実施形態1同様に、第2CPUコア152が実行するようにしてもよい。また、S301で選択されたCPUコアが、その時点でこの処理手順全体を実行するようにしてもよい。
[実施形態4]
実施形態4は、異常終了した時刻を記録して統計データを取り、一定期間異常終了がない場合には、1つのCPUコアで処理を行うようにしたものである。
本実施形態4においては、画像処理装置100の機能構成は、実施形態1と同じであるので説明は省略する。ここでは実施形態4の動作を行うための手順を説明する。
図8は実施形態4の処理手順を示すフローチャートである。
本実施形態4においても、まずは実施形態1と同様に、ジョブを受け付けると、複数のCPUコアのうち、CPUコアが1つ選択される(S401)。ここでは、第1CPUコア151が選択されたものとして説明を続ける。
選択された第1CPUコア151は、画像データを受信し(S402)、画像データを記憶する(S403)。
その後、本実施形態4では、第1CPUコア151は、異常終了時刻の統計データを参照して、異常終了が一定期間発生していないか否かを判断する(S404)。異常終了時刻の統計データとこのS404の詳細については後述する。ここで、一定期間異常終了していないなら(S404:YES)、第1CPUコア151は、画像データを読み出す(S420)。その後、第1CPUコア151は、そのまま第1CPUコア151が読み出した画像データを画像処理部104へ転送して、画像処理部104において画像処理を実行させ(S408)、出力させる(S409)。
続いて本実施形態4では、異常終了した場合の時刻を記憶して統計データを取る処理を行い(S412)、処理を終了させる。
一方、異常終了が一定期間内に発生している場合(S404:NO)は、実施形態1同様に第1CPUコア151が画像データを読み出し(S405)、続いて、第2CPUコア152により画像データの読み出しを行わせる(S406)。ここでも読み出す画像データは第1CPUコア151で読み出したものと同じである。
このS404のステップについて説明する。たとえば前々回の処理まで一定期間異常終了がなく1つのCPUコアによって画像データの読み出しをしていたとしても、前回の処理が異常終了した場合、このS404のステップによって異常終了が一定期間内に発生したものと判断される。このため、その後の処理手順は、2つのCPUコアによる読み出しに戻ることになる。
続いて、第1CPUコア151は、実施形態1同様に、第1CPUコア151が読み出しに成功していれば(S407:YES)、第1CPUコア151が読み出した画像データを画像処理部104へ転送して、画像処理部104において画像処理を実行させ(S408)、出力させる(S409)。その後本実施形態4では、異常終了した場合の時刻を記憶して統計データを取る処理を行い(S412)、処理を終了させる。
一方、第1CPUコア151による画像データの読み出しに成功していなければ(S407:NO)、実施形態1同様に第1CPUコア151は、第2CPUコア152で画像データの読み出しに成功したか否かを判断する(S410)。読み出しに成功していれば(S410:YES)、第1CPUコア151は、第2CPUコア152に対して、読み出した画像データを画像処理部104へ転送して画像処理を実行させ(S408)、出力させる(S409)。その後本実施形態4では、異常終了した場合の時刻を記憶して統計データを取る処理を行い(S412)、処理を終了させる。
S410において、第2CPUコア152でも画像データの読み出しに成功していなければ(S410:NO)、この処理手順においては第1CPUコア151でも第2CPUコア152でも画像データの読み出し異常が発生したことになるので、異常終了を警告する(S411)。その後本実施形態4では、異常終了した場合の時刻を記憶して統計データを取る処理を行い(S412)、処理を終了させる。
ここでS412の異常終了時刻の統計データを取る処理について説明する。
異常終了時刻の統計データを取るために、本実施形態4では、異常終了が発生した時刻を記憶する。統計データの記憶には不揮発性メモリーを使用する。そして、S404において、一番最後に異常終了として記録されている時刻と現在時刻(S404のステップに入った時刻)の差を算出し、この時刻差が、あらかじめ決めた一定期間以上であれば、S404において一定期間異常終了していないものと判断する(すなわちS404:YESとなる)。
以上のように、本実施形態4では、一定期間異常終了が発生していない場合は、1つのCPUコアによって画像の読み出しやその後の処理を実行することとした。一定期間異常終了が発生していないということは、今後も異常発生の可能性が低いということである。そのような場合には一つのCPUコアだけでその時のジョブを処理する方が、もう一つのCPUコアでは別な作業をすることができ、CPU資源の効率的な運用を図ることができる。しかも、一定期間異常終了があるか否かを判断しているので、異常が多く発生している場合には、実施形態1同様に、異常発生時においてもジョブを停止することなく処理することができる。
ここで本実施形態4の一定期間は、装置の使用頻度や、画像記憶部として使用する不揮発性メモリーのグレードや耐久性などにもよるが、たとえば、2、3日程度である。これは不揮発性メモリーとしてHDDやSSDを使用した場合、徐々に劣化して読み出し異常が起き始めると異常発生頻度が高くなるので、複数CPUコアで読み出しを行う方がよい。しかし経験的に2、3日も異常が発生しなければそれは一時的な外乱による場合がほとんどである。そこでこのような期間を一定期間とすることが好ましい。この一定期間は任意に決定することができるようにしておいてもよい。
なお、本実施形態4においても、第1CPUコア151がこの処理手順全体を実行するように説明したが、実施形態1同様に、第2CPUコア152が実行するようにしてもよい。また、S401で選択されたCPUコアが、その時点でこの処理手順全体を実行するようにしてもよい。
[実施形態5]
実施形態5は、画像データの読み出しが正常となったCPUコアの数、異常となったCPUコアの数、および異常終了した時刻を記録して統計データを取り、その結果に応じて、画像データの読み出しを行うCPUコアの数を変えるようにしたものである。
図9は本実施形態5における画像処理装置の構成を示すブロック図である。CPU101を除く構成は実施形態1と同じである。したがって、CPU101以外の説明は省略する。
本実施形態5においてCPU101は、n個のCPUコアを有する。第1〜第nCPUコア151〜15nはそれぞれ独立して処理を行うことができる。
図10は実施形態5の処理手順を示すフローチャートである。
本実施形態5においても、まずは実施形態1と同様に、ジョブを受け付けると、複数のCPUコアのうち、CPUコアが1つ選択される(S501)。ここでは、第1CPUコア151が選択されたものとして説明を続ける。
選択された第1CPUコア151は、画像データを受信し(S502)、画像データを記憶する(S503)。
その後、本実施形態5では、第1CPUコア151は、第2統計データ(後述)を参照して、画像データの読み出しを行うCPUコア数mを決定する(S504)。ここで決定されるCPUコア数mは搭載されているCPUコア数n以下である。
続いて、第1CPUコア151は、自身が画像データを読み出し(S506)、その後第1CPUコア151は、S504で決定された読み出しに使用するCPUコア数mに応じて第2CPUコア152から第mCPUコアまで順に、画像データを読み出させる(S505)。ここでも第1CPUコア151から第mCPUコアは、それぞれが独立して画像データの読み出し処理を実行する。読み出す画像データは第1CPUコア151から第mCPUコアまで同じである。
続いて、第1CPUコア151は、第1CPUコア151が読み出しに成功していれば(S506:YES)、第1CPUコア151が読み出した画像データを画像処理部104へ転送して、画像処理部104において画像処理を実行させ(S507)、出力させる(S508)。その後本実施形態5では、読み出しが正常なCPUコア数および異常なCPUコア数を記録するとともに、異常終了した場合の時刻を記憶して第1統計データを取る(S509)。
その後、第1統計データを基に正常終了が一定期間続いたら読み出しを行うCPUコア数mを減らし、異常終了が発生したら読み出しを行うCPUコア数mを増やすようにするための第2統計データを取る(S510)。第1CPUコア151は、その後処理を終了させる。
一方、第1CPUコア151による画像データの読み出しに成功していなければ(S506:NO)、第1CPUコア151は、第2CPUコア152で画像データの読み出しに成功したか否かを判断する(S521)。読み出しに成功していれば(S521:YES)、第1CPUコア151は、第2CPUコア152に対して、読み出した画像データを画像処理部104へ転送して画像処理を実行させ(S507)、画像データを出力させ(S508)、第1統計データを取り(S509)、第2統計データを取る(S510)。第1CPUコア151は、その後処理を終了させる。
さらに、第2CPUコア152でも画像データの読み出しに成功していなければ(S521:NO)、以降、画像読み出しを行っている第mCPUコア数まで読み出しに成功しているか否かを判断(S52m)してゆくことになる。S52mの判断の結果、読み出しに成功していれば(S52m:YES)、第1CPUコア151は、画像データの読み出しに成功したCPUコアに対して、読み出した画像データを画像処理部104へ転送して画像処理を実行させ(S507)、画像データを出力させ(S508)、第1統計データを取り(S509)、第2統計データを取る(S510)。その後処理を終了させる。
S25mにおいて、第mCPUコア15mでも画像データの読み出しに成功していなければ(S52m:NO)、使用することに決めたCPUコア数mでは、すべて画像データの読み出しに異常が発生したことになる。このため異常終了を警告する(S530)。その後第1統計データ(S509)、および第2統計データを取って(S510)、処理を終了させる。
第1統計データについて説明する。第1統計データは、読み出しに成功したCPUコア数と失敗したコア数を記録しさらに、最終的に異常終了した時刻を記録して統計データを取る処理である。この第1統計データは不揮発性メモリーに記憶する。具体的には、画像データの読み出しを行ったCPUコア数がm=5であるとき、たとえば第3CPUコアで読み出しに成功したのであれば、第1CPUコア、第2CPUコアは読み出しに失敗したということである。この場合、読み出し異常のコア数2個が記録される。また正常のコア数は第3CPUコアで読み出しに成功したのであれば、その段階で、画像データの出力まで行ってしまうため、読み出し正常なCPUコアは1個と記録されることになる。既に説明したとおり、複数のCPUコアによる読み出しではCPUコア間で読み出しに時間差が生じる。このため成功したCPUコアがあれば、それを判断した時点で読み出しに成功したCPUコアで読み出した画像データを使用する方が、出力されるまでの時間を早くすることができる。しかしこれに限らず、正常、異常を出力動作とは別に記録して統計データを取るようにしてもよい。
次に第2統計データについて説明する。第2統計データは、第1統計データを基に正常終了が一定期間続いたらコア数mを減らし、異常終了が発生したらコア数mを増やすようにするための統計データを取る処理である。この第2統計データも不揮発性メモリーに記憶する。
第1統計データは異常終了した時刻を記憶している。このため記録されている最後の異常終了から現在時刻(S510のステップに入った時刻)までの時間が一定期間以上であれば、読み出しに使用するCPUコア数を減らし、異常終了が発生したならCPUコア数を増やすようにする。このときのCPUコア数の増減を記録して統計データとするのである。具体的には、画像データの読み出しを行ったCPUコア数がm=5であるとき、たとえば第3CPUコアで読み出しに成功した時間が一定期間以上となれば、3つのCPUコアがあれば正常出力を継続させることができる可能性が高いということである。そこで使用するCPUコア数を減らしてm=3を第2統計データとして記録するのである。逆に、m=3で読み出しを行っていたところ、異常終了が記録されると、使用するCPUコアの数を増やし、m=4を第2統計データとして記録するのである。なお、異常終了した場合に増加させるCPUコアの数は、1つではなく、一気に最大CPUコア数nまで増やしてもよい。これにより、その後の処理において異常終了する可能性をいっそう少なくすることができる。
第1統計データも第2統計データもはじめのうちはデータ数が少ないため、あらかじめ決められた時間およびCPUコア数とするが、画像処理装置が使用されてくるにつれて、データ数が増えてくる。そのようになれば、第1統計データを用いた第2統計データにおり、正常終了のより可能性の高いCPUコア数が得られてくるようになる。
ここで本実施形態5の一定期間は、装置の使用頻度や、画像記憶部として使用する不揮発性メモリーのグレードや耐久性などにもよるが、たとえば、1日程度である。すなわち、実施形態4よりも短くてよい。これは異常終了時には、使用するCPUコアの数を増加させることができるため、期間を短くして、臨機応変対応できるためである。もちろん本実施形態5でも一定期間は任意に決定することができるようにしておいてもよい。
以上のように、本実施形態5では、一定期間異常終了が発生していない場合は、読み出しに使用するCPUコア数を減らし、逆に異常終了が発生したならCPUコア数を増やすこととした。これによりCPU資源の効率的な運用を図ることができるとともに、異常終了の次の処理からは異常終了しにくくすることができる。
なお、本実施形態5においても、第1CPUコア151がこの処理手順全体を実行するように説明したが、実施形態1同様に、第2CPUコア152が実行するようにしてもよい。また、S501で選択されたCPUコアが、その時点でこの処理手順全体を実行するようにしてもよい。
[実施形態5の変形例]
上述した実施形態5は、S52mのステップで異常があれば、警告を行った後、第1および第2統計データを取ってそのまま処理を終了している。このとき読み出しに使用するCPUコア数mが搭載しているCPUコア数nより少ない場合がある。本変形例はこのような場合に即座に使用するCPUコア数を増やしてもう一度読み出しを行うこととしたものである。
画像処理装置100の構成は実施形態5と同じであるので説明は省略する。
図11は、実施形態5の変形例の処理手順を示すフローチャートである。この処理手順においても、実施形態5におけるS501から52mまでのステップは同じ処理であるので、ここでは、実施形態5と異なる処理のみ説明する。
実施形態5の変形例では、第mCPUコア15mでも画像データの読み出しに成功していなければ(S52m:NO)、続いて第1CPUコア151は、この時点で使用しているCPUコア数mと装置に搭載しているCPUコア数nを比較して(S531)、mがn未満であれば(m<nを満たす。S531:YES)、一気に使用するCPUコア数mをnとする(S533)。そして、S504へ処理を戻し、以降の処理を継続するのである。一方、S531でm=nであれば(S531:NO)、既に最大CPUコア数での読み出しを行っても異常が発生したということになるので、異常終了の警告を行って(S532)、第1および第2統計データを取り(S509、S510)、処理を終了する。
以上のように、本実施形態5の変形例では、CS533からS504へ処理を戻した段階で使用するCPUコア数mは、装置に搭載されている最大のCPUコア数nとなる。したがって、この段階では、使用可能な最大のCPUコアの数で、再度画像データの読み出しを行うことができる。これにより読み出しに使用するCPUコアの数が少ない段階で異常終了させてしまうことなく、できるだけ処理を継続し、最終的に出力できる可能性をより高くすることができる。
なお、この変形例においても、第1および第2統計データを取る処理が行われるので、S533で使用するCPUコア数mを搭載しているCPUコア数nと同じにしたのち、正常な状態が継続すれば、使用するコア数mは少なくなってゆく。
[実施形態6]
実施形態6は、プリンターサーバーが複数の画像形成装置を管理し画像形成を行わせている画像処理システムである。
図12は実施形態6における画像処理システムを示すブロック図である。
本実施形態6における画像処理システム200は、図12に示すように、ネットワーク205に接続されたプリンターサーバー211と、複数のMFP211〜214と、を含む。またネットワーク205には、複数のパソコンなど(PC(personal computer))231、232などが接続されている。PCはたとえば有線接続である。また、たとえばネットワーク205にはアクセスポイント234が接続されていて、このアクセスポイント234を介した無線接続により携帯情報端末233が接続されている。
そして、プリンターサーバー201は、複数のCPU202および203を搭載したマルチCPU構成である。またプリンターサーバー201は、画像データを記憶するための不揮発性メモリー204を備える。不揮発性メモリー204は画像記憶部であり、たとえばHDDやSSDなどである。なお、プリンターサーバー201はそのほか一般的なプリンターサーバーが備えている機能(たとえば、ネットワーク接続機能や、ラスタライズ、拡大縮小、圧縮、伸張などの画像処理機能など)を有するが、それらは周知のものであるので説明は省略する。
MFP211〜214は画像形成機能を有し、ここではプリンターサーバー201から送信されてきた画像データを印刷する画像形成装置となる。
このような画像処理システムにおいては、プリンターサーバー201がジョブの処理を実行する。このためプリンターサーバー201は、外部装置(ここではPC231および232、携帯情報端末233)から受信したジョブおよびそれに含まれている画像データをプリンターサーバー201内の不揮発性メモリー204に記憶する。またプリンターサーバー201は、MFP211〜214の画像読み取り機能によって読み取られた画像データを受信して不揮発性メモリー204に記憶することもある。
そしてプリンターサーバー201はジョブによる指定または空いているMFP211〜214を選択して、画像データを出力させる。
このようなプリンターサーバー201に、既に説明した実施形態1〜5、および実施形態5の変形例の処理手順を実行させることで、各実施形態で説明した動作を行うことができる。
このように本実施形態6によれば、ネットワークに接続されて複数のMFP211〜214を制御し、画像形成させるプリンターサーバー201においても、画像データの読み出しに異常があった場合でも、できる限り処理を継続して出力することが可能になる。
なお、本実施形態6においてはプリンターサーバー201が4台のMFP211〜214にネットワークを介して接続している形態と例示したが、プリンターサーバー201が制御するMFPの台数は、何台でもよい。また、MFPに限らず、単純なプリンター(画像読み取り機能のない画像形成装置)が接続されている形態でもよい。
以上実施形態を説明したが、本発明はこれら実施形態に限定されるものではない。特に、各実施形態において説明した手順を様々に組み合わせて実行することもできる。
また、実施形態1〜5、および実施形態5の変形例における画像処理装置の構成としてCPUコアが複数あるものとし、実施形態6のプリンターサーバーにはCPUが複数あるものとして例示した。しかし本発明はこのような構成に限らず、複数の処理を独立して処理することが可能な複数のプロセッサを備えた構成であればどのようなものであってもよい。たとえば、マルチコアCPUを複数搭載した構成でもよい。この場合、複数のCPU内のCPUコアがそれぞれ独立して処理を実行する。またCPUが1つと1つまたは複数のGPU(Graphics Processing Unit)を搭載したで構成あってもよい。この場合、GPUがCPUとは独立した処理を行うプロセッサとなり、各実施形態で説明した処理手順全体はCPUが実行し、その中で第2CPUコア(実施形態5においては第nCPUコアまで)が行う画像データの読み出しと成功した場合の画像処理部への出力をGPUに実行させるようにしてもよい。
また、実施形態1〜4における画像処理装置の構成としてCPUコアが2つ搭載されている例を示しているが、これらの実施形態においてもさらに多くのCPUコアを搭載していてもよい。その場合、実施形態1〜4では、すべてのCPUコアで画像データを読み出すようにしてもよいし、搭載されている複数のCPUコアのうち、少なくとも2つを使用するようにしてもよい。
また、実施形態では、画像処理専用の画像処理部を有することとしたが、専用の画像処理部を持たず、CPUが画像処理を行うような構成であってもよい。その場合、画像データの読み出しに成功したCPUコアが引き続き、画像処理を行って出力先へ画像データを出力する。
そのほか、本発明は、特許請求の範囲に記載された内容によって規定されるものであり、様々な変形形態が可能である。