情報処理装置、車両用電子制御ユニット、データ記憶方法
【課題】省電力モード又は通常モードへの移行時間を短縮できる情報処理装置を提供すること。
【解決手段】第1と第2の動作モードとを有する情報処理装置200において、不揮発性の記憶手段15、23と、揮発性メモリ12が退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合に、退避対象データのデータ識別情報と該データのアドレスが対応づけられたテーブル36を作成するアドレステーブル作成手段35と、第1から第2の動作モードに移行する際、テーブルに登録された退避対象データのアドレスをテーブルから読み出し、揮発性メモリのアドレスから読み出した退避対象データを記憶手段に退避するデータ退避手段31と、第2の動作モードから第1の動作モードに移行する際、記憶手段に記憶されている退避対象データをアドレステーブルに登録されている揮発性メモリのアドレスに復帰させるデータ復帰手段33と、を有する。
【解決手段】第1と第2の動作モードとを有する情報処理装置200において、不揮発性の記憶手段15、23と、揮発性メモリ12が退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合に、退避対象データのデータ識別情報と該データのアドレスが対応づけられたテーブル36を作成するアドレステーブル作成手段35と、第1から第2の動作モードに移行する際、テーブルに登録された退避対象データのアドレスをテーブルから読み出し、揮発性メモリのアドレスから読み出した退避対象データを記憶手段に退避するデータ退避手段31と、第2の動作モードから第1の動作モードに移行する際、記憶手段に記憶されている退避対象データをアドレステーブルに登録されている揮発性メモリのアドレスに復帰させるデータ復帰手段33と、を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、省電力モードを備えた情報処理装置に関し、特に、揮発性メモリから不揮発メモリにデータを退避する情報処理装置等に関する。
【背景技術】
【0002】
消費電力を低減するため、マイコンに電源オフ状態とは別に省電力モードが用意されていることがある。省電力モードでは、マイコンのRAMに記憶されたデータが不揮発メモリに退避される。通常モードへの復帰時、CPUが不揮発メモリからRAMにデータを再度書き込むことで、アプリケーションやOSのファイルを不揮発メモリから読み出す通常起動よりも、起動時間を短縮することができる。
【0003】
しかし、省電力モードから通常モードへ復帰するまでの起動時間は短いほど好ましい場合が多く、起動時間をさらに短縮することが望まれている(例えば、特許文献1参照。)。特許文献1には、揮発性メモリ内のデータを不揮発性メモリに退避させる省電力モードと、揮発性メモリ内のデータを揮発性メモリ内で保持させた状態を省電力モードとする、2つの省電力モードをマイコンに用意しておことで、省電力モードから通常モードへの復帰の迅速性と、電力の消費の抑制とをユーザが選択可能とする電子機器が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−287492号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示された電子機器は、揮発性メモリ内のデータを不揮発性メモリに退避させる省電力モードにおいて、省電力モード又は通常モードへの移行時間が長期化するという問題がある。すなわち、マイコンが省電力モードから通常モードへ復帰する際に、不揮発メモリの全データを必要とすることは少なく、省電力モードに移行する前の状態に復帰するには不揮発メモリの一部のデータがあれば十分な場合がある。したがって、引用文献1の電子機器は、通常モードから省電力モードへの移行時と省電力モードモードから通常モードへの移行時の両方で、不必要なデータを退避・復帰するため、省電力モード又は通常モードへの移行時間が長期化していた。
【0006】
本発明は、上記課題に鑑み、省電力モード又は通常モードへの移行時間を短縮できる情報処理装置を提供することをも目的とする。
【課題を解決するための手段】
【0007】
上記課題に鑑み、本発明は、揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置において、不揮発性の記憶手段と、前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合に、前記退避対象データのデータ識別情報と該データのアドレスが対応づけられたデータテーブルを作成するアドレステーブル作成手段と、前記第1の動作モードから前記第2の動作モードに移行する際、前記データテーブルに登録された前記退避対象データのアドレスを前記データテーブルから読み出し、前記揮発性メモリのアドレスから読み出した前記退避対象データを前記記憶手段に退避するデータ退避手段と、前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記退避対象データを、前記アドレステーブルに登録されている前記揮発性メモリのアドレスに復帰させるデータ復帰手段と、を有する。
【発明の効果】
【0008】
省電力モード又は通常モードへの移行時間を短縮できる情報処理装置を提供することができる。
【図面の簡単な説明】
【0009】
【図1】データ退避方法の概略を説明する図の一例である。
【図2】ECUの概略構成図の一例である。
【図3】ECUの機能ブロック図の一例である。
【図4】レジスタの退避・復帰におけるECUの機能ブロック図の一例である。
【図5】アドレステーブル作成手段がデータアドレスを作成する手順を示すフローチャート図の一例である。
【図6】データ退避手段がスリープ時にデータを退避する手順を示すフローチャート図の一例である。
【図7】データ復帰手段がWakeUp時にデータをRAMに退避する手順を示すフローチャート図の一例である。
【図8】ECUの機能ブロック図の一例である(実施例2)。
【図9】データ退避手段がデータを退避する手順、データ復帰手段がデータを復帰する手順をフローチャート図の一例である。
【図10】ECUの機能ブロック図の一例である(実施例3)。
【図11】レジスタの退避・復帰におけるECUの機能ブロック図の一例である(実施例3)。
【図12】データ退避手段がデータを退避する手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【0010】
以下、本発明を実施するための形態について実施例を挙げて図面を参照しながら説明する。
【実施例1】
【0011】
図1は、本実施例のデータ退避方法の概略を説明する図の一例である。
図1(a)に示すように、CPU(実際にはアプリケーションプログラム)11は、RAM12に、復帰後に使用されるデータを書き込むと、該データのアドレスをデータアドレステーブル36に登録する。図では、復帰後に使用されるデータとしてVal_CとVal_EがRAM12に書き込まれているので、データアドレステーブル36にはVal_CとVal_Eが書き込まれたアドレスが登録されている。
【0012】
図1(b)は、不揮発メモリへの退避を説明する図である。マイコンが省電力モードモードに移行する際、CPU11はデータアドレステーブル36を参照して、復帰後に使用されるデータのRAM12におけるアドレスを特定する。そして、CPU11はデータアドレステーブル36に登録されたアドレスに記憶されているRAM12のデータを不揮発メモリ15,23に退避する。
【0013】
データアドレステーブル36に登録されているデータは、マイコンが全て省電力モードから通常モードに復帰した後に使用するデータなので、CPU11はデータアドレステーブル36に登録されている全てのデータを不揮発メモリ15,23に退避(記憶)させる。
【0014】
このように、省電力モードへの移行時に、省電力モードからの復帰後に使用されるデータのみを退避することで、省電力モードへの移行時間を短縮でき、かつ、省電力モードから通常モードへの移行時間を短縮できる。また、従来はRAM12と同程度の不揮発メモリが必要であったが、本実施例では退避するデータを少なくするので不揮発メモリの容量を低減できる。
【0015】
なお、省電力モードとしては、スリープモード、スタンバイモード、又は、ハイバネーションモードなどのモード名が知られているが、一般に、スリープモードとハイバネーションモードはデータを不揮発メモリ15,23に退避し、スタンバイモードはRAM12からデータを退避しないモードである(RAM12のリフレッシュのための電力を消費してしまう)。本実施例の省電力モードは、こういったモード名に関係なく、揮発性メモリから不揮発メモリに退避対象のデータを退避するモードであればよい。
【0016】
また、通常モードとはプログラムが動作可能なモードであり、通常モードの中でさらに動作周波数が可変である等、消費電力の異なるモードがあってもよい。なお、マイコンが省電力モードから通常モードへ移行することをWakeUpと呼ぶ場合がある。
【0017】
〔構成〕
図2は、ECUの概略構成図の一例を示す。ECU(Electronic Contorol Unit)100はマイコン200とその他の回路とを有し、その他の回路は主に電源IC21、入出力I/F22、不揮発メモリ23、監視回路24、及び、クロック生成器25である。
【0018】
また、マイコン200はCPU11、RAM12、ROM13、INTC(割込みコントローラ)14、不揮発メモリ15、DMAC16、及び、ブリッジ17を有する。CPU11は、例えばROM13に記憶されたプログラムを実行しRAM12にデータを書き込み、またRAM12に書き込まれたデータを読み出して演算結果を生成したり、他のECUと通信するための通信情報を生成する。RAM12はこのようなプログラムの作業メモリとなり、各種のデータが一時的に記憶される。
【0019】
ROM13にはプログラムが予め記憶されている。また、プログラムはECU100に特有の処理を行うものの他、データの退避・復帰を行うためのプログラムが含まれているが、区別せずに図示している。INTC14は、入出力I/F22、不図示のタイマ、又は、他のECU等からの割込み要因を調停して、CPU11に割込み要求する。不揮発メモリ15は、フラッシュメモリなどのEEPROMであり省電力モード移行時にデータの退避に使用される。DMAC16は、入出力I/F22からの要求を受け付けて入出力I/F22からRAM12の指定アドレスにデータを転送し、また、CPU11からの要求を受け付けてRAM12の指定アドレスから入出力I/F22にデータを転送する。ブリッジ17は、マイコン内のバス18とマイコン200外のバス26の周波数の違いや電圧の違いを吸収してバス同士を接続する。
【0020】
電源IC21は、不図示のバッテリ又はIG電源(どちらを電源とするかはECUによって異なる)から電力供給を受けてマイコン駆動用の電圧・電流を生成する。IGオン(メインリレーオン)時は、ECU内の全ての回路を通常モードで動作させるために必要な大容量の電圧・電流を生成し、IGオフ(メインリレーオフ)時は、マイコン200や他の回路の一部を省電力モードに保持するために必要な最小限の電圧・電流を生成する。電源IC21は、通常モードと省電力モードにおいて、予めそれぞれに決められた回路に電力を供給する。
【0021】
入出力I/F22にはマイコン200が演算に用いる信号を検出する各種のセンサ、マイコン200が制御するアクチュエータやアクチュエータのドライバ回路、CAN(Controller Area Network)通信等が接続されている。不揮発メモリ23は、フラッシュメモリなどのEEPROMであり省電力モード移行時にデータの退避に使用される。ECUによっては、不揮発メモリ15と不揮発メモリ23はどちらか一方のみが搭載されることがある。
【0022】
監視回路24は、異常を検出するためのウォッチドックタイマ、異常時にマイコン200をリセットして再起動させるためのリセット回路等を有する。クロック生成器25はマイコン200に同期用のクロックを供給する。クロック生成器25は、省電力モードになると、クロックを停止するか通常モードよりも低速にし、また、CPU(又は一部)等、通常モードに復帰するための移行条件の成立を検出するための回路以外へのクロック供給を停止して消費電力を抑制する。
【0023】
図3は、マイコン200の機能ブロック図の一例を示す。マイコン200は、アドレステーブル作成手段35、データ退避手段31、データ復帰手段33、移行判定手段34、及び、データ保持手段32を有する。データ保持手段32は、図2の不揮発メモリ15又は不揮発メモリ23が対応する。アドレステーブル作成手段35、移行判定手段34、データ復帰手段33及びデータ退避手段31は、CPU11がプログラムを実行することで実現される。
【0024】
<データアドレステーブル>
データアドレステーブル36はデータ名と、そのデータのRAM12における格納アドレスを対応づけたデータ構造を有する。CPU11が実行するプログラムには、後述するように、データアドレステーブル36に格納アドレスを登録すべきデータ名が記述されている。これにより、データアドレステーブル36には、省電力モードへの復帰後に使用されるデータのみの格納アドレスが登録される。
【0025】
省電力モードへの復帰後に使用されるデータとは、何らかのイベントの発生時に更新されるステータスやモードなどを表すデータ、更新の頻度が低いデータ、処理の途中であるがWakeUp後に再度、最初の処理から実行される仕組みをもっていないデータなどである。具体例としては、ボディECUがRAM12に記憶するドアが解錠状態又は施錠状態のいずれであるかを示すステータスデータ、他のECU100へ送信するためRAM12に準備されているがまだ送信が完了指定なデータなどが挙げられる。
【0026】
一方、省電力モードへの復帰後に使用されないデータとは、時間の経過と共に最新値が頻繁かつ自動的に更新されるデータ、過去の時点における古い値には意味のないデータなどである。具体例としては、現在の走行速度データ、現在のエンジン回転数データ、等が挙げられる。
【0027】
なお、データ名は、プログラム(コンパイルされている)に記述されている変数名、又は、変数を識別するための識別情報である。このため、以下ではデータ名と変数名を同じ意味で用いる場合がある。
【0028】
アドレステーブル作成手段35は図3のようなデータアドレステーブル36を作成する。プログラムが変数や固定値をRAM12に書き込む場合、コンパイラにより生成されたST(ストア)命令やPUSH命令等のーモニックが実行されることでRAM12にアクセスする。よって、これらの命令が実行されることはRAM12にデータが書き込まれることになる。ST命令に対しアクセスされるRAM12のアドレス、PUSH命令に対しアクセスされるRAM(スタック)12のアドレスは、それぞれの命令の実行時の所定のレジスタに格納されている。また、RAM12に書き込まれるデータは変数名を経由して、ST命令やPUSH命令のオペランドのレジスタに記憶されている。
【0029】
これらを利用して、アドレステーブル作成手段35は、データの記憶先のアドレスが書き込まれたレジスタの内容をデータアドレステーブル36に登録する。より具体的には、開発者等がソースコードを記述する際にはプログラムにST命令やPUSH命令が現れないので、例えばコンパイラを利用する。すなわち、開発者等はコンパイラに以下のような記述を加える。
(i) スリープ時に退避すべきデータのリストの生成、及び、データアドレステーブルの領域を確保する命令を生成する記述
(ii) ST命令やPUSH命令を検出すると、オペランドのレジスタに記憶された変数が、退避すべきデータのリストに登録されている否かを判定するための命令を生成する記述
(iii) 退避すべきデータの場合、ST命令やPUSH命令の実行時のレジスタの内容をデータアドレステーブルに登録する命令を生成する記述
コンパイラが上記記述に対応した処理を実行すると、ECU100が実行するプログラムにアドレステーブル作成手段35が生成される。例えば、PUSH命令が検出され、変数Val_Cが退避すべきデータの場合、アドレステーブル作成手段35は以下のようになる。なお書式は一例であり適宜省略している。
【0030】
PUSH Gr1 ;Val_C(データ内容)が記憶されたGr1をRAMに記憶
… ;命令で使用された“Val_C”という変数名をGr1に記憶
LD Gr2, tbl_C ;tbl_C 番地のVal_CをGr2に読み出す
CPL Gr1,Gr2 ;Gr1(Val_C)とGr2(tbl_C 番地のVal_C)を比較
JZE EQ1 ;一致したらEQ1へジャンプ
… ;同様にtbl_E番地以下のVal_E等と比較
EQ1 mov Gr3, SP ;スタックポインタレジスタの中身をGr3にコピー
ST Gr3,tbl_C_V ;Gr3の内容をtbl_C_V番地に記憶
JMP XX ;元の実行箇所に戻る
EQ2 mov Gr3, SP ;スタックポインタレジスタの中身をGr3にコピー
ST Gr3,tbl_E_V ;Gr3の内容をtbl_E_V番地に記憶
JMP XX ;元の実行箇所に移動
tbl_C DC ‘Val_C’ ;tbl_C番地にデータ名Val_Cを設定
tbl_C_V DS 1 ;次の番地に変数Val_Cの領域を確保(ex.4バイト)
tbl_E DC ‘Val_E’ ;tbl_E番地にデータ名Val_Eを設定
tbl_E_V DS 1 ;次の番地に変数Val_Eの領域を確保(ex.4バイト)
このような処理により、tbl_C番地のデータ名に対応づけてtbl_C_V番地に格納アドレスが記憶される。よって、同じ変数が何度もRAM12に書き込まれても、データ退避手段31はtbl_C_V番地に記憶されている最新のデータを特定できる。
【0031】
なお、ソースコード中にアセンブラ(ニーモニック)を記述できるインラインアセンブラに対応したソースコードで開発者がプログラムを記述する場合、コンパイラを利用することなく、開発者が上記のアドレステーブル作成手段35のニーモニックを記述できる。
【0032】
次に、移行判定手段34について説明する。移行判定手段34は、通常モードから省電力モードへの移行条件の成立を検出して、データの退避をデータ退避手段31に指示する。省電力モードから通常モードへの移行条件の成立は、何らかの割り込みであることが多いので、移行判定手段34はこのような割り込みの検出手段又はデータ復帰手段31を起動する手段である。
【0033】
通常モードから省電力モードへの移行条件は、ECU100によって様々であるが、例えば、乗員がIGオフに操作したこと、IGオフ後、定められた終了処理(アクチュエータを安全に停止させる処理、ECUハードのアクセスを適切に終了させる処理等)が終了したこと、監視対象の通信線の所定時間の平均電圧が閾値未満であったこと(つまりそのECUが使用されていない)、等である。
【0034】
省電力モードから通常モードへの移行条件もECU100によって様々であるが、例えば、乗員がIGオンに操作したこと、監視対象の通信線の所定時間の平均電圧が閾値以上であったこと、ユーザ操作が検出されたこと等である。これらの移行条件の成立は、例えば、CPU11への割り込み又はマイコン200のWAKE端子にウェイクアップ信号が入力されることで検出される。
【0035】
移行判定手段34が省電力モードに移行すると判定すると、データ退避手段31はRAM12に記憶されているデータの退避を開始する。データ退避手段31は、データアドレステーブル36に記憶されているデータ名を例えばデータアドレステーブル36の登録順に決定し、データ名に対応づけられた格納アドレスを読み出す。そして、データ退避手段31はRAM12のアドレスからデータ内容を読み出し、データ名とデータ内容を対応づけてデータ保持手段32に退避する(記憶する)。これにより、ECU100が通常モード時にRAM12に記憶したデータを退避させることができる。
【0036】
また、データ退避手段31はデータアドレステーブル36に登録されている全てのデータをデータ保持手段32に退避すると、データアドレステーブル36をRAM12からデータ保持手段32に退避する。これにより、データ復帰手段33がWakeUp時にデータアドレステーブル36を利用できる。最終的に、データ退避手段31は省電力モードへ移行するSleep命令を実行して、省電力モードに移行する。
【0037】
通常モードへの移行条件が成立すると、例えば、割り込みハンドラにより指定される予め定められたアドレスの命令、又は、省電力モードに移行する直前に実行された命令(例えば、省電力モードへ移行するSleep命令)の次の命令、をCPU11が実行する。これにより復帰処理が開始される。
【0038】
データ復帰手段33はデータ保持手段32に退避されているデータの復帰を開始する。データ復帰手段33は、データアドレステーブル36をデータ保持手段32からRAM12に移動し、データ保持手段32のデータ名とデータ内容を例えばアドレス順に読み出す。そして、データアドレステーブル36の同じデータ名の格納アドレスを参照して、RAM12のそのアドレスにデータ内容を書き込む。データ復帰手段33はデータ保持手段32に退避されている全てのデータ内容をRAM12に書き込む。これにより、RAM12には復帰後に使用されるデータが省電力モード前とRAM12の同じアドレスに復帰されたことになる。
【0039】
なお、復帰後に使用されないデータはRAM12に書き込まれないので、これらのデータが記憶されていたRAM12のアドレスのデータは不定であるが、マイコン200が実行するプログラムはこのデータを使用しないので不都合はない。しかし、プログラムがアクセスしても想定外の演算が行われないように、データ復帰手段33はデータが存在しないことを示すNULL値を、復帰に不要なデータとしてRAM12に書き込んでよい。こうすることで、プログラムが復帰後に使用しないと思われていたデータを読み出しても、マイコン200が想定外の動作をすることを防止できる(プログラムはデータが正しいか否かを例えば、データがある範囲に入ることをチェックする。)。
【0040】
データ復帰手段33はデータ保持手段32に退避されている全てのデータをRAM12に書き込むと、ROM13におけるプログラムの例えば先頭アドレス、又は、下記のレジスタ内容を利用してデータ退避手段31が退避を開始する直前に実行されていた命令の次の命令をプログラムカウンタにセットする。これにより、CPU11はマイコン200に特有の機能を提供するためのプログラムの実行を開始する。
【0041】
〔レジスタのデータについて〕
CPU11へ電力が供給されない省電力モードでは、CPU11のレジスタに記憶されたデータもRAM12のデータと同様に退避することが好ましい。本実施例のECU100は、レジスタのデータもRAM12のデータと同様に退避・復帰することができる。
【0042】
図4は、レジスタの退避・復帰におけるECU100の機能ブロック図の一例を示す。図4において図3と同一部の説明は省略する。図4ではマイコン200にCPU11とCPU11が有するレジスタGr0〜Gr4が図示されている。この他、プログラムカウンタレジスタ、スタックポインタレジスタ、フラグレジスタ等は省略した。
【0043】
また、データアドレステーブル36はレジスタ名のリストである。データ退避手段31がレジスタの内容を退避する場合、レジスタ名が分かればアドレス(どのレジスタか)は特定されるので、格納アドレスは不要になる。よって、データアドレステーブル36には、復帰後に使用されるデータが記憶されうるレジスタ名をリストアップしておけばよい。レジスタ名は、例えばプログラムに記述されているレジスタ名、又は、識別するための識別情報である。したがって、図4のデータアドレステーブル36は、図3の場合のようにアドレステーブル作成手段35が作成する必要のない静的なテーブルであり、不揮発メモリ15,23に予め記憶されている。
【0044】
図4のデータ退避手段31はRAM12のデータを退避する場合と同様に、レジスタのデータを退避でき、データ復帰手段33はRAM12のデータを退避する場合と同様にレジスタのデータを復帰させることができる。
【0045】
〔動作手順〕
図5は、アドレステーブル作成手段35がデータアドレスを作成する手順を示すフローチャート図の一例である。図5の手順は、プログラムがRAM12に対し書込処理を行うとスタートする。
【0046】
まず、プログラムがST命令やPUSH命令のようにRAM12にデータを書き込む処理を実行する(S10)。
【0047】
すると、アドレステーブル作成手段35は、通常モードへの復帰後にプログラムが使用するデータが書き込まれたか否かを判定する(S20)。通常モードへの復帰後にプログラムが使用するデータが書き込まれた場合(S20のYes)、データが書き込まれたRAM12のアドレスをデータ名に対応づけてデータアドレステーブル36に登録する(S30)。なお、データアドレステーブルにデータ名を登録しなくても、データアドレステーブルの決まったアドレスに決まったデータの格納アドレスを登録すればよい。
【0048】
アドレステーブル作成手段35は、通常モードへの復帰後にプログラムが使用するデータでないデータが書き込まれた場合(S20のNo)、何もせずに処理を終了する。
【0049】
図6は、データ退避手段31がスリープ時にデータを退避する手順を示すフローチャート図の一例である。図6の手順は移行判定手段34が省電力モードに移行すると決定するとスタートする。
【0050】
まず、データ退避手段31は、Nに初期値“1”を設定する(S110)。そして、データ退避手段31はデータアドレステーブル36のN行目から順番に参照して、格納アドレスを読み出す(S120)。
【0051】
データ退避手段31は、N行目の格納アドレスに有効なアドレス値が登録されているか否かを判定する(S130)。有効なアドレス値とは“0000h”などの初期値でなく、アドレステーブル作成手段35がデータアドレステーブル36にデータと格納アドレスを対応づけて登録したことで記憶されたアドレス値である。つまり、ECU100に特有のプログラムはRAM12をいったん初期化するので、アドレステーブル作成手段35が格納アドレスを登録しなければ、データアドレステーブルの各データの格納アドレスが記憶される領域には“0000h”などの初期値が登録されたままだからである。データ退避手段31にはこの具体的な初期値が登録されているので、有効なアドレス値が登録されているか否かを容易に判定できる。
【0052】
有効なアドレス値が登録されている場合、データ退避手段31は有効と判定されたRAM12のアドレスからデータを読み出し、データ名と対応づけてデータ保持手段32に退避する(S140)。
【0053】
次に、データ退避手段31はデータアドレステーブル36の最終行まで処理したか否かを判定し(S150)、最終行まで処理していなければNをインクリメントして(S160)、ステップS120からの処理を繰り返す。最終行まで処理すると図6の処理を終了する。最終行に到達したことは、Nが予め定めた値に到達したこと、又は、データアドレステーブル36の最終行に登録される値(例えば、FFFFh)を検出したことにより判定される。なお、レジスタについても同様に処理できる。
【0054】
図7は、データ復帰手段33がWakeUp時にデータをRAM12に復帰させる手順を示すフローチャート図の一例である。図7の手順は、例えばCPU11への割り込み又はマイコン200のWAKE端子にウェイクアップ信号が入力されるとスタートする。
【0055】
まず、データ復帰手段33は、不揮発メモリ15,23に記憶されていたデータアドレステーブル36をRAM12にコピーする(S210)。これによりデータアドレステーブル36を参照可能になる。
【0056】
次に、データ復帰手段33は、Mに初期値“1”を設定する(S220)。そして、データ復帰手段33はデータ保持手段32のM番目のデータを読み出す(S230)。
【0057】
次に、データ復帰手段33は同じデータ名のデータをデータアドレステーブル36にて特定し、そのデータが退避前に記憶されていたRAM12の格納アドレスを読み出す(S240)。データ復帰手段33はデータ保持手段32のM番目のデータ内容を読み出し、S240で特定したRAM12のアドレスに復帰する(S250)。
【0058】
次に、データ復帰手段33はデータ保持手段32の最終行まで処理したか否かを判定し(S260)、最終行まで処理していなければMをインクリメントして(S270)、ステップS230からの処理を繰り返す。最終行に到達したことは、データ保持手段32の最終行に登録される値(例えば、FFFFh)を検出したことにより判定される。なお、レジスタについても同様に処理できる。
【0059】
以上説明したように、本実施例のECU100は、省電力モードへの移行時に、省電力モードからの復帰後に使用されるデータのみを退避することで、省電力モードへの移行時間を短縮でき、かつ、通常モードへの移行時間を短縮できる。
【実施例2】
【0060】
本実施例ではデータアドレステーブル36を用いることなく省電力モードへの移行と通常モードへの復帰が可能なECU100について説明する。
【0061】
図8(a)は、本実施例のECU100の機能ブロック図の一例を示す。図8(a)において図3と同一部には同一の符号を付しその説明は省略する。本実施例ではデータアドレステーブル36を作成する必要がないのでアドレステーブル作成手段35が存在しないが、代わりにデータストア手段37を有する。データストア手段37は復帰後に使用されるデータか否かに応じてRAM12におけるデータの記憶先を振り分ける。
【0062】
さらに、本実施例ではプログラムが、RAM12を予め復帰後に使用されるデータが記憶される領域(以下、領域Bという)と復帰に不要なデータが記憶される領域(以下、領域Aという)の2つの領域に区分する。図では、アドレスのXXXXhからYYYYhの直前までが領域B、YYYYhからZZZZhの直前までが領域Aである。
【0063】
一般には、開発者がソースコードでマイコン200に特有の機能を提供するプログラムを記述する際、全てのデータをRAM12のどのアドレスに記憶するかを指定することは少ない(一部のデータに対しRAM12のどのアドレスに記憶するかを意識することはあっても)。そこで、実施例1と同様にコンパイラを利用する。すなわち、開発者等はコンパイラに以下のような記述を加える。
(i)スリープ時に退避すべきデータのリストの生成、及び、2つの領域を確保する記述
(ii)ST命令やPUSH命令を検出すると、オペランドのレジスタに記憶された変数が、退避すべきデータのリストに登録されている否かを判定するための命令を生成する記述
(iii)退避すべきデータの場合は領域Bに、退避すべきデータでない場合は領域Aに、それぞれデータを退避する命令を生成する記述
すなわち、コンパイラは、例えば「PUSH Gr1(Val_Cが入ったGr1をRAMに記憶)」が検出されると、オブジェクトコードに記述する前に、データVal_Cが復帰に必要か否かを判定する命令、必要である場合、領域Bに記憶する命令を生成する。このような記憶先の振り分けの実現にはいくつか方法があるが、例えば、領域AとBのそれぞれの先頭アドレスを起点に各データを記憶する方法、ポインタを2つ用意し、領域A、Bのアドレスをそれぞれに指示させる方法、等がある。
【0064】
こうすることで、プログラムはRAM12におけるデータの記憶先を、復帰後に使用されるデータは領域Bに、復帰後に使用されないデータは領域Aに振り分けて記憶することができる。本実施例では、復帰後に使用されるデータであっても領域B内におけるアドレスを特定する必要はない。退避時には領域Bのデータをデータ保持手段32に退避し、復帰時にはデータ保持手段32のデータを領域Bに記憶すればよいからである。
【0065】
このようにしてプログラムに搭載された、データを2つの領域A、Bに振り分ける機能を図ではデータストア手段37として記載した。データストア手段37は、プログラムが実行された際に2つの領域A、Bにデータを振り分ける。
【0066】
本実施例のデータ退避手段31及びデータ復帰手段33には、領域Bのアドレス(YYYYhからZZZZhの直前まで)が予め登録されている。したがって、データ退避手段31及びデータ復帰手段33はデータアドレステーブル36を参照することなく、データを退避・復帰することができる。
【0067】
すなわち、データ復帰手段33は、省電力モードへの移行時に、アドレスYYYYhからZZZZhの直前までのデータを機械的にデータ保持手段32に退避する。機械的にとは、RAM12におけるデータの順番(アドレス)どおりに、データ保持手段32に記憶することを意味する。データ復帰手段33にとって、データ保持手段32のどのアドレスにRAM12のアドレスYYYYhからZZZZhのデータが退避されているかは既知なので、WakeUp時に、データ保持手段32に退避されているRAM12のアドレスYYYYhからZZZZhの直前までのデータを、RAM12のアドレスYYYYhからZZZZhの直前までに機械的に復帰すればよい。
【0068】
〔レジスタのデータについて〕
図8(b)は、レジスタの退避・復帰におけるECU100の機能ブロック図の一例を示す。図8(b)において図4と同一部の説明は省略する。レジスタの場合、復帰後に使用されるデータか否かに応じてレジスタを使い分けることも不可能ではないが、実施例1と同様に、復帰後に使用されるデータが記憶されうるレジスタ名をリストアップしておくことで、データアドレステーブル36を不要にするという効果が得られる。この場合、記憶先のレジスタを振り分けないのでデータストア手段37も不要である。データ退避手段31には、復帰後に使用されるデータが記憶されうるレジスタ名が記述されているので、そのレジスタのデータを退避すればよい。一方、データ保持手段32又はデータ復帰手段33には復帰対象のレジスタ名が必要になる。
【0069】
したがって、本実施例のデータ退避手段31は、省電力モードへの移行時に、予めデータ退避手段31にとって既知のレジスタGr1,Gr4のデータをデータ保持手段32にレジスタ名と対応づけて退避する。レジスタ名がなくても、データ保持手段32のどのアドレスにどのレジスタのデータが記憶されているかは固定である。データ復帰手段33にとって、データ保持手段32のどのアドレスにレジスタGr1,Gr4のデータが退避されているかは既知なので、WakeUp時、データ保持手段32に退避されているGr1、Gr4のレジスタのデータを、レジスタGr1,Gr4に機械的に復帰すればよい。
【0070】
なお、復帰後に使用されるデータか否かに応じてレジスタを使い分ける場合、例えば、開発者等が、復帰後に使用されるデータは所定の汎用レジスタGr1,Gr4を、復帰後に使用されないデータは汎用レジスタGr0、Gr2、Gr3を用いて各種の演算を行うようにコンパイラを記述しておけば、プログラムはデータが復帰に必要か否かに応じて汎用レジスタを使い分けることができる。この場合は、データ保持手段32のレジスタ名も不要になる。
【0071】
〔動作手順〕
図9(a)は、データ退避手段31がデータを退避する手順を示すフローチャート図の一例である。図9の手順は移行判定手段34が省電力モードに移行すると決定するとスタートする。
【0072】
まず、データ退避手段31は、Kに初期値“0”を設定する(S310)。そして、データ退避手段31はRAM12の領域Bの先頭アドレス+kのデータを読み出す(S320)。
【0073】
データ退避手段31は読み出したデータをアドレス順にデータ保持手段32に退避する(S330)。
【0074】
次に、データ退避手段31は領域Bのデータを全て退避したか否かを判定し(S340)、全て退避していなければKをインクリメントして(S350)、ステップS320からの処理を繰り返す。領域Bのデータを全て退避すると図9(a)の処理を終了する。なお、領域Bは固定なのでデータ退避手段31は最後のアドレス(ZZZZhの手前)に到達したことで、領域Bのデータを全て退避したと判定できる。
【0075】
図9(b)は、データ復帰手段33がWakeUp時にデータをRAM12に復帰する手順を示すフローチャート図の一例である。
【0076】
まず、データ復帰手段33は、Kに初期値“0”を設定する(S410)。そして、データ復帰手段33はデータ保持手段32の先頭アドレス+kのデータを読み出す(S420)。
【0077】
そして、データ復帰手段33はRAM12の領域Bの先頭アドレス+kにデータを復帰する(S430)。先頭アドレスは例えばYYYYhであり、データ復帰手段33にとって既知である。
【0078】
次に、データ復帰手段33はデータ保持手段32のデータを全て復帰したか否かを判定し(S440)、全て復帰していなければKをインクリメントして(S450)、ステップS420からの処理を繰り返す。データ保持手段32のデータを全て退避すると図9(b)の処理を終了する。なお、領域Bのサイズが固定なのでデータ保持手段32の最後のデータもアドレスから容易に特定できる。レジスタについても同様に処理できる。
【0079】
以上説明したように、本実施例のECU100は、データアドレステーブル36を用いることなく、省電力モードへの移行時間を短縮でき、かつ、通常モードへの移行時間を短縮できる。
【実施例3】
【0080】
実施例1では復帰後に使用される各データの優先順位については考慮しなかったが、復帰後に使用される各データ間でも復帰後に早期に読み出されるデータとそうでないデータがある。そこで、本実施例では、データの優先順位を考慮して通常モードへの復帰時に、優先順位の高いデータから先にRAM12に書き込むECU100について説明する。
【0081】
図10は、ECU100の機能ブロック図の一例を示す。図10において図4と同一部の説明は省略する。本実施例では、データアドレステーブル36が実施例1と異なっている。本実施例のデータアドレステーブル36は属性情報のフィールドが登録されている。属性情報は数値であり、数値が小さいほどデータの優先順位が高いことを表す。
【0082】
本実施例のデータアドレステーブル36の生成について説明する。データの優先順位は固定であるので、例えば開発者等は、省電力モードからの復帰後に早期にアクセスされるデータを調査し、早期にアクセスされるデータほど優先順位が高いとして小さい属性情報を付与する。スリープからの復帰後にアクセスされるデータが不定のプログラムが実装されたECU100の場合、例えば、アクセス頻度が高いデータほど優先順位を高くする。また、例えば、プログラムの最初の方に使用されるデータほど優先順位を高くすることもできる。なお、全てのデータに優先順位を付与する必要はなく、上位の10〜20程度(又は10〜50%程度)に優先順位を付与しておけば、残りのデータの属性情報が同じでも、復帰後に早期に読み出されるデータを早期にRAM12に書き込むという効果は十分に得られる。
【0083】
優先順位とデータの対応は固定なので、実施例1のデータアドレステーブル36に属性情報を追加する。この他のコンパイラの記述やデータの記憶方法は実施例1と同様である。
tbl_C DC ‘Val_C’ ;tbl_C番地にデータ名Val_Cを設定
tbl_C_A DC 0000 ;tbl_C_A番地に属性情報を設定
tbl_C_V DS 1 ;次の番地に変数Val_Cの領域を確保(ex.4バイト)
tbl_E DC ‘Val_E’ ;tbl_E番地にデータ名Val_Eを設定
tbl_E_A DC 0001 ;tbl_E_A番地に属性情報を設定
tbl_E_V DS 1 ;次の番地に変数Val_Eの領域を確保(ex.4バイト)
そして、データ退避手段31は、省電力モードへの移行時、データアドレステーブル36を参照して属性情報の小さいデータから順番に、データ保持手段32に退避する。これにより、データ復帰手段33は属性情報の小さいデータから順番にデータ保持手段32からデータを読み出すことができる。
【0084】
データ復帰手段33は、優先順位の高いデータ(属性情報の小さいデータ)からRAM12に復帰したいので、データ保持手段32から属性情報の小さいデータから先に取り出すことが好ましい。このため、本実施例のデータ保持手段32はキュー構造(FIFO)のデータ構造を有する。これにより、データ復帰手段33は先に退避されたデータから順番にRAM12に復帰させることができる。
【0085】
本実施例のECU100は、WakeUp中(つまり、データ保持手段32のデータがまだ全てRAM12に書き込まれていない状態)に、ECU100がプログラムを実行できるようになるため、実施例1,2と比べても復帰時間を短縮できる。一般には1つのCPU11が時分割に復帰処理とマイコン特有の処理であるプログラムを実行することは少ないが、CPU11がマルチコア型の場合やECU100が複数のCPUコアを有している場合、1つのCPUコアが復帰処理を実行しながら、他方のCPUコアがプログラムを実行することができる。
【0086】
〔データ保持手段の変形例〕
データ保持手段32はキュー構造として説明したが、データ保持手段32はスタック構造でもよい。スタック構造は、後に記憶されたデータから先に取り出されるデータ構造である(FIFO)。データ復帰手段33が優先順位の高いデータから先に取り出すためには、データ退避手段31が優先順位の低いデータから先にデータ保持手段32に退避すればよい。すなわち、データ退避手段31は、省電力モードへの移行時、データアドレステーブル36を参照して、属性情報の大きいデータから順番に、データ保持手段32に退避する。これにより、データ復帰手段33は属性情報の小さいデータから順番にスタック構造のデータ保持手段32からデータを読み出すことができる。
【0087】
〔レジスタのデータについて〕
図11は、レジスタの退避・復帰におけるECU100の機能ブロック図の一例を示す。図11において図10と同一部の説明は省略する。図11ではマイコン200にCPU11とCPU11が有するレジスタGr0〜Gr4が図示されている。
【0088】
また、データアドレステーブル36は、属性情報とレジスタ名を対応づけたデータ構造を有する。属性情報の意味は、図10のデータアドレステーブル36と同じであり、属性情報が小さいほど優先順位が高くなっている。したがって、データ退避手段31は、省電力モードへの移行時、データアドレステーブル36を参照して属性情報の小さいレジスタ名のデータから順番に、レジスタ名に対応づけてデータ保持手段32に退避する。これにより、データ復帰手段33は属性情報の小さいレジスタ名のデータから順番にキュー構造のデータ保持手段32から読み出すことができる。
【0089】
〔動作手順〕
図12は、ECU100がデータを退避及び復帰する手順を示すフローチャート図の一例である。
【0090】
まず、データ退避手段31は、データアドレステーブル36の最も小さい属性情報をMinに設定する(S510)。すなわち、最も優先順位が高いデータの属性情報をMinに設定する。
【0091】
次に、データ退避手段31は、属性情報がMinのデータの格納アドレスを、データアドレステーブル36を参照して決定する(S520)。
【0092】
データ退避手段31は、S520で決定したデータに有効なアドレス値が対応づけられているか否かを判定する(S530)。判定方法は実施例1と同様である。
【0093】
有効なアドレス値が登録されている場合、データ退避手段31は有効と判定されたRAM12のアドレスからデータを読み出し、データ名に対応づけてデータ保持手段32に退避する(S540)。
【0094】
次に、データ退避手段31はデータアドレステーブル36の属性情報を参照して、Min以上の属性情報があるか否かを判定する(S550)。Min以上の属性情報があることは同等以下の優先順位のデータがあることになるので、データ退避手段31はMinに、現在のMin以上の属性情報のうち最も小さい属性情報を設定する(S560)。Min以上の属性情報がない場合、図12の処理は終了する。こうすることで、キュー構造のデータ保持手段32には優先順位の高いデータから先に記憶されたことになる。
【0095】
データの復帰の際、データ復帰手段33はデータ保持手段32に記憶された順番が古いデータから順に読み出せばよい。よって、データ復帰手段33がWakeUp時にデータをRAM12に復帰する手順は図7と同様になるので図は省略する。
【0096】
以上説明したように、本実施例のECU100は実施例1の効果に加え、優先順位の高いデータから先に復帰するので、実施例1よりもさらに、通常モードへの移行時間を短縮できる。
【符号の説明】
【0097】
11 CPU
12 RAM
15,23 不揮発メモリ
31 データ退避手段
32 データ保持手段
33 データ復帰手段
34 移行判定手段
35 アドレステーブル作成手段
36 データアドレステーブル
37 データストア手段
100 ECU
200 マイコン
【技術分野】
【0001】
本発明は、省電力モードを備えた情報処理装置に関し、特に、揮発性メモリから不揮発メモリにデータを退避する情報処理装置等に関する。
【背景技術】
【0002】
消費電力を低減するため、マイコンに電源オフ状態とは別に省電力モードが用意されていることがある。省電力モードでは、マイコンのRAMに記憶されたデータが不揮発メモリに退避される。通常モードへの復帰時、CPUが不揮発メモリからRAMにデータを再度書き込むことで、アプリケーションやOSのファイルを不揮発メモリから読み出す通常起動よりも、起動時間を短縮することができる。
【0003】
しかし、省電力モードから通常モードへ復帰するまでの起動時間は短いほど好ましい場合が多く、起動時間をさらに短縮することが望まれている(例えば、特許文献1参照。)。特許文献1には、揮発性メモリ内のデータを不揮発性メモリに退避させる省電力モードと、揮発性メモリ内のデータを揮発性メモリ内で保持させた状態を省電力モードとする、2つの省電力モードをマイコンに用意しておことで、省電力モードから通常モードへの復帰の迅速性と、電力の消費の抑制とをユーザが選択可能とする電子機器が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−287492号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示された電子機器は、揮発性メモリ内のデータを不揮発性メモリに退避させる省電力モードにおいて、省電力モード又は通常モードへの移行時間が長期化するという問題がある。すなわち、マイコンが省電力モードから通常モードへ復帰する際に、不揮発メモリの全データを必要とすることは少なく、省電力モードに移行する前の状態に復帰するには不揮発メモリの一部のデータがあれば十分な場合がある。したがって、引用文献1の電子機器は、通常モードから省電力モードへの移行時と省電力モードモードから通常モードへの移行時の両方で、不必要なデータを退避・復帰するため、省電力モード又は通常モードへの移行時間が長期化していた。
【0006】
本発明は、上記課題に鑑み、省電力モード又は通常モードへの移行時間を短縮できる情報処理装置を提供することをも目的とする。
【課題を解決するための手段】
【0007】
上記課題に鑑み、本発明は、揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置において、不揮発性の記憶手段と、前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合に、前記退避対象データのデータ識別情報と該データのアドレスが対応づけられたデータテーブルを作成するアドレステーブル作成手段と、前記第1の動作モードから前記第2の動作モードに移行する際、前記データテーブルに登録された前記退避対象データのアドレスを前記データテーブルから読み出し、前記揮発性メモリのアドレスから読み出した前記退避対象データを前記記憶手段に退避するデータ退避手段と、前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記退避対象データを、前記アドレステーブルに登録されている前記揮発性メモリのアドレスに復帰させるデータ復帰手段と、を有する。
【発明の効果】
【0008】
省電力モード又は通常モードへの移行時間を短縮できる情報処理装置を提供することができる。
【図面の簡単な説明】
【0009】
【図1】データ退避方法の概略を説明する図の一例である。
【図2】ECUの概略構成図の一例である。
【図3】ECUの機能ブロック図の一例である。
【図4】レジスタの退避・復帰におけるECUの機能ブロック図の一例である。
【図5】アドレステーブル作成手段がデータアドレスを作成する手順を示すフローチャート図の一例である。
【図6】データ退避手段がスリープ時にデータを退避する手順を示すフローチャート図の一例である。
【図7】データ復帰手段がWakeUp時にデータをRAMに退避する手順を示すフローチャート図の一例である。
【図8】ECUの機能ブロック図の一例である(実施例2)。
【図9】データ退避手段がデータを退避する手順、データ復帰手段がデータを復帰する手順をフローチャート図の一例である。
【図10】ECUの機能ブロック図の一例である(実施例3)。
【図11】レジスタの退避・復帰におけるECUの機能ブロック図の一例である(実施例3)。
【図12】データ退避手段がデータを退避する手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【0010】
以下、本発明を実施するための形態について実施例を挙げて図面を参照しながら説明する。
【実施例1】
【0011】
図1は、本実施例のデータ退避方法の概略を説明する図の一例である。
図1(a)に示すように、CPU(実際にはアプリケーションプログラム)11は、RAM12に、復帰後に使用されるデータを書き込むと、該データのアドレスをデータアドレステーブル36に登録する。図では、復帰後に使用されるデータとしてVal_CとVal_EがRAM12に書き込まれているので、データアドレステーブル36にはVal_CとVal_Eが書き込まれたアドレスが登録されている。
【0012】
図1(b)は、不揮発メモリへの退避を説明する図である。マイコンが省電力モードモードに移行する際、CPU11はデータアドレステーブル36を参照して、復帰後に使用されるデータのRAM12におけるアドレスを特定する。そして、CPU11はデータアドレステーブル36に登録されたアドレスに記憶されているRAM12のデータを不揮発メモリ15,23に退避する。
【0013】
データアドレステーブル36に登録されているデータは、マイコンが全て省電力モードから通常モードに復帰した後に使用するデータなので、CPU11はデータアドレステーブル36に登録されている全てのデータを不揮発メモリ15,23に退避(記憶)させる。
【0014】
このように、省電力モードへの移行時に、省電力モードからの復帰後に使用されるデータのみを退避することで、省電力モードへの移行時間を短縮でき、かつ、省電力モードから通常モードへの移行時間を短縮できる。また、従来はRAM12と同程度の不揮発メモリが必要であったが、本実施例では退避するデータを少なくするので不揮発メモリの容量を低減できる。
【0015】
なお、省電力モードとしては、スリープモード、スタンバイモード、又は、ハイバネーションモードなどのモード名が知られているが、一般に、スリープモードとハイバネーションモードはデータを不揮発メモリ15,23に退避し、スタンバイモードはRAM12からデータを退避しないモードである(RAM12のリフレッシュのための電力を消費してしまう)。本実施例の省電力モードは、こういったモード名に関係なく、揮発性メモリから不揮発メモリに退避対象のデータを退避するモードであればよい。
【0016】
また、通常モードとはプログラムが動作可能なモードであり、通常モードの中でさらに動作周波数が可変である等、消費電力の異なるモードがあってもよい。なお、マイコンが省電力モードから通常モードへ移行することをWakeUpと呼ぶ場合がある。
【0017】
〔構成〕
図2は、ECUの概略構成図の一例を示す。ECU(Electronic Contorol Unit)100はマイコン200とその他の回路とを有し、その他の回路は主に電源IC21、入出力I/F22、不揮発メモリ23、監視回路24、及び、クロック生成器25である。
【0018】
また、マイコン200はCPU11、RAM12、ROM13、INTC(割込みコントローラ)14、不揮発メモリ15、DMAC16、及び、ブリッジ17を有する。CPU11は、例えばROM13に記憶されたプログラムを実行しRAM12にデータを書き込み、またRAM12に書き込まれたデータを読み出して演算結果を生成したり、他のECUと通信するための通信情報を生成する。RAM12はこのようなプログラムの作業メモリとなり、各種のデータが一時的に記憶される。
【0019】
ROM13にはプログラムが予め記憶されている。また、プログラムはECU100に特有の処理を行うものの他、データの退避・復帰を行うためのプログラムが含まれているが、区別せずに図示している。INTC14は、入出力I/F22、不図示のタイマ、又は、他のECU等からの割込み要因を調停して、CPU11に割込み要求する。不揮発メモリ15は、フラッシュメモリなどのEEPROMであり省電力モード移行時にデータの退避に使用される。DMAC16は、入出力I/F22からの要求を受け付けて入出力I/F22からRAM12の指定アドレスにデータを転送し、また、CPU11からの要求を受け付けてRAM12の指定アドレスから入出力I/F22にデータを転送する。ブリッジ17は、マイコン内のバス18とマイコン200外のバス26の周波数の違いや電圧の違いを吸収してバス同士を接続する。
【0020】
電源IC21は、不図示のバッテリ又はIG電源(どちらを電源とするかはECUによって異なる)から電力供給を受けてマイコン駆動用の電圧・電流を生成する。IGオン(メインリレーオン)時は、ECU内の全ての回路を通常モードで動作させるために必要な大容量の電圧・電流を生成し、IGオフ(メインリレーオフ)時は、マイコン200や他の回路の一部を省電力モードに保持するために必要な最小限の電圧・電流を生成する。電源IC21は、通常モードと省電力モードにおいて、予めそれぞれに決められた回路に電力を供給する。
【0021】
入出力I/F22にはマイコン200が演算に用いる信号を検出する各種のセンサ、マイコン200が制御するアクチュエータやアクチュエータのドライバ回路、CAN(Controller Area Network)通信等が接続されている。不揮発メモリ23は、フラッシュメモリなどのEEPROMであり省電力モード移行時にデータの退避に使用される。ECUによっては、不揮発メモリ15と不揮発メモリ23はどちらか一方のみが搭載されることがある。
【0022】
監視回路24は、異常を検出するためのウォッチドックタイマ、異常時にマイコン200をリセットして再起動させるためのリセット回路等を有する。クロック生成器25はマイコン200に同期用のクロックを供給する。クロック生成器25は、省電力モードになると、クロックを停止するか通常モードよりも低速にし、また、CPU(又は一部)等、通常モードに復帰するための移行条件の成立を検出するための回路以外へのクロック供給を停止して消費電力を抑制する。
【0023】
図3は、マイコン200の機能ブロック図の一例を示す。マイコン200は、アドレステーブル作成手段35、データ退避手段31、データ復帰手段33、移行判定手段34、及び、データ保持手段32を有する。データ保持手段32は、図2の不揮発メモリ15又は不揮発メモリ23が対応する。アドレステーブル作成手段35、移行判定手段34、データ復帰手段33及びデータ退避手段31は、CPU11がプログラムを実行することで実現される。
【0024】
<データアドレステーブル>
データアドレステーブル36はデータ名と、そのデータのRAM12における格納アドレスを対応づけたデータ構造を有する。CPU11が実行するプログラムには、後述するように、データアドレステーブル36に格納アドレスを登録すべきデータ名が記述されている。これにより、データアドレステーブル36には、省電力モードへの復帰後に使用されるデータのみの格納アドレスが登録される。
【0025】
省電力モードへの復帰後に使用されるデータとは、何らかのイベントの発生時に更新されるステータスやモードなどを表すデータ、更新の頻度が低いデータ、処理の途中であるがWakeUp後に再度、最初の処理から実行される仕組みをもっていないデータなどである。具体例としては、ボディECUがRAM12に記憶するドアが解錠状態又は施錠状態のいずれであるかを示すステータスデータ、他のECU100へ送信するためRAM12に準備されているがまだ送信が完了指定なデータなどが挙げられる。
【0026】
一方、省電力モードへの復帰後に使用されないデータとは、時間の経過と共に最新値が頻繁かつ自動的に更新されるデータ、過去の時点における古い値には意味のないデータなどである。具体例としては、現在の走行速度データ、現在のエンジン回転数データ、等が挙げられる。
【0027】
なお、データ名は、プログラム(コンパイルされている)に記述されている変数名、又は、変数を識別するための識別情報である。このため、以下ではデータ名と変数名を同じ意味で用いる場合がある。
【0028】
アドレステーブル作成手段35は図3のようなデータアドレステーブル36を作成する。プログラムが変数や固定値をRAM12に書き込む場合、コンパイラにより生成されたST(ストア)命令やPUSH命令等のーモニックが実行されることでRAM12にアクセスする。よって、これらの命令が実行されることはRAM12にデータが書き込まれることになる。ST命令に対しアクセスされるRAM12のアドレス、PUSH命令に対しアクセスされるRAM(スタック)12のアドレスは、それぞれの命令の実行時の所定のレジスタに格納されている。また、RAM12に書き込まれるデータは変数名を経由して、ST命令やPUSH命令のオペランドのレジスタに記憶されている。
【0029】
これらを利用して、アドレステーブル作成手段35は、データの記憶先のアドレスが書き込まれたレジスタの内容をデータアドレステーブル36に登録する。より具体的には、開発者等がソースコードを記述する際にはプログラムにST命令やPUSH命令が現れないので、例えばコンパイラを利用する。すなわち、開発者等はコンパイラに以下のような記述を加える。
(i) スリープ時に退避すべきデータのリストの生成、及び、データアドレステーブルの領域を確保する命令を生成する記述
(ii) ST命令やPUSH命令を検出すると、オペランドのレジスタに記憶された変数が、退避すべきデータのリストに登録されている否かを判定するための命令を生成する記述
(iii) 退避すべきデータの場合、ST命令やPUSH命令の実行時のレジスタの内容をデータアドレステーブルに登録する命令を生成する記述
コンパイラが上記記述に対応した処理を実行すると、ECU100が実行するプログラムにアドレステーブル作成手段35が生成される。例えば、PUSH命令が検出され、変数Val_Cが退避すべきデータの場合、アドレステーブル作成手段35は以下のようになる。なお書式は一例であり適宜省略している。
【0030】
PUSH Gr1 ;Val_C(データ内容)が記憶されたGr1をRAMに記憶
… ;命令で使用された“Val_C”という変数名をGr1に記憶
LD Gr2, tbl_C ;tbl_C 番地のVal_CをGr2に読み出す
CPL Gr1,Gr2 ;Gr1(Val_C)とGr2(tbl_C 番地のVal_C)を比較
JZE EQ1 ;一致したらEQ1へジャンプ
… ;同様にtbl_E番地以下のVal_E等と比較
EQ1 mov Gr3, SP ;スタックポインタレジスタの中身をGr3にコピー
ST Gr3,tbl_C_V ;Gr3の内容をtbl_C_V番地に記憶
JMP XX ;元の実行箇所に戻る
EQ2 mov Gr3, SP ;スタックポインタレジスタの中身をGr3にコピー
ST Gr3,tbl_E_V ;Gr3の内容をtbl_E_V番地に記憶
JMP XX ;元の実行箇所に移動
tbl_C DC ‘Val_C’ ;tbl_C番地にデータ名Val_Cを設定
tbl_C_V DS 1 ;次の番地に変数Val_Cの領域を確保(ex.4バイト)
tbl_E DC ‘Val_E’ ;tbl_E番地にデータ名Val_Eを設定
tbl_E_V DS 1 ;次の番地に変数Val_Eの領域を確保(ex.4バイト)
このような処理により、tbl_C番地のデータ名に対応づけてtbl_C_V番地に格納アドレスが記憶される。よって、同じ変数が何度もRAM12に書き込まれても、データ退避手段31はtbl_C_V番地に記憶されている最新のデータを特定できる。
【0031】
なお、ソースコード中にアセンブラ(ニーモニック)を記述できるインラインアセンブラに対応したソースコードで開発者がプログラムを記述する場合、コンパイラを利用することなく、開発者が上記のアドレステーブル作成手段35のニーモニックを記述できる。
【0032】
次に、移行判定手段34について説明する。移行判定手段34は、通常モードから省電力モードへの移行条件の成立を検出して、データの退避をデータ退避手段31に指示する。省電力モードから通常モードへの移行条件の成立は、何らかの割り込みであることが多いので、移行判定手段34はこのような割り込みの検出手段又はデータ復帰手段31を起動する手段である。
【0033】
通常モードから省電力モードへの移行条件は、ECU100によって様々であるが、例えば、乗員がIGオフに操作したこと、IGオフ後、定められた終了処理(アクチュエータを安全に停止させる処理、ECUハードのアクセスを適切に終了させる処理等)が終了したこと、監視対象の通信線の所定時間の平均電圧が閾値未満であったこと(つまりそのECUが使用されていない)、等である。
【0034】
省電力モードから通常モードへの移行条件もECU100によって様々であるが、例えば、乗員がIGオンに操作したこと、監視対象の通信線の所定時間の平均電圧が閾値以上であったこと、ユーザ操作が検出されたこと等である。これらの移行条件の成立は、例えば、CPU11への割り込み又はマイコン200のWAKE端子にウェイクアップ信号が入力されることで検出される。
【0035】
移行判定手段34が省電力モードに移行すると判定すると、データ退避手段31はRAM12に記憶されているデータの退避を開始する。データ退避手段31は、データアドレステーブル36に記憶されているデータ名を例えばデータアドレステーブル36の登録順に決定し、データ名に対応づけられた格納アドレスを読み出す。そして、データ退避手段31はRAM12のアドレスからデータ内容を読み出し、データ名とデータ内容を対応づけてデータ保持手段32に退避する(記憶する)。これにより、ECU100が通常モード時にRAM12に記憶したデータを退避させることができる。
【0036】
また、データ退避手段31はデータアドレステーブル36に登録されている全てのデータをデータ保持手段32に退避すると、データアドレステーブル36をRAM12からデータ保持手段32に退避する。これにより、データ復帰手段33がWakeUp時にデータアドレステーブル36を利用できる。最終的に、データ退避手段31は省電力モードへ移行するSleep命令を実行して、省電力モードに移行する。
【0037】
通常モードへの移行条件が成立すると、例えば、割り込みハンドラにより指定される予め定められたアドレスの命令、又は、省電力モードに移行する直前に実行された命令(例えば、省電力モードへ移行するSleep命令)の次の命令、をCPU11が実行する。これにより復帰処理が開始される。
【0038】
データ復帰手段33はデータ保持手段32に退避されているデータの復帰を開始する。データ復帰手段33は、データアドレステーブル36をデータ保持手段32からRAM12に移動し、データ保持手段32のデータ名とデータ内容を例えばアドレス順に読み出す。そして、データアドレステーブル36の同じデータ名の格納アドレスを参照して、RAM12のそのアドレスにデータ内容を書き込む。データ復帰手段33はデータ保持手段32に退避されている全てのデータ内容をRAM12に書き込む。これにより、RAM12には復帰後に使用されるデータが省電力モード前とRAM12の同じアドレスに復帰されたことになる。
【0039】
なお、復帰後に使用されないデータはRAM12に書き込まれないので、これらのデータが記憶されていたRAM12のアドレスのデータは不定であるが、マイコン200が実行するプログラムはこのデータを使用しないので不都合はない。しかし、プログラムがアクセスしても想定外の演算が行われないように、データ復帰手段33はデータが存在しないことを示すNULL値を、復帰に不要なデータとしてRAM12に書き込んでよい。こうすることで、プログラムが復帰後に使用しないと思われていたデータを読み出しても、マイコン200が想定外の動作をすることを防止できる(プログラムはデータが正しいか否かを例えば、データがある範囲に入ることをチェックする。)。
【0040】
データ復帰手段33はデータ保持手段32に退避されている全てのデータをRAM12に書き込むと、ROM13におけるプログラムの例えば先頭アドレス、又は、下記のレジスタ内容を利用してデータ退避手段31が退避を開始する直前に実行されていた命令の次の命令をプログラムカウンタにセットする。これにより、CPU11はマイコン200に特有の機能を提供するためのプログラムの実行を開始する。
【0041】
〔レジスタのデータについて〕
CPU11へ電力が供給されない省電力モードでは、CPU11のレジスタに記憶されたデータもRAM12のデータと同様に退避することが好ましい。本実施例のECU100は、レジスタのデータもRAM12のデータと同様に退避・復帰することができる。
【0042】
図4は、レジスタの退避・復帰におけるECU100の機能ブロック図の一例を示す。図4において図3と同一部の説明は省略する。図4ではマイコン200にCPU11とCPU11が有するレジスタGr0〜Gr4が図示されている。この他、プログラムカウンタレジスタ、スタックポインタレジスタ、フラグレジスタ等は省略した。
【0043】
また、データアドレステーブル36はレジスタ名のリストである。データ退避手段31がレジスタの内容を退避する場合、レジスタ名が分かればアドレス(どのレジスタか)は特定されるので、格納アドレスは不要になる。よって、データアドレステーブル36には、復帰後に使用されるデータが記憶されうるレジスタ名をリストアップしておけばよい。レジスタ名は、例えばプログラムに記述されているレジスタ名、又は、識別するための識別情報である。したがって、図4のデータアドレステーブル36は、図3の場合のようにアドレステーブル作成手段35が作成する必要のない静的なテーブルであり、不揮発メモリ15,23に予め記憶されている。
【0044】
図4のデータ退避手段31はRAM12のデータを退避する場合と同様に、レジスタのデータを退避でき、データ復帰手段33はRAM12のデータを退避する場合と同様にレジスタのデータを復帰させることができる。
【0045】
〔動作手順〕
図5は、アドレステーブル作成手段35がデータアドレスを作成する手順を示すフローチャート図の一例である。図5の手順は、プログラムがRAM12に対し書込処理を行うとスタートする。
【0046】
まず、プログラムがST命令やPUSH命令のようにRAM12にデータを書き込む処理を実行する(S10)。
【0047】
すると、アドレステーブル作成手段35は、通常モードへの復帰後にプログラムが使用するデータが書き込まれたか否かを判定する(S20)。通常モードへの復帰後にプログラムが使用するデータが書き込まれた場合(S20のYes)、データが書き込まれたRAM12のアドレスをデータ名に対応づけてデータアドレステーブル36に登録する(S30)。なお、データアドレステーブルにデータ名を登録しなくても、データアドレステーブルの決まったアドレスに決まったデータの格納アドレスを登録すればよい。
【0048】
アドレステーブル作成手段35は、通常モードへの復帰後にプログラムが使用するデータでないデータが書き込まれた場合(S20のNo)、何もせずに処理を終了する。
【0049】
図6は、データ退避手段31がスリープ時にデータを退避する手順を示すフローチャート図の一例である。図6の手順は移行判定手段34が省電力モードに移行すると決定するとスタートする。
【0050】
まず、データ退避手段31は、Nに初期値“1”を設定する(S110)。そして、データ退避手段31はデータアドレステーブル36のN行目から順番に参照して、格納アドレスを読み出す(S120)。
【0051】
データ退避手段31は、N行目の格納アドレスに有効なアドレス値が登録されているか否かを判定する(S130)。有効なアドレス値とは“0000h”などの初期値でなく、アドレステーブル作成手段35がデータアドレステーブル36にデータと格納アドレスを対応づけて登録したことで記憶されたアドレス値である。つまり、ECU100に特有のプログラムはRAM12をいったん初期化するので、アドレステーブル作成手段35が格納アドレスを登録しなければ、データアドレステーブルの各データの格納アドレスが記憶される領域には“0000h”などの初期値が登録されたままだからである。データ退避手段31にはこの具体的な初期値が登録されているので、有効なアドレス値が登録されているか否かを容易に判定できる。
【0052】
有効なアドレス値が登録されている場合、データ退避手段31は有効と判定されたRAM12のアドレスからデータを読み出し、データ名と対応づけてデータ保持手段32に退避する(S140)。
【0053】
次に、データ退避手段31はデータアドレステーブル36の最終行まで処理したか否かを判定し(S150)、最終行まで処理していなければNをインクリメントして(S160)、ステップS120からの処理を繰り返す。最終行まで処理すると図6の処理を終了する。最終行に到達したことは、Nが予め定めた値に到達したこと、又は、データアドレステーブル36の最終行に登録される値(例えば、FFFFh)を検出したことにより判定される。なお、レジスタについても同様に処理できる。
【0054】
図7は、データ復帰手段33がWakeUp時にデータをRAM12に復帰させる手順を示すフローチャート図の一例である。図7の手順は、例えばCPU11への割り込み又はマイコン200のWAKE端子にウェイクアップ信号が入力されるとスタートする。
【0055】
まず、データ復帰手段33は、不揮発メモリ15,23に記憶されていたデータアドレステーブル36をRAM12にコピーする(S210)。これによりデータアドレステーブル36を参照可能になる。
【0056】
次に、データ復帰手段33は、Mに初期値“1”を設定する(S220)。そして、データ復帰手段33はデータ保持手段32のM番目のデータを読み出す(S230)。
【0057】
次に、データ復帰手段33は同じデータ名のデータをデータアドレステーブル36にて特定し、そのデータが退避前に記憶されていたRAM12の格納アドレスを読み出す(S240)。データ復帰手段33はデータ保持手段32のM番目のデータ内容を読み出し、S240で特定したRAM12のアドレスに復帰する(S250)。
【0058】
次に、データ復帰手段33はデータ保持手段32の最終行まで処理したか否かを判定し(S260)、最終行まで処理していなければMをインクリメントして(S270)、ステップS230からの処理を繰り返す。最終行に到達したことは、データ保持手段32の最終行に登録される値(例えば、FFFFh)を検出したことにより判定される。なお、レジスタについても同様に処理できる。
【0059】
以上説明したように、本実施例のECU100は、省電力モードへの移行時に、省電力モードからの復帰後に使用されるデータのみを退避することで、省電力モードへの移行時間を短縮でき、かつ、通常モードへの移行時間を短縮できる。
【実施例2】
【0060】
本実施例ではデータアドレステーブル36を用いることなく省電力モードへの移行と通常モードへの復帰が可能なECU100について説明する。
【0061】
図8(a)は、本実施例のECU100の機能ブロック図の一例を示す。図8(a)において図3と同一部には同一の符号を付しその説明は省略する。本実施例ではデータアドレステーブル36を作成する必要がないのでアドレステーブル作成手段35が存在しないが、代わりにデータストア手段37を有する。データストア手段37は復帰後に使用されるデータか否かに応じてRAM12におけるデータの記憶先を振り分ける。
【0062】
さらに、本実施例ではプログラムが、RAM12を予め復帰後に使用されるデータが記憶される領域(以下、領域Bという)と復帰に不要なデータが記憶される領域(以下、領域Aという)の2つの領域に区分する。図では、アドレスのXXXXhからYYYYhの直前までが領域B、YYYYhからZZZZhの直前までが領域Aである。
【0063】
一般には、開発者がソースコードでマイコン200に特有の機能を提供するプログラムを記述する際、全てのデータをRAM12のどのアドレスに記憶するかを指定することは少ない(一部のデータに対しRAM12のどのアドレスに記憶するかを意識することはあっても)。そこで、実施例1と同様にコンパイラを利用する。すなわち、開発者等はコンパイラに以下のような記述を加える。
(i)スリープ時に退避すべきデータのリストの生成、及び、2つの領域を確保する記述
(ii)ST命令やPUSH命令を検出すると、オペランドのレジスタに記憶された変数が、退避すべきデータのリストに登録されている否かを判定するための命令を生成する記述
(iii)退避すべきデータの場合は領域Bに、退避すべきデータでない場合は領域Aに、それぞれデータを退避する命令を生成する記述
すなわち、コンパイラは、例えば「PUSH Gr1(Val_Cが入ったGr1をRAMに記憶)」が検出されると、オブジェクトコードに記述する前に、データVal_Cが復帰に必要か否かを判定する命令、必要である場合、領域Bに記憶する命令を生成する。このような記憶先の振り分けの実現にはいくつか方法があるが、例えば、領域AとBのそれぞれの先頭アドレスを起点に各データを記憶する方法、ポインタを2つ用意し、領域A、Bのアドレスをそれぞれに指示させる方法、等がある。
【0064】
こうすることで、プログラムはRAM12におけるデータの記憶先を、復帰後に使用されるデータは領域Bに、復帰後に使用されないデータは領域Aに振り分けて記憶することができる。本実施例では、復帰後に使用されるデータであっても領域B内におけるアドレスを特定する必要はない。退避時には領域Bのデータをデータ保持手段32に退避し、復帰時にはデータ保持手段32のデータを領域Bに記憶すればよいからである。
【0065】
このようにしてプログラムに搭載された、データを2つの領域A、Bに振り分ける機能を図ではデータストア手段37として記載した。データストア手段37は、プログラムが実行された際に2つの領域A、Bにデータを振り分ける。
【0066】
本実施例のデータ退避手段31及びデータ復帰手段33には、領域Bのアドレス(YYYYhからZZZZhの直前まで)が予め登録されている。したがって、データ退避手段31及びデータ復帰手段33はデータアドレステーブル36を参照することなく、データを退避・復帰することができる。
【0067】
すなわち、データ復帰手段33は、省電力モードへの移行時に、アドレスYYYYhからZZZZhの直前までのデータを機械的にデータ保持手段32に退避する。機械的にとは、RAM12におけるデータの順番(アドレス)どおりに、データ保持手段32に記憶することを意味する。データ復帰手段33にとって、データ保持手段32のどのアドレスにRAM12のアドレスYYYYhからZZZZhのデータが退避されているかは既知なので、WakeUp時に、データ保持手段32に退避されているRAM12のアドレスYYYYhからZZZZhの直前までのデータを、RAM12のアドレスYYYYhからZZZZhの直前までに機械的に復帰すればよい。
【0068】
〔レジスタのデータについて〕
図8(b)は、レジスタの退避・復帰におけるECU100の機能ブロック図の一例を示す。図8(b)において図4と同一部の説明は省略する。レジスタの場合、復帰後に使用されるデータか否かに応じてレジスタを使い分けることも不可能ではないが、実施例1と同様に、復帰後に使用されるデータが記憶されうるレジスタ名をリストアップしておくことで、データアドレステーブル36を不要にするという効果が得られる。この場合、記憶先のレジスタを振り分けないのでデータストア手段37も不要である。データ退避手段31には、復帰後に使用されるデータが記憶されうるレジスタ名が記述されているので、そのレジスタのデータを退避すればよい。一方、データ保持手段32又はデータ復帰手段33には復帰対象のレジスタ名が必要になる。
【0069】
したがって、本実施例のデータ退避手段31は、省電力モードへの移行時に、予めデータ退避手段31にとって既知のレジスタGr1,Gr4のデータをデータ保持手段32にレジスタ名と対応づけて退避する。レジスタ名がなくても、データ保持手段32のどのアドレスにどのレジスタのデータが記憶されているかは固定である。データ復帰手段33にとって、データ保持手段32のどのアドレスにレジスタGr1,Gr4のデータが退避されているかは既知なので、WakeUp時、データ保持手段32に退避されているGr1、Gr4のレジスタのデータを、レジスタGr1,Gr4に機械的に復帰すればよい。
【0070】
なお、復帰後に使用されるデータか否かに応じてレジスタを使い分ける場合、例えば、開発者等が、復帰後に使用されるデータは所定の汎用レジスタGr1,Gr4を、復帰後に使用されないデータは汎用レジスタGr0、Gr2、Gr3を用いて各種の演算を行うようにコンパイラを記述しておけば、プログラムはデータが復帰に必要か否かに応じて汎用レジスタを使い分けることができる。この場合は、データ保持手段32のレジスタ名も不要になる。
【0071】
〔動作手順〕
図9(a)は、データ退避手段31がデータを退避する手順を示すフローチャート図の一例である。図9の手順は移行判定手段34が省電力モードに移行すると決定するとスタートする。
【0072】
まず、データ退避手段31は、Kに初期値“0”を設定する(S310)。そして、データ退避手段31はRAM12の領域Bの先頭アドレス+kのデータを読み出す(S320)。
【0073】
データ退避手段31は読み出したデータをアドレス順にデータ保持手段32に退避する(S330)。
【0074】
次に、データ退避手段31は領域Bのデータを全て退避したか否かを判定し(S340)、全て退避していなければKをインクリメントして(S350)、ステップS320からの処理を繰り返す。領域Bのデータを全て退避すると図9(a)の処理を終了する。なお、領域Bは固定なのでデータ退避手段31は最後のアドレス(ZZZZhの手前)に到達したことで、領域Bのデータを全て退避したと判定できる。
【0075】
図9(b)は、データ復帰手段33がWakeUp時にデータをRAM12に復帰する手順を示すフローチャート図の一例である。
【0076】
まず、データ復帰手段33は、Kに初期値“0”を設定する(S410)。そして、データ復帰手段33はデータ保持手段32の先頭アドレス+kのデータを読み出す(S420)。
【0077】
そして、データ復帰手段33はRAM12の領域Bの先頭アドレス+kにデータを復帰する(S430)。先頭アドレスは例えばYYYYhであり、データ復帰手段33にとって既知である。
【0078】
次に、データ復帰手段33はデータ保持手段32のデータを全て復帰したか否かを判定し(S440)、全て復帰していなければKをインクリメントして(S450)、ステップS420からの処理を繰り返す。データ保持手段32のデータを全て退避すると図9(b)の処理を終了する。なお、領域Bのサイズが固定なのでデータ保持手段32の最後のデータもアドレスから容易に特定できる。レジスタについても同様に処理できる。
【0079】
以上説明したように、本実施例のECU100は、データアドレステーブル36を用いることなく、省電力モードへの移行時間を短縮でき、かつ、通常モードへの移行時間を短縮できる。
【実施例3】
【0080】
実施例1では復帰後に使用される各データの優先順位については考慮しなかったが、復帰後に使用される各データ間でも復帰後に早期に読み出されるデータとそうでないデータがある。そこで、本実施例では、データの優先順位を考慮して通常モードへの復帰時に、優先順位の高いデータから先にRAM12に書き込むECU100について説明する。
【0081】
図10は、ECU100の機能ブロック図の一例を示す。図10において図4と同一部の説明は省略する。本実施例では、データアドレステーブル36が実施例1と異なっている。本実施例のデータアドレステーブル36は属性情報のフィールドが登録されている。属性情報は数値であり、数値が小さいほどデータの優先順位が高いことを表す。
【0082】
本実施例のデータアドレステーブル36の生成について説明する。データの優先順位は固定であるので、例えば開発者等は、省電力モードからの復帰後に早期にアクセスされるデータを調査し、早期にアクセスされるデータほど優先順位が高いとして小さい属性情報を付与する。スリープからの復帰後にアクセスされるデータが不定のプログラムが実装されたECU100の場合、例えば、アクセス頻度が高いデータほど優先順位を高くする。また、例えば、プログラムの最初の方に使用されるデータほど優先順位を高くすることもできる。なお、全てのデータに優先順位を付与する必要はなく、上位の10〜20程度(又は10〜50%程度)に優先順位を付与しておけば、残りのデータの属性情報が同じでも、復帰後に早期に読み出されるデータを早期にRAM12に書き込むという効果は十分に得られる。
【0083】
優先順位とデータの対応は固定なので、実施例1のデータアドレステーブル36に属性情報を追加する。この他のコンパイラの記述やデータの記憶方法は実施例1と同様である。
tbl_C DC ‘Val_C’ ;tbl_C番地にデータ名Val_Cを設定
tbl_C_A DC 0000 ;tbl_C_A番地に属性情報を設定
tbl_C_V DS 1 ;次の番地に変数Val_Cの領域を確保(ex.4バイト)
tbl_E DC ‘Val_E’ ;tbl_E番地にデータ名Val_Eを設定
tbl_E_A DC 0001 ;tbl_E_A番地に属性情報を設定
tbl_E_V DS 1 ;次の番地に変数Val_Eの領域を確保(ex.4バイト)
そして、データ退避手段31は、省電力モードへの移行時、データアドレステーブル36を参照して属性情報の小さいデータから順番に、データ保持手段32に退避する。これにより、データ復帰手段33は属性情報の小さいデータから順番にデータ保持手段32からデータを読み出すことができる。
【0084】
データ復帰手段33は、優先順位の高いデータ(属性情報の小さいデータ)からRAM12に復帰したいので、データ保持手段32から属性情報の小さいデータから先に取り出すことが好ましい。このため、本実施例のデータ保持手段32はキュー構造(FIFO)のデータ構造を有する。これにより、データ復帰手段33は先に退避されたデータから順番にRAM12に復帰させることができる。
【0085】
本実施例のECU100は、WakeUp中(つまり、データ保持手段32のデータがまだ全てRAM12に書き込まれていない状態)に、ECU100がプログラムを実行できるようになるため、実施例1,2と比べても復帰時間を短縮できる。一般には1つのCPU11が時分割に復帰処理とマイコン特有の処理であるプログラムを実行することは少ないが、CPU11がマルチコア型の場合やECU100が複数のCPUコアを有している場合、1つのCPUコアが復帰処理を実行しながら、他方のCPUコアがプログラムを実行することができる。
【0086】
〔データ保持手段の変形例〕
データ保持手段32はキュー構造として説明したが、データ保持手段32はスタック構造でもよい。スタック構造は、後に記憶されたデータから先に取り出されるデータ構造である(FIFO)。データ復帰手段33が優先順位の高いデータから先に取り出すためには、データ退避手段31が優先順位の低いデータから先にデータ保持手段32に退避すればよい。すなわち、データ退避手段31は、省電力モードへの移行時、データアドレステーブル36を参照して、属性情報の大きいデータから順番に、データ保持手段32に退避する。これにより、データ復帰手段33は属性情報の小さいデータから順番にスタック構造のデータ保持手段32からデータを読み出すことができる。
【0087】
〔レジスタのデータについて〕
図11は、レジスタの退避・復帰におけるECU100の機能ブロック図の一例を示す。図11において図10と同一部の説明は省略する。図11ではマイコン200にCPU11とCPU11が有するレジスタGr0〜Gr4が図示されている。
【0088】
また、データアドレステーブル36は、属性情報とレジスタ名を対応づけたデータ構造を有する。属性情報の意味は、図10のデータアドレステーブル36と同じであり、属性情報が小さいほど優先順位が高くなっている。したがって、データ退避手段31は、省電力モードへの移行時、データアドレステーブル36を参照して属性情報の小さいレジスタ名のデータから順番に、レジスタ名に対応づけてデータ保持手段32に退避する。これにより、データ復帰手段33は属性情報の小さいレジスタ名のデータから順番にキュー構造のデータ保持手段32から読み出すことができる。
【0089】
〔動作手順〕
図12は、ECU100がデータを退避及び復帰する手順を示すフローチャート図の一例である。
【0090】
まず、データ退避手段31は、データアドレステーブル36の最も小さい属性情報をMinに設定する(S510)。すなわち、最も優先順位が高いデータの属性情報をMinに設定する。
【0091】
次に、データ退避手段31は、属性情報がMinのデータの格納アドレスを、データアドレステーブル36を参照して決定する(S520)。
【0092】
データ退避手段31は、S520で決定したデータに有効なアドレス値が対応づけられているか否かを判定する(S530)。判定方法は実施例1と同様である。
【0093】
有効なアドレス値が登録されている場合、データ退避手段31は有効と判定されたRAM12のアドレスからデータを読み出し、データ名に対応づけてデータ保持手段32に退避する(S540)。
【0094】
次に、データ退避手段31はデータアドレステーブル36の属性情報を参照して、Min以上の属性情報があるか否かを判定する(S550)。Min以上の属性情報があることは同等以下の優先順位のデータがあることになるので、データ退避手段31はMinに、現在のMin以上の属性情報のうち最も小さい属性情報を設定する(S560)。Min以上の属性情報がない場合、図12の処理は終了する。こうすることで、キュー構造のデータ保持手段32には優先順位の高いデータから先に記憶されたことになる。
【0095】
データの復帰の際、データ復帰手段33はデータ保持手段32に記憶された順番が古いデータから順に読み出せばよい。よって、データ復帰手段33がWakeUp時にデータをRAM12に復帰する手順は図7と同様になるので図は省略する。
【0096】
以上説明したように、本実施例のECU100は実施例1の効果に加え、優先順位の高いデータから先に復帰するので、実施例1よりもさらに、通常モードへの移行時間を短縮できる。
【符号の説明】
【0097】
11 CPU
12 RAM
15,23 不揮発メモリ
31 データ退避手段
32 データ保持手段
33 データ復帰手段
34 移行判定手段
35 アドレステーブル作成手段
36 データアドレステーブル
37 データストア手段
100 ECU
200 マイコン
【特許請求の範囲】
【請求項1】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置において、
不揮発性の記憶手段と、
前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合、前記退避対象データのデータ識別情報と該データのアドレスが対応づけられたデータテーブルを作成するアドレステーブル作成手段と、
前記第1の動作モードから前記第2の動作モードに移行する際、前記データテーブルに登録された前記退避対象データのアドレスを前記データテーブルから読み出し、前記揮発性メモリのアドレスから読み出した前記退避対象データを前記記憶手段に退避するデータ退避手段と、
前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記退避対象データを、前記アドレステーブルに登録されている前記揮発性メモリのアドレスに復帰させるデータ復帰手段と、
を有する情報処理装置。
【請求項2】
前記データテーブルには前記退避対象データの優先順位が登録されており、
前記データ退避手段は、優先順位の高い順に前記データテーブルに登録された前記退避対象データを前記記憶手段に記憶させ、
前記データ復帰手段は、前記記憶手段への記憶順に前記退避対象データを前記揮発性メモリに復帰させる、
請求項1記載の情報処理装置。
【請求項3】
前記データテーブルには前記退避対象データの優先順位が登録されており、
前記データ退避手段は、優先順位の低い順に前記データテーブルに登録された前記退避対象データを前記記憶手段に記憶させ、
前記データ復帰手段は、前記記憶手段に遅く記憶された順に前記退避対象データを前記揮発性メモリに復帰させる、
請求項1記載の情報処理装置。
【請求項4】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置において、
不揮発性の記憶手段と、
前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを前記揮発性メモリの第1領域に、前記非退避対象データを前記揮発性メモリの第2領域に、それぞれ記憶するデータストア手段と、
前記第1の動作モードから前記第2の動作モードに移行する際、前記第1領域の全体を前記記憶手段に記憶させるデータ退避手段と、
前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記第1領域の全体のデータを前記揮発性メモリの前記第1領域に復帰させるデータ復帰手段と、
を有する情報処理装置。
【請求項5】
前記データ退避手段は、前記揮発性メモリのアドレス順に前記第1領域の全体のデータを前記記憶手段に記憶させ、
前記データ復帰手段は、前記記憶手段のアドレス順に前記第1領域の全体のデータを前記揮発性メモリの前記第1領域に復帰させる、
ことを特徴とする請求項4記載の情報処理装置。
【請求項6】
前記退避対象データは、前記第2の動作モードから前記第1の動作モードに移行した後、プログラムが使用するデータである、
ことを特徴とする請求項1〜5いずれか1項記載の情報処理装置。
【請求項7】
前記揮発性メモリは、RAM又はCPUのレジスタである、ことを特徴とする請求項1〜6いずれか1項記載の情報処理装置。
【請求項8】
請求項1〜7いずれか1項記載の情報処理装置と周辺回路を搭載した車両用電子制御ユニット。
【請求項9】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置のデータ記憶方法において、
アドレステーブル作成手段が、前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合に、前記退避対象データのデータ識別情報と該データのアドレスが対応づけられたデータテーブルを作成するステップと、
データ退避手段が、前記第1の動作モードから前記第2の動作モードに移行する際、前記データテーブルに登録された前記退避対象データのアドレスを前記データテーブルから読み出し、前記揮発性メモリのアドレスから読み出した前記退避対象データを不揮発性の記憶手段に退避するステップと、
データ復帰手段が、前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記退避対象データを、前記アドレステーブルに登録されている前記揮発性メモリのアドレスに復帰させるステップと、
を有するデータ記憶方法。
【請求項10】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置のデータ記憶方法において、
データストア手段が、前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを前記揮発性メモリの第1領域に、前記非退避対象データを前記揮発性メモリの第2領域に、それぞれ記憶するステップと、
データ退避手段が、前記第1の動作モードから前記第2の動作モードに移行する際、前記第1領域の全体を不揮発性の記憶手段に記憶させるステップと、
データ復帰手段が、前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記第1領域の全体のデータを前記揮発性メモリの前記第1領域に復帰させるステップと、
を有するデータ記憶方法。
【請求項1】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置において、
不揮発性の記憶手段と、
前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合、前記退避対象データのデータ識別情報と該データのアドレスが対応づけられたデータテーブルを作成するアドレステーブル作成手段と、
前記第1の動作モードから前記第2の動作モードに移行する際、前記データテーブルに登録された前記退避対象データのアドレスを前記データテーブルから読み出し、前記揮発性メモリのアドレスから読み出した前記退避対象データを前記記憶手段に退避するデータ退避手段と、
前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記退避対象データを、前記アドレステーブルに登録されている前記揮発性メモリのアドレスに復帰させるデータ復帰手段と、
を有する情報処理装置。
【請求項2】
前記データテーブルには前記退避対象データの優先順位が登録されており、
前記データ退避手段は、優先順位の高い順に前記データテーブルに登録された前記退避対象データを前記記憶手段に記憶させ、
前記データ復帰手段は、前記記憶手段への記憶順に前記退避対象データを前記揮発性メモリに復帰させる、
請求項1記載の情報処理装置。
【請求項3】
前記データテーブルには前記退避対象データの優先順位が登録されており、
前記データ退避手段は、優先順位の低い順に前記データテーブルに登録された前記退避対象データを前記記憶手段に記憶させ、
前記データ復帰手段は、前記記憶手段に遅く記憶された順に前記退避対象データを前記揮発性メモリに復帰させる、
請求項1記載の情報処理装置。
【請求項4】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置において、
不揮発性の記憶手段と、
前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを前記揮発性メモリの第1領域に、前記非退避対象データを前記揮発性メモリの第2領域に、それぞれ記憶するデータストア手段と、
前記第1の動作モードから前記第2の動作モードに移行する際、前記第1領域の全体を前記記憶手段に記憶させるデータ退避手段と、
前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記第1領域の全体のデータを前記揮発性メモリの前記第1領域に復帰させるデータ復帰手段と、
を有する情報処理装置。
【請求項5】
前記データ退避手段は、前記揮発性メモリのアドレス順に前記第1領域の全体のデータを前記記憶手段に記憶させ、
前記データ復帰手段は、前記記憶手段のアドレス順に前記第1領域の全体のデータを前記揮発性メモリの前記第1領域に復帰させる、
ことを特徴とする請求項4記載の情報処理装置。
【請求項6】
前記退避対象データは、前記第2の動作モードから前記第1の動作モードに移行した後、プログラムが使用するデータである、
ことを特徴とする請求項1〜5いずれか1項記載の情報処理装置。
【請求項7】
前記揮発性メモリは、RAM又はCPUのレジスタである、ことを特徴とする請求項1〜6いずれか1項記載の情報処理装置。
【請求項8】
請求項1〜7いずれか1項記載の情報処理装置と周辺回路を搭載した車両用電子制御ユニット。
【請求項9】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置のデータ記憶方法において、
アドレステーブル作成手段が、前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを記憶した場合に、前記退避対象データのデータ識別情報と該データのアドレスが対応づけられたデータテーブルを作成するステップと、
データ退避手段が、前記第1の動作モードから前記第2の動作モードに移行する際、前記データテーブルに登録された前記退避対象データのアドレスを前記データテーブルから読み出し、前記揮発性メモリのアドレスから読み出した前記退避対象データを不揮発性の記憶手段に退避するステップと、
データ復帰手段が、前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記退避対象データを、前記アドレステーブルに登録されている前記揮発性メモリのアドレスに復帰させるステップと、
を有するデータ記憶方法。
【請求項10】
揮発性メモリに電力が供給される第1の動作モードと、揮発性メモリへの電力供給が遮断される第2の動作モードと、を有する情報処理装置のデータ記憶方法において、
データストア手段が、前記揮発性メモリが退避対象又は非退避対象のいずれかの属性を持つデータのうち退避対象データを前記揮発性メモリの第1領域に、前記非退避対象データを前記揮発性メモリの第2領域に、それぞれ記憶するステップと、
データ退避手段が、前記第1の動作モードから前記第2の動作モードに移行する際、前記第1領域の全体を不揮発性の記憶手段に記憶させるステップと、
データ復帰手段が、前記第2の動作モードから前記第1の動作モードに移行する際、前記記憶手段に記憶されている前記第1領域の全体のデータを前記揮発性メモリの前記第1領域に復帰させるステップと、
を有するデータ記憶方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−173919(P2012−173919A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−34357(P2011−34357)
【出願日】平成23年2月21日(2011.2.21)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願日】平成23年2月21日(2011.2.21)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
[ Back to top ]