(57)【特許請求の範囲】
【請求項１】
揮発性データを保持する保持回路と、不揮発性データの保持が可能な不揮発素子と、を含む複数の第１の不揮発レジスタと、
前記複数の第１の不揮発レジスタのうち、いずれの第１の不揮発レジスタからデータをロードするかを定めるロードイネーブルビットを保持する第２の不揮発レジスタと、
外部から電源供給がなされた際に、前記第２の不揮発レジスタからロードした前記ロードイネーブルビットが指定する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードする不揮発レジスタ制御回路と、
を備えることを特徴とする半導体集積回路。
【請求項２】
前記複数の第１の不揮発レジスタは複数のグループに分割され、それぞれのグループは、前記ロードイネーブルビットと対応付けられているか、又は、対応付けられていないか、のいずれかであって、
前記不揮発レジスタ制御回路は、前記ロードイネーブルビットが指定するグループに属する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードする請求項１の半導体集積回路。
【請求項３】
前記ロードイネーブルビットに対応付けられていないグループに属する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードするか否かは予め定められた規則に従う請求項２の半導体集積回路。
【請求項４】
中央処理装置に対する命令をデコードする命令デコーダと、
前記命令を記憶する記憶装置と、
を備え、
前記複数の第１の不揮発レジスタはそれぞれアドレスが付与されと共に、複数のグループに分割されており、
前記命令には、前記複数の第１の不揮発レジスタに対応するアドレスを指定するアドレスビットと、前記複数の第１の不揮発レジスタからデータのロードを指示するロードビットと、が含まれ、
前記不揮発レジスタ制御回路は、前記命令デコーダが前記記憶装置から読み出した命令をデコードした結果、前記アドレスビットが指定する第１の不揮発レジスタと同一のグループに属する第１の不揮発レジスタであって、対応する前記ロードビットが活性化されている第１の不揮発レジスタのデータのロードを行う請求項１乃至３のいずれか一に記載の半導体集積回路。
【請求項５】
前記複数の第１の不揮発レジスタは、複数のグループに分割され、
前記複数の第１の不揮発レジスタが属するいずれのグループを活性化するか否かを定める複数のロード信号の供給が可能である電源制御回路を備え、
前記不揮発レジスタ制御回路は、前記電源制御回路が供給するロード信号に対応したグループに属する第１の不揮発レジスタであって、対応する前記ロードイネーブルビットが活性化されている第１の不揮発レジスタのデータのロードを行う請求項１の半導体集積回路。
【請求項６】
前記不揮発レジスタ制御回路は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含まないシステム起動、又は、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含むシステム起動、のいずれかを行う請求項１乃至５のいずれか一に記載の半導体集積回路。
【請求項７】
前記複数の第１の不揮発レジスタのいずれかにおいて、プログラムカウンタに関するデータを保持し、
前記不揮発レジスタ制御回路は、外部から電源供給がなされた際に、前記プログラムカウンタを記憶する不揮発レジスタに含まれる不揮発素子から前記保持回路にデータをロードし、
前記プログラムカウンタの値に基づいて、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含まないシステム起動、又は、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含むシステム起動、のいずれかを行う請求項１乃至５のいずれか一に記載の半導体集積回路。
【請求項８】
前記複数の不揮発レジスタは、第１及び第２の書き込み信号と、１つのデータ入力と、を受け付け、
前記第１の書き込み信号が活性化された場合には、前記保持回路のデータを前記不揮発素子へ書き込み、
前記第２の書き込み信号が活性化された場合には、前記データ入力を前記不揮発素子へ書き込みつつ、前記保持回路が保持するデータの変更を行わない請求項１乃至７のいずれか一に記載の半導体集積回路。
【請求項９】
揮発性データを保持する保持回路と、不揮発性データの保持が可能な不揮発素子と、を含む複数の第１の不揮発レジスタを備える半導体集積回路の制御方法であって、
前記複数の第１の不揮発レジスタのうち、いずれの第１の不揮発レジスタからデータをロードするかを定めるロードイネーブルビットを参照する第１の工程と、
外部から電源供給がなされた際に、前記ロードイネーブルビットが指定する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードする第２の工程と、
を含むことを特徴とする半導体集積回路の制御方法。
【請求項１０】
前記第２の工程は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードせずにシステムを起動する工程、又は、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードしてシステムを起動する工程、のいずれかを含む請求項９の半導体集積回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１１−２５４０２８号（２０１１年１１月２１日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、半導体集積回路及びその制御方法に関する。特に、不揮発レジスタを備えた半導体集積回路及びその制御方法に関する。
【背景技術】
【０００２】
近年、半導体集積回路における集積度の向上に伴い、内部に含まれるトランジスタのリーク電流が問題となる。特に、半導体集積回路が動作していない状態でのリーク電流が増加し、その消費電力が無視できない状況にある。そのため、半導体集積回路が動作していなければ、半導体集積回路に供給する電源を遮断し、リーク電流を低減する低消費電力モードを備える半導体集積回路が存在する。【０００３】
しかし、半導体集積回路に対する電源供給が遮断されると、その内部状態を保持するレジスタ等の値は消去されてしまう。このようなことから、半導体集積回路には、電源供給が遮断される前に保持しておきたいデータを外部記憶装置等に退避する必要がある。【０００４】
ここで、特許文献１において、構成要素の状態を保存する方法と、電源が完全に遮断された後の再開機能を持つコンピュータシステムが開示されている。特許文献１が開示するコンピュータシステムは、内部状態をコンピュータシステム構成要素内の走査ラッチを使用して読み取る。読み取った内部状態は退避領域に保存され、その後、電源が遮断される。【０００５】
さらに、特許文献２において、不揮発メモリと書き込み回路を備えたラッチ回路を備える半導体装置が開示されている。特許文献２が開示する半導体装置は、電源をオフする前に、ラッチ回路のデータ（揮発的なデータ）を不揮発メモリに書き込む。このように、特許文献２が開示する半導体装置は、不揮発メモリセルを使用することにより、煩雑な転送動作を必要とせず、かつ、高速にデータの退避が可能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１８２８０３号公報
【特許文献２】特開２００４−１３３９６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。【０００８】
ここで、特許文献１が開示するように、内部状態を保持している回路から分離して配置されているメモリ素子を使用する場合には、データ転送に伴う時間遅延及び電力消費が発生する。特に、電源のオン・オフを頻繁に行った場合には、データ転送に伴う時間遅延や電力消費に関する問題が顕著になる。【０００９】
さらに、特許文献２が開示する半導体装置には、モジュール毎に備えられた電源スイッチをオン・オフするたびに、そのモジュールに含まれる全ての不揮発ラッチのデータを退避・復帰するため、不必要な書き込みやロードが発生し、消費電力が大きくなるという問題がある。また、電源をオンする際に、常に電源をオフの前の状態に復帰させるため、システムの柔軟性という観点からも問題がある。【００１０】
そのため、半導体集積回路の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制した半導体集積回路及びその制御方法が、望まれる。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、揮発性データを保持する保持回路と、不揮発性データの保持が可能な不揮発素子と、を含む複数の第１の不揮発レジスタと、前記複数の第１の不揮発レジスタのうち、いずれの第１の不揮発レジスタからデータをロードするかを定めるロードイネーブルビットを保持する第２の不揮発レジスタと、外部から電源供給がなされた際に、前記第２の不揮発レジスタからロードした前記ロードイネーブルビットが指定する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードする不揮発レジスタ制御回路と、を備える半導体集積回路が提供される。【００１２】
本発明の第２の視点によれば、揮発性データを保持する保持回路と、不揮発性データの保持が可能な不揮発素子と、を含む複数の第１の不揮発レジスタを備える半導体集積回路の制御方法であって、前記複数の第１の不揮発レジスタのうち、いずれの第１の不揮発レジスタからデータをロードするかを定めるロードイネーブルビットを参照する第１の工程と、外部から電源供給がなされた際に、前記ロードイネーブルビットが指定する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードする第２の工程と、を含む半導体集積回路の制御方法が提供される。
【発明の効果】
【００１３】
本発明の各視点によれば、半導体集積回路の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することに貢献しうる半導体集積回路及びその制御方法が、提供される。
【図面の簡単な説明】
【００１４】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係る半導体集積回路１の内部構成の一例を示す図である。
【図３】半導体集積回路１が採用する命令形式の一例を示す図である。
【図４】不揮発フリップフロップ６０の回路構成の一例を示す図である。
【図５】不揮発素子としてスピントルク効果を利用して書き込みを行う磁壁移動素子の素子近傍の断面図である。
【図６】半導体集積回路１に含まれる不揮発レジスタＲ１〜Ｒｍとその制御回路である不揮発レジスタ制御回路３０の接続の一例を示す図である。
【図７】命令コードが不揮発素子の書き込み命令である場合の動作波形の一例である。
【図８】命令コードが不揮発素子のロード命令である場合の動作波形の一例である。
【図９】第２の実施形態に係る半導体集積回路２の内部構成の一例を示す図である。
【図１０】半導体集積回路２に含まれる不揮発レジスタＲ１〜Ｒｍとその制御回路である不揮発レジスタ制御回路３０ａの接続の一例を示す図である。
【図１１】第３の実施形態に係る半導体集積回路３のシステム起動時の動作の一例を示すフローチャートである。
【図１２】第４の実施形態に係る半導体集積回路４のシステム起動時の動作の一例を示すフローチャートである。
【図１３】第５の実施形態に係る不揮発フリップフロップ６０ａの回路構成の一例を示す図である。
【図１４】半導体集積回路５に含まれる不揮発レジスタＲ１〜Ｒｍとその制御回路である不揮発レジスタ制御回路３０ｂの接続の一例を示す図である。
【発明を実施するための形態】
【００１５】
初めに、図１を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載は何らの限定を意図するものではない。
【００１６】
上述のように、メモリ素子とロジック素子が分離して配置されることによって、電源が遮断されている状態からの復帰に際し、データ転送遅延、及びデータを転送する配線や回路の電力消費が増加する。そのため、半導体集積回路の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制した半導体集積回路及びその制御方法が、望まれる。
【００１７】
そこで、一例として図１に示す半導体集積回路１００を提供する。図１に示す半導体集積回路１００は、揮発性データを保持する保持回路１０１と、不揮発性データの保持が可能な不揮発素子１０２と、を含む複数の第１の不揮発レジスタ１０３と、複数の第１の不揮発レジスタ１０３のうち、いずれの第１の不揮発レジスタ１０３からデータをロードするかを定めるロードイネーブルビットを保持する第２の不揮発レジスタ１０４と、外部から電源供給がなされた際に、第２の不揮発レジスタ１０４からロードしたロードイネーブルビットが指定する第１の不揮発レジスタ１０３に含まれる不揮発素子１０２が保持するデータを、保持回路１０１にロードする不揮発レジスタ制御回路１０５と、を備える。
【００１８】
半導体集積回路１００に含まれる第１の不揮発レジスタ１０３は、ロジック素子である保持回路１０１と、メモリ素子である不揮発素子１０２が一体化されて構成されている。ロジック素子とメモリ素子が一体化されているために、遮断されていた電源が復帰する前のデータ転送遅延が防止でき、データ転送に使用する配線や回路の電力消費を削減することができる。さらに、データのロードを行う不揮発素子１０２の数を限定（ロードイネーブルビットにより指定）することで、データ復帰に要する電力を低減すると共に、意図した復帰後の状態に迅速に復帰することができる。
【００１９】
さらに、下記の形態が可能である。
【００２０】
［形態１］上記第１の視点に係る半導体集積回路のとおりである。
【００２１】
［形態２］前記複数の第１の不揮発レジスタは複数のグループに分割され、それぞれのグループは、前記ロードイネーブルビットと対応付けられているか、又は、対応付けられていないか、のいずれかであって、前記不揮発レジスタ制御回路は、前記ロードイネーブルビットが指定するグループに属する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードすることが好ましい。
【００２２】
［形態３］前記半導体集積回路は、前記ロードイネーブルビットに対応付けられていないグループに属する第１の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードするか否かは予め定められた規則に従うことが好ましい。
【００２３】
［形態４］前記半導体集積回路は、中央処理装置に対する命令をデコードする命令デコーダと、前記命令を記憶する記憶装置と、を備え、前記複数の第１の不揮発レジスタはそれぞれアドレスが付与されと共に、複数のグループに分割されており、前記命令には、前記複数の第１の不揮発レジスタに対応するアドレスを指定するアドレスビットと、前記複数の第１の不揮発レジスタからデータのロードを指示するロードビットと、が含まれ、前記不揮発レジスタ制御回路は、前記命令デコーダが前記記憶装置から読み出した命令をデコードした結果、前記アドレスビットが指定する第１の不揮発レジスタと同一のグループに属する第１の不揮発レジスタであって、対応する前記ロードビットが活性化されている第１の不揮発レジスタのデータのロードを行うことが好ましい。
【００２４】
［形態５］前記複数の第１の不揮発レジスタは、複数のグループに分割され、前記複数の第１の不揮発レジスタが属するいずれのグループを活性化するか否かを定める複数のロード信号の供給が可能である電源制御回路を備え、前記不揮発レジスタ制御回路は、前記電源制御回路が供給するロード信号に対応したグループに属する第１の不揮発レジスタであって、対応する前記ロードイネーブルビットが活性化されている第１の不揮発レジスタのデータのロードを行うことが好ましい。
【００２５】
［形態６］前記不揮発レジスタ制御回路は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含まないシステム起動、又は、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含むシステム起動、のいずれかを行うことが好ましい。
【００２６】
［形態７］前記複数の第１の不揮発レジスタのいずれかにおいて、プログラムカウンタに関するデータを保持し、前記不揮発レジスタ制御回路は、外部から電源供給がなされた際に、前記プログラムカウンタを記憶する不揮発レジスタに含まれる不揮発素子から前記保持回路にデータをロードし、前記プログラムカウンタの値に基づいて、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含まないシステム起動、又は、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含むシステム起動、のいずれかを行うことが好ましい。
【００２７】
［形態８］前記複数の不揮発レジスタは、第１及び第２の書き込み信号と、１つのデータ入力と、を受け付け、前記第１の書き込み信号が活性化された場合には、前記保持回路のデータを前記不揮発素子へ書き込み、前記第２の書き込み信号が活性化された場合には、前記データ入力を前記不揮発素子へ書き込みつつ、前記保持回路が保持するデータの変更を行わないことが好ましい。
【００２８】
［形態９］上記第２の視点に係る半導体集積回路の制御方法のとおりである。
【００２９】
［形態１０］前記第２の工程は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードせずにシステムを起動する工程、又は、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードしてシステムを起動する工程、のいずれかを含むことが好ましい。
【００３０】
［形態１１］前記第２の工程は、外部から電源供給がなされた際に、プログラムカウンタを前記第１の不揮発レジスタに含まれる前記保持回路にロードする工程と、前記プログラムカウンタの値に基づいて、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードせずにシステムを起動する工程、又は、前記第１の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードしてシステムを起動する工程、のいずれかを含むことが好ましい。
【００３１】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【００３２】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００３３】
図２は、第１の実施形態に係る半導体集積回路１の内部構成の一例を示す図である。なお、図２では、説明の簡略化のため電源遮断からの復帰に関連するモジュールを記載している。
【００３４】
半導体集積回路１は、不揮発レジスタ群１０と、ロードイネーブルレジスタ２０と、不揮発レジスタ制御回路３０と、記憶装置４０と、命令デコーダ５０から構成されている。
【００３５】
不揮発レジスタ群１０には、複数の不揮発レジスタＲ１〜Ｒｍ（但し、ｍは２以上の整数、以下同じ）が含まれている。さらに、各不揮発レジスタは、ｎビットの情報が保持可能である（但し、ｎは２以上の整数、以下同じ）。各不揮発レジスタは複数の不揮発フリップフロップから構成され、１つの不揮発フリップフロップで１ビットの情報を保持する。即ち、各不揮発レジスタは、ｎビットの情報が保持可能であるので、ｎ個の不揮発フリップフロップを含んで構成される。なお、各不揮発レジスタのビット数ｎは、各不揮発レジスタによって異なっていてもよい。本実施形態に係る半導体集積回路１では、ｎの値は各不揮発レジスタで同一とする。
【００３６】
また、各不揮発フリップフロップは、揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子を含む。なお、保持回路と不揮発素子の詳細については、後述する。
【００３７】
不揮発フリップフロップは、保持回路と不揮発素子との間でデータを転送する機能を備えている。本書では、保持回路のデータを不揮発素子へ転送することを不揮発素子の書き込みと定義する。一方、不揮発素子のデータを保持回路へ転送することを不揮発素子のロードと定義する。
【００３８】
上述のように、半導体集積回路１には、ｍ個の不揮発レジスタが含まれている。さらに、各不揮発レジスタには、アドレスＡ１〜Ａｍまでが付与されている。不揮発レジスタの一例としては、プログラムカウンタＰＣ、スタックポイントＳＰ、ステータスレジスタＳＲ、汎用レジスタ、周辺モジュールで使用するレジスタ等が考えられる。これらの各不揮発レジスタが保持する値は、半導体集積回路１の内部状態を表現するものである。従って、保持回路の値を不揮発素子に退避させた後、半導体集積回路１への電源供給を遮断し、その後、電源を供給した際にこれらのデータを復元すれば、半導体集積回路１を電源遮断前（動作の中断前）の状態に戻すことができる。
【００３９】
ロードイネーブルレジスタ２０には、複数のビットが含まれている。ここでは、ロードイネーブルレジスタ２０には、ｄ個のビットが含まれるものとする（但し、ｄは２以上の整数、以下同じ）。なお、ロードイネーブルレジスタ２０に含まれるビットを、ロードイネーブルビットＬＥＢ１〜ＬＥＢｄと呼び、以下説明する。
【００４０】
ロードイネーブルビットＬＥＢは、複数の不揮発レジスタＲ１〜Ｒｍのうち、いずれの不揮発レジスタのデータをロードするかを判断する際に使用する。各ロードイネーブルビットＬＥＢと不揮発レジスタの対応関係は次のとおりである。不揮発レジスタ群１０に含まれるｍ個の不揮発レジスタは、ｑ個のグループＧ１からＧｑに分割される（但し、ｑは２以上の整数、以下同じ）。それぞれのグループＧは、複数のロードイネーブルビットＬＥＢ１〜ＬＥＢｄのうち、いずれかのロードイネーブルビットＬＥＢと１対１に対応付けされる、又は、対応するロードイネーブルビットＬＥＢを有しない。
【００４１】
次に、ロードイネーブルビットＬＥＢの使用方法を概説する。
【００４２】
ロードイネーブルビットＬＥＢは、半導体集積回路１に電源が供給された直後に不揮発レジスタ制御回路３０にロードされる（不揮発レジスタＲ１〜Ｒｍのロードの前にロードされる）。従って、不揮発レジスタ制御回路３０は、不揮発レジスタＲ１〜Ｒｍに先立ち、このロードイネーブルビットＬＥＢの参照が可能である。
【００４３】
不揮発レジスタ制御回路３０は、不揮発レジスタＲ１〜Ｒｍをロードする際、不揮発レジスタＲ１〜Ｒｍのいずれかを指定し、指定した不揮発レジスタを含むグループに対応したロードイネーブルビットＬＥＢを参照する。参照したロードイネーブルビットＬＥＢの値が「１」の場合には（活性化している場合には）、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路へロードする。参照したロードイネーブルビットＬＥＢの値が「０」の場合には、指定された不揮発レジスタの不揮発素子のデータを保持回路にロードしない。対応するロードイネーブルビットＬＥＢが存在しない場合には、指定した不揮発レジスタの不揮発素子のデータを保持回路にロードするか否かは、予め不揮発レジスタ制御回路３０に固定的に設定しておく。なお、不揮発レジスタ制御回路３０による不揮発レジスタＲ１〜Ｒｍの指定方法については、後述する。
【００４４】
ここで、本実施形態に係る半導体集積回路１は、命令セットを備えている。この命令セットは、不揮発レジスタＲ１〜Ｒｍの制御を可能にする不揮発レジスタ制御命令を含む。
【００４５】
次に、命令の読み出しから不揮発レジスタの制御までの手順を概説する。
【００４６】
初めに、半導体集積回路１の中央処理装置（図２において図示せず）は、プログラムカウンタＰＣで指定されるアドレスに従って、そのアドレスに記憶されている命令を記憶装置４０から読み出す。読み出された命令は、命令デコーダ５０に送られ、デコードされる。その際、命令コードが不揮発素子に対する書き込み命令の場合であれば、不揮発レジスタ制御回路３０は、指定された不揮発レジスタに含まれる保持回路が保持するデータを不揮発素子に書き込む。一方、命令コードが不揮発素子に対するロード命令の場合であれば、不揮発レジスタ制御回路３０は、指定された不揮発レジスタに含まれる不揮発素子のデータを保持回路にロードする。
【００４７】
続いて、不揮発レジスタの制御命令の詳細について説明する。
【００４８】
本実施形態に係る半導体集積回路１では、シングルオペランドの命令形式を使用するものとする。図３は、半導体集積回路１が採用する命令形式の一例を示す図である。図３に示す命令は、ａ＋ｂ＋ｃのビット長を持っている（ａ〜ｃは、いずれも整数、以下同じ）。１〜ａビットは、レジスタの指定に使用する。ａ＋１〜ａ＋ｂビットは、アドレッシングモードの指定に使用する。ａ＋ｂ＋１〜ａ＋ｂ＋ｃビットは、命令コードの指定に使用する。
【００４９】
この命令コードに不揮発レジスタの制御命令を追加することで、既存のアーキテクチャを変更することなく、不揮発レジスタを制御することができる。例えば、レジスタ番号４の不揮発レジスタＲ４の書き込みを行う場合には、レジスタの指定ビットはレジスタ番号４を指定するように設定する。アドレッシングモードについては、通常用意されているレジスタを操作するモードと同様に設定する。そして、命令コードに、新規に追加した不揮発レジスタの書き込み命令を設定する。なお、アドレッシングモードは、通常用意されているモードとは異なるものを使用することもできる。
【００５０】
さらに、アドレスＡ１〜Ａｍまでのｍ個の不揮発レジスタをｔ個（但し、ｔは２以上の整数、以下同じ）のグループに分け、あるアドレスを指定すると、そのアドレスの不揮発レジスタが属するグループの不揮発レジスタを同時に制御できるようにしてもよい。例えば、不揮発レジスタＲ１〜Ｒｍが、それぞれ１つのロードイネーブルビットＬＥＢを備え、全ての不揮発レジスタのうち、ロードイネーブルビットＬＥＢが「１」の不揮発レジスタに対してのみロードを行う場合、ロード動作の対象となるグループ数ｔは１、ロードイネーブルビットＬＥＢの数ｄはｍ、ロードイネーブルビットＬＥＢと対応付けられるグループ数ｑもｍとする。そして、レジスタの指定ビットは考慮せず、アドレッシングモードについては不揮発レジスタを操作するモードに設定し、命令コードを設定すればよい。
【００５１】
このように、複数の不揮発レジスタＲ１〜Ｒｍを同時に操作すれば、不揮発レジスタの制御時間を短縮することができる。特許文献２が開示する半導体装置においては、モジュール内の全てのレジスタをロードするため、ロードする必要のない不揮発素子からのロード動作が発生し、無駄な電力が消費されてしまう。しかし、ロードイネーブルビットＬＥＢによってロードする不揮発レジスタを制限することにより、データ復帰に要するオーバーヘッドを抑えつつ、データ復帰に要する電力消費も削減することができる。なお、不揮発レジスタの制御命令として、シングルオペランドの命令形式を使用することができることを説明したが、これに限定する趣旨ではない。
【００５２】
次に、不揮発レジスタを構成する不揮発フリップフロップについて説明する。
【００５３】
図４は、不揮発フリップフロップ６０の回路構成の一例を示す図である。不揮発フリップフロップ６０は、マスタラッチ６１と、スレーブラッチ６２と、を含んで構成される。さらに、スレーブラッチ６２には、不揮発素子６３及び６４が含まれる。
【００５４】
マスタラッチ６１とスレーブラッチ６２は、揮発性データの保持が可能である。不揮発フリップフロップ６０は、スレーブラッチ６２と不揮発素子６３及び６４の間でデータをやり取りする。より具体的には、不揮発フリップフロップ６０は、スレーブラッチ６２に含まれる保持回路のデータを不揮発素子６３及び６４に書き込む機能と、不揮発素子６３及び６４からスレーブラッチ６２へデータをロードする機能を備えている。
【００５５】
マスタラッチ６１は、Ｎチャンネル型ＭＯＳトランジスタＮ０１及びＮ０２と、Ｐチャンネル型ＭＯＳトランジスタＰ０１及びＰ０２と、からなるクロックドインバータ６５と、Ｎチャンネル型ＭＯＳトランジスタＮ０３及びＮ０４と、Ｐチャンネル型ＭＯＳトランジスタＰ０３及びＰ０４と、からなるクロックドインバータ６６と、インバータＩＮＶ０１及びインバータＩＮＶ０２と、から構成される。さらに、インバータＩＮＶ０１と、Ｎチャンネル型ＭＯＳトランジスタＮ０３及びＮ０４と、Ｐチャンネル型ＭＯＳトランジスタＰ０３及びＰ０４と、からなるクロックドインバータ６６によって保持回路６７を構成する。
【００５６】
入力データＤは、クロックドインバータ６５を介してマスタラッチ６１に入力され、保持回路６７でラッチされる。マスタラッチ６１に入力されたデータは、ノードＴ０１で保持され、インバータＩＮＶ０２で反転されたデータがノードＴ０２で保持される。これらのノードＴ０１及びＴ０２で保持するデータは、Ｎチャンネル型ＭＯＳトランジスタＮ０５及びＮ０６を介してスレーブラッチ６２のノードＴ０３及びＴ０４に入力される。
【００５７】
スレーブラッチ６２は、Ｎチャンネル型ＭＯＳトランジスタＮ０７及びＮ０８と、Ｐチャンネル型ＭＯＳトランジスタＰ０５及びＰ０６と、からなる保持回路６８と、Ｎチャンネル型ＭＯＳトランジスタＮ０９〜Ｎ１２からなる書き込み用トランジスタと、ＮＯＲ回路ＮＯＲ０１及びＮＯＲ０２と、Ｎチャンネル型ＭＯＳトランジスタＮ１３と、Ｐチャンネル型ＭＯＳトランジスタＰ０７〜Ｐ０９と、出力用インバータＩＮＶ０３及びＩＮＶ０４と、不揮発素子６３及び６４と、を含む。
【００５８】
Ｎチャンネル型ＭＯＳトランジスタＮ１３は、データの書き込み時以外は、Ｎチャンネル型ＭＯＳトランジスタ０７及びＮ０８を接地する。Ｐチャンネル型ＭＯＳトランジスタＰ０７〜Ｐ０９は、プリチャージ用のトランジスタとして使用する。
【００５９】
不揮発素子６３の一端は、Ｎチャンネル型ＭＯＳトランジスタ０７のソースに接続され、他の一端は、Ｎチャンネル型ＭＯＳトランジスタＮ０９〜Ｎ１２のドレインに共通接続される。不揮発素子６３の一端は、Ｎチャンネル型ＭＯＳトランジスタ０８のソースに接続され、他の一端は、Ｎチャンネル型ＭＯＳトランジスタＮ０９〜Ｎ１２のドレインに共通接続される。Ｎチャンネル型ＭＯＳトランジスタＮ０７及びＮ０８と、Ｐチャンネル型ＭＯＳトランジスタＰ０５及びＰ０６にラッチされた相補のデータはＮＯＲ回路ＮＯＲ０１及びＮＯＲ０２に入力される。
【００６０】
書き込み信号ＷＢは、Ｎチャンネル型ＭＯＳトランジスタＮ１３と、ＮＯＲ回路ＮＯＲ０１とＮＯＲ０２に入力される。ロード信号ＬＢは、Ｐチャンネル型ＭＯＳトランジスタＰ０７〜Ｐ０９のゲートに入力される。インバータＩＮＶ０４が出力する信号をデータ出力Ｑとし、インバータＩＮＶ０３が出力する信号をデータ出力ＱＢとする。クロックＣＬＫは、インバータ（図示せず）により反転されてクロックＰ１としてクロックドインバータ６５及び６６に入力される。さらに、クロックＰ１は、インバータ（図示せず）により反転されてクロックＰ２としてクロックドインバータ６５及び６６に入力される。
【００６１】
ここで不揮発フリップフロップ６０は、本来のフリップフロップとしての機能に加えて、以下の機能を備えている。第１に、スレーブラッチ６２に電気的に記憶しているデータを不揮発素子６３及び６４に書き込む機能を備えている。第２に、不揮発素子６３及び６４に蓄えられているデータを読み出し、そのデータをスレーブラッチ６２で保持する機能を備えている。
【００６２】
不揮発素子６３及び６４には、例えば、磁気抵抗効果を利用した強磁性トンネル接合素子であるＭＴＪ（Ｍａｇｎｅｔｉｃ  Ｔｕｎｎｅｌ  Ｊｕｎｃｔｉｏｎ）素子が考えられる。ここで、ＭＴＪ素子は、磁化方向が変化する強磁性層（フリー層）と、磁化方向が固定された強磁性層（固定層）と、フリー層と固定層の間に形成される絶縁層と、を含んで構成される。
【００６３】
このようなＭＴＪ素子に、膜面垂直方向に電流を流した際の抵抗値は、フリー層と固定層の磁化の方向によって変化する。フリー層の磁化と固定層の磁化が平行の場合には、抵抗値は低下する。一方、フリー層の磁化と固定層の磁化が反平行の場合には、抵抗値は上昇する。このような性質を利用し、ＭＴＪ素子では、この抵抗値、又は、フリー層の磁化の方向に、論理データを対応付ける。例えば、低抵抗な状態を論理値「０」、高抵抗な状態を論理値「１」と対応付ける。ＭＴＪ素子の書き込みは、電流磁界を用いてフリー層の磁化方向を制御する磁場書き込み方式と、スピントルク効果を利用してフリー層の磁化方向を制御するスピントルク書き込み方式と、が存在する。
【００６４】
図５は、不揮発素子として、スピントルク効果を利用して書き込みを行う磁壁移動素子の素子近傍の断面図である。なお、不揮発素子６３及び６４に接続されるトランジスタについては、理解を容易にするため回路記号で示している。
【００６５】
不揮発素子６３及び６４は、半導体基板を基準にして、メタル層７０、第１ハード層７１又は第２ハード層７２、フリー層７３、絶縁層７４、リファレンス層７５の順に積層され構成されている。
【００６６】
不揮発素子６３に関する接続は、リファレンス層７５はＮチャンネル型ＭＯＳトランジスタＮ０７に、第１ハード層７１はＮチャンネル型ＭＯＳトランジスタＮ０９とＮ１０に、第２ハード層７２は不揮発素子６４の第１ハード層７１を介して、Ｎチャンネル型ＭＯＳトランジスタＮ１１及びＮ１２に接続される。フリー層７３、第１ハード層７１及び第２ハード層７２には、例えば、垂直磁気異方性を有する磁性薄膜を利用することができる。第１ハード層７１と第２ハード層７２の磁化方向は逆向きに固定されている。フリー層７３の磁化は、スピン偏極電流の向きによって、図５のＺ方向に沿って、上下に制御可能である。より具体的には、第１ハード層７１から第２ハード層７２に向かって電流を流した場合、偏極した電子は逆向きに流れ、第２ハード層７２と同じ向きにフリー層７３は揃う。逆に、第２ハード層７２から第１ハード層７１に向かって電流を流した場合、第１ハード層７１と同じ向きにフリー層は揃う。
【００６７】
図６は、半導体集積回路１に含まれる不揮発レジスタＲ１〜Ｒｍとその制御回路である不揮発レジスタ制御回路３０の接続の一例を示す図である。
【００６８】
本実施形態に係る半導体集積回路１では、ｎ個の不揮発レジスタ毎にアドレスを付与している。例えば、１６ビットのワード単位（ｎ＝１６）、８ビットのバイト単位（ｎ＝８）などである。不揮発レジスタのアドレスは、アドレスＡ１〜Ａｍのｍ個である。
【００６９】
半導体集積回路１では、アドレスを指定すると、指定されたアドレスに対応付けられたｎ個の不揮発レジスタを同時に制御できるものとする。若しくは、あるアドレスを指定すると、あるアドレス領域の複数の不揮発レジスタを同時に制御できるようにしてもよい。
【００７０】
不揮発レジスタ制御回路３０は、システムのクロックＣＬＫ＿ＳＹＳと、レジスタのアドレスＡ＿ＲＥＧと、レジスタの揮発性データの書き込み信号ＷＥ＿ＲＥＧと、レジスタへの入力データＤ＿ＲＥＧと、不揮発素子６３及び６４への書き込み信号ＮＶＷＥ＿ＲＥＧと、不揮発素子６３及び６４からのロード信号ＮＶＬＥ＿ＲＥＧと、ロードイネーブルビットＬＥＢを受け付ける。これらの制御信号を供給するのは、ロードイネーブルレジスタ２０及び命令デコーダ５０である。
【００７１】
不揮発レジスタ制御回路３０は、受け取った制御信号に応じて、各不揮発レジスタに対し、不揮発レジスタ制御信号を出力する。例えば、アドレスＡ１に対応する不揮発レジスタＲ１に供給する不揮発レジスタ制御信号は、クロックＣＬＫ＿ＲＥＧ（Ａ１）と、入力データＤ＿ＲＥＧ（Ａ１）と、ロード信号ＬＢ＿ＲＥＧ（Ａ１）と、書き込み信号ＷＢ＿ＲＥＧ（Ａ１）と、が含まれる。これらの制御信号を受け取った不揮発レジスタＲ１は、データ出力Ｑ＿ＲＥＧ（Ａ１）を出力する。アドレスＡ２〜Ａｍに対応する不揮発レジスタＲ２〜Ｒｍも同様の動作を行う。なお、図６においては、不揮発レジスタに含まれる不揮発フリップフロップのうち、１つの不揮発フリップフロップ（例えば、ｎビット目の不揮発フリップフロップ）を代表して記載している。
【００７２】
次に、図４を参照しつつ、不揮発レジスタに対する書き込み動作について概説する。
【００７３】
半導体集積回路１の書き込み動作時には、書き込み信号ＷＢがＬレベルに設定される。その際、不揮発素子への書き込みデータはスレーブラッチ６２のデータ出力Ｑに一致する。データ出力Ｑが「０」の場合には、Ｎチャンネル型ＭＯＳトランジスタＮ１０及びＮ１１がオン、Ｎチャンネル型ＭＯＳトランジスタＮ０９及びＮ１２はオフになる。このとき、ノードＴ０６からノードＴ０５へ書き込み電流が流れる。これにより、不揮発素子６３は低抵抗状態、不揮発素子６４は高抵抗状態になり、データ出力Ｑと対応したデータ「０」を不揮発素子６３及び６４は記憶する。
【００７４】
一方、データ出力Ｑが「１」の場合、Ｎチャンネル型ＭＯＳトランジスタＮ１０及びＮ１１がオフ、Ｎチャンネル型ＭＯＳトランジスタＮ０９とＮ１２がオンになる。この場合には、ノードＴ０５からＴ０６に向けて書き込み電流が流れる。その結果、不揮発素子６３は高抵抗状態、不揮発素子６４は低抵抗状態になり、データ出力Ｑに対応したデータ「１」を不揮発素子は記憶する。
【００７５】
続いて、図４を参照しつつ、不揮発レジスタからのロード動作について概説する
【００７６】
半導体集積回路１のロード動作時には、ロード信号ＬＢがＬレベルに設定される。また、クロックＣＬＫはＬレベルである。すると、Ｐチャンネル型ＭＯＳトランジスタＰ０７〜Ｐ０９はオンとなり、ノードＴ０３及びＴ０４はＨレベルになる。その結果、Ｎチャンネル型ＭＯＳトランジスタＮ０７を介して不揮発素子６３に読み出し電流が流れる。また、Ｎチャンネル型ＭＯＳトランジスタＮ０８を介して、不揮発素子６４にも読み出し電流が流れる。これらの読み出し電流の電流値の差に応じて、ノードＴ０３及びＴ０４には微小な電位差が生じる。
【００７７】
そして、ロード信号ＬＢがＨレベルに設定されると、その電位差が増幅される。その際、不揮発素子６３及び６４に記憶しているデータが「０」である場合には、不揮発素子６３は低抵抗状態、不揮発素子６４は高抵抗状態のため、ノードＴ０３はＬレベル、ノードＴ０４はＨレベルになる。その結果、データ出力Ｑは不揮発素子のデータに対応し、「０」を出力する。一方、不揮発素子６３及び６４に記憶しているデータが「１」である場合には、不揮発素子６３は高抵抗状態、不揮発素子６４は低抵抗状態のため、ノードＴ０３はＨレベル、ノードＴ０４はＬレベルになる。その結果、データ出力Ｑは、不揮発素子のデータに対応し、「１」を出力する。
【００７８】
次に、半導体集積回路１において、命令コードが不揮発素子の書き込み命令である場合の詳細について説明する。
【００７９】
図７は、命令コードが不揮発素子の書き込み命令である場合の動作波形の一例である。
【００８０】
時刻Ｔ１において、半導体集積回路１に含まれる中央処理装置は、記憶装置４０へアドレスＡ＿ＲＡＭとして、プログラムカウンタＰＣの値であるＰＣ１を出力する。
【００８１】
時刻Ｔ２において、中央処理装置は、記憶装置４０から、アドレスＡ＿ＲＡＭに対応するデータＲＤ＿ＲＡＭとして、命令ＯＰ１を受け取る。なお、命令ＯＰ１は、図３に示す命令形式であり、命令コードは不揮発素子の書き込み命令のコードとする。また、アドレッシングモードはシングルオペランド形式であり、アドレスＡ１のレジスタを指定するものとする。
【００８２】
時刻Ｔ３おいて、中央処理装置に含まれる命令デコーダ５０は、命令ＯＰ１をデコードし、レジスタのアドレスＡ＿ＲＥＧとして、アドレスＡ１を出力する。
【００８３】
時刻Ｔ４において、命令デコーダ５０は、命令ＯＰ１をデコードし、不揮発素子の書き込み信号ＮＶＷＥ＿ＲＥＧを不揮発レジスタ制御回路３０に出力し、時刻Ｔ５に出力を終了する。
【００８４】
不揮発レジスタ制御回路３０は、時刻Ｔ６からＴ８までの間、選択されたアドレスＡ１のレジスタの書き込み信号ＷＢ＿ＲＥＧ（Ａ１）をＬレベルに設定し、不揮発レジスタＲ１に書き込み電流を流す。
【００８５】
時刻Ｔ７において、アドレスＡ１に対応した不揮発レジスタＲ１における不揮発素子は、保持していたデータ出力Ｑ＿ＲＥＧ（Ａ１）に対応した値Ｒａ１（抵抗値Ｒ＿ＲＥＧ（Ａ１））に書き換わる。
【００８６】
次のクロックサイクルでは、アドレスＡ２に対応した不揮発レジスタＲ２における不揮発素子の書き込みが行われる動作波形を示しており、アドレスＡ１と同様の一連の過程で書き込みが行われる。ここで、図７に示すように、不揮発素子への書き込みを行う期間（Ｔ６〜Ｔ８）は、次の命令を記憶装置４０から読み出すサイクルの始まる時刻Ｔａより後であってもよい。不揮発素子への書き込みは、不揮発レジスタの出力を変化させずに行えるため、次の命令の読み出し動作を妨げることはないからである。このようにパイプライン的な動作を行うことで、不揮発素子への書き込みに対する十分なセットアップ時間を確保できると同時に、短い時間で複数の命令を実行することができる。
【００８７】
続いて、半導体集積回路１において、命令コードが不揮発素子のロード命令である場合の詳細について説明する。
【００８８】
図８は、命令コードが不揮発素子のロード命令である場合の動作波形の一例である。
【００８９】
時刻Ｔ１において、半導体集積回路１に含まれる中央処理装置は、記憶装置４０へアドレスＡ＿ＲＡＭとして、プログラムカウンタＰＣの値であるＰＣ１を出力する。
【００９０】
時刻Ｔ２において、中央処理装置は、記憶装置４０から、アドレスＡ＿ＲＡＭに対応するデータＲＤ＿ＲＡＭとして、命令ＯＰ１を受け取る。なお、命令ＯＰ１は、図３に示す命令形式であり、命令コードは不揮発素子の書き込み命令のコードとする。また、アドレッシングモードはシングルオペランド形式であり、アドレスＡ１のレジスタを指定するものとする。
【００９１】
以下、アドレスＡ１に対応したロードイネーブルビットＬＥＢはすでにロードされており、かつ、その値は「１」とし、アドレスＡ１に対応した不揮発レジスタＲ１のロードが行われる場合の動作を示す。
【００９２】
時刻Ｔ３おいて、命令デコーダ５０は、命令ＯＰ１をデコードして、レジスタのアドレスＡ＿ＲＥＧとして、アドレスＡ１を出力する。
【００９３】
時刻Ｔ４において、命令デコーダ５０は、命令ＯＰ１をデコードし、不揮発素子のロード信号ＮＶＬＥ＿ＲＥＧを不揮発レジスタ制御回路３０に出力し、時刻Ｔ５に出力を終了する。
【００９４】
不揮発レジスタ制御回路３０は、時刻Ｔ６からＴ７までの間、選択されたアドレスＡ１のレジスタのロード信号ＬＢ＿ＲＥＧ（Ａ１）をＬレベルに設定し、不揮発レジスタのロード動作を行う。
【００９５】
時刻Ｔ８において、アドレスＡ１に対応した不揮発レジスタＲ１のデータ出力Ｑ＿ＲＥＧ（Ａ１）は、不揮発素子が保持する値Ｒａ１（抵抗値Ｒ＿ＲＥＧ（Ａ１））に対応した値Ｄ１に書き換わる。
【００９６】
以上のように、本実施形態に係る半導体集積回路１は、ロジック素子と不揮発素子を一体化した不揮発レジスタを備えている。そのため、半導体集積回路１の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。さらに、ロードイネーブルビットＬＥＢを利用することで、意図したレジスタに限りロードを行うことができる。これにより、ロードを行う不揮発素子の素子数を減らすことができ、ロードに要する消費電力が低減できる。
【００９７】
［第２の実施形態］
続いて、第２の実施形態について図面を参照して詳細に説明する。
【００９８】
図９は、本実施形態に係る半導体集積回路２の内部構成の一例を示す図である。図９において図２と同一構成要素には、同一の符号を付し、その説明を省略する。半導体集積回路１及び２の相違点は、記憶装置４０と命令デコーダ５０に代えて、電源制御回路８０が制御信号を供給する点である。
【００９９】
本実施形態に係る半導体集積回路２は、半導体集積回路１のように記憶装置４０に書き込まれたプログラム（ソフトウェア）による不揮発レジスタの制御を行わない。半導体集積回路２は、電源制御回路８０のようなハードウェアによる不揮発レジスタの制御の場合においても、ロードイネーブルビットＬＥＢを用いることで電力消費を抑制する。
【０１００】
図１０は、半導体集積回路２に含まれる不揮発レジスタＲ１〜Ｒｍとその制御回路である不揮発レジスタ制御回路３０ａの接続の一例を示す図である。図１０において図６と同一構成要素には、同一の符号を付し、その説明を省略する。図１０と図６の相違点は、命令デコーダ５０から送られてくる書き込み信号ＮＶＷＥ＿ＲＥＧと、不揮発素子からのロード信号ＮＶＬＥ＿ＲＥＧが削除されている点と、電源制御回路８０から送られてくる書き込み信号ＮＶＷＥ＿ＰＷＲと、不揮発素子からのロード信号ＮＶＬＥ＿ＰＷＲが追加されている点である。
【０１０１】
ｍ個の不揮発レジスタはｑ個のグループＧ１〜Ｇｑに分割され、それぞれのグループはロードイネーブルビットＬＥＢ１〜ＬＥＢｄのうちの１つのロードイネーブルビットＬＥＢと１対１に対応付けられるか、又は、対応するロードイネーブルビットが存在しない。
【０１０２】
ロードイネーブルビットＬＥＢは、半導体集積回路２に電源が供給された直後に不揮発レジスタ制御回路３０にロードされる（不揮発レジスタＲ１〜Ｒｍのロードの前にロードされる）。従って、不揮発レジスタ制御回路３０ａは、不揮発レジスタＲ１〜Ｒｍに先立ち、このロードイネーブルビットＬＥＢの参照が可能である。
【０１０３】
さらに、ｍ個の不揮発レジスタは、ｔ個のグループＧ１〜Ｇｔに分割される。また、不揮発レジスタ制御回路３０ａは、ｓ（但し、ｓは２以上の整数、以下同じ）個のロード信号ＮＶＬＥ＿ＰＷＲ１〜ＮＶＬＥ＿ＰＷＲｓを受け付け可能である。それぞれの不揮発レジスタのグループは、ロード信号ＮＶＬＥ＿ＰＷＲ１〜ＮＶＬＥ＿ＰＷＲｓのうちの１つのロード信号ＮＶＬＥ＿ＰＷＲと１対１に対応付けられるか、又は、対応するロード信号ＮＶＬＥ＿ＰＷＲが存在しない。
【０１０４】
不揮発レジスタ制御回路３０ａは、電源復帰後、電源制御回路８０から供給されたｓ個のロード信号ＮＶＬＥ＿ＰＷＲに基づき、活性化されたロード信号に対応したグループに属する全ての不揮発レジスタを指定する。不揮発レジスタ制御回路３０ａは、この指定された不揮発レジスタを含むグループのロードイネーブルビットＬＥＢを参照する。参照したロードイネーブルビットＬＥＢの値が「１」の場合には、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路へロードする。参照したロードイネーブルビットＬＥＢの値が「０」の場合には、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路にロードしない。対応するロードイネーブルビットＬＥＢが存在しない場合には、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路にロードするか否かを、予め不揮発レジスタ制御回路３０に固定的に設定しておく。
【０１０５】
書き込み時も同様に、ｍ個の不揮発レジスタは、ｔ個のグループＧ１〜Ｇｔに分割される。また、不揮発レジスタ制御回路３０ａは、ｓ個の書き込み信号ＮＶＷＥ＿ＰＷＲ１〜ＮＶＷＥ＿ＰＷＲｓを受け付ける。それぞれの不揮発レジスタのグループは、書き込み信号ＮＶＷＥ＿ＰＷＲ１〜ＮＶＷＥ＿ＰＷＲｓのうち、１つの書き込み信号ＮＶＷＥ＿ＰＷＲと１対１に対応付けられるか、又は、対応する書き込み信号が存在しない。
【０１０６】
不揮発レジスタ制御回路３０ａは、半導体集積回路２に供給されている電源が遮断される前に、電源制御回路８０から受け付けたｓ個の書き込み信号ＮＶＷＥ＿ＰＷＲに基づき、活性化された書き込み信号ＮＶＷＥ＿ＰＷＲに対応したグループに属する全ての不揮発レジスタを指定する。指定された不揮発レジスタに含まれる保持回路のデータは不揮発素子に書き込まれる。
【０１０７】
なお、本実施形態に係る半導体集積回路２において、不揮発レジスタＲ１〜Ｒｍは必ずしもアドレスに対応付けされていなくてもよい。上述のように、グループ単位での書き込み信号、又は、読み出し信号が与えられるためである。
【０１０８】
本実施形態に係る半導体集積回路２においても、電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。さらに、中央処理装置（プログラム）による制御ではなく、電源制御回路８０（ハードウェア）を使用することで、記憶装置４０からの命令フェッチに起因する遅延時間、及び、電力消費の削減効果をより高めることができる。
【０１０９】
また、プログラムによる制御ではないため、記憶装置４０における該当プログラムの領域を削減することができる（プログラムサイズが縮小する）。
【０１１０】
［第３の実施形態］
続いて、第３の実施形態について図面を参照して詳細に説明する。
【０１１１】
本実施形態に係る半導体集積回路３は、半導体集積回路１とはシステム起動時の動作が異なる。従って、半導体集積回路３について、図２〜図６に相当する説明は省略する。
【０１１２】
半導体集積回路３は、ロード用分岐フラグを使用する。ロード用分岐フラグは、システム復帰時の動作モードを選択するために使用される。さらに、ロード用分岐フラグは不揮発レジスタにより保持され、そのデータは、電源遮断に先立ち、予め不揮発素子に書き込まれる。なお、ロード用分岐フラグを記憶する不揮発レジスタは、他の不揮発レジスタと同様に、不揮発レジスタ制御回路３０により制御することが可能である。
【０１１３】
図１１は、半導体集積回路３のシステム起動時の動作の一例を示すフローチャートである。
【０１１４】
ステップＳ０１において、電源供給に先立ちシステムがリセットされる。
【０１１５】
ステップＳ０２において、ロード用分岐フラグを記憶する不揮発レジスタからロード用分岐フラグに相当するデータをロードする。
【０１１６】
ステップＳ０３において、ロード用分岐フラグが「１」であるか否かを判断する。ロード用分岐フラグが「０」である場合には、ステップＳ０４に遷移する。ロード用分岐フラグが「１」である場合には、ステップＳ０５に遷移する。
【０１１７】
ステップＳ０４において、不揮発レジスタのロード動作を含まないデフォルトのシステムの起動を行う。
【０１１８】
ステップＳ０５において、不揮発レジスタのロード動作を含むシステムの起動を行う。
【０１１９】
上述の不揮発レジスタのロード動作を含むシステムの起動は、第１の実施形態において開示したロードイネーブルビットＬＥＢや命令コードによるアドレス指定を利用できる。これにより、意図したレジスタのみをロードすることができる。
【０１２０】
なお、電源のオン・オフをする単位は、半導体集積回路３の全体である場合に限られず、半導体集積回路３を構成するモジュール単位であってもよい。モジュール単位である場合には、あるモジュールに電源供給された後のリセットは、そのモジュールのみに限定されてもよい。
【０１２１】
以上のように、本実施形態に係る半導体集積回路３は、ロジック素子と不揮発素子を一体化した不揮発レジスタを備えている。そのため、半導体集積回路３の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。
【０１２２】
さらに、電源をオンする際に、常に電源をオフの前の状態に復帰する必要はなく、より柔軟に意図した状態にすぐに復帰できる。また、ロード用分岐フラグは不揮発レジスタに記憶されているため、記憶装置４０にロード用分岐フラグを記憶する場合と比較すると、記憶装置４０からのロード用分岐フラグの転送が不要ある。そのため、データ転送に要する遅延時間と消費電力を低減できると共に、ロード用分岐フラグを利用するための制御（手続き）がより簡便になる。
【０１２３】
また、ロードイネーブルビットＬＥＢやロード命令と組み合わせることで、意図したシステムの状態とリセット状態の差分のデータのみをロードすることが可能であり、不揮発素子のロードに要する消費電力を低減できる。
【０１２４】
［第４の実施形態］
続いて、第４の実施形態について図面を参照して詳細に説明する。
【０１２５】
本実施形態に係る半導体集積回路４は、半導体集積回路１とはシステム起動時の動作が異なる。従って、半導体集積回路４について、図２〜図６に相当する説明は省略する。
【０１２６】
半導体集積回路４の不揮発レジスタは、プログラムカウンタＰＣのデータを記憶する。プログラムカウンタＰＣは、次に実行すべき命令が記憶されている記憶装置４０のアドレス情報である。半導体集積回路４は、その電源が遮断される前に、次回復帰したときに開始したいプログラムカウンタＰＣの値を不揮発素子に書き込む。
【０１２７】
図１２は、半導体集積回路４のシステム起動時の動作の一例を示すフローチャートである。
【０１２８】
ステップＳ１１において、電源供給に先立ちシステムがリセットされる。
【０１２９】
ステップＳ１２において、プログラムカウンタＰＣの値を記憶する不揮発レジスタにおいて、不揮発素子のプログラムカウンタＰＣのデータを保持回路へロードする。
【０１３０】
ステップＳ１３において、ロードされたプログラムカウンタＰＣの値がデフォルト値か否かを判断する。デフォルト値である場合には、ステップＳ１４に遷移する。デフォルト値でない場合には、ステップＳ１５に遷移する。
【０１３１】
ステップＳ１４では、不揮発レジスタのロード動作を含まないデフォルトのシステムの起動を行う。
【０１３２】
ステップＳ１５では、不揮発レジスタのロード動作を含むシステムの起動を行う。その際、第１の実施形態において説明したロードイネーブルビットＬＥＢや命令コードによるアドレス指定を行う。これにより、意図したレジスタのみをロードすることができる。
【０１３３】
なお、本実施形態における説明では、ロードイネーブルビットを用いる場合について説明したが、必ずしも、ロードイネーブルビットを備えている必要はない。さらに、電源のオン・オフをする単位は、半導体集積回路４の全体である場合に限られず、半導体集積回路４を構成するモジュール単位であってもよい。モジュール単位である場合には、あるモジュールに電源供給された後のリセットは、そのモジュールのみに限定されてもよい。
【０１３４】
本実施形態に係る半導体集積回路４においても、ロードイネーブルビットＬＥＢやロード命令と組み合わせることで、意図したシステムの状態とリセット状態の差分のデータのみをロードすることが可能であり、不揮発素子のロードに要する消費電力を低減できる。
【０１３５】
［第５の実施形態］
続いて、第５の実施形態について図面を参照して詳細に説明する。
【０１３６】
第４の実施形態においてプログラムカウンタＰＣを不揮発レジスタに記憶する半導体集積回路４について説明した。本実施形態においては、プログラムカウンタＰＣの値を不揮発素子へ書き込む際に注意しなければならない点について説明する。
【０１３７】
ここで、図４において説明した不揮発フリップフロップ６０は、スレーブラッチ６２のデータを不揮発素子６３及び６４に書き込むことができる。その際、電源遮断から復帰した際に開始したいプログラムカウンタＰＣの値が、スレーブラッチ６２が記憶している値と同一である場合には問題ない。しかし、次回復帰した際に開始したいプログラムカウンタＰＣの値が、スレーブラッチ６２が記憶している値と異なる場合に問題が発生する。即ち、不揮発素子６３及び６４に次回復帰したときのアドレスを書き込むと、スレーブラッチ６２が保持する値が更新されてしまう。このとき、次のサイクルでアクセスするはずのアドレスではなく、電源遮断からの復帰後に開始したいアドレスにアクセスしてしまうことになる。
【０１３８】
この問題を解決するために、スレーブラッチ６２のデータを更新せず直接、不揮発素子のデータを書き込める手段を不揮発フリップフロップ６０に追加することが考えられる。本実施形態に係る半導体集積回路５は、このような対策を施した不揮発フリップフロップ６０ａを備えている。
【０１３９】
図１３は、不揮発フリップフロップ６０ａの回路構成の一例を示す図である。図１３において図４と同一構成要素には、同一の符号を付し、その説明を省略する。不揮発フリップフロップ６０と６０ａでは、書き込み用のトランジスタであるＮチャンネル型ＭＯＳトランジスタＮ０９〜Ｎ１２を制御する周辺回路が異なっている。
【０１４０】
具体的には、マルチプレクサＭＵＸ０１及び０２が追加され、書き込み信号ＷＢ１とＷＢ２に従い、書き込むデータとして、スレーブラッチ６２ａのデータと入力データＤのいずれを採用するか選択できるようになっている。
【０１４１】
不揮発フリップフロップ６０ａは、２つの書き込み信号ＷＢ１とＷＢ２と、１つの入力データＤを受け付ける。書き込み信号ＷＢ１が活性化された場合には、保持回路６８のデータを不揮発素子６３及び６４に書き込む。書き込み信号ＷＢ２が活性化された場合には、入力データＤのデータを不揮発素子６３及び６４に書き込み、かつ、保持回路６８のデータは変更しない。なお、入力データＤを不揮発素子６３及び６４に書き込む際には、クロックＣＬＫはＬレベルとする。これにより、入力データＤを、スレーブラッチ６２ａのデータは変更せずに、不揮発素子６３及び６４に書き込むことができる。
【０１４２】
図１４は、半導体集積回路５に含まれる不揮発レジスタＲ１〜Ｒｍとその制御回路である不揮発レジスタ制御回路３０ｂの接続の一例を示す図である。図６と図１４の相違点は、不揮発レジスタ制御回路３０ｂは、２つの不揮発素子書き込み信号ＮＶＷＥ１＿ＲＥＧ及びＮＶＷＥ２＿ＲＥＧを受け付ける点である。また、不揮発レジスタ制御回路３０ｂは、アドレスＡ１に対応する不揮発レジスタＲ１へ２つの不揮発素子書き込み信号ＷＢ１＿ＲＥＧ（Ａ１）及びＷＢ２＿ＲＥＧ（Ａ１）を出力する。アドレスＡ２〜Ａｍに対応する不揮発レジスタＲ２〜Ｒｍについても同様である。
【０１４３】
半導体集積回路５では、不揮発素子書き込み信号ＮＶＷＥ１＿ＲＥＧを活性化することにより、選択した不揮発レジスタのスレーブラッチのデータを不揮発素子に書き込む。一方、不揮発素子書き込み信号ＮＶＷＥ２＿ＲＥＧを活性化することにより、入力データＤ＿ＲＥＧを不揮発素子へ書き込む。図１３に示す不揮発フリップフロップ６０ａは、２つのデータを選択して、いずれかのデータを書き込むことができる。しかし、図６と図１３を比較すると、書き込みデータの配線は追加されていない。従って、配線が占める面積のオーバーヘッドを抑えることができる。
【０１４４】
なお、図１４においては、全ての不揮発フリップフロップを不揮発フリップフロップ６０ａとしたが、第１の実施形態において説明した不揮発フリップフロップ６０と不揮発フリップフロップ６０ａをある割合で混合して使用してもよい。
【０１４５】
さらに、本実施形態に係る不揮発フリップフロップ６０ａは、プログラムカウンタＰＣ以外にも、スレーブラッチのデータによる変更を意図しないレジスタに適用することができる。
【０１４６】
以上のように、本実施形態に係る半導体集積回路５は、ロジック素子と不揮発素子を一体化した不揮発レジスタを備えている。そのため、半導体集積回路５の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。
【０１４７】
さらに、不揮発フリップフロップ６０ａの保持回路のデータと不揮発素子のデータをそれぞれ独立に書き込むことができるため、保持回路に記憶されているシステムの内部状態を変更せずに、電源が遮断されている状態から復帰したときに開始したいプログラムカウンタＰＣの値や、他の不揮発レジスタの値を不揮発素子へ書き込むことができる。その結果、より柔軟に意図した状態に復帰可能である。
【０１４８】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。例えば、本書では中央処理装置内のレジスタを中心に説明したが、周辺モジュール内のレジスタにも容易に拡張することができる。また、各実施形態においては、各レジスタにはアドレスが与えられるとしたが、アドレスが与えられないレジスタに対しても不揮発素子の書き込みと読み出しを適用することができる。即ち、アドレスが与えられていないため、プログラムから直接、保持回路のデータを読み書きできなくとも、上述のあるグループに属することができるため、不揮発素子の書き込みと読み出しを実行することができる。本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１４９】
１〜５、１００  半導体集積回路
１０  不揮発レジスタ群
２０  ロードイネーブルレジスタ
３０、３０ａ、３０ｂ、１０５  不揮発レジスタ制御回路
４０  記憶装置
５０  命令デコーダ
６０、６０ａ  不揮発フリップフロップ
６１  マスタラッチ
６２、６２ａ  スレーブラッチ
６３、６４、１０２  不揮発素子
６５、６６  クロックドインバータ
６７、６８、１０１  保持回路
７０  メタル層
７１  第１ハード層
７２  第２ハード層
７３  フリー層
７４  絶縁層
７５  リファレンス層
８０  電源制御回路
１０３  第１の不揮発レジスタ
１０４  第２の不揮発レジスタ
【図１】
0005999097.tif 000002
【図２】
0005999097.tif 000003
【図３】
0005999097.tif 000004
【図４】
0005999097.tif 000005
【図５】
0005999097.tif 000006
【図６】
0005999097.tif 000007
【図７】
0005999097.tif 000008
【図８】
0005999097.tif 000009
【図９】
0005999097.tif 000010
【図１０】
0005999097.tif 000011
【図１１】
0005999097.tif 000012
【図１２】
0005999097.tif 000013
【図１３】
0005999097.tif 000014
【図１４】
0005999097.tif 000015