(57)【特許請求の範囲】
【請求項１】
ネットワークを介して通信する通信手段と、
複数に区分されたメモリブロックを作業メモリとしてデータを処理するデータ処理手段と、
前記データ処理手段の作動時に電源が供給される、アプリケーションの起動条件を記憶する不揮発メモリと、
複数のＯＳに対しハードウェアを仮想化し、第１のＯＳに第１のメモリブロックを割り当て、第２のＯＳに第１のメモリブロックと重複しない第２のメモリブロックを割り当てる仮想化手段と、
前記第１のＯＳだけが起動する省電力モードと、前記第１のＯＳと前記第２のＯＳが起動する非省電力モードとを切り替えるモード切り替え手段と、
省電力モードの際、電源から、前記通信手段、前記データ処理手段及び前記第１のメモリブロックにのみ、電力を供給させる電力管理手段と、
前記第１のＯＳの起動中に前記通信手段を制御してデータを受信する第１の通信制御手段と、
省電力モードの間に前記第１の通信制御手段が受信したデータを記憶するために前記第１のメモリブロックに設けられたデータバッファと、
省電力モードの間に前記通信手段が受信したデータに基づき前記起動条件を参照し、前記第２のＯＳ上で実行される前記アプリケーションの起動が必要か否かを、前記第１のＯＳ上で判定する起動判定手段と、を有し、
前記起動判定手段が前記アプリケーションの起動が必要であると判定した場合、前記モード切り替え手段は、省電力モードから非省電力モードに切り替え、前記アプリケーションと前記第２のＯＳとを起動させ、
前記アプリケーションにより起動された前記第２のＯＳの第２の通信制御手段が、前記データバッファからデータの読み出しを行う仮想化されたデータ読み出し手段を介してデータを読み出し、前記アプリケーションに通知する、
ことを特徴とする情報処理装置。
【請求項２】
前記アプリケーションは、前記起動判定手段が前記アプリケーションの起動が必要であると判定したデータを、前記第２の通信制御手段から取得する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ読み出し手段は、前記起動判定手段が前記アプリケーションの起動が必要であると判定したデータが記憶されているアドレスを、ポインタにより特定する、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記起動判定手段がデータの読み込みを完了した前記データバッファのアドレスを示す第１のポインタと、
前記アプリケーションがデータの読み込みを完了した前記データバッファのアドレスを示す第２のポインタと、
省電力モード時、前記第２のポインタを前記第１のポインタに追従させるポインタ操作手段と、を有することを特徴とする請求項２又は３記載の情報処理装置。
【請求項５】
前記起動判定手段が前記アプリケーションの起動が必要であると判定した場合、
前記ポインタ操作手段は、前記第２のポインタを前記第１のポインタに追従させない、
ことを特徴とする請求項４記載の情報処理装置。
【請求項６】
マルチコアＣＰＵの各コアが、それぞれ前記第１のＯＳと前記第２のＯＳを実行する、
ことを特徴とする請求項１〜５いずれか１項記載の情報処理装置。
【請求項７】
請求項１〜６いずれか１項記載の情報処理装置と、
用紙に画像を形成するプリンタと、を有する画像形成装置。
【請求項８】
ネットワークを介して通信する通信手段と、
複数に区分されたメモリブロックを作業メモリとしてデータを処理するデータ処理手段と、
前記データ処理手段の作動時に電源が供給される、アプリケーションの起動条件を記憶する不揮発メモリと、を有する情報処理装置により実行される動作モード切替方法であって、
仮想化手段が、複数のＯＳに対しハードウェアを仮想化し、第１のＯＳに第１のメモリブロックを割り当て、第２のＯＳに第１のメモリブロックと重複しない第２のメモリブロックを割り当てるステップと、
電力管理手段が、省電力モードの際、電源から、前記通信手段、前記データ処理手段及び前記第１のメモリブロックにのみ、電力を供給させるステップと、
第１の通信制御手段が、前記第１のＯＳの起動中に前記通信手段を制御してデータを受信し、省電力モードの間に前記第１の通信制御手段が受信したデータを記憶するために前記第１のメモリブロックに設けられたデータバッファに記憶するステップと、
起動判定手段が、省電力モードの間に前記通信手段が受信したデータに基づき前記起動条件を参照し、前記第２のＯＳ上で実行される前記アプリケーションの起動が必要か否かを、前記第１のＯＳ上で判定するステップと、
前記起動判定手段が前記アプリケーションの起動が必要であると判定した場合、モード切り替え手段が、省電力モードから非省電力モードに切り替え、前記アプリケーションと前記第２のＯＳを起動させるステップと、
前記アプリケーションにより起動された前記第２のＯＳの第２の通信制御手段が、前記データバッファからデータの読み出しを行う仮想化されたデータ読み出し手段を介してデータを読み出し、前記アプリケーションに通知するステップと、
を有する動作モード切替方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、省電力モードを備えた情報処理装置等に関し、特に、省電力モード時もネットワークを介して通信する情報処理装置、画像形成装置及び動作モード切替方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ等の情報処理装置だけでなくデジタル複合機やプリンタなどが備える情報処理装置には、省電力機構が備わっている。例えば、情報処理装置の中には、動作モードとして、内部の各デバイスに対して通常の駆動電力を供給する通常モードの他に、一部のデバイスへの駆動電力の供給を停止又はその供給量を低下させることにより消費電力を通常モードよりも低下させる省電力モードを備えているものがある。
【０００３】
このような情報処理装置は、通常モードにおいて、ネットワークを介してプリントアウトなどを要求する要求パケットデータを一定期間受信しない場合、省電力モードに移行して装置全体の消費電力を低減させる。そして、省電力モードの情報処理装置は、ネットワークから要求パケットデータを受信すると、デバイスへの電力供給を再開して通常モードに復帰させる（例えば、特許文献１参照。）。
【０００４】
特許文献１には、省電力モードの画像形成装置の通信制御部がパケットデータを受信すると、ＣＰＵを起動させ、パケットデータによって指定されるポート番号に応じた起動対象部品装置を通常モードに切り替える画像形成装置が開示されている。ＣＰＵでなく通信制御部が起動対象部品を判定するので、ＣＰＵが行うよりも消費電力を低減できるとしている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１記載の画像形成装置は、起動対象部品装置をポート番号のみで判定するので、ポート番号と起動対象部品の関係が固定でないと適用できないという問題がある。例えば、想定外のパケットデータが既に起動対象部品が対応づけられたポート番号を指定する場合、通常モードに切り替える必要がなくても起動対象部品を通常モードに切り替えてしまう。
【０００６】
より適切に起動対象部品や起動の有無を判定するため、コントローラ（ＣＰＵを含む）が管理する設定情報を利用する場合がある。例えば、省電力モードの時に画像形成処理を要求するパケットデータを受信して、画像形成部等のデバイスの起動が必要か否かを判定するために、コントローラ（ＣＰＵを含む）がアクセスする内部設定情報が必要な場合がある。しかし、設定情報を利用すると、画像形成装置がパケットデータを受信した場合、まずコントローラの全体が通常モードに切り替わることになり、不要な電力を消費するという問題があった。
【０００７】
本発明は、上記課題に鑑み、設定情報等を必要とするようなパケット解析処理を行う際に、消費電力を低減することができる情報処理装置、画像形成装置及び動作モード切替方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、ネットワークを介して通信する通信手段と、複数に区分されたメモリブロックを作業メモリとしてデータを処理するデータ処理手段と、前記データ処理手段の作動時に電源が供給される、アプリケーションの起動条件を記憶する不揮発メモリと、複数のＯＳに対しハードウェアを仮想化し、第１のＯＳに第１のメモリブロックを割り当て、第２のＯＳに第１のメモリブロックと重複しない第２のメモリブロックを割り当てる仮想化手段と、前記第１のＯＳだけが起動する省電力モードと、前記第１のＯＳと前記第２のＯＳが起動する非省電力モードとを切り替えるモード切り替え手段と、省電力モードの際、電源から、前記通信手段、前記データ処理手段及び前記第１のメモリブロックにのみ、電力を供給させる電力管理手段と、前記第１のＯＳの起動中に前記通信手段を制御してデータを受信する第１の通信制御手段と、省電力モードの間に前記第１の通信制御手段が受信したデータを記憶するために前記第１のメモリブロックに設けられたデータバッファと、省電力モードの間に前記通信手段が受信したデータに基づき前記起動条件を参照し、前記第２のＯＳ上で実行される前記アプリケーションの起動が必要か否かを、前記第１のＯＳ上で判定する起動判定手段と、前記起動判定手段が前記アプリケーションの起動が必要であると判定した場合、前記モード切り替え手段は、省電力モードから非省電力モードに切り替え、前記アプリケーションと前記第２のＯＳとを起動させ、前記アプリケーションにより起動された前記第２のＯＳの第２の通信制御手段が、前記データバッファからデータの読み出しを行う仮想化されたデータ読み出し手段を介してデータを読み出し、前記アプリケーションに通知する、ことを特徴とする情報処理装置を提供する。
【発明の効果】
【０００９】
設定情報等を必要とするようなパケット解析処理を行う際に、消費電力を低減することができる情報処理装置、画像形成装置及び動作モード切替方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】画像形成装置の概略構成図の一例である。
【図２】コントローラのハードウェア構成図の一例である。
【図３】ネットワークパケット（ＴＣＰヘッダ構造）を示す図の一例である。
【図４】ソフトウェア構成の一例を示す図である。
【図５】パーティショニングによるメモリブロックの区分の一例を示す図である。
【図６】ＯＳ１のメモリマップの一例、ＯＳ２のメモリマップの一例を示す図である。
【図７】画像形成装置が省電力モードに入る際の手順を示すフローチャート図の一例である。
【図８】画像形成装置が通常モードに復帰する際の手順を示すフローチャート図の一例である。
【図９】アプリケーション１の処理手順を示すフローチャート図の一例である。
【図１０】データバッファの記憶構造について詳細に説明する図の一例である。
【図１１】ポインタ1〜３の関係を説明する図の一例である。
【図１２】ポインタ1〜３の関係を説明する図の一例である。
【図１３】ポインタ1〜３の関係を説明する図の一例である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら説明する。
はじめに本実施形態の画像形成装置１００の特徴の概略について説明する。
【００１２】
本実施形態の画像形成装置１００は、仮想化技術を利用して、メモリのアクセス範囲をＯＳ毎にパーティショニングする。仮想化技術の特徴の１つであるパーティショニングを利用することで、ＯＳがアクセス可能なメモリの範囲を限定できるので、起動していないＯＳがある場合、そのＯＳがアクセスする範囲のメモリへの電源供給をゼロにできる。
【００１３】
したがって、省電力モードにおいて外部のネットワークからパケットデータを受信し、通常モードに切り替えてアプリケーションを起動する必要があるか否かを、コントローラ（ＣＰＵ）がコントローラ上の設定情報と受信したパケットデータから判定する場合、画像形成装置１００の消費電力を低減することができる。
【００１４】
また、アプリケーションは、電源供給が行われていないメモリ範囲へアクセスできないので、安全に、コントローラ上の必要な設定情報を取得してパケットを解析することができる。
【００１５】
〔ハードウェア構成図〕
図１は、画像形成装置１００の概略構成図の一例を示す。画像形成装置１００は、システム管理部１１、エンジンユニット部１２、及び、電源ユニット部１３を有する。システム管理部１１は、エンジンユニット部１２の起動が必要か否かを判定し、必要であれば電源ユニット部１３を制御して電源ユニット部１３からエンジンユニット部１２に電力を供給する（通常モード）。また、システム管理部１１は、エンジンユニット部１２が起動していることが不要であると判定すると、電源ユニット部１３を制御して電源ユニット部１３からエンジンユニット部１２に供給される電力をカットする（省電力モード）。システム管理部が、省電力モードと通常モードを適宜、切り替えることにより、省電力を実現する。なお、システム管理部１１は、例えばPCI−Expressバスを介してエンジンユニット部１２や電源ユニット部１３と接続されている。
【００１６】
システム管理部１１は操作部１４とコントローラ１５を有し、エンジンユニット部１２はスキャナ部１６とプリンタ部１７を有し、電源ユニット部１３はヒータ駆動部１９と直流電源２０を有する。電源ユニット部１３はコンセント（商用電源）に接続されている。プリンタ部１７には定着ユニット１８が搭載されており、ヒータ駆動部１９が定着ユニット１８の温度を制御している。
【００１７】
操作部１４は、画像形成装置１００とユーザのインターフェースを提供する部分で、ＬＣＤ（液晶表示装置）、タッチパネル、及び、キースイッチを有する。操作部１４は、画像形成装置１００の各種状態や操作方法をＬＣＤに表示し、タッチパネル上のキーの押下やキースイッチ入力を受け付ける。コントローラ１５については次述するが、コントローラ１５は画像形成装置１００の全体を制御する。
【００１８】
スキャナ部１６は、コンタクトガラスに載置された原稿を露光ランプで露光して、原稿の画像面を光学的に走査する。読み取られたデータがレンズによってＣＣＤの受光面に結像され、ＣＣＤが光電変換することで、デジタルの画像データが読み取られる。ＣＣＤは、例えばフルカラーＣＣＤ（又はフルカラーラインＣＣＤ）であり、赤（Ｒ）、緑（Ｇ）及び青（Ｂ）の各色に光電変換する。
【００１９】
プリンタ部１７は、中間転写ベルトや感光体ドラムに、露光や現像等の処理を施してトナー像を形成し、転写部で用紙に転写する。その後、用紙は定着ユニット１８に搬送され、定着ユニット１８で熱と圧力によりトナー画像が用紙に定着される。
【００２０】
電源ユニットは、商用電源から直流電源２０を生成し、さらにそれを昇圧するなどして定着ユニット１８に供給する。ヒータ駆動部１９は、直流電源２０の供給をオン／オフ又は供給量を制御することで定着ユニット１８の温度を制御する。
【００２１】
図２（ａ）は、コントローラ１５のハードウェア構成図の一例を示す。コントローラ１５は、システムバス２７を介して接続されている、ＣＰＵ２２、メモリ２１、ハードディスクＩ／Ｆ２３、ハードディスク２４、ネットワークＩ／Ｆ２５及びエンジンＩ／Ｆ２６、を有する。
【００２２】
ＣＰＵ２２ は不揮発性メモリを有し、不揮発メモリ２８に設定情報が記憶されいてる。記憶される設定情報には種々のものがあるが、本実施形態では、例えば、次述するＴＣＰパケットの「データ」フィールドのデータに含まれる情報と、エンジンユニット部１２の起動の有無、又は、エンジンユニット部１２のうち起動するエンジンを対応づけたテーブル、等である。
【００２３】
また、本実施形態ではＣＰＵ２２ が設定情報を記憶する不揮発メモリを有するが、不揮発メモリであり電源を供給するか否かを制御可能な、システムバス２７に接続された不揮発メモリであれば、設定情報を記憶することができる。この場合、システムバス２７に接続された不揮発メモリは、ＣＰＵ２２が作動する際には電源が供給される。
【００２４】
メモリ２１は、メモリブロック１〜４に区分されている。メモリブロック１〜４は、それぞれ揮発性メモリである。図では４つのメモリブロックを示したが、メモリブロックは２つ以上あればよく、５つ以上でもよい。
【００２５】
ハードディスク２４には、主にデジタル画像データ、デジタル画像データの付帯情報、フォントデータ、及び、プログラム（アプリケーション３１）、ＯＳ３２等が記憶されている。ハードディスクＩ／Ｆ２３は、例えば、ＩＤＥ（Integrated Drive Electronics）、又は、ＩＤＥを拡張して規格化されているＡＴＡ接続のインターフェイスである。ネットワークＩ／Ｆ２５は、例えばイーサネット・カードであり、外部のネットワーク（ＬＡＮ、ＷＡＮ、インターネット等）に接続することを可能にする。エンジンＩ／Ｆ２６には、操作部１４、エンジンユニット部１２及び電源ユニット部１３が接続されている。
【００２６】
ＣＰＵ２２は、ハードディスク２４に記憶されたプログラムを、メモリブロック１〜４を作業メモリとして実行する。上記の仮想化により、各アプリケーションから見えるメモリブロック１〜４を、４つ以下に制限することができる。このような制限は仮想化を実現するソフトウェア（例えば、後述するハイパバイザーの設定）から設定される。
【００２７】
各メモリブロック１〜４は、電源供給ユニット１３から接続された電力線を個別にオン／オフするスイッチなどにより、ＣＰＵ２２がそれぞれ個別に電源を供給するか否かを制御できるようになっている。また、ＣＰＵ２２、ハードディスクＩ／Ｆ（ハードディスク２４を含む）２３、ネットワークＩ／Ｆ２５、及び、エンジンＩ／Ｆ（エンジンユニット部１２、操作部１４を含む）２６は、それぞれ個別に電源を供給するか否かを、ＣＰＵ２２が制御できるようになっている。
【００２８】
本実施形態のコントローラ１５は、少なくとも通常モードと省電力モードの２つの動作モードを有する。通常モードは、全てのメモリブロック１〜４、ＣＰＵ２２、ハードディスクＩ／Ｆ（ハードディスク２４を含む）２３、ネットワークＩ／Ｆ２５、及び、エンジンＩ／Ｆ（エンジンユニット部１２、操作部１４を含む）２６に電源が供給される動作モードである。省電力モードは、ＣＰＵ（例えば、駆動周波数が通常モードよりも下がった状態に制御してもよい）２２、メモリブロック１〜４の一部（例えば、メモリブロック１）と、ネットワークデバイスＩ／Ｆのみに電力が供給されるモードである。すなわち、ハードディスクＩ／Ｆ２３とエンジンＩ／Ｆ２６には電力が供給されない。後述するように、通常モードで起動した状態となるアプリケーション１は、ハードディスク２４を使用することなくＣＰＵ２２が実行できるものとする。または、アプリケーション１の起動後、ハードディスク２４は停止されるものとする。
【００２９】
図２（ｂ）に、省電力モードで電力が供給されるブロックを斜線で示した。図示するように、省電力モードでは、ＣＰＵ２２、メモリブロック１及びネットワークＩ／Ｆ２５にのみ電力が供給される。
【００３０】
なお、図２ではＣＰＵ２２を１つとしているが、複数のＣＰＵ２２を搭載したマルチＣＰＵ又は複数のＣＰＵコアを備えたマルチコアＣＰＵをコントローラ１５に実装してもよい。この場合、ＣＰＵ毎又はＣＰＵコア毎に、図４のＯＳ１とＯＳ２を実行することができ、省電力モードではＣＰＵ又はＣＰＵコアへの電力供給を低減できるので、より省電力が可能になる。
【００３１】
〔ネットワークパケット〕
図３を用いてネットワークパケットについて説明する。図３はＴＣＰヘッダ構造を示す図である。横一列で３２ビットを表し、左端がビットの始まり（ゼロビット）を右端がビットの終わり（３１ビット）を示す。ＴＣＰヘッダは、いくつかのフィールドに区分されている。
【００３２】
「送信元ポート」フィールドには、送信元のアプリケーションを識別するための番号である、1〜65535の値が格納されている。「宛先ポート」フィールドには、宛先のアプリケーションを識別するための番号である、1〜65535までの値が格納されている。「シーケンス番号」フィールドには、送信するデータに順序を付けるための番号が格納される。「確認応答番号」フィールドには、受信したデータに対して、どこまで受信できたのかをバイト位置で表す情報が格納される。「データオフセット」フィールドには、ＴＣＰデータが始まる位置を表す情報が格納される。「コードビット」フィールドには各種のフラグが格納される。「ウィンドウサイズ」フィールドには、相手に伝えるため受信側のウィンドウサイズが格納される。「ＴＣＰチェックサム」フィールドには、ＴＣＰパケットの整合性を検査するための検査用データが格納される。「緊急ポインタ」フィールドにはコードビットのＵＲＧフラグが1の場合に有効となる情報が格納される。「データ」フィールドにはＴＣＰのデータが格納される。
【００３３】
したがって、ＴＣＰヘッダのうち、送信元ポートと宛先ポートが格納された最初の３２ビットを、ネットワークＩ／Ｆ２５が読み込めば、アプリケーション（ポート）による処理の切替が可能となる。しかし、この方法では、同一ポートを利用するアプリケーションが、違う処理をする必要がある場合は対処できない。そのため、何らかのアプリケーション（後述のアプリケーション１）が、ネットワークＩ／Ｆ２５が受信した「データ」フィールドのデータが、設定情報に登録された情報を含むか否かにより、別のアプリケーション（後述のアプリケーション２）を起動する必要があるか否か（通常モードに移行する必要があるか否か）を判定する。
【００３４】
〔仮想化のソフトウェア構成〕
図４（ａ）は、ソフトウェア構成の一例を示す図である。仮想化は、ＯＳ３２又はアプリケーション３１に対し、ハードウェア３４を仮想化する技術である。大きく２つの仮想化技術が知られている。このうち、ホストＯＳ型の仮想化は、一般的なＯＳ（Windows（登録商標）等）の上で市販の仮想化ソフトを実行する技術である。仮想化ソフトは、１つ以上の仮想マシン（ＯＳ３２及びアプリケーション３１）を生成して、それぞれ実行する。したがって、仮想化ソフトは、ＣＰＵ２２によりアプリケーション３１と同様に実行され、専用のプラットフォームを用意しなくても一般的なＯＳが稼働する情報処理装置なら、仮想化環境を実現できる。反面、ホストＯＳ型の仮想化は、オーバーヘッドが大きいと言われる。
【００３５】
もう１つのハイパーバイザ型の仮想化は、一般的なＯＳを起動することなくハードウェア３４のＢＩＯＳから直接仮想化ソフトを起動する技術である。起動された仮想化ソフトがハイパバイザー３３と呼ばれる（特許請求の範囲の仮想化手段に相当する。）。ハイパバイザー３３は、１つ以上の仮想マシン（ＯＳ３２及びアプリケーション３１）を生成して、それぞれ実行する。したがって、ハイパーバイザ型の仮想化は、一般的なＯＳを介さずに仮想マシンを実行できるので、処理が高速になると言われる。
【００３６】
図４（ａ）は、ハイパーバイザ型の仮想化システムにおけるソフトウェア構成を示す。ホストＯＳ型のシステムでも同様に実装することが可能である。ハイパバイザー３３は、２つのＯＳ１、ＯＳ２を実装し、一方のＯＳ（例えば、ＯＳ１）上で省電力モードの処理を提供し、もう１つのＯＳ（例えば、ＯＳ２）上で通常モードの処理を提供する。このためＯＳ２上で起動するアプリケーション２は、例えば、画像形成やスキャニング、ファクシミリ送受信等の通常動作を行うアプリケーション３１である。実際には、アプリケーション２は複数あるが、本図では１つとした。ネットワークＩ／Ｆ２５を除いた全てのデバイス（ハードディスクＩ／Ｆ２３、エンジンＩ／Ｆ２６）はＯＳ２上のアプリケーション２により制御される。
【００３７】
このような仮想化により、ハイパバイザー３３はメモリブロック１〜４をパーティショニングしている。広義のパーティショニングは、アプリケーション１，２に対してＯＳ１，２を仮想化することである。より狭義には、ＯＳ１，２を仮想化することで、ＯＳ１、２上で起動するアプリケーション１，２がアクセスするファイルやメモリが制限される。例えば、ハイパバイザー３３はパーティショニングにおいて、コントローラ１５のメモリ空間及びファイルシステムに対し、各ＯＳ１，２がアクセス可能な範囲を制限する。制限された各ＯＳ１，２は、アクセス可能なメモリ空間及びファイルシステム以外に、メモリやファイルが存在することを認識しない。したがって、ＯＳ１がＯＳ２のメモリ空間及びファイルシステムにアクセスしたり、ＯＳ２がＯＳ１のメモリ空間及びファイルシステムにアクセスすることがなく、高いセキュリティを実現できる。
【００３８】
本実施形態では、ＯＳ１が使用するメモリ空間はメモリブロック１に、ＯＳ２が使用するメモリ空間はメモリブロック２〜４にパーティショニングされている。
【００３９】
図５は、パーティショニングによるメモリブロック１〜４の区分の一例を示す図である。図示するように、メモリブロック１をＯＳ１が使用し、残りのメモリブロック２〜４をＯＳ２が使用する。各メモリブロック１〜４は同じ容量であるが、必ずしも同容量にする必要はない。
【００４０】
図４（ｂ）はアプリケーション１の機能ブロック図の一例を示す。図４（ｂ）の機能は、ＣＰＵ２２がプログラムを実行して実現される。起動判定部４１は、アプリケーション２を起動する必要があるか否かを判定する。本実施形態ではアプリケーション２を起動する必要があることは、省電力モードから通常モードに移行する必要があることと同義である。省電力モード移行判定部４２は、通常モードから省電力モードに移行する必要があるか否かを判定する。電力制御部４３は、通常モードと省電力モードそれぞれにおいて、予め定めた機器に電力を供給するよう、電源ユニット部１３を制御する。図２（ｂ）に示したように、電力制御部４３は、省電力モード時、メモリブロック１〜４のうちメモリブロック１、ＣＰＵ２２、及び、ネットワークＩ／Ｆにのみ電力を供給するよう、電源ユニット部１３に要求する。また、電力制御部４３は、通常モード時、メモリブロック１〜４、ＣＰＵ２２、ハードディスクＩ／Ｆ、ネットワークＩ／Ｆ及びエンジンＩ／Ｆに電力を供給するよう、電源ユニット部１３に要求する。モード切り替え部４４は、通常モードから省電力モード、又は、省電力モードから通常モードへコントローラ１５を切り替えための一連の処理を実行する。
【００４１】
図６（ａ）はＯＳ１のメモリマップの一例を、図６（ｂ）はＯＳ２のメモリマップの一例を、それぞれ示す。ＯＳ１のメモリ上には、ＯＳ２ブートＲＯＭ領域、ＯＳ１ブートＲＯＭ領域、フリーＲＡＭ２領域、ネットワークI/F制御レジスタ、不揮発性メモリ２８、フリーＲＡＭ領域１がそれぞれ配置されている。また、ＯＳ２のメモリ上には、フリーＲＡＭ２領域、ハードディスクI/F制御レジスタ、エンジンI/F制御レジスタ、不揮発メモリ２８、フリーＲＡＭ１領域がそれぞれ配置されている。ＯＳ１のフリーＲＡＭ１領域とフリーＲＡＭ２領域はメモリブロック１に対応し、ＯＳ１が使用するメモリ領域であり、ＯＳ２のフリーＲＡＭ１領域とフリーＲＡＭ２領域はメモリブロック２〜４に対応し、ＯＳ２が使用するメモリ領域である。
【００４２】
設定情報を記憶しておく不揮発性メモリはＯＳ１、ＯＳ２で共有される。これに対し、ＯＳ１からはハードディスクI/F制御レジスタ、エンジンI/F制御レジスタ共にアクセスが出来ないため、電源供給状態に関わらずアプリケーション１はエンジンユニット部１２に対し安全に動作することが可能となる。
【００４３】
また、ＣＰＵ２２ 内の不揮発性メモリ２８はＯＳ１とＯＳ２で共有しているため、ＯＳ１は、通常モード時に読み込まれる設定情報を、ＯＳ２を起動することなく確認できる。
【００４４】
なお、ＯＳ１ブートＲＯＭはＯＳ１を、ＯＳ２ブートＲＯＭはＯＳ２をそれぞれ起動する際、システム設定、ハードウェア３４の初期化などを行うプログラムが記憶されたＲＯＭであり、予め決まったアドレスに固定されている。ＯＳ１ブートＲＯＭのプログラムはＯＳ１をフリーＲＡＭ１領域やフリーＲＡＭ２領域を作業メモリにして、ＣＰＵ２２に実行させる。また、ＯＳ１は自動的にアプリケーション１を起動する。
【００４５】
アプリケーション１のモード切り替え部４４は、通常モードに移行する際、ハイパバイザー３３経由でＯＳ２ブートＲＯＭのプログラムをＣＰＵ２２に実行させ、ＯＳ２が図６（ｂ）のフリーＲＡＭ１領域やフリーＲＡＭ２領域を作業メモリに起動する。また、モード切り替え部４４は、ハイパバイザー３３経由でＯＳ２にアプリケーション２を起動させる。
【００４６】
〔ＯＳ１、２によるハードウェアへのアクセス〕
図４に戻り、ハイパバイザー３３は、アプリケーション１と２に対し、それぞれハードウェア３４を仮想化する。具体的には、ハイパバイザー３３は、例えばＯＳ１，２のカーネル内で行なわれるハードウェア３４に対し機能の提供を要求するシステムコールを受け取り、ＯＳ１とＯＳ２からハードウェア３４の使用要求を調停する。そして、ハイパバイザー３３がハードウェア３４を呼び出す形でハードウェア３４の機能をＯＳ１、２（アプリケーション１，２）に提供する。
【００４７】
本実施形態ではアプリケーション１，２によるハードウェア３４へのアクセスには次のような制限がある。
（ａ）アプリケーション１は、物理ドライバ３５を介してネットワークＩ／Ｆ２５に直接アクセスすることができる。
（ｂ）アプリケーション２は、仮想ドライバ３７、仮想ドライバＩ／Ｆ３８、データバッファ３６及び物理ドライバ３５、を介してネットワークＩ／Ｆ２５にアクセスする。
（ｃ）アプリケーション２は、仮想ドライバ３７及び仮想ドライバＩ／Ｆ３８を介して、ハードディスクＩ／Ｆ２３やエンジンＩ／Ｆ２６に利用要求を出力する。
【００４８】
本実施形態では特に（ｂ）のアクセス方法に特徴がある。すなわち、ＯＳ１とＯＳ２の間では、仮想ドライバI/F３８とデータバッファ３６を介してネットワークＩ／Ｆ２５が共有される。
【００４９】
ＯＳ１は省電力モード時に起動されている。上記のように、ネットワークＩ／Ｆ２５は省電力モードでも起動されているので、アプリケーション１は、ネットワークを介して受信したパケットを解析処理することができる。ＯＳ１はネットワークＩ／Ｆ２５を直接、制御する物理ドライバ（デバイスドライバ）３５を実装しており、省電力モード時、ハイパバイザー３３を介することなくネットワークを介してパケットを受信する。ＯＳ１上で処理が可能な限りは、アプリケーション１は、ＯＳ２を立ち上げることなくネットワークからのパケットを処理する。
【００５０】
省電力モード時、アプリケーション１は、ネットワークＩ／Ｆ２５が受信したパケットをデータバッファ３６に記憶する。プロトコルスタック１とプロトコルスタック２は、プロトコルに応じたデータ処理を行うプロトコル処理部である。例えば、ＴＣＰ／ＩＰの場合、上位の層からアプリケーション層（例えば、ＨＴＴＰ）、トランスポート層（例えばＴＣＰ）、 ネットワーク層（例えばＩＰ） 、リンク層（例えばＥｔｈｅｒｎｅｔ（登録商標））、物理層（例えばＲＪ４５）、の各層がある。プロトコルスタック１とプロトコルスタック２は、各層毎のプロトコルに対応した処理を行い、各層間のインターフェイスに適した形で処理結果をやりとりする。なお、一部の層の処理をアプリケーション１、２が受け持ってもよい。
【００５１】
そして、通常モード時、アプリケーション２は、仮想ドライバ３７と仮想ドライバＩ／Ｆ３８を介して、データバッファ３６のパケットを読み出すことができる。仮想ドライバＩ／Ｆ３８は、後述するポインタ３が指示するデータバッファ３６のアドレスからパケットを読み出し、仮想ドライバ３７に出力する。仮想ドライバ３７は、仮想ドライバＩ／Ｆ３８が読み出したパケットをプロトコルスタック２に出力する。プロトコルスタック２は、取得したパケットをプロトコル処理してアプリケーション２に提供する。これにより、アプリケーション２は、コントローラ１５が省電力モードの際に受信したパケットを、再送要求することなく利用して、画像形成、ファックス送受信等を実行することができる。
【００５２】
〔省電力モード移行手順〕
図７を用いて、画像形成装置１００が省電力モードに入る際の手順を説明する。省電力モードに入る前は、アプリケーション１とアプリケーション２の両方が、起動している状態である。この状態から、省電力モード移行判定部４２が、例えば所定時間以上の、パケットが受信されないこと、エンジンユニット部１２が作動しないこと、操作部１４から操作が受け付けられないこと、等を検出すると、省電力モードに移行すると判定する。これにより、モード切り替え部４４は、省電力モードへの移行を開始する（Ｓ１０）。
【００５３】
まず、モード切り替え部４４は、ハイパバイザー３３に、アプリケーション２の退避を要求する（Ｓ２０）。退避には、設定情報を不揮発メモリ２８に記憶すること、アプリケーション２の設定状態、ログ等、必要な情報をハードディスク２４に記憶すること、等が含まれる。
【００５４】
次に、モード切り替え部４４は、ＯＳ１が必要なデバイス（ネットワークＩ／Ｆ２５）のみを残して、仮想ドライバＩ／Ｆ３８を停止する（Ｓ３０）。
【００５５】
省電力モード時、ネットワークＩ／Ｆ２５に到達したパケットは、物理ドライバ３５、データバッファ３６、プロトコルスタック１を介してアプリケーション１に供給される（Ｓ４０）。起動判定部４１は、パケットのデータを解析して、アプリケーション２を起動する必要があるか否かを判定する。
【００５６】
また、モード切り替え部４４は、ハイパバイザー３３に、ＯＳ２の退避を要求する（Ｓ５０）。ＯＳ２を使用する必要があるパケットが来た場合には、モード切り替え部４４は、ハイパバイザー３３にＯＳ２及びアプリケーシション２を起動するよう要求する。
【００５７】
また、電力制御部４３は、省電力モードに対応して、電源ユニット部１３に電源供給を制限するよう要求する（Ｓ６０）。上記のように、省電力モード時に起動しているのは、ネットワークＩ／Ｆ２５、メモリブロック１、及び、ＣＰＵ２２なので、電力制御部４３は、メモリブロック２〜４、エンジンＩ／Ｆ２６とハードディスクＩ／Ｆ２３への電力の供給を停止するよう電源ユニット部１３に要求する。電力の供給が制限されると、画像形成装置１００は省電力モードとなる（Ｓ７０）。
【００５８】
〔通常モード移行手順〕
図８を用いて、画像形成装置１００が通常モードに復帰する際の手順を説明する。
アプリケーション１の起動判定部４１は、ネットワークＩ／Ｆ２５が受信したパケットを解析して、アプリケーション２を起動する必要があるか否かを判定する。パケットが例えばプリントを要求するものである場合、起動判定部４１は通常モードへの復帰を開始する（Ｓ１１０）。ステップＳ１１０の処理は、図９のフローチャート図で説明する。
【００５９】
モード切り替え部４４は、電源ユニット部１３に、エンジンＩ／Ｆ２６、ハードディスクＩ／Ｆ２３及びメモリブロック２〜４への電源供給を再開するよう要求する（Ｓ１２０）。
【００６０】
また、モード切り替え部４４、ハイパバイザー３３にＯＳ２を起動させるよう要求する（Ｓ１３０）。また、モード切り替え部４４は、ＯＳ２が復帰した後、ネットワークＩ／Ｆ２５から受信したパケットはデータバッファ３６に記憶したままとする。
【００６１】
ＯＳ２が起動すると、モード切り替え部４４は、ハイパバイザー３３にアプリケーション２を起動させるよう要求する（Ｓ１４０）。
【００６２】
アプリケーション２が起動すると、モード切り替え部４４は、仮想ドライバＩ／Ｆ３８を起動させるよう要求する（Ｓ１５０）。
【００６３】
仮想ドライバＩ／Ｆ３８が起動すると、モード切り替え部４４は、ハイパバイザー３３を介して、仮想ドライバ３７にデータバッファ３６のパケットを読み出すよう要求する。仮想ドライバ３７は、仮想ドライバＩ／Ｆ３８を介してデータバッファ３６にアクセスし、パケットを取得する。したがって、ＯＳ２が復帰した後、アプリケーション２がパケットを取得する。なお、仮想ドライバＩ／Ｆ３８によるデータバッファ３６へのアクセスについては後述する。
【００６４】
モード切り替え部４４は、アプリケーション１にネットワーク処理を停止させる（Ｓ１６０）。アプリケーション１は起動したままであるが、ネットワーク処理はアプリケーション２が受け持つので重複した電力消費を防止できる。以上で、通常モードへの移行が終了する（Ｓ１７０）。
【００６５】
〔アプリケーション１による処理手順〕
図９は、アプリケーション１の処理手順を示すフローチャート図の一例である。図９の手順は、省電力モードになると繰り返し実行される。
【００６６】
起動判定部４１は、ネットワークＩ／Ｆ２５がパケットを受信したか否かを定期的に監視したり、例えばネットワークＩ／Ｆ２５から割り込みを受けるなどして、パケットを受信したことを検出する（Ｓ２１０）。
【００６７】
起動判定部４１は、受信したパケットを解析する（Ｓ２２０）。この解析には、ＴＣＰパケットの「データ」フィールドのデータが利用される。起動判定部４１は、不揮発メモリ２８に記憶された設定情報に、「データ」フィールドのデータが登録されている場合に、アプリケーション２を起動する必要があると判定する。
【００６８】
コントローラ上の設定情報等をパケットの解析に必要とする場合でも、メモリブロック１だけに電力が供給された状態で解析できるので、画像形成装置１００本体の消費電力を低減することができる。
【００６９】
アプリケーション２を起動する必要がない場合（Ｓ２３０のＹｅｓ）、アプリケーション１はパケットを処理する（Ｓ２４０）。この処理は、エンジンユニット部１２を起動しない処理であり、例えばＰＣからの起動の有無の問い合わせに対する応答等である。
【００７０】
アプリケーション２を起動する必要がある場合（Ｓ２３０のＮｏ）、アプリケーション１は図８にて説明した通常モードに復帰する際の手順を実行する（Ｓ２５０）。
【００７１】
〔データバッファ３６の記憶構造〕
図１０（ａ）を用いてデータバッファ３６の記憶構造について詳細に説明する。図１０は、データバッファ３６を模式的に示す図の一例である。図１０（ａ）では、データバッファ３６を１バイト毎に区切っている。
【００７２】
データバッファ３６は、物理ドライバ３５、プロトコルスタック１及び仮想ドライバＩ／Ｆ３８ が、それぞれ非同期にアクセスする。ここで、物理ドライバ３５がパケットを自由にデータバッファ３６に記録すると、プロトコルスタック１及び仮想ドライバＩ／Ｆ３８がデータバッファ３６からパケットを読み込む前に上書きするおそれがある。逆に、プロトコルスタック１及び仮想ドライバＩ／Ｆ３８が、データバッファ３６から同じパケットを再読込するおそれもある。そこで、本実施形態ではポインタを使用して、物理ドライバ３５、プロトコルスタック１及び仮想ドライバＩ／Ｆ３８ が、それぞれ非同期にデータバッファ３６にアクセスすることを可能にする。
【００７３】
図１０（ａ）では、ポインタ１は物理ドライバ３５が使用し、ポインタ２はプロトコルスタック１が使用し、ポインタ３は仮想ドライバＩ／Ｆ３８ が使用する。それぞれのポインタ１〜３はデータバッファ３６の右から左に移動し、一番左端に来た時点で再び右端に移る。ポインタ1〜３が示すアドレスはデータバッファ３６と同様に、物理ドライバ３５、プロトコルスタック１及び仮想ドライバＩ／Ｆ３８ が参照できるようになっている。
【００７４】
図１０（ｂ）は、初期状態のポインタ1〜３を示す。初期状態とは、データバッファ３６に何もパケットが記憶されていない状態である。例えば、画像形成装置１００の起動直後は、初期状態となる。初期状態では、ポインタ１〜３はデータバッファ３６の最右のアドレスを示す。
【００７５】
図１１は、物理ドライバ３５がパケットをデータバッファ３６に書き込む際のポインタ１を説明する図である。ネットワークＩ／Ｆ２５が受信したパケットを物理ドライバ３５が取得すると、物理ドライバ３５はデータバッファ３６に１バイトずつ蓄積し、ポインタ１を１バイト分左へ移動する。したがって、ポインタ１が指し示しているアドレス上にはまだパケットが記憶されておらず、ポインタ１は次にパケットを記憶する空きブロックを示している。
【００７６】
物理ドライバ３５は、パケットを１バイト記憶するごとにポインタ１を左に移動するが、ポインタ３を追い越すと、仮想ドライバＩ／Ｆ３８が読み込んでいないパケットを上書きすることになる。このため、ポインタ１はポインタ３と重なった時点で停止し、物理ドライバ３５はポインタ３が再び左に移動するまでパケットをデータバッファ３６に記憶させない。すなわち、ポインタ１はポインタ３を超えて左に移動しない。なお、ポインタ２はポインタ３よりも左側に位置するので、ポインタ１がポインタ２を超えることは考慮しなくてよい。
【００７７】
図１２（ａ）は、プロトコルスタック１がデータバッファ３６からパケットを読み込む際のポインタ２を説明する図である。プロトコルスタック１はポインタ２がポインタ１に重なるまでポインタ上のデータを１バイトずつ読み込んでいく。ポインタ２はポインタ１に重なった時点でパケットの読込みを停止し、ポインタ１が再び移動するまで読込みを再開しない。こうすることで、プロトコルスタック１は、既に読み込んだパケットを再読込することを防止できる。
【００７８】
図１２（ｂ）は、プロトコルスタック１がパケットの解析を終了した時のポインタ２を説明する図の一例である。プロトコルスタック１は一連のデータの解析が終了した時点で、ポインタ３をポインタ２の位置まで移動する。一連のデータは１つのパケット単位でも、ある処理を行うための複数のパケットの組単位でもよい。１つのパケット単位を一連のデータとした場合、パケット内のデータを解析した上でアプリケーション１が応答することが出来るため、省電力モードをより長く維持可能となる。また、複数のパケットの組単位を一連のデータとした場合、さらに長く省電力モードを維持することが可能となる。
【００７９】
仮想ドライバＩ／Ｆ３８ が停止している間、プロトコルスタック１は、一連のデータの解析が終了した時点で、ポインタ３をポインタ２の位置まで移動する処理を繰り返す。したがって、仮想ドライバＩ／Ｆ３８が停止している間、ポインタ３とポインタ２は同じアドレスを示す状態となることが多い。
【００８０】
ここで、アプリケーション２の起動が必要となる処理では、判定のために使用したパケットをアプリケーション１が破棄すると、アプリケーション２がパケットの再送を相手先に行う必要が生じる。この再送を不要にするためには、アプリケーション２が起動するまでの間、データバッファ３６にパケットがそのまま記憶されている必要がある。
【００８１】
そこで、プロトコルスタック１は、一連のデータの解析の結果、起動判定部４１がアプリケーション２の起動が必要であると判定した場合は、ポインタ３をポインタ２の位置まで移動しない。すなわち、この場合、ポインタ３は、アプリケーション２による処理が必要なパケットのデータの先頭を示す。
【００８２】
図１３（ａ）は、仮想ドライバＩ／Ｆ３８がパケットを読み込む際のポインタ３を説明する図の一例である。省電力モードから通常モードに復帰すると、仮想ドライバＩ／Ｆ３８が起動される。仮想ドライバＩ／Ｆ３８は、ポインタ３がポインタ１に重なるまでパケットを読み込んでいく。ポインタ３がポインタ１に重なると、仮想ドライバＩ／Ｆ３８はパケットの読込みを停止し、ポインタ１が動き始めると、ポインタ３が停止して位置からパケットの読込みを再開する。なお、プロトコルスタック１は、通常モードの間、停止している。
【００８３】
図１３（ｂ）は、省電力モードに移行し、仮想ドライバＩ／Ｆ３８が停止される際のポインタ３を説明する図の一例である。省電力モードに移行する際、仮想ドライバＩ／Ｆ３８はプロトコルスタック２からパケット処理の終了の通知を受ける。そして、仮想ドライバＩ／Ｆ３８は、データバッファ３６からのパケットの読み込みを停止すると共に、ポインタ２をポインタ３の位置まで移動する。すなわち、停止していたポインタ２の位置を、ポインタ３の位置に一致させておく。
【００８４】
以上説明したように、本実施形態の画像形成装置１００は、仮想化技術を利用して、メモリのアクセス範囲をＯＳ毎にパーティショニングし、省電力モードにおいてメモリの一部にだけ電力を供給するので、消費電力を低減した状態でかつ安全に、通常モードに移行すべきか否かを判定できる。
【符号の説明】
【００８５】
１１      システム管理部
１２      エンジンユニット部
１３      電源ユニット部
１５      コントローラ
２１      メモリ（メモリブロック１〜４）
２２      ＣＰＵ
２３      ハードディスクＩ／Ｆ
２５      ネットワークＩ／Ｆ
２６      エンジンＩ／Ｆ
２８      不揮発メモリ
３３      ハイパバイザー
３４      ハードウェア
３５      物理ドライバ
３６      データバッファ
３７      仮想ドライバ
３８      仮想ドライバＩ／Ｆ
４１      起動判定部
４２      省電力モード移行判定部
４３      電力制御部
４４      モード切り替え部
１００    画像形成装置
【先行技術文献】
【特許文献】
【００８６】
【特許文献１】特開２００８−１８１４０２号公報
【図１】
0005418097.tif 000002
【図２】
0005418097.tif 000003
【図３】
0005418097.tif 000004
【図４】
0005418097.tif 000005
【図５】
0005418097.tif 000006
【図６】
0005418097.tif 000007
【図７】
0005418097.tif 000008
【図８】
0005418097.tif 000009
【図９】
0005418097.tif 000010
【図１０】
0005418097.tif 000011
【図１１】
0005418097.tif 000012
【図１２】
0005418097.tif 000013
【図１３】
0005418097.tif 000014