(57)【要約】【課題】周期リセットが必要な機能と不要な機能を同一ＣＰＵで動作させる場合に、周期リセットが不要な機能の動作継続性をオーバヘッドなく確保する。【解決手段】リセット装置１０２が、周期リセットより一定時間早くブートストラップ２０３へプレリセット信号を出力し、ブートストラップ２０３が周期リセット不要なＲＴＯＳ２０４についてのプロセッサ状態の他、ＯＳタイマのタイマ値をＲＡＭ１０４に退避する。クロックチック数記憶領域は、ＲＴＯＳについての退避から復元までの時間にクロック発信装置１０３から出力されるクロックチック数を記憶しており、ブートストラップ２０３は、ＲＴＯＳの復元時に、ＲＡＭに退避したタイマ値とクロックチック数記憶領域のクロックチック数を用いて、ＯＳタイマ値を算出し、復元することですることで、Ｈ／Ｗタイマを利用することなく、ＲＴＯＳの動作継続性をオーバヘッドなく確保する。【選択図】図２
2011238152.tif 000002
【特許請求の範囲】
【請求項１】
クロックチックを出力するクロック発信装置と、リセット信号を繰り返し出力するととともにリセット信号の出力前にプレリセット信号を出力するリセット装置と、情報を記憶するメモリ装置とに接続され、
前記リセット装置から前記リセット信号を入力した後に、以前の状態が復元される状態復元プログラムを起動するプロセッサ装置であって、
前記プレリセット信号が入力された際に、前記プレリセット信号の入力時点の前記状態復元プログラムの状態を示す状態情報と前記状態復元プログラムが使用しているタイマのタイマチック値を前記メモリ装置に退避させ、前記状態復元プログラムの起動の際に、前記メモリ装置の前記状態情報を用いて前記プレリセット信号の入力時点の前記状態復元プログラムの状態を復元する状態退避復元部と、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態復元プログラムの状態の復元までの時間に前記クロック発信装置から出力されるクロックチック数と、前記メモリ装置の前記タイマチック値とを用いて、前記タイマのタイマチック値の更新値を導出する更新値導出部とを有し、
前記状態復元プログラムの起動の際に、前記タイマのタイマチック値を前記更新値導出部により導出された前記更新値に更新するタイマ更新部とを有することを特徴とするプロセッサ装置。
【請求項２】
前記プロセッサ装置において、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態復元プログラムの状態の復元までの時間は一定であり、
前記プロセッサ装置は、更に、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態復元プログラムの状態の復元までの時間に前記クロック発信装置から出力されるクロックチック数を記憶しているクロックチック数記憶部を有し、
前記更新値導出部は、
前記クロックチック数記憶部に記憶されているクロックチック数と、前記メモリ装置の前記タイマチック値とを用いて、前記タイマのタイマチック値の更新値を導出することを特徴とする請求項１に記載のプロセッサ装置。
【請求項３】
前記プロセッサ装置は、更に、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態復元プログラムの状態の復元までの時間に前記クロック発信装置から出力されるクロックチック数をカウントするクロックチック数カウント部を有し、
前記更新値導出部は、
前記クロックチック数カウント部によりカウントされたクロックチック数と、前記メモリ装置の前記タイマチック値とを用いて、前記タイマのタイマチック値の更新値を導出することを特徴とする請求項１又は２に記載のプロセッサ装置。
【請求項４】
前記プロセッサ装置は、
ブートストラップにより前記状態復元プログラムを起動し、
前記クロックチック数カウント部が前記ブートストラップであることを特徴とする請求項３に記載のプロセッサ装置。
【請求項５】
前記プロセッサ装置は、
前記リセット装置から前記リセット信号を入力すると、所定の状態非復元プログラムを以前の状態を復元せずに起動し、前記状態非復元プログラムの起動完了後に前記状態復元プログラムを起動し、
前記プロセッサ装置において、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態非復元プログラムの起動完了までの時間は一定であり、
前記プロセッサ装置は、更に、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態非復元プログラムの起動完了までの時間に前記クロック発信装置から出力されるクロックチック数を記憶しているクロックチック数記憶部と、
前記状態非復元プログラムの起動完了から前記状態退避復元部による前記状態復元プログラムの状態の復元までの時間に前記クロック発信装置から出力されるクロックチック数をカウントするクロックチック数カウント部を有し、
前記更新値導出部は、
前記クロックチック数記憶部に記憶されているクロックチック数と、前記クロックチック数カウント部によりカウントされたクロックチック数と、前記メモリ装置の前記タイマチック値とを用いて、前記タイマのタイマチック値の更新値を導出することを特徴とする請求項１〜４のいずれかに記載のプロセッサ装置。
【請求項６】
前記プロセッサ装置は、
前記クロックチック数カウント部が前記状態非復元プログラムであることを特徴とする請求項５に記載のプロセッサ装置。
【請求項７】
前記更新値導出部は、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態復元プログラムの状態の復元までの時間に前記クロック発信装置から出力されるクロックチック数を逓倍し、逓倍したクロックチック数を前記メモリ装置の前記タイマチック値に加算して、前記タイマのタイマチック値の更新値を導出することを特徴とする請求項１〜６のいずれかに記載のプロセッサ装置。
【請求項８】
請求項１〜７のいずれかに記載のプロセッサ装置を備えることを特徴とする計算機装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、周期的にリセットさせて動作するソフトウェアと、同リセット動作を必要としないソフトウェアが同一プロセッサ上で動作する計算機における、ソフトウェアの状態の保存・復元方法に関するものである。
【背景技術】
【０００２】
メンテナンスが困難な機器に搭載する計算機装置では、物理的要因によるハードウェアおよびソフトウェアの誤動作を回避するために、特に信頼性が必要な機能では、周期的にプロセッサをリセットして動作させている（以降、周期リセットと呼ぶ）。
そのため、周期リセットを必要とする機能と必要としない機能が混在する計算機装置の場合は、それぞれの機能を異なるプロセッサに分けて実現している。
周期リセットを必要とする機能とは、所定のリセット信号が発生した際に以前の状態を復元しないで起動するソフトウェアであり、周期リセットを必要としない機能とは、リセット信号が発生した際に以前の状態を復元して起動するソフトウェアである。
一方で、計算機の低価格化および小型化を目的とした場合、それぞれの機能を同一プロセッサで動作させることが考えられる。
周期リセットを必要とする機能と、周期リセットを必要としない機能を同一プロセッサで動作させる場合、周期リセットを必要としない機能のレジスタ等の情報を退避・復元することで、動作継続性を確保することができる。
【０００３】
周期リセットを必要とする機能と必要としない機能を同一のプロセッサで動作させる場合には、例えば、図８に示すような処理が行われる。
図８は、従来における周期動作とＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）状態の保存・復元処理を説明する図である。
図８の例では、高信頼ソフトウェアが周期リセットを必要とする機能であり、ＲＴＯＳ（Ｒｅａｌ  Ｔｉｍｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）／アプリケーション（以下、ＲＴＯＳ／アプリと表記する）が周期リセットを必要としない機能である。
そして、周期Ｔごとにプロセッサにリセット信号が入力され、周期リセットを必要とする高信頼ソフトウェアを周期的にリセットさせる。
リセット信号の発生により高信頼ソフトウェアが実行されるため、リセット信号の発生前にプレリセットＮＭＩ（マスク不可能割込み：Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  以下、ＮＭＩ）を発生させ、ＲＴＯＳ／アプリの実行を停止し、ＲＴＯＳ／アプリの実行に関するＯＳ状態の保存を行う。
そして、所定のアイドル時間の後、リセット信号が発生し、高信頼ソフトウェアの実行が開始する。
高信頼ソフトウェアの実行完了後に、プレリセットＮＭＩ発生時に保存したＯＳ状態を復元し、ＲＴＯＳ／アプリの実行を再開し、以降、このような手順を繰り返すことで、周期リセットを必要としないＲＴＯＳの動作を継続させることが考えられる。
【０００４】
これに関し、特許文献１では、周期ＴでＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）をリセットするシステムにおいて、“処理中断要求信号”と呼ばれる、周期の終了前に終了間近であることを示す信号を発生させ、これによって処理中断プログラムを起動し、プログラムカウンタ、各種レジスタ値を退避し、リセット後にそれを取り出して再開する手法が記載されている。
【０００５】
特許文献２では、汎用ネットワークと複数の計算機で構築された多重系システムにおいて、リセットの前に退避動作を起動するためにＮＭＩを発生させ、ＮＭＩ時点におけるメインメモリの内容をディスク装置に保存する手法が記載されている。
【０００６】
特許文献３では、リセットスイッチからリセット動作の実行要求が通知された際にＣＰＵに対してＮＭＩを発生し、その時点での実行中の処理のデータ保存を行う手法が記載されている。
【０００７】
また、計算機の暴走に対し、一定周期でリセット動作を行うことで高信頼性を保つ技術として、特許文献４では、複数のＣＰＵに対してそれぞれに定められたシーケンスのプログラムを基準ＣＰＵから実行させることで暴走を監視し、暴走ＣＰＵに対してリセットパルスを発生させる手法が記載されている。
【０００８】
また、特許文献５では、マイコンが一定期間プログラムを実行した後スタンバイモードとなるよう構成し、パルス発信器の周期をマイコンのプログラム実行時間より十分大きくとり、一定周期ごとにプログラムの実行、スタンバイ、リセットを繰り返す構成手法が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平６−２３０９８８号公報
【特許文献２】特開２００７−５８７０８号公報
【特許文献３】特開平９−３１９６０２号公報
【特許文献４】特開平５−２２５１６２号公報
【特許文献５】特開平５−２９０１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
周期リセットが必要な機能と必要としない機能を同一プロセッサにて動作させる場合、上記のように、リセット直前に処理中断要求信号などのプレリセットを発信する機能を設け、プレリセット時に周期リセットを必要としない機能に対して、その時点でのプログラムカウンタ値や各種レジスタ値（ＯＳ状態情報と呼ぶ）を退避し、再起動した時点で退避した情報を復元することで、周期リセットを必要としない機能の動作の継続性を維持する。
ただし、タイマなど絶対時刻の継続性を確保する場合、外部Ｈ／Ｗ（ハードウェア）タイマを利用して絶対時刻を保つことでシステム全体の時間的整合性を保つことができるが、周期リセット間隔が非常に短い場合、Ｈ／Ｗタイマへのアクセス時間のオーバヘッドが問題となる。
また、ＯＳタイマチックを退避・復元する場合は、退避から復元までの経過時間を加算する必要がある。
【００１１】
以下に、上記Ｈ／Ｗタイマへのアクセス時間のオーバヘッド問題の例として、一般的なＯＳタイマの補正方法について説明する。
【００１２】
図９は従来の計算機装置５００のハードウェア構成例を示す。
この図で、５０１はＣＰＵであり、後述するアプリケーション、ＲＴＯＳ、およびブートストラップの実行および各種機器の制御を行うための中央演算装置である。
５０２はリセット装置であり、リセット信号を発生させる。
５０３はクロック発信装置であり、後述のＲＴＯＳおよびブートストラップに対してクロックチックを発信する。
５０４はＨ／Ｗタイマであり、後述のＯＳタイマは本値を利用してタイマ動作を行う。
５０５はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ＲＴＯＳ、アプリケーション、ブートストラップでの変数、レジスタ値の保存をする。
５０６はＲＯＭであり、上述のソフトウェアのプログラムコードおよび変数の初期値を格納するためのメモリ領域である。
【００１３】
図１０は従来の計算機装置５００のソフトウェア構成を示すブロック図である。
この図で、６０１は周期リセットを必要としない機能で、ＲＴＯＳ６０２とその上で動作する複数の一般アプリケーション６０１１〜６０１Ｎで構成される。
また、ＲＴＯＳ６０２内では複数のＯＳタイマ６０３１〜６０３Ｋを保持し、それぞれのタイマは一般アプリケーション間で利用する。
このとき、タイマは共有することが可能である。
６０３はブートストラップで、ＲＴＯＳ６０２の初期設定・起動を行うソフトウェアである。
６０４は高信頼ソフトウェアであり、周期リセットを必要とする機能である。
ＣＰＵ５０１、リセット装置５０２、クロック発信装置５０３及びＨ／Ｗタイマ５０４は、図９に示したものと同様である。
【００１４】
次に、従来のＯＳタイマの補正方法について図１１を用いて説明する。
【００１５】
まず、ブートストラップ６０３はリセット装置５０２よりリセット信号を受信すると（Ｗ１）、高信頼ソフトウェア６０４の起動・初期化（Ｗ２）、および、ＲＴＯＳ６０２の起動・初期化（Ｗ３）を実施する。
起動したＲＴＯＳ６０２はタイマの継続を行うため、Ｈ／Ｗタイマ５０４の現在値を取得する（Ｗ４）。
そして、Ｈ／Ｗタイマ５０４の現在値を利用して、ＯＳタイマの補正を実行する（Ｗ５）。
これらの処理を終了後、アプリケーションの起動を行う（Ｗ６）。
このように、時間的継続性を確保するためＨ／Ｗタイマ５０４を利用して絶対時刻を保つことでシステム全体の時間的整合性を保つことができるが、周期リセット間隔が非常に短い場合、Ｈ／Ｗタイマ５０４へのアクセス時間のオーバヘッドが問題となる。
また、ＲＴＯＳ６０２の処理によってＯＳタイマの補正を実行する場合、そのＯＳ（カーネル）処理によっては時刻取得処理（関数）内で遅延が生じる場合がある。
例えば、カーネルが提供するシステムコールなどの関数を利用することにより遅延が生じることもある。
【００１６】
本願は、上記のような課題を解決することを主な目的としており、周期リセットが必要のないプログラム、すなわち、リセット信号が入力されると以前の状態を復元して起動する状態復元プログラムの時間的継続性および整合性をオーバヘッドなく確保することを主な目的とする。
【課題を解決するための手段】
【００１７】
本発明に係るプロセッサ装置は、
クロックチックを出力するクロック発信装置と、リセット信号を繰り返し出力するととともにリセット信号の出力前にプレリセット信号を出力するリセット装置と、情報を記憶するメモリ装置とに接続され、
前記リセット装置から前記リセット信号を入力した後に、以前の状態が復元される状態復元プログラムを起動するプロセッサ装置であって、
前記プレリセット信号が入力された際に、前記プレリセット信号の入力時点の前記状態復元プログラムの状態を示す状態情報と前記状態復元プログラムが使用しているタイマのタイマチック値を前記メモリ装置に退避させ、前記状態復元プログラムの起動の際に、前記メモリ装置の前記状態情報を用いて前記プレリセット信号の入力時点の前記状態復元プログラムの状態を復元する状態退避復元部と、
前記状態退避復元部による前記状態情報及び前記タイマチック値の退避から前記状態復元プログラムの状態の復元までの時間に前記クロック発信装置から出力されるクロックチック数と、前記メモリ装置の前記タイマチック値とを用いて、前記タイマのタイマチック値の更新値を導出する更新値導出部とを有し、
前記状態復元プログラムの起動の際に、前記タイマのタイマチック値を前記更新値導出部により導出された前記更新値に更新するタイマ更新部とを有することを特徴とする。
【発明の効果】
【００１８】
プレリセット信号の入力時に、プレリセット信号の入力時点のタイマのタイマチック値を退避させ、状態復元プログラムの起動の際に、タイマチック値の退避から状態復元プログラムの状態の復元までの時間にクロック発信装置から出力されるクロックチック数と、退避させたタイマチック値とを用いて、タイマチック値の更新値を導出し、タイマのタイマチック値を更新値に更新するため、状態復元プログラムの時間的継続性および整合性をオーバヘッドなく確保することができる。
【図面の簡単な説明】
【００１９】
【図１】実施の形態１に係る計算機装置のハードウェア構成例を示す図。
【図２】実施の形態１に係る計算機のソフトウェア構成例を示す図。
【図３】実施の形態１に係る動作例を示すシーケンス図。
【図４】実施の形態２に係る計算機のソフトウェア構成例を示す図。
【図５】実施の形態２に係る動作例を示すシーケンス図。
【図６】実施の形態３に係る計算機のソフトウェア構成例を示す図。
【図７】実施の形態３に係る動作例を示すシーケンス図。
【図８】周期動作とＯＳ状態の保存・復元を説明する図。
【図９】従来の計算機装置のハードウェア構成例を示す図。
【図１０】従来の計算機装置のソフトウェア構成例を示す図。
【図１１】従来のＯＳタイマ補正処理を示すシーケンス図。
【発明を実施するための形態】
【００２０】
前述のように、外因による計算機、ソフトウェアの誤動作を回避するために、特に信頼性が必要な機能では、周期的にプロセッサをリセットして動作させることがある（以降、周期リセットと呼ぶ）。
以下の実施の形態１〜３では、周期リセットを必要とする機能と周期リセットを必要としない機能が一つのプロセッサ上で動作する計算機装置を説明する。
従来技術のように、周期リセットを必要としない機能のレジスタ等の情報を退避・復元することで、動作継続性を確保することができるが、時間的継続性を確保するため外部Ｈ／Ｗタイマを利用して絶対時刻を保つ場合には、システム全体の時間的整合性を保つことができるが、周期リセット間隔が非常に短い場合、Ｈ／Ｗタイマへのアクセス時間のオーバヘッドが問題となる。
【００２１】
実施の形態１〜３では、周期リセットを発生させる機器において、周期リセットより一定時間早くプロセッサへ割込み（以降、プレリセットと呼ぶ）を送出する機能を持たせ、プレリセット割込み時に、プロセッサ状態（各種レジスタ）の他、その時点でのタイマチック値を保存し、ブートストラップなどによりその時点からのクロックチックのカウントを行う。
そして、ＯＳ状態情報の復元時に退避したタイマチック値と、その間にカウントしたクロックチックから現在のＯＳタイマ値を算出し、復元することですることで、Ｈ／Ｗタイマを利用することなく、周期リセットを必要としない機能の時間的継続性および整合性を確保する。
具体的には、
周期リセットを必要する、高信頼ソフトウェアと、
周期リセットを必要としない、ＲＴＯＳとＲＴＯＳ上で動作する一般アプリケーションと、
リセット信号とそのリセット信号の発信前にプレリセット信号を発信するリセット装置と、
高信頼ソフトウェアおよびＲＴＯＳの起動・初期設定を行う他、周期リセットを必要としない機能のレジスタ値や設定値などのＯＳ状態情報の他、ＯＳのタイマチック値の状態を退避・復元を行うことを基本機能とし、さらに、ＯＳ状態情報復元時にプレリセットとリセットの間のクロックチックのカウント・逓倍し、ＯＳタイマチック値に加算して復元するブートストラップと、
ＯＳのタイマチックを保存するためのＲＡＭ領域とを有する計算機装置を説明する。
【００２２】
実施の形態１．
図１は、実施の形態１〜３に係る計算機装置１００のハードウェア構成例を示す。
【００２３】
図１において、１０１はＣＰＵであり、高信頼ソフトウェア、アプリケーション、ＲＴＯＳ、およびブートストラップの実行および各種機器の制御を行うための中央演算装置（プロセッサ装置）である。
１０２はリセット装置であり、リセット信号を繰り返し出力する機能のほか、リセット信号の出力前にプレリセット信号と呼ぶＮＭＩ（Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ）をブートストラップおよびＲＴＯＳに対して出力する。
１０３はクロック発信装置であり、高信頼ソフトウェア、ＲＴＯＳおよびブートストラップに対してクロックチックを発信する。後述するＯＳタイマはクロックチック値を逓倍してタイマ動作を行う。
１０４はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、高信頼ソフトウェアやＲＴＯＳ、アプリケーション、ブートストラップでの変数、レジスタ値を保存し、また、プレリセット時にＯＳタイマのタイマ値を一時的に保持する。ＲＡＭ１０４は、メモリ装置の例である。
１０５はＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であり、上述のソフトウェアのプログラムコードおよび変数の初期値を格納するためのメモリ領域である。
【００２４】
図２は実施の形態１に係る計算機装置１００のソフトウェア構成例を示す。
なお、図２は、各ソフトウェアがＣＰＵ１０１上にロードされてる状態を示している。
【００２５】
図２において、２０１は周期リセットを必要とする機能で、高信頼ソフトウェア２０１１で構成される。
２０２は周期リセットを必要としない機能で、ＲＴＯＳ２０４とその上で動作する複数の一般アプリケーション２０２１〜２０２Ｎで構成される。
周期リセットを必要としない機能であるＲＴＯＳ２０４、アプリケーション２０２１〜２０２Ｎは状態復元プログラムの例である。
また、ＲＴＯＳ２０４内では複数のＯＳタイマ２０４１〜２０４Ｋを保持し、それぞれのタイマは一般アプリケーション２０２１〜２０２Ｎ間で利用する。
このとき、タイマは共有することが可能である。
【００２６】
２０３はブートストラップで、高信頼ソフトウェア２０１１およびＲＴＯＳ２０４の初期設定・起動といったブートストラップ本来の処理を行う。
また、本実施の形態に係るブートストラップ２０３は、更に、プレリセット時のＲＴＯＳ２０４の状態を示す状態情報とプレリセット時にＲＴＯＳ２０４が保持する複数のＯＳタイマ２０４１〜２０４Ｋのタイマチック値をＲＡＭ１０４に退避する処理およびリセット時に上述ＲＡＭ１０４に退避したＲＴＯＳ２０４の状態情報及びタイマチック値を用いてＲＴＯＳ２０４の状態を復元する。
タイマチック値については、より具体的には、ブートストラップ２０３は、退避したタイマチック値と後述のクロックチック数記憶領域に記憶されている固定値のクロックチック数とを用いて、ＯＳタイマ２０４１〜２０４Ｋのタイマチック値の更新値を導出し、ＯＳタイマ２０４１〜２０４Ｋのタイマチック値を導出した更新値に更新する。
ブートストラップ２０３は、状態退避復元部、更新値導出部及びタイマ更新部の例である。
【００２７】
クロックチック数記憶領域は、ブートストラップ２０３による状態情報及びタイマチック値の退避からＲＴＯＳ２０４の状態の復元までの固定時間にクロック発信装置１０３から出力されるクロックチック数（固定値）を記憶する。
【００２８】
ＣＰＵ１０１、リセット装置１０２、クロック発信装置１０３及びＲＡＭ１０４は、図１に示したものと同様である。
【００２９】
なお、本実施の形態１〜３の説明において、プレリセットのタイミング、リセット信号のタイミング、高信頼ソフトウェア、ＲＴＯＳ／アプリケーションの実行順序は、図８に示した例に従う。
つまり、周期ＴごとにＣＰＵ１０１にリセット装置１０２からリセット信号が入力され、ＣＰＵ１０１は高信頼ソフトウェア２０１１を実行する。
高信頼ソフトウェア２０１１の実行により、ＲＴＯＳ２０４及びアプリケーション２０２１〜２０２Ｎ（以下、ＲＴＯＳ／アプリと表記する）の実行は中断する。
このため、リセット装置１０２は、リセット信号の出力前にプレリセット信号であるプレリセットＮＭＩを出力し、ＲＴＯＳ／アプリの実行を停止させ、ＣＰＵ１０１は、ＲＴＯＳ／アプリの実行に関するＯＳ状態の保存を行う。
そして、所定のアイドル時間の後、リセット装置１０２がリセット信号を出力し、ＣＰＵ１０１が高信頼ソフトウェア２０１１の実行を開始する。
高信頼ソフトウェア２０１１の実行完了後に、ＣＰＵ１０１は、プレリセットＮＭＩ発生時に保存したＯＳ状態を復元し、ＲＴＯＳ／アプリの実行を再開し、以降、このような手順を繰り返すことで、周期リセットを必要としないＲＴＯＳ／アプリの動作を継続させる。
そして、実施の形態１では、ＯＳ情報の退避と復元の期間を一定とし、ブートストラップにて固定クロックチック値を逓倍し、ＯＳタイマチックに加算、復元している。
以下では、本実施の形態に係る動作を詳述する。
【００３０】
図３は、実施の形態１に係る計算機装置１００の全体処理シーケンスを示す。
ここで前提として、図２に示したように、高信頼ソフトウェア２０１１、ＲＴＯＳ２０４が同一ＣＰＵ１０１上で動作しており、さらに、ＲＴＯＳ２０４上で複数のアプリケーション２０２１〜２０２Ｎが動作しているものとする。
なお、以後、説明を簡単にするため、ＲＴＯＳ２０４上ではアプリケーション１（２０２１）のみが実行され、また、当該アプリケーション１（２０２１）がＯＳタイマ１（２０４１）を利用しているものとする。
また、リセット装置１０２は、図８に示すように、一定周期毎にリセット信号をブートストラップ２０３に発信するが、その前にプレリセット信号を発信するものとする。
本実施の形態では、プレリセット信号からリセット信号までの時間、高信頼ソフトウェアの実行時間は固定時間であり、そのため、ＯＳ状態情報保存（Ｘ２）とＯＳ状態情報復元（Ｘ７）との間の時間は固定時間（時間Ｔ１）である。
【００３１】
まず、リセット装置１０２はプレリセット信号をブートストラップ２０３に発信する（Ｘ１）。
次に、ブートストラップ２０３はＲＴＯＳ２０４についてのレジスタ値やプログラムカウンタなどのＯＳ状態情報をＲＡＭ１０４に保存する（Ｘ２）。
このとき、同時にアプリケーション２０２１が使用しているＯＳタイマ１（２０４１）が保持しているＯＳタイマチック情報をＲＡＭ１０４のタイマ値退避領域１に保存する（Ｘ３）。
【００３２】
次に、リセット装置１０２はプレリセット発生から所定の固定時間の経過後、リセット信号をブートストラップ２０３に発信する（Ｘ４）。
リセット信号を受信したブートストラップ２０３は、ソフトウェアの起動・初期値設定処理を行う。
まず、ブートストラップ２０３は、高信頼ソフトウェア２０１１の起動・初期化を行う（Ｘ５）。
次に、ブートストラップ２０３は、ＲＴＯＳ２０４についてＯＳ状態情報の復元及びＯＳタイマのタイマ値の復元の直前のタイミング（Ｘ６）にて、タイマ値退避領域１に保存したＯＳタイマチック値にクロックチック数記憶領域に記憶されている固定値であるクロックチック数Ｔ１を加算する。
クロックチック数Ｔ１は、時間Ｔ１内にクロック発信装置１０３から出力されるクロックチック数に一致する。
前述のように、時間Ｔ１は毎周期で固定であるため、時間Ｔ１内に出力されるクロックチック数も固定である。
このとき、ＯＳタイマ値がクロックチック値を逓倍している場合は、ブートストラップ２０３は、その逓倍数をクロックチック数Ｔ１に乗算した上でタイマ値退避領域１に保存したタイマ値に加算する（Ｘ６）。
次に、ブートストラップ２０３は、ＲＴＯＳ２０４の起動・初期化前にＲＡＭ１０４に退避させたＯＳ状態情報を用いてＲＴＯＳ２０４の状態を復元する（Ｘ７）。
同時に、ブートストラップ２０３は、上記Ｘ６で算出したＯＳタイマチック情報をＯＳタイマ１（２０４１）に復元する（Ｘ８）。
そして、ブートストラップ２０３は、ＲＴＯＳ２０４の起動初期化を行い（Ｘ９）、アプリケーションを起動する（Ｘ１０）。
【００３３】
なお、図３では、Ｘ６のＯＳタイマチックカウントへの合算からＸ８のタイマ復元までに時差があるように見えるが、Ｘ６とＸ８はほぼ同時である。
このため、時間Ｔ１に対応するクロックチック数Ｔ１を（必要であれば逓倍させた後に）Ｘ３で退避させたタイマチック情報に加算した値は、ＯＳタイマ１（２０４１）が中断せずに継続して動作しているとした場合のＯＳタイマ１（２０４１）のタイマ値と同じ値になる。
【００３４】
このように、本実施の形態によれば、周期リセットを必要としない機能である、アプリケーション１（２０２１）の動作をリセット前から継続できるだけでなく、時間的に継続させることが可能である。
【００３５】
以上の実施の形態１では、
（１）プレリセット割込み時に、プロセッサ状態を主記憶の特定領域へ保存し、高信頼ソフトウェアの動作終了後、主記憶から復元する方法において、
（２）時間継続性を確保するため、プレリセット時にＯＳタイマチック値を退避し、
（３）リセット後、周期リセットを必要とする機能を起動させる際に、状態保存から復元開始までの期間を一定期間として、その固定のクロックカウント値をブートストラップが（２）で退避したＯＳタイマチック値に加算し、復元する方法を説明した。
【００３６】
実施の形態２．
実施の形態２では、プレリセットとリセットの間の時間が可変であり、その間のクロックチックカウントをブートストラップが行う例を説明する。
【００３７】
図４は、本実施の形態に係る計算機装置１００のソフトウェアの構成例を示す。
図４の例では、図２で示されていたクロックチック数記憶領域が存在しない。
前述のように、本実施の形態では、クロックチック数記憶領域の固定クロックチック数を用いる代わりに、ブートストラップ２０３が、ＲＴＯＳ２０４の状態情報の退避及びＯＳタイマのタイマチック値の退避からＲＴＯＳ２０４の状態の復元までの時間にクロック発信装置１０３から出力されるクロックチック数をカウントし、カウントしたクロックチック数とＲＡＭ１０４に退避させたタイマチック値とを用いて、ＯＳタイマのタイマチック値の更新値を導出する。
本実施の形態では、ブートストラップ２０３は、状態退避復元部、更新値導出部、タイマ更新部、クロックチック数カウント部の例となる。
また、ブートストラップ２０３以外の要素は、図２と同様である。
【００３８】
実施の形態２の全体処理シーケンスを図５を用いて説明する。
前提条件は上記実施の形態１と同様であるが、リセット信号とプレリセット信号の間の時間は変動するものとする（時間Ｔ２−１）。
【００３９】
まず、リセット装置１０２はプレリセット信号をブートストラップ２０３に発信する（Ｙ１）。
次に、ブートストラップ２０３はＲＴＯＳ２０４についてのレジスタ値やプログラムカウンタなどのＯＳ状態情報をＲＡＭ１０４に保存する（Ｙ２）。
このとき、ブートストラップ２０３は、同時にアプリケーション１（２０２１）が使用しているＯＳタイマ１（２０４１）が保持しているＯＳタイマチック情報をＲＡＭ１０４のタイマ値退避領域１に保存する（Ｙ３）。
ＯＳタイマチック情報のＲＡＭ１０４への保存と同時に、ブートストラップ２０３はクロック発信装置１０３を利用してクロックカウントを開始する（Ｙ４）。
具体的には、ブートストラップ２０３は、ＯＳタイマチック情報の退避が完了した後にクロック発信装置１０３から初めてクロックチックを入力するとカウンタにカウント値１を設定し、クロックチックを入力する度に、カウント値をカウントアップする。
【００４０】
そして、プレリセット発生から時間Ｔ２−１経過後にリセット装置１０２からリセット信号が発生し（Ｙ５）、ブートストラップ２０３はソフトウェアの起動・初期値設定処理を行う。
まず、ブートストラップ２０３は高信頼ソフトウェア２０１１の起動・初期化を行う（Ｙ６）。
次に、ブートストラップ２０３は、ＲＴＯＳ２０４についてＯＳ状態情報の復元及びＯＳタイマのタイマ値の復元の直前のタイミング（Ｙ７）にて、上記クロックチック数のカウントを終了する。
この間（時間Ｔ２−２）にブートストラップがカウントしたクロックチック数をＴ２−２とする。
ブートストラップ２０３は続けて上記クロックチック数Ｔ２−２のＯＳタイマチックへの合算を行う（Ｙ８）。このとき、ＯＳタイマ値がクロックチックの値を逓倍している場合はその逓倍数をクロックチック数Ｔ２−２に乗算した上でタイマ値退避領域１に保存したタイマ値に加算する。
そして、ブートストラップ２０３は、ＲＴＯＳ２０４の起動・初期化前にＯＳ状態情報を復元する（Ｙ９）。
ここでブートストラップ２０３は上記Ｙ８で算出したＯＳタイマチック情報をＯＳタイマ１（２０４１）に復元する（Ｙ１０）。
そして、ブートストラップ２０３は、ＲＴＯＳ２０４の起動初期化を行い（Ｙ１１）、アプリケーションを起動する（Ｙ１２）。
【００４１】
本実施の形態によれば、周期リセットを必要としない機能である、アプリケーション１（２０２１）の動作をリセット前から継続できるだけでなく、時間的に継続させることが可能である。
【００４２】
以上の実施の形態２では、
（１）プレリセット割込み時に、プロセッサ状態を主記憶の特定領域へ保存し、高信頼ソフトウェアの動作終了後、主記憶から復元する方法において、
（２）時間継続性を確保するため、プレリセット時にＯＳタイマチック値を退避し、
（３）状態保存後、ブートストラップがクロックチックをカウントし、リセット後、周期リセットを必要とする機能を起動させる際に、そのクロックカウント値をブートストラップが（２）で退避したＯＳタイマチック値に加算し、復元する方法を説明した。
【００４３】
実施の形態３．
実施の形態３では、ブートストラップがＯＳタイマチックを復元する点は実施の形態１と同様である。
本実施の形態では、プレリセット信号発生からリセット信号発生までは固定時間であるが、リセット信号発生から周期リセットを必要としない機能の起動までの時間が可変である。
そして、リセット信号発生から周期リセットを必要としない機能の起動までの時間のクロックチックカウントを高信頼ソフトウェアが行う。
【００４４】
図６は、本実施の形態に係る計算機装置１００のソフトウェア構成例を示す。
図６において、クロックチック数記憶領域は、図２に示したものと同様であるが、記憶しているクロックチック数が異なる。
図６のクロックチック数記憶領域は、ブートストラップ２０３によるＲＴＯＳ２０４の状態情報及びタイマチック値の退避から高信頼ソフトウェア２０１１（状態非復元プログラムの例）の起動完了までの時間にクロック発信装置１０３から出力されるクロックチック数を格納している。
また、本実施の形態では、高信頼ソフトウェア２０１１が、高信頼ソフトウェア２０１１の起動完了からブートストラップ２０３によるＲＴＯＳ２０４の状態の復元までの時間にクロック発信装置１０３から出力されるクロックチック数をカウントする。
本実施の形態では、高信頼ソフトウェア２０１１がクロックチック数カウント部の例となる。
また、本実施の形態では、ブートストラップ２０３は、クロックチック数記憶領域に記憶されているクロックチック数と、高信頼ソフトウェア２０１１によりカウントされたクロックチック数と、ＲＡＭ１０４に退避させているタイマチック値とを用いて、ＯＳタイマのタイマチック値の更新値を導出する。
【００４５】
実施の形態３の全体処理シーケンスを図７を用いて説明する。
前述のように、前提条件は上記実施の形態１と同様であるが、プレリセット発生からリセット発生までの期間は固定であり（時間Ｔ３−１）、リセット信号発生から周期リセットを必要としない機能の起動までの時間（時間Ｔ３−２）は変動するものとする。
【００４６】
まず、リセット装置１０２はプレリセット信号をブートストラップ２０３に発信する（Ｚ１）。
次に、ブートストラップ２０３はＲＴＯＳ２０４についてのレジスタ値やプログラムカウンタなどのＯＳ状態情報をＲＡＭ１０４に保存する（Ｚ２）。
このとき、ブートストラップ２０３は同時にアプリケーション１（２０２１）が使用しているＯＳタイマ１（２０４１）が保持しているＯＳタイマチック情報をＲＡＭ１０４のタイマ値退避領域１に保存する（Ｚ３）。
【００４７】
そして、プレリセット発生から時間Ｔ３−１経過後にリセット装置１０２からリセット信号が発生し（Ｚ４）、ブートストラップ２０３はソフトウェアの起動・初期値設定処理を行う。
まず、高信頼ソフトウェア２０１１の起動・初期化を行う（Ｚ５）。
高信頼ソフトウェア２０１１は起動が完了するとクロック発信装置１０３を利用してクロックカウントを開始する（Ｚ６）。
具体的には、高信頼ソフトウェア２０１１はクロック発信装置１０３から初めてクロックチックを入力するとカウンタにカウント値１を設定し、クロックチックを入力する度に、カウント値をカウントアップする。
そして、ブートストラップ２０３よりクロックチックカウント値参照命令が高信頼ソフトウェア２０１１に対して行われたとき（Ｚ７）、高信頼ソフトウェア２０１１はクロックチックカウントを終了し、クロックチックカウント値をブートストラップ２０３に返す（Ｚ８）。
この間（時間Ｔ３−２）に高信頼ソフトウェア２０１１がカウントしたクロックチック数をＴ３−２とする。
また、クロックチック数記憶領域には、時間Ｔ３−３の間（ＲＴＯＳ２０４の状態情報及びタイマチック値の退避から高信頼ソフトウェア２０１１の起動完了までの時間）にクロック発信装置１０３から出力されるクロックチック数の値を記憶している。このクロックチック数をＴ３−３とする。
次に、ブートストラップ２０３はクロックチック数Ｔ３−２とクロックチック数Ｔ３−３を加算し、加算値をＯＳタイマチック値に合算する。
このとき、ＯＳタイマチック値がクロックチックの値を逓倍している場合はその逓倍数をクロックチック数Ｔ３−２とクロックチック数Ｔ３−３の加算値に乗算した上でタイマ値退避領域１に保存したタイマチック値に加算する（Ｚ９）。
そして、ブートストラップ２０３は、ＲＴＯＳ２０４の起動・初期化前にＯＳ状態情報を復元する（Ｚ１０）。
ここで、ブートストラップ２０３は、上記Ｚ９で算出したＯＳタイマチック情報をＯＳタイマ１（２０４１）に復元する（Ｚ１１）。
そして、ブートストラップ２０３は、ＲＴＯＳ２０４の起動初期化を行い（Ｚ１２）、アプリケーション１（２０２１）を起動する（Ｚ１３）。
【００４８】
本実施の形態により、周期リセットを必要としない機能である、アプリケーション１（２０２１）の動作をリセット前から継続できるだけでなく、時間的に継続させることが可能である。
【００４９】
以上の実施の形態２では、
（１）プレリセット割込み時に、プロセッサ状態を主記憶の特定領域へ保存し、高信頼ソフトウェアの動作終了後、主記憶から復元する方法において、
（２）時間継続性を確保するため、プレリセット時にＯＳタイマチック値を退避し、
（３）状態保存後、周期リセットを必要とする機能がクロックチックをカウントし、リセット後、周期リセットを必要とする機能を起動させる際に、その値をブートストラップが（２）で退避したＯＳタイマチック値に加算し、復元する方法を説明した。
【００５０】
最後に、実施の形態１〜３に示した計算機装置１００のハードウェア構成例の補足説明を行う。
実施の形態１〜３に示す計算機装置１００のハードウェア構成例は図１に示した通りである。
なお、図１の構成は、あくまでも計算機装置１００のハードウェア構成の一例を示すものであり、計算機装置１００のハードウェア構成は図１に記載の構成に限らず、他の構成であってもよい。
【００５１】
図１のＣＰＵ１０１は、バスを介して、リセット装置１０２、クロック発信装置１０３、ＲＡＭ１０４、ＲＯＭ１０５の他、通信ボード、表示装置、キーボード、マウス、磁気ディスク装置と接続されていてもよく、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ１０１は、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置（ＣＤＤ）、プリンタ装置、スキャナ装置と接続していてもよい。
また、磁気ディスク装置の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ１０４は、揮発性メモリの一例である。
ＲＯＭ１０５、ＦＤＤ、ＣＤＤ、磁気ディスク装置の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード、キーボード、マウス、スキャナ装置、ＦＤＤなどは、入力装置の一例である。
また、通信ボード、表示装置、プリンタ装置などは、出力装置の一例である。
【００５２】
通信ボードは、例えば、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００５３】
磁気ディスク装置には、オペレーティングシステム（ＯＳ）、ウィンドウシステム、アプリケーションプログラム等のプログラム群、ファイル群が記憶されている。
プログラム群のプログラムは、ＣＰＵ１０１がオペレーティングシステム、ウィンドウシステムを利用しながら実行する。
【００５４】
また、ＲＡＭ１０４には、ＣＰＵ１０１に実行させるオペレーティングシステムのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ１０４には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００５５】
また、ＲＯＭ１０５には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、ＲＯＭ１０５又は磁気ディスク装置にはブートストラップが格納されている。
計算機装置１００の起動時には、ＢＩＯＳプログラム及びブートストラップが実行され、ＢＩＯＳプログラム及びブートストラップによりＲＴＯＳ等のオペレーティングシステムが起動される。
【００５６】
実施の形態１〜３の説明において「〜部」として説明している機能はブートストラップや高信頼ソフトェアに含まれ、ＣＰＵ１０１により磁気ディスク装置から読み出され実行される。
【００５７】
また、上記のファイル群には、実施の形態１〜３の説明において、「〜の加算」、「〜の合算」、「〜の乗算」、「〜のカウント」、「〜の退避」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ１０１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜３で説明しているシーケンス図の矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ１０４のメモリ、ＦＤＤのフレキシブルディスク、ＣＤＤのコンパクトディスク、磁気ディスク装置の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バスや信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００５８】
また、実施の形態１〜３で説明したシーケンス図に示すステップ、手順、処理により、実施の形態１〜３に係る計算機装置を方法として捉える事ができる。
【００５９】
以上、実施の形態１〜３に示す計算機装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００６０】
１００  計算機装置、１０１  ＣＰＵ、１０２  リセット装置、１０３  クロック発信装置、１０４  ＲＡＭ、１０５  ＲＯＭ、２０３  ブートストラップ、２０４  ＲＴＯＳ、２０１１  高信頼ソフトウェア。
【図１】
2011238152.tif 000003
【図２】
2011238152.tif 000004
【図３】
2011238152.tif 000005
【図４】
2011238152.tif 000006
【図５】
2011238152.tif 000007
【図６】
2011238152.tif 000008
【図７】
2011238152.tif 000009
【図８】
2011238152.tif 000010
【図９】
2011238152.tif 000011
【図１０】
2011238152.tif 000012
【図１１】
2011238152.tif 000013