(58)【調査した分野】(Int.Cl.,DB名)
データを揮発的に保持する保持回路と、データを不揮発的に保持する不揮発素子とを含むフリップフロップを少なくとも1つ備えた不揮発レジスタであって、各々に、アドレスが与えられた、1つ又は複数の不揮発レジスタを備えた半導体装置の制御方法であって、
命令セットとして、
前記不揮発レジスタのアドレスを指定する情報と、前記不揮発レジスタの前記保持回路から前記不揮発素子へのデータの書き込みを指定する情報を含む書き込み命令と、
前記不揮発レジスタのアドレスを指定する情報と、前記不揮発レジスタの前記不揮発素子から前記保持回路へのロードを指定する情報を含むロード命令と、
を用意し、
命令デコーダで解釈した命令が、前記書き込み命令の場合、前記書き込み命令で指定されたアドレスの前記不揮発レジスタにおいて、前記保持回路に保持されるデータを転送して前記不揮発素子への書き込みを行い、
前記命令デコーダで解釈した命令が前記ロード命令の場合、前記ロード命令で指定されたアドレスの前記不揮発レジスタにおいて、前記不揮発素子に保持されるデータを転送して前記保持回路に保持させる、半導体装置の制御方法。
【発明を実施するための形態】
【0018】
本発明の実施形態の半導体装置によれば、m個の不揮発レジスタ(103:103
1〜103
m)と、命令デコーダ(101)と、不揮発レジスタ制御回路(102)を備えている。m個の不揮発レジスタ(103
1〜103
m)にはA1からAmまでのアドレスが与えられている。前記不揮発レジスタ(103)は、データを揮発的に保持する保持回路と、データを不揮発的に保持する不揮発素子を含むフリップフロップ(104:104
1〜104
n)を備えている。
【0019】
命令デコーダ(101)は、命令を保持する記憶装置(100)から読み出した命令を解釈する。
【0020】
前記命令は、一つの不揮発レジスタ(103x)のアドレスAx(1≦x≦m)を指定するビット(オペランド)や書き込み/ロードを指定するビット(オペコード)を含む。
【0021】
命令デコーダ(101)で解釈した命令が、不揮発レジスタの不揮発素子への書き込み命令の場合、不揮発レジスタ制御回路(102)は、当該命令で指定されたアドレスAxの不揮発レジスタ(103x)において、保持回路のデータの不揮発素子への書き込みを行うように制御する。命令デコーダ(101)で解釈した命令が、不揮発素子からのロード命令の場合、不揮発レジスタ制御回路(102)は、当該命令で指定されたアドレスAxの不揮発レジスタ(103x)において、不揮発素子のデータの保持回路へのロードを行うように制御する。
【0022】
本発明のいくつかの実施形態によれば、p個の不揮発素子書き込みモードビット(WMB1〜WMBp)を、命令内の所定のビットフィールドに備えている。あるいは、半導体装置は、不揮発素子書き込みモードビット(WMB1〜WMBp)を保持するレジスタ(106)を備えた構成としてもよい。m個の不揮発レジスタ(103
1〜103
m)のアドレスA1からAmは、q個のグループG1からGqに分けられる。それぞれのグループGyは、不揮発素子書き込みモードビットWMB1からWMBpのうちの一つWMBzと1対1に対応付けられるか、もしくは、対応する不揮発素子書き込みモードビットが存在しない。グループGyに属するアドレスAxの不揮発レジスタ(103x)の保持回路へ書き込みを行う際に、前記対応付けられた不揮発素子書き込みモードビットWMBzが活性状態(例えば論理値1)の場合、前記保持回路への書き込みデータを、前記指定されたアドレスAxの不揮発レジスタの不揮発素子へ書き込むようにしてもよい。前記対応付けられた不揮発素子書き込みモードビットWMBzが非活性状態(例えば論理値0)の場合、前記保持回路への書き込みデータは、前記指定されたアドレスAxの不揮発レジスタの不揮発素子への書き込みは行わない。前記対応付けられた不揮発素子書き込みモードビットWMBzが存在しない場合には、前記保持回路への書き込みデータの前記指定されたアドレスAxの不揮発レジスタの不揮発素子への書き込みは行わない。
【0023】
本発明の別の実施形態によれば、半導体装置は、さらに、前記不揮発レジスタの前記保持回路と前記不揮発素子の内容が異なることを示すr個のフラグビット(ダーティビット)DTY1〜DTYrを保持するレジスタ(107)に備えた構成としてもよい。前記m個の不揮発レジスタのアドレスA1からAmは、s個のグループG1からGsに分割されている。それぞれのグループGyは、ダーティビットDTY1〜DTYrまでのうちの一つDTYzと1対1に対応付けられるか、もしくは、対応するダーティビットが存在しない。
不揮発レジスタ制御回路(102)は、グループGyに属する全ての不揮発レジスタの保持回路のデータと不揮発素子のデータが一致している場合に、グループGyに対応付けられた前記ダーティビットDTYzが存在していれば、前記ダーティビットDTYzを第1の値(例えば論理0)にセットする。グループGyに属する全ての不揮発レジスタの保持回路のデータと不揮発素子のデータが一致していない可能性がある場合に、前記ダーティビットDTYzが存在していれば、前記ダーティビットDTYzを第2の値(例えば論理1)にセットする。
前記デコーダが解釈した命令がアドレスAxの不揮発レジスタにおける不揮発素子への書き込み命令の時、アドレスAxの不揮発レジスタの属するグループGyに対応した前記ダーティビットDTYzが存在する場合、前記ダーティビットDTYzが第2の値(論理1)の場合は、前記アドレスAxの不揮発レジスタの不揮発素子へ、前記保持回路のデータを書き込み、前記ダーティビットDTYzが第1の値(論理0)の場合は、前記アドレスAxの不揮発レジスタの不揮発素子へ、前記保持回路のデータを書き込まない。
【0024】
本発明の実施形態によれば、前記グループGyに属するアドレスAxの不揮発レジスタの保持回路は、電源オンに伴って、予め設定されている初期値に設定するようにしてもよい。不揮発レジスタ制御回路(102)は、前記グループGyに対応したダーティビットDTYzが存在するとき、ダーティビットDTYzを第2の値(論理1)に設定する、ようにしてもよい。不揮発レジスタ制御回路(102)は、グループGyに属するアドレスAxの不揮発レジスタの保持回路へ揮発データを書き込んだ際には、前記グループGyに対応したダーティビットDTYzが存在するとき、ダーティビットDTYzを第2の値(論理1)に設定する、ようにしてもよい。前記グループGyに属する全ての不揮発レジスタの保持回路へ、前記不揮発素子のデータをロードした際には、前記グループGyに対応したダーティビットDTYzが存在するとき、ダーティビットDTYzを第1の値(論理0)に設定する、ようにしてもよい。前記グループGyに属する全ての不揮発レジスタの不揮発素子へ、前記保持回路のデータを書き込んだ際には、前記グループGyに対応したダーティビットDTYzが存在するとき、ダーティビットDTYzを第2の値(論理1)に設定する、ようにしてもよい。
前記デコーダが解釈した命令がアドレスAxの不揮レジスタの不揮発素子への書き込み命令の時、アドレスAxの不揮発レジスタの属するグループGyに対応した前記ダーティビットDTYzが存在したとき、前記ダーティビットDTYzが第2の値(論理1)の場合は、前記アドレスAxの不揮発レジスタの不揮発素子へ、前記保持回路のデータを書き込み、前記ダーティビットDTYzが第1の値(論理0)の場合は、前記アドレスAxの不揮発レジスタの不揮発素子へ、前記保持回路のデータを書き込まない、ようにしてもよい。
【0025】
本発明の実施形態によれば、さらに、前記m個の不揮発レジスタのアドレスA1からAmは、t個のグループG1からGtに分割され、前記命令は、グループGy
(1≦y≦t)に属するひとつのアドレスAxを指定し、前記解釈した命令が不揮発素子への書き込み命令の場合、
前記不揮発レジスタ制御回路は前記グループGyに属する全ての不揮発レジスタにおいて、前記保持回路のデータを前記不揮発素子へ書き込みを行い、
前記解釈した命令が不揮発素子からのロード命令の場合、
前記不揮発レジスタ制御回路は前記グループGyに属する全ての不揮発レジスタにおいて、前記不揮発素子のデータを前記保持回路へロードを行う、ようにしてもよい。
【0026】
本発明の実施形態によれば、第1サイクルで前記不揮発素子の書き込み命令を前記記憶装置から読み出し、前記第1サイクルの次の第2サイクルで、不揮発素子の書き込みを行うために書き込み電流を流すとともに、前記第2サイクルで、次の命令を前記記憶装置から読み出すパイプライン的な動作をする。
【0027】
以下、図面を参照して本発明の例示的な実施形態について説明する。
【0028】
(第1実施形態)
図1は、本発明の例示的な第1実施形態の構成を示す図である。
図1を参照すると、第1の実施形態において、半導体集積回路(LSI)は、記憶装置100と、命令デコーダ101と、不揮発レジスタ制御回路102と、複数(m個)の不揮発レジスタ103
1〜103
mとを含む。
【0029】
複数の不揮発レジスタ103
1〜103
mの各々は、複数(n個)の不揮発フリップフロップ104
1〜104
nを備えている。不揮発フリップフロップ104
1〜104
nは同一構成とされ、不揮発フリップフロップ104
1〜104
nの各単体は「不揮発フリップフロップ104」とも記載される。
【0030】
不揮発フリップフロップ104は、データを揮発的に保持する保持回路(電源オフで保持データは消失する)と、データを不揮発的に保持する不揮発素子(電源オフでも保持データは保持される)と、を含む。
【0031】
不揮発フリップフロップ104は、該不揮発フリップフロップ104内の保持回路と不揮発素子との間で、データを転送する機能を備える。
【0032】
不揮発フリップフロップ104において、保持回路のデータを不揮発素子へ転送することを、不揮発素子の「書き込み」という。
【0033】
不揮発フリップフロップ104において、不揮発素子のデータを保持回路へ転送することを不揮発素子の「ロード」という。
【0034】
図1において、各不揮発レジスタ103
1〜103
mは、n個の不揮発フリップフロップ104
1〜104
nから構成されている。ただし、nの値は、各不揮発レジスタ103においてそれぞれ互いに異なっていてもよい。ただし、多くの場合、nの値は、各不揮発レジスタ103
1〜103
mで同じである。
【0035】
m個の不揮発レジスタ103
1〜103
mには、アドレスA1からAmがそれぞれ与えられている。特に制限されるものでないが、
図1では、例えば、アドレスA1、A2、A3の不揮発レジスタ103
1〜103
3として、
プログラムカウンタ(PC: Program Counter)、
スタックポイント(SP: Stack Pointer)、
ステータスレジスタ(SR:
Status Register)
が示されている。図示した以外に、不揮発レジスタ103は、汎用レジスタや、周辺モジュール内のレジスタも含む。これらの不揮発レジスタ103
1〜103
mの値は、例えば半導体集積回路の内部状態を表す。
【0036】
つまり、不揮発レジスタ103の保持回路の値を、不揮発素子に退避させ、電源を落とし、しばらく後に電源を投入し、それらのデータを元に戻すことで、半導体集積回路の動作を中断前の状態に戻すことができる。
【0037】
なお、関連技術の揮発性のフリップフロップのみを使用した半導体集積回路では、
・書き込みや読み出しを指定して行えるようにアドレスが割り振られているフリップフロップと、
・アドレスが割り振られていないフリップフロップと、
が存在する。
【0038】
本実施形態において、アドレスが割り振られていないフリップフロップに対しても、電源投入後にデータを復帰したい場合、アドレスを割り振るようにしてもよい。
【0039】
これらのフリップフロップは、例えばソフトウェアからアドレスを指定し、不揮発素子への書き込み、または、ロードを行える機能を備えているが、ソフトウェアから、直接、保持回路の書き込み、または、読み出しを行える機能は、必ずしも必要ない。
【0040】
半導体集積回路における命令セット(半導体集積回路で実行できる命令の集合)は、不揮発レジスタを制御する不揮発レジスタ制御命令を含む。命令の読み出しから不揮発レジスタの制御までの過程を簡単に説明する。なお、詳細の動作説明は後述する。はじめに、中央処理装置は、プログラムカウンタPC(不揮発レジスタ103
1)で指定されるアドレスを出力し、そのアドレスに記憶されている命令を記憶装置100から読み出す。記憶装置100は、半導体集積回路内に設けられるが、半導体集積回路外部に設ける構成としてもよい。例えばDRAM(ダイナミックランダムアクセスメモリ)等からなるメモリモジュール等(例えばDIMM(Dual Inline Memory Module)モジュール)であってもよく、あるいは、SRAM(スタティックランダムアクセスメモリ)等からなるキャッシュメモリ、あるいは半導体集積回路内に設けられ、先読みされた命令を格納する命令キャッシュ等であってもよい。あるいは、半導体集積回路内又は外付けで設けられるROM(リードオンリメモリ)等であってもよく、さらに、命令を格納しアドレスを与えて読み出し可能なものであれば、他の任意のストレージデバイスであってもよい。
【0041】
命令デコーダ101は、記憶装置100から読み出した命令を解読する。
【0042】
命令
デコー
ダ101で解読した命令が、不揮発素子の書き込み命令の場合、不揮発レジスタ制御回路102は、当該命令で指定された不揮発レジスタ103の不揮発フリップフロップ104内の保持回路のデータを不揮発素子に書き込む。
【0043】
命令
デコー
ダ101で解読した命令が、不揮発素子のロード命令の場合、不揮発レジスタ制御回路102は、該命令で指定された不揮発レジスタ103の不揮発フリップフロップ104内の不揮発素子のデータを保持回路にロードする。
【0044】
不揮発レジスタの制御命令は、例えば、シングルオペランド(単一のオペランド)の命令形式を利用してもよい。
図2に、シングルオペランドの命令形式の一例を示す。
【0045】
(a+b+c)ビットからなる命令のうち、LSB(Least Significant Bit)からaビットは、レジスタ指定に利用される。
【0046】
(a+1)ビットからa+bビットまでのbビットは、アドレッシングモードの指定に利用される。
【0047】
a+b+1ビットからa+b+cビットまでのcビットは、命令コードの指定に利用される。
【0048】
本実施形態によれば、命令コードに、不揮発レジスタの制御命令を追加することで、既存のアーキテクチャを大きく変更することなく、不揮発レジスタ103を制御することができる。
【0049】
例えば、レジスタ番号4の不揮発レジスタの書き込みを行う場合には、
レジスタの指定ビットを、レジスタ番号4を指すように設定し、
アドレッシングモードは、通常用意されているレジスタを操作するモードに設定し、
命令コードは、新規に追加した不揮発レジスタの書き込み命令
に設定すればよい。なお、アドレッシングモードは、他のアドレッシングモードを利用することもできる。
【0050】
また、本実施形態の変形例として、アドレスA1からAmまでのm個の不揮発レジスタ103
1〜103
mを複数のグループに分ける構成としてもよい。例えば、命令である不揮発アドレスを指定すると、そのアドレスの不揮発レジスタが属するグループの複数の不揮発レジスタを同時に制御できるようにしてもよい。
【0051】
例えば、同一グループに属する連続するレジスタ番号4と5の2つの不揮発レジスタの書き込みを行う場合には、命令において、
図2のレジスタを指定するビットフィールドは、レジスタ番号4を指すように設定し、アドレッシングモードは、通常用意されているレジスタを操作するモードに設定し、命令コードは、新規に追加した不揮発レジスタの書き込み命令に設定すればよい。
【0052】
さらに、不揮発レジスタ制御回路102は、アドレスの例えば最下位ビット(LSB:Least Significant Bit)は無視して、アドレスのデコードをするように構成すればよい。この場合、レジスタ番号4の指定ビットである“100”とレジスタ番号
5の指定ビットである“101”は同時に選択される。このように、複数の不揮発レジスタを同時に操作することは、不揮発レジスタ制御回路102において、不揮発レジスタを制御する時間の節約(縮減)につながる。
【0053】
上記した特許文献2においては、モジュール内の全てのレジスタを書き込み、ロードするため、書き込む必要のない不揮発素子への書き込み、ロードする必要のない不揮発素子からのロード動作が発生し、無駄な電力の消費されることになる。
【0054】
これに対して、本実施形態によれば、指定したレジスタの属するグループに対して書き込み、ロードすることにより、データ退避・復帰に要する時間的なオーバーヘッドを抑えつつ、データ退避・復帰に要する無駄な電力を削減できる。
【0055】
図3は、本発明の第1実施形態における揮発フリップフロップ104の構成の一例を示す図である。
【0056】
図3を参照すると、不揮発フリップフロップ104は、不揮発素子(R1、R2)と、マスタラッチ(T1−T4、INV1、2、T5−T8)と、スレーブラッチ(T11、T12、T13、T14)とを含む。
【0057】
本実施形態では、スレーブラッチと不揮発素子の間でデータをやり取りする。具体的には、不揮発フリップフロップ104は、スレーブラッチのデータを不揮発素子へ書き込む機能と、不揮発素子からスレーブラッチへデータをロードする機能を備えている。
【0058】
また、不揮発フリップフロップ104は、以下のような他の形態として構成するようにしてもよい。他の形態の不揮発フリップフロップでは、マスタラッチの保持データを不揮発素子へ書き込む機能と、不揮発素子からマスタラッチへデータをロードする機能を備えていてもよい。あるいは、他の形態の不揮発フリップフロップでは、マスタラッチの保持データを不揮発素子へ書き込む機能と、不揮発素子からスレーブラッチへデータをロードする機能を備えていてもよい。あるいは、他の形態の不揮発フリップフロップでは、スレーブラッチの保持データを不揮発素子へ書き込む機能と、不揮発素子からマスタラッチへデータをロードする機能を備えていてもよい。
【0059】
図3に示すように、マスタラッチは、第1のクロックドインバータ(T1−T4)、第1のインバータINV1、第2のクロックドインバータ(T5−T8)、第2のインバータINV2を備えている。第1のクロックドインバータは、
・電源(VDD)にソースが接続され、データ端子Dにゲートが接続されたPMOSトランジスタT1と、
・PMOSトランジスタT1のドレインにソースが接続され、P2(クロック信号CLKを反転させるインバータINV5、INV6の出力でありクロック信号CLKと同相)にゲートが接続されたPMOSトランジスタT2と、
・PMOSトランジスタT2のドレインにドレインが接続され、P1(クロック信号CLKを反転させるインバータINV5の出力)にゲートが接続されたNMOSトランジスタT3と、
・NMOSトランジスタT3のソースにドレインが接続され、グランド(GND)にソースが接続され、データ入力端子Dにゲートが接続されたNMOSトランジスタT4からなる。
第1のインバータINV1は、第1のクロックドインバータの出力(トランジスタT2、T3のドレインの接続点)に入力が接続されている。
第2のクロックドインバータは、
・電源にソースが接続され、第1のインバータINV1の出力にゲートが接続されたPMOSトランジスタT5と、
・PMOSトランジスタT5のドレインにソースが接続され、P1にゲートが接続されたPMOSトランジスタT6と、
・PMOSトランジスタT6のドレインにドレインが接続され、P2にゲートが接続されたNMOSトランジスタT7と、
・NMOSトランジスタT7のソースにドレインが接続され、グランド(GND)にソースが接続され、第1のインバータINV1の出力にゲートが接続されたNMOSトランジスタT8からなる。
第2のインバータINV2は、第1のインバータINV1の出力に入力が接続されている。第1のインバータINV1と、第2のクロックドインバータ(T5−T8)は、保持回路(双安定回路)を構成する。すなわち、クロック信号CLKがHighで、P1がLow、P2がHighのとき、第2のクロックドインバータ(トランジスタT5−T8)は活性化して(オンして)インバータとして作動し、第1のインバータINV1とともにフリップフロップを構成する。
【0060】
クロック信号CLKがLowで、P1がHigh、P2がLowのとき、データ入力端子Dの信号は、第1のクロックドインバータ(T1−T4)で反転され、第1のインバータINV1に入力されて反転される。このとき、第2のクロックドインバータ(T5−T8)はオフ状態とされる。
【0061】
P1がLow、P2がHighのとき、第1のクロックドインバータ(T1−T4)はオフとされ(データ入力端子Dの信号は第1のインバータINV1へ伝達されない)、第2のクロックドインバータ(T5−T8)がオンとされ、第1のインバータINV1とオン状態の第2のクロックドインバータ(T5−T8)とがフリップフロップ(双安定回路)を構成する。マスタラッチのデータはノードN1で保持される。また、第2のインバータインバータINV2で反転されたデータは、ノードN2で保持される。
【0062】
ノードN1、N2に保持されるデータは、P2がHighのとき(クロック信号CLKがHighのとき)、オン状態とされるトランジスタ(パストランジスタ)T9とT10を介してスレーブラッチの保持ノードN3とN4にそれぞれ入力される。P2がLowのとき(クロック信号CLKがLowのとき)、トランジスタT9とT10はオフし、ノードN1とN2とスレーブラッチのノードN3とN4とは、それぞれ電気的に非接続とされる。
【0063】
スレーブラッチは、
・電源(VDD)にソースが接続されたPMOSトランジスタT11、T13と、
・PMOSトランジスタT11、T13のドレインにドレインがそれぞれ接続されたNMOSトランジスタT12、T14と、
を備えている。トランジスタT11、T12(第1のCMOSインバータ)の共通接続されたゲート(第1のCMOSインバータの入力ノード)はノードN4に接続されている。
トランジスタT11、T12の共通接続されたドレイン(第1のCMOSインバータの出力ノード)はノードN3に接続されている。
トランジスタT13、T14(第2のCMOSインバータ)の共通接続されたゲート(第2のCMOSインバータの入力ノード)はノードN3に接続されている。
トランジスタT13、T14の共通接続されたドレイン(第
2のCMOSインバータの出力ノード)はノードN4に接続されている。トランジスタT11、T13、T12、T14は保持回路を構成する。
【0064】
スレーブラッチは、さらに、
・第1端子がトランジスタT12のソースに接続され、第2端子が、トランジスタT15、T16の接続ノードN5に接続される不揮発素子R1と、
・第1端子がトランジスタT14のソースに接続され、第2端子がトランジスタT15、T16の接続ノードN
5とトランジスタT17、T18の接続ノードN6に接続された不揮発素子R2を備えている。なお、不揮発素子R1、R2を強磁性トンネル接合素子(MTJ)で構成する場合、第3端子同士は接続される。
【0065】
スレーブラッチは、さらに、
・電源にドレインが接続されたNMOSトランジスタT15、T17と、
・NMOSトランジスタT15、T17のソースにドレインそれぞれ接続され、グランド(GND)にソースが接続されたNMOSトランジスタT16、T18と、を備えている。
トランジスタT15とT16の共通接続されたドレイン(N5)と、トランジスタT17とT18の共通接続されたドレイン(N6)は、互いに接続されている(後述される
図4に示すように、不揮発素子のハード層を接続するメタル層を介して接続される)。
スレーブラッチは、さらに、
・ノードN5とN6の接続ノード(後述される
図4のメタル層1(207))にドレインが接続され、ソースがGNDに接続され、制御信号WB(書き込み時にLow)をゲートに入力するNMOトランジスタT19をさらに備えている。トランジスタT19は、WBがHighのとき、すなわち、書き込み時以外は、オンし、トランジスタT12とT14のソースを不揮発素子R1、R2を介してGNDに接続する。トランジスタT15−18は、書き込み用トランジスタを構成している。
スレーブラッチは、さらに、
・トランジスタT16、T17のゲートに出力が接続された、書き込み用の2入力NOR回路NOR1と、
・トランジスタT18、T15のゲートに出力が接続された、書き込み用の2入力NOR回路NOR2と、を備えている。
2入力NOR回路NOR1の入力は、ノードN3とWBに接続されている。
2入力NOR回路NOR2の入力は、ノードN4とWBに接続されている。
WBがLowのとき、2入力NOR回路NOR1、NOR2は、ノードN3、N4を反転した信号を、それぞれ出力する。
【0066】
スレーブラッチは、さらに、
・電源とノードN3間に接続されたPMOSトランジスタT21と、
・電源とノードN4間に接続されたPMOSトランジスタT22と、
・ノードN3、N4間に接続されたPMOSトランジスタT20と、を備えている。
トランジスタT20〜T22のゲートは、制御信号LBに共通接続されている。
トランジスタT20〜T22は、プリチャージ・イコライズ回路を構成しており、LBがLowのとき、ノードN3、N4を電源電位にプリチャージ・イコライズする。
スレーブラッチは、さらに、
・ノードN3、N4に入力端子が接続された出力用のインバータ(反転バッファ)INV3、INV4を備えている。
【0067】
スレーブラッチにおいて、トランジスタT11−T14からなる保持回路にラッチされた相補のデータ(ノードN3、N4のデータ)は、2入力NOR回路NOR1、NOR2の第1の入力にそれぞれ入力される。書き込み制御信号WBは、トランジスタT19のゲートとNOR回路NOR1、NOR2の第2の入力に入力される。NOR回路NOR1、NOR2の出力は、トランジスタT17、T15のゲートにそれぞれ接続されている。
【0068】
ロード信号LBは、トランジスタT20−22のゲートに入力される。ロード信号LBがLowのとき、ノードN3、N4は電源電位にプリチャージ・イコライズされる。
【0069】
出力信号Qは、ノードN3に入力が接続されたインバータINV4から出力される。出力信号QBは、ノードN4に入力が接続されたインバータINV3から出力される。
【0070】
クロック信号CLKは、縦続接続されたインバータINV5とインバータINV6に入力され、インバータINV5とインバータINV6でそれぞれ生成された相補のクロック信号P1とP2は各クロックドインバータに供給される。また、P2はトランジスタT9、T10のゲートに供給される。
【0071】
図3に示した不揮発フリップフロップは、既存のフリップフロップの機能に加え、下記の機能を備えている。
【0072】
・スレーブラッチの保持回路に電気的に記憶しているデータを不揮発素子へ書き込むことができる。
【0073】
・不揮発素子に蓄えられているデータを読み出し、読み出したデータをスレーブラッチの保持回路で保持することができる。
【0074】
不揮発素子は、例えば、磁気抵抗効果を利用した強磁性トンネル接合素子(MTJ(Magnetic Tunnel Junction)素子)が用いられる。
【0075】
ここで、MTJ素子は、磁化方向が変化する強磁性層(フリー層)と、磁化方向が固定された強磁性層(固定層)と、フリー層と固定層の間に形成される絶縁層を含む構成を備えている。このようなMTJ素子に、膜面垂直方向に電流を流した際の抵抗値は、フリー層と固定層の磁化の方向によって変化する。
【0076】
フリー層の磁化と固定層の磁化が平行の場合、抵抗値は低く、
フリー層の磁化と固定層の磁化が反平行の場合、抵抗値は高くなる。
【0077】
この性質を利用して、MTJ素子では、この抵抗値、もしくは、フリー層の磁化の方向に、論理データを対応付ける。例えば、低抵抗状態を論理値‘0’、高抵抗状態を論理値‘1’とする。
【0078】
MTJ素子の書き込みは、
電流磁界を用いてフリー層の磁化方向を制御する磁場書き込み方式と、
スピントルク効果を利用してフリー層の磁化方向を制御するスピントルク書き込み方式と、が知られている。
【0079】
図4は、不揮発素子として、スピントルク効果を利用して書き込みを行う磁壁移動素子の素子近傍の断面を模式的に示す図である。なお、不揮発素子に接続されるトランジスタ(
図3のトランジスタ、T12、T14、T15、T16、T17、T18)はいずれも回路図記号で示されている。この不揮発素子は、基板に近い順から、
メタル層1(206、207、216))、
ハード層1(204、214)、ハード層2(205、215)、
フリー層(203、213)、
絶縁層(202、212)、
リファレンス層(201、211)
を含む。
【0080】
不揮発素子R1において、リファレンス層201は、不揮発レジスタのトランジスタT12に、ハード層1(204)はトランジスタT15とT16の接続点に接続される。
【0081】
ハード層2(205)は、メタル層1(207)、ハード層2(215)、不揮発素子R2のハード層1(214)を介して、トランジスタT17、T18の接続点に接続される。
【0082】
一例として、フリー層およびハード層は垂直磁気異方性を有する磁性薄膜を利用している。ハード層1(204)とハード層2(205)の磁化方向は逆向きに固定されている。フリー層(203)の磁化は、スピン偏極電流の向きによって、Z方向に沿って、上下にコントロールできる。例えば、ハード層1(204)からハード層2(205)に向かって電流を流した場合、偏極した電子は逆向きに流れ、ハード層2(205)と同じ向きにフリー層(203)の磁化は揃う。逆に、ハード層2(205)からハード層1(204)に向かって電流を流した場合、ハード層1(204)と同じ向きにフリー層(203)の磁化は揃う。不揮発素子R2についても同様である。
【0083】
図3を参照して、不揮発レジスタの書き込み動作を説明する。書き込み動作時、書き込み制御信号WBはLow電位とされる。不揮発素子R1、R2への書き込みデータはスレーブラッチのデータQに対応する。インバータINV4の出力データQが‘0’(Low電位とする)の場合、ノードN4は電源電位(High電位)、ノードN3はLow電位となり、NOR2の出力はLow、NOR1の出力はHighとなり、トランジスタT16とT17がオン、トランジスタT15とT18がオフになる。このとき、ノードN6(High電位)からノードN5(Low電位)へ書き込み電流が流れる。これにより、不揮発素子の抵抗R1は低抵抗状態、抵抗R2は高抵抗状態になり、データQに対応したデータ‘0’を不揮発素子は記憶する。
【0084】
一方、データQが‘1’(High電位)の場合、ノードN3は電源電位(High電位)、ノードN4はLow電位となり、NOR1の出力はLow、NOR2の出力はHighとなり、トランジスタT16とT17がオフ、トランジスタT15とT18がオンになる。このとき、ノードN5(High電位)からノードN6(Low電位)へ書き込み電流が流れる。これにより、不揮発素子の抵抗R1は高抵抗状態、抵抗R2は低抵抗状態になり、データQと対応したデータ‘1’を不揮発素子は記憶する。
【0085】
図3を参照して、不揮発レジスタのロード動作を説明する。ロード動作時、ロード信号LBはLow電位とされる。また、クロック信号CLKはLow電位であり、P1はHigh電位、P2はLow電位である。トランジスタT20、T21、T22はオンとなり、ノードN3、N4はHigh電位(電源電位)にプリチャージ・イコライズされる。
【0086】
ノードN4のHigh電位をゲートに受けるトランジスタT12はオン状態とされ、電源、ノードN3からトランジスタT12を介して不揮発素子R1に読み出し電流が流れる。また、ノードN3のHigh電位をゲートに受けるトランジスタT14はオン状態とされ、電源、ノードN4からトランジスタT14を介して不揮発素子R2に読み出し電流が流れる。なお、ロード時、WBはHighとされ、トランジスタT19がオンとされ、不揮発素子R1、R2に流れる読み出し電流はGNDに流れ込む。これらの読み出し電流の差に応じて、ノードN3とN4には微小な電位差が生じる。
【0087】
次に、ロード信号LBがLowからHighに変化すると、トランジスタ20−22がオフし、トランジスタT11−14の保持回路(差動ラッチ)により、ノードN3、N4の電位差が増幅される。不揮発素子に記憶しているデータが‘0’の場合、不揮発素子の抵抗R1は低抵抗状態、R2は高抵抗状態であるため、ノードN3はLowレベル、ノードN4はHighレベルになる。ノードN4の電位はインバータINV4で反転され,出力端子QはLowレベルとなる。すなわち、出力端子Qのデータは、不揮発素子のデータに対応した‘0’となる。
【0088】
一方、不揮発素子に記憶しているデータが‘1’の場合、不揮発素子の抵抗R1は高抵抗状態、R2は低抵抗状態であるため、ノードN3はHighレベル、ノードN4はLowレベルになり、出力端子QはHighレベルとなる。すなわち、出力端子Qのデータは、不揮発素子のデータに対応した‘1’となる。
【0089】
図5は、本発明の例示的な第1実施形態に係る半導体集積回路における不揮発レジスタと不揮発レジスタ制御回路(
図1の102)の構成を示す図である。n個の
フリップフロップ104(不揮発レジスタ103
)毎にアドレスA1を与えている。nは、例えば、16ビットのワード単位、8ビットのバイト単位等である。
【0090】
不揮発レジスタのアドレスは、アドレスA1からアドレスAmのm個である。典型的には、あるアドレスを指定すると、そのアドレスのn個の
フリップフロップ104(不揮発レジスタ
)を同時に制御することができる。また、あるアドレスを指定すると、あるアドレス領域の複数の不揮発レジスタを同時に制御できるようにしてもよい。
【0091】
不揮発レジスタ制御回路102は、
システムのクロック信号:CLK_SYSと、
レジスタのアドレス信号:A_REGと、
レジスタの揮発性データの書き込みイネーブル信号:WE_REGと、
レジスタへの入力データ:D_REGと、
不揮発素子への書き込みイネーブル信号:NVWE_REGと、
不揮発素子からのロードイネーブル信号:NVLE_REGと
が入力される。
【0092】
不揮発レジスタ制御回路102は、受け取った制御信号をもとに、各不揮発レジスタ103へ不揮発レジスタ制御信号を出力する。
【0093】
アドレスA1の不揮発レジスタへの不揮発レジスタ制御信号は、
クロック信号:CLK_REG(A1)、
入力データ:D_REG(A1)、
ロード信号(Lowアクティブ):LB_REG(A1)、
書き込み制御信号(Lowアクティブ):WB_REG(A1)
である。
【0094】
アドレスA1の不揮発レジスタ103は、出力信号Q_REG(A1)を出力する。アドレスA2からAmまでの
不揮発レジスタ
1032〜103mも同様である。
【0095】
図6は、
図5に示した本発明の例示的な第1実施形態に係る半導体集積回路において、命令コードが不揮発素子の書き込み命令の時の動作波形の一例を示す図である。
図6には、
システムのクロック信号:CLK_SYS、
アドレス:A_RAM、
アドレスA_RAMのデータ:RD_RAM、
レジスタのアドレス:A_REG、
不揮発素子への書き込みイネーブル信号:NVWE_REG、
アドレスA1のクロック:CLK_REG(A1)、
アドレスA1への書き込み制御信号WB:WB_REG(A1)、
アドレスA1のデータ:Q_REG(A1)、
アドレスA1の不揮発素子の抵抗値:R_REG(A1)、
アドレスA2のクロック:CLK_REG(A2)、
アドレスA2への書き込み制御信号WB:WB_REG(A2)、
アドレスA2のデータ:Q_REG(A2)、
アドレスA2の不揮発素子の抵抗値:R_REG(A2)
のタイミング波形が示されている。
【0096】
図5、
図6を参照して、不揮発素子の書き込み時の動作を説明する。時刻T1の直後に、中央処理装置は、記憶装置(
図1の100)へ、アドレスA_RAMとして、プログラムカウンタの値PC1を出力する。
【0097】
時刻T2に、中央処理装置は、記憶装置(
図1の100)のアドレスA_RAMのデータRD_RAMとして、命令OP1を受け取る。ここで、命令OP1は、
図2に示した命令形式であり、命令コードは、不揮発素子の書き込み命令のコードである。
【0098】
また、
命令OP1のアドレッシングモードは、シングルオペランド形式であり、アドレスA1のレジスタを指定するものとする。
【0099】
時刻T3に、中央処理装置の命令デコーダは、命令OP1を解釈して、レジスタのアドレスA_REGとしてA1を出力する。
【0100】
時刻T4に、中央処理装置の命令デコーダ(
図1の101)は、命令のオペコードOP1をデコードして、不揮発素子の書き込み
イネーブル信号NVWE_REGを不揮発レジスタ制御回路102に出力し、時刻T5に出力を終了する。
【0101】
時刻T6からT8までの間、不揮発レジスタ制御回路102は、選択されたアドレスA1のレジスタの書き込み制御信号WB_REG(A1)をLowレベルにし、不揮発レジスタ103に書き込み電流を流す。
【0102】
時刻T7に、アドレスA1の不揮発レジスタにおける不揮発素子の抵抗値R_REG(A1)は、保持していたデータQ_REG(A1)に対応した抵抗値R1に書き換わる。
【0103】
次のクロックサイクルでは、アドレスA2の不揮発レジスタにおける不揮発素子の書き込みが行われる動作波形を示しており、アドレスA1と同様の一連の過程で書き込みが行われる。
【0104】
図6に示すように、不揮発素子への書き込みを行う時刻T6とT8は、次の命令を記憶装置(
図1の100)からの読み出しサイクルの始まる時刻T11よりも後であってもよい。なんとなれば、不揮発素子への書き込みは、不揮発レジスタの出力を変化させずに行えるため、次の命令の読み出し動作への妨げにならないからである。
【0105】
上記のようにパイプライン的に動作させることにより、不揮発素子への書き込みに対する十分なセットアップ時間を確保できるとともに、短い時間で複数の命令を実行することができる。
【0106】
図7は、本発明の例示的な第1実施形態に係る半導体集積回路において、命令コード(OP1)が不揮発素子のロード命令の時の動作波形の一例を示す図である。
図7には、CLK_SYS、A_RAM、RD_RAM、A_REG、NV
LE_REG、CLK_REG(A1)、LB_REG(A1)、Q_REG(A1)、R_REG(A1)のタイミング波形が示されている。
図7を参照して、不揮発素子のロード時の動作を説明する。
【0107】
時刻T1の直後に、中央処理装置は、記憶装置(
図1の100)へ、アドレスA_RAMとして、プログラムカウンタの値PC1を出力する。
【0108】
時刻T2に、中央処理装置は、記憶装置(
図1の100)のアドレスA_RAMのデータRD_RAMとして、命令OP1を受け取る。ここで、命令OP1は、
図2に示した命令形式であり、命令コードは不揮発素子のロード命令のコードである。また、アドレッシングモードはシングルオペランド形式であり、アドレスA1のレジスタを指定するものとする。
【0109】
時刻T3に、中央処理装置の命令デコーダは、命令OP1を解釈して、レジスタのアドレスA_REGとしてA1を出力する。
【0110】
時刻T4に、中央処理装置の命令デコーダは、命令OP1を解釈して、不揮発素子の
ロードイネーブル信号NVLE_REGを、不揮発レジスタ制御回路(
図1の102)に出力し、時刻T5に出力を終了する。
【0111】
時刻T6からT8までの間、不揮発レジスタ制御回路102は、選択されたアドレスA1のレジスタのロード信号LB_REG(A1)をLowレベルとし、不揮発レジスタのロード動作を行う。
【0112】
時刻T7に、アドレスA1の不揮発レジスタにおける出力データQ_REG(A1)は、不揮発素子の抵抗値R_REG(A1)の抵抗値R1に対応した出力D1に書き換わる。なお、
図8に示すように、書き込み動作は、次のサイクル時刻T11に入る前に完了していてもよい。
【0113】
図8は、
図6と時刻T1からT5まで同じである。
図8において、
図6と異なるのは、T11の前の時刻T6からT8までの間、不揮発レジスタ制御回路102は、選択されたアドレスA1のレジスタの書き込み制御信号WB_REG(A1)をLowレベルとし、不揮発レジスタ103に書き込み電流を流す。
【0114】
時刻T7に、アドレスA1の不揮発レジスタにおける不揮発素子の抵抗値R_REG(A1)は、保持していたデータQ_REG(A1)に対応した抵抗値R1に書き換わる。
【0115】
時刻T11に、不揮発レジスタのデータはシステムのクロックCLK_SYSと同期して変化し得る。
図8では、時刻T11の前のデータを保存する。一方、
図6では、時刻T11の後のデータを、不揮発素子に保存する。
【0116】
あるいは、
図9に示すように、ロード動作は1サイクルで行ってもよい。
図7は、ロード動作に、2サイクル要していたのに対し、
図9のロード動作は、1サイクル要する点が異なる。
【0117】
図9は、
図7と時刻T1からT7まで同じである。異なるのは、時刻T11以降の次のサイクルに、アドレスA2のレジスタのロード動作を行っている点である。
【0118】
半導体集積回路がクロックCLK_SYSに同期している場合、レジスタの値はT11の直後に更新されうるが、ロード動作を行うレジスタは、遅延があり、ロード動作後のT7に更新される。この遅延を半導体集積回路が許容できる場合には、
図9のようにロード命令を1サイクルとしてもよい。具体的には、ロードしたレジスタの後段のレジスタのセットアップマージンを十分確保できる場合に、
図9のような動作が可能である。
【0119】
また、
図10に示すようにロード動作は、次のサイクル時刻T11に入る前に完了していてもよい。
【0120】
図10は、
図7と時刻T1からT5まで同じである。異なるのは、時刻T11の前の時刻T6からT7までの間、不揮発レジスタ制御回路102は、選択されたアドレスA1のレジスタのロード信号LB_REG(A1)をLowベルとし、不揮発レジスタ103の不揮発素子から保持回路にデータをロードする。
【0121】
時刻T7に、アドレスA1の不揮発レジスタにおける出力データQ_REG(A1)は、不揮発素子の抵抗値R_REG(A1)の抵抗値R1に対応したD1(不揮発素子から保持回路に読み出されたデータ)に切り替わる。
【0122】
上記のように、本実施形態の半導体装置(半導体集積回路)は、ロジック素子と不揮発メモリ素子を一体化することにより、電源オフに先立ってデータを退避する際に、データ転送遅延、及びデータ転送する配線や回路の消費電力を低減できる。
【0123】
さらに、関連技術の半導体集積回路が、モジュール単位で不揮発レジスタの書き込みやロードを行っているため、不必要な書き込みやロードに要する電力を消費していたのに対し、本実施形態によれば、不揮発レジスタ単位で制御できるため、不必要なデータの退避、復帰に要する電力消費を低減できる。これは、不揮発レジスタにアドレスを付与し、そのアドレスの指定する命令中のビットと、不揮発レジスタの書き込みやロードの命令とを備えているためである。さらに、指定した不揮発レジスタの属するグループに対して書き込み、ロードすることにより、データの退避、復帰に必要な時間的なオーバーヘッドを抑えることができる。
【0124】
(第2実施形態)
図11は、本発明の第2実施形態の構成を示す図である。本実施形態においては、
図1を参照して説明した前記第1実施形態に加え、演算装置105が追加されている。
【0125】
演算装置105は、命令のオペランドAとオペランドBを入力し、命令コードで指定される演算(例えばオペランドAとオペランドBに関する2項演算)を実行し、演算結果を出力する。
【0126】
図11では、オペランドA、Bとしてレジスタの値が用いられ、演算結果がレジスタに書き戻される場合を示している。なお、オペランドとして、メモリのデータや、モジュール内のレジスタの値を使用することもできる。演算装置105は、2項演算以外にも、単項演算を行ってもよい。
【0127】
図12は、命令フォーマットを示す図である。
図12に示すように、第2の実施形態では、命令に、不揮発素子の書き込みモードを設定できるビット(ビットフィールド)を含む。
【0128】
(a+b+c+d)ビットからなる命令のうち、
1からaビットまではレジスタの指定に利用される。
【0129】
a+1ビットからa+bビットまでのbビットはアドレッシングモードの指定に利用される。
【0130】
a+b+1ビットからa+b+cビットまでのcビットは、命令コードの指定に利用される。
【0131】
a+b+c+1からa+b+c+dビットまでのdビットは、不揮発素子の書き込みモードビットWMB1からWMBdであり、不揮発素子の書き込みモードの指定に利用される。
【0132】
不揮発レジスタの書き込みモードWMB1からWMBdの各ビットと、複数の不揮発レジスタが対応付けられる。
【0133】
具体的には、アドレスA1からAmまでのm個の不揮発レジスタ103
1〜103mは、q個のグループG1からGqに分割される。
【0134】
それぞれのグループGy(1≦y≦q)は、不揮発素子書き込みモードビットWMB1からWMBdのうちの一つWMBz(1≦z≦d)と1対1に対応付けられるか、もしくは、対応する不揮発素子書き込みモードビットが存在しないとする。
【0135】
グループGy(1≦y≦q)に属するアドレスAxの不揮発レジスタの保持回路へ書き込みを行う際に、対応付けられた不揮発素子書き込みモードビットWMBz(1≦z≦d)が‘1’の場合、保持回路への書き込みデータを、指定されたアドレスAxの不揮発レジスタの不揮発素子へも書き込む。
【0136】
前記対応付けられた不揮発素子書き込みモードビットWMBzが‘0’の場合には、保持回路への書き込みデータを指定されたアドレスAxの不揮発レジスタの不揮発素子へ書き込むことはしない。
【0137】
前記対応付けられた不揮発素子書き込みモードビットWMBzが存在しない場合、保持回路への書き込みデータを、前記指定されたアドレスAxの不揮発レジスタの不揮発素子へ書き込むことはしない(不揮発素子書き込みモードビットWMBzが‘0’の場合と同様)。
【0138】
第2実施形態では、不揮発レジスタ制御回路102は、不揮発レジスタにデータが書き戻されると同時に、不揮発素子にも、そのデータを書き込むか、書き込まないかを、書き込みモードビットを元に判断する。
【0139】
以下、簡単のため、d=1ビット、かつ、不揮発レジスタのグループ数q=1とし、不揮発素子書き込みモードビットWMB1がグループG1に対応付けられるとする。命令の読み出しから不揮発レジスタの制御までの過程を簡単に説明する。
【0140】
はじめに、中央処理装置は、プログラムカウンタPCで指定されるアドレスを出力し、そのアドレスに記憶されている命令を記憶装置
100から読み出す。
【0141】
命令デコーダ101は、記憶装置100から読み出した命令を解読する。
【0142】
命令コードの不揮発素子書き込みモードビットWMB1が1の場合、不揮発レジスタ制御回路102は、指定された不揮発レジスタ103の保持回路へ、演算結果を書き戻すと同時に、不揮発素子に演算結果を書き込む。例えば、
アドレス(レジスタ番号
)4と、
アドレス(レジスタ番号
)5の不揮発レジスタ103の加算結果を、
アドレス(レジスタ番号
)5の不揮発レジスタ103に書き戻すと同時に、
アドレス(レジスタ番号
)5の不揮発素子に、データを書き込む場合には、
レジスタの指定ビットを、
アドレス(レジスタ番号
)4と、
アドレス(レジスタ番号
)5に設定し、
アドレッシングモードを、レジスタとレジスタとの間で演算するダブルオペランドモードとし、
命令コードを加算命令とし、
不揮発レジスタの不揮発素子の書き込みモードに設定すればよい。
【0143】
図13は、本発明の例示的な第2実施形態において、不揮発素子の書き込みモードの動作波形の一例を示す図である。
図13、
図11を参照して、不揮発レジスタへの書き込みと同時に、不揮発素子への書き込みを同時に行う際の動作について説明する。
【0144】
時刻T1直後に、中央処理装置(プログラムカウンタ)は、記憶装置100へアドレスA_RAMとして、プログラムカウンタの値PC1を出力する。
【0145】
時刻T2に、命令デコーダ101は、記憶装置100のアドレスA_RAMの読み出しデータRD_RAMとして、命令OP1を受け取る。ここで、命令OP1は、
図12に示した命令形式である。不揮発素子の書き込みモードビットを1とする。
【0146】
また、命令コードは、ある演算を指定し、
不揮発レジスタAxとA1との間でその演算を実施し、その結果をレジスタA1に書き戻す。
【0147】
時刻T3に、命令デコーダ101は、命令OP1を解釈して、レジスタのアドレスA_REGとして、A1を出力する。
【0148】
また、時刻T3に演算装置105は、レジスタへの入力データD_REGとして演算結果D1を出力する。
【0149】
時刻T4に、命令デコーダ101は、命令OP1を解釈して、不揮発素子の書き込みイネーブル信号NVWE_REGを、不揮発レジスタ制御回路102に出力し、時刻T5に出力を終了する。
【0150】
時刻T9に、不揮発レジスタ制御回路102は、不揮発レジスタ103の揮発データの書き込み信号
WB_REG(A1)をHighレベルとし、アドレスA1の不揮発レジスタの不揮発素子にデータD1を書き込む。
【0151】
時刻T6からT8までの間、不揮発レジスタ制御回路102は、選択されたアドレスA1の不揮発レジスタ103の書き込み制御信号WB_REG(A1)をLowレベルとし、不揮発レジスタの不揮発素子の書き込み動作を行う。
【0152】
時刻T7に、アドレスA1の不揮発レジスタにおける不揮発素子の抵抗値R_REG(A1)は、演算結果D1に対応した抵抗値R1に切り替えられる。
【0153】
次のクロックサイクルでは、アドレスA2の不揮発レジスタ103における不揮発素子の書き込みが行われる動作波形を示しており、アドレスA1と同様の一連の過程で書き込みが行われる。
【0154】
上記のように、第2の実施形態では、前記第1の実施形態と同様の効果を得ることができる。
【0155】
さらに、前記第1の実施形態に比較して、不揮発レジスタの揮発性データの書き込みと同時に不揮発素子への書き込むことができる。したがって、前記第1実施形態では、揮発性データの書き込みと不揮発素子の書き込みの2つの命令を必要としていたのに対し、第2実施形態では、1つの命令サイクルで実施できるため、実行時間を短縮することができ、かつ、プログラム領域を縮小することができる。
【0156】
さらに、不意の電源供給の停止に供え、常に揮発データと不揮発データの一貫性を保つことができるため、電源障害に対する耐性が高い半導体集積回路を提供することができる。
【0157】
(第3実施形態)
図14は、本発明の第3実施形態の構成を示す図である。本実施形態の半導体集積回路は、
図11を参照して説明した前記第2実施形態に、dビットの不揮発素子書き込みモードレジスタ106が追加されている。
【0158】
ここで、不揮発素子書き込みモードレジスタ106は、必ずしも不揮発レジスタである必要はなく、揮発性データのみを保持するレジスタであってもよい。
図15は、本発明の第3実施形態に係る不揮発レジスタを備えた半導体集積回路の命令形式を示す図である。
【0159】
第3の実施形態は、前記第2の実施形態と比較し、命令内に、不揮発素子書き込みモードを設定するビットフィールドが存在しない。つまり、不揮発素子書き込みモードを指定するビットが、前記第2の実施形態では命令内に設けられているが、第3の実施形態では、レジスタとして用意されている。
【0160】
不揮発レジスタの書き込みモードビットWMB1からWMBdの各ビットと、複数の不揮発レジスタが対応付けられる。具体的には、前記第2実施形態と同様、m個の不揮発レジスタ
1031〜103mのアドレスA1からAmは、q個のグループG1からGqに分割される。それぞれのグループGy
(1≦y≦q)は、不揮発素子書き込みモードビットWMB1からWMBdのうちのひとつWMBz
(1≦z≦d)と1対1に対応付けられるか、もしくは、対応する不揮発素子書き込みモードビットが存在しないとする。
【0161】
グループGy(1≦y≦q)に属するアドレスAxの不揮発レジスタの保持回路へ書き込みを行う際に、対応付けられた不揮発素子書き込みモードビットWMBz(1≦z≦z)が‘1’の場合、保持回路への書き込みデータを指定されたアドレスAxの不揮発レジスタの不揮発素子へも書き込む。
【0162】
対応付けられた不揮発素子書き込みモードビットWMBzが‘0’の場合、保持回路への書き込みデータを指定されたアドレスAxの不揮発レジスタの不揮発素子へは書き込まない。
【0163】
対応付けられた不揮発素子書き込みモードビットWMBzが存在しない場合、保持回路への書き込みデータを指定されたアドレスAxの不揮発レジスタの不揮発素子へは書き込まない。
【0164】
このように、第3の実施形態では、不揮発レジスタ制御回路102は、不揮発レジスタ103にデータが書き戻されると同時に、不揮発レジスタ103の不揮発素子にも、そのデータを書き込むか書き込まないかを、書き込みモードレジスタ106の設定情報(不揮発素子書き込みモードビット情報)を基に、判断する。
【0165】
簡単のため、d=1ビット、かつ、不揮発レジスタのグループ数q=1とし、不揮発素子書き込みモードビットWMB1がグループG1に対応付けられるものとする。不揮発素子書き込みモードレジスタの設定から、不揮発レジスタの制御までの過程を簡単に説明する。
【0166】
はじめに、中央処理装置のプログラムカウンタPCで指定されるアドレスを出力し、そのアドレスに記憶されている命令を記憶装置
100から読み出す。
【0167】
命令デコーダ101は、記憶装置100から読み出した命令を解読する。
【0168】
命令コードが、不揮発素子書き込みモードレジスタWMB1を‘1’に設定する命令である場合、不揮発素子書き込みモードレジスタの値は‘1’に設定され、そのレジスタ情報が不揮発レジスタ制御回路102に与えられる。
【0169】
その後、あるクロックサイクルで読み出した命令が、演算結果を不揮発レジスタ103の保持回路に書き込む命令であった場合、不揮発レジスタ制御回路102は、不揮発素子書き込みモードレジスタ106の値を参照する。不揮発素子書き込みモードレジスタ106の対応するビットの値が‘1’であることを確認できれば、その選択されたアドレスの不揮発レジスタに揮発性データを書き込むと同時に、当該不揮発レジスタの不揮発素子のデータを書き換える。この場合、詳細な書き込み時の波形は、
図13と同じであるため、説明を省略する。
【0170】
上記のように、第3の実施形態によれば、前記第1の実施形態と同様の効果を得ることができる。
【0171】
さらに、第3の実施形態によれば、前記第2の実施形態に比較し、既存のアーキテクチャとの親和性が高い。つまり、前記第2の実施形態において、不揮発レジスタの書き込みモードを指定するビットを加える必要があるが、既存の命令コードに空いているビットがない場合も有り得る。この場合、命令のビット幅を広げる、または、2つの命令に分ける必要があり、既存のアーキテクチャを大きく変更する必要がある。
【0172】
それに対し、第3の実施形態によれば、不揮発素子書き込みモードレジスタ106を設けることで、命令コードを変更する必要がなく、既存のアーキテクチャをそのまま利用できるという利点がある。
【0173】
(第4実施形態)
図16は、本発明の第4の実施形態の構成を示す図である。
図16を参照すると、第4の実施形態は、前記第1実施形態に加え、演算装置105と、ダーティビット107が追加されている。ここで、ダーティビットは、必ずしも不揮発レジスタである必要はなく、従来の揮発性データのみを保持するレジスタであってもよい。
【0174】
図16において、d個からなるダーティビットDTY1からDTYdまでをレジスタ107に備え、m個の不揮発レジスタのアドレスA1からAmは、s個のグループG1からGsに分割される。それぞれのグループGy(1≦y≦s)は、ダーティビットDTY1からDTYdのうちの一つDTYzと1対1に対応付けられるか、もしくは、対応する不揮発素子書き込みモードビットが存在しない。
【0175】
グループGy(1≦y≦s)に属する全ての不揮発レジスタの保持回路のデータと不揮発素子のデータが一致している場合に、
グループGyに対応付けられたダーティビットDTYz(1≦z≦d)が存在していれば、DTYzを‘0’にセットする。
一致していない可能性がある場合に、ダーティビットDTYzが存在していれば、DTYzを‘1’にセットする。
【0176】
命令デコーダ101が解釈した命令がアドレスAxの不揮発レジスタの不揮発素子への書き込み命令の時、アドレスAxの不揮発レジスタの属するグループGyに対応したダーティビットDTYzが存在したとき、
ダーティビットDTYzが‘1’の場合、アドレスAxの不揮発レジスタの不揮発素子へ、保持回路のデータを書き込み、
ダーティビットDTYzが‘0’の場合、アドレスAxの不揮発レジスタの不揮発素子へ、保持回路のデータを書き込まない。
【0177】
図17は、本発明の第4実施形態における、ダーティビットの状態遷移を示す図である。不揮発レジスタ制御回路102は、下記のダーティビットの状態遷移を実現するように、データを書き込む。なお、各ダーティビットの値は、例えば、既存の揮発性のフリップフロップ(通常のフリップフロップ)に格納され、書き込みは、通常のフリップフロップの書き込みと同様に行われる。
【0178】
グループGyに属するアドレスAxの不揮発レジスタの保持回路は、電源オンに伴って、予め設定されている初期値が設定される。
【0179】
グループGyに対応したダーティビットDTYzが存在するとき、ダーティビットDTYzを‘1’に設定する。
アドレスAxの不揮発レジスタの保持回路へ揮発データを書き込んだ際には、ダーティビットDTYzが存在するとき、ダーティビットDTYzを‘1’に設定する。
グループGyに属する全ての不揮発レジスタの保持回路へ、不揮発素子のデータをロードした際には、ダーティビットDTYzが存在するとき、ダーティビットDTYzを‘0’に設定する。
グループGyに属する全ての不揮発レジスタの不揮発素子へ、保持回路のデータを書き込んだ際には、ダーティビットDTYzが存在するとき、ダーティビットDTYzを‘0’に設定する。
【0180】
次にダーティビットの値の利用について詳細に説明する。上記のように不揮発レジスタ制御回路102は、不揮発素子への書き込み時にダーティビットの値を参照する必要がある。不揮発レジスタ制御回路102は、ダーティビットの出力のうち、所望のダーティビットの値を選択することができる。
【0181】
例えば、アドレスAxの不揮発レジスタの不揮発素子への書き込みの場合、
命令デコーダ101から与えられたアドレスAxの情報を元にマルチプレクサ(不図示)等の回路により、複数あるダーティビットの出力の中から、アドレスAxの属するグループGyのダーティビットDTYzの値を選択する。
【0182】
そして、不揮発レジスタ制御回路102は、当該ダーティビットDTYzの値に応じて、不揮発素子への書き込みを行うか否かを判断する。
【0183】
ダーティビットは、不揮発素子の書き込み消費電力を低減するのに有用である。
【0184】
前記第1実施形態では、電源オフに先立ち、データの退避をきめ細かに行うことができるが、どのデータが既に退避されており、どのデータがまだ退避されていないかを管理することが困難な場合がある。その場合、すべてのデータを退避することでその問題を解決しようとすると、書き込みの消費電力は大きくなる。
【0185】
これに対して、第4の実施形態においては、電源のオフに先立ち、ダーティビットを用い、ダーティビットが‘1’の不揮発レジスタに対してのみ、不揮発素子にデータを書き込む。そのため、電源オフに先立ち、すべての不揮発レジスタにおいて、データを、不揮発レジスタの不揮発素子へ書き込む必要がなく、書き込みを行う不揮発素子の数を減らすことができる。
【0186】
前記第2、第3実施形態では、常にデータを不揮発素子へ退避することを可能とするため、どのデータが退避されているか否かを管理する必要がない。
【0187】
しかしながら、同じアドレスへ複数回書き込みがあった場合、その度に、不揮発素子へ書き込むことは、無駄に電力を消費することになる。
【0188】
第4の実施形態では、上記のように、
不揮発レジスタの揮発性の
保持回路に書き込む度に不揮発素子のデータを書き換えることは行わないため、複数回同じアドレスのレジスタへ書き込みが起こった場合でも、無駄な不揮発素子の書き込みの回数を低減できる。
【0189】
また、第4の実施形態では、不意の電源遮断に備えた復元ポイントの作成を、より低消費電力で実現できる。これは、上記のように、ダーティビットが1の
不揮発レジスタのみ、不揮発素子への書き込みを行えばよいためである。
【0190】
上記のように、第4の実施形態は、前記第1実施形態と同様の効果を得ることができるほか、さらに、ダーティビットを備えたことにより、書き込み行う不揮発素子の数や書き込みの回数を低減することができ、データ退避のための遅延や消費電力を容易に低減できる。
【0191】
以上、いくつかの実施の形態に基づき本発明を具体的に説明したが、本発明は上述の実施の形態に限定されるものではない。本発明の要旨を逸脱しない範囲で種々の変更を施すことができ、これらの変形例も本発明に含まれる。例えば、上記は中央処理装置内のレジスタを中心に説明したが、周辺モジュール内のレジスタにも容易に拡張でき、本発明に含まれる。また、各実施形態を組み合わせた実施形態も、同様の効果が得られ、本発明に含まれる。なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。