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