(57)【特許請求の範囲】
【請求項１】
第１の抵抗値及びこれと異なる第２の抵抗値のうちの１つを記憶可能な複数の磁気抵抗効果素子を備えるユニットと、前記ユニット内の前記複数の磁気抵抗効果素子にｓビット（ｓは２以上の自然数）の書き込みデータを書き込むための書き込み回路と、前記ユニット内の前記複数の磁気抵抗効果素子からｓビットの読み出しデータを読み出すための読み出し回路と、前記書き込み回路及び前記読み出し回路を制御する制御回路とを具備し、
前記書き込みデータは、バッファメモリから供給され、
前記制御回路は、
第１及び第２のモードのうちの１つをモード選択信号に基づいて選択し、
前記第２のモードが選択されたときに、前記バッファメモリの空き容量が一定値以上であれば、前記読み出し回路によって読み出しデータを読み出し、前記読み出しデータと前記書き込みデータに基づいて、前記書き込みデータと前記書き込みデータの反転データのいずれか一方を前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込み、
前記第２のモードが選択されたときに、前記バッファメモリの空き容量が前記一定値未満であれば、前記磁気抵抗効果素子を前記第１の抵抗値にするビット数が多くなるように前記書き込みデータと前記書き込みデータの反転データのいずれか一方を前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込む
ように構成される
磁気ランダムアクセスメモリ。
【請求項２】
前記制御回路は、
前記第２のモードが選択され、かつ、前記バッファメモリの空き容量が一定値以上であるときに、前記読み出しデータとしてのｓビットと前記書き込みデータとしてのｓビットとが互いに一致するビット数をｎ１とし、前記読み出しデータとしてのｓビットと前記書き込みデータの反転データとしてのｓビットとが互いに一致するビット数をｎ２とし、
ｎ１＞ｎ２のときに、互いに一致するビットの書き込みを禁止するマスク処理を行ったうえで、前記書き込みデータとしてのｓビットのうち、互いに不一致のビットについて書き込み動作を実行し、
ｎ１＜ｎ２のときに、互いに一致するビットの書き込みを禁止するマスク処理を行ったうえで、前記書き込みデータの前記反転データとしてのｓビットのうち、互いに不一致のビットについて前記書き込み動作を実行する
ように構成される
請求項１に記載の磁気ランダムアクセスメモリ。
【請求項３】
前記制御回路は、
前記第２のモードが選択され、かつ、前記バッファメモリの空き容量が一定値未満であるときに、前記書き込みデータとしてのｓビットのうち、前記磁気抵抗効果素子を前記第１の抵抗値にするビット数をｍ１とし、前記磁気抵抗効果素子を前記第２の抵抗値にするビット数をｍ２とし、
ｍ１＞ｍ２のときに、前記書き込みデータとしてのｓビットを前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込み、
ｍ１＜ｍ２のときに、前記書き込みデータの前記反転データとしてのｓビットを前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込む
ように構成される
請求項１に記載の磁気ランダムアクセスメモリ。
【請求項４】
前記制御回路は、
前記第１のモードが選択されたときに、前記書き込みデータとしてのｓビットのうち、前記磁気抵抗効果素子を前記第１の抵抗値にするビット数をｍ１とし、前記磁気抵抗効果素子を前記第２の抵抗値にするビット数をｍ２とし、
ｍ１＞ｍ２のときに、前記書き込みデータとしてのｓビットを前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込み、
ｍ１＜ｍ２のときに、前記書き込みデータの前記反転データとしてのｓビットを前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込む
ように構成される
請求項１に記載の磁気ランダムアクセスメモリ。
【請求項５】
前記制御回路は、
前記書き込みデータとしてのｓビットを前記複数の磁気抵抗効果素子に書き込むときに、前記ユニットに付随的に設けられるフラグビットを第１の値に設定し、
前記書き込みデータの前記反転データとしてのｓビットを前記複数の磁気抵抗効果素子に書き込むときに、前記フラグビットを第２の値に設定し、
前記フラグビットが前記第１の値のときに、前記ユニット内の前記複数の磁気抵抗効果素子から前記読み出しデータとしてのｓビットを読み出し、
前記フラグビットが前記第２の値のときに、前記ユニット内の前記複数の磁気抵抗効果素子から前記読み出しデータの反転データとしてのｓビットを読み出す
ように構成される
請求項１乃至４のいずれか１項に記載の磁気ランダムアクセスメモリ。
【請求項６】
前記第１のモードは、読み出し時の低消費電力化を主眼に置いた用途で選択され、前記第２のモードは、書き込み時の低消費電力化を主眼に置いた用途で選択される請求項１乃至５のいずれか１項に記載の磁気ランダムアクセスメモリ。
【請求項７】
請求項１乃至６のいずれか１項に記載の磁気ランダムアクセスメモリと、前記磁気ランダムアクセスメモリの動作を制御するコントローラとを具備し、
前記コントローラは、前記モード選択信号を前記磁気ランダムアクセスメモリに供給するメモリシステム。
【請求項８】
請求項１乃至６のいずれか１項に記載の磁気ランダムアクセスメモリと、前記書き込みデータを一時的に記憶する前記バッファメモリと、前記磁気ランダムアクセスメモリ及び前記バッファメモリの動作を制御するコントローラとを具備し、
前記コントローラは、前記バッファメモリの空き容量を示す空き容量信号に基づいて、前記空き容量が一定値以上であるか、又は、一定値未満であるか、を判定する
メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、磁気ランダムアクセスメモリ及びメモリシステムに関する。
【背景技術】
【０００２】
近年、コンピュータ、携帯電話、デジタルカメラなどの電子機器に搭載されるメモリシステムを構成する揮発性メモリ（ＳＲＡＭ及びＤＲＡＭ）を不揮発性メモリに置き換えて、メモリシステムの低消費電力化を図る技術の開発が進められている。この技術によれば、電源を遮断してもデータが消滅することがないため、例えば、データ処理中を除くスタンバイ時の消費電力をほぼ零にすることが可能である。
【０００３】
メモリシステム内の揮発性メモリに代わる不揮発性半導体メモリの有力候補は、磁気ランダムアクセスメモリ（Magnetic Random Access Memory: MRAM）である。磁気ランダムアクセスメモリは、その他の不揮発性半導体メモリに比べて、高速動作やデータ書き換え回数などのメモリ特性が優れているからである。
【０００４】
一方、メモリシステムの仕様によっては、従来と同様に、揮発性メモリをキャッシュメモリ又は主記憶メモリとして使用し、磁気ランダムアクセスメモリについては、ＮＡＮＤフラッシュメモリ、ＨＤＤなどのストレージデバイスの代替として使用するのが望ましい場合もある。
【０００５】
このように、現状は、例えば、磁気ランダムアクセスメモリをキャッシュメモリ又は主記憶メモリとして使用するか、又は、ストレージデバイス（ファイルメモリ）として使用するか、を、メモリシステムの仕様に応じて決定している。
【０００６】
しかし、磁気ランダムアクセスメモリを頻繁に読み出し動作を行うキャッシュメモリ又は主記憶メモリとして開発するときは、読み出し時の低消費電力化を図ることが重要になるのに対し、磁気ランダムアクセスメモリをストレージデバイスとして開発するときは、書き込み時の低消費電力化を図ることが重要になる。
【０００７】
従って、磁気ランダムアクセスメモリをキャッシュメモリ又は主記憶メモリの代替として開発したときは、これをストレージデバイスとして使用しようとすると、書き込み時の消費電力が増大する問題がある。逆に、磁気ランダムアクセスメモリをストレージデバイスの代替として開発したときは、これをキャッシュメモリ又は主記憶メモリとして使用しようとすると、読み出し時の消費電力が増大する問題がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平8−45275号公報
【非特許文献】
【０００９】
【非特許文献１】Zhenyu Sun, Hai Li, Yiran Chen, and Xiaobin Wang, "Variation tolerant sensing scheme of spin-transfer torque memory for yield improvement,"Proceedings of the International Conference on Computer-Aided Design (ICCAD), pp. 432-437, November 2010.
【非特許文献２】Sangyeun Cho and Hyunjin Lee, "Flip-N-Write: A simple deterministic technique to improve PRAM write performance, energy and endurance,"Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-42), pp. 347-357, December 2009.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
実施形態は、複数の用途の切り替えが可能であり、かつ、各用途において低消費電力化を図ることができる磁気ランダムアクセスメモリを提案する。
【課題を解決するための手段】
【００１１】
実施形態によれば、磁気ランダムアクセスメモリは、第１の抵抗値及びこれと異なる第２の抵抗値のうちの１つを記憶可能な複数の磁気抵抗効果素子を備えるユニットと、前記ユニット内の前記複数の磁気抵抗効果素子にｓビット（ｓは２以上の自然数）の書き込みデータを書き込むための書き込み回路と、前記ユニット内の前記複数の磁気抵抗効果素子からｓビットの読み出しデータを読み出すための読み出し回路と、前記書き込み回路及び前記読み出し回路を制御する制御回路とを備え、前記書き込みデータは、バッファメモリから供給され、前記制御回路は、第１及び第２のモードのうちの１つをモード選択信号に基づいて選択し、前記第２のモードが選択されたときに、前記バッファメモリの空き容量が一定値以上であれば、前記読み出し回路によって読み出しデータを読み出し、前記読み出しデータと前記書き込みデータに基づいて、前記書き込みデータと前記書き込みデータの反転データのいずれか一方を前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込み、前記第２のモードが選択されたときに、前記バッファメモリの空き容量が前記一定値未満であれば、前記磁気抵抗効果素子を前記第１の抵抗値にするビット数が多くなるように前記書き込みデータと前記書き込みデータの反転データのいずれか一方を前記書き込み回路によって前記複数の磁気抵抗効果素子に書き込むように構成される。
【図面の簡単な説明】
【００１２】
【図１】磁気ランダムアクセスメモリを示す図。
【図２】メモリセルアレイ、書き込み回路及び読み出し回路を示す図。
【図３】メモリセルアレイ、書き込み回路及び読み出し回路を示す図。
【図４】比較回路を示す図。
【図５】書き込み側のデータ反転回路を示す図。
【図６】書き込みデータとフラグビットを示す図。
【図７】読み出し側のデータ反転回路を示す図。
【図８】読み出し動作を示す波形図。
【図９】メモリシステムを示す図。
【図１０】書き込み動作を示す波形図。
【図１１】マスク制御信号生成回路を示す図。
【図１２】メモリシステムを示す図。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら実施形態を説明する。
【００１４】
［概要］
まず、以下の説明を分かり易くするために、以下の定義を行う。但し、以下の定義は、実施形態の説明を分かり易くするためのものであり、これに限定されるといった主旨のものではない。
【００１５】
磁気ランダムアクセスメモリのメモリセルとしての磁気抵抗効果素子は、高抵抗状態（第１の値）及び低抵抗状態（第２の値）の１ビット（２値）を記憶する。また、高抵抗状態を“１”状態とし、低抵抗状態を“０”状態とする。磁気ランダムアクセスメモリの初期状態においては、全てのメモリセルは、“１”状態であるものとする。
【００１６】
読み出し時に磁気抵抗効果素子に流す読み出し電流は、磁気抵抗効果素子の抵抗状態に依存する。即ち、磁気抵抗効果素子が“１”状態のときの読み出し電流をＩr-“1”とし、磁気抵抗効果素子が“０”状態のときの読み出し電流をＩr-“0”としたとき、Ｉr-“1”＜Ｉr-“0”の関係を有する。
【００１７】
また、書き込み時に磁気抵抗効果素子に流す書き込み電流は、その向きが書き込みデータの値“１”／“０”に応じて変化する双方向電流であり、かつ、読み出し電流よりも十分に大きな値を有する。即ち、１回の読み出し動作と１回の書き込み動作とを比較した場合、書き込み時の消費電力は、読み出し時の消費電力よりも大きくなる。
【００１８】
さらに、磁気抵抗効果素子に対する書き込みは、“１”−書き込みと“０”−書き込みが存在する。即ち、書き込みと言ったときは、磁気抵抗効果素子の抵抗状態を、“１”→“１”、“１”→“０”、“０”→“１”及び“０”→“０”にする４通りの書き込みが存在する。但し、単に書き込みと言ったときは、これらのうち、磁気抵抗効果素子の抵抗状態を変化させる書き込み（“１”→“０”及び“０”→“１”）を意味するものとする。
【００１９】
以上の前提の下、実施形態の磁気ランダムアクセスメモリについて説明する。
【００２０】
実施形態の磁気ランダムアクセスメモリは、読み出し時の低消費電力化を主眼にした用途（例えば、キャッシュメモリ又は主記憶メモリ用途）として、並びに、書き込み時の低消費電力化を主眼にした用途（例えば、ストレージデバイス用途）としての切り替えが可能な点に特徴を有する。
【００２１】
また、単に、２つの用途の切り替えが可能であるというだけではなく、各用途において、低消費電力化に最も適した書き込み動作を実行する点に、実施形態の磁気ランダムアクセスメモリとしての特徴を有する。
【００２２】
例えば、磁気ランダムアクセスメモリをストレージデバイス（ファイルメモリ）として使用するときは、書き込み時の消費電力を削減可能な書き込み動作を採用する（Write optimize）。
【００２３】
なぜなら、磁気ランダムアクセスメモリをストレージデバイス用途として使用するときは、磁気抵抗効果素子に記憶されたデータは、頻繁に読み出されることがなく、ユーザからのデータ読み出し要求があったときのみ読み出されるからである。この場合、書き込み時の消費電力が読み出し時の消費電力よりも大きくなる、という上述の磁気ランダムアクセスメモリの特徴を考慮すると、主に、書き込み時の消費電力を削減することがメモリシステム全体の消費電力を低減することになる。
【００２４】
書き込み時の消費電力を削減する技術としては、書き込みデータを上書きする物理アドレス（メモリセル）の抵抗状態（データ“１”／“０”）を読み出し、その読み出しデータと書き込みデータとを比較し、両者が一致するビットの書き込みを禁止することにより、書き込みビット数（抵抗値を変化させるビット数）を削減する、という手法を採用する。
【００２５】
例えば、書き込みデータは、ｓビット単位（ｓは、２以上の自然数）で書き込むものとする。
【００２６】
この場合、書き込みデータを上書きする物理アドレスから読み出されるｓビットの読み出しデータとｓビットの書き込みデータとが互いに一致するビット数をｎ１とし、ｓビットの読み出しデータとｓビットの書き込みデータの反転データとが互いに一致するビット数をｎ２とする。
【００２７】
そして、ｎ１＞ｎ２のときに、互いに一致するビットの書き込みを禁止するマスク処理を行ったうえで、書き込みデータとしてのｓビットのうち、互いに不一致のビットについて書き込み動作を実行する。
【００２８】
また、ｎ１＜ｎ２のときに、互いに一致するビットの書き込みを禁止するマスク処理を行ったうえで、書き込みデータの反転データとしてのｓビットのうち、互いに不一致のビットについて書き込み動作を実行する。
【００２９】
尚、ストレージデバイス用途としての詳しい書き込み動作（Write optimize）については、以下の実施例で説明する。
【００３０】
これに対し、磁気ランダムアクセスメモリをキャッシュメモリ又は主記憶メモリ用途として使用するときは、読み出し時の消費電力を削減可能な書き込み動作を採用する（Read optimize）。
【００３１】
なぜなら、磁気ランダムアクセスメモリをキャッシュメモリ又は主記憶メモリ用途として使用するときは、磁気抵抗効果素子に記憶されたデータは、頻繁に読み出されるからである。この場合、書き込み時の消費電力が読み出し時の消費電力よりも大きくなる、という上述の磁気ランダムアクセスメモリの特徴を考慮したとしても、読み出し回数が書き込み回数よりも圧倒的に多いため、主に、読み出し時の消費電力を削減することがメモリシステム全体の消費電力を低減することになる。
【００３２】
読み出し時の消費電力を削減する技術としては、複数ビットの書き込みデータを、“１”が多い状態に設定し、書き込みデータを上書きする物理アドレス（メモリセル）に対して“１”が多く書き込まれるように書き込み制御する手法を採用する。
【００３３】
この場合、書き込みデータを記憶する複数の磁気抵抗効果素子は、“１”状態（高抵抗状態）であるものが多くなるため、読み出し時において、小さな読み出し電流Ｉr-“1”を流す磁気抵抗効果素子の数は、大きな読み出し電流Ｉr-“0”を流す磁気抵抗効果素子の数よりも多くなる。結果として、読み出し時の低消費電力化を図ることができる。
【００３４】
例えば、書き込みデータとしてのｓビット（ｓは、２以上の自然数）のうち、磁気抵抗効果素子を第１の抵抗値（高抵抗状態）にするビット数をｍ１とし、磁気抵抗効果素子を第２の抵抗値（低抵抗状態）にするビット数をｍ２とする。
【００３５】
そして、ｍ１＞ｍ２のときに、書き込みデータとしてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子に書き込むための書き込み動作を実行する。
【００３６】
また、ｍ１＜ｍ２のときに、書き込みデータの反転データとしてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子に書き込むための書き込み動作を実行する。
【００３７】
尚、キャッシュメモリ又は主記憶メモリ用途としての詳しい書き込み動作（Read optimize）については、以下の実施例で説明する。
【００３８】
［実施例］
図１は、磁気ランダムアクセスメモリの主要部を示している。
【００３９】
メモリセルアレイ１０は、複数の磁気抵抗効果素子（メモリセル）のアレイを備える。デコーダ１１は、アドレス信号ADDRESS_INに基づいて、メモリセルアレイ１０内の磁気抵抗効果素子をランダムアクセスする。
【００４０】
書き込みデータDATA_INは、データ反転回路１２に入力される。データ反転回路１２は、例えば、ｓビット（ｓは、２以上の自然数）の書き込みデータDATA_INを、そのまま、書き込みデータWdataとして書き込み回路１３に転送する機能、及び、ｓビットの書き込みデータDATA_INの各ビットの値を反転させた反転データを、書き込みデータWdataとして書き込み回路１３に転送する機能を有する。
【００４１】
書き込み回路１３は、書き込みデータWdataをメモリセルアレイ１１内の選択された磁気抵抗効果素子に書き込む機能を有する。
【００４２】
読み出し回路１４は、読み出しデータRdataをメモリセルアレイ１１内の選択された磁気抵抗効果素子から読み出す機能を有する。
【００４３】
読み出しデータRdataは、データ反転回路１５に入力される。データ反転回路１５は、例えば、ｓビット（ｓは、２以上の自然数）の読み出しデータRdataを、そのまま、読み出しデータDATA_OUTとして出力する機能、及び、ｓビットの読み出しデータRdataの各ビットの値を反転させた反転データを、読み出しデータDATA_OUTとして出力する機能を有する。
【００４４】
比較回路１６は、書き込みデータDATA_INと、書き込みデータDATA_IN が上書きされる選択された物理アドレス（メモリセル）から読み出された読み出しデータRdataとを互いに比較する機能を有する。具体的には、以下の機能のうち少なくとも１つを有する。
【００４５】
・  書き込みデータDATA_INと読み出しデータRdataとを互いに比較する機能  
・  書き込みデータDATA_INの反転データと読み出しデータRdataとを互いに比較する機能  
・  書き込みデータDATA_INと読み出しデータRdataの反転データとを互いに比較する機能  
・  書き込みデータDATA_INの反転データと読み出しデータRdataの反転データとを互いに比較する機能
そして、比較回路１６は、書き込みデータDATA_INと読み出しデータRdataとの比較結果に基づいて、反転制御信号COM及びマスク制御信号Mを出力する。
【００４６】
反転制御信号COMは、データ反転回路１２において、書き込みデータDATA_INの反転を行うか否かを決定する制御信号であり、マスク制御信号Mは、書き込み回路１３において、書き込みデータDATA_INと読み出しデータRdataとが互いに一致するビットの書き込みを禁止する制御信号である。
【００４７】
制御回路１７は、書き込みイネーブル信号WE、読み出しイネーブル信号RE、マスクイネーブル信号ME、モード選択信号φ１及びポリシー選択信号φ２に基づいて、デコーダ１１、データ反転回路１２、書き込み回路１３、読み出し回路１４、データ反転回路１５及び比較回路１６の動作を制御する。
【００４８】
書き込みイネーブル信号WEは、書き込み時にイネーブル状態になり、読み出しイネーブル信号REは、読み出し時にイネーブル状態になる。また、マスクイネーブル信号MEは、書き込みデータDATA_INと読み出しデータRdataとが互いに一致するビットの書き込みを禁止するマスク処理を行うときにイネーブル状態になる。
【００４９】
モード選択信号φ１は、キャッシュメモリ又は主記憶メモリ用途としての第１のモードと、ストレージデバイス用途としての第２のモードとを、選択的に切り替えるための制御信号である。
【００５０】
ポリシー選択信号φ２は、第１のモードが選択されているときに、書き込みデータWdataを“１”が多い状態にして書き込みを行うか、又は“０”が多い状態にして書き込みを行うか、を決定する。
【００５１】
書き込みデータWdataを“１”又は“０”の一方が多い状態に片寄らせるために、例えば、書き込みデータDATA_INを、そのまま、書き込みデータWdataとして書き込み回路１３に転送するか、又は、書き込みデータDATA_INの各ビットの値を反転させた反転データを、書き込みデータWdataとして書き込み回路１３に転送するか、を制御する。
【００５２】
図２は、メモリセルアレイ、書き込み回路及び読み出し回路の第１の例を示している。
【００５３】
メモリセルアレイ１０内のメモリセルＭＣは、直列接続される磁気抵抗効果素子ＭＴＪと選択トランジスタ（ＦＥＴ）Ｔとを備える。選択トランジスタのゲート端子は、ワード線ＷＬに接続される。ワード線ＷＬは、ロウ方向に延び、その一端は、ロウデコーダ１１ａに接続される。
【００５４】
メモリセルＭＣの一端は、ビット線ＢＬに接続され、他端は、ビット線ｂＢＬに接続される。ビット線ＢＬ，ｂＢＬは、共に、カラム方向に延び、その一端は、カラム選択トランジスタ（ＦＥＴ）ＣＳＷを経由して、書き込み回路１３及び読み出し回路１４に接続される。
【００５５】
カラム選択トランジスタＣＳＷのゲート端子は、カラムデコーダ１１ｂに接続される。
【００５６】
書き込み回路１３は、書き込みドライバ／シンカーＤＳ１，ＤＳ２を備える。書き込みドライバ／シンカーＤＳ１は、ビット線ＢＬの一端に接続され、書き込みドライバ／シンカーＤＳ２は、ビット線ｂＢＬの一端に接続される。
【００５７】
また、書き込みドライバ／シンカーＤＳ１，ＤＳ２は、例えば、電源端子Ｖｄｄと接地端子Ｖｓｓとの間に直列接続されるＰチャネルＦＥＴとＮチャネルＦＥＴとを備える。
【００５８】
そして、書き込みイネーブル信号WEが“Ｈ”であり、マスク制御信号Mの反転信号bMが“Ｈ”であるとき、ＮＡＮＤゲート回路ＮＤ１−１の出力信号は、“Ｌ”になるため、ＮＡＮＤゲート回路ＮＤ１−２，ＮＤ１−３及びＮＯＲゲート回路ＮＲ１−１，ＮＲ１−２は、書き込みデータWdataの値に応じた出力信号を出力する。
【００５９】
例えば、書き込みデータWdataが“１”のときは、ＮＡＮＤゲート回路ＮＤ１−２の出力信号及びＮＯＲゲート回路ＮＲ１−１の出力信号は、共に“１”となる。このため、書き込みドライバ／シンカーＤＳ１は、ビット線ＢＬを接地端子Ｖｓｓに接続する。また、ＮＡＮＤゲート回路ＮＤ１−３の出力信号及びＮＯＲゲート回路ＮＲ１−２の出力信号は、共に“０”となる。このため、書き込みドライバ／シンカーＤＳ２は、ビット線ｂＢＬを電源端子Ｖｄｄに接続する。
【００６０】
従って、磁気抵抗効果素子ＭＴＪに、ドライバ／シンカーＤＳ２からドライバ／シンカーＤＳ１に向かう方向の書き込み電流Ｉw-“1”が流れる。
【００６１】
また、例えば、書き込みデータWdataが“０”のときは、ＮＡＮＤゲート回路ＮＤ１−２の出力信号及びＮＯＲゲート回路ＮＲ１−１の出力信号は、共に“０”となる。このため、書き込みドライバ／シンカーＤＳ１は、ビット線ＢＬを電源端子Ｖｄｄに接続する。また、ＮＡＮＤゲート回路ＮＤ１−３の出力信号及びＮＯＲゲート回路ＮＲ１−２の出力信号は、共に“１”となる。このため、書き込みドライバ／シンカーＤＳ２は、ビット線ｂＢＬを接地端子Ｖｓｓに接続する。
【００６２】
従って、磁気抵抗効果素子ＭＴＪに、ドライバ／シンカーＤＳ１からドライバ／シンカーＤＳ２に向かう方向の書き込み電流Ｉw-“0”が流れる。
【００６３】
これに対し、書き込みイネーブル信号WEが“Ｌ”であるとき、及び、書き込みイネーブル信号WEが“Ｈ”であるが、マスク制御信号Mの反転信号bMが“Ｌ”であるときは、ＮＡＮＤゲート回路ＮＤ１−１の出力信号は、“Ｈ”になるため、ＮＡＮＤゲート回路ＮＤ１−２，ＮＤ１−３の出力信号は、書き込みデータWdataの値にかかわらず、常に“１”となり、ＮＯＲゲート回路ＮＲ１−１，ＮＲ１−２の出力信号は、書き込みデータWdataの値にかかわらず、常に“０”となる。
【００６４】
従って、ドライバ／シンカーＤＳ１，ＤＳ２は、非活性化され、磁気抵抗効果素子ＭＴＪに書き込み電流が流れることはない。
【００６５】
このように、マスク制御信号Mの値に応じて、ドライバ／シンカーＤＳ１，ＤＳ２の活性化／非活性化を制御できることは、書き込みデータDATA_INと読み出しデータRdataとが互いに一致するビットの書き込み（抵抗値を変化させない書き込み“１”→“１”及び“０”→“０”）については、マスク制御信号Mの反転信号bMを“Ｌ”にすることにより、書き込みを禁止（マスク処理）し、低消費電力化を図ることができることを意味する。
【００６６】
読み出し回路１４は、例えば、ビット線ｂＢＬに接続される接地トランジスタ（ＦＥＴ）ＧＳＷと、ビット線ＢＬに接続されるセンスアンプＳ／Ａとを備える。
【００６７】
但し、接地トランジスタＧＳＷとセンスアンプＳ／Ａとの位置関係は、逆であってもよい。即ち、接地トランジスタ（ＦＥＴ）ＧＳＷがビット線ＢＬに接続され、センスアンプＳ／Ａがビット線ｂＢＬに接続されていてもよい。
【００６８】
例えば、読み出しイネーブル信号REが“Ｈ”であるとき、接地トランジスタＧＳＷがオン状態となり、センスアンプＳ／Ａが活性化される。
【００６９】
従って、例えば、センスアンプＳ／Ａを用いて、磁気抵抗効果素子ＭＴＪに流れる読み出し電流Ｉr-“0”，Ｉr-“1”を検出することにより、磁気抵抗効果素子ＭＴＪから読み出しデータRdataを読み出すことができる。
【００７０】
尚、本例では、データ“１”がロジック“Ｈ”に対応し、データ“０”がロジック“Ｌ”に対応することを前提に説明したが、データ“１”／“０”とロジック“Ｈ”／“Ｌ”との関係は、これに限られず、逆の関係を有していてもよい。
【００７１】
この場合、例えば、図２のWdataをbWdataに変更すれば、図２の回路をそのまま採用することができる。但し、bWdataは、Wdataの反転信号である。
【００７２】
図３は、メモリセルアレイ、書き込み回路及び読み出し回路の第２の例を示している。
【００７３】
本例は、図２に示す第１の例と比べると、書き込み回路１３の構成が相違している。
【００７４】
書き込み回路１３は、書き込みドライバ／シンカーＤＳ１，ＤＳ２を備える。書き込みドライバ／シンカーＤＳ１は、ビット線ＢＬの一端に接続され、書き込みドライバ／シンカーＤＳ２は、ビット線ｂＢＬの一端に接続される。
【００７５】
また、書き込みドライバ／シンカーＤＳ１，ＤＳ２は、例えば、電源端子Ｖｄｄと接地端子Ｖｓｓとの間に直列接続される２つのＰチャネルＦＥＴと２つのＮチャネルＦＥＴとを備える。
【００７６】
本例によれば、書き込みドライバ／シンカーＤＳ１，ＤＳ２が２つのＰチャネルＦＥＴと２つのＮチャネルＦＥＴとを備えるため、書き込みドライバ／シンカーＤＳ１，ＤＳ２を制御するための信号の配線接続が容易になる利点がある。但し、電源端子Ｖｄｄとビット線ＢＬとの間に２つのＦＥＴが配置されるために、電圧降下が大きくなるため、電圧降下を小さくしたいときは、図２に示す第１の例を採用するのが望ましい。
【００７７】
本例によれば、書き込みイネーブル信号WEが“Ｈ”であり、マスク制御信号Mの反転信号bMが“Ｈ”であるとき、ＮＡＮＤゲート回路Ｎ１の出力信号は、“Ｌ”になり、ドライバ／シンカーＤＳ１，ＤＳ２が活性化される。
【００７８】
従って、書き込みデータWdataが“１”のときは、磁気抵抗効果素子ＭＴＪに、ドライバ／シンカーＤＳ２からドライバ／シンカーＤＳ１に向かう方向の書き込み電流Ｉw-“1”が流れ、書き込みデータWdataが“０”のときは、磁気抵抗効果素子ＭＴＪに、ドライバ／シンカーＤＳ１からドライバ／シンカーＤＳ２に向かう方向の書き込み電流Ｉw-“0”が流れる。
【００７９】
また、例えば、書き込みイネーブル信号WEが“Ｌ”であるとき、及び、書き込みイネーブル信号WEが“Ｈ”であるが、マスク制御信号Mの反転信号bMが“Ｌ”であるときは、ＮＡＮＤゲート回路Ｎ１の出力信号は、“Ｈ”になり、ドライバ／シンカーＤＳ１，ＤＳ２が非活性化される。
【００８０】
即ち、例えば、書き込みデータDATA_INと読み出しデータRdataとが互いに一致するビットの書き込み（抵抗値を変化させない書き込み“１”→“１”及び“０”→“０”）については、マスク制御信号Mの反転信号bMを“Ｌ”にすることにより、書き込みを禁止（マスク処理）し、低消費電力化を図ることができる。
【００８１】
読み出し回路１４は、例えば、ビット線ｂＢＬに接続される接地トランジスタ（ＦＥＴ）ＧＳＷと、ビット線ＢＬに接続されるセンスアンプＳ／Ａとを備える。
【００８２】
但し、接地トランジスタＧＳＷとセンスアンプＳ／Ａとの位置関係は、逆であってもよい。即ち、接地トランジスタ（ＦＥＴ）ＧＳＷがビット線ＢＬに接続され、センスアンプＳ／Ａがビット線ｂＢＬに接続されていてもよい。
【００８３】
例えば、読み出しイネーブル信号REが“Ｈ”であるとき、接地トランジスタＧＳＷがオン状態となり、センスアンプＳ／Ａが活性化される。
【００８４】
従って、例えば、センスアンプＳ／Ａを用いて、磁気抵抗効果素子ＭＴＪに流れる読み出し電流Ｉr-“0”，Ｉr-“1”を検出することにより、磁気抵抗効果素子ＭＴＪから読み出しデータRdataを読み出すことができる。
【００８５】
尚、本例においても、データ“１”がロジック“Ｈ”に対応し、データ“０”がロジック“Ｌ”に対応することを前提に説明したが、データ“１”／“０”とロジック“Ｈ”／“Ｌ”との関係は、これに限られず、逆の関係を有していてもよい。
【００８６】
この場合、例えば、図３のWdataをbWdataに変更すれば、図３の回路をそのまま採用することができる。但し、bWdataは、Wdataの反転信号である。
【００８７】
図４は、比較回路を示している。
【００８８】
比較回路１６は、書き込みデータDATA_INと読み出しデータRdataの一致／不一致を、ビット毎に比較する。本例では、１ビットDATA_IN [0]と１ビットRdata [0]の比較により１ビットCOMP [0]を得る比較回路の例を示す。従って、ｓビットのデータを比較するには、例えば、図４の回路をｓ個用いてｓビットのデータを同時に比較する。
【００８９】
比較回路１６は、ＮＡＮＤゲート回路ＮＤ２と、ＮＯＲゲート回路ＮＲ２−１，ＮＲ２−２とを備える。この回路は、エクスクルーシブオア回路と等価である。即ち、比較回路１６は、ｓビットの書き込みデータDATA_IN [0:S-1]とｓビットの読み出しデータRdata [0:S-1]とを、ビット毎に比較し、両者が一致しているビット数、又は、両者が不一致のビット数を検出する機能を備える。
【００９０】
例えば、書き込みデータ（１ビット）DATA_IN [0]と読み出しデータ（１ビット）Rdata [0]とが一致しているとき、比較信号COMP [0]は、“０”となる。
【００９１】
即ち、DATA_IN [0]=”1”, Rdata [0]=”1”のとき、ＮＡＮＤゲート回路ＮＤ２の出力信号は、“０”となり、ＮＯＲゲート回路ＮＲ２−１の出力信号は、“０”となるため、ＮＯＲゲート回路ＮＲ２−２から出力される比較信号COMP [0]は、“０”となる。また、DATA_IN [0]=”0”, Rdata [0]=”0”のとき、ＮＡＮＤゲート回路ＮＤ２の出力信号は、“１”となり、ＮＯＲゲート回路ＮＲ２−１の出力信号は、“１”となるため、ＮＯＲゲート回路ＮＲ２−２から出力される比較信号COMP [0]は、“０”となる。
【００９２】
これに対し、書き込みデータ（１ビット）DATA_IN [0]と読み出しデータ（１ビット）Rdata [0]とが不一致のとき、比較信号COMP [0]は、“１”となる。
【００９３】
即ち、DATA_IN [0]=”1”, Rdata [0]=”0”のとき、ＮＡＮＤゲート回路ＮＤ２の出力信号は、“１”となり、ＮＯＲゲート回路ＮＲ２−１の出力信号は、“０”となるため、ＮＯＲゲート回路ＮＲ２−２から出力される比較信号COMP [0]は、“１”となる。また、DATA_IN [0]=”0”, Rdata [0]=”1”のとき、ＮＡＮＤゲート回路ＮＤ２の出力信号は、“１”となり、ＮＯＲゲート回路ＮＲ２−１の出力信号は、“０”となるため、ＮＯＲゲート回路ＮＲ２−２から出力される比較信号COMP [0]は、“１”となる。
【００９４】
図５は、書き込み側のデータ反転回路を示している。
【００９５】
データ反転回路１２は、“１”／“０”計算回路１９を備える。“１”／“０”計算回路１９は、モード選択信号φ１及びポリシー選択信号φ２の制御下で、書き込みデータDATA_IN [0:S-1]又は比較信号COMP [0:S-1]について、“１”状態のビット数、“０”状態のビット数、又は、“１”状態及び“０”状態のビット数を計算する。
【表１】
0005337277.tif 000002
【００９６】
例えば、表１に示すように、ストレージデバイス用途としての第２のモードが選択されるときは、モード選択信号φ１が“Ｈ”に設定され、モード選択信号φ１の反転信号ｂφ１が“Ｌ”に設定される。
【００９７】
この場合、“１”／“０”計算回路１９には、比較信号COMP [0:S-1]が入力される。即ち、“１”／“０”計算回路１９は、ポリシー選択信号φ２に基づき、比較信号COMP [0:S-1]について“１”の数、“０”の数、又は、その両方を計算する。
【００９８】
例えば、ポリシー選択信号φ２が“Ｌ”であるときは、比較信号COMP [0:S-1]について“０”の数を計算する。これは、図４の比較回路を想定すると、比較信号COMP [i]が“０”のとき、書き込みデータDATA_IN [i]と読み出しデータRdata [i]とが一致していることから、両者が一致しているビット数を計算する、ということを意味する。
【００９９】
従って、“１”／“０”計算回路１９は、“０”が多い（両者が一致するビットが多い）と判断したときは、制御信号ＣＮＴとして“Ｈ”を出力する。
【０１００】
この時、セレクタＳＥＬ１内の転送トランジスタＱ１１がオンになり、転送トランジスタＱ１２がオフになるため、セレクタＳＥＬ１は、書き込みデータDATA_IN [0]を、そのまま、書き込みデータWdata [0]として書き込み回路１３に転送する。
【０１０１】
本例では、セレクタＳＥＬ１は、１ビットの書き込みデータDATA_IN [0]に対して１個設けられることを前提とする。従って、ｓビットの書き込みデータDATA_IN [0:S-1]をｓビットの書き込みデータWdata [0:S-1]として出力するためには、例えば、図５の回路のセレクタをｓ個用いてｓビットのデータ転送に使用する。以下、同じ。
【０１０２】
これに対し、“１”／“０”計算回路１９は、“１”が多い（両者が不一致のビットが多い）と判断したときは、制御信号ＣＮＴとして“Ｌ”を出力する。
【０１０３】
この時、セレクタＳＥＬ１内の転送トランジスタＱ１１がオフになり、転送トランジスタＱ１２がオンになるため、セレクタＳＥＬ１は、書き込みデータDATA_INの反転データを、書き込みデータWdataとして書き込み回路１３に転送する。
【０１０４】
また、例えば、ポリシー選択信号φ２が“Ｈ”であるときは、比較信号COMP [0:S-1]について“１”の数を計算する。これは、図４の比較回路を想定すると、比較信号COMP [i]が“０”のとき、書き込みデータDATA_IN [i]と読み出しデータRdata [i]とが一致していることから、両者が不一致のビット数を計算する、ということを意味する。
【０１０５】
従って、“１”／“０”計算回路１９は、“１”が多い（両者が不一致のビットが多い）と判断したときは、制御信号ＣＮＴとして“Ｈ”を出力する。
【０１０６】
この時、セレクタＳＥＬ１内の転送トランジスタＱ１１がオンになり、転送トランジスタＱ１２がオフになるため、セレクタＳＥＬ１は、書き込みデータDATA_IN [0]を、そのまま、書き込みデータWdata [0]として書き込み回路１３に転送する。
【０１０７】
これに対し、“１”／“０”計算回路１９は、“０”が多い（両者が一致するビットが多い）と判断したときは、制御信号ＣＮＴとして“Ｌ”を出力する。
【０１０８】
この時、セレクタＳＥＬ１内の転送トランジスタＱ１１がオフになり、転送トランジスタＱ１２がオンになるため、セレクタＳＥＬ１は、書き込みデータDATA_IN [0]の反転データを、書き込みデータWdata [0]として書き込み回路１３に転送する。
【０１０９】
ここで、モード選択信号φ１及びポリシー選択信号φ２が共に“Ｈ”のときは、結果として、不一致のビット数が多くなるように、書き込みデータDATA_IN [0]の反転／非反転を制御し、書き込みを実行することになる。
【０１１０】
しかし、本実施例においては、書き込み時において、書き込みデータWdata [0:S-1]と読み出しデータRdata [0:S-1]とが一致するビット数を増やし、それら一致するビットの書き込みを禁止して低消費電力を図る、という主旨を有する。このため、本実施例の目的からすれば、モード選択信号φ１及びポリシー選択信号φ２が共に“Ｈ”にすることは不適切である。
【０１１１】
従って、例えば、モード選択信号φ１が“Ｈ”のときは、常に、ポリシー選択信号φ２が“Ｌ”になるように制御するのが望ましい。
【０１１２】
但し、必要に応じて、モード選択信号φ１が“Ｈ”のときに、ポリシー選択信号φ２を“Ｈ”又は“Ｌ”に切り替えることができるようにすることは可能である。
【０１１３】
このように、図４及び図５の回路を用いれば、以下の制御が可能になる。
【０１１４】
即ち、読み出しデータRdata [0:S-1]としてのｓビットと書き込みデータDATA_IN [0:S-1]としてのｓビットとが互いに一致するビット数をｎ１とし、読み出しデータRdata [0:S-1]としてのｓビットと書き込みデータDATA_IN [0:S-1]の反転データとしてのｓビットとが互いに一致するビット数をｎ２とする。
【０１１５】
そして、ｎ１＞ｎ２のときに、制御信号ＣＮＴを“Ｈ”にし、かつ、ｓビットの書き込みデータDATA_IN [0:S-1]のうち、書き込みデータDATA_IN [i]と読み出しデータRdata [i]とが一致しているビットについては、マスク制御信号Mを“Ｈ”（書き込み禁止：マスク処理実行）にし、書き込みデータDATA_IN [i]と読み出しデータRdata [i]とが一致していないビットについては、マスク制御信号Mを“Ｌ”（書き込み実行）にする。
【０１１６】
即ち、制御信号ＣＮＴが“Ｈ”であるため、書き込みデータDATA_INの反転処理は、実行されない。
【０１１７】
また、マスク制御信号Mは、ｓビットの書き込みデータDATA_IN [0:S-1]に対して、ビット毎に出力される。従って、書き込みイネーブル信号WE及びマスクイネーブル信号MEが共に“Ｈ”のとき、書き込みデータDATA_IN [i]と読み出しデータRdata [i]とが一致しているビットについては、マスク制御信号Mの反転信号bMは、“Ｌ”（書き込み禁止：マスク処理実行）になる。
【０１１８】
また、ｎ１＜ｎ２のときに、制御信号ＣＮＴを“Ｌ”にし、かつ、ｓビットの書き込みデータDATA_IN [0:S-1]の反転データうち、書き込みデータDATA_IN [i]の反転データと読み出しデータRdata [i]とが一致しているビットについては、マスク制御信号Mを“Ｈ”（書き込み禁止：マスク処理実行）にし、書き込みデータDATA_IN [i]の反転データと読み出しデータRdata [i]とが一致していないビットについては、マスク制御信号Mを“Ｌ”（書き込み実行）にする。
【０１１９】
即ち、制御信号ＣＮＴが“Ｌ”であるため、書き込みデータDATA_IN [i]の反転処理は、実行される。
【０１２０】
また、マスク制御信号Mは、ｓビットの書き込みデータDATA_IN [0:S-1]に対して、ビット毎に出力される。従って、書き込みイネーブル信号WE及びマスクイネーブル信号MEが共に“Ｈ”のとき、書き込みデータDATA_IN [i]の反転信号と読み出しデータRdata [i]とが一致しているビットについては、マスク制御信号Mの反転信号bMは、“Ｌ”（書き込み禁止：マスク処理実行）になる。
【０１２１】
また、例えば、表１に示すように、キャッシュメモリ又は主記憶メモリ用途としての第１のモードが選択されるときは、モード選択信号φ１が“Ｌ”に設定され、モード選択信号φ１の反転信号ｂφ１が“Ｈ”に設定される。
【０１２２】
この場合、“１”／“０”計算回路１９には、書き込みデータDATA_IN [0:S-1]が入力される。即ち、“１”／“０”計算回路１９は、ポリシー選択信号φ２に基づき、書き込みデータDATA_IN [0:S-1]について“１”の数、“０”の数、又は、その両方を計算する。
【０１２３】
例えば、ポリシー選択信号φ２が、書き込みデータWdataを“０”が多い状態にする、というポリシーを示しているとき、即ち、ポリシー選択信号φ２が“Ｌ”であるときは、以下の書き込み制御を行う。
【０１２４】
まず、書き込みデータ（ｓビット）DATA_IN [0:S-1]のうち、磁気抵抗効果素子を低抵抗値にする“０”−書き込みを行うビット数をｍ１とし、磁気抵抗効果素子を高抵抗値にする“１”−書き込みを行うビット数をｍ２とする。
【０１２５】
そして、ｍ１＞ｍ２のときに、“１”／“０”計算回路１９は、書き込みデータDATA_IN [0:S-1]としてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子にそのまま書き込むための制御信号ＣＮＴとして“Ｈ”を出力する。
【０１２６】
従って、セレクタＳＥＬ１内の転送トランジスタＱ１１がオンになり、転送トランジスタＱ１２がオフになるため、セレクタＳＥＬ１は、“０”が多い書き込みデータDATA_IN [0:S-1]を、そのまま、書き込みデータWdata [0:S-1]として書き込み回路１３に転送する。
【０１２７】
また、ｍ１＜ｍ２のときに、“１”／“０”計算回路１９は、書き込みデータDATA_IN [0:S-1]の反転データとしてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子に書き込むための制御信号ＣＮＴとして“Ｌ”を出力する。
【０１２８】
従って、セレクタＳＥＬ１内の転送トランジスタＱ１１がオフになり、転送トランジスタＱ１２がオンになるため、セレクタＳＥＬ１は、“１”が多い書き込みデータDATA_IN [0:S-1]を反転することにより“０”が多い書き込みデータに変換し、これを書き込みデータWdata [0:S-1]として書き込み回路１３に転送する。
【０１２９】
また、例えば、ポリシー選択信号φ２が、書き込みデータWdata [0:S-1]を“１”が多い状態にする、というポリシーを示しているとき、即ち、ポリシー選択信号φ２が“Ｈ”であるときは、以下の書き込み制御を行う。
【０１３０】
まず、書き込みデータ（ｓビット）DATA_IN [0:S-1]のうち、磁気抵抗効果素子を高抵抗値にする“１”−書き込みを行うビット数をｍ１とし、磁気抵抗効果素子を低抵抗値にする“０”−書き込みを行うビット数をｍ２とする。
【０１３１】
そして、ｍ１＞ｍ２のときに、“１”／“０”計算回路１９は、書き込みデータDATA_IN [0:S-1]としてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子にそのまま書き込むための制御信号ＣＮＴとして“Ｈ”を出力する。
【０１３２】
従って、セレクタＳＥＬ１内の転送トランジスタＱ１１がオンになり、転送トランジスタＱ１２がオフになるため、セレクタＳＥＬ１は、“１”が多い書き込みデータDATA_IN [0:S-1]を、そのまま、書き込みデータWdata [0:S-1]として書き込み回路１３に転送する。
【０１３３】
また、ｍ１＜ｍ２のときに、“１”／“０”計算回路１９は、書き込みデータDATA_IN [0:S-1]の反転データとしてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子に書き込むための制御信号ＣＮＴとして“Ｌ”を出力する。
【０１３４】
従って、セレクタＳＥＬ１内の転送トランジスタＱ１１がオフになり、転送トランジスタＱ１２がオンになるため、セレクタＳＥＬ１は、“０”が多い書き込みデータDATA_IN [0:S-1]を反転することにより“１”が多い書き込みデータに変換し、これを書き込みデータWdata [0:S-1]として書き込み回路１３に転送する。
【０１３５】
ここで、図６に示すように、第１又は第２のモードにおいて、書き込みデータDATA_INを反転させたか否かを示すためのフラグビットを書き込みデータWdataに付加する。
【０１３６】
これは、読み出し時に、メモリセルアレイに記憶された書き込みデータWdataが、書き込みデータDATA_INそのものであるか、又は、書き込みデータDATA_INを反転させたデータであるか、を明示しておくことにより、読み出し時に、書き込みデータDATA_INを読み出しデータDATA_OUTとして正確に読み出すことを目的とする。
【０１３７】
例えば、第２のモードが選択されている場合を例に説明する。
【０１３８】
まず、書き込みデータ（データ列）DATA_INは、一定単位のデータに分割される。そして、一定単位の書き込みデータ（ｓビット）DATA_INに対して、“１”状態のビット数と“０”状態のビット数を計算する。
【０１３９】
また、ポリシー選択信号φ２が、書き込みデータWdataを“１”が多い状態にする、というポリシーを示しており、かつ、ｓビットの書き込みデータDATA_INが、“１”が多い状態にあるとき、書き込みデータDATA_INをそのまま書き込みデータWdataとして書き込んだことを示すために、例えば、フラグビットを“１”に設定する（同図（ａ）参照）。
【０１４０】
これに対し、ポリシー選択信号φ２が、書き込みデータWdataを“１”が多い状態にする、というポリシーを示しており、かつ、ｓビットの書き込みデータDATA_INが、“０”が多い状態にあるとき、書き込みデータWdataが書き込みデータDATA_INを反転させたデータであることを示すために、例えば、フラグビットを“０”に設定する（同図（ｂ）参照）。
【０１４１】
これにより、読み出し時においては、フラグビットを参酌することにより、メモリセルアレイから読み出されたデータをそのまま読み出しデータとするか、又は、メモリセルアレイから読み出されたデータを反転したデータを読み出しデータとするか、を決定することができる。
【０１４２】
図７は、読み出し側のデータ反転回路を示している。  
データ反転回路１５は、フラグ検出回路２０を備える。
【０１４３】
フラグ検出回路２０は、メモリセルアレイ内のｓ個の磁気抵抗効果素子から読み出されたｓビットの読み出しデータRdataをそのまま読み出しデータDATA_OUTとして出力するか、又は、ｓビットの読み出しデータRdataの反転データを読み出しデータDATA_OUTとして出力するか、をフラグビットに基づいて決定する。
【０１４４】
例えば、ストレージデバイス用途としての第２のモードが選択され、かつ、ｓビットの書き込みデータDATA_INがｎ１＞ｎ２を満たしているとき、フラグビットは、第１の値としての“１”に設定される。この場合、第２のモード後の読み出し動作において、前記フラグビットが“１”のときは、フラグ検出回路２０は、“Ｈ”を出力する。
【０１４５】
フラグ検出回路２０の出力信号が“Ｈ”であるときは、セレクタＳＥＬ２内の転送トランジスタＱ２１がオンになり、転送トランジスタＱ２２がオフになる。従って、セレクタＳＥＬ２は、メモリセルアレイからのｓビットの読み出しデータRdataをそのまま読み出しデータDATA_OUTとして出力する。
【０１４６】
また、第２のモードが選択され、かつ、ｓビットの書き込みデータDATA_INがｎ１＜ｎ２を満たしているとき、フラグビットは、第２の値としての“０”に設定される。この場合、第２のモード後の読み出し動作において、前記フラグビットが“０”のときは、フラグ検出回路２０は、“Ｌ”を出力する。
【０１４７】
フラグ検出回路２０の出力信号が“Ｌ”であるときは、セレクタＳＥＬ２内の転送トランジスタＱ２１がオフになり、転送トランジスタＱ２２がオンになる。従って、セレクタＳＥＬ２は、メモリセルアレイからのｓビットの読み出しデータRdataの反転データとしての読み出しデータDATA_OUTを出力する。
【０１４８】
また、キャッシュメモリ又は主記憶メモリ用途としての第１のモードが選択され、かつ、ｓビットの書き込みデータDATA_INがｍ１＞ｍ２を満たしているとき、フラグビットは、第１の値としての“１”に設定される。この場合、第１のモード後の読み出し動作において、前記フラグビットが“１”のときは、フラグ検出回路２０は、“Ｈ”を出力する。
【０１４９】
フラグ検出回路２０の出力信号が“Ｈ”であるときは、セレクタＳＥＬ２内の転送トランジスタＱ２１がオンになり、転送トランジスタＱ２２がオフになる。従って、セレクタＳＥＬ２は、メモリセルアレイからのｓビットの読み出しデータRdataをそのまま読み出しデータDATA_OUTとして出力する。
【０１５０】
また、第１のモードが選択され、かつ、ｓビットの書き込みデータDATA_INがｍ１＜ｍ２を満たしているとき、フラグビットは、第２の値としての“０”に設定される。この場合、第１のモード後の読み出し動作において、前記フラグビットが“０”のときは、フラグ検出回路２０は、“Ｌ”を出力する。
【０１５１】
フラグ検出回路２０の出力信号が“Ｌ”であるときは、セレクタＳＥＬ２内の転送トランジスタＱ２１がオフになり、転送トランジスタＱ２２がオンになる。従って、セレクタＳＥＬ２は、メモリセルアレイからのｓビットの読み出しデータRdataの反転データとしての読み出しデータDATA_OUTを出力する。
【０１５２】
尚、図８は、読み出しデータRdataの反転データを、読み出しデータDATA_OUTとして出力するときの読み出し波形図を示している。
【０１５３】
この場合、読み出しデータRdataを反転して、読み出しデータDATA_OUTを生成するために、データ復元（反転）のための遅延時間ｔｄが発生する。
【０１５４】
図９は、磁気ランダムアクセスメモリを備えるメモリシステムを示している。
【０１５５】
コントローラ２１は、バッファメモリ（書き込みバッファ）２２及び磁気ランダムアクセスメモリ２３の動作を制御する。磁気ランダムアクセスメモリ２３は、上述の実施例に係わる磁気ランダムアクセスメモリである。
【０１５６】
このメモリシステムは、書き込みデータDATA_INのデータパスとして、コントローラ２１から、バッファメモリ（例えば、ＤＲＡＭなど）２２を経由して、磁気ランダムアクセスメモリ２３に接続されるデータパスを備える。
【０１５７】
コントローラ２１は、磁気ランダムアクセスメモリ２３をストレージデバイス用途として使用するとき、ストレージデバイス用途としての第２のモードを選択するモード選択信号φ１を磁気ランダムアクセスメモリに供給する。
【０１５８】
ここで、コントローラ２１に以下の機能を付加することもできる。
【０１５９】
その機能とは、バッファメモリ２２の空き容量に基づき、上述の第２のモードに代えて、第３のモードを選択する機能である。
【０１６０】
例えば、コントローラ２１は、バッファメモリ２２の空き容量を示す空き容量信号φcに基づいて、バッファメモリ２２の空き容量を確認する。
【０１６１】
そして、コントローラ２１は、バッファメモリ２２の空き容量が一定値以上であるときは、第２のモードの選択を指示するモード選択信号φ１を磁気ランダムアクセスメモリ２３に供給する。
【０１６２】
また、コントローラ２１は、バッファメモリ２２の空き容量が一定値未満であるときは、第２のモードに代えて、第３のモードの選択を指示するモード選択信号φ１を磁気ランダムアクセスメモリ２３に供給する。
【０１６３】
磁気ランダムアクセスメモリ２３内の制御回路（図１の制御回路１７）は、モード選択信号φ１により第３のモードが選択されたとき、書き込みデータDATA_INとしてのｓビットのうち、磁気抵抗効果素子を第１の抵抗値（高抵抗状態）にするビット数をｍ１とし、磁気抵抗効果素子を第２の抵抗値（低抵抗状態）にするビット数をｍ２とする。
【０１６４】
そして、ｍ１＞ｍ２のときに、書き込みデータDATA_INとしてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子に書き込むための書き込み動作を実行する。
【０１６５】
また、ｍ１＜ｍ２のときに、書き込みデータDATA_INの反転データとしてのｓビットを、選択された物理アドレスに存在するｓ個の磁気抵抗効果素子に書き込むための書き込み動作を実行する。
【０１６６】
このように、磁気ランダムアクセスメモリをストレージデバイス用途として使用する場合において、バッファメモリ２２の空き容量が十分に確保されているときは、第２のモードを選択し、書き込みデータを上書きするメモリセルのデータを読み出し、その読み出しデータと書き込みデータとを比較し、両者が一致するビットの書き込みを禁止することにより、書き込みビット数（抵抗値を変化させるビット数）を削減する。これにより、書き込み時における低消費電力化を実現できる。
【０１６７】
ところで、第２のモードにより書き込み動作を実行しているときは、例えば、図１０の（ｂ）に示す波形図から明らかなように、データ書き込みを実行する前に、必ず、データ読み出し（プリ読み出し）を行わなければならない。このため、磁気ランダムアクセスメモリ２３において、ビット比較及びデータ反転のための遅延時間（オーバーヘッド）ｔｄが発生し、物理アドレス（メモリセル）に実際にデータを書き込むための書き込み時間（１サイクル）が長くなる。
【０１６８】
一方、第２のモードによりコントローラ２１からバッファメモリ２２に書き込みデータDATA_INを書き込むための書き込み時間は、磁気ランダムアクセスメモリ２３における書き込み時間に比べて、十分に短い。このため、第２のモードでは、バッファメモリ２２の空き容量が次第に減少していくことが容易に推測できる。
【０１６９】
この場合、バッファメモリ２２の空き容量が十分に確保されているときは、コントローラ２１からバッファメモリ２２への書き込みが短い書き込みレイテンシで高速に行えるため、第２のモードで、書き込み動作を継続することが可能である。
【０１７０】
しかし、バッファメモリ２２の空き容量が十分に確保されていないときは、バッファメモリの空き容量が十分に確保されるまで、コントローラ２１からバッファメモリ２２への書き込みを待機しなければならず、書き込みレイテンシが長くなり、メモリシステムに悪影響を与える。
【０１７１】
そこで、磁気ランダムアクセスメモリをストレージデバイス用途として使用する場合において、バッファメモリ２２の空き容量が十分に確保されていないときは、第２のモードに代えて、第３のモードを選択する。
【０１７２】
第３のモードにおける書き込み動作は、キャッシュメモリ用途としての第１のモードにおける書き込み動作と同じであり、書き込みデータと読み出しデータを比較することがないため、高速に書き込みを行うことができる。即ち、第３のモードでは、ポリシー選択信号φ２に基づいて、例えば、“１”が多くなるという条件を満たすように、ｓビットの書き込みデータDATA_INの反転／非反転を制御すればよい。
【０１７３】
例えば、図１０の（ａ）に示す波形図から明らかなように、第３のモードにおける書き込み動作では、書き込みデータDATA_INから書き込みデータWdataを生成するために必要なデータ反転のための遅延時間ｔｄは、短い。
【０１７４】
このように、ストレージデバイス用途において、バッファメモリ２２の空き容量に基づき、第２のモードから第３のモードに変更することにより、バッファメモリ２２の空き容量が零になり、コントローラ２１からバッファメモリ２２への書き込みが行えなくなる、といった事態を回避できる。
【０１７５】
以下、表２を参照しつつ、本実施例における書き込み動作のまとめを行う。
【表２】
0005337277.tif 000003
【０１７６】
磁気ランダムアクセスメモリをキャッシュメモリ又は主記憶メモリ用途（Read optimize）として使用するときは、第１のモードが選択される。
【０１７７】
第１のモードでは、書き込みデータDATA_INの状態を確認し、磁気抵抗効果素子を“１”状態にするビット数をｍ１とし、磁気抵抗効果素子を“０”状態にするビット数をｍ２とし、ｍ１＞ｍ２のときは、書き込みデータをそのまま書き込み、ｍ１＜ｍ２のときは、書き込みデータの反転データを書き込む。
【０１７８】
磁気ランダムアクセスメモリをストレージデバイス用途（Write optimize）として使用するときは、バッファメモリの空き容量Ｃ-bufferが一定値Ｎｂ以上であることを条件として、第２のモードが選択される。
【０１７９】
第２のモードでは、読み出しデータと書き込みデータとが互いに一致するビット数をｎ１とし、読み出しデータと書き込みデータの反転データとが互いに一致するビット数をｎ２とする。そして、ｎ１＞ｎ２のときは、書き込みデータについて、互いに一致するビットの書き込みを禁止するマスク処理を行ったうえで、互いに不一致のビットについて書き込みを行う。また、ｎ１＜ｎ２のときは、書き込みデータの反転データについて、互いに一致するビットの書き込みを禁止するマスク処理を行ったうえで、互いに不一致のビットについて書き込みを行う。
【０１８０】
磁気ランダムアクセスメモリをストレージデバイス用途として使用する場合において、バッファメモリの空き容量Ｃ-bufferが一定値Ｎｂ未満となったときは、第２のモードに代えて、第３のモードが選択される。
【０１８１】
第３のモードでは、書き込みデータDATA_INの状態を確認し、磁気抵抗効果素子を“１”状態にするビット数をｍ１とし、磁気抵抗効果素子を“０”状態にするビット数をｍ２とし、ｍ１＞ｍ２のときは、書き込みデータをそのまま書き込み、ｍ１＜ｍ２のときは、書き込みデータの反転データを書き込む。
【０１８２】
本実施例によれば、キャッシュメモリ又は主記憶メモリ用途として、並びに、ストレージデバイス（ファイルメモリ）用途としての切り替えが可能であり、かつ、各用途において低消費電力化を図ることができる磁気ランダムアクセスメモリを実現できる。
【０１８３】
図１１は、マスク制御信号生成回路の例を示している。
【０１８４】
表３は、図１１の回路の論理表である。
【表３】
0005337277.tif 000004
【０１８５】
モード選択信号φ１が“Ｌ”（＝“０”）のときは、制御信号ＣＮＴの値（“Ｌ”又は“Ｈ”）にかかわらず、マスク制御信号Mの反転信号bMは、強制的に、“Ｈ”（＝Vdd）に設定される。即ち、全ビットについて書き込みが実行される。
【０１８６】
制御信号ＣＮＴが“Ｌ”（＝“０”）であり、モード選択信号φ１が“Ｈ”（＝“１”）であるとき、比較信号ＣＯＭＰの反転信号ｂＣＯＭＰがマスク制御信号Mの反転信号bMとして出力される。即ち、書き込みデータDATA_INと読み出しデータRdataとが一致しているビット（ＣＯＭＰ＝“０”）については、マスク制御信号Mの反転信号bMが“１”になるため、書き込みが実行される（反転書き込み）。
【０１８７】
制御信号ＣＮＴ及びモード選択信号φ１が共に“Ｈ”（＝“１”）であるとき、比較信号ＣＯＭＰがマスク制御信号Mの反転信号bMとして出力される。即ち、書き込みデータDATA_INと読み出しデータRdataとが不一致のビット（ＣＯＭＰ＝“１”）については、マスク制御信号Mの反転信号bMが“１”になるため、書き込みが実行される（そのまま書き込み）。
【０１８８】
［その他］
上述の実施例では、磁気ランダムアクセスメモリをキャッシュメモリ又は主記憶メモリ用途として使用する場合に、第１のモードを選択するとした。これは、キャッシュメモリ又は主記憶メモリ用途では、一般的に、読み出しが書き込みよりも多くなるからである。しかし、メモリシステムにおける特性（磁気ランダムアクセスメモリにおいて、読み出しが多く発生するか、又は、書き込みが多く発生するかなど）に応じて、第１のモードではなく、第２のモード（さらには、第３のモード）を選択するようにしてもよい。
【０１８９】
例えば、磁気ランダムアクセスメモリをキャッシュメモリとして使用するときは、コントローラは、プログラム（ＲＯＭ情報）から、磁気ランダムアクセスメモリにおいて、読み出しが多く発生するか、又は、書き込みが多く発生するか、を確認できる。書き込みが多く発生するような場合には、磁気ランダムアクセスメモリをキャッシュメモリとして使用するときであっても、第２のモードを選択する。
【０１９０】
また、複数ウェイを有するキャッシュメモリのように、データ置き換え（リプレイスメント）を頻繁に行うモードと、データ置き換えを頻繁に行わないモードとを切り替えられるようなときは、データの置き換えを頻繁に行うときは、第２のモードを選択し、データの置き換えを頻繁に行わないときは、第１のモードを選択する、といったような制御方法も可能である。
【０１９１】
さらに、磁気ランダムアクセスメモリを命令キャッシュとして使用するか、又は、データキャッシュとして使用するかに応じて、第１のモードを選択するか、又は、第２のモードを選択するか、を一義的に決めておくことも可能である。
【０１９２】
即ち、本実施例においては、一般的には、読み出し時の消費電力を削減することを主眼に置いた用途においては、第１のモードを選択し、書き込み時の消費電力を削減することを主眼に置いた用途においては、第２のモード（さらには、第３のモード）を選択するように制御すればよい。
【０１９３】
［適用例］
上述の実施例に係わる磁気ランダムアクセスメモリは、例えば、低消費電力プロセッサのキャッシュメモリに適用することができる。
【０１９４】
例えば、コンベンショナルな磁気ランダムアクセスメモリを単にキャッシュメモリとして使用しただけでは、ＳＲＡＭによるキャッシュメモリ（ＳＲＡＭキャッシュ）に比べて、特に、読み出し時の消費電力が大きくなる問題がある。
【０１９５】
これに対し、本実施例に係わる磁気ランダムアクセスメモリによるキャッシュメモリ（ＭＲＡＭキャッシュ）は、第１のモードにより読み出し時の低消費電力化を図ることができるため、ＳＲＡＭキャッシュと同等又はそれ以上に、読み出し時の低消費電力化を図ることができる。
【０１９６】
図１２は、プロセッサ内のメモリの例を示している。
【０１９７】
ＣＰＵ３１は、ＳＲＡＭ３２、ＤＲＡＭ３３、フラッシュメモリ３４、ＲＯＭ３５及びＭＲＡＭ（磁気ランダムアクセスメモリ）３６を制御する。
【０１９８】
ＭＲＡＭ３６は、ＳＲＡＭ３２、ＤＲＡＭ３３、フラッシュメモリ３４及びＲＯＭ３５のいずれの代替として使用することが可能である。これに伴い、ＳＲＡＭ３２、ＤＲＡＭ３３、フラッシュメモリ３４及びＲＯＭ３５の少なくとも１つを省略してもよい。
【０１９９】
ＭＲＡＭ３６は、本実施例に従い、モードを切り替えることにより、読み出し時又は書き込み時の消費電力を削減することができる。
【０２００】
［むすび］
実施形態によれば、例えば、キャッシュメモリ又は主記憶メモリ用途として、並びに、ストレージデバイス用途としての切り替えが可能であり、かつ、各用途において低消費電力化を図ることができる磁気ランダムアクセスメモリを実現できる。
【０２０１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２０２】
１０：  メモリセルアレイ、  １１：  デコーダ、  １２，１５：  データ反転回路、  １３：  書き込み回路、  １４：  読み出し回路、  １６：  比較回路、  １７：  制御回路、  １８：  比較器、  １９：  “０”／“１”計算回路、  ２０：  フラグ検出回路。
【要約】
【課題】複数の用途の切り替えを可能とし、かつ、各用途での低消費電力化を図る。
【解決手段】実施形態に係わる磁気ランダムアクセスメモリは、第１及び第２のモードのうちの１つをモード選択信号に基づいて選択し、第２のモードが選択されたときに、バッファメモリの空き容量が一定値以上であれば、読み出し回路１４によって読み出しデータを読み出し、読み出しデータと書き込みデータに基づいて、書き込みデータと書き込みデータの反転データのいずれか一方を書き込み回路１３によって書き込み、第２のモードが選択されたときに、バッファメモリの空き容量が一定値未満であれば、磁気抵抗効果素子を第１の抵抗値にするビット数が多くなるように書き込みデータと書き込みデータの反転データのいずれか一方を書き込み回路１３によって書き込む。
【選択図】図１【図１】
0005337277.tif 000005
【図２】
0005337277.tif 000006
【図３】
0005337277.tif 000007
【図４】
0005337277.tif 000008
【図５】
0005337277.tif 000009
【図６】
0005337277.tif 000010
【図７】
0005337277.tif 000011
【図８】
0005337277.tif 000012
【図９】
0005337277.tif 000013
【図１０】
0005337277.tif 000014
【図１１】
0005337277.tif 000015
【図１２】
0005337277.tif 000016