説明

通信装置

【課題】 第1処理部をスリープ状態から非スリープ状態に適切なタイミングで移行させることにより、受信したデータを処理し終えるのが大幅に遅れることを抑制することができる技術を提供すること。
【解決手段】 プリンタは、メインCPUとサブCPUを備える。メインCPUは、スリープ状態と非スリープ状態との間で状態が移行する。サブCPUは、メインCPUがスリープ状態である場合に、ネットワークのトラフィック量を検出(S174)し、トラフィック量が閾値よりも大きい場合(S176でYES)に、メインCPU14をスリープ状態から非スリープ状態に移行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークに接続される通信装置に関する。
【背景技術】
【0002】
特許文献1に、第1処理部と第2処理部とを備える通信装置が開示されている。第1処理部は、消費電力が比較的に小さいスリープ状態と、消費電力が比較的に大きい非スリープ状態と、の間で状態が移行する。この通信装置では、第1処理部が最後に処理を実行してから所定期間経過すると、第1処理部がスリープ状態に移行する。これにより、通信装置の省電力化が実現される。この通信装置では、第1処理部がスリープ状態である場合に、ネットワークを介して第1処理部が処理すべき特定のデータを受信すると、第2処理部は、第1処理部をスリープ状態から非スリープ状態に移行させる移行処理を開始する。第1処理部は、非スリープ状態に移行した後に、上記した特定のデータを処理する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−5029号公報
【特許文献2】特開2001−34437号公報
【特許文献3】特開2005−66894号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1の技術では、第1処理部が処理すべき特定のデータが受信された後に、第1処理部をスリープ状態から非スリープ状態に移行させる。第1処理部をスリープ状態から非スリープ状態に移行させるには、移行期間が必要である。第1処理部の移行期間中に、多くのデータを受信する可能性がある。第1処理部は、移行期間中にデータを処理することができない。このために、移行期間中に受信した全てのデータを処理し終えるまでに、多くの時間がかかる。本明細書では、第1処理部をスリープ状態から非スリープ状態に適切なタイミングで移行させることにより、受信したデータを処理し終えるのが大幅に遅れることを抑制することができる技術を提供する。
【課題を解決するための手段】
【0005】
本明細書によって開示される技術は、ネットワークに接続される通信装置に関する。この通信装置は、第1処理部と第2処理部を備える。第1処理部は、スリープ状態と非スリープ状態との間で状態が移行する。第1処理部は、非スリープ状態である場合に、ネットワークを介して受信する第1のデータを処理する。なお、上記した非スリープ状態は、例えば、スリープ状態と比べて消費電力が大きい状態と言い換えてもよい。第2処理部は、第1処理部がスリープ状態である場合に、ネットワークを介して受信する第2のデータに対して、第1処理部に代理して代理応答処理を実行する。第2処理部は、第1処理部がスリープ状態である場合に、ネットワークの第1のトラフィック量を検出し、第1のトラフィック量が第1の閾値よりも大きい場合に、第1処理部をスリープ状態から非スリープ状態に移行させる。なお、第1のトラフィック量は、通信装置が受信するデータ量を用いて求められてもよいし、通信装置が受信するのか否かに関わらずネットワーク上で通信されるデータ量を用いて求められてもよい。また、ネットワークの第1のトラフィック量は、例えば、ネットワークの現在の第1のトラフィック量と言い換えてもよい。
【0006】
トラフィック量が小さい場合と比べると、トラフィック量が大きい場合は、通信装置が処理すべき多くのデータを受信することになる。上記した通信装置では、第2処理部は、第1のトラフィック量が第1の閾値よりも大きくなると、第1処理部をスリープ状態から非スリープ状態に移行させる。第1の閾値を適切な値に設定すれば、通信装置が処理すべきデータがそれほど多くない状態で第1処理部をスリープ状態から非スリープ状態に移行させることができる。このため、通信装置が処理すべきデータが非常に多い状態で第1処理部がスリープ状態から非スリープ状態に移行されることがなく、データを処理するのが大幅に遅れるという事態が発生するのを抑制することができる。
【0007】
第2処理部は、さらに、第1処理部がスリープ状態である場合において、第1処理部によって処理されるべき特定のデータを受信する場合に、第1処理部をスリープ状態から非スリープ状態に移行させてもよい。
【0008】
上記した通信装置は、第1メモリと第2メモリとをさらに備えていてもよい。第1メモリは、第1処理部が非スリープ状態である場合に使用されてもよい。第1メモリは、第1状態と、第1状態よりも消費電力が小さい第2状態と、の間で状態が移行してもよい。第2メモリは、第1処理部がスリープ状態である場合に使用されてもよい。第1メモリは、第1処理部がスリープ状態から非スリープ状態に移行する場合に、第2状態から第1状態に移行してもよい。第2処理部は、第1メモリが第2状態から第1状態に移行する移行期間中に、ネットワークを介して順次受信する複数の第3のデータを、第2メモリのデータ記憶領域に順次格納してもよい。第1処理部は、非スリープ状態に移行した後に、データ記憶領域に格納された複数の第3のデータを処理してもよい。第1の閾値は、第1メモリの移行期間中にデータ記憶領域に格納されるべき複数の第3のデータの合計データ量が、データ記憶領域の容量を超えないように、設定されてもよい。
この通信装置では、第1処理部がスリープ状態から非スリープ状態に移行するのに伴って、第1メモリも、第2状態から第1状態に移行する。第2処理部は、第1メモリが第2状態から第1状態に移行する移行期間中に順次受信する複数の第3のデータを、第2メモリのデータ記憶領域に順次格納する。このため、第1メモリの第2状態から第1状態への移行期間中に、データ記憶領域の容量を超えるデータ量の第3のデータを受信すると、第3のデータをデータ記憶領域に格納することができなくなってしまう。この通信装置では、第1の閾値は、第1メモリの移行期間中にデータ格納領域に格納されるべき複数の第3のデータの合計データ量が、データ記憶領域の容量を超えないように、設定されている。この結果、第1メモリの移行期間中に、第3のデータをデータ格納領域に格納しきれないという事態が発生するのを抑制することができる。
【0009】
第1の閾値は、特定の値より小さくてもよい。特定の値は、第2メモリのデータ記憶領域の最大容量がnであり、移行期間がTIMEである場合に、n/TIMEであってもよい。即ち、特定の値は、仮に、通信装置に受信される単位時間当りのデータ量が特定の値である状態で移行期間を経ると、移行期間中に受信するデータ量が第2メモリのデータ記憶領域の最大容量に一致するように設定されていてもよい。
【0010】
第1処理部は、非スリープ状態である場合に、ネットワークの第2のトラフィック量を検出してもよい。第1処理部は、第2のトラフィック量が第2の閾値よりも大きい場合に、第1処理部が非スリープ状態からスリープ状態に移行することを禁止してもよい。また、第2のトラフィック量が第2の閾値よりも小さい場合に、第1処理部が非スリープ状態からスリープ状態に移行することを許容してもよい。なお、第2のトラフィック量は、通信装置が受信するデータ量を用いて求められてもよいし、通信装置が受信するのか否かに関わらずネットワーク上で通信されるデータ量を用いて求められてもよい。また、ネットワークの第2のトラフィック量は、例えば、ネットワークの現在の第2のトラフィック量と言い換えてもよい。また、上記した第2の閾値は、上記した第1の閾値と同じ値であってもよいし、小さくてもよい。
仮に、トラフィック量が比較的に大きい状態で、第1処理部が非スリープ状態からスリープ状態に移行されると、第1のトラフィック量が第1の閾値よりも大きくなり、第1処理部がスリープ状態から非スリープ状態に移行される可能性が高い。この通信装置では、第1処理部は、第2のトラフィック量が第2の閾値よりも大きい場合に、第1処理部が非スリープ状態からスリープ状態に移行することを禁止する。第2の閾値を適切な値に設定すれば、第1処理部が非スリープ状態からスリープ状態に移行された後、すぐに、非スリープ状態に移行される事態を防止することができる。これにより、第2処理部が不要な処理を実行することを防止することができる。
第1処理部は、第2のトラフィック量が第2の閾値よりも小さく、かつ、第1処理部の処理待ち状態が所定期間だけ継続した場合に、第1処理部が非スリープ状態からスリープ状態に移行することを許容してもよい。
【0011】
トラフィック量は、所定期間中に受信するパケット数を用いて決定されていてもよく、所定数のパケットを受信する期間を用いて決定されていてもよい。また、トラフィック量は、通信装置が受信する単位時間当りのデータ量であってもよい。
【0012】
なお、上記した通信装置を実現するための制御方法、及び、コンピュータプログラムも新規で有用である。
【図面の簡単な説明】
【0013】
【図1】通信システムの構成を示す。
【図2】プリンタの状態移行の一例を示す。
【図3】プリンタの状態に対応する各部の状態の一例を示す。
【図4】プリンタの状態に対応するRAMの格納状態の一例を示す。
【図5】メインCPUでの省電力処理のフローチャートを示す。
【図6】メインCPUでの許可フラグ値決定処理のフローチャートを示す。
【図7】メインCPUでの状態移行判断処理のフローチャートを示す。
【図8】サブCPUでの省電力処理のフローチャートを示す。
【図9】サブCPUでのパケット受信処理のフローチャートを示す。
【発明を実施するための形態】
【0014】
図面を参照して実施例を説明する。図1は、本実施例の通信システム2の概略図を示す。通信システム2は、LAN4と外部装置6とプリンタ10とを備える。外部装置6とプリンタ10は、LAN4に接続されている。外部装置6とプリンタ10は、LAN4を介して、相互に通信可能である。
【0015】
(プリンタの構成)
図1に示すように、プリンタ10は、制御部12と、ネットワークインターフェイス30(以下では、「ネットワークI/F30」という)と、プリントエンジン34と、表示パネル38等を備える。制御部12は、メインCPU14と、メイン用クロック回路16と、ROM18と、2つのRAM20,22と、サブCPU24と、サブ用クロック回路26と、MACコントローラ28と、エンジン制御回路32と、パネル制御回路36等を備える。
【0016】
メインCPU14は、DRAM22に格納されているプログラムに従って様々な処理を実行する。メインCPU14は、2つタイマ機構を内蔵している。以下では、一方のタイマのことを待機状態タイマと呼び、他方のタイマのことをメイン用パケット受信タイマと呼ぶ。また、メインCPU14は、時計機構を内蔵している。メイン用クロック回路16は、メインCPU14にクロック信号を供給する。メインCPU14にクロック信号が供給されている間は、メインCPU14は非スリープ状態である。メインCPU14にクロック信号が供給されていない間は、メインCPU14はスリープ状態である。なお、後述するように、メイン用クロック回路16は、サブCPU24によって制御される。
【0017】
サブCPU24は、SRAM20に格納されているプログラムに従って様々な処理を実行する。サブCPU24は、時計機構を内蔵している。また、サブCPU24は、タイマ機構を内蔵している。以下では、このタイマのことをサブ用パケット受信タイマと呼ぶ。サブ用クロック回路26は、サブCPU24にクロック信号を供給する。サブ用クロック回路26のクロック信号の周波数は、メイン用クロック回路16のクロック信号の周波数よりも低い。従って、メインCPU14を駆動するための消費電力と比べて、サブCPU24を駆動するための消費電力は小さい。サブ用クロック回路26は、プリンタ10の電源がONにされると、サブCPU24にクロック信号を供給する。また、プリンタ10の電源がOFFにされると、サブCPU24へのクロック信号を停止する。即ち、サブCPU24は、プリンタ10の電源がONされている間、スリープ状態には設定されず、非スリープ状態で維持される。
【0018】
ROM18には、メインCPU14及びサブCPU24によって実行される複数のプログラムがそれぞれ圧縮された状態で格納されている。各プログラムは、プリンタ10の電源がONされたときに、SRAM20又はDRAM22に展開される。メインCPU14又はサブCPU24は、SRAM20又はDRAM22に展開されたプログラムを使用して処理を実行する。ROM18に格納されている全てのプログラムは、プリンタ10の電源がONにされると、一旦、DRAM22に展開される。次いで、DRAM22に展開された複数のプログラムのうち、予め決められているプログラムが、SRAM20にロードされる。なお、図示省略されているが、制御部12は、SRAM20とDRAM22のそれぞれに対してクロック信号を供給するための回路も有する。
【0019】
SRAM20は、メインCPU14とサブCPU24からアクセス可能である。SRAM20は、パケット格納領域21を備える。パケット格納領域21は、後述するように、DRAM22が通常動作モードでない場合(図4の期間61,62,66)に、LAN4を介して受信するパケットを格納する。パケット格納領域21は、n個(nは2以上の整数)の領域を備える。本実施例では、n個の領域のそれぞれの容量は、128Byteに設定されている。128Byte以下のパケットを受信すると、そのパケットは、1個の領域に格納される。一方、128Byteを超えるサイズのパケットを受信すると、そのパケットのサイズに合わせて、1つのパケットが2個以上の領域に亘って格納される。
【0020】
SRAM20には、後述するように、サブCPU24が実行する省電力処理(図8参照)を実行するためのプログラムや、サブCPU24がメインCPU14に代理して処理を実行する(図9のS184)際に使用するプログラムが格納される。メインCPU14は、プリンタ10の電源がONされると、DRAM22に展開された複数のプログラムのうち、予め設計者等によって決められているサブCPU24用のプログラムをSRAM20にロードして格納する。
【0021】
SRAM20には、さらに、サブCPU24がメインCPU14に代理して処理を実行するために必要な情報が格納される。この情報の一例として、プリンタ10のIPアドレス、MACアドレス、ノード名等が挙げられる。メインCPU14は、スリープ状態に移行可能となると(図5のS26でYES)、サブCPU24がメインCPU14に代理して処理を実行するために必要な情報を、SRAM20に格納する。また、SRAM20には、後述する各処理を実行するために必要な情報が格納される。SRAM20に格納される情報は、各処理の説明に併せて説明する。
【0022】
さらに、SRAM20には、プリンタ10の状態を示す状態変数が格納される。プリンタ10は、「処理状態」、「待機状態」、「ライトスリープ状態(Lスリープ状態)」、「ディープスリープ状態(Dスリープ状態)」のいずれかの状態で動作する。従って、SRAM20には、4つの状態に対応する4つの値のうちの1つの値が格納される。
【0023】
DRAM22は、メインCPU14からアクセス可能である。DRAM22は、SRAM20よりもメモリの総容量が大きい。このため、DRAM22は、SRAM20と比べて、その消費電力が高い。DRAM22には、メインCPU14がネットワークを介して通信する処理を実行するためのネットワーク処理プログラムが格納される。このネットワーク処理プログラムは、ARP、NetBIOS−NS、ICMP等に関する応答処理(即ちメインCPU14が非スリープ状態の間に実行すべき応答処理)を実行するためのプログラム、印刷指示に応じて印刷処理を実行するためのプログラム等を含む。ネットワーク処理プログラムは、さらに、MACコントローラ28を制御するためのプログラム、TCP/IPを利用して処理を実行するためのTCP/IPプロトコルスタック、各種のアプリケーションプロトコルを利用して処理を実行するためのプログラム等を含む。また、DRAM22には、後述するメインCPU14が実行する省電力処理(図5参照)を実行するためのプログラムが格納される。メインCPU14は、プリンタ10の電源がONされると、ROM18に格納されているネットワーク処理プログラムをDRAM22に展開して格納する。
【0024】
さらに、DRAM22には、メインCPU14が処理を実行する際に必要な情報が格納される。例えば、プリンタ10のIPアドレス、MACアドレス、ノード名、ステータス情報等が格納される。メインCPU14は、情報に変更があった場合、格納されている情報を修正する。また、DRAM22には、さらに、後述する各処理に必要な情報が格納される。DRAM22が格納する情報は、各処理の説明に併せて説明する。
【0025】
図1に示すネットワークI/F30は、LAN4に接続されている。MACコントローラ28は、ネットワークI/F30によって受信されたパケットをプリンタ10が処理可能な形式に変換する。エンジン制御回路32は、メインCPU14からの指示に従って、プリントエンジン34を制御する。パネル制御回路36は、メインCPU14からの指示に従って、表示パネル38を制御する。表示パネル38は、LCDである。パネル制御回路36は、表示パネル38をON状態とOFF状態との間で移行させる。即ち、パネル制御回路36は、表示パネル38に電圧を印加することによって表示パネル38をON状態とし、電圧の印加を停止することによって表示パネル38をOFF状態とする。
【0026】
(プリンタの状態移行)
図2は、プリンタ10の状態が移行する様子を示す。プリンタ10は、処理状態42と待機状態44とLスリープ状態46とDスリープ状態48との間で状態が移行する。図3は、プリンタ10が各状態42,44,46,48の場合に、メインCPU14、サブCPU24、2つのRAM20,22、及び、表示パネル38の状態を表わす表60を示す。プリンタ10の電源がONされると、プリンタ10は、待機状態44となる。図3に示すように、待機状態44では、2つのCPU14,24にクロックが供給されている(即ち、2つのCPU14,24は非スリープ状態である)。2つのRAM20,22は通常動作モードであり、表示パネル38はON状態である。
【0027】
プリンタ10が待機状態44である場合に、外部装置6からの要求(パケット)に応答する処理以外の通常の処理を実行する場合、プリンタ10は、処理状態42に移行する。なお、上記の通常の処理は、印刷指示に応じて実行される印刷処理、ユーザによって表示パネル38の操作が為された場合に実行される表示処理等を含む。処理状態42は、待機状態44と同様、2つのCPU14,24は非スリープ状態であり、2つのRAM20,22は通常動作モードであり、表示パネル38はON状態である。処理状態42と待機状態44との相違点は、メインCPU14が上記の通常の処理を実行しているか否かである。メインCPU14が上記の通常の処理を終了すると、プリンタ10は、待機状態44に移行する。
【0028】
メインCPU14は、待機状態44に移行すると、上記した待機状態タイマをスタートする。待機状態44が所定時間継続すると、メインCPU14は、パネル制御回路36(図1参照)に、表示パネル38をOFF状態にするように指示する。この結果、プリンタ10は、Lスリープ状態46に移行する。Lスリープ状態46では、2つのCPU14,24は非スリープ状態であり、2つのRAM20,22は通常動作モードであり、表示パネル38はOFF状態である。これにより、表示パネル38で消費される電力を低減させることができる。Lスリープ状態46において、メインCPU14が上記の通常の処理(印刷処理、表示処理等)を実行すべき場合には、プリンタ10は、処理状態42に移行する。
【0029】
プリンタ10は、後述する省電力処理(図5参照)を実行することによって、Lスリープ状態46からDスリープ状態48に移行する。Dスリープ状態48では、メインCPU14はスリープ状態(クロック信号が供給されない状態)であり、サブCPU24は非スリープ状態であり、SRAM20は通常動作モードであり、DRAM22はセルフリフレッシュモード(即ち、通常動作モードよりも消費電力が低いモード)であり、表示パネル38はOFF状態である。Dスリープ状態48において、メインCPU14が上記の通常の処理(印刷処理、表示処理等)を実行すべき場合には、プリンタ10は、Lスリープ状態46を経て処理状態42に移行する。プリンタ10がDスリープ状態48からLスリープ状態46に移行する期間では、DRAM22がセルフリフレッシュモードから通常動作モードに移行するとともに、メインCPU14がスリープ状態から非スリープ状態に移行する。以下では、DRAM22がセルフリフレッシュモードから通常動作モードに移行する期間を移行期間50と呼ぶ。
【0030】
プリンタ10が各状態42,44,46,48の場合に、プリンタ10がLAN4を介して受信するパケットが、2つのRAM20,22のいずれに格納されるかを説明する。図4は、各状態42,44,46,48において、パケットが2つのRAM20,22のいずれに格納されるのかを模式的に示す。ここでは、プリンタ10がDスリープ状態48から移行期間50を経て、Lスリープ状態46、待機状態44、又は、処理状態42に移行し、その後、Dスリープ状態48に移行する場合について説明する。
【0031】
プリンタ10がDスリープ状態48である場合、サブCPU24は、LAN4を介して受信する受信パケットをSRAM20に格納する。即ち、期間61では、受信パケットを通常動作モードであるSRAM20に格納する。Dスリープ状態48では、サブCPU24は、受信パケットに対して、メインCPU14に代理して代理応答処理を実行する。移行期間50である場合、サブCPU24は、受信パケットをSRAM20に格納する。即ち、期間62では、受信パケットをSRAM24に格納する。移行期間50中では、サブCPU24は、代理応答処理を実行しない。従って、移行期間50中の受信パケットは、SRAM20に順次格納される。移行期間50が終了し、メインCPU14が非スリープ状態に移行した時点63において、メインCPU14は、移行期間50中にSRAM20に蓄積された受信パケットをDRAM22に移動させる。
【0032】
プリンタ10がLスリープ状態46、待機状態44、又は、処理状態42である場合、メインCPU14は、受信パケットを通常動作モードであるDRAM22に格納する。即ち、期間64では、受信パケットは、DRAM22に格納される。メインCPU14は、受信パケットをSRAM20に格納しない。メインCPU14は、DRAM22に格納されている受信パケットを処理する。プリンタ10が再びDスリープ状態48に移行した時点65以降の期間66では、サブCPU24は、受信パケットをSRAM20に格納する。
【0033】
(メインCPUでの省電力処理)
次いで、メインCPU14が実行する処理の内容について説明する。図5は、メインCPU14によって実行される省電力処理のフローチャートを示す。図5の処理は、プリンタ10の電源がONされ、メインCPU14が待機状態タイマをリセットすると開始される。なお、メインCPU14は、省電力処理と、後述する許可フラグ値決定処理(図6参照)と、を並行して実行する。プリンタ10の電源がONされた時点では、プリンタ10は待機状態44である。メインCPU14は、SRAM20に待機状態44を示す状態変数を格納する。メインCPU14は、DRAM22に格納されているプログラムを使用して以下の処理を実行する。
【0034】
メインCPU14は、SRAM20に格納されている状態変数が待機状態44を示すのか否かを判断する(S12)。ここでは、プリンタ10は、Lスリープ状態46と待機状態44と処理状態42のいずれかである。即ち、DRAM22は、通常動作モードであり、LAN4を介して受信する受信パケットは、DRAM22に格納される(図4の期間64)。ここでYESの場合、S14に進み、NOの場合、メインCPU14は、S12の判断を繰り返す。S14では、メインCPU14は、待機状態タイマの計測時間が所定時間を経過したのか否かを判断する。なお、待機状態タイマは、プリンタ10が待機状態44に移行する毎にリセットされる。S14でNOの場合はS12に戻り、S14でYESの場合はS16に進む。S16では、メインCPU14は、SRAM20に格納されている状態変数を、Lスリープ状態46を示す状態変数に変更する。続いて、メインCPU14は、パネル制御回路36に表示パネル38への電圧の印加を停止するように指示する(S18)。これにより、電圧の印加が停止され、表示パネル38はOFF状態になる。
【0035】
次いで、メインCPU14は、SRAM20に格納されている状態変数がLスリープ状態46を示すのか否かを判断する(S20)。状態変数は、メインCPU14又はサブCPU24が図5以外の処理を実行することによって変更される可能性がある。例えば、メインCPU14は、後述の図8のS138においてクロック供給が再開されると、受信したパケットに応じた処理を実行する。メインCPU14は、上記の通常の処理(印刷処理、表示処理等)を実行する場合、プリンタ10を処理状態42に移行し、状態変数を処理状態42を示す状態変数に変更する。一方において、メインCPU14は、通常の処理以外の処理を実行する場合、プリンタ10をLスリープ状態46に維持した状態で処理を実行する。状態変数が処理状態42を示す状態変数に変更されると、S20でNOと判断され、メインCPU14は、パネル制御回路36に表示パネル38に電圧を印加するように指示する(S22)。これにより、表示パネル38はON状態になる。後述するように、メインCPU14がスリープ状態である間、又は、移行期間50中に、SRAM20のパケット格納領域21(図1参照)にパケットが格納されることがある。この場合、メインCPU14は、パケット格納領域21に格納されているパケット群をDRAM22に移動する(S42参照)。メインCPU14は、DRAM22に格納されているネットワーク処理プログラムに従って、DRAM22に移動されたパケットを処理する。メインCPU14は、S22を終えると、処理したパケットを削除して、S12に戻る。
【0036】
一方において、S20でYESの場合、メインCPU14は、後述する状態移行判断処理(図7参照)を実行することによって、Dスリープ状態48に移行可能であるか否かを判断する(S24)。S24の処理が終了すると、メインCPU14は、S24の処理でDスリープ状態48に移行可能と判断されたか否かを判断する(S26)。ここでYESの場合はS30に進む。なお、S26でYESの場合、メインCPU14は、並行して実行されている後述の許可フラグ値決定処理(図6参照)を停止する。一方において、メインCPU14は、S26でNOの場合、S28に進む。S28では、メインCPU14は、WAIT命令を実行する。WAIT命令が実行されると、メインCPU14は、割り込み要求を受けるまで待機する実行停止状態となる。これにより、メインCPU14の消費電力を低減させることができる。メインCPU14は、S28において割り込み要求を受けると、S20に戻る。
【0037】
S30では、メインCPU14は、LAN4を介して受信する受信パケットを格納するRAMを、DRAM22からSRAM20に切り替える。より詳細には、メインCPU14は、DRAM22へのDMA(Direct Memory Access)転送を停止する。これにより、受信パケットがDRAM22に格納されることが禁止される。続いて、メインCPU14は、SRAM20へのDMA転送を可能な状態にする。このとき、メインCPU14は、サブCPU24がメインCPU14に代理して処理を実行するために必要な情報(例えばプリンタ10のIPアドレス等)を、SRAM20に格納する。これにより、LAN4を介して受信する受信パケットが、DRAM22からSRAM20に切り替わる(図4の時点65)。続いて、メインCPU14は、サブCPU24以外からの割り込み要求をマスク(禁止)する(S34)。メインCPU14は、SRAM20に格納されているLスリープ状態46を示す状態変数を、Dスリープ状態48を示す状態変数に変更する(S36)。メインCPU14は、サブCPU24に、処理を実行するように、割り込み要求を発行する(S38)。メインCPU14は、WAIT命令を実行する(S40)。WAIT命令が実行されると、メインCPU14は、割り込み要求を受けるまで待機する実行停止状態となる。メインCPU14は、S40において割り込み要求を受ける(後述の図8のS140参照)と、S42に進む。S42では、メインCPU14は、SRAM20のパケット格納領域21に格納されているパケット(即ちDスリープ状態48中又は移行期間50中に受信されたパケット)を、DRAM22に移動させる(図4の時点63)。次いで、メインCPU14は、S34で実行したサブCPU24に対する割り込み要求のマスクを解除して(S44)、S20に戻る。即ち、メインCPU14は、割り込み要求を受けると、S20の処理を実行する。この場合、メインCPU14は、S20でYESと判断する。
【0038】
(メインCPUでの許可フラグ値決定処理)
続いて、メインCPU14が実行する許可フラグ値決定処理の内容を説明する。図6は、メインCPU14によって実行される許可フラグ値決定処理のフローチャートを示す。許可フラグ値決定処理は、省電力処理(図5参照)と並行して実行される。なお、DRAM22には、メインCPU14が許可フラグ値決定処理を実行するために必要な情報である、Trtotal、Trnum、Trnum1、Trnum2、t及びtが格納される。なお、メインCPU14は、許可フラグ値決定処理を開始する際に、DRAM22に格納されているTrtotalとTrnumとをリセット(Trtotal=Trnum=0)する。メインCPU14は、S62〜S78の処理と、S82〜S94の処理と、を並行して実行する。
【0039】
まず、S62〜S78の処理について説明する。まず、メインCPU14は、時計機構で示される現在の時刻tをDRAM22に格納する(S62)。メインCPU14は、LAN4を介してパケットを受信したか否かを監視し、パケットを受信するごとに、TrnumとTrtotalとに所定値を加算する(S64)。受信したパケットのサイズが128Byteよりも小さい場合は、TrnumとTrtotalとに1ずつ加算する。受信したパケットのサイズが128Byteよりも大きい場合は、128Byteごとに、TrnumとTrtotalとに1ずつ加算する。即ち、200Byteのパケットを受信するとTrnumとTrtotalとに2ずつ加算し、300Byteのパケットを受信すると、TrnumとTrtotalとに3ずつ加算する。メインCPU14は、TrnumがN以上(例えばN=50)になることを監視している(S66)。S66でYESの場合、メインCPU14は、その時点での現在の時刻tをDRAM22に格納する(S68)。続いて、メインCPU14は、トラフィック量Trを算出する(S70)。具体的には、メインCPU14は、Tr=Trnum/(t−t)を計算する。トラフィック量Trは、1個のパケットを128Byte以下とした場合に、単位時間(本実施例では1ms)当りの受信パケット数(即ち受信パケットのデータ量)である。メインCPU14は、Trと、予め決められている閾値THと、を比較する(S72)。「1個のパケットを128Byte以下とした場合」は、パケットのサイズが128Byte以下ではあれば1個のパケットであり、129Byte以上であれば、パケットのサイズを128Byteで除算し、小数点以下を繰り上げた値をパケットの個数とする。例えば、パケットのサイズが200Byteである場合、このパケットは、200/128=1.56・・となるため、2個のパケットとして取り扱われる。
【0040】
閾値THについて説明する。THは、TH=(n/TIME)×kで算出される。ここで、nは、1個のパケットを128Byte以下とした場合に、上記したパケット格納領域21(図2参照)に格納可能なパケット数である。TIMEは、DRAM22がセルフリフレッシュモードから通常動作モードに移行する移行期間50に掛かる時間(ms)である。kは、0<k<1の任意の係数であり、設計者等によって適宜決定される。例えば、kは、パケット格納領域21が使用環境によって変化する場合の誤差を考慮して、k=0.9としてもよい。
【0041】
S72でNOの場合、メインCPU14は、SRAM20に格納されている移行許可フラグをONにする(S74)。移行許可フラグがONであり、かつ、他の条件(図7参照)が満足される場合に、Dスリープ状態48への移行が許可される。一方において、S72でYESの場合、メインCPU14は、移行許可フラグをOFFにする(S76)。これにより、Dスリープ状態48への移行が禁止される。続いて、メインCPU14は、Trnumとtとtをリセット(Trnum=t=t=0)して(S78)、S62に戻る。S78では、Trtotalはリセットされない。即ち、Trtotalは、1個のパケットを128Byte以下とした場合に、本処理が開始されてから受信するパケットの総数(累積数)である。
【0042】
次いで、S82〜S94の処理について説明する。まず、メインCPU14は、Trnum1とTrnum2とをリセットする(S82)。続いて、メインCPU14は、メイン用パケット受信タイマをスタートする(S84)。メインCPU14は、メイン用パケット受信タイマがTms(例えば100ms)経過することを監視している(S86)。S86でYESの場合、メインCPU14は、トラフィック量Trを算出する(S88)。具体的には、メインCPU14は、(Trnum2−Trnum1)/Tを計算する。ここで、Trnum1は、サブ用パケット受信タイマでTmsを計測する前のTrtotalの値であり、Trnum2は、Tms経過後のTrtotalの値である。トラフィック量Trは、トラフィック量Trと同様に、1個のパケットを128Byte以下とした場合に、単位時間(本実施例では1ms)当りの受信パケット数(受信パケットのデータ量)である。ただし、2つのトラフィック量Tr,Trを算出するための手法が異なる。1個のパケットを128Byte以下とした場合に、トラフィック量Trは、N個のパケットを受信する期間の長さから算出され、トラフィック量Trは、Tmsの間に受信するパケット数から算出される。メインCPU14は、Trと予め決められている閾値THとを比較する(S90)。S90でNOの場合、メインCPU14は、SRAM20に格納されている移行許可フラグをONにする(S92)。移行許可フラグがONであり、かつ、他の条件(図7参照)が満足される場合に、Dスリープ状態48への移行が許可される。一方において、S90でYESの場合、メインCPU14は、移行許可フラグをOFFにする(S94)。これにより、Dスリープ状態48への移行が禁止される。S92又はS94の処理が終了すると、メイン用パケット受信タイマをリセットして、S84に戻る。
【0043】
(メインCPUでの状態移行判断処理)
続いて、メインCPU14が図5のS24で実行する状態移行判断処理の内容を説明する。図7は、状態移行判断処理のフローチャートを示す。メインCPU14は、外部装置6等にパケットを送信しているか否かを判断する(S102)。例えば、メインCPU14が外部装置6等からのプリンタ10のステータスの要求に対するレスポンスを返信している途中の場合、S102でYESと判断される。S102でYESの場合、S112に進む。一方において、S102でNOの場合、メインCPU14は、メインCPU14が処理すべきパケットがDRAM22に格納されているか否かを判断する(S104)。例えば、メインCPU14が外部装置6等からプリンタ10のステータスの要求を受信しており、未だ処理していない場合、S104でYESと判断される。S104でYESの場合にS112に進み、S104でNOの場合にS106に進む。S106では、メインCPU14は、プリンタ10に接続中の外部装置6等があるか否かを判断する。例えば、プリンタ10がWebサーバ機能を有しており、外部装置6がプリンタ10のWebサーバにTCP接続中である場合、S106でYESと判断される。S106でYESの場合にS112に進み、NOの場合にS108に進む。S108では、メインCPU14は、図6のS74,S76,S92,S94で設定される移行許可フラグがONであるか否かを判断する。S108でYESの場合にS110に進み、NOの場合にS112に進む。
【0044】
S112では、メインCPU14は、Dスリープ状態48に移行不可であると判断する。この場合には、メインCPU14は、上記した図5のS26でNOと判断する。一方、S110では、メインCPU14は、Dスリープ状態48に移行可能であると判断する。この場合には、メインCPU14は、上記した図5のS26でYESと判断する。
【0045】
(サブCPUでの省電力処理)
続いて、サブCPU24が実行する省電力処理の内容を説明する。図8は、サブCPU24によって実行される省電力処理のフローチャートを示す。図8の処理は、プリンタ10の電源がONされたことをトリガとして開始される。サブCPU24は、SRAM20に格納されているプログラムを使用して、以下の処理を実行する。最初に、サブCPU24は、WAIT命令を実行する(S122)。サブCPU24は、割り込み要求を受けるまで待機する(即ち実行停止状態に移行する)。上述したように、メインCPU14は、図5のS38において、サブCPU24に割り込み要求を発行する。これにより、サブCPU24の実行停止状態が解除され、S124に進む。
【0046】
S124では、サブCPU24は、SRAM20に格納されている状態変数がDスリープ状態48を示すか否かを判断する。S124でNOの場合、S122に戻る。即ち、サブCPU24は、状態変数がDスリープ状態48以外を示す場合、実行停止状態で待機する。
【0047】
S124でYESの場合、サブCPU24は、メイン用クロック回路16(図1参照)にクロック供給の停止を指示する(S126)。この結果、メインCPU14は、非スリープ状態からスリープ状態に移行する。続いて、サブCPU24は、DRAM22を通常動作モードからセルフリフレッシュモードに移行させる(S128)(図4の時点65)。DRAM22がセルフリフレッシュモードである間は、DRAM22にパケットを格納することができない(図4の期間61,66)。なお、DRAM22がセルフリフレッシュモードである場合、通常動作モードと比べて、DRAM22の消費電力は低い。次いで、サブCPU24は、パケット受信処理を実行する(S130)。パケット受信処理が終了すると、サブCPU24は、DRAM22を通常動作モードに移行させる(S132)。S132を実行する期間が、上記の移行期間50である。前述のように、移行期間50中に受信されるパケットは、SRAM20に順次格納される(図4の期間62)。DRAM22の通常動作モードへの移行が完了すると、サブCPU24は、LAN4を介して受信される受信パケットを格納するRAMを、SRAM20からDRAM22に切り替える(図4の時点63)。より詳細には、サブCPU24は、SRAM20へのDMA(Direct Memory Access)転送を停止する。これにより、受信パケットをSRAM20に格納することが禁止される。続いて、サブCPU24は、DRAM22へのDMA転送を可能な状態にする。サブCPU24は、以下のS136〜S140の処理が終了するまでの間、即ち、メインCPU14のスリープ状態から非スリープ状態への移行が完了するまでの間にパケットを受信すると、DRAM22にパケットを格納する。
【0048】
次いで、サブCPU24は、SRAM20のDスリープ状態48を示す状態変数を、Lスリープ状態46を示す状態変数に変更する(S136)。続いて、サブCPU24は、メイン用クロック回路16(図1参照)に、メインCPU14にクロック供給を開始するよう指示する(S138)。この結果、メインCPU14にクロックが供給され、スリープ状態から非スリープ状態に移行する。サブCPU24は、メインCPU14に割り込み要求を発行する(S140)。
【0049】
(サブCPUでのパケット受信処理)
続いて、サブCPU24が図8のS130で実行するパケット受信処理の内容を説明する。図9は、サブCPU24によって実行されるパケット受信処理のフローチャートを示す。なお、SRAM20には、サブCPU24がパケット受信処理を実行するために必要な情報である、Trtotal’、Trnum’、Trnum1’、Trnum2’、t’及びt’が格納される。なお、サブCPU24は、パケット受信処理を開始する際に、SRAM20に格納されているTrtotal’とTrnum’とをリセット(Trtotal’=Trnum’=0)する。サブCPU24は、S162〜S184の処理と、S192〜S200の処理と、を並行して実行する。
【0050】
まず、S162〜S184の処理について説明する。サブCPU24は、パケットを受信するかを監視している(S162)。S162でYESの場合、サブCPU162は、SRAM20に格納されているTrnum’が0であるか否かを判断する(S164)。S164でYESの場合、サブCPU24は、現在の時刻t’をSRAM20に格納して(S166)、S168に進む。一方、S164でNOの場合、S168に進む。S164でNOの場合には、既にSRAM20に現在の時刻t’が格納されている。S168では、サブCPU24は、Trnum’とTrtotal’とに所定値を加算する。ここでは、図6のS64と同様に、受信したパケットのサイズに応じた値だけ、Trnum’とTrtotal’とに加算する。サブCPU24は、Trnum’がN’以上(例えばN’=50)であるか否かを判断する(S170)。S170でNOの場合、S180に進む。一方において、S170でYESの場合、サブCPU24は、その時点での現在の時刻t’をSRAM20に格納する(S172)。続いて、サブCPU24は、トラフィック量Tr’を算出する(S174)。具体的には、サブCPU24は、Tr’=Trnum’/(t’−t’)を計算する。トラフィック量Tr’は、トラフィック量Trと同様に、1個のパケットを128Byte以下とした場合に、単位時間(本実施例では1ms)当りの受信パケット数(即ち受信パケットのデータ量)である。サブCPU24は、Tr’と予め決められている閾値THとを比較する(S176)。なお、本実施例では、閾値THは、図6のS72及びS90で利用される閾値THと同じ値である。
【0051】
S176でYESの場合、処理を終了して、図8のS132に進む。一方において、S176でNOの場合、Trnum’とt’とt’をリセット(Trnum’=t’=t’=0)して(S178)、S180に進む。S180では、サブCPU24は、受信したパケットの送信先のIPアドレスが、プリンタ10のIPアドレスと一致するか否かを判断する。S180でNOの場合、S162に戻る。S180でYESの場合、サブCPU24は、代理応答処理が可能なパケットであるか否かを判断する(S182)。SRAM20には、代理応答処理が可能であるプロトコルが格納されている。サブCPU24は、受信したパケットのプロトコルがSRAM20に格納されているか否かを判断し、格納されている場合には、S182でYESと判断する。S182でYESの場合、サブCPU24は、代理応答処理を実行して(S184)、S162に戻る。一方において、S182でNOの場合、処理を終了して、図8のS132に進む。
【0052】
次いで、S192〜S200の処理について説明する。まず、サブCPU24は、SRAM20に格納されているTrnum1’とTrnum2’とをリセット(Trnum1’=Trnum2’=0)する(S192)。続いて、サブCPU24は、サブ用パケット受信タイマをスタートする(S194)。サブCPU24は、サブ用パケット受信タイマがT’ms(例えば100ms)経過することを監視している(S196)。S196でYESの場合、サブPU24は、トラフィック量Tr’を算出する(S198)。具体的には、サブCPU24は、(Trnum2’−Trnum1’)/T’を計算する。ここで、Trnum1’は、サブ用パケット受信タイマでT’msを計測する前のTrtotal’の値であり、Trnum2’は、T’ms経過後のTrtotal’の値である。トラフィック量Tr’は、トラフィック量Tr’と同様に、1個のパケットを128Byte以下とした場合に、単位時間(本実施例では1ms)当りの受信パケット数(受信パケットのデータ量)である。ただし、2つのトラフィック量Tr’,Tr’を算出するための手法が異なる。1個のパケットを128Byte以下とした場合に、トラフィック量Tr’は、N’個のパケットを受信する期間の長さから算出され、トラフィック量Tr’は、T’msの間に受信するパケット数から算出される。サブCPU24は、Tr’と予め決められている閾値THとを比較する(S200)。S204でNOの場合、処理を終了して、図9のS132に進む。
【0053】
上記したように、サブCPU24は、以下の(1)から(3)のいずれかの場合に、図8のS132以下の処理、即ち、Dスリープ状態48からLスリープ状態46への移行処理を開始する。
(1)Tr’≧TH(S176でYES)の場合、
(2)Tr’≧TH(S200でYES)の場合、
(3)受信したパケットの送信先のIPアドレスがプリンタ10のIPアドレスであり(S180でYES)、かつ、サブCPU24が、受信したパケットに対して代理応答処理を実行することができない(S182でNO)場合(即ち受信したパケットがメインCPU14が処理すべきパケットである場合)。
【0054】
以上説明したように、このプリンタ10では、メインCPU14が非スリープ状態である場合に、メインCPU14は、トラフィック量TrとTrとを算出する(図6のS70、S88)。これらのトラフィック量TrとTrの少なくとも一方が閾値THよりも大きい場合に、メインCPU14は、プリンタ10がDスリープ状態48に移行することを禁止する。
DRAM22がセルフリフレッシュモードから通常動作モードに移行する移行期間50中に受信したパケットは、SRAM20のパケット格納領域21に格納される(図4参照)。パケット格納領域21は、1個のパケットを128Byte以下とした場合に、n個のパケットを格納することができる。言い換えれば、移行期間50中に受信するパケット数がn個を超えると、パケット格納領域21内に格納することができなくなる。従って、仮に、1ms当たりにプリンタ10が受信するパケット数が(n/TIME(移行期間50に必要な時間))個を超えているときに、Dスリープ状態48からLスリープ状態46に移行すべき事態(即ち、メインCPU14が処理すべきパケットを受信する事態)が発生すると、移行期間50中に受信するパケットの全てをパケット格納領域21に格納することができなくなってしまう。本実施例では、(n/TIME)×k(0<k<1)を、図6のS72及びS90の判断の閾値THとして利用している。トラフィック量Tr又はTrが閾値THよりも大きい場合に、メインCPU14をスリープ状態に移行させない。即ち、仮に、現在のトラフィック量で移行期間50中にパケットを受信すると、パケットを格納しきれなくなる状況では、メインCPU14をスリープ状態に移行させない。このために、パケットをパケット格納領域21に格納することができない事態が発生するのを抑制することができ、この結果、移行期間50中に受信するパケットを、メインCPU14が確実に処理することができる。
【0055】
また、トラフィック量TrとTrの少なくとも一方が閾値THよりも大きい場合に、メインCPU14がスリープ状態に移行されると、サブCPU24でのパケット受信処理(図9参照)において、トラフィック量Tr’又はTr’が閾値TH(=TH)よりも大きいと判断され(S176又はS200でYES)、メインCPU14が非スリープ状態からスリープ状態に移行された後、すぐに、非スリープ状態に移行しなければならなくなる。このプリンタ10では、トラフィック量TrとTrの少なくとも一方が閾値THよりも大きい場合に、メインCPU14は、プリンタ10がDスリープ状態48に移行することを禁止することによって、上記した事態を防止することができる。
【0056】
このプリンタ10では、メインCPU14がスリープ状態である場合に、メインCPU14が処理すべきパケットを受信しなくても、トラフィック量Tr’とTr’の少なくとも一方が閾値THよりも大きい場合(図9のS176でYES、又は、S200でYES)に、メインCPU14をスリープ状態から非スリープ状態に移行させる(図8のS138)。トラフィック量が小さい場合と比べると、トラフィック量が大きい場合は、メインCPU14が処理すべきパケットを受信する可能性が高い。サブCPU24は、メインCPU14が処理すべきパケットを受信する前に、トラフィック量Tr’とTr’の少なくとも一方が閾値THよりも大きくなると、メインCPU14をスリープ状態から非スリープ状態に移行させる処理を開始することができる。これにより、仮に、メインCPU14の移行処理を開始した後にメインCPU14が処理すべきパケットを受信した場合に、メインCPU14が処理すべきパケットに対する処理を迅速に開始することができる。
【0057】
また、プリンタ10がDスリープ状態48である場合に、サブCPU24は、トラフィック量Tr’とTr’とを算出する(図10のS174、S198)。これらのトラフィック量Tr’とTr’の少なくとも一方が閾値THよりも大きい場合に、サブCPU24は、プリンタ10をDスリープ状態48からLスリープ状態46に移行する。閾値THは、(n/TIME)に1未満のkを乗算することによって得られるために、(n/TIME)よりも小さい値である。従って、本実施例では、トラフィック量Tr’とTr’の少なくとも一方が(n/TIME)を超える前に、プリンタ10をDスリープ状態48からLスリープ状態46に移行させる。これにより、トラフィック量Tr’とTr’の少なくとも一方が(n/TIME)を超えた状態で移行期間50になることを抑制することができ、パケットをパケット格納領域21に格納することができない事態が発生するのを抑制することができる。
【0058】
なお、以上の説明から明らかなように、本実施例のプリンタ10が、本発明における通信装置に対応する。メインCPU14,サブCPU24が、それぞれ、第1処理部,第2処理部に対応する。SRAM20,DRAM22が、それぞれ、第2メモリ、第1メモリに対応する。SRAM20内のパケット格納領域21が、データ記憶領域に対応する。本実施例のトラフィック量Tr’とTr’が、第1のトラフィック量に対応し、トラフィック量TrとTrが、第2のトラフィック量に対応する。本実施例の閾値THが第2の閾値に対応し、閾値THが第1の閾値に対応する。また、本実施例のパケット格納領域21のn個の領域のうちの1つの領域に格納されるパケットが、単位データに対応する。
【0059】
(変形例)
(1)本実施例では、閾値THとTHが(n/TIME)×kで算出される固定値である。しかしながら、閾値THとTHは可変値であってもよい。例えば、サブCPU24は、移行期間50の時間(ms)であるTIMEを毎回測定してSRAM20に格納しておき、所定のタイミング(例えば電源ONのタイミング)において、過去の複数回の移行期間50の時間(ms)の平均値をTIMEaveとして算出してもよい。この場合、TH=(n/TIMEave)×kが可変値になる。
【0060】
(2)本実施例では、トラフィック量Tr,Trと比較する閾値TH(図6のS72,S90の判断処理で利用される閾値)と、トラフィック量Tr’,Tr’と比較する閾値TH(図9のS176,S200の判断処理で利用される閾値)とが、同じ値である。しかしながら、閾値THとTHとは、異なる値であってもよい。また、閾値THは、判断処理ごとに異なっていてもよく、閾値THも、判断処理ごとに異なっていてもよい。なお、Trと比較する閾値は、Tr’と比較する閾値以下であってもよく、Trと比較する閾値は、Tr’と比較する閾値以下であってもよい。
【0061】
(3)本実施例では、メインCPU14は、許可フラグ値決定処理(図6参照)として、S62〜S78の処理と、S82〜S94の処理との2つの処理を並行して実行している。しかしながら、メインCPU14は、いずれか一方の処理のみを実行してもよい。S82〜S94の処理のみを実行する場合、メインCPU14は、処理を開始する際に、受信パケット数Trtotalのカウントを開始する。サブCPU24も同様に、S162〜S178の処理と、S192〜S200の処理のいずれか一方の処理のみを実行してもよい。S192〜S200の処理のみを実行する場合、S200でNOの場合に、S180からS184の処理を実行する。
【0062】
(4)本実施例では、トラフィック量Tr,Tr,Tr’,Tr’は、プリンタ10が受信するパケットの個数を用いて算出する。しかしながら、トラフィック量Tr,Tr,Tr’,Tr’は、LAN4を介して通信されるパケットの個数、即ち、プリンタ10が受信するパケットの個数と、LAN4に接続された他のプリンタが受信するパケットの個数と、の和を用いて算出してもよい。
【0063】
(5)本実施例では、メインCPU14がスリープ状態から非スリープ状態に移行すると、メインCPU14は、SRAM20のパケット格納領域21に格納されているパケット(移行期間50中に受信されたパケット)を、DRAM22に移動させた後(図4の時点63、図5のS42)で、DRAM22に移動されたパケットを処理する。しかしながら、メインCPU14は、非スリープ状態に移行した後に、パケット格納領域21に格納されているパケットを、DRAM22に移動させずに処理してもよい。即ち、メインCPU14は、非スリープ状態に移行した後に、移行期間50中にパケット格納領域21に格納されたパケットを処理する構成であればよい。
【0064】
(6)本実施例では、プリンタ10について説明したが、本明細書に開示された技術は、プリンタ10以外の通信装置、例えば、サーバ、スキャナ、多機能機等に利用することができる。
【0065】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0066】
4:LAN、6:外部装置、10:プリンタ、12:制御部、16:メイン用クロック回路、20:SRAM、21:パケット格納領域、22:DRAM、26:サブ用クロック回路



