(57)【特許請求の範囲】
【請求項１】
複数クロックの履歴データを保持する不揮発性記憶素子を備えたフリップフロップと前記履歴データの位相情報を持つ不揮発性記憶素子を備えたカウンタと、
電源回復時に各フリップフロップの位相情報を照合し、位相の揃ったデータを取り出す制御回路、
を含み、電源回復時時に自動復帰機能を備えた半導体装置。
【請求項２】
前記複数クロックの履歴データをとるフリップフロップのデータの受け渡しは、シフトレジスタ型、古いデータから上書きしていくＬＲＵ型、履歴クロック数分だけデータを保持する型のいずれかの形式であることを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記制御回路は、履歴数と異なる基数のカウンタを別途設けることで履歴数以上のクロックの状態を保持でき、電源喪失前のクロックが不安定な状態でも最新の位相の一貫性の取れた時刻を計算できる制御機能を備えたことを特徴とする請求項１または２に記載の半導体装置。
【請求項４】
前記制御回路は、履歴数のデータの中に位相の一貫性が無いことを検出できることと復帰不可能であることを計算しエラーとして出力できるエラー検出回路を備えることを特徴とする請求項１〜３に記載の半導体装置。
【請求項５】
前記制御回路は、限られた履歴数で位相の一貫性が取れたフリップフロップを特定することができる制御機能を備えたことを特徴とする請求項１から４に記載の半導体装置。
【請求項６】
前記複数クロックは、データを保持し，履歴データを更新するタイミングが複数クロック数であることを特徴とする請求項１から４に記載の半導体装置。
【請求項７】
前記不揮発性記憶素子は、ＭＴＪ素子を利用した不揮発性記憶素子であることを特徴とする請求項１〜６に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体装置に関し、特に、不揮発性記憶素子を備える論理回路の電源復帰時における処理の再開を自動で行う半導体装置およびその制御方法に関する。
【背景技術】
【０００２】
災害による突発的電源喪失等、電源が何らかの要因で機能しなくなった場合に、コンピュータの計算状態を保持し、電源復帰後、瞬時に演算を再開できる安全・安心性の高い耐災害性に秀でたコンピュータシステムの開発が、東日本大震災を経験したわが国では、近時、緊急な技術的課題となっている。
【０００３】
この復帰技術について、システムレベルでは、各種の災害時に、可能な限り短時間にシステム（データ）を復旧して他所のシステムから瞬時に業務を引き継ぐことができる分散型の災害復帰データ通信システムが知られている（特許文献１）。
また、数マイクロ秒枚に内部状態、特にコンピュータのメインメモリをハードディスクに書き戻す作業で復旧を容易にする方法が知られている(特許文献２、３)。
【０００４】
さらに、回路レベルでは、回路全体または一部の電源をオフする前に各フリップフロップ内に備えられている不揮発性記憶素子に１から数クロックかけて書込みデータを不揮発化し、毎クロック不揮発性記憶素子に書込む方法が知られている。(特許文献４)
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２４２８４７号公報（分散型災害復帰データ通信システム）
【特許文献２】特開２００２−０６２９４７号公報（自動復帰コンピュータ）
【特許文献３】特開平１１−１８４７２２号公報  （分散処理システムにおける保守制御装置の自動復帰機構）
【特許文献４】特開２０１２−２４２２８７号公報  （試験可能な不揮発論理ゲート）
【０００６】
これらの先行技術は、災害からのシステムの復帰に関して一定程度の効果をもたらすが、以下のような技術的課題を要する。
【０００７】
システムレベルにおける対策は、一般に大掛かりなシステムとなり、導入するにあたってのコスト負担が大きい。加えて携帯電話の無線基地局やセンサ端末など、人が復旧するのに困難な場所にある場合や、端末の数が多いなど全体の復旧に時間がかかるといった課題を要する（特許文献１）。
【０００８】
また、プロセッサ内のフリップフロップのデータまでは考慮されておらず、電源復旧時にリセットをかけるなどして初期化状態から動作を開始するという初期化プロセスを要するため復旧に要する時間が長くなるという課題を要する。（特許文献２、３）
【０００９】
さらに、毎クロック不揮発性記憶素子に書込む方法も知られているが、単に不揮発性記憶素子を採用しただけでは、書込み時間や消費電力増大といった課題を要する（特許文献４）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来技術が抱えていた前記の技術的課題を解決するためには、低コスト、低消費電力性、安定性、高速性を備えた自動復帰技術が必要となり、本発明では、当該自動復帰機能を有する半導体装置および制御方法の提供を目的とする。
【００１１】
まず、低コスト化のためには、システムレベルではなく半導体チップレベルでの自動復帰機能の装備を行う。半導体集積化技術を活用することにより低コスト化を実現する。
【００１２】
また、電源回復時に不揮発性記憶素子を備えた論理回路が電源オフ時の状態から再開できるという利点を活用し、自動復帰および処理再開を行う。不揮発性記憶素子を導入することにより、低消費電力化を図ることが可能となる。不揮発性記憶素子としてＭＴＪ素子、強誘電体キャパシタ、ＲｅＲＡＭ、フラッシュメモリ等の記憶状態によって抵抗、静電容量、トランジスタ特性が変化する素子の利用が可能である。特に、停電時の長期化等の対策のためには、低電圧動作が可能なＭＴＪ素子を利用した不揮発性記憶素子が有利である。
【００１３】
さらに、処理再開を行うには正常に論理回路内の全フリップフロップが電源オフ寸前のクロックで正しいデータを書込み、そのデータを不揮発性記憶素子に書込まれている必要がある。突発的な電源喪失により電源ラインが不安定になったり、電源オフ時のクロック分配が各フリップフロップに対して不均一になったりした場合にも安定してデータの書き込みが可能な制御回路技術を採用する。この制御回路技術の導入により初期化工程を省略することが可能となり、高速性に資するものとなる。
【００１４】
前記目的を達成するために、本発明の半導体装置のブロック図を図１に示す。
【００１５】
図１には、
数クロック分の履歴を持たせ、クロック分配が均一状態まで遡れる不揮発性フリップフロップから構成されるパイプラインレジスタ（３０，３１，３２）と、
レジスタ単位でクロックが到達したかの情報（以下、「位相情報」と呼ぶ）を不揮発に記憶する履歴カウンタ（４１，４２，４３）と、
電源復帰時各レジスタの履歴カウンタ値を読出し線（８０、８１、８２）を通して位相情報の一致する最新履歴まで遡り履歴カウンタ（４１，４２，４３）の位相情報を一致させる位相書き込み線（９０、９１、９２）を通して出力する制御回路（５０）と、
を備えた半導体装置が示されている。
【００１６】
各構成要素には、以下のような特徴がある。
【００１７】
パイプラインレジスタ（３０，３１，３２）は、前記履歴情報をもつフリップフロップ群（２０，２１，２２）は、複数の不揮発性記憶素子を備えたフリップフロップ（１０）のシフトレジスタ接続やＦＩＦＯ構造でデータの順番をアドレスで記憶する方法により履歴データを記憶し更新することができる。また、フリップフロップ群の複数ビットを並列に合わせたレジスタ単位で入力データ（６０）を記憶し、別の履歴カウンタ（４０，４１，４２）を持ち、レジスタ単位で位相情報を持ち、フリップフロップ群（２０，２１，２２）の各フリップフロップ（１０）の情報の古さを知ることができる。パイプライン構成は順序回路の一環であり、パイプラインレジスタ（３０，３１，３２）の間には、算術演算や制御信号を発生させるシーケンサなどの論理計算を行う記憶機能を持たない組合せ回路（７０，７１）を通過しデータが加工される。
【００１８】
前記履歴カウンタ（４０，４１，４２）は、基数異なる複数のカウンタで構成される。カウンタのフリップフロップは不揮発性記憶素子を備える。１つの履歴カウンタの基数は、フリップフロップ群（２０，２１，２２）のフリップフロップ（１０）の数と一致させるとカウンタ値が最新の情報を持つフリップフロップ（１０）を示すことができるためハードウェア量が削減できる。他の履歴カウンタは基数を変え複数の履歴カウンタでフリップフロップ群（２０，２１，２２）に備える数以上の履歴情報を数えることが可能となる。
【００１９】
前記制御回路（５０）は、電源復帰時、前記パイプラインレジスタ（３０，３１，３２）に付随する履歴カウンタ（４０，４１，４２）の値を読出し線（８０、８１、８２）を通して位相情報を集約する。各パイプラインレジスタ履歴情報を照合し、全パイプラインレジスタ内容の一貫性のある時刻を計算する。
【００２０】
前記制御回路は、一貫性のある時刻の履歴データを選択するように各パイプラインレジスタに位相書き込み線（９０、９１、９２）を通して信号を出し，それにより各パイプラインレジスタ（３０，３１，３２）に付随する履歴カウンタ（４０，４１，４２）に同一位相の値を書き込み、所望のフリップフロップ（１０）を選択し出力として選択する。
【００２１】
前記制御回路（５０）内にはエラー信号出力回路（５１）を備え、位相の一貫性が取れなかった場合の検出機能の仕組みを持ちエラー信号を外部に出力することでシステム全体の電源復帰時の誤動作を防止できる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係る自動復帰可能な半導体装置のブロック図である。
【図２】一般的な同期式順序回路を構成するパイプラインの構成図である。
【図３】一般的なプリント基板や半導体集積回路内のクロック分配図である。
【図４】電源喪失時のクロック分配不整合を説明する図である。
【図５】不揮発性記憶素子を用いたプリップフロップを備える回路の一般的な電源のオフおよびオンの操作を示すクロック、動作、電源電圧のタイミングチャートである。
【図６】一般的な電源異常時の電圧変化、クロック、退避処理を示すタイミングチャートである。
【図７】突発的電源喪失時に退避処理が間に合わないことを示すタイミングチャートである。
【図８】図４において、クロック分配が不均一になった場合のデータの位相が異なることを説明するタイミングチャートである。
【図９】図１において、プリップフロップを複数個（図では３個）縦続接続により履歴データを保持する回路図である。
【図１０】図１において、プリップフロップを複数個（図では３個）並列接続および履歴カウンタにより履歴データを保持する回路図である。
【図１１】図１において、位相情報を記憶する２つのカウンタの構成図である。
【図１２】図１１において、カウンタ２個の示す値と１２状態を表す表と各レジスタの履歴状態を記憶する変数を表した構成図である。
【図１３】図１２において、履歴状態を記憶する変数から自動復帰動作またはエラーとなる条件および処理を示したフロー図である。
【図１４】図１の突発的電源喪失による位相情報不整合発生と自動検出および位相一致処理を示したタイミングチャートである。
【図１５】図１の形態を組込み用マイコン向け３２ビットＣＰＵに適用し、論理合成を行い，ゲートレベルシミュレーションを行った結果のタイミングチャートである。
【発明を実施するための形態】
【００２３】
以下、図面を参照しながら本発明の実施の形態に係る、時間的一貫性の取れなくなった不揮発性記憶状態から履歴情報を用いて自動復帰機能を備える論理回路について説明する。まず、本発明の前提となる従来の実施の形態について説明をする。
【００２４】
（従来の実施の形態１）
（図２の説明）
図２は一般的なクロック同期式順序回路を構成するパイプラインの構成を示している。通常のデータパス（算術論理演算を行う部分）はパイプライン構造を取り、組合せ回路１４０，１４１で演算し，レジスタ１１０，１１１，１１２で記憶する。これにより，演算速度が上がり、スループットも向上する。パイプラインレジスタ１１０は、エッジトリガＤ型フリップフロップ１００を並列に配置した形で構成され，複数ビットの２進数表現で大きな値を扱う。データパスの入力データ１３０がパイプラインレジスタ１１０にクロック１２０のタイミングで記憶され、演算部分である記憶機能を持たない組合せ回路１４０で処理を行い次段のレジスタ１１１に入力される。同様に次のクロックでレジスタ１１１が出力しているデータを用いて組合せ回路１４１が演算しレジスタ１１２に入力され記憶をする。
【００２５】
（図３の説明）
図３は一般的なプリント基板や半導体集積回路内のクロック分配の構造を示している。半導体集積回路を含むディジタル回路は、特殊な場合を除きクロック同期式である。フリップフロップはクロックに同期して入力データの取り込みを行うため、複数個あるフリップフロップに供給されるクロックの同期されている必要がある。数百から数万ある末端フリップフロップ１９０に同期したクロックを供給する一般的方法を説明する。外部の発振器等で生成されたクロック１５０は、ＰＬＬ回路１６０で逓倍され周波数を高める場合とそのまま入力される場合があり、クロック選択マルチプレクサ１７０で任意に選択される。その後クロックラインバッファ１８０で波形のなまりを成形させながら、配線も遅延も等距離になるように分配されていき末端フリップフロップ１９０に到達する。このとき全フリップフロップ１９０がほぼ同期がとれるような設計がされている。
【００２６】
（図４の説明）
図４は電源喪失時のクロック分配不整合を説明するための図であり、電源および２系統のクロック分配を示している。外部クロック入力２００を中継し増幅するバッファ２２０は通常の論理ゲートであるため電源端子も示している。外部の電源装置２１０からの電源供給が必要となる。一般にＶＤＤが正極側、ＧＮＤが接地側となる。ここでは２つの経路を経てクロックが供給される末端フリップフロップＡ２３０、末端フリップフロップＢ２３１を考える。それぞれのクロックをＣＬＫ＿Ａ２４０、ＣＬＫ＿Ｂ２４１とする。
【００２７】
（図５の説明）
図５は不揮発性記憶素子を用いたプリップフロップを備える回路の一般的な電源のオフおよびオンの操作を示すクロック、動作、電源電圧のタイミングチャートである。不揮発性記憶素子を備えたフリップフロップを用いた論理回路の一般的な電源オフおよびオンの手順を示す。プロセッサまたはシステムから回路の処理が休止状態に移行可能となり消費電力削減のため電源がオフできる状態になる。Ｔｓｔｒで全フリップフロップに内部の不揮発記憶素子へ記憶する信号が伝達され１ないし数クロックでデータ退避動作が行われる。このとき不揮発性記憶素子へ書込みが正しく行われたかを検出する動作およびされていない場合の再書き込み回路や動作があっても良い。退避動作が終了後Ｔｏｆｆにて外部電源装置との切断を行い、同時にクロック供給も停止する。この間、半導体デバイスのリーク電流が一切流れないため待機電力となる静的消費電力をほぼゼロにできる。対象回路外のタイマや割込み信号によりＴｏｎにて電源オン処理に移行する。電源装置と接続し、電源ラインの容量の充電時間および電圧の安定を経てクロック供給を再開する。回路動作が可能となったＴｌｄで不揮発性記憶素子からフリップフロップ内へ読出しが行われ電源オフ直前の状態へ１ないし数クロックで復帰する。この後Ｔｏｐにて回路全体の処理動作を再開する。
【００２８】
（図６の説明）
図６は一般的な電源異常時の電圧変化、クロック、退避処理を示すタイミングチャートである。一般的な電源監視機能を持った停電等の電源喪失時の動作を説明する。回路内部に電源電圧を監視する回路が備えられＶｔｈを下回ると最優先割込み処理等で現在行われている処理を即座に中断し、退避処理が行われる。Ｔ０にて停電が発生し電源電圧が降下を始める。Ｔ１にて電源降下が確認され回路全体の処理を停止し１ないし数クロックで退避処理に移行する。この方法は、不揮発性機能を備えられていない回路でも広く使われている手法である。
【００２９】
（図７の説明）
図７は突発的電源喪失時に退避処理が間に合わないことを示すタイミングチャートである。落雷等のサージによる電源不安定や地震等の災害で電源装置に故障や断線や短絡が生じ回路全体の電源喪失が突発的に起こった場合を示す。Ｔ０にて電源喪失が起こり急激な電源ラインの電圧降下が起きる。Ｔ１にて電圧降下が確認できてもその後のクロックが十分伝達できない状態となり同期式論理回路による退避処理が不可能な状態を示している。
【００３０】
（図８の説明）
図８は図４において、クロック分配が不均一になった場合のデータの位相が異なることを説明するタイミングチャートである。図４のブロック図において図７の突発的電源喪失が起きた場合の不揮発性記憶機能を持ったフリップフロップないし回路全体の動作を示す。予定されていない電源オフのため、退避処理に入った場合のクロック供給に差が生じることを示している。電源不安定によりバッファが十分な増幅動作ができず、例えばＣＬＫ＿Ａ２４０とＣＬＫ＿Ｂ２４１に図のようなクロック供給の差が生じたとする。末端フリップフロップＡ２３０は時刻ｔまでのデータＤ（ｔ）を保持できている。しかしながら末端フリップフロップＢ２３１はＣＬＫ＿Ｂ２４１の時刻ｔのクロック電圧が十分でないため保持動作ができず、１つ前のデータＤ（ｔ−１）を記憶したままとなる。ここで時間的不整合が起こり位相の相違が生じる。通常回路ではこの状態を検出できない。不揮発性機能を持っていても回路全体のデータが電源喪失直後の記憶状態を再現できないため電源回復後の自動復帰は不可能となる。したがって、不揮発性機能を持たない回路と同様にリセット状態からの初期化処理から復帰することとなる。データの不整合が顕著の場合には、人手によるデータ復帰作業が必要な場合も生じる。
【００３１】
（本発明の実施の形態１）
前記の従来の実施の態様において課題となる電源回復後の自動復帰を可能にする機能を備えた本発明の実施の態様を以下に説明する。
【００３２】
（図９の説明）
図９は、本発明である図１において、プリップフロップを複数個（図では３個）縦続接続により履歴データを保持する回路図である。図１の履歴を取るフリップフロップ群２０のシフトレジスタ構造による実現を示す。現クロックと２つ前までの３つの履歴状態を保持できる回路例である。フリップフロップ２６０、２６１、２６２の順で履歴がクロックＣＬＫ２５０のタイミングで更新される。クロックゲーティングにより前期の通り毎クロックではなく複数クロック毎に履歴をとり、消費電力を抑制する方法もある。１ビットデータ入力２９０は通常動作の場合出力選択マルチプレクサ２７０および選択信号２８０により一番履歴の新しいフリップフロップ２６０の出力が選択され２９１へ出力される。前記の通り同時に履歴も取られる。電源回復時、図１において、例えばパイプラインレジスタ３０に注目した場合、制御回路５０からの指示信号９０により位相情報の一致が確認され履歴カウンタ４０に書込まれる。１ビットのフリップフロップ群２０を構成するフリップフロップ２６０ないし２６１ないし２６２が選択信号２８０により出力選択マルチプレクサ２７０を通して復帰に必要なデータが選択される。
【００３３】
（本発明の実施の形態２）
【００３４】
（図１０の説明）
図１０は、本発明である図１において、図９と異なる例である並列接続およびカウンタにより履歴データを保持する回路図である。図１の履歴を取るフリップフロップ群２０の並列選択構造による実現を示す。現クロックと２つ前までの３つの履歴状態を保持できる回路例である。３進カウンタ３２０を備え履歴記憶されるフリップフロップ３１０、３１１、３１２に順番に書込み３１０に戻る繰返しとなる。入力データ３５０は共通でクロックゲーティングＡＮＤ回路３３０によりクロックＣＬＫ３００をマスクし書込むフリップフロップを選択する。出力信号選択は、出力選択マルチプレクサ３４０、選択信号マルチプレクサ３４１を用いて書込みを行ったフリップフロップを記憶している３進履歴カウンタ３２０からの選択信号により、当該出力データを得る。電源回復後の履歴情報によるフリップフロップ選択も出力選択マルチプレクサ３４０、選択信号マルチプレクサ３４１を用いて出力信号を選択する。
【００３５】
（本発明の実施の形態３）
【００３６】
（図１１の説明）
図１１は、図１において、位相情報を記憶する基数の異なる２つの履歴カウンタの構成図である。位相情報の一致検出およびデータの取出し方法を説明する。図１のカウンタ４０の動作を以下に１つの例を説明する。パイプラインレジスタ３０と同一のクロックＣＬＫ３６０で動作する３進カウンタ３８０と４進カウンタ３９０を備える。各カウンタの構成を説明する。ともに２ビットあれば十分であるため記憶用レジスタとして２ビット不揮発性フリップフロップ３７０と、インクリメンタ３７１，３７２とカウンタまたは書込み選択マルチプレクサ３７３と、から構成される。３進カウンタ３８０の出力４００ＣＮＴ０は０，１，２（便宜上１０進で表記）の値をとる。同様にして４進カウンタ３９０の出力４０１ＣＮＴ１は０，１，２，３の値をとる。ＣＮＴ０とＣＮＴ１の値の組合せで１２通りの組み合わせができる。３進カウンタ３８０のインクリメンタは２の次状態は０となるように設計される。４進カウンタ３９０のインクリメンタ３７２は３の次状態は０となるように設計される。なお、３進カウンタ出力４００ＣＮＴ０は、履歴データを記憶するフリップフロップのクロックおよび出力の選択も行う。また、それぞれのカウンタは書込み位相データ選択信号ＦＩＸ４１２を１にセットすることで、それぞれのカウンタの２ビット不揮発性フリップフロップ３７０を制御信号からの位相の一致したデータ４１０ＬＤ＿ＣＮＴ０および４１１ＬＤ＿ＣＮＴ１が書込まれる。ＦＩＸ４１２が０のときは通常のカウンタ機能として機能する。
【００３７】
（図１２の説明）
図１２は、図１１において、カウンタ２個の示す値と１２状態を表す対応表および各レジスタの履歴状態の一致を記憶する変数を表した構成図である。図１の制御部５０において位相情報を収集する方法を説明する。２つのカウンタ出力ＣＮＴ０およびＣＮＴ１の取りうる値は１２通りとなる。図１の各パイプラインレジスタ３０．３１．３２に付随するカウンタ４０，４１，４２からのカウンタ出力信号ＣＮＴ０とＣＮＴ１がi（０．．．１１）のどれか１つに該当すればＳiが１にセットされその他は０となる。位相に不一致が無く、電源オフ時にレジスタ単位ですべて同じクロックが到達していればＳiの１つだけが１となりその他はすべて０となる。また、一致位相がｉと決まったときの履歴カウンタ（４０，４１，４２）に書込むＬＤ＿ＣＮＴ０とＬＤ＿ＣＮＴ１は、この構成図に基づいて決定される。例えばｉ＝４が同一位相で書込む（ＬＤ＿ＣＮＴ０，ＬＤ＿ＣＮＴ１）は（１，０）となる。
【００３８】
（図１３の説明）
図１３は、図１２において、履歴状態を記憶する変数Ｓｉから自動復帰動作またはエラーとなる条件および処理を示したフロー図である。図１の制御部において図１２の位相情報Ｓi（i＝０．．．１１）による履歴情報による状況および動作について示している。
【００３９】
１つ目の条件：
前記のように電源喪失時クロック分配に異常は無く，そのまま再開できる状態である。ＦＩＸ４１２はカウンタ側を選択する。
【００４０】
２つ目の条件：
隣り合う時刻の状態ＳｉとＳｉ＋１がともに１である場合であり、少なくとも１つのレジスタがＳｉの状態で１クロック到達せず、他はＳｉ＋１の状態にある状況である。復帰処理は、カウンタがＳｉ＋１まで回っているもの１つ前のクロックの状態であるＳｉに戻す。具体的にはＳｉに相当する図１２のＣＮＴ０とＣＮＴ１の数値を全レジスタに付随するカウンタに書込む。３進カウンタが１クロック到達していないレジスタ時間と同等状態のフリップフロップが選択され、そのまま再開できる。具体的には、ＦＩＸ４１２を１とし（ＬＤ＿ＣＮＴ０，ＬＤ＿ＣＮＴ１）を図１２のｉ番目のＣＮＴ０ｉとＣＮＴ１ｉをセットして各カウンタ３８０と３９０に書き込む。
【００４１】
３つ目の条件：
隣り合う時刻の状態ＳｉとＳｉ＋１とＳｉ＋２が１より大きい場合、すなわち少なくとも１つのレジスタがＳｉの状態で２クロック到達していないか（Ｓｉ，Ｓｉ＋１，Ｓｉ＋２）＝（１，０，１）、少なくとも１つのレジスタが２クロック到達していなくＳｉの状態かつその他の少なくとも１つのレジスタが１クロック到達していなくＳｉ＋１の状態（Ｓｉ，Ｓｉ＋１，Ｓｉ＋２）＝（１，１，１）、残りのレジスタはＳｉ＋２の状態まで進んでいる状況である。復帰処理は、カウンタがＳｉ＋２まで回っているもの２つ前のクロックの状態であるＳｉに戻す。図１２のＳｉに相当するＣＮＴ０とＣＮＴ１の数値を全レジスタに付随するカウンタに書込む。３進カウンタが２クロック到達していないレジスタ時間と同等状態のフリップフロップが選択され、そのまま再開できる。なお、電源喪失直後の２クロック中の１クロック喪失の前後は問わない。復帰時に２クロック前まで戻して再開するため前記１クロック喪失の前後の状況以前の過去の状態に戻るため復帰自体に問題が無い。具体的には、ＦＩＸ４１２を１とし（ＬＤ＿ＣＮＴ０，ＬＤ＿ＣＮＴ１）を図１２のｉ番目のＣＮＴ０ｉとＣＮＴ１ｉをセットして各カウンタ３８０と３９０に書き込む。
【００４２】
前記条件に合わない場合：
２クロックを超えるクロックの欠落があった場合か、履歴情報からは履歴データが使用できない場合であり処理を再開できない。そのため図１のエラー信号発生回路５１により外部に復帰不可能であることを伝達する。上位のシステムは、この信号を受けて、リセット等の初期化から始めるか、人手によるチェックを要するかの判断を行う。
【００４３】
（図１４の説明）
図１４は、本発明の図１において、突発的電源喪失による位相情報不整合発生と自動検出および位相一致処理の例を示したタイミングチャートである。図１のブロック図においてレジスタ３０に１クロック到達しない例を示す。レジスタ３０、３１、３２に付随するカウンタ４０、４１、４２に供給されるクロックと各カウンタの出力を示している。なおシステムクロックは半導体装置に供給される外部クロックとなる。
時刻Ｔ０において突発的電源喪失が起こったとする。そこから急激に電源電圧が下がり外部クロックは２クロックだけ供給できたとする。さらに電源不安定によりレジスタ３０およびカウンタ４０のブロックのみ時刻Ｔｆでクロック分配が失敗したとする。
電源喪失後の２クロックの間カウンタ４１、４２は状態ｉ＝５，６，７と進み，各カウンタＣＮＴ０およびＣＮＴ１に相当する出力は（２，１），（０，２），（１，３）と進む。カウンタ４０のみが状態ｉ＝５，６までで停止してしまい、ＣＮＴ０およびＣＮＴ１に相当する出力は（２，１），（０，２）と進み不整合が起きる。
Ｔｏｎにて電源復帰しクロック供給が始まり、Ｔｌｄで不揮発性記憶素子からの読出しを行う。Ｔｃｋにて制御回路に各カウンタの値を送る。ここでカウンタ４０はｉ＝６の状態であり、カウンタ４１、４２はｉ＝７の状態となり図１２に従ってＳ６およびＳ７が１にセットされる。図１３のフローに従い２つ目の条件であるＳ６＋Ｓ７＝２に当てはまり、１クロック戻ったＳ６の位相に制御回路から各レジスタに対して合わせる信号が送られカウンタ４０、４１、４２は（０，２）の状態から次クロックで取り込まれる。前記クロックＴｏｐによりＳ６の状態のＣＮＴ０の示す０のレジスタのデータを使って処理を再開する。
【００４４】
（図１５の説明）
図１５は、本発明の図１において、突発的電源喪失による位相情報不整合発生と自動検出および位相一致処理を実際の論理シミュレータにより組込み用マイコン向け３２ビットＣＰＵをシミュレーションした結果波形である。時刻Ｔｆに履歴レジスタ４２の４進レジスタ側のクロックを故意に止めた状態である。次クロックＴｎで４進カウンタＣＮＴ１＿４０およびＣＮＴ１＿４１は次状態の０を出力するが、クロックが到来しないＣＮＴ１＿４２のみ値が３のままである。Ｔｏｆｆで電源が喪失し、各記憶データは不定（Ｘまたは灰色で示した部分）を出力する。Ｔｏｎにて電源復帰後、Ｔｃｋにて不揮発記憶素子からのデータ読出しが即座に行われかつ位相情報一致検出と位相修正が行われる。同時にＦＩＸ４１２が１となり、修正された位相情報が次クロックで書き込まれる。ＣＮＴ１＿４２の位相に合せて制御回路５０が位相レジスタ４０，４１に書込みすべて３の１クロック到達していない状態にＴｏｐのタイミングで戻る。記憶データもＴｆの状態に戻っており自動復帰しこの後の処理は通常通り行われることを確認した。
【００４５】
（本回路の特徴）
以上前記の通り、各レジスタに履歴データと位相情報を持ち、突発的電源喪失時のクロック分配に不整合が生じた場合でも、位相が一致している過去に遡り、データの時刻を一致させ処理を再開する。履歴の数は例として３であったがそれ以上でも２でも構わない。ハードウェアの規模および消費電力と信頼性のトレードオフの関係にあるため、信頼度の仕様に合わせて決定できる。
また、位相情報を持つカウンタ４０、４１、４２の実現方法は他にも４進カウンタを２進カウンタで代用し６クロックまでの履歴状態に縮小する、シフトレジスタを使用して履歴情報を持つなどの方法がある。
さらに、毎クロックの履歴を取る例を示したが，１クロック起きや，数十から数百クロック毎など任意に設定が可能であり、ハードウェアの規模および消費電力と信頼性の要求仕様により静的かつ動的に選択が可能である。例えば処理が高負荷の場合には毎クロック履歴を取り、低負荷時には履歴を取る間隔を拡張するなどの方法がある。
【符号の説明】
【００４６】
（図１）
１０    不揮発性記憶素子を備えたフリップフロップ
２０、２１、２２    履歴を取るためフリップフロップ１０を複数個備えたフリップフロップ群
３０    フリップフロップ群２０を並列に備えたパイプラインレジスタ
３１    フリップフロップ群２１を並列に備えたパイプラインレジスタ
３２    フリップフロップ群２２を並列に備えたパイプラインレジスタ
４０    パイプラインレジスタ３０に付随する不揮発性記憶素子を備えた履歴カウンタ
４１    パイプラインレジスタ３１に付随する不揮発性記憶素子を備えた履歴カウンタ
４２    パイプラインレジスタ３２に付随する不揮発性記憶素子を備えた履歴カウンタ
５０    制御回路
５１    修復不可能を検出し外部にエラーを出力する回路
６０    パイプラインレジスタ３０に入力する複数ビットデータ
７０、７１  演算や制御等の計算を行う記憶動作を含まない組合せ回路
８０、８１、８２  履歴カウンタ（４０，４１，４２）からの読出し線
９０、９１、９２  履歴カウンタ（４０，４１，４２）への位相書き込み線
（図２）
１００  フリップフロップ
１１０、１１１、１１２  パイプラインレジスタ
１２０  同期クロック
１３０  入力データ
１４０、１４１  組合せ回路網
（図３）
１５０  外部クロック
１６０  ＰＬＬ
１７０  クロック選択マルチプレクサ
１８０  クロックラインバッファ
１９０  末端フリップフロップ
（図４）
２００  外部クロック入力
２１０  外部電源装置
２２０  電源端子を示したバッファ
２３０  末端フリップフロップＡ
２３１  末端フリップフロップＢ
２４０  ２３０のクロック入力Ａ
２４１  ２３１のクロック入力Ｂ
（図５）
ＣＬＫ  クロック波形
ＶＤＤ  外部供給電圧
Ｔｓｔｒ  電源オフ前データ退避タイミング
Ｔｏｆｆ  外部電源供給停止タイミング
Ｔｏｎ    外部電源供給開始タイミング
Ｔｌｄ    不揮発記憶素子からフリップフロップ内にデータ読出しタイミング
Ｔｏｐ    通常稼働開始タイミング
（図６，７）
ＶＤＤ    通常電源電圧
Ｖｔｈ    電源電圧監視回路のしきい値電圧
Ｔ０      通常の停電等の開始タイミング
Ｔ１      電源電圧がしきい値電圧を下回ったタイミング
（図８）
ＣＬＫ＿Ａ  末端フリップフロップＡのクロック
ＣＬＫ＿Ｂ  末端フリップフロップＢのクロック
Ｄ（ｔ）      現在クロックのデータ
Ｄ（ｔ−１）  １クロック前のデータ
Ｄ（ｔ−２）  ２クロック前のデータ
Ｄ（ｔ−３）  ３クロック前のデータ
（図９）
２５０  同期クロック
２６０  １番履歴の新しいフリップフロップ
２６１  ２番目に履歴の新しいフリップフロップ
２６２  一番古い履歴のフリップフロップ
２７０  出力選択マルチプレクサ
２８０  フリップフロップ出力先端信号
２９０  １ビット分のデータ入力
（図１０）
３００  同期クロック
３１０、３１１、３１２  履歴記憶されるフリップフロップ
３２０  履歴カウンタ
３３０  クロックゲーティング用ＡＮＤゲート
３４０  出力信号マルチプレクサ
３４１  選択信号マルチプレクサ
３５０  フリップフロップ出力先端信号
３５１  選択された出力データ
（図１１）
３６０  同期クロック
３７０  ２ビット不揮発性フリップフロップ
３７１  ３進カウンタ用インクリメンタ
３７２  ４進カウンタ用インクリメンタ
３７３  カウンタまたは書込み選択マルチプレクサ
３８０  ３進カウンタ
３９０  ４進カウンタ
４００  ３８０の出力ＣＮＴ０
４０１  ３９０の出力ＣＮＴ１
４１０  ３進カウンタ用書込み位相データＬＤ＿ＣＮＴ０
４１１  ４進カウンタ用書込み位相データＬＤ＿ＣＮＴ１
４１２  書込み位相データ選択信号ＦＩＸ
（図１２）
ｉ          位相状態
ＣＮＴ０ｉ  位相状態ｉのときの３進カウンタ値
ＣＮＴ１ｉ  位相状態ｉのときの４進カウンタ値
Ｓｉ        履歴カウンタが状態ｉのときにセットされる変数
（図１３）
ｉｆ      もし（以下に条件を記述）
ｔｈｅｎ  ならば（以下を実行）
ｅｌｓｅ  さもなければ（前述条件に合致しない場合）
（図１４）
Ｔ０      電源喪失の開始タイミング
Ｔｆ      クロック不整合タイミング
Ｔｏｎ    電源供給開始タイミング
Ｔｌｄ    不揮発記憶素子からのデータ読出しタイミング
Ｔｃｋ    位相情報読出し、一致検出、位相情報書込みデータ作成タイミング
Ｔｏｐ    稼働開始タイミング
ＣＮＴ０＿４０  履歴レジスタ４０の３進出力
ＣＮＴ１＿４０  履歴レジスタ４０の４進出力
ＣＮＴ０＿４１  履歴レジスタ４１の３進出力
ＣＮＴ１＿４１  履歴レジスタ４１の４進出力
ＣＮＴ０＿４２  履歴レジスタ４２の３進出力
ＣＮＴ１＿４２  履歴レジスタ４２の４進出力
（図１５）
Ｔｆ      クロック不整合タイミング
Ｔｎ      クロック不整合の次クロックタイミング
Ｔｏｆｆ  電源オフタイミング
Ｔｏｎ    電源供給開始タイミング
Ｔｃｋ    不揮発記憶素子からのデータ読出し、位相情報読出し、一致検出、位相情報書込みデータ作成タイミング
Ｔｏｐ    稼働開始タイミング
ＦＩＸ    書込み位相データ選択信号
ＣＮＴ１＿４０  履歴レジスタ４０の４進出力
ＣＮＴ１＿４１  履歴レジスタ４１の４進出力
ＣＮＴ１＿４２  履歴レジスタ４２の４進出力
【図１】
0006551844.tif 000002
【図２】
0006551844.tif 000003
【図３】
0006551844.tif 000004
【図４】
0006551844.tif 000005
【図５】
0006551844.tif 000006
【図６】
0006551844.tif 000007
【図７】
0006551844.tif 000008
【図８】
0006551844.tif 000009
【図９】
0006551844.tif 000010
【図１０】
0006551844.tif 000011
【図１１】
0006551844.tif 000012
【図１２】
0006551844.tif 000013
【図１３】
0006551844.tif 000014
【図１４】
0006551844.tif 000015
【図１５】
0006551844.tif 000016