(57)【要約】【課題】大規模なメモリによる動作時の無駄な電力消費の抑制と、メモリの電源をＯＦＦからＯＮに移行する際の立ち上げ時間を処理に影響させない動作設定を行うことのできる、間欠動作に適した計算装置を提供する。【解決手段】  本発明の計算装置は、第１の命令コードを格納する第１の記憶手段と、第２の命令コードを格納する第２の記憶手段と、前記第１の記憶手段に格納された前記第１の命令コードと前記第２の記憶手段に格納された前記第２の命令コードとに従って命令を行う中央演算処理手段と、前記命令を受けて前記第１の記憶手段と前記第２の記憶手段とをオン状態もしくはオフ状態にする電源制御手段と、を備え、前記中央演算処理手段は、前記第１の命令コードを受けて前記第２の記憶手段を、前記第２の命令コードを受けて前記第１の記憶手段を、それぞれオン状態もしくはオフ状態にする命令を行うことを特徴とする。【選択図】      図３
2014160362.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令コードを格納する第１の記憶手段と、第２の命令コードを格納する第２の記憶手段と、
前記第１の記憶手段に格納された前記第１の命令コードと前記第２の記憶手段に格納された前記第２の命令コードとに従って命令を行う中央演算処理手段と、
前記命令を受けて前記第１の記憶手段と前記第２の記憶手段とをオン状態もしくはオフ状態にする電源制御手段と、を備え、
前記中央演算処理手段は、前記第１の命令コードを受けて前記第２の記憶手段を、前記第２の命令コードを受けて前記第１の記憶手段を、それぞれオン状態もしくはオフ状態にする命令を行う、計算装置。
【請求項２】
前記中央演算処理手段は、一つのクロックサイクルにおいて前記第１の記憶手段と前記第２の記憶手段のいずれか一方にアクセスするようにアクセスを切り替える、請求項１記載の計算装置。
【請求項３】
前記第１の記憶手段と、前記第２の記憶手段とは、不揮発メモリである、
請求項１または２記載の計算装置。
【請求項４】
前記中央演算処理手段は、
前記第１の命令コードを受けて前記第２の記憶手段をオン状態にする命令を、前記アクセスを前記第１の記憶手段から前記第２の記憶手段へ切り替える命令を行うよりも、前記第２の記憶手段がオン状態になるために必要な時間以上、先行して行い、
前記第２の命令コードを受けて前記第１の記憶手段をオン状態にする命令を、前記アクセスを前記第２の記憶手段から前記第１の記憶手段へ切り替える命令を行うよりも、前記第１の記憶手段がオン状態になるために必要な時間以上、先行して行う、
請求項２または３記載の計算装置。
【請求項５】
前記中央演算処理手段は、
前記第１の記憶手段と前記第２の記憶手段のそれぞれについて、オン状態とするための電力とオフ状態とするための電力との合計の電力と、動作を続ける電力と、を比較し、
それぞれの、前記合計の電力が前記動作を続ける電力よりも大きい場合、
それぞれの、前記オフ状態にする命令をスタンバイ状態にする命令に置換する、
請求項１から４の内の１項記載の計算装置。
【請求項６】
前記第１の記憶手段の記憶容量は前記第２の記憶手段の記憶容量よりも小さい、
請求項１から５の内の１項記載の計算装置。
【請求項７】
前記中央演算処理手段は、
外部からの割り込み命令によって前記中央演算処理手段をオフ状態からオン状態とした後に開始する開始命令コードから、次に前記中央演算装置をオフ状態とする命令コードまでの命令コード群を、
前記開始命令コードを含みかつ所定の命令コード長を有するサブ命令コード群１と、サブ命令コード群２とに分割し、
前記所定の命令コード長を、前記第１の記憶手段をオン状態にするための電力と前記第１の記憶手段から命令コードを読み込んで実行する電力との合計が、前記第２の記憶手段から命令コードを読み込んで実行する電力よりも小さくなる命令コード長以上の長さとし、
前記サブ命令コード群１を前記第１の記憶手段に格納する、
請求項６記載の計算装置。
【請求項８】
前記中央演算処理手段は、
前記サブ命令コード群２、もしくは、
前記外部からの割込み命令以外で前記中央演算装置の電源をオン状態とした後に開始する開始命令コードから、次に前記中央演算装置の電源をオフ状態とする命令コードまでの命令コード群、において
各々の命令コードの命令コード長を所定期間内での呼び出し回数で除して得られる値が小さい命令コードから順に前記第１の記憶手段に格納する、
請求項６または７記載の計算装置。
【請求項９】
前記中央演算処理手段は、
前記外部からの割り込み命令が実行される頻度を受けて、時刻やセンサーからの信号を定期的に計測して作成したデータテーブルに基づいて所定期間の前記外部からの割込み命令の回数を推定し、前記命令の回数と所定の値との大小関係が入れ替わった時点で、前記中央演算処理手段が実行する命令コードを前記第１と第２の記憶手段に再格納、もしくは、すでに格納された前記命令コードとの差分を格納する、
請求項１から８の内の１項記載の計算装置。
【請求項１０】
第１の命令コードを第１の記憶手段に格納し、第２の命令コードを第２の記憶手段に格納し、
前記第１の記憶手段に格納された前記第１の命令コードと前記第２の記憶手段に格納された前記第２の命令コードとに従って命令を行い、
前記命令を受けて前記第１の記憶手段と前記第２の記憶手段とをオン状態もしくはオフ状態にする電源制御を行い、
前記第１の命令コードを受けて前記第２の記憶手段を、前記第２の命令コードを受けて前記第１の記憶手段を、それぞれオン状態もしくはオフ状態にする命令を行う、計算装置の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子回路の電源をＯＦＦ・ＯＮすることによる回路動作のＯＦＦからＯＮへのレスポンスを改善しつつ消費電力を抑える、間欠動作に適した計算装置およびその動作方法に関する。
【背景技術】
【０００２】
半導体集積回路はスケーリングが進むことでセルサイズの縮小が進む一方で、セルサイズの縮小によってリーク電流が増大することにより、待機電力（スタンバイリーク）が増加してきている。そこで、この待機電力を低減させるために、例えば図１のように各回路ブロックに電源スイッチを取り付けて、非動作状態の回路ブロックへの電源供給を一時的に停止させて、待機電力を低減させる取り組みがなされている。特許文献１には、計算装置（マイクロプロセッサ）において、ハードウェアの規模を増大することなく、またユーザーの開発負担を伴わず、ソフトウェアの汎用性を確保しながら、きめ細かな電力制御を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２９６１２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示された技術においては、以下の課題に対する解決がなされていなかった。
【０００５】
すなわち、マイクロコンピュータのような計算装置においては、システムの非動作時にマイクロコンピュータを構成する中央演算装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ。以下、ＣＰＵと略す。）とメモリとの電源をこまめにＯＦＦすることで待機電力を低減することができる。しかしながら、ＯＮ・ＯＦＦの切り替えをあまりに細かく設定すると、ＯＮ時の動作時間が短いプログラムが多数発生し、その結果処理速度が低下する問題が発生してしまう。適切なＯＮ・ＯＦＦの切り替えを行うプログラム長の設定をおこなうことが第１の課題である。
【０００６】
また、図２に示すように、ＣＰＵとメモリとを備えるマイクロコンピュータの動作のＯＮ・ＯＦＦに際して、プログラムコードを格納するメモリが単一であるマイクロコンピュータにおいては、小規模な動作期間中であっても大規模なメモリ回路全体を動作させる必要がある。そのため、無駄な電力を必要とし、待機電力を減らすことができない。さらに、大規模なメモリの電源をＯＦＦからＯＮ状態に移行するためには長い立ち上げ時間を要するため、立ち上げ時間の占める割合がＯＮ動作時の処理時間に対して大きくなり、レスポンスの遅れが顕著になってくる。すなわち、大規模なメモリによる動作時の無駄な電力消費の抑制と、立ち上げ時間を処理に影響させない動作設定とが、第２の課題である。
【０００７】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、マイクロコンピュータの電源をＯＦＦ・ＯＮすることにより消費電力を低減する際に、処理速度の低下をさせない適切な電源のＯＮ・ＯＦＦの切り替えを行うプログラム長の設定をおこない、かつ、大規模なメモリによる動作時の無駄な電力消費の抑制と、電源をＯＦＦからＯＮに移行する際の立ち上げ時間を処理に影響させない動作設定を行うことのできる、間欠動作に適した計算装置およびその動作方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の計算装置は、第１の命令コードを格納する第１の記憶手段と、第２の命令コードを格納する第２の記憶手段と、前記第１の記憶手段に格納された前記第１の命令コードと前記第２の記憶手段に格納された前記第２の命令コードとに従って命令を行う中央演算処理手段と、前記命令を受けて前記第１の記憶手段と前記第２の記憶手段とをオン状態もしくはオフ状態にする電源制御手段と、を備え、前記中央演算処理手段は、前記第１の命令コードを受けて前記第２の記憶手段を、前記第２の命令コードを受けて前記第１の記憶手段を、それぞれオン状態もしくはオフ状態にする命令を行うことを特徴とする。
【０００９】
本発明の計算装置の動作方法は、第１の命令コードを第１の記憶手段に格納し、第２の命令コードを第２の記憶手段に格納し、前記第１の記憶手段に格納された前記第１の命令コードと前記第２の記憶手段に格納された前記第２の命令コードとに従って命令を行い、前記命令を受けて前記第１の記憶手段と前記第２の記憶手段とをオン状態もしくはオフ状態にする電源制御を行い、前記第１の命令コードを受けて前記第２の記憶手段を、前記第２の命令コードを受けて前記第１の記憶手段を、それぞれオン状態もしくはオフ状態にする命令を行うことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、マイクロコンピュータの電源をＯＦＦ・ＯＮすることにより消費電力を低減する際に、処理速度の低下をさせない適切な電源のＯＮ・ＯＦＦの切り替えを行うプログラム長の設定をおこない、かつ、大規模なメモリによる動作時の無駄な電力消費の抑制と、電源をＯＦＦからＯＮに移行する際の立ち上げ時間を処理に影響させない動作設定を行うことのできる、間欠動作に適した計算装置およびその動作方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】各回路ブロックに電源スイッチを取り付けて非動作状態の回路ブロックへの電源供給を一時的に停止させる構成を示す図である。
【図２】マイクロコンピュータ（ＣＰＵ＋メモリ）の動作（ＯＮ、ＯＦＦ）と、動作時に使用するメモリの記憶領域を説明する図である。
【図３】本発明の第１および第２の実施形態のマイクロコンピュータの構成を示す図である。
【図４】本発明の第１および第２の実施形態のマイクロコンピュータの動作（ＯＮ、ＯＦＦ）を説明する図である。
【図５Ａ】処理Ａ実行時の小規模メモリ（１）の記憶領域を説明する図である。
【図５Ｂ】処理Ｂ実行時の大規模メモリ（２）の記憶領域を説明する図である。
【図５Ｃ】処理Ｃ実行時の小規模メモリ（１）と大規模メモリ（２）の記憶領域を説明する図である。
【図６】本発明の第１の実施形態のマイクロコンピュータの動作（ＯＮ、ＯＦＦ）を説明する図である。
【図７】本発明の第２の実施形態のマイクロコンピュータの構成を示す図である。
【図８】本発明の第２の実施形態のマイクロコンピュータの動作（ＯＮ、ＯＦＦ）を説明する図である。
【図９】本発明の実施例のマイクロコンピュータ（あるいは計算機）の構成を示す図である。
【図１０】本発明の実施例のマイクロコンピュータ（周辺回路を含む）の構成を示す図である。
【図１１】本発明の実施例のマイクロコンピュータのＯＮ・ＯＦＦ動作時間を示す図である。
【図１２】ＣＰＵの電源がＯＮ状態になった後の実行コード中に条件分岐命令がある場合の説明図である。
【図１３】作成したプログラムコードのうち、タイマーモジュール以外の割り込み命令によって実行を開始するコード群の扱いを示す図である。
【図１４Ａ】小規模メモリ（メモリ（１））と大規模メモリ（メモリ（２））の消費電力と実行サイクル数との関係を説明する図である。
【図１４Ｂ】大規模メモリの立ち上が電力を除いた、小規模メモリ（メモリ（１））と大規模メモリ（メモリ（２））の消費電力と実行サイクル数との関係を説明する図である。
【図１５】タイマーモジュールからの割り込み命令によってＯＮ状態になった後に開始されるプログラムコードを示す図である。
【図１６】小規模メモリと大規模メモリへの、サブ命令コード群Ｐｆ、サブ命令コード群Ｐｆ以外のプログラムコード（Ｐｂ、、、Ｐｉ、、、）の格納を説明する図である。
【図１７】命令コード群（セット単位）の格納先決定方法のフローをまとめた図である。
【図１８】格納先が確定した命令コード群のＯＮ、ＯＦＦ命令のタイミングの最適化を説明する図である。
【図１９】マイクロコンピュータの各構成要素のＯＦＦ処理のために必要な電力とスタンバイ時の電力をまとめた図である。
【図２０】メモリのＯＦＦ処理の最適化前後でのＣＰＵとメモリの動作を説明する図である。
【図２１】各条件化での割り込み頻度の平均値［１／ｓｅｃ］をまとめた図である。
【発明を実施するための形態】
【００１２】
以下、図を参照しながら、本発明の実施形態を詳細に説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
（第１の実施形態）
図３は、本発明の第１の実施形態のマイクロコンピュータの構成を示す。本実施形態のマイクロコンピュータは、中央演算装置（ＣＰＵ）1、小規模な不揮発メモリ（１）２、大規模な不揮発メモリ（２）３、電源制御回路（ＰＭＵ）４、信号線（バス）５を備える。本実施形態では、少なくとも２つの不揮発メモリをマイクロコンピュータの処理コードを格納する記憶装置として用いる。
【００１３】
図３に示すように２つのメモリ（小規模な不揮発メモリ（１）２と大規模な不揮発メモリ（２）３）は、共通の信号線（バス）５を介してＣＰＵ１に接続されており、これらのメモリにはＣＰＵ１の制御命令、および、演算用のデータが格納される。任意のクロックサイクルにおいて、ＣＰＵ１は不揮発メモリ（１）２あるいは不揮発メモリ（２）３のいずれか一方にアクセスできる。各メモリはそれぞれＣＰＵ１がアクセスしない時に、ＣＰＵ１の制御命令を受けた電源制御回路（ＰＭＵ）４により、クロックを止めるスタンバイ状態、もしくは、供給電源を止めてＯＦＦ状態に遷移させることができる。
【００１４】
図３に示す構成によれば、図４に示す動作が可能となる。図４は、本発明の第１の実施形態のマイクロコンピュータの動作（ＯＮ、ＯＦＦ）を説明する図である。ＣＰＵによる各処理のそれぞれの処理コードを格納したメモリのみを、ＣＰＵの電源立ち上げ時にＯＮ状態にする。すなわち、処理Ａの立ち上げ時には不揮発メモリ（１）２をＯＮに、処理Ｂの立ち上げ時には不揮発メモリ（２）３をＯＮにする。
【００１５】
以上の方法により、単一のメモリを使用した図２の場合に比べて、図５Ａや図５Ｂに示すように、処理Ａや処理Ｂの実行時にアクセスされないメモリ領域を小さくできるため、不必要な待機電力を抑えることができる。この時、メモリが不揮発メモリであることで、電源がＯＦＦされてもデータは保持されるため、データのバックアップを考慮せずに電源を遮断できる。
【００１６】
不揮発性メモリとしては、フラッシュメモリでも良い。ただし、各メモリで独立に命令コードを処理するためにはデータ領域とプログラム領域をそれぞれ確保する必要がある。特にデータ領域は書き換え頻度が高い場合が多く、本実施形態の不揮発性メモリとしては、書き換え耐性の高い不揮発性メモリを用いることが望ましい。例えば、ＰＲＡＭ（相変化メモリ）やＦｅＲＡＭ（強誘電体メモリ）が望ましい。ＭＲＡＭ（磁気抵抗メモリ）は書き換え制限がないため、もっとも望ましい不揮発メモリである。
【００１７】
また、記憶容量の小さいメモリの方が記憶容量の大きいメモリに比べて電源を切った状態からの立ち上がり時間が短いため、特にＯＦＦ状態からＯＮ状態に遷移して処理を開始するプログラムコードのレスポンスも向上させることができる。すなわち、処理時間が短く頻繁な処理Ａのプログラムコードを小規模な不揮発メモリ（１）２に格納しておくことによって、小規模メモリの短時間での立ち上がりによる早いレスポンスを実現することができる。
【００１８】
２つの不揮発メモリ（不揮発メモリ（１）２、不揮発メモリ（２）３）の回路規模（もしくは記憶容量）は異なることが望ましく、記憶容量比で１００倍以上異なることが望ましいが、１０倍以上異なっていれば十分な効果を発揮できる。さらに規模の小さい側のメモリ（不揮発メモリ（１）２）のサイズは、少なくとも数１０から数１００命令程度のまとまった命令が実行できるサイズであることが望ましく、１０００バイト以上の記憶容量が好適である。
【００１９】
本実施形態によれば、マイクロコンピュータの電源をＯＦＦ・ＯＮすることにより消費電力を低減する際に、処理速度を低下させることのない適切な電源のＯＮ・ＯＦＦの切り替えを行うプログラム長の設定をおこない、かつ、大規模なメモリによる動作時の無駄な電力消費の抑制と、電源をＯＦＦからＯＮに移行する際の立ち上げ時間を処理に影響させない動作設定を行うことのできる、間欠動作に適したマイクロコンピュータおよびその動作方法を提供することができる。
（第２の実施形態）
第２の実施形態のマイクロコンピュータの構成要素は、図３に示す、中央演算装置（ＣＰＵ）1、小規模な不揮発メモリ（１）２、大規模な不揮発メモリ（２）３、電源制御回路（ＰＭＵ）４、信号線（バス）５を備える。本実施形態でも、第１の実施形態と同様に、少なくとも２つの不揮発メモリをマイクロコンピュータの処理コードを格納する記憶装置として用いる。
【００２０】
図３に示すように２つのメモリ（小規模な不揮発メモリ（１）２と大規模な不揮発メモリ（２）３）は、共通の信号線（バス）５を介してＣＰＵ１に接続されており、これらのメモリにはＣＰＵ１の制御命令、および、演算用のデータが格納される。任意のクロックサイクルにおいて、ＣＰＵ１は不揮発メモリ（１）２あるいは不揮発メモリ（２）３のいずれか一方にアクセスできる。各メモリはそれぞれＣＰＵ１がアクセスしない時に、ＣＰＵ１の制御命令を受けた電源制御回路（ＰＭＵ）４により、クロックを止めたり、クロック停止と共に電源電圧を下げたりするスタンバイ状態、もしくは、供給電源を止めてＯＦＦ状態に遷移させることができる。
【００２１】
本発明の第２の実施形態のマイクロコンピュータでは、第１の実施形態のマイクロコンピュータをさらに高度化することができる。すなわち、第１の実施形態のマイクロコンピュータは、演算プログラムが長く、かつ、処理コードが２つのメモリ（不揮発メモリ（１）２、不揮発メモリ（２）３）の両方に格納されている図４の処理Ｃの場合、図４に示すように２つのメモリが実行時に同時にＯＮ状態となり、動作時の消費電力が増大する。図５Ｃは、処理Ｃの実行時の小規模メモリ（１）２と大規模メモリ（２）３の記憶領域を示す。
【００２２】
各々のメモリへのアクセス（信号）が入るタイミングを契機に、ＯＮ状態に自動的に遷移する制御回路を電源制御回路４に組み込むことで、図６に示すように、処理Ｃでアクセス中の一方のメモリのみ適宜ＯＮ状態にすることは可能である。しかしながら、この場合は、処理Ｃの実行中にＯＦＦ状態にあった一方のメモリの立ち上がりまでの待機処理が入ってくるため、処理Ｃを完了する時間が遅延してしまう。第２の実施形態では、第１の実施形態を高度化し、このような全体処理時間の遅延を抑制しつつ、消費電力を低減する。
【００２３】
図７は、本発明の第２の実施形態のマイクロコンピュータの構成を示す図である。第２の実施形態のマイクロコンピュータは、それぞれのメモリ（不揮発メモリ（１）１１、不揮発メモリ（２）１２）に格納された命令を中央演算装置（ＣＰＵ）１０が実行する。任意のクロックサイクルにおいて、ＣＰＵ１０は不揮発メモリ（１）１１あるいは不揮発メモリ（２）１２のいずれか一方にアクセスできる。各メモリはそれぞれＣＰＵ１０がアクセスしない時に、ＣＰＵ１の制御命令を受けた電源制御回路（ＰＭＵ）１３により、クロックを止めるスタンバイ状態、もしくは、供給電源を止めてＯＦＦ状態に遷移させることができる。
【００２４】
ＣＰＵ１０が各メモリにアクセスすることによって得られた命令の中には電源スイッチ１４、電源スイッチ１５を切り替える命令も含まれている。ＣＰＵ１０が各メモリから各電源スイッチ１４、１５を切り替える命令を受け取った時には、ＣＰＵ１０から電源制御回路１３に対して各電源スイッチ１４、１５のＯＮ、ＯＦＦ処理命令が発行される。電源制御回路１３はこの処理命令に従って、ＣＰＵ１０と個々のメモリ（不揮発メモリ（１）１１、不揮発メモリ（２）１２）の電源スイッチ１４、１５を適宜ＯＮ、ＯＦＦする。なお、上記マイクロコンピュータの電源制御回路１３は、各メモリに格納された命令以外にも、タイマーモジュールの制御レジスタに設定された時間で出力される信号（図７に記載なし）、もしくは、外部からの割り込み信号によって、各電源スイッチ１４、１５をそれぞれＯＮ、ＯＦＦすることができる電源制御回路である。
【００２５】
２つの不揮発メモリ（不揮発メモリ（１）１１、不揮発メモリ（２）１２）の回路規模（もしくは記憶容量）は異なることが望ましく、記憶容量比で１００倍以上異なることが望ましいが、１０倍以上異なっていれば十分な効果を発揮できる。さらに規模の小さい側のメモリ（不揮発メモリ（１）１１）のサイズは、少なくとも数１０から数１００命令程度のまとまった命令が実行できるサイズであることが望ましく、１０００バイト以上の記憶容量が好適である。以降、回路規模（記憶容量）の大きいメモリ（不揮発メモリ（２）１２）を大規模メモリ、規模の小さいメモリ（不揮発メモリ（１）１１）を小規模メモリと呼ぶ。
【００２６】
なお、大・小規模の２つのメモリの他に、第３、第４のメモリを併設してもよい。第３のメモリには、大規模メモリと小規模メモリに格納された制御命令の両方が利用するデータや特定関数を実現する命令群を格納するメモリとして使用しても良い。そして、第３のメモリの電源スイッチのＯＮ、ＯＦＦは大・小規模メモリの両方のＯＮ、ＯＦＦと同期させても良い。また、ＣＰＵ１０は小規模で高速な第４のメモリを有し、第４のメモリをキャッシュとして利用しても良い。この場合の第４のメモリは、第１から第３の不揮発性メモリへのデータの書き戻しの機能があれば揮発性メモリでも良い。また、上記不揮発メモリに自身をＯＦＦする命令を格納しておき、不揮発メモリに格納された命令コードを一時的に第３のメモリにコードを格納させてＣＰＵ１０と第３のメモリとの間でのみ命令コードの読み出しと実行をしている期間において上記の不揮発メモリの電源をＯＦＦ状態にしてもよい。なお、第３、第４のメモリはそのひとつだけを備える場合もあれば、その両方を備える場合もある。
【００２７】
処理するデータや制御するデバイスがない期間があって、ＣＰＵ１０とメモリ（不揮発メモリ（１）１１、不揮発メモリ（２）１２）を含むマイクロコンピュータの電源をＯＦＦ状態にしたい場合は、ＣＰＵ１０の電源をＯＦＦする命令をプログラムコード内に記述すればよい。なお、ここでいうＣＰＵ１０をＯＦＦする命令とは、ＣＰＵ１０の命令アーキテクチャの中に設けられた命令セットの１つ、もしくは、ある特定のレジスタにあるデータを書き換える命令であって、上記命令によって電源制御回路１３がＣＰＵ１０の電源スイッチ１６をＯＦＦすることを開始する命令であればよい。
【００２８】
マイクロコンピュータのＯＮ時間は、タイマーモジュール（図７に記載なし）からの信号によってＣＰＵ１０の電源がＯＮ状態になって実行される最初の命令から、再度ＣＰＵ１０をＯＦＦ状態にする命令が処理されるまでの命令サイクル数に内部システムクロックの周期を乗じた値とする。また、マイクロコンピュータのＯＦＦ時間は、ＣＰＵ１０の電源のＯＦＦ命令が実行されてからタイマーによって次のＣＰＵ１０の電源がＯＮするまでの時間として、ＣＰＵ１０のＯＦＦ処理の前に実行されたタイマーモジュールへの命令コードとタイマーモジュールの設定レジスタ（ＯＮ命令が実行されるカウンター値やタイマーモジュールの動作クロック）の値から算出する。
【００２９】
なお、ＣＰＵ１０の電源がＯＮ状態になった後の実行コード中に条件分岐命令があり、分岐先ごとに異なる処理コードとＣＰＵ１０のＯＦＦ処理の実行コードが含まれる場合、ＯＮから条件分岐前までの実行時間と、各分岐の分岐確率と分岐先でＣＰＵ１０の電源がＯＦＦされるまでの実行時間の積の合算値を足し合わせた値をマイクロコンピュータの（推定）ＯＮ時間とする。ＣＰＵ１０の電源がＯＮされてからＯＦＦ処理を経由して再度ＯＮされるまで時間から、先ほど算出したＯＮ時間を差し引いた時間をマイクロコンピュータの（推定）ＯＦＦ時間とする。なお、条件分岐確率を特に指定しない場合は、各分岐が等確率であるとして扱う。
【００３０】
また、ＣＰＵ１０がＯＮ動作を開始してからＯＦＦ動作に移るまでに実行されるコード群のコード長を算出する場合において、ＣＰＵ１０のＯＮ動作の実行コード中に条件分岐命令があり、かつ、分岐先ごとに異なるコードとともにＯＦＦ処理の実行コードを含む場合には、ＯＮ状態になって最初に実行される命令から条件分岐命令前までのコード長と、各条件分岐先においてＯＦＦ処理が実行されるコードまでのコード長の合算値を足し合わせた値を上記コード群のコード長とする。
【００３１】
作成したプログラムコードのうちタイマーモジュール以外の割り込み命令によってＣＰＵ１０がＯＮしてからＯＦＦするまでの間に実行されるコード群に対しては、所定のコード長を境にさらに２分割し、作成した２つのプログラムコードをそれぞれ１つの集まりとして扱う。作成したプログラムコードをマイクロコンピュータ内のメモリに格納する際には、上記の集まりをもつプログラムコード群を１つのセットとしてセット単位でメモリに格納しても良い。
【００３２】
なお、上記の所定コード長とは、「小規模メモリの立ち上げ電力」と「コードを小規模メモリに格納した場合に小規模メモリからの命令呼出しによって計算を実行するために必要な電力と実行時間の積」との和が、「コードを大規模メモリに格納した場合に大規模メモリからの命令呼出しによって計算を実行するために必要な電力と実行時間の積」よりも小さくなるコード長と同程度、もしくは、それよりも長いコード長とする。ＯＮ状態になって最初に実行する命令コードを含み、かつ、所定のコード長を有するサブ命令コード群１、その残りのコードをサブ命令コード群２とする。
【００３３】
また、タイマーモジュールの割り込み命令によってＣＰＵ１０がＯＮしてからＯＦＦまでの間に実行されるコードは、これらのコードを１つの集まりとして扱う。作成したプログラムコードをマイクロコンピュータ内のメモリに格納する際には、上記の集まりをもつコード群を１つのセットとしてセット単位でメモリに格納しても良い。
【００３４】
作成したプログラムコードをマイクロコンピュータ内のメモリに格納する際、セット単位で格納するメモリ領域を確保しても良い。まず、割り込みに対するサブ命令コード群１を小規模メモリに格納するコード群として優先的に割り付ける。次に、サブ命令コード群１が全て格納された場合の小規模メモリの残りのメモリ空間に格納できる範囲内で、命令コード長を所定期間における呼び出し回数で除した値が小さい命令コード群（セット）から順に、小規模メモリに格納するコード群（セット）を決定する。また、小規模メモリに入りきらなかった残りの命令コード群（セット）は、大規模メモリに格納するコード群とする。
【００３５】
なお、上記の所定期間とはユーザーが任意に規定した期間でも良いが、望ましくは、マイクロコンピュータがある周期で同じ処理サイクルを繰り返す場合の周期と一致させることが望ましい。また、サブ命令コード群２で、割り込み頻度（もしくは、所定期間の呼び出し回数）を指定しない場合は、サブ命令コード２の呼び出し回数をゼロとして扱う。
【００３６】
小規模メモリに格納する命令コード群（セット）を決定していく過程で、小規模メモリに格納することがまだ決定していない命令コード群のセットと、すでに小規模メモリに格納されることが決定された命令群のセットとの間で、共通のデータや共通の特定関数を実現する命令群を持つ場合、小規模メモリに格納することが決定していない命令コード群は、上記の共通部分を取り除いてコード長を算出しなおしてもよい。新たに算出された命令コード長は、小規模メモリに格納する命令コード群のセットを決定する際の優先順位付けに随時反映させて利用しても良い。  
【００３７】
サブ命令コード群１の格納先が小規模メモリ、サブ命令コード群２の格納先が大規模メモリに割り付けられた場合、サブ命令コード群１には大規模メモリをＯＮにする命令を追加する。なお、大規模メモリをＯＮする命令は、ＣＰＵ１０のアクセスが小規模メモリから大規模メモリに切り替わる直前の命令よりも、大規模メモリが立ち上がる時間だけ前で実行されるようにメモリ内の格納先アドレスを調整して挿入する。
【００３８】
ＯＦＦ命令の挿入位置は、ＣＰＵ１０のアクセスが小規模メモリから大規模メモリに切り替わる直前の命令からスタートし、命令の時間軸における実行フローをさかのぼるようにして挿入位置を１命令ステップずつ前にしてみながら、シミュレーションによる評価を繰り返えし、最終的に、シミュレーション上でメモリ間でのアクセス先の移行時に、移行先の立ち上がりを待たなくてよくなった時点で挿入位置を固定する。なお、ＣＰＵのアクセスが小規模メモリから大規模メモリに切り替わる直前の命令からスタートするのではなく、大規模メモリが立ち上がる時間をシステムクロックで除して得られた商の値のステップ数分だけ、予めスキップして上記の評価サイクルを開始してよい。
【００３９】
また、セット間で共通のデータや共通の処理関数を実現するサブ命令コード群をもっているために、ある命令コード群のセットの中には、大規模メモリと小規模メモリのそれぞれに格納先を割り付けられた命令コード群を含むことがある。この場合、大規模メモリに格納予定の命令コード群のセットの中に小規模メモリをＯＮ、ＯＦＦする命令、小規模メモリに格納予定の命令コード群のセットの中に大規模メモリをＯＮ、ＯＦＦする命令をそれぞれ追加する。
【００４０】
大規模（もしくは小規模メモリ）をＯＮする命令の追加位置は、ＣＰＵ１０のアクセスが小規模メモリ（もしくは大規模メモリ）から大規模メモリ（もしくは小規模メモリ）に切り替わる直前に実行されるコードよりも、大規模メモリ（もしくは小規模メモリ）が立ち上がる時間だけ前で実行されるように挿入する。
【００４１】
また、大規模メモリ（もしくは小規模メモリ）をＯＦＦする命令は、ＣＰＵのアクセスが大規模メモリ（もしくは小規模メモリ）から小規模メモリ（もしくは大規模メモリ）に切り替わった後に実行されるように小規模メモリに格納する。なお、小規模メモリにアクセスが移って最初に実行される命令コードの直後に実行されるように挿入するのが最も望ましい挿入場所となる。
【００４２】
実測値やシミュレーションによる計算値から、ＣＰＵ１０とメモリのあるＯＦＦ状態において、そのスタンバイ電力が、ＣＰＵ１０とメモリをＯＦＦ処理に必要な電力よりも小さかった場合、マイクロコンピュータ（ＣＰＵとメモリ）をＯＦＦする命令を、ＣＰＵ１０とメモリ（不揮発メモリ（１）１１、不揮発メモリ（２）１２）に供給するクロックを止めるスタンバイ命令に変換してプログラムを記述しておいてもよい。また、ＣＰＵ１０の動作中であってメモリのみＯＮ、ＯＦＦ状態に遷移する場合は、メモリのあるＯＦＦ状態において、そのスタンバイ電力が、メモリのＯＦＦ処理に必要な電力よりも小さかった場合、メモリをＯＦＦする命令を削除するか、もしくは、処理をスルーするＮＯＰ命令などに変更しても良い。
【００４３】
なお、ＯＦＦする命令を変換するのではなく、マイクロコンピュータ内にスタンバイ電力とＯＮ処理電力を随時評価し、かつ、電源をＯＦＦしない方がいいと判断した場合に、電源制御回路１３がＯＦＦ処理を実際に実行するのを阻止する演算回路を持たせてもよい。
【００４４】
なお、ＯＦＦ命令をスタンバイ命令に変換後の命令コード群をもとに、命令コード群のセットの単位とＯＮ、ＯＦＦ時間を再評価し、命令コード群（セット）の格納先（大・小規模メモリ）の割付作業から新たに開始しても良い。
【００４５】
また、割り込み頻度とともに、マイクロコンピュータが置かれている環境を評価できる時刻や各種センサーなどの信号を定期的に計測してデータテーブルを作成し、データテーブルを元に所定期間における割り込み頻度（割り込み命令の呼び出し回数）を推定し、割り込み頻度の推定値と所定の値の大小関係が変化したときを契機に、プログラムコードを大・小規模メモリに再格納、もしくは、すでに格納されたプログラムコードとの差分のみを格納してもよい。
【００４６】
なお、データテーブルのデータは、マイクロコンピュータ内部、外部どちらに保管していてもよい。マイクロコンピュータを含む端末が、無線および有線通信を通じてネットワークを形成しているときは、他の端末、もしくは、さらに上位の親機からの信号をもとに書き換えタイミングを調整しても良い。また、外部からの信号によってタイマーモジュールや内部クロックの設定値が変更されてＯＮ、ＯＦＦ時間が変更される場合にも、タイマーモジュールの設定値を変更するタイミングで同時にプログラムコードの再格納やコード間での再配置を行っても良い。
【００４７】
以下、第２の実施形態の効果を述べる。
【００４８】
ＣＰＵ１０がアクセスしているメモリ（不揮発メモリ（１）１１、または不揮発メモリ（２）１２）に格納されているコードの中に、アクセスしていないメモリの電源をＯＮ、ＯＦＦする命令を記述しておくことで、アクセスしていないメモリの電源を適宜ＯＮ、ＯＦＦできる。従って、演算プログラムの長く、かつ、コードが２つのメモリの両方に格納されているような処理の期間中であっても２つのメモリを同時に立ち上げる必要がない期間は、使用していないメモリの電源をＯＦＦすることができる。このため動作時の消費電力を低減することができる。
【００４９】
電源のＯＮ、ＯＦＦは、メモリ上のコードから制御されるため、マイクロコンピュータが実行するプログラムコード（アプリケーション）に合わせて、最適なＯＮ、ＯＦＦのタイミングを柔軟に選択することが可能である。このため、ＣＰＵのアクセス先がメモリ間をまたいで移動する際には、移動先のメモリアドレスを有する不揮発メモリの電源が予めＯＮになるように移行元になる不揮発メモリに格納された電源のＯＮ、ＯＦＦに関するコードを調整することで、移行先のメモリが立ち上がるのを待つことによる処理速度の低下も抑えることができる。
【００５０】
また、ＯＦＦ時間が短く、電源のＯＦＦ処理によってリーク電流を無くすよりも、電源の再立ち上げなどによる消費電力のオーバーヘッドが上回る処理の実行を阻止する。このため、コーディングの際に過剰に設定してしまった電源のＯＮ、ＯＦＦ切り替え処理によって逆に消費電力が増大することを防ぐことができる。
【００５１】
また、マイクロコンピュータが、ＯＮ、ＯＦＦを繰り返しながら処理をする中で、なるべく大規模メモリをＯＦＦした状態のまま、小規模メモリとＣＰＵのみがＯＮ、ＯＦＦするようにプログラムコードがメモリ内に格納されているため、アクセスしないメモリ領域や周辺回路に対する無駄な給電をより効果的に抑えることができる。また、省電力に最適なコードの格納状態は、マイクロコンピュータが置かれた環境が変わることによる割り込み頻度の変化に合わせて随時更新することができる。
【００５２】
応答性の要求の高いタイマーモジュール以外からの割り込み命令とそれに続く実行コードは二分化されて、ＯＮ時に開始するコードを含むサイズの小さくなったサブ命令コードが小規模メモリに格納されている。小規模メモリはＯＮ時の立ち上がりが早いため、上記の割り込みが発生してから処理を終了するまでの時間が短縮化されている。また、二分化してアクセスの移動によるタイムラグのない２つのメモリにそれぞれコードを格納するため、上記割り込みによって開始するコード群のサイズは、小規模メモリに格納するサイズより小さくしなければいけないという制約もない。また、上記のコードをすべて大規模メモリに格納して動作させるよりも省電力である。従って、コードサイズの制限がなく、かつ、レスポンス良く、省電力で割り込み処理を実行できる。
【００５３】
なお、上記説明のマイクロコンピュータを計算装置と置き換えても同様である。
【実施例】
【００５４】
以下、本発明の実施例のマイクロコンピュータについて説明する。
（マイクロコンピュータの構成）
図９は、本発明の実施例のマイクロコンピュータ（あるいは計算装置）の構成を示す図である。図９に示すように、マイクロコンピュータの内部では、中央演算装置（ＣＰＵ）２０である演算回路と、大小、規模の異なる２つの不揮発性メモリ（不揮発メモリ（１）２１、不揮発メモリ（２）２２）と電源を制御する電源制御回路（ＰＭＵ）２３の他に、タイマーモジュールや周辺モジュール（ＩＯ回路や通信回路など）を有する各種モジュール２４が、信号線（バス）２５を介してお互いに接続されている。
【００５５】
２つの不揮発性メモリには、演算回路用の制御命令、および、データが格納される。データ領域においては書き換えが頻繁に起こるため、揮発性メモリとしては、書き換え耐性が高いＭＲＡＭ（磁気抵抗メモリ）を好適に用いることができる。
【００５６】
ＣＰＵ２０は、任意のクロックサイクルにおいて、不揮発メモリ（１）２１あるいは不揮発メモリ（２）２２のいずれか一方にアクセスできる。ＣＰＵ２０やメモリ（不揮発メモリ（１）２１、不揮発メモリ（２）２２）、各種モジュール２４は、それぞれアクセスしない時にクロックを止めたり、クロック停止と共に電源電圧を下げたりするスタンバイ状態の他に、供給電源そのものを止めてＯＦＦ状態に遷移させることができる。
【００５７】
図１０は、本実施例のマイクロコンピュータ（周辺モジュールを含む）の構成を示す図である。図１０に示すように、本実施例のマイクロコンピュータは、大小、規模の異なる２つの不揮発メモリ（小規模メモリ（１）３１、大規模メモリ（２）３２）からなる記憶装置に格納された命令によって直接、もしくは、タイマーモジュール３４の制御レジスタに設定された時間で出力される信号、もしくは、外部からの割り込み信号によって、電源スイッチを管理する電源制御回路（ＰＭＵ）３３を介して、中央演算装置（ＣＰＵ）３０と各メモリの電源スイッチ３６、３７、３８をそれぞれ適宜ＯＮ，ＯＦＦする。なお、小規模メモリ（１）３１の容量は１ｋＢ、大規模メモリ（２）３２は１２８ｋＢとする。
【００５８】
以下では、ＣＰＵ３０をＣＰＵと、小規模メモリ（１）３１を小規模メモリと、大規模メモリ（２）３２を大規模メモリと略して記載する。
【００５９】
ＣＰＵは、揮発性ではあるが動作速度に優れた（小規模な）キャッシュメモリを具備していても良い。ＣＰＵが前記キャッシュメモリを有している場合、大規模メモリ内に自身の電源をＯＦＦする命令を格納しておき、自身をＯＦＦする命令を含む命令郡を一時的に前記キャッシュメモリに格納させて、ＣＰＵと前記キャッシュメモリとの間でのみ命令コードの読み出しと実行をしている期間中、大規模メモリの電源をＯＦＦ状態させる。これにより処理速度の向上に加え、動作負荷の小さい前記キャッシュメモリを繰り返し動かすことによる省電力効果と、大規模メモリをその間ＯＦＦさせることによるリーク電流の排除による省電力効果の２つが同時に得られる。
【００６０】
例えば、ループ処理などコード長が短いが実行時間が長い処理においてはその効果が大きい。なお、前記キャッシュメモリに一時的に格納する命令コード群の中に、大規模メモリのＯＮ命令を最適に配置しておくことで、ループ処理を終えて再度大規模メモリにアクセスを開始する前に、大規模メモリの電源を予めＯＮさせて、ＯＮ時の待機時間を排除することも可能である。
【００６１】
本マイクロコンピュータは、通信回路やＩＯ回路などの周辺モジュール３５を通して、無線モジュールや各種センサーから信号を取得、もしくは、信号を出力することができる。接続するセンサーとしては、温湿度センサーや照度センサー、人感センサー、加速度センサーなどのセンサーが挙げられる。本マイクロコンピュータを、複数のセンサー、および、無線モジュールからなる環境センサー端末の制御用装置として用いた場合、実行する処理は大きく分けて２つに分類できる。１つは、タイマーモジュールによる時間制御のもと、温湿度センサーや照度センサーなどの制御と信号の受信、信号処理、および、無線による処理結果の送信といった一連の処理がある時間間隔で繰り返し行われるスケジューリング処理である。もう１つは、人感センサーや加速度センサーなど外部からの信号による割り込みを契機に実行される不定期な処理である。
（マイクロコンピュータ用のプログラムコードの作成方法と解析方法）
本実施例のマイクロコンピュータに処理させるプログラムコードは、汎用のパーソナルコンピュータ（ＰＣ）を用いて作成する。Ｃなどの高級言語によるプログラムから最終的にコンパイルすることで作成することを基本に、必要に応じてアセンブリコードで直接記述する。本マイクロコンピュータに接続されたセンサーや無線、有線通信などの他のデバイスの制御や、デバイスから得られたデータの解析、解析結果をデバイスに返すなどの処理プログラムをＰＣ上で作成する。また、処理するデータや制御するデバイスがない場合は、ＣＰＵの電源をＯＦＦする命令をプログラムコード内に記述して、ＣＰＵとメモリ（小規模メモリ、大規模メモリ）を含むマイクロコンピュータの電源をＯＦＦ状態にする。
【００６２】
プログラムコード内の解析、自動修正・変換、および作成プログラムコードを本マイクロコンピュータのメモリ（小規模メモリ、大規模メモリ）にロードする処理も、コード作成時と同様に汎用のＰＣを用いる。ＰＣ上で、作成中のプログラムコードの動作をシミュレーションする際には、特に本マイクロコンピュータを構成する各回路ブロックの電源のＯＮ、ＯＦＦ状態をモニターする。システムクロックの周波数やタイマーモジュール３４の周波数を、これらクロックの設定レジスタの値等から読み出すことで、コードの実行ステップ数だけでなく、ＯＮ状態を維持する時間やＯＦＦ状態を維持する時間を算出する。
（マイクロコンピュータのＯＮ・ＯＦＦ動作時間、ＯＮ・ＯＦＦコード長の定義）
図１１は本実施例のマイクロコンピュータのＯＮ・ＯＦＦ動作時間を示す。図１１に示すように、マイクロコンピュータのＯＮ時間１は、起動開始時刻Ｔ１（タイマーモジュールからの信号によってＣＰＵの電源がＯＮ状態になって実行される最初の命令時刻）から、ＣＰＵをＯＦＦ状態にする命令が実行される時刻までの間の命令サイクル数に、内部システムクロックの周期を掛けた値とする。また、計算機のＯＦＦ時間は、ＣＰＵの電源のＯＦＦ命令が実行された時刻から、タイマーによって次のＣＰＵの電源がＯＮする時刻（起動開始時刻Ｔ２）までの時間（ＯＦＦ時間１＝Ｔ２−Ｔ１−ＯＮ時間１）であり、ＣＰＵのＯＦＦ処理の前に実行されたタイマーモジュールへの命令コードとタイマーモジュールの設定レジスタ（ＯＮ命令が実行されるカウンター値やタイマーモジュールの動作クロック）の値から算出する。
【００６３】
なお、図１２に示すように、ＣＰＵの電源がＯＮ状態になった後の実行コード中に条件分岐命令があり、分岐先ごとに異なるコードと異なるＣＰＵのＯＦＦ処理の実行コードが含まれる場合、ＯＮから条件分岐前まで実行時間（コード長Ｃａの実行時間Ｔａ）と、各分岐の分岐確率（Ｐｂｉ（ｉ＝１、２、３・・・））と分岐先でＣＰＵ３０の電源がＯＦＦされるまでの実行時間（コード長Ｃｂｉ（ｉ＝１、２、３、・・・）の実行時間Ｔｂｉ（ｉ＝１、２、３、・・・））の積の合算値と、を足し合わせた値を（推定）ＯＮ時間（Ｔａ＋Σ（Ｐｂｉ×Ｔｂｉ））とする。ＣＰＵの電源がＯＮされてからＯＦＦ処理を経由して再度ＯＮされるまでの時間から、先ほど算出したＯＮ時間を差し引いた時間を計算機の（推定）ＯＦＦ時間とする。なお、条件分岐確率を特に指定しない場合は、各分岐は等確率としてＯＮ、ＯＦＦ時間の算出に用いる。
【００６４】
また、ＣＰＵがＯＮ動作を開始してからＯＦＦ動作に移るまでに実行されるコード群のコード長を算出する場合において、図１２に示すように、ＣＰＵのＯＮ動作の実行コード中に条件分岐命令があり、かつ、分岐先ごとに異なるコードと異なるＯＦＦ処理の実行コードが含まれる場合には、ＯＮ状態になって最初に実行される命令から条件分岐命令前までのコード長と、各条件分岐先においてＯＦＦ処理が実行されるコードまでのコード長の合算値を足したものを上記コード群のコード長とする。コード長は、プログラムコードをメモリに格納する際に、確保すべきメモリ領域を計算するために利用する。
（プログラムコードの区切りと、プログラムコードの格納単位）
図１３は、作成したプログラムコードのうち、タイマーモジュール以外の割り込み命令によって実行を開始する命令コード群４０の扱いを示す。図１３に示すように、作成したプログラムコードのうち、タイマーモジュール以外の割り込み命令によってＣＰＵがＯＮしてからＯＦＦするまでの間に実行されるコード群に対しては、所定のコード長Ｃｔを境にさらに２分割し、作成したプログラムコードを計算機内のメモリに格納する際には、それぞれを１つの集まり（セット）とする。作成したプログラムコードをメモリ（小規模メモリ、大規模メモリ）に格納する際には、上記の集まりを持つコード群を１セットとしてセット単位で前記メモリに格納する。
【００６５】
図１４Ａは、小規模メモリ（メモリ（１））と大規模メモリ（メモリ（２））の消費電力と実行サイクル数（ＥＣ）との関係を、図１４Ｂは、大規模メモリ（メモリ（２））のＯＦＦ状態からの立ち上がりに必要な電力を除いた大規模メモリ（メモリ（２））と小規模メモリ（メモリ（１））の消費電力と実行サイクル数（ＥＣ）との関係を、それぞれ示す。
【００６６】
上記の所定コード長Ｃｔは、図１４Ｂに示すように、小規模メモリ（メモリ（１））の立ち上がり電力と、コードを小規模メモリに格納した場合に小規模メモリからの命令呼出しによって計算を実行するために必要な電力との和が、コードを大規模メモリに格納した場合に大規模メモリからの命令呼出しによって計算を実行するために必要な電力よりも小さくなるコード長と同程度、もしくは、それよりも長いコード長とする。
【００６７】
すわなち、上記の同程度になるときの実行サイクル(ＥＣ)をＥＣ０、また０からＥＣ０までの間に使用されるコード領域（コード長）をＣ０とすると、ＣｔをＣ０よりも大きな値にする。ＯＮ状態になって最初に実行する命令コードを含み、かつ、所定のコード長を有するサブ命令コード群Ｐｆ、その残りのコードをサブ命令コード群Ｐｂとする。
【００６８】
図１５は、タイマーモジュールからの割り込み命令によってＯＮ状態になった後に開始されるプログラムコード４１を示す。図１５に示すように、タイマーモジュールからの割り込み命令によってＣＰＵがＯＮしてからＯＦＦまでに間に実行されるコードは、これらのコードを１つの集まりとして評価し、作成したプログラムコードを計算機内のメモリに格納する際には、上記の集まりをもつコード群Ｐｓを１セットとしてセット単位でメモリに格納する。
（命令コード群（セット単位）の格納先決定方法）
図１６は、小規模メモリであるメモリ（１）４２と大規模メモリであるメモリ（２）４３への、サブ命令コード群Ｐｆ格納領域４４、サブ命令コード群Ｐｆ以外の命令コード（Ｐｂ、、、Ｐｉ、、、）４５の格納を説明する図である。割り込みに対するサブ命令コード群Ｐｆを、小規模メモリであるメモリ（１）４２に格納するコード群とする。また、所定期間における命令コード群Ｐｉ（Ｐｉは、コード群ＰｂもしくはＰｓ）においてその命令コード長Ｌｉを呼び出し回数Ｎｉで割り算して得られた値（Ｌｉ／Ｎｉ）が小さい命令コード群Ｐｉを優先的に、小規模メモリに命令コードを格納していくコード群とし、サブ命令コード群１が全て格納された場合の小規模メモリの残りのメモリ空間に格納できる範囲で、小規模メモリに格納するコード群を決定する。
【００６９】
また、小規模メモリに入りきらなかった残りの命令コード群は、大規模メモリであるメモリ（２）４３に格納するコード群とする。なお、サブ命令コード群で、割り込み頻度（もしくは、所定期間の呼び出し回数）が推定できない場合は、サブ命令コードＰｂの呼び出し回数はゼロとする。
【００７０】
なお、この場合の所定期間は、マイクロコンピュータがある周期で同じ処理サイクルを繰り返す場合の周期（Ｔｃ）である。２秒ごとに動作する温湿度センサーのデータ取得と解析、３秒ごとに照度センサーのデータ取得と解析、４秒ごとに無線による端末・端末間、端末・親機間のデータ送受信といった処理がある場合は、各周期の最小公倍数である６秒をこの場合のＴｃとする。
【００７１】
小規模メモリに格納する命令コード群（セット）を決定していく過程で、小規模メモリに格納することがまだ決定していない命令コード群のセットと、すでに小規模メモリに格納されることが決定された命令群のセットとの間で、共通のデータや共通の特定関数を実現する命令群を持つ場合、小規模メモリに格納することが決定していない命令コード群は、上記の共通部分を取り除いてコード長を算出しなおす。新たに算出された命令コード長は、小規模メモリに格納する命令コード群のセットを決定する際の優先順位付けに随時変更を反映させて利用する。
【００７２】
図１７は、上記の命令コード群（セット単位）の格納先決定方法のフローをまとめた図である。
【００７３】
ステップ１（Ｓ１０１）では、以下の動作を行う。すなわち、小規模メモリに格納することが決まった命令コード群をｓ［Ｐ１、Ｐ２］、格納先が決まっていない命令コード群をｎ［Ｐ３、Ｐ４、Ｐ５、、、］、大規模メモリに格納することが決まった命令コード群をｂ［Ｐｘ、、、］とする。括弧［  ］内の命令コード群Ｐｉをそれぞれ、命令コード長Ｌｉを所定期間Ｔｃでの呼び出し回数Ｎｉで除した値（Ｌｉ／Ｎｉ）が小さい順に左からソートする。
【００７４】
ステップ２（Ｓ１０２）では、ステップ１（Ｓ１０１）を受けて、命令コード群Ｐｉの格納先候補および括弧［  ］内の順序を、小規模メモリに格納するコード群ｓ［Ｐ１、Ｐ２］、格納先が決まっていないコード群ｎ［Ｐ３、Ｐ４、Ｐ５、、、］、大規模メモリに格納するコード群ｂ［Ｐｘ、、、］とする。
【００７５】
ステップ３（Ｓ１０３）では、ｓ内の命令コード群（Ｐ１、Ｐ２）とｎ内の一番左の命令コード群（Ｐ３）の命令コード長の合計が、小規模メモリの記憶容量よりも大きいか否かの比較を行う。
【００７６】
ステップ４（Ｓ１０４）では、ステップ３（Ｓ１０３）がＹＥＳの場合、命令コード群Ｐｉの格納先を、小規模メモリに格納するコード群Ｓ［Ｐ１、Ｐ２］、大規模メモリに格納するコード群Ｂ［Ｐｘ、、、Ｐ３、Ｐ４、Ｐ５、、、］とし、格納を行い、終了する。
【００７７】
ステップ５（Ｓ１０５）では、ステップ３（Ｓ１０３）がＮＯの場合、命令コード群Ｐｉの格納先候補を、小規模メモリに格納するコード群ｓ［Ｐ１、Ｐ２、Ｐ３］、格納先が決まっていないコード群ｎ［Ｐ４、Ｐ５、、、］、大規模メモリに格納するコード群ｂ［Ｐｘ、、、］などとする。
【００７８】
ステップ６（Ｓ１０６）では、ステップ５（Ｓ１０５）において、格納先が決まっていないコード群ｎ［  ］内の命令コード群の中に、Ｐ３と共通のコードやデータ領域を持つ場合は共通部分を除去して命令コード長を再計算し、命令コード長Ｌ４をＬ４’に、Ｌ５をＬ５’に、などの変更を行う。
【００７９】
ステップ７（Ｓ１０７）では、ステップ６（Ｓ１０６）を受けて、｛ある命令コード群（Ｐｉ）の命令コード長（Ｌｉ’）｝／｛期間期間（Ｔｃ）での呼び出し回数Ｎｉ｝の値（Ｌｉ’／Ｎｉ）の小さい順にｎ内の並びを再ソートし、ステップ２（Ｓ１０２）に戻る。
【００８０】
ステップ２（Ｓ１０２）では、ステップ７（Ｓ１０７）を受けて、命令コード群Ｐｉの格納先候補および括弧［  ］内の順序を、小規模メモリに格納するコード群ｓ［Ｐ１、Ｐ２、Ｐ３］、格納先が決まっていないコード群ｎ［Ｐ４、Ｐ５、、、］、大規模メモリに格納するコード群ｂ［Ｐｘ、、、］などとし、以降のステップを繰り返す。
（格納先が確定した命令コード群のＯＮ、ＯＦＦ命令最適化）
図１８は、格納先が確定した命令コード群のＯＮ、ＯＦＦ命令のタイミングの最適化を説明する図である。図１８を用いて、以下、命令コード群のＯＮ、ＯＦＦ命令最適化の説明を行う。
【００８１】
タイマーモジュール以外の割り込み命令によってＣＰＵがＯＮしてからＯＦＦするまでの間に実行されるコード群で、そのサブ命令コード群１の格納先が小規模メモリ（メモリ１）、サブ命令コード群２の格納先が大規模メモリ（メモリ２）に割り付けられた場合、サブ命令コード群１には大規模メモリをＯＮにする命令を追加する。なお、大規模メモリをＯＮする命令は、ＣＰＵのアクセスが小規模メモリから大規模メモリに切り替わる直前の命令よりも、大規模メモリが立ち上がる時間だけ前で実行されるようにメモリ内の格納先アドレスを調整して挿入する。
【００８２】
ＯＦＦ命令の挿入位置は、ＣＰＵのアクセスが小規模メモリから大規模メモリに切り替わる直前の命令からスタートし、命令の時間軸における実行フローをさかのぼるようにして挿入位置を１命令ステップずつ前にしてみながら、シミュレーションによる評価を繰り返えし、最終的に、シミュレーション上でメモリ間でのアクセス先の移行時に、移行先の立ち上がりを待たなくてよくなった時点で挿入位置を固定する。なお、ＣＰＵのアクセスが小規模メモリから大規模メモリに切り替わる直前の命令からスタートするのではなく、大規模メモリが立ち上がる時間をシステムクロックで割って得られた商の値のステップ数分だけ、予めスキップして上記の評価サイクルを開始することで、シミュレーション時間を低減することができる。
【００８３】
また、セット間で共通のデータや共通の処理関数を実現するサブ命令コード群をもっているために、ある命令コード群のセットの中には、大規模メモリと小規模メモリのそれぞれに格納先を割り付けられたサブ命令コード群を含むことがある。この場合には、大規模メモリに格納予定の命令コード群のセットの中に小規模メモリをＯＮ、ＯＦＦする命令、小規模メモリに格納予定の命令コード群のセットの中に大規模メモリをＯＮ、ＯＦＦする命令をそれぞれ追加する。
【００８４】
大規模（もしくは小規模メモリ）をＯＮする命令の追加位置は、ＣＰＵのアクセスが小規模メモリ（もしくは大規模メモリ）から大規模メモリ（もしくは小規模メモリ）に切り替わる直前に実行されるコードよりも、大規模メモリ（もしくは小規模メモリ）が立ち上がる時間だけ前で実行されるように挿入する。
【００８５】
また、大規模（もしくは小規模メモリ）をＯＦＦする命令は、ＣＰＵのアクセスが大規模メモリ（もしくは小規模メモリ）から小規模メモリ（もしくは大規模メモリ）に切り替わった後に実行されるように小規模メモリに格納する。なお、小規模メモリにアクセスが移って最初に実行される命令コードの直後に実行されるように挿入するのが最も望ましい挿入位置となる。
【００８６】
なお、上記の挿入位置とは、論理上の処理フロー（もしくは時間軸）上での位置をいう。最終的に時間軸で見た場合のＯＮ、ＯＦＦ命令の挿入位置は図１８のようになる。時間軸で見た命令コードの並びと、メモリ内での物理的な位置（アドレス）で見た命令コードの並び順とは必ずしも一致していなくても良い。
（ＯＮ、ＯＦＦ動作の適正判断と修正をする前の準備）
マイクロコンピュータを構成するＣＰＵや各メモリなどの各回路ブロックに対して、ＯＮからＯＦＦ状態を経由して再度ＯＮ状態になるために必要な電力（ＯＦＦ処理に必要な電力）は、マイクロコンピュータの電気特性を実機で測定して求める。ただし、電力評価用の端子が用意されていない回路ブロックがある場合は、代わりにＳＰＩＣＥなどのデバイスシミュレータを用いて算出する。なお、ＯＦＦ処理に必要な電力は、ＯＮ時に必要な回路ブロック内の電源ラインへの帯電エネルギー（電源線の電位を動作電圧まで昇圧するために必要なエネルギーであり、電源線の配線容量と昇圧に必要な電圧から求める電力）と、ＯＦＦする回路ブロックにＳＲＡＭやＤＲＡＭなどの揮発性メモリがあればＯＦＦ時の不揮発メモリへのデータ退避に必要な書き込み、および、ＯＮ時の再ロードに必要な読み出し電力と、動作が安定するまで待機するために発生する待機電力を合算した値とする。
【００８７】
また、電源を給電しているがクロックや信号入力が停止している状態をスタンバイ状態として、各回路ブロックでスタンバイ状態にある場合のリーク電流値（もしくはスタンバイ電力）のデータを、同じく実機の評価、もしくは、デバイスシミュレータで予め取得しておく。これらの結果をまとめて図１９に示すようなデータテーブルを作成する。図１９はマイクロコンピュータの各構成要素のＯＦＦ処理のために必要な電力とスタンバイ時の電力をまとめた図である。
【００８８】
なお、ＯＦＦ処理に必要な電力やリーク電力は、ブロック構成やアンプ回路の構成にも依存するが、メモリの記憶容量以外のスペック（読み出し・書き込みスピードなど）が同等であれば、記憶容量とともに増大する。例えば、容量が１００倍程度少ないと、ＯＦＦ処理に必要な電力は１０倍程度少なくて済む。
【００８９】
なお、メモリの回路ブロックでは、ＯＦＦ処理に必要な電力は、ＯＮさせるために必要な電力とほぼ等価である。従って、ＯＮ時間が短い命令コード群（セット）を含むプログラム（アプリケーション）においては、２つのメモリの規模に差をつけ、かつ、小規模なメモリに上記命令コード群を格納することで、ＯＮ、ＯＦＦ切り替えによる電力オーバーヘッドを１０分の１に抑えて、ＯＮ、処理、ＯＦＦまでの一連の動作を実行できる。別の言い方をすれば、大規模メモリに格納するよりもアクセスしないメモリ領域や周辺回路に対する無駄な給電を１０分の１に抑えることができる。
（ＯＮ・ＯＦＦ動作の適正判断と修正方法）
ＰＣを用いて、大規模メモリと小規模メモリにそれぞれ配置先が割り振られたプログラムコードをマイクロコンピュータで実行したときの、マイクロコンピュータ内のＣＰＵやメモリの各回路ブロックのＯＮ・ＯＦＦ時間をそれぞれ算出する。また、得られたＯＦＦ時間と、予め求めたリーク電流値とを積算することで、（電源をＯＦＦさせずにクロックを止めた場合の）スタンバイ電力を求める。
【００９０】
あるＣＰＵとメモリのＯＦＦ状態において、そのスタンバイ電力が、ＣＰＵとメモリをＯＦＦ処理に必要な電力よりも小さかった場合、マイクロコンピュータ（ＣＰＵとメモリ）をＯＦＦする命令を、ＣＰＵとメモリに供給するクロックを止めるスタンバイ命令に変換する。
【００９１】
また、ＣＰＵの動作中であってメモリのみＯＮ、ＯＦＦ状態に遷移する場合は、メモリのあるＯＦＦ状態において、そのスタンバイ電力が、メモリのＯＦＦ処理に必要な電力よりも小さかった場合、メモリをＯＦＦする命令を削除するか、もしくは、処理をスルーするＮＯＰ命令などに変更する。
【００９２】
図２０は、メモリのＯＦＦ処理の最適化処理の前後でのＣＰＵとメモリの動作を説明する図である。上記の処理により、図２０に示すように、ＯＦＦ時間が短く、電源のＯＦＦ処理によってリーク電流を無くすよりも、電源の再立ち上げなどによる消費電力のオーバーヘッドが上回る処理の実行を阻止する。このためコーディングの際に過剰に設定してしまった電源のＯＮ、ＯＦＦ切り替え処理によって逆に消費電力が増大することを防ぐことができる。
【００９３】
ＯＮ時に開始して次のＯＦＦ状態になるまでの命令コード群の区切り（セット）を再度考えた場合、例えば図２０の処理Ｄ（命令コード群セットＰｄ）と処理Ｅ（命令コード群セットＰｅ）は、スタンバイ命令への変換によって１つのセットとみなされる。従って、新たなセット群で命令コード群（セット）の格納先（大・小規模メモリ）の割付から再度行うことで、ＯＮ、ＯＦＦ処理をより最適化することも可能である。
【００９４】
上記までの処理を施したプログラムコードを、実際にマイクロコンピュータのメモリに格納してＰＣ上でのコーディング作業を終了する。
【００９５】
なお、例えば、割り込み頻度が１０回／ｓｅｃを想定した場合と、１回／ｓｅｃを想定した場合で省電力に適したプログラムコードの配置が異なる場合ある。それぞれの配置をＧ１０、Ｇ１とする。そこで、５回の割り込み頻度を境にプログラムコードの再配置を行うとする。まず、実際にコードを格納したマイクロコンピュータを搭載したセンター端末を使用し、割り込み頻度と、マイクロコンピュータが置かれている環境を評価できる時刻や各種センサーなどの信号との相関データを集める。そして、図２１に示すように各条件下での割り込み頻度の平均値をまとめたデータテーブルを作成する。この場合では、時刻が８時になった時にＧ１からＧ１０への配置を切り替え、１７時になった時点でＧ１０からＧ１に配置を切り替える。配置を切り替える場合は、コードの再ロード時の転送データ量を減らすためにすでに格納されたプログラムコードとの差分のみを差し替える。
（実施例の効果）
ＣＰＵがアクセスしているメモリに格納されているコードの中に、アクセスしていないメモリの電源をＯＮ、ＯＦＦする命令を記述しておくことで、アクセスしていないメモリの電源を適宜ＯＮ、ＯＦＦできる。従って、演算プログラムの長く、かつ、コードが２つのメモリの両方に格納されているような処理Ｃの期間中であっても２つのメモリを同時に立ち上げる必要がない期間は、使用していないメモリの電源をＯＦＦすることができる。このため動作時の消費電力を低減することができる。
【００９６】
また、電源のＯＮ、ＯＦＦは、メモリ上のコードから制御されるため、計算機が実行するプログラムコード（アプリケーション）に合わせて、最適なＯＮ、ＯＦＦのタイミングを柔軟に選択することが可能である。このため、図８（もしくは、図１８）に示すようにＣＰＵのアクセス先がメモリ間をまたいで移動する際には、移動先のメモリアドレスを有する不揮発メモリの電源が予めＯＮになるように移行元になる不揮発メモリに格納された電源のＯＮ、ＯＦＦに関するコードを調整することで、移行先のメモリが立ち上がるのを待つことによる処理速度の低下も抑えることができる。
【００９７】
また、ＯＦＦ時間が短く、電源のＯＦＦ処理によってリーク電流を無くすよりも、電源の再立ち上げなどによる消費電力のオーバーヘッドが上回る処理の実行を阻止するため、コーディングの際に過剰に設定してしまった電源のＯＮ、ＯＦＦ切り替え処理によって逆に消費電力が増大することを防ぐことができる（図２０）。
【００９８】
また、マイクロコンピュータが、ＯＮ、ＯＦＦを繰り返しながら処理をする中で、図１７のフローに従って呼び出し回数が大きく、かつ、コード長の小さい、すなわち利用効率の高いコード群がなるべく小規模メモリに格納されている。従って、なるべく大規模メモリはＯＦＦした状態のまま、小規模メモリとＣＰＵのみがＯＮ、ＯＦＦすることができる。このためアクセスしないメモリ領域や周辺回路に対する無駄な給電をより効果的に抑えることができる。また、計算機が置かれた環境が変わることによる割り込み頻度が変化に合わせて随時更新されるため、省電力に最適なコードの状態が保たれる。
【００９９】
応答性の要求の高いタイマーモジュール以外からの割り込み命令とそれに続く実行コードは二分化されて、ＯＮ時に開始するコードを含むサイズの小さくなったサブ命令コードが小規模メモリに格納されている。小規模メモリはＯＮ時の立ち上がりが早いため、上記の割り込みが発生してから処理を終了するまでの時間が短縮化されている。また、二分化してアクセスの移動によるタイムラグのない２つのメモリにそれぞれコードを格納するため、上記割り込みによって開始するコード群のサイズは、小規模メモリに格納するサイズより小さくしなければいけないという制約もない。また、上記のコードをすべて大規模メモリに格納して動作させるよりも省電力である（図１４Ａ及び図１４Ｂ）。従って、コードのサイズ制限がなく、省電力で、レスポンス良く処理を実行できる。
【０１００】
本発明は上記実施形態に限定されることなく、特許請求の範囲に記載した発明の範囲内で、種々の変形が可能であり、それらも本発明の範囲内に含まれるものであることはいうまでもない。また、上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【０１０１】
付記
（付記１）
第１の命令コードを格納する第１の記憶手段と、第２の命令コードを格納する第２の記憶手段と、
前記第１の記憶手段に格納された前記第１の命令コードと前記第２の記憶手段に格納された前記第２の命令コードとに従って命令を行う中央演算処理手段と、
前記命令を受けて前記第１の記憶手段と前記第２の記憶手段とをオン状態もしくはオフ状態にする電源制御手段と、を備え、
前記中央演算処理手段は、前記第１の命令コードを受けて前記第２の記憶手段を、前記第２の命令コードを受けて前記第１の記憶手段を、それぞれオン状態もしくはオフ状態にする命令を行う、計算装置。
（付記２）
前記中央演算処理手段は、一つのクロックサイクルにおいて前記第１の記憶手段と前記第２の記憶手段のいずれか一方にアクセスするようにアクセスを切り替える、付記１記載の計算装置。
（付記３）
前記第１の記憶手段と、前記第２の記憶手段とは、不揮発メモリである、
付記１または２記載の計算装置。
（付記４）
前記第１の記憶手段の記憶容量と前記第２の記憶手段の記憶容量とは異なる、
付記１から３の内の１項記載の計算装置。
（付記５）
前記中央演算処理手段は、
前記第１の命令コードを受けて前記第２の記憶手段をオン状態にする命令を、前記アクセスを前記第１の記憶手段から前記第２の記憶手段へ切り替える命令を行うよりも、前記第２の記憶手段がオン状態になるために必要な時間以上、先行して行い、
前記第２の命令コードを受けて前記第１の記憶手段をオン状態にする命令を、前記アクセスを前記第２の記憶手段から前記第１の記憶手段へ切り替える命令を行うよりも、前記第１の記憶手段がオン状態になるために必要な時間以上、先行して行う、
付記２から４の内の１項記載の計算装置。
（付記６）
前記中央演算処理手段は、
前記第１の記憶手段と前記第２の記憶手段のそれぞれについて、オン状態とするための電力とオフ状態とするための電力との合計の電力と、動作を続ける電力と、を比較し、
それぞれの、前記合計の電力が前記動作を続ける電力よりも大きい場合、
それぞれの、前記オフ状態にする命令をスタンバイ状態にする命令に置換する、
付記１から５の内の１項記載の計算装置。
（付記７）
前記オン状態とするための電力は、動作電圧にする電力と前記動作電圧にした後に動作が安定するまで待機する間の電力との合計である、
付記６記載の計算装置。
（付記８）
前記スタンバイ状態は、クロックを止める状態である、
付記６または７記載の計算装置。
（付記９）
前記第１の記憶手段の記憶容量は前記第２の記憶手段の記憶容量よりも小さい、
付記１から８の内の１項記載の計算装置。
（付記１０）
前記中央演算処理手段は、
外部からの割り込み命令によって前記中央演算処理手段をオフ状態からオン状態とした後に開始する開始命令コードから、次に前記中央演算装置をオフ状態とする命令コードまでの命令コード群を、
前記開始命令コードを含みかつ所定の命令コード長を有するサブ命令コード群１と、サブ命令コード群２とに分割し、
前記所定の命令コード長を、前記第１の記憶手段をオン状態にするための電力と前記第１の記憶手段から命令コードを読み込んで実行する電力との合計が、前記第２の記憶手段から命令コードを読み込んで実行する電力よりも小さくなる命令コード長以上の長さとし、
前記サブ命令コード群１を前記第１の記憶手段に格納する、
付記９記載の計算装置。
（付記１１）
前記中央演算処理手段は、
前記サブ命令コード群２、もしくは、
前記外部からの割込み命令以外で前記中央演算装置の電源をオン状態とした後に開始する開始命令コードから、次に前記中央演算装置の電源をオフ状態とする命令コードまでの命令コード群、において
各々の命令コードの命令コード長を所定期間内での呼び出し回数で除して得られる値が小さい命令コードから順に前記第１の記憶手段に格納する、
付記９または１０記載の計算装置。
（付記１２）
前記中央演算処理手段は、
前記外部からの割り込み命令が実行される頻度を受けて、時刻やセンサーからの信号を定期的に計測して作成したデータテーブルに基づいて所定期間の前記外部からの割込み命令の回数を推定し、前記命令の回数と所定の値との大小関係が入れ替わった時点で、前記中央演算処理手段が実行する命令コードを前記第１と第２の記憶手段に再格納、もしくは、すでに格納された前記命令コードとの差分を格納する、
付記１から１１の内の１項記載の計算装置。
（付記１３）
第１の命令コードを第１の記憶手段に格納し、第２の命令コードを第２の記憶手段に格納し、
前記第１の記憶手段に格納された前記第１の命令コードと前記第２の記憶手段に格納された前記第２の命令コードとに従って命令を行い、
前記命令を受けて前記第１の記憶手段と前記第２の記憶手段とをオン状態もしくはオフ状態にする電源制御を行い、
前記第１の命令コードを受けて前記第２の記憶手段を、前記第２の命令コードを受けて前記第１の記憶手段を、それぞれオン状態もしくはオフ状態にする命令を行う、計算装置の動作方法。
（付記１４）
前記命令は、一つのクロックサイクルにおいて前記第１の記憶手段と前記第２の記憶手段のいずれか一方にアクセスするようにアクセスを切り替えて行う、付記１３記載の計算装置の動作方法。
（付記１５）
前記第１の記憶手段と、前記第２の記憶手段とは、不揮発メモリである、
付記１３または１４記載の計算装置の動作方法。
（付記１６）
前記第１の記憶手段の記憶容量と前記第２の記憶手段の記憶容量とは異なる、
付記１３から１５の内の１項記載の計算装置の動作方法。
（付記１７）
前記第１の命令コードを受けて前記第２の記憶手段をオン状態にする命令を、前記アクセスを前記第１の記憶手段から前記第２の記憶手段へ切り替える命令を行うよりも、前記第２の記憶手段がオン状態になるために必要な時間以上、先行して行い、
前記第２の命令コードを受けて前記第１の記憶手段をオン状態にする命令を、前記アクセスを前記第２の記憶手段から前記第１の記憶手段へ切り替える命令を行うよりも、前記第１の記憶手段がオン状態になるために必要な時間以上、先行して行う、
付記１４から１７の内の１項記載の計算装置の動作方法。
（付記１８）
前記第１の記憶手段と前記第２の記憶手段のそれぞれについて、オン状態とするための電力とオフ状態とするための電力との合計の電力と、動作を続ける電力と、を比較し、
それぞれの、前記合計の電力が前記動作を続ける電力よりも大きい場合、
それぞれの、前記オフ状態にする命令をスタンバイ状態にする命令に置換する、
付記１３から１７の内の１項記載の計算装置の動作方法。
（付記１９）
前記オン状態とするための電力は、動作電圧にする電力と前記動作電圧にした後に動作が安定するまで待機する間の電力との合計である、
付記１８記載の計算装置の動作方法。
（付記２０）
前記スタンバイ状態は、クロックを止める状態である、
付記１８または１９記載の計算装置の動作方法。
（付記２１）
前記第１の記憶手段の記憶容量は前記第２の記憶手段の記憶容量よりも小さい、
付記１３から２０の内の１項記載の計算装置の動作方法。
（付記２２）
外部からの割り込みによって前記命令をオフ状態からオン状態とした後に開始する開始命令コードから、次に前記命令をオフ状態とする命令コードまでの命令コード群を、
前記開始命令コードを含みかつ所定の命令コード長を有するサブ命令コード群１と、サブ命令コード群２とに分割し、
前記所定の命令コード長を、前記第１の記憶手段をオン状態にするための電力と前記第１の記憶手段から命令コードを読み込んで実行する電力との合計が、前記第２の記憶手段から命令コードを読み込んで実行する電力よりも小さくなる命令コード長以上の長さとし、
前記サブ命令コード群１を前記第１の記憶手段に格納する、
付記２１記載の計算装置の動作方法。
（付記２３）
前記サブ命令コード群２、もしくは、
前記外部からの割込み以外で前記命令をオン状態とした後に開始する開始命令コードから、次に前記命令をオフ状態とする命令コードまでの命令コード群、において
各々の命令コードの命令コード長を所定期間内での呼び出し回数で除して得られる値が小さい命令コードから順に前記第１の記憶手段に格納する、
付記２１または２２記載の計算装置の動作方法。
（付記２４）
前記外部からの割り込みが実行される頻度を受けて、時刻やセンサーからの信号を定期的に計測して作成したデータテーブルに基づいて所定期間の前記外部からの割込み命令の回数を推定し、前記命令の回数と所定の値との大小関係が入れ替わった時点で、前記命令の命令コードを前記第１と第２の記憶手段に再格納、もしくは、すでに格納された前記命令コードとの差分を格納する、
付記１３から２３の内の１項記載の計算装置の動作方法。
【符号の説明】
【０１０２】
１、１０、２０、３０    中央演算装置（ＣＰＵ）
２、１１、２１、３１    不揮発メモリ（１）
３、１２、２２、３２    不揮発メモリ（２）
４、１３、２３、３３    電源制御回路（ＰＭＵ）
５、２５    信号線（バス）
１４、１５、１６、３６、３７、３８、３９    電源スイッチ
２４    各種モジュール
３４    タイマーモジュール
３５    周辺モジュール
４０    命令コード群
４１    プログラムコード
４２    メモリ（１）
４３    メモリ（２）
４４    サブ命令コード群Ｐｆ格納領域
４５    命令コード（Ｐｂ、、、Ｐｉ、、、）
【図１】
2014160362.tif 000003
【図２】
2014160362.tif 000004
【図３】
2014160362.tif 000005
【図４】
2014160362.tif 000006
【図５Ａ】
2014160362.tif 000007
【図５Ｂ】
2014160362.tif 000008
【図５Ｃ】
2014160362.tif 000009
【図６】
2014160362.tif 000010
【図７】
2014160362.tif 000011
【図８】
2014160362.tif 000012
【図９】
2014160362.tif 000013
【図１０】
2014160362.tif 000014
【図１１】
2014160362.tif 000015
【図１２】
2014160362.tif 000016
【図１３】
2014160362.tif 000017
【図１４Ａ】
2014160362.tif 000018
【図１４Ｂ】
2014160362.tif 000019
【図１５】
2014160362.tif 000020
【図１６】
2014160362.tif 000021
【図１７】
2014160362.tif 000022
【図１８】
2014160362.tif 000023
【図１９】
2014160362.tif 000024
【図２０】
2014160362.tif 000025
【図２１】
2014160362.tif 000026