(57)【要約】【課題】スピン注入メモリ等のＭＲＡＭのメモリセルを用いたメモリキャッシュにおいて、キャッシュライン毎のデータの書き込み動作の消費エネルギーの低減を図ることができるアーキテクチャーを備えた不揮発メモリキャッシュを提供する。【解決手段】ＭＴＪ素子の磁化反転に必要な電流をデータ線に流すことによりデータを書き込むメモリセルにデータアレーが構成されるメモリキャッシュであって、データアレー中のキャッシュラインが連続したゼロビットで構成されていることを表すゼロフラッグが、キャッシュライン毎のバイト粒度もしくはワード粒度で設けられる。ゼロフラッグはメモリキャッシュのタグアレーに設ける。【選択図】図４
2014153965.tif 000002
【特許請求の範囲】
【請求項１】
ＭＴＪ（Magnetic Tunneling Junction）素子の磁化反転に必要な電流をデータ線に流すことによりデータを書き込むメモリセルにデータアレーが構成されるメモリキャッシュであって、
前記データアレー中のキャッシュラインが連続したゼロビットで構成されていることを表すゼロフラッグが、キャッシュライン毎に設けられたことを特徴とする不揮発メモリキャッシュ。
【請求項２】
前記ゼロフラッグが、キャッシュラインのバイト粒度もしくはワード粒度で設けられたことを特徴とする請求項１に記載の不揮発メモリキャッシュ。
【請求項３】
前記ゼロフラッグが、タグアレーに設けられたことを特徴とする請求項１又は２に記載の不揮発メモリキャッシュ。
【請求項４】
書き込みデータに連続したゼロビット（ゼロデータ）が含まれているかを検出するゼロデータ検出回路が設けられ、
前記ゼロデータ検出回路は、書き込みデータに前記ゼロデータが含まれている場合、書き込み対象のキャッシュラインの前記ゼロフラッグをイネーブルとし、前記データアレーのキャッシュラインに対してデータを書き込みしないことを特徴とする請求項１〜３のいずれかに記載の不揮発メモリキャッシュ。
【請求項５】
読み出し対象のキャッシュラインの前記ゼロフラッグの状態を判別するゼロフラッグ判別回路が設けられ、
前記ゼロフラッグ判別回路は、
前記ゼロフラッグの状態がイネーブルの場合、読み出し対象のキャッシュラインのデータを連続したゼロビット（ゼロデータ）にリセットし、
前記ゼロフラッグの状態がイネーブルでない場合、読み出し対象のキャッシュラインのデータを前記データアレーから読み出すことを特徴とする請求項４に記載の不揮発メモリキャッシュ。
【請求項６】
前記ゼロフラッグが、キャッシュラインのバイト粒度もしくはワード粒度で設けられる場合、
前記ゼロフラッグ判別回路は、
前記ゼロフラッグの状態がイネーブルの場合、読み出し対象のキャッシュラインの該当するバイトデータもしくはワードデータを連続したゼロビット（ゼロデータ）にリセットし、
前記ゼロフラッグの状態がイネーブルでない場合、読み出し対象のキャッシュラインの該当するバイトデータもしくはワードデータを前記データアレーから読み出し、
キャッシュライン再構築回路が、リセットされたバイト粒度もしくはワード粒度のゼロデータと、前記データアレーから読み出したバイトデータもしくはワードデータと、を結合してキャッシュラインのデータを再構築する、
ことを特徴とする請求項５に記載の不揮発メモリキャッシュ。
【請求項７】
前記タグアレーがＳＲＡＭセルで構成されており、
電源遮断時に、
不揮発メモリバッファに格納するか、或いは、前記タグアレーの電源電圧をデータ保持し得る電圧まで下げる、
ことを特徴とする請求項３〜６のいずれかに記載の不揮発メモリキャッシュ。
【請求項８】
前記タグアレーがＳＲＡＭセルで構成されており、
ＳＲＡＭセルのデータ保持ノードがＭＴＪ素子と接続される不揮発ＳＲＡＭセルとする、
ことを特徴とする請求項３〜６のいずれかに記載の不揮発メモリキャッシュ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スピン注入メモリ等を利用した不揮発メモリキャッシュの技術に関するものである。
【背景技術】
【０００２】
不揮発性メモリでありながら、読み書き回数に制限がないメモリとして、磁気トンネル接合（ＭＴＪ：Magnetic Tunneling Junction）素子を用いたメモリセルにより構成されたマグネトレジスティブ・ランダム・アクセス・メモリ（ＭＲＡＭ：Magneto
resistive RAM）の開発がなされている
ＭＲＡＭの一種で、次世代不揮発性メモリの有力候補とされるスピン注入メモリ(ＳＴＴ−ＲＡＭ：Spin Transfer Torque RAM)は、その不揮発性から、メモリシステムの低エネルギー化を実現するメモリ素子として注目を集めている。しかし、スピン注入メモリなどＭＴＪ素子の磁化反転に必要な電流をデータ線に流すことによりデータを書き込むメモリの場合、データの書き込みに必要とされるエネルギーが大きいという問題点があり、データアクセスが頻繁に行われるプロセッサのメモリキャッシュにスピン注入メモリを適用する場合、書き込みエネルギーが支配的になり、メモリキャッシュ全体の消費エネルギーが問題となっている。
【０００３】
図１は、ＭＲＡＭ（ＳＴＴ−ＲＡＭを含む）のメモリセルの基本構成を示している。図１（ａ）に示すように、ＭＲＡＭのメモリセルのセル構造は、１個のＭＴＪ素子と１個のトランジスタからなり、ワード線（WL）とビット線（BL）に接続されている。ＭＴＪ素子は、通常動作において磁化の向きが固定された強磁性体の固定層（Ref. Layer）と、書き込み動作により磁化の向きが反転可能な強磁性体の自由層（Free Layer）との間に、トンネル絶縁膜（Tunnel
Barrier）が挟まれた構造となっている。ＭＴＪ素子の２端子間の抵抗は、２つの強磁性体の固定層と自由層における磁化の向きによって変化し、図１（ｂ）に示すように、同方向の時は低抵抗状態、互いに反対方向の時は高抵抗状態となり、バイナリ状態を実現する。
【０００４】
ＭＲＡＭのメモリセルの場合、データの書き込みおよびデータの読み出しをＭＴＪ素子に電流を流すことで行う。ＭＲＡＭのメモリセルへのデータの書き込みは、磁化反転が起こる閾値電流値より大きい書き込み電流をＭＴＪ素子に流すことで行われるのに対し、ＭＲＡＭのメモリセルからのデータの読み出しは、閾値電流値より小さい読み出し電流をＭＴＪ素子に流すことにより磁化反転を起こすことなく行われる。
【０００５】
図２は、ＭＲＡＭ（ＳＴＴ−ＲＡＭ）で構成するメモリキャッシュへのデータ書き込みのエネルギー消費が大きいことを示すグラフである（測定に用いたメモリキャッシュのサイズやシミュレーション条件は、後述の実施例に記載している）。
図２（ａ）は、メモリキャッシュにおける読み出し（Ｒｅａｄ）動作と書き込み（Ｗｒｉｔｅ）動作の割合を表している。また、図２（ｂ）は、メモリキャッシュにおける読み出し（Ｒｅａｄ）動作と書き込み（Ｗｒｉｔｅ）動作のエネルギー消費の割合を表している。図２（ａ）、（ｂ）のそれぞれのグラフの右端の平均値（Ｍｅａｎ）から、書き込み（Ｗｒｉｔｅ）動作の割合が全体の２１．１％であったにも関わらず、エネルギー消費が全体の７６．９％にも及んでいることが確認できる。
このことからも、ＭＲＡＭ（ＳＴＴ−ＲＡＭ）で構成するメモリキャッシュの場合、メモリセルへのデータ書き込みに必要とされるエネルギーが大きいという問題があることが理解できるであろう。
【０００６】
上記の書き込みに必要とされるエネルギーが大きいという問題に鑑みて、ＭＲＡＭのメモリセルに対する書き込み動作の際に、選択メモリセルのデータの読み出しを行い、外部から入力された入力データと不一致のビットのみ、反転して書き込みを行い、書き込むビット数を低減することにより、消費電流を低減する技術が知られている（特許文献１を参照）。
しかしながら、特許文献１に開示された技術では、書き込み動作の際に、常に読み出し動作を伴うため、書き込み動作の処理サイクルが増加し、また読み出し動作に伴う読み出し電流の消費があるといったオーバヘッドが生ずるという問題がある。
【０００７】
一方、プロセッサのメモリキャッシュの場合、キャッシュライン（キャッシュに格納する単位データ）毎に、データの書き込み動作や読み出し動作が行われる。キャッシュラインの大きさ（キャッシュラインサイズ）を大きくするとメモリとの転送の回数が減り、効率的である一方、メモリからデータを転送しても使用しない部分が増加し、キャッシュメモリの利用効率が悪くなる。また、一定サイズのキャッシュメモリを考えると、キャッシュラインサイズが大きくなるとキャッシュに格納できるキャッシュライン数が逆比例で減る。メモリの領域を連続してアクセスするような場合ではなく、ランダムにメモリアドレスを参照する場合には、キャッシュライン数が減ると目的とするデータがキャッシュに存在しないケース（キャッシュミス）が増大する。反対に、キャッシュラインサイズを小さくすると、利用効率はキャッシュヒット率の点では向上するが、メモリからの転送回数が増え、転送制御などのオーバヘッドが増加する。
以上のトレードオフから、一般的には、３２〜２５６バイト程度のキャッシュラインサイズが用いられている。
【０００８】
スピン注入メモリ等のＭＲＡＭのメモリセルをメモリキャッシュに適用する場合、キャッシュライン毎のデータの書き込み動作の消費エネルギーの低減を図る技術が必要である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−８６９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記状況に鑑みて、本発明は、スピン注入メモリ等のＭＲＡＭのメモリセルを用いたメモリキャッシュにおいて、キャッシュライン毎のデータの書き込み動作の消費エネルギーの低減を図ることができるアーキテクチャーを備えた不揮発メモリキャッシュを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明者らは、プロセッサのメモリキャッシュが扱うデータにゼロの値を持つデータや、連続したビットがゼロであるデータ、もしくはＮＵＬＬデータが頻繁に現れることに着目し、上記課題を解決できる新規なメモリキャッシュを提案する。
提案するメモリキャッシュは、プロセッサのメモリキャッシュが扱うデータの上記特性に着目し、メモリキャッシュのキャッシュラインのデータが、連続したビットがゼロであるデータで構成されている場合、連続したビットがゼロであるデータであることを表す「ゼロフラッグ」を新たに設け、プロセッサの動作において連続したゼロのビット列をメモリキャッシュに格納する際は、キャッシュラインにデータを格納せずに、「ゼロフラッグ」をイネーブルにすることにより、キャッシュラインに格納されたデータがゼロであることを示すようにする。これにより、キャッシュラインに対するデータの書き込み動作を減らし、書き込み動作の消費エネルギーの低減を図ることにした。
【００１２】
すなわち、上述の目的を達成すべく、本発明の不揮発メモリキャッシュは、ＭＴＪ素子の磁化反転に必要な電流をデータ線に流すことによりデータを書き込むメモリセルでデータアレーが構成されるメモリキャッシュであって、データアレー中のキャッシュラインが連続したゼロビットで構成されていることを表すゼロフラッグが、キャッシュライン毎に設けられた構成とされる。
【００１３】
上記構成によれば、スピン注入メモリ等のＭＲＡＭのメモリセルを用いたメモリキャッシュにおいて、キャッシュライン毎のデータの書き込み動作の消費エネルギーの低減を図ることができる。
【００１４】
上記のゼロフラッグは、キャッシュラインのバイト粒度もしくはワード粒度で設けられたことが好ましい。
ゼロフラッグをキャッシュラインのバイト粒度もしくはワード粒度で設けることにより、書き込み動作の消費エネルギーをより低減できる。なお、後述の実施例で説明するように、リーク電流およびキャッシュ動作時の消費電流による消費エネルギーの低減効果は、バイト粒度に比べてワード粒度が大きい。
【００１５】
また、上記ゼロフラッグは、データアレーに設けるまたはゼロフラッグ用の格納領域を新たに設けるのではなく、メモリキャッシュのタグアレーに設けることがより好ましい。
タグアレーは、キャッシュアクセスアドレスのインデックスアドレスによって選択されるタグアドレスが格納されており、タグアレーに格納されたタグアドレスに対応したデータアレーのキャッシュラインにデータが格納されている。このタグアレーの空き領域、もしくはタグアレーを拡張させてゼロフラッグを設ける。
キャッシュラインサイズを６４バイトと想定した場合に、ワード粒度（例えば、１ワードを３２ビット、すなわち４バイト）でゼロフラッグを設けると、６４／４＝１６のゼロフラッグが設けることになる。ゼロフラッグはイネーブル又はディセーブル、すなわち、１か０で表現できるため１ビットのメモリセルで実現することができる。このようなゼロフラッグをタグアレーの各インデックスに設ける。
【００１６】
メモリキャッシュのデータアレーはスピン注入メモリセルで構成し、書き込みサイクルのオーバヘッド削減のために、タグアレーはＳＲＡＭセルで構成することが好適である。タグアレーには、データアレー中の該当するキャッシュラインが連続したゼロビット（ゼロデータ）で構成されていることを表す「ゼロフラッグ」を、キャッシュラインのバイト粒度もしくはワード粒度で設けておく。
そして、メモリキャッシュの動作として、キャッシュラインへの書き込み時は、書き込むデータに上記のゼロデータが含まれているかどうか検出して、ゼロデータが含まれている場合、タグアレー中の該当するゼロフラッグを立て、データアレーには書き込みを行わない動作を行う。一方、キャッシュラインからの読み出し時は、ゼロフラッグを検出し、立っているのがあれば、該当するバイトもしくはワードをゼロビットで埋め込む動作を行う。ゼロフラッグが立っていない場合、該当するバイトやワードはデータアレーから読み出す。これらを結合することで再構成したのが読み出すキャッシュラインのデータである。
【００１７】
また、本発明の不揮発メモリキャッシュにおいて、書き込みデータに連続したゼロビット（ゼロデータ）が含まれているかを検出するゼロデータ検出回路が設けられる。
ゼロデータ検出回路は、書き込みデータにゼロデータが含まれている場合、書き込み対象のキャッシュラインのゼロフラッグをイネーブルとする一方、データアレーのキャッシュラインに対してデータの書き込みを行わない。
ゼロデータ検出回路はＮＯＲ回路など簡単な論理回路で実現可能である。
【００１８】
また、本発明の不揮発メモリキャッシュにおいて、読み出し対象のキャッシュラインのゼロフラッグの状態を判別するゼロフラッグ判別回路が設けられる。
ゼロフラッグ判別回路は、ゼロフラッグの状態がイネーブルの場合、読み出し対象のキャッシュラインのデータを連続したゼロビット（ゼロデータ）でリセットする。
一方、ゼロフラッグの状態がイネーブルでない場合、読み出し対象のキャッシュラインのデータをデータアレーから読み出す。
【００１９】
ここで、ゼロフラッグが、キャッシュラインのバイト粒度もしくはワード粒度で設けられる場合、ゼロフラッグ判別回路は、ゼロフラッグの状態がイネーブルの場合、読み出し対象のキャッシュラインの該当するバイトデータもしくはワードデータを連続したゼロビット（ゼロデータ）にリセットし、ゼロフラッグの状態がイネーブルでない場合、読み出し対象のキャッシュラインの該当するバイトデータもしくはワードデータを前記データアレーから読み出す。
そして、キャッシュライン再構築回路が、リセットされたバイト粒度もしくはワード粒度のゼロデータと、データアレーから読み出したバイトデータもしくはワードデータと、を結合してキャッシュラインのデータを再構築する。
【００２０】
上述の通り、ゼロフラッグはタグアレーに設けられるとすると、書き込みが頻繁に行われることから、タグアレーはＳＲＡＭセルで構成されるべきである。
この場合、電源遮断時に、タグアレーを別に設けた不揮発メモリバッファに退避するか、或いは、タグアレーの電源電圧をデータ保持し得る電圧まで下げることが好ましい。
【００２１】
また、タグアレーがＳＲＡＭセルで構成されている場合、該当するＳＲＡＭセルのデータ保持ノードがＭＴＪ（Magnetic Tunneling Junction）素子と接続される不揮発ＳＲＡＭセルとすることで、電源遮断時でもデータ保持し続けることが可能である。
【発明の効果】
【００２２】
本発明によれば、プロセッサが扱うデータに連続したゼロビットが多く含まれるという特徴を生かし、スピン注入メモリへの書き込み回数を減らすことで、有意味なエネルギー削減効果が得ることができるといった効果がある。これにより、スピン注入メモリのプロセッサのメモリキャッシュへの適用を実現することが可能で、プロセッサのメモリキャッシュの消費エネルギー削減を可能にする。
特に近年においては、プロセッサのチップ面積の半分以上をメモリキャッシュが占めることも珍しくなく、メモリキャッシュの消費エネルギー削減により、プロセッサ全体の消費エネルギー削減につながることが期待できる。
【図面の簡単な説明】
【００２３】
【図１】ＭＲＡＭ（ＳＴＴ−ＲＡＭ）のメモリセルの構造説明図
【図２】ＭＲＡＭ（ＳＴＴ−ＲＡＭ）で構成するメモリキャッシュのリードとライト動作の割合とエネルギー消費の割合に関するグラフ
【図３】メモリキャッシュにおけるゼロデータの割合に関するグラフ
【図４】実施例１のメモリキャッシュの構造説明図
【図５】実施例１のメモリキャッシュの書き込み動作の説明図
【図６】実施例１のメモリキャッシュの読み出し動作の説明図
【図７】実施例１のメモリキャッシュのタグアクセスとデータアクセスの逐次アクセスに関する説明図
【図８】プロセッサ性能の評価グラフ
【図９】実施例１のメモリキャッシュのエネルギー削減効果を示すグラフ（１）
【図１０】実施例１のメモリキャッシュのエネルギー削減効果を示すグラフ（２）
【図１１】実施例１のメモリキャッシュのエネルギー削減効果を示すグラフ（３）
【図１２】実施例２のメモリキャッシュの構成図
【図１３】実施例２のメモリキャッシュの書き込み（ライト）動作の説明図（１）
【図１４】実施例２のメモリキャッシュの書き込み（ライト）動作の説明図（２）
【図１５】実施例２のメモリキャッシュの読み出し（リード）動作の説明図（１）
【図１６】実施例２のメモリキャッシュの読み出し（リード）動作の説明図（２）
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施形態について、図面を参照しながら詳細に説明していく。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
【実施例１】
【００２５】
図３は、メモリキャッシュにおけるデータ中のビット値が“０”であるデータの割合を示すグラフである（測定に用いたメモリキャッシュのサイズやシミュレーション条件は後述）。図３のグラフでは、１バイトのデータ中のすべてのビットがゼロの割合（All zero byte）と１ワードのデータ中のすべてのビットがゼロの割合（All
zero word）を表している。メモリキャッシュのデータには多くのゼロデータ（連続したビットがゼロのデータ）が含まれており、グラフの右端の平均値（Ｍｅａｎ）から、１バイトのデータ中のすべてのビットがゼロの割合（All zero byte）が６８．４％、１ワードのデータ中のすべてのビットがゼロの割合（All zero word）が５４．０２％であった。
このことから、プロセッサのメモリキャッシュにおいて、ゼロの値を持つデータや、連続したビットがゼロであるデータ、もしくはＮＵＬＬデータが頻繁に現れるといった事象が確認できる。
【００２６】
上述したように、本発明のメモリキャッシュは、プロセッサのメモリキャッシュが扱うデータにゼロの値を持つデータや、連続したビットがゼロであるデータ、もしくはＮＵＬＬデータが頻繁に現れることに着目し、キャッシュ構造を提案する。提案するメモリキャッシュは、プロセッサのメモリキャッシュが扱うデータには多くのゼロデータが含まれることに着目し、メモリキャッシュのキャッシュラインのデータが、連続したビットがゼロであるデータで構成されている場合、連続したビットがゼロであるデータであることを表すゼロフラッグを新たに設ける。
本実施例では、ゼロフラッグをタグアレーに設ける。以下では、図４を参照して、本実施例のメモリキャッシュの構造について説明する。
【００２７】
本実施例のメモリキャッシュは、図４に示すように、メモリキャッシュにデータ入力する場合、書き込みデータに連続したゼロビット（ゼロデータ）が含まれているかを検出するゼロデータ検出回路が設けられている。また、メモリキャッシュからデータ出力する場合、読み出し対象のキャッシュラインの前記ゼロフラッグの状態を検出するゼロフラッグ判別回路が設けられている。
ゼロデータ検出回路は、書き込みデータにゼロデータが含まれている場合、書き込み対象のキャッシュラインのゼロフラッグをイネーブルにセットする。そして、データアレーのキャッシュラインに対してデータを書き込みしない。ここで、ゼロフラッグは、具体的には、タグアレーの拡張されたビットであり、イネーブル状態を“１”とする場合は、ビットを１にセットする。
【００２８】
また、ゼロフラッグ判別回路は、ゼロフラッグの状態を判別し、状態がイネーブルの場合、読み出し対象のキャッシュラインのデータを連続したゼロビット（ゼロデータ）にリセットする。ゼロフラッグの状態がイネーブルでない場合、読み出し対象のキャッシュラインのデータをデータアレーから読み出す。
すなわち、プロセッサの動作において連続したゼロのビット列をメモリキャッシュに格納する際は、キャッシュラインにデータを格納せずに、ゼロフラッグをイネーブルにすることにより、キャッシュラインに格納されたデータがゼロであることを示している。これにより、キャッシュラインに対するデータの書き込み動作を減らし、書き込み動作の消費エネルギーの低減を図ることができる。
【００２９】
図５を参照して、実施例１のメモリキャッシュのデータの書き込み動作（データ入力）を詳細に説明する。
実施例１のキャッシュメモリの場合、ゼロフラッグをキャッシュラインのワード粒度で設けている。図では省略のためキャッシュラインサイズは１６バイトにしている。１ワードが４バイト（３２ビット）で構成されるとして、１キャッシュラインには４ワードが存在することになる。図５では、ワード粒度でゼロデータを検出しており、４ワード全てゼロデータの場合、“０”を４個並べるようにしている。ゼロデータ検出回路（All-Zero Detection Circuit）により、ゼロデータを検出すると、ＳＲＡＭで構成されたタグアレー（Tag Array）にゼロフラッグ（Zero Flags）をセットする。タグアレーにはゼロフラッグが追加されている。ゼロフラッグはビット値（０／１）で表現している。
【００３０】
本実施例では、ワード単位を一括りにして、ゼロフラッグを設定しているため、４ビットでゼロフラッグが構成される。４ワード単位を一括りにしてゼロフラッグを設定するのではなく、１ワード単位、２ワード単位、その他の単位でゼロフラッグを設定しても構わない。
【００３１】
図５の場合、キャッシュラインに入力するデータ（１６バイト）の内、先頭の８バイトがゼロデータ（０が連続するデータ）であり、途中の４バイトがゼロデータ（０が連続するデータ）ではなく、後ろの４バイトがゼロデータ（０が連続するデータ）である。この場合、タグアレーのゼロフラッグは、“１１０１”とセットされる。１はイネーブルの意味であり、キャッシュラインのゼロフラッグのビット位置と対応するデータがゼロデータであることを示すものである。
ゼロデータ検出回路は、データ入力するデータにゼロデータが存在するか否かを検出して、タグアレーにゼロフラッグをセットした後、データアレー（STT-RAM）に対して、ゼロデータでないデータ部分（図５の場合、先頭から８バイトと後ろの４バイトを除いた途中の４バイトのデータ）のみを書き込む。
【００３２】
ゼロデータ検出回路は、ＮＯＲ回路などの論理回路を用いて構成される。
なお、ゼロデータ検出回路により、データ入力するデータにゼロデータが全く存在しない場合、タグアレーのゼロフラッグにアクセスすることはなく、データアレーに対して、全てのデータを書き込む。
【００３３】
次に、図６を参照して、実施例１のメモリキャッシュの読み出し動作を詳細に説明する。
読み出し動作において、ゼロフラッグ判別回路（Zero Flags Detection Circuit）は、まずタグアレーにアクセスしてゼロフラッグを読み出す。読み出したゼロフラッグが“１１０１”の場合、キャッシュラインの先頭半分の８バイトと後ろの４バイトがイネーブル状態、すなわち、ゼロデータであると判別する。そして、キャッシュラインの先頭から８バイトと後ろの４バイトを除いた途中の４バイトのデータのみをデータアレーから読み出す。キャッシュラインの先頭から８バイトと後ろの４バイトはゼロデータで埋め込む。このように、キャッシュラインの一部分のみデータアレーから読み出して、その他の部分にはゼロデータを拡張し、１つのデータに再構成し、キャッシュラインのデータ出力とする。
【００３４】
また、ゼロフラッグが“１１１１”の場合、オールゼロのデータをキャッシュラインのデータ出力とする。データアレーを全くアクセスする必要はないので、キャッシュレイテンシーが短くなる。
なお、ゼロフラッグが“００００”の場合、キャッシュラインの全てのデータをデータアレーから読み出す。
【００３５】
このように、メモリキャッシュに書き込み動作の場合、入力データについてゼロデータの検出を行い、その結果をタグアレー中のゼロフラッグにセットする。タグアレーのゼロフラッグにアクセスする動作と並行に、ゼロデータ以外のデータが存在する場合は、データアレー中のキャッシュラインにデータを書き込む。このように、タグアレー中のゼロフラッグをセットする動作は、データアレー中のキャッシュラインにデータを書き込む動作と同時に実行できることから、性能オーバヘッドが生じることはない。
また、メモリキャッシュに読み出し動作の場合、タグアレー中のゼロフラッグを判別し、ゼロフラッグのイネーブル状態でない部分について、データアレーからデータを読み出し、イネーブル状態の部分についてゼロデータを拡張し、再構成してキャッシュラインデータを出力する。この場合、ゼロデータの拡張動作に関しても、データアレーからデータを読み出す動作と同時に実行できることから、性能オーバヘッドが生じることはない。
【００３６】
以上から、図７に示すように、実施例１では、先ず、タグアレーにアクセスして、次に、データアレーにアクセスするといったようにシーケンシャルにアクセル動作が行われるのである。
【００３７】
本実施例のメモリキャッシュを用いたプロセッサの動作におけるキャッシュのリード・ライトの数、およびゼロデータの割合等を調べるために、プロセッサアーキテクチャシミュレータを用いてシミュレーションを行った。シミュレーション結果から、スピン注入メモリ（ＳＴＴ−ＲＡＭ）を用いたキャッシュの消費エネルギーや、プロセッサ性能への影響を解析したので、その結果について以下説明する。
【００３８】
下記表１はシミュレーション条件である。スピン注入メモリ（ＳＴＴ−ＲＡＭ）で構成するメモリキャッシュＬ２は、１ＭＢ、８ウェイ、６４バイトのキャッシュラインとして設計し、読み出しサイクルに８サイクルの待ち時間、書き込みサイクルに３５サイクルの待ち時間とした。また、キャッシュアルゴリズムとして、ＬＲＵ（Least recently used）を採用した。
【００３９】
【表１】
2014153965.tif 000003
【００４０】
図８は、実施例１のメモリキャッシュを用いた場合におけるプロセッサ性能の評価グラフを示している。図８の評価グラフは、１サイクルあたり実行可能命令数（ＩＰＣ）について、本実施例のメモリキャッシュを用いた場合で、ゼロフラッグがバイト粒度（ｗ／ＡＺＢＦ）とワード粒度（ｗ／ＡＺＷＦ）と、ゼロフラッグを用いない場合（Ｂａｓｅｌｉｎｅ）とで比較したものである。ゼロフラッグを用いない場合（Ｂａｓｅｌｉｎｅ）のＩＰＣを１とした。図８のグラフから、平均５．４５％のＩＰＣ増加があり、ゼロデータを多く使うプログラムでは１０％以上の性能向上もみられることが確認できた。
また、ゼロフラッグを用いた場合に、どのベンチマークプログラムにおいても性能劣化が生じないことが確認できた。
【００４１】
図９〜１１は、実施例１のメモリキャッシュのエネルギー削減効果を示すグラフである。
図９は、メモリキャッシュの書き込み（ライト）動作の消費エネルギーを比較したものである。バイト粒度（ｗ／ＡＺＢＦ）のメモリキャッシュの場合、平均で７３．７８％の消費エネルギーの削減が確認できた。また、ワード粒度（ｗ／ＡＺＷＦ）のメモリキャッシュの場合、平均で６９．３％の消費エネルギーの削減が確認できた。
【００４２】
図１０は、メモリキャッシュの読み出し（リード）動作も含めたダイナミックエネルギー（Dynamic Energy）を比較したものである。比較は、ＳＰＥＣ２００６ベンチマークで行った。平均ダイナミックエネルギーの削減効果は、バイト粒度（ｗ／ＡＺＢＦ）のメモリキャッシュの場合、平均で５１．６４％の消費エネルギーの削減が確認できた。また、ワード粒度（ｗ／ＡＺＷＦ）のメモリキャッシュの場合、平均で５２．３７％の消費エネルギーの削減が確認できた。
【００４３】
図１１は、メモリキャッシュのＤｙｎａｍｉｃ、Ｌｅａｋを合わせた結果の消費エネルギーを比較したものである。比較は、ＳＰＥＣ２００６ベンチマークで行った。平均エネルギー消費の削減効果は、バイト粒度（ｗ／ＡＺＢＦ）のメモリキャッシュの場合、平均で３６．１８％の消費エネルギーの削減が確認できた。また、ワード粒度（ｗ／ＡＺＷＦ）のメモリキャッシュの場合、平均で４２．５１％の消費エネルギーの削減が確認できた。
【００４４】
下記表２は、メモリキャッシュの面積、リーク電力、消費エネルギーについて、ＳＲＡＭで構成するタグアレーとＳＴＴ−ＲＡＭで構成するデータアレーと比較して、本実施例のゼロフラッグを設けた構成であって、ゼロフラッグがバイト粒度（ｗ／ＡＺＢＦ）とワード粒度（ｗ／ＡＺＷＦ）のものについて、比較したものである。
これらの結果から、トータルとして、バイト粒度よりもワード粒度でゼロフラッグを構成した方が、より消費エネルギーの削減ができることが確認できる。
但し、図１１に示すように、ｈ２６４ｒｅｆの場合は、リークエネルギーを考えてもバイト粒度で実施した方が良いという結果になっている。このことから、アプリケーションの特徴によっては、バイト粒度で実施することも考えられる。
【００４５】
【表２】
2014153965.tif 000004
【実施例２】
【００４６】
図１２は、実施例２のメモリキャッシュの構成を示している。
図１２に示すメモリキャッシュの構成は、１６ＫＢ
２ウェイのset-associative方式のメモリキャッシュであり、省略のためキャッシュラインサイズは１６バイトとしている。１ワードが４バイトである。
【００４７】
図１３、図１４を参照して、本実施例のメモリキャッシュの書き込み（ライト）動作について説明する。
例えば、ＩＮＤＥＸ２５５にキャッシュライトを行うことを想定する。書き込みデータは、ワード１（WORD1）、ワード２（WORD2）、ワード４（WORD4）の全てのビットがゼロであるとする。ワード３（WORD3）はゼロデータではない。
図１３は、書き込み（ライト）動作において、タグアレーにアクセスする段階を示している。タグアレーにアクセスすると同時に、書き込み（ライト）するキャッシュライン（DATA IN）におけるゼロデータを検出する。
図１４は、書き込み（ライト）動作において、データアレーにアクセスする段階を示している。ゼロデータの検出結果（AZDF IN)をヒットしたタグアレーに格納している。また、ヒットしたウェイのデータアレーにゼロでないデータを格納している。
【００４８】
図１５、図１６を参照して、本実施例のメモリキャッシュの読み出し（リード）動作について説明する。
例えば、ＩＮＤＥＸ２５５にキャッシュリードを行うことを想定する。
図１５は、読み出し（リード）動作において、タグアレーにアクセスする段階を示している。タグアレーにアクセスすると同時に、ゼロフラッグの読み出しを行い（AZDF OUT1、AZDF OUT2）、ヒットしたウェイのAZDFを選択する（AZDF OUT）。
図１６は、読み出し（リード）動作において、データアレーにアクセスする段階を示している。タグアレーの比較結果（HIT）とゼロフラッグ読み出し結果（AZDF OUT)から、ヒットしたウェイのデータアレーのゼロでないデータを読み出す。それと同時に、ヒットしたウェイのゼロフラッグ（AZDF OUT）より、ゼロデータを生成する（ZERO EXTENSIOIN）。そして、データアレーから読み出したデータと、生成したゼロデータを組み合わせてキャッシュラインを出力する（DATA  OUT）。
【００４９】
（その他の実施例）
（１）上記の実施例では、ゼロフラッグをメモリキャッシュのタグアレーに設けているが、他のメモリ領域に設けてもよい。
（２）上記の実施例では、タグアレーをＳＲＡＭメモリセルで構成しているが、ＳＲＡＭセルのデータ保持ノードがＭＴＪ（Magnetic Tunneling Junction）素子と接続される不揮発ＳＲＡＭセルを有する構成としてもよい。
【産業上の利用可能性】
【００５０】
本発明は、ＭＲＡＭメモリセルを用いたメモリキャッシュに有用である。
【図１】
2014153965.tif 000005
【図２】
2014153965.tif 000006
【図３】
2014153965.tif 000007
【図４】
2014153965.tif 000008
【図５】
2014153965.tif 000009
【図６】
2014153965.tif 000010
【図７】
2014153965.tif 000011
【図８】
2014153965.tif 000012
【図９】
2014153965.tif 000013
【図１０】
2014153965.tif 000014
【図１１】
2014153965.tif 000015
【図１２】
2014153965.tif 000016
【図１３】
2014153965.tif 000017
【図１４】
2014153965.tif 000018
【図１５】
2014153965.tif 000019
【図１６】
2014153965.tif 000020