(57)【要約】【課題】  通信装置の消費電力を、より低減させる技術を提供する。【解決手段】  プリンタは、メインＣＰＵとサブＣＰＵを備える。メインＣＰＵは、スリープ状態と非スリープ状態との間で状態が移行する。サブＣＰＵは、メインＣＰＵがスリープ状態である場合に、ネットワークを介して受信する１個以上の未処理パケットを順次処理するためのパケット処理を実行可能である。サブＣＰＵ２４は、メインＣＰＵ２４がスリープ状態であり、かつ、未処理パケットの受信が検出される場合（Ｓ７２でＹＥＳ）に、パケット処理を開始し、パケット処理が終了時刻を経過して継続される場合（Ｓ９０でＹＥＳ）に、未処理パケットが残存していても、パケット処理を終了する。【選択図】  図５
2011160366.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
スリープ状態と非スリープ状態との間で状態が移行する第1処理部であって、前記第１処理部が前記非スリープ状態である場合に、前記ネットワークを介して受信するパケットを処理する前記第１処理部と、
前記第１処理部が前記スリープ状態である場合に、前記ネットワークを介して受信するパケットを処理する第２処理部と、を備え、
前記第２処理部は、１個以上の未処理パケットを順次処理するためのパケット処理を実行可能であり、
前記第２処理部は、未処理パケットの受信を検出する検出部を備え、
前記第２処理部は、
前記第１処理部が前記スリープ状態であり、かつ、前記未処理パケットの受信が検出される場合に、前記パケット処理を開始し、
前記パケット処理の継続期間が許容期間を越える場合に、前記未処理パケットが残存していても、前記パケット処理を終了する、通信装置。
【請求項２】
前記第２処理部は、前記パケット処理の継続期間が前記許容期間を越える場合に、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させる、請求項１に記載の通信装置。
【請求項３】
前記第２処理部は、
前記パケット処理の継続期間が前記許容期間を越える場合に、さらに、前記未処理パケットが残存するのか否かを判断し、
前記未処理パケットが残存すると判断される第１の場合に、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させ、
前記未処理パケットが残存しないと判断される第２の場合に、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させない、請求項１又は２に記載の通信装置。
【請求項４】
前記第１の場合に、前記第１処理部は、前記非スリープ状態に移行した後に、残存する前記未処理パケットを処理する、請求項３に記載の通信装置。
【請求項５】
前記第２処理部は、前記許容期間に基づいて、前記パケット処理の終了時刻を決定し、現在時刻が前記終了時刻を経過する場合に、前記パケット処理の継続期間が前記許容期間を越えると判断する、請求項１から４のいずれか一項に記載の通信装置。
【請求項６】
前記未処理パケットの前記処理は、前記未処理パケットに対する応答を送信する処理を含む、請求項１から５のいずれか一項に記載の通信装置。
【請求項７】
前記第２処理部は、
前記パケット処理の継続期間が前記許容期間を越える前において、１個の前記未処理パケットの前記処理が終了する毎に、前記未処理パケットが残存するのか否かを判断し、
前記未処理パケットが残存しないと判断される場合に、前記パケット処理の継続期間が前記許容期間を越える前に、前記パケット処理を終了する、請求項１から６のいずれか一項に記載の通信装置。
【請求項８】
前記第２処理部は、
前記パケット処理の継続期間が前記許容期間を越える前において、前記第１処理部が処理すべき特定の種類の前記未処理パケットが残存するのか否かを判断し、
前記特定の種類の前記未処理パケットが残存すると判断される場合に、前記パケット処理の継続期間が前記許容期間を越える前に、前記パケット処理を終了するとともに、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させる、請求項１から７のいずれか一項に記載の通信装置。
【請求項９】
さらに、前記未処理パケットを格納するための格納部を備え、
前記第２処理部は、
前記パケット処理の継続期間が前記許容期間を越える前において、前記格納部の残容量が不足するか否かを判断し、
前記残容量が不足すると判断される場合に、前記パケット処理の継続期間が前記許容期間を越える前に、前記パケット処理を終了するとともに、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させる、請求項１から８のいずれか一項に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、ネットワークに接続される通信装置を開示する。
【背景技術】
【０００２】
特許文献１には、メインＣＰＵとサブＣＰＵとを備える画像形成システムが開示されている。画像形成システムは、消費電力が比較的に小さい省エネルギーモードと、消費電力が比較的に大きい通常の状態と、の間で状態が移行する。通常の状態ではメインＣＰＵへ電源が供給され、省エネルギーモードではメインＣＰＵへの電源の供給は停止される。この画像形成システムは、メインＣＰＵが最後のジョブを完了してから所定期間が経過すると、省エネルギー状態に移行する。これにより、画像形成システムの省電力化が実現される。この画像形成システムでは、省エネルギー状態である場合に、外部機器からデータが受信される毎に、サブＣＰＵは、画像形成システムを省エネルギーモードから通常の状態に移行させる。この結果、メインＣＰＵに電源が供給される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−５０２９号公報
【特許文献２】特開２００１−２８２３９８号公報
【特許文献３】特開２００５−３１３４８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通信装置（上記の特許文献１の画像形成システムがその一例）のさらなる省電力化を実現することが求められている。本明細書では、さらなる省電力化を実現し得る通信装置を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される技術は、ネットワークに接続される通信装置に関する。この通信装置は、第１処理部と第２処理部とを備える。第１処理部は、スリープ状態と非スリープ状態との間で状態が移行する。第１処理部は、第１処理部が非スリープ状態である場合に、ネットワークを介して受信するパケットを処理する。第２処理部は、第１処理部がスリープ状態である場合に、ネットワークを介して受信するパケットを処理する。第２処理部は、１個以上の未処理パケットを順次処理するためのパケット処理を実行可能である。第２処理部は、未処理パケットの受信を検出する検出部を備える。第２処理部は、第１処理部がスリープ状態であり、かつ、未処理パケットの受信が検出される場合に、パケット処理を開始する。第２処理部は、パケット処理の継続期間が許容期間を越える場合に、未処理パケットが残存していても、パケット処理を終了する。
【０００６】
上記の通信装置では、第１処理部がスリープ状態である場合に、第２処理部は、未処理パケットを処理するパケット処理を実行可能である。即ち、第１処理部がスリープ状態である場合に、第１処理部を頻繁に非スリープ状態に移行させずに済む。この結果、第１処理部がスリープ状態で維持される期間が長くなり得るために、より省電力な通信装置を実現し得る。但し、未処理パケットの個数が多くなると、パケット処理の継続時間が長くなる。このため、第２処理部が長期間に亘ってパケット処理以外の処理（他の処理）を実行することができないという問題が起こり得る。このような問題に対処するために、上記の通信装置では、第２処理部は、パケット処理の継続期間が許容期間を越える場合に、未処理パケットが残存していても、パケット処理を終了する。これにより、第２処理部が長期間に亘って他の処理を実行することができないという問題が発生するのを抑制することができる。
【０００７】
第２処理部は、パケット処理の継続期間が上記の許容期間を越える場合に、第１処理部をスリープ状態から非スリープ状態に移行させてもよい。この構成によれば、仮に、未処理パケットが残存する状態でパケット処理が終了しても、第１処理部が当該未処理パケットを処理し得る。
【０００８】
第２処理部は、パケット処理の継続期間が上記の許容期間を越える場合に、さらに、未処理パケットが残存するのか否かを判断してもよい。第２処理部は、未処理パケットが残存すると判断される第１の場合に、第１処理部をスリープ状態から非スリープ状態に移行させ、未処理パケットが残存しないと判断される第２の場合に、第１処理部をスリープ状態から非スリープ状態に移行させなくてもよい。この構成によれば、第２の場合に、第１処理部が第１処理部のスリープ状態が維持されるために、より省電力な通信装置を実現することができる。
【０００９】
上記の第１の場合に、第１処理部は、非スリープ状態に移行した後に、残存する未処理パケットを処理してもよい。この構成によれば、残存する未処理パケットを迅速に処理することができる。
【００１０】
第２処理部は、上記の許容期間に基づいて、パケット処理の終了時刻を決定し、現在時刻が上記の終了時刻を経過する場合に、パケット処理の継続期間が許容期間を越えると判断してもよい。
【００１１】
未処理パケットの処理は、未処理パケットに対する応答を送信する処理を含んでいてもよい。
【００１２】
第２処理部は、パケット処理の継続期間が上記の許容期間を越える前において、１個の未処理パケットの処理が終了する毎に、未処理パケットが残存するのか否かを判断してもよい。第２処理部は、未処理パケットが残存しないと判断される場合に、パケット処理の継続期間が上記の許容期間を越える前に、パケット処理を終了してもよい。この構成によれば、第２処理部は、上記の許容期間を越える前にパケット処理を終了して、他の処理を実行することができる。
【００１３】
第２処理部は、パケット処理の継続期間が許容期間を越える前において、第１処理部が処理すべき特定の種類の未処理パケットが残存するのか否かを判断してもよい。上記の特定の種類の未処理パケットが残存すると判断される場合に、パケット処理の継続期間が許容期間を越える前に、パケット処理を終了するとともに、第１処理部をスリープ状態から非スリープ状態に移行させてもよい。この構成によれば、上記の特定の種類の未処理パケットが残存する場合に、第１処理部が当該未処理パケットを処理することができる。
【００１４】
通信装置は、さらに、未処理パケットを格納するための格納部を備えていてもよい。第２処理部は、パケット処理の継続期間が上記の許容期間を越える前において、格納部の残容量が不足するか否かを判断してもよい。第２処理部は、残容量が不足すると判断される場合に、パケット処理の継続期間が許容期間を越える前に、パケット処理を終了するとともに、第１処理部をスリープ状態から非スリープ状態に移行させてもよい。この構成によれば、格納部の残容量が不足する場合に、第１処理部が未処理パケットを処理し得る。
【００１５】
なお、上記の通信装置を実現するための制御方法、及び、コンピュータプログラムも新規で有用である。
【図面の簡単な説明】
【００１６】
【図１】通信システムの構成を示す。
【図２】プリンタの状態移行の一例を示す。
【図３】プリンタの状態に対応する各部の状態の一例を示す。
【図４】メインＣＰＵが実行する省電力処理のフローチャートを示す。
【図５】サブＣＰＵが実行する省電力処理のフローチャートを示す。
【図６】パケット処理を説明するための図を示す。
【発明を実施するための形態】
【００１７】
図面を参照して実施例を説明する。図１は、本実施例の通信システム２の構成を示す。通信システム２は、外部装置６とプリンタ１０とを備える。外部装置６とプリンタ１０は、ＬＡＮ４に接続されており、ＬＡＮ４を介して、相互に通信可能である。
【００１８】
（プリンタの構成）
図１に示すように、プリンタ１０は、制御部１２と、ネットワークインターフェイス３０と、プリントエンジン３４と、表示パネル３８を備える。制御部１２は、メインＣＰＵ１４と、メイン用クロック回路１６と、ＲＯＭ１８と、２個のＲＡＭ２０，２２と、サブＣＰＵ２４と、サブ用クロック回路２６と、ＭＡＣコントローラ２８と、エンジン制御回路３２と、パネル制御回路３６を備える。
【００１９】
メインＣＰＵ１４は、ＤＲＡＭ２２に格納されているプログラムに従って様々な処理を実行する。メインＣＰＵ１４は、タイマ機構を内蔵している。メイン用クロック回路１６は、メインＣＰＵ１４にクロック信号を供給する。メインＣＰＵ１４にクロック信号が供給されている間は、メインＣＰＵ１４は非スリープ状態である。メインＣＰＵ１４にクロック信号が供給されていない間は、メインＣＰＵ１４はスリープ状態である。メイン用クロック回路１６は、サブＣＰＵ２４によって制御される。この説明から明らかなように、メインＣＰＵ１４のスリープ状態は、メインＣＰＵ１４の非スリープ状態と比べて、メインＣＰＵ１４の消費電力が少ない状態であると言える。
【００２０】
サブＣＰＵ２４は、ＳＲＡＭ２０に格納されているプログラムに従って様々な処理を実行する。サブＣＰＵ２４は、時計機構を内蔵している。サブ用クロック回路２６は、サブＣＰＵ２４にクロック信号を供給する。サブ用クロック回路２６のクロック信号の周波数は、メイン用クロック回路１６のクロック信号の周波数よりも低い。従って、メインＣＰＵ１４を駆動するための消費電力と比べて、サブＣＰＵ２４を駆動するための消費電力は低い。さらに、メインＣＰＵ１４の処理速度は、サブＣＰＵ２４の処理速度よりも高い。即ち、メモリＣＰＵ１４がパケットを処理するための時間は、サブＣＰＵ２４が当該パケットを処理するための時間よりも短い。サブ用クロック回路２６は、プリンタ１０の電源がＯＮにされると、サブＣＰＵ２４にクロック信号を供給する。また、プリンタ１０の電源がＯＦＦにされると、サブＣＰＵ２４へのクロック信号を停止する。即ち、サブＣＰＵ２４は、プリンタ１０の電源がＯＮされている間、非スリープ状態で維持される。
【００２１】
ＲＯＭ１８には、メインＣＰＵ１４及びサブＣＰＵ２４によって実行される複数のプログラムがそれぞれ圧縮された状態で格納されている。プリンタ１０の電源がＯＮされると、各プログラムは、ＳＲＡＭ２０又はＤＲＡＭ２２に展開される。メインＣＰＵ１４又はサブＣＰＵ２４は、ＳＲＡＭ２０又はＤＲＡＭ２２に展開されたプログラムを使用して処理を実行する。ＲＯＭ１８に格納されている全てのプログラムは、プリンタ１０の電源がＯＮにされると、一旦、ＤＲＡＭ２２に展開される。次いで、ＤＲＡＭ２２に展開された複数のプログラムのうち、予め決められているプログラムが、ＳＲＡＭ２０にロードされる。なお、図示省略されているが、制御部１２は、ＳＲＡＭ２０とＤＲＡＭ２２のそれぞれに対してクロック信号を供給するための回路も有する。
【００２２】
ＳＲＡＭ２０は、メインＣＰＵ１４とサブＣＰＵ２４からアクセス可能である。ＳＲＡＭ２０は、パケット格納領域２１を備える。パケット格納領域２１は、後述するように、ＤＲＡＭ２２が通常動作モードでない場合（図２，３のＤスリープ状態４８）に、ＬＡＮ４を介して受信するパケットを格納する。以下では、プリンタ１０がＬＡＮ４を介して受信するパケットであって、未だに処理されていないパケットのことを、「未処理パケット」と呼ぶ。なお、未処理パケットは、メインＣＰＵ１４でもサブＣＰＵ２４でも処理可能な種類のパケット（以下、「第１種の未処理パケット」と呼ぶ）と、メインＣＰＵ１４のみが処理可能な種類のパケット（以下、「第２種の未処理パケット」と呼ぶ）と、に分類される。本実施例では、ＡＲＰ、ＮｅｔＢＩＯＳ−ＮＳ、ＩＣＭＰ等のパケットが第１種の未処理パケットであり、プリンタ１０に印刷を実行させるための印刷指示パケットが第２種の未処理パケットである。ＳＲＡＭ２０には、サブＣＰＵ２４が図５の処理を実行するためのプログラムが格納される。なお、当該プログラムは、サブＣＰＵ２４がメインＣＰＵ１４に代理して第１種の未処理パケットの処理（図５のＳ８６）を実行するためのプログラムを含む。ＳＲＡＭ２０には、さらに、サブＣＰＵ２４が第１種の未処理パケットの処理以外の特定の処理を実行するためのプログラムが格納される。上記の特定の処理の一例として、例えば、プリンタ１０が通信可能であることを示すパケット（例えばKEEP ALIVEパケット）を、ＬＡＮ４に定期的に送信するタイマ処理を挙げることができる。メインＣＰＵ１４は、プリンタ１０の電源がＯＮされると、ＤＲＡＭ２２に展開された複数のプログラムのうち、予めベンダ等によって決められているサブＣＰＵ２４用のプログラムをＳＲＡＭ２０にロードして格納する。
【００２３】
ＳＲＡＭ２０には、さらに、サブＣＰＵ２４が、第１種の未処理パケットの処理、上記の特定の処理等を実行するために必要な情報が格納される。この情報の一例として、プリンタ１０のＩＰアドレス、ＭＡＣアドレス、ノード名等が挙げられる。メインＣＰＵ１４は、スリープ状態に移行可能と判断すると（図４のＳ３４）、サブＣＰＵ２４がメインＣＰＵ１４に代理して処理を実行するために必要な情報を、ＳＲＡＭ２０に格納する。さらに、ＳＲＡＭ２０には、プリンタ１０の状態を示す状態変数が格納される。プリンタ１０は、「処理状態」、「待機状態」、「ライトスリープ状態（Ｌスリープ状態）」、「ディープスリープ状態（Ｄスリープ状態）」のいずれかの状態で動作する。従って、ＳＲＡＭ２０には、４種類の状態に対応する４個の値のうちの１個の値が格納される。また、ＳＲＡＭ２０には、メインＣＰＵ１４をスリープ状態から非スリープ状態に移行させるために用いられる状態移行フラグが格納される。サブＣＰＵ２４は、メインＣＰＵ１４がスリープ状態である場合であって、状態移行フラグがＯＮの場合に、メインＣＰＵ１４をスリープ状態から非スリープ状態に移行させる。
【００２４】
ＤＲＡＭ２２は、メインＣＰＵ１４からアクセス可能である。ＤＲＡＭ２２は、ＳＲＡＭ２０よりもメモリの総容量が大きい。このため、ＤＲＡＭ２２の消費電力は、ＳＲＡＭ２０の消費電力と比べて高い。ＤＲＡＭ２２には、メインＣＰＵ１４が未処理パケットを処理するためのネットワーク処理プログラムが格納される。ネットワーク処理プログラムは、第１種の未処理パケットの処理を実行するためのプログラム、第２種の未処理パケット（例えば印刷指示パケット）の処理（例えば印刷処理）を実行するためのプログラム等を含む。ネットワーク処理プログラムは、さらに、ＭＡＣコントローラ２８を制御するためのプログラム、ＴＣＰ／ＩＰを利用して処理を実行するためのＴＣＰ／ＩＰプロトコルスタック、各種のアプリケーションプロトコルを利用して処理を実行するためのプログラム等を含む。また、ＤＲＡＭ２２には、メインＣＰＵ１４が図４の処理を実行するためのプログラムが格納される。メインＣＰＵ１４は、プリンタ１０の電源がＯＮされると、ＲＯＭ１８に格納されているネットワーク処理プログラムをＤＲＡＭ２２に展開して格納する。さらに、ＤＲＡＭ２２には、メインＣＰＵ１４が処理を実行する際に必要な情報が格納される。例えば、プリンタ１０のＩＰアドレス、ＭＡＣアドレス、ノード名、ステータス情報等が格納される。メインＣＰＵ１４は、情報に変更があった場合、格納されている情報を修正する。
【００２５】
図１に示すネットワークインターフェイス３０は、ＬＡＮ４に接続されている。ＭＡＣコントローラ２８は、ＬＡＮ４を介して受信された未処理パケットを、内蔵するバッファに一時的に格納する。ＭＡＣコントローラ２８は、未処理パケットをプリンタ１０が処理可能な形式に変換する。エンジン制御回路３２は、メインＣＰＵ１４からの指示に従って、プリントエンジン３４を制御する。パネル制御回路３６は、メインＣＰＵ１４からの指示に従って、表示パネル３８を制御する。表示パネル３８は、ＬＣＤである。パネル制御回路３６は、表示パネル３８をＯＮ状態とＯＦＦ状態との間で移行させる。即ち、パネル制御回路３６は、表示パネル３８に電圧を印加することによって表示パネル３８をＯＮ状態とし、電圧の印加を停止することによって表示パネル３８をＯＦＦ状態とする。
【００２６】
（プリンタの状態移行）
図２に示すように、プリンタ１０は、処理状態４２と待機状態４４とＬスリープ状態４６とＤスリープ状態４８との間で状態が移行する。図３は、プリンタ１０が各状態４２，４４，４６，４８の場合に、メインＣＰＵ１４、サブＣＰＵ２４、２個のＲＡＭ２０，２２、及び、表示パネル３８の状態を表わす表６０を示す。プリンタ１０の電源がＯＮされると、プリンタ１０は、待機状態４４となる。図３に示すように、待機状態４４では、２個のＣＰＵ１４，２４にクロックが供給されている（即ち、２個のＣＰＵ１４，２４は非スリープ状態である）。２個のＲＡＭ２０，２２は通常動作モードであり、表示パネル３８はＯＮ状態である。
【００２７】
プリンタ１０が待機状態４４であり、かつ、通常の処理を実行すべき場合に、プリンタ１０は、処理状態４２に移行する。なお、上記の通常の処理は、印刷指示パケットに応じて実行される印刷処理、ユーザによって表示パネル３８の操作が為された場合に実行される表示処理等を含む。処理状態４２は、待機状態４４と同様、２個のＣＰＵ１４，２４は非スリープ状態であり、２個のＲＡＭ２０，２２は通常動作モードであり、表示パネル３８はＯＮ状態である。処理状態４２と待機状態４４との相違点は、メインＣＰＵ１４が上記の通常の処理を実行しているか否かである。メインＣＰＵ１４が上記の通常の処理を終了すると、プリンタ１０は、待機状態４４に移行する。
【００２８】
メインＣＰＵ１４は、待機状態４４に移行すると、メインＣＰＵ１４に内蔵されている上記のタイマ機構をスタートする。待機状態４４が所定期間継続されると、メインＣＰＵ１４は、パネル制御回路３６に、表示パネル３８をＯＦＦ状態にするように指示する。この結果、プリンタ１０は、Ｌスリープ状態４６に移行する。Ｌスリープ状態４６では、２個のＣＰＵ１４，２４は非スリープ状態であり、２個のＲＡＭ２０，２２は通常動作モードであり、表示パネル３８はＯＦＦ状態である。これにより、表示パネル３８で消費される電力を低減させることができる。Ｌスリープ状態４６において、メインＣＰＵ１４が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、プリンタ１０は、処理状態４２に移行する。
【００２９】
プリンタ１０は、メインＣＰＵ１４の図４の処理によって、Ｌスリープ状態４６からＤスリープ状態４８に移行する。Ｄスリープ状態４８では、メインＣＰＵ１４はスリープ状態（クロック信号が供給されない状態）であり、サブＣＰＵ２４は非スリープ状態であり、ＳＲＡＭ２０は通常動作モードであり、ＤＲＡＭ２２はセルフリフレッシュモード（即ち、通常動作モードよりも消費電力が低いモード）であり、表示パネル３８はＯＦＦ状態である。Ｄスリープ状態４８において、メインＣＰＵ１４が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、プリンタ１０は、Ｌスリープ状態４６を経て処理状態４２に移行する。プリンタ１０がＤスリープ状態４８からＬスリープ状態４６に移行する際に、ＤＲＡＭ２２がセルフリフレッシュモードから通常動作モードに移行するとともに、メインＣＰＵ１４がスリープ状態から非スリープ状態に移行する。
【００３０】
（メインＣＰＵが実行する処理）
次いで、メインＣＰＵ１４が実行する処理の内容について説明する。図４は、メインＣＰＵ１４によって実行される処理のフローチャートを示す。図４の処理は、プリンタ１０の電源がＯＮされ、メインＣＰＵ１４がタイマ機構をリセットすると開始される。プリンタ１０の電源がＯＮされた時点では、プリンタ１０は待機状態４４である。メインＣＰＵ１４は、ＳＲＡＭ２０に待機状態４４を示す状態変数を格納する。
【００３１】
プリンタ１０が状態４２，４４のいずれかである場合、ＤＲＡＭ２２は通常動作モードであり、ＬＡＮ４を介して受信する未処理パケットはＤＲＡＭ２２に格納される。メインＣＰＵ１４は、ＤＲＡＭ２２に格納された未処理パケットを処理する。例えば、プリンタ１０が待機状態４４であり、かつ、メインＣＰＵ１４が第１種の未処理パケットを処理すべき場合には、プリンタ１０は、処理状態４２に移行することなく、待機状態４４に維持される（即ち状態変数が変更されない）。この状態で、メインＣＰＵ１４は、第１種の未処理パケットを処理する。より具体的に言うと、メインＣＰＵ１４は、第１種の未処理パケットに対する応答処理を実行する。また、プリンタ１０が待機状態４４であり、かつ、メインＣＰＵ１４が上記の通常の処理（第２種の未処理パケット（即ち印刷指示パケット）に応じた印刷処理、又は、表示処理）を実行すべき場合には、プリンタ１０は、処理状態４２に移行する。プリンタ１０が待機状態４４から処理状態４２に移行する場合に、メインＣＰＵ１４は、ＳＲＡＭ２０に格納されている状態変数（待機状態４４を示す値）を、処理状態４２を示す値に変更する。一方において、メインＣＰＵ１４が上記の通常の処理（印刷処理又は表示処理）を終了し、プリンタ１０が処理状態４２から待機状態４４に移行する場合に、メインＣＰＵ１４は、ＳＲＡＭ２０に格納されている状態変数（処理状態４２を示す値）を、待機状態４４を示す値に変更する。
【００３２】
メインＣＰＵ１４は、ＳＲＡＭ２０に格納されている状態変数が待機状態４４を示すのか否かを判断する（Ｓ１２）。Ｓ１２でＹＥＳの場合にＳ１４に進み、ＮＯの場合にメインＣＰＵ１４は、Ｓ１２の判断を繰り返す。Ｓ１４では、メインＣＰＵ１４は、タイマ機構の計測時間が所定時間を経過したのか否かを判断する。なお、タイマ機構は、プリンタ１０が待機状態４４に移行する毎にリセットされる。Ｓ１４でＮＯの場合にＳ１２に戻り、ＹＥＳの場合にＳ１６に進む。Ｓ１６では、メインＣＰＵ１４は、ＳＲＡＭ２０に格納されている状態変数（待機状態４４を示す値）を、Ｌスリープ状態４６を示す値に変更する。続いて、メインＣＰＵ１４は、表示パネル３８への電圧の印加を停止するように、パネル制御回路３６に指示する（Ｓ１８）。これにより、表示パネル３８はＯＦＦ状態になる。即ち、プリンタ１０は、Ｌスリープ状態４６になる。
【００３３】
プリンタ１０がＬスリープ状態４６である場合、ＤＲＡＭ２２は通常動作モードであり、ＬＡＮ４を介して受信する未処理パケットはＤＲＡＭ２２に格納される。プリンタ１０がＬスリープ状態４６であり、かつ、メインＣＰＵ１４が第１種の未処理パケットを処理すべき場合には、プリンタ１０がＬスリープ状態４６に維持された状態で、メインＣＰＵ１４は、第１種の未処理パケットを処理する。また、プリンタ１０がＬスリープ状態４６であり、かつ、メインＣＰＵ１４が上記の通常の処理を実行すべき場合には、プリンタ１０は処理状態４２に移行する。この場合、メインＣＰＵ１４は、ＳＲＡＭ２０に格納されている状態変数（Ｌスリープ状態４６を示す値）を、処理状態４２を示す値に変更する。
【００３４】
メインＣＰＵ１４は、ＳＲＡＭ２０に格納されている状態変数がＬスリープ状態４６を示すのか否かを判断する（Ｓ２０）。ＳＲＡＭ２０に格納されている状態変数が処理状態４２を示す値に変更されると、Ｓ２０でＮＯと判断され、メインＣＰＵ１４は、パネル制御回路３６に表示パネル３８に電圧を印加するように指示する（Ｓ２２）。これにより、表示パネル３８はＯＮ状態になる。メインＣＰＵ１４は、Ｓ２２を終えると、Ｓ１２に戻る。なお、この場合、メインＣＰＵ１４が上記の通常の処理が終了するまで、Ｓ１２でＮＯと判断される。
【００３５】
一方において、Ｓ２０でＹＥＳの場合、メインＣＰＵ１４は、ＬＡＮ４を介してパケットを送信しているか否かを判断する（Ｓ２４）。例えば、メインＣＰＵ１４が外部装置６等からの第１種の未処理パケットに対するレスポンス（例えばプリンタ１０のステータスの要求に対するレスポンス）を返信している途中の場合、Ｓ２４でＹＥＳと判断される。Ｓ２４でＹＥＳの場合、Ｓ３２に進む。一方において、Ｓ２４でＮＯの場合、メインＣＰＵ１４は、未処理パケットがＤＲＡＭ２２に格納されているか否かを判断する（Ｓ２６）。Ｓ２６でＹＥＳの場合にＳ２８に進み、Ｓ２６でＮＯの場合にＳ３０に進む。Ｓ２８では、メインＣＰＵ１４は、未処理パケットを処理する。Ｓ２８で処理される未処理パケットは、メインＣＰＵ１４が非スリープ状態である間に受信されて、ＤＲＡＭ２２に格納された未処理パケットと、メインＣＰＵ１４がスリープ状態である間に受信されて、ＳＲＡＭ２０に格納された特定の未処理パケットと、を含む。なお、この特定の未処理パケットは、後述のＳ５０の処理によって、ＤＲＡＭ２２に移動される。例えば、Ｓ２８で処理される未処理パケットが第２種の未処理パケット（即ち印刷指示パケット）である場合には、メインＣＰＵ１４は、プリンタ１０を処理状態４２に移行させ、ＳＲＡＭ２０に格納されている状態変数を、処理状態４２を示す値に変更する。この場合、Ｓ２０でＮＯと判断され、Ｓ２２で表示パネルがＯＮされ、Ｓ１２に進む。また、例えば、Ｓ２８で処理される未処理パケットが第１種の未処理パケットである場合には、プリンタ１０がＬスリープ状態４６に維持された状態で（即ち状態変数が変えられることなく）、メインＣＰＵ１４は、未処理パケットを処理する。この場合、Ｓ２０でＹＥＳと判断される。
【００３６】
Ｓ３０では、メインＣＰＵ１４は、プリンタ１０に接続中のデバイス（例えば外部装置６）があるのか否かを判断する。例えば、プリンタ１０がＷｅｂサーバ機能を有しており、外部装置６がプリンタ１０のＷｅｂサーバにＴＣＰ接続中である場合、Ｓ３０でＹＥＳと判断される。Ｓ３０でＹＥＳの場合にＳ３２に進み、ＮＯの場合にＳ３４に進む。Ｓ３２では、メインＣＰＵ１４は、Ｄスリープ状態４８に移行不可であると判断して、Ｓ３８に進む。一方において、Ｓ３４では、メインＣＰＵ１４は、Ｄスリープ状態４８に移行可能であると判断して、Ｓ４０に進む。パケットの送信（Ｓ２４）やＴＣＰ接続（Ｓ３０）が終了すると、Ｓ３８では、メインＣＰＵ１４は、ＷＡＩＴ命令を実行する。ＷＡＩＴ命令が実行されると、メインＣＰＵ１４は、割り込み要求を受けるまで待機する実行停止状態となる。これにより、メインＣＰＵ１４の消費電力を低減させることができる。メインＣＰＵ１４は、Ｓ３８において割り込み要求を受けると、Ｓ２０に戻る。
【００３７】
Ｓ４０では、メインＣＰＵ１４は、ＬＡＮ４を介して受信する未処理パケットを格納するＲＡＭを、ＤＲＡＭ２２からＳＲＡＭ２０に切り替える。より詳細には、メインＣＰＵ１４は、ＤＲＡＭ２２へのＤＭＡ（Direct Memory Access）転送を停止する。これにより、未処理パケットがＤＲＡＭ２２に格納されることが禁止される。続いて、メインＣＰＵ１４は、ＳＲＡＭ２０へのＤＭＡ転送を可能な状態にする。さらに、メインＣＰＵ１４は、サブＣＰＵ２４がメインＣＰＵ１４に代理して処理を実行するために必要な情報（例えばプリンタ１０のＩＰアドレス等）を、ＳＲＡＭ２０に格納する。続いて、メインＣＰＵ１４は、サブＣＰＵ２４以外からの割り込み要求をマスク（禁止）する（Ｓ４２）。メインＣＰＵ１４は、ＳＲＡＭ２０に格納されている状態変数（Ｌスリープ状態４６を示す値）を、Ｄスリープ状態４８を示す値に変更する（Ｓ４４）。メインＣＰＵ１４は、サブＣＰＵ２４に、処理を実行するように、割り込み要求を発行する（Ｓ４６）。メインＣＰＵ１４は、ＷＡＩＴ命令を実行する（Ｓ４８）。ＷＡＩＴ命令が実行されると、メインＣＰＵ１４は、割り込み要求を受けるまで待機する実行停止状態となる。メインＣＰＵ１４は、Ｓ４８において割り込み要求を受ける（後述の図５のＳ１０２参照）と、Ｓ５０に進む。Ｓ５０では、メインＣＰＵ１４は、ＳＲＡＭ２０のパケット格納領域２１に格納されている上記の特定の未処理パケット（即ちＤスリープ状態４８中に受信された未処理パケット）を、ＤＲＡＭ２２に移動させる。次いで、メインＣＰＵ１４は、Ｓ３４で実行したサブＣＰＵ２４に対する割り込み要求のマスクを解除して（Ｓ５２）、Ｓ２０に戻る。即ち、メインＣＰＵ１４は、割り込み要求を受けると、Ｓ２０の処理を実行する。この場合、メインＣＰＵ１４は、Ｓ２０でＹＥＳと判断する。
【００３８】
（サブＣＰＵが実行する処理）
続いて、サブＣＰＵ２４が実行する処理の内容を説明する。サブＣＰＵ２４は、非スリープ状態である場合に、所定の時間間隔（以下では「タイマ処理実行間隔」と呼ぶ）毎に、ＫＥＥＰ  ＡＬＩＶＥパケットをＬＡＮ４に送信するタイマ処理を実行する。図５の処理は、プリンタ１０の電源がＯＮされたことをトリガとして開始される。サブＣＰＵ２４は、ＳＲＡＭ２０に格納されているプログラムを使用して、以下の処理を実行する。最初に、サブＣＰＵ２４は、ＷＡＩＴ命令を実行する（Ｓ６２）。サブＣＰＵ２４は、割り込み要求を受けるまで待機する（即ち実行停止状態に移行する）。上述したように、メインＣＰＵ１４は、図４のＳ４６において、サブＣＰＵ２４に割り込み要求を発行する。これにより、サブＣＰＵ２４の実行停止状態が解除され、Ｓ６４に進む。
【００３９】
Ｓ６４では、サブＣＰＵ２４は、ＳＲＡＭ２０に格納されている状態変数がＤスリープ状態４８を示すのか否かを判断する。Ｓ６４でＮＯの場合、Ｓ６２に戻る。即ち、サブＣＰＵ２４は、ＳＲＡＭ２０に格納されている状態変数がＤスリープ状態４８以外の値を示す場合、実行停止状態で待機する。
【００４０】
Ｓ６４でＹＥＳの場合、サブＣＰＵ２４は、メイン用クロック回路１６（図１参照）にクロック供給の停止を指示する（Ｓ６６）。この結果、メインＣＰＵ１４は、非スリープ状態からスリープ状態に移行する。なお、サブＣＰＵ２４は、ＳＲＡＭ２０に格納されている状態移行フラグをＯＦＦにする。続いて、サブＣＰＵ２４は、ＤＲＡＭ２２を通常動作モードからセルフリフレッシュモードに移行させる（Ｓ６８）。ＤＲＡＭ２２がセルフリフレッシュモードである間は、ＤＲＡＭ２２に未処理パケットを格納することができない。なお、ＤＲＡＭ２２がセルフリフレッシュモードである場合、通常動作モードと比べて、ＤＲＡＭ２２の消費電力は低い。次いで、サブＣＰＵ２４は、メインＣＰＵ１４のスリープ状態の解除要求があるのか否かを判断する（Ｓ７０）。具体的には、サブＣＰＵ２４は、ＳＲＡＭ２０に格納されている状態移行フラグがＯＮである場合に、Ｓ７０でＹＥＳと判断し、状態移行フラグがＯＦＦである場合に、Ｓ７０でＮＯと判断する。なお、状態移行フラグは、後述のＳ９４の処理でＯＮされる。また、サブＣＰＵ２４は、表示パネル３８の操作が検出される場合に、Ｓ７０でＹＥＳと判断する。Ｓ７０でＹＥＳの場合にＳ９６に進み、Ｓ７０でＮＯの場合にＳ７２に進む。
【００４１】
Ｓ７２では、サブＣＰＵ２４の検出部２５は、ＬＡＮ４を介して未処理パケットの受信の検出処理を実行する。具体的には、検出部２５は、ＭＡＣコントローラ２８のバッファに未処理パケットが格納されているのか否かを判断する。検出部２５は、ＭＡＣコントローラ２８のバッファに未処理パケットが格納されている場合、Ｓ７２でＹＥＳと判断し、Ｓ７４に進む。なお、この場合には、サブＣＰＵ２４は、ＭＡＣコントローラ２８のバッファ内の未処理パケットを、ＳＲＡＭ２０のパケット格納領域２１に移動させる。一方において、検出部２５は、ＭＡＣコントローラ２８のバッファに未処理パケットが格納されていない場合、Ｓ７２でＮＯと判断し、Ｓ７０に戻る。Ｓ７４では、サブＣＰＵ２４は、未処理パケットを処理するためのパケット処理の終了時刻を決定する。具体的には、サブＣＰＵ２０は、ＳＲＡＭ２０に予め格納されているパケット処理の許容期間を、時計機構が示す現在の時刻に加算することによって、パケット処理の終了時刻を決定する。なお、パケット処理の許容期間は、タイマ処理のインターバルである上記のタイマ処理実行間隔よりも短い期間に設定されている。
【００４２】
次いで、サブＣＰＵ２４は、パケット処理を実行する。なお、サブＣＰＵ２４は、パケット処理の実行中に、他の１個以上の未処理パケットが、ＬＡＮ４を介して受信される場合に、当該１個以上の未処理パケットをパケット格納領域２１に順次格納する。また、図示省略しているが、サブＣＰＵ２４は、パケット処理の実行中に、表示パネル３８の操作が検出されることを監視している。表示パネル３８の操作が検出される場合、サブＣＰＵ２４は、Ｓ９４の処理を実行する。なお、サブＣＰＵ２４は、表示パネル３８の操作が検出された際に処理している未処理パケットの処理を終了した後に、Ｓ９４の処理を実行する。パケット処理では、サブＣＰＵ２４は、パケット格納領域２１に格納された１個以上の未処理パケットを順次処理する。即ち、サブＣＰＵ２４は、第１の未処理パケットの処理を終了し、かつ、現在時刻が上記の終了時刻を経過していない場合に、第１の未処理パケットの処理に引き続いて、第２の未処理パケットを処理することが可能である。
【００４３】
パケット処理は、Ｓ７６〜Ｓ９４の処理を含む。パケット処理では、まず、サブＣＰＵ２４は、パケット格納領域２１に未処理パケットが残存するのか否かを判断する（Ｓ７６）。ここでＹＥＳの場合にＳ７８に進み、ＮＯの場合にＳ７０に戻る。Ｓ７８では、サブＣＰＵ２４は、パケット格納領域２１の残容量が、予め決められた所定量より大きいのか否かを判断する。ここでＹＥＳの場合にＳ８０に進み、ＮＯの場合にＳ９４に進む。Ｓ８０では、サブＣＰＵ２４は、パケット格納領域２１に格納されている１個以上の未処理パケットのうちの１個の未処理パケットを選択する。この選択処理では、サブＣＰＵ２４は、パケット格納領域２１に格納された１個以上の未処理パケットのうち、受信された時刻が最も古い未処理パケットから順に選択する。次いで、サブＣＰＵ２４は、Ｓ８０で選択された未処理パケットが正常なパケットであるのか否かを判断する（Ｓ８２）。例えば、未処理パケットのヘッダに記述されているパケット長と、未処理パケットの実際のパケット長と、が一致しない場合、サブＣＰＵ２４は、当該未処理パケットが正常でないと判断する。Ｓ８２でＮＯの場合、サブＣＰＵ２４は、当該未処理パケットを削除して（Ｓ８８）、Ｓ９０に進む。
【００４４】
一方において、Ｓ８２でＹＥＳの場合、サブＣＰＵ２４は、Ｓ８０で選択された未処理パケットが、メインＣＰＵ１４が処理すべき種類のパケットであるのか否かを判断する（Ｓ８４）。具体的には、サブＣＰＵ２４は、Ｓ８０で選択された未処理パケットが、第２種の未処理パケット（印刷指示パケット）であるのか否かを判断する。Ｓ８４でＹＥＳの場合にＳ９４に進み、ＮＯの場合にＳ８６に進む。
【００４５】
Ｓ８６では、サブＣＰＵ２４は、Ｓ８０で選択された未処理パケットに対して、応答処理を実行して、Ｓ９０に進む。応答処理は、Ｓ８０で選択された未処理パケットに対する応答パケットを作成する処理と、当該未処理パケットの送信元に当該応答パケットを返信する処理と、を含む。Ｓ９０では、サブＣＰＵ２４は、時計機構が示す現在時刻が、Ｓ７４で決定された終了時刻を経過したのか否かを判断する。ここでＹＥＳの場合にＳ９２に進み、ＮＯの場合にＳ７６に戻る。Ｓ９２では、サブＣＰＵ２４は、パケット格納領域２１に未処理パケットが残存するのか否かを判断する。ここでＹＥＳの場合にＳ９４に進み、ＮＯの場合にＳ７０に戻る。Ｓ９４では、サブＣＰＵ２４は、メインＣＰＵ１４をスリープ状態から非スリープ状態に移行するための解除要求を発行する。具体的には、サブＣＰＵ２４は、ＳＲＡＭ２０に格納されているメインＣＰＵ１４の状態移行フラグを、ＯＦＦからＯＮに変更する。Ｓ９４の処理が終了すると、Ｓ７０に戻る。Ｓ９４の処理を終了した場合、サブＣＰＵ２４は、Ｓ７０でＹＥＳと判断する。
【００４６】
Ｓ７０でＹＥＳの場合、サブＣＰＵ２４は、ＤＲＡＭ２２のモード移行処理を実行する（Ｓ９６）。モード移行処理は、ＤＲＡＭ２２をセルフリフレッシュモードから通常動作モードに移行させるモード移行処理と、ＬＡＮ４を介して受信される未処理パケットを格納するＲＡＭをＳＲＡＭ２０からＤＲＡＭ２２に切り替えるメモリ切替処理と、を含む。メモリ切替処理では、サブＣＰＵ２４は、ＳＲＡＭ２０へのＤＭＡ（Direct Memory Access）転送を停止する。これにより、未処理パケットをＳＲＡＭ２０に格納することが禁止される。続いて、サブＣＰＵ２４は、ＤＲＡＭ２２へのＤＭＡ転送を可能な状態にする。
【００４７】
次いで、サブＣＰＵ２４は、ＳＲＡＭ２０のＤスリープ状態４８を示す状態変数を、Ｌスリープ状態４６を示す値に変更する（Ｓ９８）。続いて、サブＣＰＵ２４は、メイン用クロック回路１６（図１参照）に、メインＣＰＵ１４にクロック供給を開始するよう指示する（Ｓ１００）。この結果、メインＣＰＵ１４にクロックが供給され、スリープ状態から非スリープ状態に移行する。サブＣＰＵ２４は、メインＣＰＵ１４に割り込み要求を発行する（Ｓ１０２）。この結果、メインＣＰＵ１４は、図４のＳ５０の処理を開始する。
【００４８】
（パケット処理の具体例）
パケット処理の具体例について、図６を参照して説明する。図６のケース１に示すように、サブＣＰＵ２４は、未処理パケットＰ１の受信を検出すると（図５のＳ７２でＹＥＳ）、第１終了時刻を決定し（図５のＳ７４）、第１のパケット処理を開始する。プリンタ１０は、未処理パケットＰ１の処理中に、未処理パケットＰ２を受信する。サブＣＰＵ２４は、未処理パケットＰ２を、パケット格納領域２１に格納する。サブＣＰＵ２４は、未処理パケットＰ１の処理を終了すると、現在時刻が第１終了時刻を経過したのか否かを判断し（図５のＳ９０)、ここでＮＯの場合には、引き続き、未処理パケットＰ２の処理を実行する。サブＣＰＵ２４は、未処理パケットＰ２の処理を終了すると、パケット格納領域２１に未処理パケットが残存しないと判断し（図５のＳ７６でＮＯ）、第１のパケット処理を終了する。即ち、図５のＳ７４で決定された第１終了時刻が経過する前に、サブＣＰＵ２４は、第１のパケット処理を終了する。その後、未処理パケットＰ３が受信されると、サブＣＰＵ２４は、第２終了時刻（図示省略）を決定し（図５のＳ７４）、第２のパケット処理を開始する。第２のパケット処理のＳ９０では、現在時刻が第２終了時刻を経過したのか否かが判断される。サブＣＰＵ２４は、第２のパケット処理中に受信された未処理パケットＰ４〜Ｐ６を順次処理した後に、パケット格納領域２１に未処理パケットが残存しないと判断し（図５のＳ７６でＮＯ）、第２のパケット処理を終了する。即ち、図５のＳ７４で決定された第２終了時刻が経過する前に、サブＣＰＵ２４は、第２のパケット処理を終了する。なお、ケース１では、図５のＳ７６でＮＯと判断された結果として第１及び第２のパケット処理が終了するために、図５のＳ９４の処理が実行されない。即ち、ケース１では、パケット処理が終了しても、サブＣＰＵ２４は、メインＣＰＵ１４を、スリープ状態から非スリープ状態に移行させない。
【００４９】
ケース２では、サブＣＰＵ２４は、未処理パケットＰ１を受信すると、パケット処理を開始する。サブＣＰＵ２４は、パケット処理中に受信される未処理パケットＰ２〜Ｐ１０を順次処理する。サブＣＰＵ２４は、未処理パケットＰ９の処理を終了した後、Ｓ７４で決定された終了時刻が経過していないため（図５のＳ９０でＮＯ）、未処理パケットＰ１０を処理する。サブＣＰＵ２４は、未処理パケットＰ１０の処理を終了した後、図５のＳ７４で決定された終了時刻を経過しているため（図５のＳ９０でＹＥＳ）、パケット処理を終了する。なお、ケース２では、サブＣＰＵ２４は、パケット処理を終了する際に、パケット格納領域２１に未処理パケットが残存しないと判断する（図５のＳ９２でＮＯ）。従って、図５のＳ９４の処理が実行されないために、サブＣＰＵ２４は、メインＣＰＵ１４を、スリープ状態から非スリープ状態に移行させない。
【００５０】
ケース３では、ケース２と同様に、サブＣＰＵ２４は、未処理パケットＰ１を受信するとパケット処理を開始し、パケット処理中に受信される未処理パケットＰ２〜Ｐ１０を順次処理する。サブＣＰＵ２４は、未処理パケットＰ１０の処理を終了した後、図５のＳ７４で決定された終了時刻が経過したと判断する（図５のＳ９０でＹＥＳ）。このため、サブＣＰＵ２４は、未処理パケットＰ１１〜Ｐ１４が残存しているにも関わらず、パケット処理を終了する。サブＣＰＵ２４は、パケット処理を終了する際に、パケット格納領域２１に未処理パケットＰ１１〜Ｐ１４が残存していると判断する（図５のＳ９２でＹＥＳ）。従って、図５のＳ９４の処理が実行されるために、サブＣＰＵ２４は、メインＣＰＵ１４を、スリープ状態から非スリープ状態に移行させる（Ｓ７０でＹＥＳの場合のＳ１００）。メインＣＰＵ１４は、非スリープ状態に移行した後、パケット格納領域２１に残存している未処理パケットＰ１１〜Ｐ１４を、ＤＲＡＭ２２に移動する（図４のＳ５０）。次いで、メインＣＰＵ１４は、未処理パケットＰ１１〜Ｐ１４を順次処理する（図４のＳ２８）。
【００５１】
ケース４では、ケース２と同様に、サブＣＰＵ２４は、未処理パケットＰ１を受信するとパケット処理を開始する。サブＣＰＵ２４は、パケット処理中に受信される未処理パケットＰ２〜Ｐ４を順次処理する。サブＣＰＵ２４は、未処理パケットＰ５が、メインＣＰＵ１４が処理すべき第２種の未処理パケットであると判断し（図５のＳ８４でＹＥＳ）、未処理パケットＰ５及びＰ６が残存しているにも関わらず、現在時刻が終了時刻を経過する前に、パケット処理を終了する。図５のＳ８４でＹＥＳの場合にはＳ９４の処理が実行されるために、サブＣＰＵ２４は、メインＣＰＵ１４を、スリープ状態から非スリープ状態に移行させる。メインＣＰＵ１４は、非スリープ状態に移行した後、パケット格納領域２１に残存している未処理パケットＰ５及びＰ６を、ＤＲＡＭ２２に移動する（図４のＳ５０）。次いで、メインＣＰＵ１４は、未処理パケットＰ５及びＰ６を順次処理する（図４のＳ２８）。
【００５２】
ケース５では、ケース２と同様に、サブＣＰＵ２４は、未処理パケットＰ１を受信するとパケット処理を開始する。サブＣＰＵ２４は、パケット処理中に受信される未処理パケットＰ２〜Ｐ４を順次処理する。サブＣＰＵ２４は、未処理パケットＰ４の処理を終了した後、パケット格納領域２１の残容量が、予め決められた所定量よりも少ないと判断する（図５のＳ７８でＮＯ）。この場合、サブＣＰＵ２４は、未処理パケットＰ５〜Ｐ１５が残存しているにも関わらず、現在時刻が終了時刻を経過する前に、パケット処理を終了する。図５のＳ７８でＮＯの場合にはＳ９４の処理が実行されるために、サブＣＰＵ２４は、メインＣＰＵ１４を、スリープ状態から非スリープ状態に移行させる。メインＣＰＵ１４は、非スリープ状態に移行した後、パケット格納領域２１に残存している未処理パケットＰ５〜Ｐ１５を、ＤＲＡＭ２２に移動し（図４のＳ５０）、未処理パケットＰ５〜Ｐ１５を順次処理する（図４のＳ２８）。
【００５３】
実施例について詳しく説明した。プリンタ１０では、サブＣＰＵ２４は、メインＣＰＵ１４がスリープ状態である場合に、ＬＡＮ４を介して受信される未処理パケットを処理する。この結果、メインＣＰＵ１４を頻繁に非スリープ状態に移行させずに済む。個音結果、メインＣＰＵ１４のスリープ状態が維持される期間が長くなり得るために、省電力なプリンタ１０を実現し得る。
【００５４】
図６のケース２に示すように、サブＣＰＵ２４は、未処理パケットＰ１０を処理した後、図５のＳ７４で決定された終了時刻が経過している場合（図５のＳ９０でＹＥＳ）であっても、パケット格納領域２１に、未処理パケットが格納されていない場合（図５のＳ９２でＮＯ）には、メインＣＰＵ１４を非スリープ状態に移行させない。この結果、メインＣＰＵ１４のスリープ状態が維持される期間を長くすることができる。また、サブＣＰＵ２４は、パケット処理の終了後、他の処理（例えば上記のタイマ処理）を実行することができる。
【００５５】
一方において、図６のケース３に示すように、サブＣＰＵ２４は、図５のＳ７４で決定された終了時刻が経過している場合（図５のＳ９０でＹＥＳ）であって、パケット格納領域２１に、未処理パケットＰ１１〜Ｐ１４が格納されている場合（図５のＳ９２でＹＥＳ）には、メインＣＰＵ１４を非スリープ状態に移行させる。これにより、メインＣＰＵ１４は、非スリープ状態に移行した後、未処理パケットＰ１１〜Ｐ１４を処理する（図４のＳ２８）。この結果、サブＣＰＵ２４によるパケット処理の継続時間が長くなることに起因して、サブＣＰＵ２４が、他の処理を実行することができなくなる事態を防止することができる。また、メインＣＰＵ１４が未処理パケットＰ１１〜Ｐ１４を処理するために、残存する未処理パケットＰ１１〜Ｐ１４を迅速に処理することができる。
【００５６】
図６のケース４に示すように、サブＣＰＵ２４は、メインＣＰＵ１４によって処理されるべき種類の未処理パケットＰ５がパケット格納領域２１に格納されている場合（図５のＳ８４でＹＥＳ）に、未処理パケットＰ５に対する応答処理を実行することなく、メインＣＰＵ１４を、非スリープ状態に移行させる。これにより、メインＣＰＵ１４は、未処理パケットＰ５を処理する（図４のＳ２８）ことができる。
【００５７】
図６のケース５に示すように、サブＣＰＵ２４は、パケット格納領域２１の残容量が、予め決められた所定量よりも少ない場合（図５のＳ７８でＮＯ）に、パケット処理を終了し、メインＣＰＵ１４を、非スリープ状態に移行させる。また、ＤＲＡＭ２２をセルフリフレッシュモードから通常動作モードに移行させる。メインＣＰＵ１４は、ＤＲＡＭ２２が通常動作モードに移行されると、パケット格納領域２１に格納されている未処理パケットＰ５〜Ｐ１５を、ＤＲＡＭ２２に移動させる。ＤＲＡＭ２２は、ＳＲＡＭ２０よりも容量が大きい。この結果、パケット格納領域２１の残容量が不足することによって、受信された未処理パケットが、パケット格納領域２１に格納されずに、取りこぼされることを防止することができる。また、メインＣＰＵ１４は、非スリープ状態に移行されると、ＤＲＡＭ２２に移動された未処理パケットＰ５〜Ｐ１５を処理する。メインＣＰＵ１４は、サブＣＰＵ２４よりも処理速度が速い。このため、プリンタ１０は、サブＣＰＵ２４が未処理パケットＰ５〜Ｐ１５を処理する場合と比較して、迅速に処理することができる。
【００５８】
なお、上記のＰＣ１０が「通信装置」の一例である。また、メインＣＰＵ１４が「第１処理部」の一例であり、サブＣＰＵ２４が「第２処理部」の一例である。パケット格納領域２１が「格納部」の一例である。
【００５９】
（変形例）
（１）メインＣＰＵ１４のみが処理可能な第２種の未処理パケットは、予め決められた種類のプロトコルのパケットを含んでいてもよい。予め決められた種類のプロトコルのパケットは、例えば、ＤＲＡＭ２２のみに格納されている情報（例えばプリンタ１０の設定情報）が必要となるパケットや、メインＣＰＵ１４のみが使用可能なプログラムでしか処理できないパケット（例えば上記の印刷処理に対応するパケット）であってもよい。
【００６０】
（２）本実施例では、サブＣＰＵ２４は、パケット処理中に、図５のＳ７４で決定された終了時刻を経過した場合であって（図５のＳ９０でＹＥＳ）、パケット格納領域２１に未処理パケットが残存している場合（図５のＳ９２でＹＥＳ）には、メインＣＰＵ１４を非スリープ状態に移行させる。一方において、サブＣＰＵ２４は、図５のＳ７４で決定された終了時刻を経過した場合であって（図５のＳ９０でＹＥＳ）、パケット格納領域２１に未処理パケットが残存していない場合（図５のＳ９２でＮＯ）には、メインＣＰＵ１４を非スリープ状態に移行させない。これに代えて、サブＣＰＵ２４は、パケット処理中に、図５のＳ７４で決定された終了時刻を経過した場合（図５のＳ９０でＹＥＳ）、パケット格納領域２１に未処理パケットが残存しているのか否かに関わらず、メインＣＰＵ１４を、非スリープ状態に移行させてもよい。即ち、サブＣＰＵ２４は、図５のＳ９２の処理を実行しなくてもよい。一般的に言うと、第２処理部は、パケット処理の継続期間が許容期間を越える場合に、未処理パケットが残存するのか否かを判断せずに、第１処理部をスリープ状態から非スリープ状態に移行させてもよい。
【００６１】
（３）本実施例では、サブＣＰＵ２４は、パケット処理を開始する場合に、パケット処理の終了時刻を決定する（図５のＳ７２）。これに代えて、サブＣＰＵ２４は、パケット処理を開始する場合に、プリンタ１０に内蔵されたタイマをスタートさせてもよい。この場合、サブＣＰＵ２４は、図５のＳ９０において、上記のタイマが、予め決められた計測時間を超えているのか否かを判断し、超えている場合にＳ９２に進み、超えていない場合にＳ７６に戻ってもよい。
【００６２】
（４）サブＣＰＵ２４は、図５のＳ７８において、パケット格納領域２１に格納されている未処理パケットの個数が所定数以上であるのか否かを判断してもよい。この場合、未処理パケットの個数が所定数以上の場合に、パケット処理を終了（即ち図５のＳ７８でＮＯと判断）してもよい。サブＣＰＵ２４は、パケット処理中に受信される未処理パケットの個数をカウントし、パケット処理で処理した処理済みのパケットの個数を、カウントした未処理パケットの個数から減算することによって、パケット格納領域２１に格納されている未処理パケットの個数を算出してもよい。本変形例の構成（未処理パケットの個数が所定数以上であるのか否かを判断すること）も、「格納部の残容量が不足するか否かを判断すること」の一例である。
【００６３】
（５）プリンタ１０は、ＳＲＡＭ２０を備えていなくてもよい。この場合、ＤＲＡＭ２２は、プリンタ１０の電源がＯＮにされている間、常に、通常動作モードに維持されていてもよい。また、プリンタ１０は、自身の状態が４種類の状態４２，４４，４６，４８のいずれの状態であっても、ＬＡＮ４を介して受信される未処理パケットを、ＤＲＡＭ２２に格納してもよい。
【００６４】
（６）本実施例では、メインＣＰＵ１４がスリープ状態から非スリープ状態に移行すると、メインＣＰＵ１４は、ＳＲＡＭ２０のパケット格納領域２１に格納されている未処理パケットを、ＤＲＡＭ２２に移動させた後（図４のＳ５０）で、ＤＲＡＭ２２に移動された未処理パケットを処理する。しかしながら、メインＣＰＵ１４は、非スリープ状態に移行した後に、パケット格納領域２１に格納されている未処理パケットを、ＤＲＡＭ２２に移動させず、未処理パケットがパケット格納領域２１に格納された状態で未処理パケットを処理してもよい。メインＣＰＵ１４はサブＣＰＵ２４よりも処理速度が速いため、パケット格納領域２１の容量不足の状態を早期に解消することができる。
【００６５】
（７）本実施例では、プリンタ１０について説明したが、本明細書の技術は、例えば、サーバ、スキャナ、多機能機等の通信装置に利用することができる。
【００６６】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００６７】
２：通信システム、４：ＬＡＮ、６：外部装置、１０：プリンタ、１２：制御部、１４：メインＣＰＵ、１６：メイン用クロック回路、１８：ＲＯＭ、２０：ＳＲＡＭ、２１：パケット格納領域、２２：ＤＲＡＭ、２４：サブＣＰＵ、２５：検出部、２６：サブ用クロック回路、２８：ＭＡＣコントローラ、３０：ネットワークインターフェイス、３２：エンジン制御回路、３４：プリントエンジン、３６：パネル制御回路、３８：表示パネル、４２：処理状態、４４：待機状態、４６：Ｌスリープ状態、４８：Ｄスリープ状態
【図１】
2011160366.tif 000003
【図２】
2011160366.tif 000004
【図３】
2011160366.tif 000005
【図４】
2011160366.tif 000006
【図５】
2011160366.tif 000007
【図６】
2011160366.tif 000008