ところで、このようなネットワーク通信においては、外部装置からのアクセスとして次のような2種類のアクセスが存在する。
第1の種類のアクセス(第1の種類のプロトコルによるアクセス)は、単一のパケットに対する1回の応答で完結する種類の通信アクセスである。第1の種類のアクセスとしては、名前解決に関する問合せ等が例示される。第2の種類のアクセス(第2の種類のプロトコルによるアクセス)は、複数のパケットに対する応答を要する種類の通信アクセスである。第2の種類のアクセスとしては、TCP/IPによる通信アクセス等が例示される。
たとえば、MFPが名前解決に関連する問合せを他の送信元装置(通信相手)から受信すると、MFPは、自装置のMACアドレス等を当該送信元装置に返信することによって当該問合せに応答する。MFPの省電力状態においては、このような第1の種類のアクセスに対する応答は、メインCPUに代わってサブCPUによって実行される。図6(最上段参照)においては、或る送信元装置80Aからの名前解決プロトコルによる通信パケット701(問合せA(名前解決))に対して、MFPのサブCPUは、メインCPUに代わって問合せ結果(MACアドレス等)を送信元装置80Aに返信している。すなわち、サブCPUは、代理応答を行っている。なお、図6は、比較例に係る動作を示す図である。また、同様に、送信元装置80Bからの名前解決プロトコルによる通信パケット801(問合せB(名前解決))に対して、MFPのサブCPUは、メインCPUに代わって問合せ結果(MACアドレス等)を送信元装置80Bに返信している。
一方、TCP/IPによる通信データ(印刷データ等)等が他の送信元装置から送信されてくる場合には、当該通信データが複数のパケットに分割されて送信されるとともに、本来はMFPが当該複数のパケットのそれぞれに対して確認応答(「ACK」信号)を送信するなどの応答処理を実行することが求められる。
しかしながら、従来のMFPにおいては、複数のパケットに対する応答を要するデータ通信において、サブCPUが代理応答した一部のパケットについてサブCPUからメインCPUへの引き継ぎを行う仕組みが存在しない。特に、第2の種類の通信アクセス(TCP/IP通信等)においては、複数のパケットにおけるシーケンス番号の連続性を担保することが重要であるものの、受信側装置内でのシーケンス番号の連続性を担保する仕組みが存在しなかった。そのため、仮にサブCPUが代理応答してしまうと、再起動後のメインCPUは、当該メインCPUの再起動前にサブCPUによる代理応答にて受信されたパケットのシーケンス番号を知得できず、サブCPUで受信したパケットとメインCPUで受信したパケットとを適切に統合することができない。
これに対して、サブCPUは第2の種類の通信アクセスに対しては応答せず、メインCPUを再起動させるとともに、再起動状態に復帰したメインCPUが第2の種類の通信アクセス等に対して応答処理を行う技術(比較例とも称する)が考えられる。
しかしながら、サブCPUが応答せず再起動後のメインCPUが応答する場合には、通信における所定回数のリトライ処理に要する時間(たとえば2秒)がメインCPUの再起動時間(たとえば3秒)よりも短いとき等に、送信元装置側でタイムアウトが生じてしまうことがある。
図6においては、上述の比較例に係る技術における当該状況が例示されている。具体的には、装置80B(送信元装置)は、3回の接続確立要求(TCP/IP[SYN])(より詳細には、「TCP/IP[SYN]B1」,「TCP/IP[SYN]B2」,「TCP/IP[SYN]B3」)を送信しても、送信先装置(MFP)からの返信(確認要求(ACK)等)を全く受信できない場合に、「タイムアウト」の判定が行われている。なお、図6では、装置80から送信先装置(MFP等)に対して所定回数(ここでは3回)の接続確立要求を送信しても送信先装置(MFP等)から何れの返信(応答)も戻って来ない場合に「タイムアウト」の判定が行われること、を前提としている。
図6の中段付近に示されるように、MFPのメインCPUに対する給電停止状態において、MFPのサブCPUが、TCP/IPによる通信パケット(TCP/IP[SYN] A1)501を別装置(送信元装置)80Aから受信する場合、サブCPUは、メインCPUに対して起動要求を送出する一方で、当該通信パケット501に対しては応答しない。そのため、所定時間(比較的長い時間(たとえば、1.8秒))経過した後、2回目の接続確立要求の通信パケット(TCP/IP[SYN] A2)502が送信元装置80AからMFP10Zに送信される。サブCPUは、当該通信パケット(TCP/IP[SYN] A2)502にも応答しない。そのため、所定時間(たとえば、1.8秒)経過した後、3回目の接続確立要求の通信パケット(TCP/IP[SYN] A3)503が更に送信されてくる。
また、MFPのメインCPUが給電停止状態から通常状態へ復帰している途中の期間(再起動期間中)において、MFPのサブCPUが、TCP/IPによる通信パケット(TCP/IP[SYN] B1)601を別装置(送信元装置)80Bから受信する場合、サブCPUは当該通信パケット601に対しては応答しない。そのため、所定時間(ここでは比較的短い時間(たとえば、0.8秒))経過した後、2回目の接続確立要求の通信パケット(TCP/IP[SYN] B2)602が送信元装置80BからMFP10Zに送信される。サブCPUは、当該通信パケット(TCP/IP[SYN] B2)602にも応答しない。そのため、所定時間(たとえば0.8秒)経過した後、3回目の接続確立要求の通信パケット(TCP/IP[SYN] B3)603が更に送信されてくる。
ここにおいて、図6に示すように、装置80Aからの通信アクセスに関しては、3回目の接続確立要求の通信パケット503の受信時点で、メインCPUの再起動が既に完了しており、メインCPUが、当該通信パケット503に対する応答処理(具体的には、確認応答(「ACK」信号)の送信処理等)を実行する。この場合、装置80Aは確認応答を受信することができるので、適切な処理が行われ得る。
しかしながら、装置80Bからの通信アクセスに関しては、3回目の接続確立要求の通信パケット603の受信時点では、メインCPUの再起動が未だ完了しておらず、サブCPUもメインCPUも当該通信パケット603に応答しない。その結果、装置80Bは、所定期間内に3回の接続確立要求の何れに対する返信(応答)をも受け取ることができず、装置80Bは、「タイムアウト」を判定する。
このように、メインCPUの再起動時間(たとえば3秒)よりも、通信における所定回数のリトライ処理に要する時間(たとえば2秒)が短い場合等において、タイムアウトが生じてしまう、との問題が発生し得る。
このような事情を考慮すると、省電力状態では第2の種類のプロトコルを使用しないようにアプリケーションを構築するなどの対応策を講じることが考えられる。しかしながら、このような対応策は望ましくない。
そこで、この発明は、メインCPUとサブCPUとを備える画像形成装置において、メインCPUが休止状態に移行した後においても、他の装置からの通信アクセスであって複数の通信パケットに対する応答を要する通信アクセスを適切に受け付けることが可能な技術を提供することを課題とする。
上記課題を解決すべく、請求項1の発明は、画像形成装置であって、メインCPUと、前記メインCPUが休止状態を有する期間と前記メインCPUが前記休止状態から起動状態へと復帰している途中の復帰期間とを含む第1の期間において、外部装置からの通信ネットワークを介した特定の種類のアクセスであって複数の受信パケットに対する応答を要する特定の種類のアクセスに対して前記メインCPUに代わって代理応答することが可能なサブCPUと、を備え、前記サブCPUは、前記第1の期間において、前記特定の種類のアクセスに関する前記複数の受信パケットに対して代理応答するとともに、前記複数の受信パケットのそれぞれにシーケンス番号を付与し、前記メインCPUの起動状態への復帰完了後において、前記特定の種類のアクセスに関して前記第1の期間内に前記複数の受信パケットに付与した複数のシーケンス番号に関する最新番号を、前記メインCPUに引き継ぐことを特徴とする。
請求項2の発明は、請求項1の発明に係る画像形成装置において、前記メインCPUは、前記起動状態へ復帰した後、前記サブCPUから引き継いだ前記シーケンス番号の最新の値に対して1つインクリメントした値を前記特定の種類のアクセスにおける次の受信パケットに対して付与し、前記特定の種類のアクセスにおける残余の受信パケットの受信動作を引き継いで実行することを特徴とする。
請求項3の発明は、請求項1または請求項2の発明に係る画像形成装置において、前記サブCPUは、前記第1の期間において前記特定の種類のアクセスに関する前記複数の受信パケットを受信する場合、前記複数の受信パケットの送信元装置に対して確認応答を返信することによって、前記複数の受信パケットに関して代理応答することを特徴とする。
請求項4の発明は、請求項3の発明に係る画像形成装置において、前記サブCPUは、前記第1の期間において前記特定の種類のアクセスに関する前記複数の受信パケットを受信する場合、前記複数の受信パケットによって受信したデータを受信バッファに格納し、前記メインCPUは、前記起動状態へ復帰すると、前記サブCPUによって前記受信バッファに格納されていたデータを取得することを特徴とする。
請求項5の発明は、請求項1から請求項4のいずれかの発明に係る画像形成装置において、前記サブCPUは、異なる複数の装置からの前記特定の種類のアクセスにおける受信パケットのシーケンス番号を前記複数の装置のそれぞれに関して個別に管理することを特徴とする。
請求項6の発明は、画像形成装置に内蔵されたサブCPUに、a)前記画像形成装置のメインCPUが休止状態を有する期間と前記メインCPUが前記休止状態から起動状態へと復帰している途中の復帰期間とを含む第1の期間において、外部装置からのネットワークを介した特定の種類のアクセスであって複数の受信パケットに対する応答を要する特定の種類のアクセスに関する前記複数の受信パケットに対して代理応答するとともに、前記複数の受信パケットのそれぞれにシーケンス番号を付与するステップと、b)前記特定の種類のアクセスに関して前記第1の期間内に前記複数の受信パケットに付与した複数のシーケンス番号に関する最新番号を、前記メインCPUの起動状態への復帰完了後において、前記メインCPUに引き継ぐステップと、を実行させるためのプログラムであることを特徴とする。
請求項7の発明は、請求項1から請求項5のいずれかの発明に係る画像形成装置において、前記特定の種類のアクセスは、TCP/IPによる通信アクセスであることを特徴とする。
請求項8の発明は、請求項6の発明に係るプログラムにおいて、前記特定の種類のアクセスは、TCP/IPによる通信アクセスであることを特徴とする。
請求項1から請求項8に記載の発明によれば、サブCPUは、メインCPUの休止期間と復帰期間とを含む第1の期間において、複数の受信パケットに対する応答を要する特定の種類のアクセスに代理応答し、当該特定の種類のアクセスにおける複数の受信パケットに付与された複数のシーケンス番号に関する最新情報が復帰後のメインCPUに引き継がれる。したがって、メインCPUが休止状態に移行した後においても、他の装置からの通信アクセスであって複数の通信パケットに対する応答を要する通信アクセスを適切に受け付けることが可能である。
以下、本発明の実施形態を図面に基づいて説明する。
<1.装置構成>
図1は、画像形成装置10の機能ブロックを示す図である。ここでは、画像形成装置10として、MFP(マルチ・ファンクション・ペリフェラル(Multi-Functional Peripheral))を例示する。また、図2は、MFP10の外観図である。
MFP10は、スキャン機能、コピー機能、ファクシミリ機能およびボックス格納機能などを備える装置(複合機とも称する)である。具体的には、MFP10は、図1の機能ブロック図に示すように、画像読取部2、印刷出力部3、通信部4、操作パネル部22、メインシステムコントローラ20、サブシステムコントローラ40、および電源部36等を備えており、これらの各部を複合的に動作させることによって、各種の機能を実現する。なお、MFP10は、情報処理装置とも称される。
画像読取部2は、MFP10の所定の位置に載置された原稿を光学的に読み取って(すなわちスキャンして)、当該原稿の画像データ(原稿画像あるいはスキャン画像とも称する)を生成する処理部である。この画像読取部2は、スキャン部であるとも称される。
印刷出力部3は、印刷対象に関するデータに基づいて紙などの各種の媒体に画像を印刷出力する出力部である。
通信部4は、公衆回線等を介したファクシミリ通信を行うことが可能な処理部である。さらに、通信部4は、通信ネットワークを介した通信(ネットワーク通信)を行うことも可能である。通信部4は、他の装置(80A,80B(図2参照)等)とネットワーク通信を行うことが可能である。なお、他の装置としては、パーソナルコンピュータおよび/またはMFP等が例示される。
操作パネル部22は、図2にも示すように、その正面側にタッチパネル22bを有する操作部である。タッチパネル22bは、液晶表示パネルに各種センサ等が埋め込まれて構成され、各種情報を表示するとともに操作者からの各種の操作入力を受け付けることが可能である。換言すれば、タッチパネル22bは、各種の情報を表示する表示部であるとともにユーザからの操作入力を受け付ける操作入力部でもある。
メインシステムコントローラ20は、MFP10に内蔵され、MFP10を統括的に制御する制御装置である。メインシステムコントローラ20は、メインCPU31等を備えている。メインCPU31および各種の半導体メモリ(RAMなどの揮発性メモリ(メインメモリ)32、およびeMMC(embedded Multi Media Card )などの不揮発性メモリ33)等は、コンピュータシステムを構成する。メインシステムコントローラ20は、メインCPU31において、不揮発性メモリ33内に格納されている所定のソフトウエアプログラム(以下、単にプログラムとも称する)を実行することによって、各種の処理部を実現する。また、当該プログラム(詳細にはプログラムモジュール群)は、通信ネットワークを経由してMFP10にインストールされるようにしてもよい。あるいは、当該プログラムは、USBメモリなどの可搬性の記録媒体に記録され、当該記録媒体から読み出されてMFP10にインストールされるようにしてもよい。
電源部36は、AC−DC変換部(不図示)を有しており、AC−DC変換部を用いて、AC電源からの電力(直流変換された後の電力)をMFP10の各部(メインCPU31、揮発性メモリ32,43、不揮発性メモリ33,45、サブCPU41、およびその他の処理部等)に供給することが可能である。また、当該電源部36は、電力制御IC38を有している。電力制御IC38は、MFP10の各部への電力供給を制御するICである。電力制御IC38は、メインCPU31およびサブCPU41(次述)等と協働して、MFP10の各部への電力供給を制御する。
また、MFP10には、サブCPU41も設けられている。MFP10のスリープ状態(省電力状態)等においては、メインCPU31等に対する電力供給が停止される一方で、サブCPU41に対しては電力が供給され、サブCPU41は各種の動作(監視処理および判断処理等)を実行することが可能である。たとえば、サブCPU41は、外部装置との通信動作を制御することが可能である。より具体的には、サブCPU41は、メインCPU31に対する給電停止期間および復帰期間(後述)において、他の装置(外部装置)からの通信ネットワークを介したアクセス(ネットワークアクセス)に対して、メインCPU31の代理で応答(代理応答)することが可能である。
サブCPU41は、および各種の半導体メモリ(SRAMおよびフラッシュROM等)は、コンピュータシステムを構成する。サブCPU41は、その管理下の不揮発性メモリ45(フラッシュROM等)に格納されている所定のプログラムを実行することによって、各種の処理部(通信制御部等)を実現する。当該通信制御部は、外部装置との通信動作を制御する。また、当該プログラム(詳細にはプログラムモジュール群)は、通信ネットワークを経由してMFP10にインストールされるようにしてもよい。あるいは、当該プログラムは、USBメモリなどの可搬性の記録媒体に記録され、当該記録媒体から読み出されてMFP10にインストールされるようにしてもよい。
また、MFP10には、SRAM(スタティックRAM)43も設けられている。後述するように、メインCPU31の休止期間および復帰期間等においては、シーケンス番号および代理受信データ等がサブCPU41によってSRAM43に記憶される。SRAM43は受信バッファとして機能する。さらに、メインCPU31に対する給電が再開されメインCPU31が起動状態に復帰した後においては、SRAM43に格納されていた情報が(拡張バスPCIe(図4参照)等を介して)メインメモリ32に転写され、メインCPU31によって利用される。
<2.動作>
<2−1.代行期間T1(メインCPU31の給電停止期間および復帰期間)>
MFP10が通常動作状態Q1から省電力状態(スリープ状態等)Q2に遷移する際において、メインCPU31は、スナップショットデータ取得処理を開始する。そして、当該スナップショットデータ取得処理が完了すると、メインCPU31は、以後の処理権限をサブCPU41に移譲する。そして、メインCPU31は、自身に対する給電停止指令を電源部36に送出する。これに応答して、電源部36は、メインCPU31等を含むほぼ全ての処理部に対する給電を停止して、MFP10を省電力状態Q2へと遷移させる(図3参照)。
図3に示すように、省電力状態Q2においては、メインCPU31およびメインメモリ32に対する給電は停止されている。
ただし、省電力状態Q2では、サブCPU41およびSRAM43に対しては給電が行われる。サブCPU41は、メインCPU31に対する給電停止期間(メインCPU31の休止期間とも称される)およびそれに引き続く復帰期間(後述)において、他の装置からのネットワークアクセスに対してメインCPU31の代理応答を行うことが可能である。換言すれば、サブCPU41は、代行期間(メインCPU31からサブCPU41へと処理権限が移譲されて代理で処理を実行する期間)において、各外部装置(送信元装置)からの通信を受信し、当該通信に関する代理応答を行うことが可能である。このサブCPU41等の消費電力は、メインCPU31等の消費電力よりも少ない。したがって、省電力状態Q2にてサブCPU41を(メインCPU31に代えて)動作させることによれば、省電力状態Q2にてメインCPU31を動作させる場合よりも消費電力を低減することが可能である。
代行期間T1(メインCPU31に対する給電停止期間T11とそれに引き続く復帰期間T12(図3および図5等参照)とを含む期間)においては、サブCPU41は、本装置(MFP)10(10Z)宛の通信アクセスに対して、メインCPU31の代理で応答する応答処理(代理応答処理)を実行する。後述するように、外部装置(80A,80B等)からMFP10への通信アクセスが行われる場合、サブCPU41は、第1の種類のアクセスと第2の種類のアクセスとの双方に関して、メインCPU31の代理で応答する応答処理(代理応答処理)を実行する。この点(第1の種類のアクセスのみならず第2の種類のアクセスに対してもサブCPU41が代理応答する点)等において、本実施形態は上述の比較例と相違する。
なお、上述のように、第1の種類のアクセス(名前解決プロトコル等によるアクセス)は、単一の通信パケットに対する1回の応答で完結する種類の通信アクセスである。第1の種類のアクセスとしては、名前解決に関する問合せ等が例示される。また、第2の種類のアクセスは、複数のパケットに対する応答を要する種類の通信アクセスである。第2の種類のアクセスとしては、TCP/IPによる通信アクセス等が例示される。第2の種類のアクセスは、複数の受信パケットに分割してデータを送信する種類のアクセスである、とも表現される。
より具体的には、図5に示されるように、代行期間T1(メインCPU31に対する給電停止期間T11とそれに引き続く復帰期間T12とを含む期間)において、サブCPU41は、第1の種類のアクセスに対して代理応答するとともに、第2の種類のアクセス(複数の通信パケット(受信パケット)に対する応答を要するアクセス)に対しても代理応答する。
まず、第1の種類のアクセス(第1の種類のプロトコルによるアクセス)に対しては、上述の比較例等と同様の動作(MACアドレス等の返信処理)が実行される。端的に言えば、サブCPU41による代理応答動作が実行される。たとえば、第1の種類のアクセスとして、名前解決プロトコルの問合せ(パケット701,801等)が他の装置(80Aあるいは80B等)から受信されると、MFP10(10Z)は、自装置10ZのMACアドレス等を送信元装置(80Aあるいは80B等)に返信することによって、当該問合せに応答(代理応答)する。
一方、第2の種類のアクセス(第2の種類のプロトコルによるアクセス)に対しては、上述の比較例とは異なる動作が実行される。たとえば、MFP10(サブCPU41)は、TCP/IPによる通信アクセスを他の装置(80Aあるいは80B等)から受信すると、当該通信アクセスに対する代理応答処理(具体的には、確認応答(ACK信号)の返信処理等)が行われる。
MFP10のサブCPU41は、当該MFP10のメインCPU31の代行期間T1においてTCP/IPによる通信アクセスに関する各通信パケットを受信する場合、当該各通信パケットに関する送信元装置(80Aあるいは80B等)に対して確認応答(「ACK」信号)を返信すること等によって、TCP/IPによる各通信パケットに対して応答(代理応答)する。
より詳細には、まず通信確立のための通信パケット(「SYN」信号)(101,201等)が送信元装置から送信されてくると、MFP10Z(サブCPU41)は、受信した当該「SYN」信号に対して確認応答(「ACK」信号)を返信する。続いて、複数のデータパケット(データ内容を示す通信パケット)が送信元装置から順次に送信されてくると、MFP10Z(サブCPU41)は、受信した当該複数のデータパケットに対して確認応答(「ACK」信号)を返信する。このように、TCP/IPによる通信アクセス(詳細にはその複数のパケット)に対して、サブCPU41は、確認応答を返信する。
また、この実施形態においては、サブCPU41は、各送信元装置からの第2の種類のアクセスに関する複数の受信パケットのそれぞれに対してシーケンス番号(連続番号)を順次に付与する。当該シーケンス番号は、1番(あるいは0番)から開始される必要はなく、適宜の番号から開始されればよい。また、当該シーケンス番号は、メインCPUの省電力状態移行前までにメインCPUにて利用されていたシーケンス番号とは無関係の番号(サブCPU41が独自に付与した番号)であってよい。当該シーケンス番号は、受信パケットの管理用シーケンス番号であり、サブCPU41によって付与され管理される。また、当該シーケンス番号は、送信元装置ごと且つアクセスごとに付与され管理される。
たとえば、装置80Aから送信されてきたTCP/IP通信に関する受信パケットに対しては、「101」から始まる連続番号が順次に付与され、装置80Bから送信されてきたTCP/IP通信に関する受信パケットに対しては、別の番号「201」から始まる連続番号が順次に付与される。なお、装置80Aから送信されてきた名前解決プロトコルに関する受信パケットに対しては、別の番号「701」等が付与され、装置80Bから送信されてきた名前解決プロトコルに関する受信パケットに対しては、更に別の番号「801」等が付与される。このように、送信元装置ごと且つアクセス(種類)ごとに互いに異なるシーケンス番号が付与される。
また、代行期間T1においては、各送信元装置からの第2の種類のアクセスに関する最新のシーケンス番号(送信元装置ごとの最新シーケンス番号)がサブCPU41によってSRAM43に記憶される。
たとえば、或る送信元装置80Aからの通信パケット101(「TCP/IP[SYN]A1」)に対してはシーケンス番号「101」が付与されると、これに応じて、通信パケット101の受信時点における最新のシーケンス番号(送信元装置80Aからのアクセスに関する複数のシーケンス番号のうちの最新情報「最新シーケンス番号」)として「101」がSRAM43に記憶される。
その後、同じ送信元装置80Aからの次の通信パケット102(「TCP/IP[data]A2」)に対して、シーケンス番号「102」(直前の「101」を1つインクリメントした値)が付与される。これに応じて、通信パケット102の受信時点における最新シーケンス番号(送信元装置80Aからのアクセスに関する最新シーケンス番号)として「102」がSRAM43に記憶される。
一方、別の送信元装置80Bからの通信パケット201(「TCP/IP[SYN]B1」)に対しては別系統のシーケンス番号「201」が付与される。これに応じて、通信パケット201の受信時点における最新のシーケンス番号(送信元装置80Bからのアクセスに関する複数のシーケンス番号のうちの最新情報「最新シーケンス番号」)として「201」がSRAM43に記憶される。
同様に、その後、当該別の送信元装置80Bからの次の通信パケット202(「TCP/IP[data]B2」)に対してはシーケンス番号「202」(直前の「201」を1つインクリメントした値)が付与される。これに応じて、通信パケット202の受信時点における最新シーケンス番号(送信元装置80Bからのアクセスに関する最新シーケンス番号)として「202」がSRAM43に記憶される。
また、サブCPU41による代理応答においてデータが受信される場合には、受信されたデータ(代理受信データ)はSRAM43に記憶される。たとえば、通信パケット102で受信されたデータ、および通信パケット202で受信されたデータ等が、SRAM43に格納される。また、各パケットに関する代理受信データは、サブCPU41によって当該各パケットに対して付与されたシーケンス番号に関連付けられてSRAM43に記憶される。
なお、後述するように、SRAM43に格納されていた情報(最新シーケンス番号および代理受信データ)は、メインCPU31が起動状態に復帰した後において、SRAM43を介してサブCPU41からメインCPU31へと引き渡され、メインCPU31によって利用される。
また、この実施形態においては、サブCPU41は、代行期間T1において最初に第2の種類のアクセスを受信すると、メインCPU31を再起動すべき旨を判定する。図5では、或る送信元装置80Aからの通信パケット101(「TCP/IP[SYN]A1」)が受信されると、メインCPU31を再起動すべき旨が判定される。そして、サブCPU41は、メインCPU31および電源部36に対して、メインCPU31の再起動指令(メインCPU31を起動状態へと復帰させる復帰指令)(メインCPU31に対する起動要求とも称される)を送出する。電源部36は、メインCPU31およびメインメモリ32等への給電を再開し、メインCPU31は再起動動作を開始する(図4参照)。
なお、メインCPU31は、たとえば、不揮発性メモリ33に記憶されていたスナップショットデータ等を用いることによって高速に起動(再起動)することが可能である。スナップショットデータを用いた高速起動による再起動動作の所要時間は、スナップショットデータを用いない通常の再起動動作の所要時間(たとえば数十秒程度)よりも短い時間(たとえば数秒程度)で済む。
メインCPU31が再起動処理によって給電停止状態から起動状態に復帰するまで(再起動が完了するまで)の復帰期間(たとえば、数秒〜数十秒(ここでは3秒程度))において、サブCPU41は、メインCPU31の代理で各種の通信アクセスに対する応答処理(代理応答処理)を実行する。
<2−2.メインCPU31の再起動完了後(代行期間T1終了後)>
その後、メインCPU31は、起動状態に復帰すると復帰完了通知をサブCPU41に対して送出し、サブCPU41は、当該復帰完了通知を受け付けると、代理権限をメインCPU31に返上する(メインCPU31に権限を移譲する)。メインCPU31は、再び通常動作(ネットワーク通信動作を含む)を実行する。
権限移譲の完了に伴って、サブCPU41は、他装置との通信動作を停止する。一方、メインCPU31は、サブCPU41から受け取った情報(サブCPU41からSRAM43を介して引き継いだ「最新シーケンス番号」)に基づいて、第2の種類のアクセスに関する残余の受信パケットの受信動作を継続する。換言すれば、メインCPU31は、当該残余の受信パケットの受信動作をサブCPU41から引き継いで実行する。具体的には、メインCPU31は、サブCPU41から受け取った各最新シーケンス番号に対して1つインクリメントした番号を次の各受信パケットに対して付与し、受信動作を継続する。
また、メインCPU31が再起動状態に復帰すると、SRAM43に格納されていた情報(各最新シーケンス番号および各受信データ)がメインメモリ32に転写され、メインCPU31によって利用される。換言すれば、メインCPU31は、SRAM43を介して、第2の種類のアクセスにおける受信パケットに付与された複数のシーケンス番号に関する最新情報(最新シーケンス番号)を復帰後のメインCPUに引き継ぐ。
たとえば、メインCPU31は、送信元装置80AからのTCP/IP通信(「TCP/IP[data]Ai」)に関して最新シーケンス番号「102」を、SRAM43を介してサブCPU41から受け取る。そして、メインCPU31は、送信元装置80Aからの次の通信パケット103(「TCP/IP[data]A3」)に対してシーケンス番号「103」(直前の「102」を1つインクリメントした値)を付与する。また、通信パケット103の受信時点における最新シーケンス番号(送信元装置80Aからのアクセスに関する最新シーケンス番号)として「103」をメインメモリ32に記憶する。その後の新たな通信パケット104,105,...についても同様の受信処理が行われればよい。
同様に、メインCPU31は、送信元装置80BからのTCP/IP通信(「TCP/IP[data]Bi」)に関して最新シーケンス番号「202」を、SRAM43を介してサブCPU41から受け取る。そして、メインCPU31は、送信元装置80Bからの次の通信パケット203(「TCP/IP[data]B3」)に対してシーケンス番号「203」(直前の「202」を1つインクリメントした値)を付与する。また、通信パケット203の受信時点における最新シーケンス番号(送信元装置80Bからのアクセスに関する最新シーケンス番号)として「203」をメインメモリ32に記憶する。その後の新たな受信パケット204,205,...についても同様の受信処理が行われればよい。
また、メインCPU31は、当該TCP/IPによる通信において、複数の通信パケットに基づくデータを、通信パケットごとの各受信データに関連付けて記憶されたシーケンス番号に基づいて復元する。換言すれば、各パケットに関する受信データと当該各パケットに対してサブCPU41およびメインCPU31によって付与されたシーケンス番号との対応関係もが利用される。これにより、たとえば、シーケンス番号「102」,「103」,..が付与された各パケットのデータに基づいて正しい全体データ(印刷データ等)が復元される。この際、SRAM43に格納されていた情報(各最新シーケンス番号および受信データ)がメインメモリ32に転写され、メインCPU31によって利用される。これによって、メインCPU31は、復帰前にてサブCPU41によって代理受信されたデータをも正確に反映した正しいデータ(装置80Aからの送信データ(たとえば印刷データ))を取得することが可能である。
同様に、メインCPU31は、シーケンス番号「202」,「203」,...の各通信パケットでの受信データを元の送信順序に並べ替えて正しいデータを復元する。この際、SRAM43に格納されていた情報(各最新シーケンス番号および受信データ)がメインメモリ32に転写され、メインCPU31によって利用される。これによれば、メインCPU31は、復帰前にてサブCPU41によって代理受信されたデータをも正確に反映した正しいデータ(装置80Bからの送信データ)を取得することが可能である。
<2−3.実施形態における効果等>
以上のような動作によれば、サブCPU41は、代行期間T1において、複数の受信パケットに対する応答を要する第2の種類のアクセスにも代理応答する。そして、第2の種類のアクセスにおける受信パケットに付与された複数のシーケンス番号のうちの最新情報(最新番号)が、復帰完了後のメインCPU31に引き継がれる。そのため、或る装置(たとえば80B)からの第2の種類のアクセスに関して、メインCPU31の給電停止状態への移行後から再起動完了前(復帰完了前)までに受信されたパケット(代行期間T1で受信されたパケット)のシーケンス番号と、再起動完了後(復帰完了後)のメインCPU31にて引き続いて受信されたパケットのシーケンス番号との連続性を担保することが可能である。したがって、メインCPU31が休止状態に移行した後においても、外部装置(80A,80B等)からの通信アクセスであって複数の通信パケットに対する応答を要する通信アクセスを適切に受け付けることが可能である。
特に、メインCPU31に対する給電停止期間中および復帰期間中において、サブCPU41が第2の種類のアクセスに対して確認応答(ACK)を代理で返信するので、当該確認応答を受信した送信元装置80B等は、リトライを行わずに直ちに次のパケット送信を行うことができる。したがって、タイムアウト判定が行われることを回避し、且つ、複数のパケットによるデータ送信を停滞させずに適切に進行させることが可能である。
なお、ここでは、第2の種類のアクセスとしてTCP/IPによる通信を例示しているが、これに限定されず、その他の各種の通信(その他のデータ転送用プロトコルを用いた通信等)であってもよい。また、第2の種類のアクセスとして複数の異なるプロトコルの通信が行われる場合には、各プロトコルごとにシーケンス番号が管理されればよい。
<3.変形例等>
以上、この発明の実施の形態について説明したが、この発明は上記説明した内容のものに限定されるものではない。
たとえば、上記実施形態等においては、サブCPU41は、複数の受信パケットのそれぞれに個別に応答しているが、これに限定されず、サブCPU41は、いくつかの受信パケット(たとえば2個の受信パケット)に対して纏めて応答(確認応答等)するようにしてもよい。
また、上記実施形態等においては、サブCPU41は、代行期間T1において第2の種類のアクセスを受信する場合、当該第2の種類のアクセスに関する送信元装置に対して確認応答(データを正常受信した旨のACK信号)を返信することによって、当該第2の種類のアクセスに対して応答(代理応答)しているが、これに限定されない。
たとえば、サブCPU41は、メインCPU31に対する給電停止期間中に第2の種類のアクセスを受信する場合、当該第2の種類のアクセスに関する送信元装置に対して実質的な待機要求(ウエイト指令等)を返信することによって、当該第2の種類のアクセスに対して応答(代理応答)するようにしてもよい。換言すれば、サブCPU41は、送信元装置からのデータ送信を抑止しつつ当該送信元装置への返信(応答)を行うようにしてもよい。
詳細には、サブCPU41は、たとえばTCP/IP通信におけるウインドウサイズ(Window Size)をゼロに設定変更した旨をも有する返信を、「ウエイト指令」として送信すればよい。より詳細には、パケット101(,201等)(図5参照)に対する応答として、「ウインドウサイズ(Window Size)をゼロに設定変更した旨をも有するACK」がMFP10から装置80A(,80B等)へと送信されればよい。
ウインドウサイズをゼロに設定変更した返信が送信元装置(80)に送信されることによれば、送信先装置(MFP)は、当該送信先装置の受信バッファメモリの空き容量不足に起因してデータ受信できないことを送信元装置(80)に伝達することができる。これによって、送信元装置(80)からのデータ送信を抑止することが可能である。
ウインドウサイズがゼロに設定された旨の返信を受信した送信元装置(80)は、一定期間の待機の後に、新たなウインドウサイズの送信依頼をMFP(送信先装置)に送信する。
このときMFPのメインCPU31の起動状態への復帰が未だ完了していない場合には、サブCPU41が、当該送信依頼を受信するとともに、新たなウインドウサイズとして依然として「ゼロ」を返信する。これにより、送信元装置からのデータ送信抑止が継続される。
一方、このときMFPのメインCPU31の起動状態への復帰が既に完了していれば、メインCPU31が、当該送信依頼を受信するとともに、新たなウインドウサイズとして、「ゼロよりも大きな値」(たとえば、数キロバイト)を送信する。これによれば、送信元装置からのデータ送信を再開することができる。
このようにして、サブCPU41は、送信元装置からのデータ送信を抑止しつつ当該送信元装置への返信(応答)を行うようにしてもよい。
また、このような場合には、代行期間T1において、送信元装置(80B等)は、「ウエイト指令」をパケット送信に対する応答として受信しており、送信先装置(MFP)からの何らかの返信(応答)を受信している。したがって、送信元装置(80B等)は、タイムアウト判定を行わない。その後、ウエイト指令に関連する送受信(新たなウインドウサイズの送信依頼等)が何回か繰り返された時点では既にメインCPU31の再起動が完了している。したがって、正常な通信を継続することが可能である。なお、この場合、外部装置からのデータを受信する処理は、たとえば、メインCPU31の復帰後に、メインCPU31によって行われればよい。