(57)【特許請求の範囲】
【請求項１】
メモリセルと、前記メモリセルを第１の抵抗値から第２の抵抗値に変化させる書き込み電流を生成する書き込み回路と、前記メモリセルに流れる前記書き込み電流に基づいて第１の電流を生成する第１の電流生成回路と、前記メモリセルに流れる前記書き込み電流に基づいて第２の電流を生成する第２の電流生成回路と、前記メモリセルが前記第１の抵抗値のときの前記第２の電流に基づいて前記メモリセルが前記第１の抵抗値のときに生成される参照値を保持するホールド回路と、前記メモリセルが前記第１の抵抗値から前記第２の抵抗値に変化する過程での前記第１の電流の変化に基づいて生成される検出値と前記参照値とを比較する比較器と、前記検出値と前記参照値との比較結果に基づいて前記書き込み電流を停止する書き込み電流制御回路と、を具備する不揮発性半導体メモリ。
【請求項２】
前記メモリセルに前記書き込み電流を流す最長の期間は、第１の書き込みイネーブル信号により決定され、前記書き込み電流制御回路は、前記比較結果に基づいて前記第１の書き込みイネーブル信号より短い第２の書き込みイネーブル信号を生成し、前記メモリセルに前記書き込み電流を流す期間は、前記第１又は第２の書き込みイネーブル信号により決定される、請求項１に記載の不揮発性半導体メモリ。
【請求項３】
前記第１及び第２の電流生成回路の各々は、カレントミラー回路である、請求項１又は２に記載の不揮発性半導体メモリ。
【請求項４】
前記第２の電流は、前記メモリセルが前記第１の抵抗値のときの前記第１の電流と、前記メモリセルが前記第２の抵抗値のときの前記第１の電流との間にある、請求項１乃至３のいずれか１項に記載の不揮発性半導体メモリ。
【請求項５】
前記第２の電流は、前記メモリセルが前記第１の抵抗値のときの前記第１の電流より小さく、前記第１の抵抗値は、前記第２の抵抗値よりも低い、請求項１乃至４のいずれか１項に記載の不揮発性半導体メモリ。
【請求項６】
前記第２の電流は、前記メモリセルが前記第１の抵抗値のときの前記第１の電流より大きく、前記第１の抵抗値は、前記第２の抵抗値よりも高い、請求項１乃至４のいずれか１項に記載の不揮発性半導体メモリ。
【請求項７】
前記参照値及び前記検出値は、電圧値である、請求項１乃至６のいずれか１項に記載の不揮発性半導体メモリ。
【請求項８】
前記メモリセルは、不変の磁化を持つ第１の磁性層と、可変の磁化を持つ第２の磁性層と、前記第１及び第２の磁性層間の非磁性層と、を備える、請求項１乃至７のいずれか１項に記載の不揮発性半導体メモリ。
【請求項９】
メモリセルと、前記メモリセルを第１の抵抗値から第２の抵抗値に変化させる書き込み電流を生成する書き込み回路と、前記書き込み電流より小さい第１の電流を生成する第１のカレントミラー回路と、前記書き込み電流より大きい第２の電流を生成する第２のカレントミラー回路と、前記書き込み電流に対応した第３の電流を生成する第３のカレントミラー回路と、前記メモリセルが前記第１の抵抗値のときの前記第１又は第２の電流に基づいて前記メモリセルが前記第１の抵抗値のときに生成される参照値を保持するホールド回路と、前記第３の電流の変化に基づいて生成される検出値と前記参照値とを比較する比較器と、前記検出値と前記参照値との比較結果に基づいて前記書き込み電流を停止する書き込み電流制御回路と、を具備する不揮発性半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、不揮発性半導体メモリに関する。
【背景技術】
【０００２】
微細化に伴うSRAM (Static Random Access Memory)のセル面積の増加とスタンバイ電力の増加により、プロセッサのキャッシュメモリに、これまで使われてきたSRAMではなく、STT (Spin Transfer Torque)-MRAM (Magnetic Random Access Memory)などの、不揮発、大容量、かつ、高速な、次世代不揮発性半導体メモリを利用する研究が進められている。
【０００３】
例えば、STT-MRAMは、不揮発にデータを記憶可能であるため、従来のSRAMよりも、スタンバイ電力を大きく削減できる。また、STT-MRAMのセル面積は、SRAMのセル面積よりも小さい。例えば、1ビットを記憶するに当たり、STT-MRAMは、SRAMのセル面積の1/4〜1/10のセル面積があれば十分である。さらに、STT-MRAMは、SRAMに迫る高速読み出し/書き込み動作が可能である。
【０００４】
このように、次世代不揮発性半導体メモリは、プロセッサの性能向上に寄与すると期待されている。
【０００５】
一方、次世代不揮発性半導体メモリは、例えば、メモリセルにデータを書き込むときに比較的大きな書き込み電流を必要とする。このため、書き込み時における消費電力を削減するため、できるだけ短い書き込みパルス幅で書き込みを行うことが必要である。
【０００６】
しかし、一般的にメモリセルの書き込み特性（書き込みに必要な書き込みパルス幅）には、ばらつきがある。これを考慮すると、書き込みパルス幅は、最も特性が悪いメモリセルに合わせなければならず、結果として、書き込みパルス幅を十分に短くして、低消費電力化を図ることが難しい。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−１０９３７４号公報
【特許文献２】特開２００６−２９４１７８号公報
【特許文献３】特開２０１１−１３８５９８号公報
【特許文献４】特開２０１２−２２７２６号公報
【非特許文献】
【０００８】
【非特許文献１】In Proceedings of IEEE International Magnetic Conference, pp. 2506-2507. "Optimally Self-Terminated Compact Switching Circuit Using Continuous Voltage Monitoring Achieving High Read Margin for STT MRAM and Logic"; Suzuki et al.;2014
【非特許文献２】P. Zhou, et al., “Energy Reduction for STT-RAM Using Early Write Termination,” ICCAD 2009
【発明の概要】
【発明が解決しようとする課題】
【０００９】
実施形態は、メモリセル毎に書き込みパルス幅を可変とすることにより書き込み時の低消費電力化を図る技術を提案する。
【課題を解決するための手段】
【００１０】
実施形態によれば、不揮発性半導体メモリは、メモリセルと、前記メモリセルを第１の抵抗値から第２の抵抗値に変化させる書き込み電流を生成する書き込み回路と、前記メモリセルに流れる前記書き込み電流に基づいて第１の電流を生成する第１の電流生成回路と、前記メモリセルに流れる前記書き込み電流に基づいて第２の電流を生成する第２の電流生成回路と、前記メモリセルが前記第１の抵抗値のときの前記第２の電流に基づいて生成される参照値を保持するホールド回路と、前記メモリセルが前記第１の抵抗値から前記第２の抵抗値に変化する過程での前記第１の電流の変化に基づいて生成される検出値と前記参照値とを比較する比較器と、前記検出値と前記参照値との比較結果に基づいて前記書き込み電流を停止する書き込み電流制御回路と、を備える。
【図面の簡単な説明】
【００１１】
【図１】不揮発性半導体メモリの主要部を示す図。
【図２Ａ】書き込み電流制御回路の例を示す図。
【図２Ｂ】書き込み電流制御回路の例を示す図。
【図３】“０”−書き込み時の書き込み電流検出回路の例を示す図。
【図４】図３の回路の動作波形を示す図。
【図５】“１”−書き込み時の書き込み電流検出回路の例を示す図。
【図６】図５の回路の動作波形を示す図。
【図７】“０”−書き込み時の書き込み電流検出回路の変形例を示す図。
【図８】“１”−書き込み時の書き込み電流検出回路の変形例を示す図。
【図９】“０”−書き込み時の書き込み電流検出回路の変形例を示す図。
【図１０】“１”−書き込み時の書き込み電流検出回路の変形例を示す図。
【図１１】不揮発キャッシュシステムの例を示す図。
【図１２】磁気抵抗効果素子の例を示す図。
【図１３】磁気抵抗効果素子の例を示す図。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら実施例を説明する。
【００１３】
以下の実施例は、書き込み動作がメモリセルに書き込み電流を流すことにより行われる不揮発性半導体メモリ、例えば、メモリセルアレイが複数のセルユニットを備え、かつ、１つのセルユニットが直列接続されるメモリセルとアクセストランジスタと、を備える不揮発性半導体メモリに適用される。
【００１４】
ここで、メモリセルとは、データを記憶する素子のことである。例えば、メモリセルは、磁気抵抗効果素子、相変化素子などの抵抗変化素子を備える。また、アクセストランジスタとは、メモリセルアレイの複数のロウのうちの１つを選択する素子のことである。例えば、アクセストランジスタは、ゲートがワード線に接続されるFET（Field Effect Transistor）を備える。
【００１５】
このような不揮発性半導体メモリにおいて、以下の実施例では、メモリセルの書き込み特性（書き込みに必要な書き込みパルス幅）に応じて、メモリセル毎に、書き込みパルス幅を可変とする技術を提案する。
【００１６】
従来、書き込みパルス幅は、一定であり、かつ、書き込みエラーを防止するため、書き込み特性が最も悪いメモリセルに合わせて長めに設定するのが一般的である。この場合、書き込み特性が良いメモリセルについては、早期に書き込みが完了し、かつ、書き込みが完了した後も書き込み電流が流れ続けることになる。これでは、書き込み時の低消費電力化を図ることが難しい。
【００１７】
しかし、メモリセル毎に書き込みパルス幅が可変可能であれば、メモリセルの書き込み特性に応じて、メモリセル毎に最適な書き込みパルス幅を設定できる。この場合、メモリセルの書き込み特性によらず、全てのメモリセルについて、書き込みが完了した直後に書き込み電流を停止させることができる。従って、書き込み時の低消費電力化を図ることができる。
【００１８】
ところで、メモリセル毎に書き込みパルス幅を最適値に設定するためには、メモリセル毎に書き込みが完了したか否かを正確に検出する必要がある。
【００１９】
そのために、以下の実施例では、第一に、データ書き込みの対象となる現在アクセスしているメモリセルに流れる書き込み電流をモニタリングし、それから検出値（電流値/電圧値）を生成する。また、この検出値を、参照値（電流値/電圧値）と比較することにより、書き込みが完了したか否かを判定する。
【００２０】
また、第二に、参照値は、固定値ではなく、メモリセル毎に、そのメモリセルに流れる書き込み電流に基づいて生成する。なぜなら、参照値が固定値のときは、メモリセルの“０”/“１”抵抗値のばらつきや、配線抵抗/容量に起因するノイズなどにより、参照値が閾値として機能しなくなる場合があるからである。
【００２１】
例えば、メモリセルに書き込み電流を流し始めた後、かつ、メモリセルの抵抗値が変化する前（書き込みが完了する前）に、メモリセルに流れる書き込み電流に基づいて、参照値を生成する。即ち、メモリセルに書き込み電流を流し始めてから書き込み電流が第１の安定値に達したとき、その第１の安定値に基づいて参照値を生成する。
【００２２】
また、参照値を生成した後、メモリセルに書き込み電流を流し続けると、メモリセルの抵抗値が変化する、即ち、書き込みが完了するため、メモリセルに流れる書き込み電流は、第１の安定値から第２の安定値に変化する。この変化は、検出値の変化として表れるため、上述のように、検出値を参照値と比較することにより、書き込みが完了したか否かを判定する。
【００２３】
このように、メモリセルによらず、参照値を、常に、書き込み完了前のメモリセルに流れるセル電流（検出値）と、書き込み完了後のメモリセルに流れるセル電流（検出値）と、の中間値に設定することにより、書き込みが完了したか否かを正確に検出できる。
【００２４】
［全体構成］  
図１は、不揮発性半導体メモリの主要部を示している。
【００２５】
メモリセルアレイ11は、複数のセルユニットCUのアレイを備える。複数のセルユニットCUの各々は、例えば、直列接続されるメモリセルとアクセストランジスタとを備える。ｉ本のワード線WL0, WL1, …WL(i-1)は、例えば、アクセストランジスタの制御端子に接続される。但し、ｉは、２以上の自然数である。
【００２６】
ワード線ドライバ12は、ｉ本のワード線WL0, WL1, …WL(i-1)の一端に接続される。ワード線ドライバ12は、アドレス信号に基づいて、ｉ本のワード線WL0, WL1, …WL(i-1)のうちの１本、即ち、メモリセルアレイ11の複数のロウのうちの１つを選択する。
【００２７】
ｊ個の書き込み回路13a-0, 13a-1, …13a-(j-1)は、複数のカラムに対応して設けられる。但し、ｊは、２以上の自然数である。書き込み回路13a-0, 13a-1, …13a-(j-1)は、それぞれ、ビット線対BL0, bBL0, BL1, bBL1, …BL(j-1), bBL(j-1)に接続される。本例では、１つのカラムに対して１つの書き込み回路13a-x（xは、1〜(j-1)のうちの１つ）が設けられるが、これに代えて、複数のカラムに対して１つの書き込み回路13a-xを設けてもよい。
【００２８】
書き込み回路13a-0, 13a-1, …13a-(j-1)は、それぞれ、セルユニットCU内のメモリセルを第１の抵抗値から第２の抵抗値に変化させる書き込み電流を生成する書き込みドライバを備える。但し、メモリセルが２値を記憶可能であるときは、第１及び第２の抵抗値は、互いに異なる抵抗値である。また、メモリセルが３値以上の多値を記憶可能であるときは、第１及び第２の抵抗値は、３つ以上の抵抗値のうちの１つである。
【００２９】
同様に、ｊ個の書き込み回路13b-0, 13b-1, …13b-(j-1)は、複数のカラムに対応して設けられる。書き込み回路13b-0, 13b-1, …13b-(j-1)は、それぞれ、ビット線対BL0, bBL0, BL1, bBL1, …BL(j-1), bBL(j-1)に接続される。本例では、１つのカラムに対して１つの書き込み回路13b-y（yは、1〜(j-1)のうちの１つ）が設けられるが、これに代えて、複数のカラムに対して１つの書き込み回路13b-yを設けてもよい。
【００３０】
書き込み回路13b-0, 13b-1, …13b-(j-1)は、それぞれ、書き込み回路13a-0, 13a-1, …13a-(j-1)で生成された書き込み電流を吸収する書き込みシンカーを備える。
【００３１】
制御回路16は、第１の書き込みイネーブル信号WE及びホールド信号HOLDを生成する。第１の書き込みイネーブル信号WEは、不揮発性半導体メモリ（チップ）内の全ての書き込み回路13a-0, 13a-1, …13a-(j-1)に共通に供給される。ホールド信号HOLDは、参照値を求めるためのサンプリングポイントを決定する。
【００３２】
第１の書き込みイネーブル信号WE及びホールド信号HOLDは、書き込み電流制御回路（Ｃ）14-0, 14-1, …14-(j-1)に入力される。
【００３３】
書き込み電流制御回路（Ｃ）14-0, 14-1, …14-(j-1)は、第１の書き込みイネーブル信号WE、及び、書き込み停止信号Wstop0, Wstop1, …Wstop(j-1)に基づいて、第２の書き込みイネーブル信号WE0, WE1, …WE(j-1)を生成し、かつ、第２の書き込みイネーブル信号WE0, WE1, …WE(j-1)により、セルユニットCU内のメモリセルに流れる書き込み電流を停止する。
【００３４】
第１の書き込みイネーブル信号WEは、セルユニットCU内のメモリセルに書き込み電流を流し得る最大の期間を決定する。しかし、上述のように、メモリセルの書き込み特性は、メモリセル毎に異なるのが一般的である。そこで、メモリセルの書き込み特性に応じて、第１の書き込みイネーブル信号WEを短縮した第２の書き込みイネーブル信号WE0, WE1, …WE(j-1)を生成する。
【００３５】
第２の書き込みイネーブル信号WE0, WE1, …WE(j-1)、及び、書き込みデータDATA0, DATA1, …DATA(j-1)は、それぞれ、書き込み回路13a-0, 13a-1, …13a-(j-1)に入力される。また、書き込みデータDATA0, DATA1, …DATA(j-1)は、それぞれ、書き込み回路13a-0, 13a-1, …13a-(j-1)に入力される。
【００３６】
書き込み電流検出回路（Ｄ）15-0, 15-1, …15-(j-1)は、それぞれ、現在アクセスしているセルユニットCUに流れるセル電流、即ち、書き込み回路13a-0, 13a-1, …13a-(j-1)に流れるセル電流に基づいて、書き込み停止信号Wstop0, Wstop1, …Wstop(j-1)を生成する。書き込み停止信号Wstop0, Wstop1, …Wstop(j-1)は、それぞれ、書き込み電流制御回路（Ｃ）14-0, 14-1, …14-(j-1)に入力される。
【００３７】
ここで、以下の説明において、説明を簡単にするため、書き込みデータDATA0, DATA1, …DATA(j-1)について次のように定義する。但し、この定義は、説明を分かり易くするためのものであり、各実施形態がこの定義に限定されるという主旨ではない。
【００３８】
メモリセル（抵抗変化素子）は、高抵抗状態（“０”−状態）と、低抵抗状態（“１”−状態）を記憶可能であるものとする。
【００３９】
“０”−書き込みは、書き込みデータDATA0, DATA1, …DATA(j-1)が“０”であることを意味する。“０”−書き込みは、メモリセルの抵抗値を低抵抗状態から高抵抗状態に変化させる動作のことである。
【００４０】
“１”−書き込みは、書き込みデータDATA0, DATA1, …DATA(j-1)が“１”であることを意味する。“１”−書き込みは、メモリセルの抵抗値を高抵抗状態から低抵抗状態に変化させる動作のことである。
【００４１】
また、“０”は、ロジックの“Ｌ(low level)”に対応し、“１”は、ロジックの“Ｈ(high level)”に対応するものとする。
【００４２】
［書き込み電流制御回路］  
図２Ａは、書き込み電流制御回路の例を示している。
【００４３】
まず、前提として、書き込み回路13a-0, 13b-0、及び、セルユニットCUについて説明する。
【００４４】
書き込み回路13a-0は、Ｐチャネル型ＦＥＴ T0及び書き込みドライバ21を備える。Ｐチャネル型ＦＥＴ T0は、書き込み電流Iw(t)を生成する。書き込みドライバ21は、第２の書き込みイネーブル信号WE0が“１”（High level）のとき、書き込み電流Iw(t)をメモリセルMCに供給する。
【００４５】
また、書き込み回路13a-0は、スイッチ素子SWa, SWbを備える。書き込みデータDATA0が“０”（Low level）のとき、スイッチ素子SWaは、オンとなり、スイッチ素子SWbは、オフとなる。書き込みデータDATA0が“１”（High level）のとき、スイッチ素子SWaは、オフとなり、スイッチ素子SWbは、オンとなる。
【００４６】
スイッチ素子SWa, SWbは、例えば、Ｐチャネル型ＦＥＴを備える。
【００４７】
書き込み回路13b-0は、スイッチ素子SWc, SWdを備える。書き込みデータDATA0が“０”（Low level）のとき、スイッチ素子SWcは、オフとなり、スイッチ素子SWdは、オンとなる。書き込みデータDATA0が“１”（High level）のとき、スイッチ素子SWcは、オンとなり、スイッチ素子SWdは、オフとなる。
【００４８】
スイッチ素子SWc, SWdは、例えば、Ｎチャネル型ＦＷＴを備える。
【００４９】
bDATAは、DATAの反転信号である。
【００５０】
セルユニットCUは、ビット線対BL0, bBL間に接続され、かつ、直列接続されるメモリセルMC及びアクセストランジスタATを含む。rcellは、メモリセルMCの抵抗値である。
【００５１】
メモリセルMCは、例えば、２端子素子であり、書き込み電流（双方向電流）により抵抗値が変化する抵抗変化素子である。アクセストランジスタATは、例えば、ゲート（制御端子）、ソース、及び、ドレインを有するＦＥＴである。アクセストランジスタATのゲートは、ワード線WL0に接続される。
【００５２】
このような前提条件の下、書き込み電流制御回路14-0は、書き込み停止信号Wstop0に基づいて、第１の書き込みイネーブル信号WEを短縮した第２の書き込みイネーブル信号WE0を生成し、かつ、第２の書き込みイネーブル信号WE0によりメモリセルMCに流れる書き込み電流Iw(t)を停止する。
【００５３】
そのために、書き込み電流制御回路14-0は、例えば、エクスクルーシブノア回路Ex-NOR、及び、アンド回路AND1を備える。
【００５４】
書き込みデータDATA0及び書き込み停止信号Wstop0は、エクスクルーシブノア回路Ex-NORに入力される。
【００５５】
例えば、書き込みデータDATA0が“０”（Low level）のとき、書き込み完了前においては、書き込み電流検出回路15-0は、書き込み停止信号Wstop0を出力しない。即ち、書き込み停止信号Wstop0は、“０”である。従って、エクスクルーシブノア回路Ex-NORの出力信号は、“１”（High level）である。
【００５６】
従って、第１の書き込みイネーブル信号WEが“１”になると、第２の書き込みイネーブル信号WE0も“１”になるため、書き込みドライバ21が動作状態となり、書き込み電流Iw(t)が流れる。
【００５７】
また、書き込み完了後においては、書き込み電流検出回路15-0は、書き込み停止信号Wstop0を出力する。即ち、書き込み停止信号Wstop0は、“１”である。従って、エクスクルーシブノア回路Ex-NORの出力信号は、“１”から“０”に変化する。
【００５８】
従って、第１の書き込みイネーブル信号WEが“１”であっても、第２の書き込みイネーブル信号WE0は、“１”から“０”に変化し、書き込みドライバ21が非動作状態となり、書き込み電流Iw(t)が停止する。
【００５９】
一方、書き込みデータDATA0が“１”のとき、書き込み完了前においては、書き込み電流検出回路15-0は、書き込み停止信号Wstop0を出力しない。即ち、書き込み停止信号Wstop0は、“１”である（書き込みデータDATA0が“０”のときと、論理が逆である点に注意を要する）。従って、エクスクルーシブノア回路Ex-NORの出力信号は、“１”である。
【００６０】
従って、第１の書き込みイネーブル信号WEが“１”になると、第２の書き込みイネーブル信号WE0も“１”になるため、書き込みドライバ21が動作状態となり、書き込み電流Iw(t)が流れる。
【００６１】
また、書き込み完了後においては、書き込み電流検出回路15-0は、書き込み停止信号Wstop0を出力する。即ち、書き込み停止信号Wstop0は、“０”である。従って、エクスクルーシブノア回路Ex-NORの出力信号は、“１”から“０”に変化する。
【００６２】
従って、第１の書き込みイネーブル信号WEが“１”であっても、第２の書き込みイネーブル信号WE0は、“１”から“０”に変化し、書き込みドライバ21が非動作状態となり、書き込み電流Iw(t)が停止する。
【００６３】
図２Ｂは、書き込み電流制御回路の他の例を示している。
【００６４】
この例は、書き込み停止信号Wstop0が、参照値を求めるためのサンプリングポイント以降に有効となるようなロジック回路を追加した例である。
【００６５】
従って、仮に、参照値が確定する前、即ち、サンプリングポイント前に、書き込み停止信号Wstop0が出力されても、それは無視される。
【００６６】
そのために、本例では、書き込み電流制御回路14-0内に、さらに、アンド回路AND2及びオア回路ORを設ける。
【００６７】
第１の書き込みイネーブル信号WEが“０”のとき、第２の書き込みイネーブル信号WE0も、“０”である。従って、書き込みドライバ21は、非動作状態である。
【００６８】
サンプリングポイント前において、ホールド信号HOLDは、“０”であり、ホールド信号HOLDの反転信号bHOLDは、“１”である。このため、エクスクルーシブノア回路Ex-NORの出力信号にかかわらず、アンド回路AND2の出力信号は、“０”であり、オア回路ORの出力信号は、“１”である。従って、第１の書き込みイネーブル信号WEが“１”になると、第２の書き込みイネーブル信号WE0も、“１”になる。その結果、書き込みドライバ21は、動作状態となり、書き込み電流が流れる。
【００６９】
ホールド信号HOLDは、サンプリングポイントにおいて“０”から“１”に変化する。
【００７０】
サンプリングポイント後において、ホールド信号HOLDは、“１”であり、ホールド信号HOLDの反転信号bHOLDは、“０”である。このため、エクスクルーシブノア回路Ex-NORの出力信号に応じて、アンド回路AND2の出力信号が変化する。また、オア回路ORは、アンド回路AND2の出力信号をそのまま出力する。
【００７１】
例えば、書き込みデータDATA0が“０”で、書き込み電流検出回路15-0からの書き込み停止信号Wstop0が“０”であるとき(書き込み完了前)、エクスクルーシブノア回路Ex-NORの出力信号は、“１”である。このため、アンド回路AND2の出力信号は、“１”であり、オア回路ORの出力信号も“１”である。従って、第２の書き込みイネーブル信号WE0も、“１”である。その結果、書き込みドライバ21は、動作状態であり、書き込み電流は、流れ続ける。
【００７２】
これに対し、書き込みデータDATA0が“０”で、書き込み電流検出回路15-0からの書き込み停止信号Wstop0が“１”であるとき(書き込み完了後)、エクスクルーシブノア回路Ex-NORの出力信号は、“０”である。このため、アンド回路AND2の出力信号は、“０”であり、オア回路ORの出力信号も“０”である。従って、第２の書き込みイネーブル信号WE0も、“０”である。その結果、書き込みドライバ21は、非動作状態であり、書き込み電流は、停止する。
【００７３】
また、書き込みデータDATA0が“１”で、書き込み電流検出回路15-0からの書き込み停止信号Wstop0が“１”であるとき(書き込み完了前)、エクスクルーシブノア回路Ex-NORの出力信号は、“１”である。このため、アンド回路AND2の出力信号は、“１”であり、オア回路ORの出力信号も“１”である。従って、第２の書き込みイネーブル信号WE0も、“１”である。その結果、書き込みドライバ21は、動作状態であり、書き込み電流は、流れ続ける。
【００７４】
これに対し、書き込みデータDATA0が“１”で、書き込み電流検出回路15-0からの書き込み停止信号Wstop0が“０”であるとき(書き込み完了後)、エクスクルーシブノア回路Ex-NORの出力信号は、“０”である。このため、アンド回路AND2の出力信号は、“０”であり、オア回路ORの出力信号も“０”である。従って、第２の書き込みイネーブル信号WE0も、“０”である。その結果、書き込みドライバ21は、非動作状態であり、書き込み電流は、停止する。
【００７５】
［書き込み電流検出回路の例］  
図３は、“０”−書き込み時の書き込み電流検出回路の例を示している。
【００７６】
書き込み回路13a-0, 13b-0、及び、セルユニットCUは、上述の書き込み電流制御回路の例と同じである。即ち、図３の第２の書き込みイネーブル信号WE0は、図２Ａ又は図２Ｂの第２の書き込みイネーブル信号WE0に対応する。
【００７７】
まず、書き込み電流検出回路15-0は、メモリセルMCに流れる書き込み電流Iw(t)に基づいて検出値Vmirror(t)を生成する。なお、Iw(t)及びVmirror(t)における(t)は、それぞれ、書き込み電流及び検出値が時刻tにより変化することを意味する。
【００７８】
例えば、図４に示すように、時刻t0に、第１及び第２の書き込みイネーブル信号WE, WE0がHigh levelとなり、かつ、ワード線WL0がHigh levelになると、時刻t1に、メモリセルMCに書き込み電流Iw(t)が流れ始める。図４では、第１及び第２の書き込みイネーブル信号WE, WE0が立ち上がるタイミングとワード線WL0が立ち上がるタイミングとは、同じであるが、互いに異なっていてもよい。
【００７９】
書き込み電流検出回路15-0は、書き込み電流Iw(t)をコピーするカレントミラー回路を備える。このカレントミラー回路は、書き込み電流Iw(t)を流すＰチャネル型ＦＥＴ T0に対応して、Ｐチャネル型ＦＥＴ T11を備える。但し、２つのＰチャネル型ＦＥＴ T0, T11のサイズ比（駆動力比）は、T0:T11=x:y1である。xとy1は同じ（T0:T1=1:1）であってもよいし、互いに異なっていてもよい。
【００８０】
Ｐチャネル型ＦＥＴ T11は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw’(t)を生成する。なお、Iw’(t)における(t)は、コピー電流が時刻tにより変化することを意味する。
【００８１】
例えば、コピー電流Iw’(t)は、抵抗素子R1により電圧に変換される。この電圧は、検出値Vmirror(t)となり、比較器23に入力される。但し、Iw’(t)=(y1/x)×Iw(t)、かつ、Vmirror(t)=Iw’(t)×r1であり、r1は、抵抗素子R1の抵抗値である。
【００８２】
次に、書き込み電流検出回路15-0は、メモリセルMCに書き込み電流Iw(t)を流し始めた後、メモリセルMCの抵抗値が変化する前のサンプリングポイントにおいて、メモリセルMCに流れる書き込み電流Iw(t)に基づいて参照値を生成する。
【００８３】
例えば、図４に示すように、書き込み電流Iw(t)が第１の安定値（最初の安定値）Aに達してから、メモリセルMCの抵抗値が変化するまでの期間Tにおいて、サンプリングポイントtholdを設定する。メモリセルMCは、第１の安定値（期間T）では、書き込み完了前の抵抗状態、本例では、低抵抗状態（“１”−状態）を有しているため、書き込み電流Iw(t)は、大きな値を有している。
【００８４】
このため、サンプリングポイントtholdでは、メモリセルMCに流れる書き込み電流Iw(t)に基づいて、書き込み電流Iw(t)が大きな値から小さな値に変化する時点を検出するための閾値となる参照値Vrefを生成する。
【００８５】
そのために、書き込み電流検出回路15-0は、書き込み電流Iw(t)をコピーするカレントミラー回路を備える。このカレントミラー回路は、書き込み電流Iw(t)を流すＰチャネル型ＦＥＴ T0に対応して、Ｐチャネル型ＦＥＴ T13を備える。但し、２つのＰチャネル型ＦＥＴ T0, T13のサイズ比（駆動力比）は、T0:T13=x:y3である。また、y3は、xよりも小さい。また、スイッチ素子SWfは、書き込みデータDATA0（＝“０”）に基づいて、Ｐチャネル型ＦＥＴ T13のゲートをＰチャネル型ＦＥＴ T0のゲートに接続する。
【００８６】
Ｐチャネル型ＦＥＴ T13は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw’(t)×αを生成する。但し、αは、２つのＰチャネル型ＦＥＴ T0, T13のサイズ比（駆動力比）に依存し、α=y3/xである。例えば、αは、メモリセルMCが低抵抗状態（“１”−状態）から高抵抗状態（“０”−状態）に変化する時点、即ち、書き込み電流Iw(t)が大きな値から小さな値に変化する時点を検出するため、1よりも小さい値、例えば、0.8に設定される。
【００８７】
また、コピー電流Iw’(t)×αは、抵抗素子R2により電圧に変換される。この電圧は、サンプルホールド回路22に入力される。また、サンプルホールド回路22は、サンプリングポイントthold、即ち、ホールド信号HOLDがLow levelからHigh levelに変化した時点で、この電圧をホールドする。
【００８８】
サンプルホールド回路22内にホールドされた電圧は、参照値Vrefとなる。参照値Vrefは、比較器23に入力される。但し、Vref=Iw’(t=thold)×α×r2であり、r2は、抵抗素子R2の抵抗値である。Iw’(t=thold)における(t=thold)は、時刻t=tholdにおけるコピー電流の値を意味する。
【００８９】
また、サンプリングポイントtholdにおいて、参照値Vrefが確定し、比較器23の出力（書き込み停止信号Wstop0）が、Low levelにリセットされる。
【００９０】
最後に、書き込み電流検出回路15-0は、検出値Vmirror(t)が参照値Vrefを横切ったときに書き込み停止信号Wstop0を出力する。
【００９１】
例えば、図４に示すように、書き込み電流Iw(t)により、メモリセルMCが低抵抗状態（“１”−状態）から高抵抗状態（“０”−状態）に変化すると、Vmirror(t)は、第１の安定値Aから第２の安定値Bに変化する。そこで、比較器23を用いて、検出値Vmirror(t)が参照値Vrefよりも小さくなった時点を検出することにより、“０”−書き込み動作における書き込み完了の有無を判断することができる。
【００９２】
比較器23は、書き込み完了後の時刻t2に、書き込み停止信号Wstop0を出力する。本例では、書き込み停止信号Wstop0は、High levelである。書き込み停止信号Wstop0は、書き込み電流制御回路（図２Ａ又は図２Ｂ）にフィードバックされるため、時刻t3に、第２の書き込みイネーブル信号WE0がLow levelになる。従って、書き込み電流Iw(t)は、停止する。
【００９３】
ここで、第１の書き込みイネーブル信号WEは、書き込み特性が最も悪いメモリセルに対しても書き込みが行えるように、そのパルス幅は、時刻t0から時刻t4まで、長めに設定される。これに対し、本例によれば、上述のように、メモリセルMCの書き込みが早く完了したとき、第２の書き込みイネーブル信号WE0のパルス幅を、時刻t0から時刻t3まで、短めに設定することができる。即ち、時刻t3から時刻t4までの期間に生じる書き込み電流をなくすことができるため、低消費電力に貢献できる。
【００９４】
なお、本例では、書き込み完了の有無を判断する参照値（閾値）は、現在アクセスしているメモリセルMCに流れる書き込み電流（書き込み完了前）に基づいて生成される。
【００９５】
また、本例（“０”−書き込み）では、メモリセルMCに流れる書き込み電流Iw(t)は、大きな値から小さな値へ変化する。このため、参照値Vrefは、大きな値としての書き込み電流Iw(t)から求めなければならない。
【００９６】
これに対し、“１”−書き込みでは、メモリセルMCに流れる書き込み電流Iw(t)は、小さなちから大きな値へ変化する。このため、参照値Vrefは、小さな値としての書き込み電流Iw(t)から求めなければならない。
【００９７】
つまり、“０”−書き込み時の参照値Vrefを生成するカレントミラー回路とは別に、“１”−書き込み時の参照値Vrefを生成するカレントミラー回路を設ける必要がある。
【００９８】
そのために、書き込み電流検出回路15-0は、さらに、Ｐチャネル型ＦＥＴ T12、及び、スイッチ素子SWeを備える。Ｐチャネル型ＦＥＴ T12は、“１”−書き込み時の参照値Vrerを生成するカレントミラー回路である。本例のように、“０”−書き込みの場合、スイッチ素子SWeは、Ｐチャネル型ＦＥＴ T12のゲートを電源端子Vddに接続する。即ち、“０”−書き込み時において、Ｐチャネル型ＦＥＴ T12は、オフ状態である。
【００９９】
図５は、“１”−書き込み時の書き込み電流検出回路の例を示している。
【０１００】
書き込み回路13a-0, 13b-0、及び、セルユニットCUは、上述の書き込み電流制御回路の例と同じである。即ち、図５の第２の書き込みイネーブル信号WE0は、図２Ａ又は図２Ｂの第２の書き込みイネーブル信号WE0に対応する。
【０１０１】
また、書き込み電流検出回路15-0において、メモリセルMCに流れる書き込み電流Iw(t)に基づいて検出値Vmirror(t)を生成するために、Ｐチャネル型ＦＥＴ T11、及び、抵抗素子R1を設ける点は、図３と同じである。
【０１０２】
例えば、図６に示すように、時刻t0に、第１及び第２の書き込みイネーブル信号WE, WE0がHigh levelとなり、かつ、ワード線WL0がHigh levelになると、時刻t1に、メモリセルMCに書き込み電流Iw(t)が流れ始める。
【０１０３】
Ｐチャネル型ＦＥＴ T11は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw’(t)を生成する。例えば、コピー電流Iw’(t)は、抵抗素子R1により電圧に変換される。この電圧は、検出値Vmirror(t)となり、比較器23に入力される。但し、Iw’(t)=(y1/x)×Iw(t)、かつ、Vmirror(t)=Iw’(t)×r1であり、r1は、抵抗素子R1の抵抗値である。
【０１０４】
次に、書き込み電流検出回路15-0は、メモリセルMCに書き込み電流Iw(t)を流し始めた後、メモリセルMCの抵抗値が変化する前のサンプリングポイントにおいて、メモリセルMCに流れる書き込み電流Iw(t)に基づいて参照値を生成する。
【０１０５】
例えば、図６に示すように、書き込み電流Iw(t)が第１の安定値（最初の安定値）Aに達してから、メモリセルMCの抵抗値が変化するまでの期間Tにおいて、サンプリングポイントtholdを設定する。メモリセルMCは、第１の安定値（期間T）では、書き込み完了前の抵抗状態、本例では、高抵抗状態（“０”−状態）を有しているため、書き込み電流Iw(t)は、小さな値を有している。
【０１０６】
このため、サンプリングポイントtholdでは、メモリセルMCに流れる書き込み電流Iw(t)に基づいて、書き込み電流Iw(t)が小さなちから大きな値に変化する時点を検出するための閾値となる参照値Vrefを生成する。
【０１０７】
そのために、書き込み電流検出回路15-0は、書き込み電流Iw(t)をコピーするカレントミラー回路を備える。このカレントミラー回路は、書き込み電流Iw(t)を流すＰチャネル型ＦＥＴ T0に対応して、Ｐチャネル型ＦＥＴ T12を備える。但し、２つのＰチャネル型ＦＥＴ T0, T12のサイズ比（駆動力比）は、T0:T12=x:y2である。また、y2は、xよりも大きい。また、スイッチ素子SWeは、書き込みデータDATA0（＝“１”）の反転データbDATA（＝“０”）に基づいて、Ｐチャネル型ＦＥＴ T12のゲートをＰチャネル型ＦＥＴ T0のゲートに接続する。
【０１０８】
Ｐチャネル型ＦＥＴ T12は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw’(t)×βを生成する。但し、βは、２つのＰチャネル型ＦＥＴ T0, T12のサイズ比（駆動力比）に依存し、β=y2/xである。例えば、βは、メモリセルMCが高抵抗状態（“０”−状態）から低抵抗状態（“１”−状態）に変化する時点、即ち、書き込み電流Iw(t)が小さなちから大きな値に変化する時点を検出するため、1よりも大きい値、例えば、1.2に設定される。
【０１０９】
また、コピー電流Iw’(t)×βは、抵抗素子R2により電圧に変換される。この電圧は、サンプルホールド回路22に入力される。また、サンプルホールド回路22は、サンプリングポイントthold、即ち、ホールド信号HOLDがLow levelからHigh levelに変化した時点で、この電圧をホールドする。
【０１１０】
サンプルホールド回路22内にホールドされた電圧は、参照値Vrefとなる。参照値Vrefは、比較器23に入力される。但し、Vref=Iw’(t=thold)×β×r2であり、r2は、抵抗素子R2の抵抗値である。
【０１１１】
また、サンプリングポイントtholdにおいて、参照値Vrefが確定し、比較器23の出力（書き込み停止信号Wstop0）が、High levelにリセットされる。
【０１１２】
最後に、書き込み電流検出回路15-0は、検出値Vmirror(t)が参照値Vrefを横切ったときに書き込み停止信号Wstop0を出力する。
【０１１３】
例えば、図６に示すように、書き込み電流Iw(t)により、メモリセルMCが高抵抗状態（“０”−状態）から低抵抗状態（“１”−状態）に変化すると、Vmirror(t)は、第１の安定値Aから第２の安定値Bに変化する。そこで、比較器23を用いて、検出値Vmirror(t)が参照値Vrefよりも大きくなった時点を検出することにより、“１”−書き込み動作における書き込み完了の有無を判断することができる。
【０１１４】
比較器23は、書き込み完了後の時刻t2に、書き込み停止信号Wstop0を出力する。本例では、書き込み停止信号Wstop0は、Low levelである。書き込み停止信号Wstop0は、書き込み電流制御回路（図２Ａ又は図２Ｂ）にフィードバックされるため、時刻t3に、第２の書き込みイネーブル信号WE0がLow levelになる。従って、書き込み電流Iw(t)は、停止する。
【０１１５】
ここで、第１の書き込みイネーブル信号WEのパルス幅は、時刻t0から時刻t4まで、長めに設定される。これに対し、本例によれば、上述のように、メモリセルMCの書き込みが早く完了したとき、第２の書き込みイネーブル信号WE0のパルス幅を、時刻t0から時刻t3まで、短めに設定することができる。即ち、時刻t3から時刻t4までの期間に生じる書き込み電流をなくすことができるため、低消費電力に貢献できる。
【０１１６】
なお、書き込み電流検出回路15-0は、さらに、Ｐチャネル型ＦＥＴ T13、及び、スイッチ素子SWfを備える。図３及び図４で説明したように、Ｐチャネル型ＦＥＴ T13は、“０”−書き込み時の参照値Vrerを生成するカレントミラー回路である。本例のように、“１”−書き込みの場合、スイッチ素子SWfは、Ｐチャネル型ＦＥＴ T13のゲートを電源端子Vddに接続する。即ち、“１”−書き込み時において、Ｐチャネル型ＦＥＴ T13は、オフ状態である。
【０１１７】
［書き込み電流検出回路の変形例］  
図７乃至図１０は、書き込み電流検出回路の変形例を示している。
【０１１８】
図７及び図８の例は、書き込み電流（セル電流）とコピー電流との比率（カレントミラー比）を、トランジスタ(ＦＥＴ)の数で調整する例である。但し、書き込み回路13a-0及び書き込み電流検出回路15-0内の全てのトランジスタは、同じサイズ（同じ駆動力）を有しているものとする。
【０１１９】
図７は、図３に対応し、図８は、図５に対応する。図７及び図８において、図３及び図５と同じ要素には同じ符号を付すことにより、その詳細な説明を省略する。
【０１２０】
書き込み電流Iw(t)を生成するＰチャネル型ＦＥＴ T0が１個のトランジスタを備え、かつ、そのサイズ（駆動力）がｘであるとき、例えば、Ｐチャネル型ＦＥＴ T11は、２個のトランジスタを備え、かつ、そのサイズ（駆動力）は、２ｘに設定される。また、Ｐチャネル型ＦＥＴ T12は、３個のトランジスタを備え、かつ、そのサイズ（駆動力）は、３ｘに設定される。さらに、Ｐチャネル型ＦＥＴ T13は、１個のトランジスタを備え、かつ、そのサイズ（駆動力）は、ｘに設定される。
【０１２１】
そして、図７に示すように、“０”−書き込み時においては、Ｐチャネル型ＦＥＴ T11は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)×2を生成する。コピー電流Iw(t)×2は、抵抗素子R1により電圧に変換される。この電圧は、検出値Vmirror(t)となり、比較器23に入力される。但し、Vmirror(t)=Iw(t)×2×r1であり、r1は、抵抗素子R1の抵抗値である。
【０１２２】
また、スイッチ素子SWfは、書き込みデータDATA0（＝“０”）に基づいて、Ｐチャネル型ＦＥＴ T13のゲートをＰチャネル型ＦＥＴ T0のゲートに接続する。Ｐチャネル型ＦＥＴ T13は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)を生成する。コピー電流Iw(t)は、抵抗素子R2により電圧に変換される。
【０１２３】
この電圧は、サンプルホールド回路22に入力される。また、サンプルホールド回路22は、サンプリングポイントthold、即ち、ホールド信号HOLDがLow levelからHigh levelに変化した時点で、この電圧をホールドする。
【０１２４】
サンプルホールド回路22内にホールドされた電圧は、参照値Vrefとなる。参照値Vrefは、比較器23に入力される。但し、Vref=Iw(t=thold)×r2であり、r2は、抵抗素子R2の抵抗値である。
【０１２５】
また、サンプリングポイントtholdにおいて、参照値Vrefが確定し、比較器23の出力（書き込み停止信号Wstop0）が、Low levelにリセットされる。
【０１２６】
なお、“０”−書き込みの場合、スイッチ素子SWeは、Ｐチャネル型ＦＥＴ T12のゲートを電源端子Vddに接続する。即ち、“０”−書き込み時において、Ｐチャネル型ＦＥＴ T12は、オフ状態である。
【０１２７】
本例によれば、参照値Vref=Iw(t=thold)×r2を、書き込み完了前の検出値Vmirror(t≦thold)=Iw(t)×2×r1よりも小さな値、例えば、Vref=0.8×Vmirror(t≦thold)となるように、トランジスタの数や、抵抗素子R1, R2の抵抗値r1, r2により、制御することが可能となる。
【０１２８】
一方、図８に示すように、“１”−書き込み時においては、Ｐチャネル型ＦＥＴ T11は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)×2を生成する。コピー電流Iw(t)×2は、抵抗素子R1により電圧に変換される。この電圧は、検出値Vmirror(t)となり、比較器23に入力される。但し、Vmirror(t)=Iw(t)×2×r1であり、r1は、抵抗素子R1の抵抗値である。
【０１２９】
また、スイッチ素子SWeは、書き込みデータDATA0の反転データbDATA0（＝“０”）に基づいて、Ｐチャネル型ＦＥＴ T12のゲートをＰチャネル型ＦＥＴ T0のゲートに接続する。Ｐチャネル型ＦＥＴ T12は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)×3を生成する。コピー電流Iw(t)×3は、抵抗素子R2により電圧に変換される。
【０１３０】
この電圧は、サンプルホールド回路22に入力される。また、サンプルホールド回路22は、サンプリングポイントthold、即ち、ホールド信号HOLDがLow levelからHigh levelに変化した時点で、この電圧をホールドする。
【０１３１】
サンプルホールド回路22内にホールドされた電圧は、参照値Vrefとなる。参照値Vrefは、比較器23に入力される。但し、Vref=Iw(t=thold)×3×r2であり、r2は、抵抗素子R2の抵抗値である。
【０１３２】
また、サンプリングポイントtholdにおいて、参照値Vrefが確定し、比較器23の出力（書き込み停止信号Wstop0）が、High levelにリセットされる。
【０１３３】
本例のように、“１”−書き込みの場合、スイッチ素子SWfは、Ｐチャネル型ＦＥＴ T13のゲートを電源端子Vddに接続する。即ち、“１”−書き込み時において、Ｐチャネル型ＦＥＴ T13は、オフ状態である。
【０１３４】
本例によれば、参照値Vref=Iw(t=thold)×3×r2を、書き込み完了前の検出値Vmirror(t≦thold)=Iw(t)×2×r1よりも大きな値、例えば、Vref=1.2×Vmirror(t≦thold)となるように、トランジスタの数や、抵抗素子R1, R2の抵抗値r1, r2により、制御することが可能となる。
【０１３５】
なお、図７及び図８の例では、Ｐチャネル型ＦＥＴ T11, T12, T13のサイズ比（駆動力比）は、2:3:1であるが、これに代えて、任意のサイズ比D11:D12:D13にしてもよい。
【０１３６】
図９及び図１０の例は、検出値を生成するためのコピー電流と参照値を生成するためのコピー電流との比率を同じに設定し、コピー電流を電圧に変換する抵抗素子の抵抗値により２種類の参照値を生成する例である。
【０１３７】
本例でも、書き込み回路13a-0及び書き込み電流検出回路15-0内の全てのトランジスタは、同じサイズ（同じ駆動力）を有しているものとする。
【０１３８】
図９は、図３に対応し、図１０は、図５に対応する。図９及び図１０において、図３及び図５と同じ要素には同じ符号を付すことにより、その詳細な説明を省略する。
【０１３９】
書き込み電流Iw(t)を生成するＰチャネル型ＦＥＴ T0が１個のトランジスタを備え、かつ、そのサイズ（駆動力）がｘであるとき、例えば、Ｐチャネル型ＦＥＴ T11, T12は、１個のトランジスタを備え、かつ、そのサイズ（駆動力）は、ｘに設定される。
【０１４０】
そして、図９に示すように、“０”−書き込み時においては、Ｐチャネル型ＦＥＴ T11は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)を生成する。コピー電流Iw(t)は、抵抗素子R1により電圧に変換される。この電圧は、検出値Vmirror(t)となり、比較器23に入力される。但し、Vmirror(t)=Iw(t)×r1であり、r1は、抵抗素子R1の抵抗値である。
【０１４１】
また、スイッチ素子SWgは、書き込みデータDATA0（＝“０”）に基づいて、Ｐチャネル型ＦＥＴ T12の電流経路を抵抗素子R3に直列接続する。Ｐチャネル型ＦＥＴ T12は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)を生成する。コピー電流Iw(t)は、抵抗素子R3により電圧に変換される。
【０１４２】
この電圧は、サンプルホールド回路22に入力される。また、サンプルホールド回路22は、サンプリングポイントthold、即ち、ホールド信号HOLDがLow levelからHigh levelに変化した時点で、この電圧をホールドする。
【０１４３】
サンプルホールド回路22内にホールドされた電圧は、参照値Vrefとなる。参照値Vrefは、比較器23に入力される。但し、Vref=Iw(t=thold)×r3であり、r3は、抵抗素子R3の抵抗値である。
【０１４４】
また、サンプリングポイントtholdにおいて、参照値Vrefが確定し、比較器23の出力（書き込み停止信号Wstop0）が、Low levelにリセットされる。
【０１４５】
本例によれば、参照値Vref=Iw(t=thold)×r3を、書き込み完了前の検出値Vmirror(t≦thold)=Iw(t)×r1よりも小さな値、例えば、Vref=0.8×Vmirror(t≦thold)となるように、抵抗素子R1, R3の抵抗値r1, r3により制御することが可能となる。
【０１４６】
一方、図１０に示すように、“１”−書き込み時においては、Ｐチャネル型ＦＥＴ T11は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)を生成する。コピー電流Iw(t)は、抵抗素子R1により電圧に変換される。この電圧は、検出値Vmirror(t)となり、比較器23に入力される。但し、Vmirror(t)=Iw(t)×r1であり、r1は、抵抗素子R1の抵抗値である。
【０１４７】
また、スイッチ素子SWgは、書き込みデータDATA0（＝“１”）に基づいて、Ｐチャネル型ＦＥＴ T12の電流経路を抵抗素子R2に直列接続する。Ｐチャネル型ＦＥＴ T12は、書き込み電流Iw(t)にリアルタイムに追従するコピー電流Iw(t)を生成する。コピー電流Iw(t)は、抵抗素子R2により電圧に変換される。
【０１４８】
この電圧は、サンプルホールド回路22に入力される。また、サンプルホールド回路22は、サンプリングポイントthold、即ち、ホールド信号HOLDがLow levelからHigh levelに変化した時点で、この電圧をホールドする。
【０１４９】
サンプルホールド回路22内にホールドされた電圧は、参照値Vrefとなる。参照値Vrefは、比較器23に入力される。但し、Vref=Iw(t=thold)×r2であり、r2は、抵抗素子R2の抵抗値である。
【０１５０】
また、サンプリングポイントtholdにおいて、参照値Vrefが確定し、比較器23の出力（書き込み停止信号Wstop0）が、High levelにリセットされる。
【０１５１】
本例によれば、参照値Vref=Iw(t=thold)×r2を、書き込み完了前の検出値Vmirror(t≦thold)=Iw(t)×r1よりも大きな値、例えば、Vref=1.2×Vmirror(t≦thold)となるように、抵抗素子R1, R2の抵抗値r1, r2により制御することが可能となる。
【０１５２】
なお、図９及び図１０の例では、Ｐチャネル型ＦＥＴ T11, T12のサイズ比（駆動力比）は、1:1であるが、これに代えて、任意のサイズ比D11:D12にしてもよい。
【０１５３】
［書き込みデータが書き込み前のメモリセルのデータと同じ場合］
書き込み前のメモリセルのデータは、通常、分からないため、書き込みデータ（書き込み後のメモリセルの抵抗値）が、書き込み前のメモリセルのデータ（抵抗値）と同じ場合が発生する。以下、この場合を説明する。
【０１５４】
書き込みデータ及び書き込み前のメモリセルのデータが共に“０”であるとき、即ち、書き込み前後でメモリセルの抵抗値が共に高抵抗状態であるときは、図３の例に従い、参照値Vrefが生成される。この場合、参照値Vrefは、図６の第１の安定値Aをα倍（図３及び図４のαに相当）した値となる。この場合、検出値Vmirror(t)は、参照値Vrefを横切ることはない。
【０１５５】
従って、通常の書き込み期間、例えば、図４の書き込みイネーブル信号WEがHigh levelである期間t0〜t4、書き込み電流は流れ続ける。但し、書き込み前後でデータが変化しないため、書き込み電流を流した後に書き込みは正常に完了する。
【０１５６】
また、書き込みデータ及び書き込み前のメモリセルのデータが共に“１”であるとき、即ち、書き込み前後でメモリセルの抵抗値が共に低抵抗状態であるときは、図５の例に従い、参照値Vrefが生成される。この場合、参照値Vrefは、図４の第１の安定値Aをβ倍（図５及び図６のβに相当）した値となる。この場合、検出値Vmirror(t)は、参照値Vrefを横切ることはない。
【０１５７】
従って、通常の書き込み期間、例えば、図６の書き込みイネーブル信号WEがHigh levelである期間t0〜t4、書き込み電流は流れ続ける。但し、書き込み前後でデータが変化しないため、書き込み電流を流した後に書き込みは正常に完了する。
【０１５８】
一般的に、書き込み前のメモリセルのデータの全てが書き込みデータと同じであるということはあり得ないため、本実施例では、１回の書き込み動作毎に、従来に比べて、低消費電力化の効果を得ることができる。
【０１５９】
また、本実施例は、書き込みが完了したか否かを検証するベリファイ動作と組み合わせることにより、上述の書き込み前後でデータが変化しない場合にも、低消費電力化の効果を発揮させることが可能である。
【０１６０】
例えば、複数回の書き込み動作によりデータ書き込みを行うこととし、１回の書き込み動作での書き込み期間（図４又は図６のt0〜t4の期間)、即ち、書き込みイネーブル信号WEがHigh levelである期間を短くする。
【０１６１】
この場合、書き込み完了が早いメモリセル（書き込み前後でデータが変化しないメモリセルを含む）については、その後、書き込み動作を行わないこととすることにより、低消費電力化を図ることができる。また、書き込み完了が遅いメモリセル（書き込み前後でデータが変化するメモリセルのみ）についても、本実施例を適用することにより、従来よりも低消費電力化を図ることができる。
【０１６２】
また、本実施例では、書き込み前後でデータが変化しないメモリセルを想定し、書き込み動作を実行する前に、メモリセル内に書き込まれている既存のデータを確認する読み出し動作を行ってもよい。
【０１６３】
この場合、書き込みデータが書き込み前のメモリセルのデータと同じときは、本実施例を適用せず、書き込み動作を行わない。また、書き込みデータが書き込み前のメモリセルのデータと異なるときは、本実施例が適用された書き込み動作を行う。
【０１６４】
以上においても、書き込み前後でデータが変化しないメモリセルに対して、低消費電力化の効果を発揮することができる。
【０１６５】
［テスト回路への応用］  
上述の実施例は、出荷前における不揮発性半導体メモリのテスト回路に応用することができる。例えば、BIST (Built-in Test)において、不揮発性メモリ内の各メモリセルの書き込み特性、又は、良/不良を、上述の実施例における書き込み時間（書き込み電流を流す期間）により、判定することができる。
【０１６６】
そして、例えば、各メモリセルの書き込み特性に基づいて、書き込みパルスの大きさや、書き込みパルスの幅（第１の書き込みイネーブル信号WEに相当）など、をキャリブレーションしてもよい。また、各メモリセルの良/不良に基づいて、リダンダンシイ置き換えを行ってもよい。
【０１６７】
［適用例］  
携帯情報端末に用いられるプロセッサは、低消費電力であることが求められる。プロセッサの低消費電力化の方法の１つとして、待機電力の大きいSRAM(Static Random Access Memory)ベースのキャッシュメモリを、不揮発性素子を用いた不揮発性半導体メモリで置き換える方法がある。
【０１６８】
即ち、SRAMは、トランジスタの微細化に伴い、動作時及びスタンバイ（非動作）時、共に、リーク電力が大きくなる傾向にある。このため、キャッシュメモリを不揮発性半導体メモリで置き換えることにより、スタンバイ時に電源遮断が可能となり、スタンバイ時の消費電力を削減できる。
【０１６９】
例えば、磁気ランダムアクセスメモリ(MRAM)をキャッシュメモリとして使用することにより、低消費電力プロセッサを実現しようとする試みが検討されている。
【０１７０】
MRAMは、現在、提案されている不揮発性半導体メモリの中で、高い書き換え耐性、高速に読み出し/書き込みを行う動作性能、及び、高集積可能なセル面積、といった３つの特徴を同時に満たし得るメモリ技術である。このため、MRAMをキャッシュとして使用することにより、大容量かつ高速の不揮発性キャッシュメモリをプロセッサに搭載できる可能性が高まっている。
【０１７１】
上述の各実施例は、このような大容量かつ高速の不揮発性キャッシュメモリを実現するに当たって有効な技術である。そこで、以下では、上述の各実施例を適用可能な低消費電力プロセッサシステムの例を説明する。
【０１７２】
図１１は、低消費電力プロセッサシステムの例を示している。
【０１７３】
CPU31は、SRAM32、DRAM33、フラッシュメモリ34、ROM35、及び、MRAM（磁気ランダムアクセスメモリ）36を制御する。
【０１７４】
MRAM36は、SRAM32、DRAM33、フラッシュメモリ34、及び、ROM35のいずれの代替として使用することが可能である。これに伴い、SRAM32、DRAM33、フラッシュメモリ34及びROM35の少なくとも１つを省略してもよい。
【０１７５】
MRAM36は、不揮発性キャッシュメモリ（例えば、Ｌ２キャッシュ）として使用することが可能である。
【０１７６】
図１２は、磁気抵抗効果素子の基本構造を示している。
【０１７７】
磁気抵抗効果素子MTJは、上述の各実施例におけるメモリセルの例である。磁気抵抗効果素子MTJは、膜面(Film surface)に垂直な方向（垂直方向）に、垂直かつ可変の磁化を持つ記憶層（強磁性層）1、トンネルバリア層（非磁性層）2、及び、垂直かつ不変の磁化を持つ参照層（強磁性層）3の順番で配置される、積層構造を備える。
【０１７８】
ここで、不変の磁化とは、書き込み前後において磁化方向が変化しないこと、可変の磁化とは、書き込み前後において磁化方向が逆向きに変化し得ることを意味する。
【０１７９】
また、書き込みとは、スピン注入電流（スピン偏極された電子）を磁気抵抗効果素子MTJに流すことにより記憶層1の磁化にスピントルクを与えるスピントランスファ書き込みを意味する。
【０１８０】
例えば、スピン注入電流を記憶層1から参照層3に向かって流すとき、参照層3の磁化と同じ向きにスピン偏極された電子が記憶層1内に注入され、記憶層1内の磁化にスピントルクを与えるため、記憶層1の磁化方向は、参照層3の磁化方向と同じ（パラレル状態）になる。
【０１８１】
また、スピン注入電流を参照層3から記憶層1に向かって流すとき、記憶層1から参照層3に向かう電子のうち参照層3の磁化と逆向きにスピン偏極された電子が記憶層1内に戻され、記憶層1内の磁化にスピントルクを与えるため、記憶層1の磁化方向は、参照層3の磁化方向と逆（アンチパラレル状態）になる。
【０１８２】
磁気抵抗効果素子MTJの抵抗値は、磁気抵抗効果により、参照層3と記憶層1の相対的な磁化方向に依存して変化する。即ち、磁気抵抗効果素子MTJの抵抗値は、パラレル状態のときに低くなり、アンチパラレル状態のときに高くなる。パラレル状態の抵抗値をR0とし、アンチパラレル状態の抵抗値をR1としたとき、(R1-R0)/R0で定義される値は、MR比（magnetoresistive ratio）と呼ばれる。
【０１８３】
尚、本例では、参照層3の磁化は、記憶層1側を向いた状態で固定されているが、記憶層1とは反対側を向いた状態で固定されていてもよい。また、半導体基板上に磁気抵抗効果素子MTJを配置するとき、参照層3と記憶層1の上下関係は、限定されない。
【０１８４】
例えば、参照層3が記憶層1よりも上にあるときは、磁気抵抗効果素子MTJは、トップピン型と呼ばれ、参照層3が記憶層1よりも下にあるときは、磁気抵抗効果素子MTJは、ボトムピン型と呼ばれる。
【０１８５】
図１３は、シフトキャンセル層を有する磁気抵抗効果素子の例を示している。
【０１８６】
磁気抵抗効果素子MTJは、垂直方向に、垂直かつ可変の磁化を持つ記憶層（強磁性層）1、トンネルバリア層（非磁性層）2、及び、垂直かつ不変の磁化を持つ参照層（強磁性層）3の順番で配置される、積層構造を備える。
【０１８７】
また、磁気抵抗効果素子MTJは、参照層3側に、垂直かつ不変の磁化を持つシフトキャンセル層（強磁性層）4を備える。参照層3とシフトキャンセル層4の間には、非磁性層（例えば、金属層）5が配置される。
【０１８８】
本例では、参照層3と記憶層1は、垂直磁化を有する。この場合、参照層3からの漏れ磁界(stray magnetic field)は、記憶層1の磁化方向（垂直方向）を向くため、記憶層1に大きな垂直成分を持つ漏れ磁界が印加される。この漏れ磁界は、記憶層1の磁化方向を参照層3の磁化方向と同じ（パラレル状態）にする方向に作用する。
【０１８９】
従って、記憶層1のＲＨカーブがシフトする。
【０１９０】
即ち、磁気抵抗効果素子MTJをアンチパラレル状態からパラレル状態に変化させるときは、小さなスピン注入電流を磁気抵抗効果素子MTJに流せば足りるのに対し、磁気抵抗効果素子MTJをパラレル状態からアンチパラレル状態に変化させるときは、大きなスピン注入電流を磁気抵抗効果素子MTJに流さなければならない。
【０１９１】
また、アンチパラレル状態は、参照層3からの漏れ磁界のため不安定になる。
【０１９２】
即ち、漏れ磁界が記憶層1の保磁力よりも大きくなると、記憶層1は、アンチパラレル状態を保持できなくなってしまう。また、漏れ磁界が記憶層1の保持力より小さいときであっても、熱擾乱による磁化のゆらぎを考慮すると、記憶層1の磁化は、漏れ磁界によってアンチパラレル状態からパラレル状態に反転してしまうことがある。
【０１９３】
シフトキャンセル層4は、このような問題を解決するために設けられる。
【０１９４】
本例では、参照層3とシフトキャンセル層4は、互いに積層される。この場合、シフトキャンセル層4の磁化方向は、参照層3の磁化方向とは逆向きに設定される。これにより、記憶層1において、参照層3からの漏れ磁界をシフトキャンセル層4からのキャンセル磁界により相殺し、記憶層1のRHカーブのシフトをキャンセルすることが可能になる。
【０１９５】
［むすび］  
以上、実施例によれば、メモリセル毎に書き込みパルス幅を可変とすることにより書き込み時の低消費電力化を図ることができる。
【０１９６】
また、書き込み時にセル電流を流す時間が短くなるため、メモリセルの書き込み耐性を向上させることができる。さらに、メモリセルの書き込みが完了したことを検出した後に書き込みパルスを止めるため、書き込みエラー率を改善することができる。
【０１９７】
本例の不揮発性半導体メモリは、キャッシュ用途などのノイズの影響を受け易い環境下においても、ノイズ耐性を高くすることができる。
【０１９８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１９９】
11：  メモリセルアレイ、  12：  ワード線ドライバ、  13a-0, 13a-1, …13a-(j-1)，13b-0, 13b-1, …13b-(j-1)：  書き込み回路、  14-0, 14-1, …14-(j-1)：  書き込み電流制御回路、  15-0, 15-1, …15-(j-1)：  書き込み電流検出回路、  16：  制御回路、  21：  ビット線ドライバ、  22：  サンプルホールド回路、  23：  比較器。
【図１】
0006363543.tif 000002
【図２Ａ】
0006363543.tif 000003
【図２Ｂ】
0006363543.tif 000004
【図３】
0006363543.tif 000005
【図４】
0006363543.tif 000006
【図５】
0006363543.tif 000007
【図６】
0006363543.tif 000008
【図７】
0006363543.tif 000009
【図８】
0006363543.tif 000010
【図９】
0006363543.tif 000011
【図１０】
0006363543.tif 000012
【図１１】
0006363543.tif 000013
【図１２】
0006363543.tif 000014
【図１３】
0006363543.tif 000015