【特許請求の範囲】
【請求項1】
ネットワークに接続される通信装置であって、
スリープ状態と非スリープ状態との間で状態が移行し、前記非スリープ状態である場合に、前記ネットワークを介して受信する第1のデータを処理する第1処理部と、
前記第1処理部が前記スリープ状態である場合に、前記ネットワークを介して受信する第2のデータに対して、前記第1処理部に代理して代理応答処理を実行する第2処理部と、を備え、
前記第2処理部は、前記第1処理部が前記スリープ状態である場合に、前記ネットワークの第1のトラフィック量を検出し、前記第1のトラフィック量が第1の閾値よりも大きい場合に、前記第1処理部を前記スリープ状態から前記非スリープ状態に移行させる、通信装置。
【請求項2】
前記第2処理部は、さらに、前記第1処理部が前記スリープ状態である場合において、前記第1処理部によって処理されるべき特定のデータを受信する場合に、前記第1処理部を前記スリープ状態から前記非スリープ状態に移行させる、請求項1に記載の通信装置。
【請求項3】
前記第1処理部が前記非スリープ状態である場合に使用される第1メモリであって、第1状態と、前記第1状態よりも消費電力が小さい第2状態と、の間で状態が移行する前記第1メモリと、
前記第1処理部が前記スリープ状態である場合に使用される第2メモリと、をさらに備え、
前記第1メモリは、前記第1処理部が前記スリープ状態から前記非スリープ状態に移行する場合に、前記第2状態から前記第1状態に移行し、
前記第2処理部は、前記第1メモリが前記第2状態から前記第1状態に移行する移行期間中に、前記ネットワークを介して順次受信する複数の第3のデータを、前記第2メモリのデータ記憶領域に順次格納し、
前記第1処理部は、前記非スリープ状態に移行した後に、前記データ記憶領域に格納された前記複数の第3のデータを処理し、
前記第1の閾値は、前記第1メモリの前記移行期間中に前記データ記憶領域に格納されるべき前記複数の第3のデータの合計データ量が、前記データ記憶領域の容量を超えないように、設定されている、請求項1又は2に記載の通信装置。
【請求項4】
前記第1処理部は、
前記非スリープ状態である場合に、前記ネットワークの第2のトラフィック量を検出し、
前記第2のトラフィック量が第2の閾値よりも大きい場合に、前記第1処理部が前記非スリープ状態から前記スリープ状態に移行することを禁止し、
前記第2のトラフィック量が前記第2の閾値よりも小さい場合に、前記第1処理部が前記非スリープ状態から前記スリープ状態に移行することを許容する、請求項1から3のいずれか一項に記載の通信装置。
【請求項5】
前記第1処理部は、
前記第2のトラフィック量が前記第2の閾値よりも小さく、かつ、前記第1処理部の処理待ち状態が所定期間だけ継続した場合に、前記第1処理部が前記非スリープ状態から前記スリープ状態に移行することを許容する、請求項4に記載の通信装置。
【請求項6】
前記トラフィック量は、所定期間中に受信する単位データの数を用いて決定される、請求項1から4のいずれか一項に記載の通信装置。
【請求項7】
前記トラフィック量は、所定数の単位データを受信する期間を用いて決定される、請求項1から5のいずれか一項に記載の通信装置。
【請求項8】
前記トラフィック量は、前記通信装置が受信する単位時間当りのデータ量である、請求項1から7のいずれか一項に記載の通信装置。




【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−10021(P2011−10021A)
【公開日】平成23年1月13日(2011.1.13)
【国際特許分類】
【出願番号】特願2009−151123(P2009−151123)
【出願日】平成21年6月25日(2009.6.25)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】