説明

処理装置

【課題】 メモリの省電力を可能にする技術を提供すること。
【解決手段】 プリンタ10は、メインCPU14とサブCPU24と第1RAM20と第2RAM22を備える。サブCPU24は、メインCPU14がスリープ状態である際に、第1プログラムを使用して特定の処理を実行すべき場合には、メインCPU24がスリープ状態で維持されており、かつ、第2RAM22が低消費電力モードで維持されている状態で、第1RAM20に格納されている第1プログラムを使用して、特定の処理を実行する。また、サブCPU24は、第2プログラムを使用して特定の処理を実行すべき場合には、メインCPU14がスリープ状態で維持されている状態で、第2RAM22を低消費電力モードから通常動作モードに変更し、第2RAM22に格納されている第2プログラムを使用して、特定の処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリに格納されるプログラムを使用して、特定の処理を実行する処理装置に関する。特に、処理装置の消費電力を低減させる技術に関する。
【背景技術】
【0002】
特許文献1から3には、処理装置が所定時間継続して処理を実行しない場合に、非スリープ状態の制御部を、非スリープ状態より消費電力の少ないスリープ状態に移行させる技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−5029号公報
【特許文献2】特開平9−160882号公報
【特許文献3】特開2001−257688号公報
【特許文献4】特開2005−41127号公報
【特許文献5】特開2003−108273号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
消費電力がより少ない処理装置が求められている。従来では、メモリの消費電力について、充分に考慮されていない。本明細書では、メモリの省電力化を可能にする技術を提供する。
【課題を解決するための手段】
【0005】
本明細書によって開示される技術は、処理装置に関する。この処理装置は、第1制御部と第2制御部と第1メモリと第2メモリを備える。第1制御部は、スリープ状態と非スリープ状態との間で状態が移行し、非スリープ状態である場合に、特定の処理を実行する。なお、第1制御部がスリープ状態である場合には、第1制御部が非スリープ状態である場合と比較して、第1制御部の消費電力が低い。第2制御部は、第1制御部がスリープ状態である場合に、第1制御部に代理して特定の処理を実行する。第1メモリは、第1プログラムを格納する。第2メモリは、第2プログラムを格納する。第2メモリは、第1制御部が非スリープ状態である場合に通常動作モードに設定され、第1制御部がスリープ状態である場合に低消費電力モードに設定される。
【0006】
第2制御部は、第1制御部がスリープ状態である場合において、第1プログラムを使用して特定の処理を実行すべき場合には、第1制御部がスリープ状態で維持されており、かつ、第2メモリが低消費電力モードで維持されている状態で、第1メモリに格納されている第1プログラムを使用して、第1制御部に代理して特定の処理を実行する。一方において、第2制御部は、第1制御部がスリープ状態である場合において、第2プログラムを使用して特定の処理を実行すべき場合には、第1制御部がスリープ状態で維持されている状態で、第2メモリを低消費電力モードから通常動作モードに変更し、第2メモリに格納されている第2プログラムを使用して、第1制御部に代理して特定の処理を実行する。
【0007】
なお、上記した特定の処理とは、処理装置の種類によって変更し得る。例えば、処理装置がネットワークを介して外部と通信可能である場合、特定の処理は、ネットワークを介して受信したデータ(パケットともいう)に対する応答処理を含んでいてもよい。この場合、第1プログラムは、第1プロトコルに対応する応答処理プログラムを含んでいてもよく、第2プログラムは、第2プロトコルに対応する応答処理プログラムを含んでいてもよい。
【0008】
上記した処理装置は、第1メモリと第2メモリとを備えている。第1制御部がスリープ状態である場合には、第2メモリが低消費電力モードに設定される。そして、第2メモリに格納されている第2プログラムを使用して特定の処理が実行されるべき場合には、第2メモリが通常動作モードに変更され、第2制御部が第2プログラムを使用して特定の処理が実行される。一方において、第1メモリに格納されている第1プログラムを使用して特定の処理が実行されるべき場合には、第2メモリが低消費電力モードで維持されている状態で、第2制御部が第1メモリに格納されている第1プログラムを使用して、第1制御部に代理して特定の処理を実行する。このため、第1メモリに格納される第1プログラムと第2メモリに格納される第2プログラムとを共通のメモリに格納する所定の構成と比較して、メモリの省電力化を図ることが可能となる。即ち、上記の所定の構成の場合には、第1プログラムを使用して特定の処理を実行すべき状況であっても、第2プログラムを使用して特定の処理を実行すべき状況であっても、共通のメモリが使用されるために、共通のメモリを低消費電力モードに設定することは困難である。しかしながら、第1メモリと第2メモリとを利用すれば、一方のメモリ(第2メモリ)を低消費電力モードに設定することができ、この結果、処理装置のメモリの省電力化を図ることが可能となる。
【0009】
上記した処理装置では、第2メモリの総容量は、第1メモリの総容量よりも大きくてもよい。
この構成によれば、総容量の大きい第2メモリを低消費電力モードに設定することができるため、総容量の小さい第1メモリを低消費電力モードに設定する場合と比較して、より省電力化を図ることができる。
【0010】
上記した処理装置では、第2制御部は、第2プログラムを使用して特定の処理を実行すべき場合には、以下の2つのいずれかを採用してもよい。(1)即ち、第2制御部は、第2メモリに格納されている第2プログラムを第1メモリに格納することなく、第2メモリに格納されている第2プログラムを使用して特定の処理を実行してもよい。この場合、第2制御部が特定の処理を終了すると、第2メモリを低消費電力モードに変更してもよい。(2)一方において、第2制御部は、第2メモリに格納されている第2プログラムを第1メモリに格納し、第1メモリに格納された第2プログラムを使用して特定の処理を実行し、第2メモリを低消費電力モードに変更してもよい。
上記の(2)の場合、第2制御部が第2メモリを低消費電力モードに変更する処理(以下、「モード変更処理」ともいう)は、第2制御部が第1メモリに格納された第2プログラムを使用して実行される特定の処理よりも先に実行されてもよいし、後に実行されてもよい。あるいは、上記した2つの処理が並列して実行されていてもよい。即ち、モード変更処理は、第2メモリに格納されている第2プログラムを第1メモリに格納する処理が終了した後に、実行されればよい。例えば、モード変更処理は、第2メモリに格納されている第2プログラムを第1メモリに格納する処理が終了した直後に、実行されてもよい。この構成によると、第2メモリを迅速に低消費電力モードに変更することができ、省電力を図ることができる。
【0011】
上記した処理装置では、第2メモリは、第1メモリに格納されて使用されることが予め指定されている第1種の第2プログラムと、第2メモリに格納されている状態で使用されることが予め指定されている第2種の第2プログラムとを格納していてもよい。この場合、第2制御部は、第1種の第2プログラムを使用して特定の処理を実行すべき場合には、第2制御部は、第2メモリに格納されている第1種の第2プログラムを第1メモリに格納し、第1メモリに格納された第1種の第2プログラムを使用して特定の処理を実行し、第2メモリを低消費電力モードに変更してもよい。また、第2制御部は、第2種の第2プログラムを使用して特定の処理を実行すべき場合には、第2メモリに格納されている第2種の第2プログラムを第1メモリに格納することなく、第2メモリに格納されている第2種の第2プログラムを使用して特定の処理を実行してもよい。
第2制御部は、第1種の第2プログラムを使用する場合、当該第2プログラムを第1メモリに格納してから第1種の第2プログラムを使用する。この結果、第2制御部は、例えば、第2プログラムを使用して処理を実行する前、又は、処理を実行している最中に、第2メモリを低消費電力モードに変更することができる。これにより、処理装置の省電力化が図られる。例えば、第2メモリが第1メモリよりも総容量が大きい場合に、第2メモリが通常動作モードである時間を短くすることによって、メモリの省電力化が図られる。一方において、第2種の第2プログラムを使用する場合、当該第2プログラムを第1メモリに格納しない。例えば、第1メモリが第2メモリよりも総容量が小さい場合に、第2プログラムのうち、比較的にサイズの大きい種類のプログラムを第2種と予め指定しておくとよい。これにより、第2種の第2プログラムが第1メモリに格納することができない場合でも、第2制御部が第2種の第2プログラムを使用して処理を実行することができる。
【0012】
上記した処理装置では、第2制御部は、第1種の第2プログラムを第1メモリに格納する際に、第1メモリ内で第1種の第2プログラムを格納するための記憶領域が不足している場合には、第1メモリに格納されている特定のプログラムを消去してもよい。
これにより、実行すべき特定の処理のための第1種の第2プログラムを第1メモリに格納することができる。
【0013】
消去の対象となる特定のプログラムは、既に第1メモリに格納されている第1種の第2プログラムであってもよいし、第1プログラムであってもよい。上記の特定のプログラムが第1種の第2プログラムである場合、当該特定のプログラムが第1メモリから消去されると、その後に当該特定のプログラムを使用すべき際に、第2制御部は、第2メモリを通常動作モードに移行させて、当該特定のプログラムを第2メモリから第1メモリに格納する処理を再度実行する必要がある。例えば、消去の対象となる特定のプログラムが頻繁に使用されるプログラムである場合、上記の処理を実行しなければならない可能性(即ち第2メモリを通常動作モードに移行させる状況が発生する可能性)が高くなる。このために、上記した特定のプログラムは、第1メモリに既に格納された複数の第1種の第2プログラムのうち、使用回数が最も少ないプログラムであることが好ましい。
これにより、第2メモリを通常動作モードに移行させる状況が発生する可能性を低くすることができ、より省電力化を図ることができる。
【0014】
使用回数の最も少ない第1種の第2プログラムを選択する場合、第2制御部は、複数の第1種の第2プログラムのそれぞれについて、当該プログラムを使用して特定の処理を実行した使用回数をカウントし、複数の第1種の第2プログラムのうち、使用回数のカウント値が最も小さいプログラムを、特定のプログラムとして選択してもよい。
【0015】
上記した特定の処理には、第1制御部が実行すべき処理が含まれていてもよい。この場合、第2制御部は、第1制御部がスリープ状態である場合において、第1制御部が特定の処理を実行すべき場合には、第2メモリを通常動作モードに変更し、第1制御部を非スリープ状態に移行させてもよい。この構成によると、第1制御部に、第2メモリ内のプログラムを利用して特定の処理を実行させることができる。
【0016】
また、第2制御部は、第2プログラムを使用して特定の処理を実行することを試行した結果、特定の処理を実行することが不可能であった場合には、第2メモリを通常動作モードに変更し、第1制御部を非スリープ状態に移行させてもよい。この構成によると、第2制御部が特定の処理を実行することが不可能である場合に、第1制御部に、第2メモリ内のプログラムを利用して当該特定の処理を実行させることができる。
【図面の簡単な説明】
【0017】
【図1】プリンタの構成を示す。
【図2】第1RAMの記憶領域の一例を示す。
【図3】代理応答処理管理テーブルの一例を示す。
【図4】第2RAMの記憶領域の一例を示す。
【図5】プリンタの状態移行の一例を示す。
【図6】プリンタの状態に対応する各部の状態の一例を示す。
【図7】メインCPUの状態移行処理のフローチャートを示す。
【図8】図7の続きのフローチャートを示す。
【図9】メインCPUの状態移行判断処理のフローチャートを示す。
【図10】サブCPUの状態移行処理のフローチャートを示す。
【図11】図10の続きのフローチャートを示す。
【図12】サブCPUのプログラムロード処理のフローチャートを示す。
【発明を実施するための形態】
【0018】
(プリンタの構成)
図面を参照して実施例を説明する。図1は、本実施例のプリンタ10の概略図を示す。プリンタ10は、制御部12とネットワークインターフェイス30(以下では、「ネットワークI/F30」という)とプリントエンジン34と表示パネル38等を有する。制御部12は、メインCPU14とメイン用クロック回路16とROM18と2つのRAM20,22とサブCPU24とサブ用クロック回路26とMACコントローラ28とエンジン制御回路32とパネル制御回路36等を有する。
【0019】
メインCPU14は、第2RAM22に格納されているプログラムに従って様々な処理を実行する。メインCPU14は、タイマ機構を内蔵している。以下では、このタイマのことを待機状態タイマと呼ぶ。メイン用クロック回路16は、メインCPU14にクロック信号を供給する。メインCPU14にクロック信号が供給されている間は、メインCPU14は非スリープ状態である。メインCPU14にクロック信号が供給されていない間は、メインCPU14はスリープ状態である。なお、後述するように、メイン用クロック回路16は、サブCPU24によって制御される。
【0020】
サブCPU24は、第1RAM20及び第2RAM22に格納されているプログラムに従って様々な処理を実行する。サブ用クロック回路26は、サブCPU24にクロック信号を供給する。サブ用クロック回路26のクロック信号の周波数は、メイン用クロック回路16のクロック信号の周波数よりも低い。従って、メインCPU14を駆動するための消費電力と比べて、サブCPU24を駆動するための消費電力は小さい。サブ用クロック回路26は、プリンタ10の電源がONにされる(以下ではプリンタ10が起動されるともいう)と、サブCPU24にクロック信号を供給する。また、プリンタ10の電源がOFFにされると、サブCPU24へのクロック信号を停止する。即ち、サブCPU24は、プリンタ10が起動されている間、スリープ状態には設定されず、非スリープ状態で維持される。
【0021】
ROM18には、メインCPU14及びサブCPU24によって実行される複数のプログラムがそれぞれ圧縮された状態で格納されている。各プログラムは、プリンタ10が起動されたときに、第1RAM20又は第2RAM22に展開される。メインCPU14又はサブCPU24は、第1RAM20又は第2RAM22に展開されたプログラムを使用して処理を実行する。ROM18に格納されている全てのプログラムは、一旦、第2RAM22に展開される。次いで、第2RAM22に展開された複数のプログラムのうち、予め決められているプログラムが、第1RAM20にロードされる。なお、図示省略されているが、制御部12は、第1RAM20と第2RAM22のそれぞれに対してクロック信号を供給するための回路も有する。
【0022】
第1RAM20は、SRAMである。図2は、第1RAM20(図1)の格納領域の構成の一例を示す。第1RAM20は、第1省電力処理プログラム格納領域52と、第1代理応答プログラム格納領域54と、第1代理応答用情報格納領域56と、状態変数格納領域58と、代理応答処理管理テーブル60を備える。
【0023】
第1省電力処理プログラム格納領域52には、後述するサブCPU24が省電力処理(図10,11参照)を実行するためのプログラムが格納される。メインCPU14は、第2RAM22に展開された複数のプログラムのうち、サブCPU用の省電力処理プログラムを第1省電力処理プログラム格納領域52にロードして格納する。
【0024】
第1代理応答プログラム格納領域54は、後述するように、サブCPU24がメインCPU14に代理して処理を実行する際に使用するプログラムを格納するための領域である。メインCPU14は、プリンタ10が起動された際に、第2RAM22に展開された複数のプログラムのうち、予め設計者等によって決められている代理応答プログラム(例えば図3に示されるARP(Address Resolution Protocol)やNetBIOS−NS(Network Basic Input Output System -Name Service))を第1代理応答プログラム格納領域54にロードして格納する。なお、以下では、プリンタ10の起動時に第1代理応答プログラム格納領域54に格納される代理応答プログラムを「第1RAM専用プログラム54a」と呼ぶことがある。なお、上述したように、本実施例では、メインCPU14は、ROM18に格納されている全てのプログラムを第2RAM22に展開し、次いで、予め決められたプログラムを第2RAM22から第1RAM20にロードする。しかしながら、別の実施例では、メインCPU14は、予め決められたプログラムをROM18から第1RAM20に展開してもよい。
【0025】
第1代理応答用情報格納領域56には、サブCPU24がメインCPU14に代理して処理を実行するために必要な情報が格納される。第1代理応答用情報格納領域56に格納される情報の一例として、プリンタ10のIPアドレス、MACアドレス、ノード名等が挙げられる。
【0026】
状態変数格納領域58は、プリンタ10の状態を示す状態変数が格納されている。プリンタ10は、「処理状態」、「待機状態」、「ライトスリープ状態(Lスリープ状態)」、「ディープスリープ状態(Dスリープ状態)」のいずれかの状態で動作する。従って、状態変数格納領域58には、4つの状態に対応する4つの値のうちの1つの値が格納される。
【0027】
図3は、図2の代理応答処理管理テーブル60の内容の一例を示す。代理応答処理管理テーブル60には、プロトコル毎にコラム62,64,66,67,68,69が設定されている。本実施例では、6つのコラム62,64,66,67,68,69のみが例示されているが、実際には、他のプロトコルに対応するコラムも存在する。各コラム62,64,66,67,68,69には、プロトコル70と格納RAM72と読み出し元アドレス74と実行可能フラグ76と実行時アドレス78と使用回数80とが対応付けて記録される。
【0028】
プロトコル70には、代理応答処理で使用されるプロトコルに対応する識別情報が記録されている。
【0029】
格納RAM72には、サブCPU24が代理応答処理を実行する際に使用するプロトコルに対応するプログラムが格納されるべきRAMの種類が記録されている。本実施例では、第1RAM20と第2RAM22のいずれかが記録されている。格納RAM72が「第1RAM」である場合には、第1RAM20にプログラムが格納されている状態で当該プログラムを用いて代理応答処理が実行され、格納RAM72が「第2RAM」である場合には、第2RAM22にプログラムが格納されている状態で当該プログラムを用いて代理応答処理が実行される。なお、以下では、第2RAM22に格納されている状態で利用される代理応答プログラムを「第2RAM専用プログラム88a」と呼ぶことがある。本実施例では、第2RAM専用プログラム88aとして、SNMP(Simple Network Management Protocol)用の代理応答プログラムを採用している。
【0030】
読み出し元アドレス74には、プログラムが格納されている第2RAM22のアドレス情報が記録されている。なお、格納RAM72に「第2RAM」と記録されている場合(即ち第2RAM専用プログラム88aの場合)、読み出し元アドレス74には、アドレス情報が記録されていない。また、実行時アドレス78に「第1RAM内のアドレス」が記録されている場合(即ち第1RAM専用プログラム54aの場合)も、読み出し元アドレス74には、アドレス情報が記録されていない。後述の実行時ロード可能プログラム86aの場合に、読み出し元アドレス74にアドレス情報が記録されている。
【0031】
実行可能フラグ76には、「実行不可」、「実行可」、又は「常時実行可」のいずれかを示すフラグが記録される。例えば、上記の第1RAM専用プログラム54a(プリンタ10の起動時に第1RAM20の第1代理応答プログラム格納領域54(図2参照)に格納される代理応答プログラム)に対応する実行可能フラグ76には、「常時実行可」を示すフラグが記録される。また、上記の第2RAM専用プログラム88a(第2RAM22に格納されている状態で利用される代理応答プログラム)に対応する実行可能フラグ76にも、「常時実行可」を示すフラグが記録される。一方において、プリンタ10の起動時に、第2RAM22に格納されるが第1RAM20には格納されないプログラムに対応する実行可能フラグ76には、「実行可」又は「実行不可」が記録される。詳しくは後述するが、サブCPU24は、代理応答処理を実行すべき際に、その代理応答処理で用いられる代理応答プログラムを、第2RAM22から第1RAM20の第1代理応答プログラム格納領域54(図2参照)にロードする処理を実行する。なお、以下では、このようなプログラムのことを「実行時ロード可能プログラム54b,86a」と呼ぶ。本実施例では、実行時ロード可能プログラム54b,86aとして、ICMP(Internet Control Message Protocol)、SSDP(Simple Service Discovery Protocol)、mDNS(Multicast Domain Name System)用の代理応答プログラムを採用している。実行時ロード可能プログラム86aが第1RAM20の第1代理応答プログラム格納領域54(図2参照)にロードされた際に、その実行時ロード可能プログラム54bに対応する実行可能フラグ76には、「実行可」を示すフラグが記録される。一方、第1RAM20の第1代理応答プログラム格納領域54(図2参照)にロードされていない実行時ロード可能プログラム86aに対応する実行可能フラグ76には、「実行不可」を示すフラグが記録される。
【0032】
実行アドレス78には、サブCPU24が代理応答処理を実行する際に使用するプログラムが格納されているアドレスが記録される。第1RAM専用プログラム54aは、第1RAM20に格納された状態で使用されるために、実行アドレス78には、第1RAM20内のアドレスが記録される(コラム62,64参照)。第2RAM専用プログラム88aは、第2RAM22に格納された状態で使用されるために、実行アドレス78には、第2RAM22内のアドレスが記録される(コラム66参照)。また、実行時ロード可能プログラム54bは、実行時に第2RAM22から第1RAM20にロードされた状態で使用されるために、実行アドレス78には、第1RAM20内のアドレスが記録される(コラム68,69参照)。ただし、第1RAM20に未だロードされていない実行時ロード可能プログラム86aについては、実行アドレス78には、何も記録されない(コラム67参照)。
【0033】
使用回数80には、実行時ロード可能プログラム54bがサブCPU24によって使用された回数が記録される。サブCPU24は、実行時ロード可能プログラム54bを使用して処理を実行する毎に、使用回数80を「1」だけ加算する。本実施例では、使用回数80は、実行時ロード可能プログラム54bが第1RAM20に格納されてからの累積値である。
【0034】
第2RAM22(図1)は、SDRAMである。第2RAM22は、メインCPU14とサブCPU24の両者からアクセス可能である。第2RAM22は、第1RAM20よりもメモリの総容量が大きい。このため、第2RAM22は、第1RAM20と比べて、その消費電力が高い。図4は、第2RAM22(図1)の格納領域の構成を示す一例を示す。第2RAM22は、ネットワーク処理プログラム格納領域82と、第2省電力処理プログラム格納領域84と、第2代理応答プログラム格納領域86と、第3代理応答プログラム格納領域88と、第2代理応答用情報格納領域90を備える。
【0035】
ネットワーク処理プログラム格納領域82には、メインCPU14がネットワークを介して通信する処理を実行するためのネットワーク処理プログラムが格納される。このネットワーク処理プログラムは、ARP、NetBIOS−NS、ICMP、SSDP、mDNS等に関する応答処理(即ちメインCPU14が非スリープ状態の間に実行すべき応答処理)を実行するためのプログラム、印刷指示に応じて印刷処理を実行するためのプログラム等を含む。ネットワーク処理プログラムは、さらに、MACコントローラ28を制御するためのプログラム、TCP/IPを利用して処理を実行するためのTCP/IPプロトコルスタック、各種のアプリケーションプロトコルを利用して処理を実行するためのプログラム等を含む。メインCPU14は、プリンタ10が起動されると、ROM18に格納されている上記のネットワーク処理プログラムをネットワーク処理プログラム格納領域82に展開して格納する。
【0036】
第2省電力処理プログラム格納領域84には、メインCPU14が実行する省電力処理(図7,8参照)を実行するためのプログラムが格納される。メインCPU14は、プリンタ10が起動されると、ROM18に格納されているメインCPU14用の省電力処理プログラムを第2省電力処理プログラム格納領域84に展開して格納する。
【0037】
第2代理応答プログラム格納領域86、第3代理応答プログラム格納領域88には、メインCPU14がスリープ状態である場合において、サブCPU24がメインCPU14に代理して処理を実行する際に使用するプログラムが格納される。第2代理応答プログラム格納領域86には、上記の実行時ロード可能プログラム86aが格納される。なお、前述のように、実行時ロード可能プログラム86aは、第1RAM20にロードされて使用される。第3代理応答プログラム格納領域88には、上記の第2RAM専用プログラム88aが格納される。
【0038】
メインCPU14は、プリンタ10が起動されると、ROM18に格納されている第2RAM専用プログラム88aを第3代理応答プログラム格納領域88に展開して格納する。次いで、メインCPU14は、代理応答処理管理テーブル60の第2RAM専用プログラム88aに対応するコラム66の実行アドレス78(図3参照)に、第3代理応答プログラム格納領域88内の第2RAM専用プログラム88aが格納されたアドレス情報を記録する。
【0039】
また、メインCPU14は、プリンタ10が起動されると、ROM18に格納されている実行時ロード可能プログラム86aを第2代理応答プログラム格納領域86に展開して格納する。次いで、メインCPU14は、代理応答処理管理テーブル60の実行時ロード可能プログラム86aに対応するコラム67,68,69の読み出し元アドレス74(図3参照)に、第2代理応答プログラム格納領域86内の各実行時ロード可能プログラム86aが格納されたアドレス情報を記録する。
【0040】
なお、上述したように、メインCPU14は、プリンタ10が起動されると、ROM18に格納されている第1RAM専用プログラム54aを、一旦、第2RAM22に展開する。次いで、メインCPU14は、第1RAM専用プログラム54aを第2RAM22から第1RAM20の第1代理応答処理プログラム格納領域54にロードする。メインCPU14は、代理応答処理管理テーブル60の第1RAM専用プログラム54aに対応するコラム62,64の実行アドレス78(図3参照)に、第1代理応答処理プログラム格納領域54内の各第1RAM専用プログラム54aが格納されたアドレス情報を記録する。なお、メインCPU14は、第1RAM専用プログラム54aを第2RAM22から第1RAM20にロードした後に、第1RAM専用プログラム54aを第2RAM22から削除してもよいし、第2RAM22に維持してもよい。
【0041】
第2代理応答用情報格納領域90には、メインCPU14が処理を実行する際に必要な情報が格納される。例えば、プリンタ10のIPアドレス、MACアドレス、ノード名、ステータス情報等が格納される。メインCPU14は、第2代理応答用情報格納領域90に格納されるべき情報に変更があった場合、第2代理応答用情報格納領域90に格納されている情報を修正する。
【0042】
図1に示すMACコントローラ28は、ネットワークI/F30によって受信されたパケットをプリンタ10が処理可能な形式に変換する。MACコントローラ28は、例えば、メインCPU14によってパケットの送信が指示されると、第2RAM22からパケットを読み出し、外部装置に送信する、即ち、DMA(Direct Memory Access)を実行する。エンジン制御回路32は、メインCPU14からの指示に従って、プリントエンジン34を制御する。パネル制御回路36は、メインCPU14からの指示に従って、表示パネル38を制御する。表示パネル38は、LCDである。パネル制御回路36は、表示パネル38をON状態とOFF状態との間で移行させる。即ち、パネル制御回路36は、表示パネル38に電圧を印加することによって表示パネル38をON状態とし、電圧の印加を停止することによって表示パネル38をOFF状態とする。
【0043】
(プリンタの状態移行)
図5は、プリンタ10の状態が移行する様子を示す。プリンタ10は、処理状態92と待機状態94とLスリープ状態96とDスリープ状態98との間で状態が移行する。図6は、プリンタ10が各状態92,94,96,98の場合に、メインCPU14、サブCPU24、第1RAM20、第2RAM22及び表示パネル38の状態を表わす表100を示す。プリンタ10が起動されると、プリンタ10は、待機状態94となる。図6に示すように、待機状態94では、2つのCPU14,24にクロックが供給されている(即ち、2つのCPU14,24は非スリープ状態である)。2つのRAM20,22は通常動作モードであり、表示パネル38はON状態である。
【0044】
プリンタ10が待機状態94である場合に、ネットワークを介して外部装置からの要求(パケット)に応答する処理以外の通常の処理を実行する場合、プリンタ10は、処理状態92に移行する。なお、上記の通常の処理は、印刷指示に応じて実行される印刷処理、ユーザによって表示パネル38の操作が為された場合に実行される表示処理等を含む。処理状態92は、待機状態94と同様、2つのCPU14,24は非スリープ状態であり、2つのRAM20,22は通常動作モードであり、表示パネル38はON状態である。処理状態92と待機状態94との相違点は、メインCPU14が上記の通常の処理を実行しているか否かである。メインCPU14が上記の通常の処理を終了すると、プリンタ10は、待機状態94に移行する。
【0045】
メインCPU14は、待機状態94に移行すると、前述の待機状態タイマをスタートする。待機状態94が所定時間継続すると、メインCPU14は、パネル制御回路36(図1参照)に、表示パネル38をOFF状態にするように指示する。この結果、プリンタ10は、Lスリープ状態96に移行する。Lスリープ状態96では、2つのCPU14,24は非スリープ状態であり、2つのRAM20,22は通常動作モードであり、表示パネル38はOFF状態である。これにより、表示パネル38で消費される電力を低減させることができる。Lスリープ状態96において、メインCPU14が上記の通常の処理(印刷処理、表示処理等)を実行すべき場合には、プリンタ10は、処理状態92に移行する。
【0046】
プリンタ10は、後述する状態移行処理(図7,8参照)を実行することによって、Lスリープ状態96からDスリープ状態98に移行する。Dスリープ状態98では、メインCPU14はスリープ状態(クロック信号が供給されない状態)であり、サブCPU24は非スリープ状態であり、第1RAM20は通常動作モードであり、第2RAM22は内部の各セルの情報を維持するためのセルフリフレッシュモード(すなわち、通常動作モードよりも消費電力が低いモード)であり、表示パネル38はOFF状態である。Dスリープ状態において、メインCPU14が上記の通常の処理(印刷処理、表示処理等)を実行すべき場合には、プリンタ10は、Lスリープ状態96を経て処理状態92に移行する。
【0047】
(メインCPUの省電力処理)
次いで、メインCPU14が実行する処理の内容について説明する。図7,8は、メインCPU14によって実行される省電力処理のフローチャートを示す。図7,8の処理は、プリンタ10が起動され、メインCPU14が待機状態タイマをリセットすると開始される。プリンタ10が起動された時点では、プリンタ10は待機状態92である。メインCPU14は、第1RAM20の状態変数格納領域58(図2参照)に待機状態94を示す状態変数を格納する。メインCPU14は、第2RAM22の第2省電力処理プログラム格納領域84(図4参照)に格納されているプログラムを使用して以下の処理を実行する。
【0048】
メインCPU14は、状態変数格納領域58に格納されている状態変数が待機状態94を示すのか否かを判断する(S10)。ここでYESの場合、S12に進み、NOの場合、メインCPU14は、S10の判断を繰り返す。S12では、メインCPU14は、待機状態タイマの計測時間が所定時間を経過したのか否かを判断する。なお、待機状態タイマは、プリンタ10が待機状態94に移行する毎にリセットされる。S12でNOの場合、S10に戻り、S12でYESの場合、S14に進む。S14では、メインCPU14は、状態変数格納領域58に格納されている状態変数を、Lスリープ状態96を示す状態変数に変更する。続いて、メインCPU14は、パネル制御回路36に表示パネル38への電圧の印加を停止するように指示する(S16)。これにより、電圧の印加が停止されると、表示パネル38はOFF状態になる。
【0049】
次いで、メインCPU14は、状態変数格納領域58に格納されている状態変数がLスリープ状態96を示すのか否かを判断する(S18)。状態変数格納領域58に格納されている状態変数は、メインCPU14又はサブCPU24が図7,8以外の処理を実行することによって変更する可能性がある。例えば、メインCPU14は、後述の図10のS68においてクロック供給が再開されると、上記の通常の処理(印刷処理、表示処理等)を実行する。この際に、メインCPU14は、状態変数格納領域58に格納されている状態変数を処理状態92に変更する。この場合、S18でYESと判断され、メインCPU14は、パネル制御回路36に表示パネル38に電圧を印加するように指示して(S20)、S10に戻る。これにより、表示パネル38は、ON状態になる。
【0050】
一方において、S18でYESの場合、メインCPU14は、状態移行判断処理(後述する)を実行することによって、Dスリープ状態98に移行可能であるか否かを判断する(S22)。S22の処理が終了すると、メインCPU14は、S22の処理でDスリープ状態98に移行可能と判断されたか否かを確認する(S24)。ここでYESの場合、図8のS28に進み、NOの場合、S26に進む。S26では、メインCPU14は、WAIT命令を実行する。WAIT命令が実行されると、メインCPU14は、割り込み要求を受けるまで待機する実行停止状態となる。これにより、メインCPU14の消費電力を低減させることができる。メインCPU14が実行停止状態の間は、例えば、MACコントローラ28が、DMAを実行してパケットを外部装置に送信する。メインCPU14は、S26において、割り込み要求を受けると、S18に戻る。
【0051】
S28では、メインCPU14は、サブCPU24がメインCPU14に代理して処理を実行するために必要な情報を、第1RAM20の第1代理応答用情報格納領域56(図2参照)に格納する。具体的には、メインCPU14は、第2RAM22の第2代理応答用情報格納領域90(図4参照)に格納されている情報(即ちメインCPU14が応答処理に利用する情報)のうち、予め決められた情報を第1代理応答用情報格納領域56に格納する。次いで、メインCPU14は、サブCPU24以外からの割り込み要求をマスク(禁止)する(S30)。メインCPU14は、状態変数格納領域58に格納されているLスリープ状態96を示す状態変数を、Dスリープ状態98を示す状態変数に変更する(S32)。続いて、メインCPU14は、サブCPU24に、今後の処理を実行するように、割り込み要求を発行する(S34)。メインCPU14は、WAIT命令を実行する(S36)。WAIT命令が実行されると、メインCPU14は、割り込み要求を受けるまで待機する実行停止状態となる。メインCPU14は、S36において、割り込み要求を受ける(後述の図10のS70)と、S38に進む。そして、メインCPU14は、S30で実行した割り込み要求のマスクを解除して(S38)、図7のS18に戻る。即ち、メインCPU14は、割り込み要求を受けると、図7のS18の処理を実行する。
【0052】
(メインCPUの状態移行判断処理)
続いて、メインCPU14が図7のS22で実行する状態移行判断処理の内容を説明する。図9は、メインCPU14によって実行される状態移行判断処理のフローチャートを示す。メインCPU14は、外部装置にパケットを送信しているか否かを判断する(S40)。例えば、メインCPU14が外部装置(図示省略)からのプリンタ10のステータスの要求に対するレスポンスを返信している途中の場合、S40でYESと判断される。S40でYESの場合、S48に進む。一方において、S40でNOの場合、メインCPU14は、メインCPU14が処理すべきパケットが第2RAM22に記憶されているか否かを判断する(S42)。例えば、メインCPU14が外部装置からプリンタ10のステータスの要求を受信しており、未だ処理していない場合、S42でYESと判断される。S42でYESの場合にS48に進み、S42でNOの場合にS44に進む。S44では、メインCPU14は、プリンタ10に接続中の外部装置があるか否かを判断する。例えば、プリンタ10がWebサーバ機能を有しており、外部装置がプリンタ10のWebサーバにTCP接続中である場合、S44でYESと判断される。S44でYESの場合にS48に進み、NOの場合にS46に進む。
【0053】
S48では、メインCPU14は、Dスリープ状態98に移行不可であると判断する。この場合には、メインCPU14は、上記した図7のS24でNOと判断する。一方、S46では、メインCPU14は、Dスリープ状態98に移行可能であると判断する。この場合には、メインCPU14は、上記した図7のS24でYESと判断する。
【0054】
(サブCPUの省電力処理)
続いて、サブCPU24が実行する省電力処理の内容を説明する。図10,11は、サブCPU24によって実行される省電力処理のフローチャートを示す。図10,11の処理は、プリンタ10が起動されたことをトリガとして開始される。サブCPU24は、第1RAM20の第1省電力処理プログラム格納領域52(図2参照)に格納されているプログラムを使用して、以下の処理を実行する。最初に、サブCPU24は、WAIT命令を実行する(S50)。サブCPU24は、割り込む要求を受けるまで待機する(即ち実行停止状態に移行する)。上述したように、メインCPU14は、図8のS34において、サブCPU24に割り込む要求を発行する。これにより、サブCPU24の実行停止状態が解除され、S52に進む。
【0055】
S52では、サブCPU24は、第1RAM20の状態変数格納領域58(図2参照)に格納されている状態変数がDスリープ状態98を示すか否かを判断する。S52でNOの場合、S50に進む。即ち、サブCPU24は、状態変数がDスリープ状態98以外を示す場合、実行停止状態で待機する。
【0056】
S52でYESの場合、サブCPU24は、メイン用クロック回路16(図1参照)にクロック供給の停止を指示する(S54)。この結果、メインCPU14は、非スリープ状態からスリープ状態に移行する。続いて、サブCPU24は、第2RAM22を通常動作モードからセルフリフレッシュモードに移行させる(S56)。第2RAM22がセルフリフレッシュモードである間は、第2RAM22から情報を読み出すことができない。第2RAM22がセルフリフレッシュモードである場合、通常動作モードと比べて、第2RAM22の消費電力は低い。サブCPU24は、外部装置からのパケットを受信することを監視している(S58)。パケットを受信する(S58でYES)と、サブCPU24は、当該パケットの送信先として、プリンタ10のIPアドレスが指定されているか否かを判断する(S60)。なお、ブロードキャストパケットの場合は、S60でYESと判断される。S60でNOの場合、S58に戻る。一方において、S60でYESの場合、サブCPU24は、受信パケットが、サブCPU24がメインCPU14に代理して処理すべきパケットであるか否か、換言すれば、受信パケットが代理応答処理の対象パケットであるか否かを判断する(S62)。具体的には、サブCPU24は、受信パケットのプロトコルと一致するプロトコルが代理応答処理管理テーブル60のプロトコル70にあるか否かを判断する。なお、サブCPU24が代理応答処理ができないパケットとは、例えば、第2RAM22の第2代理応答用情報格納領域90のみに格納されている情報(例えばプリンタ10の設定情報)が必要となるパケットや、メインCPU14のみが使用可能なプログラムでしか処理できないパケットである。
【0057】
S62でYESの場合は図11のS80に進み、S62でNOの場合はS64に進む。S64では、サブCPU24は、第2RAM22をセルフリフレッシュモードから通常動作モードに移行する。サブCPU24は、第1RAM20の状態変数格納領域58(図2参照)のDスリープ状態98を示す状態変数を、Lスリープ状態96を示す状態変数に変更する(S66)。次いで、サブCPU24は、メイン用クロック回路16(図1参照)にメインCPU14にクロック供給を開始するよう指示する(S68)。この結果、メインCPU14は、スリープ状態から非スリープ状態に移行する。サブCPU24は、メインCPU14に割り込み要求を発行して(S70)、S50に戻る。この結果、図8のS36のWAIT命令に起因するメインCPU14の実行停止状態が解除される。メインCPU14は、図7のS18に移行し、さらに、図10のS58で受信されたパケット(以下では受信パケットと呼ぶ)に対応する処理を実行する。
【0058】
図11のS80では、サブCPU24は、代理応答処理管理テーブル60(図3参照)を参照することによって、受信パケットのプロトコル70に対応付けられている実行RAM72が「第1RAM」であるか否かを判断する(S80)。即ち、サブCPU24は、使用すべき代理応答プログラムが第1RAM専用プログラム54a又は実行時ロード可能プログラム54bであるのか否かを判断する。ここでNOの場合、即ち、サブCPU24が使用すべき代理応答プログラムが第2RAM専用プログラム88aである場合にS82に進む。一方、ここでYESの場合、即ち、サブCPU24が使用すべき代理応答プログラムが第1RAM専用プログラム54a又は実行時ロード可能プログラム54bである場合にS94に進む。
【0059】
本実施例では、サブCPU24が使用すべき代理応答プログラムが「SNMP」用の代理応答プログラム(第2RAM専用プログラム88a)である場合を例にしてS82からS90を説明する。S82では、サブCPU24は、第2RAM22を通常動作モードに移行させる。続いて、サブCPU24は、SNMP(図3のコラム66)に対応する実行アドレス78で指定された第2RAM22内のアドレスに存在するプログラムを使用して、受信パケットに対応する応答パケットの生成を試行する(S84)。サブCPU24は、応答パケットを生成することができたか否かを判断する(S86)。本実施例では、受信パケットがSNMPのGETコマンド(例えばプリンタ10のステータスを要求するためのコマンド)である場合、サブCPU24は、応答パケットを生成することができる。一方、受信パケットがSNMPのSETコマンド(例えばプリンタ10の設定値を変更するためのコマンド)である場合、サブCPU24は、応答パケットを生成することができない。また、受信パケットがSNMPのGETコマンドであって、プリンタ10の設定値(例えば、解像度、用紙サイズ等)を要求するコマンドである場合も、サブCPU24は、応答パケットを生成することができない。S86でNOの場合、サブCPU24は、図10のS66に戻る。即ち、サブCPU24は、メインCPU14を非スリープ状態に移行させる(図10のS68)。この結果、メインCPU14が応答パケットを生成することになる。
【0060】
一方において、S86でYESの場合、サブCPU24は、生成した応答パケットを受信パケットの送信元に返信する(S88)。応答パケットの生成が終了すると、サブCPU24は、第2RAM24をセルフリフレッシュモードに再び移行して(S90)、図10のS58に戻る。
【0061】
一方、S94では、サブCPU24は、使用すべき代理応答プログラムが第1RAM20に格納されているのか否かを判断する。即ち、サブCPU24は、代理応答処理管理テーブル60(図3参照)を参照することによって、使用すべき代理応答プログラムに対応する実行可能フラグ76が「実行可」又は「常時実行可」であるのか否かを判断する。ここでNOの場合、即ち、使用すべき代理応答プログラムに対応する実行可能フラグ76が「実行不可」である場合、S96に進み、YESの場合にはS102に進む。
【0062】
S96では、サブCPU24は、第2RAM22を通常動作モードに移行する。次いで、サブCPU24は、使用すべき代理応答プログラム(即ち実行時ロード可能プログラム86a)を第2RAM22から第1RAM20にロードする(S98)。S98のプログラムロード処理は、後で詳しく説明する。サブCPU24は、実行時ロード可能プログラム86aを第1RAM20にロードすると、第2RAM22をセルフリフレッシュモードに移行させる(S100)。なお、S100の処理は、後述するS108の処理の後に実行してもよいし、S102からS108の処理の途中で実行してもよいし、S102からS108と並行して実行される別スレッドで実行してもよい。
【0063】
S102では、サブCPU24は、代理応答プログラムを使用して、受信パケットに対応する応答パケットを生成する。S102で使用される代理応答プログラムとしては、以下の3つのプログラムが考えられる。
(1)今回の受信パケットに応じてS98で第1RAM20にロードされた実行時ロード可能プログラム54b。
(2)前回以前の受信パケットに応じて第1RAM20にロード済の実行時ロード可能プログラム54b(この場合はS94でYESとなる)。
(3)第1RAM専用プログラム54a(この場合もS94でYESとなる)。
【0064】
続いて、サブCPU24は、生成した応答パケットを受信パケットの送信元に返信する(S104)。サブCPU24は、S102の処理に使用した代理応答プログラムに対応する実行可能フラグ76(図3参照)が「常時実行可」であるか否か、換言すれば、第1RAM専用プログラム54aであるか否か、を判断する(S106)。S106でYESの場合、S108をスキップして、図10の58に戻る。一方において、S106でNOの場合、サブCPU24は、S102の処理に使用した代理応答プログラムに対応する使用回数80(図3参照)に「1」を加算して(S108)、図10の58に戻る。即ち、サブCPU24は、実行時ロード可能プログラム54bを使用してS102の処理を実行した場合に、当該プログラムの使用回数80に「1」を加算する。
【0065】
(サブCPUのプログラムロード処理)
続いて、サブCPU24が実行するプログラムロード処理(図11のS98)の内容を説明する。図12は、サブCPU24によって実行されるプログラムロード処理のフローチャートを示す。サブCPU24は、第1RAM20の第1代理応答プログラム格納領域54(図2参照)内に、使用すべき実行時ロード可能プログラム86aを格納可能な空き容量があるか否かを判断する(S110)。S110でYESの場合、サブCPU24は、代理応答処理管理テーブル60(図3)を参照することによって、使用すべき実行時ロード可能プログラム86aに対応する読み出し元アドレス74(第2RAM22内のアドレス)を特定する(S112)。サブCPU24は、特定されたアドレスに格納されている実行時ロード可能プログラム86aを第1代理応答プログラム格納領域54(図2参照)にロードして格納する(S114)。続いて、サブCPU24は、格納された実行時ロード可能プログラム54bに対応する実行アドレス78(図3参照)に、新たに格納された実行時ロード可能プログラム54bの第1RAM20内のアドレスを記録する(S116)。さらに、サブCPU24は、新たに格納された実行時ロード可能プログラム54bに対応する実行可能フラグ76(図3参照)を「実行可」に変更して(S118)、処理を終了する。
【0066】
一方において、S110でNOの場合、サブCPU24は、第1代理応答プログラム格納領域54(図2参照)に記憶されている1以上の実行時ロード可能プログラム54bのうち、使用回数80が最少の実行時ロード可能プログラム54bを、第1代理応答プログラム格納領域54から削除する(S120)。例えば、図3に示される「SSDP」の実行時ロード可能プログラム54bと「mDNS」の実行時ロード可能プログラム54bとが第1代理応答プログラム格納領域54に格納されている場合、サブPU24は、これらの2つのプロトコルに対応する使用回数80(図3参照)を比較する。そして、サブCPU24は、使用回数80が少ない「SSDP」の実行時ロード可能プログラム54bを、第1代理応答プログラム格納領域54から削除する。なお、本実施例の構成では、第1RAM専用プログラム54aが第1代理応答プログラム格納領域54から削除されることはない。続いて、サブCPU24は、削除した実行時ロード可能プログラム54b(例えば「SSDP」)に対応する実行可能フラグ76(図3参照)を「実行不可」に変更する(S122)。なお、この際、削除した実行時ロード可能プログラム54bに対応する実行時アドレス78も削除され、使用回数80は削除にされる。その後、サブCPU24は、S110に戻る。即ち、サブCPU24は、第1RAM20に空き容量があるか否かを再度判断し(S110)、S110でNOの場合、「SSDP」に対応するプログラム以外の別の実行時ロード可能プログラム54bも削除する。
【0067】
本実施例のプリンタ10について詳しく説明した。プリンタ10のメインCPU14は、プリンタ10をDスリープ状態98に移行可能であると判断すると(図7のS24でYES)、第1RAM20に格納されている状態変数を「Dスリープ状態」に変更する(図8のS32)。サブCPU24は、状態変数が「Dスリープ状態」を示す場合(図10のS52でYES)、メインCPU14をスリープ状態に移行させるとともに、第2RAM22をセルフリフレッシュモードに移行させる。これにより、プリンタ10の消費電力を低減させることができる。
【0068】
プリンタ10がDスリープ状態98の場合、サブCPU24は、メインCPU14に代理して受信されたパケットの応答処理を実行する。サブCPU24は、第1RAM20に格納されているプログラム(第1RAM専用プログラム54aおよび実行時ロード可能プログラム54b)を使用して代理応答処理を実行する場合、第2RAM22をセルフリフレッシュモードに維持した状態で、第1RAM20に格納されているプログラムを使用して代理応答処理を実行する。この構成によれば、プログラムを1つの共通のメモリに格納する場合と比較して、メモリの省電力化を図ることが可能となる。具体的には、1つのメモリが利用される場合には、該1つのメモリを低消費電力モードに設定することは困難である。しかしながら、本実施例のように、第1RAM20と第2RAM22とを利用すれば、一方のメモリ(第2RAM22)を低消費電力モード(セルフリフレッシュモード)に設定することができ、この結果、プリンタ10のメモリの省電力化を図ることが可能となる。また、第1RAM20は第2RAM22に比べてメモリ総容量が小さい。このため、本実施例のように、メモリ総容量の大きな第2RAM22を低消費電力モード(セルフリフレッシュモード)に移行させれば、メモリ総容量の小さな第1RAM20を低消費電力モードに移行させる場合と比較して、プリンタ10の消費電力をより低減することができる。
【0069】
サブCPU24が第1RAM20に格納されていないプログラム(実行時ロード可能プログラム86a)を使用して処理を実行する場合、サブCPU24は、第2RAM22をセルフリフレッシュモードから通常動作モードに移行する。この際、メインCPU14は、スリープ状態が維持されたままである。これにより、メインCPU14の消費電力を低減することができる。
【0070】
プリンタ10は、サブCPU24の代理応答プログラムのうち、第1RAM専用プログラム54aをプリンタ10の起動時に第1RAM20に格納している。一方において、プリンタ10では、実行時ロード可能プログラム86aは、プリンタ10の起動時には第1RAM20に格納されない。このように、第1RAM20に格納されるプログラムの種類を少なくすることによって、第1RAM20のメモリ容量を小さくすることができる。また、第1RAM20に実行時ロード可能プログラム54bを格納する場合において、第1RAM20に充分な空き容量が無い場合(図12のS110でNO)、第1RAM20に格納されているプログラムを削除してから、新たにプログラムを格納する。この構成によれば、第1RAM20のメモリ容量を大きくする必要がない。これにより、プリンタ10の消費電力を低減することができる。
【0071】
サブCPU24は、第1RAM20に格納されているプログラムを削除する場合、最も使用回数80の少ないプログラムを削除する。この結果、第2RAM22をセルフリフレッシュモードから通常動作モードに移行し、サブCPU24が処理に必要なプログラムを第2RAM22からロードしなければならない頻度を少なくすることができる。
【0072】
なお、以上の説明から分かるように、本実施例のプリンタ10が、本発明における処理装置に対応する。メインCPU14,サブCPU24は、それぞれ、第1制御部,第2制御部に対応し、第1RAM20,第2RAM22は、それぞれ、第1メモリ,第2メモリに対応する。
【0073】
また、本実施例における第1RAM専用プログラム54a(「ARP」,「NetBIOS−NS」用のプログラム)が、本発明における第1プログラムに対応する。また、第2RAM専用プログラム88a(「SNMP」用のプログラム)と実行時ロード可能プログラム54b,86a(「ICMP」,「SSDP」,「mDNS」用のプログラム)とが、第2プログラムに対応する。特に、実行時ロード可能プログラム54b,86aが、第1種の第2プログラムに対応し、第2RAM専用プログラム88aが、第2種の第2プログラムに対応する。
【0074】
(変形例)
(1)上記したプリンタ10では、プリンタ10が起動している間、サブCPU24は、非スリープ状態で維持されている。しかしながら、プリンタ10が起動している間に、サブCPU24が、非スリープ状態とスリープ状態との間を移行する構成であってもよい。例えば、サブCPU24は、処理状態と待機状態とLスリープ状態で、スリープ状態に設定され、Dスリープ状態で、非スリープ状態に設定されればよい。この場合、メインCPU14がサブ用クロック回路26を制御してもよい。メインCPU14は、状態変数をDスリープ状態98に変更する(図8のS32)と、サブCPU24にクロック信号を供給させてもよい。サブCPU24は、スリープ状態から非スリープ状態に移行されると、図10のS54以降の処理を実行してもよい。
【0075】
(2)上記したプリンタ10では、プリンタ10が起動している間、第1RAM20は、通常動作モードで維持されている。しかしながら、プリンタ10が起動している間に、第1RAM20が、通常動作モードとセルフリフレッシュモード(低消費電力モード)との間を移行する構成であってもよい。この場合、第1RAM20は、メインCPU14が非スリープ状態ではセルフリフレッシュモードにされ、スリープ状態では通常動作モードにされてもよい。また、サブCPU24が、プリンタ10が起動している間に非スリープ状態とスリープ状態との間を移行する構成である場合、サブCPU24が非スリープ状態では第1RAM20が通常動作モードにされ、サブCPU24がスリープ状態では第1RAM20がセルフリフレッシュモードにされてもよい。
【0076】
(3)上記したプリンタ10では、メインCPU14は、第2RAM22に格納されているプログラムを使用して処理を実行している。しかしながら、メインCPU14が使用するプログラムを第1RAM20と第2RAM22に分けて格納してもよい。
【0077】
(4)上記したプリンタ10では、サブCPU24は、第1RAM20に格納されている実行時ロード可能プログラム54bを削除する場合に、第1RAM20に格納されてからの使用回数80が最も少ない実行時ロード可能プログラム54bを削除している。しかしながら、サブCPU24は、消去可能な実行時ロード可能プログラム54b(代理応答処理管理テーブル60の実行可能フラグ76が「実行可」を示すプログラム)のうち、当該プログラムを消去することによって、格納すべき実行時ロード可能プログラム86aを格納するだけの空き容量を確保することが可能となる実行時ロード可能プログラム54bを選択してもよい。この場合、サブCPU24は、選択された実行時ロード可能プログラム54bが1個の場合には、選択されたプログラムを消去し、複数の実行時ロード可能プログラム54bが選択された場合には、当該複数の実行時ロード可能プログラム54bの中から、使用回数80が最も少ない実行時ロード可能プログラム54bを消去するようにしてもよい。
【0078】
また、上記したプリンタ10では、第1RAM20に格納されているプログラムのうち、消去可能なプログラムは、代理応答処理管理テーブル60の実行可能フラグ76が「実行可」(実行時ロード可能プログラム54b)を示すプログラムである。しかしながら、代理応答処理管理テーブル60に記録されている第1RAM専用プログラム54aを消去可能なプログラムとしてもよい。この場合、代理応答処理管理テーブル60に記録されている消去可能なプログラムの全てについて、使用回数80をカウントし、第1RAM20に格納されてからの使用回数80が最も少ないプログラムを消去してもよい。
【0079】
また、上記したプリンタ10では、使用回数80は、プログラムが第1RAM20に格納されてからの累積値である。しかしながら、使用回数80は、プリンタ10が起動されてからの累積値であってもよく、ユーザによってプリンタ10が利用されてからの累積値であってもよい。
【0080】
また、上記したプリンタ10では、使用回数80が少ない実行時ロード可能プログラム54bが消去されているが、これに代えて、過去に格納された実行時ロード可能プログラム54bから順次消去されてもよい。
【0081】
(5)また、上記したプリンタ10では、第1RAM20の容量は、第2RAM22の容量よりも小さい。しかしながら、第1RAM20の容量は、第2RAM22の容量と比べて、大きくてもよく、等しくてもよい。さらに、プリンタ10では、サブCPU24の動作周波数は、メインCPU14の動作周波数よりも小さい。しかしながら、サブCPU24の動作周波数は、メインCPU14の動作周波数と比べて大きくてもよく、等しくてもよい。
【0082】
(6)上記したプリンタ10では、ROM18と第1RAM20と第2RAM22とを備えている。しかしながら、ROM18と第1RAM20のみを備えていてもよい。この場合、ROM18が、第2RAM22の各格納領域82,84,86,88,90を備えていてもよい。ROM18は、通常動作モードとセルフリフレッシュモードとの間で移行する構成であってもよい。プリンタ10が処理状態92、待機状態94、Lスリープ状態96の場合にROM18は通常動作モードであり、Dスリープ状態98の場合にROM18はセルフリフレッシュモードであってもよい。即ち、ROM18のモードが上記した実施例の第2RAM22と同様に移行されてもよい。CPU14、CPU24は、ROM18が通常動作モードで、プログラムがROM18に格納されている状態で、当該プログラムを使用して処理を実行してもよい。
【0083】
(7)本実施例では、プリンタ10について説明したが、本明細書に開示された技術は、プリンタ10以外の処理装置、例えば、サーバ、スキャナ、多機能機等に利用することができる。
【0084】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0085】
10:プリンタ、14:メインCPU、20:第1RAM、22:第2RAM、24:サブCPU、28:MACコントローラ、32:エンジン制御回路、34:プリントエンジン、36:パネル制御回路、38:表示パネル、60:応答処理管理テーブル


