(57)【要約】【課題】サスペンド状態であった機器を高速に復帰させることが可能な半導体装置を提供する。【解決手段】半導体装置１は、記憶部１０と、制御部２０とを有する。記憶部１０は、複数の実行状態データ１２を格納する。機器がサスペンド状態になる条件を満たす場合、制御部２０は、機器がサスペンド状態となるときの実行状態に基づいて、互いに異なる複数の実行状態データ１２を生成する。制御部２０は、生成された複数の実行状態データ１２を記憶部１０に格納する。その後、制御部２０は、機器の状態をサスペンド状態に遷移させる。復帰要求に応じて機器がサスペンド状態から復帰するとき、制御部２０は、復帰要求に応じた実行状態データ１２を記憶部１０から選択する。そして、制御部２０は、選択された実行状態データ１２に基づいて機器を復帰させる。【選択図】図１
2020177390.tif 000002
【特許請求の範囲】
【請求項１】
機器の実行状態を示す実行状態データを格納するように構成された記憶部と、
前記機器の動作を制御する制御部と
を有し、
前記機器がサスペンド状態になる条件を満たすとき、前記制御部は、前記機器がサスペンド状態となるときの実行状態に基づいて互いに異なる複数の前記実行状態データを生成し、生成された前記複数の実行状態データを前記記憶部に格納し、その後、前記機器の状態をサスペンド状態に遷移させ、
復帰要求に応じて前記機器がサスペンド状態から復帰するとき、前記制御部は、前記復帰要求に応じた前記実行状態データを前記記憶部から選択し、選択された前記実行状態データに基づいて前記機器を復帰させる
半導体装置。
【請求項２】
前記制御部は、前記機器がサスペンド状態となるときの実行状態を示す第１の実行状態データと、前記第１の実行状態データにおける実行状態から変更された実行状態を示す１つ以上の第２の実行状態データとを生成する
請求項１に記載の半導体装置。
【請求項３】
前記制御部は、予め定められた数の複数の前記実行状態データを生成する
請求項１に記載の半導体装置。
【請求項４】
前記制御部は、前記機器がサスペンド状態となるときの実行状態を示す第１の実行状態データと、前記第１の実行状態データにおける実行状態から変更された実行状態を示す１つ以上の第２の実行状態データとを生成して、前記第１の実行状態データと、前記第１の実行状態データと前記第２の実行状態データとの差分を示す差分データとを、前記記憶部に格納する
請求項１に記載の半導体装置。
【請求項５】
前記制御部は、物理アドレスと仮想アドレスとを変換するために使用されるメモリ管理ユニットを用いて、前記第２の実行状態データに対応する仮想アドレスと、前記記憶部において前記差分データが格納されたブロックに対応する物理アドレスとを対応付けたテーブルを、前記記憶部に格納する
請求項４に記載の半導体装置。
【請求項６】
前記制御部は、実行状態の復帰確率に応じて当該実行状態に対応する前記実行状態データそれぞれの優先度を生成し、優先度が高い前記実行状態データを先に生成する
請求項４に記載の半導体装置。
【請求項７】
前記制御部は、
演算処理装置と、
前記機器がサスペンド状態になるときの制御を行うように構成されたサスペンド制御部と
を有し、
前記機器がサスペンド状態になる条件を満たすとき、
前記演算処理装置は、複数の前記実行状態データを生成し、
前記サスペンド制御部は、生成された複数の前記実行状態データを前記記憶部に格納し、
前記演算処理装置は、前記機器をサスペンド状態に遷移させる
請求項１に記載の半導体装置。
【請求項８】
前記制御部は、
演算処理装置と、
前記サスペンド状態となった機器が復帰するときの制御を行うように構成された復帰制御部と
を有し、
前記機器がサスペンド状態から復帰するとき、
前記復帰制御部は、前記復帰要求を受け付けて前記復帰要求に応じた前記実行状態データを前記記憶部から選択し、
前記演算処理装置は、選択された前記実行状態データに基づいて前記機器を復帰させる
請求項１に記載の半導体装置。
【請求項９】
機器がサスペンド状態になる条件を満たすとき、前記機器がサスペンド状態となるときの実行状態に基づいて互いに異なる複数の実行状態データを生成し、生成された前記複数の実行状態データを記憶部に格納し、その後、前記機器の状態をサスペンド状態に遷移させ、
復帰要求に応じて前記機器がサスペンド状態から復帰するとき、前記復帰要求に応じた前記実行状態データを前記記憶部から選択し、選択された前記実行状態データに基づいて前記機器を復帰させる
制御方法。
【請求項１０】
前記機器がサスペンド状態となるときの実行状態を示す第１の実行状態データと、前記第１の実行状態データにおける実行状態から変更された実行状態を示す１つ以上の第２の実行状態データとを生成する
請求項９に記載の制御方法。
【請求項１１】
予め定められた数の複数の前記実行状態データを生成する
請求項９に記載の制御方法。
【請求項１２】
前記機器がサスペンド状態となるときの実行状態を示す第１の実行状態データと、前記第１の実行状態データにおける実行状態から変更された実行状態を示す１つ以上の第２の実行状態データとを生成して、前記第１の実行状態データと、前記第１の実行状態データと前記第２の実行状態データとの差分を示す差分データとを、前記記憶部に格納する
請求項９に記載の制御方法。
【請求項１３】
物理アドレスと仮想アドレスとを変換するために使用されるメモリ管理ユニットを用いて、前記第２の実行状態データに対応する仮想アドレスと、前記記憶部において前記差分データが格納されたブロックに対応する物理アドレスとを対応付けたテーブルを、前記記憶部に格納する
請求項１２に記載の制御方法。
【請求項１４】
実行状態の復帰確率に応じて当該実行状態に対応する前記実行状態データそれぞれの優先度を生成し、優先度が高い前記実行状態データを先に生成する
請求項１２に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及び制御方法に関し、例えば機器を制御する半導体装置及び制御方法に関する。
【背景技術】
【０００２】
機器は、サスペンド状態となった後、何らかの操作等に応じた復帰要求によって復帰し得る。この復帰に要する時間は、できるだけ短い方が好ましい。このような技術に関連し、特許文献１は、オペレーティングシステムの起動後に復帰すべきプログラム位置を設定して、起動時にはそのプログラム位置に速やかに復帰させる情報処理装置を開示する。
【０００３】
特許文献１にかかる情報処理装置は、コンピュータと、そのコンピュータがプログラムを実行する際の実行状態を保持する実行状態保持手段とを備える。特許文献１にかかる情報処理装置は、当該情報処理装置の起動の後に復帰すべきプログラム位置を起動の前に設定する。特許文献１にかかる情報処理装置は、設定された復帰すべきプログラム位置の実行の際に実行状態保持手段に保持されている実行状態を起動の前に実行状態退避手段に退避する。特許文献１にかかる情報処理装置は、起動が行われると実行状態退避手段に退避されている実行状態を前記実行状態保持手段に転送する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２４９４１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１にかかる技術では、実行状態退避手段に退避されていた実行状態を、起動時に、実行状態保持手段（メモリ）に転送する必要がある。したがって、特許文献１にかかる技術では、この起動時の転送に要する時間による遅延が発生してしまう。よって、特許文献１にかかる技術では、サスペンド状態であった機器を高速に復帰させることができないおそれがあった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、機器の実行状態を示す実行状態データを格納するように構成された記憶部と、前記機器の動作を制御する制御部とを有し、前記機器がサスペンド状態になる条件を満たすとき、前記制御部は、前記機器がサスペンド状態となるときの実行状態に基づいて互いに異なる複数の前記実行状態データを生成し、生成された前記複数の実行状態データを前記記憶部に格納し、その後、前記機器の状態をサスペンド状態に遷移させ、復帰要求に応じて前記機器がサスペンド状態から復帰するとき、前記制御部は、前記復帰要求に応じた前記実行状態データを前記記憶部から選択し、選択された前記実行状態データに基づいて前記機器を復帰させる半導体装置である。
【０００８】
また、一実施の形態によれば、制御方法は、機器がサスペンド状態になる条件を満たすとき、前記機器がサスペンド状態となるときの実行状態に基づいて互いに異なる複数の前記実行状態データを生成し、生成された前記複数の実行状態データを記憶部に格納し、その後、前記機器の状態をサスペンド状態に遷移させ、
復帰要求に応じて前記機器がサスペンド状態から復帰するとき、前記復帰要求に応じた前記実行状態データを前記記憶部から選択し、選択された前記実行状態データに基づいて前記機器を復帰させる
制御方法である。
【発明の効果】
【０００９】
前記一実施の形態によれば、サスペンド状態であった機器を高速に復帰させることが可能な半導体装置及び制御方法を提供できる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態にかかる半導体装置の概要を示す図である。
【図２】本実施の形態にかかる半導体装置によって実行される制御方法の概要を示すフローチャートである。
【図３】実施の形態１にかかる半導体装置の構成を示す図である。
【図４Ａ】実施の形態１にかかる半導体装置によって行われるサスペンド動作を示すフローチャートである。
【図４Ｂ】実施の形態１にかかる半導体装置によって行われるサスペンド動作を示すフローチャートである。
【図５】実施の形態１にかかる半導体装置によって実行される、イメージのコピー処理を説明するための図である。
【図６】実施の形態１にかかる半導体装置によって実行される、イメージのコピー処理を説明するための図である。
【図７】実施の形態１にかかる半導体装置によって実行される、イメージのコピー処理を説明するための図である。
【図８】実施の形態１にかかる半導体装置によって実行される、イメージのコピー処理を説明するための図である。
【図９】実施の形態１にかかる半導体装置によって行われる復帰動作を示すフローチャートである。
【図１０】実施の形態２にかかる半導体装置の構成を示す図である。
【図１１Ａ】実施の形態２にかかる半導体装置によって行われるサスペンド動作を示すフローチャートである。
【図１１Ｂ】実施の形態２にかかる半導体装置によって行われるサスペンド動作を示すフローチャートである。
【図１２】実施の形態２にかかるサスペンド動作における記憶部の領域の変化を説明するための図である。
【図１３】実施の形態２にかかる半導体装置によって行われる復帰動作を示すフローチャートである。
【図１４】実施の形態３にかかる半導体装置の構成を示す図である。
【図１５Ａ】実施の形態３にかかる半導体装置によって行われるサスペンド動作を示すフローチャートである。
【図１５Ｂ】実施の形態３にかかる半導体装置によって行われるサスペンド動作を示すフローチャートである。
【図１６】実施の形態３にかかる復帰要求スコアの生成方法を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。しかしながら、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではない。つまり、要素の数は、特定の数以上でも以下でもよい。
【００１３】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１４】
また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、その他の回路で構成することができる。また、上記の各要素は、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１５】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１６】
（実施の形態の概要）
実施の形態の説明に先立って、本実施の形態の概要について説明する。
図１は、本実施の形態にかかる半導体装置１の概要を示す図である。半導体装置１は、例えばＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）によって実現され得る。半導体装置１は、記憶部１０と、制御部２０とを有する。記憶部１０は、例えばＲＡＭ等のメモリである。制御部２０は、例えばＣＰＵ等の演算処理装置を含み得る。また、制御部２０は、演算処理装置と、他の処理デバイスとを含んでもよい。半導体装置１は、機器の動作を制御する。半導体装置１は、機器に内蔵されてもよい。
【００１７】
記憶部１０は、少なくとも、実行状態データ１２−１〜１２−Ｍ（Ｍは２以上の整数）を格納する。実行状態データは、例えばイメージ（システムイメージ等）である。実行状態データは、半導体装置１によって制御される機器の実行状態を示す。実行状態は、機器のプログラムの進行状態及び実行内容を示すものであるが、これに限られない。また、「プログラムの進行状態」は、例えばプログラムがどこまで進んだか、又は、プログラムのどこを実行しているか等を示す。また、「実行内容」は、例えば機器がどのようなアプリケーションを実行しているか等を示す。また、以降、実行状態データ１２−１〜１２−Ｍ等の、複数ある構成要素を区別しないで示す場合に、単に実行状態データ１２などと称することがある。
【００１８】
図２は、本実施の形態にかかる半導体装置１によって実行される制御方法の概要を示すフローチャートである。制御部２０は、機器がサスペンド状態になる条件を満たすか否かを判定する（ステップＳ１０２）。この条件が満たされる場合（Ｓ１０２のＹＥＳ）、制御部２０は、機器がサスペンド状態となるときの実行状態に基づいて、互いに異なる複数の実行状態データ１２を生成する（ステップＳ１０４）。また、制御部２０は、生成された複数の実行状態データ１２を記憶部１０に格納する。その後、制御部２０は、機器の状態をサスペンド状態に遷移させる（ステップＳ１０６）。
【００１９】
例えば、機器がプリンタであるとする。この場合、実行状態データは、現在の実行状態を含み得る。また、実行状態データは、現在の実行状態からＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリの処理（例えば初期化処理）を省いた状態を含み得る。さらに、実行状態データは、現在の実行状態を印刷待ち状態に移行した状態、及び、現在の実行状態から画面を表示する状態に移行した状態を含み得る。
【００２０】
制御部２０は、復帰要求が発生したか否かを判定する（ステップＳ１１０）。例えば、機器がプリンタである場合、復帰要求は、プリンタのボタンが押下された、プリンタのＵＳＢポートにＵＳＢメモリが挿入された、又はプリンタのカバーが開かれた等の操作によって発生し得る。復帰要求が発生した場合（Ｓ１１０のＹＥＳ）、制御部２０は、復帰要求に応じた実行状態データ１２を記憶部１０から選択する（ステップＳ１１２）。そして、制御部２０は、選択された実行状態データ１２に基づいて機器を復帰させる（ステップＳ１１４）。
【００２１】
例えば、上述したように機器がプリンタであるケースにおいて、プリンタのカバーが開かれた操作に対応する復帰要求が発生したとする。この場合、復帰時にＵＳＢメモリの処理が不要である可能性が極めて高い。したがって、制御部２０は、サスペンド時の実行状態からＵＳＢメモリの処理が省かれた実行状態データを用いて、機器を復帰させる。これにより、復帰時にＵＳＢメモリの処理が行われないので、機器は高速に復帰できる。一方、プリンタのＵＳＢポートにＵＳＢメモリが挿入された操作に対応する復帰要求が発生した場合は、制御部２０は、ＵＳＢメモリの処理を含む実行状態データを用いて、機器を復帰させる。
【００２２】
このように、本実施の形態にかかる半導体装置１は、機器がサスペンド状態に移行する際に、復帰時の状況に応じた複数の実行状態データ１２（イメージ）を作成しておく。そして、機器がサスペンド状態から復帰するときには、半導体装置１は、復帰要求に対応する実行状態データ１２を選択して復帰動作を行う。これにより、関連技術において必要であった、実行状態の転送（書き戻し）処理が不要となる。したがって、本実施の形態にかかる半導体装置１は、機器の高速な復帰動作を実現できる。
【００２３】
また、制御部２０は、機器がサスペンド状態となるときの実行状態を示す実行状態データ１２−１（第１の実行状態データ）を生成する。そして、制御部２０は、第１の実行状態データにおける実行状態から変更された実行状態を示す１つ以上の第２の実行状態データ（実行状態データ１２−２〜１２〜Ｍ）を生成してもよい。このような構成により、本実施の形態にかかる半導体装置１は、容易に複数の実行状態データを生成できる。
【００２４】
（実施の形態１）
次に、実施の形態１について説明する。
図３は、実施の形態１にかかる半導体装置１００の構成を示す図である。実施の形態１にかかる半導体装置１００は、記憶部１２０と、アドレス制御機構３０１と、ＣＰＵ３０２と、サスペンド制御部３０３と、復帰制御部３０４とを有する。これらの構成要素は、システムバス３０７を介して接続されている。記憶部１２０は、図１に示した記憶部１０に対応する。また、図１に示した制御部２０は、ＣＰＵ３０２、サスペンド制御部３０３及び復帰制御部３０４で構成され得る。制御部２０は、サスペンド制御部３０３及び復帰制御部３０４の少なくとも一方を有しなくてもよい。この場合、ＣＰＵ３０２が、サスペンド制御部３０３及び復帰制御部３０４の機能を実現し得る。また、復帰制御部３０４は、領域テーブル３１０を有する。
【００２５】
記憶部１２０は、機器の復帰の際に復帰先となり得る複数のイメージ１３０−１〜１３０−Ｍと、イメージテーブル３０５とを保持する。上述したように、「イメージ１３０」は、図１に示した実行状態データ１２に対応する。記憶部１２０は、機器の高速な復帰という観点から、ＲＡＭであることが好ましい。しかしながら、記憶部１２０は、読み書きが可能なものであれば、ＲＡＭに限られず、任意のメモリであってもよい。また、記憶部１２０は、複数のメモリで構成されてもよい。
【００２６】
ＣＰＵ３０２は、機器の制御を行うプロセッサである。ＣＰＵ３０２は、イメージ１３０を生成する。ＣＰＵ３０２は、機器がサスペンド状態に遷移する際に、サスペンド制御部３０３を起動させる。また、ＣＰＵ３０２は、機器がサスペンド状態に遷移する際に、複数のイメージ１３０を生成する。また、ＣＰＵ３０２は、機器をサスペンド状態に遷移させるための処理を行う。また、ＣＰＵ３０２は、機器がサスペンド状態から復帰する際に、復帰動作を行う。
【００２７】
イメージテーブル３０５は、復帰要求番号３０９とイメージ１３０とを対応付けるテーブルである。復帰要求番号３０９は、復帰要求を示す番号である。復帰要求番号３０９は、復帰要求の種類ごとに異なり得る。例えば、機器がプリンタである場合、復帰要求番号３０９は、ボタンが押下された、ＵＳＢメモリが挿入された、又はカバーが開かれたといった操作ごとに異なり得る。領域テーブル３１０は、イメージ１３０とそのイメージ１３０が格納された領域とを対応付けるテーブルである。なお、領域テーブル３１０は、記憶部１２０に設けられていてもよい。
【００２８】
アドレス制御機構３０１は、復帰制御部３０４から入力される領域番号３０６に応じて、記憶部１２０のアドレスマップを切り替える機構である。これにより、ＣＰＵ３０２は、記憶部１２０における領域のうち、アドレス制御機構３０１によって切り替えられたアドレスの領域にアクセスできる。領域番号３０６については後述する。
【００２９】
サスペンド制御部３０３は、ＣＰＵ３０２からの要求に応じて、記憶部１２０のイメージのコピーを行う。つまり、サスペンド制御部３０３は、ＣＰＵ３０２によって生成された複数のイメージ１３０を記憶部１２０に格納する。なお、サスペンド制御部３０３は、復帰制御部３０４から領域番号３０６を受け付けることで、ＣＰＵ３０２が利用している領域を認識することができる。また、サスペンド制御部３０３は、システムバス３０７を介してＣＰＵ３０２から初期化要求及びコピー要求を受け取ることができる。また、サスペンド制御部３０３は、領域テーブル３１０の設定、及び、記憶部１２０にあるイメージ１３０のコピーを行うことができる。また、サスペンド制御部３０３は、ＣＰＵ３０２への割り込み通知３１１を出力する。サスペンド制御部３０３の動作については後述する。
【００３０】
復帰制御部３０４は、復帰要求番号３０９を受信する。また、復帰制御部３０４は、アドレス制御機構３０１及びサスペンド制御部３０３に対して領域番号３０６を出力する。また、復帰制御部３０４は、ＣＰＵ３０２に対して復帰指示３０８を出力する。復帰制御部３０４は、復帰要求番号３０９を受け取ると、イメージテーブル３０５及び領域テーブル３１０を用いて、復帰要求番号３０９に対応する領域番号３０６を出力する。復帰制御部３０４の動作については後述する。
【００３１】
図４Ａ及び図４Ｂは、実施の形態１にかかる半導体装置１００によって行われるサスペンド動作を示すフローチャートである。なお、図４Ａ及び図４Ｂをまとめて示す場合に、単に「図４」と称する（後述する図１１及び図１５についても同様）。図４では、作成するイメージ１３０の数を「Ｍ」としている。また、サスペンド状態に遷移する際にＣＰＵ３０２が処理をするために使用しているイメージ１３０が格納されている領域の番号を「Ｃ」としている。
【００３２】
機器（システム）の実行タスクがなくなる等により機器からサスペンド要求が発行されると（ステップＳ４００）、ＣＰＵ３０２は、サスペンド制御部３０３に初期化要求を発行（出力）する（ステップＳ４０１）。そして、ＣＰＵ３０２は、割り込み待ち状態へ移行する（ステップＳ４２５）。
【００３３】
サスペンド制御部３０３は、初期化要求（Ｓ４０１）を受け取ると、領域テーブル３１０の書き換え処理（ステップＳ４０２）及び内部のカウンタＲのリセット処理（ステップＳ４０７）を行う。これらの処理が終了すると、サスペンド制御部３０３は、ＣＰＵ３０２に対して割り込み通知を行う（ステップＳ４０８）。
【００３４】
Ｓ４０２の処理の詳細を説明する。まず、サスペンド制御部３０３は、イメージ番号カウンタＩ及び領域番号カウンタＲを１に初期化する（ステップＳ４１０）。その後、Ｓ４１１〜Ｓ４１５のループ処理を行う。サスペンド制御部３０３は、イメージ番号カウンタＩと領域テーブル数とを比較する（ステップＳ４１１）。そして、Ｉが（領域テーブル数−１）回であれば、処理はＳ４１６に遷移し、そうでなければ、処理はＳ４１２に遷移する。処理がＳ４１２に遷移すると、サスペンド制御部３０３は、領域テーブル３１０について、イメージ番号カウンタＩに対応する領域番号をＲに設定し（Ｓ４１２）、領域番号カウンタＲをインクリメントする（ステップＳ４１３）。その後、サスペンド制御部３０３は、領域番号カウンタＲが現在のイメージ番号Ｃと同じか否かを確認する（ステップＳ４１４）。そして、Ｒ＝Ｃの場合（Ｓ４１４のＹＥＳ）、サスペンド制御部３０３は、さらにもう一度、領域番号カウンタＲをインクリメントする（Ｓ４１３）。その後、サスペンド制御部３０３は、イメージ番号カウンタＩをインクリメントし（ステップＳ４１５）、処理はＳ４１１に戻る。そして、Ｉが（領域テーブル数−１）となった場合に、サスペンド制御部３０３は、イメージ番号カウンタＩに対応する領域番号をＣ（つまり現在の領域）に設定する（ステップＳ４１６）。
【００３５】
ＣＰＵ３０２は、割り込み通知（Ｓ４０８）を受け取ると、複数のイメージを生成する（ステップＳ４０３）。Ｓ４０３の処理の詳細について、まず、ＣＰＵ３０２は、作成済みイメージカウンタＸを１に初期化する（ステップＳ４１７）。その後、作成済みイメージカウンタＸが指定数（Ｍ）に到達するまで（ステップＳ４１８のＹＥＳ）、ＣＰＵ３０２は、イメージ生成処理を繰り返す。
【００３６】
ＣＰＵ３０２は、サスペンド制御部３０３に対してコピー要求を送信し（ステップＳ４０５）、割り込み待ち状態に移行する（ステップＳ４１９）。サスペンド制御部３０３は、コピー要求（Ｓ４０５）を受けると、現在のイメージ番号Ｃの領域に格納されたイメージを別領域にコピーする（ステップＳ４０４）。この処理が終了すると、サスペンド制御部３０３は、ＣＰＵ３０２に対してコピー終了を知らせる割り込み通知を行う（ステップＳ４０９）。
【００３７】
Ｓ４０４の詳細について、サスペンド制御部３０３は、コピー要求を受けるごとに、領域カウンタＲをインクリメントする（ステップＳ４２０）。そして、Ｒ＝Ｃでなければ（ステップＳ４２１のＮＯ）、サスペンド制御部３０３は、順番にイメージ領域Ｃをイメージ領域Ｒにコピーしていく（ステップＳ４２２）。なお、このとき、現在のイメージ番号Ｃをスキップするために、Ｒ＝Ｃのときは（Ｓ４２１のＹＥＳ）、サスペンド制御部３０３は、さらにインクリメントを行う（Ｓ４２０）。
【００３８】
その後、ＣＰＵ３０２は、ドライバの変更等の、イメージの変更（つまり別のイメージの生成）を行う（ステップＳ４０６）。そして、ＣＰＵ３０２は、作成済みイメージカウンタＸをインクリメントし（ステップＳ４２３）、再度コピー要求を行う（Ｓ４０５）。また、作成済みイメージカウンタＸがＭとなった場合に（Ｓ４１８のＹＥＳ）、ＣＰＵ３０２は、イメージの生成を終了し、サスペンド状態に移行する（ステップＳ４２４）。つまり、イメージの生成及びコピーは（Ｍ−１）回行われ、システムはＭ個のイメージを保持した状態となる。この処理により、例えば領域数Ｍ＝４、現在の領域番号Ｃ＝３の場合、領域テーブル３１０において、領域＃１〜＃４に対応するイメージ番号は、それぞれ、＃１、＃２、＃４、＃３のように並ぶ。以下、ステップごとに説明を示す。
【００３９】
図５〜図８は、実施の形態１にかかる半導体装置１００によって実行される、イメージのコピー処理を説明するための図である。記憶部１２０（ＲＡＭ）は、イメージ１３０を格納する領域として領域＃１〜領域＃４を有しているとする。また、ＣＰＵ３０２によって、現在、領域＃３が使用されているとする。
【００４０】
図５の矢印Ａで示すように、ＣＰＵ３０２は、領域＃３を用いて現在のイメージに対応するイメージ＃１を生成する。このときに、サスペンド要求が発行されたとする。この場合、図５の矢印Ｂで示すように、サスペンド制御部３０３は、領域＃３に格納されているイメージ＃１を、領域＃１にコピーする（Ｓ４２２）。
【００４１】
図６の矢印Ａの状態から、ＣＰＵ３０２は、現在の領域Ｃ（領域＃３）を用いて次の状態へ以降するプログラムを実行し、図６の矢印Ｂで示すように、イメージ＃１をイメージ＃２に変更する処理を行う（Ｓ４０６）。そして、図６の矢印Ｃで示すように、サスペンド制御部３０３は、領域＃３に格納されているイメージ＃２を、領域＃２にコピーする（Ｓ４２２）。
【００４２】
図７の矢印Ａの状態から、ＣＰＵ３０２は、現在の領域Ｃ（領域＃３）を用いて次の状態へ以降するプログラムを実行し、図７の矢印Ｂで示すように、イメージ＃２をイメージ＃３に変更する処理を行う（Ｓ４０６）。このとき、Ｒ＝Ｃとなる（Ｓ４２１のＹＥＳ）。この場合、動作中の領域を書き換えることはできない。したがって、サスペンド制御部３０３は、コピー先の領域番号カウンタＲを次に進め（Ｓ４１３、Ｓ４１４）、コピー動作を続ける。これにより、図７の矢印Ｃで示すように、サスペンド制御部３０３は、イメージ＃３を領域＃４にコピーする。
【００４３】
図８の矢印Ａの状態から、ＣＰＵ３０２は、現在の領域Ｃ（領域＃３）で次の状態へ以降するプログラムを実行し、図８の矢印Ｂで示すように、イメージ＃３をイメージ＃４に変更する処理を行う（Ｓ４０６）。このとき、領域カウンタＲが最後まで進み終わったため、コピー先の領域がなくなる（Ｓ４１８のＹＥＳ）。この場合、サスペンド制御部３０３は、状態（イメージ）の遷移のみ行い、領域Ｃ（領域＃３）を最後の領域とする。これにより、領域＃１〜＃４に対応するイメージ番号は、＃１、＃２、＃４、＃３のように並ぶこととなる。
【００４４】
図９は、実施の形態１にかかる半導体装置１００によって行われる復帰動作を示すフローチャートである。復帰制御部３０４は、機器のサスペンド中に復帰要求番号３０９を受け取ると、イメージテーブル３０５を用いて、復帰要求番号３０９に対応するイメージ番号を求める（ステップＳ５００）。その後、復帰制御部３０４は、領域テーブル３１０を用いて、イメージ番号に対応する領域番号を求める（ステップＳ５０１）。そして、復帰制御部３０４は、領域番号をアドレス制御機構３０１に通知する（ステップＳ５０２）。その後、復帰制御部３０４は、ＣＰＵ３０２に対して、復帰指示３０８を発行（出力）する（ステップＳ５０３）。
【００４５】
ＣＰＵ３０２は、復帰動作を行う（ステップＳ５０４）。すなわち、ＣＰＵ３０２は、復帰指示３０８に応じて起動する（ステップＳ５０５）。その後、ＣＰＵ３０２は、アドレス制御機構３０１により、復帰要求番号３０９に対応するイメージ１３０のエントリポイントに復帰する（ステップＳ５０６）。そして、半導体装置１００にＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が具備されている場合は、定められた初期化シーケンスの実行などが行われる。そして、最終的に、ＣＰＵ３０２は、イメージ１３０を用いて、アプリケーションの復帰点に復帰する（ステップＳ５０７）。なお、ＣＰＵ３０２から記憶部１２０へのアクセスはアドレス制御機構３０１を介して行われるため、ＣＰＵ３０２は、復帰制御部３０４で選択されたイメージ領域への復帰動作を行うことができる。
【００４６】
実施の形態１にかかる半導体装置１００において、機器がサスペンド状態になる条件を満たすとき、ＣＰＵ３０２（演算処理装置）は、複数のイメージ（実行状態データ）を生成する。サスペンド制御部３０３は、生成された複数のイメージを記憶部１２０に格納する。その後、ＣＰＵ３０２は、機器の状態をサスペンド状態に遷移させる。また、機器がサスペンド状態から復帰するとき、復帰制御部３０４は、復帰要求（復帰要求番号３０９）を受け付けてイメージを記憶部１２０から選択する。また、ＣＰＵ３０２は、選択されたイメージに基づいて機器を復帰させる。このような構成により、実施の形態１にかかる半導体装置１００は、上述した「実施の形態の概要」にかかる効果と実質的に同様の効果を奏し得る。つまり、機器のサスペンド時に複数のイメージを保持することによって、復帰時の書き戻し動作が不要となるので、機器の復帰処理を高速に行うことができる。
【００４７】
また、実施の形態１にかかる半導体装置１００は、上記のように、イメージ（実行状態データ）の生成をＣＰＵ３０２が行い、イメージの格納をサスペンド制御部３０３が行う。このように、異なるデバイスがイメージの生成及び格納をそれぞれ行うことで、サスペンド処理を高速に行うことができる。仮に、ＣＰＵ３０２がイメージの生成及び格納を行うとする。この場合、ＣＰＵ３０２は、イメージの格納中は、他のイメージを生成できないので、イメージの生成処理が停止する。したがって、ＣＰＵ３０２がイメージの生成及び格納を行うと、サスペンド処理が遅くなる。これに対し、実施の形態１においては、異なるデバイスがイメージの生成及び格納をそれぞれ行うので、イメージの生成処理を停止することが抑制される。したがって、実施の形態１にかかる半導体装置１００は、ＣＰＵ３０２がイメージの生成及び格納を行う場合と比較して、サスペンド処理を高速に行うことができる。なお、このことは、後述する他の実施の形態においても同様である。
【００４８】
また、実施の形態１にかかる半導体装置１００は、上記のように、復帰制御部３０４が、復帰要求（復帰要求番号３０９）を受け付けてイメージを記憶部１２０から選択する。そして、ＣＰＵ３０２が、選択されたイメージに基づいて機器を復帰させる。これに対し、仮に、ＣＰＵ３０２がイメージの選択も行うとすると、機器のサスペンド時にＣＰＵ３０２をサスペンドすることができない。したがって、実施の形態１のように、異なるデバイスがイメージの選択及び復帰動作をそれぞれ行うことで、機器のサスペンド中にＣＰＵ３０２もサスペンドできる。したがって、サスペンド中の電力の消費等を抑制できる。なお、このことは、後述する他の実施の形態においても同様である。
【００４９】
また、実施の形態１にかかるＣＰＵ３０２（制御部２０）は、予め定められた数の複数のイメージ（実行状態データ）を生成するように構成されている。したがって、実施の形態１にかかる半導体装置１００は、予め定められた数のイメージを、確実に生成できる。
【００５０】
（実施の形態２）
次に、実施の形態２について説明する。実施の形態１では、記憶部１２０上に、予め決められた数のイメージ用領域を用意しておき、その中に複数のイメージを保持していた。この方法では、復帰するイメージが増えるほど、記憶部１２０の記憶領域が多く使用されてしまう。これに対し、実施の形態２では、複数のイメージを、基準となるイメージ及び基準からの差分として保持しながら、機器を高速に復帰するように構成されている。
【００５１】
図１０は、実施の形態２にかかる半導体装置２００の構成を示す図である。実施の形態２にかかる半導体装置２００は、記憶部１２０と、書き込み検知機構６１２と、ＣＰＵ６１３と、サスペンド制御部６１１と、復帰制御部６０７とを有する。これらの構成要素は、システムバス３０７を介して接続されている。また、図１に示した制御部２０は、ＣＰＵ６１３、サスペンド制御部６１１及び復帰制御部６０７で構成され得る。制御部２０は、サスペンド制御部６１１及び復帰制御部６０７の少なくとも一方を有しなくてもよい。この場合、ＣＰＵ６１３が、サスペンド制御部６１１及び復帰制御部６０７の機能を実現し得る。また、復帰制御部６０７は、アドレステーブル６１４を有する。
【００５２】
実施の形態１では、アドレス制御機構３０１がアドレスの変換を行う。これに対し、実施の形態２では、ＣＰＵ６１３が、仮想アドレスと物理アドレスとを変換するために使用されるＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ；メモリ管理ユニット）テーブルを切り替える。これにより、ＣＰＵ６１３は、復帰要求に対応するイメージが格納された領域にアクセスできる。
【００５３】
記憶部１２０は、基準イメージ６０１と、ワークイメージ６０２と、イメージ差分６０３と、ワークＭＭＵテーブル６０４と、ＭＭＵテーブル６０５−１，６０５−２，・・・と、イメージテーブル３０５とを保持する。基準イメージ６０１は、生成される複数のイメージのうちの基準となるイメージである。ここで、基準イメージ６０１は、単一イメージを保持する場合のイメージに相当するものである。すなわち、機器は、基準イメージ６０１の復帰点に復帰した状態から、他のすべての復帰点に遷移できるものとする。
【００５４】
ワークイメージ６０２は、現在、ＣＰＵ６１３が処理をするために使用しているイメージである。イメージ差分６０３は、生成された複数のイメージのうちの基準イメージ６０１とは異なるイメージと、基準イメージ６０１との差分を示すデータ（差分データ）である。ワークＭＭＵテーブル６０４は、現在、ＣＰＵ６１３が処理をするために使用している領域の仮想アドレスと物理アドレスとを変換するためのテーブルである。言い換えると、ワークＭＭＵテーブル６０４は、ワークイメージ６０２に対応するＭＭＵテーブルである。ＭＭＵテーブル６０５は、生成されたイメージが格納された領域の仮想アドレスと物理アドレスとを変換するためのテーブルである。ここで、ＭＭＵテーブル６０５−１は、基準イメージ６０１（イメージ＃１）に対応するＭＭＵテーブルである。ＭＭＵテーブル６０５−２は、２番目に生成されたイメージ＃２に対応する。
【００５５】
ＣＰＵ６１３は、実施の形態１にかかるＣＰＵ３０２と同様に、機器の制御を行うプロセッサである。ＣＰＵ６１３は、複数のイメージを生成する。ＣＰＵ６１３は、機器がサスペンド状態に遷移する際に、サスペンド制御部３０３を起動させる。また、ＣＰＵ６１３は、機器がサスペンド状態に遷移する際に、複数のイメージを生成する。また、ＣＰＵ６１３は、機器をサスペンド状態に遷移させるための処理を行う。また、ＣＰＵ６１３は、機器がサスペンド状態から復帰する際に、復帰動作を行う。ここで、実施の形態２にかかるＣＰＵ６１３は、ＭＭＵにより仮想アドレスと物理アドレスの対応を行うアーキテクチャに従って動作する。
【００５６】
サスペンド制御部６１１は、実施の形態１にかかるサスペンド制御部３０３と同様に、機器がサスペンド状態に遷移する際の制御を行う。サスペンド制御部６１１は、ＣＰＵ６１３からの要求に応じて、記憶部１２０のイメージのコピーを行う。また、サスペンド制御部６１１は、ＣＰＵ６１３への割り込み通知３１１を出力する。サスペンド制御部６１１の動作については後述する。
【００５７】
復帰制御部６０７は、実施の形態１にかかる復帰制御部３０４と同様に、機器がサスペンド状態から復帰する際の動作の制御を行う。復帰制御部６０７は、復帰要求番号３０９を受信する。また、復帰制御部６０７は、ＣＰＵ６１３に対して復帰指示３０８を出力する。また、復帰制御部６０７は、サスペンド中に復帰要求番号３０９を受け取ると、イメージテーブル３０５及びアドレステーブル６１４を用いて、対応するＭＭＵのアドレスをＣＰＵ６１３に対して出力（発行）する。アドレス指定６０９は、この対応するＭＭＵのアドレスを指定する信号である。アドレステーブル６１４は、イメージとＭＭＵテーブルとを対応付けるテーブルである。なお、アドレステーブル６１４は、記憶部１２０に設けられていてもよい。
【００５８】
書き込み検知機構６１２は、記憶部１２０へのライトトランザクションを監視し、どのアドレスに書き込みが行われたかを、記憶領域のブロック（ページ）単位で検知および保持する機構である。これにより、ＣＰＵ６１３は、記憶部１２０における領域のうち、アドレス指定６０９で指定されたアドレスの領域にアクセスできる。
【００５９】
図１１Ａ及び図１１Ｂは、実施の形態２にかかる半導体装置２００によって行われるサスペンド動作を示すフローチャートである。また、図１２は、実施の形態２にかかるサスペンド動作における記憶部１２０の領域の変化を説明するための図である。図１２において、領域８００から領域８０５となるように、記憶部１２０の領域が変化していく。
【００６０】
ここで、図１２における各セルは記憶領域上のブロック（ページ）を示している。図１２において、「ＭＷ」は、対応するブロックにワークＭＭＵテーブル６０４のデータが格納されていることを示す。「Ｍ１」、「Ｍ２」及び「Ｍ３」は、それぞれ、対応するブロックにＭＭＵテーブル６０５−１〜６０５−３（ＭＭＵ＃１〜ＭＭＵ＃３）のデータが格納されていることを示す。「Ｗ」は、対応するブロックがワークイメージ６０２に属していることを示している。つまり、「Ｗ」が付されたブロックは、ワークイメージ６０２のために使用されている。また、「１」は、対応するブロックが基準イメージ６０１（イメージ＃１）に属していることを示している。また、「２」及び「３」は、それぞれ、対応するブロックがイメージ＃２，＃３に属していることを示している。なお、図を簡単にするため、サスペンド動作中に変化の無いイメージテーブル３０５は図示されていない。
【００６１】
ＣＰＵ６１３で実行されるＳ４００、Ｓ４０１及びＳ４２５の処理については、図４に示した処理と実質的に同様であるので、説明を省略する。サスペンド制御部６１１は、ＣＰＵ６１３から初期化要求（Ｓ４０１）を受け取ると、初期化処理を行う（ステップＳ７００）。
【００６２】
サスペンド制御部６１１は、領域番号カウンタＲを１に初期化する（ステップＳ７１３）。サスペンド制御部６１１は、ワークイメージ６０２をイメージ＃１として別領域にコピーする（ステップＳ７０４）。また、サスペンド制御部６１１は、ワークＭＭＵテーブル６０４をＭＭＵテーブル＃１（ＭＭＵ＃１）として別領域にコピーする（ステップＳ７０５）。図１２において、コピー前の記憶部１２０の状態が、領域８００に示されている。また、コピー後（Ｓ７０４，Ｓ７０５の処理の後）の記憶部１２０の状態が、領域８０１に示されている。領域８００における「Ｗ」が付されたブロックのデータが、領域８０１における「１」が付されたブロックにコピーされている。また、領域８００における「ＭＷ」が付されたブロックのデータが、領域８０１における「Ｍ１」が付されたブロックにコピーされている。「１」が付された複数のブロックのデータが、基準イメージ６０１に対応する。また、「Ｍ１」が付された複数のブロックのデータが、基準イメージ６０１に対応するＭＭＵテーブル（ＭＭＵ＃１）に対応する。
【００６３】
ここで、基準イメージ６０１の生成には、ワークイメージ６０２（図１２の「Ｗ」に対応）と同じサイズの空き領域が必要となる。そこで、空き領域不足によって基準イメージ６０１のコピーに失敗した場合（ステップＳ７０６のＮＯ）、サスペンド制御部６１１は、サスペンド処理を終了する。このとき、サスペンド制御部６１１は、アドレステーブル６１４の全てにワークＭＭＵテーブル６０４のアドレスを登録する（ステップＳ７１６）。つまり、サスペンド制御部６１１は、イメージ番号に対応するＭＭＵテーブルのアドレスを、全て、ワークＭＭＵテーブル６０４のアドレスに設定する。そして、この場合、ＣＰＵ６１３は、サスペンド状態に移行する（ステップＳ４２４）。
【００６４】
コピーに成功した場合（Ｓ７０６のＹＥＳ）、サスペンド制御部６１１は、コピーしたＭＭＵテーブル＃１（ＭＭＵ＃１）のアドレスを、アドレステーブル６１４の「１番」に登録する（ステップＳ７０７）。その後、サスペンド制御部６１１は、領域番号カウンタＲをインクリメントし（ステップＳ７１４）、ＣＰＵ６１３に対して割り込み通知を行う（ステップＳ４０８）。
【００６５】
ＣＰＵ６１３は、割り込み通知（Ｓ４０８）を受け取ると、複数のイメージを生成する（ステップＳ７０１）。Ｓ７０１の処理の詳細について、イメージ変更（Ｓ４０６）を行う前に、ＣＰＵ６１３は、書き込み検知機構６１２を有効化する（ステップＳ７０８）。これにより、記憶部１２０において変更されたブロック領域が保持された状態にする。そして、ＣＰＵ６１３は、イメージ変更（つまり別のイメージの生成）を行う（ステップＳ４０６）。その後、ＣＰＵ６１３は、書き込み検知を停止する（ステップＳ７０９）。そして、領域番号カウンタＲが指定数（Ｍ）に到達するまで（ステップＳ７１１のＹＥＳ）、ＣＰＵ６１３は、イメージ生成処理を繰り返す。
【００６６】
つまり、Ｍ＝Ｒでない場合（Ｓ７１１のＮＯ）、ＣＰＵ６１３は、サスペンド制御部６１１に対してコピー要求を送信し（Ｓ４０５）、割り込み待ち状態に移行する（ステップＳ４１９）。サスペンド制御部６１１は、コピー要求（Ｓ４０５）を受けると、生成されたイメージに関するデータのコピーを行う（ステップＳ７０２）。具体的には、サスペンド制御部６１１は、記憶部１２０の記憶領域（ワークイメージ６０２）のうちの変更のあったブロックのデータを、空き領域にコピーする（ステップＳ７１７）。また、サスペンド制御部６１１は、ワークＭＭＵテーブル６０４をＭＭＵテーブル＃Ｒ（Ｒ＝２であればＭＭＵテーブル＃２）にコピーする（ステップＳ７１８）。
【００６７】
図１２において、領域８０２のハッチングが施されたセルが、変更されたブロックであるとする。この場合、領域８０３は、コピー後の領域を示す。図１２の領域８０２における「Ｗ」が付され且つハッチングが施されたブロックのデータが、領域８０３における「２」が付されたブロックにコピーされている。また、領域８０２における「ＭＷ」が付されたブロックのデータが、領域８０３における「Ｍ２」が付されたブロックにコピーされている。「Ｍ２」が付された複数のブロックのデータが、イメージ＃２に対応するＭＭＵテーブル（ＭＭＵ＃２）に対応する。ここで、「Ｍ２」が付されたブロックのＭＭＵテーブルは、領域８０４のハッチングが施されたブロックを参照している。この領域８０４のハッチングが施されたブロックが、イメージ＃２を構成する。
【００６８】
なお、領域８０４において、「１」が付されており且つハッチングが施されていないブロックは、ワークイメージ６０２（「Ｗ」）において変更されたブロックの変更前のデータに対応する。したがって、このブロックは、イメージ＃１（基準イメージ６０１）のみに対応するので、「Ｍ２」が付されたブロックのＭＭＵテーブルによって参照されない。一方、「１」が付され且つハッチングが施されたブロックは、イメージ＃１（基準イメージ６０１）だけでなくイメージ＃２にも対応する。したがって、「１」が付され且つハッチングが施されたブロックは、「Ｍ２」が付されたブロックのＭＭＵテーブルによって参照される。このように、変更のあったブロックのみコピーを行うことで、イメージ＃２が格納される記憶部１２０の使用量（ブロック数）が削減される。図１２の例では、イメージ＃２について、変更されなかった７個のブロック分、削減できる。サスペンド制御部６１１がこの処理を繰り返し実行することで、Ｓ７０１において複数のイメージが生成される。
【００６９】
記憶部１２０の空き容量が十分であったためコピーが成功した場合（ステップＳ７１２のＹＥＳ）、サスペンド制御部６１１は、ＭＭＵ＃Ｒのアドレスをアドレステーブル６１４の「Ｒ番」に登録する（ステップＳ７１９）。その後、サスペンド制御部６１１は、領域番号カウンタＲをインクリメントする（ステップＳ７２０）。そして、サスペンド制御部６１１は、ＣＰＵ６１３に対してコピー終了を知らせる割り込み通知を行う（ステップＳ４０９）。
【００７０】
Ｍ＝Ｒである場合（Ｓ７１１のＹＥＳ）、ＣＰＵ６１３は、ワークＭＭＵテーブル６０４のアドレスをアドレステーブル６１４の「Ｒ番」に登録する（ステップＳ７０３）。つまり、（指定数（Ｍ）−１）のイメージの生成及びコピーが終了した場合、ＣＰＵ６１３は、現在のワークイメージの領域を最後のイメージ領域として登録する。あるいは、空き領域が足りなくなってコピーが失敗した場合（Ｓ７１２のＮＯ）も、ＣＰＵ６１３は、ワークＭＭＵテーブル６０４のアドレスをアドレステーブル６１４の「Ｒ番」に登録する（Ｓ７０３）。
【００７１】
例えば、生成されたイメージが３つだった場合、ワークＭＭＵテーブル６０４がＭＭＵテーブル＃３として登録される。したがって、図１２の領域８０３の状態から、イメージ＃３が生成されると（Ｓ７０９）、記憶部１２０は、領域８０５のような状態となる。つまり、領域８０３における「Ｗ」が付されたブロックが、領域８０５において、そのまま「３」が付されたブロックとなる。同様に、領域８０３における「ＭＷ」が付されたブロックが、領域８０５において、そのまま「Ｍ３」が付されたブロックとなる。
【００７２】
以上のような処理により、図１２の領域８０５において、「１」が付されたブロックのデータが、基準イメージ６０１として格納される。また、「Ｍ１」が付されたブロックのデータが、ＭＭＵテーブル６０５−１として格納される。また、「２」が付されたブロックのデータが、イメージ差分６０３として格納される。また、「Ｍ２」が付されたブロックが、ＭＭＵテーブル６０５−２として格納される。また、「３」が付されたブロックが、ワークイメージ６０２として格納される。また、「Ｍ３」が付されたブロックが、ＭＭＵテーブル６０５−３として格納される。この状態で、機器がサスペンド状態となる。
【００７３】
図１３は、実施の形態２にかかる半導体装置２００によって行われる復帰動作を示すフローチャートである。復帰制御部６０７は、機器のサスペンド中に復帰要求番号３０９を受け取ると、イメージテーブル３０５を用いて、復帰要求番号３０９に対応するイメージ番号を求める（Ｓ５００）。次に、復帰制御部６０７は、アドレステーブル６１４を用いて、イメージ番号に対応するＭＭＵテーブル６０５のアドレスを求める（ステップＳ９００）。そして、復帰制御部６０７は、ＣＰＵ６１３がアクセスできるＭＭＵテーブル６０５のアドレスを設定し、設定されたアドレスを示すアドレス指定６０９をＣＰＵ６１３に出力する（ステップＳ９０１）。なお、Ｓ５０３の処理以降については、図９に示したし処理と実質的に同様であるので、説明を省略する。なお、Ｓ５０６の処理においては、アドレス指定６０９によって、ＣＰＵ３０２は、復帰要求番号３０９に対応するイメージ１３０のエントリポイントに復帰する。
【００７４】
実施の形態２にかかる半導体装置２００においても、機器がサスペンド状態になる条件を満たすとき、ＣＰＵ６１３（演算処理装置）は、複数のイメージ（実行状態データ）を生成する。サスペンド制御部６１１は、生成された複数のイメージを記憶部１２０に格納する。その後、ＣＰＵ６１３は、機器の状態をサスペンド状態に遷移させる。また、機器がサスペンド状態から復帰するとき、復帰制御部６０７は、復帰要求（復帰要求番号３０９）を受け付けてイメージを記憶部１２０から選択する。また、ＣＰＵ６１３は、選択されたイメージに基づいて機器を復帰させる。実施の形態２にかかる半導体装置２００は、このような構成により、上述した実施の形態にかかる効果と実質的に同様の効果を奏し得る。つまり、機器のサスペンドの際に複数のイメージを保持することによって、復帰時の書き戻し動作が不要となるので、機器の復帰処理を高速に行うことができる。
【００７５】
また、実施の形態２にかかる半導体装置２００は、基準イメージ６０１と他のイメージとの差分であるイメージ差分６０３を格納することで、複数のイメージを記憶部１２０に格納する。つまり、ＣＰＵ６１３は、基準イメージ６０１（第１の実行状態データ）と、基準イメージから変更されたイメージ（第２の実行状態データ）とを生成する。そして、サスペンド制御部６１１は、基準イメージ、及び、基準イメージと変更されたイメージとの差分を、記憶部１２０に格納する。このような構成によって、実施の形態２にかかる半導体装置２００は、複数のイメージを格納する場合であっても、記憶部１２０における記憶領域の使用量の増大を抑制できる。さらに、実施の形態１の場合と比較して、コピーするデータ量も減少するので、実施の形態１の場合と比較して、サスペンド処理に要する時間も短縮できる。
【００７６】
なお、上述した実施の形態２では、半導体装置２００がＭＭＵのアーキテクチャに準拠しているとした。つまり、サスペンド制御部６１１（制御部２０）は、ＭＭＵテーブル６０５を、記憶部１２０に格納する。しかしながら、半導体装置２００は、ＭＭＵのアーキテクチャに準拠している必要はない。一方、ＭＭＵのアーキテクチャを用いないと、ＣＰＵ６１３は、イメージ差分６０３がどの領域に格納されているかを把握するのに、多大な時間を要する。この場合、ＣＰＵ６１３は、イメージ差分６０３を用いてイメージを再生成する処理に、多大な時間を要する。したがって、サスペンド制御部６１１（制御部２０）がＭＭＵテーブル６０５を記憶部１２０に格納することによって、ＣＰＵ６１３は、復帰処理を高速に行うことができる。
【００７７】
（実施の形態３）
次に、実施の形態３について説明する。
イメージの保持数は、記憶部１２０における記憶領域の容量の制限を受ける。一方、センサ及び機能が多い機器では、復帰ケースが多岐に渡り得る。ここで、上述した実施の形態２では、記憶部１２０の使用量の増大を抑制する方法を示した。しかしながら、復帰点が多様化した場合又はイメージサイズが大きい場合は、すべての復帰ケースに応じたイメージを保持することができないおそれがある。
【００７８】
実施の形態２では、イメージ番号順にイメージを作成しているため、イメージ番号が後になるほど、そのイメージを生成できる確率が低下する。復帰時に後の番号のイメージが選ばれる確率が高い場合、実施の形態２の方法では、復帰要求に対するイメージが格納されていない可能性が高いことから、復帰時間を短くすることが困難となる。このような問題に対して、実施の形態３では、サスペンド時に、復帰する際に選択されるイメージの確率を受け付ける。これにより、復帰する可能性の高いケースから優先してイメージを生成できるので、復帰時にイメージのミスヒットの確率が低減し得る。
【００７９】
図１４は、実施の形態３にかかる半導体装置３００の構成を示す図である。実施の形態３にかかる半導体装置３００のハードウェア構成は、図１０に示した実施の形態２にかかる半導体装置２００のハードウェア構成と実質的に同様である。実施の形態３にかかる半導体装置３００には、さらに、図１０に示した構成に加え、復帰制御部６０７に入力される復帰確率１３０９が追加されている。復帰確率１３０９は、復帰要求番号３０９それぞれに対応した復帰確率を復帰制御部６０７に与える。復帰確率１３０９は、対応する復帰要求番号３０９が発生する確率を示す。
【００８０】
復帰確率１３０９は、例えばニューラルネットワーク等の機械学習によって学習を行うことで算出される。各復帰要求番号３０９に対応する復帰確率１３０９は、機器の種類及び使用される環境等によって変化し得る。したがって、復帰確率１３０９は、機器それぞれの入力パラメータと復帰要求番号３０９との関係を学習することで算出（推定）される。入力パラメータは、センサ等によって取得される。ここで、機器がプリンタの場合、入力パラメータは、例えば、サスペンド時の日時、サスペンド直前に実行したジョブ、最近のジョブの実行間隔、部屋の明るさ、周囲の音量などであってもよい。したがって、ある復帰要求番号３０９に対応する復帰確率１３０９は、サスペンド時の入力パラメータによって異なる。
【００８１】
図１５Ａ及び図１５Ｂは、実施の形態３にかかる半導体装置３００によって行われるサスペンド動作を示すフローチャートである。なお、Ｓ４００〜Ｓ４２５及びＳ７００の処理は、図１１に示した処理と実質的に同様であるので、説明を省略する。ＣＰＵ６１３は、複数のイメージの生成（Ｓ７０１）の前に、復帰要求スコアを算出する（ステップＳ１０００）。ＣＰＵ６１３は、この復帰要求スコアによって、イメージの優先順位付けを行って、複数のイメージの生成順序を決定する（ステップＳ１００１）。ここで、復帰要求スコアは、復帰するイメージ番号それぞれに対して、サスペンド時の状態から復帰する際に選択される確率の高さを表すものである。復帰要求スコアが高いほど、対応するイメージが復帰先となる確率が高い。したがって、復帰要求スコアが高いイメージほど先に生成されるように、生成順序が決定される。
【００８２】
図１６は、実施の形態３にかかる復帰要求スコアの生成方法を説明するための図である。まずサスペンド時の入力パラメータから、復帰要求番号３０９それぞれについての復帰確率１３０９が算出される。そして、復帰制御部６０７に復帰確率１３０９が入力される。ＣＰＵ６１３は、復帰確率１３０９が与えられると、テーブル１１００に示すように、復帰要求番号３０９それぞれに対応した復帰要求スコアを算出する。
【００８３】
テーブル１１００は、復帰要求番号３０９（＃１〜＃７）と、イメージ番号（＃１〜＃４）と、復帰要求スコアとを対応付ける。テーブル１１００における復帰要求スコアは、対応する復帰要求番号３０９に関する復帰確率１３０９に応じて定められる。したがって、復帰確率１３０９が高いほど、対応する復帰要求スコアは高くなる。
【００８４】
そして、ＣＰＵ６１３は、得られた復帰要求スコアを、復帰先のイメージごとに合計する。これにより、ＣＰＵ６１３は、テーブル１１０１に示すように、イメージ番号それぞれに応じた復帰要求スコア（優先度）を取得する（Ｓ１０００）。ＣＰＵ６１３は、この復帰要求スコアが高いものから先にイメージが生成されるように、イメージ生成順序を決定する（Ｓ１００１）。図１６の例では、例えば、イメージ番号＃２の復帰要求スコアが最も高いので、イメージ番号＃２のイメージが最初に生成される。
【００８５】
その後、ＣＰＵ６１３は、イメージ生成順序を用いて、次に生成すべきイメージ番号Ｉを取得する（ステップＳ１００２）。そして、ＣＰＵ６１３は、書き込み検知機構６１２を有効化（Ｓ７０８）した後、イメージ番号Ｉの状態に、イメージを変更（つまり新しいイメージを生成）する（ステップＳ１００３）。その後、上述したＳ７０９〜Ｓ４２４の処理が行われる。なお、サスペンド制御部６１１は、Ｓ７１９の代わりに、ＭＭＵ＃Ｒのアドレスをアドレステーブル６１４の「Ｉ番」に登録する（ステップＳ１００４）。その後、Ｓ７２０，Ｓ４０９の処理の後、処理はＳ１００２に戻る。これにより、ＣＰＵ６１３は、Ｓ１００１の処理で決定された生成順序に従って、順にイメージを生成する。
【００８６】
実施の形態３にかかる半導体装置３００は、実施の形態２にかかる半導体装置２００と同様の構成により、上述した実施の形態にかかる効果と実質的に同様の効果を奏し得る。つまり、機器のサスペンドの際に複数のイメージを保持することによって、復帰時の書き戻し動作が不要となるので、機器の復帰処理を高速に行うことができる。
【００８７】
また、実施の形態３にかかるＣＰＵ６１３（制御部２０）は、実行状態の復帰確率に応じて当該実行状態に対応するイメージ（実行状態データ）それぞれの優先度（復帰要求スコア）を生成する。そして、ＣＰＵ６１３は、優先度が高いイメージを先に生成する。このような構成によって、実施の形態３にかかる半導体装置３００は、復帰確率が高いイメージ（実行状態データ）を優先的に格納できる。つまり、実施の形態３にかかる半導体装置３００は、イメージの生成時に、サスペンド状態からの復帰の際に発生し得る復帰要求番号を推測し、イメージの優先度を設定する。そして、半導体装置３００は、優先度の高いイメージから順にイメージを生成する。このような構成により、復帰時に復帰先がミスヒットとなる確率を低下させることができる。したがって、実施の形態２における、複数のイメージを保持する場合の性能低下（つまりイメージのミスヒット）を低減することができる。
【００８８】
（変形例）
なお、本実施の形態は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施の形態にかかる半導体装置によって制御される機器は、プリンタに限られず、サスペンド状態となり得る任意の機器であり得る。例えば、当該機器は、パソコン又はスマートフォンであってもよい。
【００８９】
また、上述した実施の形態にかかる半導体装置は、ＣＰＵだけでなく、サスペンド制御部及び復帰制御部を有するとしたが、このような構成に限られない。本実施の形態にあっかる半導体装置は、制御部２０としてサスペンド制御部及び復帰制御部の少なくとも一方を有しなくてもよい。この場合、ＣＰＵが、サスペンド制御部及び復帰制御部の処理を行ってもよい。しかしながら、半導体装置が、ＣＰＵだけでなくサスペンド制御部及び復帰制御部を有することで、上述したように、処理を高速に行うことができる、又は、サスペンド中にＣＰＵもサスペンドできるといった効果を奏することが可能となる。
【００９０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００９１】
１  半導体装置
１０  記憶部
１２  実行状態データ
２０  制御部
１００，２００，３００  半導体装置
１２０  記憶部
１３０  イメージ
３０２，６１３  ＣＰＵ
３０３，６１１  サスペンド制御部
３０４，６０７  復帰制御部
３０５  イメージテーブル
３０８  復帰指示
３１０  領域テーブル
６０１  基準イメージ
６０２  ワークイメージ
６０３  イメージ差分
６０４  ワークＭＭＵテーブル
６０５  ＭＭＵテーブル
６０９  アドレス指定
６１４  アドレステーブル
１３０９  復帰確率
【図１】
2020177390.tif 000003
【図２】
2020177390.tif 000004
【図３】
2020177390.tif 000005
【図４Ａ】
2020177390.tif 000006
【図４Ｂ】
2020177390.tif 000007
【図５】
2020177390.tif 000008
【図６】
2020177390.tif 000009
【図７】
2020177390.tif 000010
【図８】
2020177390.tif 000011
【図９】
2020177390.tif 000012
【図１０】
2020177390.tif 000013
【図１１Ａ】
2020177390.tif 000014
【図１１Ｂ】
2020177390.tif 000015
【図１２】
2020177390.tif 000016
【図１３】
2020177390.tif 000017
【図１４】
2020177390.tif 000018
【図１５Ａ】
2020177390.tif 000019
【図１５Ｂ】
2020177390.tif 000020
【図１６】
2020177390.tif 000021