(58)【調査した分野】(Int.Cl.,DB名)
前記複数の第1の不揮発レジスタは複数のグループに分割され、それぞれのグループは、前記ロードイネーブルビットと対応付けられているか、又は、対応付けられていないか、のいずれかであって、
前記不揮発レジスタ制御回路は、前記ロードイネーブルビットが指定するグループに属する第1の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードする請求項1の半導体集積回路。
前記ロードイネーブルビットに対応付けられていないグループに属する第1の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードするか否かは予め定められた規則に従う請求項2の半導体集積回路。
前記不揮発レジスタ制御回路は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含まないシステム起動、又は、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含むシステム起動、のいずれかを行う請求項1乃至5のいずれか一に記載の半導体集積回路。
前記第2の工程は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードせずにシステムを起動する工程、又は、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードしてシステムを起動する工程、のいずれかを含む請求項9の半導体集積回路の制御方法。
【発明を実施するための形態】
【0015】
初めに、
図1を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載は何らの限定を意図するものではない。
【0016】
上述のように、メモリ素子とロジック素子が分離して配置されることによって、電源が遮断されている状態からの復帰に際し、データ転送遅延、及びデータを転送する配線や回路の電力消費が増加する。そのため、半導体集積回路の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制した半導体集積回路及びその制御方法が、望まれる。
【0017】
そこで、一例として
図1に示す半導体集積回路100を提供する。
図1に示す半導体集積回路100は、揮発性データを保持する保持回路101と、不揮発性データの保持が可能な不揮発素子102と、を含む複数の第1の不揮発レジスタ103と、複数の第1の不揮発レジスタ103のうち、いずれの第1の不揮発レジスタ103からデータをロードするかを定めるロードイネーブルビットを保持する第2の不揮発レジスタ104と、外部から電源供給がなされた際に、第2の不揮発レジスタ104からロードしたロードイネーブルビットが指定する第1の不揮発レジスタ103に含まれる不揮発素子102が保持するデータを、保持回路101にロードする不揮発レジスタ制御回路105と、を備える。
【0018】
半導体集積回路100に含まれる第1の不揮発レジスタ103は、ロジック素子である保持回路101と、メモリ素子である不揮発素子102が一体化されて構成されている。ロジック素子とメモリ素子が一体化されているために、遮断されていた電源が復帰する前のデータ転送遅延が防止でき、データ転送に使用する配線や回路の電力消費を削減することができる。さらに、データのロードを行う不揮発素子102の数を限定(ロードイネーブルビットにより指定)することで、データ復帰に要する電力を低減すると共に、意図した復帰後の状態に迅速に復帰することができる。
【0020】
[形態1]上記第1の視点に係る半導体集積回路のとおりである。
【0021】
[形態2]前記複数の第1の不揮発レジスタは複数のグループに分割され、それぞれのグループは、前記ロードイネーブルビットと対応付けられているか、又は、対応付けられていないか、のいずれかであって、前記不揮発レジスタ制御回路は、前記ロードイネーブルビットが指定するグループに属する第1の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードすることが好ましい。
【0022】
[形態3]前記半導体集積回路は、前記ロードイネーブルビットに対応付けられていないグループに属する第1の不揮発レジスタに含まれる不揮発素子が保持するデータを、前記保持回路にロードするか否かは予め定められた規則に従うことが好ましい。
【0023】
[形態4]前記半導体集積回路は、中央処理装置に対する命令をデコードする命令デコーダと、前記命令を記憶する記憶装置と、を備え、前記複数の第1の不揮発レジスタはそれぞれアドレスが付与されと共に、複数のグループに分割されており、前記命令には、前記複数の第1の不揮発レジスタに対応するアドレスを指定するアドレスビットと、前記複数の第1の不揮発レジスタからデータのロードを指示するロードビットと、が含まれ、前記不揮発レジスタ制御回路は、前記命令デコーダが前記記憶装置から読み出した命令をデコードした結果、前記アドレスビットが指定する第1の不揮発レジスタと同一のグループに属する第1の不揮発レジスタであって、対応する前記ロードビットが活性化されている第1の不揮発レジスタのデータのロードを行うことが好ましい。
【0024】
[形態5]前記複数の第1の不揮発レジスタは、複数のグループに分割され、前記複数の第1の不揮発レジスタが属するいずれのグループを活性化するか否かを定める複数のロード信号の供給が可能である電源制御回路を備え、前記不揮発レジスタ制御回路は、前記電源制御回路が供給するロード信号に対応したグループに属する第1の不揮発レジスタであって、対応する前記ロードイネーブルビットが活性化されている第1の不揮発レジスタのデータのロードを行うことが好ましい。
【0025】
[形態6]前記不揮発レジスタ制御回路は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含まないシステム起動、又は、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含むシステム起動、のいずれかを行うことが好ましい。
【0026】
[形態7]前記複数の第1の不揮発レジスタのいずれかにおいて、プログラムカウンタに関するデータを保持し、前記不揮発レジスタ制御回路は、外部から電源供給がなされた際に、前記プログラムカウンタを記憶する不揮発レジスタに含まれる不揮発素子から前記保持回路にデータをロードし、前記プログラムカウンタの値に基づいて、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含まないシステム起動、又は、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードする動作を含むシステム起動、のいずれかを行うことが好ましい。
【0027】
[形態8]前記複数の不揮発レジスタは、第1及び第2の書き込み信号と、1つのデータ入力と、を受け付け、前記第1の書き込み信号が活性化された場合には、前記保持回路のデータを前記不揮発素子へ書き込み、前記第2の書き込み信号が活性化された場合には、前記データ入力を前記不揮発素子へ書き込みつつ、前記保持回路が保持するデータの変更を行わないことが好ましい。
【0028】
[形態9]上記第2の視点に係る半導体集積回路の制御方法のとおりである。
【0029】
[形態10]前記第2の工程は、外部から電源供給がなされた際に、ロード用分岐フラグに基づいて、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードせずにシステムを起動する工程、又は、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードしてシステムを起動する工程、のいずれかを含むことが好ましい。
【0030】
[形態11]前記第2の工程は、外部から電源供給がなされた際に、プログラムカウンタを前記第1の不揮発レジスタに含まれる前記保持回路にロードする工程と、前記プログラムカウンタの値に基づいて、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードせずにシステムを起動する工程、又は、前記第1の不揮発レジスタに含まれる不揮発素子が保持するデータを前記保持回路にロードしてシステムを起動する工程、のいずれかを含むことが好ましい。
【0031】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【0032】
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
【0033】
図2は、第1の実施形態に係る半導体集積回路1の内部構成の一例を示す図である。なお、
図2では、説明の簡略化のため電源遮断からの復帰に関連するモジュールを記載している。
【0034】
半導体集積回路1は、不揮発レジスタ群10と、ロードイネーブルレジスタ20と、不揮発レジスタ制御回路30と、記憶装置40と、命令デコーダ50から構成されている。
【0035】
不揮発レジスタ群10には、複数の不揮発レジスタR1〜Rm(但し、mは2以上の整数、以下同じ)が含まれている。さらに、各不揮発レジスタは、nビットの情報が保持可能である(但し、nは2以上の整数、以下同じ)。各不揮発レジスタは複数の不揮発フリップフロップから構成され、1つの不揮発フリップフロップで1ビットの情報を保持する。即ち、各不揮発レジスタは、nビットの情報が保持可能であるので、n個の不揮発フリップフロップを含んで構成される。なお、各不揮発レジスタのビット数nは、各不揮発レジスタによって異なっていてもよい。本実施形態に係る半導体集積回路1では、nの値は各不揮発レジスタで同一とする。
【0036】
また、各不揮発フリップフロップは、揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子を含む。なお、保持回路と不揮発素子の詳細については、後述する。
【0037】
不揮発フリップフロップは、保持回路と不揮発素子との間でデータを転送する機能を備えている。本書では、保持回路のデータを不揮発素子へ転送することを不揮発素子の書き込みと定義する。一方、不揮発素子のデータを保持回路へ転送することを不揮発素子のロードと定義する。
【0038】
上述のように、半導体集積回路1には、m個の不揮発レジスタが含まれている。さらに、各不揮発レジスタには、アドレスA1〜Amまでが付与されている。不揮発レジスタの一例としては、プログラムカウンタPC、スタックポイントSP、ステータスレジスタSR、汎用レジスタ、周辺モジュールで使用するレジスタ等が考えられる。これらの各不揮発レジスタが保持する値は、半導体集積回路1の内部状態を表現するものである。従って、保持回路の値を不揮発素子に退避させた後、半導体集積回路1への電源供給を遮断し、その後、電源を供給した際にこれらのデータを復元すれば、半導体集積回路1を電源遮断前(動作の中断前)の状態に戻すことができる。
【0039】
ロードイネーブルレジスタ20には、複数のビットが含まれている。ここでは、ロードイネーブルレジスタ20には、d個のビットが含まれるものとする(但し、dは2以上の整数、以下同じ)。なお、ロードイネーブルレジスタ20に含まれるビットを、ロードイネーブルビットLEB1〜LEBdと呼び、以下説明する。
【0040】
ロードイネーブルビットLEBは、複数の不揮発レジスタR1〜Rmのうち、いずれの不揮発レジスタのデータをロードするかを判断する際に使用する。各ロードイネーブルビットLEBと不揮発レジスタの対応関係は次のとおりである。不揮発レジスタ群10に含まれるm個の不揮発レジスタは、q個のグループG1からGqに分割される(但し、qは2以上の整数、以下同じ)。それぞれのグループGは、複数のロードイネーブルビットLEB1〜LEBdのうち、いずれかのロードイネーブルビットLEBと1対1に対応付けされる、又は、対応するロードイネーブルビットLEBを有しない。
【0041】
次に、ロードイネーブルビットLEBの使用方法を概説する。
【0042】
ロードイネーブルビットLEBは、半導体集積回路1に電源が供給された直後に不揮発レジスタ制御回路30にロードされる(不揮発レジスタR1〜Rmのロードの前にロードされる)。従って、不揮発レジスタ制御回路30は、不揮発レジスタR1〜Rmに先立ち、このロードイネーブルビットLEBの参照が可能である。
【0043】
不揮発レジスタ制御回路30は、不揮発レジスタR1〜Rmをロードする際、不揮発レジスタR1〜Rmのいずれかを指定し、指定した不揮発レジスタを含むグループに対応したロードイネーブルビットLEBを参照する。参照したロードイネーブルビットLEBの値が「1」の場合には(活性化している場合には)、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路へロードする。参照したロードイネーブルビットLEBの値が「0」の場合には、指定された不揮発レジスタの不揮発素子のデータを保持回路にロードしない。対応するロードイネーブルビットLEBが存在しない場合には、指定した不揮発レジスタの不揮発素子のデータを保持回路にロードするか否かは、予め不揮発レジスタ制御回路30に固定的に設定しておく。なお、不揮発レジスタ制御回路30による不揮発レジスタR1〜Rmの指定方法については、後述する。
【0044】
ここで、本実施形態に係る半導体集積回路1は、命令セットを備えている。この命令セットは、不揮発レジスタR1〜Rmの制御を可能にする不揮発レジスタ制御命令を含む。
【0045】
次に、命令の読み出しから不揮発レジスタの制御までの手順を概説する。
【0046】
初めに、半導体集積回路1の中央処理装置(
図2において図示せず)は、プログラムカウンタPCで指定されるアドレスに従って、そのアドレスに記憶されている命令を記憶装置40から読み出す。読み出された命令は、命令デコーダ50に送られ、デコードされる。その際、命令コードが不揮発素子に対する書き込み命令の場合であれば、不揮発レジスタ制御回路30は、指定された不揮発レジスタに含まれる保持回路が保持するデータを不揮発素子に書き込む。一方、命令コードが不揮発素子に対するロード命令の場合であれば、不揮発レジスタ制御回路30は、指定された不揮発レジスタに含まれる不揮発素子のデータを保持回路にロードする。
【0047】
続いて、不揮発レジスタの制御命令の詳細について説明する。
【0048】
本実施形態に係る半導体集積回路1では、シングルオペランドの命令形式を使用するものとする。
図3は、半導体集積回路1が採用する命令形式の一例を示す図である。
図3に示す命令は、a+b+cのビット長を持っている(a〜cは、いずれも整数、以下同じ)。1〜aビットは、レジスタの指定に使用する。a+1〜a+bビットは、アドレッシングモードの指定に使用する。a+b+1〜a+b+cビットは、命令コードの指定に使用する。
【0049】
この命令コードに不揮発レジスタの制御命令を追加することで、既存のアーキテクチャを変更することなく、不揮発レジスタを制御することができる。例えば、レジスタ番号4の不揮発レジスタR4の書き込みを行う場合には、レジスタの指定ビットはレジスタ番号4を指定するように設定する。アドレッシングモードについては、通常用意されているレジスタを操作するモードと同様に設定する。そして、命令コードに、新規に追加した不揮発レジスタの書き込み命令を設定する。なお、アドレッシングモードは、通常用意されているモードとは異なるものを使用することもできる。
【0050】
さらに、アドレスA1〜Amまでのm個の不揮発レジスタをt個(但し、tは2以上の整数、以下同じ)のグループに分け、あるアドレスを指定すると、そのアドレスの不揮発レジスタが属するグループの不揮発レジスタを同時に制御できるようにしてもよい。例えば、不揮発レジスタR1〜Rmが、それぞれ1つのロードイネーブルビットLEBを備え、全ての不揮発レジスタのうち、ロードイネーブルビットLEBが「1」の不揮発レジスタに対してのみロードを行う場合、ロード動作の対象となるグループ数tは1、ロードイネーブルビットLEBの数dはm、ロードイネーブルビットLEBと対応付けられるグループ数qもmとする。そして、レジスタの指定ビットは考慮せず、アドレッシングモードについては不揮発レジスタを操作するモードに設定し、命令コードを設定すればよい。
【0051】
このように、複数の不揮発レジスタR1〜Rmを同時に操作すれば、不揮発レジスタの制御時間を短縮することができる。特許文献2が開示する半導体装置においては、モジュール内の全てのレジスタをロードするため、ロードする必要のない不揮発素子からのロード動作が発生し、無駄な電力が消費されてしまう。しかし、ロードイネーブルビットLEBによってロードする不揮発レジスタを制限することにより、データ復帰に要するオーバーヘッドを抑えつつ、データ復帰に要する電力消費も削減することができる。なお、不揮発レジスタの制御命令として、シングルオペランドの命令形式を使用することができることを説明したが、これに限定する趣旨ではない。
【0052】
次に、不揮発レジスタを構成する不揮発フリップフロップについて説明する。
【0053】
図4は、不揮発フリップフロップ60の回路構成の一例を示す図である。不揮発フリップフロップ60は、マスタラッチ61と、スレーブラッチ62と、を含んで構成される。さらに、スレーブラッチ62には、不揮発素子63及び64が含まれる。
【0054】
マスタラッチ61とスレーブラッチ62は、揮発性データの保持が可能である。不揮発フリップフロップ60は、スレーブラッチ62と不揮発素子63及び64の間でデータをやり取りする。より具体的には、不揮発フリップフロップ60は、スレーブラッチ62に含まれる保持回路のデータを不揮発素子63及び64に書き込む機能と、不揮発素子63及び64からスレーブラッチ62へデータをロードする機能を備えている。
【0055】
マスタラッチ61は、Nチャンネル型MOSトランジスタN01及びN02と、Pチャンネル型MOSトランジスタP01及びP02と、からなるクロックドインバータ65と、Nチャンネル型MOSトランジスタN03及びN04と、Pチャンネル型MOSトランジスタP03及びP04と、からなるクロックドインバータ66と、インバータINV01及びインバータINV02と、から構成される。さらに、インバータINV01と、Nチャンネル型MOSトランジスタN03及びN04と、Pチャンネル型MOSトランジスタP03及びP04と、からなるクロックドインバータ66によって保持回路67を構成する。
【0056】
入力データDは、クロックドインバータ65を介してマスタラッチ61に入力され、保持回路67でラッチされる。マスタラッチ61に入力されたデータは、ノードT01で保持され、インバータINV02で反転されたデータがノードT02で保持される。これらのノードT01及びT02で保持するデータは、Nチャンネル型MOSトランジスタN05及びN06を介してスレーブラッチ62のノードT03及びT04に入力される。
【0057】
スレーブラッチ62は、Nチャンネル型MOSトランジスタN07及びN08と、Pチャンネル型MOSトランジスタP05及びP06と、からなる保持回路68と、Nチャンネル型MOSトランジスタN09〜N12からなる書き込み用トランジスタと、NOR回路NOR01及びNOR02と、Nチャンネル型MOSトランジスタN13と、Pチャンネル型MOSトランジスタP07〜P09と、出力用インバータINV03及びINV04と、不揮発素子63及び64と、を含む。
【0058】
Nチャンネル型MOSトランジスタN13は、データの書き込み時以外は、Nチャンネル型MOSトランジスタ07及びN08を接地する。Pチャンネル型MOSトランジスタP07〜P09は、プリチャージ用のトランジスタとして使用する。
【0059】
不揮発素子63の一端は、Nチャンネル型MOSトランジスタ07のソースに接続され、他の一端は、Nチャンネル型MOSトランジスタN09〜N12のドレインに共通接続される。不揮発素子63の一端は、Nチャンネル型MOSトランジスタ08のソースに接続され、他の一端は、Nチャンネル型MOSトランジスタN09〜N12のドレインに共通接続される。Nチャンネル型MOSトランジスタN07及びN08と、Pチャンネル型MOSトランジスタP05及びP06にラッチされた相補のデータはNOR回路NOR01及びNOR02に入力される。
【0060】
書き込み信号WBは、Nチャンネル型MOSトランジスタN13と、NOR回路NOR01とNOR02に入力される。ロード信号LBは、Pチャンネル型MOSトランジスタP07〜P09のゲートに入力される。インバータINV04が出力する信号をデータ出力Qとし、インバータINV03が出力する信号をデータ出力QBとする。クロックCLKは、インバータ(図示せず)により反転されてクロックP1としてクロックドインバータ65及び66に入力される。さらに、クロックP1は、インバータ(図示せず)により反転されてクロックP2としてクロックドインバータ65及び66に入力される。
【0061】
ここで不揮発フリップフロップ60は、本来のフリップフロップとしての機能に加えて、以下の機能を備えている。第1に、スレーブラッチ62に電気的に記憶しているデータを不揮発素子63及び64に書き込む機能を備えている。第2に、不揮発素子63及び64に蓄えられているデータを読み出し、そのデータをスレーブラッチ62で保持する機能を備えている。
【0062】
不揮発素子63及び64には、例えば、磁気抵抗効果を利用した強磁性トンネル接合素子であるMTJ(Magnetic Tunnel Junction)素子が考えられる。ここで、MTJ素子は、磁化方向が変化する強磁性層(フリー層)と、磁化方向が固定された強磁性層(固定層)と、フリー層と固定層の間に形成される絶縁層と、を含んで構成される。
【0063】
このようなMTJ素子に、膜面垂直方向に電流を流した際の抵抗値は、フリー層と固定層の磁化の方向によって変化する。フリー層の磁化と固定層の磁化が平行の場合には、抵抗値は低下する。一方、フリー層の磁化と固定層の磁化が反平行の場合には、抵抗値は上昇する。このような性質を利用し、MTJ素子では、この抵抗値、又は、フリー層の磁化の方向に、論理データを対応付ける。例えば、低抵抗な状態を論理値「0」、高抵抗な状態を論理値「1」と対応付ける。MTJ素子の書き込みは、電流磁界を用いてフリー層の磁化方向を制御する磁場書き込み方式と、スピントルク効果を利用してフリー層の磁化方向を制御するスピントルク書き込み方式と、が存在する。
【0064】
図5は、不揮発素子として、スピントルク効果を利用して書き込みを行う磁壁移動素子の素子近傍の断面図である。なお、不揮発素子63及び64に接続されるトランジスタについては、理解を容易にするため回路記号で示している。
【0065】
不揮発素子63及び64は、半導体基板を基準にして、メタル層70、第1ハード層71又は第2ハード層72、フリー層73、絶縁層74、リファレンス層75の順に積層され構成されている。
【0066】
不揮発素子63に関する接続は、リファレンス層75はNチャンネル型MOSトランジスタN07に、第1ハード層71はNチャンネル型MOSトランジスタN09とN10に、第2ハード層72は不揮発素子64の第1ハード層71を介して、Nチャンネル型MOSトランジスタN11及びN12に接続される。フリー層73、第1ハード層71及び第2ハード層72には、例えば、垂直磁気異方性を有する磁性薄膜を利用することができる。第1ハード層71と第2ハード層72の磁化方向は逆向きに固定されている。フリー層73の磁化は、スピン偏極電流の向きによって、
図5のZ方向に沿って、上下に制御可能である。より具体的には、第1ハード層71から第2ハード層72に向かって電流を流した場合、偏極した電子は逆向きに流れ、第2ハード層72と同じ向きにフリー層73は揃う。逆に、第2ハード層72から第1ハード層71に向かって電流を流した場合、第1ハード層71と同じ向きにフリー層は揃う。
【0067】
図6は、半導体集積回路1に含まれる不揮発レジスタR1〜Rmとその制御回路である不揮発レジスタ制御回路30の接続の一例を示す図である。
【0068】
本実施形態に係る半導体集積回路1では、n個の不揮発レジスタ毎にアドレスを付与している。例えば、16ビットのワード単位(n=16)、8ビットのバイト単位(n=8)などである。不揮発レジスタのアドレスは、アドレスA1〜Amのm個である。
【0069】
半導体集積回路1では、アドレスを指定すると、指定されたアドレスに対応付けられたn個の不揮発レジスタを同時に制御できるものとする。若しくは、あるアドレスを指定すると、あるアドレス領域の複数の不揮発レジスタを同時に制御できるようにしてもよい。
【0070】
不揮発レジスタ制御回路30は、システムのクロックCLK_SYSと、レジスタのアドレスA_REGと、レジスタの揮発性データの書き込み信号WE_REGと、レジスタへの入力データD_REGと、不揮発素子63及び64への書き込み信号NVWE_REGと、不揮発素子63及び64からのロード信号NVLE_REGと、ロードイネーブルビットLEBを受け付ける。これらの制御信号を供給するのは、ロードイネーブルレジスタ20及び命令デコーダ50である。
【0071】
不揮発レジスタ制御回路30は、受け取った制御信号に応じて、各不揮発レジスタに対し、不揮発レジスタ制御信号を出力する。例えば、アドレスA1に対応する不揮発レジスタR1に供給する不揮発レジスタ制御信号は、クロックCLK_REG(A1)と、入力データD_REG(A1)と、ロード信号LB_REG(A1)と、書き込み信号WB_REG(A1)と、が含まれる。これらの制御信号を受け取った不揮発レジスタR1は、データ出力Q_REG(A1)を出力する。アドレスA2〜Amに対応する不揮発レジスタR2〜Rmも同様の動作を行う。なお、
図6においては、不揮発レジスタに含まれる不揮発フリップフロップのうち、1つの不揮発フリップフロップ(例えば、nビット目の不揮発フリップフロップ)を代表して記載している。
【0072】
次に、
図4を参照しつつ、不揮発レジスタに対する書き込み動作について概説する。
【0073】
半導体集積回路1の書き込み動作時には、書き込み信号WBがLレベルに設定される。その際、不揮発素子への書き込みデータはスレーブラッチ62のデータ出力Qに一致する。データ出力Qが「0」の場合には、Nチャンネル型MOSトランジスタN10及びN11がオン、Nチャンネル型MOSトランジスタN09及びN12はオフになる。このとき、ノードT06からノードT05へ書き込み電流が流れる。これにより、不揮発素子63は低抵抗状態、不揮発素子64は高抵抗状態になり、データ出力Qと対応したデータ「0」を不揮発素子63及び64は記憶する。
【0074】
一方、データ出力Qが「1」の場合、Nチャンネル型MOSトランジスタN10及びN11がオフ、Nチャンネル型MOSトランジスタN09とN12がオンになる。この場合には、ノードT05からT06に向けて書き込み電流が流れる。その結果、不揮発素子63は高抵抗状態、不揮発素子64は低抵抗状態になり、データ出力Qに対応したデータ「1」を不揮発素子は記憶する。
【0075】
続いて、
図4を参照しつつ、不揮発レジスタからのロード動作について概説する
【0076】
半導体集積回路1のロード動作時には、ロード信号LBがLレベルに設定される。また、クロックCLKはLレベルである。すると、Pチャンネル型MOSトランジスタP07〜P09はオンとなり、ノードT03及びT04はHレベルになる。その結果、Nチャンネル型MOSトランジスタN07を介して不揮発素子63に読み出し電流が流れる。また、Nチャンネル型MOSトランジスタN08を介して、不揮発素子64にも読み出し電流が流れる。これらの読み出し電流の電流値の差に応じて、ノードT03及びT04には微小な電位差が生じる。
【0077】
そして、ロード信号LBがHレベルに設定されると、その電位差が増幅される。その際、不揮発素子63及び64に記憶しているデータが「0」である場合には、不揮発素子63は低抵抗状態、不揮発素子64は高抵抗状態のため、ノードT03はLレベル、ノードT04はHレベルになる。その結果、データ出力Qは不揮発素子のデータに対応し、「0」を出力する。一方、不揮発素子63及び64に記憶しているデータが「1」である場合には、不揮発素子63は高抵抗状態、不揮発素子64は低抵抗状態のため、ノードT03はHレベル、ノードT04はLレベルになる。その結果、データ出力Qは、不揮発素子のデータに対応し、「1」を出力する。
【0078】
次に、半導体集積回路1において、命令コードが不揮発素子の書き込み命令である場合の詳細について説明する。
【0079】
図7は、命令コードが不揮発素子の書き込み命令である場合の動作波形の一例である。
【0080】
時刻T1において、半導体集積回路1に含まれる中央処理装置は、記憶装置40へアドレスA_RAMとして、プログラムカウンタPCの値であるPC1を出力する。
【0081】
時刻T2において、中央処理装置は、記憶装置40から、アドレスA_RAMに対応するデータRD_RAMとして、命令OP1を受け取る。なお、命令OP1は、
図3に示す命令形式であり、命令コードは不揮発素子の書き込み命令のコードとする。また、アドレッシングモードはシングルオペランド形式であり、アドレスA1のレジスタを指定するものとする。
【0082】
時刻T3おいて、中央処理装置に含まれる命令デコーダ50は、命令OP1をデコードし、レジスタのアドレスA_REGとして、アドレスA1を出力する。
【0083】
時刻T4において、命令デコーダ50は、命令OP1をデコードし、不揮発素子の書き込み信号NVWE_REGを不揮発レジスタ制御回路30に出力し、時刻T5に出力を終了する。
【0084】
不揮発レジスタ制御回路30は、時刻T6からT8までの間、選択されたアドレスA1のレジスタの書き込み信号WB_REG(A1)をLレベルに設定し、不揮発レジスタR1に書き込み電流を流す。
【0085】
時刻T7において、アドレスA1に対応した不揮発レジスタR1における不揮発素子は、保持していたデータ出力Q_REG(A1)に対応した値Ra1(抵抗値R_REG(A1))に書き換わる。
【0086】
次のクロックサイクルでは、アドレスA2に対応した不揮発レジスタR2における不揮発素子の書き込みが行われる動作波形を示しており、アドレスA1と同様の一連の過程で書き込みが行われる。ここで、
図7に示すように、不揮発素子への書き込みを行う期間(T6〜T8)は、次の命令を記憶装置40から読み出すサイクルの始まる時刻Taより後であってもよい。不揮発素子への書き込みは、不揮発レジスタの出力を変化させずに行えるため、次の命令の読み出し動作を妨げることはないからである。このようにパイプライン的な動作を行うことで、不揮発素子への書き込みに対する十分なセットアップ時間を確保できると同時に、短い時間で複数の命令を実行することができる。
【0087】
続いて、半導体集積回路1において、命令コードが不揮発素子のロード命令である場合の詳細について説明する。
【0088】
図8は、命令コードが不揮発素子のロード命令である場合の動作波形の一例である。
【0089】
時刻T1において、半導体集積回路1に含まれる中央処理装置は、記憶装置40へアドレスA_RAMとして、プログラムカウンタPCの値であるPC1を出力する。
【0090】
時刻T2において、中央処理装置は、記憶装置40から、アドレスA_RAMに対応するデータRD_RAMとして、命令OP1を受け取る。なお、命令OP1は、
図3に示す命令形式であり、命令コードは不揮発素子の書き込み命令のコードとする。また、アドレッシングモードはシングルオペランド形式であり、アドレスA1のレジスタを指定するものとする。
【0091】
以下、アドレスA1に対応したロードイネーブルビットLEBはすでにロードされており、かつ、その値は「1」とし、アドレスA1に対応した不揮発レジスタR1のロードが行われる場合の動作を示す。
【0092】
時刻T3おいて、命令デコーダ50は、命令OP1をデコードして、レジスタのアドレスA_REGとして、アドレスA1を出力する。
【0093】
時刻T4において、命令デコーダ50は、命令OP1をデコードし、不揮発素子のロード信号NVLE_REGを不揮発レジスタ制御回路30に出力し、時刻T5に出力を終了する。
【0094】
不揮発レジスタ制御回路30は、時刻T6からT7までの間、選択されたアドレスA1のレジスタのロード信号LB_REG(A1)をLレベルに設定し、不揮発レジスタのロード動作を行う。
【0095】
時刻T8において、アドレスA1に対応した不揮発レジスタR1のデータ出力Q_REG(A1)は、不揮発素子が保持する値Ra1(抵抗値R_REG(A1))に対応した値D1に書き換わる。
【0096】
以上のように、本実施形態に係る半導体集積回路1は、ロジック素子と不揮発素子を一体化した不揮発レジスタを備えている。そのため、半導体集積回路1の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。さらに、ロードイネーブルビットLEBを利用することで、意図したレジスタに限りロードを行うことができる。これにより、ロードを行う不揮発素子の素子数を減らすことができ、ロードに要する消費電力が低減できる。
【0097】
[第2の実施形態]
続いて、第2の実施形態について図面を参照して詳細に説明する。
【0098】
図9は、本実施形態に係る半導体集積回路2の内部構成の一例を示す図である。
図9において
図2と同一構成要素には、同一の符号を付し、その説明を省略する。半導体集積回路1及び2の相違点は、記憶装置40と命令デコーダ50に代えて、電源制御回路80が制御信号を供給する点である。
【0099】
本実施形態に係る半導体集積回路2は、半導体集積回路1のように記憶装置40に書き込まれたプログラム(ソフトウェア)による不揮発レジスタの制御を行わない。半導体集積回路2は、電源制御回路80のようなハードウェアによる不揮発レジスタの制御の場合においても、ロードイネーブルビットLEBを用いることで電力消費を抑制する。
【0100】
図10は、半導体集積回路2に含まれる不揮発レジスタR1〜Rmとその制御回路である不揮発レジスタ制御回路30aの接続の一例を示す図である。
図10において
図6と同一構成要素には、同一の符号を付し、その説明を省略する。
図10と
図6の相違点は、命令デコーダ50から送られてくる書き込み信号NVWE_REGと、不揮発素子からのロード信号NVLE_REGが削除されている点と、電源制御回路80から送られてくる書き込み信号NVWE_PWRと、不揮発素子からのロード信号NVLE_PWRが追加されている点である。
【0101】
m個の不揮発レジスタはq個のグループG1〜Gqに分割され、それぞれのグループはロードイネーブルビットLEB1〜LEBdのうちの1つのロードイネーブルビットLEBと1対1に対応付けられるか、又は、対応するロードイネーブルビットが存在しない。
【0102】
ロードイネーブルビットLEBは、半導体集積回路2に電源が供給された直後に不揮発レジスタ制御回路30にロードされる(不揮発レジスタR1〜Rmのロードの前にロードされる)。従って、不揮発レジスタ制御回路30aは、不揮発レジスタR1〜Rmに先立ち、このロードイネーブルビットLEBの参照が可能である。
【0103】
さらに、m個の不揮発レジスタは、t個のグループG1〜Gtに分割される。また、不揮発レジスタ制御回路30aは、s(但し、sは2以上の整数、以下同じ)個のロード信号NVLE_PWR1〜NVLE_PWRsを受け付け可能である。それぞれの不揮発レジスタのグループは、ロード信号NVLE_PWR1〜NVLE_PWRsのうちの1つのロード信号NVLE_PWRと1対1に対応付けられるか、又は、対応するロード信号NVLE_PWRが存在しない。
【0104】
不揮発レジスタ制御回路30aは、電源復帰後、電源制御回路80から供給されたs個のロード信号NVLE_PWRに基づき、活性化されたロード信号に対応したグループに属する全ての不揮発レジスタを指定する。不揮発レジスタ制御回路30aは、この指定された不揮発レジスタを含むグループのロードイネーブルビットLEBを参照する。参照したロードイネーブルビットLEBの値が「1」の場合には、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路へロードする。参照したロードイネーブルビットLEBの値が「0」の場合には、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路にロードしない。対応するロードイネーブルビットLEBが存在しない場合には、指定した不揮発レジスタにおいて、不揮発素子のデータを保持回路にロードするか否かを、予め不揮発レジスタ制御回路30に固定的に設定しておく。
【0105】
書き込み時も同様に、m個の不揮発レジスタは、t個のグループG1〜Gtに分割される。また、不揮発レジスタ制御回路30aは、s個の書き込み信号NVWE_PWR1〜NVWE_PWRsを受け付ける。それぞれの不揮発レジスタのグループは、書き込み信号NVWE_PWR1〜NVWE_PWRsのうち、1つの書き込み信号NVWE_PWRと1対1に対応付けられるか、又は、対応する書き込み信号が存在しない。
【0106】
不揮発レジスタ制御回路30aは、半導体集積回路2に供給されている電源が遮断される前に、電源制御回路80から受け付けたs個の書き込み信号NVWE_PWRに基づき、活性化された書き込み信号NVWE_PWRに対応したグループに属する全ての不揮発レジスタを指定する。指定された不揮発レジスタに含まれる保持回路のデータは不揮発素子に書き込まれる。
【0107】
なお、本実施形態に係る半導体集積回路2において、不揮発レジスタR1〜Rmは必ずしもアドレスに対応付けされていなくてもよい。上述のように、グループ単位での書き込み信号、又は、読み出し信号が与えられるためである。
【0108】
本実施形態に係る半導体集積回路2においても、電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。さらに、中央処理装置(プログラム)による制御ではなく、電源制御回路80(ハードウェア)を使用することで、記憶装置40からの命令フェッチに起因する遅延時間、及び、電力消費の削減効果をより高めることができる。
【0109】
また、プログラムによる制御ではないため、記憶装置40における該当プログラムの領域を削減することができる(プログラムサイズが縮小する)。
【0110】
[第3の実施形態]
続いて、第3の実施形態について図面を参照して詳細に説明する。
【0111】
本実施形態に係る半導体集積回路3は、半導体集積回路1とはシステム起動時の動作が異なる。従って、半導体集積回路3について、
図2〜
図6に相当する説明は省略する。
【0112】
半導体集積回路3は、ロード用分岐フラグを使用する。ロード用分岐フラグは、システム復帰時の動作モードを選択するために使用される。さらに、ロード用分岐フラグは不揮発レジスタにより保持され、そのデータは、電源遮断に先立ち、予め不揮発素子に書き込まれる。なお、ロード用分岐フラグを記憶する不揮発レジスタは、他の不揮発レジスタと同様に、不揮発レジスタ制御回路30により制御することが可能である。
【0113】
図11は、半導体集積回路3のシステム起動時の動作の一例を示すフローチャートである。
【0114】
ステップS01において、電源供給に先立ちシステムがリセットされる。
【0115】
ステップS02において、ロード用分岐フラグを記憶する不揮発レジスタからロード用分岐フラグに相当するデータをロードする。
【0116】
ステップS03において、ロード用分岐フラグが「1」であるか否かを判断する。ロード用分岐フラグが「0」である場合には、ステップS04に遷移する。ロード用分岐フラグが「1」である場合には、ステップS05に遷移する。
【0117】
ステップS04において、不揮発レジスタのロード動作を含まないデフォルトのシステムの起動を行う。
【0118】
ステップS05において、不揮発レジスタのロード動作を含むシステムの起動を行う。
【0119】
上述の不揮発レジスタのロード動作を含むシステムの起動は、第1の実施形態において開示したロードイネーブルビットLEBや命令コードによるアドレス指定を利用できる。これにより、意図したレジスタのみをロードすることができる。
【0120】
なお、電源のオン・オフをする単位は、半導体集積回路3の全体である場合に限られず、半導体集積回路3を構成するモジュール単位であってもよい。モジュール単位である場合には、あるモジュールに電源供給された後のリセットは、そのモジュールのみに限定されてもよい。
【0121】
以上のように、本実施形態に係る半導体集積回路3は、ロジック素子と不揮発素子を一体化した不揮発レジスタを備えている。そのため、半導体集積回路3の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。
【0122】
さらに、電源をオンする際に、常に電源をオフの前の状態に復帰する必要はなく、より柔軟に意図した状態にすぐに復帰できる。また、ロード用分岐フラグは不揮発レジスタに記憶されているため、記憶装置40にロード用分岐フラグを記憶する場合と比較すると、記憶装置40からのロード用分岐フラグの転送が不要ある。そのため、データ転送に要する遅延時間と消費電力を低減できると共に、ロード用分岐フラグを利用するための制御(手続き)がより簡便になる。
【0123】
また、ロードイネーブルビットLEBやロード命令と組み合わせることで、意図したシステムの状態とリセット状態の差分のデータのみをロードすることが可能であり、不揮発素子のロードに要する消費電力を低減できる。
【0124】
[第4の実施形態]
続いて、第4の実施形態について図面を参照して詳細に説明する。
【0125】
本実施形態に係る半導体集積回路4は、半導体集積回路1とはシステム起動時の動作が異なる。従って、半導体集積回路4について、
図2〜
図6に相当する説明は省略する。
【0126】
半導体集積回路4の不揮発レジスタは、プログラムカウンタPCのデータを記憶する。プログラムカウンタPCは、次に実行すべき命令が記憶されている記憶装置40のアドレス情報である。半導体集積回路4は、その電源が遮断される前に、次回復帰したときに開始したいプログラムカウンタPCの値を不揮発素子に書き込む。
【0127】
図12は、半導体集積回路4のシステム起動時の動作の一例を示すフローチャートである。
【0128】
ステップS11において、電源供給に先立ちシステムがリセットされる。
【0129】
ステップS12において、プログラムカウンタPCの値を記憶する不揮発レジスタにおいて、不揮発素子のプログラムカウンタPCのデータを保持回路へロードする。
【0130】
ステップS13において、ロードされたプログラムカウンタPCの値がデフォルト値か否かを判断する。デフォルト値である場合には、ステップS14に遷移する。デフォルト値でない場合には、ステップS15に遷移する。
【0131】
ステップS14では、不揮発レジスタのロード動作を含まないデフォルトのシステムの起動を行う。
【0132】
ステップS15では、不揮発レジスタのロード動作を含むシステムの起動を行う。その際、第1の実施形態において説明したロードイネーブルビットLEBや命令コードによるアドレス指定を行う。これにより、意図したレジスタのみをロードすることができる。
【0133】
なお、本実施形態における説明では、ロードイネーブルビットを用いる場合について説明したが、必ずしも、ロードイネーブルビットを備えている必要はない。さらに、電源のオン・オフをする単位は、半導体集積回路4の全体である場合に限られず、半導体集積回路4を構成するモジュール単位であってもよい。モジュール単位である場合には、あるモジュールに電源供給された後のリセットは、そのモジュールのみに限定されてもよい。
【0134】
本実施形態に係る半導体集積回路4においても、ロードイネーブルビットLEBやロード命令と組み合わせることで、意図したシステムの状態とリセット状態の差分のデータのみをロードすることが可能であり、不揮発素子のロードに要する消費電力を低減できる。
【0135】
[第5の実施形態]
続いて、第5の実施形態について図面を参照して詳細に説明する。
【0136】
第4の実施形態においてプログラムカウンタPCを不揮発レジスタに記憶する半導体集積回路4について説明した。本実施形態においては、プログラムカウンタPCの値を不揮発素子へ書き込む際に注意しなければならない点について説明する。
【0137】
ここで、
図4において説明した不揮発フリップフロップ60は、スレーブラッチ62のデータを不揮発素子63及び64に書き込むことができる。その際、電源遮断から復帰した際に開始したいプログラムカウンタPCの値が、スレーブラッチ62が記憶している値と同一である場合には問題ない。しかし、次回復帰した際に開始したいプログラムカウンタPCの値が、スレーブラッチ62が記憶している値と異なる場合に問題が発生する。即ち、不揮発素子63及び64に次回復帰したときのアドレスを書き込むと、スレーブラッチ62が保持する値が更新されてしまう。このとき、次のサイクルでアクセスするはずのアドレスではなく、電源遮断からの復帰後に開始したいアドレスにアクセスしてしまうことになる。
【0138】
この問題を解決するために、スレーブラッチ62のデータを更新せず直接、不揮発素子のデータを書き込める手段を不揮発フリップフロップ60に追加することが考えられる。本実施形態に係る半導体集積回路5は、このような対策を施した不揮発フリップフロップ60aを備えている。
【0139】
図13は、不揮発フリップフロップ60aの回路構成の一例を示す図である。
図13において
図4と同一構成要素には、同一の符号を付し、その説明を省略する。不揮発フリップフロップ60と60aでは、書き込み用のトランジスタであるNチャンネル型MOSトランジスタN09〜N12を制御する周辺回路が異なっている。
【0140】
具体的には、マルチプレクサMUX01及び02が追加され、書き込み信号WB1とWB2に従い、書き込むデータとして、スレーブラッチ62aのデータと入力データDのいずれを採用するか選択できるようになっている。
【0141】
不揮発フリップフロップ60aは、2つの書き込み信号WB1とWB2と、1つの入力データDを受け付ける。書き込み信号WB1が活性化された場合には、保持回路68のデータを不揮発素子63及び64に書き込む。書き込み信号WB2が活性化された場合には、入力データDのデータを不揮発素子63及び64に書き込み、かつ、保持回路68のデータは変更しない。なお、入力データDを不揮発素子63及び64に書き込む際には、クロックCLKはLレベルとする。これにより、入力データDを、スレーブラッチ62aのデータは変更せずに、不揮発素子63及び64に書き込むことができる。
【0142】
図14は、半導体集積回路5に含まれる不揮発レジスタR1〜Rmとその制御回路である不揮発レジスタ制御回路30bの接続の一例を示す図である。
図6と
図14の相違点は、不揮発レジスタ制御回路30bは、2つの不揮発素子書き込み信号NVWE1_REG及びNVWE2_REGを受け付ける点である。また、不揮発レジスタ制御回路30bは、アドレスA1に対応する不揮発レジスタR1へ2つの不揮発素子書き込み信号WB1_REG(A1)及びWB2_REG(A1)を出力する。アドレスA2〜Amに対応する不揮発レジスタR2〜Rmについても同様である。
【0143】
半導体集積回路5では、不揮発素子書き込み信号NVWE1_REGを活性化することにより、選択した不揮発レジスタのスレーブラッチのデータを不揮発素子に書き込む。一方、不揮発素子書き込み信号NVWE2_REGを活性化することにより、入力データD_REGを不揮発素子へ書き込む。
図13に示す不揮発フリップフロップ60aは、2つのデータを選択して、いずれかのデータを書き込むことができる。しかし、
図6と
図13を比較すると、書き込みデータの配線は追加されていない。従って、配線が占める面積のオーバーヘッドを抑えることができる。
【0144】
なお、
図14においては、全ての不揮発フリップフロップを不揮発フリップフロップ60aとしたが、第1の実施形態において説明した不揮発フリップフロップ60と不揮発フリップフロップ60aをある割合で混合して使用してもよい。
【0145】
さらに、本実施形態に係る不揮発フリップフロップ60aは、プログラムカウンタPC以外にも、スレーブラッチのデータによる変更を意図しないレジスタに適用することができる。
【0146】
以上のように、本実施形態に係る半導体集積回路5は、ロジック素子と不揮発素子を一体化した不揮発レジスタを備えている。そのため、半導体集積回路5の電源を復帰する際に、退避したデータを復帰させるために要する時間及び電力消費を抑制することができる。
【0147】
さらに、不揮発フリップフロップ60aの保持回路のデータと不揮発素子のデータをそれぞれ独立に書き込むことができるため、保持回路に記憶されているシステムの内部状態を変更せずに、電源が遮断されている状態から復帰したときに開始したいプログラムカウンタPCの値や、他の不揮発レジスタの値を不揮発素子へ書き込むことができる。その結果、より柔軟に意図した状態に復帰可能である。
【0148】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。例えば、本書では中央処理装置内のレジスタを中心に説明したが、周辺モジュール内のレジスタにも容易に拡張することができる。また、各実施形態においては、各レジスタにはアドレスが与えられるとしたが、アドレスが与えられないレジスタに対しても不揮発素子の書き込みと読み出しを適用することができる。即ち、アドレスが与えられていないため、プログラムから直接、保持回路のデータを読み書きできなくとも、上述のあるグループに属することができるため、不揮発素子の書き込みと読み出しを実行することができる。本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。