(57)【要約】【課題】マルチコアＣＰＵを備える画像処理装置においてスナップショットを従来よりも確実に取得する。【解決手段】複数のコアを有するＣＰＵ１０ａと、メインメモリ１０ｂと、補助記憶装置１０ｄおよび画像描画回路１０ｆなどのハードウェアモジュールと、一次電源から入力される電力である一次電力を変圧してＣＰＵ１０ａ、メインメモリ１０ｂ、およびハードウェアモジュールへ二次電力を供給し、かつ、一次電力の瞬電対策用の瞬電対策回路を有するＡＣ／ＤＣコンバータ１０ｕと、を備える画像形成装置において、一次電源からの一次電力の供給が停止した後、複数のコアのうちのメインメモリ１０ｂのスナップショットを生成する生成処理を実行するのに使用するコアの個数を、時間の経過とともに少なくなるように決定し、ＣＰＵ１０ａは、決定した個数のコアによって生成処理を実行する。【選択図】図２
2019028749.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアを有するマルチコアＣＰＵと、
前記マルチコアＣＰＵが使用するメインメモリと、
前記メインメモリおよび前記マルチコアＣＰＵ以外の１つまたは複数のハードウェアモジュールと、
一次電源から入力される電力である一次電力を変圧して前記マルチコアＣＰＵ、前記メインメモリ、および前記１つまたは複数のハードウェアモジュールへ二次電力を供給し、かつ、当該一次電力の瞬電の対策のための瞬電対策回路を有する二次電源と、
前記一次電源からの前記一次電力の供給が停止した後、前記複数のコアのうちの前記メインメモリの全部分または一部分のスナップショットを生成する生成処理を実行するのに使用するコアの個数を、時間の経過とともに少なくなるように決定する、決定手段と、
を有し、
前記マルチコアＣＰＵは、前記複数のコアのうちの、前記決定手段によって決定された前記個数のコアによって前記生成処理を実行する、
ことを特徴とする画像処理装置。
【請求項２】
前記決定手段は、前記瞬電対策回路が前記１つまたは複数のハードウェアモジュールのうちのいずれかへ前記二次電力を供給するのを終了したら、前記個数を増やす、
請求項１に記載の画像処理装置。
【請求項３】
複数のコアを有するマルチコアＣＰＵと、
前記マルチコアＣＰＵが使用するメインメモリと、
前記メインメモリおよび前記マルチコアＣＰＵ以外の１つまたは複数のハードウェアモジュールと、
一次電源から入力される電力である一次電力を変圧して前記マルチコアＣＰＵ、前記メインメモリ、および前記１つまたは複数のハードウェアモジュールへ二次電力を供給し、かつ、当該一次電力の瞬電の対策のための瞬電対策回路を有する二次電源と、
前記一次電源からの前記一次電力の供給が停止した後、前記複数のコアのうちの前記メインメモリの全部分または一部分のスナップショットを生成する生成処理を実行するのに使用するコアの個数を、前記瞬電対策回路の電圧が低いほど少なくなるように決定する、決定手段と、
を有し、
前記マルチコアＣＰＵは、前記複数のコアのうちの、前記決定手段によって決定された前記個数のコアによって前記生成処理を実行する、
ことを特徴とする画像処理装置。
【請求項４】
前記決定手段は、前記個数を定期的に決定し、
前記マルチコアＣＰＵは、前記複数のコアのうちの、前記決定手段によって直近に決定された前記個数のコアによって前記生成処理を実行する、
請求項３に記載の画像処理装置。
【請求項５】
前記瞬電対策回路は、前記一次電力が前記一次電源から供給されなくても、少なくとも所定の時間は、前記マルチコアＣＰＵ、前記メインメモリ、および前記１つまたは複数のハードウェアモジュールへ前記二次電力を供給し、
前記決定手段は、前記一次電源からの前記一次電力の供給が停止した後、前記所定の時間が経過するまでは、前記個数を、前記複数のコアに決定する、
請求項１ないし請求項４のいずれかに記載の画像処理装置。
【請求項６】
前記メインメモリには、前記１つまたは複数のハードウェアモジュールそれぞれの記憶領域が設けられ、
前記マルチコアＣＰＵは、前記記憶領域を複数のブロックに分割し、当該複数のブロックそれぞれのイメージを、前記複数のコアのうちの、前記決定手段によって決定された前記個数のコアによって分担して取得することによって、前記生成処理を実行する、
請求項１ないし請求項５のいずれかに記載の画像処理装置。
【請求項７】
前記マルチコアＣＰＵは、前記１つまたは複数のハードウェアモジュールのうちの優先度の高いものの前記記憶領域から優先的に、前記複数のブロックそれぞれの前記イメージを取得する、
請求項６に記載の画像処理装置。
【請求項８】
複数のコアを有するマルチコアＣＰＵと、前記マルチコアＣＰＵが使用するメインメモリと、前記メインメモリおよび前記マルチコアＣＰＵ以外の１つまたは複数のハードウェアモジュールと、一次電源から入力される電力である一次電力を変圧して前記マルチコアＣＰＵ、前記メインメモリ、および前記１つまたは複数のハードウェアモジュールへ二次電力を供給し、かつ、当該一次電力の瞬電の対策のための瞬電対策回路を有する二次電源と、を有する画像処理装置においてスナップショットを取得するスナップショット取得方法であって、
前記複数のコアのうちのいずれかによって、前記一次電源からの前記一次電力の供給が停止した後、前記複数のコアのうちの前記メインメモリの全部分または一部分のスナップショットを生成する生成処理を実行するのに使用するコアの個数を、時間の経過とともに少なくなるように決定し、
前記複数のコアのうちの、決定した前記個数のコアによって、前記生成処理を実行する、
ことを特徴とするスナップショット取得方法。
【請求項９】
複数のコアを有するマルチコアＣＰＵと、前記マルチコアＣＰＵが使用するメインメモリと、前記メインメモリおよび前記マルチコアＣＰＵ以外の１つまたは複数のハードウェアモジュールと、一次電源から入力される電力である一次電力を変圧して前記マルチコアＣＰＵ、前記メインメモリ、および前記１つまたは複数のハードウェアモジュールへ二次電力を供給し、かつ、当該一次電力の瞬電の対策のための瞬電対策回路を有する二次電源と、を有する画像処理装置において用いられるコンピュータプログラムであって、
前記複数のコアのうちのいずれかに、前記一次電源からの前記一次電力の供給が停止した後、前記複数のコアのうちの前記メインメモリの全部分または一部分のスナップショットを生成する生成処理を実行するのに使用するコアの個数を、時間の経過とともに少なくなるように決定する決定処理を実行させ、
前記複数のコアのうちの、前記決定処理によって決定された前記個数のコアに、前記生成処理を実行させる、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを有するＣＰＵを備える画像処理装置におけるスナップショットの技術に関する。
【背景技術】
【０００２】
近年、「ＭＦＰ（Multi Function Peripherals）」または「画像形成装置」などと呼ばれる画像処理装置が普及している。この画像処理装置には、コピー、スキャン、ファックス、およびファイルサーバなど様々な機能が備わっている。
【０００３】
また、近年、オペレーティングシステムが起動した後の、メインメモリのスナップショットをｅＭＭＣ（embedded Multi Media Card）またはＳＳＤ（Solid State Drive）などのストレージに保存し、スナップショットを用いてオペレーティングシステムの起動の高速化を図る技術が普及している。このような起動は、一般に、「ワープ（Warp）起動」と呼ばれる。スナップショットは、「スナップショットイメージ」または「イメージ」などと呼ばれることもある。ワープ起動は、画像処理装置にも適用することができる。
【０００４】
ワープ起動には、主に次の２つの方法がある。１つ目の方法は、オペレーティングシステムが起動した直後のスナップショットをストレージに保存しておき、その後は毎回、このスナップショットを使用してオペレーティングシステムを起動する、というものである。
【０００５】
２つ目の方法は、主電源がオフにされるなどしてシャットダウンの指令が入力されるごとにスナップショットを生成しストレージに保存し、次回、このスナップショットを使用してオペレーティングシステムを起動する、というものである。「ハイバネーション」と呼ばれることがある。なお、一部の項目については初期値に戻してから、スナップショットを生成することがある。
【０００６】
１つ目の方法によると、スナップショットを一度生成し保存しておけば、その後は生成する必要がない。しかし、毎回、同じスナップショットが使用されるので、シャットダウンの直前の状態に戻すことができない。
【０００７】
２つ目の方法によると、シャットダウンの直前の状態に戻すことができる。しかし、シャットダウンのたびにスナップショットを生成しなければならないので、１つ目の方法よりも、シャットダウンを完了するのに時間が掛かる。
【０００８】
さらに、近年は、画像処理装置を構成するデバイス（ハードウェアモジュール）のうちの、ワープ起動を適用することができるデバイスが増えている。つまり、ワープ起動の適用の範囲が拡大されている。このように適用の範囲が拡大されたワープ起動は、「スーパワープ（Super Warp）起動」と呼ばれることがある。
【０００９】
スーパワープ起動によると、オペレーティングシステムを起動する時間をさらに短縮することができる。
【００１０】
ハイバネーションの方法として、次のような方法が提案されている。画像処理装置は、電源供給が停止するように操作者によって電源スイッチが操作された後に第１時間が経過すると、ＣＰＵがワーク領域として使用する主記憶メモリの記憶内容を２次記憶デバイスに退避させるハイバネーション処理を実行する。さらに、本画像処理装置は、第１時間が経過する前にハイバネーション処理と画像処理装置の終了処理とを完了させるために必要となる目標時間内に、ハイバネーション処理が完了する場合は、ハイバネーション処理が完了した後に終了処理を実行して電源供給を停止し、目標時間内にハイバネーション処理が完了しない場合は、ハイバネーション処理を中断させて、終了処理を実行して電源供給を停止する（特許文献１）。
【００１１】
また、近年、「マルチコアＣＰＵ」などと呼ばれる、複数のコアを有するＣＰＵ（Central Processing Unit）が普及している。各コアへ電力へ供給する方法として、次のような方法が提案されている。
【００１２】
マルチコア・プロセッサに電力を供するために、電力システムがそのプロセッサに接続される。プロセッサが電力システムから消費する電力が所定の閾値電力を超えるとき、電力システムは、プロセッサ・コアのうちの少なくとも１つを絞る。電力システムは、電力絞りを行うために、特定のコアによる命令発生速度を減少させ得るか、或いは特定のコアをクロック・ゲートし得る。電力システムは、プロセッサ回路が、時間の経過と共に、電力システムから受ける実出力の、予測出力電圧に比較した場合の変動に動的に応答し、そのような変動を修正する（特許文献２）。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１６−７６２４９号公報
【特許文献２】特開２０１０−５１５９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
画像処理装置がシングルコアＣＰＵを採用する場合は、従来、主電源のスイッチがオフにされた後、次のフェーズを経る。ＡＣ／ＤＣコンバータの、瞬電の対策のための回路が、少なくとも保証期間は、電力を各ハードウェアモジュールへ供給する。さらに、電力を供給し続けるが、徐々に電荷が抜けて電圧が垂下する。そして、一定の電圧を下回ると、各ハードウェアモジュールへの電力の供給の停止（切断）の処理が開始される。停止の処理が開始されるまでは、スナップショットを生成し保存する処理がＣＰＵによって実行され続けるが、停止の処理の開始後、スナップショットを生成し保存する処理が停止される。
【００１５】
画像処理装置がマルチコアＣＰＵを採用する場合は、スナップショットを生成し保存する処理を複数のコアが並列して実行する。この処理は、データの圧縮を伴うので、他の処理を実行する場合よりもコアによる電力の消費が大きい。
【００１６】
したがって、上述のフェーズを経ると、この処理を行う複数のコアへの電力の供給が集中して一定の電圧を下回ってしまうことがある。すると、スナップショットを生成し保存する処理も、期待していた時間よりも早期に停止してしまう。
【００１７】
本発明は、このような問題点に鑑み、複数のコアを有するＣＰＵを備える画像処理装置においてスナップショットを従来よりも確実に取得できるようにすることを、目的とする。
【課題を解決するための手段】
【００１８】
本発明の一形態に係る画像処理装置は、複数のコアを有するマルチコアＣＰＵと、前記マルチコアＣＰＵが使用するメインメモリと、前記メインメモリおよび前記マルチコアＣＰＵ以外の１つまたは複数のハードウェアモジュールと、一次電源から入力される電力である一次電力を変圧して前記マルチコアＣＰＵ、前記メインメモリ、および前記１つまたは複数のハードウェアモジュールへ二次電力を供給し、かつ、当該一次電力の瞬電の対策のための瞬電対策回路を有する二次電源と、前記一次電源からの前記一次電力の供給が停止した後、前記複数のコアのうちの前記メインメモリの全部分または一部分のスナップショットを生成する生成処理を実行するのに使用するコアの個数を、時間の経過とともに少なくなるように決定する、決定手段と、を有し、前記マルチコアＣＰＵは、前記複数のコアのうちの、前記決定手段によって決定された前記個数のコアによって前記生成処理を実行する。
【００１９】
本発明の他の一形態に係る画像処理装置は、複数のコアを有するマルチコアＣＰＵと、前記マルチコアＣＰＵが使用するメインメモリと、前記メインメモリおよび前記マルチコアＣＰＵ以外の１つまたは複数のハードウェアモジュールと、一次電源から入力される電力である一次電力を変圧して前記マルチコアＣＰＵ、前記メインメモリ、および前記１つまたは複数のハードウェアモジュールへ二次電力を供給し、かつ、当該一次電力の瞬電の対策のための瞬電対策回路を有する二次電源と、前記一次電源からの前記一次電力の供給が停止した後、前記複数のコアのうちの前記メインメモリの全部分または一部分のスナップショットを生成する生成処理を実行するのに使用するコアの個数を、前記瞬電対策回路の電圧が低いほど少なくなるように決定する、決定手段と、を有し、前記マルチコアＣＰＵは、前記複数のコアのうちの、前記決定手段によって決定された前記個数のコアによって前記生成処理を実行する。
【発明の効果】
【００２０】
本発明によると、複数のコアを有するＣＰＵを備える画像処理装置においてスナップショットを従来よりも確実に取得することができる。
【図面の簡単な説明】
【００２１】
【図１】画像形成装置および端末装置を有するネットワークの例を示す図である。
【図２】画像形成装置のハードウェア構成の例を示す図である。
【図３】メインメモリに設けられる記憶領域の例を示す図である。
【図４】シャットダウンプログラムによって実現される機能的構成の例を示す図である。
【図５】最大コア数決定処理の流れの例を説明するフローチャートである。
【図６】スナップショット生成処理の流れの例を説明するフローチャートである。
【図７】ファイル保存処理の流れの例を説明するフローチャートである。
【図８】スナップ対象領域の例を示す図である。
【図９】最大コア数および各コアの動作それぞれの遷移の例を示す図である。
【図１０】起動プログラムによって実現される機能的構成の例を示す図である。
【図１１】画像形成装置における電源オフの際の全体的な処理の流れの例を説明するフローチャートである。
【図１２】画像形成装置における電源オンの際の全体的な処理の流れの例を説明するフローチャートである。
【図１３】各ハードウェアモジュールの優先度レベルの例を示す図である。
【図１４】最大コア数および各コアの動作それぞれの遷移の例を示す図である。
【図１５】最大コア数決定処理の流れの例を説明するフローチャートである。
【図１６】スナップ対象領域の例を示す図である。
【図１７】最大コア数および各コアの動作それぞれの遷移の例を示す図である。
【図１８】最大コア数および各コアの動作それぞれの遷移の例を示す図である。
【発明を実施するための形態】
【００２２】
図１は、画像形成装置１および端末装置２を有するネットワークの例を示す図である。図２は、画像形成装置１のハードウェア構成の例を示す図である。
【００２３】
図１に示す画像形成装置１は、コピー、ＰＣプリント、ファックス、スキャン、およびボックスなどの機能を集約した装置である。一般に、「複合機」または「ＭＦＰ（Multi Function Peripherals）」などと呼ばれることがある。画像形成装置１は、いわゆるＬＡＮ（Local Area Network）回線を介して端末装置２と通信することができる。端末装置２として、パーソナルコンピュータ、タブレットコンピュータ、またはスマートフォンなどが用いられる。
【００２４】
ＰＣプリント機能は、端末装置２から受信した画像データに基づいて画像を用紙に印刷する機能である。「ネットワークプリンティング」または「ネットワークプリント」などと呼ばれることもある。
【００２５】
ボックス機能は、ユーザごとに「ボックス」または「パーソナルボックス」などと呼ばれる記憶領域を与えておき、各ユーザが自分の記憶領域によって画像データなどを保存し管理するための機能である。グループごとにボックスを設けておき、グループのメンバで共用することもできる。ボックスは、パーソナルコンピュータにおける「フォルダ」または「ディレクトリ」に相当する。
【００２６】
画像形成装置１は、図２に示すように、ＣＰＵ（Central Processing Unit）１０ａ、メインメモリ１０ｂ、ＮＶ−ＲＡＭ（Non Volatile RAM）１０ｃ、補助記憶装置１０ｄ、ｅＭＭＣ（embedded Multi Media Card）１０ｅ、画像描画回路１０ｆ、タッチパネルディスプレイ１０ｇ、操作キーパネル１０ｈ、ＮＩＣ（Network Interface Card）１０ｉ、モデム１０ｊ、スキャンユニット１０ｋ、画像処理回路１０ｍ、プリントユニット１０ｎ、認証装置１０ｐ、音声出力回路１０ｑ、入出力インタフェース１０ｒ、タイマ１０ｓ、ＡＣ／ＤＣ（Alternating Current/Direct Current）コンバータ１０ｕ、電源スイッチ１０ｗ、および電源制御部１０ｙなどのハードウェアモジュールによって構成される。
【００２７】
画像描画回路１０ｆは、グラフィックボードに相当する回路であって、タッチパネルディスプレイ１０ｇに表示させる画面の信号（いわゆる映像信号）を画像データに基づいて生成し、タッチパネルディスプレイ１０ｇへ送る。
【００２８】
タッチパネルディスプレイ１０ｇは、ユーザに対するメッセージを示す画面、ユーザがコマンドまたは情報を入力するための画面、およびＣＰＵ１０ａが実行した処理の結果を示す画面などを、画像描画回路１０ｆからの映像信号を用いて表示する。また、タッチパネルディスプレイ１０ｇは、タッチされた位置を示す信号をＣＰＵ１０ａへ送る。
【００２９】
操作キーパネル１０ｈは、いわゆるハードウェアキーボードであって、テンキー、スタートキー、ストップキー、およびファンクションキーなどによって構成される。
【００３０】
ＮＩＣ１０ｉは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）などのプロトコルで他の装置との通信を行う。
【００３１】
モデム１０ｊは、ファックス端末との間でＧ３などのプロトコルで画像データをやり取りする。
【００３２】
スキャンユニット１０ｋは、プラテンガラスの上にセットされたシートに記されている画像を読み取って画像データを生成する。
【００３３】
画像処理回路１０ｍは、スキャンユニット１０ｋによって読み取られた画像を、目的などに合わせて適宜、補正するＡＳＩＣ（Application Specific Integrated Circuit）である。
【００３４】
プリントユニット１０ｎは、スキャンユニット１０ｋによって読み取られ、画像処理回路１０ｍによって適宜補正された画像のほか、ＮＩＣ１０ｉまたはモデム１０ｊによって他の装置から受信した画像を用紙に印刷する。
【００３５】
認証装置１０ｐは、ユーザを識別する識別情報を入力しユーザを認証する装置である。識別情報として、ユーザの生体の情報、例えば、指紋、掌の静脈のパターン、または虹彩などが入力される。または、ユーザが携帯するカードからユーザのＩＤ（identification）を入力してもよい。識別情報の入力を認証装置１０ｐが行うが、認証はＣＰＵ１０ａに実行させてもよい。
【００３６】
音声出力回路１０ｑは、いわゆる音声合成ＩＣであって、タッチパネルディスプレイ１０ｇまたは操作キーパネル１０ｈが操作された際の音（タッチ音）、ユーザへ警告するための警告音、および処理が完了したことを知らせる完了音などを出力する。
【００３７】
入出力インタフェース１０ｒは、周辺機器との間でデータをやり取りするための装置である。以下、入出力インタフェース１０ｒとしてＵＳＢ（Universal Serial Bus）ボードが用いられる場合を例に説明する。タイマ１０ｓは、ＣＰＵ１０ａからの指令に応じて時間を計る。
【００３８】
ＡＣ／ＤＣコンバータ１０ｕは、一次電電である商用電源から供給される電力を交流から直流に変換し、各ハードウェアモジュールへ電力を共有する。つまり、ＡＣ／ＤＣコンバータ１０ｕは、二次電源である。
【００３９】
電源スイッチ１０ｗは、画像形成装置１の電源をオンにしたりオフにしたりするためのスイッチである。電源スイッチ１０ｗは、商用電源とＡＣ／ＤＣコンバータ１０ｕとの間に配置されている。電源スイッチ１０ｗがオンにされると、商用電源とＡＣ／ＤＣコンバータ１０ｕとが接続され、商用電源からＡＣ／ＤＣコンバータ１０ｕへの電力の供給が開始される。そして、ＡＣ／ＤＣコンバータ１０ｕによって各ハードウェアモジュールへ直流の電力が供給され始める。電源スイッチ１０ｗをオフにされると、商用電源とＡＣ／ＤＣコンバータ１０ｕとが切断され、商用電源からＡＣ／ＤＣコンバータ１０ｕへの電力の供給が停止される。
【００４０】
電源制御部１０ｙは、ＣＰＵ１０ａからの指令に従って、ＡＣ／ＤＣコンバータ１０ｕによって得られた直流の電力を上述の各ハードウェアモジュールへ供給する。ハードウェアモジュールごとに電圧を変えて電力を供給することができる。例えば、各ハードウェアモジュールのうちのＣＰＵ１０ａ、メインメモリ１０ｂ、ＮＶ−ＲＡＭ１０ｃ、補助記憶装置１０ｄ、ｅＭＭＣ１０ｅ、タッチパネルディスプレイ１０ｇ、操作キーパネル１０ｈ、画像処理回路１０ｍ、認証装置１０ｐ、音声出力回路１０ｑ、およびタイマ１０ｓへ５．１Ｖの電圧で電力を供給するが、省電力モードに切り換わる際に、補助記憶装置１０ｄおよびタッチパネルディスプレイ１０ｇなど一部のハードウェアモジュールへは５．１Ｖよりも電圧を下げて電力を供給する。
【００４１】
また、電源制御部１０ｙは、各ハードウェアモジュールへの電力の供給を個別に開始したり停止したりすることができる。
【００４２】
さらに、電源制御部１０ｙは、ＡＣ／ＤＣコンバータ１０ｕから出力される電流の電圧を監視し、ＣＰＵ１０ａから問合せがあると、電圧をＣＰＵ１０ａへ回答する。
【００４３】
ＮＶ−ＲＡＭ１０ｃまたは補助記憶装置１０ｄには、起動プログラム１３Ｐが記憶されている。起動プログラム１３Ｐは、オペレーティングシステムを起動するためのプログラムである。
【００４４】
さらに、補助記憶装置１０ｄには、シャットダウンプログラム１４Ｐが記憶されている。シャットダウンプログラム１４Ｐは、画像形成装置１の電源（電源スイッチ１０ｗ）がオフになった際にオペレーティングシステムをシャットダウンするためのプログラムである。
【００４５】
ｅＭＭＣ１０ｅは、ＮＡＮＤ型のフラッシュメモリであって、プログラムおよびデータのほかスナップショットのデータなどが記憶される。
【００４６】
ＮＶ−ＲＡＭ１０ｃ、補助記憶装置１０ｄ、またはｅＭＭＣ１０ｅに記憶されているプログラムは、必要に応じてメインメモリ１０ｂにロードされ、ＣＰＵ１０ａによって実行される。
【００４７】
メインメモリ１０ｂとして、ＤＲＡＭ（Dynamic Random Access Memory）またはＳＲＡＭ（Static Random Access Memory）などの揮発性メモリが用いられる。補助記憶装置１０ｄとして、ハードディスクまたはＳＳＤ（Solid State Drive）などの大容量のストレージが用いられる。
【００４８】
また、補助記憶装置１０ｄは、仮想メモリとしても用いられる。つまり、メインメモリ１０ｂに記憶しきれなくなったデータ（例えば、画像データ）を一時的に記憶する。
【００４９】
メインメモリ１０ｂは、主に画像形成装置１のメインメモリとして使用されるＲＡＭである。ＮＶ−ＲＡＭ１０ｃは、不揮発性のメモリであって、起動用のプログラムなどが主に記憶されている。
【００５０】
ＣＰＵ１０ａは、複数のコアを有するＣＰＵである。つまり、マルチコアＣＰＵである。マルチコアＣＰＵは、「マルチコアプロセッサ」と呼ばれることもある。以下、ＣＰＵ１０ａとして、４つのコアを有するマルチコアＣＰＵが用いられる場合を例に説明する。
【００５１】
画像形成装置１において、電源がオンになると、ＢＩＯＳ（Basic Input/Output System）が起動する。そして、ＢＩＯＳによって、オペレーティングシステムを起動するためのプログラムとして起動プログラム１３ＰがＣＰＵ１０ａのいずれか１つまたは複数のコアによって実行される。起動プログラム１３Ｐによる処理については、後述する。
【００５２】
オペレーティングシステムの起動後、シャットダウンプログラム１４Ｐが起動され、メインメモリ１０ｂに常駐する。ユーザは、上述のコピーなどの機能を使用することができる。その後、電源スイッチ１０ｗをオフにする操作が行われると、シャットダウンプログラム１４Ｐによる処理が開始される。
【００５３】
以下、起動プログラム１３Ｐおよびシャットダウンプログラム１４Ｐそれぞれによる処理を、画像形成装置１においてスナップショットを使用せずにオペレーティングシステムが起動し、電源スイッチ１０ｗがオフにされ、そして、電源がオンにされた場合を例に説明する。
【００５４】
〔電源がオフにされた際の処理〕
図３は、メインメモリ１０ｂに設けられる記憶領域の例を示す図である。図４は、シャットダウンプログラム１４Ｐによって実現される機能的構成の例を示す図である。図５は、最大コア数決定処理の流れの例を説明するフローチャートである。図６は、スナップショット生成処理の流れの例を説明するフローチャートである。図７は、ファイル保存処理の流れの例を説明するフローチャートである。図８は、スナップ対象領域６Ｓの例を示す図である。図９は、最大コア数Ｃｍａｘおよび各コアの動作それぞれの遷移の例を示す図である。
【００５５】
オペレーティングシステムの起動後、画像形成装置１は、種々のハードウェアモジュールによって種々の処理を実行する。例えば、スキャンユニット１０ｋおよびプリントユニット１０ｎなどによってコピーの処理を実行する。または、モデム１０ｊおよびプリントユニット１０ｎなどによってファックスの受信の処理を実行する。
【００５６】
よって、これらのハードウェアモジュールの一部または全部が動作えであったり、アイドリングの状態であったりする。
【００５７】
また、メインメモリ１０ｂには、図３に示すように、オペレーティングシステム領域６Ａおよび複数のデバイス領域６Ｂが確保される。
【００５８】
オペレーティングシステム領域６Ａには、オペレーティングシステムが管理する種々の事項の設定値（設定変数）が記憶される。デバイス領域６Ｂは、ハードウェアモジュールごとに確保され、ハードウェアモジュールごとの種々の事項の設定値が格納される。これらの設定値は、ユーザが画像形成装置１を操作したり、画像形成装置１が処理を実行したりするごとに、適宜、変更される。
【００５９】
さらに、メインメモリ１０ｂは、共有バッファ６Ｆとしても用いられる。共有バッファ６Ｆは、後述するスナップショット５Ｅを一時的に記憶するためのバッファである。
【００６０】
ユーザが電源スイッチ１０ｗを操作して電源をオフにすると、上述の通り、商用電源からＡＣ／ＤＣコンバータ１０ｕへの電力の供給が停止する。
【００６１】
ところで、ＡＣ／ＤＣコンバータ１０ｕには、瞬電（瞬断、瞬停）の対策のための回路（以下、「瞬電対策回路」と記載する。）が設けられている。瞬電対策回路は、コンデンサおよびコイルなどによって構成され、商用電源からの電力の供給が止まっても、各ハードウェアモジュールに影響が及ばないように少なくとも保証時間Ｔｈ、各ハードウェアモジュールへ一定の大きさの電力を供給することができる。保証時間Ｔｈは、数十ミリ秒ないし数百ミリ秒程度の時間である。以下、保証時間Ｔｈが４０ミリ秒である場合を例に説明する。
【００６２】
電源スイッチ１０ｗは、オフにされると、オフにされたことを示すオフ信号５ＡをＣＰＵ１０ａへ送信する。なお、ＡＣ／ＤＣコンバータ１０ｕが、商用電源からの電力の供給が停止されたことを検知した際に、オフ信号５ＡをＣＰＵ１０ａへ送信してもよい。
【００６３】
ＣＰＵ１０ａがオフ信号５Ａを受信すると、オペレーティングシステムをシャットダウンするための処理がシャットダウンプログラム１４Ｐに基づいて次のように実行される。
【００６４】
シャットダウンプログラム１４Ｐによると、図４に示す設定対象リスト記憶部１４１、初期化処理部１４２、終了デバイスリスト生成部１４３、最大コア数決定部１４５、スナップショット取得部１４６、およびスナップショット保存部１４７などが画像形成装置１に実現される。
【００６５】
設定対象リスト記憶部１４１には、設定対象リスト５Ｂが記憶されている。設定対象リスト５Ｂには、画像形成装置１のハードウェアモジュールのうちのオペレーティングシステムの起動の際に初期設定を必要とするものが示されている。「初期設定」は、例えば環境設定であって、種々の項目それぞれの条件（設定値）を調整する処理である。
【００６６】
初期化処理部１４２は、ハードウェアモジュールの初期化のための処理を次のように実行する。
【００６７】
初期化処理部１４２は、オペレーティングシステムのシャットダウンの準備を行うように各ハードウェアモジュールへ指令する。
【００６８】
すると、各ハードウェアモジュールは、電源の供給が停止してもよい状態にするための準備処理を行う。例えば、現在、処理を実行中であれば、それを終了する。または、保存すべきデータが自らのメモリに記憶されていれば、それを所定の保存場所へ保存する。そして、準備処理が完了したら、終了完了データ５ＣをＣＰＵ１０ａおよびＡＣ／ＤＣコンバータ１０ｕへ送信することによって、準備処理が完了した旨をＣＰＵ１０ａおよびＡＣ／ＤＣコンバータ１０ｕへ通知する。すると、ＡＣ／ＤＣコンバータ１０ｕは、終了完了データ５Ｃの送信元であるハードウェアモジュールへの電力の供給を終了する。
【００６９】
さらに、初期化処理部１４２は、設定対象リスト記憶部１４１から設定対象リスト５Ｂを読み出す。そして、設定対象リスト５Ｂに示される各ハードウェアモジュールの各項目について、次回にオペレーティングシステムを起動した際に好ましい値（条件）が設定されるように、初期設定を行う。
【００７０】
例えば、オペレーティングシステムを起動するごとに、毎回、予め決められた値（デフォルト値）が設定される項目については、初期化処理部１４２は、設定値をデフォルト値に変更する。または、オペレーティングシステムをシャットダウンする際の状態を次回の起動の際にも引き継ぐ項目については、初期化処理部１４２は、設定値を変更せずに残しておく。
【００７１】
なお、入出力インタフェース１０ｒについては、周辺機器が接続されている場合にのみ、初期化のための処理を行えばよい。この場合は、その周辺機器の初期化のための処理をも行ってもよい。また、初期化処理部１４２は、オペレーティングシステムについても初期設定を行う。
【００７２】
終了デバイスリスト生成部１４３は、終了デバイスリスト５Ｄを生成する。終了デバイスリスト５Ｄには、設定対象リスト５Ｂに示されるハードウェアモジュールのうちの、次の条件＿１および条件＿２の両方を満たすハードウェアモジュールが示される。
条件＿１：終了完了データ５ＣをＣＰＵ１０ａへ送信した。
条件＿２：初期設定が初期化処理部１４２によって行われた。
【００７３】
具体的には、終了デバイスリスト生成部１４３は、オフ信号５Ａが送信されてきたら、終了デバイスリスト５Ｄを生成し、ｅＭＭＣ１０ｅの所定のディレクトリに保存させる。この時点では、終了デバイスリスト５Ｄには、いずれのハードウェアモジュールも示されない。そして、あるハードウェアモジュールが条件＿１および条件＿２の両方を満たした時点で、そのハードウェアモジュールを終了デバイスリスト５Ｄへ追記する。
【００７４】
または、終了デバイスリスト生成部１４３は、オフ信号５Ａが送信されてきてから所定の時間が経過して時点で条件＿１および条件＿２の両方を満たすハードウェアモジュールを示すデータを終了デバイスリスト５Ｄとして生成し、ｅＭＭＣ１０ｅの所定のディレクトリに保存させてもよい。
【００７５】
なお、条件＿２を満たしたか否かに関わらず、条件＿１を満たしたハードウェアモジュールが終了デバイスリスト５Ｄに示されるようにしてもよい。または、条件＿１を満たしたか否かに関わらず、条件＿２を満たしたハードウェアモジュールが終了デバイスリスト５Ｄに示されるようにしてもよい。
【００７６】
最大コア数決定部１４５は、オフ信号５Ａが受信されると、最大コア数Ｃｍａｘを決定する。最大コア数Ｃｍａｘは、ＣＰＵ１０ａを構成する４つのコアのうちスナップショットのデータを圧縮し共有バッファ６Ｆに書き込む処理に同時に使用することができるコアの個数の最大値である。例えば、最大コア数Ｃｍａｘが「３」であれば、この処理のために、ＣＰＵ１０ａのコアを３つまで同時に使用することができることを、意味する。
【００７７】
最大コア数Ｃｍａｘは、定期的に決定される。ここで、最大コア数Ｃｍａｘの決定の仕方を、図５を参照しながら説明する。
【００７８】
最大コア数決定部１４５は、オフ信号５Ａを受信する前に、予め、最大コア数Ｃｍａｘとして所定の値を設定し（図５の＃７０１）、経過時間Ｔｗとして「０秒」を設定しておく（＃７０２）。ただし、所定の値は、２以上でありかつＣＰＵ１０ａのコア数以下の値である。「経過時間Ｔｗ」は、オフ信号５Ａを受信し決定の処理（＃７０３以降の処理）を開始してから経過した時間である。
【００７９】
最大コア数決定部１４５は、オフ信号５Ａが受信されると（＃７０３でＹｅｓ）、ＡＣ／ＤＣコンバータ１０ｕに保証時間Ｔｈがあれば（＃７０４でＹｅｓ）、保証時間Ｔｈが経過するのを待つ（＃７０５）。保証時間Ｔｈが経過したら、経過時間Ｔｗに保証時間Ｔｈを加え（＃７０６）、そして、ステップ＃７０７へ進む。保証時間Ｔｈがなければ、つまり、瞬電に対応することができない場合は（＃７０４でＮｏ）、直ちにステップ＃７０７へ進む。
【００８０】
最大コア数決定部１４５は、タイマＴｍに所定の時間をセットし（＃７０７）、カウントダウンを開始する（＃７０８）。本実施形態では、ステップ＃７０７において１００ミリ秒をセットする。
【００８１】
タイマＴｍが０ミリ秒になったら、つまり、ステップ＃７０８の時点から所定の時間つまり１００ミリ秒が経過したら（＃７０９でＹｅｓ）、最大コア数決定部１４５は、経過時間Ｔｗに所定の時間つまり１００ミリ秒を加算する（＃７１０）。
【００８２】
そして、この時点で最大コア数Ｃｍａｘが「２」以上であれば（＃７１１でＹｅｓ）、最大コア数Ｃｍａｘを「１」だけ減らす（＃７１２）。
【００８３】
最大コア数決定部１４５は、ステップ＃７０４〜＃７１２の処理を、次に説明するスナップショット取得部１４６による処理が継続している間（＃７１３でＹｅｓ）、繰り返し実行する。ただし、最大コア数Ｃｍａｘが「１」になったら、ステップ＃７０４〜＃７１１の処理を終了してもよい。
【００８４】
スナップショット取得部１４６は、オフ信号５Ａが受信されると、メインメモリ１０ｂの全部分または一部の領域のスナップショットを取得する処理を行う。
【００８５】
本実施形態では、スナップショット取得部１４６は、オペレーティングシステム領域６Ａおよび終了デバイスリスト５Ｄに示されるハードウェアモジュールそれぞれのデバイス領域６Ｂをスナップ対象領域６Ｓとして選出し、各スナップ対象領域６Ｓのスナップショット５Ｅを取得する。
【００８６】
スナップショット５Ｅを取得する処理は、ＣＰＵ１０ａの４つのコアのうちの複数によって並列的に実行され得る。ここで、この処理を、図６を参照しながら説明する。
【００８７】
スナップショット取得部１４６は、各スナップ対象領域６Ｓを、所定のサイズのブロックに分割する（＃７２１）。所定のサイズは、タイマＴｍにセットされる時間（本例では、１００ミリ秒）にＣＰＵ１０ａの１つのコアが圧縮することができるデータのサイズである。
【００８８】
例えば、ある１つのデバイス領域６Ｂのサイズが「１７」であり、所定のサイズが「５」である場合は、そのデバイス領域６Ｂが、サイズが「５」である３つのブロックおよびサイズが「２」である１つのブロックに分割される。
【００８９】
スナップショット取得部１４６は、最大コア数決定部１４５が最後に決定した最大コア数Ｃｍａｘ（つまり、最新の最大コア数Ｃｍａｘ）を最大コア数決定部１４５から取得する（＃７２２）。
【００９０】
スナップショット取得部１４６は、スナップショット５Ｅを未だ生成していないブロックのうちのステップ＃７２２で取得した最大コア数Ｃｍａｘのブロックを選出する（＃７２３）。
【００９１】
そして、スナップショット取得部１４６は、選出したブロックそれぞれのスナップショット５Ｅを、ＣＰＵ１０ａの４つのコアのうちの最大コア数Ｃｍａｘのコアによって分担して生成し（＃７２４）、共有バッファ６Ｆに記憶させる（＃７２５）。なお、あるブロックのスナップショット５Ｅは、例えば、そのブロックの各番地（アドレス）の現在の値を並べたデータを圧縮することによって、生成される。
【００９２】
例えば、最大コア数Ｃｍａｘが「４」である場合は、スナップショット取得部１４６は、４つのブロックを選出する。そして、これらのブロックそれぞれのスナップショット５Ｅを、４つのコアによって１つずつ生成し、共有バッファ６Ｆに記憶させる。
【００９３】
スナップショット取得部１４６は、スナップショット５Ｅを未だ生成していないブロックが残っていれば（＃７２６でＹｅｓ）、ステップ＃７２２に戻って、これらのブロックのうちの最新の最大コア数Ｃｍａｘのブロックのスナップショット５Ｅを生成する。なお、ＡＣ／ＤＣコンバータ１０ｕの電圧が所定の水準（ハードウェアモジュールへ必要な電力を供給できない水準）を下回った場合に、スナップショット５Ｅを生成する処理を終了してもよい。
【００９４】
スナップショット保存部１４７は、スナップショットファイル５ＦをｅＭＭＣ１０ｅに保存する処理を、図７に示す手順で実行する。
【００９５】
スナップショット保存部１４７は、あるスナップ対象領域６Ｓのすべてのブロックのスナップショット５Ｅが共有バッファ６Ｆに記憶されるごとに（＃７３１でＹｅｓ）、これらのスナップショット５Ｅを１つに併合することによってスナップショットファイル５Ｆを生成し（＃７３２）、そのスナップ対象領域６Ｓに係るハードウェアモジュールと対応付けてｅＭＭＣ１０ｅの所定の領域に保存する（＃７３３）。保存後、これらのスナップショット５Ｅは共有バッファ６Ｆから削除される。
【００９６】
スナップショット５Ｅが生成されていないブロックが残っていれば（＃７３４でＹｅｓ）、ステップ＃７３１に戻る。
【００９７】
このようにして、スナップ対象領域６Ｓごとのスナップショットファイル５Ｆが生成され、ｅＭＭＣ１０ｅに記憶される。
【００９８】
ここで、図８のように、３つのオペレーティングシステム領域６Ａまたはデバイス領域６Ｂがスナップ対象領域６Ｓとして選出された場合を例に、ＣＰＵ１０ａの４つのコアそれぞれによるスナップショット５Ｅの生成の処理を、図９を参照しながら説明する。
【００９９】
以下、各スナップ対象領域６Ｓを「スナップ対象領域６Ｓ１」、「スナップ対象領域６Ｓ２」、および「スナップ対象領域６Ｓ３」と記載する。スナップ対象領域６Ｓ１、６Ｓ２、および６Ｓ３は、それぞれ、９個、３個、２個のブロックに分割されるものとする。スナップ対象領域６Ｓ１の各ブロックを「Ａ−１」、「Ａ−２」、…、「Ａ−９」と記載する。スナップ対象領域６Ｓ２の各ブロックを「Ｂ−１」、「Ｂ−２」、「Ｂ−３」と記載する。スナップ対象領域６Ｓ２の各ブロックを「Ｃ−１」、「Ｃ−２」と記載する。また、４つのコアそれぞれを「コア＿１」、「コア＿２」、「コア＿３」、および「コア＿４」と記載する。
【０１００】
最大コア数決定部１４５は、図５に示した通りの処理を実行することによって、図９に示すように、経過時間Ｔｗが０ミリ秒である時点において最大コア数Ｃｍａｘを「４」に決定する。経過時間Ｔｗが１４０ミリ秒である時点、２４０ミリ秒である時点、および３４０ミリ秒である時点において最大コア数Ｃｍａｘをそれぞれ「３」、「２」、「１」に決定する。その後は、さらに１００ミリ秒が経過するごとに最大コア数Ｃｍａｘを「１」に決定する。
【０１０１】
経過時間が０ミリ秒以上１４０ミリ秒未満である間は、上述の通り、最大コア数Ｃｍａｘが「４」である。そこで、この間に、コア＿１、コア＿２、コア＿３、およびコア＿４は、それぞれ、いずれかのスナップ対象領域６Ｓのブロックを１つずつ選出し、選出したブロックのスナップショット５Ｅを生成する。本例では、コア＿１、コア＿２、コア＿３、およびコア＿４は、それぞれブロックＡ−１、Ａ−２、Ａ−３、およびＡ−４それぞれのスナップショット５Ｅを生成する。
【０１０２】
これら４つのブロックのスナップショット５Ｅの生成中に、経過時間が１４０ミリ秒を過ぎる。そして、経過時間が２４０ミリ秒になるまでに生成が完了したら、この時点における最大コア数Ｃｍａｘが「３」なので、コア＿１、コア＿２、およびコア＿３が、スナップ対象領域６Ｓ１の残りのいずれかのブロックのスナップショット５Ｅを生成する。本例では、それぞれブロックＡ−４、Ａ−５、およびＡ−６のスナップショット５Ｅを生成する。
【０１０３】
これら３つのブロックのスナップショット５Ｅの生成中に、経過時間が２４０ミリ秒を過ぎる。そして、経過時間が３４０ミリ秒になるまでに生成が完了したら、この時点における最大コア数Ｃｍａｘが「２」なので、コア＿１およびコア＿２が、スナップ対象領域６Ｓ１の残りのいずれかのブロックのスナップショット５Ｅを生成する。本例では、それぞれブロックＡ−７およびＡ−８のスナップショット５Ｅを生成する。
【０１０４】
これら２つのブロックのスナップショット５Ｅの生成中に、経過時間が３４０ミリ秒を過ぎる。そして、経過時間が４４０ミリ秒になるまでに生成が完了したら、この時点における最大コア数Ｃｍａｘが「１」なので、コア＿１が、スナップ対象領域６Ｓ１の残りのいずれかのブロックのスナップショット５Ｅを生成する。本例では、ブロックＡ−９のスナップショット５Ｅを生成する。
【０１０５】
その後は最大コア数Ｃｍａｘが「１」なので、コア＿１が、残りのブロック（本例では、ブロックＢ−１、Ｂ−２、Ｂ−３、Ｃ−１、およびＣ−２それぞれのスナップショット５Ｅを順次、生成する。
【０１０６】
ブロックＡ−１ないしＡ−９それぞれのスナップショット５Ｅが生成されると、スナップ対象領域６Ｓ１のすべてのブロックのスナップショット５Ｅが揃う。そこで、スナップショット保存部１４７は、これらのスナップショット５Ｅを纏めることによってスナップ対象領域６Ｓ１のスナップショットファイル５Ｆを生成する。そして、スナップショットファイル５ＦのｅＭＭＣ１０ｅの所定の領域に保存する。同様に、ブロックＢ−１ないしＢ−３それぞれのスナップショット５Ｅが生成されると、スナップ対象領域６Ｓ２のスナップショットファイル５Ｆを生成し、ｅＭＭＣ１０ｅの所定の領域に保存する。ブロックＣ−１およびＣ−２それぞれのスナップショット５Ｅが生成されると、スナップ対象領域６Ｓ３のスナップショットファイル５Ｆを生成し、ｅＭＭＣ１０ｅの所定の領域に保存する。
【０１０７】
ＡＣ／ＤＣコンバータ１０ｕからＣＰＵ１０ａなどへの電力の供給が不足しまたは停止し、３つのスナップ対象領域６Ｓのうちの一部またはすべてのスナップショットファイル５Ｆを生成することができない場合がある。起動プログラム１３Ｐによると、このような場合においても、適宜、ワープ（Warp）起動の機能を部分的に用いてオペレーティングシステムを起動することができる。
【０１０８】
以下、起動プログラム１３Ｐによるオペレーティングシステムの起動の処理について、説明する。
【０１０９】
〔電源がオンにされた際の処理〕
図１０は、起動プログラム１３Ｐによって実現される機能的構成の例を示す図である。
【０１１０】
上述の通り、画像形成装置１において、電源スイッチ１０ｗが操作されて電源がオンになると、ＢＩＯＳが起動し、その後、起動プログラム１３Ｐが実行される。起動プログラム１３Ｐによると、図１０に示すスナップショット有無確認部１３１、スナップショット読出部１３２、スナップショット展開部１３３、および通常起動処理部１３４などが実現される。
【０１１１】
スナップショット有無確認部１３１は、起動プログラム１３Ｐの実行の開始後、ｅＭＭＣ１０ｅから終了デバイスリスト５Ｄを読み出し、終了デバイスリスト５Ｄに示される各ハードウェアモジュールのスナップショットファイル５ＦがｅＭＭＣ１０ｅに保存されているか否かをチェックする。
【０１１２】
スナップショット読出部１３２、スナップショット展開部１３３、および通常起動処理部１３４は、スナップショットファイル５Ｆの有無（保存されているか否か）に応じて次のように処理を行う。
【０１１３】
スナップショット読出部１３２は、スナップショットファイル５ＦがｅＭＭＣ１０ｅに保存されていれば、それをｅＭＭＣ１０ｅから読み出す。
【０１１４】
そして、スナップショット展開部１３３は、読み出されたスナップショットファイル５Ｆがオペレーティングシステムに対応するものであれば、そのスナップショットファイル５Ｆを伸張（解凍）し、メインメモリ１０ｂの中のオペレーティングシステム領域６Ａへ展開（ロード）する。
【０１１５】
一方、そのスナップショットファイル５Ｆがいずれかのハードウェアモジュールに対応するものであれば、スナップショット展開部１３３は、そのスナップショットファイル５Ｆを伸張し、メインメモリ１０ｂの中の、そのハードウェアモジュールのデバイス領域６Ｂへ展開する
このように、スナップショットファイル５Ｆが保存されているハードウェアモジュールについては、オペレーティングシステムの起動の際に、ハイバネーション機能が用いられる。
【０１１６】
通常起動処理部１３４は、スナップショットファイル５Ｆが保存されていないハードウェアモジュールについては、ハイバネーション機能を用いることなく、通常通りに初期設定などの処理を行う。
【０１１７】
図１１は、画像形成装置１における電源オフの際の全体的な処理の流れの例を説明するフローチャートである。図１２は、画像形成装置１における電源オンの際の全体的な処理の流れの例を説明するフローチャートである。
【０１１８】
次に、電源をオフにされた際および電源をオンにされた際それぞれの全体的な処理の流れの例を、フローチャートを参照しながら説明する。
【０１１９】
画像形成装置１は、オペレーティングシステムの起動後、シャットダウンプログラム１４Ｐを起動する。そして、ＣＰＵ１０ａが１つまたは複数のコアによって、図１１に示すように、シャットダウンプログラム１４Ｐに基づいて処理を実行する。
【０１２０】
ＣＰＵ１０ａは、最大コア数Ｃｍａｘを決定する処理を開始する（図１１の＃７４１）。この処理の手順は、図５で説明した通りである。
【０１２１】
電源スイッチ１０ｗがオフにされると（＃７４２でＹｅｓ）、ＣＰＵ１０ａは、設定対象リスト５Ｂに基づいて、シャットダウンの準備を行うように各ハードウェアモジュールへ指令するとともにオペレーティングシステム領域６Ａおよびデバイス領域６Ｂの初期設定を行う（＃７４３、＃７４４）。
【０１２２】
ＣＰＵ１０ａは、初期設定などが完了したハードウェアモジュールを示すリストつまり終了デバイスリスト５Ｄを生成し、ｅＭＭＣ１０ｅに保存する（＃７４５）。そして、スナップ対象領域６Ｓを決定し、スナップ対象領域６Ｓの各ブロックのスナップショット５Ｅを生成し共有バッファ６Ｆへ一時的に記憶させる（＃７４６）。スナップショット５Ｅを生成する手順は、前に図６で説明した通りである。
【０１２３】
ＣＰＵ１０ａは、１つのスナップ対象領域６Ｓのすべてのブロックのスナップショット５Ｅが共有バッファ６Ｆに保存されるごとに、これらを纏めてファイル化することによってスナップショットファイル５Ｆを生成し、ｅＭＭＣ１０ｅに保存する（＃７４７）。保存の処理については、図７で説明した通りである。
【０１２４】
図５で説明した通り、電源スイッチ１０ｗをオフにされると（＃７０３でＹｅｓ）、ＣＰＵ１０ａは、ステップ＃７０４〜＃７１１の処理を開始する。ＣＰＵ１０ａは、この処理のほか、ステップ＃７０４〜＃７１１の処理、ステップ＃７４１の処理、ステップ＃７４３〜＃７４６の処理、およびステップ＃７４７の処理を並行して実行する。
【０１２５】
電源スイッチ１０ｗがオンにされると、ＣＰＵ１０ａは、図１２に示すように、起動プログラム１３Ｐに基づいて処理を実行する。
【０１２６】
ＣＰＵ１０ａは、ｅＭＭＣ１０ｅから終了デバイスリスト５Ｄを読み出し（図１２の＃７５１）、ハイバネーションの機能による初期化が可能であるハードウェアモジュールおよび可能でないハードウェアモジュールを特定する（＃７５２）。
【０１２７】
ＣＰＵ１０ａは、可能であるハードウェアモジュールについては（＃７５３でＹｅｓ）、そのハードウェアモジュールのスナップショットファイル５ＦをｅＭＭＣ１０ｅから読み出し（＃７５４）、伸張してメインメモリ１０ｂへ展開（ロード）する（＃７５５）。つまり、ワープ起動のように、そのハードウェアモジュールのための設定を行う。
【０１２８】
一方、可能でないハードウェアモジュールについては（＃７５６でＹｅｓ）、通常通り、つまり、補助記憶装置１０ｄから設定値などを読み出してメインメモリ１０ｂへロードするなどして、そのハードウェアモジュールのための設定を行う（＃７５７）。
【０１２９】
本実施形態によると、複数のコアを有するＣＰＵを備える画像処理装置においてスナップショットを従来よりも確実に取得することができる。
【０１３０】
図１３は、各ハードウェアモジュールの優先度レベルの例を示す図である。図１４は、最大コア数Ｃｍａｘおよび各コアの動作それぞれの遷移の例を示す図である。図１５は、最大コア数決定処理の流れの例を説明するフローチャートである。図１６は、スナップ対象領域６Ｓの例を示す図である。図１７は、最大コア数Ｃｍａｘおよび各コアの動作それぞれの遷移の例を示す図である。図１８は、最大コア数Ｃｍａｘおよび各コアの動作それぞれの遷移の例を示す図である。
【０１３１】
本実施形態では、スナップショット取得部１４６は、スナップ対象領域６Ｓが複数ある場合に、どのスナップ対象領域６Ｓから優先的にスナップショット５Ｅを生成するのかの順番を特に決めなかった。しかし、予め順番を決めておいてもよい。
【０１３２】
例えば、図１３のように、ハードウェアモジュールごとに予め優先度レベルを決めておく。そして、スナップショット取得部１４６は、優先度レベルの高いハードウェアモジュールのスナップ対象領域６Ｓから順にスナップショット５Ｅを生成していく。なお、優先度レベルは、値が小さいものほど高い。
【０１３３】
図１３に示すように優先度レベルが決められており、図８に示すように３つのスナップ対象領域６Ｓ１、６Ｓ１、および６Ｓ３が選出され、かつ、スナップ対象領域６Ｓ１、６Ｓ１、および６Ｓ３それぞれが画像処理回路１０ｍのデバイス領域６Ｂ、補助記憶装置１０ｄ、および入出力インタフェース１０ｒである場合は、優先度レベルがスナップ対象領域６Ｓ１、６Ｓ３、および６Ｓ２の順に高い。よって、図１４に例示するようにスナップショット５Ｅが生成される。
【０１３４】
本実施形態では、最大コア数決定部１４５は、経過時間Ｔｗが増えるごとに、つまり、電源スイッチ１０ｗがオフにされてから時間が経過するとともに、最大コア数Ｃｍａｘを徐々に減らした。しかし、いずれかの特定のハードウェアモジュールへのＡＣ／ＤＣコンバータ１０ｕによる電力の供給が終了した際に、最大コア数Ｃｍａｘを増やしてもよい。または、電力の供給が終了したハードウェアモジュールの個数が所定の個数（例えば、３個、６個、９個、…）になるごとに、最大コア数Ｃｍａｘを増やしてもよい。
【０１３５】
または、最大コア数決定部１４５は、経過時間Ｔｗではなく、ＡＣ／ＤＣコンバータ１０ｕの瞬電対策回路の電圧（以下、「電源電圧Ｅｓ」と記載する。）に応じて最大コア数Ｃｍａｘを決定してもよい。
【０１３６】
この場合は、電源電圧Ｅｓを計測する電圧計を画像形成装置１に設けておく。そして、最大コア数決定部１４５は、例えば、図１５に示す手順で最大コア数Ｃｍａｘを決定する。
【０１３７】
最大コア数決定部１４５は、オフ信号５Ａを受信する前に、予め、最大コア数Ｃｍａｘとして所定の値Ｃａを設定しておく（図１５の＃７６２）。
【０１３８】
オフ信号５Ａが受信されると（＃７６３でＹｅｓ）、最大コア数決定部１４５は、タイマＴｍに所定の時間Ｔａをセットし（＃７６４）、カウントダウンを開始する（＃７６５）。
【０１３９】
タイマＴｍが０ミリ秒になったら、つまり、ステップ＃７６４の時点から所定の時間Ｔａが経過したら（＃７６６でＹｅｓ）、最大コア数決定部１４５は、電源電圧Ｅｓを電圧計に計測させる（＃７６７）。
【０１４０】
そして、電源電圧Ｅｓに応じて、最大コア数決定部１４５は、次のように最大コア数Ｃｍａｘを決定する。電源電圧Ｅｓが電圧Ｅ１以上であれば（＃７６８でＹｅｓ）、最大コア数Ｃｍａｘを「４」に決定する（＃７６９）。電圧Ｅ１未満でありかつ電圧Ｅ２以上であれば（＃７６８でＮｏ、＃７７０でＹｅｓ）、「３」に決定する（＃７７１）。電圧Ｅ２未満でありかつ電圧Ｅ３以上であれば（＃７７０でＮｏ、＃７７２でＹｅｓ）、「２」に決定する（＃７７３）。電圧Ｅ３未満であれば（＃７７２でＮｏ）、「１」に決定する（＃７７４）。ただし、電圧Ｅ１＞電圧Ｅ２＞電圧Ｅ３、である。
【０１４１】
最大コア数決定部１４５は、ステップ＃７６４〜＃７７４の処理を、スナップショット取得部１４６による処理が継続している間（＃７７５でＹｅｓ）、繰り返し実行する。
【０１４２】
上述の通り、オペレーティングシステムのシャットダウンのための処理中に、ＡＣ／ＤＣコンバータ１０ｕからいずれかのハードウェアモジュールへの電力の供給が終了する。すると、電源電圧Ｅｓが上がることがある。これに伴い、最大コア数Ｃｍａｘが増え、スナップショット５Ｅを生成するのに使用されるコアが増えることがある。
【０１４３】
ここで、電源電圧Ｅｓが上がる場合の、ＣＰＵ１０ａの４つのコアそれぞれによるスナップショット５Ｅの生成の処理を、以下の条件の下で実行される場合を例に、図９を参照しながら説明する。
【０１４４】
電圧Ｅ１、Ｅ２、およびＥ３は、それぞれ、５．０ボルト、４．８ボルト、および４．６ボルトである。所定の時間Ｔａは、保証時間Ｔｈである。よって、所定の時間Ｔａは、４０ミリ秒である。所定の値Ｃａは、「４」である。
【０１４５】
図１６のように、３つのオペレーティングシステム領域６Ａまたはデバイス領域６Ｂがスナップ対象領域６Ｓ（６Ｓ４、６Ｓ５、６Ｓ６）してと選出され、スナップ対象領域６Ｓ４、６Ｓ５、および６Ｓ６は、それぞれ１３個、３個、３個のブロックに分割される。スナップ対象領域６Ｓ４の各ブロックを「Ａ−１」、「Ａ−２」、…、「Ａ−１３」と記載する。スナップ対象領域６Ｓ５の各ブロックを「Ｂ−１」、「Ｂ−２」、「Ｂ−３」と記載する。スナップ対象領域６Ｓ６の各ブロックを「Ｃ−１」、「Ｃ−２」、「Ｃ−３」と記載する。
【０１４６】
所定の時間Ｔａが４０ミリ秒なので、電源電圧Ｅｓは、４０ミリ秒ごとに計測される。その結果は、図１７に示す通りである。２００ミリ秒目において、電源電圧Ｅｓが前回の計測値よりも上がっていることが分かる。
【０１４７】
このような条件において、図１５に示した手順で最大コア数決定部１４５が処理を実行し、スナップショット取得部１４６がスナップショット５Ｅを生成する処理を実行すると、図１７のように、最大コア数Ｃｍａｘが決定され、ＣＰＵ１０ａの各コアによって各ブロックのスナップショット５Ｅが生成される。
【０１４８】
このように、電源電圧Ｅｓが前回の計測値よりも上がったときにスナップショット５Ｅの生成のために使用されるコアが増えることが、ある。
【０１４９】
なお、電源電圧Ｅｓが前回の計測値よりも上がることがなければ、図１８のように、スナップショット５Ｅの生成のために使用されるコアが増えることはない。
【０１５０】
ＣＰＵ１０ａの４つのコアの中から、シャットダウンプログラム１４Ｐを実行するためのコアを１つまたは２つ、確保しておき、スナップショット５Ｅを取得する処理を残りのコアで行ってもよい。
【０１５１】
本実施形態では、４つのコアを有するマルチコアＣＰＵがＣＰＵ１０ａとして用いられる場合を例に説明したが、２つ、６つ、または８つのコアを有するマルチコアＣＰＵが用いられる場合にも、本発明を適用することができる。
【０１５２】
その他、画像形成装置１の全体または各部の構成、処理の内容、処理の順序、データの構成などは、本発明の趣旨に沿って適宜変更することができる。
【符号の説明】
【０１５３】
１０ａ  ＣＰＵ
１０ｂ  メインメモリ
１０ｕ  ＡＣ／ＤＣコンバータ
１４５  最大コア数決定部（決定手段）
５Ｅ  スナップショット
５Ｆ  スナップショットファイル
６Ａ  オペレーティングシステム領域
６Ｂ  デバイス領域
６Ｓ  スナップ対象領域
【図１】
2019028749.tif 000003
【図２】
2019028749.tif 000004
【図３】
2019028749.tif 000005
【図４】
2019028749.tif 000006
【図５】
2019028749.tif 000007
【図６】
2019028749.tif 000008
【図７】
2019028749.tif 000009
【図８】
2019028749.tif 000010
【図９】
2019028749.tif 000011
【図１０】
2019028749.tif 000012
【図１１】
2019028749.tif 000013
【図１２】
2019028749.tif 000014
【図１３】
2019028749.tif 000015
【図１４】
2019028749.tif 000016
【図１５】
2019028749.tif 000017
【図１６】
2019028749.tif 000018
【図１７】
2019028749.tif 000019
【図１８】
2019028749.tif 000020