【特許請求の範囲】
【請求項1】
処理装置であって、
スリープ状態と非スリープ状態との間で状態が移行し、前記非スリープ状態である場合に、特定の処理を実行する第1制御部と、
前記第1制御部が前記スリープ状態である場合に、前記第1制御部に代理して前記特定の処理を実行する第2制御部と、
第1プログラムを格納する第1メモリと、
第2プログラムを格納する第2メモリであって、前記第1制御部が前記非スリープ状態である場合に通常動作モードに設定され、前記第1制御部が前記スリープ状態である場合に低消費電力モードに設定される前記第2メモリと、
を備え、
前記第2制御部は、前記第1制御部が前記スリープ状態である場合において、
前記第1プログラムを使用して前記特定の処理を実行すべき場合には、前記第1制御部が前記スリープ状態で維持されており、かつ、前記第2メモリが前記低消費電力モードで維持されている状態で、前記第1メモリに格納されている前記第1プログラムを使用して、前記第1制御部に代理して前記特定の処理を実行し、
前記第2プログラムを使用して前記特定の処理を実行すべき場合には、前記第1制御部が前記スリープ状態で維持されている状態で、前記第2メモリを前記低消費電力モードから前記通常動作モードに変更し、前記第2メモリに格納されている前記第2プログラムを使用して、前記第1制御部に代理して前記特定の処理を実行する
ことを特徴とする処理装置。
【請求項2】
前記第2メモリの総容量は、前記第1メモリの総容量よりも大きい
ことを特徴とする請求項1に記載の処理装置。
【請求項3】
前記第2制御部は、前記第2プログラムを使用して前記特定の処理を実行すべき場合には、前記第2メモリに格納されている前記第2プログラムを前記第1メモリに格納することなく、前記第2メモリに格納されている前記第2プログラムを使用して前記特定の処理を実行する
ことを特徴とする請求項1又は2に記載の処理装置。
【請求項4】
前記第2制御部は、前記第2プログラムを使用して前記特定の処理を実行すべき場合には、前記第2メモリに格納されている前記第2プログラムを前記第1メモリに格納し、前記第1メモリに格納された前記第2プログラムを使用して前記特定の処理を実行し、前記第2メモリを前記低消費電力モードに変更する
ことを特徴とする請求項1又は2に記載の処理装置。
【請求項5】
前記第2メモリは、前記第1メモリに格納されて使用されることが予め指定されている第1種の前記第2プログラムと、前記第2メモリに格納されている状態で使用されることが予め指定されている第2種の前記第2プログラムと、を格納しており、
前記第2制御部は、
前記第1種の第2プログラムを使用して前記特定の処理を実行すべき場合には、前記第2メモリに格納されている前記第1種の第2プログラムを前記第1メモリに格納し、前記第1メモリに格納された前記第1種の第2プログラムを使用して前記特定の処理を実行し、前記第2メモリを前記低消費電力モードに変更し、
前記第2種の第2プログラムを使用して前記特定の処理を実行すべき場合には、前記第2メモリに格納されている前記第2種の第2プログラムを前記第1メモリに格納することなく、前記第2メモリに格納されている前記第2種の第2プログラムを使用して前記特定の処理を実行する
ことを特徴とする請求項1又は2に記載の処理装置。
【請求項6】
前記第2制御部は、前記第1種の第2プログラムを前記第1メモリに格納する際に、前記第1メモリ内で前記第1種の第2プログラムを格納するための記憶領域が不足している場合には、前記第1メモリに格納されている特定のプログラムを消去する
ことを特徴とする請求項5に記載の処理装置。
【請求項7】
前記特定のプログラムは、前記第1メモリに既に格納された複数の前記第1種の第2プログラムのうち、使用回数が最も少ないプログラムである
ことを特徴とする請求項6に記載の処理装置。
【請求項8】
前記第2制御部は、前記複数の第1種の第2プログラムのそれぞれについて、当該プログラムを使用して前記特定の処理を実行した使用回数をカウントし、前記複数の第1種の第2プログラムのうち、使用回数のカウント値が最も小さいプログラムを、前記特定のプログラムとして選択する
ことを特徴とする請求項7に記載の処理装置。
【請求項9】
前記第2制御部は、前記第1制御部が前記スリープ状態である場合において、前記第1制御部が前記特定の処理を実行すべき場合には、前記第2メモリを前記通常動作モードに変更し、前記第1制御部を前記非スリープ状態に移行させる
ことを特徴とする請求項1から8のいずれか一項に記載の処理装置。
【請求項10】
前記第2制御部は、前記第2プログラムを使用して前記特定の処理を実行することを試行した結果、前記特定の処理を実行することが不可能であった場合には、前記第2メモリを前記通常動作モードに変更し、前記第1制御部を前記非スリープ状態に移行させる
ことを特徴とする請求項1から9のいずれか一項に記載の処理装置。
【請求項11】
前記特定の処理は、ネットワークを介して受信したデータに対する応答処理を含み、
前記第1プログラムは、第1プロトコルに対応する応答処理プログラムを含み、
前記第2プログラムは、第2プロトコルに対応する応答処理プログラムを含む
ことを特徴とする請求項1から10のいずれか一項に記載の処理装置。


【図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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2010−228239(P2010−228239A)
【公開日】平成22年10月14日(2010.10.14)
【国際特許分類】
【出願番号】特願2009−77507(P2009−77507)
【出願日】平成21年3月26日(2009.3.26)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】