(57)【要約】【課題】  第１処理部の移行期間中において、データをメモリに格納しきれなくなる事態が起こる場合に、最適な対処を行なうことができる技術を提供すること。【解決手段】  プリンタは、メインＣＰＵとサブＣＰＵとＲＡＭを備える。サブＣＰＵは、メインＣＰＵの非スリープ状態からスリープ状態への移行期間中に、受信するパケットを格納する。サブＣＰＵは、ＲＡＭの空き容量が、移行期間中に新たに受信するパケットを格納するのに充分でない場合（Ｓ８４でＹＥＳ）において、ＲＡＭに第１種のパケットと第２種のパケットとが既に格納されている場合に、ＲＡＭから第２種のパケットを削除して（Ｓ９２）、受信したパケットをＲＡＭに格納する（Ｓ９４）。【選択図】  図１１
2010280093.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
スリープ状態と非スリープ状態との間で状態が移行し、前記非スリープ状態である場合に、前記ネットワークを介して受信するデータを処理する第１処理部と、
前記第１処理部が前記スリープ状態である場合に、前記ネットワークを介して受信するデータに対して、前記第１処理部に代理して代理応答処理を実行する第２処理部と、
メモリと、
を備え、
前記第２処理部は、
前記第１処理部が前記スリープ状態である場合において、前記第１処理部によって処理されるべき特定のデータを受信する場合に、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させる状態移行部と、
前記特定のデータを前記メモリに格納するとともに、前記第１処理部が前記スリープ状態から前記非スリープ状態に移行する移行期間中に受信するデータを前記メモリに格納する記憶制御部であって、前記移行期間中に受信する前記データは、前記第１処理部によって処理されるべき第１種のデータと、前記第２処理部が前記代理応答処理を実行可能な第２種のデータと、を含み得る、前記記憶制御部と、
を備え、
前記記憶制御部は、前記メモリの空き容量が前記移行期間中に新たに受信する対象データを格納するのに充分でない特定の場合において、前記メモリに前記第１種のデータと前記第２種のデータとが既に格納されている場合に、前記メモリから前記第２種のデータを削除して、前記対象データを前記メモリに格納する、通信装置。
【請求項２】
前記記憶制御部は、前記特定の場合において、前記メモリに前記第１種のデータと複数の前記第２種のデータとが既に格納されている場合に、前記複数の前記第２種のデータのうち、最も過去に受信されたデータを削除して、前記対象データを前記メモリに格納する、請求項１に記載の通信装置。
【請求項３】
前記記憶制御部は、前記移行期間中に、前記第２処理部が前記代理応答処理を実行する必要のない第３種のデータを受信する場合に、前記第３種のデータを前記メモリに格納し、
前記記憶制御部は、前記特定の場合において、前記メモリに前記第１種のデータと前記第２種のデータとのうちの少なくとも一方と、前記第３種のデータと、が既に格納されている場合に、前記メモリから前記第３種のデータを削除して、前記対象データを前記メモリに格納する、請求項１又は２に記載の通信装置。
【請求項４】
前記記憶制御部は、前記特定の場合において、前記メモリに前記第１種のデータと前記第２種のデータとのうちの少なくとも一方と、複数の前記第３種のデータと、が既に格納されている場合に、前記複数の第３種のデータのうち、最も過去に受信されたデータを削除して、前記対象データを前記メモリに格納する、請求項３に記載の通信装置。
【請求項５】
前記第２処理部は、
前記対象データが前記代理応答処理を実行する必要のない第３種のデータであるか否かを判断する第１判断部をさらに備え、
前記記憶制御部は、前記対象データが前記第３種のデータであると判断される場合に、前記対象データを前記メモリに格納することなく破棄する、請求項１又は２に記載の通信装置。
【請求項６】
前記第２処理部は、前記対象データが前記第２種のデータである場合に、前記対象データに対して前記代理応答処理を実行せず、
前記第１処理部は、前記非スリープ状態に移行した後に、前記メモリに格納されている前記対象データを処理する、請求項１から５のいずれか一項に記載の通信装置。
【請求項７】
前記第２処理部は、前記第１処理部が前記スリープ状態で維持されるスリープ期間であって、前記移行期間と異なる前記スリープ期間中に受信するデータの種別を判断し、前記移行期間中に受信するデータの種別を判断しない第２判断部をさらに備え、
前記状態移行部は、前記スリープ期間中に受信する前記データが前記第１種のデータであると判断される場合に、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させ、
前記第２処理部は、前記スリープ期間中に受信する前記データが前記第２種のデータであると判断される場合に、前記スリープ期間中に受信する前記データに対して前記代理応答処理を実行する、請求項１から６のいずれか一項に記載の通信装置。
【請求項８】
前記記憶制御部は、前記スリープ期間中に受信する前記データが前記代理応答処理を実行する必要のない第３種のデータであると判断される場合に、前記スリープ期間中に受信する前記データを前記メモリに格納することなく破棄する、請求項７に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続される通信装置に関する。
【背景技術】
【０００２】
特許文献１には、消費電力が比較的に小さいスリープ状態と、消費電力が比較的に大きい非スリープ状態と、の間で状態が移行する第１処理部を備える通信装置が開示されている。非スリープ状態において、第１処理部が所定時間継続して処理を実行しない場合に、第２処理部は、第１処理部をスリープ状態に移行させる。この通信装置では、第１処理部がスリープ状態である場合に、ネットワークを介してデータが受信されると、第２処理部は、データをメモリに格納するとともに、第１処理部をスリープ状態から非スリープ状態に移行させる。なお、第２処理部は、第１処理部のスリープ状態から非スリープ状態への移行期間中に受信されるデータもメモリに格納する（特許文献１の図４のＳ４０５参照）。第１処理部は、非スリープ状態に移行した後に、メモリに格納されているデータを処理する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−５０２９号公報
【特許文献２】特開２００５−７４９２８号公報
【特許文献３】特開２００６−２５９９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通信装置の消費電力を低減させるためには、第１処理部のスリープ状態中又は移行期間中に受信されるデータを格納するためのメモリの総容量をできるだけ抑制することが好ましい。しかしながら、メモリの総容量が小さいと、第１処理部の移行期間中に複数のデータを受信した場合に、データをメモリに格納しきれなくなる事態が起こり得る。本明細書では、第１処理部の移行期間中にデータをメモリに格納しきれなくなる事態が起こる場合に、最適な対処を行なうことができる技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される技術は、ネットワークに接続される通信装置に関する。この通信装置は、第１処理部と第２処理部とメモリとを備える。第１処理部は、スリープ状態と非スリープ状態との間で状態が移行する。第１処理部は、非スリープ状態である場合に、ネットワークを介して受信するデータを処理する。なお、上記した非スリープ状態は、例えば、スリープ状態と比べて消費電力が大きい状態と言い換えてもよい。第２処理部は、第１処理部がスリープ状態である場合に、ネットワークを介して受信するデータに対して、第１処理部に代理して代理応答処理を実行する。
【０００６】
第２処理部は、状態移行部と記憶制御部を備える。状態移行部は、第１処理部がスリープ状態である場合において、第１処理部によって処理されるべき特定のデータを受信する場合に、第１処理部をスリープ状態から非スリープ状態に移行させる。記憶制御部は、特定のデータをメモリに格納するとともに、第１処理部がスリープ状態から非スリープ状態に移行する移行期間中に受信するデータをメモリに格納する。移行期間中に受信するデータは、第１処理部によって処理されるべき第１種のデータと、第２処理部が代理応答処理を実行可能な第２種のデータと、を含み得る。記憶制御部は、メモリの空き容量が移行期間中に新たに受信する対象データを格納するのに充分でない特定の場合において、メモリに第１種のデータと第２種のデータとが既に格納されている場合に、メモリから第２種のデータを削除して、対象データをメモリに格納する。
【０００７】
この通信装置では、第１処理部の移行期間中に受信する対象データをメモリに格納しきれなくなる事態が起こる場合（即ち上記した特定の場合）に、メモリに格納されている第１種のデータと第２種のデータとのうちの第２種のデータを削除する。これにより、メモリに格納されている第１種のデータを削除することなく、対象データを格納することができる。この技術を利用すると、例えば、通信装置の製造者やユーザが、削除されずに処理されるべき重要度の高い種類のデータを第１種のデータとして設定し、第１種のデータより重要度の低い種類のデータを第２種のデータとして設定すれば、上記した特定の場合に、重要度の高い第１種のデータが削除されることを抑制することができる。
【０００８】
記憶制御部は、上記した特定の場合において、メモリに第１種のデータと複数の第２種のデータとが既に格納されている場合に、複数の第２種のデータのうち、最も過去に受信されたデータを削除して、対象データをメモリに格納してもよい。
【０００９】
なお、上記した「最も過去に受信されたデータ」は、例えば、「受信時刻が最も古いデータ」、「最先に受信されたデータ」、あるいは、「メモリに格納されている期間が最も長いデータ」と言い換えてもよい。また、記憶制御部は、上記の複数の第２種のデータのうち、最新に受信されたデータを削除してもよいし、サイズの最も大きなデータを削除してもよいし、ランダムに選択されたデータを削除してもよい。あるいは、記憶制御部は、複数の第２種のデータのそれぞれを通信するためのプロトコルに基づいて、削除すべき第２種のデータを決定してもよい。例えば、複数の第２種のデータが、第１プロトコルに従って通信される第１データと、第２プロトコルに従って通信される第２データと、を含んでいる場合、記憶制御部は、第１データを削除せずに、第２データを削除してもよい。
【００１０】
記憶制御部は、移行期間中に、第２処理部が代理応答処理を実行する必要のない第３種のデータを受信する場合に、第３種のデータをメモリに格納してもよい。記憶制御部は、上記した特定の場合において、メモリに第１種のデータと第２種のデータとのうちの少なくとも一方と、第３種のデータと、が既に格納されている場合に、メモリから第３種のデータを削除して、対象データをメモリに格納してもよい。
この構成によれば、例えば、通信装置の製造者やユーザが、第１種及び第２種のデータより重要度の低い種類のデータを第３種のデータとして設定すれば、上記した特定の場合に、重要度の高い第１種及び第２種のデータが削除されることを抑制することができる。
【００１１】
記憶制御部は、特定の場合において、メモリに第１種のデータと第２種のデータとのうちの少なくとも一方と、複数の第３種のデータと、が既に格納されている場合に、複数の第３種のデータのうち、最も過去に受信されたデータを削除して、対象データをメモリに格納してもよい。また、記憶制御部は、上記の複数の第３種のデータのうち、最新に受信されたデータを削除してもよいし、サイズの最も大きなデータを削除してもよいし、ランダムに選択されたデータを削除してもよい。あるいは、記憶制御部は、複数の第３種のデータのそれぞれを通信するためのプロトコルに基づいて、削除すべき第３種のデータを決定してもよい。
【００１２】
第２処理部は、対象データが代理応答処理を実行する必要のない第３種のデータであるか否かを判断する第１判断部をさらに備えていてもよい。記憶制御部は、対象データが第３種のデータであると判断される場合に、対象データをメモリに格納することなく破棄してもよい。即ち、記憶制御部は、対象データが第３種のデータでないと判断される場合に、対象データをメモリに格納してもよい。
この構成によると、第１種及び第２種のデータより重要度の低い第３種のデータが移行期間中にメモリに格納されないために、重要度の低い第３種のデータによってメモリの記憶容量が圧迫されることを防止することができる。
【００１３】
第２処理部は、対象データが第２種のデータである場合に、対象データに対して代理応答処理を実行しなくてもよい。第１処理部は、非スリープ状態に移行した後に、メモリに格納されている対象データを処理してもよい。
この構成では、第２処理部は、第１処理部の移行期間中に、代理応答処理を実行せずに、第１処理部を非スリープ状態に移行させるための移行処理を実行することができる。第２処理部が代理応答処理と移行処理とを並列的に実行する構成と比べると、第２処理部は、移行処理を高速で行なうことができる。これにより、移行期間を短縮することができ、第１処理部を非スリープ状態に迅速に移行させることができる。
【００１４】
第２処理部は、第１処理部がスリープ状態で維持されるスリープ期間であって、移行期間と異なるスリープ期間中に受信するデータの種別を判断し、移行期間中に受信するデータの種別を判断しない第２判断部をさらに備えていてもよい。状態移行部は、スリープ期間中に受信するデータが第１種のデータであると判断される場合に、第１処理部をスリープ状態から非スリープ状態に移行させてもよい。第２処理部は、スリープ期間中に受信するデータが第２種のデータであると判断される場合に、スリープ期間中に受信するデータに対して代理応答処理を実行してもよい。
さらに、第２処理部は、スリープ期間中に受信するデータが代理応答処理を実行する必要のない第３種のデータであると判断される場合に、スリープ期間中に受信するデータをメモリに格納することなく破棄してもよい。
【図面の簡単な説明】
【００１５】
【図１】プリンタの構成を示す。
【図２】第１ＲＡＭの格納領域の構成の一例を示す。
【図３】第２ＲＡＭの格納領域の構成の一例を示す。
【図４】パケット判別テーブルの一例を示す。
【図５】プリンタの状態移行の一例を示す。
【図６】プリンタの状態に対応する各部の状態の一例を示す。
【図７】メインＣＰＵの省電力処理のフローチャートを示す。
【図８】図７の続きのフローチャートを示す。
【図９】メインＣＰＵの状態移行判断処理のフローチャートを示す。
【図１０】サブＣＰＵの省電力処理のフローチャートを示す。
【図１１】サブＣＰＵの移行期間中処理のフローチャートを示す。
【図１２】第２実施例のサブＣＰＵの移行期間中処理のフローチャートを示す。
【発明を実施するための形態】
【００１６】
ここでは、本明細書に記載の技術の特徴の一部を列挙する。
（特徴１）  通信装置は、第２メモリを備えていてもよい。第２メモリは、第１処理部が非スリープ状態である場合に通常動作モードに設定され、第１処理部がスリープ状態である場合に低消費電力モードに設定されてもよい。
（特徴２）  通信装置は、受信するデータを一時的に記憶する一時記憶部を備えていてもよい。
（特徴３）  上記の場合、第１判断部は、一時記憶部に記憶されるデータが第３種のデータであるか否かを判断してもよい。記憶制御部は、一時記憶部に記憶されるデータが第３種のデータであると第１判断部によって判断される場合に、当該データをメモリに格納することなく、一時記憶部から削除することによって、当該データを破棄してもよい。
（特徴４）  上記の場合、第２判断部は、一時記憶部に記憶されるデータの種別を判断してもよい。一時記憶部に記憶されるデータが第１種又は第２種のデータであると第２判断部によって判断される場合に、第２処理部は、当該データをメモリに格納してもよい。さらに、一時記憶部に記憶されるデータが第３種のデータであると第２判断部によって判断される場合に、当該データをメモリに格納することなく、一時記憶部から削除することによって、当該データを破棄してもよい。
【実施例】
【００１７】
図面を参照して実施例を説明する。図１は、本実施例の通信システム２の概略図を示す。通信システム２は、ＬＡＮ４と外部装置６とプリンタ１０とを備える。外部装置６とプリンタ１０は、ＬＡＮ４に接続されている。外部装置６とプリンタ１０は、ＬＡＮ４を介して、相互に通信可能である。
【００１８】
（プリンタの構成）
図１に示すように、プリンタ１０は、制御部１２と、ネットワークインターフェイス３０（以下では、「ネットワークＩ／Ｆ３０」という）と、プリントエンジン３４と、表示パネル３８等を備える。制御部１２は、メインＣＰＵ１４と、メイン用クロック回路１６と、ＲＯＭ１８と、２つのＲＡＭ２０，２１と、バッファ２２と、サブＣＰＵ２４と、サブ用クロック回路２６と、ＭＡＣコントローラ２８と、エンジン制御回路３２と、パネル制御回路３６等を備える。
【００１９】
メインＣＰＵ１４は、第２ＲＡＭ２１に格納されているプログラムに従って様々な処理を実行する。メインＣＰＵ１４は、タイマ機構を内蔵している。以下では、このタイマのことを待機状態タイマと呼ぶ。メイン用クロック回路１６は、メインＣＰＵ１４にクロック信号を供給する。メインＣＰＵ１４にクロック信号が供給されている間は、メインＣＰＵ１４は非スリープ状態である。メインＣＰＵ１４にクロック信号が供給されていない間は、メインＣＰＵ１４はスリープ状態である。なお、後述するように、メイン用クロック回路１６は、サブＣＰＵ２４によって制御される。
【００２０】
サブＣＰＵ２４は、第１ＲＡＭ２０に格納されているプログラムに従って様々な処理を実行する。サブ用クロック回路２６は、サブＣＰＵ２４にクロック信号を供給する。サブ用クロック回路２６のクロック信号の周波数は、メイン用クロック回路１６のクロック信号の周波数よりも低い。従って、メインＣＰＵ１４を駆動するための消費電力と比べて、サブＣＰＵ２４を駆動するための消費電力は小さい。サブ用クロック回路２６は、プリンタ１０の電源がＯＮにされると、サブＣＰＵ２４にクロック信号を供給する。また、プリンタ１０の電源がＯＦＦにされると、サブＣＰＵ２４へのクロック信号を停止する。即ち、サブＣＰＵ２４は、プリンタ１０の電源がＯＮされている間、スリープ状態には設定されず、非スリープ状態で維持される。
【００２１】
ＲＯＭ１８には、メインＣＰＵ１４及びサブＣＰＵ２４によって実行される複数のプログラムがそれぞれ圧縮された状態で格納されている。各プログラムは、プリンタ１０の電源がＯＮされたときに、第１ＲＡＭ２０又は第２ＲＡＭ２１に展開される。メインＣＰＵ１４又はサブＣＰＵ２４は、第１ＲＡＭ２０又は第２ＲＡＭ２１に展開されたプログラムを使用して処理を実行する。ＲＯＭ１８に格納されている全てのプログラムは、プリンタ１０の電源がＯＮにされると、一旦、第２ＲＡＭ２１に展開される。次いで、第２ＲＡＭ２１に展開された複数のプログラムのうち、予め決められているプログラムが、第１ＲＡＭ２０にロードされる。なお、図示省略されているが、制御部１２は、第１ＲＡＭ２０と第２ＲＡＭ２１のそれぞれに対してクロック信号を供給するための回路も有する。
【００２２】
第１ＲＡＭ２０は、ＳＲＡＭである。図２は、第１ＲＡＭ２０の格納領域の構成の一例を示す。第１ＲＡＭ２０は、メインＣＰＵ１４とサブＣＰＵ２４からアクセス可能である。ＲＡＭ２０は、第１省電力処理プログラム格納領域４１と、代理応答プログラム格納領域４２と、第１代理応答用情報格納領域４３と、状態変数格納領域４４と、パケット格納領域４５と、パケット判別テーブル４６を備える。
【００２３】
第１省電力処理プログラム格納領域４１には、後述するように、サブＣＰＵ２４が実行する省電力処理（図１０参照）を実行するためのプログラムが格納される。メインＣＰＵ１４は、プリンタ１０の電源がＯＮされると、第１ＲＡＭ２０に展開された複数のプログラムのうち、予め設計者等によって決められているサブＣＰＵ２４用の省電力処理プログラムを第１省電力処理プログラム格納領域４１にロードして格納する。
【００２４】
代理応答処理プログラム格納領域４２は、後述するように、サブＣＰＵ２４がメインＣＰＵ１４に代理して処理を実行する（図１０のＳ６６）際に使用するプログラムを格納するための領域である。メインＣＰＵ１４は、プリンタ１０の電源がＯＮされると、第１ＲＡＭ２０に展開された複数のプログラムのうち、予め設計者等によって決められている代理応答プログラムを代理応答プログラム格納領域４２にロードして格納する。
【００２５】
代理応答用情報格納領域４３には、サブＣＰＵ２４がメインＣＰＵ１４に代理して処理を実行するために必要な情報が格納される。代理応答用情報格納領域４３に格納される情報の一例として、プリンタ１０のＩＰアドレス、ＭＡＣアドレス、ノード名等が挙げられる。メインＣＰＵ１４は、非スリープ状態に移行可能となると（図７のＳ２４）、サブＣＰＵ２４がメインＣＰＵ１４に代理して処理を実行するために必要な情報を、代理応答用情報格納領域４３に格納する（図８のＳ２８）。
【００２６】
状態変数格納領域４４には、プリンタ１０の状態を示す状態変数が格納される。プリンタ１０は、「処理状態」、「待機状態」、「ライトスリープ状態（Ｌスリープ状態）」、「ディープスリープ状態（Ｄスリープ状態）」のいずれかの状態で動作する。従って、状態変数格納領域４４には、４つの状態に対応する４つの値のうちの１つの値が格納される。
【００２７】
第１パケット格納領域４５には、メインＣＰＵ１４のスリープ状態中、又は、スリープ状態から非スリープ状態への移行期間中に、ネットワークＩ／Ｆ３０を介して受信されたパケットが格納される。
【００２８】
図４は、図２のパケット判別テーブル４６の内容の一例を示す。パケット判別テーブル４６は、プロトコル５４とパケットの種類５６とが対応付けられた情報である。パケット判別テーブル４６は、後述するように、受信したパケットの種別をサブＣＰＵ２４が判断するために用いられる。種類５６は、「第１種」と「第２種」とを含む。「第１種」に対応するプロトコル５４として、複数のプロトコルが存在する。「第１種」に対応するプロトコル５４は、ＴＣＰ（Transmission Control Protocol）を含む。「第２種」に対応するプロトコル５４として、複数のプロトコルが存在する。「第２種」に対応するプロトコル５４は、ＡＲＰ（Address Resolution Protocol）、ＮｅｔＢＩＯＳ−ＮＳ（Network Basic Input Output System -Name Service）、ＩＣＭＰ（Internet Control Message Protocol）を含む。以下では、「第１種」に対応するプロトコル５４を用いて通信されるパケットのことを「第１種のパケット」と呼び、「第２種」に対応するプロトコル５４を用いて通信されるパケットのことを「第２種のパケット」と呼び、それ以外のプロトコルを用いて通信されるパケットのことを「第３種のパケット」と呼ぶ。
【００２９】
第１種のパケットは、メインＣＰＵ１４によって処理されるべき種類のパケットである。例えば、第１種のパケットは、外部装置６からの印刷のための接続要求である。第２種のパケットは、メインＣＰＵ１４が非スリープ状態の場合には、メインＣＰＵ１４によって応答処理が実行される一方、メインＣＰＵ１４がスリープ状態の場合には、サブＣＰＵ２４によって代理応答処理が実行される種類のパケットである。例えば、第２種のパケットは、ＮｅｔＢＩＯＳネームサービスのパケットである。第３種のパケットは、上記した第１種、第２種のパケットのいずれにも属しない種類のパケットである。即ち、第３種のパケットは、メインＣＰＵ１４が非スリープ状態の場合には、必要に応じて、メインＣＰＵ１４によって応答処理が実行される一方、メインＣＰＵ１４がスリープ状態の場合には、サブＣＰＵ２４によって代理応答処理が実行されない種類のパケットである。どのプロトコルをどの種類に対応させるかは、プリンタ１０の製造者やユーザ等が、どのプロトコルを利用して通信されるパケットがより重要であるかによって、適宜設定することができる。
【００３０】
図１に示す第２ＲＡＭ２１は、ＳＤＲＡＭである。第２ＲＡＭ２１は、メインＣＰＵ１４からアクセス可能である。第２ＲＡＭ２１は、第１ＲＡＭ２０よりもメモリの総容量が大きい。このため、第２ＲＡＭ２１は、第１ＲＡＭ２０と比べて、その消費電力が高い。図３は、第２ＲＡＭ２１の格納領域の構成の一例を示す。第２ＲＡＭ２１は、ネットワーク処理プログラム格納領域４７と、第２省電力処理プログラム格納領域４８と、応答用情報格納領域４９と、第２パケット格納領域５０を備える。
【００３１】
ネットワーク処理プログラム格納領域４７には、メインＣＰＵ１４がネットワークを介して通信する処理を実行するためのネットワーク処理プログラムが格納される。このネットワーク処理プログラムは、ＡＲＰ、ＮｅｔＢＩＯＳ−ＮＳ、ＩＣＭＰ等に関する応答処理（即ちメインＣＰＵ１４が非スリープ状態の間に実行すべき応答処理）を実行するためのプログラム、印刷指示に応じて印刷処理を実行するためのプログラム等を含む。ネットワーク処理プログラムは、さらに、ＭＡＣコントローラ２８を制御するためのプログラム、ＴＣＰ／ＩＰを利用して処理を実行するためのＴＣＰ／ＩＰプロトコルスタック、各種のアプリケーションプロトコルを利用して処理を実行するためのプログラム等を含む。メインＣＰＵ１４は、プリンタ１０の電源がＯＮされると、ＲＯＭ１８に格納されているネットワーク処理プログラムをネットワーク処理プログラム格納領域４７に展開して格納する。
【００３２】
第２省電力処理プログラム格納領域４８には、後述するメインＣＰＵ１４が実行する省電力処理（図７，８参照）を実行するためのプログラムが格納される。メインＣＰＵ１４は、プリンタ１０の電源がＯＮされると、ＲＯＭ１８に格納されているメインＣＰＵ１４用の省電力処理プログラムを第２省電力処理プログラム格納領域４８に格納する。
【００３３】
応答用情報格納領域４９には、メインＣＰＵ１４が処理を実行する際に必要な情報が格納される。例えば、プリンタ１０のＩＰアドレス、ＭＡＣアドレス、ノード名、ステータス情報等が格納される。メインＣＰＵ１４は、応答用情報格納領域４９に格納されるべき情報に変更があった場合、応答用情報格納領域４９に格納されている情報を修正する。
【００３４】
第２パケット格納領域５０には、メインＣＰＵ１４の非スリープ状態中に、ネットワークＩ／Ｆ３０を介して受信されたパケットが格納される。
【００３５】
図１に示すネットワークＩ／Ｆ３０は、ＬＡＮ４に接続されている。ＭＡＣコントローラ２８は、ネットワークＩ／Ｆ３０によって受信されたパケットをプリンタ１０が処理可能な形式に変換する。ＭＡＣコントローラ２８によって変換されたパケットは、バッファ２２に一時的に格納される。エンジン制御回路３２は、メインＣＰＵ１４からの指示に従って、プリントエンジン３４を制御する。パネル制御回路３６は、メインＣＰＵ１４からの指示に従って、表示パネル３８を制御する。表示パネル３８は、ＬＣＤである。パネル制御回路３６は、表示パネル３８をＯＮ状態とＯＦＦ状態との間で移行させる。即ち、パネル制御回路３６は、表示パネル３８に電圧を印加することによって表示パネル３８をＯＮ状態とし、電圧の印加を停止することによって表示パネル３８をＯＦＦ状態とする。
【００３６】
（プリンタの状態移行）
図５は、プリンタ１０の状態が移行する様子を示す。プリンタ１０は、処理状態７２と待機状態７４とＬスリープ状態７６とＤスリープ状態７８との間で状態が移行する。図６は、プリンタ１０が各状態７２，７４，７６，７８の場合に、メインＣＰＵ１４、サブＣＰＵ２４、２つのＲＡＭ２０，２１、及び、表示パネル３８の状態を表わす表９０を示す。プリンタ１０の電源がＯＮされると、プリンタ１０は、待機状態７４となる。図６に示すように、待機状態７４では、２つのＣＰＵ１４，２４にクロックが供給されている（即ち、２つのＣＰＵ１４，２４は非スリープ状態である）。２つのＲＡＭ２０，２１は通常動作モードであり、表示パネル３８はＯＮ状態である。
【００３７】
プリンタ１０が待機状態７４である場合に、外部装置６からの要求（パケット）に応答する処理以外の通常の処理を実行する場合、プリンタ１０は、処理状態７２に移行する。なお、上記の通常の処理は、印刷指示に応じて実行される印刷処理、ユーザによって表示パネル３８の操作が為された場合に実行される表示処理等を含む。処理状態７２は、待機状態７４と同様、２つのＣＰＵ１４，２４は非スリープ状態であり、２つのＲＡＭ２０，２１は通常動作モードであり、表示パネル３８はＯＮ状態である。処理状態７２と待機状態７４との相違点は、メインＣＰＵ１４が上記の通常の処理を実行しているか否かである。メインＣＰＵ１４が上記の通常の処理を終了すると、プリンタ１０は、待機状態７４に移行する。
【００３８】
メインＣＰＵ１４は、待機状態７４に移行すると、上記した待機状態タイマをスタートする。待機状態７４が所定時間継続すると、メインＣＰＵ１４は、パネル制御回路３６（図１参照）に、表示パネル３８をＯＦＦ状態にするように指示する。この結果、プリンタ１０は、Ｌスリープ状態７６に移行する。Ｌスリープ状態７６では、２つのＣＰＵ１４，２４は非スリープ状態であり、２つのＲＡＭ２０，２１は通常動作モードであり、表示パネル３８はＯＦＦ状態である。これにより、表示パネル３８で消費される電力を低減させることができる。Ｌスリープ状態７６において、メインＣＰＵ１４が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、プリンタ１０は、処理状態７２に移行する。
【００３９】
プリンタ１０は、後述する省電力処理（図７から図１０参照）を実行することによって、Ｌスリープ状態７６からＤスリープ状態７８に移行する。Ｄスリープ状態７８では、メインＣＰＵ１４はスリープ状態（クロック信号が供給されない状態）であり、サブＣＰＵ２４は非スリープ状態であり、第１ＲＡＭ２０は通常動作モードであり、第２ＲＡＭ２１はセルフリフレッシュモード（即ち、通常動作モードよりも消費電力が低いモード）であり、表示パネル３８はＯＦＦ状態である。Ｄスリープ状態７８において、メインＣＰＵ１４が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、プリンタ１０は、Ｌスリープ状態７６を経て処理状態７２に移行する。以下では、プリンタ１０がＤスリープ状態７８からＬスリープ状態７６に移行する期間、即ち、メインＣＰＵ１４がスリープ状態から非スリープ状態に移行する期間を移行期間８０と呼ぶ。
【００４０】
（メインＣＰＵの省電力処理）
次いで、メインＣＰＵ１４が実行する処理の内容について説明する。図７，８は、メインＣＰＵ１４によって実行される省電力処理のフローチャートを示す。図７，８の処理は、プリンタ１０の電源がＯＮされ、メインＣＰＵ１４が待機状態タイマをリセットすると開始される。プリンタ１０の電源がＯＮされた時点では、プリンタ１０は待機状態７４である。メインＣＰＵ１４は、第１ＲＡＭ２０の状態変数格納領域４４（図２参照）に待機状態７４を示す状態変数を格納する。メインＣＰＵ１４は、第２ＲＡＭ２１の第２省電力処理プログラム格納領域４８（図３参照）に格納されているプログラムを使用して以下の処理を実行する。
【００４１】
メインＣＰＵ１４は、状態変数格納領域４４に格納されている状態変数が待機状態７４を示すのか否かを判断する（Ｓ１０）。ここでＹＥＳの場合、Ｓ１２に進み、ＮＯの場合、メインＣＰＵ１４は、Ｓ１０の判断を繰り返す。Ｓ１２では、メインＣＰＵ１４は、待機状態タイマの計測時間が所定時間を経過したのか否かを判断する。なお、待機状態タイマは、プリンタ１０が待機状態７４に移行する毎にリセットされる。Ｓ１２でＮＯの場合、Ｓ１０に戻り、Ｓ１２でＹＥＳの場合、Ｓ１４に進む。Ｓ１４では、メインＣＰＵ１４は、状態変数格納領域４４に格納されている状態変数を、Ｌスリープ状態７６を示す状態変数に変更する。続いて、メインＣＰＵ１４は、パネル制御回路３６に表示パネル３８への電圧の印加を停止するように指示する（Ｓ１６）。これにより、電圧の印加が停止されると、表示パネル３８はＯＦＦ状態になる。
【００４２】
次いで、メインＣＰＵ１４は、状態変数格納領域４４に格納されている状態変数がＬスリープ状態７６を示すのか否かを判断する（Ｓ１８）。状態変数格納領域４４に格納されている状態変数は、メインＣＰＵ１４又はサブＣＰＵ２４が図７，８以外の処理を実行することによって変更される可能性がある。例えば、メインＣＰＵ１４は、後述の図１０のＳ７４においてクロック供給が再開されると、上記の通常の処理（印刷処理、表示処理等）を実行する。この際に、メインＣＰＵ１４は、状態変数格納領域４４に格納されている状態変数を処理状態７２に変更する。この場合、Ｓ１８でＹＥＳと判断され、メインＣＰＵ１４は、パネル制御回路３６に表示パネル３８に電圧を印加するように指示する（Ｓ２０）。これにより、表示パネル３８は、ＯＮ状態になる。後で詳しく説明するが、メインＣＰＵ１４がスリープ状態である間、又は、メインＣＰＵ１４がスリープ状態から非スリープ状態に移行する間（即ち移行期間８０）に、第１ＲＡＭ２０の第１パケット格納領域４５（図２参照）にパケットが格納されることがある。第１パケット格納領域４５にパケットが格納されている場合には、メインＣＰＵ１４は、第２ＲＡＭ２１のネットワーク処理プログラム格納領域４７（図３参照）に格納されているプログラムに従って、パケットを処理する（Ｓ２１）。メインＣＰＵ１４は、Ｓ２１を終えると、第１パケット格納領域４５に格納されているパケットを削除して、Ｓ１０に戻る。
【００４３】
一方において、Ｓ１８でＹＥＳの場合、メインＣＰＵ１４は、後述する状態移行判断処理を実行することによって、Ｄスリープ状態７８に移行可能であるか否かを判断する（Ｓ２２）。Ｓ２２の処理が終了すると、メインＣＰＵ１４は、Ｓ２２の処理でＤスリープ状態７８に移行可能と判断されたか否かを判断する（Ｓ２４）。ここでＹＥＳの場合、図８のＳ２８に進み、ＮＯの場合、Ｓ２６に進む。Ｓ２６では、メインＣＰＵ１４は、ＷＡＩＴ命令を実行する。ＷＡＩＴ命令が実行されると、メインＣＰＵ１４は、割り込み要求を受けるまで待機する実行停止状態となる。これにより、メインＣＰＵ１４の消費電力を低減させることができる。メインＣＰＵ１４は、Ｓ２６において割り込み要求を受けると、Ｓ１８に戻る。
【００４４】
Ｓ２８では、メインＣＰＵ１４は、サブＣＰＵ２４がメインＣＰＵ１４に代理して処理を実行するために必要な情報を、第１ＲＡＭ２０の代理応答用情報格納領域４３（図２参照）に格納する。即ち、メインＣＰＵ１４は、第２ＲＡＭ２１の応答用情報格納領域４９（図３参照）に格納されている情報を、代理応答用情報格納領域４３に格納する。次いで、メインＣＰＵ１４は、サブＣＰＵ２４以外からの割り込み要求をマスク（禁止）する（Ｓ３０）。メインＣＰＵ１４は、状態変数格納領域４４に格納されているＬスリープ状態７６を示す状態変数を、Ｄスリープ状態７８を示す状態変数に変更する（Ｓ３２）。続いて、メインＣＰＵ１４は、サブＣＰＵ２４に、今後の処理を実行するように、割り込み要求を発行する（Ｓ３４）。メインＣＰＵ１４は、ＷＡＩＴ命令を実行する（Ｓ３６）。ＷＡＩＴ命令が実行されると、メインＣＰＵ１４は、割り込み要求を受けるまで待機する実行停止状態となる。メインＣＰＵ１４は、Ｓ３６において割り込み要求を受ける（後述の図１０のＳ７０参照）と、Ｓ３８に進む。Ｓ３８では、メインＣＰＵ１４は、Ｓ３０で実行したサブＣＰＵ２４に対する割り込み要求のマスクを解除して、図７のＳ１８に戻る。即ち、メインＣＰＵ１４は、割り込み要求を受けると、図７のＳ１８の処理を実行する。
【００４５】
（メインＣＰＵの状態移行判断処理）
続いて、メインＣＰＵ１４が図７のＳ２２で実行する状態移行判断処理の内容を説明する。図９は、メインＣＰＵ１４によって実行される状態移行判断処理のフローチャートを示す。メインＣＰＵ１４は、外部装置６等にパケットを送信しているか否かを判断する（Ｓ４０）。例えば、メインＣＰＵ１４が外部装置６等からのプリンタ１０のステータスの要求に対するレスポンスを返信している途中の場合、Ｓ４０でＹＥＳと判断される。Ｓ４０でＹＥＳの場合、Ｓ４８に進む。一方において、Ｓ４０でＮＯの場合、メインＣＰＵ１４は、メインＣＰＵ１４が処理すべきパケットが第２ＲＡＭ２１（図３参照）の第２パケット格納領域５０に格納されているか否かを判断する（Ｓ４２）。例えば、メインＣＰＵ１４が外部装置６等からプリンタ１０のステータスの要求を受信しており、未だ処理していない場合、Ｓ４２でＹＥＳと判断される。Ｓ４２でＹＥＳの場合にＳ４８に進み、Ｓ４２でＮＯの場合にＳ４４に進む。Ｓ４４では、メインＣＰＵ１４は、プリンタ１０に接続中の外部装置６等があるか否かを判断する。例えば、プリンタ１０がＷｅｂサーバ機能を有しており、外部装置６がプリンタ１０のＷｅｂサーバにＴＣＰ接続中である場合、Ｓ４４でＹＥＳと判断される。Ｓ４４でＹＥＳの場合にＳ４８に進み、ＮＯの場合にＳ４６に進む。
【００４６】
Ｓ４８では、メインＣＰＵ１４は、Ｄスリープ状態７８に移行不可であると判断する。この場合には、メインＣＰＵ１４は、上記した図７のＳ２４でＮＯと判断する。一方、Ｓ４６では、メインＣＰＵ１４は、Ｄスリープ状態７８に移行可能であると判断する。この場合には、メインＣＰＵ１４は、上記した図７のＳ２４でＹＥＳと判断する。
【００４７】
（サブＣＰＵの省電力処理）
続いて、サブＣＰＵ２４が実行する省電力処理の内容を説明する。図１０は、サブＣＰＵ２４によって実行される省電力処理のフローチャートを示す。図１０の処理は、プリンタ１０の電源がＯＮされたことをトリガとして開始される。サブＣＰＵ２４は、第１ＲＡＭ２０の第１省電力処理プログラム格納領域４１（図２参照）に格納されているプログラムを使用して、以下の処理を実行する。最初に、サブＣＰＵ２４は、ＷＡＩＴ命令を実行する（Ｓ５０）。サブＣＰＵ２４は、割り込み要求を受けるまで待機する（即ち実行停止状態に移行する）。上述したように、メインＣＰＵ１４は、図８のＳ３４において、サブＣＰＵ２４に割り込み要求を発行する。これにより、サブＣＰＵ２４の実行停止状態が解除され、Ｓ５２に進む。
【００４８】
Ｓ５２では、サブＣＰＵ２４は、第１ＲＡＭ２０の状態変数格納領域４４（図２参照）に格納されている状態変数がＤスリープ状態７８を示すか否かを判断する。Ｓ５２でＮＯの場合、Ｓ５０に進む。即ち、サブＣＰＵ２４は、状態変数がＤスリープ状態７８以外を示す場合、実行停止状態で待機する。
【００４９】
Ｓ５２でＹＥＳの場合、サブＣＰＵ２４は、メイン用クロック回路１６（図１参照）にクロック供給の停止を指示する（Ｓ５４）。この結果、メインＣＰＵ１４は、非スリープ状態からスリープ状態に移行する。続いて、サブＣＰＵ２４は、第２ＲＡＭ２１を通常動作モードからセルフリフレッシュモードに移行させる（Ｓ５６）。第２ＲＡＭ２１がセルフリフレッシュモードである間は、第２ＲＡＭ２１の第２パケット格納領域５０にパケットを格納することができない。第２ＲＡＭ２１がセルフリフレッシュモードである場合、通常動作モードと比べて、第２ＲＡＭ２１の消費電力は低い。次いで、サブＣＰＵ２４は、ネットワークＩ／Ｆ３０を介してパケットを受信することを監視する（Ｓ５８）。より詳細には、サブＣＰＵ２４は、バッファ２２にパケットが格納されることを監視する。Ｓ５８でＹＥＳの場合、サブＣＰＵ２４は、受信したパケットが第１種及び第２種のパケットのいずれにも該当しない種類のパケット、即ち、第３種のパケットであるか否かを判断する（Ｓ６０）。具体的には、サブＣＰＵ２４は、受信したパケットに対応するプロトコル（プリンタ１０に当該パケットを送信するためのプロトコル）が、パケット判別テーブル５２（図４参照）のプロトコル５４に記録されているか否かを確認する。受信したパケットに対応するプロトコルが、プロトコル５４に記録されている場合に、Ｓ６０においてＮＯと判断される。一方、受信したパケットに対応するプロトコルが、プロトコル５４に記録されていない場合に、Ｓ６０においてＹＥＳと判断される。
【００５０】
Ｓ６０でＹＥＳの場合、即ち、受信したパケットが第３種のパケットである場合、受信したパケットを第１ＲＡＭ２０の第１パケット格納領域４５（図２参照）に格納することなく、バッファ２２から削除して（Ｓ６２）、Ｓ５８に戻る。一方において、Ｓ６０でＮＯの場合、サブＣＰＵ２４は、受信したパケットが第１種のパケットであるか否かを判断する（Ｓ６４）。具体的には、サブＣＰＵ２４は、受信したパケットに対応するプロトコルが、パケット判別テーブル５２（図４参照）のプロトコル５４の「第１種」に対応付けて記録されているか否かを確認する。受信したパケットに対応するプロトコルが、「第１種」に対応付けて記録されている場合に、Ｓ６４においてＹＥＳと判断される。一方、受信したパケットに対応するプロトコルが、「第２種」に対応付けて記録されている場合に、Ｓ６４においてＮＯと判断される。
【００５１】
Ｓ６４でＮＯの場合、第２種のパケットが受信されたことになる。この場合、サブＣＰＵ２４は、代理応答処理プログラム格納領域４４に格納されているプログラムを使用して、メインＣＰＵ１４に代理してパケットに対する応答処理を実行する（Ｓ６６）。Ｓ６６の代理応答処理では、サブＣＰＵ２４は、Ｓ５８で受信された第２種のパケットを、第１ＲＡＭ２０の第１パケット格納領域４５（図２参照）に格納する。次いで、サブＣＰＵ２４は、第１パケット格納領域４５に格納された第２種のパケットに対する応答処理を実行する。サブＣＰＵ２４は、応答処理を実行し終えると、第２種のパケットを第１パケット格納領域４５から削除する。これにより、代理応答処理が終了し、Ｓ５８に戻る。
【００５２】
一方において、Ｓ６４でＹＥＳの場合、第１種のパケットが受信されたこととなる。第１種のパケットは、メインＣＰＵ１４によって処理されるべきパケットである。この場合、サブＣＰＵ２４は、受信した第１種のパケットを第１ＲＡＭ２０の第１パケット格納領域４５（図２参照）に格納する（Ｓ６８）。次いで、サブＣＰＵ２４は、移行期間中処理を開始する（Ｓ６９）。サブＣＰＵ２４は、移行期間中処理（図１１参照）と並行して、Ｓ７０以降の処理を実行する。即ち、サブＣＰＵ２４は、第２ＲＡＭ２１をセルフリフレッシュモードから通常動作モードに移行させる（Ｓ７０）。次いで、サブＣＰＵ２４は、第１ＲＡＭ２０の状態変数格納領域４４（図２参照）のＤスリープ状態７８を示す状態変数を、Ｌスリープ状態７６を示す状態変数に変更する（Ｓ７２）。続いて、サブＣＰＵ２４は、メイン用クロック回路１６（図１参照）に、メインＣＰＵ１４にクロック供給を開始するよう指示する（Ｓ７４）。この結果、メインＣＰＵ１４にクロックが供給され、スリープ状態から非スリープ状態に移行する。メインＣＰＵ１４をスリープ状態から非スリープ状態に移行させるためには、ある程度の時間がかかる（即ち図５の移行期間８０で示される状態となる）。なお、上記の第２ＲＡＭ２１をセルフリフレッシュモードから通常動作モードに移行させるためにも時間がかかる。本実施例では、メインＣＰＵ１４をスリープ状態から非スリープ状態に移行させるための時間（移行期間８０の長さ）と、上記の第２ＲＡＭ２１をセルフリフレッシュモードから通常動作モードに移行させるための時間と、がほぼ同じである。従って、メインＣＰＵ１４の移行期間８０中は、第２ＲＡＭ２１に情報（例えば後述の図１１のＳ８２で受信されるパケット）を格納することができない。サブＣＰＵ２４は、メインＣＰＵ１４に割り込み要求を発行する（Ｓ７６）。
【００５３】
（サブＣＰＵの移行期間中処理）
図１１は、図１０のＳ６９で開始される移行期間中処理のフローチャートを示す。なお、移行期間８０中では、第１ＲＡＭ２０の第１パケット格納領域４５に既に第１種のパケット、すなわち、Ｓ６９の移行期間処理の開始のトリガとなったパケットが格納されている（図１０のＳ６８参照）。サブＣＰＵ２４は、メインＣＰＵ１４がスリープ状態から非スリープ状態への移行を完了し、かつ、第２ＲＡＭ２１がセルフリフレッシュモードから通常動作モードへの移行を完了することを監視する（Ｓ８０）。サブＣＰＵ２４は、メインＣＰＵ１４において処理が開始されたことを確認することによって、メインＣＰＵ１４の非スリープ状態への移行が完了したと判断する。本実施例では、メインＣＰＵ１４がスリープ状態から非スリープ状態に移行するための時間と、第２ＲＡＭ２１がセルフリフレッシュモードから通常動作モードに移行するための時間と、がほぼ同じである。このため、サブＣＰＵ２４は、メインＣＰＵ１４の非スリープ状態への移行が完了したことを確認することによって、第２ＲＡＭ２１の通常動作モードへの移行も完了したと判断する。例えば、メインＣＰＵ１４は、自身にクロックが供給されて処理を実行可能な状態になると、サブＣＰＵ２４に特定の指示を送信する。サブＣＰＵ２４は、上記の特定の指示を受信すると、Ｓ８０でＹＥＳと判断する。Ｓ８０でＹＥＳの場合、サブＣＰＵ２４は、図１０のＳ７６に戻る。一方において、Ｓ８０でＮＯの場合、Ｓ８２に進む。Ｓ８２では、サブＣＰＵ２４は、移行期間中８０に新たにパケットを受信することを監視する。即ち、サブＣＰＵ２４は、バッファ２２にパケットが格納されることを監視する。Ｓ８２でＹＥＳの場合、Ｓ８４に進む。
【００５４】
Ｓ８４では、サブＣＰＵ２４は、バッファ２２に格納されている新たな受信パケットのサイズと、第１ＲＡＭ２０の第１パケット格納領域４５（図２参照）の空き容量と、を比較する。第１パケット格納領域４５の空き容量が、受信パケットのサイズより大きい場合（Ｓ８４でＮＯ）、サブＣＰＵ２４は、受信パケットを第１パケット格納領域４５に格納して（Ｓ９４）、Ｓ５０に戻る。このとき、サブＣＰＵ２４は、受信パケットを第１パケット格納領域４５に格納した時刻を、「受信時刻」として、受信パケットに対応付けて格納する。
【００５５】
一方において、第１パケット格納領域４５の空き容量が受信パケットのサイズより小さい場合（Ｓ８４でＹＥＳ）、サブＣＰＵ２４は、第１パケット格納領域４５に、第３種のデータが格納されているか否かを判断する（Ｓ８６）。具体的には、サブＣＰＵ２４は、パケット判別テーブル４６（図４参照）のプロトコル５４に記録されていないパケットを、第１パケット格納領域４５から検索する。検索でヒットしたパケットが存在する場合、サブＣＰＵ２４は、Ｓ８６でＹＥＳと判断し、Ｓ８８に進む。１つの第３種のパケットのみが検索でヒットした場合、Ｓ８８では、サブＣＰＵ２４は、そのパケットを第１パケット格納領域４５から削除する。一方、複数の第３種のパケットが検索でヒットした場合、Ｓ８８では、サブＣＰＵ２４は、複数の第３種のパケットのうち、受信時刻が最も古い第３種のパケットを第１パケット格納領域４５から削除する。Ｓ８８を終えると、Ｓ８４に戻る。これにより、サブＣＰＵ２４は、第３種のパケットが削除されたことによって増えた空き容量と、受信パケットのサイズと、を比較する処理を再び実行する。ここでＮＯと判断されると受信パケットが第１パケット格納領域４５に格納され（Ｓ９４）、ここでＹＥＳと判断されるとＳ８６の処理が再び実行される。
【００５６】
Ｓ８６でＮＯの場合、サブＣＰＵ２４は、第１パケット格納領域４５に第２種のデータが格納されているか否かを判断する（Ｓ９０）。具体的には、サブＣＰＵ２４は、パケット判別テーブル５２の「第２種」に対応するプロトコル５４に記録されているパケットを、第１パケット格納領域４５から検索する。検索でヒットしたパケットが存在する場合、サブＣＰＵ２４は、Ｓ９０でＹＥＳと判断し、Ｓ９２に進む。１つの第２種のパケットのみが検索でヒットした場合、Ｓ９２では、サブＣＰＵ２４は、そのパケットを第１パケット格納領域４５から削除する。一方、複数の第２種のパケットが検索でヒットした場合、Ｓ９２では、サブＣＰＵ２４は、複数の第２種のパケットのうち、受信時刻が最も古い第２種のパケットを第１パケット格納領域４５から削除する。Ｓ９２を終えると、Ｓ８４に戻る。これにより、サブＣＰＵ２４は、第２種のパケットが削除されたことによって増えた空き容量と、受信パケットのサイズと、を比較する処理を再び実行する。ここでＮＯと判断されると受信パケットが第１パケット格納領域４５に格納され（Ｓ９４）、ここでＹＥＳと判断されるとＳ８６の処理が再び実行される。
【００５７】
Ｓ９０でＮＯの場合、第１パケット格納領域４５には、第１種のデータのみが格納されていることとなる。この場合、サブＣＰＵ２４は、受信パケットを第１パケット格納領域４５に格納することなく、バッファ２２から削除して（Ｓ９６）、Ｓ８２に戻る。
【００５８】
上述したように、メインＣＰＵ１４は、非スリープ状態への移行が完了すると、図７のＳ２１の処理を実行する。図７のＳ２１では、メインＣＰＵ１４は、第１ＲＡＭ２０の第１パケット格納領域４５に格納されている各パケットの処理を実行する。即ち、メインＣＰＵ１４は、図１０のＳ６８で格納されたパケットと、図１１のＳ９４で格納されたパケットと、を処理する。移行期間８０が終了し、メインＣＰＵ１４の非スリープ状態への移行が完了すると、メインＣＰＵ１４は、第２ＲＡＭ２１のネットワーク処理プログラム格納領域４７に格納されているプログラムに従って、第１パケット格納領域４５に格納されているパケットを処理する。
【００５９】
本実施例のプリンタ１０について詳しく説明した。プリンタ１０のメインＣＰＵ１４は、プリンタ１０をＤスリープ状態７８に移行可能であると判断すると（図７のＳ２４でＹＥＳ）、第１ＲＡＭ２０に格納されている状態変数を「Ｄスリープ状態」に変更する（図８のＳ３２）。サブＣＰＵ２４は、状態変数が「Ｄスリープ状態」を示す場合（図１０のＳ５２でＹＥＳ）、メインＣＰＵ１４をスリープ状態に移行させるとともに、第２ＲＡＭ２１をセルフリフレッシュモードに移行させる。第１ＲＡＭ２０より大容量である第２ＲＡＭ２１をセルフリフレッシュモードに移行させることにより、プリンタ１０の消費電力を低減させることができる。
メインＣＰＵ１４のスリープ状態中及び移行期間８０中は、容量の小さい第１ＲＡＭ２０しか利用することができないが、本実施例では、上記の図１０及び図１１の処理を実行することによって、メインＣＰＵ１４のスリープ状態中及び移行期間８０中に受信する受信パケットに対する最適な対処を行なうことができる。
【００６０】
即ち、プリンタ１０のＤスリープ状態７８中であって、メインＣＰＵ１４のスリープ状態中の場合、サブＣＰＵ２４は、第２種のパケットを受信すると、メインＣＰＵ１４に代理して代理応答処理を実行して第１パケット格納領域４５から削除するとともに、第３種のパケットを受信すると直ちに破棄する。これにより、第１ＲＡＭ２０の記憶容量が圧迫されることを防止することができる。
一方、サブＣＰＵ２４は、メインＣＰＵ１４が処理すべき第１種のパケットを受信すると、メインＣＰＵ１４をスリープ状態から非スリープ状態に移行させる。サブＣＰＵ２４は、メインＣＰＵ１４の移行期間８０中では、新たに受信したパケットを、パケットの種類に関わらず、第１ＲＡＭ２０の第１パケット格納領域４５に格納する。第１パケット格納領域４５の空き容量が不足していると、サブＣＰＵ２４は、まず、第１パケット格納領域４５に第３種のパケットが格納されているか否かを判断し、格納されている第３種のパケットを削除する。第１パケット格納領域４５の空き容量が新たに受信したパケットのサイズよりも大きくなると、サブＣＰＵ２４は、新たに受信したパケットを第１パケット格納領域４５に格納する。この構成では、重要度が最も低い第３種のパケットが第１パケット格納領域４５に格納されているにも関わらず、第３種のパケットよりも重要度が高い第１種、第２種のパケットが削除されることを防止することができる。
【００６１】
また、第３種のパケットが格納されていない場合、又は、第３種のパケットを削除しても第１パケット格納領域４５の空き容量が充分でない場合に、サブＣＰＵ２４は、第２種のパケットが格納されているか否かを判断し、格納されている第２種のパケットを削除する。これにより、第１種のパケットよりも重要度が低い第２種のパケットが第１パケット格納領域４５に格納されているにも関わらず、第２種のパケットよりも重要度が高い第１種のパケットが削除されることを防止することができる。さらに、第２種、第３種のパケットが格納されていない場合、又は、第２種、第３種のパケットを削除しても第１パケット格納領域４５の空き容量が充分でない場合に、サブＣＰＵ２４は、新たに受信したパケットを第１パケット格納領域４５に格納することなく破棄する。これにより、既に第１パケット格納領域４５に格納されている重要度の高い第１種のパケットが削除されることを防止することができる。
【００６２】
また、サブＣＰＵ２４は、複数の第２種のパケット（あるいは複数の第３種のパケット）が第１ＲＡＭ２０に格納されている場合に、受信時刻が最も古いパケットから削除する。例えば、外部装置６のユーザが誤った操作を行って第２種のパケットがプリンタ１０に送信され、その後にユーザが正しい操作を行って、新たな第２種のパケットがプリンタ１０に送信される可能性がある。このような事態が発生した場合に、正しい操作に応じて送信される第２種のパケットが削除されない。
【００６３】
サブＣＰＵ２４は、メインＣＰＵ１４の移行期間８０中に、サブＣＰＵ２４が代理応答処理を実行する必要のある第２種のパケットを受信した場合でも、代理応答処理を実行することなく、第１ＲＡＭ２０に格納する。即ち、サブＣＰＵ２４は、代理応答処理を実行せずに、メインＣＰＵ１４を非スリープ状態に移行させるための移行処理を実行することができる。この結果、サブＣＰＵ２４が代理応答処理と移行処理とを並行して実行する構成と比べると、サブＣＰＵ２４は、移行処理を高速で実行することができる。これにより、移行期間８０を短縮することができ、メインＣＰＵ１４を非スリープ状態に迅速に移行させることができる。
また、サブＣＰＵ２４は、移行期間８０中に受信するパケットの種別を判断する判断処理を実行することなく、第１パケット格納領域４５に格納する。即ち、サブＣＰＵ２４は、判断処理を実行せずに、移行処理を実行することができる。この結果、サブＣＰＵ２４が判断処理と移行処理とを並行して実行する構成と比べると、サブＣＰＵ２４は、移行処理を高速で実行することができる。
【００６４】
なお、以上の説明から明らかなように、本実施例のプリンタ１０が、本発明における通信装置に対応する。メインＣＰＵ１４，サブＣＰＵ２４が、それぞれ、第１処理部，第２処理部に対応し、第１ＲＡＭ２０が、メモリに対応する。
【００６５】
また、本実施例における第１種、第２種、第３種のパケット（図４参照）が、それぞれ本発明における第１種、第２種、第３種のデータに対応している。本実施例では、第１種のパケットは「ＴＣＰ」に対応するパケットであり、第２種のパケットは「ＡＲＰ」、「Ｎｅｔ  ＢＩＯＳ」、「ＩＣＭＰ」に対応するパケットであり、第３種のパケットは上記したプロトコルのいずれにも対応しないプロトコルに対応するパケットと説明されている。しかしながら、第１種のパケットは、「ＴＣＰ」以外のプロトコルに対応するパケットであってもよく、第２種、第３種のパケットは、本実施例以外のプロトコルに対応するパケットであってもよい。本実施例における図１０のＳ６９においてサブＣＰＵ２４が移行期間中処理を開始するトリガとなった第１種のパケット、即ち、Ｓ５８でプリンタ１０に受信され、Ｓ６４で第１種のパケットと判断された第１種のパケットが、本発明の特定のデータに対応する。
【００６６】
（第２実施例）
上記したプリンタ１０では、サブＣＰＵ２４は、移行期間中処理（図１１参照）において、パケットを受信した段階では、パケットの種類を判断していない。しかしながら、サブＣＰＵ２４は、移行期間中処理において、受信したパケットが第３種のパケットであるか否かを判断するようにしてもよい。図１２は、第２実施例のサブＣＰＵ２４が実行する移行期間中処理のフローチャートを示す。図１２では、図１１と同様の処理には、図１１と同一の符号を付している。以下では、上記した実施例と重複する説明は省略する。
【００６７】
サブＣＰＵ２４は、Ｓ８２でＹＥＳの場合、受信したパケットが第３種のパケットであるか否かを判断する（Ｓ１０２）。サブＣＰＵ２４は、受信したパケットのプロトコルが、パケット判別テーブル５２のプロトコル５４に存在するか否かを判断する。Ｓ１０２でＮＯの場合、Ｓ８４以下の処理を実行する。一方において、Ｓ１０２でＹＥＳの場合、サブＣＰＵ２４は、受信した第３種のパケットを、第１ＲＡＭ２０の第１パケット格納領域４５に格納することなく、バッファ２２から削除する（Ｓ１０４）。
この構成によっても、上記した実施例と同様の効果を奏することができる。
また、第２実施例では、第１種及び第２種のパケットより重要度の低い第３種のパケットが移行期間８０中に第１ＲＡＭ２０に格納されないために、重要度の低い第３種のパケットによって、第１ＲＡＭ２０の記憶容量が圧迫されることを防止することができる。
【００６８】
（変形例）
（１）本実施例では、サブＣＰＵ２４は、移行期間中処理（図１１参照）において、ＲＡＭ２０の第１パケット格納領域４５の空き容量が不足している場合に、第１パケット格納領域４５に格納されているパケットの種別を判断している（図１１のＳ８６、Ｓ９０）。しかしながら、サブＣＰＵ２４は、パケットを第１パケット格納領域４５に格納する際にパケットの種別を判断してもよい。このとき、サブＣＰＵ２４は、パケットとそのパケットの種類とを対応付けて第１パケット格納領域４５に格納してもよい。あるいは、ＲＡＭ２０に、パケットの種類ごとに格納する領域を設けていてもよい。この場合、サブＣＰＵ２４は、パケットの種類に対応する格納領域にパケットを格納してもよい。
【００６９】
（２）本実施例では、サブＣＰＵ２４は、第１パケット格納領域４５にパケットを格納する際、「受信時刻」を対応付けて格納する。しかしながら、サブＣＰＵ２４は、パケットと「受信時刻」とを対応付けて第１パケット格納領域４５に格納しなくてもよい。例えば、第１パケット格納領域４５に格納するパケットごとに、順に、「１」、「２」・・・等の受信した順序が分かる情報をパケットに対応付けて第１パケット格納領域４５に格納してもよい。
【００７０】
（３）本実施例では、サブＣＰＵ２４が第１パケット格納領域４５に格納されているパケットを削除する場合（図１１のＳ８８、Ｓ９０）、最も受信時刻の古いパケットを削除する。しかしながら、例えば、第２種のパケットのうち、最も重要度の低いパケットを削除してもよい。この場合、予め、第１ＲＡＭ２０にプロトコル毎に重要度が定義されたテーブルを格納しておいてもよい。サブＣＰＵ２４は、テーブルに従って、重要度の低いパケットから削除してもよい。あるいは、サブＣＰＵ２４は、格納されている全ての第３種のパケットを削除するようにしてもよい。あるいは、サブＣＰＵ２４は、複数の第２種のパケットのうち、受信時刻の最も新しいパケットを削除してもよいし、ランダムに選択し、選択したパケットを削除してもよいし、サイズの最も大きなパケットを削除してもよい。
【００７１】
（４）本実施例では、プリンタ１０は、第１ＲＡＭ２０と第２ＲＡＭ２１の２つのＲＡＭを備えている。しかしながら、ＲＡＭは１つであってもよい。この場合、ＲＡＭは、本実施例の第１ＲＡＭ２０と第２ＲＡＭ２１の両者の機能を備えており、セルフリフレッシュモードに移行しないものであってもよい。
【００７２】
（５）本実施例では、サブＣＰＵ２４は、メインＣＰＵ１４からの特定の指示を受信すると、メインＣＰＵ１４がスリープ状態から非スリープ状態への移行を完了し、かつ、第２ＲＡＭ２１がセルフリフレッシュモードから通常動作モードへの移行を完了したと判断する（図１１，１２のＳ８０でＹＥＳ）。しかしながら、サブＣＰＵ２４は、メインＣＰＵ１４から送信される特定の指示と、第２ＲＡＭ２１から送信される特定の指示と、の両方を受信すると、Ｓ８０でＹＥＳと判断してもよい。あるいは、サブＣＰＵ２４は、第２ＲＡＭ２１を通常動作モードに移行させ（図１０のＳ７０）、メインＣＰＵ１４のクロック供給を開始して（図１０のＳ７４）からの時間を計測し、計測時間が所定の時間を経過した場合に、Ｓ８０でＹＥＳと判断してもよい。
【００７３】
（６）本実施例では、プリンタ１０について説明したが、本明細書に開示された技術は、プリンタ１０以外の通信装置、例えば、サーバ、スキャナ、多機能機等に利用することができる。
【００７４】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００７５】
１０：プリンタ、１４：メインＣＰＵ、２０：ＲＡＭ、２４：サブＣＰＵ、２８：ＭＡＣコントローラ、３２：エンジン制御回路、３４：プリントエンジン、３６：パネル制御回路、３８：表示パネル、４６：パケット判別テーブル
【図１】
2010280093.tif 000003
【図２】
2010280093.tif 000004
【図３】
2010280093.tif 000005
【図４】
2010280093.tif 000006
【図５】
2010280093.tif 000007
【図６】
2010280093.tif 000008
【図７】
2010280093.tif 000009
【図８】
2010280093.tif 000010
【図９】
2010280093.tif 000011
【図１０】
2010280093.tif 000012
【図１１】
2010280093.tif 000013
【図１２】
2010280093.tif 000014